From b129b39e3f79c26ceedbed15d026b8af13de72a0 Mon Sep 17 00:00:00 2001 From: Lai Power Date: Wed, 3 Jun 2026 21:29:38 +0000 Subject: [PATCH] deleted file `wpml-config.xml` --- .../plugins/activitypub/LICENSE | 22 - .../plugins/activitypub/activitypub.php | 206 - .../assets/css/activitypub-admin.css | 272 - .../assets/css/activitypub-embed.css | 115 - .../plugins/activitypub/assets/img/mp.jpg | Bin 3337 -> 0 bytes .../activitypub/assets/img/wp-logo.png | Bin 11836 -> 0 bytes .../assets/js/activitypub-admin.js | 21 - .../assets/js/activitypub-header-image.js | 271 - .../build/editor-plugin/block.json | 8 - .../build/editor-plugin/plugin.asset.php | 1 - .../activitypub/build/editor-plugin/plugin.js | 1 - .../activitypub/build/follow-me/block.json | 68 - .../build/follow-me/index.asset.php | 1 - .../activitypub/build/follow-me/index.js | 3 - .../build/follow-me/style-view-rtl.css | 1 - .../build/follow-me/style-view.css | 1 - .../build/follow-me/view.asset.php | 1 - .../activitypub/build/follow-me/view.js | 2 - .../activitypub/build/followers/block.json | 61 - .../build/followers/index.asset.php | 1 - .../activitypub/build/followers/index.js | 4 - .../build/followers/style-view-rtl.css | 1 - .../build/followers/style-view.css | 1 - .../build/followers/view.asset.php | 1 - .../activitypub/build/followers/view.js | 3 - .../activitypub/build/reactions/block.json | 37 - .../build/reactions/index.asset.php | 1 - .../activitypub/build/reactions/index.js | 3 - .../build/reactions/style-index-rtl.css | 1 - .../build/reactions/style-index.css | 1 - .../build/reactions/view.asset.php | 1 - .../activitypub/build/reactions/view.js | 1 - .../activitypub/build/remote-reply/block.json | 11 - .../build/remote-reply/index.asset.php | 1 - .../activitypub/build/remote-reply/index.js | 2 - .../build/remote-reply/style-index-rtl.css | 1 - .../build/remote-reply/style-index.css | 1 - .../activitypub/build/reply-intent/block.json | 12 - .../build/reply-intent/plugin.asset.php | 1 - .../activitypub/build/reply-intent/plugin.js | 1 - .../activitypub/build/reply/block.json | 29 - .../activitypub/build/reply/index-rtl.css | 1 - .../activitypub/build/reply/index.asset.php | 1 - .../plugins/activitypub/build/reply/index.css | 1 - .../plugins/activitypub/build/reply/index.js | 1 - .../build/reply/style-index-rtl.css | 1 - .../activitypub/build/reply/style-index.css | 1 - .../includes/activity/class-activity.php | 269 - .../includes/activity/class-actor.php | 225 - .../includes/activity/class-base-object.php | 508 -- .../activity/class-generic-object.php | 325 - .../activity/extended-object/class-event.php | 379 - .../activity/extended-object/class-place.php | 105 - .../includes/class-activitypub.php | 898 --- .../activitypub/includes/class-autoloader.php | 106 - .../activitypub/includes/class-blocks.php | 446 -- .../activitypub/includes/class-cli.php | 230 - .../activitypub/includes/class-comment.php | 817 -- .../activitypub/includes/class-debug.php | 79 - .../activitypub/includes/class-dispatcher.php | 466 -- .../activitypub/includes/class-embed.php | 263 - .../activitypub/includes/class-handler.php | 50 - .../activitypub/includes/class-hashtag.php | 110 - .../activitypub/includes/class-http.php | 305 - .../activitypub/includes/class-link.php | 132 - .../activitypub/includes/class-mailer.php | 337 - .../activitypub/includes/class-mention.php | 155 - .../activitypub/includes/class-migration.php | 944 --- .../activitypub/includes/class-move.php | 313 - .../includes/class-notification.php | 77 - .../activitypub/includes/class-options.php | 124 - .../activitypub/includes/class-query.php | 351 - .../activitypub/includes/class-sanitize.php | 122 - .../activitypub/includes/class-scheduler.php | 444 -- .../activitypub/includes/class-shortcodes.php | 516 -- .../activitypub/includes/class-signature.php | 521 -- .../activitypub/includes/class-webfinger.php | 300 - .../includes/collection/class-actors.php | 378 - .../collection/class-extra-fields.php | 300 - .../includes/collection/class-followers.php | 482 -- .../collection/class-interactions.php | 349 - .../includes/collection/class-outbox.php | 351 - .../includes/collection/class-replies.php | 226 - .../includes/collection/class-users.php | 78 - .../plugins/activitypub/includes/compat.php | 111 - .../activitypub/includes/constants.php | 76 - .../plugins/activitypub/includes/debug.php | 79 - .../activitypub/includes/functions.php | 1606 ---- .../includes/handler/class-announce.php | 125 - .../includes/handler/class-create.php | 133 - .../includes/handler/class-delete.php | 196 - .../includes/handler/class-follow.php | 114 - .../includes/handler/class-like.php | 80 - .../includes/handler/class-move.php | 213 - .../includes/handler/class-undo.php | 90 - .../includes/handler/class-update.php | 125 - .../includes/model/class-application.php | 255 - .../activitypub/includes/model/class-blog.php | 600 -- .../includes/model/class-follower.php | 410 - .../activitypub/includes/model/class-user.php | 474 -- .../includes/rest/class-actors-controller.php | 359 - .../rest/class-actors-inbox-controller.php | 238 - .../rest/class-application-controller.php | 168 - .../rest/class-collections-controller.php | 272 - .../rest/class-comments-controller.php | 156 - .../rest/class-followers-controller.php | 226 - .../rest/class-following-controller.php | 183 - .../includes/rest/class-inbox-controller.php | 255 - .../rest/class-interaction-controller.php | 139 - .../rest/class-moderators-controller.php | 132 - .../rest/class-nodeinfo-controller.php | 172 - .../includes/rest/class-outbox-controller.php | 257 - .../activitypub/includes/rest/class-post.php | 160 - .../rest/class-replies-controller.php | 256 - .../includes/rest/class-server.php | 173 - .../rest/class-url-validator-controller.php | 133 - .../rest/class-webfinger-controller.php | 173 - .../includes/rest/trait-collection.php | 146 - .../includes/scheduler/class-actor.php | 146 - .../includes/scheduler/class-comment.php | 91 - .../includes/scheduler/class-post.php | 113 - .../includes/table/class-followers.php | 238 - .../transformer/class-activity-object.php | 159 - .../includes/transformer/class-attachment.php | 66 - .../includes/transformer/class-base.php | 388 - .../includes/transformer/class-comment.php | 361 - .../includes/transformer/class-factory.php | 117 - .../includes/transformer/class-json.php | 41 - .../includes/transformer/class-post.php | 1177 --- .../includes/transformer/class-user.php | 41 - .../activitypub/integration/class-akismet.php | 40 - .../integration/class-buddypress.php | 90 - .../class-enable-mastodon-apps.php | 740 -- .../activitypub/integration/class-jetpack.php | 54 - .../class-multisite-language-switcher.php | 49 - .../integration/class-nodeinfo.php | 89 - .../integration/class-opengraph.php | 113 - .../class-seriously-simple-podcasting.php | 72 - .../integration/class-stream-connector.php | 250 - .../integration/class-webfinger.php | 119 - .../activitypub/integration/class-wpml.php | 44 - .../plugins/activitypub/integration/load.php | 164 - .../plugins/activitypub/readme.txt | 413 - .../templates/activitypub-json.php | 25 - .../activitypub/templates/admin-header.php | 34 - .../templates/advanced-settings.php | 16 - .../templates/blog-followers-list.php | 25 - .../activitypub/templates/blog-settings.php | 16 - .../activitypub/templates/emails/new-dm.php | 49 - .../templates/emails/new-follower.php | 159 - .../templates/emails/new-mention.php | 64 - .../templates/emails/parts/footer.php | 28 - .../templates/emails/parts/header.php | 60 - .../activitypub/templates/post-preview.php | 265 - .../activitypub/templates/reply-embed.php | 81 - .../activitypub/templates/settings.php | 16 - .../plugins/activitypub/templates/toolbox.php | 78 - .../templates/user-followers-list.php | 26 - .../plugins/activitypub/templates/welcome.php | 12 - .../audioigniter/assets/css/admin-styles.css | 640 -- .../assets/css/admin-styles.min.css | 1 - .../assets/css/admin/settings.css | 44 - .../assets/css/admin/settings.min.css | 1 - .../audioigniter/assets/images/logo.svg | 1 - .../audioigniter/assets/images/vc_icon.png | Bin 1850 -> 0 bytes .../audioigniter/assets/js/audioigniter.js | 560 -- .../plugins/audioigniter/audioigniter.php | 1422 ---- .../class-audioigniter-admin-page-upsell.php | 169 - .../inc/class-audioigniter-sanitizer.php | 368 - .../audioigniter/languages/audioigniter.pot | 423 - .../plugins/audioigniter/player/build/app.js | 2 - .../player/build/app.js.LICENSE.txt | 68 - .../player/build/fingerprintjs.js | 1 - .../audioigniter/player/build/index.html | 54 - .../audioigniter/player/build/style.css | 1 - .../audioigniter/player/build/style.js | 0 .../plugins/audioigniter/readme.txt | 223 - .../plugins/audioigniter/uninstall.php | 10 - .../.devcontainer/activate.sh | 12 - .../.devcontainer/devcontainer.json | 57 - .../welcome-message/devcontainer-feature.json | 8 - .../local-features/welcome-message/install.sh | 13 - .../.devcontainer/setup.sh | 37 - .../.gitpod.yml | 17 - .../.vscode/tasks.json | 16 - .../CHANGELOG.md | 203 - .../HOWTO.md | 383 - .../README.md | 133 - .../SECURITY.md | 17 - .../codecov.yml | 10 - .../css/styles-admin.css | 32 - .../docker-compose.yml | 95 - .../includes/functions.php | 30 - .../openid-connect-generic-client-wrapper.php | 1131 --- .../openid-connect-generic-client.php | 572 -- .../openid-connect-generic-login-form.php | 178 - .../openid-connect-generic-option-logger.php | 266 - ...openid-connect-generic-option-settings.php | 213 - .../openid-connect-generic-settings-page.php | 603 -- .../languages/openid-connect-generic.pot | 531 -- .../openid-connect-generic.php | 439 -- .../readme.txt | 137 - .../wp-cli.yml | 1 - .../.forgejo/workflows/assets.yml | 24 - .../.forgejo/workflows/deploy.yml | 26 - .../.forgejo/workflows/phpcs.yml | 61 - .../.forgejo/workflows/phpstan.yml | 87 - .../.forgejo/workflows/phpunit.yml | 147 - .../.forgejo/workflows/release.yml | 17 - .../.gitattributes | 26 - .../event-bridge-for-activitypub/CHANGELOG.md | 48 - .../CONTRIBUTING.md | 44 - .../event-bridge-for-activitypub/LICENSE | 235 - .../event-bridge-for-activitypub-admin.css | 236 - .../img/acknowledgement-NGI0Entrust.svg | 121 - .../assets/img/acknowledgement-NLnet.svg | 1 - .../assets/img/activitypub.svg | 288 - .../assets/img/fediverse.svg | 17 - .../assets/img/gancio.png | Bin 3576 -> 0 bytes .../assets/img/mastodon.svg | 10 - .../assets/img/mobilizon.svg | 1 - .../js/event-bridge-for-activitypub-admin.js | 34 - .../build/reminder/block.json | 8 - .../build/reminder/plugin.asset.php | 1 - .../build/reminder/plugin.js | 1 - .../event-bridge-for-activitypub.php | 39 - .../includes/activitypub/class-handler.php | 35 - .../collection/class-event-sources.php | 542 -- .../activitypub/handler/class-accept.php | 76 - .../activitypub/handler/class-create.php | 76 - .../activitypub/handler/class-delete.php | 62 - .../activitypub/handler/class-join.php | 159 - .../activitypub/handler/class-undo.php | 73 - .../activitypub/handler/class-update.php | 76 - .../activitypub/model/class-event-source.php | 371 - .../activitypub/scheduler/class-event.php | 107 - .../event/class-event-organiser.php | 78 - .../transformer/event/class-event.php | 609 -- .../transformer/event/class-eventin.php | 166 - .../transformer/event/class-eventon.php | 186 - .../transformer/event/class-eventprime.php | 70 - .../event/class-events-manager.php | 248 - .../transformer/event/class-gatherpress.php | 156 - .../class-modern-events-calendar-lite.php | 127 - .../event/class-the-events-calendar.php | 203 - .../transformer/event/class-vs-event-list.php | 115 - .../event/class-wp-event-manager.php | 162 - .../place/class-base-post-place.php | 146 - .../place/class-base-term-place.php | 165 - .../place/class-event-organiser.php | 89 - .../transformer/place/class-eventon.php | 197 - .../transformer/place/class-eventprime.php | 59 - .../place/class-events-manager.php | 95 - .../place/class-the-events-calendar.php | 63 - .../activitypub/transmogrifier/class-base.php | 378 - .../transmogrifier/class-gatherpress.php | 207 - .../class-the-events-calendar.php | 371 - .../transmogrifier/class-vs-event-list.php | 175 - .../transmogrifier/helper/class-sanitizer.php | 241 - ...s-the-events-calendar-event-repository.php | 43 - ...e-events-calendar-organizer-repository.php | 43 - ...s-the-events-calendar-venue-repository.php | 43 - .../class-event-plugin-admin-notices.php | 103 - .../admin/class-general-admin-notices.php | 152 - .../includes/admin/class-health-check.php | 211 - .../includes/admin/class-settings-page.php | 280 - .../includes/admin/class-user-interface.php | 100 - .../includes/class-autoloader.php | 67 - .../includes/class-debug.php | 41 - .../includes/class-event-sources.php | 514 -- .../includes/class-outbox-parser.php | 282 - .../includes/class-preview.php | 40 - .../includes/class-reminder.php | 192 - .../includes/class-settings.php | 261 - .../includes/class-setup.php | 692 -- .../includes/event-categories.php | 50 - .../integrations/class-event-organiser.php | 109 - .../class-event-plugin-integration.php | 132 - .../includes/integrations/class-eventin.php | 74 - .../includes/integrations/class-eventon.php | 94 - .../integrations/class-eventprime.php | 171 - .../integrations/class-events-manager.php | 95 - .../integrations/class-gatherpress.php | 143 - .../class-modern-events-calendar-lite.php | 75 - .../class-the-events-calendar.php | 155 - .../integrations/class-vs-event-list.php | 117 - .../integrations/class-wp-event-manager.php | 73 - .../interface-feature-event-sources.php | 42 - .../includes/table/class-event-sources.php | 243 - .../event-bridge-for-activitypub/readme.txt | 157 - .../templates/event-preview.php | 1510 ---- .../templates/settings/menu.php | 45 - .../settings/subpages/event-sources.php | 236 - .../templates/settings/subpages/settings.php | 229 - .../templates/settings/subpages/welcome.php | 250 - .../templates/settings/tab.php | 13 - .../plugins/gitium/functions.php | 441 -- .../plugins/gitium/gitium-webhook.php | 81 - .../plugins/gitium/gitium.php | 380 - .../plugins/gitium/img/gitium.png | Bin 540 -> 0 bytes .../plugins/gitium/img/gitium.svg | 26 - .../plugins/gitium/inc/class-git-wrapper.php | 680 -- .../plugins/gitium/inc/class-gitium-admin.php | 58 - .../plugins/gitium/inc/class-gitium-help.php | 113 - .../gitium/inc/class-gitium-menu-bubble.php | 61 - .../plugins/gitium/inc/class-gitium-menu.php | 103 - .../gitium/inc/class-gitium-requirements.php | 123 - .../inc/class-gitium-submenu-commits.php | 100 - .../inc/class-gitium-submenu-configure.php | 264 - .../inc/class-gitium-submenu-settings.php | 150 - .../inc/class-gitium-submenu-status.php | 280 - .../plugins/gitium/inc/ssh-git | 8 - .../plugins/gitium/js/copy-to-clipboard.js | 38 - .../plugins/gitium/languages/gitium-es_ES.mo | Bin 13284 -> 0 bytes .../plugins/gitium/languages/gitium-es_ES.po | 546 -- .../plugins/gitium/languages/gitium-sr_RS.mo | Bin 12978 -> 0 bytes .../plugins/gitium/languages/gitium-sr_RS.po | 538 -- .../plugins/gitium/languages/gitium.pot | 489 -- .../plugins/gitium/readme.txt | 310 - .../gp-premium/backgrounds/functions/css.php | 134 - .../backgrounds/functions/functions.php | 1342 ---- .../functions/secondary-nav-backgrounds.php | 420 - .../backgrounds/generate-backgrounds.php | 19 - .../gp-premium/blog/functions/columns.php | 169 - .../gp-premium/blog/functions/css/columns.css | 149 - .../blog/functions/css/columns.min.css | 1 - .../blog/functions/css/featured-images.css | 104 - .../functions/css/featured-images.min.css | 1 - .../gp-premium/blog/functions/css/style.css | 254 - .../blog/functions/css/style.min.css | 1 - .../gp-premium/blog/functions/customizer.php | 1181 --- .../gp-premium/blog/functions/defaults.php | 58 - .../blog/functions/generate-blog.php | 754 -- .../gp-premium/blog/functions/images.php | 369 - .../gp-premium/blog/functions/js/controls.js | 98 - .../blog/functions/js/customizer.js | 76 - .../functions/js/infinite-scroll.pkgd.min.js | 12 - .../gp-premium/blog/functions/js/scripts.js | 100 - .../blog/functions/js/scripts.min.js | 1 - .../gp-premium/blog/functions/migrate.php | 122 - .../plugins/gp-premium/blog/generate-blog.php | 20 - .../gp-premium/colors/functions/functions.php | 1583 ---- .../colors/functions/js/customizer.js | 620 -- .../functions/js/menu-plus-customizer.js | 102 - .../colors/functions/js/wc-customizer.js | 161 - .../colors/functions/secondary-nav-colors.php | 403 - .../colors/functions/slideout-nav-colors.php | 400 - .../colors/functions/woocommerce-colors.php | 911 --- .../gp-premium/colors/generate-colors.php | 20 - .../copyright/functions/functions.php | 223 - .../copyright/functions/js/customizer.js | 18 - .../copyright/generate-copyright.php | 20 - .../disable-elements/functions/functions.php | 426 - .../generate-disable-elements.php | 20 - .../gp-premium/dist/adjacent-posts.asset.php | 1 - .../plugins/gp-premium/dist/adjacent-posts.js | 1 - .../gp-premium/dist/block-elements-rtl.css | 7 - .../gp-premium/dist/block-elements.asset.php | 1 - .../gp-premium/dist/block-elements.css | 7 - .../plugins/gp-premium/dist/block-elements.js | 3 - .../gp-premium/dist/customizer.asset.php | 1 - .../plugins/gp-premium/dist/customizer.js | 1 - .../gp-premium/dist/dashboard.asset.php | 1 - .../plugins/gp-premium/dist/dashboard.js | 1 - .../plugins/gp-premium/dist/editor-rtl.css | 1 - .../plugins/gp-premium/dist/editor.asset.php | 1 - .../plugins/gp-premium/dist/editor.css | 1 - .../plugins/gp-premium/dist/editor.js | 1 - .../gp-premium/dist/font-library-rtl.css | 1 - .../gp-premium/dist/font-library.asset.php | 1 - .../plugins/gp-premium/dist/font-library.css | 1 - .../plugins/gp-premium/dist/font-library.js | 11 - .../plugins/gp-premium/dist/packages-rtl.css | 2 - .../gp-premium/dist/packages.asset.php | 1 - .../plugins/gp-premium/dist/packages.css | 2 - .../plugins/gp-premium/dist/packages.js | 0 .../gp-premium/dist/site-library-rtl.css | 1 - .../gp-premium/dist/site-library.asset.php | 1 - .../plugins/gp-premium/dist/site-library.css | 1 - .../plugins/gp-premium/dist/site-library.js | 6 - .../gp-premium/dist/style-dashboard-rtl.css | 4 - .../gp-premium/dist/style-dashboard.css | 4 - .../assets/admin/author-image-placeholder.png | Bin 138 -> 0 bytes .../admin/background-image-fallback.jpg | Bin 45015 -> 0 bytes .../elements/assets/admin/balloon.css | 211 - .../elements/assets/admin/elements.css | 86 - .../elements/assets/admin/elements.js | 29 - .../admin/featured-image-placeholder.png | Bin 200 -> 0 bytes .../elements/assets/admin/metabox.css | 400 - .../elements/assets/admin/metabox.js | 424 - .../elements/assets/admin/spinner.gif | Bin 4162 -> 0 bytes .../gp-premium/elements/assets/js/parallax.js | 17 - .../elements/assets/js/parallax.min.js | 1 - .../elements/class-block-elements.php | 1789 ----- .../gp-premium/elements/class-block.php | 469 -- .../gp-premium/elements/class-conditions.php | 447 -- .../elements/class-elements-helper.php | 527 -- .../gp-premium/elements/class-hero.php | 1041 --- .../gp-premium/elements/class-hooks.php | 223 - .../gp-premium/elements/class-layout.php | 550 -- .../gp-premium/elements/class-metabox.php | 2245 ------ .../gp-premium/elements/class-post-type.php | 508 -- .../plugins/gp-premium/elements/elements.php | 290 - .../font-library/class-font-library-cpt.php | 134 - .../class-font-library-optimize.php | 252 - .../font-library/class-font-library-rest.php | 579 -- .../font-library/class-font-library.php | 840 -- .../general/class-external-file-css.php | 449 -- .../gp-premium/general/enqueue-scripts.php | 81 - .../plugins/gp-premium/general/icons.php | 87 - .../gp-premium/general/icons/gp-premium.eot | Bin 3020 -> 0 bytes .../gp-premium/general/icons/gp-premium.svg | 20 - .../gp-premium/general/icons/gp-premium.ttf | Bin 2856 -> 0 bytes .../gp-premium/general/icons/gp-premium.woff | Bin 2932 -> 0 bytes .../gp-premium/general/icons/icons.css | 10 - .../gp-premium/general/icons/icons.min.css | 1 - .../gp-premium/general/js/smooth-scroll.js | 743 -- .../general/js/smooth-scroll.min.js | 1 - .../gp-premium/general/smooth-scroll.php | 103 - .../plugins/gp-premium/gp-premium.php | 309 - .../hooks/functions/assets/css/hooks.css | 59 - .../hooks/functions/assets/js/admin.js | 38 - .../functions/assets/js/jquery.cookie.js | 165 - .../gp-premium/hooks/functions/functions.php | 542 -- .../gp-premium/hooks/functions/hooks.php | 171 - .../gp-premium/hooks/generate-hooks.php | 21 - .../gp-premium/inc/class-adjacent-posts.php | 84 - .../gp-premium/inc/class-dashboard.php | 417 - .../inc/class-register-dynamic-tags.php | 306 - .../plugins/gp-premium/inc/class-rest.php | 570 -- .../gp-premium/inc/class-singleton.php | 58 - .../gp-premium/inc/deprecated-admin.php | 790 -- .../plugins/gp-premium/inc/deprecated.php | 728 -- .../plugins/gp-premium/inc/functions.php | 183 - .../gp-premium/inc/legacy/activation.php | 623 -- .../inc/legacy/assets/dashboard.css | 199 - .../gp-premium/inc/legacy/assets/dashboard.js | 48 - .../gp-premium/inc/legacy/dashboard.php | 47 - .../gp-premium/inc/legacy/import-export.php | 371 - .../plugins/gp-premium/inc/legacy/reset.php | 273 - .../plugins/gp-premium/langs/gp-premium-ar.mo | Bin 32088 -> 0 bytes .../gp-premium/langs/gp-premium-bn_BD.mo | Bin 42410 -> 0 bytes .../gp-premium/langs/gp-premium-cs_CZ.mo | Bin 10096 -> 0 bytes .../gp-premium/langs/gp-premium-da_DK.mo | Bin 28026 -> 0 bytes ...e_DE-42da344ccb044413769d16ed3484307b.json | 1 - ...e_DE-53e2a1d5945b8d2b1c35e81ae1e532f3.json | 1 - ...e_DE-92fa58377f1b6f7bef9c785c31ae29ff.json | 1 - ...e_DE-cbab080b0f20fd6c323029398be6c986.json | 1 - ...e_DE-ecf9f3c2af10c4f2dfbf4f42504922d1.json | 1 - .../gp-premium/langs/gp-premium-de_DE.mo | Bin 59453 -> 0 bytes .../gp-premium/langs/gp-premium-es_AR.mo | Bin 26952 -> 0 bytes ...s_ES-42da344ccb044413769d16ed3484307b.json | 1 - ...s_ES-53e2a1d5945b8d2b1c35e81ae1e532f3.json | 1 - ...s_ES-92fa58377f1b6f7bef9c785c31ae29ff.json | 1 - ...s_ES-cbab080b0f20fd6c323029398be6c986.json | 1 - ...s_ES-ecf9f3c2af10c4f2dfbf4f42504922d1.json | 1 - .../gp-premium/langs/gp-premium-es_ES.mo | Bin 60021 -> 0 bytes ...m-fi-42da344ccb044413769d16ed3484307b.json | 1 - ...m-fi-53e2a1d5945b8d2b1c35e81ae1e532f3.json | 1 - ...m-fi-92fa58377f1b6f7bef9c785c31ae29ff.json | 1 - ...m-fi-cbab080b0f20fd6c323029398be6c986.json | 1 - ...m-fi-ecf9f3c2af10c4f2dfbf4f42504922d1.json | 1 - .../plugins/gp-premium/langs/gp-premium-fi.mo | Bin 59738 -> 0 bytes ...r_FR-42da344ccb044413769d16ed3484307b.json | 1 - ...r_FR-53e2a1d5945b8d2b1c35e81ae1e532f3.json | 1 - ...r_FR-92fa58377f1b6f7bef9c785c31ae29ff.json | 1 - .../gp-premium/langs/gp-premium-fr_FR.mo | Bin 39934 -> 0 bytes .../plugins/gp-premium/langs/gp-premium-hr.mo | Bin 27851 -> 0 bytes .../gp-premium/langs/gp-premium-hu_HU.mo | Bin 52216 -> 0 bytes .../gp-premium/langs/gp-premium-it_IT.mo | Bin 39606 -> 0 bytes .../gp-premium/langs/gp-premium-nb_NO.mo | Bin 25382 -> 0 bytes ...l_NL-42da344ccb044413769d16ed3484307b.json | 1 - ...l_NL-53e2a1d5945b8d2b1c35e81ae1e532f3.json | 1 - ...l_NL-92fa58377f1b6f7bef9c785c31ae29ff.json | 1 - ...l_NL-cbab080b0f20fd6c323029398be6c986.json | 1 - ...l_NL-ecf9f3c2af10c4f2dfbf4f42504922d1.json | 1 - .../gp-premium/langs/gp-premium-nl_NL.mo | Bin 57471 -> 0 bytes .../gp-premium/langs/gp-premium-pl_PL.mo | Bin 30953 -> 0 bytes .../gp-premium/langs/gp-premium-pt_BR.mo | Bin 54588 -> 0 bytes ...t_PT-42da344ccb044413769d16ed3484307b.json | 1 - ...t_PT-53e2a1d5945b8d2b1c35e81ae1e532f3.json | 1 - ...t_PT-92fa58377f1b6f7bef9c785c31ae29ff.json | 1 - .../gp-premium/langs/gp-premium-pt_PT.mo | Bin 36676 -> 0 bytes ...u_RU-42da344ccb044413769d16ed3484307b.json | 1 - ...u_RU-53e2a1d5945b8d2b1c35e81ae1e532f3.json | 1 - ...u_RU-92fa58377f1b6f7bef9c785c31ae29ff.json | 1 - ...u_RU-cbab080b0f20fd6c323029398be6c986.json | 1 - ...u_RU-ecf9f3c2af10c4f2dfbf4f42504922d1.json | 1 - .../gp-premium/langs/gp-premium-ru_RU.mo | Bin 77631 -> 0 bytes ...v_SE-42da344ccb044413769d16ed3484307b.json | 1 - ...v_SE-53e2a1d5945b8d2b1c35e81ae1e532f3.json | 1 - ...v_SE-92fa58377f1b6f7bef9c785c31ae29ff.json | 1 - ...v_SE-cbab080b0f20fd6c323029398be6c986.json | 1 - ...v_SE-ecf9f3c2af10c4f2dfbf4f42504922d1.json | 1 - .../gp-premium/langs/gp-premium-sv_SE.mo | Bin 50196 -> 0 bytes .../plugins/gp-premium/langs/gp-premium-uk.mo | Bin 26349 -> 0 bytes .../plugins/gp-premium/langs/gp-premium-vi.mo | Bin 31417 -> 0 bytes .../gp-premium/langs/gp-premium-zh_CN.mo | Bin 53253 -> 0 bytes .../wp-color-picker-alpha.js | 635 -- .../wp-color-picker-alpha.min.js | 11 - .../gp-premium/library/class-make-css.php | 202 - .../library/class-plugin-updater.php | 676 -- .../gp-premium/library/customizer-helpers.php | 531 -- .../library/customizer/active-callbacks.php | 601 -- .../controls/class-action-button-control.php | 44 - .../controls/class-alpha-color-control.php | 76 - .../controls/class-backgrounds-control.php | 146 - .../controls/class-control-toggle.php | 37 - .../controls/class-copyright-control.php | 51 - .../customizer/controls/class-deprecated.php | 396 - .../controls/class-information-control.php | 46 - .../controls/class-range-slider-control.php | 165 - .../controls/class-refresh-button-control.php | 24 - .../class-section-shortcuts-control.php | 123 - .../controls/class-spacing-control.php | 165 - .../controls/class-title-control.php | 32 - .../controls/class-typography-control.php | 187 - .../controls/css/alpha-color-picker.css | 32 - .../controls/css/button-actions.css | 19 - .../css/control-toggle-customizer.css | 21 - .../controls/css/information-control.css | 12 - .../controls/css/section-shortcuts.css | 43 - .../customizer/controls/css/selectWoo.min.css | 1 - .../controls/css/slider-customizer.css | 131 - .../controls/css/spacing-customizer.css | 101 - .../controls/css/title-customizer.css | 9 - .../controls/css/transparency-grid.png | Bin 2343 -> 0 bytes .../controls/css/typography-customizer.css | 60 - .../controls/js/alpha-color-picker.js | 277 - .../controls/js/backgrounds-customizer.js | 31 - .../customizer/controls/js/button-actions.js | 43 - .../controls/js/control-toggle-customizer.js | 35 - .../controls/js/copyright-customizer.js | 12 - .../controls/js/generatepress-controls.js | 151 - .../controls/js/section-shortcuts.js | 46 - .../customizer/controls/js/selectWoo.min.js | 1 - .../controls/js/slider-customizer.js | 137 - .../controls/js/spacing-customizer.js | 203 - .../controls/js/typography-customizer.js | 148 - .../library/customizer/deprecated.php | 324 - .../library/customizer/sanitize.php | 131 - .../library/select2/select2.full.min.js | 2 - .../library/select2/select2.min.css | 1 - .../menu-plus/fields/slideout-nav-colors.php | 185 - .../menu-plus/functions/css/menu-logo.css | 76 - .../menu-plus/functions/css/menu-logo.min.css | 1 - .../css/navigation-branding-flex.css | 116 - .../css/navigation-branding-flex.min.css | 1 - .../functions/css/navigation-branding.css | 135 - .../functions/css/navigation-branding.min.css | 1 - .../menu-plus/functions/css/offside.css | 362 - .../menu-plus/functions/css/offside.min.css | 1 - .../menu-plus/functions/css/sticky.css | 76 - .../menu-plus/functions/css/sticky.min.css | 1 - .../functions/generate-menu-plus.php | 2452 ------ .../menu-plus/functions/js/offside.js | 646 -- .../menu-plus/functions/js/offside.min.js | 1 - .../menu-plus/functions/js/sticky.js | 650 -- .../menu-plus/functions/js/sticky.min.js | 1 - .../menu-plus/generate-menu-plus.php | 21 - .../page-header/functions/css/metabox.css | 302 - .../page-header/functions/css/page-header.css | 92 - .../functions/css/page-header.min.css | 1 - .../page-header/functions/functions.php | 1317 ---- .../functions/global-locations.php | 220 - .../page-header/functions/js/full-height.js | 66 - .../functions/js/full-height.min.js | 1 - .../functions/js/jquery.vide.min.js | 9 - .../page-header/functions/js/lc_switch.js | 149 - .../page-header/functions/js/metabox.js | 220 - .../page-header/functions/js/parallax.js | 17 - .../page-header/functions/js/parallax.min.js | 1 - .../page-header/functions/metabox.php | 782 -- .../page-header/functions/page-header.php | 184 - .../page-header/functions/post-image.php | 60 - .../page-header/functions/post-type.php | 236 - .../page-header/generate-page-header.php | 21 - .../plugins/gp-premium/readme.txt | 548 -- .../fields/secondary-navigation.php | 174 - .../secondary-nav/functions/css.php | 138 - .../functions/css/main-mobile.css | 125 - .../functions/css/main-mobile.min.css | 1 - .../secondary-nav/functions/css/main.css | 377 - .../secondary-nav/functions/css/main.min.css | 1 - .../functions/css/style-mobile.css | 97 - .../functions/css/style-mobile.min.css | 1 - .../secondary-nav/functions/css/style.css | 337 - .../secondary-nav/functions/css/style.min.css | 1 - .../secondary-nav/functions/functions.php | 1379 ---- .../secondary-nav/functions/js/customizer.js | 77 - .../secondary-nav/generate-secondary-nav.php | 23 - .../sections/functions/css/style.css | 57 - .../sections/functions/css/style.min.css | 1 - .../sections/functions/generate-sections.php | 329 - .../sections/functions/js/parallax.js | 17 - .../sections/functions/js/parallax.min.js | 1 - .../css/generate-sections-metabox.css | 348 - .../functions/metaboxes/css/lc_switch.css | 92 - .../js/generate-sections-metabox-4.9.js | 835 -- .../metaboxes/js/generate-sections-metabox.js | 858 --- .../functions/metaboxes/metabox-functions.php | 396 - .../metaboxes/views/sections-template.php | 279 - .../functions/metaboxes/views/sections.php | 13 - .../metaboxes/views/use-sections.php | 17 - .../sections/functions/templates/template.php | 122 - .../gp-premium/sections/generate-sections.php | 21 - .../class-site-library-helper.php | 1022 --- .../site-library/class-site-library-rest.php | 947 --- .../site-library/class-site-library.php | 413 - .../class-beaver-builder-batch-processing.php | 163 - .../classes/class-content-importer.php | 49 - .../classes/class-site-import-image.php | 200 - .../classes/class-site-widget-importer.php | 275 - .../libs/wxr-importer/WPImporterLogger.php | 138 - .../libs/wxr-importer/WXRImportInfo.php | 16 - .../libs/wxr-importer/WXRImporter.php | 2329 ------ .../functions/customizer/content-spacing.php | 244 - .../functions/customizer/footer-spacing.php | 207 - .../functions/customizer/header-spacing.php | 135 - .../functions/customizer/js/customizer.js | 661 -- .../customizer/navigation-spacing.php | 281 - .../customizer/secondary-nav-spacing.php | 159 - .../functions/customizer/sidebar-spacing.php | 211 - .../functions/customizer/top-bar-spacing.php | 73 - .../spacing/functions/functions.php | 362 - .../spacing/functions/migration.php | 102 - .../gp-premium/spacing/generate-spacing.php | 20 - .../typography/functions/functions.php | 3125 -------- .../typography/functions/google-fonts.json | 6835 ----------------- .../typography/functions/js/customizer.js | 250 - .../typography/functions/migration.php | 359 - .../functions/secondary-nav-fonts.php | 176 - .../functions/slideout-nav-fonts.php | 149 - .../functions/woocommerce-fonts.php | 179 - .../gp-premium/typography/generate-fonts.php | 20 - .../plugins/gp-premium/webpack.config.js | 30 - .../woocommerce/fields/woocommerce-colors.php | 607 -- .../functions/css/woocommerce-mobile.css | 198 - .../functions/css/woocommerce-mobile.min.css | 1 - .../woocommerce/functions/css/woocommerce.css | 1283 ---- .../functions/css/woocommerce.min.css | 1 - .../functions/customizer/customizer.php | 1031 --- .../functions/customizer/js/customizer.js | 6 - .../woocommerce/functions/functions.php | 1571 ---- .../woocommerce/functions/js/woocommerce.js | 285 - .../functions/js/woocommerce.min.js | 1 - .../gp-premium/woocommerce/woocommerce.php | 19 - .../plugins/gp-premium/wpml-config.xml | 112 - .../plugins/jetpack-protect/CHANGELOG.md | 321 - .../plugins/jetpack-protect/LICENSE.txt | 357 - .../plugins/jetpack-protect/SECURITY.md | 47 - .../assets/fonts/jetpack-protect.eot | Bin 1496 -> 0 bytes .../assets/fonts/jetpack-protect.svg | 11 - .../assets/fonts/jetpack-protect.ttf | Bin 1300 -> 0 bytes .../assets/fonts/jetpack-protect.woff | Bin 1376 -> 0 bytes .../assets/jetpack-protect.css | 30 - .../jetpack-protect/build/index.asset.php | 1 - .../plugins/jetpack-protect/build/index.css | 1 - .../plugins/jetpack-protect/build/index.js | 77 - .../build/index.js.LICENSE.txt | 40 - .../jetpack-protect/build/index.rtl.css | 1 - .../plugins/jetpack-protect/composer.json | 77 - .../jetpack-protect/jetpack-protect.php | 140 - .../jetpack-a8c-mc-stats/CHANGELOG.md | 206 - .../jetpack-a8c-mc-stats/LICENSE.txt | 357 - .../jetpack-a8c-mc-stats/SECURITY.md | 47 - .../jetpack-a8c-mc-stats/composer.json | 45 - .../src/class-a8c-mc-stats.php | 182 - .../automattic/jetpack-admin-ui/CHANGELOG.md | 243 - .../automattic/jetpack-admin-ui/LICENSE.txt | 357 - .../automattic/jetpack-admin-ui/SECURITY.md | 47 - .../automattic/jetpack-admin-ui/composer.json | 56 - .../jetpack-admin-ui/src/class-admin-menu.php | 228 - .../automattic/jetpack-assets/CHANGELOG.md | 729 -- .../automattic/jetpack-assets/LICENSE.txt | 357 - .../automattic/jetpack-assets/SECURITY.md | 47 - .../automattic/jetpack-assets/actions.php | 25 - .../build/i18n-loader.asset.php | 1 - .../jetpack-assets/build/i18n-loader.js | 1 - .../build/jetpack-script-data.asset.php | 1 - .../build/jetpack-script-data.js | 1 - .../automattic/jetpack-assets/composer.json | 59 - .../jetpack-assets/src/class-assets.php | 763 -- .../jetpack-assets/src/class-script-data.php | 224 - .../jetpack-assets/src/class-semver.php | 121 - .../jetpack-assets/src/js/i18n-loader.js | 76 - .../jetpack-assets/src/js/script-data.js | 1 - .../CHANGELOG.md | 94 - .../LICENSE.txt | 357 - .../SECURITY.md | 47 - .../composer.json | 53 - .../src/class-helper-script-manager-impl.php | 620 -- .../src/class-helper-script-manager.php | 89 - .../src/class-throw-on-errors.php | 498 -- .../jetpack-boost-core/CHANGELOG.md | 155 - .../automattic/jetpack-boost-core/LICENSE.txt | 357 - .../automattic/jetpack-boost-core/SECURITY.md | 47 - .../jetpack-boost-core/composer.json | 47 - .../src/contracts/boost-api-client.php | 34 - .../src/lib/class-boost-api.php | 112 - .../src/lib/class-cacheable.php | 139 - .../src/lib/class-transient.php | 122 - .../jetpack-boost-core/src/lib/class-url.php | 96 - .../src/lib/class-utils.php | 160 - .../src/lib/class-wpcom-boost-api-client.php | 63 - .../jetpack-boost-speed-score/CHANGELOG.md | 151 - .../jetpack-boost-speed-score/LICENSE.txt | 357 - .../jetpack-boost-speed-score/SECURITY.md | 47 - .../jetpack-boost-speed-score/composer.json | 56 - .../src/class-jetpack-boost-modules.php | 56 - ...lass-speed-score-graph-history-request.php | 138 - .../src/class-speed-score-history.php | 148 - .../src/class-speed-score-request.php | 324 - .../src/class-speed-score.php | 362 - .../automattic/jetpack-config/CHANGELOG.md | 266 - .../automattic/jetpack-config/LICENSE.txt | 357 - .../automattic/jetpack-config/SECURITY.md | 47 - .../automattic/jetpack-config/composer.json | 68 - .../jetpack-config/src/class-config.php | 455 -- .../jetpack-connection/CHANGELOG.md | 1631 ---- .../automattic/jetpack-connection/LICENSE.txt | 357 - .../automattic/jetpack-connection/SECURITY.md | 47 - .../automattic/jetpack-connection/TRACKING.md | 122 - .../automattic/jetpack-connection/actions.php | 28 - .../jetpack-connection/composer.json | 81 - .../dist/identity-crisis.asset.php | 1 - .../dist/identity-crisis.css | 1 - .../dist/identity-crisis.js | 7 - .../dist/identity-crisis.rtl.css | 1 - ...isconnect-confirm-dc9fe8f5c68cfd1320e0.jpg | Bin 25037 -> 0 bytes ...disconnect-thanks-5873bfac56a9bd7322cd.jpg | Bin 55604 -> 0 bytes .../dist/jetpack-connection.asset.php | 1 - .../dist/jetpack-connection.css | 1 - .../dist/jetpack-connection.js | 7 - .../dist/jetpack-connection.js.LICENSE.txt | 7 - .../dist/jetpack-connection.rtl.css | 1 - .../jetpack-sso-admin-create-user.asset.php | 1 - .../dist/jetpack-sso-admin-create-user.css | 1 - .../dist/jetpack-sso-admin-create-user.js | 1 - .../jetpack-sso-admin-create-user.rtl.css | 1 - .../dist/jetpack-sso-login.asset.php | 1 - .../dist/jetpack-sso-login.css | 1 - .../dist/jetpack-sso-login.js | 1 - .../dist/jetpack-sso-login.rtl.css | 1 - .../dist/jetpack-sso-users.asset.php | 1 - .../dist/jetpack-sso-users.js | 1 - .../dist/jetpack-users-connection.asset.php | 1 - .../dist/jetpack-users-connection.js | 1 - .../dist/tracks-ajax.asset.php | 1 - .../jetpack-connection/dist/tracks-ajax.js | 1 - .../dist/tracks-callables.asset.php | 1 - .../dist/tracks-callables.js | 1 - .../legacy/class-jetpack-ixr-client.php | 187 - .../class-jetpack-ixr-clientmulticall.php | 74 - .../legacy/class-jetpack-options.php | 687 -- .../legacy/class-jetpack-signature.php | 409 - .../legacy/class-jetpack-tracks-client.php | 230 - .../legacy/class-jetpack-tracks-event.php | 188 - .../legacy/class-jetpack-xmlrpc-server.php | 843 -- .../src/class-authorize-json-api.php | 281 - .../jetpack-connection/src/class-client.php | 510 -- .../src/class-connection-assets.php | 44 - .../src/class-connection-notice.php | 239 - .../src/class-error-handler.php | 780 -- .../src/class-heartbeat.php | 310 - .../src/class-initial-state.php | 73 - .../jetpack-connection/src/class-manager.php | 2768 ------- .../src/class-nonce-handler.php | 212 - .../src/class-package-version-tracker.php | 176 - .../src/class-package-version.php | 30 - .../src/class-partner-coupon.php | 466 -- .../jetpack-connection/src/class-partner.php | 215 - .../src/class-plugin-storage.php | 260 - .../jetpack-connection/src/class-plugin.php | 100 - .../src/class-rest-authentication.php | 235 - .../src/class-rest-connector.php | 1190 --- .../jetpack-connection/src/class-secrets.php | 282 - .../src/class-server-sandbox.php | 243 - .../src/class-terms-of-service.php | 111 - .../src/class-tokens-locks.php | 76 - .../jetpack-connection/src/class-tokens.php | 687 -- .../jetpack-connection/src/class-tracking.php | 323 - .../jetpack-connection/src/class-urls.php | 192 - .../src/class-users-connection-admin.php | 175 - .../jetpack-connection/src/class-utils.php | 135 - .../jetpack-connection/src/class-webhooks.php | 217 - .../src/class-xmlrpc-async-call.php | 106 - .../src/class-xmlrpc-connector.php | 85 - .../src/identity-crisis/_inc/admin-bar.scss | 30 - .../src/identity-crisis/_inc/admin.jsx | 62 - .../src/identity-crisis/_inc/style.scss | 9 - .../src/identity-crisis/class-exception.php | 13 - .../identity-crisis/class-identity-crisis.php | 833 -- .../identity-crisis/class-rest-endpoints.php | 322 - .../src/identity-crisis/class-ui.php | 208 - .../src/identity-crisis/class-url-secret.php | 159 - .../src/interface-manager.php | 17 - .../src/sso/class-force-2fa.php | 184 - .../src/sso/class-helpers.php | 387 - .../src/sso/class-notices.php | 272 - .../jetpack-connection/src/sso/class-sso.php | 1276 --- .../src/sso/class-user-admin.php | 1322 ---- .../src/sso/jetpack-sso-admin-create-user.css | 21 - .../src/sso/jetpack-sso-admin-create-user.js | 45 - .../src/sso/jetpack-sso-login.css | 164 - .../src/sso/jetpack-sso-login.js | 27 - .../src/sso/jetpack-sso-users.js | 64 - .../trait-wpcom-rest-api-proxy-request.php | 151 - .../src/webhooks/class-authorize-redirect.php | 251 - .../automattic/jetpack-constants/CHANGELOG.md | 249 - .../automattic/jetpack-constants/LICENSE.txt | 357 - .../automattic/jetpack-constants/SECURITY.md | 47 - .../jetpack-constants/composer.json | 46 - .../jetpack-constants/src/class-constants.php | 124 - .../jetpack-device-detection/CHANGELOG.md | 285 - .../jetpack-device-detection/LICENSE.txt | 357 - .../jetpack-device-detection/SECURITY.md | 47 - .../jetpack-device-detection/composer.json | 45 - .../src/class-device-detection.php | 255 - .../src/class-user-agent-info.php | 1755 ----- .../src/functions.php | 36 - .../automattic/jetpack-explat/CHANGELOG.md | 162 - .../automattic/jetpack-explat/LICENSE.txt | 357 - .../automattic/jetpack-explat/SECURITY.md | 47 - .../jetpack-explat/build/index.asset.php | 1 - .../automattic/jetpack-explat/build/index.js | 1 - .../automattic/jetpack-explat/composer.json | 65 - .../automattic/jetpack-explat/global.d.ts | 9 - .../jetpack-explat/src/class-explat.php | 44 - .../src/class-rest-controller.php | 120 - .../jetpack-explat/src/client/anon.ts | 61 - .../jetpack-explat/src/client/assignment.ts | 29 - .../jetpack-explat/src/client/error.ts | 39 - .../jetpack-explat/src/client/index.ts | 51 - .../jetpack-explat/src/client/utils.ts | 4 - .../automattic/jetpack-ip/CHANGELOG.md | 111 - .../automattic/jetpack-ip/LICENSE.txt | 357 - .../automattic/jetpack-ip/SECURITY.md | 47 - .../automattic/jetpack-ip/composer.json | 50 - .../automattic/jetpack-ip/src/class-utils.php | 543 -- .../automattic/jetpack-jitm/CHANGELOG.md | 1060 --- .../automattic/jetpack-jitm/LICENSE.txt | 357 - .../automattic/jetpack-jitm/SECURITY.md | 47 - .../background-f9c9ff650c08ee46f153.png | Bin 23766 -> 0 bytes .../jetpack-jitm/build/index.asset.php | 1 - .../automattic/jetpack-jitm/build/index.css | 1 - .../automattic/jetpack-jitm/build/index.js | 1 - .../jetpack-jitm/build/index.rtl.css | 1 - .../automattic/jetpack-jitm/composer.json | 67 - .../jetpack-jitm/src/class-jitm.php | 413 - .../src/class-post-connection-jitm.php | 421 - .../src/class-pre-connection-jitm.php | 173 - .../src/class-rest-api-endpoints.php | 95 - .../src/css/jetpack-admin-jitm.scss | 516 -- .../jetpack-jitm/src/images/background.png | Bin 23766 -> 0 bytes .../automattic/jetpack-licensing/CHANGELOG.md | 415 - .../automattic/jetpack-licensing/LICENSE.txt | 357 - .../automattic/jetpack-licensing/SECURITY.md | 47 - .../jetpack-licensing/composer.json | 53 - .../jetpack-licensing/src/class-endpoints.php | 449 -- .../jetpack-licensing/src/class-licensing.php | 359 - .../automattic/jetpack-logo/CHANGELOG.md | 253 - .../automattic/jetpack-logo/LICENSE.txt | 357 - .../automattic/jetpack-logo/SECURITY.md | 47 - .../automattic/jetpack-logo/composer.json | 45 - .../jetpack-logo/src/class-logo.php | 122 - .../jetpack-my-jetpack/CHANGELOG.md | 2314 ------ .../automattic/jetpack-my-jetpack/LICENSE.txt | 357 - .../automattic/jetpack-my-jetpack/SECURITY.md | 47 - .../images/apple-36e00ab02e6fed6f51dd.svg | 3 - .../images/apple-92dacafad84e79708a74.svg | 3 - .../images/boost-9e9a227e7e7280d0aa85.png | Bin 146014 -> 0 bytes .../images/cloud-81ac85ba680343200f54.svg | 12 - .../images/complete-f4bd1db5fb786efbc9d5.png | Bin 497091 -> 0 bytes .../images/connect-c399837fe1621b176d10.png | Bin 45419 -> 0 bytes .../build/images/crm-8a2b204e2c720730e928.png | Bin 108447 -> 0 bytes .../empty-avatar-fea23feddfa99b07c2e8.svg | 40 - .../evaluation-blank-fbbfbcd75b50ade0f092.png | Bin 262511 -> 0 bytes ...aluation-selected-196d1790b76830f9b73a.png | Bin 117544 -> 0 bytes .../images/extras-c6bd0796750901faa7fd.png | Bin 24404 -> 0 bytes .../images/github-45c648158e3e86b560f5.svg | 3 - .../images/github-523373a4447a46c189a1.svg | 15 - .../images/google-a444c8c0f0c0108836d8.svg | 6 - .../images/google-dec2a429bf1d8e83f9ad.svg | 1 - ...row-your-audience-ddf8016fd72419f4e80e.png | Bin 257324 -> 0 bytes .../images/jetpack-5e94ec9a207b87fe38d7.svg | 4 - .../images/jetpack-9de1caef5eb5c22da5d6.svg | 23 - .../jetpack-ai-d29bf65dcea46074d72f.png | Bin 145451 -> 0 bytes .../jetpack-gray-7eeb5eb060c8adea8622.svg | 23 - ...ivation-with-lock-cef570e11997f185e23d.png | Bin 125665 -> 0 bytes ...tion-with-success-c5c132e713a79e05985f.png | Bin 125102 -> 0 bytes .../jetpack-manage-3a7ecaa604823c98c3cf.svg | 10 - .../images/search-d177a31292d96d5ccbc2.png | Bin 93081 -> 0 bytes .../images/security-53b7f3ddc8dcbe17b0c1.png | Bin 499240 -> 0 bytes .../shield-inactive-cba3b43d918377b506e5.svg | 3 - .../shield-off-47426e7b562ef20ae513.svg | 5 - .../shield-partial-48b279219c6389a129b9.svg | 4 - .../shield-success-e64a26c3a6d0888fba06.svg | 4 - .../site-cards-29522f090d5422fd7afd.png | Bin 179712 -> 0 bytes .../images/stats-95b42796ede4f632b642.png | Bin 283845 -> 0 bytes .../videopress-9c064bc7b89c386e5e50.png | Bin 226267 -> 0 bytes .../images/wordpress-1fc3e0ba6c52e9707900.svg | 1 - .../jetpack-my-jetpack/build/index.asset.php | 1 - .../jetpack-my-jetpack/build/index.css | 1 - .../jetpack-my-jetpack/build/index.js | 186 - .../build/index.js.LICENSE.txt | 50 - .../jetpack-my-jetpack/build/index.rtl.css | 1 - .../jetpack-my-jetpack/composer.json | 91 - .../automattic/jetpack-my-jetpack/global.d.ts | 725 -- .../src/class-activitylog.php | 57 - .../src/class-historically-active-modules.php | 112 - .../src/class-initializer.php | 698 -- .../src/class-jetpack-manage.php | 172 - .../jetpack-my-jetpack/src/class-products.php | 465 -- .../src/class-red-bubble-notifications.php | 399 - .../jetpack-my-jetpack/src/class-rest-ai.php | 90 - .../src/class-rest-products.php | 362 - .../src/class-rest-purchases.php | 77 - .../class-rest-recommendations-evaluation.php | 150 - .../src/class-rest-zendesk-chat.php | 122 - .../src/class-wpcom-products.php | 405 - .../src/products/class-anti-spam.php | 194 - .../src/products/class-backup.php | 455 -- .../src/products/class-boost.php | 418 - .../src/products/class-complete.php | 271 - .../src/products/class-creator.php | 356 - .../src/products/class-crm.php | 205 - .../src/products/class-extras.php | 140 - .../src/products/class-growth.php | 223 - .../src/products/class-hybrid-product.php | 153 - .../src/products/class-jetpack-ai.php | 656 -- .../src/products/class-module-product.php | 164 - .../src/products/class-newsletter.php | 186 - .../src/products/class-product.php | 1094 --- .../src/products/class-protect.php | 443 -- .../src/products/class-related-posts.php | 186 - .../src/products/class-scan.php | 217 - .../src/products/class-search-stats.php | 192 - .../src/products/class-search.php | 374 - .../src/products/class-security.php | 229 - .../src/products/class-site-accelerator.php | 186 - .../src/products/class-social.php | 235 - .../src/products/class-starter.php | 216 - .../src/products/class-stats.php | 334 - .../src/products/class-videopress.php | 315 - .../jetpack-password-checker/CHANGELOG.md | 193 - .../jetpack-password-checker/LICENSE.txt | 357 - .../jetpack-password-checker/SECURITY.md | 47 - .../jetpack-password-checker/composer.json | 52 - .../src/class-password-checker.php | 1313 ---- .../jetpack-plugins-installer/CHANGELOG.md | 151 - .../jetpack-plugins-installer/LICENSE.txt | 357 - .../jetpack-plugins-installer/SECURITY.md | 47 - .../jetpack-plugins-installer/composer.json | 48 - .../src/class-automatic-install-skin.php | 157 - .../src/class-plugins-installer.php | 255 - .../jetpack-protect-models/CHANGELOG.md | 74 - .../jetpack-protect-models/LICENSE.txt | 357 - .../jetpack-protect-models/SECURITY.md | 47 - .../jetpack-protect-models/composer.json | 58 - .../src/class-extension-model.php | 116 - .../src/class-history-model.php | 144 - .../src/class-protect-models.php | 16 - .../src/class-status-model.php | 174 - .../src/class-threat-model.php | 265 - .../src/class-vulnerability-model.php | 94 - .../jetpack-protect-status/CHANGELOG.md | 133 - .../jetpack-protect-status/LICENSE.txt | 357 - .../jetpack-protect-status/SECURITY.md | 47 - .../jetpack-protect-status/composer.json | 62 - .../jetpack-protect-status/src/class-plan.php | 111 - .../src/class-protect-status.php | 340 - .../src/class-rest-controller.php | 112 - .../src/class-scan-status.php | 343 - .../src/class-status.php | 300 - .../automattic/jetpack-redirect/CHANGELOG.md | 292 - .../automattic/jetpack-redirect/LICENSE.txt | 357 - .../automattic/jetpack-redirect/SECURITY.md | 47 - .../automattic/jetpack-redirect/composer.json | 47 - .../jetpack-redirect/src/class-redirect.php | 79 - .../automattic/jetpack-roles/CHANGELOG.md | 245 - .../automattic/jetpack-roles/LICENSE.txt | 357 - .../automattic/jetpack-roles/SECURITY.md | 47 - .../automattic/jetpack-roles/composer.json | 46 - .../jetpack-roles/src/class-roles.php | 81 - .../automattic/jetpack-status/CHANGELOG.md | 555 -- .../automattic/jetpack-status/LICENSE.txt | 357 - .../automattic/jetpack-status/SECURITY.md | 47 - .../automattic/jetpack-status/composer.json | 56 - .../jetpack-status/src/class-cache.php | 54 - .../jetpack-status/src/class-cookiestate.php | 103 - .../jetpack-status/src/class-errors.php | 49 - .../jetpack-status/src/class-files.php | 54 - .../jetpack-status/src/class-host.php | 304 - .../jetpack-status/src/class-modules.php | 609 -- .../jetpack-status/src/class-paths.php | 81 - .../jetpack-status/src/class-status.php | 434 -- .../jetpack-status/src/class-visitor.php | 56 - .../automattic/jetpack-sync/CHANGELOG.md | 1706 ---- .../automattic/jetpack-sync/LICENSE.txt | 357 - .../automattic/jetpack-sync/SECURITY.md | 47 - .../automattic/jetpack-sync/composer.json | 69 - .../jetpack-sync/src/class-actions.php | 1200 --- .../jetpack-sync/src/class-data-settings.php | 421 - .../src/class-dedicated-sender.php | 408 - .../src/class-default-filter-settings.php | 80 - .../jetpack-sync/src/class-defaults.php | 1377 ---- .../jetpack-sync/src/class-functions.php | 740 -- .../jetpack-sync/src/class-health.php | 188 - .../src/class-json-deflate-array-codec.php | 96 - .../jetpack-sync/src/class-listener.php | 485 -- .../jetpack-sync/src/class-lock.php | 77 - .../jetpack-sync/src/class-main.php | 159 - .../jetpack-sync/src/class-modules.php | 165 - .../src/class-package-version.php | 30 - .../jetpack-sync/src/class-queue-buffer.php | 78 - .../jetpack-sync/src/class-queue.php | 678 -- .../jetpack-sync/src/class-replicastore.php | 1425 ---- .../jetpack-sync/src/class-rest-endpoints.php | 888 --- .../jetpack-sync/src/class-rest-sender.php | 144 - .../jetpack-sync/src/class-sender.php | 1034 --- .../jetpack-sync/src/class-server.php | 195 - .../jetpack-sync/src/class-settings.php | 735 -- .../jetpack-sync/src/class-simple-codec.php | 62 - .../jetpack-sync/src/class-users.php | 152 - .../jetpack-sync/src/class-utils.php | 65 - .../jetpack-sync/src/interface-codec.php | 44 - .../src/interface-replicastore.php | 567 -- .../src/modules/class-attachments.php | 98 - .../src/modules/class-callables.php | 666 -- .../src/modules/class-comments.php | 594 -- .../src/modules/class-constants.php | 345 - .../modules/class-full-sync-immediately.php | 477 -- .../src/modules/class-full-sync.php | 731 -- .../jetpack-sync/src/modules/class-import.php | 220 - .../jetpack-sync/src/modules/class-menus.php | 146 - .../jetpack-sync/src/modules/class-meta.php | 192 - .../jetpack-sync/src/modules/class-module.php | 779 -- .../src/modules/class-network-options.php | 251 - .../src/modules/class-options.php | 480 -- .../src/modules/class-plugins.php | 407 - .../jetpack-sync/src/modules/class-posts.php | 922 --- .../src/modules/class-protect.php | 83 - .../jetpack-sync/src/modules/class-search.php | 1879 ----- .../jetpack-sync/src/modules/class-stats.php | 68 - .../src/modules/class-term-relationships.php | 280 - .../jetpack-sync/src/modules/class-terms.php | 482 -- .../jetpack-sync/src/modules/class-themes.php | 874 --- .../src/modules/class-updates.php | 587 -- .../jetpack-sync/src/modules/class-users.php | 948 --- .../modules/class-woocommerce-hpos-orders.php | 568 -- .../src/modules/class-woocommerce.php | 747 -- .../src/modules/class-wp-super-cache.php | 156 - .../class-table-checksum-usermeta.php | 209 - .../class-table-checksum-users.php | 185 - .../src/replicastore/class-table-checksum.php | 979 --- .../class-queue-storage-options.php | 291 - .../sync-queue/class-queue-storage-table.php | 691 -- .../jetpack-transport-helper/CHANGELOG.md | 107 - .../jetpack-transport-helper/LICENSE.txt | 357 - .../jetpack-transport-helper/SECURITY.md | 47 - .../jetpack-transport-helper/actions.php | 32 - .../jetpack-transport-helper/composer.json | 62 - .../src/class-package-version-compat.php | 25 - .../src/class-package-version.php | 41 - .../src/class-rest-controller.php | 152 - .../automattic/jetpack-waf/CHANGELOG.md | 534 -- .../automattic/jetpack-waf/LICENSE.txt | 357 - .../automattic/jetpack-waf/SECURITY.md | 47 - .../automattic/jetpack-waf/cli.php | 13 - .../automattic/jetpack-waf/composer.json | 63 - .../class-blocked-login-page.php | 779 -- .../class-math-fallback.php | 179 - .../class-shared-functions.php | 250 - .../class-transient-cleanup.php | 63 - .../src/class-brute-force-protection.php | 1175 --- .../jetpack-waf/src/class-compatibility.php | 328 - .../jetpack-waf/src/class-rest-controller.php | 212 - .../src/class-waf-blocklog-manager.php | 441 -- .../jetpack-waf/src/class-waf-cli.php | 167 - .../jetpack-waf/src/class-waf-constants.php | 127 - .../jetpack-waf/src/class-waf-initializer.php | 240 - .../jetpack-waf/src/class-waf-operators.php | 286 - .../jetpack-waf/src/class-waf-request.php | 413 - .../src/class-waf-rules-manager.php | 362 - .../jetpack-waf/src/class-waf-runner.php | 436 -- .../jetpack-waf/src/class-waf-runtime.php | 767 -- .../src/class-waf-standalone-bootstrap.php | 184 - .../jetpack-waf/src/class-waf-stats.php | 180 - .../jetpack-waf/src/class-waf-transforms.php | 403 - .../class-file-system-exception.php | 23 - .../exceptions/class-rules-api-exception.php | 23 - .../src/exceptions/class-waf-exception.php | 35 - .../automattic/jetpack-waf/src/functions.php | 120 - .../jetpack_vendor/i18n-map.php | 80 - .../plugins/jetpack-protect/readme.txt | 193 - .../jetpack-protect/src/class-credentials.php | 55 - .../src/class-jetpack-protect.php | 447 -- .../jetpack-protect/src/class-onboarding.php | 80 - .../src/class-rest-controller.php | 431 -- .../src/class-scan-history.php | 358 - .../jetpack-protect/src/class-site-health.php | 113 - .../jetpack-protect/src/class-threats.php | 222 - .../jetpack-protect/vendor/autoload.php | 25 - .../vendor/autoload_packages.php | 13 - .../automattic/jetpack-plans/CHANGELOG.md | 244 - .../automattic/jetpack-plans/LICENSE.txt | 357 - .../automattic/jetpack-plans/SECURITY.md | 47 - .../automattic/jetpack-plans/composer.json | 55 - .../jetpack-plans/src/class-current-plan.php | 436 -- .../jetpack-plans/src/class-plans.php | 111 - .../vendor/composer/ClassLoader.php | 579 -- .../vendor/composer/InstalledVersions.php | 359 - .../jetpack-protect/vendor/composer/LICENSE | 21 - .../vendor/composer/autoload_classmap.php | 253 - .../vendor/composer/autoload_files.php | 13 - .../vendor/composer/autoload_namespaces.php | 9 - .../vendor/composer/autoload_psr4.php | 10 - .../vendor/composer/autoload_real.php | 51 - .../vendor/composer/autoload_static.php | 286 - .../vendor/composer/installed.json | 1852 ----- .../vendor/composer/installed.php | 293 - .../composer/jetpack_autoload_classmap.php | 1037 --- .../composer/jetpack_autoload_filemap.php | 25 - .../vendor/composer/platform_check.php | 26 - .../class-autoloader-handler.php | 147 - .../class-autoloader-locator.php | 90 - .../jetpack-autoloader/class-autoloader.php | 93 - .../jetpack-autoloader/class-container.php | 150 - .../jetpack-autoloader/class-hook-manager.php | 76 - .../class-latest-autoloader-guard.php | 165 - .../class-manifest-reader.php | 99 - .../class-path-processor.php | 194 - .../class-php-autoloader.php | 105 - .../class-plugin-locator.php | 153 - .../class-plugins-handler.php | 164 - .../class-shutdown-handler.php | 92 - .../class-version-loader.php | 184 - .../class-version-selector.php | 69 - .../vendor/wikimedia/aho-corasick/LICENSE | 202 - .../vendor/wikimedia/aho-corasick/NOTICE | 2 - .../wikimedia/aho-corasick/bench/bench.php | 75 - .../wikimedia/aho-corasick/bench/check.php | 42 - .../aho-corasick/src/MultiStringMatcher.php | 230 - .../aho-corasick/src/MultiStringReplacer.php | 96 - .../plugins/menu-icons/CHANGELOG.md | 167 - .../plugins/menu-icons/LICENSE | 339 - .../plugins/menu-icons/css/admin.css | 246 - .../plugins/menu-icons/css/admin.min.css | 1 - .../menu-icons/css/dashboard-notice.css | 45 - .../menu-icons/css/dashboard-notice.min.css | 1 - .../plugins/menu-icons/css/extra.css | 74 - .../plugins/menu-icons/css/extra.min.css | 1 - .../menu-icons/css/fontawesome/LICENSE.txt | 34 - .../css/fontawesome/css/all.min.css | 6 - .../fontawesome/webfonts/fa-brands-400.ttf | Bin 181264 -> 0 bytes .../fontawesome/webfonts/fa-brands-400.woff2 | Bin 105112 -> 0 bytes .../fontawesome/webfonts/fa-regular-400.ttf | Bin 60236 -> 0 bytes .../fontawesome/webfonts/fa-regular-400.woff2 | Bin 24028 -> 0 bytes .../css/fontawesome/webfonts/fa-solid-900.ttf | Bin 389948 -> 0 bytes .../fontawesome/webfonts/fa-solid-900.woff2 | Bin 154840 -> 0 bytes .../webfonts/fa-v4compatibility.ttf | Bin 10084 -> 0 bytes .../webfonts/fa-v4compatibility.woff2 | Bin 4776 -> 0 bytes .../plugins/menu-icons/images/neve-theme.jpg | Bin 11840 -> 0 bytes .../plugins/menu-icons/images/otter-block.png | Bin 4779 -> 0 bytes .../plugins/menu-icons/includes/front.php | 516 -- .../menu-icons/includes/library/compat.php | 23 - .../backward-compatible-icons.php | 484 -- .../library/font-awesome/font-awesome.php | 122 - .../includes/library/form-fields.php | 575 -- .../menu-icons/includes/library/functions.php | 111 - .../menu-icons/includes/media-template.php | 127 - .../plugins/menu-icons/includes/meta.php | 169 - .../plugins/menu-icons/includes/picker.php | 305 - .../plugins/menu-icons/includes/settings.php | 793 -- .../menu-icons/includes/type-fonts.php | 24 - .../plugins/menu-icons/includes/type.php | 107 - .../plugins/menu-icons/js/admin.js | 655 -- .../plugins/menu-icons/js/admin.min.js | 1 - .../plugins/menu-icons/js/src/index.js | 2 - .../plugins/menu-icons/js/src/media/index.js | 9 - .../js/src/media/models/item-setting-field.js | 16 - .../js/src/media/models/item-settings.js | 11 - .../menu-icons/js/src/media/models/item.js | 27 - .../menu-icons/js/src/media/views/frame.js | 46 - .../js/src/media/views/item-preview.js | 51 - .../js/src/media/views/item-setting-field.js | 38 - .../js/src/media/views/item-settings.js | 30 - .../menu-icons/js/src/media/views/sidebar.js | 101 - .../plugins/menu-icons/js/src/picker.js | 190 - .../plugins/menu-icons/js/src/settings.js | 60 - .../menu-icons/languages/menu-icons.pot | 4066 ---------- .../plugins/menu-icons/mailin.php | 867 --- .../plugins/menu-icons/menu-icons.php | 272 - .../plugins/menu-icons/readme.md | 389 - .../plugins/menu-icons/readme.txt | 575 -- .../plugins/menu-icons/vendor/autoload.php | 22 - .../gutenberg-menu-icons/CHANGELOG.md | 23 - .../codeinwp/gutenberg-menu-icons/LICENSE | 674 -- .../codeinwp/gutenberg-menu-icons/README.md | 24 - .../assets/css/font-awesome.min.css | 8 - .../build/frontend.asset.php | 1 - .../gutenberg-menu-icons/build/frontend.js | 1 - .../build/index.asset.php | 1 - .../gutenberg-menu-icons/build/index.css | 1 - .../gutenberg-menu-icons/build/index.js | 1 - .../build/style-frontend.css | 1 - .../class-gutenberg-menu-icons.php | 169 - .../codeinwp/gutenberg-menu-icons/load.php | 23 - .../vendor/codeinwp/icon-picker/LICENSE | 339 - .../codeinwp/icon-picker/css/icon-picker.css | 79 - .../icon-picker/css/icon-picker.min.css | 1 - .../icon-picker/css/types/Elusive-Icons.eot | Bin 61828 -> 0 bytes .../icon-picker/css/types/Elusive-Icons.svg | 309 - .../icon-picker/css/types/Elusive-Icons.ttf | Bin 61640 -> 0 bytes .../icon-picker/css/types/Elusive-Icons.woff | Bin 61716 -> 0 bytes .../icon-picker/css/types/Genericons.eot | Bin 22374 -> 0 bytes .../icon-picker/css/types/Genericons.svg | 537 -- .../icon-picker/css/types/Genericons.ttf | Bin 22188 -> 0 bytes .../icon-picker/css/types/Genericons.woff | Bin 13988 -> 0 bytes .../icon-picker/css/types/elusive.css | 922 --- .../icon-picker/css/types/elusive.min.css | 1 - .../icon-picker/css/types/font-awesome.css | 2337 ------ .../css/types/font-awesome.min.css | 4 - .../css/types/fontawesome-webfont.eot | Bin 165742 -> 0 bytes .../css/types/fontawesome-webfont.svg | 2671 ------- .../css/types/fontawesome-webfont.ttf | Bin 165548 -> 0 bytes .../css/types/fontawesome-webfont.woff | Bin 98024 -> 0 bytes .../css/types/fontawesome-webfont.woff2 | Bin 77160 -> 0 bytes .../css/types/foundation-icons.css | 594 -- .../css/types/foundation-icons.eot | Bin 54568 -> 0 bytes .../css/types/foundation-icons.min.css | 1 - .../css/types/foundation-icons.svg | 970 --- .../css/types/foundation-icons.ttf | Bin 56976 -> 0 bytes .../css/types/foundation-icons.woff | Bin 32020 -> 0 bytes .../icon-picker/css/types/genericons.css | 262 - .../icon-picker/css/types/genericons.min.css | 1 - .../codeinwp/icon-picker/icon-picker.php | 342 - .../icon-picker/includes/fields/base.php | 104 - .../icon-picker/includes/fields/cmb.php | 48 - .../icon-picker/includes/fontpack.php | 285 - .../codeinwp/icon-picker/includes/loader.php | 335 - .../icon-picker/includes/registry.php | 178 - .../icon-picker/includes/types/base.php | 152 - .../icon-picker/includes/types/dashicons.php | 1229 --- .../icon-picker/includes/types/elusive.php | 1554 ---- .../icon-picker/includes/types/fa.php | 3676 --------- .../icon-picker/includes/types/font.php | 205 - .../icon-picker/includes/types/fontello.php | 55 - .../includes/types/foundation-icons.php | 1518 ---- .../icon-picker/includes/types/genericon.php | 856 --- .../icon-picker/includes/types/image.php | 126 - .../icon-picker/includes/types/svg.php | 228 - .../codeinwp/icon-picker/js/icon-picker.js | 1008 --- .../icon-picker/js/icon-picker.min.js | 1 - .../icon-picker/languages/icon-picker.pot | 3460 --------- .../vendor/codeinwp/icon-picker/readme.txt | 71 - .../codeinwp/menu-item-custom-fields/LICENSE | 339 - .../doc/menu-item-custom-fields-example.php | 138 - .../menu-item-custom-fields.php | 61 - .../menu-item-custom-fields/readme.txt | 60 - .../walker-nav-menu-edit.php | 81 - .../codeinwp/themeisle-sdk/CHANGELOG.md | 565 -- .../vendor/codeinwp/themeisle-sdk/LICENSE | 674 -- .../themeisle-sdk/assets/css/banner.css | 54 - .../themeisle-sdk/assets/images/animation.jpg | Bin 4818 -> 0 bytes .../assets/images/conditions.jpg | Bin 20394 -> 0 bytes .../themeisle-sdk/assets/images/css.jpg | Bin 8893 -> 0 bytes .../themeisle-sdk/assets/images/neve.png | Bin 1647 -> 0 bytes .../assets/images/optimole-logo.svg | 31 - .../assets/images/otter/otter-builder.png | Bin 27039 -> 0 bytes .../assets/images/otter/otter-library.png | Bin 177336 -> 0 bytes .../assets/images/otter/otter-patterns.png | Bin 89598 -> 0 bytes .../themeisle-sdk/assets/images/sparks.png | Bin 2688 -> 0 bytes .../themeisle-sdk/assets/images/team.jpg | Bin 145883 -> 0 bytes .../assets/images/themeisle-logo.png | Bin 9671 -> 0 bytes .../themeisle-sdk/assets/images/wplk.png | Bin 1968 -> 0 bytes .../assets/js/build/about/about.asset.php | 1 - .../assets/js/build/about/about.css | 1 - .../assets/js/build/about/about.js | 1 - .../assets/js/build/banner/banner.asset.php | 1 - .../assets/js/build/banner/banner.js | 1 - .../js/build/float_widget/float.asset.php | 1 - .../assets/js/build/float_widget/float.css | 1 - .../assets/js/build/float_widget/float.js | 1 - .../assets/js/build/promos/index.asset.php | 1 - .../assets/js/build/promos/index.js | 1 - .../assets/js/build/promos/style-index.css | 1 - .../js/build/survey/survey_deps.asset.php | 1 - .../assets/js/build/survey/survey_deps.js | 1 - .../js/build/tracking/tracking.asset.php | 1 - .../assets/js/build/tracking/tracking.js | 1 - .../vendor/codeinwp/themeisle-sdk/index.php | 3 - .../vendor/codeinwp/themeisle-sdk/load.php | 284 - .../src/Common/Abstract_module.php | 223 - .../src/Common/Module_factory.php | 108 - .../codeinwp/themeisle-sdk/src/Loader.php | 413 - .../themeisle-sdk/src/Modules/About_us.php | 443 -- .../src/Modules/Announcements.php | 497 -- .../src/Modules/Compatibilities.php | 235 - .../src/Modules/Dashboard_widget.php | 506 -- .../src/Modules/Featured_plugins.php | 165 - .../src/Modules/Float_widget.php | 274 - .../themeisle-sdk/src/Modules/Licenser.php | 1193 --- .../themeisle-sdk/src/Modules/Logger.php | 280 - .../src/Modules/Notification.php | 515 -- .../themeisle-sdk/src/Modules/Promotions.php | 1409 ---- .../src/Modules/Recommendation.php | 334 - .../themeisle-sdk/src/Modules/Review.php | 112 - .../themeisle-sdk/src/Modules/Rollback.php | 417 - .../src/Modules/Script_loader.php | 282 - .../themeisle-sdk/src/Modules/Translate.php | 918 --- .../src/Modules/Translations.php | 247 - .../src/Modules/Uninstall_feedback.php | 838 -- .../themeisle-sdk/src/Modules/Welcome.php | 194 - .../codeinwp/themeisle-sdk/src/Product.php | 471 -- .../vendor/codeinwp/themeisle-sdk/start.php | 57 - .../vendor/composer/ClassLoader.php | 579 -- .../vendor/composer/InstalledVersions.php | 396 - .../menu-icons/vendor/composer/LICENSE | 21 - .../vendor/composer/autoload_classmap.php | 21 - .../vendor/composer/autoload_files.php | 13 - .../vendor/composer/autoload_namespaces.php | 9 - .../vendor/composer/autoload_psr4.php | 10 - .../vendor/composer/autoload_real.php | 50 - .../vendor/composer/autoload_static.php | 54 - .../menu-icons/vendor/composer/installed.json | 229 - .../menu-icons/vendor/composer/installed.php | 76 - .../vendor/composer/platform_check.php | 26 - .../vendor/enshrined/svg-sanitize/LICENSE | 340 - .../vendor/enshrined/svg-sanitize/README.md | 93 - .../src/ElementReference/Resolver.php | 169 - .../src/ElementReference/Subject.php | 153 - .../src/ElementReference/Usage.php | 49 - .../src/Exceptions/NestingException.php | 36 - .../enshrined/svg-sanitize/src/Helper.php | 53 - .../enshrined/svg-sanitize/src/Sanitizer.php | 701 -- .../src/data/AllowedAttributes.php | 356 - .../svg-sanitize/src/data/AllowedTags.php | 99 - .../src/data/AttributeInterface.php | 18 - .../svg-sanitize/src/data/TagInterface.php | 19 - .../enshrined/svg-sanitize/src/data/XPath.php | 64 - .../svg-sanitize/src/svg-scanner.php | 192 - .../replace-namespace.sh | 22 - .../src/Validator.php | 169 - .../dist/simple-local-avatars.asset.php | 1 - .../dist/simple-local-avatars.js | 1 - .../includes/class-simple-local-avatars.php | 1726 ----- .../plugins/simple-local-avatars/readme.txt | 158 - .../simple-local-avatars.php | 88 - .../simple-local-avatars/vendor/autoload.php | 25 - .../vendor/composer/ClassLoader.php | 579 -- .../vendor/composer/InstalledVersions.php | 359 - .../vendor/composer/LICENSE | 21 - .../vendor/composer/autoload_classmap.php | 10 - .../vendor/composer/autoload_namespaces.php | 9 - .../vendor/composer/autoload_psr4.php | 11 - .../vendor/composer/autoload_real.php | 38 - .../vendor/composer/autoload_static.php | 44 - .../vendor/composer/installed.json | 194 - .../vendor/composer/installed.php | 43 - .../workflows/continuous-integration.yml | 65 - .../installers/.github/workflows/lint.yml | 33 - .../installers/.github/workflows/phpstan.yml | 52 - .../vendor/composer/installers/LICENSE | 19 - .../vendor/composer/installers/composer.json | 117 - .../src/Composer/Installers/AglInstaller.php | 29 - .../Installers/AkauntingInstaller.php | 23 - .../Installers/AnnotateCmsInstaller.php | 13 - .../Composer/Installers/AsgardInstaller.php | 58 - .../Composer/Installers/AttogramInstaller.php | 11 - .../src/Composer/Installers/BaseInstaller.php | 137 - .../Composer/Installers/BitrixInstaller.php | 123 - .../Composer/Installers/BonefishInstaller.php | 11 - .../Composer/Installers/BotbleInstaller.php | 12 - .../Composer/Installers/CakePHPInstaller.php | 67 - .../src/Composer/Installers/ChefInstaller.php | 12 - .../Composer/Installers/CiviCrmInstaller.php | 11 - .../Installers/ClanCatsFrameworkInstaller.php | 12 - .../Composer/Installers/CockpitInstaller.php | 36 - .../Installers/CodeIgniterInstaller.php | 13 - .../Installers/Concrete5Installer.php | 15 - .../Installers/ConcreteCMSInstaller.php | 15 - .../Composer/Installers/CroogoInstaller.php | 23 - .../Composer/Installers/DecibelInstaller.php | 12 - .../Composer/Installers/DframeInstaller.php | 11 - .../Composer/Installers/DokuWikiInstaller.php | 57 - .../Composer/Installers/DolibarrInstaller.php | 18 - .../Composer/Installers/DrupalInstaller.php | 25 - .../src/Composer/Installers/ElggInstaller.php | 11 - .../Composer/Installers/EliasisInstaller.php | 14 - .../Installers/ExpressionEngineInstaller.php | 31 - .../Installers/EzPlatformInstaller.php | 12 - .../Composer/Installers/ForkCMSInstaller.php | 58 - .../src/Composer/Installers/FuelInstaller.php | 13 - .../Composer/Installers/FuelphpInstaller.php | 11 - .../src/Composer/Installers/GravInstaller.php | 29 - .../Composer/Installers/HuradInstaller.php | 27 - .../Composer/Installers/ImageCMSInstaller.php | 13 - .../src/Composer/Installers/Installer.php | 288 - .../src/Composer/Installers/ItopInstaller.php | 11 - .../Composer/Installers/KanboardInstaller.php | 20 - .../Composer/Installers/KnownInstaller.php | 13 - .../Composer/Installers/KodiCMSInstaller.php | 12 - .../Composer/Installers/KohanaInstaller.php | 11 - .../LanManagementSystemInstaller.php | 27 - .../Composer/Installers/LaravelInstaller.php | 11 - .../Composer/Installers/LavaLiteInstaller.php | 12 - .../Composer/Installers/LithiumInstaller.php | 12 - .../Installers/MODULEWorkInstaller.php | 11 - .../Composer/Installers/MODXEvoInstaller.php | 18 - .../Composer/Installers/MagentoInstaller.php | 13 - .../Composer/Installers/MajimaInstaller.php | 46 - .../src/Composer/Installers/MakoInstaller.php | 11 - .../Composer/Installers/MantisBTInstaller.php | 25 - .../Composer/Installers/MatomoInstaller.php | 28 - .../Composer/Installers/MauticInstaller.php | 43 - .../src/Composer/Installers/MayaInstaller.php | 38 - .../Installers/MediaWikiInstaller.php | 58 - .../Composer/Installers/MiaoxingInstaller.php | 11 - .../Installers/MicroweberInstaller.php | 145 - .../src/Composer/Installers/ModxInstaller.php | 14 - .../Composer/Installers/MoodleInstaller.php | 73 - .../Composer/Installers/OctoberInstaller.php | 57 - .../Composer/Installers/OntoWikiInstaller.php | 26 - .../Composer/Installers/OsclassInstaller.php | 14 - .../src/Composer/Installers/OxidInstaller.php | 49 - .../src/Composer/Installers/PPIInstaller.php | 11 - .../Composer/Installers/PantheonInstaller.php | 12 - .../Composer/Installers/PhiftyInstaller.php | 13 - .../Composer/Installers/PhpBBInstaller.php | 13 - .../Composer/Installers/PiwikInstaller.php | 28 - .../Installers/PlentymarketsInstaller.php | 28 - .../src/Composer/Installers/Plugin.php | 28 - .../Composer/Installers/PortoInstaller.php | 11 - .../Installers/PrestashopInstaller.php | 12 - .../Installers/ProcessWireInstaller.php | 23 - .../Composer/Installers/PuppetInstaller.php | 12 - .../Composer/Installers/PxcmsInstaller.php | 62 - .../Composer/Installers/RadPHPInstaller.php | 26 - .../Composer/Installers/ReIndexInstaller.php | 12 - .../Composer/Installers/Redaxo5Installer.php | 12 - .../Composer/Installers/RedaxoInstaller.php | 12 - .../Installers/RoundcubeInstaller.php | 21 - .../src/Composer/Installers/SMFInstaller.php | 12 - .../Composer/Installers/ShopwareInstaller.php | 66 - .../Installers/SilverStripeInstaller.php | 33 - .../Installers/SiteDirectInstaller.php | 34 - .../Composer/Installers/StarbugInstaller.php | 14 - .../Composer/Installers/SyDESInstaller.php | 55 - .../Composer/Installers/SyliusInstaller.php | 11 - .../src/Composer/Installers/TaoInstaller.php | 32 - .../Installers/TastyIgniterInstaller.php | 85 - .../Composer/Installers/TheliaInstaller.php | 14 - .../src/Composer/Installers/TuskInstaller.php | 17 - .../Installers/UserFrostingInstaller.php | 11 - .../Composer/Installers/VanillaInstaller.php | 12 - .../Composer/Installers/VgmcpInstaller.php | 59 - .../Composer/Installers/WHMCSInstaller.php | 22 - .../Composer/Installers/WinterInstaller.php | 71 - .../Composer/Installers/WolfCMSInstaller.php | 11 - .../Installers/WordPressInstaller.php | 14 - .../Composer/Installers/YawikInstaller.php | 23 - .../src/Composer/Installers/ZendInstaller.php | 13 - .../Composer/Installers/ZikulaInstaller.php | 12 - .../composer/installers/src/bootstrap.php | 18 - .../vendor/composer/platform_check.php | 26 - .../images/smtp-mailer-email-logger.png | Bin 3248 -> 0 bytes .../addons/images/smtp-mailer-reply-to.png | Bin 3613 -> 0 bytes .../smtp-mailer/addons/smtp-mailer-addons.css | 34 - .../smtp-mailer/addons/smtp-mailer-addons.php | 49 - .../smtp-mailer/languages/smtp-mailer.mo | Bin 396 -> 0 bytes .../smtp-mailer/languages/smtp-mailer.pot | 176 - .../plugins/smtp-mailer/main.php | 971 --- .../plugins/smtp-mailer/readme.txt | 160 - .../plugins/two-factor/LICENSE.md | 280 - .../two-factor/assets/banner-1544x500.png | Bin 4859 -> 0 bytes .../two-factor/assets/banner-772x250.png | Bin 2255 -> 0 bytes .../two-factor/assets/icon-128x128.png | Bin 1225 -> 0 bytes .../two-factor/assets/icon-256x256.png | Bin 2350 -> 0 bytes .../plugins/two-factor/assets/icon.svg | 6 - .../two-factor/assets/screenshot-1.png | Bin 155635 -> 0 bytes .../two-factor/assets/screenshot-2.png | Bin 150589 -> 0 bytes .../two-factor/assets/screenshot-3.png | Bin 42368 -> 0 bytes .../two-factor/class-two-factor-compat.php | 55 - .../two-factor/class-two-factor-core.php | 2193 ------ .../two-factor/includes/Google/u2f-api.js | 748 -- .../two-factor/includes/Yubico/U2F.php | 507 -- .../includes/function.login-footer.php | 87 - .../includes/function.login-header.php | 259 - .../includes/qrcode-generator/qrcode.js | 2297 ------ .../class-two-factor-backup-codes.php | 438 -- .../providers/class-two-factor-dummy.php | 85 - .../providers/class-two-factor-email.php | 396 - ...s-two-factor-fido-u2f-admin-list-table.php | 160 - .../class-two-factor-fido-u2f-admin.php | 363 - .../providers/class-two-factor-fido-u2f.php | 404 - .../providers/class-two-factor-provider.php | 201 - .../providers/class-two-factor-totp.php | 801 -- .../providers/css/fido-u2f-admin.css | 12 - .../js/fido-u2f-admin-inline-edit.js | 150 - .../two-factor/providers/js/fido-u2f-admin.js | 48 - .../two-factor/providers/js/fido-u2f-login.js | 16 - .../plugins/two-factor/readme.txt | 55 - .../plugins/two-factor/two-factor.php | 55 - .../plugins/two-factor/user-edit.css | 9 - .../plugins/wp-piwik/.gitignore | 2 - .../plugins/wp-piwik/LICENSE | 675 -- .../plugins/wp-piwik/README.md | 9 - .../plugins/wp-piwik/bitcoin.png | Bin 2020 -> 0 bytes .../plugins/wp-piwik/classes/WP_Piwik.php | 1360 ---- .../wp-piwik/classes/WP_Piwik/Admin.php | 24 - .../classes/WP_Piwik/Admin/Network.php | 19 - .../classes/WP_Piwik/Admin/Settings.php | 816 -- .../classes/WP_Piwik/Admin/Sitebrowser.php | 112 - .../classes/WP_Piwik/Admin/Statistics.php | 47 - .../wp-piwik/classes/WP_Piwik/Logger.php | 47 - .../classes/WP_Piwik/Logger/Dummy.php | 9 - .../wp-piwik/classes/WP_Piwik/Logger/File.php | 48 - .../classes/WP_Piwik/Logger/Screen.php | 27 - .../wp-piwik/classes/WP_Piwik/Request.php | 95 - .../wp-piwik/classes/WP_Piwik/Request/Php.php | 64 - .../classes/WP_Piwik/Request/Rest.php | 81 - .../wp-piwik/classes/WP_Piwik/Settings.php | 427 - .../wp-piwik/classes/WP_Piwik/Shortcode.php | 28 - .../wp-piwik/classes/WP_Piwik/Template.php | 31 - .../WP_Piwik/Template/MetaBoxCustomVars.php | 63 - .../classes/WP_Piwik/TrackingCode.php | 167 - .../wp-piwik/classes/WP_Piwik/Widget.php | 435 -- .../WP_Piwik/Widget/BrowserDetails.php | 70 - .../classes/WP_Piwik/Widget/Browsers.php | 73 - .../classes/WP_Piwik/Widget/Chart.php | 88 - .../wp-piwik/classes/WP_Piwik/Widget/City.php | 73 - .../classes/WP_Piwik/Widget/Country.php | 73 - .../classes/WP_Piwik/Widget/Ecommerce.php | 51 - .../classes/WP_Piwik/Widget/Items.php | 52 - .../classes/WP_Piwik/Widget/ItemsCategory.php | 52 - .../classes/WP_Piwik/Widget/Keywords.php | 21 - .../classes/WP_Piwik/Widget/Models.php | 73 - .../classes/WP_Piwik/Widget/Noresult.php | 38 - .../classes/WP_Piwik/Widget/OptOut.php | 38 - .../classes/WP_Piwik/Widget/Overview.php | 66 - .../classes/WP_Piwik/Widget/Pages.php | 21 - .../classes/WP_Piwik/Widget/Plugins.php | 38 - .../wp-piwik/classes/WP_Piwik/Widget/Post.php | 82 - .../classes/WP_Piwik/Widget/Referrers.php | 21 - .../classes/WP_Piwik/Widget/Screens.php | 68 - .../classes/WP_Piwik/Widget/Search.php | 38 - .../wp-piwik/classes/WP_Piwik/Widget/Seo.php | 31 - .../classes/WP_Piwik/Widget/SystemDetails.php | 66 - .../classes/WP_Piwik/Widget/Systems.php | 66 - .../classes/WP_Piwik/Widget/Types.php | 80 - .../classes/WP_Piwik/Widget/Visitors.php | 79 - .../plugins/wp-piwik/config.php | 9 - .../plugins/wp-piwik/css/index.php | 2 - .../plugins/wp-piwik/css/wp-piwik.css | 74 - .../plugins/wp-piwik/gpl-3.0.html | 692 -- .../plugins/wp-piwik/index.php | 2 - .../plugins/wp-piwik/js/chartjs/LICENSE.md | 9 - .../plugins/wp-piwik/js/chartjs/README.md | 36 - .../plugins/wp-piwik/js/chartjs/chart.min.js | 13 - .../plugins/wp-piwik/js/index.php | 2 - .../plugins/wp-piwik/js/wp-piwik.js | 4 - .../plugins/wp-piwik/languages/.tx/config | 9 - .../plugins/wp-piwik/languages/update.sh | 5 - .../wp-piwik/languages/wp-piwik-az_AZ.mo | Bin 1418 -> 0 bytes .../wp-piwik/languages/wp-piwik-az_AZ.po | 1530 ---- .../wp-piwik/languages/wp-piwik-be_BY.mo | Bin 1798 -> 0 bytes .../wp-piwik/languages/wp-piwik-be_BY.po | 1530 ---- .../wp-piwik/languages/wp-piwik-cs_CZ.mo | Bin 474 -> 0 bytes .../wp-piwik/languages/wp-piwik-cs_CZ.po | 1528 ---- .../wp-piwik/languages/wp-piwik-de_CH.mo | Bin 445 -> 0 bytes .../wp-piwik/languages/wp-piwik-de_CH.po | 1528 ---- .../wp-piwik/languages/wp-piwik-de_DE.mo | Bin 34143 -> 0 bytes .../wp-piwik/languages/wp-piwik-de_DE.po | 1530 ---- .../plugins/wp-piwik/languages/wp-piwik-el.mo | Bin 38932 -> 0 bytes .../plugins/wp-piwik/languages/wp-piwik-el.po | 1531 ---- .../wp-piwik/languages/wp-piwik-el_GR.mo | Bin 13103 -> 0 bytes .../wp-piwik/languages/wp-piwik-el_GR.po | 407 - .../wp-piwik/languages/wp-piwik-es_ES.mo | Bin 7734 -> 0 bytes .../wp-piwik/languages/wp-piwik-es_ES.po | 1530 ---- .../wp-piwik/languages/wp-piwik-fa_IR.mo | Bin 9852 -> 0 bytes .../wp-piwik/languages/wp-piwik-fa_IR.po | 1532 ---- .../wp-piwik/languages/wp-piwik-fr_FR.mo | Bin 28250 -> 0 bytes .../wp-piwik/languages/wp-piwik-fr_FR.po | 1532 ---- .../plugins/wp-piwik/languages/wp-piwik-hi.mo | Bin 7471 -> 0 bytes .../plugins/wp-piwik/languages/wp-piwik-hi.po | 1529 ---- .../wp-piwik/languages/wp-piwik-hu_HU.mo | Bin 27582 -> 0 bytes .../wp-piwik/languages/wp-piwik-hu_HU.po | 1530 ---- .../plugins/wp-piwik/languages/wp-piwik-id.mo | Bin 880 -> 0 bytes .../plugins/wp-piwik/languages/wp-piwik-id.po | 1528 ---- .../wp-piwik/languages/wp-piwik-it_IT.mo | Bin 26692 -> 0 bytes .../wp-piwik/languages/wp-piwik-it_IT.po | 1532 ---- .../plugins/wp-piwik/languages/wp-piwik-lb.mo | Bin 5705 -> 0 bytes .../plugins/wp-piwik/languages/wp-piwik-lb.po | 1529 ---- .../wp-piwik/languages/wp-piwik-lt_LT.mo | Bin 3031 -> 0 bytes .../wp-piwik/languages/wp-piwik-lt_LT.po | 1531 ---- .../wp-piwik/languages/wp-piwik-nb_NO.mo | Bin 5756 -> 0 bytes .../wp-piwik/languages/wp-piwik-nb_NO.po | 1529 ---- .../wp-piwik/languages/wp-piwik-nl_NL.mo | Bin 21847 -> 0 bytes .../wp-piwik/languages/wp-piwik-nl_NL.po | 1532 ---- .../wp-piwik/languages/wp-piwik-pl_PL.mo | Bin 26626 -> 0 bytes .../wp-piwik/languages/wp-piwik-pl_PL.po | 1530 ---- .../wp-piwik/languages/wp-piwik-pt_BR.mo | Bin 26913 -> 0 bytes .../wp-piwik/languages/wp-piwik-pt_BR.po | 1530 ---- .../wp-piwik/languages/wp-piwik-ro_RO.mo | Bin 1440 -> 0 bytes .../wp-piwik/languages/wp-piwik-ro_RO.po | 1530 ---- .../wp-piwik/languages/wp-piwik-ru_RU.mo | Bin 4820 -> 0 bytes .../wp-piwik/languages/wp-piwik-ru_RU.po | 1529 ---- .../wp-piwik/languages/wp-piwik-sl_SI.mo | Bin 1860 -> 0 bytes .../wp-piwik/languages/wp-piwik-sl_SI.po | 1529 ---- .../plugins/wp-piwik/languages/wp-piwik-sq.mo | Bin 27537 -> 0 bytes .../plugins/wp-piwik/languages/wp-piwik-sq.po | 1532 ---- .../wp-piwik/languages/wp-piwik-sv_SE.mo | Bin 1731 -> 0 bytes .../wp-piwik/languages/wp-piwik-sv_SE.po | 1530 ---- .../wp-piwik/languages/wp-piwik-tr_TR.mo | Bin 13468 -> 0 bytes .../wp-piwik/languages/wp-piwik-tr_TR.po | 1530 ---- .../wp-piwik/languages/wp-piwik-ua_UA.mo | Bin 4907 -> 0 bytes .../wp-piwik/languages/wp-piwik-ua_UA.po | 186 - .../wp-piwik/languages/wp-piwik-uk_UA.mo | Bin 1725 -> 0 bytes .../wp-piwik/languages/wp-piwik-uk_UA.po | 1530 ---- .../wp-piwik/languages/wp-piwik-zh_CN.mo | Bin 22777 -> 0 bytes .../wp-piwik/languages/wp-piwik-zh_CN.po | 1529 ---- .../plugins/wp-piwik/languages/wp-piwik.pot | 1560 ---- .../plugins/wp-piwik/proxy/config.php | 39 - .../plugins/wp-piwik/proxy/index.php | 2 - .../plugins/wp-piwik/proxy/matomo.php | 14 - .../plugins/wp-piwik/proxy/piwik.php | 3 - .../plugins/wp-piwik/proxy/proxy.php | 379 - .../plugins/wp-piwik/readme.txt | 695 -- .../plugins/wp-piwik/screenshot-1.gif | Bin 47554 -> 0 bytes .../plugins/wp-piwik/screenshot-2.gif | Bin 52962 -> 0 bytes .../plugins/wp-piwik/screenshot-3.gif | Bin 97175 -> 0 bytes .../plugins/wp-piwik/screenshot-4.gif | Bin 12691 -> 0 bytes .../plugins/wp-piwik/screenshot-5.gif | Bin 27708 -> 0 bytes .../plugins/wp-piwik/uninstall.php | 108 - .../plugins/wp-piwik/update/2015051101.php | 41 - .../plugins/wp-piwik/update/2017080701.php | 13 - .../plugins/wp-piwik/update/2021070701.php | 10 - .../plugins/wp-piwik/update/2023052301.php | 4 - .../plugins/wp-piwik/update/90001.php | 9 - .../plugins/wp-piwik/update/90801.php | 5 - .../plugins/wp-piwik/update/91006.php | 10 - .../plugins/wp-piwik/wp-piwik.php | 83 - .../plugins/wp-piwik/wpml-config.xml | 5 - 1645 files changed, 370624 deletions(-) delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/LICENSE delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/activitypub.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/assets/css/activitypub-admin.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/assets/css/activitypub-embed.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/assets/img/mp.jpg delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/assets/img/wp-logo.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/assets/js/activitypub-admin.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/assets/js/activitypub-header-image.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/editor-plugin/block.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/editor-plugin/plugin.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/editor-plugin/plugin.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/block.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/index.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/index.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/style-view-rtl.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/style-view.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/view.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/view.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/block.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/index.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/index.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/style-view-rtl.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/style-view.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/view.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/view.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/block.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/index.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/index.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/style-index-rtl.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/style-index.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/view.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/view.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/block.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/index.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/index.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/style-index-rtl.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/style-index.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/reply-intent/block.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/reply-intent/plugin.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/reply-intent/plugin.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/block.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/index-rtl.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/index.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/index.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/index.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/style-index-rtl.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/style-index.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-activity.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-actor.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-base-object.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-generic-object.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/extended-object/class-event.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/extended-object/class-place.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-activitypub.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-autoloader.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-blocks.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-cli.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-comment.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-debug.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-dispatcher.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-embed.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-handler.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-hashtag.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-http.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-link.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-mailer.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-mention.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-migration.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-move.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-notification.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-options.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-query.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-sanitize.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-scheduler.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-shortcodes.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-signature.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-webfinger.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-actors.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-extra-fields.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-followers.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-interactions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-outbox.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-replies.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-users.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/compat.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/constants.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/debug.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-announce.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-create.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-delete.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-follow.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-like.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-move.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-undo.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-update.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-application.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-blog.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-follower.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-user.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-actors-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-actors-inbox-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-application-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-collections-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-comments-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-followers-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-following-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-inbox-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-interaction-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-moderators-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-nodeinfo-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-outbox-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-post.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-replies-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-server.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-url-validator-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-webfinger-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/trait-collection.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/scheduler/class-actor.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/scheduler/class-comment.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/scheduler/class-post.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/table/class-followers.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-activity-object.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-attachment.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-base.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-comment.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-factory.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-json.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-post.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-user.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-akismet.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-buddypress.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-enable-mastodon-apps.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-jetpack.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-multisite-language-switcher.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-nodeinfo.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-opengraph.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-seriously-simple-podcasting.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-stream-connector.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-webfinger.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-wpml.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/integration/load.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/readme.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/activitypub-json.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/admin-header.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/advanced-settings.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/blog-followers-list.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/blog-settings.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/emails/new-dm.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/emails/new-follower.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/emails/new-mention.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/emails/parts/footer.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/emails/parts/header.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/post-preview.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/reply-embed.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/settings.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/toolbox.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/user-followers-list.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/activitypub/templates/welcome.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/audioigniter/assets/css/admin-styles.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/audioigniter/assets/css/admin-styles.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/audioigniter/assets/css/admin/settings.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/audioigniter/assets/css/admin/settings.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/audioigniter/assets/images/logo.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/audioigniter/assets/images/vc_icon.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/audioigniter/assets/js/audioigniter.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/audioigniter/audioigniter.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/audioigniter/inc/class-audioigniter-admin-page-upsell.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/audioigniter/inc/class-audioigniter-sanitizer.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/audioigniter/languages/audioigniter.pot delete mode 100644 wp-content/upgrade-temp-backup/plugins/audioigniter/player/build/app.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/audioigniter/player/build/app.js.LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/audioigniter/player/build/fingerprintjs.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/audioigniter/player/build/index.html delete mode 100644 wp-content/upgrade-temp-backup/plugins/audioigniter/player/build/style.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/audioigniter/player/build/style.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/audioigniter/readme.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/audioigniter/uninstall.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/.devcontainer/activate.sh delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/.devcontainer/devcontainer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/.devcontainer/local-features/welcome-message/devcontainer-feature.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/.devcontainer/local-features/welcome-message/install.sh delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/.devcontainer/setup.sh delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/.gitpod.yml delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/.vscode/tasks.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/HOWTO.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/README.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/codecov.yml delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/css/styles-admin.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/docker-compose.yml delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/includes/functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/includes/openid-connect-generic-client-wrapper.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/includes/openid-connect-generic-client.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/includes/openid-connect-generic-login-form.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/includes/openid-connect-generic-option-logger.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/includes/openid-connect-generic-option-settings.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/includes/openid-connect-generic-settings-page.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/languages/openid-connect-generic.pot delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/openid-connect-generic.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/readme.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/wp-cli.yml delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/assets.yml delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/deploy.yml delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/phpcs.yml delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/phpstan.yml delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/phpunit.yml delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/release.yml delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.gitattributes delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/CONTRIBUTING.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/LICENSE delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/css/event-bridge-for-activitypub-admin.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/acknowledgement-NGI0Entrust.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/acknowledgement-NLnet.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/activitypub.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/fediverse.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/gancio.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/mastodon.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/mobilizon.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/js/event-bridge-for-activitypub-admin.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/build/reminder/block.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/build/reminder/plugin.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/build/reminder/plugin.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/event-bridge-for-activitypub.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/class-handler.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/collection/class-event-sources.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/handler/class-accept.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/handler/class-create.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/handler/class-delete.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/handler/class-join.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/handler/class-undo.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/handler/class-update.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/model/class-event-source.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/scheduler/class-event.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-event-organiser.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-event.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-eventin.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-eventon.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-eventprime.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-events-manager.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-gatherpress.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-modern-events-calendar-lite.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-the-events-calendar.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-vs-event-list.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-wp-event-manager.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-base-post-place.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-base-term-place.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-event-organiser.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-eventon.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-eventprime.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-events-manager.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-the-events-calendar.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/class-base.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/class-gatherpress.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/class-the-events-calendar.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/class-vs-event-list.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/helper/class-sanitizer.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/helper/class-the-events-calendar-event-repository.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/helper/class-the-events-calendar-organizer-repository.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/helper/class-the-events-calendar-venue-repository.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/admin/class-event-plugin-admin-notices.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/admin/class-general-admin-notices.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/admin/class-health-check.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/admin/class-settings-page.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/admin/class-user-interface.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-autoloader.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-debug.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-event-sources.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-outbox-parser.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-preview.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-reminder.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-settings.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-setup.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/event-categories.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-event-organiser.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-event-plugin-integration.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-eventin.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-eventon.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-eventprime.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-events-manager.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-gatherpress.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-modern-events-calendar-lite.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-the-events-calendar.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-vs-event-list.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-wp-event-manager.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/interface-feature-event-sources.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/table/class-event-sources.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/readme.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/event-preview.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/settings/menu.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/settings/subpages/event-sources.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/settings/subpages/settings.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/settings/subpages/welcome.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/settings/tab.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/gitium-webhook.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/gitium.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/img/gitium.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/img/gitium.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/inc/class-git-wrapper.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-admin.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-help.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-menu-bubble.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-menu.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-requirements.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-submenu-commits.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-submenu-configure.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-submenu-settings.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-submenu-status.php delete mode 100755 wp-content/upgrade-temp-backup/plugins/gitium/inc/ssh-git delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/js/copy-to-clipboard.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/languages/gitium-es_ES.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/languages/gitium-es_ES.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/languages/gitium-sr_RS.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/languages/gitium-sr_RS.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/languages/gitium.pot delete mode 100644 wp-content/upgrade-temp-backup/plugins/gitium/readme.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/css.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/secondary-nav-backgrounds.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/generate-backgrounds.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/columns.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/columns.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/columns.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/featured-images.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/featured-images.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/style.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/style.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/customizer.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/defaults.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/generate-blog.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/images.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/controls.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/customizer.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/infinite-scroll.pkgd.min.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/scripts.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/scripts.min.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/migrate.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/blog/generate-blog.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/customizer.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/menu-plus-customizer.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/wc-customizer.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/secondary-nav-colors.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/slideout-nav-colors.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/woocommerce-colors.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/colors/generate-colors.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/copyright/functions/functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/copyright/functions/js/customizer.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/copyright/generate-copyright.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/disable-elements/functions/functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/disable-elements/generate-disable-elements.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/adjacent-posts.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/adjacent-posts.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements-rtl.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/customizer.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/customizer.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/dashboard.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/dashboard.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor-rtl.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/font-library-rtl.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/font-library.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/font-library.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/font-library.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/packages-rtl.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/packages.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/packages.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/packages.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library-rtl.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/style-dashboard-rtl.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/dist/style-dashboard.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/author-image-placeholder.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/background-image-fallback.jpg delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/balloon.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/elements.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/elements.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/featured-image-placeholder.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/metabox.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/metabox.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/spinner.gif delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/js/parallax.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/js/parallax.min.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-block-elements.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-block.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-conditions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-elements-helper.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-hero.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-hooks.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-layout.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-metabox.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-post-type.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/elements/elements.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/font-library/class-font-library-cpt.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/font-library/class-font-library-optimize.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/font-library/class-font-library-rest.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/font-library/class-font-library.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/class-external-file-css.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/enqueue-scripts.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/gp-premium.eot delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/gp-premium.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/gp-premium.ttf delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/gp-premium.woff delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/icons.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/icons.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/js/smooth-scroll.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/js/smooth-scroll.min.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/general/smooth-scroll.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/gp-premium.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/assets/css/hooks.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/assets/js/admin.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/assets/js/jquery.cookie.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/hooks.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/generate-hooks.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/class-adjacent-posts.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/class-dashboard.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/class-register-dynamic-tags.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/class-rest.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/class-singleton.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/deprecated-admin.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/deprecated.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/activation.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/assets/dashboard.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/assets/dashboard.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/dashboard.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/import-export.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/reset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ar.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-bn_BD.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-cs_CZ.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-da_DK.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-de_DE-42da344ccb044413769d16ed3484307b.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-de_DE-53e2a1d5945b8d2b1c35e81ae1e532f3.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-de_DE-92fa58377f1b6f7bef9c785c31ae29ff.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-de_DE-cbab080b0f20fd6c323029398be6c986.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-de_DE-ecf9f3c2af10c4f2dfbf4f42504922d1.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-de_DE.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_AR.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-42da344ccb044413769d16ed3484307b.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-53e2a1d5945b8d2b1c35e81ae1e532f3.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-92fa58377f1b6f7bef9c785c31ae29ff.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-cbab080b0f20fd6c323029398be6c986.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-ecf9f3c2af10c4f2dfbf4f42504922d1.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fi-42da344ccb044413769d16ed3484307b.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fi-53e2a1d5945b8d2b1c35e81ae1e532f3.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fi-92fa58377f1b6f7bef9c785c31ae29ff.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fi-cbab080b0f20fd6c323029398be6c986.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fi-ecf9f3c2af10c4f2dfbf4f42504922d1.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fi.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fr_FR-42da344ccb044413769d16ed3484307b.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fr_FR-53e2a1d5945b8d2b1c35e81ae1e532f3.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fr_FR-92fa58377f1b6f7bef9c785c31ae29ff.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fr_FR.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-hr.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-hu_HU.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-it_IT.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nb_NO.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-42da344ccb044413769d16ed3484307b.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-53e2a1d5945b8d2b1c35e81ae1e532f3.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-92fa58377f1b6f7bef9c785c31ae29ff.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-cbab080b0f20fd6c323029398be6c986.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-ecf9f3c2af10c4f2dfbf4f42504922d1.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-pl_PL.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-pt_BR.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-pt_PT-42da344ccb044413769d16ed3484307b.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-pt_PT-53e2a1d5945b8d2b1c35e81ae1e532f3.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-pt_PT-92fa58377f1b6f7bef9c785c31ae29ff.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-pt_PT.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-42da344ccb044413769d16ed3484307b.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-53e2a1d5945b8d2b1c35e81ae1e532f3.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-92fa58377f1b6f7bef9c785c31ae29ff.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-cbab080b0f20fd6c323029398be6c986.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-ecf9f3c2af10c4f2dfbf4f42504922d1.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-42da344ccb044413769d16ed3484307b.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-53e2a1d5945b8d2b1c35e81ae1e532f3.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-92fa58377f1b6f7bef9c785c31ae29ff.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-cbab080b0f20fd6c323029398be6c986.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-ecf9f3c2af10c4f2dfbf4f42504922d1.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-uk.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-vi.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-zh_CN.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/alpha-color-picker/wp-color-picker-alpha.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/alpha-color-picker/wp-color-picker-alpha.min.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/class-make-css.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/class-plugin-updater.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer-helpers.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/active-callbacks.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-action-button-control.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-alpha-color-control.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-backgrounds-control.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-control-toggle.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-copyright-control.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-deprecated.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-information-control.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-range-slider-control.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-refresh-button-control.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-section-shortcuts-control.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-spacing-control.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-title-control.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-typography-control.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/alpha-color-picker.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/button-actions.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/control-toggle-customizer.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/information-control.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/section-shortcuts.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/selectWoo.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/slider-customizer.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/spacing-customizer.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/title-customizer.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/transparency-grid.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/typography-customizer.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/alpha-color-picker.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/backgrounds-customizer.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/button-actions.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/control-toggle-customizer.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/copyright-customizer.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/generatepress-controls.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/section-shortcuts.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/selectWoo.min.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/slider-customizer.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/spacing-customizer.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/typography-customizer.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/deprecated.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/sanitize.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/select2/select2.full.min.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/library/select2/select2.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/fields/slideout-nav-colors.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/menu-logo.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/menu-logo.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/navigation-branding-flex.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/navigation-branding-flex.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/navigation-branding.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/navigation-branding.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/offside.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/offside.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/sticky.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/css/sticky.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/generate-menu-plus.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/js/offside.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/js/offside.min.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/js/sticky.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/functions/js/sticky.min.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/menu-plus/generate-menu-plus.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/css/metabox.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/css/page-header.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/css/page-header.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/global-locations.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/full-height.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/full-height.min.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/jquery.vide.min.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/lc_switch.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/metabox.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/parallax.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/parallax.min.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/metabox.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/page-header.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/post-image.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/post-type.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/generate-page-header.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/readme.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/fields/secondary-navigation.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main-mobile.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main-mobile.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style-mobile.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style-mobile.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/js/customizer.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/generate-secondary-nav.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/css/style.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/css/style.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/generate-sections.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/js/parallax.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/js/parallax.min.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/css/generate-sections-metabox.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/css/lc_switch.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/js/generate-sections-metabox-4.9.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/js/generate-sections-metabox.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/metabox-functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/views/sections-template.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/views/sections.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/views/use-sections.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/templates/template.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/sections/generate-sections.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/class-site-library-helper.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/class-site-library-rest.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/class-site-library.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-beaver-builder-batch-processing.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-content-importer.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-site-import-image.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-site-widget-importer.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/libs/wxr-importer/WPImporterLogger.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/libs/wxr-importer/WXRImportInfo.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/libs/wxr-importer/WXRImporter.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/content-spacing.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/footer-spacing.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/header-spacing.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/js/customizer.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/navigation-spacing.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/secondary-nav-spacing.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/sidebar-spacing.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/top-bar-spacing.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/migration.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/generate-spacing.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/google-fonts.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/js/customizer.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/migration.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/secondary-nav-fonts.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/slideout-nav-fonts.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/woocommerce-fonts.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/typography/generate-fonts.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/webpack.config.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/fields/woocommerce-colors.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce-mobile.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce-mobile.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/customizer/customizer.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/customizer/js/customizer.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/js/woocommerce.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/js/woocommerce.min.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/woocommerce.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/gp-premium/wpml-config.xml delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/fonts/jetpack-protect.eot delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/fonts/jetpack-protect.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/fonts/jetpack-protect.ttf delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/fonts/jetpack-protect.woff delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/jetpack-protect.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.js.LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.rtl.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack-protect.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/src/class-a8c-mc-stats.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/src/class-admin-menu.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/actions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/build/i18n-loader.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/build/i18n-loader.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/build/jetpack-script-data.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/build/jetpack-script-data.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/src/class-assets.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/src/class-script-data.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/src/class-semver.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/src/js/i18n-loader.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/src/js/script-data.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/src/class-helper-script-manager-impl.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/src/class-helper-script-manager.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/src/class-throw-on-errors.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-core/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-core/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-core/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-core/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-core/src/contracts/boost-api-client.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-boost-api.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-cacheable.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-transient.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-url.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-utils.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-wpcom-boost-api-client.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-speed-score/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-speed-score/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-speed-score/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-speed-score/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-jetpack-boost-modules.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score-graph-history-request.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score-history.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score-request.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-config/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-config/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-config/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-config/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-config/src/class-config.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/TRACKING.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/actions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/identity-crisis.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/identity-crisis.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/identity-crisis.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/identity-crisis.rtl.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/images/disconnect-confirm-dc9fe8f5c68cfd1320e0.jpg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/images/disconnect-thanks-5873bfac56a9bd7322cd.jpg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/jetpack-connection.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/jetpack-connection.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/jetpack-connection.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/jetpack-connection.js.LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/jetpack-connection.rtl.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/jetpack-sso-admin-create-user.rtl.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/jetpack-sso-login.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/jetpack-sso-login.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/jetpack-sso-login.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/jetpack-sso-login.rtl.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/jetpack-sso-users.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/jetpack-sso-users.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/jetpack-users-connection.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/jetpack-users-connection.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/tracks-ajax.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/tracks-ajax.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/tracks-callables.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/dist/tracks-callables.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-ixr-client.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-ixr-clientmulticall.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-options.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-signature.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-tracks-client.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-tracks-event.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-xmlrpc-server.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-authorize-json-api.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-client.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-connection-assets.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-connection-notice.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-error-handler.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-heartbeat.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-initial-state.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-manager.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-nonce-handler.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-package-version-tracker.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-package-version.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-partner-coupon.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-partner.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-plugin-storage.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-plugin.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-rest-authentication.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-rest-connector.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-secrets.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-server-sandbox.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-terms-of-service.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-tokens-locks.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-tokens.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-tracking.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-urls.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-users-connection-admin.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-utils.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-webhooks.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-async-call.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-connector.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/_inc/admin-bar.scss delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/_inc/admin.jsx delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/_inc/style.scss delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-exception.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-identity-crisis.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-rest-endpoints.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-ui.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-url-secret.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/interface-manager.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/class-force-2fa.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/class-helpers.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/class-notices.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/class-sso.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/class-user-admin.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-users.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/traits/trait-wpcom-rest-api-proxy-request.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/webhooks/class-authorize-redirect.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/src/class-constants.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/src/class-device-detection.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/src/class-user-agent-info.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/src/functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/build/index.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/build/index.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/global.d.ts delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/class-explat.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/class-rest-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/anon.ts delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/assignment.ts delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/error.ts delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/index.ts delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/utils.ts delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/src/class-utils.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/images/background-f9c9ff650c08ee46f153.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.rtl.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-jitm.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-post-connection-jitm.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-pre-connection-jitm.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-rest-api-endpoints.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/css/jetpack-admin-jitm.scss delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/images/background.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/src/class-endpoints.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/src/class-licensing.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/src/class-logo.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/apple-36e00ab02e6fed6f51dd.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/apple-92dacafad84e79708a74.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/boost-9e9a227e7e7280d0aa85.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/cloud-81ac85ba680343200f54.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/complete-f4bd1db5fb786efbc9d5.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/connect-c399837fe1621b176d10.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/crm-8a2b204e2c720730e928.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/empty-avatar-fea23feddfa99b07c2e8.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/evaluation-blank-fbbfbcd75b50ade0f092.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/evaluation-selected-196d1790b76830f9b73a.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/extras-c6bd0796750901faa7fd.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/github-45c648158e3e86b560f5.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/github-523373a4447a46c189a1.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/google-a444c8c0f0c0108836d8.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/google-dec2a429bf1d8e83f9ad.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/grow-your-audience-ddf8016fd72419f4e80e.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-5e94ec9a207b87fe38d7.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-9de1caef5eb5c22da5d6.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-ai-d29bf65dcea46074d72f.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-gray-7eeb5eb060c8adea8622.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-license-activation-with-lock-cef570e11997f185e23d.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-license-activation-with-success-c5c132e713a79e05985f.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-manage-3a7ecaa604823c98c3cf.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/search-d177a31292d96d5ccbc2.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/security-53b7f3ddc8dcbe17b0c1.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/shield-inactive-cba3b43d918377b506e5.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/shield-off-47426e7b562ef20ae513.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/shield-partial-48b279219c6389a129b9.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/shield-success-e64a26c3a6d0888fba06.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/site-cards-29522f090d5422fd7afd.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/stats-95b42796ede4f632b642.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/videopress-9c064bc7b89c386e5e50.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/wordpress-1fc3e0ba6c52e9707900.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.js.LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.rtl.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/global.d.ts delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-activitylog.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-historically-active-modules.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-initializer.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-jetpack-manage.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-products.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-red-bubble-notifications.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-ai.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-products.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-purchases.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-recommendations-evaluation.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-zendesk-chat.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-wpcom-products.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-anti-spam.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-backup.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-boost.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-complete.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-creator.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-crm.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-extras.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-growth.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-hybrid-product.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-jetpack-ai.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-module-product.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-newsletter.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-product.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-protect.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-related-posts.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-scan.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search-stats.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-security.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-site-accelerator.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-social.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-starter.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-stats.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-videopress.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/src/class-password-checker.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-automatic-install-skin.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-plugins-installer.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-extension-model.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-history-model.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-protect-models.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-status-model.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-threat-model.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-vulnerability-model.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-plan.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-protect-status.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-rest-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-scan-status.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-status.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/src/class-redirect.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/src/class-roles.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-cache.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-cookiestate.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-errors.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-files.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-host.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-modules.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-paths.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-status.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-visitor.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-actions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-data-settings.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-dedicated-sender.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-default-filter-settings.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-defaults.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-health.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-json-deflate-array-codec.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-listener.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-lock.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-main.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-modules.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-package-version.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-queue-buffer.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-queue.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-replicastore.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-rest-endpoints.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-rest-sender.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-sender.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-server.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-settings.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-simple-codec.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-users.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-utils.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/interface-codec.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/interface-replicastore.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-attachments.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-callables.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-comments.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-constants.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync-immediately.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-import.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-menus.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-meta.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-module.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-network-options.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-options.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-plugins.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-posts.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-protect.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-search.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-stats.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-term-relationships.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-terms.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-themes.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-updates.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-users.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce-hpos-orders.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-wp-super-cache.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-usermeta.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-users.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-options.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-table.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/actions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/src/class-package-version-compat.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/src/class-package-version.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/src/class-rest-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/cli.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-blocked-login-page.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-math-fallback.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-shared-functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-transient-cleanup.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-brute-force-protection.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-compatibility.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-rest-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-blocklog-manager.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-cli.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-constants.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-initializer.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-operators.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-request.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-rules-manager.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-runner.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-runtime.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-standalone-bootstrap.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-stats.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-transforms.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-file-system-exception.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-rules-api-exception.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-waf-exception.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/i18n-map.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/readme.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-credentials.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-jetpack-protect.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-onboarding.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-rest-controller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-scan-history.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-site-health.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-threats.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/autoload.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/autoload_packages.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/SECURITY.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/src/class-current-plan.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/src/class-plans.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/ClassLoader.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/InstalledVersions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/LICENSE delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_classmap.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_files.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_namespaces.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_psr4.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_real.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_static.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/installed.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/installed.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/jetpack_autoload_classmap.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/jetpack_autoload_filemap.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/platform_check.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-autoloader-handler.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-autoloader-locator.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-autoloader.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-container.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-hook-manager.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-latest-autoloader-guard.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-manifest-reader.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-path-processor.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-php-autoloader.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-plugin-locator.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-plugins-handler.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-shutdown-handler.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-version-loader.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-version-selector.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/LICENSE delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/NOTICE delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/bench/bench.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/bench/check.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/src/MultiStringMatcher.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/src/MultiStringReplacer.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/LICENSE delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/admin.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/admin.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/dashboard-notice.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/dashboard-notice.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/extra.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/extra.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/LICENSE.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/css/all.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-brands-400.ttf delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-brands-400.woff2 delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-regular-400.ttf delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-regular-400.woff2 delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-solid-900.ttf delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-solid-900.woff2 delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-v4compatibility.ttf delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-v4compatibility.woff2 delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/images/neve-theme.jpg delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/images/otter-block.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/front.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/library/compat.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/library/font-awesome/backward-compatible-icons.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/library/font-awesome/font-awesome.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/library/form-fields.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/library/functions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/media-template.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/meta.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/picker.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/settings.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/type-fonts.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/includes/type.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/admin.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/admin.min.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/index.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/media/index.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/media/models/item-setting-field.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/media/models/item-settings.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/media/models/item.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/media/views/frame.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/media/views/item-preview.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/media/views/item-setting-field.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/media/views/item-settings.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/media/views/sidebar.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/picker.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/js/src/settings.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/languages/menu-icons.pot delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/mailin.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/menu-icons.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/readme.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/readme.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/autoload.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/LICENSE delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/README.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/assets/css/font-awesome.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/build/frontend.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/build/frontend.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/build/index.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/build/index.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/build/index.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/build/style-frontend.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/class-gutenberg-menu-icons.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/gutenberg-menu-icons/load.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/LICENSE delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/icon-picker.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/icon-picker.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/Elusive-Icons.eot delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/Elusive-Icons.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/Elusive-Icons.ttf delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/Elusive-Icons.woff delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/Genericons.eot delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/Genericons.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/Genericons.ttf delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/Genericons.woff delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/elusive.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/elusive.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/font-awesome.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/font-awesome.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/fontawesome-webfont.eot delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/fontawesome-webfont.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/fontawesome-webfont.ttf delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/fontawesome-webfont.woff delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/fontawesome-webfont.woff2 delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/foundation-icons.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/foundation-icons.eot delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/foundation-icons.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/foundation-icons.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/foundation-icons.ttf delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/foundation-icons.woff delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/genericons.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/css/types/genericons.min.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/icon-picker.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/fields/base.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/fields/cmb.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/fontpack.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/loader.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/registry.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/base.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/dashicons.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/elusive.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/fa.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/font.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/fontello.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/foundation-icons.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/genericon.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/image.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/includes/types/svg.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/js/icon-picker.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/js/icon-picker.min.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/languages/icon-picker.pot delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/icon-picker/readme.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/menu-item-custom-fields/LICENSE delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/menu-item-custom-fields/doc/menu-item-custom-fields-example.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/menu-item-custom-fields/menu-item-custom-fields.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/menu-item-custom-fields/readme.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/menu-item-custom-fields/walker-nav-menu-edit.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/CHANGELOG.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/LICENSE delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/css/banner.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/animation.jpg delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/conditions.jpg delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/css.jpg delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/neve.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/optimole-logo.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/otter/otter-builder.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/otter/otter-library.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/otter/otter-patterns.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/sparks.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/team.jpg delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/themeisle-logo.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/images/wplk.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/about/about.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/about/about.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/about/about.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/banner/banner.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/banner/banner.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/float_widget/float.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/float_widget/float.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/float_widget/float.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/promos/index.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/promos/index.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/promos/style-index.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/survey/survey_deps.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/survey/survey_deps.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/tracking/tracking.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/assets/js/build/tracking/tracking.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/index.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/load.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Common/Abstract_module.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Common/Module_factory.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Loader.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/About_us.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Announcements.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Compatibilities.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Dashboard_widget.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Featured_plugins.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Float_widget.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Licenser.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Logger.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Notification.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Promotions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Recommendation.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Review.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Rollback.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Script_loader.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Translate.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Translations.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Uninstall_feedback.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Modules/Welcome.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/src/Product.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/codeinwp/themeisle-sdk/start.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/composer/ClassLoader.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/composer/InstalledVersions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/composer/LICENSE delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/composer/autoload_classmap.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/composer/autoload_files.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/composer/autoload_namespaces.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/composer/autoload_psr4.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/composer/autoload_real.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/composer/autoload_static.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/composer/installed.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/composer/installed.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/composer/platform_check.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/enshrined/svg-sanitize/LICENSE delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/enshrined/svg-sanitize/README.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/enshrined/svg-sanitize/src/ElementReference/Resolver.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/enshrined/svg-sanitize/src/ElementReference/Subject.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/enshrined/svg-sanitize/src/ElementReference/Usage.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/enshrined/svg-sanitize/src/Exceptions/NestingException.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/enshrined/svg-sanitize/src/Helper.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/enshrined/svg-sanitize/src/Sanitizer.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/enshrined/svg-sanitize/src/data/AllowedAttributes.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/enshrined/svg-sanitize/src/data/AllowedTags.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/enshrined/svg-sanitize/src/data/AttributeInterface.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/enshrined/svg-sanitize/src/data/TagInterface.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/enshrined/svg-sanitize/src/data/XPath.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/menu-icons/vendor/enshrined/svg-sanitize/src/svg-scanner.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/10up-lib/wp-compat-validation-tool/replace-namespace.sh delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/10up-lib/wp-compat-validation-tool/src/Validator.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/dist/simple-local-avatars.asset.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/dist/simple-local-avatars.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/includes/class-simple-local-avatars.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/readme.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/simple-local-avatars.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/autoload.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/ClassLoader.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/InstalledVersions.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/LICENSE delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/autoload_classmap.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/autoload_namespaces.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/autoload_psr4.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/autoload_real.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/autoload_static.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installed.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installed.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/.github/workflows/continuous-integration.yml delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/.github/workflows/lint.yml delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/.github/workflows/phpstan.yml delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/LICENSE delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/composer.json delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/AglInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/AkauntingInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/AnnotateCmsInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/AsgardInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/AttogramInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/BaseInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/BitrixInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/BonefishInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/BotbleInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/CakePHPInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/ChefInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/CiviCrmInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/ClanCatsFrameworkInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/CockpitInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/CodeIgniterInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/Concrete5Installer.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/ConcreteCMSInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/CroogoInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/DecibelInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/DframeInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/DokuWikiInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/DolibarrInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/DrupalInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/ElggInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/EliasisInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/ExpressionEngineInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/EzPlatformInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/ForkCMSInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/FuelInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/FuelphpInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/GravInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/HuradInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/ImageCMSInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/Installer.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/ItopInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/KanboardInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/KnownInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/KodiCMSInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/KohanaInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/LanManagementSystemInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/LaravelInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/LavaLiteInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/LithiumInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/MODULEWorkInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/MODXEvoInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/MagentoInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/MajimaInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/MakoInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/MantisBTInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/MatomoInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/MauticInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/MayaInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/MediaWikiInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/MiaoxingInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/MicroweberInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/ModxInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/MoodleInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/OctoberInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/OntoWikiInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/OsclassInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/OxidInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/PPIInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/PantheonInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/PhiftyInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/PhpBBInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/PiwikInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/PlentymarketsInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/Plugin.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/PortoInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/PrestashopInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/ProcessWireInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/PuppetInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/PxcmsInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/RadPHPInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/ReIndexInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/Redaxo5Installer.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/RedaxoInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/RoundcubeInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/SMFInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/ShopwareInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/SilverStripeInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/SiteDirectInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/StarbugInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/SyDESInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/SyliusInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/TaoInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/TastyIgniterInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/TheliaInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/TuskInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/UserFrostingInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/VanillaInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/VgmcpInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/WHMCSInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/WinterInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/WolfCMSInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/WordPressInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/YawikInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/ZendInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/Composer/Installers/ZikulaInstaller.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/installers/src/bootstrap.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/simple-local-avatars/vendor/composer/platform_check.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/smtp-mailer/addons/images/smtp-mailer-email-logger.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/smtp-mailer/addons/images/smtp-mailer-reply-to.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/smtp-mailer/addons/smtp-mailer-addons.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/smtp-mailer/addons/smtp-mailer-addons.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/smtp-mailer/languages/smtp-mailer.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/smtp-mailer/languages/smtp-mailer.pot delete mode 100644 wp-content/upgrade-temp-backup/plugins/smtp-mailer/main.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/smtp-mailer/readme.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/LICENSE.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/assets/banner-1544x500.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/assets/banner-772x250.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/assets/icon-128x128.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/assets/icon-256x256.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/assets/icon.svg delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/assets/screenshot-1.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/assets/screenshot-2.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/assets/screenshot-3.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/class-two-factor-compat.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/class-two-factor-core.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/includes/Google/u2f-api.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/includes/Yubico/U2F.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/includes/function.login-footer.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/includes/function.login-header.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/includes/qrcode-generator/qrcode.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/providers/class-two-factor-backup-codes.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/providers/class-two-factor-dummy.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/providers/class-two-factor-email.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/providers/class-two-factor-fido-u2f-admin-list-table.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/providers/class-two-factor-fido-u2f-admin.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/providers/class-two-factor-fido-u2f.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/providers/class-two-factor-provider.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/providers/class-two-factor-totp.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/providers/css/fido-u2f-admin.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/providers/js/fido-u2f-admin-inline-edit.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/providers/js/fido-u2f-admin.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/providers/js/fido-u2f-login.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/readme.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/two-factor.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/two-factor/user-edit.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/.gitignore delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/LICENSE delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/README.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/bitcoin.png delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Admin.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Admin/Network.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Admin/Settings.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Admin/Sitebrowser.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Admin/Statistics.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Logger.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Logger/Dummy.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Logger/File.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Logger/Screen.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Request.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Request/Php.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Request/Rest.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Settings.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Shortcode.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Template.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Template/MetaBoxCustomVars.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/TrackingCode.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/BrowserDetails.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/Browsers.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/Chart.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/City.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/Country.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/Ecommerce.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/Items.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/ItemsCategory.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/Keywords.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/Models.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/Noresult.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/OptOut.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/Overview.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/Pages.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/Plugins.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/Post.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/Referrers.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/Screens.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/Search.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/Seo.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/SystemDetails.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/Systems.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/Types.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/classes/WP_Piwik/Widget/Visitors.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/config.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/css/index.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/css/wp-piwik.css delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/gpl-3.0.html delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/index.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/js/chartjs/LICENSE.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/js/chartjs/README.md delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/js/chartjs/chart.min.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/js/index.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/js/wp-piwik.js delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/.tx/config delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/update.sh delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-az_AZ.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-az_AZ.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-be_BY.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-be_BY.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-cs_CZ.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-cs_CZ.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-de_CH.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-de_CH.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-de_DE.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-de_DE.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-el.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-el.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-el_GR.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-el_GR.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-es_ES.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-es_ES.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-fa_IR.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-fa_IR.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-fr_FR.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-fr_FR.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-hi.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-hi.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-hu_HU.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-hu_HU.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-id.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-id.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-it_IT.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-it_IT.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-lb.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-lb.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-lt_LT.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-lt_LT.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-nb_NO.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-nb_NO.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-nl_NL.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-nl_NL.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-pl_PL.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-pl_PL.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-pt_BR.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-pt_BR.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-ro_RO.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-ro_RO.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-ru_RU.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-ru_RU.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-sl_SI.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-sl_SI.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-sq.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-sq.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-sv_SE.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-sv_SE.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-tr_TR.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-tr_TR.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-ua_UA.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-ua_UA.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-uk_UA.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-uk_UA.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-zh_CN.mo delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik-zh_CN.po delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/languages/wp-piwik.pot delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/proxy/config.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/proxy/index.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/proxy/matomo.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/proxy/piwik.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/proxy/proxy.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/readme.txt delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/screenshot-1.gif delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/screenshot-2.gif delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/screenshot-3.gif delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/screenshot-4.gif delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/screenshot-5.gif delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/uninstall.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/update/2015051101.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/update/2017080701.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/update/2021070701.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/update/2023052301.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/update/90001.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/update/90801.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/update/91006.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/wp-piwik.php delete mode 100644 wp-content/upgrade-temp-backup/plugins/wp-piwik/wpml-config.xml diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/LICENSE b/wp-content/upgrade-temp-backup/plugins/activitypub/LICENSE deleted file mode 100644 index 644800f2..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -MIT License - -Copyright (c) 2019 Matthias Pfefferle -Copyright (c) 2023 Automattic - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/activitypub.php b/wp-content/upgrade-temp-backup/plugins/activitypub/activitypub.php deleted file mode 100644 index a6dca243..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/activitypub.php +++ /dev/null @@ -1,206 +0,0 @@ -register_routes(); - ( new Rest\Actors_Inbox_Controller() )->register_routes(); - ( new Rest\Application_Controller() )->register_routes(); - ( new Rest\Collections_Controller() )->register_routes(); - ( new Rest\Comments_Controller() )->register_routes(); - ( new Rest\Followers_Controller() )->register_routes(); - ( new Rest\Following_Controller() )->register_routes(); - ( new Rest\Inbox_Controller() )->register_routes(); - ( new Rest\Interaction_Controller() )->register_routes(); - ( new Rest\Moderators_Controller() )->register_routes(); - ( new Rest\Outbox_Controller() )->register_routes(); - ( new Rest\Replies_Controller() )->register_routes(); - ( new Rest\URL_Validator_Controller() )->register_routes(); - ( new Rest\Webfinger_Controller() )->register_routes(); - - // Load NodeInfo endpoints only if blog is public. - if ( is_blog_public() ) { - ( new Rest\Nodeinfo_Controller() )->register_routes(); - } -} -\add_action( 'rest_api_init', __NAMESPACE__ . '\rest_init' ); - -/** - * Initialize plugin. - */ -function plugin_init() { - \add_action( 'init', array( __NAMESPACE__ . '\Activitypub', 'init' ) ); - \add_action( 'init', array( __NAMESPACE__ . '\Comment', 'init' ) ); - \add_action( 'init', array( __NAMESPACE__ . '\Dispatcher', 'init' ) ); - \add_action( 'init', array( __NAMESPACE__ . '\Handler', 'init' ) ); - \add_action( 'init', array( __NAMESPACE__ . '\Hashtag', 'init' ) ); - \add_action( 'init', array( __NAMESPACE__ . '\Link', 'init' ) ); - \add_action( 'init', array( __NAMESPACE__ . '\Mailer', 'init' ) ); - \add_action( 'init', array( __NAMESPACE__ . '\Mention', 'init' ) ); - \add_action( 'init', array( __NAMESPACE__ . '\Migration', 'init' ), 1 ); - \add_action( 'init', array( __NAMESPACE__ . '\Move', 'init' ) ); - \add_action( 'init', array( __NAMESPACE__ . '\Options', 'init' ) ); - \add_action( 'init', array( __NAMESPACE__ . '\Scheduler', 'init' ) ); - - if ( site_supports_blocks() ) { - \add_action( 'init', array( __NAMESPACE__ . '\Blocks', 'init' ) ); - } - - $debug_file = __DIR__ . '/includes/debug.php'; - if ( \WP_DEBUG && file_exists( $debug_file ) && is_readable( $debug_file ) ) { - require_once $debug_file; - Debug::init(); - } -} -\add_action( 'plugins_loaded', __NAMESPACE__ . '\plugin_init' ); - -/** - * Initialize plugin admin. - */ -function plugin_admin_init() { - // Menus are registered before `admin_init`, because of course they are. - \add_action( 'admin_menu', array( __NAMESPACE__ . '\WP_Admin\Menu', 'admin_menu' ) ); - \add_action( 'admin_init', array( __NAMESPACE__ . '\WP_Admin\Admin', 'init' ) ); - \add_action( 'admin_init', array( __NAMESPACE__ . '\WP_Admin\Health_Check', 'init' ) ); - \add_action( 'admin_init', array( __NAMESPACE__ . '\WP_Admin\Settings', 'init' ) ); - \add_action( 'admin_init', array( __NAMESPACE__ . '\WP_Admin\Settings_Fields', 'init' ) ); - \add_action( 'admin_init', array( __NAMESPACE__ . '\WP_Admin\Welcome_Fields', 'init' ) ); - \add_action( 'admin_init', array( __NAMESPACE__ . '\WP_Admin\Advanced_Settings_Fields', 'init' ) ); - \add_action( 'admin_init', array( __NAMESPACE__ . '\WP_Admin\Blog_Settings_Fields', 'init' ) ); - \add_action( 'admin_init', array( __NAMESPACE__ . '\WP_Admin\User_Settings_Fields', 'init' ) ); - - if ( defined( 'WP_LOAD_IMPORTERS' ) && WP_LOAD_IMPORTERS ) { - require_once __DIR__ . '/includes/wp-admin/import/load.php'; - \add_action( 'admin_init', __NAMESPACE__ . '\WP_Admin\Import\load' ); - } -} -\add_action( 'plugins_loaded', __NAMESPACE__ . '\plugin_admin_init' ); - -\register_activation_hook( - __FILE__, - array( - __NAMESPACE__ . '\Activitypub', - 'activate', - ) -); - -/** - * Redirect to the welcome page after plugin activation. - * - * @param string $plugin The plugin basename. - */ -function activation_redirect( $plugin ) { - if ( ACTIVITYPUB_PLUGIN_BASENAME === $plugin ) { - \wp_safe_redirect( \admin_url( 'options-general.php?page=activitypub' ) ); - exit; - } -} -\add_action( 'activated_plugin', __NAMESPACE__ . '\activation_redirect' ); - -\register_deactivation_hook( - __FILE__, - array( - __NAMESPACE__ . '\Activitypub', - 'deactivate', - ) -); - -\register_uninstall_hook( - __FILE__, - array( - __NAMESPACE__ . '\Activitypub', - 'uninstall', - ) -); - - -/** - * `get_plugin_data` wrapper. - * - * @deprecated 4.2.0 Use `get_plugin_data` instead. - * - * @param array $default_headers Optional. The default plugin headers. Default empty array. - * @return array The plugin metadata array. - */ -function get_plugin_meta( $default_headers = array() ) { - _deprecated_function( __FUNCTION__, '4.2.0', 'get_plugin_data' ); - - if ( ! $default_headers ) { - $default_headers = array( - 'Name' => 'Plugin Name', - 'PluginURI' => 'Plugin URI', - 'Version' => 'Version', - 'Description' => 'Description', - 'Author' => 'Author', - 'AuthorURI' => 'Author URI', - 'TextDomain' => 'Text Domain', - 'DomainPath' => 'Domain Path', - 'Network' => 'Network', - 'RequiresWP' => 'Requires at least', - 'RequiresPHP' => 'Requires PHP', - 'UpdateURI' => 'Update URI', - ); - } - - return \get_file_data( __FILE__, $default_headers, 'plugin' ); -} - -/** - * Plugin Version Number used for caching. - * - * @deprecated 4.2.0 Use constant ACTIVITYPUB_PLUGIN_VERSION directly. - */ -function get_plugin_version() { - _deprecated_function( __FUNCTION__, '4.2.0', 'ACTIVITYPUB_PLUGIN_VERSION' ); - - return ACTIVITYPUB_PLUGIN_VERSION; -} - -// Check for CLI env, to add the CLI commands. -if ( defined( 'WP_CLI' ) && WP_CLI ) { - WP_CLI::add_command( - 'activitypub', - '\Activitypub\Cli', - array( - 'shortdesc' => 'ActivityPub related commands to manage plugin functionality and the federation of posts and comments.', - ) - ); -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/assets/css/activitypub-admin.css b/wp-content/upgrade-temp-backup/plugins/activitypub/assets/css/activitypub-admin.css deleted file mode 100644 index 2e181f2a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/assets/css/activitypub-admin.css +++ /dev/null @@ -1,272 +0,0 @@ -.activitypub-settings { - max-width: 800px; - margin: 0 auto; - position: relative; -} - -.settings_page_activitypub .notice { - max-width: 800px; - margin: 0 auto 30px; -} - -.settings_page_activitypub .update-nag { - margin: 25px 20px 15px 22px; -} - -.settings_page_activitypub .wrap { - padding-left: 22px; -} - -.activitypub-settings-header { - text-align: center; - margin: 0 0 1rem; - background: #fff; - border-bottom: 1px solid #dcdcde; -} - -.activitypub-settings-header h1 { - display: inline-block; - font-weight: 600; - margin: 0 0.8rem 1rem; - font-size: 23px; - padding: 9px 0 4px; - line-height: 1.3; -} - -.activitypub-settings-title-section { - display: flex; - align-items: center; - justify-content: center; - clear: both; - padding-top: 8px; -} - -.settings_page_activitypub #wpcontent { - padding-left: 0; -} - -.activitypub-settings-tabs-wrapper { - display: inline-flex; - vertical-align: top; - flex-wrap: nowrap; - gap: 0; -} - -.activitypub-settings-tab.active { - box-shadow: inset 0 -3px #3582c4; - font-weight: 600; -} - -.activitypub-settings-tab { - display: block; - text-decoration: none; - color: inherit; - padding: .5rem 1rem 1rem; - margin: 0 1rem; - transition: box-shadow .5s ease-in-out; -} - -.activitypub-settings .row { - margin-bottom: 16px; -} - -.activitypub-settings .row > div { - max-width: calc(100% - 24px); - display: inline-flex; - flex-direction: column; -} - -.activitypub-settings .row .description { - margin-top: 0; -} - -.wp-header-end { - visibility: hidden; - margin: -2px 0 0; -} - -summary { - cursor: pointer; - text-decoration: underline; - color: #2271b1; -} - -.activitypub-settings-accordion { - border: 1px solid #c3c4c7; -} - -.activitypub-settings-accordion-heading { - margin: 0; - border-top: 1px solid #c3c4c7; - font-size: inherit; - line-height: inherit; - font-weight: 600; - color: inherit; -} - -.activitypub-settings-accordion-heading:first-child { - border-top: none; -} - -.activitypub-settings-accordion-panel { - margin: 0; - padding: 1em 1.5em; - background: #fff; -} - -.activitypub-settings-accordion-trigger { - background: #fff; - border: 0; - color: #2c3338; - cursor: pointer; - display: flex; - font-weight: 400; - margin: 0; - padding: 1em 3.5em 1em 1.5em; - min-height: 46px; - position: relative; - text-align: left; - width: 100%; - align-items: center; - justify-content: space-between; - -webkit-user-select: auto; - user-select: auto; -} - -.activitypub-settings-accordion-trigger { - color: #2c3338; - cursor: pointer; - font-weight: 400; - text-align: left; -} - -.activitypub-settings-accordion-trigger .title { - pointer-events: none; - font-weight: 600; - flex-grow: 1; -} - -.activitypub-settings-accordion-trigger .icon, -.activitypub-settings-accordion-viewed .icon { - border: solid #50575e medium; - border-width: 0 2px 2px 0; - height: .5rem; - pointer-events: none; - position: absolute; - right: 1.5em; - top: 50%; - transform: translateY(-70%) rotate(45deg); - width: .5rem; -} - -.activitypub-settings-accordion-trigger[aria-expanded="true"] .icon { - transform: translateY(-30%) rotate(-135deg); -} - -.activitypub-settings-accordion-trigger:active, -.activitypub-settings-accordion-trigger:hover { - background: #f6f7f7; -} - -.activitypub-settings-accordion-trigger:focus { - color: #1d2327; - border: none; - box-shadow: none; - outline-offset: -1px; - outline: 2px solid #2271b1; - background-color: #f6f7f7; -} - -.activitypub-settings -input.blog-user-identifier { - text-align: right; -} - -.activitypub-settings -.header-image { - width: 100%; - height: 80px; - position: relative; - display: block; - margin-bottom: 40px; - background-image: rgb(168,165,175); - background-image: linear-gradient(180deg, red, yellow); - background-size: cover; -} - -.activitypub-settings .logo { - height: 80px; - width: 80px; - position: relative; - top: 40px; - left: 40px; -} - -.settings_page_activitypub .plugin-recommendations { - border-bottom: none; - margin-bottom: 0; -} - -#dashboard_right_now li a.activitypub-followers::before { - content: "\f307"; - font-family: dashicons; -} - -.repost .dashboard-comment-wrap, -.like .dashboard-comment-wrap { - padding-inline-start: 63px; -} - -.repost .dashboard-comment-wrap .comment-author, -.like .dashboard-comment-wrap .comment-author { - margin-block: 0; -} - -.activitypub-settings .welcome-tab-close { - position: absolute; - top: 0px; - right: 0px; - font-size: 13px; - padding: 0 5px 0 20px; - text-decoration: none; - z-index: 1; -} - -.activitypub-settings .welcome-tab-close::before { - position: absolute; - top: 0px; - left: 0; - transition: all .1s ease-in-out; - font: normal 16px/20px dashicons; - content: '\f335'; - font-size: 20px; -} - -.activitypub-notice .count { - display: inline-block; - vertical-align: top; - box-sizing: border-box; - margin: 1px 0 -1px 2px; - padding: 0 5px; - min-width: 18px; - height: 18px; - border-radius: 9px; - background-color: #dba617; - color: #fff; - font-size: 11px; - line-height: 1.6; - text-align: center; - z-index: 26; -} - -.activitypub-notice .dashicons-warning { - color: #dba617; -} - -.extra-fields-nav a + a { - margin-left: 8px; -} -.rtl .extra-fields-nav a + a { - margin-left: auto; - margin-right: 8px; -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/assets/css/activitypub-embed.css b/wp-content/upgrade-temp-backup/plugins/activitypub/assets/css/activitypub-embed.css deleted file mode 100644 index 0422fb40..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/assets/css/activitypub-embed.css +++ /dev/null @@ -1,115 +0,0 @@ -/** - * ActivityPub embed styles. - */ - -.activitypub-embed { - background: #fff; - border: 1px solid #e6e6e6; - border-radius: 12px; - padding: 0; - max-width: 100%; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; -} - -.activitypub-reply-block .activitypub-embed { - margin: 1em 0; -} - -.activitypub-embed-header { - padding: 15px; - display: flex; - align-items: center; - gap: 10px; -} - -.activitypub-embed-header img { - width: 48px; - height: 48px; - border-radius: 50%; -} - -.activitypub-embed-header-text { - flex-grow: 1; -} - -.activitypub-embed-header-text h2 { - color: #000; - font-size: 15px; - font-weight: 600; - margin: 0; - padding: 0; -} - -.activitypub-embed-header-text .ap-account { - color: #687684; - font-size: 14px; - text-decoration: none; -} - -.activitypub-embed-content { - padding: 0 15px 15px; -} - -.activitypub-embed-content .ap-title { - font-size: 23px; - font-weight: 600; - margin: 0 0 10px; - padding: 0; - color: #000; -} - -.activitypub-embed-content .ap-subtitle { - font-size: 15px; - color: #000; - margin: 0 0 15px; -} - -.activitypub-embed-content .ap-preview { - border: 1px solid #e6e6e6; - border-radius: 8px; - overflow: hidden; -} - -.activitypub-embed-content .ap-preview img { - width: 100%; - height: auto; - display: block; -} - -.activitypub-embed-content .ap-preview-text { - padding: 15px; -} - -.activitypub-embed-meta { - padding: 15px; - border-top: 1px solid #e6e6e6; - color: #687684; - font-size: 13px; - display: flex; - gap: 15px; -} - -.activitypub-embed-meta .ap-stat { - display: flex; - align-items: center; - gap: 5px; -} -@media only screen and (max-width: 399px) { - .activitypub-embed-meta span.ap-stat { - display: none !important; - } -} - -.activitypub-embed-meta a.ap-stat { - color: inherit; - text-decoration: none; -} - -.activitypub-embed-meta strong { - font-weight: 600; - color: #000; -} - -.activitypub-embed-meta .ap-stat-label { - color: #687684; -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/assets/img/mp.jpg b/wp-content/upgrade-temp-backup/plugins/activitypub/assets/img/mp.jpg deleted file mode 100644 index 05964b499d8e34c2bff132bc97a1fbc80bbff93b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3337 zcmd6pdpy)x8^C`*Gh@cM4l^j%s92Iq?zaicMBBRL(h`=J!Yo4W%#=1;BaxI_QBq_> zF-4`+%up#i?h}Q^CHK}um@#JFvG2BT+wRux``7#Y&ht6v_xYXYe4g)fp7Wd^|2h8^ zAm!xX=m3Bq2z)De06q_}uyeDwad&nzSKS|^6LuhYziOQRRy|eC*qG3W{i=>mI8`SX zdz@;VvB4KxRHI@8z6(8=sA{EZribLe0PFyWkkDEa2vpEu2p9|sg(2Z^VT2e`OiUCh zDk?4^EhR32k`NV@l9fWqpfMPXn53M%ELvU~jX|$10zw2fP?!h|CW00h6-WPL;XeRS z2oL}P2&e`Kp+E=<b=?(fe!ZNM_aJ4A3!QoRE5$d)#9%9@&<~D8%j7}3l%F4;FTfb?uhUOPqhDOFF zre@}LU)nq1b~rlicK7h~+VhR~zk-7I?GFhJi#Zq@7oU)rbmaS^=|3DhPRco*d**Cj zenDaBrLxOc$}6r`*4B}4-l}i7eTPD&HMcx^{G_$BtGlO{@w~5}IXp5t_Ii9`a*FkK ze&OBX(lVQ~#7MH07#@5srskW@%vc zW%*b!y%3P>Y7e0QiMoIqkkfueuS(Kw&RWdw+eU9wDvDZeS|$*3!Nl&m3=gxUVUMGq)s?F&Mq*2j7Fw5H>uu$vJi2&nY}=c1 zPGI9Wtr*hHHTK43%^DvmA=`=oM6v}@H))Av3lTyl!j~L;gRf;)s!qj!^S<_%pJXGYdk+&Yi@Ek8OQnaqfu(_JpmMTLwxN;Ye%&7vIve^SZ~nzyq*U^(%c_&zHaOzG6&W-=aUGzg;$@lmux0 ziH`C%hfqD{o^@8f#ybyfSX40KQ>A2g+6PKd=?HNB6D`ndaiyPQ=Y%Ps^(wr*y`*?k5 zpRzJy+E{{_sOiXv zeDHqGjk`Nnw3BmJPCL}Sv)tT4y>raGDga6+UWNZG)%?R66ARNeJeG}nox&cLAI zK?iICF=oob>yis-kN!w84^tdjm6LJw%YBZ#BCTPs-Mp*LkylsY%CbB$c##!_adY$n>#stu37FYv&;@2C=QBWE+nJX+NvG&UPX0p7ndd3ft$;ATEGd$;+J8BvtGrLN0%Z&+|-L=tRZPOXeS5Rw78%)O z8C{Qn?xZ6xlY6{5Dl}!qTGpn5`o^q{sZZq6?WV*N@<^82@l5>C=2wwNZDT(*J>;VB2#U|n z23mFl*L_jFopjqCNLd}O5q-Jr<7zw~%!~-gmrx?o;xQTib_u7cy}V7GqvUhIqx{j9 zufm^`=B%7|mF#FL{AtX1mrQuT^aSq41>~P!d%lu~Q!My^i1IzO!58>FP01#AP7WP^ zz@31!TgxrGhbF}@o}mQ3nIvqd=4RE8Gu~EDWdj!g0CEVX^V!6~P`EC06+MO{SADKT z%zBL@%@S64zC`mkR}o?eRjCBkUy8lmNR0#^pqSO{6btk0^&h0pl-IwC#%hgMygy*S z^)+G3{ulW`a6)W^Qj`^Q-dXW`9*RpJ@xxsV&Ac`(8@H1W=#(LM%-o}o6>_vRbL4YO zyR}r2mF9ps5=i|p%AXi3#y5*gu6R+a4rCO}&vc9$7QR(XmB9X?7Vi6y3R(PC!AYgW2vzs`@mdE&bxgxKjG zDp&o+3O0STLH%{Z`D50V0OZ|(@8>VL_kS*!QLNm;P~CJKgQQolA0D}s#|N%?y{+-9 zRv8}4>bEpedZ1#|IOVwDhQL<$1FTlf(nH7(R8V{#$~Fbf73V4I=R-@D7;UTg=*r0h zt3_XtGkA%V47MgF>~|I)TK{28W!U-RsUbOl7b`>0xkjo06>zK5>o*HAU-c40C13>r&$z1mjCV?RU}0K)f4!~006^- zw3x7}+sb*Cd#270_u)gPKUM3EjTV1?q5tt~37p3~fm{ioTcKU}VNG@FLV7moy?F#K}zGn>wb5{twnApX^O1enej z2Zmw(uS+VdH9a0X>s^K$WScg)9_LR>s@wODCqBI0o?|bxZ?ZfweQzhkb=#}X2Qo16 z1x>*4h6lda2QXBd3lCN8nBKNluZooPI5$fX)ko^4~wz%rgXkes^b}xS>QIdVrVU2&+Wg8+H8+W?N~W%WxGvjcc0!ttBxOZHQ5|>fuWD>jM*42HJa6n$Y~A(#tl4j+?tflw#!YHx^LR~P;e`K z_nlmFnvzL38{7Ya&)fBH*s`$r|D2pj6Lh;f4KfjFJ?z5EcKLX&c5A(kDW^=juLiSi zFq5BRxy`oDy7$*Pay|@T)9?zlRb4JSo+mk533OMvEL|NiZPs6@BQp@a@8BYES6MdM zuBSOqc0R0FdQ}|LHKQ&?xfOr?$g>DCbo1&I+Bu@rUgg%Kw|rZ5Xz;PJG3wBA71Qh zXWo|V+1*h<^%20?ys-5+6{g%@ZxNQqBG>r-!MD4BVI3(9-rrvgSc<3l$C#^gGD#P` zlrs9KOsMxXXr&LSbCX~-d&c=76Z+?L96@7<17IwP_}IOX>OIc3RS)*Z+Zoa?Dk%DY zU+>Z=G^H77=={^WcAn=83%NEo2AA!IDrOODRS-`$KL3;X5*_PTny-fNVt@5K(6 znl@s(%73%?-RAt1o)f4t%(&~FZ*}G}ixK3byC!j%kw>)qeFUIjwS$P#pm^6~_o&He zvsv7@;-`-w|F&YA-USZbT@`d2%#89}_fhWeZ5Nv3ug{I#72ip=Ia==5`!$0BK?gZX zWiML*#ceB08c}#n7x5zKtA|q%4j~wCF#Y!jKQzNPIAk7M51hD3)r&H#00%=ksz`&i>%ku$lJn4QG9Vy7?7 zv|dj+W7_B@k}N$18>ZwL76GwsM!kV1+CngpP4r0E1@KCE1Py288KfbNshN!9Wj80B zuCW!V;A`Zrl6JJT*)4K_LO|SI8>*r>Q#yt`^v9Gb`${UK#g2^~3A+9M&*lAnwrqyG z6kBH8`-G?i#0q;^hr})guV0HY6v>kULU4oOT8is=KD)*Z_pmLC@MNmy5HGf3j;5)N zn=E8C^f#CFVA1%8lVX$=u;(REXoitvum$kN9_)O$0YrCS$?Qgok z`E+aY;lF5;^JlwO#UXRADHXzvw*QOJSen;%B3%I#bZs?(r}@iV$DpV;q8)me5JgMO z4CmDjkBDPG9~~bH37sLWweK-YQ;`cG`+{Q{Ny7rP8ZB z3PE{*3H6cx2o|q6_MgnXl2(>5Z%qpqaOpaZz^eIgF-J?d0MeB>ro)87_&1Q?`uR?y zmukP9rdIqqta4=hdcM~FLD$S!$z$JUG&^wwFxg!$aCN7d+~oG|l!Qcz1iRO|em|MIp{Tl6mAi^{PxJK=Wq zx{R4%PuVa7U0tbp+eE>%?X-X6fXMzRP-Yvzj_$lhG3AnLu5cOXq6D?YHQu3z=@_lA zm+^{dEt8SiLhhWmL*S zS?8W2U@azSypI`bDu}cj8*LG-$uF(lnZh3w9ei!srn4K80OF{1$-!_`k%0<>9#Tlr@)LT@g zEEj@_$#9)OLN$Acxa)u)#8mh^>Cv{>Xs-Ibhzt59!X4@F{*ZOEgWP}y#}{otmhA@! zMSSp|`iMw9o<22zval%^EsfgY_gVEa6=OtjGXMw}t<)8Cyuf*W;-T?Kmi4v6+7wUb0-t5;Rd6>8fiBcaedaMB^3d7Oh*~^0iCXwG2P+Kp< z7AZ&)n}qI>BQ|R>&+4A!Zh5^5r?*gXcwYu3J};ox>g zv9N6Vzr5jZg^O$6)yH~6K=9nR5Zn?aB&kUoB&$&U9!WH1qyqlzbZ)Mmftd~W9%Qo_ z&cvEs;-NO!(tDBPw|B6C)^z6vVBIn;cIBs_)8{ajZgdGOyxwZ-Asp7M#!q5GqvXb( z2|rJBgM>0fb9nziFLY@kQsbuF@v?0ip>x+}f047uSkQol=_QdW?h)@rrJgH$lwR z#);Lf<~&C4IgbPG4+d(=WRY@y)bc7ry(wL74LSsX%1YK`1^T(BUKx8ACx#_Gt!E)` z1oW^_Pwi)cxv-OY2qkJ|Mp*LPe~9|DvCNbCn3dDsgE(C!mUe)S3PGSAxAyYDmbBH$ znAr-2Inm(ne#rVw^-|%$+%x=#z|1b|#5f`-E0qiSeXoo~QaN;2eSbvhj;{Q3C!|Yi z^<)ftKTY6R9>vd2Q?QW$(Gz}?TKd=^--+5!d3^PcxI&kQjYT$rit&zU+nHrEQJVZ6 z(x!At%umY9fw=^s$EQLla;15`q0So~l>XhF1B*6k^%~$%eQ9e1Erx>I;+&o0Wjvp>Zg{E z-&rT~gGCi|%g3h;5oWqsc>&Yi4x9E1kQpa5Lu6vM-^r^sJ3E@X@Bu#2QNg+Q{1gdn zq?Jlj14&Pi7ZrLSyNg{qaej`Z`?Hn9IZLt_43n~a0$=9Zq}{% zesapwjh>rf2Ynm{$0dFgg{0Et53e+qG{Q5no(1Y|fSACoR9<>B281N$Ur^fLl-6L- zQhW1f*Oo>9h2~$?mZ)9d_te3dbAR?8KH11_yPH>Jv^w4*EwuZXW+FEg%tvyj5y;|+5_dDDLo@I%{}qeR&gIv&kr1lt#;~@AXOS+U*OOfZ z`n#HoR!oslSB1WpS0*r>jU{0#ALhX~#f?%AO3M`PI*0^qUOub<5GN4SDYcKcgJx_G z=)6@?-5D`6F94~a+U$=)B2yNbsuP}IWOzRQf{g33_sj@Tw4b+3aPX^HUnrJSMgPJ3 z*FEJ(9%{Pr@Xm{e#1UJv5?ceOkYq>@s<6rbAnb0VI$nonv~Rd-#SN0~uMO=&sH;SLPUd&ww79d)^ylaa?!)h zZ|QVQ-%RY{LZU@ zBIOoCqdwJLvs(#3tX5!0yZ=$kmI($44T_rc?;sDU|0pH3^O)9lFv~N%&zGSRbx{(+?Fqa!fVJ~@;dOi$gyYu$c`Ui+-!VV2T*N#>=!4S4;&#Y+} zp${OT&T}hIg+9}R=C|Hp#hhM%IL3Wu6f{ik3;FT*GZ4AO_A6srC4`AvE%{`J!Dk6x zNja7$Rfn|_p_B?nezP@s)wSJj--n;M0qh(y%xnwnZ$)Hjw1^=5R&9rcffz`FtqfPj zg!abdpjVns>Kz=}dj;4vsSor3Qp4^05-3aNztRVX0EAP)2|egyknEJ(+Z$3qzoa9= z3dOsZoBpGW^h9&5-mr|Js_szS!Do*>Ci~V%;f=pF_X_0R6x88gd`d7Zx9CJz2{QNi z^asQ*j6c|FN$u?3aD2@PW<5DkLesXSp(}!w@(TJ=%s@TnnwP*ymO3z0nnG(H8AS&D zp&TtMLcM>hCthW^xOR&C_~y)={;$`VRFU)T$Er*Mz0(QrYMyolOzloPs#fiMQAr0K zI!?rZ{`h!0+BQTOQ@P`1yuo;M)sfH|tI>W4Cl%r1l^NX|g2a`SBlh#{lz)s<5cJ{x z?`LmRYM9R2hrlsty(@(mxUg?Cx{*6U36UP;+7lqVjh+n9>u<|J8Qt#W%wqnU7VSRX zwH<2YY~h1iy!A(Dtrett9sHfA7n zXYHKP%Afj~4xDP7-CRwbFP9(hF`OE}sZ~sgxy4wjpDfqDnhxnrJ=%RDXF4$y(mBZtWwEiVZ)3(z4qD-KV3&D4TqfB zP8fPrK2Wi-Cogh#1c(o=raA>WJGNz1G|R}(GOkT&TA{O>q!S-?Wt={HuH^#S`~B(f;` zyu4D^Dj7cZY(lu4^KbFOJj`pZi@A3SS5a(I2wPC@f7|SU7oeZ6l$aJU=KTwsetZmg zVP>V~>K9$)zfa02p6~XZkWI3A=!Y6Ma?})J^;|DWPqtbye+HMNAK_rw3DEc_K~0&e z9Z}B|r9Y`7Z#yhmrznbkd3pvik_0V)@9g-dr2BpPn_lRAQydn0_VP)lf zfy$QuhT(IN#&VcJH%$@d@p^$me|~%^k(-Bd*S*!Zf3yXN5DKh=&qc1%U|baIVsw!< zCUDreTQ{f;L!Cr->}n0jn&NZx@HLbwXoSq1D;HAf*3W4nHg?(8lpW zC*rjL#v|oFC|7;0mxkGG@gHMRSSJSpp9bckB$#Vhl?RNb8_}|g`CrNxAPE5Lj&8<5 zj128^9qeQsmT!h+y!JOjzj>*`Wr09qq8e~&yWA~`M5XS_uU2u3beBCx7)fDt2)tu2 zzM&$lVq&ZSvzWJ|4Tv~Ta7h>xb>VBZ&v6?yFZ?-L1_{TsF*J`!ouPx^rcj5b4;OVY z|HemKS;*la6YxZoPa2Mo8-U?K^=arY+kei5Myqk#3s zV@DoQ3}5KD8K?bax&I3;zQc)XPKSxj?w}yXcS_@;MI}DCE>aq!?kEG16kY@LZv;a6 zL7WD8fkuYNk@B-KW3DNCUq8?ty0iu7wdNo<@00!Cf4w?~lvS2FWeU*k0T3E*pNm3J z!hZRrm6$76nvXn{803sydo|=WrWK+h!0r`vnQe8Pc5iU&4nUyC+mIou{~=9%%(ra$ z5oM&MuWlXn`2e-Xo{KVPeXT~iNJ=`w4g$=LdQgI%IL1<`UqT)7RJRREMserKAV)OT z$DUVLuZPha>t8fl5k39!+_Al?ul&h@P}Jx-5=vNF>J&M}#;}5>K<1q`$n-uv;zk8* z!x*k5S`C4|B{)87J+d>wU|ju(r2+opaJM31ZH0vEvp*|nLxLFXpL1Fstt2EwsMtMv zB7O2Gm4h8$?k??5vtzi(a>cL5=`B;2*v~my&k{0sbG}V-?cSkXDc(WXdkwgKy&dyi zs~hnwU+9HE*D>2I{!%)z)B9{@etg1lkN2T^#{GP2EnAZ(whi&2x-fel;z1VdYa3$* z1acee$=S{YG!c0$6ob3u&S)N{Z|@;S~zWUWbH0gAejO+6JPeDHh4Mjfd`Y`18NEvI!CsD@LiP-6Vpl;PEi z|Gtxx{-&is(UCvV%$38(-%0gVrs;2KSKeXKWZFR^E03QFyz#F=DPu4M1nOi;va9SF z+L-AG|L683XZe}6-DjaT_v{h@58XpUuooCb0vmX&VUarls;!iLUq(5U_8q11FNQ2% z{M1%ZS16JUZo+*TrIl!NE4n{~mM6K$zI`V_P0HXTWMgjJy=dLQMHKHtsFEf4I{#&ZC`wc5E?2D7gAM9>aS|Cv#3q@_b zsF;RuYjiF1NIdd#!+;pw3O;t&h*tCW-=BpG>5CQPn1{ynY1vxm5ax-WO@ zM*msfu*5nLtDH#t!p~7Ui?RB=RwB(@PrgcGi|p~Gb4h9aQV*l|mA7cV5Z8TaUTmdf z>XkpbTkqrc+vs9hFbV>MOTcIdLgnB?_otwLECr1W$HsqF&8g>JY%V(t`!&`Jl|T3u z#NBZr3AqYKcR4P*oRaqostrU~Cx)M7*zx4e8AGCdtwfCC5Wks`GoCkDbw1y1rl&t? zdLM5li7#1I*3u1p_i0Uxg#t`DQUHC1g)Hus5UrKMwH-`vCGwtz1;jAZbE(EB9lDCt zJ25DZ=}%vaL4d+KgvBXrCNMP-P${D3?;GAMz}8^yZg8!0fYE;D+9|>p4vS%PJ1|9d zl+5eeWRm)*lM;aMU7^%nsqBeuqOeafx8UFa=p-;P3iXm0R}Y{MU?KTApl+j0jr#G{ zM3i&>O_=C_Hn0MA?|P>y1d_~KsA18!~WcPb~SForw?^(6A}UXecwU$ z&_8oAA#@Or{$ckO-D5P0>~P~SLl-?s!19yn zos(%D4UxARB?4rc*i=0@~?4Ea&0Mgjdr!ZOi8rkZ`=UA^f>RX?>cD>gN zn%;5WkgD`Jbyw*mXB4M-QzW-vKzOacL}+@V5+)V#9RgbW-f0YROwyC2dG-<$;2TSd;Q;s7^f@#K@KIqnM|AedI1>xL8&bT~PJ^4r)Qwh+7Lk@y-JwE&W= zSvP0Yt}ArxW)`o9E3`ij4~FEP!Kg+Be+lAlAZMlYnqupo9KT1Wa&1)0vAyt#YWIih z$Ozez>{H=mssbFBee6hG9k_s5ONilnD%8;!k%S&TffdQmp!njU$+JNMm7Sa@x1R-4 z$vM#te48`ECJ;R8Rt`MI2{ExDFV)PzEhF{4-EOXhzxHKuXCc1``%ySeKCToZzBU=F zg>mn&qPjzm(+hTvtlR(nk+H7?uSlA%Xi zvQJuu1eY;Lf3nFh=?OOQq-V35IiUnSSk@qd)yR8N55}GUE&Sy1A0I{K@BV3|5=9@_*{Z3j+cH@(oavY% z?`b0Y4@%?rC8D37;U)>=2PGsm#vUz(kU8O+LT)8D)CmwH_?7wDw)c8sNN? zLL{8*=cNd*U)@HjN&_^GBJB@^)LBq>^E;Vo#?xJ`RQO3+Nk*9&)%XL)*OMbc6e7k* zo)*7@JWn+QcE_cC<(}-#OkTLs^EeI9+9Cp!*~^%LxthmgHtKb|>m;zm(Hpe-<}Nx=B}RO#(geTT~TRS4XQo+#dWRKBEN z`OJjQQ_#pQvO!Wq6_MIB*OQ+jeY_*UB$8qewY=diiG>}Y{`|&XV!=*|W>vdQkZUbk zqq0s#yljHnjH&_qC5U^#zI;m^C?CiIo<=n2U4**r8z)mWeWvL|N47x>z8CcFXfaTN zqsxHMU+^0w5(buPtP8%Q(#4cC1T?{rOAVQ?JjM!<)3}{jk8h3Fw{4~Dmk=jbFm2i{ zZw&y32nuN61StDa$aVmFM;Hh{aT{s0f1kYKiRm=dE5woDghtTugGu@mT>ukHj1cZY zGRca&G{?w<8gb#^^F!pH{%tk0LmR>PI%5#b6J}W&J;mP9IY#8gRoN+;3_`35-f>(+ z@k-GPmc1g82;oY}iWFqW$X!{&Hz+&!cnEBEwqqos>~!oH3`YR(KaC+#Nv;@(aCz~> zIKUJ|+;sF0l(YR^fJ7C7Am8J)m<}x7Pd9|#c;#yaCN|ZDFjL-rm$F=_sYZ1P1)OdF zoQ<0Oz4y8Jmd3&|t^jqjh+BIA9~NsxDp>&>?FHaN7qp1d zAe3vZGopc0o=7XqnvFi*iK0LK4}UsUhIywQPHZ7FAC=Vud`7lhk>vN6(IARvZokkGPMih`de`~nb%cX7m|Z2%;_px>rMiXb zh6lfYXH&P|_Y_s4q_}*6TP!rwMDwzV)sie6W(5=KAEVN#g|P^GU)MSIZ{GktrHT3) z4-YM9H?K0{JCB8q&PLX1)89!5x42V$^Gxq#9NOS%dPlar zpX>=|NnaRd&I*16Q9Gn8l)*a$(@xw>cpNdUJkZX31`vlfW%}2tE;QG>AK-rw<1>k& z%eSEj4DgwD-N&Ng8**)9Wj>V;Vxms`&3!fypea|B+e#{^-74{}DMa3dM|^C?2eZ)` zQl$ErCOy(y&eu?oHOlLGg)HT)ShKLqV)JMAAx(l_HJh{?-(66Q_b+an!pQQ{)T{&P z6)5hTJ~U*Rwoc8S%25S@TkqKsTmXbq~C@NrR&)SaKGP9MS6 zCx(M2xG?C_kfo5@pYByALP~7x?*?~TxloraU({0DvgPY>8#e5YD7BDJcBWM!mxSAZ^vg{8nbq)t?7 zM}^T|SzRt`$TI8v_wyJ<1v1jDVTgVRe)f-{t$#+X6tL$LX_{_k>f2N}_fDYlT%-2? z-g7BvveK4t<^%5@)SqC=m$vMj-XscE#*!@DwOod`{s}yio!Tj?-WjkOe1Fd+_zEw1 zwP3e$DpEhZVR@FRcLO)8PC3)tQ*c%v(hH4V(&-R^8hSAfuefd6-U`0FI-_?wNd{#y;~;0Nnder1VEwOEhZUL zVKiJKtA4R_@CarPei@oUX`|o1K&FUQs?rg+@lI*K!JThPe@Rpixtbhu@{2&8`vyFU zUw#aKMS@)*kD+zqVe|RnhB|%>NRC>gQQP(|>zK!~NxiiH#VS~aJazREG}eW?0HJaN zku6HdyOab&W3p(4-V)Lf;Z2SosC~t;S0{G^hY=-!oaNbJA;U2kNHS7KA|3^bQ^PVK z+C1fW7o#mUl=8jy6QqZP+?u%npWVQ1;;n)|K`?rp%yOh8^?xIY8m%IJHqK{&-(aDC zR9t`C3F(pFIMKt(hnb!(H=<>-^a8z#D8H2G`?3xEyq%37Izctr!KMc(g)=G22oaD;FmRn|-ukEPMH_1- zpIB{3=wuXL|IKt2u<{BVgrMb%o$>rvkeu)QGtM!hNN8ZJDQFM%1q4Zfy;c6KiIScS zJeX1fDY3MjUdn6{eJp#+^3%FjKYZ$|i;+;Z5(pz?%wCy6{zVIGtgQ+^CcYj^HmVkiZ9Y|ioWk7H(Ni#&e%J7dh)h=@ZNXQ z$ziCFp%Cwij6k5;{fbkDGjkN+5#I=37Av%9^v=fAK;4`XiSW~cb|gCLtpOG?WDCw^ zb|;G!rq~m-mD+S`xkRzn)!vxL7f;+_2-*;<0s(t(m~e%QVGu@^jj0z9!p zqMaYDr-!K9C~0tIQd6ddu^D$TF+^T(jy~lfSDW3+bqAgW^&_wKXCkr|7*oowAa^>>b!Na086ovYrDIR)L!J6 z8(6)k!Fss{{$pLXV!uK&V%m!~l%4!`qDv@CkDdA|6}9-Wene)Dwv3z9X2cB@3Nn>C zY_J-77i^Rk!-AbhXDmQC$VxL^UZC>DPc9XysY=oQwu4G7LAy{^mSkUz-ci%ZuTsLs zB1xUp)8q@SqH#84LDuU**I1$L3ld2n72c?D5j(Gt0;l7TSfogXL`FGJ2CFbg-9HdJ zfR0i0Am!22D&+F=hHOvGX$Ul=uz^n?ay9PQ=O_Xb5F5$$u<+Vdq6-? z8PWPGri^7u{59UfLO$4vSb-e2cv_IsNN_9$r#;;&R#-=UV)O_QZFN@is_XvSr80Dj zCh1fUI8`E~oWzO0zFC{gZgFL$mhTRUH)Sq`A6My#^8Nc=A)Y+vw~=7g=-Jw(n9@sE=Fg)f& zh3>D&g}X_jpFOM)z9vXkY89k75KGahtydvX<2>kxlOaovZ9}ZS9bW!<( zALY^8$uA1_@5M{msarBpdIT=DmvX0g6|PF>kjghzWj`u~&FBIh4~xpfAMW8io0PaGT|Ev_I|Eut6jKi!|^*#H0l diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/assets/js/activitypub-admin.js b/wp-content/upgrade-temp-backup/plugins/activitypub/assets/js/activitypub-admin.js deleted file mode 100644 index 37117cab..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/assets/js/activitypub-admin.js +++ /dev/null @@ -1,21 +0,0 @@ -jQuery( function( $ ) { - // Accordion handling in various areas. - $( '.activitypub-settings-accordion' ).on( 'click', '.activitypub-settings-accordion-trigger', function() { - var isExpanded = ( 'true' === $( this ).attr( 'aria-expanded' ) ); - - if ( isExpanded ) { - $( this ).attr( 'aria-expanded', 'false' ); - $( '#' + $( this ).attr( 'aria-controls' ) ).attr( 'hidden', true ); - } else { - $( this ).attr( 'aria-expanded', 'true' ); - $( '#' + $( this ).attr( 'aria-controls' ) ).attr( 'hidden', false ); - } - } ); - - $(document).on( 'wp-plugin-install-success', function( event, response ) { - setTimeout( function() { - $( '.activate-now' ).removeClass( 'thickbox open-plugin-details-modal' ); - }, 1200 ); - } ); - -} ); diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/assets/js/activitypub-header-image.js b/wp-content/upgrade-temp-backup/plugins/activitypub/assets/js/activitypub-header-image.js deleted file mode 100644 index d43af9e9..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/assets/js/activitypub-header-image.js +++ /dev/null @@ -1,271 +0,0 @@ -/** - * Handle the header image setting in - * - * This is based on site-icon.js - * - * @see wp-admin/js/site-icon.js - */ - -/* global jQuery, wp */ - -( function ( $ ) { - var $chooseButton = $( '#activitypub-choose-from-library-button' ), - $headerImagePreviewWrapper = $( '#activitypub-header-image-preview-wrapper' ), - $headerImagePreview = $( '#activitypub-header-image-preview' ), - $hiddenDataField = $( '#activitypub_header_image' ), - $removeButton = $( '#activitypub-remove-header-image' ), - frame, - ImageCropperNoCustomizer; - - /** - * We register our own handler because the Core one invokes the Customizer, which fails the request unnecessarily - * for users who don't have the 'customize' capability. - * See https://github.com/Automattic/wordpress-activitypub/issues/846 - */ - ImageCropperNoCustomizer = wp.media.controller.CustomizeImageCropper.extend( { - doCrop: function( attachment ) { - var cropDetails = attachment.get( 'cropDetails' ), - control = this.get( 'control' ), - ratio = cropDetails.width / cropDetails.height; - - // Use crop measurements when flexible in both directions. - if ( control.params.flex_width && control.params.flex_height ) { - cropDetails.dst_width = cropDetails.width; - cropDetails.dst_height = cropDetails.height; - - // Constrain flexible side based on image ratio and size of the fixed side. - } else { - cropDetails.dst_width = control.params.flex_width ? control.params.height * ratio : control.params.width; - cropDetails.dst_height = control.params.flex_height ? control.params.width / ratio : control.params.height; - } - - return wp.ajax.post( 'crop-image', { - // where wp_customize: 'on' would be in Core, for no good reason I understand. - nonce: attachment.get( 'nonces' ).edit, - id: attachment.get( 'id' ), - context: control.id, - cropDetails: cropDetails - } ); - } - } ); - - - - /** - * Calculate image selection options based on the attachment dimensions. - * - * @since 6.5.0 - * - * @param {Object} attachment The attachment object representing the image. - * @return {Object} The image selection options. - */ - function calculateImageSelectOptions( attachment ) { - var realWidth = attachment.get( 'width' ), - realHeight = attachment.get( 'height' ), - xInit = 1500, - yInit = 500, - ratio = xInit / yInit, - xImg = xInit, - yImg = yInit, - x1, - y1, - imgSelectOptions; - - if ( realWidth / realHeight > ratio ) { - yInit = realHeight; - xInit = yInit * ratio; - } else { - xInit = realWidth; - yInit = xInit / ratio; - } - - x1 = ( realWidth - xInit ) / 2; - y1 = ( realHeight - yInit ) / 2; - - imgSelectOptions = { - aspectRatio: xInit + ':' + yInit, - handles: true, - keys: true, - instance: true, - persistent: true, - imageWidth: realWidth, - imageHeight: realHeight, - minWidth: xImg > xInit ? xInit : xImg, - minHeight: yImg > yInit ? yInit : yImg, - x1: x1, - y1: y1, - x2: xInit + x1, - y2: yInit + y1, - }; - - return imgSelectOptions; - } - - /** - * Initializes the media frame for selecting or cropping an image. - * - * @since 6.5.0 - */ - $chooseButton.on( 'click', function () { - var $el = $( this ); - var userId = $el.data( 'userId' ); - var mediaQuery = { type: 'image' }; - if ( userId ) { - mediaQuery.author = userId; - } - - // Create the media frame. - frame = wp.media( { - button: { - // Set the text of the button. - text: $el.data( 'update' ), - - // Don't close, we might need to crop. - close: false, - }, - states: [ - new wp.media.controller.Library( { - title: $el.data( 'choose-text' ), - library: wp.media.query( mediaQuery ), - date: false, - suggestedWidth: $el.data( 'width' ), - suggestedHeight: $el.data( 'height' ), - } ), - new ImageCropperNoCustomizer( { - control: { - id: 'activitypub-header-image', - params: { - width: $el.data( 'width' ), - height: $el.data( 'height' ), - }, - }, - imgSelectOptions: calculateImageSelectOptions, - } ), - ], - } ); - - frame.on( 'cropped', function ( attachment ) { - $hiddenDataField.val( attachment.id ); - switchToUpdate( attachment ); - frame.close(); - - // Start over with a frame that is so fresh and so clean clean. - frame = null; - } ); - - // When an image is selected, run a callback. - frame.on( 'select', function () { - // Grab the selected attachment. - var attachment = frame.state().get( 'selection' ).first(), - targetRatio = $el.data( 'width' ) / $el.data( 'height' ), - currentRatio = attachment.attributes.width / attachment.attributes.height, - alreadyCropped = false; - - // Check if the image already has the correct aspect ratio (with a small tolerance). - if ( Math.abs( currentRatio - targetRatio ) < 0.01 ) { - // Check if this is the same image that was already selected. - if ( attachment.id !== parseInt( $hiddenDataField.val(), 10 ) ) { - // This is a new image with the correct aspect ratio. - $hiddenDataField.val( attachment.id ); - } - - alreadyCropped = true; - } - - if ( alreadyCropped ) { - // Skip cropping for already cropped images. - switchToUpdate( attachment.attributes ); - frame.close(); - } else { - frame.setState( 'cropper' ); - } - } ); - - frame.open(); - } ); - - /** - * Update the UI when a header is selected. - * - * @since 6.5.0 - * - * @param {array} attributes The attributes for the attachment. - */ - function switchToUpdate( attributes ) { - var i18nAppAlternativeString, i18nBrowserAlternativeString; - - if ( attributes.alt ) { - i18nBrowserAlternativeString = wp.i18n.sprintf( - /* translators: %s: The selected image alt text. */ - wp.i18n.__( 'Header Image preview: Current image: %s' ), - attributes.alt - ); - } else { - i18nAppAlternativeString = wp.i18n.sprintf( - /* translators: %s: The selected image filename. */ - wp.i18n.__( - 'Header Image preview: The current image has no alternative text. The file name is: %s' - ), - attributes.filename - ); - i18nBrowserAlternativeString = wp.i18n.sprintf( - /* translators: %s: The selected image filename. */ - wp.i18n.__( - 'Header Image preview: The current image has no alternative text. The file name is: %s' - ), - attributes.filename - ); - } - - // Set activitypub-header-image-preview src. - $headerImagePreview.attr( { - src: attributes.url, - alt: i18nAppAlternativeString, - } ); - - // Remove hidden class from header image preview div and remove button. - $headerImagePreviewWrapper.removeClass( 'hidden' ); - $removeButton.removeClass( 'hidden' ); - - // If the choose button is not in the update state, swap the classes. - if ( $chooseButton.attr( 'data-state' ) !== '1' ) { - $chooseButton.attr( { - class: $chooseButton.attr( 'data-alt-classes' ), - 'data-alt-classes': $chooseButton.attr( 'class' ), - 'data-state': '1', - } ); - } - - // Swap the text of the choose button. - $chooseButton.text( $chooseButton.attr( 'data-update-text' ) ); - } - - /** - * Handles the click event of the remove button. - * - * @since 6.5.0 - */ - $removeButton.on( 'click', function () { - $hiddenDataField.val( 'false' ); - $( this ).toggleClass( 'hidden' ); - $headerImagePreviewWrapper.toggleClass( 'hidden' ); - $headerImagePreview.attr( { - src: '', - alt: '', - } ); - - /** - * Resets state to the button, for correct visual style and state. - * Updates the text of the button. - * Sets focus state to the button. - */ - $chooseButton - .attr( { - class: $chooseButton.attr( 'data-alt-classes' ), - 'data-alt-classes': $chooseButton.attr( 'class' ), - 'data-state': '', - } ) - .text( $chooseButton.attr( 'data-choose-text' ) ) - .trigger( 'focus' ); - } ); -} )( jQuery ); diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/editor-plugin/block.json b/wp-content/upgrade-temp-backup/plugins/activitypub/build/editor-plugin/block.json deleted file mode 100644 index f41effc5..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/editor-plugin/block.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "editor-plugin", - "title": "Editor Plugin: not a block, but block.json is very useful.", - "category": "widgets", - "icon": "admin-comments", - "keywords": [], - "editorScript": "file:./plugin.js" -} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/editor-plugin/plugin.asset.php b/wp-content/upgrade-temp-backup/plugins/activitypub/build/editor-plugin/plugin.asset.php deleted file mode 100644 index b753ae85..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/editor-plugin/plugin.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('react', 'wp-components', 'wp-core-data', 'wp-data', 'wp-editor', 'wp-element', 'wp-i18n', 'wp-plugins', 'wp-primitives', 'wp-url'), 'version' => '293b8e75ac7a589c5096'); diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/editor-plugin/plugin.js b/wp-content/upgrade-temp-backup/plugins/activitypub/build/editor-plugin/plugin.js deleted file mode 100644 index cad41787..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/editor-plugin/plugin.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e={20:(e,t,i)=>{var n=i(609),o=Symbol.for("react.element"),r=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),l=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,a={key:!0,ref:!0,__self:!0,__source:!0};t.jsx=function(e,t,i){var n,c={},s=null,p=null;for(n in void 0!==i&&(s=""+i),void 0!==t.key&&(s=""+t.key),void 0!==t.ref&&(p=t.ref),t)r.call(t,n)&&!a.hasOwnProperty(n)&&(c[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===c[n]&&(c[n]=t[n]);return{$$typeof:o,type:e,key:s,ref:p,props:c,_owner:l.current}}},848:(e,t,i)=>{e.exports=i(20)},609:e=>{e.exports=window.React}},t={};function i(n){var o=t[n];if(void 0!==o)return o.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,i),r.exports}var n=i(609);const o=window.wp.editor,r=window.wp.plugins,l=window.wp.components,a=window.wp.element,c=(0,a.forwardRef)((function({icon:e,size:t=24,...i},n){return(0,a.cloneElement)(e,{width:t,height:t,...i,ref:n})})),s=window.wp.primitives;var p=i(848);const u=(0,p.jsx)(s.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,p.jsx)(s.Path,{d:"M12 3.3c-4.8 0-8.8 3.9-8.8 8.8 0 4.8 3.9 8.8 8.8 8.8 4.8 0 8.8-3.9 8.8-8.8s-4-8.8-8.8-8.8zm6.5 5.5h-2.6C15.4 7.3 14.8 6 14 5c2 .6 3.6 2 4.5 3.8zm.7 3.2c0 .6-.1 1.2-.2 1.8h-2.9c.1-.6.1-1.2.1-1.8s-.1-1.2-.1-1.8H19c.2.6.2 1.2.2 1.8zM12 18.7c-1-.7-1.8-1.9-2.3-3.5h4.6c-.5 1.6-1.3 2.9-2.3 3.5zm-2.6-4.9c-.1-.6-.1-1.1-.1-1.8 0-.6.1-1.2.1-1.8h5.2c.1.6.1 1.1.1 1.8s-.1 1.2-.1 1.8H9.4zM4.8 12c0-.6.1-1.2.2-1.8h2.9c-.1.6-.1 1.2-.1 1.8 0 .6.1 1.2.1 1.8H5c-.2-.6-.2-1.2-.2-1.8zM12 5.3c1 .7 1.8 1.9 2.3 3.5H9.7c.5-1.6 1.3-2.9 2.3-3.5zM10 5c-.8 1-1.4 2.3-1.8 3.8H5.5C6.4 7 8 5.6 10 5zM5.5 15.3h2.6c.4 1.5 1 2.8 1.8 3.7-1.8-.6-3.5-2-4.4-3.7zM14 19c.8-1 1.4-2.2 1.8-3.7h2.6C17.6 17 16 18.4 14 19z"})}),v=(0,p.jsx)(s.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,p.jsx)(s.Path,{d:"M15.5 9.5a1 1 0 100-2 1 1 0 000 2zm0 1.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm-2.25 6v-2a2.75 2.75 0 00-2.75-2.75h-4A2.75 2.75 0 003.75 15v2h1.5v-2c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v2h1.5zm7-2v2h-1.5v-2c0-.69-.56-1.25-1.25-1.25H15v-1.5h2.5A2.75 2.75 0 0120.25 15zM9.5 8.5a1 1 0 11-2 0 1 1 0 012 0zm1.5 0a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z",fillRule:"evenodd"})}),w=(0,p.jsx)(s.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,p.jsx)(s.Path,{d:"M19.5 4.5h-7V6h4.44l-5.97 5.97 1.06 1.06L18 7.06v4.44h1.5v-7Zm-13 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-3H17v3a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h3V5.5h-3Z"})}),d=window.wp.data,_=window.wp.coreData,b=window.wp.url,h=window.wp.i18n,y=(0,n.createElement)(s.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,n.createElement)(s.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 18.5A6.5 6.5 0 0 1 6.93 7.931l9.139 9.138A6.473 6.473 0 0 1 12 18.5Zm5.123-2.498a6.5 6.5 0 0 0-9.124-9.124l9.124 9.124ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Z"}));(0,r.registerPlugin)("activitypub-editor-plugin",{render:()=>{const e=(0,d.useSelect)((e=>e("core/editor").getCurrentPostType()),[]),[t,i]=(0,_.useEntityProp)("postType",e,"meta"),r={verticalAlign:"middle",gap:"4px",justifyContent:"start",display:"inline-flex",alignItems:"center"},a=(e,t,i)=>(0,n.createElement)(l.Tooltip,{text:i},(0,n.createElement)(l.__experimentalText,{style:r},(0,n.createElement)(c,{icon:e}),t));return"wp_block"===e?null:(0,n.createElement)(o.PluginDocumentSettingPanel,{name:"activitypub",title:(0,h.__)("Fediverse ⁂","activitypub")},(0,n.createElement)(l.TextControl,{label:(0,h.__)("Content Warning","activitypub"),value:t?.activitypub_content_warning,onChange:e=>{i({...t,activitypub_content_warning:e})},placeholder:(0,h.__)("Optional content warning","activitypub"),help:(0,h.__)("Content warnings do not change the content on your site, only in the fediverse.","activitypub")}),(0,n.createElement)(l.RadioControl,{label:(0,h.__)("Visibility","activitypub"),help:(0,h.__)("This adjusts the visibility of a post in the fediverse, but note that it won't affect how the post appears on the blog.","activitypub"),selected:t?.activitypub_content_visibility||"public",options:[{label:a(u,(0,h.__)("Public","activitypub"),(0,h.__)("Post will be visible to everyone and appear in public timelines.","activitypub")),value:"public"},{label:a(v,(0,h.__)("Quiet public","activitypub"),(0,h.__)("Post will be visible to everyone but will not appear in public timelines.","activitypub")),value:"quiet_public"},{label:a(y,(0,h.__)("Do not federate","activitypub"),(0,h.__)("Post will not be shared to the Fediverse.","activitypub")),value:"local"}],onChange:e=>{i({...t,activitypub_content_visibility:e})},className:"activitypub-visibility"}))}}),(0,r.registerPlugin)("activitypub-editor-preview",{render:()=>{const e=(0,d.useSelect)((e=>e("core/editor").getCurrentPost().status));return(0,n.createElement)(n.Fragment,null,o.PluginPreviewMenuItem?(0,n.createElement)(o.PluginPreviewMenuItem,{onClick:()=>function(){const e=(0,d.select)("core/editor").getEditedPostPreviewLink(),t=(0,b.addQueryArgs)(e,{activitypub:"true"});window.open(t,"_blank")}(),icon:w,disabled:"auto-draft"===e},(0,h.__)("Fediverse preview ⁂","activitypub")):null)}})})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/block.json b/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/block.json deleted file mode 100644 index e799fbb5..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/block.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "$schema": "https://schemas.wp.org/trunk/block.json", - "name": "activitypub/follow-me", - "apiVersion": 3, - "version": "1.0.0", - "title": "Follow me on the Fediverse", - "category": "widgets", - "description": "Display your Fediverse profile so that visitors can follow you.", - "textdomain": "activitypub", - "icon": "groups", - "supports": { - "html": false, - "color": { - "gradients": true, - "link": true, - "__experimentalDefaultControls": { - "background": true, - "text": true, - "link": true - } - }, - "__experimentalBorder": { - "radius": true, - "width": true, - "color": true, - "style": true - }, - "typography": { - "fontSize": true, - "__experimentalDefaultControls": { - "fontSize": true - } - } - }, - "attributes": { - "selectedUser": { - "type": "string", - "default": "site" - }, - "buttonOnly": { - "type": "boolean", - "default": false - }, - "buttonText": { - "type": "string", - "default": "Follow" - }, - "buttonSize": { - "type": "string", - "default": "default", - "enum": [ - "small", - "default", - "compact" - ] - } - }, - "usesContext": [ - "postType", - "postId" - ], - "editorScript": "file:./index.js", - "viewScript": "file:./view.js", - "style": [ - "file:./style-view.css", - "wp-components" - ] -} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/index.asset.php b/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/index.asset.php deleted file mode 100644 index 48631347..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/index.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('react', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-primitives'), 'version' => '8f1a6f7e5f76d58a3204'); diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/index.js b/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/index.js deleted file mode 100644 index e6dae559..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/index.js +++ /dev/null @@ -1,3 +0,0 @@ -(()=>{"use strict";var e,t={919:(e,t,o)=>{const r=window.wp.blocks,n=window.wp.primitives;var l=o(848);const a=(0,l.jsx)(n.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,l.jsx)(n.Path,{d:"M15.5 9.5a1 1 0 100-2 1 1 0 000 2zm0 1.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm-2.25 6v-2a2.75 2.75 0 00-2.75-2.75h-4A2.75 2.75 0 003.75 15v2h1.5v-2c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v2h1.5zm7-2v2h-1.5v-2c0-.69-.56-1.25-1.25-1.25H15v-1.5h2.5A2.75 2.75 0 0120.25 15zM9.5 8.5a1 1 0 11-2 0 1 1 0 012 0zm1.5 0a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z",fillRule:"evenodd"})});var i=o(609);const c=window.wp.blockEditor,u=window.wp.i18n,s=window.wp.data,p=window.wp.coreData,d=window.wp.components,m=window.wp.element;function v(){return window._activityPubOptions||{}}const b=window.wp.apiFetch;var f=o.n(b);function y(e){return`var(--wp--preset--color--${e})`}function _(e){if("string"!=typeof e)return null;if(e.match(/^#/))return e.substring(0,7);const[,,t]=e.split("|");return y(t)}function h(e,t,o=null,r=""){return o?`${e}${r} { ${t}: ${o}; }\n`:""}function w(e,t,o,r){return h(e,"background-color",t)+h(e,"color",o)+h(e,"background-color",r,":hover")+h(e,"background-color",r,":focus")}function g({selector:e,style:t,backgroundColor:o}){const r=function(e,t,o){const r=`${e} .components-button`,n=("string"==typeof(l=o)?y(l):l?.color?.background||null)||t?.color?.background;var l;return w(r,_(t?.elements?.link?.color?.text),n,_(t?.elements?.link?.[":hover"]?.color?.text))}(e,t,o);return(0,i.createElement)("style",null,r)}const E=(0,l.jsx)(n.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,l.jsx)(n.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5 4.5h11a.5.5 0 0 1 .5.5v11a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5ZM3 5a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5Zm17 3v10.75c0 .69-.56 1.25-1.25 1.25H6v1.5h12.75a2.75 2.75 0 0 0 2.75-2.75V8H20Z"})}),x=(0,l.jsx)(n.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,l.jsx)(n.Path,{d:"M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z"})}),S=(0,m.forwardRef)((function({icon:e,size:t=24,...o},r){return(0,m.cloneElement)(e,{width:t,height:t,...o,ref:r})})),k=window.wp.compose,C="fediverse-remote-user";function O(e){try{return new URL(e),!0}catch(e){return!1}}function T({actionText:e,copyDescription:t,handle:o,resourceUrl:r,myProfile:n="",rememberProfile:l=!1}){const c=(0,u.__)("Loading...","activitypub"),s=(0,u.__)("Opening...","activitypub"),p=(0,u.__)("Error","activitypub"),v=(0,u.__)("Invalid","activitypub"),b=n||(0,u.__)("My Profile","activitypub"),[y,_]=(0,m.useState)(e),[h,w]=(0,m.useState)(E),g=(0,k.useCopyToClipboard)(o,(()=>{w(x),setTimeout((()=>w(E)),1e3)})),[T,N]=(0,m.useState)(""),[I,R]=(0,m.useState)(!0),{setRemoteUser:U}=function(){const[e,t]=(0,m.useState)(function(){const e=localStorage.getItem(C);return e?JSON.parse(e):{}}()),o=(0,m.useCallback)((e=>{!function(e){localStorage.setItem(C,JSON.stringify(e))}(e),t(e)}),[]),r=(0,m.useCallback)((()=>{localStorage.removeItem(C),t({})}),[]);return{template:e?.template||!1,profileURL:e?.profileURL||!1,setRemoteUser:o,deleteRemoteUser:r}}(),z=(0,m.useCallback)((()=>{let t;if(!O(T)&&!function(e){const t=e.replace(/^@/,"").split("@");return 2===t.length&&O(`https://${t[1]}`)}(T))return _(v),t=setTimeout((()=>_(e)),2e3),()=>clearTimeout(t);const o=r+T;_(c),f()({path:o}).then((({url:t,template:o})=>{I&&U({profileURL:T,template:o}),_(s),setTimeout((()=>{window.open(t,"_blank"),_(e)}),200)})).catch((()=>{_(p),setTimeout((()=>_(e)),2e3)}))}),[T]);return(0,i.createElement)("div",{className:"activitypub__dialog",role:"dialog","aria-labelledby":"dialog-title"},(0,i.createElement)("div",{className:"activitypub-dialog__section"},(0,i.createElement)("h4",{id:"dialog-title"},b),(0,i.createElement)("div",{className:"activitypub-dialog__description",id:"copy-description"},t),(0,i.createElement)("div",{className:"activitypub-dialog__button-group"},(0,i.createElement)("label",{htmlFor:"profile-handle",className:"screen-reader-text"},t),(0,i.createElement)("input",{type:"text",id:"profile-handle",value:o,readOnly:!0}),(0,i.createElement)(d.Button,{ref:g,"aria-label":(0,u.__)("Copy handle to clipboard","activitypub")},(0,i.createElement)(S,{icon:h}),(0,u.__)("Copy","activitypub")))),(0,i.createElement)("div",{className:"activitypub-dialog__section"},(0,i.createElement)("h4",{id:"remote-profile-title"},(0,u.__)("Your Profile","activitypub")),(0,i.createElement)("div",{className:"activitypub-dialog__description",id:"remote-profile-description"},(0,m.createInterpolateElement)((0,u.__)("Or, if you know your own profile, we can start things that way! (eg @yourusername@example.com)","activitypub"),{code:(0,i.createElement)("code",null)})),(0,i.createElement)("div",{className:"activitypub-dialog__button-group"},(0,i.createElement)("label",{htmlFor:"remote-profile",className:"screen-reader-text"},(0,u.__)("Enter your ActivityPub profile","activitypub")),(0,i.createElement)("input",{type:"text",id:"remote-profile",value:T,onKeyDown:e=>{"Enter"===e?.code&&z()},onChange:e=>N(e.target.value),"aria-invalid":y===v}),(0,i.createElement)(d.Button,{onClick:z,"aria-label":(0,u.__)("Submit profile","activitypub")},(0,i.createElement)(S,{icon:a}),y)),l&&(0,i.createElement)("div",{className:"activitypub-dialog__remember"},(0,i.createElement)(d.CheckboxControl,{checked:I,label:(0,u.__)("Remember me for easier comments","activitypub"),onChange:()=>{R(!I)}}))))}const N={avatar:"",webfinger:"@well@hello.dolly",name:(0,u.__)("Hello Dolly Fan Account","activitypub"),url:"#"};function I(e){if(!e)return N;const t={...N,...e};return t.avatar=t?.icon?.url,t}function R({profile:e,popupStyles:t,userId:o,buttonText:r,buttonOnly:n,buttonSize:l}){const{webfinger:a,avatar:c,name:u}=e,s=a.startsWith("@")?a:`@${a}`;return n?(0,i.createElement)("div",{className:"activitypub-profile"},(0,i.createElement)(U,{profile:e,popupStyles:t,userId:o,buttonText:r,buttonSize:l})):(0,i.createElement)("div",{className:"activitypub-profile"},(0,i.createElement)("img",{className:"activitypub-profile__avatar",src:c,alt:u}),(0,i.createElement)("div",{className:"activitypub-profile__content"},(0,i.createElement)("div",{className:"activitypub-profile__name"},u),(0,i.createElement)("div",{className:"activitypub-profile__handle",title:s},s)),(0,i.createElement)(U,{profile:e,popupStyles:t,userId:o,buttonText:r,buttonSize:l}))}function U({profile:e,popupStyles:t,userId:o,buttonText:r,buttonSize:n}){const[l,a]=(0,m.useState)(!1),c=(0,u.sprintf)(/* translators: %s: profile name */ /* translators: %s: profile name */ -(0,u.__)("Follow %s","activitypub"),e?.name);return(0,i.createElement)(i.Fragment,null,(0,i.createElement)(d.Button,{className:"activitypub-profile__follow",onClick:()=>a(!0),"aria-haspopup":"dialog","aria-expanded":l,"aria-label":(0,u.__)("Follow me on the Fediverse","activitypub"),size:n},r),l&&(0,i.createElement)(d.Modal,{className:"activitypub-profile__confirm activitypub__modal",onRequestClose:()=>a(!1),title:c,"aria-label":c,role:"dialog"},(0,i.createElement)(z,{profile:e,userId:o}),(0,i.createElement)("style",null,t)))}function z({profile:e,userId:t}){const{namespace:o}=v(),{webfinger:r}=e,n=(0,u.__)("Follow","activitypub"),l=`/${o}/actors/${t}/remote-follow?resource=`,a=(0,u.__)("Copy and paste my profile into the search field of your favorite fediverse app or server.","activitypub"),c=r.startsWith("@")?r:`@${r}`;return(0,i.createElement)(T,{actionText:n,copyDescription:a,handle:c,resourceUrl:l})}function $({selectedUser:e,style:t,backgroundColor:o,id:r,useId:n=!1,profileData:l=!1,buttonOnly:a=!1,buttonText:c=(0,u.__)("Follow","activitypub"),buttonSize:s="default"}){const[p,d]=(0,m.useState)(I()),b="site"===e?0:e,y=function(e){return w(".apfmd__button-group .components-button",_(e?.elements?.link?.color?.text)||"#111","#fff",_(e?.elements?.link?.[":hover"]?.color?.text)||"#333")}(t),h=n?{id:r}:{};return(0,m.useEffect)((()=>{l?d(I(l)):function(e){const{namespace:t}=v(),o={headers:{Accept:"application/activity+json"},path:`/${t}/actors/${e}`};return f()(o)}(b).then((e=>{d(I(e))}))}),[b,l]),(0,i.createElement)("div",{...h,className:"activitypub-follow-me-block-wrapper"},(0,i.createElement)(g,{selector:`#${r}`,style:t,backgroundColor:o}),(0,i.createElement)(R,{profile:p,userId:b,popupStyles:y,buttonText:c,buttonOnly:a,buttonSize:s}))}function P({name:e}){const{enabled:t}=v(),o=t?.site?"":(0,u.__)("It will be empty in other non-author contexts.","activitypub"),r=(0,u.sprintf)(/* translators: %1$s: block name, %2$s: extra information for non-author context */ /* translators: %1$s: block name, %2$s: extra information for non-author context */ -(0,u.__)("This %1$s block will adapt to the page it is on, displaying the user profile associated with a post author (in a loop) or a user archive. %2$s","activitypub"),e,o).trim();return(0,i.createElement)(d.Card,null,(0,i.createElement)(d.CardBody,null,(0,m.createInterpolateElement)(r,{strong:(0,i.createElement)("strong",null)})))}(0,r.registerBlockType)("activitypub/follow-me",{edit:function({attributes:e,setAttributes:t,context:{postType:o,postId:r}}){const n=(0,c.useBlockProps)({className:"activitypub-follow-me-block-wrapper"}),l=function({withInherit:e=!1}){const{enabled:t}=v(),o=t?.users?(0,s.useSelect)((e=>e("core").getUsers({who:"authors"}))):[];return(0,m.useMemo)((()=>{if(!o)return[];const r=[];return t?.site&&r.push({label:(0,u.__)("Site","activitypub"),value:"site"}),e&&t?.users&&r.push({label:(0,u.__)("Dynamic User","activitypub"),value:"inherit"}),o.reduce(((e,t)=>(e.push({label:t.name,value:`${t.id}`}),e)),r)}),[o])}({withInherit:!0}),{selectedUser:a,buttonOnly:b,buttonText:f,buttonSize:y}=e,_="inherit"===a,h=(0,s.useSelect)((e=>{const{getEditedEntityRecord:t}=e(p.store),n=t("postType",o,r)?.author;return null!=n?n:null}),[o,r]);return(0,m.useEffect)((()=>{l.length&&(l.find((({value:e})=>e===a))||t({selectedUser:l[0].value}))}),[a,l]),(0,i.createElement)("div",{...n},(0,i.createElement)(c.InspectorControls,{key:"activitypub-follow-me"},(0,i.createElement)(d.PanelBody,{title:(0,u.__)("Follow Me Options","activitypub")},l.length>1&&(0,i.createElement)(d.SelectControl,{label:(0,u.__)("Select User","activitypub"),value:e.selectedUser,options:l,onChange:e=>t({selectedUser:e})}),(0,i.createElement)(d.ToggleControl,{label:(0,u.__)("Button Only Mode","activitypub"),checked:b,onChange:e=>t({buttonOnly:e}),help:(0,u.__)("Only show the follow button without profile information","activitypub")}),(0,i.createElement)(d.TextControl,{label:(0,u.__)("Button Text","activitypub"),value:f,onChange:e=>t({buttonText:e})}),(0,i.createElement)(d.SelectControl,{label:(0,u.__)("Button Size","activitypub"),value:y,options:[{label:(0,u.__)("Default","activitypub"),value:"default"},{label:(0,u.__)("Compact","activitypub"),value:"compact"},{label:(0,u.__)("Small","activitypub"),value:"small"}],onChange:e=>t({buttonSize:e}),help:(0,u.__)("Choose the size of the follow button","activitypub")}))),_?h?(0,i.createElement)($,{...e,id:n.id,selectedUser:h}):(0,i.createElement)(P,{name:(0,u.__)("Follow Me","activitypub")}):(0,i.createElement)($,{...e,id:n.id}))},save:()=>null,icon:a})},20:(e,t,o)=>{var r=o(609),n=Symbol.for("react.element"),l=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),a=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};t.jsx=function(e,t,o){var r,c={},u=null,s=null;for(r in void 0!==o&&(u=""+o),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(s=t.ref),t)l.call(t,r)&&!i.hasOwnProperty(r)&&(c[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===c[r]&&(c[r]=t[r]);return{$$typeof:n,type:e,key:u,ref:s,props:c,_owner:a.current}}},848:(e,t,o)=>{e.exports=o(20)},609:e=>{e.exports=window.React}},o={};function r(e){var n=o[e];if(void 0!==n)return n.exports;var l=o[e]={exports:{}};return t[e](l,l.exports,r),l.exports}r.m=t,e=[],r.O=(t,o,n,l)=>{if(!o){var a=1/0;for(s=0;s=l)&&Object.keys(r.O).every((e=>r.O[e](o[c])))?o.splice(c--,1):(i=!1,l0&&e[s-1][2]>l;s--)e[s]=e[s-1];e[s]=[o,n,l]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={338:0,301:0};r.O.j=t=>0===e[t];var t=(t,o)=>{var n,l,a=o[0],i=o[1],c=o[2],u=0;if(a.some((t=>0!==e[t]))){for(n in i)r.o(i,n)&&(r.m[n]=i[n]);if(c)var s=c(r)}for(t&&t(o);ur(919)));n=r.O(n)})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/style-view-rtl.css b/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/style-view-rtl.css deleted file mode 100644 index eb3c8508..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/style-view-rtl.css +++ /dev/null @@ -1 +0,0 @@ -.activitypub__modal.components-modal__frame{background-color:#f7f7f7;color:#333}.activitypub__modal.components-modal__frame .components-modal__header-heading,.activitypub__modal.components-modal__frame h4{color:#333;letter-spacing:inherit;word-spacing:inherit}.activitypub__modal.components-modal__frame .components-modal__header .components-button:hover{color:var(--color-white)}.activitypub__dialog{max-width:40em}.activitypub__dialog h4{line-height:1;margin:0}.activitypub__dialog .activitypub-dialog__section{margin-bottom:2em}.activitypub__dialog .activitypub-dialog__remember{margin-top:1em}.activitypub__dialog .activitypub-dialog__description{font-size:var(--wp--preset--font-size--normal,.75rem);margin:.33em 0 1em}.activitypub__dialog .activitypub-dialog__button-group{align-items:flex-end;display:flex;justify-content:flex-end}.activitypub__dialog .activitypub-dialog__button-group svg{height:21px;margin-left:.5em;width:21px}.activitypub__dialog .activitypub-dialog__button-group input{background-color:var(--wp--preset--color--white);border-radius:0 50px 50px 0;border-width:1px;border:1px solid var(--wp--preset--color--black);color:var(--wp--preset--color--black);flex:1;font-size:16px;height:inherit;line-height:1;margin-left:0;padding:15px 23px}.activitypub__dialog .activitypub-dialog__button-group button{align-self:center;background-color:var(--wp--preset--color--black);border-radius:50px 0 0 50px;border-width:1px;color:var(--wp--preset--color--white);font-size:16px;height:inherit;line-height:1;margin-right:0;padding:15px 23px;text-decoration:none}.activitypub__dialog .activitypub-dialog__button-group button:hover{border:inherit}.activitypub-follow-me-block-wrapper{width:100%}.activitypub-follow-me-block-wrapper.has-background .activitypub-profile,.activitypub-follow-me-block-wrapper.has-border-color .activitypub-profile{padding-right:1rem;padding-left:1rem}.activitypub-follow-me-block-wrapper .activitypub-profile{align-items:center;display:flex;padding:1rem 0}.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__avatar{border-radius:50%;height:75px;margin-left:1rem;width:75px}.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__content{flex:1;min-width:0}.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__handle,.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__name{line-height:1.2;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__name{font-size:1.25em}.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__follow{align-self:center;background-color:var(--wp--preset--color--black);color:var(--wp--preset--color--white)}.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__follow:not(:only-child){margin-right:1rem} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/style-view.css b/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/style-view.css deleted file mode 100644 index 1c28cab0..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/style-view.css +++ /dev/null @@ -1 +0,0 @@ -.activitypub__modal.components-modal__frame{background-color:#f7f7f7;color:#333}.activitypub__modal.components-modal__frame .components-modal__header-heading,.activitypub__modal.components-modal__frame h4{color:#333;letter-spacing:inherit;word-spacing:inherit}.activitypub__modal.components-modal__frame .components-modal__header .components-button:hover{color:var(--color-white)}.activitypub__dialog{max-width:40em}.activitypub__dialog h4{line-height:1;margin:0}.activitypub__dialog .activitypub-dialog__section{margin-bottom:2em}.activitypub__dialog .activitypub-dialog__remember{margin-top:1em}.activitypub__dialog .activitypub-dialog__description{font-size:var(--wp--preset--font-size--normal,.75rem);margin:.33em 0 1em}.activitypub__dialog .activitypub-dialog__button-group{align-items:flex-end;display:flex;justify-content:flex-end}.activitypub__dialog .activitypub-dialog__button-group svg{height:21px;margin-right:.5em;width:21px}.activitypub__dialog .activitypub-dialog__button-group input{background-color:var(--wp--preset--color--white);border-radius:50px 0 0 50px;border-width:1px;border:1px solid var(--wp--preset--color--black);color:var(--wp--preset--color--black);flex:1;font-size:16px;height:inherit;line-height:1;margin-right:0;padding:15px 23px}.activitypub__dialog .activitypub-dialog__button-group button{align-self:center;background-color:var(--wp--preset--color--black);border-radius:0 50px 50px 0;border-width:1px;color:var(--wp--preset--color--white);font-size:16px;height:inherit;line-height:1;margin-left:0;padding:15px 23px;text-decoration:none}.activitypub__dialog .activitypub-dialog__button-group button:hover{border:inherit}.activitypub-follow-me-block-wrapper{width:100%}.activitypub-follow-me-block-wrapper.has-background .activitypub-profile,.activitypub-follow-me-block-wrapper.has-border-color .activitypub-profile{padding-left:1rem;padding-right:1rem}.activitypub-follow-me-block-wrapper .activitypub-profile{align-items:center;display:flex;padding:1rem 0}.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__avatar{border-radius:50%;height:75px;margin-right:1rem;width:75px}.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__content{flex:1;min-width:0}.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__handle,.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__name{line-height:1.2;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__name{font-size:1.25em}.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__follow{align-self:center;background-color:var(--wp--preset--color--black);color:var(--wp--preset--color--white)}.activitypub-follow-me-block-wrapper .activitypub-profile .activitypub-profile__follow:not(:only-child){margin-left:1rem} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/view.asset.php b/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/view.asset.php deleted file mode 100644 index 2f83bf76..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/view.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('react', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-primitives'), 'version' => '635ed3e6db3230ae865f'); diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/view.js b/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/view.js deleted file mode 100644 index fd9c268e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/follow-me/view.js +++ /dev/null @@ -1,2 +0,0 @@ -(()=>{"use strict";var e,t={5:(e,t,r)=>{var o=r(609);const a=window.wp.element,n=window.wp.domReady;var i=r.n(n);const l=window.wp.apiFetch;var c=r.n(l);const u=window.wp.components,s=window.wp.i18n;function p(e){return`var(--wp--preset--color--${e})`}function m(e){if("string"!=typeof e)return null;if(e.match(/^#/))return e.substring(0,7);const[,,t]=e.split("|");return p(t)}function d(e,t,r=null,o=""){return r?`${e}${o} { ${t}: ${r}; }\n`:""}function v(e,t,r,o){return d(e,"background-color",t)+d(e,"color",r)+d(e,"background-color",o,":hover")+d(e,"background-color",o,":focus")}function f({selector:e,style:t,backgroundColor:r}){const a=function(e,t,r){const o=`${e} .components-button`,a=("string"==typeof(n=r)?p(n):n?.color?.background||null)||t?.color?.background;var n;return v(o,m(t?.elements?.link?.color?.text),a,m(t?.elements?.link?.[":hover"]?.color?.text))}(e,t,r);return(0,o.createElement)("style",null,a)}const b=window.wp.primitives;var y=r(848);const _=(0,y.jsx)(b.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,y.jsx)(b.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5 4.5h11a.5.5 0 0 1 .5.5v11a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5ZM3 5a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5Zm17 3v10.75c0 .69-.56 1.25-1.25 1.25H6v1.5h12.75a2.75 2.75 0 0 0 2.75-2.75V8H20Z"})}),w=(0,y.jsx)(b.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,y.jsx)(b.Path,{d:"M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z"})}),h=(0,a.forwardRef)((function({icon:e,size:t=24,...r},o){return(0,a.cloneElement)(e,{width:t,height:t,...r,ref:o})})),g=(0,y.jsx)(b.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,y.jsx)(b.Path,{d:"M15.5 9.5a1 1 0 100-2 1 1 0 000 2zm0 1.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm-2.25 6v-2a2.75 2.75 0 00-2.75-2.75h-4A2.75 2.75 0 003.75 15v2h1.5v-2c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v2h1.5zm7-2v2h-1.5v-2c0-.69-.56-1.25-1.25-1.25H15v-1.5h2.5A2.75 2.75 0 0120.25 15zM9.5 8.5a1 1 0 11-2 0 1 1 0 012 0zm1.5 0a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z",fillRule:"evenodd"})}),E=window.wp.compose,x="fediverse-remote-user";function S(e){try{return new URL(e),!0}catch(e){return!1}}function k({actionText:e,copyDescription:t,handle:r,resourceUrl:n,myProfile:i="",rememberProfile:l=!1}){const p=(0,s.__)("Loading...","activitypub"),m=(0,s.__)("Opening...","activitypub"),d=(0,s.__)("Error","activitypub"),v=(0,s.__)("Invalid","activitypub"),f=i||(0,s.__)("My Profile","activitypub"),[b,y]=(0,a.useState)(e),[k,O]=(0,a.useState)(_),N=(0,E.useCopyToClipboard)(r,(()=>{O(w),setTimeout((()=>O(_)),1e3)})),[C,R]=(0,a.useState)(""),[I,T]=(0,a.useState)(!0),{setRemoteUser:$}=function(){const[e,t]=(0,a.useState)(function(){const e=localStorage.getItem(x);return e?JSON.parse(e):{}}()),r=(0,a.useCallback)((e=>{!function(e){localStorage.setItem(x,JSON.stringify(e))}(e),t(e)}),[]),o=(0,a.useCallback)((()=>{localStorage.removeItem(x),t({})}),[]);return{template:e?.template||!1,profileURL:e?.profileURL||!1,setRemoteUser:r,deleteRemoteUser:o}}(),z=(0,a.useCallback)((()=>{let t;if(!S(C)&&!function(e){const t=e.replace(/^@/,"").split("@");return 2===t.length&&S(`https://${t[1]}`)}(C))return y(v),t=setTimeout((()=>y(e)),2e3),()=>clearTimeout(t);const r=n+C;y(p),c()({path:r}).then((({url:t,template:r})=>{I&&$({profileURL:C,template:r}),y(m),setTimeout((()=>{window.open(t,"_blank"),y(e)}),200)})).catch((()=>{y(d),setTimeout((()=>y(e)),2e3)}))}),[C]);return(0,o.createElement)("div",{className:"activitypub__dialog",role:"dialog","aria-labelledby":"dialog-title"},(0,o.createElement)("div",{className:"activitypub-dialog__section"},(0,o.createElement)("h4",{id:"dialog-title"},f),(0,o.createElement)("div",{className:"activitypub-dialog__description",id:"copy-description"},t),(0,o.createElement)("div",{className:"activitypub-dialog__button-group"},(0,o.createElement)("label",{htmlFor:"profile-handle",className:"screen-reader-text"},t),(0,o.createElement)("input",{type:"text",id:"profile-handle",value:r,readOnly:!0}),(0,o.createElement)(u.Button,{ref:N,"aria-label":(0,s.__)("Copy handle to clipboard","activitypub")},(0,o.createElement)(h,{icon:k}),(0,s.__)("Copy","activitypub")))),(0,o.createElement)("div",{className:"activitypub-dialog__section"},(0,o.createElement)("h4",{id:"remote-profile-title"},(0,s.__)("Your Profile","activitypub")),(0,o.createElement)("div",{className:"activitypub-dialog__description",id:"remote-profile-description"},(0,a.createInterpolateElement)((0,s.__)("Or, if you know your own profile, we can start things that way! (eg @yourusername@example.com)","activitypub"),{code:(0,o.createElement)("code",null)})),(0,o.createElement)("div",{className:"activitypub-dialog__button-group"},(0,o.createElement)("label",{htmlFor:"remote-profile",className:"screen-reader-text"},(0,s.__)("Enter your ActivityPub profile","activitypub")),(0,o.createElement)("input",{type:"text",id:"remote-profile",value:C,onKeyDown:e=>{"Enter"===e?.code&&z()},onChange:e=>R(e.target.value),"aria-invalid":b===v}),(0,o.createElement)(u.Button,{onClick:z,"aria-label":(0,s.__)("Submit profile","activitypub")},(0,o.createElement)(h,{icon:g}),b)),l&&(0,o.createElement)("div",{className:"activitypub-dialog__remember"},(0,o.createElement)(u.CheckboxControl,{checked:I,label:(0,s.__)("Remember me for easier comments","activitypub"),onChange:()=>{T(!I)}}))))}function O(){return window._activityPubOptions||{}}const N={avatar:"",webfinger:"@well@hello.dolly",name:(0,s.__)("Hello Dolly Fan Account","activitypub"),url:"#"};function C(e){if(!e)return N;const t={...N,...e};return t.avatar=t?.icon?.url,t}function R({profile:e,popupStyles:t,userId:r,buttonText:a,buttonOnly:n,buttonSize:i}){const{webfinger:l,avatar:c,name:u}=e,s=l.startsWith("@")?l:`@${l}`;return n?(0,o.createElement)("div",{className:"activitypub-profile"},(0,o.createElement)(I,{profile:e,popupStyles:t,userId:r,buttonText:a,buttonSize:i})):(0,o.createElement)("div",{className:"activitypub-profile"},(0,o.createElement)("img",{className:"activitypub-profile__avatar",src:c,alt:u}),(0,o.createElement)("div",{className:"activitypub-profile__content"},(0,o.createElement)("div",{className:"activitypub-profile__name"},u),(0,o.createElement)("div",{className:"activitypub-profile__handle",title:s},s)),(0,o.createElement)(I,{profile:e,popupStyles:t,userId:r,buttonText:a,buttonSize:i}))}function I({profile:e,popupStyles:t,userId:r,buttonText:n,buttonSize:i}){const[l,c]=(0,a.useState)(!1),p=(0,s.sprintf)(/* translators: %s: profile name */ /* translators: %s: profile name */ -(0,s.__)("Follow %s","activitypub"),e?.name);return(0,o.createElement)(o.Fragment,null,(0,o.createElement)(u.Button,{className:"activitypub-profile__follow",onClick:()=>c(!0),"aria-haspopup":"dialog","aria-expanded":l,"aria-label":(0,s.__)("Follow me on the Fediverse","activitypub"),size:i},n),l&&(0,o.createElement)(u.Modal,{className:"activitypub-profile__confirm activitypub__modal",onRequestClose:()=>c(!1),title:p,"aria-label":p,role:"dialog"},(0,o.createElement)(T,{profile:e,userId:r}),(0,o.createElement)("style",null,t)))}function T({profile:e,userId:t}){const{namespace:r}=O(),{webfinger:a}=e,n=(0,s.__)("Follow","activitypub"),i=`/${r}/actors/${t}/remote-follow?resource=`,l=(0,s.__)("Copy and paste my profile into the search field of your favorite fediverse app or server.","activitypub"),c=a.startsWith("@")?a:`@${a}`;return(0,o.createElement)(k,{actionText:n,copyDescription:l,handle:c,resourceUrl:i})}function $({selectedUser:e,style:t,backgroundColor:r,id:n,useId:i=!1,profileData:l=!1,buttonOnly:u=!1,buttonText:p=(0,s.__)("Follow","activitypub"),buttonSize:d="default"}){const[b,y]=(0,a.useState)(C()),_="site"===e?0:e,w=function(e){return v(".apfmd__button-group .components-button",m(e?.elements?.link?.color?.text)||"#111","#fff",m(e?.elements?.link?.[":hover"]?.color?.text)||"#333")}(t),h=i?{id:n}:{};return(0,a.useEffect)((()=>{l?y(C(l)):function(e){const{namespace:t}=O(),r={headers:{Accept:"application/activity+json"},path:`/${t}/actors/${e}`};return c()(r)}(_).then((e=>{y(C(e))}))}),[_,l]),(0,o.createElement)("div",{...h,className:"activitypub-follow-me-block-wrapper"},(0,o.createElement)(f,{selector:`#${n}`,style:t,backgroundColor:r}),(0,o.createElement)(R,{profile:b,userId:_,popupStyles:w,buttonText:p,buttonOnly:u,buttonSize:d}))}let z=1;i()((()=>{[].forEach.call(document.querySelectorAll(".activitypub-follow-me-block-wrapper"),(e=>{const t=JSON.parse(e.dataset.attrs);(0,a.createRoot)(e).render((0,o.createElement)($,{...t,id:"activitypub-follow-me-block-"+z++,useId:!0}))}))}))},20:(e,t,r)=>{var o=r(609),a=Symbol.for("react.element"),n=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),i=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};t.jsx=function(e,t,r){var o,c={},u=null,s=null;for(o in void 0!==r&&(u=""+r),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(s=t.ref),t)n.call(t,o)&&!l.hasOwnProperty(o)&&(c[o]=t[o]);if(e&&e.defaultProps)for(o in t=e.defaultProps)void 0===c[o]&&(c[o]=t[o]);return{$$typeof:a,type:e,key:u,ref:s,props:c,_owner:i.current}}},848:(e,t,r)=>{e.exports=r(20)},609:e=>{e.exports=window.React}},r={};function o(e){var a=r[e];if(void 0!==a)return a.exports;var n=r[e]={exports:{}};return t[e](n,n.exports,o),n.exports}o.m=t,e=[],o.O=(t,r,a,n)=>{if(!r){var i=1/0;for(s=0;s=n)&&Object.keys(o.O).every((e=>o.O[e](r[c])))?r.splice(c--,1):(l=!1,n0&&e[s-1][2]>n;s--)e[s]=e[s-1];e[s]=[r,a,n]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={41:0,301:0};o.O.j=t=>0===e[t];var t=(t,r)=>{var a,n,i=r[0],l=r[1],c=r[2],u=0;if(i.some((t=>0!==e[t]))){for(a in l)o.o(l,a)&&(o.m[a]=l[a]);if(c)var s=c(o)}for(t&&t(r);uo(5)));a=o.O(a)})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/block.json b/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/block.json deleted file mode 100644 index 078b82f3..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/block.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "$schema": "https://schemas.wp.org/trunk/block.json", - "name": "activitypub/followers", - "apiVersion": 3, - "version": "1.0.0", - "title": "Fediverse Followers", - "category": "widgets", - "description": "Display your followers from the Fediverse on your website.", - "textdomain": "activitypub", - "icon": "groups", - "supports": { - "html": false - }, - "attributes": { - "title": { - "type": "string", - "default": "Fediverse Followers" - }, - "selectedUser": { - "type": "string", - "default": "site" - }, - "per_page": { - "type": "number", - "default": 10 - }, - "order": { - "type": "string", - "default": "desc", - "enum": [ - "asc", - "desc" - ] - } - }, - "usesContext": [ - "postType", - "postId" - ], - "styles": [ - { - "name": "default", - "label": "No Lines", - "isDefault": true - }, - { - "name": "with-lines", - "label": "Lines" - }, - { - "name": "compact", - "label": "Compact" - } - ], - "editorScript": "file:./index.js", - "viewScript": "file:./view.js", - "style": [ - "file:./style-view.css", - "wp-block-query-pagination" - ] -} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/index.asset.php b/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/index.asset.php deleted file mode 100644 index 9b0afcfa..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/index.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('react', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-core-data', 'wp-data', 'wp-element', 'wp-i18n', 'wp-primitives', 'wp-url'), 'version' => 'e98a40c18060cbb88187'); diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/index.js b/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/index.js deleted file mode 100644 index 9bec7474..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/index.js +++ /dev/null @@ -1,4 +0,0 @@ -(()=>{var e={20:(e,t,a)=>{"use strict";var r=a(609),n=Symbol.for("react.element"),l=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),o=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i={key:!0,ref:!0,__self:!0,__source:!0};t.jsx=function(e,t,a){var r,c={},s=null,p=null;for(r in void 0!==a&&(s=""+a),void 0!==t.key&&(s=""+t.key),void 0!==t.ref&&(p=t.ref),t)l.call(t,r)&&!i.hasOwnProperty(r)&&(c[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===c[r]&&(c[r]=t[r]);return{$$typeof:n,type:e,key:s,ref:p,props:c,_owner:o.current}}},848:(e,t,a)=>{"use strict";e.exports=a(20)},609:e=>{"use strict";e.exports=window.React},942:(e,t)=>{var a;!function(){"use strict";var r={}.hasOwnProperty;function n(){for(var e="",t=0;t{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";const e=window.wp.blocks,t=window.wp.primitives;var r=a(848);const n=(0,r.jsx)(t.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,r.jsx)(t.Path,{d:"M15.5 9.5a1 1 0 100-2 1 1 0 000 2zm0 1.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm-2.25 6v-2a2.75 2.75 0 00-2.75-2.75h-4A2.75 2.75 0 003.75 15v2h1.5v-2c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v2h1.5zm7-2v2h-1.5v-2c0-.69-.56-1.25-1.25-1.25H15v-1.5h2.5A2.75 2.75 0 0120.25 15zM9.5 8.5a1 1 0 11-2 0 1 1 0 012 0zm1.5 0a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z",fillRule:"evenodd"})});var l=a(609);const o=window.wp.components,i=window.wp.element,c=window.wp.blockEditor,s=window.wp.data,p=window.wp.coreData,u=window.wp.i18n,m=window.wp.apiFetch;var v=a.n(m);const d=window.wp.url;var w=a(942),b=a.n(w);function f({active:e,children:t,page:a,pageClick:r,className:n}){const o=b()("wp-block activitypub-pager",n,{current:e});return(0,l.createElement)("a",{className:o,onClick:t=>{t.preventDefault(),!e&&r(a)}},t)}function y({compact:e,nextLabel:t,page:a,pageClick:r,perPage:n,prevLabel:o,total:i,variant:c="outlined"}){const s=((e,t)=>{let a=[1,e-2,e-1,e,e+1,e+2,t];a.sort(((e,t)=>e-t)),a=a.filter(((e,a,r)=>e>=1&&e<=t&&r.lastIndexOf(e)===a));for(let e=a.length-2;e>=0;e--)a[e]===a[e+1]&&a.splice(e+1,1);return a})(a,Math.ceil(i/n)),p=b()("alignwide wp-block-query-pagination is-content-justification-space-between is-layout-flex wp-block-query-pagination-is-layout-flex",`is-${c}`,{"is-compact":e});return(0,l.createElement)("nav",{className:p},o&&(0,l.createElement)(f,{key:"prev",page:a-1,pageClick:r,active:1===a,"aria-label":o,className:"wp-block-query-pagination-previous block-editor-block-list__block"},o),!e&&(0,l.createElement)("div",{className:"block-editor-block-list__block wp-block wp-block-query-pagination-numbers"},s.map((e=>(0,l.createElement)(f,{key:e,page:e,pageClick:r,active:e===a,className:"page-numbers"},e)))),t&&(0,l.createElement)(f,{key:"next",page:a+1,pageClick:r,active:a===Math.ceil(i/n),"aria-label":t,className:"wp-block-query-pagination-next block-editor-block-list__block"},t))}function g(){return window._activityPubOptions||{}}function h({selectedUser:e,per_page:t,order:a,title:r,page:n,setPage:o,className:c="",followLinks:s=!0,followerData:p=!1}){const m="site"===e?0:e,[w,b]=(0,l.useState)([]),[f,h]=(0,l.useState)(0),[k,E]=(0,l.useState)(0),[x,S]=function(){const[e,t]=(0,l.useState)(1);return[e,t]}(),N=n||x,C=o||S,O=(0,i.createInterpolateElement)(/* translators: arrow for previous followers link */ /* translators: arrow for previous followers link */ -(0,u.__)(" Less","activitypub"),{span:(0,l.createElement)("span",{className:"wp-block-query-pagination-previous-arrow is-arrow-arrow","aria-hidden":"true"})}),P=(0,i.createInterpolateElement)(/* translators: arrow for next followers link */ /* translators: arrow for next followers link */ -(0,u.__)("More ","activitypub"),{span:(0,l.createElement)("span",{className:"wp-block-query-pagination-next-arrow is-arrow-arrow","aria-hidden":"true"})}),I=(e,a)=>{b(e),E(a),h(Math.ceil(a/t))};return(0,l.useEffect)((()=>{if(p&&1===N)return I(p.followers,p.total);const e=function(e,t,a,r){const{namespace:n}=g(),l=`/${n}/actors/${e}/followers`,o={per_page:t,order:a,page:r,context:"full"};return(0,d.addQueryArgs)(l,o)}(m,t,a,N);v()({path:e}).then((e=>I(e.orderedItems,e.totalItems))).catch((()=>{}))}),[m,t,a,N,p]),(0,l.createElement)("div",{className:"activitypub-follower-block "+c},(0,l.createElement)("h3",null,r),(0,l.createElement)("ul",null,w&&w.map((e=>(0,l.createElement)("li",{key:e.url},(0,l.createElement)(_,{...e,followLinks:s}))))),f>1&&(0,l.createElement)(y,{page:N,perPage:t,total:k,pageClick:C,nextLabel:P,prevLabel:O,compact:"is-style-compact"===c}))}function _({name:e,icon:t,url:a,preferredUsername:r,followLinks:n=!0}){const i=`@${r}`,c={};return n||(c.onClick=e=>e.preventDefault()),(0,l.createElement)(o.ExternalLink,{className:"activitypub-link",href:a,title:i,...c},(0,l.createElement)("img",{width:"40",height:"40",src:t.url,className:"avatar activitypub-avatar",alt:e}),(0,l.createElement)("span",{className:"activitypub-actor"},(0,l.createElement)("strong",{className:"activitypub-name"},e),(0,l.createElement)("span",{className:"sep"},"/"),(0,l.createElement)("span",{className:"activitypub-handle"},i)))}function k({name:e}){const{enabled:t}=g(),a=t?.site?"":(0,u.__)("It will be empty in other non-author contexts.","activitypub"),r=(0,u.sprintf)(/* translators: %1$s: block name, %2$s: extra information for non-author context */ /* translators: %1$s: block name, %2$s: extra information for non-author context */ -(0,u.__)("This %1$s block will adapt to the page it is on, displaying the user profile associated with a post author (in a loop) or a user archive. %2$s","activitypub"),e,a).trim();return(0,l.createElement)(o.Card,null,(0,l.createElement)(o.CardBody,null,(0,i.createInterpolateElement)(r,{strong:(0,l.createElement)("strong",null)})))}(0,e.registerBlockType)("activitypub/followers",{edit:function({attributes:e,setAttributes:t,context:{postType:a,postId:r}}){const{order:n,per_page:m,selectedUser:v,title:d}=e,w=(0,c.useBlockProps)(),[b,f]=(0,i.useState)(1),y=[{label:(0,u.__)("New to old","activitypub"),value:"desc"},{label:(0,u.__)("Old to new","activitypub"),value:"asc"}],_=function({withInherit:e=!1}){const{enabled:t}=g(),a=t?.users?(0,s.useSelect)((e=>e("core").getUsers({who:"authors"}))):[];return(0,i.useMemo)((()=>{if(!a)return[];const r=[];return t?.site&&r.push({label:(0,u.__)("Site","activitypub"),value:"site"}),e&&t?.users&&r.push({label:(0,u.__)("Dynamic User","activitypub"),value:"inherit"}),a.reduce(((e,t)=>(e.push({label:t.name,value:`${t.id}`}),e)),r)}),[a])}({withInherit:!0}),E=e=>a=>{f(1),t({[e]:a})},x=(0,s.useSelect)((e=>{const{getEditedEntityRecord:t}=e(p.store),n=t("postType",a,r)?.author;return null!=n?n:null}),[a,r]);return(0,i.useEffect)((()=>{_.length&&(_.find((({value:e})=>e===v))||t({selectedUser:_[0].value}))}),[v,_]),(0,l.createElement)("div",{...w},(0,l.createElement)(c.InspectorControls,{key:"setting"},(0,l.createElement)(o.PanelBody,{title:(0,u.__)("Followers Options","activitypub")},(0,l.createElement)(o.TextControl,{label:(0,u.__)("Title","activitypub"),help:(0,u.__)("Title to display above the list of followers. Blank for none.","activitypub"),value:d,onChange:e=>t({title:e})}),_.length>1&&(0,l.createElement)(o.SelectControl,{label:(0,u.__)("Select User","activitypub"),value:v,options:_,onChange:E("selectedUser")}),(0,l.createElement)(o.SelectControl,{label:(0,u.__)("Sort","activitypub"),value:n,options:y,onChange:E("order")}),(0,l.createElement)(o.RangeControl,{label:(0,u.__)("Number of Followers","activitypub"),value:m,onChange:E("per_page"),min:1,max:10}))),"inherit"===v?x?(0,l.createElement)(h,{...e,page:b,setPage:f,followLinks:!1,selectedUser:x}):(0,l.createElement)(k,{name:(0,u.__)("Followers","activitypub")}):(0,l.createElement)(h,{...e,page:b,setPage:f,followLinks:!1}))},save:()=>null,icon:n})})()})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/style-view-rtl.css b/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/style-view-rtl.css deleted file mode 100644 index d6e565ff..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/style-view-rtl.css +++ /dev/null @@ -1 +0,0 @@ -.activitypub-follower-block.is-style-compact .activitypub-handle,.activitypub-follower-block.is-style-compact .sep{display:none}.activitypub-follower-block.is-style-with-lines ul li{border-bottom:.5px solid;margin-bottom:.5rem;padding-bottom:.5rem}.activitypub-follower-block.is-style-with-lines ul li:last-child{border-bottom:none}.activitypub-follower-block.is-style-with-lines .activitypub-handle,.activitypub-follower-block.is-style-with-lines .activitypub-name{text-decoration:none}.activitypub-follower-block.is-style-with-lines .activitypub-handle:hover,.activitypub-follower-block.is-style-with-lines .activitypub-name:hover{text-decoration:underline}.activitypub-follower-block ul{margin:0!important;padding:0!important}.activitypub-follower-block li{display:flex;margin-bottom:1rem}.activitypub-follower-block img{border-radius:50%;height:40px;margin-left:var(--wp--preset--spacing--20,.5rem);width:40px}.activitypub-follower-block .activitypub-link{align-items:center;color:inherit!important;display:flex;flex-flow:row nowrap;max-width:100%;text-decoration:none!important}.activitypub-follower-block .activitypub-handle,.activitypub-follower-block .activitypub-name{text-decoration:underline;text-decoration-thickness:.8px;text-underline-position:under}.activitypub-follower-block .activitypub-handle:hover,.activitypub-follower-block .activitypub-name:hover{text-decoration:none}.activitypub-follower-block .activitypub-name{font-size:var(--wp--preset--font-size--normal,16px)}.activitypub-follower-block .activitypub-actor{font-size:var(--wp--preset--font-size--small,13px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activitypub-follower-block .sep{padding:0 .2rem}.activitypub-follower-block .wp-block-query-pagination{margin-top:1.5rem}.activitypub-follower-block .activitypub-pager{cursor:default}.activitypub-follower-block .activitypub-pager.current{opacity:.33}.activitypub-follower-block .page-numbers{padding:0 .2rem}.activitypub-follower-block .page-numbers.current{font-weight:700;opacity:1} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/style-view.css b/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/style-view.css deleted file mode 100644 index 824879e9..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/style-view.css +++ /dev/null @@ -1 +0,0 @@ -.activitypub-follower-block.is-style-compact .activitypub-handle,.activitypub-follower-block.is-style-compact .sep{display:none}.activitypub-follower-block.is-style-with-lines ul li{border-bottom:.5px solid;margin-bottom:.5rem;padding-bottom:.5rem}.activitypub-follower-block.is-style-with-lines ul li:last-child{border-bottom:none}.activitypub-follower-block.is-style-with-lines .activitypub-handle,.activitypub-follower-block.is-style-with-lines .activitypub-name{text-decoration:none}.activitypub-follower-block.is-style-with-lines .activitypub-handle:hover,.activitypub-follower-block.is-style-with-lines .activitypub-name:hover{text-decoration:underline}.activitypub-follower-block ul{margin:0!important;padding:0!important}.activitypub-follower-block li{display:flex;margin-bottom:1rem}.activitypub-follower-block img{border-radius:50%;height:40px;margin-right:var(--wp--preset--spacing--20,.5rem);width:40px}.activitypub-follower-block .activitypub-link{align-items:center;color:inherit!important;display:flex;flex-flow:row nowrap;max-width:100%;text-decoration:none!important}.activitypub-follower-block .activitypub-handle,.activitypub-follower-block .activitypub-name{text-decoration:underline;text-decoration-thickness:.8px;text-underline-position:under}.activitypub-follower-block .activitypub-handle:hover,.activitypub-follower-block .activitypub-name:hover{text-decoration:none}.activitypub-follower-block .activitypub-name{font-size:var(--wp--preset--font-size--normal,16px)}.activitypub-follower-block .activitypub-actor{font-size:var(--wp--preset--font-size--small,13px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activitypub-follower-block .sep{padding:0 .2rem}.activitypub-follower-block .wp-block-query-pagination{margin-top:1.5rem}.activitypub-follower-block .activitypub-pager{cursor:default}.activitypub-follower-block .activitypub-pager.current{opacity:.33}.activitypub-follower-block .page-numbers{padding:0 .2rem}.activitypub-follower-block .page-numbers.current{font-weight:700;opacity:1} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/view.asset.php b/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/view.asset.php deleted file mode 100644 index 88e18217..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/view.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('react', 'wp-api-fetch', 'wp-components', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-url'), 'version' => '34299fc181d49292ada0'); diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/view.js b/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/view.js deleted file mode 100644 index 227bb012..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/followers/view.js +++ /dev/null @@ -1,3 +0,0 @@ -(()=>{var e,t={73:(e,t,a)=>{"use strict";const r=window.React,n=window.wp.apiFetch;var l=a.n(n);const o=window.wp.url,c=window.wp.element,i=window.wp.i18n;var s=a(942),p=a.n(s);function u({active:e,children:t,page:a,pageClick:n,className:l}){const o=p()("wp-block activitypub-pager",l,{current:e});return(0,r.createElement)("a",{className:o,onClick:t=>{t.preventDefault(),!e&&n(a)}},t)}function m({compact:e,nextLabel:t,page:a,pageClick:n,perPage:l,prevLabel:o,total:c,variant:i="outlined"}){const s=((e,t)=>{let a=[1,e-2,e-1,e,e+1,e+2,t];a.sort(((e,t)=>e-t)),a=a.filter(((e,a,r)=>e>=1&&e<=t&&r.lastIndexOf(e)===a));for(let e=a.length-2;e>=0;e--)a[e]===a[e+1]&&a.splice(e+1,1);return a})(a,Math.ceil(c/l)),m=p()("alignwide wp-block-query-pagination is-content-justification-space-between is-layout-flex wp-block-query-pagination-is-layout-flex",`is-${i}`,{"is-compact":e});return(0,r.createElement)("nav",{className:m},o&&(0,r.createElement)(u,{key:"prev",page:a-1,pageClick:n,active:1===a,"aria-label":o,className:"wp-block-query-pagination-previous block-editor-block-list__block"},o),!e&&(0,r.createElement)("div",{className:"block-editor-block-list__block wp-block wp-block-query-pagination-numbers"},s.map((e=>(0,r.createElement)(u,{key:e,page:e,pageClick:n,active:e===a,className:"page-numbers"},e)))),t&&(0,r.createElement)(u,{key:"next",page:a+1,pageClick:n,active:a===Math.ceil(c/l),"aria-label":t,className:"wp-block-query-pagination-next block-editor-block-list__block"},t))}const f=window.wp.components;function v({selectedUser:e,per_page:t,order:a,title:n,page:s,setPage:p,className:u="",followLinks:f=!0,followerData:v=!1}){const w="site"===e?0:e,[d,g]=(0,r.useState)([]),[y,k]=(0,r.useState)(0),[h,E]=(0,r.useState)(0),[N,x]=function(){const[e,t]=(0,r.useState)(1);return[e,t]}(),_=s||N,O=p||x,S=(0,c.createInterpolateElement)(/* translators: arrow for previous followers link */ /* translators: arrow for previous followers link */ -(0,i.__)(" Less","activitypub"),{span:(0,r.createElement)("span",{className:"wp-block-query-pagination-previous-arrow is-arrow-arrow","aria-hidden":"true"})}),C=(0,c.createInterpolateElement)(/* translators: arrow for next followers link */ /* translators: arrow for next followers link */ -(0,i.__)("More ","activitypub"),{span:(0,r.createElement)("span",{className:"wp-block-query-pagination-next-arrow is-arrow-arrow","aria-hidden":"true"})}),L=(e,a)=>{g(e),E(a),k(Math.ceil(a/t))};return(0,r.useEffect)((()=>{if(v&&1===_)return L(v.followers,v.total);const e=function(e,t,a,r){const{namespace:n}=window._activityPubOptions||{},l=`/${n}/actors/${e}/followers`,c={per_page:t,order:a,page:r,context:"full"};return(0,o.addQueryArgs)(l,c)}(w,t,a,_);l()({path:e}).then((e=>L(e.orderedItems,e.totalItems))).catch((()=>{}))}),[w,t,a,_,v]),(0,r.createElement)("div",{className:"activitypub-follower-block "+u},(0,r.createElement)("h3",null,n),(0,r.createElement)("ul",null,d&&d.map((e=>(0,r.createElement)("li",{key:e.url},(0,r.createElement)(b,{...e,followLinks:f}))))),y>1&&(0,r.createElement)(m,{page:_,perPage:t,total:h,pageClick:O,nextLabel:C,prevLabel:S,compact:"is-style-compact"===u}))}function b({name:e,icon:t,url:a,preferredUsername:n,followLinks:l=!0}){const o=`@${n}`,c={};return l||(c.onClick=e=>e.preventDefault()),(0,r.createElement)(f.ExternalLink,{className:"activitypub-link",href:a,title:o,...c},(0,r.createElement)("img",{width:"40",height:"40",src:t.url,className:"avatar activitypub-avatar",alt:e}),(0,r.createElement)("span",{className:"activitypub-actor"},(0,r.createElement)("strong",{className:"activitypub-name"},e),(0,r.createElement)("span",{className:"sep"},"/"),(0,r.createElement)("span",{className:"activitypub-handle"},o)))}const w=window.wp.domReady;a.n(w)()((()=>{[].forEach.call(document.querySelectorAll(".activitypub-follower-block"),(e=>{const t=JSON.parse(e.dataset.attrs);(0,c.createRoot)(e).render((0,r.createElement)(v,{...t}))}))}))},942:(e,t)=>{var a;!function(){"use strict";var r={}.hasOwnProperty;function n(){for(var e="",t=0;t{if(!a){var o=1/0;for(p=0;p=l)&&Object.keys(r.O).every((e=>r.O[e](a[i])))?a.splice(i--,1):(c=!1,l0&&e[p-1][2]>l;p--)e[p]=e[p-1];e[p]=[a,n,l]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var a in t)r.o(t,a)&&!r.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={996:0,528:0};r.O.j=t=>0===e[t];var t=(t,a)=>{var n,l,o=a[0],c=a[1],i=a[2],s=0;if(o.some((t=>0!==e[t]))){for(n in c)r.o(c,n)&&(r.m[n]=c[n]);if(i)var p=i(r)}for(t&&t(a);sr(73)));n=r.O(n)})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/block.json b/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/block.json deleted file mode 100644 index e489c0f8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/block.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "$schema": "https://schemas.wp.org/trunk/block.json", - "name": "activitypub/reactions", - "apiVersion": 2, - "version": "1.0.0", - "title": "Fediverse Reactions", - "category": "widgets", - "icon": "heart", - "description": "Display Fediverse likes and reposts", - "supports": { - "html": false, - "align": true, - "layout": { - "default": { - "type": "constrained", - "orientation": "vertical", - "justifyContent": "center" - } - } - }, - "attributes": { - "title": { - "type": "string", - "default": "Fediverse reactions" - } - }, - "blockHooks": { - "core/post-content": "after" - }, - "textdomain": "activitypub", - "editorScript": "file:./index.js", - "style": [ - "file:./style-index.css", - "wp-components" - ], - "viewScript": "file:./view.js" -} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/index.asset.php b/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/index.asset.php deleted file mode 100644 index 6ac7d749..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/index.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('react', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-i18n'), 'version' => '32631215c76c36b38e5e'); diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/index.js b/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/index.js deleted file mode 100644 index 7ab57c58..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/index.js +++ /dev/null @@ -1,3 +0,0 @@ -(()=>{"use strict";var e,t={373:(e,t,a)=>{const n=window.wp.blocks,r=window.React,l=window.wp.blockEditor,o=window.wp.element,s=window.wp.i18n,i=window.wp.components,c=window.wp.apiFetch;var u=a.n(c);function m(){return window._activityPubOptions||{}}const p=({reactions:e})=>{const{defaultAvatarUrl:t}=m(),[a,n]=(0,o.useState)(new Set),[l,s]=(0,o.useState)(new Map),i=(0,o.useRef)([]),c=()=>{i.current.forEach((e=>clearTimeout(e))),i.current=[]},u=(t,a)=>{c();const r=100,l=e.length;a&&s((e=>{const a=new Map(e);return a.set(t,"clockwise"),a}));const o=e=>{const o="right"===e,c=o?l-1:0,u=o?1:-1;for(let e=o?t:t-1;o?e<=c:e>=c;e+=u){const l=Math.abs(e-t),o=setTimeout((()=>{n((t=>{const n=new Set(t);return a?n.add(e):n.delete(e),n})),a&&e!==t&&s((t=>{const a=new Map(t),n=e-u,r=a.get(n);return a.set(e,"clockwise"===r?"counter":"clockwise"),a}))}),l*r);i.current.push(o)}};if(o("right"),o("left"),!a){const e=Math.max((l-t)*r,t*r),a=setTimeout((()=>{s(new Map)}),e+r);i.current.push(a)}};return(0,o.useEffect)((()=>()=>c()),[]),(0,r.createElement)("ul",{className:"reaction-avatars"},e.map(((e,n)=>{const o=l.get(n),s=["reaction-avatar",a.has(n)?"wave-active":"",o?`rotate-${o}`:""].filter(Boolean).join(" "),i=e.avatar||t;return(0,r.createElement)("li",{key:n},(0,r.createElement)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",onMouseEnter:()=>u(n,!0),onMouseLeave:()=>u(n,!1)},(0,r.createElement)("img",{src:i,alt:e.name,className:s,width:"32",height:"32"})))})))},f=({reactions:e,type:t})=>(0,r.createElement)("ul",{className:"activitypub-reaction-list"},e.map(((e,t)=>(0,r.createElement)("li",{key:t},(0,r.createElement)("a",{href:e.url,className:"reaction-item",target:"_blank",rel:"noopener noreferrer"},(0,r.createElement)("img",{src:e.avatar,alt:e.name,width:"32",height:"32"}),(0,r.createElement)("span",null,e.name)))))),h=({items:e,label:t})=>{const[a,n]=(0,o.useState)(!1),[l,s]=(0,o.useState)(null),[c,u]=(0,o.useState)(e.length),m=(0,o.useRef)(null);(0,o.useEffect)((()=>{if(!m.current)return;const t=()=>{const t=m.current;if(!t)return;const a=t.offsetWidth-(l?.offsetWidth||0)-12,n=Math.max(1,Math.floor((a-32)/22));u(Math.min(n,e.length))};t();const a=new ResizeObserver(t);return a.observe(m.current),()=>{a.disconnect()}}),[l,e.length]);const h=e.slice(0,c);return(0,r.createElement)("div",{className:"reaction-group",ref:m},(0,r.createElement)(p,{reactions:h}),(0,r.createElement)(i.Button,{ref:s,className:"reaction-label is-link",onClick:()=>n(!a),"aria-expanded":a},t),a&&l&&(0,r.createElement)(i.Popover,{anchor:l,onClose:()=>n(!1)},(0,r.createElement)(f,{reactions:e})))};function d({title:e="",postId:t=null,reactions:a=null,titleComponent:n=null}){const{namespace:l}=m(),[s,i]=(0,o.useState)(a),[c,p]=(0,o.useState)(!a);return(0,o.useEffect)((()=>{if(a)return i(a),void p(!1);t?(p(!0),u()({path:`/${l}/posts/${t}/reactions`}).then((e=>{i(e),p(!1)})).catch((()=>p(!1)))):p(!1)}),[t,a]),c?null:s&&Object.values(s).some((e=>e.items?.length>0))?(0,r.createElement)("div",{className:"activitypub-reactions"},n||e&&(0,r.createElement)("h6",null,e),Object.entries(s).map((([e,t])=>t.items?.length?(0,r.createElement)(h,{key:e,items:t.items,label:t.label}):null))):null}const v=e=>{const t=["#FF6B6B","#4ECDC4","#45B7D1","#96CEB4","#FFEEAD","#D4A5A5","#9B59B6","#3498DB","#E67E22"],a=(()=>{const e=["Bouncy","Cosmic","Dancing","Fluffy","Giggly","Hoppy","Jazzy","Magical","Nifty","Perky","Quirky","Sparkly","Twirly","Wiggly","Zippy"],t=["Badger","Capybara","Dolphin","Echidna","Flamingo","Giraffe","Hedgehog","Iguana","Jellyfish","Koala","Lemur","Manatee","Narwhal","Octopus","Penguin"];return`${e[Math.floor(Math.random()*e.length)]} ${t[Math.floor(Math.random()*t.length)]}`})(),n=t[Math.floor(Math.random()*t.length)],r=a.charAt(0),l=document.createElement("canvas");l.width=64,l.height=64;const o=l.getContext("2d");return o.fillStyle=n,o.beginPath(),o.arc(32,32,32,0,2*Math.PI),o.fill(),o.fillStyle="#FFFFFF",o.font="32px sans-serif",o.textAlign="center",o.textBaseline="middle",o.fillText(r,32,32),{name:a,url:"#",avatar:l.toDataURL()}},g=JSON.parse('{"UU":"activitypub/reactions"}');(0,n.registerBlockType)(g.UU,{edit:function({attributes:e,setAttributes:t,__unstableLayoutClassNames:a}){const n=(0,l.useBlockProps)({className:a}),[i]=(0,o.useState)({likes:{label:(0,s.sprintf)(/* translators: %d: Number of likes */ /* translators: %d: Number of likes */ -(0,s._x)("%d likes","number of likes","activitypub"),9),items:Array.from({length:9},((e,t)=>v()))},reposts:{label:(0,s.sprintf)(/* translators: %d: Number of reposts */ /* translators: %d: Number of reposts */ -(0,s._x)("%d reposts","number of reposts","activitypub"),6),items:Array.from({length:6},((e,t)=>v()))}}),c=(0,r.createElement)(l.RichText,{tagName:"h6",value:e.title,onChange:e=>t({title:e}),placeholder:(0,s.__)("Fediverse Reactions","activitypub"),disableLineBreaks:!0,allowedFormats:[]});return(0,r.createElement)("div",{...n},(0,r.createElement)(d,{titleComponent:c,reactions:i}))}})}},a={};function n(e){var r=a[e];if(void 0!==r)return r.exports;var l=a[e]={exports:{}};return t[e](l,l.exports,n),l.exports}n.m=t,e=[],n.O=(t,a,r,l)=>{if(!a){var o=1/0;for(u=0;u=l)&&Object.keys(n.O).every((e=>n.O[e](a[i])))?a.splice(i--,1):(s=!1,l0&&e[u-1][2]>l;u--)e[u]=e[u-1];e[u]=[a,r,l]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={608:0,104:0};n.O.j=t=>0===e[t];var t=(t,a)=>{var r,l,o=a[0],s=a[1],i=a[2],c=0;if(o.some((t=>0!==e[t]))){for(r in s)n.o(s,r)&&(n.m[r]=s[r]);if(i)var u=i(n)}for(t&&t(a);cn(373)));r=n.O(r)})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/style-index-rtl.css b/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/style-index-rtl.css deleted file mode 100644 index 593e3174..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/style-index-rtl.css +++ /dev/null @@ -1 +0,0 @@ -.activitypub-reactions h6{border-top:1px solid;border-top-color:var(--wp--preset--color--contrast-2);display:inline-block;padding-top:.5em}.activitypub-reactions .reaction-group{align-items:center;display:flex;gap:.75em;justify-content:flex-start;margin:.5em 0;position:relative;width:100%}@media(max-width:782px){.activitypub-reactions .reaction-group:has(.reaction-avatars:not(:empty)){justify-content:space-between}}.activitypub-reactions .reaction-avatars{align-items:center;display:flex;flex-direction:row;list-style:none;margin:0;padding:0}.activitypub-reactions .reaction-avatars li{margin:0 0 0 -10px;padding:0}.activitypub-reactions .reaction-avatars li:last-child{margin-left:0}.activitypub-reactions .reaction-avatars li a{display:block;text-decoration:none}.activitypub-reactions .reaction-avatars .reaction-avatar{border:.5px solid var(--wp--preset--color--contrast,hsla(0,0%,100%,.8));border-radius:50%;box-shadow:0 0 0 .5px hsla(0,0%,100%,.8),0 1px 3px rgba(0,0,0,.2);height:32px;transition:transform .6s cubic-bezier(.34,1.56,.64,1);width:32px;will-change:transform}.activitypub-reactions .reaction-avatars .reaction-avatar.wave-active{transform:translateY(-5px)}.activitypub-reactions .reaction-avatars .reaction-avatar.wave-active.rotate-clockwise{transform:translateY(-5px) rotate(-30deg)}.activitypub-reactions .reaction-avatars .reaction-avatar.wave-active.rotate-counter{transform:translateY(-5px) rotate(30deg)}.activitypub-reactions .reaction-avatars .reaction-avatar:hover{position:relative;z-index:1}.activitypub-reactions .reaction-label.components-button{color:var(--wp--preset--color--contrast,--wp--preset--color--secondary,#2271b1);flex:0 0 auto;height:auto;padding:0;text-decoration:none;white-space:nowrap}.activitypub-reactions .reaction-label.components-button:hover{color:var(--wp--preset--color--contrast,--wp--preset--color--secondary,#135e96);text-decoration:underline}.activitypub-reactions .reaction-label.components-button:focus:not(:disabled){box-shadow:none;outline:1px solid var(--wp--preset--color--contrast,#135e96);outline-offset:2px}.activitypub-reaction-list{background-color:var(--wp--preset--color--background,var(--wp--preset--color--custom-background,var(--wp--preset--color--base)));list-style:none;margin:0;max-width:300px;padding:.25em .7em .25em 1.3em;width:-moz-max-content;width:max-content}.activitypub-reaction-list ul{margin:0;padding:0}.activitypub-reaction-list li{font-size:var(--wp--preset--font-size--small);margin:0;padding:0}.activitypub-reaction-list a{align-items:center;color:var(--wp--preset--color--contrast,var(--wp--preset--color--secondary));display:flex;font-size:var(--wp--preset--font-size--small,.75rem);gap:.5em;justify-content:flex-start;padding:.5em;text-decoration:none}.activitypub-reaction-list a:hover{text-decoration:underline}.activitypub-reaction-list a img{border-radius:50%;flex:none;height:24px;width:24px} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/style-index.css b/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/style-index.css deleted file mode 100644 index 769742af..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/style-index.css +++ /dev/null @@ -1 +0,0 @@ -.activitypub-reactions h6{border-top:1px solid;border-top-color:var(--wp--preset--color--contrast-2);display:inline-block;padding-top:.5em}.activitypub-reactions .reaction-group{align-items:center;display:flex;gap:.75em;justify-content:flex-start;margin:.5em 0;position:relative;width:100%}@media(max-width:782px){.activitypub-reactions .reaction-group:has(.reaction-avatars:not(:empty)){justify-content:space-between}}.activitypub-reactions .reaction-avatars{align-items:center;display:flex;flex-direction:row;list-style:none;margin:0;padding:0}.activitypub-reactions .reaction-avatars li{margin:0 -10px 0 0;padding:0}.activitypub-reactions .reaction-avatars li:last-child{margin-right:0}.activitypub-reactions .reaction-avatars li a{display:block;text-decoration:none}.activitypub-reactions .reaction-avatars .reaction-avatar{border:.5px solid var(--wp--preset--color--contrast,hsla(0,0%,100%,.8));border-radius:50%;box-shadow:0 0 0 .5px hsla(0,0%,100%,.8),0 1px 3px rgba(0,0,0,.2);height:32px;transition:transform .6s cubic-bezier(.34,1.56,.64,1);width:32px;will-change:transform}.activitypub-reactions .reaction-avatars .reaction-avatar.wave-active{transform:translateY(-5px)}.activitypub-reactions .reaction-avatars .reaction-avatar.wave-active.rotate-clockwise{transform:translateY(-5px) rotate(30deg)}.activitypub-reactions .reaction-avatars .reaction-avatar.wave-active.rotate-counter{transform:translateY(-5px) rotate(-30deg)}.activitypub-reactions .reaction-avatars .reaction-avatar:hover{position:relative;z-index:1}.activitypub-reactions .reaction-label.components-button{color:var(--wp--preset--color--contrast,--wp--preset--color--secondary,#2271b1);flex:0 0 auto;height:auto;padding:0;text-decoration:none;white-space:nowrap}.activitypub-reactions .reaction-label.components-button:hover{color:var(--wp--preset--color--contrast,--wp--preset--color--secondary,#135e96);text-decoration:underline}.activitypub-reactions .reaction-label.components-button:focus:not(:disabled){box-shadow:none;outline:1px solid var(--wp--preset--color--contrast,#135e96);outline-offset:2px}.activitypub-reaction-list{background-color:var(--wp--preset--color--background,var(--wp--preset--color--custom-background,var(--wp--preset--color--base)));list-style:none;margin:0;max-width:300px;padding:.25em 1.3em .25em .7em;width:-moz-max-content;width:max-content}.activitypub-reaction-list ul{margin:0;padding:0}.activitypub-reaction-list li{font-size:var(--wp--preset--font-size--small);margin:0;padding:0}.activitypub-reaction-list a{align-items:center;color:var(--wp--preset--color--contrast,var(--wp--preset--color--secondary));display:flex;font-size:var(--wp--preset--font-size--small,.75rem);gap:.5em;justify-content:flex-start;padding:.5em;text-decoration:none}.activitypub-reaction-list a:hover{text-decoration:underline}.activitypub-reaction-list a img{border-radius:50%;flex:none;height:24px;width:24px} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/view.asset.php b/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/view.asset.php deleted file mode 100644 index 814279a1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/view.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('react', 'wp-api-fetch', 'wp-components', 'wp-dom-ready', 'wp-element', 'wp-i18n'), 'version' => 'd5cb95d9bd6062974b3c'); diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/view.js b/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/view.js deleted file mode 100644 index 4e4ff64e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reactions/view.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e={n:t=>{var n=t&&t.__esModule?()=>t.default:()=>t;return e.d(n,{a:n}),n},d:(t,n)=>{for(var a in n)e.o(n,a)&&!e.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:n[a]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.React,n=window.wp.element,a=window.wp.domReady;var r=e.n(a);const c=window.wp.components,o=window.wp.apiFetch;var l=e.n(o);function s(){return window._activityPubOptions||{}}window.wp.i18n;const i=({reactions:e})=>{const{defaultAvatarUrl:a}=s(),[r,c]=(0,n.useState)(new Set),[o,l]=(0,n.useState)(new Map),i=(0,n.useRef)([]),u=()=>{i.current.forEach((e=>clearTimeout(e))),i.current=[]},m=(t,n)=>{u();const a=100,r=e.length;n&&l((e=>{const n=new Map(e);return n.set(t,"clockwise"),n}));const o=e=>{const o="right"===e,s=o?r-1:0,u=o?1:-1;for(let e=o?t:t-1;o?e<=s:e>=s;e+=u){const r=Math.abs(e-t),o=setTimeout((()=>{c((t=>{const a=new Set(t);return n?a.add(e):a.delete(e),a})),n&&e!==t&&l((t=>{const n=new Map(t),a=e-u,r=n.get(a);return n.set(e,"clockwise"===r?"counter":"clockwise"),n}))}),r*a);i.current.push(o)}};if(o("right"),o("left"),!n){const e=Math.max((r-t)*a,t*a),n=setTimeout((()=>{l(new Map)}),e+a);i.current.push(n)}};return(0,n.useEffect)((()=>()=>u()),[]),(0,t.createElement)("ul",{className:"reaction-avatars"},e.map(((e,n)=>{const c=o.get(n),l=["reaction-avatar",r.has(n)?"wave-active":"",c?`rotate-${c}`:""].filter(Boolean).join(" "),s=e.avatar||a;return(0,t.createElement)("li",{key:n},(0,t.createElement)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",onMouseEnter:()=>m(n,!0),onMouseLeave:()=>m(n,!1)},(0,t.createElement)("img",{src:s,alt:e.name,className:l,width:"32",height:"32"})))})))},u=({reactions:e,type:n})=>(0,t.createElement)("ul",{className:"activitypub-reaction-list"},e.map(((e,n)=>(0,t.createElement)("li",{key:n},(0,t.createElement)("a",{href:e.url,className:"reaction-item",target:"_blank",rel:"noopener noreferrer"},(0,t.createElement)("img",{src:e.avatar,alt:e.name,width:"32",height:"32"}),(0,t.createElement)("span",null,e.name)))))),m=({items:e,label:a})=>{const[r,o]=(0,n.useState)(!1),[l,s]=(0,n.useState)(null),[m,p]=(0,n.useState)(e.length),h=(0,n.useRef)(null);(0,n.useEffect)((()=>{if(!h.current)return;const t=()=>{const t=h.current;if(!t)return;const n=t.offsetWidth-(l?.offsetWidth||0)-12,a=Math.max(1,Math.floor((n-32)/22));p(Math.min(a,e.length))};t();const n=new ResizeObserver(t);return n.observe(h.current),()=>{n.disconnect()}}),[l,e.length]);const f=e.slice(0,m);return(0,t.createElement)("div",{className:"reaction-group",ref:h},(0,t.createElement)(i,{reactions:f}),(0,t.createElement)(c.Button,{ref:s,className:"reaction-label is-link",onClick:()=>o(!r),"aria-expanded":r},a),r&&l&&(0,t.createElement)(c.Popover,{anchor:l,onClose:()=>o(!1)},(0,t.createElement)(u,{reactions:e})))};function p({title:e="",postId:a=null,reactions:r=null,titleComponent:c=null}){const{namespace:o}=s(),[i,u]=(0,n.useState)(r),[p,h]=(0,n.useState)(!r);return(0,n.useEffect)((()=>{if(r)return u(r),void h(!1);a?(h(!0),l()({path:`/${o}/posts/${a}/reactions`}).then((e=>{u(e),h(!1)})).catch((()=>h(!1)))):h(!1)}),[a,r]),p?null:i&&Object.values(i).some((e=>e.items?.length>0))?(0,t.createElement)("div",{className:"activitypub-reactions"},c||e&&(0,t.createElement)("h6",null,e),Object.entries(i).map((([e,n])=>n.items?.length?(0,t.createElement)(m,{key:e,items:n.items,label:n.label}):null))):null}r()((()=>{[].forEach.call(document.querySelectorAll(".activitypub-reactions-block"),(e=>{const a=JSON.parse(e.dataset.attrs);(0,n.createRoot)(e).render((0,t.createElement)(p,{...a}))}))}))})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/block.json b/wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/block.json deleted file mode 100644 index b7d0b495..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/block.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "$schema": "https://schemas.wp.org/trunk/block.json", - "name": "activitypub/remote-reply", - "apiVersion": 3, - "version": "1.0.0", - "title": "Reply on the Fediverse", - "category": "widgets", - "description": "", - "textdomain": "activitypub", - "viewScript": "file:./index.js" -} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/index.asset.php b/wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/index.asset.php deleted file mode 100644 index 70196da8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/index.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('react', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-dom-ready', 'wp-element', 'wp-i18n', 'wp-primitives'), 'version' => '7160b6399cd924e1c7be'); diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/index.js b/wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/index.js deleted file mode 100644 index 1494b656..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/index.js +++ /dev/null @@ -1,2 +0,0 @@ -(()=>{"use strict";var e,t={170:(e,t,r)=>{var o=r(609);const a=window.wp.element,i=window.wp.domReady;var n=r.n(i);const l=window.wp.components,c=window.wp.i18n,s=(0,a.forwardRef)((function({icon:e,size:t=24,...r},o){return(0,a.cloneElement)(e,{width:t,height:t,...r,ref:o})})),m=window.wp.primitives;var p=r(848);const u=(0,p.jsx)(m.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,p.jsx)(m.Path,{d:"M12 21C16.9706 21 21 16.9706 21 12C21 7.02944 16.9706 3 12 3C7.02944 3 3 7.02944 3 12C3 16.9706 7.02944 21 12 21ZM15.5303 8.46967C15.8232 8.76256 15.8232 9.23744 15.5303 9.53033L13.0607 12L15.5303 14.4697C15.8232 14.7626 15.8232 15.2374 15.5303 15.5303C15.2374 15.8232 14.7626 15.8232 14.4697 15.5303L12 13.0607L9.53033 15.5303C9.23744 15.8232 8.76256 15.8232 8.46967 15.5303C8.17678 15.2374 8.17678 14.7626 8.46967 14.4697L10.9393 12L8.46967 9.53033C8.17678 9.23744 8.17678 8.76256 8.46967 8.46967C8.76256 8.17678 9.23744 8.17678 9.53033 8.46967L12 10.9393L14.4697 8.46967C14.7626 8.17678 15.2374 8.17678 15.5303 8.46967Z"})}),d=window.wp.apiFetch;var v=r.n(d);const y=(0,p.jsx)(m.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,p.jsx)(m.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5 4.5h11a.5.5 0 0 1 .5.5v11a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5ZM3 5a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5Zm17 3v10.75c0 .69-.56 1.25-1.25 1.25H6v1.5h12.75a2.75 2.75 0 0 0 2.75-2.75V8H20Z"})}),_=(0,p.jsx)(m.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,p.jsx)(m.Path,{d:"M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z"})}),f=(0,p.jsx)(m.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,p.jsx)(m.Path,{d:"M15.5 9.5a1 1 0 100-2 1 1 0 000 2zm0 1.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm-2.25 6v-2a2.75 2.75 0 00-2.75-2.75h-4A2.75 2.75 0 003.75 15v2h1.5v-2c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v2h1.5zm7-2v2h-1.5v-2c0-.69-.56-1.25-1.25-1.25H15v-1.5h2.5A2.75 2.75 0 0120.25 15zM9.5 8.5a1 1 0 11-2 0 1 1 0 012 0zm1.5 0a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z",fillRule:"evenodd"})}),b=window.wp.compose,w="fediverse-remote-user";function h(){const[e,t]=(0,a.useState)(function(){const e=localStorage.getItem(w);return e?JSON.parse(e):{}}()),r=(0,a.useCallback)((e=>{!function(e){localStorage.setItem(w,JSON.stringify(e))}(e),t(e)}),[]),o=(0,a.useCallback)((()=>{localStorage.removeItem(w),t({})}),[]);return{template:e?.template||!1,profileURL:e?.profileURL||!1,setRemoteUser:r,deleteRemoteUser:o}}function g(e){try{return new URL(e),!0}catch(e){return!1}}function E({actionText:e,copyDescription:t,handle:r,resourceUrl:i,myProfile:n="",rememberProfile:m=!1}){const p=(0,c.__)("Loading...","activitypub"),u=(0,c.__)("Opening...","activitypub"),d=(0,c.__)("Error","activitypub"),w=(0,c.__)("Invalid","activitypub"),E=n||(0,c.__)("My Profile","activitypub"),[C,R]=(0,a.useState)(e),[x,O]=(0,a.useState)(y),k=(0,b.useCopyToClipboard)(r,(()=>{O(_),setTimeout((()=>O(y)),1e3)})),[L,S]=(0,a.useState)(""),[U,N]=(0,a.useState)(!0),{setRemoteUser:P}=h(),j=(0,a.useCallback)((()=>{let t;if(!g(L)&&!function(e){const t=e.replace(/^@/,"").split("@");return 2===t.length&&g(`https://${t[1]}`)}(L))return R(w),t=setTimeout((()=>R(e)),2e3),()=>clearTimeout(t);const r=i+L;R(p),v()({path:r}).then((({url:t,template:r})=>{U&&P({profileURL:L,template:r}),R(u),setTimeout((()=>{window.open(t,"_blank"),R(e)}),200)})).catch((()=>{R(d),setTimeout((()=>R(e)),2e3)}))}),[L]);return(0,o.createElement)("div",{className:"activitypub__dialog",role:"dialog","aria-labelledby":"dialog-title"},(0,o.createElement)("div",{className:"activitypub-dialog__section"},(0,o.createElement)("h4",{id:"dialog-title"},E),(0,o.createElement)("div",{className:"activitypub-dialog__description",id:"copy-description"},t),(0,o.createElement)("div",{className:"activitypub-dialog__button-group"},(0,o.createElement)("label",{htmlFor:"profile-handle",className:"screen-reader-text"},t),(0,o.createElement)("input",{type:"text",id:"profile-handle",value:r,readOnly:!0}),(0,o.createElement)(l.Button,{ref:k,"aria-label":(0,c.__)("Copy handle to clipboard","activitypub")},(0,o.createElement)(s,{icon:x}),(0,c.__)("Copy","activitypub")))),(0,o.createElement)("div",{className:"activitypub-dialog__section"},(0,o.createElement)("h4",{id:"remote-profile-title"},(0,c.__)("Your Profile","activitypub")),(0,o.createElement)("div",{className:"activitypub-dialog__description",id:"remote-profile-description"},(0,a.createInterpolateElement)((0,c.__)("Or, if you know your own profile, we can start things that way! (eg @yourusername@example.com)","activitypub"),{code:(0,o.createElement)("code",null)})),(0,o.createElement)("div",{className:"activitypub-dialog__button-group"},(0,o.createElement)("label",{htmlFor:"remote-profile",className:"screen-reader-text"},(0,c.__)("Enter your ActivityPub profile","activitypub")),(0,o.createElement)("input",{type:"text",id:"remote-profile",value:L,onKeyDown:e=>{"Enter"===e?.code&&j()},onChange:e=>S(e.target.value),"aria-invalid":C===w}),(0,o.createElement)(l.Button,{onClick:j,"aria-label":(0,c.__)("Submit profile","activitypub")},(0,o.createElement)(s,{icon:f}),C)),m&&(0,o.createElement)("div",{className:"activitypub-dialog__remember"},(0,o.createElement)(l.CheckboxControl,{checked:U,label:(0,c.__)("Remember me for easier comments","activitypub"),onChange:()=>{N(!U)}}))))}function C({selectedComment:e,commentId:t}){const{namespace:r}=window._activityPubOptions||{},a=(0,c.__)("Reply","activitypub"),i=`/${r}/comments/${t}/remote-reply?resource=`,n=(0,c.__)("Copy and paste the Comment URL into the search field of your favorite fediverse app or server.","activitypub");return(0,o.createElement)(E,{actionText:a,copyDescription:n,handle:e,resourceUrl:i,myProfile:(0,c.__)("Original Comment URL","activitypub"),rememberProfile:!0})}function R({profileURL:e,template:t,commentURL:r,deleteRemoteUser:a}){return(0,o.createElement)(o.Fragment,null,(0,o.createElement)(l.Button,{variant:"link",className:"comment-reply-link activitypub-remote-reply__button",onClick:()=>{const e=t.replace("{uri}",r);window.open(e,"_blank")}},/* translators: %s: profile name */ /* translators: %s: profile name */ -(0,c.sprintf)((0,c.__)("Reply as %s","activitypub"),e)),(0,o.createElement)(l.Button,{className:"activitypub-remote-profile-delete",onClick:a,title:(0,c.__)("Delete Remote Profile","activitypub")},(0,o.createElement)(s,{icon:u,size:18})))}function x({selectedComment:e,commentId:t}){const[r,i]=(0,a.useState)(!1),n=(0,c.__)("Remote Reply","activitypub"),{profileURL:s,template:m,deleteRemoteUser:p}=h(),u=s&&m;return(0,o.createElement)(o.Fragment,null,u?(0,o.createElement)(R,{profileURL:s,template:m,commentURL:e,deleteRemoteUser:p}):(0,o.createElement)(l.Button,{variant:"link",className:"comment-reply-link activitypub-remote-reply__button",onClick:()=>i(!0)},(0,c.__)("Reply on the Fediverse","activitypub")),r&&(0,o.createElement)(l.Modal,{className:"activitypub-remote-reply__modal activitypub__modal",onRequestClose:()=>i(!1),title:n},(0,o.createElement)(C,{selectedComment:e,commentId:t})))}let O=1;n()((()=>{[].forEach.call(document.querySelectorAll(".activitypub-remote-reply"),(e=>{const t=JSON.parse(e.dataset.attrs);(0,a.createRoot)(e).render((0,o.createElement)(x,{...t,id:"activitypub-remote-reply-link-"+O++,useId:!0}))}))}))},20:(e,t,r)=>{var o=r(609),a=Symbol.for("react.element"),i=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),n=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};t.jsx=function(e,t,r){var o,c={},s=null,m=null;for(o in void 0!==r&&(s=""+r),void 0!==t.key&&(s=""+t.key),void 0!==t.ref&&(m=t.ref),t)i.call(t,o)&&!l.hasOwnProperty(o)&&(c[o]=t[o]);if(e&&e.defaultProps)for(o in t=e.defaultProps)void 0===c[o]&&(c[o]=t[o]);return{$$typeof:a,type:e,key:s,ref:m,props:c,_owner:n.current}}},848:(e,t,r)=>{e.exports=r(20)},609:e=>{e.exports=window.React}},r={};function o(e){var a=r[e];if(void 0!==a)return a.exports;var i=r[e]={exports:{}};return t[e](i,i.exports,o),i.exports}o.m=t,e=[],o.O=(t,r,a,i)=>{if(!r){var n=1/0;for(m=0;m=i)&&Object.keys(o.O).every((e=>o.O[e](r[c])))?r.splice(c--,1):(l=!1,i0&&e[m-1][2]>i;m--)e[m]=e[m-1];e[m]=[r,a,i]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={227:0,739:0};o.O.j=t=>0===e[t];var t=(t,r)=>{var a,i,n=r[0],l=r[1],c=r[2],s=0;if(n.some((t=>0!==e[t]))){for(a in l)o.o(l,a)&&(o.m[a]=l[a]);if(c)var m=c(o)}for(t&&t(r);so(170)));a=o.O(a)})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/style-index-rtl.css b/wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/style-index-rtl.css deleted file mode 100644 index 04857b9b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/style-index-rtl.css +++ /dev/null @@ -1 +0,0 @@ -.activitypub__modal.components-modal__frame{background-color:#f7f7f7;color:#333}.activitypub__modal.components-modal__frame .components-modal__header-heading,.activitypub__modal.components-modal__frame h4{color:#333;letter-spacing:inherit;word-spacing:inherit}.activitypub__modal.components-modal__frame .components-modal__header .components-button:hover{color:var(--color-white)}.activitypub__dialog{max-width:40em}.activitypub__dialog h4{line-height:1;margin:0}.activitypub__dialog .activitypub-dialog__section{margin-bottom:2em}.activitypub__dialog .activitypub-dialog__remember{margin-top:1em}.activitypub__dialog .activitypub-dialog__description{font-size:var(--wp--preset--font-size--normal,.75rem);margin:.33em 0 1em}.activitypub__dialog .activitypub-dialog__button-group{align-items:flex-end;display:flex;justify-content:flex-end}.activitypub__dialog .activitypub-dialog__button-group svg{height:21px;margin-left:.5em;width:21px}.activitypub__dialog .activitypub-dialog__button-group input{background-color:var(--wp--preset--color--white);border-radius:0 50px 50px 0;border-width:1px;border:1px solid var(--wp--preset--color--black);color:var(--wp--preset--color--black);flex:1;font-size:16px;height:inherit;line-height:1;margin-left:0;padding:15px 23px}.activitypub__dialog .activitypub-dialog__button-group button{align-self:center;background-color:var(--wp--preset--color--black);border-radius:50px 0 0 50px;border-width:1px;color:var(--wp--preset--color--white);font-size:16px;height:inherit;line-height:1;margin-right:0;padding:15px 23px;text-decoration:none}.activitypub__dialog .activitypub-dialog__button-group button:hover{border:inherit}.activitypub-remote-profile-delete{align-self:center;color:inherit;font-size:inherit;height:inherit;padding:0 5px}.activitypub-remote-profile-delete:hover{background:inherit;border:inherit}.activitypub-remote-reply{display:flex} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/style-index.css b/wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/style-index.css deleted file mode 100644 index c07d1493..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/remote-reply/style-index.css +++ /dev/null @@ -1 +0,0 @@ -.activitypub__modal.components-modal__frame{background-color:#f7f7f7;color:#333}.activitypub__modal.components-modal__frame .components-modal__header-heading,.activitypub__modal.components-modal__frame h4{color:#333;letter-spacing:inherit;word-spacing:inherit}.activitypub__modal.components-modal__frame .components-modal__header .components-button:hover{color:var(--color-white)}.activitypub__dialog{max-width:40em}.activitypub__dialog h4{line-height:1;margin:0}.activitypub__dialog .activitypub-dialog__section{margin-bottom:2em}.activitypub__dialog .activitypub-dialog__remember{margin-top:1em}.activitypub__dialog .activitypub-dialog__description{font-size:var(--wp--preset--font-size--normal,.75rem);margin:.33em 0 1em}.activitypub__dialog .activitypub-dialog__button-group{align-items:flex-end;display:flex;justify-content:flex-end}.activitypub__dialog .activitypub-dialog__button-group svg{height:21px;margin-right:.5em;width:21px}.activitypub__dialog .activitypub-dialog__button-group input{background-color:var(--wp--preset--color--white);border-radius:50px 0 0 50px;border-width:1px;border:1px solid var(--wp--preset--color--black);color:var(--wp--preset--color--black);flex:1;font-size:16px;height:inherit;line-height:1;margin-right:0;padding:15px 23px}.activitypub__dialog .activitypub-dialog__button-group button{align-self:center;background-color:var(--wp--preset--color--black);border-radius:0 50px 50px 0;border-width:1px;color:var(--wp--preset--color--white);font-size:16px;height:inherit;line-height:1;margin-left:0;padding:15px 23px;text-decoration:none}.activitypub__dialog .activitypub-dialog__button-group button:hover{border:inherit}.activitypub-remote-profile-delete{align-self:center;color:inherit;font-size:inherit;height:inherit;padding:0 5px}.activitypub-remote-profile-delete:hover{background:inherit;border:inherit}.activitypub-remote-reply{display:flex} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply-intent/block.json b/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply-intent/block.json deleted file mode 100644 index c2817199..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply-intent/block.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "reply-handler", - "title": "Reply Handler: not a block, but block.json is very useful.", - "category": "widgets", - "icon": "admin-comments", - "keywords": [ - "reply", - "handler", - "comments" - ], - "editorScript": "file:./plugin.js" -} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply-intent/plugin.asset.php b/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply-intent/plugin.asset.php deleted file mode 100644 index 72bbe977..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply-intent/plugin.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('wp-block-editor', 'wp-blocks', 'wp-data', 'wp-element', 'wp-plugins'), 'version' => 'f65a7269b5abb57d3e73'); diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply-intent/plugin.js b/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply-intent/plugin.js deleted file mode 100644 index b4a7e993..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply-intent/plugin.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";const e=window.wp.plugins,t=window.wp.blocks,i=window.wp.data,n=window.wp.blockEditor,o=window.wp.element;let r=!1;(0,e.registerPlugin)("activitypub-reply-intent",{render:()=>((0,o.useEffect)((()=>{if(r)return;const e=new URLSearchParams(window.location.search).get("in_reply_to");e&&!r&&setTimeout((()=>{const o=(0,t.createBlock)("activitypub/reply",{url:e,embedPost:!0}),r=(0,i.dispatch)(n.store);r.insertBlock(o),r.insertAfterBlock(o.clientId)}),200),r=!0})),null)})})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/block.json b/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/block.json deleted file mode 100644 index c3a57338..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/block.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "$schema": "https://schemas.wp.org/trunk/block.json", - "apiVersion": 3, - "name": "activitypub/reply", - "version": "0.1.0", - "title": "Federated Reply", - "category": "widgets", - "icon": "commentReplyLink", - "description": "Respond to posts, notes, videos, and other content on the fediverse. Ensure the URL originates from a federated social network like Mastodon, as other URLs might not function as expected.", - "supports": { - "html": false, - "inserter": true, - "reusable": false, - "lock": false - }, - "textdomain": "activitypub", - "editorScript": "file:./index.js", - "editorStyle": "file:./style-index.css", - "style": "file:./index.css", - "attributes": { - "url": { - "type": "string" - }, - "embedPost": { - "type": "boolean", - "default": null - } - } -} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/index-rtl.css b/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/index-rtl.css deleted file mode 100644 index 0a5e5c51..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/index-rtl.css +++ /dev/null @@ -1 +0,0 @@ -.activitypub-embed{background:#fff;border:1px solid #e6e6e6;border-radius:12px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;max-width:100%;padding:0}.activitypub-reply-block .activitypub-embed{margin:1em 0}.activitypub-embed-header{align-items:center;display:flex;gap:10px;padding:15px}.activitypub-embed-header img{border-radius:50%;height:48px;width:48px}.activitypub-embed-header-text{flex-grow:1}.activitypub-embed-header-text h2{color:#000;font-size:15px;font-weight:600;margin:0;padding:0}.activitypub-embed-header-text .ap-account{color:#687684;font-size:14px;text-decoration:none}.activitypub-embed-content{padding:0 15px 15px}.activitypub-embed-content .ap-title{color:#000;font-size:23px;font-weight:600;margin:0 0 10px;padding:0}.activitypub-embed-content .ap-subtitle{color:#000;font-size:15px;margin:0 0 15px}.activitypub-embed-content .ap-preview{border:1px solid #e6e6e6;border-radius:8px;overflow:hidden}.activitypub-embed-content .ap-preview img{display:block;height:auto;width:100%}.activitypub-embed-content .ap-preview-text{padding:15px}.activitypub-embed-meta{border-top:1px solid #e6e6e6;color:#687684;display:flex;font-size:13px;gap:15px;padding:15px}.activitypub-embed-meta .ap-stat{align-items:center;display:flex;gap:5px}@media only screen and (max-width:399px){.activitypub-embed-meta .ap-stat{display:none!important}}.activitypub-embed-meta a.ap-stat{color:inherit;text-decoration:none}.activitypub-embed-meta strong{color:#000;font-weight:600}.activitypub-embed-meta .ap-stat-label{color:#687684}.wp-block-activitypub-reply .components-spinner{height:12px;margin-bottom:0;margin-top:0;width:12px} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/index.asset.php b/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/index.asset.php deleted file mode 100644 index f82365da..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/index.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('react', 'wp-api-fetch', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-data', 'wp-element', 'wp-i18n', 'wp-primitives', 'wp-url'), 'version' => 'fcd855ff6f64b21029be'); diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/index.css b/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/index.css deleted file mode 100644 index 0a5e5c51..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/index.css +++ /dev/null @@ -1 +0,0 @@ -.activitypub-embed{background:#fff;border:1px solid #e6e6e6;border-radius:12px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;max-width:100%;padding:0}.activitypub-reply-block .activitypub-embed{margin:1em 0}.activitypub-embed-header{align-items:center;display:flex;gap:10px;padding:15px}.activitypub-embed-header img{border-radius:50%;height:48px;width:48px}.activitypub-embed-header-text{flex-grow:1}.activitypub-embed-header-text h2{color:#000;font-size:15px;font-weight:600;margin:0;padding:0}.activitypub-embed-header-text .ap-account{color:#687684;font-size:14px;text-decoration:none}.activitypub-embed-content{padding:0 15px 15px}.activitypub-embed-content .ap-title{color:#000;font-size:23px;font-weight:600;margin:0 0 10px;padding:0}.activitypub-embed-content .ap-subtitle{color:#000;font-size:15px;margin:0 0 15px}.activitypub-embed-content .ap-preview{border:1px solid #e6e6e6;border-radius:8px;overflow:hidden}.activitypub-embed-content .ap-preview img{display:block;height:auto;width:100%}.activitypub-embed-content .ap-preview-text{padding:15px}.activitypub-embed-meta{border-top:1px solid #e6e6e6;color:#687684;display:flex;font-size:13px;gap:15px;padding:15px}.activitypub-embed-meta .ap-stat{align-items:center;display:flex;gap:5px}@media only screen and (max-width:399px){.activitypub-embed-meta .ap-stat{display:none!important}}.activitypub-embed-meta a.ap-stat{color:inherit;text-decoration:none}.activitypub-embed-meta strong{color:#000;font-weight:600}.activitypub-embed-meta .ap-stat-label{color:#687684}.wp-block-activitypub-reply .components-spinner{height:12px;margin-bottom:0;margin-top:0;width:12px} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/index.js b/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/index.js deleted file mode 100644 index 0e1c337b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/index.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e,t={238:(e,t,r)=>{const n=window.wp.blocks,o=window.wp.primitives;var a=r(848);const i=(0,a.jsx)(o.SVG,{width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,a.jsx)(o.Path,{d:"M6.68822 10.625L6.24878 11.0649L5.5 11.8145L5.5 5.5L12.5 5.5V8L14 6.5V5C14 4.44772 13.5523 4 13 4H5C4.44772 4 4 4.44771 4 5V13.5247C4 13.8173 4.16123 14.086 4.41935 14.2237C4.72711 14.3878 5.10601 14.3313 5.35252 14.0845L7.31 12.125H8.375L9.875 10.625H7.31H6.68822ZM14.5605 10.4983L11.6701 13.75H16.9975C17.9963 13.75 18.7796 14.1104 19.3553 14.7048C19.9095 15.2771 20.2299 16.0224 20.4224 16.7443C20.7645 18.0276 20.7543 19.4618 20.7487 20.2544C20.7481 20.345 20.7475 20.4272 20.7475 20.4999L19.2475 20.5001C19.2475 20.4191 19.248 20.3319 19.2484 20.2394V20.2394C19.2526 19.4274 19.259 18.2035 18.973 17.1307C18.8156 16.5401 18.586 16.0666 18.2778 15.7483C17.9909 15.4521 17.5991 15.25 16.9975 15.25H11.8106L14.5303 17.9697L13.4696 19.0303L8.96956 14.5303L13.4394 9.50171L14.5605 10.4983Z"})});var l=r(609);const c=window.wp.blockEditor,s=window.wp.components,d=window.wp.i18n,u=window.wp.element,m=window.wp.compose,p=window.wp.apiFetch;var f=r.n(p);const h=window.wp.url,w=window.wp.data;function b({html:e}){const t=(0,u.useRef)(null),[r,n]=(0,u.useState)(300),o=(0,u.useRef)(300),a=(0,u.useCallback)((()=>{if(t.current)try{const e=t.current;let r=300;try{e.contentDocument&&e.contentDocument.body?r=e.contentDocument.body.scrollHeight:e.contentWindow&&e.contentWindow.document&&e.contentWindow.document.body&&(r=e.contentWindow.document.body.scrollHeight)}catch(e){console.log("Could not access iframe content document:",e)}r+=5,Math.abs(r-o.current)>5&&(o.current=r,n(r))}catch(e){console.error("Error adjusting iframe height:",e)}}),[]),i=(0,u.useCallback)((()=>{if(t.current)try{a()}catch(e){console.error("Error setting up iframe height adjustment:",e)}}),[a]);return(0,u.useEffect)((()=>{t.current&&t.current.addEventListener("load",i);const e=setInterval(a,1e3);return()=>{clearInterval(e),t.current&&t.current.removeEventListener("load",i)}}),[i,a]),(0,u.useEffect)((()=>{if(t.current){const e=setTimeout((()=>{a()}),100);return()=>clearTimeout(e)}}),[e,a]),{iframeRef:t,iframeHeight:r,adjustIframeHeight:a,handleIframeLoad:i}}const v={class:"className",frameborder:"frameBorder",allowfullscreen:"allowFullScreen",allowtransparency:"allowTransparency",marginheight:"marginHeight",marginwidth:"marginWidth"};function y({onClick:e}){return(0,l.createElement)("div",{className:"activitypub-embed-overlay",onClick:e,style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",cursor:"pointer",zIndex:1}})}function g({html:e,onSelectBlock:t}){const r=(0,u.useRef)(),[n,o]=(0,u.useState)(282),[a,i]=(0,u.useState)(!1),c=(0,u.useCallback)((()=>{const t=(new window.DOMParser).parseFromString(e,"text/html").querySelector("iframe"),r={};return t?(Array.from(t.attributes).forEach((({name:e,value:t})=>{"style"!==e&&(r[v[e]||e]=t)})),r):r}),[e]),s=c();return(0,u.useEffect)((()=>{if(!r.current)return;const{ownerDocument:e}=r.current,{defaultView:t}=e;function n({data:{secret:e,message:t,value:r}={}}){"height"===t&&e===s["data-secret"]&&o(r)}return t.addEventListener("message",n),()=>{t.removeEventListener("message",n)}}),[s]),s.src?(0,l.createElement)("div",{className:"wp-block-embed__wrapper",style:{position:"relative"}},(0,l.createElement)("iframe",{ref:r,title:s.title||(0,d.__)("Embedded WordPress content","activitypub"),...s,height:n,style:{width:"100%",maxWidth:"100%"}}),!a&&(0,l.createElement)(y,{onClick:t})):(0,l.createElement)("div",{className:"wp-block-embed__wrapper",style:{position:"relative"}},(0,l.createElement)("div",{dangerouslySetInnerHTML:{__html:e}}),(0,l.createElement)(y,{onClick:t}))}function _({html:e,onClick:t,isSelected:r}){const{iframeRef:n,iframeHeight:o,adjustIframeHeight:a,handleIframeLoad:i}=b({html:e}),c=(0,u.useCallback)((()=>`\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t${e}\n\t\t\t\n\t\t\t\n\t\t`),[e]);return(0,l.createElement)("div",{className:"wp-block-embed__wrapper",style:{position:"relative"}},(0,l.createElement)("iframe",{ref:n,srcDoc:c(),sandbox:"allow-scripts allow-same-origin allow-popups allow-forms",style:{width:"100%",height:`${o}px`,border:"none",overflow:"hidden"},onLoad:i}),r&&(0,l.createElement)("div",{onClick:t,style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",cursor:"pointer",zIndex:1,display:r?"block":"none"}}))}const E={default:(0,d.__)("Enter the URL of a post from the Fediverse (Mastodon, Pixelfed, etc.) that you want to reply to.","activitypub"),checking:()=>(0,l.createElement)(l.Fragment,null,(0,l.createElement)(s.Spinner,null)," "+(0,d.__)("Checking if this URL supports ActivityPub replies...","activitypub")),valid:(0,d.__)("The author will be notified of your response.","activitypub"),error:(0,d.__)("This URL probably won't receive your reply. We'll still try.","activitypub")},k={valid:(0,d.__)("This post can be embedded with your reply.","activitypub"),invalid:(0,d.__)("This post cannot be embedded.","activitypub")};(0,n.registerBlockType)("activitypub/reply",{edit:function({attributes:e,setAttributes:t,clientId:r,isSelected:n}){const{url:o}=e,{namespace:a}=window._activityPubOptions||{},[i,p]=(0,u.useState)(E.default),[v,y]=(0,u.useState)(!1),[C,L]=(0,u.useState)(!1),[S,O]=(0,u.useState)(!1),[P,x]=(0,u.useState)(!0===e.embedPost||!o),[R,T]=(0,u.useState)(null),{iframeRef:H,iframeHeight:I,adjustIframeHeight:j,handleIframeLoad:D}=b({html:R}),{insertAfterBlock:B,removeBlock:N}=(0,w.useDispatch)("core/block-editor"),W=(0,c.useBlockProps)(),F=(0,u.useRef)(),M=((0,u.useRef)(),(0,u.useRef)(P)),U=()=>{setTimeout((()=>F.current?.focus()),50)};(0,u.useEffect)((()=>{M.current=P}),[P]);const A=(0,u.useCallback)((e=>{y(e),M.current&&e&&t({embedPost:!0})}),[t]),V=(e=!1)=>{O(e),y(!1),L(!1),T("")},$=(0,m.useDebounce)((async e=>{if(e)try{V(!0),p(E.checking());const t=await f()({path:(0,h.addQueryArgs)(`${a}/url/validate`,{url:e})});A(t.is_activitypub),L(t.is_real_oembed),T(t.html||""),p(E.valid)}catch(e){V(),p(E.error)}finally{O(!1)}else V()}),250);return(0,u.useEffect)((()=>{o&&$(o)}),[o]),(0,l.createElement)(l.Fragment,null,(0,l.createElement)(c.InspectorControls,null,(0,l.createElement)(s.PanelBody,{title:(0,d.__)("Settings","activitypub")},(0,l.createElement)(s.ToggleControl,{label:(0,d.__)("Embed Post","activitypub"),checked:e.embedPost,onChange:e=>{t({embedPost:e}),x(e)},disabled:!v,help:v?k.valid:k.invalid}))),(0,l.createElement)("div",{...W},n&&(0,l.createElement)(s.TextControl,{label:(0,d.__)("Your post is a reply to the following URL","activitypub"),value:o,onChange:e=>t({url:e}),help:i,onKeyDown:t=>{"Enter"===t.key&&B(r),!e.url&&["Backspace","Delete"].includes(t.key)&&N(r)},ref:F}),v&&e.embedPost&&R&&(0,l.createElement)("div",{className:"activitypub-embed-container"},C&&(Y=R)&&(Y.includes("wp-embedded-content")||Y.includes("wp-embed/")||Y.includes('class="wp-embed"'))?(0,l.createElement)(g,{html:R,onSelectBlock:U}):(0,l.createElement)(_,{html:R,onClick:U,isSelected:n})),o&&(!e.embedPost||!R)&&(0,l.createElement)("div",{className:"activitypub-reply-block-editor__preview",contentEditable:!1,onClick:U,style:{cursor:"pointer"}},(0,l.createElement)("a",{href:o,className:"u-in-reply-to",target:"_blank",rel:"noreferrer"},"↬"+o.replace(/^https?:\/\//,"")))));var Y},save:()=>null,icon:i})},20:(e,t,r)=>{var n=r(609),o=Symbol.for("react.element"),a=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),i=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};t.jsx=function(e,t,r){var n,c={},s=null,d=null;for(n in void 0!==r&&(s=""+r),void 0!==t.key&&(s=""+t.key),void 0!==t.ref&&(d=t.ref),t)a.call(t,n)&&!l.hasOwnProperty(n)&&(c[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===c[n]&&(c[n]=t[n]);return{$$typeof:o,type:e,key:s,ref:d,props:c,_owner:i.current}}},848:(e,t,r)=>{e.exports=r(20)},609:e=>{e.exports=window.React}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var a=r[e]={exports:{}};return t[e](a,a.exports,n),a.exports}n.m=t,e=[],n.O=(t,r,o,a)=>{if(!r){var i=1/0;for(d=0;d=a)&&Object.keys(n.O).every((e=>n.O[e](r[c])))?r.splice(c--,1):(l=!1,a0&&e[d-1][2]>a;d--)e[d]=e[d-1];e[d]=[r,o,a]},n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={780:0,356:0};n.O.j=t=>0===e[t];var t=(t,r)=>{var o,a,i=r[0],l=r[1],c=r[2],s=0;if(i.some((t=>0!==e[t]))){for(o in l)n.o(l,o)&&(n.m[o]=l[o]);if(c)var d=c(n)}for(t&&t(r);sn(238)));o=n.O(o)})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/style-index-rtl.css b/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/style-index-rtl.css deleted file mode 100644 index ec651ab6..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/style-index-rtl.css +++ /dev/null @@ -1 +0,0 @@ -.activitypub-embed-container{margin-top:1em;min-height:100px;pointer-events:none;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.activitypub-embed-loading{align-items:center;display:flex;justify-content:center}.activitypub-embed-container .wp-block-embed{pointer-events:none!important}.activitypub-embed-preview,.activitypub-embed-preview iframe{pointer-events:none}.activitypub-reply-display{margin:1em 0}.activitypub-reply-display p{margin:0}.activitypub-reply-display a{color:#2271b1;text-decoration:none}.activitypub-reply-display a:hover{color:#135e96;text-decoration:underline} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/style-index.css b/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/style-index.css deleted file mode 100644 index ec651ab6..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/build/reply/style-index.css +++ /dev/null @@ -1 +0,0 @@ -.activitypub-embed-container{margin-top:1em;min-height:100px;pointer-events:none;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.activitypub-embed-loading{align-items:center;display:flex;justify-content:center}.activitypub-embed-container .wp-block-embed{pointer-events:none!important}.activitypub-embed-preview,.activitypub-embed-preview iframe{pointer-events:none}.activitypub-reply-display{margin:1em 0}.activitypub-reply-display p{margin:0}.activitypub-reply-display a{color:#2271b1;text-decoration:none}.activitypub-reply-display a:hover{color:#135e96;text-decoration:underline} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-activity.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-activity.php deleted file mode 100644 index b4623ac2..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-activity.php +++ /dev/null @@ -1,269 +0,0 @@ -set( 'object', $object ); - $this->pre_fill_activity_from_object(); - } - - /** - * Fills the Activity with the specified activity object. - */ - public function pre_fill_activity_from_object() { - $object = $this->get_object(); - - // Check if `$data` is a URL and use it to generate an ID then. - if ( is_string( $object ) && filter_var( $object, FILTER_VALIDATE_URL ) && ! $this->get_id() ) { - $this->set( 'id', $object . '#activity-' . strtolower( $this->get_type() ) . '-' . time() ); - - return; - } - - // Check if `$data` is an object and copy some properties otherwise do nothing. - if ( ! is_object( $object ) ) { - return; - } - - foreach ( array( 'to', 'bto', 'cc', 'bcc', 'audience' ) as $i ) { - $value = $object->get( $i ); - if ( $value && ! $this->get( $i ) ) { - $this->set( $i, $value ); - } - } - - if ( $object->get_published() && ! $this->get_published() ) { - $this->set( 'published', $object->get_published() ); - } - - if ( $object->get_updated() && ! $this->get_updated() ) { - $this->set( 'updated', $object->get_updated() ); - } - - if ( $object->get_attributed_to() && ! $this->get_actor() ) { - $this->set( 'actor', $object->get_attributed_to() ); - } - - if ( $this->get_type() !== 'Announce' && $object->get_in_reply_to() && ! $this->get_in_reply_to() ) { - $this->set( 'in_reply_to', $object->get_in_reply_to() ); - } - - if ( $object->get_id() && ! $this->get_id() ) { - $id = strtok( $object->get_id(), '#' ); - if ( $object->get_updated() ) { - $updated = $object->get_updated(); - } elseif ( $object->get_published() ) { - $updated = $object->get_published(); - } else { - $updated = time(); - } - $this->set( 'id', $id . '#activity-' . strtolower( $this->get_type() ) . '-' . $updated ); - } - } - - /** - * The context of an Activity is usually just the context of the object it contains. - * - * @return array $context A compacted JSON-LD context. - */ - public function get_json_ld_context() { - if ( $this->object instanceof Base_Object ) { - $class = get_class( $this->object ); - if ( $class && $class::JSON_LD_CONTEXT ) { - // Without php 5.6 support this could be just: 'return $this->object::JSON_LD_CONTEXT;'. - return $class::JSON_LD_CONTEXT; - } - } - - return static::JSON_LD_CONTEXT; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-actor.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-actor.php deleted file mode 100644 index bbf2128b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-actor.php +++ /dev/null @@ -1,225 +0,0 @@ - 'http://schema.org#', - 'toot' => 'http://joinmastodon.org/ns#', - 'lemmy' => 'https://join-lemmy.org/ns#', - 'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers', - 'PropertyValue' => 'schema:PropertyValue', - 'value' => 'schema:value', - 'Hashtag' => 'as:Hashtag', - 'featured' => array( - '@id' => 'toot:featured', - '@type' => '@id', - ), - 'featuredTags' => array( - '@id' => 'toot:featuredTags', - '@type' => '@id', - ), - 'moderators' => array( - '@id' => 'lemmy:moderators', - '@type' => '@id', - ), - 'alsoKnownAs' => array( - '@id' => 'as:alsoKnownAs', - '@type' => '@id', - ), - 'movedTo' => array( - '@id' => 'as:movedTo', - '@type' => '@id', - ), - 'attributionDomains' => array( - '@id' => 'toot:attributionDomains', - '@type' => '@id', - ), - 'postingRestrictedToMods' => 'lemmy:postingRestrictedToMods', - 'discoverable' => 'toot:discoverable', - 'indexable' => 'toot:indexable', - ), - ); - - /** - * The default types for Actors. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#actor-types - * - * @var array - */ - const TYPES = array( - 'Application', - 'Group', - 'Organization', - 'Person', - 'Service', - ); - - /** - * The type of the object. - * - * @var string - */ - protected $type; - - /** - * A reference to an ActivityStreams OrderedCollection comprised of - * all the messages received by the actor. - * - * @see https://www.w3.org/TR/activitypub/#inbox - * - * @var string|null - */ - protected $inbox; - - /** - * A reference to an ActivityStreams OrderedCollection comprised of - * all the messages produced by the actor. - * - * @see https://www.w3.org/TR/activitypub/#outbox - * - * @var string|null - */ - protected $outbox; - - /** - * A link to an ActivityStreams collection of the actors that this - * actor is following. - * - * @see https://www.w3.org/TR/activitypub/#following - * - * @var string - */ - protected $following; - - /** - * A link to an ActivityStreams collection of the actors that - * follow this actor. - * - * @see https://www.w3.org/TR/activitypub/#followers - * - * @var string - */ - protected $followers; - - /** - * A link to an ActivityStreams collection of objects this actor has - * liked. - * - * @see https://www.w3.org/TR/activitypub/#liked - * - * @var string - */ - protected $liked; - - /** - * A list of supplementary Collections which may be of interest. - * - * @see https://www.w3.org/TR/activitypub/#streams-property - * - * @var array - */ - protected $streams = array(); - - /** - * A short username which may be used to refer to the actor, with no - * uniqueness guarantees. - * - * @see https://www.w3.org/TR/activitypub/#preferredUsername - * - * @var string|null - */ - protected $preferred_username; - - /** - * A JSON object which maps additional typically server/domain-wide - * endpoints which may be useful either for this actor or someone - * referencing this actor. This mapping may be nested inside the - * actor document as the value or may be a link to a JSON-LD - * document with these properties. - * - * @see https://www.w3.org/TR/activitypub/#endpoints - * - * @var string|array|null - */ - protected $endpoints; - - /** - * It's not part of the ActivityPub protocol but it's a quite common - * practice to handle an actor public key with a publicKey array: - * [ - * 'id' => 'https://my-example.com/actor#main-key' - * 'owner' => 'https://my-example.com/actor', - * 'publicKeyPem' => '-----BEGIN PUBLIC KEY----- - * MIIBI [...] - * DQIDAQAB - * -----END PUBLIC KEY-----' - * ] - * - * @see https://www.w3.org/wiki/SocialCG/ActivityPub/Authentication_Authorization#Signing_requests_using_HTTP_Signatures - * - * @var string|array|null - */ - protected $public_key; - - /** - * It's not part of the ActivityPub protocol but it's a quite common - * practice to lock an account. If anabled, new followers will not be - * automatically accepted, but will instead require you to manually - * approve them. - * - * WordPress does only support 'false' at the moment. - * - * @see https://docs.joinmastodon.org/spec/activitypub/#as - * - * @context as:manuallyApprovesFollowers - * - * @var boolean - */ - protected $manually_approves_followers = false; - - /** - * Domains allowed to use `fediverse:creator` for this actor in - * published articles. - * - * @see https://blog.joinmastodon.org/2024/07/highlighting-journalism-on-mastodon/ - * - * @var array - */ - protected $attribution_domains = null; - - /** - * The target of the actor. - * - * @var string|null - */ - protected $moved_to; - - /** - * The alsoKnownAs of the actor. - * - * @var array - */ - protected $also_known_as; -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-base-object.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-base-object.php deleted file mode 100644 index cc1d885e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-base-object.php +++ /dev/null @@ -1,508 +0,0 @@ - 'as:Hashtag', - 'sensitive' => 'as:sensitive', - ), - ); - - /** - * The default types for Objects. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#object-types - * - * @var array - */ - const TYPES = array( - 'Article', - 'Audio', - 'Document', - 'Event', - 'Image', - 'Note', - 'Page', - 'Place', - 'Profile', - 'Relationship', - 'Tombstone', - 'Video', - ); - - /** - * The type of the object. - * - * @var string - */ - protected $type = 'Object'; - - /** - * A resource attached or related to an object that potentially - * requires special handling. - * The intent is to provide a model that is at least semantically - * similar to attachments in email. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-attachment - * - * @var string|null - */ - protected $attachment; - - /** - * One or more entities to which this object is attributed. - * The attributed entities might not be Actors. For instance, an - * object might be attributed to the completion of another activity. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-attributedto - * - * @var string|null - */ - protected $attributed_to; - - /** - * One or more entities that represent the total population of - * entities for which the object can considered to be relevant. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-audience - * - * @var string|null - */ - protected $audience; - - /** - * The content or textual representation of the Object encoded as a - * JSON string. By default, the value of content is HTML. - * The mediaType property can be used in the object to indicate a - * different content type. - * - * The content MAY be expressed using multiple language-tagged - * values. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-content - * - * @var string|null - */ - protected $content; - - /** - * The context within which the object exists or an activity was - * performed. - * The notion of "context" used is intentionally vague. - * The intended function is to serve as a means of grouping objects - * and activities that share a common originating context or - * purpose. An example could be all activities relating to a common - * project or event. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-context - * - * @var string|null - */ - protected $context; - - /** - * The content MAY be expressed using multiple language-tagged - * values. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-content - * - * @var array|null - */ - protected $content_map; - - /** - * A simple, human-readable, plain-text name for the object. - * HTML markup MUST NOT be included. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-name - * - * @var string|null xsd:string - */ - protected $name; - - /** - * The name MAY be expressed using multiple language-tagged values. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-name - * - * @var array|null rdf:langString - */ - protected $name_map; - - /** - * The date and time describing the actual or expected ending time - * of the object. - * When used with an Activity object, for instance, the endTime - * property specifies the moment the activity concluded or - * is expected to conclude. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-endtime - * - * @var string|null - */ - protected $end_time; - - /** - * The entity (e.g. an application) that generated the object. - * - * @var string|null - */ - protected $generator; - - /** - * An entity that describes an icon for this object. - * The image should have an aspect ratio of one (horizontal) - * to one (vertical) and should be suitable for presentation - * at a small size. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-icon - * - * @var string|array|null - */ - protected $icon; - - /** - * An entity that describes an image for this object. - * Unlike the icon property, there are no aspect ratio - * or display size limitations assumed. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-image-term - * - * @var string|array|null - */ - protected $image; - - /** - * One or more entities for which this object is considered a - * response. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-inreplyto - * - * @var string|null - */ - protected $in_reply_to; - - /** - * One or more physical or logical locations associated with the - * object. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-location - * - * @var string|null - */ - protected $location; - - /** - * An entity that provides a preview of this object. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-preview - * - * @var string|null - */ - protected $preview; - - /** - * The date and time at which the object was published - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-published - * - * @var string|null xsd:dateTime - */ - protected $published; - - /** - * The date and time describing the actual or expected starting time - * of the object. - * When used with an Activity object, for instance, the startTime - * property specifies the moment the activity began - * or is scheduled to begin. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-starttime - * - * @var string|null xsd:dateTime - */ - protected $start_time; - - /** - * A natural language summarization of the object encoded as HTML. - * Multiple language tagged summaries MAY be provided. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-summary - * - * @var string|null - */ - protected $summary; - - /** - * The content MAY be expressed using multiple language-tagged - * values. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-summary - * - * @var string[]|null - */ - protected $summary_map; - - /** - * One or more "tags" that have been associated with an objects. - * A tag can be any kind of Object. - * The key difference between attachment and tag is that the former - * implies association by inclusion, while the latter implies - * associated by reference. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-tag - * - * @var string|null - */ - protected $tag; - - /** - * The date and time at which the object was updated - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-updated - * - * @var string|null xsd:dateTime - */ - protected $updated; - - /** - * One or more links to representations of the object. - * - * @var string|null - */ - protected $url; - - /** - * An entity considered to be part of the public primary audience - * of an Object - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-to - * - * @var string|array|null - */ - protected $to; - - /** - * An Object that is part of the private primary audience of this - * Object. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-bto - * - * @var string|array|null - */ - protected $bto; - - /** - * An Object that is part of the public secondary audience of this - * Object. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-cc - * - * @var string|array|null - */ - protected $cc; - - /** - * One or more Objects that are part of the private secondary - * audience of this Object. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-bcc - * - * @var string|array|null - */ - protected $bcc; - - /** - * The MIME media type of the value of the content property. - * If not specified, the content property is assumed to contain - * text/html content. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-mediatype - * - * @var string|null - */ - protected $media_type; - - /** - * When the object describes a time-bound resource, such as an audio - * or video, a meeting, etc, the duration property indicates the - * object's approximate duration. - * The value MUST be expressed as an xsd:duration as defined by - * xmlschema11-2, section 3.3.6 (e.g. a period of 5 seconds is - * represented as "PT5S"). - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-duration - * - * @var string|null - */ - protected $duration; - - /** - * Intended to convey some sort of source from which the content - * markup was derived, as a form of provenance, or to support - * future editing by clients. - * - * @see https://www.w3.org/TR/activitypub/#source-property - * - * @var array - */ - protected $source; - - /** - * A Collection containing objects considered to be responses to - * this object. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-replies - * - * @var string|array|null - */ - protected $replies; - - /** - * A Collection containing objects considered to be likes for - * this object. - * - * @see https://www.w3.org/TR/activitypub/#likes - * - * @var array - */ - protected $likes; - - /** - * A Collection containing objects considered to be shares for - * this object. - * - * @see https://www.w3.org/TR/activitypub/#shares - * - * @var array - */ - protected $shares; - - /** - * Used to mark an object as containing sensitive content. - * Mastodon displays a content warning, requiring users to click - * through to view the content. - * - * @see https://docs.joinmastodon.org/spec/activitypub/#sensitive - * - * @var boolean - */ - protected $sensitive; - - /** - * Generic getter. - * - * @param string $key The key to get. - * - * @return mixed The value. - */ - public function get( $key ) { - if ( ! $this->has( $key ) ) { - return new \WP_Error( 'invalid_key', __( 'Invalid key', 'activitypub' ), array( 'status' => 404 ) ); - } - - return parent::get( $key ); - } - - /** - * Generic setter. - * - * @param string $key The key to set. - * @param string $value The value to set. - * - * @return mixed The value. - */ - public function set( $key, $value ) { - if ( ! $this->has( $key ) ) { - return new \WP_Error( 'invalid_key', __( 'Invalid key', 'activitypub' ), array( 'status' => 404 ) ); - } - - return parent::set( $key, $value ); - } - - /** - * Generic adder. - * - * @param string $key The key to set. - * @param mixed $value The value to add. - * - * @return mixed The value. - */ - public function add( $key, $value ) { - if ( ! $this->has( $key ) ) { - return new \WP_Error( 'invalid_key', __( 'Invalid key', 'activitypub' ), array( 'status' => 404 ) ); - } - - return parent::add( $key, $value ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-generic-object.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-generic-object.php deleted file mode 100644 index eceff1e8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/class-generic-object.php +++ /dev/null @@ -1,325 +0,0 @@ -to_string(); - } - - /** - * Function to transform the object to string. - * - * @return string The object id. - */ - public function to_string() { - return $this->get_id(); - } - - /** - * Magic function to implement getter and setter. - * - * @param string $method The method name. - * @param string $params The method params. - */ - public function __call( $method, $params ) { - $var = \strtolower( \substr( $method, 4 ) ); - - if ( \strncasecmp( $method, 'get', 3 ) === 0 ) { - if ( ! $this->has( $var ) ) { - return null; - } - - return $this->$var; - } - - if ( \strncasecmp( $method, 'set', 3 ) === 0 ) { - return $this->set( $var, $params[0] ); - } - - if ( \strncasecmp( $method, 'add', 3 ) === 0 ) { - return $this->add( $var, $params[0] ); - } - } - - /** - * Generic getter. - * - * @param string $key The key to get. - * - * @return mixed The value. - */ - public function get( $key ) { - return call_user_func( array( $this, 'get_' . $key ) ); - } - - /** - * Generic setter. - * - * @param string $key The key to set. - * @param string $value The value to set. - * - * @return mixed The value. - */ - public function set( $key, $value ) { - $this->$key = $value; - - return $this; - } - - /** - * Generic adder. - * - * @param string $key The key to set. - * @param mixed $value The value to add. - * - * @return mixed The value. - */ - public function add( $key, $value ) { - if ( empty( $value ) ) { - return; - } - - if ( ! isset( $this->$key ) ) { - $this->$key = array(); - } - - if ( is_string( $this->$key ) ) { - $this->$key = array( $this->$key ); - } - - $attributes = $this->$key; - - if ( is_array( $value ) ) { - $attributes = array_merge( $attributes, $value ); - } else { - $attributes[] = $value; - } - - $this->$key = array_unique( $attributes ); - - return $this->$key; - } - - /** - * Check if the object has a key - * - * @param string $key The key to check. - * - * @return boolean True if the object has the key. - */ - public function has( $key ) { - return property_exists( $this, $key ); - } - - /** - * Convert JSON input to an array. - * - * @param string $json The JSON string. - * - * @return Generic_Object|\WP_Error An Object built from the JSON string or WP_Error when it's not a JSON string. - */ - public static function init_from_json( $json ) { - $array = \json_decode( $json, true ); - - if ( ! is_array( $array ) ) { - return new \WP_Error( 'invalid_json', __( 'Invalid JSON', 'activitypub' ), array( 'status' => 400 ) ); - } - - return self::init_from_array( $array ); - } - - /** - * Convert input array to a Base_Object. - * - * @param array $data The object array. - * - * @return Generic_Object|\WP_Error An Object built from the input array or WP_Error when it's not an array. - */ - public static function init_from_array( $data ) { - if ( ! is_array( $data ) ) { - return new \WP_Error( 'invalid_array', __( 'Invalid array', 'activitypub' ), array( 'status' => 400 ) ); - } - - $object = new static(); - $object->from_array( $data ); - - return $object; - } - - /** - * Convert JSON input to an array and pre-fill the object. - * - * @param array $data The array. - */ - public function from_array( $data ) { - foreach ( $data as $key => $value ) { - if ( null !== $value ) { - $key = camel_to_snake_case( $key ); - call_user_func( array( $this, 'set_' . $key ), $value ); - } - } - } - - /** - * Convert JSON input to an array and pre-fill the object. - * - * @param string $json The JSON string. - */ - public function from_json( $json ) { - $array = \json_decode( $json, true ); - - $this->from_array( $array ); - } - - /** - * Convert Object to an array. - * - * It tries to get the object attributes if they exist - * and falls back to the getters. Empty values are ignored. - * - * @param bool $include_json_ld_context Whether to include the JSON-LD context. Default true. - * - * @return array An array built from the Object. - */ - public function to_array( $include_json_ld_context = true ) { - $array = array(); - $vars = get_object_vars( $this ); - - foreach ( $vars as $key => $value ) { - if ( \is_wp_error( $value ) ) { - continue; - } - - // Ignore all _prefixed keys. - if ( '_' === substr( $key, 0, 1 ) ) { - continue; - } - - // If value is empty, try to get it from a getter. - if ( ! $value ) { - $value = call_user_func( array( $this, 'get_' . $key ) ); - } - - if ( is_object( $value ) ) { - $value = $value->to_array( false ); - } - - // If value is still empty, ignore it for the array and continue. - if ( isset( $value ) ) { - $array[ snake_to_camel_case( $key ) ] = $value; - } - } - - if ( $include_json_ld_context ) { - // Get JsonLD context and move it to '@context' at the top. - $array = array_merge( array( '@context' => $this->get_json_ld_context() ), $array ); - } - - $class = new \ReflectionClass( $this ); - $class = strtolower( $class->getShortName() ); - - /** - * Filter the array of the ActivityPub object. - * - * @param array $array The array of the ActivityPub object. - * @param string $class The class of the ActivityPub object. - * @param string $id The ID of the ActivityPub object. - * @param Generic_Object $object The ActivityPub object. - * - * @return array The filtered array of the ActivityPub object. - */ - $array = \apply_filters( 'activitypub_activity_object_array', $array, $class, $this->id, $this ); - - /** - * Filter the array of the ActivityPub object by class. - * - * @param array $array The array of the ActivityPub object. - * @param string $id The ID of the ActivityPub object. - * @param Generic_Object $object The ActivityPub object. - * - * @return array The filtered array of the ActivityPub object. - */ - return \apply_filters( "activitypub_activity_{$class}_object_array", $array, $this->id, $this ); - } - - /** - * Convert Object to JSON. - * - * @param bool $include_json_ld_context Whether to include the JSON-LD context. Default true. - * - * @return string The JSON string. - */ - public function to_json( $include_json_ld_context = true ) { - $array = $this->to_array( $include_json_ld_context ); - $options = \JSON_HEX_TAG | \JSON_HEX_AMP | \JSON_HEX_QUOT | \JSON_UNESCAPED_SLASHES; - - /** - * Options to be passed to json_encode(). - * - * @param int $options The current options flags. - */ - $options = \apply_filters( 'activitypub_json_encode_options', $options ); - - return \wp_json_encode( $array, $options ); - } - - /** - * Returns the keys of the object vars. - * - * @return array The keys of the object vars. - */ - public function get_object_var_keys() { - return \array_keys( \get_object_vars( $this ) ); - } - - /** - * Returns the JSON-LD context of this object. - * - * @return array $context A compacted JSON-LD context for the ActivityPub object. - */ - public function get_json_ld_context() { - return static::JSON_LD_CONTEXT; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/extended-object/class-event.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/extended-object/class-event.php deleted file mode 100644 index a44c2c66..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/extended-object/class-event.php +++ /dev/null @@ -1,379 +0,0 @@ - 'https://joinpeertube.org/ns#', - 'mz' => 'https://joinmobilizon.org/ns#', - 'status' => 'http://www.w3.org/2002/12/cal/ical#status', - 'commentsEnabled' => 'pt:commentsEnabled', - 'isOnline' => 'mz:isOnline', - 'timezone' => 'mz:timezone', - 'participantCount' => 'mz:participantCount', - 'anonymousParticipationEnabled' => 'mz:anonymousParticipationEnabled', - 'joinMode' => array( - '@id' => 'mz:joinMode', - '@type' => 'mz:joinModeType', - ), - 'externalParticipationUrl' => array( - '@id' => 'mz:externalParticipationUrl', - '@type' => 'schema:URL', - ), - 'repliesModerationOption' => array( - '@id' => 'mz:repliesModerationOption', - '@type' => '@vocab', - ), - 'contacts' => array( - '@id' => 'mz:contacts', - '@type' => '@id', - ), - ), - ); - - /** - * Mobilizon compatible values for repliesModerationOption. - * - * @var array - */ - const REPLIES_MODERATION_OPTION_TYPES = array( 'allow_all', 'closed' ); - - /** - * Mobilizon compatible values for joinModeTypes. - */ - const JOIN_MODE_TYPES = array( 'free', 'restricted', 'external' ); // and 'invite', but not used by mobilizon atm. - - /** - * Allowed values for ical VEVENT STATUS. - * - * @var array - */ - const ICAL_EVENT_STATUS_TYPES = array( 'TENTATIVE', 'CONFIRMED', 'CANCELLED' ); - - /** - * Default event categories. - * - * These values currently reflect the default set as proposed by Mobilizon to maximize interoperability. - * - * @var array - */ - const DEFAULT_EVENT_CATEGORIES = array( - 'ARTS', - 'BOOK_CLUBS', - 'BUSINESS', - 'CAUSES', - 'COMEDY', - 'CRAFTS', - 'FOOD_DRINK', - 'HEALTH', - 'MUSIC', - 'AUTO_BOAT_AIR', - 'COMMUNITY', - 'FAMILY_EDUCATION', - 'FASHION_BEAUTY', - 'FILM_MEDIA', - 'GAMES', - 'LANGUAGE_CULTURE', - 'LEARNING', - 'LGBTQ', - 'MOVEMENTS_POLITICS', - 'NETWORKING', - 'PARTY', - 'PERFORMING_VISUAL_ARTS', - 'PETS', - 'PHOTOGRAPHY', - 'OUTDOORS_ADVENTURE', - 'SPIRITUALITY_RELIGION_BELIEFS', - 'SCIENCE_TECH', - 'SPORTS', - 'THEATRE', - 'MEETING', // Default value. - ); - - /** - * Event is an implementation of one of the Activity Streams. - * - * @var string - */ - protected $type = 'Event'; - - /** - * The Title of the event. - * - * @var string - */ - protected $name; - - /** - * The events contacts. - * - * @context { - * '@id' => 'mz:contacts', - * '@type' => '@id', - * } - * - * @var array Array of contacts (ActivityPub actor IDs). - */ - protected $contacts; - - /** - * Extension invented by PeerTube whether comments/replies are - * Mobilizon also implemented this as a fallback to their own - * repliesModerationOption. - * - * @see https://docs.joinpeertube.org/api/activitypub#video - * @see https://docs.joinmobilizon.org/contribute/activity_pub/ - * @var bool|null - */ - protected $comments_enabled; - - /** - * Timezone of the event. - * - * @context https://joinmobilizon.org/ns#timezone - * @var string - */ - protected $timezone; - - /** - * Moderation option for replies. - * - * @context https://joinmobilizon.org/ns#repliesModerationOption - * @see https://docs.joinmobilizon.org/contribute/activity_pub/#repliesmoderation - * @var string - */ - protected $replies_moderation_option; - - /** - * Whether anonymous participation is enabled. - * - * @context https://joinmobilizon.org/ns#anonymousParticipationEnabled - * @see https://docs.joinmobilizon.org/contribute/activity_pub/#anonymousparticipationenabled - * @var bool - */ - protected $anonymous_participation_enabled; - - /** - * The event's category. - * - * @context https://schema.org/category - * @var string - */ - protected $category; - - /** - * Language of the event. - * - * @context https://schema.org/inLanguage - * @var string - */ - protected $in_language; - - /** - * Whether the event is online. - * - * @context https://joinmobilizon.org/ns#isOnline - * @var bool - */ - protected $is_online; - - /** - * The event's status. - * - * @context https://www.w3.org/2002/12/cal/ical#status - * @var string - */ - protected $status; - - /** - * Which actor created the event. - * - * This field is needed due to the current group structure of Mobilizon. - * - * @todo this seems to not be a default property of an Object but needed by mobilizon. - * @var string - */ - protected $actor; - - /** - * The external participation URL. - * - * @context https://joinmobilizon.org/ns#externalParticipationUrl - * @var string - */ - protected $external_participation_url; - - /** - * Indicator of how new members may be able to join. - * - * @context https://joinmobilizon.org/ns#joinMode - * @see https://docs.joinmobilizon.org/contribute/activity_pub/#joinmode - * @var string - */ - protected $join_mode; - - /** - * The participant count of the event. - * - * @context https://joinmobilizon.org/ns#participantCount - * @var int - */ - protected $participant_count; - - /** - * How many places there can be for an event. - * - * @context https://schema.org/maximumAttendeeCapacity - * @see https://docs.joinmobilizon.org/contribute/activity_pub/#maximumattendeecapacity - * @var int - */ - protected $maximum_attendee_capacity; - - /** - * The number of attendee places for an event that remain unallocated. - * - * @context https://schema.org/remainingAttendeeCapacity - * @see https://docs.joinmobilizon.org/contribute/activity_pub/#remainignattendeecapacity - * @var int - */ - protected $remaining_attendee_capacity; - - /** - * Setter for the timezone. - * - * The passed timezone is only set when it is a valid one, otherwise the site's timezone is used. - * - * @param string $timezone The timezone string to be set, e.g. 'Europe/Berlin'. - * @return Event - */ - public function set_timezone( $timezone ) { - if ( in_array( $timezone, timezone_identifiers_list(), true ) ) { - $this->timezone = $timezone; - } else { - $this->timezone = wp_timezone_string(); - } - - return $this; - } - - /** - * Custom setter for repliesModerationOption which also directly sets commentsEnabled accordingly. - * - * @param string $type The type of the replies moderation option. - * - * @return Event - */ - public function set_replies_moderation_option( $type ) { - if ( in_array( $type, self::REPLIES_MODERATION_OPTION_TYPES, true ) ) { - $this->replies_moderation_option = $type; - $this->comments_enabled = ( 'allow_all' === $type ) ? true : false; - } else { - _doing_it_wrong( - __METHOD__, - 'The replies moderation option must be either allow_all or closed.', - '' - ); - } - - return $this; - } - - /** - * Custom setter for commentsEnabled which also directly sets repliesModerationOption accordingly. - * - * @param bool $comments_enabled Whether comments are enabled. - * - * @return Event - */ - public function set_comments_enabled( $comments_enabled ) { - if ( is_bool( $comments_enabled ) ) { - $this->comments_enabled = $comments_enabled; - $this->replies_moderation_option = $comments_enabled ? 'allow_all' : 'closed'; - } else { - _doing_it_wrong( - __METHOD__, - 'The commentsEnabled must be boolean.', - '' - ); - } - - return $this; - } - - /** - * Custom setter for the ical status that checks whether the status is an ical event status. - * - * @param string $status The status of the event. - * - * @return Event - */ - public function set_status( $status ) { - if ( in_array( $status, self::ICAL_EVENT_STATUS_TYPES, true ) ) { - $this->status = $status; - } else { - _doing_it_wrong( - __METHOD__, - 'The status of the event must be a VEVENT iCal status.', - '' - ); - } - - return $this; - } - - /** - * Custom setter for the event category. - * - * Falls back to Mobilizon's default category. - * - * @param string $category The category of the event. - * @param bool $mobilizon_compatibility Optional. Whether the category must be compatibly with Mobilizon. Default true. - * - * @return Event - */ - public function set_category( $category, $mobilizon_compatibility = true ) { - if ( $mobilizon_compatibility ) { - $this->category = in_array( $category, self::DEFAULT_EVENT_CATEGORIES, true ) ? $category : 'MEETING'; - } else { - $this->category = $category; - } - - return $this; - } - - /** - * Custom setter for an external participation url. - * - * Automatically sets the joinMode to true if called. - * - * @param string $url The URL for external participation. - * - * @return Event - */ - public function set_external_participation_url( $url ) { - if ( preg_match( '/^https?:\/\/.*/i', $url ) ) { - $this->external_participation_url = $url; - $this->join_mode = 'external'; - } - - return $this; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/extended-object/class-place.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/extended-object/class-place.php deleted file mode 100644 index 1bf7419b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/activity/extended-object/class-place.php +++ /dev/null @@ -1,105 +0,0 @@ -= 0.0f, <= 100.0f] - */ - protected $accuracy; - - /** - * Indicates the altitude of a place. The measurement unit is indicated using the unit's property. - * If unit is not specified, the default is assumed to be "m" indicating meters. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-altitude - * @var float xsd:float - */ - protected $altitude; - - /** - * The latitude of a place. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-latitude - * @var float xsd:float - */ - protected $latitude; - - /** - * The longitude of a place. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-longitude - * @var float xsd:float - */ - protected $longitude; - - /** - * The radius from the given latitude and longitude for a Place. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-radius - * @var float - */ - protected $radius; - - /** - * Specifies the measurement units for the `radius` and `altitude` properties. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-units - * @var string - */ - protected $units; - - /** - * The address of the place. - * - * @see https://schema.org/PostalAddress - * @var array|string - */ - protected $address; - - /** - * Set the address of the place. - * - * @param array|string $address The address of the place. - */ - public function set_address( $address ) { - if ( is_string( $address ) || is_array( $address ) ) { - $this->address = $address; - } else { - _doing_it_wrong( - __METHOD__, - 'The address must be either a string or an array like schema.org/PostalAddress.', - '' - ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-activitypub.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-activitypub.php deleted file mode 100644 index 9299dc09..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-activitypub.php +++ /dev/null @@ -1,898 +0,0 @@ -get_activitypub_object(); - - if ( $activitypub_object ) { - if ( \get_query_var( 'preview' ) ) { - \define( 'ACTIVITYPUB_PREVIEW', true ); - - /** - * Filter the template used for the ActivityPub preview. - * - * @param string $activitypub_template Absolute path to the template file. - */ - $activitypub_template = apply_filters( 'activitypub_preview_template', ACTIVITYPUB_PLUGIN_DIR . '/templates/post-preview.php' ); - } else { - $activitypub_template = ACTIVITYPUB_PLUGIN_DIR . 'templates/activitypub-json.php'; - } - } - - /* - * Check if the request is authorized. - * - * @see https://www.w3.org/wiki/SocialCG/ActivityPub/Primer/Authentication_Authorization#Authorized_fetch - * @see https://swicg.github.io/activitypub-http-signature/#authorized-fetch - */ - if ( $activitypub_template && use_authorized_fetch() ) { - $verification = Signature::verify_http_signature( $_SERVER ); - if ( \is_wp_error( $verification ) ) { - header( 'HTTP/1.1 401 Unauthorized' ); - - // Fallback as template_loader can't return http headers. - return $template; - } - } - - if ( $activitypub_template ) { - \set_query_var( 'is_404', false ); - - // Check if header already sent. - if ( ! \headers_sent() ) { - // Send 200 status header. - \status_header( 200 ); - } - - return $activitypub_template; - } - - return $template; - } - - /** - * Add the 'self' link to the header. - */ - public static function add_headers() { - $id = Query::get_instance()->get_activitypub_object_id(); - - if ( ! $id ) { - return; - } - - if ( ! headers_sent() ) { - \header( 'Link: <' . esc_url( $id ) . '>; title="ActivityPub (JSON)"; rel="alternate"; type="application/activity+json"', false ); - - if ( \get_option( 'activitypub_vary_header' ) ) { - // Send Vary header for Accept header. - \header( 'Vary: Accept', false ); - } - } - - add_action( - 'wp_head', - function () use ( $id ) { - echo PHP_EOL . '' . PHP_EOL; - } - ); - } - - /** - * Remove trailing slash from ActivityPub @username requests. - * - * @param string $redirect_url The URL to redirect to. - * @param string $requested_url The requested URL. - * - * @return string $redirect_url The possibly-unslashed redirect URL. - */ - public static function no_trailing_redirect( $redirect_url, $requested_url ) { - if ( get_query_var( 'actor' ) ) { - return $requested_url; - } - - return $redirect_url; - } - - /** - * Add support for `p` and `author` query vars. - * - * @param string $redirect_url The URL to redirect to. - * @param string $requested_url The requested URL. - * - * @return string $redirect_url - */ - public static function redirect_canonical( $redirect_url, $requested_url ) { - if ( ! is_activitypub_request() ) { - return $redirect_url; - } - - $query = \wp_parse_url( $requested_url, PHP_URL_QUERY ); - - if ( ! $query ) { - return $redirect_url; - } - - $query_params = \wp_parse_args( $query ); - unset( $query_params['activitypub'] ); - - if ( 1 !== count( $query_params ) ) { - return $redirect_url; - } - - if ( isset( $query_params['p'] ) ) { - return null; - } - - if ( isset( $query_params['author'] ) ) { - return null; - } - - return $requested_url; - } - - /** - * Custom redirects for ActivityPub requests. - * - * @return void - */ - public static function template_redirect() { - global $wp_query; - - $comment_id = get_query_var( 'c', null ); - - // Check if it seems to be a comment. - if ( $comment_id ) { - $comment = get_comment( $comment_id ); - - // Load a 404-page if `c` is set but not valid. - if ( ! $comment ) { - $wp_query->set_404(); - return; - } - - // Stop if it's not an ActivityPub comment. - if ( is_activitypub_request() && ! is_local_comment( $comment ) ) { - return; - } - - wp_safe_redirect( get_comment_link( $comment ) ); - exit; - } - - $actor = get_query_var( 'actor', null ); - if ( $actor ) { - $actor = Actors::get_by_username( $actor ); - if ( ! $actor || \is_wp_error( $actor ) ) { - $wp_query->set_404(); - return; - } - - if ( is_activitypub_request() ) { - return; - } - - if ( $actor->get__id() > 0 ) { - $redirect_url = $actor->get_url(); - } else { - $redirect_url = get_bloginfo( 'url' ); - } - - wp_safe_redirect( $redirect_url, 301 ); - exit; - } - } - - /** - * Add the 'activitypub' query variable so WordPress won't mangle it. - * - * @param array $vars The query variables. - * - * @return array The query variables. - */ - public static function add_query_vars( $vars ) { - $vars[] = 'activitypub'; - $vars[] = 'preview'; - $vars[] = 'author'; - $vars[] = 'actor'; - $vars[] = 'c'; - $vars[] = 'p'; - - return $vars; - } - - /** - * Replaces the default avatar. - * - * @param array $args Arguments passed to get_avatar_data(), after processing. - * @param int|string|object $id_or_email A user ID, email address, or comment object. - * - * @return array $args - */ - public static function pre_get_avatar_data( $args, $id_or_email ) { - if ( - ! $id_or_email instanceof \WP_Comment || - ! isset( $id_or_email->comment_type ) || - $id_or_email->user_id - ) { - return $args; - } - - $allowed_comment_types = \apply_filters( 'get_avatar_comment_types', array( 'comment' ) ); - if ( - ! empty( $id_or_email->comment_type ) && - ! \in_array( - $id_or_email->comment_type, - (array) $allowed_comment_types, - true - ) - ) { - $args['url'] = false; - /** This filter is documented in wp-includes/link-template.php */ - return \apply_filters( 'get_avatar_data', $args, $id_or_email ); - } - - // Check if comment has an avatar. - $avatar = \get_comment_meta( $id_or_email->comment_ID, 'avatar_url', true ); - - if ( $avatar ) { - if ( empty( $args['class'] ) ) { - $args['class'] = array(); - } elseif ( \is_string( $args['class'] ) ) { - $args['class'] = \explode( ' ', $args['class'] ); - } - - $args['url'] = $avatar; - $args['class'][] = 'avatar-activitypub'; - $args['class'][] = 'u-photo'; - $args['class'] = \array_unique( $args['class'] ); - } - - return $args; - } - - /** - * Store permalink in meta, to send delete Activity. - * - * @param string $post_id The Post ID. - */ - public static function trash_post( $post_id ) { - \add_post_meta( - $post_id, - '_activitypub_canonical_url', - \get_permalink( $post_id ), - true - ); - } - - /** - * Delete permalink from meta. - * - * @param string $post_id The Post ID. - */ - public static function untrash_post( $post_id ) { - \delete_post_meta( $post_id, '_activitypub_canonical_url' ); - } - - /** - * Add rewrite rules. - */ - public static function add_rewrite_rules() { - /* - * If another system needs to take precedence over the ActivityPub rewrite rules, - * they can define their own and will manually call the appropriate functions as required. - */ - if ( ACTIVITYPUB_DISABLE_REWRITES ) { - return; - } - - if ( ! \class_exists( 'Webfinger' ) ) { - \add_rewrite_rule( - '^.well-known/webfinger', - 'index.php?rest_route=/' . ACTIVITYPUB_REST_NAMESPACE . '/webfinger', - 'top' - ); - } - - if ( ! \class_exists( 'Nodeinfo_Endpoint' ) && true === (bool) \get_option( 'blog_public', 1 ) ) { - \add_rewrite_rule( - '^.well-known/nodeinfo', - 'index.php?rest_route=/' . ACTIVITYPUB_REST_NAMESPACE . '/nodeinfo', - 'top' - ); - } - - \add_rewrite_rule( '^@([\w\-\.]+)\/?$', 'index.php?actor=$matches[1]', 'top' ); - \add_rewrite_endpoint( 'activitypub', EP_AUTHORS | EP_PERMALINK | EP_PAGES ); - } - - /** - * Flush rewrite rules. - */ - public static function flush_rewrite_rules() { - self::add_rewrite_rules(); - \flush_rewrite_rules(); - } - - /** - * Theme compatibility stuff. - */ - public static function theme_compat() { - // We assume that you want to use Post-Formats when enabling the setting. - if ( 'wordpress-post-format' === \get_option( 'activitypub_object_type', ACTIVITYPUB_DEFAULT_OBJECT_TYPE ) ) { - if ( ! get_theme_support( 'post-formats' ) ) { - // Add support for the Aside, Gallery Post Formats... - add_theme_support( - 'post-formats', - array( - 'gallery', - 'status', - 'image', - 'video', - 'audio', - ) - ); - } - } - } - - /** - * Register Custom Post Types. - */ - private static function register_post_types() { - \register_post_type( - Followers::POST_TYPE, - array( - 'labels' => array( - 'name' => _x( 'Followers', 'post_type plural name', 'activitypub' ), - 'singular_name' => _x( 'Follower', 'post_type single name', 'activitypub' ), - ), - 'public' => false, - 'hierarchical' => false, - 'rewrite' => false, - 'query_var' => false, - 'delete_with_user' => false, - 'can_export' => true, - 'supports' => array(), - ) - ); - - \register_post_meta( - Followers::POST_TYPE, - '_activitypub_inbox', - array( - 'type' => 'string', - 'single' => true, - 'sanitize_callback' => 'sanitize_url', - ) - ); - - \register_post_meta( - Followers::POST_TYPE, - '_activitypub_errors', - array( - 'type' => 'string', - 'single' => false, - 'sanitize_callback' => function ( $value ) { - if ( ! is_string( $value ) ) { - throw new Exception( 'Error message is no valid string' ); - } - - return esc_sql( $value ); - }, - ) - ); - - \register_post_meta( - Followers::POST_TYPE, - '_activitypub_user_id', - array( - 'type' => 'string', - 'single' => false, - 'sanitize_callback' => function ( $value ) { - return esc_sql( $value ); - }, - ) - ); - - \register_post_meta( - Followers::POST_TYPE, - '_activitypub_actor_json', - array( - 'type' => 'string', - 'single' => true, - 'sanitize_callback' => function ( $value ) { - return sanitize_text_field( $value ); - }, - ) - ); - - // Register Outbox Post-Type. - register_post_type( - Outbox::POST_TYPE, - array( - 'labels' => array( - 'name' => _x( 'Outbox', 'post_type plural name', 'activitypub' ), - 'singular_name' => _x( 'Outbox Item', 'post_type single name', 'activitypub' ), - ), - 'capabilities' => array( - 'create_posts' => false, - ), - 'map_meta_cap' => true, - 'public' => false, - 'show_in_rest' => true, - 'rewrite' => false, - 'query_var' => false, - 'supports' => array( 'title', 'editor', 'author', 'custom-fields' ), - 'delete_with_user' => true, - 'can_export' => true, - 'exclude_from_search' => true, - ) - ); - - /** - * Register Activity Type meta for Outbox items. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#activity-types - */ - \register_post_meta( - Outbox::POST_TYPE, - '_activitypub_activity_type', - array( - 'type' => 'string', - 'description' => 'The type of the activity', - 'single' => true, - 'show_in_rest' => true, - 'sanitize_callback' => function ( $value ) { - $value = ucfirst( strtolower( $value ) ); - $schema = array( - 'type' => 'string', - 'enum' => array( 'Accept', 'Add', 'Announce', 'Arrive', 'Block', 'Create', 'Delete', 'Dislike', 'Flag', 'Follow', 'Ignore', 'Invite', 'Join', 'Leave', 'Like', 'Listen', 'Move', 'Offer', 'Question', 'Reject', 'Read', 'Remove', 'TentativeReject', 'TentativeAccept', 'Travel', 'Undo', 'Update', 'View' ), - 'default' => 'Announce', - ); - - if ( is_wp_error( rest_validate_enum( $value, $schema, '' ) ) ) { - return $schema['default']; - } - - return $value; - }, - ) - ); - - \register_post_meta( - Outbox::POST_TYPE, - '_activitypub_activity_actor', - array( - 'type' => 'string', - 'single' => true, - 'show_in_rest' => true, - 'sanitize_callback' => function ( $value ) { - $schema = array( - 'type' => 'string', - 'enum' => array( 'application', 'blog', 'user' ), - 'default' => 'user', - ); - - if ( is_wp_error( rest_validate_enum( $value, $schema, '' ) ) ) { - return $schema['default']; - } - - return $value; - }, - ) - ); - - \register_post_meta( - Outbox::POST_TYPE, - '_activitypub_outbox_offset', - array( - 'type' => 'integer', - 'single' => true, - 'description' => 'Keeps track of the followers offset when processing outbox items.', - 'sanitize_callback' => 'absint', - 'default' => 0, - ) - ); - - \register_post_meta( - Outbox::POST_TYPE, - '_activitypub_object_id', - array( - 'type' => 'string', - 'single' => true, - 'description' => 'The ID (ActivityPub URI) of the object that the outbox item is about.', - 'sanitize_callback' => 'sanitize_url', - ) - ); - - \register_post_meta( - Outbox::POST_TYPE, - 'activitypub_content_visibility', - array( - 'type' => 'string', - 'single' => true, - 'show_in_rest' => true, - 'sanitize_callback' => function ( $value ) { - $schema = array( - 'type' => 'string', - 'enum' => array( ACTIVITYPUB_CONTENT_VISIBILITY_PUBLIC, ACTIVITYPUB_CONTENT_VISIBILITY_QUIET_PUBLIC, ACTIVITYPUB_CONTENT_VISIBILITY_PRIVATE, ACTIVITYPUB_CONTENT_VISIBILITY_LOCAL ), - 'default' => ACTIVITYPUB_CONTENT_VISIBILITY_PUBLIC, - ); - - if ( is_wp_error( rest_validate_enum( $value, $schema, '' ) ) ) { - return $schema['default']; - } - - return $value; - }, - ) - ); - - // Both User and Blog Extra Fields types have the same args. - $args = array( - 'labels' => array( - 'name' => _x( 'Extra fields', 'post_type plural name', 'activitypub' ), - 'singular_name' => _x( 'Extra field', 'post_type single name', 'activitypub' ), - 'add_new' => __( 'Add new', 'activitypub' ), - 'add_new_item' => __( 'Add new extra field', 'activitypub' ), - 'new_item' => __( 'New extra field', 'activitypub' ), - 'edit_item' => __( 'Edit extra field', 'activitypub' ), - 'view_item' => __( 'View extra field', 'activitypub' ), - 'all_items' => __( 'All extra fields', 'activitypub' ), - ), - 'public' => false, - 'hierarchical' => false, - 'query_var' => false, - 'has_archive' => false, - 'publicly_queryable' => false, - 'show_in_menu' => false, - 'delete_with_user' => true, - 'can_export' => true, - 'exclude_from_search' => true, - 'show_in_rest' => true, - 'map_meta_cap' => true, - 'show_ui' => true, - 'supports' => array( 'title', 'editor', 'page-attributes' ), - ); - - \register_post_type( Extra_Fields::USER_POST_TYPE, $args ); - \register_post_type( Extra_Fields::BLOG_POST_TYPE, $args ); - - /** - * Fires after ActivityPub custom post types have been registered. - */ - \do_action( 'activitypub_after_register_post_type' ); - } - - /** - * Add the 'activitypub' capability to users who can publish posts. - * - * @param int $user_id User ID. - */ - public static function user_register( $user_id ) { - if ( \user_can( $user_id, 'publish_posts' ) ) { - $user = \get_user_by( 'id', $user_id ); - $user->add_cap( 'activitypub' ); - } - } - - /** - * Delete `activitypub_content_visibility` when updated to an empty value. - * - * @param int $meta_id ID of updated metadata entry. - * @param int $object_id Post ID. - * @param string $meta_key Metadata key. - * @param mixed $meta_value Metadata value. This will be a PHP-serialized string representation of the value - * if the value is an array, an object, or itself a PHP-serialized string. - */ - public static function updated_postmeta( $meta_id, $object_id, $meta_key, $meta_value ) { - if ( 'activitypub_content_visibility' === $meta_key && empty( $meta_value ) ) { - \delete_post_meta( $object_id, 'activitypub_content_visibility' ); - } - } - - /** - * Register some Mastodon oEmbed providers. - */ - public static function register_oembed_providers() { - \wp_oembed_add_provider( '#https?://mastodon\.social/(@.+)/([0-9]+)#i', 'https://mastodon.social/api/oembed', true ); - \wp_oembed_add_provider( '#https?://mastodon\.online/(@.+)/([0-9]+)#i', 'https://mastodon.online/api/oembed', true ); - \wp_oembed_add_provider( '#https?://mastodon\.cloud/(@.+)/([0-9]+)#i', 'https://mastodon.cloud/api/oembed', true ); - \wp_oembed_add_provider( '#https?://mstdn\.social/(@.+)/([0-9]+)#i', 'https://mstdn.social/api/oembed', true ); - \wp_oembed_add_provider( '#https?://mastodon\.world/(@.+)/([0-9]+)#i', 'https://mastodon.world/api/oembed', true ); - \wp_oembed_add_provider( '#https?://mas\.to/(@.+)/([0-9]+)#i', 'https://mas.to/api/oembed', true ); - } - - /** - * Register user meta. - */ - public static function register_user_meta() { - $blog_prefix = $GLOBALS['wpdb']->get_blog_prefix(); - - \register_meta( - 'user', - $blog_prefix . 'activitypub_also_known_as', - array( - 'type' => 'array', - 'description' => 'An array of URLs that the user is known by.', - 'single' => true, - 'default' => array(), - 'sanitize_callback' => array( Sanitize::class, 'url_list' ), - ) - ); - - \register_meta( - 'user', - $blog_prefix . 'activitypub_old_host_data', - array( - 'description' => 'Actor object for the user on the old host.', - 'single' => true, - ) - ); - - \register_meta( - 'user', - $blog_prefix . 'activitypub_moved_to', - array( - 'type' => 'string', - 'description' => 'The new URL of the user.', - 'single' => true, - 'sanitize_callback' => 'sanitize_url', - ) - ); - - \register_meta( - 'user', - $blog_prefix . 'activitypub_description', - array( - 'type' => 'string', - 'description' => 'The user’s description.', - 'single' => true, - 'default' => '', - 'sanitize_callback' => function ( $value ) { - return wp_kses( $value, 'user_description' ); - }, - ) - ); - - \register_meta( - 'user', - $blog_prefix . 'activitypub_icon', - array( - 'type' => 'integer', - 'description' => 'The attachment ID for user’s profile image.', - 'single' => true, - 'default' => 0, - 'sanitize_callback' => 'absint', - ) - ); - - \register_meta( - 'user', - $blog_prefix . 'activitypub_header_image', - array( - 'type' => 'integer', - 'description' => 'The attachment ID for the user’s header image.', - 'single' => true, - 'default' => 0, - 'sanitize_callback' => 'absint', - ) - ); - - \register_meta( - 'user', - $blog_prefix . 'activitypub_mailer_new_dm', - array( - 'type' => 'integer', - 'description' => 'Send a notification when someone sends this user a direct message.', - 'single' => true, - 'sanitize_callback' => 'absint', - ) - ); - \add_filter( 'get_user_option_activitypub_mailer_new_dm', array( self::class, 'user_options_default' ) ); - - \register_meta( - 'user', - $blog_prefix . 'activitypub_mailer_new_follower', - array( - 'type' => 'integer', - 'description' => 'Send a notification when someone starts to follow this user.', - 'single' => true, - 'sanitize_callback' => 'absint', - ) - ); - \add_filter( 'get_user_option_activitypub_mailer_new_follower', array( self::class, 'user_options_default' ) ); - - \register_meta( - 'user', - $blog_prefix . 'activitypub_mailer_new_mention', - array( - 'type' => 'integer', - 'description' => 'Send a notification when someone mentions this user.', - 'single' => true, - 'sanitize_callback' => 'absint', - ) - ); - \add_filter( 'get_user_option_activitypub_mailer_new_mention', array( self::class, 'user_options_default' ) ); - - \register_meta( - 'user', - 'activitypub_show_welcome_tab', - array( - 'type' => 'integer', - 'description' => 'Whether to show the welcome tab.', - 'single' => true, - 'default' => 1, - 'sanitize_callback' => 'absint', - ) - ); - - \register_meta( - 'user', - 'activitypub_show_advanced_tab', - array( - 'type' => 'integer', - 'description' => 'Whether to show the advanced tab.', - 'single' => true, - 'default' => 0, - 'sanitize_callback' => 'absint', - ) - ); - } - - /** - * Set default values for user options. - * - * @param bool|string $value Option value. - * @return bool|string - */ - public static function user_options_default( $value ) { - if ( false === $value ) { - return '1'; - } - - return $value; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-autoloader.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-autoloader.php deleted file mode 100644 index 232a8323..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-autoloader.php +++ /dev/null @@ -1,106 +0,0 @@ -prefix = $prefix; - $this->prefix_length = \strlen( $prefix ); - $this->path = \rtrim( $path . '/' ); - } - - /** - * Registers Autoloader's autoload function. - * - * @throws \Exception When autoload_function cannot be registered. - * - * @param string $prefix Namespace prefix all classes have in common. - * @param string $path Path to the files to be loaded. - */ - public static function register_path( $prefix, $path ) { - $loader = new self( $prefix, $path ); - \spl_autoload_register( array( $loader, 'load' ) ); - } - - /** - * Loads a class if its namespace starts with `$this->prefix`. - * - * @param string $class_name The class to be loaded. - */ - public function load( $class_name ) { - if ( \strpos( $class_name, $this->prefix . self::NS_SEPARATOR ) !== 0 ) { - return; - } - - // Strip prefix from the start (ala PSR-4). - $class_name = \substr( $class_name, $this->prefix_length + 1 ); - $class_name = \strtolower( $class_name ); - $dir = ''; - - $last_ns_pos = \strripos( $class_name, self::NS_SEPARATOR ); - if ( false !== $last_ns_pos ) { - $namespace = \substr( $class_name, 0, $last_ns_pos ); - $namespace = \str_replace( '_', '-', $namespace ); - $class_name = \substr( $class_name, $last_ns_pos + 1 ); - $dir = \str_replace( self::NS_SEPARATOR, DIRECTORY_SEPARATOR, $namespace ) . DIRECTORY_SEPARATOR; - } - - $path = $this->path . $dir . 'class-' . \str_replace( '_', '-', $class_name ) . '.php'; - - if ( ! \file_exists( $path ) ) { - $path = $this->path . $dir . 'interface-' . \str_replace( '_', '-', $class_name ) . '.php'; - } - - if ( ! \file_exists( $path ) ) { - $path = $this->path . $dir . 'trait-' . \str_replace( '_', '-', $class_name ) . '.php'; - } - - if ( \file_exists( $path ) ) { - require_once $path; - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-blocks.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-blocks.php deleted file mode 100644 index 80989af2..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-blocks.php +++ /dev/null @@ -1,446 +0,0 @@ - true, - 'single' => true, - 'type' => 'string', - 'sanitize_callback' => function ( $warning ) { - if ( $warning ) { - return \sanitize_text_field( $warning ); - } - - return null; - }, - ) - ); - - \register_post_meta( - $post_type, - 'activitypub_content_visibility', - array( - 'type' => 'string', - 'single' => true, - 'show_in_rest' => true, - 'sanitize_callback' => function ( $value ) { - $schema = array( - 'type' => 'string', - 'enum' => array( ACTIVITYPUB_CONTENT_VISIBILITY_PUBLIC, ACTIVITYPUB_CONTENT_VISIBILITY_QUIET_PUBLIC, ACTIVITYPUB_CONTENT_VISIBILITY_PRIVATE, ACTIVITYPUB_CONTENT_VISIBILITY_LOCAL ), - 'default' => ACTIVITYPUB_CONTENT_VISIBILITY_PUBLIC, - ); - - if ( is_wp_error( rest_validate_enum( $value, $schema, '' ) ) ) { - return $schema['default']; - } - - return $value; - }, - ) - ); - } - } - - /** - * Enqueue the block editor assets. - */ - public static function enqueue_editor_assets() { - // Check for our supported post types. - $current_screen = \get_current_screen(); - $ap_post_types = \get_post_types_by_support( 'activitypub' ); - if ( ! $current_screen || ! in_array( $current_screen->post_type, $ap_post_types, true ) ) { - return; - } - $asset_data = include ACTIVITYPUB_PLUGIN_DIR . 'build/editor-plugin/plugin.asset.php'; - $plugin_url = plugins_url( 'build/editor-plugin/plugin.js', ACTIVITYPUB_PLUGIN_FILE ); - wp_enqueue_script( 'activitypub-block-editor', $plugin_url, $asset_data['dependencies'], $asset_data['version'], true ); - } - - /** - * Enqueue the reply handle script if the in_reply_to GET param is set. - */ - public static function handle_in_reply_to_get_param() { - // Only load the script if the in_reply_to GET param is set, action happens there, not here. - // phpcs:ignore WordPress.Security.NonceVerification.Recommended - if ( ! isset( $_GET['in_reply_to'] ) ) { - return; - } - - $asset_data = include ACTIVITYPUB_PLUGIN_DIR . 'build/reply-intent/plugin.asset.php'; - $plugin_url = plugins_url( 'build/reply-intent/plugin.js', ACTIVITYPUB_PLUGIN_FILE ); - wp_enqueue_script( 'activitypub-reply-intent', $plugin_url, $asset_data['dependencies'], $asset_data['version'], true ); - } - - /** - * Output ActivityPub options as a script tag. - */ - public static function inject_activitypub_options() { - $data = array( - 'namespace' => ACTIVITYPUB_REST_NAMESPACE, - 'defaultAvatarUrl' => ACTIVITYPUB_PLUGIN_URL . 'assets/img/mp.jpg', - 'enabled' => array( - 'site' => ! is_user_type_disabled( 'blog' ), - 'users' => ! is_user_type_disabled( 'user' ), - ), - ); - - printf( - "\n", - wp_json_encode( $data ) - ); - } - - /** - * Register the blocks. - */ - public static function register_blocks() { - \register_block_type_from_metadata( - ACTIVITYPUB_PLUGIN_DIR . '/build/followers', - array( - 'render_callback' => array( self::class, 'render_follower_block' ), - ) - ); - \register_block_type_from_metadata( - ACTIVITYPUB_PLUGIN_DIR . '/build/follow-me', - array( - 'render_callback' => array( self::class, 'render_follow_me_block' ), - ) - ); - \register_block_type_from_metadata( - ACTIVITYPUB_PLUGIN_DIR . '/build/reply', - array( - 'render_callback' => array( self::class, 'render_reply_block' ), - ) - ); - - \register_block_type_from_metadata( - ACTIVITYPUB_PLUGIN_DIR . '/build/reactions', - array( - 'render_callback' => array( self::class, 'render_post_reactions_block' ), - ) - ); - } - - /** - * Render the post reactions block. - * - * @param array $attrs The block attributes. - * - * @return string The HTML to render. - */ - public static function render_post_reactions_block( $attrs ) { - if ( ! isset( $attrs['postId'] ) ) { - $attrs['postId'] = get_the_ID(); - } - - $wrapper_attributes = get_block_wrapper_attributes( - array( - 'class' => 'activitypub-reactions-block', - 'data-attrs' => wp_json_encode( $attrs ), - ) - ); - - return sprintf( - '
', - $wrapper_attributes - ); - } - - /** - * Get the user ID from a user string. - * - * @param string $user_string The user string. Can be a user ID, 'site', or 'inherit'. - * @return int|null The user ID, or null if the 'inherit' string is not supported in this context. - */ - private static function get_user_id( $user_string ) { - if ( is_numeric( $user_string ) ) { - return absint( $user_string ); - } - - // If the user string is 'site', return the Blog User ID. - if ( 'site' === $user_string ) { - return Actors::BLOG_USER_ID; - } - - // The only other value should be 'inherit', which means to use the query context to determine the User. - if ( 'inherit' !== $user_string ) { - return null; - } - - // For a homepage/front page, if the Blog User is active, use it. - if ( ( is_front_page() || is_home() ) && ! is_user_type_disabled( 'blog' ) ) { - return Actors::BLOG_USER_ID; - } - - // If we're in a loop, use the post author. - $author_id = get_the_author_meta( 'ID' ); - if ( $author_id ) { - return $author_id; - } - - // For other pages, the queried object will clue us in. - $queried_object = get_queried_object(); - if ( ! $queried_object ) { - return null; - } - - // If we're on a user archive page, use that user's ID. - if ( is_a( $queried_object, 'WP_User' ) ) { - return $queried_object->ID; - } - - // For a single post, use the post author's ID. - if ( is_a( $queried_object, 'WP_Post' ) ) { - return get_the_author_meta( 'ID' ); - } - - // We won't properly account for some conditions, like tag archives. - return null; - } - - /** - * Filter an array by a list of keys. - * - * @param array $data The array to filter. - * @param array $keys The keys to keep. - * @return array The filtered array. - */ - protected static function filter_array_by_keys( $data, $keys ) { - return array_intersect_key( $data, array_flip( $keys ) ); - } - - /** - * Render the follow me block. - * - * @param array $attrs The block attributes. - * @return string The HTML to render. - */ - public static function render_follow_me_block( $attrs ) { - $user_id = self::get_user_id( $attrs['selectedUser'] ); - $user = Actors::get_by_id( $user_id ); - if ( is_wp_error( $user ) ) { - if ( 'inherit' === $attrs['selectedUser'] ) { - // If the user is 'inherit' and we couldn't determine the user, don't render anything. - return ''; - } else { - // If the user is a specific ID and we couldn't find it, render an error message. - return ''; - } - } - - $attrs['profileData'] = self::filter_array_by_keys( - $user->to_array(), - array( 'icon', 'name', 'webfinger' ) - ); - - $wrapper_attributes = get_block_wrapper_attributes( - array( - 'class' => 'activitypub-follow-me-block-wrapper', - 'data-attrs' => wp_json_encode( $attrs ), - ) - ); - // todo: render more than an empty div? - return '
'; - } - - /** - * Render the follower block. - * - * @param array $attrs The block attributes. - * - * @return string The HTML to render. - */ - public static function render_follower_block( $attrs ) { - $followee_user_id = self::get_user_id( $attrs['selectedUser'] ); - if ( is_null( $followee_user_id ) ) { - return ''; - } - - $user = Actors::get_by_id( $followee_user_id ); - if ( is_wp_error( $user ) ) { - return ''; - } - - $per_page = absint( $attrs['per_page'] ); - $follower_data = Followers::get_followers_with_count( $followee_user_id, $per_page ); - - $attrs['followerData']['total'] = $follower_data['total']; - $attrs['followerData']['followers'] = array_map( - function ( $follower ) { - return self::filter_array_by_keys( - $follower->to_array(), - array( 'icon', 'name', 'preferredUsername', 'url' ) - ); - }, - $follower_data['followers'] - ); - $wrapper_attributes = get_block_wrapper_attributes( - array( - 'aria-label' => __( 'Fediverse Followers', 'activitypub' ), - 'class' => 'activitypub-follower-block', - 'data-attrs' => wp_json_encode( $attrs ), - ) - ); - - $html = '
'; - if ( $attrs['title'] ) { - $html .= '

' . esc_html( $attrs['title'] ) . '

'; - } - $html .= '
    '; - foreach ( $follower_data['followers'] as $follower ) { - $html .= '
  • ' . self::render_follower( $follower ) . '
  • '; - } - // We are only pagination on the JS side. Could be revisited but we gotta ship! - $html .= '
'; - return $html; - } - - /** - * Render the reply block. - * - * @param array $attrs The block attributes. - * - * @return string The HTML to render. - */ - public static function render_reply_block( $attrs ) { - // Return early if no URL is provided. - if ( empty( $attrs['url'] ) ) { - return null; - } - - $show_embed = isset( $attrs['embedPost'] ) && $attrs['embedPost']; - - $wrapper_attrs = get_block_wrapper_attributes( - array( - 'aria-label' => __( 'Reply', 'activitypub' ), - 'class' => 'activitypub-reply-block', - 'data-in-reply-to' => $attrs['url'], - ) - ); - - $html = '
'; - - // Try to get and append the embed if requested. - if ( $show_embed ) { - $embed = wp_oembed_get( $attrs['url'] ); - if ( $embed ) { - $html .= $embed; - } - } - - // Only show the link if we're not showing the embed. - if ( ! $show_embed ) { - $html .= sprintf( - '

%3$s

', - esc_url( $attrs['url'] ), - esc_attr__( 'This post is a response to the referenced content.', 'activitypub' ), - // translators: %s is the URL of the post being replied to. - sprintf( __( '↬%s', 'activitypub' ), \str_replace( array( 'https://', 'http://' ), '', esc_url( $attrs['url'] ) ) ) - ); - } - - $html .= '
'; - - return $html; - } - - /** - * Render a follower. - * - * @param \Activitypub\Model\Follower $follower The follower to render. - * - * @return string The HTML to render. - */ - public static function render_follower( $follower ) { - $external_svg = ''; - $template = - ' - - - %s - / - @%s - - %s - '; - - $data = $follower->to_array(); - - return sprintf( - $template, - esc_url( object_to_uri( $data['url'] ) ), - esc_attr( $data['name'] ), - esc_attr( $data['icon']['url'] ), - esc_html( $data['name'] ), - esc_html( $data['preferredUsername'] ), - $external_svg - ); - } - - /** - * Converts content to blocks before saving to the database. - * - * @param array $data The post data to be inserted. - * @param object $post The Mastodon Create activity. - * - * @return array - */ - public static function filter_import_mastodon_post_data( $data, $post ) { - // Convert paragraphs to blocks. - \preg_match_all( '#

.*?

#is', $data['post_content'], $matches ); - $blocks = \array_map( - function ( $paragraph ) { - return '' . PHP_EOL . $paragraph . PHP_EOL . '' . PHP_EOL; - }, - $matches[0] ?? array() - ); - - $data['post_content'] = \rtrim( \implode( PHP_EOL, $blocks ), PHP_EOL ); - - // Add reply block if it's a reply. - if ( null !== $post->object->inReplyTo ) { - $reply_block = \sprintf( '' . PHP_EOL, \esc_url( $post->object->inReplyTo ) ); - $data['post_content'] = $reply_block . $data['post_content']; - } - - return $data; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-cli.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-cli.php deleted file mode 100644 index b5c9d224..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-cli.php +++ /dev/null @@ -1,230 +0,0 @@ - - * : The action to perform. Either `delete` or `update`. - * --- - * options: - * - delete - * - update - * --- - * - * - * : The id of the Post, Page, Custom Post Type or Attachment. - * - * ## EXAMPLES - * - * $ wp activitypub post delete 1 - * - * @synopsis - * - * @param array $args The arguments. - */ - public function post( $args ) { - $post = get_post( $args[1] ); - - if ( ! $post ) { - \WP_CLI::error( 'Post not found.' ); - } - - switch ( $args[0] ) { - case 'delete': - \WP_CLI::confirm( 'Do you really want to delete the (Custom) Post with the ID: ' . $args[1] ); - add_to_outbox( $post, 'Delete', $post->post_author ); - \WP_CLI::success( '"Delete" activity is queued.' ); - break; - case 'update': - add_to_outbox( $post, 'Update', $post->post_author ); - \WP_CLI::success( '"Update" activity is queued.' ); - break; - default: - \WP_CLI::error( 'Unknown action.' ); - } - } - - /** - * Delete or Update a Comment. - * - * ## OPTIONS - * - * - * : The action to perform. Either `delete` or `update`. - * --- - * options: - * - delete - * - update - * --- - * - * - * : The id of the Comment. - * - * ## EXAMPLES - * - * $ wp activitypub comment delete 1 - * - * @synopsis - * - * @param array $args The arguments. - */ - public function comment( $args ) { - $comment = get_comment( $args[1] ); - - if ( ! $comment ) { - \WP_CLI::error( 'Comment not found.' ); - } - - if ( was_comment_received( $comment ) ) { - \WP_CLI::error( 'This comment was received via ActivityPub and cannot be deleted or updated.' ); - } - - switch ( $args[0] ) { - case 'delete': - \WP_CLI::confirm( 'Do you really want to delete the Comment with the ID: ' . $args[1] ); - add_to_outbox( $comment, 'Delete', $comment->user_id ); - \WP_CLI::success( '"Delete" activity is queued.' ); - break; - case 'update': - add_to_outbox( $comment, 'Update', $comment->user_id ); - \WP_CLI::success( '"Update" activity is queued.' ); - break; - default: - \WP_CLI::error( 'Unknown action.' ); - } - } - - /** - * Undo an activity that was sent to the Fediverse. - * - * ## OPTIONS - * - * - * The ID or URL of the outbox item to undo. - * - * ## EXAMPLES - * - * $ wp activitypub undo 123 - * $ wp activitypub undo "https://example.com/?post_type=ap_outbox&p=123" - * - * @synopsis - * - * @param array $args The arguments. - */ - public function undo( $args ) { - $outbox_item_id = $args[0]; - if ( ! is_numeric( $outbox_item_id ) ) { - $outbox_item_id = url_to_postid( $outbox_item_id ); - } - - $outbox_item_id = get_post( $outbox_item_id ); - if ( ! $outbox_item_id ) { - \WP_CLI::error( 'Activity not found.' ); - } - - $undo_id = Outbox::undo( $outbox_item_id ); - if ( ! $undo_id ) { - \WP_CLI::error( 'Failed to undo activity.' ); - } - \WP_CLI::success( 'Undo activity scheduled.' ); - } - - /** - * Re-Schedule an activity that was sent to the Fediverse before. - * - * ## OPTIONS - * - * - * The ID or URL of the outbox item to reschedule. - * - * ## EXAMPLES - * - * $ wp activitypub reschedule 123 - * $ wp activitypub reschedule "https://example.com/?post_type=ap_outbox&p=123" - * - * @synopsis - * - * @param array $args The arguments. - */ - public function reschedule( $args ) { - $outbox_item_id = $args[0]; - if ( ! is_numeric( $outbox_item_id ) ) { - $outbox_item_id = url_to_postid( $outbox_item_id ); - } - - $outbox_item_id = get_post( $outbox_item_id ); - if ( ! $outbox_item_id ) { - \WP_CLI::error( 'Activity not found.' ); - } - - Outbox::reschedule( $outbox_item_id ); - - \WP_CLI::success( 'Rescheduled activity.' ); - } - - /** - * Move the blog to a new URL. - * - * ## OPTIONS - * - * - * The current URL of the blog. - * - * - * The new URL of the blog. - * - * ## EXAMPLES - * - * $ wp activitypub move https://example.com/ https://newsite.com/ - * - * @synopsis - * - * @param array $args The arguments. - */ - public function move( $args ) { - $from = $args[0]; - $to = $args[1]; - - $outbox_item_id = Move::account( $from, $to ); - - if ( is_wp_error( $outbox_item_id ) ) { - \WP_CLI::error( $outbox_item_id->get_error_message() ); - } else { - \WP_CLI::success( 'Move Scheduled.' ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-comment.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-comment.php deleted file mode 100644 index bfa8537e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-comment.php +++ /dev/null @@ -1,817 +0,0 @@ - self::generate_id( $comment ), - 'commentId' => $comment->comment_ID, - ); - - $div = sprintf( - '
', - esc_attr( wp_json_encode( $attrs ) ) - ); - - /** - * Filters the HTML markup for the ActivityPub remote comment reply container. - * - * @param string $div The HTML markup for the remote reply container. Default is a div - * with class 'activitypub-remote-reply' and data attributes for - * the selected comment ID and internal comment ID. - */ - return apply_filters( 'activitypub_comment_reply_link', $div ); - } - - /** - * Create a link to reply to a federated comment. - * - * This function adds a title attribute to the reply link to inform the user - * that the comment was received from the fediverse and the reply will be sent - * to the original author. - * - * @param string $link The HTML markup for the comment reply link. - * @param array $args The args provided by the `comment_reply_link` filter. - * - * @return string The modified HTML markup for the comment reply link. - */ - private static function create_fediverse_reply_link( $link, $args ) { - $str_to_replace = sprintf( '>%s<', $args['reply_text'] ); - $replace_with = sprintf( - ' title="%s">%s<', - esc_attr__( 'This comment was received from the fediverse and your reply will be sent to the original author', 'activitypub' ), - esc_html__( 'Reply with federation', 'activitypub' ) - ); - return str_replace( $str_to_replace, $replace_with, $link ); - } - - /** - * Check if it is allowed to comment to a comment. - * - * Checks if the comment is local only or if the user can comment federated comments. - * - * @param mixed $comment Comment object or ID. - * - * @return boolean True if the user can comment, false otherwise. - */ - public static function are_comments_allowed( $comment ) { - $comment = \get_comment( $comment ); - - if ( ! self::was_received( $comment ) ) { - return true; - } - - $current_user = get_current_user_id(); - - if ( ! $current_user ) { - return false; - } - - if ( is_single_user() && \user_can( $current_user, 'publish_posts' ) ) { - // On a single user site, comments by users with the `publish_posts` capability will be federated as the blog user. - $current_user = Actors::BLOG_USER_ID; - } - - return user_can_activitypub( $current_user ); - } - - /** - * Check if a comment is federated. - * - * We consider a comment federated if comment was received via ActivityPub. - * - * Use this function to check if it is comment that was received via ActivityPub. - * - * @param mixed $comment Comment object or ID. - * - * @return boolean True if the comment is federated, false otherwise. - */ - public static function was_received( $comment ) { - $comment = \get_comment( $comment ); - - if ( ! $comment ) { - return false; - } - - $protocol = \get_comment_meta( $comment->comment_ID, 'protocol', true ); - - if ( 'activitypub' === $protocol ) { - return true; - } - - return false; - } - - /** - * Check if a comment was federated. - * - * This function checks if a comment was federated via ActivityPub. - * - * @param mixed $comment Comment object or ID. - * - * @return boolean True if the comment was federated, false otherwise. - */ - public static function was_sent( $comment ) { - $comment = \get_comment( $comment ); - - if ( ! $comment ) { - return false; - } - - $status = \get_comment_meta( $comment->comment_ID, 'activitypub_status', true ); - - if ( $status ) { - return true; - } - - return false; - } - - /** - * Check if a comment is local only. - * - * This function checks if a comment is local only and was not sent or received via ActivityPub. - * - * @param mixed $comment Comment object or ID. - * - * @return boolean True if the comment is local only, false otherwise. - */ - public static function is_local( $comment ) { - if ( self::was_sent( $comment ) || self::was_received( $comment ) ) { - return false; - } - - return true; - } - - /** - * Check if a comment should be federated. - * - * We consider a comment should be federated if it is authored by a user that is - * not disabled for federation and if it is a reply directly to the post or to a - * federated comment. - * - * Use this function to check if a comment should be federated. - * - * @param mixed $comment Comment object or ID. - * - * @return boolean True if the comment should be federated, false otherwise. - */ - public static function should_be_federated( $comment ) { - // We should not federate federated comments. - if ( self::was_received( $comment ) ) { - return false; - } - - $comment = \get_comment( $comment ); - $user_id = $comment->user_id; - - // Comments without user can't be federated. - if ( ! $user_id ) { - return false; - } - - if ( is_single_user() && \user_can( $user_id, 'activitypub' ) ) { - // On a single user site, comments by users with the `publish_posts` capability will be federated as the blog user. - $user_id = Actors::BLOG_USER_ID; - } - - // User is not allowed to federate comments. - if ( ! user_can_activitypub( $user_id ) ) { - return false; - } - - // It is a comment to the post and can be federated. - if ( empty( $comment->comment_parent ) ) { - return true; - } - - // Check if parent comment is federated. - $parent_comment = \get_comment( $comment->comment_parent ); - - return ! self::is_local( $parent_comment ); - } - - /** - * Examine a comment ID and look up an existing comment it represents. - * - * @param string $id ActivityPub object ID (usually a URL) to check. - * - * @return \WP_Comment|false Comment object, or false on failure. - */ - public static function object_id_to_comment( $id ) { - $comment_query = new WP_Comment_Query( - array( - 'meta_key' => 'source_id', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key - 'meta_value' => $id, // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value - 'orderby' => 'comment_date', - 'order' => 'DESC', - ) - ); - - if ( ! $comment_query->comments ) { - return false; - } - - return $comment_query->comments[0]; - } - - /** - * Verify if URL is a local comment, or if it is a previously received - * remote comment (For threading comments locally). - * - * @param string $url The URL to check. - * - * @return string|null Comment ID or null if not found. - */ - public static function url_to_commentid( $url ) { - if ( ! $url || ! filter_var( $url, \FILTER_VALIDATE_URL ) ) { - return null; - } - - // Check for local comment. - if ( \wp_parse_url( \home_url(), \PHP_URL_HOST ) === \wp_parse_url( $url, \PHP_URL_HOST ) ) { - $query = \wp_parse_url( $url, \PHP_URL_QUERY ); - - if ( $query ) { - parse_str( $query, $params ); - - if ( ! empty( $params['c'] ) ) { - $comment = \get_comment( $params['c'] ); - - if ( $comment ) { - return $comment->comment_ID; - } - } - } - } - - $args = array( - // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query - 'meta_query' => array( - 'relation' => 'OR', - array( - 'key' => 'source_url', - 'value' => $url, - ), - array( - 'key' => 'source_id', - 'value' => $url, - ), - ), - ); - - $query = new WP_Comment_Query(); - $comments = $query->query( $args ); - - if ( $comments && is_array( $comments ) ) { - return $comments[0]->comment_ID; - } - - return null; - } - - /** - * Filters the CSS classes to add an ActivityPub class. - * - * @param string[] $classes An array of comment classes. - * @param string[] $css_class An array of additional classes added to the list. - * @param string $comment_id The comment ID as a numeric string. - * - * @return string[] An array of classes. - */ - public static function comment_class( $classes, $css_class, $comment_id ) { - // Check if ActivityPub comment. - if ( 'activitypub' === get_comment_meta( $comment_id, 'protocol', true ) ) { - $classes[] = 'activitypub-comment'; - } - - return $classes; - } - - /** - * Gets the public comment id via the WordPress comments meta. - * - * @param int $wp_comment_id The internal WordPress comment ID. - * @param bool $fallback Whether the code should fall back to `source_url` if `source_id` is not set. - * - * @return string|null The ActivityPub id/url of the comment. - */ - public static function get_source_id( $wp_comment_id, $fallback = true ) { - $comment_meta = \get_comment_meta( $wp_comment_id ); - - if ( ! empty( $comment_meta['source_id'][0] ) ) { - return $comment_meta['source_id'][0]; - } elseif ( ! empty( $comment_meta['source_url'][0] ) && $fallback ) { - return $comment_meta['source_url'][0]; - } - - return null; - } - - /** - * Gets the public comment url via the WordPress comments meta. - * - * @param int $wp_comment_id The internal WordPress comment ID. - * @param bool $fallback Whether the code should fall back to `source_id` if `source_url` is not set. - * - * @return string|null The ActivityPub id/url of the comment. - */ - public static function get_source_url( $wp_comment_id, $fallback = true ) { - $comment_meta = \get_comment_meta( $wp_comment_id ); - - if ( ! empty( $comment_meta['source_url'][0] ) ) { - return $comment_meta['source_url'][0]; - } elseif ( ! empty( $comment_meta['source_id'][0] ) && $fallback ) { - return $comment_meta['source_id'][0]; - } - - return null; - } - - /** - * Link remote comments to source url. - * - * @param string $comment_link The comment link. - * @param object|\WP_Comment $comment The comment object. - * - * @return string $url - */ - public static function remote_comment_link( $comment_link, $comment ) { - if ( ! $comment || is_admin() ) { - return $comment_link; - } - - $public_comment_link = self::get_source_url( $comment->comment_ID ); - - return $public_comment_link ?? $comment_link; - } - - - /** - * Generates an ActivityPub URI for a comment - * - * @param \WP_Comment|int $comment A comment object or comment ID. - * - * @return string ActivityPub URI for comment - */ - public static function generate_id( $comment ) { - $comment = \get_comment( $comment ); - - // Show external comment ID if it exists. - $public_comment_link = self::get_source_id( $comment->comment_ID ); - - if ( $public_comment_link ) { - return $public_comment_link; - } - - // Generate URI based on comment ID. - return \add_query_arg( 'c', $comment->comment_ID, \trailingslashit( \home_url() ) ); - } - - /** - * Check if a post has remote comments - * - * @param int $post_id The post ID. - * - * @return bool True if the post has remote comments, false otherwise. - */ - private static function post_has_remote_comments( $post_id ) { - $comments = \get_comments( - array( - 'post_id' => $post_id, - // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query - 'meta_query' => array( - 'relation' => 'AND', - array( - 'key' => 'protocol', - 'value' => 'activitypub', - 'compare' => '=', - ), - array( - 'key' => 'source_id', - 'compare' => 'EXISTS', - ), - ), - ) - ); - - return ! empty( $comments ); - } - - /** - * Enqueue scripts for remote comments - */ - public static function enqueue_scripts() { - if ( ! \is_singular() || \is_user_logged_in() ) { - // Only on single pages, only for logged-out users. - return; - } - - if ( ! \post_type_supports( \get_post_type(), 'activitypub' ) ) { - // Post type does not support ActivityPub. - return; - } - - if ( ! \comments_open() || ! \get_comments_number() ) { - // No comments, no need to load the script. - return; - } - - if ( ! self::post_has_remote_comments( \get_the_ID() ) ) { - // No remote comments, no need to load the script. - return; - } - - $handle = 'activitypub-remote-reply'; - $data = array( - 'namespace' => ACTIVITYPUB_REST_NAMESPACE, - 'defaultAvatarUrl' => ACTIVITYPUB_PLUGIN_URL . 'assets/img/mp.jpg', - ); - $js = sprintf( 'var _activityPubOptions = %s;', wp_json_encode( $data ) ); - $asset_file = ACTIVITYPUB_PLUGIN_DIR . 'build/remote-reply/index.asset.php'; - - if ( \file_exists( $asset_file ) ) { - $assets = require_once $asset_file; - - \wp_enqueue_script( - $handle, - \plugins_url( 'build/remote-reply/index.js', __DIR__ ), - $assets['dependencies'], - $assets['version'], - true - ); - \wp_add_inline_script( $handle, $js, 'before' ); - \wp_set_script_translations( $handle, 'activitypub' ); - - \wp_enqueue_style( - $handle, - \plugins_url( 'build/remote-reply/style-index.css', __DIR__ ), - array( 'wp-components' ), - $assets['version'] - ); - } - } - - /** - * Get the comment type by activity type. - * - * @param string $activity_type The activity type. - * - * @return array|null The comment type. - */ - public static function get_comment_type_by_activity_type( $activity_type ) { - $activity_type = \strtolower( $activity_type ); - $activity_type = \sanitize_key( $activity_type ); - $comment_types = self::get_comment_types(); - - foreach ( $comment_types as $comment_type ) { - if ( in_array( $activity_type, $comment_type['activity_types'], true ) ) { - return $comment_type; - } - } - - return null; - } - - /** - * Return the registered custom comment types. - * - * @return array The registered custom comment types - */ - public static function get_comment_types() { - global $activitypub_comment_types; - - return $activitypub_comment_types; - } - - /** - * Is this a registered comment type. - * - * @param string $slug The slug of the type. - * - * @return boolean True if registered. - */ - public static function is_registered_comment_type( $slug ) { - $slug = \strtolower( $slug ); - $slug = \sanitize_key( $slug ); - - $comment_types = self::get_comment_types(); - - return isset( $comment_types[ $slug ] ); - } - - /** - * Return the registered custom comment type slugs. - * - * @return array The registered custom comment type slugs. - */ - public static function get_comment_type_slugs() { - return array_keys( self::get_comment_types() ); - } - - /** - * Return the registered custom comment type slugs. - * - * @deprecated 4.5.0 Use get_comment_type_slugs instead. - * - * @return array The registered custom comment type slugs. - */ - public static function get_comment_type_names() { - _deprecated_function( __METHOD__, '4.5.0', 'get_comment_type_slugs' ); - - return self::get_comment_type_slugs(); - } - - /** - * Get the custom comment type. - * - * Check if the type is registered, if not, check if it is a custom type. - * - * It looks for the array key in the registered types and returns the array. - * If it is not found, it looks for the type in the custom types and returns the array. - * - * @param string $type The comment type. - * - * @return array The comment type. - */ - public static function get_comment_type( $type ) { - $type = strtolower( $type ); - $type = sanitize_key( $type ); - - $comment_types = self::get_comment_types(); - $type_array = array(); - - // Check array keys. - if ( in_array( $type, array_keys( $comment_types ), true ) ) { - $type_array = $comment_types[ $type ]; - } - - /** - * Filter the comment type. - * - * @param array $type_array The comment type. - */ - return apply_filters( "activitypub_comment_type_{$type}", $type_array ); - } - - /** - * Get a comment type attribute. - * - * @param string $type The comment type. - * @param string $attr The attribute to get. - * - * @return mixed The value of the attribute. - */ - public static function get_comment_type_attr( $type, $attr ) { - $type_array = self::get_comment_type( $type ); - - if ( $type_array && isset( $type_array[ $attr ] ) ) { - $value = $type_array[ $attr ]; - } else { - $value = ''; - } - - /** - * Filter the comment type attribute. - * - * @param mixed $value The value of the attribute. - * @param string $type The comment type. - */ - return apply_filters( "activitypub_comment_type_{$attr}", $value, $type ); - } - - /** - * Register the comment types used by the ActivityPub plugin. - */ - public static function register_comment_types() { - register_comment_type( - 'repost', - array( - 'label' => __( 'Reposts', 'activitypub' ), - 'singular' => __( 'Repost', 'activitypub' ), - 'description' => __( 'A repost on the indieweb is a post that is purely a 100% re-publication of another (typically someone else\'s) post.', 'activitypub' ), - 'icon' => '♻️', - 'class' => 'p-repost', - 'type' => 'repost', - 'collection' => 'reposts', - 'activity_types' => array( 'announce' ), - 'excerpt' => html_entity_decode( \__( '… reposted this!', 'activitypub' ) ), - /* translators: %d: Number of reposts */ - 'count_single' => _x( '%d repost', 'number of reposts', 'activitypub' ), - /* translators: %d: Number of reposts */ - 'count_plural' => _x( '%d reposts', 'number of reposts', 'activitypub' ), - ) - ); - - register_comment_type( - 'like', - array( - 'label' => __( 'Likes', 'activitypub' ), - 'singular' => __( 'Like', 'activitypub' ), - 'description' => __( 'A like is a popular webaction button and in some cases post type on various silos such as Facebook and Instagram.', 'activitypub' ), - 'icon' => '👍', - 'class' => 'p-like', - 'type' => 'like', - 'collection' => 'likes', - 'activity_types' => array( 'like' ), - 'excerpt' => html_entity_decode( \__( '… liked this!', 'activitypub' ) ), - /* translators: %d: Number of likes */ - 'count_single' => _x( '%d like', 'number of likes', 'activitypub' ), - /* translators: %d: Number of likes */ - 'count_plural' => _x( '%d likes', 'number of likes', 'activitypub' ), - ) - ); - } - - /** - * Show avatars on Activities if set. - * - * @param array $types List of avatar enabled comment types. - * - * @return array show avatars on Activities - */ - public static function get_avatar_comment_types( $types ) { - $comment_types = self::get_comment_type_slugs(); - $types = array_merge( $types, $comment_types ); - - return array_unique( $types ); - } - - /** - * Excludes likes and reposts from comment queries. - * - * @author Jan Boddez - * - * @see https://github.com/janboddez/indieblocks/blob/a2d59de358031056a649ee47a1332ce9e39d4ce2/includes/functions.php#L423-L432 - * - * @param WP_Comment_Query $query Comment count. - */ - public static function comment_query( $query ) { - if ( ! $query instanceof WP_Comment_Query ) { - return; - } - - // Do not exclude likes and reposts on ActivityPub requests. - if ( defined( 'ACTIVITYPUB_REQUEST' ) && ACTIVITYPUB_REQUEST ) { - return; - } - - // Do not exclude likes and reposts on REST requests. - if ( \wp_is_serving_rest_request() ) { - return; - } - - // Do not exclude likes and reposts on admin pages or on non-singular pages. - if ( is_admin() || ! is_singular() ) { - return; - } - - // Do not exclude likes and reposts if the query is for comments. - if ( ! empty( $query->query_vars['type__in'] ) || ! empty( $query->query_vars['type'] ) ) { - return; - } - - // Exclude likes and reposts by the ActivityPub plugin. - $query->query_vars['type__not_in'] = self::get_comment_type_slugs(); - } - - /** - * Filter the comment status before it is set. - * - * @param string $approved The approved comment status. - * @param array $commentdata The comment data. - * - * @return boolean `true` if the comment is approved, `false` otherwise. - */ - public static function pre_comment_approved( $approved, $commentdata ) { - if ( $approved || \is_wp_error( $approved ) ) { - return $approved; - } - - if ( '1' !== \get_option( 'comment_previously_approved' ) ) { - return $approved; - } - - if ( - empty( $commentdata['comment_meta']['protocol'] ) || - 'activitypub' !== $commentdata['comment_meta']['protocol'] - ) { - return $approved; - } - - global $wpdb; - - $author = $commentdata['comment_author']; - $author_url = $commentdata['comment_author_url']; - // phpcs:ignore - $ok_to_comment = $wpdb->get_var( $wpdb->prepare( "SELECT comment_approved FROM $wpdb->comments WHERE comment_author = %s AND comment_author_url = %s and comment_approved = '1' LIMIT 1", $author, $author_url ) ); - - if ( 1 === (int) $ok_to_comment ) { - return 1; - } - - return $approved; - } - - /** - * Update comment counts when interaction settings are disabled. - * - * Triggers a recount when likes or reposts are disabled to ensure accurate comment counts. - * - * @param mixed $old_value The old option value. - * @param mixed $value The new option value. - */ - public static function maybe_update_comment_counts( $old_value, $value ) { - if ( '1' === $old_value && '1' !== $value ) { - Migration::update_comment_counts(); - } - } - - /** - * Filters the comment count to exclude ActivityPub comment types. - * - * @param int|null $new_count The new comment count. Default null. - * @param int $old_count The old comment count. - * @param int $post_id Post ID. - * - * @return int|null The updated comment count, or null to use the default query. - */ - public static function pre_wp_update_comment_count_now( $new_count, $old_count, $post_id ) { - if ( null === $new_count ) { - $excluded_types = array_filter( self::get_comment_type_slugs(), array( self::class, 'is_comment_type_enabled' ) ); - - if ( ! empty( $excluded_types ) ) { - global $wpdb; - - // phpcs:ignore WordPress.DB - $new_count = (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved = '1' AND comment_type NOT IN ('" . implode( "','", $excluded_types ) . "')", $post_id ) ); - } - } - - return $new_count; - } - - /** - * Check if a comment type is enabled. - * - * @param string $comment_type The comment type. - * @return bool True if the comment type is enabled. - */ - public static function is_comment_type_enabled( $comment_type ) { - return '1' === get_option( "activitypub_allow_{$comment_type}s", '1' ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-debug.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-debug.php deleted file mode 100644 index af7608dd..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-debug.php +++ /dev/null @@ -1,79 +0,0 @@ -get__id(), $outbox_item ); - - if ( self::should_send_to_followers( $activity, $actor, $outbox_item ) ) { - Scheduler::async_batch( - self::$callback, - $outbox_item->ID, - self::$batch_size, - \get_post_meta( $outbox_item->ID, '_activitypub_outbox_offset', true ) ?: 0 // phpcs:ignore - ); - } else { - // No followers to process for this update. We're done. - \wp_publish_post( $outbox_item ); - \delete_post_meta( $outbox_item->ID, '_activitypub_outbox_offset' ); - } - } - - /** - * Asynchronously runs batch processing routines. - * - * @param int $outbox_item_id The Outbox item ID. - * @param int $batch_size Optional. The batch size. Default ACTIVITYPUB_OUTBOX_PROCESSING_BATCH_SIZE. - * @param int $offset Optional. The offset. Default 0. - * - * @return array|void The next batch of followers to process, or void if done. - */ - public static function send_to_followers( $outbox_item_id, $batch_size = ACTIVITYPUB_OUTBOX_PROCESSING_BATCH_SIZE, $offset = 0 ) { - $json = Outbox::get_activity( $outbox_item_id )->to_json(); - $actor = Outbox::get_actor( \get_post( $outbox_item_id ) ); - $inboxes = Followers::get_inboxes_for_activity( $json, $actor->get__id(), $batch_size, $offset ); - - $retries = self::send_to_inboxes( $inboxes, $outbox_item_id ); - - // Retry failed inboxes. - if ( ! empty( $retries ) ) { - self::schedule_retry( $retries, $outbox_item_id ); - } - - if ( is_countable( $inboxes ) && count( $inboxes ) < $batch_size ) { - \delete_post_meta( $outbox_item_id, '_activitypub_outbox_offset' ); - - /** - * Fires when the followers are complete. - * - * @param array $inboxes The inboxes. - * @param string $json The ActivityPub Activity JSON - * @param int $actor_id The actor ID. - * @param int $outbox_item_id The Outbox item ID. - * @param int $batch_size The batch size. - * @param int $offset The offset. - */ - \do_action( 'activitypub_outbox_processing_complete', $inboxes, $json, $actor->get__id(), $outbox_item_id, $batch_size, $offset ); - - // No more followers to process for this update. - \wp_publish_post( $outbox_item_id ); - } else { - \update_post_meta( $outbox_item_id, '_activitypub_outbox_offset', $offset + $batch_size ); - - /** - * Fires when the batch of followers is complete. - * - * @param array $inboxes The inboxes. - * @param string $json The ActivityPub Activity JSON - * @param int $actor_id The actor ID. - * @param int $outbox_item_id The Outbox item ID. - * @param int $batch_size The batch size. - * @param int $offset The offset. - */ - \do_action( 'activitypub_outbox_processing_batch_complete', $inboxes, $json, $actor->get__id(), $outbox_item_id, $batch_size, $offset ); - - return array( $outbox_item_id, $batch_size, $offset + $batch_size ); - } - } - - /** - * Retry sending to followers. - * - * @param string $transient_key The key to retrieve retry inboxes. - * @param int $outbox_item_id The Outbox item ID. - * @param int $attempt The attempt number. - */ - public static function retry_send_to_followers( $transient_key, $outbox_item_id, $attempt = 1 ) { - $inboxes = \get_transient( $transient_key ); - if ( false === $inboxes ) { - return; - } - - // Delete the transient as we no longer need it. - \delete_transient( $transient_key ); - - $retries = self::send_to_inboxes( $inboxes, $outbox_item_id ); - - // Retry failed inboxes. - if ( ++$attempt < 3 && ! empty( $retries ) ) { - self::schedule_retry( $retries, $outbox_item_id, $attempt ); - } - } - - /** - * Send to inboxes. - * - * @param array $inboxes The inboxes to notify. - * @param int $outbox_item_id The Outbox item ID. - * @return array The failed inboxes. - */ - private static function send_to_inboxes( $inboxes, $outbox_item_id ) { - $json = Outbox::get_activity( $outbox_item_id )->to_json(); - $actor = Outbox::get_actor( \get_post( $outbox_item_id ) ); - $retries = array(); - - /** - * Fires before sending an Activity to inboxes. - * - * @param string $json The ActivityPub Activity JSON. - * @param array $inboxes The inboxes to send to. - * @param int $outbox_item_id The Outbox item ID. - */ - \do_action( 'activitypub_pre_send_to_inboxes', $json, $inboxes, $outbox_item_id ); - - foreach ( $inboxes as $inbox ) { - $result = safe_remote_post( $inbox, $json, $actor->get__id() ); - - if ( is_wp_error( $result ) && in_array( $result->get_error_code(), self::$retry_error_codes, true ) ) { - $retries[] = $inbox; - } - - /** - * Fires after an Activity has been sent to an inbox. - * - * @param array $result The result of the remote post request. - * @param string $inbox The inbox URL. - * @param string $json The ActivityPub Activity JSON. - * @param int $actor_id The actor ID. - * @param int $outbox_item_id The Outbox item ID. - */ - \do_action( 'activitypub_sent_to_inbox', $result, $inbox, $json, $actor->get__id(), $outbox_item_id ); - } - - return $retries; - } - - /** - * Schedule a retry. - * - * @param array $retries The inboxes to retry. - * @param int $outbox_item_id The Outbox item ID. - * @param int $attempt Optional. The attempt number. Default 1. - */ - private static function schedule_retry( $retries, $outbox_item_id, $attempt = 1 ) { - $transient_key = 'activitypub_retry_' . \wp_generate_password( 12, false ); - \set_transient( $transient_key, $retries, WEEK_IN_SECONDS ); - - \wp_schedule_single_event( - \time() + ( $attempt * $attempt * HOUR_IN_SECONDS ), - 'activitypub_async_batch', - array( - array( self::class, 'retry_send_to_followers' ), - $transient_key, - $outbox_item_id, - $attempt, - ) - ); - } - - /** - * Send an Activity to a custom list of inboxes, like mentioned users or replied-to posts. - * - * For all custom implementations, please use the `activitypub_additional_inboxes` filter. - * - * @param Activity $activity The ActivityPub Activity. - * @param int $actor_id The actor ID. - * @param \WP_Post $outbox_item The WordPress object. - */ - private static function send_to_additional_inboxes( $activity, $actor_id, $outbox_item = null ) { - /** - * Filters the list of inboxes to send the Activity to. - * - * @param array $inboxes The list of inboxes to send to. - * @param int $actor_id The actor ID. - * @param Activity $activity The ActivityPub Activity. - */ - $inboxes = apply_filters( 'activitypub_additional_inboxes', array(), $actor_id, $activity ); - $inboxes = array_unique( $inboxes ); - - $retries = self::send_to_inboxes( $inboxes, $outbox_item->ID ); - - // Retry failed inboxes. - if ( ! empty( $retries ) ) { - self::schedule_retry( $retries, $outbox_item->ID ); - } - } - - /** - * Default filter to add Inboxes of Mentioned Actors - * - * @param array $inboxes The list of Inboxes. - * @param int $actor_id The WordPress Actor-ID. - * @param Activity $activity The ActivityPub Activity. - * - * @return array The filtered Inboxes. - */ - public static function add_inboxes_by_mentioned_actors( $inboxes, $actor_id, $activity ) { - $cc = $activity->get_cc() ?? array(); - $to = $activity->get_to() ?? array(); - - $audience = array_merge( $cc, $to ); - - // Remove "public placeholder" and "same domain" from the audience. - $audience = array_filter( - $audience, - function ( $actor ) { - return 'https://www.w3.org/ns/activitystreams#Public' !== $actor && ! is_same_domain( $actor ); - } - ); - - if ( $audience ) { - $mentioned_inboxes = Mention::get_inboxes( $audience ); - - return array_merge( $inboxes, $mentioned_inboxes ); - } - - return $inboxes; - } - - /** - * Default filter to add Inboxes of Posts that are set as `in-reply-to` - * - * @param array $inboxes The list of Inboxes. - * @param int $actor_id The WordPress Actor-ID. - * @param Activity $activity The ActivityPub Activity. - * - * @return array The filtered Inboxes - */ - public static function add_inboxes_of_replied_urls( $inboxes, $actor_id, $activity ) { - $in_reply_to = $activity->get_in_reply_to(); - - if ( ! $in_reply_to ) { - return $inboxes; - } - - if ( ! is_array( $in_reply_to ) ) { - $in_reply_to = array( $in_reply_to ); - } - - foreach ( $in_reply_to as $url ) { - // No need to self-notify. - if ( is_same_domain( $url ) ) { - continue; - } - - $object = Http::get_remote_object( $url ); - - if ( - ! $object || - \is_wp_error( $object ) || - empty( $object['attributedTo'] ) - ) { - continue; - } - - $actor = object_to_uri( $object['attributedTo'] ); - $actor = Http::get_remote_object( $actor ); - - if ( ! $actor || \is_wp_error( $actor ) ) { - continue; - } - - if ( ! empty( $actor['endpoints']['sharedInbox'] ) ) { - $inboxes[] = $actor['endpoints']['sharedInbox']; - } elseif ( ! empty( $actor['inbox'] ) ) { - $inboxes[] = $actor['inbox']; - } - } - - return $inboxes; - } - - /** - * Adds Blog Actor inboxes to Updates so the Blog User's followers are notified of edits. - * - * @deprecated 5.2.0 Use {@see Followers::maybe_add_inboxes_of_blog_user} instead. - * - * @param array $inboxes The list of Inboxes. - * @param int $actor_id The WordPress Actor-ID. - * @param Activity $activity The ActivityPub Activity. - * - * @return array The filtered Inboxes. - */ - public static function maybe_add_inboxes_of_blog_user( $inboxes, $actor_id, $activity ) { // phpcs:ignore - _deprecated_function( __METHOD__, '5.2.0', 'Followers::maybe_add_inboxes_of_blog_user' ); - - return $inboxes; - } - - /** - * Check if passed Activity is public. - * - * @param Activity $activity The Activity object. - * @param \Activitypub\Model\User|\Activitypub\Model\Blog $actor The Actor object. - * @param \WP_Post $outbox_item The Outbox item. - * - * @return boolean True if public, false if not. - */ - protected static function should_send_to_followers( $activity, $actor, $outbox_item ) { - // Check if follower endpoint is set. - $cc = $activity->get_cc() ?? array(); - $to = $activity->get_to() ?? array(); - - $audience = array_merge( $cc, $to ); - - $send = ( - // Check if activity is public. - in_array( 'https://www.w3.org/ns/activitystreams#Public', $audience, true ) || - // ...or check if follower endpoint is set. - in_array( $actor->get_followers(), $audience, true ) - ); - - if ( $send ) { - $followers = Followers::get_inboxes_for_activity( $activity->to_json(), $actor->get__id() ); - - // Only send if there are followers to send to. - $send = ! is_countable( $followers ) || 0 < count( $followers ); - } - - /** - * Filters whether to send an Activity to followers. - * - * @param bool $send_activity_to_followers Whether to send the Activity to followers. - * @param Activity $activity The ActivityPub Activity. - * @param int $actor_id The actor ID. - * @param \WP_Post $outbox_item The WordPress object. - */ - return apply_filters( 'activitypub_send_activity_to_followers', $send, $activity, $actor->get__id(), $outbox_item ); - } - - /** - * Add Inboxes of Relays. - * - * @param array $inboxes The list of Inboxes. - * @param int $actor_id The Actor-ID. - * @param Activity $activity The ActivityPub Activity. - * - * @return array The filtered Inboxes. - */ - public static function add_inboxes_of_relays( $inboxes, $actor_id, $activity ) { - // Check if follower endpoint is set. - $cc = $activity->get_cc() ?? array(); - $to = $activity->get_to() ?? array(); - - $audience = array_merge( $cc, $to ); - - // Check if activity is public. - if ( ! in_array( 'https://www.w3.org/ns/activitystreams#Public', $audience, true ) ) { - return $inboxes; - } - - $relays = \get_option( 'activitypub_relays', array() ); - - if ( empty( $relays ) ) { - return $inboxes; - } - - return array_merge( $inboxes, $relays ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-embed.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-embed.php deleted file mode 100644 index 978e66f4..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-embed.php +++ /dev/null @@ -1,263 +0,0 @@ - $author_name, - 'author_url' => $author_url, - 'avatar_url' => $avatar_url, - 'published' => $published, - 'title' => $title, - 'content' => $content, - 'image' => $image, - 'boosts' => $boosts, - 'favorites' => $favorites, - 'url' => $activity_object['id'], - 'webfinger' => $author['webfinger'], - ) - ); - - if ( $inline_css ) { - // Grab the CSS. - $css = \file_get_contents( ACTIVITYPUB_PLUGIN_DIR . 'assets/css/activitypub-embed.css' ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents - // We embed CSS directly because this may be in an iframe. - printf( '', $css ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped - } - - // A little light whitespace cleanup. - return preg_replace( '/\s+/', ' ', ob_get_clean() ); - } - - /** - * Check if a real oEmbed result exists for the given URL. - * - * @param string $url The URL to check. - * @param array $args Additional arguments passed to wp_oembed_get(). - * @return bool True if a real oEmbed result exists, false otherwise. - */ - public static function has_real_oembed( $url, $args = array() ) { - // Temporarily remove our filter to avoid infinite loops. - \remove_filter( 'pre_oembed_result', array( self::class, 'maybe_use_activitypub_embed' ), 10, 3 ); - - // Try to get a "real" oEmbed result. If found, it'll be cached to avoid unnecessary HTTP requests in `wp_oembed_get`. - $oembed_result = \wp_oembed_get( $url, $args ); - - // Add our filter back. - \add_filter( 'pre_oembed_result', array( self::class, 'maybe_use_activitypub_embed' ), 10, 3 ); - - return false !== $oembed_result; - } - - /** - * Filter the oembed result to handle ActivityPub content when no oEmbed is found. - * Implementation is a bit weird because there's no way to filter on a false result, we have to use `pre_oembed_result`. - * - * @param null|string $result The UNSANITIZED (and potentially unsafe) HTML that should be used to embed. - * @param string $url The URL to the content that should be attempted to be embedded. - * @param array $args Additional arguments passed to wp_oembed_get(). - * @return null|string Return null to allow normal oEmbed processing, or string for ActivityPub embed. - */ - public static function maybe_use_activitypub_embed( $result, $url, $args ) { - // If we already have a result, return it. - if ( null !== $result ) { - return $result; - } - - // If we found a real oEmbed, return null to allow normal processing. - if ( self::has_real_oembed( $url, $args ) ) { - return null; - } - - // No oEmbed found, try to get ActivityPub representation. - $html = get_embed_html( $url ); - - // If we couldn't get an ActivityPub embed either, return null to allow normal processing. - if ( ! $html ) { - return null; - } - - // Return the ActivityPub embed HTML. - return $html; - } - - /** - * Handle cases where WordPress has filtered out the oEmbed result for security reasons, - * but we can provide a safe ActivityPub-specific markup. - * - * This runs after wp_filter_oembed_result has potentially nullified the result. - * - * @param string|false $html The returned oEmbed HTML. - * @param object $data A data object result from an oEmbed provider. - * @param string $url The URL of the content to be embedded. - * @return string|false The filtered oEmbed HTML or our ActivityPub embed. - */ - public static function handle_filtered_oembed_result( $html, $data, $url ) { - // If we already have valid HTML, return it. - if ( $html ) { - return $html; - } - - // If this isn't a rich or video type, we can't help. - if ( ! isset( $data->type ) || ! \in_array( $data->type, array( 'rich', 'video' ), true ) ) { - return $html; - } - - // If there's no HTML in the data, we can't help. - if ( empty( $data->html ) || ! \is_string( $data->html ) ) { - return $html; - } - - // Try to get ActivityPub representation. - $activitypub_html = get_embed_html( $url ); - if ( ! $activitypub_html ) { - return $html; - } - - // Return our safer ActivityPub embed HTML. - return $activitypub_html; - } - - /** - * Register the fallback hook for oEmbed requests. - * - * Avoids filtering every single API request. - * - * @param int $post_id The post ID. - * @return int The post ID. - */ - public static function register_fallback_hook( $post_id ) { - \add_filter( 'rest_request_after_callbacks', array( self::class, 'oembed_fediverse_fallback' ), 10, 3 ); - - return $post_id; - } - - /** - * Fallback for oEmbed requests to the Fediverse. - * - * @param \WP_REST_Response|\WP_Error $response Result to send to the client. - * @param array $handler Route handler used for the request. - * @param \WP_REST_Request $request Request used to generate the response. - * - * @return \WP_REST_Response|\WP_Error The response to send to the client. - */ - public static function oembed_fediverse_fallback( $response, $handler, $request ) { - if ( is_wp_error( $response ) && 'oembed_invalid_url' === $response->get_error_code() ) { - $url = $request->get_param( 'url' ); - $html = get_embed_html( $url ); - - if ( $html ) { - $args = $request->get_params(); - $data = (object) array( - 'provider_name' => 'Embed Handler', - 'html' => $html, - 'scripts' => array(), - ); - - /** This filter is documented in wp-includes/class-wp-oembed.php */ - $data->html = apply_filters( 'oembed_result', $data->html, $url, $args ); - - /** This filter is documented in wp-includes/class-wp-oembed-controller.php */ - $ttl = apply_filters( 'rest_oembed_ttl', DAY_IN_SECONDS, $url, $args ); - - set_transient( 'oembed_' . md5( serialize( $args ) ), $data, $ttl ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize - - $response = new \WP_REST_Response( $data ); - } - } - - return $response; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-handler.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-handler.php deleted file mode 100644 index b0ead9b4..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-handler.php +++ /dev/null @@ -1,50 +0,0 @@ -post_content . "\n" . $post->post_excerpt ); - - if ( \preg_match_all( '/' . ACTIVITYPUB_HASHTAGS_REGEXP . '/i', $content, $match ) ) { - $tags = array_unique( $match[1] ); - } - - \wp_add_post_tags( $post->ID, \implode( ', ', $tags ) ); - } - - /** - * Filter to replace the #tags in the content with links. - * - * @param string $the_content The post content. - * - * @return string The filtered post content. - */ - public static function the_content( $the_content ) { - return enrich_content_data( $the_content, '/' . ACTIVITYPUB_HASHTAGS_REGEXP . '/i', array( self::class, 'replace_with_links' ) ); - } - - /** - * A callback for preg_replace to build the term links. - * - * @param array $result The preg_match results. - * @return string the final string - */ - public static function replace_with_links( $result ) { - $tag = $result[1]; - $tag_object = \get_term_by( 'name', $tag, 'post_tag' ); - if ( ! $tag_object ) { - $tag_object = \get_term_by( 'name', $tag, 'category' ); - } - - if ( $tag_object ) { - $link = \get_term_link( $tag_object, 'post_tag' ); - return \sprintf( '', esc_url( $link ), $tag ); - } - - return '#' . $tag; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-http.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-http.php deleted file mode 100644 index 9f9a8dd0..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-http.php +++ /dev/null @@ -1,305 +0,0 @@ - 100, - 'limit_response_size' => 1048576, - 'redirection' => 3, - 'user-agent' => "$user_agent; ActivityPub", - 'headers' => array( - 'Accept' => 'application/activity+json', - 'Content-Type' => 'application/activity+json', - 'Digest' => $digest, - 'Signature' => $signature, - 'Date' => $date, - ), - 'body' => $body, - ); - - $response = \wp_safe_remote_post( $url, $args ); - $code = \wp_remote_retrieve_response_code( $response ); - - if ( $code >= 400 ) { - $response = new WP_Error( - $code, - __( 'Failed HTTP Request', 'activitypub' ), - array( - 'status' => $code, - 'response' => $response, - ) - ); - } - - /** - * Action to save the response of the remote POST request. - * - * @param array|WP_Error $response The response of the remote POST request. - * @param string $url The URL endpoint. - * @param string $body The Post Body. - * @param int $user_id The WordPress User-ID. - */ - \do_action( 'activitypub_safe_remote_post_response', $response, $url, $body, $user_id ); - - return $response; - } - - /** - * Send a GET Request with the needed HTTP Headers. - * - * @param string $url The URL endpoint. - * @param bool|int $cached Optional. Whether the result should be cached, or its duration. Default false. - * - * @return array|WP_Error The GET Response or a WP_Error. - */ - public static function get( $url, $cached = false ) { - /** - * Fires before an HTTP GET request is made. - * - * @param string $url The URL endpoint. - */ - \do_action( 'activitypub_pre_http_get', $url ); - - if ( $cached ) { - $transient_key = self::generate_cache_key( $url ); - - $response = \get_transient( $transient_key ); - - if ( $response ) { - /** - * Action to save the response of the remote GET request. - * - * @param array|WP_Error $response The response of the remote GET request. - * @param string $url The URL endpoint. - */ - \do_action( 'activitypub_safe_remote_get_response', $response, $url ); - - return $response; - } - } - - $date = \gmdate( 'D, d M Y H:i:s T' ); - $signature = Signature::generate_signature( Actors::APPLICATION_USER_ID, 'get', $url, $date ); - - $wp_version = get_masked_wp_version(); - - /** - * Filters the HTTP headers user agent string. - * - * This filter allows developers to modify the user agent string that is - * sent with HTTP requests. - * - * @param string $user_agent The user agent string. - */ - $user_agent = \apply_filters( 'http_headers_useragent', 'WordPress/' . $wp_version . '; ' . \get_bloginfo( 'url' ) ); - - /** - * Filters the timeout duration for remote GET requests in ActivityPub. - * - * @param int $timeout The timeout value in seconds. Default 100 seconds. - */ - $timeout = \apply_filters( 'activitypub_remote_get_timeout', 100 ); - - $args = array( - 'timeout' => $timeout, - 'limit_response_size' => 1048576, - 'redirection' => 3, - 'user-agent' => "$user_agent; ActivityPub", - 'headers' => array( - 'Accept' => 'application/activity+json', - 'Content-Type' => 'application/activity+json', - 'Signature' => $signature, - 'Date' => $date, - ), - ); - - $response = \wp_safe_remote_get( $url, $args ); - $code = \wp_remote_retrieve_response_code( $response ); - - if ( $code >= 400 ) { - $response = new WP_Error( $code, __( 'Failed HTTP Request', 'activitypub' ), array( 'status' => $code ) ); - } - - /** - * Action to save the response of the remote GET request. - * - * @param array|WP_Error $response The response of the remote GET request. - * @param string $url The URL endpoint. - */ - \do_action( 'activitypub_safe_remote_get_response', $response, $url ); - - if ( $cached ) { - $cache_duration = $cached; - if ( ! is_int( $cache_duration ) ) { - $cache_duration = HOUR_IN_SECONDS; - } - \set_transient( $transient_key, $response, $cache_duration ); - } - - return $response; - } - - /** - * Check for URL for Tombstone. - * - * @param string $url The URL to check. - * - * @return bool True if the URL is a tombstone. - */ - public static function is_tombstone( $url ) { - /** - * Fires before checking if the URL is a tombstone. - * - * @param string $url The URL to check. - */ - \do_action( 'activitypub_pre_http_is_tombstone', $url ); - - $response = \wp_safe_remote_get( $url, array( 'headers' => array( 'Accept' => 'application/activity+json' ) ) ); - $code = \wp_remote_retrieve_response_code( $response ); - - if ( in_array( (int) $code, array( 404, 410 ), true ) ) { - return true; - } - - $data = \wp_remote_retrieve_body( $response ); - $data = \json_decode( $data, true ); - if ( $data && isset( $data['type'] ) && 'Tombstone' === $data['type'] ) { - return true; - } - - return false; - } - - /** - * Generate a cache key for the URL. - * - * @param string $url The URL to generate the cache key for. - * - * @return string The cache key. - */ - public static function generate_cache_key( $url ) { - return 'activitypub_http_' . \md5( $url ); - } - - /** - * Requests the Data from the Object-URL or Object-Array. - * - * @param array|string $url_or_object The Object or the Object URL. - * @param bool $cached Optional. Whether the result should be cached. Default true. - * - * @return array|WP_Error The Object data as array or WP_Error on failure. - */ - public static function get_remote_object( $url_or_object, $cached = true ) { - $url = object_to_uri( $url_or_object ); - - if ( preg_match( '/^@?' . ACTIVITYPUB_USERNAME_REGEXP . '$/i', $url ) ) { - $url = Webfinger::resolve( $url ); - } - - if ( ! $url ) { - return new WP_Error( - 'activitypub_no_valid_actor_identifier', - \__( 'The "actor" identifier is not valid', 'activitypub' ), - array( - 'status' => 404, - 'object' => $url, - ) - ); - } - - if ( is_wp_error( $url ) ) { - return $url; - } - - $transient_key = self::generate_cache_key( $url ); - - // Only check the cache if needed. - if ( $cached ) { - $data = \get_transient( $transient_key ); - - if ( $data ) { - return $data; - } - } - - if ( ! \wp_http_validate_url( $url ) ) { - return new WP_Error( - 'activitypub_no_valid_object_url', - \__( 'The "object" is/has no valid URL', 'activitypub' ), - array( - 'status' => 400, - 'object' => $url, - ) - ); - } - - $response = self::get( $url ); - - if ( \is_wp_error( $response ) ) { - return $response; - } - - $data = \wp_remote_retrieve_body( $response ); - $data = \json_decode( $data, true ); - - if ( ! $data ) { - return new WP_Error( - 'activitypub_invalid_json', - \__( 'No valid JSON data', 'activitypub' ), - array( - 'status' => 400, - 'object' => $url, - ) - ); - } - - \set_transient( $transient_key, $data, WEEK_IN_SECONDS ); - - return $data; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-link.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-link.php deleted file mode 100644 index 783f1fec..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-link.php +++ /dev/null @@ -1,132 +0,0 @@ -%s', - esc_url( $result[0] ), - $rel, - esc_html( $invisible_prefix ), - $display_class, - esc_html( $display ), - esc_html( $invisible_suffix ) - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-mailer.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-mailer.php deleted file mode 100644 index 095d8396..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-mailer.php +++ /dev/null @@ -1,337 +0,0 @@ -comment_ID, 'protocol', true ); - - if ( 'activitypub' !== $type ) { - return $subject; - } - - $singular = Comment::get_comment_type_attr( $comment->comment_type, 'singular' ); - - if ( ! $singular ) { - return $subject; - } - - $post = \get_post( $comment->comment_post_ID ); - - /* translators: 1: Blog name, 2: Like or Repost, 3: Post title */ - return \sprintf( \esc_html__( '[%1$s] %2$s: %3$s', 'activitypub' ), \esc_html( get_option( 'blogname' ) ), \esc_html( $singular ), \esc_html( $post->post_title ) ); - } - - /** - * Filter the notification text for Like and Announce notifications. - * - * @param string $message The default notification text. - * @param int|string $comment_id The comment ID. - * - * @return string The filtered notification text. - */ - public static function comment_notification_text( $message, $comment_id ) { - $comment = \get_comment( $comment_id ); - - if ( ! $comment ) { - return $message; - } - - $type = \get_comment_meta( $comment->comment_ID, 'protocol', true ); - - if ( 'activitypub' !== $type ) { - return $message; - } - - $comment_type = Comment::get_comment_type( $comment->comment_type ); - - if ( ! $comment_type ) { - return $message; - } - - $post = \get_post( $comment->comment_post_ID ); - $comment_author_domain = \gethostbyaddr( $comment->comment_author_IP ); - - /* translators: 1: Comment type, 2: Post title */ - $notify_message = \sprintf( html_entity_decode( esc_html__( 'New %1$s on your post “%2$s”.', 'activitypub' ) ), \esc_html( $comment_type['singular'] ), \esc_html( $post->post_title ) ) . "\r\n\r\n"; - /* translators: 1: Website name, 2: Website IP address, 3: Website hostname. */ - $notify_message .= \sprintf( \esc_html__( 'From: %1$s (IP address: %2$s, %3$s)', 'activitypub' ), \esc_html( $comment->comment_author ), \esc_html( $comment->comment_author_IP ), \esc_html( $comment_author_domain ) ) . "\r\n"; - /* translators: Reaction author URL. */ - $notify_message .= \sprintf( \esc_html__( 'URL: %s', 'activitypub' ), \esc_url( $comment->comment_author_url ) ) . "\r\n\r\n"; - /* translators: Comment type label */ - $notify_message .= \sprintf( \esc_html__( 'You can see all %s on this post here:', 'activitypub' ), \esc_html( $comment_type['label'] ) ) . "\r\n"; - $notify_message .= \get_permalink( $comment->comment_post_ID ) . '#' . \esc_attr( $comment_type['type'] ) . "\r\n\r\n"; - - return $notify_message; - } - - /** - * Send a notification email for every new follower. - * - * @param array $activity The activity object. - * @param int $user_id The id of the local blog-user. - */ - public static function new_follower( $activity, $user_id ) { - if ( $user_id > Actors::BLOG_USER_ID ) { - if ( ! \get_user_option( 'activitypub_mailer_new_follower', $user_id ) ) { - return; - } - - $email = \get_userdata( $user_id )->user_email; - $admin_url = '/users.php?page=activitypub-followers-list'; - } else { - if ( '1' !== \get_option( 'activitypub_blog_user_mailer_new_follower', '1' ) ) { - return; - } - - $email = \get_option( 'admin_email' ); - $admin_url = '/options-general.php?page=activitypub&tab=followers'; - } - - $actor = get_remote_metadata_by_actor( $activity['actor'] ); - if ( ! $actor || \is_wp_error( $actor ) ) { - return; - } - - if ( empty( $actor['webfinger'] ) ) { - $actor['webfinger'] = '@' . ( $actor['preferredUsername'] ?? $actor['name'] ) . '@' . \wp_parse_url( $actor['url'], PHP_URL_HOST ); - } - - $template_args = array_merge( - $actor, - array( - 'admin_url' => $admin_url, - 'user_id' => $user_id, - 'stats' => array( - 'outbox' => null, - 'followers' => null, - 'following' => null, - ), - ) - ); - - foreach ( $template_args['stats'] as $field => $value ) { - if ( empty( $actor[ $field ] ) ) { - continue; - } - - $result = Http::get( $actor[ $field ], true ); - if ( 200 === \wp_remote_retrieve_response_code( $result ) ) { - $body = \json_decode( \wp_remote_retrieve_body( $result ), true ); - if ( isset( $body['totalItems'] ) ) { - $template_args['stats'][ $field ] = $body['totalItems']; - } - } - } - - /* translators: 1: Blog name, 2: Follower name */ - $subject = \sprintf( \__( '[%1$s] New Follower: %2$s', 'activitypub' ), \get_option( 'blogname' ), $actor['name'] ); - - \ob_start(); - \load_template( ACTIVITYPUB_PLUGIN_DIR . 'templates/emails/new-follower.php', false, $template_args ); - $html_message = \ob_get_clean(); - - $alt_function = function ( $mailer ) use ( $actor, $admin_url ) { - /* translators: 1: Follower name */ - $message = \sprintf( \__( 'New Follower: %1$s.', 'activitypub' ), $actor['name'] ) . "\r\n\r\n"; - /* translators: Follower URL */ - $message .= \sprintf( \__( 'URL: %s', 'activitypub' ), \esc_url( $actor['url'] ) ) . "\r\n\r\n"; - $message .= \__( 'You can see all followers here:', 'activitypub' ) . "\r\n"; - $message .= \esc_url( \admin_url( $admin_url ) ) . "\r\n\r\n"; - $mailer->{'AltBody'} = $message; - }; - \add_action( 'phpmailer_init', $alt_function ); - - \wp_mail( $email, $subject, $html_message, array( 'Content-type: text/html' ) ); - - \remove_action( 'phpmailer_init', $alt_function ); - } - - /** - * Send a direct message. - * - * @param array $activity The activity object. - * @param int $user_id The id of the local blog-user. - */ - public static function direct_message( $activity, $user_id ) { - if ( - is_activity_public( $activity ) || - // Only accept messages that have the user in the "to" field. - empty( $activity['to'] ) || - ! in_array( Actors::get_by_id( $user_id )->get_id(), (array) $activity['to'], true ) - ) { - return; - } - - if ( $user_id > Actors::BLOG_USER_ID ) { - if ( ! \get_user_option( 'activitypub_mailer_new_dm', $user_id ) ) { - return; - } - - $email = \get_userdata( $user_id )->user_email; - } else { - if ( '1' !== \get_option( 'activitypub_blog_user_mailer_new_dm', '1' ) ) { - return; - } - - $email = \get_option( 'admin_email' ); - } - - $actor = get_remote_metadata_by_actor( $activity['actor'] ); - - if ( ! $actor || \is_wp_error( $actor ) || empty( $activity['object']['content'] ) ) { - return; - } - - if ( empty( $actor['webfinger'] ) ) { - $actor['webfinger'] = '@' . ( $actor['preferredUsername'] ?? $actor['name'] ) . '@' . \wp_parse_url( $actor['url'], PHP_URL_HOST ); - } - - $template_args = array( - 'activity' => $activity, - 'actor' => $actor, - 'user_id' => $user_id, - ); - - /* translators: 1: Blog name, 2 Actor name */ - $subject = \sprintf( \esc_html__( '[%1$s] Direct Message from: %2$s', 'activitypub' ), \esc_html( \get_option( 'blogname' ) ), \esc_html( $actor['name'] ) ); - - \ob_start(); - \load_template( ACTIVITYPUB_PLUGIN_DIR . 'templates/emails/new-dm.php', false, $template_args ); - $html_message = \ob_get_clean(); - - $alt_function = function ( $mailer ) use ( $actor, $activity ) { - $content = \html_entity_decode( - \wp_strip_all_tags( - str_replace( '

', PHP_EOL . PHP_EOL, $activity['object']['content'] ) - ), - ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401 - ); - - /* translators: Actor name */ - $message = \sprintf( \esc_html__( 'New Direct Message: %s', 'activitypub' ), $content ) . "\r\n\r\n"; - /* translators: Actor name */ - $message .= \sprintf( \esc_html__( 'From: %s', 'activitypub' ), \esc_html( $actor['name'] ) ) . "\r\n"; - /* translators: Message URL */ - $message .= \sprintf( \esc_html__( 'URL: %s', 'activitypub' ), \esc_url( $activity['object']['id'] ) ) . "\r\n\r\n"; - - $mailer->{'AltBody'} = $message; - }; - \add_action( 'phpmailer_init', $alt_function ); - - \wp_mail( $email, $subject, $html_message, array( 'Content-type: text/html' ) ); - - \remove_action( 'phpmailer_init', $alt_function ); - } - - /** - * Send a mention notification. - * - * @param array $activity The activity object. - * @param int $user_id The id of the local blog-user. - */ - public static function mention( $activity, $user_id ) { - if ( - // Only accept messages that have the user in the "cc" field. - empty( $activity['cc'] ) || - ! in_array( Actors::get_by_id( $user_id )->get_id(), (array) $activity['cc'], true ) - ) { - return; - } - - if ( $user_id > Actors::BLOG_USER_ID ) { - if ( ! \get_user_option( 'activitypub_mailer_new_mention', $user_id ) ) { - return; - } - - $email = \get_userdata( $user_id )->user_email; - } else { - if ( '1' !== \get_option( 'activitypub_blog_user_mailer_new_mention', '1' ) ) { - return; - } - - $email = \get_option( 'admin_email' ); - } - - $actor = get_remote_metadata_by_actor( $activity['actor'] ); - if ( \is_wp_error( $actor ) ) { - return; - } - - if ( empty( $actor['webfinger'] ) ) { - $actor['webfinger'] = '@' . ( $actor['preferredUsername'] ?? $actor['name'] ) . '@' . \wp_parse_url( $actor['url'], PHP_URL_HOST ); - } - - $template_args = array( - 'activity' => $activity, - 'actor' => $actor, - 'user_id' => $user_id, - ); - - /* translators: 1: Blog name, 2 Actor name */ - $subject = \sprintf( \esc_html__( '[%1$s] Mention from: %2$s', 'activitypub' ), \esc_html( \get_option( 'blogname' ) ), \esc_html( $actor['name'] ) ); - - \ob_start(); - \load_template( ACTIVITYPUB_PLUGIN_DIR . 'templates/emails/new-mention.php', false, $template_args ); - $html_message = \ob_get_clean(); - - $alt_function = function ( $mailer ) use ( $actor, $activity ) { - $content = \html_entity_decode( - \wp_strip_all_tags( - str_replace( '

', PHP_EOL . PHP_EOL, $activity['object']['content'] ) - ), - ENT_QUOTES | ENT_SUBSTITUTE | ENT_HTML401 - ); - - /* translators: Message content */ - $message = \sprintf( \esc_html__( 'New Mention: %s', 'activitypub' ), $content ) . "\r\n\r\n"; - /* translators: Actor name */ - $message .= \sprintf( \esc_html__( 'From: %s', 'activitypub' ), \esc_html( $actor['name'] ) ) . "\r\n"; - /* translators: Message URL */ - $message .= \sprintf( \esc_html__( 'URL: %s', 'activitypub' ), \esc_url( $activity['object']['id'] ) ) . "\r\n\r\n"; - - $mailer->{'AltBody'} = $message; - }; - \add_action( 'phpmailer_init', $alt_function ); - - \wp_mail( $email, $subject, $html_message, array( 'Content-type: text/html' ) ); - - \remove_action( 'phpmailer_init', $alt_function ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-mention.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-mention.php deleted file mode 100644 index 93ada0bf..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-mention.php +++ /dev/null @@ -1,155 +0,0 @@ -@%2$s', esc_url( $url ), esc_html( $username ) ); - } - - return $result[0]; - } - - /** - * Get the Inboxes for the mentioned Actors. - * - * @param array $mentioned The list of Actors that were mentioned. - * - * @return array The list of Inboxes. - */ - public static function get_inboxes( $mentioned ) { - $inboxes = array(); - - foreach ( $mentioned as $actor ) { - $inbox = self::get_inbox_by_mentioned_actor( $actor ); - - if ( ! is_wp_error( $inbox ) && $inbox ) { - $inboxes[] = $inbox; - } - } - - return $inboxes; - } - - /** - * Get the inbox from the Remote-Profile of a mentioned Actor. - * - * @param string $actor The Actor URL. - * - * @return string|WP_Error The Inbox-URL or WP_Error if not found. - */ - public static function get_inbox_by_mentioned_actor( $actor ) { - $metadata = get_remote_metadata_by_actor( $actor ); - - if ( \is_wp_error( $metadata ) ) { - return $metadata; - } - - if ( isset( $metadata['endpoints']['sharedInbox'] ) ) { - return $metadata['endpoints']['sharedInbox']; - } - - if ( \array_key_exists( 'inbox', $metadata ) ) { - return $metadata['inbox']; - } - - return new WP_Error( 'activitypub_no_inbox', \__( 'No "Inbox" found', 'activitypub' ), $metadata ); - } - - /** - * Extract the mentions from the post_content. - * - * @param array $mentions The already found mentions. - * @param string $post_content The post content. - * - * @return array The discovered mentions. - */ - public static function extract_mentions( $mentions, $post_content ) { - \preg_match_all( '/@' . ACTIVITYPUB_USERNAME_REGEXP . '/i', $post_content, $matches ); - foreach ( $matches[0] as $match ) { - $link = Webfinger::resolve( $match ); - if ( ! is_wp_error( $link ) ) { - $mentions[ $match ] = $link; - } - } - return \array_unique( $mentions ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-migration.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-migration.php deleted file mode 100644 index 9132f6b6..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-migration.php +++ /dev/null @@ -1,944 +0,0 @@ -query( $wpdb->prepare( "INSERT IGNORE INTO `$wpdb->options` ( `option_name`, `option_value`, `autoload` ) VALUES (%s, %s, 'no') /* LOCK */", 'activitypub_migration_lock', \time() ) ); // phpcs:ignore WordPress.DB - - if ( ! $lock_result ) { - $lock_result = \get_option( 'activitypub_migration_lock' ); - } - - return $lock_result; - } - - /** - * Unlocks the database migration process. - */ - public static function unlock() { - \delete_option( 'activitypub_migration_lock' ); - } - - /** - * Whether the database migration process is locked. - * - * @return boolean - */ - public static function is_locked() { - $lock = \get_option( 'activitypub_migration_lock' ); - - if ( ! $lock ) { - return false; - } - - $lock = (int) $lock; - - if ( $lock < \time() - 1800 ) { - self::unlock(); - return false; - } - - return true; - } - - /** - * Whether the database structure is up to date. - * - * @return bool True if the database structure is up to date, false otherwise. - */ - public static function is_latest_version() { - return (bool) \version_compare( - self::get_version(), - ACTIVITYPUB_PLUGIN_VERSION, - '==' - ); - } - - /** - * Updates the database structure if necessary. - */ - public static function maybe_migrate() { - if ( self::is_latest_version() ) { - return; - } - - if ( self::is_locked() ) { - return; - } - - self::lock(); - - $version_from_db = self::get_version(); - - // Check for initial migration. - if ( ! $version_from_db ) { - self::add_default_settings(); - $version_from_db = ACTIVITYPUB_PLUGIN_VERSION; - } - - // Schedule the async migration. - if ( ! \wp_next_scheduled( 'activitypub_migrate', $version_from_db ) ) { - \wp_schedule_single_event( \time(), 'activitypub_migrate', array( $version_from_db ) ); - } - if ( \version_compare( $version_from_db, '0.17.0', '<' ) ) { - self::migrate_from_0_16(); - } - if ( \version_compare( $version_from_db, '1.3.0', '<' ) ) { - self::migrate_from_1_2_0(); - } - if ( \version_compare( $version_from_db, '2.1.0', '<' ) ) { - self::migrate_from_2_0_0(); - } - if ( \version_compare( $version_from_db, '2.3.0', '<' ) ) { - self::migrate_from_2_2_0(); - } - if ( \version_compare( $version_from_db, '3.0.0', '<' ) ) { - self::migrate_from_2_6_0(); - } - if ( \version_compare( $version_from_db, '4.0.0', '<' ) ) { - self::migrate_to_4_0_0(); - } - if ( \version_compare( $version_from_db, '4.1.0', '<' ) ) { - self::migrate_to_4_1_0(); - } - if ( \version_compare( $version_from_db, '4.5.0', '<' ) ) { - \wp_schedule_single_event( \time() + MINUTE_IN_SECONDS, 'activitypub_update_comment_counts' ); - } - if ( \version_compare( $version_from_db, '4.7.1', '<' ) ) { - self::migrate_to_4_7_1(); - } - if ( \version_compare( $version_from_db, '4.7.2', '<' ) ) { - self::migrate_to_4_7_2(); - } - if ( \version_compare( $version_from_db, '4.7.3', '<' ) ) { - add_action( 'init', 'flush_rewrite_rules', 20 ); - } - if ( \version_compare( $version_from_db, '5.0.0', '<' ) ) { - Scheduler::register_schedules(); - \wp_schedule_single_event( \time(), 'activitypub_upgrade', array( 'create_post_outbox_items' ) ); - \wp_schedule_single_event( \time() + 15, 'activitypub_upgrade', array( 'create_comment_outbox_items' ) ); - add_action( 'init', 'flush_rewrite_rules', 20 ); - } - if ( \version_compare( $version_from_db, '5.2.0', '<' ) ) { - Scheduler::register_schedules(); - } - if ( \version_compare( $version_from_db, '5.4.0', '<' ) ) { - \wp_schedule_single_event( \time(), 'activitypub_upgrade', array( 'update_actor_json_slashing' ) ); - \wp_schedule_single_event( \time(), 'activitypub_upgrade', array( 'update_comment_author_emails' ) ); - \add_action( 'init', 'flush_rewrite_rules', 20 ); - } - if ( \version_compare( $version_from_db, '5.7.0', '<' ) ) { - self::delete_mastodon_api_orphaned_extra_fields(); - } - if ( \version_compare( $version_from_db, '5.8.0', '<' ) ) { - self::update_notification_options(); - } - - /* - * Add new update routines above this comment. ^ - * - * Use 'unreleased' as the version number for new migrations and add tests for the callback directly. - * The release script will automatically replace it with the actual version number. - * Example: - * - * if ( \version_compare( $version_from_db, 'unreleased', '<' ) ) { - * // Update routine. - * } - */ - - /** - * Fires when the system has to be migrated. - * - * @param string $version_from_db The version from which to migrate. - * @param string $target_version The target version to migrate to. - */ - \do_action( 'activitypub_migrate', $version_from_db, ACTIVITYPUB_PLUGIN_VERSION ); - - \update_option( 'activitypub_db_version', ACTIVITYPUB_PLUGIN_VERSION ); - - self::unlock(); - } - - /** - * Asynchronously migrates the database structure. - * - * @param string $version_from_db The version from which to migrate. - */ - public static function async_migration( $version_from_db ) { - if ( \version_compare( $version_from_db, '1.0.0', '<' ) ) { - self::migrate_from_0_17(); - } - } - - /** - * Asynchronously runs upgrade routines. - * - * @param callable $callback Callable upgrade routine. Must be a method of this class. - * @params mixed ...$args Optional. Parameters that get passed to the callback. - */ - public static function async_upgrade( $callback ) { - $args = \func_get_args(); - - // Bail if the existing lock is still valid. - if ( self::is_locked() ) { - \wp_schedule_single_event( time() + MINUTE_IN_SECONDS, 'activitypub_upgrade', $args ); - return; - } - - self::lock(); - - $callback = array_shift( $args ); // Remove $callback from arguments. - $next = \call_user_func_array( array( self::class, $callback ), $args ); - - self::unlock(); - - if ( ! empty( $next ) ) { - // Schedule the next run, adding the result to the arguments. - \wp_schedule_single_event( - \time() + 30, - 'activitypub_upgrade', - \array_merge( array( $callback ), \array_values( $next ) ) - ); - } - } - - /** - * Updates the custom template to use shortcodes instead of the deprecated templates. - */ - private static function migrate_from_0_16() { - // Get the custom template. - $old_content = \get_option( 'activitypub_custom_post_content', ACTIVITYPUB_CUSTOM_POST_CONTENT ); - - /* - * If the old content exists but is a blank string, we're going to need a flag to updated it even - * after setting it to the default contents. - */ - $need_update = false; - - // If the old contents is blank, use the defaults. - if ( '' === $old_content ) { - $old_content = ACTIVITYPUB_CUSTOM_POST_CONTENT; - $need_update = true; - } - - // Set the new content to be the old content. - $content = $old_content; - - // Convert old templates to shortcodes. - $content = \str_replace( '%title%', '[ap_title]', $content ); - $content = \str_replace( '%excerpt%', '[ap_excerpt]', $content ); - $content = \str_replace( '%content%', '[ap_content]', $content ); - $content = \str_replace( '%permalink%', '[ap_permalink type="html"]', $content ); - $content = \str_replace( '%shortlink%', '[ap_shortlink type="html"]', $content ); - $content = \str_replace( '%hashtags%', '[ap_hashtags]', $content ); - $content = \str_replace( '%tags%', '[ap_hashtags]', $content ); - - // Store the new template if required. - if ( $content !== $old_content || $need_update ) { - \update_option( 'activitypub_custom_post_content', $content ); - } - } - - /** - * Updates the DB-schema of the followers-list. - */ - public static function migrate_from_0_17() { - // Migrate followers. - foreach ( get_users( array( 'fields' => 'ID' ) ) as $user_id ) { - $followers = get_user_meta( $user_id, 'activitypub_followers', true ); - - if ( $followers ) { - foreach ( $followers as $actor ) { - Followers::add_follower( $user_id, $actor ); - } - } - } - - Activitypub::flush_rewrite_rules(); - } - - /** - * Clear the cache after updating to 1.3.0. - */ - private static function migrate_from_1_2_0() { - $user_ids = \get_users( - array( - 'fields' => 'ID', - 'capability__in' => array( 'publish_posts' ), - ) - ); - - foreach ( $user_ids as $user_id ) { - wp_cache_delete( sprintf( Followers::CACHE_KEY_INBOXES, $user_id ), 'activitypub' ); - } - } - - /** - * Unschedule Hooks after updating to 2.0.0. - */ - private static function migrate_from_2_0_0() { - wp_clear_scheduled_hook( 'activitypub_send_post_activity' ); - wp_clear_scheduled_hook( 'activitypub_send_update_activity' ); - wp_clear_scheduled_hook( 'activitypub_send_delete_activity' ); - - wp_unschedule_hook( 'activitypub_send_post_activity' ); - wp_unschedule_hook( 'activitypub_send_update_activity' ); - wp_unschedule_hook( 'activitypub_send_delete_activity' ); - - $object_type = \get_option( 'activitypub_object_type', ACTIVITYPUB_DEFAULT_OBJECT_TYPE ); - if ( 'article' === $object_type ) { - \update_option( 'activitypub_object_type', 'wordpress-post-format' ); - } - } - - /** - * Add the ActivityPub capability to all users that can publish posts - * Delete old meta to store followers. - */ - private static function migrate_from_2_2_0() { - // Add the ActivityPub capability to all users that can publish posts. - self::add_activitypub_capability(); - } - - /** - * Rename DB fields. - */ - private static function migrate_from_2_6_0() { - wp_cache_flush(); - - self::update_usermeta_key( 'activitypub_user_description', 'activitypub_description' ); - - self::update_options_key( 'activitypub_blog_user_description', 'activitypub_blog_description' ); - self::update_options_key( 'activitypub_blog_user_identifier', 'activitypub_blog_identifier' ); - } - - /** - * * Update actor-mode settings. - * * Get the ID of the latest blog post and save it to the options table. - */ - private static function migrate_to_4_0_0() { - $latest_post_id = 0; - - // Get the ID of the latest blog post and save it to the options table. - $latest_post = get_posts( - array( - 'numberposts' => 1, - 'orderby' => 'ID', - 'order' => 'DESC', - 'post_type' => 'any', - 'post_status' => 'publish', - ) - ); - - if ( $latest_post ) { - $latest_post_id = $latest_post[0]->ID; - } - - \update_option( 'activitypub_last_post_with_permalink_as_id', $latest_post_id ); - - $users = \get_users( - array( - 'capability__in' => array( 'activitypub' ), - ) - ); - - foreach ( $users as $user ) { - $followers = Followers::get_followers( $user->ID ); - - if ( $followers ) { - \update_user_option( $user->ID, 'activitypub_use_permalink_as_id', '1' ); - } - } - - $followers = Followers::get_followers( Actors::BLOG_USER_ID ); - - if ( $followers ) { - \update_option( 'activitypub_use_permalink_as_id_for_blog', '1' ); - } - - self::migrate_actor_mode(); - } - - /** - * Upate to 4.1.0 - * - * * Migrate the `activitypub_post_content_type` to only use `activitypub_custom_post_content`. - */ - public static function migrate_to_4_1_0() { - $content_type = \get_option( 'activitypub_post_content_type' ); - - switch ( $content_type ) { - case 'excerpt': - $template = "[ap_excerpt]\n\n[ap_permalink type=\"html\"]"; - break; - case 'title': - $template = "[ap_title type=\"html\"]\n\n[ap_permalink type=\"html\"]"; - break; - case 'content': - $template = "[ap_content]\n\n[ap_permalink type=\"html\"]\n\n[ap_hashtags]"; - break; - case 'custom': - $template = \get_option( 'activitypub_custom_post_content', ACTIVITYPUB_CUSTOM_POST_CONTENT ); - break; - default: - $template = ACTIVITYPUB_CUSTOM_POST_CONTENT; - break; - } - - \update_option( 'activitypub_custom_post_content', $template ); - - \delete_option( 'activitypub_post_content_type' ); - - $object_type = \get_option( 'activitypub_object_type', false ); - if ( ! $object_type ) { - \update_option( 'activitypub_object_type', 'note' ); - } - - // Clean up empty visibility meta. - global $wpdb; - $wpdb->query( // phpcs:ignore WordPress.DB.DirectDatabaseQuery - "DELETE FROM $wpdb->postmeta - WHERE meta_key = 'activitypub_content_visibility' - AND (meta_value IS NULL OR meta_value = '')" - ); - } - - /** - * Updates post meta keys to be prefixed with an underscore. - */ - public static function migrate_to_4_7_1() { - global $wpdb; - - $meta_keys = array( - 'activitypub_actor_json', - 'activitypub_canonical_url', - 'activitypub_errors', - 'activitypub_inbox', - 'activitypub_user_id', - ); - - foreach ( $meta_keys as $meta_key ) { - // phpcs:ignore WordPress.DB - $wpdb->update( $wpdb->postmeta, array( 'meta_key' => '_' . $meta_key ), array( 'meta_key' => $meta_key ) ); - } - } - - /** - * Clears the post cache for Followers, we should have done this in 4.7.1 when we renamed those keys. - */ - public static function migrate_to_4_7_2() { - global $wpdb; - // phpcs:ignore WordPress.DB - $followers = $wpdb->get_col( - $wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_type = %s", Followers::POST_TYPE ) - ); - foreach ( $followers as $id ) { - clean_post_cache( $id ); - } - } - - /** - * Update comment counts for posts in batches. - * - * @see Comment::pre_wp_update_comment_count_now() - * @param int $batch_size Optional. Number of posts to process per batch. Default 100. - * @param int $offset Optional. Number of posts to skip. Default 0. - */ - public static function update_comment_counts( $batch_size = 100, $offset = 0 ) { - global $wpdb; - - // Bail if the existing lock is still valid. - if ( self::is_locked() ) { - \wp_schedule_single_event( - time() + ( 5 * MINUTE_IN_SECONDS ), - 'activitypub_update_comment_counts', - array( - 'batch_size' => $batch_size, - 'offset' => $offset, - ) - ); - return; - } - - self::lock(); - - Comment::register_comment_types(); - $comment_types = Comment::get_comment_type_slugs(); - $type_inclusion = "AND comment_type IN ('" . implode( "','", $comment_types ) . "')"; - - // Get and process this batch. - $post_ids = $wpdb->get_col( // phpcs:ignore WordPress.DB - $wpdb->prepare( - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - "SELECT DISTINCT comment_post_ID FROM {$wpdb->comments} WHERE comment_approved = '1' {$type_inclusion} ORDER BY comment_post_ID LIMIT %d OFFSET %d", - $batch_size, - $offset - ) - ); - - foreach ( $post_ids as $post_id ) { - \wp_update_comment_count_now( $post_id ); - } - - if ( count( $post_ids ) === $batch_size ) { - // Schedule next batch. - \wp_schedule_single_event( - time() + MINUTE_IN_SECONDS, - 'activitypub_update_comment_counts', - array( - 'batch_size' => $batch_size, - 'offset' => $offset + $batch_size, - ) - ); - } - - self::unlock(); - } - - /** - * Create outbox items for posts in batches. - * - * @param int $batch_size Optional. Number of posts to process per batch. Default 50. - * @param int $offset Optional. Number of posts to skip. Default 0. - * @return array|null Array with batch size and offset if there are more posts to process, null otherwise. - */ - public static function create_post_outbox_items( $batch_size = 50, $offset = 0 ) { - $posts = \get_posts( - array( - // our own `ap_outbox` will be excluded from `any` by virtue of its `exclude_from_search` arg. - 'post_type' => 'any', - 'posts_per_page' => $batch_size, - 'offset' => $offset, - // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query - 'meta_query' => array( - array( - 'key' => 'activitypub_status', - 'value' => 'federated', - ), - ), - ) - ); - - // Avoid multiple queries for post meta. - \update_postmeta_cache( \wp_list_pluck( $posts, 'ID' ) ); - - foreach ( $posts as $post ) { - $visibility = \get_post_meta( $post->ID, 'activitypub_content_visibility', true ); - - self::add_to_outbox( $post, 'Create', $post->post_author, $visibility ); - - // Add Update activity when the post has been modified. - if ( $post->post_modified !== $post->post_date ) { - self::add_to_outbox( $post, 'Update', $post->post_author, $visibility ); - } - } - - if ( count( $posts ) === $batch_size ) { - return array( - 'batch_size' => $batch_size, - 'offset' => $offset + $batch_size, - ); - } - - return null; - } - - /** - * Create outbox items for comments in batches. - * - * @param int $batch_size Optional. Number of posts to process per batch. Default 50. - * @param int $offset Optional. Number of posts to skip. Default 0. - * @return array|null Array with batch size and offset if there are more posts to process, null otherwise. - */ - public static function create_comment_outbox_items( $batch_size = 50, $offset = 0 ) { - $comments = \get_comments( - array( - 'author__not_in' => array( 0 ), // Limit to comments by registered users. - 'number' => $batch_size, - 'offset' => $offset, - // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query - 'meta_query' => array( - array( - 'key' => 'activitypub_status', - 'value' => 'federated', - ), - ), - ) - ); - - foreach ( $comments as $comment ) { - self::add_to_outbox( $comment, 'Create', $comment->user_id ); - } - - if ( count( $comments ) === $batch_size ) { - return array( - 'batch_size' => $batch_size, - 'offset' => $offset + $batch_size, - ); - } - - return null; - } - - /** - * Update _activitypub_actor_json meta values to ensure they are properly slashed. - * - * @param int $batch_size Optional. Number of meta values to process per batch. Default 100. - * @param int $offset Optional. Number of meta values to skip. Default 0. - * @return array|null Array with batch size and offset if there are more meta values to process, null otherwise. - */ - public static function update_actor_json_slashing( $batch_size = 100, $offset = 0 ) { - global $wpdb; - - // phpcs:ignore WordPress.DB.DirectDatabaseQuery - $meta_values = $wpdb->get_results( - $wpdb->prepare( - "SELECT post_id, meta_value FROM {$wpdb->postmeta} WHERE meta_key = '_activitypub_actor_json' LIMIT %d OFFSET %d", - $batch_size, - $offset - ) - ); - - foreach ( $meta_values as $meta ) { - $json = \json_decode( $meta->meta_value, true ); - - // If json_decode fails, try adding slashes. - if ( null === $json && \json_last_error() !== JSON_ERROR_NONE ) { - $escaped_value = \preg_replace( '#\\\\(?!["\\\\/bfnrtu])#', '\\\\\\\\', $meta->meta_value ); - $json = \json_decode( $escaped_value, true ); - - // Update the meta if json_decode succeeds with slashes. - if ( null !== $json && \json_last_error() === JSON_ERROR_NONE ) { - \update_post_meta( $meta->post_id, '_activitypub_actor_json', \wp_slash( $escaped_value ) ); - } - } - } - - if ( \count( $meta_values ) === $batch_size ) { - return array( - 'batch_size' => $batch_size, - 'offset' => $offset + $batch_size, - ); - } - - return null; - } - - /** - * Update comment author emails with webfinger addresses for ActivityPub comments. - * - * @param int $batch_size Optional. Number of comments to process per batch. Default 50. - * @param int $offset Optional. Number of comments to skip. Default 0. - * @return array|null Array with batch size and offset if there are more comments to process, null otherwise. - */ - public static function update_comment_author_emails( $batch_size = 50, $offset = 0 ) { - $comments = \get_comments( - array( - 'number' => $batch_size, - 'offset' => $offset, - // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query - 'meta_query' => array( - array( - 'key' => 'protocol', - 'value' => 'activitypub', - ), - ), - ) - ); - - foreach ( $comments as $comment ) { - $comment_author_url = $comment->comment_author_url; - if ( empty( $comment_author_url ) ) { - continue; - } - - $webfinger = Webfinger::uri_to_acct( $comment_author_url ); - if ( \is_wp_error( $webfinger ) ) { - continue; - } - - \wp_update_comment( - array( - 'comment_ID' => $comment->comment_ID, - 'comment_author_email' => \str_replace( 'acct:', '', $webfinger ), - ) - ); - } - - if ( count( $comments ) === $batch_size ) { - return array( - 'batch_size' => $batch_size, - 'offset' => $offset + $batch_size, - ); - } - - return null; - } - - /** - * Set the defaults needed for the plugin to work. - * - * Add the ActivityPub capability to all users that can publish posts. - */ - public static function add_default_settings() { - self::add_activitypub_capability(); - self::add_default_extra_field(); - } - - /** - * Add an activity to the outbox without federating it. - * - * @param \WP_Post|\WP_Comment $comment The comment or post object. - * @param string $activity_type The type of activity. - * @param int $user_id The user ID. - * @param string $visibility Optional. The visibility of the content. Default 'public'. - */ - private static function add_to_outbox( $comment, $activity_type, $user_id, $visibility = ACTIVITYPUB_CONTENT_VISIBILITY_PUBLIC ) { - $transformer = Factory::get_transformer( $comment ); - if ( ! $transformer || \is_wp_error( $transformer ) ) { - return; - } - - $activity = $transformer->to_activity( $activity_type ); - if ( ! $activity || \is_wp_error( $activity ) ) { - return; - } - - // If the user is disabled, fall back to the blog user when available. - if ( ! user_can_activitypub( $user_id ) ) { - if ( user_can_activitypub( Actors::BLOG_USER_ID ) ) { - $user_id = Actors::BLOG_USER_ID; - } else { - return; - } - } - - $post_id = Outbox::add( $activity, $user_id, $visibility ); - - // Immediately set to publish, no federation needed. - \wp_publish_post( $post_id ); - } - - /** - * Add the ActivityPub capability to all users that can publish posts. - */ - private static function add_activitypub_capability() { - // Get all WP_User objects that can publish posts. - $users = \get_users( - array( - 'capability__in' => array( 'publish_posts' ), - ) - ); - - // Add ActivityPub capability to all users that can publish posts. - foreach ( $users as $user ) { - $user->add_cap( 'activitypub' ); - } - } - - /** - * Add a default extra field for the user. - */ - private static function add_default_extra_field() { - $users = \get_users( - array( - 'capability__in' => array( 'activitypub' ), - ) - ); - - $title = \__( 'Powered by', 'activitypub' ); - $content = 'WordPress'; - - // Add a default extra field for each user. - foreach ( $users as $user ) { - \wp_insert_post( - array( - 'post_type' => Extra_Fields::USER_POST_TYPE, - 'post_author' => $user->ID, - 'post_status' => 'publish', - 'post_title' => $title, - 'post_content' => $content, - ) - ); - } - - \wp_insert_post( - array( - 'post_type' => Extra_Fields::BLOG_POST_TYPE, - 'post_author' => 0, - 'post_status' => 'publish', - 'post_title' => $title, - 'post_content' => $content, - ) - ); - } - - /** - * Rename meta keys. - * - * @param string $old_key The old comment meta key. - * @param string $new_key The new comment meta key. - */ - private static function update_usermeta_key( $old_key, $new_key ) { - global $wpdb; - - $wpdb->update( // phpcs:ignore WordPress.DB.DirectDatabaseQuery - $wpdb->usermeta, - array( 'meta_key' => $new_key ), // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key - array( 'meta_key' => $old_key ), // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key - array( '%s' ), - array( '%s' ) - ); - } - - /** - * Rename option keys. - * - * @param string $old_key The old option key. - * @param string $new_key The new option key. - */ - private static function update_options_key( $old_key, $new_key ) { - global $wpdb; - - $wpdb->update( // phpcs:ignore WordPress.DB.DirectDatabaseQuery - $wpdb->options, - array( 'option_name' => $new_key ), // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key - array( 'option_name' => $old_key ), // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key - array( '%s' ), - array( '%s' ) - ); - } - - /** - * Migrate the actor mode settings. - */ - public static function migrate_actor_mode() { - $blog_profile = \get_option( 'activitypub_enable_blog_user', '0' ); - $author_profiles = \get_option( 'activitypub_enable_users', '1' ); - - if ( - '1' === $blog_profile && - '1' === $author_profiles - ) { - \update_option( 'activitypub_actor_mode', ACTIVITYPUB_ACTOR_AND_BLOG_MODE ); - } elseif ( - '1' === $blog_profile && - '1' !== $author_profiles - ) { - \update_option( 'activitypub_actor_mode', ACTIVITYPUB_BLOG_MODE ); - } elseif ( - '1' !== $blog_profile && - '1' === $author_profiles - ) { - \update_option( 'activitypub_actor_mode', ACTIVITYPUB_ACTOR_MODE ); - } - } - - /** - * Deletes user extra fields where the author is the blog user. - * - * These extra fields were created when the Enable Mastodon Apps integration passed - * an author_url instead of a user_id to the mastodon_api_account filter. This caused - * Extra_Fields::default_actor_extra_fields() to run but fail to cache the fact it ran - * for non-existent users. The result is a number of user extra fields with no author. - * - * @ticket https://github.com/Automattic/wordpress-activitypub/pull/1554 - */ - public static function delete_mastodon_api_orphaned_extra_fields() { - global $wpdb; - - // phpcs:ignore WordPress.DB.DirectDatabaseQuery - $wpdb->delete( - $wpdb->posts, - array( - 'post_type' => Extra_Fields::USER_POST_TYPE, - 'post_author' => Actors::BLOG_USER_ID, - ) - ); - } - - /** - * Update notification options. - */ - public static function update_notification_options() { - $new_dm = \get_option( 'activitypub_mailer_new_dm', '1' ); - $new_follower = \get_option( 'activitypub_mailer_new_follower', '1' ); - - // Add the blog user notification options. - \add_option( 'activitypub_blog_user_mailer_new_dm', $new_dm ); - \add_option( 'activitypub_blog_user_mailer_new_follower', $new_follower ); - \add_option( 'activitypub_blog_user_mailer_new_mention', '1' ); - - // Add the actor notification options. - foreach ( Actors::get_collection() as $actor ) { - \update_user_option( $actor->get__id(), 'activitypub_mailer_new_dm', $new_dm ); - \update_user_option( $actor->get__id(), 'activitypub_mailer_new_follower', $new_follower ); - \update_user_option( $actor->get__id(), 'activitypub_mailer_new_mention', '1' ); - } - - // Delete the old notification options. - \delete_option( 'activitypub_mailer_new_dm' ); - \delete_option( 'activitypub_mailer_new_follower' ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-move.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-move.php deleted file mode 100644 index 18e54ad4..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-move.php +++ /dev/null @@ -1,313 +0,0 @@ -get__id() > 0 ) { - \update_user_option( $user->get__id(), 'activitypub_moved_to', $to ); - } else { - \update_option( 'activitypub_blog_user_moved_to', $to ); - } - - $response = Http::get_remote_object( $to ); - - if ( \is_wp_error( $response ) ) { - return $response; - } - - $target_actor = new Actor(); - $target_actor->from_array( $response ); - - // Check if the `Move` Activity is valid. - $also_known_as = $target_actor->get_also_known_as() ?? array(); - if ( ! in_array( $from, $also_known_as, true ) ) { - return new \WP_Error( 'invalid_target', __( 'Invalid target', 'activitypub' ) ); - } - - $activity = new Activity(); - $activity->set_type( 'Move' ); - $activity->set_actor( $user->get_id() ); - $activity->set_origin( $user->get_id() ); - $activity->set_object( $user->get_id() ); - $activity->set_target( $target_actor->get_id() ); - - // Add to outbox. - return add_to_outbox( $activity, null, $user->get__id(), ACTIVITYPUB_CONTENT_VISIBILITY_PUBLIC ); - } - - /** - * Internal Move. - * - * Move an ActivityPub Actor from one location (internal) to another (internal). - * - * This helps migrating abandoned profiles to `Move` to other profiles: - * - * `Move::internally( 'https://example.com/?author=123', 'https://example.com/?author=321' );` - * - * ... or to change Actor-IDs like: - * - * `Move::internally( 'https://example.com/author/foo', 'https://example.com/?author=123' );` - * - * @param string $from The current account URL. - * @param string $to The new account URL. - * - * @return int|bool|\WP_Error The ID of the outbox item or false or WP_Error on failure. - */ - public static function internally( $from, $to ) { - $user = Actors::get_by_various( $from ); - - if ( \is_wp_error( $user ) ) { - return $user; - } - - // Add the old account URL to alsoKnownAs. - if ( $user->get__id() > 0 ) { - self::update_user_also_known_as( $user->get__id(), $from ); - \update_user_option( $user->get__id(), 'activitypub_moved_to', $to ); - } else { - self::update_blog_also_known_as( $from ); - \update_option( 'activitypub_blog_user_moved_to', $to ); - } - - // check if `$from` is a URL or an ID. - if ( \filter_var( $from, FILTER_VALIDATE_URL ) ) { - $actor = $from; - } else { - $actor = $user->get_id(); - } - - $activity = new Activity(); - $activity->set_type( 'Move' ); - $activity->set_actor( $actor ); - $activity->set_origin( $actor ); - $activity->set_object( $actor ); - $activity->set_target( $to ); - - return add_to_outbox( $activity, null, $user->get__id(), ACTIVITYPUB_CONTENT_VISIBILITY_QUIET_PUBLIC ); - } - - /** - * Update the alsoKnownAs property of a user. - * - * @param int $user_id The user ID. - * @param string $from The current account URL. - */ - private static function update_user_also_known_as( $user_id, $from ) { - // phpcs:ignore Universal.Operators.DisallowShortTernary.Found - $also_known_as = \get_user_option( 'activitypub_also_known_as', $user_id ) ?: array(); - $also_known_as[] = $from; - - \update_user_option( $user_id, 'activitypub_also_known_as', $also_known_as ); - } - - /** - * Update the alsoKnownAs property of the blog. - * - * @param string $from The current account URL. - */ - private static function update_blog_also_known_as( $from ) { - $also_known_as = \get_option( 'activitypub_blog_user_also_known_as', array() ); - $also_known_as[] = $from; - - \update_option( 'activitypub_blog_user_also_known_as', $also_known_as ); - } - - /** - * Change domain for all ActivityPub Actors. - * - * This method handles domain migration according to the ActivityPub Data Portability spec. - * It stores the old host and calls Move::internally for each available profile. - * It also caches the JSON representation of the old Actor for future lookups. - * - * @param string $from The old domain. - * @param string $to The new domain. - * - * @return array Array of results from Move::internally calls. - */ - public static function change_domain( $from, $to ) { - // Get all actors that need to be migrated. - $actors = Actors::get_all(); - - $results = array(); - $to_host = \wp_parse_url( $to, \PHP_URL_HOST ); - $from_host = \wp_parse_url( $from, \PHP_URL_HOST ); - - // Store the old host for future reference. - \update_option( 'activitypub_old_host', $from_host ); - - // Process each actor. - foreach ( $actors as $actor ) { - $actor_id = $actor->get_id(); - - // Replace the new host with the old host in the actor ID. - $old_actor_id = str_replace( $to_host, $from_host, $actor_id ); - - // Call Move::internally for this actor. - $result = self::internally( $old_actor_id, $actor_id ); - - if ( \is_wp_error( $result ) ) { - // Log the error and continue with the next actor. - Debug::write_log( 'Error moving actor: ' . $actor_id . ' - ' . $result->get_error_message() ); - continue; - } - - $json = str_replace( $to_host, $from_host, $actor->to_json() ); - - // Save the current actor data after migration. - if ( $actor instanceof Blog ) { - \update_option( 'activitypub_blog_user_old_host_data', $json, false ); - } else { - \update_user_option( $actor->get__id(), 'activitypub_old_host_data', $json, false ); - } - - $results[] = array( - 'actor' => $actor_id, - 'result' => $result, - ); - } - - return $results; - } - - /** - * Maybe initiate old user. - * - * This method checks if the current request domain matches the old host. - * If it does, it retrieves the cached data for the user and populates the instance. - * - * @param Blog|User $instance The Blog or User instance to populate. - */ - public static function maybe_initiate_old_user( $instance ) { - if ( ! Query::get_instance()->is_old_host_request() ) { - return; - } - - if ( $instance instanceof Blog ) { - $cached_data = \get_option( 'activitypub_blog_user_old_host_data' ); - } elseif ( $instance instanceof User ) { - $cached_data = \get_user_option( 'activitypub_old_host_data', $instance->get__id() ); - } - - if ( ! empty( $cached_data ) ) { - $instance->from_json( $cached_data ); - } - } - - /** - * Pre-send to inboxes. - * - * @param string $json The ActivityPub Activity JSON. - */ - public static function pre_send_to_inboxes( $json ) { - $json = json_decode( $json, true ); - - if ( 'Move' !== $json['type'] ) { - return; - } - - if ( is_same_domain( $json['object'] ) ) { - return; - } - - Query::get_instance()->set_old_host_request(); - } - - /** - * Filter to return the old blog username. - * - * @param null $pre The pre-existing value. - * @param string $username The username to check. - * - * @return Blog|null The old blog instance or null. - */ - public static function old_blog_username( $pre, $username ) { - $old_host = \get_option( 'activitypub_old_host' ); - - // Special case for Blog Actor on old host. - if ( $old_host === $username && Query::get_instance()->is_old_host_request() ) { - // Return a new Blog instance which will load the cached data in its constructor. - $pre = new Blog(); - } - - return $pre; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-notification.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-notification.php deleted file mode 100644 index 68283133..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-notification.php +++ /dev/null @@ -1,77 +0,0 @@ -type = $type; - $this->actor = $actor; - $this->object = $activity; - $this->target = $target; - } - - /** - * Send the notification. - */ - public function send() { - $type = \strtolower( $this->type ); - - /** - * Action to send ActivityPub notifications. - * - * @param Notification $instance The notification object. - */ - do_action( 'activitypub_notification', $this ); - - /** - * Type-specific action to send ActivityPub notifications. - * - * @param Notification $instance The notification object. - */ - do_action( "activitypub_notification_{$type}", $this ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-options.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-options.php deleted file mode 100644 index d30ef9ad..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-options.php +++ /dev/null @@ -1,124 +0,0 @@ -activitypub_object ) { - return $this->activitypub_object; - } - - if ( $this->prepare_activitypub_data() ) { - return $this->activitypub_object; - } - - $queried_object = $this->get_queried_object(); - $transformer = Factory::get_transformer( $queried_object ); - - if ( $transformer && ! \is_wp_error( $transformer ) ) { - $this->activitypub_object = $transformer->to_object(); - } - - return $this->activitypub_object; - } - - /** - * Get the ActivityPub object ID. - * - * @return string The ActivityPub object ID. - */ - public function get_activitypub_object_id() { - if ( $this->activitypub_object_id ) { - return $this->activitypub_object_id; - } - - if ( $this->prepare_activitypub_data() ) { - return $this->activitypub_object_id; - } - - $queried_object = $this->get_queried_object(); - $transformer = Factory::get_transformer( $queried_object ); - - if ( $transformer && ! \is_wp_error( $transformer ) ) { - $this->activitypub_object_id = $transformer->to_id(); - } - - return $this->activitypub_object_id; - } - - /** - * Prepare and set both ActivityPub object and ID for Outbox activities and virtual objects. - * - * @return bool True if an object was found and set, false otherwise. - */ - private function prepare_activitypub_data() { - $queried_object = $this->get_queried_object(); - - // Check for Outbox Activity. - if ( - $queried_object instanceof \WP_Post && - Outbox::POST_TYPE === $queried_object->post_type - ) { - $activitypub_object = Outbox::maybe_get_activity( $queried_object ); - - // Check if the Outbox Activity is public. - if ( ! \is_wp_error( $activitypub_object ) ) { - $this->activitypub_object = $activitypub_object; - $this->activitypub_object_id = $this->activitypub_object->get_id(); - return true; - } - } - - if ( ! $queried_object ) { - // If the object is not a valid ActivityPub object, try to get a virtual object. - $activitypub_object = $this->maybe_get_virtual_object(); - - if ( $activitypub_object ) { - $this->activitypub_object = $activitypub_object; - $this->activitypub_object_id = $this->activitypub_object->get_id(); - return true; - } - } - - return false; - } - - /** - * Get the queried object. - * - * This adds support for Comments by `?c=123` IDs and Users by `?author=123` and `@username` IDs. - * - * @return \WP_Term|\WP_Post_Type|\WP_Post|\WP_User|\WP_Comment|null The queried object. - */ - public function get_queried_object() { - $queried_object = \get_queried_object(); - - // Check Comment by ID. - if ( ! $queried_object ) { - $comment_id = \get_query_var( 'c' ); - if ( $comment_id ) { - $queried_object = \get_comment( $comment_id ); - } - } - - // Check Post by ID (works for custom post types). - if ( ! $queried_object ) { - $post_id = \get_query_var( 'p' ); - if ( $post_id ) { - $queried_object = \get_post( $post_id ); - } - } - - // Try to get Author by ID. - if ( ! $queried_object ) { - $url = $this->get_request_url(); - $author_id = url_to_authorid( $url ); - if ( $author_id ) { - $queried_object = \get_user_by( 'id', $author_id ); - } - } - - /** - * Filters the queried object. - * - * @param \WP_Term|\WP_Post_Type|\WP_Post|\WP_User|\WP_Comment|null $queried_object The queried object. - */ - return apply_filters( 'activitypub_queried_object', $queried_object ); - } - - /** - * Get the virtual object. - * - * Virtual objects are objects that are not stored in the database, but are created on the fly. - * The plugins currently supports two virtual objects: The Blog-Actor and the Application-Actor. - * - * @see \Activitypub\Model\Blog - * @see \Activitypub\Model\Application - * - * @return object|null The virtual object. - */ - protected function maybe_get_virtual_object() { - $url = $this->get_request_url(); - - if ( ! $url ) { - return null; - } - - $author_id = url_to_authorid( $url ); - - if ( ! is_numeric( $author_id ) ) { - $author_id = $url; - } - - $user = Actors::get_by_various( $author_id ); - - if ( \is_wp_error( $user ) || ! $user ) { - return null; - } - - return $user; - } - - /** - * Get the request URL. - * - * @return string|null The request URL. - */ - protected function get_request_url() { - if ( ! isset( $_SERVER['REQUEST_URI'] ) ) { - return null; - } - - // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized - $url = \wp_unslash( $_SERVER['REQUEST_URI'] ); - $url = \WP_Http::make_absolute_url( $url, \home_url() ); - $url = \sanitize_url( $url ); - - return $url; - } - - /** - * Check if the current request is an ActivityPub request. - * - * @return bool True if the request is an ActivityPub request, false otherwise. - */ - public function is_activitypub_request() { - if ( isset( $this->is_activitypub_request ) ) { - return $this->is_activitypub_request; - } - - global $wp_query; - - // One can trigger an ActivityPub request by adding `?activitypub` to the URL. - if ( - isset( $wp_query->query_vars['activitypub'] ) || - // phpcs:ignore WordPress.Security.NonceVerification.Recommended - isset( $_GET['activitypub'] ) - ) { - \defined( 'ACTIVITYPUB_REQUEST' ) || \define( 'ACTIVITYPUB_REQUEST', true ); - $this->is_activitypub_request = true; - - return true; - } - - /* - * The other (more common) option to make an ActivityPub request - * is to send an Accept header. - */ - if ( isset( $_SERVER['HTTP_ACCEPT'] ) ) { - $accept = \sanitize_text_field( \wp_unslash( $_SERVER['HTTP_ACCEPT'] ) ); - - /* - * $accept can be a single value, or a comma separated list of values. - * We want to support both scenarios, - * and return true when the header includes at least one of the following: - * - application/activity+json - * - application/ld+json - * - application/json - */ - if ( \preg_match( '/(application\/(ld\+json|activity\+json|json))/i', $accept ) ) { - \defined( 'ACTIVITYPUB_REQUEST' ) || \define( 'ACTIVITYPUB_REQUEST', true ); - $this->is_activitypub_request = true; - - return true; - } - } - - $this->is_activitypub_request = false; - - return false; - } - - /** - * Check if the current request is from the old host. - * - * @return bool True if the request is from the old host, false otherwise. - */ - public function is_old_host_request() { - if ( isset( $this->is_old_host_request ) ) { - return $this->is_old_host_request; - } - - $old_host = \get_option( 'activitypub_old_host' ); - - if ( ! $old_host ) { - $this->is_old_host_request = false; - return false; - } - - $request_host = isset( $_SERVER['HTTP_HOST'] ) ? \sanitize_text_field( \wp_unslash( $_SERVER['HTTP_HOST'] ) ) : ''; - $referer_host = isset( $_SERVER['HTTP_REFERER'] ) ? \wp_parse_url( \sanitize_text_field( \wp_unslash( $_SERVER['HTTP_REFERER'] ) ), PHP_URL_HOST ) : ''; - - // Check if the domain matches either the request domain or referer. - $check = $old_host === $request_host || $old_host === $referer_host; - $this->is_old_host_request = $check; - - return $check; - } - - /** - * Fake an old host request. - * - * @param bool $state Optional. The state to set. Default true. - */ - public function set_old_host_request( $state = true ) { - $this->is_old_host_request = $state; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-sanitize.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-sanitize.php deleted file mode 100644 index 42d32491..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-sanitize.php +++ /dev/null @@ -1,122 +0,0 @@ - $sanitized, - 'search_columns' => array( 'user_login', 'user_nicename' ), - 'number' => 1, - 'hide_empty' => true, - 'fields' => 'ID', - ) - ); - - if ( $user->get_results() ) { - \add_settings_error( - 'activitypub_blog_identifier', - 'activitypub_blog_identifier', - \esc_html__( 'You cannot use an existing author’s name for the blog profile ID.', 'activitypub' ) - ); - - return Blog::get_default_username(); - } - - return $sanitized; - } - - /** - * Get the sanitized value of a constant. - * - * @param mixed $value The constant value. - * - * @return string The sanitized value. - */ - public static function constant_value( $value ) { - if ( is_bool( $value ) ) { - return $value ? 'true' : 'false'; - } - - if ( is_string( $value ) ) { - return esc_attr( $value ); - } - - if ( is_array( $value ) ) { - // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_print_r - return print_r( $value, true ); - } - - return $value; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-scheduler.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-scheduler.php deleted file mode 100644 index 2e2ca070..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-scheduler.php +++ /dev/null @@ -1,444 +0,0 @@ -get_id(), false ); - - if ( empty( $meta ) || ! is_array( $meta ) || is_wp_error( $meta ) ) { - Followers::add_error( $follower->get__id(), $meta ); - } else { - $follower->from_array( $meta ); - $follower->update(); - } - } - } - - /** - * Cleanup followers. - */ - public static function cleanup_followers() { - $number = 5; - - if ( defined( 'DISABLE_WP_CRON' ) && DISABLE_WP_CRON ) { - $number = 50; - } - - /** - * Filter the number of followers to clean up. - * - * @param int $number The number of followers to clean up. - */ - $number = apply_filters( 'activitypub_update_followers_number', $number ); - $followers = Followers::get_faulty_followers( $number ); - - foreach ( $followers as $follower ) { - $meta = get_remote_metadata_by_actor( $follower->get_url(), false ); - - if ( is_tombstone( $meta ) ) { - $follower->delete(); - } elseif ( empty( $meta ) || ! is_array( $meta ) || is_wp_error( $meta ) ) { - if ( $follower->count_errors() >= 5 ) { - $follower->delete(); - \wp_schedule_single_event( - \time(), - 'activitypub_delete_actor_interactions', - array( $follower->get_id() ) - ); - } else { - Followers::add_error( $follower->get__id(), $meta ); - } - } else { - $follower->reset_errors(); - } - } - } - - /** - * Schedule the outbox item for federation. - * - * @param int $id The ID of the outbox item. - * @param int $offset The offset to add to the scheduled time. - */ - public static function schedule_outbox_activity_for_federation( $id, $offset = 0 ) { - $hook = 'activitypub_process_outbox'; - $args = array( $id ); - - if ( false === wp_next_scheduled( $hook, $args ) ) { - \wp_schedule_single_event( - \time() + $offset, - $hook, - $args - ); - } - } - - /** - * Reprocess the outbox. - */ - public static function reprocess_outbox() { - // Bail if there is a pending batch. - if ( self::next_scheduled_hook( 'activitypub_async_batch' ) ) { - return; - } - - // Bail if there is a batch in progress. - $key = \md5( \serialize( Dispatcher::$callback ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize - if ( self::is_locked( $key ) ) { - return; - } - - $ids = \get_posts( - array( - 'post_type' => Outbox::POST_TYPE, - 'post_status' => 'pending', - 'posts_per_page' => 10, - 'fields' => 'ids', - ) - ); - - foreach ( $ids as $id ) { - self::schedule_outbox_activity_for_federation( $id ); - } - } - - /** - * Purge outbox items based on a schedule. - */ - public static function purge_outbox() { - $total_posts = (int) wp_count_posts( Outbox::POST_TYPE )->publish; - if ( $total_posts <= 20 ) { - return; - } - - $days = (int) get_option( 'activitypub_outbox_purge_days', 180 ); - $timezone = new \DateTimeZone( 'UTC' ); - $date = new \DateTime( 'now', $timezone ); - - $date->sub( \DateInterval::createFromDateString( "$days days" ) ); - - $post_ids = get_posts( - array( - 'post_type' => Outbox::POST_TYPE, - 'post_status' => 'any', - 'fields' => 'ids', - 'numberposts' => -1, - 'date_query' => array( - array( - 'before' => $date->format( 'Y-m-d' ), - ), - ), - ) - ); - - foreach ( $post_ids as $post_id ) { - \wp_delete_post( $post_id, true ); - } - } - - /** - * Update schedules when outbox purge days settings change. - * - * @param int $old_value The old value. - * @param int $value The new value. - */ - public static function handle_outbox_purge_days_update( $old_value, $value ) { - if ( 0 === (int) $value ) { - wp_clear_scheduled_hook( 'activitypub_outbox_purge' ); - } elseif ( ! wp_next_scheduled( 'activitypub_outbox_purge' ) ) { - wp_schedule_event( time(), 'daily', 'activitypub_outbox_purge' ); - } - } - - /** - * Asynchronously runs batch processing routines. - * - * The batching part is optional and only comes into play if the callback returns anything. - * Beyond that it's a helper to run a callback asynchronously with locking to prevent simultaneous processing. - * - * @param callable $callback Callable processing routine. - * @params mixed ...$args Optional. Parameters that get passed to the callback. - */ - public static function async_batch( $callback ) { - if ( ! in_array( $callback, self::$batch_callbacks, true ) || ! \is_callable( $callback ) ) { - _doing_it_wrong( __METHOD__, 'The first argument must be a valid callback.', '5.2.0' ); - return; - } - - $args = \func_get_args(); // phpcs:ignore PHPCompatibility.FunctionUse.ArgumentFunctionsReportCurrentValue - $key = \md5( \serialize( $callback ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize - - // Bail if the existing lock is still valid. - if ( self::is_locked( $key ) ) { - \wp_schedule_single_event( time() + MINUTE_IN_SECONDS, 'activitypub_async_batch', $args ); - return; - } - - self::lock( $key ); - - $callback = array_shift( $args ); // Remove $callback from arguments. - $next = \call_user_func_array( $callback, $args ); - - self::unlock( $key ); - - if ( ! empty( $next ) ) { - // Schedule the next run, adding the result to the arguments. - \wp_schedule_single_event( - \time() + 30, - 'activitypub_async_batch', - \array_merge( array( $callback ), \array_values( $next ) ) - ); - } - } - - - /** - * Locks the async batch process for individual callbacks to prevent simultaneous processing. - * - * @param string $key Serialized callback name. - * @return bool|int True if the lock was successful, timestamp of existing lock otherwise. - */ - public static function lock( $key ) { - global $wpdb; - - // Try to lock. - $lock_result = (bool) $wpdb->query( $wpdb->prepare( "INSERT IGNORE INTO `$wpdb->options` ( `option_name`, `option_value`, `autoload` ) VALUES (%s, %s, 'no') /* LOCK */", 'activitypub_async_batch_' . $key, \time() ) ); // phpcs:ignore WordPress.DB - - if ( ! $lock_result ) { - $lock_result = \get_option( 'activitypub_async_batch_' . $key ); - } - - return $lock_result; - } - - /** - * Unlocks processing for the async batch callback. - * - * @param string $key Serialized callback name. - */ - public static function unlock( $key ) { - \delete_option( 'activitypub_async_batch_' . $key ); - } - - /** - * Whether the async batch callback is locked. - * - * @param string $key Serialized callback name. - * @return boolean - */ - public static function is_locked( $key ) { - $lock = \get_option( 'activitypub_async_batch_' . $key ); - - if ( ! $lock ) { - return false; - } - - $lock = (int) $lock; - - if ( $lock < \time() - 1800 ) { - self::unlock( $key ); - return false; - } - - return true; - } - - /** - * Get the next scheduled hook. - * - * @param string $hook The hook name. - * @return int|bool The timestamp of the next scheduled hook, or false if none found. - */ - private static function next_scheduled_hook( $hook ) { - $crons = _get_cron_array(); - if ( empty( $crons ) ) { - return false; - } - - // Get next event. - $next = false; - foreach ( $crons as $timestamp => $cron ) { - if ( isset( $cron[ $hook ] ) ) { - $next = $timestamp; - break; - } - } - - return $next; - } - - /** - * Send announces. - * - * @param int $outbox_activity_id The outbox activity ID. - * @param \Activitypub\Activity\Activity $activity The activity object. - * @param int $actor_id The actor ID. - * @param int $content_visibility The content visibility. - */ - public static function schedule_announce_activity( $outbox_activity_id, $activity, $actor_id, $content_visibility ) { - // Only if we're in both Blog and User modes. - if ( ACTIVITYPUB_ACTOR_AND_BLOG_MODE !== \get_option( 'activitypub_actor_mode', ACTIVITYPUB_ACTOR_MODE ) ) { - return; - } - - // Only if this isn't the Blog Actor. - if ( Actors::BLOG_USER_ID === $actor_id ) { - return; - } - - // Only if the content is public or quiet public. - if ( ACTIVITYPUB_CONTENT_VISIBILITY_PUBLIC !== $content_visibility ) { - return; - } - - // Only if the activity is a Create. - if ( 'Create' !== $activity->get_type() ) { - return; - } - - if ( ! is_object( $activity->get_object() ) ) { - return; - } - - // Check if the object is an article, image, audio, video, event, or document and ignore profile updates and other activities. - if ( ! in_array( $activity->get_object()->get_type(), Base_Object::TYPES, true ) ) { - return; - } - - $announce = new Activity(); - $announce->set_type( 'Announce' ); - $announce->set_actor( Actors::get_by_id( Actors::BLOG_USER_ID )->get_id() ); - $announce->set_object( $activity ); - - $outbox_activity_id = Outbox::add( $announce, Actors::BLOG_USER_ID ); - - if ( ! $outbox_activity_id ) { - return; - } - - // Schedule the outbox item for federation. - self::schedule_outbox_activity_for_federation( $outbox_activity_id, 120 ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-shortcodes.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-shortcodes.php deleted file mode 100644 index 63d7e6de..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-shortcodes.php +++ /dev/null @@ -1,516 +0,0 @@ -ID ); - - if ( ! $tags ) { - return ''; - } - - $hash_tags = array(); - - foreach ( $tags as $tag ) { - // Tag can be empty. - if ( ! $tag ) { - continue; - } - - $hash_tags[] = \sprintf( - '', - \esc_url( \get_tag_link( $tag ) ), - esc_hashtag( $tag->name ) - ); - } - - return \implode( ' ', $hash_tags ); - } - - /** - * Generates output for the 'ap_title' Shortcode - * - * @param array $atts The Shortcode attributes. - * @param string $content The ActivityPub post-content. - * @param string $tag The tag/name of the Shortcode. - * - * @return string The post title. - */ - public static function title( $atts, $content, $tag ) { - $item = self::get_item(); - - if ( ! $item ) { - return ''; - } - - $title = \wp_strip_all_tags( \get_the_title( $item->ID ), true ); - - if ( ! $title ) { - return ''; - } - - $atts = shortcode_atts( - array( 'type' => 'plain' ), - $atts, - $tag - ); - - if ( 'html' !== $atts['type'] ) { - return $title; - } - - return sprintf( '

%s

', $title ); - } - - /** - * Generates output for the 'ap_excerpt' Shortcode - * - * @param array $atts The Shortcode attributes. - * @param string $content The ActivityPub post-content. - * @param string $tag The tag/name of the Shortcode. - * - * @return string The post excerpt. - */ - public static function excerpt( $atts, $content, $tag ) { - $item = self::get_item(); - - if ( ! $item ) { - return ''; - } - - $atts = shortcode_atts( - array( 'length' => ACTIVITYPUB_EXCERPT_LENGTH ), - $atts, - $tag - ); - - $excerpt_length = intval( $atts['length'] ); - - if ( 0 === $excerpt_length ) { - $excerpt_length = ACTIVITYPUB_EXCERPT_LENGTH; - } - - $excerpt = generate_post_summary( $item, $excerpt_length ); - - /** This filter is documented in wp-includes/post-template.php */ - return \apply_filters( 'the_excerpt', $excerpt ); - } - - /** - * Generates output for the 'ap_content' Shortcode. - * - * @param array $atts The Shortcode attributes. - * @param string $content The ActivityPub post-content. - * @param string $tag The tag/name of the Shortcode. - * - * @return string The post content. - */ - public static function content( $atts, $content, $tag ) { - $item = self::get_item(); - - if ( ! $item ) { - return ''; - } - - // Prevent inception. - remove_shortcode( 'ap_content' ); - - $atts = shortcode_atts( - array( 'apply_filters' => 'yes' ), - $atts, - $tag - ); - - $content = ''; - - if ( 'attachment' === $item->post_type ) { - // Get title of attachment with fallback to alt text. - $content = wp_get_attachment_caption( $item->ID ); - if ( empty( $content ) ) { - $content = get_post_meta( $item->ID, '_wp_attachment_image_alt', true ); - } - } - - if ( empty( $content ) ) { - $content = \get_post_field( 'post_content', $item ); - } - - if ( 'yes' === $atts['apply_filters'] ) { - /** This filter is documented in wp-includes/post-template.php */ - $content = \apply_filters( 'the_content', $content ); - } else { - if ( site_supports_blocks() ) { - $content = \do_blocks( $content ); - } - $content = \wptexturize( $content ); - $content = \wp_filter_content_tags( $content ); - } - - // Replace script and style elements. - $content = \preg_replace( '@<(script|style)[^>]*?>.*?@si', '', $content ); - $content = \strip_shortcodes( $content ); - $content = \trim( \preg_replace( '/[\n\r\t]/', '', $content ) ); - - add_shortcode( 'ap_content', array( 'Activitypub\Shortcodes', 'content' ) ); - - return $content; - } - - /** - * Generates output for the 'ap_permalink' Shortcode. - * - * @param array $atts The Shortcode attributes. - * @param string $content The ActivityPub post-content. - * @param string $tag The tag/name of the Shortcode. - * - * @return string The post permalink. - */ - public static function permalink( $atts, $content, $tag ) { - $item = self::get_item(); - - if ( ! $item ) { - return ''; - } - - $atts = shortcode_atts( - array( - 'type' => 'url', - ), - $atts, - $tag - ); - - if ( 'html' !== $atts['type'] ) { - return \esc_url( \get_permalink( $item->ID ) ); - } - - return \sprintf( - '%1$s', - \esc_url( \get_permalink( $item->ID ) ) - ); - } - - /** - * Generates output for the 'ap_shortlink' Shortcode. - * - * @param array $atts The Shortcode attributes. - * @param string $content The ActivityPub post-content. - * @param string $tag The tag/name of the Shortcode. - * - * @return string The post shortlink. - */ - public static function shortlink( $atts, $content, $tag ) { - $item = self::get_item(); - - if ( ! $item ) { - return ''; - } - - $atts = shortcode_atts( - array( - 'type' => 'url', - ), - $atts, - $tag - ); - - if ( 'html' !== $atts['type'] ) { - return \esc_url( \wp_get_shortlink( $item->ID ) ); - } - - return \sprintf( - '%1$s', - \esc_url( \wp_get_shortlink( $item->ID ) ) - ); - } - - /** - * Generates output for the 'ap_image' Shortcode. - * - * @param array $atts The Shortcode attributes. - * @param string $content The ActivityPub post-content. - * @param string $tag The tag/name of the Shortcode. - * - * @return string - */ - public static function image( $atts, $content, $tag ) { - $item = self::get_item(); - - if ( ! $item ) { - return ''; - } - - $atts = shortcode_atts( - array( - 'type' => 'full', - ), - $atts, - $tag - ); - - $size = 'full'; - - if ( in_array( - $atts['type'], - array( 'thumbnail', 'medium', 'large', 'full' ), - true - ) ) { - $size = $atts['type']; - } - - $image = \get_the_post_thumbnail_url( $item->ID, $size ); - - if ( ! $image ) { - return ''; - } - - return \esc_url( $image ); - } - - /** - * Generates output for the 'ap_hashcats' Shortcode. - * - * @return string The post categories as hashtags. - */ - public static function hashcats() { - $item = self::get_item(); - - if ( ! $item ) { - return ''; - } - - $categories = \get_the_category( $item->ID ); - - if ( ! $categories ) { - return ''; - } - - $hash_tags = array(); - - foreach ( $categories as $category ) { - $hash_tags[] = \sprintf( - '', - \esc_url( \get_category_link( $category ) ), - esc_hashtag( $category->name ) - ); - } - - return \implode( ' ', $hash_tags ); - } - - /** - * Generates output for the 'ap_author' Shortcode. - * - * @return string The author name. - */ - public static function author() { - $item = self::get_item(); - - if ( ! $item ) { - return ''; - } - - $author_id = \get_post_field( 'post_author', $item->ID ); - $name = \get_the_author_meta( 'display_name', $author_id ); - - if ( ! $name ) { - return ''; - } - - return wp_strip_all_tags( $name ); - } - - /** - * Generates output for the 'ap_authorurl' Shortcode. - * - * @return string The author URL. - */ - public static function authorurl() { - $item = self::get_item(); - - if ( ! $item ) { - return ''; - } - - $author_id = \get_post_field( 'post_author', $item->ID ); - $url = \get_the_author_meta( 'user_url', $author_id ); - - if ( ! $url ) { - return ''; - } - - return \esc_url( $url ); - } - - /** - * Generates output for the 'ap_blogurl' Shortcode. - * - * @return string The site URL. - */ - public static function blogurl() { - return \esc_url( \get_bloginfo( 'url' ) ); - } - - /** - * Generates output for the 'ap_blogname' Shortcode. - * - * @return string - */ - public static function blogname() { - return \wp_strip_all_tags( \get_bloginfo( 'name' ) ); - } - - /** - * Generates output for the 'ap_blogdesc' Shortcode. - * - * @return string The site description. - */ - public static function blogdesc() { - return \wp_strip_all_tags( \get_bloginfo( 'description' ) ); - } - - /** - * Generates output for the 'ap_date' Shortcode. - * - * @return string The post date. - */ - public static function date() { - $item = self::get_item(); - - if ( ! $item ) { - return ''; - } - - $datetime = \get_post_datetime( $item ); - $dateformat = \get_option( 'date_format' ); - - $date = $datetime->format( $dateformat ); - - if ( ! $date ) { - return ''; - } - - return $date; - } - - /** - * Generates output for the 'ap_time' Shortcode. - * - * @return string The post time. - */ - public static function time() { - $item = self::get_item(); - - if ( ! $item ) { - return ''; - } - - $datetime = \get_post_datetime( $item ); - $timeformat = \get_option( 'time_format' ); - - $date = $datetime->format( $timeformat ); - - if ( ! $date ) { - return ''; - } - - return $date; - } - - /** - * Generates output for the 'ap_datetime' Shortcode. - * - * @return string The post date/time. - */ - public static function datetime() { - $item = self::get_item(); - - if ( ! $item ) { - return ''; - } - - $datetime = \get_post_datetime( $item ); - $dateformat = \get_option( 'date_format' ); - $timeformat = \get_option( 'time_format' ); - - $date = $datetime->format( $dateformat . ' @ ' . $timeformat ); - - if ( ! $date ) { - return ''; - } - - return $date; - } - - /** - * Get a WordPress item to federate. - * - * Checks if item (WP_Post) is "public", a supported post type - * and not password protected. - * - * @return null|\WP_Post The WordPress item. - */ - protected static function get_item() { - $post = \get_post(); - - if ( ! $post ) { - return null; - } - - if ( 'publish' !== \get_post_status( $post ) ) { - return null; - } - - if ( \post_password_required( $post ) ) { - return null; - } - - if ( ! \in_array( \get_post_type( $post ), \get_post_types_by_support( 'activitypub' ), true ) ) { - return null; - } - - return $post; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-signature.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-signature.php deleted file mode 100644 index 350c4d3b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-signature.php +++ /dev/null @@ -1,521 +0,0 @@ - 'sha512', - 'private_key_bits' => 2048, - 'private_key_type' => \OPENSSL_KEYTYPE_RSA, - ); - - $key = \openssl_pkey_new( $config ); - $priv_key = null; - $detail = array(); - if ( $key ) { - \openssl_pkey_export( $key, $priv_key ); - - $detail = \openssl_pkey_get_details( $key ); - } - - // Check if keys are valid. - if ( - empty( $priv_key ) || ! is_string( $priv_key ) || - ! isset( $detail['key'] ) || ! is_string( $detail['key'] ) - ) { - return array( - 'private_key' => null, - 'public_key' => null, - ); - } - - $key_pair = array( - 'private_key' => $priv_key, - 'public_key' => $detail['key'], - ); - - // Persist keys. - \add_option( $option_key, $key_pair ); - - return $key_pair; - } - - /** - * Return the option key for a given user. - * - * @param int $user_id The WordPress User ID. - * - * @return string The option key. - */ - protected static function get_signature_options_key_for( $user_id ) { - $id = $user_id; - - if ( $user_id > 0 ) { - $user = \get_userdata( $user_id ); - // Sanitize username because it could include spaces and special chars. - $id = sanitize_title( $user->user_login ); - } - - return 'activitypub_keypair_for_' . $id; - } - - /** - * Check if there is a legacy key pair - * - * @param int $user_id The WordPress User ID. - * - * @return array|bool The key pair or false. - */ - protected static function check_legacy_key_pair_for( $user_id ) { - switch ( $user_id ) { - case 0: - $public_key = \get_option( 'activitypub_blog_user_public_key' ); - $private_key = \get_option( 'activitypub_blog_user_private_key' ); - break; - case -1: - $public_key = \get_option( 'activitypub_application_user_public_key' ); - $private_key = \get_option( 'activitypub_application_user_private_key' ); - break; - default: - $public_key = \get_user_meta( $user_id, 'magic_sig_public_key', true ); - $private_key = \get_user_meta( $user_id, 'magic_sig_private_key', true ); - break; - } - - if ( ! empty( $public_key ) && is_string( $public_key ) && ! empty( $private_key ) && is_string( $private_key ) ) { - return array( - 'private_key' => $private_key, - 'public_key' => $public_key, - ); - } - - return false; - } - - /** - * Generates the Signature for an HTTP Request. - * - * @param int $user_id The WordPress User ID. - * @param string $http_method The HTTP method. - * @param string $url The URL to send the request to. - * @param string $date The date the request is sent. - * @param string $digest Optional. The digest of the request body. Default null. - * - * @return string The signature. - */ - public static function generate_signature( $user_id, $http_method, $url, $date, $digest = null ) { - $user = Actors::get_by_id( $user_id ); - $key = self::get_private_key_for( $user->get__id() ); - - $url_parts = \wp_parse_url( $url ); - - $host = $url_parts['host']; - $path = '/'; - - // Add path. - if ( ! empty( $url_parts['path'] ) ) { - $path = $url_parts['path']; - } - - // Add query. - if ( ! empty( $url_parts['query'] ) ) { - $path .= '?' . $url_parts['query']; - } - - $http_method = \strtolower( $http_method ); - - if ( ! empty( $digest ) ) { - $signed_string = "(request-target): $http_method $path\nhost: $host\ndate: $date\ndigest: $digest"; - } else { - $signed_string = "(request-target): $http_method $path\nhost: $host\ndate: $date"; - } - - $signature = null; - \openssl_sign( $signed_string, $signature, $key, \OPENSSL_ALGO_SHA256 ); - $signature = \base64_encode( $signature ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode - - $key_id = $user->get_id() . '#main-key'; - - if ( ! empty( $digest ) ) { - return \sprintf( 'keyId="%s",algorithm="rsa-sha256",headers="(request-target) host date digest",signature="%s"', $key_id, $signature ); - } else { - return \sprintf( 'keyId="%s",algorithm="rsa-sha256",headers="(request-target) host date",signature="%s"', $key_id, $signature ); - } - } - - /** - * Verifies the http signatures - * - * @param WP_REST_Request|array $request The request object or $_SERVER array. - * - * @return bool|WP_Error A boolean or WP_Error. - */ - public static function verify_http_signature( $request ) { - if ( is_object( $request ) ) { // REST Request object. - // Check if route starts with "index.php". - if ( str_starts_with( $request->get_route(), '/index.php' ) || ! rest_get_url_prefix() ) { - $route = $request->get_route(); - } else { - $route = '/' . rest_get_url_prefix() . '/' . ltrim( $request->get_route(), '/' ); - } - - // Fix route for subdirectory installs. - $path = \wp_parse_url( \get_home_url(), PHP_URL_PATH ); - - if ( \is_string( $path ) ) { - $path = trim( $path, '/' ); - } - - if ( $path ) { - $route = '/' . $path . $route; - } - - $headers = $request->get_headers(); - $headers['(request-target)'][0] = strtolower( $request->get_method() ) . ' ' . $route; - } else { - $request = self::format_server_request( $request ); - $headers = $request['headers']; // $_SERVER array - $headers['(request-target)'][0] = strtolower( $headers['request_method'][0] ) . ' ' . $headers['request_uri'][0]; - } - - if ( array_key_exists( 'signature', $headers ) ) { - $signature_block = self::parse_signature_header( $headers['signature'][0] ); - } elseif ( array_key_exists( 'authorization', $headers ) ) { - $signature_block = self::parse_signature_header( $headers['authorization'][0] ); - } else { - return new WP_Error( 'activitypub_signature', __( 'Incompatible request signature. keyId and signature are required', 'activitypub' ), array( 'status' => 401 ) ); - } - - $signed_headers = $signature_block['headers']; - - $signed_data = self::get_signed_data( $signed_headers, $signature_block, $headers ); - if ( ! $signed_data ) { - return new WP_Error( 'activitypub_signature', __( 'Signed request date outside acceptable time window', 'activitypub' ), array( 'status' => 401 ) ); - } - - $algorithm = self::get_signature_algorithm( $signature_block ); - if ( ! $algorithm ) { - return new WP_Error( 'activitypub_signature', __( 'Unsupported signature algorithm (only rsa-sha256 and hs2019 are supported)', 'activitypub' ), array( 'status' => 401 ) ); - } - - if ( \in_array( 'digest', $signed_headers, true ) && isset( $body ) ) { - if ( is_array( $headers['digest'] ) ) { - $headers['digest'] = $headers['digest'][0]; - } - $hashalg = 'sha256'; - $digest = explode( '=', $headers['digest'], 2 ); - if ( 'SHA-256' === $digest[0] ) { - $hashalg = 'sha256'; - } - if ( 'SHA-512' === $digest[0] ) { - $hashalg = 'sha512'; - } - - if ( \base64_encode( \hash( $hashalg, $body, true ) ) !== $digest[1] ) { // phpcs:ignore - return new WP_Error( 'activitypub_signature', __( 'Invalid Digest header', 'activitypub' ), array( 'status' => 401 ) ); - } - } - - $public_key = self::get_remote_key( $signature_block['keyId'] ); - - if ( \is_wp_error( $public_key ) ) { - return $public_key; - } - - $verified = \openssl_verify( $signed_data, $signature_block['signature'], $public_key, $algorithm ) > 0; - if ( ! $verified ) { - return new WP_Error( 'activitypub_signature', __( 'Invalid signature', 'activitypub' ), array( 'status' => 401 ) ); - } - return $verified; - } - - /** - * Get public key from key_id. - * - * @param string $key_id The URL to the public key. - * - * @return resource|WP_Error The public key resource or WP_Error. - */ - public static function get_remote_key( $key_id ) { - $actor = get_remote_metadata_by_actor( strip_fragment_from_url( $key_id ) ); - if ( \is_wp_error( $actor ) ) { - return new WP_Error( - 'activitypub_no_remote_profile_found', - __( 'No Profile found or Profile not accessible', 'activitypub' ), - array( 'status' => 401 ) - ); - } - - if ( isset( $actor['publicKey']['publicKeyPem'] ) ) { - $key_resource = \openssl_pkey_get_public( \rtrim( $actor['publicKey']['publicKeyPem'] ) ); - if ( $key_resource ) { - return $key_resource; - } - } - - return new WP_Error( - 'activitypub_no_remote_key_found', - __( 'No Public-Key found', 'activitypub' ), - array( 'status' => 401 ) - ); - } - - /** - * Gets the signature algorithm from the signature header. - * - * @param array $signature_block The signature block. - * - * @return string The signature algorithm. - */ - public static function get_signature_algorithm( $signature_block ) { - if ( $signature_block['algorithm'] ) { - switch ( $signature_block['algorithm'] ) { - case 'rsa-sha-512': - return 'sha512'; // hs2019 https://datatracker.ietf.org/doc/html/draft-cavage-http-signatures-12. - default: - return 'sha256'; - } - } - return false; - } - - /** - * Parses the Signature header. - * - * @param string $signature The signature header. - * - * @return array Signature parts. - */ - public static function parse_signature_header( $signature ) { - $parsed_header = array(); - $matches = array(); - - if ( \preg_match( '/keyId="(.*?)"/ism', $signature, $matches ) ) { - $parsed_header['keyId'] = trim( $matches[1] ); - } - if ( \preg_match( '/created=["|\']*([0-9]*)["|\']*/ism', $signature, $matches ) ) { - $parsed_header['(created)'] = trim( $matches[1] ); - } - if ( \preg_match( '/expires=["|\']*([0-9]*)["|\']*/ism', $signature, $matches ) ) { - $parsed_header['(expires)'] = trim( $matches[1] ); - } - if ( \preg_match( '/algorithm="(.*?)"/ism', $signature, $matches ) ) { - $parsed_header['algorithm'] = trim( $matches[1] ); - } - if ( \preg_match( '/headers="(.*?)"/ism', $signature, $matches ) ) { - $parsed_header['headers'] = \explode( ' ', trim( $matches[1] ) ); - } - if ( \preg_match( '/signature="(.*?)"/ism', $signature, $matches ) ) { - $parsed_header['signature'] = \base64_decode( preg_replace( '/\s+/', '', trim( $matches[1] ) ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode - } - - if ( empty( $parsed_header['headers'] ) ) { - $parsed_header['headers'] = array( 'date' ); - } - - return $parsed_header; - } - - /** - * Gets the header data from the included pseudo headers. - * - * @param array $signed_headers The signed headers. - * @param array $signature_block The signature block. - * @param array $headers The HTTP headers. - * - * @return string signed headers for comparison - */ - public static function get_signed_data( $signed_headers, $signature_block, $headers ) { - $signed_data = ''; - - // This also verifies time-based values by returning false if any of these are out of range. - foreach ( $signed_headers as $header ) { - if ( 'host' === $header ) { - if ( isset( $headers['x_original_host'] ) ) { - $signed_data .= $header . ': ' . $headers['x_original_host'][0] . "\n"; - continue; - } - } - if ( '(request-target)' === $header ) { - $signed_data .= $header . ': ' . $headers[ $header ][0] . "\n"; - continue; - } - if ( str_contains( $header, '-' ) ) { - $signed_data .= $header . ': ' . $headers[ str_replace( '-', '_', $header ) ][0] . "\n"; - continue; - } - if ( '(created)' === $header ) { - if ( ! empty( $signature_block['(created)'] ) && \intval( $signature_block['(created)'] ) > \time() ) { - // Created in the future. - return false; - } - - if ( ! array_key_exists( '(created)', $headers ) ) { - $signed_data .= $header . ': ' . $signature_block['(created)'] . "\n"; - continue; - } - } - if ( '(expires)' === $header ) { - if ( ! empty( $signature_block['(expires)'] ) && \intval( $signature_block['(expires)'] ) < \time() ) { - // Expired in the past. - return false; - } - - if ( ! array_key_exists( '(expires)', $headers ) ) { - $signed_data .= $header . ': ' . $signature_block['(expires)'] . "\n"; - continue; - } - } - if ( 'date' === $header ) { - if ( empty( $headers[ $header ][0] ) ) { - continue; - } - - // Allow a bit of leeway for misconfigured clocks. - $d = new DateTime( $headers[ $header ][0] ); - $d->setTimeZone( new DateTimeZone( 'UTC' ) ); - $c = $d->format( 'U' ); - - $dplus = time() + ( 3 * HOUR_IN_SECONDS ); - $dminus = time() - ( 3 * HOUR_IN_SECONDS ); - - if ( $c > $dplus || $c < $dminus ) { - // Time out of range. - return false; - } - } - - if ( ! empty( $headers[ $header ][0] ) ) { - $signed_data .= $header . ': ' . $headers[ $header ][0] . "\n"; - } - } - return \rtrim( $signed_data, "\n" ); - } - - /** - * Generates the digest for an HTTP Request. - * - * @param string $body The body of the request. - * - * @return string The digest. - */ - public static function generate_digest( $body ) { - $digest = \base64_encode( \hash( 'sha256', $body, true ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode - return "SHA-256=$digest"; - } - - /** - * Formats the $_SERVER to resemble the WP_REST_REQUEST array, - * for use with verify_http_signature(). - * - * @param array $server The $_SERVER array. - * - * @return array $request The formatted request array. - */ - public static function format_server_request( $server ) { - $request = array(); - foreach ( $server as $param_key => $param_val ) { - $req_param = strtolower( $param_key ); - if ( 'REQUEST_URI' === $req_param ) { - $request['headers']['route'][] = $param_val; - } else { - $header_key = str_replace( - 'http_', - '', - $req_param - ); - $request['headers'][ $header_key ][] = \wp_unslash( $param_val ); - } - } - return $request; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-webfinger.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-webfinger.php deleted file mode 100644 index b53aa285..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/class-webfinger.php +++ /dev/null @@ -1,300 +0,0 @@ -get_webfinger(); - } - - /** - * Resolve a WebFinger resource. - * - * @param string $uri The WebFinger Resource. - * - * @return string|WP_Error The URL or WP_Error. - */ - public static function resolve( $uri ) { - $data = self::get_data( $uri ); - - if ( \is_wp_error( $data ) ) { - return $data; - } - - if ( ! is_array( $data ) || empty( $data['links'] ) ) { - return new WP_Error( - 'webfinger_missing_links', - __( 'No valid Link elements found.', 'activitypub' ), - array( - 'status' => 400, - 'data' => $data, - ) - ); - } - - foreach ( $data['links'] as $link ) { - if ( - 'self' === $link['rel'] && - isset( $link['type'] ) && - ( - 'application/activity+json' === $link['type'] || - 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"' === $link['type'] - ) - ) { - return $link['href']; - } - } - - return new WP_Error( - 'webfinger_url_no_activitypub', - __( 'The Site supports WebFinger but not ActivityPub', 'activitypub' ), - array( - 'status' => 400, - 'data' => $data, - ) - ); - } - - /** - * Transform a URI to an acct @. - * - * @see https://swicg.github.io/activitypub-webfinger/#reverse-discovery - * - * @param string $uri The URI (acct:, mailto:, http:, https:). - * - * @return string|WP_Error Error or acct URI. - */ - public static function uri_to_acct( $uri ) { - $data = self::get_data( $uri ); - - if ( is_wp_error( $data ) ) { - return $data; - } - - // Check if subject is an acct URI. - if ( - isset( $data['subject'] ) && - \str_starts_with( $data['subject'], 'acct:' ) - ) { - return $data['subject']; - } - - // Search for an acct URI in the aliases. - if ( isset( $data['aliases'] ) ) { - foreach ( $data['aliases'] as $alias ) { - if ( \str_starts_with( $alias, 'acct:' ) ) { - return $alias; - } - } - } - - return new WP_Error( - 'webfinger_url_no_acct', - __( 'No acct URI found.', 'activitypub' ), - array( - 'status' => 400, - 'data' => $data, - ) - ); - } - - /** - * Convert a URI string to an identifier and its host. - * Automatically adds acct: if it's missing. - * - * @param string $url The URI (acct:, mailto:, http:, https:). - * - * @return WP_Error|array Error reaction or array with identifier and host as values. - */ - public static function get_identifier_and_host( $url ) { - if ( ! $url ) { - return new WP_Error( - 'webfinger_invalid_identifier', - __( 'Invalid Identifier', 'activitypub' ), - array( - 'status' => 400, - 'data' => $url, - ) - ); - } - - // Remove leading @. - $url = ltrim( $url, '@' ); - - if ( ! preg_match( '/^([a-zA-Z+]+):/', $url, $match ) ) { - $identifier = 'acct:' . $url; - $scheme = 'acct'; - } else { - $identifier = $url; - $scheme = $match[1]; - } - - $host = null; - - switch ( $scheme ) { - case 'acct': - case 'mailto': - case 'xmpp': - if ( strpos( $identifier, '@' ) !== false ) { - $host = substr( $identifier, strpos( $identifier, '@' ) + 1 ); - } - break; - default: - $host = wp_parse_url( $identifier, PHP_URL_HOST ); - break; - } - - if ( empty( $host ) ) { - return new WP_Error( - 'webfinger_invalid_identifier', - __( 'Invalid Identifier', 'activitypub' ), - array( - 'status' => 400, - 'data' => $url, - ) - ); - } - - return array( $identifier, $host ); - } - - /** - * Get the WebFinger data for a given URI. - * - * @param string $uri The Identifier: @ or URI. - * - * @return WP_Error|array Error reaction or array with identifier and host as values. - */ - public static function get_data( $uri ) { - $identifier_and_host = self::get_identifier_and_host( $uri ); - - if ( is_wp_error( $identifier_and_host ) ) { - return $identifier_and_host; - } - - $transient_key = self::generate_cache_key( $uri ); - - list( $identifier, $host ) = $identifier_and_host; - - $data = \get_transient( $transient_key ); - if ( $data ) { - return $data; - } - - $webfinger_url = sprintf( - 'https://%s/.well-known/webfinger?resource=%s', - $host, - rawurlencode( $identifier ) - ); - - $response = wp_safe_remote_get( - $webfinger_url, - array( - 'headers' => array( 'Accept' => 'application/jrd+json' ), - ) - ); - - if ( is_wp_error( $response ) ) { - return new WP_Error( - 'webfinger_url_not_accessible', - __( 'The WebFinger Resource is not accessible.', 'activitypub' ), - array( - 'status' => 400, - 'data' => $webfinger_url, - ) - ); - } - - $body = wp_remote_retrieve_body( $response ); - $data = json_decode( $body, true ); - - \set_transient( $transient_key, $data, WEEK_IN_SECONDS ); - - return $data; - } - - /** - * Get the Remote-Follow endpoint for a given URI. - * - * @param string $uri The WebFinger Resource URI. - * - * @return string|WP_Error Error or the Remote-Follow endpoint URI. - */ - public static function get_remote_follow_endpoint( $uri ) { - $data = self::get_data( $uri ); - - if ( is_wp_error( $data ) ) { - return $data; - } - - if ( empty( $data['links'] ) ) { - return new WP_Error( - 'webfinger_missing_links', - __( 'No valid Link elements found.', 'activitypub' ), - array( - 'status' => 400, - 'data' => $data, - ) - ); - } - - foreach ( $data['links'] as $link ) { - if ( 'http://ostatus.org/schema/1.0/subscribe' === $link['rel'] ) { - return $link['template']; - } - } - - return new WP_Error( - 'webfinger_missing_remote_follow_endpoint', - __( 'No valid Remote-Follow endpoint found.', 'activitypub' ), - array( - 'status' => 400, - 'data' => $data, - ) - ); - } - - /** - * Generate a cache key for a given URI. - * - * @param string $uri A WebFinger Resource URI. - * - * @return string The cache key. - */ - public static function generate_cache_key( $uri ) { - $uri = ltrim( $uri, '@' ); - - if ( filter_var( $uri, FILTER_VALIDATE_EMAIL ) ) { - $uri = 'acct:' . $uri; - } - - return 'webfinger_' . md5( $uri ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-actors.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-actors.php deleted file mode 100644 index d4dbd6ec..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-actors.php +++ /dev/null @@ -1,378 +0,0 @@ - 404 ) - ); - } - - switch ( $user_id ) { - case self::BLOG_USER_ID: - return new Blog(); - case self::APPLICATION_USER_ID: - return new Application(); - default: - return User::from_wp_user( $user_id ); - } - } - - /** - * Get the Actor by username. - * - * @param string $username Name of the Actor. - * - * @return User|Blog|Application|WP_Error The Actor or WP_Error if user not found. - */ - public static function get_by_username( $username ) { - /** - * Filter the username before we do anything else. - * - * @param null $pre The pre-existing value. - * @param string $username The username. - */ - $pre = apply_filters( 'activitypub_pre_get_by_username', null, $username ); - if ( null !== $pre ) { - return $pre; - } - - // Check for blog user. - if ( Blog::get_default_username() === $username ) { - return new Blog(); - } - - if ( get_option( 'activitypub_blog_identifier' ) === $username ) { - return new Blog(); - } - - // Check for application user. - if ( 'application' === $username ) { - return new Application(); - } - - // Check for 'activitypub_username' meta. - $user = new WP_User_Query( - array( - 'count_total' => false, - 'number' => 1, - 'hide_empty' => true, - 'fields' => 'ID', - // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query - 'meta_query' => array( - 'relation' => 'OR', - array( - 'key' => '_activitypub_user_identifier', - 'value' => $username, - 'compare' => 'LIKE', - ), - ), - ) - ); - - if ( $user->results ) { - $actor = self::get_by_id( $user->results[0] ); - if ( ! \is_wp_error( $actor ) ) { - return $actor; - } - } - - $username = str_replace( array( '*', '%' ), '', $username ); - - // Check for login or nicename. - $user = new WP_User_Query( - array( - 'count_total' => false, - 'search' => $username, - 'search_columns' => array( 'user_login', 'user_nicename' ), - 'number' => 1, - 'hide_empty' => true, - 'fields' => 'ID', - ) - ); - - if ( $user->results ) { - $actor = self::get_by_id( $user->results[0] ); - if ( ! \is_wp_error( $actor ) ) { - return $actor; - } - } - - return new WP_Error( - 'activitypub_user_not_found', - \__( 'Actor not found', 'activitypub' ), - array( 'status' => 404 ) - ); - } - - /** - * Get the Actor by resource. - * - * @param string $uri The Actor resource. - * - * @return User|Blog|Application|WP_Error The Actor or WP_Error if user not found. - */ - public static function get_by_resource( $uri ) { - $uri = object_to_uri( $uri ); - - if ( ! $uri ) { - return new WP_Error( - 'activitypub_no_uri', - \__( 'No URI provided', 'activitypub' ), - array( 'status' => 404 ) - ); - } - - $scheme = 'acct'; - $match = array(); - // Try to extract the scheme and the host. - if ( preg_match( '/^([a-zA-Z^:]+):(.*)$/i', $uri, $match ) ) { - // Extract the scheme. - $scheme = \esc_attr( $match[1] ); - } - - // @todo: handle old domain URIs here before we serve a new domain below when we shouldn't. - // Although maybe passing through to ::get_by_username() is enough? - - switch ( $scheme ) { - // Check for http(s) URIs. - case 'http': - case 'https': - $resource_path = \wp_parse_url( $uri, PHP_URL_PATH ); - - if ( $resource_path ) { - $blog_path = \wp_parse_url( \home_url(), PHP_URL_PATH ); - - if ( $blog_path ) { - $resource_path = \str_replace( $blog_path, '', $resource_path ); - } - - $resource_path = \trim( $resource_path, '/' ); - - // Check for http(s)://blog.example.com/@username. - if ( str_starts_with( $resource_path, '@' ) ) { - $identifier = \str_replace( '@', '', $resource_path ); - $identifier = \trim( $identifier, '/' ); - - return self::get_by_username( $identifier ); - } - } - - // Check for http(s)://blog.example.com/author/username. - $user_id = url_to_authorid( $uri ); - - if ( \is_int( $user_id ) ) { - return self::get_by_id( $user_id ); - } - - // Check for http(s)://blog.example.com/. - $normalized_uri = normalize_url( $uri ); - - if ( - normalize_url( site_url() ) === $normalized_uri || - normalize_url( home_url() ) === $normalized_uri - ) { - return self::get_by_id( self::BLOG_USER_ID ); - } - - return new WP_Error( - 'activitypub_no_user_found', - \__( 'Actor not found', 'activitypub' ), - array( 'status' => 404 ) - ); - // Check for acct URIs. - case 'acct': - $uri = \str_replace( 'acct:', '', $uri ); - $identifier = \substr( $uri, 0, \strrpos( $uri, '@' ) ); - $host = normalize_host( \substr( \strrchr( $uri, '@' ), 1 ) ); - $blog_host = normalize_host( \wp_parse_url( \home_url( '/' ), \PHP_URL_HOST ) ); - - if ( $blog_host !== $host && get_option( 'activitypub_old_host' ) !== $host ) { - return new WP_Error( - 'activitypub_wrong_host', - \__( 'Resource host does not match blog host', 'activitypub' ), - array( 'status' => 404 ) - ); - } - - // Prepare wildcards https://github.com/mastodon/mastodon/issues/22213. - if ( in_array( $identifier, array( '_', '*', '' ), true ) ) { - return self::get_by_id( self::BLOG_USER_ID ); - } - - return self::get_by_username( $identifier ); - default: - return new WP_Error( - 'activitypub_wrong_scheme', - \__( 'Wrong scheme', 'activitypub' ), - array( 'status' => 404 ) - ); - } - } - - /** - * Get the Actor by resource. - * - * @param string $id The Actor resource. - * - * @return User|Blog|Application|WP_Error The Actor or WP_Error if user not found. - */ - public static function get_by_various( $id ) { - $user = null; - - if ( is_numeric( $id ) ) { - $user = self::get_by_id( $id ); - } elseif ( - // Is URL. - filter_var( $id, FILTER_VALIDATE_URL ) || - // Is acct. - str_starts_with( $id, 'acct:' ) || - // Is email. - filter_var( $id, FILTER_VALIDATE_EMAIL ) - ) { - $user = self::get_by_resource( $id ); - } else { - $user = self::get_by_username( $id ); - } - - return $user; - } - - /** - * Get the Actor collection. - * - * @return array The Actor collection. - */ - public static function get_collection() { - if ( is_user_type_disabled( 'user' ) ) { - return array(); - } - - $users = \get_users( - array( - 'capability__in' => array( 'activitypub' ), - ) - ); - - $return = array(); - - foreach ( $users as $user ) { - $actor = User::from_wp_user( $user->ID ); - - if ( \is_wp_error( $actor ) ) { - continue; - } - - $return[] = $actor; - } - - return $return; - } - - /** - * Get all active Actors including the Blog Actor. - * - * @return array The actor collection. - */ - public static function get_all() { - $return = array(); - - if ( ! is_user_type_disabled( 'user' ) ) { - $users = \get_users( - array( - 'capability__in' => array( 'activitypub' ), - ) - ); - - foreach ( $users as $user ) { - $actor = User::from_wp_user( $user->ID ); - - if ( \is_wp_error( $actor ) ) { - continue; - } - - $return[] = $actor; - } - } - - // Also include the blog actor if active. - if ( ! is_user_type_disabled( 'blog' ) ) { - $blog_actor = self::get_by_id( self::BLOG_USER_ID ); - if ( ! \is_wp_error( $blog_actor ) ) { - $return[] = $blog_actor; - } - } - - return $return; - } - - /** - * Returns the actor type based on the user ID. - * - * @param int $user_id The user ID to check. - * @return string The user type. - */ - public static function get_type_by_id( $user_id ) { - $user_id = (int) $user_id; - - if ( self::APPLICATION_USER_ID === $user_id ) { - return 'application'; - } - - if ( self::BLOG_USER_ID === $user_id ) { - return 'blog'; - } - - return 'user'; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-extra-fields.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-extra-fields.php deleted file mode 100644 index 417f24ea..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-extra-fields.php +++ /dev/null @@ -1,300 +0,0 @@ - $post_type, - 'nopaging' => true, - 'orderby' => 'menu_order', - 'order' => 'ASC', - ); - if ( ! $is_blog ) { - $args['author'] = $user_id; - } - - $query = new \WP_Query( $args ); - $fields = $query->posts ?? array(); - - /** - * Filters the extra fields for an ActivityPub actor. - * - * This filter allows developers to modify or add custom fields to an actor's - * profile. - * - * @param \WP_Post[] $fields Array of WP_Post objects representing the extra fields. - * @param int $user_id The ID of the user whose fields are being retrieved. - */ - return apply_filters( 'activitypub_get_actor_extra_fields', $fields, $user_id ); - } - - /** - * Get formatted content for an extra field. - * - * @param \WP_Post $post The post. - * - * @return string The formatted content. - */ - public static function get_formatted_content( $post ) { - $content = \get_the_content( null, false, $post ); - $content = Link::the_content( $content ); - if ( site_supports_blocks() ) { - $content = \do_blocks( $content ); - } - $content = \wptexturize( $content ); - $content = \wp_filter_content_tags( $content ); - - // Replace script and style elements. - $content = \preg_replace( '@<(script|style)[^>]*?>.*?@si', '', $content ); - $content = \strip_shortcodes( $content ); - $content = \trim( \preg_replace( '/[\n\r\t]/', '', $content ) ); - - /** - * Filters the content of an extra field. - * - * @param string $content The content. - * @param \WP_Post $post The post. - */ - return \apply_filters( 'activitypub_extra_field_content', $content, $post ); - } - - /** - * Transforms the Extra Fields (Custom Post Types) to ActivityPub Actor-Attachments. - * - * @param \WP_Post[] $fields The extra fields. - * - * @return array ActivityPub attachments. - */ - public static function fields_to_attachments( $fields ) { - $attachments = array(); - \add_filter( 'activitypub_link_rel', array( self::class, 'add_rel_me' ) ); - - foreach ( $fields as $post ) { - $content = self::get_formatted_content( $post ); - $attachments[] = array( - 'type' => 'PropertyValue', - 'name' => \get_the_title( $post ), - 'value' => \html_entity_decode( - $content, - \ENT_QUOTES, - 'UTF-8' - ), - ); - - $attachment = false; - - // Add support for FEP-fb2a, for more information see FEDERATION.md. - $link_content = \trim( \strip_tags( $content, '' ) ); - if ( - \stripos( $link_content, '', \strlen( $link_content ) - 4 ) !== false && - \class_exists( '\WP_HTML_Tag_Processor' ) - ) { - $tags = new \WP_HTML_Tag_Processor( $link_content ); - $tags->next_tag( 'A' ); - - if ( 'A' === $tags->get_tag() ) { - $attachment = array( - 'type' => 'Link', - 'name' => \get_the_title( $post ), - 'href' => \esc_url( $tags->get_attribute( 'href' ) ), - ); - - $rel = $tags->get_attribute( 'rel' ); - - if ( $rel && \is_string( $rel ) ) { - $attachment['rel'] = \explode( ' ', $rel ); - } - } - } - - if ( ! $attachment ) { - $attachment = array( - 'type' => 'Note', - 'name' => \get_the_title( $post ), - 'content' => \html_entity_decode( - $content, - \ENT_QUOTES, - 'UTF-8' - ), - ); - } - - $attachments[] = $attachment; - } - - \remove_filter( 'activitypub_link_rel', array( self::class, 'add_rel_me' ) ); - - return $attachments; - } - - /** - * Check if a post type is an extra fields post type. - * - * @param string $post_type The post type. - * - * @return bool True if the post type is an extra fields post type, otherwise false. - */ - public static function is_extra_fields_post_type( $post_type ) { - return \in_array( $post_type, array( self::USER_POST_TYPE, self::BLOG_POST_TYPE ), true ); - } - - /** - * Check if a post type is the `ap_extrafield` post type. - * - * @param string $post_type The post type. - * - * @return bool True if the post type is `ap_extrafield`, otherwise false. - */ - public static function is_extra_field_post_type( $post_type ) { - return self::USER_POST_TYPE === $post_type; - } - - /** - * Check if a post type is the `ap_extrafield_blog` post type. - * - * @param string $post_type The post type. - * - * @return bool True if the post type is `ap_extrafield_blog`, otherwise false. - */ - public static function is_extra_field_blog_post_type( $post_type ) { - return self::BLOG_POST_TYPE === $post_type; - } - - /** - * Add default extra fields to an actor. - * - * @param array $extra_fields The extra fields. - * @param int $user_id The User-ID. - * - * @return array The extra fields. - */ - public static function default_actor_extra_fields( $extra_fields, $user_id ) { - // We'll only take action when there are none yet. - if ( ! empty( $extra_fields ) ) { - return $extra_fields; - } - - $is_blog = self::is_blog( $user_id ); - $already_migrated = $is_blog - ? \get_option( 'activitypub_default_extra_fields' ) - : \get_user_meta( $user_id, 'activitypub_default_extra_fields', true ); - - if ( $already_migrated ) { - return $extra_fields; - } - - \add_filter( - 'activitypub_link_rel', - function ( $rel ) { - $rel .= ' me'; - - return $rel; - } - ); - - $defaults = array( - \__( 'Blog', 'activitypub' ) => \home_url( '/' ), - ); - - if ( ! $is_blog ) { - $author_url = \get_the_author_meta( 'user_url', $user_id ); - $author_posts_url = \get_author_posts_url( $user_id ); - - $defaults[ \__( 'Profile', 'activitypub' ) ] = $author_posts_url; - if ( $author_url !== $author_posts_url ) { - $defaults[ \__( 'Homepage', 'activitypub' ) ] = $author_url; - } - } - - $post_type = $is_blog ? self::BLOG_POST_TYPE : self::USER_POST_TYPE; - $menu_order = 10; - - foreach ( $defaults as $title => $url ) { - if ( ! $url ) { - continue; - } - - $extra_field = array( - 'post_type' => $post_type, - 'post_title' => $title, - 'post_status' => 'publish', - 'post_author' => $user_id, - 'post_content' => self::make_paragraph_block( Link::the_content( $url ) ), - 'comment_status' => 'closed', - 'menu_order' => $menu_order, - ); - - $menu_order += 10; - $extra_field_id = wp_insert_post( $extra_field ); - $extra_fields[] = get_post( $extra_field_id ); - } - - $is_blog - ? \update_option( 'activitypub_default_extra_fields', true ) - : \update_user_meta( $user_id, 'activitypub_default_extra_fields', true ); - - return $extra_fields; - } - - /** - * Create a paragraph block. - * - * @param string $content The content. - * - * @return string The paragraph block. - */ - public static function make_paragraph_block( $content ) { - if ( ! site_supports_blocks() ) { - return $content; - } - return '

' . $content . '

'; - } - - /** - * Add the 'me' rel to the link. - * - * @param string $rel The rel attribute. - * @return string The modified rel attribute. - */ - public static function add_rel_me( $rel ) { - return $rel . ' me'; - } - - /** - * Checks if the user is the blog user. - * - * @param int $user_id The user ID. - * @return bool True if the user is the blog user, otherwise false. - */ - private static function is_blog( $user_id ) { - return Actors::BLOG_USER_ID === $user_id; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-followers.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-followers.php deleted file mode 100644 index 24be3507..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-followers.php +++ /dev/null @@ -1,482 +0,0 @@ - 400 ) ); - } - - $follower = new Follower(); - $follower->from_array( $meta ); - - $id = $follower->upsert(); - - if ( is_wp_error( $id ) ) { - return $id; - } - - $post_meta = get_post_meta( $id, '_activitypub_user_id', false ); - - // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict - if ( is_array( $post_meta ) && ! in_array( $user_id, $post_meta ) ) { - add_post_meta( $id, '_activitypub_user_id', $user_id ); - wp_cache_delete( sprintf( self::CACHE_KEY_INBOXES, $user_id ), 'activitypub' ); - } - - return $follower; - } - - /** - * Remove a Follower. - * - * @param int $user_id The ID of the WordPress User. - * @param string $actor The Actor URL. - * - * @return bool True on success, false on failure. - */ - public static function remove_follower( $user_id, $actor ) { - wp_cache_delete( sprintf( self::CACHE_KEY_INBOXES, $user_id ), 'activitypub' ); - - $follower = self::get_follower( $user_id, $actor ); - - if ( ! $follower ) { - return false; - } - - /** - * Fires before a Follower is removed. - * - * @param Follower $follower The Follower object. - * @param int $user_id The ID of the WordPress User. - * @param string $actor The Actor URL. - */ - do_action( 'activitypub_followers_pre_remove_follower', $follower, $user_id, $actor ); - - return delete_post_meta( $follower->get__id(), '_activitypub_user_id', $user_id ); - } - - /** - * Get a Follower. - * - * @param int $user_id The ID of the WordPress User. - * @param string $actor The Actor URL. - * - * @return Follower|false|null The Follower object or null - */ - public static function get_follower( $user_id, $actor ) { - global $wpdb; - - // phpcs:ignore WordPress.DB.DirectDatabaseQuery - $post_id = $wpdb->get_var( - $wpdb->prepare( - "SELECT DISTINCT p.ID FROM $wpdb->posts p INNER JOIN $wpdb->postmeta pm ON p.ID = pm.post_id WHERE p.post_type = %s AND pm.meta_key = '_activitypub_user_id' AND pm.meta_value = %d AND p.guid = %s", - array( - esc_sql( self::POST_TYPE ), - esc_sql( $user_id ), - esc_sql( $actor ), - ) - ) - ); - - if ( $post_id ) { - $post = get_post( $post_id ); - return Follower::init_from_cpt( $post ); - } - - return null; - } - - /** - * Get a Follower by Actor independent of the User. - * - * @param string $actor The Actor URL. - * - * @return Follower|false|null The Follower object or false on failure. - */ - public static function get_follower_by_actor( $actor ) { - global $wpdb; - - // phpcs:ignore WordPress.DB.DirectDatabaseQuery - $post_id = $wpdb->get_var( - $wpdb->prepare( - "SELECT ID FROM $wpdb->posts WHERE guid=%s", - esc_sql( $actor ) - ) - ); - - if ( $post_id ) { - $post = get_post( $post_id ); - return Follower::init_from_cpt( $post ); - } - - return null; - } - - /** - * Get the Followers of a given user. - * - * @param int $user_id The ID of the WordPress User. - * @param int $number Maximum number of results to return. - * @param int $page Page number. - * @param array $args The WP_Query arguments. - * @return Follower[] List of `Follower` objects. - */ - public static function get_followers( $user_id, $number = -1, $page = null, $args = array() ) { - $data = self::get_followers_with_count( $user_id, $number, $page, $args ); - return $data['followers']; - } - - /** - * Get the Followers of a given user, along with a total count for pagination purposes. - * - * @param int $user_id The ID of the WordPress User. - * @param int $number Maximum number of results to return. - * @param int $page Page number. - * @param array $args The WP_Query arguments. - * - * @return array { - * Data about the followers. - * - * @type Follower[] $followers List of `Follower` objects. - * @type int $total Total number of followers. - * } - */ - public static function get_followers_with_count( $user_id, $number = -1, $page = null, $args = array() ) { - $defaults = array( - 'post_type' => self::POST_TYPE, - 'posts_per_page' => $number, - 'paged' => $page, - 'orderby' => 'ID', - 'order' => 'DESC', - // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query - 'meta_query' => array( - array( - 'key' => '_activitypub_user_id', - 'value' => $user_id, - ), - ), - ); - - $args = wp_parse_args( $args, $defaults ); - $query = new WP_Query( $args ); - $total = $query->found_posts; - $followers = array_map( array( Follower::class, 'init_from_cpt' ), $query->get_posts() ); - $followers = array_filter( $followers ); - - return compact( 'followers', 'total' ); - } - - /** - * Get all Followers. - * - * @return Follower[] The Term list of Followers. - */ - public static function get_all_followers() { - $args = array( - 'nopaging' => true, - // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query - 'meta_query' => array( - 'relation' => 'AND', - array( - 'key' => '_activitypub_inbox', - 'compare' => 'EXISTS', - ), - array( - 'key' => '_activitypub_actor_json', - 'compare' => 'EXISTS', - ), - ), - ); - return self::get_followers( null, null, null, $args ); - } - - /** - * Count the total number of followers - * - * @param int $user_id The ID of the WordPress User. - * - * @return int The number of Followers - */ - public static function count_followers( $user_id ) { - $query = new WP_Query( - array( - 'post_type' => self::POST_TYPE, - 'fields' => 'ids', - // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query - 'meta_query' => array( - 'relation' => 'AND', - array( - 'key' => '_activitypub_user_id', - 'value' => $user_id, - ), - array( - 'key' => '_activitypub_inbox', - 'compare' => 'EXISTS', - ), - array( - 'key' => '_activitypub_actor_json', - 'compare' => 'EXISTS', - ), - ), - ) - ); - - return $query->found_posts; - } - - /** - * Returns all Inboxes for an Actor's Followers. - * - * @param int $user_id The ID of the WordPress User. - * - * @return array The list of Inboxes. - */ - public static function get_inboxes( $user_id ) { - $cache_key = sprintf( self::CACHE_KEY_INBOXES, $user_id ); - $inboxes = wp_cache_get( $cache_key, 'activitypub' ); - - if ( $inboxes ) { - return $inboxes; - } - - // Get all Followers of an ID of the WordPress User. - $posts = new WP_Query( - array( - 'nopaging' => true, - 'post_type' => self::POST_TYPE, - 'fields' => 'ids', - // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query - 'meta_query' => array( - 'relation' => 'AND', - array( - 'key' => '_activitypub_inbox', - 'compare' => 'EXISTS', - ), - array( - 'key' => '_activitypub_user_id', - 'value' => $user_id, - ), - array( - 'key' => '_activitypub_inbox', - 'value' => '', - 'compare' => '!=', - ), - ), - ) - ); - - $posts = $posts->get_posts(); - - if ( ! $posts ) { - return array(); - } - - global $wpdb; - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery - $results = $wpdb->get_col( - $wpdb->prepare( - "SELECT DISTINCT meta_value FROM {$wpdb->postmeta} - WHERE post_id IN (" . implode( ', ', array_fill( 0, count( $posts ), '%d' ) ) . ") - AND meta_key = '_activitypub_inbox' - AND meta_value IS NOT NULL", - $posts - ) - ); - - $inboxes = array_filter( $results ); - wp_cache_set( $cache_key, $inboxes, 'activitypub' ); - - return $inboxes; - } - - /** - * Get all Inboxes for a given Activity. - * - * @param string $json The ActivityPub Activity JSON. - * @param int $actor_id The WordPress Actor ID. - * @param int $batch_size Optional. The batch size. Default 50. - * @param int $offset Optional. The offset. Default 0. - * - * @return array The list of Inboxes. - */ - public static function get_inboxes_for_activity( $json, $actor_id, $batch_size = 50, $offset = 0 ) { - $inboxes = self::get_inboxes( $actor_id ); - - if ( self::maybe_add_inboxes_of_blog_user( $json, $actor_id ) ) { - $inboxes = array_fill_keys( $inboxes, 1 ); - foreach ( self::get_inboxes( Actors::BLOG_USER_ID ) as $inbox ) { - $inboxes[ $inbox ] = 1; - } - $inboxes = array_keys( $inboxes ); - } - - return array_slice( $inboxes, $offset, $batch_size ); - } - - /** - * Maybe add Inboxes of the Blog User. - * - * @param string $json The ActivityPub Activity JSON. - * @param int $actor_id The WordPress Actor ID. - * @return bool True if the Inboxes of the Blog User should be added, false otherwise. - */ - public static function maybe_add_inboxes_of_blog_user( $json, $actor_id ) { - // Only if we're in both Blog and User modes. - if ( ACTIVITYPUB_ACTOR_AND_BLOG_MODE !== \get_option( 'activitypub_actor_mode', ACTIVITYPUB_ACTOR_MODE ) ) { - return false; - } - // Only if this isn't the Blog Actor. - if ( Actors::BLOG_USER_ID === $actor_id ) { - return false; - } - - $activity = json_decode( $json, true ); - // Only if this is an Update or Delete. Create handles its own "Announce" in dual user mode. - if ( ! in_array( $activity['type'] ?? null, array( 'Update', 'Delete' ), true ) ) { - return false; - } - - return true; - } - - /** - * Get all Followers that have not been updated for a given time. - * - * @param int $number Optional. Limits the result. Default 50. - * @param int $older_than Optional. The time in seconds. Default 86400 (1 day). - * - * @return Follower[] The Term list of Followers. - */ - public static function get_outdated_followers( $number = 50, $older_than = 86400 ) { - $args = array( - 'post_type' => self::POST_TYPE, - 'posts_per_page' => $number, - 'orderby' => 'modified', - 'order' => 'ASC', - 'post_status' => 'any', // 'any' includes 'trash'. - 'date_query' => array( - array( - 'column' => 'post_modified_gmt', - 'before' => gmdate( 'Y-m-d', \time() - $older_than ), - ), - ), - ); - - $posts = new WP_Query( $args ); - $items = array_map( array( Follower::class, 'init_from_cpt' ), $posts->get_posts() ); - - return array_filter( $items ); - } - - /** - * Get all Followers that had errors. - * - * @param int $number Optional. The number of Followers to return. Default 20. - * - * @return Follower[] The Term list of Followers. - */ - public static function get_faulty_followers( $number = 20 ) { - $args = array( - 'post_type' => self::POST_TYPE, - 'posts_per_page' => $number, - // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query - 'meta_query' => array( - 'relation' => 'OR', - array( - 'key' => '_activitypub_errors', - 'compare' => 'EXISTS', - ), - array( - 'key' => '_activitypub_inbox', - 'compare' => 'NOT EXISTS', - ), - array( - 'key' => '_activitypub_actor_json', - 'compare' => 'NOT EXISTS', - ), - array( - 'key' => '_activitypub_inbox', - 'value' => '', - 'compare' => '=', - ), - array( - 'key' => '_activitypub_actor_json', - 'value' => '', - 'compare' => '=', - ), - ), - ); - - $posts = new WP_Query( $args ); - $items = array_map( array( Follower::class, 'init_from_cpt' ), $posts->get_posts() ); - - return array_filter( $items ); - } - - /** - * This function is used to store errors that occur when - * sending an ActivityPub message to a Follower. - * - * The error will be stored in post meta. - * - * @param int $post_id The ID of the WordPress Custom-Post-Type. - * @param mixed $error The error message. Can be a string or a WP_Error. - * - * @return int|false The meta ID on success, false on failure. - */ - public static function add_error( $post_id, $error ) { - if ( is_string( $error ) ) { - $error_message = $error; - } elseif ( is_wp_error( $error ) ) { - $error_message = $error->get_error_message(); - } else { - $error_message = __( - 'Unknown Error or misconfigured Error-Message', - 'activitypub' - ); - } - - return add_post_meta( - $post_id, - '_activitypub_errors', - $error_message - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-interactions.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-interactions.php deleted file mode 100644 index dc1f9417..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-interactions.php +++ /dev/null @@ -1,349 +0,0 @@ -comment_post_ID; - } - - if ( is_post_disabled( $comment_post_id ) ) { - return false; - } - - $commentdata['comment_post_ID'] = $comment_post_id; - $commentdata['comment_parent'] = $parent_comment_id ? $parent_comment_id : 0; - - return self::persist( $commentdata, self::INSERT ); - } - - /** - * Update a comment. - * - * @param array $activity The activity object. - * - * @return array|string|int|\WP_Error|false The comment data or false on failure. - */ - public static function update_comment( $activity ) { - $meta = get_remote_metadata_by_actor( $activity['actor'] ); - - // Determine comment_ID. - $comment = object_id_to_comment( \esc_url_raw( $activity['object']['id'] ) ); - $commentdata = \get_comment( $comment, ARRAY_A ); - - if ( ! $commentdata ) { - return false; - } - - // Found a local comment id. - $commentdata['comment_author'] = \esc_attr( $meta['name'] ? $meta['name'] : $meta['preferredUsername'] ); - $commentdata['comment_content'] = \addslashes( $activity['object']['content'] ); - - return self::persist( $commentdata, self::UPDATE ); - } - - /** - * Adds an incoming Like, Announce, ... as a comment to a post. - * - * @param array $activity Activity array. - * - * @return array|false Comment data or `false` on failure. - */ - public static function add_reaction( $activity ) { - $commentdata = self::activity_to_comment( $activity ); - - if ( ! $commentdata ) { - return false; - } - - $url = object_to_uri( $activity['object'] ); - $comment_post_id = \url_to_postid( $url ); - $parent_comment_id = url_to_commentid( $url ); - - if ( ! $comment_post_id && $parent_comment_id ) { - $parent_comment = \get_comment( $parent_comment_id ); - $comment_post_id = $parent_comment->comment_post_ID; - } - - if ( ! $comment_post_id || is_post_disabled( $comment_post_id ) ) { - // Not a reply to a post or comment. - return false; - } - - $comment_type = Comment::get_comment_type_by_activity_type( $activity['type'] ); - - if ( ! $comment_type ) { - // Not a valid comment type. - return false; - } - - $comment_content = $comment_type['excerpt']; - - $commentdata['comment_post_ID'] = $comment_post_id; - $commentdata['comment_content'] = \esc_html( $comment_content ); - $commentdata['comment_type'] = \esc_attr( $comment_type['type'] ); - $commentdata['comment_meta']['source_id'] = \esc_url_raw( $activity['id'] ); - - return self::persist( $commentdata, self::INSERT ); - } - - /** - * Get interaction(s) for a given URL/ID. - * - * @param string $url The URL/ID to get interactions for. - * - * @return array The interactions as WP_Comment objects. - */ - public static function get_interaction_by_id( $url ) { - $args = array( - 'nopaging' => true, - // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query - 'meta_query' => array( - 'relation' => 'AND', - array( - 'key' => 'protocol', - 'value' => 'activitypub', - ), - array( - 'relation' => 'OR', - array( - 'key' => 'source_url', - 'value' => $url, - ), - array( - 'key' => 'source_id', - 'value' => $url, - ), - ), - ), - ); - - $query = new WP_Comment_Query( $args ); - return $query->comments; - } - - /** - * Get interaction(s) for a given actor. - * - * @param string $actor The Actor-URL. - * - * @return array The interactions as WP_Comment objects. - */ - public static function get_interactions_by_actor( $actor ) { - $meta = get_remote_metadata_by_actor( $actor ); - - // Get URL, because $actor seems to be the ID. - if ( $meta && ! is_wp_error( $meta ) && isset( $meta['url'] ) ) { - $actor = object_to_uri( $meta['url'] ); - } - - $args = array( - 'nopaging' => true, - 'author_url' => $actor, - // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query - 'meta_query' => array( - array( - 'key' => 'protocol', - 'value' => 'activitypub', - ), - ), - ); - - return get_comments( $args ); - } - - /** - * Adds line breaks to the list of allowed comment tags. - * - * @param array $allowed_tags Allowed HTML tags. - * @param string $context Optional. Context. Default empty. - * - * @return array Filtered tag list. - */ - public static function allowed_comment_html( $allowed_tags, $context = '' ) { - if ( 'pre_comment_content' !== $context ) { - // Do nothing. - return $allowed_tags; - } - - // Add `p` and `br` to the list of allowed tags. - if ( ! array_key_exists( 'br', $allowed_tags ) ) { - $allowed_tags['br'] = array(); - } - - if ( ! array_key_exists( 'p', $allowed_tags ) ) { - $allowed_tags['p'] = array(); - } - - return $allowed_tags; - } - - /** - * Convert an Activity to a WP_Comment - * - * @param array $activity The Activity array. - * - * @return array|false The comment data or false on failure. - */ - public static function activity_to_comment( $activity ) { - $comment_content = null; - $actor = object_to_uri( $activity['actor'] ?? null ); - $actor = get_remote_metadata_by_actor( $actor ); - - // Check Actor-Meta. - if ( ! $actor || is_wp_error( $actor ) ) { - return false; - } - - // Check Actor-Name. - if ( isset( $actor['name'] ) ) { - $comment_author = $actor['name']; - } elseif ( isset( $actor['preferredUsername'] ) ) { - $comment_author = $actor['preferredUsername']; - } else { - return false; - } - - $url = object_to_uri( $actor['url'] ?? $actor['id'] ); - - if ( ! $url ) { - $url = object_to_uri( $actor['id'] ); - } - - if ( isset( $activity['object']['content'] ) ) { - $comment_content = \addslashes( $activity['object']['content'] ); - } - - $webfinger = Webfinger::uri_to_acct( $url ); - if ( is_wp_error( $webfinger ) ) { - $webfinger = ''; - } else { - $webfinger = str_replace( 'acct:', '', $webfinger ); - } - - $commentdata = array( - 'comment_author' => \esc_attr( $comment_author ), - 'comment_author_url' => \esc_url_raw( $url ), - 'comment_content' => $comment_content, - 'comment_type' => 'comment', - 'comment_author_email' => $webfinger, - 'comment_meta' => array( - 'source_id' => \esc_url_raw( object_to_uri( $activity['object'] ) ), - 'protocol' => 'activitypub', - ), - ); - - if ( isset( $actor['icon']['url'] ) ) { - $commentdata['comment_meta']['avatar_url'] = \esc_url_raw( $actor['icon']['url'] ); - } - - if ( isset( $activity['object']['url'] ) ) { - $commentdata['comment_meta']['source_url'] = \esc_url_raw( object_to_uri( $activity['object']['url'] ) ); - } - - return $commentdata; - } - - /** - * Persist a comment. - * - * @param array $commentdata The commentdata array. - * @param string $action Optional. Either 'insert' or 'update'. Default 'insert'. - * - * @return array|string|int|\WP_Error|false The comment data or false on failure - */ - public static function persist( $commentdata, $action = self::INSERT ) { - // Disable flood control. - \remove_action( 'check_comment_flood', 'check_comment_flood_db' ); - // Do not require email for AP entries. - \add_filter( 'pre_option_require_name_email', '__return_false' ); - // No nonce possible for this submission route. - \add_filter( - 'akismet_comment_nonce', - function () { - return 'inactive'; - } - ); - \add_filter( 'wp_kses_allowed_html', array( self::class, 'allowed_comment_html' ), 10, 2 ); - - if ( self::INSERT === $action ) { - $state = \wp_new_comment( $commentdata, true ); - } else { - $state = \wp_update_comment( $commentdata, true ); - } - - \remove_filter( 'wp_kses_allowed_html', array( self::class, 'allowed_comment_html' ) ); - \remove_filter( 'pre_option_require_name_email', '__return_false' ); - // Restore flood control. - \add_action( 'check_comment_flood', 'check_comment_flood_db', 10, 4 ); - - if ( 1 === $state ) { - return $commentdata; - } else { - return $state; // Either WP_Comment, false, a WP_Error, 0, or 1! - } - } - - /** - * Get the total number of interactions by type for a given ID. - * - * @param int $post_id The post ID. - * @param string $type The type of interaction to count. - * - * @return int The total number of interactions. - */ - public static function count_by_type( $post_id, $type ) { - return \get_comments( - array( - 'post_id' => $post_id, - 'status' => 'approve', - 'type' => $type, - 'count' => true, - 'paging' => false, - 'fields' => 'ids', - ) - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-outbox.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-outbox.php deleted file mode 100644 index cf1dff89..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-outbox.php +++ /dev/null @@ -1,351 +0,0 @@ -get_object() ); - - if ( ! $activity->get_actor() ) { - $activity->set_actor( Actors::get_by_id( $user_id )->get_id() ); - } - - $outbox_item = array( - 'post_type' => self::POST_TYPE, - 'post_title' => sprintf( - /* translators: 1. Activity type, 2. Object Title or Excerpt */ - __( '[%1$s] %2$s', 'activitypub' ), - $activity->get_type(), - \wp_trim_words( $title, 5 ) - ), - 'post_content' => wp_slash( $activity->to_json() ), - // ensure that user ID is not below 0. - 'post_author' => \max( $user_id, 0 ), - 'post_status' => 'pending', - 'meta_input' => array( - '_activitypub_object_id' => $object_id, - '_activitypub_activity_type' => $activity->get_type(), - '_activitypub_activity_actor' => $actor_type, - 'activitypub_content_visibility' => $visibility, - ), - ); - - $has_kses = false !== \has_filter( 'content_save_pre', 'wp_filter_post_kses' ); - if ( $has_kses ) { - // Prevent KSES from corrupting JSON in post_content. - \kses_remove_filters(); - } - - $id = \wp_insert_post( $outbox_item, true ); - - // Update the activity ID if the post was inserted successfully. - if ( $id && ! \is_wp_error( $id ) ) { - $activity->set_id( \get_the_guid( $id ) ); - - \wp_update_post( - array( - 'ID' => $id, - 'post_content' => \wp_slash( $activity->to_json() ), - ) - ); - } - - if ( $has_kses ) { - \kses_init_filters(); - } - - if ( \is_wp_error( $id ) ) { - return $id; - } - - if ( ! $id ) { - return false; - } - - self::invalidate_existing_items( $object_id, $activity->get_type(), $id ); - - return $id; - } - - /** - * Invalidate existing outbox items with the same activity type and object ID - * by setting their status to 'publish'. - * - * @param string $object_id The ID of the activity object. - * @param string $activity_type The type of the activity. - * @param int $current_id The ID of the current outbox item to exclude. - * - * @return void - */ - private static function invalidate_existing_items( $object_id, $activity_type, $current_id ) { - // Do not invalidate items for Announce activities. - if ( 'Announce' === $activity_type ) { - return; - } - - $meta_query = array( - array( - 'key' => '_activitypub_object_id', - 'value' => $object_id, - ), - ); - - // For non-Delete activities, only invalidate items of the same type. - if ( 'Delete' !== $activity_type ) { - $meta_query[] = array( - 'key' => '_activitypub_activity_type', - 'value' => $activity_type, - ); - } - - $existing_items = get_posts( - array( - 'post_type' => self::POST_TYPE, - 'post_status' => 'pending', - 'exclude' => array( $current_id ), - // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query - 'meta_query' => $meta_query, - 'fields' => 'ids', - ) - ); - - foreach ( $existing_items as $existing_item_id ) { - $event_args = array( - Dispatcher::$callback, - $existing_item_id, - Dispatcher::$batch_size, - \get_post_meta( $existing_item_id, '_activitypub_outbox_offset', true ) ?: 0, // phpcs:ignore - ); - - $timestamp = \wp_next_scheduled( 'activitypub_async_batch', $event_args ); - \wp_unschedule_event( $timestamp, 'activitypub_async_batch', $event_args ); - - $timestamp = \wp_next_scheduled( 'activitypub_process_outbox', array( $existing_item_id ) ); - \wp_unschedule_event( $timestamp, 'activitypub_process_outbox', array( $existing_item_id ) ); - - \wp_publish_post( $existing_item_id ); - \delete_post_meta( $existing_item_id, '_activitypub_outbox_offset' ); - } - } - - /** - * Creates an Undo activity. - * - * @param int|\WP_Post $outbox_item The Outbox post or post ID. - * - * @return int|bool The ID of the outbox item or false on failure. - */ - public static function undo( $outbox_item ) { - $outbox_item = get_post( $outbox_item ); - $activity = self::get_activity( $outbox_item ); - - $type = 'Undo'; - if ( 'Create' === $activity->get_type() ) { - $type = 'Delete'; - } elseif ( 'Add' === $activity->get_type() ) { - $type = 'Remove'; - } - - return add_to_outbox( $activity, $type, $outbox_item->post_author ); - } - - /** - * Reschedule an activity. - * - * @param int|\WP_Post $outbox_item The Outbox post or post ID. - * - * @return bool True if the activity was rescheduled, false otherwise. - */ - public static function reschedule( $outbox_item ) { - $outbox_item = get_post( $outbox_item ); - - $outbox_item->post_status = 'pending'; - $outbox_item->post_date = current_time( 'mysql' ); - - wp_update_post( $outbox_item ); - - Scheduler::schedule_outbox_activity_for_federation( $outbox_item->ID ); - - return true; - } - - /** - * Get the Activity object from the Outbox item. - * - * @param int|\WP_Post $outbox_item The Outbox post or post ID. - * @return Activity|\WP_Error The Activity object or WP_Error. - */ - public static function get_activity( $outbox_item ) { - $outbox_item = get_post( $outbox_item ); - $actor = self::get_actor( $outbox_item ); - if ( is_wp_error( $actor ) ) { - return $actor; - } - - $activity_object = \json_decode( $outbox_item->post_content, true ); - $type = \get_post_meta( $outbox_item->ID, '_activitypub_activity_type', true ); - - if ( $activity_object['type'] === $type ) { - $activity = Activity::init_from_array( $activity_object ); - if ( ! $activity->get_actor() ) { - $activity->set_actor( $actor->get_id() ); - } - } else { - $activity = new Activity(); - $activity->set_type( $type ); - $activity->set_id( $outbox_item->guid ); - $activity->set_actor( $actor->get_id() ); - // Pre-fill the Activity with data (for example cc and to). - $activity->set_object( $activity_object ); - } - - if ( 'Update' === $type ) { - $activity->set_updated( gmdate( ACTIVITYPUB_DATE_TIME_RFC3339, strtotime( $outbox_item->post_modified ) ) ); - } - - /** - * Filters the Activity object before it is returned. - * - * @param Activity $activity The Activity object. - * @param \WP_Post $outbox_item The outbox item post object. - */ - return apply_filters( 'activitypub_get_outbox_activity', $activity, $outbox_item ); - } - - /** - * Get the Actor object from the Outbox item. - * - * @param \WP_Post $outbox_item The Outbox post. - * - * @return \Activitypub\Model\User|\Activitypub\Model\Blog|\WP_Error The Actor object or WP_Error. - */ - public static function get_actor( $outbox_item ) { - $actor_type = \get_post_meta( $outbox_item->ID, '_activitypub_activity_actor', true ); - - switch ( $actor_type ) { - case 'blog': - $actor_id = Actors::BLOG_USER_ID; - break; - case 'application': - $actor_id = Actors::APPLICATION_USER_ID; - break; - case 'user': - default: - $actor_id = $outbox_item->post_author; - break; - } - - return Actors::get_by_id( $actor_id ); - } - - /** - * Get the Activity object from the Outbox item. - * - * @param \WP_Post $outbox_item The Outbox post. - * - * @return Activity|\WP_Error The Activity object or WP_Error. - */ - public static function maybe_get_activity( $outbox_item ) { - if ( ! $outbox_item instanceof \WP_Post ) { - return new \WP_Error( 'invalid_outbox_item', 'Invalid Outbox item.' ); - } - - if ( 'ap_outbox' !== $outbox_item->post_type ) { - return new \WP_Error( 'invalid_outbox_item', 'Invalid Outbox item.' ); - } - - // Check if Outbox Activity is public. - $visibility = \get_post_meta( $outbox_item->ID, 'activitypub_content_visibility', true ); - - if ( ! in_array( $visibility, array( ACTIVITYPUB_CONTENT_VISIBILITY_PUBLIC, ACTIVITYPUB_CONTENT_VISIBILITY_QUIET_PUBLIC ), true ) ) { - return new \WP_Error( 'private_outbox_item', 'Not a public Outbox item.' ); - } - - $activity_types = \apply_filters( 'rest_activitypub_outbox_activity_types', array( 'Announce', 'Create', 'Like', 'Update' ) ); - $activity_type = \get_post_meta( $outbox_item->ID, '_activitypub_activity_type', true ); - - if ( ! in_array( $activity_type, $activity_types, true ) ) { - return new \WP_Error( 'private_outbox_item', 'Not public Outbox item type.' ); - } - - return self::get_activity( $outbox_item ); - } - - /** - * Get the object ID of an activity. - * - * @param Activity|Base_Object|string $data The activity object. - * - * @return string The object ID. - */ - private static function get_object_id( $data ) { - $object = $data->get_object(); - - if ( is_object( $object ) ) { - return self::get_object_id( $object ); - } - - if ( is_string( $object ) ) { - return $object; - } - - return $data->get_id() ?? $data->get_actor(); - } - - /** - * Get the title of an activity recursively. - * - * @param Base_Object $activity_object The activity object. - * - * @return string The title. - */ - private static function get_object_title( $activity_object ) { - if ( ! $activity_object ) { - return ''; - } - - if ( is_string( $activity_object ) ) { - $post_id = url_to_postid( $activity_object ); - - return $post_id ? get_the_title( $post_id ) : ''; - } - - $title = $activity_object->get_name() ?? $activity_object->get_content(); - - if ( ! $title && $activity_object->get_object() instanceof Base_Object ) { - $title = $activity_object->get_object()->get_name() ?? $activity_object->get_object()->get_content(); - } - - return $title; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-replies.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-replies.php deleted file mode 100644 index 25b47d21..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-replies.php +++ /dev/null @@ -1,226 +0,0 @@ - 'approve', - 'orderby' => 'comment_date_gmt', - 'order' => 'ASC', - 'type' => 'comment', - ); - - if ( $wp_object instanceof WP_Post ) { - $args['parent'] = 0; // TODO: maybe this is unnecessary. - $args['post_id'] = $wp_object->ID; - } elseif ( $wp_object instanceof WP_Comment ) { - $args['parent'] = $wp_object->comment_ID; - } else { - return new WP_Error(); - } - - return $args; - } - - /** - * Get the replies collections ID. - * - * @param WP_Post|WP_Comment $wp_object The post or comment to fetch replies for. - * - * @return string|WP_Error The rest URL of the replies collection or WP_Error if the object is not a post or comment. - */ - private static function get_id( $wp_object ) { - if ( $wp_object instanceof WP_Post ) { - return get_rest_url_by_path( sprintf( 'posts/%d/replies', $wp_object->ID ) ); - } elseif ( $wp_object instanceof WP_Comment ) { - return get_rest_url_by_path( sprintf( 'comments/%d/replies', $wp_object->comment_ID ) ); - } else { - return new WP_Error( 'unsupported_object', 'The object is not a post or comment.' ); - } - } - - /** - * Get the Replies collection. - * - * @param WP_Post|WP_Comment $wp_object The post or comment to fetch replies for. - * - * @return array|\WP_Error|null An associative array containing the replies collection without JSON-LD context on success. - */ - public static function get_collection( $wp_object ) { - $id = self::get_id( $wp_object ); - - if ( is_wp_error( $id ) ) { - return \wp_is_serving_rest_request() ? $id : null; - } - - $replies = array( - 'id' => $id, - 'type' => 'Collection', - ); - - $replies['first'] = self::get_collection_page( $wp_object, 1, $replies['id'] ); - - return $replies; - } - - /** - * Returns a replies collection page as an associative array. - * - * @link https://www.w3.org/TR/activitystreams-vocabulary/#dfn-collectionpage - * - * @param WP_Post|WP_Comment $wp_object The post of comment the replies are for. - * @param int $page The current pagination page. - * @param string $part_of Optional. The collection id/url the returned CollectionPage belongs to. Default null. - * - * @return array|WP_Error|null A CollectionPage as an associative array on success, WP_Error or null on failure. - */ - public static function get_collection_page( $wp_object, $page, $part_of = null ) { - // Build initial arguments for fetching approved comments. - $args = self::build_args( $wp_object ); - if ( is_wp_error( $args ) ) { - return \wp_is_serving_rest_request() ? $args : null; - } - - // Retrieve the partOf if not already given. - $part_of = $part_of ?? self::get_id( $wp_object ); - - // If the collection page does not exist. - if ( is_wp_error( $part_of ) ) { - return \wp_is_serving_rest_request() ? $part_of : null; - } - - // Get to total replies count. - $total_replies = \get_comments( array_merge( $args, array( 'count' => true ) ) ); - - // If set to zero, we get errors below. You need at least one comment per page, here. - $args['number'] = max( (int) \get_option( 'comments_per_page' ), 1 ); - $args['offset'] = intval( $page - 1 ) * $args['number']; - - // Get the ActivityPub ID's of the comments, without local-only comments. - $comment_ids = self::get_reply_ids( \get_comments( $args ) ); - - // Build the associative CollectionPage array. - $collection_page = array( - 'id' => \add_query_arg( 'page', $page, $part_of ), - 'type' => 'CollectionPage', - 'partOf' => $part_of, - 'items' => $comment_ids, - ); - - if ( ( $total_replies / $args['number'] ) > $page ) { - $collection_page['next'] = \add_query_arg( 'page', $page + 1, $part_of ); - } - - if ( $page > 1 ) { - $collection_page['prev'] = \add_query_arg( 'page', $page - 1, $part_of ); - } - - return $collection_page; - } - - /** - * Get the context collection for a post. - * - * @param int $post_id The post ID. - * - * @return array|false The context for the post or false if the post is not found or disabled. - */ - public static function get_context_collection( $post_id ) { - $post = \get_post( $post_id ); - - if ( ! $post || is_post_disabled( $post_id ) ) { - return false; - } - - $comments = \get_comments( - array( - 'post_id' => $post_id, - 'type' => 'comment', - 'status' => 'approve', - 'orderby' => 'comment_date_gmt', - 'order' => 'ASC', - ) - ); - $ids = self::get_reply_ids( $comments, true ); - $post_uri = ( new PostTransformer( $post ) )->to_id(); - \array_unshift( $ids, $post_uri ); - - $author = Actors::get_by_id( $post->post_author ); - if ( is_wp_error( $author ) ) { - if ( is_user_type_disabled( 'blog' ) ) { - return false; - } - - $author = new Blog(); - } - - return array( - 'type' => 'OrderedCollection', - 'url' => \get_permalink( $post_id ), - 'attributedTo' => $author->get_id(), - 'totalItems' => count( $ids ), - 'items' => $ids, - ); - } - - /** - * Get the ActivityPub ID's from a list of comments. - * - * It takes only federated/non-local comments into account, others also do not have an - * ActivityPub ID available. - * - * @param WP_Comment[] $comments The comments to retrieve the ActivityPub ids from. - * @param boolean $include_blog_comments Optional. Include blog comments in the returned array. Default false. - * - * @return string[] A list of the ActivityPub ID's. - */ - private static function get_reply_ids( $comments, $include_blog_comments = false ) { - $comment_ids = array(); - - foreach ( $comments as $comment ) { - if ( is_local_comment( $comment ) ) { - continue; - } - - $public_comment_id = Comment::get_source_id( $comment->comment_ID ); - if ( $public_comment_id ) { - $comment_ids[] = $public_comment_id; - continue; - } - - if ( $include_blog_comments ) { - $comment_ids[] = ( new CommentTransformer( $comment ) )->to_id(); - } - } - - return \array_unique( $comment_ids ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-users.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-users.php deleted file mode 100644 index 12194903..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/collection/class-users.php +++ /dev/null @@ -1,78 +0,0 @@ - $v ) { - if ( ++$next_key !== $k ) { - return false; - } - } - - return true; - } -} - -if ( ! function_exists( 'str_contains' ) ) { - /** - * Polyfill for `str_contains()` function added in PHP 8.0. - * - * Performs a case-sensitive check indicating if needle is - * contained in haystack. - * - * @param string $haystack The string to search in. - * @param string $needle The substring to search for in the `$haystack`. - * - * @return bool True if `$needle` is in `$haystack`, otherwise false. - */ - function str_contains( $haystack, $needle ) { - if ( '' === $needle ) { - return true; - } - - return false !== strpos( $haystack, $needle ); - } -} - -if ( ! function_exists( 'wp_is_serving_rest_request' ) ) { - /** - * Polyfill for `wp_is_serving_rest_request()` function added in WordPress 6.5. - * - * @see https://developer.wordpress.org/reference/functions/wp_is_serving_rest_request/ - * - * @return bool True if it's a WordPress REST API request, false otherwise. - */ - function wp_is_serving_rest_request() { - return defined( 'REST_REQUEST' ) && REST_REQUEST; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/constants.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/constants.php deleted file mode 100644 index 8b6c92d0..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/constants.php +++ /dev/null @@ -1,76 +0,0 @@ -)|(?<=
)|^)#([A-Za-z0-9_]+)(?:(?=\s|[[:punct:]]|$))' ); -\defined( 'ACTIVITYPUB_USERNAME_REGEXP' ) || \define( 'ACTIVITYPUB_USERNAME_REGEXP', '(?:([A-Za-z0-9\._-]+)@((?:[A-Za-z0-9_-]+\.)+[A-Za-z]+))' ); -\defined( 'ACTIVITYPUB_URL_REGEXP' ) || \define( 'ACTIVITYPUB_URL_REGEXP', '(https?:|www\.)\S+[\w\/]' ); -\defined( 'ACTIVITYPUB_CUSTOM_POST_CONTENT' ) || \define( 'ACTIVITYPUB_CUSTOM_POST_CONTENT', "[ap_title type=\"html\"]\n\n[ap_content]\n\n[ap_hashtags]" ); -\defined( 'ACTIVITYPUB_DISABLE_REWRITES' ) || \define( 'ACTIVITYPUB_DISABLE_REWRITES', false ); -\defined( 'ACTIVITYPUB_DISABLE_INCOMING_INTERACTIONS' ) || \define( 'ACTIVITYPUB_DISABLE_INCOMING_INTERACTIONS', false ); -\defined( 'ACTIVITYPUB_DISABLE_OUTGOING_INTERACTIONS' ) || \define( 'ACTIVITYPUB_DISABLE_OUTGOING_INTERACTIONS', false ); -\defined( 'ACTIVITYPUB_DEFAULT_OBJECT_TYPE' ) || \define( 'ACTIVITYPUB_DEFAULT_OBJECT_TYPE', 'wordpress-post-format' ); -\defined( 'ACTIVITYPUB_OUTBOX_PROCESSING_BATCH_SIZE' ) || \define( 'ACTIVITYPUB_OUTBOX_PROCESSING_BATCH_SIZE', 100 ); - -// The following constants are invariable and define values used throughout the plugin. - -/* - * Mastodon HTML sanitizer. - * - * @see https://docs.joinmastodon.org/spec/activitypub/#sanitization - */ -\define( - 'ACTIVITYPUB_MASTODON_HTML_SANITIZER', - array( - 'p' => array(), - 'span' => array( 'class' => true ), - 'br' => array(), - 'a' => array( - 'href' => true, - 'rel' => true, - 'class' => true, - ), - 'del' => array(), - 'pre' => array(), - 'code' => array(), - 'em' => array(), - 'strong' => array(), - 'b' => array(), - 'i' => array(), - 'u' => array(), - 'ul' => array(), - 'ol' => array( - 'start' => true, - 'reversed' => true, - ), - 'li' => array( 'value' => true ), - 'blockquote' => array(), - 'h1' => array(), - 'h2' => array(), - 'h3' => array(), - 'h4' => array(), - ) -); - -\define( 'ACTIVITYPUB_DATE_TIME_RFC3339', 'Y-m-d\TH:i:s\Z' ); - -// Define Actor-Modes for the plugin. -\define( 'ACTIVITYPUB_ACTOR_MODE', 'actor' ); -\define( 'ACTIVITYPUB_BLOG_MODE', 'blog' ); -\define( 'ACTIVITYPUB_ACTOR_AND_BLOG_MODE', 'actor_blog' ); - -// Post visibility constants. -\define( 'ACTIVITYPUB_CONTENT_VISIBILITY_PUBLIC', '' ); -\define( 'ACTIVITYPUB_CONTENT_VISIBILITY_QUIET_PUBLIC', 'quiet_public' ); -\define( 'ACTIVITYPUB_CONTENT_VISIBILITY_PRIVATE', 'private' ); -\define( 'ACTIVITYPUB_CONTENT_VISIBILITY_LOCAL', 'local' ); diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/debug.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/debug.php deleted file mode 100644 index bc96e969..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/debug.php +++ /dev/null @@ -1,79 +0,0 @@ - $value ) { - echo \esc_attr( $key ) . ': ' . \esc_html( $value[0] ) . '
'; - } - } -} -\add_action( 'manage_posts_custom_column', '\Activitypub\manage_posts_custom_column', 10, 2 ); diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/functions.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/functions.php deleted file mode 100644 index 084ea546..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/functions.php +++ /dev/null @@ -1,1606 +0,0 @@ -wp_rewrite_rules(); - - // Not using rewrite rules, and 'author=N' method failed, so we're out of options. - if ( empty( $rewrite ) ) { - return null; - } - - // Generate rewrite rule for the author url. - $author_rewrite = $wp_rewrite->get_author_permastruct(); - $author_regexp = \str_replace( '%author%', '', $author_rewrite ); - - // Match the rewrite rule with the passed url. - if ( \preg_match( '/https?:\/\/(.+)' . \preg_quote( $author_regexp, '/' ) . '([^\/]+)/i', $url, $match ) ) { - $user = \get_user_by( 'slug', $match[2] ); - if ( $user ) { - return $user->ID; - } - } - - return null; -} - -/** - * Verify that url is a wp_ap_comment or a previously received remote comment. - * - * @return int|bool Comment ID or false if not found. - */ -function is_comment() { - $comment_id = get_query_var( 'c', null ); - - if ( ! is_null( $comment_id ) ) { - $comment = \get_comment( $comment_id ); - - if ( $comment ) { - return $comment_id; - } - } - - return false; -} - -/** - * Check for Tombstone Objects. - * - * @see https://www.w3.org/TR/activitypub/#delete-activity-outbox - * - * @param WP_Error $wp_error A WP_Error-Response of an HTTP-Request. - * - * @return boolean True if HTTP-Code is 410 or 404. - */ -function is_tombstone( $wp_error ) { - if ( ! is_wp_error( $wp_error ) ) { - return false; - } - - if ( in_array( (int) $wp_error->get_error_code(), array( 404, 410 ), true ) ) { - return true; - } - - return false; -} - -/** - * Get the REST URL relative to this plugin's namespace. - * - * @param string $path Optional. REST route path. Default ''. - * - * @return string REST URL relative to this plugin's namespace. - */ -function get_rest_url_by_path( $path = '' ) { - // We'll handle the leading slash. - $path = ltrim( $path, '/' ); - $namespaced_path = sprintf( '/%s/%s', ACTIVITYPUB_REST_NAMESPACE, $path ); - return \get_rest_url( null, $namespaced_path ); -} - -/** - * Convert a string from camelCase to snake_case. - * - * @param string $input The string to convert. - * - * @return string The converted string. - */ -function camel_to_snake_case( $input ) { - return strtolower( preg_replace( '/(?is_activitypub_request(); -} - -/** - * Check if a post is disabled for ActivityPub. - * - * This function checks if the post type supports ActivityPub and if the post is set to be local. - * - * @param mixed $post The post object or ID. - * - * @return boolean True if the post is disabled, false otherwise. - */ -function is_post_disabled( $post ) { - $post = \get_post( $post ); - $disabled = false; - - if ( ! $post ) { - return true; - } - - $visibility = \get_post_meta( $post->ID, 'activitypub_content_visibility', true ); - - if ( - ACTIVITYPUB_CONTENT_VISIBILITY_LOCAL === $visibility || - ACTIVITYPUB_CONTENT_VISIBILITY_PRIVATE === $visibility || - ! \post_type_supports( $post->post_type, 'activitypub' ) || - 'private' === $post->post_status || - ! empty( $post->post_password ) - ) { - $disabled = true; - } - - /** - * Allow plugins to disable posts for ActivityPub. - * - * @param boolean $disabled True if the post is disabled, false otherwise. - * @param \WP_Post $post The post object. - */ - return \apply_filters( 'activitypub_is_post_disabled', $disabled, $post ); -} - -/** - * This function checks if a user is enabled for ActivityPub. - * - * @param int|string $user_id The user ID. - * @return boolean True if the user is enabled, false otherwise. - */ -function user_can_activitypub( $user_id ) { - if ( ! is_numeric( $user_id ) ) { - return false; - } - - switch ( $user_id ) { - case Actors::APPLICATION_USER_ID: - $enabled = true; // Application user is always enabled. - break; - - case Actors::BLOG_USER_ID: - $enabled = ! is_user_type_disabled( 'blog' ); - break; - - default: - if ( ! \get_user_by( 'id', $user_id ) ) { - $enabled = false; - break; - } - - if ( is_user_type_disabled( 'user' ) ) { - $enabled = false; - break; - } - - $enabled = \user_can( $user_id, 'activitypub' ); - } - - /** - * Allow plugins to disable users for ActivityPub. - * - * @deprecated 5.7.0 Use the `activitypub_user_can_activitypub` filter instead. - * - * @param boolean $disabled True if the user is disabled, false otherwise. - * @param int $user_id The user ID. - */ - $enabled = ! \apply_filters_deprecated( 'activitypub_is_user_disabled', array( ! $enabled, $user_id ), '5.7.0', 'activitypub_user_can_activitypub' ); - - /** - * Allow plugins to enable/disable users for ActivityPub. - * - * @param boolean $enabled True if the user is enabled, false otherwise. - * @param int $user_id The user ID. - */ - return apply_filters( 'activitypub_user_can_activitypub', $enabled, $user_id ); -} - -/** - * This function checks if a user is disabled for ActivityPub. - * - * @deprecated 5.7.0 Use the `user_can_activitypub` function instead. - * - * @param int $user_id The user ID. - * - * @return boolean True if the user is disabled, false otherwise. - */ -function is_user_disabled( $user_id ) { - _deprecated_function( __FUNCTION__, 'unreleased', 'user_can_activitypub' ); - - return ! user_can_activitypub( $user_id ); -} - -/** - * Checks if a User-Type is disabled for ActivityPub. - * - * This function is used to check if the 'blog' or 'user' - * type is disabled for ActivityPub. - * - * @param string $type User type. 'blog' or 'user'. - * - * @return boolean True if the user type is disabled, false otherwise. - */ -function is_user_type_disabled( $type ) { - switch ( $type ) { - case 'blog': - if ( \defined( 'ACTIVITYPUB_SINGLE_USER_MODE' ) ) { - if ( ACTIVITYPUB_SINGLE_USER_MODE ) { - $disabled = false; - break; - } - } - - if ( \defined( 'ACTIVITYPUB_DISABLE_BLOG_USER' ) ) { - $disabled = ACTIVITYPUB_DISABLE_BLOG_USER; - break; - } - - if ( ACTIVITYPUB_ACTOR_MODE === \get_option( 'activitypub_actor_mode', ACTIVITYPUB_ACTOR_MODE ) ) { - $disabled = true; - break; - } - - $disabled = false; - break; - case 'user': - if ( \defined( 'ACTIVITYPUB_SINGLE_USER_MODE' ) ) { - if ( ACTIVITYPUB_SINGLE_USER_MODE ) { - $disabled = true; - break; - } - } - - if ( \defined( 'ACTIVITYPUB_DISABLE_USER' ) ) { - $disabled = ACTIVITYPUB_DISABLE_USER; - break; - } - - if ( ACTIVITYPUB_BLOG_MODE === \get_option( 'activitypub_actor_mode', ACTIVITYPUB_ACTOR_MODE ) ) { - $disabled = true; - break; - } - - $disabled = false; - break; - default: - $disabled = new WP_Error( - 'activitypub_wrong_user_type', - __( 'Wrong user type', 'activitypub' ), - array( 'status' => 400 ) - ); - break; - } - - /** - * Allow plugins to disable user types for ActivityPub. - * - * @param boolean $disabled True if the user type is disabled, false otherwise. - * @param string $type The User-Type. - */ - return apply_filters( 'activitypub_is_user_type_disabled', $disabled, $type ); -} - -/** - * Check if the blog is in single-user mode. - * - * @return boolean True if the blog is in single-user mode, false otherwise. - */ -function is_single_user() { - if ( - false === is_user_type_disabled( 'blog' ) && - true === is_user_type_disabled( 'user' ) - ) { - return true; - } - - return false; -} - -/** - * Check if a site supports the block editor. - * - * @return boolean True if the site supports the block editor, false otherwise. - */ -function site_supports_blocks() { - /** - * Allow plugins to disable block editor support, - * thus disabling blocks registered by the ActivityPub plugin. - * - * @param boolean $supports_blocks True if the site supports the block editor, false otherwise. - */ - return apply_filters( 'activitypub_site_supports_blocks', true ); -} - -/** - * Check if data is valid JSON. - * - * @param string $data The data to check. - * - * @return boolean True if the data is JSON, false otherwise. - */ -function is_json( $data ) { - return \is_array( \json_decode( $data, true ) ) ? true : false; -} - -/** - * Check whether a blog is public based on the `blog_public` option. - * - * @return bool True if public, false if not - */ -function is_blog_public() { - /** - * Filter whether the blog is public. - * - * @param bool $public Whether the blog is public. - */ - return (bool) apply_filters( 'activitypub_is_blog_public', \get_option( 'blog_public', 1 ) ); -} - -/** - * Extract recipient URLs from Activity object. - * - * @param array $data The Activity object as array. - * - * @return array The list of user URLs. - */ -function extract_recipients_from_activity( $data ) { - $recipient_items = array(); - - foreach ( array( 'to', 'bto', 'cc', 'bcc', 'audience' ) as $i ) { - if ( array_key_exists( $i, $data ) ) { - if ( is_array( $data[ $i ] ) ) { - $recipient = $data[ $i ]; - } else { - $recipient = array( $data[ $i ] ); - } - $recipient_items = array_merge( $recipient_items, $recipient ); - } - - if ( is_array( $data['object'] ) && array_key_exists( $i, $data['object'] ) ) { - if ( is_array( $data['object'][ $i ] ) ) { - $recipient = $data['object'][ $i ]; - } else { - $recipient = array( $data['object'][ $i ] ); - } - $recipient_items = array_merge( $recipient_items, $recipient ); - } - } - - $recipients = array(); - - // Flatten array. - foreach ( $recipient_items as $recipient ) { - if ( is_array( $recipient ) ) { - // Check if recipient is an object. - if ( array_key_exists( 'id', $recipient ) ) { - $recipients[] = $recipient['id']; - } - } else { - $recipients[] = $recipient; - } - } - - return array_unique( $recipients ); -} - -/** - * Check if passed Activity is Public. - * - * @param array $data The Activity object as array. - * - * @return boolean True if public, false if not. - */ -function is_activity_public( $data ) { - $recipients = extract_recipients_from_activity( $data ); - - return in_array( 'https://www.w3.org/ns/activitystreams#Public', $recipients, true ); -} - -/** - * Check if passed Activity is a reply. - * - * @param array $data The Activity object as array. - * - * @return boolean True if a reply, false if not. - */ -function is_activity_reply( $data ) { - return ! empty( $data['object']['inReplyTo'] ); -} - -/** - * Get active users based on a given duration. - * - * @param int $duration Optional. The duration to check in month(s). Default 1. - * - * @return int The number of active users. - */ -function get_active_users( $duration = 1 ) { - - $duration = intval( $duration ); - $transient_key = sprintf( 'monthly_active_users_%d', $duration ); - $count = get_transient( $transient_key ); - - if ( false === $count ) { - global $wpdb; - - // phpcs:ignore WordPress.DB.DirectDatabaseQuery - $count = $wpdb->get_var( - $wpdb->prepare( - "SELECT COUNT( DISTINCT post_author ) FROM {$wpdb->posts} WHERE post_type = 'post' AND post_status = 'publish' AND post_date <= DATE_SUB( NOW(), INTERVAL %d MONTH )", - $duration - ) - ); - - set_transient( $transient_key, $count, DAY_IN_SECONDS ); - } - - // If 0 authors where active. - if ( 0 === $count ) { - return 0; - } - - // If single user mode. - if ( is_single_user() ) { - return 1; - } - - // If blog user is disabled. - if ( ! user_can_activitypub( Actors::BLOG_USER_ID ) ) { - return (int) $count; - } - - // Also count blog user. - return (int) $count + 1; -} - -/** - * Get the total number of users. - * - * @return int The total number of users. - */ -function get_total_users() { - // If single user mode. - if ( is_single_user() ) { - return 1; - } - - $users = \get_users( - array( - 'capability__in' => array( 'activitypub' ), - ) - ); - - if ( is_array( $users ) ) { - $users = count( $users ); - } else { - $users = 1; - } - - // If blog user is disabled. - if ( ! user_can_activitypub( Actors::BLOG_USER_ID ) ) { - return (int) $users; - } - - return (int) $users + 1; -} - -/** - * Examine a comment ID and look up an existing comment it represents. - * - * @param string $id ActivityPub object ID (usually a URL) to check. - * - * @return \WP_Comment|boolean Comment, or false on failure. - */ -function object_id_to_comment( $id ) { - return Comment::object_id_to_comment( $id ); -} - -/** - * Verify that URL is a local comment or a previously received remote comment. - * (For threading comments locally) - * - * @param string $url The URL to check. - * - * @return string|null Comment ID or null if not found - */ -function url_to_commentid( $url ) { - return Comment::url_to_commentid( $url ); -} - -/** - * Get the URI of an ActivityPub object. - * - * @param array|string $data The ActivityPub object. - * - * @return string The URI of the ActivityPub object - */ -function object_to_uri( $data ) { - // Check whether it is already simple. - if ( ! $data || is_string( $data ) ) { - return $data; - } - - if ( is_object( $data ) ) { - $data = $data->to_array(); - } - - /* - * Check if it is a list, then take first item. - * This plugin does not support collections. - */ - if ( array_is_list( $data ) ) { - $data = $data[0]; - } - - // Check if it is simplified now. - if ( is_string( $data ) ) { - return $data; - } - - $type = 'Object'; - if ( isset( $data['type'] ) ) { - $type = $data['type']; - } - - // Return part of Object that makes most sense. - switch ( $type ) { - case 'Image': - $data = $data['url']; - break; - case 'Link': - $data = $data['href']; - break; - default: - $data = $data['id']; - break; - } - - return $data; -} - -/** - * Check if a comment should be federated. - * - * We consider a comment should be federated if it is authored by a user that is - * not disabled for federation and if it is a reply directly to the post or to a - * federated comment. - * - * @param mixed $comment Comment object or ID. - * - * @return boolean True if the comment should be federated, false otherwise. - */ -function should_comment_be_federated( $comment ) { - return Comment::should_be_federated( $comment ); -} - -/** - * Check if a comment was federated. - * - * This function checks if a comment was federated via ActivityPub. - * - * @param mixed $comment Comment object or ID. - * - * @return boolean True if the comment was federated, false otherwise. - */ -function was_comment_sent( $comment ) { - return Comment::was_sent( $comment ); -} - -/** - * Check if a comment is federated. - * - * We consider a comment federated if comment was received via ActivityPub. - * - * Use this function to check if it is comment that was received via ActivityPub. - * - * @param mixed $comment Comment object or ID. - * - * @return boolean True if the comment is federated, false otherwise. - */ -function was_comment_received( $comment ) { - return Comment::was_received( $comment ); -} - -/** - * Check if a comment is local only. - * - * This function checks if a comment is local only and was not sent or received via ActivityPub. - * - * @param mixed $comment Comment object or ID. - * - * @return boolean True if the comment is local only, false otherwise. - */ -function is_local_comment( $comment ) { - return Comment::is_local( $comment ); -} - -/** - * Mark a WordPress object as federated. - * - * @param \WP_Comment|\WP_Post $wp_object The WordPress object. - * @param string $state The state of the object. - */ -function set_wp_object_state( $wp_object, $state ) { - $meta_key = 'activitypub_status'; - - if ( $wp_object instanceof \WP_Post ) { - \update_post_meta( $wp_object->ID, $meta_key, $state ); - } elseif ( $wp_object instanceof \WP_Comment ) { - \update_comment_meta( $wp_object->comment_ID, $meta_key, $state ); - } else { - /** - * Allow plugins to mark WordPress objects as federated. - * - * @param \WP_Comment|\WP_Post $wp_object The WordPress object. - */ - \apply_filters( 'activitypub_mark_wp_object_as_federated', $wp_object ); - } -} - -/** - * Get the federation state of a WordPress object. - * - * @param \WP_Comment|\WP_Post $wp_object The WordPress object. - * - * @return string|false The state of the object or false if not found. - */ -function get_wp_object_state( $wp_object ) { - $meta_key = 'activitypub_status'; - - if ( $wp_object instanceof \WP_Post ) { - return \get_post_meta( $wp_object->ID, $meta_key, true ); - } elseif ( $wp_object instanceof \WP_Comment ) { - return \get_comment_meta( $wp_object->comment_ID, $meta_key, true ); - } else { - /** - * Allow plugins to get the federation state of a WordPress object. - * - * @param false $state The state of the object. - * @param \WP_Comment|\WP_Post $wp_object The WordPress object. - */ - return \apply_filters( 'activitypub_get_wp_object_state', false, $wp_object ); - } -} - -/** - * Get the description of a post type. - * - * Set some default descriptions for the default post types. - * - * @param \WP_Post_Type $post_type The post type object. - * - * @return string The description of the post type. - */ -function get_post_type_description( $post_type ) { - $description = ''; - - switch ( $post_type->name ) { - case 'post': - $description = ''; - break; - case 'page': - $description = ''; - break; - case 'attachment': - $description = ' - ' . __( 'The attachments that you have uploaded to a post (images, videos, documents or other files).', 'activitypub' ); - break; - default: - if ( ! empty( $post_type->description ) ) { - $description = ' - ' . $post_type->description; - } - } - - /** - * Allow plugins to get the description of a post type. - * - * @param string $description The description of the post type. - * @param string $post_type_name The post type name. - * @param \WP_Post_Type $post_type The post type object. - */ - return apply_filters( 'activitypub_post_type_description', $description, $post_type->name, $post_type ); -} - -/** - * Get the masked WordPress version to only show the major and minor version. - * - * @return string The masked version. - */ -function get_masked_wp_version() { - // Only show the major and minor version. - $version = get_bloginfo( 'version' ); - // Strip the RC or beta part. - $version = preg_replace( '/-.*$/', '', $version ); - $version = explode( '.', $version ); - $version = array_slice( $version, 0, 2 ); - - return implode( '.', $version ); -} - -/** - * Get the enclosures of a post. - * - * @param int $post_id The post ID. - * - * @return array The enclosures. - */ -function get_enclosures( $post_id ) { - $enclosures = get_post_meta( $post_id, 'enclosure', false ); - - if ( ! $enclosures ) { - return array(); - } - - $enclosures = array_map( - function ( $enclosure ) { - // Check if the enclosure is a string. - if ( ! $enclosure || ! is_string( $enclosure ) ) { - return false; - } - - $attributes = explode( "\n", $enclosure ); - - if ( ! isset( $attributes[0] ) || ! \wp_http_validate_url( $attributes[0] ) ) { - return false; - } - - return array( - 'url' => $attributes[0], - 'length' => $attributes[1] ?? null, - 'mediaType' => $attributes[2] ?? 'application/octet-stream', - ); - }, - $enclosures - ); - - return array_filter( $enclosures ); -} - -/** - * Retrieves the IDs of the ancestors of a comment. - * - * Adaption of `get_post_ancestors` from WordPress core. - * - * @see https://developer.wordpress.org/reference/functions/get_post_ancestors/ - * - * @param int|\WP_Comment $comment Comment ID or comment object. - * - * @return int[] Array of ancestor IDs. - */ -function get_comment_ancestors( $comment ) { - $comment = \get_comment( $comment ); - - if ( ! $comment || empty( $comment->comment_parent ) || (int) $comment->comment_parent === (int) $comment->comment_ID ) { - return array(); - } - - $ancestors = array(); - - $id = (int) $comment->comment_parent; - $ancestors[] = $id; - - while ( $id > 0 ) { - $ancestor = \get_comment( $id ); - $parent_id = (int) $ancestor->comment_parent; - - // Loop detection: If the ancestor has been seen before, break. - if ( empty( $parent_id ) || ( $parent_id === (int) $comment->comment_ID ) || in_array( $parent_id, $ancestors, true ) ) { - break; - } - - $id = $parent_id; - $ancestors[] = $id; - } - - return $ancestors; -} - -/** - * Change the display of large numbers on the site. - * - * @author Jeremy Herve - * - * @see https://wordpress.org/support/topic/abbreviate-numbers-with-k/ - * - * @param string $formatted Converted number in string format. - * @param float $number The number to convert based on locale. - * @param int $decimals Precision of the number of decimal places. - * - * @return string Converted number in string format. - */ -function custom_large_numbers( $formatted, $number, $decimals ) { - global $wp_locale; - - $decimals = 0; - $decimal_point = '.'; - $thousands_sep = ','; - - if ( isset( $wp_locale ) ) { - $decimals = (int) $wp_locale->number_format['decimal_point']; - $decimal_point = $wp_locale->number_format['decimal_point']; - $thousands_sep = $wp_locale->number_format['thousands_sep']; - } - - if ( $number < 1000 ) { // Any number less than a Thousand. - return \number_format( $number, $decimals, $decimal_point, $thousands_sep ); - } elseif ( $number < 1000000 ) { // Any number less than a million. - return \number_format( $number / 1000, $decimals, $decimal_point, $thousands_sep ) . 'K'; - } elseif ( $number < 1000000000 ) { // Any number less than a billion. - return \number_format( $number / 1000000, $decimals, $decimal_point, $thousands_sep ) . 'M'; - } else { // At least a billion. - return \number_format( $number / 1000000000, $decimals, $decimal_point, $thousands_sep ) . 'B'; - } - - // Default fallback. We should not get here. - return $formatted; -} - -/** - * Registers a ActivityPub comment type. - * - * @param string $comment_type Key for comment type. - * @param array $args Optional. Array of arguments for registering a comment type. Default empty array. - * - * @return array The registered Activitypub comment type. - */ -function register_comment_type( $comment_type, $args = array() ) { - global $activitypub_comment_types; - - if ( ! is_array( $activitypub_comment_types ) ) { - $activitypub_comment_types = array(); - } - - // Sanitize comment type name. - $comment_type = sanitize_key( $comment_type ); - - $activitypub_comment_types[ $comment_type ] = $args; - - /** - * Fires after a ActivityPub comment type is registered. - * - * @param string $comment_type Comment type. - * @param array $args Arguments used to register the comment type. - */ - do_action( 'activitypub_registered_comment_type', $comment_type, $args ); - - return $args; -} - -/** - * Normalize a URL. - * - * @param string $url The URL. - * - * @return string The normalized URL. - */ -function normalize_url( $url ) { - $url = \untrailingslashit( $url ); - $url = \str_replace( 'https://', '', $url ); - $url = \str_replace( 'http://', '', $url ); - $url = \str_replace( 'www.', '', $url ); - - return $url; -} - -/** - * Normalize a host. - * - * @param string $host The host. - * - * @return string The normalized host. - */ -function normalize_host( $host ) { - return \str_replace( 'www.', '', $host ); -} - -/** - * Get the reply intent URI as a JavaScript URI. - * - * @return string The reply intent URI. - */ -function get_reply_intent_js() { - return sprintf( - 'javascript:(()=>{window.open(\'%s\'+encodeURIComponent(window.location.href));})();', - get_reply_intent_url() - ); -} - -/** - * Get the reply intent URI. - * - * @return string The reply intent URI. - */ -function get_reply_intent_url() { - /** - * Filters the reply intent parameters. - * - * @param array $params The reply intent parameters. - */ - $params = \apply_filters( 'activitypub_reply_intent_params', array() ); - - $params += array( 'in_reply_to' => '' ); - $query = \http_build_query( $params ); - $path = 'post-new.php?' . $query; - $url = \admin_url( $path ); - - /** - * Filters the reply intent URL. - * - * @param string $url The reply intent URL. - */ - $url = \apply_filters( 'activitypub_reply_intent_url', $url ); - - return esc_url_raw( $url ); -} - -/** - * Replace content with links, mentions or hashtags by Regex callback and not affect protected tags. - * - * @param string $content The content that should be changed. - * @param string $regex The regex to use. - * @param callable $regex_callback Callback for replacement logic. - * - * @return string The content with links, mentions, hashtags, etc. - */ -function enrich_content_data( $content, $regex, $regex_callback ) { - // Small protection against execution timeouts: limit to 1 MB. - if ( mb_strlen( $content ) > MB_IN_BYTES ) { - return $content; - } - $tag_stack = array(); - $protected_tags = array( - 'pre', - 'code', - 'textarea', - 'style', - 'a', - ); - $content_with_links = ''; - $in_protected_tag = false; - foreach ( wp_html_split( $content ) as $chunk ) { - if ( preg_match( '#^$#i', $chunk, $m ) ) { - $content_with_links .= $chunk; - continue; - } - - if ( preg_match( '#^<(/)?([a-z-]+)\b[^>]*>$#i', $chunk, $m ) ) { - $tag = strtolower( $m[2] ); - if ( '/' === $m[1] ) { - // Closing tag. - $i = array_search( $tag, $tag_stack, true ); - // We can only remove the tag from the stack if it is in the stack. - if ( false !== $i ) { - $tag_stack = array_slice( $tag_stack, 0, $i ); - } - } else { - // Opening tag, add it to the stack. - $tag_stack[] = $tag; - } - - // If we're in a protected tag, the tag_stack contains at least one protected tag string. - // The protected tag state can only change when we encounter a start or end tag. - $in_protected_tag = array_intersect( $tag_stack, $protected_tags ); - - // Never inspect tags. - $content_with_links .= $chunk; - continue; - } - - if ( $in_protected_tag ) { - // Don't inspect a chunk inside an inspected tag. - $content_with_links .= $chunk; - continue; - } - - // Only reachable when there is no protected tag in the stack. - $content_with_links .= \preg_replace_callback( $regex, $regex_callback, $chunk ); - } - - return $content_with_links; -} - -/** - * Generate a summary of a post. - * - * This function generates a summary of a post by extracting: - * - * 1. The post excerpt if it exists. - * 2. The first part of the post content if it contains the tag. - * 3. An excerpt of the post content if it is longer than the specified length. - * - * @param int|\WP_Post $post The post ID or post object. - * @param integer $length The maximum length of the summary. - * Default is 500. It will be ignored if the post excerpt - * and the content above the tag. - * - * @return string The generated post summary. - */ -function generate_post_summary( $post, $length = 500 ) { - $post = get_post( $post ); - - if ( ! $post ) { - return ''; - } - - $content = \sanitize_post_field( 'post_excerpt', $post->post_excerpt, $post->ID ); - - if ( $content ) { - /** This filter is documented in wp-includes/post-template.php */ - return \apply_filters( 'the_excerpt', $content ); - } - - $content = \sanitize_post_field( 'post_content', $post->post_content, $post->ID ); - $content_parts = \get_extended( $content ); - - /** - * Filters the excerpt more value. - * - * @param string $excerpt_more The excerpt more. - */ - $excerpt_more = \apply_filters( 'activitypub_excerpt_more', '[…]' ); - $length = $length - strlen( $excerpt_more ); - - // Check for the tag. - if ( - ! empty( $content_parts['extended'] ) && - ! empty( $content_parts['main'] ) - ) { - $content = $content_parts['main'] . ' ' . $excerpt_more; - $length = null; - } - - $content = \html_entity_decode( $content ); - $content = \wp_strip_all_tags( $content ); - $content = \trim( $content ); - $content = \preg_replace( '/\R+/m', "\n\n", $content ); - $content = \preg_replace( '/[\r\t]/', '', $content ); - - if ( $length && \strlen( $content ) > $length ) { - $content = \wordwrap( $content, $length, '' ); - $content = \explode( '', $content, 2 ); - $content = $content[0] . ' ' . $excerpt_more; - } - - /* - Removed until this is merged: https://github.com/mastodon/mastodon/pull/28629 - /** This filter is documented in wp-includes/post-template.php - return \apply_filters( 'the_excerpt', $content ); - */ - return $content; -} - -/** - * Get the content warning of a post. - * - * @param int|\WP_Post $post_id The post ID or post object. - * - * @return string|false The content warning or false if not found. - */ -function get_content_warning( $post_id ) { - $post = get_post( $post_id ); - if ( ! $post ) { - return false; - } - - $warning = get_post_meta( $post->ID, 'activitypub_content_warning', true ); - if ( empty( $warning ) ) { - return false; - } - - return $warning; -} - -/** - * Get the ActivityPub ID of a User by the WordPress User ID. - * - * @param int $id The WordPress User ID. - * - * @return string The ActivityPub ID (a URL) of the User. - */ -function get_user_id( $id ) { - $user = Actors::get_by_id( $id ); - - if ( ! $user ) { - return false; - } - - return $user->get_id(); -} - -/** - * Get the ActivityPub ID of a Post by the WordPress Post ID. - * - * @param int $id The WordPress Post ID. - * - * @return string The ActivityPub ID (a URL) of the Post. - */ -function get_post_id( $id ) { - $post = get_post( $id ); - - if ( ! $post ) { - return false; - } - - $transformer = new Post( $post ); - return $transformer->get_id(); -} - -/** - * Check if a URL is from the same domain as the site. - * - * @param string $url The URL to check. - * - * @return boolean True if the URL is from the same domain, false otherwise. - */ -function is_same_domain( $url ) { - $remote = \wp_parse_url( $url, PHP_URL_HOST ); - - if ( ! $remote ) { - return false; - } - - $remote = normalize_host( $remote ); - $self = normalize_host( home_host() ); - - return $remote === $self; -} - -/** - * Get the visibility of a post. - * - * @param int $post_id The post ID. - * - * @return string|false The visibility of the post or false if not found. - */ -function get_content_visibility( $post_id ) { - $post = get_post( $post_id ); - if ( ! $post ) { - return false; - } - - $visibility = \get_post_meta( $post->ID, 'activitypub_content_visibility', true ); - $_visibility = ACTIVITYPUB_CONTENT_VISIBILITY_PUBLIC; - $options = array( - ACTIVITYPUB_CONTENT_VISIBILITY_QUIET_PUBLIC, - ACTIVITYPUB_CONTENT_VISIBILITY_PRIVATE, - ACTIVITYPUB_CONTENT_VISIBILITY_LOCAL, - ); - - if ( in_array( $visibility, $options, true ) ) { - $_visibility = $visibility; - } - - /** - * Filters the visibility of a post. - * - * @param string $_visibility The visibility of the post. Possible values are: - * - 'public': Post is public and federated. - * - 'quiet_public': Post is public but not federated. - * - 'local': Post is only visible locally. - * @param \WP_Post $post The post object. - */ - return \apply_filters( 'activitypub_content_visibility', $_visibility, $post ); -} - -/** - * Retrieves the Host for the current site where the front end is accessible. - * - * @return string The host for the current site. - */ -function home_host() { - return \wp_parse_url( \home_url(), PHP_URL_HOST ); -} - -/** - * Returns the website hosts allowed to credit this blog. - * - * @return array|null The attribution domains or null if not found. - */ -function get_attribution_domains() { - if ( '1' !== \get_option( 'activitypub_use_opengraph', '1' ) ) { - return null; - } - - $domains = \get_option( 'activitypub_attribution_domains', home_host() ); - $domains = explode( PHP_EOL, $domains ); - - if ( ! $domains ) { - $domains = null; - } - - return $domains; -} - -/** - * Get the base URL for uploads. - * - * @return string The upload base URL. - */ -function get_upload_baseurl() { - /** - * Early filter to allow plugins to set the upload base URL. - * - * @param string|false $maybe_upload_dir The upload base URL or false if not set. - */ - $maybe_upload_dir = apply_filters( 'pre_activitypub_get_upload_baseurl', false ); - if ( false !== $maybe_upload_dir ) { - return $maybe_upload_dir; - } - - $upload_dir = \wp_get_upload_dir(); - - /** - * Filters the upload base URL. - * - * @param string $upload_dir The upload base URL. Default \wp_get_upload_dir()['baseurl'] - */ - return apply_filters( 'activitypub_get_upload_baseurl', $upload_dir['baseurl'] ); -} - -/** - * Check if Authorized-Fetch is enabled. - * - * @see https://docs.joinmastodon.org/admin/config/#authorized_fetch - * - * @return boolean True if Authorized-Fetch is enabled, false otherwise. - */ -function use_authorized_fetch() { - $use = (bool) \get_option( 'activitypub_authorized_fetch' ); - - /** - * Filters whether to use Authorized-Fetch. - * - * @param boolean $use_authorized_fetch True if Authorized-Fetch is enabled, false otherwise. - */ - return apply_filters( 'activitypub_use_authorized_fetch', $use ); -} - -/** - * Check if an ID is from the same domain as the site. - * - * @param string $id The ID URI to check. - * - * @return boolean True if the ID is a self-pint, false otherwise. - */ -function is_self_ping( $id ) { - $query_string = \wp_parse_url( $id, PHP_URL_QUERY ); - - if ( ! $query_string ) { - return false; - } - - $query = array(); - \parse_str( $query_string, $query ); - - if ( - is_same_domain( $id ) && - in_array( 'c', array_keys( $query ), true ) - ) { - return true; - } - - return false; -} - -/** - * Add an object to the outbox. - * - * @param mixed $data The object to add to the outbox. - * @param string|null $activity_type Optional. The type of the Activity or null if `$data` is an Activity. Default null. - * @param integer $user_id Optional. The User-ID. Default 0. - * @param string $content_visibility Optional. The visibility of the content. See `constants.php` for possible values: `ACTIVITYPUB_CONTENT_VISIBILITY_*`. Default null. - * - * @return boolean|int The ID of the outbox item or false on failure. - */ -function add_to_outbox( $data, $activity_type = null, $user_id = 0, $content_visibility = null ) { - $transformer = Transformer_Factory::get_transformer( $data ); - - if ( ! $transformer || is_wp_error( $transformer ) ) { - return false; - } - - if ( $content_visibility ) { - $transformer->set_content_visibility( $content_visibility ); - } else { - $content_visibility = $transformer->get_content_visibility(); - } - - if ( $activity_type ) { - $activity = $transformer->to_activity( $activity_type ); - } else { - $activity = $transformer->to_object(); - } - - if ( ! $activity || \is_wp_error( $activity ) ) { - return false; - } - - // If the user is disabled, fall back to the blog user when available. - if ( ! user_can_activitypub( $user_id ) ) { - if ( user_can_activitypub( Actors::BLOG_USER_ID ) ) { - $user_id = Actors::BLOG_USER_ID; - } else { - return false; - } - } - - $outbox_activity_id = Outbox::add( $activity, $user_id, $content_visibility ); - - if ( ! $outbox_activity_id ) { - return false; - } - - /** - * Action triggered after an object has been added to the outbox. - * - * @param int $outbox_activity_id The ID of the outbox item. - * @param Activity $activity The activity object. - * @param int $user_id The User-ID. - * @param string $content_visibility The visibility of the content. See `constants.php` for possible values: `ACTIVITYPUB_CONTENT_VISIBILITY_*`. - */ - \do_action( 'post_activitypub_add_to_outbox', $outbox_activity_id, $activity, $user_id, $content_visibility ); - - set_wp_object_state( $data, 'federated' ); - - return $outbox_activity_id; -} - -/** - * Check if an `$data` is an Activity. - * - * @see https://www.w3.org/ns/activitystreams#activities - * - * @param array|object|string $data The data to check. - * - * @return boolean True if the `$data` is an Activity, false otherwise. - */ -function is_activity( $data ) { - /** - * Filters the activity types. - * - * @param array $types The activity types. - */ - $types = apply_filters( 'activitypub_activity_types', Activity::TYPES ); - - if ( is_string( $data ) ) { - return in_array( $data, $types, true ); - } - - if ( is_array( $data ) && isset( $data['type'] ) ) { - return in_array( $data['type'], $types, true ); - } - - if ( is_object( $data ) && $data instanceof Base_Object ) { - return in_array( $data->get_type(), $types, true ); - } - - return false; -} - -/** - * Check if an `$data` is an Actor. - * - * @see https://www.w3.org/ns/activitystreams#actor - * - * @param array|object|string $data The data to check. - * - * @return boolean True if the `$data` is an Actor, false otherwise. - */ -function is_actor( $data ) { - /** - * Filters the actor types. - * - * @param array $types The actor types. - */ - $types = apply_filters( 'activitypub_actor_types', Actor::TYPES ); - - if ( is_string( $data ) ) { - return in_array( $data, $types, true ); - } - - if ( is_array( $data ) && isset( $data['type'] ) ) { - return in_array( $data['type'], $types, true ); - } - - if ( is_object( $data ) && $data instanceof Base_Object ) { - return in_array( $data->get_type(), $types, true ); - } - - return false; -} - -/** - * Get an ActivityPub embed HTML for a URL. - * - * @param string $url The URL to get the embed for. - * @param boolean $inline_css Whether to inline CSS. Default true. - * - * @return string|false The embed HTML or false if not found. - */ -function get_embed_html( $url, $inline_css = true ) { - return Embed::get_html( $url, $inline_css ); -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-announce.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-announce.php deleted file mode 100644 index 660bd028..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-announce.php +++ /dev/null @@ -1,125 +0,0 @@ -get_json_params(); - - if ( empty( $json_params['type'] ) ) { - return false; - } - - if ( - 'Create' !== $json_params['type'] || - is_wp_error( $request ) - ) { - return $valid; - } - - $object = $json_params['object']; - - if ( ! is_array( $object ) ) { - return false; - } - - $required = array( - 'id', - 'content', - ); - - if ( array_intersect( $required, array_keys( $object ) ) !== $required ) { - return false; - } - - return $valid; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-delete.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-delete.php deleted file mode 100644 index 94faf57d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-delete.php +++ /dev/null @@ -1,196 +0,0 @@ -delete(); - self::maybe_delete_interactions( $activity ); - } - } - - /** - * Delete Reactions if Actor-URL is a Tombstone. - * - * @param array $activity The delete activity. - */ - public static function maybe_delete_interactions( $activity ) { - // Verify that Actor is deleted. - if ( Http::is_tombstone( $activity['actor'] ) ) { - \wp_schedule_single_event( - \time(), - 'activitypub_delete_actor_interactions', - array( $activity['actor'] ) - ); - } - } - - /** - * Delete comments from an Actor. - * - * @param string $actor The URL of the actor whose comments to delete. - */ - public static function delete_interactions( $actor ) { - $comments = Interactions::get_interactions_by_actor( $actor ); - - foreach ( $comments as $comment ) { - wp_delete_comment( $comment, true ); - } - } - - /** - * Delete a Reaction if URL is a Tombstone. - * - * @param array $activity The delete activity. - */ - public static function maybe_delete_interaction( $activity ) { - if ( is_array( $activity['object'] ) ) { - $id = $activity['object']['id']; - } else { - $id = $activity['object']; - } - - $comments = Interactions::get_interaction_by_id( $id ); - - if ( $comments && Http::is_tombstone( $id ) ) { - foreach ( $comments as $comment ) { - wp_delete_comment( $comment->comment_ID, true ); - } - } - } - - /** - * Defer signature verification for `Delete` requests. - * - * @param bool $defer Whether to defer signature verification. - * @param WP_REST_Request $request The request object. - * - * @return bool Whether to defer signature verification. - */ - public static function defer_signature_verification( $defer, $request ) { - $json = $request->get_json_params(); - - if ( isset( $json['type'] ) && 'Delete' === $json['type'] ) { - return true; - } - - return false; - } - - /** - * Set the object to the object ID. - * - * @param \Activitypub\Activity\Activity $activity The Activity object. - * @return \Activitypub\Activity\Activity The filtered Activity object. - */ - public static function outbox_activity( $activity ) { - if ( 'Delete' === $activity->get_type() ) { - $activity->set_object( object_to_uri( $activity->get_object() ) ); - } - - return $activity; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-follow.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-follow.php deleted file mode 100644 index a1942211..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-follow.php +++ /dev/null @@ -1,114 +0,0 @@ -get__id(); - - // Save follower. - $follower = Followers::add_follower( - $user_id, - $activity['actor'] - ); - - /** - * Fires after a new follower has been added. - * - * @param string $actor The URL of the actor (follower) who initiated the follow. - * @param array $activity The complete activity data of the follow request. - * @param int $user_id The ID of the WordPress user being followed. - * @param \Activitypub\Model\Follower|\WP_Error $follower The Follower object containing the new follower's data. - */ - do_action( 'activitypub_followers_post_follow', $activity['actor'], $activity, $user_id, $follower ); - - // Send notification. - $notification = new Notification( - 'follow', - $activity['actor'], - $activity, - $user_id - ); - $notification->send(); - } - - /** - * Send Accept response. - * - * @param string $actor The Actor URL. - * @param array $activity_object The Activity object. - * @param int $user_id The ID of the WordPress User. - * @param \Activitypub\Model\Follower|\WP_Error $follower The Follower object. - */ - public static function queue_accept( $actor, $activity_object, $user_id, $follower ) { - if ( \is_wp_error( $follower ) ) { - // Impossible to send a "Reject" because we can not get the Remote-Inbox. - return; - } - - // Only send minimal data. - $activity_object = array_intersect_key( - $activity_object, - array_flip( - array( - 'id', - 'type', - 'actor', - 'object', - ) - ) - ); - - $activity = new Activity(); - $activity->set_type( 'Accept' ); - $activity->set_actor( Actors::get_by_id( $user_id )->get_id() ); - $activity->set_object( $activity_object ); - $activity->set_to( array( $actor ) ); - - add_to_outbox( $activity, null, $user_id, ACTIVITYPUB_CONTENT_VISIBILITY_PRIVATE ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-like.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-like.php deleted file mode 100644 index 10cbce85..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-like.php +++ /dev/null @@ -1,80 +0,0 @@ -get_type() ) { - $activity->set_object( object_to_uri( $activity->get_object() ) ); - } - - return $activity; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-move.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-move.php deleted file mode 100644 index 71032a45..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-move.php +++ /dev/null @@ -1,213 +0,0 @@ -from_array( $target_object ); - $origin_follower->set_id( $target ); - $origin_id = $origin_follower->upsert(); - - global $wpdb; - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery - $wpdb->update( - $wpdb->posts, - array( 'guid' => sanitize_url( $target ) ), - array( 'ID' => sanitize_key( $origin_id ) ) - ); - - // Clear the cache. - wp_cache_delete( $origin_id, 'posts' ); - return; - } - - /* - * If the new target is followed, and the origin is followed, - * move users and delete the origin follower. - */ - if ( $target_follower && $origin_follower ) { - $origin_users = \get_post_meta( $origin_follower->get__id(), '_activitypub_user_id', false ); - $target_users = \get_post_meta( $target_follower->get__id(), '_activitypub_user_id', false ); - - // Get all user ids from $origin_users that are not in $target_users. - $users = \array_diff( $origin_users, $target_users ); - - foreach ( $users as $user_id ) { - \add_post_meta( $target_follower->get__id(), '_activitypub_user_id', $user_id ); - } - - $origin_follower->delete(); - } - } - - /** - * Convert the object and origin to the correct format. - * - * @param \Activitypub\Activity\Activity $activity The Activity object. - * @return \Activitypub\Activity\Activity The filtered Activity object. - */ - public static function outbox_activity( $activity ) { - if ( 'Move' === $activity->get_type() ) { - $activity->set_object( object_to_uri( $activity->get_object() ) ); - $activity->set_origin( $activity->get_actor() ); - $activity->set_target( $activity->get_object() ); - } - - return $activity; - } - - /** - * Extract the target from the activity. - * - * The ActivityStreams spec define the `target` attribute as the - * destination of the activity, but Mastodon uses the `object` - * attribute to move profiles. - * - * @param array $activity The JSON "Move" Activity. - * - * @return string|null The target URI or null if not found. - */ - private static function extract_target( $activity ) { - if ( ! empty( $activity['target'] ) ) { - return object_to_uri( $activity['target'] ); - } - - if ( ! empty( $activity['object'] ) ) { - return object_to_uri( $activity['object'] ); - } - - return null; - } - - /** - * Extract the origin from the activity. - * - * The ActivityStreams spec define the `origin` attribute as source - * of the activity, but Mastodon uses the `actor` attribute as source - * to move profiles. - * - * @param array $activity The JSON "Move" Activity. - * - * @return string|null The origin URI or null if not found. - */ - private static function extract_origin( $activity ) { - if ( ! empty( $activity['origin'] ) ) { - return object_to_uri( $activity['origin'] ); - } - - if ( ! empty( $activity['actor'] ) ) { - return object_to_uri( $activity['actor'] ); - } - - return null; - } - - /** - * Verify the move. - * - * @param array $target_object The target object. - * @param array $origin_object The origin object. - * - * @return bool True if the move is verified, false otherwise. - */ - private static function verify_move( $target_object, $origin_object ) { - // Check if both objects are valid. - if ( \is_wp_error( $target_object ) || \is_wp_error( $origin_object ) ) { - return false; - } - - // Check if both objects are persons. - if ( 'Person' !== $target_object['type'] || 'Person' !== $origin_object['type'] ) { - return false; - } - - // Check if the target and origin are not the same. - if ( $target_object['id'] === $origin_object['id'] ) { - return false; - } - - // Check if the target has an alsoKnownAs property. - if ( empty( $target_object['also_known_as'] ) ) { - return false; - } - - // Check if the origin is in the alsoKnownAs property of the target. - if ( ! in_array( $origin_object['id'], $target_object['also_known_as'], true ) ) { - return false; - } - - // Check if the origin has a movedTo property. - if ( empty( $origin_object['movedTo'] ) ) { - return false; - } - - // Check if the movedTo property of the origin is the target. - if ( $origin_object['movedTo'] !== $target_object['id'] ) { - return false; - } - - return true; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-undo.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-undo.php deleted file mode 100644 index dcbc6f72..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-undo.php +++ /dev/null @@ -1,90 +0,0 @@ -get__id(); - $actor = object_to_uri( $activity['actor'] ); - - $state = Followers::remove_follower( $user_id, $actor ); - } - - // Handle "Undo" requests for "Like" and "Create" activities. - if ( in_array( $type, array( 'Like', 'Create', 'Announce' ), true ) ) { - if ( ACTIVITYPUB_DISABLE_INCOMING_INTERACTIONS ) { - return; - } - - $object_id = object_to_uri( $activity['object'] ); - $comment = Comment::object_id_to_comment( esc_url_raw( $object_id ) ); - - if ( empty( $comment ) ) { - return; - } - - $state = wp_delete_comment( $comment, true ); - } - - /** - * Fires after an "Undo" activity has been handled. - * - * @param array $activity The JSON "Undo" Activity. - * @param int|null $user_id The ID of the user who initiated the "Undo" activity otherwise null. - * @param mixed $state The state of the "Undo" activity. - */ - do_action( 'activitypub_handled_undo', $activity, $user_id, $state ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-update.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-update.php deleted file mode 100644 index 2a068b29..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/handler/class-update.php +++ /dev/null @@ -1,125 +0,0 @@ -from_array( $actor ); - $follower->upsert(); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-application.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-application.php deleted file mode 100644 index 0309941e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-application.php +++ /dev/null @@ -1,255 +0,0 @@ -get_id(); - } - - /** - * Returns the User-URL with @-Prefix for the username. - * - * @return string The User-URL with @-Prefix for the username. - */ - public function get_alternate_url() { - return $this->get_id(); - } - - /** - * Get the Username. - * - * @return string The Username. - */ - public function get_name() { - return 'application'; - } - - /** - * Get the preferred username. - * - * @return string The preferred username. - */ - public function get_preferred_username() { - return $this->get_name(); - } - - /** - * Get the User-Icon. - * - * @return string[] The User-Icon. - */ - public function get_icon() { - // Try site icon first. - $icon_id = get_option( 'site_icon' ); - - // Try custom logo second. - if ( ! $icon_id ) { - $icon_id = get_theme_mod( 'custom_logo' ); - } - - $icon_url = false; - - if ( $icon_id ) { - $icon = wp_get_attachment_image_src( $icon_id, 'full' ); - if ( $icon ) { - $icon_url = $icon[0]; - } - } - - if ( ! $icon_url ) { - // Fallback to default icon. - $icon_url = plugins_url( '/assets/img/wp-logo.png', ACTIVITYPUB_PLUGIN_FILE ); - } - - return array( - 'type' => 'Image', - 'url' => esc_url( $icon_url ), - ); - } - - /** - * Get the User-Header-Image. - * - * @return string[]|null The User-Header-Image. - */ - public function get_header_image() { - if ( \has_header_image() ) { - return array( - 'type' => 'Image', - 'url' => esc_url( \get_header_image() ), - ); - } - - return null; - } - - /** - * Get the first published date. - * - * @return string The published date. - */ - public function get_published() { - $first_post = new WP_Query( - array( - 'orderby' => 'date', - 'order' => 'ASC', - 'number' => 1, - ) - ); - - if ( ! empty( $first_post->posts[0] ) ) { - $time = \strtotime( $first_post->posts[0]->post_date_gmt ); - } else { - $time = \time(); - } - - return \gmdate( ACTIVITYPUB_DATE_TIME_RFC3339, $time ); - } - - /** - * Returns the Inbox-API-Endpoint. - * - * @return string The Inbox-Endpoint. - */ - public function get_inbox() { - return get_rest_url_by_path( sprintf( 'actors/%d/inbox', $this->get__id() ) ); - } - - /** - * Returns the Outbox-API-Endpoint. - * - * @return string The Outbox-Endpoint. - */ - public function get_outbox() { - return get_rest_url_by_path( sprintf( 'actors/%d/outbox', $this->get__id() ) ); - } - - /** - * Returns a user@domain type of identifier for the user. - * - * @return string The Webfinger-Identifier. - */ - public function get_webfinger() { - return $this->get_preferred_username() . '@' . \wp_parse_url( \home_url(), \PHP_URL_HOST ); - } - - /** - * Returns the public key. - * - * @return string[] The public key. - */ - public function get_public_key() { - return array( - 'id' => $this->get_id() . '#main-key', - 'owner' => $this->get_id(), - 'publicKeyPem' => Signature::get_public_key_for( Actors::APPLICATION_USER_ID ), - ); - } - - /** - * Get the User description. - * - * @return string The User description. - */ - public function get_summary() { - return \wpautop( - \wp_kses( - \get_bloginfo( 'description' ), - 'default' - ) - ); - } - - /** - * Returns the canonical URL of the object. - * - * @return string|null The canonical URL of the object. - */ - public function get_canonical_url() { - return \home_url(); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-blog.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-blog.php deleted file mode 100644 index e46e5b02..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-blog.php +++ /dev/null @@ -1,600 +0,0 @@ -get_url(); - } - - return \add_query_arg( 'author', $this->_id, \trailingslashit( \home_url() ) ); - } - - /** - * Get the type of the object. - * - * If the Blog is in "single user" mode, return "Person" instead of "Group". - * - * @return string The type of the object. - */ - public function get_type() { - if ( is_single_user() ) { - return 'Person'; - } else { - return 'Group'; - } - } - - /** - * Get the Username. - * - * @return string The Username. - */ - public function get_name() { - return \wp_strip_all_tags( - \html_entity_decode( - \get_bloginfo( 'name' ), - \ENT_QUOTES, - 'UTF-8' - ) - ); - } - - /** - * Get the User description. - * - * @return string The User description. - */ - public function get_summary() { - $summary = \get_option( 'activitypub_blog_description', null ); - - if ( ! $summary ) { - $summary = \get_bloginfo( 'description' ); - } - - return \wpautop( - \wp_kses( - $summary, - 'default' - ) - ); - } - - /** - * Get the User url. - * - * @return string The User url. - */ - public function get_url() { - return \esc_url( \trailingslashit( get_home_url() ) . '@' . $this->get_preferred_username() ); - } - - /** - * Get blog's homepage URL. - * - * @return string The User-Url. - */ - public function get_alternate_url() { - return \esc_url( \trailingslashit( get_home_url() ) ); - } - - /** - * Generate a default Username. - * - * @return string The auto-generated Username. - */ - public static function get_default_username() { - // Check if domain host has a subdomain. - $host = \wp_parse_url( \get_home_url(), \PHP_URL_HOST ); - $host = \preg_replace( '/^www\./i', '', $host ); - - /** - * Filters the default blog username. - * - * This filter allows developers to modify the default username that is - * generated for the blog, which by default is the site's host name - * without the 'www.' prefix. - * - * @param string $host The default username (site's host name). - */ - return apply_filters( 'activitypub_default_blog_username', $host ); - } - - /** - * Get the preferred Username. - * - * @return string The Username. - */ - public function get_preferred_username() { - $username = \get_option( 'activitypub_blog_identifier' ); - - if ( $username ) { - return $username; - } - - return self::get_default_username(); - } - - /** - * Get the User icon. - * - * @return string[] The User icon. - */ - public function get_icon() { - // Try site_logo, falling back to site_icon, first. - $icon_id = get_option( 'site_icon' ); - - // Try custom logo second. - if ( ! $icon_id ) { - $icon_id = get_theme_mod( 'custom_logo' ); - } - - $icon_url = false; - - if ( $icon_id ) { - $icon = wp_get_attachment_image_src( $icon_id, 'full' ); - if ( $icon ) { - $icon_url = $icon[0]; - } - } - - if ( ! $icon_url ) { - // Fallback to default icon. - $icon_url = plugins_url( '/assets/img/wp-logo.png', ACTIVITYPUB_PLUGIN_FILE ); - } - - return array( - 'type' => 'Image', - 'url' => esc_url( $icon_url ), - ); - } - - /** - * Get the User-Header-Image. - * - * @return string[]|null The User-Header-Image. - */ - public function get_image() { - $header_image = get_option( 'activitypub_header_image' ); - $image_url = null; - - if ( $header_image ) { - $image_url = \wp_get_attachment_url( $header_image ); - } - - if ( ! $image_url && \has_header_image() ) { - $image_url = \get_header_image(); - } - - if ( $image_url ) { - return array( - 'type' => 'Image', - 'url' => esc_url( $image_url ), - ); - } - - return null; - } - - /** - * Get the published date. - * - * @return string The published date. - */ - public function get_published() { - $first_post = new WP_Query( - array( - 'orderby' => 'date', - 'order' => 'ASC', - 'number' => 1, - ) - ); - - if ( ! empty( $first_post->posts[0] ) ) { - $time = \strtotime( $first_post->posts[0]->post_date_gmt ); - } else { - $time = \time(); - } - - return \gmdate( ACTIVITYPUB_DATE_TIME_RFC3339, $time ); - } - - /** - * Get the canonical URL. - * - * @return string|null The canonical URL. - */ - public function get_canonical_url() { - return \home_url(); - } - - /** - * Get the Moderators endpoint. - * - * @return string|null The Moderators endpoint. - */ - public function get_moderators() { - if ( is_single_user() || 'Group' !== $this->get_type() ) { - return null; - } - - return get_rest_url_by_path( 'collections/moderators' ); - } - - /** - * Get attributedTo value. - * - * @return string|null The attributedTo value. - */ - public function get_attributed_to() { - if ( is_single_user() || 'Group' !== $this->get_type() ) { - return null; - } - - return get_rest_url_by_path( 'collections/moderators' ); - } - - /** - * Get the public key information. - * - * @return string[] The public key. - */ - public function get_public_key() { - return array( - 'id' => $this->get_id() . '#main-key', - 'owner' => $this->get_id(), - 'publicKeyPem' => Signature::get_public_key_for( $this->get__id() ), - ); - } - - /** - * Returns whether posting is restricted to mods. - * - * @return bool|null True if posting is restricted to mods, null if not applicable. - */ - public function get_posting_restricted_to_mods() { - if ( 'Group' === $this->get_type() ) { - return true; - } - - return null; - } - - /** - * Returns the Inbox-API-Endpoint. - * - * @return string The Inbox-Endpoint. - */ - public function get_inbox() { - return get_rest_url_by_path( sprintf( 'actors/%d/inbox', $this->get__id() ) ); - } - - /** - * Returns the Outbox-API-Endpoint. - * - * @return string The Outbox-Endpoint. - */ - public function get_outbox() { - return get_rest_url_by_path( sprintf( 'actors/%d/outbox', $this->get__id() ) ); - } - - /** - * Returns the Followers-API-Endpoint. - * - * @return string The Followers-Endpoint. - */ - public function get_followers() { - return get_rest_url_by_path( sprintf( 'actors/%d/followers', $this->get__id() ) ); - } - - /** - * Returns the Following-API-Endpoint. - * - * @return string The Following-Endpoint. - */ - public function get_following() { - return get_rest_url_by_path( sprintf( 'actors/%d/following', $this->get__id() ) ); - } - - /** - * Returns endpoints. - * - * @return string[]|null The endpoints. - */ - public function get_endpoints() { - $endpoints = null; - - if ( \get_option( 'activitypub_shared_inbox' ) ) { - $endpoints = array( - 'sharedInbox' => get_rest_url_by_path( 'inbox' ), - ); - } - - return $endpoints; - } - - /** - * Returns a user@domain type of identifier for the user. - * - * @return string The Webfinger-Identifier. - */ - public function get_webfinger() { - return $this->get_preferred_username() . '@' . \wp_parse_url( \home_url(), \PHP_URL_HOST ); - } - - /** - * Returns the Featured-API-Endpoint. - * - * @return string The Featured-Endpoint. - */ - public function get_featured() { - return get_rest_url_by_path( sprintf( 'actors/%d/collections/featured', $this->get__id() ) ); - } - - /** - * Returns whether the site is indexable. - * - * @return bool Whether the site is indexable. - */ - public function get_indexable() { - if ( is_blog_public() ) { - return true; - } else { - return false; - } - } - - /** - * Update the Username. - * - * @param mixed $value The new value. - * @return bool True if the attribute was updated, false otherwise. - */ - public function update_name( $value ) { - return \update_option( 'blogname', $value ); - } - - /** - * Update the User description. - * - * @param mixed $value The new value. - * @return bool True if the attribute was updated, false otherwise. - */ - public function update_summary( $value ) { - return \update_option( 'blogdescription', $value ); - } - - /** - * Update the User icon. - * - * @param mixed $value The new value. - * @return bool True if the attribute was updated, false otherwise. - */ - public function update_icon( $value ) { - if ( ! wp_attachment_is_image( $value ) ) { - return false; - } - return \update_option( 'site_icon', $value ); - } - - /** - * Update the User-Header-Image. - * - * @param mixed $value The new value. - * @return bool True if the attribute was updated, false otherwise. - */ - public function update_header( $value ) { - if ( ! wp_attachment_is_image( $value ) ) { - return false; - } - return \update_option( 'activitypub_header_image', $value ); - } - - /** - * Get the User - Hashtags. - * - * @see https://docs.joinmastodon.org/spec/activitypub/#Hashtag - * - * @return string[] The User - Hashtags. - */ - public function get_tag() { - $hashtags = array(); - - $args = array( - 'orderby' => 'count', - 'order' => 'DESC', - 'number' => 10, - ); - - $tags = get_tags( $args ); - - foreach ( $tags as $tag ) { - $hashtags[] = array( - 'type' => 'Hashtag', - 'href' => \get_tag_link( $tag->term_id ), - 'name' => esc_hashtag( $tag->name ), - ); - } - - return $hashtags; - } - - /** - * Extend the User-Output with Attachments. - * - * @return array The extended User-Output. - */ - public function get_attachment() { - $extra_fields = Extra_Fields::get_actor_fields( $this->_id ); - return Extra_Fields::fields_to_attachments( $extra_fields ); - } - - /** - * Returns the website hosts allowed to credit this blog. - * - * @return string[]|null The attribution domains or null if not found. - */ - public function get_attribution_domains() { - return get_attribution_domains(); - } - - /** - * Returns the alsoKnownAs. - * - * @return string[] The alsoKnownAs. - */ - public function get_also_known_as() { - $also_known_as = array( - \add_query_arg( 'author', $this->_id, \home_url( '/' ) ), - $this->get_url(), - $this->get_alternate_url(), - ); - - $also_known_as = array_merge( $also_known_as, \get_option( 'activitypub_blog_user_also_known_as', array() ) ); - - return array_unique( $also_known_as ); - } - - /** - * Returns the movedTo. - * - * @return string The movedTo. - */ - public function get_moved_to() { - $moved_to = \get_option( 'activitypub_blog_user_moved_to' ); - - return $moved_to && $moved_to !== $this->get_id() ? $moved_to : null; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-follower.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-follower.php deleted file mode 100644 index c7d50ea2..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-follower.php +++ /dev/null @@ -1,410 +0,0 @@ -_id, '_activitypub_errors', false ); - } - - /** - * Get the Summary. - * - * @return string The Summary. - */ - public function get_summary() { - if ( isset( $this->summary ) ) { - return $this->summary; - } - - return ''; - } - - /** - * Getter for URL attribute. - * - * Falls back to ID, if no URL is set. This is relevant for - * Platforms like Lemmy, where the ID is the URL. - * - * @return string The URL. - */ - public function get_url() { - if ( $this->url ) { - return $this->url; - } - - return $this->id; - } - - /** - * Reset (delete) all errors. - */ - public function reset_errors() { - delete_post_meta( $this->_id, '_activitypub_errors' ); - } - - /** - * Count the errors. - * - * @return int The number of errors. - */ - public function count_errors() { - $errors = $this->get_errors(); - - if ( is_array( $errors ) && ! empty( $errors ) ) { - return count( $errors ); - } - - return 0; - } - - /** - * Return the latest error message. - * - * @return string The error message. - */ - public function get_latest_error_message() { - $errors = $this->get_errors(); - - if ( is_array( $errors ) && ! empty( $errors ) ) { - return reset( $errors ); - } - - return ''; - } - - /** - * Update the current Follower object. - */ - public function update() { - $this->save(); - } - - /** - * Validate the current Follower object. - * - * @return boolean True if the verification was successful. - */ - public function is_valid() { - // The minimum required attributes. - $required_attributes = array( - 'id', - 'preferredUsername', - 'inbox', - 'publicKey', - 'publicKeyPem', - ); - - foreach ( $required_attributes as $attribute ) { - if ( ! $this->get( $attribute ) ) { - return false; - } - } - - return true; - } - - /** - * Save the current Follower object. - * - * @return int|WP_Error The post ID or an WP_Error. - */ - public function save() { - if ( ! $this->is_valid() ) { - return new WP_Error( 'activitypub_invalid_follower', __( 'Invalid Follower', 'activitypub' ), array( 'status' => 400 ) ); - } - - if ( ! $this->get__id() ) { - global $wpdb; - - // phpcs:ignore WordPress.DB.DirectDatabaseQuery - $post_id = $wpdb->get_var( - $wpdb->prepare( - "SELECT ID FROM $wpdb->posts WHERE guid=%s", - esc_sql( $this->get_id() ) - ) - ); - - if ( $post_id ) { - $post = get_post( $post_id ); - $this->set__id( $post->ID ); - } - } - - $post_id = $this->get__id(); - - $args = array( - 'ID' => $post_id, - 'guid' => esc_url_raw( $this->get_id() ), - 'post_title' => wp_strip_all_tags( sanitize_text_field( $this->get_name() ) ), - 'post_author' => 0, - 'post_type' => Followers::POST_TYPE, - 'post_name' => esc_url_raw( $this->get_id() ), - 'post_excerpt' => sanitize_text_field( wp_kses( $this->get_summary(), 'user_description' ) ), - 'post_status' => 'publish', - 'meta_input' => $this->get_post_meta_input(), - ); - - if ( ! empty( $post_id ) ) { - // If this is an update, prevent the "followed" date from being overwritten by the current date. - $post = get_post( $post_id ); - $args['post_date'] = $post->post_date; - $args['post_date_gmt'] = $post->post_date_gmt; - } - - $post_id = wp_insert_post( $args ); - $this->_id = $post_id; - - return $post_id; - } - - /** - * Upsert the current Follower object. - * - * @return int|WP_Error The post ID or an WP_Error. - */ - public function upsert() { - return $this->save(); - } - - /** - * Delete the current Follower object. - * - * Beware that this os deleting a Follower for ALL users!!! - * - * To delete only the User connection (unfollow) - * - * @see \Activitypub\Rest\Followers::remove_follower() - */ - public function delete() { - wp_delete_post( $this->_id ); - } - - /** - * Update the post meta. - */ - protected function get_post_meta_input() { - $meta_input = array(); - $meta_input['_activitypub_inbox'] = $this->get_shared_inbox(); - $meta_input['_activitypub_actor_json'] = wp_slash( $this->to_json() ); - - return $meta_input; - } - - /** - * Get the icon. - * - * Sets a fallback to better handle API and HTML outputs. - * - * @return string[] The icon. - */ - public function get_icon() { - if ( isset( $this->icon['url'] ) ) { - return $this->icon; - } - - return array( - 'type' => 'Image', - 'mediaType' => 'image/jpeg', - 'url' => ACTIVITYPUB_PLUGIN_URL . 'assets/img/mp.jpg', - ); - } - - /** - * Get Name. - * - * Tries to extract a name from the URL or ID if not set. - * - * @return string The name. - */ - public function get_name() { - if ( $this->name ) { - return $this->name; - } elseif ( $this->preferred_username ) { - return $this->preferred_username; - } - - return $this->extract_name_from_uri(); - } - - /** - * The preferred Username. - * - * Tries to extract a name from the URL or ID if not set. - * - * @return string The preferred Username. - */ - public function get_preferred_username() { - if ( $this->preferred_username ) { - return $this->preferred_username; - } - - return $this->extract_name_from_uri(); - } - - /** - * Get the Icon URL (Avatar). - * - * @return string The URL to the Avatar. - */ - public function get_icon_url() { - $icon = $this->get_icon(); - - if ( ! $icon ) { - return ''; - } - - if ( is_array( $icon ) ) { - return $icon['url']; - } - - return $icon; - } - - /** - * Get the Icon URL (Avatar). - * - * @return string The URL to the Avatar. - */ - public function get_image_url() { - $image = $this->get_image(); - - if ( ! $image ) { - return ''; - } - - if ( is_array( $image ) ) { - return $image['url']; - } - - return $image; - } - - /** - * Get the shared inbox, with a fallback to the inbox. - * - * @return string|null The URL to the shared inbox, the inbox or null. - */ - public function get_shared_inbox() { - if ( ! empty( $this->get_endpoints()['sharedInbox'] ) ) { - return $this->get_endpoints()['sharedInbox']; - } elseif ( ! empty( $this->get_inbox() ) ) { - return $this->get_inbox(); - } - - return null; - } - - /** - * Convert a Custom-Post-Type input to an Activitypub\Model\Follower. - * - * @param \WP_Post $post The post object. - * @return Follower|false The Follower object or false on failure. - */ - public static function init_from_cpt( $post ) { - $actor_json = get_post_meta( $post->ID, '_activitypub_actor_json', true ); - - /* @var Follower $object Follower object. */ - $object = self::init_from_json( $actor_json ); - - if ( is_wp_error( $object ) ) { - return false; - } - - $object->set__id( $post->ID ); - $object->set_id( $post->guid ); - $object->set_name( $post->post_title ); - $object->set_summary( $post->post_excerpt ); - $object->set_published( gmdate( 'Y-m-d H:i:s', strtotime( $post->post_date ) ) ); - $object->set_updated( gmdate( 'Y-m-d H:i:s', strtotime( $post->post_modified ) ) ); - - return $object; - } - - /** - * Infer a shortname from the Actor ID or URL. Used only for fallbacks, - * we will try to use what's supplied. - * - * @return string Hopefully the name of the Follower. - */ - protected function extract_name_from_uri() { - // prefer the URL, but fall back to the ID. - if ( $this->url ) { - $name = $this->url; - } else { - $name = $this->id; - } - - if ( \filter_var( $name, FILTER_VALIDATE_URL ) ) { - $name = \rtrim( $name, '/' ); - $path = \wp_parse_url( $name, PHP_URL_PATH ); - - if ( $path ) { - if ( \strpos( $name, '@' ) !== false ) { - // Expected: https://example.com/@user (default URL pattern). - $name = \preg_replace( '|^/@?|', '', $path ); - } else { - // Expected: https://example.com/users/user (default ID pattern). - $parts = \explode( '/', $path ); - $name = \array_pop( $parts ); - } - } - } elseif ( - \is_email( $name ) || - \strpos( $name, 'acct' ) === 0 || - \strpos( $name, '@' ) === 0 - ) { - // Expected: user@example.com or acct:user@example (WebFinger). - $name = \ltrim( $name, '@' ); - $name = \ltrim( $name, 'acct:' ); - $parts = \explode( '@', $name ); - $name = $parts[0]; - } - - return $name; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-user.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-user.php deleted file mode 100644 index 964c7867..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/model/class-user.php +++ /dev/null @@ -1,474 +0,0 @@ -_id = $user_id; - - /** - * Fires when a model actor is constructed. - * - * @param User $this The User object. - */ - \do_action( 'activitypub_construct_model_actor', $this ); - } - } - - /** - * The type of the object. - * - * @return string The type of the object. - */ - public function get_type() { - return 'Person'; - } - - /** - * Generate a User object from a WP_User. - * - * @param int $user_id The user ID. - * - * @return \WP_Error|User The User object or \WP_Error if user not found. - */ - public static function from_wp_user( $user_id ) { - if ( ! user_can_activitypub( $user_id ) ) { - return new \WP_Error( - 'activitypub_user_not_found', - \__( 'User not found', 'activitypub' ), - array( 'status' => 404 ) - ); - } - - return new static( $user_id ); - } - - /** - * Get the user ID. - * - * @return string The user ID. - */ - public function get_id() { - $id = parent::get_id(); - - if ( $id ) { - return $id; - } - - $permalink = \get_user_option( 'activitypub_use_permalink_as_id', $this->_id ); - - if ( '1' === $permalink ) { - return $this->get_url(); - } - - return \add_query_arg( 'author', $this->_id, \trailingslashit( \home_url() ) ); - } - - /** - * Get the Username. - * - * @return string The Username. - */ - public function get_name() { - return \get_the_author_meta( 'display_name', $this->_id ); - } - - /** - * Get the User description. - * - * @return string The User description. - */ - public function get_summary() { - $description = get_user_option( 'activitypub_description', $this->_id ); - if ( empty( $description ) ) { - $description = get_user_meta( $this->_id, 'description', true ); - } - return \wpautop( \wp_kses( $description, 'default' ) ); - } - - /** - * Get the User url. - * - * @return string The User url. - */ - public function get_url() { - return \esc_url( \get_author_posts_url( $this->_id ) ); - } - - /** - * Returns the User URL with @-Prefix for the username. - * - * @return string The User URL with @-Prefix for the username. - */ - public function get_alternate_url() { - return \esc_url( \trailingslashit( get_home_url() ) . '@' . $this->get_preferred_username() ); - } - - /** - * Get the preferred username. - * - * @return string The preferred username. - */ - public function get_preferred_username() { - return \get_the_author_meta( 'login', $this->_id ); - } - - /** - * Get the User icon. - * - * @return string[] The User icon. - */ - public function get_icon() { - $icon = \get_user_option( 'activitypub_icon', $this->_id ); - if ( false !== $icon && wp_attachment_is_image( $icon ) ) { - return array( - 'type' => 'Image', - 'url' => esc_url( wp_get_attachment_url( $icon ) ), - ); - } - - $icon = \esc_url( - \get_avatar_url( - $this->_id, - array( 'size' => 120 ) - ) - ); - - return array( - 'type' => 'Image', - 'url' => $icon, - ); - } - - /** - * Returns the header image. - * - * @return string[]|null The header image. - */ - public function get_image() { - $header_image = get_user_option( 'activitypub_header_image', $this->_id ); - $image_url = null; - - if ( ! $header_image && \has_header_image() ) { - $image_url = \get_header_image(); - } - - if ( $header_image ) { - $image_url = \wp_get_attachment_url( $header_image ); - } - - if ( $image_url ) { - return array( - 'type' => 'Image', - 'url' => esc_url( $image_url ), - ); - } - - return null; - } - - /** - * Returns the date the user was created. - * - * @return false|string The date the user was created. - */ - public function get_published() { - return \gmdate( ACTIVITYPUB_DATE_TIME_RFC3339, \strtotime( \get_the_author_meta( 'registered', $this->_id ) ) ); - } - - /** - * Returns the public key. - * - * @return string[] The public key. - */ - public function get_public_key() { - return array( - 'id' => $this->get_id() . '#main-key', - 'owner' => $this->get_id(), - 'publicKeyPem' => Signature::get_public_key_for( $this->get__id() ), - ); - } - - /** - * Returns the Inbox-API-Endpoint. - * - * @return string The Inbox-Endpoint. - */ - public function get_inbox() { - return get_rest_url_by_path( sprintf( 'actors/%d/inbox', $this->get__id() ) ); - } - - /** - * Returns the Outbox-API-Endpoint. - * - * @return string The Outbox-Endpoint. - */ - public function get_outbox() { - return get_rest_url_by_path( sprintf( 'actors/%d/outbox', $this->get__id() ) ); - } - - /** - * Returns the Followers-API-Endpoint. - * - * @return string The Followers-Endpoint. - */ - public function get_followers() { - return get_rest_url_by_path( sprintf( 'actors/%d/followers', $this->get__id() ) ); - } - - /** - * Returns the Following-API-Endpoint. - * - * @return string The Following-Endpoint. - */ - public function get_following() { - return get_rest_url_by_path( sprintf( 'actors/%d/following', $this->get__id() ) ); - } - - /** - * Returns the Featured-API-Endpoint. - * - * @return string The Featured-Endpoint. - */ - public function get_featured() { - return get_rest_url_by_path( sprintf( 'actors/%d/collections/featured', $this->get__id() ) ); - } - - /** - * Returns the endpoints. - * - * @return string[]|null The endpoints. - */ - public function get_endpoints() { - $endpoints = null; - - if ( \get_option( 'activitypub_shared_inbox' ) ) { - $endpoints = array( - 'sharedInbox' => get_rest_url_by_path( 'inbox' ), - ); - } - - return $endpoints; - } - - /** - * Extend the User-Output with Attachments. - * - * @return array The extended User-Output. - */ - public function get_attachment() { - $extra_fields = Extra_Fields::get_actor_fields( $this->_id ); - return Extra_Fields::fields_to_attachments( $extra_fields ); - } - - /** - * Returns a user@domain type of identifier for the user. - * - * @return string The Webfinger-Identifier. - */ - public function get_webfinger() { - return $this->get_preferred_username() . '@' . \wp_parse_url( \home_url(), \PHP_URL_HOST ); - } - - /** - * Returns the canonical URL. - * - * @return string The canonical URL. - */ - public function get_canonical_url() { - return $this->get_url(); - } - - /** - * Returns the streams. - * - * @return null The streams. - */ - public function get_streams() { - return null; - } - - /** - * Returns the tag. - * - * @return array The tag. - */ - public function get_tag() { - return array(); - } - - /** - * Returns the indexable state. - * - * @return bool Whether the user is indexable. - */ - public function get_indexable() { - if ( is_blog_public() ) { - return true; - } else { - return false; - } - } - - /** - * Update the username. - * - * @param string $value The new value. - * @return int|\WP_Error The updated user ID or \WP_Error on failure. - */ - public function update_name( $value ) { - $userdata = array( - 'ID' => $this->_id, - 'display_name' => $value, - ); - return \wp_update_user( $userdata ); - } - - /** - * Update the User description. - * - * @param string $value The new value. - * @return bool True if the attribute was updated, false otherwise. - */ - public function update_summary( $value ) { - return \update_user_option( $this->_id, 'activitypub_description', $value ); - } - - /** - * Update the User icon. - * - * @param int $value The new value. Should be an attachment ID. - * @return bool True if the attribute was updated, false otherwise. - */ - public function update_icon( $value ) { - if ( ! wp_attachment_is_image( $value ) ) { - return false; - } - return update_user_option( $this->_id, 'activitypub_icon', $value ); - } - - /** - * Update the User-Header-Image. - * - * @param int $value The new value. Should be an attachment ID. - * @return bool True if the attribute was updated, false otherwise. - */ - public function update_header( $value ) { - if ( ! wp_attachment_is_image( $value ) ) { - return false; - } - return \update_user_option( $this->_id, 'activitypub_header_image', $value ); - } - - /** - * Returns the website hosts allowed to credit this blog. - * - * @return string[]|null The attribution domains or null if not found. - */ - public function get_attribution_domains() { - return get_attribution_domains(); - } - - /** - * Returns the alsoKnownAs. - * - * @return string[] The alsoKnownAs. - */ - public function get_also_known_as() { - $also_known_as = array( - \add_query_arg( 'author', $this->_id, \home_url( '/' ) ), - $this->get_url(), - $this->get_alternate_url(), - ); - - // phpcs:ignore Universal.Operators.DisallowShortTernary.Found - $also_known_as = array_merge( $also_known_as, \get_user_option( 'activitypub_also_known_as', $this->_id ) ?: array() ); - - return array_unique( $also_known_as ); - } - - /** - * Returns the movedTo. - * - * @return string The movedTo. - */ - public function get_moved_to() { - $moved_to = \get_user_option( 'activitypub_moved_to', $this->_id ); - - return $moved_to && $moved_to !== $this->get_id() ? $moved_to : null; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-actors-controller.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-actors-controller.php deleted file mode 100644 index 15cd0c5c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-actors-controller.php +++ /dev/null @@ -1,359 +0,0 @@ -[\w\-\.]+)'; - - /** - * Register routes. - */ - public function register_routes() { - \register_rest_route( - $this->namespace, - '/' . $this->rest_base, - array( - 'args' => array( - 'user_id' => array( - 'description' => 'The ID or username of the actor.', - 'type' => 'string', - 'required' => true, - 'pattern' => '[\w\-\.]+', - ), - ), - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_item' ), - 'permission_callback' => array( 'Activitypub\Rest\Server', 'verify_signature' ), - ), - 'schema' => array( $this, 'get_public_item_schema' ), - ) - ); - - \register_rest_route( - $this->namespace, - '/' . $this->rest_base . '/remote-follow', - array( - 'args' => array( - 'user_id' => array( - 'description' => 'The ID or username of the actor.', - 'type' => 'string', - 'required' => true, - 'pattern' => '[\w\-\.]+', - ), - ), - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_remote_follow_item' ), - 'permission_callback' => '__return_true', - 'args' => array( - 'resource' => array( - 'description' => 'The resource to follow.', - 'type' => 'string', - 'required' => true, - ), - ), - ), - ) - ); - } - - /** - * Retrieves a single actor. - * - * @param \WP_REST_Request $request Full details about the request. - * @return \WP_REST_Response|\WP_Error Response object on success, or WP_Error object on failure. - */ - public function get_item( $request ) { - $user_id = $request->get_param( 'user_id' ); - $user = Actor_Collection::get_by_various( $user_id ); - - if ( \is_wp_error( $user ) ) { - return $user; - } - - /** - * Action triggered prior to the ActivityPub profile being created and sent to the client. - */ - \do_action( 'activitypub_rest_users_pre' ); - - $data = $user->to_array(); - - $response = \rest_ensure_response( $data ); - $response->header( 'Content-Type', 'application/activity+json; charset=' . \get_option( 'blog_charset' ) ); - $response->header( 'Link', \sprintf( '<%1$s>; rel="alternate"; type="application/activity+json"', $user->get_id() ) ); - - return $response; - } - - /** - * Retrieves the remote follow endpoint. - * - * @param \WP_REST_Request $request Full details about the request. - * @return \WP_REST_Response|\WP_Error Response object on success, or WP_Error object on failure. - */ - public function get_remote_follow_item( $request ) { - $resource = $request->get_param( 'resource' ); - $user_id = $request->get_param( 'user_id' ); - $user = Actor_Collection::get_by_various( $user_id ); - - if ( \is_wp_error( $user ) ) { - return $user; - } - - $template = Webfinger::get_remote_follow_endpoint( $resource ); - - if ( \is_wp_error( $template ) ) { - return $template; - } - - $resource = $user->get_webfinger(); - $url = \str_replace( '{uri}', $resource, $template ); - - return \rest_ensure_response( - array( - 'url' => $url, - 'template' => $template, - ) - ); - } - - /** - * Retrieves the actor schema, conforming to JSON Schema. - * - * @return array Item schema data. - */ - public function get_item_schema() { - if ( $this->schema ) { - return $this->add_additional_fields_schema( $this->schema ); - } - - $this->schema = array( - '$schema' => 'http://json-schema.org/draft-04/schema#', - 'title' => 'actor', - 'type' => 'object', - 'properties' => array( - '@context' => array( - 'description' => 'The JSON-LD context for the response.', - 'type' => array( 'array', 'object' ), - 'readonly' => true, - ), - 'id' => array( - 'description' => 'The unique identifier for the actor.', - 'type' => 'string', - 'format' => 'uri', - 'readonly' => true, - ), - 'type' => array( - 'description' => 'The type of the actor.', - 'type' => 'string', - 'enum' => array( 'Person', 'Service', 'Organization', 'Application', 'Group' ), - 'readonly' => true, - ), - 'attachment' => array( - 'description' => 'Additional information attached to the actor.', - 'type' => 'array', - 'items' => array( - 'type' => 'object', - 'properties' => array( - 'type' => array( - 'type' => 'string', - 'enum' => array( 'PropertyValue', 'Link' ), - ), - 'name' => array( - 'type' => 'string', - ), - 'value' => array( - 'type' => 'string', - ), - 'href' => array( - 'type' => 'string', - 'format' => 'uri', - ), - 'rel' => array( - 'type' => 'array', - 'items' => array( - 'type' => 'string', - ), - ), - ), - ), - 'readonly' => true, - ), - 'name' => array( - 'description' => 'The display name of the actor.', - 'type' => 'string', - 'readonly' => true, - ), - 'icon' => array( - 'description' => 'The icon/avatar of the actor.', - 'type' => 'object', - 'properties' => array( - 'type' => array( - 'type' => 'string', - ), - 'url' => array( - 'type' => 'string', - 'format' => 'uri', - ), - ), - 'readonly' => true, - ), - 'published' => array( - 'description' => 'The date the actor was published.', - 'type' => 'string', - 'format' => 'date-time', - 'readonly' => true, - ), - 'summary' => array( - 'description' => 'A summary about the actor.', - 'type' => 'string', - 'readonly' => true, - ), - 'tag' => array( - 'description' => 'Tags associated with the actor.', - 'type' => 'array', - 'items' => array( - 'type' => 'object', - 'properties' => array( - 'type' => array( - 'type' => 'string', - ), - 'href' => array( - 'type' => 'string', - 'format' => 'uri', - ), - 'name' => array( - 'type' => 'string', - ), - ), - ), - 'readonly' => true, - ), - 'url' => array( - 'description' => 'The URL to the actor\'s profile page.', - 'type' => 'string', - 'format' => 'uri', - 'readonly' => true, - ), - 'inbox' => array( - 'description' => 'The inbox endpoint for the actor.', - 'type' => 'string', - 'format' => 'uri', - 'readonly' => true, - ), - 'outbox' => array( - 'description' => 'The outbox endpoint for the actor.', - 'type' => 'string', - 'format' => 'uri', - 'readonly' => true, - ), - 'following' => array( - 'description' => 'The following endpoint for the actor.', - 'type' => 'string', - 'format' => 'uri', - 'readonly' => true, - ), - 'followers' => array( - 'description' => 'The followers endpoint for the actor.', - 'type' => 'string', - 'format' => 'uri', - 'readonly' => true, - ), - 'streams' => array( - 'description' => 'The streams associated with the actor.', - 'type' => 'array', - 'readonly' => true, - ), - 'preferredUsername' => array( - 'description' => 'The preferred username of the actor.', - 'type' => 'string', - 'readonly' => true, - ), - 'publicKey' => array( - 'description' => 'The public key information for the actor.', - 'type' => 'object', - 'properties' => array( - 'id' => array( - 'type' => 'string', - 'format' => 'uri', - ), - 'owner' => array( - 'type' => 'string', - 'format' => 'uri', - ), - 'publicKeyPem' => array( - 'type' => 'string', - ), - ), - 'readonly' => true, - ), - 'manuallyApprovesFollowers' => array( - 'description' => 'Whether the actor manually approves followers.', - 'type' => 'boolean', - 'readonly' => true, - ), - 'attributionDomains' => array( - 'description' => 'The attribution domains for the actor.', - 'type' => 'array', - 'items' => array( - 'type' => 'string', - ), - 'readonly' => true, - ), - 'featured' => array( - 'description' => 'The featured collection endpoint for the actor.', - 'type' => 'string', - 'format' => 'uri', - 'readonly' => true, - ), - 'indexable' => array( - 'description' => 'Whether the actor is indexable.', - 'type' => 'boolean', - 'readonly' => true, - ), - 'webfinger' => array( - 'description' => 'The webfinger identifier for the actor.', - 'type' => 'string', - 'readonly' => true, - ), - 'discoverable' => array( - 'description' => 'Whether the actor is discoverable.', - 'type' => 'boolean', - 'readonly' => true, - ), - ), - ); - - return $this->add_additional_fields_schema( $this->schema ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-actors-inbox-controller.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-actors-inbox-controller.php deleted file mode 100644 index 99fb5b9a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-actors-inbox-controller.php +++ /dev/null @@ -1,238 +0,0 @@ -namespace, - '/' . $this->rest_base . '/inbox', - array( - 'args' => array( - 'user_id' => array( - 'description' => 'The ID or username of the actor.', - 'type' => 'string', - 'required' => true, - 'pattern' => '[\w\-\.]+', - ), - ), - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_items' ), - 'permission_callback' => '__return_true', - 'args' => array( - 'page' => array( - 'description' => 'Current page of the collection.', - 'type' => 'integer', - 'minimum' => 1, - // No default so we can differentiate between Collection and CollectionPage requests. - ), - 'per_page' => array( - 'description' => 'Maximum number of items to be returned in result set.', - 'type' => 'integer', - 'default' => 20, - 'minimum' => 1, - ), - ), - 'schema' => array( $this, 'get_collection_schema' ), - ), - array( - 'methods' => \WP_REST_Server::CREATABLE, - 'callback' => array( $this, 'create_item' ), - 'permission_callback' => array( 'Activitypub\Rest\Server', 'verify_signature' ), - 'args' => array( - 'id' => array( - 'description' => 'The unique identifier for the activity.', - 'type' => 'string', - 'format' => 'uri', - 'required' => true, - ), - 'actor' => array( - 'description' => 'The actor performing the activity.', - 'type' => 'string', - 'required' => true, - 'sanitize_callback' => '\Activitypub\object_to_uri', - ), - 'type' => array( - 'description' => 'The type of the activity.', - 'type' => 'string', - 'required' => true, - ), - 'object' => array( - 'description' => 'The object of the activity.', - 'required' => true, - 'validate_callback' => function ( $param, $request, $key ) { - /** - * Filter the ActivityPub object validation. - * - * @param bool $validate The validation result. - * @param array $param The object data. - * @param object $request The request object. - * @param string $key The key. - */ - return \apply_filters( 'activitypub_validate_object', true, $param, $request, $key ); - }, - ), - ), - ), - 'schema' => array( $this, 'get_item_schema' ), - ) - ); - } - - /** - * Renders the user-inbox. - * - * @param \WP_REST_Request $request The request object. - * @return \WP_REST_Response|\WP_Error Response object or WP_Error. - */ - public function get_items( $request ) { - $user_id = $request->get_param( 'user_id' ); - $user = Actors::get_by_various( $user_id ); - - if ( \is_wp_error( $user ) ) { - return $user; - } - - /** - * Fires before the ActivityPub inbox is created and sent to the client. - */ - \do_action( 'activitypub_rest_inbox_pre' ); - - $response = array( - '@context' => get_context(), - 'id' => get_rest_url_by_path( \sprintf( 'actors/%d/inbox', $user->get__id() ) ), - 'generator' => 'https://wordpress.org/?v=' . get_masked_wp_version(), - 'type' => 'OrderedCollection', - 'totalItems' => 0, - 'orderedItems' => array(), - ); - - /** - * Filters the ActivityPub inbox data before it is sent to the client. - * - * @param array $response The ActivityPub inbox array. - */ - $response = \apply_filters( 'activitypub_rest_inbox_array', $response ); - - $response = $this->prepare_collection_response( $response, $request ); - if ( \is_wp_error( $response ) ) { - return $response; - } - - /** - * Fires after the ActivityPub inbox has been created and sent to the client. - */ - \do_action( 'activitypub_inbox_post' ); - - $response = \rest_ensure_response( $response ); - $response->header( 'Content-Type', 'application/activity+json; charset=' . \get_option( 'blog_charset' ) ); - - return $response; - } - - /** - * Handles user-inbox requests. - * - * @param \WP_REST_Request $request The request object. - * - * @return \WP_REST_Response|\WP_Error Response object or WP_Error. - */ - public function create_item( $request ) { - $user_id = $request->get_param( 'user_id' ); - $user = Actors::get_by_various( $user_id ); - - if ( \is_wp_error( $user ) ) { - return $user; - } - - $data = $request->get_json_params(); - $activity = Activity::init_from_array( $data ); - $type = $request->get_param( 'type' ); - $type = \strtolower( $type ); - - // phpcs:ignore WordPress.Security.ValidatedSanitizedInput - if ( \wp_check_comment_disallowed_list( $activity->to_json( false ), '', '', '', $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_USER_AGENT'] ?? '' ) ) { - Debug::write_log( 'Blocked activity from: ' . $activity->get_actor() ); - } else { - /** - * ActivityPub inbox action. - * - * @param array $data The data array. - * @param int|null $user_id The user ID. - * @param string $type The type of the activity. - * @param Activity|\WP_Error $activity The Activity object. - */ - \do_action( 'activitypub_inbox', $data, $user->get__id(), $type, $activity ); - - /** - * ActivityPub inbox action for specific activity types. - * - * @param array $data The data array. - * @param int|null $user_id The user ID. - * @param Activity|\WP_Error $activity The Activity object. - */ - \do_action( 'activitypub_inbox_' . $type, $data, $user->get__id(), $activity ); - } - - $response = \rest_ensure_response( array() ); - $response->set_status( 202 ); - $response->header( 'Content-Type', 'application/activity+json; charset=' . \get_option( 'blog_charset' ) ); - - return $response; - } - - /** - * Retrieves the schema for the inbox collection, conforming to JSON Schema. - * - * @return array Collection schema data. - */ - public function get_item_schema() { - if ( $this->schema ) { - return $this->add_additional_fields_schema( $this->schema ); - } - - $item_schema = array( - 'type' => 'object', - ); - - $schema = $this->get_collection_schema( $item_schema ); - - // Add inbox-specific properties. - $schema['title'] = 'inbox'; - $schema['properties']['generator'] = array( - 'description' => 'The software used to generate the collection.', - 'type' => 'string', - 'format' => 'uri', - ); - - $this->schema = $schema; - - return $this->add_additional_fields_schema( $this->schema ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-application-controller.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-application-controller.php deleted file mode 100644 index ad3c1b80..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-application-controller.php +++ /dev/null @@ -1,168 +0,0 @@ -namespace, - '/' . $this->rest_base, - array( - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_item' ), - 'permission_callback' => '__return_true', - ), - 'schema' => array( $this, 'get_item_schema' ), - ) - ); - } - - /** - * Retrieves the application actor profile. - * - * @param \WP_REST_Request $request The request object. - * @return \WP_REST_Response Response object. - */ - public function get_item( $request ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - $json = ( new Application() )->to_array(); - - $rest_response = new \WP_REST_Response( $json, 200 ); - $rest_response->header( 'Content-Type', 'application/activity+json; charset=' . \get_option( 'blog_charset' ) ); - - return $rest_response; - } - - /** - * Retrieves the schema for the application endpoint. - * - * @return array Schema data. - */ - public function get_item_schema() { - if ( $this->schema ) { - return $this->add_additional_fields_schema( $this->schema ); - } - - $this->schema = array( - '$schema' => 'http://json-schema.org/draft-04/schema#', - 'title' => 'application', - 'type' => 'object', - 'properties' => array( - '@context' => array( - 'type' => 'array', - 'items' => array( - 'type' => array( 'string', 'object' ), - ), - ), - 'id' => array( - 'type' => 'string', - 'format' => 'uri', - ), - 'type' => array( - 'type' => 'string', - 'enum' => array( 'Application' ), - ), - 'name' => array( - 'type' => 'string', - ), - 'icon' => array( - 'type' => 'object', - 'properties' => array( - 'type' => array( - 'type' => 'string', - ), - 'url' => array( - 'type' => 'string', - 'format' => 'uri', - ), - ), - ), - 'published' => array( - 'type' => 'string', - 'format' => 'date-time', - ), - 'summary' => array( - 'type' => 'string', - ), - 'url' => array( - 'type' => 'string', - 'format' => 'uri', - ), - 'inbox' => array( - 'type' => 'string', - 'format' => 'uri', - ), - 'outbox' => array( - 'type' => 'string', - 'format' => 'uri', - ), - 'streams' => array( - 'type' => 'array', - 'items' => array( - 'type' => 'string', - ), - ), - 'preferredUsername' => array( - 'type' => 'string', - ), - 'publicKey' => array( - 'type' => 'object', - 'properties' => array( - 'id' => array( - 'type' => 'string', - 'format' => 'uri', - ), - 'owner' => array( - 'type' => 'string', - 'format' => 'uri', - ), - 'publicKeyPem' => array( - 'type' => 'string', - ), - ), - ), - 'manuallyApprovesFollowers' => array( - 'type' => 'boolean', - ), - 'discoverable' => array( - 'type' => 'boolean', - ), - 'indexable' => array( - 'type' => 'boolean', - ), - 'webfinger' => array( - 'type' => 'string', - ), - ), - ); - - return $this->add_additional_fields_schema( $this->schema ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-collections-controller.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-collections-controller.php deleted file mode 100644 index 199feabd..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-collections-controller.php +++ /dev/null @@ -1,272 +0,0 @@ -namespace, - '/' . $this->rest_base . '/collections/(?P[\w\-\.]+)', - array( - 'args' => array( - 'user_id' => array( - 'description' => 'The user ID or username.', - 'type' => 'string', - 'required' => true, - ), - 'type' => array( - 'description' => 'The type of collection to query.', - 'type' => 'string', - 'enum' => array( 'tags', 'featured' ), - 'required' => true, - ), - ), - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_items' ), - 'permission_callback' => '__return_true', - 'args' => array( - 'page' => array( - 'description' => 'Current page of the collection.', - 'type' => 'integer', - 'minimum' => 1, - // No default so we can differentiate between Collection and CollectionPage requests. - ), - 'per_page' => array( - 'description' => 'Maximum number of items to be returned in result set.', - 'type' => 'integer', - 'default' => 20, - 'minimum' => 1, - ), - ), - ), - 'schema' => array( $this, 'get_item_schema' ), - ) - ); - } - - /** - * Retrieves a collection of featured tags. - * - * @param \WP_REST_Request $request The request object. - * - * @return \WP_REST_Response|\WP_Error Response object or WP_Error object. - */ - public function get_items( $request ) { - $user_id = $request->get_param( 'user_id' ); - $user = Actors::get_by_various( $user_id ); - - if ( \is_wp_error( $user ) ) { - return $user; - } - - switch ( $request->get_param( 'type' ) ) { - case 'tags': - $response = $this->get_tags( $request, $user ); - break; - - case 'featured': - $response = $this->get_featured( $request, $user ); - break; - - default: - $response = new \WP_Error( 'rest_unknown_collection_type', 'Unknown collection type.', array( 'status' => 404 ) ); - } - - if ( \is_wp_error( $response ) ) { - return $response; - } - - $response = \rest_ensure_response( $response ); - $response->header( 'Content-Type', 'application/activity+json; charset=' . \get_option( 'blog_charset' ) ); - - return $response; - } - - /** - * Retrieves a collection of featured tags. - * - * @param \WP_REST_Request $request The request object. - * @param User|Blog|Application $user Actor. - * - * @return array Collection of featured tags. - */ - public function get_tags( $request, $user ) { - $tags = \get_terms( - array( - 'taxonomy' => 'post_tag', - 'orderby' => 'count', - 'order' => 'DESC', - 'number' => 4, - ) - ); - - if ( \is_wp_error( $tags ) ) { - $tags = array(); - } - - $response = array( - '@context' => Base_Object::JSON_LD_CONTEXT, - 'id' => get_rest_url_by_path( sprintf( 'actors/%d/collections/tags', $user->get__id() ) ), - 'type' => 'Collection', - 'totalItems' => \is_countable( $tags ) ? \count( $tags ) : 0, - 'items' => array(), - ); - - foreach ( $tags as $tag ) { - $response['items'][] = array( - 'type' => 'Hashtag', - 'href' => \esc_url( \get_tag_link( $tag ) ), - 'name' => esc_hashtag( $tag->name ), - ); - } - - return $this->prepare_collection_response( $response, $request ); - } - - /** - * Retrieves a collection of featured posts. - * - * @param \WP_REST_Request $request The request object. - * @param User|Blog|Application $user Actor. - * - * @return array Collection of featured posts. - */ - public function get_featured( $request, $user ) { - $posts = array(); - - if ( is_single_user() || Actors::BLOG_USER_ID !== $user->get__id() ) { - $sticky_posts = \get_option( 'sticky_posts' ); - - if ( $sticky_posts && is_array( $sticky_posts ) ) { - // Only show public posts. - $args = array( - 'post__in' => $sticky_posts, - 'ignore_sticky_posts' => 1, - 'orderby' => 'date', - 'order' => 'DESC', - // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query - 'meta_query' => array( - array( - 'key' => 'activitypub_content_visibility', - 'compare' => 'NOT EXISTS', - ), - ), - ); - - if ( $user->get__id() > 0 ) { - $args['author'] = $user->get__id(); - } - - $posts = \get_posts( $args ); - } - } - - $response = array( - '@context' => Base_Object::JSON_LD_CONTEXT, - 'id' => get_rest_url_by_path( sprintf( 'actors/%d/collections/featured', $request->get_param( 'user_id' ) ) ), - 'type' => 'OrderedCollection', - 'totalItems' => \is_countable( $posts ) ? \count( $posts ) : 0, - 'orderedItems' => array(), - ); - - foreach ( $posts as $post ) { - $transformer = Factory::get_transformer( $post ); - - if ( \is_wp_error( $transformer ) ) { - continue; - } - - $response['orderedItems'][] = $transformer->to_object()->to_array( false ); - } - - return $this->prepare_collection_response( $response, $request ); - } - - /** - * Retrieves the schema for the Collections endpoint. - * - * @return array Schema data. - */ - public function get_item_schema() { - if ( $this->schema ) { - return $this->add_additional_fields_schema( $this->schema ); - } - - $schema = $this->get_collection_schema(); - - // Add collections-specific properties. - $schema['title'] = 'featured'; - $schema['properties']['generator'] = array( - 'description' => 'The software used to generate the collection.', - 'type' => 'string', - 'format' => 'uri', - ); - $schema['properties']['oneOf'] = array( - 'orderedItems' => array( - 'type' => 'array', - 'items' => array( - 'type' => 'object', - ), - ), - 'items' => array( - 'type' => 'array', - 'items' => array( - 'type' => 'object', - 'properties' => array( - 'type' => array( - 'type' => 'string', - 'enum' => array( 'Hashtag' ), - 'required' => true, - ), - 'href' => array( - 'type' => 'string', - 'format' => 'uri', - 'required' => true, - ), - 'name' => array( - 'type' => 'string', - 'required' => true, - ), - ), - ), - ), - ); - - unset( $schema['properties']['orderedItems'] ); - - $this->schema = $schema; - - return $this->add_additional_fields_schema( $this->schema ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-comments-controller.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-comments-controller.php deleted file mode 100644 index adcfcfd5..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-comments-controller.php +++ /dev/null @@ -1,156 +0,0 @@ -\d+)'; - - /** - * Register routes. - */ - public function register_routes() { - \register_rest_route( - $this->namespace, - '/' . $this->rest_base . '/remote-reply', - array( - 'args' => array( - 'comment_id' => array( - 'description' => 'The ID of the comment.', - 'type' => 'integer', - 'required' => true, - 'validate_callback' => array( $this, 'validate_comment' ), - ), - ), - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_item' ), - 'permission_callback' => '__return_true', - 'args' => array( - 'resource' => array( - 'description' => 'The resource to reply to.', - 'type' => 'string', - 'required' => true, - ), - ), - ), - 'schema' => array( $this, 'get_item_schema' ), - ) - ); - } - - /** - * Validates if a comment can be replied to remotely. - * - * @param mixed $param The parameter to validate. - * - * @return true|\WP_Error True if the comment can be replied to, WP_Error otherwise. - */ - public function validate_comment( $param ) { - $comment = \get_comment( $param ); - - if ( ! $comment ) { - return new \WP_Error( 'activitypub_comment_not_found', \__( 'Comment not found', 'activitypub' ), array( 'status' => 404 ) ); - } - - $is_local = Comment::is_local( $comment ); - - if ( $is_local ) { - return new \WP_Error( 'activitypub_local_only_comment', \__( 'Comment is local only', 'activitypub' ), array( 'status' => 403 ) ); - } - - return true; - } - - /** - * Retrieves the remote reply URL for a comment. - * - * @param \WP_REST_Request $request The request object. - * - * @return \WP_REST_Response|\WP_Error Response object or WP_Error object. - */ - public function get_item( $request ) { - $resource = $request->get_param( 'resource' ); - $comment_id = $request->get_param( 'comment_id' ); - - $template = Webfinger::get_remote_follow_endpoint( $resource ); - - if ( \is_wp_error( $template ) ) { - return $template; - } - - $resource = Comment::get_source_id( $comment_id ); - - if ( ! $resource ) { - $resource = Comment::generate_id( \get_comment( $comment_id ) ); - } - - $url = \str_replace( '{uri}', $resource, $template ); - - return \rest_ensure_response( - array( - 'url' => $url, - 'template' => $template, - ) - ); - } - - /** - * Retrieves the schema for the remote reply endpoint. - * - * @return array Schema data. - */ - public function get_item_schema() { - if ( $this->schema ) { - return $this->add_additional_fields_schema( $this->schema ); - } - - $this->schema = array( - '$schema' => 'http://json-schema.org/draft-04/schema#', - 'title' => 'remote-reply', - 'type' => 'object', - 'properties' => array( - 'url' => array( - 'description' => 'The URL to the remote reply page.', - 'type' => 'string', - 'format' => 'uri', - 'required' => true, - ), - 'template' => array( - 'description' => 'The template URL for remote replies.', - 'type' => 'string', - 'format' => 'uri', - 'required' => true, - ), - ), - ); - - return $this->add_additional_fields_schema( $this->schema ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-followers-controller.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-followers-controller.php deleted file mode 100644 index 1f09ad45..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-followers-controller.php +++ /dev/null @@ -1,226 +0,0 @@ -namespace, - '/' . $this->rest_base . '/followers', - array( - 'args' => array( - 'user_id' => array( - 'description' => 'The ID or username of the actor.', - 'type' => 'string', - 'required' => true, - 'pattern' => '[\w\-\.]+', - ), - ), - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_items' ), - 'permission_callback' => array( 'Activitypub\Rest\Server', 'verify_signature' ), - 'args' => array( - 'page' => array( - 'description' => 'Current page of the collection.', - 'type' => 'integer', - 'minimum' => 1, - // No default so we can differentiate between Collection and CollectionPage requests. - ), - 'per_page' => array( - 'description' => 'Maximum number of items to be returned in result set.', - 'type' => 'integer', - 'default' => 20, - 'minimum' => 1, - ), - 'order' => array( - 'description' => 'Order sort attribute ascending or descending.', - 'type' => 'string', - 'default' => 'desc', - 'enum' => array( 'asc', 'desc' ), - ), - 'context' => array( - 'description' => 'The context in which the request is made.', - 'type' => 'string', - 'default' => 'simple', - 'enum' => array( 'simple', 'full' ), - ), - ), - ), - 'schema' => array( $this, 'get_item_schema' ), - ) - ); - } - - /** - * Retrieves followers list. - * - * @param \WP_REST_Request $request Full details about the request. - * @return \WP_REST_Response|\WP_Error Response object on success, or WP_Error object on failure. - */ - public function get_items( $request ) { - $user_id = $request->get_param( 'user_id' ); - $user = Actors::get_by_various( $user_id ); - - if ( \is_wp_error( $user ) ) { - return $user; - } - - /** - * Action triggered prior to the ActivityPub profile being created and sent to the client. - */ - \do_action( 'activitypub_rest_followers_pre' ); - - $order = $request->get_param( 'order' ); - $per_page = $request->get_param( 'per_page' ); - $page = $request->get_param( 'page' ) ?? 1; - $context = $request->get_param( 'context' ); - - $data = Followers::get_followers_with_count( $user_id, $per_page, $page, array( 'order' => \ucwords( $order ) ) ); - - $response = array( - '@context' => get_context(), - 'id' => get_rest_url_by_path( \sprintf( 'actors/%d/followers', $user->get__id() ) ), - 'generator' => 'https://wordpress.org/?v=' . get_masked_wp_version(), - 'actor' => $user->get_id(), - 'type' => 'OrderedCollection', - 'totalItems' => $data['total'], - 'orderedItems' => array_map( - function ( $item ) use ( $context ) { - if ( 'full' === $context ) { - return $item->to_array( false ); - } - return $item->get_id(); - }, - $data['followers'] - ), - ); - - $response = $this->prepare_collection_response( $response, $request ); - if ( is_wp_error( $response ) ) { - return $response; - } - - $response = \rest_ensure_response( $response ); - $response->header( 'Content-Type', 'application/activity+json; charset=' . \get_option( 'blog_charset' ) ); - - return $response; - } - - /** - * Retrieves the followers schema, conforming to JSON Schema. - * - * @return array Item schema data. - */ - public function get_item_schema() { - if ( $this->schema ) { - return $this->add_additional_fields_schema( $this->schema ); - } - - // Define the schema for items in the followers collection. - $item_schema = array( - 'oneOf' => array( - array( - 'type' => 'string', - 'format' => 'uri', - ), - array( - 'type' => 'object', - 'properties' => array( - 'id' => array( - 'type' => 'string', - 'format' => 'uri', - ), - 'type' => array( - 'type' => 'string', - ), - 'name' => array( - 'type' => 'string', - ), - 'icon' => array( - 'type' => 'object', - 'properties' => array( - 'type' => array( - 'type' => 'string', - ), - 'mediaType' => array( - 'type' => 'string', - ), - 'url' => array( - 'type' => 'string', - 'format' => 'uri', - ), - ), - ), - 'published' => array( - 'type' => 'string', - 'format' => 'date-time', - ), - 'summary' => array( - 'type' => 'string', - ), - 'updated' => array( - 'type' => 'string', - 'format' => 'date-time', - ), - 'url' => array( - 'type' => 'string', - 'format' => 'uri', - ), - 'streams' => array( - 'type' => 'array', - ), - 'preferredUsername' => array( - 'type' => 'string', - ), - ), - ), - ), - ); - - $schema = $this->get_collection_schema( $item_schema ); - - // Add followers-specific properties. - $schema['title'] = 'followers'; - $schema['properties']['actor'] = array( - 'description' => 'The actor who owns the followers collection.', - 'type' => 'string', - 'format' => 'uri', - 'readonly' => true, - ); - $schema['properties']['generator'] = array( - 'description' => 'The generator of the followers collection.', - 'type' => 'string', - 'format' => 'uri', - 'readonly' => true, - ); - - $this->schema = $schema; - - return $this->add_additional_fields_schema( $this->schema ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-following-controller.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-following-controller.php deleted file mode 100644 index 19c9aede..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-following-controller.php +++ /dev/null @@ -1,183 +0,0 @@ -namespace, - '/' . $this->rest_base . '/following', - array( - 'args' => array( - 'user_id' => array( - 'description' => 'The ID or username of the actor.', - 'type' => 'string', - 'required' => true, - 'pattern' => '[\w\-\.]+', - ), - ), - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_items' ), - 'permission_callback' => array( 'Activitypub\Rest\Server', 'verify_signature' ), - 'args' => array( - 'page' => array( - 'description' => 'Current page of the collection.', - 'type' => 'integer', - 'minimum' => 1, - // No default so we can differentiate between Collection and CollectionPage requests. - ), - 'per_page' => array( - 'description' => 'Maximum number of items to be returned in result set.', - 'type' => 'integer', - 'default' => 10, - 'minimum' => 1, - 'maximum' => 100, - ), - ), - ), - 'schema' => array( $this, 'get_public_item_schema' ), - ) - ); - } - - /** - * Retrieves following list. - * - * @param \WP_REST_Request $request Full details about the request. - * @return \WP_REST_Response|\WP_Error Response object on success, or WP_Error object on failure. - */ - public function get_items( $request ) { - $user_id = $request->get_param( 'user_id' ); - $user = Actors::get_by_various( $user_id ); - - if ( \is_wp_error( $user ) ) { - return $user; - } - - /** - * Action triggered prior to the ActivityPub profile being created and sent to the client. - */ - \do_action( 'activitypub_rest_following_pre' ); - - $response = array( - '@context' => get_context(), - 'id' => get_rest_url_by_path( \sprintf( 'actors/%d/following', $user->get__id() ) ), - 'generator' => 'https://wordpress.org/?v=' . get_masked_wp_version(), - 'actor' => $user->get_id(), - 'type' => 'OrderedCollection', - ); - - /** - * Filter the list of following urls. - * - * @param array $items The array of following urls. - * @param \Activitypub\Model\User $user The user object. - */ - $items = \apply_filters( 'activitypub_rest_following', array(), $user ); - - $response['totalItems'] = \is_countable( $items ) ? \count( $items ) : 0; - $response['orderedItems'] = $items; - - $response = $this->prepare_collection_response( $response, $request ); - if ( is_wp_error( $response ) ) { - return $response; - } - - $response = \rest_ensure_response( $response ); - $response->header( 'Content-Type', 'application/activity+json; charset=' . \get_option( 'blog_charset' ) ); - - return $response; - } - - /** - * Add the Blog Authors to the following list of the Blog Actor - * if Blog not in single mode. - * - * @param array $follow_list The array of following urls. - * @param \Activitypub\Model\User $user The user object. - * - * @return array The array of following urls. - */ - public static function default_following( $follow_list, $user ) { - if ( 0 !== $user->get__id() || is_single_user() ) { - return $follow_list; - } - - $users = Actors::get_collection(); - - foreach ( $users as $user ) { - $follow_list[] = $user->get_id(); - } - - return $follow_list; - } - - /** - * Retrieves the following schema, conforming to JSON Schema. - * - * @return array Item schema data. - */ - public function get_item_schema() { - if ( $this->schema ) { - return $this->add_additional_fields_schema( $this->schema ); - } - - $item_schema = array( - 'type' => 'string', - 'format' => 'uri', - ); - - $schema = $this->get_collection_schema( $item_schema ); - - // Add following-specific properties. - $schema['title'] = 'following'; - $schema['properties']['actor'] = array( - 'description' => 'The actor who owns the following collection.', - 'type' => 'string', - 'format' => 'uri', - 'readonly' => true, - ); - $schema['properties']['generator'] = array( - 'description' => 'The generator of the following collection.', - 'type' => 'string', - 'format' => 'uri', - 'readonly' => true, - ); - - $this->schema = $schema; - - return $this->add_additional_fields_schema( $this->schema ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-inbox-controller.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-inbox-controller.php deleted file mode 100644 index 4fdd2a62..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-inbox-controller.php +++ /dev/null @@ -1,255 +0,0 @@ -namespace, - '/' . $this->rest_base, - array( - array( - 'methods' => \WP_REST_Server::CREATABLE, - 'callback' => array( $this, 'create_item' ), - 'permission_callback' => array( 'Activitypub\Rest\Server', 'verify_signature' ), - 'args' => array( - 'id' => array( - 'description' => 'The unique identifier for the activity.', - 'type' => 'string', - 'format' => 'uri', - 'required' => true, - ), - 'actor' => array( - 'description' => 'The actor performing the activity.', - 'type' => 'string', - 'required' => true, - 'sanitize_callback' => '\Activitypub\object_to_uri', - ), - 'type' => array( - 'description' => 'The type of the activity.', - 'type' => 'string', - 'required' => true, - ), - 'object' => array( - 'description' => 'The object of the activity.', - 'required' => true, - 'validate_callback' => function ( $param, $request, $key ) { - /** - * Filter the ActivityPub object validation. - * - * @param bool $validate The validation result. - * @param array $param The object data. - * @param object $request The request object. - * @param string $key The key. - */ - return \apply_filters( 'activitypub_validate_object', true, $param, $request, $key ); - }, - ), - 'to' => array( - 'description' => 'The primary recipients of the activity.', - 'type' => array( 'string', 'array' ), - 'required' => false, - 'sanitize_callback' => function ( $param ) { - if ( \is_string( $param ) ) { - $param = array( $param ); - } - - return $param; - }, - ), - 'cc' => array( - 'description' => 'The secondary recipients of the activity.', - 'type' => array( 'string', 'array' ), - 'sanitize_callback' => function ( $param ) { - if ( \is_string( $param ) ) { - $param = array( $param ); - } - - return $param; - }, - ), - 'bcc' => array( - 'description' => 'The private recipients of the activity.', - 'type' => array( 'string', 'array' ), - 'sanitize_callback' => function ( $param ) { - if ( \is_string( $param ) ) { - $param = array( $param ); - } - - return $param; - }, - ), - ), - ), - 'schema' => array( $this, 'get_item_schema' ), - ) - ); - } - - /** - * The shared inbox. - * - * @param \WP_REST_Request $request The request object. - * - * @return \WP_REST_Response|\WP_Error Response object or WP_Error. - */ - public function create_item( $request ) { - $data = $request->get_json_params(); - $activity = Activity::init_from_array( $data ); - $type = \strtolower( $request->get_param( 'type' ) ); - - // phpcs:ignore WordPress.Security.ValidatedSanitizedInput - if ( \wp_check_comment_disallowed_list( $activity->to_json( false ), '', '', '', $_SERVER['REMOTE_ADDR'], $_SERVER['HTTP_USER_AGENT'] ?? '' ) ) { - Debug::write_log( 'Blocked activity from: ' . $activity->get_actor() ); - } else { - $recipients = extract_recipients_from_activity( $data ); - - foreach ( $recipients as $recipient ) { - if ( ! is_same_domain( $recipient ) ) { - continue; - } - - $actor = Actors::get_by_various( $recipient ); - - if ( ! $actor || \is_wp_error( $actor ) ) { - continue; - } - - /** - * ActivityPub inbox action. - * - * @param array $data The data array. - * @param int $user_id The user ID. - * @param string $type The type of the activity. - * @param Activity|\WP_Error $activity The Activity object. - */ - \do_action( 'activitypub_inbox', $data, $actor->get__id(), $type, $activity ); - - /** - * ActivityPub inbox action for specific activity types. - * - * @param array $data The data array. - * @param int $user_id The user ID. - * @param Activity|\WP_Error $activity The Activity object. - */ - \do_action( 'activitypub_inbox_' . $type, $data, $actor->get__id(), $activity ); - } - } - - $response = \rest_ensure_response( array() ); - $response->set_status( 202 ); - $response->header( 'Content-Type', 'application/activity+json; charset=' . \get_option( 'blog_charset' ) ); - - return $response; - } - - /** - * Retrieves the schema for a single inbox item, conforming to JSON Schema. - * - * @return array Item schema data. - */ - public function get_item_schema() { - if ( $this->schema ) { - return $this->add_additional_fields_schema( $this->schema ); - } - - $schema = array( - '$schema' => 'https://json-schema.org/draft-04/schema#', - 'title' => 'activity', - 'type' => 'object', - 'properties' => array( - '@context' => array( - 'description' => 'The JSON-LD context for the activity.', - 'type' => array( 'string', 'array', 'object' ), - 'required' => true, - ), - 'id' => array( - 'description' => 'The unique identifier for the activity.', - 'type' => 'string', - 'format' => 'uri', - 'required' => true, - ), - 'type' => array( - 'description' => 'The type of the activity.', - 'type' => 'string', - 'required' => true, - ), - 'actor' => array( - 'description' => 'The actor performing the activity.', - 'type' => array( 'string', 'object' ), - 'format' => 'uri', - 'required' => true, - ), - 'object' => array( - 'description' => 'The object of the activity.', - 'type' => array( 'string', 'object' ), - 'required' => true, - ), - 'to' => array( - 'description' => 'The primary recipients of the activity.', - 'type' => 'array', - 'items' => array( - 'type' => 'string', - 'format' => 'uri', - ), - ), - 'cc' => array( - 'description' => 'The secondary recipients of the activity.', - 'type' => 'array', - 'items' => array( - 'type' => 'string', - 'format' => 'uri', - ), - ), - 'bcc' => array( - 'description' => 'The private recipients of the activity.', - 'type' => 'array', - 'items' => array( - 'type' => 'string', - 'format' => 'uri', - ), - ), - ), - ); - - $this->schema = $schema; - - return $this->add_additional_fields_schema( $this->schema ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-interaction-controller.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-interaction-controller.php deleted file mode 100644 index f4ba270a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-interaction-controller.php +++ /dev/null @@ -1,139 +0,0 @@ -namespace, - '/' . $this->rest_base, - array( - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_item' ), - 'permission_callback' => '__return_true', - 'args' => array( - 'uri' => array( - 'description' => 'The URI of the object to interact with.', - 'type' => 'string', - 'format' => 'uri', - 'required' => true, - ), - ), - ), - ) - ); - } - - /** - * Retrieves the interaction URL for a given URI. - * - * @param \WP_REST_Request $request The request object. - * - * @return \WP_REST_Response Response object on success, dies on failure. - */ - public function get_item( $request ) { - $uri = $request->get_param( 'uri' ); - $redirect_url = ''; - $object = Http::get_remote_object( $uri ); - - if ( \is_wp_error( $object ) || ! isset( $object['type'] ) ) { - // Use wp_die as this can be called from the front-end. See https://github.com/Automattic/wordpress-activitypub/pull/1149/files#r1915297109. - \wp_die( - esc_html__( 'The URL is not supported!', 'activitypub' ), - '', - array( - 'response' => 400, - 'back_link' => true, - ) - ); - } - - if ( ! empty( $object['url'] ) ) { - $uri = \esc_url( $object['url'] ); - } - - switch ( $object['type'] ) { - case 'Group': - case 'Person': - case 'Service': - case 'Application': - case 'Organization': - /** - * Filters the URL used for following an ActivityPub actor. - * - * @param string $redirect_url The URL to redirect to. - * @param string $uri The URI of the actor to follow. - * @param array $object The full actor object data. - */ - $redirect_url = \apply_filters( 'activitypub_interactions_follow_url', $redirect_url, $uri, $object ); - break; - default: - $redirect_url = \admin_url( 'post-new.php?in_reply_to=' . $uri ); - /** - * Filters the URL used for replying to an ActivityPub object. - * - * By default, this redirects to the WordPress post editor with the in_reply_to parameter set. - * - * @param string $redirect_url The URL to redirect to. - * @param string $uri The URI of the object to reply to. - * @param array $object The full object data being replied to. - */ - $redirect_url = \apply_filters( 'activitypub_interactions_reply_url', $redirect_url, $uri, $object ); - } - - /** - * Filters the redirect URL. - * - * This filter runs after the type-specific filters and allows for final modifications - * to the interaction URL regardless of the object type. - * - * @param string $redirect_url The URL to redirect to. - * @param string $uri The URI of the object. - * @param array $object The object being interacted with. - */ - $redirect_url = \apply_filters( 'activitypub_interactions_url', $redirect_url, $uri, $object ); - - // Check if hook is implemented. - if ( ! $redirect_url ) { - // Use wp_die as this can be called from the front-end. See https://github.com/Automattic/wordpress-activitypub/pull/1149/files#r1915297109. - \wp_die( - esc_html__( 'This Interaction type is not supported yet!', 'activitypub' ), - '', - array( - 'response' => 400, - 'back_link' => true, - ) - ); - } - - return new \WP_REST_Response( null, 302, array( 'Location' => \esc_url( $redirect_url ) ) ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-moderators-controller.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-moderators-controller.php deleted file mode 100644 index eba84725..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-moderators-controller.php +++ /dev/null @@ -1,132 +0,0 @@ -namespace, - '/' . $this->rest_base, - array( - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_items' ), - 'permission_callback' => '__return_true', - ), - 'schema' => array( $this, 'get_item_schema' ), - ) - ); - } - - /** - * Retrieves a collection of moderators. - * - * @param \WP_REST_Request $request The request object. - * @return \WP_REST_Response|\WP_Error Response object or WP_Error object. - */ - public function get_items( $request ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - $actors = array(); - - foreach ( Actors::get_collection() as $user ) { - $actors[] = $user->get_id(); - } - - /** - * Filter the list of moderators. - * - * @param array $actors The list of moderators. - */ - $actors = apply_filters( 'activitypub_rest_moderators', $actors ); - - $response = array( - '@context' => get_context(), - 'id' => get_rest_url_by_path( 'collections/moderators' ), - 'type' => 'OrderedCollection', - 'orderedItems' => $actors, - ); - - $response = \rest_ensure_response( $response ); - $response->header( 'Content-Type', 'application/activity+json; charset=' . \get_option( 'blog_charset' ) ); - - return $response; - } - - /** - * Retrieves the schema for the Moderators endpoint. - * - * @return array Schema data. - */ - public function get_item_schema() { - if ( $this->schema ) { - return $this->add_additional_fields_schema( $this->schema ); - } - - $schema = array( - '$schema' => 'http://json-schema.org/draft-04/schema#', - 'title' => 'moderators', - 'type' => 'object', - 'properties' => array( - '@context' => array( - 'type' => 'array', - 'items' => array( - 'type' => array( 'string', 'object' ), - ), - 'required' => true, - ), - 'id' => array( - 'type' => 'string', - 'format' => 'uri', - 'required' => true, - ), - 'type' => array( - 'type' => 'string', - 'enum' => array( 'OrderedCollection' ), - 'required' => true, - ), - 'orderedItems' => array( - 'type' => 'array', - 'items' => array( - 'type' => 'string', - 'format' => 'uri', - ), - 'required' => true, - ), - ), - ); - - $this->schema = $schema; - - return $this->add_additional_fields_schema( $this->schema ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-nodeinfo-controller.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-nodeinfo-controller.php deleted file mode 100644 index 4bd19e04..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-nodeinfo-controller.php +++ /dev/null @@ -1,172 +0,0 @@ -namespace, - '/' . $this->rest_base, - array( - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_items' ), - 'permission_callback' => '__return_true', - ), - ) - ); - - \register_rest_route( - $this->namespace, - '/' . $this->rest_base . '/(?P\d\.\d)', - array( - 'args' => array( - 'version' => array( - 'description' => 'The version of the NodeInfo schema.', - 'type' => 'string', - 'required' => true, - ), - ), - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_item' ), - 'permission_callback' => '__return_true', - ), - ) - ); - } - - /** - * Retrieves the NodeInfo discovery profile. - * - * @param \WP_REST_Request $request The request object. - * - * @return \WP_REST_Response Response object. - */ - public function get_items( $request ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - $response = array( - 'links' => array( - - /* - * Needs http protocol for spec compliance. - * @ticket https://github.com/Automattic/wordpress-activitypub/pull/1275 - */ - array( - 'rel' => 'http://nodeinfo.diaspora.software/ns/schema/2.0', - 'href' => get_rest_url_by_path( '/nodeinfo/2.0' ), - ), - array( - 'rel' => 'https://nodeinfo.diaspora.software/ns/schema/2.0', - 'href' => get_rest_url_by_path( '/nodeinfo/2.0' ), - ), - array( - 'rel' => 'https://www.w3.org/ns/activitystreams#Application', - 'href' => get_rest_url_by_path( 'application' ), - ), - ), - ); - - return \rest_ensure_response( $response ); - } - - /** - * Retrieves the NodeInfo profile. - * - * @param \WP_REST_Request $request The request object. - * @return \WP_REST_Response Response object. - */ - public function get_item( $request ) { - $version = $request->get_param( 'version' ); - - /** - * Fires before the NodeInfo data is created and sent to the client. - * - * @param string $version The NodeInfo version. - */ - \do_action( 'activitypub_rest_nodeinfo_pre', $version ); - - switch ( $version ) { - case '2.0': - $response = $this->get_version_2_0(); - break; - - default: - $response = new \WP_Error( 'activitypub_rest_nodeinfo_invalid_version', 'Unsupported NodeInfo version.', array( 'status' => 405 ) ); - break; - } - - return \rest_ensure_response( $response ); - } - - /** - * Get the NodeInfo 2.0 data. - * - * @return array - */ - public function get_version_2_0() { - $posts = \wp_count_posts(); - $comments = \wp_count_comments(); - - return array( - 'version' => '2.0', - 'software' => array( - 'name' => 'wordpress', - 'version' => get_masked_wp_version(), - ), - 'protocols' => array( 'activitypub' ), - 'services' => array( - 'inbound' => array(), - 'outbound' => array(), - ), - 'openRegistrations' => (bool) get_option( 'users_can_register' ), - 'usage' => array( - 'users' => array( - 'total' => get_total_users(), - 'activeHalfyear' => get_active_users( 6 ), - 'activeMonth' => get_active_users(), - ), - 'localPosts' => $posts->publish, - 'localComments' => $comments->approved, - ), - 'metadata' => array( - 'nodeName' => \get_bloginfo( 'name' ), - 'nodeDescription' => \get_bloginfo( 'description' ), - 'nodeIcon' => \get_site_icon_url(), - ), - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-outbox-controller.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-outbox-controller.php deleted file mode 100644 index 001eefdd..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-outbox-controller.php +++ /dev/null @@ -1,257 +0,0 @@ -[\w\-\.]+)/outbox'; - - /** - * Register routes. - */ - public function register_routes() { - \register_rest_route( - $this->namespace, - '/' . $this->rest_base, - array( - 'args' => array( - 'user_id' => array( - 'description' => 'The ID of the user or actor.', - 'type' => 'string', - 'validate_callback' => array( $this, 'validate_user_id' ), - ), - ), - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_items' ), - 'permission_callback' => array( 'Activitypub\Rest\Server', 'verify_signature' ), - 'args' => array( - 'page' => array( - 'description' => 'Current page of the collection.', - 'type' => 'integer', - 'minimum' => 1, - // No default so we can differentiate between Collection and CollectionPage requests. - ), - 'per_page' => array( - 'description' => 'Maximum number of items to be returned in result set.', - 'type' => 'integer', - 'default' => 20, - 'minimum' => 1, - 'maximum' => 100, - ), - ), - ), - 'schema' => array( $this, 'get_item_schema' ), - ) - ); - } - - /** - * Validates the user_id parameter. - * - * @param mixed $user_id The user_id parameter. - * @return bool|\WP_Error True if the user_id is valid, WP_Error otherwise. - */ - public function validate_user_id( $user_id ) { - $user = Actors::get_by_various( $user_id ); - if ( \is_wp_error( $user ) ) { - return $user; - } - - return true; - } - - /** - * Retrieves a collection of outbox items. - * - * @param \WP_REST_Request $request Full details about the request. - * @return \WP_REST_Response|\WP_Error Response object on success, or WP_Error object on failure. - */ - public function get_items( $request ) { - $page = $request->get_param( 'page' ) ?? 1; - $user = Actors::get_by_various( $request->get_param( 'user_id' ) ); - $user_id = $user->get__id(); - - /** - * Action triggered prior to the ActivityPub profile being created and sent to the client. - * - * @param \WP_REST_Request $request The request object. - */ - \do_action( 'activitypub_rest_outbox_pre', $request ); - - /** - * Filters the list of activity types to include in the outbox. - * - * @param string[] $activity_types The list of activity types. - */ - $activity_types = apply_filters( 'rest_activitypub_outbox_activity_types', array( 'Announce', 'Create', 'Like', 'Update' ) ); - - $args = array( - 'posts_per_page' => $request->get_param( 'per_page' ), - 'author' => $user_id > 0 ? $user_id : null, - 'paged' => $page, - 'post_type' => Outbox::POST_TYPE, - 'post_status' => 'any', - - // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query - 'meta_query' => array( - array( - 'key' => '_activitypub_activity_actor', - 'value' => Actors::get_type_by_id( $user_id ), - ), - ), - ); - - if ( get_current_user_id() !== $user_id && ! current_user_can( 'activitypub' ) ) { - $args['meta_query'][] = array( - 'key' => '_activitypub_activity_type', - 'value' => $activity_types, - 'compare' => 'IN', - ); - - $args['meta_query'][] = array( - 'relation' => 'OR', - array( - 'key' => 'activitypub_content_visibility', - 'compare' => 'NOT EXISTS', - ), - array( - 'key' => 'activitypub_content_visibility', - 'value' => ACTIVITYPUB_CONTENT_VISIBILITY_PUBLIC, - ), - ); - } - - /** - * Filters WP_Query arguments when querying Outbox items via the REST API. - * - * Enables adding extra arguments or setting defaults for an outbox collection request. - * - * @param array $args Array of arguments for WP_Query. - * @param \WP_REST_Request $request The REST API request. - */ - $args = apply_filters( 'rest_activitypub_outbox_query', $args, $request ); - - $outbox_query = new \WP_Query(); - $query_result = $outbox_query->query( $args ); - - $response = array( - '@context' => Base_Object::JSON_LD_CONTEXT, - 'id' => get_rest_url_by_path( sprintf( 'actors/%d/outbox', $user_id ) ), - 'generator' => 'https://wordpress.org/?v=' . get_masked_wp_version(), - 'actor' => $user->get_id(), - 'type' => 'OrderedCollection', - 'totalItems' => $outbox_query->found_posts, - 'orderedItems' => array(), - ); - - \update_postmeta_cache( \wp_list_pluck( $query_result, 'ID' ) ); - foreach ( $query_result as $outbox_item ) { - $response['orderedItems'][] = $this->prepare_item_for_response( $outbox_item, $request ); - } - - $response = $this->prepare_collection_response( $response, $request ); - if ( is_wp_error( $response ) ) { - return $response; - } - - /** - * Filter the ActivityPub outbox array. - * - * @param array $response The ActivityPub outbox array. - * @param \WP_REST_Request $request The request object. - */ - $response = \apply_filters( 'activitypub_rest_outbox_array', $response, $request ); - - /** - * Action triggered after the ActivityPub profile has been created and sent to the client. - * - * @param \WP_REST_Request $request The request object. - */ - \do_action( 'activitypub_outbox_post', $request ); - - $response = \rest_ensure_response( $response ); - $response->header( 'Content-Type', 'application/activity+json; charset=' . \get_option( 'blog_charset' ) ); - - return $response; - } - - /** - * Prepares the item for the REST response. - * - * @param mixed $item WordPress representation of the item. - * @param \WP_REST_Request $request Request object. - * @return array Response object on success, or WP_Error object on failure. - */ - public function prepare_item_for_response( $item, $request ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - $activity = Outbox::get_activity( $item->ID ); - - return $activity->to_array( false ); - } - - /** - * Retrieves the outbox schema, conforming to JSON Schema. - * - * @return array Collection schema data. - */ - public function get_item_schema() { - if ( $this->schema ) { - return $this->add_additional_fields_schema( $this->schema ); - } - - $item_schema = array( - 'type' => 'object', - ); - - $schema = $this->get_collection_schema( $item_schema ); - - // Add outbox-specific properties. - $schema['title'] = 'outbox'; - $schema['properties']['actor'] = array( - 'description' => 'The actor who owns this outbox.', - 'type' => 'string', - 'format' => 'uri', - 'required' => true, - ); - $schema['properties']['generator'] = array( - 'description' => 'The software used to generate the collection.', - 'type' => 'string', - 'format' => 'uri', - ); - - $this->schema = $schema; - - return $this->add_additional_fields_schema( $this->schema ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-post.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-post.php deleted file mode 100644 index 182ea69d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-post.php +++ /dev/null @@ -1,160 +0,0 @@ -\d+)/reactions', - array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => array( static::class, 'get_reactions' ), - 'permission_callback' => '__return_true', - 'args' => array( - 'id' => array( - 'required' => true, - 'type' => 'integer', - ), - ), - ) - ); - - register_rest_route( - ACTIVITYPUB_REST_NAMESPACE, - '/posts/(?P\d+)/context', - array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => array( static::class, 'get_context' ), - 'permission_callback' => '__return_true', - 'args' => array( - 'id' => array( - 'required' => true, - 'type' => 'integer', - ), - ), - ) - ); - } - - /** - * Get reactions for a post. - * - * @param \WP_REST_Request $request The request. - * - * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. - */ - public static function get_reactions( $request ) { - $post_id = $request->get_param( 'id' ); - $post = get_post( $post_id ); - - if ( ! $post ) { - return new WP_Error( 'post_not_found', 'Post not found', array( 'status' => 404 ) ); - } - - $reactions = array(); - - foreach ( Comment::get_comment_types() as $type_object ) { - $comments = get_comments( - array( - 'post_id' => $post_id, - 'type' => $type_object['type'], - 'status' => 'approve', - ) - ); - - if ( empty( $comments ) ) { - continue; - } - - $count = count( $comments ); - // phpcs:disable WordPress.WP.I18n - $label = sprintf( - _n( - $type_object['count_single'], - $type_object['count_plural'], - $count, - 'activitypub' - ), - number_format_i18n( $count ) - ); - // phpcs:enable WordPress.WP.I18n - - $reactions[ $type_object['collection'] ] = array( - 'label' => $label, - 'items' => array_map( - function ( $comment ) { - return array( - 'name' => $comment->comment_author, - 'url' => $comment->comment_author_url, - 'avatar' => get_comment_meta( $comment->comment_ID, 'avatar_url', true ), - ); - }, - $comments - ), - ); - } - - return new WP_REST_Response( $reactions ); - } - - /** - * Get the context for a post. - * - * @param \WP_REST_Request $request The request. - * - * @return WP_REST_Response|WP_Error Response object on success, or WP_Error object on failure. - */ - public static function get_context( $request ) { - $post_id = $request->get_param( 'id' ); - - $collection = Replies::get_context_collection( $post_id ); - - if ( false === $collection ) { - return new WP_Error( 'post_not_found', 'Post not found', array( 'status' => 404 ) ); - } - - $response = array_merge( - array( - '@context' => Base_Object::JSON_LD_CONTEXT, - 'id' => get_rest_url_by_path( sprintf( 'posts/%d/context', $post_id ) ), - ), - $collection - ); - - $response = \rest_ensure_response( $response ); - $response->header( 'Content-Type', 'application/activity+json; charset=' . \get_option( 'blog_charset' ) ); - - return $response; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-replies-controller.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-replies-controller.php deleted file mode 100644 index 27e97920..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-replies-controller.php +++ /dev/null @@ -1,256 +0,0 @@ -[\w\-\.]+)s/(?P[\w\-\.]+)/(?P[\w\-\.]+)'; - - /** - * Register routes. - */ - public function register_routes() { - \register_rest_route( - $this->namespace, - '/' . $this->rest_base, - array( - 'args' => array( - 'object_type' => array( - 'description' => 'The type of object to get replies for.', - 'type' => 'string', - 'enum' => array( 'post', 'comment' ), - 'required' => true, - ), - 'id' => array( - 'description' => 'The ID of the object.', - 'type' => 'string', - 'required' => true, - ), - 'type' => array( - 'description' => 'The type of collection to query.', - 'type' => 'string', - 'enum' => array( 'replies', 'likes', 'shares' ), - 'required' => true, - ), - ), - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_items' ), - 'permission_callback' => '__return_true', - 'args' => array( - 'page' => array( - 'description' => 'Current page of the collection.', - 'type' => 'integer', - 'minimum' => 1, - // No default so we can differentiate between Collection and CollectionPage requests. - ), - ), - ), - 'schema' => array( $this, 'get_item_schema' ), - ) - ); - } - - /** - * Retrieves a collection of replies. - * - * @param \WP_REST_Request $request The request object. - * - * @return \WP_REST_Response|\WP_Error Response object or WP_Error object. - */ - public function get_items( $request ) { - $object_type = $request->get_param( 'object_type' ); - $id = (int) $request->get_param( 'id' ); - - if ( 'comment' === $object_type ) { - $wp_object = \get_comment( $id ); - } else { - $wp_object = \get_post( $id ); - } - - if ( ! isset( $wp_object ) || \is_wp_error( $wp_object ) ) { - return new \WP_Error( - 'activitypub_replies_collection_does_not_exist', - \sprintf( - // translators: %s: The type (post, comment, etc.) for which no replies collection exists. - \__( 'No reply collection exists for the type %s.', 'activitypub' ), - $object_type - ), - array( 'status' => 404 ) - ); - } - - switch ( $request->get_param( 'type' ) ) { - case 'replies': - $response = $this->get_replies( $request, $wp_object ); - break; - - case 'likes': - $response = $this->get_likes( $request, $wp_object ); - break; - - case 'shares': - $response = $this->get_shares( $request, $wp_object ); - break; - - default: - $response = new \WP_Error( 'rest_unknown_collection_type', 'Unknown collection type.', array( 'status' => 404 ) ); - } - - // Prepend ActivityPub Context. - $response = array_merge( array( '@context' => Base_Object::JSON_LD_CONTEXT ), $response ); - $response = \rest_ensure_response( $response ); - $response->header( 'Content-Type', 'application/activity+json; charset=' . \get_option( 'blog_charset' ) ); - - return $response; - } - - /** - * Retrieves a collection of replies. - * - * @param \WP_REST_Request $request The request object. - * @param \WP_Post|\WP_Comment $wp_object The WordPress object. - * - * @return array Response collection of replies. - */ - public function get_replies( $request, $wp_object ) { - $page = $request->get_param( 'page' ); - - // If the request parameter page is present get the CollectionPage otherwise the Replies collection. - if ( null === $page ) { - $response = Replies::get_collection( $wp_object ); - } else { - $response = Replies::get_collection_page( $wp_object, $page ); - } - - return $response; - } - - /** - * Retrieves a collection of likes. - * - * @param \WP_REST_Request $request The request object. - * @param \WP_Post|\WP_Comment $wp_object The WordPress object. - * - * @return array Response collection of likes. - */ - public function get_likes( $request, $wp_object ) { - if ( $wp_object instanceof \WP_Post ) { - $likes = Interactions::count_by_type( $wp_object->ID, 'like' ); - } else { - $likes = 0; - } - - $response = array( - 'id' => get_rest_url_by_path( sprintf( 'posts/%d/likes', $wp_object->ID ) ), - 'type' => 'Collection', - 'totalItems' => $likes, - ); - - return $response; - } - - /** - * Retrieves a collection of shares. - * - * @param \WP_REST_Request $request The request object. - * @param \WP_Post|\WP_Comment $wp_object The WordPress object. - * - * @return array Response collection of shares. - */ - public function get_shares( $request, $wp_object ) { - if ( $wp_object instanceof \WP_Post ) { - $shares = Interactions::count_by_type( $wp_object->ID, 'repost' ); - } else { - $shares = 0; - } - - $response = array( - 'id' => get_rest_url_by_path( sprintf( 'posts/%d/shares', $wp_object->ID ) ), - 'type' => 'Collection', - 'totalItems' => $shares, - ); - - return $response; - } - - /** - * Retrieves the schema for the Replies endpoint. - * - * @return array Schema data. - */ - public function get_item_schema() { - if ( $this->schema ) { - return $this->add_additional_fields_schema( $this->schema ); - } - - $schema = array( - '$schema' => 'http://json-schema.org/draft-04/schema#', - 'title' => 'replies', - 'type' => 'object', - 'properties' => array( - '@context' => array( - 'type' => 'array', - 'items' => array( - 'type' => 'string', - ), - 'required' => true, - ), - 'id' => array( - 'type' => 'string', - 'format' => 'uri', - 'required' => true, - ), - 'type' => array( - 'type' => 'string', - 'enum' => array( 'Collection', 'OrderedCollection', 'CollectionPage', 'OrderedCollectionPage' ), - 'required' => true, - ), - 'first' => array( - 'type' => 'string', - 'format' => 'uri', - ), - 'last' => array( - 'type' => 'string', - 'format' => 'uri', - ), - 'items' => array( - 'type' => 'array', - 'items' => array( - 'type' => 'object', - ), - ), - ), - ); - - $this->schema = $schema; - - return $this->add_additional_fields_schema( $this->schema ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-server.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-server.php deleted file mode 100644 index ecc4a905..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-server.php +++ /dev/null @@ -1,173 +0,0 @@ -get_method() ) { - return true; - } - - /** - * Filter to defer signature verification. - * - * Skip signature verification for debugging purposes or to reduce load for - * certain Activity-Types, like "Delete". - * - * @param bool $defer Whether to defer signature verification. - * @param \WP_REST_Request $request The request used to generate the response. - * - * @return bool Whether to defer signature verification. - */ - $defer = \apply_filters( 'activitypub_defer_signature_verification', false, $request ); - - if ( $defer ) { - return true; - } - - if ( - // POST-Requests always have to be signed. - 'GET' !== $request->get_method() || - // GET-Requests only require a signature in secure mode. - ( 'GET' === $request->get_method() && use_authorized_fetch() ) - ) { - $verified_request = Signature::verify_http_signature( $request ); - if ( \is_wp_error( $verified_request ) ) { - return new WP_Error( - 'activitypub_signature_verification', - $verified_request->get_error_message(), - array( 'status' => 401 ) - ); - } - } - - return true; - } - - /** - * Callback function to validate incoming ActivityPub requests - * - * @param WP_REST_Response|\WP_HTTP_Response|WP_Error|mixed $response Result to send to the client. - * Usually a WP_REST_Response or WP_Error. - * @param array $handler Route handler used for the request. - * @param \WP_REST_Request $request Request used to generate the response. - * - * @return mixed|WP_Error The response, error, or modified response. - */ - public static function validate_requests( $response, $handler, $request ) { - if ( 'HEAD' === $request->get_method() ) { - return $response; - } - - $route = $request->get_route(); - - if ( - \is_wp_error( $response ) || - ! \str_starts_with( $route, '/' . ACTIVITYPUB_REST_NAMESPACE ) - ) { - return $response; - } - - $params = $request->get_json_params(); - - // Type is required for ActivityPub requests, so it fail later in the process. - if ( ! isset( $params['type'] ) ) { - return $response; - } - - if ( - ACTIVITYPUB_DISABLE_INCOMING_INTERACTIONS && - in_array( $params['type'], array( 'Create', 'Like', 'Announce' ), true ) - ) { - return new WP_Error( - 'activitypub_server_does_not_accept_incoming_interactions', - \__( 'This server does not accept incoming interactions.', 'activitypub' ), - // We have to use a 2XX status code here, because otherwise the response will be - // treated as an error and Mastodon might block this WordPress instance. - array( 'status' => 202 ) - ); - } - - return $response; - } - - /** - * Modify the parameter priority order for a REST API request. - * - * @param string[] $order Array of types to check, in order of priority. - * @param \WP_REST_Request $request The request object. - * - * @return string[] The modified order of types to check. - */ - public static function request_parameter_order( $order, $request ) { - $route = $request->get_route(); - - // Check if it is an activitypub request and exclude webfinger and nodeinfo endpoints. - if ( ! \str_starts_with( $route, '/' . ACTIVITYPUB_REST_NAMESPACE ) ) { - return $order; - } - - $method = $request->get_method(); - - if ( WP_REST_Server::CREATABLE !== $method ) { - return $order; - } - - return array( - 'JSON', - 'POST', - 'URL', - 'defaults', - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-url-validator-controller.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-url-validator-controller.php deleted file mode 100644 index 9c9474eb..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-url-validator-controller.php +++ /dev/null @@ -1,133 +0,0 @@ -namespace, - '/' . $this->rest_base, - array( - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_items' ), - 'permission_callback' => array( $this, 'get_items_permissions_check' ), - 'args' => array( - 'url' => array( - 'type' => 'string', - 'format' => 'uri', - 'required' => true, - ), - ), - ), - 'schema' => array( $this, 'get_item_schema' ), - ) - ); - } - - /** - * Check if a given request has access to validate URLs. - * - * @param \WP_REST_Request $request The request. - * - * @return bool True if the request has access to validate URLs, false otherwise. - */ - public function get_items_permissions_check( $request ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - return current_user_can( 'edit_posts' ); - } - - /** - * Check if URL is a valid ActivityPub endpoint. - * - * @param \WP_REST_Request $request The request. - * - * @return \WP_REST_Response|\WP_Error - */ - public function get_items( $request ) { - $url = $request->get_param( 'url' ); - $object = Http::get_remote_object( $url ); - - if ( is_wp_error( $object ) ) { - return new \WP_Error( - 'activitypub_invalid_url', - __( 'Invalid URL.', 'activitypub' ), - array( 'status' => 400 ) - ); - } - - $response = array( - 'is_activitypub' => ! empty( $object['type'] ), - 'is_real_oembed' => Embed::has_real_oembed( $url ), - 'html' => false, - ); - - if ( $response['is_activitypub'] ) { - $response['html'] = wp_oembed_get( $url ); - } - - return rest_ensure_response( $response ); - } - - /** - * Get the URL validation schema. - * - * @return array - */ - public function get_item_schema() { - if ( $this->schema ) { - return $this->add_additional_fields_schema( $this->schema ); - } - - $schema = array( - '$schema' => 'http://json-schema.org/draft-04/schema#', - 'title' => 'validated-url', - 'type' => 'object', - 'properties' => array( - 'is_activitypub' => array( - 'type' => 'boolean', - 'default' => false, - ), - 'is_real_oembed' => array( - 'type' => 'boolean', - 'default' => false, - ), - 'html' => array( - 'type' => 'string', - 'default' => false, - ), - ), - ); - - $this->schema = $schema; - - return $this->add_additional_fields_schema( $this->schema ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-webfinger-controller.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-webfinger-controller.php deleted file mode 100644 index ee75e7ad..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/class-webfinger-controller.php +++ /dev/null @@ -1,173 +0,0 @@ -namespace, - '/' . $this->rest_base, - array( - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_item' ), - 'permission_callback' => '__return_true', - 'args' => array( - 'resource' => array( - 'description' => 'The WebFinger resource.', - 'type' => 'string', - 'required' => true, - 'pattern' => '^(acct:)|^(https?://)(.+)$', - ), - ), - ), - 'schema' => array( $this, 'get_item_schema' ), - ) - ); - } - - /** - * Retrieves the WebFinger profile. - * - * @param \WP_REST_Request $request The request object. - * - * @return \WP_REST_Response Response object. - */ - public function get_item( $request ) { - /** - * Action triggered prior to the ActivityPub profile being created and sent to the client. - */ - \do_action( 'activitypub_rest_webfinger_pre' ); - - $resource = $request->get_param( 'resource' ); - $response = $this->get_profile( $resource ); - $code = 200; - - if ( \is_wp_error( $response ) ) { - $code = 400; - $error_data = $response->get_error_data(); - - if ( isset( $error_data['status'] ) ) { - $code = $error_data['status']; - } - } - - return new \WP_REST_Response( - $response, - $code, - array( - 'Access-Control-Allow-Origin' => '*', - 'Content-Type' => 'application/jrd+json; charset=' . \get_option( 'blog_charset' ), - ) - ); - } - - /** - * Get the WebFinger profile. - * - * @param string $webfinger The WebFinger resource. - * - * @return array|\WP_Error The WebFinger profile or WP_Error if not found. - */ - public function get_profile( $webfinger ) { - /** - * Filter the WebFinger data. - * - * @param array $data The WebFinger data. - * @param string $webfinger The WebFinger resource. - */ - return \apply_filters( 'webfinger_data', array(), $webfinger ); - } - - /** - * Retrieves the schema for the WebFinger endpoint. - * - * @return array Schema data. - */ - public function get_item_schema() { - if ( $this->schema ) { - return $this->add_additional_fields_schema( $this->schema ); - } - - $this->schema = array( - '$schema' => 'http://json-schema.org/draft-04/schema#', - 'title' => 'webfinger', - 'type' => 'object', - 'required' => array( 'subject', 'links' ), - 'properties' => array( - 'subject' => array( - 'description' => 'The subject of this WebFinger record.', - 'type' => 'string', - 'format' => 'uri', - ), - 'aliases' => array( - 'description' => 'Alternative identifiers for the subject.', - 'type' => 'array', - 'items' => array( - 'type' => 'string', - 'format' => 'uri', - ), - ), - 'links' => array( - 'description' => 'Links associated with the subject.', - 'type' => 'array', - 'items' => array( - 'type' => 'object', - 'properties' => array( - 'rel' => array( - 'description' => 'The relation type of the link.', - 'type' => 'string', - 'required' => true, - ), - 'type' => array( - 'description' => 'The content type of the link.', - 'type' => 'string', - ), - 'href' => array( - 'description' => 'The target URL of the link.', - 'type' => 'string', - 'format' => 'uri', - ), - 'template' => array( - 'description' => 'A URI template for the link.', - 'type' => 'string', - 'format' => 'uri', - ), - ), - ), - ), - ), - ); - - return $this->add_additional_fields_schema( $this->schema ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/trait-collection.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/trait-collection.php deleted file mode 100644 index d1757cd0..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/rest/trait-collection.php +++ /dev/null @@ -1,146 +0,0 @@ -get_param( 'page' ); - $per_page = $request->get_param( 'per_page' ); - $max_pages = \ceil( $response['totalItems'] / $per_page ); - - if ( $page > $max_pages ) { - return new \WP_Error( - 'rest_post_invalid_page_number', - 'The page number requested is larger than the number of pages available.', - array( 'status' => 400 ) - ); - } - - // No need to add links if there's only one page. - if ( 1 >= $max_pages && null === $page ) { - return $response; - } - - $response['first'] = \add_query_arg( 'page', 1, $response['id'] ); - $response['last'] = \add_query_arg( 'page', $max_pages, $response['id'] ); - - // If this is a Collection request, return early. - if ( null === $page ) { - // No items in Collections, only links to CollectionPages. - unset( $response['items'], $response['orderedItems'] ); - - return $response; - } - - // Still here, so this is a Page request. Append the type. - $response['type'] .= 'Page'; - $response['partOf'] = $response['id']; - $response['id'] .= '?page=' . $page; - - if ( $max_pages > $page ) { - $response['next'] = \add_query_arg( 'page', $page + 1, $response['id'] ); - } - - if ( $page > 1 ) { - $response['prev'] = \add_query_arg( 'page', $page - 1, $response['id'] ); - } - - return $response; - } - - /** - * Get the schema for an ActivityPub Collection. - * - * Returns a schema definition for ActivityPub (Ordered)Collection and (Ordered)CollectionPage - * that controllers can use to compose their full schema by passing in their item schema. - * - * @param array $item_schema Optional. The schema for the items in the collection. Default empty array. - * @return array The collection schema. - */ - public function get_collection_schema( $item_schema = array() ) { - $collection_schema = array( - '$schema' => 'http://json-schema.org/draft-04/schema#', - 'title' => 'collection', - 'type' => 'object', - 'properties' => array( - '@context' => array( - 'description' => 'The JSON-LD context of the OrderedCollection.', - 'type' => array( 'string', 'array', 'object' ), - ), - 'id' => array( - 'description' => 'The unique identifier for the OrderedCollection.', - 'type' => 'string', - 'format' => 'uri', - ), - 'type' => array( - 'description' => 'The type of the object. Either OrderedCollection or OrderedCollectionPage.', - 'type' => 'string', - 'enum' => array( 'Collection', 'CollectionPage', 'OrderedCollection', 'OrderedCollectionPage' ), - ), - 'totalItems' => array( - 'description' => 'The total number of items in the collection.', - 'type' => 'integer', - 'minimum' => 0, - ), - 'orderedItems' => array( - 'description' => 'The ordered items in the collection.', - 'type' => 'array', - ), - 'first' => array( - 'description' => 'Link to the first page of the collection.', - 'type' => 'string', - 'format' => 'uri', - ), - 'last' => array( - 'description' => 'Link to the last page of the collection.', - 'type' => 'string', - 'format' => 'uri', - ), - 'next' => array( - 'description' => 'Link to the next page of the collection.', - 'type' => 'string', - 'format' => 'uri', - ), - 'prev' => array( - 'description' => 'Link to the previous page of the collection.', - 'type' => 'string', - 'format' => 'uri', - ), - 'partOf' => array( - 'description' => 'The OrderedCollection to which this OrderedCollectionPage belongs.', - 'type' => 'string', - 'format' => 'uri', - ), - ), - ); - - // Add the orderedItems property based on the provided item schema. - if ( ! empty( $item_schema ) ) { - $collection_schema['properties']['orderedItems']['items'] = $item_schema; - } - - return $collection_schema; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/scheduler/class-actor.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/scheduler/class-actor.php deleted file mode 100644 index 80b90b52..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/scheduler/class-actor.php +++ /dev/null @@ -1,146 +0,0 @@ -get_blog_prefix(); - - // The user meta fields that affect a profile. - $fields = array( - $blog_prefix . 'activitypub_description', - $blog_prefix . 'activitypub_header_image', - $blog_prefix . 'activitypub_icon', - 'description', - 'display_name', - 'user_url', - ); - - if ( in_array( $meta_key, $fields, true ) ) { - self::schedule_profile_update( $user_id ); - } - } - - /** - * Send a profile update when a user is updated. - * - * @param int $user_id User ID being updated. - */ - public static function user_update( $user_id ) { - // Don't bother if the user can't publish. - if ( ! \user_can( $user_id, 'activitypub' ) ) { - return; - } - - self::schedule_profile_update( $user_id ); - } - - /** - * Theme mods only have a dynamic filter so we fudge it like this. - * - * @param mixed $value Optional. The value to be updated. Default null. - * - * @return mixed - */ - public static function blog_user_update( $value = null ) { - self::schedule_profile_update( Actors::BLOG_USER_ID ); - return $value; - } - - /** - * Schedule Activities. - * - * @param string $new_status New post status. - * @param string $old_status Old post status. - * @param \WP_Post $post Post object. - */ - public static function schedule_post_activity( $new_status, $old_status, $post ) { - if ( $post instanceof \WP_Post ) { - if ( Extra_Fields::USER_POST_TYPE === $post->post_type ) { - self::schedule_profile_update( $post->post_author ); - } elseif ( Extra_Fields::BLOG_POST_TYPE === $post->post_type ) { - self::schedule_profile_update( Actors::BLOG_USER_ID ); - } - } - } - - /** - * Send a profile update to all followers. Gets hooked into all relevant options/meta etc. - * - * @param int $user_id The user ID to update (Could be 0 for Blog-User). - */ - public static function schedule_profile_update( $user_id ) { - if ( defined( 'WP_IMPORTING' ) && WP_IMPORTING ) { - return; - } - - $actor = Actors::get_by_id( $user_id ); - - if ( ! $actor || \is_wp_error( $actor ) ) { - return; - } - - $actor->set_updated( gmdate( ACTIVITYPUB_DATE_TIME_RFC3339, time() ) ); - - add_to_outbox( $actor, 'Update', $user_id ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/scheduler/class-comment.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/scheduler/class-comment.php deleted file mode 100644 index 1d63f01e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/scheduler/class-comment.php +++ /dev/null @@ -1,91 +0,0 @@ -user_id ) { - return; - } - - $type = false; - - if ( - 'approved' === $new_status && - 'approved' !== $old_status - ) { - $type = 'Create'; - } elseif ( 'approved' === $new_status ) { - $type = 'Update'; - \update_comment_meta( $comment->comment_ID, 'activitypub_comment_modified', time(), true ); - } elseif ( - 'trash' === $new_status || - 'spam' === $new_status - ) { - $type = 'Delete'; - } - - if ( empty( $type ) ) { - return; - } - - // Check if comment should be federated or not. - if ( ! should_comment_be_federated( $comment ) ) { - return; - } - - add_to_outbox( $comment, $type, $comment->user_id ); - } - - /** - * Schedule Comment Activities on insert. - * - * @param int $comment_id Comment ID. - * @param \WP_Comment $comment Comment object. - */ - public static function schedule_comment_activity_on_insert( $comment_id, $comment ) { - if ( 1 === (int) $comment->comment_approved ) { - self::schedule_comment_activity( 'approved', '', $comment ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/scheduler/class-post.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/scheduler/class-post.php deleted file mode 100644 index 8ae694f3..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/scheduler/class-post.php +++ /dev/null @@ -1,113 +0,0 @@ -post_author ); - } - - /** - * Schedules Activities for attachment transitions. - * - * @param int $post_id Attachment ID. - */ - public static function transition_attachment_status( $post_id ) { - if ( \defined( 'WP_IMPORTING' ) && WP_IMPORTING ) { - return; - } - - if ( ! \post_type_supports( 'attachment', 'activitypub' ) ) { - return; - } - - $post = \get_post( $post_id ); - - switch ( \current_action() ) { - case 'add_attachment': - // Add the post to the outbox. - add_to_outbox( $post, 'Create', $post->post_author ); - break; - case 'edit_attachment': - // Update the post to the outbox. - add_to_outbox( $post, 'Update', $post->post_author ); - break; - case 'delete_attachment': - // Delete the post from the outbox. - add_to_outbox( $post, 'Delete', $post->post_author ); - break; - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/table/class-followers.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/table/class-followers.php deleted file mode 100644 index 93a89271..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/table/class-followers.php +++ /dev/null @@ -1,238 +0,0 @@ -id === 'settings_page_activitypub' ) { - $this->user_id = Actors::BLOG_USER_ID; - } else { - $this->user_id = \get_current_user_id(); - } - - parent::__construct( - array( - 'singular' => \__( 'Follower', 'activitypub' ), - 'plural' => \__( 'Followers', 'activitypub' ), - 'ajax' => false, - ) - ); - } - - /** - * Get columns. - * - * @return array - */ - public function get_columns() { - return array( - 'cb' => '', - 'post_title' => \__( 'Name', 'activitypub' ), - 'avatar' => \__( 'Avatar', 'activitypub' ), - 'username' => \__( 'Username', 'activitypub' ), - 'url' => \__( 'URL', 'activitypub' ), - 'published' => \__( 'Followed', 'activitypub' ), - 'modified' => \__( 'Last updated', 'activitypub' ), - ); - } - - /** - * Returns sortable columns. - * - * @return array - */ - public function get_sortable_columns() { - return array( - 'post_title' => array( 'post_title', true ), - 'modified' => array( 'modified', false ), - 'published' => array( 'published', false ), - ); - } - - /** - * Prepare items. - */ - public function prepare_items() { - $columns = $this->get_columns(); - $hidden = array(); - - $this->process_action(); - $this->_column_headers = array( $columns, $hidden, $this->get_sortable_columns() ); - - $page_num = $this->get_pagenum(); - $per_page = 20; - - $args = array(); - - // phpcs:disable WordPress.Security.NonceVerification.Recommended - if ( isset( $_GET['orderby'] ) ) { - $args['orderby'] = sanitize_text_field( wp_unslash( $_GET['orderby'] ) ); - } - - if ( isset( $_GET['order'] ) ) { - $args['order'] = sanitize_text_field( wp_unslash( $_GET['order'] ) ); - } - - if ( isset( $_GET['s'] ) && isset( $_REQUEST['_wpnonce'] ) ) { - $nonce = sanitize_text_field( wp_unslash( $_REQUEST['_wpnonce'] ) ); - if ( wp_verify_nonce( $nonce, 'bulk-' . $this->_args['plural'] ) ) { - $args['s'] = sanitize_text_field( wp_unslash( $_GET['s'] ) ); - } - } - // phpcs:enable WordPress.Security.NonceVerification.Recommended - - $followers_with_count = FollowerCollection::get_followers_with_count( $this->user_id, $per_page, $page_num, $args ); - $followers = $followers_with_count['followers']; - $counter = $followers_with_count['total']; - - $this->items = array(); - $this->set_pagination_args( - array( - 'total_items' => $counter, - 'total_pages' => ceil( $counter / $per_page ), - 'per_page' => $per_page, - ) - ); - - foreach ( $followers as $follower ) { - $item = array( - 'icon' => esc_attr( $follower->get_icon_url() ), - 'post_title' => esc_attr( $follower->get_name() ), - 'username' => esc_attr( $follower->get_preferred_username() ), - 'url' => esc_attr( object_to_uri( $follower->get_url() ) ), - 'identifier' => esc_attr( $follower->get_id() ), - 'published' => esc_attr( $follower->get_published() ), - 'modified' => esc_attr( $follower->get_updated() ), - ); - - $this->items[] = $item; - } - } - - /** - * Returns bulk actions. - * - * @return array - */ - public function get_bulk_actions() { - return array( - 'delete' => __( 'Delete', 'activitypub' ), - ); - } - - /** - * Column default. - * - * @param array $item Item. - * @param string $column_name Column name. - * @return string - */ - public function column_default( $item, $column_name ) { - if ( ! array_key_exists( $column_name, $item ) ) { - return __( 'None', 'activitypub' ); - } - return $item[ $column_name ]; - } - - /** - * Column avatar. - * - * @param array $item Item. - * @return string - */ - public function column_avatar( $item ) { - return sprintf( - '', - $item['icon'] - ); - } - - /** - * Column url. - * - * @param array $item Item. - * @return string - */ - public function column_url( $item ) { - return sprintf( - '
%s', - esc_url( $item['url'] ), - $item['url'] - ); - } - - /** - * Column cb. - * - * @param array $item Item. - * @return string - */ - public function column_cb( $item ) { - return sprintf( '', esc_attr( $item['identifier'] ) ); - } - - /** - * Process action. - */ - public function process_action() { - if ( ! isset( $_REQUEST['followers'] ) || ! isset( $_REQUEST['_wpnonce'] ) ) { - return; - } - $nonce = sanitize_text_field( wp_unslash( $_REQUEST['_wpnonce'] ) ); - if ( ! wp_verify_nonce( $nonce, 'bulk-' . $this->_args['plural'] ) ) { - return; - } - - if ( ! current_user_can( 'edit_user', $this->user_id ) ) { - return; - } - - $followers = $_REQUEST['followers']; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput - - if ( $this->current_action() === 'delete' ) { - if ( ! is_array( $followers ) ) { - $followers = array( $followers ); - } - foreach ( $followers as $follower ) { - FollowerCollection::remove_follower( $this->user_id, $follower ); - } - } - } - - /** - * Returns user count. - * - * @return int - */ - public function get_user_count() { - return FollowerCollection::count_followers( $this->user_id ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-activity-object.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-activity-object.php deleted file mode 100644 index 79f0983a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-activity-object.php +++ /dev/null @@ -1,159 +0,0 @@ -transform_object_properties( $this->item ); - - if ( \is_wp_error( $activity_object ) ) { - return $activity_object; - } - - $activity_object = $this->set_audience( $activity_object ); - - return $activity_object; - } - - /** - * Get the ID of the object. - * - * @return string The ID of the object. - */ - public function get_id() { - return $this->item->get_id(); - } - - /** - * Get the attributed to. - * - * @return string The attributed to. - */ - public function get_attributed_to() { - return $this->item->get_attributed_to(); - } - - /** - * Helper function to get the @-Mentions from the post content. - * - * @return array The list of @-Mentions. - */ - protected function get_mentions() { - /** - * Filter the mentions in the post content. - * - * @param array $mentions The mentions. - * @param string $content The post content. - * @param \Activitypub\Activity\Activity $item The Activity object. - * - * @return array The filtered mentions. - */ - return apply_filters( - 'activitypub_extract_mentions', - array(), - $this->item->get_content() . ' ' . $this->item->get_summary(), - $this->item - ); - } - - /** - * Returns the content map for the post. - * - * @return array The content map for the post. - */ - protected function get_content_map() { - $content = $this->item->get_content(); - - if ( ! $content ) { - return null; - } - - return array( - $this->get_locale() => $content, - ); - } - - /** - * Returns the name map for the post. - * - * @return array The name map for the post. - */ - protected function get_name_map() { - $name = $this->item->get_name(); - - if ( ! $name ) { - return null; - } - - return array( - $this->get_locale() => $name, - ); - } - - /** - * Returns the summary map for the post. - * - * @return array The summary map for the post. - */ - protected function get_summary_map() { - $summary = $this->item->get_summary(); - - if ( ! $summary ) { - return null; - } - - return array( - $this->get_locale() => $summary, - ); - } - - /** - * Returns a list of Tags, used in the Comment. - * - * This includes Hash-Tags and Mentions. - * - * @return array The list of Tags. - */ - protected function get_tag() { - $tags = $this->item->get_tag(); - - if ( ! $tags ) { - $tags = array(); - } - - $mentions = $this->get_mentions(); - - if ( $mentions ) { - foreach ( $mentions as $mention => $url ) { - $tag = array( - 'type' => 'Mention', - 'href' => \esc_url( $url ), - 'name' => \esc_html( $mention ), - ); - $tags[] = $tag; - } - } - - return \array_unique( $tags, SORT_REGULAR ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-attachment.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-attachment.php deleted file mode 100644 index 65f500ca..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-attachment.php +++ /dev/null @@ -1,66 +0,0 @@ -item->ID ); - $mime_type_parts = \explode( '/', $mime_type ); - $type = ''; - - switch ( $mime_type_parts[0] ) { - case 'audio': - case 'video': - $type = 'Document'; - break; - case 'image': - $type = 'Image'; - break; - } - - $attachment = array( - 'type' => $type, - 'url' => wp_get_attachment_url( $this->item->ID ), - 'mediaType' => $mime_type, - ); - - $alt = \get_post_meta( $this->item->ID, '_wp_attachment_image_alt', true ); - if ( $alt ) { - $attachment['name'] = $alt; - } - - return $attachment; - } - - /** - * Returns the ActivityStreams 2.0 Object-Type for a Post based on the - * settings and the Post-Type. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#activity-types - * - * @return string The Object-Type. - */ - protected function get_type() { - return 'Note'; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-base.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-base.php deleted file mode 100644 index 792c8606..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-base.php +++ /dev/null @@ -1,388 +0,0 @@ -item = $item; - $this->wp_object = $item; - } - - /** - * Transform all properties with available get(ter) functions. - * - * @param Base_Object $activity_object The ActivityPub Object. - * - * @return Base_Object|\WP_Error The transformed ActivityPub Object or WP_Error on failure. - */ - protected function transform_object_properties( $activity_object ) { - if ( ! $activity_object || \is_wp_error( $activity_object ) ) { - return $activity_object; - } - - $vars = $activity_object->get_object_var_keys(); - - foreach ( $vars as $var ) { - $getter = 'get_' . $var; - - if ( \method_exists( $this, $getter ) ) { - $value = \call_user_func( array( $this, $getter ) ); - - if ( null !== $value ) { - $setter = 'set_' . $var; - - /** - * Filter the value before it is set to the Activity-Object `$activity_object`. - * - * @param mixed $value The value that should be set. - * @param mixed $item The Object. - */ - $value = \apply_filters( "activitypub_transform_{$setter}", $value, $this->item ); - - /** - * Filter the value before it is set to the Activity-Object `$activity_object`. - * - * @param mixed $value The value that should be set. - * @param string $var The variable name. - * @param mixed $item The Object. - */ - $value = \apply_filters( 'activitypub_transform_set', $value, $var, $this->item ); - - \call_user_func( array( $activity_object, $setter ), $value ); - } - } - } - - return $activity_object; - } - - /** - * Transform the item into an ActivityPub Object. - * - * @return Base_Object|object The Activity-Object. - */ - public function to_object() { - $activity_object = new Base_Object(); - $activity_object = $this->transform_object_properties( $activity_object ); - - if ( \is_wp_error( $activity_object ) ) { - return $activity_object; - } - - $activity_object = $this->set_audience( $activity_object ); - - return $activity_object; - } - - /** - * Get the content visibility. - * - * @return string The content visibility. - */ - public function get_content_visibility() { - if ( ! $this->content_visibility ) { - return ACTIVITYPUB_CONTENT_VISIBILITY_PUBLIC; - } - - return $this->content_visibility; - } - - /** - * Set the content visibility. - * - * @param string $content_visibility The content visibility. - */ - public function set_content_visibility( $content_visibility ) { - $this->content_visibility = $content_visibility; - - return $this; - } - - /** - * Set the audience. - * - * @param Base_Object $activity_object The ActivityPub Object. - * - * @return Base_Object The ActivityPub Object. - */ - protected function set_audience( $activity_object ) { - $public = 'https://www.w3.org/ns/activitystreams#Public'; - $actor = Actors::get_by_resource( $this->get_attributed_to() ); - if ( ! $actor || is_wp_error( $actor ) ) { - $followers = null; - } else { - $followers = $actor->get_followers(); - } - $mentions = array_values( $this->get_mentions() ); - - switch ( $this->get_content_visibility() ) { - case ACTIVITYPUB_CONTENT_VISIBILITY_PUBLIC: - $activity_object->add_to( $public ); - $activity_object->add_cc( $followers ); - $activity_object->add_cc( $mentions ); - break; - case ACTIVITYPUB_CONTENT_VISIBILITY_QUIET_PUBLIC: - $activity_object->add_to( $followers ); - $activity_object->add_to( $mentions ); - $activity_object->add_cc( $public ); - break; - case ACTIVITYPUB_CONTENT_VISIBILITY_PRIVATE: - $activity_object->add_to( $mentions ); - } - - return $activity_object; - } - - /** - * Transform the item to an ActivityPub ID. - * - * @return string The ID of the WordPress Object. - */ - public function to_id() { - /* @var Attachment|Comment|Json|Post|User $this Object transformer. */ - return $this->get_id(); - } - - /** - * Transforms the ActivityPub Object to an Activity - * - * @param string $type The Activity-Type. - * - * @return Activity The Activity. - */ - public function to_activity( $type ) { - $object = $this->to_object(); - - $activity = new Activity(); - $activity->set_type( $type ); - - // Pre-fill the Activity with data (for example cc and to). - $activity->set_object( $object ); - - // Use simple Object (only ID-URI) for Like and Announce. - if ( 'Like' === $type ) { - $activity->set_object( $object->get_id() ); - } - - return $activity; - } - - /** - * Returns a generic locale based on the Blog settings. - * - * @return string The locale of the blog. - */ - protected function get_locale() { - $lang = \strtolower( \strtok( \get_locale(), '_-' ) ); - - if ( $this->item instanceof \WP_Post ) { - /** - * Deprecates the `activitypub_post_locale` filter. - * - * @param string $lang The locale of the post. - * @param mixed $item The post object. - * - * @return string The filtered locale of the post. - */ - $lang = apply_filters_deprecated( - 'activitypub_post_locale', - array( - $lang, - $this->item->ID, - $this->item, - ), - '5.4.0', - 'activitypub_locale', - 'Use the `activitypub_locale` filter instead.' - ); - } - - /** - * Filter the locale of the post. - * - * @param string $lang The locale of the post. - * @param mixed $item The post object. - * - * @return string The filtered locale of the post. - */ - return apply_filters( 'activitypub_locale', $lang, $this->item ); - } - - /** - * Returns the default media type for an Object. - * - * @return string The media type. - */ - public function get_media_type() { - return 'text/html'; - } - - /** - * Returns the content map for the post. - * - * @return array|null The content map for the post or null if not set. - */ - protected function get_content_map() { - if ( ! \method_exists( $this, 'get_content' ) || ! $this->get_content() ) { - return null; - } - - return array( - $this->get_locale() => $this->get_content(), - ); - } - - /** - * Returns the name map for the post. - * - * @return array|null The name map for the post or null if not set. - */ - protected function get_name_map() { - if ( ! \method_exists( $this, 'get_name' ) || ! $this->get_name() ) { - return null; - } - - return array( - $this->get_locale() => $this->get_name(), - ); - } - - /** - * Returns the summary map for the post. - * - * @return array|null The summary map for the post or null if not set. - */ - protected function get_summary_map() { - if ( ! \method_exists( $this, 'get_summary' ) || ! $this->get_summary() ) { - return null; - } - - return array( - $this->get_locale() => $this->get_summary(), - ); - } - - /** - * Returns the tags for the post. - * - * @return array The tags for the post. - */ - protected function get_tag() { - $tags = array(); - $mentions = $this->get_mentions(); - - foreach ( $mentions as $mention => $url ) { - $tags[] = array( - 'type' => 'Mention', - 'href' => \esc_url( $url ), - 'name' => \esc_html( $mention ), - ); - } - - return \array_unique( $tags, SORT_REGULAR ); - } - - /** - * Get the attributed to. - * - * @return string The attributed to. - */ - protected function get_attributed_to() { - return null; - } - - /** - * Extracts mentions from the content. - * - * @return array The mentions. - */ - protected function get_mentions() { - $content = ''; - - if ( method_exists( $this, 'get_content' ) ) { - $content = $content . ' ' . $this->get_content(); - } - - if ( method_exists( $this, 'get_summary' ) ) { - $content = $content . ' ' . $this->get_summary(); - } - - /** - * Filter the mentions in the post content. - * - * @param array $mentions The mentions. - * @param string $content The post content. - * @param WP_Post $post The post object. - * - * @return array The filtered mentions. - */ - return apply_filters( - 'activitypub_extract_mentions', - array(), - $content, - $this->item - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-comment.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-comment.php deleted file mode 100644 index 5e9562dd..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-comment.php +++ /dev/null @@ -1,361 +0,0 @@ -item; - $object = parent::to_object(); - - $object->set_url( $this->get_id() ); - $object->set_type( 'Note' ); - - $published = \strtotime( $comment->comment_date_gmt ); - $object->set_published( \gmdate( ACTIVITYPUB_DATE_TIME_RFC3339, $published ) ); - - $updated = \get_comment_meta( $comment->comment_ID, 'activitypub_comment_modified', true ); - if ( $updated > $published ) { - $object->set_updated( \gmdate( ACTIVITYPUB_DATE_TIME_RFC3339, $updated ) ); - } - - $object->set_content_map( - array( - $this->get_locale() => $this->get_content(), - ) - ); - - return $object; - } - - /** - * Get the content visibility. - * - * @return string The content visibility. - */ - public function get_content_visibility() { - if ( $this->content_visibility ) { - return $this->content_visibility; - } - - $comment = $this->item; - $post = \get_post( $comment->comment_post_ID ); - - if ( ! $post ) { - return ACTIVITYPUB_CONTENT_VISIBILITY_PUBLIC; - } - - $content_visibility = \get_post_meta( $post->ID, 'activitypub_content_visibility', true ); - - if ( ! $content_visibility ) { - return ACTIVITYPUB_CONTENT_VISIBILITY_PUBLIC; - } - - $this->content_visibility = $content_visibility; - - return $this->content_visibility; - } - - /** - * Returns the User-URL of the Author of the Post. - * - * If `single_user` mode is enabled, the URL of the Blog-User is returned. - * - * @return string The User-URL. - */ - protected function get_attributed_to() { - // If the comment was received via ActivityPub, return the author URL. - if ( was_comment_received( $this->item ) ) { - return $this->item->comment_author_url; - } - - return $this->get_actor_object()->get_id(); - } - - /** - * Returns the content for the ActivityPub Item. - * - * The content will be generated based on the user settings. - * - * @return string The content. - */ - protected function get_content() { - $comment = $this->item; - $content = $comment->comment_content; - $mentions = ''; - - foreach ( $this->extract_reply_context() as $acct => $url ) { - $mentions .= sprintf( - '%3$s ', - esc_url( $url ), - esc_attr( $acct ), - esc_html( '@' . strtok( $acct, '@' ) ) - ); - } - $content = $mentions . $content; - - /** - * Filter the content of the comment. - * - * @param string $content The content of the comment. - * @param \WP_Comment $comment The comment object. - * @param array $args The arguments. - * - * @return string The filtered content of the comment. - */ - $content = \apply_filters( 'comment_text', $content, $comment, array() ); - $content = \preg_replace( '/[\n\r\t]/', '', $content ); - $content = \trim( $content ); - - /** - * Filter the content of the comment. - * - * @param string $content The content of the comment. - * @param \WP_Comment $comment The comment object. - * - * @return string The filtered content of the comment. - */ - return \apply_filters( 'activitypub_the_content', $content, $comment ); - } - - /** - * Returns the in-reply-to for the ActivityPub Item. - * - * @return false|string|null The URL of the in-reply-to. - */ - protected function get_in_reply_to() { - $comment = $this->item; - $parent_comment = null; - - if ( $comment->comment_parent ) { - $parent_comment = \get_comment( $comment->comment_parent ); - } - - if ( $parent_comment ) { - $in_reply_to = Comment_Utils::get_source_id( $parent_comment->comment_ID ); - if ( ! $in_reply_to && ! empty( $parent_comment->user_id ) ) { - $in_reply_to = Comment_Utils::generate_id( $parent_comment ); - } - } else { - $in_reply_to = \get_permalink( $comment->comment_post_ID ); - } - - return $in_reply_to; - } - - /** - * Returns the ID of the ActivityPub Object. - * - * @see https://www.w3.org/TR/activitypub/#obj-id - * @see https://github.com/tootsuite/mastodon/issues/13879 - * - * @return string ActivityPub URI for comment - */ - protected function get_id() { - $comment = $this->item; - return Comment_Utils::generate_id( $comment ); - } - - /** - * Returns the User-Object of the Author of the Post. - * - * If `single_user` mode is enabled, the Blog-User is returned. - * - * @return \Activitypub\Activity\Actor The User-Object. - */ - protected function get_actor_object() { - if ( $this->actor_object ) { - return $this->actor_object; - } - - $blog_user = new Blog(); - $this->actor_object = $blog_user; - - if ( is_single_user() ) { - return $blog_user; - } - - $user = Actors::get_by_id( $this->item->user_id ); - - if ( $user && ! is_wp_error( $user ) ) { - $this->actor_object = $user; - return $user; - } - - return $blog_user; - } - - /** - * Helper function to get the @-Mentions from the comment content. - * - * @return array The list of @-Mentions. - */ - protected function get_mentions() { - \add_filter( 'activitypub_extract_mentions', array( $this, 'extract_reply_context' ) ); - - /** - * Filter the mentions in the comment. - * - * @param array $mentions The list of mentions. - * @param string $content The content of the comment. - * @param \WP_Comment $comment The comment object. - * - * @return array The filtered list of mentions. - */ - return apply_filters( 'activitypub_extract_mentions', array(), $this->item->comment_content, $this->item ); - } - - /** - * Gets the ancestors of the comment, but only the ones that are ActivityPub comments. - * - * @return array The list of ancestors. - */ - protected function get_comment_ancestors() { - $ancestors = get_comment_ancestors( $this->item ); - - // Now that we have the full tree of ancestors, only return the ones received from the fediverse. - return array_filter( - $ancestors, - function ( $comment_id ) { - return \get_comment_meta( $comment_id, 'protocol', true ) === 'activitypub'; - } - ); - } - - /** - * Collect all other Users that participated in this comment-thread - * to send them a notification about the new reply. - * - * @param array $mentions Optional. The already mentioned ActivityPub users. Default empty array. - * - * @return array The list of all Repliers. - */ - public function extract_reply_context( $mentions = array() ) { - // Check if `$this->item` is a WP_Comment. - if ( 'WP_Comment' !== get_class( $this->item ) ) { - return $mentions; - } - - $ancestors = $this->get_comment_ancestors(); - if ( ! $ancestors ) { - return $mentions; - } - - foreach ( $ancestors as $comment_id ) { - $comment = \get_comment( $comment_id ); - if ( $comment && ! empty( $comment->comment_author_url ) ) { - $acct = Webfinger::uri_to_acct( $comment->comment_author_url ); - if ( $acct && ! is_wp_error( $acct ) ) { - $acct = str_replace( 'acct:', '@', $acct ); - $mentions[ $acct ] = $comment->comment_author_url; - } - } - } - - return $mentions; - } - - /** - * Returns the updated date of the comment. - * - * @return string|null The updated date of the comment. - */ - public function get_updated() { - $updated = \get_comment_meta( $this->item->comment_ID, 'activitypub_comment_modified', true ); - $published = \get_comment_meta( $this->item->comment_ID, 'activitypub_comment_published', true ); - - if ( $updated > $published ) { - return \gmdate( ACTIVITYPUB_DATE_TIME_RFC3339, $updated ); - } - - return null; - } - - /** - * Returns the published date of the comment. - * - * @return string The published date of the comment. - */ - public function get_published() { - return \gmdate( ACTIVITYPUB_DATE_TIME_RFC3339, \strtotime( $this->item->comment_date_gmt ) ); - } - - /** - * Returns the URL of the comment. - * - * @return string The URL of the comment. - */ - public function get_url() { - return $this->get_id(); - } - - /** - * Returns the type of the comment. - * - * @return string The type of the comment. - */ - public function get_type() { - return 'Note'; - } - - /** - * Get the context of the post. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-context - * - * @return string The context of the post. - */ - protected function get_context() { - if ( $this->item->comment_post_ID ) { - return get_rest_url_by_path( sprintf( 'posts/%d/context', $this->item->comment_post_ID ) ); - } - - return null; - } - - /** - * Get the replies Collection. - * - * @return array|null The replies collection on success or null on failure. - */ - public function get_replies() { - return Replies::get_collection( $this->item ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-factory.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-factory.php deleted file mode 100644 index a24300d0..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-factory.php +++ /dev/null @@ -1,117 +0,0 @@ -post_type === 'event' ) { - * return new My_Event_Transformer( $object ); - * } - * return $transformer; - * }, 10, 3 ); - * - * @param null|Base $transformer The transformer to use. Default null. - * @param mixed $data The object to transform. - * @param string $object_class The class of the object to transform. - * - * @return mixed The transformer to use. - */ - $transformer = \apply_filters( 'activitypub_transformer', null, $data, $class ); - - if ( $transformer ) { - if ( - ! \is_object( $transformer ) || - ! $transformer instanceof Base - ) { - return new WP_Error( 'invalid_transformer', __( 'Invalid transformer', 'activitypub' ) ); - } - - return $transformer; - } - - // Use default transformer. - switch ( $class ) { - case 'WP_Post': - if ( 'attachment' === $data->post_type && ! is_post_disabled( $data ) ) { - return new Attachment( $data ); - } elseif ( ! is_post_disabled( $data ) ) { - return new Post( $data ); - } - break; - case 'WP_Comment': - if ( Comment_Helper::should_be_federated( $data ) ) { - return new Comment( $data ); - } - break; - case 'WP_User': - if ( user_can_activitypub( $data->ID ) ) { - return new User( $data ); - } - break; - case 'json': - return new Json( $data ); - } - - if ( $data instanceof \Activitypub\Activity\Base_Object ) { - return new Activity_Object( $data ); - } - - return new WP_Error( 'invalid_object', __( 'Invalid object', 'activitypub' ) ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-json.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-json.php deleted file mode 100644 index 9829c220..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-json.php +++ /dev/null @@ -1,41 +0,0 @@ -item; - $object = parent::to_object(); - - $content_warning = get_content_warning( $post ); - if ( ! empty( $content_warning ) ) { - $object->set_sensitive( true ); - $object->set_summary( $content_warning ); - $object->set_summary_map( null ); - } - - return $object; - } - - /** - * Get the content visibility. - * - * @return string The content visibility. - */ - public function get_content_visibility() { - if ( ! $this->content_visibility ) { - return get_content_visibility( $this->item ); - } - - return $this->content_visibility; - } - - /** - * Returns the User-Object of the Author of the Post. - * - * If `single_user` mode is enabled, the Blog-User is returned. - * - * @return \Activitypub\Activity\Actor The User-Object. - */ - public function get_actor_object() { - if ( $this->actor_object ) { - return $this->actor_object; - } - - $blog_user = new Blog(); - $this->actor_object = $blog_user; - - if ( is_single_user() ) { - return $blog_user; - } - - $user = Actors::get_by_id( $this->item->post_author ); - - if ( $user && ! is_wp_error( $user ) ) { - $this->actor_object = $user; - return $user; - } - - return $blog_user; - } - - /** - * Returns the ID of the Post. - * - * @return string The Posts ID. - */ - public function get_id() { - $last_legacy_id = (int) \get_option( 'activitypub_last_post_with_permalink_as_id', 0 ); - $post_id = (int) $this->item->ID; - - if ( $post_id > $last_legacy_id ) { - // Generate URI based on post ID. - return \add_query_arg( 'p', $post_id, \trailingslashit( \home_url() ) ); - } - - return $this->get_url(); - } - - /** - * Returns the URL of the Post. - * - * @return string The Posts URL. - */ - public function get_url() { - $post = $this->item; - - switch ( \get_post_status( $post ) ) { - case 'trash': - $permalink = \get_post_meta( $post->ID, '_activitypub_canonical_url', true ); - break; - case 'draft': - // Get_sample_permalink is in wp-admin, not always loaded. - if ( ! \function_exists( '\get_sample_permalink' ) ) { - require_once ABSPATH . 'wp-admin/includes/post.php'; - } - $sample = \get_sample_permalink( $post->ID ); - $permalink = \str_replace( array( '%pagename%', '%postname%' ), $sample[1], $sample[0] ); - break; - default: - $permalink = \get_permalink( $post ); - break; - } - - return \esc_url( $permalink ); - } - - /** - * Returns the User-URL of the Author of the Post. - * - * If `single_user` mode is enabled, the URL of the Blog-User is returned. - * - * @return string The User-URL. - */ - protected function get_attributed_to() { - return $this->get_actor_object()->get_id(); - } - - /** - * Returns the featured image as `Image`. - * - * @return array|null The Image or null if no image is available. - */ - protected function get_image() { - $post_id = $this->item->ID; - - // List post thumbnail first if this post has one. - if ( - ! \function_exists( 'has_post_thumbnail' ) || - ! \has_post_thumbnail( $post_id ) - ) { - return null; - } - - $id = \get_post_thumbnail_id( $post_id ); - $image_size = 'large'; - - /** - * Filter the image URL returned for each post. - * - * @param array|false $thumbnail The image URL, or false if no image is available. - * @param int $id The attachment ID. - * @param string $image_size The image size to retrieve. Set to 'large' by default. - */ - $thumbnail = apply_filters( - 'activitypub_get_image', - $this->get_wordpress_attachment( $id, $image_size ), - $id, - $image_size - ); - - if ( ! $thumbnail ) { - return null; - } - - $mime_type = \get_post_mime_type( $id ); - - $image = array( - 'type' => 'Image', - 'url' => \esc_url( $thumbnail[0] ), - 'mediaType' => \esc_attr( $mime_type ), - ); - - $alt = \get_post_meta( $id, '_wp_attachment_image_alt', true ); - if ( $alt ) { - $image['name'] = \wp_strip_all_tags( \html_entity_decode( $alt ) ); - } - - return $image; - } - - /** - * Returns an Icon, based on the Featured Image with a fallback to the site-icon. - * - * @return array|null The Icon or null if no icon is available. - */ - protected function get_icon() { - $post_id = $this->item->ID; - - // List post thumbnail first if this post has one. - if ( \has_post_thumbnail( $post_id ) ) { - $id = \get_post_thumbnail_id( $post_id ); - } else { - // Try site_logo, falling back to site_icon, first. - $id = get_option( 'site_icon' ); - } - - if ( ! $id ) { - return null; - } - - $image_size = 'thumbnail'; - - /** - * Filter the image URL returned for each post. - * - * @param array|false $thumbnail The image URL, or false if no image is available. - * @param int $id The attachment ID. - * @param string $image_size The image size to retrieve. Set to 'large' by default. - */ - $thumbnail = apply_filters( - 'activitypub_get_image', - $this->get_wordpress_attachment( $id, $image_size ), - $id, - $image_size - ); - - if ( ! $thumbnail ) { - return null; - } - - $mime_type = \get_post_mime_type( $id ); - - $image = array( - 'type' => 'Image', - 'url' => \esc_url( $thumbnail[0] ), - 'mediaType' => \esc_attr( $mime_type ), - ); - - $alt = \get_post_meta( $id, '_wp_attachment_image_alt', true ); - if ( $alt ) { - $image['name'] = \wp_strip_all_tags( \html_entity_decode( $alt ) ); - } - - return $image; - } - - /** - * Generates all Media Attachments for a Post. - * - * @return array The Attachments. - */ - protected function get_attachment() { - // Remove attachments from drafts. - if ( 'draft' === \get_post_status( $this->item ) ) { - return array(); - } - - /** - * Filters the maximum number of media attachments allowed in a post. - * - * Despite the name suggesting only images, this filter controls the maximum number - * of all media attachments (images, audio, and video) that can be included in an - * ActivityPub post. The name is maintained for backwards compatibility. - * - * @param int $max_media Maximum number of media attachments. Default ACTIVITYPUB_MAX_IMAGE_ATTACHMENTS. - */ - $max_media = \intval( - \apply_filters( - 'activitypub_max_image_attachments', - \get_option( 'activitypub_max_image_attachments', ACTIVITYPUB_MAX_IMAGE_ATTACHMENTS ) - ) - ); - - $media = array( - 'image' => array(), - 'audio' => array(), - 'video' => array(), - ); - $id = $this->item->ID; - - // List post thumbnail first if this post has one. - if ( \function_exists( 'has_post_thumbnail' ) && \has_post_thumbnail( $id ) ) { - $media['image'][] = array( 'id' => \get_post_thumbnail_id( $id ) ); - } - - $media = $this->get_enclosures( $media ); - - if ( site_supports_blocks() && \has_blocks( $this->item->post_content ) ) { - $media = $this->get_block_attachments( $media, $max_media ); - } else { - $media = $this->get_classic_editor_image_embeds( $media, $max_media ); - } - - $media = $this->filter_media_by_object_type( $media, \get_post_format( $this->item ), $this->item ); - $unique_ids = \array_unique( \array_column( $media, 'id' ) ); - $media = \array_intersect_key( $media, $unique_ids ); - $media = \array_slice( $media, 0, $max_media ); - - /** - * Filter the attachment IDs for a post. - * - * @param array $media The media array grouped by type. - * @param WP_Post $item The post object. - * - * @return array The filtered attachment IDs. - */ - $media = \apply_filters( 'activitypub_attachment_ids', $media, $this->item ); - - $attachments = \array_filter( \array_map( array( $this, 'wp_attachment_to_activity_attachment' ), $media ) ); - - /** - * Filter the attachments for a post. - * - * @param array $attachments The attachments. - * @param WP_Post $item The post object. - * - * @return array The filtered attachments. - */ - return \apply_filters( 'activitypub_attachments', $attachments, $this->item ); - } - - /** - * Returns the ActivityStreams 2.0 Object-Type for a Post based on the - * settings and the Post-Type. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#activity-types - * - * @return string The Object-Type. - */ - protected function get_type() { - $post_format_setting = \get_option( 'activitypub_object_type', ACTIVITYPUB_DEFAULT_OBJECT_TYPE ); - - if ( 'wordpress-post-format' !== $post_format_setting ) { - return \ucfirst( $post_format_setting ); - } - - $has_title = \post_type_supports( $this->item->post_type, 'title' ); - $content = \wp_strip_all_tags( $this->item->post_content ); - - // Check if the post has a title. - if ( - ! $has_title || - ! $this->item->post_title || - \strlen( $content ) <= ACTIVITYPUB_NOTE_LENGTH - ) { - return 'Note'; - } - - // Default to Note. - $object_type = 'Note'; - $post_type = \get_post_type( $this->item ); - - if ( 'page' === $post_type ) { - $object_type = 'Page'; - } elseif ( ! \get_post_format( $this->item ) ) { - $object_type = 'Article'; - } - - return $object_type; - } - - /** - * Returns the Audience for the Post. - * - * @return string|null The audience. - */ - public function get_audience() { - $actor_mode = \get_option( 'activitypub_actor_mode', ACTIVITYPUB_ACTOR_MODE ); - - if ( ACTIVITYPUB_ACTOR_AND_BLOG_MODE === $actor_mode ) { - $blog = new Blog(); - return $blog->get_id(); - } - - return null; - } - - /** - * Returns a list of Tags, used in the Post. - * - * This includes Hash-Tags and Mentions. - * - * @return array The list of Tags. - */ - protected function get_tag() { - $tags = parent::get_tag(); - - $post_tags = \get_the_tags( $this->item->ID ); - if ( $post_tags ) { - foreach ( $post_tags as $post_tag ) { - // Tag can be empty. - if ( ! $post_tag ) { - continue; - } - - $tags[] = array( - 'type' => 'Hashtag', - 'href' => \esc_url( \get_tag_link( $post_tag->term_id ) ), - 'name' => esc_hashtag( $post_tag->name ), - ); - } - } - - return \array_unique( $tags, SORT_REGULAR ); - } - - /** - * Returns the summary for the ActivityPub Item. - * - * The summary will be generated based on the user settings and only if the - * object type is not set to `note`. - * - * @return string|null The summary or null if the object type is `note`. - */ - protected function get_summary() { - if ( 'Note' === $this->get_type() ) { - return null; - } - - // Remove Teaser from drafts. - if ( ! $this->is_preview() && 'draft' === \get_post_status( $this->item ) ) { - return \__( '(This post is being modified)', 'activitypub' ); - } - - return generate_post_summary( $this->item ); - } - - /** - * Returns the title for the ActivityPub Item. - * - * The title will be generated based on the user settings and only if the - * object type is not set to `note`. - * - * @return string|null The title or null if the object type is `note`. - */ - protected function get_name() { - if ( 'Note' === $this->get_type() ) { - return null; - } - - $title = \get_the_title( $this->item->ID ); - - if ( ! $title ) { - return null; - } - - return \wp_strip_all_tags( - \html_entity_decode( - $title - ) - ); - } - - /** - * Returns the content for the ActivityPub Item. - * - * The content will be generated based on the user settings. - * - * @return string The content. - */ - protected function get_content() { - \add_filter( 'activitypub_reply_block', '__return_empty_string' ); - - // Remove Content from drafts. - if ( ! $this->is_preview() && 'draft' === \get_post_status( $this->item ) ) { - return \__( '(This post is being modified)', 'activitypub' ); - } - - global $post; - - /** - * Provides an action hook so plugins can add their own hooks/filters before AP content is generated. - * - * Example: if a plugin adds a filter to `the_content` to add a button to the end of posts, it can also remove that filter here. - * - * @param WP_Post $post The post object. - */ - \do_action( 'activitypub_before_get_content', $post ); - - \add_filter( 'render_block_core/embed', array( $this, 'revert_embed_links' ), 10, 2 ); - \add_filter( 'render_block_activitypub/reply', array( $this, 'generate_reply_link' ), 10, 2 ); - - // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited - $post = $this->item; - $content = $this->get_post_content_template(); - - // It seems that shortcodes are only applied to published posts. - if ( is_preview() ) { - $post->post_status = 'publish'; - } - - // Register our shortcodes just in time. - Shortcodes::register(); - // Fill in the shortcodes. - \setup_postdata( $post ); - $content = \do_shortcode( $content ); - \wp_reset_postdata(); - - $content = \wpautop( $content ); - $content = \preg_replace( '/[\n\r\t]/', '', $content ); - $content = \trim( $content ); - - /** - * Filters the post content before it is transformed for ActivityPub. - * - * @param string $content The post content to be transformed. - * @param WP_Post $post The post object being transformed. - */ - $content = \apply_filters( 'activitypub_the_content', $content, $post ); - - // Don't need these anymore, should never appear in a post. - Shortcodes::unregister(); - - // Get rid of the reply block filter. - \remove_filter( 'render_block_activitypub/reply', array( $this, 'generate_reply_link' ), 10, 2 ); - \remove_filter( 'render_block_core/embed', array( $this, 'revert_embed_links' ) ); - \remove_filter( 'activitypub_reply_block', '__return_empty_string' ); - - return $content; - } - - /** - * Generate HTML @ link for reply block. - * - * @param string $block_content The block content. - * @param array $block The block data. - * - * @return string The HTML @ link. - */ - public function generate_reply_link( $block_content, $block ) { - // Return empty string if no URL is provided. - if ( empty( $block['attrs']['url'] ) ) { - return ''; - } - - $url = $block['attrs']['url']; - - // Try to get ActivityPub representation. Is likely already cached. - $object = \Activitypub\Http::get_remote_object( $url ); - if ( \is_wp_error( $object ) ) { - return ''; - } - - $author_url = $object['attributedTo'] ?? ''; - if ( ! $author_url ) { - return ''; - } - - // Fetch author information. - $author = \Activitypub\Http::get_remote_object( $author_url ); - if ( \is_wp_error( $author ) ) { - return ''; - } - - // Get webfinger identifier. - $webfinger = ''; - if ( ! empty( $author['webfinger'] ) ) { - $webfinger = $author['webfinger']; - } elseif ( ! empty( $author['preferredUsername'] ) && ! empty( $author['url'] ) ) { - // Construct webfinger-style identifier from username and domain. - $domain = \wp_parse_url( $author['url'], PHP_URL_HOST ); - $webfinger = '@' . $author['preferredUsername'] . '@' . $domain; - } - - if ( ! $webfinger ) { - return ''; - } - - // Generate HTML @ link. - return \sprintf( - '

%3$s

', - \esc_url( $url ), - \esc_attr( $webfinger ), - \esc_html( '@' . strtok( $webfinger, '@' ) ) - ); - } - - /** - * Returns the in-reply-to URL of the post. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-inreplyto - * - * @return string|null The in-reply-to URL of the post. - */ - protected function get_in_reply_to() { - if ( ! site_supports_blocks() ) { - return null; - } - - $blocks = \parse_blocks( $this->item->post_content ); - - foreach ( $blocks as $block ) { - if ( 'activitypub/reply' === $block['blockName'] && isset( $block['attrs']['url'] ) ) { - // We only support one reply block per post for now. - return $block['attrs']['url']; - } - } - - return null; - } - - /** - * Returns the published date of the post. - * - * @return string The published date of the post. - */ - protected function get_published() { - $published = \strtotime( $this->item->post_date_gmt ); - - return \gmdate( ACTIVITYPUB_DATE_TIME_RFC3339, $published ); - } - - /** - * Returns the updated date of the post. - * - * @return string|null The updated date of the post. - */ - protected function get_updated() { - $published = \strtotime( $this->item->post_date_gmt ); - $updated = \strtotime( $this->item->post_modified_gmt ); - - if ( $updated > $published ) { - return \gmdate( ACTIVITYPUB_DATE_TIME_RFC3339, $updated ); - } - - return null; - } - - /** - * Helper function to extract the @-Mentions from the post content. - * - * @return array The list of @-Mentions. - */ - protected function get_mentions() { - /** - * Filter the mentions in the post content. - * - * @param array $mentions The mentions. - * @param string $content The post content. - * @param WP_Post $post The post object. - * - * @return array The filtered mentions. - */ - return apply_filters( - 'activitypub_extract_mentions', - array(), - $this->item->post_content . ' ' . $this->item->post_excerpt, - $this->item - ); - } - - /** - * Transform Embed blocks to block level link. - * - * Remote servers will simply drop iframe elements, rendering incomplete content. - * - * @see https://www.w3.org/TR/activitypub/#security-sanitizing-content - * @see https://www.w3.org/wiki/ActivityPub/Primer/HTML - * - * @param string $block_content The block content (html). - * @param object $block The block object. - * - * @return string A block level link - */ - public function revert_embed_links( $block_content, $block ) { - if ( ! isset( $block['attrs']['url'] ) ) { - return $block_content; - } - return '

' . $block['attrs']['url'] . '

'; - } - - /** - * Check if the post is a preview. - * - * @return boolean True if the post is a preview, false otherwise. - */ - private function is_preview() { - return defined( 'ACTIVITYPUB_PREVIEW' ) && ACTIVITYPUB_PREVIEW; - } - - /** - * Get enclosures for a post. - * - * @param array $media The media array grouped by type. - * - * @return array The media array extended with enclosures. - */ - protected function get_enclosures( $media ) { - $enclosures = get_enclosures( $this->item->ID ); - - if ( ! $enclosures ) { - return $media; - } - - foreach ( $enclosures as $enclosure ) { - // Check if URL is an attachment. - $attachment_id = \attachment_url_to_postid( $enclosure['url'] ); - - if ( $attachment_id ) { - $enclosure['id'] = $attachment_id; - $enclosure['url'] = \wp_get_attachment_url( $attachment_id ); - $enclosure['mediaType'] = \get_post_mime_type( $attachment_id ); - } - - $mime_type = $enclosure['mediaType']; - $mime_type_parts = \explode( '/', $mime_type ); - $enclosure['type'] = \ucfirst( $mime_type_parts[0] ); - - switch ( $mime_type_parts[0] ) { - case 'image': - $media['image'][] = $enclosure; - break; - case 'audio': - $media['audio'][] = $enclosure; - break; - case 'video': - $media['video'][] = $enclosure; - break; - } - } - - return $media; - } - - /** - * Get media attachments from blocks. They will be formatted as ActivityPub attachments, not as WP attachments. - * - * @param array $media The media array grouped by type. - * @param int $max_media The maximum number of attachments to return. - * - * @return array The attachments. - */ - protected function get_block_attachments( $media, $max_media ) { - // Max media can't be negative or zero. - if ( $max_media <= 0 ) { - return array(); - } - - $blocks = \parse_blocks( $this->item->post_content ); - - return $this->get_media_from_blocks( $blocks, $media ); - } - - /** - * Recursively get media IDs from blocks. - * - * @param array $blocks The blocks to search for media IDs. - * @param array $media The media IDs to append new IDs to. - * - * @return array The image IDs. - */ - protected function get_media_from_blocks( $blocks, $media ) { - foreach ( $blocks as $block ) { - // Recurse into inner blocks. - if ( ! empty( $block['innerBlocks'] ) ) { - $media = $this->get_media_from_blocks( $block['innerBlocks'], $media ); - } - - switch ( $block['blockName'] ) { - case 'core/image': - case 'core/cover': - if ( ! empty( $block['attrs']['id'] ) ) { - $alt = ''; - $check = preg_match( '//i', $block['innerHTML'], $match ); - - if ( $check ) { - $alt = $match[2]; - } - - $found = false; - foreach ( $media['image'] as $i => $image ) { - if ( isset( $image['id'] ) && $image['id'] === $block['attrs']['id'] ) { - $media['image'][ $i ]['alt'] = $alt; - $found = true; - break; - } - } - - if ( ! $found ) { - $media['image'][] = array( - 'id' => $block['attrs']['id'], - 'alt' => $alt, - ); - } - } - break; - case 'core/audio': - if ( ! empty( $block['attrs']['id'] ) ) { - $media['audio'][] = array( 'id' => $block['attrs']['id'] ); - } - break; - case 'core/video': - case 'videopress/video': - if ( ! empty( $block['attrs']['id'] ) ) { - $media['video'][] = array( 'id' => $block['attrs']['id'] ); - } - break; - case 'jetpack/slideshow': - case 'jetpack/tiled-gallery': - if ( ! empty( $block['attrs']['ids'] ) ) { - $media['image'] = array_merge( - $media['image'], - array_map( - function ( $id ) { - return array( 'id' => $id ); - }, - $block['attrs']['ids'] - ) - ); - } - break; - case 'jetpack/image-compare': - if ( ! empty( $block['attrs']['beforeImageId'] ) ) { - $media['image'][] = array( 'id' => $block['attrs']['beforeImageId'] ); - } - if ( ! empty( $block['attrs']['afterImageId'] ) ) { - $media['image'][] = array( 'id' => $block['attrs']['afterImageId'] ); - } - break; - } - } - - return $media; - } - - /** - * Get image embeds from the classic editor by parsing HTML. - * - * @param array $media The media array grouped by type. - * @param int $max_images The maximum number of images to return. - * - * @return array The attachments. - */ - protected function get_classic_editor_image_embeds( $media, $max_images ) { - // If someone calls that function directly, bail. - if ( ! \class_exists( '\WP_HTML_Tag_Processor' ) ) { - return $media; - } - - // Max images can't be negative or zero. - if ( $max_images <= 0 ) { - return $media; - } - - $images = array(); - $base = get_upload_baseurl(); - $content = \get_post_field( 'post_content', $this->item ); - $tags = new \WP_HTML_Tag_Processor( $content ); - - // This linter warning is a false positive - we have to re-count each time here as we modify $images. - // phpcs:ignore Squiz.PHP.DisallowSizeFunctionsInLoops.Found - while ( $tags->next_tag( 'img' ) && ( \count( $images ) <= $max_images ) ) { - /** - * Filter the image source URL. - * - * This can be used to modify the image source URL before it is used to - * determine the attachment ID. - * - * @param string $src The image source URL. - */ - $src = \apply_filters( 'activitypub_image_src', $tags->get_attribute( 'src' ) ); - - /* - * If the img source is in our uploads dir, get the - * associated ID. Note: if there's a -500x500 - * type suffix, we remove it, but we try the original - * first in case the original image is actually called - * that. Likewise, we try adding the -scaled suffix for - * the case that this is a small version of an image - * that was big enough to get scaled down on upload: - * https://make.wordpress.org/core/2019/10/09/introducing-handling-of-big-images-in-wordpress-5-3/ - */ - if ( null !== $src && \str_starts_with( $src, $base ) ) { - $img_id = \attachment_url_to_postid( $src ); - - if ( 0 === $img_id ) { - $count = 0; - $src = \strtok( $src, '?' ); - $img_id = \attachment_url_to_postid( $src ); - } - - if ( 0 === $img_id ) { - $count = 0; - $src = \preg_replace( '/-(?:\d+x\d+)(\.[a-zA-Z]+)$/', '$1', $src, 1, $count ); - if ( $count > 0 ) { - $img_id = \attachment_url_to_postid( $src ); - } - } - - if ( 0 === $img_id ) { - $src = \preg_replace( '/(\.[a-zA-Z]+)$/', '-scaled$1', $src ); - $img_id = \attachment_url_to_postid( $src ); - } - - if ( 0 !== $img_id ) { - $images[] = array( - 'id' => $img_id, - 'alt' => $tags->get_attribute( 'alt' ), - ); - } - } - } - - if ( \count( $media['image'] ) <= $max_images ) { - $media['image'] = \array_merge( $media['image'], $images ); - } - - return $media; - } - - /** - * Filter media IDs by object type. - * - * @param array $media The media array grouped by type. - * @param string $type The object type. - * @param WP_Post $item The post object. - * - * @return array The filtered media IDs. - */ - protected function filter_media_by_object_type( $media, $type, $item ) { - /** - * Filter the object type for media attachments. - * - * @param string $type The object type. - * @param WP_Post $item The post object. - * - * @return string The filtered object type. - */ - $type = \apply_filters( 'filter_media_by_object_type', \strtolower( $type ), $item ); - - if ( ! empty( $media[ $type ] ) ) { - return $media[ $type ]; - } - - return array_filter( array_merge( ...array_values( $media ) ) ); - } - - /** - * Converts a WordPress Attachment to an ActivityPub Attachment. - * - * @param array $media The Attachment array. - * - * @return array The ActivityPub Attachment. - */ - public function wp_attachment_to_activity_attachment( $media ) { - if ( ! isset( $media['id'] ) ) { - return $media; - } - - $id = $media['id']; - $attachment = array(); - $mime_type = \get_post_mime_type( $id ); - $mime_type_parts = \explode( '/', $mime_type ); - // Switching on image/audio/video. - switch ( $mime_type_parts[0] ) { - case 'image': - $image_size = 'large'; - - /** - * Filter the image URL returned for each post. - * - * @param array|false $thumbnail The image URL, or false if no image is available. - * @param int $id The attachment ID. - * @param string $image_size The image size to retrieve. Set to 'large' by default. - */ - $thumbnail = apply_filters( - 'activitypub_get_image', - $this->get_wordpress_attachment( $id, $image_size ), - $id, - $image_size - ); - - if ( $thumbnail ) { - $image = array( - 'type' => 'Image', - 'url' => \esc_url( $thumbnail[0] ), - 'mediaType' => \esc_attr( $mime_type ), - ); - - if ( ! empty( $media['alt'] ) ) { - $image['name'] = \wp_strip_all_tags( \html_entity_decode( $media['alt'] ) ); - } else { - $alt = \get_post_meta( $id, '_wp_attachment_image_alt', true ); - if ( $alt ) { - $image['name'] = \wp_strip_all_tags( \html_entity_decode( $alt ) ); - } - } - - $attachment = $image; - } - break; - - case 'audio': - case 'video': - $attachment = array( - 'type' => 'Document', - 'mediaType' => \esc_attr( $mime_type ), - 'url' => \esc_url( \wp_get_attachment_url( $id ) ), - 'name' => \esc_attr( \get_the_title( $id ) ), - ); - $meta = wp_get_attachment_metadata( $id ); - // Height and width for videos. - if ( isset( $meta['width'] ) && isset( $meta['height'] ) ) { - $attachment['width'] = \esc_attr( $meta['width'] ); - $attachment['height'] = \esc_attr( $meta['height'] ); - } - - if ( $this->get_icon() ) { - $attachment['icon'] = object_to_uri( $this->get_icon() ); - } - - break; - } - - /** - * Filter the attachment for a post. - * - * @param array $attachment The attachment. - * @param int $id The attachment ID. - * - * @return array The filtered attachment. - */ - return \apply_filters( 'activitypub_attachment', $attachment, $id ); - } - - /** - * Return details about an image attachment. - * - * @param int $id The attachment ID. - * @param string $image_size The image size to retrieve. Set to 'large' by default. - * - * @return array|false Array of image data, or boolean false if no image is available. - */ - protected function get_wordpress_attachment( $id, $image_size = 'large' ) { - /** - * Hook into the image retrieval process. Before image retrieval. - * - * @param int $id The attachment ID. - * @param string $image_size The image size to retrieve. Set to 'large' by default. - */ - do_action( 'activitypub_get_image_pre', $id, $image_size ); - - $image = \wp_get_attachment_image_src( $id, $image_size ); - - /** - * Hook into the image retrieval process. After image retrieval. - * - * @param int $id The attachment ID. - * @param string $image_size The image size to retrieve. Set to 'large' by default. - */ - do_action( 'activitypub_get_image_post', $id, $image_size ); - - return $image; - } - - /** - * Get the context of the post. - * - * @see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-context - * - * @return string The context of the post. - */ - protected function get_context() { - return get_rest_url_by_path( sprintf( 'posts/%d/context', $this->item->ID ) ); - } - - /** - * Gets the template to use to generate the content of the activitypub item. - * - * @return string The Template. - */ - protected function get_post_content_template() { - $content = \get_option( 'activitypub_custom_post_content', ACTIVITYPUB_CUSTOM_POST_CONTENT ); - $template = $content ?? ACTIVITYPUB_CUSTOM_POST_CONTENT; - - $post_format_setting = \get_option( 'activitypub_object_type', ACTIVITYPUB_DEFAULT_OBJECT_TYPE ); - - if ( 'wordpress-post-format' === $post_format_setting ) { - $template = ''; - - if ( 'Note' === $this->get_type() ) { - $template .= "[ap_title type=\"html\"]\n\n"; - } - - $template .= '[ap_content]'; - } - - /** - * Filters the template used to generate ActivityPub object content. - * - * This filter allows developers to modify the template that determines how post - * content is formatted in ActivityPub objects. The template can include special - * shortcodes like [ap_title] and [ap_content] that are processed during content - * generation. - * - * @param string $template The template string containing shortcodes. - * @param WP_Post $item The WordPress post object being transformed. - */ - return apply_filters( 'activitypub_object_content_template', $template, $this->item ); - } - - /** - * Get the replies Collection. - * - * @return array|null The replies collection on success or null on failure. - */ - public function get_replies() { - return Replies::get_collection( $this->item ); - } - - /** - * Get the likes Collection. - * - * @return array The likes collection. - */ - public function get_likes() { - return array( - 'id' => get_rest_url_by_path( sprintf( 'posts/%d/likes', $this->item->ID ) ), - 'type' => 'Collection', - 'totalItems' => Interactions::count_by_type( $this->item->ID, 'like' ), - ); - } - - /** - * Get the shares Collection. - * - * @return array The Shares collection. - */ - public function get_shares() { - return array( - 'id' => get_rest_url_by_path( sprintf( 'posts/%d/shares', $this->item->ID ) ), - 'type' => 'Collection', - 'totalItems' => Interactions::count_by_type( $this->item->ID, 'repost' ), - ); - } - - /** - * Get the preview of the post. - * - * @return array|null The preview of the post or null if the post is not an Article. - */ - public function get_preview() { - if ( 'Article' !== $this->get_type() ) { - return null; - } - - return array( - 'type' => 'Note', - 'content' => $this->get_summary(), - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-user.php b/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-user.php deleted file mode 100644 index 418913be..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/includes/transformer/class-user.php +++ /dev/null @@ -1,41 +0,0 @@ -transform_object_properties( Actors::get_by_id( $this->item->ID ) ); - - if ( \is_wp_error( $activity_object ) ) { - return $activity_object; - } - - return $activity_object; - } - - /** - * Get the Actor ID. - * - * @return string The Actor ID. - */ - public function to_id() { - return Actors::get_by_id( $this->item->ID )->get_id(); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-akismet.php b/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-akismet.php deleted file mode 100644 index 511cef39..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-akismet.php +++ /dev/null @@ -1,40 +0,0 @@ -url = bp_core_get_user_domain( $author_id ); // Add BP member profile URL as user URL. - - // Add BuddyPress' cover_image instead of WordPress' header_image. - $cover_image_url = bp_attachments_get_attachment( 'url', array( 'item_id' => $author_id ) ); - - if ( $cover_image_url ) { - $author->image = array( - 'type' => 'Image', - 'url' => $cover_image_url, - ); - } - - // Change profile URL to BuddyPress' profile URL. - $author->attachment['profile_url'] = array( - 'type' => 'PropertyValue', - 'name' => \__( 'Profile', 'activitypub' ), - 'value' => \html_entity_decode( - sprintf( - '%s', - \esc_attr( bp_core_get_user_domain( $author_id ) ), - \bp_core_get_user_domain( $author_id ), - \wp_parse_url( \bp_core_get_user_domain( $author_id ), \PHP_URL_HOST ) - ), - \ENT_QUOTES, - 'UTF-8' - ), - ); - - // Replace blog URL on multisite. - if ( is_multisite() ) { - $user_blogs = get_blogs_of_user( $author_id ); // Get sites of user to send as AP metadata. - - if ( ! empty( $user_blogs ) ) { - unset( $author->attachment['blog_url'] ); - - foreach ( $user_blogs as $blog ) { - if ( 1 !== $blog->userblog_id ) { - $author->attachment[] = array( - 'type' => 'PropertyValue', - 'name' => $blog->blogname, - 'value' => \html_entity_decode( - sprintf( - '%s', - \esc_attr( $blog->siteurl ), - $blog->siteurl, - \wp_parse_url( $blog->siteurl, \PHP_URL_HOST ) - ), - \ENT_QUOTES, - 'UTF-8' - ), - ); - } - } - } - } - - return $author; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-enable-mastodon-apps.php b/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-enable-mastodon-apps.php deleted file mode 100644 index 466d7bb5..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-enable-mastodon-apps.php +++ /dev/null @@ -1,740 +0,0 @@ -update_icon( $data['avatar'] ) ) { - // Unset the avatar so it doesn't get saved again by other plugins. - // Ditto for all other fields below. - unset( $data['avatar'] ); - } - - if ( isset( $data['header'] ) && $user->update_header( $data['header'] ) ) { - unset( $data['header'] ); - } - - if ( isset( $data['display_name'] ) && $user->update_name( $data['display_name'] ) ) { - unset( $data['display_name'] ); - } - - if ( isset( $data['note'] ) && $user->update_summary( $data['note'] ) ) { - unset( $data['note'] ); - } - - if ( isset( $data['fields_attributes'] ) ) { - self::set_extra_fields( $user_id, $data['fields_attributes'] ); - unset( $data['fields_attributes'] ); - } - - return $data; - } - - /** - * Get extra fields for Mastodon API. - * - * @param int $user_id The user id to act on. - * @return array The extra fields. - */ - private static function get_extra_fields( $user_id ) { - $ret = array(); - $fields = Extra_Fields::get_actor_fields( $user_id ); - - foreach ( $fields as $field ) { - $ret[] = array( - 'name' => $field->post_title, - 'value' => Extra_Fields::get_formatted_content( $field ), - ); - } - - return $ret; - } - - /** - * Set extra fields for Mastodon API. - * - * @param int $user_id The user id to act on. - * @param array $fields The fields to set. It is assumed to be the entire set of desired fields. - */ - private static function set_extra_fields( $user_id, $fields ) { - // The Mastodon API submits a simple hash for every field. - // We can reasonably assume a similar order for our operations below. - $ids = wp_list_pluck( Extra_Fields::get_actor_fields( $user_id ), 'ID' ); - $is_blog = Actors::BLOG_USER_ID === $user_id; - $post_type = $is_blog ? Extra_Fields::BLOG_POST_TYPE : Extra_Fields::USER_POST_TYPE; - - foreach ( $fields as $i => $field ) { - $post_id = $ids[ $i ] ?? null; - $has_post = $post_id && \get_post( $post_id ); - $args = array( - 'post_title' => $field['name'], - 'post_content' => Extra_Fields::make_paragraph_block( $field['value'] ), - ); - - if ( $has_post ) { - $args['ID'] = $ids[ $i ]; - \wp_update_post( $args ); - } else { - $args['post_type'] = $post_type; - $args['post_status'] = 'publish'; - if ( ! $is_blog ) { - $args['post_author'] = $user_id; - } - \wp_insert_post( $args ); - } - } - - // Delete any remaining fields. - if ( \count( $fields ) < \count( $ids ) ) { - $to_delete = \array_slice( $ids, \count( $fields ) ); - foreach ( $to_delete as $id ) { - \wp_delete_post( $id, true ); - } - } - } - - /** - * Add followers to Mastodon API. - * - * @param array $followers An array of followers. - * @param string $user_id The user id. - * - * @return array The filtered followers - */ - public static function api_account_followers( $followers, $user_id ) { - $user_id = self::maybe_map_user_to_blog( $user_id ); - $activitypub_followers = Followers::get_followers( $user_id, 40 ); - $mastodon_followers = array_map( - function ( $item ) { - $acct = Webfinger_Util::uri_to_acct( $item->get_id() ); - - if ( $acct && ! is_wp_error( $acct ) ) { - $acct = \str_replace( 'acct:', '', $acct ); - } else { - $acct = $item->get_id(); - } - - $account = new Account(); - $account->id = \strval( $item->get__id() ); - $account->username = $item->get_preferred_username(); - $account->acct = $acct; - $account->display_name = $item->get_name(); - $account->url = $item->get_url(); - $account->avatar = $item->get_icon_url(); - $account->avatar_static = $item->get_icon_url(); - $account->created_at = new DateTime( $item->get_published() ); - $account->last_status_at = new DateTime( $item->get_published() ); - $account->note = $item->get_summary(); - $account->header = $item->get_image_url(); - $account->header_static = $item->get_image_url(); - $account->followers_count = 0; - $account->following_count = 0; - $account->statuses_count = 0; - $account->bot = false; - $account->locked = false; - $account->group = false; - $account->discoverable = false; - $account->noindex = false; - $account->fields = array(); - $account->emojis = array(); - - return $account; - }, - $activitypub_followers - ); - - return array_merge( $mastodon_followers, $followers ); - } - - /** - * Resolve external accounts for Mastodon API - * - * @param Account $user_data The user data. - * @param string $user_id The user id. - * - * @return Account The filtered Account. - */ - public static function api_account_external( $user_data, $user_id ) { - if ( $user_data || ( is_numeric( $user_id ) && $user_id ) ) { - // Only augment. - return $user_data; - } - - $user = Actors::get_by_various( $user_id ); - - if ( $user && ! is_wp_error( $user ) ) { - return $user_data; - } - - $uri = Webfinger_Util::resolve( $user_id ); - - if ( ! $uri || is_wp_error( $uri ) ) { - return $user_data; - } - - $account = self::get_account_for_actor( $uri ); - if ( $account ) { - return $account; - } - - return $user_data; - } - - /** - * Resolve internal accounts for Mastodon API - * - * @param Account $user_data The user data. - * @param string $user_id The user id. - * - * @return Account The filtered Account. - */ - public static function api_account_internal( $user_data, $user_id ) { - $user_id_to_use = self::maybe_map_user_to_blog( $user_id ); - $user = Actors::get_by_id( $user_id_to_use ); - - if ( ! $user || is_wp_error( $user ) ) { - return $user_data; - } - - // Convert user to account. - $account = new Account(); - // Even if we have a blog user, maintain the provided user_id so as not to confuse clients. - $account->id = (int) $user_id; - $account->username = $user->get_preferred_username(); - $account->acct = $account->username; - $account->display_name = $user->get_name(); - $account->note = $user->get_summary(); - $account->source['note'] = wp_strip_all_tags( $account->note, true ); - $account->url = $user->get_url(); - - $icon = $user->get_icon(); - $account->avatar = $icon['url']; - $account->avatar_static = $account->avatar; - - $header = $user->get_image(); - if ( $header ) { - $account->header = $header['url']; - $account->header_static = $account->header; - } - - $account->created_at = new DateTime( $user->get_published() ); - - $post_types = \get_option( 'activitypub_support_post_types', array( 'post' ) ); - $query_args = array( - 'post_type' => $post_types, - 'posts_per_page' => 1, - ); - if ( $user_id > 0 ) { - $query_args['author'] = $user_id; - } - $posts = \get_posts( $query_args ); - $account->last_status_at = ! empty( $posts ) ? new DateTime( $posts[0]->post_date_gmt ) : $account->created_at; - - $account->fields = self::get_extra_fields( $user_id_to_use ); - // Now do it in source['fields'] with stripped tags. - $account->source['fields'] = \array_map( - function ( $field ) { - $field['value'] = \wp_strip_all_tags( $field['value'], true ); - return $field; - }, - $account->fields - ); - - $account->followers_count = Followers::count_followers( $user->get__id() ); - - return $account; - } - - /** - * Use our representation of posts to power each status item. - * Includes proper referncing of 3rd party comments that arrived via federation. - * - * @param null|Status $status The status, typically null to allow later filters their shot. - * @param int $post_id The post ID. - * @return Status|null The status. - */ - public static function api_status( $status, $post_id ) { - $post = \get_post( $post_id ); - if ( ! $post ) { - return $status; - } - - return self::api_post_status( $post_id ); - } - - /** - * Transforms a WordPress post into a Mastodon-compatible status object. - * - * Takes a post ID, transforms it into an ActivityPub object, and converts - * it to a Mastodon API status format including the author's account info. - * - * @param int $post_id The WordPress post ID to transform. - * @return Status|null The Mastodon API status object, or null if the post is not found - */ - private static function api_post_status( $post_id ) { - $post = Factory::get_transformer( get_post( $post_id ) ); - if ( is_wp_error( $post ) ) { - return null; - } - - $data = $post->to_object()->to_array(); - $account = self::api_account_internal( null, get_post_field( 'post_author', $post_id ) ); - - return self::activity_to_status( $data, $account, $post_id ); - } - - /** - * Get account for actor. - * - * @param string $uri The URI. - * - * @return Account|null The account. - */ - private static function get_account_for_actor( $uri ) { - if ( ! is_string( $uri ) || empty( $uri ) ) { - return null; - } - $data = get_remote_metadata_by_actor( $uri ); - - if ( ! $data || is_wp_error( $data ) ) { - return null; - } - $account = new Account(); - - $acct = Webfinger_Util::uri_to_acct( $uri ); - if ( ! $acct || is_wp_error( $acct ) ) { - return null; - } - - if ( str_starts_with( $acct, 'acct:' ) ) { - $acct = substr( $acct, 5 ); - } - - $account->id = $acct; - $account->username = $acct; - $account->acct = $acct; - $account->display_name = $data['name']; - $account->url = $uri; - - if ( ! empty( $data['summary'] ) ) { - $account->note = $data['summary']; - } - - if ( - isset( $data['icon']['type'] ) && - isset( $data['icon']['url'] ) && - 'Image' === $data['icon']['type'] - ) { - $account->avatar = $data['icon']['url']; - $account->avatar_static = $data['icon']['url']; - } - - if ( isset( $data['image'] ) ) { - $account->header = $data['image']['url']; - $account->header_static = $data['image']['url']; - } - if ( ! isset( $data['published'] ) ) { - $data['published'] = 'now'; - } - $account->created_at = new DateTime( $data['published'] ); - - return $account; - } - - /** - * Search by URL for Mastodon API. - * - * @param array $search_data The search data. - * @param object $request The request object. - * - * @return array The filtered search data. - */ - public static function api_search_by_url( $search_data, $request ) { - $p = \wp_parse_url( $request->get_param( 'q' ) ); - if ( ! $p || ! isset( $p['host'] ) ) { - return $search_data; - } - - $object = Http::get_remote_object( $request->get_param( 'q' ), true ); - if ( is_wp_error( $object ) || ! isset( $object['attributedTo'] ) ) { - return $search_data; - } - - $account = self::get_account_for_actor( $object['attributedTo'] ); - if ( ! $account ) { - return $search_data; - } - - $status = self::activity_to_status( $object, $account ); - if ( $status ) { - $search_data['statuses'][] = $status; - } - - return $search_data; - } - - /** - * Search for Mastodon API. - * - * @param array $search_data The search data. - * @param object $request The request object. - * - * @return array The filtered search data. - */ - public static function api_search( $search_data, $request ) { - $user_id = \get_current_user_id(); - if ( ! $user_id ) { - return $search_data; - } - - $q = $request->get_param( 'q' ); - if ( ! $q ) { - return $search_data; - } - $q = sanitize_text_field( wp_unslash( $q ) ); - - $followers = Followers::get_followers( $user_id, 40, null, array( 's' => $q ) ); - if ( ! $followers ) { - return $search_data; - } - - foreach ( $followers as $follower ) { - $acct = Webfinger_Util::uri_to_acct( $follower->get_id() ); - - if ( $acct && ! is_wp_error( $acct ) ) { - $acct = \str_replace( 'acct:', '', $acct ); - } else { - $acct = $follower->get_url(); - } - - $account = new Account(); - $account->id = \strval( $follower->get__id() ); - $account->username = $follower->get_preferred_username(); - $account->acct = $acct; - $account->display_name = $follower->get_name(); - $account->url = $follower->get_url(); - $account->uri = $follower->get_id(); - $account->avatar = $follower->get_icon_url(); - $account->avatar_static = $follower->get_icon_url(); - $account->created_at = new DateTime( $follower->get_published() ); - $account->last_status_at = new DateTime( $follower->get_published() ); - $account->note = $follower->get_summary(); - $account->header = $follower->get_image_url(); - $account->header_static = $follower->get_image_url(); - - $search_data['accounts'][] = $account; - } - - return $search_data; - } - - /** - * Get posts query args for Mastodon API. - * - * @param array $args The query arguments. - * - * @return array The filtered args. - */ - public static function api_get_posts_query_args( $args ) { - if ( isset( $args['author'] ) && is_string( $args['author'] ) ) { - $uri = Webfinger_Util::resolve( $args['author'] ); - if ( $uri && ! is_wp_error( $uri ) ) { - $args['activitypub'] = $uri; - unset( $args['author'] ); - } - } - - return $args; - } - - /** - * Convert an activity to a status. - * - * @param array $item The activity. - * @param Account $account The account. - * @param int $post_id The post ID. Optional, but will be preferred in the Status. - * - * @return Status|null The status. - */ - private static function activity_to_status( $item, $account, $post_id = null ) { - if ( isset( $item['object'] ) ) { - $object = $item['object']; - } else { - $object = $item; - } - - if ( ! isset( $object['type'] ) || 'Note' !== $object['type'] || ! $account ) { - return null; - } - - $status = new Status(); - $status->id = $post_id ?? $object['id']; - $status->created_at = new DateTime( $object['published'] ); - $status->content = $object['content']; - $status->account = $account; - - if ( ! empty( $object['inReplyTo'] ) ) { - $status->in_reply_to_id = $object['inReplyTo']; - } - - if ( ! empty( $object['visibility'] ) ) { - $status->visibility = $object['visibility']; - } - if ( ! empty( $object['url'] ) ) { - $status->url = $object['url']; - $status->uri = $object['url']; - } else { - $status->uri = $object['id']; - } - - if ( ! empty( $object['attachment'] ) ) { - $status->media_attachments = array_map( - function ( $attachment ) { - $default_attachment = array( - 'url' => null, - 'mediaType' => null, - 'name' => null, - 'width' => 0, - 'height' => 0, - 'blurhash' => null, - ); - - $attachment = array_merge( $default_attachment, $attachment ); - - $media_attachment = new Media_Attachment(); - $media_attachment->id = $attachment['url']; - $media_attachment->type = strtok( $attachment['mediaType'], '/' ); - $media_attachment->url = $attachment['url']; - $media_attachment->preview_url = $attachment['url']; - $media_attachment->description = $attachment['name']; - if ( $attachment['blurhash'] ) { - $media_attachment->blurhash = $attachment['blurhash']; - } - if ( $attachment['width'] > 0 && $attachment['height'] > 0 ) { - $media_attachment->meta = array( - 'original' => array( - 'width' => $attachment['width'], - 'height' => $attachment['height'], - 'size' => $attachment['width'] . 'x' . $attachment['height'], - 'aspect' => $attachment['width'] / $attachment['height'], - ), - );} - return $media_attachment; - }, - $object['attachment'] - ); - } - - return $status; - } - - /** - * Get posts for Mastodon API. - * - * @param array $statuses The statuses. - * @param array $args The arguments. - * - * @return array The filtered statuses. - */ - public static function api_statuses_external( $statuses, $args ) { - if ( ! isset( $args['activitypub'] ) ) { - return $statuses; - } - - $data = get_remote_metadata_by_actor( $args['activitypub'] ); - - if ( ! $data || is_wp_error( $data ) || ! isset( $data['outbox'] ) ) { - return $statuses; - } - - $outbox = Http::get_remote_object( $data['outbox'], true ); - if ( is_wp_error( $outbox ) || ! isset( $outbox['first'] ) ) { - return $statuses; - } - - $account = self::get_account_for_actor( $args['activitypub'] ); - if ( ! $account ) { - return $statuses; - } - $limit = 10; - if ( isset( $args['posts_per_page'] ) ) { - $limit = $args['posts_per_page']; - } - if ( $limit > 40 ) { - $limit = 40; - } - $activitypub_statuses = array(); - $url = $outbox['first']; - $tries = 0; - while ( $url ) { - if ( ++$tries > 3 ) { - break; - } - - $posts = Http::get_remote_object( $url, true ); - if ( is_wp_error( $posts ) ) { - return $statuses; - } - - $new_statuses = array_map( - function ( $item ) use ( $account, $args ) { - if ( $args['exclude_replies'] ) { - if ( isset( $item['object']['inReplyTo'] ) && $item['object']['inReplyTo'] ) { - return null; - } - } - return self::activity_to_status( $item, $account ); - }, - $posts['orderedItems'] - ); - $activitypub_statuses = array_merge( $activitypub_statuses, array_filter( $new_statuses ) ); - $url = $posts['next'] ?? null; - - if ( count( $activitypub_statuses ) >= $limit ) { - break; - } - } - - return array_slice( $activitypub_statuses, 0, $limit ); - } - - /** - * Get replies for Mastodon API. - * - * @param array $context The context. - * @param int $post_id The post id. - * @param string $url The URL. - * - * @return array The filtered context. - */ - public static function api_get_replies( $context, $post_id, $url ) { - $meta = Http::get_remote_object( $url, true ); - if ( is_wp_error( $meta ) || ! isset( $meta['replies']['first']['next'] ) ) { - return $context; - } - - if ( ! empty( $meta['replies']['first']['items'] ) ) { - $replies = $meta['replies']['first']; - } elseif ( isset( $meta['replies']['first']['next'] ) ) { - $replies_url = $meta['replies']['first']['next']; - $replies = Http::get_remote_object( $replies_url, true ); - if ( is_wp_error( $replies ) || ! isset( $replies['items'] ) ) { - return $context; - } - } else { - return $context; - } - - foreach ( $replies['items'] as $reply ) { - if ( isset( $reply['id'] ) && is_string( $reply['id'] ) && isset( $reply['content'] ) && is_string( $reply['content'] ) ) { - $status = $reply; - } else { - if ( is_string( $reply ) ) { - $url = $reply; - } elseif ( isset( $reply['url'] ) && is_string( $reply['url'] ) ) { - $url = $reply['url']; - } else { - continue; - } - $response = Http::get( $url, true ); - if ( is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) !== 200 ) { - continue; - } - $status = json_decode( wp_remote_retrieve_body( $response ), true ); - if ( ! $status || is_wp_error( $status ) ) { - continue; - } - } - - $account = self::get_account_for_actor( $status['attributedTo'] ); - $status = self::activity_to_status( $status, $account ); - if ( $status ) { - $context['descendants'][ $status->id ] = $status; - } - } - - return $context; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-jetpack.php b/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-jetpack.php deleted file mode 100644 index 5586cf79..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-jetpack.php +++ /dev/null @@ -1,54 +0,0 @@ -post_type ) { - \add_action( 'msls_main_save', '__return_null' ); - } - } - - /** - * Remove short-circuit for Multisite Language Switcher data. - * - * @param int $post_id The post id. - * @param WP_Post $post The post object. - */ - public static function unignore_outbox_post( $post_id, $post ) { - if ( Outbox::POST_TYPE === $post->post_type ) { - \remove_action( 'msls_main_save', '__return_null' ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-nodeinfo.php b/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-nodeinfo.php deleted file mode 100644 index dfbedcbf..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-nodeinfo.php +++ /dev/null @@ -1,89 +0,0 @@ -= '2.0' ) { - $nodeinfo['protocols'][] = 'activitypub'; - } else { - $nodeinfo['protocols']['inbound'][] = 'activitypub'; - $nodeinfo['protocols']['outbound'][] = 'activitypub'; - } - - $nodeinfo['usage']['users'] = array( - 'total' => get_total_users(), - 'activeMonth' => get_active_users(), - 'activeHalfyear' => get_active_users( 6 ), - ); - - return $nodeinfo; - } - - /** - * Extend NodeInfo2 data. - * - * @param array $nodeinfo NodeInfo2 data. - * - * @return array The extended array. - */ - public static function add_nodeinfo2_data( $nodeinfo ) { - $nodeinfo['protocols'][] = 'activitypub'; - - $nodeinfo['usage']['users'] = array( - 'total' => get_total_users(), - 'activeMonth' => get_active_users(), - 'activeHalfyear' => get_active_users( 6 ), - ); - - return $nodeinfo; - } - - /** - * Extend the well-known nodeinfo data. - * - * @param array $data The well-known nodeinfo data. - * - * @return array The extended array. - */ - public static function add_wellknown_nodeinfo_data( $data ) { - $data['links'][] = array( - 'rel' => 'https://www.w3.org/ns/activitystreams#Application', - 'href' => get_rest_url_by_path( 'application' ), - ); - - return $data; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-opengraph.php b/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-opengraph.php deleted file mode 100644 index c22e2958..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-opengraph.php +++ /dev/null @@ -1,113 +0,0 @@ -get_webfinger(); - - return $metadata; - } - - if ( \is_author() ) { - // Use the Author of the Archive-Page. - $user_id = \get_queried_object_id(); - } elseif ( \is_singular() ) { - // Use the Author of the Post. - $user_id = \get_post_field( 'post_author', \get_queried_object_id() ); - } elseif ( ! is_user_type_disabled( 'blog' ) ) { - // Use the Blog-User for any other page, if the Blog-User is not disabled. - $user_id = Actors::BLOG_USER_ID; - } else { - // Do not add any metadata otherwise. - return $metadata; - } - - $user = Actors::get_by_id( $user_id ); - - if ( ! $user || \is_wp_error( $user ) ) { - return $metadata; - } - - // Add WebFinger resource. - $metadata['fediverse:creator'] = $user->get_webfinger(); - - return $metadata; - } - - /** - * Output Open Graph tags in the page header. - */ - public static function add_meta_tags() { - $metadata = apply_filters( 'opengraph_metadata', array() ); - foreach ( $metadata as $key => $value ) { - if ( empty( $key ) || empty( $value ) ) { - continue; - } - $value = (array) $value; - - foreach ( $value as $v ) { - printf( - '' . PHP_EOL, - esc_attr( $key ), - esc_attr( $v ) - ); - } - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-seriously-simple-podcasting.php b/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-seriously-simple-podcasting.php deleted file mode 100644 index 7533db98..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-seriously-simple-podcasting.php +++ /dev/null @@ -1,72 +0,0 @@ -item; - $attachment = array( - 'type' => \esc_attr( ucfirst( \get_post_meta( $post->ID, 'episode_type', true ) ?? 'Audio' ) ), - 'url' => \esc_url( \get_post_meta( $post->ID, 'audio_file', true ) ), - 'name' => \esc_attr( \get_the_title( $post->ID ) ?? '' ), - ); - - $icon = \get_post_meta( $post->ID, 'cover_image', true ); - if ( ! $icon ) { - $icon = $this->get_icon(); - } - - if ( $icon ) { - $attachment['icon'] = \esc_url( object_to_uri( $icon ) ); - } - - return array( $attachment ); - } - - /** - * Gets the object type for a podcast episode. - * - * Always returns 'Note' for the best possible compatibility with ActivityPub. - * - * @return string The object type. - */ - public function get_type() { - return 'Note'; - } - - /** - * Returns the content for the ActivityPub Item. - * - * The content will be generated based on the user settings. - * - * @return string The content. - */ - public function get_content() { - return generate_post_summary( $this->item ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-stream-connector.php b/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-stream-connector.php deleted file mode 100644 index e59c6009..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-stream-connector.php +++ /dev/null @@ -1,250 +0,0 @@ - __( 'Processed', 'activitypub' ), - ); - } - - /** - * Add action links to Stream drop row in admin list screen - * - * @filter wp_stream_action_links_{connector} - * - * @param array $links Previous links registered. - * @param Record $record Stream record. - * - * @return array Action links - */ - public function action_links( $links, $record ) { - if ( 'processed' === $record->action ) { - $error = json_decode( $record->get_meta( 'error', true ), true ); - - if ( $error ) { - $message = sprintf( - '
%1$s
%2$s
', - __( 'Inbox Error', 'activitypub' ), - wp_json_encode( $error ) - ); - - $links[ $message ] = ''; - } - - $debug = json_decode( $record->get_meta( 'debug', true ), true ); - - if ( $debug ) { - $message = sprintf( - '
%1$s
%2$s
', - __( 'Debug', 'activitypub' ), - wp_json_encode( $debug ) - ); - - $links[ $message ] = ''; - } - } - - return $links; - } - - /** - * Callback for activitypub_notification_follow. - * - * @param \Activitypub\Notification $notification The notification object. - */ - public function callback_activitypub_notification_follow( $notification ) { - $this->log( - sprintf( - // translators: %s is a URL. - __( 'New Follower: %s', 'activitypub' ), - $notification->actor - ), - array( - 'notification' => \wp_json_encode( $notification, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE ), - ), - null, - 'notification', - $notification->type, - $notification->target - ); - } - - /** - * Callback for activitypub_outbox_processing_complete. - * - * @param array $inboxes The inboxes. - * @param string $json The ActivityPub Activity JSON. - * @param int $actor_id The actor ID. - * @param int $outbox_item_id The Outbox item ID. - */ - public function callback_activitypub_outbox_processing_complete( $inboxes, $json, $actor_id, $outbox_item_id ) { - $outbox_item = \get_post( $outbox_item_id ); - $outbox_data = $this->prepare_outbox_data_for_response( $outbox_item ); - - $this->log( - sprintf( - // translators: %s is a URL. - __( 'Outbox processing complete: %s', 'activitypub' ), - $outbox_data['title'] - ), - array( - 'debug' => wp_json_encode( - array( - 'actor_id' => $actor_id, - 'outbox_item_id' => $outbox_item_id, - ) - ), - ), - $outbox_data['id'], - $outbox_data['type'], - 'processed' - ); - } - - /** - * Callback for activitypub_outbox_processing_batch_complete. - * - * @param array $inboxes The inboxes. - * @param string $json The ActivityPub Activity JSON. - * @param int $actor_id The actor ID. - * @param int $outbox_item_id The Outbox item ID. - * @param int $batch_size The batch size. - * @param int $offset The offset. - */ - public function callback_activitypub_outbox_processing_batch_complete( $inboxes, $json, $actor_id, $outbox_item_id, $batch_size, $offset ) { - $outbox_item = \get_post( $outbox_item_id ); - $outbox_data = $this->prepare_outbox_data_for_response( $outbox_item ); - - $this->log( - sprintf( - // translators: %s is a URL. - __( 'Outbox processing batch complete: %s', 'activitypub' ), - $outbox_data['title'] - ), - array( - 'debug' => wp_json_encode( - array( - 'actor_id' => $actor_id, - 'outbox_item_id' => $outbox_item_id, - 'batch_size' => $batch_size, - 'offset' => $offset, - ) - ), - ), - $outbox_data['id'], - $outbox_data['type'], - 'processed' - ); - } - - /** - * Get the title of the outbox object. - * - * @param \WP_Post $outbox_item The outbox item. - * - * @return array The title, object ID, and object type of the outbox object. - */ - protected function prepare_outbox_data_for_response( $outbox_item ) { - $object_id = $outbox_item->ID; - $object_type = $outbox_item->post_type; - $object_title = $outbox_item->post_title; - - $post_id = url_to_postid( $outbox_item->post_title ); - if ( $post_id ) { - $post = get_post( $post_id ); - - $object_id = $post_id; - $object_type = $post->post_type; - $object_title = $post->post_title; - } else { - $comment_id = url_to_commentid( $outbox_item->post_title ); - if ( $comment_id ) { - $comment = get_comment( $comment_id ); - - $object_id = $comment_id; - $object_type = 'comments'; - $object_title = $comment->comment_content; - } else { - $author_id = url_to_authorid( $outbox_item->post_title ); - if ( null !== $author_id ) { - $object_id = $author_id; - $object_type = 'profiles'; - - if ( $author_id ) { - $object_title = get_userdata( $author_id )->display_name; - } elseif ( Actors::BLOG_USER_ID === $author_id ) { - $object_title = __( 'Blog User', 'activitypub' ); - } elseif ( Actors::APPLICATION_USER_ID === $author_id ) { - $object_title = __( 'Application User', 'activitypub' ); - } - } - } - } - - return array( - 'id' => $object_id, - 'type' => $object_type, - 'title' => $object_title, - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-webfinger.php b/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-webfinger.php deleted file mode 100644 index 6b6ed537..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-webfinger.php +++ /dev/null @@ -1,119 +0,0 @@ -ID ); - - if ( ! $user || is_wp_error( $user ) ) { - return $jrd; - } - - $jrd['subject'] = sprintf( 'acct:%s', $user->get_webfinger() ); - - $jrd['aliases'][] = $user->get_id(); - $jrd['aliases'][] = $user->get_url(); - $jrd['aliases'][] = $user->get_alternate_url(); - $jrd['aliases'] = array_unique( $jrd['aliases'] ); - $jrd['aliases'] = array_values( $jrd['aliases'] ); - - $jrd['links'][] = array( - 'rel' => 'self', - 'type' => 'application/activity+json', - 'href' => $user->get_id(), - ); - - $jrd['links'][] = array( - 'rel' => 'http://ostatus.org/schema/1.0/subscribe', - 'template' => get_rest_url_by_path( 'interactions?uri={uri}' ), - ); - - return $jrd; - } - - /** - * Add WebFinger discovery links. - * - * @param array $jrd The jrd array. - * @param string $uri The WebFinger resource. - * - * @return array|\WP_Error The jrd array or WP_Error. - */ - public static function add_pseudo_user_discovery( $jrd, $uri ) { - $user = Actors::get_by_resource( $uri ); - - if ( \is_wp_error( $user ) ) { - return $user; - } - - $aliases = array( - $user->get_id(), - $user->get_url(), - $user->get_alternate_url(), - ); - - $aliases = array_unique( $aliases ); - $aliases = array_values( $aliases ); - - $profile = array( - 'subject' => sprintf( 'acct:%s', $user->get_webfinger() ), - 'aliases' => $aliases, - 'links' => array( - array( - 'rel' => 'self', - 'type' => 'application/activity+json', - 'href' => $user->get_id(), - ), - array( - 'rel' => 'http://webfinger.net/rel/profile-page', - 'type' => 'text/html', - 'href' => $user->get_id(), - ), - array( - 'rel' => 'http://ostatus.org/schema/1.0/subscribe', - 'template' => get_rest_url_by_path( 'interactions?uri={uri}' ), - ), - ), - ); - - if ( 'Person' !== $user->get_type() ) { - $profile['links'][0]['properties'] = array( - 'https://www.w3.org/ns/activitystreams#type' => $user->get_type(), - ); - } - - return $profile; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-wpml.php b/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-wpml.php deleted file mode 100644 index 3bef729f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/class-wpml.php +++ /dev/null @@ -1,44 +0,0 @@ -ID ); - - if ( is_array( $language_details ) && isset( $language_details['language_code'] ) ) { - $lang = $language_details['language_code']; - } - - return $lang; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/load.php b/wp-content/upgrade-temp-backup/plugins/activitypub/integration/load.php deleted file mode 100644 index fcb75467..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/integration/load.php +++ /dev/null @@ -1,164 +0,0 @@ -ID, 'audio_file', true ) - ) { - return new Seriously_Simple_Podcasting( $data ); - } - return $transformer; - }, - 10, - 3 - ); - } - - /** - * Adds WPML Multilingual CMS (plugin) support. - * - * This class handles the compatibility with the WPML plugin. - * - * @see https://wpml.org/ - */ - if ( \defined( 'ICL_SITEPRESS_VERSION' ) ) { - WPML::init(); - } -} -\add_action( 'plugins_loaded', __NAMESPACE__ . '\plugin_init' ); - -/** - * Register the Stream Connector for ActivityPub. - * - * @param array $classes The Stream connectors. - * - * @return array The Stream connectors with the ActivityPub connector. - */ -function register_stream_connector( $classes ) { - $class = new Stream_Connector(); - - if ( method_exists( $class, 'is_dependency_satisfied' ) && $class->is_dependency_satisfied() ) { - $classes[] = $class; - } - - return $classes; -} -add_filter( 'wp_stream_connectors', __NAMESPACE__ . '\register_stream_connector' ); - -// Excluded ActivityPub post types from the Stream. -add_filter( - 'wp_stream_posts_exclude_post_types', - function ( $post_types ) { - $post_types[] = 'ap_follower'; - $post_types[] = 'ap_extrafield'; - $post_types[] = 'ap_extrafield_blog'; - return $post_types; - } -); - -/** - * Load the BuddyPress integration. - * - * Only load code that needs BuddyPress to run once BP is loaded and initialized. - * - * @see https://buddypress.org/ - */ -add_action( 'bp_include', array( __NAMESPACE__ . '\Buddypress', 'init' ), 0 ); diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/readme.txt b/wp-content/upgrade-temp-backup/plugins/activitypub/readme.txt deleted file mode 100644 index 12be8545..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/readme.txt +++ /dev/null @@ -1,413 +0,0 @@ -=== ActivityPub === -Contributors: automattic, pfefferle, mattwiebe, obenland, akirk, jeherve, mediaformat, nuriapena, cavalierlife, andremenrath -Tags: OStatus, fediverse, activitypub, activitystream -Requires at least: 6.4 -Tested up to: 6.8 -Stable tag: 5.8.0 -Requires PHP: 7.2 -License: MIT -License URI: http://opensource.org/licenses/MIT - -The ActivityPub protocol is a decentralized social networking protocol based upon the ActivityStreams 2.0 data format. - -== Description == - -Enter the fediverse with **ActivityPub**, broadcasting your blog to a wider audience! Attract followers, deliver updates, and receive comments from a diverse user base of **ActivityPub**\-compliant platforms. - -https://www.youtube.com/watch?v=QzYozbNneVc - -With the ActivityPub plugin installed, your WordPress blog itself function as a federated profile, along with profiles for each author. For instance, if your website is `example.com`, then the blog-wide profile can be found at `@example.com@example.com`, and authors like Jane and Bob would have their individual profiles at `@jane@example.com` and `@bobz@example.com`, respectively. - -An example: I give you my Mastodon profile name: `@pfefferle@mastodon.social`. You search, see my profile, and hit follow. Now, any post I make appears in your Home feed. Similarly, with the ActivityPub plugin, you can find and follow Jane's profile at `@jane@example.com`. - -Once you follow Jane's `@jane@example.com` profile, any blog post she crafts on `example.com` will land in your Home feed. Simultaneously, by following the blog-wide profile `@example.com@example.com`, you'll receive updates from all authors. - -**Note**: If no one follows your author or blog instance, your posts remain unseen. The simplest method to verify the plugin's operation is by following your profile. If you possess a Mastodon profile, initiate by following your new one. - -The plugin works with the following tested federated platforms, but there may be more that it works with as well: - -* [Mastodon](https://joinmastodon.org/) -* [Pleroma](https://pleroma.social/)/[Akkoma](https://akkoma.social/) -* [friendica](https://friendi.ca/) -* [Hubzilla](https://hubzilla.org/) -* [Pixelfed](https://pixelfed.org/) -* [Socialhome](https://socialhome.network/) -* [Misskey](https://join.misskey.page/) - -Some things to note: - -1. The blog-wide profile is only compatible with sites with rewrite rules enabled. If your site does not have rewrite rules enabled, the author-specific profiles may still work. -1. Many single-author blogs have chosen to turn off or redirect their author profile pages, usually via an SEO plugin like Yoast or Rank Math. This is usually done to avoid duplicate content with your blog’s home page. If your author page has been deactivated in this way, then ActivityPub author profiles won’t work for you. Instead, you can turn your author profile page back on, and then use the option in your SEO plugin to noindex the author page. This will still resolve duplicate content issues with search engines and will enable ActivityPub author profiles to work. -1. Once ActivityPub is installed, *only new posts going forward* will be available in the fediverse. Likewise, even if you’ve been using ActivityPub for a while, anyone who follows your site will only see new posts you publish from that moment on. They will never see previously-published posts in their Home feed. This process is very similar to subscribing to a newsletter. If you subscribe to a newsletter, you will only receive future emails, but not the old archived ones. With ActivityPub, if someone follows your site, they will only receive new blog posts you publish from then on. - -So what’s the process? - -1. Install the ActivityPub plugin. -1. Go to the plugin’s settings page and adjust the settings to your liking. Click the Save button when ready. -1. Make sure your blog’s author profile page is active if you are using author profiles. -1. Go to Mastodon or any other federated platform, and search for your profile, and follow it. Your new profile will be in the form of either `@your_username@example.com` or `@example.com@example.com`, so that is what you’ll search for. -1. On your blog, publish a new post. -1. From Mastodon, check to see if the new post appears in your Home feed. - -**Note**: It may take up to 15 minutes or so for the new post to show up in your federated feed. This is because the messages are sent to the federated platforms using a delayed cron. This avoids breaking the publishing process for those cases where users might have lots of followers. So please don’t assume that just because you didn’t see it show up right away that something is broken. Give it some time. In most cases, it will show up within a few minutes, and you’ll know everything is working as expected. - -== Frequently Asked Questions == - -= tl;dr = - -This plugin connects your WordPress blog to popular social platforms like Mastodon, making your posts more accessible to a wider audience. Once installed, your blog can be followed by users on these platforms, allowing them to receive your new posts in their feeds. - -= What is "ActivityPub for WordPress" = - -*ActivityPub for WordPress* extends WordPress with some Fediverse features, but it does not compete with platforms like Friendica or Mastodon. If you want to run a **decentralized social network**, please use [Mastodon](https://joinmastodon.org/) or [GNU social](https://gnusocial.network/). - -= What if you are running your blog in a subdirectory? = - -In order for webfinger to work, it must be mapped to the root directory of the URL on which your blog resides. - -**Apache** - -Add the following to the .htaccess file in the root directory: - - RedirectMatch "^\/\.well-known/(webfinger|nodeinfo)(.*)$" /blog/.well-known/$1$2 - -Where 'blog' is the path to the subdirectory at which your blog resides. - -**Nginx** - -Add the following to the site.conf in sites-available: - - location ~* /.well-known { - allow all; - try_files $uri $uri/ /blog/?$args; - } - -Where 'blog' is the path to the subdirectory at which your blog resides. - -If you are running your blog in a subdirectory, but have a different [wp_siteurl](https://wordpress.org/documentation/article/giving-wordpress-its-own-directory/), you don't need the redirect, because the index.php will take care of that. - -= What if you are running your blog behind a reverse proxy with Apache? = - -If you are using a reverse proxy with Apache to run your host you may encounter that you are unable to have followers join the blog. This will occur because the proxy system rewrites the host headers to be the internal DNS name of your server, which the plugin then uses to attempt to sign the replies. The remote site attempting to follow your users is expecting the public DNS name on the replies. In these cases you will need to use the 'ProxyPreserveHost On' directive to ensure the external host name is passed to your internal host. - -If you are using SSL between the proxy and internal host you may also need to `SSLProxyCheckPeerName off` if your internal host can not answer with the correct SSL name. This may present a security issue in some environments. - -= Constants = - -The plugin uses PHP Constants to enable, disable or change its default behaviour. Please use them with caution and only if you know what you are doing. - -* `ACTIVITYPUB_REST_NAMESPACE` - Change the default Namespace of the REST endpoint. Default: `activitypub/1.0`. -* `ACTIVITYPUB_EXCERPT_LENGTH` - Change the length of the Excerpt. Default: `400`. -* `ACTIVITYPUB_SHOW_PLUGIN_RECOMMENDATIONS` - show plugin recommendations in the ActivityPub settings. Default: `true`. -* `ACTIVITYPUB_MAX_IMAGE_ATTACHMENTS` - Change the number of attachments, that should be federated. Default: `3`. -* `ACTIVITYPUB_HASHTAGS_REGEXP` - Change the default regex to detect hashtext in a text. Default: `(?:(?<=\s)|(?<=

)|(?<=
)|^)#([A-Za-z0-9_]+)(?:(?=\s|[[:punct:]]|$))`. -* `ACTIVITYPUB_USERNAME_REGEXP` - Change the default regex to detect @-replies in a text. Default: `(?:([A-Za-z0-9\._-]+)@((?:[A-Za-z0-9_-]+\.)+[A-Za-z]+))`. -* `ACTIVITYPUB_URL_REGEXP` - Change the default regex to detect urls in a text. Default: `(www.|http:|https:)+[^\s]+[\w\/]`. -* `ACTIVITYPUB_CUSTOM_POST_CONTENT` - Change the default template for Activities. Default: `[ap_title]\n\n[ap_content]\n\n[ap_hashtags]\n\n[ap_shortlink]`. -* `ACTIVITYPUB_AUTHORIZED_FETCH` - Enable AUTHORIZED_FETCH. -* `ACTIVITYPUB_DISABLE_REWRITES` - Disable auto generation of `mod_rewrite` rules. Default: `false`. -* `ACTIVITYPUB_DISABLE_INCOMING_INTERACTIONS` - Block incoming replies/comments/likes. Default: `false`. -* `ACTIVITYPUB_DISABLE_OUTGOING_INTERACTIONS` - Disable outgoing replies/comments/likes. Default: `false`. -* `ACTIVITYPUB_SHARED_INBOX_FEATURE` - Enable the shared inbox. Default: `false`. -* `ACTIVITYPUB_SEND_VARY_HEADER` - Enable to send the `Vary: Accept` header. Default: `false`. - -= Where can you manage your followers? = - -If you have activated the blog user, you will find the list of his followers in the settings under `/wp-admin/options-general.php?page=activitypub&tab=followers`. - -The followers of a user can be found in the menu under "Users" -> "Followers" or under `wp-admin/users.php?page=activitypub-followers-list`. - -For reasons of data protection, it is not possible to see the followers of other users. - -== Screenshots == - -1. The "Follow me"-Block in the Block-Editor -2. The "Followers"-Block in the Block-Editor -3. The "Federated Reply"-Block in the Block-Editor -4. A "Federated Reply" in a Post -5. A Blog-Profile on Mastodon - -== Changelog == - -### 5.8.0 - 2025-04-24 -#### Added -- An option to receive notification emails when an Actor was mentioned in the Fediverse. -- Enable direct linking to Help Tabs. -- Fallback embed support for Fediverse content that lacks native oEmbed responses. -- Support for all media types in the Mastodon Importer. - -#### Changed -- Added WordPress disallowed list filtering to block unwanted ActivityPub interactions. -- Mastodon imports now support blocks, with automatic reply embedding for conversations. -- Tested and compatible with the latest version of WordPress. -- Updated design of new follower notification email and added meta information. -- Update DM email notification to include an embed display of the DM. -- Updated notification settings to be user-specific for more personalization. - -#### Fixed -- Add support for Multisite Language Switcher -- Better check for an empty `headers` array key in the Signature class. -- Include user context in Global-Inbox actions. -- No more PHP warning when Mastodon Apps run out of posts to process. -- Reply links and popup modals are now properly translated for logged-out visitors. - -### 5.7.0 - 2025-04-11 -#### Added -- Advanced Settings tab, with special settings for advanced users. -- Check if pretty permalinks are enabled and recommend to use threaded comments. -- Reply block: show embeds where available. -- Support same-server domain migrations. -- Upgrade routine that removes any erroneously created extra field entries. - -#### Changed -- Add option to enable/disable the "shared inbox" to the "Advanced Settings". -- Add option to enable/disable the `Vary` Header to the "Advanced Settings". -- Configure the "Follow Me" button to have a button-only mode. -- Importers are loaded on admin-specific hook. -- Improve the troubleshooting UI and show Site-Health stats in ActivityPub settings. -- Increased compatibility with Mobilizon and other platforms by improving signature verification for different key formats. - -#### Fixed -- Ensure that an `Activity` has an `Actor` before adding it to the Outbox. -- Fixed some bugs and added additional information on the Debug tab of the Site-Health page. -- Follow-up to the reply block changes that makes sure Mastodon embeds are displayed in the editor. -- Outbox endpoint bug where non-numeric usernames caused errors when querying Outbox data. -- Show Site Health error if site uses old "Almost Pretty Permalinks" structure. -- Sites with comments from the Fediverse no longer create uncached extra fields posts that flood the Outbox. -- Transformers allow settings values to false again, a regression from 5.5.0. - -### 5.6.1 - 2025-04-02 -#### Fixed -- "Post Interactions" settings will now be saved to the options table. -- So not show `movedTo` attribute instead of setting it to `false` if empty. -- Use specified date format for `updated` field in Outbox-Activites. - -### 5.6.0 - 2025-04-01 -#### Added -- Added a Mastodon importer to move your Mastodon posts to your WordPress site. -- A default Extra-Field to do a little advertising for WordPress. -- Move: Differentiate between `internal` and 'external' Move. -- Redirect user to the welcome page after ActivityPub plugin is activated. -- The option to show/hide the "Welcome Page". -- User setting to enable/disable Likes and Reblogs - -#### Changed -- Logged-out remote reply button markup to look closer to logged-in version. -- No longer federates `Delete` activities for posts that were not federated. -- OrderedCollection and OrderedCollectionPage behave closer to spec now. -- Outbox items now contain the full activity, not just activity objects. -- Standardized mentions to use usernames only in comments and posts. - -#### Fixed -- Changelog entries: allow automating changelog entry generation from forks as well. -- Comments from Fediverse actors will now be purged as expected. -- Importing attachments no longer creates Outbox items for them. -- Improved readability in Mastodon Apps plugin string. -- No more PHP warnings when previewing posts without attachments. -- Outbox batch processing adheres to passed batch size. -- Permanently delete reactions that were `Undo` instead of trashing them. -- PHP warnings when scheduling post activities for an invalid post. -- PHP Warning when there's no actor information in comment activities. -- Prevent self-replies on local comments. -- Properly set `to` audience of `Activity` instead of changing the `Follow` Object. -- Run all Site-Health checks with the required headers and a valid signature. -- Set `updated` field for profile updates, otherwise the `Update`-`Activity` wouldn't be handled by Mastodon. -- Support multiple layers of nested Outbox activities when searching for the Object ID. -- The Custom-Avatar getter on WP.com. -- Use the $from account for the object in Move activity for external Moves -- Use the `$from` account for the object in Move activity for internal Moves -- Use `add_to_outbox` instead of the changed scheduler hooks. -- Use `JSON_UNESCAPED_SLASHES` because Mastodon seems to have problems with encoded URLs. -- `Scheduler::schedule_announce_activity` to handle Activities instead of Activity-Objects. - -### 5.5.0 - 2025-03-19 -#### Added -- Added "Enable Mastodon Apps" and "Event Bridge for ActivityPub" to the recommended plugins section. -- Added Constants to the Site-Health debug informations. -- Development environment: add Changelogger tool to environment dependencies. -- Development environment: allow contributors to specify a changelog entry directly from their Pull Request description. -- Documentation for migrating from a Mastodon instance to WordPress. -- Support for sending Activities to ActivityPub Relays, to improve discoverability of public content. - -#### Changed -- Documentation: expand Pull Request process docs, and mention the new changelog process as well as the updated release process. -- Don't redirect @-name URLs to trailing slashed versions -- Improved and simplified Query code. -- Improved readability for actor mode setting. -- Improved title case for NodeInfo settings. -- Introduced utility function to determine actor type based on user ID. -- Outbox items only get sent to followers when there are any. -- Restricted modifications to settings if they are predefined as constants. -- The Welcome page now uses WordPress's Settings API and the classic design of the WP Admin. -- Uses two-digit version numbers in Outbox and NodeInfo responses. - -#### Removed -- Our version of `sanitize_url()` was unused—use Core's `sanitize_url()` instead. - -#### Fixed -- Ensured that Query::get_object_id() returns an ID instead of an Object. -- Fix a fatal error in the Preview when a post contains no (hash)tags. -- Fixed an issue with the Content Carousel and Blog Posts block: https://github.com/Automattic/wp-calypso/issues/101220 -- Fixed default value for `activitypub_authorized_fetch` option. -- Follow-Me blocks now show the correct avatar on attachment pages. -- Images with the correct aspect ratio no longer get sent through the crop step again. -- No more PHP warnings when a header image gets cropped. -- PHP warnings when trying to process empty tags or image blocks without ID attributes. -- Properly re-added support for `Update` and `Delete` `Announce`ments. -- Updates to certain user meta fields did not trigger an Update activity. -- When viewing Reply Contexts, we'll now attribute the post to the blog user when the post author is disabled. - -### 5.4.1 - 2025-03-04 -#### Fixed -- Fixed transition handling of posts to ensure that `Create` and `Update` activities are properly processed. -- Show "full content" preview even if post is in still in draft mode. - -### 5.4.0 - 2025-03-03 -#### Added -- Upgrade script to fix Follower json representations with unescaped backslashes. -- Centralized place for sanitization functions. - -#### Changed -- Bumped minimum required WordPress version to 6.4. -- Use a later hook for Posts to get published to the Outbox, to get sure all `post_meta`s and `taxonomy`s are set stored properly. -- Use webfinger as author email for comments from the Fediverse. -- Remove the special handling of comments from Enable Mastodon Apps. - -#### Fixed -- Do not redirect `/@username` URLs to the API any more, to improve `AUTHORIZED_FETCH` handling. - -### 5.3.2 - 2025-02-27 -#### Fixed -- Remove `activitypub_reply_block` filter after Activity-JSON is rendered, to not affect the HTML representation. -- Remove `render_block_core/embed` filter after Activity-JSON is rendered, to not affect the HTML representation. - -### 5.3.1 - 2025-02-26 -#### Fixed -- Blog profile settings can be saved again without errors. -- Followers with backslashes in their descriptions no longer break their actor representation. - -### 5.3.0 - 2025-02-25 -#### Added -- A fallback `Note` for `Article` objects to improve previews on services that don't support Articles yet. -- A reply `context` for Posts and Comments to allow relying parties to discover the whole conversation of a thread. -- Setting to adjust the number of days Outbox items are kept before being purged. -- Failed Follower notifications for Outbox items now get retried for two more times. -- Undo API for Outbox items. -- Metadata to New Follower E-Mail. -- Allow Activities on URLs instead of requiring Activity-Objects. This is useful especially for sending Announces and Likes. -- Outbox Activity IDs can now be resolved when the ActivityPub `Accept header is used. -- Support for incoming `Move` activities and ensure that followed persons are updated accordingly. -- Labels to add context to visibility settings in the block editor. -- WP CLI command to reschedule Outbox-Activities. - -#### Changed -- Outbox now precesses the first batch of followers right away to avoid delays in processing new Activities. -- Post bulk edits no longer create Outbox items, unless author or post status change. -- Properly process `Update` activities on profiles and ensure all properties of a followed person are updated accordingly. -- Outbox processing accounts for shared inboxes again. -- Improved check for `?activitypub` query-var. -- Rewrite rules: be more specific in author rewrite rules to avoid conflicts on sites that use the "@author" pattern in their permalinks. -- Deprecate the `activitypub_post_locale` filter in favor of the `activitypub_locale` filter. - -#### Fixed -- The Outbox purging routine no longer is limited to deleting 5 items at a time. -- Ellipses now display correctly in notification emails for Likes and Reposts. -- Send Update-Activity when "Actor-Mode" is changed. -- Added delay to `Announce` Activity from the Blog-Actor, to not have race conditions. -- `Actor` validation in several REST API endpoints. -- Bring back the `activitypub_post_locale` filter to allow overriding the post's locale. - -### 5.2.0 - 2025-02-13 -#### Added -- Batch Outbox-Processing. -- Outbox processed events get logged in Stream and show any errors returned from inboxes. -- Outbox items older than 6 months will be purged to avoid performance issues. -- REST API endpoints for likes and shares. - -#### Changed -- Increased probability of Outbox items being processed with the correct author. -- Enabled querying of Outbox posts through the REST API to improve troubleshooting and debugging. -- Updated terminology to be client-neutral in the Federated Reply block. - -#### Fixed -- Fixed an issue where the outbox could not send object types other than `Base_Object` (introduced in 5.0.0). -- Enforce 200 status header for valid ActivityPub requests. -- `object_id_to_comment` returns a commment now, even if there are more than one matching comment in the DB. -- Integration of content-visibility setup in the block editor. -- Update CLI commands to the new scheduler refactorings. -- Do not add an audience to the Actor-Profiles. -- `Activity::set_object` falsely overwrites the Activity-ID with a default. - -### 5.1.0 - 2025-02-06 -#### Added -- Cleanup of option values when the plugin is uninstalled. -- Third-party plugins can filter settings tabs to add their own settings pages for ActivityPub. -- Show ActivityPub preview in row actions when Block Editor is enabled but not used for the post type. - -#### Changed -- Manually granting `activitypub` cap no longer requires the receiving user to have `publish_post`. -- Allow omitting replies in ActivityPub representations instead of setting them as empty. -- Allow Base Transformer to handle WP_Term objects for transformation. -- Improved Query extensibility for third party plugins. - -#### Fixed -- Negotiation of ActivityPub requests for custom post types when queried by the ActivityPub ID. -- Avoid PHP warnings when using Debug mode and when the `actor` is not set. -- No longer creates Outbox items when importing content/users. -- Fix NodeInfo 2.0 URL to be HTTP instead of HTTPS. - -### 5.0.0 - 2025-02-03 -#### Changed -- Improved content negotiation and AUTHORIZED_FETCH support for third-party plugins. -- Moved password check to `is_post_disabled` function. - -#### Fixed -- Handle deletes from remote servers that leave behind an accessible Tombstone object. -- No longer parses tags for post types that don't support Activitypub. -- rel attribute will now contain no more than one "me" value. - -See full Changelog on [GitHub](https://github.com/Automattic/wordpress-activitypub/blob/trunk/CHANGELOG.md). - -== Upgrade Notice == - -= 5.4.0 = - -Note: This update requires WordPress 6.4+. Please ensure your site meets this requirement before upgrading. - -== Installation == - -Follow the normal instructions for [installing WordPress plugins](https://wordpress.org/support/article/managing-plugins/). - -= Automatic Plugin Installation = - -To add a WordPress Plugin using the [built-in plugin installer](https://codex.wordpress.org/Administration_Screens#Add_New_Plugins): - -1. Go to [Plugins](https://codex.wordpress.org/Administration_Screens#Plugins) > [Add New](https://codex.wordpress.org/Plugins_Add_New_Screen). -1. Type "`activitypub`" into the **Search Plugins** box. -1. Find the WordPress Plugin you wish to install. - 1. Click **Details** for more information about the Plugin and instructions you may wish to print or save to help setup the Plugin. - 1. Click **Install Now** to install the WordPress Plugin. -1. The resulting installation screen will list the installation as successful or note any problems during the install. -1. If successful, click **Activate Plugin** to activate it, or **Return to Plugin Installer** for further actions. - -= Manual Plugin Installation = - -There are a few cases when manually installing a WordPress Plugin is appropriate. - -* If you wish to control the placement and the process of installing a WordPress Plugin. -* If your server does not permit automatic installation of a WordPress Plugin. -* If you want to try the [latest development version](https://github.com/pfefferle/wordpress-activitypub). - -Installation of a WordPress Plugin manually requires FTP familiarity and the awareness that you may put your site at risk if you install a WordPress Plugin incompatible with the current version or from an unreliable source. - -Backup your site completely before proceeding. - -To install a WordPress Plugin manually: - -* Download your WordPress Plugin to your desktop. - * Download from [the WordPress directory](https://wordpress.org/plugins/activitypub/) - * Download from [GitHub](https://github.com/pfefferle/wordpress-activitypub/releases) -* If downloaded as a zip archive, extract the Plugin folder to your desktop. -* With your FTP program, upload the Plugin folder to the `wp-content/plugins` folder in your WordPress directory online. -* Go to [Plugins screen](https://codex.wordpress.org/Administration_Screens#Plugins) and find the newly uploaded Plugin in the list. -* Click **Activate** to activate it. diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/activitypub-json.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/activitypub-json.php deleted file mode 100644 index 036a99b8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/activitypub-json.php +++ /dev/null @@ -1,25 +0,0 @@ -get_activitypub_object(); - -/** - * Fires before an ActivityPub object is generated and sent to the client. - * - * @param object $object The ActivityPub object. - */ -\do_action( 'activitypub_json_pre', $object ); - -\header( 'Content-Type: application/activity+json' ); -echo $object->to_json(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped - -/** - * Fires after an ActivityPub object is generated and sent to the client. - * - * @param object $object The ActivityPub object. - */ -\do_action( 'activitypub_json_post', $object ); diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/admin-header.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/admin-header.php deleted file mode 100644 index 0c655dca..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/admin-header.php +++ /dev/null @@ -1,34 +0,0 @@ - -

-
-

-
- - -
-
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/advanced-settings.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/advanced-settings.php deleted file mode 100644 index 47c1e84c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/advanced-settings.php +++ /dev/null @@ -1,16 +0,0 @@ - - -
-
- - - -
-
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/blog-followers-list.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/blog-followers-list.php deleted file mode 100644 index 74273630..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/blog-followers-list.php +++ /dev/null @@ -1,25 +0,0 @@ -get_user_count(); -// translators: The follower count. -$followers_template = _n( 'Your blog profile currently has %s follower.', 'Your blog profile currently has %s followers.', $follower_count, 'activitypub' ); -?> -
-

- -
- - - prepare_items(); - $table->search_box( 'Search', 'search' ); - $table->display(); - ?> -
-
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/blog-settings.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/blog-settings.php deleted file mode 100644 index 078c7d0c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/blog-settings.php +++ /dev/null @@ -1,16 +0,0 @@ - - -
-
- - - -
-
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/emails/new-dm.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/emails/new-dm.php deleted file mode 100644 index a0dd32d8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/emails/new-dm.php +++ /dev/null @@ -1,49 +0,0 @@ - - -

-

- ' . esc_html( $args['actor']['webfinger'] ) . '' ); - ?> -

- -
- -
- - - -

- -

- -

- ' . esc_html( $args['webfinger'] ) . '' ); - ?> -

- -
- -
- - -
- - <?php echo esc_attr( $args['name'] ); ?> - -
-

- - -

- - - -
- -
- ' . esc_html( number_format_i18n( $args['stats']['outbox'] ) ) . '' - ); - ?> -
- - -
- ' . esc_html( number_format_i18n( $args['stats']['followers'] ) ) . '' - ); - ?> -
- - -
- ' . esc_html( number_format_i18n( $args['stats']['following'] ) ) . '' - ); - ?> -
- -
- -
-
-
- -

- - - -

- -

- followers list to see all followers.', 'activitypub' ), array( 'a' => array( 'href' => array() ) ) ), - esc_url( admin_url( $args['admin_url'] ) ) - ); - ?> -

- - - -

- -

- -

- ' . esc_html( $args['actor']['webfinger'] ) . '' ); - ?> -

- -
- -
- -

- - - -

- - - - diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/emails/parts/header.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/emails/parts/header.php deleted file mode 100644 index 6ea7e471..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/emails/parts/header.php +++ /dev/null @@ -1,60 +0,0 @@ - - - -
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/post-preview.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/post-preview.php deleted file mode 100644 index f88e82db..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/post-preview.php +++ /dev/null @@ -1,265 +0,0 @@ -get_error_message() ), - 404 - ); -} - -$object = $transformer->to_object(); -$user = $transformer->get_actor_object(); - -?> - - - - - <?php echo esc_html( $object->get_name() ); ?> - - - -
- -
-

- Home -

-
-
- <?php echo esc_attr( $user->get_name() ); ?> -
-
- get_name() ); ?> -
-
- get_webfinger() ); ?> -
-
-
-
- get_type() && $object->get_name() ) : ?> -

get_name() ); ?>

- - get_type() ? $object->get_summary() : $object->get_content(), ACTIVITYPUB_MASTODON_HTML_SANITIZER ); ?> -
- get_attachment() ) : ?> -
- get_attachment() as $attachment ) : ?> - - <?php echo esc_attr( $attachment['name'] ?? '' ); ?> - - -
- - get_tag() ) : ?> -
- get_tag() as $hashtag ) : ?> - - - - -
- -
-
- -
- - diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/reply-embed.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/reply-embed.php deleted file mode 100644 index a948195b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/reply-embed.php +++ /dev/null @@ -1,81 +0,0 @@ - '', - 'author_name' => '', - 'author_url' => '', - 'title' => '', - 'content' => '', - 'image' => '', - 'published' => '', - 'url' => '', - 'boosts' => null, - 'favorites' => null, - 'webfinger' => '', - ) -); - -\wp_enqueue_style( 'activitypub-embed', ACTIVITYPUB_PLUGIN_URL . 'assets/css/activitypub-embed.css', array(), ACTIVITYPUB_PLUGIN_VERSION ); -?> - -
-
- - - -
-

- - - -
-
- -
- -

- - - -
- - - -
- -
- -
- -
- - - - - - - ' . \esc_html( \number_format_i18n( $args['boosts'] ) ) . '' ); - ?> - - - - - - ' . \esc_html( \number_format_i18n( $args['favorites'] ) ) . '' ); - ?> - - -
-
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/settings.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/settings.php deleted file mode 100644 index e4a61c96..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/settings.php +++ /dev/null @@ -1,16 +0,0 @@ - - -
-
- - - -
-
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/toolbox.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/toolbox.php deleted file mode 100644 index 19fa797d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/toolbox.php +++ /dev/null @@ -1,78 +0,0 @@ - - -
-

-

- -

-
-

-

-

- - - - -

-
-

- -

-

- -

-

-
- -
-

-

-

-

-

- - - - - - - - - - - - - - - - - -
- - - -
in_reply_to
post_type
-

-
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/user-followers-list.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/user-followers-list.php deleted file mode 100644 index 1bf0ca29..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/user-followers-list.php +++ /dev/null @@ -1,26 +0,0 @@ - -
-

-

- - - -
- - prepare_items(); - $table->search_box( 'Search', 'search' ); - $table->display(); - ?> -
-
diff --git a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/welcome.php b/wp-content/upgrade-temp-backup/plugins/activitypub/templates/welcome.php deleted file mode 100644 index 35782a90..00000000 --- a/wp-content/upgrade-temp-backup/plugins/activitypub/templates/welcome.php +++ /dev/null @@ -1,12 +0,0 @@ - - -
- -
diff --git a/wp-content/upgrade-temp-backup/plugins/audioigniter/assets/css/admin-styles.css b/wp-content/upgrade-temp-backup/plugins/audioigniter/assets/css/admin-styles.css deleted file mode 100644 index 583d74ef..00000000 --- a/wp-content/upgrade-temp-backup/plugins/audioigniter/assets/css/admin-styles.css +++ /dev/null @@ -1,640 +0,0 @@ -@charset "UTF-8"; - -@keyframes ai-spin { - 0% { - transform: rotate(0deg); - } - - 100% { - transform: rotate(360deg); - } -} - -@keyframes backgroundPosition { - 0% { - background-position: -140px 0; - } - - 100% { - background-position: 140px 0; - } -} - -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} - -.ai-row { - margin-left: -15px; - margin-right: -15px; - box-sizing: border-box; -} - -.ai-row::after { - content: ""; - display: table; - clear: both; -} - -[class^="ai-col"] { - float: left; - padding-left: 15px; - padding-right: 15px; - width: 50%; - box-sizing: border-box; -} - -.ai-btn { - display: inline-block; - font-weight: normal; - margin: 0; - line-height: normal; - border: 0; - box-shadow: none; - text-align: center; - vertical-align: middle; - cursor: pointer; - white-space: nowrap; - -ms-user-select: none; - user-select: none; - border-radius: 2px; - width: auto; - height: auto; - background-image: none; - padding: 11px 20px 11px; - font-size: 12px; - text-transform: uppercase; - background-color: #1c4866; - color: #ffffff; - text-decoration: none; -} - -.ai-btn:hover, -.ai-btn:focus { - color: #ffffff; - background-color: #173a52; -} - -.ai-btn-green { - background-color: #14b552; -} - -.ai-btn-green:hover, -.ai-btn-green:focus { - color: #ffffff; - background-color: #119e48; -} - -.ai-brand-module { - background-color: #1c4866; - padding: 15px; - color: #ffffff; - font-size: 12px; -} - -.ai-brand-module p { - font-size: 12px; -} - -.ai-brand-module a:not(.ai-btn) { - color: #ffcc00; - text-decoration: none; -} - -.ai-brand-module-actions { - text-align: right; -} - -.ai-brand-module-actions p { - margin: 0; -} - -.ai-header { - margin: 12px 0 -12px; - height: 40px; -} - -.ai-header-actions { - text-align: right; -} - -.ai-logo { - display: inline-block; - position: relative; - top: -2px; -} - -.ai-logo img { - height: 44px; -} - -.ai-note { - font-style: italic; -} - -.ai-list-inline { - margin: 0; - padding: 0; - list-style: none; -} - -.ai-list-inline li { - display: inline-block; - margin: 0; -} - -.ai-footer-links a::after { - content: "\007c"; - color: #ffffff; - opacity: .5; - margin: 0 7px; -} - -.ai-footer-links li:last-child a::after { - display: none; -} - -.ai-module { - border: 1px solid #eeeeee; - margin-top: 12px; - padding: 15px; -} - -.ai-module::after { - content: ""; - display: table; - clear: both; -} - -.ai-container { - margin-top: 12px; -} - -.ai-field-controls-wrap { - padding: 15px; - border: 1px solid #eeeeee; -} - -.ai-field-controls-wrap::after { - content: ""; - display: table; - clear: both; -} - -.ai-field-controls { - float: left; -} - -.ai-field-controls .button { - margin-right: 5px; -} - -.ai-field-controls-visibility { - float: right; - padding-top: 4px; -} - -.ai-field-controls-visibility a { - text-decoration: none; -} - -.ai-fields-expand-all { - margin-right: 8px; - padding-right: 6px; - border-right: 1px solid #f1f1f1; -} - -.ai-fields-container { - padding: 15px; - border-left: 1px solid #eeeeee; - border-right: 1px solid #eeeeee; -} - -.ai-field-repeatable { - margin-bottom: 15px; - border: 1px solid #d7d7d7; - box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.07); -} - -.ai-field-repeatable:last-child { - margin-bottom: 0; -} - -.ai-field-repeatable:only-child .ai-remove-field { - display: none; -} - -.ai-field-container { - padding: 15px; - background-color: #ffffff; -} - -.ai-field-container::after { - content: ""; - display: table; - clear: both; -} - -.ai-field-container-links { - display: flex; - grid-gap: 20px; -} - -.ai-field-container-links .ai-field-split { - width: 50%; - float: none; -} - -.ai-field-head { - padding: 8px 15px 5px; - line-height: normal; - background-color: #d7d7d7; - background: linear-gradient(to bottom, #f1f1f1, #d7d7d7); - border-bottom: 1px solid #cccccc; -} - -.ai-field-head::after { - content: ""; - display: table; - clear: both; -} - -.ai-field-head .toggle-indicator { - border-radius: 50%; -} - -.ai-fields-sortable .ai-field-head { - cursor: move; -} - -.ai-field-sort-handle { - position: relative; - top: 1px; - color: #0073aa; -} - -.ai-field-sort-handle .dashicons { - font-size: 18px; -} - -.ai-field-title { - font-weight: bold; - font-size: 1.05em; - margin-left: 8px; - padding-top: 3px; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - max-width: 80%; - display: inline-block; -} - -.ai-field-toggle { - float: right; -} - -.ai-field-cover { - float: left; - width: 100px; - height: 100px; - margin-right: 15px; - background-color: #eeeeee; - border: 1px solid #cccccc; -} - -.ai-field-split { - float: left; - width: calc(50% - 71px); - margin-right: 15px; -} - -.ai-field-split:nth-child(2n + 1) { - margin-right: 0; -} - -.ai-container .button .dashicons, -.ai-module .button .dashicons { - font-size: 1.2em; - line-height: 1.7em; -} - -.ai-form-field-group { - padding: 15px; - border: 1px solid #f1f1f1; - margin-bottom: 15px; -} - -.ai-form-field-group :last-child { - margin-bottom: 0; -} - -.ai-form-field-group-title { - margin-top: 0; -} - -.ai-form-field { - margin-bottom: 15px; -} - -.ai-form-field label { - display: inline-block; - font-weight: bold; - margin-bottom: 3px; -} - -.ai-form-field input[type="text"], -.ai-form-field input[type="url"], -.ai-form-field input[type="search"], -.ai-form-field input[type="email"], -.ai-form-field input[type="password"], -.ai-form-field input[type="number"], -.ai-form-field input[type="tel"], -.ai-form-field input[type="date"], -.ai-form-field textarea, -.ai-form-field select { - width: 100%; -} - -.ai-form-field input[type="checkbox"], -.ai-form-field input[type="radio"] { - display: inline-block; - position: relative; - top: 1px; -} - -.ai-module-settings .ai-form-field input[type="text"], -.ai-module-settings .ai-form-field input[type="url"], -.ai-module-settings .ai-form-field input[type="search"], -.ai-module-settings .ai-form-field input[type="email"], -.ai-module-settings .ai-form-field input[type="password"], -.ai-module-settings .ai-form-field input[type="number"], -.ai-module-settings .ai-form-field input[type="tel"], -.ai-module-settings .ai-form-field input[type="date"], -.ai-module-settings .ai-form-field textarea, -.ai-module-settings .ai-form-field select { - width: 200px; - max-width: 100%; - display: block; -} - -.ai-form-field-addon { - position: relative; -} - -.ai-form-field-addon input { - padding-right: 80px; -} - -.ai-form-field-addon button { - position: absolute; - top: 0; - right: -2px; -} - -.ai-field-help { - margin: 5px 0 0; - font-style: italic; - color: #999; -} - -.ai-form-field-checkbox-secondary { - margin-top: 7px; -} - -.ai-remove-field { - float: right; -} - -.ai-field-upload-cover { - display: block; - position: relative; - width: 100px; - height: 100px; - text-decoration: none; - color: initial; - overflow: hidden; -} - -.ai-field-upload-cover img { - max-width: 100%; - display: none; -} - -.ai-has-cover .ai-remove-cover { - display: block; -} - -.ai-has-cover .ai-field-cover-placeholder { - display: none; -} - -.ai-has-cover img { - display: inline-block; -} - -.ai-field-cover-placeholder { - text-align: center; - font-style: normal; - font-size: .9em; - opacity: .8; - padding-top: 28px; -} - -.ai-field-cover-placeholder::before { - content: ""; - display: inline-block; - font: 400 20px/1 dashicons; - speak: none; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - text-decoration: none !important; - display: block; -} - -.ai-track-loading .ai-field-cover-placeholder::before { - content: "\f463"; - animation: rotation 1.2s infinite linear; -} - -.ai-remove-cover { - color: #ffffff; - background-color: #ff0000; - width: 16px; - height: 16px; - font-size: 12px; - cursor: pointer; - position: absolute; - top: 0; - right: 0; - opacity: .9; - transition: opacity 0.18s ease-in; - display: none; - text-align: center; -} - -.ai-remove-cover:hover { - opacity: 1; -} - -.ai-remove-cover .dashicons { - font-size: 16px; - width: 100%; - height: 100%; -} - -.ai-remove-all-fields .dashicons, -.ai-remove-field .dashicons { - color: #ff0000; -} - -.ai-add-field-batch .dashicons, -.ai-add-field .dashicons { - color: #0073aa; -} - -.ai-info-box { - background: #fffce6; - color: #948832; - font-size: 12px; - border: solid 1px #eeeac9; - padding: 15px; - margin: 0 0 15px 0; -} - -.ai-player-type-message { - display: none; -} - -.ai-drop-placeholder { - background-color: #f1f1f1; - border: 2px dashed #cccccc; - opacity: 0.5; - margin-bottom: 15px; -} - -.ai-collapsed .ai-field-container { - display: none; -} - -.ai-collapsed .toggle-indicator::before { - content: "\f140" !important; -} - -.ai-module-shortcode .code { - display: block; - width: 100%; - margin-top: 3px; - padding: 10px 10px 8px; - font-weight: bold; - background: #f1f1f1; -} - -.ai-sync-soundcloud.button { - display: none; -} - -.ai-sync-soundcloud.button::before { - content: "\f463"; - color: #d54e21; - display: inline-block; - font: 400 19px/1 dashicons; - speak: none; - position: relative; - left: -1px; - top: 4px; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - vertical-align: top; -} - -.ai-track-loading .ai-sync-soundcloud.button::before { - animation: rotation 1.2s infinite linear; -} - -.ai-soundcloud-track .ai-sync-soundcloud { - display: inline-block; -} - -.ai-soundcloud-track .ai-upload { - display: none; -} - -@media (max-width: 1100px) { - .ai-field-controls, - .ai-field-controls-visibility { - margin: 0; - float: none; - width: 100%; - } - - .ai-field-controls { - margin-bottom: 5px; - } - - .ai-field-container-links { - display: block; - } - - .ai-field-container-links .ai-field-split, - .ai-field-split { - float: none; - width: 100%; - } - - .ai-field-cover { - margin-bottom: 15px; - } - - .ai-footer { - text-align: center; - } - - .ai-footer .ai-brand-module-actions { - text-align: center; - margin-top: 10px; - } - - .ai-footer [class^="ai-col"] { - width: 100%; - } -} - -@media (max-width: 782px) { - .ai-container .button .dashicons, - .ai-module .button .dashicons { - line-height: 1.2em; - } - - .ai-form-field-addon .button { - top: 2px; - } -} - -@media (max-width: 600px) { - .ai-field-controls .button { - width: 100%; - } - - .ai-header { - text-align: center; - } - - .ai-header .ai-brand-module-actions { - margin-top: 10px; - } - - .ai-header .ai-btn { - display: block; - } - - .ai-header [class^="ai-col"] { - width: 100%; - } -} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/audioigniter/assets/css/admin-styles.min.css b/wp-content/upgrade-temp-backup/plugins/audioigniter/assets/css/admin-styles.min.css deleted file mode 100644 index 71afa9a5..00000000 --- a/wp-content/upgrade-temp-backup/plugins/audioigniter/assets/css/admin-styles.min.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";@keyframes ai-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes backgroundPosition{0%{background-position:-140px 0}100%{background-position:140px 0}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.ai-row{margin-left:-15px;margin-right:-15px;box-sizing:border-box}.ai-row::after{content:"";display:table;clear:both}[class^=ai-col]{float:left;padding-left:15px;padding-right:15px;width:50%;box-sizing:border-box}.ai-btn{display:inline-block;font-weight:400;margin:0;line-height:normal;border:0;box-shadow:none;text-align:center;vertical-align:middle;cursor:pointer;white-space:nowrap;-ms-user-select:none;user-select:none;border-radius:2px;width:auto;height:auto;background-image:none;padding:11px 20px 11px;font-size:12px;text-transform:uppercase;background-color:#1c4866;color:#fff;text-decoration:none}.ai-btn:focus,.ai-btn:hover{color:#fff;background-color:#173a52}.ai-btn-green{background-color:#14b552}.ai-btn-green:focus,.ai-btn-green:hover{color:#fff;background-color:#119e48}.ai-brand-module{background-color:#1c4866;padding:15px;color:#fff;font-size:12px}.ai-brand-module p{font-size:12px}.ai-brand-module a:not(.ai-btn){color:#fc0;text-decoration:none}.ai-brand-module-actions{text-align:right}.ai-brand-module-actions p{margin:0}.ai-header{margin:12px 0 -12px;height:40px}.ai-header-actions{text-align:right}.ai-logo{display:inline-block;position:relative;top:-2px}.ai-logo img{height:44px}.ai-note{font-style:italic}.ai-list-inline{margin:0;padding:0;list-style:none}.ai-list-inline li{display:inline-block;margin:0}.ai-footer-links a::after{content:"\007c";color:#fff;opacity:.5;margin:0 7px}.ai-footer-links li:last-child a::after{display:none}.ai-module{border:1px solid #eee;margin-top:12px;padding:15px}.ai-module::after{content:"";display:table;clear:both}.ai-container{margin-top:12px}.ai-field-controls-wrap{padding:15px;border:1px solid #eee}.ai-field-controls-wrap::after{content:"";display:table;clear:both}.ai-field-controls{float:left}.ai-field-controls .button{margin-right:5px}.ai-field-controls-visibility{float:right;padding-top:4px}.ai-field-controls-visibility a{text-decoration:none}.ai-fields-expand-all{margin-right:8px;padding-right:6px;border-right:1px solid #f1f1f1}.ai-fields-container{padding:15px;border-left:1px solid #eee;border-right:1px solid #eee}.ai-field-repeatable{margin-bottom:15px;border:1px solid #d7d7d7;box-shadow:1px 1px 2px rgba(0,0,0,.07)}.ai-field-repeatable:last-child{margin-bottom:0}.ai-field-repeatable:only-child .ai-remove-field{display:none}.ai-field-container{padding:15px;background-color:#fff}.ai-field-container::after{content:"";display:table;clear:both}.ai-field-container-links{display:flex;grid-gap:20px}.ai-field-container-links .ai-field-split{width:50%;float:none}.ai-field-head{padding:8px 15px 5px;line-height:normal;background-color:#d7d7d7;background:linear-gradient(to bottom,#f1f1f1,#d7d7d7);border-bottom:1px solid #ccc}.ai-field-head::after{content:"";display:table;clear:both}.ai-field-head .toggle-indicator{border-radius:50%}.ai-fields-sortable .ai-field-head{cursor:move}.ai-field-sort-handle{position:relative;top:1px;color:#0073aa}.ai-field-sort-handle .dashicons{font-size:18px}.ai-field-title{font-weight:700;font-size:1.05em;margin-left:8px;padding-top:3px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:80%;display:inline-block}.ai-field-toggle{float:right}.ai-field-cover{float:left;width:100px;height:100px;margin-right:15px;background-color:#eee;border:1px solid #ccc}.ai-field-split{float:left;width:calc(50% - 71px);margin-right:15px}.ai-field-split:nth-child(2n+1){margin-right:0}.ai-container .button .dashicons,.ai-module .button .dashicons{font-size:1.2em;line-height:1.7em}.ai-form-field-group{padding:15px;border:1px solid #f1f1f1;margin-bottom:15px}.ai-form-field-group :last-child{margin-bottom:0}.ai-form-field-group-title{margin-top:0}.ai-form-field{margin-bottom:15px}.ai-form-field label{display:inline-block;font-weight:700;margin-bottom:3px}.ai-form-field input[type=date],.ai-form-field input[type=email],.ai-form-field input[type=number],.ai-form-field input[type=password],.ai-form-field input[type=search],.ai-form-field input[type=tel],.ai-form-field input[type=text],.ai-form-field input[type=url],.ai-form-field select,.ai-form-field textarea{width:100%}.ai-form-field input[type=checkbox],.ai-form-field input[type=radio]{display:inline-block;position:relative;top:1px}.ai-module-settings .ai-form-field input[type=date],.ai-module-settings .ai-form-field input[type=email],.ai-module-settings .ai-form-field input[type=number],.ai-module-settings .ai-form-field input[type=password],.ai-module-settings .ai-form-field input[type=search],.ai-module-settings .ai-form-field input[type=tel],.ai-module-settings .ai-form-field input[type=text],.ai-module-settings .ai-form-field input[type=url],.ai-module-settings .ai-form-field select,.ai-module-settings .ai-form-field textarea{width:200px;max-width:100%;display:block}.ai-form-field-addon{position:relative}.ai-form-field-addon input{padding-right:80px}.ai-form-field-addon button{position:absolute;top:0;right:-2px}.ai-field-help{margin:5px 0 0;font-style:italic;color:#999}.ai-form-field-checkbox-secondary{margin-top:7px}.ai-remove-field{float:right}.ai-field-upload-cover{display:block;position:relative;width:100px;height:100px;text-decoration:none;color:initial;overflow:hidden}.ai-field-upload-cover img{max-width:100%;display:none}.ai-has-cover .ai-remove-cover{display:block}.ai-has-cover .ai-field-cover-placeholder{display:none}.ai-has-cover img{display:inline-block}.ai-field-cover-placeholder{text-align:center;font-style:normal;font-size:.9em;opacity:.8;padding-top:28px}.ai-field-cover-placeholder::before{content:"";display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;display:block}.ai-track-loading .ai-field-cover-placeholder::before{content:"\f463";animation:rotation 1.2s infinite linear}.ai-remove-cover{color:#fff;background-color:red;width:16px;height:16px;font-size:12px;cursor:pointer;position:absolute;top:0;right:0;opacity:.9;transition:opacity .18s ease-in;display:none;text-align:center}.ai-remove-cover:hover{opacity:1}.ai-remove-cover .dashicons{font-size:16px;width:100%;height:100%}.ai-remove-all-fields .dashicons,.ai-remove-field .dashicons{color:red}.ai-add-field .dashicons,.ai-add-field-batch .dashicons{color:#0073aa}.ai-info-box{background:#fffce6;color:#948832;font-size:12px;border:solid 1px #eeeac9;padding:15px;margin:0 0 15px 0}.ai-player-type-message{display:none}.ai-drop-placeholder{background-color:#f1f1f1;border:2px dashed #ccc;opacity:.5;margin-bottom:15px}.ai-collapsed .ai-field-container{display:none}.ai-collapsed .toggle-indicator::before{content:"\f140"!important}.ai-module-shortcode .code{display:block;width:100%;margin-top:3px;padding:10px 10px 8px;font-weight:700;background:#f1f1f1}.ai-sync-soundcloud.button{display:none}.ai-sync-soundcloud.button::before{content:"\f463";color:#d54e21;display:inline-block;font:400 19px/1 dashicons;speak:none;position:relative;left:-1px;top:4px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.ai-track-loading .ai-sync-soundcloud.button::before{animation:rotation 1.2s infinite linear}.ai-soundcloud-track .ai-sync-soundcloud{display:inline-block}.ai-soundcloud-track .ai-upload{display:none}@media (max-width:1100px){.ai-field-controls,.ai-field-controls-visibility{margin:0;float:none;width:100%}.ai-field-controls{margin-bottom:5px}.ai-field-container-links{display:block}.ai-field-container-links .ai-field-split,.ai-field-split{float:none;width:100%}.ai-field-cover{margin-bottom:15px}.ai-footer{text-align:center}.ai-footer .ai-brand-module-actions{text-align:center;margin-top:10px}.ai-footer [class^=ai-col]{width:100%}}@media (max-width:782px){.ai-container .button .dashicons,.ai-module .button .dashicons{line-height:1.2em}.ai-form-field-addon .button{top:2px}}@media (max-width:600px){.ai-field-controls .button{width:100%}.ai-header{text-align:center}.ai-header .ai-brand-module-actions{margin-top:10px}.ai-header .ai-btn{display:block}.ai-header [class^=ai-col]{width:100%}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/audioigniter/assets/css/admin/settings.css b/wp-content/upgrade-temp-backup/plugins/audioigniter/assets/css/admin/settings.css deleted file mode 100644 index 8af5559c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/audioigniter/assets/css/admin/settings.css +++ /dev/null @@ -1,44 +0,0 @@ -/* General */ - -.ai-settings-box { - background-color: #ffffff; - padding: 25px; - border: 1px solid #D8D8D8; - box-shadow: 0px 2px 0px rgba(0, 0, 0, 0.04); -} - -.ai-settings-box > :last-child { - margin-bottom: 0; -} - -/* Header / Nav */ - -.ai-settings-main-content-nav-header { - margin: 15px 0 40px; - display: flex; - align-items: center; -} - -.ai-settings-main-content-nav { - display: flex; - grid-gap: 20px; -} - -.ai-settings-main-content-nav-link { - color: #646970; - text-decoration: none; - font-size: 16px; -} - -.ai-settings-main-content-nav-link.is-active { - font-weight: 700; -} - -.ai-settings-main-content-nav-link.is-active, -.ai-settings-main-content-nav-link:hover { - color: #1D2327; -} - -.ai-settings-main-content-nav-filters { - margin-left: auto; -} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/audioigniter/assets/css/admin/settings.min.css b/wp-content/upgrade-temp-backup/plugins/audioigniter/assets/css/admin/settings.min.css deleted file mode 100644 index bc7acbab..00000000 --- a/wp-content/upgrade-temp-backup/plugins/audioigniter/assets/css/admin/settings.min.css +++ /dev/null @@ -1 +0,0 @@ -.ai-settings-box{background-color:#fff;padding:25px;border:1px solid #d8d8d8;box-shadow:0 2px 0 rgba(0,0,0,.04)}.ai-settings-box>:last-child{margin-bottom:0}.ai-settings-main-content-nav-header{margin:15px 0 40px;display:flex;align-items:center}.ai-settings-main-content-nav{display:flex;grid-gap:20px}.ai-settings-main-content-nav-link{color:#646970;text-decoration:none;font-size:16px}.ai-settings-main-content-nav-link.is-active{font-weight:700}.ai-settings-main-content-nav-link.is-active,.ai-settings-main-content-nav-link:hover{color:#1d2327}.ai-settings-main-content-nav-filters{margin-left:auto} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/audioigniter/assets/images/logo.svg b/wp-content/upgrade-temp-backup/plugins/audioigniter/assets/images/logo.svg deleted file mode 100644 index f2722937..00000000 --- a/wp-content/upgrade-temp-backup/plugins/audioigniter/assets/images/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/audioigniter/assets/images/vc_icon.png b/wp-content/upgrade-temp-backup/plugins/audioigniter/assets/images/vc_icon.png deleted file mode 100644 index 5d44eb65476d0a26f035c390674359d3f387391a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1850 zcmbVNc~BE)6b}eCoTErlMD4N}71Z2`keDDOn-HwwG73_4$gv?&k`0^Hgor|cDhi5# zRjFmD%H@H@g33{gMOs1Yflw4jMT&~ZppM0;NS$stZ2xeaPIq?q`@XmD_ulVavpXWg zL*1NbIui&4w=fA5jjw?1Ax_5MMvG+#U%W9+yG;M0#4BC`QWpLMi9`d_+SiM zN|PFdutqDfpzsPyxJ+r;pya5)r9lAC%*74pU`!5}b%}Z-*USe;?Q-$GO-u!WQ59?h z9~>hUD~$w%2nqvi%3`vT&SU@q915MyVFa=k0Sp>_F_p%m(m7;0lZ)Rh8Zdr=xHnX# z=0-!}abNg}4{9*Xz@<`6CKJWPq#$Slj^%KuGzOKyAmbWjW3nETo5^}3X~F^o8Q7e$^3A_!Ob|xcu(4wiKVjRbfzw%zV2!X044SBvYKi!1vV zCtNM7e)a8^ZtE47zJQz7rVFpCjaFVC|61}j6I6f6c;01l(v+y(ErLWrGf+ZwB4#^g z`p|P}q~R%*Sz_yKw|B*Aa1O~D@|rX$DhoI=DDD7*jHE|1YyO)5;^8Tmw)B=>hdqmU zA`O5Zf_S7D@H_iFm%LnERxcF%DMURsqcg>Kd*MrYGVHPihRKETZWPbLkkr!s>zHiH zvTy||b{1V0r=C)I)DKwhukV7)4t@`_4Rx4(erH`z;+KxgZp^mJ92pwewX9agb9z$i z7+Cmr3D4eI&go~6+L$NPJm&P2%jZ5Q`ORV~66Kk~cAnEU=Khiy8k|<&47zV=b{b z-Ie%xym4yGX^t|YZJpnz&q~}3Ufj8Q=){`PRd*t~@{;#le5y$4y6)2pq2ZN539_aNXgKzEkil(|-7hbKsfH3(~6Qbw_AwE>%QGa=J?Q>B2(R@`T9a-SqY(Ox9?o`tm5ab7oi11`s0(U{oL2HWTLQ52l9H*WOuYCMhoj&MM;NoB8_(f4r6J= 1) { - removeElement($trackFields.slice(1)); - resetField($trackFields); - } else { - resetField($trackFields); - } - } - }); - - /** - * Bind media uploaders - */ - - /* Audio upload */ - el.$trackContainer.on("click", el.audioUploadButtonClassName, function() { - var $this = $(this); - var $parentTrackField = $this.parents(el.trackFieldClassName); - - wpMediaInit({ - handler: "ai-audio", - title: ai_scripts.messages.media_title_upload, - type: "audio", - onMediaSelect: function(media) { - populateTrackField($parentTrackField, media); - } - }); - }); - - /** - * Cover image upload - * - * Element `coverUploadButtonClassName` *must* have - * an `img` and `coverRemoveClassName` elements - * as children - */ - el.$trackContainer - .on("click", el.coverUploadButtonClassName, function(e) { - var $this = $(this); - - wpMediaInit({ - handler: "ai-cover", - title: ai_scripts.messages.media_title_upload_cover, - type: "image", - onMediaSelect: function(media) { - setTrackFieldCover($this.parents(el.trackFieldClassName), { - id: media.id, - url: media.sizes.thumbnail - ? media.sizes.thumbnail.url - : media.sizes.full.url, - alt: media.alt - }); - } - }); - - e.preventDefault(); - }) - /* Remove Image */ - .on("click", el.coverRemoveClassName, function(e) { - var $this = $(this); - resetCoverImage($this.parents(el.trackFieldClassName)); - e.stopPropagation(); - e.preventDefault(); - }); - - /** - * Hide / show options based on player type - * - * Different player types support different kind of options. - * E.g. "Simple Player" doesn't support tracklist height, etc. - */ - var $settingsWrap = $(".ai-module-settings"); - var $typeSelect = $(".ai-form-select-player-type"); - - function getUnsupportedSettings($el) { - var settingsString = $el.data("no-support"); - - if (typeof settingsString !== "string") { - return []; - } - - return settingsString - .replace(/\s/g, "") // remove all whitespace - .split(",") - .map(function(x) { - return "_audioigniter_" + x; - }); - } - - function filterUIBasedOnPlayerType($el) { - var type = $el.val(); - - // Reset styles - var $shortcodeMetaBox = $("#ai-meta-box-shortcode"); - var $messageBox = $(".ai-player-type-message"); - var info = $el.data("info"); - - $shortcodeMetaBox.show(); - - if (info) { - $messageBox.text(info).show(); - } else { - $messageBox.text("").hide(); - } - - // Player specific controls - switch (type) { - case "global-footer": - $shortcodeMetaBox.hide(); - break; - default: - return; - } - } - - function filterSettings() { - var $formFields; - var $type = $typeSelect.find(":selected"); - var unsupportedSettings = getUnsupportedSettings($type); - - filterUIBasedOnPlayerType($type); - - if (unsupportedSettings.length === 0) { - $formFields = $settingsWrap.find(".ai-form-field"); - $formFields.show(); - return; - } - - $settingsWrap.find("input", "select", "textarea").each(function() { - var $this = $(this); - var $parent = $this.parents(".ai-form-field"); - if (unsupportedSettings.indexOf($this.attr("name")) > -1) { - $parent.hide(); - } else { - $parent.show(); - } - }); - } - - filterSettings(); - $typeSelect.on("change", filterSettings); - - /** - * Shortcode select on click - */ - el.$shortcodeInputField.on("click", function() { - $(this).select(); - }); - - /** - * Export public methods and variables - */ - return { - elements: el, - uuid: uuid, - collapseField: collapseField, - expandField: expandField, - isFieldCollapsed: isFieldCollapsed, - isTrackFieldEmpty: isTrackFieldEmpty, - resetField: resetField, - resetCoverImage: resetCoverImage, - getNewTrackField: getNewTrackField, - removeElement: removeElement, - populateTrackField: populateTrackField, - setTrackFieldCover: setTrackFieldCover, - wpMediaInit: wpMediaInit - }; - })(); - - // Expose the AudioIgniter instance as a global - if (!window.AudioIgniter) { - window.AudioIgniter = AudioIgniter; - } -}); diff --git a/wp-content/upgrade-temp-backup/plugins/audioigniter/audioigniter.php b/wp-content/upgrade-temp-backup/plugins/audioigniter/audioigniter.php deleted file mode 100644 index e1cdcf91..00000000 --- a/wp-content/upgrade-temp-backup/plugins/audioigniter/audioigniter.php +++ /dev/null @@ -1,1422 +0,0 @@ -. - * - */ - -if ( ! defined( 'ABSPATH' ) ) { - exit; -} - - -class AudioIgniter { - - /** - * AudioIgniter version. - * - * @var string - * @since 1.0.0 - * @since 1.7.0 Changed from static to non-static. - */ - public $version = null; - - /** - * Instance of this class. - * - * @var AudioIgniter - * @since 1.0.0 - */ - protected static $instance = null; - - /** - * Sanitizer instance. - * - * @var AudioIgniter_Sanitizer - * @since 1.0.0 - */ - public $sanitizer = null; - - /** - * The URL directory path (with trailing slash) of the main plugin file. - * - * @var string - * @since 1.0.0 - */ - protected static $plugin_url = ''; - - /** - * The filesystem directory path (with trailing slash) of the main plugin file. - * - * @var string - * @since 1.0.0 - */ - protected static $plugin_path = ''; - - - /** - * Playlist post type name. - * - * @var string - * @since 1.0.0 - */ - public $post_type = 'ai_playlist'; - - - - /** - * AudioIgniter Instance. - * - * Instantiates or reuses an instance of AudioIgniter. - * - * @since 1.0.0 - * @static - * @see AudioIgniter() - * @return AudioIgniter - Single instance. - */ - public static function instance() { - if ( is_null( self::$instance ) ) { - self::$instance = new self(); - } - return self::$instance; - } - - - /** - * AudioIgniter constructor. Intentionally left empty so that instances can be created without - * re-loading of resources (e.g. scripts/styles), or re-registering hooks. - * http://wordpress.stackexchange.com/questions/70055/best-way-to-initiate-a-class-in-a-wp-plugin - * https://gist.github.com/toscho/3804204 - * - * @since 1.0.0 - */ - public function __construct() {} - - /** - * Kickstarts plugin loading. - * - * @since 1.0.0 - */ - public function plugin_setup() { - if ( is_null( $this->version ) ) { - if ( ! function_exists( 'get_plugin_data' ) ) { - include_once ABSPATH . 'wp-admin/includes/plugin.php'; - } - $plugin_data = get_plugin_data( __FILE__, true, false ); - - $this->version = $plugin_data['Version']; - } - - self::$plugin_url = plugin_dir_url( __FILE__ ); - self::$plugin_path = plugin_dir_path( __FILE__ ); - - add_action( 'init', function() { - load_plugin_textdomain( 'audioigniter', false, dirname( self::plugin_basename() ) . '/languages' ); - } ); - - require_once untrailingslashit( $this->plugin_path() ) . '/inc/class-audioigniter-sanitizer.php'; - $this->sanitizer = new AudioIgniter_Sanitizer(); - -// if ( ! class_exists( 'AudioIgniter_Pro', false ) ) { -// require_once untrailingslashit( $this->plugin_path() ) . '/inc/class-audioigniter-admin-page-upsell.php'; -// new AudioIgniter_Admin_Page_Upsell(); -// } - - // Initialization needed in every request. - $this->init(); - - // Initialization needed in admin requests. - $this->admin_init(); - - // Initialization needed in frontend requests. - $this->frontend_init(); - - do_action( 'audioigniter_loaded' ); - } - - /** - * Registers actions that need to be run on both admin and frontend - * - * @since 1.0.0 - */ - protected function init() { - add_action( 'init', array( $this, 'register_post_types' ) ); - add_action( 'init', array( $this, 'register_scripts' ) ); - add_action( 'init', array( $this, 'register_playlist_endpoint' ) ); - add_action( 'init', array( $this, 'register_image_sizes' ) ); - add_action( 'init', array( $this, 'register_shortcodes' ) ); - add_action( 'widgets_init', array( $this, 'register_widgets' ) ); - - do_action( 'audioigniter_init' ); - } - - - /** - * Registers actions that need to be run on admin only. - * - * @since 1.0.0 - */ - protected function admin_init() { - if ( ! is_admin() ) { - return; - } - - add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) ); - add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) ); - add_action( 'save_post', array( $this, 'save_post' ) ); - - add_filter( "manage_{$this->post_type}_posts_columns", array( $this, 'filter_posts_columns' ) ); - add_action( "manage_{$this->post_type}_posts_custom_column", array( $this, 'add_custom_columns' ), 10, 2 ); - - do_action( 'audioigniter_admin_init' ); - } - - /** - * Registers actions that need to be run on frontend only. - * - * @since 1.0.0 - */ - protected function frontend_init() { - if ( is_admin() ) { - return; - } - - add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); - add_action( 'template_redirect', array( $this, 'handle_playlist_endpoint' ) ); - - do_action( 'audioigniter_frontend_init' ); - } - - /** - * Register (but not enqueue) all scripts and styles to be used throughout the plugin. - * - * @since 1.0.0 - */ - public function register_scripts() { - wp_register_style( 'audioigniter', untrailingslashit( $this->plugin_url() ) . '/player/build/style.css', array(), $this->version ); - wp_register_script( 'audioigniter', untrailingslashit( $this->plugin_url() ) . '/player/build/app.js', array(), $this->version, true ); - - wp_localize_script( 'audioigniter', 'aiStrings', apply_filters( 'audioigniter_aiStrings', array( - /* translators: %s is the track's title. */ - 'play_title' => esc_html__( 'Play %s', 'audioigniter' ), - /* translators: %s is the track's title. */ - 'pause_title' => esc_html__( 'Pause %s', 'audioigniter' ), - 'previous' => esc_html__( 'Previous track', 'audioigniter' ), - 'next' => esc_html__( 'Next track', 'audioigniter' ), - 'toggle_list_repeat' => esc_html__( 'Toggle track listing repeat', 'audioigniter' ), - 'toggle_track_repeat' => esc_html__( 'Toggle track repeat' ), - 'toggle_list_visible' => esc_html__( 'Toggle track listing visibility', 'audioigniter' ), - 'buy_track' => esc_html__( 'Buy this track', 'audioigniter' ), - 'download_track' => esc_html__( 'Download this track', 'audioigniter' ), - 'volume_up' => esc_html__( 'Volume Up', 'audioigniter' ), - 'volume_down' => esc_html__( 'Volume Down', 'audioigniter' ), - 'open_track_lyrics' => esc_html__( 'Open track lyrics', 'audioigniter' ), - 'set_playback_rate' => esc_html__( 'Set playback rate', 'audioigniter' ), - 'skip_forward' => esc_html__( 'Skip forward', 'audioigniter' ), - 'skip_backward' => esc_html__( 'Skip backward', 'audioigniter' ), - 'shuffle' => esc_html__( 'Shuffle', 'audioigniter' ), - ) ) ); - - wp_localize_script( 'audioigniter', 'aiStats', array( - 'enabled' => get_option( 'audioigniter_stats_enabled' ) && class_exists( 'AudioIgniter_Pro' ), - 'apiUrl' => get_rest_url( null, 'audioigniter/v1' ), - ) ); - - wp_register_style( 'audioigniter-admin', untrailingslashit( $this->plugin_url() ) . '/assets/css/admin-styles.css', array(), $this->version ); - wp_register_script( 'audioigniter-admin', untrailingslashit( $this->plugin_url() ) . '/assets/js/audioigniter.js', array(), $this->version, true ); - - wp_localize_script( 'audioigniter-admin', 'ai_scripts', array( - 'messages' => array( - 'confirm_clear_tracks' => esc_html__( 'Do you really want to remove all tracks? (This will not delete your audio files).', 'audioigniter' ), - 'media_title_upload' => esc_html__( 'Select or upload audio media', 'audioigniter' ), - 'media_title_upload_cover' => esc_html__( 'Select a cover image', 'audioigniter' ), - ), - ) ); - - wp_register_style( 'audioigniter-admin-settings', untrailingslashit( $this->plugin_url() ) . '/assets/css/admin/settings.css', array(), $this->version ); - } - - /** - * Enqueues frontend scripts and styles. - * - * @since 1.0.0 - */ - public function enqueue_scripts() { - wp_enqueue_style( 'audioigniter' ); - wp_enqueue_script( 'audioigniter' ); - } - - /** - * Enqueues admin scripts and styles. - * - * @since 1.0.0 - */ - public function enqueue_admin_scripts( $hook ) { - $screen = get_current_screen(); - - if ( 'post' === $screen->base && $screen->post_type === $this->post_type ) { - wp_enqueue_media(); - wp_enqueue_style( 'audioigniter-admin' ); - wp_enqueue_script( 'audioigniter-admin' ); - } - -// if ( 'ai_playlist_page_audioigniter-upsell' === $screen->id ) { -// wp_enqueue_style( 'audioigniter-admin-settings' ); -// } - } - - /** - * Post types registration. - * - * @since 1.0.0 - */ - public function register_post_types() { - $labels = array( - 'name' => esc_html_x( 'Playlists', 'post type general name', 'audioigniter' ), - 'singular_name' => esc_html_x( 'Playlist', 'post type singular name', 'audioigniter' ), - 'menu_name' => esc_html_x( 'AudioIgniter', 'admin menu', 'audioigniter' ), - 'all_items' => esc_html_x( 'All Playlists', 'admin menu', 'audioigniter' ), - 'name_admin_bar' => esc_html_x( 'Playlist', 'add new on admin bar', 'audioigniter' ), - 'add_new' => esc_html__( 'Add New Playlist', 'audioigniter' ), - 'add_new_item' => esc_html__( 'Add New Playlist', 'audioigniter' ), - 'edit_item' => esc_html__( 'Edit Playlist', 'audioigniter' ), - 'new_item' => esc_html__( 'New Playlist', 'audioigniter' ), - 'view_item' => esc_html__( 'View Playlist', 'audioigniter' ), - 'search_items' => esc_html__( 'Search Playlists', 'audioigniter' ), - 'not_found' => esc_html__( 'No playlists found', 'audioigniter' ), - 'not_found_in_trash' => esc_html__( 'No playlists found in the trash', 'audioigniter' ), - ); - - $args = array( - 'labels' => $labels, - 'singular_label' => esc_html_x( 'Playlist', 'post type singular name', 'audioigniter' ), - 'public' => false, - 'show_ui' => true, - 'capability_type' => 'post', - 'hierarchical' => false, - 'has_archive' => false, - 'supports' => array( 'title' ), - 'menu_icon' => 'dashicons-controls-volumeon', - ); - - register_post_type( $this->post_type, $args ); - } - - - /** - * Registers metaboxes for the ai_playlist post type. - * - * @since 1.0.0 - */ - public function add_meta_boxes() { - add_meta_box( 'ai-meta-box-tracks', esc_html__( 'Tracks', 'audioigniter' ), array( $this, 'metabox_tracks' ), $this->post_type, 'normal', 'high' ); - add_meta_box( 'ai-meta-box-settings', esc_html__( 'Settings', 'audioigniter' ), array( $this, 'metabox_settings' ), $this->post_type, 'normal', 'high' ); - add_meta_box( 'ai-meta-box-shortcode', esc_html__( 'Shortcode', 'audioigniter' ), array( $this, 'metabox_shortcode' ), $this->post_type, 'side', 'default' ); - } - - /** - * Echoes the Tracks metabox markup. - * - * @since 1.0.0 - * - * @param WP_Post $object - * @param array $box - */ - public function metabox_tracks( $object, $box ) { - $tracks = $this->get_post_meta( $object->ID, '_audioigniter_tracks', array() ); - - wp_nonce_field( basename( __FILE__ ), $object->post_type . '_nonce' ); - ?> - - metabox_tracks_header(); ?> - -
- metabox_tracks_field_controls( 'top', $object->ID ); ?> - - - -
- metabox_tracks_repeatable_track_field( $track ); - } - } else { - $this->metabox_tracks_repeatable_track_field(); - } - ?> -
- - metabox_tracks_field_controls( 'bottom', $object->ID ); ?> -
- - metabox_tracks_footer(); ?> - - -
-
-
- -
- - -
-
- - - -
-
- -
-
- - - -
-
- - - - - - -
- -
- - -
-
- - -
-
- - -
- -
- - -
- - -
- -
-
- - -
- - - - -
-
- -
- - - disabled - - /> - - -
- - - - -
- -
-
- -
-
- - - - - -
- - -
- get_post_meta( $object->ID, '_audioigniter_player_type', 'full' ); - $numbers = $this->get_post_meta( $object->ID, '_audioigniter_show_numbers', 1 ); - $numbers_reverse = $this->get_post_meta( $object->ID, '_audioigniter_show_numbers_reverse', 0 ); - $thumb = $this->get_post_meta( $object->ID, '_audioigniter_show_covers', 1 ); - $active_thumb = $this->get_post_meta( $object->ID, '_audioigniter_show_active_cover', 1 ); - $artist = $this->get_post_meta( $object->ID, '_audioigniter_show_artist', 1 ); - $buy_links = $this->get_post_meta( $object->ID, '_audioigniter_show_buy_links', 1 ); - $buy_links_new_target = $this->get_post_meta( $object->ID, '_audioigniter_buy_links_new_target', 1 ); - $cycle_tracks = $this->get_post_meta( $object->ID, '_audioigniter_cycle_tracks', 0 ); - $track_listing = $this->get_post_meta( $object->ID, '_audioigniter_show_track_listing', 1 ); - $track_listing_allow_toggle = $this->get_post_meta( $object->ID, '_audioigniter_allow_track_listing_toggle', 1 ); - $track_listing_allow_loop = $this->get_post_meta( $object->ID, '_audioigniter_allow_track_listing_loop', 1 ); - $credit = $this->get_post_meta( $object->ID, '_audioigniter_show_credit', 0 ); - $limit_tracklisting_height = $this->get_post_meta( $object->ID, '_audioigniter_limit_tracklisting_height', 1 ); - $tracklisting_height = $this->get_post_meta( $object->ID, '_audioigniter_tracklisting_height', 185 ); - $volume = $this->get_post_meta( $object->ID, '_audioigniter_volume', 100 ); - $max_width = $this->get_post_meta( $object->ID, '_audioigniter_max_width' ); - - wp_nonce_field( basename( __FILE__ ), $object->post_type . '_nonce' ); - ?> -
-
-

- -
-
- - - -
- -
- - /> - - -
- -
- - /> - - -
- -
- - /> - - -
- -
- - - - -

- -

-
- -
- - /> - - -
- -
- - - - -

- -

-
- -
- - - - -

- -

-
- - -
- -
-

- -
- - /> - - -
- -
- - /> - - -
- -
- - /> - - -
- -
- - /> - - -
- -
- - /> - - -
- -
- - /> - - -
- - -
- -
-

- -
- - /> - - -
- -
- - /> - - -
- - -
- -
- - /> - - - -

- -

-
-
- -
-
- - - ID ) ); ?>" - /> - -
-
- array( - 'label' => __( 'Full Player', 'audioigniter' ), - 'no-support' => array(), - 'info' => '', - ), - 'simple' => array( - 'label' => __( 'Simple Player', 'audioigniter' ), - 'no-support' => array( - 'show_track_listing', - 'show_covers', - 'show_active_cover', - 'limit_tracklisting_height', - 'tracklisting_height', - 'allow_track_listing_loop', - 'allow_track_listing_toggle', - 'skip_amount', - 'initial_track', - ), - 'info' => '', - ), - ); - - return apply_filters( 'audioigniter_player_types', $player_types ); - } - - public function save_post( $post_id ) { - if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return false; } - if ( isset( $_POST['post_view'] ) && 'list' === $_POST['post_view'] ) { return false; } - if ( ! isset( $_POST['post_type'] ) || $_POST['post_type'] !== $this->post_type ) { return false; } - if ( ! isset( $_POST[ $this->post_type . '_nonce' ] ) || ! wp_verify_nonce( $_POST[ $this->post_type . '_nonce' ], basename( __FILE__ ) ) ) { return false; } - $post_type_obj = get_post_type_object( $this->post_type ); - if ( ! current_user_can( $post_type_obj->cap->edit_post, $post_id ) ) { return false; } - - update_post_meta( $post_id, '_audioigniter_tracks', $this->sanitizer->metabox_playlist( $_POST['ai_playlist_tracks'], $post_id ) ); - - update_post_meta( $post_id, '_audioigniter_show_numbers', $this->sanitizer->checkbox_ref( $_POST['_audioigniter_show_numbers'] ) ); - update_post_meta( $post_id, '_audioigniter_show_numbers_reverse', $this->sanitizer->checkbox_ref( $_POST['_audioigniter_show_numbers_reverse'] ) ); - update_post_meta( $post_id, '_audioigniter_show_covers', $this->sanitizer->checkbox_ref( $_POST['_audioigniter_show_covers'] ) ); - update_post_meta( $post_id, '_audioigniter_show_active_cover', $this->sanitizer->checkbox_ref( $_POST['_audioigniter_show_active_cover'] ) ); - update_post_meta( $post_id, '_audioigniter_show_artist', $this->sanitizer->checkbox_ref( $_POST['_audioigniter_show_artist'] ) ); - update_post_meta( $post_id, '_audioigniter_show_buy_links', $this->sanitizer->checkbox_ref( $_POST['_audioigniter_show_buy_links'] ) ); - update_post_meta( $post_id, '_audioigniter_buy_links_new_target', $this->sanitizer->checkbox_ref( $_POST['_audioigniter_buy_links_new_target'] ) ); - update_post_meta( $post_id, '_audioigniter_cycle_tracks', $this->sanitizer->checkbox_ref( $_POST['_audioigniter_cycle_tracks'] ) ); - update_post_meta( $post_id, '_audioigniter_show_track_listing', $this->sanitizer->checkbox_ref( $_POST['_audioigniter_show_track_listing'] ) ); - update_post_meta( $post_id, '_audioigniter_allow_track_listing_toggle', $this->sanitizer->checkbox_ref( $_POST['_audioigniter_allow_track_listing_toggle'] ) ); - update_post_meta( $post_id, '_audioigniter_allow_track_listing_loop', $this->sanitizer->checkbox_ref( $_POST['_audioigniter_allow_track_listing_loop'] ) ); - update_post_meta( $post_id, '_audioigniter_player_type', $this->sanitizer->player_type( $_POST['_audioigniter_player_type'] ) ); - update_post_meta( $post_id, '_audioigniter_show_credit', $this->sanitizer->checkbox_ref( $_POST['_audioigniter_show_credit'] ) ); - update_post_meta( $post_id, '_audioigniter_limit_tracklisting_height', $this->sanitizer->checkbox_ref( $_POST['_audioigniter_limit_tracklisting_height'] ) ); - update_post_meta( $post_id, '_audioigniter_tracklisting_height', intval( $_POST['_audioigniter_tracklisting_height'] ) ); - update_post_meta( $post_id, '_audioigniter_volume', intval( $_POST['_audioigniter_volume'] ) ); - update_post_meta( $post_id, '_audioigniter_max_width', $this->sanitizer->intval_or_empty( $_POST['_audioigniter_max_width'] ) ); - - /** - * @since 1.4.0 - */ - do_action( 'audioigniter_save_post', $post_id ); - } - - public static function get_default_track_values() { - return apply_filters( 'audioigniter_default_track_values', array( - 'cover_id' => '', - 'title' => '', - 'artist' => '', - 'track_url' => '', - 'buy_link' => '', - 'download_url' => '', - 'download_uses_track_url' => 0, - ) ); - } - - public function register_image_sizes() { - add_image_size( 'audioigniter_cover', 560, 560, true ); - } - - public function register_widgets() { - $widgets = apply_filters( 'audioigniter_register_widgets', array() ); - - foreach ( $widgets as $class => $file ) { - require_once( $file ); - register_widget( $class ); - } - } - - public function register_shortcodes() { - add_shortcode( 'ai_playlist', array( $this, 'shortcode_ai_playlist' ) ); - } - - /** - * Checks whether passed post object or ID is an AudioIgniter playlist. - * - * @version 1.4.0 - * @since 1.4.0 - * - * @param int|WP_Post $post Post ID or post object. - * - * @return bool - */ - public function is_playlist( $post ) { - $post = get_post( $post ); - - if ( is_wp_error( $post ) || empty( $post ) || is_null( $post ) || $post->post_type !== $this->post_type ) { - return false; - } - - return true; - } - - /** - * Returns a data attributes array for the given playlist. - * - * @version 1.4.0 - * @since 1.4.0 - * - * @param int $post_id Post ID. - * - * @return array - */ - public function get_playlist_data_attributes_array( $post_id ) { - $post_id = intval( $post_id ); - - if ( ! $this->is_playlist( $post_id ) ) { - return array(); - } - - $attrs = array( - 'data-player-type' => $this->get_post_meta( $post_id, '_audioigniter_player_type', 'full' ), - 'data-tracks-url' => add_query_arg( array( 'audioigniter_playlist_id' => $post_id ), home_url( '/' ) ), - 'data-display-track-no' => $this->convert_bool_string( $this->get_post_meta( $post_id, '_audioigniter_show_numbers', 1 ) ), - 'data-reverse-track-order' => $this->convert_bool_string( $this->get_post_meta( $post_id, '_audioigniter_show_numbers_reverse', 0 ) ), - 'data-display-tracklist-covers' => $this->convert_bool_string( $this->get_post_meta( $post_id, '_audioigniter_show_covers', 1 ) ), - 'data-display-active-cover' => $this->convert_bool_string( $this->get_post_meta( $post_id, '_audioigniter_show_active_cover', 1 ) ), - 'data-display-artist-names' => $this->convert_bool_string( $this->get_post_meta( $post_id, '_audioigniter_show_artist', 1 ) ), - 'data-display-buy-buttons' => $this->convert_bool_string( $this->get_post_meta( $post_id, '_audioigniter_show_buy_links', 1 ) ), - 'data-buy-buttons-target' => $this->convert_bool_string( $this->get_post_meta( $post_id, '_audioigniter_buy_links_new_target', 1 ) ), - 'data-cycle-tracks' => $this->convert_bool_string( $this->get_post_meta( $post_id, '_audioigniter_cycle_tracks', 0 ) ), - 'data-display-credits' => $this->convert_bool_string( $this->get_post_meta( $post_id, '_audioigniter_show_credit', 1 ) ), - 'data-display-tracklist' => $this->convert_bool_string( $this->get_post_meta( $post_id, '_audioigniter_show_track_listing', 1 ) ), - 'data-allow-tracklist-toggle' => $this->convert_bool_string( $this->get_post_meta( $post_id, '_audioigniter_allow_track_listing_toggle', 1 ) ), - 'data-allow-tracklist-loop' => $this->convert_bool_string( $this->get_post_meta( $post_id, '_audioigniter_allow_track_listing_loop', 1 ) ), - 'data-limit-tracklist-height' => $this->convert_bool_string( $this->get_post_meta( $post_id, '_audioigniter_limit_tracklisting_height', 1 ) ), - 'data-volume' => intval( $this->get_post_meta( $post_id, '_audioigniter_volume', 100 ) ), - 'data-tracklist-height' => intval( $this->get_post_meta( $post_id, '_audioigniter_tracklisting_height', 185 ) ), - 'data-max-width' => $this->get_post_meta( $post_id, '_audioigniter_max_width' ), - ); - - return apply_filters( 'audioigniter_get_playlist_data_attributes_array', $attrs, $post_id ); - } - - /** - * Returns the output of the [ai_playlist] shortcode. - * - * @version 1.4.0 - * @since 1.0.0 - * - * @param array $atts The shortcode attributes. - * @param string $content Content, when used with a shortcode closing tag. - * @param string $tag The shortcode name used to reach this function. - * - * @return string - */ - public function shortcode_ai_playlist( $atts, $content, $tag ) { - $atts = shortcode_atts( array( - 'id' => '', - 'class' => '', - ), $atts, $tag ); - - $id = intval( $atts['id'] ); - $class_name = $atts['class']; - - if ( ! $this->is_playlist( $id ) ) { - return ''; - } - - $post = get_post( $id ); - - $params = apply_filters( 'audioigniter_shortcode_data_attributes_array', $this->get_playlist_data_attributes_array( $id ), $id, $post, $atts ); - $params = array_filter( $params, array( $this->sanitizer, 'array_filter_empty_null' ) ); - $params = $this->sanitizer->html_data_attributes_array( $params ); - - // Returning a truthy value from the filter, will short-circuit execution of the shortcode. - if ( false !== apply_filters( 'audioigniter_shortcode_shortcircuit', false, $id, $post, $params ) ) { - return ''; - } - - $data = ''; - foreach ( $params as $attribute => $value ) { - $data .= sprintf( '%s="%s" ', sanitize_key( $attribute ), esc_attr( $value ) ); - } - - $player_classes = array_merge( array( - 'audioigniter-root', - ), explode( ' ', $class_name ) ); - - $output = sprintf( '
', - esc_attr( $id ), - esc_attr( implode( ' ', $player_classes ) ), - $data - ); - - return $output; - } - - public function convert_bool_string( $value ) { - if ( $value ) { - return 'true'; - } - - return 'false'; - } - - public function register_playlist_endpoint() { - add_rewrite_tag( '%audioigniter_playlist_id%', '([0-9]+)' ); - add_rewrite_rule( '^audioigniter/playlist/([0-9]+)/?', 'index.php?audioigniter_playlist_id=$matches[1]', 'bottom' ); - } - - public function handle_playlist_endpoint() { - global $wp_query; - - $playlist_id = $wp_query->get( 'audioigniter_playlist_id' ); - - if ( empty( $playlist_id ) ) { - return; - } - - $playlist_id = intval( $playlist_id ); - $post = get_post( $playlist_id ); - - if ( empty( $post ) || $post->post_type !== $this->post_type ) { - wp_send_json_error( __( "ID doesn't match a playlist", 'audioigniter' ) ); - } - - $response = array(); - $tracks = $this->get_post_meta( $playlist_id, '_audioigniter_tracks', array() ); - - if ( empty( $tracks ) ) { - $tracks = array(); - } - - foreach ( $tracks as $track ) { - $track = wp_parse_args( $track, self::get_default_track_values() ); - $track_response = array(); - - $track_response['title'] = $track['title']; - $track_response['subtitle'] = $track['artist']; - $track_response['audio'] = $track['track_url']; - $track_response['buyUrl'] = $track['buy_link']; - $track_response['downloadUrl'] = $track['download_uses_track_url'] ? $track['track_url'] : $track['download_url']; - $track_response['downloadFilename'] = $this->get_filename_from_url( $track_response['downloadUrl'] ); - - if ( ! $track_response['downloadFilename'] ) { - $track_response['downloadFilename'] = $track_response['downloadUrl']; - } - - $cover_url = wp_get_attachment_image_src( intval( $track['cover_id'] ), 'audioigniter_cover' ); - if ( ! empty( $cover_url[0] ) ) { - $cover_url = $cover_url[0]; - } else { - $cover_url = ''; - } - - $track_response['cover'] = $cover_url; - - $track_response = apply_filters( 'audioigniter_playlist_endpoint_track', $track_response, $track, $playlist_id, $post ); - if ( false === $track_response ) { - continue; - } - - $response[] = $track_response; - } - - wp_send_json( $response ); - } - - public function filter_posts_columns( $columns ) { - $date = $columns['date']; - unset( $columns['date'] ); - - $columns['shortcode'] = __( 'Shortcode', 'audioigniter' ); - $columns['date'] = $date; - - return $columns; - } - - public function add_custom_columns( $column, $post_id ) { - if ( 'shortcode' === $column ) { - ?>"> $this->post_type, - 'posts_per_page' => - 1, - 'orderby' => $orderby, - 'order' => $order, - ) ); - - return $q->posts; - } - - public function get_post_meta( $post_id, $key, $default = '' ) { - $keys = get_post_custom_keys( $post_id ); - - $value = $default; - - if ( is_array( $keys ) && in_array( $key, $keys, true ) ) { - $value = get_post_meta( $post_id, $key, true ); - } - - return $value; - } - - public function plugin_activated() { - if ( ! current_user_can( 'activate_plugins' ) ) { - return; - } - - $this->register_post_types(); - - do_action( 'audioigniter_activated' ); - - flush_rewrite_rules(); - } - - public function plugin_deactivated() { - if ( ! current_user_can( 'activate_plugins' ) ) { - return; - } - - unregister_post_type( $this->post_type ); - - do_action( 'audioigniter_deactivated' ); - - flush_rewrite_rules(); - } - - public static function plugin_basename() { - return plugin_basename( __FILE__ ); - } - - public function plugin_url() { - return self::$plugin_url; - } - - public function plugin_path() { - return self::$plugin_path; - } -} - - -/** - * Main instance of AudioIgniter. - * - * Returns the working instance of AudioIgniter. No need for globals. - * - * @since 1.0.0 - * @return AudioIgniter - */ -function AudioIgniter() { - return AudioIgniter::instance(); -} - -add_action( 'plugins_loaded', array( AudioIgniter(), 'plugin_setup' ) ); -register_activation_hook( __FILE__, array( AudioIgniter(), 'plugin_activated' ) ); -register_deactivation_hook( __FILE__, array( AudioIgniter(), 'plugin_deactivated' ) ); diff --git a/wp-content/upgrade-temp-backup/plugins/audioigniter/inc/class-audioigniter-admin-page-upsell.php b/wp-content/upgrade-temp-backup/plugins/audioigniter/inc/class-audioigniter-admin-page-upsell.php deleted file mode 100644 index 5bb991a8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/audioigniter/inc/class-audioigniter-admin-page-upsell.php +++ /dev/null @@ -1,169 +0,0 @@ -tabs = array( - 'general' => array( - 'title' => _x( 'General', 'settings tab title', 'audioigniter' ), - 'callback' => array( $this, 'tab_general' ), - ), - ); - } - - /** - * Register the page - * - * @since 2.0.0 - * - * @return void - */ - public function register() { - $page_slug = 'edit.php?post_type=' . AudioIgniter()->post_type; - add_submenu_page( $page_slug, __( 'AudioIgniter Settings', 'audioigniter' ), __( 'Go Pro!', 'audioigniter' ), 'manage_options', self::$page_slug, array( $this, 'render_page' ) ); - } - - /** - * Renders the onboarding page. - * - * @since 2.0.0 - */ - public function render_page() { - $active_tab = isset( $_GET['tab'] ) ? sanitize_key( wp_unslash( $_GET['tab'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification - if ( ! array_key_exists( $active_tab, $this->tabs ) ) { - reset( $this->tabs ); - $active_tab = key( $this->tabs ); - } - - ?> -
-

- -

- -
- -
-
-
- -
- generate_tabs( $active_tab ); ?> -
-
-
- -
-
- tabs as $tab => $tab_info ) : ?> - - - -
-
- -
- tabs[ $active_tab ]['callback'] ) ) { - call_user_func( $this->tabs[ $active_tab ]['callback'], $active_tab ); - } ?> -
- -
- -
- TODO: Leave disabled option below and write some upsell stuff. Maybe add images. Or replace everything with upsell info. -
- - - - - - -
- -

- -

-
- - - -
- 'ai_playlist', - 'page' => self::$page_slug, - ), admin_url( 'edit.php' ) ); - } - - /** - * Returns the URL of a specific tab. - * - * @since 2.0.0 - * - * @return string - */ - private function get_tab_url( $tab ) { - return add_query_arg( array( - 'tab' => $tab, - ), $this->get_page_url() ); - } - -} diff --git a/wp-content/upgrade-temp-backup/plugins/audioigniter/inc/class-audioigniter-sanitizer.php b/wp-content/upgrade-temp-backup/plugins/audioigniter/inc/class-audioigniter-sanitizer.php deleted file mode 100644 index 09abd5d5..00000000 --- a/wp-content/upgrade-temp-backup/plugins/audioigniter/inc/class-audioigniter-sanitizer.php +++ /dev/null @@ -1,368 +0,0 @@ -get_player_types() - * - * @param string $value Player type to sanitize. - * - * @return string - */ - public static function player_type( $value ) { - $choices = AudioIgniter()->get_player_types(); - if ( array_key_exists( $value, $choices ) ) { - return $value; - } - - return 'full'; - } - - /** - * Sanitizes a playlist (repeatable tracks). - * - * @version 1.2.0 - * @since 1.0.0 - * - * @uses AudioIgniter_Sanitizer::playlist_track() - * - * @param array $post_tracks Input values to sanitize, as passed by the playlist metabox. - * @param int|null $post_id Optional. Post ID where the track belongs to. - * - * @return array - */ - public static function metabox_playlist( $post_tracks, $post_id = null ) { - if ( empty( $post_tracks ) || ! is_array( $post_tracks ) ) { - return array(); - } - - $tracks = array(); - - foreach ( $post_tracks as $uid => $track_data ) { - $track = self::playlist_track( $track_data, $post_id, $uid ); - if ( false !== $track ) { - $tracks[] = $track; - } - } - - return apply_filters( 'audioigniter_sanitize_playlist', $tracks, $post_tracks, $post_id ); - } - - /** - * Sanitizes a single playlist track. - * - * @since 1.0.0 - * - * @uses AudioIgniter::get_default_track_values() - * - * @param array $track Input values to sanitize. - * @param int|null $post_id Optional. Post ID where the track belongs to. - * @param string $track_uid Optional. UID that identifies the track in the metabox list. - * - * @return array|false Array if at least one field is completed, false otherwise. - */ - public static function playlist_track( $track, $post_id = null, $track_uid = '' ) { - $track = wp_parse_args( $track, AudioIgniter::get_default_track_values() ); - - $sanitized_track = array(); - - $sanitized_track['cover_id'] = intval( $track['cover_id'] ); - $sanitized_track['title'] = sanitize_text_field( $track['title'] ); - $sanitized_track['artist'] = sanitize_text_field( $track['artist'] ); - $sanitized_track['track_url'] = esc_url_raw( $track['track_url'] ); - $sanitized_track['buy_link'] = esc_url_raw( $track['buy_link'] ); - $sanitized_track['download_url'] = esc_url_raw( $track['download_url'] ); - $sanitized_track['download_uses_track_url'] = ! empty( $track['download_uses_track_url'] ) ? 1 : 0; - - $sanitized_track = array_map( 'trim', $sanitized_track ); - - $tmp = array_filter( $sanitized_track ); - if ( empty( $tmp ) ) { - $sanitized_track = false; - } - - return apply_filters( 'audioigniter_sanitize_playlist_track', $sanitized_track, $track, $post_id, $track_uid ); - } - - /** - * Sanitizes a checkbox value. - * - * @since 1.0.0 - * - * @param int|string|bool $input Input value to sanitize. - * - * @return int|string Returns 1 if $input evaluates to 1, an empty string otherwise. - */ - public static function checkbox( $input ) { - if ( 1 == $input ) { // WPCS: loose comparison ok. - return 1; - } - - return ''; - } - - /** - * Sanitizes a checkbox value. Value is passed by reference. - * - * Useful when sanitizing form checkboxes. Since browsers don't send any data when a checkbox - * is not checked, checkbox() throws an error. - * checkbox_ref() however evaluates &$input as null so no errors are thrown. - * - * @since 1.0.0 - * - * @param int|string|bool &$input Input value to sanitize. - * - * @return int|string Returns 1 if $input evaluates to 1, an empty string otherwise. - */ - public static function checkbox_ref( &$input ) { - if ( 1 == $input ) { // WPCS: loose comparison ok. - return 1; - } - - return ''; - } - - - /** - * Sanitizes integer input while differentiating zero from empty string. - * - * @since 1.0.0 - * - * @param mixed $input Input value to sanitize. - * - * @return int|string Integer value (including zero), or an empty string otherwise. - */ - public static function intval_or_empty( $input ) { - if ( is_null( $input ) || false === $input || '' === $input ) { - return ''; - } - - if ( 0 == $input ) { // WPCS: loose comparison ok. - return 0; - } - - return intval( $input ); - } - - - /** - * Returns a sanitized hex color code. - * - * @since 1.0.0 - * - * @param string $str The color string to be sanitized. - * @param bool $return_hash Whether to return the color code prepended by a hash. - * @param string $return_fail The value to return on failure. - * - * @return string A valid hex color code on success, an empty string on failure. - */ - public static function hex_color( $str, $return_hash = true, $return_fail = '' ) { - if ( false === $str || empty( $str ) || 'false' === $str ) { - return $return_fail; - } - - // Allow keywords and predefined colors - if ( in_array( $str, array( 'transparent', 'initial', 'inherit', 'black', 'silver', 'gray', 'grey', 'white', 'maroon', 'red', 'purple', 'fuchsia', 'green', 'lime', 'olive', 'yellow', 'navy', 'blue', 'teal', 'aqua', 'orange', 'aliceblue', 'antiquewhite', 'aquamarine', 'azure', 'beige', 'bisque', 'blanchedalmond', 'blueviolet', 'brown', 'burlywood', 'cadetblue', 'chartreuse', 'chocolate', 'coral', 'cornflowerblue', 'cornsilk', 'crimson', 'darkblue', 'darkcyan', 'darkgoldenrod', 'darkgray', 'darkgrey', 'darkgreen', 'darkkhaki', 'darkmagenta', 'darkolivegreen', 'darkorange', 'darkorchid', 'darkred', 'darksalmon', 'darkseagreen', 'darkslateblue', 'darkslategray', 'darkslategrey', 'darkturquoise', 'darkviolet', 'deeppink', 'deepskyblue', 'dimgray', 'dimgrey', 'dodgerblue', 'firebrick', 'floralwhite', 'forestgreen', 'gainsboro', 'ghostwhite', 'gold', 'goldenrod', 'greenyellow', 'grey', 'honeydew', 'hotpink', 'indianred', 'indigo', 'ivory', 'khaki', 'lavender', 'lavenderblush', 'lawngreen', 'lemonchiffon', 'lightblue', 'lightcoral', 'lightcyan', 'lightgoldenrodyellow', 'lightgray', 'lightgreen', 'lightgrey', 'lightpink', 'lightsalmon', 'lightseagreen', 'lightskyblue', 'lightslategray', 'lightslategrey', 'lightsteelblue', 'lightyellow', 'limegreen', 'linen', 'mediumaquamarine', 'mediumblue', 'mediumorchid', 'mediumpurple', 'mediumseagreen', 'mediumslateblue', 'mediumspringgreen', 'mediumturquoise', 'mediumvioletred', 'midnightblue', 'mintcream', 'mistyrose', 'moccasin', 'navajowhite', 'oldlace', 'olivedrab', 'orangered', 'orchid', 'palegoldenrod', 'palegreen', 'paleturquoise', 'palevioletred', 'papayawhip', 'peachpuff', 'peru', 'pink', 'plum', 'powderblue', 'rosybrown', 'royalblue', 'saddlebrown', 'salmon', 'sandybrown', 'seagreen', 'seashell', 'sienna', 'skyblue', 'slateblue', 'slategray', 'slategrey', 'snow', 'springgreen', 'steelblue', 'tan', 'thistle', 'tomato', 'turquoise', 'violet', 'wheat', 'whitesmoke', 'yellowgreen', 'rebeccapurple' ), true ) ) { - return $str; - } - - // Include the hash if not there. - // The regex below depends on in. - if ( substr( $str, 0, 1 ) !== '#' ) { - $str = '#' . $str; - } - - preg_match( '/(#)([0-9a-fA-F]{6})/', $str, $matches ); - - if ( count( $matches ) === 3 ) { - if ( $return_hash ) { - return $matches[1] . $matches[2]; - } else { - return $matches[2]; - } - } - - return $return_fail; - } - - /** - * Sanitizes a CSS color. - * - * Tries to validate and sanitize values in these formats: - * - rgba() - * - 3 and 6 digit hex values, optionally prefixed with `#` - * - Predefined CSS named colors/keywords, such as 'transparent', 'initial', 'inherit', 'black', 'silver', etc. - * - * @since 1.7.1 - * - * @param string $color The color value to sanitize - * @param bool $return_hash Whether to return hex color prefixed with a `#` - * @param string $return_fail Value to return when $color fails validation. - * - * @return string - */ - public static function rgba_color( $color, $return_hash = true, $return_fail = '' ) { - if ( false === $color || empty( $color ) || 'false' === $color ) { - return $return_fail; - } - - // Allow keywords and predefined colors - if ( in_array( $color, array( 'transparent', 'initial', 'inherit', 'black', 'silver', 'gray', 'grey', 'white', 'maroon', 'red', 'purple', 'fuchsia', 'green', 'lime', 'olive', 'yellow', 'navy', 'blue', 'teal', 'aqua', 'orange', 'aliceblue', 'antiquewhite', 'aquamarine', 'azure', 'beige', 'bisque', 'blanchedalmond', 'blueviolet', 'brown', 'burlywood', 'cadetblue', 'chartreuse', 'chocolate', 'coral', 'cornflowerblue', 'cornsilk', 'crimson', 'darkblue', 'darkcyan', 'darkgoldenrod', 'darkgray', 'darkgrey', 'darkgreen', 'darkkhaki', 'darkmagenta', 'darkolivegreen', 'darkorange', 'darkorchid', 'darkred', 'darksalmon', 'darkseagreen', 'darkslateblue', 'darkslategray', 'darkslategrey', 'darkturquoise', 'darkviolet', 'deeppink', 'deepskyblue', 'dimgray', 'dimgrey', 'dodgerblue', 'firebrick', 'floralwhite', 'forestgreen', 'gainsboro', 'ghostwhite', 'gold', 'goldenrod', 'greenyellow', 'grey', 'honeydew', 'hotpink', 'indianred', 'indigo', 'ivory', 'khaki', 'lavender', 'lavenderblush', 'lawngreen', 'lemonchiffon', 'lightblue', 'lightcoral', 'lightcyan', 'lightgoldenrodyellow', 'lightgray', 'lightgreen', 'lightgrey', 'lightpink', 'lightsalmon', 'lightseagreen', 'lightskyblue', 'lightslategray', 'lightslategrey', 'lightsteelblue', 'lightyellow', 'limegreen', 'linen', 'mediumaquamarine', 'mediumblue', 'mediumorchid', 'mediumpurple', 'mediumseagreen', 'mediumslateblue', 'mediumspringgreen', 'mediumturquoise', 'mediumvioletred', 'midnightblue', 'mintcream', 'mistyrose', 'moccasin', 'navajowhite', 'oldlace', 'olivedrab', 'orangered', 'orchid', 'palegoldenrod', 'palegreen', 'paleturquoise', 'palevioletred', 'papayawhip', 'peachpuff', 'peru', 'pink', 'plum', 'powderblue', 'rosybrown', 'royalblue', 'saddlebrown', 'salmon', 'sandybrown', 'seagreen', 'seashell', 'sienna', 'skyblue', 'slateblue', 'slategray', 'slategrey', 'snow', 'springgreen', 'steelblue', 'tan', 'thistle', 'tomato', 'turquoise', 'violet', 'wheat', 'whitesmoke', 'yellowgreen', 'rebeccapurple' ), true ) ) { - return $color; - } - - preg_match( '/rgba\(\s*(\d{1,3}\.?\d*\%?)\s*,\s*(\d{1,3}\.?\d*\%?)\s*,\s*(\d{1,3}\.?\d*\%?)\s*,\s*(\d{1}\.?\d*\%?)\s*\)/', $color, $rgba_matches ); - if ( ! empty( $rgba_matches ) && 5 === count( $rgba_matches ) ) { - for ( $i = 1; $i < 4; $i++ ) { - if ( strpos( $rgba_matches[ $i ], '%' ) !== false ) { - $rgba_matches[ $i ] = self::float_0_100( $rgba_matches[ $i ] ); - } else { - $rgba_matches[ $i ] = self::int_0_255( $rgba_matches[ $i ] ); - } - } - $rgba_matches[4] = self::float_0_1( $rgba_matches[ $i ] ); - return sprintf( 'rgba(%s, %s, %s, %s)', $rgba_matches[1], $rgba_matches[2], $rgba_matches[3], $rgba_matches[4] ); - } - - // Not a color function either. Let's see if it's a hex color. - - // Include the hash if not there. - // The regex below depends on in. - if ( substr( $color, 0, 1 ) !== '#' ) { - $color = '#' . $color; - } - - preg_match( '/(#)([0-9a-fA-F]{6})/', $color, $matches ); - - if ( 3 === count( $matches ) ) { - if ( $return_hash ) { - return $matches[1] . $matches[2]; - } else { - return $matches[2]; - } - } - - return $return_fail; - } - - /** - * Sanitizes a percentage value, 0% - 100% - * - * Accepts float values with or without the percentage sign `%` - * Returns a string suffixed with the percentage sign `%`. - * - * @since 1.7.1 - * - * @param mixed $value - * - * @return string A percentage value, including the percentage sign. - */ - public static function float_0_100( $value ) { - $value = str_replace( '%', '', $value ); - if ( floatval( $value ) > 100 ) { - $value = 100; - } elseif ( floatval( $value ) < 0 ) { - $value = 0; - } - - return floatval( $value ) . '%'; - } - - /** - * Sanitizes a decimal CSS color value, 0 - 255. - * - * Accepts float values with or without the percentage sign `%` - * Returns a string suffixed with the percentage sign `%`. - * - * @since 1.7.1 - * - * @param mixed $value - * - * @return int A number between 0-255. - */ - public static function int_0_255( $value ) { - if ( intval( $value ) > 255 ) { - $value = 255; - } elseif ( intval( $value ) < 0 ) { - $value = 0; - } - - return intval( $value ); - } - - /** - * Sanitizes a CSS opacity value, 0 - 1. - * - * @since 1.7.1 - * - * @param mixed $value - * - * @return float A number between 0-1. - */ - public static function float_0_1( $value ) { - if ( floatval( $value ) > 1 ) { - $value = 1; - } elseif ( floatval( $value ) < 0 ) { - $value = 0; - } - - return floatval( $value ); - } - - /** - * Removes elements whose keys are not valid data-attribute names. - * - * @since 1.0.0 - * - * @param array $array Input array to sanitize. - * - * @return array() - */ - public static function html_data_attributes_array( $array ) { - $keys = array_keys( $array ); - $key_prefix = 'data-'; - - // Remove keys that are not data attributes. - foreach ( $keys as $key ) { - if ( substr( $key, 0, strlen( $key_prefix ) ) !== $key_prefix ) { - unset( $array[ $key ] ); - } - } - - return $array; - } - - - /** - * Returns false when value is empty or null. - * Only use with array_filter() or similar, as the naming can lead to confusion. - * - * @since 1.2.0 - * - * @param mixed $value Array value to check whether empty or null. - * - * @return bool false if empty or null, true otherwise. - */ - public static function array_filter_empty_null( $value ) { - if ( '' === $value || is_null( $value ) ) { - return false; - } - - return true; - } - -} diff --git a/wp-content/upgrade-temp-backup/plugins/audioigniter/languages/audioigniter.pot b/wp-content/upgrade-temp-backup/plugins/audioigniter/languages/audioigniter.pot deleted file mode 100644 index d8a00b96..00000000 --- a/wp-content/upgrade-temp-backup/plugins/audioigniter/languages/audioigniter.pot +++ /dev/null @@ -1,423 +0,0 @@ -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: AudioIgniter\n" -"POT-Creation-Date: 2024-11-19 13:49+0200\n" -"PO-Revision-Date: 2016-08-29 19:22+0300\n" -"Last-Translator: Anastis Sourgoutsidis \n" -"Language-Team: Anastis Sourgoutsidis \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -"X-Generator: Poedit 3.5\n" -"X-Poedit-Basepath: ..\n" -"X-Poedit-WPHeader: audioigniter.php\n" -"X-Poedit-SourceCharset: UTF-8\n" -"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" -"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;" -"_nx_noop:3c,1,2;__ngettext_noop:1,2\n" -"X-Poedit-Flags-xgettext: --add-comments=translators:\n" -"X-Poedit-SearchPath-0: .\n" -"X-Poedit-SearchPathExcluded-0: *.js\n" - -#. translators: %s is the track's title. -#: audioigniter.php:220 -#, php-format -msgid "Play %s" -msgstr "" - -#. translators: %s is the track's title. -#: audioigniter.php:222 -#, php-format -msgid "Pause %s" -msgstr "" - -#: audioigniter.php:223 -msgid "Previous track" -msgstr "" - -#: audioigniter.php:224 -msgid "Next track" -msgstr "" - -#: audioigniter.php:225 -msgid "Toggle track listing repeat" -msgstr "" - -#: audioigniter.php:226 -msgid "Toggle track repeat" -msgstr "" - -#: audioigniter.php:227 -msgid "Toggle track listing visibility" -msgstr "" - -#: audioigniter.php:228 -msgid "Buy this track" -msgstr "" - -#: audioigniter.php:229 -msgid "Download this track" -msgstr "" - -#: audioigniter.php:230 -msgid "Volume Up" -msgstr "" - -#: audioigniter.php:231 -msgid "Volume Down" -msgstr "" - -#: audioigniter.php:232 -msgid "Open track lyrics" -msgstr "" - -#: audioigniter.php:233 -msgid "Set playback rate" -msgstr "" - -#: audioigniter.php:234 -msgid "Skip forward" -msgstr "" - -#: audioigniter.php:235 -msgid "Skip backward" -msgstr "" - -#: audioigniter.php:236 -msgid "Shuffle" -msgstr "" - -#: audioigniter.php:249 -msgid "" -"Do you really want to remove all tracks? (This will not delete your audio " -"files)." -msgstr "" - -#: audioigniter.php:250 -msgid "Select or upload audio media" -msgstr "" - -#: audioigniter.php:251 -msgid "Select a cover image" -msgstr "" - -#: audioigniter.php:294 -msgctxt "post type general name" -msgid "Playlists" -msgstr "" - -#: audioigniter.php:295 audioigniter.php:311 -msgctxt "post type singular name" -msgid "Playlist" -msgstr "" - -#: audioigniter.php:296 -msgctxt "admin menu" -msgid "AudioIgniter" -msgstr "" - -#: audioigniter.php:297 -msgctxt "admin menu" -msgid "All Playlists" -msgstr "" - -#: audioigniter.php:298 -msgctxt "add new on admin bar" -msgid "Playlist" -msgstr "" - -#: audioigniter.php:299 audioigniter.php:300 -msgid "Add New Playlist" -msgstr "" - -#: audioigniter.php:301 -msgid "Edit Playlist" -msgstr "" - -#: audioigniter.php:302 -msgid "New Playlist" -msgstr "" - -#: audioigniter.php:303 -msgid "View Playlist" -msgstr "" - -#: audioigniter.php:304 -msgid "Search Playlists" -msgstr "" - -#: audioigniter.php:305 -msgid "No playlists found" -msgstr "" - -#: audioigniter.php:306 -msgid "No playlists found in the trash" -msgstr "" - -#: audioigniter.php:331 audioigniter.php:857 -msgid "Tracks" -msgstr "" - -#: audioigniter.php:332 -msgid "Settings" -msgstr "" - -#: audioigniter.php:333 audioigniter.php:1325 -msgid "Shortcode" -msgstr "" - -#: audioigniter.php:391 -msgid "AudioIgniter Logo" -msgstr "" - -#: audioigniter.php:400 -msgid "Upgrade to Pro" -msgstr "" - -#: audioigniter.php:424 -msgid "Support" -msgstr "" - -#: audioigniter.php:428 -msgid "Documentation" -msgstr "" - -#: audioigniter.php:432 -msgid "Rate this plugin" -msgstr "" - -#. translators: %s is a URL. -#: audioigniter.php:455 -#, php-format -msgid "" -"Thank you for creating with AudioIgniter" -msgstr "" - -#: audioigniter.php:501 -msgid "Toggle track visibility" -msgstr "" - -#: audioigniter.php:512 -msgid "Remove Cover Image" -msgstr "" - -#: audioigniter.php:525 -msgid "Upload Cover" -msgstr "" - -#: audioigniter.php:543 audioigniter.php:550 -msgid "Title" -msgstr "" - -#: audioigniter.php:558 audioigniter.php:565 -msgid "Artist" -msgstr "" - -#: audioigniter.php:574 audioigniter.php:581 -msgid "Buy link" -msgstr "" - -#: audioigniter.php:594 audioigniter.php:603 -msgid "Audio file or radio stream" -msgstr "" - -#: audioigniter.php:607 -msgid "Upload" -msgstr "" - -#: audioigniter.php:618 audioigniter.php:625 -msgid "Download URL" -msgstr "" - -#: audioigniter.php:639 -msgid "Remove Track" -msgstr "" - -#: audioigniter.php:654 -msgid "Add Track" -msgstr "" - -#: audioigniter.php:661 -msgid "Clear Playlist" -msgstr "" - -#: audioigniter.php:667 -msgid "Expand All" -msgstr "" - -#: audioigniter.php:670 -msgid "Collapse All" -msgstr "" - -#: audioigniter.php:709 -msgid "Player & Track listing" -msgstr "" - -#: audioigniter.php:714 -msgid "Player Type" -msgstr "" - -#: audioigniter.php:745 -msgid "Show track listing by default" -msgstr "" - -#: audioigniter.php:759 -msgid "Show track listing visibility toggle button" -msgstr "" - -#: audioigniter.php:773 -msgid "Reverse track order" -msgstr "" - -#: audioigniter.php:779 -msgid "Starting volume" -msgstr "" - -#: audioigniter.php:790 -msgid "0-100" -msgstr "" - -#: audioigniter.php:795 -msgid "Enter a value between 0 and 100 in increments of 10" -msgstr "" - -#: audioigniter.php:809 -msgid "Limit track listing height" -msgstr "" - -#: audioigniter.php:815 audioigniter.php:825 -msgid "Track listing height" -msgstr "" - -#: audioigniter.php:830 -msgid "Set a number of pixels" -msgstr "" - -#: audioigniter.php:836 -msgid "Maximum player width" -msgstr "" - -#: audioigniter.php:844 -msgid "Automatic width" -msgstr "" - -#: audioigniter.php:849 -#, no-php-format -msgid "" -"Set a number of pixels, or leave empty to automatically cover 100% of the " -"available area (recommended)." -msgstr "" - -#: audioigniter.php:869 -msgid "Show track numbers in tracklist" -msgstr "" - -#: audioigniter.php:883 -msgid "Show track covers in tracklist" -msgstr "" - -#: audioigniter.php:897 -msgid "Show active track's cover" -msgstr "" - -#: audioigniter.php:911 -msgid "Show artist names" -msgstr "" - -#: audioigniter.php:925 -msgid "Show track extra buttons (buy link, download button etc)" -msgstr "" - -#: audioigniter.php:939 -msgid "Open buy links in new window" -msgstr "" - -#: audioigniter.php:947 -msgid "Track & Track listing repeat" -msgstr "" - -#: audioigniter.php:959 -msgid "Repeat track listing enabled by default" -msgstr "" - -#: audioigniter.php:973 -msgid "Show track listing repeat toggle button" -msgstr "" - -#: audioigniter.php:990 -msgid "Show \"Powered by AudioIgniter\" link" -msgstr "" - -#: audioigniter.php:994 -msgid "" -"We've put a great deal of effort into building this plugin. If you feel like " -"it, let others know about it by enabling this option." -msgstr "" - -#: audioigniter.php:1014 -msgid "Grab the shortcode" -msgstr "" - -#: audioigniter.php:1048 -msgid "Full Player" -msgstr "" - -#: audioigniter.php:1053 -msgid "Simple Player" -msgstr "" - -#: audioigniter.php:1276 -msgid "ID doesn't match a playlist" -msgstr "" - -#: inc/class-audioigniter-admin-page-upsell.php:32 -msgctxt "settings tab title" -msgid "General" -msgstr "" - -#: inc/class-audioigniter-admin-page-upsell.php:47 -#: inc/class-audioigniter-admin-page-upsell.php:65 -msgid "AudioIgniter Settings" -msgstr "" - -#: inc/class-audioigniter-admin-page-upsell.php:47 -msgid "Go Pro!" -msgstr "" - -#: inc/class-audioigniter-admin-page-upsell.php:123 -msgid "Analytics" -msgstr "" - -#: inc/class-audioigniter-admin-page-upsell.php:127 -msgid "Enable analytics" -msgstr "" - -#: inc/class-audioigniter-admin-page-upsell.php:130 -msgid "" -"When disabled, no new events will be logged and processed into the database." -msgstr "" - -#. Plugin Name of the plugin/theme -msgid "AudioIgniter" -msgstr "" - -#. Plugin URI of the plugin/theme -msgid "https://www.cssigniter.com/plugins/audioigniter/" -msgstr "" - -#. Description of the plugin/theme -msgid "" -"AudioIgniter lets you create music playlists and embed them in your " -"WordPress posts, pages or custom post types and serve your audio content in " -"style!" -msgstr "" - -#. Author of the plugin/theme -msgid "The CSSIgniter Team" -msgstr "" - -#. Author URI of the plugin/theme -msgid "https://www.cssigniter.com" -msgstr "" diff --git a/wp-content/upgrade-temp-backup/plugins/audioigniter/player/build/app.js b/wp-content/upgrade-temp-backup/plugins/audioigniter/player/build/app.js deleted file mode 100644 index c8d99410..00000000 --- a/wp-content/upgrade-temp-backup/plugins/audioigniter/player/build/app.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see app.js.LICENSE.txt */ -(()=>{var e,t,n={3379:e=>{var t={animationIterationCount:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridRow:!0,gridColumn:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,stopOpacity:!0,strokeDashoffset:!0,strokeOpacity:!0,strokeWidth:!0};e.exports=function(e,n){return"number"!=typeof n||t[e]?n:n+"px"}},4184:(e,t)=>{var n;!function(){"use strict";var r={}.hasOwnProperty;function a(){for(var e=[],t=0;t{var r=n(7236),a=n(6189),o={float:"cssFloat"},i=n(3379);function l(e,t,n){var l=o[t];if(void 0===l&&(l=function(e){var t=a(e),n=r(t);return o[t]=o[e]=o[n]=n,n}(t)),l){if(void 0===n)return e.style[l];e.style[l]=i(l,n)}}function u(e,t){for(var n in t)t.hasOwnProperty(n)&&l(e,n,t[n])}function s(){2===arguments.length?"string"==typeof arguments[1]?arguments[0].style.cssText=arguments[1]:u(arguments[0],arguments[1]):l(arguments[0],arguments[1],arguments[2])}e.exports=s,e.exports.set=s,e.exports.get=function(e,t){return Array.isArray(t)?t.reduce((function(t,n){return t[n]=l(e,n||""),t}),{}):l(e,t||"")}},8875:(e,t,n)=>{var r;!function(){"use strict";var a=!("undefined"==typeof window||!window.document||!window.document.createElement),o={canUseDOM:a,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:a&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:a&&!!window.screen};void 0===(r=function(){return o}.call(t,n,t,e))||(e.exports=r)}()},139:e=>{"use strict";function t(e){return function(){return e}}var n=function(){};n.thatReturns=t,n.thatReturnsFalse=t(!1),n.thatReturnsTrue=t(!0),n.thatReturnsNull=t(null),n.thatReturnsThis=function(){return this},n.thatReturnsArgument=function(e){return e},e.exports=n},3759:e=>{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var u;if(void 0===t)u=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var s=[n,r,a,o,i,l],c=0;(u=new Error(t.replace(/%s/g,(function(){return s[c++]})))).name="Invariant Violation"}throw u.framesToPop=1,u}}},75:function(e){(function(){var t,n,r;"undefined"!=typeof performance&&null!==performance&&performance.now?e.exports=function(){return performance.now()}:"undefined"!=typeof process&&null!==process&&process.hrtime?(e.exports=function(){return(t()-r)/1e6},n=process.hrtime,r=(t=function(){var e;return 1e9*(e=n())[0]+e[1]})()):Date.now?(e.exports=function(){return Date.now()-r},r=Date.now()):(e.exports=function(){return(new Date).getTime()-r},r=(new Date).getTime())}).call(this)},7236:e=>{var t=null,n=["Webkit","Moz","O","ms"];e.exports=function(e){t||(t=document.createElement("div"));var r=t.style;if(e in r)return e;for(var a=e.charAt(0).toUpperCase()+e.slice(1),o=n.length;o>=0;o--){var i=n[o]+a;if(i in r)return i}return!1}},2703:(e,t,n)=>{"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4087:(e,t,n)=>{for(var r=n(75),a="undefined"==typeof window?n.g:window,o=["moz","webkit"],i="AnimationFrame",l=a["request"+i],u=a["cancel"+i]||a["cancelRequest"+i],s=0;!l&&s{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}},4608:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;t1?r-1:0),o=1;o0&&void 0!==arguments[0]?arguments[0]:0;this.view.scrollLeft=e}},{key:"scrollTop",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.view.scrollTop=e}},{key:"scrollToLeft",value:function(){this.view.scrollLeft=0}},{key:"scrollToTop",value:function(){this.view.scrollTop=0}},{key:"scrollToRight",value:function(){this.view.scrollLeft=this.view.scrollWidth}},{key:"scrollToBottom",value:function(){this.view.scrollTop=this.view.scrollHeight}},{key:"addListeners",value:function(){if("undefined"!=typeof document){var e=this.view,t=this.trackHorizontal,n=this.trackVertical,r=this.thumbHorizontal,a=this.thumbVertical;e.addEventListener("scroll",this.handleScroll),(0,f.default)()&&(t.addEventListener("mouseenter",this.handleTrackMouseEnter),t.addEventListener("mouseleave",this.handleTrackMouseLeave),t.addEventListener("mousedown",this.handleHorizontalTrackMouseDown),n.addEventListener("mouseenter",this.handleTrackMouseEnter),n.addEventListener("mouseleave",this.handleTrackMouseLeave),n.addEventListener("mousedown",this.handleVerticalTrackMouseDown),r.addEventListener("mousedown",this.handleHorizontalThumbMouseDown),a.addEventListener("mousedown",this.handleVerticalThumbMouseDown),window.addEventListener("resize",this.handleWindowResize))}}},{key:"removeListeners",value:function(){if("undefined"!=typeof document){var e=this.view,t=this.trackHorizontal,n=this.trackVertical,r=this.thumbHorizontal,a=this.thumbVertical;e.removeEventListener("scroll",this.handleScroll),(0,f.default)()&&(t.removeEventListener("mouseenter",this.handleTrackMouseEnter),t.removeEventListener("mouseleave",this.handleTrackMouseLeave),t.removeEventListener("mousedown",this.handleHorizontalTrackMouseDown),n.removeEventListener("mouseenter",this.handleTrackMouseEnter),n.removeEventListener("mouseleave",this.handleTrackMouseLeave),n.removeEventListener("mousedown",this.handleVerticalTrackMouseDown),r.removeEventListener("mousedown",this.handleHorizontalThumbMouseDown),a.removeEventListener("mousedown",this.handleVerticalThumbMouseDown),window.removeEventListener("resize",this.handleWindowResize),this.teardownDragging())}}},{key:"handleScroll",value:function(e){var t=this,n=this.props,r=n.onScroll,a=n.onScrollFrame;r&&r(e),this.update((function(e){var n=e.scrollLeft,r=e.scrollTop;t.viewScrollLeft=n,t.viewScrollTop=r,a&&a(e)})),this.detectScrolling()}},{key:"handleScrollStart",value:function(){var e=this.props.onScrollStart;e&&e(),this.handleScrollStartAutoHide()}},{key:"handleScrollStartAutoHide",value:function(){this.props.autoHide&&this.showTracks()}},{key:"handleScrollStop",value:function(){var e=this.props.onScrollStop;e&&e(),this.handleScrollStopAutoHide()}},{key:"handleScrollStopAutoHide",value:function(){this.props.autoHide&&this.hideTracks()}},{key:"handleWindowResize",value:function(){this.update()}},{key:"handleHorizontalTrackMouseDown",value:function(e){e.preventDefault();var t=e.target,n=e.clientX,r=t.getBoundingClientRect().left,a=this.getThumbHorizontalWidth(),o=Math.abs(r-n)-a/2;this.view.scrollLeft=this.getScrollLeftForOffset(o)}},{key:"handleVerticalTrackMouseDown",value:function(e){e.preventDefault();var t=e.target,n=e.clientY,r=t.getBoundingClientRect().top,a=this.getThumbVerticalHeight(),o=Math.abs(r-n)-a/2;this.view.scrollTop=this.getScrollTopForOffset(o)}},{key:"handleHorizontalThumbMouseDown",value:function(e){e.preventDefault(),this.handleDragStart(e);var t=e.target,n=e.clientX,r=t.offsetWidth,a=t.getBoundingClientRect().left;this.prevPageX=r-(n-a)}},{key:"handleVerticalThumbMouseDown",value:function(e){e.preventDefault(),this.handleDragStart(e);var t=e.target,n=e.clientY,r=t.offsetHeight,a=t.getBoundingClientRect().top;this.prevPageY=r-(n-a)}},{key:"setupDragging",value:function(){(0,l.default)(document.body,m.disableSelectStyle),document.addEventListener("mousemove",this.handleDrag),document.addEventListener("mouseup",this.handleDragEnd),document.onselectstart=d.default}},{key:"teardownDragging",value:function(){(0,l.default)(document.body,m.disableSelectStyleReset),document.removeEventListener("mousemove",this.handleDrag),document.removeEventListener("mouseup",this.handleDragEnd),document.onselectstart=void 0}},{key:"handleDragStart",value:function(e){this.dragging=!0,e.stopImmediatePropagation(),this.setupDragging()}},{key:"handleDrag",value:function(e){if(this.prevPageX){var t=e.clientX,n=-this.trackHorizontal.getBoundingClientRect().left+t-(this.getThumbHorizontalWidth()-this.prevPageX);this.view.scrollLeft=this.getScrollLeftForOffset(n)}if(this.prevPageY){var r=e.clientY,a=-this.trackVertical.getBoundingClientRect().top+r-(this.getThumbVerticalHeight()-this.prevPageY);this.view.scrollTop=this.getScrollTopForOffset(a)}return!1}},{key:"handleDragEnd",value:function(){this.dragging=!1,this.prevPageX=this.prevPageY=0,this.teardownDragging(),this.handleDragEndAutoHide()}},{key:"handleDragEndAutoHide",value:function(){this.props.autoHide&&this.hideTracks()}},{key:"handleTrackMouseEnter",value:function(){this.trackMouseOver=!0,this.handleTrackMouseEnterAutoHide()}},{key:"handleTrackMouseEnterAutoHide",value:function(){this.props.autoHide&&this.showTracks()}},{key:"handleTrackMouseLeave",value:function(){this.trackMouseOver=!1,this.handleTrackMouseLeaveAutoHide()}},{key:"handleTrackMouseLeaveAutoHide",value:function(){this.props.autoHide&&this.hideTracks()}},{key:"showTracks",value:function(){clearTimeout(this.hideTracksTimeout),(0,l.default)(this.trackHorizontal,{opacity:1}),(0,l.default)(this.trackVertical,{opacity:1})}},{key:"hideTracks",value:function(){var e=this;if(!this.dragging&&!this.scrolling&&!this.trackMouseOver){var t=this.props.autoHideTimeout;clearTimeout(this.hideTracksTimeout),this.hideTracksTimeout=setTimeout((function(){(0,l.default)(e.trackHorizontal,{opacity:0}),(0,l.default)(e.trackVertical,{opacity:0})}),t)}}},{key:"detectScrolling",value:function(){var e=this;this.scrolling||(this.scrolling=!0,this.handleScrollStart(),this.detectScrollingInterval=setInterval((function(){e.lastViewScrollLeft===e.viewScrollLeft&&e.lastViewScrollTop===e.viewScrollTop&&(clearInterval(e.detectScrollingInterval),e.scrolling=!1,e.handleScrollStop()),e.lastViewScrollLeft=e.viewScrollLeft,e.lastViewScrollTop=e.viewScrollTop}),100))}},{key:"raf",value:function(e){var t=this;this.requestFrame&&i.default.cancel(this.requestFrame),this.requestFrame=(0,i.default)((function(){t.requestFrame=void 0,e()}))}},{key:"update",value:function(e){var t=this;this.raf((function(){return t._update(e)}))}},{key:"_update",value:function(e){var t=this.props,n=t.onUpdate,r=t.hideTracksWhenNotNeeded,a=this.getValues();if((0,f.default)()){var o=a.scrollLeft,i=a.clientWidth,u=a.scrollWidth,s=(0,p.default)(this.trackHorizontal),c=this.getThumbHorizontalWidth(),d={width:c,transform:"translateX("+o/(u-i)*(s-c)+"px)"},m=a.scrollTop,y=a.clientHeight,v=a.scrollHeight,g=(0,h.default)(this.trackVertical),b=this.getThumbVerticalHeight(),k={height:b,transform:"translateY("+m/(v-y)*(g-b)+"px)"};if(r){var w={visibility:u>i?"visible":"hidden"},S={visibility:v>y?"visible":"hidden"};(0,l.default)(this.trackHorizontal,w),(0,l.default)(this.trackVertical,S)}(0,l.default)(this.thumbHorizontal,d),(0,l.default)(this.thumbVertical,k)}n&&n(a),"function"==typeof e&&e(a)}},{key:"render",value:function(){var e=this,t=(0,f.default)(),n=this.props,a=(n.onScroll,n.onScrollFrame,n.onScrollStart,n.onScrollStop,n.onUpdate,n.renderView),o=n.renderTrackHorizontal,i=n.renderTrackVertical,l=n.renderThumbHorizontal,s=n.renderThumbVertical,d=n.tagName,p=(n.hideTracksWhenNotNeeded,n.autoHide),h=(n.autoHideTimeout,n.autoHideDuration),y=(n.thumbSize,n.thumbMinSize,n.universal),v=n.autoHeight,g=n.autoHeightMin,b=n.autoHeightMax,k=n.style,w=n.children,S=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(n,["onScroll","onScrollFrame","onScrollStart","onScrollStop","onUpdate","renderView","renderTrackHorizontal","renderTrackVertical","renderThumbHorizontal","renderThumbVertical","tagName","hideTracksWhenNotNeeded","autoHide","autoHideTimeout","autoHideDuration","thumbSize","thumbMinSize","universal","autoHeight","autoHeightMin","autoHeightMax","style","children"]),_=this.state.didMountUniversal,T=r({},m.containerStyleDefault,v&&r({},m.containerStyleAutoHeight,{minHeight:g,maxHeight:b}),k),E=r({},m.viewStyleDefault,{marginRight:t?-t:0,marginBottom:t?-t:0},v&&r({},m.viewStyleAutoHeight,{minHeight:(0,c.default)(g)?"calc("+g+" + "+t+"px)":g+t,maxHeight:(0,c.default)(b)?"calc("+b+" + "+t+"px)":b+t}),v&&y&&!_&&{minHeight:g,maxHeight:b},y&&!_&&m.viewStyleUniversalInitial),O={transition:"opacity "+h+"ms",opacity:0},P=r({},m.trackHorizontalStyleDefault,p&&O,(!t||y&&!_)&&{display:"none"}),C=r({},m.trackVerticalStyleDefault,p&&O,(!t||y&&!_)&&{display:"none"});return(0,u.createElement)(d,r({},S,{style:T,ref:function(t){e.container=t}}),[(0,u.cloneElement)(a({style:E}),{key:"view",ref:function(t){e.view=t}},w),(0,u.cloneElement)(o({style:P}),{key:"trackHorizontal",ref:function(t){e.trackHorizontal=t}},(0,u.cloneElement)(l({style:m.thumbHorizontalStyleDefault}),{ref:function(t){e.thumbHorizontal=t}})),(0,u.cloneElement)(i({style:C}),{key:"trackVertical",ref:function(t){e.trackVertical=t}},(0,u.cloneElement)(s({style:m.thumbVerticalStyleDefault}),{ref:function(t){e.thumbVertical=t}}))])}}]),t}(u.Component);t.default=k,k.propTypes={onScroll:s.default.func,onScrollFrame:s.default.func,onScrollStart:s.default.func,onScrollStop:s.default.func,onUpdate:s.default.func,renderView:s.default.func,renderTrackHorizontal:s.default.func,renderTrackVertical:s.default.func,renderThumbHorizontal:s.default.func,renderThumbVertical:s.default.func,tagName:s.default.string,thumbSize:s.default.number,thumbMinSize:s.default.number,hideTracksWhenNotNeeded:s.default.bool,autoHide:s.default.bool,autoHideTimeout:s.default.number,autoHideDuration:s.default.number,autoHeight:s.default.bool,autoHeightMin:s.default.oneOfType([s.default.number,s.default.string]),autoHeightMax:s.default.oneOfType([s.default.number,s.default.string]),universal:s.default.bool,style:s.default.object,children:s.default.node},k.defaultProps={renderView:y.renderViewDefault,renderTrackHorizontal:y.renderTrackHorizontalDefault,renderTrackVertical:y.renderTrackVerticalDefault,renderThumbHorizontal:y.renderThumbHorizontalDefault,renderThumbVertical:y.renderThumbVerticalDefault,tagName:"div",thumbMinSize:30,hideTracksWhenNotNeeded:!1,autoHide:!1,autoHideTimeout:1e3,autoHideDuration:200,autoHeight:!1,autoHeightMin:0,autoHeightMax:200,universal:!1}},7679:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.containerStyleDefault={position:"relative",overflow:"hidden",width:"100%",height:"100%"},t.containerStyleAutoHeight={height:"auto"},t.viewStyleDefault={position:"absolute",top:0,left:0,right:0,bottom:0,overflow:"scroll",WebkitOverflowScrolling:"touch"},t.viewStyleAutoHeight={position:"relative",top:void 0,left:void 0,right:void 0,bottom:void 0},t.viewStyleUniversalInitial={overflow:"hidden",marginRight:0,marginBottom:0},t.trackHorizontalStyleDefault={position:"absolute",height:6},t.trackVerticalStyleDefault={position:"absolute",width:6},t.thumbHorizontalStyleDefault={position:"relative",display:"block",height:"100%"},t.thumbVerticalStyleDefault={position:"relative",display:"block",width:"100%"},t.disableSelectStyle={userSelect:"none"},t.disableSelectStyleReset={userSelect:""}},1298:(e,t,n)=>{"use strict";t.$B=void 0;var r,a=n(4608),o=(r=a)&&r.__esModule?r:{default:r};o.default,t.$B=o.default},6839:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.clientHeight,n=getComputedStyle(e),r=n.paddingTop,a=n.paddingBottom;return t-parseFloat(r)-parseFloat(a)}},4749:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.clientWidth,n=getComputedStyle(e),r=n.paddingLeft,a=n.paddingRight;return t-parseFloat(r)-parseFloat(a)}},3305:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){if(!1!==i)return i;if("undefined"!=typeof document){var e=document.createElement("div");(0,o.default)(e,{width:100,height:100,position:"absolute",top:-9999,overflow:"scroll",MsOverflowStyle:"scrollbar"}),document.body.appendChild(e),i=e.offsetWidth-e.clientWidth,document.body.removeChild(e)}else i=0;return i||0};var r,a=n(3879),o=(r=a)&&r.__esModule?r:{default:r};var i=!1},5205:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return"string"==typeof e}},8669:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){return!1}},2496:(e,t,n)=>{"use strict";var r=n(139),a=n(3759),o=n(7288);e.exports=function(){function e(e,t,n,r,i,l){l!==o&&a(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types")}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t};return n.checkPropTypes=r,n.PropTypes=n,n}},2196:(e,t,n)=>{e.exports=n(2496)()},7288:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),a=n(3840);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n
-HTML; - - return $login_button; - } - - /** - * Removes the login form from the HTML DOM - * - * @return void - */ - public function remove_login_form() { - ?> - - - * @copyright 2015-2023 daggerhart - * @license http://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ - */ - -/** - * OpenID_Connect_Generic_Option_Logger class. - * - * Simple class for logging messages to the options table. - * - * @package OpenID_Connect_Generic - * @category Logging - */ -class OpenID_Connect_Generic_Option_Logger { - - /** - * Thw WordPress option name/key. - * - * @var string - */ - const OPTION_NAME = 'openid-connect-generic-logs'; - - /** - * The default message type. - * - * @var string - */ - private $default_message_type = 'none'; - - /** - * The number of items to keep in the log. - * - * @var int - */ - private $log_limit = 1000; - - /** - * Whether or not logging is enabled. - * - * @var bool - */ - private $logging_enabled = true; - - /** - * Internal cache of logs. - * - * @var array - */ - private $logs; - - /** - * Setup the logger according to the needs of the instance. - * - * @param string|null $default_message_type The log message type. - * @param bool|TRUE|null $logging_enabled Whether logging is enabled. - * @param int|null $log_limit The log entry limit. - */ - public function __construct( $default_message_type = null, $logging_enabled = null, $log_limit = null ) { - if ( ! is_null( $default_message_type ) ) { - $this->default_message_type = $default_message_type; - } - if ( ! is_null( $logging_enabled ) ) { - $this->logging_enabled = boolval( $logging_enabled ); - } - if ( ! is_null( $log_limit ) ) { - $this->log_limit = intval( $log_limit ); - } - } - - /** - * Save an array of data to the logs. - * - * @param string|array|WP_Error $data The log message data. - * @param string|null $type The log message type. - * @param float|null $processing_time Optional event processing time. - * @param int|null $time The log message timestamp (default: time()). - * @param int|null $user_ID The current WordPress user ID (default: get_current_user_id()). - * @param string|null $request_uri The related HTTP request URI (default: $_SERVER['REQUEST_URI']|'Unknown'). - * - * @return bool - */ - public function log( $data, $type = null, $processing_time = null, $time = null, $user_ID = null, $request_uri = null ) { - if ( boolval( $this->logging_enabled ) ) { - $logs = $this->get_logs(); - $logs[] = $this->make_message( $data, $type, $processing_time, $time, $user_ID, $request_uri ); - $logs = $this->upkeep_logs( $logs ); - return $this->save_logs( $logs ); - } - - return false; - } - - /** - * Retrieve all log messages. - * - * @return array - */ - public function get_logs() { - if ( empty( $this->logs ) ) { - $this->logs = get_option( self::OPTION_NAME, array() ); - } - - // Call the upkeep_logs function to give the appearance that logs have been reduced to the $this->log_limit. - // The logs are actually limited during a logging action but the logger isn't available during a simple settings update. - return $this->upkeep_logs( $this->logs ); - } - - /** - * Get the name of the option where this log is stored. - * - * @return string - */ - public function get_option_name() { - return self::OPTION_NAME; - } - - /** - * Create a message array containing the data and other information. - * - * @param string|array|WP_Error $data The log message data. - * @param string|null $type The log message type. - * @param float|null $processing_time Optional event processing time. - * @param int|null $time The log message timestamp (default: time()). - * @param int|null $user_ID The current WordPress user ID (default: get_current_user_id()). - * @param string|null $request_uri The related HTTP request URI (default: $_SERVER['REQUEST_URI']|'Unknown'). - * - * @return array - */ - private function make_message( $data, $type, $processing_time, $time, $user_ID, $request_uri ) { - // Determine the type of message. - if ( empty( $type ) ) { - $type = $this->default_message_type; - - if ( is_array( $data ) && isset( $data['type'] ) ) { - $type = $data['type']; - unset( $data['type'] ); - } - - if ( is_wp_error( $data ) ) { - $type = $data->get_error_code(); - $data = $data->get_error_message( $type ); - } - } - - if ( empty( $request_uri ) ) { - $request_uri = ( ! empty( $_SERVER['REQUEST_URI'] ) ) ? esc_url_raw( wp_unslash( $_SERVER['REQUEST_URI'] ) ) : 'Unknown'; - $request_uri = preg_replace( '/code=([^&]+)/i', 'code=', $request_uri ); - } - - // Construct the message. - $message = array( - 'type' => $type, - 'time' => ! empty( $time ) ? $time : time(), - 'user_ID' => ! is_null( $user_ID ) ? $user_ID : get_current_user_id(), - 'uri' => $request_uri, - 'data' => $data, - 'processing_time' => $processing_time, - ); - - return $message; - } - - /** - * Keep the log count under the limit. - * - * @param array $logs The plugin logs. - * - * @return array - */ - private function upkeep_logs( $logs ) { - $items_to_remove = count( $logs ) - $this->log_limit; - - if ( $items_to_remove > 0 ) { - // Only keep the last $log_limit messages from the end. - $logs = array_slice( $logs, $items_to_remove ); - } - - return $logs; - } - - /** - * Save the log messages. - * - * @param array $logs The array of log messages. - * - * @return bool - */ - private function save_logs( $logs ) { - // Save the logs. - $this->logs = $logs; - return update_option( self::OPTION_NAME, $logs, false ); - } - - /** - * Clear all log messages. - * - * @return void - */ - public function clear_logs() { - $this->save_logs( array() ); - } - - /** - * Get a simple html table of all the logs. - * - * @param array $logs The array of log messages. - * - * @return string - */ - public function get_logs_table( $logs = array() ) { - if ( empty( $logs ) ) { - $logs = $this->get_logs(); - } - $logs = array_reverse( $logs ); - - ini_set( 'xdebug.var_display_max_depth', '-1' ); - - ob_start(); - ?> - - - - - - - - - - - - - -
-
- - -
-
- - -
-
- - user_login : '0' ); ?> -
-
- - -
-
- - -
-
- - * @copyright 2015-2023 daggerhart - * @license http://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ - */ - -/** - * OpenId_Connect_Generic_Option_Settings class. - * - * WordPress options handling. - * - * @package OpenID_Connect_Generic - * @category Settings - * - * Legacy Settings: - * - * @property string $ep_login The login endpoint. - * @property string $ep_token The token endpoint. - * @property string $ep_userinfo The userinfo endpoint. - * - * OAuth Client Settings: - * - * @property string $login_type How the client (login form) should provide login options. - * @property string $client_id The ID the client will be recognized as when connecting the to Identity provider server. - * @property string $client_secret The secret key the IDP server expects from the client. - * @property string $scope The list of scopes this client should access. - * @property string $endpoint_login The IDP authorization endpoint URL. - * @property string $endpoint_userinfo The IDP User information endpoint URL. - * @property string $endpoint_token The IDP token validation endpoint URL. - * @property string $endpoint_end_session The IDP logout endpoint URL. - * @property string $acr_values The Authentication contract as defined on the IDP. - * - * Non-standard Settings: - * - * @property bool $no_sslverify The flag to enable/disable SSL verification during authorization. - * @property int $http_request_timeout The timeout for requests made to the IDP. Default value is 5. - * @property string $identity_key The key in the user claim array to find the user's identification data. - * @property string $nickname_key The key in the user claim array to find the user's nickname. - * @property string $email_format The key(s) in the user claim array to formulate the user's email address. - * @property string $displayname_format The key(s) in the user claim array to formulate the user's display name. - * @property bool $identify_with_username The flag which indicates how the user's identity will be determined. - * @property int $state_time_limit The valid time limit of the state, in seconds. Defaults to 180 seconds. - * - * Plugin Settings: - * - * @property bool $enforce_privacy The flag to indicates whether a user us required to be authenticated to access the site. - * @property bool $alternate_redirect_uri The flag to indicate whether to use the alternative redirect URI. - * @property bool $token_refresh_enable The flag whether to support refresh tokens by IDPs. - * @property bool $link_existing_users The flag to indicate whether to link to existing WordPress-only accounts or greturn an error. - * @property bool $create_if_does_not_exist The flag to indicate whether to create new users or not. - * @property bool $redirect_user_back The flag to indicate whether to redirect the user back to the page on which they started. - * @property bool $redirect_on_logout The flag to indicate whether to redirect to the login screen on session expiration. - * @property bool $enable_logging The flag to enable/disable logging. - * @property int $log_limit The maximum number of log entries to keep. - */ -class OpenID_Connect_Generic_Option_Settings { - - /** - * WordPress option name/key. - * - * @var string - */ - const OPTION_NAME = 'openid_connect_generic_settings'; - - /** - * Stored option values array. - * - * @var array - */ - private $values; - - /** - * Default plugin settings values. - * - * @var array - */ - private $default_settings; - - /** - * List of settings that can be defined by environment variables. - * - * @var array - */ - private $environment_settings = array( - 'client_id' => 'OIDC_CLIENT_ID', - 'client_secret' => 'OIDC_CLIENT_SECRET', - 'endpoint_end_session' => 'OIDC_ENDPOINT_LOGOUT_URL', - 'endpoint_login' => 'OIDC_ENDPOINT_LOGIN_URL', - 'endpoint_token' => 'OIDC_ENDPOINT_TOKEN_URL', - 'endpoint_userinfo' => 'OIDC_ENDPOINT_USERINFO_URL', - 'login_type' => 'OIDC_LOGIN_TYPE', - 'scope' => 'OIDC_CLIENT_SCOPE', - 'create_if_does_not_exist' => 'OIDC_CREATE_IF_DOES_NOT_EXIST', - 'enforce_privacy' => 'OIDC_ENFORCE_PRIVACY', - 'link_existing_users' => 'OIDC_LINK_EXISTING_USERS', - 'redirect_on_logout' => 'OIDC_REDIRECT_ON_LOGOUT', - 'redirect_user_back' => 'OIDC_REDIRECT_USER_BACK', - 'acr_values' => 'OIDC_ACR_VALUES', - 'enable_logging' => 'OIDC_ENABLE_LOGGING', - 'log_limit' => 'OIDC_LOG_LIMIT', - ); - - /** - * The class constructor. - * - * @param array $default_settings The default plugin settings values. - * @param bool $granular_defaults The granular defaults. - */ - public function __construct( $default_settings = array(), $granular_defaults = true ) { - $this->default_settings = $default_settings; - $this->values = array(); - - $this->values = (array) get_option( self::OPTION_NAME, $this->default_settings ); - - // For each defined environment variable/constant be sure the settings key is set. - foreach ( $this->environment_settings as $key => $constant ) { - if ( defined( $constant ) ) { - $this->__set( $key, constant( $constant ) ); - } - } - - if ( $granular_defaults ) { - $this->values = array_replace_recursive( $this->default_settings, $this->values ); - } - } - - /** - * Magic getter for settings. - * - * @param string $key The array key/option name. - * - * @return mixed - */ - public function __get( $key ) { - if ( isset( $this->values[ $key ] ) ) { - return $this->values[ $key ]; - } - } - - /** - * Magic setter for settings. - * - * @param string $key The array key/option name. - * @param mixed $value The option value. - * - * @return void - */ - public function __set( $key, $value ) { - $this->values[ $key ] = $value; - } - - /** - * Magic method to check is an attribute isset. - * - * @param string $key The array key/option name. - * - * @return bool - */ - public function __isset( $key ) { - return isset( $this->values[ $key ] ); - } - - /** - * Magic method to clear an attribute. - * - * @param string $key The array key/option name. - * - * @return void - */ - public function __unset( $key ) { - unset( $this->values[ $key ] ); - } - - /** - * Get the plugin settings array. - * - * @return array - */ - public function get_values() { - return $this->values; - } - - /** - * Get the plugin WordPress options name. - * - * @return string - */ - public function get_option_name() { - return self::OPTION_NAME; - } - - /** - * Save the plugin options to the WordPress options table. - * - * @return void - */ - public function save() { - - // For each defined environment variable/constant be sure it isn't saved to the database. - foreach ( $this->environment_settings as $key => $constant ) { - if ( defined( $constant ) ) { - $this->__unset( $key ); - } - } - - update_option( self::OPTION_NAME, $this->values ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/includes/openid-connect-generic-settings-page.php b/wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/includes/openid-connect-generic-settings-page.php deleted file mode 100644 index 9543dd26..00000000 --- a/wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/includes/openid-connect-generic-settings-page.php +++ /dev/null @@ -1,603 +0,0 @@ - - * @copyright 2015-2023 daggerhart - * @license http://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ - */ - -/** - * OpenID_Connect_Generic_Settings_Page class. - * - * Admin settings page. - * - * @package OpenID_Connect_Generic - * @category Settings - */ -class OpenID_Connect_Generic_Settings_Page { - - /** - * Local copy of the settings provided by the base plugin. - * - * @var OpenID_Connect_Generic_Option_Settings - */ - private $settings; - - /** - * Instance of the plugin logger. - * - * @var OpenID_Connect_Generic_Option_Logger - */ - private $logger; - - /** - * The controlled list of settings & associated defined during - * construction for i18n reasons. - * - * @var array - */ - private $settings_fields = array(); - - /** - * Options page slug. - * - * @var string - */ - private $options_page_name = 'openid-connect-generic-settings'; - - /** - * Options page settings group name. - * - * @var string - */ - private $settings_field_group; - - /** - * Settings page class constructor. - * - * @param OpenID_Connect_Generic_Option_Settings $settings The plugin settings object. - * @param OpenID_Connect_Generic_Option_Logger $logger The plugin logging class object. - */ - public function __construct( OpenID_Connect_Generic_Option_Settings $settings, OpenID_Connect_Generic_Option_Logger $logger ) { - - $this->settings = $settings; - $this->logger = $logger; - $this->settings_field_group = $this->settings->get_option_name() . '-group'; - - $fields = $this->get_settings_fields(); - - // Some simple pre-processing. - foreach ( $fields as $key => &$field ) { - $field['key'] = $key; - $field['name'] = $this->settings->get_option_name() . '[' . $key . ']'; - } - - // Allow alterations of the fields. - $this->settings_fields = $fields; - } - - /** - * Hook the settings page into WordPress. - * - * @param OpenID_Connect_Generic_Option_Settings $settings A plugin settings object instance. - * @param OpenID_Connect_Generic_Option_Logger $logger A plugin logger object instance. - * - * @return void - */ - public static function register( OpenID_Connect_Generic_Option_Settings $settings, OpenID_Connect_Generic_Option_Logger $logger ) { - $settings_page = new self( $settings, $logger ); - - // Add our options page the the admin menu. - add_action( 'admin_menu', array( $settings_page, 'admin_menu' ) ); - - // Register our settings. - add_action( 'admin_init', array( $settings_page, 'admin_init' ) ); - } - - /** - * Implements hook admin_menu to add our options/settings page to the - * dashboard menu. - * - * @return void - */ - public function admin_menu() { - add_options_page( - __( 'OpenID Connect - Generic Client', 'daggerhart-openid-connect-generic' ), - __( 'OpenID Connect Client', 'daggerhart-openid-connect-generic' ), - 'manage_options', - $this->options_page_name, - array( $this, 'settings_page' ) - ); - } - - /** - * Implements hook admin_init to register our settings. - * - * @return void - */ - public function admin_init() { - register_setting( - $this->settings_field_group, - $this->settings->get_option_name(), - array( - $this, - 'sanitize_settings', - ) - ); - - add_settings_section( - 'client_settings', - __( 'Client Settings', 'daggerhart-openid-connect-generic' ), - array( $this, 'client_settings_description' ), - $this->options_page_name - ); - - add_settings_section( - 'user_settings', - __( 'WordPress User Settings', 'daggerhart-openid-connect-generic' ), - array( $this, 'user_settings_description' ), - $this->options_page_name - ); - - add_settings_section( - 'authorization_settings', - __( 'Authorization Settings', 'daggerhart-openid-connect-generic' ), - array( $this, 'authorization_settings_description' ), - $this->options_page_name - ); - - add_settings_section( - 'log_settings', - __( 'Log Settings', 'daggerhart-openid-connect-generic' ), - array( $this, 'log_settings_description' ), - $this->options_page_name - ); - - // Preprocess fields and add them to the page. - foreach ( $this->settings_fields as $key => $field ) { - // Make sure each key exists in the settings array. - if ( ! isset( $this->settings->{ $key } ) ) { - $this->settings->{ $key } = null; - } - - // Determine appropriate output callback. - switch ( $field['type'] ) { - case 'checkbox': - $callback = 'do_checkbox'; - break; - - case 'select': - $callback = 'do_select'; - break; - - case 'text': - default: - $callback = 'do_text_field'; - break; - } - - // Add the field. - add_settings_field( - $key, - $field['title'], - array( $this, $callback ), - $this->options_page_name, - $field['section'], - $field - ); - } - } - - /** - * Get the plugin settings fields definition. - * - * @return array - */ - private function get_settings_fields() { - - /** - * Simple settings fields have: - * - * - title - * - description - * - type ( checkbox | text | select ) - * - section - settings/option page section ( client_settings | authorization_settings ) - * - example (optional example will appear beneath description and be wrapped in ) - */ - $fields = array( - 'login_type' => array( - 'title' => __( 'Login Type', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'Select how the client (login form) should provide login options.', 'daggerhart-openid-connect-generic' ), - 'type' => 'select', - 'options' => array( - 'button' => __( 'OpenID Connect button on login form', 'daggerhart-openid-connect-generic' ), - 'auto' => __( 'Auto Login - SSO', 'daggerhart-openid-connect-generic' ), - ), - 'disabled' => defined( 'OIDC_LOGIN_TYPE' ), - 'section' => 'client_settings', - ), - 'client_id' => array( - 'title' => __( 'Client ID', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'The ID this client will be recognized as when connecting the to Identity provider server.', 'daggerhart-openid-connect-generic' ), - 'example' => 'my-wordpress-client-id', - 'type' => 'text', - 'disabled' => defined( 'OIDC_CLIENT_ID' ), - 'section' => 'client_settings', - ), - 'client_secret' => array( - 'title' => __( 'Client Secret Key', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'Arbitrary secret key the server expects from this client. Can be anything, but should be very unique.', 'daggerhart-openid-connect-generic' ), - 'type' => 'text', - 'disabled' => defined( 'OIDC_CLIENT_SECRET' ), - 'section' => 'client_settings', - ), - 'scope' => array( - 'title' => __( 'OpenID Scope', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'Space separated list of scopes this client should access.', 'daggerhart-openid-connect-generic' ), - 'example' => 'email profile openid offline_access', - 'type' => 'text', - 'disabled' => defined( 'OIDC_CLIENT_SCOPE' ), - 'section' => 'client_settings', - ), - 'endpoint_login' => array( - 'title' => __( 'Login Endpoint URL', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'Identify provider authorization endpoint.', 'daggerhart-openid-connect-generic' ), - 'example' => 'https://example.com/oauth2/authorize', - 'type' => 'text', - 'disabled' => defined( 'OIDC_ENDPOINT_LOGIN_URL' ), - 'section' => 'client_settings', - ), - 'endpoint_userinfo' => array( - 'title' => __( 'Userinfo Endpoint URL', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'Identify provider User information endpoint.', 'daggerhart-openid-connect-generic' ), - 'example' => 'https://example.com/oauth2/UserInfo', - 'type' => 'text', - 'disabled' => defined( 'OIDC_ENDPOINT_USERINFO_URL' ), - 'section' => 'client_settings', - ), - 'endpoint_token' => array( - 'title' => __( 'Token Validation Endpoint URL', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'Identify provider token endpoint.', 'daggerhart-openid-connect-generic' ), - 'example' => 'https://example.com/oauth2/token', - 'type' => 'text', - 'disabled' => defined( 'OIDC_ENDPOINT_TOKEN_URL' ), - 'section' => 'client_settings', - ), - 'endpoint_end_session' => array( - 'title' => __( 'End Session Endpoint URL', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'Identify provider logout endpoint.', 'daggerhart-openid-connect-generic' ), - 'example' => 'https://example.com/oauth2/logout', - 'type' => 'text', - 'disabled' => defined( 'OIDC_ENDPOINT_LOGOUT_URL' ), - 'section' => 'client_settings', - ), - 'acr_values' => array( - 'title' => __( 'ACR values', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'Use a specific defined authentication contract from the IDP - optional.', 'daggerhart-openid-connect-generic' ), - 'type' => 'text', - 'disabled' => defined( 'OIDC_ACR_VALUES' ), - 'section' => 'client_settings', - ), - 'identity_key' => array( - 'title' => __( 'Identity Key', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'Where in the user claim array to find the user\'s identification data. Possible standard values: preferred_username, name, or sub. If you\'re having trouble, use "sub".', 'daggerhart-openid-connect-generic' ), - 'example' => 'preferred_username', - 'type' => 'text', - 'section' => 'client_settings', - ), - 'no_sslverify' => array( - 'title' => __( 'Disable SSL Verify', 'daggerhart-openid-connect-generic' ), - // translators: %1$s HTML tags for layout/styles, %2$s closing HTML tag for styles. - 'description' => sprintf( __( 'Do not require SSL verification during authorization. The OAuth extension uses curl to make the request. By default CURL will generally verify the SSL certificate to see if its valid an issued by an accepted CA. This setting disabled that verification.%1$sNot recommended for production sites.%2$s', 'daggerhart-openid-connect-generic' ), '
', '' ), - 'type' => 'checkbox', - 'section' => 'client_settings', - ), - 'http_request_timeout' => array( - 'title' => __( 'HTTP Request Timeout', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'Set the timeout for requests made to the IDP. Default value is 5.', 'daggerhart-openid-connect-generic' ), - 'example' => 30, - 'type' => 'text', - 'section' => 'client_settings', - ), - 'enforce_privacy' => array( - 'title' => __( 'Enforce Privacy', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'Require users be logged in to see the site.', 'daggerhart-openid-connect-generic' ), - 'type' => 'checkbox', - 'disabled' => defined( 'OIDC_ENFORCE_PRIVACY' ), - 'section' => 'authorization_settings', - ), - 'alternate_redirect_uri' => array( - 'title' => __( 'Alternate Redirect URI', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'Provide an alternative redirect route. Useful if your server is causing issues with the default admin-ajax method. You must flush rewrite rules after changing this setting. This can be done by saving the Permalinks settings page.', 'daggerhart-openid-connect-generic' ), - 'type' => 'checkbox', - 'section' => 'authorization_settings', - ), - 'nickname_key' => array( - 'title' => __( 'Nickname Key', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'Where in the user claim array to find the user\'s nickname. Possible standard values: preferred_username, name, or sub.', 'daggerhart-openid-connect-generic' ), - 'example' => 'preferred_username', - 'type' => 'text', - 'section' => 'client_settings', - ), - 'email_format' => array( - 'title' => __( 'Email Formatting', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'String from which the user\'s email address is built. Specify "{email}" as long as the user claim contains an email claim.', 'daggerhart-openid-connect-generic' ), - 'example' => '{email}', - 'type' => 'text', - 'section' => 'client_settings', - ), - 'displayname_format' => array( - 'title' => __( 'Display Name Formatting', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'String from which the user\'s display name is built.', 'daggerhart-openid-connect-generic' ), - 'example' => '{given_name} {family_name}', - 'type' => 'text', - 'section' => 'client_settings', - ), - 'identify_with_username' => array( - 'title' => __( 'Identify with User Name', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'If checked, the user\'s identity will be determined by the user name instead of the email address.', 'daggerhart-openid-connect-generic' ), - 'type' => 'checkbox', - 'section' => 'client_settings', - ), - 'state_time_limit' => array( - 'title' => __( 'State time limit', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'State valid time in seconds. Defaults to 180', 'daggerhart-openid-connect-generic' ), - 'type' => 'number', - 'section' => 'client_settings', - ), - 'token_refresh_enable' => array( - 'title' => __( 'Enable Refresh Token', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'If checked, support refresh tokens used to obtain access tokens from supported IDPs.', 'daggerhart-openid-connect-generic' ), - 'type' => 'checkbox', - 'section' => 'client_settings', - ), - 'link_existing_users' => array( - 'title' => __( 'Link Existing Users', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'If a WordPress account already exists with the same identity as a newly-authenticated user over OpenID Connect, login as that user instead of generating an error.', 'daggerhart-openid-connect-generic' ), - 'type' => 'checkbox', - 'disabled' => defined( 'OIDC_LINK_EXISTING_USERS' ), - 'section' => 'user_settings', - ), - 'create_if_does_not_exist' => array( - 'title' => __( 'Create user if does not exist', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'If the user identity is not linked to an existing WordPress user, it is created. If this setting is not enabled, and if the user authenticates with an account which is not linked to an existing WordPress user, then the authentication will fail.', 'daggerhart-openid-connect-generic' ), - 'type' => 'checkbox', - 'disabled' => defined( 'OIDC_CREATE_IF_DOES_NOT_EXIST' ), - 'section' => 'user_settings', - ), - 'redirect_user_back' => array( - 'title' => __( 'Redirect Back to Origin Page', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'After a successful OpenID Connect authentication, this will redirect the user back to the page on which they clicked the OpenID Connect login button. This will cause the login process to proceed in a traditional WordPress fashion. For example, users logging in through the default wp-login.php page would end up on the WordPress Dashboard and users logging in through the WooCommerce "My Account" page would end up on their account page.', 'daggerhart-openid-connect-generic' ), - 'type' => 'checkbox', - 'disabled' => defined( 'OIDC_REDIRECT_USER_BACK' ), - 'section' => 'user_settings', - ), - 'redirect_on_logout' => array( - 'title' => __( 'Redirect to the login screen when session is expired', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'When enabled, this will automatically redirect the user back to the WordPress login page if their access token has expired.', 'daggerhart-openid-connect-generic' ), - 'type' => 'checkbox', - 'disabled' => defined( 'OIDC_REDIRECT_ON_LOGOUT' ), - 'section' => 'user_settings', - ), - 'enable_logging' => array( - 'title' => __( 'Enable Logging', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'Very simple log messages for debugging purposes.', 'daggerhart-openid-connect-generic' ), - 'type' => 'checkbox', - 'disabled' => defined( 'OIDC_ENABLE_LOGGING' ), - 'section' => 'log_settings', - ), - 'log_limit' => array( - 'title' => __( 'Log Limit', 'daggerhart-openid-connect-generic' ), - 'description' => __( 'Number of items to keep in the log. These logs are stored as an option in the database, so space is limited.', 'daggerhart-openid-connect-generic' ), - 'type' => 'number', - 'disabled' => defined( 'OIDC_LOG_LIMIT' ), - 'section' => 'log_settings', - ), - ); - - return apply_filters( 'openid-connect-generic-settings-fields', $fields ); - } - - /** - * Sanitization callback for settings/option page. - * - * @param array $input The submitted settings values. - * - * @return array - */ - public function sanitize_settings( $input ) { - $options = array(); - - // Loop through settings fields to control what we're saving. - foreach ( $this->settings_fields as $key => $field ) { - if ( isset( $input[ $key ] ) ) { - $options[ $key ] = sanitize_text_field( trim( $input[ $key ] ) ); - } else { - $options[ $key ] = ''; - } - } - - return $options; - } - - /** - * Output the options/settings page. - * - * @return void - */ - public function settings_page() { - wp_enqueue_style( 'daggerhart-openid-connect-generic-admin', plugin_dir_url( __DIR__ ) . 'css/styles-admin.css', array(), OpenID_Connect_Generic::VERSION, 'all' ); - - $redirect_uri = admin_url( 'admin-ajax.php?action=openid-connect-authorize' ); - - if ( $this->settings->alternate_redirect_uri ) { - $redirect_uri = site_url( '/openid-connect-authorize' ); - } - ?> -
-

- -
- settings_field_group ); - do_settings_sections( $this->options_page_name ); - submit_button(); - - // Simple debug to view settings array. - if ( isset( $_GET['debug'] ) ) { - var_dump( $this->settings->get_values() ); - } - ?> -
- -

- -

- - -

-

- - [openid_connect_generic_login_button] -

-

- - [openid_connect_generic_auth_url] -

- - settings->enable_logging ) { ?> -

-
- logger->get_logs_table() ); ?> -
- - -
- - - value="settings->{ $field['key'] } ); ?>"> - do_field_description( $field ); - } - - /** - * Output a checkbox for a boolean setting. - * - hidden field is default value so we don't have to check isset() on save. - * - * @param array $field The settings field definition array. - * - * @return void - */ - public function do_checkbox( $field ) { - $hidden_value = 0; - if ( ! empty( $field['disabled'] ) && boolval( $field['disabled'] ) === true ) { - $hidden_value = intval( $this->settings->{ $field['key'] } ); - } - ?> - - - value="1" - settings->{ $field['key'] }, 1 ); ?>> - do_field_description( $field ); - } - - /** - * Output a select control. - * - * @param array $field The settings field definition array. - * - * @return void - */ - public function do_select( $field ) { - $current_value = isset( $this->settings->{ $field['key'] } ) ? $this->settings->{ $field['key'] } : ''; - ?> - - do_field_description( $field ); - } - - /** - * Output the field description, and example if present. - * - * @param array $field The settings field definition array. - * - * @return void - */ - public function do_field_description( $field ) { - ?> -

- - -
: - - -

- \n" -"Language-Team: LANGUAGE \n" -"Language: en\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Poedit-Country: United States\n" -"X-Poedit-SourceCharset: UTF-8\n" -"X-Poedit-KeywordsList: " -"__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_" -"attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n" -"X-Poedit-Basepath: ../\n" -"X-Poedit-SearchPath-0: .\n" -"X-Poedit-Bookmarks: \n" -"X-Textdomain-Support: yes\n" -"X-Generator: grunt-wp-i18n 1.0.3\n" - -#: includes/openid-connect-generic-client-wrapper.php:293 -msgid "Session expired. Please login again." -msgstr "" - -#: includes/openid-connect-generic-client-wrapper.php:540 -msgid "User identity is not linked to an existing WordPress user." -msgstr "" - -#: includes/openid-connect-generic-client-wrapper.php:598 -msgid "Invalid user." -msgstr "" - -#: includes/openid-connect-generic-client-wrapper.php:816 -msgid "No appropriate username found." -msgstr "" - -#: includes/openid-connect-generic-client-wrapper.php:826 -#. translators: %1$s is the santitized version of the username from the IDP. -msgid "Username %1$s could not be sanitized." -msgstr "" - -#: includes/openid-connect-generic-client-wrapper.php:848 -#. translators: %1$s is the configured User Claim nickname key. -msgid "No nickname found in user claim using key: %1$s." -msgstr "" - -#: includes/openid-connect-generic-client-wrapper.php:945 -msgid "User claim incomplete." -msgstr "" - -#: includes/openid-connect-generic-client-wrapper.php:1048 -msgid "Bad user claim result." -msgstr "" - -#: includes/openid-connect-generic-client-wrapper.php:1114 -msgid "Can not authorize." -msgstr "" - -#: includes/openid-connect-generic-client-wrapper.php:1143 -msgid "Failed user creation." -msgstr "" - -#: includes/openid-connect-generic-client.php:176 -msgid "Missing state." -msgstr "" - -#: includes/openid-connect-generic-client.php:180 -msgid "Invalid state." -msgstr "" - -#: includes/openid-connect-generic-client.php:195 -msgid "Missing authentication code." -msgstr "" - -#: includes/openid-connect-generic-client.php:240 -msgid "Request for authentication token failed." -msgstr "" - -#: includes/openid-connect-generic-client.php:273 -msgid "Refresh token failed." -msgstr "" - -#: includes/openid-connect-generic-client.php:288 -msgid "Missing token body." -msgstr "" - -#: includes/openid-connect-generic-client.php:296 -msgid "Invalid token." -msgstr "" - -#: includes/openid-connect-generic-client.php:349 -msgid "Request for userinfo failed." -msgstr "" - -#: includes/openid-connect-generic-client.php:409 -msgid "Missing authentication state." -msgstr "" - -#: includes/openid-connect-generic-client.php:446 -msgid "No identity token." -msgstr "" - -#: includes/openid-connect-generic-client.php:453 -msgid "Missing identity token." -msgstr "" - -#: includes/openid-connect-generic-client.php:480 -msgid "Bad ID token claim." -msgstr "" - -#: includes/openid-connect-generic-client.php:485 -msgid "No subject identity." -msgstr "" - -#: includes/openid-connect-generic-client.php:491 -msgid "No matching acr values." -msgstr "" - -#: includes/openid-connect-generic-client.php:511 -msgid "Bad user claim." -msgstr "" - -#: includes/openid-connect-generic-client.php:531 -msgid "Invalid user claim." -msgstr "" - -#: includes/openid-connect-generic-client.php:536 -msgid "Error from the IDP." -msgstr "" - -#: includes/openid-connect-generic-client.php:545 -msgid "Incorrect user claim." -msgstr "" - -#: includes/openid-connect-generic-client.php:552 -msgid "Unauthorized access." -msgstr "" - -#: includes/openid-connect-generic-login-form.php:122 -#. translators: %1$s is the error code from the IDP. -msgid "ERROR (%1$s)" -msgstr "" - -#: includes/openid-connect-generic-login-form.php:141 -msgid "Login with OpenID Connect" -msgstr "" - -#: includes/openid-connect-generic-option-logger.php:228 -msgid "Details" -msgstr "" - -#: includes/openid-connect-generic-option-logger.php:229 -msgid "Data" -msgstr "" - -#: includes/openid-connect-generic-option-logger.php:236 -msgid "Date" -msgstr "" - -#: includes/openid-connect-generic-option-logger.php:240 -msgid "Type" -msgstr "" - -#: includes/openid-connect-generic-option-logger.php:244 -msgid "User" -msgstr "" - -#: includes/openid-connect-generic-option-logger.php:248 -msgid "URI " -msgstr "" - -#: includes/openid-connect-generic-option-logger.php:252 -msgid "Response Time (sec)" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:108 -msgid "OpenID Connect - Generic Client" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:109 -msgid "OpenID Connect Client" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:133 -msgid "Client Settings" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:140 -msgid "WordPress User Settings" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:147 -msgid "Authorization Settings" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:154 -msgid "Log Settings" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:212 -msgid "Login Type" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:213 -msgid "Select how the client (login form) should provide login options." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:216 -msgid "OpenID Connect button on login form" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:217 -msgid "Auto Login - SSO" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:223 -msgid "Client ID" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:224 -msgid "" -"The ID this client will be recognized as when connecting the to Identity " -"provider server." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:231 -msgid "Client Secret Key" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:232 -msgid "" -"Arbitrary secret key the server expects from this client. Can be anything, " -"but should be very unique." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:238 -msgid "OpenID Scope" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:239 -msgid "Space separated list of scopes this client should access." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:246 -msgid "Login Endpoint URL" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:247 -msgid "Identify provider authorization endpoint." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:254 -msgid "Userinfo Endpoint URL" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:255 -msgid "Identify provider User information endpoint." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:262 -msgid "Token Validation Endpoint URL" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:263 -msgid "Identify provider token endpoint." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:270 -msgid "End Session Endpoint URL" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:271 -msgid "Identify provider logout endpoint." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:278 -msgid "ACR values" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:279 -msgid "Use a specific defined authentication contract from the IDP - optional." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:285 -msgid "Identity Key" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:286 -msgid "" -"Where in the user claim array to find the user's identification data. " -"Possible standard values: preferred_username, name, or sub. If you're " -"having trouble, use \"sub\"." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:292 -msgid "Disable SSL Verify" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:294 -#. translators: %1$s HTML tags for layout/styles, %2$s closing HTML tag for -#. styles. -msgid "" -"Do not require SSL verification during authorization. The OAuth extension " -"uses curl to make the request. By default CURL will generally verify the " -"SSL certificate to see if its valid an issued by an accepted CA. This " -"setting disabled that verification.%1$sNot recommended for production " -"sites.%2$s" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:299 -msgid "HTTP Request Timeout" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:300 -msgid "Set the timeout for requests made to the IDP. Default value is 5." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:306 -msgid "Enforce Privacy" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:307 -msgid "Require users be logged in to see the site." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:313 -msgid "Alternate Redirect URI" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:314 -msgid "" -"Provide an alternative redirect route. Useful if your server is causing " -"issues with the default admin-ajax method. You must flush rewrite rules " -"after changing this setting. This can be done by saving the Permalinks " -"settings page." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:319 -msgid "Nickname Key" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:320 -msgid "" -"Where in the user claim array to find the user's nickname. Possible " -"standard values: preferred_username, name, or sub." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:326 -msgid "Email Formatting" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:327 -msgid "" -"String from which the user's email address is built. Specify \"{email}\" as " -"long as the user claim contains an email claim." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:333 -msgid "Display Name Formatting" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:334 -msgid "String from which the user's display name is built." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:340 -msgid "Identify with User Name" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:341 -msgid "" -"If checked, the user's identity will be determined by the user name instead " -"of the email address." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:346 -msgid "State time limit" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:347 -msgid "State valid time in seconds. Defaults to 180" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:352 -msgid "Enable Refresh Token" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:353 -msgid "" -"If checked, support refresh tokens used to obtain access tokens from " -"supported IDPs." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:358 -msgid "Link Existing Users" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:359 -msgid "" -"If a WordPress account already exists with the same identity as a " -"newly-authenticated user over OpenID Connect, login as that user instead of " -"generating an error." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:365 -msgid "Create user if does not exist" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:366 -msgid "" -"If the user identity is not linked to an existing WordPress user, it is " -"created. If this setting is not enabled, and if the user authenticates with " -"an account which is not linked to an existing WordPress user, then the " -"authentication will fail." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:372 -msgid "Redirect Back to Origin Page" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:373 -msgid "" -"After a successful OpenID Connect authentication, this will redirect the " -"user back to the page on which they clicked the OpenID Connect login " -"button. This will cause the login process to proceed in a traditional " -"WordPress fashion. For example, users logging in through the default " -"wp-login.php page would end up on the WordPress Dashboard and users logging " -"in through the WooCommerce \"My Account\" page would end up on their " -"account page." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:379 -msgid "Redirect to the login screen when session is expired" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:380 -msgid "" -"When enabled, this will automatically redirect the user back to the " -"WordPress login page if their access token has expired." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:386 -msgid "Enable Logging" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:387 -msgid "Very simple log messages for debugging purposes." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:393 -msgid "Log Limit" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:394 -msgid "" -"Number of items to keep in the log. These logs are stored as an option in " -"the database, so space is limited." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:456 -msgid "Notes" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:459 -msgid "Redirect URI" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:463 -msgid "Login Button Shortcode" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:467 -msgid "Authentication URL Shortcode" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:472 -msgid "Logs" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:561 -msgid "Example" -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:574 -msgid "Enter your OpenID Connect identity provider settings." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:583 -msgid "Modify the interaction between OpenID Connect and WordPress users." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:592 -msgid "Control the authorization mechanics of the site." -msgstr "" - -#: includes/openid-connect-generic-settings-page.php:601 -msgid "Log information about login attempts through OpenID Connect Generic." -msgstr "" - -#: openid-connect-generic.php:242 -msgid "Private site" -msgstr "" - -#. Plugin Name of the plugin/theme -msgid "OpenID Connect Generic" -msgstr "" - -#. Plugin URI of the plugin/theme -msgid "https://github.com/daggerhart/openid-connect-generic" -msgstr "" - -#. Description of the plugin/theme -msgid "" -"Connect to an OpenID Connect identity provider using Authorization Code " -"Flow." -msgstr "" - -#. Author of the plugin/theme -msgid "daggerhart" -msgstr "" - -#. Author URI of the plugin/theme -msgid "http://www.daggerhart.com" -msgstr "" diff --git a/wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/openid-connect-generic.php b/wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/openid-connect-generic.php deleted file mode 100644 index 81895e9a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/openid-connect-generic.php +++ /dev/null @@ -1,439 +0,0 @@ - - * @copyright 2015-2023 daggerhart - * @license http://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+ - * @link https://github.com/oidc-wp - * - * @wordpress-plugin - * Plugin Name: OpenID Connect Generic - * Plugin URI: https://github.com/oidc-wp/openid-connect-generic - * Description: Connect to an OpenID Connect identity provider using Authorization Code Flow. - * Version: 3.10.2 - * Requires at least: 5.0 - * Requires PHP: 7.4 - * Author: daggerhart - * Author URI: https://www.daggerhartlab.com - * Text Domain: daggerhart-openid-connect-generic - * Domain Path: /languages - * License: GPL-2.0+ - * License URI: http://www.gnu.org/licenses/gpl-2.0.txt - * GitHub Plugin URI: https://github.com/oidc-wp/openid-connect-generic - */ - -/* -Notes - Spec Doc - http://openid.net/specs/openid-connect-basic-1_0-32.html - - Filters - - openid-connect-generic-alter-request - 3 args: request array, plugin settings, specific request op - - openid-connect-generic-settings-fields - modify the fields provided on the settings page - - openid-connect-generic-settings - modify settings values early in plugin bootstrap. - - openid-connect-generic-login-button-text - modify the login button text - - openid-connect-generic-cookie-redirect-url - modify the redirect url stored as a cookie - - openid-connect-generic-user-login-test - (bool) should the user be logged in based on their claim - - openid-connect-generic-user-creation-test - (bool) should the user be created based on their claim - - openid-connect-generic-auth-url - modify the authentication url - - openid-connect-generic-alter-user-claim - modify the user_claim before a new user is created - - openid-connect-generic-alter-user-data - modify user data before a new user is created - - openid-connect-modify-token-response-before-validation - modify the token response before validation - - openid-connect-modify-id-token-claim-before-validation - modify the token claim before validation - - openid-connect-generic-new-state-value - modify the user's state value before it us saved. - - Actions - - openid-connect-generic-user-create - 2 args: fires when a new user is created by this plugin - - openid-connect-generic-user-update - 1 arg: user ID, fires when user is updated by this plugin - - openid-connect-generic-update-user-using-current-claim - 2 args: fires every time an existing user logs in and the claims are updated. - - openid-connect-generic-redirect-user-back - 2 args: $redirect_url, $user. Allows interruption of redirect during login. - - openid-connect-generic-user-logged-in - 1 arg: $user, fires when user is logged in. - - openid-connect-generic-cron-daily - daily cron action - - openid-connect-generic-state-not-found - the given state does not exist in the database, regardless of its expiration. - - openid-connect-generic-state-expired - the given state exists, but expired before this login attempt. - - Callable actions - - User Meta - - openid-connect-generic-subject-identity - the identity of the user provided by the idp - - openid-connect-generic-last-id-token-claim - the user's most recent id_token claim, decoded - - openid-connect-generic-last-user-claim - the user's most recent user_claim - - openid-connect-generic-last-token-response - the user's most recent token response - - Options - - openid_connect_generic_settings - plugin settings - - openid-connect-generic-valid-states - locally stored generated states -*/ - - -/** - * OpenID_Connect_Generic class. - * - * Defines plugin initialization functionality. - * - * @package OpenID_Connect_Generic - * @category General - */ -class OpenID_Connect_Generic { - - /** - * Singleton instance of self - * - * @var OpenID_Connect_Generic - */ - protected static $_instance = null; - - /** - * Plugin version. - * - * @var string - */ - const VERSION = '3.10.2'; - - /** - * Plugin settings. - * - * @var OpenID_Connect_Generic_Option_Settings - */ - private $settings; - - /** - * Plugin logs. - * - * @var OpenID_Connect_Generic_Option_Logger - */ - private $logger; - - /** - * Openid Connect Generic client - * - * @var OpenID_Connect_Generic_Client - */ - private $client; - - /** - * Client wrapper. - * - * @var OpenID_Connect_Generic_Client_Wrapper - */ - public $client_wrapper; - - /** - * Setup the plugin - * - * @param OpenID_Connect_Generic_Option_Settings $settings The settings object. - * @param OpenID_Connect_Generic_Option_Logger $logger The loggin object. - * - * @return void - */ - public function __construct( OpenID_Connect_Generic_Option_Settings $settings, OpenID_Connect_Generic_Option_Logger $logger ) { - $this->settings = $settings; - $this->logger = $logger; - self::$_instance = $this; - } - - // @codeCoverageIgnoreStart - - /** - * WordPress Hook 'init'. - * - * @return void - */ - public function init() { - - // Allow altering the settings. - $this->settings = apply_filters( 'openid-connect-generic-settings', $this->settings ); - - $this->client = new OpenID_Connect_Generic_Client( - $this->settings->client_id, - $this->settings->client_secret, - $this->settings->scope, - $this->settings->endpoint_login, - $this->settings->endpoint_userinfo, - $this->settings->endpoint_token, - $this->get_redirect_uri( $this->settings ), - $this->settings->acr_values, - $this->get_state_time_limit( $this->settings ), - $this->logger - ); - - $this->client_wrapper = OpenID_Connect_Generic_Client_Wrapper::register( $this->client, $this->settings, $this->logger ); - if ( defined( 'WP_CLI' ) && WP_CLI ) { - return; - } - - OpenID_Connect_Generic_Login_Form::register( $this->settings, $this->client_wrapper ); - - // Add a shortcode to get the auth URL. - add_shortcode( 'openid_connect_generic_auth_url', array( $this->client_wrapper, 'get_authentication_url' ) ); - - // Add actions to our scheduled cron jobs. - add_action( 'openid-connect-generic-cron-daily', array( $this, 'cron_states_garbage_collection' ) ); - - $this->upgrade(); - - if ( is_admin() ) { - OpenID_Connect_Generic_Settings_Page::register( $this->settings, $this->logger ); - } - } - - /** - * Get the default redirect URI. - * - * @param OpenID_Connect_Generic_Option_Settings $settings The settings object. - * - * @return string - */ - public function get_redirect_uri( OpenID_Connect_Generic_Option_Settings $settings ) { - $redirect_uri = admin_url( 'admin-ajax.php?action=openid-connect-authorize' ); - - if ( $settings->alternate_redirect_uri ) { - $redirect_uri = site_url( '/openid-connect-authorize' ); - } - - return $redirect_uri; - } - - /** - * Get the default state time limit. - * - * @param OpenID_Connect_Generic_Option_Settings $settings The settings object. - * - * @return int - */ - public function get_state_time_limit( OpenID_Connect_Generic_Option_Settings $settings ) { - $state_time_limit = 180; - // State time limit cannot be zero. - if ( $settings->state_time_limit ) { - $state_time_limit = intval( $settings->state_time_limit ); - } - - return $state_time_limit; - } - - /** - * Check if privacy enforcement is enabled, and redirect users that aren't - * logged in. - * - * @return void - */ - public function enforce_privacy_redirect() { - if ( $this->settings->enforce_privacy && ! is_user_logged_in() ) { - // The client endpoint relies on the wp-admin ajax endpoint. - if ( - ! defined( 'DOING_AJAX' ) || - ! boolval( constant( 'DOING_AJAX' ) ) || - ! isset( $_GET['action'] ) || - 'openid-connect-authorize' != $_GET['action'] ) { - auth_redirect(); - } - } - } - - /** - * Enforce privacy settings for rss feeds. - * - * @param string $content The content. - * - * @return mixed - */ - public function enforce_privacy_feeds( $content ) { - if ( $this->settings->enforce_privacy && ! is_user_logged_in() ) { - $content = __( 'Private site', 'daggerhart-openid-connect-generic' ); - } - return $content; - } - - /** - * Handle plugin upgrades - * - * @return void - */ - public function upgrade() { - $last_version = get_option( 'openid-connect-generic-plugin-version', 0 ); - $settings = $this->settings; - - if ( version_compare( self::VERSION, $last_version, '>' ) ) { - // An upgrade is required. - self::setup_cron_jobs(); - - // @todo move this to another file for upgrade scripts - if ( isset( $settings->ep_login ) ) { - $settings->endpoint_login = $settings->ep_login; - $settings->endpoint_token = $settings->ep_token; - $settings->endpoint_userinfo = $settings->ep_userinfo; - - unset( $settings->ep_login, $settings->ep_token, $settings->ep_userinfo ); - $settings->save(); - } - - // Update the stored version number. - update_option( 'openid-connect-generic-plugin-version', self::VERSION ); - } - } - - /** - * Expire state transients by attempting to access them and allowing the - * transient's own mechanisms to delete any that have expired. - * - * @return void - */ - public function cron_states_garbage_collection() { - global $wpdb; - $states = $wpdb->get_col( "SELECT `option_name` FROM {$wpdb->options} WHERE `option_name` LIKE '_transient_openid-connect-generic-state--%'" ); - - if ( ! empty( $states ) ) { - foreach ( $states as $state ) { - $transient = str_replace( '_transient_', '', $state ); - get_transient( $transient ); - } - } - } - - /** - * Ensure cron jobs are added to the schedule. - * - * @return void - */ - public static function setup_cron_jobs() { - if ( ! wp_next_scheduled( 'openid-connect-generic-cron-daily' ) ) { - wp_schedule_event( time(), 'daily', 'openid-connect-generic-cron-daily' ); - } - } - - /** - * Activation hook. - * - * @return void - */ - public static function activation() { - self::setup_cron_jobs(); - } - - /** - * Deactivation hook. - * - * @return void - */ - public static function deactivation() { - wp_clear_scheduled_hook( 'openid-connect-generic-cron-daily' ); - } - - /** - * Simple autoloader. - * - * @param string $class The class name. - * - * @return void - */ - public static function autoload( $class ) { - $prefix = 'OpenID_Connect_Generic_'; - - if ( stripos( $class, $prefix ) !== 0 ) { - return; - } - - $filename = $class . '.php'; - - // Internal files are all lowercase and use dashes in filenames. - if ( false === strpos( $filename, '\\' ) ) { - $filename = strtolower( str_replace( '_', '-', $filename ) ); - } else { - $filename = str_replace( '\\', DIRECTORY_SEPARATOR, $filename ); - } - - $filepath = __DIR__ . '/includes/' . $filename; - - if ( file_exists( $filepath ) ) { - require_once $filepath; - } - } - - /** - * Instantiate the plugin and hook into WordPress. - * - * @return void - */ - public static function bootstrap() { - /** - * This is a documented valid call for spl_autoload_register. - * - * @link https://www.php.net/manual/en/function.spl-autoload-register.php#71155 - */ - spl_autoload_register( array( 'OpenID_Connect_Generic', 'autoload' ) ); - - $settings = new OpenID_Connect_Generic_Option_Settings( - // Default settings values. - array( - // OAuth client settings. - 'login_type' => defined( 'OIDC_LOGIN_TYPE' ) ? OIDC_LOGIN_TYPE : 'button', - 'client_id' => defined( 'OIDC_CLIENT_ID' ) ? OIDC_CLIENT_ID : '', - 'client_secret' => defined( 'OIDC_CLIENT_SECRET' ) ? OIDC_CLIENT_SECRET : '', - 'scope' => defined( 'OIDC_CLIENT_SCOPE' ) ? OIDC_CLIENT_SCOPE : '', - 'endpoint_login' => defined( 'OIDC_ENDPOINT_LOGIN_URL' ) ? OIDC_ENDPOINT_LOGIN_URL : '', - 'endpoint_userinfo' => defined( 'OIDC_ENDPOINT_USERINFO_URL' ) ? OIDC_ENDPOINT_USERINFO_URL : '', - 'endpoint_token' => defined( 'OIDC_ENDPOINT_TOKEN_URL' ) ? OIDC_ENDPOINT_TOKEN_URL : '', - 'endpoint_end_session' => defined( 'OIDC_ENDPOINT_LOGOUT_URL' ) ? OIDC_ENDPOINT_LOGOUT_URL : '', - 'acr_values' => defined( 'OIDC_ACR_VALUES' ) ? OIDC_ACR_VALUES : '', - - // Non-standard settings. - 'no_sslverify' => 0, - 'http_request_timeout' => 5, - 'identity_key' => 'preferred_username', - 'nickname_key' => 'preferred_username', - 'email_format' => '{email}', - 'displayname_format' => '', - 'identify_with_username' => false, - 'state_time_limit' => 180, - - // Plugin settings. - 'enforce_privacy' => defined( 'OIDC_ENFORCE_PRIVACY' ) ? intval( OIDC_ENFORCE_PRIVACY ) : 0, - 'alternate_redirect_uri' => 0, - 'token_refresh_enable' => 1, - 'link_existing_users' => defined( 'OIDC_LINK_EXISTING_USERS' ) ? intval( OIDC_LINK_EXISTING_USERS ) : 0, - 'create_if_does_not_exist' => defined( 'OIDC_CREATE_IF_DOES_NOT_EXIST' ) ? intval( OIDC_CREATE_IF_DOES_NOT_EXIST ) : 1, - 'redirect_user_back' => defined( 'OIDC_REDIRECT_USER_BACK' ) ? intval( OIDC_REDIRECT_USER_BACK ) : 0, - 'redirect_on_logout' => defined( 'OIDC_REDIRECT_ON_LOGOUT' ) ? intval( OIDC_REDIRECT_ON_LOGOUT ) : 1, - 'enable_logging' => defined( 'OIDC_ENABLE_LOGGING' ) ? intval( OIDC_ENABLE_LOGGING ) : 0, - 'log_limit' => defined( 'OIDC_LOG_LIMIT' ) ? intval( OIDC_LOG_LIMIT ) : 1000, - ) - ); - - $logger = new OpenID_Connect_Generic_Option_Logger( 'error', $settings->enable_logging, $settings->log_limit ); - - $plugin = new self( $settings, $logger ); - - add_action( 'init', array( $plugin, 'init' ) ); - - // Privacy hooks. - add_action( 'template_redirect', array( $plugin, 'enforce_privacy_redirect' ), 0 ); - add_filter( 'the_content_feed', array( $plugin, 'enforce_privacy_feeds' ), 999 ); - add_filter( 'the_excerpt_rss', array( $plugin, 'enforce_privacy_feeds' ), 999 ); - add_filter( 'comment_text_rss', array( $plugin, 'enforce_privacy_feeds' ), 999 ); - } - - /** - * Create (if needed) and return a singleton of self. - * - * @return OpenID_Connect_Generic - */ - public static function instance() { - if ( null === self::$_instance ) { - self::bootstrap(); - } - return self::$_instance; - } -} - -OpenID_Connect_Generic::instance(); - -register_activation_hook( __FILE__, array( 'OpenID_Connect_Generic', 'activation' ) ); -register_deactivation_hook( __FILE__, array( 'OpenID_Connect_Generic', 'deactivation' ) ); - -// Provide publicly accessible plugin helper functions. -require_once 'includes/functions.php'; diff --git a/wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/readme.txt b/wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/readme.txt deleted file mode 100644 index 6d9cd567..00000000 --- a/wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/readme.txt +++ /dev/null @@ -1,137 +0,0 @@ -=== OpenID Connect Generic Client === -Contributors: daggerhart, tnolte -Tags: security, login, oauth2, openidconnect, apps, authentication, autologin, sso -Requires at least: 5.0 -Tested up to: 6.9.0 -Stable tag: 3.10.2 -Requires PHP: 7.4 -License: GPLv2 or later -License URI: http://www.gnu.org/licenses/gpl-2.0.html - -A simple client that provides SSO or opt-in authentication against a generic OAuth2 Server implementation. - -== Description == - -This plugin allows to authenticate users against OpenID Connect OAuth2 API with Authorization Code Flow. -Once installed, it can be configured to automatically authenticate users (SSO), or provide a "Login with OpenID Connect" -button on the login form. After consent has been obtained, an existing user is automatically logged into WordPress, while -new users are created in WordPress database. - -Much of the documentation can be found on the Settings > OpenID Connect Generic dashboard page. - -Please submit issues to the Github repo: https://github.com/daggerhart/openid-connect-generic - -== Installation == - -1. Upload to the `/wp-content/plugins/` directory -1. Activate the plugin -1. Visit Settings > OpenID Connect and configure to meet your needs - -== Frequently Asked Questions == - -= What is the client's Redirect URI? = - -Most OAuth2 servers will require whitelisting a set of redirect URIs for security purposes. The Redirect URI provided -by this client is like so: https://example.com/wp-admin/admin-ajax.php?action=openid-connect-authorize - -Replace `example.com` with your domain name and path to WordPress. - -= Can I change the client's Redirect URI? = - -Some OAuth2 servers do not allow for a client redirect URI to contain a query string. The default URI provided by -this module leverages WordPress's `admin-ajax.php` endpoint as an easy way to provide a route that does not include -HTML, but this will naturally involve a query string. Fortunately, this plugin provides a setting that will make use of -an alternate redirect URI that does not include a query string. - -On the settings page for this plugin (Dashboard > Settings > OpenID Connect Generic) there is a checkbox for -**Alternate Redirect URI**. When checked, the plugin will use the Redirect URI -`https://example.com/openid-connect-authorize`. - - -== Changelog == - -= 3.10.2 = - -* Fix: @socialmedialabs - Regression affecting SSO Auto Login with url handling improvement changes. - -= 3.10.1 = - -* Chore: @daggerhart - Readme updates and clarifications. -* Chore: @daggerhart - Release workflow updates. -* Improved error handling for malformed urls. -* Fix: @JUVOJustin - Change request for userinfo to GET. -* Feature: @JUVOJustin - New filter for settings values `openid-connect-generic-settings`. -* Feature: @JUVOJustin - New filter for state values `openid-connect-generic-new-state-value`. - -= 3.10.0 = - -* Chore: @timnolte - Dependency updates. -* Fix: @drzraf - Prevents running the auth url filter twice. -* Fix: @timnolte - Updates the log cleanup handling to properly retain the configured number of log entries. -* Fix: @timnolte - Updates the log display output to reflect the log retention policy. -* Chore: @timnolte - Adds Unit Testing & New Local Development Environment. -* Feature: @timnolte - Updates logging to allow for tracking processing time. -* Feature: @menno-ll - Adds a remember me feature via a new filter. -* Improvement: @menno-ll - Updates WP Cookie Expiration to Same as Session Length. - -= 3.9.1 = - -* Improvement: @timnolte - Refactors Composer setup and GitHub Actions. -* Improvement: @timnolte - Bumps WordPress tested version compatibility. - -= 3.9.0 = - -* Feature: @matchaxnb - Added support for additional configuration constants. -* Feature: @schanzen - Added support for agregated claims. -* Fix: @rkcreation - Fixed access token not updating user metadata after login. -* Fix: @danc1248 - Fixed user creation issue on Multisite Networks. -* Feature: @RobjS - Added plugin singleton to support for more developer customization. -* Feature: @jkouris - Added action hook to allow custom handling of session expiration. -* Fix: @tommcc - Fixed admin CSS loading only on the plugin settings screen. -* Feature: @rkcreation - Added method to refresh the user claim. -* Feature: @Glowsome - Added acr_values support & verification checks that it when defined in options is honored. -* Fix: @timnolte - Fixed regression which caused improper fallback on missing claims. -* Fix: @slykar - Fixed missing query string handling in redirect URL. -* Fix: @timnolte - Fixed issue with some user linking and user creation handling. -* Improvement: @timnolte - Fixed plugin settings typos and screen formatting. -* Security: @timnolte - Updated build tooling security vulnerabilities. -* Improvement: @timnolte - Changed build tooling scripts. - -= 3.8.5 = - -* Fix: @timnolte - Fixed missing URL request validation before use & ensure proper current page URL is setup for Redirect Back. -* Fix: @timnolte - Fixed Redirect URL Logic to Handle Sub-directory Installs. -* Fix: @timnolte - Fixed issue with redirecting user back when the openid_connect_generic_auth_url shortcode is used. - -= 3.8.4 = - -* Fix: @timnolte - Fixed invalid State object access for redirection handling. -* Improvement: @timnolte - Fixed local wp-env Docker development environment. -* Improvement: @timnolte - Fixed Composer scripts for linting and static analysis. - -= 3.8.3 = - -* Fix: @timnolte - Fixed problems with proper redirect handling. -* Improvement: @timnolte - Changes redirect handling to use State instead of cookies. -* Improvement: @timnolte - Refactored additional code to meet coding standards. - -= 3.8.2 = - -* Fix: @timnolte - Fixed reported XSS vulnerability on WordPress login screen. - -= 3.8.1 = - -* Fix: @timnolte - Prevent SSO redirect on password protected posts. -* Fix: @timnolte - CI/CD build issues. -* Fix: @timnolte - Invalid redirect handling on logout for Auto Login setting. - -= 3.8.0 = - -* Feature: @timnolte - Ability to use 6 new constants for setting client configuration instead of storing in the DB. -* Improvement: @timnolte - Plugin development & contribution updates. -* Improvement: @timnolte - Refactored to meet WordPress coding standards. -* Improvement: @timnolte - Refactored to provide localization. - --------- - -[See the previous changelogs here](https://github.com/oidc-wp/openid-connect-generic/blob/main/CHANGELOG.md#changelog) diff --git a/wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/wp-cli.yml b/wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/wp-cli.yml deleted file mode 100644 index 3f430d6f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/daggerhart-openid-connect-generic/wp-cli.yml +++ /dev/null @@ -1 +0,0 @@ -path: /app/wp diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/assets.yml b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/assets.yml deleted file mode 100644 index f32e729c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/assets.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Plugin asset/readme update on WordPress.org - -on: workflow_dispatch - -jobs: - trunk: - name: Push assets to trunk on WordPress.org - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: https://code.forgejo.org/actions/checkout@v4 - - - name: Install and cache rsync - uses: https://github.com/awalsh128/cache-apt-pkgs-action@latest - with: - packages: rsync subversion - version: 1.0 - - - name: WordPress.org plugin asset/readme update - uses: https://github.com/10up/action-wordpress-plugin-asset-update@stable - env: - SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }} - SVN_USERNAME: ${{ secrets.SVN_USERNAME }} - SLUG: event-bridge-for-activitypub diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/deploy.yml b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/deploy.yml deleted file mode 100644 index 45fae27a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/deploy.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Deploy to WordPress.org - -on: - push: - tags: '[0-9]+.[0-9]+.[0-9]+' - -jobs: - tag: - name: Deploy tagged release on WordPress.org - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: https://code.forgejo.org/actions/checkout@v4 - - - name: Install and cache rsync and subversion - uses: https://github.com/awalsh128/cache-apt-pkgs-action@latest - with: - packages: rsync subversion - version: 1.0 - - - name: WordPress Plugin Deploy - uses: https://github.com/10up/action-wordpress-plugin-deploy@stable - env: - SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }} - SVN_USERNAME: ${{ secrets.SVN_USERNAME }} - SLUG: event-bridge-for-activitypub diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/phpcs.yml b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/phpcs.yml deleted file mode 100644 index 21622e2e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/phpcs.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: PHP Code Checker - -on: - push: - branches: - - main - pull_request: - -jobs: - phpcs: - name: PHP Code Checker - runs-on: ubuntu-latest - strategy: - matrix: - php-versions: ['8.1'] - steps: - - name: Checkout - uses: https://code.forgejo.org/actions/checkout@v4 - - - name: Cache Composer - id: cache-composer - uses: https://code.forgejo.org/actions/cache@v4 - with: - path: | - ./vendor/ - key: cache-composer-3 - - - name: Setup cache environment for PHP Extensions - id: php-extensions-cache - uses: https://github.com/shivammathur/cache-extensions@v1 - with: - php-version: ${{ matrix.php-versions }} - extensions: dom, iconv, json, libxml, zip - key: php-extensions-cache-v1 - - - name: Cache PHP extensions - uses: https://code.forgejo.org/actions/cache@v4 - with: - path: ${{ steps.php-extensions-cache.outputs.dir }} - key: ${{ steps.php-extensions-cache.outputs.key }} - restore-keys: ${{ steps.php-extensions-cache.outputs.key }} - - - name: Setup PHP - uses: https://github.com/shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-versions }} - extensions: dom, iconv, json, libxml, zip - coverage: none - tools: composer, cs2pr - env: - runner: self-hosted - GITHUB_TOKEN: ${{ env.COMPOSER_TOKEN }} - - - name: Install Composer dependencies for PHP - if: steps.cache-composer.outputs.cache-hit != 'true' - uses: ramsey/composer-install@v3 - env: - COMPOSER_AUTH: '{"github-oauth": {"github.com": "${{ secrets.COMPOSER_TOKEN }}"}}' - - - name: Run PHP_CodeSniffer - run: ./vendor/bin/phpcs diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/phpstan.yml b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/phpstan.yml deleted file mode 100644 index ce87dacc..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/phpstan.yml +++ /dev/null @@ -1,87 +0,0 @@ -name: PHPStan Tests - -on: - push: - branches: - - main - pull_request: - -env: - WP_TESTS_DIR: /workspace/wordpress-test-lib - WP_CORE_DIR: /workspace/wordpress - -jobs: - phpstan: - runs-on: ubuntu-latest - strategy: - matrix: - php-version: ['7.4','8.1','8.4'] - name: PHPStan for WordPress ${{ matrix.php-version }} - steps: - - name: Checkout - uses: https://code.forgejo.org/actions/checkout@v4 - - - name: Cache WordPress Setup and installed plugins (Event plugins and ActivityPub plugin). - id: cache-wordpress - uses: https://code.forgejo.org/actions/cache@v4 - with: - path: | - ${{ env.WP_CORE_DIR }} - ${{ env.WP_TESTS_DIR }} - key: cache-phpstan-wordpress-6.7-activitypub-5.1.0-2 - - - name: Cache Composer - id: cache-composer - uses: https://code.forgejo.org/actions/cache@v4 - with: - path: | - ./vendor/ - key: cache-composer-3 - - - name: Setup cache environment for PHP Extensions - id: php-extensions-cache - uses: https://github.com/shivammathur/cache-extensions@v1 - with: - php-version: ${{ matrix.php-version }} - extensions: dom, iconv, json, libxml, zip - key: php-extensions-cache-v1 - - - name: Cache PHP extensions - uses: https://code.forgejo.org/actions/cache@v4 - with: - path: ${{ steps.php-extensions-cache.outputs.dir }} - key: ${{ steps.php-extensions-cache.outputs.key }} - restore-keys: ${{ steps.php-extensions-cache.outputs.key }} - - - name: Setup PHP - uses: https://github.com/shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-version }} - extensions: dom, iconv, json, libxml, zip - coverage: none - tools: composer, cs2pr - env: - runner: self-hosted - GITHUB_TOKEN: ${{ env.COMPOSER_TOKEN }} - - - name: Install Composer dependencies for PHP - if: steps.cache-composer.outputs.cache-hit != 'true' - uses: ramsey/composer-install@v3 - env: - COMPOSER_AUTH: '{"github-oauth": {"github.com": "${{ secrets.COMPOSER_TOKEN }}"}}' - - - name: Log debug information - run: | - git --version - php --version - composer --version - - - name: Install third party plugins, so that PHP Stan finds that functions - if: steps.cache-wordpress.outputs.cache-hit != 'true' - run: bash bin/install-wp-tests.sh wordpress_test root root 127.0.0.1 latest true false false true - - - name: Running PHPStan Analyze - if: ${{ success() || failure() }} - run: | - ./vendor/bin/phpstan --version - ./vendor/bin/phpstan analyze -vv --memory-limit=2G --error-format=checkstyle | cs2pr diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/phpunit.yml b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/phpunit.yml deleted file mode 100644 index 9c07a0db..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/phpunit.yml +++ /dev/null @@ -1,147 +0,0 @@ -name: PHPUnit - -on: - push: - branches: - - main - pull_request: - -env: - WP_TESTS_DIR: /workspace/wordpress-test-lib - WP_CORE_DIR: /workspace/wordpress - -jobs: - phpunit: - runs-on: ubuntu-latest - services: - mysql: - image: mariadb - env: - MYSQL_ROOT_PASSWORD: root - strategy: - matrix: - php-version: ['7.4', '8.1', '8.3', '8.4'] - wordpress-version: ['6.7', '6.8-RC3'] - name: "PHPUnit: PHP ${{ matrix.php-version }} - WordPress ${{ matrix.wordpress-version }}" - continue-on-error: true - steps: - - name: Checkout - uses: https://code.forgejo.org/actions/checkout@v4 - - - name: Cache WordPress Setup and installed plugins (Event plugins and ActivityPub plugin). - id: cache-wordpress - uses: https://code.forgejo.org/actions/cache@v4 - with: - path: | - ${{ env.WP_CORE_DIR }} - ${{ env.WP_TESTS_DIR }} - key: cache-phpunit-wordpress-${{ matrix.wordpress-version }}-activitypub-5.7.0 - - - name: Cache Composer - id: cache-composer - uses: https://code.forgejo.org/actions/cache@v4 - with: - path: | - ./vendor/ - key: cache-composer-3 - - - name: Setup cache environment for PHP Extensions - id: php-extensions-cache - uses: https://github.com/shivammathur/cache-extensions@v1 - with: - php-version: ${{ matrix.php-version }} - extensions: dom, iconv, json, libxml, zip - key: php-extensions-cache-v1 - - - name: Cache PHP extensions - uses: https://code.forgejo.org/actions/cache@v4 - with: - path: ${{ steps.php-extensions-cache.outputs.dir }} - key: ${{ steps.php-extensions-cache.outputs.key }} - restore-keys: ${{ steps.php-extensions-cache.outputs.key }} - - - name: Setup PHP - uses: https://github.com/shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-version }} - extensions: dom, iconv, json, libxml, zip - coverage: none - tools: composer, cs2pr - env: - runner: self-hosted - GITHUB_TOKEN: ${{ secrets.COMPOSER_TOKEN }} - - - name: Install Composer dependencies for PHP - if: steps.cache-composer.outputs.cache-hit != 'true' - uses: ramsey/composer-install@v3 - env: - COMPOSER_AUTH: '{"github-oauth": {"github.com": "${{ secrets.COMPOSER_TOKEN }}"}}' - - - name: Install and cache mysqladmin needed to initialize the test database - uses: https://github.com/awalsh128/cache-apt-pkgs-action@latest - with: - packages: mysql-client - version: 1.0 - - - name: Setup Test Environment - if: steps.cache-wordpress.outputs.cache-hit != 'true' - run: bash bin/install-wp-tests.sh wordpress_test root root 127.0.0.1 ${{ matrix.wordpress-version }} false false false false - - - name: Initialize WordPress test database - if: steps.cache-wordpress.outputs.cache-hit != 'false' - run: bash bin/install-wp-tests.sh wordpress_test root root 127.0.0.1 ${{ matrix.wordpress-version }} false true true true - - - name: Run General Tests - run: cd /workspace/Event-Federation/wordpress-event-bridge-for-activitypub/ && ./vendor/bin/phpunit - env: - PHP_VERSION: ${{ matrix.php-version }} - - - name: Run Integration tests for The Events Calendar - run: cd /workspace/Event-Federation/wordpress-event-bridge-for-activitypub/ && ./vendor/bin/phpunit --filter=the_events_calendar - env: - PHP_VERSION: ${{ matrix.php-version }} - - - name: Run Integration tests for VS Event List - run: cd /workspace/Event-Federation/wordpress-event-bridge-for-activitypub/ && ./vendor/bin/phpunit --filter=vs_event_list - env: - PHP_VERSION: ${{ matrix.php-version }} - - - name: Run Integration tests for GatherPress - run: cd /workspace/Event-Federation/wordpress-event-bridge-for-activitypub/ && ./vendor/bin/phpunit --filter=gatherpress - env: - PHP_VERSION: ${{ matrix.php-version }} - - - name: Run Integration tests for Events Manager - run: cd /workspace/Event-Federation/wordpress-event-bridge-for-activitypub/ && ./vendor/bin/phpunit --filter=events_manager - env: - PHP_VERSION: ${{ matrix.php-version }} - - - name: Run Integration tests for WP Event Manager - run: cd /workspace/Event-Federation/wordpress-event-bridge-for-activitypub/ && ./vendor/bin/phpunit --filter=wp_event_manager - env: - PHP_VERSION: ${{ matrix.php-version }} - - - name: Run Integration tests for Eventin (WP Event Solution) - run: cd /workspace/Event-Federation/wordpress-event-bridge-for-activitypub/ && ./vendor/bin/phpunit --filter=eventin - env: - PHP_VERSION: ${{ matrix.php-version }} - - - name: Run Integration tests for Modern Events Calendar Lite - run: cd /workspace/Event-Federation/wordpress-event-bridge-for-activitypub/ && ./vendor/bin/phpunit --filter=modern_events_calendar_lite - env: - PHP_VERSION: ${{ matrix.php-version }} - - - name: Run Integration tests for EventPrime - run: cd /workspace/Event-Federation/wordpress-event-bridge-for-activitypub/ && ./vendor/bin/phpunit --filter=eventprime - env: - PHP_VERSION: ${{ matrix.php-version }} - - - name: Run Integration tests for Event Organiser - run: cd /workspace/Event-Federation/wordpress-event-bridge-for-activitypub/ && ./vendor/bin/phpunit --filter=event_organiser - env: - PHP_VERSION: ${{ matrix.php-version }} - - - name: Run Integration tests for EventON – Events Calendar - run: cd /workspace/Event-Federation/wordpress-event-bridge-for-activitypub/ && ./vendor/bin/phpunit --filter=eventon - env: - PHP_VERSION: ${{ matrix.php-version }} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/release.yml b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/release.yml deleted file mode 100644 index 78d84211..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.forgejo/workflows/release.yml +++ /dev/null @@ -1,17 +0,0 @@ -on: - push: - tags: - - '^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?$' - -jobs: - upload-release: - runs-on: ubuntu-latest - steps: - - uses: https://code.forgejo.org/actions/checkout@v4 - - - uses: https://code.forgejo.org/actions/forgejo-release@v2 - with: - direction: upload - url: https://codeberg.org - release-notes: ${{ TAG }} - token: ${{ secrets.GITHUB_TOKEN }} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.gitattributes b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.gitattributes deleted file mode 100644 index f5aa0a25..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/.gitattributes +++ /dev/null @@ -1,26 +0,0 @@ -.distignore export-ignore -.forgejo export-ignore -.gitattributes export-ignore -.gitignore export-ignore -.wordpress-org export-ignore -.wp-env.json export-ignore -bin export-ignore -CODE_OF_CONDUCT.md export-ignore -composer.json export-ignore -composer.lock export-ignore -docker-compose.yml export-ignore -Dockerfile export-ignore -docs export-ignore -FEDERATION.md export-ignore -Gruntfile.js export-ignore -node_modules export-ignore -package.json export-ignore -package-lock.json export-ignore -phpcs.xml export-ignore -phpstan.neon export-ignore -phpstan.neon.dist export-ignore -phpunit.xml export-ignore -README.md export-ignore -src export-ignore -tests export-ignore -vendor export-ignore diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/CHANGELOG.md deleted file mode 100644 index d87b1e66..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/CHANGELOG.md +++ /dev/null @@ -1,48 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [1.1.0] - 2025-04-12 - -### Added - -* Basic support for Starter Kits - -### Fixed - -* Fixed: Uncatched error in following process (issue #145) -* Fixed: Compatibility with ActivityPub plugin version 5.7.0 - -## [1.0.0] - 2025-02-11 - -### Changed - -* This plugin now depends on ActivityPub plugin version greater than 5.1.0 - -### Added - -* Support for the EventPrime event plugin -* Event self-announce feature at configurable time before event starts -* Blueprint (Preview via WordPress Playground) -* Event Sources feature: cache and list events from remote ActivityPub profiles on your site -* Custom ActivityPub preview -* Admin setting to enforce sending summary of events as plain text - -### Fixed - -* The Events Calendar date times when using the Gutenberg editor. -* Improved admin UI for event-category mapping - -## [0.3.5] - 2025-01-03 - -### Fixed - -* Images of Acknowledgements in Admin UI - -## [0.3.4] - 2024-12-21 - -* Initial release on WordPress.org - diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/CONTRIBUTING.md b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/CONTRIBUTING.md deleted file mode 100644 index 3f790ce3..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/CONTRIBUTING.md +++ /dev/null @@ -1,44 +0,0 @@ -# Contributing - -Thank you for considering contributing to Event Bridge For ActivityPub WordPress Plugin 💜 - -You can contribute in the following ways: - -- Finding and reporting bugs -- Translating the plugin into various languages -- Contributing code by fixing bugs or implementing features -- Improving the documentation -- Proposing ideas for new features - -## Bug reports - -Bug reports and feature suggestions must use descriptive and concise titles and be submitted to [Codeberg Issues](https://codeberg.org/Event-Federation/wordpress-event-bridge-for-activitypub/issues) or the [WordPress.org Support Forum](https://wordpress.org/support/plugin/event-bridge-for-activitypub/). Please use the search function to make sure that you are not submitting duplicates, and that a similar report or request has not already been resolved or rejected. - -## Translations - -You can submit translations via [translate.WordPress.org](https://translate.wordpress.org/projects/wp-plugins/event-bridge-for-activitypub/). These changes are merged by WordPress itself to each plugin installation. - -## Pull requests - -**Please use clean, concise titles for your pull requests.** Unless the pull request is about refactoring code or other internal tasks, assume that the person reading the pull request title is not a programmer or WordPress developer, but instead a WordPress user, and **try to describe your change or fix from their perspective**. We use commit squashing, so the final commit in the main branch will carry the title of the pull request, and commits from the main branch are fed into the changelog. The changelog is separated into [keepachangelog.com categories](https://keepachangelog.com/en/1.0.0/), and while that spec does not prescribe how the entries ought to be named, for easier sorting, start your pull request titles using one of the verbs "Add", "Change", "Deprecate", "Remove", or "Fix" (present tense). - -Example: - -| Not ideal | Better | -| ------------------------------------ | ------------------------------------------------------------- | -| Fixed NoMethodError in RemovalWorker | Fix nil error when removing statuses caused by race condition | - -It is not always possible to phrase every change in such a manner, but it is desired. - -**The smaller the set of changes in the pull request is, the quicker it can be reviewed and merged.** Splitting tasks into multiple smaller pull requests is often preferable. - -**Pull requests that do not pass automated checks may not be reviewed**. In particular, you need to keep in mind: - -- Unit and integration test (PHPUnit) -- Code style rules (PHP_CodeSniffer) -- [WordPress plugin guidelines](https://developer.wordpress.org/plugins/wordpress-org/detailed-plugin-guidelines/) - -## Documentation - -- Documentation for users is currently in the README.md and readme.txt files and the admin pages of the plugin (see the `.template/` folder), although this can change if it could be advantageous. -- Documentation for developers is the the projects [Wiki](https://codeberg.org/Event-Federation/wordpress-event-bridge-for-activitypub/wiki). diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/LICENSE b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/LICENSE deleted file mode 100644 index 241d6f31..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/LICENSE +++ /dev/null @@ -1,235 +0,0 @@ -GNU AFFERO GENERAL PUBLIC LICENSE -Version 3, 19 November 2007 - -Copyright (C) 2007 Free Software Foundation, Inc. - -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - - Preamble - -The GNU Affero General Public License is a free, copyleft license for software and other kinds of works, specifically designed to ensure cooperation with the community in the case of network server software. - -The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. - -When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. - -Developers that use our General Public Licenses protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License which gives you legal permission to copy, distribute and/or modify the software. - -A secondary benefit of defending all users' freedom is that improvements made in alternate versions of the program, if they receive widespread use, become available for other developers to incorporate. Many developers of free software are heartened and encouraged by the resulting cooperation. However, in the case of software used on network servers, this result may fail to come about. The GNU General Public License permits making a modified version and letting the public access it on a server without ever releasing its source code to the public. - -The GNU Affero General Public License is designed specifically to ensure that, in such cases, the modified source code becomes available to the community. It requires the operator of a network server to provide the source code of the modified version running there to the users of that server. Therefore, public use of a modified version, on a publicly accessible server, gives the public access to the source code of the modified version. - -An older license, called the Affero General Public License and published by Affero, was designed to accomplish similar goals. This is a different license, not a version of the Affero GPL, but Affero has released a new version of the Affero GPL which permits relicensing under this license. - -The precise terms and conditions for copying, distribution and modification follow. - - TERMS AND CONDITIONS - -0. Definitions. - -"This License" refers to version 3 of the GNU Affero General Public License. - -"Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. - -"The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. - -To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. - -A "covered work" means either the unmodified Program or a work based on the Program. - -To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. - -To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. - -An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. - -1. Source Code. -The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. - -A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. - -The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. - -The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those -subprograms and other parts of the work. - -The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. - -The Corresponding Source for a work in source code form is that same work. - -2. Basic Permissions. -All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. - -You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. - -Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. - -3. Protecting Users' Legal Rights From Anti-Circumvention Law. -No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. - -When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. - -4. Conveying Verbatim Copies. -You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. - -You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. - -5. Conveying Modified Source Versions. -You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". - - c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. - -A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. - -6. Conveying Non-Source Forms. -You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: - - a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. - - d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. - -A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. - -A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. - -"Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. - -If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). - -The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. - -Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. - -7. Additional Terms. -"Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. - -When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. - -Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or authors of the material; or - - e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. - -All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. - -If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. - -Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. - -8. Termination. - -You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). - -However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. - -Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. - -Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. - -9. Acceptance Not Required for Having Copies. - -You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. - -10. Automatic Licensing of Downstream Recipients. - -Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. - -An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. - -You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. - -11. Patents. - -A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". - -A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. - -Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. - -In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. - -If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. - -If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. - -A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. - -Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. - -12. No Surrender of Others' Freedom. - -If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. - -13. Remote Network Interaction; Use with the GNU General Public License. - -Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph. - -Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License. - -14. Revised Versions of this License. - -The Free Software Foundation may publish revised and/or new versions of the GNU Affero General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU Affero General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation. - -If the Program specifies that a proxy can decide which future versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. - -Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. - -15. Disclaimer of Warranty. - -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -16. Limitation of Liability. - -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -17. Interpretation of Sections 15 and 16. - -If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. - -END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - - test - Copyright (C) 2023 linos - - This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - -If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a "Source" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements. - -You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see . diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/css/event-bridge-for-activitypub-admin.css b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/css/event-bridge-for-activitypub-admin.css deleted file mode 100644 index da750dba..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/css/event-bridge-for-activitypub-admin.css +++ /dev/null @@ -1,236 +0,0 @@ -.settings_page_event-bridge-for-activitypub #wpcontent { - padding-left: 0; -} - -.event-bridge-for-activitypub-settings-page .box { - border: 1px solid #c3c4c7; - background-color: #fff; - padding: 1em 1.5em; - margin-bottom: 1.5em; -} - -.event-bridge-for-activitypub-settings-page .logo-center { - width: 25%; - margin: 10px 5% 10px 5%; -} - -.event-bridge-for-activitypub-settings-page .box ul.event-bridge-for-activitypub-list { - margin-left: 0.6em; -} - -.event-bridge-for-activitypub-settings-page .box pre { - padding: 1rem; - min-height: 200px; - box-shadow: none; - border-radius: 15px; - border: 1px solid #dfe0e2; - background-color: #f7f7f7; -} - -.event-bridge-for-activitypub-settings td { - padding-top: 20px; - padding-bottom: 20px; -} - -.event-bridge-for-activitypub-settings-header { - text-align: center; - margin: 0 0 1rem; -} - -.event-bridge-for-activitypub-settings-title-section { - display: flex; - align-items: center; - justify-content: center; - clear: both; - padding-top: 8px; -} - -.event-bridge-for-activitypub-settings-tabs-wrapper { - display: -ms-inline-grid; - -ms-grid-columns: auto auto auto auto; - vertical-align: top; - display: inline-grid; - grid-template-columns: auto auto auto auto; -} - -.event-bridge-for-activitypub-settings-tab.active { - box-shadow: inset 0 -3px #3582c4; - font-weight: 600; -} - -.event-bridge-for-activitypub-settings-tab { - display: block; - text-decoration: none; - color: inherit; - padding: .5rem 1rem 1rem; - margin: 0 1rem; - transition: box-shadow .5s ease-in-out; -} - -.event-bridge-for-activitypub-settings .box h3 { - font-size: 1.15em; - margin-bottom: 0em; -} - -#event_bridge_for_activitypub_initially_activated { - display: hidden; -} - -/* Accordions for admin pages */ -.event-bridge-for-activitypub-settings-accordion { - border: 1px solid #c3c4c7; -} - -.event-bridge-for-activitypub-settings-accordion-heading { - margin: 0; - border-top: 1px solid #c3c4c7; - font-size: inherit; - line-height: inherit; - font-weight: 600; - color: inherit; -} - -.event-bridge-for-activitypub-settings-accordion-heading:first-child { - border-top: none; -} - -.event-bridge-for-activitypub-settings-accordion-panel { - margin: 0; - padding: 1em 1.5em; - background: #fff; -} - -.event-bridge-for-activitypub-settings-accordion-trigger { - background: #fff; - border: 0; - color: #2c3338; - cursor: pointer; - display: flex; - font-weight: 400; - margin: 0; - padding: 1em 3.5em 1em 1.5em; - min-height: 46px; - position: relative; - text-align: left; - width: 100%; - align-items: center; - justify-content: space-between; - -webkit-user-select: auto; - user-select: auto; -} - -.event-bridge-for-activitypub-settings-accordion-trigger { - color: #2c3338; - cursor: pointer; - font-weight: 400; - text-align: left; -} - -.event-bridge-for-activitypub-settings-accordion-trigger .title { - pointer-events: none; - font-weight: 600; - flex-grow: 1; -} - -.event-bridge-for-activitypub-settings-accordion-trigger .icon, -.event-bridge-for-activitypub-settings-accordion-viewed .icon { - border: solid #50575e medium; - border-width: 0 2px 2px 0; - height: .5rem; - pointer-events: none; - position: absolute; - right: 1.5em; - top: 50%; - transform: translateY(-70%) rotate(45deg); - width: .5rem; -} - -.event-bridge-for-activitypub-settings-accordion-trigger[aria-expanded="true"] .icon { - transform: translateY(-30%) rotate(-135deg); -} - -.event-bridge-for-activitypub-settings-accordion-trigger:active, -.event-bridge-for-activitypub-settings-accordion-trigger:hover { - background: #f6f7f7; -} - -.event-bridge-for-activitypub-settings-accordion-trigger:focus { - color: #1d2327; - border: none; - box-shadow: none; - outline-offset: -1px; - outline: 2px solid #2271b1; - background-color: #f6f7f7; -} - -.event-bridge-for-activitypub-settings-inline-icon { - width: 1.5em; - height: 1.5em; - vertical-align: middle; - margin: 0 0.3em; -} - -code.event-bridge-for-activitypub-settings-example-url { - display: block; - background: rgb(28, 29, 33); - padding: 8px; - margin: 10px 0px 10px 0; - border-radius: 7px; - color: #d5d5d6; - overflow-x: auto; - word-break: break-all; -} - -#event_bridge_for_activitypub_summary_type_custom-details { - display: none; -} - -#event_bridge_for_activitypub_summary_type_custom-details > details { - padding: 0.5em; -} - -.event_bridge_for_activitypub-list { - list-style: disc; - padding-left: 22px; -} - -.event_bridge_for_activitypub-admin-table-container { - padding-left: 22px; -} - -.event_bridge_for_activitypub-admin-table-top > h2 { - display: inline-block; - font-size: 23px; - font-weight: 400; - margin: 0 10px 0 2px; - padding: 9px 0 4px; - line-height: 1.3; -} - -.event_bridge_for_activitypub-admin-table-top > a { - display: inline-block; -} - -.settings_page_event-bridge-for-activitypub .notice-warning { - background: #fff; - border: 1px solid #c3c4c7; - border-left-width: 4px; - box-shadow: 0 1px 1px rgba(0,0,0,.04); - margin: 5px 15px 2px; - padding: 1px 12px; - border-left-color: #dba617; -} - -.event-bridge-for-activitypub-settings .select-cell::before { - content: "\21D2"; - margin-right: 8px; - color: inherit; -} - -ul.event-bridge-for-activitypub-syntax-list { - list-style: disc; -} - -ul.event-bridge-for-activitypub-syntax-list > li { - margin: 6px 6px 6px 20px; -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/acknowledgement-NGI0Entrust.svg b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/acknowledgement-NGI0Entrust.svg deleted file mode 100644 index 0d211b38..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/acknowledgement-NGI0Entrust.svg +++ /dev/null @@ -1,121 +0,0 @@ - - - -image/svg+xml - - - - - - -NGI Zero Entrust - - - - diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/acknowledgement-NLnet.svg b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/acknowledgement-NLnet.svg deleted file mode 100644 index 7980346a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/acknowledgement-NLnet.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/activitypub.svg b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/activitypub.svg deleted file mode 100644 index f56d428f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/activitypub.svg +++ /dev/null @@ -1,288 +0,0 @@ - - - - - ActivityPub logo - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - ActivityPub logo - - 2017-04-15 - - - Robert Martinez - - - - - ActivityPub - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/fediverse.svg b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/fediverse.svg deleted file mode 100644 index a789df22..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/fediverse.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/gancio.png b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/gancio.png deleted file mode 100644 index d53e1632fbb3fea130105b2cc79c4ccc7a93f296..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3576 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 A-v9sr diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/mastodon.svg b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/mastodon.svg deleted file mode 100644 index 0f8baebf..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/mastodon.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/mobilizon.svg b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/mobilizon.svg deleted file mode 100644 index 8b5d57e5..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/img/mobilizon.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/js/event-bridge-for-activitypub-admin.js b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/js/event-bridge-for-activitypub-admin.js deleted file mode 100644 index 3715707b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/assets/js/event-bridge-for-activitypub-admin.js +++ /dev/null @@ -1,34 +0,0 @@ -jQuery( function( $ ) { - // Accordion handling in various areas. - $( '.event-bridge-for-activitypub-settings-accordion' ).on( 'click', '.event-bridge-for-activitypub-settings-accordion-trigger', function() { - var isExpanded = ( 'true' === $( this ).attr( 'aria-expanded' ) ); - - if ( isExpanded ) { - $( this ).attr( 'aria-expanded', 'false' ); - $( '#' + $( this ).attr( 'aria-controls' ) ).attr( 'hidden', true ); - } else { - $( this ).attr( 'aria-expanded', 'true' ); - $( '#' + $( this ).attr( 'aria-controls' ) ).attr( 'hidden', false ); - } - } ); - - // Function to toggle visibility of custom details based on selected radio button. - function toggleCustomDetailsForSummary() { - if ($("#event_bridge_for_activitypub_summary_type_custom").is(':checked')) { - $("#event_bridge_for_activitypub_summary_type_custom-details").show(); - } else { - $("#event_bridge_for_activitypub_summary_type_custom-details").hide(); - } - } - - // Run the toggle function on page load. - $(document).ready(function() { - toggleCustomDetailsForSummary(); // Set the correct state on load. - - // Listen for changes on the radio buttons - $("input[name=event_bridge_for_activitypub_summary_type]").change(function() { - toggleCustomDetailsForSummary(); // Update visibility on change. - }); - }); - -} ); diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/build/reminder/block.json b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/build/reminder/block.json deleted file mode 100644 index ad2fc046..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/build/reminder/block.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "reminder", - "title": "Reminder Plugin: not a block, but block.json is very useful.", - "category": "widgets", - "icon": "admin-comments", - "keywords": [], - "editorScript": "file:./plugin.js" -} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/build/reminder/plugin.asset.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/build/reminder/plugin.asset.php deleted file mode 100644 index 169666b7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/build/reminder/plugin.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('react-jsx-runtime', 'wp-components', 'wp-core-data', 'wp-data', 'wp-editor', 'wp-i18n', 'wp-plugins'), 'version' => 'd491284dfb7e5078a777'); diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/build/reminder/plugin.js b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/build/reminder/plugin.js deleted file mode 100644 index cd5cfa27..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/build/reminder/plugin.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";const e=window.wp.editor,t=window.wp.plugins,i=window.wp.components,n=window.wp.data,a=window.wp.coreData,r=window.wp.i18n,d=window.ReactJSXRuntime,p=activityPubEventBridge.reminderTypeGap;(0,t.registerPlugin)("event-bridge-for-activitypub-reminder",{render:()=>{const t=(0,n.useSelect)((e=>e("core/editor").getCurrentPostType()),[]),[_,b]=(0,a.useEntityProp)("postType",t,"meta"),u=_?.event_bridge_for_activitypub_reminder_time_gap?_?.event_bridge_for_activitypub_reminder_time_gap:p;return(0,d.jsx)(e.PluginDocumentSettingPanel,{name:"activitypub",title:(0,r.__)("Send reminder before event's start","activitypub"),children:(0,d.jsx)(i.SelectControl,{label:(0,r.__)("Time gap","activitypub"),value:u,options:[{label:(0,r.__)("Disabled","event-bridge-for-activitypub"),value:0},{label:(0,r.__)("6 hours","event-bridge-for-activitypub"),value:21600},{label:(0,r.__)("1 day","event-bridge-for-activitypub"),value:86400},{label:(0,r.__)("3 days","event-bridge-for-activitypub"),value:259200},{label:(0,r.__)("1 week","event-bridge-for-activitypub"),value:604800}],onChange:e=>{b({..._,event_bridge_for_activitypub_reminder_time_gap:e})},__nextHasNoMarginBottom:!0})})}})})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/event-bridge-for-activitypub.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/event-bridge-for-activitypub.php deleted file mode 100644 index 179cbd7e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/event-bridge-for-activitypub.php +++ /dev/null @@ -1,39 +0,0 @@ -NGI0 Entrust Fund, a fund established by NLnet. - * Plugin URI: https://event-federation.eu/ - * Version: 1.1.0 - * Author: André Menrath - * Author URI: https://graz.social/@linos - * Text Domain: event-bridge-for-activitypub - * License: AGPL-3.0-or-later - * License URI: https://www.gnu.org/licenses/agpl-3.0.html - * Requires PHP: 7.4 - * Requires Plugins: activitypub - * - * Requires at least ActivityPub plugin with version >= 5.6.1. ActivityPub plugin tested up to: 5.7.0. - * - * @package Event_Bridge_For_ActivityPub - * @license AGPL-3.0-or-later - */ - -// Exit if accessed directly. -defined( 'ABSPATH' ) || exit; // @codeCoverageIgnore - -define( 'EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); -define( 'EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_BASENAME', plugin_basename( __FILE__ ) ); -define( 'EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_FILE', plugin_dir_path( __FILE__ ) . '/' . basename( __FILE__ ) ); -define( 'EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); -define( 'EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_VERSION', current( get_file_data( __FILE__, array( 'Version' ), 'plugin' ) ) ); -define( 'EVENT_BRIDGE_FOR_ACTIVITYPUB_DOMAIN', 'event-bridge-for-activitypub' ); -define( 'EVENT_BRIDGE_FOR_ACTIVITYPUB_ACTIVITYPUB_PLUGIN_MIN_VERSION', '5.6.1' ); -define( 'EVENT_BRIDGE_FOR_ACTIVITYPUB_SUMMARY_TEMPLATE', "[ap_start_time]\n[ap_end_time]\n[ap_location]\n\n[ap_content]" ); -define( 'EVENT_BRIDGE_FOR_ACTIVITYPUB_DEFAULT_SUMMARY_TYPE', 'preset' ); - -// Include and register the autoloader class for automatic loading of plugin classes. -require_once EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_DIR . '/includes/class-autoloader.php'; -Event_Bridge_For_ActivityPub\Autoloader::register(); - -// Initialize the plugin. -Event_Bridge_For_ActivityPub\Setup::get_instance(); diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/class-handler.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/class-handler.php deleted file mode 100644 index 3081c01d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/class-handler.php +++ /dev/null @@ -1,35 +0,0 @@ - array( - 'name' => _x( 'Event Sources', 'post_type plural name', 'event-bridge-for-activitypub' ), - 'singular_name' => _x( 'Event Source', 'post_type single name', 'event-bridge-for-activitypub' ), - ), - 'public' => false, - 'hierarchical' => false, - 'rewrite' => false, - 'query_var' => false, - 'delete_with_user' => false, - 'can_export' => true, - 'supports' => array(), - ) - ); - - \register_post_meta( - self::POST_TYPE, - '_activitypub_actor_id', - array( - 'type' => 'string', - 'single' => true, - 'sanitize_callback' => 'sanitize_url', - ) - ); - - \register_post_meta( - self::POST_TYPE, - '_activitypub_errors', - array( - 'type' => 'string', - 'single' => false, - 'sanitize_callback' => function ( $value ) { - if ( ! is_string( $value ) ) { - throw new \Exception( 'Error message is no valid string' ); - } - - return esc_sql( $value ); - }, - ) - ); - - \register_post_meta( - self::POST_TYPE, - '_activitypub_actor_json', - array( - 'type' => 'string', - 'single' => true, - 'sanitize_callback' => function ( $value ) { - return sanitize_text_field( $value ); - }, - ) - ); - - \register_post_meta( - self::POST_TYPE, - '_activitypub_inbox', - array( - 'type' => 'string', - 'single' => true, - 'sanitize_callback' => 'sanitize_url', - ) - ); - - \register_post_meta( - self::POST_TYPE, - '_event_bridge_for_activitypub_utilize_announces', - array( - 'type' => 'string', - 'single' => true, - 'sanitize_callback' => function ( $value ) { - if ( 'same_origin' === $value ) { - return 'same_origin'; - } - return ''; - }, - ) - ); - - \register_post_meta( - self::POST_TYPE, - '_event_bridge_for_activitypub_accept_of_follow', - array( - 'type' => 'string', - 'single' => true, - 'sanitize_callback' => 'sanitize_url', - ) - ); - - \register_post_meta( - self::POST_TYPE, - '_event_bridge_for_activitypub_event_count', - array( - 'type' => 'integer', - 'single' => true, - 'sanitize_callback' => 'absint', - 'default' => '0', - ) - ); - } - - /** - * Add new Event Source. - * - * @param string $actor The Actor URL/ID. - * - * @return Event_Source|WP_Error|null The Followed (WP_Post array) or an WP_Error. - */ - public static function add_event_source( $actor ) { - $meta = get_remote_metadata_by_actor( $actor ); - - if ( is_tombstone( $meta ) ) { - return $meta; - } - - if ( \is_wp_error( $meta ) ) { - return $meta; - } - - if ( empty( $meta ) ) { - return null; - } - - $event_source = new Event_Source(); - $event_source->from_array( $meta ); - - $post_id = $event_source->save(); - - if ( \is_wp_error( $post_id ) ) { - return $post_id; - } - - self::delete_event_source_transients(); - - self::queue_follow_actor( $actor ); - - return $event_source; - } - - /** - * Compose the ActivityPub ID of a follow request. - * - * @param string $follower_id The ActivityPub ID of the actor that followers the other one. - * @param string $followed_id The ActivityPub ID of the followed actor. - * @return string The `Follow` ID. - */ - public static function compose_follow_id( $follower_id, $followed_id ) { - return $follower_id . '#follow-' . \preg_replace( '~^https?://~', '', $followed_id ); - } - - /** - * Delete all transients related to the event sources. - * - * @return void - */ - public static function delete_event_source_transients(): void { - \delete_transient( 'event_bridge_for_activitypub_event_sources' ); - \delete_transient( 'event_bridge_for_activitypub_event_sources_hosts' ); - } - - /** - * Check whether an attachment is set as a featured image of any post. - * - * @param string|int $attachment_id The numeric post ID of the attachment. - * @return bool - */ - public static function is_attachment_featured_image( $attachment_id ): bool { - if ( ! is_numeric( $attachment_id ) ) { - return false; - } - - // Query posts with the given attachment ID as their featured image. - $args = array( - 'post_type' => 'any', - 'meta_query' => array( - array( - 'key' => '_thumbnail_id', - 'value' => $attachment_id, - 'compare' => '=', - ), - ), - 'fields' => 'ids', // Only retrieve post IDs for performance. - 'numberposts' => 1, // We only need one match to confirm. - ); - - $posts = \get_posts( $args ); - - return ! empty( $posts ); - } - - /** - * Delete all posts of an event source. - * - * @param int $event_source_post_id The WordPress Post ID of the event source. - * @return void - */ - public static function delete_events_by_event_source( $event_source_post_id ): void { - global $wpdb; - $results = $wpdb->get_results( - $wpdb->prepare( - "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = %s AND meta_value = %s", - '_event_bridge_for_activitypub_event_source', - absint( $event_source_post_id ) - ) - ); - - // If no matching posts are found, return early. - if ( empty( $results ) ) { - return; - } - - // Loop through the posts and delete them permanently. - foreach ( $results as $result ) { - // Check if the post has a thumbnail. - $thumbnail_id = \get_post_thumbnail_id( $result->post_id ); - - if ( $thumbnail_id ) { - // Remove the thumbnail from the post. - \delete_post_thumbnail( $result->post_id ); - - // Delete the attachment (and its files) from the media library. - if ( self::is_attachment_featured_image( $thumbnail_id ) ) { - \wp_delete_attachment( $thumbnail_id, true ); - } - } - - \wp_delete_post( $result->post_id, true ); - } - - // Clean up the query. - \wp_reset_postdata(); - } - - /** - * Remove an Event Source (=Followed ActivityPub actor). - * - * @param int|string $event_source_post_id The Events Sources Post ID or ActivityPub ID. - * - * @return void Post data on success, false or null on failure. - */ - public static function remove_event_source( $event_source_post_id ): void { - $event_source = Event_Source::get_by_id( $event_source_post_id ); - - if ( ! $event_source ) { - return; - } - - self::delete_events_by_event_source( $event_source->get__id() ); - - self::delete_event_source_transients(); - - // Temporary hack. - $post = \get_post( $event_source->get__id() ); - $post->post_status = 'draft'; - - if ( $post instanceof \WP_Post ) { - $post = \get_object_vars( $post ); - $post = \wp_slash( $post ); - $post = \wp_update_post( $post ); - } - - self::queue_unfollow_actor( $event_source->get_id() ); - } - - /** - * Get all Event-Sources. - * - * It returns associative arrays, where the keys are the WordPress post IDs and the values are the ActivityPub IDs. - * For example: - * array( - * 15 => 'https://remote.example/actors/event_organizer1', - * 19 => 'https://remote2.example/users/johnmastodon', - * ) - * - * @return array List of `Event Sources`: => - */ - public static function get_event_sources(): array { - $event_sources = get_transient( 'event_bridge_for_activitypub_event_sources' ); - - if ( $event_sources && is_array( $event_sources ) ) { - return $event_sources; - } - - $event_sources = self::get_event_sources_with_count()['actors']; - - set_transient( 'event_bridge_for_activitypub_event_sources', $event_sources ); - - return $event_sources; - } - - /** - * Get the Event Sources along with a total count for pagination purposes. - * - * @param int $number Maximum number of results to return. - * @param int $page Page number. - * @param array $args The WP_Query arguments. - * - * @return array { - * Data about the event sources. - * - * @type array $actors List of `Event Sources`: => - * @type int $total Total number of followers. - * } - */ - public static function get_event_sources_with_count( $number = -1, $page = null, $args = array() ): array { - $defaults = array( - 'post_type' => self::POST_TYPE, - 'posts_per_page' => $number, - 'paged' => $page, - 'orderby' => 'ID', - 'order' => 'DESC', - 'post_status' => array( 'publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit' ), - ); - - $args = wp_parse_args( $args, $defaults ); - $query = new WP_Query( $args ); - $total = $query->found_posts; - $actors = array(); - - foreach ( $query->get_posts() as $post ) { - $actors[ $post->ID ] = get_post_meta( $post->ID, '_activitypub_actor_id', true ); - } - - $event_sources = compact( 'actors', 'total' ); - - return $event_sources; - } - - /** - * Queue a hook to run async. - * - * @param string $hook The hook name. - * @param array $args The arguments to pass to the hook. - * @param string $unqueue_hook Optional a hook to unschedule before queuing. - * @return void|bool|WP_Error Whether the hook was queued. - */ - public static function queue( $hook, $args, $unqueue_hook = null ) { - if ( $unqueue_hook ) { - $hook_timestamp = \wp_next_scheduled( $unqueue_hook, $args ); - if ( $hook_timestamp ) { - \wp_unschedule_event( $hook_timestamp, $unqueue_hook, $args ); - } - } - - if ( \wp_next_scheduled( $hook, $args ) ) { - return; - } - - return \wp_schedule_single_event( \time(), $hook, $args ); - } - - /** - * Prepare to follow an ActivityPub actor via a scheduled event. - * - * @param string $actor The ActivityPub actor. - * - * @return bool Whether the event was queued. - */ - public static function queue_follow_actor( $actor ): bool { - $queued = self::queue( - 'event_bridge_for_activitypub_follow', - array( $actor ), - 'event_bridge_for_activitypub_unfollow' - ); - - if ( \is_wp_error( $queued ) ) { - return false; - } - - // Following this actor has already been queued. - if ( null === $queued ) { - return true; - } - - return $queued; - } - - /** - * Follow an ActivityPub actor via the Blog user. - * - * @param string $actor_id The ID/URL of the Actor. - */ - public static function activitypub_follow_actor( $actor_id ) { - $actor = Event_Source::get_by_id( $actor_id ); - - if ( ! $actor ) { - return $actor; - } - - $inbox = $actor->get_shared_inbox(); - $to = $actor->get_id(); - - $from_actor = new Blog(); - - $activity = new \Activitypub\Activity\Activity(); - $activity->set_type( 'Follow' ); - $activity->set_to( null ); - $activity->set_cc( null ); - $activity->set_actor( $from_actor->get_id() ); - $activity->set_object( $to ); - $activity->set_id( self::compose_follow_id( $from_actor->get_id(), $to ) ); - $activity = $activity->to_json(); - \Activitypub\safe_remote_post( $inbox, $activity, \Activitypub\Collection\Actors::BLOG_USER_ID ); - } - - /** - * Prepare to unfollow an actor via a scheduled event. - * - * @param string $actor The ActivityPub actor ID. - * - * @return bool|void|WP_Error Whether the event was queued. - */ - public static function queue_unfollow_actor( $actor ) { - $queued = self::queue( - 'event_bridge_for_activitypub_unfollow', - array( $actor ), - 'event_bridge_for_activitypub_follow' - ); - - if ( \is_wp_error( $queued ) ) { - return false; - } - - // Following this actor has already been queued. - if ( null === $queued ) { - return true; - } - - return $queued; - } - - /** - * Unfollow an ActivityPub actor. - * - * @param string $actor The ActivityPub ID of the actor to unfollow. - * @return void - */ - public static function activitypub_unfollow_actor( $actor ): void { - $actor = Event_Source::get_by_id( $actor ); - - if ( ! $actor ) { - return; - } - - $inbox = $actor->get_shared_inbox(); - $to = $actor->get_id(); - - $from_actor = new Blog(); - - if ( ! $inbox ) { - return; - } - - $activity = new \Activitypub\Activity\Activity(); - $activity->set_type( 'Undo' ); - $activity->set_to( null ); - $activity->set_cc( null ); - $activity->set_actor( $from_actor->get_id() ); - $activity->set_object( - array( - 'type' => 'Follow', - 'actor' => $actor, - 'object' => $to, - 'id' => self::compose_follow_id( $from_actor->get_id(), $to ), - ) - ); - $activity->set_id( $from_actor->get_id() . '#unfollow-' . \preg_replace( '~^https?://~', '', $to ) ); - $activity = $activity->to_json(); - \Activitypub\safe_remote_post( $inbox, $activity, \Activitypub\Collection\Actors::BLOG_USER_ID ); - - $actor->delete(); - - self::delete_event_source_transients(); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/handler/class-accept.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/handler/class-accept.php deleted file mode 100644 index ab7b63f1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/handler/class-accept.php +++ /dev/null @@ -1,76 +0,0 @@ -get_id(), $activity['actor'] ); - - // Check if the object of the `Accept` is indeed the `Follow` request we sent to that actor. - if ( object_to_uri( $activity['object'] ) !== $follow_id ) { - return; - } - - // Save the accept status of the follow request to the event source post. - \update_post_meta( $event_source_post_id, '_event_bridge_for_activitypub_accept_of_follow', $activity['id'] ); - \wp_update_post( - array( - 'ID' => $event_source_post_id, - 'post_status' => 'publish', - ) - ); - - // Trigger the backfilling of events from this actor. - \do_action( 'event_bridge_for_activitypub_backfill_events', $event_source_post_id ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/handler/class-create.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/handler/class-create.php deleted file mode 100644 index 74ff5438..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/handler/class-create.php +++ /dev/null @@ -1,76 +0,0 @@ -get_actor_object()->get_id(), // Gets the WordPress user that "owns" the object by ActivityPub means. - $activity['id'], - Actor::init_from_array( $actor ) - ); - } - - /** - * Send "Ignore" response. - * - * @param string $actor The actors ActivityPub ID which sends the response. - * @param string $ignored The ID of the Activity that gets ignored. - * @param Actor|mixed $to The target actor. - */ - public static function send_ignore_response( $actor, $ignored, $to ) { - // Get actor object that owns the object that was targeted by the ignored activity. - $actor = Actors::get_by_resource( $actor ); - - if ( \is_wp_error( $to ) || \is_wp_error( $actor ) ) { - return; - } - - // Get inbox. - $inbox = $to->get_inbox(); - - if ( ! $inbox ) { - return; - } - - // Send "Ignore" activity. - $activity = new Activity(); - $activity->set_type( 'Ignore' ); - $activity->set_object( \esc_url_raw( $ignored ) ); - $activity->set_actor( $actor->get_id() ); - $activity->set_to( $to->get_id() ); - $activity->set_id( $actor->get_id() . '#ignore-' . \preg_replace( '~^https?://~', '', $ignored ) ); - $activity->set_sensitive( null ); - - // @phpstan-ignore-next-line - Http::post( $inbox, $activity->to_json(), $actor->get__id() ); - } - - /** - * Get the WordPress Post ID by the ActivityPub ID. - * - * @param string $activitypub_id The ActivityPub objects ID. - * @return int The WordPress post ID. - */ - private static function get_post_id_by_activitypub_id( $activitypub_id ) { - // Parse the URL and extract its components. - $parsed_url = wp_parse_url( $activitypub_id ); - $home_url = \trailingslashit( \home_url() ); - - // Ensure the base URL matches the home URL. - if ( \trailingslashit( "{$parsed_url['scheme']}://{$parsed_url['host']}" ) !== $home_url ) { - return 0; - } - - // Check for a valid query string and parse it. - if ( isset( $parsed_url['query'] ) ) { - parse_str( $parsed_url['query'], $query_vars ); - - // Ensure the only parameter is 'p'. - if ( count( $query_vars ) === 1 && isset( $query_vars['p'] ) ) { - return intval( $query_vars['p'] ); // Return the post ID. - } - } - - // Fallback: legacy ActivityPub plugin (before version 3.0.0) used pretty permalinks as `id`. - return \url_to_postid( $activitypub_id ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/handler/class-undo.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/handler/class-undo.php deleted file mode 100644 index c2ad5aaa..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/handler/class-undo.php +++ /dev/null @@ -1,73 +0,0 @@ -get_results( - $wpdb->prepare( - "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = %s AND meta_value = %s", - '_event_bridge_for_activitypub_accept_of_follow', - $accept_id - ) - ); - - // If no event source with that accept ID is found return. - if ( empty( $results ) ) { - return; - } - - $post_id = reset( $results )->post_id; - - \delete_post_meta( $post_id, '_event_bridge_for_activitypub_accept_of_follow' ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/handler/class-update.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/handler/class-update.php deleted file mode 100644 index 1281a95c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/handler/class-update.php +++ /dev/null @@ -1,76 +0,0 @@ -get_icon(); - - if ( is_string( $icon ) ) { - return $icon; - } - - if ( isset( $icon['url'] ) && is_string( $icon['url'] ) ) { - return $icon['url']; - } - - return ''; - } - - /** - * Return the Post-IDs of all events cached by this event source. - */ - public static function get_cached_events(): array { - return array(); - } - - /** - * Getter for URL attribute. - * - * @return string The URL. - */ - public function get_url() { - if ( $this->url ) { - return $this->url; - } - - return $this->id; - } - - /** - * Get the outbox. - * - * @return ?string The outbox URL. - */ - public function get_outbox() { - if ( $this->outbox ) { - return $this->outbox; - } - - $actor_json = \get_post_meta( $this->get__id(), '_activitypub_actor_json', true ); - - if ( ! $actor_json ) { - return null; - } - - $actor = \json_decode( $actor_json, true ); - - if ( ! isset( $actor['outbox'] ) ) { - \do_action( 'event_bridge_for_activitypub_write_log', array( "[ACTIVITYPUB] Did not find outbox URL for actor {$actor}" ) ); - return null; - } - - return $actor['outbox']; - } - - /** - * Get the Event Source Post ID by the ActivityPub ID. - * - * @param string $activitypub_actor_id The ActivityPub actor ID. - * @return int|false The Event Sources Post ID, if a WordPress Post representing it is found, false otherwise. - */ - public static function get_post_id_by_activitypub_id( $activitypub_actor_id ) { - $event_sources = Event_Sources::get_event_sources(); - - return array_search( $activitypub_actor_id, $event_sources, true ); - } - - /** - * Get the Event Source by the ActivityPub ID or WordPress Post ID. - * - * @param int|string $event_source_id The ActivityPub actor ID as string or the Post ID as int of the Event Source. - * @return ?Event_Source The Event Sources if it exists, false otherwise. - */ - public static function get_by_id( $event_source_id ): ?Event_Source { - $post_id = is_integer( $event_source_id ) ? $event_source_id : self::get_post_id_by_activitypub_id( $event_source_id ); - - if ( ! $post_id ) { - return null; - } - - // Get Custom Post. - $event_source_post = \get_post( $post_id ); - - if ( ! $event_source_post ) { - return null; - } - - // Init From Custom Post. - $event_source = self::init_from_cpt( $event_source_post ); - - if ( ! $event_source ) { - return null; - } - - return $event_source; - } - - /** - * Convert a Custom-Post-Type input to an \Event_Bridge_For_ActivityPub\ActivityPub\Model\Event_Source. - * - * @param \WP_Post $post The post object. - * @return ?Event_Source - */ - public static function init_from_cpt( $post ): ?Event_Source { - if ( Event_Sources::POST_TYPE !== $post->post_type ) { - return null; - } - $actor_json = \get_post_meta( $post->ID, '_activitypub_actor_json', true ); - $object = static::init_from_json( $actor_json ); - - if ( \is_wp_error( $object ) ) { - return null; - } - - $object->set__id( $post->ID ); - $object->set_name( $post->post_title ); - $object->set_summary( $post->post_excerpt ); - $object->set_published( gmdate( 'Y-m-d H:i:s', strtotime( $post->post_date ) ) ); - $object->set_updated( gmdate( 'Y-m-d H:i:s', strtotime( $post->post_modified ) ) ); - $object->set_status( $post->post_status ); - $thumbnail_id = \get_post_thumbnail_id( $post ); - if ( $thumbnail_id ) { - $object->set_icon( - array( - 'type' => 'Image', - 'url' => \wp_get_attachment_image_url( $thumbnail_id, 'thumbnail', true ), - ) - ); - } - - if ( ! $object instanceof Event_Source ) { // To make phpstan happy. - return null; - } - - return $object; - } - - /** - * Validate the current Event Source ActivityPub actor object. - * - * @return boolean True if the verification was successful. - */ - public function is_valid(): bool { - // The minimum required attributes. - $required_attributes = array( - 'id', - 'preferredUsername', - 'inbox', - 'publicKey', - 'publicKeyPem', - ); - - foreach ( $required_attributes as $attribute ) { - if ( ! $this->get( $attribute ) ) { - return false; - } - } - - return true; - } - - /** - * Update the post meta. - */ - protected function get_post_meta_input() { - $meta_input = array(); - $meta_input['_activitypub_inbox'] = \sanitize_url( $this->get_shared_inbox() ); - $meta_input['_activitypub_actor_json'] = $this->to_json(); - $meta_input['_activitypub_actor_id'] = $this->get_id(); - - return $meta_input; - } - - /** - * Get the shared inbox, with a fallback to the inbox. - * - * @return string|null The URL to the shared inbox, the inbox or null. - */ - public function get_shared_inbox() { - if ( ! empty( $this->get_endpoints()['sharedInbox'] ) ) { - return $this->get_endpoints()['sharedInbox']; - } elseif ( ! empty( $this->get_inbox() ) ) { - return $this->get_inbox(); - } - - return null; - } - - /** - * Save the current Event Source object to Database within custom post type. - * - * @return int|WP_Error The post ID or an WP_Error. - */ - public function save() { - Event_Sources::delete_event_source_transients(); - - if ( ! $this->is_valid() ) { - return new WP_Error( 'activitypub_invalid_follower', __( 'Invalid Follower', 'event-bridge-for-activitypub' ), array( 'status' => 400 ) ); - } - - if ( ! $this->get__id() ) { - global $wpdb; - - // phpcs:ignore WordPress.DB.DirectDatabaseQuery - $post_id = $wpdb->get_var( - $wpdb->prepare( - "SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_activitypub_actor_id' AND meta_value=%s", - esc_sql( $this->get_id() ) - ) - ); - - if ( $post_id ) { - $post = get_post( $post_id ); - $this->set__id( $post->ID ); - } - } - - $post_id = $this->get__id(); - - $args = array( - 'ID' => $post_id, - 'post_title' => wp_strip_all_tags( sanitize_text_field( $this->get_name() ) ), - 'post_author' => 0, - 'post_type' => Event_Sources::POST_TYPE, - 'post_name' => esc_url_raw( $this->get_id() ), - 'post_excerpt' => sanitize_text_field( wp_kses( $this->get_summary(), 'user_description' ) ), - 'post_status' => 'pending', - 'meta_input' => $this->get_post_meta_input(), - ); - - if ( ! empty( $post_id ) ) { - // If this is an update, prevent the "added" date from being overwritten by the current date. - $post = get_post( $post_id ); - $args['post_date'] = $post->post_date; - $args['post_date_gmt'] = $post->post_date_gmt; - } - - $post_id = \wp_insert_post( $args ); - $this->_id = $post_id; - - // Abort if inserting or updating the post didn't work. - - // @phpstan-ignore-next-line - if ( is_wp_error( $post_id ) || 0 === $post_id ) { - return $post_id; - } - - // Delete old icon. - // Check if the post has a thumbnail. - $thumbnail_id = get_post_thumbnail_id( $post_id ); - - if ( $thumbnail_id ) { - // Remove the thumbnail from the post. - delete_post_thumbnail( $post_id ); - - // Delete the attachment (and its files) from the media library. - wp_delete_attachment( $thumbnail_id, true ); - } - - // Set new icon. - $icon = $this->get_icon(); - - if ( isset( $icon['url'] ) ) { - $image = media_sideload_image( sanitize_url( $icon['url'] ), $post_id, null, 'id' ); - } - if ( isset( $image ) && ! is_wp_error( $image ) ) { - set_post_thumbnail( $post_id, $image ); - } - - return $post_id; - } - - /** - * Delete an Event Source and it's profile image. - */ - public function delete() { - $post_id = $this->get__id(); - - if ( ! $post_id ) { - return false; - } - - $thumbnail_id = get_post_thumbnail_id( $post_id ); - - if ( $thumbnail_id ) { - wp_delete_attachment( $thumbnail_id, true ); - } - - $result = wp_delete_post( $post_id, false ) ?? false; - - if ( $result ) { - Event_Sources::delete_event_source_transients(); - } - - return $result; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/scheduler/class-event.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/scheduler/class-event.php deleted file mode 100644 index 668abc39..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/scheduler/class-event.php +++ /dev/null @@ -1,107 +0,0 @@ -is_event_post_type_of_active_event_plugin( $post->post_type ) ) { - return true; - } - - return false; - } - - /** - * Schedule Activities. - * - * @param string $new_status New post status. - * @param string $old_status Old post status. - * @param \WP_Post $post Post object. - */ - public static function maybe_schedule_event_post_activity( $new_status, $old_status, $post ): void { - if ( defined( 'WP_IMPORTING' ) && WP_IMPORTING ) { - return; - } - - if ( ! Setup::get_instance()->is_event_post_type_of_active_event_plugin( $post->post_type ) ) { - return; - } - - if ( Setup::is_post_disabled( $post ) ) { - return; - } - - switch ( $new_status ) { - case 'publish': - $type = ( 'publish' === $old_status ) ? 'Update' : 'Create'; - break; - - case 'draft': - $type = ( 'publish' === $old_status ) ? 'Update' : false; - break; - - case 'trash': - $type = 'Delete'; - break; - - default: - $type = false; - } - - // Do not send Activities if `$type` is not set or unknown. - if ( empty( $type ) ) { - return; - } - - $hook = 'event_bridge_for_activitypub_add_event_post_to_outbox'; - $args = array( $post, $type, $post->post_author ); - - if ( false === \wp_next_scheduled( $hook, $args ) ) { - \wp_schedule_single_event( \time() + 10, $hook, $args ); - } - } - - /** - * Add an event post to the outbox. - * - * @param \WP_Post $post The WP_Post object to add to the outbox. - * @param string $activity_type The type of the Activity. - * @param integer $user_id The User-ID. - */ - public static function add_event_post_to_outbox( $post, $activity_type, $user_id ): void { - $post = get_post( $post->ID ); - add_to_outbox( $post, $activity_type, $user_id ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-event-organiser.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-event-organiser.php deleted file mode 100644 index 4407c54f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-event-organiser.php +++ /dev/null @@ -1,78 +0,0 @@ -schedule = \eo_get_event_schedule( $item->ID ); - } - - /** - * Get the end time from the event object. - */ - public function get_end_time(): string { - return $this->schedule['end']->format( 'Y-m-d\TH:i:sP' ); - } - - /** - * Get the start time from the event object. - */ - public function get_start_time(): string { - return $this->schedule['start']->format( 'Y-m-d\TH:i:sP' ); - } - - /** - * Get location from the event object. - */ - public function get_location(): ?Place { - $venue = \get_the_terms( $this->item->ID, 'event-venue' ); - - if ( empty( $venue ) || is_wp_error( $venue ) ) { - return null; - } - - $venue = array_pop( $venue ); - - $location_transformer = new Event_Organiser_Location_Transformer( $venue ); - $location = $location_transformer->to_object(); - - return $location; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-event.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-event.php deleted file mode 100644 index 09468e20..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-event.php +++ /dev/null @@ -1,609 +0,0 @@ -item ); - } - - /** - * Set a hardcoded template for the content. - * - * This actually disabled templates for the content. - * Maybe this independent templates for events will be added later. - */ - protected function get_post_content_template(): string { - return '[ap_content]'; - } - - /** - * Extend the construction of the Post Transformer to also set the according taxonomy of the event post type. - * - * @param \WP_Post $item The WordPress post object (event). - * @param string $wp_taxonomy The taxonomy slug of the event post type. - */ - public function __construct( $item, $wp_taxonomy = 'category' ) { - parent::__construct( $item ); - $this->wp_taxonomy = $wp_taxonomy; - } - - /** - * Extract the join mode. - * - * Currently we don't handle joins, we always mark events as external. - * - * @return string - */ - public function get_join_mode(): ?string { - return 'external'; - } - - /** - * Extract the external participation url. - * - * Currently we don't handle joins, we always mark events as external. - * We just link back to the events HTML representation on our WordPress site. - * - * @return ?string The external participation URL. - */ - public function get_external_participation_url(): ?string { - return 'external' === $this->get_join_mode() ? $this->get_url() : null; - } - - /** - * Set the event category, via the mapping setting. - * - * @return ?string - */ - public function get_category(): ?string { - if ( is_null( $this->wp_taxonomy ) ) { - return null; - } - $current_category_mapping = \get_option( 'event_bridge_for_activitypub_event_category_mappings', array() ); - $terms = \get_the_terms( $this->item, $this->wp_taxonomy ); - - // Check if the event has a category set and if that category has a specific mapping return that one. - if ( ! is_wp_error( $terms ) && $terms && array_key_exists( $terms[0]->slug, $current_category_mapping ) ) { - return sanitize_text_field( $current_category_mapping[ $terms[0]->slug ] ); - } else { - // Return the default event category. - return sanitize_text_field( \get_option( 'event_bridge_for_activitypub_default_event_category', 'MEETING' ) ); - } - } - - /** - * Retrieves the excerpt text (may be HTML). Used for constructing the summary. - * - * @return ?string - */ - protected function retrieve_excerpt(): ?string { - if ( $this->item->post_excerpt ) { - return $this->item->post_excerpt; - } else { - return null; - } - } - - /** - * Get the start time. - * - * This is mandatory and must be implemented in the final event transformer class. - */ - abstract public function get_start_time(): string; - - /** - * Get the end time. - * - * This is not mandatory and therefore just return null by default. - */ - public function get_end_time(): ?string { - return null; - } - - /** - * Get a default for the location. - * - * This should be overridden in the actual event transformer. - * - * @return array|Place|null - */ - public function get_location() { - return null; - } - - /** - * Default value for the event status. - */ - public function get_status(): ?string { - return 'CONFIRMED'; - } - - /** - * Compose a human readable formatted start time. - */ - protected function format_start_time(): string { - return $this->format_time( $this->get_start_time() ); - } - - /** - * Compose a human readable formatted end time. - */ - protected function format_end_time(): string { - return $this->format_time( $this->get_end_time() ); - } - - /** - * Compose a human readable formatted time. - * - * @param ?string $time The time which needs to be formatted. - */ - protected static function format_time( $time ) { - if ( is_null( $time ) ) { - return ''; - } - $start_datetime = new DateTime( $time ); - $start_timestamp = $start_datetime->getTimestamp(); - $datetime_format = get_option( 'date_format' ) . ' ' . get_option( 'time_format' ); - return \wp_date( $datetime_format, $start_timestamp ); - } - - /** - * Generates output for the 'ap_start_time' shortcode. - * - * @param ?array $atts The shortcode's attributes. - * @return string The formatted start date and time of the event. - */ - public function shortcode_start_time( $atts ) { - $start_timestamp = $this->get_start_time(); - return $this->generate_time_output( $start_timestamp, $atts, '🗓️', __( 'Start', 'event-bridge-for-activitypub' ) ); - } - - /** - * Generates output for the 'ap_end_time' shortcode. - * - * @param ?array $atts The shortcode's attributes. - * @return string The formatted end date and time of the event. - */ - public function shortcode_end_time( $atts ) { - $end_timestamp = $this->get_end_time(); - return $this->generate_time_output( $end_timestamp, $atts, '⏳', __( 'End', 'event-bridge-for-activitypub' ) ); - } - - /** - * Generates the formatted time output for a shortcode. - * - * @param string|null $timestamp The timestamp for the event time. - * @param array $atts The shortcode attributes. - * @param string $icon The icon to display. - * @param string $label The label to display (e.g., 'Start', 'End'). - * @return string The formatted date and time, or an empty string if the timestamp is invalid. - */ - private function generate_time_output( $timestamp, $atts, $icon, $label ): string { - if ( ! $timestamp ) { - return ''; - } - - $args = shortcode_atts( - array( - 'icon' => 'true', - 'label' => 'true', - ), - $atts - ); - - $args['icon'] = filter_var( $args['icon'], FILTER_VALIDATE_BOOLEAN ); - $args['label'] = filter_var( $args['label'], FILTER_VALIDATE_BOOLEAN ); - - $output = array(); - - if ( $args['icon'] ) { - $output[] = $icon; - } - - if ( $args['label'] ) { - $output[] = $label . ':'; - } - - $output[] = self::format_time( $timestamp ); - - return implode( ' ', $output ); - } - - /** - * Generates output for the 'ap_location' shortcode. - * - * @param ?array $atts The shortcode's attributes. - * @return string The formatted location/address of the event. - */ - public function shortcode_location( $atts ) { - $args = shortcode_atts( - array( - 'icon' => 'true', - 'label' => 'true', - 'country' => 'true', - 'zip' => 'true', - 'city' => 'true', - 'street' => 'true', - ), - $atts, - 'ap_location' - ); - - // Convert attributes to booleans. - $args = array_map( - function ( $value ) { - return filter_var( $value, FILTER_VALIDATE_BOOLEAN ); - }, - $args - ); - - $location = $this->get_location(); - if ( ! $location ) { - return ''; - } - - $output = array(); - - if ( is_array( $location ) && isset( $location['type'] ) && 'VirtualLocation' === $location['type'] ) { - if ( $args['icon'] ) { - $output[] = '🔗'; - } - if ( $args['label'] && isset( $location['name'] ) ) { - $output[] = $location['name'] . ':'; - } - } else { - if ( $args['icon'] ) { - $output[] = '📍'; - } - - if ( $args['label'] ) { - $output[] = esc_html__( 'Location', 'event-bridge-for-activitypub' ) . ':'; - } - } - - $output[] = $this->get_formatted_address( true, $args ); - - // Join output array into a single string with spaces and return. - return implode( ' ', array_filter( $output ) ); - } - - /** - * Formats the address based on provided arguments. - * - * @param mixed $address The address data, either as a string or an array. - * @param array $args The arguments for which components to include. - * @return string The formatted address. - */ - protected static function format_address( $address, $args = array() ) { - if ( is_string( $address ) ) { - return esc_html( $address ); - } - - if ( empty( $args ) ) { - $args = array( - 'icon' => 'true', - 'title' => 'true', - 'country' => 'true', - 'zip' => 'true', - 'city' => 'true', - 'street' => 'true', - ); - } - - if ( is_array( $address ) ) { - $address_parts = array(); - - $components = array( - 'street' => 'streetAddress', - 'zip' => 'postalCode', - 'city' => 'addressLocality', - 'country' => 'addressCountry', - ); - - foreach ( $components as $arg_key => $address_key ) { - if ( $args[ $arg_key ] && ! empty( $address[ $address_key ] ) ) { - $address_parts[] = esc_html( $address[ $address_key ] ); - } - } - - return implode( ', ', $address_parts ); - } - - return ''; - } - - /** - * Format the category using the translation. - */ - protected function format_categories(): string { - if ( is_null( $this->wp_taxonomy ) ) { - return ''; - } - $categories = array(); - - // Add the federated category string. - require_once EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_DIR . '/includes/event-categories.php'; - $federated_category = $this->get_category(); - if ( array_key_exists( $federated_category, EVENT_BRIDGE_FOR_ACTIVITYPUB_EVENT_CATEGORIES ) ) { - $categories[] = EVENT_BRIDGE_FOR_ACTIVITYPUB_EVENT_CATEGORIES[ $federated_category ]; - } - - // Add all category terms. - $terms = \get_the_terms( $this->item, $this->wp_taxonomy ); - if ( $terms && ! is_wp_error( $terms ) ) { - foreach ( $terms as $term ) { - $categories[] = $term->name; - } - } - - if ( ! empty( $categories ) ) { - return implode( ' · ', array_unique( $categories ) ); - } - return ''; - } - - /** - * Register the shortcodes. - */ - public function register_shortcodes() { - Shortcodes::register(); - foreach ( array( 'location', 'start_time', 'end_time' ) as $shortcode ) { - \add_shortcode( 'ap_' . $shortcode, array( $this, 'shortcode_' . $shortcode ) ); - } - } - - /** - * Register the shortcodes. - */ - public function unregister_shortcodes() { - Shortcodes::unregister(); - foreach ( array( 'location', 'start_time', 'end_time' ) as $shortcode ) { - \remove_shortcode( 'ap_' . $shortcode ); - } - } - - /** - * Get the summary. - */ - public function get_summary(): ?string { - if ( 'preset' === get_option( 'event_bridge_for_activitypub_summary_type', 'preset' ) ) { - $summary = EVENT_BRIDGE_FOR_ACTIVITYPUB_SUMMARY_TEMPLATE; - } else { - $summary = $this->get_event_summary_template(); - } - - // It seems that shortcodes are only applied to published posts. - if ( is_preview() ) { - $this->item->post_status = 'publish'; - } - - // Register our shortcodes just in time. - - $this->register_shortcodes(); - - // Fill in the shortcodes. - \setup_postdata( $this->item ); - Shortcodes::register(); - $summary = \do_shortcode( $summary ); - \wp_reset_postdata(); - - $summary = \wpautop( $summary ); - $summary = \preg_replace( '/[\n\r\t]/', '', $summary ); - $summary = \trim( $summary ); - - $summary = \apply_filters( 'event_bridge_for_activitypub_the_summary', $summary, $this->item ); - - // Unregister the shortcodes. - $this->unregister_shortcodes(); - - if ( 'plain' === get_option( 'event_bridge_for_activitypub_summary_format', 'html' ) ) { - $summary = self::strip_html_preserve_linebreaks( $summary ); - } - - return $summary; - } - - /** - * Strip all HTML but preverse some line breaks. - * - * @param mixed $content The HTML input. - * @return string - */ - private static function strip_html_preserve_linebreaks( $content ): string { - // Replace
with newlines. - $content = preg_replace( '//i', "\n", $content ); - - // Replace closing

followed by

with double newlines (preserve paragraph breaks). - $content = preg_replace( '/<\/p>\s*

/', "\n\n", $content ); - - // Preserve list structure. - $content = preg_replace( '/<\/ul>/i', "\n", $content ); - $content = preg_replace( '/

  • /i', '- ', $content ); - $content = preg_replace( '/<\/li>/i', "\n", $content ); - - // Remove all remaining HTML tags. - $content = wp_strip_all_tags( $content ); - - // Normalize excessive newlines (more than 2 in a row to just 2). - $content = preg_replace( "/\n{3,}/", "\n\n", $content ); - - // Trim trailing newlines. - return trim( $content ); - } - - /** - * Get the address as a string. - * - * @param bool $include_location_name Whether to include the locations name. - * @param array $args The arguments forwarded to format_address. - * - * @return string - */ - public function get_formatted_address( $include_location_name = false, $args = array() ) { - $location = $this->get_location(); - - if ( $location instanceof Place ) { - $location_name = $location->get_name(); - $foramted_address = self::format_address( $location->get_address(), $args ); - - $loaction_parts = array(); - - if ( $location_name ) { - $location_parts[] = $location_name; - } - - if ( $foramted_address ) { - $location_parts[] = $foramted_address; - } - - if ( ! empty( $location_parts ) ) { - return implode( ', ', $location_parts ); - } - } elseif ( is_array( $location ) && isset( $location['type'] ) && 'VirtualLocation' === $location['type'] ) { - if ( isset( $location['url'] ) ) { - return $location['url']; - } - } - - return ''; - } - - /** - * Gets the template to use to generate the summary of the ActivityStreams representation of an event post. - * - * @return string The Template. - */ - protected function get_event_summary_template() { - $summary = \get_option( 'event_bridge_for_activitypub_custom_summary', EVENT_BRIDGE_FOR_ACTIVITYPUB_SUMMARY_TEMPLATE ); - $template = $summary ?? EVENT_BRIDGE_FOR_ACTIVITYPUB_SUMMARY_TEMPLATE; - - return apply_filters( 'event_bridge_for_activitypub_summary_template', $template, $this->item ); - } - - /** - * By default set the timezone of the WordPress site. - * - * This is likely to be overwritten by the actual transformer. - * - * @return string The timezone string of the site. - */ - public function get_timezone(): string { - return \wp_timezone_string(); - } - - /** - * Remove the permalink shortcode from a WordPress template. - * - * This used for the summary template, because the summary usually gets, - * used when converting a object, where the URL is usually appended anyway. - * - * @param string $template The template string. - * @param WP_Post|WP_Comment $item The item which was used to select the template. - */ - public static function remove_ap_permalink_from_template( $template, $item ) { - - // we could override the template here, to get out custom template from an option. - - if ( 'event' === $item->post_type ) { - $template = str_replace( '[ap_permalink]', '', $template ); - $template = str_replace( '[ap_permalink type="html"]', '', $template ); - } - - return $template; - } - - /** - * Generic function that converts an WP-Event object to an ActivityPub-Event object. - * - * @return Event_object|\WP_Error - */ - public function to_object() { - $activitypub_object = new Event_Object(); - $activitypub_object = $this->transform_object_properties( $activitypub_object ); - - // @phpstan-ignore-next-line - $activitypub_object->set_comments_enabled( $this->get_comments_enabled() ); - - if ( \is_wp_error( $activitypub_object ) ) { - return $activitypub_object; - } - - // maybe move the following logic (till end of the function) into getter functions. - - $published = \strtotime( $this->item->post_date_gmt ); - - $activitypub_object->set_published( \gmdate( 'Y-m-d\TH:i:s\Z', $published ) ); - - $updated = \strtotime( $this->item->post_modified_gmt ); - - if ( $updated > $published ) { - $activitypub_object->set_updated( \gmdate( 'Y-m-d\TH:i:s\Z', $updated ) ); - } - - $activitypub_object->set_content_map( - array( - $this->get_locale() => $this->get_content(), - ) - ); - - $activitypub_object->set_to( - array( - 'https://www.w3.org/ns/activitystreams#Public', - $this->get_actor_object()->get_followers(), - ) - ); - - // @phpstan-ignore-next-line - return $activitypub_object; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-eventin.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-eventin.php deleted file mode 100644 index fd518845..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-eventin.php +++ /dev/null @@ -1,166 +0,0 @@ -event_model = new Event_Model( $this->item->ID ); - } - - /** - * Get the end time from the event object. - */ - public function get_start_time(): string { - return \gmdate( 'Y-m-d\TH:i:s\Z', strtotime( $this->event_model->get_start_datetime() ) ); - } - - /** - * Get the end time from the event object. - */ - public function get_end_time(): string { - return \gmdate( 'Y-m-d\TH:i:s\Z', strtotime( $this->event_model->get_end_datetime() ) ); - } - - /** - * Get the timezone of the event. - */ - public function get_timezone(): string { - return $this->event_model->get_timezone(); - } - - /** - * Get whether the event is online. - * - * @return bool - */ - public function get_is_online(): bool { - return 'online' === $this->event_model->__get( 'event_type' ) ? true : false; - } - - /** - * Maybe add online link to attachments. - * - * @return array - */ - public function get_attachment(): array { - $attachment = parent::get_attachment(); - - $location = (array) $this->event_model->__get( 'location' ); - - // @phpstan-ignore-next-line - if ( array_key_exists( 'integration', $location ) && array_key_exists( $location['integration'], $location ) ) { - $online_link = array( - 'type' => 'Link', - 'mediaType' => 'text/html', - 'name' => $location[ $location['integration'] ], - 'href' => $location[ $location['integration'] ], - ); - $attachment[] = $online_link; - } - return $attachment; - } - - /** - * Compose the events tags. - */ - public function get_tag(): ?array { - // The parent tag function also fetches the mentions. - $tags = parent::get_tag(); - - $post_tags = \wp_get_post_terms( $this->item->ID, 'etn_tags' ); - $post_categories = \wp_get_post_terms( $this->item->ID, 'etn_category' ); - - if ( ! is_wp_error( $post_tags ) && $post_tags ) { - foreach ( $post_tags as $term ) { - $tag = array( - 'type' => 'Hashtag', - 'href' => \esc_url( \get_tag_link( $term->term_id ) ), - 'name' => esc_hashtag( $term->name ), - ); - $tags[] = $tag; - } - } - - if ( ! is_wp_error( $post_categories ) && $post_categories ) { - foreach ( $post_categories as $term ) { - $tag = array( - 'type' => 'Hashtag', - 'href' => \esc_url( \get_tag_link( $term->term_id ) ), - 'name' => esc_hashtag( $term->name ), - ); - $tags[] = $tag; - } - } - - if ( empty( $tags ) ) { - return null; - } - - return $tags; - } - - /** - * Get the location. - * - * @return ?Place - */ - public function get_location(): ?Place { - $location = (array) $this->event_model->__get( 'location' ); - - // @phpstan-ignore-next-line - if ( ! array_key_exists( 'address', $location ) ) { - return null; - } - - // @phpstan-ignore-next-line - $place = new Place(); - - $address = $location['address']; - - $place->set_name( $address ); - $place->set_address( $address ); - $place->set_sensitive( null ); - - return $place; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-eventon.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-eventon.php deleted file mode 100644 index c005e1aa..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-eventon.php +++ /dev/null @@ -1,186 +0,0 @@ -wp_taxonomy = $wp_taxonomy; - - $this->tax_meta = \get_option( 'evo_tax_meta' ); - } - - - /** - * Get content. - */ - public function get_content(): string { - $subtitle = \get_post_meta( $this->item->ID, 'evcal_subtitle', true ); - - $content = $subtitle ? $subtitle . '
    ' : ''; - $content = $content . parent::get_content(); - return $content; - } - - /** - * Get the event location(s). - * - * @return array|null The Place. - */ - public function get_location() { - $location = array(); - - $terms = \get_the_terms( $this->item->ID, 'event_location' ); - - // The terms may both contain virtual and physical Locations. - if ( ! empty( $terms ) ) { - foreach ( $terms as $term ) { - $location_transformer = new EventOn_Place_Transformer( $term ); - $location[] = $location_transformer->to_object()->to_array( false ); - } - } - - // Virtual Locations can also be directly int the post meta, not in terms! - $virtual_url = \get_post_meta( $this->item->ID, '_vir_url', true ); - $virtual_type = \get_post_meta( $this->item->ID, '_vir_type', true ); - - if ( $virtual_url ) { - $virtual_location = array( - 'type' => 'VirtualLocation', - 'url' => (string) $virtual_url, - ); - if ( $virtual_type ) { - $virtual_location['name'] = (string) $virtual_type; - } - $location[] = $virtual_location; - } - - // If we only have one location, send object directy, not in array. - if ( 1 === count( $location ) ) { - $location = reset( $location ); - } elseif ( empty( $location ) ) { - return null; - } - - return $location; - } - - /** - * Get the end time from the events metadata. - */ - public function get_end_time(): ?string { - $end_time = \get_post_meta( $this->item->ID, '_unix_end_ev', true ); - $timezone = \get_post_meta( $this->item->ID, '_evo_tz', true ); - $timezone = $timezone ? new \DateTimeZone( $timezone ) : null; - - if ( is_null( $end_time ) || empty( $end_time ) ) { - return null; - } - return \wp_date( 'Y-m-d\TH:i:sP', (int) $end_time, $timezone ); - } - - /** - * Get timezone - * - * @return string - */ - public function get_timezone(): string { - $timezone = \get_post_meta( $this->item->ID, '_evo_tz', true ); - - return $timezone ?? \wp_timezone_string(); - } - - /** - * Get the end time from the events metadata. - */ - public function get_start_time(): string { - $start_time = \get_post_meta( $this->item->ID, '_unix_start_ev', true ); - $timezone = \get_post_meta( $this->item->ID, '_evo_tz', true ); - $timezone = $timezone ? new \DateTimeZone( $timezone ) : null; - - return \wp_date( 'Y-m-d\TH:i:sP', (int) $start_time, $timezone ); - } - - /** - * Get the event link from the events metadata. - * - * @return ?array Associated array of an ActivityStreams Link object with the events URL. - */ - private function get_event_link(): ?array { - $event_link = \get_post_meta( $this->item->ID, 'event-link', true ); - $event_link_label = \get_post_meta( $this->item->ID, 'event-link-label', true ) ?? 'Event Link'; - if ( $event_link ) { - return array( - 'type' => 'Link', - 'name' => $event_link_label, - 'href' => \esc_url( $event_link ), - 'mediaType' => 'text/html', - ); - } - return null; - } - - /** - * Overrides/extends the get_attachments function to also add the event Link. - * - * @return array - */ - protected function get_attachment(): array { - $attachments = parent::get_attachment(); - if ( count( $attachments ) ) { - $attachments[0]['type'] = 'Document'; - $attachments[0]['name'] = 'Banner'; - } - $event_link = $this->get_event_link(); - if ( $event_link ) { - $attachments[] = $event_link; - } - return $attachments; - } - - /** - * Retrieves the excerpt text (may be HTML). Used for constructing the summary. - * - * @return ?string - */ - protected function retrieve_excerpt(): ?string { - if ( \get_post_meta( $this->item->ID, 'event-summary', true ) ) { - return \get_post_meta( $this->item->ID, 'event-summary', true ); - } else { - return parent::retrieve_excerpt(); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-eventprime.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-eventprime.php deleted file mode 100644 index b3008f69..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-eventprime.php +++ /dev/null @@ -1,70 +0,0 @@ -wp_object->ID, 'em_end_date', true ); - if ( $timestamp ) { - return \gmdate( 'Y-m-d\TH:i:s\Z', $timestamp ); - } else { - return null; - } - } - - /** - * Get the end time from the event object. - */ - public function get_start_time(): string { - $timestamp = \get_post_meta( $this->wp_object->ID, 'em_start_date', true ); - if ( $timestamp ) { - return \gmdate( 'Y-m-d\TH:i:s\Z', $timestamp ); - } else { - return ''; - } - } - - /** - * Get location from the event object. - */ - public function get_location(): ?Place { - $venue_term_id = \get_post_meta( $this->item->ID, 'em_venue', true ); - if ( ! $venue_term_id ) { - return null; - } - - $venue = \get_the_terms( $this->item->ID, 'em_venue' ); - - if ( empty( $venue ) || is_wp_error( $venue ) ) { - return null; - } - - $venue = array_pop( $venue ); - - $location_transformer = new EventPrime_Location_Transformer( $venue ); - $location = $location_transformer->to_object(); - - return $location; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-events-manager.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-events-manager.php deleted file mode 100644 index f61f50a6..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-events-manager.php +++ /dev/null @@ -1,248 +0,0 @@ -em_event = new EM_Event( $this->item->ID, 'post_id' ); - } - - /** - * Returns whether the even is online - * - * @return bool - */ - protected function is_online(): bool { - return \EM_Event_Locations\Event_Locations::is_enabled( 'url' ) && 'url' === $this->em_event->event_location_type; - } - - /** - * Get the event location. - * - * @return array|Place|null The Place. - */ - public function get_location() { - if ( $this->is_online() ) { - if ( property_exists( $this->em_event->event_location, 'data' ) ) { - $event_location = $this->em_event->event_location->data; - } else { - $event_location = array(); - } - - $event_link_url = isset( $event_location['url'] ) ? $event_location['url'] : null; - $event_link_text = isset( $event_location['text'] ) ? $event_location['text'] : esc_html__( 'Link', 'event-bridge-for-activitypub' ); - - if ( empty( $event_link_url ) ) { - return null; - } - - return array( - 'type' => 'VirtualLocation', - 'url' => \esc_url( $event_link_url ), - 'name' => \esc_html( $event_link_text ), - ); - } - - if ( ! \EM_Locations::is_enabled() ) { - return null; - } - - $em_location = $this->em_event->get_location(); - - if ( ! isset( $em_location->post_id ) || ! $em_location->post_id ) { - return null; - } - - $location_transformer = new Events_Manager_Place_Transformer( get_post( $em_location->post_id ) ); - $full_location_object = false; - $location = $location_transformer->to_object( $full_location_object ); - return $location; - } - - /** - * Get the end time from the events metadata. - */ - public function get_end_time(): ?string { - return null; - } - - /** - * Get the end time from the events metadata. - */ - public function get_start_time(): string { - $date_string = $this->em_event->event_start_date; - $time_string = $this->em_event->event_start_time; - $timezone_string = $this->em_event->event_timezone; - - // Create a DateTime object with the given date, time, and timezone. - $datetime = new DateTime( $date_string . ' ' . $time_string, new DateTimeZone( $timezone_string ) ); - - // Set the timezone for proper formatting. - $datetime->setTimezone( new DateTimeZone( 'UTC' ) ); - - // Format the DateTime object as 'Y-m-d\TH:i:s\Z'. - $formatted_date = $datetime->format( 'Y-m-d\TH:i:s\Z' ); - return $formatted_date; - } - - /** - * Returns the maximum attendee capacity. - * - * @return ?int - */ - public function get_maximum_attendee_capacity() { - return $this->em_event->event_spaces; - } - - /** - * Return the remaining attendee capacity - * - * @return ?int - */ - public function get_remaining_attendee_capacity(): ?int { - $em_bookings_count = $this->get_participant_count(); - $max_bookings = $this->em_event->event_spaces; - - if ( $max_bookings && $em_bookings_count ) { - return $this->em_event->event_spaces - $em_bookings_count; - } - - return null; - } - - /** - * Returns the current participant count. - * - * @return int - */ - public function get_participant_count(): int { - $em_bookings = $this->em_event->get_bookings()->get_bookings(); - return count( $em_bookings->bookings ); - } - - /** - * Get the event link as an ActivityPub Link object, but as an associative array. - * - * @return array|null - */ - private function get_event_link_attachment(): ?array { - if ( $this->is_online() ) { - if ( property_exists( $this->em_event->event_location, 'data' ) ) { - $event_location = $this->em_event->event_location->data; - } else { - $event_location = array(); - } - - $event_link_url = isset( $event_location['url'] ) ? $event_location['url'] : null; - $event_link_text = isset( $event_location['text'] ) ? $event_location['text'] : __( 'Link', 'event-bridge-for-activitypub' ); - - if ( empty( $event_link_url ) ) { - return null; - } - - return array( - 'type' => 'Link', - 'name' => \esc_html( $event_link_text ), - 'href' => \esc_url( $event_link_url ), - 'mediaType' => 'text/html', - ); - } - - return null; - } - - /** - * Overrides/extends the get_attachments function to also add the event Link. - */ - protected function get_attachment(): array { - // Get attachments via parent function. - $attachments = parent::get_attachment(); - - // The first attachment is the featured image, make sure it is compatible with Mobilizon. - if ( count( $attachments ) ) { - $attachments[0]['type'] = 'Document'; - $attachments[0]['name'] = 'Banner'; - } - - $event_link_attachment = $this->get_event_link_attachment(); - - if ( $event_link_attachment ) { - $attachments[] = $event_link_attachment; - } - return $attachments; - } - - /** - * Compose the events tags. - */ - public function get_tag(): array { - // The parent tag function also fetches the mentions. - $tags = parent::get_tag(); - - $post_tags = \wp_get_post_terms( $this->item->ID, 'event-tags' ); - - if ( $post_tags ) { - foreach ( $post_tags as $post_tag ) { - $tag = array( - 'type' => 'Hashtag', - 'href' => \esc_url( \get_tag_link( $post_tag->term_id ) ), - 'name' => esc_hashtag( $post_tag->name ), - ); - $tags[] = $tag; - } - } - return $tags; - } - - /** - * Get the events title/name. - * - * @return string - */ - protected function get_name(): string { - return $this->em_event->event_name; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-gatherpress.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-gatherpress.php deleted file mode 100644 index 9b4f49f7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-gatherpress.php +++ /dev/null @@ -1,156 +0,0 @@ -gp_event = new GatherPress_Event( $item->ID ); - $this->gp_venue = $this->gp_event->get_venue_information(); - } - - /** - * Get the event location. - * - * @return ?Place The place objector null if not place set. - */ - public function get_location(): ?Place { - $address = $this->gp_venue['full_address']; - if ( $address ) { - $place = new Place(); - $place->set_type( 'Place' ); - $place->set_name( $address ); - $place->set_address( $address ); - return $place; - } else { - return null; - } - } - - /** - * Get the end time from the event object. - */ - public function get_end_time(): string { - return $this->gp_event->get_datetime_end( 'Y-m-d\TH:i:s\Z' ); - } - - /** - * Get the end time from the event object. - */ - public function get_start_time(): string { - return $this->gp_event->get_datetime_start( 'Y-m-d\TH:i:s\Z' ); - } - - /** - * Get the event link from the events metadata. - */ - private function get_event_link(): array { - - $event_link = get_post_meta( $this->item->ID, 'event-link', true ); - if ( $event_link ) { - return array( - 'type' => 'Link', - 'name' => 'Website', - 'href' => \esc_url( $event_link ), - 'mediaType' => 'text/html', - ); - } - - return array(); - } - - /** - * Overrides/extends the get_attachments function to also add the event Link. - */ - protected function get_attachment(): array { - $attachments = parent::get_attachment(); - if ( count( $attachments ) ) { - $attachments[0]['type'] = 'Document'; - $attachments[0]['name'] = 'Banner'; - } - $event_link = $this->get_event_link(); - if ( $event_link ) { - $attachments[] = $this->get_event_link(); - } - return $attachments; - } - - /** - * Prevents gatherpress blocks from being rendered for the content. - * - * @param mixed $block_content The blocks content. - * @param mixed $block The block. - */ - public static function filter_gatherpress_blocks( $block_content, $block ) { - // Check if the block name starts with 'gatherpress'. - if ( isset( $block['blockName'] ) && 0 === strpos( $block['blockName'], 'gatherpress/' ) ) { - return ''; // Skip rendering this block. - } - - return $block_content; // Return the content for other blocks. - } - - /** - * Apply the filter for preventing the rendering off gatherpress blocks just in time. - * - * @return Event_Object - */ - public function to_object(): Event_Object { - add_filter( 'render_block', array( self::class, 'filter_gatherpress_blocks' ), 10, 2 ); - $activitypub_object = parent::to_object(); - remove_filter( 'render_block', array( self::class, 'filter_gatherpress_blocks' ) ); - return $activitypub_object; - } - - /** - * Determine whether the event is online. - * - * @return bool - */ - public function get_is_online(): bool { - return $this->gp_event->maybe_get_online_event_link() ? true : false; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-modern-events-calendar-lite.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-modern-events-calendar-lite.php deleted file mode 100644 index 48011a65..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-modern-events-calendar-lite.php +++ /dev/null @@ -1,127 +0,0 @@ -mec_main = MEC::getInstance( 'app.libraries.main' ); - $this->mec_event = new MEC_Event( $item ); - } - - /** - * Retrieves the content without the plugins rendered shortcodes. - */ - public function get_content(): string { - $content = wpautop( $this->item->post_content ); - return $content; - } - - /** - * Get the end time from the event object. - * - * @return string - */ - public function get_start_time(): string { - return \gmdate( 'Y-m-d\TH:i:s\Z', $this->mec_event->get_datetime()['start']['timestamp'] ); - } - - /** - * Get the end time from the event object. - * - * @return string - */ - public function get_end_time(): string { - return \gmdate( 'Y-m-d\TH:i:s\Z', $this->mec_event->get_datetime()['end']['timestamp'] ); - } - - /** - * Get the location. - * - * @return ?Place - */ - public function get_location(): ?Place { - $location_id = $this->mec_main->get_master_location_id( $this->mec_event->ID ); - - if ( ! $location_id ) { - return null; - } - - $data = $this->mec_main->get_location_data( $location_id ); - - $location = new Place(); - $location->set_sensitive( null ); - - if ( ! empty( $data['address'] ) ) { - $location->set_address( $data['address'] ); - } - if ( ! empty( $data['name'] ) ) { - $location->set_name( $data['name'] ); - } - if ( ! empty( $data['longitude'] ) ) { - $location->set_longitude( $data['longitude'] ); - } - if ( ! empty( $data['latitude'] ) ) { - $location->set_latitude( $data['latitude'] ); - } - - return $location; - } - - /** - * Get the location. - */ - public function get_timezone(): string { - $timezone = get_post_meta( $this->item->ID, 'mec_timezone', true ); - - if ( 'global' === $timezone ) { - return parent::get_timezone(); - } - - return $timezone; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-the-events-calendar.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-the-events-calendar.php deleted file mode 100644 index 61cb979e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-the-events-calendar.php +++ /dev/null @@ -1,203 +0,0 @@ -tribe_event = \tribe_get_event( $item ); - } - - /** - * Get the tags, including also the set categories from The Events Calendar. - * - * @return array The array if tags, - */ - public function get_tag(): array { - $tags = array(); - $category_ids = tribe_get_event_cat_ids(); - if ( $category_ids ) { - foreach ( $category_ids as $category_id ) { - $term = \get_term( $category_id ); - $tag = array( - 'type' => 'Hashtag', - 'href' => \esc_url( \get_term_link( $term ) ), - 'name' => esc_hashtag( $term->name ), - ); - $tags[] = $tag; - } - } - $tags = array_merge( $tags, parent::get_tag() ); - - return $tags; - } - - /** - * Get the end time from the event object. - */ - public function get_end_time(): string { - $utc_time = get_post_meta( $this->tribe_event->ID, '_EventEndDateUTC', true ); - $timezone = new \DateTimeZone( $this->get_timezone() ); - $time = new \DateTime( $utc_time ); - $time->setTimezone( $timezone ); - return $time->format( 'Y-m-d\TH:i:sP' ); - } - - /** - * Get the end time from the event object. - */ - public function get_start_time(): string { - $utc_time = get_post_meta( $this->tribe_event->ID, '_EventStartDateUTC', true ); - $timezone = new \DateTimeZone( $this->get_timezone() ); - $time = new \DateTime( $utc_time ); - $time->setTimezone( $timezone ); - return $time->format( 'Y-m-d\TH:i:sP' ); - } - - /** - * Get the timezone of the event. - * - * @return string The timezone string of the site. - */ - public function get_timezone(): string { - // @phpstan-ignore-next-line - $timezone = $this->tribe_event->timezone; - - if ( ! $timezone || ! is_string( $timezone ) ) { - return parent::get_timezone(); - } - - return $timezone; - } - - /** - * Get status of the tribe event - * - * @return string status of the event - */ - public function get_status(): string { - // @phpstan-ignore-next-line - $event_status = $this->tribe_event->event_status; - - if ( 'canceled' === $event_status ) { - return 'CANCELLED'; - } - - if ( 'postponed' === $event_status ) { - return 'CANCELLED'; // This will be reflected in the cancelled reason. - } - - return 'CONFIRMED'; - } - - - /** - * Check if the comments are enabled for the current event. - */ - public function get_comments_enabled(): bool { - return ( 'open' === $this->tribe_event->comment_status ) ? true : false; - } - - /** - * Check if the event is an online event. - */ - public function get_is_online(): bool { - return false; - } - - /** - * Get the event location. - * - * @return ?Place The place/venue if one is set. - */ - public function get_location(): ?Place { - // Get short handle for the venues. - - if ( ! \tribe_has_venue( $this->tribe_event->ID ) ) { - return null; - } - - $venue_id = \tribe_get_venue_id( $this->tribe_event->ID ); - $post = \get_post( $venue_id ); - - if ( ! $post ) { - return null; - } - - $location_transformer = new The_Events_Calendar_Location( $post ); - $full_location_object = false; - $location = $location_transformer->to_object( $full_location_object ); - return $location; - } - - /** - * Apply the filter for preventing the rendering off The Events Calendar blocks just in time. - * - * @return Event_Object - */ - public function to_object(): Event_Object { - add_filter( 'render_block', array( self::class, 'filter_tribe_blocks' ), 10, 2 ); - $activitypub_object = parent::to_object(); - remove_filter( 'render_block', array( self::class, 'filter_tribe_blocks' ) ); - return $activitypub_object; - } - - /** - * Prevents The Events Calendar blocks from being rendered for the content. - * - * @param mixed $block_content The blocks content. - * @param mixed $block The block. - */ - public static function filter_tribe_blocks( $block_content, $block ) { - // Check if the block name starts with 'tribe' and is not an exception. - if ( isset( $block['blockName'] ) && 0 === strpos( $block['blockName'], 'tribe/' ) ) { - return ''; // Skip rendering this block. - } - - return $block_content; // Return the content for other blocks. - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-vs-event-list.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-vs-event-list.php deleted file mode 100644 index 1ea96415..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-vs-event-list.php +++ /dev/null @@ -1,115 +0,0 @@ -item->ID, 'event-location', true ); - if ( $address ) { - $place = new Place(); - $place->set_type( 'Place' ); - $place->set_name( $address ); - $place->set_address( $address ); - return $place; - } else { - return null; - } - } - - /** - * Get the end time from the events metadata. - */ - public function get_end_time(): ?string { - if ( 'yes' === \get_post_meta( $this->item->ID, 'event-hide-end-time', true ) ) { - return null; - } - $end_time = \get_post_meta( $this->item->ID, 'event-date', true ); - if ( is_null( $end_time ) || empty( $end_time ) || 'no' === $end_time ) { - return null; - } - return \gmdate( 'Y-m-d\TH:i:s\Z', (int) $end_time ); - } - - /** - * Get the end time from the events metadata. - */ - public function get_start_time(): string { - $start_time = \get_post_meta( $this->item->ID, 'event-start-date', true ); - return \gmdate( 'Y-m-d\TH:i:s\Z', (int) $start_time ); - } - - /** - * Get the event link from the events metadata. - * - * @return ?array Associated array of an ActivityStreams Link object with the events URL. - */ - private function get_event_link(): ?array { - $event_link = \get_post_meta( $this->item->ID, 'event-link', true ); - $event_link_label = \get_post_meta( $this->item->ID, 'event-link-label', true ) ?? 'Event Link'; - if ( $event_link ) { - return array( - 'type' => 'Link', - 'name' => $event_link_label, - 'href' => \esc_url( $event_link ), - 'mediaType' => 'text/html', - ); - } - return null; - } - - /** - * Overrides/extends the get_attachments function to also add the event Link. - * - * @return array - */ - protected function get_attachment(): array { - $attachments = parent::get_attachment(); - if ( count( $attachments ) ) { - $attachments[0]['type'] = 'Document'; - $attachments[0]['name'] = 'Banner'; - } - $event_link = $this->get_event_link(); - if ( $event_link ) { - $attachments[] = $event_link; - } - return $attachments; - } - - /** - * Retrieves the excerpt text (may be HTML). Used for constructing the summary. - * - * @return ?string - */ - protected function retrieve_excerpt(): ?string { - if ( \get_post_meta( $this->item->ID, 'event-summary', true ) ) { - return \get_post_meta( $this->item->ID, 'event-summary', true ); - } else { - return parent::retrieve_excerpt(); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-wp-event-manager.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-wp-event-manager.php deleted file mode 100644 index eda001e5..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/event/class-wp-event-manager.php +++ /dev/null @@ -1,162 +0,0 @@ -item->ID, '_event_online', true ); - $is_online = false; - // Radio buttons. - if ( 'yes' === $is_online_text ) { - $is_online = true; - } - // Checkbox. - if ( '1' === $is_online_text ) { - $is_online = true; - } - return $is_online; - } - - /** - * Get the event location. - * - * @return ?Place The Place. - */ - public function get_location(): ?Place { - $location_name = get_post_meta( $this->item->ID, '_event_location', true ); - - if ( $location_name ) { - $location = new Place(); - $location->set_name( $location_name ); - $location->set_sensitive( null ); - $location->set_address( $location_name ); - - return $location; - } - return null; - } - - /** - * Get the end time from the events metadata. - * - * @return ?string The events end-datetime if is set, null otherwise. - */ - public function get_end_time(): ?string { - $end_date = get_post_meta( $this->item->ID, '_event_end_date', true ); - if ( ! $end_date ) { - return null; - } - $timezone = new DateTimeZone( $this->get_timezone() ); - - if ( is_numeric( $end_date ) ) { - $end_date = '@' . $end_date; - } - - $end_datetime = new DateTime( $end_date, $timezone ); - - return $end_datetime->format( 'Y-m-d\TH:i:sP' ); - } - - /** - * Get timezone. - * - * @return string - */ - public function get_timezone(): string { - $time_zone = get_post_meta( $this->item->ID, '_event_timezone', true ); - if ( $time_zone ) { - return $time_zone; - } - return parent::get_timezone(); - } - - /** - * Get the end time from the events metadata. - */ - public function get_start_time(): string { - $start_date = get_post_meta( $this->item->ID, '_event_start_date', true ); - $timezone = new DateTimeZone( $this->get_timezone() ); - - if ( is_numeric( $start_date ) ) { - $start_date = '@' . $start_date; - } - - $start_datetime = new DateTime( $start_date, $timezone ); - - return $start_datetime->format( 'Y-m-d\TH:i:sP' ); - } - - /** - * Get the event link as an ActivityPub Link object, but as an associative array. - * - * @return ?array - */ - private function get_event_link_attachment(): ?array { - $event_link_url = get_post_meta( $this->item->ID, '_event_video_url', true ); - - if ( str_starts_with( $event_link_url, 'http' ) ) { - return array( - 'type' => 'Link', - 'name' => \esc_html__( 'Video URL', 'event-bridge-for-activitypub' ), - 'href' => \esc_url( $event_link_url ), - 'mediaType' => 'text/html', - ); - } else { - return null; - } - } - - /** - * Overrides/extends the get_attachments function to also add the event Link. - */ - protected function get_attachment() { - // Get attachments via parent function. - $attachments = parent::get_attachment(); - - // The first attachment is the featured image, make sure it is compatible with Mobilizon. - if ( count( $attachments ) ) { - $attachments[0]['type'] = 'Document'; - $attachments[0]['name'] = 'Banner'; - } - - if ( $this->get_event_link_attachment() ) { - $attachments[] = $this->get_event_link_attachment(); - } - return $attachments; - } - - /** - * Get the events title/name. - * - * @return string - */ - protected function get_name(): string { - return $this->item->post_title; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-base-post-place.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-base-post-place.php deleted file mode 100644 index 355af17f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-base-post-place.php +++ /dev/null @@ -1,146 +0,0 @@ -transform_object_properties( $activitypub_object ); - - if ( \is_wp_error( $activitypub_object ) ) { - return $activitypub_object; - } - - if ( ! empty( $activitypub_object->get_content() ) ) { - $activitypub_object->set_content_map( - array( - $this->get_locale() => $this->get_content(), - ) - ); - } - - $updated = \strtotime( $this->item->post_modified_gmt ); - - $activitypub_object->set_updated( \gmdate( 'Y-m-d\TH:i:s\Z', $updated ) ); - - if ( $full_object ) { - $published = \strtotime( $this->item->post_date_gmt ); - - $activitypub_object->set_published( \gmdate( 'Y-m-d\TH:i:s\Z', $published ) ); - - $activitypub_object->set_to( - array( - 'https://www.w3.org/ns/activitystreams#Public', - $this->get_actor_object()->get_followers(), - ) - ); - } - - $address = $this->get_address(); - - if ( $address ) { - $activitypub_object->set_address( $address ); - } - - // @phpstan-ignore-next-line - return $activitypub_object; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-base-term-place.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-base-term-place.php deleted file mode 100644 index 2a70b88a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-base-term-place.php +++ /dev/null @@ -1,165 +0,0 @@ -item->term_id; - } - - /** - * Get the ActivityPub ID of the term. - * - * @return string - */ - public function get_url() { - return \get_term_link( $this->item ); - } - - /** - * Returns the most unique, resolvable "ID" there currently is for a WordPress term. - * - * @return string The "ID" - */ - public function get_id() { - /** - * The first approach was to use the normal query from WordPress, but it contains the slug, which might be edited. - * - * \add_query_arg( $this->item->taxonomy, $this->item->slug, \trailingslashit( \home_url() ) ); - * - * As https://github.com/Automattic/wordpress-activitypub/pull/1272 got merged, now we can definy a real ID. - */ - return \add_query_arg( 'term_id', $this->item->term_id, \trailingslashit( \home_url() ) ); - } - - /** - * Use Term description as ActivityPub content. - * - * @return mixed|string - */ - public function get_content() { - return $this->item->description; - } - - /** - * Returns the name for the ActivityPub Item which is the title of the term. - * - * @return string|null The title or null if the object type is `note`. - */ - protected function get_name() { - if ( isset( $this->item->name ) && $this->item instanceof \WP_Term ) { - return \wp_strip_all_tags( - \html_entity_decode( - $this->item->name - ) - ); - } - - return null; - } - - /** - * Generic function that converts an WordPress location object to an ActivityPub-Place object. - * - * @return Place_Object|\WP_Error - */ - public function to_object() { - $activitypub_object = new Place_Object(); - - $activitypub_object->set_type( $this->get_type() ); - $activitypub_object->set_id( $this->get_id() ); - $activitypub_object->set_name( $this->get_name() ); - $activitypub_object->set_url( $this->get_url() ); - $activitypub_object->set_content( $this->get_content() ); - $activitypub_object->set_sensitive( $this->get_sensitive() ); - - $address = $this->get_address(); - - if ( $address ) { - $activitypub_object->set_address( $address ); - } - - return $activitypub_object; - } - - /** - * Don't set a media type on Place per default. - * - * @return null - * @phpstan-ignore-next-line - */ - public function get_media_type() { - return null; - } - - /** - * Don't set sensitive per default. - * - * @return null - */ - public function get_sensitive() { - return null; - } - - /** - * Don't support replies for Place per default. - * - * @return null - */ - public function get_replies() { - return null; - } - - /** - * Don't support tags for Place per default. - * - * @return null - * @phpstan-ignore-next-line - */ - protected function get_tag() { - return null; - } - - /** - * Don't set attrbuted to per default. - * - * @return null The attributed to. - * @phpstan-ignore-next-line - */ - protected function get_attributed_to() { - return null; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-event-organiser.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-event-organiser.php deleted file mode 100644 index f9fa4050..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-event-organiser.php +++ /dev/null @@ -1,89 +0,0 @@ -item->ID ); - return 0.0 !== $longitude ? $longitude : null; - } - - /** - * Get the latitude. - * - * @return float|null - */ - public function get_latitude() { - $latitude = \eo_get_venue_lat( $this->item->ID ); - return 0.0 !== $latitude ? $latitude : null; - } - - /** - * Get the description of the venue as the ActivityPub content. - * - * @return string|null - */ - public function get_content() { - $description = \eo_get_venue_description( $this->item->term_id ); - - if ( empty( $description ) ) { - return null; - } - - return $description; - } - - /** - * Get the events address. - * - * @return ?array The place/venue if one is set, or null if no valid address data exists. - */ - public function get_address(): ?array { - $address = \eo_get_venue_address( $this->item->term_id ); - - // Map the values to a schema.org PostalAddress. - $postal_address = array( - 'streetAddress' => isset( $address['address'] ) ? $address['address'] : null, - 'postalCode' => isset( $address['address'] ) ? $address['postcode'] : null, - 'addressRegion' => isset( $address['address'] ) ? $address['state'] : null, - 'addressLocality' => isset( $address['address'] ) ? $address['city'] : null, - 'addressCountry' => isset( $address['address'] ) ? $address['country'] : null, - ); - - // Filter out empty values. - foreach ( $postal_address as $key => $value ) { - if ( empty( $value ) ) { - unset( $postal_address[ $key ] ); - } - } - - // If no valid address data remains, return null. - if ( empty( $postal_address ) ) { - return null; - } - - // Add the type. - $postal_address['type'] = 'PostalAddress'; - - return $postal_address; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-eventon.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-eventon.php deleted file mode 100644 index e71cc55c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-eventon.php +++ /dev/null @@ -1,197 +0,0 @@ -term_id ] ) ) { - $this->tax_meta = $evo_tax_meta['event_location'][ $item->term_id ]; - } - } - - /** - * Generic function that converts an WordPress location object to an ActivityPub-Place object. - * - * @return Place_Object|\WP_Error - */ - public function to_object() { - $object = parent::to_object(); - - if ( \is_wp_error( $object ) ) { - return $object; - } - - $object->set_longitude( $this->get_longitude() ); - $object->set_latitude( $this->get_latitude() ); - - return $object; - } - - /** - * Get the type, either Place or VirtualLocation, both is stored in the same taxonomy. - * - * @return string - */ - public function get_type(): string { - if ( $this->is_virtual_location() ) { - return 'VirtualLocation'; - } - return 'Place'; - } - - /** - * Get the longitute. - * - * @return float|null - */ - public function get_longitude(): ?float { - $longitude = null; - - if ( isset( $this->tax_meta['location_lon'] ) ) { - $longitude = $this->tax_meta['location_lon']; - } - - return $longitude ? (float) $longitude : null; - } - - /** - * Get the latitude. - * - * @return float|null - */ - public function get_latitude(): ?float { - $latitude = null; - - if ( isset( $this->tax_meta['location_lat'] ) ) { - $latitude = $this->tax_meta['location_lat']; - } - - return $latitude ? (float) $latitude : null; - } - - /** - * Get the events address. - * - * @return ?array The place/venue if one is set, or null if no valid address data exists. - */ - public function get_address(): ?array { - - if ( $this->is_virtual_location() ) { - return null; - } - - // Map the values to a schema.org PostalAddress. - $postal_address = array( - 'streetAddress' => isset( $this->tax_meta['location_address'] ) ? (string) $this->tax_meta['location_address'] : null, - 'addressRegion' => isset( $this->tax_meta['location_state'] ) ? (string) $this->tax_meta['location_state'] : null, - 'addressCountry' => isset( $this->tax_meta['location_country'] ) ? (string) $this->tax_meta['location_country'] : null, - ); - - if ( isset( $this->tax_meta['location_city'] ) ) { - $locality_and_postal_code = $this->parse_city_for_postal_code( $this->tax_meta['location_city'] ); - $postal_address['addressLocality'] = (string) $locality_and_postal_code['addressLocality']; - $postal_address['postalCode'] = (string) $locality_and_postal_code['postalCode']; - } - - // Filter out empty values. - foreach ( $postal_address as $key => $value ) { - if ( empty( $value ) ) { - unset( $postal_address[ $key ] ); - } - } - - // If no valid address data remains, return null. - if ( empty( $postal_address ) ) { - return null; - } - - // Add the type. - $postal_address = array_merge( - array( - 'type' => 'PostalAddress', - ), - $postal_address - ); - - return $postal_address; - } - - /** - * Check if this term represents a virtual location. - * - * @return bool - */ - private function is_virtual_location(): bool { - if ( isset( $this->tax_meta['location_type'] ) && 'virtual' === $this->tax_meta['location_type'] ) { - return true; - } - return false; - } - - /** - * Parse a string whether it contains a postal code and seperates both. - * - * @param string $input The input string of the locality which might contain the postal code too. - * @return array{addressLocality: string, postalCode: string} - */ - private function parse_city_for_postal_code( $input ): array { - $input = trim( $input ); - - if ( empty( $input ) ) { - return array( - 'addressLocality' => '', - 'postalCode' => '', - ); - } - - $parts = explode( ' ', $input ); - $postal_code = ''; - $locality = array(); - - foreach ( $parts as $part ) { - if ( preg_match( '/^\d{4,5}$/', $part ) ) { - // Match postal codes (assuming 4-5 digit codes). - $postal_code = $part; - } else { - // Assume everything else is part of the name of the city. - $locality[] = $part; - } - } - - return array( - 'addressLocality' => implode( ' ', $locality ), - 'postalCode' => $postal_code, - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-eventprime.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-eventprime.php deleted file mode 100644 index f78964cd..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-eventprime.php +++ /dev/null @@ -1,59 +0,0 @@ -ep_get_custom_page_url( 'venues_page', $this->item->term_id, 'venue', 'term' ); - - if ( \is_wp_error( $url ) ) { - return null; - } - return $url; - } - - /** - * Get the best "ID" we currently have. - * - * @return string|null - */ - public function get_id() { - return $this->get_url(); - } - - /** - * Get the event location. - * - * @return array|string|null The place/venue if one is set. - */ - public function get_address() { - $address = \get_term_meta( $this->item->term_id, 'em_address', true ); - $display_address = \get_term_meta( $this->item->term_id, 'em_display_address_on_frontend', true ); - - if ( $address && $display_address ) { - return $address; - } - - return null; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-events-manager.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-events-manager.php deleted file mode 100644 index 21b381e2..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-events-manager.php +++ /dev/null @@ -1,95 +0,0 @@ -post_type ) { - $this->em_location = em_get_location( $post ); - } - } - - /** - * Get the name of the location. - * - * @return ?string - */ - public function get_name(): ?string { - if ( isset( $this->em_location->location_name ) ) { - return \wp_strip_all_tags( - \html_entity_decode( - $this->em_location->location_name - ) - ); - } - - return null; - } - - /** - * Get the event location. - * - * @return ?array The place/venue if one is set. - */ - public function get_address(): ?array { - $postal_address = array(); - - if ( isset( $this->em_location->location_country ) && $this->em_location->location_country ) { - $postal_address['addressCountry'] = $this->em_location->location_country; - } - - if ( isset( $this->em_location->location_town ) && $this->em_location->location_town ) { - $postal_address['addressLocality'] = $this->em_location->location_town; - } - - if ( isset( $this->em_location->location_address ) && $this->em_location->location_address ) { - $postal_address['streetAddress'] = $this->em_location->location_address; - } - - if ( isset( $this->em_location->location_state ) && $this->em_location->location_state ) { - $postal_address['addressRegion'] = $this->em_location->location_state; - } - - if ( isset( $this->em_location->location_postcode ) && $this->em_location->location_postcode ) { - $postal_address['postalCode'] = $this->em_location->location_postcode; - } - - if ( ! empty( $postal_address ) ) { - return array_merge( array( 'type' => 'PostalAddress' ), $postal_address ); - } - - return null; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-the-events-calendar.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-the-events-calendar.php deleted file mode 100644 index 5632bcc0..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transformer/place/class-the-events-calendar.php +++ /dev/null @@ -1,63 +0,0 @@ -item->ID ); - if ( $country ) { - $postal_address['addressCountry'] = $country; - } - - $city = \tribe_get_city( $this->item->ID ); - if ( $city ) { - $postal_address['addressLocality'] = $city; - } - - $province = \tribe_get_province( $this->item->ID ); - if ( $province ) { - $postal_address['addressRegion'] = $province; - } - - $zip = \tribe_get_zip( $this->item->ID ); - if ( $zip ) { - $postal_address['postalCode'] = $zip; - } - - $address = \tribe_get_address( $this->item->ID ); - if ( $city ) { - $postal_address['streetAddress'] = $address; - } - - if ( empty( $postal_address ) ) { - return null; - } - - $postal_address = array_merge( array( 'type' => 'PostalAddress' ), $postal_address ); - - return $postal_address; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/class-base.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/class-base.php deleted file mode 100644 index 00a5c031..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/class-base.php +++ /dev/null @@ -1,378 +0,0 @@ -get_id(); - $event_source_activitypub_id = \get_the_guid( $event_source_post_id ); - - if ( $post_id ) { - \do_action( - 'event_bridge_for_activitypub_write_log', - array( "[ACTIVITYPUB] Processed incoming event {$event_activitypub_id} from {$event_source_activitypub_id}" ) - ); - // Use post meta to remember who we received this event from. - \update_post_meta( $post_id, '_event_bridge_for_activitypub_event_source', absint( $event_source_post_id ) ); - \update_post_meta( $post_id, 'activitypub_content_visibility', defined( 'ACTIVITYPUB_CONTENT_VISIBILITY_LOCAL' ) ? constant( 'ACTIVITYPUB_CONTENT_VISIBILITY_LOCAL' ) : '' ); - } else { - \do_action( - 'event_bridge_for_activitypub_write_log', - array( "[ACTIVITYPUB] Failed processing incoming event {$event_activitypub_id} from {$event_source_activitypub_id}" ) - ); - } - } - - /** - * Delete a local event in WordPress that is a cached remote one. - * - * @param string $activitypub_event_id The ActivityPub events ID. - * @return bool|WP_Post|null|WP_Error - */ - public static function delete( $activitypub_event_id ) { - $post_id = static::get_post_id_from_activitypub_id( $activitypub_event_id ); - - if ( ! $post_id ) { - \do_action( - 'event_bridge_for_activitypub_write_log', - array( "[ACTIVITYPUB] Received delete for event that is not cached locally {$activitypub_event_id}" ) - ); - return new WP_Error( - 'event_bridge_for_activitypub_remote_event_not_found', - \__( 'Remote event not found in cache', 'event-bridge-for-activitypub' ), - array( 'status' => 404 ) - ); - } - - $thumbnail_id = get_post_thumbnail_id( $post_id ); - - if ( $thumbnail_id && ! Event_Sources::is_attachment_featured_image( $thumbnail_id ) ) { - wp_delete_attachment( $thumbnail_id, true ); - } - - $result = wp_delete_post( $post_id, true ); - - if ( $result ) { - \do_action( 'event_bridge_for_activitypub_write_log', array( "[ACTIVITYPUB] Deleted cached event {$activitypub_event_id}" ) ); - } else { - \do_action( 'event_bridge_for_activitypub_write_log', array( "[ACTIVITYPUB] Failed deleting cached event {$activitypub_event_id}" ) ); - } - - return $result; - } - - /** - * Format an ActivityStreams xds:datetime to WordPress GMT format. - * - * @param string $time_string The ActivityStreams xds:datetime (may include offset). - * @return string The GMT string in format 'Y-m-d H:i:s'. - */ - protected static function format_time_string_to_wordpress_gmt( $time_string ): string { - $datetime = new \DateTime( $time_string ); - $datetime->setTimezone( new \DateTimeZone( 'GMT' ) ); - return $datetime->format( 'Y-m-d H:i:s' ); - } - - /** - * Get WordPress post by ActivityPub object ID using the guid. - * - * @param string $activitypub_id The ActivityPub object ID. - * @return int The WordPress Post ID, 0 if not post with that ActivityPub object ID (by guid) is found. - */ - protected static function get_post_id_from_activitypub_id( $activitypub_id ): int { - global $wpdb; - return (int) $wpdb->get_var( - $wpdb->prepare( - "SELECT ID FROM $wpdb->posts WHERE guid=%s", - esc_sql( $activitypub_id ), - ) - ); - } - - /** - * Get the image URL and alt-text of an ActivityPub object. - * - * @param mixed $data The ActivityPub object as ann associative array. - * @return array Array containing the images URL and alt-text. - */ - private static function extract_image_alt_and_url( $data ): array { - $image = array( - 'url' => null, - 'alt' => null, - ); - - // Check whether it is already simple. - if ( ! $data || is_string( $data ) ) { - $image['url'] = $data; - return $image; - } - - if ( ! isset( $data['type'] ) ) { - return $image; - } - - if ( ! in_array( $data['type'], array( 'Document', 'Image' ), true ) ) { - return $image; - } - - if ( isset( $data['url'] ) ) { - $image['url'] = $data['url']; - } elseif ( isset( $data['id'] ) ) { - $image['id'] = $data['id']; - } - - if ( isset( $data['name'] ) ) { - $image['alt'] = $data['name']; - } - - return $image; - } - - /** - * Returns the URL of the featured image. - * - * @param Event $event The ActivityPub event object. - * - * @return array - */ - protected static function get_featured_image( $event ): array { - // Search for the featured image in the image property. - $image = $event->get_image(); - - if ( $image ) { - return self::extract_image_alt_and_url( $image ); - } - - // Fallback attachment. - $attachment = $event->get_attachment(); - - // If attachment is an array get the first fitting one. - if ( is_array( $attachment ) && ! empty( $attachment ) ) { - $supported_types = array( 'Image', 'Document' ); - $match = null; - - foreach ( $attachment as $item ) { - if ( in_array( $item['type'], $supported_types, true ) ) { - $match = $item; - break; - } - } - - $attachment = $match; - } - - return self::extract_image_alt_and_url( $attachment ); - } - - /** - * Given an image URL return an attachment ID. Image will be side-loaded into the media library if it doesn't exist. - * - * Forked from https://gist.github.com/kingkool68/a66d2df7835a8869625282faa78b489a. - * - * @param int $post_id The post ID where the image will be set as featured image. - * @param string $url The image URL to maybe sideload. - * @uses media_sideload_image - * @return string|int|WP_Error - */ - protected static function maybe_sideload_image( $post_id, $url = '' ) { - global $wpdb; - - // Include necessary WordPress file for media handling. - if ( ! function_exists( 'media_sideload_image' ) ) { - // @phpstan-ignore-next-line - require_once ABSPATH . 'wp-admin/includes/media.php'; - // @phpstan-ignore-next-line - require_once ABSPATH . 'wp-admin/includes/file.php'; - // @phpstan-ignore-next-line - require_once ABSPATH . 'wp-admin/includes/image.php'; - } - - // Check to see if the URL has already been fetched, if so return the attachment ID. - $attachment_id = $wpdb->get_var( - $wpdb->prepare( "SELECT `post_id` FROM {$wpdb->postmeta} WHERE `meta_key` = '_source_url' AND `meta_value` = %s", $url ) - ); - if ( ! empty( $attachment_id ) ) { - return $attachment_id; - } - - $attachment_id = $wpdb->get_var( - $wpdb->prepare( "SELECT `ID` FROM {$wpdb->posts} WHERE guid=%s", $url ) - ); - if ( ! empty( $attachment_id ) ) { - return $attachment_id; - } - - // If the URL doesn't exist, sideload it to the media library. - return media_sideload_image( $url, $post_id, $url, 'id' ); - } - - /** - * Sideload an image_url set it as featured image and add the alt-text. - * - * @param int $post_id The post ID where the image will be set as featured image. - * @param string $image_url The image URL. - * @param string $alt_text The alt-text of the image. - * @return int|WP_Error The attachment ID - */ - protected static function set_featured_image_with_alt( $post_id, $image_url, $alt_text = '' ) { - // Maybe sideload the image or get the Attachment ID of an existing one. - $image_id = self::maybe_sideload_image( $post_id, $image_url ); - - if ( \is_wp_error( $image_id ) ) { - // Handle the error. - return $image_id; - } - - // Set the image as the featured image for the post. - \set_post_thumbnail( $post_id, $image_id ); - - // Update the alt text. - if ( ! empty( $alt_text ) ) { - \update_post_meta( $image_id, '_wp_attachment_image_alt', $alt_text ); - } - - return $image_id; // Return the attachment ID for further use if needed. - } - - /** - * Convert a PostalAddress to a string. - * - * @link https://schema.org/PostalAddress - * - * @param array $postal_address The PostalAddress as an associative array. - * @return string - */ - private static function postal_address_to_string( $postal_address ): string { - if ( ! isset( $postal_address['type'] ) || 'PostalAddress' !== $postal_address['type'] ) { - _doing_it_wrong( - __METHOD__, - 'The parameter postal_address must be an associate array like schema.org/PostalAddress.', - esc_html( EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_VERSION ) - ); - } - - $address = array(); - $known_attributes = array( - 'streetAddress', - 'postalCode', - 'addressLocality', - 'addressState', - 'addressCountry', - ); - - foreach ( $known_attributes as $attribute ) { - if ( isset( $postal_address[ $attribute ] ) && is_string( $postal_address[ $attribute ] ) ) { - $address[] = $postal_address[ $attribute ]; - } - } - - $address_string = implode( ' ,', $address ); - - return $address_string; - } - - /** - * Convert an address to a string. - * - * @param mixed $address The address as an object, string or associative array. - * @return string - */ - protected static function address_to_string( $address ): string { - if ( is_string( $address ) ) { - return $address; - } - - if ( is_object( $address ) ) { - $address = (array) $address; - } - - if ( ! is_array( $address ) || ! isset( $address['type'] ) ) { - return ''; - } - - if ( 'PostalAddress' === $address['type'] ) { - return self::postal_address_to_string( $address ); - } - return ''; - } - - /** - * Return the number of revisions to keep. - * - * @return int The number of revisions to keep. - */ - public static function revisions_to_keep(): int { - return 5; - } - - /** - * Returns the URL of the online event link. - * - * @param Event $event The ActivityPub event object. - * - * @return ?string - */ - protected static function get_online_event_link_from_attachments( $event ): ?string { - $attachments = $event->get_attachment(); - - if ( ! is_array( $attachments ) || empty( $attachments ) ) { - return null; - } - - foreach ( $attachments as $attachment ) { - if ( array_key_exists( 'type', $attachment ) && 'Link' === $attachment['type'] && isset( $attachment['href'] ) ) { - return $attachment['href']; - } - } - - return null; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/class-gatherpress.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/class-gatherpress.php deleted file mode 100644 index 47aafe79..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/class-gatherpress.php +++ /dev/null @@ -1,207 +0,0 @@ -get_tag(); - - // Ensure the input is valid. - if ( empty( $tags_array ) || ! is_array( $tags_array ) || ! $post_id ) { - return false; - } - - // Extract and process tag names. - $tag_names = array(); - foreach ( $tags_array as $tag ) { - if ( isset( $tag['name'] ) && 'Hashtag' === $tag['type'] ) { - $tag_names[] = ltrim( $tag['name'], '#' ); // Remove the '#' from the name. - } - } - - // Add the tags as terms to the post. - if ( ! empty( $tag_names ) ) { - \wp_set_object_terms( $post_id, $tag_names, IntegrationsGatherPress::get_event_category_taxonomy(), true ); - } - - return true; - } - - /** - * Add venue. - * - * @param Event $activitypub_event The ActivityPub event object. - * @param int $post_id The post ID. - */ - private static function add_venue( $activitypub_event, $post_id ) { - $location = $activitypub_event->get_location(); - - if ( ! $location ) { - return; - } - - if ( $location instanceof Place ) { - $location = $location->to_array(); - } - - if ( ! is_array( $location ) ) { - return; - } - - if ( ! isset( $location['name'] ) ) { - return; - } - - // Fallback for Gancio instances. - if ( 'online' === $location['name'] ) { - $online_event_link = self::get_online_event_link_from_attachments( $activitypub_event ); - if ( ! $online_event_link ) { - return; - } - \update_post_meta( $post_id, 'gatherpress_online_event_link', \sanitize_url( $online_event_link ) ); - \wp_set_object_terms( $post_id, 'online-event', '_gatherpress_venue', false ); - return; - } - - $venue_instance = \GatherPress\Core\Venue::get_instance(); - $venue_name = \sanitize_title( $location['name'] ); - $venue_slug = $venue_instance->get_venue_term_slug( $venue_name ); - $venue_post = $venue_instance->get_venue_post_from_term_slug( $venue_slug ); - - if ( ! $venue_post ) { - $venue_id = \wp_insert_post( - array( - 'post_title' => sanitize_text_field( $location['name'] ), - 'post_type' => 'gatherpress_venue', - 'post_status' => 'publish', - ) - ); - } else { - $venue_id = $venue_post->ID; - } - - $venue_information = array(); - - $address_string = isset( $location['address'] ) ? self::address_to_string( $location['address'] ) : ''; - - $venue_information['fullAddress'] = $address_string; - $venue_information['phone_number'] = ''; - $venue_information['website'] = ''; - $venue_information['permalink'] = ''; - - $venue_json = \wp_json_encode( $venue_information ); - - \update_post_meta( $venue_id, 'gatherpress_venue_information', $venue_json ); - - \wp_set_object_terms( $post_id, $venue_slug, '_gatherpress_venue', false ); - } - - /** - * Save the ActivityPub event object as GatherPress Event. - * - * @param Event $activitypub_event The ActivityPub event object. - * @param int $event_source_post_id The Post ID of the Event Source that owns the outbox. - * - * @return false|int - */ - protected static function save_event( $activitypub_event, $event_source_post_id ) { - // Limit this as a safety measure. - \add_filter( 'wp_revisions_to_keep', array( self::class, 'revisions_to_keep' ) ); - - $post_id = self::get_post_id_from_activitypub_id( $activitypub_event->get_id() ); - - $args = array( - 'post_title' => sanitize_text_field( $activitypub_event->get_name() ), - 'post_type' => 'gatherpress_event', - 'post_content' => wp_kses_post( $activitypub_event->get_content() ?? '' ) . '', - 'post_excerpt' => wp_kses_post( $activitypub_event->get_summary() ?? '' ), - 'post_status' => 'publish', - 'guid' => sanitize_url( $activitypub_event->get_id() ), - ); - - if ( $activitypub_event->get_published() ) { - $post_date = self::format_time_string_to_wordpress_gmt( $activitypub_event->get_published() ); - $args['post_date'] = $post_date; - $args['post_date_gmt'] = $post_date; - } - - if ( $post_id ) { - // Update existing GatherPress event post. - $args['ID'] = $post_id; - \wp_update_post( $args ); - } else { - // Insert new GatherPress event post. - $post_id = \wp_insert_post( $args ); - } - - // @phpstan-ignore-next-line - if ( ! $post_id || \is_wp_error( $post_id ) ) { - return false; - } - - // Insert the dates. - $gatherpress_event = new GatherPress_Event( $post_id ); - $start_time = $activitypub_event->get_start_time(); - $end_time = $activitypub_event->get_end_time(); - if ( ! $end_time ) { - $end_time = new DateTime( $start_time ); - $end_time->modify( '+1 hour' ); - $end_time = $end_time->format( 'Y-m-d H:i:s' ); - } - $params = array( - 'datetime_start' => $start_time, - 'datetime_end' => $end_time, - 'timezone' => $activitypub_event->get_timezone(), - ); - // Sanitization of the params is done in the save_datetimes function just in time. - $gatherpress_event->save_datetimes( $params ); - - // Insert featured image. - $image = self::get_featured_image( $activitypub_event ); - self::set_featured_image_with_alt( $post_id, $image['url'], $image['alt'] ); - - // Add hashtags. - self::add_tags_to_post( $activitypub_event, $post_id ); - - // Add venue. - self::add_venue( $activitypub_event, $post_id ); - - // Limit this as a safety measure. - \remove_filter( 'wp_revisions_to_keep', array( self::class, 'revisions_to_keep' ) ); - - return $post_id; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/class-the-events-calendar.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/class-the-events-calendar.php deleted file mode 100644 index d36f448b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/class-the-events-calendar.php +++ /dev/null @@ -1,371 +0,0 @@ -get_id() ); - $duration = self::get_duration( $activitypub_event ); - $venue_id = self::add_venue( $activitypub_event, $event_source_post_id ); - $organizer_id = self::add_organizer( $activitypub_event ); - - $args = array( - 'title' => $activitypub_event->get_name(), - 'content' => $activitypub_event->get_content() ?? '', - 'start_date' => gmdate( 'Y-m-d H:i:s', strtotime( $activitypub_event->get_start_time() ) ), - 'duration' => $duration, - 'status' => 'publish', - 'guid' => $activitypub_event->get_id(), - ); - - if ( $venue_id ) { - $args['venue'] = $venue_id; - $args['VenueID'] = $venue_id; - } - - if ( $organizer_id ) { - $args['organizer'] = $organizer_id; - $args['OrganizerID'] = $organizer_id; - } - - if ( $activitypub_event->get_published() ) { - $post_date = self::format_time_string_to_wordpress_gmt( $activitypub_event->get_published() ); - $args['post_date'] = $post_date; - $args['post_date_gmt'] = $post_date; - } - - $tribe_event = new The_Events_Calendar_Event_Repository(); - - if ( $post_id ) { - $post = $tribe_event->where( 'id', $post_id )->set_args( $args )->save(); - } else { - $post = $tribe_event->set_args( $args )->create(); - } - - if ( $post instanceof \WP_Post ) { - $post_id = $post->ID; - } - - if ( ! $post_id ) { - return false; - } - - // Insert featured image. - $image = self::get_featured_image( $activitypub_event ); - if ( isset( $image['url'] ) ) { - self::set_featured_image_with_alt( $post_id, $image['url'], $image['alt'] ); - } - - // Add tags. - self::add_tags_to_post( $activitypub_event, $post_id ); - - // Remove revision limit. - remove_filter( 'wp_revisions_to_keep', array( self::class, 'revisions_to_keep' ) ); - - return $post_id; - } - - /** - * Map an ActivityStreams Place to the Events Calendar venue. - * - * @param array|Place $location An ActivityPub location as an associative array or Place object. - * @link https://www.w3.org/TR/activitystreams-vocabulary/#dfn-place - * @return array - */ - private static function get_venue_args( $location ): array { - $args = array( - 'venue' => $location['name'], - 'status' => 'publish', - ); - - if ( $location instanceof Place ) { - $location = $location->to_array(); - } - - if ( ! isset( $location['address'] ) ) { - return $args; - } - - if ( is_array( $location['address'] ) ) { - $mapping = array( - 'streetAddress' => 'address', - 'postalCode' => 'zip', - 'addressLocality' => 'city', - 'addressState' => 'state', - 'addressCountry' => 'country', - 'url' => 'website', - ); - - foreach ( $mapping as $postal_address_key => $venue_key ) { - if ( isset( $location['address'][ $postal_address_key ] ) ) { - $args[ $venue_key ] = $location['address'][ $postal_address_key ]; - } - } - } elseif ( is_string( $location['address'] ) ) { - // Use the address field for a solely text address. - $args['address'] = $location['address']; - } - - if ( isset( $location['id'] ) ) { - $args['guid'] = $location['id']; - } - - return $args; - } - - /** - * Add venue. - * - * @param Event $activitypub_event The ActivityPub event object. - * @param int $event_source_post_id The WordPress Post ID of the event source. - * - * @return ?int $post_id The venues post ID. - */ - private static function add_venue( $activitypub_event, $event_source_post_id ): ?int { - $location = $activitypub_event->get_location(); - - // Make sure we have a valid location in the right format. - if ( ! $location ) { - return null; - } - - if ( $location instanceof Place ) { - $location = $location->to_array(); - } - - if ( ! is_array( $location ) ) { - return null; - } - - if ( ! isset( $location['name'] ) ) { - return null; - } - - // Fallback for Gancio instances. - if ( 'online' === $location['name'] ) { - return null; - } - - $tribe_venue = new The_Events_Calendar_Venue_Repository(); - - // If the venue already exists try to find it's post id. - $post_id = null; - - // Search if we already got this venue/place in our database. - if ( isset( $location['id'] ) ) { - global $wpdb; - // phpcs:ignore WordPress.DB.DirectDatabaseQuery - $post_id = $wpdb->get_var( - $wpdb->prepare( - "SELECT ID FROM $wpdb->posts WHERE guid=%s AND post_type=%s", - $location['id'], - \Tribe__Events__Venue::POSTTYPE - ) - ); - if ( $post_id ) { - $post_id = (int) $post_id; - } - } - - if ( ! $post_id ) { - // Try to find a match by searching. - $results = $tribe_venue->search( $location['name'] )->all(); - - foreach ( $results as $potential_matching_post_id ) { - // @phpstan-ignore-next-line - if ( $potential_matching_post_id instanceof \WP_Post ) { - $potential_matching_post_id = $potential_matching_post_id->ID; - } - // Only accept a match for the venue/location if it was received by the same actor. - if ( \get_post_meta( $potential_matching_post_id, '_event_bridge_for_activitypub_event_source', true ) === $event_source_post_id ) { - $post_id = $potential_matching_post_id; - break; - } - } - } - - if ( $post_id ) { - // Update if we found a match. - $result = $tribe_venue->where( 'id', $post_id )->set_args( self::get_venue_args( $location ) )->save(); - if ( array_key_exists( $post_id, $result ) && $result[ $post_id ] ) { - return $post_id; - } - } else { - // Create a new venue. - $post = $tribe_venue->set_args( self::get_venue_args( $location ) )->create(); - if ( $post ) { - $post_id = $post->ID; - update_post_meta( $post_id, '_event_bridge_for_activitypub_event_source', $event_source_post_id ); - } - } - - return $post_id; - } - - /** - * Add organizer. - * - * @param Event $activitypub_event The ActivityPub event object. - * - * @return int|bool $post_id The organizers post ID. - */ - private static function add_organizer( $activitypub_event ) { - // This might likely change, because of FEP-8a8e. - $actor = $activitypub_event->get_attributed_to(); - - if ( is_null( $actor ) ) { - return false; - } - - $actor_id = object_to_uri( $actor ); - $event_source = Event_Source::get_by_id( $actor_id ); - - // As long as we do not support announces, we expect the attributedTo to be an existing event source. - if ( ! $event_source ) { - return false; - } - - // Prepare arguments for inserting/updating the organizer post. - $args = array( - 'organizer' => $event_source->get_name(), - 'description' => $event_source->get_summary(), - 'website' => $event_source->get_url(), - 'excerpt' => $event_source->get_summary(), - 'post_parent' => $event_source->get__id(), // Maybe just use post meta too here. - ); - - if ( $event_source->get_published() ) { - $post_date = self::format_time_string_to_wordpress_gmt( $event_source->get_published() ); - $args['post_date'] = $post_date; - $args['post_date_gmt'] = $post_date; - } - - // Get organizer if it is already present. - $children = \get_children( - array( - 'post_parent' => $event_source->get__id(), - 'post_type' => \Tribe__Events__Organizer::POSTTYPE, - ), - ); - - if ( count( $children ) ) { - // Update organizer post. - $child = array_pop( $children ); - $tribe_organizer_post_ids = \tribe_organizers()->where( 'id', $child->ID )->set_args( $args )->save(); - - // Fallback to delete duplicates. - foreach ( $children as $to_delete ) { - \wp_delete_post( $to_delete->ID, true ); - } - - // If updating failed return. - if ( 1 !== count( $tribe_organizer_post_ids ) || ! reset( $tribe_organizer_post_ids ) ) { - return false; - } - - $tribe_organizer_post_id = array_key_first( $tribe_organizer_post_ids ); - } else { - // Create new organizer post. - $tribe_organizer_post = \tribe_organizers()->set_args( $args )->create(); - - if ( ! $tribe_organizer_post ) { - return false; - } - - $tribe_organizer_post_id = $tribe_organizer_post->ID; - - // Make a relationship between the event source WP_Post and the organizer WP_Post. - \update_post_meta( $tribe_organizer_post_id, '_event_bridge_for_activitypub_event_source', true ); - } - - // Add the thumbnail of the event source to the organizer. - if ( \get_post_thumbnail_id( $event_source->get__id() ) ) { - \set_post_thumbnail( $tribe_organizer_post_id, \get_post_thumbnail_id( $event_source->get__id() ) ); - } - - return $tribe_organizer_post_id; - } - - /** - * Add tags to post. - * - * @param Event $activitypub_event The ActivityPub event object. - * @param int $post_id The post ID. - */ - private static function add_tags_to_post( $activitypub_event, $post_id ): bool { - $tags_array = $activitypub_event->get_tag(); - - // Ensure the input is valid. - if ( empty( $tags_array ) || ! is_array( $tags_array ) || ! $post_id ) { - return false; - } - - // Extract and process tag names. - $tag_names = array(); - foreach ( $tags_array as $tag ) { - if ( isset( $tag['name'] ) && 'Hashtag' === $tag['type'] ) { - $tag_names[] = ltrim( $tag['name'], '#' ); // Remove the '#' from the name. - } - } - - // Add the tags as terms to the post. - if ( ! empty( $tag_names ) ) { - \wp_set_object_terms( $post_id, $tag_names, 'post_tag', true ); - } - - return true; - } - - /** - * Get the events duration in seconds. - * - * @param Event $activitypub_event The ActivityPub event object. - * - * @return int - */ - private static function get_duration( $activitypub_event ): int { - $end_time = $activitypub_event->get_end_time(); - if ( ! $end_time ) { - return 2 * HOUR_IN_SECONDS; - } - return abs( strtotime( $end_time ) - strtotime( $activitypub_event->get_start_time() ) ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/class-vs-event-list.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/class-vs-event-list.php deleted file mode 100644 index bb738b37..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/class-vs-event-list.php +++ /dev/null @@ -1,175 +0,0 @@ -to_array(); - } - - // Return empty string when location is not an associative array. - if ( ! is_array( $location ) || 0 === count( $location ) ) { - return $location_string; - } - - if ( ! isset( $location['type'] ) || 'Place' !== $location['type'] ) { - return $location_string; - } - - // Add name of the location. - if ( isset( $location['name'] ) ) { - $location_string .= $location['name']; - } - - // Add delimiter between name and address if both are set. - if ( isset( $location['name'] ) && isset( $location['address'] ) ) { - $location_string .= ' – '; - } - - // Add address. - if ( isset( $location['address'] ) ) { - $location_string .= self::address_to_string( $location['address'] ); - } - return $location_string; - } - - /** - * Add tags to post. - * - * @param Event $activitypub_event The ActivityPub event object. - * @param int $post_id The post ID. - */ - private static function add_tags_to_post( $activitypub_event, $post_id ) { - $tags_array = $activitypub_event->get_tag(); - - // Ensure the input is valid. - if ( empty( $tags_array ) || ! is_array( $tags_array ) || ! $post_id ) { - return false; - } - - // Extract and process tag names. - $tag_names = array(); - foreach ( $tags_array as $tag ) { - if ( isset( $tag['name'] ) && 'Hashtag' === $tag['type'] ) { - $tag_names[] = ltrim( $tag['name'], '#' ); // Remove the '#' from the name. - } - } - - // Add the tags as terms to the post. - if ( ! empty( $tag_names ) ) { - \wp_set_object_terms( $post_id, $tag_names, IntegrationsVS_Event_List::get_event_category_taxonomy(), true ); - } - - return true; - } - - /** - * Save the ActivityPub event object as VS Event List event. - * - * @param Event $activitypub_event The ActivityPub event object. - * @param int $event_source_post_id The Post ID of the Event Source that owns the outbox. - * - * @return false|int - */ - protected static function save_event( $activitypub_event, $event_source_post_id ) { - // Limit this as a safety measure. - \add_filter( 'wp_revisions_to_keep', array( self::class, 'revisions_to_keep' ) ); - - $post_id = self::get_post_id_from_activitypub_id( $activitypub_event->get_id() ); - - $args = array( - 'post_title' => $activitypub_event->get_name(), - 'post_type' => \Event_Bridge_For_ActivityPub\Integrations\VS_Event_List::get_post_type(), - 'post_content' => $activitypub_event->get_content() ?? '', - 'post_excerpt' => $activitypub_event->get_summary() ?? '', - 'post_status' => 'publish', - 'guid' => $activitypub_event->get_id(), - 'meta_input' => array( - 'event-start-date' => \strtotime( $activitypub_event->get_start_time() ), - 'event-link' => $activitypub_event->get_url() ?? $activitypub_event->get_id(), - 'event-link-label' => \sanitize_text_field( __( 'Original Website', 'event-bridge-for-activitypub' ) ), - 'event-link-target' => 'yes', // Open in new window. - 'event-link-title' => 'no', // Whether to redirect event title to original source. - 'event-link-image' => 'no', // Whether to redirect events featured image to original source. - ), - ); - - if ( $activitypub_event->get_published() ) { - $post_date = self::format_time_string_to_wordpress_gmt( $activitypub_event->get_published() ); - $args['post_date'] = $post_date; - $args['post_date_gmt'] = $post_date; - } - - // Add end time. - $end_time = $activitypub_event->get_end_time(); - if ( $end_time ) { - $args['meta_input']['event-date'] = \strtotime( $end_time ); - } - - // Maybe add location. - $location = self::get_location_as_string( $activitypub_event->get_location() ); - if ( $location ) { - $args['meta_input']['event-location'] = $location; - } - - if ( $post_id ) { - // Update existing event post. - $args['ID'] = $post_id; - $post_id = \wp_update_post( $args ); - } else { - // Insert new event post. - $post_id = \wp_insert_post( $args ); - } - - // @phpstan-ignore-next-line - if ( 0 === $post_id || \is_wp_error( $post_id ) ) { - return false; - } - - // Insert featured image. - $image = self::get_featured_image( $activitypub_event ); - self::set_featured_image_with_alt( $post_id, $image['url'], $image['alt'] ); - - // Add hashtags. - self::add_tags_to_post( $activitypub_event, $post_id ); - - // Limit this as a safety measure. - \remove_filter( 'wp_revisions_to_keep', array( self::class, 'revisions_to_keep' ) ); - - return $post_id; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/helper/class-sanitizer.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/helper/class-sanitizer.php deleted file mode 100644 index aae19039..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/helper/class-sanitizer.php +++ /dev/null @@ -1,241 +0,0 @@ - 404 ) ); - } - - $event = new Event(); - - // Straightforward sanitization of all attributes we possible make use of. - if ( isset( $data['content'] ) ) { - $event->set_content( \wp_kses_post( $data['content'] ) ); - } - - if ( isset( $data['summary'] ) ) { - $event->set_summary( \wp_kses_post( $data['summary'] ) ); - } - - if ( isset( $data['name'] ) ) { - $event->set_name( \sanitize_text_field( $data['name'] ) ); - } - - if ( isset( $data['startTime'] ) ) { - $event->set_start_time( \sanitize_text_field( $data['startTime'] ) ); - } - - if ( isset( $data['endTime'] ) ) { - $event->set_end_time( \sanitize_text_field( $data['endTime'] ) ); - } - - if ( isset( $data['published'] ) ) { - $event->set_published( \sanitize_text_field( $data['published'] ) ); - } - - if ( isset( $data['id'] ) ) { - $event->set_id( \sanitize_url( $data['id'] ) ); - } - - if ( isset( $data['url'] ) ) { - $event->set_url( \sanitize_url( $data['url'] ) ); - } - - if ( isset( $data['attributedTo'] ) ) { - $event->set_attributed_to( self::sanitize_attributed_to( $data['attributedTo'] ) ); - } - - if ( isset( $data['location'] ) ) { - $event->set_location( self::sanitize_place_object_from_array( $data['location'] ) ); - } - - if ( isset( $data['attachment'] ) ) { - $event->set_attachment( self::sanitize_attachment( $data['attachment'] ) ); - } - - if ( isset( $data['tag'] ) ) { - $event->set_tag( self::sanitize_attachment( $data['tag'] ) ); - } - - return $event; - } - - /** - * Sanitize attributedTo. - * - * Currently only multiple attributedTo's are not supported. - * - * @param mixed $data The object array. - * - * @return string - */ - private static function sanitize_attributed_to( $data ): string { - if ( is_array( $data ) && self::array_is_list( $data ) ) { - $data = reset( $data ); - } - - return object_to_uri( $data ); - } - - /** - * Sanitize attachments. - * - * @param mixed $data The object array. - * - * @return ?array - */ - private static function sanitize_attachment( $data ): ?array { - if ( ! is_array( $data ) ) { - return null; - } - - if ( ! self::array_is_list( $data ) ) { - $data = array( $data ); - } - - $attachment = array(); - - foreach ( $data as $item ) { - $sanitized_item = array(); - - // Straightforward sanitization of all attributes we possible make use of. - if ( isset( $item['name'] ) ) { - $sanitized_item['name'] = \sanitize_text_field( $item['name'] ); - } - if ( isset( $item['url'] ) ) { - $sanitized_item['url'] = \sanitize_url( $item['url'] ); - } - if ( isset( $item['id'] ) ) { - $sanitized_item['id'] = \sanitize_url( $item['id'] ); - } - if ( isset( $item['type'] ) ) { - $sanitized_item['type'] = \sanitize_text_field( $item['type'] ); - } - if ( isset( $item['href'] ) ) { - $sanitized_item['href'] = \sanitize_text_field( $item['href'] ); - } - - if ( isset( $sanitized_item['url'] ) || isset( $sanitized_item['href'] ) || isset( $sanitized_item['name'] ) ) { - $attachment[] = $sanitized_item; - } - } - - return $attachment; - } - - /** - * Fallback for PHP version prior to 8.1 for array_is_list. - * - * @param array $arr The array to check. - * @return bool - */ - private static function array_is_list( $arr ) { - if ( ! function_exists( 'array_is_list' ) ) { - if ( array() === $arr ) { - return true; - } - return array_keys( $arr ) === range( 0, count( $arr ) - 1 ); - } - return array_is_list( $arr ); - } - - /** - * Convert input array to an Location. - * - * @param mixed $data The object array. - * - * @return ?Place An Object built from the input array or null. - */ - private static function sanitize_place_object_from_array( $data ): ?Place { - if ( ! is_array( $data ) ) { - return null; - } - - // If the array is a list, work with the first item. - if ( array_key_exists( 0, $data ) ) { - $data = $data[0]; - } - - $place = new Place(); - - if ( isset( $data['name'] ) ) { - $place->set_name( \sanitize_text_field( $data['name'] ) ); - } - - if ( isset( $data['id'] ) ) { - $place->set_id( \sanitize_url( $data['id'] ) ); - } - - if ( isset( $data['url'] ) ) { - $place->set_url( \sanitize_url( $data['url'] ) ); - } - - if ( isset( $data['address'] ) ) { - if ( is_string( $data['address'] ) ) { - $place->set_address( \sanitize_text_field( $data['address'] ) ); - } - if ( is_array( $data['address'] ) && isset( $data['address']['type'] ) && 'PostalAddress' === $data['address']['type'] ) { - $address = array(); - if ( isset( $data['address']['streetAddress'] ) ) { - $address['streetAddress'] = \sanitize_text_field( $data['address']['streetAddress'] ); - } - if ( isset( $data['address']['postalCode'] ) ) { - $address['postalCode'] = \sanitize_text_field( $data['address']['postalCode'] ); - } - if ( isset( $data['address']['addressLocality'] ) ) { - $address['addressLocality'] = \sanitize_text_field( $data['address']['addressLocality'] ); - } - if ( isset( $data['address']['addressState'] ) ) { - $address['addressState'] = \sanitize_text_field( $data['address']['addressState'] ); - } - if ( isset( $data['address']['addressCountry'] ) ) { - $address['addressCountry'] = \sanitize_text_field( $data['address']['addressCountry'] ); - } - if ( isset( $data['address']['url'] ) ) { - $address['url'] = \sanitize_url( $data['address']['url'] ); - } - $place->set_address( $address ); - } - } - - return $place; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/helper/class-the-events-calendar-event-repository.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/helper/class-the-events-calendar-event-repository.php deleted file mode 100644 index a4f1f846..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/activitypub/transmogrifier/helper/class-the-events-calendar-event-repository.php +++ /dev/null @@ -1,43 +0,0 @@ -event_plugin = $event_plugin; - if ( $this->event_post_type_is_not_activitypub_enabled() ) { - add_action( 'admin_notices', array( $this, 'admin_notice_activitypub_not_enabled_for_post_type' ), 10, 1 ); - } - } - - /** - * Check if ActivityPub is enabled for the custom post type of the event plugin. - * - * @return bool - */ - private function event_post_type_is_not_activitypub_enabled(): bool { - return ! in_array( $this->event_plugin::get_post_type(), get_option( 'activitypub_support_post_types', array() ), true ); - } - - /** - * Display the admin notices for the plugins. - * - * @return void - */ - public function admin_notice_activitypub_not_enabled_for_post_type(): void { - if ( $this->event_plugin::is_plugin_page() ) { - $this->do_admin_notice_post_type_not_activitypub_enabled(); - } - } - - /** - * Print admin notice that the current post type is not enabled in the ActivityPub plugin. - * - * @return void - */ - private function do_admin_notice_post_type_not_activitypub_enabled(): void { - $all_plugins = get_plugins(); - $event_plugin_file = $this->event_plugin::get_relative_plugin_file(); - if ( isset( $all_plugins[ $event_plugin_file ]['Name'] ) ) { - $event_plugin_name = $all_plugins[ $event_plugin_file ]['Name']; - } elseif ( isset( get_mu_plugins()[ $event_plugin_file ]['Name'] ) ) { - $event_plugin_name = get_mu_plugins()[ $event_plugin_file ]['Name']; - } else { - return; - } - $activitypub_plugin_data = get_plugin_data( ACTIVITYPUB_PLUGIN_FILE ); - $notice = sprintf( - /* translators: 1: the name of the event plugin a admin notice is shown. 2: The name of the ActivityPub plugin. */ - _x( - 'You have installed the %1$s plugin, but the event post type of the plugin %2$s is not enabled in the %1$s settings.', - 'admin notice', - 'event-bridge-for-activitypub' - ), - esc_html( $activitypub_plugin_data['Name'] ), - esc_html( $event_plugin_name ), - admin_url( 'options-general.php?page=activitypub&tab=settings' ) - ); - $allowed_html = array( - 'a' => array( - 'href' => true, - 'title' => true, - ), - 'b' => array(), - 'i' => array(), - ); - echo '

    ' . \wp_kses( $notice, $allowed_html ) . '

    '; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/admin/class-general-admin-notices.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/admin/class-general-admin-notices.php deleted file mode 100644 index 6a5302f0..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/admin/class-general-admin-notices.php +++ /dev/null @@ -1,152 +0,0 @@ - array( - 'href' => true, - 'title' => true, - 'target' => true, - ), - 'br', - 'i', - ); - - /** - * Admin notice when the ActivityPub plugin is not enabled. - * - * @return string - */ - public static function get_admin_notice_activitypub_plugin_not_enabled(): string { - return sprintf( - /* translators: 1: An URL that points to the ActivityPub plugin. */ - _x( - 'For the Event Bridge for ActivityPub to work, you will need to install and activate the ActivityPub plugin.', - 'admin notice', - 'event-bridge-for-activitypub' - ), - esc_html( self::ACTIVITYPUB_PLUGIN_URL ) - ); - } - - /** - * Admin notice when the ActivityPub plugin version is too old. - * - * @return string - */ - public static function get_admin_notice_activitypub_plugin_version_too_old(): string { - return sprintf( - /* translators: 1: The name of the ActivityPub plugin. 2: The minimum required version number of the ActivityPub plugin. */ - _x( - 'Please upgrade your ActivityPub plugin. At least version %2$s is required for the Event Bridge for ActivityPub to work.', - 'admin notice', - 'event-bridge-for-activitypub' - ), - esc_html( self::ACTIVITYPUB_PLUGIN_URL ), - esc_html( EVENT_BRIDGE_FOR_ACTIVITYPUB_ACTIVITYPUB_PLUGIN_MIN_VERSION ) - ); - } - - /** - * Warning that no supported event plugin can be found. - * - * @return string - */ - public static function get_admin_notice_no_supported_event_plugin_active(): string { - return sprintf( - /* translators: 1: An URL to the list of supported event plugins. */ - _x( - 'The Plugin Event Bridge for ActivityPub is of no use, because you do not have installed and activated a supported Event Plugin. -
    For a list of supported Event Plugins see here.', - 'admin notice', - 'event-bridge-for-activitypub' - ), - esc_url( self::EVENT_BRIDGE_FOR_ACTIVITYPUB_SUPPORTED_EVENT_PLUGINS_URL ) - ); - } - - /** - * Warning to fix status issues first. - * - * @return string - */ - public static function get_admin_notice_status_not_ok(): string { - return sprintf( - /* translators: 1: An URL to the list of supported event plugins. */ - _x( - 'The Plugin Event Bridge for ActivityPub is of no use, because you do not have installed and activated a supported Event Plugin. -
    For a list of supported Event Plugins see here.', - 'admin notice', - 'event-bridge-for-activitypub' - ), - esc_html( self::EVENT_BRIDGE_FOR_ACTIVITYPUB_SUPPORTED_EVENT_PLUGINS_URL ) - ); - } - - /** - * Warning if the plugin is Active and the ActivityPub plugin is not. - * - * @return void - */ - public static function activitypub_plugin_not_enabled(): void { - $notice = self::get_admin_notice_activitypub_plugin_not_enabled(); - // @phpstan-ignore-next-line - echo '

    ' . \wp_kses( $notice, self::ALLOWED_HTML ) . '

    '; - } - - /** - * Warning if the plugin is Active and the ActivityPub plugins version is too old. - * - * @return void - */ - public static function activitypub_plugin_version_too_old(): void { - $notice = self::get_admin_notice_activitypub_plugin_version_too_old(); - // @phpstan-ignore-next-line - echo '

    ' . \wp_kses( $notice, self::ALLOWED_HTML ) . '

    '; - } - - /** - * Warning when no supported Even Plugin is installed and active. - * - * @return void - */ - public static function no_supported_event_plugin_active(): void { - $notice = self::get_admin_notice_no_supported_event_plugin_active(); - // @phpstan-ignore-next-line - echo '

    ' . \wp_kses( $notice, self::ALLOWED_HTML ) . '

    '; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/admin/class-health-check.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/admin/class-health-check.php deleted file mode 100644 index ecf4652d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/admin/class-health-check.php +++ /dev/null @@ -1,211 +0,0 @@ - __( 'ActivityPub Event Transformer Test', 'event-bridge-for-activitypub' ), - 'test' => array( self::class, 'test_event_transformation' ), - ); - - return $tests; - } - - /** - * The the transformation of the most recent event posts. - * - * @return array - */ - public static function test_event_transformation(): array { - $result = array( - 'label' => \__( 'Transformation of Events to a valid ActivityStreams representation.', 'event-bridge-for-activitypub' ), - 'status' => 'good', - 'badge' => array( - 'label' => \__( 'Event Bridge for ActivityPub', 'event-bridge-for-activitypub' ), - 'color' => 'green', - ), - 'description' => \sprintf( - '

    %s

    ', - \__( 'The transformation to ActivityPub of your most recent events was successful.', 'event-bridge-for-activitypub' ) - ), - 'actions' => '', - 'test' => 'test_event_transformation', - ); - - $check = self::transform_most_recent_event_posts(); - - if ( true === $check ) { - return $result; - } - - $result['status'] = 'critical'; - $result['label'] = \__( 'One or more of your most recent events failed to transform to ActivityPub', 'event-bridge-for-activitypub' ); - $result['badge']['color'] = 'red'; - $result['description'] = \sprintf( - '

    %s

    ', - \__( 'The transformation to ActivityPub of your most recent events was not successful.', 'event-bridge-for-activitypub' ) - ); - - return $result; - } - - /** - * Test if right transformer gets applied. - * - * @param Event_Plugin_Integration $event_plugin The event plugin definition. - * - * @return bool True if the check passed. - */ - public static function test_if_event_transformer_is_used( $event_plugin ): bool { - if ( ! Setup::get_instance()->is_activitypub_plugin_active() ) { - return false; - } - - // Get a (random) event post. - $event_posts = self::get_most_recent_event_posts( $event_plugin->get_post_type(), 1 ); - - // If no post is found, we can not do this test. - if ( isset( $event_posts[0] ) || empty( $event_posts ) ) { - return true; - } - - // Call the transformer Factory. - $transformer = Transformer_Factory::get_transformer( \get_post( $event_posts[0] ) ); - // Check that we got the right transformer. - $desired_transformer_class = $event_plugin::get_activitypub_event_transformer( $event_posts[0] ); - if ( $transformer instanceof $desired_transformer_class ) { - return true; - } - return false; - } - - /** - * Retrieves the most recently published event posts of a certain event post type. - * - * @param ?string $event_post_type The post type of the events. - * @param ?int $number_of_posts The maximum number of events to return. - * - * @return \WP_Post[] Array of event posts, or false if none are found. - */ - public static function get_most_recent_event_posts( $event_post_type = null, $number_of_posts = 5 ): array { - if ( ! Setup::get_instance()->is_activitypub_plugin_active() ) { - return array(); - } - - if ( ! $event_post_type ) { - $active_event_plugins = Setup::get_instance()->get_active_event_plugins(); - $active_event_plugin = reset( $active_event_plugins ); - if ( ! $active_event_plugin ) { - return array(); - } - $event_post_type = $active_event_plugin->get_post_type(); - } - - $args = array( - 'numberposts' => $number_of_posts, - 'category' => 0, - 'orderby' => 'date', - 'order' => 'DESC', - 'include' => array(), - 'exclude' => array(), - 'meta_query' => array( - 'relation' => 'OR', - array( - 'key' => '_event_bridge_for_activitypub_event_source', - 'compare' => 'NOT EXISTS', - ), - array( - 'key' => '_event_bridge_for_activitypub_event_source', - 'value' => '', - 'compare' => '=', - ), - ), - 'post_type' => $event_post_type, - 'suppress_filters' => true, - ); - - $query = new WP_Query(); - return $query->query( $args ); - } - - /** - * Transform the most recent event posts. - */ - public static function transform_most_recent_event_posts(): bool { - return true; - } - - /** - * Retrieves information like name and version from active event plugins. - */ - private static function get_info_about_active_event_plugins(): array { - $active_event_plugins = Setup::get_instance()->get_active_event_plugins(); - $info = array(); - foreach ( $active_event_plugins as $active_event_plugin ) { - $event_plugin_file = $active_event_plugin->get_relative_plugin_file(); - $event_plugin_data = \get_plugin_data( $event_plugin_file ); - - $info[] = array( - 'event_plugin_name' => $event_plugin_data['Name'], - 'event_plugin_version' => $event_plugin_data['Version'], - 'event_plugin_file' => $event_plugin_file, - ); - } - return $info; - } - - /** - * Static function for generating site debug data when required. - * - * @param array $info The debug information to be added to the core information page. - * @return array The extended information. - */ - public static function add_debug_information( $info ): array { - $info['event_bridge_for_activitypub'] = array( - 'label' => __( 'Event Bridge for ActivityPub', 'event-bridge-for-activitypub' ), - 'fields' => array( - 'plugin_version' => array( - 'label' => __( 'Plugin Version', 'event-bridge-for-activitypub' ), - 'value' => EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_VERSION, - 'private' => true, - ), - 'active_event_plugins' => self::get_info_about_active_event_plugins(), - ), - ); - - return $info; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/admin/class-settings-page.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/admin/class-settings-page.php deleted file mode 100644 index 0b58c39b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/admin/class-settings-page.php +++ /dev/null @@ -1,280 +0,0 @@ - __( 'Event Bridge', 'event-bridge-for-activitypub' ), - 'template' => EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_DIR . 'templates/settings/tab.php', - ); - - return $tabs; - } - - /** - * Checks whether the current request wants to add an event source (ActivityPub follow) and passed on to actual handler. - * - * @return void - */ - public static function maybe_add_event_source() { - if ( ! isset( $_POST['event_bridge_for_activitypub_add_event_source'] ) ) { - return; - } - - // Check and verify request and check capabilities. - if ( ! \wp_verify_nonce( sanitize_key( $_REQUEST['_wpnonce'] ), 'event-bridge-for-activitypub_add-event-source-options' ) ) { - return; - } - - if ( ! \current_user_can( 'manage_options' ) ) { - return; - } - - $event_source = \sanitize_text_field( $_POST['event_bridge_for_activitypub_add_event_source'] ); - - $actor_url = false; - $url = \wp_parse_url( $event_source ); - - $error_message = \esc_html__( 'Failed to add Event Source', 'event-bridge-for-activitypub' ); - - // Check if URL is a Collection or a single Actor. - $maybe_collection = \wp_safe_remote_get( $event_source ); - - if ( ! \is_wp_error( $maybe_collection ) ) { - $maybe_collection = \json_decode( \wp_remote_retrieve_body( $maybe_collection ), true ); - } - - $event_sources = array(); - - if ( isset( $maybe_collection['type'] ) && in_array( $maybe_collection['type'], array( 'Collection', 'OrderedCollection' ), true ) ) { - // Return only the IDs of the items in the collection. - $event_sources = \wp_list_pluck( $maybe_collection['items'], 'id' ); - } else { - $event_sources[] = $event_source; - } - - // Iterate over all event sources and add them to the collection. - foreach ( $event_sources as $event_source ) { - $url = \wp_parse_url( $event_source ); - - if ( isset( $url['path'], $url['host'], $url['scheme'] ) ) { - $actor_url = \sanitize_url( $event_source ); - } elseif ( preg_match( '/^@?' . Event_Source::ACTIVITYPUB_USER_HANDLE_REGEXP . '$/i', $event_source ) ) { - $actor_url = Webfinger::resolve( $event_source ); - if ( \is_wp_error( $actor_url ) ) { - \add_settings_error( - 'event-bridge-for-activitypub_add-event-source', - 'event_bridge_for_activitypub_cannot_follow_actor', - $error_message . ': ' . esc_html__( 'Cannot find an ActivityPub actor for this user handle via Webfinger.', 'event-bridge-for-activitypub' ), - 'error' - ); - continue; - } - } else { - if ( ! isset( $url['path'] ) && isset( $url['host'] ) ) { - $actor_url = Event_Sources::get_application_actor( $url['host'] ); - } elseif ( self::is_domain( $event_source ) ) { - $actor_url = Event_Sources::get_application_actor( $event_source ); - } - if ( ! $actor_url ) { - \add_settings_error( - 'event-bridge-for-activitypub_add-event-source', - 'event_bridge_for_activitypub_cannot_follow_actor', - $error_message . ': ' . \esc_html__( 'Unable to identify the ActivityPub relay actor to follow for this domain.', 'event-bridge-for-activitypub' ), - 'error' - ); - continue; - } - } - - if ( ! $actor_url ) { - \add_settings_error( - 'event-bridge-for-activitypub_add-event-source', - 'event_bridge_for_activitypub_cannot_follow_actor', - $error_message . ': ' . \esc_html__( 'ActivityPub actor does not exist.', 'event-bridge-for-activitypub' ), - 'error' - ); - continue; - } - - // Don't proceed if on the same host! - if ( \wp_parse_url( \home_url(), PHP_URL_HOST ) === \wp_parse_url( $actor_url, PHP_URL_HOST ) ) { - \add_settings_error( - 'event-bridge-for-activitypub_add-event-source', - 'event_bridge_for_activitypub_cannot_follow_actor', - $error_message . ': ' . \esc_html__( 'Cannot follow own actor on own domain.', 'event-bridge-for-activitypub' ), - 'error' - ); - continue; - } - - Event_Source_Collection::add_event_source( $actor_url ); - } - } - - /** - * Check if a string is a valid domain name. - * - * @param string $domain The input string which might be a domain. - * @return bool - */ - private static function is_domain( $domain ): bool { - $pattern = '/^(?!\-)(?:(?:[a-zA-Z\d](?:[a-zA-Z\d\-]{0,61}[a-zA-Z\d])?)\.)+(?!\d+$)[a-zA-Z\d]{2,63}$/'; - return 1 === preg_match( $pattern, $domain ); - } - - /** - * Adds Link to the settings page in the plugin page. - * It's called via apply_filter('plugin_action_links_' . PLUGIN_NAME). - * - * @param array $links Already added links. - * - * @return array Original links but with link to setting page added. - */ - public static function settings_link( $links ): array { - $links[] = \sprintf( - '%2s', - \add_query_arg( 'tab', 'event-bridge-for-activitypub', \menu_page_url( 'activitypub', false ) ), - \__( 'Settings', 'event-bridge-for-activitypub' ) - ); - - return $links; - } - - /** - * Receive the event categories (terms) used by the event plugin. - * - * @param Event_Plugin_Integration $event_plugin Contains info about a certain event plugin. - * - * @return array An array of Terms. - */ - private static function get_event_terms( $event_plugin ): array { - $taxonomy = $event_plugin::get_event_category_taxonomy(); - if ( $taxonomy ) { - $event_terms = get_terms( - array( - 'taxonomy' => $taxonomy, - 'hide_empty' => true, - ) - ); - return ! is_wp_error( $event_terms ) ? $event_terms : array(); - } else { - return array(); - } - } - - /** - * Preparing the data and loading the template for the settings page. - * - * @return void - */ - public static function do_settings_page(): void { - // phpcs:ignore WordPress.Security.NonceVerification.Recommended - if ( empty( $_GET['subpage'] ) ) { - $tab = 'welcome'; - } else { - // phpcs:ignore WordPress.Security.NonceVerification.Recommended - $tab = \sanitize_key( $_GET['subpage'] ); - } - - // Fallback to always re-scan active event plugins, when user visits admin area of this plugin. - $plugin_setup = Setup::get_instance(); - $plugin_setup->redetect_active_event_plugins(); - $event_plugins = $plugin_setup->get_active_event_plugins(); - - switch ( $tab ) { - case 'settings': - $event_terms = array(); - - foreach ( $event_plugins as $event_plugin_integration ) { - $event_terms = array_merge( $event_terms, self::get_event_terms( $event_plugin_integration ) ); - } - - $args = array( - 'slug' => self::SETTINGS_SLUG, - 'event_terms' => $event_terms, - ); - - \load_template( EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_DIR . 'templates/settings/subpages/settings.php', true, $args ); - break; - case 'event-sources': - $supports_event_sources = array(); - - foreach ( $event_plugins as $event_plugin_integration ) { - if ( is_a( $event_plugin_integration, Feature_Event_Sources::class ) ) { - $class_name = get_class( $event_plugin_integration ); - $supports_event_sources[ $class_name ] = $event_plugin_integration::get_plugin_name(); - } - } - - $args = array( - 'supports_event_sources' => $supports_event_sources, - ); - - \wp_enqueue_script( 'thickbox' ); - \wp_enqueue_style( 'thickbox' ); - \load_template( EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_DIR . 'templates/settings/subpages/event-sources.php', true, $args ); - break; - case 'welcome': - default: - \wp_enqueue_script( 'plugin-install' ); - \add_thickbox(); - \wp_enqueue_script( 'updates' ); - - \load_template( EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_DIR . 'templates/settings/subpages/welcome.php', true ); - break; - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/admin/class-user-interface.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/admin/class-user-interface.php deleted file mode 100644 index 9d673a2e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/admin/class-user-interface.php +++ /dev/null @@ -1,100 +0,0 @@ -guid; - - $parent = get_post_parent(); - - if ( $parent && Event_Sources_Collection::POST_TYPE === $parent->post_type ) { - $url = \get_post_meta( $parent->ID, '_activitypub_actor_id', true ); - } - - $actions['view_origin'] = sprintf( - '⁂ %s', - \esc_url( $url ), - \esc_html__( 'Open original page', 'event-bridge-for-activitypub' ) - ); - - return $actions; - } - - /** - * Modify the user capabilities so that nobody can edit external events. - * - * @param array $caps Concerned user's capabilities. - * @param mixed $cap Required primitive capabilities for the requested capability. - * @param array $user_id The WordPress user ID. - * @param array $args Additional args. - * - * @return array - */ - public static function disable_editing_for_external_events( $caps, $cap, $user_id, $args ) { - if ( 'edit_post' === $cap && isset( $args[0] ) ) { - $post_id = $args[0]; - $post = get_post( $post_id ); - if ( $post && Event_Sources::is_cached_external_post( $post ) ) { - // Deny editing by returning 'do_not_allow'. - return array( 'do_not_allow' ); - } - } - return $caps; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-autoloader.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-autoloader.php deleted file mode 100644 index 40f99cdf..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-autoloader.php +++ /dev/null @@ -1,67 +0,0 @@ -get_active_event_plugins() as $event_plugin_integration ) { - if ( ! is_a( $event_plugin_integration, Feature_Event_Sources::class ) ) { - continue; - } - - $post_type = $event_plugin_integration::get_post_type(); - self::register_post_meta_event_bridge_for_activitypub_event_source( $post_type ); - - $post_type = $event_plugin_integration::get_place_post_type(); - if ( $post_type ) { - self::register_post_meta_event_bridge_for_activitypub_event_source( $post_type ); - } - - $post_type = $event_plugin_integration::get_organizer_post_type(); - if ( $post_type ) { - self::register_post_meta_event_bridge_for_activitypub_event_source( $post_type ); - } - } - } - - /** - * Register post meta _event_bridge_for_activitypub_event_source for a given post type. - * - * @param string $post_type The post type to register the meta for. - * @return void - */ - private static function register_post_meta_event_bridge_for_activitypub_event_source( $post_type ) { - \register_post_meta( - $post_type, - '_event_bridge_for_activitypub_event_source', - array( - 'type' => 'integer', - 'single' => true, - 'sanitize_callback' => 'absint', - ) - ); - } - - /** - * Get the Application actor via FEP-2677. - * - * @param string $domain The domain without scheme. - * @return bool|string The URL/ID of the application actor, false if not found. - */ - public static function get_application_actor( $domain ) { - $result = wp_remote_get( 'https://' . $domain . '/.well-known/nodeinfo' ); - - if ( is_wp_error( $result ) ) { - return false; - } - - $body = wp_remote_retrieve_body( $result ); - - $nodeinfo = json_decode( $body, true ); - - // Check if 'links' exists and is an array. - if ( isset( $nodeinfo['links'] ) && is_array( $nodeinfo['links'] ) ) { - foreach ( $nodeinfo['links'] as $link ) { - // Check if this link matches the application actor rel. - if ( isset( $link['rel'] ) && 'https://www.w3.org/ns/activitystreams#Application' === $link['rel'] ) { - if ( is_string( $link['href'] ) ) { - return $link['href']; - } - break; - } - } - } - - // Return false if no application actor is found. - return false; - } - - /** - * Filter that cached external posts are not scheduled via the ActivityPub plugin. - * - * Posts that are actually just external events are treated as cache. They are displayed in - * the frontend HTML view and redirected via ActivityPub request, but we do not own them. - * - * @param bool $disabled If it is disabled already by others (the upstream ActivityPub plugin). - * @param WP_Post $post The WordPress post object. - * @return bool False if the post is not disabled for federation via ActivityPub. - */ - public static function is_post_disabled_for_activitypub( $disabled, $post = null ): bool { - if ( $disabled ) { - return $disabled; - } - return self::is_cached_external_post( $post ); - } - - /** - * Determine whether a WP post is a cached external event. - * - * @param WP_Post|int $post The WordPress post object or post ID. - * @return bool - */ - public static function is_cached_external_post( $post ): bool { - $post_id = $post instanceof WP_Post ? $post->ID : $post; - - if ( \get_post_meta( $post_id, '_event_bridge_for_activitypub_event_source', true ) ) { - return true; - } - - return false; - } - - /** - * Add the ActivityPub template for EventPrime. - * - * @param string $template The path to the template object. - * @return string The new path to the JSON template. - */ - public static function redirect_activitypub_requests_for_cached_external_events( $template ) { - if ( defined( 'REST_REQUEST' ) && REST_REQUEST ) { - return $template; - } - - if ( ! is_activitypub_request() ) { - return $template; - } - - if ( ! \is_singular() ) { - return $template; - } - - $post = \get_post( \get_queried_object_id() ); - - if ( self::is_cached_external_post( $post ) ) { - \wp_safe_redirect( $post->guid, 301 ); - exit; - } - - return $template; - } - - /** - * Delete old cached events that took place in the past. - */ - public static function clear_cache() { - // Get the event plugin integration that is used. - $event_plugin_integration = Setup::get_event_plugin_integration_used_for_event_sources_feature(); - - if ( ! $event_plugin_integration ) { - return; - } - - $cache_retention_period = get_option( 'event_bridge_for_activitypub_event_source_cache_retention', WEEK_IN_SECONDS ); - - $ended_before_time = gmdate( 'Y-m-d H:i:s', time() - $cache_retention_period ); - - $past_event_ids = $event_plugin_integration::get_cached_remote_events( $ended_before_time ); - - foreach ( $past_event_ids as $post_id ) { - if ( has_post_thumbnail( $post_id ) ) { - $attachment_id = get_post_thumbnail_id( $post_id ); - wp_delete_attachment( $attachment_id, true ); - } - wp_delete_post( $post_id, true ); - } - } - - /** - * Add the Blog Authors to the following list of the Blog Actor - * if Blog not in single mode. - * - * @param array $follow_list The array of following urls. - * @param mixed $user The user object, a subtype of \Activitypub\Model\User. - * - * @return array The array of following urls. - */ - public static function add_event_sources_to_follow_collection( $follow_list, $user ): array { - if ( ! $user instanceof Blog ) { - return $follow_list; - } - - $event_sources_activitypub_ids = array_values( Event_Sources_Collection::get_event_sources() ); - - return array_merge( $follow_list, $event_sources_activitypub_ids ); - } - - /** - * Get an array will all unique hosts of all Event-Sources. - * - * @return array A list with all unique hosts of all Event Sources' ActivityPub IDs. - */ - public static function get_event_sources_hosts() { - $hosts = get_transient( 'event_bridge_for_activitypub_event_sources_hosts' ); - - if ( $hosts ) { - return $hosts; - } - - $event_sources = Event_Sources_Collection::get_event_sources(); - - $hosts = array(); - foreach ( $event_sources as $actor ) { - $url = wp_parse_url( $actor ); - if ( isset( $url['host'] ) ) { - $hosts[] = $url['host']; - } - } - - $hosts = array_unique( $hosts ); - - set_transient( 'event_bridge_for_activitypub_event_sources_hosts', $hosts ); - - return $hosts; - } - - /** - * Add Event Sources hosts to allowed hosts used by safe redirect. - * - * @param array $hosts The hosts before the filter. - * @return array - */ - public static function add_event_sources_hosts_to_allowed_redirect_hosts( $hosts ) { - $event_sources_hosts = self::get_event_sources_hosts(); - return array_merge( $hosts, $event_sources_hosts ); - } - - /** - * Mark incoming accept activities as valid. - * - * @param bool $valid The validation state. - * @param string $param The object parameter. - * @param WP_REST_Request $request The request object. - * - * @return bool|WP_Error The validation state: true if valid, false if not. - */ - public static function validate_activity( $valid, $param, $request ) { - if ( $valid ) { - return $valid; - } - $json_params = $request->get_json_params(); - - if ( isset( $json_params['object']['type'] ) && in_array( $json_params['object']['type'], array( 'Accept', 'Undo' ), true ) ) { - return true; - } - - return $valid; - } - - /** - * Validate the event object. - * - * @param bool $valid The validation state. - * @param string $param The object parameter. - * @param WP_REST_Request $request The request object. - * - * @return bool|WP_Error The validation state: true if valid, false if not. - */ - public static function validate_event_object( $valid, $param, $request ) { - $json_params = $request->get_json_params(); - - // Check if we should continue with the validation. - if ( isset( $json_params['object']['type'] ) && 'Event' === $json_params['object']['type'] ) { - $valid = true; - } else { - return $valid; - } - - if ( empty( $json_params['type'] ) ) { - return false; - } - - if ( empty( $json_params['actor'] ) ) { - return false; - } - - if ( ! in_array( $json_params['type'], array( 'Create', 'Update', 'Delete', 'Announce' ), true ) ) { - return $valid; - } - - if ( ! self::is_valid_activitypub_event_object( $json_params['object'] ) ) { - return false; - } - - if ( ! self::same_host( $json_params['actor'], $json_params['id'], $json_params['object']['id'] ) ) { - return false; - } - - return true; - } - - /** - * Checks if all provided URLs belong to the same origin (host). - * - * @param string ...$urls List of URLs to compare. - * @return bool True if all URLs have the same host, false otherwise. - */ - public static function same_host( ...$urls ) { - if ( empty( $urls ) ) { - return false; // No URLs given, can't compare hosts. - } - - $first = \wp_parse_url( array_shift( $urls ) ); - if ( ! isset( $first['host'] ) ) { - return false; - } - - $first_host = $first['host']; - - foreach ( $urls as $url ) { - $result = \wp_parse_url( $url ); - if ( ! isset( $result['host'] ) ) { - return false; - } - - if ( $result['host'] !== $first_host ) { - return false; - } - } - - return true; - } - - - /** - * Check if the object is a valid ActivityPub event. - * - * @param mixed $event_object The (event) object as an associative array. - * @return bool True if the object is an valid ActivityPub Event, false if not. - */ - public static function is_valid_activitypub_event_object( $event_object ): bool { - if ( ! is_array( $event_object ) ) { - return false; - } - - $required = array( - 'id', - 'startTime', - 'name', - ); - - if ( array_intersect( $required, array_keys( $event_object ) ) !== $required ) { - return false; - } - - if ( ! self::is_valid_activitypub_time_string( $event_object['startTime'] ) ) { - return false; - } - - if ( ! self::is_valid_activitypub_id( $event_object['id'] ) ) { - return false; - } - - return true; - } - - /** - * Validate an ActivityPub ID. - * - * @link https://www.w3.org/TR/activitypub/#obj-id - * - * @param string $id The ID to validate. - * @return bool - */ - public static function is_valid_activitypub_id( $id ) { - return \sanitize_url( $id ) ? true : false; - } - - /** - * Validate a time string if it is according to the ActivityPub specification. - * - * @link https://www.w3.org/TR/activitystreams-core/#dates - * - * @param string $time_string The xsd:datetime string. - * @return bool - */ - public static function is_valid_activitypub_time_string( string $time_string ): bool { - // Regular expression based on AS2 rules. - return 1 === preg_match( '/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?(\.\d+)?(Z|[+-]\d{2}:\d{2})$/', $time_string ); - } - - /** - * Check if a given DateTime is already passed. - * - * @param string|DateTime $time The ActivityPub like time string or DateTime object. - * @return bool - */ - public static function is_time_passed( $time ) { - if ( ! $time instanceof DateTime ) { - // Create a DateTime object from the ActivityPub time string. - $time = new DateTime( $time, new DateTimeZone( 'UTC' ) ); - } - - // Get the current time in UTC. - $current_time = new DateTime( 'now', new DateTimeZone( 'UTC' ) ); - - // Compare the event time with the current time. - return $time < $current_time; - } - - /** - * Determine whether an Event is an ongoing or future event. - * - * @param array $event_object The ActivityPub Event as an associative array. - * @return bool - */ - public static function is_ongoing_or_future_event( $event_object ) { - if ( isset( $event_object['endTime'] ) ) { - $time = $event_object['endTime']; - } else { - $time = new DateTime( $event_object['startTime'], new DateTimeZone( 'UTC' ) ); - $time->modify( '+3 hours' ); - } - return ! self::is_time_passed( $time ); - } - - /** - * Check that an ActivityPub actor is an event source (i.e. it is followed by the ActivityPub blog actor). - * - * @param string $actor_id The actor ID. - * @return bool True if the ActivityPub actor ID is followed, false otherwise. - */ - public static function actor_is_event_source( $actor_id ) { - $event_sources = Event_Sources_Collection::get_event_sources(); - if ( in_array( $actor_id, $event_sources, true ) ) { - return true; - } - return false; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-outbox-parser.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-outbox-parser.php deleted file mode 100644 index f970383e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-outbox-parser.php +++ /dev/null @@ -1,282 +0,0 @@ -get_outbox(); - - if ( ! $outbox_url ) { - return; - } - - // Schedule the import of events via the outbox. - self::queue_importing_from_outbox( $outbox_url, $event_source->get__id(), 0 ); - } - - /** - * Import events from an outbox: OrderedCollection or OrderedCollectionPage. - * - * @param string $url The url of the current page or outbox. - * @param int $event_source_post_id The Post ID of the Event Source that owns the outbox. - * @return void - */ - public static function import_events_from_outbox( $url, $event_source_post_id ) { - $setup = Setup::get_instance(); - if ( ! $setup->is_activitypub_plugin_active() ) { - return; - } - - $outbox = self::fetch_outbox( $url ); - - if ( ! $outbox ) { - return; - } - - $current_count = self::get_import_count( $event_source_post_id ); - - if ( $current_count >= self::MAX_EVENTS_TO_IMPORT ) { - return; - } - - // Process orderedItems if they exist (non-paginated outbox). - if ( isset( $outbox['orderedItems'] ) && is_array( $outbox['orderedItems'] ) ) { - $current_count += self::import_events_from_items( - $outbox['orderedItems'], - $event_source_post_id, - self::MAX_EVENTS_TO_IMPORT - $current_count - ); - } - - self::update_import_count( $event_source_post_id, $current_count ); - - // If the count is already exceeded abort here. - if ( $current_count >= self::MAX_EVENTS_TO_IMPORT ) { - return; - } - - // Get next page and if it exists schedule the import of next page. - $pagination_url = self::get_pagination_url( $outbox ); - - if ( $pagination_url ) { - self::queue_importing_from_outbox( $pagination_url, $event_source_post_id ); - } - } - - /** - * Check if an Activity is of type Update or Create. - * - * @param array $activity The Activity as associative array. - * @return bool - */ - private static function is_create_or_update_activity( $activity ) { - if ( ! isset( $activity['type'] ) ) { - return false; - } - if ( in_array( $activity['type'], array( 'Update', 'Create' ), true ) ) { - return true; - } - return false; - } - - /** - * Parses items from an Collection, OrderedCollection, CollectionPage or OrderedCollectionPage. - * - * @param array $items The items as an associative array. - * @param int $max_items The maximum number of items to parse. - * @return array Parsed events from the collection. - */ - private static function parse_outbox_items_for_events( $items, $max_items ) { - $parsed_events = array(); - - foreach ( $items as $activity ) { - // Abort if we have exceeded the maximal events to return. - if ( $max_items > 0 && count( $parsed_events ) >= $max_items ) { - break; - } - - // Check if it is a create or update Activity. - if ( ! self::is_create_or_update_activity( $activity ) ) { - continue; - } - - // If no object is set we cannot process anything. - if ( ! isset( $activity['object'] ) ) { - continue; - } - - // Check if the Event object meets the minimum requirements and is valid. - $is_valid_event_object = Event_Sources::is_valid_activitypub_event_object( $activity['object'] ); - if ( ! $is_valid_event_object ) { - continue; - } - - // Check if the event is in the future or ongoing. - if ( Event_Sources::is_ongoing_or_future_event( $activity['object'] ) ) { - $parsed_events[] = $activity['object']; - } - } - - return $parsed_events; - } - - /** - * Import events from the items of an outbox. - * - * @param array $items The items/orderedItems as an associative array. - * @param int $event_source_post_id The Post ID of the Event Source that owns the outbox. - * @param int $limit The limit of how many events to save locally. - * @return int The number of saved events (at least attempted). - */ - private static function import_events_from_items( $items, $event_source_post_id, $limit = -1 ): int { - $events = self::parse_outbox_items_for_events( $items, $limit ); - - $transmogrifier = Setup::get_transmogrifier(); - - if ( ! $transmogrifier ) { - return 0; - } - - $imported_count = 0; - - foreach ( $events as $event ) { - $transmogrifier::save( $event, $event_source_post_id ); - ++$imported_count; - if ( $limit > 0 && $imported_count >= $limit ) { - break; - } - } - - return $imported_count; - } - - /** - * Schedule the import of events from an outbox OrderedCollection or OrderedCollectionPage. - * - * @param string $url The url of the current page or outbox. - * @param int $event_source_post_id The Post ID of the Event Source that owns the outbox. - * @param int $delay The delay of the current time in seconds. - * @return bool - */ - private static function queue_importing_from_outbox( $url, $event_source_post_id, $delay = 10 ): bool { - $hook = 'event_bridge_for_activitypub_import_events_from_outbox'; - $args = array( $url, $event_source_post_id ); - - if ( \wp_next_scheduled( $hook, $args ) ) { - return false; - } - - return \wp_schedule_single_event( \time() + $delay, $hook, $args ); - } - - /** - * Get the current import count for the actor. - * - * @param int $event_source_post_id The Post ID of the Event Source that owns the outbox. - * @return int The current count of imported events. - */ - private static function get_import_count( $event_source_post_id ): int { - return (int) \get_post_meta( $event_source_post_id, '_event_bridge_for_activitypub_event_count', true ); - } - - /** - * Update the import count for an event source.. - * - * @param int $event_source_post_id The Post ID of the Event Source that owns the outbox. - * @param int $count The new count of imported events. - * @return void - */ - private static function update_import_count( $event_source_post_id, $count ) { - \update_post_meta( $event_source_post_id, '_event_bridge_for_activitypub_event_count', $count ); - } - - /** - * Fetch the outbox from the given URL. - * - * @param string $url The URL of the outbox. - * @return array|null The decoded outbox data, or null if fetching fails. - */ - private static function fetch_outbox( $url ) { - $response = Http::get( $url ); - - if ( \is_wp_error( $response ) ) { - return null; - } - - $outbox = \wp_remote_retrieve_body( $response ); - $outbox = \json_decode( $outbox, true ); - - return ( is_array( $outbox ) && isset( $outbox['type'] ) && isset( $outbox['id'] ) ) ? $outbox : null; - } - - /** - * Get the pagination URL from the outbox. - * - * @param array $outbox The outbox data. - * @return string|null The pagination URL, or null if not found. - */ - private static function get_pagination_url( $outbox ) { - // If we are on a collection page simply use the next key. - if ( 'OrderedCollectionPage' === $outbox['type'] && ! empty( $outbox['next'] ) && is_string( $outbox['next'] ) ) { - return $outbox['next']; - } - - // If we still have the ordered collection itself. - if ( isset( $outbox['type'] ) && 'OrderedCollection' === $outbox['type'] && isset( $outbox['first'] ) ) { - return object_to_uri( $outbox['first'] ); - } - - return null; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-preview.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-preview.php deleted file mode 100644 index 637947bf..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-preview.php +++ /dev/null @@ -1,40 +0,0 @@ -get_active_event_plugins_post_types(); - - if ( in_array( \get_post_type(), $event_post_types, true ) ) { - return EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_DIR . '/templates/event-preview.php'; - } - - return ACTIVITYPUB_PLUGIN_DIR . '/templates/post-preview.php'; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-reminder.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-reminder.php deleted file mode 100644 index 67153ebe..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-reminder.php +++ /dev/null @@ -1,192 +0,0 @@ - true, - 'single' => true, - 'type' => 'integer', - 'sanitize_callback' => 'absint', - ) - ); - } - } - - /** - * Enqueue the block editor assets. - */ - public static function enqueue_editor_assets() { - // Check for our supported post types. - $current_screen = \get_current_screen(); - $event_post_types = Setup::get_instance()->get_active_event_plugins_post_types(); - if ( ! $current_screen || ! in_array( $current_screen->post_type, $event_post_types, true ) ) { - return; - } - $asset_data = include EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_DIR . 'build/reminder/plugin.asset.php'; - $plugin_url = plugins_url( 'build/reminder/plugin.js', EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_FILE ); - \wp_enqueue_script( 'event-bridge-for-activitypub-reminder', $plugin_url, $asset_data['dependencies'], $asset_data['version'], true ); - - // Pass the the default site wide time gap option to the settings block on the events edit page. - \wp_localize_script( - 'event-bridge-for-activitypub-reminder', - 'activityPubEventBridge', - array( - 'reminderTypeGap' => \get_option( 'event_bridge_for_activitypub_reminder_time_gap', 0 ), - ) - ); - } - - /** - * Schedule Activities. - * - * @param string $new_status New post status. - * @param string $old_status Old post status. - * @param ?WP_Post $post Post object. - */ - public static function maybe_schedule_event_reminder( $new_status, $old_status, $post ): void { - if ( ! $post instanceof WP_Post ) { - return; - } - - // At first always unschedule the reminder for this event, it will be added again, in case. - self::unschedule_event_reminder( $post->ID ); - - // Do not set reminders if post is password protected. - if ( \post_password_required( $post ) ) { - return; - } - - // Only schedule an reminder for event post types. - if ( ! Setup::get_instance()->is_event_post_type_of_active_event_plugin( $post->post_type ) ) { - return; - } - - // Do not schedule a reminder if the event is not published. - if ( 'publish' !== $new_status ) { - return; - } - - // See if a reminder time gap is set for the event individually in the events post-meta. - $reminder_time_gap = (int) get_post_meta( $post->ID, 'event_bridge_for_activitypub_reminder_time_gap', true ); - - // If not fallback to the global reminder time gap. - if ( ! $reminder_time_gap ) { - $reminder_time_gap = \get_option( 'event_bridge_for_activitypub_reminder_time_gap', 0 ); - } - - // Any non positive integer means that this feature is not active for this event post. - if ( 0 === $reminder_time_gap || ! is_int( $reminder_time_gap ) ) { - return; - } - - // Get start time of the event. - $event_transformer = Transformer_Factory::get_transformer( $post ); - - if ( \is_wp_error( $event_transformer ) || ! $event_transformer instanceof Event_Transformer ) { - return; - } - - $start_time = $event_transformer->get_start_time(); - $start_datetime = new DateTime( $start_time ); - $start_timestamp = $start_datetime->getTimestamp(); - - // Get the time when the reminder of the event's start should be sent. - $schedule_time = $start_timestamp - $reminder_time_gap; - - // If the reminder time has already passed "now" skip it. - if ( $schedule_time < \time() ) { - return; - } - - // All checks passed: schedule a single event which will trigger the sending of the reminder for this event post. - \wp_schedule_single_event( $schedule_time, 'event_bridge_for_activitypub_send_event_reminder', array( $post->ID ) ); - } - - /** - * Unschedule the event reminder. - * - * @param int $post_id The WordPress post ID of the event post. - */ - public static function unschedule_event_reminder( $post_id ): void { - \wp_clear_scheduled_hook( 'event_bridge_for_activitypub_send_event_reminder', array( $post_id ) ); - } - - /** - * Send a reminder for an event post. - * - * This currently sends an Announce activity. - * - * @param int $post_id The WordPress post ID of the event post. - */ - public static function send_event_reminder( $post_id ) { - $post = \get_post( $post_id ); - - $transformer = Transformer_Factory::get_transformer( $post ); - - if ( \is_wp_error( $transformer ) || ! $transformer instanceof Event_Transformer ) { - return; - } - - $actor = $transformer->get_actor_object(); - $user_id = $actor->get__id(); - - if ( $user_id > 0 && is_user_disabled( $user_id ) ) { - return; - } - - // Add announce of the event to outbox. - add_to_outbox( $post, 'Announce', $user_id ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-settings.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-settings.php deleted file mode 100644 index e4dca80d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-settings.php +++ /dev/null @@ -1,261 +0,0 @@ - 'string', - 'description' => \__( 'Default standardized federated event category.', 'event-bridge-for-activitypub' ), - 'show_in_rest' => true, - 'default' => self::DEFAULT_EVENT_CATEGORY, - 'sanitize_callback' => array( self::class, 'sanitize_mapped_event_category' ), - ) - ); - - \register_setting( - 'event-bridge-for-activitypub', - 'event_bridge_for_activitypub_event_category_mappings', - array( - 'type' => 'array', - 'description' => \__( 'Define your own custom post template', 'event-bridge-for-activitypub' ), - 'default' => array(), - 'sanitize_callback' => array( self::class, 'sanitize_event_category_mappings' ), - ) - ); - - \register_setting( - 'event-bridge-for-activitypub', - 'event_bridge_for_activitypub_reminder_time_gap', - array( - 'type' => 'array', - 'description' => \__( 'Time gap in seconds when a reminder is triggered that the event is about to start.', 'event-bridge-for-activitypub' ), - 'default' => 0, // Zero leads to this feature being deactivated. - 'sanitize_callback' => 'absint', - ) - ); - - \register_setting( - 'event-bridge-for-activitypub', - 'event_bridge_for_activitypub_initially_activated', - array( - 'type' => 'boolean', - 'description' => \__( 'Whether the plugin just got activated for the first time.', 'event-bridge-for-activitypub' ), - 'default' => 1, - ) - ); - - \register_setting( - 'event-bridge-for-activitypub', - 'event_bridge_for_activitypub_summary_type', - array( - 'type' => 'string', - 'description' => \__( 'Summary type to use for ActivityStreams', 'event-bridge-for-activitypub' ), - 'show_in_rest' => true, - 'default' => 'preset', - ) - ); - - \register_setting( - 'event-bridge-for-activitypub', - 'event_bridge_for_activitypub_summary_format', - array( - 'type' => 'string', - 'description' => \__( 'Summary format to use for ActivityStreams', 'event-bridge-for-activitypub' ), - 'show_in_rest' => true, - 'default' => 'html', - ) - ); - - \register_setting( - 'event-bridge-for-activitypub', - 'event_bridge_for_activitypub_custom_summary', - array( - 'type' => 'string', - 'description' => \__( 'Define your own custom summary template for events', 'event-bridge-for-activitypub' ), - 'show_in_rest' => true, - 'default' => EVENT_BRIDGE_FOR_ACTIVITYPUB_SUMMARY_TEMPLATE, - ) - ); - - \register_setting( - 'event-bridge-for-activitypub_event-sources', - 'event_bridge_for_activitypub_event_sources_active', - array( - 'type' => 'boolean', - 'show_in_rest' => true, - 'description' => \__( 'Whether the event sources feature is activated.', 'event-bridge-for-activitypub' ), - 'default' => 0, - 'sanitize_callback' => array( self::class, 'sanitize_event_sources_feature_active' ), - ) - ); - - \register_setting( - 'event-bridge-for-activitypub_event-sources', - 'event_bridge_for_activitypub_event_source_cache_retention', - array( - 'type' => 'integer', - 'show_in_rest' => true, - 'description' => \__( 'The cache retention period for external event sources.', 'event-bridge-for-activitypub' ), - 'default' => WEEK_IN_SECONDS, - 'sanitize_callback' => 'absint', - ) - ); - - \register_setting( - 'event-bridge-for-activitypub_event-sources', - 'event_bridge_for_activitypub_integration_used_for_event_sources_feature', - array( - 'type' => 'string', - 'description' => \__( 'Define which plugin/integration is used for the event sources feature', 'event-bridge-for-activitypub' ), - 'default' => array(), - 'sanitize_callback' => array( self::class, 'sanitize_event_plugin_integration_used_for_event_sources' ), - ) - ); - - \register_setting( - 'event-bridge-for-activitypub_add-event-source', - 'event_bridge_for_activitypub_add_event_source', - array( - 'type' => 'array', - 'description' => \__( 'Dummy setting for adding event sources', 'event-bridge-for-activitypub' ), - 'default' => '', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - } - - /** - * Do not allow the event sources feature to get deactivated, when event sources are still followed. - * - * @param mixed $value The optios value. - */ - public static function sanitize_event_sources_feature_active( $value ) { - $count = count( Event_Sources::get_event_sources() ); - - $value = (bool) $value; - - if ( 0 === $count ) { - return $value; - } - - if ( ! $value ) { - \add_settings_error( - 'event-bridge-for-activitypub_event-sources', - 'event_bridge_for_activitypub_cannot_disable_event_sources', - __( 'It is not possible to disable the Event Sources feature while you are still having active followed Event Sources.', 'event-bridge-for-activitypub' ), - 'error' - ); - } - - return true; - } - - /** - * Sanitize the option which event plugin. - * - * @param mixed $event_plugin_integration The setting. - * @return string - */ - public static function sanitize_event_plugin_integration_used_for_event_sources( $event_plugin_integration ): string { - if ( ! is_string( $event_plugin_integration ) ) { - return ''; - } - $setup = Setup::get_instance(); - $active_event_plugins = $setup->get_active_event_plugins(); - - $valid_options = array(); - foreach ( $active_event_plugins as $active_event_plugin ) { - if ( $active_event_plugin instanceof Feature_Event_Sources ) { - $valid_options[] = get_class( $active_event_plugin ); - } - } - if ( in_array( $event_plugin_integration, $valid_options, true ) ) { - return $event_plugin_integration; - } - return Setup::get_default_integration_class_name_used_for_event_sources_feature(); - } - - /** - * Sanitize the target ActivityPub Event category. - * - * @param string $event_category The ActivityPUb event category. - */ - public static function sanitize_mapped_event_category( $event_category ): string { - return self::is_allowed_event_category( $event_category ) ? $event_category : self::DEFAULT_EVENT_CATEGORY; - } - - /** - * Sanitization function for the event category mapping setting. - * - * Currently only the default event categories are allowed to be target of a mapping. - * - * @param array $event_category_mappings The settings value. - * - * @return array An array that contains only valid mapping pairs. - */ - public static function sanitize_event_category_mappings( $event_category_mappings ): array { - if ( empty( $event_category_mappings ) ) { - return array(); - } - foreach ( $event_category_mappings as $taxonomy_slug => $event_category ) { - if ( ! self::is_allowed_event_category( $event_category ) ) { - unset( $event_category_mappings[ $taxonomy_slug ] ); - } - } - return $event_category_mappings; - } - - /** - * Checks if the given event category is allowed to be target of a mapping. - * - * @param string $event_category The event category to check. - * - * @return bool True if allowed, false otherwise. - */ - private static function is_allowed_event_category( $event_category ): bool { - require_once EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_DIR . '/includes/event-categories.php'; - $allowed_event_categories = array_keys( EVENT_BRIDGE_FOR_ACTIVITYPUB_EVENT_CATEGORIES ); - return in_array( $event_category, $allowed_event_categories, true ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-setup.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-setup.php deleted file mode 100644 index 8f9ffe02..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/class-setup.php +++ /dev/null @@ -1,692 +0,0 @@ -activitypub_plugin_is_active = defined( 'ACTIVITYPUB_PLUGIN_VERSION' ) || \is_plugin_active( 'activitypub/activitypub.php' ); - $this->activitypub_plugin_version = self::get_activitypub_plugin_version(); - - // Register main action that load the Event Bridge For ActivityPub. - \add_action( 'plugins_loaded', array( $this, 'setup_hooks' ) ); - } - - /** - * The single instance of the class. - * - * @since 1.0.0 - * @var ?self The instance of the class. - */ - private static $instance = null; - - /** - * Get the instance of the Singleton class. - * - * If an instance does not exist, it creates one; otherwise, it returns the existing instance. - * - * @since 1.0.0 - * - * @return self The instance of the class. - */ - public static function get_instance(): self { - if ( null === self::$instance ) { - self::$instance = new self(); - } - - return self::$instance; - } - - /** - * Getter function for whether the ActivityPub plugin is active. - * - * @return bool True when the ActivityPub plugin is active. - */ - public function is_activitypub_plugin_active(): bool { - return $this->activitypub_plugin_is_active; - } - - /** - * Get the current version of the ActivityPub plugin. - * - * @return string The semantic Version. - */ - private static function get_activitypub_plugin_version(): string { - if ( defined( 'ACTIVITYPUB_PLUGIN_VERSION' ) ) { - return constant( 'ACTIVITYPUB_PLUGIN_VERSION' ); - } - return '0.0.0'; - } - - /** - * Getter function for the active event plugins. - * - * @return Event_Plugin_Integration[] - */ - public function get_active_event_plugins(): array { - return $this->active_event_plugins; - } - - /** - * Getter function for the active event plugins event post types. - * - * @return array List of event post types of the active event plugins. - */ - public function get_active_event_plugins_post_types(): array { - $post_types = array(); - foreach ( $this->active_event_plugins as $event_plugin ) { - $post_types[] = $event_plugin->get_post_type(); - } - - return $post_types; - } - - /** - * Function to check whether a post type is an event post type of an active event plugin. - * - * @param string $post_type The post type. - * - * @return bool True if it is an event post type. - */ - public function is_event_post_type_of_active_event_plugin( $post_type ): bool { - foreach ( $this->active_event_plugins as $event_plugin ) { - if ( $post_type === $event_plugin->get_post_type() ) { - return true; - } - } - - return false; - } - - /** - * Holds all the full class names for the supported event plugins. - * - * @var string[] - */ - private const EVENT_PLUGIN_INTEGRATIONS = array( - \Event_Bridge_For_ActivityPub\Integrations\Events_Manager::class, - \Event_Bridge_For_ActivityPub\Integrations\GatherPress::class, - \Event_Bridge_For_ActivityPub\Integrations\The_Events_Calendar::class, - \Event_Bridge_For_ActivityPub\Integrations\VS_Event_List::class, - \Event_Bridge_For_ActivityPub\Integrations\WP_Event_Manager::class, - \Event_Bridge_For_ActivityPub\Integrations\Eventin::class, - \Event_Bridge_For_ActivityPub\Integrations\Modern_Events_Calendar_Lite::class, - \Event_Bridge_For_ActivityPub\Integrations\Event_Organiser::class, - \Event_Bridge_For_ActivityPub\Integrations\EventPrime::class, - \Event_Bridge_For_ActivityPub\Integrations\EventOn::class, - ); - - /** - * Force the re-scan for active event plugins without using the cached transient. - * - * @return void - */ - public function redetect_active_event_plugins(): void { - if ( ! $this->activitypub_plugin_is_active ) { - return; - } - \delete_transient( 'event_bridge_for_activitypub_active_event_plugins' ); - - $this->detect_active_event_plugins(); - } - - /** - * Function that checks for supported activated event plugins. - * - * @return array List of supported event plugins as keys from the SUPPORTED_EVENT_PLUGINS const. - */ - public function detect_active_event_plugins(): array { - // Detection will fail in case the ActivityPub plugin is not active. - if ( ! $this->activitypub_plugin_is_active ) { - return array(); - } - - $active_event_plugins = \get_transient( 'event_bridge_for_activitypub_active_event_plugins' ); - - if ( $active_event_plugins ) { - $this->active_event_plugins = $active_event_plugins; - return $active_event_plugins; - } - - if ( ! function_exists( 'get_plugins' ) ) { - // @phpstan-ignore-next-line - require_once ABSPATH . 'wp-admin/includes/plugin.php'; - } - - $all_plugins = array_merge( \get_plugins(), \get_mu_plugins() ); - - $active_event_plugins = array(); - foreach ( self::EVENT_PLUGIN_INTEGRATIONS as $event_plugin_integration ) { - // Get the filename of the main plugin file of the event plugin (relative to the plugin dir). - $event_plugin_file = $event_plugin_integration::get_relative_plugin_file(); - - // Check if plugin is present on disk and is activated. - if ( array_key_exists( $event_plugin_file, $all_plugins ) && \is_plugin_active( $event_plugin_file ) ) { - $active_event_plugins[ $event_plugin_file ] = new $event_plugin_integration(); - } - } - \set_transient( 'event_bridge_for_activitypub_active_event_plugins', $active_event_plugins ); - $this->active_event_plugins = $active_event_plugins; - return $active_event_plugins; - } - - /** - * Function that checks which event plugins support the event sources feature. - * - * @return array List of supported event plugins as keys from the SUPPORTED_EVENT_PLUGINS const. - */ - public static function detect_event_plugins_supporting_event_sources(): array { - $plugins_supporting_event_sources = array(); - - foreach ( self::EVENT_PLUGIN_INTEGRATIONS as $event_plugin_integration ) { - if ( is_a( $event_plugin_integration, Feature_Event_Sources::class, true ) ) { - $plugins_supporting_event_sources[] = new $event_plugin_integration(); - } - } - return $plugins_supporting_event_sources; - } - - /** - * Main setup function of the plugin "Event Bridge For ActivityPub". - * - * This method adds hooks for different purposes as needed. - * - * @since 1.0.0 - * - * @return void - */ - public function setup_hooks(): void { - // Detect active supported event plugins. - $this->detect_active_event_plugins(); - - // Register hook that runs when this plugin gets activated. - \register_activation_hook( EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_FILE, array( $this, 'activate' ) ); - - // Register listeners whenever any plugin gets activated or deactivated to maybe update the transient of active event plugins. - \add_action( 'activated_plugin', array( $this, 'redetect_active_event_plugins' ) ); - \add_action( 'deactivated_plugin', array( $this, 'redetect_active_event_plugins' ) ); - - // Add hook that takes care of all notices in the Admin UI. - \add_action( 'admin_init', array( $this, 'do_admin_notices' ) ); - - // Add hook that registers all settings of this plugin to WordPress. - \add_action( 'admin_init', array( Settings::class, 'register_settings' ) ); - - // Add hook that loads CSS and JavaScript files for the Admin UI. - \add_action( 'admin_enqueue_scripts', array( self::class, 'enqueue_styles' ) ); - - // Register the settings page of this plugin as a Tab in the ActivityPub plugins settings. - Settings_Page::init(); - - // Add settings link in the Plugin overview Page. - \add_filter( - 'plugin_action_links_' . EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_BASENAME, - array( Settings_Page::class, 'settings_link' ) - ); - - // If we don't have any active event plugins, or the ActivityPub plugin is not enabled, abort here. - if ( empty( $this->active_event_plugins ) || ! $this->activitypub_plugin_is_active ) { - self::shut_down(); - return; - } - - // Register health checks and status reports to the WordPress status report site. - \add_action( 'init', array( Health_Check::class, 'init' ) ); - - // Check if the minimum required version of the ActivityPub plugin is installed, if not abort. - - if ( ! version_compare( $this->activitypub_plugin_version, EVENT_BRIDGE_FOR_ACTIVITYPUB_ACTIVITYPUB_PLUGIN_MIN_VERSION, '>=' ) ) { - return; - } - - // Register our own deplayed event scheduler because of upstream race-condition bug. - // See https://github.com/Automattic/wordpress-activitypub/issues/1269 for more information. - if ( version_compare( $this->activitypub_plugin_version, '7.0.0', '<' ) ) { - Event_Scheduler::init(); - } - - // Register the event reminders. - \add_action( 'init', array( Reminder::class, 'init' ) ); - - // Initialize the handling of "Join" activities. - Join_Handler::init(); - - // If the Event-Sources feature is enabled and all requirements are met, initialize it. - if ( ! is_user_type_disabled( 'blog' ) && \get_option( 'event_bridge_for_activitypub_event_sources_active' ) ) { - Event_Sources::init(); - } - - // Initialize writing of debug logs. - Debug::init(); - - $this->register_plugin_specific_hooks(); - - // Most importantly: register the ActivityPub transformers for events to the ActivityPub plugin. - \add_filter( 'activitypub_transformer', array( $this, 'register_activitypub_transformer' ), 10, 3 ); - - // Apply custom ActivityPub previews for events. - \add_action( 'init', array( Preview::class, 'init' ) ); - - $this->maybe_register_term_activitypub_ids(); - } - - /** - * Temporary hack to register custom actions and hooks, only needed by exceptional event plugins. - * - * @return void - */ - private function register_plugin_specific_hooks(): void { - if ( array_key_exists( \Event_Bridge_For_ActivityPub\Integrations\EventPrime::get_relative_plugin_file(), $this->active_event_plugins ) ) { - \Event_Bridge_For_ActivityPub\Integrations\EventPrime::init(); - } - } - - /** - * Shut down the plugin. - * - * @return void - */ - public static function shut_down(): void { - // Delete all transients. - Event_Sources_Collection::delete_event_source_transients(); - \delete_transient( 'event_bridge_for_activitypub_active_event_plugins' ); - - // Unschedule all crons. - \wp_unschedule_hook( 'event_bridge_for_activitypub_event_sources_clear_cache' ); - } - - /** - * Add the CSS for the admin pages. - * - * @param string $hook_suffix The suffix of the hook. - * - * @return void - */ - public static function enqueue_styles( $hook_suffix ): void { - if ( 'settings_page_activitypub' !== $hook_suffix ) { - return; - } - - // Check if we're on your custom tab. - $current_tab = isset( $_GET['tab'] ) ? \sanitize_key( $_GET['tab'] ) : 'welcome'; // phpcs:ignore WordPress.Security.NonceVerification.Recommended - if ( 'event-bridge-for-activitypub' === $current_tab ) { - \wp_enqueue_style( - 'event-bridge-for-activitypub-admin-styles', - plugins_url( - 'assets/css/event-bridge-for-activitypub-admin.css', - EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_FILE - ), - array(), - EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_VERSION - ); - \wp_enqueue_script( - 'event-bridge-for-activitypub-admin-script', - plugins_url( - 'assets/js/event-bridge-for-activitypub-admin.js', - EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_FILE - ), - array( 'jquery' ), - EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_VERSION, - false - ); - } - } - - /** - * Fires the initialization of admin notices. - */ - public function do_admin_notices(): void { - foreach ( $this->active_event_plugins as $event_plugin ) { - new Event_Plugin_Admin_Notices( $event_plugin ); - } - // Check if any general admin notices are needed and add actions to insert the needed admin notices. - if ( ! $this->activitypub_plugin_is_active ) { - // The ActivityPub plugin is not active. - \add_action( 'admin_notices', array( General_Admin_Notices::class, 'activitypub_plugin_not_enabled' ), 10, 0 ); - return; - } - if ( ! version_compare( $this->activitypub_plugin_version, EVENT_BRIDGE_FOR_ACTIVITYPUB_ACTIVITYPUB_PLUGIN_MIN_VERSION, '>=' ) ) { - // The ActivityPub plugin is too old. - \add_action( 'admin_notices', array( General_Admin_Notices::class, 'activitypub_plugin_version_too_old' ), 10, 0 ); - return; - } - if ( empty( $this->active_event_plugins ) ) { - // No supported Event Plugin is active. - \add_action( 'admin_notices', array( General_Admin_Notices::class, 'no_supported_event_plugin_active' ), 10, 0 ); - } - } - - /** - * Add the custom transformers for the events and locations of several WordPress event plugins. - * - * @param \Activitypub\Transformer\Base $transformer The transformer to use. - * @param mixed $data The data to transform. - * @param string $object_class The class of the object to transform. - * - * @return \Activitypub\Transformer\Base|null|\WP_Error - */ - public function register_activitypub_transformer( $transformer, $data, $object_class ) { - // If the current WordPress object is not a post (e.g., a WP_Comment), don't change the transformer. - if ( 'WP_Post' === $object_class ) { - // Get the transformer for a specific event plugins event or location post type. - foreach ( $this->active_event_plugins as $event_plugin ) { - // Check if we have an event. - if ( $data->post_type === $event_plugin->get_post_type() ) { - if ( ! self::is_post_disabled( $data ) ) { - return $event_plugin::get_activitypub_event_transformer( $data ); - } else { - return new \WP_Error( 'invalid_object', __( 'Invalid object', 'event-bridge-for-activitypub' ) ); - } - } - - // Check if we have a location. - if ( $data->post_type === $event_plugin->get_place_post_type() ) { - if ( ! self::is_post_disabled( $data ) ) { - return $event_plugin::get_activitypub_place_transformer( $data ); - } else { - return new \WP_Error( 'invalid_object', __( 'Invalid object', 'event-bridge-for-activitypub' ) ); - } - } - } - } elseif ( 'WP_Term' === $object_class ) { - foreach ( $this->active_event_plugins as $event_plugin ) { - if ( $data->taxonomy === $event_plugin->get_place_taxonomy() ) { - return $event_plugin::get_activitypub_place_transformer( $data ); - } - } - } - - // Return the default transformer. - return $transformer; - } - - /** - * Check if a post of a post type that is managed by this plugin is disabled for ActivityPub. - * - * This function checks the visibility of the post and whether it is private or has a password. - * - * @param mixed $post The post object or ID. - * - * @return boolean True if the post is disabled, false otherwise. - */ - public static function is_post_disabled( $post ): bool { - $post = \get_post( $post ); - $disabled = false; - - if ( ! $post ) { - return true; - } - - $visibility = \get_post_meta( $post->ID, 'activitypub_content_visibility', true ); - - if ( - ACTIVITYPUB_CONTENT_VISIBILITY_LOCAL === $visibility || - ACTIVITYPUB_CONTENT_VISIBILITY_PRIVATE === $visibility || - 'private' === $post->post_status || - ! empty( $post->post_password ) - ) { - $disabled = true; - } - - return $disabled; - } - - /** - * Activates ActivityPub support for all active event plugins event post-types. - * - * @since 1.0.0 - * - * @return void - */ - public function activate_activitypub_support_for_active_event_plugins(): void { - // If someone installs this plugin, we simply enable ActivityPub support for all currently active event post types. - $activitypub_supported_post_types = get_option( 'activitypub_support_post_types', array() ); - foreach ( $this->active_event_plugins as $event_plugin ) { - if ( ! in_array( $event_plugin->get_post_type(), $activitypub_supported_post_types, true ) ) { - $activitypub_supported_post_types[] = $event_plugin->get_post_type(); - add_post_type_support( $event_plugin->get_post_type(), 'activitypub' ); - } - } - \update_option( 'activitypub_support_post_types', $activitypub_supported_post_types ); - } - - /** - * Activates the Event Bridge for ActivityPub plugin. - * - * This method handles the activation of the Event Bridge for ActivityPub plugin. - * - * @since 1.0.0 - * @see register_activation_hook() - * @return void - */ - public function activate(): void { - $this->redetect_active_event_plugins(); - // Don't allow plugin activation, when the ActivityPub plugin is not activated yet. - if ( ! $this->activitypub_plugin_is_active ) { - \deactivate_plugins( plugin_basename( EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_FILE ) ); - $notice = General_Admin_Notices::get_admin_notice_activitypub_plugin_not_enabled(); - \wp_die( - // @phpstan-ignore-next-line - wp_kses( $notice, General_Admin_Notices::ALLOWED_HTML ), - 'Plugin dependency check', - array( 'back_link' => true ), - ); - } - - if ( empty( $this->active_event_plugins ) ) { - \deactivate_plugins( plugin_basename( EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_FILE ) ); - $notice = General_Admin_Notices::get_admin_notice_no_supported_event_plugin_active(); - \wp_die( - // @phpstan-ignore-next-line - wp_kses( $notice, General_Admin_Notices::ALLOWED_HTML ), - 'Plugin dependency check', - array( 'back_link' => true ), - ); - } - - self::activate_activitypub_support_for_active_event_plugins(); - } - - /** - * Maybe (depending on active event plugins) make it possible to querly event terms by `?term_id=`. - * - * @return void - */ - private function maybe_register_term_activitypub_ids(): void { - $register_term_query_var = false; - - foreach ( $this->active_event_plugins as $event_plugin ) { - if ( $event_plugin::get_place_taxonomy() ) { - $register_term_query_var = true; - break; - } - } - - if ( $register_term_query_var ) { - \add_filter( 'query_vars', array( self::class, 'add_term_query_var' ) ); - \add_filter( 'activitypub_queried_object', array( $this, 'maybe_detect_event_plugins_location_term' ) ); - } - } - - /** - * Add the 'activitypub' query for term variable so WordPress won't mangle it. - * - * @param array $vars The query variables. - * - * @return array The query variables. - */ - public static function add_term_query_var( $vars ) { - $vars[] = 'term_id'; - - return $vars; - } - - /** - * Filters the queried object. - * - * @param \WP_Term|\WP_Post_Type|\WP_Post|\WP_User|\WP_Comment|null $queried_object The queried object. - */ - public function maybe_detect_event_plugins_location_term( $queried_object ) { - if ( $queried_object ) { - return $queried_object; - } - - $term_id = \get_query_var( 'term_id' ); - - if ( $term_id ) { - $queried_object = \get_term( $term_id ); - } - - if ( $queried_object instanceof \WP_Term && $this->is_place_taxonomy_of_active_event_plugin( $queried_object->taxonomy ) ) { - return $queried_object; - } - - return null; - } - - /** - * Check whether a taxonomy is an active event plugins location taxonomy. - * - * @param string $taxonomy The taxonomy. - * @return boolean - */ - private function is_place_taxonomy_of_active_event_plugin( $taxonomy ): bool { - foreach ( $this->active_event_plugins as $event_plugin ) { - if ( $event_plugin::get_place_taxonomy() === $taxonomy ) { - return true; - } - } - - return false; - } - - /** - * Get the event plugin integration class name used for the event sources feature. - * - * @return ?string The class name of the event plugin integration class. - */ - public static function get_event_plugin_integration_used_for_event_sources_feature(): ?string { - // Get plugin option. - $event_plugin_integration = get_option( - 'event_bridge_for_activitypub_integration_used_for_event_sources_feature', - self::get_default_integration_class_name_used_for_event_sources_feature() - ); - - // Exit if event sources are not active or no plugin is specified. - if ( empty( $event_plugin_integration ) ) { - return null; - } - - // Validate if setting is actual existing class. - if ( ! class_exists( $event_plugin_integration ) ) { - return null; - } - - return $event_plugin_integration; - } - - /** - * Get the transmogrifier class. - * - * Retrieves the appropriate transmogrifier class based on the active event plugins and settings. - * - * @return ?string The transmogrifier class name or null if not available. - */ - public static function get_transmogrifier(): ?string { - $event_plugin_integration = self::get_event_plugin_integration_used_for_event_sources_feature(); - - if ( ! $event_plugin_integration ) { - return null; - } - - // Validate if get_transformer method exists in event plugin integration. - if ( ! method_exists( $event_plugin_integration, 'get_transmogrifier' ) ) { - return null; - } - - $transmogrifier = $event_plugin_integration::get_transmogrifier(); - - return $transmogrifier; - } - - /** - * Get the full class name of the first event plugin integration that is active and supports the event source feature. - * - * @return string The full class name of the event plugin integration. - */ - public static function get_default_integration_class_name_used_for_event_sources_feature(): string { - $setup = self::get_instance(); - - $event_plugin_integrations = $setup->get_active_event_plugins(); - foreach ( $event_plugin_integrations as $event_plugin_integration ) { - if ( $event_plugin_integration instanceof Feature_Event_Sources ) { - return get_class( $event_plugin_integration ); - } - } - return ''; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/event-categories.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/event-categories.php deleted file mode 100644 index 71232e74..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/event-categories.php +++ /dev/null @@ -1,50 +0,0 @@ - __( 'Arts', 'event-bridge-for-activitypub' ), - 'BOOK_CLUBS' => __( 'Book clubs', 'event-bridge-for-activitypub' ), - 'BUSINESS' => __( 'Business', 'event-bridge-for-activitypub' ), - 'CAUSES' => __( 'Causes', 'event-bridge-for-activitypub' ), - 'COMEDY' => __( 'Comedy', 'event-bridge-for-activitypub' ), - 'CRAFTS' => __( 'Crafts', 'event-bridge-for-activitypub' ), - 'FOOD_DRINK' => __( 'Food & Drink', 'event-bridge-for-activitypub' ), - 'HEALTH' => __( 'Health', 'event-bridge-for-activitypub' ), - 'MUSIC' => __( 'Music', 'event-bridge-for-activitypub' ), - 'AUTO_BOAT_AIR' => __( 'Auto, boat and air', 'event-bridge-for-activitypub' ), - 'COMMUNITY' => __( 'Community', 'event-bridge-for-activitypub' ), - 'FAMILY_EDUCATION' => __( 'Family & Education', 'event-bridge-for-activitypub' ), - 'FASHION_BEAUTY' => __( 'Fashion & Beauty', 'event-bridge-for-activitypub' ), - 'FILM_MEDIA' => __( 'Film & Media', 'event-bridge-for-activitypub' ), - 'GAMES' => __( 'Games', 'event-bridge-for-activitypub' ), - 'LANGUAGE_CULTURE' => __( 'Language & Culture', 'event-bridge-for-activitypub' ), - 'LEARNING' => __( 'Learning', 'event-bridge-for-activitypub' ), - 'LGBTQ' => __( 'LGBTQ', 'event-bridge-for-activitypub' ), - 'MOVEMENTS_POLITICS' => __( 'Movements and politics', 'event-bridge-for-activitypub' ), - 'NETWORKING' => __( 'Networking', 'event-bridge-for-activitypub' ), - 'PARTY' => __( 'Party', 'event-bridge-for-activitypub' ), - 'PERFORMING_VISUAL_ARTS' => __( 'Performing & Visual Arts', 'event-bridge-for-activitypub' ), - 'PETS' => __( 'Pets', 'event-bridge-for-activitypub' ), - 'PHOTOGRAPHY' => __( 'Photography', 'event-bridge-for-activitypub' ), - 'OUTDOORS_ADVENTURE' => __( 'Outdoors & Adventure', 'event-bridge-for-activitypub' ), - 'SPIRITUALITY_RELIGION_BELIEFS' => __( 'Spirituality, Religion & Beliefs', 'event-bridge-for-activitypub' ), - 'SCIENCE_TECH' => __( 'Science & Tech', 'event-bridge-for-activitypub' ), - 'SPORTS' => __( 'Sports', 'event-bridge-for-activitypub' ), - 'THEATRE' => __( 'Theatre', 'event-bridge-for-activitypub' ), - 'MEETING' => __( 'Meeting', 'event-bridge-for-activitypub' ), // Default value in federation. - 'DEFAULT' => __( 'Default', 'event-bridge-for-activitypub' ), // Internal default for overrides. - ), -); diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-event-organiser.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-event-organiser.php deleted file mode 100644 index 7f1b0909..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-event-organiser.php +++ /dev/null @@ -1,109 +0,0 @@ -is_activitypub_request() && defined( 'EVENT_ORGANISER_DIR' ) ) { - $class_path = constant( EVENT_ORGANISER_DIR ) . 'includes/class-eo-theme-compatability.php'; - - if ( file_exists( $class_path ) ) { - require_once $class_path; - - // Remove the theme filter which is not needed in ActivityStreams. - $eo = \EO_Theme_Compatabilty::get_instance(); - if ( $eo instanceof \EO_Theme_Compatabilty ) { - $eo->remove_filter( 'template_include', PHP_INT_MAX - 1 ); - } - } - } - - return new Event_Organiser_Place_Transformer( $term ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-event-plugin-integration.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-event-plugin-integration.php deleted file mode 100644 index 9f73a67c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-event-plugin-integration.php +++ /dev/null @@ -1,132 +0,0 @@ -base && static::get_post_type() === $screen->post_type; - $is_event_plugins_settings_page = in_array( $screen->id, static::get_settings_pages(), true ); - - return $is_event_plugins_edit_page || $is_event_plugins_settings_page; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-eventin.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-eventin.php deleted file mode 100644 index 3624ec81..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-eventin.php +++ /dev/null @@ -1,74 +0,0 @@ -post_type ) { - return new EventPrime_Event_Transformer( $post ); - } - } - - if ( 'venue' === $object_type ) { - $term = get_term( self::get_object_id( $object_type ) ); - if ( $term && self::get_place_taxonomy() === $term->taxonomy ) { - return new EventPrime_Place_Transformer( $term ); - } - } - - return $transformer; - } - - /** - * Determine if the current post is actually just a shortcode Wrapper linking to an EventPrime event. - * - * @param \WP_Post $post The WordPress post object. - * @return string|bool - */ - private static function post_contains_eventprime_object( $post ) { - if ( 'page' !== $post->post_type ) { - return false; - } - - if ( '[em_event]' === $post->post_content || '[em_events]' === $post->post_content ) { - return 'event'; - } - - if ( '[em_sites]' === $post->post_content ) { - return 'venue'; - } - - return false; - } - - /** - * Extract the post id for events and term id for venues for an EventPrime event query. - * - * @param string $type 'event' or 'venue'. - * @return bool|int The post ID, or term ID if found, false otherwise. - */ - private static function get_object_id( $type = 'event' ) { - if ( ! in_array( $type, array( 'venue', 'event' ), true ) ) { - return false; - } - - $event = get_query_var( $type ); - if ( ! $event ) { - if ( ! empty( filter_input( INPUT_GET, $type, FILTER_SANITIZE_FULL_SPECIAL_CHARS ) ) ) { - $event = rtrim( filter_input( INPUT_GET, $type, FILTER_SANITIZE_FULL_SPECIAL_CHARS ), '/\\' ); - } - } - - if ( $event ) { - $ep_basic_functions = new Eventprime_Basic_Functions(); - return $ep_basic_functions->ep_get_id_by_slug( $event, "em_{$type}" ); - } - - return false; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-events-manager.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-events-manager.php deleted file mode 100644 index 98bb0a76..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-events-manager.php +++ /dev/null @@ -1,95 +0,0 @@ -get_results( - $wpdb->prepare( - "SELECT DISTINCT {$wpdb->prefix}posts.ID - FROM {$wpdb->prefix}posts - LEFT JOIN {$wpdb->prefix}gatherpress_events - ON {$wpdb->prefix}posts.ID = {$wpdb->prefix}gatherpress_events.post_id - LEFT JOIN {$wpdb->prefix}postmeta - ON {$wpdb->prefix}posts.ID = {$wpdb->prefix}postmeta.post_id - WHERE {$wpdb->prefix}posts.post_type = 'gatherpress_event' - AND {$wpdb->prefix}posts.post_status = 'publish' - AND {$wpdb->prefix}gatherpress_events.datetime_end_gmt <= %s - AND {$wpdb->prefix}postmeta.meta_key = '_event_bridge_for_activitypub_event_source' - ", - $ends_before_time_string - ), - ARRAY_N - ); - - $post_ids = array_column( $results, 0 ); - - return $post_ids; - } - - /** - * Init function: force displaying online event link for federated events. - */ - public static function init(): void { - \add_filter( - 'gatherpress_force_online_event_link', - function ( $force_online_event_link ) { - // Get the current post object. - $post = get_post(); - - // Check if we are in a valid context and the post type is 'gatherpress'. - if ( $post && 'gatherpress_event' === $post->post_type ) { - // Add your custom logic here to decide whether to force the link. - // For example, force it only if a specific meta field exists. - if ( get_post_meta( $post->ID, '_event_bridge_for_activitypub_event_source', true ) ) { - return true; // Force the online event link. - } - } - - return $force_online_event_link; // Default behavior. - }, - 10, - 1 - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-modern-events-calendar-lite.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-modern-events-calendar-lite.php deleted file mode 100644 index 01f1384e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-modern-events-calendar-lite.php +++ /dev/null @@ -1,75 +0,0 @@ -get_main_post_type(). - return 'mec-events'; - } - - /** - * Returns the IDs of the admin pages of the plugin. - * - * @return array The settings page urls. - */ - public static function get_settings_pages(): array { - return array( 'MEC-settings', 'MEC-support', 'MEC-ix', 'MEC-wizard', 'MEC-addons', 'mec-intro' ); - } - - /** - * Returns the taxonomy used for the plugin's event categories. - * - * @return string - */ - public static function get_event_category_taxonomy(): string { - return 'mec_category'; - } - - /** - * Returns the ActivityPub transformer for a Modern_Events_Calendar_Lite event post. - * - * @param \WP_Post $post The WordPress post object of the Event. - * @return Modern_Events_Calendar_Lite_Transformer - */ - public static function get_activitypub_event_transformer( $post ): Modern_Events_Calendar_Lite_Transformer { - return new Modern_Events_Calendar_Lite_Transformer( $post, self::get_event_category_taxonomy() ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-the-events-calendar.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-the-events-calendar.php deleted file mode 100644 index 6fba3bc7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-the-events-calendar.php +++ /dev/null @@ -1,155 +0,0 @@ - - */ - public static function get_cached_remote_events( $ends_before_time ): array { - add_filter( - 'tribe_repository_events_apply_modifier_schema_entry', - array( self::class, 'add_is_activitypub_remote_cached_to_query' ), - 10, - 1 - ); - - $events = tribe_events()->where( 'ends_before', $ends_before_time )->get_ids(); - - remove_filter( - 'tribe_repository_events_apply_modifier_schema_entry', - array( self::class, 'add_is_activitypub_remote_cached_to_query' ) - ); - - return $events; - } - - /** - * Only show remote cached ActivityPub events in Tribe query. - * - * @param array $schema_entry The current schema entry. - * @return array The modified schema entry. - */ - public static function add_is_activitypub_remote_cached_to_query( $schema_entry ) { - $schema_entry['meta_query']['is-remote-cached'] = array( - 'key' => '_event_bridge_for_activitypub_event_source', - 'compare' => 'EXISTS', - ); - return $schema_entry; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-vs-event-list.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-vs-event-list.php deleted file mode 100644 index 443df0e8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-vs-event-list.php +++ /dev/null @@ -1,117 +0,0 @@ - - */ - public static function get_cached_remote_events( $ends_before_time ): array { - $args = array( - 'post_type' => 'event', - 'posts_per_page' => -1, - 'fields' => 'ids', - 'meta_query' => array( - 'relation' => 'AND', - array( - 'key' => '_event_bridge_for_activitypub_event_source', - 'compare' => 'EXISTS', - ), - array( - 'key' => 'event-date', - 'value' => $ends_before_time, - 'type' => 'NUMERIC', - 'compare' => '<', - ), - ), - ); - - $query = new WP_Query( $args ); - - $post_ids = $query->posts; - - return $post_ids; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-wp-event-manager.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-wp-event-manager.php deleted file mode 100644 index 668e4822..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/includes/integrations/class-wp-event-manager.php +++ /dev/null @@ -1,73 +0,0 @@ - \__( 'Event Source', 'event-bridge-for-activitypub' ), - 'plural' => \__( 'Event Sources', 'event-bridge-for-activitypub' ), - 'ajax' => true, - ) - ); - } - - /** - * Get columns. - * - * @return array - */ - public function get_columns(): array { - return array( - 'cb' => '', - 'icon' => \__( 'Icon', 'event-bridge-for-activitypub' ), - 'name' => \__( 'Name', 'event-bridge-for-activitypub' ), - 'accepted' => \__( 'Follow', 'event-bridge-for-activitypub' ), - 'url' => \__( 'URL', 'event-bridge-for-activitypub' ), - 'published' => \__( 'Followed', 'event-bridge-for-activitypub' ), - 'modified' => \__( 'Last updated', 'event-bridge-for-activitypub' ), - ); - } - - /** - * Returns sortable columns. - * - * @return array - */ - public function get_sortable_columns(): array { - return array( - 'name' => array( 'name', true ), - 'modified' => array( 'modified', false ), - 'published' => array( 'published', false ), - ); - } - - /** - * Prepare items. - */ - public function prepare_items(): void { - $columns = $this->get_columns(); - $hidden = array(); - - $this->process_action(); - $this->_column_headers = array( $columns, $hidden, $this->get_sortable_columns() ); - - $page_num = $this->get_pagenum(); - $per_page = 20; - - $args = array(); - - // phpcs:disable WordPress.Security.NonceVerification.Recommended - if ( isset( $_GET['orderby'] ) ) { - $args['orderby'] = sanitize_text_field( wp_unslash( $_GET['orderby'] ) ); - } - - if ( isset( $_GET['order'] ) ) { - $args['order'] = sanitize_text_field( wp_unslash( $_GET['order'] ) ); - } - - if ( isset( $_GET['s'] ) && isset( $_REQUEST['_wpnonce'] ) ) { - $nonce = sanitize_text_field( wp_unslash( $_REQUEST['_wpnonce'] ) ); - if ( wp_verify_nonce( $nonce, 'bulk-' . $this->_args['plural'] ) ) { - $args['s'] = sanitize_text_field( wp_unslash( $_GET['s'] ) ); - } - } - // phpcs:enable WordPress.Security.NonceVerification.Recommended - - $event_sources = Event_Sources_Collection::get_event_sources_with_count( $per_page, $page_num, $args ); - $total_count = $event_sources['total']; - - $this->items = array(); - $this->set_pagination_args( - array( - 'total_items' => $total_count, - 'total_pages' => (int) ceil( $total_count / $per_page ), - 'per_page' => $per_page, - ) - ); - - foreach ( $event_sources['actors'] as $event_source_post_id => $event_source_activitypub_id ) { - $event_source = Event_Source::get_by_id( (int) $event_source_post_id ); - - if ( ! $event_source || ! in_array( $event_source->get_status(), array( 'publish', 'pending' ), true ) ) { - continue; - } - - $item = array( - 'icon' => esc_attr( $event_source->get_icon_url() ), - 'name' => esc_attr( $event_source->get_name() ), - 'url' => esc_attr( $event_source_activitypub_id ), - 'accepted' => esc_attr( get_post_meta( $event_source->get__id(), '_event_bridge_for_activitypub_accept_of_follow', true ) ), - 'identifier' => esc_attr( $event_source_post_id ), - 'published' => esc_attr( $event_source->get_published() ), - 'modified' => esc_attr( $event_source->get_updated() ), - ); - - $this->items[] = $item; - } - } - - /** - * Returns bulk actions. - * - * @return array - */ - public function get_bulk_actions(): array { - return array( - 'delete' => __( 'Delete', 'event-bridge-for-activitypub' ), - ); - } - - /** - * Column default. - * - * @param array $item Item. - * @param string $column_name Column name. - * @return string - */ - public function column_default( $item, $column_name ) { - if ( ! array_key_exists( $column_name, $item ) ) { - return __( 'None', 'event-bridge-for-activitypub' ); - } - return $item[ $column_name ]; - } - - /** - * Column avatar. - * - * @param array $item Item. - * @return string - */ - public function column_icon( $item ): string { - return sprintf( - '', - $item['icon'] - ); - } - - /** - * Column url. - * - * @param array $item Item. - * @return string - */ - public function column_url( $item ): string { - return sprintf( - '%s', - esc_url( $item['url'] ), - $item['url'] - ); - } - - /** - * Column cb. - * - * @param array $item Item. - * @return string - */ - public function column_cb( $item ): string { - return sprintf( '', esc_attr( $item['identifier'] ) ); - } - - /** - * Column action. - * - * @param array $item Item. - * @return string - */ - public function column_accepted( $item ): string { - if ( $item['accepted'] ) { - return esc_html__( 'Accepted', 'event-bridge-for-activitypub' ); - } else { - return esc_html__( 'Pending', 'event-bridge-for-activitypub' ); - } - } - - /** - * Process action. - */ - public function process_action(): void { - if ( ! isset( $_REQUEST['event_sources'] ) || ! isset( $_REQUEST['_wpnonce'] ) ) { - return; - } - $nonce = sanitize_text_field( wp_unslash( $_REQUEST['_wpnonce'] ) ); - if ( ! wp_verify_nonce( $nonce, 'bulk-' . $this->_args['plural'] ) ) { - return; - } - - if ( ! current_user_can( 'manage_options' ) ) { - return; - } - - $event_sources = $_REQUEST['event_sources']; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput - - if ( ! is_array( $event_sources ) ) { - return; - } - - if ( 'delete' === $this->current_action() ) { - foreach ( $event_sources as $event_source ) { - Event_Sources_Collection::remove_event_source( absint( $event_source ) ); - } - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/readme.txt b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/readme.txt deleted file mode 100644 index 1643b052..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/readme.txt +++ /dev/null @@ -1,157 +0,0 @@ -=== Event Bridge for ActivityPub === -Contributors: andremenrath, pfefferle -Tags: events, fediverse, activitypub, calendar -Requires at least: 6.5 -Tested up to: 6.8 -Stable tag: 1.1.0 -Requires PHP: 7.4 -License: AGPL-3.0-or-later -License URI: https://www.gnu.org/licenses/agpl-3.0.html -Integrating popular event plugins with the ActivityPub plugin. - -== Description == - -Make your events more discoverable, expand your reach effortlessly while being independent of other (commercial) platforms, and be a part of the growing decentralized web (the Fediverse). With the Event Bridge for ActivityPub Plugin for WordPress, your events can be automatically followed, aggregated and displayed across decentralized platforms like [Mastodon](https://joinmastodon.org) or [Gancio](https://gancio.org), without any extra work. Forget the hassle of managing multiple social media accounts just to keep your audience informed. - -This plugin is not an event managing plugin but an add-on to popular event plugins. It extends their functionality to fully support the [ActivityPub plugin](https://wordpress.org/plugins/activitypub/). With the ActivityPub plugin people can follow your website directly and engage with your events just as they would on social media: liking, boosting and even commenting if you enable it. You retain full ownership of your content. By integrating into your existing setup, it ensures no extra work is needed while enhancing your events' visibility across the web. - -= Supported Event Plugins = - -Full support (including importing events from the Fediverse): - -* [The Events Calendar](https://de.wordpress.org/plugins/the-events-calendar/) -* [VS Event List](https://de.wordpress.org/plugins/very-simple-event-list/) -* [GatherPress](https://gatherpress.org/) - -Basic support (outgoing events): - -* [Events Manager](https://de.wordpress.org/plugins/events-manager/) -* [WP Event Manager](https://de.wordpress.org/plugins/wp-event-manager/) -* [Eventin](https://de.wordpress.org/plugins/wp-event-solution/) -* [Modern Events Calendar Lite](https://webnus.net/modern-events-calendar/) -* [Event Organiser](https://wordpress.org/plugins/event-organiser/) -* [EventPrime – Events Calendar, Bookings and Tickets](https://wordpress.org/plugins/eventprime-event-calendar-management/) -* [EventON – Events Calendar](https://wordpress.org/plugins/eventon-lite/) - -= How It Works = - -With the Event Bridge for ActivityPub WordPress plugin, sharing your events is effortless and automatic! Once you create an event on your WordPress site, it is seamlessly shared across the decentralized web using the ActivityPub protocol. - -[vimeo https://vimeo.com/1043105544 ] - -Your events can be automatically delivered to platforms that fully support events, such as [Mobilizon](https://joinmobilizon.org/), [Gancio](https://gancio.org), [Friendica](https://friendi.ca), [Hubzilla](https://hubzilla.org), and [Pleroma](https://pleroma.social/). These platforms create public event calendars by pulling in events from various sources, including your website. Any updates you make to your events are synced across these platforms—so you only need to manage your events on your own site, with no extra work required. - -[vimeo https://vimeo.com/1043104445 ] - -Even platforms that don't yet fully support events, like [Mastodon](https://joinmastodon.org), will still receive a detailed, well-composed summary of your event. The Event Federation plugin ensures that users from those platforms are provided with all important information about an event. - -= Features for Your WordPress Events and the Fediverse = - -**ActivityPub-Enabled Event Sharing:** Your WordPress events are now compatible with the Fediverse, using the ActivityStreams format. This means your events can be easily discovered and followed by users on platforms like Mastodon and other ActivityPub-compatible services. - -**Automatic Event Summaries:** When your event is shared on the Fediverse, platforms like Mastodon that don't fully support events will display a brief HTML summary of key details — such as the event's title, start time, and location. This ensures that even if someone can't view the full event on their platform, they still get the important info at a glance, with a link to your WordPress event page. Advanced users can create custom summaries via a set of shortcodes. - -**Improved Event Discoverability:** Your custom event categories are mapped to a set of default categories used in the Fediverse, helping your events reach a wider audience. This improves the chances that users searching for similar events on other platforms will find yours. - -**Event Reminders for Your Followers:** Often, events are planned well in advance. To keep your followers informed right in time, you can set up reminders that are supposed to trigger the events showing up in their timelines right before the event starts. At the moment this reminder is implemented as a self-boost of your original event post. While this feature may behave differently across various platforms, we are working on a more robust solution that will let you schedule dedicated reminder notes that appear in all followers' timelines. - -**External Event Sources:** This functionality is only available for a subset of the supported event plugins. It enables your WordPress site to act as a hub for displaying events from other ActivityPub profiles, aggregating them into a cohesive calendar view. - -== Installation == - -This plugin depends on the [ActivityPub plugin](https://wordpress.org/plugins/activitypub/). Additionally, you need to use one of the supported event Plugins. - -= Supported Event Plugins = - -Full support (including importing events from the Fediverse): - -* [The Events Calendar](https://de.wordpress.org/plugins/the-events-calendar/) -* [VS Event List](https://de.wordpress.org/plugins/very-simple-event-list/) -* [GatherPress](https://gatherpress.org/) - -Basic support (outgoing events): - -* [Events Manager](https://de.wordpress.org/plugins/events-manager/) -* [WP Event Manager](https://de.wordpress.org/plugins/wp-event-manager/) -* [Eventin](https://de.wordpress.org/plugins/wp-event-solution/) -* [Modern Events Calendar Lite](https://webnus.net/modern-events-calendar/) -* [Event Organiser](https://wordpress.org/plugins/event-organiser/) -* [EventPrime – Events Calendar, Bookings and Tickets](https://wordpress.org/plugins/eventprime-event-calendar-management/) - -= Configuration = - -If you're new to the [ActivityPub plugin](https://wordpress.org/plugins/activitypub/), it's recommended to spend a few minutes reading through its documentation to familiarize yourself with its setup and functionality. - -== Frequently Asked Questions == - -= Do I need to install another event plugin to use the Event Federation Plugin? = - -Yes, this plugin works as an add-on and requires both the ActivityPub plugin and a supported event plugin such as The Events Calendar, VS Event List, or Events Manager to manage your events. It just fills the missing gap between event plugins and the [ActivityPub plugin](https://wordpress.org/plugins/activitypub/). - -= What platforms can follow my events? = - -Your events can be followed on platforms that support ActivityPub like [Mobilizon](https://joinmobilizon.org/), [Gancio](https://gancio.org), [Friendica](https://friendi.ca), [Hubzilla](https://hubzilla.org), and [Pleroma](https://pleroma.social/). Even other applications like [Mastodon](https://joinmastodon.org), which don't fully support events yet, will display all important information about the events. - -= Why does Mastodon not show any updates? == - -Mastodon does not yet handle updates of `Event` objects. See the related tracking issue [#31114](https://github.com/mastodon/mastodon/issues/31114). - -= How much extra work is required to maintain my events across the decentralized Web? = - -None! Once the plugin is set up, your events are automatically sent to all connected platforms or account that follow you (your Website). Any updates you make to your events are synced without additional effort. - -= Can I still use social media to promote my events? = - -Yes, you can still use traditional social media if you wish. However, this plugin helps reduce reliance on commercial platforms by connecting your events to the decentralized Fediverse. - -= Will this plugin work if I don't use the ActivityPub plugin? = - -No, the Event Federation Plugin depends on the [ActivityPub plugin](https://wordpress.org/plugins/activitypub/) to deliver your events across decentralized platforms, so it's essential to have it installed and configured. - -= My event plugin is not supported, what can I do? = - -If you know about coding have a look at the documentation of how to add your plugin or open an [issue](https://codeberg.org/Event-Federation/wordpress-event-bridge-for-activitypub/issues), if we can spare some free hours we might add it. - -= What if I experience problems? = - -We're always interested in your feedback. Feel free to reach out to us via [E-Mail](https://event-federation.eu/contact/) or create an [issue](https://codeberg.org/Event-Federation/wordpress-event-bridge-for-activitypub/issues). - -== Acknowledgement == - -The development of this WordPress plugin was funded through the [NGI0 Entrust](https://NLnet.nl/entrust) Fund, a fund established by [NLnet](https://nlnet.nl) with financial support from the European Commission's [Next Generation Internet](https://ngi.eu) programme, under the aegis of [Communications Networks, Content and Technology](https://commission.europa.eu/about-european-commission/departments-and-executive-agencies/communications-networks-content-and-technology_en) under grant agreement number 101069594. - -== Changelog == - -= [1.1.0] - 2025-04-12 = - -* Added: Basic support for Starter Kits -* Fixed: Uncatched error in following process (issue #145) -* Fixed: Compatibility with ActivityPub plugin version 5.7.0 - -= [1.0.0] - 2025-02-11 = - -* Added: Support for the EventPrime event plugin -* Added: Event self-announce feature at configurable time before event starts -* Added: Blueprint (Preview via WordPress Playground) -* Added: Event Sources feature: cache and list events from remote ActivityPub profiles on your site -* Added: Custom ActivityPub preview -* Added: Admin setting to enfore sending summary of events as plain text -* Changed: Now depends on ActivityPub plugin version greater than 5.1.0 -* Fixed: The Events Calendar date times when using the Gutenberg editor -* Fixed: Improved admin UI for event-category mapping - -= [0.3.5] - 2025-01-03 = - -* Fixed: Images of Acknowledgements in Admin UI - -= [0.3.4] - 2024-12-21 = - -* Initial release on https://wordpress.org/ - -== Contributing == - -This plugin is free software, and contributions of all kinds are welcome! Whether it's reporting issues, submitting improvements, or suggesting new features, your input helps make the plugin better for everyone. - -Please review our [Contribution Guidelines](https://codeberg.org/Event-Federation/wordpress-event-bridge-for-activitypub/src/branch/main/CONTRIBUTING.md) to get started. The source code is hosted on [Codeberg](https://codeberg.org/Event-Federation/wordpress-event-bridge-for-activitypub), where you can open issues and submit pull requests. - -Thank you for contributing! diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/event-preview.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/event-preview.php deleted file mode 100644 index 001c0f0d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/event-preview.php +++ /dev/null @@ -1,1510 +0,0 @@ -get_error_message() ), - 404 - ); -} - -if ( $transformer instanceof Event ) { - $object = $transformer->to_object(); - $user = $transformer->get_actor_object(); - $address = $transformer->get_formatted_address(); - $location = $transformer->get_location(); - if ( $location ) { - $location_name = $location->get_name(); - } else { - $location_name = ''; - } -} else { - \wp_die( - 'Wrong ActivityPub preview template.', - 404 - ); -} - -$first_image_attachment = null; - -?> - - - - - <?php echo \esc_html( $object->get_name() ); ?>HUU - - - -
    -

    - -
    - - -
    -
    -
    -
    -
    -
    - <?php echo \esc_attr( isset( $first_image_attachment['name'] ) ? $first_image_attachment['name'] : '' ); ?> -
    -
    -
    -
    -
    -
    -
    - -
    -
    - - -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    -

    get_name() ); ?>

    -
    - - - -
    -
    - -

    - -

    - - -

    - get_tag() as $hashtag ) : ?> - - - - - - - -

    - -
    -
    -
    -
    -
    - - - -
    -
    -
    - - -
    -
    -
    -
    -
    -
    - -
    -
    -

    - - -
    -
    - get_content(), ACTIVITYPUB_MASTODON_HTML_SANITIZER ); ?> -
    -
    -
    -
    -
    - -

    -
    -
    - -
    -
    - - - -

    - -

    -

    -
    -
    -
    -
    -
    -
    - - -
    -
    -
    - - - diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/settings/menu.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/settings/menu.php deleted file mode 100644 index b4e333fd..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/settings/menu.php +++ /dev/null @@ -1,45 +0,0 @@ - '', - 'settings' => '', - 'event-sources' => '', - ) -); -?> - -
    - - - -
    - - 'active', - ) -); - -if ( ! current_user_can( 'manage_options' ) ) { - return; -} - -$activitypub_plugin_is_active = Setup::get_instance()->is_activitypub_plugin_active(); - -\get_option( 'event_bridge_for_activitypub_event_sources_active', false ); - -if ( ! isset( $args ) || ! array_key_exists( 'supports_event_sources', $args ) ) { - return; -} - -$event_plugins_supporting_event_sources = $args['supports_event_sources']; - -$event_sources_active = \get_option( 'event_bridge_for_activitypub_event_sources_active', false ); -$cache_retention_period = \get_option( 'event_bridge_for_activitypub_event_source_cache_retention', DAY_IN_SECONDS ); - -?> - -
    -
    - -
    -

    -

    - - - - - - - - - - - - - - - - - - -
    - - - - > -
    - - - -

    -
    - - - -

    -
    - -

    -

    - '; - foreach ( $plugins_supporting_event_sources as $event_plugin ) { - echo '
  • ' . esc_attr( $event_plugin->get_plugin_name() ) . '
  • '; - } - echo ''; - } else { - $activitypub_plugin_data = \get_plugin_data( ACTIVITYPUB_PLUGIN_FILE ); - - $notice = sprintf( - /* translators: 1: The name of the ActivityPub plugin. */ - _x( - 'In order to use this feature your have to enable the Blog-Actor in the the %2$s settings.', - 'admin notice', - 'event-bridge-for-activitypub' - ), - \admin_url( 'options-general.php?page=activitypub&tab=event-bridge-for-activitypub&subpage=settings' ), - \esc_html( $activitypub_plugin_data['Name'] ) - ); - - $allowed_html = array( - 'a' => array( - 'href' => true, - 'title' => true, - ), - ); - echo '

    ' . \wp_kses( $notice, $allowed_html ) . '

    '; - } - ?> -
    - -
    -
    -
    -
    - - - -
    - -
    -

    - - - - -
    -
    - - - - prepare_items(); - $table->search_box( 'Search', 'search' ); - $table->display(); - ?> -
    -
    - -
    - diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/settings/subpages/settings.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/settings/subpages/settings.php deleted file mode 100644 index 60106358..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/settings/subpages/settings.php +++ /dev/null @@ -1,229 +0,0 @@ - 'active', - ) -); - -$activitypub_plugin_is_active = Setup::get_instance()->is_activitypub_plugin_active(); - -if ( ! isset( $args ) || ! array_key_exists( 'event_terms', $args ) ) { - return; -} - -if ( ! current_user_can( 'manage_options' ) ) { - return; -} - -$event_terms = $args['event_terms']; - -require_once EVENT_BRIDGE_FOR_ACTIVITYPUB_PLUGIN_DIR . '/includes/event-categories.php'; - -$selected_default_event_category = \get_option( 'event_bridge_for_activitypub_default_event_category', 'MEETING' ); -$current_category_mapping = \get_option( 'event_bridge_for_activitypub_event_category_mappings', array() ); -$reminder_time_gap = \get_option( 'event_bridge_for_activitypub_reminder_time_gap', 0 ); - -$reminder_time_gap_choices = array( - 0 => __( 'Disabled', 'event-bridge-for-activitypub' ), - HOUR_IN_SECONDS * 6 => __( '6 hours', 'event-bridge-for-activitypub' ), - DAY_IN_SECONDS => __( '1 day', 'event-bridge-for-activitypub' ), - DAY_IN_SECONDS * 3 => __( '3 days', 'event-bridge-for-activitypub' ), - WEEK_IN_SECONDS => __( '1 week', 'event-bridge-for-activitypub' ), -); - -if ( \get_option( 'event_bridge_for_activitypub_initially_activated' ) ) { - \update_option( 'event_bridge_for_activitypub_initially_activated', '' ); -} -?> - -
    -
    - -
    -

    -

    - - - - - - - - - - - -
    - - -

    - -

    -

    - -

    -
    - -
    - -
    -
    -
    [ap_start_time icon="true" label="true"]
    -
    -
    [ap_end_time icon="true" label="true"]
    -
    -
    [ap_location icon="true" label="true"]
    -
    -
    [ap_hashtags]
    -
    -
    [ap_excerpt]
    -
    -
    [ap_content]
    -
    -
    -
    -
    -
    -
    - - -

    - /> - - array(), - ); - echo \wp_kses( __( 'Many Fediverse applications, including Mastodon before version 4.3.0, do not render summaries as HTML. Enable this option to send the summary as plain text for better compatibility (e.g., <ul><li>Item 1</li></ul> will be sent as \'Item 1\' without formatting).', 'event-bridge-for-activitypub' ), $allowed_html ); - ?> - -

    -
    -
    - -
    -

    -

    - - - - - -
    - - - -
    - - -

    -

    - - - - - - - - - - - - -
    - - -
    - -
    -
    -

    -

    - - - - - - -
    - -

    - -
    -
    - - - -
    -
    diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/settings/subpages/welcome.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/settings/subpages/welcome.php deleted file mode 100644 index c5456cec..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/settings/subpages/welcome.php +++ /dev/null @@ -1,250 +0,0 @@ - 'active', - ) -); - -$active_event_plugins = Setup::get_instance()->get_active_event_plugins(); -$activitypub_plugin_is_active = Setup::get_instance()->is_activitypub_plugin_active(); -$event_bridge_for_activitypub_status_ok = true; -$example_event_post = Health_Check::get_most_recent_event_posts(); - -if ( empty( $example_event_post ) ) { - $example_event_post = 'https://yoursite.com/events/event-name'; - $example_event_post_is_dummy = true; -} else { - $example_event_post = \get_permalink( $example_event_post[0] ); - $example_event_post_is_dummy = false; -} - -global $wp_filesystem; -WP_Filesystem(); - -?> - -
    -
    -

    -

    - ⚠' . \wp_kses( $notice, General_Admin_Notices::ALLOWED_HTML ) . '

    '; - } elseif ( empty( $active_event_plugins ) ) { - $notice = General_Admin_Notices::get_admin_notice_no_supported_event_plugin_active(); - echo '

    ⚠' . \wp_kses( $notice, General_Admin_Notices::ALLOWED_HTML ) . '

    '; - } - ?> - -

    get_plugin_name() ); ?>:

    -
      -
    • - %2$s is enabled in the %1$s settings.', - 'admin notice', - 'event-bridge-for-activitypub' - ), - esc_html( get_plugin_data( ACTIVITYPUB_PLUGIN_FILE )['Name'] ), - esc_html( $active_event_plugin->get_plugin_name() ), - admin_url( 'options-general.php?page=activitypub&tab=event-bridge-for-activitypub&subpage=settings' ) - ); - } else { - $event_bridge_for_activitypub_status_ok = false; - echo '❌ '; - $status_message_post_type_enabled = sprintf( - /* translators: 1: the name of the event plugin a admin notice is shown. 2: The name of the ActivityPub plugin. */ - _x( - 'The post type for events of the plugin %2$s is not enabled in the %1$s settings.', - 'admin notice', - 'event-bridge-for-activitypub' - ), - esc_html( get_plugin_data( ACTIVITYPUB_PLUGIN_FILE )['Name'] ), - esc_html( $active_event_plugin->get_plugin_name() ), - admin_url( 'options-general.php?page=activitypub&tab=event-bridge-for-activitypub&subpage=settings' ) - ); - } - $allowed_html = array( - 'a' => array( - 'href' => true, - 'title' => true, - ), - 'b' => array(), - 'i' => array(), - ); - echo \wp_kses( $status_message_post_type_enabled, $allowed_html ); - ?> -
    • -
    • - -
    • -
    - -
    - - - - - - - - -
    -

    -

    ' . \esc_html__( 'Please fix the status issues above first.', 'event-bridge-for-activitypub' ) . '

    '; - } - ?> -

    -
    -

    - -

    - -

    - -

    - -

    - -

    - -

    - -

    - -
    -
    - -
    -

    -

    Logo NLnet: abstract logo of four people seen from above Logo NGI Zero: letterlogo shaped like a tag

    -

    The development of this plugin was funded through the NGI0 Entrust Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101069594.

    -
    - - - - - - diff --git a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/settings/tab.php b/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/settings/tab.php deleted file mode 100644 index 753c1b8a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/event-bridge-for-activitypub/templates/settings/tab.php +++ /dev/null @@ -1,13 +0,0 @@ - - * - * Gitium is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * Gitium is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Gitium. If not, see . - * - * @package Gitium - */ - -function gitium_error_log( $message ) { - if ( ! defined( 'WP_DEBUG' ) || ! WP_DEBUG ) { return; } - error_log( "gitium_error_log: $message" ); -} - -function wp_content_is_versioned() { - return file_exists( WP_CONTENT_DIR . '/.git' ); -} - -if ( ! function_exists( 'gitium_enable_maintenance_mode' ) ) : - function gitium_enable_maintenance_mode() { - $file = ABSPATH . '/.maintenance'; - - if ( false === file_put_contents( $file, 'set_key( $git_private_key ); - - $git->add( $dir ); - gitium_update_versions(); - $current_user = wp_get_current_user(); - return $git->commit( $message, $current_user->display_name, $current_user->user_email ); -} - -function _gitium_format_message( $name, $version = false, $prefix = '' ) { - $commit_message = "`$name`"; - if ( $version ) { - $commit_message .= " version $version"; - } - if ( $prefix ) { - $commit_message = "$prefix $commit_message"; - } - return $commit_message; -} - -/** - * This function return the basic info about a path. - * - * base_path - means the path after wp-content dir (themes/plugins) - * type - can be file/theme/plugin - * name - the file name of the path, if it is a file, or the theme/plugin name - * version - the theme/plugin version, othewise null - */ -/* Some examples: - - with 'wp-content/themes/twentyten/style.css' will return: - array( - 'base_path' => 'wp-content/themes/twentyten' - 'type' => 'theme' - 'name' => 'TwentyTen' - 'version' => '1.12' - ) - - with 'wp-content/themes/twentyten/img/foo.png' will return: - array( - 'base_path' => 'wp-content/themes/twentyten' - 'type' => 'theme' - 'name' => 'TwentyTen' - 'version' => '1.12' - ) - - with 'wp-content/plugins/foo.php' will return: - array( - 'base_path' => 'wp-content/plugins/foo.php' - 'type' => 'plugin' - 'name' => 'Foo' - 'varsion' => '2.0' - ) - - with 'wp-content/plugins/autover/autover.php' will return: - array( - 'base_path' => 'wp-content/plugins/autover' - 'type' => 'plugin' - 'name' => 'autover' - 'version' => '3.12' - ) - - with 'wp-content/plugins/autover/' will return: - array( - 'base_path' => 'wp-content/plugins/autover' - 'type' => 'plugin' - 'name' => 'autover' - 'version' => '3.12' - ) -*/ -function _gitium_module_by_path( $path ) { - $versions = gitium_get_versions(); - - // default values - $module = array( - 'base_path' => $path, - 'type' => 'file', - 'name' => basename( $path ), - 'version' => null, - ); - - // find the base_path - $split_path = explode( '/', $path ); - if ( 2 < count( $split_path ) ) { - $module['base_path'] = "{$split_path[0]}/{$split_path[1]}/{$split_path[2]}"; - } - - // find other data for theme - if ( array_key_exists( 'themes', $versions ) && 0 === strpos( $path, 'wp-content/themes/' ) ) { - $module['type'] = 'theme'; - foreach ( $versions['themes'] as $theme => $data ) { - if ( 0 === strpos( $path, "wp-content/themes/$theme" ) ) { - $module['name'] = $data['name']; - $module['version'] = $data['version']; - break; - } - } - } - - // find other data for plugin - if ( array_key_exists( 'plugins', $versions ) && 0 === strpos( $path, 'wp-content/plugins/' ) ) { - $module['type'] = 'plugin'; - foreach ( $versions['plugins'] as $plugin => $data ) { - if ( '.' === dirname( $plugin ) ) { // single file plugin - if ( "wp-content/plugins/$plugin" === $path ) { - $module['base_path'] = $path; - $module['name'] = $data['name']; - $module['version'] = $data['version']; - break; - } - } else if ( 'wp-content/plugins/' . dirname( $plugin ) === $module['base_path'] ) { - $module['name'] = $data['name']; - $module['version'] = $data['version']; - break; - } - } - } - - return $module; -} - -function gitium_group_commit_modified_plugins_and_themes( $msg_append = '' ) { - global $git; - - $uncommited_changes = $git->get_local_changes(); - $commit_groups = array(); - $commits = array(); - - if ( ! empty( $msg_append ) ) { - $msg_append = "($msg_append)"; - } - foreach ( $uncommited_changes as $path => $action ) { - $change = _gitium_module_by_path( $path ); - $change['action'] = $action; - $commit_groups[ $change['base_path'] ] = $change; - } - - foreach ( $commit_groups as $base_path => $change ) { - $commit_message = _gitium_format_message( $change['name'], $change['version'], "{$change['action']} {$change['type']}" ); - $commit = _gitium_commit_changes( "$commit_message $msg_append", $base_path, false ); - if ( $commit ) { - $commits[] = $commit; - } - } - - return $commits; -} - -function gitium_commit_and_push_gitignore_file( $path = '' ) { - global $git; - - $current_user = wp_get_current_user(); - if ( ! empty( $path ) ) { $git->rm_cached( $path ); } - $git->add( '.gitignore' ); - $commit = $git->commit( 'Update the `.gitignore` file', $current_user->display_name, $current_user->user_email ); - gitium_merge_and_push( $commit ); -} - -if ( ! function_exists( 'gitium_acquire_merge_lock' ) ) : - function gitium_acquire_merge_lock() { - $gitium_lock_path = apply_filters( 'gitium_lock_path', sys_get_temp_dir().'/.gitium-lock' ); - $gitium_lock_handle = fopen( $gitium_lock_path, 'w+' ); - - $lock_timeout = intval( ini_get( 'max_execution_time' ) ) > 10 ? intval( ini_get( 'max_execution_time' ) ) - 5 : 10; - $lock_timeout_ms = 10; - $lock_retries = 0; - while ( ! flock( $gitium_lock_handle, LOCK_EX | LOCK_NB ) ) { - usleep( $lock_timeout_ms * 1000 ); - $lock_retries++; - if ( $lock_retries * $lock_timeout_ms > $lock_timeout * 1000 ) { - return false; // timeout - } - } - gitium_error_log( __FUNCTION__ ); - return array( $gitium_lock_path, $gitium_lock_handle ); - } -endif; - -if ( ! function_exists( 'gitium_release_merge_lock' ) ) : - function gitium_release_merge_lock( $lock ) { - list( $gitium_lock_path, $gitium_lock_handle ) = $lock; - gitium_error_log( __FUNCTION__ ); - flock( $gitium_lock_handle, LOCK_UN ); - fclose( $gitium_lock_handle ); - } -endif; - -// Merges the commits with remote and pushes them back -function gitium_merge_and_push( $commits ) { - global $git; - - $lock = gitium_acquire_merge_lock() - or trigger_error( 'Timeout when gitium lock was acquired', E_USER_WARNING ); - - if ( ! $git->fetch_ref() ) { - return false; - } - - $merge_status = $git->merge_with_accept_mine( $commits ); - - gitium_release_merge_lock( $lock ); - - return $git->push() && $merge_status; -} - -function gitium_check_after_event( $plugin, $event = 'activation' ) { - global $git; - - if ( 'gitium/gitium.php' == $plugin ) { return; } // do not hook on activation of this plugin - - if ( $git->is_dirty() ) { - $versions = gitium_update_versions(); - if ( isset( $versions['plugins'][ $plugin ] ) ) { - $name = $versions['plugins'][ $plugin ]['name']; - $version = $versions['plugins'][ $plugin ]['version']; - } else { - $name = $plugin; - } - gitium_auto_push( _gitium_format_message( $name, $version, "after $event of" ) ); - } -} - -function gitium_update_remote_tracking_branch() { - global $git; - $remote_branch = $git->get_remote_tracking_branch(); - set_transient( 'gitium_remote_tracking_branch', $remote_branch ); - - return $remote_branch; -} - -function _gitium_get_remote_tracking_branch( $update_transient = false ) { - if ( ! $update_transient && ( false !== ( $remote_branch = get_transient( 'gitium_remote_tracking_branch' ) ) ) ) { - return $remote_branch; - } else { - return gitium_update_remote_tracking_branch(); - } -} - -function gitium_update_is_status_working() { - global $git; - $is_status_working = $git->is_status_working(); - set_transient( 'gitium_is_status_working', $is_status_working ); - return $is_status_working; -} - -function _gitium_is_status_working( $update_transient = false ) { - if ( ! $update_transient && ( false !== ( $is_status_working = get_transient( 'gitium_is_status_working' ) ) ) ) { - return $is_status_working; - } else { - return gitium_update_is_status_working(); - } -} - -function _gitium_status( $update_transient = false ) { - global $git; - - if ( ! $update_transient && ( false !== ( $changes = get_transient( 'gitium_uncommited_changes' ) ) ) ) { - return $changes; - } - - $git_version = get_transient( 'gitium_git_version' ); - if ( false === $git_version ) { - set_transient( 'gitium_git_version', $git->get_version() ); - } - - if ( $git->is_status_working() && $git->get_remote_tracking_branch() ) { - if ( ! $git->fetch_ref() ) { - set_transient( 'gitium_remote_disconnected', $git->get_last_error() ); - } else { - delete_transient( 'gitium_remote_disconnected' ); - } - $changes = $git->status(); - } else { - delete_transient( 'gitium_remote_disconnected' ); - $changes = array(); - } - - set_transient( 'gitium_uncommited_changes', $changes, 12 * 60 * 60 ); // cache changes for half-a-day - return $changes; -} - -function _gitium_ssh_encode_buffer( $buffer ) { - $len = strlen( $buffer ); - if ( ord( $buffer[0] ) & 0x80 ) { - $len++; - $buffer = "\x00" . $buffer; - } - return pack( 'Na*', $len, $buffer ); -} - -function _gitium_generate_keypair() { - $rsa_key = openssl_pkey_new( - array( - 'private_key_bits' => 2048, - 'private_key_type' => OPENSSL_KEYTYPE_RSA, - ) - ); - - try { - $private_key = openssl_pkey_get_private( $rsa_key ); - $try = openssl_pkey_export( $private_key, $pem ); //Private Key - if (!$try) - return false; - } catch (Exception $e) { - return false; - } - - $key_info = openssl_pkey_get_details( $rsa_key ); - $buffer = pack( 'N', 7 ) . 'ssh-rsa' . - _gitium_ssh_encode_buffer( $key_info['rsa']['e'] ) . - _gitium_ssh_encode_buffer( $key_info['rsa']['n'] ); - $public_key = 'ssh-rsa ' . base64_encode( $buffer ) . ' gitium@' . parse_url( get_home_url(), PHP_URL_HOST ); - - return array( $public_key, $pem ); -} - -function gitium_get_keypair( $generate_new_keypair = false ) { - if ( $generate_new_keypair ) { - $keypair = _gitium_generate_keypair(); - delete_option( 'gitium_keypair' ); - add_option( 'gitium_keypair', $keypair, '', false ); - } - if ( false === ( $keypair = get_option( 'gitium_keypair', false ) ) ) { - $keypair = _gitium_generate_keypair(); - add_option( 'gitium_keypair', $keypair, '', false ); - } - return $keypair; -} - -function _gitium_generate_webhook_key() { - return md5( str_shuffle( 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.()[]{}-_=+!@#%^&*~<>:;' ) ); -} - -function gitium_get_webhook_key( $generate_new_webhook_key = false ) { - if ( $generate_new_webhook_key ) { - $key = _gitium_generate_webhook_key(); - delete_option( 'gitium_webhook_key' ); - add_option( 'gitium_webhook_key', $key, '', false ); - return $key; - } - if ( false === ( $key = get_option( 'gitium_webhook_key', false ) ) ) { - $key = _gitium_generate_webhook_key(); - add_option( 'gitium_webhook_key', $key, '', false ); - } - return $key; -} - -function gitium_get_webhook() { - if ( defined( 'GIT_WEBHOOK_URL' ) && GIT_WEBHOOK_URL ) { return GIT_WEBHOOK_URL; } - $key = gitium_get_webhook_key(); - $url = add_query_arg( 'key', $key, plugins_url( 'gitium-webhook.php', __FILE__ ) ); - return apply_filters( 'gitium_webhook_url', $url, $key ); -} - -function gitium_admin_init() { - global $git; - - $git_version = get_transient( 'gitium_git_version' ); - if ( false === $git_version ) { - set_transient( 'gitium_git_version', $git->get_version() ); - } -} -add_action( 'admin_init', 'gitium_admin_init' ); - -add_action('admin_enqueue_scripts', 'enqueue_script_for_gitium_page'); -function enqueue_script_for_gitium_page($hook) { - // Check if the current page is your plugin's settings page - if ((isset($_GET['page']) && $_GET['page'] === 'gitium/gitium.php') || (isset($_GET['page']) && $_GET['page'] === 'gitium/gitium-settings.php')) { - // Enqueue your JavaScript file - wp_enqueue_script( - 'my-plugin-script', // Handle for the script - plugin_dir_url(__FILE__) . 'js/copy-to-clipboard.js', // URL to the script - array('jquery'), // Dependencies - '1.1', // Version number - true // Load in footer - ); - } -} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gitium/gitium-webhook.php b/wp-content/upgrade-temp-backup/plugins/gitium/gitium-webhook.php deleted file mode 100644 index 47b82b06..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gitium/gitium-webhook.php +++ /dev/null @@ -1,81 +0,0 @@ - - * - * Gitium is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * Gitium is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Gitium. If not, see . - * - * @package Gitium - */ - -header( 'Content-Type: text/html' ); -define( 'SHORTINIT', true ); - -$current_dir = __DIR__; - -// Define an array of possible WordPress root locations -$try_wp_roots = [ - getenv('DOCUMENT_ROOT'), - filter_input(INPUT_SERVER, 'DOCUMENT_ROOT', FILTER_SANITIZE_FULL_SPECIAL_CHARS), - realpath($current_dir . '/../../../../../'), - realpath($current_dir . '/../../../../'), - realpath($current_dir . '/../../../'), // Typical WordPress structure - realpath($current_dir . '/../../'), // Alternative structure - realpath($current_dir . '/../'), // Closer parent directory - $current_dir, // Fallback to current directory -]; - -$wordpress_loader = null; - -foreach ($try_wp_roots as $root) { - if ($root && file_exists($root . '/wp-load.php')) { - $wordpress_loader = $root . '/wp-load.php'; - break; - } -} - -if ($wordpress_loader) { - require_once $wordpress_loader; -} else { - die('Error: Unable to locate wp-load.php. Please verify your WordPress installation.'); -} - -require_once __DIR__ . '/functions.php'; -require_once __DIR__ . '/inc/class-git-wrapper.php'; - -$webhook_key = get_option( 'gitium_webhook_key', '' ); -$get_key = filter_input(INPUT_GET, 'key', FILTER_SANITIZE_FULL_SPECIAL_CHARS); -if ( ! empty ( $webhook_key ) && isset( $get_key ) && $webhook_key == $get_key ) : - ( '1.7' <= substr( $git->get_version(), 0, 3 ) ) or wp_die( 'Gitium plugin require minimum `git version 1.7`!' ); - - list( $git_public_key, $git_private_key ) = gitium_get_keypair(); - if ( ! $git_public_key || ! $git_private_key ) - wp_die('Not ready.', 'Not ready.', array( 'response' => 403 )); - else - $git->set_key( $git_private_key ); - - $commits = array(); - $commitmsg = sprintf( 'Merged changes from %s on %s', $_SERVER['SERVER_NAME'], date( 'm.d.Y' ) ); - - if ( $git->is_dirty() && $git->add() > 0 ) { - $commits[] = $git->commit( $commitmsg ) or trigger_error( 'Could not commit local changes!', E_USER_ERROR ); - } - gitium_merge_and_push( $commits ) or trigger_error( 'Failed merge & push: ' . serialize( $git->get_last_error() ), E_USER_ERROR ); - - wp_die( $commitmsg , 'Pull done!', array( 'response' => 200 ) ); -else : - wp_die( 'Cheating uh?', 'Cheating uh?', array( 'response' => 403 ) ); -endif; diff --git a/wp-content/upgrade-temp-backup/plugins/gitium/gitium.php b/wp-content/upgrade-temp-backup/plugins/gitium/gitium.php deleted file mode 100644 index e253488f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gitium/gitium.php +++ /dev/null @@ -1,380 +0,0 @@ - - * - * Gitium is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * Gitium is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Gitium. If not, see . - * - * @package Gitium - */ - -define( 'GITIUM_LAST_COMMITS', 20 ); -define( 'GITIUM_MIN_GIT_VER', '1.7' ); -define( 'GITIUM_MIN_PHP_VER', '5.6' ); - -if ( is_multisite() ) { - define( 'GITIUM_ADMIN_MENU_ACTION', 'network_admin_menu' ); - define( 'GITIUM_ADMIN_NOTICES_ACTION', 'network_admin_notices' ); - define( 'GITIUM_MANAGE_OPTIONS_CAPABILITY', 'manage_network_options' ); -} else { - define( 'GITIUM_ADMIN_MENU_ACTION', 'admin_menu' ); - define( 'GITIUM_ADMIN_NOTICES_ACTION', 'admin_notices' ); - define( 'GITIUM_MANAGE_OPTIONS_CAPABILITY', 'manage_options' ); -} - -require_once __DIR__ . '/functions.php'; -require_once __DIR__ . '/inc/class-git-wrapper.php'; -require_once __DIR__ . '/inc/class-gitium-requirements.php'; -require_once __DIR__ . '/inc/class-gitium-admin.php'; -require_once __DIR__ . '/inc/class-gitium-help.php'; -require_once __DIR__ . '/inc/class-gitium-menu.php'; -require_once __DIR__ . '/inc/class-gitium-menu-bubble.php'; -require_once __DIR__ . '/inc/class-gitium-submenu-configure.php'; -require_once __DIR__ . '/inc/class-gitium-submenu-status.php'; -require_once __DIR__ . '/inc/class-gitium-submenu-commits.php'; -require_once __DIR__ . '/inc/class-gitium-submenu-settings.php'; - -function gitium_load_textdomain() { - load_plugin_textdomain( 'gitium', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); -} -add_action( 'plugins_loaded', 'gitium_load_textdomain' ); - -function _gitium_make_ssh_git_file_exe() { - $ssh_wrapper = dirname( __FILE__ ) . '/inc/ssh-git'; - $process = proc_open( - "chmod -f +x $ssh_wrapper", - array( - 0 => array( 'pipe', 'r' ), // stdin - 1 => array( 'pipe', 'w' ), // stdout - ), - $pipes - ); - if ( is_resource( $process ) ) { - fclose( $pipes[0] ); - proc_close( $process ); - } -} -register_activation_hook( __FILE__, '_gitium_make_ssh_git_file_exe' ); - -function gitium_deactivation() { - delete_transient( 'gitium_git_version' ); -} -register_deactivation_hook( __FILE__, 'gitium_deactivation' ); - -function gitium_uninstall_hook() { - delete_transient( 'gitium_remote_tracking_branch' ); - delete_transient( 'gitium_remote_disconnected' ); - delete_transient( 'gitium_uncommited_changes' ); - delete_transient( 'gitium_git_version' ); - delete_transient( 'gitium_versions' ); - delete_transient( 'gitium_menu_bubble' ); - delete_transient( 'gitium_is_status_working' ); - - delete_option( 'gitium_keypair' ); - delete_option( 'gitium_webhook_key' ); -} -register_uninstall_hook( __FILE__, 'gitium_uninstall_hook' ); - -/* Array -( - [themes] => Array - ( - [twentytwelve] => `Twenty Twelve` version 1.3 - ) - [plugins] => Array - ( - [cron-view/cron-gui.php] => `Cron GUI` version 1.03 - [hello-dolly/hello.php] => `Hello Dolly` version 1.6 - ) - -) */ -function gitium_update_versions() { - $new_versions = []; - - // get all themes from WP - $all_themes = wp_get_themes( array( 'allowed' => true ) ); - foreach ( $all_themes as $theme_name => $theme ) : - $theme_versions[ $theme_name ] = array( - 'name' => $theme->Name, - 'version' => null, - 'msg' => '', - ); - $theme_versions[ $theme_name ]['msg'] = '`' . $theme->Name . '`'; - $version = $theme->Version; - if ( ! empty( $version ) ) { - $theme_versions[ $theme_name ]['msg'] .= " version $version"; - $theme_versions[ $theme_name ]['version'] .= $version; - } - endforeach; - - if ( ! empty( $theme_versions ) ) { - $new_versions['themes'] = $theme_versions; - } - // get all plugins from WP - if ( ! function_exists( 'get_plugins' ) ) { - require_once ABSPATH . 'wp-admin/includes/plugin.php'; - } - $all_plugins = get_plugins(); - foreach ( $all_plugins as $name => $data ) : - $plugin_versions[ $name ] = array( - 'name' => $data['Name'], - 'version' => null, - 'msg' => '', - ); - $plugin_versions[ $name ]['msg'] = "`{$data['Name']}`"; - if ( ! empty( $data['Version'] ) ) { - $plugin_versions[ $name ]['msg'] .= ' version ' . $data['Version']; - $plugin_versions[ $name ]['version'] .= $data['Version']; - } - endforeach; - - if ( ! empty( $plugin_versions ) ) { - $new_versions['plugins'] = $plugin_versions; - } - - set_transient( 'gitium_versions', $new_versions ); - - return $new_versions; -} -add_action( 'load-plugins.php', 'gitium_update_versions', 999 ); - -function gitium_upgrader_post_install( $res, $hook_extra, $result ) { - _gitium_make_ssh_git_file_exe(); - - $action = null; - $type = null; - - // install logic - if ( isset( $hook_extra['type'] ) && ( 'plugin' === $hook_extra['type'] ) ) { - $action = 'installed'; - $type = 'plugin'; - } else if ( isset( $hook_extra['type'] ) && ( 'theme' === $hook_extra['type'] ) ) { - $action = 'installed'; - $type = 'theme'; - } - - // update/upgrade logic - if ( isset( $hook_extra['plugin'] ) ) { - $action = 'updated'; - $type = 'plugin'; - } else if ( isset( $hook_extra['theme'] ) ) { - $action = 'updated'; - $type = 'theme'; - } - - // get action if missed above - if ( isset( $hook_extra['action'] ) ) { - $action = $hook_extra['action']; - if ( 'install' === $action ) { - $action = 'installed'; - } - if ( 'update' === $action ) { - $action = 'updated'; - } - } - - if ( WP_DEBUG ) { - error_log( __FUNCTION__ . ':hook_extra:' . serialize( $hook_extra ) ); - error_log( __FUNCTION__ . ':action:type:' . $action . ':' . $type ); - } - - $git_dir = $result['destination']; - $version = ''; - - if ( ABSPATH == substr( $git_dir, 0, strlen( ABSPATH ) ) ) { - $git_dir = substr( $git_dir, strlen( ABSPATH ) ); - } - switch ( $type ) { - case 'theme': - wp_clean_themes_cache(); - $theme_data = wp_get_theme( $result['destination_name'] ); - $name = $theme_data->get( 'Name' ); - $version = $theme_data->get( 'Version' ); - break; - case 'plugin': - foreach ( $result['source_files'] as $file ) : - if ( '.php' != substr( $file, -4 ) ) { continue; } - // every .php file is a possible plugin so we check if it's a plugin - $filepath = trailingslashit( $result['destination'] ) . $file; - $plugin_data = get_plugin_data( $filepath ); - if ( $plugin_data['Name'] ) : - $name = $plugin_data['Name']; - $version = $plugin_data['Version']; - // We get info from the first plugin in the package - break; - endif; - endforeach; - break; - } - if ( empty( $name ) ) { - $name = $result['destination_name']; - } - $commit_message = _gitium_format_message( $name,$version,"$action $type" ); - $commit = _gitium_commit_changes( $commit_message, $git_dir, false ); - gitium_merge_and_push( $commit ); - - return $res; -} -add_filter( 'upgrader_post_install', 'gitium_upgrader_post_install', 10, 3 ); - -// Checks for local changes, tries to group them by plugin/theme and pushes the changes -function gitium_auto_push( $msg_prepend = '' ) { - global $git; - list( , $git_private_key ) = gitium_get_keypair(); - if ( ! $git_private_key ) - return; - $git->set_key( $git_private_key ); - - $commits = gitium_group_commit_modified_plugins_and_themes( $msg_prepend ); - gitium_merge_and_push( $commits ); - gitium_update_versions(); -} -add_action( 'upgrader_process_complete', 'gitium_auto_push', 11, 0 ); - -function gitium_check_after_activate_modifications( $plugin ) { - gitium_check_after_event( $plugin ); -} -add_action( 'activated_plugin', 'gitium_check_after_activate_modifications', 999 ); - -function gitium_check_after_deactivate_modifications( $plugin ) { - gitium_check_after_event( $plugin, 'deactivation' ); -} -add_action( 'deactivated_plugin', 'gitium_check_after_deactivate_modifications', 999 ); - -function gitium_check_for_plugin_deletions() { // Handle plugin deletion - // $_GET['deleted'] used to resemble if a plugin has been deleted (true) - // ...meanwhile commit b28dd45f3dad19f0e06c546fdc89ed5b24bacd72 in github.com/WordPress/WordPress... - // Now it resembles the number of deleted plugins (a number). Thanks WP - if ( isset( $_GET['deleted'] ) && ( 1 <= (int) $_GET['deleted'] || 'true' == $_GET['deleted'] ) ) { - gitium_auto_push(); - } -} -add_action( 'load-plugins.php', 'gitium_check_for_plugin_deletions' ); - -add_action( 'wp_ajax_wp-plugin-delete-success', 'gitium_auto_push' ); -add_action( 'wp_ajax_wp-theme-delete-success', 'gitium_auto_push' ); - -function gitium_wp_plugin_delete_success() { -?> - - - -=' ) ) - add_action( 'wp_ajax_edit-theme-plugin-file', 'add_filter_for_ajax_save', 1, 0 ); -else - add_action( 'admin_enqueue_scripts', 'gitium_hook_plugin_and_theme_editor_page' ); - -function gitium_options_page_check() { - global $git; - if ( ! $git->can_exec_git() ) { wp_die( 'Cannot exec git' ); } - return true; -} - -function gitium_remote_disconnected_notice() { - if ( current_user_can( GITIUM_MANAGE_OPTIONS_CAPABILITY ) && $message = get_transient( 'gitium_remote_disconnected' ) ) : ?> -
    -

    - Could not connect to remote repository. -

    -

    -
    - a~`(2*n_w(uXdB0!p*ZWH&NpF(F`9B`^`j^6QT*4=G zbjJjaA+rTL_<{>n_1YpxvK0fJBtuEkUb&9%=p;GVWt%sWOn1_Y;0aD+5019B?_gJZ zXg)d^tE$PVnx+Kdb5%V`vK~FCs``d|7D?{{zVu)NcD7IV@T#hQC)tAccwbdnNHEQp zGZ>zAb^=#$4UcfH`9AHzT>QdjoX1V{V-QcVJ;_n5zz%GjZR%W1VkP=8QdK{y>J<*) z2nMhWYq72y!GU&p65~mBBpJgSJj7dk#0c(oBRGz+CcLex?zh2QZIvx;aho$o^G*K+ zMsYUDD2`({mf#t_wgl|!MzE)<-r*E3w}I@%101TVm$;49*pj4X$7cCls%@W7&T}?A zGg5yyMUwqVCX#GQ@;J%M#coIY^?gV(Qb|_fIo33zU$@Zqcd7Rihg%*GR4a85Lo=eX eSo&}gxBdWxa1O;4qf9XX0000 - - - - - - - \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-git-wrapper.php b/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-git-wrapper.php deleted file mode 100644 index de78d79e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-git-wrapper.php +++ /dev/null @@ -1,680 +0,0 @@ - - * - * Gitium is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * Gitium is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Gitium. If not, see . - * - * @package Gitium - */ - -if (!defined('GITIGNORE')) - define('GITIGNORE', <<repo_dir = $repo_dir; - } - - function _rrmdir( $dir ) { - if ( empty( $dir ) || ! is_dir( $dir ) ) { - return false; - } - - $files = array_diff( scandir( $dir ), array( '.', '..' ) ); - foreach ( $files as $file ) { - $filepath = realpath("$dir/$file"); - ( is_dir( $filepath ) ) ? $this->_rrmdir( $filepath ) : unlink( $filepath ); - } - return rmdir( $dir ); - } - - function _log(...$args) { - if ( ! defined( 'WP_DEBUG' ) || ! WP_DEBUG ) { return; } - - $output = ''; - if (isset($args) && $args) foreach ( $args as $arg ) { - $output .= var_export($arg, true).'/n/n'; - } - - if ($output) error_log($output); - } - - function _git_temp_key_file() { - $key_file = tempnam( sys_get_temp_dir(), 'ssh-git' ); - return $key_file; - } - - function set_key( $private_key ) { - $this->private_key = $private_key; - } - - private function get_env() { - $env = array( - 'HOME' => getenv( 'HOME' ), - ); - $key_file = null; - - if ( defined( 'GIT_SSH' ) && GIT_SSH ) { - $env['GIT_SSH'] = GIT_SSH; - } else { - $env['GIT_SSH'] = dirname( __FILE__ ) . '/ssh-git'; - } - - if ( defined( 'GIT_KEY_FILE' ) && GIT_KEY_FILE ) { - $env['GIT_KEY_FILE'] = GIT_KEY_FILE; - } elseif ( $this->private_key ) { - $key_file = $this->_git_temp_key_file(); - chmod( $key_file, 0600 ); - file_put_contents( $key_file, $this->private_key ); - $env['GIT_KEY_FILE'] = $key_file; - } - - return $env; - } - - protected function _call(...$args) { - $args = join( ' ', array_map( 'escapeshellarg', $args ) ); - $return = -1; - $response = array(); - $env = $this->get_env(); - - $git_bin_path = apply_filters( 'gitium_git_bin_path', '' ); - $cmd = "{$git_bin_path}git $args 2>&1"; - - $proc = proc_open( - $cmd, - array( - 0 => array( 'pipe', 'r' ), // stdin - 1 => array( 'pipe', 'w' ), // stdout - ), - $pipes, - $this->repo_dir, - $env - ); - if ( is_resource( $proc ) ) { - fclose( $pipes[0] ); - while ( $line = fgets( $pipes[1] ) ) { - $response[] = rtrim( $line, "\n\r" ); - } - $return = (int)proc_close( $proc ); - } - $this->_log( "$return $cmd", join( "\n", $response ) ); - if ( ! defined( 'GIT_KEY_FILE' ) && isset( $env['GIT_KEY_FILE'] ) ) { - unlink( $env['GIT_KEY_FILE'] ); - } - if ( 0 != $return ) { - $this->last_error = join( "\n", $response ); - } else { - $this->last_error = null; - } - return array( $return, $response ); - } - - function get_last_error() { - return $this->last_error; - } - - function can_exec_git() { - list( $return, ) = $this->_call( 'version' ); - return ( 0 == $return ); - } - - function is_status_working() { - list( $return, ) = $this->_call( 'status', '-s' ); - return ( 0 == $return ); - } - - function get_version() { - list( $return, $version ) = $this->_call( 'version' ); - if ( 0 != $return ) { return ''; } - if ( ! empty( $version[0] ) ) { - return substr( $version[0], 12 ); - } - return ''; - } - - // git rev-list @{u}.. - function get_ahead_commits() { - list( , $commits ) = $this->_call( 'rev-list', '@{u}..' ); - return $commits; - } - - // git rev-list ..@{u} - function get_behind_commits() { - list( , $commits ) = $this->_call( 'rev-list', '..@{u}' ); - return $commits; - } - - function init() { - file_put_contents( "$this->repo_dir/.gitignore", $this->gitignore ); - list( $return, ) = $this->_call( 'init' ); - $this->_call( 'config', 'user.email', 'gitium@presslabs.com' ); - $this->_call( 'config', 'user.name', 'Gitium' ); - $this->_call( 'config', 'push.default', 'matching' ); - return ( 0 == $return ); - } - - function is_dot_git_dir( $dir ) { - $realpath = realpath( $dir ); - $git_config = realpath( $realpath . '/config' ); - $git_index = realpath( $realpath . '/index' ); - if ( ! empty( $realpath ) && is_dir( $realpath ) && file_exists( $git_config ) && file_exists( $git_index ) ) { - return True; - } - return False; - } - - function cleanup() { - $dot_git_dir = realpath( $this->repo_dir . '/.git' ); - if ( $this->is_dot_git_dir( $dot_git_dir ) && $this->_rrmdir( $dot_git_dir ) ) { - if ( WP_DEBUG ) { - error_log( "Gitium cleanup successfull. Removed '$dot_git_dir'." ); - } - return True; - } - if ( WP_DEBUG ) { - error_log( "Gitium cleanup failed. '$dot_git_dir' is not a .git dir." ); - } - return False; - } - - function add_remote_url( $url ) { - list( $return, ) = $this->_call( 'remote', 'add', 'origin', $url ); - return ( 0 == $return ); - } - - function get_remote_url() { - list( , $response ) = $this->_call( 'config', '--get', 'remote.origin.url' ); - if ( isset( $response[0] ) ) { - return $response[0]; - } - return ''; - } - - function remove_remote() { - list( $return, ) = $this->_call( 'remote', 'rm', 'origin'); - return ( 0 == $return ); - } - - function get_remote_tracking_branch() { - list( $return, $response ) = $this->_call( 'rev-parse', '--abbrev-ref', '--symbolic-full-name', '@{u}' ); - if ( 0 == $return ) { - return $response[0]; - } - return false; - } - - function get_local_branch() { - list( $return, $response ) = $this->_call( 'rev-parse', '--abbrev-ref', 'HEAD' ); - if ( 0 == $return ) { - return $response[0]; - } - return false; - } - - function fetch_ref() { - list( $return, ) = $this->_call( 'fetch', 'origin' ); - return ( 0 == $return ); - } - - protected function _resolve_merge_conflicts( $message ) { - list( , $changes ) = $this->status( true ); - $this->_log( $changes ); - foreach ( $changes as $path => $change ) { - if ( in_array( $change, array( 'UD', 'DD' ) ) ) { - $this->_call( 'rm', $path ); - $message .= "\n\tConflict: $path [removed]"; - } elseif ( 'DU' == $change ) { - $this->_call( 'add', $path ); - $message .= "\n\tConflict: $path [added]"; - } elseif ( in_array( $change, array( 'AA', 'UU', 'AU', 'UA' ) ) ) { - $this->_call( 'checkout', '--theirs', $path ); - $this->_call( 'add', '--all', $path ); - $message .= "\n\tConflict: $path [local version]"; - } - } - $this->commit( $message ); - } - - function get_commit_message( $commit ) { - list( $return, $response ) = $this->_call( 'log', '--format=%B', '-n', '1', $commit ); - return ( $return !== 0 ? false : join( "\n", $response ) ); - } - - private function strpos_haystack_array( $haystack, $needle, $offset=0 ) { - if ( ! is_array( $haystack ) ) { $haystack = array( $haystack ); } - - foreach ( $haystack as $query ) { - if ( strpos( $query, $needle, $offset) !== false ) { return true; } - } - return false; - } - - private function cherry_pick( $commits ) { - foreach ( $commits as $commit ) { - if ( empty( $commit ) ) { return false; } - - list( $return, $response ) = $this->_call( 'cherry-pick', $commit ); - - // abort the cherry-pick if the changes are already pushed - if ( false !== $this->strpos_haystack_array( $response, 'previous cherry-pick is now empty' ) ) { - $this->_call( 'cherry-pick', '--abort' ); - continue; - } - - if ( $return != 0 ) { - $this->_resolve_merge_conflicts( $this->get_commit_message( $commit ) ); - } - } - } - - function merge_with_accept_mine(...$commits) { - do_action( 'gitium_before_merge_with_accept_mine' ); - - if ( 1 == count($commits) && is_array( $commits[0] ) ) { - $commits = $commits[0]; - } - - // get ahead commits - $ahead_commits = $this->get_ahead_commits(); - - // combine all commits with the ahead commits - $commits = array_unique( array_merge( array_reverse( $commits ), $ahead_commits ) ); - $commits = array_reverse( $commits ); - - // get the remote branch - $remote_branch = $this->get_remote_tracking_branch(); - - // get the local branch - $local_branch = $this->get_local_branch(); - - // rename the local branch to 'merge_local' - $this->_call( 'branch', '-m', 'merge_local' ); - - // local branch set up to track remote branch - $this->_call( 'branch', $local_branch, $remote_branch ); - - // checkout to the $local_branch - list( $return, ) = $this->_call( 'checkout', $local_branch ); - if ( $return != 0 ) { - $this->_call( 'branch', '-M', $local_branch ); - return false; - } - - // don't cherry pick if there are no commits - if ( count( $commits ) > 0 ) { - $this->cherry_pick( $commits ); - } - - if ( $this->successfully_merged() ) { // git status without states: AA, DD, UA, AU ... - // delete the 'merge_local' branch - $this->_call( 'branch', '-D', 'merge_local' ); - return true; - } else { - $this->_call( 'cherry-pick', '--abort' ); - $this->_call( 'checkout', '-b', 'merge_local' ); - $this->_call( 'branch', '-M', $local_branch ); - return false; - } - } - - function successfully_merged() { - list( , $response ) = $this->status( true ); - $changes = array_values( $response ); - return ( 0 == count( array_intersect( $changes, array( 'DD', 'AU', 'UD', 'UA', 'DU', 'AA', 'UU' ) ) ) ); - } - - function merge_initial_commit( $commit, $branch ) { - list( $return, ) = $this->_call( 'branch', '-m', 'initial' ); - if ( 0 != $return ) { - return false; - } - list( $return, ) = $this->_call( 'checkout', $branch ); - if ( 0 != $return ) { - return false; - } - list( $return, ) = $this->_call( - 'cherry-pick', '--strategy', 'recursive', '--strategy-option', 'theirs', $commit - ); - if ( $return != 0 ) { - $this->_resolve_merge_conflicts( $this->get_commit_message( $commit ) ); - if ( ! $this->successfully_merged() ) { - $this->_call( 'cherry-pick', '--abort' ); - $this->_call( 'checkout', 'initial' ); - return false; - } - } - $this->_call( 'branch', '-D', 'initial' ); - return true; - } - - function get_remote_branches() { - list( , $response ) = $this->_call( 'branch', '-r' ); - $response = array_map( 'trim', $response ); - $response = array_map( function( $b ) { return str_replace( "origin/", "", $b ); }, $response ); - return $response; - } - - function add(...$args) { - if ( 1 == count($args) && is_array( $args[0] ) ) { - $args = $args[0]; - } - $params = array_merge( array( 'add', '-n', '--all' ), $args ); - list ( , $response ) = call_user_func_array( array( $this, '_call' ), $params ); - $count = count( $response ); - - $params = array_merge( array( 'add', '--all' ), $args ); - list ( , $response ) = call_user_func_array( array( $this, '_call' ), $params ); - - return $count; - } - - function commit( $message, $author_name = '', $author_email = '' ) { - $author = ''; - if ( $author_email ) { - if ( empty( $author_name ) ) { - $author_name = $author_email; - } - $author = "$author_name <$author_email>"; - } - - if ( ! empty( $author ) ) { - list( $return, $response ) = $this->_call( 'commit', '-m', $message, '--author', $author ); - } else { - list( $return, $response ) = $this->_call( 'commit', '-m', $message ); - } - if ( $return !== 0 ) { return false; } - - list( $return, $response ) = $this->_call( 'rev-parse', 'HEAD' ); - - return ( $return === 0 ) ? $response[0] : false; - } - - function push( $branch = '' ) { - if ( ! empty( $branch ) ) { - list( $return, ) = $this->_call( 'push', '--porcelain', '-u', 'origin', $branch ); - } else { - list( $return, ) = $this->_call( 'push', '--porcelain', '-u', 'origin', 'HEAD' ); - } - return ( $return == 0 ); - } - - /* - * Get uncommited changes with status porcelain - * git status --porcelain - * It returns an array like this: - array( - file => deleted|modified - ... - ) - */ - function get_local_changes() { - list( $return, $response ) = $this->_call( 'status', '--porcelain' ); - - if ( 0 !== $return ) { - return array(); - } - $new_response = array(); - if ( ! empty( $response ) ) { - foreach ( $response as $line ) : - $work_tree_status = substr( $line, 1, 1 ); - $path = substr( $line, 3 ); - - if ( ( '"' == $path[0] ) && ('"' == $path[strlen( $path ) - 1] ) ) { - // git status --porcelain will put quotes around paths with whitespaces - // we don't want the quotes, let's get rid of them - $path = substr( $path, 1, strlen( $path ) - 2 ); - } - - if ( 'D' == $work_tree_status ) { - $action = 'deleted'; - } else { - $action = 'modified'; - } - $new_response[ $path ] = $action; - endforeach; - } - return $new_response; - } - - function get_uncommited_changes() { - list( , $changes ) = $this->status(); - return $changes; - } - - function local_status() { - list( $return, $response ) = $this->_call( 'status', '-s', '-b', '-u' ); - if ( 0 !== $return ) { - return array( '', array() ); - } - - $new_response = array(); - if ( ! empty( $response ) ) { - $branch_status = array_shift( $response ); - foreach ( $response as $idx => $line ) : - unset( $index_status, $work_tree_status, $path, $new_path, $old_path ); - - if ( empty( $line ) ) { continue; } // ignore empty lines like the last item - if ( '#' == $line[0] ) { continue; } // ignore branch status - - $index_status = substr( $line, 0, 1 ); - $work_tree_status = substr( $line, 1, 1 ); - $path = substr( $line, 3 ); - - $old_path = ''; - $new_path = explode( '->', $path ); - if ( ( 'R' === $index_status ) && ( ! empty( $new_path[1] ) ) ) { - $old_path = trim( $new_path[0] ); - $path = trim( $new_path[1] ); - } - $new_response[ $path ] = trim( $index_status . $work_tree_status . ' ' . $old_path ); - endforeach; - } - - return array( $branch_status, $new_response ); - } - - function status( $local_only = false ) { - list( $branch_status, $new_response ) = $this->local_status(); - - if ( $local_only ) { return array( $branch_status, $new_response ); } - - $behind_count = 0; - $ahead_count = 0; - if ( preg_match( '/## ([^.]+)\.+([^ ]+)/', $branch_status, $matches ) ) { - $local_branch = $matches[1]; - $remote_branch = $matches[2]; - - list( , $response ) = $this->_call( 'rev-list', "$local_branch..$remote_branch", '--count' ); - $behind_count = (int)$response[0]; - - list( , $response ) = $this->_call( 'rev-list', "$remote_branch..$local_branch", '--count' ); - $ahead_count = (int)$response[0]; - } - - if ( $behind_count ) { - list( , $response ) = $this->_call( 'diff', '-z', '--name-status', "$local_branch~$ahead_count", $remote_branch ); - $response = explode( chr( 0 ), $response[0] ); - array_pop( $response ); - for ( $idx = 0 ; $idx < count( $response ) / 2 ; $idx++ ) { - $file = $response[ $idx * 2 + 1 ]; - $change = $response[ $idx * 2 ]; - if ( ! isset( $new_response[ $file ] ) ) { - $new_response[ $file ] = "r$change"; - } - } - } - return array( $branch_status, $new_response ); - } - - /* - * Checks if repo has uncommited changes - * git status --porcelain - */ - function is_dirty() { - $changes = $this->get_uncommited_changes(); - return ! empty( $changes ); - } - - /** - * Return the last n commits - */ - function get_last_commits( $n = 20 ) { - list( $return, $message ) = $this->_call( 'log', '-n', $n, '--pretty=format:%s' ); - if ( 0 !== $return ) { return false; } - - list( $return, $response ) = $this->_call( 'log', '-n', $n, '--pretty=format:%h|%an|%ae|%ad|%cn|%ce|%cd' ); - if ( 0 !== $return ) { return false; } - - foreach ( $response as $index => $value ) { - $commit_info = explode( '|', $value ); - $commits[ $commit_info[0] ] = array( - 'subject' => $message[ $index ], - 'author_name' => $commit_info[1], - 'author_email' => $commit_info[2], - 'author_date' => $commit_info[3], - ); - if ( $commit_info[1] != $commit_info[4] && $commit_info[2] != $commit_info[5] ) { - $commits[ $commit_info[0] ]['committer_name'] = $commit_info[4]; - $commits[ $commit_info[0] ]['committer_email'] = $commit_info[5]; - $commits[ $commit_info[0] ]['committer_date'] = $commit_info[6]; - } - } - return $commits; - } - - public function set_gitignore( $content ) { - file_put_contents( $this->repo_dir . '/.gitignore', $content ); - return true; - } - - public function get_gitignore() { - return file_get_contents( $this->repo_dir . '/.gitignore' ); - } - - /** - * Remove files in .gitignore from version control - */ - function rm_cached( $path ) { - list( $return, ) = $this->_call( 'rm', '--cached', $path ); - return ( $return == 0 ); - } - - function remove_wp_content_from_version_control() { - $process = proc_open( - 'rm -rf ' . ABSPATH . '/wp-content/.git', - array( - 0 => array( 'pipe', 'r' ), // stdin - 1 => array( 'pipe', 'w' ), // stdout - ), - $pipes - ); - if ( is_resource( $process ) ) { - fclose( $pipes[0] ); - proc_close( $process ); - return true; - } - return false; - } -} - -if ( ! defined( 'GIT_DIR' ) ) { - define( 'GIT_DIR', dirname( WP_CONTENT_DIR ) ); -} - -# global is needed here for wp-cli as it includes/exec files inside a function scope -# this forces the context to really be global :\. -global $git; -$git = new Git_Wrapper( GIT_DIR ); diff --git a/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-admin.php b/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-admin.php deleted file mode 100644 index 0c0a3d8e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-admin.php +++ /dev/null @@ -1,58 +0,0 @@ - - * - * Gitium is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * Gitium is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Gitium. If not, see . - * - * @package Gitium - */ -class Gitium_Admin { - - public function __construct() { - global $git; - - list( , $git_private_key ) = gitium_get_keypair(); - $git->set_key( $git_private_key ); - - if ( current_user_can( GITIUM_MANAGE_OPTIONS_CAPABILITY ) ) { - $req = new Gitium_Requirements(); - if ( ! $req->get_status() ) { - return false; - } - - if ( $this->has_configuration() ) { - new Gitium_Submenu_Status(); - new Gitium_Submenu_Commits(); - new Gitium_Submenu_Settings(); - new Gitium_Menu_Bubble(); - } else { - new Gitium_Submenu_Configure(); - } - } - } - - public function has_configuration() { - return _gitium_is_status_working() && _gitium_get_remote_tracking_branch(); - } -} - -if ( ( is_admin() && ! is_multisite() ) || ( is_network_admin() && is_multisite() ) ) { - add_action( 'init', 'gitium_admin_page' ); - function gitium_admin_page() { - new Gitium_Admin(); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-help.php b/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-help.php deleted file mode 100644 index 57416798..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-help.php +++ /dev/null @@ -1,113 +0,0 @@ - - * - * Gitium is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * Gitium is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Gitium. If not, see . - * - * @package Gitium - */ - -class Gitium_Help { - - public function __construct( $hook, $help = 'gitium' ) { - add_action( "load-{$hook}", array( $this, $help ), 20 ); - } - - private function general() { - $screen = get_current_screen(); - $screen->add_help_tab( array( 'id' => 'gitium', 'title' => __( 'Gitium', 'gitium' ), 'callback' => array( $this, 'gitium' ) ) ); - $screen->add_help_tab( array( 'id' => 'faq', 'title' => __( 'F.A.Q.', 'gitium' ), 'callback' => array( $this, 'faq' ) ) ); - $screen->add_help_tab( array( 'id' => 'requirements', 'title' => __( 'Requirements', 'gitium' ), 'callback' => array( $this, 'requirements_callback' ) ) ); - $screen->set_help_sidebar( '
    ' ); - } - - public function gitium() { - echo '

    ' . __( 'Gitium enables continuous deployment for WordPress integrating with tools such as Github, Bitbucket or Travis-CI. Plugin and theme updates, installs and removals are automatically versioned.', 'gitium' ) . '

    '; - echo '

    ' . __( 'Ninja code edits from the WordPress editor are also tracked into version control. Gitium is designed for sane development environments.', 'gitium' ) . '

    '; - echo '

    ' . __( 'Staging and production can follow different branches of the same repository. You can deploy code simply trough git push.', 'gitium' ) . '

    '; - echo '

    ' . __( 'Gitium requires git command line tool minimum version 1.7 installed on the server and proc_open PHP function enabled.', 'gitium' ) . '

    '; - } - - public function faq() { - echo '

    ' . __( 'Could not connect to remote repository?', 'gitium' ) . '
    '. __( 'If you encounter this kind of error you can try to fix it by setting the proper username of the .git directory.', 'gitium' ) . '
    ' . __( 'Example', 'gitium' ) .': chown -R www-data:www-data .git

    '; - echo '

    ' . __( 'Is this plugin considered stable?', 'gitium' ) . '
    '. __( 'Right now this plugin is considered alpha quality and should be used in production environments only by adventurous kinds.', 'gitium' ) . '

    '; - echo '

    ' . __( 'What happens in case of conflicts?', 'gitium' ) . '
    '. __( 'The behavior in case of conflicts is to overwrite the changes on the origin repository with the local changes (ie. local modifications take precedence over remote ones).', 'gitium' ) . '

    '; - echo '

    ' . __( 'How to deploy automatically after a push?', 'gitium' ) . '
    '. __( 'You can ping the webhook url after a push to automatically deploy the new code. The webhook url can be found under Code menu. This url plays well with Github or Bitbucket webhooks.', 'gitium' ) . '

    '; - echo '

    ' . __( 'Does it works on multi site setups?', 'gitium' ) . '
    '. __( 'Gitium is not supporting multisite setups at the moment.', 'gitium' ) . '

    '; - echo '

    ' . __( 'How does gitium handle submodules?', 'gitium' ) . '
    '. __( 'Currently submodules are not supported.', 'gitium' ) . '

    '; - } - - public function requirements_callback() { - echo '

    ' . __( 'Gitium requires:', 'gitium' ) . '

    '; - echo '

    ' . __( 'the function proc_open available', 'gitium' ) . '

    '; - echo '

    ' . __( 'can exec the file inc/ssh-git', 'gitium' ) . '

    '; - - printf( '

    ' . __( 'git version >= %s', 'gitium' ) . '

    ', GITIUM_MIN_GIT_VER ); - printf( '

    ' . __( 'PHP version >= %s', 'gitium' ) . '

    ', GITIUM_MIN_PHP_VER ); - } - - public function configuration() { - $screen = get_current_screen(); - $screen->add_help_tab( array( 'id' => 'configuration', 'title' => __( 'Configuration', 'gitium' ), 'callback' => array( $this, 'configuration_callback' ) ) ); - $this->general(); - } - - public function configuration_callback() { - echo '

    ' . __( 'Configuration step 1', 'gitium' ) . '
    ' . __( 'In this step you must specify the Remote URL. This URL represents the link between the git sistem and your site.', 'gitium' ) . '

    '; - echo '

    ' . __( 'You can get this URL from your Git repository and it looks like this:', 'gitium' ) . '

    '; - echo '

    ' . __( 'github.com -> git@github.com:user/example.git', 'gitium' ) . '

    '; - echo '

    ' . __( 'bitbucket.org -> git@bitbucket.org:user/glowing-happiness.git', 'gitium' ) . '

    '; - echo '

    ' . __( 'To go to the next step, fill the Remote URL and then press the Fetch button.', 'gitium' ) . '

    '; - echo '

    ' . __( 'Configuration step 2', 'gitium' ) . '
    ' . __( 'In this step you must select the branch you want to follow.', 'gitium' ) . '

    '; - echo '

    ' . __( 'Only this branch will have all of your code modifications.', 'gitium' ) . '

    '; - echo '

    ' . __( 'When you push the button Merge & Push, all code(plugins & themes) will be pushed on the git repository.', 'gitium' ) . '

    '; - } - - public function status() { - $screen = get_current_screen(); - $screen->add_help_tab( array( 'id' => 'status', 'title' => __( 'Status', 'gitium' ), 'callback' => array( $this, 'status_callback' ) ) ); - $this->general(); - } - - public function status_callback() { - echo '

    ' . __( 'On status page you can see what files are modified, and you can commit the changes to git.', 'gitium' ) . '

    '; - } - - public function commits() { - $screen = get_current_screen(); - $screen->add_help_tab( array( 'id' => 'commits', 'title' => __( 'Commits', 'gitium' ), 'callback' => array( $this, 'commits_callback' ) ) ); - $this->general(); - } - - public function commits_callback() { - echo '

    ' . __( 'You may be wondering what is the difference between author and committer.', 'gitium' ) . '

    '; - echo '

    ' . __( 'The author is the person who originally wrote the patch, whereas the committer is the person who last applied the patch.', 'gitium' ) . '

    '; - echo '

    ' . __( 'So, if you send in a patch to a project and one of the core members applies the patch, both of you get credit — you as the author and the core member as the committer.', 'gitium' ) . '

    '; - } - - public function settings() { - $screen = get_current_screen(); - $screen->add_help_tab( array( 'id' => 'settings', 'title' => __( 'Settings', 'gitium' ), 'callback' => array( $this, 'settings_callback' ) ) ); - $this->general(); - } - - public function settings_callback() { - echo '

    ' . __( 'Each line from the gitignore file specifies a pattern.', 'gitium' ) . '

    '; - echo '

    ' . __( 'When deciding whether to ignore a path, Git normally checks gitignore patterns from multiple sources, with the following order of precedence, from highest to lowest (within one level of precedence, the last matching pattern decides the outcome)', 'gitium' ) . '

    '; - echo '

    ' . sprintf( __( 'Read more on %s', 'gitium' ), 'git documentation' ) . '

    '; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-menu-bubble.php b/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-menu-bubble.php deleted file mode 100644 index c1a8a838..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-menu-bubble.php +++ /dev/null @@ -1,61 +0,0 @@ - - * - * Gitium is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * Gitium is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Gitium. If not, see . - * - * @package Gitium - */ - -class Gitium_Menu_Bubble extends Gitium_Menu { - - public function __construct() { - parent::__construct( $this->gitium_menu_slug, $this->gitium_menu_slug ); - add_action( GITIUM_ADMIN_MENU_ACTION, array( $this, 'add_menu_bubble' ) ); - } - - public function add_menu_bubble() { - global $menu; - - if ( ! _gitium_is_status_working() ) { - foreach ( $menu as $key => $value ) { - if ( $this->menu_slug == $menu[ $key ][2] ) { - $menu_bubble = get_transient( 'gitium_menu_bubble' ); - if ( false === $menu_bubble ) { $menu_bubble = ''; } - $menu[ $key ][0] = str_replace( $menu_bubble, '', $menu[ $key ][0] ); - delete_transient( 'gitium_menu_bubble' ); - return; - } - } - } - - list( , $changes ) = _gitium_status(); - - if ( ! empty( $changes ) ) : - $bubble_count = count( $changes ); - foreach ( $menu as $key => $value ) { - if ( $this->menu_slug == $menu[ $key ][2] ) { - $menu_bubble = " " - . $bubble_count . ''; - $menu[ $key ][0] .= $menu_bubble; - set_transient( 'gitium_menu_bubble', $menu_bubble ); - return; - } - } - endif; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-menu.php b/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-menu.php deleted file mode 100644 index 9adac247..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-menu.php +++ /dev/null @@ -1,103 +0,0 @@ - - * - * Gitium is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * Gitium is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Gitium. If not, see . - * - * @package Gitium - */ - -class Gitium_Menu { - - public $gitium_menu_slug = 'gitium/gitium.php'; - public $commits_menu_slug = 'gitium/gitium-commits.php'; - public $settings_menu_slug = 'gitium/gitium-settings.php'; - - public $git = null; - - public $menu_slug; - public $submenu_slug; - - public function __construct( $menu_slug, $submenu_slug ) { - global $git; - $this->git = $git; - - $this->menu_slug = $menu_slug; - $this->submenu_slug = $submenu_slug; - } - - public function redirect( $message = '', $success = false, $menu_slug = '' ) { - $message_id = substr( - md5( str_shuffle( 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' ) . time() ), 0, 8 - ); - if ( $message ) { - set_transient( 'message_' . $message_id, $message, 900 ); - } - if ( '' === $menu_slug ) { $menu_slug = $this->menu_slug; } - $url = network_admin_url( 'admin.php?page=' . $menu_slug ); - $url = esc_url_raw( add_query_arg( - array( - 'message' => $message_id, - 'success' => $success, - ), - $url - ) ); - wp_safe_redirect( $url ); - exit; - } - - public function success_redirect( $message = '', $menu_slug = '' ) { - $this->redirect( $message, true, $menu_slug ); - } - - public function disconnect_repository() { - $gitium_disconnect_repo = filter_input(INPUT_POST, 'GitiumSubmitDisconnectRepository', FILTER_SANITIZE_FULL_SPECIAL_CHARS); - - if ( ! isset( $gitium_disconnect_repo ) ) { - return; - } - check_admin_referer( 'gitium-admin' ); - gitium_uninstall_hook(); - if ( ! $this->git->remove_remote() ) { - $this->redirect( __('Could not remove remote.', 'gitium') ); - } - $this->success_redirect( __('You are now disconnected from the repository. New key pair generated.', 'gitium') ); - } - - public function show_message() { - $get_message = filter_input(INPUT_GET, 'message', FILTER_SANITIZE_FULL_SPECIAL_CHARS); - $get_success = filter_input(INPUT_GET, 'success', FILTER_SANITIZE_FULL_SPECIAL_CHARS); - if ( isset( $get_message ) && $get_message ) { - $type = ( isset( $get_success ) && $get_success == 1 ) ? 'updated' : 'error'; - $message = get_transient( 'message_'. $get_message ); - if ( $message ) : ?> -

    - -
    - - ' class="button secondary" onclick="return confirm('')"/>  -
    - - * - * Gitium is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * Gitium is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Gitium. If not, see . - * - * @package Gitium - */ - -class Gitium_Requirements { - - private $req = array(); - private $msg = array(); - - /** - * Gitium requires: - * git min version - * the function proc_open available - * PHP min version - * can exec the file inc/ssh-git - */ - public function __construct() { - $this->_check_req(); - add_action( GITIUM_ADMIN_NOTICES_ACTION, array( $this, 'admin_notices' ) ); - } - - private function _check_req() { - list($this->req['is_git_version'], $this->msg['is_git_version'] ) = $this->is_git_version(); - list($this->req['is_proc_open'], $this->msg['is_proc_open'] ) = $this->is_proc_open(); - list($this->req['is_php_verion'], $this->msg['is_php_verion'] ) = $this->is_php_version(); - list($this->req['can_exec_ssh_git_file'],$this->msg['can_exec_ssh_git_file']) = $this->can_exec_ssh_git_file(); - - return $this->req; - } - - public function admin_notices() { - if ( ! current_user_can( GITIUM_MANAGE_OPTIONS_CAPABILITY ) ) { - return; - } - - foreach ( $this->req as $key => $value ) { - if ( false === $value ) { - echo "

    Gitium Requirement: {$this->msg[$key]}

    "; - } - } - } - - public function get_status() { - $requirements = $this->req; - - foreach ( $requirements as $req ) : - if ( false === $req ) : - return false; - endif; - endforeach; - - return true; - } - - private function is_git_version() { - $git_version = get_transient( 'gitium_git_version' ); - - if ( GITIUM_MIN_GIT_VER > substr( $git_version, 0, 3 ) ) { - global $git; - $git_version = $git->get_version(); - set_transient( 'gitium_git_version', $git_version ); - if ( empty( $git_version ) ) { - return array( false, 'There is no git installed on this server.' ); - } else if ( GITIUM_MIN_GIT_VER > substr( $git_version, 0, 3 ) ) { - return array( false, "The git version is `$git_version` and must be greater than `" . GITIUM_MIN_GIT_VER . "`!" ); - } - } - - return array( true, "The git version is `$git_version`." ); - } - - private function is_proc_open() { - if ( ! function_exists( 'proc_open' ) ) { - return array( false, 'The function `proc_open` is disabled!' ); - } else { - return array( true, 'The function `proc_open` is enabled!' ); - } - } - - private function is_php_version() { - if ( ! function_exists( 'phpversion' ) ) { - return array( false, 'The function `phpversion` is disabled!' ); - } else { - $php_version = phpversion(); - if ( GITIUM_MIN_PHP_VER <= substr( $php_version, 0, 3 ) ) { - return array( true, "The PHP version is `$php_version`." ); - } else { - return array( false, "The PHP version is `$php_version` and is not greater or equal to " . GITIUM_MIN_PHP_VER ); - } - } - } - - private function can_exec_ssh_git_file() { - $filepath = dirname( __FILE__ ) . '/ssh-git'; - - if ( ! function_exists( 'is_executable' ) ) { - return array( false, 'The function `is_executable` is disabled!' ); - } else if ( is_executable( $filepath ) ) { - return array( true, "The `$filepath` file can be executed!" ); - } else { - return array( false, "The `$filepath` file is not executable" ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-submenu-commits.php b/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-submenu-commits.php deleted file mode 100644 index e204c487..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-submenu-commits.php +++ /dev/null @@ -1,100 +0,0 @@ - - * - * Gitium is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * Gitium is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Gitium. If not, see . - * - * @package Gitium - */ - -class Gitium_Submenu_Commits extends Gitium_Menu { - - public function __construct() { - parent::__construct( $this->gitium_menu_slug, $this->commits_menu_slug ); - add_action( GITIUM_ADMIN_MENU_ACTION, array( $this, 'admin_menu' ) ); - } - - public function admin_menu() { - $submenu_hook = add_submenu_page( - $this->menu_slug, - __( 'Git Commits', 'gitium' ), - __( 'Commits', 'gitium' ), - GITIUM_MANAGE_OPTIONS_CAPABILITY, - $this->submenu_slug, - array( $this, 'page' ) - ); - new Gitium_Help( $submenu_hook, 'commits' ); - } - - public function table_head() { - ?> - - - - - - - '; - } - - public function table_start_row() { - static $counter = 0; - $counter++; - echo ( 0 != $counter % 2 ) ? '' : ''; - } - - public function page() { - ?> -
    -

    - - table_head(); ?> - - git->get_last_commits( GITIUM_LAST_COMMITS ) as $commit_id => $data ) { - unset( $committer_name ); - extract( $data ); - if ( isset( $committer_name ) ) { - $committer = " -> $committer_name " . sprintf( __( 'committed %s ago', 'gitium' ), human_time_diff( strtotime( $committer_date ) ) ) . ''; - $committers_avatar = '
    ' . get_avatar( $committer_email, 16 ) . '
    '; - } else { - $committer = ''; - $committers_avatar = ''; - } - $this->table_start_row(); - ?> - - - table_end_row(); - } - ?> - -
    -
    - -

    -
    -

    -
    - - * - * Gitium is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * Gitium is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Gitium. If not, see . - * - * @package Gitium - */ - -class Gitium_Submenu_Configure extends Gitium_Menu { - - public function __construct() { - parent::__construct( $this->gitium_menu_slug, $this->gitium_menu_slug ); - - if ( current_user_can( GITIUM_MANAGE_OPTIONS_CAPABILITY ) ) { - add_action( GITIUM_ADMIN_MENU_ACTION, array( $this, 'admin_menu' ) ); - add_action( 'admin_init', array( $this, 'regenerate_keypair' ) ); - add_action( 'admin_init', array( $this, 'gitium_warning' ) ); - add_action( 'admin_init', array( $this, 'init_repo' ) ); - add_action( 'admin_init', array( $this, 'choose_branch' ) ); - add_action( 'admin_init', array( $this, 'disconnect_repository' ) ); - } - } - - public function admin_menu() { - add_menu_page( - __( 'Git Configuration', 'gitium' ), - 'Gitium', - GITIUM_MANAGE_OPTIONS_CAPABILITY, - $this->menu_slug, - array( $this, 'page' ), - plugins_url( 'img/gitium.png', dirname( __FILE__ ) ) - ); - - $submenu_hook = add_submenu_page( - $this->menu_slug, - __( 'Git Configuration', 'gitium' ), - __( 'Configuration', 'gitium' ), - GITIUM_MANAGE_OPTIONS_CAPABILITY, - $this->menu_slug, - array( $this, 'page' ) - ); - new Gitium_Help( $submenu_hook, 'configuration' ); - } - - public function regenerate_keypair() { - $submit_keypair = filter_input(INPUT_POST, 'GitiumSubmitRegenerateKeypair', FILTER_SANITIZE_FULL_SPECIAL_CHARS); - if ( ! isset( $submit_keypair ) ) { - return; - } - check_admin_referer( 'gitium-admin' ); - gitium_get_keypair( true ); - $this->success_redirect( __( 'Keypair successfully regenerated.', 'gitium' ) ); - } - - public function gitium_warning() { - $submit_warning = filter_input(INPUT_POST, 'GitiumSubmitWarning', FILTER_SANITIZE_FULL_SPECIAL_CHARS); - if ( ! isset( $submit_warning ) ) { - return; - } - check_admin_referer( 'gitium-admin' ); - $this->git->remove_wp_content_from_version_control(); - } - - public function init_process( $remote_url ) { - $git = $this->git; - $git->init(); - $git->add_remote_url( $remote_url ); - $git->fetch_ref(); - if ( count( $git->get_remote_branches() ) == 0 ) { - $git->add( 'wp-content', '.gitignore' ); - $current_user = wp_get_current_user(); - $git->commit( __( 'Initial commit', 'gitium' ), $current_user->display_name, $current_user->user_email ); - if ( ! $git->push( 'master' ) ) { - $git->cleanup(); - return false; - } - } - return true; - } - - public function init_repo() { - $remote_url = filter_input(INPUT_POST, 'remote_url', FILTER_SANITIZE_FULL_SPECIAL_CHARS); - $gitium_submit_fetch = filter_input(INPUT_POST, 'GitiumSubmitFetch', FILTER_SANITIZE_FULL_SPECIAL_CHARS); - if ( ! isset( $gitium_submit_fetch ) || ! isset( $remote_url ) ) { - return; - } - check_admin_referer( 'gitium-admin' ); - - if ( empty( $remote_url ) ) { - $this->redirect( __( 'Please specify a valid repo.', 'gitium' ) ); - } - if ( $this->init_process( $remote_url ) ) { - $this->success_redirect( __( 'Repository initialized successfully.', 'gitium' ) ); - } else { - global $git; - $this->redirect( __( 'Could not push to remote: ', 'gitium' ) . $remote_url . ' ERROR: ' . serialize( $git->get_last_error() ) ); - } - } - - public function choose_branch() { - $gitium_submit_merge_push = filter_input(INPUT_POST, 'GitiumSubmitMergeAndPush', FILTER_SANITIZE_FULL_SPECIAL_CHARS); - $tracking_branch = filter_input(INPUT_POST, 'tracking_branch', FILTER_SANITIZE_FULL_SPECIAL_CHARS); - if ( ! isset( $gitium_submit_merge_push ) || ! isset( $tracking_branch ) ) { - return; - } - check_admin_referer( 'gitium-admin' ); - $this->git->add(); - - $branch = $tracking_branch; - set_transient( 'gitium_remote_tracking_branch', $branch ); - $current_user = wp_get_current_user(); - - $commit = $this->git->commit( __( 'Merged existing code from ', 'gitium' ) . get_home_url(), $current_user->display_name, $current_user->user_email ); - if ( ! $commit ) { - $this->git->cleanup(); - $this->redirect( __( 'Could not create initial commit -> ', 'gitium' ) . $this->git->get_last_error() ); - } - if ( ! $this->git->merge_initial_commit( $commit, $branch ) ) { - $this->git->cleanup(); - $this->redirect( __( 'Could not merge the initial commit -> ', 'gitium' ) . $this->git->get_last_error() ); - } - $this->git->push( $branch ); - $this->success_redirect( __( 'Branch selected successfully.', 'gitium' ) ); - } - - private function setup_step_1_remote_url() { - ?> - - - - -


    - https://user:pass@github.com/user/example.git
    ', 'gitium' ); ?>

    - - - - - - -

    - - -

    -

    -

    - -
    -

    -


    - github or bitbucket.', 'gitium' ); ?> -

    - - - -
    -

    -
    - -

    wp-content is already under version control. You must remove it from version control in order to continue.

    -

    NOTE by doing this you WILL LOSE commit history, but NOT the actual files.

    - -
    -
    - -
    -

    -

    -
    - - - setup_step_1_remote_url(); ?> - setup_step_1_key_pair(); ?> -
    -

    - -

    -
    -
    - git; ?> -
    -

    -

    - - -
    - - - - - - - -
    - -

    get_remote_url() ); ?>

    -
    - -

    - -

    -
    - show_disconnect_repository_button(); - ?> -
    - show_message(); - - if ( wp_content_is_versioned() ) { - return $this->setup_warning(); - } - - if ( ! $this->git->is_status_working() || ! $this->git->get_remote_url() ) { - return $this->setup_step_1(); - } - - if ( ! $this->git->get_remote_tracking_branch() ) { - return $this->setup_step_2(); - } - - _gitium_status( true ); - gitium_update_is_status_working(); - gitium_update_remote_tracking_branch(); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-submenu-settings.php b/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-submenu-settings.php deleted file mode 100644 index 7b292471..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gitium/inc/class-gitium-submenu-settings.php +++ /dev/null @@ -1,150 +0,0 @@ - - * - * Gitium is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * Gitium is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Gitium. If not, see . - * - * @package Gitium - */ - -class Gitium_Submenu_Settings extends Gitium_Menu { - - public function __construct() { - parent::__construct( $this->gitium_menu_slug, $this->settings_menu_slug ); - add_action( GITIUM_ADMIN_MENU_ACTION, array( $this, 'admin_menu' ) ); - add_action( 'admin_init', array( $this, 'save' ) ); - add_action( 'admin_init', array( $this, 'regenerate_webhook' ) ); - add_action( 'admin_init', array( $this, 'regenerate_public_key' ) ); - } - - public function admin_menu() { - $submenu_hook = add_submenu_page( - $this->menu_slug, - 'Settings', - __( 'Settings' ), - GITIUM_MANAGE_OPTIONS_CAPABILITY, - $this->submenu_slug, - array( $this, 'page' ) - ); - new Gitium_Help( $submenu_hook, 'settings' ); - } - - public function regenerate_webhook() { - $gitium_regen_webhook = filter_input(INPUT_POST, 'GitiumSubmitRegenerateWebhook', FILTER_SANITIZE_FULL_SPECIAL_CHARS); - if ( ! isset( $gitium_regen_webhook ) ) { - return; - } - check_admin_referer( 'gitium-settings' ); - gitium_get_webhook_key( true ); - $this->success_redirect( __( 'Webhook URL regenerates. Please make sure you update any external references.', 'gitium' ), $this->settings_menu_slug ); - } - - public function regenerate_public_key() { - $submit_regenerate_pub_key = filter_input(INPUT_POST, 'GitiumSubmitRegeneratePublicKey', FILTER_SANITIZE_FULL_SPECIAL_CHARS); - if ( ! isset( $submit_regenerate_pub_key ) ) { - return; - } - check_admin_referer( 'gitium-settings' ); - gitium_get_keypair( true ); - $this->success_redirect( __( 'Public key successfully regenerated.', 'gitium' ), $this->settings_menu_slug ); - } - - private function show_webhook_table_webhook_url() { - ?> - - - -

    - - - Merge changes

    - -

    -

    - -
    -

    -

    - - - - - - -

    -

    -


    - github or bitbucket.', 'gitium' ); ?> -

    - - - - - show_webhook_table_webhook_url() ?> - show_webhook_table_public_key(); ?> -
    - git->set_gitignore( $gitignore_content ) ) { - gitium_commit_and_push_gitignore_file(); - $this->success_redirect( __( 'The file `.gitignore` is saved!', 'gitium' ), $this->settings_menu_slug ); - } else { - $this->redirect( __( 'The file `.gitignore` could not be saved!', 'gitium' ), false, $this->settings_menu_slug ); - } - } - - public function page() { - $this->show_message(); - ?> -
    -

    - -
    - - -

    - - - show_webhook_table(); ?> -

    - -

    - -
    -
    - - * - * Gitium is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * Gitium is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Gitium. If not, see . - * - * @package Gitium - */ - -class Gitium_Submenu_Status extends Gitium_Menu { - - public function __construct() { - parent::__construct( $this->gitium_menu_slug, $this->gitium_menu_slug ); - - if ( current_user_can( GITIUM_MANAGE_OPTIONS_CAPABILITY ) ) { - add_action( GITIUM_ADMIN_MENU_ACTION, array( $this, 'admin_menu' ) ); - add_action( 'admin_init', array( $this, 'save_changes' ) ); - add_action( 'admin_init', array( $this, 'save_ignorelist' ) ); - add_action( 'admin_init', array( $this, 'disconnect_repository' ) ); - } - } - - public function admin_menu() { - add_menu_page( - __( 'Git Status', 'gitium' ), - 'Gitium', - GITIUM_MANAGE_OPTIONS_CAPABILITY, - $this->menu_slug, - array( $this, 'page' ), - plugins_url( 'img/gitium.png', dirname( __FILE__ ) ) - ); - - $submenu_hook = add_submenu_page( - $this->menu_slug, - __( 'Git Status', 'gitium' ), - __( 'Status', 'gitium' ), - GITIUM_MANAGE_OPTIONS_CAPABILITY, - $this->menu_slug, - array( $this, 'page' ) - ); - new Gitium_Help( $submenu_hook, 'status' ); - } - - private function get_change_meanings() { - return array( - '??' => __( 'untracked', 'gitium' ), - 'rM' => __( 'modified on remote', 'gitium' ), - 'rA' => __( 'added to remote', 'gitium' ), - 'rD' => __( 'deleted from remote', 'gitium' ), - 'D' => __( 'deleted from work tree', 'gitium' ), - 'M' => __( 'updated in work tree', 'gitium' ), - 'A' => __( 'added to work tree', 'gitium' ), - 'AM' => __( 'added to work tree', 'gitium' ), - 'R' => __( 'deleted from work tree', 'gitium' ), - ); - } - - public function humanized_change( $change ) { - $meaning = $this->get_change_meanings(); - - if ( isset( $meaning[ $change ] ) ) { - return $meaning[ $change ]; - } - if ( 0 === strpos( $change, 'R ' ) ) { - $old_filename = substr( $change, 2 ); - $change = sprintf( __( 'renamed from `%s`', 'gitium' ), $old_filename ); - } - return $change; - } - - public function save_ignorelist() { - $gitium_ignore_path = filter_input(INPUT_POST, 'GitiumIgnorePath', FILTER_SANITIZE_FULL_SPECIAL_CHARS); - if ( ! isset( $gitium_ignore_path ) ) { - return; - } else { - $path = $gitium_ignore_path; - } - check_admin_referer( 'gitium-admin' ); - - if ( $this->git->set_gitignore( join( "\n", array_unique( array_merge( explode( "\n", $this->git->get_gitignore() ), array( $path ) ) ) ) ) ) { - gitium_commit_and_push_gitignore_file( $path ); - $this->success_redirect( __( 'The file `.gitignore` is saved!', 'gitium' ), $this->gitium_menu_slug ); - } else { - $this->redirect( __( 'The file `.gitignore` could not be saved!', 'gitium' ), false, $this->gitium_menu_slug ); - } - } - - public function save_changes() { - $gitium_save_changes = filter_input(INPUT_POST, 'GitiumSubmitSaveChanges', FILTER_SANITIZE_FULL_SPECIAL_CHARS); - $gitium_commit_msg = filter_input(INPUT_POST, 'commitmsg', FILTER_SANITIZE_FULL_SPECIAL_CHARS); - - if ( ! isset( $gitium_save_changes ) ) { - return; - } - - check_admin_referer( 'gitium-admin' ); - - gitium_enable_maintenance_mode() or wp_die( __( 'Could not enable the maintenance mode!', 'gitium' ) ); - - $commitmsg = sprintf( __( 'Merged changes from %s on %s', 'gitium' ), get_site_url(), date( 'm.d.Y' ) ); - - if ( isset( $gitium_commit_msg ) && ! empty( $gitium_commit_msg ) ) { - $commitmsg = $gitium_commit_msg; - } - - $commits = array(); - - $current_user = wp_get_current_user(); - - // Get local status and behind commits - $local_status = $this->git->local_status(); - $behind_commits = count( $this->git->get_behind_commits() ); - - if ( $this->git->is_dirty() && $this->git->add() > 0 ) { - $commit = $this->git->commit( $commitmsg, $current_user->display_name, $current_user->user_email ); - if ( ! $commit ) { - gitium_disable_maintenance_mode(); - $this->redirect( __( 'Could not commit!', 'gitium' ) ); - } - $commits[] = $commit; - } - - $merge_success = gitium_merge_and_push( $commits ); - - gitium_disable_maintenance_mode(); - - if ( ! $merge_success ) { - $this->redirect( __( 'Merge failed: ', 'gitium' ) . $this->git->get_last_error() ); - } - - // Determine message based on previous conditions - if ( $behind_commits > 0 && empty( $local_status[1] ) ) { - $this->success_redirect( sprintf( __( 'Pull done!', 'gitium' ) ) ); - } else{ - $this->success_redirect( sprintf( __( 'Pushed commit: `%s`', 'gitium' ), $commitmsg ) ); - } - } - - private function show_ahead_and_behind_info( $changes = '' ) { - $branch = $this->git->get_remote_tracking_branch(); - $ahead = count( $this->git->get_ahead_commits() ); - $behind = count( $this->git->get_behind_commits() ); - ?> -

    - %s.', 'gitium' ), $branch ); - ?>  -

    - - - $type ) : - $counter++; - echo ( 0 != $counter % 2 ) ? '' : ''; - echo '' . esc_html( $path ) . ''; - echo ''; - echo ''; - if ( is_dir( ABSPATH . '/' . $path ) && is_dir( ABSPATH . '/' . trailingslashit( $path ) . '.git' ) ) { // test if is submodule - _e( 'Submodules are not supported in this version.', 'gitium' ); - } else { - echo '' . esc_html( $this->humanized_change( $type ) ) . ''; - } - echo ''; - echo ''; - endforeach; - } - - private function show_git_changes_table( $changes = '' ) { - ?> - - - - - '; - else : - $this->show_git_changes_table_rows( $changes ); - endif; - ?> - -

    '; - _e( 'Nothing to commit, working directory clean.', 'gitium' ); - echo '

    - git->local_status(); - $behind_commits = count( $this->git->get_behind_commits() ); - - // Determine button value based on conditions - if ( $behind_commits > 0 && !empty( $local_status[1] ) ) { - $button_value = __( 'Pull & Push changes', 'gitium' ); - } else if ( $behind_commits > 0 ) { - $button_value = __( 'Pull changes', 'gitium' ); - } else if ( !empty( $local_status[1] ) ) { - $button_value = __( 'Push changes', 'gitium' ); - } - - // Check if there are any changes to display the form - if ( !empty( $changes ) ) : ?> -

    - - -

    -

    - />  -

    - -
    -
     
    -

    git->get_remote_url() ); ?>

    - -
    - show_ahead_and_behind_info( $changes ); - $this->show_git_changes_table( $changes ); - $this->show_git_changes_table_submit_buttons( $changes ); - ?> -
    - show_disconnect_repository_button(); - ?> -
    - show_message(); - _gitium_status( true ); - $this->changes_page(); - } -} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gitium/inc/ssh-git b/wp-content/upgrade-temp-backup/plugins/gitium/inc/ssh-git deleted file mode 100755 index ee976562..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gitium/inc/ssh-git +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -SSH_AUTH_SOCK='' -SSH="ssh -q -F /dev/null -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" -if [ -z "$GIT_KEY_FILE" ] ; then - exec $SSH "$@" -else - exec $SSH -i "$GIT_KEY_FILE" "$@" -fi diff --git a/wp-content/upgrade-temp-backup/plugins/gitium/js/copy-to-clipboard.js b/wp-content/upgrade-temp-backup/plugins/gitium/js/copy-to-clipboard.js deleted file mode 100644 index af934807..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gitium/js/copy-to-clipboard.js +++ /dev/null @@ -1,38 +0,0 @@ -document.addEventListener('DOMContentLoaded', function() { - const copyButton = document.getElementById('copyButton'); - - copyButton.addEventListener('click', function() { - // Get the text to copy from the button's data attribute - const textToCopy = copyButton.getAttribute('data-copy-text'); - - // Check if navigator.clipboard is supported - if (navigator.clipboard && navigator.clipboard.writeText) { - navigator.clipboard.writeText(textToCopy) - .then(() => { - alert('Copied to clipboard using navigator: ' + textToCopy); - }) - .catch(err => { - console.error('Could not copy text with navigator: ', err); - }); - } else { - // Deprecated fallback for older browsers - console.warn('Using deprecated document.execCommand("copy") as a fallback. Update your browser for better clipboard support.'); - - // Fallback using document.execCommand - const tempTextarea = document.createElement('textarea'); - tempTextarea.value = textToCopy; - document.body.appendChild(tempTextarea); - tempTextarea.select(); - - try { - document.execCommand('copy'); - alert('Copied to clipboard (using fallback): ' + textToCopy); - } catch (err) { - console.error('Fallback copy failed: ', err); - } - - // Remove the temporary textarea - document.body.removeChild(tempTextarea); - } - }); -}); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gitium/languages/gitium-es_ES.mo b/wp-content/upgrade-temp-backup/plugins/gitium/languages/gitium-es_ES.mo deleted file mode 100644 index d0ce249fe33849ee1fa59e1964824ee96d4397cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13284 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\n" -"Language-Team: Presslabs \n" -"Language: English\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.5.4\n" -"X-Poedit-KeywordsList: __;_e\n" -"X-Poedit-Basepath: .\n" -"X-Poedit-SourceCharset: UTF-8\n" -"X-Poedit-SearchPath-0: ..\n" - -#: ../inc/class-gitium-submenu-configure.php:34 -#: ../inc/class-gitium-submenu-configure.php:44 -msgid "Git Configuration" -msgstr "Configuración Git" - -#: ../inc/class-gitium-submenu-configure.php:45 -msgid "Configuration" -msgstr "Configuración" - -#: ../inc/class-gitium-submenu-configure.php:59 -msgid "Keypair successfully regenerated." -msgstr "Par de claves regenerado con éxito." - -#: ../inc/class-gitium-submenu-configure.php:78 -msgid "Initial commit" -msgstr "Commit Inicial" - -#: ../inc/class-gitium-submenu-configure.php:94 -msgid "Please specify a valid repo." -msgstr "Por favor, especifique un repo válido" - -#: ../inc/class-gitium-submenu-configure.php:99 -msgid "Could not push to remote" -msgstr "No se pudo empujar al remoto" - -#: ../inc/class-gitium-submenu-configure.php:113 -msgid "Merged existing code from " -msgstr "Código existente fusionado de" - -#: ../inc/class-gitium-submenu-configure.php:116 -msgid "Could not create initial commit -> " -msgstr "No se pudo crear Commit inicial ->" - -#: ../inc/class-gitium-submenu-configure.php:120 -msgid "Could not merge the initial commit -> " -msgstr "No se pudo fusionar el Commit inicial ->" - -#: ../inc/class-gitium-submenu-configure.php:129 -msgid "Remote URL" -msgstr "URL remoto" - -#: ../inc/class-gitium-submenu-configure.php:132 -msgid "" -"This URL provide access to a Git repository via SSH, HTTPS, or Subversion." -msgstr "" -"Este URL proporciona acceso a un repositorio Git vía SSH, HTTPS o Subversión." - -#: ../inc/class-gitium-submenu-configure.php:133 -msgid "" -"If you need to authenticate over \"https://\" instead of SSH use: " -"https://user:pass@github.com/user/example.git" -msgstr "" -"Si necesita autenticar sobre \"https:// en lugar del uso de SSH: " -"https://user:pass@github.com/user/example.git " - -#: ../inc/class-gitium-submenu-configure.php:143 -msgid "Key pair" -msgstr "Par de claves" - -#: ../inc/class-gitium-submenu-configure.php:147 -#: ../inc/class-gitium-submenu-settings.php:80 -msgid "Regenerate Key" -msgstr "Regenerar clave" - -#: ../inc/class-gitium-submenu-configure.php:149 -#: ../inc/class-gitium-submenu-settings.php:81 -msgid "" -"If your code use ssh keybased authentication for git you need to allow write " -"access to your repository using this key." -msgstr "" -"Si su código usa autenticación ssh keybased para git, usted necesita " -"permitir el acceso de escritura a su repositorio utilizando esta clave." - -#: ../inc/class-gitium-submenu-configure.php:150 -#: ../inc/class-gitium-submenu-settings.php:82 -msgid "" -"Checkout instructions for github or bitbucket." -msgstr "" -"Instrucciones de Pedido para github or %s." -msgstr "Siguiendo sucursal remota %s." - -#: ../inc/class-gitium-submenu-status.php:127 -msgid "Everything is up to date" -msgstr "Todo está actualizado" - -#: ../inc/class-gitium-submenu-status.php:130 -#, php-format -msgid "You are %s commits ahead and %s behind remote." -msgstr "Usted está %s Commits por delante y %s por detrás del remoto." - -#: ../inc/class-gitium-submenu-status.php:132 -#, php-format -msgid "You are %s commits ahead remote." -msgstr "Usted está %s Commits delante del remoto." - -#: ../inc/class-gitium-submenu-status.php:134 -#, php-format -msgid "You are %s commits behind remote." -msgstr "Usted está %s Commits detrás del remoto." - -#: ../inc/class-gitium-submenu-status.php:160 -msgid "Add this file to the `.gitignore` list." -msgstr "Añadir este archivo a la lista `.gitignore`." - -#: ../inc/class-gitium-submenu-status.php:163 -msgid "Submodules are not supported in this version." -msgstr "Sub-módulos no son compatibles con esta versión." - -#: ../inc/class-gitium-submenu-status.php:175 -#: ../inc/class-gitium-submenu-status.php:176 -msgid "Path" -msgstr "Ruta" - -#: ../inc/class-gitium-submenu-status.php:175 -#: ../inc/class-gitium-submenu-status.php:176 -msgid "Change" -msgstr "Cambiar" - -#: ../inc/class-gitium-submenu-status.php:181 -msgid "Nothing to commit, working directory clean." -msgstr "Nada que comprometer, directorio de trabajo limpio." - -#: ../inc/class-gitium-submenu-status.php:195 -msgid "Commit message" -msgstr "Comprometer mensaje" - -#: ../inc/class-gitium-submenu-status.php:199 -msgid "Save changes" -msgstr "Guardar cambios" - -#: ../inc/class-gitium-submenu-status.php:209 -msgid "connected to" -msgstr "conectados a" - -#: ../inc/class-gitium-submenu-settings.php:32 ../inc/class-gitium-help.php:81 -msgid "Settings" -msgstr "Ajustes" - -#: ../inc/class-gitium-submenu-settings.php:46 -msgid "" -"Webhook URL regenerates. Please make sure you update any external references." -msgstr "" -"Webhook URL se regenera. Por favor, asegúrese de actualizar todas las " -"referencias externas." - -#: ../inc/class-gitium-submenu-settings.php:55 -msgid "Public key successfully regenerated." -msgstr "Clave pública regenera con éxito." - -#: ../inc/class-gitium-submenu-settings.php:61 -msgid "Webhook URL" -msgstr "URL Webhook" - -#: ../inc/class-gitium-submenu-settings.php:65 -msgid "Regenerate Webhook" -msgstr "Regenerar Webhook" - -#: ../inc/class-gitium-submenu-settings.php:67 -msgid "Pinging this URL triggers an update from remote repository." -msgstr "" -"Hacer ping en esta URL desencadena una actualización del repositorio remoto." - -#: ../inc/class-gitium-submenu-settings.php:77 -msgid "Public Key" -msgstr "Clave Pública" - -#: ../inc/class-gitium-submenu-settings.php:116 -msgid "Gitium Settings" -msgstr "Ajustes Gitium" - -#: ../inc/class-gitium-submenu-settings.php:121 -msgid "Be careful when you modify this list!" -msgstr "¡Tenga cuidado al modificar esta lista!" - -#: ../inc/class-gitium-submenu-settings.php:126 -msgid "Save" -msgstr "Guardar" - -#: ../inc/class-gitium-help.php:26 -msgid "Gitium" -msgstr "Gitium" - -#: ../inc/class-gitium-help.php:27 -msgid "F.A.Q." -msgstr "PF" - -#: ../inc/class-gitium-help.php:32 -msgid "" -"Gitium enables continuous deployment for WordPress integrating with tools " -"such as Github, Bitbucket or Travis-CI. Plugin and theme updates, installs " -"and removals are automatically versioned." -msgstr "" -"Gitium permite el despliegue continuo para integración de WordPress con " -"herramientas como Github, Bitbucket o Travis-CI. El plugin y las " -"actualizaciones de temas, instalaciones y eliminaciones están versionadas " -"automáticamente." - -#: ../inc/class-gitium-help.php:33 -msgid "" -"Ninja code edits from the WordPress editor are also tracked into version " -"control. Gitium is designed for sane development environments." -msgstr "" -"Las ediciones Código Ninja desde el editor de WordPress también son " -"rastreadas en el control de versiones. Gitium está diseñado para entornos de " -"desarrollo sanos." - -#: ../inc/class-gitium-help.php:34 -msgid "" -"Staging and production can follow different branches of the same repository. " -"You can deploy code simply trough git push." -msgstr "" -"Puesta en escena y producción pueden seguir diferentes ramas del mismo " -"repositorio. Puede implementar código simplemente a través git push." - -#: ../inc/class-gitium-help.php:35 -msgid "" -"Gitium requires git command line tool minimum version 1.7 " -"installed on the server and proc_open PHP function enabled." -msgstr "" -"Gitium requiere la herramienta de línea de comandos git , " -"mínimo la versión 1.7 instalada en el servidor y proc_open la " -"función PHP habilitada." - -#: ../inc/class-gitium-help.php:39 -msgid "Is this plugin considered stable?" -msgstr "¿Es este plugin considerado estable?" - -#: ../inc/class-gitium-help.php:39 -msgid "" -"Right now this plugin is considered alpha quality and should be used in " -"production environments only by adventurous kinds." -msgstr "" -"Ahora mismo este plugin se considera de calidad alfa y debe utilizarse en " -"entornos de producción sólo por tipos aventureros." - -#: ../inc/class-gitium-help.php:40 -msgid "What happens in case of conflicts?" -msgstr "¿Qué sucede en caso de conflictos?" - -#: ../inc/class-gitium-help.php:40 -msgid "" -"The behavior in case of conflicts is to overwrite the changes on the origin " -"repository with the local changes (ie. local modifications take precedence " -"over remote ones)." -msgstr "" -"El comportamiento en caso de conflictos es sobrescribir los cambios en el " -"repositorio de origen con los cambios locales (p.ej. las modificaciones " -"locales toman precedencia sobre las remotas)." - -#: ../inc/class-gitium-help.php:41 -msgid "How to deploy automatically after a push?" -msgstr "¿Cómo implementar automáticamente después de un empujón?" - -#: ../inc/class-gitium-help.php:41 -msgid "" -"You can ping the webhook url after a push to automatically deploy the new " -"code. The webhook url can be found under Code menu. This url plays well with " -"Github or Bitbucket webhooks." -msgstr "" -"Puede hacer ping en la url webhook después de un empujón para distribuir " -"automáticamente el nuevo código. La url webhook se puede encontrar en el " -"menú Código. Esta url juega bien con Github o BitBucket WebHooks." - -#: ../inc/class-gitium-help.php:42 -msgid "Does it works on multi site setups?" -msgstr "¿Trabaja en múltiples configuraciones de sitio?" - -#: ../inc/class-gitium-help.php:42 -msgid "Gitium is not supporting multisite setups at the moment." -msgstr "" -"Gitium no soporta a las configuraciones de múltiples sitios en este momento." - -#: ../inc/class-gitium-help.php:43 -msgid "How does gitium handle submodules?" -msgstr "¿Cómo manejar gitium los submódulos?" - -#: ../inc/class-gitium-help.php:43 -msgid "Currently submodules are not supported." -msgstr "Actualmente los submódulos no son compatibles." - -#: ../inc/class-gitium-help.php:47 -msgid "" -"In this step you must specify the Remote URL. This URL " -"represents the link between the git sistem and your site." -msgstr "" -"En esta etapa, se debe especificar el URL remoto . Esta URL " -"representa el enlace entre el sistema git y su sitio." - -#: ../inc/class-gitium-help.php:48 -msgid "You can get this URL from your Git repository and it looks like this:" -msgstr "" -"Usted puede obtener esta dirección URL de su repositorio Git y se ve así:" - -#: ../inc/class-gitium-help.php:49 -msgid "github.com -> git@github.com:user/example.git" -msgstr "github.com -> git@github.com:user/example.git" - -#: ../inc/class-gitium-help.php:50 -msgid "bitbucket.org -> git@bitbucket.org:user/glowing-happiness.git" -msgstr "bitbucket.org -> git@bitbucket.org:user/glowing-happiness.git" - -#: ../inc/class-gitium-help.php:51 -msgid "" -"To go to the next step, fill the Remote URL and then press the " -"Fetch button." -msgstr "" -"Para ir al siguiente paso, llene la URL remota y pulse el " -"botón Buscar ." - -#: ../inc/class-gitium-help.php:52 -msgid "" -"In this step you must select the branch you want to follow." -msgstr "" -"En este paso deberá seleccionar la rama que desea seguir." - -#: ../inc/class-gitium-help.php:53 -msgid "Only this branch will have all of your code modifications." -msgstr "Sólo esta rama tendrá todas sus modificaciones de código." - -#: ../inc/class-gitium-help.php:54 -msgid "" -"When you push the button Merge & Push, all code(plugins & " -"themes) will be pushed on the git repository." -msgstr "" -"Cuando se presiona el botón Combinar y Empujar , todo el " -"código (plugins y temas) serán empujados en el repositorio git." - -#: ../inc/class-gitium-help.php:64 -msgid "" -"On status page you can see what files are modified, and you can commit the " -"changes to git." -msgstr "" -"En la página de estado se puede ver qué archivos son modificados, y usted " -"puede confirmar los cambios a Git." - -#: ../inc/class-gitium-help.php:69 ../inc/class-gitium-submenu-commits.php:29 -#: ../inc/class-gitium-submenu-commits.php:41 -msgid "Commits" -msgstr "Commits" - -#: ../inc/class-gitium-help.php:74 -msgid "" -"You may be wondering what is the difference between author and committer." -msgstr "" -"Usted puede preguntarse cuál es la diferencia entre el autor y el comitter." - -#: ../inc/class-gitium-help.php:75 -msgid "" -"The author is the person who originally wrote the patch, " -"whereas the committer is the person who last applied the patch." -msgstr "" -"El autor es la persona que originalmente escribió el parche, " -"mientras que el committer es la persona que aplicó el parche " -"al final." - -#: ../inc/class-gitium-help.php:76 -msgid "" -"So, if you send in a patch to a project and one of the core members applies " -"the patch, both of you get credit — you as the author and the core member as " -"the committer." -msgstr "" -"Por lo tanto, si usted envía en un parche para un proyecto y uno de los " -"principales miembros aplica el parche, ambos consiguen crédito - usted como " -"el autor y el miembro de núcleo como el commiter." - -#: ../inc/class-gitium-help.php:86 -msgid "Each line from the gitignore file specifies a pattern." -msgstr "Cada línea del archivo gitignore especifica un patrón." - -#: ../inc/class-gitium-help.php:87 -msgid "" -"When deciding whether to ignore a path, Git normally checks gitignore " -"patterns from multiple sources, with the following order of precedence, from " -"highest to lowest (within one level of precedence, the last matching pattern " -"decides the outcome)" -msgstr "" -"A la hora de decidir si se debe pasar por alto una ruta, Git normalmente " -"comprueba patrones gitignore de múltiples fuentes, con el siguiente orden, " -"de de mayor a menor (dentro de un nivel de prioridad, la última " -"coincidencia de patrones decide el resultado)" - -#: ../inc/class-gitium-help.php:88 -#, php-format -msgid "Read more on %s" -msgstr "Leer más en %s" - -#: ../inc/class-gitium-submenu-commits.php:28 -msgid "Git Commits" -msgstr "Commits Git" - -#: ../inc/class-gitium-submenu-commits.php:61 -#, php-format -msgid "Last %s commits" -msgstr "Últimos commits %s" - -#: ../inc/class-gitium-submenu-commits.php:70 -#, php-format -msgid "committed %s ago" -msgstr "cometido hace %s" - -#: ../inc/class-gitium-submenu-commits.php:82 -#, php-format -msgid "authored %s ago" -msgstr "Creado hace %s" diff --git a/wp-content/upgrade-temp-backup/plugins/gitium/languages/gitium-sr_RS.mo b/wp-content/upgrade-temp-backup/plugins/gitium/languages/gitium-sr_RS.mo deleted file mode 100644 index 677d3bf3bf4a8579d9c0ef7e47e57ee5c2ac9204..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12978 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\n" -"Language-Team: Presslabs \n" -"Language: English\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.5.4\n" -"X-Poedit-KeywordsList: __;_e\n" -"X-Poedit-Basepath: .\n" -"X-Poedit-SourceCharset: UTF-8\n" -"X-Poedit-SearchPath-0: ..\n" - -#: ../inc/class-gitium-submenu-configure.php:34 -#: ../inc/class-gitium-submenu-configure.php:44 -msgid "Git Configuration" -msgstr "Git konfiguracija" - -#: ../inc/class-gitium-submenu-configure.php:45 -msgid "Configuration" -msgstr "Konfiguracija" - -#: ../inc/class-gitium-submenu-configure.php:59 -msgid "Keypair successfully regenerated." -msgstr "Par ključeva uspešno regenerisan" - -#: ../inc/class-gitium-submenu-configure.php:78 -msgid "Initial commit" -msgstr "Početna uputstva" - -#: ../inc/class-gitium-submenu-configure.php:94 -msgid "Please specify a valid repo." -msgstr "Odaberite važeće spremište" - -#: ../inc/class-gitium-submenu-configure.php:99 -msgid "Could not push to remote" -msgstr "Neuspelo potiskivanje u udaljeno spremište" - -#: ../inc/class-gitium-submenu-configure.php:113 -msgid "Merged existing code from " -msgstr "Postojeći kod spojen sa" - -#: ../inc/class-gitium-submenu-configure.php:116 -msgid "Could not create initial commit -> " -msgstr "Neuspelo kreiranje početnog uputstva ->" - -#: ../inc/class-gitium-submenu-configure.php:120 -msgid "Could not merge the initial commit -> " -msgstr "Neuspelo spajanje početnog uputstva ->" - -#: ../inc/class-gitium-submenu-configure.php:129 -msgid "Remote URL" -msgstr "URL udaljenog spremišta" - -#: ../inc/class-gitium-submenu-configure.php:132 -msgid "" -"This URL provide access to a Git repository via SSH, HTTPS, or Subversion." -msgstr "" -"Ovaj URL obezbeđuje pristup Git skladištu putem SSH-a, HTTPS-a ili " -"Subverzije." - -#: ../inc/class-gitium-submenu-configure.php:133 -msgid "" -"If you need to authenticate over \"https://\" instead of SSH use: " -"https://user:pass@github.com/user/example.git" -msgstr "" -"Ako treba da proverite preko \"https://\" umesto SSH, koristite: " -"https://user:pass@github.com/user/example.git" - -#: ../inc/class-gitium-submenu-configure.php:143 -msgid "Key pair" -msgstr "Par ključeva" - -#: ../inc/class-gitium-submenu-configure.php:147 -#: ../inc/class-gitium-submenu-settings.php:80 -msgid "Regenerate Key" -msgstr "Ključ za regenerisanje" - -#: ../inc/class-gitium-submenu-configure.php:149 -#: ../inc/class-gitium-submenu-settings.php:81 -msgid "" -"If your code use ssh keybased authentication for git you need to allow write " -"access to your repository using this key." -msgstr "" -"Ako vaš kod koristi git autentifikaciju na osnovu ssh ključa, morate pismeno " -"dozvoliti pristup svom spremištu uz pomoć ovog ključa. " - -#: ../inc/class-gitium-submenu-configure.php:150 -#: ../inc/class-gitium-submenu-settings.php:82 -msgid "" -"Checkout instructions for github or bitbucket." -msgstr "" -"Pogledajte uputstva na github " -"ili bitbucket." - -#: ../inc/class-gitium-submenu-configure.php:160 -msgid "Warning!" -msgstr "Upozorenje!" - -#: ../inc/class-gitium-submenu-configure.php:174 -#: ../inc/class-gitium-help.php:47 -msgid "Configuration step 1" -msgstr "Konfiguracija, korak 1" - -#: ../inc/class-gitium-submenu-configure.php:175 -#: ../inc/class-gitium-submenu-configure.php:194 -msgid "" -"If you need help to set this up, please click on the \"Help\" button from " -"the top right corner of this screen." -msgstr "" -"Ako vam treba pomoć za ovo podešavanje, kliknite na taster \"Pomoć\" u " -"gornjem desnom uglu ekrana." - -#: ../inc/class-gitium-submenu-configure.php:183 -msgid "Fetch" -msgstr "Uzmi" - -#: ../inc/class-gitium-submenu-configure.php:193 -#: ../inc/class-gitium-help.php:52 -msgid "Configuration step 2" -msgstr "Konfiguracija, korak 2" - -#: ../inc/class-gitium-submenu-configure.php:202 -msgid "Choose tracking branch" -msgstr "Odaberite ogranak za praćenje" - -#: ../inc/class-gitium-submenu-configure.php:215 -msgid "Merge & Push" -msgstr "Spoji & Potisni" - -#: ../inc/class-gitium-submenu-status.php:32 -#: ../inc/class-gitium-submenu-status.php:42 -msgid "Git Status" -msgstr "Git Status" - -#: ../inc/class-gitium-submenu-status.php:43 -#: ../inc/class-gitium-submenu-status.php:209 ../inc/class-gitium-help.php:59 -msgid "Status" -msgstr "Status" - -#: ../inc/class-gitium-submenu-status.php:53 -msgid "untracked" -msgstr "nepraćen" - -#: ../inc/class-gitium-submenu-status.php:54 -msgid "modified on remote" -msgstr "modifikovan na udaljenom skladištu" - -#: ../inc/class-gitium-submenu-status.php:55 -msgid "added to remote" -msgstr "dodat udaljenom skladištu" - -#: ../inc/class-gitium-submenu-status.php:56 -msgid "deleted from remote" -msgstr "obrisan sa udaljenog skladišta" - -#: ../inc/class-gitium-submenu-status.php:57 -#: ../inc/class-gitium-submenu-status.php:61 -msgid "deleted from work tree" -msgstr "obrisan sa radnog drveta" - -#: ../inc/class-gitium-submenu-status.php:58 -msgid "updated in work tree" -msgstr "ažuriran u radnom drvetu" - -#: ../inc/class-gitium-submenu-status.php:59 -#: ../inc/class-gitium-submenu-status.php:60 -msgid "added to work tree" -msgstr "dodat radnom drvetu" - -#: ../inc/class-gitium-submenu-status.php:73 -#, php-format -msgid "renamed from `%s`" -msgstr "ime `%s` promenjeno" - -#: ../inc/class-gitium-submenu-status.php:88 -#: ../inc/class-gitium-submenu-settings.php:106 -msgid "The file `.gitignore` is saved!" -msgstr "Datoteka `.gitignore` je sačuvana!" - -#: ../inc/class-gitium-submenu-status.php:90 -#: ../inc/class-gitium-submenu-settings.php:108 -msgid "The file `.gitignore` could not be saved!" -msgstr "Datoteka `.gitignore` ne može biti sačuvana!" - -#: ../inc/class-gitium-submenu-status.php:100 -msgid "Could not enable the maintenance mode!" -msgstr "Režim održavanja nije mogao biti aktiviran!" - -#: ../inc/class-gitium-submenu-status.php:102 -#: ../inc/class-gitium-submenu-status.php:196 -#, php-format -msgid "Merged changes from %s on %s" -msgstr "Promene sa %s na %s spojene!" - -#: ../inc/class-gitium-submenu-status.php:109 -msgid "Could not commit!" -msgstr "Neuspelo izvršenje!" - -#: ../inc/class-gitium-submenu-status.php:114 -msgid "Merge failed: " -msgstr "Neuspelo spajanje:" - -#: ../inc/class-gitium-submenu-status.php:116 -#, php-format -msgid "Pushed commit: `%s`" -msgstr "Preneto izvršenje: `%s`" - -#: ../inc/class-gitium-submenu-status.php:125 -#, php-format -msgid "Following remote branch %s." -msgstr "Praćenje udaljenog ogranka%s." - -#: ../inc/class-gitium-submenu-status.php:127 -msgid "Everything is up to date" -msgstr "Sve je ažurirano" - -#: ../inc/class-gitium-submenu-status.php:130 -#, php-format -msgid "You are %s commits ahead and %s behind remote." -msgstr "Vi ste %s izvršenja ispred i %s iza udaljenog spremišta." - -#: ../inc/class-gitium-submenu-status.php:132 -#, php-format -msgid "You are %s commits ahead remote." -msgstr "Vi ste %s izvršenja ispred udaljenog spremišta." - -#: ../inc/class-gitium-submenu-status.php:134 -#, php-format -msgid "You are %s commits behind remote." -msgstr "Vi ste %s izvršenja iza udaljenog spremišta." - -#: ../inc/class-gitium-submenu-status.php:160 -msgid "Add this file to the `.gitignore` list." -msgstr "Dodajte ovu datoteku `.gitignore` listi." - -#: ../inc/class-gitium-submenu-status.php:163 -msgid "Submodules are not supported in this version." -msgstr "U ovoj verziji nisu podržani submoduli." - -#: ../inc/class-gitium-submenu-status.php:175 -#: ../inc/class-gitium-submenu-status.php:176 -msgid "Path" -msgstr "Putanja" - -#: ../inc/class-gitium-submenu-status.php:175 -#: ../inc/class-gitium-submenu-status.php:176 -msgid "Change" -msgstr "Izmeni" - -#: ../inc/class-gitium-submenu-status.php:181 -msgid "Nothing to commit, working directory clean." -msgstr "Nema ničega za izvršenje, radni direktorijum je čist." - -#: ../inc/class-gitium-submenu-status.php:195 -msgid "Commit message" -msgstr "Poruka o izvršenju" - -#: ../inc/class-gitium-submenu-status.php:199 -msgid "Save changes" -msgstr "Sačuvaj izmene" - -#: ../inc/class-gitium-submenu-status.php:209 -msgid "connected to" -msgstr "povezan sa" - -#: ../inc/class-gitium-submenu-settings.php:32 ../inc/class-gitium-help.php:81 -msgid "Settings" -msgstr "Podešavanja" - -#: ../inc/class-gitium-submenu-settings.php:46 -msgid "" -"Webhook URL regenerates. Please make sure you update any external references." -msgstr "" -"Webhook URL se regeneriše. Proverite da li ste ažurirali eksterne reference." - -#: ../inc/class-gitium-submenu-settings.php:55 -msgid "Public key successfully regenerated." -msgstr "Javni ključ uspešno regenerisan." - -#: ../inc/class-gitium-submenu-settings.php:61 -msgid "Webhook URL" -msgstr "Webhook URL" - -#: ../inc/class-gitium-submenu-settings.php:65 -msgid "Regenerate Webhook" -msgstr "Regeneriši webhook" - -#: ../inc/class-gitium-submenu-settings.php:67 -msgid "Pinging this URL triggers an update from remote repository." -msgstr "Pingovanje ovog URL-a povlači ažuriranje iz udaljenog skladišta." - -#: ../inc/class-gitium-submenu-settings.php:77 -msgid "Public Key" -msgstr "Javni ključ" - -#: ../inc/class-gitium-submenu-settings.php:116 -msgid "Gitium Settings" -msgstr "Gitium podešavanja" - -#: ../inc/class-gitium-submenu-settings.php:121 -msgid "Be careful when you modify this list!" -msgstr "Oprezno menjajte ovu listu!" - -#: ../inc/class-gitium-submenu-settings.php:126 -msgid "Save" -msgstr "Sačuvaj" - -#: ../inc/class-gitium-help.php:26 -msgid "Gitium" -msgstr "Gitium" - -#: ../inc/class-gitium-help.php:27 -msgid "F.A.Q." -msgstr "Često postavljana pitanja" - -#: ../inc/class-gitium-help.php:32 -msgid "" -"Gitium enables continuous deployment for WordPress integrating with tools " -"such as Github, Bitbucket or Travis-CI. Plugin and theme updates, installs " -"and removals are automatically versioned." -msgstr "" -"Gitium omogućava kontinuiranu primenu WordPress integrisanja alatima, kao " -"što su: Github, Bitbucket ili Travis-CI. Ažuriranja plugin-a i teme, " -"instalacije i uklanjanja automatski su verzionirani." - -#: ../inc/class-gitium-help.php:33 -msgid "" -"Ninja code edits from the WordPress editor are also tracked into version " -"control. Gitium is designed for sane development environments." -msgstr "" -"Nindža kod, koji uređuje iz WordPress uređivača, takođe se prati u kontroli " -"verzije. Gitium je dizajniran za razumna razvojna okruženja." - -#: ../inc/class-gitium-help.php:34 -msgid "" -"Staging and production can follow different branches of the same repository. " -"You can deploy code simply trough git push." -msgstr "" -"Postavljanje i proizvodnja mogu da prate različite grane istog spremišta. " -"Možete da primenite kod jednostavno kroz git push." - -#: ../inc/class-gitium-help.php:35 -msgid "" -"Gitium requires git command line tool minimum version 1.7 " -"installed on the server and proc_open PHP function enabled." -msgstr "" -"Gitium zahteva da na serveru bude instaliran git alat komandne " -"linije, najmanje verzije 1.7 i proc_open aktiviranu PHP " -"funkciju." - -#: ../inc/class-gitium-help.php:39 -msgid "Is this plugin considered stable?" -msgstr "Da li se ovaj plugin smatra stabilnim?" - -#: ../inc/class-gitium-help.php:39 -msgid "" -"Right now this plugin is considered alpha quality and should be used in " -"production environments only by adventurous kinds." -msgstr "" -"Trenutno se smatra da ovaj plugin ima alfa kvalitet i treba ga koristiti u " -"okruženjima produkcije isključivo avanturističkog karaktera." - -#: ../inc/class-gitium-help.php:40 -msgid "What happens in case of conflicts?" -msgstr "Šta se dešava u slučaju konflikta?" - -#: ../inc/class-gitium-help.php:40 -msgid "" -"The behavior in case of conflicts is to overwrite the changes on the origin " -"repository with the local changes (ie. local modifications take precedence " -"over remote ones)." -msgstr "" -"U slučaju konflikta treba poništiti izmene u prvobitnom spremištu, zajedno " -"sa lokalnim izmenama (tj. Lokalne izmene imaju prednost u odnosu na " -"udaljene)." - -#: ../inc/class-gitium-help.php:41 -msgid "How to deploy automatically after a push?" -msgstr "Kako izvršiti automatsko razmeštanje posle pritiska?" - -#: ../inc/class-gitium-help.php:41 -msgid "" -"You can ping the webhook url after a push to automatically deploy the new " -"code. The webhook url can be found under Code menu. This url plays well with " -"Github or Bitbucket webhooks." -msgstr "" -"Možete pingovati url za webhook nakon pritiska za automatsko razmeštanje " -"novog koda. URL za webhook možete naći u meniju koda. Ovaj url dobro radi uz " -"Github ili Bitbucket webhooks." - -#: ../inc/class-gitium-help.php:42 -msgid "Does it works on multi site setups?" -msgstr "Da li radi na podešavanjima višestrukih site-ova?" - -#: ../inc/class-gitium-help.php:42 -msgid "Gitium is not supporting multisite setups at the moment." -msgstr "Gitium trenutno ne podržava podešavanje višestrukih site-ova." - -#: ../inc/class-gitium-help.php:43 -msgid "How does gitium handle submodules?" -msgstr "Kako gitium upravlja submodulima?" - -#: ../inc/class-gitium-help.php:43 -msgid "Currently submodules are not supported." -msgstr "Trenutno, submoduli nisu podržani." - -#: ../inc/class-gitium-help.php:47 -msgid "" -"In this step you must specify the Remote URL. This URL " -"represents the link between the git sistem and your site." -msgstr "" -"U ovom koraku morate odrediti Udaljeni URL. Ovaj URL " -"predstavlja vezu između git sistema i vašeg site-a." - -#: ../inc/class-gitium-help.php:48 -msgid "You can get this URL from your Git repository and it looks like this:" -msgstr "Ovaj URL možete dobiti iz svog Git spremišta i on izgleda ovako:" - -#: ../inc/class-gitium-help.php:49 -msgid "github.com -> git@github.com:user/example.git" -msgstr "github.com -> git@github.com:user/example.git" - -#: ../inc/class-gitium-help.php:50 -msgid "bitbucket.org -> git@bitbucket.org:user/glowing-happiness.git" -msgstr "bitbucket.org -> git@bitbucket.org:user/glowing-happines.git" - -#: ../inc/class-gitium-help.php:51 -msgid "" -"To go to the next step, fill the Remote URL and then press the " -"Fetch button." -msgstr "" -"Da biste prešli na sledeći korak, popunite Udaljeni URL i " -"pritisnite Dobavi taster." - -#: ../inc/class-gitium-help.php:52 -msgid "" -"In this step you must select the branch you want to follow." -msgstr "" -"U ovom koraku morate odabrati ogranak koji želite da pratite. " - -#: ../inc/class-gitium-help.php:53 -msgid "Only this branch will have all of your code modifications." -msgstr "Samo će ovaj ogranak imati sve vaše modifikacije koda." - -#: ../inc/class-gitium-help.php:54 -msgid "" -"When you push the button Merge & Push, all code(plugins & " -"themes) will be pushed on the git repository." -msgstr "" -"Kad kliknete na taster Spoji & Potisni svi (plugin-ovi i teme) " -"koda biće potisnuti u git spremište." - -#: ../inc/class-gitium-help.php:64 -msgid "" -"On status page you can see what files are modified, and you can commit the " -"changes to git." -msgstr "" -"Na stranici statusa možete videti koje su datoteke izmenjene i možete uneti " -"izmene u git." - -#: ../inc/class-gitium-help.php:69 ../inc/class-gitium-submenu-commits.php:29 -#: ../inc/class-gitium-submenu-commits.php:41 -msgid "Commits" -msgstr "Izvršenja" - -#: ../inc/class-gitium-help.php:74 -msgid "" -"You may be wondering what is the difference between author and committer." -msgstr "Možda se pitate u čemu je razlika između autora i izvršioca?" - -#: ../inc/class-gitium-help.php:75 -msgid "" -"The author is the person who originally wrote the patch, " -"whereas the committer is the person who last applied the patch." -msgstr "" -"Autor je osoba koja je originalno napisala zakrpu, dok je " -"izvršilac osoba koja je poslednja primenila zakrpu." - -#: ../inc/class-gitium-help.php:76 -msgid "" -"So, if you send in a patch to a project and one of the core members applies " -"the patch, both of you get credit — you as the author and the core member as " -"the committer." -msgstr "" -"Dakle, ako pošaljete zakrpu projektu i jedan od ključnih članova je primeni " -"- oboje dobijate zasluge - vi kao autor, a ključni član kao izvršilac." - -#: ../inc/class-gitium-help.php:86 -msgid "Each line from the gitignore file specifies a pattern." -msgstr "Svaka linija iz gitignore datoteke označava šablon." - -#: ../inc/class-gitium-help.php:87 -msgid "" -"When deciding whether to ignore a path, Git normally checks gitignore " -"patterns from multiple sources, with the following order of precedence, from " -"highest to lowest (within one level of precedence, the last matching pattern " -"decides the outcome)" -msgstr "" -"Kad odlučujete o tome da li ćete ignorisati putanju, Git obično proverava " -"gitignore šablone iz višestrukih izvora, sa sledećim redosledom - od " -"najvišeg do najnižeg (u okviru jednog nivoa prednosti, poslednji šablon koji " -"se poklapa odlučuje o ishodu)." - -#: ../inc/class-gitium-help.php:88 -#, php-format -msgid "Read more on %s" -msgstr "Pročitajte više o %s" - -#: ../inc/class-gitium-submenu-commits.php:28 -msgid "Git Commits" -msgstr "Git izvršenja" - -#: ../inc/class-gitium-submenu-commits.php:61 -#, php-format -msgid "Last %s commits" -msgstr "Poslednja %s izvršenja" - -#: ../inc/class-gitium-submenu-commits.php:70 -#, php-format -msgid "committed %s ago" -msgstr "izvršena pre %s" - -#: ../inc/class-gitium-submenu-commits.php:82 -#, php-format -msgid "authored %s ago" -msgstr "autorizovana pre %s" diff --git a/wp-content/upgrade-temp-backup/plugins/gitium/languages/gitium.pot b/wp-content/upgrade-temp-backup/plugins/gitium/languages/gitium.pot deleted file mode 100644 index 807f7dae..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gitium/languages/gitium.pot +++ /dev/null @@ -1,489 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: Gitium\n" -"POT-Creation-Date: 2014-10-20 19:06+0200\n" -"PO-Revision-Date: 2014-10-20 19:06+0200\n" -"Last-Translator: Presslabs \n" -"Language-Team: Presslabs \n" -"Language: English\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.5.4\n" -"X-Poedit-KeywordsList: __;_e\n" -"X-Poedit-Basepath: .\n" -"X-Poedit-SourceCharset: UTF-8\n" -"X-Poedit-SearchPath-0: ..\n" - -#: ../inc/class-gitium-submenu-configure.php:34 -#: ../inc/class-gitium-submenu-configure.php:44 -msgid "Git Configuration" -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:45 -msgid "Configuration" -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:59 -msgid "Keypair successfully regenerated." -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:78 -msgid "Initial commit" -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:94 -msgid "Please specify a valid repo." -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:99 -msgid "Could not push to remote" -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:113 -msgid "Merged existing code from " -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:116 -msgid "Could not create initial commit -> " -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:120 -msgid "Could not merge the initial commit -> " -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:129 -msgid "Remote URL" -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:132 -msgid "" -"This URL provide access to a Git repository via SSH, HTTPS, or Subversion." -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:133 -msgid "" -"If you need to authenticate over \"https://\" instead of SSH use: " -"https://user:pass@github.com/user/example.git" -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:143 -msgid "Key pair" -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:147 -#: ../inc/class-gitium-submenu-settings.php:80 -msgid "Regenerate Key" -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:149 -#: ../inc/class-gitium-submenu-settings.php:81 -msgid "" -"If your code use ssh keybased authentication for git you need to allow write " -"access to your repository using this key." -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:150 -#: ../inc/class-gitium-submenu-settings.php:82 -msgid "" -"Checkout instructions for github or bitbucket." -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:160 -msgid "Warning!" -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:174 -#: ../inc/class-gitium-help.php:47 -msgid "Configuration step 1" -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:175 -#: ../inc/class-gitium-submenu-configure.php:194 -msgid "" -"If you need help to set this up, please click on the \"Help\" button from " -"the top right corner of this screen." -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:183 -msgid "Fetch" -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:193 -#: ../inc/class-gitium-help.php:52 -msgid "Configuration step 2" -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:202 -msgid "Choose tracking branch" -msgstr "" - -#: ../inc/class-gitium-submenu-configure.php:215 -msgid "Merge & Push" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:32 -#: ../inc/class-gitium-submenu-status.php:42 -msgid "Git Status" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:43 -#: ../inc/class-gitium-submenu-status.php:209 ../inc/class-gitium-help.php:59 -msgid "Status" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:53 -msgid "untracked" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:54 -msgid "modified on remote" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:55 -msgid "added to remote" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:56 -msgid "deleted from remote" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:57 -#: ../inc/class-gitium-submenu-status.php:61 -msgid "deleted from work tree" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:58 -msgid "updated in work tree" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:59 -#: ../inc/class-gitium-submenu-status.php:60 -msgid "added to work tree" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:73 -#, php-format -msgid "renamed from `%s`" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:88 -#: ../inc/class-gitium-submenu-settings.php:106 -msgid "The file `.gitignore` is saved!" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:90 -#: ../inc/class-gitium-submenu-settings.php:108 -msgid "The file `.gitignore` could not be saved!" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:100 -msgid "Could not enable the maintenance mode!" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:102 -#: ../inc/class-gitium-submenu-status.php:196 -#, php-format -msgid "Merged changes from %s on %s" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:109 -msgid "Could not commit!" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:114 -msgid "Merge failed: " -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:116 -#, php-format -msgid "Pushed commit: `%s`" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:125 -#, php-format -msgid "Following remote branch %s." -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:127 -msgid "Everything is up to date" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:130 -#, php-format -msgid "You are %s commits ahead and %s behind remote." -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:132 -#, php-format -msgid "You are %s commits ahead remote." -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:134 -#, php-format -msgid "You are %s commits behind remote." -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:160 -msgid "Add this file to the `.gitignore` list." -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:163 -msgid "Submodules are not supported in this version." -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:175 -#: ../inc/class-gitium-submenu-status.php:176 -msgid "Path" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:175 -#: ../inc/class-gitium-submenu-status.php:176 -msgid "Change" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:181 -msgid "Nothing to commit, working directory clean." -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:195 -msgid "Commit message" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:199 -msgid "Save changes" -msgstr "" - -#: ../inc/class-gitium-submenu-status.php:209 -msgid "connected to" -msgstr "" - -#: ../inc/class-gitium-submenu-settings.php:32 ../inc/class-gitium-help.php:81 -msgid "Settings" -msgstr "" - -#: ../inc/class-gitium-submenu-settings.php:46 -msgid "" -"Webhook URL regenerates. Please make sure you update any external references." -msgstr "" - -#: ../inc/class-gitium-submenu-settings.php:55 -msgid "Public key successfully regenerated." -msgstr "" - -#: ../inc/class-gitium-submenu-settings.php:61 -msgid "Webhook URL" -msgstr "" - -#: ../inc/class-gitium-submenu-settings.php:65 -msgid "Regenerate Webhook" -msgstr "" - -#: ../inc/class-gitium-submenu-settings.php:67 -msgid "Pinging this URL triggers an update from remote repository." -msgstr "" - -#: ../inc/class-gitium-submenu-settings.php:77 -msgid "Public Key" -msgstr "" - -#: ../inc/class-gitium-submenu-settings.php:116 -msgid "Gitium Settings" -msgstr "" - -#: ../inc/class-gitium-submenu-settings.php:121 -msgid "Be careful when you modify this list!" -msgstr "" - -#: ../inc/class-gitium-submenu-settings.php:126 -msgid "Save" -msgstr "" - -#: ../inc/class-gitium-help.php:26 -msgid "Gitium" -msgstr "" - -#: ../inc/class-gitium-help.php:27 -msgid "F.A.Q." -msgstr "" - -#: ../inc/class-gitium-help.php:32 -msgid "" -"Gitium enables continuous deployment for WordPress integrating with tools " -"such as Github, Bitbucket or Travis-CI. Plugin and theme updates, installs " -"and removals are automatically versioned." -msgstr "" - -#: ../inc/class-gitium-help.php:33 -msgid "" -"Ninja code edits from the WordPress editor are also tracked into version " -"control. Gitium is designed for sane development environments." -msgstr "" - -#: ../inc/class-gitium-help.php:34 -msgid "" -"Staging and production can follow different branches of the same repository. " -"You can deploy code simply trough git push." -msgstr "" - -#: ../inc/class-gitium-help.php:35 -msgid "" -"Gitium requires git command line tool minimum version 1.7 " -"installed on the server and proc_open PHP function enabled." -msgstr "" - -#: ../inc/class-gitium-help.php:39 -msgid "Is this plugin considered stable?" -msgstr "" - -#: ../inc/class-gitium-help.php:39 -msgid "" -"Right now this plugin is considered alpha quality and should be used in " -"production environments only by adventurous kinds." -msgstr "" - -#: ../inc/class-gitium-help.php:40 -msgid "What happens in case of conflicts?" -msgstr "" - -#: ../inc/class-gitium-help.php:40 -msgid "" -"The behavior in case of conflicts is to overwrite the changes on the origin " -"repository with the local changes (ie. local modifications take precedence " -"over remote ones)." -msgstr "" - -#: ../inc/class-gitium-help.php:41 -msgid "How to deploy automatically after a push?" -msgstr "" - -#: ../inc/class-gitium-help.php:41 -msgid "" -"You can ping the webhook url after a push to automatically deploy the new " -"code. The webhook url can be found under Code menu. This url plays well with " -"Github or Bitbucket webhooks." -msgstr "" - -#: ../inc/class-gitium-help.php:42 -msgid "Does it works on multi site setups?" -msgstr "" - -#: ../inc/class-gitium-help.php:42 -msgid "Gitium is not supporting multisite setups at the moment." -msgstr "" - -#: ../inc/class-gitium-help.php:43 -msgid "How does gitium handle submodules?" -msgstr "" - -#: ../inc/class-gitium-help.php:43 -msgid "Currently submodules are not supported." -msgstr "" - -#: ../inc/class-gitium-help.php:47 -msgid "" -"In this step you must specify the Remote URL. This URL " -"represents the link between the git sistem and your site." -msgstr "" - -#: ../inc/class-gitium-help.php:48 -msgid "You can get this URL from your Git repository and it looks like this:" -msgstr "" - -#: ../inc/class-gitium-help.php:49 -msgid "github.com -> git@github.com:user/example.git" -msgstr "" - -#: ../inc/class-gitium-help.php:50 -msgid "bitbucket.org -> git@bitbucket.org:user/glowing-happiness.git" -msgstr "" - -#: ../inc/class-gitium-help.php:51 -msgid "" -"To go to the next step, fill the Remote URL and then press the " -"Fetch button." -msgstr "" - -#: ../inc/class-gitium-help.php:52 -msgid "" -"In this step you must select the branch you want to follow." -msgstr "" - -#: ../inc/class-gitium-help.php:53 -msgid "Only this branch will have all of your code modifications." -msgstr "" - -#: ../inc/class-gitium-help.php:54 -msgid "" -"When you push the button Merge & Push, all code(plugins & " -"themes) will be pushed on the git repository." -msgstr "" - -#: ../inc/class-gitium-help.php:64 -msgid "" -"On status page you can see what files are modified, and you can commit the " -"changes to git." -msgstr "" - -#: ../inc/class-gitium-help.php:69 ../inc/class-gitium-submenu-commits.php:29 -#: ../inc/class-gitium-submenu-commits.php:41 -msgid "Commits" -msgstr "" - -#: ../inc/class-gitium-help.php:74 -msgid "" -"You may be wondering what is the difference between author and committer." -msgstr "" - -#: ../inc/class-gitium-help.php:75 -msgid "" -"The author is the person who originally wrote the patch, " -"whereas the committer is the person who last applied the patch." -msgstr "" - -#: ../inc/class-gitium-help.php:76 -msgid "" -"So, if you send in a patch to a project and one of the core members applies " -"the patch, both of you get credit — you as the author and the core member as " -"the committer." -msgstr "" - -#: ../inc/class-gitium-help.php:86 -msgid "Each line from the gitignore file specifies a pattern." -msgstr "" - -#: ../inc/class-gitium-help.php:87 -msgid "" -"When deciding whether to ignore a path, Git normally checks gitignore " -"patterns from multiple sources, with the following order of precedence, from " -"highest to lowest (within one level of precedence, the last matching pattern " -"decides the outcome)" -msgstr "" - -#: ../inc/class-gitium-help.php:88 -#, php-format -msgid "Read more on %s" -msgstr "" - -#: ../inc/class-gitium-submenu-commits.php:28 -msgid "Git Commits" -msgstr "" - -#: ../inc/class-gitium-submenu-commits.php:61 -#, php-format -msgid "Last %s commits" -msgstr "" - -#: ../inc/class-gitium-submenu-commits.php:70 -#, php-format -msgid "committed %s ago" -msgstr "" - -#: ../inc/class-gitium-submenu-commits.php:82 -#, php-format -msgid "authored %s ago" -msgstr "" diff --git a/wp-content/upgrade-temp-backup/plugins/gitium/readme.txt b/wp-content/upgrade-temp-backup/plugins/gitium/readme.txt deleted file mode 100644 index 27fa5c00..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gitium/readme.txt +++ /dev/null @@ -1,310 +0,0 @@ -=== Gitium === - -Contributors: PressLabs -Donate link: https://www.presslabs.com/gitium/ -Tags: git, version control, revision, gitium, presslabs -Requires at least: 4.7 -Tested up to: 6.8 -Requires PHP: 7.4 -License: GPLv3 -Stable tag: 1.2.1 -License URI: https://www.gnu.org/licenses/gpl-3.0.en.html - -Automatic git version control and deployment for your plugins and themes integrated into wp-admin. - -== About the makers == -This plugin was developed by the crafty people at Presslabs—the Smart Managed WordPress Hosting Platform. Here we bring high-performance hosting and business intelligence for WordPress sites. In our spare time, we contribute to the global open-source community with our code. - -We’ve built Gitium back in 2013 to provide our clients a more simple and error-free method to integrate a new git version control into their code management flow. - -== What is Gitium? == - -This plugin enables continuous deployment for WordPress, integrating with tools such as Github, Bitbucket or Travis-CI. Theme or plugin updates, installs and removals are all automatically versioned. Ninja code edits from the WordPress editor are also tracked by the version control system. - -== Why is Gitium? == - -Gitium is designed with responsible development environments in mind, allowing staging and production to follow different branches of the same repository. You can also deploy code by simply using git push. - -Gitium requires git command line tool with a minimum version of 1.7 installed on the server and the proc_open PHP function enabled. - -== Gitium features: == --preserves the WordPress behavior --accountability for code changes --safe code storage—gets all code edits in Git - -== Development == -For more details about Gitium, head here: http://docs.presslabs.com/gitium/usage/ - -== Receiving is nicer when giving == -We’ve built this to make our lives easier and we’re happy to do that for other developers, too. We’d really appreciate it if you could contribute with code, tests, documentation or just share your experience with Gitium. - -Development of Gitium happens at http://github.com/PressLabs/gitium -Issues are tracked at http://github.com/PressLabs/gitium/issues -This WordPress plugin can be found at https://wordpress.org/plugins/gitium/ - -== Screenshots == - -1. Setup step 1: Get SSH Key -2. Setup step 2: Set SSH Key (Github) -3. Setup step 3: Add remote repository -4. Setup step 4: Choose following branch -5. Commit local changes - - -== Installation == - -= Manual Installation = - -1. Go to your WordPress admin dashboard. -2. Navigate to 'Plugins' → 'Add New'. -3. Search for "Gitium". -4. Install and activate the Gitium plugin. - -= Usage = - -- Connect Your Repository -After activation, go to the Gitium settings in your WordPress admin area. -Copy the Public Key that Gitium has generated for you from the Key Pair field. -In your repository manager of choice (GitHub, GitLab, or Bitbucket), go to the settings page and find the “Deploy keys” (or similar) section. There you will need to add the Public Key you’ve copied from Gitium. This will grant Gitium access to your repository. Make sure to allow write access as well. Also make sure that you copy the entire key from gitium. -Now go back to your main repository page and copy the SSH URL to your repo. Paste this URL in Gitium and press the “Fetch” button. -A “Repository initialized successfully” message will show up. This means that your repository has been populated with the current code of your website and it is ready to start working with Gitium. - -- Initial Commit -Once connected, Gitium will automatically commit your existing WordPress theme and plugins to the connected repository. -This initial commit serves as the baseline for your site’s code. - -- Making Changes -Make changes to your WordPress site’s code (themes, plugins) as needed. -Gitium will automatically commit these changes to your Git repository. -Using the webhook provided by Gitium, it will also automatically deploy the changes from the repository to your WordPress site. - -- Webook Configuration -Gitium uses the webhook to automatically deploy remote changes to your server. To configure it follow these steps: - 1. Go to your WordPress website and go to your Gitium Settings page; - 2. Copy the full Webhook URL that Gitium provides; - 3. In your Git Manager settings, go to Webhook section, add a new webhook and paste the webhook URL you have copied from Gitium. - 4. Press Add, no settings changes needed. The webook simply needs a ping, nothing more. The security key is already embedded in the final URL Gitium has generated for you. - -Now when you push to your repo, this webhook will automatically pull the changes to your remote server and deploy them. - -You can see more details about the plugin also in our documentation here: https://www.presslabs.com/docs/code/gitium/install-gitium/ - -== Frequently Asked Questions == - -= Could not connect to remote repository? = - -If you encounter this kind of error you can try to fix it by setting the proper username of the .git directory. - -Example: chown -R www-data:www-data .git - -= Is this plugin considered stable? = - -Yes, we consider the plugin stable after extensive usage in production environments at Presslabs, with hundreds of users and powering sites with hundreds of millions of pageviews per month. - -= What will happen in case of conflicts? = - -The behavior in case of conflicts is to overwrite the changes on the `origin` repository with the local changes (ie. local modifications take precedence over remote ones). - -= How to deploy automatically after a push? = - -You can ping the webhook url after a push to automatically deploy the new code. The webhook url can be found under `Gitium` menu, `Settings` section. This url also plays well with Github or Bitbucket webhooks. - -= Does it works on multi site setups? = - -Gitium does not support multisite setups at the moment. - -= How does gitium handle submodules? = - -Submodules are currently not supported. - -= Where do I report security bugs found in this plugin? = - -Please report security bugs found in the source code of the Gitium plugin through the [Patchstack Vulnerability Disclosure Program](https://patchstack.com/database/vdp/gitium). The Patchstack team will assist you with verification, CVE assignment, and notify the developers of this plugin. - -== Upgrade Notice == -= 1.2.1 = -Tested up to WP 6.8 - -== Changelog == - -= 1.2.1 = -* Tested the compatibility of the plugin with WP 6.8 - -= 1.2.0 = -* Changed the license for all files to GPLv3 -* Fix: In some cases, the WP is configured in another folder. We've made some changes on how we check for the wp-load.php file - -= 1.1.0 = -* Fix: In some cases, the website was stuck in maintenance when it was pulling the changes from remote -* Added: A copy-to-clipboard button was introduced for copying ssh key-pair and webhook url - -= 1.0.7 = -* Fix: HOME env definition; -* Fix: deprecation warnings in PHP 8.1; -* Compat: added composer.json package; -* Compat: add the possibility to use a custom `.gitignore` by defining the `GITIGNORE` constant. - -= 1.0.6 = -* Fixed deprecation warnings for dynamic property in git-wrapper - -= 1.0.5 = -* Various bug fixes - -= 1.0.4 = -* PHP 8 compat. fixes - -= 1.0.3 = -* Fixed wrong redirection for multisite installations during initial setup - -= 1.0.2 = -* Full PHP 7+ compatibility -* Hotfix - Fixed the blank pages being displayed instead of success of failure messages; -* Hotfix - Fixed the push process when other remote branches had changes; -* Hotfix - Fixed the missing ssh / key handling with fatal errors during activation; -* Added - More success messages in certain cases. - -= 1.0.1 = -* Hotfix - Fix race condition on Code Editor Save - -= 1.0 = -* Fixed WP 4.9 Compatibility - -= 1.0-rc12 = -* Bumped plugin version - -= 1.0-rc11 = -* Hotfixed an error that prevented gitium to error_log properly. - -= 1.0-rc10 = -* Bumped wordpress tested version - -= 1.0-rc9 = -* PHP7 compat and wp-cli - -= 1.0-rc8 = -* Fix some indents -* Add some more tests -* Fix the submenu configure logic - -= 1.0-rc7 = -* Test remote url from git wrapper -* Remove the phpmd package from test environment -* Set WP_DEBUG to false on tests -* Refactoring -* Abort the cherry-pick - changes are already there -* Fix the race condition -* Add acquire and release logs for gitium lock -* Add explanations to merge with accept mine logic - -= 1.0-rc6 = -* Delete all transients and options on uninstall hook -* Add transients to is_versions and get_remote_tracking_branch functions -* Update the composer -* Check requirements before show the admin menu -* Put the logs off by default(on test env) -* Fix redirect issue and display errors -* Create wordpress docker env command -* PHP Warning: unlink #114 - -= 1.0-rc5 = -* Fix delete plugin/theme bug on 4.6 -* Update the readme file - -= 1.0-rc4 = -* Fix merge with accept mine behind commits bug - -= 1.0-rc3 = -* Add support for multisite -* Fix PHP error on merge & push - -= 1.0-rc2 = -* Change the default lockfile location -* Fix a PHP Warning - -= 1.0-rc1 = -* Update the logic of merge and push -* Add lock mechanism for fetch and merge -* Fix repo stuck on merge_local branch -* Tested up to 4.5.3 - -= 0.5.8-beta = -* Add documentation for 'Could not connect to remote repository?' -* Fix the update theme from Dashboard commit message & the install plugin commit message -* Fix install/delete plugin/theme commit message -* Add a test and rewrite the tests -* Tested up to 4.5.2 - -= 0.5.7-beta = -* Fix bug deleting plugins/themes causes wrong commit message -* Fix bug wrong commit message -* Fix bug updated function to stop maintenance mode hang -* Fix bug undefined variable 'new_versions' -* Add 'Merge changes' button for gitium webhook -* Add gitium documentation for docker -* Add more tests - -= 0.5.6-beta = -* Fix compatibility issues with wp-cli - -= 0.5.5-beta = -* Fix bug plugin deletion from plugins page did not trigger commit - -= 0.5.4-beta = -* Fix bug missing changes on similarly named plugins -* Add requirements notices -* Add requirements help section - -= 0.5.3-beta = -* Fix paths with spaces bug -* Add a Disconnect from repo button -* Fix POST var `path` conflicts -* Fix travis tests - -= 0.5.2-beta = -* Add Contextual Help to Configuration page -* Make the icon path relative -* The key file is deleted properly -* Update serbian translation -* Make the resource type more specific -* Fix Menu Bubble -* Remove useless param for get_transient -* Add Spanish Translation -* Rename `gitium_version` transient -* Fix git version notice -* Delete .vimrc -* Update .gitignore -* Fix syntax error -* Add better git version check -* Fix add_query_arg vulnerability - -= 0.5.1-beta = -* Update Serbian Translation (by [Ogi Djuraskovic](http://firstsiteguide.com/)) -* Fix Menu Bubble - -= 0.5-beta = -* Add `Last 20 Commits` menu page -* Add WordPress Contextual Help menu -* Add `Settings` menu page -* Move `Webhook URL` and `Public Key` fields to `Settings` page -* Add menu icon -* The `.gitignore` file can be edited -* Fix commit message on theme/plugin update event -* Refactoring - -= 0.4-beta = -* Add `Bitbucket` documentation link -* Add the action `gitium_before_merge_with_accept_mine` -* Moved to `travis-ci.org` -* Add new tests -* Added code climate coverage reporting -* Refactoring - -= 0.3.2-alpha = -* Fix plugin activation issues - -= 0.3.1-alpha = -* Fix issues with ssh repositories -* Fix maintemance mode when webhook fails - -= 0.3-alpha = -* First alpha release diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/css.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/css.php deleted file mode 100644 index e46eec65..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/css.php +++ /dev/null @@ -1,134 +0,0 @@ -_selector ) { - $this->add_selector_rules_to_output(); - } - - $this->_selector = $selector; - - return $this; - } - - /** - * Adds a css property with value to the css output - * - * @access public - * @since 1.0 - * - * @param string $property - the css property. - * @param string $value - the value to be placed with the property. - * @param string $url Whether we need to generate URL in the string. - * @return $this - */ - public function add_property( $property, $value, $url = '' ) { - // If we don't have a value or our value is the same as our og default, bail. - if ( empty( $value ) ) { - return false; - } - - // Set up our background image URL param if needed. - $url_start = ( '' !== $url ) ? "url('" : ""; // phpcs:ignore -- need double quotes. - $url_end = ( '' !== $url ) ? "')" : ""; // phpcs:ignore -- need double quotes. - - $this->_css .= $property . ':' . $url_start . $value . $url_end . ';'; - return $this; - } - - /** - * Adds the current selector rules to the output variable - * - * @access private - * @since 1.0 - * - * @return $this - */ - private function add_selector_rules_to_output() { - if ( ! empty( $this->_css ) ) { - $this->_selector_output = $this->_selector; - $selector_output = sprintf( '%1$s{%2$s}', $this->_selector_output, $this->_css ); - - $this->_output .= $selector_output; - - // Reset the css. - $this->_css = ''; - } - - return $this; - } - - /** - * Returns the minified css in the $_output variable - * - * @access public - * @since 1.0 - * - * @return string - */ - public function css_output() { - // Add current selector's rules to output. - $this->add_selector_rules_to_output(); - - // Output minified css. - return $this->_output; - } - - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/functions.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/functions.php deleted file mode 100644 index fb21ce01..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/functions.php +++ /dev/null @@ -1,1342 +0,0 @@ - '', - 'body_repeat' => '', - 'body_size' => '', - 'body_attachment' => '', - 'body_position' => '', - 'top_bar_image' => '', - 'top_bar_repeat' => '', - 'top_bar_size' => '', - 'top_bar_attachment' => '', - 'top_bar_position' => '', - 'header_image' => '', - 'header_repeat' => '', - 'header_size' => '', - 'header_attachment' => '', - 'header_position' => '', - 'nav_image' => '', - 'nav_repeat' => '', - 'nav_item_image' => '', - 'nav_item_repeat' => '', - 'nav_item_hover_image' => '', - 'nav_item_hover_repeat' => '', - 'nav_item_current_image' => '', - 'nav_item_current_repeat' => '', - 'sub_nav_image' => '', - 'sub_nav_repeat' => '', - 'sub_nav_item_image' => '', - 'sub_nav_item_repeat' => '', - 'sub_nav_item_hover_image' => '', - 'sub_nav_item_hover_repeat' => '', - 'sub_nav_item_current_image' => '', - 'sub_nav_item_current_repeat' => '', - 'content_image' => '', - 'content_repeat' => '', - 'content_size' => '', - 'content_attachment' => '', - 'content_position' => '', - 'sidebar_widget_image' => '', - 'sidebar_widget_repeat' => '', - 'sidebar_widget_size' => '', - 'sidebar_widget_attachment' => '', - 'sidebar_widget_position' => '', - 'footer_widget_image' => '', - 'footer_widget_repeat' => '', - 'footer_widget_size' => '', - 'footer_widget_attachment' => '', - 'footer_widget_position' => '', - 'footer_image' => '', - 'footer_repeat' => '', - 'footer_size' => '', - 'footer_attachment' => '', - 'footer_position' => '', - ); - - return apply_filters( 'generate_background_option_defaults', $generate_background_defaults ); - } -} - -if ( ! function_exists( 'generate_backgrounds_customize' ) ) { - add_action( 'customize_register', 'generate_backgrounds_customize', 999 ); - /** - * Build our Customizer options - * - * @since 0.1 - * - * @param object $wp_customize The Customizer object. - */ - function generate_backgrounds_customize( $wp_customize ) { - $defaults = generate_get_background_defaults(); - - require_once GP_LIBRARY_DIRECTORY . 'customizer-helpers.php'; - - if ( method_exists( $wp_customize, 'register_control_type' ) ) { - $wp_customize->register_control_type( 'GeneratePress_Background_Images_Customize_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Section_Shortcut_Control' ); - } - - if ( class_exists( 'WP_Customize_Panel' ) ) { - if ( ! $wp_customize->get_panel( 'generate_backgrounds_panel' ) ) { - $wp_customize->add_panel( - 'generate_backgrounds_panel', - array( - 'capability' => 'edit_theme_options', - 'theme_supports' => '', - 'title' => __( 'Background Images', 'gp-premium' ), - 'priority' => 55, - ) - ); - } - } - - $wp_customize->add_section( - 'backgrounds_section', - array( - 'title' => __( 'Background Images', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 50, - ) - ); - - $wp_customize->add_section( - 'generate_backgrounds_body', - array( - 'title' => __( 'Body', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 5, - 'panel' => 'generate_backgrounds_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_body_background_image_shortcuts', - array( - 'section' => 'generate_backgrounds_body', - 'element' => __( 'Body', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'generate_layout_container', - 'colors' => 'body_section', - 'typography' => 'font_section', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - /** - * Body background - */ - $wp_customize->add_setting( - 'generate_background_settings[body_image]', - array( - 'default' => $defaults['body_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_backgrounds-body-image', - array( - 'section' => 'generate_backgrounds_body', - 'settings' => 'generate_background_settings[body_image]', - 'label' => __( 'Body', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[body_repeat]', - array( - 'default' => $defaults['body_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[body_size]', - array( - 'default' => $defaults['body_size'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[body_attachment]', - array( - 'default' => $defaults['body_attachment'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[body_position]', - array( - 'default' => $defaults['body_position'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_html', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Background_Images_Customize_Control( - $wp_customize, - 'body_backgrounds_control', - array( - 'section' => 'generate_backgrounds_body', - 'settings' => array( - 'repeat' => 'generate_background_settings[body_repeat]', - 'size' => 'generate_background_settings[body_size]', - 'attachment' => 'generate_background_settings[body_attachment]', - 'position' => 'generate_background_settings[body_position]', - ), - ) - ) - ); - - /** - * Top bar background - */ - $wp_customize->add_section( - 'generate_backgrounds_top_bar', - array( - 'title' => __( 'Top Bar', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 5, - 'panel' => 'generate_backgrounds_panel', - 'active_callback' => 'generate_premium_is_top_bar_active', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[top_bar_image]', - array( - 'default' => $defaults['top_bar_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_background_settings[top_bar_image]', - array( - 'section' => 'generate_backgrounds_top_bar', - 'settings' => 'generate_background_settings[top_bar_image]', - 'label' => __( 'Top Bar', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[top_bar_repeat]', - array( - 'default' => $defaults['top_bar_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[top_bar_size]', - array( - 'default' => $defaults['top_bar_size'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[top_bar_attachment]', - array( - 'default' => $defaults['top_bar_attachment'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[top_bar_position]', - array( - 'default' => $defaults['top_bar_position'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_html', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Background_Images_Customize_Control( - $wp_customize, - 'top_bar_backgrounds_control', - array( - 'section' => 'generate_backgrounds_top_bar', - 'settings' => array( - 'repeat' => 'generate_background_settings[top_bar_repeat]', - 'size' => 'generate_background_settings[top_bar_size]', - 'attachment' => 'generate_background_settings[top_bar_attachment]', - 'position' => 'generate_background_settings[top_bar_position]', - ), - ) - ) - ); - - /** - * Header background - */ - $wp_customize->add_section( - 'generate_backgrounds_header', - array( - 'title' => __( 'Header', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 10, - 'panel' => 'generate_backgrounds_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_header_background_image_shortcuts', - array( - 'section' => 'generate_backgrounds_header', - 'element' => __( 'Header', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'generate_layout_header', - 'colors' => 'header_color_section', - 'typography' => 'font_header_section', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[header_image]', - array( - 'default' => $defaults['header_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_backgrounds-header-image', - array( - 'section' => 'generate_backgrounds_header', - 'settings' => 'generate_background_settings[header_image]', - 'label' => __( 'Header', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[header_repeat]', - array( - 'default' => $defaults['header_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[header_size]', - array( - 'default' => $defaults['header_size'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[header_attachment]', - array( - 'default' => $defaults['header_attachment'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[header_position]', - array( - 'default' => $defaults['header_position'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_html', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Background_Images_Customize_Control( - $wp_customize, - 'header_backgrounds_control', - array( - 'section' => 'generate_backgrounds_header', - 'settings' => array( - 'repeat' => 'generate_background_settings[header_repeat]', - 'size' => 'generate_background_settings[header_size]', - 'attachment' => 'generate_background_settings[header_attachment]', - 'position' => 'generate_background_settings[header_position]', - ), - ) - ) - ); - - $wp_customize->add_section( - 'generate_backgrounds_navigation', - array( - 'title' => __( 'Primary Navigation', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 15, - 'panel' => 'generate_backgrounds_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_primary_navigation_background_image_shortcuts', - array( - 'section' => 'generate_backgrounds_navigation', - 'element' => __( 'Primary Navigation', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'generate_layout_navigation', - 'colors' => 'navigation_color_section', - 'typography' => 'font_navigation_section', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - /** - * Navigation background - */ - $wp_customize->add_setting( - 'generate_background_settings[nav_image]', - array( - 'default' => $defaults['nav_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_background_settings[nav_image]', - array( - 'section' => 'generate_backgrounds_navigation', - 'settings' => 'generate_background_settings[nav_image]', - 'priority' => 750, - 'label' => __( 'Navigation', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[nav_repeat]', - array( - 'default' => $defaults['nav_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_control( - 'generate_background_settings[nav_repeat]', - array( - 'type' => 'select', - 'section' => 'generate_backgrounds_navigation', - 'choices' => array( - '' => __( 'Repeat', 'gp-premium' ), - 'repeat-x' => __( 'Repeat x', 'gp-premium' ), - 'repeat-y' => __( 'Repeat y', 'gp-premium' ), - 'no-repeat' => __( 'No Repeat', 'gp-premium' ), - ), - 'settings' => 'generate_background_settings[nav_repeat]', - 'priority' => 800, - ) - ); - - /** - * Navigation item background - */ - $wp_customize->add_setting( - 'generate_background_settings[nav_item_image]', - array( - 'default' => $defaults['nav_item_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_backgrounds-nav-item-image', - array( - 'section' => 'generate_backgrounds_navigation', - 'settings' => 'generate_background_settings[nav_item_image]', - 'priority' => 950, - 'label' => __( 'Navigation Item', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[nav_item_repeat]', - array( - 'default' => $defaults['nav_item_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_control( - 'generate_background_settings[nav_item_repeat]', - array( - 'type' => 'select', - 'section' => 'generate_backgrounds_navigation', - 'choices' => array( - '' => __( 'Repeat', 'gp-premium' ), - 'repeat-x' => __( 'Repeat x', 'gp-premium' ), - 'repeat-y' => __( 'Repeat y', 'gp-premium' ), - 'no-repeat' => __( 'No Repeat', 'gp-premium' ), - ), - 'settings' => 'generate_background_settings[nav_item_repeat]', - 'priority' => 1000, - ) - ); - - /** - * Navigation item hover background - */ - $wp_customize->add_setting( - 'generate_background_settings[nav_item_hover_image]', - array( - 'default' => $defaults['nav_item_hover_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_backgrounds-nav-item-hover-image', - array( - 'section' => 'generate_backgrounds_navigation', - 'settings' => 'generate_background_settings[nav_item_hover_image]', - 'priority' => 1150, - 'label' => __( 'Navigation Item Hover', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[nav_item_hover_repeat]', - array( - 'default' => $defaults['nav_item_hover_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_control( - 'generate_background_settings[nav_item_hover_repeat]', - array( - 'type' => 'select', - 'section' => 'generate_backgrounds_navigation', - 'choices' => array( - '' => __( 'Repeat', 'gp-premium' ), - 'repeat-x' => __( 'Repeat x', 'gp-premium' ), - 'repeat-y' => __( 'Repeat y', 'gp-premium' ), - 'no-repeat' => __( 'No Repeat', 'gp-premium' ), - ), - 'settings' => 'generate_background_settings[nav_item_hover_repeat]', - 'priority' => 1200, - ) - ); - - /** - * Navigation item current background - */ - $wp_customize->add_setting( - 'generate_background_settings[nav_item_current_image]', - array( - 'default' => $defaults['nav_item_current_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_backgrounds-nav-item-current-image', - array( - 'section' => 'generate_backgrounds_navigation', - 'settings' => 'generate_background_settings[nav_item_current_image]', - 'priority' => 1350, - 'label' => __( 'Navigation Item Current', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[nav_item_current_repeat]', - array( - 'default' => $defaults['nav_item_current_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_control( - 'generate_background_settings[nav_item_current_repeat]', - array( - 'type' => 'select', - 'section' => 'generate_backgrounds_navigation', - 'choices' => array( - '' => __( 'Repeat', 'gp-premium' ), - 'repeat-x' => __( 'Repeat x', 'gp-premium' ), - 'repeat-y' => __( 'Repeat y', 'gp-premium' ), - 'no-repeat' => __( 'No Repeat', 'gp-premium' ), - ), - 'settings' => 'generate_background_settings[nav_item_current_repeat]', - 'priority' => 1400, - ) - ); - - $wp_customize->add_section( - 'generate_backgrounds_subnavigation', - array( - 'title' => __( 'Primary Sub-Navigation', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 20, - 'panel' => 'generate_backgrounds_panel', - ) - ); - - /** - * Sub-Navigation item background - */ - $wp_customize->add_setting( - 'generate_background_settings[sub_nav_item_image]', - array( - 'default' => $defaults['sub_nav_item_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_background_settings[sub_nav_item_image]', - array( - 'section' => 'generate_backgrounds_subnavigation', - 'settings' => 'generate_background_settings[sub_nav_item_image]', - 'priority' => 1700, - 'label' => __( 'Sub-Navigation Item', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[sub_nav_item_repeat]', - array( - 'default' => $defaults['sub_nav_item_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_control( - 'generate_background_settings[sub_nav_item_repeat]', - array( - 'type' => 'select', - 'section' => 'generate_backgrounds_subnavigation', - 'choices' => array( - '' => __( 'Repeat', 'gp-premium' ), - 'repeat-x' => __( 'Repeat x', 'gp-premium' ), - 'repeat-y' => __( 'Repeat y', 'gp-premium' ), - 'no-repeat' => __( 'No Repeat', 'gp-premium' ), - ), - 'settings' => 'generate_background_settings[sub_nav_item_repeat]', - 'priority' => 1800, - ) - ); - - /** - * Sub-Navigation item hover background - */ - $wp_customize->add_setting( - 'generate_background_settings[sub_nav_item_hover_image]', - array( - 'default' => $defaults['sub_nav_item_hover_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_background_settings[sub_nav_item_hover_image]', - array( - 'section' => 'generate_backgrounds_subnavigation', - 'settings' => 'generate_background_settings[sub_nav_item_hover_image]', - 'priority' => 2000, - 'label' => __( 'Sub-Navigation Item Hover', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[sub_nav_item_hover_repeat]', - array( - 'default' => $defaults['sub_nav_item_hover_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_control( - 'generate_background_settings[sub_nav_item_hover_repeat]', - array( - 'type' => 'select', - 'section' => 'generate_backgrounds_subnavigation', - 'choices' => array( - '' => __( 'Repeat', 'gp-premium' ), - 'repeat-x' => __( 'Repeat x', 'gp-premium' ), - 'repeat-y' => __( 'Repeat y', 'gp-premium' ), - 'no-repeat' => __( 'No Repeat', 'gp-premium' ), - ), - 'settings' => 'generate_background_settings[sub_nav_item_hover_repeat]', - 'priority' => 2100, - ) - ); - - /** - * Sub-Navigation item current background - */ - $wp_customize->add_setting( - 'generate_background_settings[sub_nav_item_current_image]', - array( - 'default' => $defaults['sub_nav_item_current_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_background_settings[sub_nav_item_current_image]', - array( - 'section' => 'generate_backgrounds_subnavigation', - 'settings' => 'generate_background_settings[sub_nav_item_current_image]', - 'priority' => 2300, - 'label' => __( 'Sub-Navigation Item Current', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[sub_nav_item_current_repeat]', - array( - 'default' => $defaults['sub_nav_item_current_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_control( - 'generate_background_settings[sub_nav_item_current_repeat]', - array( - 'type' => 'select', - 'section' => 'generate_backgrounds_subnavigation', - 'choices' => array( - '' => __( 'Repeat', 'gp-premium' ), - 'repeat-x' => __( 'Repeat x', 'gp-premium' ), - 'repeat-y' => __( 'Repeat y', 'gp-premium' ), - 'no-repeat' => __( 'No Repeat', 'gp-premium' ), - ), - 'settings' => 'generate_background_settings[sub_nav_item_current_repeat]', - 'priority' => 2400, - ) - ); - - $wp_customize->add_section( - 'generate_backgrounds_content', - array( - 'title' => __( 'Content', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 25, - 'panel' => 'generate_backgrounds_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_content_background_image_shortcuts', - array( - 'section' => 'generate_backgrounds_content', - 'element' => __( 'Content', 'gp-premium' ), - 'shortcuts' => array( - 'colors' => 'content_color_section', - 'typography' => 'font_section', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - /** - * Content background - */ - $wp_customize->add_setting( - 'generate_background_settings[content_image]', - array( - 'default' => $defaults['content_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_background_settings[content_image]', - array( - 'section' => 'generate_backgrounds_content', - 'settings' => 'generate_background_settings[content_image]', - 'label' => __( 'Content', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[content_repeat]', - array( - 'default' => $defaults['content_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[content_size]', - array( - 'default' => $defaults['content_size'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[content_attachment]', - array( - 'default' => $defaults['content_attachment'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[content_position]', - array( - 'default' => $defaults['content_position'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_html', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Background_Images_Customize_Control( - $wp_customize, - 'content_backgrounds_control', - array( - 'section' => 'generate_backgrounds_content', - 'settings' => array( - 'repeat' => 'generate_background_settings[content_repeat]', - 'size' => 'generate_background_settings[content_size]', - 'attachment' => 'generate_background_settings[content_attachment]', - 'position' => 'generate_background_settings[content_position]', - ), - ) - ) - ); - - $wp_customize->add_section( - 'generate_backgrounds_sidebars', - array( - 'title' => __( 'Sidebar', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 25, - 'panel' => 'generate_backgrounds_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_sidebar_background_image_shortcuts', - array( - 'section' => 'generate_backgrounds_sidebars', - 'element' => __( 'Sidebar', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'generate_layout_sidebars', - 'colors' => 'sidebar_widget_color_section', - 'typography' => 'font_widget_section', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[sidebar_widget_image]', - array( - 'default' => $defaults['sidebar_widget_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_background_settings[sidebar_widget_image]', - array( - 'section' => 'generate_backgrounds_sidebars', - 'settings' => 'generate_background_settings[sidebar_widget_image]', - 'label' => __( 'Sidebar Widgets', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[sidebar_widget_repeat]', - array( - 'default' => $defaults['sidebar_widget_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[sidebar_widget_size]', - array( - 'default' => $defaults['sidebar_widget_size'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[sidebar_widget_attachment]', - array( - 'default' => $defaults['sidebar_widget_attachment'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[sidebar_widget_position]', - array( - 'default' => $defaults['sidebar_widget_position'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_html', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Background_Images_Customize_Control( - $wp_customize, - 'sidebar_backgrounds_control', - array( - 'section' => 'generate_backgrounds_sidebars', - 'settings' => array( - 'repeat' => 'generate_background_settings[sidebar_widget_repeat]', - 'size' => 'generate_background_settings[sidebar_widget_size]', - 'attachment' => 'generate_background_settings[sidebar_widget_attachment]', - 'position' => 'generate_background_settings[sidebar_widget_position]', - ), - ) - ) - ); - - $wp_customize->add_section( - 'generate_backgrounds_footer', - array( - 'title' => __( 'Footer', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 30, - 'panel' => 'generate_backgrounds_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_footer_background_image_shortcuts', - array( - 'section' => 'generate_backgrounds_footer', - 'element' => __( 'Footer', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'generate_layout_footer', - 'colors' => 'footer_color_section', - 'typography' => 'font_footer_section', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[footer_widget_image]', - array( - 'default' => $defaults['footer_widget_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_background_settings[footer_widget_image]', - array( - 'section' => 'generate_backgrounds_footer', - 'settings' => 'generate_background_settings[footer_widget_image]', - 'label' => __( 'Footer Widget Area', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[footer_widget_repeat]', - array( - 'default' => $defaults['footer_widget_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[footer_widget_size]', - array( - 'default' => $defaults['footer_widget_size'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[footer_widget_attachment]', - array( - 'default' => $defaults['footer_widget_attachment'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[footer_widget_position]', - array( - 'default' => $defaults['footer_widget_position'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_html', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Background_Images_Customize_Control( - $wp_customize, - 'footer_widgets_backgrounds_control', - array( - 'section' => 'generate_backgrounds_footer', - 'settings' => array( - 'repeat' => 'generate_background_settings[footer_widget_repeat]', - 'size' => 'generate_background_settings[footer_widget_size]', - 'attachment' => 'generate_background_settings[footer_widget_attachment]', - 'position' => 'generate_background_settings[footer_widget_position]', - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[footer_image]', - array( - 'default' => $defaults['footer_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_backgrounds-footer-image', - array( - 'section' => 'generate_backgrounds_footer', - 'settings' => 'generate_background_settings[footer_image]', - 'label' => __( 'Footer Area', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[footer_repeat]', - array( - 'default' => $defaults['footer_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[footer_size]', - array( - 'default' => $defaults['footer_size'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[footer_attachment]', - array( - 'default' => $defaults['footer_attachment'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - ) - ); - - $wp_customize->add_setting( - 'generate_background_settings[footer_position]', - array( - 'default' => $defaults['footer_position'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_html', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Background_Images_Customize_Control( - $wp_customize, - 'footer_backgrounds_control', - array( - 'section' => 'generate_backgrounds_footer', - 'settings' => array( - 'repeat' => 'generate_background_settings[footer_repeat]', - 'size' => 'generate_background_settings[footer_size]', - 'attachment' => 'generate_background_settings[footer_attachment]', - 'position' => 'generate_background_settings[footer_position]', - ), - ) - ) - ); - } -} - -if ( ! function_exists( 'generate_backgrounds_css' ) ) { - /** - * Generate the CSS in the section using the Theme Customizer - * - * @since 0.1 - */ - function generate_backgrounds_css() { - $generate_settings = wp_parse_args( - get_option( 'generate_background_settings', array() ), - generate_get_background_defaults() - ); - - // Fix size values. - // Spaces and % are stripped by sanitize_key. - $generate_settings['body_size'] = ( '100' == $generate_settings['body_size'] ) ? '100% auto' : esc_attr( $generate_settings['body_size'] ); // phpcs:ignore -- Non-strict comparison ok. - $generate_settings['top_bar_size'] = ( '100' == $generate_settings['top_bar_size'] ) ? '100% auto' : esc_attr( $generate_settings['top_bar_size'] ); // phpcs:ignore -- Non-strict comparison ok. - $generate_settings['header_size'] = ( '100' == $generate_settings['header_size'] ) ? '100% auto' : esc_attr( $generate_settings['header_size'] ); // phpcs:ignore -- Non-strict comparison ok. - $generate_settings['content_size'] = ( '100' == $generate_settings['content_size'] ) ? '100% auto' : esc_attr( $generate_settings['content_size'] ); // phpcs:ignore -- Non-strict comparison ok. - $generate_settings['sidebar_widget_size'] = ( '100' == $generate_settings['sidebar_widget_size'] ) ? '100% auto' : esc_attr( $generate_settings['sidebar_widget_size'] ); // phpcs:ignore -- Non-strict comparison ok. - $generate_settings['footer_widget_size'] = ( '100' == $generate_settings['footer_widget_size'] ) ? '100% auto' : esc_attr( $generate_settings['footer_widget_size'] ); // phpcs:ignore -- Non-strict comparison ok. - $generate_settings['footer_size'] = ( '100' == $generate_settings['footer_size'] ) ? '100% auto' : esc_attr( $generate_settings['footer_size'] ); // phpcs:ignore -- Non-strict comparison ok. - - $css = new GeneratePress_Backgrounds_CSS(); - - $css->set_selector( 'body' ); - $css->add_property( 'background-image', esc_url( $generate_settings['body_image'] ), 'url' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['body_repeat'] ) ); - $css->add_property( 'background-size', esc_attr( $generate_settings['body_size'] ) ); - $css->add_property( 'background-attachment', esc_attr( $generate_settings['body_attachment'] ) ); - $css->add_property( 'background-position', esc_attr( $generate_settings['body_position'] ) ); - - if ( is_active_sidebar( 'top-bar' ) ) { - $css->set_selector( '.top-bar' ); - $css->add_property( 'background-image', esc_url( $generate_settings['top_bar_image'] ), 'url' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['top_bar_repeat'] ) ); - $css->add_property( 'background-size', esc_attr( $generate_settings['top_bar_size'] ) ); - $css->add_property( 'background-attachment', esc_attr( $generate_settings['top_bar_attachment'] ) ); - $css->add_property( 'background-position', esc_attr( $generate_settings['top_bar_position'] ) ); - } - - $css->set_selector( '.site-header' ); - $css->add_property( 'background-image', esc_url( $generate_settings['header_image'] ), 'url' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['header_repeat'] ) ); - $css->add_property( 'background-size', esc_attr( $generate_settings['header_size'] ) ); - $css->add_property( 'background-attachment', esc_attr( $generate_settings['header_attachment'] ) ); - $css->add_property( 'background-position', esc_attr( $generate_settings['header_position'] ) ); - - $css->set_selector( '.main-navigation, .main-navigation .menu-toggle' ); - $css->add_property( 'background-image', esc_url( $generate_settings['nav_image'] ), 'url' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['nav_repeat'] ) ); - - $css->set_selector( '.main-navigation .main-nav > ul > li > a' ); - $css->add_property( 'background-image', esc_url( $generate_settings['nav_item_image'] ), 'url' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['nav_item_repeat'] ) ); - - $css->set_selector( '.main-navigation .main-nav > ul > li > a:hover,.main-navigation .main-nav > ul > li.sfHover > a' ); - $css->add_property( 'background-image', esc_url( $generate_settings['nav_item_hover_image'] ), 'url' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['nav_item_hover_repeat'] ) ); - - $css->set_selector( '.main-navigation .main-nav > ul > li[class*="current-menu-"] > a,.main-navigation .main-nav > ul > li[class*="current-menu-"] > a:hover,.main-navigation .main-nav > ul > li[class*="current-menu-"].sfHover > a' ); - $css->add_property( 'background-image', esc_url( $generate_settings['nav_item_current_image'] ), 'url' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['nav_item_current_repeat'] ) ); - - $css->set_selector( '.main-navigation ul ul li a' ); - $css->add_property( 'background-image', esc_url( $generate_settings['sub_nav_item_image'] ), 'url' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['sub_nav_item_repeat'] ) ); - - $css->set_selector( '.main-navigation ul ul li > a:hover,.main-navigation ul ul li.sfHover > a' ); - $css->add_property( 'background-image', esc_url( $generate_settings['sub_nav_item_hover_image'] ), 'url' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['sub_nav_item_hover_repeat'] ) ); - - $css->set_selector( '.main-navigation ul ul li[class*="current-menu-"] > a,.main-navigation ul ul li[class*="current-menu-"] > a:hover,.main-navigation ul ul li[class*="current-menu-"].sfHover > a' ); - $css->add_property( 'background-image', esc_url( $generate_settings['sub_nav_item_current_image'] ), 'url' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['sub_nav_item_current_repeat'] ) ); - - $css->set_selector( '.separate-containers .inside-article,.separate-containers .comments-area,.separate-containers .page-header,.one-container .container,.separate-containers .paging-navigation,.separate-containers .inside-page-header' ); - $css->add_property( 'background-image', esc_url( $generate_settings['content_image'] ), 'url' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['content_repeat'] ) ); - $css->add_property( 'background-size', esc_attr( $generate_settings['content_size'] ) ); - $css->add_property( 'background-attachment', esc_attr( $generate_settings['content_attachment'] ) ); - $css->add_property( 'background-position', esc_attr( $generate_settings['content_position'] ) ); - - $css->set_selector( '.sidebar .widget' ); - $css->add_property( 'background-image', esc_url( $generate_settings['sidebar_widget_image'] ), 'url' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['sidebar_widget_repeat'] ) ); - $css->add_property( 'background-size', esc_attr( $generate_settings['sidebar_widget_size'] ) ); - $css->add_property( 'background-attachment', esc_attr( $generate_settings['sidebar_widget_attachment'] ) ); - $css->add_property( 'background-position', esc_attr( $generate_settings['sidebar_widget_position'] ) ); - - $css->set_selector( '.footer-widgets' ); - $css->add_property( 'background-image', esc_url( $generate_settings['footer_widget_image'] ), 'url' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['footer_widget_repeat'] ) ); - $css->add_property( 'background-size', esc_attr( $generate_settings['footer_widget_size'] ) ); - $css->add_property( 'background-attachment', esc_attr( $generate_settings['footer_widget_attachment'] ) ); - $css->add_property( 'background-position', esc_attr( $generate_settings['footer_widget_position'] ) ); - - $css->set_selector( '.site-info' ); - $css->add_property( 'background-image', esc_url( $generate_settings['footer_image'] ), 'url' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['footer_repeat'] ) ); - $css->add_property( 'background-size', esc_attr( $generate_settings['footer_size'] ) ); - $css->add_property( 'background-attachment', esc_attr( $generate_settings['footer_attachment'] ) ); - $css->add_property( 'background-position', esc_attr( $generate_settings['footer_position'] ) ); - - return apply_filters( 'generate_backgrounds_css_output', $css->css_output() ); - } -} - -if ( ! function_exists( 'generate_background_scripts' ) ) { - add_action( 'wp_enqueue_scripts', 'generate_background_scripts', 70 ); - /** - * Enqueue scripts and styles. - * - * @since 0.1 - */ - function generate_background_scripts() { - if ( 'inline' === generate_get_css_print_method() ) { - wp_add_inline_style( 'generate-style', generate_backgrounds_css() ); - } - } -} - -add_filter( 'generate_external_dynamic_css_output', 'generate_backgrounds_add_external_css' ); -/** - * Add to external stylesheet. - * - * @since 1.11.0 - * - * @param string $css Existing CSS. - */ -function generate_backgrounds_add_external_css( $css ) { - if ( 'inline' === generate_get_css_print_method() ) { - return $css; - } - - $css .= generate_backgrounds_css(); - - return $css; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/secondary-nav-backgrounds.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/secondary-nav-backgrounds.php deleted file mode 100644 index fdc17f1d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/functions/secondary-nav-backgrounds.php +++ /dev/null @@ -1,420 +0,0 @@ -get_section( 'secondary_nav_section' ) ) { - return; - } - - $defaults = generate_secondary_nav_get_defaults(); - - if ( method_exists( $wp_customize, 'register_control_type' ) ) { - $wp_customize->register_control_type( 'GeneratePress_Section_Shortcut_Control' ); - } - - require_once GP_LIBRARY_DIRECTORY . 'customizer-helpers.php'; - - $wp_customize->add_section( - 'secondary_bg_images_section', - array( - 'title' => __( 'Secondary Navigation', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'description' => '', - 'panel' => 'generate_backgrounds_panel', - 'priority' => 21, - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_secondary_navigation_background_image_shortcuts', - array( - 'section' => 'secondary_bg_images_section', - 'element' => __( 'Secondary Navigation', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'secondary_nav_section', - 'colors' => 'secondary_navigation_color_section', - 'typography' => 'secondary_font_section', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[nav_image]', - array( - 'default' => $defaults['nav_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_secondary_backgrounds-nav-image', - array( - 'section' => 'secondary_bg_images_section', - 'settings' => 'generate_secondary_nav_settings[nav_image]', - 'priority' => 750, - 'label' => __( 'Navigation', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[nav_repeat]', - array( - 'default' => $defaults['nav_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_secondary_nav_settings[nav_repeat]', - array( - 'type' => 'select', - 'section' => 'secondary_bg_images_section', - 'choices' => array( - '' => __( 'Repeat', 'gp-premium' ), - 'repeat-x' => __( 'Repeat x', 'gp-premium' ), - 'repeat-y' => __( 'Repeat y', 'gp-premium' ), - 'no-repeat' => __( 'No Repeat', 'gp-premium' ), - ), - 'settings' => 'generate_secondary_nav_settings[nav_repeat]', - 'priority' => 800, - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[nav_item_image]', - array( - 'default' => $defaults['nav_item_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_secondary_backgrounds-nav-item-image', - array( - 'section' => 'secondary_bg_images_section', - 'settings' => 'generate_secondary_nav_settings[nav_item_image]', - 'priority' => 950, - 'label' => __( 'Navigation Item', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[nav_item_repeat]', - array( - 'default' => $defaults['nav_item_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_secondary_nav_settings[nav_item_repeat]', - array( - 'type' => 'select', - 'section' => 'secondary_bg_images_section', - 'choices' => array( - '' => __( 'Repeat', 'gp-premium' ), - 'repeat-x' => __( 'Repeat x', 'gp-premium' ), - 'repeat-y' => __( 'Repeat y', 'gp-premium' ), - 'no-repeat' => __( 'No Repeat', 'gp-premium' ), - ), - 'settings' => 'generate_secondary_nav_settings[nav_item_repeat]', - 'priority' => 1000, - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[nav_item_hover_image]', - array( - 'default' => $defaults['nav_item_hover_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_secondary_backgrounds-nav-item-hover-image', - array( - 'section' => 'secondary_bg_images_section', - 'settings' => 'generate_secondary_nav_settings[nav_item_hover_image]', - 'priority' => 1150, - 'label' => __( 'Navigation Item Hover', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[nav_item_hover_repeat]', - array( - 'default' => $defaults['nav_item_hover_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_secondary_nav_settings[nav_item_hover_repeat]', - array( - 'type' => 'select', - 'section' => 'secondary_bg_images_section', - 'choices' => array( - '' => __( 'Repeat', 'gp-premium' ), - 'repeat-x' => __( 'Repeat x', 'gp-premium' ), - 'repeat-y' => __( 'Repeat y', 'gp-premium' ), - 'no-repeat' => __( 'No Repeat', 'gp-premium' ), - ), - 'settings' => 'generate_secondary_nav_settings[nav_item_hover_repeat]', - 'priority' => 1200, - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[nav_item_current_image]', - array( - 'default' => $defaults['nav_item_current_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_secondary_backgrounds-nav-item-current-image', - array( - 'section' => 'secondary_bg_images_section', - 'settings' => 'generate_secondary_nav_settings[nav_item_current_image]', - 'priority' => 1350, - 'label' => __( 'Navigation Item Current', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[nav_item_current_repeat]', - array( - 'default' => $defaults['nav_item_current_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_secondary_nav_settings[nav_item_current_repeat]', - array( - 'type' => 'select', - 'section' => 'secondary_bg_images_section', - 'choices' => array( - '' => __( 'Repeat', 'gp-premium' ), - 'repeat-x' => __( 'Repeat x', 'gp-premium' ), - 'repeat-y' => __( 'Repeat y', 'gp-premium' ), - 'no-repeat' => __( 'No Repeat', 'gp-premium' ), - ), - 'settings' => 'generate_secondary_nav_settings[nav_item_current_repeat]', - 'priority' => 1400, - ) - ); - - $wp_customize->add_section( - 'secondary_subnav_bg_images_section', - array( - 'title' => __( 'Secondary Sub-Navigation', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'description' => '', - 'panel' => 'generate_backgrounds_panel', - 'priority' => 22, - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[sub_nav_item_image]', - array( - 'default' => $defaults['sub_nav_item_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_secondary_backgrounds-sub-nav-item-image', - array( - 'section' => 'secondary_subnav_bg_images_section', - 'settings' => 'generate_secondary_nav_settings[sub_nav_item_image]', - 'priority' => 1700, - 'label' => __( 'Sub-Navigation Item', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[sub_nav_item_repeat]', - array( - 'default' => $defaults['sub_nav_item_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_secondary_nav_settings[sub_nav_item_repeat]', - array( - 'type' => 'select', - 'section' => 'secondary_subnav_bg_images_section', - 'choices' => array( - '' => __( 'Repeat', 'gp-premium' ), - 'repeat-x' => __( 'Repeat x', 'gp-premium' ), - 'repeat-y' => __( 'Repeat y', 'gp-premium' ), - 'no-repeat' => __( 'No Repeat', 'gp-premium' ), - ), - 'settings' => 'generate_secondary_nav_settings[sub_nav_item_repeat]', - 'priority' => 1800, - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[sub_nav_item_hover_image]', - array( - 'default' => $defaults['sub_nav_item_hover_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_secondary_backgrounds-sub-nav-item-hover-image', - array( - 'section' => 'secondary_subnav_bg_images_section', - 'settings' => 'generate_secondary_nav_settings[sub_nav_item_hover_image]', - 'priority' => 2000, - 'label' => __( 'Sub-Navigation Item Hover', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[sub_nav_item_hover_repeat]', - array( - 'default' => $defaults['sub_nav_item_hover_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_secondary_nav_settings[sub_nav_item_hover_repeat]', - array( - 'type' => 'select', - 'section' => 'secondary_subnav_bg_images_section', - 'choices' => array( - '' => __( 'Repeat', 'gp-premium' ), - 'repeat-x' => __( 'Repeat x', 'gp-premium' ), - 'repeat-y' => __( 'Repeat y', 'gp-premium' ), - 'no-repeat' => __( 'No Repeat', 'gp-premium' ), - ), - 'settings' => 'generate_secondary_nav_settings[sub_nav_item_hover_repeat]', - 'priority' => 2100, - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[sub_nav_item_current_image]', - array( - 'default' => $defaults['sub_nav_item_current_image'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'esc_url_raw', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Image_Control( - $wp_customize, - 'generate_secondary_backgrounds-sub-nav-item-current-image', - array( - 'section' => 'secondary_subnav_bg_images_section', - 'settings' => 'generate_secondary_nav_settings[sub_nav_item_current_image]', - 'priority' => 2300, - 'label' => __( 'Sub-Navigation Item Current', 'gp-premium' ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[sub_nav_item_current_repeat]', - array( - 'default' => $defaults['sub_nav_item_current_repeat'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_secondary_nav_settings[sub_nav_item_current_repeat]', - array( - 'type' => 'select', - 'section' => 'secondary_subnav_bg_images_section', - 'choices' => array( - '' => __( 'Repeat', 'gp-premium' ), - 'repeat-x' => __( 'Repeat x', 'gp-premium' ), - 'repeat-y' => __( 'Repeat y', 'gp-premium' ), - 'no-repeat' => __( 'No Repeat', 'gp-premium' ), - ), - 'settings' => 'generate_secondary_nav_settings[sub_nav_item_current_repeat]', - 'priority' => 2400, - ) - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/generate-backgrounds.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/generate-backgrounds.php deleted file mode 100644 index d9cd1055..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/backgrounds/generate-backgrounds.php +++ /dev/null @@ -1,19 +0,0 @@ -post_count ) { - $columns = false; - } - } - - // Return the result. - return apply_filters( 'generate_blog_columns', $columns ); - } -} - -if ( ! function_exists( 'generate_blog_get_masonry' ) ) { - /** - * Check if masonry is enabled. - * This function is a mess with strings as bools etc.. Will re-write in a big upate to get lots of testing. - */ - function generate_blog_get_masonry() { - $generate_blog_settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - // If masonry is enabled via option or filter, enable it. - // phpcs:ignore -- non-strict comparison allowed. - if ( $generate_blog_settings['masonry'] || 'true' == apply_filters( 'generate_blog_masonry', 'false' ) ) { - $masonry = 'true'; - } else { - $masonry = 'false'; - } - - // Allow masonry to be turned off using a boolean. - if ( false === apply_filters( 'generate_blog_masonry', 'false' ) ) { - $masonry = 'false'; - } - - return $masonry; - } -} - -if ( ! function_exists( 'generate_blog_add_columns_container' ) ) { - add_action( 'generate_before_main_content', 'generate_blog_add_columns_container' ); - /** - * Add columns container - * - * @since 1.0 - */ - function generate_blog_add_columns_container() { - if ( ! generate_blog_get_columns() ) { - return; - } - - $columns = generate_blog_get_column_count(); - - printf( - '
    %2$s', - 'false' !== generate_blog_get_masonry() ? 'masonry-container are-images-unloaded' : '', - 'false' !== generate_blog_get_masonry() ? '
    ' : '' // phpcs:ignore -- no escaping needed. - ); - } -} - -if ( ! function_exists( 'generate_blog_add_ending_columns_container' ) ) { - add_action( 'generate_after_main_content', 'generate_blog_add_ending_columns_container' ); - /** - * Add closing columns container - * - * @since 1.0 - */ - function generate_blog_add_ending_columns_container() { - if ( ! generate_blog_get_columns() ) { - return; - } - - echo '
    '; - } -} - -if ( ! function_exists( 'generate_blog_columns_css' ) ) { - /** - * Add inline CSS - */ - function generate_blog_columns_css() { - $generate_blog_settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - if ( function_exists( 'generate_spacing_get_defaults' ) ) { - $spacing_settings = wp_parse_args( - get_option( 'generate_spacing_settings', array() ), - generate_spacing_get_defaults() - ); - } - - $separator = ( function_exists( 'generate_spacing_get_defaults' ) ) ? absint( $spacing_settings['separator'] ) : 20; - - $return = ''; - if ( generate_blog_get_columns() ) { - $return .= '.generate-columns {margin-bottom: ' . $separator . 'px;padding-left: ' . $separator . 'px;}'; - $return .= '.generate-columns-container {margin-left: -' . $separator . 'px;}'; - $return .= '.page-header {margin-bottom: ' . $separator . 'px;margin-left: ' . $separator . 'px}'; - $return .= '.generate-columns-container > .paging-navigation {margin-left: ' . $separator . 'px;}'; - } - - return $return; - } -} - -if ( ! function_exists( 'generate_blog_get_column_count' ) ) { - /** - * Get our column grid class - */ - function generate_blog_get_column_count() { - $generate_blog_settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - $count = $generate_blog_settings['columns']; - - return apply_filters( 'generate_blog_get_column_count', $count ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/columns.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/columns.css deleted file mode 100644 index 1066ab1f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/columns.css +++ /dev/null @@ -1,149 +0,0 @@ -.masonry-enabled .page-header { - position: relative !important; -} - -.separate-containers .site-main > .generate-columns-container { - margin-bottom: 0; -} - -.masonry-container.are-images-unloaded, -.load-more.are-images-unloaded, -.masonry-enabled #nav-below { - opacity: 0; -} - -/* columns */ -.generate-columns-container:not(.masonry-container) { - display: flex; - flex-wrap: wrap; - align-items: stretch; -} - -.generate-columns .inside-article { - height: 100%; - box-sizing: border-box; -} - -.generate-columns-activated.post-image-aligned-left .generate-columns-container article:not(.featured-column) .post-image, -.generate-columns-activated.post-image-aligned-right .generate-columns-container article:not(.featured-column) .post-image { - float: none; - text-align: center; - margin-left: 0; - margin-right: 0; -} - -.generate-columns-container .paging-navigation, -.generate-columns-container .page-header { - flex: 1 1 100%; - clear: both; -} - -.generate-columns-container .paging-navigation { - margin-bottom: 0; -} - -.load-more:not(.has-svg-icon) .button.loading:before { - content: "\e900"; - display: inline-block; - font-family: "GP Premium"; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - animation: spin 2s infinite linear; - margin-right: 7px; -} - -.load-more .button:not(.loading) .gp-icon { - display: none; -} - -.load-more .gp-icon svg { - animation: spin 2s infinite linear; - margin-right: 7px; -} - -@keyframes spin { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } -} - -.generate-columns { - box-sizing: border-box; -} - -.generate-columns.grid-20, -.grid-sizer.grid-20 { - width: 20%; -} - -.generate-columns.grid-25, -.grid-sizer.grid-25 { - width: 25%; -} - -.generate-columns.grid-33, -.grid-sizer.grid-33 { - width: 33.3333%; -} - -.generate-columns.grid-50, -.grid-sizer.grid-50 { - width: 50%; -} - -.generate-columns.grid-60, -.grid-sizer.grid-60 { - width: 60%; -} - -.generate-columns.grid-66, -.grid-sizer.grid-66 { - width: 66.66667%; -} - -.generate-columns.grid-100, -.grid-sizer.grid-100 { - width: 100%; -} - -@media (min-width: 768px) and (max-width: 1024px) { - .generate-columns.tablet-grid-50, - .grid-sizer.tablet-grid-50 { - width: 50%; - } -} - -@media (max-width: 767px) { - .generate-columns-activated .generate-columns-container { - margin-left: 0; - margin-right: 0; - } - .generate-columns-container > *, - .generate-columns-container .generate-columns { - padding-left: 0; - } - .generate-columns-container .page-header { - margin-left: 0; - } - .generate-columns.mobile-grid-100, - .grid-sizer.mobile-grid-100 { - width: 100%; - } - .generate-columns-container > .paging-navigation { - margin-left: 0; - } -} - -@media (max-width: 768px) { - .load-more { - display: block; - text-align: center; - margin-bottom: 0; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/columns.min.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/columns.min.css deleted file mode 100644 index 3814f76b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/columns.min.css +++ /dev/null @@ -1 +0,0 @@ -.masonry-enabled .page-header{position:relative!important}.separate-containers .site-main>.generate-columns-container{margin-bottom:0}.load-more.are-images-unloaded,.masonry-container.are-images-unloaded,.masonry-enabled #nav-below{opacity:0}.generate-columns-container:not(.masonry-container){display:flex;flex-wrap:wrap;align-items:stretch}.generate-columns .inside-article{height:100%;box-sizing:border-box}.generate-columns-activated.post-image-aligned-left .generate-columns-container article:not(.featured-column) .post-image,.generate-columns-activated.post-image-aligned-right .generate-columns-container article:not(.featured-column) .post-image{float:none;text-align:center;margin-left:0;margin-right:0}.generate-columns-container .page-header,.generate-columns-container .paging-navigation{flex:1 1 100%;clear:both}.generate-columns-container .paging-navigation{margin-bottom:0}.load-more:not(.has-svg-icon) .button.loading:before{content:"\e900";display:inline-block;font-family:"GP Premium";font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;animation:spin 2s infinite linear;margin-right:7px}.load-more .button:not(.loading) .gp-icon{display:none}.load-more .gp-icon svg{animation:spin 2s infinite linear;margin-right:7px}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.generate-columns{box-sizing:border-box}.generate-columns.grid-20,.grid-sizer.grid-20{width:20%}.generate-columns.grid-25,.grid-sizer.grid-25{width:25%}.generate-columns.grid-33,.grid-sizer.grid-33{width:33.3333%}.generate-columns.grid-50,.grid-sizer.grid-50{width:50%}.generate-columns.grid-60,.grid-sizer.grid-60{width:60%}.generate-columns.grid-66,.grid-sizer.grid-66{width:66.66667%}.generate-columns.grid-100,.grid-sizer.grid-100{width:100%}@media (min-width:768px) and (max-width:1024px){.generate-columns.tablet-grid-50,.grid-sizer.tablet-grid-50{width:50%}}@media (max-width:767px){.generate-columns-activated .generate-columns-container{margin-left:0;margin-right:0}.generate-columns-container .generate-columns,.generate-columns-container>*{padding-left:0}.generate-columns-container .page-header{margin-left:0}.generate-columns.mobile-grid-100,.grid-sizer.mobile-grid-100{width:100%}.generate-columns-container>.paging-navigation{margin-left:0}}@media (max-width:768px){.load-more{display:block;text-align:center;margin-bottom:0}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/featured-images.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/featured-images.css deleted file mode 100644 index c3efa57f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/featured-images.css +++ /dev/null @@ -1,104 +0,0 @@ -.post-image-above-header .inside-article .post-image, -.post-image-above-header .inside-article .featured-image { - margin-top: 0; - margin-bottom: 2em; -} - -.post-image-aligned-left .inside-article .post-image, -.post-image-aligned-left .inside-article .featured-image { - margin-top: 0; - margin-right: 2em; - float: left; - text-align: left; -} - -.post-image-aligned-center .post-image, -.post-image-aligned-center .featured-image { - text-align: center; -} - -.post-image-aligned-right .inside-article .post-image, -.post-image-aligned-right .inside-article .featured-image { - margin-top: 0; - margin-left: 2em; - float: right; - text-align: right; -} - -.post-image-below-header.post-image-aligned-right .inside-article .post-image, -.post-image-below-header.post-image-aligned-right .inside-article .featured-image, -.post-image-below-header.post-image-aligned-center .inside-article .featured-image, -.post-image-below-header.post-image-aligned-left .inside-article .post-image, -.post-image-below-header.post-image-aligned-left .inside-article .featured-image { - margin-top: 2em; -} - -.post-image-aligned-left > .featured-image, -.post-image-aligned-right > .featured-image { - float: none; - margin-left: auto; - margin-right: auto; -} - -.post-image-aligned-left .featured-image { - text-align: left; -} - -.post-image-aligned-right .featured-image { - text-align: right; -} - -.post-image-aligned-left .inside-article:before, -.post-image-aligned-left .inside-article:after, -.post-image-aligned-right .inside-article:before, -.post-image-aligned-right .inside-article:after { - content: ""; - display: table; -} - -.post-image-aligned-left .inside-article:after, -.post-image-aligned-right .inside-article:after { - clear: both; -} - -.one-container.post-image-above-header .page-header + .no-featured-image-padding .inside-article .post-image, -.one-container.post-image-above-header .no-featured-image-padding.generate-columns .inside-article .post-image { - margin-top: 0; -} - -.one-container.right-sidebar.post-image-aligned-center .no-featured-image-padding .post-image, -.one-container.right-sidebar.post-image-aligned-center .no-featured-image-padding .featured-image, -.one-container.both-right.post-image-aligned-center .no-featured-image-padding .post-image, -.one-container.both-right.post-image-aligned-center .no-featured-image-padding .featured-image { - margin-right: 0; -} - -.one-container.left-sidebar.post-image-aligned-center .no-featured-image-padding .post-image, -.one-container.left-sidebar.post-image-aligned-center .no-featured-image-padding .featured-image, -.one-container.both-left.post-image-aligned-center .no-featured-image-padding .post-image, -.one-container.both-left.post-image-aligned-center .no-featured-image-padding .featured-image { - margin-left: 0; -} - -.one-container.both-sidebars.post-image-aligned-center .no-featured-image-padding .post-image, -.one-container.both-sidebars.post-image-aligned-center .no-featured-image-padding .featured-image { - margin-left: 0; - margin-right: 0; -} - -.one-container.post-image-aligned-center .no-featured-image-padding.generate-columns .post-image, -.one-container.post-image-aligned-center .no-featured-image-padding.generate-columns .featured-image { - margin-left: 0; - margin-right: 0; -} - -@media (max-width: 768px) { - body:not(.post-image-aligned-center) .inside-article .post-image, - body:not(.post-image-aligned-center) .featured-image, - body:not(.post-image-aligned-center) .inside-article .featured-image { - margin-right: 0; - margin-left: 0; - float: none; - text-align: center; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/featured-images.min.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/featured-images.min.css deleted file mode 100644 index ba2493d8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/featured-images.min.css +++ /dev/null @@ -1 +0,0 @@ -.post-image-above-header .inside-article .featured-image,.post-image-above-header .inside-article .post-image{margin-top:0;margin-bottom:2em}.post-image-aligned-left .inside-article .featured-image,.post-image-aligned-left .inside-article .post-image{margin-top:0;margin-right:2em;float:left;text-align:left}.post-image-aligned-center .featured-image,.post-image-aligned-center .post-image{text-align:center}.post-image-aligned-right .inside-article .featured-image,.post-image-aligned-right .inside-article .post-image{margin-top:0;margin-left:2em;float:right;text-align:right}.post-image-below-header.post-image-aligned-center .inside-article .featured-image,.post-image-below-header.post-image-aligned-left .inside-article .featured-image,.post-image-below-header.post-image-aligned-left .inside-article .post-image,.post-image-below-header.post-image-aligned-right .inside-article .featured-image,.post-image-below-header.post-image-aligned-right .inside-article .post-image{margin-top:2em}.post-image-aligned-left>.featured-image,.post-image-aligned-right>.featured-image{float:none;margin-left:auto;margin-right:auto}.post-image-aligned-left .featured-image{text-align:left}.post-image-aligned-right .featured-image{text-align:right}.post-image-aligned-left .inside-article:after,.post-image-aligned-left .inside-article:before,.post-image-aligned-right .inside-article:after,.post-image-aligned-right .inside-article:before{content:"";display:table}.post-image-aligned-left .inside-article:after,.post-image-aligned-right .inside-article:after{clear:both}.one-container.post-image-above-header .no-featured-image-padding.generate-columns .inside-article .post-image,.one-container.post-image-above-header .page-header+.no-featured-image-padding .inside-article .post-image{margin-top:0}.one-container.both-right.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.both-right.post-image-aligned-center .no-featured-image-padding .post-image,.one-container.right-sidebar.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.right-sidebar.post-image-aligned-center .no-featured-image-padding .post-image{margin-right:0}.one-container.both-left.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.both-left.post-image-aligned-center .no-featured-image-padding .post-image,.one-container.left-sidebar.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.left-sidebar.post-image-aligned-center .no-featured-image-padding .post-image{margin-left:0}.one-container.both-sidebars.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.both-sidebars.post-image-aligned-center .no-featured-image-padding .post-image{margin-left:0;margin-right:0}.one-container.post-image-aligned-center .no-featured-image-padding.generate-columns .featured-image,.one-container.post-image-aligned-center .no-featured-image-padding.generate-columns .post-image{margin-left:0;margin-right:0}@media (max-width:768px){body:not(.post-image-aligned-center) .featured-image,body:not(.post-image-aligned-center) .inside-article .featured-image,body:not(.post-image-aligned-center) .inside-article .post-image{margin-right:0;margin-left:0;float:none;text-align:center}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/style.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/style.css deleted file mode 100644 index e79ddd50..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/style.css +++ /dev/null @@ -1,254 +0,0 @@ -.post-image-above-header .inside-article .post-image, -.post-image-above-header .inside-article .featured-image { - margin-top: 0; - margin-bottom: 2em; -} - -.post-image-aligned-left .inside-article .post-image, -.post-image-aligned-left .inside-article .featured-image { - margin-top: 0; - margin-right: 2em; - float: left; - text-align: left; -} - -.post-image-aligned-center .post-image, -.post-image-aligned-center .featured-image { - text-align: center; -} - -.post-image-aligned-right .inside-article .post-image, -.post-image-aligned-right .inside-article .featured-image { - margin-top: 0; - margin-left: 2em; - float: right; - text-align: right; -} - -.post-image-below-header.post-image-aligned-right .inside-article .post-image, -.post-image-below-header.post-image-aligned-right .inside-article .featured-image, -.post-image-below-header.post-image-aligned-center .inside-article .featured-image, -.post-image-below-header.post-image-aligned-left .inside-article .post-image, -.post-image-below-header.post-image-aligned-left .inside-article .featured-image { - margin-top: 2em; -} - -.post-image-aligned-left > .featured-image, -.post-image-aligned-right > .featured-image { - float: none; - margin-left: auto; - margin-right: auto; -} - -.post-image-aligned-left .featured-image { - text-align: left; -} - -.post-image-aligned-right .featured-image { - text-align: right; -} - -.post-image-aligned-left .inside-article:before, -.post-image-aligned-left .inside-article:after, -.post-image-aligned-right .inside-article:before, -.post-image-aligned-right .inside-article:after { - content: ""; - display: table; -} - -.post-image-aligned-left .inside-article:after, -.post-image-aligned-right .inside-article:after { - clear: both; -} - -.one-container.post-image-above-header .page-header + .no-featured-image-padding .inside-article .post-image, -.one-container.post-image-above-header .no-featured-image-padding.generate-columns .inside-article .post-image { - margin-top: 0; -} - -.one-container.right-sidebar.post-image-aligned-center .no-featured-image-padding .post-image, -.one-container.right-sidebar.post-image-aligned-center .no-featured-image-padding .featured-image, -.one-container.both-right.post-image-aligned-center .no-featured-image-padding .post-image, -.one-container.both-right.post-image-aligned-center .no-featured-image-padding .featured-image { - margin-right: 0; -} - -.one-container.left-sidebar.post-image-aligned-center .no-featured-image-padding .post-image, -.one-container.left-sidebar.post-image-aligned-center .no-featured-image-padding .featured-image, -.one-container.both-left.post-image-aligned-center .no-featured-image-padding .post-image, -.one-container.both-left.post-image-aligned-center .no-featured-image-padding .featured-image { - margin-left: 0; -} - -.one-container.both-sidebars.post-image-aligned-center .no-featured-image-padding .post-image, -.one-container.both-sidebars.post-image-aligned-center .no-featured-image-padding .featured-image { - margin-left: 0; - margin-right: 0; -} - -.one-container.post-image-aligned-center .no-featured-image-padding.generate-columns .post-image, -.one-container.post-image-aligned-center .no-featured-image-padding.generate-columns .featured-image { - margin-left: 0; - margin-right: 0; -} - -@media (max-width: 768px) { - body:not(.post-image-aligned-center) .inside-article .post-image, - body:not(.post-image-aligned-center) .featured-image, - body:not(.post-image-aligned-center) .inside-article .featured-image { - margin-right: 0; - margin-left: 0; - float: none; - text-align: center; - } -} - -.masonry-enabled .page-header { - position: relative !important; -} - -.separate-containers .site-main > .generate-columns-container { - margin-bottom: 0; -} - -.masonry-container.are-images-unloaded, -.load-more.are-images-unloaded, -.masonry-enabled #nav-below { - opacity: 0; -} - -/* columns */ -.generate-columns-container:not(.masonry-container) { - display: flex; - flex-wrap: wrap; - align-items: stretch; -} - -.generate-columns .inside-article { - height: 100%; - box-sizing: border-box; -} - -.generate-columns-activated.post-image-aligned-left .generate-columns-container article:not(.featured-column) .post-image, -.generate-columns-activated.post-image-aligned-right .generate-columns-container article:not(.featured-column) .post-image { - float: none; - text-align: center; - margin-left: 0; - margin-right: 0; -} - -.generate-columns-container .paging-navigation, -.generate-columns-container .page-header { - flex: 1 1 100%; - clear: both; -} - -.generate-columns-container .paging-navigation { - margin-bottom: 0; -} - -.load-more:not(.has-svg-icon) .button.loading:before { - content: "\e900"; - display: inline-block; - font-family: "GP Premium"; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - animation: spin 2s infinite linear; - margin-right: 7px; -} - -.load-more .button:not(.loading) .gp-icon { - display: none; -} - -.load-more .gp-icon svg { - animation: spin 2s infinite linear; - margin-right: 7px; -} - -@keyframes spin { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } -} - -.generate-columns { - box-sizing: border-box; -} - -.generate-columns.grid-20, -.grid-sizer.grid-20 { - width: 20%; -} - -.generate-columns.grid-25, -.grid-sizer.grid-25 { - width: 25%; -} - -.generate-columns.grid-33, -.grid-sizer.grid-33 { - width: 33.3333%; -} - -.generate-columns.grid-50, -.grid-sizer.grid-50 { - width: 50%; -} - -.generate-columns.grid-60, -.grid-sizer.grid-60 { - width: 60%; -} - -.generate-columns.grid-66, -.grid-sizer.grid-66 { - width: 66.66667%; -} - -.generate-columns.grid-100, -.grid-sizer.grid-100 { - width: 100%; -} - -@media (min-width: 768px) and (max-width: 1024px) { - .generate-columns.tablet-grid-50, - .grid-sizer.tablet-grid-50 { - width: 50%; - } -} - -@media (max-width: 767px) { - .generate-columns-activated .generate-columns-container { - margin-left: 0; - margin-right: 0; - } - .generate-columns-container > *, - .generate-columns-container .generate-columns { - padding-left: 0; - } - .generate-columns-container .page-header { - margin-left: 0; - } - .generate-columns.mobile-grid-100, - .grid-sizer.mobile-grid-100 { - width: 100%; - } - .generate-columns-container > .paging-navigation { - margin-left: 0; - } -} - -@media (max-width: 768px) { - .load-more { - display: block; - text-align: center; - margin-bottom: 0; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/style.min.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/style.min.css deleted file mode 100644 index 6f877184..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/css/style.min.css +++ /dev/null @@ -1 +0,0 @@ -.post-image-above-header .inside-article .featured-image,.post-image-above-header .inside-article .post-image{margin-top:0;margin-bottom:2em}.post-image-aligned-left .inside-article .featured-image,.post-image-aligned-left .inside-article .post-image{margin-top:0;margin-right:2em;float:left;text-align:left}.post-image-aligned-center .featured-image,.post-image-aligned-center .post-image{text-align:center}.post-image-aligned-right .inside-article .featured-image,.post-image-aligned-right .inside-article .post-image{margin-top:0;margin-left:2em;float:right;text-align:right}.post-image-below-header.post-image-aligned-center .inside-article .featured-image,.post-image-below-header.post-image-aligned-left .inside-article .featured-image,.post-image-below-header.post-image-aligned-left .inside-article .post-image,.post-image-below-header.post-image-aligned-right .inside-article .featured-image,.post-image-below-header.post-image-aligned-right .inside-article .post-image{margin-top:2em}.post-image-aligned-left>.featured-image,.post-image-aligned-right>.featured-image{float:none;margin-left:auto;margin-right:auto}.post-image-aligned-left .featured-image{text-align:left}.post-image-aligned-right .featured-image{text-align:right}.post-image-aligned-left .inside-article:after,.post-image-aligned-left .inside-article:before,.post-image-aligned-right .inside-article:after,.post-image-aligned-right .inside-article:before{content:"";display:table}.post-image-aligned-left .inside-article:after,.post-image-aligned-right .inside-article:after{clear:both}.one-container.post-image-above-header .no-featured-image-padding.generate-columns .inside-article .post-image,.one-container.post-image-above-header .page-header+.no-featured-image-padding .inside-article .post-image{margin-top:0}.one-container.both-right.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.both-right.post-image-aligned-center .no-featured-image-padding .post-image,.one-container.right-sidebar.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.right-sidebar.post-image-aligned-center .no-featured-image-padding .post-image{margin-right:0}.one-container.both-left.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.both-left.post-image-aligned-center .no-featured-image-padding .post-image,.one-container.left-sidebar.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.left-sidebar.post-image-aligned-center .no-featured-image-padding .post-image{margin-left:0}.one-container.both-sidebars.post-image-aligned-center .no-featured-image-padding .featured-image,.one-container.both-sidebars.post-image-aligned-center .no-featured-image-padding .post-image{margin-left:0;margin-right:0}.one-container.post-image-aligned-center .no-featured-image-padding.generate-columns .featured-image,.one-container.post-image-aligned-center .no-featured-image-padding.generate-columns .post-image{margin-left:0;margin-right:0}@media (max-width:768px){body:not(.post-image-aligned-center) .featured-image,body:not(.post-image-aligned-center) .inside-article .featured-image,body:not(.post-image-aligned-center) .inside-article .post-image{margin-right:0;margin-left:0;float:none;text-align:center}}.masonry-enabled .page-header{position:relative!important}.separate-containers .site-main>.generate-columns-container{margin-bottom:0}.load-more.are-images-unloaded,.masonry-container.are-images-unloaded,.masonry-enabled #nav-below{opacity:0}.generate-columns-container:not(.masonry-container){display:flex;flex-wrap:wrap;align-items:stretch}.generate-columns .inside-article{height:100%;box-sizing:border-box}.generate-columns-activated.post-image-aligned-left .generate-columns-container article:not(.featured-column) .post-image,.generate-columns-activated.post-image-aligned-right .generate-columns-container article:not(.featured-column) .post-image{float:none;text-align:center;margin-left:0;margin-right:0}.generate-columns-container .page-header,.generate-columns-container .paging-navigation{flex:1 1 100%;clear:both}.generate-columns-container .paging-navigation{margin-bottom:0}.load-more:not(.has-svg-icon) .button.loading:before{content:"\e900";display:inline-block;font-family:"GP Premium";font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;animation:spin 2s infinite linear;margin-right:7px}.load-more .button:not(.loading) .gp-icon{display:none}.load-more .gp-icon svg{animation:spin 2s infinite linear;margin-right:7px}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.generate-columns{box-sizing:border-box}.generate-columns.grid-20,.grid-sizer.grid-20{width:20%}.generate-columns.grid-25,.grid-sizer.grid-25{width:25%}.generate-columns.grid-33,.grid-sizer.grid-33{width:33.3333%}.generate-columns.grid-50,.grid-sizer.grid-50{width:50%}.generate-columns.grid-60,.grid-sizer.grid-60{width:60%}.generate-columns.grid-66,.grid-sizer.grid-66{width:66.66667%}.generate-columns.grid-100,.grid-sizer.grid-100{width:100%}@media (min-width:768px) and (max-width:1024px){.generate-columns.tablet-grid-50,.grid-sizer.tablet-grid-50{width:50%}}@media (max-width:767px){.generate-columns-activated .generate-columns-container{margin-left:0;margin-right:0}.generate-columns-container .generate-columns,.generate-columns-container>*{padding-left:0}.generate-columns-container .page-header{margin-left:0}.generate-columns.mobile-grid-100,.grid-sizer.mobile-grid-100{width:100%}.generate-columns-container>.paging-navigation{margin-left:0}}@media (max-width:768px){.load-more{display:block;text-align:center;margin-bottom:0}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/customizer.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/customizer.php deleted file mode 100644 index 2c018ea8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/customizer.php +++ /dev/null @@ -1,1181 +0,0 @@ -register_control_type( 'GeneratePress_Title_Customize_Control' ); - } - - // Remove our blog control from the free theme. - if ( $wp_customize->get_control( 'blog_content_control' ) ) { - $wp_customize->remove_control( 'blog_content_control' ); - } - - // Register our custom controls. - if ( method_exists( $wp_customize, 'register_control_type' ) ) { - $wp_customize->register_control_type( 'GeneratePress_Refresh_Button_Customize_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Information_Customize_Control' ); - $wp_customize->register_control_type( 'Generate_Control_Toggle_Customize_Control' ); - } - - $wp_customize->add_section( - 'generate_blog_loop_template_section', - array( - 'title' => __( 'Blog', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'panel' => 'generate_layout_panel', - 'priority' => 40, - 'active_callback' => function() { - return generate_has_active_element( 'loop-template', true ); - }, - ) - ); - - $wp_customize->add_control( - new GeneratePress_Information_Customize_Control( - $wp_customize, - 'generate_using_loop_template', - array( - 'section' => 'generate_blog_loop_template_section', - 'description' => sprintf( - /* translators: URL to the Elements dashboard. */ - __( 'This page is using a Loop Template Element. Other options can be found within that Element.', 'gp-premium' ), - admin_url( 'edit.php?post_type=gp_elements' ) - ), - 'notice' => true, - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'active_callback' => function() { - return generate_has_active_element( 'loop-template', true ); - }, - 'priority' => 0, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_blog_settings[excerpt_length]', array( - 'default' => $defaults['excerpt_length'], - 'capability' => 'edit_theme_options', - 'type' => 'option', - 'sanitize_callback' => 'absint', - ) - ); - - $wp_customize->add_control( - 'generate_loop_template_excerpt_length', - array( - 'type' => 'number', - 'label' => __( 'Excerpt word count', 'gp-premium' ), - 'section' => 'generate_blog_loop_template_section', - 'settings' => 'generate_blog_settings[excerpt_length]', - ) - ); - - $wp_customize->add_setting( - 'generate_blog_settings[read_more]', - array( - 'default' => $defaults['read_more'], - 'capability' => 'edit_theme_options', - 'type' => 'option', - 'sanitize_callback' => 'wp_kses_post', - ) - ); - - $wp_customize->add_control( - 'generate_loop_template_read_more', - array( - 'type' => 'text', - 'label' => __( 'Read more label', 'gp-premium' ), - 'section' => 'generate_blog_loop_template_section', - 'settings' => 'generate_blog_settings[read_more]', - ) - ); - - // Blog content section. - $wp_customize->add_section( - 'generate_blog_section', - array( - 'title' => __( 'Blog', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'panel' => 'generate_layout_panel', - 'priority' => 40, - 'active_callback' => function() { - return ! generate_has_active_element( 'loop-template', true ); - }, - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_blog_archives_title', - array( - 'section' => 'generate_blog_section', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Content', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_control( - new Generate_Control_Toggle_Customize_Control( - $wp_customize, - 'generate_post_meta_toggle', - array( - 'section' => 'generate_blog_section', - 'targets' => array( - 'post-meta-archives' => __( 'Archives', 'gp-premium' ), - 'post-meta-single' => __( 'Single', 'gp-premium' ), - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_control( - 'generate_settings[post_content]', - array( - 'type' => 'select', - 'label' => __( 'Content type', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'choices' => array( - 'full' => __( 'Full Content', 'gp-premium' ), - 'excerpt' => __( 'Excerpt', 'gp-premium' ), - ), - 'settings' => 'generate_settings[post_content]', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[excerpt_length]', array( - 'type' => 'number', - 'label' => __( 'Excerpt word count', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[excerpt_length]', - 'active_callback' => 'generate_premium_is_excerpt', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[read_more]', array( - 'type' => 'text', - 'label' => __( 'Read more label', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[read_more]', - ) - ); - - $wp_customize->add_setting( - 'generate_blog_settings[read_more_button]', - array( - 'default' => $defaults['read_more_button'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[read_more_button]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display read more as button', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[read_more_button]', - ) - ); - - // Post date - $wp_customize->add_setting( - 'generate_blog_settings[date]', - array( - 'default' => $defaults['date'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[date]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display post date', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[date]', - ) - ); - - // Post author - $wp_customize->add_setting( - 'generate_blog_settings[author]', - array( - 'default' => $defaults['author'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[author]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display post author', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[author]', - ) - ); - - // Category links - $wp_customize->add_setting( - 'generate_blog_settings[categories]', - array( - 'default' => $defaults['categories'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[categories]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display post categories', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[categories]', - ) - ); - - // Tag links - $wp_customize->add_setting( - 'generate_blog_settings[tags]', - array( - 'default' => $defaults['tags'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[tags]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display post tags', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[tags]', - ) - ); - - // Comment link - $wp_customize->add_setting( - 'generate_blog_settings[comments]', - array( - 'default' => $defaults['comments'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[comments]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display comment count', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[comments]', - ) - ); - - // Infinite scroll - $wp_customize->add_setting( - 'generate_blog_settings[infinite_scroll]', - array( - 'default' => $defaults['infinite_scroll'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[infinite_scroll]', - array( - 'type' => 'checkbox', - 'label' => __( 'Use infinite scroll', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[infinite_scroll]', - ) - ); - - // Infinite scroll - $wp_customize->add_setting( - 'generate_blog_settings[infinite_scroll_button]', - array( - 'default' => $defaults['infinite_scroll_button'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[infinite_scroll_button]', - array( - 'type' => 'checkbox', - 'label' => __( 'Use button to load more posts', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[infinite_scroll_button]', - 'active_callback' => 'generate_premium_infinite_scroll_active', - ) - ); - - // Load more text - $wp_customize->add_setting( - 'generate_blog_settings[masonry_load_more]', array( - 'default' => $defaults['masonry_load_more'], - 'capability' => 'edit_theme_options', - 'type' => 'option', - 'sanitize_callback' => 'wp_kses_post', - ) - ); - - $wp_customize->add_control( - 'blog_masonry_load_more_control', array( - 'label' => __( 'Load more label', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[masonry_load_more]', - 'active_callback' => 'generate_premium_infinite_scroll_button_active', - ) - ); - - // Loading text - $wp_customize->add_setting( - 'generate_blog_settings[masonry_loading]', array( - 'default' => $defaults['masonry_loading'], - 'capability' => 'edit_theme_options', - 'type' => 'option', - 'sanitize_callback' => 'wp_kses_post', - ) - ); - - $wp_customize->add_control( - 'blog_masonry_loading_control', array( - 'label' => __( 'Loading label', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[masonry_loading]', - 'active_callback' => 'generate_premium_infinite_scroll_button_active', - ) - ); - - $wp_customize->add_setting( - 'generate_blog_settings[single_date]', - array( - 'default' => $defaults['single_date'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[single_date]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display post date', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[single_date]', - ) - ); - - $wp_customize->add_setting( - 'generate_blog_settings[single_author]', - array( - 'default' => $defaults['single_author'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[single_author]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display post author', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[single_author]', - ) - ); - - $wp_customize->add_setting( - 'generate_blog_settings[single_categories]', - array( - 'default' => $defaults['single_categories'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[single_categories]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display post categories', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[single_categories]', - ) - ); - - $wp_customize->add_setting( - 'generate_blog_settings[single_tags]', - array( - 'default' => $defaults['single_tags'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[single_tags]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display post tags', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[single_tags]', - ) - ); - - $wp_customize->add_setting( - 'generate_blog_settings[single_post_navigation]', - array( - 'default' => $defaults['single_post_navigation'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[single_post_navigation]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display post navigation', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[single_post_navigation]', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_blog_featured_images_title', - array( - 'section' => 'generate_blog_section', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Featured Images', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - $wp_customize->add_control( - new Generate_Control_Toggle_Customize_Control( - $wp_customize, - 'generate_featured_image_toggle', - array( - 'section' => 'generate_blog_section', - 'targets' => array( - 'featured-image-archives' => __( 'Archives', 'gp-premium' ), - 'featured-image-single' => __( 'Posts', 'gp-premium' ), - 'featured-image-page' => __( 'Pages', 'gp-premium' ), - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - // Show featured images - $wp_customize->add_setting( - 'generate_blog_settings[post_image]', - array( - 'default' => $defaults['post_image'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[post_image]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display featured images', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[post_image]', - ) - ); - - // Padding - $wp_customize->add_setting( - 'generate_blog_settings[post_image_padding]', - array( - 'default' => $defaults['post_image_padding'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[post_image_padding]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display padding around images', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[post_image_padding]', - 'active_callback' => 'generate_premium_display_image_padding', - ) - ); - - // Location - $wp_customize->add_setting( - 'generate_blog_settings[post_image_position]', - array( - 'default' => $defaults['post_image_position'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[post_image_position]', - array( - 'type' => 'select', - 'label' => __( 'Location', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'choices' => array( - '' => __( 'Below Title', 'gp-premium' ), - 'post-image-above-header' => __( 'Above Title', 'gp-premium' ), - ), - 'settings' => 'generate_blog_settings[post_image_position]', - 'active_callback' => 'generate_premium_featured_image_active', - ) - ); - - // Alignment - $wp_customize->add_setting( - 'generate_blog_settings[post_image_alignment]', - array( - 'default' => $defaults['post_image_alignment'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[post_image_alignment]', - array( - 'type' => 'select', - 'label' => __( 'Alignment', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'choices' => array( - 'post-image-aligned-center' => __( 'Center', 'gp-premium' ), - 'post-image-aligned-left' => __( 'Left', 'gp-premium' ), - 'post-image-aligned-right' => __( 'Right', 'gp-premium' ), - ), - 'settings' => 'generate_blog_settings[post_image_alignment]', - 'active_callback' => 'generate_premium_featured_image_active', - ) - ); - - $wp_customize->add_setting( - 'generate_blog_settings[post_image_size]', - array( - 'default' => $defaults['post_image_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[post_image_size]', - array( - 'type' => 'select', - 'label' => __( 'Media Attachment Size', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'choices' => generate_blog_get_image_sizes(), - 'settings' => 'generate_blog_settings[post_image_size]', - 'active_callback' => 'generate_premium_featured_image_active', - ) - ); - - // Width - $wp_customize->add_setting( - 'generate_blog_settings[post_image_width]', array( - 'default' => $defaults['post_image_width'], - 'capability' => 'edit_theme_options', - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[post_image_width]', - array( - 'type' => 'number', - 'label' => __( 'Width', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[post_image_width]', - 'active_callback' => 'generate_premium_featured_image_active', - ) - ); - - // Height - $wp_customize->add_setting( - 'generate_blog_settings[post_image_height]', array( - 'default' => $defaults['post_image_height'], - 'capability' => 'edit_theme_options', - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[post_image_height]', - array( - 'type' => 'number', - 'label' => __( 'Height', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[post_image_height]', - 'active_callback' => 'generate_premium_featured_image_active', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Information_Customize_Control( - $wp_customize, - 'generate_regenerate_images_notice', - array( - 'section' => 'generate_blog_section', - 'description' => sprintf( - __( 'We will attempt to serve exact image sizes based on your width/height settings. If that is not possible, we will resize your images using CSS. Learn more about featured image sizing %s.', 'gp-premium' ), - '' . __( 'here', 'gp-premium' ) . '' - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'active_callback' => 'generate_premium_featured_image_active', - ) - ) - ); - - /* - * Single featured images - */ - - $wp_customize->add_setting( - 'generate_blog_settings[single_post_image]', - array( - 'default' => $defaults['single_post_image'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[single_post_image]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display featured images', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[single_post_image]', - ) - ); - - // Padding - $wp_customize->add_setting( - 'generate_blog_settings[single_post_image_padding]', - array( - 'default' => $defaults['single_post_image_padding'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[single_post_image_padding]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display padding around images', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[single_post_image_padding]', - 'active_callback' => 'generate_premium_display_image_padding_single', - ) - ); - - // Location - $wp_customize->add_setting( - 'generate_blog_settings[single_post_image_position]', - array( - 'default' => $defaults['single_post_image_position'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[single_post_image_position]', - array( - 'type' => 'select', - 'label' => __( 'Location', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'choices' => array( - 'below-title' => __( 'Below Title', 'gp-premium' ), - 'inside-content' => __( 'Above Title', 'gp-premium' ), - 'above-content' => __( 'Above Content Area', 'gp-premium' ), - ), - 'settings' => 'generate_blog_settings[single_post_image_position]', - 'active_callback' => 'generate_premium_single_featured_image_active', - ) - ); - - // Alignment - $wp_customize->add_setting( - 'generate_blog_settings[single_post_image_alignment]', - array( - 'default' => $defaults['single_post_image_alignment'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[single_post_image_alignment]', - array( - 'type' => 'select', - 'label' => __( 'Alignment', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'choices' => array( - 'center' => __( 'Center', 'gp-premium' ), - 'left' => __( 'Left', 'gp-premium' ), - 'right' => __( 'Right', 'gp-premium' ), - ), - 'settings' => 'generate_blog_settings[single_post_image_alignment]', - 'active_callback' => 'generate_premium_single_featured_image_active', - ) - ); - - $wp_customize->add_setting( - 'generate_blog_settings[single_post_image_size]', - array( - 'default' => $defaults['single_post_image_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[single_post_image_size]', - array( - 'type' => 'select', - 'label' => __( 'Media Attachment Size', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'choices' => generate_blog_get_image_sizes(), - 'settings' => 'generate_blog_settings[single_post_image_size]', - 'active_callback' => 'generate_premium_single_featured_image_active', - ) - ); - - // Width - $wp_customize->add_setting( - 'generate_blog_settings[single_post_image_width]', array( - 'default' => $defaults['single_post_image_width'], - 'capability' => 'edit_theme_options', - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[single_post_image_width]', - array( - 'type' => 'number', - 'label' => __( 'Width', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[single_post_image_width]', - 'active_callback' => 'generate_premium_single_featured_image_active', - ) - ); - - // Height - $wp_customize->add_setting( - 'generate_blog_settings[single_post_image_height]', array( - 'default' => $defaults['single_post_image_height'], - 'capability' => 'edit_theme_options', - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[single_post_image_height]', - array( - 'type' => 'number', - 'label' => __( 'Height', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[single_post_image_height]', - 'active_callback' => 'generate_premium_single_featured_image_active', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Information_Customize_Control( - $wp_customize, - 'generate_regenerate_single_post_images_notice', - array( - 'section' => 'generate_blog_section', - 'description' => sprintf( - __( 'We will attempt to serve exact image sizes based on your width/height settings. If that is not possible, we will resize your images using CSS. Learn more about featured image sizing %s.', 'gp-premium' ), - '' . __( 'here', 'gp-premium' ) . '' - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'active_callback' => 'generate_premium_single_featured_image_active', - ) - ) - ); - - /* - * Page featured images - */ - - $wp_customize->add_setting( - 'generate_blog_settings[page_post_image]', - array( - 'default' => $defaults['page_post_image'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[page_post_image]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display featured images', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[page_post_image]', - ) - ); - - // Padding - $wp_customize->add_setting( - 'generate_blog_settings[page_post_image_padding]', - array( - 'default' => $defaults['page_post_image_padding'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[page_post_image_padding]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display padding around images', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[page_post_image_padding]', - 'active_callback' => 'generate_premium_display_image_padding_single_page', - ) - ); - - // Location - $wp_customize->add_setting( - 'generate_blog_settings[page_post_image_position]', - array( - 'default' => $defaults['page_post_image_position'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[page_post_image_position]', - array( - 'type' => 'select', - 'label' => __( 'Location', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'choices' => array( - 'below-title' => __( 'Below Title', 'gp-premium' ), - 'inside-content' => __( 'Above Title', 'gp-premium' ), - 'above-content' => __( 'Above Content Area', 'gp-premium' ), - ), - 'settings' => 'generate_blog_settings[page_post_image_position]', - 'active_callback' => 'generate_premium_single_page_featured_image_active', - ) - ); - - // Alignment - $wp_customize->add_setting( - 'generate_blog_settings[page_post_image_alignment]', - array( - 'default' => $defaults['page_post_image_alignment'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[page_post_image_alignment]', - array( - 'type' => 'select', - 'label' => __( 'Alignment', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'choices' => array( - 'center' => __( 'Center', 'gp-premium' ), - 'left' => __( 'Left', 'gp-premium' ), - 'right' => __( 'Right', 'gp-premium' ), - ), - 'settings' => 'generate_blog_settings[page_post_image_alignment]', - 'active_callback' => 'generate_premium_single_page_featured_image_active', - ) - ); - - $wp_customize->add_setting( - 'generate_blog_settings[page_post_image_size]', - array( - 'default' => $defaults['page_post_image_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[page_post_image_size]', - array( - 'type' => 'select', - 'label' => __( 'Media Attachment Size', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'choices' => generate_blog_get_image_sizes(), - 'settings' => 'generate_blog_settings[page_post_image_size]', - 'active_callback' => 'generate_premium_single_page_featured_image_active', - ) - ); - - // Width - $wp_customize->add_setting( - 'generate_blog_settings[page_post_image_width]', array( - 'default' => $defaults['page_post_image_width'], - 'capability' => 'edit_theme_options', - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[page_post_image_width]', - array( - 'type' => 'number', - 'label' => __( 'Width', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[page_post_image_width]', - 'active_callback' => 'generate_premium_single_page_featured_image_active', - ) - ); - - // Height - $wp_customize->add_setting( - 'generate_blog_settings[page_post_image_height]', array( - 'default' => $defaults['page_post_image_height'], - 'capability' => 'edit_theme_options', - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[page_post_image_height]', - array( - 'type' => 'number', - 'label' => __( 'Height', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[page_post_image_height]', - 'active_callback' => 'generate_premium_single_page_featured_image_active', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Information_Customize_Control( - $wp_customize, - 'generate_regenerate_page_images_notice', - array( - 'section' => 'generate_blog_section', - 'description' => sprintf( - __( 'We will attempt to serve exact image sizes based on your width/height settings. If that is not possible, we will resize your images using CSS. Learn more about featured image sizing %s.', 'gp-premium' ), - '' . __( 'here', 'gp-premium' ) . '' - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'active_callback' => 'generate_premium_single_page_featured_image_active', - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_blog_columns_title', - array( - 'section' => 'generate_blog_section', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Columns', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - // Enable columns - $wp_customize->add_setting( - 'generate_blog_settings[column_layout]', - array( - 'default' => $defaults['column_layout'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[column_layout]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display posts in columns', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[column_layout]', - ) - ); - - // Column count class - $wp_customize->add_setting( - 'generate_blog_settings[columns]', - array( - 'default' => $defaults['columns'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[columns]', - array( - 'type' => 'select', - 'label' => __( 'Columns', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'choices' => array( - '50' => '2', - '33' => '3', - '25' => '4', - '20' => '5' - ), - 'settings' => 'generate_blog_settings[columns]', - 'active_callback' => 'generate_premium_blog_columns_active', - ) - ); - - // Featured column - $wp_customize->add_setting( - 'generate_blog_settings[featured_column]', - array( - 'default' => $defaults['featured_column'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[featured_column]', - array( - 'type' => 'checkbox', - 'label' => __( 'Make first post featured', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[featured_column]', - 'active_callback' => 'generate_premium_blog_columns_active', - ) - ); - - // Masonry - $wp_customize->add_setting( - 'generate_blog_settings[masonry]', - array( - 'default' => $defaults['masonry'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_blog_settings[masonry]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display posts in masonry grid', 'gp-premium' ), - 'section' => 'generate_blog_section', - 'settings' => 'generate_blog_settings[masonry]', - 'active_callback' => 'generate_premium_blog_columns_active', - ) - ); - } -} - -add_action( 'customize_controls_print_styles', 'generate_blog_customizer_controls_css' ); - -function generate_blog_customizer_controls_css() { - ?> - - '55', - 'read_more' => __( 'Read more', 'gp-premium' ), - 'read_more_button' => false, - 'masonry' => false, - 'masonry_load_more' => __( '+ More', 'gp-premium' ), - 'masonry_loading' => __( 'Loading...', 'gp-premium' ), - 'infinite_scroll' => false, - 'infinite_scroll_button' => false, - 'post_image' => true, - 'post_image_position' => '', - 'post_image_alignment' => 'post-image-aligned-center', - 'post_image_size' => 'full', - 'post_image_width' => '', - 'post_image_height' => '', - 'post_image_padding' => true, - 'single_post_image' => true, - 'single_post_image_position' => 'inside-content', - 'single_post_image_alignment' => 'center', - 'single_post_image_size' => 'full', - 'single_post_image_width' => '', - 'single_post_image_height' => '', - 'single_post_image_padding' => true, - 'page_post_image' => true, - 'page_post_image_position' => 'above-content', - 'page_post_image_alignment' => 'center', - 'page_post_image_size' => 'full', - 'page_post_image_width' => '', - 'page_post_image_height' => '', - 'page_post_image_padding' => true, - 'date' => true, - 'author' => true, - 'categories' => true, - 'tags' => true, - 'comments' => true, - 'single_date' => true, - 'single_author' => true, - 'single_categories' => true, - 'single_tags' => true, - 'single_post_navigation' => true, - 'column_layout' => false, - 'columns' => '50', - 'featured_column' => false, - ); - - return apply_filters( 'generate_blog_option_defaults', $generate_blog_defaults ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/generate-blog.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/generate-blog.php deleted file mode 100644 index 9b52b1ea..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/generate-blog.php +++ /dev/null @@ -1,754 +0,0 @@ - $settings['masonry_load_more'], - 'loading' => $settings['masonry_loading'], - 'icon' => function_exists( 'generate_get_svg_icon' ) ? generate_get_svg_icon( 'spinner' ) : '', - 'masonryInit' => apply_filters( - 'generate_blog_masonry_init', - array( - 'columnWidth' => '.grid-sizer', - 'itemSelector' => '.masonry-post', - 'stamp' => '.page-header', - 'percentPosition' => true, - 'stagger' => 30, - 'visibleStyle' => array( - 'transform' => 'translateY(0)', - 'opacity' => 1, - ), - 'hiddenStyle' => array( - 'transform' => 'translateY(5px)', - 'opacity' => 0, - ), - ) - ), - 'infiniteScrollInit' => apply_filters( - 'generate_blog_infinite_scroll_init', - array( - 'path' => '.infinite-scroll-path a', - 'append' => '#main .infinite-scroll-item', - 'history' => false, - 'loadOnScroll' => $settings['infinite_scroll_button'] ? false : true, - 'button' => $settings['infinite_scroll_button'] ? '.load-more a' : null, - 'scrollThreshold' => $settings['infinite_scroll_button'] ? false : 600, - ) - ), - ) - ); - } - - $needs_columns_css = false; - $needs_featured_image_css = false; - - if ( generate_blog_get_columns() || $settings['infinite_scroll'] ) { - $needs_columns_css = true; - } - - if ( ! is_singular() ) { - if ( $settings['post_image'] ) { - $needs_featured_image_css = true; - } - } - - if ( is_page() && has_post_thumbnail() ) { - if ( $settings['page_post_image'] ) { - $needs_featured_image_css = true; - } - } - - if ( is_single() && has_post_thumbnail() ) { - if ( $settings['single_post_image'] ) { - $needs_featured_image_css = true; - } - } - - if ( $needs_columns_css && $needs_featured_image_css ) { - wp_enqueue_style( 'generate-blog', plugin_dir_url( __FILE__ ) . "css/style{$suffix}.css", array(), GENERATE_BLOG_VERSION ); - } elseif ( $needs_columns_css ) { - wp_enqueue_style( 'generate-blog-columns', plugin_dir_url( __FILE__ ) . "css/columns{$suffix}.css", array(), GENERATE_BLOG_VERSION ); - } elseif ( $needs_featured_image_css ) { - wp_enqueue_style( 'generate-blog-images', plugin_dir_url( __FILE__ ) . "css/featured-images{$suffix}.css", array(), GENERATE_BLOG_VERSION ); - } - } -} - -if ( ! function_exists( 'generate_blog_post_classes' ) ) { - add_filter( 'post_class', 'generate_blog_post_classes' ); - /** - * Adds custom classes to the content container - * - * @since 0.1 - */ - function generate_blog_post_classes( $classes ) { - // Don't add these classes to the GB Query Loop block items. - if ( in_array( 'gb-query-loop-item', $classes ) ) { - return $classes; - } - - global $wp_query; - $paged = get_query_var( 'paged' ); - $paged = $paged ? $paged : 1; - - // Get our options - $settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - if ( $settings['infinite_scroll'] ) { - $classes[] = 'infinite-scroll-item'; - } - - // Set our masonry class - if ( 'true' == generate_blog_get_masonry() && generate_blog_get_columns() ) { - $classes[] = 'masonry-post'; - } - - // Set our column classes - if ( generate_blog_get_columns() && ! is_singular() ) { - $classes[] = 'generate-columns'; - $classes[] = 'tablet-grid-50'; - $classes[] = 'mobile-grid-100'; - $classes[] = 'grid-parent'; - - // Set our featured column class - if ( $wp_query->current_post == 0 && $paged == 1 && $settings['featured_column'] ) { - if ( 50 == generate_blog_get_column_count() ) { - $classes[] = 'grid-100'; - } - - if ( 33 == generate_blog_get_column_count() ) { - $classes[] = 'grid-66'; - } - - if ( 25 == generate_blog_get_column_count() ) { - $classes[] = 'grid-50'; - } - - if ( 20 == generate_blog_get_column_count() ) { - $classes[] = 'grid-60'; - } - $classes[] = 'featured-column'; - } else { - $classes[] = 'grid-' . generate_blog_get_column_count(); - } - } - - if ( ! $settings['post_image_padding'] && ! is_singular() ) { - $classes[] = 'no-featured-image-padding'; - } - - $location = generate_blog_get_singular_template(); - - if ( ! $settings[$location . '_post_image_padding'] && is_singular() ) { - $classes[] = 'no-featured-image-padding'; - } - - $atts = generate_get_blog_image_attributes(); - - if ( ! is_singular() && has_post_thumbnail() && ! empty( $atts ) ) { - $values = array( - $atts['width'], - $atts['height'], - $atts['crop'], - ); - - $image_src = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID(), 'full' ), $values ); - - if ( $image_src && ( ! $image_src[3] || ! apply_filters( 'generate_use_featured_image_size_match', true ) ) ) { - $classes[] = 'resize-featured-image'; - } - } - - return $classes; - } -} - -if ( ! function_exists( 'generate_blog_body_classes' ) ) { - add_filter( 'body_class', 'generate_blog_body_classes' ); - /** - * Adds custom classes to the body - * - * @since 0.1 - */ - function generate_blog_body_classes( $classes ) { - // Get theme options - $settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - if ( is_singular() ) { - $location = generate_blog_get_singular_template(); - - if ( 'below-title' == $settings[$location . '_post_image_position'] ) { - $classes[] = 'post-image-below-header'; - } - - if ( 'inside-content' == $settings[$location . '_post_image_position'] ) { - $classes[] = 'post-image-above-header'; - } - - $classes[] = ( ! empty( $settings[$location . '_post_image_alignment'] ) ) ? 'post-image-aligned-' . $settings[$location . '_post_image_alignment'] : 'post-image-aligned-center'; - } else { - $classes[] = ( '' == $settings['post_image_position'] ) ? 'post-image-below-header' : 'post-image-above-header'; - $classes[] = ( ! empty( $settings['post_image_alignment'] ) ) ? $settings['post_image_alignment'] : 'post-image-aligned-center'; - } - - if ( 'true' == generate_blog_get_masonry() && generate_blog_get_columns() ) { - $classes[] = 'masonry-enabled'; - } - - if ( generate_blog_get_columns() && ! is_singular() ) { - $classes[] = 'generate-columns-activated'; - } - - if ( $settings[ 'infinite_scroll' ] && ! is_singular() ) { - $classes[] = 'infinite-scroll'; - } - - return $classes; - } -} - -if ( ! function_exists( 'generate_excerpt_length' ) ) { - add_filter( 'excerpt_length', 'generate_excerpt_length', 15 ); - /** - * Set our excerpt length - * - * @since 0.1 - */ - function generate_excerpt_length( $length ) { - $generate_settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - return absint( apply_filters( 'generate_excerpt_length', $generate_settings['excerpt_length'] ) ); - } -} - -if ( ! function_exists( 'generate_blog_css' ) ) { - /** - * Build our inline CSS - * - * @since 0.1 - */ - function generate_blog_css() { - global $post; - $return = ''; - - $settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - if ( ! defined( 'GENERATE_VERSION' ) ) { - return; - } - - if ( version_compare( GENERATE_VERSION, '3.0.0-alpha.1', '<' ) ) { - // Get disable headline meta. - $disable_headline = ( isset( $post ) ) ? get_post_meta( $post->ID, '_generate-disable-headline', true ) : ''; - - if ( ! $settings['categories'] && ! $settings['comments'] && ! $settings['tags'] && ! is_singular() ) { - $return .= '.blog footer.entry-meta, .archive footer.entry-meta {display:none;}'; - } - - if ( ! $settings['single_date'] && ! $settings['single_author'] && $disable_headline && is_singular() ) { - $return .= '.single .entry-header{display:none;}.single .entry-content {margin-top:0;}'; - } - - if ( ! $settings['date'] && ! $settings['author'] && ! is_singular() ) { - $return .= '.entry-header .entry-meta {display:none;}'; - } - - if ( ! $settings['single_date'] && ! $settings['single_author'] && is_singular() ) { - $return .= '.entry-header .entry-meta {display:none;}'; - } - - if ( ! $settings['single_post_navigation'] && is_singular() ) { - $return .= '.post-navigation {display:none;}'; - } - - if ( ! $settings['single_categories'] && ! $settings['single_post_navigation'] && ! $settings['single_tags'] && is_singular() ) { - $return .= '.single footer.entry-meta {display:none;}'; - } - } - - $separator = 20; - $content_padding_top = 40; - $content_padding_right = 40; - $content_padding_left = 40; - $mobile_content_padding_top = 30; - $mobile_content_padding_right = 30; - $mobile_content_padding_left = 30; - - if ( function_exists( 'generate_spacing_get_defaults' ) ) { - $spacing_settings = wp_parse_args( - get_option( 'generate_spacing_settings', array() ), - generate_spacing_get_defaults() - ); - - $separator = absint( $spacing_settings['separator'] ); - $content_padding_top = absint( $spacing_settings['content_top'] ); - $content_padding_right = absint( $spacing_settings['content_right'] ); - $content_padding_left = absint( $spacing_settings['content_left'] ); - $mobile_content_padding_top = absint( $spacing_settings['mobile_content_top'] ); - $mobile_content_padding_right = absint( $spacing_settings['mobile_content_right'] ); - $mobile_content_padding_left = absint( $spacing_settings['mobile_content_left'] ); - } - - if ( 'true' == generate_blog_get_masonry() && generate_blog_get_columns() ) { - $return .= '.page-header {margin-bottom: ' . $separator . 'px;margin-left: ' . $separator . 'px}'; - } - - if ( $settings[ 'infinite_scroll' ] && ! is_singular() ) { - $return .= '#nav-below {display:none;}'; - } - - if ( ! $settings['post_image_padding'] && 'post-image-aligned-center' == $settings['post_image_alignment'] && ! is_singular() ) { - $return .= '.no-featured-image-padding .post-image {margin-left:-' . $content_padding_left . 'px;margin-right:-' . $content_padding_right . 'px;}'; - $return .= '.post-image-above-header .no-featured-image-padding .inside-article .post-image {margin-top:-' . $content_padding_top . 'px;}'; - } - - $location = generate_blog_get_singular_template(); - - if ( ! $settings[$location . '_post_image_padding'] && 'center' == $settings[$location . '_post_image_alignment'] && is_singular() ) { - $return .= '.no-featured-image-padding .featured-image {margin-left:-' . $content_padding_left . 'px;margin-right:-' . $content_padding_right . 'px;}'; - $return .= '.post-image-above-header .no-featured-image-padding .inside-article .featured-image {margin-top:-' . $content_padding_top . 'px;}'; - } - - if ( ! $settings['page_post_image_padding'] || ! $settings['single_post_image_padding'] || ! $settings['post_image_padding'] ) { - $return .= '@media ' . generate_premium_get_media_query( 'mobile' ) . '{'; - if ( ! $settings['post_image_padding'] && 'post-image-aligned-center' == $settings['post_image_alignment'] && ! is_singular() ) { - $return .= '.no-featured-image-padding .post-image {margin-left:-' . $mobile_content_padding_left . 'px;margin-right:-' . $mobile_content_padding_right . 'px;}'; - $return .= '.post-image-above-header .no-featured-image-padding .inside-article .post-image {margin-top:-' . $mobile_content_padding_top . 'px;}'; - } - - if ( ! $settings[$location . '_post_image_padding'] && 'center' == $settings[$location . '_post_image_alignment'] && is_singular() ) { - $return .= '.no-featured-image-padding .featured-image {margin-left:-' . $mobile_content_padding_left . 'px;margin-right:-' . $mobile_content_padding_right . 'px;}'; - $return .= '.post-image-above-header .no-featured-image-padding .inside-article .featured-image {margin-top:-' . $mobile_content_padding_top . 'px;}'; - } - $return .= '}'; - } - - $atts = generate_get_blog_image_attributes(); - - if ( ! empty( $atts ) ) { - $image_width = $atts['width'] && 9999 !== $atts['width'] ? 'width: ' . $atts['width'] . 'px;' : ''; - $image_height = $atts['height'] && 9999 !== $atts['height'] ? 'height: ' . $atts['height'] . 'px;' : ''; - $image_crop = $atts['crop'] ? '-o-object-fit: cover;object-fit: cover;' : ''; - - if ( ! $image_width && $image_height ) { - $image_crop = '-o-object-fit: cover;object-fit: cover;'; - } - - if ( ! is_singular() ) { - $return .= '.resize-featured-image .post-image img {' . $image_width . $image_height . $image_crop . '}'; - } - - if ( is_single() || is_page() ) { - $values = array( - $atts['width'], - $atts['height'], - $atts['crop'], - ); - - $image_src = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID(), 'full' ), $values ); - - if ( $image_src && ( ! $image_src[3] || ! apply_filters( 'generate_use_featured_image_size_match', true ) ) ) { - $return .= '.featured-image img {' . $image_width . $image_height . $image_crop . '}'; - } - } - } - - return $return; - } -} - -add_filter( 'generate_excerpt_more_text', 'generate_blog_set_read_more_text' ); -/** - * Set the read more text with our Customizer setting. - * - * @param string $text The read more text. - */ -function generate_blog_set_read_more_text( $text ) { - $settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - if ( $settings['read_more'] ) { - return wp_kses_post( $settings['read_more'] ); - } - - return $text; -} - -if ( ! function_exists( 'generate_blog_excerpt_more' ) ) { - add_filter( 'excerpt_more', 'generate_blog_excerpt_more', 15 ); - /** - * Prints the read more HTML - */ - function generate_blog_excerpt_more( $more ) { - $generate_settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - if ( '' == $generate_settings['read_more'] ) { - return ''; - } - - // We don't need to overwrite the entire element just to change its text. - // If we can filter the text, stop here. - if ( function_exists( 'generate_get_read_more_text' ) ) { - return $more; - } - - return apply_filters( - 'generate_excerpt_more_output', - sprintf( - ' ... %3$s', - the_title_attribute( 'echo=0' ), - esc_url( get_permalink( get_the_ID() ) ), - wp_kses_post( $generate_settings['read_more'] ), - sprintf( - /* translators: Aria-label describing the read more button */ - _x( 'More on %s', 'more on post title', 'gp-premium' ), - the_title_attribute( 'echo=0' ) - ) - ) - ); - } -} - -if ( ! function_exists( 'generate_blog_content_more' ) ) { - add_filter( 'the_content_more_link', 'generate_blog_content_more', 15 ); - /** - * Prints the read more HTML - */ - function generate_blog_content_more( $more ) { - $generate_settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - if ( '' == $generate_settings['read_more'] ) { - return ''; - } - - // We don't need to overwrite the entire element just to change its text. - // If we can filter the text, stop here. - if ( function_exists( 'generate_get_read_more_text' ) ) { - return $more; - } - - return apply_filters( - 'generate_content_more_link_output', - sprintf( - '

    %3$s

    ', - the_title_attribute( 'echo=0' ), - esc_url( get_permalink( get_the_ID() ) . apply_filters( 'generate_more_jump', '#more-' . get_the_ID() ) ), - wp_kses_post( $generate_settings['read_more'] ), - sprintf( - /* translators: Aria-label describing the read more button */ - _x( 'More on %s', 'more on post title', 'gp-premium' ), - the_title_attribute( 'echo=0' ) - ) - ) - ); - } -} - -/** - * Checks the setting and returns false if $thing is disabled - * - * @since 1.4 - * - * @param String $data The original data, passed through if not disabled - * @param String $thing The name of the thing to check - * @return String|False The original data, or false (if disabled) - */ -function generate_disable_post_thing( $data, $thing ) { - $generate_blog_settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - if ( ! $generate_blog_settings[$thing] ) { - return false; - } - - return $data; -} - -if ( ! function_exists( 'generate_disable_post_date' ) ) { - add_filter( 'generate_post_date', 'generate_disable_post_date' ); - /** - * Remove the post date if set - * - * @since 0.1 - */ - function generate_disable_post_date( $date ) { - if ( is_singular() ) { - return generate_disable_post_thing( $date, 'single_date' ); - } else { - return generate_disable_post_thing( $date, 'date' ); - } - } -} - -if ( ! function_exists( 'generate_disable_post_author' ) ) { - add_filter( 'generate_post_author', 'generate_disable_post_author' ); - /** - * Set the author if set - * - * @since 0.1 - */ - function generate_disable_post_author( $author ) { - if ( is_singular() ) { - return generate_disable_post_thing( $author, 'single_author' ); - } else { - return generate_disable_post_thing( $author, 'author' ); - } - } -} - -if ( ! function_exists( 'generate_disable_post_categories' ) ) { - add_filter( 'generate_show_categories', 'generate_disable_post_categories' ); - /** - * Remove the categories if set - * - * @since 0.1 - */ - function generate_disable_post_categories( $categories ) { - if ( is_singular() ) { - return generate_disable_post_thing( $categories, 'single_categories' ); - } else { - return generate_disable_post_thing( $categories, 'categories' ); - } - } -} - -if ( ! function_exists( 'generate_disable_post_tags' ) ) { - add_filter( 'generate_show_tags', 'generate_disable_post_tags' ); - /** - * Remove the tags if set - * - * @since 0.1 - */ - function generate_disable_post_tags( $tags ) { - if ( is_singular() ) { - return generate_disable_post_thing( $tags, 'single_tags' ); - } else { - return generate_disable_post_thing( $tags, 'tags' ); - } - } -} - -if ( ! function_exists( 'generate_disable_post_comments_link' ) ) { - add_filter( 'generate_show_comments', 'generate_disable_post_comments_link' ); - /** - * Remove the link to comments if set - * - * @since 0.1 - */ - function generate_disable_post_comments_link( $comments_link ) { - return generate_disable_post_thing( $comments_link, 'comments' ); - } -} - -add_filter( 'generate_show_post_navigation', 'generate_disable_post_navigation' ); -/** - * Remove the single post navigation - * - * @since 1.5 - */ -function generate_disable_post_navigation( $navigation ) { - if ( is_singular() ) { - return generate_disable_post_thing( $navigation, 'single_post_navigation' ); - } else { - return $navigation; - } -} - -add_filter( 'generate_excerpt_more_output', 'generate_blog_read_more_button' ); -add_filter( 'generate_content_more_link_output', 'generate_blog_read_more_button' ); -/** - * Add the button class to our read more link if set. - * - * @since 1.5 - * - * @param string $output Our existing read more link. - */ -function generate_blog_read_more_button( $output ) { - $settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - if ( ! $settings['read_more_button'] ) { - return $output; - } - - $aria_label = function_exists( 'generate_get_read_more_aria_label' ) - ? generate_get_read_more_aria_label() - : sprintf( - /* translators: Aria-label describing the read more button */ - _x( 'More on %s', 'more on post title', 'gp-premium' ), - the_title_attribute( 'echo=0' ) - ); - - return sprintf( - '%5$s

    %3$s

    ', - the_title_attribute( 'echo=0' ), - esc_url( get_permalink( get_the_ID() ) . apply_filters( 'generate_more_jump', '#more-' . get_the_ID() ) ), - wp_kses_post( $settings['read_more'] ), - $aria_label, - 'generate_excerpt_more_output' === current_filter() ? ' ... ' : '' - ); -} - -if ( ! function_exists( 'generate_blog_load_more' ) ) { - add_action( 'generate_after_main_content', 'generate_blog_load_more', 20 ); - /** - * Build our load more button - */ - function generate_blog_load_more() { - // Get theme options - $settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - if ( ( ! $settings[ 'infinite_scroll_button' ] || ! $settings[ 'infinite_scroll' ] ) || is_singular() || is_404() ) { - return; - } - - global $wp_query; - - if ( $wp_query->max_num_pages < 2 ) { - return; - } - - if ( is_post_type_archive( 'product' ) ) { - return; - } - - if ( is_tax( 'product_cat' ) ) { - return; - } - - $icon = ''; - - if ( function_exists( 'generate_get_svg_icon' ) ) { - $icon = generate_get_svg_icon( 'spinner' ); - } - - printf( - '
    - %3$s%4$s -
    ', - $icon ? 'has-svg-icon' : '', - ( 'true' == generate_blog_get_masonry() && generate_blog_get_columns() ) ? 'are-images-unloaded' : '', - $icon, - wp_kses_post( $settings['masonry_load_more'] ) - ); - } -} - -/** - * Checks to see whether we're getting page or single post options. - * - * @since 1.5 - * - * @return string Name of our singular template - */ -function generate_blog_get_singular_template() { - $template = 'single'; - - if ( is_page() ) { - $template = 'page'; - } - - return $template; -} - -add_action( 'generate_after_footer', 'generate_blog_do_infinite_scroll_path', 500 ); -/** - * Add a next page of posts link for infinite scroll. - * - * @since 2.0.0 - */ -function generate_blog_do_infinite_scroll_path() { - if ( function_exists( 'is_woocommerce' ) && is_woocommerce() ) { - return; - } - - $settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - if ( $settings['infinite_scroll'] && ! is_singular() && ! is_404() ) { - printf( - '', - get_next_posts_link() - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/images.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/images.php deleted file mode 100644 index 54f11c71..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/images.php +++ /dev/null @@ -1,369 +0,0 @@ - 'full', - ); - - foreach ( $sizes as $key => $name ) { - $new_sizes[ $name ] = $name; - } - - return $new_sizes; -} - -add_filter( 'generate_page_header_default_size', 'generate_blog_set_featured_image_size' ); -/** - * Set our featured image sizes. - * - * @since 1.10.0 - * - * @param string $size The existing size. - * @return string The new size. - */ -function generate_blog_set_featured_image_size( $size ) { - $settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - if ( ! is_singular() ) { - $size = $settings['post_image_size']; - } - - if ( is_single() ) { - $size = $settings['single_post_image_size']; - } - - if ( is_page() ) { - $size = $settings['page_post_image_size']; - } - - $atts = generate_get_blog_image_attributes(); - - if ( ! empty( $atts ) ) { - $values = array( - $atts['width'], - $atts['height'], - $atts['crop'], - ); - - $image_src = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID(), 'full' ), $values ); - - if ( $image_src && $image_src[3] && apply_filters( 'generate_use_featured_image_size_match', true ) ) { - return $values; - } else { - return $size; - } - } - - return $size; -} - -if ( ! function_exists( 'generate_get_blog_image_attributes' ) ) { - /** - * Build our image attributes - * - * @since 0.1 - */ - function generate_get_blog_image_attributes() { - $settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - if ( is_singular() ) { - if ( is_singular( 'page' ) ) { - $single = 'page_'; - } else { - $single = 'single_'; - } - } else { - $single = ''; - } - - $ignore_crop = array( '', '0', '9999' ); - - $atts = array( - 'width' => ( in_array( $settings[ "{$single}post_image_width" ], $ignore_crop ) ) ? 9999 : absint( $settings[ "{$single}post_image_width" ] ), - 'height' => ( in_array( $settings[ "{$single}post_image_height" ], $ignore_crop ) ) ? 9999 : absint( $settings[ "{$single}post_image_height" ] ), - 'crop' => ( in_array( $settings[ "{$single}post_image_width" ], $ignore_crop ) || in_array( $settings[ "{$single}post_image_height" ], $ignore_crop ) ) ? false : true, - ); - - // If there's no height or width, empty the array. - if ( 9999 == $atts['width'] && 9999 == $atts['height'] ) { // phpcs:ignore - $atts = array(); - } - - return apply_filters( 'generate_blog_image_attributes', $atts ); - } -} - -if ( ! function_exists( 'generate_blog_setup' ) ) { - add_action( 'wp', 'generate_blog_setup', 50 ); - /** - * Setup our blog functions and actions - * - * @since 0.1 - */ - function generate_blog_setup() { - $settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - // Move our featured images to above the title. - if ( 'post-image-above-header' === $settings['post_image_position'] ) { - remove_action( 'generate_after_entry_header', 'generate_post_image' ); - add_action( 'generate_before_content', 'generate_post_image' ); - - // If we're using the Page Header add-on, move those as well. - if ( function_exists( 'generate_page_header_post_image' ) ) { - remove_action( 'generate_after_entry_header', 'generate_page_header_post_image' ); - add_action( 'generate_before_content', 'generate_page_header_post_image' ); - } - } - - $page_header_content = false; - if ( function_exists( 'generate_page_header_get_options' ) ) { - $options = generate_page_header_get_options(); - - if ( $options && '' !== $options['content'] ) { - $page_header_content = true; - } - - // If our Page Header has no content, remove it. - // This will allow the Blog add-on to add an image for us. - if ( ! $page_header_content && is_singular() ) { - remove_action( 'generate_before_content', 'generate_page_header' ); - remove_action( 'generate_after_entry_header', 'generate_page_header' ); - remove_action( 'generate_after_header', 'generate_page_header' ); - } - } - - // Remove the core theme featured image. - // I would like to filter instead one day. - remove_action( 'generate_after_header', 'generate_featured_page_header' ); - remove_action( 'generate_before_content', 'generate_featured_page_header_inside_single' ); - - $location = generate_blog_get_singular_template(); - - if ( $settings[ $location . '_post_image' ] && is_singular() && ! $page_header_content ) { - if ( 'below-title' === $settings[ $location . '_post_image_position' ] ) { - add_action( 'generate_after_entry_header', 'generate_blog_single_featured_image' ); - } - - if ( 'inside-content' === $settings[ $location . '_post_image_position' ] ) { - add_action( 'generate_before_content', 'generate_blog_single_featured_image' ); - } - - if ( 'above-content' === $settings[ $location . '_post_image_position' ] ) { - add_action( 'generate_after_header', 'generate_blog_single_featured_image' ); - } - } - } -} - -add_filter( 'generate_featured_image_output', 'generate_blog_featured_image' ); -/** - * Remove featured image if set or using WooCommerce. - * - * @since 1.5 - * @param string $output The existing output. - * @return string The image HTML - */ -function generate_blog_featured_image( $output ) { - $settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - if ( ( function_exists( 'is_woocommerce' ) && is_woocommerce() ) || ! $settings['post_image'] ) { - return false; - } - - return $output; -} - -/** - * Build our featured images for single posts and pages. - * - * This function is way more complicated than it could be so it can - * ensure compatibility with the Page Header add-on. - * - * @since 1.5 - * - * @return string The image HTML - */ -function generate_blog_single_featured_image() { - $settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - $image_id = get_post_thumbnail_id( get_the_ID(), 'full' ); - - if ( function_exists( 'generate_page_header_get_image' ) && generate_page_header_get_image( 'ID' ) ) { - if ( intval( $image_id ) !== generate_page_header_get_image( 'ID' ) ) { - $image_id = generate_page_header_get_image( 'ID' ); - } - } - - $location = generate_blog_get_singular_template(); - - if ( ( function_exists( 'is_woocommerce' ) && is_woocommerce() ) || ! $settings[ $location . '_post_image' ] || ! $image_id ) { - return false; - } - - $attrs = array( - 'itemprop' => 'image', - ); - - if ( function_exists( 'generate_get_schema_type' ) ) { - if ( 'microdata' !== generate_get_schema_type() ) { - $attrs = array(); - } - } - - $attrs['loading'] = false; - $attrs = apply_filters( 'generate_single_featured_image_attrs', $attrs ); - - $image_html = apply_filters( - 'post_thumbnail_html', // phpcs:ignore -- Core filter. - wp_get_attachment_image( - $image_id, - apply_filters( 'generate_page_header_default_size', 'full' ), - '', - $attrs - ), - get_the_ID(), - $image_id, - apply_filters( 'generate_page_header_default_size', 'full' ), - '' - ); - - $location = generate_blog_get_singular_template(); - - $classes = array( - is_page() ? 'page-header-image' : null, - is_singular() && ! is_page() ? 'page-header-image-single' : null, - 'above-content' === $settings[ $location . '_post_image_position' ] ? 'grid-container grid-parent' : null, - ); - - $image_html = apply_filters( 'generate_single_featured_image_html', $image_html ); - - // phpcs:ignore -- No need to escape here. - echo apply_filters( - 'generate_single_featured_image_output', - sprintf( - '', - $image_html, - implode( ' ', $classes ) - ), - $image_html - ); -} - -add_filter( 'generate_blog_image_attributes', 'generate_blog_page_header_image_atts' ); -/** - * Filter our image attributes in case we're using differents atts in our Page Header - * - * @since 1.5 - * - * @param array $atts Our existing image attributes. - * @return array Image attributes - */ -function generate_blog_page_header_image_atts( $atts ) { - if ( ! function_exists( 'generate_page_header_get_options' ) ) { - return $atts; - } - - if ( ! is_singular() ) { - return $atts; - } - - $options = generate_page_header_get_options(); - - if ( $options && 'enable' === $options['image_resize'] ) { - $ignore_crop = array( '', '0', '9999' ); - - $atts = array( - 'width' => ( in_array( $options['image_width'], $ignore_crop ) ) ? 9999 : absint( $options['image_width'] ), - 'height' => ( in_array( $options['image_height'], $ignore_crop ) ) ? 9999 : absint( $options['image_height'] ), - 'crop' => ( in_array( $options['image_width'], $ignore_crop ) || in_array( $options['image_height'], $ignore_crop ) ) ? false : true, - ); - } - - return $atts; -} - -add_filter( 'generate_single_featured_image_html', 'generate_blog_page_header_link' ); -/** - * Add our Page Header link to our featured image if set. - * - * @since 1.5 - * - * @param string $image_html Our existing image HTML. - * @return string Our new image HTML. - */ -function generate_blog_page_header_link( $image_html ) { - if ( ! function_exists( 'generate_page_header_get_options' ) ) { - return $image_html; - } - - $options = generate_page_header_get_options(); - - if ( ! empty( $options['image_link'] ) ) { - return '' . $image_html . ''; - } else { - return $image_html; - } -} - -add_filter( 'body_class', 'generate_blog_remove_featured_image_class', 20 ); -/** - * Remove the featured image classes if they're disabled. - * - * @since 2.1.0 - * @param array $classes The body classes. - */ -function generate_blog_remove_featured_image_class( $classes ) { - if ( is_singular() ) { - $settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - if ( is_single() ) { - $disable_single_featured_image = ! $settings['single_post_image']; - $classes = generate_premium_remove_featured_image_class( $classes, $disable_single_featured_image ); - } - - if ( is_page() && ! $settings['page_post_image'] ) { - $disable_page_featured_image = ! $settings['page_post_image']; - $classes = generate_premium_remove_featured_image_class( $classes, $disable_page_featured_image ); - } - } - - return $classes; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/controls.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/controls.js deleted file mode 100644 index eb397ff9..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/controls.js +++ /dev/null @@ -1,98 +0,0 @@ -jQuery( function( $ ) { - // Featured image controls - var featuredImageArchiveControls = [ - 'generate_blog_settings-post_image', - 'generate_blog_settings-post_image_padding', - 'generate_blog_settings-post_image_position', - 'generate_blog_settings-post_image_alignment', - 'generate_blog_settings-post_image_size', - 'generate_blog_settings-post_image_width', - 'generate_blog_settings-post_image_height', - 'generate_regenerate_images_notice', - ]; - - $.each( featuredImageArchiveControls, function( index, value ) { - $( '#customize-control-' + value ).attr( 'data-control-section', 'featured-image-archives' ); - } ); - - var featuredImageSingleControls = [ - 'generate_blog_settings-single_post_image', - 'generate_blog_settings-single_post_image_padding', - 'generate_blog_settings-single_post_image_position', - 'generate_blog_settings-single_post_image_alignment', - 'generate_blog_settings-single_post_image_size', - 'generate_blog_settings-single_post_image_width', - 'generate_blog_settings-single_post_image_height', - 'generate_regenerate_single_post_images_notice', - ]; - - $.each( featuredImageSingleControls, function( index, value ) { - $( '#customize-control-' + value ).attr( 'data-control-section', 'featured-image-single' ).css( { - visibility: 'hidden', - height: '0', - width: '0', - margin: '0', - overflow: 'hidden', - } ); - } ); - - var featuredImagePageControls = [ - 'generate_blog_settings-page_post_image', - 'generate_blog_settings-page_post_image_padding', - 'generate_blog_settings-page_post_image_position', - 'generate_blog_settings-page_post_image_alignment', - 'generate_blog_settings-page_post_image_size', - 'generate_blog_settings-page_post_image_width', - 'generate_blog_settings-page_post_image_height', - 'generate_regenerate_page_images_notice', - ]; - - $.each( featuredImagePageControls, function( index, value ) { - $( '#customize-control-' + value ).attr( 'data-control-section', 'featured-image-page' ).css( { - visibility: 'hidden', - height: '0', - width: '0', - margin: '0', - overflow: 'hidden', - } ); - } ); - - // Post meta controls - var postMetaArchiveControls = [ - 'generate_settings-post_content', - 'generate_blog_settings-excerpt_length', - 'generate_blog_settings-read_more', - 'generate_blog_settings-read_more_button', - 'generate_blog_settings-date', - 'generate_blog_settings-author', - 'generate_blog_settings-categories', - 'generate_blog_settings-tags', - 'generate_blog_settings-comments', - 'generate_blog_settings-infinite_scroll', - 'generate_blog_settings-infinite_scroll_button', - 'blog_masonry_load_more_control', - 'blog_masonry_loading_control', - ]; - - $.each( postMetaArchiveControls, function( index, value ) { - $( '#customize-control-' + value ).attr( 'data-control-section', 'post-meta-archives' ); - } ); - - var postMetaSingleControls = [ - 'generate_blog_settings-single_date', - 'generate_blog_settings-single_author', - 'generate_blog_settings-single_categories', - 'generate_blog_settings-single_tags', - 'generate_blog_settings-single_post_navigation', - ]; - - $.each( postMetaSingleControls, function( index, value ) { - $( '#customize-control-' + value ).attr( 'data-control-section', 'post-meta-single' ).css( { - visibility: 'hidden', - height: '0', - width: '0', - margin: '0', - overflow: 'hidden', - } ); - } ); -} ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/customizer.js deleted file mode 100644 index f3c6656c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/customizer.js +++ /dev/null @@ -1,76 +0,0 @@ -/** - * Theme Customizer enhancements for a better user experience. - * - * Contains handlers to make Theme Customizer preview reload changes asynchronously. - */ - -( function( $ ) { - // Container width - wp.customize( 'generate_settings[container_width]', function( value ) { - value.bind( function() { - if ( $( '.masonry-container' )[ 0 ] ) { - jQuery( '.masonry-container' ).imagesLoaded( function() { - $container = jQuery( '.masonry-container' ); - if ( jQuery( $container ).length ) { - $container.masonry( { - columnWidth: '.grid-sizer', - itemSelector: '.masonry-post', - stamp: '.page-header', - } ); - } - } ); - } - } ); - } ); - - $( 'body' ).on( 'generate_spacing_updated', function() { - if ( $( '.masonry-container' )[ 0 ] ) { - jQuery( '.masonry-container' ).imagesLoaded( function() { - $container = jQuery( '.masonry-container' ); - if ( jQuery( $container ).length ) { - $container.masonry( { - columnWidth: '.grid-sizer', - itemSelector: '.masonry-post', - stamp: '.page-header', - } ); - } - } ); - } - } ); - - /** - * The first infinite scroll load in the Customizer misses article classes if they've been - * added or removed in the previous refresh. - * - * This is totally hacky, but I'm just happy I finally got it working! - */ - var $container = $( '.infinite-scroll-item' ).first().parent(); - $container.on( 'load.infiniteScroll', function( event, response ) { - var $posts = $( response ).find( 'article' ); - if ( wp.customize.value( 'generate_blog_settings[column_layout]' )() ) { - $posts.addClass( 'generate-columns' ); - $posts.addClass( 'grid-parent' ); - $posts.addClass( 'grid-' + wp.customize.value( 'generate_blog_settings[columns]' )() ); - $posts.addClass( 'tablet-grid-50' ); - $posts.addClass( 'mobile-grid-100' ); - } else { - $posts.removeClass( 'generate-columns' ); - $posts.removeClass( 'grid-parent' ); - $posts.removeClass( 'grid-' + wp.customize.value( 'generate_blog_settings[columns]' )() ); - $posts.removeClass( 'tablet-grid-50' ); - $posts.removeClass( 'mobile-grid-100' ); - } - - if ( wp.customize.value( 'generate_blog_settings[masonry]' )() ) { - $posts.addClass( 'masonry-post' ); - } else { - $posts.removeClass( 'masonry-post' ); - } - - if ( ! wp.customize.value( 'generate_blog_settings[post_image_padding]' )() ) { - $posts.addClass( 'no-featured-image-padding' ); - } else { - $posts.removeClass( 'no-featured-image-padding' ); - } - } ); -}( jQuery ) ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/infinite-scroll.pkgd.min.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/infinite-scroll.pkgd.min.js deleted file mode 100644 index 329c20c6..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/functions/js/infinite-scroll.pkgd.min.js +++ /dev/null @@ -1,12 +0,0 @@ -/*! - * Infinite Scroll PACKAGED v3.0.6 - * Automatically add next page - * - * Licensed GPLv3 for open source use - * or Infinite Scroll Commercial License for commercial use - * - * https://infinite-scroll.com - * Copyright 2018 Metafizzy - */ - -!function(t,e){"function"==typeof define&&define.amd?define("jquery-bridget/jquery-bridget",["jquery"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("jquery")):t.jQueryBridget=e(t,t.jQuery)}(window,function(t,e){"use strict";function i(i,r,l){function a(t,e,n){var o,r="$()."+i+'("'+e+'")';return t.each(function(t,a){var h=l.data(a,i);if(!h)return void s(i+" not initialized. Cannot call methods, i.e. "+r);var c=h[e];if(!c||"_"==e.charAt(0))return void s(r+" is not a valid method");var u=c.apply(h,n);o=void 0===o?u:o}),void 0!==o?o:t}function h(t,e){t.each(function(t,n){var o=l.data(n,i);o?(o.option(e),o._init()):(o=new r(n,e),l.data(n,i,o))})}l=l||e||t.jQuery,l&&(r.prototype.option||(r.prototype.option=function(t){l.isPlainObject(t)&&(this.options=l.extend(!0,this.options,t))}),l.fn[i]=function(t){if("string"==typeof t){var e=o.call(arguments,1);return a(this,t,e)}return h(this,t),this},n(l))}function n(t){!t||t&&t.bridget||(t.bridget=i)}var o=Array.prototype.slice,r=t.console,s="undefined"==typeof r?function(){}:function(t){r.error(t)};return n(e||t.jQuery),i}),function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},n=i[t]=i[t]||[];return n.indexOf(e)==-1&&n.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{},n=i[t]=i[t]||{};return n[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=i.indexOf(e);return n!=-1&&i.splice(n,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){i=i.slice(0),e=e||[];for(var n=this._onceEvents&&this._onceEvents[t],o=0;o=0,this.isPrefilling?(this.log("prefill"),this.loadNextPage()):this.stopPrefill()},s.getPrefillDistance=function(){return this.options.elementScroll?this.scroller.clientHeight-this.scroller.scrollHeight:this.windowHeight-this.element.clientHeight},s.stopPrefill=function(){this.log("stopPrefill"),this.off("append",this.prefill)},e}),function(t,e){"function"==typeof define&&define.amd?define("infinite-scroll/js/scroll-watch",["./core","fizzy-ui-utils/utils"],function(i,n){return e(t,i,n)}):"object"==typeof module&&module.exports?module.exports=e(t,require("./core"),require("fizzy-ui-utils")):e(t,t.InfiniteScroll,t.fizzyUIUtils)}(window,function(t,e,i){var n=e.prototype;return e.defaults.scrollThreshold=400,e.create.scrollWatch=function(){this.pageScrollHandler=this.onPageScroll.bind(this),this.resizeHandler=this.onResize.bind(this);var t=this.options.scrollThreshold,e=t||0===t;e&&this.enableScrollWatch()},e.destroy.scrollWatch=function(){this.disableScrollWatch()},n.enableScrollWatch=function(){this.isScrollWatching||(this.isScrollWatching=!0,this.updateMeasurements(),this.updateScroller(),this.on("last",this.disableScrollWatch),this.bindScrollWatchEvents(!0))},n.disableScrollWatch=function(){this.isScrollWatching&&(this.bindScrollWatchEvents(!1),delete this.isScrollWatching)},n.bindScrollWatchEvents=function(e){var i=e?"addEventListener":"removeEventListener";this.scroller[i]("scroll",this.pageScrollHandler),t[i]("resize",this.resizeHandler)},n.onPageScroll=e.throttle(function(){var t=this.getBottomDistance();t<=this.options.scrollThreshold&&this.dispatchEvent("scrollThreshold")}),n.getBottomDistance=function(){return this.options.elementScroll?this.getElementBottomDistance():this.getWindowBottomDistance()},n.getWindowBottomDistance=function(){var e=this.top+this.element.clientHeight,i=t.pageYOffset+this.windowHeight;return e-i},n.getElementBottomDistance=function(){var t=this.scroller.scrollHeight,e=this.scroller.scrollTop+this.scroller.clientHeight;return t-e},n.onResize=function(){this.updateMeasurements()},i.debounceMethod(e,"onResize",150),e}),function(t,e){"function"==typeof define&&define.amd?define("infinite-scroll/js/history",["./core","fizzy-ui-utils/utils"],function(i,n){return e(t,i,n)}):"object"==typeof module&&module.exports?module.exports=e(t,require("./core"),require("fizzy-ui-utils")):e(t,t.InfiniteScroll,t.fizzyUIUtils)}(window,function(t,e,i){var n=e.prototype;e.defaults.history="replace";var o=document.createElement("a");return e.create.history=function(){if(this.options.history){o.href=this.getAbsolutePath();var t=o.origin||o.protocol+"//"+o.host,e=t==location.origin;return e?void(this.options.append?this.createHistoryAppend():this.createHistoryPageLoad()):void console.error("[InfiniteScroll] cannot set history with different origin: "+o.origin+" on "+location.origin+" . History behavior disabled.")}},n.createHistoryAppend=function(){this.updateMeasurements(),this.updateScroller(),this.scrollPages=[{top:0,path:location.href,title:document.title}],this.scrollPageIndex=0,this.scrollHistoryHandler=this.onScrollHistory.bind(this),this.unloadHandler=this.onUnload.bind(this),this.scroller.addEventListener("scroll",this.scrollHistoryHandler),this.on("append",this.onAppendHistory),this.bindHistoryAppendEvents(!0)},n.bindHistoryAppendEvents=function(e){var i=e?"addEventListener":"removeEventListener";this.scroller[i]("scroll",this.scrollHistoryHandler),t[i]("unload",this.unloadHandler)},n.createHistoryPageLoad=function(){this.on("load",this.onPageLoadHistory)},e.destroy.history=n.destroyHistory=function(){var t=this.options.history&&this.options.append;t&&this.bindHistoryAppendEvents(!1)},n.onAppendHistory=function(t,e,i){if(i&&i.length){var n=i[0],r=this.getElementScrollY(n);o.href=e,this.scrollPages.push({top:r,path:o.href,title:t.title})}},n.getElementScrollY=function(t){return this.options.elementScroll?this.getElementElementScrollY(t):this.getElementWindowScrollY(t)},n.getElementWindowScrollY=function(e){var i=e.getBoundingClientRect();return i.top+t.pageYOffset},n.getElementElementScrollY=function(t){return t.offsetTop-this.top},n.onScrollHistory=function(){for(var t,e,i=this.getScrollViewY(),n=0;n=i)break;t=n,e=o}t!=this.scrollPageIndex&&(this.scrollPageIndex=t,this.setHistory(e.title,e.path))},i.debounceMethod(e,"onScrollHistory",150),n.getScrollViewY=function(){return this.options.elementScroll?this.scroller.scrollTop+this.scroller.clientHeight/2:t.pageYOffset+this.windowHeight/2},n.setHistory=function(t,e){var i=this.options.history,n=i&&history[i+"State"];n&&(history[i+"State"](null,t,e),this.options.historyTitle&&(document.title=t),this.dispatchEvent("history",null,[t,e]))},n.onUnload=function(){var e=this.scrollPageIndex;if(0!==e){var i=this.scrollPages[e],n=t.pageYOffset-i.top+this.top;this.destroyHistory(),scrollTo(0,n)}},n.onPageLoadHistory=function(t,e){this.setHistory(t.title,e)},e}),function(t,e){"function"==typeof define&&define.amd?define("infinite-scroll/js/button",["./core","fizzy-ui-utils/utils"],function(i,n){return e(t,i,n)}):"object"==typeof module&&module.exports?module.exports=e(t,require("./core"),require("fizzy-ui-utils")):e(t,t.InfiniteScroll,t.fizzyUIUtils)}(window,function(t,e,i){function n(t,e){this.element=t,this.infScroll=e,this.clickHandler=this.onClick.bind(this),this.element.addEventListener("click",this.clickHandler),e.on("request",this.disable.bind(this)),e.on("load",this.enable.bind(this)),e.on("error",this.hide.bind(this)),e.on("last",this.hide.bind(this))}return e.create.button=function(){var t=i.getQueryElement(this.options.button);if(t)return void(this.button=new n(t,this))},e.destroy.button=function(){this.button&&this.button.destroy()},n.prototype.onClick=function(t){t.preventDefault(),this.infScroll.loadNextPage()},n.prototype.enable=function(){this.element.removeAttribute("disabled")},n.prototype.disable=function(){this.element.disabled="disabled"},n.prototype.hide=function(){this.element.style.display="none"},n.prototype.destroy=function(){this.element.removeEventListener("click",this.clickHandler)},e.Button=n,e}),function(t,e){"function"==typeof define&&define.amd?define("infinite-scroll/js/status",["./core","fizzy-ui-utils/utils"],function(i,n){return e(t,i,n)}):"object"==typeof module&&module.exports?module.exports=e(t,require("./core"),require("fizzy-ui-utils")):e(t,t.InfiniteScroll,t.fizzyUIUtils)}(window,function(t,e,i){function n(t){r(t,"none")}function o(t){r(t,"block")}function r(t,e){t&&(t.style.display=e)}var s=e.prototype;return e.create.status=function(){var t=i.getQueryElement(this.options.status);t&&(this.statusElement=t,this.statusEventElements={request:t.querySelector(".infinite-scroll-request"),error:t.querySelector(".infinite-scroll-error"),last:t.querySelector(".infinite-scroll-last")},this.on("request",this.showRequestStatus),this.on("error",this.showErrorStatus),this.on("last",this.showLastStatus),this.bindHideStatus("on"))},s.bindHideStatus=function(t){var e=this.options.append?"append":"load";this[t](e,this.hideAllStatus)},s.showRequestStatus=function(){this.showStatus("request")},s.showErrorStatus=function(){this.showStatus("error")},s.showLastStatus=function(){this.showStatus("last"),this.bindHideStatus("off")},s.showStatus=function(t){o(this.statusElement),this.hideStatusEventElements();var e=this.statusEventElements[t];o(e)},s.hideAllStatus=function(){n(this.statusElement),this.hideStatusEventElements()},s.hideStatusEventElements=function(){for(var t in this.statusEventElements){var e=this.statusEventElements[t];n(e)}},e}),function(t,e){"function"==typeof define&&define.amd?define(["infinite-scroll/js/core","infinite-scroll/js/page-load","infinite-scroll/js/scroll-watch","infinite-scroll/js/history","infinite-scroll/js/button","infinite-scroll/js/status"],e):"object"==typeof module&&module.exports&&(module.exports=e(require("./core"),require("./page-load"),require("./scroll-watch"),require("./history"),require("./button"),require("./status")))}(window,function(t){return t}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("imagesloaded/imagesloaded",["ev-emitter/ev-emitter"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter")):t.imagesLoaded=e(t,t.EvEmitter)}("undefined"!=typeof window?window:this,function(t,e){function i(t,e){for(var i in e)t[i]=e[i];return t}function n(t){if(Array.isArray(t))return t;var e="object"==typeof t&&"number"==typeof t.length;return e?h.call(t):[t]}function o(t,e,r){if(!(this instanceof o))return new o(t,e,r);var s=t;return"string"==typeof t&&(s=document.querySelectorAll(t)),s?(this.elements=n(s),this.options=i({},this.options),"function"==typeof e?r=e:i(this.options,e),r&&this.on("always",r),this.getImages(),l&&(this.jqDeferred=new l.Deferred),void setTimeout(this.check.bind(this))):void a.error("Bad element for imagesLoaded "+(s||t))}function r(t){this.img=t}function s(t,e){this.url=t,this.element=e,this.img=new Image}var l=t.jQuery,a=t.console,h=Array.prototype.slice;o.prototype=Object.create(e.prototype),o.prototype.options={},o.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)},o.prototype.addElementImages=function(t){"IMG"==t.nodeName&&this.addImage(t),this.options.background===!0&&this.addElementBackgroundImages(t);var e=t.nodeType;if(e&&c[e]){for(var i=t.querySelectorAll("img"),n=0;n 'false', - 'masonry_width' => 'width2', - 'masonry_most_recent_width' => 'width4', - 'post_image' => 'true', - 'date' => 'true', - 'author' => 'true', - 'categories' => 'true', - 'tags' => 'true', - 'comments' => 'true', - ); - - // Get our spacing settings - $blog_settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - $defaults - ); - - $new_settings = array(); - - // These options use to be a select input with false + true values - // This will make the false values empty so the options can be checkboxes - $keys = array( 'date', 'author', 'categories', 'tags', 'comments', 'masonry', 'post_image' ); - foreach ( $keys as $key ) { - if ( is_string( $blog_settings[ $key ] ) ) { - if ( 'false' == $blog_settings[ $key ] ) { - $new_settings[ $key ] = false; - } elseif ( 'true' == $blog_settings[ $key ] ) { - $new_settings[ $key ] = true; - } - } - } - - // Set the single post meta options to whatever the blog options are - $new_settings[ 'single_date' ] = isset( $new_settings[ 'date' ] ) ? $new_settings[ 'date' ] : true; - $new_settings[ 'single_author' ] = isset( $new_settings[ 'author' ] ) ? $new_settings[ 'author' ] : true; - $new_settings[ 'single_categories' ] = isset( $new_settings[ 'categories' ] ) ? $new_settings[ 'categories' ] : true; - $new_settings[ 'single_tags' ] = isset( $new_settings[ 'tags' ] ) ? $new_settings[ 'tags' ] : true; - - if ( isset( $new_settings[ 'masonry' ] ) && $new_settings[ 'masonry' ] ) { - $new_settings[ 'column_layout' ] = true; - $new_settings[ 'infinite_scroll' ] = true; - $new_settings[ 'infinite_scroll_button' ] = true; - - if ( 'width2' == $blog_settings['masonry_width'] ) { - $new_settings[ 'columns' ] = '33'; - } - - if ( 'width4' == $blog_settings['masonry_width'] ) { - $new_settings[ 'columns' ] = '50'; - } - - if ( 'width6' == $blog_settings['masonry_width'] ) { - $new_settings[ 'columns' ] = '100'; - } - - if ( 'width2' == $blog_settings[ 'masonry_width' ] ) { - if ( 'width2' !== $blog_settings[ 'masonry_most_recent_width' ] ) { - $new_settings[ 'featured_column' ] = true; - } else { - $new_settings[ 'featured_column' ] = false; - } - } - - if ( 'width4' == $blog_settings[ 'masonry_width' ] ) { - if ( 'width6' == $blog_settings[ 'masonry_most_recent_width' ] ) { - $new_settings[ 'featured_column' ] = true; - } else { - $new_settings[ 'featured_column' ] = false; - } - } - - if ( 'width6' == $blog_settings[ 'masonry_width' ] ) { - $new_settings[ 'featured_column' ] = false; - } - } - - if ( function_exists( 'generate_page_header_get_defaults' ) ) { - $page_header_settings = wp_parse_args( - get_option( 'generate_page_header_settings', array() ), - generate_page_header_get_defaults() - ); - - if ( 'hide' == $page_header_settings[ 'post_header_position' ] ) { - $new_settings[ 'single_post_image' ] = false; - } else { - $new_settings[ 'single_post_image_position' ] = $page_header_settings[ 'post_header_position' ]; - } - - $new_settings[ 'page_post_image_position' ] = $page_header_settings[ 'page_header_position' ]; - } - - unset( $blog_settings['masonry_width'] ); - unset( $blog_settings['masonry_most_recent_width'] ); - - $update_settings = wp_parse_args( $new_settings, $blog_settings ); - update_option( 'generate_blog_settings', $update_settings ); - - // Update our migration option so we don't need to run this again - $updated[ 'blog_visibility_updated' ] = 'true'; - $migration_settings = wp_parse_args( $updated, $settings ); - update_option( 'generate_migration_settings', $migration_settings ); -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/generate-blog.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/generate-blog.php deleted file mode 100644 index 49fd37fd..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/blog/generate-blog.php +++ /dev/null @@ -1,20 +0,0 @@ -register_control_type( 'GeneratePress_Alpha_Color_Customize_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Title_Customize_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Section_Shortcut_Control' ); - } - - // Get our palettes. - $palettes = generate_get_default_color_palettes(); - - // Add our Colors panel. - if ( class_exists( 'WP_Customize_Panel' ) ) { - $wp_customize->add_panel( - 'generate_colors_panel', - array( - 'priority' => 30, - 'theme_supports' => '', - 'title' => __( 'Colors', 'gp-premium' ), - 'description' => '', - ) - ); - } - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_body_color_shortcuts', - array( - 'section' => 'body_section', - 'element' => __( 'Body', 'gp-premium' ), - 'shortcuts' => array( - 'typography' => 'font_section', - 'backgrounds' => 'generate_backgrounds_body', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - // Add Top Bar Colors section. - if ( isset( $defaults['top_bar_background_color'] ) && function_exists( 'generate_is_top_bar_active' ) ) { - $wp_customize->add_section( - 'generate_top_bar_colors', - array( - 'title' => __( 'Top Bar', 'gp-premium' ), - 'priority' => 40, - 'panel' => 'generate_colors_panel', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[top_bar_background_color]', - array( - 'default' => $defaults['top_bar_background_color'], - 'type' => 'option', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[top_bar_background_color]', - array( - 'label' => __( 'Background', 'gp-premium' ), - 'section' => 'generate_top_bar_colors', - 'settings' => 'generate_settings[top_bar_background_color]', - 'palette' => $palettes, - 'show_opacity' => true, - 'priority' => 1, - 'active_callback' => 'generate_is_top_bar_active', - ) - ) - ); - - // Add color settings. - $top_bar_colors = array(); - $top_bar_colors[] = array( - 'slug' => 'top_bar_text_color', - 'default' => $defaults['top_bar_text_color'], - 'label' => __( 'Text', 'gp-premium' ), - 'priority' => 2, - ); - $top_bar_colors[] = array( - 'slug' => 'top_bar_link_color', - 'default' => $defaults['top_bar_link_color'], - 'label' => __( 'Link', 'gp-premium' ), - 'priority' => 3, - ); - $top_bar_colors[] = array( - 'slug' => 'top_bar_link_color_hover', - 'default' => $defaults['top_bar_link_color_hover'], - 'label' => __( 'Link Hover', 'gp-premium' ), - 'priority' => 4, - ); - - foreach ( $top_bar_colors as $color ) { - $wp_customize->add_setting( - 'generate_settings[' . $color['slug'] . ']', - array( - 'default' => $color['default'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - $color['slug'], - array( - 'label' => $color['label'], - 'section' => 'generate_top_bar_colors', - 'settings' => 'generate_settings[' . $color['slug'] . ']', - 'priority' => $color['priority'], - 'palette' => $palettes, - 'active_callback' => 'generate_is_top_bar_active', - ) - ) - ); - } - } - - // Add Header Colors section. - $wp_customize->add_section( - 'header_color_section', - array( - 'title' => __( 'Header', 'gp-premium' ), - 'priority' => 50, - 'panel' => 'generate_colors_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_header_color_shortcuts', - array( - 'section' => 'header_color_section', - 'element' => __( 'Header', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'generate_layout_header', - 'typography' => 'font_header_section', - 'backgrounds' => 'generate_backgrounds_header', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[header_background_color]', - array( - 'default' => $defaults['header_background_color'], - 'type' => 'option', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[header_background_color]', - array( - 'label' => __( 'Background', 'gp-premium' ), - 'section' => 'header_color_section', - 'settings' => 'generate_settings[header_background_color]', - 'palette' => $palettes, - 'show_opacity' => true, - 'priority' => 1, - ) - ) - ); - - // Add color settings. - $header_colors = array(); - $header_colors[] = array( - 'slug' => 'header_text_color', - 'default' => $defaults['header_text_color'], - 'label' => __( 'Text', 'gp-premium' ), - 'priority' => 2, - ); - $header_colors[] = array( - 'slug' => 'header_link_color', - 'default' => $defaults['header_link_color'], - 'label' => __( 'Link', 'gp-premium' ), - 'priority' => 3, - ); - $header_colors[] = array( - 'slug' => 'header_link_hover_color', - 'default' => $defaults['header_link_hover_color'], - 'label' => __( 'Link Hover', 'gp-premium' ), - 'priority' => 4, - ); - $header_colors[] = array( - 'slug' => 'site_title_color', - 'default' => $defaults['site_title_color'], - 'label' => __( 'Site Title', 'gp-premium' ), - 'priority' => 5, - ); - $header_colors[] = array( - 'slug' => 'site_tagline_color', - 'default' => $defaults['site_tagline_color'], - 'label' => __( 'Tagline', 'gp-premium' ), - 'priority' => 6, - ); - - foreach ( $header_colors as $color ) { - $wp_customize->add_setting( - 'generate_settings[' . $color['slug'] . ']', - array( - 'default' => $color['default'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - $color['slug'], - array( - 'label' => $color['label'], - 'section' => 'header_color_section', - 'settings' => 'generate_settings[' . $color['slug'] . ']', - 'priority' => $color['priority'], - 'palette' => $palettes, - ) - ) - ); - } - - // Add Navigation section. - $wp_customize->add_section( - 'navigation_color_section', - array( - 'title' => __( 'Primary Navigation', 'gp-premium' ), - 'priority' => 60, - 'panel' => 'generate_colors_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_primary_navigation_color_shortcuts', - array( - 'section' => 'navigation_color_section', - 'element' => __( 'Primary Navigation', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'generate_layout_navigation', - 'typography' => 'font_navigation_section', - 'backgrounds' => 'generate_backgrounds_navigation', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 0, - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_primary_navigation_parent_items', - array( - 'section' => 'navigation_color_section', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Parent Items', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[navigation_background_color]', - array( - 'default' => $defaults['navigation_background_color'], - 'type' => 'option', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[navigation_background_color]', - array( - 'label' => __( 'Background', 'gp-premium' ), - 'section' => 'navigation_color_section', - 'settings' => 'generate_settings[navigation_background_color]', - 'palette' => $palettes, - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[navigation_background_hover_color]', - array( - 'default' => $defaults['navigation_background_hover_color'], - 'type' => 'option', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[navigation_background_hover_color]', - array( - 'label' => __( 'Background Hover', 'gp-premium' ), - 'section' => 'navigation_color_section', - 'settings' => 'generate_settings[navigation_background_hover_color]', - 'palette' => $palettes, - 'priority' => 3, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[navigation_background_current_color]', - array( - 'default' => $defaults['navigation_background_current_color'], - 'type' => 'option', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[navigation_background_current_color]', - array( - 'label' => __( 'Background Current', 'gp-premium' ), - 'section' => 'navigation_color_section', - 'settings' => 'generate_settings[navigation_background_current_color]', - 'palette' => $palettes, - 'priority' => 5, - ) - ) - ); - - // Add color settings. - $navigation_colors = array(); - $navigation_colors[] = array( - 'slug' => 'navigation_text_color', - 'default' => $defaults['navigation_text_color'], - 'label' => __( 'Text', 'gp-premium' ), - 'priority' => 2, - ); - $navigation_colors[] = array( - 'slug' => 'navigation_text_hover_color', - 'default' => $defaults['navigation_text_hover_color'], - 'label' => __( 'Text Hover', 'gp-premium' ), - 'priority' => 4, - ); - $navigation_colors[] = array( - 'slug' => 'navigation_text_current_color', - 'default' => $defaults['navigation_text_current_color'], - 'label' => __( 'Text Current', 'gp-premium' ), - 'priority' => 6, - ); - - foreach ( $navigation_colors as $color ) { - $wp_customize->add_setting( - 'generate_settings[' . $color['slug'] . ']', - array( - 'default' => $color['default'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - $color['slug'], - array( - 'label' => $color['label'], - 'section' => 'navigation_color_section', - 'settings' => 'generate_settings[' . $color['slug'] . ']', - 'priority' => $color['priority'], - ) - ) - ); - } - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_primary_navigation_sub_menu_items', - array( - 'section' => 'navigation_color_section', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Sub-Menu Items', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 7, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[subnavigation_background_color]', - array( - 'default' => $defaults['subnavigation_background_color'], - 'type' => 'option', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[subnavigation_background_color]', - array( - 'label' => __( 'Background', 'gp-premium' ), - 'section' => 'navigation_color_section', - 'settings' => 'generate_settings[subnavigation_background_color]', - 'palette' => $palettes, - 'priority' => 8, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[subnavigation_background_hover_color]', - array( - 'default' => $defaults['subnavigation_background_hover_color'], - 'type' => 'option', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[subnavigation_background_hover_color]', - array( - 'label' => __( 'Background Hover', 'gp-premium' ), - 'section' => 'navigation_color_section', - 'settings' => 'generate_settings[subnavigation_background_hover_color]', - 'palette' => $palettes, - 'priority' => 10, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[subnavigation_background_current_color]', - array( - 'default' => $defaults['subnavigation_background_current_color'], - 'type' => 'option', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[subnavigation_background_current_color]', - array( - 'label' => __( 'Background Current', 'gp-premium' ), - 'section' => 'navigation_color_section', - 'settings' => 'generate_settings[subnavigation_background_current_color]', - 'palette' => $palettes, - 'priority' => 12, - ) - ) - ); - - // Add color settings. - $subnavigation_colors = array(); - $subnavigation_colors[] = array( - 'slug' => 'subnavigation_text_color', - 'default' => $defaults['subnavigation_text_color'], - 'label' => __( 'Text', 'gp-premium' ), - 'priority' => 9, - ); - $subnavigation_colors[] = array( - 'slug' => 'subnavigation_text_hover_color', - 'default' => $defaults['subnavigation_text_hover_color'], - 'label' => __( 'Text Hover', 'gp-premium' ), - 'priority' => 11, - ); - $subnavigation_colors[] = array( - 'slug' => 'subnavigation_text_current_color', - 'default' => $defaults['subnavigation_text_current_color'], - 'label' => __( 'Text Current', 'gp-premium' ), - 'priority' => 13, - ); - - foreach ( $subnavigation_colors as $color ) { - $wp_customize->add_setting( - 'generate_settings[' . $color['slug'] . ']', - array( - 'default' => $color['default'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - $color['slug'], - array( - 'label' => $color['label'], - 'section' => 'navigation_color_section', - 'settings' => 'generate_settings[' . $color['slug'] . ']', - 'priority' => $color['priority'], - ) - ) - ); - } - - if ( isset( $defaults['navigation_search_background_color'] ) ) { - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_primary_navigation_search', - array( - 'section' => 'navigation_color_section', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Navigation Search', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 15, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[navigation_search_background_color]', - array( - 'default' => $defaults['navigation_search_background_color'], - 'type' => 'option', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[navigation_search_background_color]', - array( - 'label' => __( 'Background', 'gp-premium' ), - 'section' => 'navigation_color_section', - 'settings' => 'generate_settings[navigation_search_background_color]', - 'palette' => $palettes, - 'priority' => 16, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[navigation_search_text_color]', - array( - 'default' => $defaults['navigation_search_text_color'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[navigation_search_text_color]', - array( - 'label' => __( 'Text', 'gp-premium' ), - 'section' => 'navigation_color_section', - 'settings' => 'generate_settings[navigation_search_text_color]', - 'priority' => 17, - ) - ) - ); - } - - $wp_customize->add_section( - 'buttons_color_section', - array( - 'title' => __( 'Buttons', 'gp-premium' ), - 'priority' => 75, - 'panel' => 'generate_colors_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_buttons_color_shortcuts', - array( - 'section' => 'buttons_color_section', - 'element' => __( 'Button', 'gp-premium' ), - 'shortcuts' => array( - 'typography' => 'font_buttons_section', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[form_button_background_color]', - array( - 'default' => $defaults['form_button_background_color'], - 'type' => 'option', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[form_button_background_color]', - array( - 'label' => __( 'Background', 'gp-premium' ), - 'section' => 'buttons_color_section', - 'settings' => 'generate_settings[form_button_background_color]', - 'palette' => $palettes, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[form_button_text_color]', - array( - 'default' => $defaults['form_button_text_color'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'form_button_text_color', - array( - 'label' => __( 'Text', 'gp-premium' ), - 'section' => 'buttons_color_section', - 'settings' => 'generate_settings[form_button_text_color]', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[form_button_background_color_hover]', - array( - 'default' => $defaults['form_button_background_color_hover'], - 'type' => 'option', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[form_button_background_color_hover]', - array( - 'label' => __( 'Background Hover', 'gp-premium' ), - 'section' => 'buttons_color_section', - 'settings' => 'generate_settings[form_button_background_color_hover]', - 'palette' => $palettes, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[form_button_text_color_hover]', - array( - 'default' => $defaults['form_button_text_color_hover'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'form_button_text_color_hover', - array( - 'label' => __( 'Text Hover', 'gp-premium' ), - 'section' => 'buttons_color_section', - 'settings' => 'generate_settings[form_button_text_color_hover]', - ) - ) - ); - - // Add Content Colors section. - $wp_customize->add_section( - 'content_color_section', - array( - 'title' => __( 'Content', 'gp-premium' ), - 'priority' => 80, - 'panel' => 'generate_colors_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_content_color_shortcuts', - array( - 'section' => 'content_color_section', - 'element' => __( 'Content', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'generate_layout_container', - 'typography' => 'font_content_section', - 'backgrounds' => 'generate_backgrounds_content', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[content_background_color]', - array( - 'default' => $defaults['content_background_color'], - 'type' => 'option', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[content_background_color]', - array( - 'label' => __( 'Background', 'gp-premium' ), - 'section' => 'content_color_section', - 'settings' => 'generate_settings[content_background_color]', - 'palette' => $palettes, - 'priority' => 1, - ) - ) - ); - - // Add color settings. - $content_colors = array(); - $content_colors[] = array( - 'slug' => 'content_text_color', - 'default' => $defaults['content_text_color'], - 'label' => __( 'Text', 'gp-premium' ), - 'priority' => 2, - ); - $content_colors[] = array( - 'slug' => 'content_link_color', - 'default' => $defaults['content_link_color'], - 'label' => __( 'Link', 'gp-premium' ), - 'priority' => 3, - ); - $content_colors[] = array( - 'slug' => 'content_link_hover_color', - 'default' => $defaults['content_link_hover_color'], - 'label' => __( 'Link Hover', 'gp-premium' ), - 'priority' => 4, - ); - $content_colors[] = array( - 'slug' => 'content_title_color', - 'default' => $defaults['content_title_color'], - 'label' => __( 'Content Title', 'gp-premium' ), - 'priority' => 5, - ); - $content_colors[] = array( - 'slug' => 'blog_post_title_color', - 'default' => $defaults['blog_post_title_color'], - 'label' => __( 'Archive Content Title', 'gp-premium' ), - 'priority' => 6, - ); - $content_colors[] = array( - 'slug' => 'blog_post_title_hover_color', - 'default' => $defaults['blog_post_title_hover_color'], - 'label' => __( 'Archive Content Title Hover', 'gp-premium' ), - 'priority' => 7, - ); - $content_colors[] = array( - 'slug' => 'entry_meta_text_color', - 'default' => $defaults['entry_meta_text_color'], - 'label' => __( 'Entry Meta Text', 'gp-premium' ), - 'priority' => 8, - ); - $content_colors[] = array( - 'slug' => 'entry_meta_link_color', - 'default' => $defaults['entry_meta_link_color'], - 'label' => __( 'Entry Meta Links', 'gp-premium' ), - 'priority' => 9, - ); - $content_colors[] = array( - 'slug' => 'entry_meta_link_color_hover', - 'default' => $defaults['entry_meta_link_color_hover'], - 'label' => __( 'Entry Meta Links Hover', 'gp-premium' ), - 'priority' => 10, - ); - $content_colors[] = array( - 'slug' => 'h1_color', - 'default' => $defaults['h1_color'], - 'label' => __( 'Heading 1 (H1) Color', 'gp-premium' ), - 'priority' => 11, - ); - $content_colors[] = array( - 'slug' => 'h2_color', - 'default' => $defaults['h2_color'], - 'label' => __( 'Heading 2 (H2) Color', 'gp-premium' ), - 'priority' => 12, - ); - $content_colors[] = array( - 'slug' => 'h3_color', - 'default' => $defaults['h3_color'], - 'label' => __( 'Heading 3 (H3) Color', 'gp-premium' ), - 'priority' => 13, - ); - - if ( isset( $defaults['h4_color'] ) ) { - $content_colors[] = array( - 'slug' => 'h4_color', - 'default' => $defaults['h4_color'], - 'label' => __( 'Heading 4 (H4) Color', 'gp-premium' ), - 'priority' => 14, - ); - } - - if ( isset( $defaults['h5_color'] ) ) { - $content_colors[] = array( - 'slug' => 'h5_color', - 'default' => $defaults['h5_color'], - 'label' => __( 'Heading 5 (H5) Color', 'gp-premium' ), - 'priority' => 15, - ); - } - - foreach ( $content_colors as $color ) { - $wp_customize->add_setting( - 'generate_settings[' . $color['slug'] . ']', - array( - 'default' => $color['default'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - $color['slug'], - array( - 'label' => $color['label'], - 'section' => 'content_color_section', - 'settings' => 'generate_settings[' . $color['slug'] . ']', - 'priority' => $color['priority'], - ) - ) - ); - } - - // Add Sidebar Widget colors. - $wp_customize->add_section( - 'sidebar_widget_color_section', - array( - 'title' => __( 'Sidebar Widgets', 'gp-premium' ), - 'priority' => 90, - 'panel' => 'generate_colors_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_sidebar_color_shortcuts', - array( - 'section' => 'sidebar_widget_color_section', - 'element' => __( 'Sidebar', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'generate_layout_sidebars', - 'typography' => 'font_widget_section', - 'backgrounds' => 'generate_backgrounds_sidebars', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[sidebar_widget_background_color]', - array( - 'default' => $defaults['sidebar_widget_background_color'], - 'type' => 'option', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[sidebar_widget_background_color]', - array( - 'label' => __( 'Background', 'gp-premium' ), - 'section' => 'sidebar_widget_color_section', - 'settings' => 'generate_settings[sidebar_widget_background_color]', - 'palette' => $palettes, - 'priority' => 1, - ) - ) - ); - - // Add color settings. - $sidebar_widget_colors = array(); - $sidebar_widget_colors[] = array( - 'slug' => 'sidebar_widget_text_color', - 'default' => $defaults['sidebar_widget_text_color'], - 'label' => __( 'Text', 'gp-premium' ), - 'priority' => 2, - ); - $sidebar_widget_colors[] = array( - 'slug' => 'sidebar_widget_link_color', - 'default' => $defaults['sidebar_widget_link_color'], - 'label' => __( 'Link', 'gp-premium' ), - 'priority' => 3, - ); - $sidebar_widget_colors[] = array( - 'slug' => 'sidebar_widget_link_hover_color', - 'default' => $defaults['sidebar_widget_link_hover_color'], - 'label' => __( 'Link Hover', 'gp-premium' ), - 'priority' => 4, - ); - $sidebar_widget_colors[] = array( - 'slug' => 'sidebar_widget_title_color', - 'default' => $defaults['sidebar_widget_title_color'], - 'label' => __( 'Widget Title', 'gp-premium' ), - 'priority' => 5, - ); - - foreach ( $sidebar_widget_colors as $color ) { - $wp_customize->add_setting( - 'generate_settings[' . $color['slug'] . ']', - array( - 'default' => $color['default'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - $color['slug'], - array( - 'label' => $color['label'], - 'section' => 'sidebar_widget_color_section', - 'settings' => 'generate_settings[' . $color['slug'] . ']', - 'priority' => $color['priority'], - ) - ) - ); - } - - // Add Form colors. - $wp_customize->add_section( - 'form_color_section', - array( - 'title' => __( 'Forms', 'gp-premium' ), - 'priority' => 130, - 'panel' => 'generate_colors_panel', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[form_background_color]', - array( - 'default' => $defaults['form_background_color'], - 'type' => 'option', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[form_background_color]', - array( - 'label' => __( 'Form Background', 'gp-premium' ), - 'section' => 'form_color_section', - 'settings' => 'generate_settings[form_background_color]', - 'palette' => $palettes, - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[form_background_color_focus]', - array( - 'default' => $defaults['form_background_color_focus'], - 'type' => 'option', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[form_background_color_focus]', - array( - 'label' => __( 'Form Background Focus', 'gp-premium' ), - 'section' => 'form_color_section', - 'settings' => 'generate_settings[form_background_color_focus]', - 'palette' => $palettes, - 'priority' => 3, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[form_border_color]', - array( - 'default' => $defaults['form_border_color'], - 'type' => 'option', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[form_border_color]', - array( - 'label' => __( 'Form Border', 'gp-premium' ), - 'section' => 'form_color_section', - 'settings' => 'generate_settings[form_border_color]', - 'palette' => $palettes, - 'priority' => 5, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[form_border_color_focus]', - array( - 'default' => $defaults['form_border_color_focus'], - 'type' => 'option', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[form_border_color_focus]', - array( - 'label' => __( 'Form Border Focus', 'gp-premium' ), - 'section' => 'form_color_section', - 'settings' => 'generate_settings[form_border_color_focus]', - 'palette' => $palettes, - 'priority' => 6, - ) - ) - ); - - // Add color settings. - $form_colors = array(); - $form_colors[] = array( - 'slug' => 'form_text_color', - 'default' => $defaults['form_text_color'], - 'label' => __( 'Form Text', 'gp-premium' ), - 'priority' => 2, - ); - $form_colors[] = array( - 'slug' => 'form_text_color_focus', - 'default' => $defaults['form_text_color_focus'], - 'label' => __( 'Form Text Focus', 'gp-premium' ), - 'priority' => 4, - ); - - foreach ( $form_colors as $color ) { - $wp_customize->add_setting( - 'generate_settings[' . $color['slug'] . ']', - array( - 'default' => $color['default'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - $color['slug'], - array( - 'label' => $color['label'], - 'section' => 'form_color_section', - 'settings' => 'generate_settings[' . $color['slug'] . ']', - 'priority' => $color['priority'], - ) - ) - ); - } - - // Add Footer colors. - $wp_customize->add_section( - 'footer_color_section', - array( - 'title' => __( 'Footer', 'gp-premium' ), - 'priority' => 150, - 'panel' => 'generate_colors_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_footer_color_shortcuts', - array( - 'section' => 'footer_color_section', - 'element' => __( 'Footer', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'generate_layout_footer', - 'typography' => 'font_footer_section', - 'backgrounds' => 'generate_backgrounds_footer', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_footer_widgets_title', - array( - 'section' => 'footer_color_section', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Footer Widgets', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[footer_widget_background_color]', - array( - 'default' => $defaults['footer_widget_background_color'], - 'type' => 'option', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[footer_widget_background_color]', - array( - 'label' => __( 'Background', 'gp-premium' ), - 'section' => 'footer_color_section', - 'settings' => 'generate_settings[footer_widget_background_color]', - 'palette' => $palettes, - ) - ) - ); - - // Add color settings. - $footer_widget_colors = array(); - $footer_widget_colors[] = array( - 'slug' => 'footer_widget_text_color', - 'default' => $defaults['footer_widget_text_color'], - 'label' => __( 'Text', 'gp-premium' ), - ); - $footer_widget_colors[] = array( - 'slug' => 'footer_widget_link_color', - 'default' => $defaults['footer_widget_link_color'], - 'label' => __( 'Link', 'gp-premium' ), - ); - $footer_widget_colors[] = array( - 'slug' => 'footer_widget_link_hover_color', - 'default' => $defaults['footer_widget_link_hover_color'], - 'label' => __( 'Link Hover', 'gp-premium' ), - ); - $footer_widget_colors[] = array( - 'slug' => 'footer_widget_title_color', - 'default' => $defaults['footer_widget_title_color'], - 'label' => __( 'Widget Title', 'gp-premium' ), - ); - - foreach ( $footer_widget_colors as $color ) { - $wp_customize->add_setting( - 'generate_settings[' . $color['slug'] . ']', - array( - 'default' => $color['default'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - $color['slug'], - array( - 'label' => $color['label'], - 'section' => 'footer_color_section', - 'settings' => 'generate_settings[' . $color['slug'] . ']', - ) - ) - ); - } - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_footer_title', - array( - 'section' => 'footer_color_section', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Footer Bar', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[footer_background_color]', - array( - 'default' => $defaults['footer_background_color'], - 'type' => 'option', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[footer_background_color]', - array( - 'label' => __( 'Background', 'gp-premium' ), - 'section' => 'footer_color_section', - 'settings' => 'generate_settings[footer_background_color]', - 'palette' => $palettes, - ) - ) - ); - - // Add color settings. - $footer_colors = array(); - $footer_colors[] = array( - 'slug' => 'footer_text_color', - 'default' => $defaults['footer_text_color'], - 'label' => __( 'Text', 'gp-premium' ), - ); - $footer_colors[] = array( - 'slug' => 'footer_link_color', - 'default' => $defaults['footer_link_color'], - 'label' => __( 'Link', 'gp-premium' ), - ); - $footer_colors[] = array( - 'slug' => 'footer_link_hover_color', - 'default' => $defaults['footer_link_hover_color'], - 'label' => __( 'Link Hover', 'gp-premium' ), - ); - - foreach ( $footer_colors as $color ) { - $wp_customize->add_setting( - 'generate_settings[' . $color['slug'] . ']', - array( - 'default' => $color['default'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - $color['slug'], - array( - 'label' => $color['label'], - 'section' => 'footer_color_section', - 'settings' => 'generate_settings[' . $color['slug'] . ']', - ) - ) - ); - } - - if ( isset( $defaults['back_to_top_background_color'] ) ) { - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_back_to_top_title', - array( - 'section' => 'footer_color_section', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Back to Top Button', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[back_to_top_background_color]', - array( - 'default' => $defaults['back_to_top_background_color'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[back_to_top_background_color]', - array( - 'label' => __( 'Background', 'gp-premium' ), - 'section' => 'footer_color_section', - 'settings' => 'generate_settings[back_to_top_background_color]', - 'palette' => $palettes, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[back_to_top_text_color]', - array( - 'default' => $defaults['back_to_top_text_color'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[back_to_top_text_color]', - array( - 'label' => __( 'Text', 'gp-premium' ), - 'section' => 'footer_color_section', - 'settings' => 'generate_settings[back_to_top_text_color]', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[back_to_top_background_color_hover]', - array( - 'default' => $defaults['back_to_top_background_color_hover'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[back_to_top_background_color_hover]', - array( - 'label' => __( 'Background Hover', 'gp-premium' ), - 'section' => 'footer_color_section', - 'settings' => 'generate_settings[back_to_top_background_color_hover]', - 'palette' => $palettes, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[back_to_top_text_color_hover]', - array( - 'default' => $defaults['back_to_top_text_color_hover'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[back_to_top_text_color_hover]', - array( - 'label' => __( 'Text Hover', 'gp-premium' ), - 'section' => 'footer_color_section', - 'settings' => 'generate_settings[back_to_top_text_color_hover]', - ) - ) - ); - } - } -} - -if ( ! function_exists( 'generate_get_color_setting' ) ) { - /** - * Wrapper function to get our settings - * - * @since 1.3.42 - * @param string $setting The setting to check. - */ - function generate_get_color_setting( $setting ) { - - // Bail if we don't have our color defaults. - if ( ! function_exists( 'generate_get_color_defaults' ) ) { - return; - } - - if ( function_exists( 'generate_get_defaults' ) ) { - $defaults = array_merge( generate_get_defaults(), generate_get_color_defaults() ); - } else { - $defaults = generate_get_color_defaults(); - } - - $generate_settings = wp_parse_args( - get_option( 'generate_settings', array() ), - $defaults - ); - - return $generate_settings[ $setting ]; - } -} - -if ( ! function_exists( 'generate_colors_rgba_to_hex' ) ) { - /** - * Convert RGBA to hex if necessary - * - * @since 1.3.42 - * @param string $rgba The string to convert to hex. - */ - function generate_colors_rgba_to_hex( $rgba ) { - // If it's not rgba, return it. - if ( false === strpos( $rgba, 'rgba' ) ) { - return $rgba; - } - - return substr( $rgba, 0, strrpos( $rgba, ',' ) ) . ')'; - } -} - -if ( ! function_exists( 'generate_get_default_color_palettes' ) ) { - /** - * Set up our colors for the color picker palettes and filter them so you can change them - * - * @since 1.3.42 - */ - function generate_get_default_color_palettes() { - $palettes = array( - generate_colors_rgba_to_hex( generate_get_color_setting( 'link_color' ) ), - generate_colors_rgba_to_hex( generate_get_color_setting( 'background_color' ) ), - generate_colors_rgba_to_hex( generate_get_color_setting( 'navigation_background_color' ) ), - generate_colors_rgba_to_hex( generate_get_color_setting( 'navigation_background_hover_color' ) ), - '#F1C40F', - '#1e72bd', - '#1ABC9C', - '#3498DB', - ); - - return apply_filters( 'generate_default_color_palettes', $palettes ); - } -} - -if ( ! function_exists( 'generate_enqueue_color_palettes' ) ) { - add_action( 'customize_controls_enqueue_scripts', 'generate_enqueue_color_palettes', 1001 ); - /** - * Add our custom color palettes to the color pickers in the Customizer. - * Hooks into 1001 priority to show up after Secondary Nav. - * - * @since 1.3.42 - */ - function generate_enqueue_color_palettes() { - // Old versions of WP don't get nice things. - if ( ! function_exists( 'wp_add_inline_script' ) ) { - return; - } - - // Grab our palette array and turn it into JS. - $palettes = wp_json_encode( generate_get_default_color_palettes() ); - - // Add our custom palettes. - // json_encode takes care of escaping. - wp_add_inline_script( 'wp-color-picker', 'jQuery.wp.wpColorPicker.prototype.options.palettes = ' . $palettes . ';' ); - } -} - -if ( ! function_exists( 'generate_colors_customizer_live_preview' ) ) { - add_action( 'customize_preview_init', 'generate_colors_customizer_live_preview' ); - /** - * Add our live preview javascript. - * - * @since 0.1 - */ - function generate_colors_customizer_live_preview() { - wp_enqueue_script( - 'generate-colors-customizer', - trailingslashit( plugin_dir_url( __FILE__ ) ) . 'js/customizer.js', - array( 'jquery', 'customize-preview' ), - GENERATE_COLORS_VERSION, - true - ); - - wp_register_script( - 'generate-wc-colors-customizer', - trailingslashit( plugin_dir_url( __FILE__ ) ) . 'js/wc-customizer.js', - array( 'jquery', 'customize-preview', 'generate-colors-customizer' ), - GENERATE_COLORS_VERSION, - true - ); - - wp_register_script( - 'generate-menu-plus-colors-customizer', - trailingslashit( plugin_dir_url( __FILE__ ) ) . 'js/menu-plus-customizer.js', - array( 'jquery', 'customize-preview', 'generate-colors-customizer' ), - GENERATE_COLORS_VERSION, - true - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/customizer.js deleted file mode 100644 index a2fb4253..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/customizer.js +++ /dev/null @@ -1,620 +0,0 @@ -/** - * Theme Customizer enhancements for a better user experience. - * - * Contains handlers to make Theme Customizer preview reload changes asynchronously. - */ -function generate_colors_live_update( id, selector, property, default_value, get_value, settings ) { - default_value = typeof default_value !== 'undefined' ? default_value : 'initial'; - get_value = typeof get_value !== 'undefined' ? get_value : ''; - settings = typeof settings !== 'undefined' ? settings : 'generate_settings'; - wp.customize( settings + '[' + id + ']', function( value ) { - value.bind( function( newval ) { - - // Stop the header link color from applying to the site title. - if ( 'header_link_color' === id || 'header_link_color' === id ) { - jQuery( '.site-header a' ).addClass( 'header-link' ); - jQuery( '.site-header .main-title a' ).removeClass( 'header-link' ); - } - - if ( 'content_link_color' === id || 'content_link_color_hover' === id || 'entry_meta_link_color' === id || 'blog_post_title_color' === id ) { - var content_link = jQuery( '.inside-article a' ); - var meta = jQuery( '.entry-meta a' ); - var title = jQuery( '.entry-title a' ); - - content_link.attr( 'data-content-link-color', true ); - - if ( '' !== wp.customize.value('generate_settings[entry_meta_link_color]')() ) { - meta.attr( 'data-content-link-color', '' ); - } else { - meta.attr( 'data-content-link-color', true ); - } - - if ( '' !== wp.customize.value('generate_settings[blog_post_title_color]')() ) { - title.attr( 'data-content-link-color', '' ); - } else { - title.attr( 'data-content-link-color', true ); - } - } - - default_value = ( '' !== get_value ) ? wp.customize.value('generate_settings[' + get_value + ']')() : default_value; - newval = ( '' !== newval ) ? newval : default_value; - var unique_id = ( 'generate_secondary_nav_settings' == settings ) ? 'secondary_' : ''; - if ( jQuery( 'style#' + unique_id + id ).length ) { - jQuery( 'style#' + unique_id + id ).html( selector + '{' + property + ':' + newval + ';}' ); - } else { - jQuery( 'head' ).append( '' ); - setTimeout(function() { - jQuery( 'style#' + id ).not( ':last' ).remove(); - }, 1000); - } - - } ); - } ); -} - -/** - * Header background color - * Empty: transparent - */ -generate_colors_live_update( 'top_bar_background_color', '.top-bar', 'background-color', 'transparent' ); - -/** - * Header text color - * Empty: text_color - */ -generate_colors_live_update( 'top_bar_text_color', '.top-bar', 'color', '', 'text_color' ); - -/** - * Header link color - * Empty: link_color - */ -generate_colors_live_update( 'top_bar_link_color', '.top-bar a, .top-bar a:visited', 'color', '', 'link_color' ); - -/** - * Header link color hover - * Empty: link_color_hover - */ -generate_colors_live_update( 'top_bar_link_color_hover', '.top-bar a:hover', 'color', '', 'link_color_hover' ); - - -/** - * Header background color - * Empty: transparent - */ -generate_colors_live_update( 'header_background_color', '.site-header', 'background-color', 'transparent' ); - -/** - * Header text color - * Empty: text_color - */ -generate_colors_live_update( 'header_text_color', '.site-header', 'color', '', 'text_color' ); - -/** - * Header link color - * Empty: link_color - */ -generate_colors_live_update( 'header_link_color', '.site-header a.header-link, .site-header a.header-link:visited', 'color', '', 'link_color' ); - -/** - * Header link color hover - * Empty: link_color_hover - */ -generate_colors_live_update( 'header_link_hover_color', '.site-header a.header-link:hover', 'color', '', 'link_color_hover' ); - -/** - * Site title color - * Empty: link_color - */ -generate_colors_live_update( 'site_title_color', '.main-title a,.main-title a:hover,.main-title a:visited,.header-wrap .navigation-stick .main-title a, .header-wrap .navigation-stick .main-title a:hover, .header-wrap .navigation-stick .main-title a:visited', 'color', '', 'link_color' ); - -/** - * Site tagline color - * Empty: text_color - */ -generate_colors_live_update( 'site_tagline_color', '.site-description', 'color', '', 'text_color' ); - -/** - * Main navigation background - * Empty: transparent - */ -generate_colors_live_update( 'navigation_background_color', '.main-navigation', 'background-color', 'transparent' ); - -/** - * Primary navigation text color - * Empty: link_color - */ -generate_colors_live_update( 'navigation_text_color', - '.main-navigation .main-nav ul li a,\ - .menu-toggle,button.menu-toggle:hover,\ - button.menu-toggle:focus,\ - .main-navigation .mobile-bar-items a,\ - .main-navigation .mobile-bar-items a:hover,\ - .main-navigation .mobile-bar-items a:focus,\ - .main-navigation .menu-bar-items', - 'color', '', 'link_color' -); - -/** - * Primary navigation text color hover - * Empty: link_color_hover - */ -generate_colors_live_update( 'navigation_text_hover_color', - '.navigation-search input[type="search"],\ - .navigation-search input[type="search"]:active,\ - .navigation-search input[type="search"]:focus,\ - .main-navigation .main-nav ul li:hover > a,\ - .main-navigation .main-nav ul li:focus > a,\ - .main-navigation .main-nav ul li.sfHover > a,\ - .main-navigation .menu-bar-item:hover a', - 'color', '', 'link_color_hover' -); - -/** - * Primary navigation menu item hover - * Empty: link_color_hover - */ -generate_colors_live_update( 'navigation_background_hover_color', - '.navigation-search input[type="search"],\ - .navigation-search input[type="search"]:focus,\ - .main-navigation .main-nav ul li:hover > a,\ - .main-navigation .main-nav ul li:focus > a,\ - .main-navigation .main-nav ul li.sfHover > a,\ - .main-navigation .menu-bar-item:hover a', - 'background-color', 'transparent' -); - -/** - * Primary sub-navigation color - * Empty: transparent - */ -generate_colors_live_update( 'subnavigation_background_color', '.main-navigation ul ul', 'background-color', 'transparent' ); - -/** - * Primary sub-navigation text color - * Empty: link_color - */ -generate_colors_live_update( 'subnavigation_text_color', '.main-navigation .main-nav ul ul li a', 'color', 'link_color' ); - -/** - * Primary sub-navigation hover - */ -var subnavigation_hover = '.main-navigation .main-nav ul ul li:hover > a, \ - .main-navigation .main-nav ul ul li:focus > a, \ - .main-navigation .main-nav ul ul li.sfHover > a'; - -/** - * Primary sub-navigation text hover - * Empty: link_color_hover - */ -generate_colors_live_update( 'subnavigation_text_hover_color', subnavigation_hover, 'color', '', 'link_color_hover' ); - -/** - * Primary sub-navigation background hover - * Empty: transparent - */ -generate_colors_live_update( 'subnavigation_background_hover_color', subnavigation_hover, 'background-color', 'transparent' ); - -/** - * Navigation current selectors - */ -var navigation_current = '.main-navigation .main-nav ul li[class*="current-menu-"] > a, \ - .main-navigation .main-nav ul li[class*="current-menu-"]:hover > a, \ - .main-navigation .main-nav ul li[class*="current-menu-"].sfHover > a'; - -/** - * Primary navigation current text - * Empty: link_color - */ -generate_colors_live_update( 'navigation_text_current_color', navigation_current, 'color', '', 'link_color' ); - -/** - * Primary navigation current text - * Empty: transparent - */ -generate_colors_live_update( 'navigation_background_current_color', navigation_current, 'background-color', 'transparent' ); - -/** - * Primary sub-navigation current selectors - */ -var subnavigation_current = '.main-navigation .main-nav ul ul li[class*="current-menu-"] > a,\ - .main-navigation .main-nav ul ul li[class*="current-menu-"]:hover > a, \ - .main-navigation .main-nav ul ul li[class*="current-menu-"].sfHover > a'; - -/** - * Primary sub-navigation current text - * Empty: link_color - */ -generate_colors_live_update( 'subnavigation_text_current_color', subnavigation_current, 'color', '', 'link_color' ); - -/** - * Primary navigation current item background - * Empty: transparent - */ -generate_colors_live_update( 'subnavigation_background_current_color', subnavigation_current, 'background-color', 'transparent' ); - -/** - * Secondary navigation background - * Empty: transparent - */ -generate_colors_live_update( 'navigation_background_color', '.secondary-navigation', 'background-color', 'transparent', '', 'generate_secondary_nav_settings' ); - -/** - * Secondary navigation text color - * Empty: link_color - */ -generate_colors_live_update( 'navigation_text_color', - '.secondary-navigation .main-nav ul li a,\ - .secondary-navigation .menu-toggle,\ - button.secondary-menu-toggle:hover,\ - button.secondary-menu-toggle:focus, \ - .secondary-navigation .top-bar, \ - .secondary-navigation .top-bar a,\ - .secondary-menu-bar-items,\ - .secondary-menu-bar-items .menu-bar-item > a', - 'color', '', 'link_color', 'generate_secondary_nav_settings' -); - -/** - * Navigation search - */ -wp.customize( 'generate_settings[navigation_search_background_color]', function( value ) { - value.bind( function( newval ) { - if ( jQuery( 'style#navigation_search_background_color' ).length ) { - jQuery( 'style#navigation_search_background_color' ).html( '.navigation-search input[type="search"],.navigation-search input[type="search"]:active, .navigation-search input[type="search"]:focus, .main-navigation .main-nav ul li.search-item.active > a, .main-navigation .menu-bar-items .search-item.active > a{background-color:' + newval + ';}' ); - } else { - jQuery( 'head' ).append( '' ); - setTimeout(function() { - jQuery( 'style#navigation_search_background_color' ).not( ':last' ).remove(); - }, 1000); - } - - if ( jQuery( 'style#navigation_search_background_opacity' ).length ) { - if ( newval ) { - jQuery( 'style#navigation_search_background_opacity' ).html( '.navigation-search input{opacity: 1;}' ); - } else { - jQuery( 'style#navigation_search_background_opacity' ).html( '.navigation-search input{opacity: 0.9;}' ); - } - } else { - if ( newval ) { - jQuery( 'head' ).append( '' ); - } - - setTimeout(function() { - jQuery( 'style#navigation_search_background_opacity' ).not( ':last' ).remove(); - }, 1000); - } - } ); -} ); - -generate_colors_live_update( 'navigation_search_text_color', '.navigation-search input[type="search"],.navigation-search input[type="search"]:active, .navigation-search input[type="search"]:focus, .main-navigation .main-nav ul li.search-item.active > a, .main-navigation .menu-bar-items .search-item.active > a', 'color', '' ); - -/** - * Secondary navigation text color hover - * Empty: link_color_hover - */ -generate_colors_live_update( 'navigation_text_hover_color', - '.secondary-navigation .main-nav ul li:hover > a, \ - .secondary-navigation .main-nav ul li:focus > a, \ - .secondary-navigation .main-nav ul li.sfHover > a,\ - .secondary-menu-bar-items .menu-bar-item:hover > a', - 'color', '', 'link_color_hover', 'generate_secondary_nav_settings' -); - -/** - * Secondary navigation menu item hover - * Empty: link_color_hover - */ -generate_colors_live_update( 'navigation_background_hover_color', - '.secondary-navigation .main-nav ul li:hover > a, \ - .secondary-navigation .main-nav ul li:focus > a, \ - .secondary-navigation .main-nav ul li.sfHover > a, \ - .secondary-menu-bar-items .menu-bar-item:hover > a', - 'background-color', 'transparent', '', 'generate_secondary_nav_settings' -); - -/** - * Secondary navigation top bar link hover - */ -wp.customize( 'generate_secondary_nav_settings[navigation_background_hover_color]', function( value ) { - value.bind( function( newval ) { - if ( jQuery( 'style#secondary_nav_top_bar_hover' ).length ) { - jQuery( 'style#secondary_nav_top_bar_hover' ).html( '.secondary-navigation .top-bar a:hover,.secondary-navigation .top-bar a:focus{color:' + newval + ';}' ); - } else { - jQuery( 'head' ).append( '' ); - setTimeout(function() { - jQuery( 'style#secondary_nav_top_bar_hover' ).not( ':last' ).remove(); - }, 1000); - } - } ); -} ); - -generate_colors_live_update( 'navigation_top_bar_hover_color', - '.secondary-navigation .top-bar a:hover, \ - .secondary-navigation .top-bar a:focus', - 'color', 'transparent', '', 'generate_secondary_nav_settings' -); - -/** - * Secondary sub-navigation color - * Empty: transparent - */ -generate_colors_live_update( 'subnavigation_background_color', '.secondary-navigation ul ul', 'background-color', 'transparent', '', 'generate_secondary_nav_settings' ); - -/** - * Secondary sub-navigation text color - * Empty: link_color - */ -generate_colors_live_update( 'subnavigation_text_color', '.secondary-navigation .main-nav ul ul li a', 'color', '', 'link_color', 'generate_secondary_nav_settings' ); - -/** - * Secondary sub-navigation hover - */ -var secondary_subnavigation_hover = '.secondary-navigation .main-nav ul ul li > a:hover, \ - .secondary-navigation .main-nav ul ul li:focus > a, \ - .secondary-navigation .main-nav ul ul li.sfHover > a'; - -/** - * Secondary sub-navigation text hover - * Empty: link_color_hover - */ -generate_colors_live_update( 'subnavigation_text_hover_color', secondary_subnavigation_hover, 'color', '', 'link_color_hover', 'generate_secondary_nav_settings' ); - -/** - * Secondary sub-navigation background hover - * Empty: transparent - */ -generate_colors_live_update( 'subnavigation_background_hover_color', secondary_subnavigation_hover, 'background-color', 'transparent', '', 'generate_secondary_nav_settings' ); - -/** - * Secondary navigation current selectors - */ -var secondary_navigation_current = '.secondary-navigation .main-nav ul li[class*="current-menu-"] > a, \ - .secondary-navigation .main-nav ul li[class*="current-menu-"]:hover > a, \ - .secondary-navigation .main-nav ul li[class*="current-menu-"].sfHover > a'; - -/** - * Secondary navigation current text - * Empty: link_color - */ -generate_colors_live_update( 'navigation_text_current_color', secondary_navigation_current, 'color', '', 'link_color', 'generate_secondary_nav_settings' ); - -/** - * Secondary navigation current text - * Empty: transparent - */ -generate_colors_live_update( 'navigation_background_current_color', secondary_navigation_current, 'background-color', 'transparent', '', 'generate_secondary_nav_settings' ); - -/** - * Secondary sub-navigation current selectors - */ -var secondary_subnavigation_current = '.secondary-navigation .main-nav ul ul li[class*="current-menu-"] > a,\ - .secondary-navigation .main-nav ul ul li[class*="current-menu-"]:hover > a, \ - .secondary-navigation .main-nav ul ul li[class*="current-menu-"].sfHover > a'; - -/** - * Secondary sub-navigation current text - * Empty: link_color - */ -generate_colors_live_update( 'subnavigation_text_current_color', secondary_subnavigation_current, 'color', '', 'link_color', 'generate_secondary_nav_settings' ); - -/** - * Primary navigation current item background - * Empty: transparent - */ -generate_colors_live_update( 'subnavigation_background_current_color', secondary_subnavigation_current, 'background-color', 'transparent', '', 'generate_secondary_nav_settings' ); - -/** - * Content selectors - */ -var content = '.separate-containers .inside-article,\ - .separate-containers .comments-area,\ - .separate-containers .page-header,\ - .one-container .container,\ - .separate-containers .paging-navigation,\ - .inside-page-header'; - -/** - * Content background - * Empty: transparent - */ -generate_colors_live_update( 'content_background_color', content, 'background-color', 'transparent' ); - -/** - * Content text color - * Empty: text_color - */ -generate_colors_live_update( 'content_text_color', content, 'color', '', 'text_color' ); - -/** - * Content links - * Empty: link_color - */ -generate_colors_live_update( 'content_link_color', - '.inside-article a:not(.button):not(.wp-block-button__link)[data-content-link-color=true], \ - .inside-article a:not(.button):not(.wp-block-button__link)[data-content-link-color=true]:visited,\ - .paging-navigation a,\ - .paging-navigation a:visited,\ - .comments-area a,\ - .comments-area a:visited,\ - .page-header a,\ - .page-header a:visited', - 'color', '', 'link_color' -); - -/** - * Content links on hover - * Empty: link_color_hover - */ -generate_colors_live_update( 'content_link_hover_color', - '.inside-article a:not(.button):not(.wp-block-button__link)[data-content-link-color=true]:hover,\ - .paging-navigation a:hover,\ - .comments-area a:hover,\ - .page-header a:hover', - 'color', '', 'link_color_hover' -); - -generate_colors_live_update( 'content_title_color', '.entry-header h1,.page-header h1', 'color', 'inherit', 'text_color' ); -generate_colors_live_update( 'blog_post_title_color', '.entry-title a,.entry-title a:visited', 'color', '', 'link_color' ); -generate_colors_live_update( 'blog_post_title_hover_color', '.entry-title a:hover', 'color', '', 'link_color_hover' ); -generate_colors_live_update( 'entry_meta_text_color', '.entry-meta', 'color', '', 'text_color' ); -generate_colors_live_update( 'entry_meta_link_color', '.entry-meta a, .entry-meta a:visited', 'color', '', 'link_color' ); -generate_colors_live_update( 'entry_meta_link_color_hover', '.entry-meta a:hover', 'color', '', 'link_color_hover' ); -generate_colors_live_update( 'h1_color', 'h1', 'color', '', 'text_color' ); -generate_colors_live_update( 'h2_color', 'h2', 'color', '', 'text_color' ); -generate_colors_live_update( 'h3_color', 'h3', 'color', '', 'text_color' ); -generate_colors_live_update( 'h4_color', 'h4', 'color', '', 'text_color' ); -generate_colors_live_update( 'h5_color', 'h5', 'color', '', 'text_color' ); -generate_colors_live_update( 'sidebar_widget_background_color', '.sidebar .widget', 'background-color', 'transparent' ); -generate_colors_live_update( 'sidebar_widget_text_color', '.sidebar .widget', 'color', '', 'text_color' ); -generate_colors_live_update( 'sidebar_widget_link_color', '.sidebar .widget a, .sidebar .widget a:visited', 'color', '', 'link_color' ); -generate_colors_live_update( 'sidebar_widget_link_hover_color', '.sidebar .widget a:hover', 'color', '', 'link_color_hover' ); -generate_colors_live_update( 'sidebar_widget_title_color', '.sidebar .widget .widget-title', 'color', '', 'text_color' ); -generate_colors_live_update( 'footer_widget_background_color', '.footer-widgets', 'background-color', 'transparent' ); -generate_colors_live_update( 'footer_widget_text_color', '.footer-widgets', 'color', '', 'text_color' ); -generate_colors_live_update( 'footer_widget_link_color', '.footer-widgets a, .footer-widgets a:visited', 'color', '', 'link_color' ); -generate_colors_live_update( 'footer_widget_link_hover_color', '.footer-widgets a:hover', 'color', '', 'link_color_hover' ); -generate_colors_live_update( 'footer_widget_title_color', '.footer-widgets .widget-title', 'color', '', 'text_color' ); -generate_colors_live_update( 'footer_background_color', '.site-info', 'background-color', 'transparent' ); -generate_colors_live_update( 'footer_text_color', '.site-info', 'color', '', 'text_color' ); -generate_colors_live_update( 'footer_link_color', '.site-info a, .site-info a:visited', 'color', '', 'link_color' ); -generate_colors_live_update( 'footer_link_hover_color', '.site-info a:hover', 'color', '', 'link_color_hover' ); - -/** - * Form selectors - */ -var forms = 'input[type="text"], \ - input[type="email"], \ - input[type="url"], \ - input[type="password"], \ - input[type="search"], \ - input[type="number"], \ - input[type="tel"], \ - textarea, \ - select'; - -/** - * Form background - * Empty: inherit - */ -generate_colors_live_update( 'form_background_color', forms, 'background-color', 'inherit' ); - -/** - * Border color - * Empty: inherit - */ -generate_colors_live_update( 'form_border_color', forms, 'border-color' ); - -/** - * Form text color - * Empty: text_color - */ -generate_colors_live_update( 'form_text_color', forms, 'color', '', 'text_color' ); - -/** - * Form background on focus selectors - * Empty: inherit - */ -var forms_focus = 'input[type="text"]:focus, \ - input[type="email"]:focus, \ - input[type="url"]:focus, \ - input[type="password"]:focus, \ - input[type="search"]:focus,\ - input[type="number"]:focus,\ - input[type="tel"]:focus, \ - textarea:focus, \ - select:focus'; - -/** - * Form background color on focus - * Empty: initial - */ -generate_colors_live_update( 'form_background_color_focus', forms_focus, 'background-color' ); - -/** - * Form text color on focus - * Empty: initial - */ -generate_colors_live_update( 'form_text_color_focus', forms_focus, 'color' ); - -/** - * Form border color on focus - * Empty: initial - */ -generate_colors_live_update( 'form_border_color_focus', forms_focus, 'border-color' ); - -/** - * Button selectors - */ -var button = 'button, \ - html input[type="button"], \ - input[type="reset"], \ - input[type="submit"],\ - a.button,\ - a.button:visited,\ - a.wp-block-button__link:not(.has-background)'; - -/** - * Button background - * Empty: initial - */ -generate_colors_live_update( 'form_button_background_color', button, 'background-color' ); - -/** - * Button text - * Empty: initial - */ -generate_colors_live_update( 'form_button_text_color', button, 'color' ); - -/** - * Button on hover/focus selectors - * Empty: initial - */ -var button_hover = 'button:hover, \ - html input[type="button"]:hover, \ - input[type="reset"]:hover, \ - input[type="submit"]:hover,\ - a.button:hover,\ - button:focus, \ - html input[type="button"]:focus, \ - input[type="reset"]:focus, \ - input[type="submit"]:focus,\ - a.button:focus,\ - a.wp-block-button__link:not(.has-background):active,\ - a.wp-block-button__link:not(.has-background):focus,\ - a.wp-block-button__link:not(.has-background):hover'; - -/** - * Button color on hover - * Empty: initial - */ -generate_colors_live_update( 'form_button_background_color_hover', button_hover, 'background-color' ); - -/** - * Button text color on hover - * Empty: initial - */ -generate_colors_live_update( 'form_button_text_color_hover', button_hover, 'color' ); - -/** - * Back to top background color - * Empty: transparent - */ -generate_colors_live_update( 'back_to_top_background_color', 'a.generate-back-to-top', 'background-color', 'transparent' ); - -/** - * Back to top text color - * Empty: text_color - */ -generate_colors_live_update( 'back_to_top_text_color', 'a.generate-back-to-top', 'color', '', 'text_color' ); - -/** - * Back to top background color hover - * Empty: transparent - */ -generate_colors_live_update( 'back_to_top_background_color_hover', 'a.generate-back-to-top:hover,a.generate-back-to-top:focus', 'background-color', 'transparent' ); - -/** - * Back to top text color hover - * Empty: text_color - */ -generate_colors_live_update( 'back_to_top_text_color_hover', 'a.generate-back-to-top:hover,a.generate-back-to-top:focus', 'color', '', 'text_color' ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/menu-plus-customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/menu-plus-customizer.js deleted file mode 100644 index f74fa31e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/menu-plus-customizer.js +++ /dev/null @@ -1,102 +0,0 @@ -/** - * Main navigation background - * Empty: transparent - */ -generate_colors_live_update( 'slideout_background_color', '.main-navigation.slideout-navigation', 'background-color', '' ); - -/** - * Primary navigation text color - * Empty: link_color - */ -generate_colors_live_update( 'slideout_text_color', '.slideout-navigation.main-navigation .main-nav ul li a, .slideout-navigation a, .slideout-navigation', 'color', '' ); - -/** - * Primary navigation text color hover - * Empty: link_color_hover - */ -generate_colors_live_update( 'slideout_text_hover_color', - '.slideout-navigation.main-navigation .main-nav ul li:hover > a,\ - .slideout-navigation.main-navigation .main-nav ul li:focus > a,\ - .slideout-navigation.main-navigation .main-nav ul li.sfHover > a', - 'color', '' -); - -/** - * Primary navigation menu item hover - * Empty: link_color_hover - */ -generate_colors_live_update( 'slideout_background_hover_color', - '.slideout-navigation.main-navigation .main-nav ul li:hover > a,\ - .slideout-navigation.main-navigation .main-nav ul li:focus > a,\ - .slideout-navigation.main-navigation .main-nav ul li.sfHover > a', - 'background-color', 'transparent' -); - -/** - * Primary sub-navigation color - * Empty: transparent - */ -generate_colors_live_update( 'slideout_submenu_background_color', '.slideout-navigation.main-navigation ul ul', 'background-color', '' ); - -/** - * Primary sub-navigation text color - * Empty: link_color - */ -generate_colors_live_update( 'slideout_submenu_text_color', '.slideout-navigation.main-navigation .main-nav ul ul li a', 'color', '' ); - -/** - * Primary sub-navigation hover - */ -var slideout_submenu_hover = '.slideout-navigation.main-navigation .main-nav ul ul li:hover > a,\ - .slideout-navigation.main-navigation .main-nav ul ul li:focus > a,\ - .slideout-navigation.main-navigation .main-nav ul ul li.sfHover > a'; - -/** - * Primary sub-navigation text hover - * Empty: link_color_hover - */ -generate_colors_live_update( 'slideout_submenu_text_hover_color', slideout_submenu_hover, 'color', '' ); - -/** - * Primary sub-navigation background hover - * Empty: transparent - */ -generate_colors_live_update( 'slideout_submenu_background_hover_color', slideout_submenu_hover, 'background-color', '' ); - -/** - * Navigation current selectors - */ -var slideout_current = '.slideout-navigation.main-navigation .main-nav ul li[class*="current-menu-"] > a,\ - .slideout-navigation.main-navigation .main-nav ul li[class*="current-menu-"] > a:hover,\ - .slideout-navigation.main-navigation .main-nav ul li[class*="current-menu-"].sfHover > a'; - -/** - * Primary navigation current text - * Empty: link_color - */ -generate_colors_live_update( 'slideout_text_current_color', slideout_current, 'color', '' ); - -/** - * Primary navigation current text - * Empty: transparent - */ -generate_colors_live_update( 'slideout_background_current_color', slideout_current, 'background-color' ); - -/** - * Primary sub-navigation current selectors - */ -var slideout_submenu_current = '.slideout-navigation.main-navigation .main-nav ul ul li[class*="current-menu-"] > a,\ - .slideout-navigation.main-navigation .main-nav ul ul li[class*="current-menu-"] > a:hover,\ - .slideout-navigation.main-navigation .main-nav ul ul li[class*="current-menu-"].sfHover > a'; - -/** - * Primary sub-navigation current text - * Empty: link_color - */ -generate_colors_live_update( 'slideout_submenu_text_current_color', slideout_submenu_current, 'color', '' ); - -/** - * Primary navigation current item background - * Empty: transparent - */ -generate_colors_live_update( 'slideout_submenu_background_current_color', slideout_submenu_current, 'background-color' ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/wc-customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/wc-customizer.js deleted file mode 100644 index b694f300..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/js/wc-customizer.js +++ /dev/null @@ -1,161 +0,0 @@ -/** - * WooCommerce link color - */ -generate_colors_live_update( 'wc_product_title_color', '.woocommerce ul.products li.product .woocommerce-LoopProduct-link', 'color', '', 'link_color' ); -generate_colors_live_update( 'wc_product_title_color_hover', '.woocommerce ul.products li.product .woocommerce-LoopProduct-link:hover', 'color', '', 'link_color_hover' ); - -/** - * WooCommerce primary button - */ -var wc_button = '.woocommerce #respond input#submit, .woocommerce a.button, .woocommerce button.button, .woocommerce input.button, button, \ - html input[type="button"], \ - input[type="reset"], \ - input[type="submit"],\ - .button,\ - .button:visited'; -generate_colors_live_update( 'form_button_background_color', wc_button, 'background-color' ); -generate_colors_live_update( 'form_button_text_color', wc_button, 'color' ); - -/** - * WooCommerce primary button hover - */ -var wc_button_hover = '.woocommerce #respond input#submit:hover, .woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce input.button:hover,button:hover, \ - html input[type="button"]:hover, \ - input[type="reset"]:hover, \ - input[type="submit"]:hover,\ - .button:hover,\ - button:focus, \ - html input[type="button"]:focus, \ - input[type="reset"]:focus, \ - input[type="submit"]:focus,\ - .button:focus'; -generate_colors_live_update( 'form_button_background_color_hover', wc_button_hover, 'background-color' ); -generate_colors_live_update( 'form_button_text_color_hover', wc_button_hover, 'color' ); - -/** - * WooCommerce alt button - */ -var wc_alt_button = '.woocommerce #respond input#submit.alt, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt'; -generate_colors_live_update( 'wc_alt_button_background', wc_alt_button, 'background-color' ); -generate_colors_live_update( 'wc_alt_button_text', wc_alt_button, 'color' ); - -/** - * WooCommerce alt button hover - */ -var wc_alt_button_hover = '.woocommerce #respond input#submit.alt:hover, .woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover, .woocommerce input.button.alt:hover'; -generate_colors_live_update( 'wc_alt_button_background_hover', wc_alt_button_hover, 'background-color' ); -generate_colors_live_update( 'wc_alt_button_text_hover', wc_alt_button_hover, 'color' ); - -/** - * WooCommerce star ratings - */ -var wc_stars = '.woocommerce .star-rating span:before, .woocommerce .star-rating:before'; -generate_colors_live_update( 'wc_rating_stars', wc_stars, 'color' ); - -/** - * WooCommerce sale sticker - */ -var wc_sale_sticker = '.woocommerce span.onsale'; -generate_colors_live_update( 'wc_sale_sticker_background', wc_sale_sticker, 'background-color' ); -generate_colors_live_update( 'wc_sale_sticker_text', wc_sale_sticker, 'color' ); - -/** - * WooCommerce price - */ -var wc_price = '.woocommerce ul.products li.product .price, .woocommerce div.product p.price'; -generate_colors_live_update( 'wc_price_color', wc_price, 'color' ); - -/** - * WooCommerce product tab text - */ -var wc_product_tab = '.woocommerce div.product .woocommerce-tabs ul.tabs li a'; -generate_colors_live_update( 'wc_product_tab', wc_product_tab, 'color' ); - -/** - * WooCommerce product tab text highlight/active - */ -var wc_product_tab_active = '.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover, .woocommerce div.product .woocommerce-tabs ul.tabs li.active a'; -generate_colors_live_update( 'wc_product_tab_highlight', wc_product_tab_active, 'color' ); - -/** - * WooCommerce success message - */ -var wc_success_message = '.woocommerce-message'; -generate_colors_live_update( 'wc_success_message_background', wc_success_message, 'background-color' ); -generate_colors_live_update( 'wc_success_message_text', wc_success_message + ', div.woocommerce-message a.button, div.woocommerce-message a.button:focus, div.woocommerce-message a.button:hover, div.woocommerce-message a, div.woocommerce-message a:focus, div.woocommerce-message a:hover', 'color' ); - -/** - * WooCommerce info message - */ -var wc_info_message = '.woocommerce-info'; -generate_colors_live_update( 'wc_info_message_background', wc_info_message, 'background-color' ); -generate_colors_live_update( 'wc_info_message_text', wc_info_message + ', div.woocommerce-info a.button, div.woocommerce-info a.button:focus, div.woocommerce-info a.button:hover, div.woocommerce-info a, div.woocommerce-info a:focus, div.woocommerce-info a:hover', 'color' ); - -/** - * WooCommerce error message - */ -var wc_error_message = '.woocommerce-error'; -generate_colors_live_update( 'wc_error_message_background', wc_error_message, 'background-color' ); -generate_colors_live_update( 'wc_error_message_text', wc_error_message + ', div.woocommerce-error a.button, div.woocommerce-error a.button:focus, div.woocommerce-error a.button:hover, div.woocommerce-error a, div.woocommerce-error a:focus, div.woocommerce-error a:hover', 'color' ); - -/** - * Menu Mini Cart - */ -generate_colors_live_update( 'wc_mini_cart_background_color', '#wc-mini-cart', 'background-color' ); -generate_colors_live_update( 'wc_mini_cart_text_color', '#wc-mini-cart,#wc-mini-cart a:not(.button), #wc-mini-cart a.remove', 'color' ); - -generate_colors_live_update( 'wc_mini_cart_button_background', '#wc-mini-cart .button.checkout', 'background-color' ); -generate_colors_live_update( 'wc_mini_cart_button_text', '#wc-mini-cart .button.checkout', 'color' ); - -generate_colors_live_update( 'wc_mini_cart_button_background_hover', '#wc-mini-cart .button.checkout:hover, #wc-mini-cart .button.checkout:focus, #wc-mini-cart .button.checkout:active', 'background-color' ); -generate_colors_live_update( 'wc_mini_cart_button_text_hover', '#wc-mini-cart .button.checkout:hover, #wc-mini-cart .button.checkout:focus, #wc-mini-cart .button.checkout:active', 'color' ); - -/** - * Sticky panel cart button - */ - generate_colors_live_update( 'wc_panel_cart_background_color', '.add-to-cart-panel', 'background-color' ); - generate_colors_live_update( 'wc_panel_cart_text_color', '.add-to-cart-panel, .add-to-cart-panel a:not(.button)', 'color' ); - - generate_colors_live_update( 'wc_panel_cart_button_background', '#wc-sticky-cart-panel .button', 'background-color' ); - generate_colors_live_update( 'wc_panel_cart_button_text', '#wc-sticky-cart-panel .button', 'color' ); - - generate_colors_live_update( 'wc_panel_cart_button_background_hover', '#wc-sticky-cart-panel .button:hover, #wc-sticky-cart-panel .button:focus, #wc-sticky-cart-panel .button:active', 'background-color' ); - generate_colors_live_update( 'wc_panel_cart_button_text_hover', '#wc-sticky-cart-panel .button:hover, #wc-sticky-cart-panel .button:focus, #wc-sticky-cart-panel .button:active', 'color' ); - -/** - * Price slider bar - */ -generate_colors_live_update( 'wc_price_slider_background_color', '.woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content', 'background-color' ); -generate_colors_live_update( 'wc_price_slider_bar_color', '.woocommerce .widget_price_filter .ui-slider .ui-slider-range, .woocommerce .widget_price_filter .ui-slider .ui-slider-handle', 'background-color' ); - -// Archive product description text -wp.customize( 'generate_settings[text_color]', function( value ) { - value.bind( function( newval ) { - if ( ! wp.customize.value('generate_settings[content_text_color]')() ) { - if ( jQuery( 'style#wc_desc_color' ).length ) { - jQuery( 'style#wc_desc_color' ).html( '.woocommerce-product-details__short-description{color:' + newval + ';}' ); - } else { - jQuery( 'head' ).append( '' ); - setTimeout(function() { - jQuery( 'style#wc_desc_color' ).not( ':last' ).remove(); - }, 1000); - } - } - } ); -} ); - -wp.customize( 'generate_settings[content_text_color]', function( value ) { - value.bind( function( newval ) { - if ( '' == newval ) { - newval = wp.customize.value('generate_settings[text_color]')(); - } - if ( jQuery( 'style#wc_desc_color' ).length ) { - jQuery( 'style#wc_desc_color' ).html( '.woocommerce-product-details__short-description{color:' + newval + ';}' ); - } else { - jQuery( 'head' ).append( '' ); - setTimeout(function() { - jQuery( 'style#wc_desc_color' ).not( ':last' ).remove(); - }, 1000); - } - } ); -} ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/secondary-nav-colors.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/secondary-nav-colors.php deleted file mode 100644 index 7c3ee911..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/secondary-nav-colors.php +++ /dev/null @@ -1,403 +0,0 @@ -get_section( 'secondary_nav_section' ) ) { - return; - } - - // Bail if we don't have our color defaults. - if ( ! function_exists( 'generate_secondary_nav_get_defaults' ) ) { - return; - } - - // Add our controls. - require_once GP_LIBRARY_DIRECTORY . 'customizer-helpers.php'; - - // Get our defaults. - $defaults = generate_secondary_nav_get_defaults(); - - // Add control types so controls can be built using JS. - if ( method_exists( $wp_customize, 'register_control_type' ) ) { - $wp_customize->register_control_type( 'GeneratePress_Alpha_Color_Customize_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Title_Customize_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Section_Shortcut_Control' ); - } - - // Get our palettes. - $palettes = generate_get_default_color_palettes(); - - // Add Secondary Navigation section. - $wp_customize->add_section( - 'secondary_navigation_color_section', - array( - 'title' => __( 'Secondary Navigation', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 71, - 'panel' => 'generate_colors_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_secondary_navigation_color_shortcuts', - array( - 'section' => 'secondary_navigation_color_section', - 'element' => __( 'Secondary Navigation', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'secondary_nav_section', - 'typography' => 'secondary_font_section', - 'backgrounds' => 'secondary_bg_images_section', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_secondary_navigation_items', - array( - 'section' => 'secondary_navigation_color_section', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Parent Items', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - // Background. - $wp_customize->add_setting( - 'generate_secondary_nav_settings[navigation_background_color]', - array( - 'default' => $defaults['navigation_background_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'secondary_navigation_background_color', - array( - 'label' => __( 'Background', 'gp-premium' ), - 'section' => 'secondary_navigation_color_section', - 'settings' => 'generate_secondary_nav_settings[navigation_background_color]', - 'palette' => $palettes, - ) - ) - ); - - // Text. - $wp_customize->add_setting( - 'generate_secondary_nav_settings[navigation_text_color]', - array( - 'default' => $defaults['navigation_text_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'secondary_navigation_text_color', - array( - 'label' => __( 'Text', 'gp-premium' ), - 'section' => 'secondary_navigation_color_section', - 'settings' => 'generate_secondary_nav_settings[navigation_text_color]', - ) - ) - ); - - // Background hover. - $wp_customize->add_setting( - 'generate_secondary_nav_settings[navigation_background_hover_color]', - array( - 'default' => $defaults['navigation_background_hover_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'secondary_navigation_background_hover_color', - array( - 'label' => __( 'Background Hover', 'gp-premium' ), - 'section' => 'secondary_navigation_color_section', - 'settings' => 'generate_secondary_nav_settings[navigation_background_hover_color]', - 'palette' => $palettes, - ) - ) - ); - - // Text hover. - $wp_customize->add_setting( - 'generate_secondary_nav_settings[navigation_text_hover_color]', - array( - 'default' => $defaults['navigation_text_hover_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'secondary_navigation_text_hover_color', - array( - 'label' => __( 'Text Hover', 'gp-premium' ), - 'section' => 'secondary_navigation_color_section', - 'settings' => 'generate_secondary_nav_settings[navigation_text_hover_color]', - ) - ) - ); - - // Background current. - $wp_customize->add_setting( - 'generate_secondary_nav_settings[navigation_background_current_color]', - array( - 'default' => $defaults['navigation_background_current_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'secondary_navigation_background_current_color', - array( - 'label' => __( 'Background Current', 'gp-premium' ), - 'section' => 'secondary_navigation_color_section', - 'settings' => 'generate_secondary_nav_settings[navigation_background_current_color]', - 'palette' => $palettes, - ) - ) - ); - - // Text current. - $wp_customize->add_setting( - 'generate_secondary_nav_settings[navigation_text_current_color]', - array( - 'default' => $defaults['navigation_text_current_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'secondary_navigation_text_current_color', - array( - 'label' => __( 'Text Current', 'gp-premium' ), - 'section' => 'secondary_navigation_color_section', - 'settings' => 'generate_secondary_nav_settings[navigation_text_current_color]', - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_secondary_navigation_sub_menu_items', - array( - 'section' => 'secondary_navigation_color_section', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Sub-Menu Items', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - // Background. - $wp_customize->add_setting( - 'generate_secondary_nav_settings[subnavigation_background_color]', - array( - 'default' => $defaults['subnavigation_background_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'secondary_subnavigation_background_color', - array( - 'label' => __( 'Background', 'gp-premium' ), - 'section' => 'secondary_navigation_color_section', - 'settings' => 'generate_secondary_nav_settings[subnavigation_background_color]', - 'palette' => $palettes, - ) - ) - ); - - // Text. - $wp_customize->add_setting( - 'generate_secondary_nav_settings[subnavigation_text_color]', - array( - 'default' => $defaults['subnavigation_text_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'secondary_subnavigation_text_color', - array( - 'label' => __( 'Text', 'gp-premium' ), - 'section' => 'secondary_navigation_color_section', - 'settings' => 'generate_secondary_nav_settings[subnavigation_text_color]', - ) - ) - ); - - // Background hover. - $wp_customize->add_setting( - 'generate_secondary_nav_settings[subnavigation_background_hover_color]', - array( - 'default' => $defaults['subnavigation_background_hover_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'secondary_subnavigation_background_hover_color', - array( - 'label' => __( 'Background Hover', 'gp-premium' ), - 'section' => 'secondary_navigation_color_section', - 'settings' => 'generate_secondary_nav_settings[subnavigation_background_hover_color]', - 'palette' => $palettes, - ) - ) - ); - - // Text hover. - $wp_customize->add_setting( - 'generate_secondary_nav_settings[subnavigation_text_hover_color]', - array( - 'default' => $defaults['subnavigation_text_hover_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'secondary_subnavigation_text_hover_color', - array( - 'label' => __( 'Text Hover', 'gp-premium' ), - 'section' => 'secondary_navigation_color_section', - 'settings' => 'generate_secondary_nav_settings[subnavigation_text_hover_color]', - ) - ) - ); - - // Background current. - $wp_customize->add_setting( - 'generate_secondary_nav_settings[subnavigation_background_current_color]', - array( - 'default' => $defaults['subnavigation_background_current_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'secondary_subnavigation_background_current_color', - array( - 'label' => __( 'Background Current', 'gp-premium' ), - 'section' => 'secondary_navigation_color_section', - 'settings' => 'generate_secondary_nav_settings[subnavigation_background_current_color]', - 'palette' => $palettes, - ) - ) - ); - - // Text current. - $wp_customize->add_setting( - 'generate_secondary_nav_settings[subnavigation_text_current_color]', - array( - 'default' => $defaults['subnavigation_text_current_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'secondary_subnavigation_text_current_color', - array( - 'label' => __( 'Text Current', 'gp-premium' ), - 'section' => 'secondary_navigation_color_section', - 'settings' => 'generate_secondary_nav_settings[subnavigation_text_current_color]', - ) - ) - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/slideout-nav-colors.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/slideout-nav-colors.php deleted file mode 100644 index f479dd6e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/slideout-nav-colors.php +++ /dev/null @@ -1,400 +0,0 @@ -get_section( 'menu_plus_slideout_menu' ) ) { - return; - } - - // Bail if we don't have our color defaults. - if ( ! function_exists( 'generate_get_color_defaults' ) ) { - return; - } - - // Add our controls. - require_once GP_LIBRARY_DIRECTORY . 'customizer-helpers.php'; - - // Get our defaults. - $defaults = generate_get_color_defaults(); - - // Add control types so controls can be built using JS. - if ( method_exists( $wp_customize, 'register_control_type' ) ) { - $wp_customize->register_control_type( 'GeneratePress_Alpha_Color_Customize_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Section_Shortcut_Control' ); - } - - // Get our palettes. - $palettes = generate_get_default_color_palettes(); - - // Add Secondary Navigation section. - $wp_customize->add_section( - 'slideout_color_section', - array( - 'title' => __( 'Off Canvas Panel', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 73, - 'panel' => 'generate_colors_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_off_canvas_color_shortcuts', - array( - 'section' => 'slideout_color_section', - 'element' => __( 'Off Canvas Panel', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'menu_plus_slideout_menu', - 'typography' => 'generate_slideout_typography', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_slideout_navigation_items', - array( - 'section' => 'slideout_color_section', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Parent Menu Items', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - // Background. - $wp_customize->add_setting( - 'generate_settings[slideout_background_color]', - array( - 'default' => $defaults['slideout_background_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[slideout_background_color]', - array( - 'label' => __( 'Background', 'gp-premium' ), - 'section' => 'slideout_color_section', - 'settings' => 'generate_settings[slideout_background_color]', - 'palette' => $palettes, - ) - ) - ); - - // Text. - $wp_customize->add_setting( - 'generate_settings[slideout_text_color]', - array( - 'default' => $defaults['slideout_text_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[slideout_text_color]', - array( - 'label' => __( 'Text', 'gp-premium' ), - 'section' => 'slideout_color_section', - 'settings' => 'generate_settings[slideout_text_color]', - ) - ) - ); - - // Background hover. - $wp_customize->add_setting( - 'generate_settings[slideout_background_hover_color]', - array( - 'default' => $defaults['slideout_background_hover_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[slideout_background_hover_color]', - array( - 'label' => __( 'Background Hover', 'gp-premium' ), - 'section' => 'slideout_color_section', - 'settings' => 'generate_settings[slideout_background_hover_color]', - 'palette' => $palettes, - ) - ) - ); - - // Text hover. - $wp_customize->add_setting( - 'generate_settings[slideout_text_hover_color]', - array( - 'default' => $defaults['slideout_text_hover_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[slideout_text_hover_color]', - array( - 'label' => __( 'Text Hover', 'gp-premium' ), - 'section' => 'slideout_color_section', - 'settings' => 'generate_settings[slideout_text_hover_color]', - ) - ) - ); - - // Background current. - $wp_customize->add_setting( - 'generate_settings[slideout_background_current_color]', - array( - 'default' => $defaults['slideout_background_current_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[slideout_background_current_color]', - array( - 'label' => __( 'Background Current', 'gp-premium' ), - 'section' => 'slideout_color_section', - 'settings' => 'generate_settings[slideout_background_current_color]', - 'palette' => $palettes, - ) - ) - ); - - // Text current. - $wp_customize->add_setting( - 'generate_settings[slideout_text_current_color]', - array( - 'default' => $defaults['slideout_text_current_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[slideout_text_current_color]', - array( - 'label' => __( 'Text Current', 'gp-premium' ), - 'section' => 'slideout_color_section', - 'settings' => 'generate_settings[slideout_text_current_color]', - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_slideout_navigation_sub_menu_items', - array( - 'section' => 'slideout_color_section', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Sub-Menu Items', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - // Background. - $wp_customize->add_setting( - 'generate_settings[slideout_submenu_background_color]', - array( - 'default' => $defaults['slideout_submenu_background_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[slideout_submenu_background_color]', - array( - 'label' => __( 'Background', 'gp-premium' ), - 'section' => 'slideout_color_section', - 'settings' => 'generate_settings[slideout_submenu_background_color]', - 'palette' => $palettes, - ) - ) - ); - - // Text. - $wp_customize->add_setting( - 'generate_settings[slideout_submenu_text_color]', - array( - 'default' => $defaults['slideout_submenu_text_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[slideout_submenu_text_color]', - array( - 'label' => __( 'Text', 'gp-premium' ), - 'section' => 'slideout_color_section', - 'settings' => 'generate_settings[slideout_submenu_text_color]', - ) - ) - ); - - // Background hover. - $wp_customize->add_setting( - 'generate_settings[slideout_submenu_background_hover_color]', - array( - 'default' => $defaults['slideout_submenu_background_hover_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[slideout_submenu_background_hover_color]', - array( - 'label' => __( 'Background Hover', 'gp-premium' ), - 'section' => 'slideout_color_section', - 'settings' => 'generate_settings[slideout_submenu_background_hover_color]', - 'palette' => $palettes, - ) - ) - ); - - // Text hover. - $wp_customize->add_setting( - 'generate_settings[slideout_submenu_text_hover_color]', - array( - 'default' => $defaults['slideout_submenu_text_hover_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[slideout_submenu_text_hover_color]', - array( - 'label' => __( 'Text Hover', 'gp-premium' ), - 'section' => 'slideout_color_section', - 'settings' => 'generate_settings[slideout_submenu_text_hover_color]', - ) - ) - ); - - // Background current. - $wp_customize->add_setting( - 'generate_settings[slideout_submenu_background_current_color]', - array( - 'default' => $defaults['slideout_submenu_background_current_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[slideout_submenu_background_current_color]', - array( - 'label' => __( 'Background Current', 'gp-premium' ), - 'section' => 'slideout_color_section', - 'settings' => 'generate_settings[slideout_submenu_background_current_color]', - 'palette' => $palettes, - ) - ) - ); - - // Text current. - $wp_customize->add_setting( - 'generate_settings[slideout_submenu_text_current_color]', - array( - 'default' => $defaults['slideout_submenu_text_current_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[slideout_submenu_text_current_color]', - array( - 'label' => __( 'Text Current', 'gp-premium' ), - 'section' => 'slideout_color_section', - 'settings' => 'generate_settings[slideout_submenu_text_current_color]', - ) - ) - ); -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/woocommerce-colors.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/woocommerce-colors.php deleted file mode 100644 index 6c453815..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/functions/woocommerce-colors.php +++ /dev/null @@ -1,911 +0,0 @@ -get_section( 'generate_woocommerce_colors' ) ) { - return; - } - - if ( ! function_exists( 'generate_get_color_defaults' ) ) { - return; - } - - // Add our controls. - require_once GP_LIBRARY_DIRECTORY . 'customizer-helpers.php'; - - // Get our defaults. - $defaults = generate_get_color_defaults(); - - // Add control types so controls can be built using JS. - if ( method_exists( $wp_customize, 'register_control_type' ) ) { - $wp_customize->register_control_type( 'GeneratePress_Alpha_Color_Customize_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Title_Customize_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Information_Customize_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Section_Shortcut_Control' ); - } - - // Get our palettes. - $palettes = generate_get_default_color_palettes(); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_woocommerce_color_shortcuts', - array( - 'section' => 'generate_woocommerce_colors', - 'element' => __( 'WooCommerce', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'generate_woocommerce_layout', - 'typography' => 'generate_woocommerce_typography', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 0, - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_woocommerce_button_title', - array( - 'section' => 'generate_woocommerce_colors', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Buttons', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Information_Customize_Control( - $wp_customize, - 'generate_woocommerce_primary_button_message', - array( - 'section' => 'generate_woocommerce_colors', - 'label' => __( 'Primary Button Colors', 'gp-premium' ), - 'description' => __( 'Primary button colors can be set here.', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_alt_button_background]', - array( - 'default' => $defaults['wc_alt_button_background'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[wc_alt_button_background]', - array( - 'label' => __( 'Alt Button Background', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_alt_button_background]', - 'palette' => $palettes, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_alt_button_background_hover]', - array( - 'default' => $defaults['wc_alt_button_background_hover'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[wc_alt_button_background_hover]', - array( - 'label' => __( 'Alt Button Background Hover', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_alt_button_background_hover]', - 'palette' => $palettes, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_alt_button_text]', - array( - 'default' => $defaults['wc_alt_button_text'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_alt_button_text]', - array( - 'label' => __( 'Alt Button Text', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_alt_button_text]', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_alt_button_text_hover]', - array( - 'default' => $defaults['wc_alt_button_text_hover'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_alt_button_text_hover]', - array( - 'label' => __( 'Alt Button Text Hover', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_alt_button_text_hover]', - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_woocommerce_product_title', - array( - 'section' => 'generate_woocommerce_colors', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Products', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_product_title_color]', - array( - 'default' => $defaults['wc_product_title_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_product_title_color]', - array( - 'label' => __( 'Product Title', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_product_title_color]', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_product_title_color_hover]', - array( - 'default' => $defaults['wc_product_title_color_hover'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_product_title_color_hover]', - array( - 'label' => __( 'Product Title Hover', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_product_title_color_hover]', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_rating_stars]', - array( - 'default' => $defaults['wc_rating_stars'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'transport' => '', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[wc_rating_stars]', - array( - 'label' => __( 'Star Ratings', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_rating_stars]', - 'palette' => $palettes, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_sale_sticker_background]', - array( - 'default' => $defaults['wc_sale_sticker_background'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[wc_sale_sticker_background]', - array( - 'label' => __( 'Sale Sticker Background', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_sale_sticker_background]', - 'palette' => $palettes, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_sale_sticker_text]', - array( - 'default' => $defaults['wc_sale_sticker_text'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_sale_sticker_text]', - array( - 'label' => __( 'Sale Sticker Text', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_sale_sticker_text]', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_price_color]', - array( - 'default' => $defaults['wc_price_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_price_color]', - array( - 'label' => __( 'Price', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_price_color]', - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_woocommerce_panel_cart_title', - array( - 'section' => 'generate_woocommerce_colors', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Sticky Panel Cart', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_panel_cart_background_color]', - array( - 'default' => $defaults['wc_panel_cart_background_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[wc_panel_cart_background_color]', - array( - 'label' => __( 'Background Color', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_panel_cart_background_color]', - 'palette' => $palettes, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_panel_cart_text_color]', - array( - 'default' => $defaults['wc_panel_cart_text_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_panel_cart_text_color]', - array( - 'label' => __( 'Text Color', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_panel_cart_text_color]', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_panel_cart_button_background]', - array( - 'default' => $defaults['wc_panel_cart_button_background'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_panel_cart_button_background]', - array( - 'label' => __( 'Button Background', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_panel_cart_button_background]', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_panel_cart_button_background_hover]', - array( - 'default' => $defaults['wc_panel_cart_button_background_hover'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_panel_cart_button_background_hover]', - array( - 'label' => __( 'Button Background Hover', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_panel_cart_button_background_hover]', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_panel_cart_button_text]', - array( - 'default' => $defaults['wc_panel_cart_button_text'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_panel_cart_button_text]', - array( - 'label' => __( 'Button Text', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_panel_cart_button_text]', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_panel_cart_button_text_hover]', - array( - 'default' => $defaults['wc_panel_cart_button_text_hover'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_panel_cart_button_text_hover]', - array( - 'label' => __( 'Button Text Hover', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_panel_cart_button_text_hover]', - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_woocommerce_mini_cart_title', - array( - 'section' => 'generate_woocommerce_colors', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Menu Mini Cart', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_mini_cart_background_color]', - array( - 'default' => $defaults['wc_mini_cart_background_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[wc_mini_cart_background_color]', - array( - 'label' => __( 'Cart Background Color', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_mini_cart_background_color]', - 'palette' => $palettes, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_mini_cart_text_color]', - array( - 'default' => $defaults['wc_mini_cart_text_color'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_mini_cart_text_color]', - array( - 'label' => __( 'Cart Text Color', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_mini_cart_text_color]', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_mini_cart_button_background]', - array( - 'default' => $defaults['wc_mini_cart_button_background'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_mini_cart_button_background]', - array( - 'label' => __( 'Button Background', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_mini_cart_button_background]', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_mini_cart_button_background_hover]', - array( - 'default' => $defaults['wc_mini_cart_button_background_hover'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_mini_cart_button_background_hover]', - array( - 'label' => __( 'Button Background Hover', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_mini_cart_button_background_hover]', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_mini_cart_button_text]', - array( - 'default' => $defaults['wc_mini_cart_button_text'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_mini_cart_button_text]', - array( - 'label' => __( 'Button Text', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_mini_cart_button_text]', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_mini_cart_button_text_hover]', - array( - 'default' => $defaults['wc_mini_cart_button_text_hover'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_mini_cart_button_text_hover]', - array( - 'label' => __( 'Button Text Hover', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_mini_cart_button_text_hover]', - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_woocommerce_price_slider_title', - array( - 'section' => 'generate_woocommerce_colors', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Price Slider Widget', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_price_slider_background_color]', - array( - 'default' => $defaults['wc_price_slider_background_color'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_price_slider_background_color]', - array( - 'label' => __( 'Slider Background Color', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_price_slider_background_color]', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_price_slider_bar_color]', - array( - 'default' => $defaults['wc_price_slider_bar_color'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_price_slider_bar_color]', - array( - 'label' => __( 'Slider Bar Color', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_price_slider_bar_color]', - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_woocommerce_product_tabs_title', - array( - 'section' => 'generate_woocommerce_colors', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Product Tabs', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_product_tab]', - array( - 'default' => $defaults['wc_product_tab'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_product_tab]', - array( - 'label' => __( 'Product Tab Text', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_product_tab]', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_product_tab_highlight]', - array( - 'default' => $defaults['wc_product_tab_highlight'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_product_tab_highlight]', - array( - 'label' => __( 'Product Tab Active', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_product_tab_highlight]', - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_woocommerce_messages_title', - array( - 'section' => 'generate_woocommerce_colors', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Messages', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_success_message_background]', - array( - 'default' => $defaults['wc_success_message_background'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[wc_success_message_background]', - array( - 'label' => __( 'Success Message Background', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_success_message_background]', - 'palette' => $palettes, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_success_message_text]', - array( - 'default' => $defaults['wc_success_message_text'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_success_message_text]', - array( - 'label' => __( 'Success Message Text', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_success_message_text]', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_info_message_background]', - array( - 'default' => $defaults['wc_info_message_background'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[wc_info_message_background]', - array( - 'label' => __( 'Info Message Background', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_info_message_background]', - 'palette' => $palettes, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_info_message_text]', - array( - 'default' => $defaults['wc_info_message_text'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_info_message_text]', - array( - 'label' => __( 'Info Message Text', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_info_message_text]', - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_error_message_background]', - array( - 'default' => $defaults['wc_error_message_background'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'transport' => 'postMessage', - 'sanitize_callback' => 'generate_premium_sanitize_rgba', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Alpha_Color_Customize_Control( - $wp_customize, - 'generate_settings[wc_error_message_background]', - array( - 'label' => __( 'Error Message Background', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_error_message_background]', - 'palette' => $palettes, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[wc_error_message_text]', - array( - 'default' => $defaults['wc_error_message_text'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_hex_color', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new WP_Customize_Color_Control( - $wp_customize, - 'generate_settings[wc_error_message_text]', - array( - 'label' => __( 'Error Message Text', 'gp-premium' ), - 'section' => 'generate_woocommerce_colors', - 'settings' => 'generate_settings[wc_error_message_text]', - ) - ) - ); - - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/generate-colors.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/generate-colors.php deleted file mode 100644 index a90e5c4c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/colors/generate-colors.php +++ /dev/null @@ -1,20 +0,0 @@ -register_control_type( 'GeneratePress_Copyright_Customize_Control' ); - } - - $wp_customize->add_setting( - 'generate_copyright', - array( - 'default' => '', - 'type' => 'theme_mod', - 'sanitize_callback' => 'wp_kses_post', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Copyright_Customize_Control( - $wp_customize, - 'generate_copyright', - array( - 'label' => __( 'Copyright', 'gp-premium' ), - 'section' => 'generate_layout_footer', - 'settings' => 'generate_copyright', - 'priority' => 500, - ) - ) - ); - - // Initiate selective refresh. - if ( isset( $wp_customize->selective_refresh ) ) { - $wp_customize->selective_refresh->add_partial( - 'generate_copyright', - array( - 'selector' => '.copyright-bar', - 'settings' => array( 'generate_copyright' ), - 'render_callback' => 'generate_copyright_selective_refresh', - ) - ); - } - } -} - -if ( ! function_exists( 'generate_copyright_selective_refresh' ) ) { - /** - * Return our copyright on selective refresh - */ - function generate_copyright_selective_refresh() { - $options = array( - '%current_year%', - '%copy%', - ); - - $replace = array( - date( 'Y' ), // phpcs:ignore -- prefer date(). - '©', - ); - - $new_copyright = get_theme_mod( 'generate_copyright' ); - $new_copyright = str_replace( $options, $replace, get_theme_mod( 'generate_copyright' ) ); - - return do_shortcode( $new_copyright ); - } -} - -if ( ! function_exists( 'generate_copyright_remove_default' ) ) { - add_action( 'wp', 'generate_copyright_remove_default' ); - /** - * Remove the default copyright. - * - * @since 0.1 - * @deprecated GP 1.3.42 - */ - function generate_copyright_remove_default() { - // As of 1.3.42, we no longer need to do this. - // We use a nice little filter instead. - if ( ! function_exists( 'generate_add_login_attribution' ) ) { - return; - } - - if ( get_theme_mod( 'generate_copyright' ) && '' !== get_theme_mod( 'generate_copyright' ) ) { - remove_action( 'generate_credits', 'generate_add_footer_info' ); - remove_action( 'generate_copyright_line', 'generate_add_login_attribution' ); - } - } -} - -if ( ! function_exists( 'generate_copyright_add_custom' ) ) { - add_action( 'generate_credits', 'generate_copyright_add_custom' ); - /** - * Add the custom copyright. - * - * @since 0.1 - * @deprecated GP 1.3.42 - */ - function generate_copyright_add_custom() { - // As of 1.3.42, we no longer need to do this. - // We use a nice little filter instead. - if ( ! function_exists( 'generate_add_login_attribution' ) ) { - return; - } - - $options = array( - '%current_year%', - '%copy%', - ); - - $replace = array( - date( 'Y' ), // phpcs:ignore -- prefer date(). - '©', - ); - - $new_copyright = get_theme_mod( 'generate_copyright' ); - $new_copyright = str_replace( $options, $replace, get_theme_mod( 'generate_copyright' ) ); - - if ( get_theme_mod( 'generate_copyright' ) && '' !== get_theme_mod( 'generate_copyright' ) ) { - echo do_shortcode( $new_copyright ); - } - } -} - -if ( ! function_exists( 'generate_apply_custom_copyright' ) ) { - add_filter( 'generate_copyright', 'generate_apply_custom_copyright' ); - /** - * Add the custom copyright - * - * @since 1.2.92 - * @param string $copyright The copyright value. - */ - function generate_apply_custom_copyright( $copyright ) { - // This will only work if GP >= 1.3.42 and the below function doesn't exist. - if ( function_exists( 'generate_add_login_attribution' ) ) { - return; - } - - $options = array( - '%current_year%', - '%copy%', - ); - - $replace = array( - date( 'Y' ), // phpcs:ignore -- prefer date(). - '©', - ); - - $new_copyright = get_theme_mod( 'generate_copyright' ); - $new_copyright = str_replace( $options, $replace, get_theme_mod( 'generate_copyright' ) ); - - if ( get_theme_mod( 'generate_copyright' ) && '' !== get_theme_mod( 'generate_copyright' ) ) { - return do_shortcode( $new_copyright ); - } - - return $copyright; - - } -} - -if ( ! function_exists( 'generate_copyright_customizer_live_preview' ) ) { - add_action( 'customize_preview_init', 'generate_copyright_customizer_live_preview' ); - /** - * Add our live preview - */ - function generate_copyright_customizer_live_preview() { - wp_enqueue_script( - 'generate-copyright-customizer', - plugin_dir_url( __FILE__ ) . 'js/customizer.js', - array( 'jquery', 'customize-preview' ), - GENERATE_COPYRIGHT_VERSION, - true - ); - } -} - -if ( ! function_exists( 'generate_update_copyright' ) ) { - add_action( 'admin_init', 'generate_update_copyright' ); - /** - * Our copyright use to have it's own setting - * If we have the old setting, move it into our theme_mod - */ - function generate_update_copyright() { - // If we already have a custom logo, bail. - if ( get_theme_mod( 'generate_copyright' ) ) { - return; - } - - // Get the old logo value. - $old_value = get_option( 'gen_custom_copyright' ); - - // If there's no old value, bail. - if ( empty( $old_value ) ) { - return; - } - - // Now let's update the new logo setting with our ID. - set_theme_mod( 'generate_copyright', $old_value ); - - // Got our custom logo? Time to delete the old value. - if ( get_theme_mod( 'generate_copyright' ) ) { - delete_option( 'gen_custom_copyright' ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/copyright/functions/js/customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/copyright/functions/js/customizer.js deleted file mode 100644 index fdd64115..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/copyright/functions/js/customizer.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Theme Customizer enhancements for a better user experience. - * - * Contains handlers to make Theme Customizer preview reload changes asynchronously. - */ - -( function( $ ) { - // Update the site title in real time... - wp.customize( 'generate_copyright', function( value ) { - value.bind( function( newval ) { - if ( $( '.copyright-bar' ).length ) { - $( '.copyright-bar' ).html( newval ); - } else { - $( '.inside-site-info' ).html( newval ); - } - } ); - } ); -}( jQuery ) ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/copyright/generate-copyright.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/copyright/generate-copyright.php deleted file mode 100644 index 2b9ce0b3..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/copyright/generate-copyright.php +++ /dev/null @@ -1,20 +0,0 @@ -ID, '_generate-disable-header', true ); - $disable_nav = get_post_meta( $post->ID, '_generate-disable-nav', true ); - $disable_secondary_nav = get_post_meta( $post->ID, '_generate-disable-secondary-nav', true ); - $disable_post_image = get_post_meta( $post->ID, '_generate-disable-post-image', true ); - $disable_headline = get_post_meta( $post->ID, '_generate-disable-headline', true ); - $disable_footer = get_post_meta( $post->ID, '_generate-disable-footer', true ); - } - - $return = ''; - - if ( ! empty( $disable_header ) && false !== $disable_header ) { - $return = '.site-header {display:none}'; - } - - if ( ! empty( $disable_nav ) && false !== $disable_nav ) { - $return .= '#site-navigation,.navigation-clone, #mobile-header {display:none !important}'; - } - - if ( ! empty( $disable_secondary_nav ) && false !== $disable_secondary_nav ) { - $return .= '#secondary-navigation {display:none}'; - } - - if ( ! empty( $disable_post_image ) && false !== $disable_post_image ) { - $return .= '.generate-page-header, .page-header-image, .page-header-image-single {display:none}'; - } - - $need_css_removal = true; - - if ( defined( 'GENERATE_VERSION' ) && version_compare( GENERATE_VERSION, '3.0.0-alpha.1', '>=' ) ) { - $need_css_removal = false; - } - - if ( $need_css_removal && ! empty( $disable_headline ) && false !== $disable_headline && ! is_single() ) { - $return .= '.entry-header {display:none} .page-content, .entry-content, .entry-summary {margin-top:0}'; - } - - if ( ! empty( $disable_footer ) && false !== $disable_footer ) { - $return .= '.site-footer {display:none}'; - } - - return $return; - } -} - -if ( ! function_exists( 'generate_de_scripts' ) ) { - add_action( 'wp_enqueue_scripts', 'generate_de_scripts', 50 ); - /** - * Enqueue scripts and styles - */ - function generate_de_scripts() { - wp_add_inline_style( 'generate-style', generate_disable_elements() ); - } -} - -if ( ! function_exists( 'generate_add_de_meta_box' ) ) { - add_action( 'add_meta_boxes', 'generate_add_de_meta_box', 50 ); - /** - * Generate the layout metabox. - * - * @since 0.1 - */ - function generate_add_de_meta_box() { - // Set user role - make filterable. - $allowed = apply_filters( 'generate_metabox_capability', 'edit_theme_options' ); - - // If not an administrator, don't show the metabox. - if ( ! current_user_can( $allowed ) ) { - return; - } - - if ( defined( 'GENERATE_LAYOUT_META_BOX' ) ) { - return; - } - - $args = array( 'public' => true ); - $post_types = get_post_types( $args ); - foreach ( $post_types as $type ) { - if ( 'attachment' !== $type ) { - add_meta_box( - 'generate_de_meta_box', - __( 'Disable Elements', 'gp-premium' ), - 'generate_show_de_meta_box', - $type, - 'side', - 'default' - ); - } - } - } -} - -if ( ! function_exists( 'generate_show_de_meta_box' ) ) { - /** - * Outputs the content of the metabox. - * - * @param object $post The post object. - */ - function generate_show_de_meta_box( $post ) { - wp_nonce_field( basename( __FILE__ ), 'generate_de_nonce' ); - $stored_meta = get_post_meta( $post->ID ); - $stored_meta['_generate-disable-header'][0] = ( isset( $stored_meta['_generate-disable-header'][0] ) ) ? $stored_meta['_generate-disable-header'][0] : ''; - $stored_meta['_generate-disable-nav'][0] = ( isset( $stored_meta['_generate-disable-nav'][0] ) ) ? $stored_meta['_generate-disable-nav'][0] : ''; - $stored_meta['_generate-disable-secondary-nav'][0] = ( isset( $stored_meta['_generate-disable-secondary-nav'][0] ) ) ? $stored_meta['_generate-disable-secondary-nav'][0] : ''; - $stored_meta['_generate-disable-post-image'][0] = ( isset( $stored_meta['_generate-disable-post-image'][0] ) ) ? $stored_meta['_generate-disable-post-image'][0] : ''; - $stored_meta['_generate-disable-headline'][0] = ( isset( $stored_meta['_generate-disable-headline'][0] ) ) ? $stored_meta['_generate-disable-headline'][0] : ''; - $stored_meta['_generate-disable-footer'][0] = ( isset( $stored_meta['_generate-disable-footer'][0] ) ) ? $stored_meta['_generate-disable-footer'][0] : ''; - $stored_meta['_generate-disable-top-bar'][0] = ( isset( $stored_meta['_generate-disable-top-bar'][0] ) ) ? $stored_meta['_generate-disable-top-bar'][0] : ''; - ?> - -

    -

    - - - - - - - - - - - - - - - - - -
    -

    - - ID, '_generate-disable-top-bar', true ); - $disable_header = get_post_meta( $post->ID, '_generate-disable-header', true ); - $disable_mobile_header = get_post_meta( $post->ID, '_generate-disable-mobile-header', true ); - $disable_nav = get_post_meta( $post->ID, '_generate-disable-nav', true ); - $disable_headline = get_post_meta( $post->ID, '_generate-disable-headline', true ); - $disable_footer = get_post_meta( $post->ID, '_generate-disable-footer', true ); - } - - // Remove the top bar. - if ( ! empty( $disable_top_bar ) && false !== $disable_top_bar && function_exists( 'generate_top_bar' ) ) { - remove_action( 'generate_before_header', 'generate_top_bar', 5 ); - remove_action( 'generate_inside_secondary_navigation', 'generate_secondary_nav_top_bar_widget', 5 ); - } - - // Remove the header. - if ( ! empty( $disable_header ) && false !== $disable_header && function_exists( 'generate_construct_header' ) ) { - remove_action( 'generate_header', 'generate_construct_header' ); - } - - // Remove the mobile header. - if ( ! empty( $disable_mobile_header ) && false !== $disable_mobile_header && function_exists( 'generate_menu_plus_mobile_header' ) ) { - remove_action( 'generate_after_header', 'generate_menu_plus_mobile_header', 5 ); - } - - // Remove the navigation. - if ( ! empty( $disable_nav ) && false !== $disable_nav && function_exists( 'generate_get_navigation_location' ) ) { - add_filter( 'generate_navigation_location', '__return_false', 20 ); - add_filter( 'generate_disable_mobile_header_menu', '__return_true' ); - } - - // Remove the title. - if ( ! empty( $disable_headline ) && false !== $disable_headline && function_exists( 'generate_show_title' ) ) { - add_filter( 'generate_show_title', '__return_false' ); - } - - // Remove the footer. - if ( ! empty( $disable_footer ) && false !== $disable_footer ) { - if ( function_exists( 'generate_construct_footer_widgets' ) ) { - remove_action( 'generate_footer', 'generate_construct_footer_widgets', 5 ); - } - - if ( function_exists( 'generate_construct_footer' ) ) { - remove_action( 'generate_footer', 'generate_construct_footer' ); - } - } - } -} - -add_action( 'generate_layout_disable_elements_section', 'generate_premium_disable_elements_options' ); -/** - * Add the meta box options to the Layout meta box in the new GP - * - * @since 1.4 - * @param array $stored_meta Existing meta data. - */ -function generate_premium_disable_elements_options( $stored_meta ) { - $stored_meta['_generate-disable-header'][0] = ( isset( $stored_meta['_generate-disable-header'][0] ) ) ? $stored_meta['_generate-disable-header'][0] : ''; - $stored_meta['_generate-disable-mobile-header'][0] = ( isset( $stored_meta['_generate-disable-mobile-header'][0] ) ) ? $stored_meta['_generate-disable-mobile-header'][0] : ''; - $stored_meta['_generate-disable-nav'][0] = ( isset( $stored_meta['_generate-disable-nav'][0] ) ) ? $stored_meta['_generate-disable-nav'][0] : ''; - $stored_meta['_generate-disable-secondary-nav'][0] = ( isset( $stored_meta['_generate-disable-secondary-nav'][0] ) ) ? $stored_meta['_generate-disable-secondary-nav'][0] : ''; - $stored_meta['_generate-disable-post-image'][0] = ( isset( $stored_meta['_generate-disable-post-image'][0] ) ) ? $stored_meta['_generate-disable-post-image'][0] : ''; - $stored_meta['_generate-disable-headline'][0] = ( isset( $stored_meta['_generate-disable-headline'][0] ) ) ? $stored_meta['_generate-disable-headline'][0] : ''; - $stored_meta['_generate-disable-footer'][0] = ( isset( $stored_meta['_generate-disable-footer'][0] ) ) ? $stored_meta['_generate-disable-footer'][0] : ''; - $stored_meta['_generate-disable-top-bar'][0] = ( isset( $stored_meta['_generate-disable-top-bar'][0] ) ) ? $stored_meta['_generate-disable-top-bar'][0] : ''; - ?> -
    - - - - - - - - - - - - - - - - - - - - - -
    - array('wp-hooks', 'wp-i18n'), 'version' => 'bfbc5254c52ffe55aa92'); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/adjacent-posts.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/adjacent-posts.js deleted file mode 100644 index 673839b4..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/adjacent-posts.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";const s=window.wp.i18n,e=window.wp.hooks;(0,e.addFilter)("generateblocks.dynamicTags.sourceOptions","generatepress-pro/dynamicTags/set-adjacent-post-options",(function(e,{dynamicTagType:t}){return"post"!==t||(e.push({value:"next-post",label:(0,s.__)("Next Post","gp-premium")}),e.push({value:"previous-post",label:(0,s.__)("Previous Post","gp-premium")})),e})),(0,e.addFilter)("generateblocks.dynamicTags.sourcesInOptions","generatepress-pro/dynamicTags/set-adjacent-sources-in-options",(function(s){return s.push("next-post"),s.push("previous-post"),s}))})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements-rtl.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements-rtl.css deleted file mode 100644 index 1117e2e3..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements-rtl.css +++ /dev/null @@ -1,7 +0,0 @@ -.inline-post-meta-area.block-editor-block-list__layout,.inline-post-meta-area>.gb-inside-container.block-editor-block-list__layout,.inline-post-meta-area>.gb-inside-container>.block-editor-inner-blocks>.block-editor-block-list__layout{align-items:center;display:flex}.inline-post-meta-area.block-editor-block-list__layout>.wp-block.block-list-appender,.inline-post-meta-area>.gb-inside-container.block-editor-block-list__layout>.wp-block.block-list-appender,.inline-post-meta-area>.gb-inside-container>.block-editor-inner-blocks>.block-editor-block-list__layout>.wp-block.block-list-appender{margin-right:20px}.inline-post-meta-area.block-editor-block-list__layout>.wp-block-image,.inline-post-meta-area>.gb-inside-container.block-editor-block-list__layout>.wp-block-image,.inline-post-meta-area>.gb-inside-container>.block-editor-inner-blocks>.block-editor-block-list__layout>.wp-block-image{line-height:0}.inline-post-meta-area.block-editor-block-list__layout>.wp-block-image figcaption,.inline-post-meta-area>.gb-inside-container.block-editor-block-list__layout>.wp-block-image figcaption,.inline-post-meta-area>.gb-inside-container>.block-editor-inner-blocks>.block-editor-block-list__layout>.wp-block-image figcaption{display:none}.inline-post-meta-area .wp-block{margin-right:0;margin-left:0}.gpp-dynamic-container-bg-dropdown .components-popover__content{width:275px}.gpp-dynamic-container-bg-dropdown .components-popover__content .components-base-control:not(:last-child){margin-bottom:20px}.gpp-dynamic-container-bg-dropdown .components-popover__content .components-base-control:last-child .components-base-control__field{margin-bottom:0}.gpp-dynamic-container-bg-dropdown .components-popover__content .components-base-control:last-child .components-base-control__help{margin-top:3px} -.gpp-dynamic-headline-text-dropdown .components-popover__content{width:275px}.gpp-dynamic-headline-text-dropdown .components-popover__content .components-base-control:not(:last-child){margin-bottom:20px}.gpp-dynamic-headline-text-dropdown .components-popover__content .components-base-control:last-child .components-base-control__field{margin-bottom:0}.gpp-dynamic-headline-text-dropdown .components-popover__content .components-base-control:last-child .components-base-control__help{margin-top:3px}.gpp-blocks-dynamic-text-replace-field{display:none}.gpp-block-dynamic-year .components-base-control__help{margin-top:2px} -.wp-block[data-type="generatepress/dynamic-content"]{margin-bottom:0;margin-top:0} -.wp-block[data-type="generatepress/dynamic-image"]{color:#fff;margin-bottom:0;margin-top:0}.wp-block[data-type="generatepress/dynamic-image"] .components-gpp-dynamic-image-placeholder__label{align-items:center;bottom:0;color:#fff;display:flex;font-size:1em;justify-content:center;right:0;position:absolute;left:0;top:0}.wp-block[data-type="generatepress/dynamic-image"] .components-gpp-dynamic-image-placeholder__label>.gpp-dynamic-featured-image__label{margin-right:10px}.wp-block[data-type="generatepress/dynamic-image"] .gpp-dynamic-image-placeholder{background:#000;vertical-align:middle}.wp-block[data-type="generatepress/dynamic-image"] .components-placeholder{width:100%}.wp-block[data-type="generatepress/dynamic-image"] .gpp-dynamic-image-preview{display:inline-block;position:relative}.wp-block[data-type="generatepress/dynamic-image"] .dynamic-author-image-rounded{border-radius:100%} -.components-generatepress-units-control-header__units{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px}.components-generatepress-control__units .components-generatepress-control-buttons__units button.components-button{background:#fff;border:0;border-radius:0!important;box-shadow:none!important;color:#929da7;font-size:10px;height:auto;line-height:20px;padding:0 5px;position:relative;text-align:center;text-shadow:none}.components-generatepress-control__units .components-generatepress-control-buttons__units button.components-button.is-primary{background:#fff!important;color:#000!important;cursor:default;font-weight:700;z-index:1} -.editor-styles-wrapper .is-root-container>.wp-block{margin-right:auto;margin-left:auto;max-width:var(--gp-block-element-width)}.left-sidebar-block-type div:not(.block-editor-inner-blocks)>.block-editor-block-list__layout,.right-sidebar-block-type div:not(.block-editor-inner-blocks)>.block-editor-block-list__layout{padding:10px}.gpp-block-element-panel>.components-base-control{margin-bottom:20px}.gpp-block-element-panel .components-notice,.gpp-block-element-panel .components-notice .components-notice__content{margin:0}.gpp-element-panel-label .components-panel__body-toggle.components-button{display:flex;flex-direction:row-reverse;justify-content:flex-end}.gpp-element-panel-label .components-panel__body-toggle.components-button svg.components-panel__icon{margin:0 0 0 10px}button.gpp-block-elements-template-button{background:#fff;border:1px solid #ddd;border-radius:5px;cursor:pointer;margin:0 0 10px;padding:5px}button.gpp-block-elements-template-button:hover{border-color:var(--wp-admin-theme-color)}button.gpp-block-elements-template-button .gpp-block-template-label{color:#888;font-size:13px;padding:5px}.element-has-parent #generate_premium_elements{display:none}.gpp-block-element-template-panel{background:#fafafa} -.gp-select-search .select-search-container{--select-search-background:#fff;--select-search-border:#949494;--select-search-selected:var(--wp-admin-theme-color);--select-search-text:#2c3338;--select-search-subtle-text:#6c6f85;--select-search-inverted-text:var(--select-search-background);--select-search-highlight:#eff1f5;box-sizing:border-box;color:var(--select-search-text);font-family:var(--select-search-font);position:relative;width:100%}.gp-select-search .select-search-container *,.gp-select-search .select-search-container :after,.gp-select-search .select-search-container :before{box-sizing:inherit}.gp-select-search .select-search-input{-webkit-appearance:none;border:1px solid var(--select-search-border);border-radius:3px;color:var(--select-search-text);display:block;font-size:13px;height:30px;letter-spacing:.01rem;line-height:30px;outline:none;padding:0 8px 0 26px;position:relative;text-align:right;text-overflow:ellipsis;width:100%;z-index:1;-webkit-font-smoothing:antialiased;background:var(--select-search-background) url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E") no-repeat left 5px top 55%;background-size:13px 13px}.gp-select-search .select-search-is-multiple .select-search-input{border-radius:3px 3px 0 0;margin-bottom:-2px}.gp-select-search .select-search-input::-webkit-search-cancel-button,.gp-select-search .select-search-input::-webkit-search-decoration,.gp-select-search .select-search-input::-webkit-search-results-button,.gp-select-search .select-search-input::-webkit-search-results-decoration{-webkit-appearance:none}.gp-select-search .select-search-input[readonly]{cursor:pointer}.gp-select-search .select-search-is-disabled .select-search-input{cursor:not-allowed}.gp-select-search .select-search-container:not(.select-search-is-disabled) .select-search-input:hover,.gp-select-search .select-search-container:not(.select-search-is-disabled).select-search-has-focus .select-search-input{border-color:var(--select-search-selected)}.gp-select-search .select-search-select{background:var(--select-search-background);border:1px solid var(--select-search-border);box-shadow:0 .0625rem .125rem #00000026;max-height:360px;overflow:auto}.gp-select-search .select-search-container:not(.select-search-is-multiple) .select-search-select{border-radius:3px;display:none;right:0;position:absolute;left:0;top:35px;z-index:2}.gp-select-search .select-search-container:not(.select-search-is-multiple).select-search-has-focus .select-search-select{display:block}.gp-select-search .select-search-has-focus .select-search-select{border-color:var(--select-search-selected)}.gp-select-search .select-search-options{list-style:none}.gp-select-search .select-search-not-found,.gp-select-search .select-search-option{background:var(--select-search-background);border:none;color:var(--select-search-text);cursor:pointer;display:block;font-family:monospace;font-size:11px;height:30px;letter-spacing:.01rem;outline:none;padding:0 8px;text-align:right;width:100%;-webkit-font-smoothing:antialiased}.gp-select-search .select-search-option:disabled{background:#0000!important;cursor:not-allowed;opacity:.5}.gp-select-search .select-search-is-highlighted,.gp-select-search .select-search-option:not(.select-search-is-selected):hover{background:var(--select-search-highlight)}.gp-select-search .select-search-is-selected{color:var(--select-search-selected);font-weight:700}.gp-select-search .select-search-group-header{font-size:12px;font-weight:700;letter-spacing:.1rem;padding:10px 8px;text-transform:uppercase} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.asset.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.asset.php deleted file mode 100644 index 7388e923..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('lodash', 'react', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-data', 'wp-dom-ready', 'wp-edit-post', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-plugins', 'wp-server-side-render'), 'version' => '3e4b04d9f2c101e0232f'); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.css deleted file mode 100644 index cd289fa7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.css +++ /dev/null @@ -1,7 +0,0 @@ -.inline-post-meta-area.block-editor-block-list__layout,.inline-post-meta-area>.gb-inside-container.block-editor-block-list__layout,.inline-post-meta-area>.gb-inside-container>.block-editor-inner-blocks>.block-editor-block-list__layout{align-items:center;display:flex}.inline-post-meta-area.block-editor-block-list__layout>.wp-block.block-list-appender,.inline-post-meta-area>.gb-inside-container.block-editor-block-list__layout>.wp-block.block-list-appender,.inline-post-meta-area>.gb-inside-container>.block-editor-inner-blocks>.block-editor-block-list__layout>.wp-block.block-list-appender{margin-left:20px}.inline-post-meta-area.block-editor-block-list__layout>.wp-block-image,.inline-post-meta-area>.gb-inside-container.block-editor-block-list__layout>.wp-block-image,.inline-post-meta-area>.gb-inside-container>.block-editor-inner-blocks>.block-editor-block-list__layout>.wp-block-image{line-height:0}.inline-post-meta-area.block-editor-block-list__layout>.wp-block-image figcaption,.inline-post-meta-area>.gb-inside-container.block-editor-block-list__layout>.wp-block-image figcaption,.inline-post-meta-area>.gb-inside-container>.block-editor-inner-blocks>.block-editor-block-list__layout>.wp-block-image figcaption{display:none}.inline-post-meta-area .wp-block{margin-left:0;margin-right:0}.gpp-dynamic-container-bg-dropdown .components-popover__content{width:275px}.gpp-dynamic-container-bg-dropdown .components-popover__content .components-base-control:not(:last-child){margin-bottom:20px}.gpp-dynamic-container-bg-dropdown .components-popover__content .components-base-control:last-child .components-base-control__field{margin-bottom:0}.gpp-dynamic-container-bg-dropdown .components-popover__content .components-base-control:last-child .components-base-control__help{margin-top:3px} -.gpp-dynamic-headline-text-dropdown .components-popover__content{width:275px}.gpp-dynamic-headline-text-dropdown .components-popover__content .components-base-control:not(:last-child){margin-bottom:20px}.gpp-dynamic-headline-text-dropdown .components-popover__content .components-base-control:last-child .components-base-control__field{margin-bottom:0}.gpp-dynamic-headline-text-dropdown .components-popover__content .components-base-control:last-child .components-base-control__help{margin-top:3px}.gpp-blocks-dynamic-text-replace-field{display:none}.gpp-block-dynamic-year .components-base-control__help{margin-top:2px} -.wp-block[data-type="generatepress/dynamic-content"]{margin-bottom:0;margin-top:0} -.wp-block[data-type="generatepress/dynamic-image"]{color:#fff;margin-bottom:0;margin-top:0}.wp-block[data-type="generatepress/dynamic-image"] .components-gpp-dynamic-image-placeholder__label{align-items:center;bottom:0;color:#fff;display:flex;font-size:1em;justify-content:center;left:0;position:absolute;right:0;top:0}.wp-block[data-type="generatepress/dynamic-image"] .components-gpp-dynamic-image-placeholder__label>.gpp-dynamic-featured-image__label{margin-left:10px}.wp-block[data-type="generatepress/dynamic-image"] .gpp-dynamic-image-placeholder{background:#000;vertical-align:middle}.wp-block[data-type="generatepress/dynamic-image"] .components-placeholder{width:100%}.wp-block[data-type="generatepress/dynamic-image"] .gpp-dynamic-image-preview{display:inline-block;position:relative}.wp-block[data-type="generatepress/dynamic-image"] .dynamic-author-image-rounded{border-radius:100%} -.components-generatepress-units-control-header__units{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px}.components-generatepress-control__units .components-generatepress-control-buttons__units button.components-button{background:#fff;border:0;border-radius:0!important;box-shadow:none!important;color:#929da7;font-size:10px;height:auto;line-height:20px;padding:0 5px;position:relative;text-align:center;text-shadow:none}.components-generatepress-control__units .components-generatepress-control-buttons__units button.components-button.is-primary{background:#fff!important;color:#000!important;cursor:default;font-weight:700;z-index:1} -.editor-styles-wrapper .is-root-container>.wp-block{margin-left:auto;margin-right:auto;max-width:var(--gp-block-element-width)}.left-sidebar-block-type div:not(.block-editor-inner-blocks)>.block-editor-block-list__layout,.right-sidebar-block-type div:not(.block-editor-inner-blocks)>.block-editor-block-list__layout{padding:10px}.gpp-block-element-panel>.components-base-control{margin-bottom:20px}.gpp-block-element-panel .components-notice,.gpp-block-element-panel .components-notice .components-notice__content{margin:0}.gpp-element-panel-label .components-panel__body-toggle.components-button{display:flex;flex-direction:row-reverse;justify-content:flex-end}.gpp-element-panel-label .components-panel__body-toggle.components-button svg.components-panel__icon{margin:0 10px 0 0}button.gpp-block-elements-template-button{background:#fff;border:1px solid #ddd;border-radius:5px;cursor:pointer;margin:0 0 10px;padding:5px}button.gpp-block-elements-template-button:hover{border-color:var(--wp-admin-theme-color)}button.gpp-block-elements-template-button .gpp-block-template-label{color:#888;font-size:13px;padding:5px}.element-has-parent #generate_premium_elements{display:none}.gpp-block-element-template-panel{background:#fafafa} -.gp-select-search .select-search-container{--select-search-background:#fff;--select-search-border:#949494;--select-search-selected:var(--wp-admin-theme-color);--select-search-text:#2c3338;--select-search-subtle-text:#6c6f85;--select-search-inverted-text:var(--select-search-background);--select-search-highlight:#eff1f5;box-sizing:border-box;color:var(--select-search-text);font-family:var(--select-search-font);position:relative;width:100%}.gp-select-search .select-search-container *,.gp-select-search .select-search-container :after,.gp-select-search .select-search-container :before{box-sizing:inherit}.gp-select-search .select-search-input{-webkit-appearance:none;border:1px solid var(--select-search-border);border-radius:3px;color:var(--select-search-text);display:block;font-size:13px;height:30px;letter-spacing:.01rem;line-height:30px;outline:none;padding:0 26px 0 8px;position:relative;text-align:left;text-overflow:ellipsis;width:100%;z-index:1;-webkit-font-smoothing:antialiased;background:var(--select-search-background) url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E") no-repeat right 5px top 55%;background-size:13px 13px}.gp-select-search .select-search-is-multiple .select-search-input{border-radius:3px 3px 0 0;margin-bottom:-2px}.gp-select-search .select-search-input::-webkit-search-cancel-button,.gp-select-search .select-search-input::-webkit-search-decoration,.gp-select-search .select-search-input::-webkit-search-results-button,.gp-select-search .select-search-input::-webkit-search-results-decoration{-webkit-appearance:none}.gp-select-search .select-search-input[readonly]{cursor:pointer}.gp-select-search .select-search-is-disabled .select-search-input{cursor:not-allowed}.gp-select-search .select-search-container:not(.select-search-is-disabled) .select-search-input:hover,.gp-select-search .select-search-container:not(.select-search-is-disabled).select-search-has-focus .select-search-input{border-color:var(--select-search-selected)}.gp-select-search .select-search-select{background:var(--select-search-background);border:1px solid var(--select-search-border);box-shadow:0 .0625rem .125rem #00000026;max-height:360px;overflow:auto}.gp-select-search .select-search-container:not(.select-search-is-multiple) .select-search-select{border-radius:3px;display:none;left:0;position:absolute;right:0;top:35px;z-index:2}.gp-select-search .select-search-container:not(.select-search-is-multiple).select-search-has-focus .select-search-select{display:block}.gp-select-search .select-search-has-focus .select-search-select{border-color:var(--select-search-selected)}.gp-select-search .select-search-options{list-style:none}.gp-select-search .select-search-not-found,.gp-select-search .select-search-option{background:var(--select-search-background);border:none;color:var(--select-search-text);cursor:pointer;display:block;font-family:monospace;font-size:11px;height:30px;letter-spacing:.01rem;outline:none;padding:0 8px;text-align:left;width:100%;-webkit-font-smoothing:antialiased}.gp-select-search .select-search-option:disabled{background:#0000!important;cursor:not-allowed;opacity:.5}.gp-select-search .select-search-is-highlighted,.gp-select-search .select-search-option:not(.select-search-is-selected):hover{background:var(--select-search-highlight)}.gp-select-search .select-search-is-selected{color:var(--select-search-selected);font-weight:700}.gp-select-search .select-search-group-header{font-size:12px;font-weight:700;letter-spacing:.1rem;padding:10px 8px;text-transform:uppercase} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.js deleted file mode 100644 index 33336a1f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/block-elements.js +++ /dev/null @@ -1,3 +0,0 @@ -(()=>{var e={184:(e,t)=>{var n;!function(){"use strict";var a={}.hasOwnProperty;function i(){for(var e=[],t=0;t{"use strict";var a=n(196),i=Symbol.for("react.element"),o=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),r=a.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};function l(e,t,n){var a,l={},c=null,g=null;for(a in void 0!==n&&(c=""+n),void 0!==t.key&&(c=""+t.key),void 0!==t.ref&&(g=t.ref),t)o.call(t,a)&&!p.hasOwnProperty(a)&&(l[a]=t[a]);if(e&&e.defaultProps)for(a in t=e.defaultProps)void 0===l[a]&&(l[a]=t[a]);return{$$typeof:i,type:e,key:c,ref:g,props:l,_owner:r.current}}t.jsx=l,t.jsxs=l},893:(e,t,n)=>{"use strict";e.exports=n(251)},196:e=>{"use strict";e.exports=window.React}},t={};function n(a){var i=t[a];if(void 0!==i)return i.exports;var o=t[a]={exports:{}};return e[a](o,o.exports,n),o.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var a in t)n.o(t,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(196);function t(e,t,n){return void 0===e[t]&&(e[t]=[]),e[t].push(n),e}function a(t,n=null){return"generatepress"===t?(0,e.createElement)("svg",{width:"20",height:"20",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 600 600",preserveAspectRatio:"none"},(0,e.createElement)("path",{d:"M485.2 427.8l-99.1-46.2 15.8-34c5.6-11.9 8.8-24.3 10-36.7 3.3-33.7-9-67.3-33.2-91.1-8.9-8.7-19.3-16.1-31.3-21.7-11.9-5.6-24.3-8.8-36.7-10-33.7-3.3-67.4 9-91.1 33.2-8.7 8.9-16.1 19.3-21.7 31.3l-15.8 34-30.4 65.2c-.7 1.5-.1 3.3 1.5 4l65.2 30.4 34 15.8 34 15.8 68 31.7 74.7 34.8c-65 45.4-152.1 55.2-228.7 17.4C90.2 447.4 44.1 313.3 97.3 202.6c53.3-110.8 186-158.5 297.8-106.3 88.1 41.1 137.1 131.9 129.1 223.4-.1 1.3.6 2.4 1.7 3l65.6 30.6c1.8.8 3.9-.3 4.2-2.2 22.6-130.7-44-265.4-170.5-323.5-150.3-69-327-4.1-396.9 145.8-70 150.1-5.1 328.5 145.1 398.5 114.1 53.2 244.5 28.4 331.3-52.3 17.9-16.6 33.9-35.6 47.5-56.8 1-1.5.4-3.6-1.3-4.3l-65.7-30.7zm-235-109.6l15.8-34c8.8-18.8 31.1-26.9 49.8-18.1s26.9 31 18.1 49.8l-15.8 34-34-15.8-33.9-15.9z"})):"dynamic"===t?(0,e.createElement)("svg",{width:"24",height:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 256 256"},(0,e.createElement)("path",{d:"M128 26c-52.71 0-94 23.72-94 54v96c0 30.28 41.29 54 94 54s94-23.72 94-54V80c0-30.28-41.29-54-94-54zm0 12c44.449 0 82 19.233 82 42s-37.551 42-82 42-82-19.233-82-42 37.551-42 82-42zm82 138c0 22.767-37.551 42-82 42s-82-19.233-82-42v-21.21C61.97 171.163 92.374 182 128 182s66.03-10.837 82-27.21zm0-48c0 22.767-37.551 42-82 42s-82-19.233-82-42v-21.21C61.97 123.163 92.374 134 128 134s66.03-10.837 82-27.21z",fill:"currentColor"})):"tools"===t?(0,e.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},(0,e.createElement)("path",{d:"M14.7 6.3a1 1 0 000 1.4l1.6 1.6a1 1 0 001.4 0l3.77-3.77a6 6 0 01-7.94 7.94l-6.91 6.91a2.12 2.12 0 01-3-3l6.91-6.91a6 6 0 017.94-7.94l-3.76 3.76z"})):"sliders"===t?(0,e.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",viewBox:"0 0 24 24"},(0,e.createElement)("path",{d:"M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6"})):"plus-circle"===t?(0,e.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg",clipRule:"evenodd",fillRule:"evenodd",strokeLinejoin:"round",strokeMiterlimit:"2",viewBox:"0 0 24 24",style:n},(0,e.createElement)("path",{d:"m12.002 2c5.518 0 9.998 4.48 9.998 9.998 0 5.517-4.48 9.997-9.998 9.997-5.517 0-9.997-4.48-9.997-9.997 0-5.518 4.48-9.998 9.997-9.998zm0 1.5c-4.69 0-8.497 3.808-8.497 8.498s3.807 8.497 8.497 8.497 8.498-3.807 8.498-8.497-3.808-8.498-8.498-8.498zm-.747 7.75h-3.5c-.414 0-.75.336-.75.75s.336.75.75.75h3.5v3.5c0 .414.336.75.75.75s.75-.336.75-.75v-3.5h3.5c.414 0 .75-.336.75-.75s-.336-.75-.75-.75h-3.5v-3.5c0-.414-.336-.75-.75-.75s-.75.336-.75.75z",fillRule:"nonzero"})):"minus-circle"===t?(0,e.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg",clipRule:"evenodd",fillRule:"evenodd",strokeLinejoin:"round",strokeMiterlimit:"2",viewBox:"0 0 24 24",style:n},(0,e.createElement)("path",{d:"m12.002 2.005c5.518 0 9.998 4.48 9.998 9.997 0 5.518-4.48 9.998-9.998 9.998-5.517 0-9.997-4.48-9.997-9.998 0-5.517 4.48-9.997 9.997-9.997zm0 1.5c-4.69 0-8.497 3.807-8.497 8.497s3.807 8.498 8.497 8.498 8.498-3.808 8.498-8.498-3.808-8.497-8.498-8.497zm4.253 7.75h-8.5c-.414 0-.75.336-.75.75s.336.75.75.75h8.5c.414 0 .75-.336.75-.75s-.336-.75-.75-.75z",fillRule:"nonzero"})):"trash"===t?(0,e.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",style:{fill:"none"},stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",viewBox:"0 0 24 24"},(0,e.createElement)("path",{d:"M3 6h18M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2M10 11v6M14 11v6"})):void 0}const i=window.wp.i18n,o=window.wp.hooks,r=window.wp.element,p=window.wp.components,l=window.wp.compose,c=window.wp.blockEditor,g=["generateblocks/container"];function s(t){const n=()=>{let e="Desktop";return void 0!==t.deviceType&&t.deviceType&&(e=t.deviceType),e},{attributes:a,setAttributes:o,showInlineOptions:l=!1}=t,{gpInlinePostMeta:c,gpInlinePostMetaJustify:g,gpInlinePostMetaJustifyTablet:s,gpInlinePostMetaJustifyMobile:d,gpRemoveContainerCondition:m,gpRemoveContainerConditionPostMeta:u,gpAdjacentPostInSameTerm:b,gpAdjacentPostInSameTermTax:x}=a,h=wp.data.select("core/editor").getEditedPostAttribute("meta"),f=[{label:(0,i.__)("Choose…","gp-premium"),value:"self"},{label:(0,i.__)("No featured image","gp-premium"),value:"no-featured-image"},{label:(0,i.__)("No post meta","gp-premium"),value:"no-post-meta"}];return"post-navigation-template"===h._generate_block_type&&(f.push({label:(0,i.__)("No next post","gp-premium"),value:"no-next-post"}),f.push({label:(0,i.__)("No previous post","gp-premium"),value:"no-previous-post"})),gpPremiumBlockElements.isBlockElement?(0,e.createElement)(r.Fragment,null,!!l&&"Desktop"===n()&&(0,e.createElement)(p.ToggleControl,{label:(0,i.__)("Inline post meta items","gp-premium"),checked:!!c,onChange:e=>{o({gpInlinePostMeta:e})}}),!!l&&!!c&&(0,e.createElement)(r.Fragment,null,"Desktop"===n()&&(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Inline alignment","gp-premium"),value:g,options:[{label:(0,i.__)("Choose…","gp-premium"),value:""},{label:(0,i.__)("Left","gp-premium"),value:"flex-start"},{label:(0,i.__)("Center","gp-premium"),value:"center"},{label:(0,i.__)("Right","gp-premium"),value:"flex-end"},{label:(0,i.__)("Space between","gp-premium"),value:"space-between"}],onChange:e=>{o({gpInlinePostMetaJustify:e})}}),"Tablet"===n()&&(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Inline alignment","gp-premium"),value:s,options:[{label:(0,i.__)("Choose…","gp-premium"),value:""},{label:(0,i.__)("Left","gp-premium"),value:"flex-start"},{label:(0,i.__)("Center","gp-premium"),value:"center"},{label:(0,i.__)("Right","gp-premium"),value:"flex-end"},{label:(0,i.__)("Space between","gp-premium"),value:"space-between"}],onChange:e=>{o({gpInlinePostMetaJustifyTablet:e})}}),"Mobile"===n()&&(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Inline alignment","gp-premium"),value:d,options:[{label:(0,i.__)("Choose…","gp-premium"),value:""},{label:(0,i.__)("Left","gp-premium"),value:"flex-start"},{label:(0,i.__)("Center","gp-premium"),value:"center"},{label:(0,i.__)("Right","gp-premium"),value:"flex-end"},{label:(0,i.__)("Space between","gp-premium"),value:"space-between"}],onChange:e=>{o({gpInlinePostMetaJustifyMobile:e})}})),(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Remove container condition","gp-premium"),value:m,options:f,onChange:e=>{o({gpRemoveContainerCondition:e})}}),"no-post-meta"===m&&(0,e.createElement)(p.TextControl,{label:(0,i.__)("Meta field name","gp-premium"),type:"text",value:u,onChange:e=>{o({gpRemoveContainerConditionPostMeta:e})}}),("no-next-post"===m||"no-previous-post"===m)&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.ToggleControl,{label:(0,i.__)("In same term","gp-premium"),help:(0,i.__)("Check for posts with the same term as the current post.","gp-premium"),checked:!!b,onChange:e=>{o({gpAdjacentPostInSameTerm:e})}}),!!b&&(0,e.createElement)(p.TextControl,{label:(0,i.__)("Taxonomy","gp-premium"),help:(0,i.__)("The taxonomy to check if in the same term.","gp-premium"),type:"text",value:x,onChange:e=>{o({gpAdjacentPostInSameTermTax:e})}})))):null}const d=(0,l.createHigherOrderComponent)((t=>n=>{const{name:o,attributes:l,isSelected:s,setAttributes:d}=n,{gpDynamicImageBg:m,gpDynamicImageCustomField:u,gpUseFallbackImageBg:b,bgImage:x,gpDynamicLinkType:h,gpDynamicLinkCustomField:f,gpDynamicSource:y,gpDynamicSourceInSameTerm:_,gpDynamicSourceInSameTermTaxonomy:k}=l,w=wp.data.select("core/editor").getEditedPostAttribute("meta");let v=!!m||!!h;return"post-navigation-template"!==w._generate_block_type&&(v=!1),"next-posts"!==h&&"previous-posts"!==h||(v=!1),(0,e.createElement)(r.Fragment,null,(0,e.createElement)(t,{...n}),s&&g.includes(o)&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(c.BlockControls,null,(0,e.createElement)(p.ToolbarGroup,null,(0,e.createElement)(p.Dropdown,{contentClassName:"gpp-dynamic-container-bg-dropdown",popoverProps:{className:"block-editor-block-settings-menu__popover",position:"bottom right"},renderToggle:({isOpen:t,onToggle:n})=>(0,e.createElement)(p.ToolbarButton,{icon:a("dynamic"),label:(0,i.__)("Dynamic options","gp-premium"),onClick:n,"aria-expanded":t,isPressed:!!m||!!h}),renderContent:()=>(0,e.createElement)(r.Fragment,null,(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Dynamic Background Image","gp-premium"),value:m,options:[{label:(0,i.__)("None","gp-premium"),value:""},{label:(0,i.__)("Featured image","gp-premium"),value:"featured-image"},{label:(0,i.__)("Post meta","gp-premium"),value:"post-meta"},{label:(0,i.__)("Term meta","gp-premium"),value:"term-meta"},{label:(0,i.__)("User meta","gp-premium"),value:"user-meta"}],onChange:e=>{d({gpDynamicImageBg:e})},disabled:!x,help:x?"":(0,i.__)("Add a background image to this Container to make it dynamic.","gp-premium")}),("post-meta"===m||"term-meta"===m||"user-meta"===m)&&(0,e.createElement)(p.TextControl,{label:(0,i.__)("Meta field name","gp-premium"),value:u,onChange:e=>{d({gpDynamicImageCustomField:e})}}),""!==m&&(0,e.createElement)(p.ToggleControl,{label:(0,i.__)("Use fallback image","gp-premium"),checked:!!b,onChange:e=>{d({gpUseFallbackImageBg:e})}})),gpPremiumBlockElements.isGenerateBlocksProActive&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.BaseControl,{className:"gpp-button-dynamic-link-area"},(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Dynamic Link","gp-premium"),value:h,options:[{label:(0,i.__)("Choose…","gp-premium"),value:""},{label:(0,i.__)("Post","gp-premium"),value:"post"},{label:(0,i.__)("Post meta","gp-premium"),value:"post-meta"}],onChange:e=>{d(e?{gpDynamicLinkType:e,url:"#"}:{gpDynamicLinkType:e,url:""})}}),"post-meta"===h&&(0,e.createElement)(p.TextControl,{label:(0,i.__)("Meta field name","gp-premium"),type:"text",value:f,onChange:e=>{d({gpDynamicLinkCustomField:e})}}))),v&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Source","gp-premium"),value:y,options:[{label:(0,i.__)("Current post","gp-premium"),value:"current-post"},{label:(0,i.__)("Next post","gp-premium"),value:"next-post"},{label:(0,i.__)("Previous post","gp-premium"),value:"previous-post"}],onChange:e=>{d({gpDynamicSource:e})}}),("next-post"===y||"previous-post"===y)&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.ToggleControl,{label:(0,i.__)("In same term","gp-premium"),help:(0,i.__)("Check for posts with the same term as the current post.","gp-premium"),checked:!!_,onChange:e=>{d({gpDynamicSourceInSameTerm:e})}}),!!_&&(0,e.createElement)(p.TextControl,{label:(0,i.__)("Taxonomy","gp-premium"),help:(0,i.__)("The taxonomy to check if in the same term.","gp-premium"),type:"text",value:k,onChange:e=>{d({gpDynamicSourceInSameTermTaxonomy:e})}}))))})))))}),"addDynamicContainerBgToolbar");function m(e,n,a){if(!["container"].includes(a))return e;const i=(0,o.applyFilters)("generateblocks.editor.cssAttrs",n.attributes,n),{uniqueId:r,gpInlinePostMeta:p,gpInlinePostMetaJustify:l,gpInlinePostMetaJustifyTablet:c,gpInlinePostMetaJustifyMobile:g,useInnerContainer:s}=i;let d=".gb-container-"+r+".inline-post-meta-area > .gb-inside-container > .block-editor-inner-blocks > .block-editor-block-list__layout";return void 0!==s&&(d=s?".gb-container-"+r+".inline-post-meta-area > .gb-inside-container":".gb-container-"+r+".inline-post-meta-area"),p&&(t(e,d,{"justify-content":l}),"generateblocks.editor.tabletCSS"===(0,o.currentFilter)()&&t(e,d,{"justify-content":c}),"generateblocks.editor.mobileCSS"===(0,o.currentFilter)()&&t(e,d,{"justify-content":g})),e}(0,o.addFilter)("blocks.registerBlockType","gp-premium/dynamic-container/add-attributes",(function(e){return g.includes(e.name)?(void 0!==e.attributes&&(e.attributes=Object.assign(e.attributes,{gpDynamicImageBg:{type:"string",default:""},gpUseFallbackImageBg:{type:"boolean",default:!1},gpDynamicImageCustomField:{type:"string",default:""},gpInlinePostMeta:{type:"boolean",default:!1},gpInlinePostMetaJustify:{type:"string",default:""},gpInlinePostMetaJustifyTablet:{type:"string",default:""},gpInlinePostMetaJustifyMobile:{type:"string",default:""},gpDynamicLinkType:{type:"string",default:""},gpDynamicLinkCustomField:{type:"string",default:""},gpDynamicSource:{type:"string",default:"current-post"},gpRemoveContainerCondition:{type:"string",default:""},gpRemoveContainerConditionPostMeta:{type:"string",default:""},gpAdjacentPostInSameTerm:{type:"boolean",default:!1},gpAdjacentPostInSameTermTax:{type:"string",default:"category"},gpDynamicSourceInSameTerm:{type:"boolean",default:!1},gpDynamicSourceInSameTermTaxonomy:{type:"string",default:"category"}})),e):e})),(0,o.addFilter)("generateblocks.editor.controls","gp-premium/dynamic-container/add-container-controls",(function(t,n,a){return"containerLayout"!==n&&"containerGridLayout"!==n?t:(0,e.createElement)(r.Fragment,null,(0,e.createElement)(s,{...a,showInlineOptions:!0}),t)})),(0,o.addFilter)("generateblocks.editor.settingsPanel","gp-premium/dynamic-container/add-container-controls",(function(t,n){return"generateblocks/container"!==n.name||n.attributes.useInnerContainer?t:(0,e.createElement)(r.Fragment,null,t,(0,e.createElement)(s,{...n}))})),(0,o.addFilter)("editor.BlockEdit","gp-premium/dynamic-container/toolbar",d),(0,o.addFilter)("generateblocks.frontend.htmlAttributes","gp-premium/dynamic-container/add-html-attributes",(function(e,t,n){return"generateblocks/container"!==t||n.gpInlinePostMeta&&(e=Object.assign(e,{className:e.className+" inline-post-meta-area"})),e})),(0,o.addFilter)("generateblocks.editor.mainCSS","gp-premium/dynamic-container/add-main-css",m),(0,o.addFilter)("generateblocks.editor.tabletCSS","gp-premium/dynamic-container/add-tablet-css",m),(0,o.addFilter)("generateblocks.editor.mobileCSS","gp-premium/dynamic-container/add-mobile-css",m);class u extends r.Component{constructor(){super(...arguments),this.wrapElement=this.wrapElement.bind(this)}componentDidMount(){if(this.props.attributes.gpDynamicTextType&&"generateblocks/headline"===this.props.name){const e=document.querySelector(".gb-headline-"+this.props.attributes.uniqueId+" .rich-text");e&&""!==this.props.attributes.gpDynamicTextType&&this.props.attributes.gpDynamicLinkType&&!this.props.attributes.removeText&&this.wrapElement(e)}}componentDidUpdate(){if(this.props.attributes.gpDynamicTextType){let e=this.props.attributes.content;"generateblocks/button"===this.props.name&&(e=this.props.attributes.text),e!==this.props.attributes.gpDynamicTextReplace&&this.props.setAttributes({gpDynamicTextReplace:e})}if(this.props.attributes.gpDynamicTextType&&"generateblocks/headline"===this.props.name){const e=document.querySelector(".gb-headline-"+this.props.attributes.uniqueId+" .rich-text");if(e){const t=e.parentNode;if(t){const n=t.classList.contains("gblocks-faux-headline-link");""!==this.props.attributes.gpDynamicTextType?(n&&!this.props.attributes.gpDynamicLinkType&&t.replaceWith(...t.childNodes),n||!this.props.attributes.gpDynamicLinkType||this.props.isSelected||this.wrapElement(e)):n&&t.replaceWith(...t.childNodes),(this.props.attributes.removeText||n&&this.props.isSelected)&&t.replaceWith(...t.childNodes)}}}}wrapElement(e){const t=document.createElement("a");t.classList.add("gblocks-faux-headline-link"),e.parentNode.insertBefore(t,e),t.appendChild(e)}render(){return null}}const b=u;class x extends r.Component{render(){const{attributes:t,setAttributes:n,name:a}=this.props,{gpDynamicTextType:o,gpDynamicSource:l,gpDynamicTextReplace:c,gpDynamicTextTaxonomy:g,gpDynamicTextTaxonomySeparator:s,gpDynamicTextCustomField:d,gpDynamicTextBefore:m,gpDynamicDateUpdated:u,gpDynamicNoCommentsText:b,gpDynamicSingleCommentText:x,gpDynamicMultipleCommentsText:h,gpDynamicLinkType:f,gpDynamicLinkCustomField:y,gpDynamicSourceInSameTerm:_,gpDynamicSourceInSameTermTaxonomy:k,className:w,gpDynamicDateType:v,gpDynamicUpdatedDateBefore:T}=t,C=[{label:(0,i.__)("Choose…","gp-premium"),value:""}],D=gpPremiumBlockElements.taxonomies;D&&Object.keys(D).forEach((e=>{C.push({label:D[e],value:D[e]})}));let R=[{label:(0,i.__)("Choose…","gp-premium"),value:""},{label:(0,i.__)("Single post","gp-premium"),value:"single-post"},{label:(0,i.__)("Author archives","gp-premium"),value:"author-archives"},{label:(0,i.__)("Comments area","gp-premium"),value:"comments"},{label:(0,i.__)("Next page of posts","gp-premium"),value:"next-posts"},{label:(0,i.__)("Previous page of posts","gp-premium"),value:"previous-posts"},{label:(0,i.__)("Post meta","gp-premium"),value:"post-meta"},{label:(0,i.__)("Author meta","gp-premium"),value:"user-meta"},{label:(0,i.__)("Term meta","gp-premium"),value:"term-meta"}];"terms"===o&&(R=[{label:(0,i.__)("Choose…","gp-premium"),value:""},{label:(0,i.__)("Term archives","gp-premium"),value:"term-archives"}]),"generateblocks/headline"!==a||o||(R=[]);let L=!!o||!!f;"post-navigation-template"!==wp.data.select("core/editor").getEditedPostAttribute("meta")._generate_block_type&&(L=!1),"next-posts"!==f&&"previous-posts"!==f||(L=!1);let I=(0,i.__)("Before text","gp-premim");return"post-date"===o&&u&&"published-date"===v&&(I=(0,i.__)("Published date before text","gp-premium")),(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Dynamic text type","gp-premium"),value:o,options:[{label:(0,i.__)("Choose…","gp-premium"),value:""},{label:(0,i.__)("Title","gp-premium"),value:"title"},{label:(0,i.__)("Post date","gp-premium"),value:"post-date"},{label:(0,i.__)("Post author name","gp-premium"),value:"post-author"},{label:(0,i.__)("List of terms","gp-premium"),value:"terms"},{label:(0,i.__)("Comments number","gp-premium"),value:"comments-number"},{label:(0,i.__)("Post meta","gp-premium"),value:"post-meta"},{label:(0,i.__)("Term meta","gp-premium"),value:"term-meta"},{label:(0,i.__)("Author meta","gp-premium"),value:"user-meta"}],onChange:e=>{n({gpDynamicTextType:e});let t=[];w&&(t=w.split(" "));const o=["dynamic-term-class"];if(t=t.filter((e=>!o.includes(e))),"terms"===e&&t.push("dynamic-term-class"),t.length>0?n({className:t.join(" ")}):n({className:""}),"generateblocks/headline"===a){let t=(0,i.__)("Hello World","gp-premium");"post-date"===e?t=(0,i.__)("Post date","gp-premium"):"post-author"===e?t=(0,i.__)("Post author name","gp-premium"):"terms"===e?t=(0,i.__)("Terms","gp-premium"):"comments-number"===e?t=(0,i.__)("Comments number","gp-premium"):"post-meta"===e?t=(0,i.__)("Post meta","gp-premium"):"user-meta"===e?t=(0,i.__)("User meta","gp-premium"):"term-meta"===e&&(t=(0,i.__)("Term meta","gp-premium")),n({content:t})}}}),""!==o&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.TextControl,{className:"gpp-blocks-dynamic-text-replace-field",type:"text",value:c}),"post-date"===o&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Date type","gp-premium"),value:v,options:[{label:(0,i.__)("Published date","gp-premim"),value:"published-date"},{label:(0,i.__)("Updated date","gp-premium"),value:"updated-date"}],onChange:e=>{n({gpDynamicDateType:e,gpDynamicTextBefore:"",gpDynamicUpdatedDateBefore:""})}}),"published-date"===v&&(0,e.createElement)(p.ToggleControl,{label:(0,i.__)("Replace with updated date","gp-premium"),checked:!!u,onChange:e=>{n({gpDynamicDateUpdated:e})}})),"terms"===o&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Taxonomy","gp-premium"),value:g,options:C,onChange:e=>{n({gpDynamicTextTaxonomy:e})}}),"generateblocks/headline"===a&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.TextControl,{label:(0,i.__)("Term separator","gp-premium"),type:"text",value:s,onChange:e=>{n({gpDynamicTextTaxonomySeparator:e})}}))),"comments-number"===o&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.TextControl,{label:(0,i.__)("No comments text","gp-premium"),type:"text",value:b,onChange:e=>{n({gpDynamicNoCommentsText:e})}}),(0,e.createElement)(p.TextControl,{label:(0,i.__)("Singular comments text","gp-premium"),type:"text",value:x,onChange:e=>{n({gpDynamicSingleCommentText:e})}}),(0,e.createElement)(p.TextControl,{label:(0,i.__)("Plural comments text","gp-premium"),help:(0,i.__)("Use % in place of the number of comments","gp-premium"),type:"text",value:h,onChange:e=>{n({gpDynamicMultipleCommentsText:e})}})),("post-meta"===o||"term-meta"===o||"user-meta"===o)&&(0,e.createElement)(p.TextControl,{label:(0,i.__)("Meta field name","gp-premium"),type:"text",value:d,onChange:e=>{n({gpDynamicTextCustomField:e})}}),"generateblocks/headline"===a&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.TextControl,{label:I,type:"text",value:m,onChange:e=>{n({gpDynamicTextBefore:e})}}),"post-date"===o&&!!u&&"published-date"===v&&(0,e.createElement)(p.TextControl,{label:(0,i.__)("Updated date before text","gp-premium"),type:"text",value:T,onChange:e=>{n({gpDynamicUpdatedDateBefore:e})}}))),R.length>1&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Dynamic link type","gp-premium"),value:f,options:R,onChange:e=>{"generateblocks/button"===a&&n(e?{gpDynamicLinkType:e,hasUrl:!0,url:"#"}:{gpDynamicLinkType:e,hasUrl:!1,url:""}),"generateblocks/headline"===a&&n({gpDynamicLinkType:e})}}),("post-meta"===f||"term-meta"===f||"user-meta"===f)&&(0,e.createElement)(p.TextControl,{label:(0,i.__)("Meta field name","gp-premium"),type:"text",value:y,onChange:e=>{n({gpDynamicLinkCustomField:e})}})),L&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Source","gp-premium"),value:l,options:[{label:(0,i.__)("Current post","gp-premium"),value:"current-post"},{label:(0,i.__)("Next post","gp-premium"),value:"next-post"},{label:(0,i.__)("Previous post","gp-premium"),value:"previous-post"}],onChange:e=>{n({gpDynamicSource:e})}}),("next-post"===l||"previous-post"===l)&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.ToggleControl,{label:(0,i.__)("In same term","gp-premium"),help:(0,i.__)("Check for posts with the same term as the current post.","gp-premim"),checked:!!_,onChange:e=>{n({gpDynamicSourceInSameTerm:e})}}),!!_&&(0,e.createElement)(p.TextControl,{label:(0,i.__)("Taxonomy","gp-premium"),help:(0,i.__)("The taxonomy to check if in the same term.","gp-premim"),type:"text",value:k,onChange:e=>{n({gpDynamicSourceInSameTermTaxonomy:e})}}))))}}const h=x,f=["generateblocks/headline","generateblocks/button"],y=(0,l.createHigherOrderComponent)((t=>n=>f.includes(n.name)?(0,e.createElement)(r.Fragment,null,(0,e.createElement)(b,{...n}),(0,e.createElement)(t,{...n})):(0,e.createElement)(t,{...n})),"withClientIdClassName"),_=(0,l.createHigherOrderComponent)((t=>n=>{const{name:o,attributes:l,isSelected:g}=n,{gpDynamicTextType:s,gpDynamicLinkType:d}=l;return(0,e.createElement)(r.Fragment,null,(0,e.createElement)(t,{...n}),g&&f.includes(o)&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(c.BlockControls,null,(0,e.createElement)(p.ToolbarGroup,null,(0,e.createElement)(p.Dropdown,{contentClassName:"gpp-dynamic-headline-text-dropdown",popoverProps:{className:"block-editor-block-settings-menu__popover",position:"bottom right"},renderToggle:({isOpen:t,onToggle:n})=>(0,e.createElement)(p.ToolbarButton,{icon:a("dynamic"),label:(0,i.__)("Dynamic options","gp-premium"),onClick:n,"aria-expanded":t,isPressed:!!s||!!d}),renderContent:()=>(0,e.createElement)(r.Fragment,null,(0,e.createElement)(h,{...n}))})))))}),"addDynamicHeadlineTextToolbar");function k(e,t){return!(void 0===t.attributes.gpDynamicTextType||!t.attributes.gpDynamicTextType)||e}(0,o.addFilter)("blocks.registerBlockType","gp-premium/dynamic-text/add-attributes",(function(e){return f.includes(e.name)?(void 0!==e.attributes&&(e.attributes=Object.assign(e.attributes,{gpDynamicTextType:{type:"string",default:""},gpDynamicLinkType:{type:"string",default:""},gpDynamicTextReplace:{type:"string",default:""},gpDynamicSource:{type:"string",default:"current-post"},gpDynamicSourceInSameTerm:{type:"boolean",default:!1},gpDynamicSourceInSameTermTaxonomy:{type:"string",default:"category"},gpDynamicTextTaxonomy:{type:"string",default:""},gpDynamicTextTaxonomySeparator:{type:"string",default:", "},gpDynamicTextCustomField:{type:"string",default:""},gpDynamicTextBefore:{type:"string",default:""},gpDynamicUpdatedDateBefore:{type:"string",default:""},gpDynamicDateUpdated:{type:"boolean",default:!1},gpDynamicNoCommentsText:{type:"string",default:(0,i.__)("No Comments","gp-premium")},gpDynamicSingleCommentText:{type:"string",default:(0,i.__)("1 Comment","gp-premium")},gpDynamicMultipleCommentsText:{type:"string",default:(0,i.__)("% Comments","gp-premium")},gpDynamicLinkCustomField:{type:"string",default:""},gpDynamicDateType:{type:"string",default:"published-date"}})),e):e})),(0,o.addFilter)("editor.BlockListBlock","my-plugin/with-client-id-class-name",y),(0,o.addFilter)("editor.BlockEdit","gp-premium/dynamic-headline/toolbar",_),(0,o.addFilter)("generateblocks.editor.headlineDisableFormatting","gp-premium/dynamic-headline/disable-headline-formatting",k),(0,o.addFilter)("generateblocks.editor.buttonDisableFormatting","gp-premium/dynamic-headline/disable-button-formatting",k),(0,o.addFilter)("generateblocks.editor.mainCSS","gp-premium/dynamic-headline/headline-css",(function(e,n,a){if(!["headline"].includes(a))return e;const{uniqueId:i,gpDynamicTextBefore:o,gpDynamicTextType:r}=n.attributes;return r&&o&&t(e,".gb-headline-"+i+" .gb-headline-text:before, .gb-headline-"+i+".gb-headline-text:before",{content:'"'+o+'"'}),e}));const w=window.wp.serverSideRender;var v=n.n(w);class T extends r.Component{render(){const{attributes:t,setAttributes:n}=this.props,{contentType:a,excerptLength:o,useThemeMoreLink:l,customMoreLink:g}=t;return(0,e.createElement)(r.Fragment,null,(0,e.createElement)(c.InspectorControls,null,(0,e.createElement)(p.PanelBody,null,(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Type","gp-premium"),value:a,options:[{label:(0,i.__)("Choose…","gp-premium"),value:""},{label:(0,i.__)("Post content","gp-premium"),value:"post-content"},{label:(0,i.__)("Post excerpt","gp-premium"),value:"post-excerpt"},{label:(0,i.__)("Term description","gp-premium"),value:"term-description"},{label:(0,i.__)("Author description","gp-premium"),value:"author-description"}],onChange:e=>{n({contentType:e})}}),"post-excerpt"===a&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.TextControl,{label:(0,i.__)("Excerpt length","gp-premium"),type:"number",value:o||"",placeholder:gpPremiumBlockElements.excerptLength,onChange:e=>{n({excerptLength:e})},onBlur:()=>{n({excerptLength:parseInt(o)})},onClick:e=>{e.currentTarget.focus()}}),(0,e.createElement)(p.ToggleControl,{label:(0,i.__)("Use theme more link","gp-premium"),type:"number",checked:!!l,onChange:e=>{n({useThemeMoreLink:e})}}),!l&&(0,e.createElement)(p.TextControl,{label:(0,i.__)("Custom more link","gp-premium"),type:"text",value:g||"",onChange:e=>{n({customMoreLink:e})}})))),!a&&(0,e.createElement)(p.Placeholder,{label:(0,i.__)("Dynamic content","gp-premium"),instructions:(0,i.__)("Choose your dynamic content type.","gp-premium")},(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Type","gp-premium"),value:a,options:[{label:(0,i.__)("Choose…","gp-premium"),value:""},{label:(0,i.__)("Post content","gp-premium"),value:"post-content"},{label:(0,i.__)("Post excerpt","gp-premium"),value:"post-excerpt"},{label:(0,i.__)("Term description","gp-premium"),value:"term-description"},{label:(0,i.__)("Author description","gp-premium"),value:"author-description"}],onChange:e=>{n({contentType:e})}})),"post-content"===a&&(0,e.createElement)("div",{className:"gb-entry-content"},(0,e.createElement)("p",null,(0,i.__)("This is a placeholder for your content.","gp-premium")),(0,e.createElement)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed pulvinar ligula augue, quis bibendum tellus scelerisque venenatis. Pellentesque porta nisi mi. In hac habitasse platea dictumst. Etiam risus elit, molestie non volutpat ac, pellentesque sed eros. Nunc leo odio, sodales non tortor at, porttitor posuere dui.")),"post-excerpt"===a&&(0,e.createElement)("div",null,(0,e.createElement)(v(),{block:"generatepress/dynamic-content",attributes:t})),("author-description"===a||"term-description"===a)&&(0,e.createElement)("div",{className:"gb-description"},(0,e.createElement)("p",null,(0,i.__)("This is a placeholder for your description.","gp-premium")),(0,e.createElement)("p",null,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed pulvinar ligula augue, quis bibendum tellus scelerisque venenatis. Pellentesque porta nisi mi. In hac habitasse platea dictumst. Etiam risus elit, molestie non volutpat ac, pellentesque sed eros. Nunc leo odio, sodales non tortor at, porttitor posuere dui.")))}}const C=T,D=window.wp.blocks;(0,D.registerBlockType)("generatepress/dynamic-content",{title:(0,i.__)("Dynamic Content","gp-premium"),description:(0,i.__)("Displays dynamic content based on your chosen source.","gp-premium"),icon:a("generatepress"),category:"generatepress",keywords:[(0,i.__)("content"),(0,i.__)("dynamic content"),(0,i.__)("gp"),(0,i.__)("generate")],supports:{anchor:!1,className:!1,customClassName:!1},attributes:{contentType:{type:"string",default:""},excerptLength:{type:"number",default:gpPremiumBlockElements.excerptLength},useThemeMoreLink:{type:"boolean",default:!0},customMoreLink:{type:"string",default:""}},edit:C,save:()=>null});var R=n(184),L=n.n(R);class I extends r.Component{render(){const{attributes:t,setAttributes:n}=this.props,{imageSize:a,imageType:o,imageSource:l,customField:g,linkTo:s,linkToCustomField:d,imageWidth:m,imageHeight:u,avatarSize:b,avatarRounded:x,gpDynamicSourceInSameTerm:h,gpDynamicSourceInSameTermTaxonomy:f}=t,y=[];Object.keys(gpPremiumBlockElements.imageSizes).forEach((e=>{y.push({label:gpPremiumBlockElements.imageSizes[e],value:gpPremiumBlockElements.imageSizes[e]})}));const _=gpPremiumBlockElements.imageSizeDimensions;let k=m,w=u;k||void 0!==_[a]&&_[a].width&&(k=_[a].width),w||void 0!==_[a]&&_[a].height&&(w=_[a].height);let v=gpPremiumBlockElements.featuredImagePlaceholder;"author-avatar"!==o&&k!==w||(v=gpPremiumBlockElements.authorImagePlaceholder);const T=wp.data.select("core/editor").getEditedPostAttribute("meta");return(0,e.createElement)(r.Fragment,null,(0,e.createElement)(c.InspectorControls,null,(0,e.createElement)(p.PanelBody,null,(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Type","gp-premium"),value:o,options:[{label:(0,i.__)("Choose…","gp-premium"),value:""},{label:(0,i.__)("Featured image","gp-premium"),value:"featured-image"},{label:(0,i.__)("Author avatar","gp-premium"),value:"author-avatar"},{label:(0,i.__)("Post meta","gp-premium"),value:"post-meta"}],onChange:e=>{n({imageType:e})}}),("featured-image"===o||"post-meta"===o)&&(0,e.createElement)(r.Fragment,null,"post-meta"===o&&(0,e.createElement)(p.TextControl,{label:(0,i.__)("Meta field name","gp-premium"),type:"text",value:g,onChange:e=>{n({customField:e})}}),"post-navigation-template"===T._generate_block_type&&(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Source","gp-premium"),value:l,options:[{label:(0,i.__)("Current post","gp-premium"),value:"current-post"},{label:(0,i.__)("Next post","gp-premium"),value:"next-post"},{label:(0,i.__)("Previous post","gp-premium"),value:"previous-post"}],onChange:e=>{n({imageSource:e})}}),("next-post"===l||"previous-post"===l)&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.ToggleControl,{label:(0,i.__)("In same term","gp-premium"),help:(0,i.__)("Check for posts with the same term as the current post.","gp-premim"),checked:!!h,onChange:e=>{n({gpDynamicSourceInSameTerm:e})}}),!!h&&(0,e.createElement)(p.TextControl,{label:(0,i.__)("Taxonomy","gp-premium"),help:(0,i.__)("The taxonomy to check if in the same term.","gp-premim"),type:"text",value:f,onChange:e=>{n({gpDynamicSourceInSameTermTaxonomy:e})}})),(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Image size","gp-premium"),value:a,options:y,onChange:e=>{n({imageSize:e})}}),(0,e.createElement)(p.TextControl,{label:(0,i.__)("Image width","gp-premium"),type:"number",value:m||"",placeholder:k,onChange:e=>{n({imageWidth:e})},onBlur:()=>{m&&n({imageWidth:parseInt(m)})},onClick:e=>{e.currentTarget.focus()}}),(0,e.createElement)(p.TextControl,{label:(0,i.__)("Image height","gp-premium"),type:"number",value:u||"",placeholder:w,onChange:e=>{n({imageHeight:e})},onBlur:()=>{u&&n({imageHeight:parseInt(u)})},onClick:e=>{e.currentTarget.focus()}}),(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Link to","gp-premium"),value:s,options:[{label:(0,i.__)("None","gp-premium"),value:""},{label:(0,i.__)("Single post","gp-premium"),value:"single-post"},{label:(0,i.__)("Custom field","gp-premium"),value:"custom-field"}],onChange:e=>{n({linkTo:e})}}),"custom-field"===s&&(0,e.createElement)(p.TextControl,{label:(0,i.__)("Custom field name","gp-premium"),type:"text",value:d,onChange:e=>{n({linkToCustomField:e})}})),"author-avatar"===o&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.TextControl,{label:(0,i.__)("Image size","gp-premium"),type:"number",value:b||"",onChange:e=>{n({avatarSize:parseInt(e)})}}),(0,e.createElement)(p.ToggleControl,{label:(0,i.__)("Make image rounded","gp-premium"),checked:!!x,onChange:e=>{n({avatarRounded:e})}})))),!o&&(0,e.createElement)(p.Placeholder,{label:(0,i.__)("Dynamic image","gp-premium"),instructions:(0,i.__)("Choose your dynamic image type.","gp-premium")},(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Type","gp-premium"),value:o,options:[{label:(0,i.__)("Choose…","gp-premium"),value:""},{label:(0,i.__)("Featured image","gp-premium"),value:"featured-image"},{label:(0,i.__)("Author avatar","gp-premium"),value:"author-avatar"},{label:(0,i.__)("Post meta","gp-premium"),value:"post-meta"}],onChange:e=>{n({imageType:e})}})),(0,e.createElement)("div",{className:"gpp-dynamic-image-preview"},(0,e.createElement)(r.Fragment,null,("featured-image"===o||"post-meta"===o)&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)("div",{className:"components-gpp-dynamic-image-placeholder__label"},(0,e.createElement)(p.Icon,{icon:"format-image"})),(0,e.createElement)("img",{src:v,className:"dynamic-featured-image gpp-dynamic-image-placeholder",width:k||"",height:w||"",alt:(0,i.__)("Dynamic image placeholder","gp-premium")})),"author-avatar"===o&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)("div",{className:"components-gpp-dynamic-image-placeholder__label"},(0,e.createElement)(p.Icon,{icon:"admin-users"})),(0,e.createElement)("img",{src:v,className:L()({"dynamic-author-image":!0,"gpp-dynamic-image-placeholder":!0,"dynamic-author-image-rounded":!!x}),width:b||null,height:b||null,alt:(0,i.__)("Dynamic image placeholder","gp-premium")})))))}}const S=I;(0,D.registerBlockType)("generatepress/dynamic-image",{title:(0,i.__)("Dynamic Image","gp-premium"),description:(0,i.__)("Displays a dynamic image from your chosen source.","gp-premium"),icon:a("generatepress"),category:"generatepress",keywords:[(0,i.__)("image"),(0,i.__)("dynamic image"),(0,i.__)("gp"),(0,i.__)("generate")],supports:{anchor:!1,className:!1,customClassName:!0},attributes:{imageType:{type:"string",default:""},imageSource:{type:"string",default:"current-post"},customField:{type:"string",default:""},gpDynamicSourceInSameTerm:{type:"boolean",default:!1},gpDynamicSourceInSameTermTaxonomy:{type:"string",default:"category"},imageSize:{type:"string",default:"full"},linkTo:{type:"string",default:""},linkToCustomField:{type:"string",default:""},imageWidth:{type:"number",default:null},imageHeight:{type:"number",default:null},avatarSize:{type:"number",default:30},avatarRounded:{type:"boolean",default:!1}},edit:S,save:()=>null});const B=window.lodash;var E=n.n(B);class M extends r.Component{render(){const{label:t,value:n,onClick:a,units:o}=this.props;return(0,e.createElement)("div",{className:"components-generatepress-units-control-header__units"},(0,e.createElement)("div",{className:"components-generatepress-units-control-label__units"},t),(0,e.createElement)("div",{className:"components-generatepress-control__units"},(0,e.createElement)(p.ButtonGroup,{className:"components-generatepress-control-buttons__units","aria-label":(0,i.__)("Select Units","gp-premium")},o.map((t=>{let o=t;return"px"===t&&(o=(0,i._x)("Pixel","A size unit for CSS markup","gp-premium")),"em"===t&&(o=(0,i._x)("Em","A size unit for CSS markup","gp-premium")),"%"===t&&(o=(0,i._x)("Percentage","A size unit for CSS markup","gp-premium")),"deg"===t&&(o=(0,i._x)("Degree","A size unit for CSS markup","gp-premium")),(0,e.createElement)(p.Tooltip -/* translators: Unit type (px, em, %) */,{text:(0,i.sprintf)((0,i.__)("%s Units","gp-premium"),o),key:t},(0,e.createElement)(p.Button,{key:t,className:"components-generatepress-control-button__units--"+t,isSmall:!0,isPrimary:n===t,"aria-pressed":n===t -/* translators: %s: values associated with CSS syntax, 'Pixel', 'Em', 'Percentage' */,"aria-label":(0,i.sprintf)((0,i.__)("%s Units","gp-premium"),o),onClick:()=>a(t)},t))})))))}}const z={template_1:{label:(0,i._x)("Two columns with featured image","label","gp-premium"),thumbnail:"post-navigation-featured-images-1.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"99fe8eb7","isDynamic":true,"blockVersion":4,"sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"bdf9a41e","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","flexDirectionMobile":"column","alignItems":"center","justifyContent":"space-between","sizing":{"maxWidth":""},"useGlobalMaxWidth":true,"spacing":{"marginRight":"auto","marginLeft":"auto"}} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"8e5dc8f7","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","alignItems":"center","columnGap":"20px","sizing":{"width":"50%","widthMobile":"100%","height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px","marginBottomMobile":"10px"},"gpRemoveContainerCondition":"no-previous-post"} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"featured-image","imageSource":"previous-post","imageSize":"thumbnail","linkTo":"single-post","imageWidth":100,"imageHeight":100,"avatarSize":100} /--\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"d54a6460","isDynamic":true,"blockVersion":4,"sizing":{"width":"75%","widthMobile":"75%","height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"0d00c744","element":"p","blockVersion":3,"spacing":{"marginBottom":"5px"},"gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Previous post title","gpDynamicSource":"previous-post"} --\x3e

    Previous post title

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"86e1ad46","element":"p","blockVersion":3,"typography":{"fontSize":"14px"},"spacing":{"marginBottom":"0px"},"gpDynamicTextType":"post-author","gpDynamicLinkType":"author-archives","gpDynamicTextReplace":"Author name","gpDynamicSource":"previous-post","gpDynamicTextBefore":"by "} --\x3e

    Author name

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"2540358d","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row-reverse","flexDirectionMobile":"row","alignItems":"center","columnGap":"20px","sizing":{"width":"50%","widthMobile":"100%","height":"","maxWidth":""},"typography":{"textAlignMobile":"left"},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"},"gpRemoveContainerCondition":"no-next-post"} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"featured-image","imageSource":"next-post","imageSize":"thumbnail","linkTo":"single-post","imageWidth":100,"imageHeight":100,"avatarSize":100} /--\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"daa456b5","isDynamic":true,"blockVersion":4,"sizing":{"width":"75%","widthMobile":"75%","height":"","maxWidth":""},"typography":{"textAlign":"right","textAlignMobile":"left"},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"2883b2a4","element":"p","blockVersion":3,"spacing":{"marginBottom":"5px"},"gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Next post title","gpDynamicSource":"next-post"} --\x3e

    Next post title

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"3d2e07c6","element":"p","blockVersion":3,"typography":{"fontSize":"14px"},"spacing":{"marginBottom":"0px"},"gpDynamicTextType":"post-author","gpDynamicLinkType":"author-archives","gpDynamicTextReplace":"Author name","gpDynamicSource":"next-post","gpDynamicTextBefore":"by "} --\x3e

    Author name

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_hook",value:"generate_after_do_template_part"},{key:"_generate_hook_priority",value:"1"},{key:"_generate_disable_post_navigation",value:!0},{key:"_generate_use_archive_navigation_container",value:!0}]},template_2:{label:(0,i._x)("Two columns with arrows","label","gp-premium"),thumbnail:"post-navigation-arrows-1.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"d1dd99b1","isDynamic":true,"blockVersion":4,"sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"20px","paddingRight":"0px","paddingBottom":"20px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"8878e700","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","flexDirectionMobile":"column","alignItems":"center","justifyContent":"space-between","rowGapMobile":"10px","sizing":{"maxWidth":""},"useGlobalMaxWidth":true,"spacing":{"marginRight":"auto","marginLeft":"auto"}} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"9c89f761","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","alignItems":"center","columnGap":"30px","sizing":{"width":"50%","widthMobile":"100%","height":"","maxWidth":""},"spacing":{"paddingTop":"","paddingRight":"","paddingBottom":"","paddingLeft":"","marginBottomMobile":"10px"},"gpRemoveContainerCondition":"no-previous-post"} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"9cf413a8","isDynamic":true,"blockVersion":4,"sizing":{"width":"","widthTablet":"","widthMobile":"","height":"","maxWidth":""},"spacing":{"paddingTop":"","paddingRight":"","paddingBottom":"","paddingLeft":""}} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"bec8d56e","hasUrl":true,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"textAlign":"center"},"spacing":{"paddingTop":"10px","paddingRight":"10px","paddingBottom":"10px","paddingLeft":"10px"},"backgroundColor":"#000000","backgroundColorHover":"#abb8c3","textColor":"#ffffff","hasIcon":true,"removeText":true,"iconStyles":{"width":"1.5em","height":"1.5em","paddingRight":"0.5em"},"gpDynamicLinkType":"single-post","gpDynamicSource":"previous-post"} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"625f3305","isDynamic":true,"blockVersion":4,"sizing":{"width":"","widthTablet":"","widthMobile":"","height":"","maxWidth":""},"spacing":{"paddingTop":"","paddingRight":"","paddingBottom":"","paddingLeft":""}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"a6f36397","element":"p","blockVersion":3,"spacing":{"marginBottom":"0px"},"gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Previous post title","gpDynamicSource":"previous-post"} --\x3e

    Previous post title

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"3d262c0b","element":"p","blockVersion":3,"typography":{"fontSize":"14px"},"spacing":{"marginBottom":"0px"},"gpDynamicTextType":"post-date","gpDynamicTextReplace":"Date","gpDynamicSource":"previous-post","gpDynamicDateUpdated":true} --\x3e

    Date

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"5d70717c","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","alignItems":"center","justifyContent":"flex-end","justifyContentMobile":"flex-start","columnGap":"30px","sizing":{"width":"50%","widthMobile":"100%","height":"","maxWidth":""},"typography":{"textAlign":"right","textAlignMobile":"left"},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"},"gpRemoveContainerCondition":"no-next-post"} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"78f3ead4","isDynamic":true,"blockVersion":4,"sizing":{"width":"","widthTablet":"","widthMobile":"","height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"643cf12f","element":"p","blockVersion":3,"spacing":{"marginBottom":"0px"},"gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Next post title","gpDynamicSource":"next-post"} --\x3e

    Next post title

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"8ac35083","element":"p","blockVersion":3,"typography":{"fontSize":"14px"},"spacing":{"marginBottom":"0px"},"gpDynamicTextType":"post-date","gpDynamicTextReplace":"Date","gpDynamicSource":"next-post","gpDynamicDateUpdated":true} --\x3e

    Date

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"780c810b","isDynamic":true,"blockVersion":4,"orderMobile":-1,"sizing":{"width":"","widthTablet":"","widthMobile":"","height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"122d9fa4","hasUrl":true,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"textAlign":"center"},"spacing":{"paddingTop":"10px","paddingRight":"10px","paddingBottom":"10px","paddingLeft":"10px"},"backgroundColor":"#000000","backgroundColorHover":"#abb8c3","textColor":"#ffffff","hasIcon":true,"removeText":true,"iconStyles":{"width":"1.5em","height":"1.5em","paddingRight":"0.5em"},"gpDynamicLinkType":"single-post","gpDynamicSource":"next-post"} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_hook",value:"generate_after_do_template_part"},{key:"_generate_hook_priority",value:"1"},{key:"_generate_disable_post_navigation",value:!0},{key:"_generate_use_archive_navigation_container",value:!0}]},template_3:{label:(0,i._x)("Two columns with background overlays","label","gp-premium"),thumbnail:"post-navigation-overlay.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"aadd0a6f","isDynamic":true,"blockVersion":4,"sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"},"paddingSyncUnits":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"3642451a","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","sizing":{"maxWidth":""},"useGlobalMaxWidth":true,"spacing":{"marginRight":"auto","marginLeft":"auto"}} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"59edc08b","backgroundColor":"#000000","textColor":"#ffffff","linkColor":"#ffffff","linkColorHover":"#e3e3e3","bgImage":{"id":"","image":{"url":"#dynamic-background-image"}},"bgOptions":{"selector":"pseudo-element","opacity":0.4,"overlay":false,"position":"center center","size":"cover","repeat":"no-repeat","attachment":""},"innerZindex":1,"isDynamic":true,"blockVersion":4,"position":"relative","overflowX":"hidden","overflowY":"hidden","sizing":{"width":"50%","widthMobile":"100%","height":"","maxWidth":""},"spacing":{"paddingTop":"40px","paddingRight":"40px","paddingBottom":"40px","paddingLeft":"40px"},"paddingSyncUnits":true,"gpDynamicImageBg":"featured-image","gpDynamicSource":"previous-post","gpRemoveContainerCondition":"no-previous-post"} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"a510c6c2","isDynamic":true,"blockVersion":4,"position":"relative","zindex":1,"sizing":{"maxWidth":""},"useGlobalMaxWidth":true,"spacing":{"marginRight":"auto","marginLeft":"auto"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"8d3d4c12","element":"p","blockVersion":3,"display":"inline-block","typography":{"fontSize":"14px","textTransform":"uppercase"},"spacing":{"paddingTop":"5px","paddingRight":"10px","paddingBottom":"5px","paddingLeft":"10px"},"inlineWidth":true,"backgroundColor":"#cf2e2e"} --\x3e

    Previous

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"352592d1","element":"h3","blockVersion":3,"typography":{"fontSize":"25px"},"spacing":{"marginBottom":"0px"},"className":"","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Hello World","gpDynamicSource":"previous-post"} --\x3e

    Hello World

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"993a41e4","backgroundColor":"#000000","textColor":"#ffffff","linkColor":"#ffffff","linkColorHover":"#e3e3e3","bgImage":{"id":"","image":{"url":"#dynamic-background-image"}},"bgOptions":{"selector":"pseudo-element","opacity":0.4,"overlay":false,"position":"center center","size":"cover","repeat":"no-repeat","attachment":""},"innerZindex":1,"isDynamic":true,"blockVersion":4,"position":"relative","overflowX":"hidden","overflowY":"hidden","sizing":{"width":"50%","widthMobile":"100%","height":"","maxWidth":""},"spacing":{"paddingTop":"40px","paddingRight":"40px","paddingBottom":"40px","paddingLeft":"40px"},"paddingSyncUnits":true,"gpDynamicImageBg":"featured-image","gpDynamicSource":"next-post","gpRemoveContainerCondition":"no-next-post"} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"ea84c30e","isDynamic":true,"blockVersion":4,"position":"relative","zindex":1,"sizing":{"maxWidth":""},"useGlobalMaxWidth":true,"spacing":{"marginRight":"auto","marginLeft":"auto"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"49c8845f","element":"p","blockVersion":3,"display":"inline-block","typography":{"fontSize":"14px","textTransform":"uppercase"},"spacing":{"paddingTop":"5px","paddingRight":"10px","paddingBottom":"5px","paddingLeft":"10px"},"inlineWidth":true,"backgroundColor":"#cf2e2e"} --\x3e

    Next

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"6ba8079e","element":"h3","blockVersion":3,"typography":{"fontSize":"25px"},"spacing":{"marginBottom":"0px"},"className":"","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Hello World","gpDynamicSource":"next-post"} --\x3e

    Hello World

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_hook",value:"generate_after_do_template_part"},{key:"_generate_hook_priority",value:"1"},{key:"_generate_disable_post_navigation",value:!0},{key:"_generate_use_archive_navigation_container",value:!1}]},template_4:{label:(0,i._x)("Two columns with arrows","label","gp-premium"),thumbnail:"post-navigation-arrows-2.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"96f5f0fa","innerContainer":"full","isDynamic":true,"blockVersion":4,"sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"},"paddingSyncUnits":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"f9c8f86f","isDynamic":true,"blockVersion":4,"display":"flex","sizing":{"maxWidth":""},"spacing":{"marginRight":"auto","marginLeft":"auto"}} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"5287d6da","backgroundColor":"#ffffff","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row-reverse","flexDirectionMobile":"column","justifyContent":"space-between","sizing":{"width":"50%","widthMobile":"100%","height":"","maxWidth":""},"spacing":{"paddingTop":"30px","paddingRight":"0px","paddingBottom":"25px","paddingLeft":"25px"},"gpRemoveContainerCondition":"no-previous-post"} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"75cd654a","isDynamic":true,"blockVersion":4,"sizing":{"width":"","widthMobile":"100%","height":"","maxWidth":""},"typography":{"textAlignMobile":"right"},"spacing":{"paddingTop":"","paddingRight":"","paddingBottom":"","paddingLeft":""}} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"6acb0e83","hasUrl":true,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"textAlign":"center"},"spacing":{"paddingTop":"15px","paddingRight":"20px","paddingBottom":"15px","paddingLeft":"20px"},"backgroundColor":"#0366d6","backgroundColorHover":"#222222","textColor":"#ffffff","textColorHover":"#ffffff","hasIcon":true,"removeText":true,"iconStyles":{"width":"1em","height":"1em","paddingRight":"0.5em"},"gpDynamicLinkType":"single-post","gpDynamicSource":"previous-post"} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"eb3b7005","isDynamic":true,"blockVersion":4,"sizing":{"width":"","widthMobile":"100%","height":"","maxWidth":""},"typography":{},"spacing":{"paddingTop":"","paddingRight":"","paddingBottom":"","paddingLeft":"","paddingTopMobile":"","paddingRightMobile":"10px","paddingBottomMobile":"","paddingLeftMobile":"","marginTopMobile":"20px"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"0a2d5bfc","element":"h3","blockVersion":3,"typography":{"textAlign":"left"},"spacing":{"marginBottom":"10px"},"textColor":"#000000","linkColor":"#000000","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Hello World","gpDynamicSource":"previous-post"} --\x3e

    Hello World

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"164ae39e","element":"p","blockVersion":3,"display":"flex","alignItems":"center","typography":{"fontSize":"14px"},"spacing":{"marginBottom":"0px"},"hasIcon":true,"iconStyles":{"width":"1em","height":"1em","paddingRight":"0.5em"},"gpDynamicTextType":"comments-number","gpDynamicLinkType":"comments","gpDynamicTextReplace":"Comments number","gpDynamicSource":"previous-post"} --\x3e

    Comments number

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"7af8fa61","backgroundColor":"#0366d6","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","flexDirectionMobile":"column","justifyContent":"space-between","sizing":{"width":"50%","widthMobile":"100%","height":"","maxWidth":""},"spacing":{"paddingTop":"30px","paddingRight":"25px","paddingBottom":"25px","paddingLeft":"0px"},"gpRemoveContainerCondition":"no-next-post"} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"045e1698","isDynamic":true,"blockVersion":4,"sizing":{"width":"","widthMobile":"100%","height":"","maxWidth":""},"typography":{},"spacing":{"paddingTop":"","paddingRight":"","paddingBottom":"","paddingLeft":""}} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"557abb73","hasUrl":true,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"textAlign":"center"},"spacing":{"paddingTop":"15px","paddingRight":"20px","paddingBottom":"15px","paddingLeft":"20px"},"backgroundColor":"#ffffff","backgroundColorHover":"#222222","textColor":"#0693e3","textColorHover":"#ffffff","hasIcon":true,"removeText":true,"iconStyles":{"width":"1em","height":"1em","paddingRight":"0.5em"},"gpDynamicLinkType":"single-post","gpDynamicSource":"next-post"} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"9ad09f6f","isDynamic":true,"blockVersion":4,"sizing":{"width":"","widthMobile":"100%","height":"","maxWidth":""},"typography":{},"spacing":{"paddingTop":"","paddingRight":"","paddingBottom":"","paddingLeft":"","paddingLeftMobile":"10px","marginTopMobile":"20px"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"9ba9e9d1","element":"h3","blockVersion":3,"typography":{},"spacing":{"marginBottom":"10px"},"textColor":"#ffffff","linkColor":"#ffffff","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Hello World","gpDynamicSource":"next-post"} --\x3e

    Hello World

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"8ebf8dbe","element":"p","blockVersion":3,"display":"flex","alignItems":"center","typography":{"fontSize":"14px","textAlign":""},"spacing":{"marginBottom":"0px"},"textColor":"#ffffff","linkColor":"#ffffff","hasIcon":true,"iconStyles":{"width":"1em","height":"1em","paddingRight":"0.5em"},"gpDynamicTextType":"comments-number","gpDynamicLinkType":"comments","gpDynamicTextReplace":"Comments number","gpDynamicSource":"next-post"} --\x3e

    Comments number

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_hook",value:"generate_after_do_template_part"},{key:"_generate_hook_priority",value:"1"},{key:"_generate_disable_post_navigation",value:!0},{key:"_generate_use_archive_navigation_container",value:!1}]},template_5:{label:(0,i._x)("Two columns with featured image offset","label","gp-premim"),thumbnail:"post-navigation-offset.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"52018004","innerContainer":"full","isDynamic":true,"blockVersion":4,"sizing":{"height":"","maxWidth":""},"typography":{"textAlign":"right"},"spacing":{"paddingTop":"","paddingRight":"","paddingBottom":"","paddingLeft":"","marginRight":"30px","marginLeft":"30px","marginLeftTablet":"30px","marginRightMobile":"25px","marginLeftMobile":"25px"}} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"e54982d5","isDynamic":true,"blockVersion":4,"sizing":{"maxWidth":""},"spacing":{"marginRight":"auto","marginLeft":"auto"}} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"7bdd6853","columns":4,"horizontalGap":0,"verticalGapMobile":0,"isDynamic":true,"blockVersion":3,"useLegacyRowGap":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"4138dd74","isGrid":true,"gridId":"7bdd6853","bgImage":{"id":"","image":{"url":"#dynamic-background-image"}},"verticalAlignment":"center","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"column","justifyContent":"center","sizing":{"width":"25%","widthTablet":"50%","widthMobile":"50%","height":"100%","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"},"borders":{"borderBottomLeftRadius":"10px","borderTopLeftRadius":"10px","borderBottomLeftRadiusTablet":"0px","borderBottomLeftRadiusMobile":"0px","borderTopLeftRadiusMobile":"5px"},"gpDynamicImageBg":"featured-image","gpDynamicSource":"previous-post","gpRemoveContainerCondition":"no-previous-post"} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"83fd48c9","isDynamic":true,"blockVersion":4,"typography":{"textAlign":"left"}} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"a3aaad4c","hasUrl":true,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"textAlign":"center"},"spacing":{"paddingTop":"15px","paddingRight":"15px","paddingBottom":"15px","paddingLeft":"15px","marginRight":"1.5em","marginLeft":"-1.5em"},"borders":{"borderTopWidth":"7px","borderTopStyle":"solid","borderTopColor":"#f9f9f9","borderRightWidth":"7px","borderRightStyle":"solid","borderRightColor":"#f9f9f9","borderBottomWidth":"7px","borderBottomStyle":"solid","borderBottomColor":"#f9f9f9","borderLeftWidth":"7px","borderLeftStyle":"solid","borderLeftColor":"#f9f9f9","borderTopRightRadius":"100%","borderBottomRightRadius":"100%","borderBottomLeftRadius":"100%","borderTopLeftRadius":"100%"},"backgroundColor":"#b5b5b5","backgroundColorHover":"#222222","textColor":"#ffffff","textColorHover":"#ffffff","hasIcon":true,"removeText":true,"iconStyles":{"width":"1em","height":"1em","widthMobile":"0.8em","heightMobile":"0.8em","paddingRight":"0.5em"},"gpDynamicLinkType":"single-post","gpDynamicSource":"previous-post"} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"18430adf","isGrid":true,"gridId":"7bdd6853","backgroundColor":"#ffffff","isDynamic":true,"blockVersion":4,"position":"relative","zindex":2,"sizing":{"width":"25%","widthTablet":"50%","widthMobile":"50%","height":"100%","maxWidth":""},"typography":{"textAlign":"center"},"spacing":{"paddingTop":"30px","paddingRight":"30px","paddingBottom":"30px","paddingLeft":"30px","marginRight":"10px","marginRightTablet":"0px","paddingTopMobile":"10px","paddingRightMobile":"10px","paddingBottomMobile":"10px","paddingLeftMobile":"10px","marginRightMobile":"0px"},"paddingSyncUnits":true,"borders":{"borderTopRightRadius":"10px","borderBottomRightRadius":"10px","borderBottomRightRadiusTablet":"0px","borderTopRightRadiusMobile":"5px","borderBottomRightRadiusMobile":"0px"},"gpDynamicImageBg":"featured-image","gpDynamicSource":"previous-post","gpRemoveContainerCondition":"no-previous-post"} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"2acc62a4","element":"h3","blockVersion":3,"typography":{"fontSize":"25px","textAlign":"left","fontSizeMobile":"17px"},"spacing":{"paddingTop":"10px","paddingRight":"10px","paddingBottom":"10px","paddingLeft":"10px","marginBottom":"0em","marginLeft":"-4em","marginLeftMobile":"-3em"},"paddingSyncUnits":true,"borders":{"borderBottomLeftRadius":"10px","borderTopLeftRadius":"10px","borderTopRightRadiusMobile":"5px","borderBottomRightRadiusMobile":"5px","borderBottomLeftRadiusMobile":"5px","borderTopLeftRadiusMobile":"5px"},"backgroundColor":"#ffffff","textColor":"#000000","linkColor":"#000000","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Hello World","gpDynamicSource":"previous-post"} --\x3e

    Hello World

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"ce9878f4","isGrid":true,"gridId":"7bdd6853","backgroundColor":"#ffffff","isDynamic":true,"blockVersion":4,"position":"relative","zindex":1,"sizing":{"width":"25%","widthTablet":"50%","widthMobile":"50%","height":"100%","maxWidth":""},"typography":{"textAlign":"center"},"spacing":{"paddingTop":"30px","paddingRight":"30px","paddingBottom":"30px","paddingLeft":"30px","marginLeft":"10px","marginLeftTablet":"0px","paddingTopMobile":"10px","paddingRightMobile":"10px","paddingBottomMobile":"10px","paddingLeftMobile":"10px","marginLeftMobile":"0px"},"paddingSyncUnits":true,"borders":{"borderBottomLeftRadius":"10px","borderTopLeftRadius":"10px","borderTopLeftRadiusTablet":"0px","borderBottomLeftRadiusMobile":"5px","borderTopLeftRadiusMobile":"0px"},"gpDynamicImageBg":"featured-image","gpDynamicSource":"next-post","gpRemoveContainerCondition":"no-next-post"} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"9d97a37f","element":"h3","blockVersion":3,"typography":{"fontSize":"25px","textAlign":"right","fontSizeMobile":"17px"},"spacing":{"paddingTop":"10px","paddingRight":"10px","paddingBottom":"10px","paddingLeft":"10px","marginRight":"-4em","marginBottom":"0em","marginRightMobile":"-3em"},"paddingSyncUnits":true,"borders":{"borderTopRightRadius":"10px","borderBottomRightRadius":"10px","borderTopRightRadiusMobile":"5px","borderBottomRightRadiusMobile":"5px","borderBottomLeftRadiusMobile":"5px","borderTopLeftRadiusMobile":"5px"},"backgroundColor":"#ffffff","textColor":"#000000","linkColor":"#000000","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Hello World","gpDynamicSource":"next-post"} --\x3e

    Hello World

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"6c856070","isGrid":true,"gridId":"7bdd6853","bgImage":{"id":"","image":{"url":"#dynamic-background-image"}},"verticalAlignment":"center","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"column","justifyContent":"center","sizing":{"width":"25%","widthTablet":"50%","widthMobile":"50%","height":"100%","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"},"borders":{"borderTopRightRadius":"10px","borderBottomRightRadius":"10px","borderTopRightRadiusTablet":"0px","borderTopRightRadiusMobile":"0px","borderBottomRightRadiusMobile":"5px"},"gpDynamicImageBg":"featured-image","gpDynamicSource":"next-post","gpRemoveContainerCondition":"no-next-post"} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"be12f57c","isDynamic":true,"blockVersion":4} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"139d60e4","hasUrl":true,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"textAlign":"center"},"spacing":{"paddingTop":"15px","paddingRight":"15px","paddingBottom":"15px","paddingLeft":"15px","marginRight":"-1.5em","marginLeft":"1.5em"},"borders":{"borderTopWidth":"7px","borderTopStyle":"solid","borderTopColor":"#f9f9f9","borderRightWidth":"7px","borderRightStyle":"solid","borderRightColor":"#f9f9f9","borderBottomWidth":"7px","borderBottomStyle":"solid","borderBottomColor":"#f9f9f9","borderLeftWidth":"7px","borderLeftStyle":"solid","borderLeftColor":"#f9f9f9","borderTopRightRadius":"100%","borderBottomRightRadius":"100%","borderBottomLeftRadius":"100%","borderTopLeftRadius":"100%"},"backgroundColor":"#b5b5b5","backgroundColorHover":"#222222","textColor":"#ffffff","textColorHover":"#ffffff","hasIcon":true,"removeText":true,"iconStyles":{"width":"1em","height":"1em","widthMobile":"0.8em","heightMobile":"0.8em","paddingRight":"0.5em"},"gpDynamicLinkType":"single-post","gpDynamicSource":"next-post"} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_hook",value:"generate_after_do_template_part"},{key:"_generate_hook_priority",value:"1"},{key:"_generate_disable_post_navigation",value:!0},{key:"_generate_use_archive_navigation_container",value:!1}]}},W={basic_1:{label:(0,i._x)("Inline with avatar","label","gp-premium"),thumbnail:"post-meta-inline.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"8a25fc79","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","alignItems":"center","sizing":{"height":"","maxWidth":""},"typography":{"fontSize":"14px"},"spacing":{"paddingTop":"15px","paddingRight":"0px","paddingBottom":"15px","paddingLeft":"0px","marginTop":"20px","marginBottom":"20px"},"borders":{"borderTopWidth":"1px","borderTopStyle":"solid","borderTopColor":"#e8edf0","borderBottomWidth":"1px","borderBottomStyle":"solid","borderBottomColor":"#e8edf0"}} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"82a213c1","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","alignItems":"center"} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"author-avatar","avatarRounded":true} /--\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"3fb4928a","element":"div","blockVersion":3,"display":"inline-block","spacing":{"paddingRight":"10px","marginLeft":"10px"},"inlineWidth":true,"gpDynamicTextType":"post-author","gpDynamicLinkType":"author-archives","gpDynamicTextReplace":"Author Name"} --\x3e
    Author Name
    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"f9b55781","element":"div","blockVersion":3,"display":"inline-block","spacing":{"paddingLeft":"10px"},"inlineWidth":true,"borders":{"borderLeftWidth":"1px","borderLeftStyle":"solid","borderLeftColor":"#e8edf0"},"gpDynamicTextType":"post-date","gpDynamicTextReplace":"Date"} --\x3e
    Date
    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"8fca9ec9","element":"div","blockVersion":3,"display":"inline-flex","alignItems":"center","spacing":{"paddingLeft":"10px","marginLeft":"10px"},"inlineWidth":true,"borders":{"borderLeftWidth":"1px","borderLeftStyle":"solid","borderLeftColor":"#e8edf0"},"hasIcon":true,"iconStyles":{"width":"1em","height":"1em","paddingRight":"0.5em"},"gpDynamicTextType":"comments-number","gpDynamicLinkType":"comments","gpDynamicTextReplace":"Comments","gpDynamicTextTaxonomy":"category","gpDynamicNoCommentsText":"0","gpDynamicSingleCommentText":"1","gpDynamicMultipleCommentsText":"%"} --\x3e
    Comments
    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_post_meta_location",value:"after-post-title"},{key:"_generate_disable_primary_post_meta",value:!0}]},basic_2:{label:(0,i._x)("Stacked with avatar","label","gp-premium"),thumbnail:"post-meta-avatar-stacked.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"a745be15","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","alignItems":"center","columnGap":"20px","sizing":{"height":"","maxWidth":""},"typography":{"fontSize":"14px"},"spacing":{"paddingTop":"20px","paddingRight":"0px","paddingBottom":"20px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"fd4592f4","isDynamic":true,"blockVersion":4,"sizing":{"width":"10%","widthMobile":"100%","height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"author-avatar","avatarSize":120} /--\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"137e86ad","isDynamic":true,"blockVersion":4,"sizing":{"width":"90%","widthMobile":"100%","height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"d7bb0434","element":"p","blockVersion":3,"spacing":{"marginBottom":"5px"},"gpDynamicTextType":"post-author","gpDynamicLinkType":"author-archives","gpDynamicTextReplace":"Author Name"} --\x3e

    Author Name

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"759ebd2f","element":"p","blockVersion":3,"spacing":{"marginBottom":"0px"},"gpDynamicTextType":"post-date","gpDynamicTextReplace":"Date","gpDynamicDateUpdated":true} --\x3e

    Date

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_post_meta_location",value:"after-post-title"},{key:"_generate_disable_primary_post_meta",value:!0}]},basic_3:{label:(0,i._x)("Term buttons","label","gp-premium"),thumbnail:"post-meta-term-buttons.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"7134d7c2","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","alignItems":"center","columnGap":"10px","sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"},"paddingSyncUnits":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"e378fc0b","hasUrl":true,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"fontSize":"13px","textAlign":"center"},"fontSize":"","spacing":{"paddingTop":"10px","paddingRight":"10px","paddingBottom":"10px","paddingLeft":"10px","marginTop":"","marginRight":"","marginBottom":"","marginLeft":""},"borders":{"borderTopRightRadius":"","borderBottomRightRadius":"","borderBottomLeftRadius":"","borderTopLeftRadius":""},"backgroundColor":"#000000","backgroundColorHover":"#222222","textColor":"#ffffff","textColorHover":"#ffffff","className":"dynamic-term-class","gpDynamicTextType":"terms","gpDynamicLinkType":"term-archives","gpDynamicTextReplace":"Terms","gpDynamicTextTaxonomy":"category"} --\x3e Terms \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_post_meta_location",value:"before-post-title"},{key:"_generate_disable_primary_post_meta",value:!1}]}},V={template_1:{label:(0,i._x)("Full footer 1","label","gp-premium"),thumbnail:"site-footer-full-1.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"73cd57e1","backgroundColor":"#1b1b42","shapeDividers":[],"isDynamic":true,"blockVersion":4,"sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"140px","paddingRight":"30px","paddingBottom":"60px","paddingLeft":"30px"}} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"7d9550dd","isDynamic":true,"blockVersion":4,"sizing":{"maxWidth":""},"useGlobalMaxWidth":true,"spacing":{"marginRight":"auto","marginLeft":"auto"}} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"b76f312f","columns":3,"horizontalGap":80,"verticalAlignment":"center","verticalGapTablet":40,"isDynamic":true,"blockVersion":3,"useLegacyRowGap":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"53cb46e2","isGrid":true,"gridId":"b76f312f","isDynamic":true,"blockVersion":4,"sizing":{"width":"60%","widthTablet":"100%","widthMobile":"100%","height":"100%","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"aa19f1fb","element":"h3","blockVersion":3,"textColor":"#ffffff"} --\x3e

    Reach out to us for a consultation.

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"41582601","element":"p","blockVersion":3,"spacing":{"paddingRight":"100px","paddingRightTablet":"0px"},"textColor":"#ffffff"} --\x3e

    Semper blandit suspendisse faucibus metus lobortis morbi magna vivamus per risus fermentum dapibus imperdiet praesent magnis.

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"529d5dda","hasUrl":true,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"fontWeight":"600","textAlign":"center"},"spacing":{"paddingTop":"10px","paddingRight":"20px","paddingBottom":"10px","paddingLeft":"20px","marginRight":"20px","marginBottomMobile":"20px"},"borders":{"borderTopWidth":"3px","borderTopStyle":"solid","borderTopColor":"#ffffff","borderTopColorHover":"rgba(242, 245, 250, 0.8)","borderRightWidth":"3px","borderRightStyle":"solid","borderRightColor":"#ffffff","borderRightColorHover":"rgba(242, 245, 250, 0.8)","borderBottomWidth":"3px","borderBottomStyle":"solid","borderBottomColor":"#ffffff","borderBottomColorHover":"rgba(242, 245, 250, 0.8)","borderLeftWidth":"3px","borderLeftStyle":"solid","borderLeftColor":"#ffffff","borderLeftColorHover":"rgba(242, 245, 250, 0.8)","borderTopRightRadius":"2px","borderBottomRightRadius":"2px","borderBottomLeftRadius":"2px","borderTopLeftRadius":"2px"},"backgroundColorHover":"#6212b3","backgroundColorHoverOpacity":0,"textColor":"#ffffff","textColorHover":"#f2f5fa"} --\x3e Contact Us \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"e1bd60bb","isGrid":true,"gridId":"b76f312f","removeVerticalGapTablet":true,"isDynamic":true,"blockVersion":4,"sizing":{"width":"20%","widthTablet":"50%","widthMobile":"100%","height":"100%","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"37420255","element":"p","blockVersion":3,"textColor":"#ffffff"} --\x3e

    Company Name
    Address Here
    Address Here

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"bf8e162e","element":"p","blockVersion":3,"display":"flex","alignItems":"center","spacing":{"marginBottom":"0px"},"textColor":"#ffffff","linkColor":"#ffffff","linkColorHover":"#f2f5fa","hasIcon":true,"iconStyles":{"width":"1em","height":"1em","paddingTop":".1em","paddingRight":"0.5em"}} --\x3e

    +1 000 000 0000

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"c762d353","isGrid":true,"gridId":"b76f312f","removeVerticalGapTablet":true,"removeVerticalGapMobile":true,"isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","columnGap":"10px","sizing":{"width":"20%","widthTablet":"50%","widthMobile":"100%","height":"100%","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"13c371f8","hasUrl":true,"ariaLabel":"instagram link","blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"textAlign":"center"},"spacing":{"paddingTop":"6px","paddingRight":"6px","paddingBottom":"6px","paddingLeft":"6px","marginRight":""},"borders":{"borderTopWidth":"2px","borderTopStyle":"solid","borderTopColor":"#ffffff","borderTopColorHover":"#f2f5fa","borderRightWidth":"2px","borderRightStyle":"solid","borderRightColor":"#ffffff","borderRightColorHover":"#f2f5fa","borderBottomWidth":"2px","borderBottomStyle":"solid","borderBottomColor":"#ffffff","borderBottomColorHover":"#f2f5fa","borderLeftWidth":"2px","borderLeftStyle":"solid","borderLeftColor":"#ffffff","borderLeftColorHover":"#f2f5fa","borderTopRightRadius":"50px","borderBottomRightRadius":"50px","borderBottomLeftRadius":"50px","borderTopLeftRadius":"50px"},"backgroundColorHover":"#222222","textColor":"#ffffff","textColorHover":"#f2f5fa","hasIcon":true,"removeText":true,"iconStyles":{"width":"0.8em","height":"0.8em","paddingRight":"0.5em"}} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"926332bd","hasUrl":true,"ariaLabel":"twitter link","blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"textAlign":"center"},"spacing":{"paddingTop":"6px","paddingRight":"6px","paddingBottom":"6px","paddingLeft":"6px","marginRight":""},"borders":{"borderTopWidth":"2px","borderTopStyle":"solid","borderTopColor":"#ffffff","borderTopColorHover":"#f2f5fa","borderRightWidth":"2px","borderRightStyle":"solid","borderRightColor":"#ffffff","borderRightColorHover":"#f2f5fa","borderBottomWidth":"2px","borderBottomStyle":"solid","borderBottomColor":"#ffffff","borderBottomColorHover":"#f2f5fa","borderLeftWidth":"2px","borderLeftStyle":"solid","borderLeftColor":"#ffffff","borderLeftColorHover":"#f2f5fa","borderTopRightRadius":"50px","borderBottomRightRadius":"50px","borderBottomLeftRadius":"50px","borderTopLeftRadius":"50px"},"backgroundColorHover":"#222222","textColor":"#ffffff","textColorHover":"#f2f5fa","hasIcon":true,"removeText":true,"iconStyles":{"width":"0.8em","height":"0.8em","paddingRight":"0.5em"}} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"d957854e","hasUrl":true,"ariaLabel":"facebook link","blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"textAlign":"center"},"spacing":{"paddingTop":"6px","paddingRight":"6px","paddingBottom":"6px","paddingLeft":"6px"},"borders":{"borderTopWidth":"2px","borderTopStyle":"solid","borderTopColor":"#ffffff","borderTopColorHover":"#f2f5fa","borderRightWidth":"2px","borderRightStyle":"solid","borderRightColor":"#ffffff","borderRightColorHover":"#f2f5fa","borderBottomWidth":"2px","borderBottomStyle":"solid","borderBottomColor":"#ffffff","borderBottomColorHover":"#f2f5fa","borderLeftWidth":"2px","borderLeftStyle":"solid","borderLeftColor":"#ffffff","borderLeftColorHover":"#f2f5fa","borderTopRightRadius":"50px","borderBottomRightRadius":"50px","borderBottomLeftRadius":"50px","borderTopLeftRadius":"50px"},"backgroundColorHover":"#222222","textColor":"#ffffff","textColorHover":"#f2f5fa","hasIcon":true,"removeText":true,"iconStyles":{"width":"0.8em","height":"0.8em","paddingRight":"0.5em"}} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"0f87c806","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","flexDirectionMobile":"column-reverse","alignItems":"center","justifyContent":"space-between","rowGapMobile":"20px","sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"60px","paddingRight":"0px","paddingBottom":"60px","paddingLeft":"0px","marginTop":"60px"},"borders":{"borderTopWidth":"1px","borderTopStyle":"solid","borderTopColor":"#ffffff"}} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"e6861bde","isDynamic":true,"blockVersion":4,"sizing":{"width":"","widthMobile":"100%","height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"97c10964","element":"p","blockVersion":3,"typography":{"fontSize":"17px"},"spacing":{"marginBottom":"0px"},"textColor":"#ffffff"} --\x3e

    © Company Name

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"7c528044","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","flexDirectionMobile":"column","alignItems":"center","alignItemsMobile":"flex-start","columnGap":"20px","rowGapMobile":"10px","sizing":{"width":"","widthMobile":"100%","height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"907cc664","hasUrl":true,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"fontSize":"17px","textAlign":"center"},"fontSize":"","spacing":{"marginRight":""},"textColor":"#ffffff","textColorHover":"#f2f5fa"} --\x3e Privacy Policy \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"a6a340bc","hasUrl":true,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"fontSize":"17px","textAlign":"center"},"fontSize":"","textColor":"#ffffff","textColorHover":"#f2f5fa"} --\x3e Terms of Service \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e'},template_2:{label:(0,i._x)("Full footer 2","label","gp-premium"),thumbnail:"site-footer-full-2.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"e224c1dd","backgroundColor":"#fafbfc","isDynamic":true,"blockVersion":4,"sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"80px","paddingRight":"20px","paddingBottom":"80px","paddingLeft":"20px"}} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"0836612c","isDynamic":true,"blockVersion":4,"sizing":{"maxWidth":""},"useGlobalMaxWidth":true,"spacing":{"marginRight":"auto","marginLeft":"auto"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"34307d45","element":"p","blockVersion":3,"typography":{"fontSize":"14px","letterSpacing":"0.3em","fontWeight":"bold","textTransform":"uppercase","textAlign":"center"},"spacing":{"marginTop":"10px"},"textColor":"#2e3d4d"} --\x3e

    Your Company Name

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"4068688a","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","flexDirectionMobile":"column","alignItems":"center","rowGapMobile":"20px","sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"60px","paddingRight":"20px","paddingBottom":"60px","paddingLeft":"20px","marginTop":"60px","marginBottom":"60px"},"borders":{"borderTopWidth":"1px","borderTopStyle":"solid","borderTopColor":"#5c7a99","borderBottomWidth":"1px","borderBottomStyle":"solid","borderBottomColor":"#5c7a99"}} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"12d457ad","isDynamic":true,"blockVersion":4,"sizing":{"width":"33.33%","widthMobile":"100%","height":"","maxWidth":""},"typography":{"textAlign":"center"},"spacing":{"paddingTop":"0px","paddingRight":"20px","paddingBottom":"0px","paddingLeft":"20px"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"8818b435","element":"p","blockVersion":3,"typography":{"fontSize":"13px","letterSpacing":"0.2em","fontWeight":"bold","textTransform":"uppercase"},"spacing":{"marginBottom":"0px"}} --\x3e

    PH +1 000 000 0000

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"68ec175a","isDynamic":true,"blockVersion":4,"sizing":{"width":"33.33%","widthMobile":"100%","height":"","maxWidth":""},"typography":{"textAlign":"center"},"spacing":{"paddingTop":"0px","paddingRight":"20px","paddingBottom":"0px","paddingLeft":"20px"},"borders":{"borderRightWidth":"1px","borderRightStyle":"solid","borderRightColor":"#5c7a99","borderLeftWidth":"1px","borderLeftStyle":"solid","borderLeftColor":"#5c7a99","borderTopWidthMobile":"0px","borderTopStyleMobile":"solid","borderTopColorMobile":"#5c7a99","borderRightWidthMobile":"0px","borderRightStyleMobile":"solid","borderRightColorMobile":"#5c7a99","borderBottomWidthMobile":"0px","borderBottomStyleMobile":"solid","borderBottomColorMobile":"#5c7a99","borderLeftWidthMobile":"0px","borderLeftStyleMobile":"solid","borderLeftColorMobile":"#5c7a99"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"cf4dcfab","element":"p","blockVersion":3,"typography":{"fontSize":"13px","letterSpacing":"0.2em","fontWeight":"bold","textTransform":"uppercase"},"spacing":{"marginBottom":"0px"}} --\x3e

    24 M Drive
    East Hampton, NY 11937

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"47f78435","removeVerticalGapMobile":true,"isDynamic":true,"blockVersion":4,"sizing":{"width":"33.33%","widthMobile":"100%","height":"","maxWidth":""},"typography":{"textAlign":"center"},"spacing":{"paddingTop":"0px","paddingRight":"20px","paddingBottom":"0px","paddingLeft":"20px"}} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"2800ad9a","hasUrl":false,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"textAlign":"center"},"spacing":{"marginRight":"20px"},"textColor":"#2e3d4d","textColorHover":"#5c7a99","hasIcon":true,"removeText":true,"iconStyles":{"width":"0.9em","height":"0.9em","paddingRight":"0.5em"}} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"eb98a6f6","hasUrl":false,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"textAlign":"center"},"spacing":{"marginRight":"20px"},"textColor":"#2e3d4d","textColorHover":"#5c7a99","hasIcon":true,"removeText":true,"iconStyles":{"width":"0.9em","height":"0.9em","paddingRight":"0.5em"}} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"ab839eb9","hasUrl":false,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"textAlign":"center"},"spacing":{"marginRight":"20px"},"textColor":"#2e3d4d","textColorHover":"#5c7a99","hasIcon":true,"removeText":true,"iconStyles":{"width":"0.8em","height":"0.8em","paddingRight":"0.5em"}} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"5b757c38","hasUrl":false,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"textAlign":"center"},"spacing":{"marginRight":"20px"},"textColor":"#2e3d4d","textColorHover":"#5c7a99","hasIcon":true,"removeText":true,"iconStyles":{"width":"0.8em","height":"0.8em","paddingRight":"0.5em"}} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"77c9f71e","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","flexDirectionMobile":"column","alignItems":"center","justifyContent":"space-between","rowGapMobile":"20px"} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"cc32f783","isDynamic":true,"blockVersion":4,"sizing":{"width":"50%","widthMobile":"100%","height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"1e50faeb","element":"p","blockVersion":3,"typography":{"fontSize":"12px","letterSpacing":"0.2em","fontWeight":"bold","textTransform":"uppercase","textAlign":"left","textAlignMobile":"center"},"spacing":{"marginBottom":"0px"}} --\x3e

    © Your Copyright Message

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"b706d851","removeVerticalGapMobile":true,"isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","alignItems":"center","justifyContent":"flex-end","justifyContentMobile":"center","columnGap":"20px","rowGap":"10px","sizing":{"width":"50%","widthMobile":"100%","height":"","maxWidth":""},"typography":{},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"373aae0d","hasUrl":false,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"fontSize":"12px","letterSpacing":"0.2em","fontWeight":"bold","textTransform":"uppercase","textAlign":"center"},"fontSize":"","spacing":{"marginRight":""},"textColor":"#2e3d4d","textColorHover":"#5c7a99"} --\x3e Privacy Policy \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"3cd1cf71","hasUrl":false,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"fontSize":"12px","letterSpacing":"0.2em","fontWeight":"bold","textTransform":"uppercase","textAlign":"center"},"fontSize":"","textColor":"#2e3d4d","textColorHover":"#5c7a99"} --\x3e Terms of Service \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e'}},q={template_1:{label:(0,i._x)("Basic layout with term buttons","label","gp-premium"),thumbnail:"content-template-basic.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"d2cafe96","isDynamic":true,"blockVersion":4,"sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"","paddingRight":"","paddingBottom":"","paddingLeft":""},"paddingSyncUnits":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"75c01790","isDynamic":true,"blockVersion":4} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"38620841","hasUrl":true,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"fontSize":"13px","textAlign":"center"},"fontSize":"","spacing":{"paddingTop":"5px","paddingRight":"10px","paddingBottom":"5px","paddingLeft":"10px"},"backgroundColor":"#000000","backgroundColorHover":"#222222","textColor":"#ffffff","textColorHover":"#ffffff","className":"dynamic-term-class","gpDynamicTextType":"terms","gpDynamicLinkType":"term-archives","gpDynamicTextReplace":"Terms","gpDynamicTextTaxonomy":"category"} --\x3e Terms \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"f593ba8c","blockVersion":3,"typography":{"fontWeight":"bold"},"spacing":{"marginBottom":"30px"},"linkColor":"#000000","linkColorHover":"#858585","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Post Title"} --\x3e

    Post Title

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"1ed16867","isDynamic":true,"blockVersion":4,"display":"flex","alignItems":"center","justifyContent":"space-between","columnGap":"10px","rowGap":"10px","sizing":{"height":"","maxWidth":""},"typography":{"fontSize":"14px"},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"dc72dc13","isDynamic":true,"blockVersion":4,"display":"flex","alignItems":"center","sizing":{"width":"50%","widthMobile":"50%","height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"author-avatar","avatarRounded":true} /--\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"c7b33e8b","element":"p","blockVersion":3,"spacing":{"marginBottom":"0px","marginLeft":"10px"},"gpDynamicTextType":"post-author","gpDynamicLinkType":"author-archives","gpDynamicTextReplace":"Author name"} --\x3e

    Author name

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"ec93a944","isDynamic":true,"blockVersion":4,"sizing":{"width":"50%","widthMobile":"50%","height":"","maxWidth":""},"typography":{"textAlign":"right"},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"af8af68e","element":"p","blockVersion":3,"spacing":{"marginBottom":"0px"},"gpDynamicTextType":"post-date","gpDynamicTextReplace":"Post date","gpDynamicDateUpdated":true} --\x3e

    Post date

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"b70b46a6","isDynamic":true,"blockVersion":4,"sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px","marginTop":"30px","marginBottom":"30px"},"paddingSyncUnits":true} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"featured-image","imageSize":"medium_large","linkTo":"single-post"} /--\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generatepress/dynamic-content {"contentType":"post-excerpt"} /--\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_block_element_editor_width_unit",value:"px"},{key:"_generate_block_element_editor_width",value:"750"},{key:"_generate_use_theme_post_container",value:!0}]},template_2:{label:(0,i._x)("Layout with offset content","label","gp-premium"),thumbnail:"content-template-offset.jpg",content:'\x3c!-- wp:generatepress/dynamic-image {"imageType":"featured-image","imageSize":"large","linkTo":"single-post"} /--\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"05e7d83e","backgroundColor":"#ffffff","isDynamic":true,"blockVersion":4,"position":"relative","zindex":1,"sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"20px","paddingRight":"20px","paddingBottom":"20px","paddingLeft":"20px","marginTop":"-65px","marginRight":"40px","marginBottom":"20px","marginLeft":"0px"},"paddingSyncUnits":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"83898f1c","element":"p","blockVersion":3,"typography":{"fontSize":"14px","fontWeight":"700","textTransform":"uppercase"},"spacing":{"marginBottom":"20px"},"linkColor":"#000000","linkColorHover":"#abb8c3","className":"dynamic-term-class","gpDynamicTextType":"terms","gpDynamicLinkType":"term-archives","gpDynamicTextReplace":"Category","gpDynamicTextTaxonomy":"category"} --\x3e

    Category

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"98a0e67b","blockVersion":3,"typography":{"fontSize":"28px"},"gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Title"} --\x3e

    Title

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generatepress/dynamic-content {"contentType":"post-excerpt","excerptLength":25,"useThemeMoreLink":false} /--\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"fed802f7","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","alignItems":"center","justifyContent":"space-between","columnGap":"5px","rowGap":"5px","sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px","marginTop":"20px"},"paddingSyncUnits":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"74fcc8db","isDynamic":true,"blockVersion":4,"display":"flex","alignItems":"center","sizing":{"width":"66.66%","widthMobile":"66.66%","height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px","marginTop":"15px"}} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"author-avatar","avatarSize":35,"avatarRounded":true} /--\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"33ed7660","isDynamic":true,"blockVersion":4,"sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px","marginLeft":"10px"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"2def9732","element":"p","blockVersion":3,"typography":{"fontSize":"15px"},"spacing":{"marginBottom":"0px"},"borders":{"borderRightWidth":"0px","borderRightStyle":"solid"},"gpDynamicTextType":"post-author","gpDynamicTextReplace":"Post author name"} --\x3e

    Post author name

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"dd34513e","element":"p","blockVersion":3,"typography":{"fontSize":"12px"},"spacing":{"marginRight":"10px","marginBottom":"0px"},"borders":{"borderBottomWidth":"0px","borderBottomStyle":"solid"},"gpDynamicTextType":"post-date","gpDynamicTextReplace":"Date","gpDynamicDateUpdated":true} --\x3e

    Date

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"6d144082","verticalAlignment":"center","isDynamic":true,"blockVersion":4,"sizing":{"width":"33.33%","widthMobile":"33.33%","height":"","maxWidth":""},"typography":{"textAlign":"right"},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px","marginTop":"15px"},"gpInlinePostMetaJustify":"flex-end"} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"7c89fc64","hasUrl":true,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"fontWeight":"700","textTransform":"uppercase","textAlign":"center"},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"},"textColor":"#000000","textColorHover":"#abb8c3","gpDynamicLinkType":"single-post"} --\x3e More \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_block_element_editor_width_unit",value:"px"},{key:"_generate_block_element_editor_width",value:"500"},{key:"_generate_use_theme_post_container",value:!1}]},template_3:{label:(0,i._x)("Layout with featured image overlay","label","gp-premim"),thumbnail:"content-template-overlay.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"99e0f8fe","gradient":true,"gradientDirection":180,"gradientColorOne":"#000000","gradientColorOneOpacity":0.62,"gradientColorTwo":"#000000","gradientColorTwoOpacity":0,"gradientSelector":"pseudo-element","textColor":"#ffffff","linkColor":"#ffffff","linkColorHover":"#ffffff","bgImage":{"id":"","image":{"url":"#dynamic-background-image"}},"innerZindex":1,"isDynamic":true,"blockVersion":4,"position":"relative","overflowX":"hidden","overflowY":"hidden","sizing":{"minHeight":"420px","height":"","maxWidth":""},"spacing":{"paddingTop":"20px","paddingRight":"20px","paddingBottom":"20px","paddingLeft":"20px"},"borders":{"borderTopRightRadius":"12px","borderBottomRightRadius":"12px","borderBottomLeftRadius":"12px","borderTopLeftRadius":"12px"},"gpDynamicImageBg":"featured-image"} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"95ce0971","isDynamic":true,"blockVersion":4,"position":"relative","zindex":1,"sizing":{"maxWidth":""},"useGlobalMaxWidth":true,"spacing":{"marginRight":"auto","marginLeft":"auto"}} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"864271b1","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","alignItems":"center","justifyContent":"space-between","columnGap":"5px","rowGap":"5px","sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px","marginBottom":"10px"},"paddingSyncUnits":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"bc0ec4fa","element":"p","blockVersion":3,"typography":{"fontSize":"13px","fontWeight":"700","textTransform":"uppercase"},"spacing":{"marginRight":"10px","marginBottom":"0px"},"className":"dynamic-term-class","gpDynamicTextType":"terms","gpDynamicTextReplace":"Category","gpDynamicTextTaxonomy":"category","gpDynamicTextTaxonomySeparator":" / "} --\x3e

    Category

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"5e2dac4c","element":"p","blockVersion":3,"display":"flex","alignItems":"center","justifyContent":"flex-end","typography":{"fontSize":"12px","textAlign":"right"},"spacing":{"marginBottom":"0px"},"hasIcon":true,"iconStyles":{"width":"1.4em","height":"1.4em","paddingRight":"0.5em"},"gpDynamicTextType":"comments-number","gpDynamicTextReplace":"COMMENTS","gpDynamicNoCommentsText":"0","gpDynamicSingleCommentText":"1","gpDynamicMultipleCommentsText":"%"} --\x3e

    COMMENTS

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"b1e898af","blockVersion":3,"typography":{"fontSize":"24px"},"marginUnit":"%","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Title"} --\x3e

    Title

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"64bb1fda","isDynamic":true,"blockVersion":4,"display":"flex","justifyContent":"flex-end","spacing":{"marginTop":"300px"}} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"95f40917","hasUrl":true,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"fontSize":"12px","fontWeight":"700","textTransform":"uppercase","textAlign":"center"},"fontSize":"","spacing":{"paddingTop":"10px","paddingRight":"20px","paddingBottom":"10px","paddingLeft":"20px"},"borders":{"borderTopWidth":"1px","borderTopStyle":"solid","borderTopColor":"#ffffff","borderTopColorHover":"#ffffff","borderRightWidth":"1px","borderRightStyle":"solid","borderRightColor":"#ffffff","borderRightColorHover":"#ffffff","borderBottomWidth":"1px","borderBottomStyle":"solid","borderBottomColor":"#ffffff","borderBottomColorHover":"#ffffff","borderLeftWidth":"1px","borderLeftStyle":"solid","borderLeftColor":"#ffffff","borderLeftColorHover":"#ffffff","borderTopRightRadius":"8px","borderBottomRightRadius":"8px","borderBottomLeftRadius":"8px","borderTopLeftRadius":"8px"},"backgroundColor":"#ffffff","backgroundColorHover":"#ffffff","backgroundColorHoverOpacity":0.75,"textColor":"#000000","textColorHover":"#000000","gpDynamicLinkType":"single-post"} --\x3e Read More \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_block_element_editor_width_unit",value:"px"},{key:"_generate_block_element_editor_width",value:"500"},{key:"_generate_use_theme_post_container",value:!1}]},template_4:{label:(0,i._x)("Layout with slanted shape divider","label","gp-premim"),thumbnail:"content-template-slant.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"0af7ec3a","isDynamic":true,"blockVersion":4,"sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"},"paddingSyncUnits":true,"borders":{"borderTopWidth":"0px","borderTopStyle":"solid","borderTopColor":"#000000","borderRightWidth":"0px","borderRightStyle":"solid","borderRightColor":"#000000","borderBottomWidth":"0px","borderBottomStyle":"solid","borderBottomColor":"#000000","borderLeftWidth":"0px","borderLeftStyle":"solid","borderLeftColor":"#000000"}} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"featured-image","imageSize":"large"} /--\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"cc5683f8","shapeDividers":[{"shape":"gb-angle-1","color":"#ffffff","colorOpacity":1,"location":"bottom","height":50,"heightTablet":"","heightMobile":"","width":100,"widthTablet":"","widthMobile":"","flipHorizontally":false,"zindex":""}],"isDynamic":true,"blockVersion":4,"position":"relative","zindex":1,"sizing":{"height":"","maxWidth":""},"typography":{"fontSize":"14px"},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px","marginTop":"0px","marginBottom":"0px"},"paddingSyncUnits":true} /--\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"7f6bf8cd","backgroundColor":"#ffffff","shapeDividers":[],"isDynamic":true,"blockVersion":4,"position":"relative","zindex":1,"sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"25px","paddingBottom":"15px","paddingLeft":"25px","marginTop":"0px","marginRight":"0px","marginBottom":"0px","marginLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"7fd9c317","element":"p","blockVersion":3,"typography":{"fontSize":"14px"},"spacing":{"marginBottom":"5px"},"gpDynamicTextType":"post-date","gpDynamicTextReplace":"Post date","gpDynamicDateUpdated":true} --\x3e

    Post date

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"a8ee15fd","blockVersion":3,"typography":{"fontSize":"30px"},"spacing":{"marginBottom":"15px"},"gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Hello World"} --\x3e

    Hello World

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generatepress/dynamic-content {"contentType":"post-excerpt","excerptLength":25,"useThemeMoreLink":false} /--\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"72735d03","isDynamic":true,"blockVersion":4,"display":"flex","justifyContent":"flex-end"} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"120ee35e","hasUrl":true,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"fontWeight":"700","textTransform":"uppercase","textAlign":"center"},"spacing":{"paddingTop":"15px","paddingRight":"20px","paddingBottom":"15px","paddingLeft":"20px"},"backgroundColorHover":"#222222","textColor":"#000000","textColorHover":"#ffffff","gpDynamicLinkType":"single-post"} --\x3e Read More \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_block_element_editor_width_unit",value:"px"},{key:"_generate_block_element_editor_width",value:"500"},{key:"_generate_use_theme_post_container",value:!1}]},template_5:{label:(0,i._x)("Layout with centered content","label","gp-premim"),thumbnail:"content-template-centered.jpg",content:'\x3c!-- wp:generatepress/dynamic-image {"imageType":"featured-image","imageSize":"large"} /--\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"5a785d21","backgroundColor":"#ffffff","isDynamic":true,"blockVersion":4,"sizing":{"height":"","maxWidth":""},"typography":{"textAlign":"center"},"spacing":{"paddingTop":"25px","paddingRight":"25px","paddingBottom":"25px","paddingLeft":"25px"},"paddingSyncUnits":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"82629d5c","blockVersion":3,"typography":{"fontSize":"25px","fontWeight":"700"},"linkColor":"#000000","gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Hello World"} --\x3e

    Hello World

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generatepress/dynamic-content {"contentType":"post-excerpt","excerptLength":15,"useThemeMoreLink":false} /--\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"a1b8a609","hasUrl":true,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"fontSize":"15px","textTransform":"uppercase","textAlign":"center"},"fontSize":"","spacing":{"paddingTop":"8px","paddingRight":"20px","paddingBottom":"8px","paddingLeft":"20px"},"borders":{"borderTopRightRadius":"50px","borderBottomRightRadius":"50px","borderBottomLeftRadius":"50px","borderTopLeftRadius":"50px"},"backgroundColor":"#cf2e2e","backgroundColorHover":"#222222","textColor":"#ffffff","textColorHover":"#ffffff","gpDynamicLinkType":"single-post"} --\x3e Read more \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_block_element_editor_width_unit",value:"px"},{key:"_generate_block_element_editor_width",value:"500"},{key:"_generate_use_theme_post_container",value:!1}]},template_6:{label:(0,i._x)("Layout with borders","label","gp-premim"),thumbnail:"content-template-borders.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"0af4cc7c","backgroundColor":"#ffffff","isDynamic":true,"blockVersion":4,"sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"5px","paddingRight":"5px","paddingBottom":"5px","paddingLeft":"5px"},"paddingSyncUnits":true,"borders":{"borderTopWidth":"1px","borderTopStyle":"solid","borderTopColor":"#b6b6b6","borderRightWidth":"1px","borderRightStyle":"solid","borderRightColor":"#b6b6b6","borderBottomWidth":"1px","borderBottomStyle":"solid","borderBottomColor":"#b6b6b6","borderLeftWidth":"1px","borderLeftStyle":"solid","borderLeftColor":"#b6b6b6","borderTopRightRadius":"2px","borderBottomRightRadius":"2px","borderBottomLeftRadius":"2px","borderTopLeftRadius":"2px"}} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"featured-image","imageSize":"large"} /--\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"b69b5c43","isDynamic":true,"blockVersion":4,"sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"30px","paddingRight":"30px","paddingBottom":"30px","paddingLeft":"30px"},"paddingSyncUnits":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"8dfa4238","element":"p","blockVersion":3,"typography":{"fontSize":"14px","fontWeight":"700","textTransform":"uppercase"},"spacing":{"marginBottom":"5px"},"textColor":"#0693e3","className":"dynamic-term-class","gpDynamicTextType":"terms","gpDynamicLinkType":"term-archives","gpDynamicTextReplace":"Terms","gpDynamicTextTaxonomy":"category"} --\x3e

    Terms

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"29491daa","blockVersion":3,"typography":{"fontSize":"30px"},"spacing":{"marginBottom":"15px"},"gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Hello World"} --\x3e

    Hello World

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generatepress/dynamic-content {"contentType":"post-excerpt","excerptLength":25,"useThemeMoreLink":false} /--\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"d5dadc43","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","alignItems":"center","justifyContent":"space-between","sizing":{"height":"","maxWidth":""},"typography":{"fontSize":"14px"},"spacing":{"paddingTop":"15px","paddingRight":"10px","paddingBottom":"10px","paddingLeft":"10px"},"borders":{"borderTopWidth":"1px","borderTopStyle":"solid","borderTopColor":"#b6b6b6"}} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"2c30b1f9","isDynamic":true,"blockVersion":4,"sizing":{"width":"50%","widthMobile":"50%","height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"fc06eba3","element":"p","blockVersion":3,"typography":{"fontSize":"14px"},"spacing":{"marginBottom":"0px"},"textColor":"#b6b6b6","gpDynamicTextType":"post-date","gpDynamicTextReplace":"Post date","gpDynamicTextTaxonomy":"category","gpDynamicDateUpdated":true} --\x3e

    Post date

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"9bb8c373","isDynamic":true,"blockVersion":4,"sizing":{"width":"50%","widthMobile":"50%","height":"","maxWidth":""},"typography":{"textAlign":"right"},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"0fcad1cd","hasUrl":true,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"textTransform":"uppercase","textAlign":"center"},"spacing":{"paddingTop":"8px","paddingRight":"12px","paddingBottom":"8px","paddingLeft":"12px"},"borders":{"borderTopWidth":"2px","borderTopStyle":"solid","borderTopColor":"#0693e3","borderTopColorHover":"#222222","borderRightWidth":"2px","borderRightStyle":"solid","borderRightColor":"#0693e3","borderRightColorHover":"#222222","borderBottomWidth":"2px","borderBottomStyle":"solid","borderBottomColor":"#0693e3","borderBottomColorHover":"#222222","borderLeftWidth":"2px","borderLeftStyle":"solid","borderLeftColor":"#0693e3","borderLeftColorHover":"#222222","borderTopRightRadius":"2px","borderBottomRightRadius":"2px","borderBottomLeftRadius":"2px","borderTopLeftRadius":"2px"},"backgroundColorHover":"#222222","textColor":"#0693e3","textColorHover":"#ffffff","gpDynamicLinkType":"single-post"} --\x3e Read more \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_block_element_editor_width_unit",value:"px"},{key:"_generate_block_element_editor_width",value:"500"},{key:"_generate_use_theme_post_container",value:!1}]},template_7:{label:(0,i._x)("Landscape layout","label","gp-premium"),thumbnail:"content-template-landscape.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"918d68ce","isDynamic":true,"blockVersion":4,"sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"","paddingRight":"","paddingBottom":"","paddingLeft":""},"paddingSyncUnits":true} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"ae18e4a9","columns":2,"horizontalGap":30,"verticalGapMobile":10,"isDynamic":true,"blockVersion":3,"useLegacyRowGap":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"ff15641f","isGrid":true,"gridId":"ae18e4a9","isDynamic":true,"blockVersion":4,"sizing":{"width":"40%","widthTablet":"40%","widthMobile":"100%","height":"100%","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"},"gpRemoveContainerCondition":"no-featured-image"} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"featured-image","imageSize":"medium_large","linkTo":"single-post"} /--\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"64596747","isGrid":true,"gridId":"ae18e4a9","verticalAlignment":"center","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"column","justifyContent":"center","sizing":{"width":"60%","widthTablet":"60%","widthMobile":"100%","height":"100%","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"20px","paddingBottom":"10px","paddingLeft":"0px","paddingTopMobile":"10px","paddingRightMobile":"10px","paddingBottomMobile":"10px","paddingLeftMobile":"10px"}} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"ce3f6f48","isDynamic":true,"blockVersion":4,"display":"flex","alignItems":"center","sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px","marginBottom":"10px"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"fdbba1f9","element":"p","blockVersion":3,"typography":{"fontSize":"14px","fontWeight":"900","textTransform":"uppercase"},"spacing":{"paddingRight":"10px","marginRight":"10px","marginBottom":"0px"},"borders":{"borderRightWidth":"1px","borderRightStyle":"solid"},"className":"dynamic-term-class","gpDynamicTextType":"terms","gpDynamicTextReplace":"Category","gpDynamicTextTaxonomy":"category"} --\x3e

    Category

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"6df4d39e","element":"p","blockVersion":3,"typography":{"fontSize":"14px"},"spacing":{"marginRight":"10px","marginBottom":"0px"},"gpDynamicTextType":"post-date","gpDynamicTextReplace":"Date","gpDynamicDateUpdated":true} --\x3e

    Date

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"84923e14","blockVersion":3,"typography":{"fontSize":"28px"},"spacing":{"marginBottom":"20px"},"gpDynamicTextType":"title","gpDynamicLinkType":"single-post","gpDynamicTextReplace":"Title"} --\x3e

    Title

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generatepress/dynamic-content {"contentType":"post-excerpt","excerptLength":20} /--\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_block_element_editor_width_unit",value:"px"},{key:"_generate_block_element_editor_width",value:"800"},{key:"_generate_use_theme_post_container",value:!0}]}},P={template_1:{label:(0,i._x)("Default next and previous buttons","label","gp-premium"),thumbnail:"archive-navigation-buttons-2.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"fb6c192f","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","alignItems":"center","justifyContent":"space-between","columnGap":"10px","rowGap":"10px","sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"},"paddingSyncUnits":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"af38c5d0","isDynamic":true,"blockVersion":4,"sizing":{"width":"50%","widthMobile":"50%","height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"aa4ef21a","hasUrl":true,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"textAlign":"center"},"hasIcon":true,"iconStyles":{"width":"1em","height":"1em","paddingRight":"0.5em"},"className":"button","gpDynamicLinkType":"previous-posts"} --\x3e Previous \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"4f3ab895","isDynamic":true,"blockVersion":4,"sizing":{"width":"50%","widthMobile":"50%","height":"","maxWidth":""},"typography":{"textAlign":"right"},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"84010058","hasUrl":true,"blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"textAlign":"center"},"hasIcon":true,"iconLocation":"right","iconPaddingRight":"","iconStyles":{"width":"1em","height":"1em","paddingLeft":"0.5em"},"className":"button","gpDynamicLinkType":"next-posts"} --\x3e Next \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_hook",value:"generate_after_main_content"},{key:"_generate_hook_priority",value:"20"},{key:"_generate_disable_archive_navigation",value:!0},{key:"_generate_use_archive_navigation_container",value:!0}]},template_2:{label:(0,i._x)("Rounded buttons with icon","label","gp-premium"),thumbnail:"archive-navigation-buttons-1.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"5edb5029","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"row","alignItems":"center","justifyContent":"center","columnGap":"10px","sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"},"paddingSyncUnits":true} --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"4c23c469","hasUrl":true,"ariaLabel":"Previous page","blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"textAlign":"center"},"spacing":{"paddingTop":"20px","paddingRight":"20px","paddingBottom":"20px","paddingLeft":"20px","marginTop":"","marginRight":"","marginBottom":"","marginLeft":""},"borders":{"borderTopWidth":"1px","borderTopStyle":"solid","borderTopColor":"#000000","borderRightWidth":"1px","borderRightStyle":"solid","borderRightColor":"#000000","borderBottomWidth":"1px","borderBottomStyle":"solid","borderBottomColor":"#000000","borderLeftWidth":"1px","borderLeftStyle":"solid","borderLeftColor":"#000000","borderTopRightRadius":"100px","borderBottomRightRadius":"100px","borderBottomLeftRadius":"100px","borderTopLeftRadius":"100px"},"backgroundColor":"#ffffff","backgroundColorHover":"#222222","textColor":"#000000","textColorHover":"#ffffff","hasIcon":true,"removeText":true,"iconStyles":{"width":"1em","height":"1em","paddingRight":"0.5em"},"gpDynamicLinkType":"previous-posts"} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- wp:generateblocks/button {"uniqueId":"55622f43","hasUrl":true,"ariaLabel":"Next page","blockVersion":4,"display":"inline-flex","alignItems":"center","justifyContent":"center","typography":{"textAlign":"center"},"spacing":{"paddingTop":"20px","paddingRight":"20px","paddingBottom":"20px","paddingLeft":"20px","marginTop":"","marginRight":"","marginBottom":"","marginLeft":""},"borders":{"borderTopWidth":"1px","borderTopStyle":"solid","borderTopColor":"#000000","borderRightWidth":"1px","borderRightStyle":"solid","borderRightColor":"#000000","borderBottomWidth":"1px","borderBottomStyle":"solid","borderBottomColor":"#000000","borderLeftWidth":"1px","borderLeftStyle":"solid","borderLeftColor":"#000000","borderTopRightRadius":"100px","borderBottomRightRadius":"100px","borderBottomLeftRadius":"100px","borderTopLeftRadius":"100px"},"backgroundColor":"#ffffff","backgroundColorHover":"#222222","textColor":"#000000","textColorHover":"#ffffff","hasIcon":true,"removeText":true,"iconStyles":{"width":"1em","height":"1em","paddingRight":"0.5em"},"gpDynamicLinkType":"next-posts"} --\x3e \x3c!-- /wp:generateblocks/button --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_hook",value:"generate_after_main_content"},{key:"_generate_hook_priority",value:"20"},{key:"_generate_disable_archive_navigation",value:!0},{key:"_generate_use_archive_navigation_container",value:!1}]}},A={template_1:{label:(0,i._x)("Basic single post page hero","label","gp-premium"),thumbnail:"page-hero-basic.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"8b6d1c4b","backgroundColor":"#000000","textColor":"#ffffff","linkColor":"#ffffff","bgImage":{"id":"","image":{"url":"#dynamic-background-image"}},"bgOptions":{"selector":"pseudo-element","opacity":0.3,"overlay":false,"position":"center center","size":"cover","repeat":"no-repeat","attachment":""},"innerZindex":1,"isDynamic":true,"blockVersion":4,"position":"relative","overflowX":"hidden","overflowY":"hidden","sizing":{"height":"","maxWidth":""},"typography":{"textAlign":"center"},"spacing":{"paddingTop":"150px","paddingRight":"40px","paddingBottom":"150px","paddingLeft":"40px"},"gpDynamicImageBg":"featured-image"} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"3f517a84","isDynamic":true,"blockVersion":4,"position":"relative","zindex":1,"sizing":{"maxWidth":""},"useGlobalMaxWidth":true,"spacing":{"marginRight":"auto","marginLeft":"auto"}} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"62a8b2cc","element":"h1","blockVersion":3,"typography":{"fontSize":"50px"},"gpDynamicTextType":"title","gpDynamicTextReplace":"Page Title"} --\x3e

    Page Title

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"f49b9f49","isDynamic":true,"blockVersion":4,"display":"flex","alignItems":"center","justifyContent":"center","sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"},"paddingSyncUnits":true} --\x3e \x3c!-- wp:generatepress/dynamic-image {"imageType":"author-avatar","avatarRounded":true} /--\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"2e715b13","element":"p","blockVersion":3,"spacing":{"marginBottom":"0px","marginLeft":"10px"},"gpDynamicTextType":"post-author","gpDynamicTextReplace":"Author name"} --\x3e

    Author name

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"dedbe2c8","element":"p","blockVersion":3,"spacing":{"paddingLeft":"20px","marginBottom":"0px","marginLeft":"20px"},"borders":{"borderLeftWidth":"1px","borderLeftStyle":"solid"},"gpDynamicTextType":"post-date","gpDynamicTextReplace":"Post date","gpDynamicDateUpdated":true} --\x3e

    Post date

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_hook",value:"generate_after_header"},{key:"_generate_disable_title",value:!0},{key:"_generate_disable_featured_image",value:!0},{key:"_generate_disable_primary_post_meta",value:!0}]},template_2:{label:(0,i._x)("Single post hero with excerpt","label","gp-premium"),thumbnail:"page-hero-excerpt.jpg",content:'\x3c!-- wp:generateblocks/container {"uniqueId":"70385d72","isDynamic":true,"blockVersion":4,"sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"80px","paddingRight":"40px","paddingBottom":"80px","paddingLeft":"40px"}} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"01bfa731","isDynamic":true,"blockVersion":4,"sizing":{"maxWidth":""},"useGlobalMaxWidth":true,"spacing":{"marginRight":"auto","marginLeft":"auto"}} --\x3e \x3c!-- wp:generateblocks/grid {"uniqueId":"5dc55b95","columns":2,"horizontalGap":80,"verticalGap":20,"isDynamic":true,"blockVersion":3,"useLegacyRowGap":true} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"579e5b87","isGrid":true,"gridId":"5dc55b95","verticalAlignment":"center","isDynamic":true,"blockVersion":4,"display":"flex","flexDirection":"column","justifyContent":"center","sizing":{"width":"45%","widthTablet":"60%","widthMobile":"100%","height":"100%","maxWidth":""},"typography":{"fontSize":"14px"},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"}} --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"d909e043","isDynamic":true,"blockVersion":4,"display":"flex","alignItems":"center","sizing":{"height":"","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px","marginBottom":"10px"},"paddingSyncUnits":true} --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"9fdb86dc","element":"p","blockVersion":3,"typography":{"fontSize":"14px","fontWeight":"900","textTransform":"uppercase"},"spacing":{"paddingRight":"10px","marginRight":"10px","marginBottom":"0px"},"borders":{"borderRightWidth":"1px","borderRightStyle":"solid"},"textColor":"#000000","linkColor":"#000000","className":"dynamic-term-class","gpDynamicTextType":"terms","gpDynamicLinkType":"term-archives","gpDynamicTextReplace":"Category","gpDynamicTextTaxonomy":"category"} --\x3e

    Category

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"1ee4cbcf","element":"p","blockVersion":3,"typography":{"fontSize":"14px"},"spacing":{"marginRight":"10px","marginBottom":"0px"},"gpDynamicTextType":"post-date","gpDynamicTextReplace":"Date","gpDynamicDateUpdated":true} --\x3e

    Date

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/headline {"uniqueId":"56c7eb13","blockVersion":3,"spacing":{"marginBottom":"10px"},"gpDynamicTextType":"title","gpDynamicTextReplace":"Title"} --\x3e

    Title

    \x3c!-- /wp:generateblocks/headline --\x3e \x3c!-- wp:generatepress/dynamic-content {"contentType":"post-excerpt","useThemeMoreLink":false} /--\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- wp:generateblocks/container {"uniqueId":"4e92c4e8","isGrid":true,"gridId":"5dc55b95","bgImage":{"id":"","image":{"url":"#dynamic-background-image"}},"bgOptions":{"selector":"element","opacity":1,"overlay":false,"position":"center center","size":"cover","repeat":"no-repeat","attachment":""},"isDynamic":true,"blockVersion":4,"sizing":{"width":"55%","widthTablet":"40%","widthMobile":"100%","minHeight":"400px","minHeightMobile":"250px","height":"100%","maxWidth":""},"spacing":{"paddingTop":"0px","paddingRight":"0px","paddingBottom":"0px","paddingLeft":"0px"},"gpDynamicImageBg":"featured-image","gpUseFallbackImageBg":true} /--\x3e \x3c!-- /wp:generateblocks/grid --\x3e \x3c!-- /wp:generateblocks/container --\x3e \x3c!-- /wp:generateblocks/container --\x3e',meta:[{key:"_generate_hook",value:"generate_after_header"},{key:"_generate_disable_title",value:!0},{key:"_generate_disable_featured_image",value:!0},{key:"_generate_disable_primary_post_meta",value:!0}]}},H=window.wp.plugins,j=window.wp.editPost,N=window.wp.data,F=window.wp.domReady;var U=n.n(F),G=n(893);function O(e,t){return String(e)===String(t)}function J(e,t){return Array.isArray(e)?e.map((e=>t.find((t=>O(t.value,e))))).filter((e=>e)):t.find((t=>O(t.value,e)))||null}function $(e){return Array.isArray(e)?e:[e]}function Y(e,t,n){if(!e&&!n)return t&&t.length&&t[0].name||"";const a=Array.isArray(e);return e||a?a?e.map((e=>e.name)).filter(Boolean).join(", "):e.name||"":""}function K(e){return e?Array.isArray(e)?e.filter(Boolean).map((e=>e.value)):e.value||null:null}function X(e,t){return t.length?e.filter((e=>function(e,t){const n=e.length,a=t.length;if(n>a)return!1;if(t.indexOf(e)>=0)return!0;e:for(let i=0,o=0;i"group"===e.type?e.items.map((n=>({...n,group:e.name,index:t++}))):{...e,index:t++})).flat()}const Q=()=>{};function ee({options:t,defaultValue:n,value:a,multiple:i,search:o,onChange:r=Q,onFocus:p=Q,onBlur:l=Q,closeOnSelect:c=!0,placeholder:g,getOptions:s,filterOptions:d,useFuzzySearch:m=!0,debounce:u}){const b=(0,e.useRef)(),[x,h]=(0,e.useState)(null),[f,y]=(0,e.useState)(""),[_,k]=(0,e.useState)(!1),[w,v]=function(t,n,a,i){const[o,r]=(0,e.useState)((()=>Z(t))),[p,l]=(0,e.useState)(!1);return(0,e.useEffect)((()=>{let e;if(n)return e=setTimeout((()=>{const e=n(i,o);l(!0),Promise.resolve(e).then((e=>r(Z(e)))).finally((()=>l(!1)))}),a),()=>{clearTimeout(e)}}),[i]),(0,e.useEffect)((()=>{r(Z(t))}),[t]),[o,p]}(t,s,u,f),T=e=>{const t=function(e,t,n){if(!e)return t;if(!n)return e;if(!t)return $(e);const a=$(t),i=a.findIndex((t=>O(t.value,e.value)));return i>=0?a.splice(i,1):a.push(e),a}(J(decodeURIComponent(e),w),x,i);void 0===a&&h(t),r(K(t),t),setTimeout((()=>{b.current&&c&&b.current.blur()}),0)},C=function(e){const t=[];return e.forEach((e=>{if(e.group){const n=t.findIndex((t=>"group"===t.type&&t.name===e.group));n>=0?t[n].items.push(e):t.push({items:[e],type:"group",name:e.group})}else t.push(e)})),t}((E=[m?X:null,...d||[]],M=w,z=f,E.filter(Boolean).reduce(((e,t)=>t(e,z)),M).map(((e,t)=>({...e,index:t}))))),[D,R,L]=function(t,n,a){const[i,o]=(0,e.useState)(-1);return[{onKeyDown:e=>{const n=e.key.replace("Arrow","").toLowerCase();"down"!==n&&"up"!==n||(e.preventDefault(),o(function(e,t,n){const a=n.length-1;let i=null,o=-1,r=e;for(;o++<=a&&(!i||i.disabled);)r="down"===t?r+1:r-1,r<0?r=a:r>a&&(r=0),i=n[r];return r}(i,n,t)))},onKeyUp:e=>{"Escape"===e.key?(e.preventDefault(),a.current.blur()):"Enter"===e.key&&(e.preventDefault(),t[i]&&n(t[i].value))}},i,o]}(C,T,b),I={search:f,focus:_,option:x,value:K(x),fetching:v,highlighted:R,options:C,displayValue:Y(x,w,g)},S={tabIndex:"0",readOnly:!o,placeholder:g,value:_&&o?f:I.displayValue,ref:b,...D,onFocus:e=>{k(!0),p(e)},onBlur:e=>{k(!1),y(""),L(-1),l(e)},onMouseDown:e=>{_&&(e.preventDefault(),b.current.blur())},onChange:o?({target:e})=>y(e.value):null},B={tabIndex:"-1",onMouseDown(e){e.preventDefault(),T(e.currentTarget.value)}};var E,M,z;return(0,e.useEffect)((()=>{h(J(void 0===a?n:a,w))}),[a,w]),[I,S,B]}const te=e=>"string"==typeof e,ne=(e,t)=>te(t)?`${t}-${e}`:t[e];function ae({optionProps:e,highlighted:t,selected:n,option:a,cls:i,renderOption:o,disabled:r}){const p={...e,value:encodeURIComponent(a.value),disabled:r},l=i({option:!0,"is-selected":n,"is-highlighted":t});return(0,G.jsxs)("li",{className:i("row"),role:"menuitem","data-index":a.index,children:[o&&o(p,a,{selected:n,highlighted:t},l),!o&&(0,G.jsx)("button",{type:"button",className:l,...p,children:a.name})]})}var ie=(0,e.memo)(ae);function oe(e){const{options:t,cls:n,renderOption:a,renderGroupHeader:i,optionProps:o,snapshot:r,disabled:p}=e;return(0,G.jsx)("ul",{className:n("options"),children:t.map((t=>{return"group"===t.type?(0,G.jsx)("li",{role:"none",className:n("row"),children:(0,G.jsxs)("div",{className:n("group"),children:[(0,G.jsx)("div",{className:n("group-header"),children:i?i(t.name):t.name}),(0,G.jsx)(oe,{...e,options:t.items})]})},t.name):(0,G.jsx)(ie,{option:t,optionProps:o,cls:n,renderOption:a,selected:(l=t,c=r.option,!!c&&(Array.isArray(c)?c.findIndex((e=>e.value===l.value))>=0:c.value===l.value)),highlighted:r.highlighted===t.index,disabled:t.disabled||p},t.value);var l,c}))})}var re=(0,e.memo)(oe);const pe=(0,e.forwardRef)((({disabled:t,placeholder:n,multiple:a,search:i,autoFocus:o,autoComplete:r,id:p,closeOnSelect:l,className:c,renderValue:g,renderOption:s,renderGroupHeader:d,fuzzySearch:m,emptyMessage:u,value:b,...x},h)=>{const f=(0,e.useRef)(null),y=e=>function(e,t){return te(e)?ne(e,t):Object.entries(e).filter((([e,t])=>e&&t)).map((([e])=>ne(e,t))).join(" ")}(e,c),[_,k]=(0,e.useState)(b),[w,v,T]=ee({value:_,placeholder:n,multiple:a,search:i,closeOnSelect:l&&!a,useFuzzySearch:m,...x}),{highlighted:C,value:D,fetching:R,focus:L}=w,I={...v,autoFocus:o,autoComplete:r,disabled:t};return(0,e.useEffect)((()=>{const{current:e}=f;if(e){const t=Array.isArray(D)?D[0]:D,n=e.querySelector(C>-1?`[data-index="${C}"]`:`[value="${encodeURIComponent(t)}"]`);if(n){const t=e.getBoundingClientRect(),a=n.getBoundingClientRect();e.scrollTop=n.offsetTop-t.height/2+a.height/2}}}),[D,C,f.current]),(0,e.useEffect)((()=>k(b)),[b]),(0,G.jsxs)("div",{ref:h,id:p,className:y({container:!0,"is-multiple":a,"is-disabled":t,"is-loading":R,"has-focus":L}),children:[(!a||n||i)&&(0,G.jsxs)("div",{className:y("value"),children:[g&&g(I,w,y("input")),!g&&(0,G.jsx)("input",{...I,className:y("input")})]}),(0,G.jsxs)("div",{className:y("select"),ref:f,onMouseDown:e=>e.preventDefault(),children:[w.options.length>0&&(0,G.jsx)(re,{options:w.options,optionProps:T,renderOption:s,renderGroupHeader:d,disabled:t,snapshot:w,cls:y}),!w.options.length&&(0,G.jsx)("ul",{className:y("options"),children:!w.options.length&&u&&(0,G.jsx)("li",{className:y("not-found"),children:u})})]})]})}));pe.defaultProps={options:[],fuzzySearch:!0,printOptions:"auto",closeOnSelect:!0,debounce:250,autoComplete:"on",className:"select-search"},pe.displayName="SelectSearch";var le=(0,e.memo)(pe);function ce(t){return(0,e.createElement)("div",{className:"gp-select-search"},(0,e.createElement)(le,{...t}))}class ge extends r.Component{constructor(){super(...arguments),this.getWidth=this.getWidth.bind(this),this.state={installingPlugin:!1,pluginInstalled:!1}}componentDidMount(){const e=document.createElement("style");e.id="gp-block-elements-css",document.head.appendChild(e),e.innerHTML=`html {--gp-block-element-width: ${this.getWidth().width}${this.getWidth().unit}}`;const t=document.querySelector(".editor-styles-wrapper");if(t?.style?.setProperty("--content-width",this.getWidth().width+this.getWidth().unit),"undefined"!==wp.data.select("core/edit-post").getPreference("panels")["generatepress-block-element/generatepress-block-element"]){const e=wp.data.select("core/edit-post").getPreference("panels")["generatepress-block-element/generatepress-block-element"];void 0!==e&&e.opened||wp.data.dispatch("core/edit-post").toggleEditorPanelOpened("generatepress-block-element/generatepress-block-element")}if(this.props.meta._generate_block_type||this.props.updateMeta({_generate_block_type:"hook"}),"undefined"!==wp.data.select("core/edit-post").getPreference("panels")["page-attributes"]){const e=wp.data.select("core/edit-post").getPreference("panels")["page-attributes"];void 0===e||!e.enabled&&void 0!==e.enabled||wp.data.dispatch("core/edit-post").toggleEditorPanelEnabled("page-attributes")}this.props.elementParent&&document.body.classList.add("element-has-parent")}componentDidUpdate(){document.getElementById("gp-block-elements-css").innerHTML=`html {--gp-block-element-width: ${this.getWidth().width}${this.getWidth().unit}}`;const e=document.querySelector(".editor-styles-wrapper");e?.style?.setProperty("--content-width",this.getWidth().width+this.getWidth().unit);const t=wp.data.select("core/editor").getEditedPostAttribute("meta");if("content-template"===t._generate_block_type&&(t._generate_use_theme_post_container?document.body.classList.contains("using-theme-post-container")||document.body.classList.add("using-theme-post-container"):document.body.classList.contains("using-theme-post-container")&&document.body.classList.remove("using-theme-post-container")),"archive-navigation-template"!==t._generate_block_type&&"post-navigation-template"!==t._generate_block_type||(t._generate_use_archive_navigation_container?document.body.classList.contains("using-theme-pagination-container")||document.body.classList.add("using-theme-pagination-container"):document.body.classList.contains("using-theme-pagination-container")&&document.body.classList.remove("using-theme-pagination-container")),"undefined"!==wp.data.select("core/edit-post").getPreference("panels")["page-attributes"]){const e=wp.data.select("core/edit-post").getPreference("panels")["page-attributes"];void 0!==e&&e.enabled&&wp.data.dispatch("core/edit-post").toggleEditorPanelEnabled("page-attributes")}!this.props.elementParent&&!t._generate_post_loop_item_display||document.body.classList.contains("element-has-parent")?this.props.elementParent&&t._generate_post_loop_item_display||!document.body.classList.contains("element-has-parent")||document.body.classList.remove("element-has-parent"):document.body.classList.add("element-has-parent")}getWidth(){const e=wp.data.select("core/editor").getEditedPostAttribute("meta");let t=100,n="%";return"left-sidebar"===e._generate_block_type&&(t=gpPremiumBlockElements.leftSidebarWidth,n="px"),"right-sidebar"===e._generate_block_type&&(t=gpPremiumBlockElements.rightSidebarWidth,n="px"),"content-template"!==e._generate_block_type&&"post-meta-template"!==e._generate_block_type&&"post-navigation-template"!==e._generate_block_type||(t=gpPremiumBlockElements.contentWidth,n="px"),e._generate_block_element_editor_width&&(t=wp.data.select("core/editor").getEditedPostAttribute("meta")._generate_block_element_editor_width),e._generate_block_element_editor_width_unit&&(n=wp.data.select("core/editor").getEditedPostAttribute("meta")._generate_block_element_editor_width_unit),{width:t,unit:n}}render(){const{meta:{_generate_block_element_editor_width:t,_generate_block_element_editor_width_unit:n,_generate_block_type:o,_generate_hook:l,_generate_custom_hook:c,_generate_hook_priority:g,_generate_post_loop_item_tagname:s,_generate_post_meta_location:d,_generate_disable_primary_post_meta:m,_generate_disable_secondary_post_meta:u,_generate_disable_title:b,_generate_disable_featured_image:x,_generate_use_theme_post_container:h,_generate_post_loop_item_display:f,_generate_post_loop_item_display_tax:y,_generate_post_loop_item_display_term:_,_generate_post_loop_item_display_post_meta:k,_generate_disable_post_navigation:w,_generate_disable_archive_navigation:v,_generate_use_archive_navigation_container:T}={},updateMeta:C,updateParentId:R,updateOrder:L,elementParent:I,elementMenuOrder:S}=this.props,B=[];Object.keys(gpPremiumBlockElements.hooks).forEach((e=>{const t=[],n=gpPremiumBlockElements.hooks[e].group,a=gpPremiumBlockElements.hooks[e].hooks;Object.keys(a).forEach((e=>{t.push({value:a[e],name:a[e].replace("generate_","").replace("woocommerce_","")})})),B.push({type:"group",name:n,items:t})})),B.push({type:"group",name:(0,i.__)("Custom","gp-premium"),items:[{value:"custom",name:(0,i.__)("Custom Hook","gp-premium")}]});const H=[{label:(0,i.__)("Choose…","gp-premium"),value:""}],N=gpPremiumBlockElements.taxonomies;N&&Object.keys(N).forEach((e=>{H.push({label:N[e],value:N[e]})}));const F=[{label:(0,i.__)("Choose…","gp-premium"),value:""}];"page-hero"===o&&F.push({label:(0,i.__)("After header","gp-premium"),value:"generate_after_header"},{label:(0,i.__)("Before content container","gp-premium"),value:"generate_before_main_content"},{label:(0,i.__)("Before content","gp-premium"),value:"generate_before_content"}),"post-navigation-template"===o&&F.push({label:(0,i.__)("After content","gp-premium"),value:"generate_after_content"},{label:(0,i.__)("After content container","gp-premium"),value:"generate_after_do_template_part"});let U="";"post-navigation-template"===o&&(U=z),"post-meta-template"===o&&(U=W),"site-footer"===o&&(U=V),"content-template"===o&&(U=q),"archive-navigation-template"===o&&(U=P),"page-hero"===o&&(U=A);const G=[],O=gpPremiumBlockElements.parentElements;return O&&Object.keys(O).forEach((e=>{G.push({label:O[e].label,value:O[e].id})})),(0,e.createElement)(r.Fragment,null,(0,e.createElement)(j.PluginDocumentSettingPanel,{name:"generatepress-block-element",title:(0,i.__)("Block Element","gp-premium"),className:"gpp-block-element-panel gpp-element-panel-label",icon:a("generatepress")},!gpPremiumBlockElements.isGenerateBlocksActive&&(0,e.createElement)(p.BaseControl,null,(0,e.createElement)("p",null,(0,i.__)("To take full advantage of Block Elements, we suggest using our GenerateBlocks plugin.","gp-premium")),gpPremiumBlockElements.isGenerateBlocksInstalled?(0,e.createElement)("a",{href:gpPremiumBlockElements.activateLink,className:"components-button is-primary"},(0,i.__)("Activate GenerateBlocks","gp-premium")):(0,e.createElement)("a",{href:gpPremiumBlockElements.installLink,className:"components-button is-primary"},(0,i.__)("Install GenerateBlocks","gp-premium"))),(0,e.createElement)(M,{label:(0,i.__)("Editor width","gp-premium"),value:n||this.getWidth().unit,units:["px","%"],onClick:e=>{C({_generate_block_element_editor_width_unit:e||""})}}),(0,e.createElement)(p.TextControl,{type:"number",onChange:e=>{C({_generate_block_element_editor_width:e||""})},placeholder:this.getWidth().width,value:t||""}),(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Element type","gp-premium"),value:o,options:[{label:(0,i.__)("Hook","gp-premium"),value:"hook"},{label:(0,i.__)("Site Header","gp-premium"),value:"site-header"},{label:(0,i.__)("Page Hero","gp-premium"),value:"page-hero"},{label:(0,i.__)("Content Template","gp-premium"),value:"content-template"},{label:(0,i.__)("Loop Template","gp-premium"),value:"loop-template"},{label:(0,i.__)("Post Meta Template","gp-premium"),value:"post-meta-template"},{label:(0,i.__)("Post Navigation","gp-premium"),value:"post-navigation-template"},{label:(0,i.__)("Archive Navigation","gp-premium"),value:"archive-navigation-template"},{label:(0,i.__)("Right Sidebar","gp-premium"),value:"right-sidebar"},{label:(0,i.__)("Left Sidebar","gp-premium"),value:"left-sidebar"},{label:(0,i.__)("Site Footer","gp-premium"),value:"site-footer"},{label:(0,i.__)("Search Modal","gp-premium"),value:"search-modal"}],onChange:e=>{document.body.classList.remove(o+"-block-type"),document.body.classList.add(e+"-block-type"),C("page-hero"===e?{_generate_block_type:e,_generate_hook:"generate_after_header",_generate_block_element_editor_width_unit:"%",_generate_block_element_editor_width:"100"}:"post-navigation-template"===e?{_generate_block_type:e,_generate_hook:"generate_after_do_template_part",_generate_block_element_editor_width_unit:"%",_generate_block_element_editor_width:"100"}:"archive-navigation-template"===e?{_generate_block_type:e,_generate_hook:"generate_after_main_content",_generate_hook_priority:"20",_generate_block_element_editor_width_unit:"%",_generate_block_element_editor_width:"100"}:{_generate_block_type:e,_generate_block_element_editor_width_unit:"",_generate_block_element_editor_width:""})}}),gpPremiumBlockElements.isGenerateBlocksActive&&!!U&&(0,e.createElement)(p.BaseControl,null,(0,e.createElement)(p.PanelBody,{initialOpen:!1,name:"generatepress-block-element-templates",title:(0,i.__)("Templates","gp-premium"),className:"gpp-block-element-template-panel"},Object.keys(U).map((t=>(0,e.createElement)("button",{key:t,className:"gpp-block-elements-template-button",onClick:()=>{U[t].content=U[t].content.replaceAll("#dynamic-background-image",gpPremiumBlockElements.bgImageFallback);const e=(0,D.parse)(U[t].content),n=wp.data.select("core/block-editor").getBlocks();let a=!1;1===n.length&&("core/paragraph"!==n[0].name||n[0].attributes.content||(a=!0)),e.length&&(a?wp.data.dispatch("core/block-editor").replaceBlocks(n[0].clientId,e):wp.data.dispatch("core/block-editor").insertBlocks(e));const i=U[t].meta,o={};i&&i.forEach((e=>{o[e.key]=e.value})),Object.keys(o).length>0&&C(o)}},void 0!==U[t].thumbnail&&!!U[t].thumbnail&&(0,e.createElement)("img",{src:gpPremiumBlockElements.templateImageUrl+"/"+U[t].thumbnail,alt:U[t].label}),(0,e.createElement)("div",{className:"gpp-block-template-label"},U[t].label)))))),("right-sidebar"===o||"left-sidebar"===o)&&(0,e.createElement)(p.Notice,{status:"info",isDismissible:!1,className:"gpp-block-element-notice"},(0,i.__)("This will remove the current sidebar widgets for the selected sidebar. Your layout must have a sidebar set for this Element to show.","gp-premium")),"site-footer"===o&&(0,e.createElement)(p.BaseControl,null,(0,e.createElement)(p.Notice,{status:"info",isDismissible:!1,className:"gpp-block-element-notice"},(0,i.__)("This Element will replace your site footer area that holds your copyright message. It will not replace footer widgets if they exist.","gp-premium"))),"post-meta-template"===o&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Location","gp-premium"),value:d,options:[{label:(0,i.__)("After post title","gp-premium"),value:"after-post-title"},{label:(0,i.__)("Before post title","gp-premium"),value:"before-post-title"},{label:(0,i.__)("After content","gp-premium"),value:"after-content"},{label:(0,i.__)("Custom","gp-premium"),value:"custom"}],onChange:e=>{C({_generate_post_meta_location:e})}})),F.length>1&&(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Quick hook select","gp-premium"),value:l||"",options:F,onChange:e=>{C({_generate_hook:e})}}),(!o||"hook"===o||"page-hero"===o||"post-navigation-template"===o||"archive-navigation-template"===o||"post-meta-template"===o&&"custom"===d)&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.BaseControl,{id:"gpp-hook-select",label:(0,i.__)("Hook name","gp-premium"),className:"gpp-hook-select"},(0,e.createElement)(ce,{options:B,value:l,placeholder:(0,i.__)("Choose your hook","gp-premium"),search:!0,onChange:e=>{e!==l&&C({_generate_hook:e||""})}})),"custom"===l&&(0,e.createElement)(p.TextControl,{label:(0,i.__)("Custom hook name","gp-premium"),type:"text",onChange:e=>{C({_generate_custom_hook:e||""})},value:c||""}),!!l&&(0,e.createElement)(p.TextControl,{label:(0,i.__)("Priority","gp-premium"),type:"text",onChange:e=>{C({_generate_hook_priority:e||""})},value:g||"",placeholder:"10"})),"post-meta-template"===o&&(0,e.createElement)(r.Fragment,null,(""===d||"after-post-title"===d||"before-post-title"===d||"custom"===d)&&(0,e.createElement)(p.ToggleControl,{checked:!!m,label:(0,i.__)("Replace default primary post meta","gp-premium"),onChange:e=>{C({_generate_disable_primary_post_meta:e})}}),("after-content"===d||"custom"===d)&&(0,e.createElement)(p.ToggleControl,{checked:!!u,label:(0,i.__)("Replace default secondary post meta","gp-premium"),onChange:e=>{C({_generate_disable_secondary_post_meta:e})}})),"content-template"===o&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Tag name","gp-premium"),value:s,options:[{label:"article",value:"article"},{label:"div",value:"div"},{label:"section",value:"section"},{label:"aside",value:"aside"}],onChange:e=>{C({_generate_post_loop_item_tagname:e})}}),(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Apply to","gp-premium"),value:f,options:[{label:(0,i.__)("All posts","gp-premium"),value:""},{label:(0,i.__)("Posts with term","gp-premium"),value:"has-term"},{label:(0,i.__)("Posts with custom field","gp-premium"),value:"has-post-meta"},{label:(0,i.__)("First post","gp-premium"),value:"is-first-post"}],onChange:e=>{C({_generate_post_loop_item_display:e})}}),""!==f&&(0,e.createElement)(r.Fragment,null,"has-term"===f&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.SelectControl,{label:(0,i.__)("Taxonomy","gp-premium"),value:y,options:H,onChange:e=>{C({_generate_post_loop_item_display_tax:e})}}),!!y&&(0,e.createElement)(p.TextControl,{label:(0,i.__)("Term name","gp-premium"),type:"text",onChange:e=>{C({_generate_post_loop_item_display_term:e||""})},value:_||""})),"has-post-meta"===f&&(0,e.createElement)(p.TextControl,{label:(0,i.__)("Post meta name","gp-premium"),type:"text",onChange:e=>{C({_generate_post_loop_item_display_post_meta:e||""})},value:k||""}),G.length>0&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.BaseControl,null,(0,e.createElement)(p.ComboboxControl,{className:"editor-page-attributes__parent",label:(0,i.__)("Parent Element","gp-premium"),help:(0,i.__)("Set a parent Element to inherit in case the above conditions do not apply.","gp-premim"),value:I,options:G,onFilterValueChange:e=>{e&&E()(R(e),300)},onChange:e=>{R(e)}})),!!I&&(0,e.createElement)(p.TextControl,{type:"number",label:(0,i.__)("Display Order","gp-premium"),onChange:e=>{L(e)},value:S}))),(0,e.createElement)(p.ToggleControl,{checked:!!h,label:(0,i.__)("Keep default post container","gp-premium"),onChange:e=>{C({_generate_use_theme_post_container:e})}})),"page-hero"===o&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.ToggleControl,{checked:!!b,label:(0,i.__)("Disable title","gp-premium"),onChange:e=>{C({_generate_disable_title:e})}}),(0,e.createElement)(p.ToggleControl,{checked:!!x,label:(0,i.__)("Disable featured image","gp-premium"),onChange:e=>{C({_generate_disable_featured_image:e})}}),(0,e.createElement)(p.ToggleControl,{checked:!!m,label:(0,i.__)("Disable primary post meta","gp-premium"),onChange:e=>{C({_generate_disable_primary_post_meta:e})}})),"site-footer"===o&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.TextControl,{className:"gpp-block-dynamic-year",type:"text",readOnly:!0,value:"{{current_year}}",label:(0,i.__)("Current year template tag","gp-premium"),help:(0,i.__)("Use the above template tag to add the current year to your footer.","gp-premium")})),"post-navigation-template"===o&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.ToggleControl,{checked:!!w,label:(0,i.__)("Disable default post navigation","gp-premium"),onChange:e=>{C({_generate_disable_post_navigation:e})}}),(0,e.createElement)(p.ToggleControl,{checked:!!T,label:(0,i.__)("Add default archive navigation container","gp-premium"),onChange:e=>{C({_generate_use_archive_navigation_container:e})}})),"archive-navigation-template"===o&&(0,e.createElement)(r.Fragment,null,(0,e.createElement)(p.ToggleControl,{checked:!!v,label:(0,i.__)("Disable default pagination","gp-premium"),onChange:e=>{C({_generate_disable_archive_navigation:e})}}),(0,e.createElement)(p.ToggleControl,{checked:!!T,label:(0,i.__)("Keep default archive navigation container","gp-premium"),onChange:e=>{C({_generate_use_archive_navigation_container:e})}}))))}}const se=(0,N.withSelect)((e=>{const{getEditedPostAttribute:t}=e("core/editor");return{meta:t("meta"),elementParent:t("parent"),elementMenuOrder:t("menu_order")}})),de=(0,N.withDispatch)(((e,{meta:t})=>{const{editPost:n}=e("core/editor");return{updateMeta(e){n({meta:{...t,...e}})},updateParentId(e){n({parent:e})},updateOrder(e){n({menu_order:e})}}})),me=(0,l.compose)([se,de])(ge);(0,H.registerPlugin)("generatepress-block-element",{icon:null,render:me}),U()((()=>(0,H.unregisterPlugin)("generatepress-content-width")))})()})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/customizer.asset.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/customizer.asset.php deleted file mode 100644 index e00d5caa..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/customizer.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('wp-hooks', 'wp-i18n'), 'version' => '542c4e5db7eed60770ec'); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/customizer.js deleted file mode 100644 index c0f382ef..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/customizer.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";const e=window.wp.hooks,o=window.wp.i18n;(0,e.addFilter)("generate_typography_element_groups","generatepress-pro/customizer/add-typography-groups",(function(e){const a={};return gpCustomizerControls.hasSecondaryNav&&(a.secondaryNavigation=(0,o.__)("Secondary Navigation","gp-premium")),gpCustomizerControls.hasMenuPlus&&(a.offCanvasPanel=(0,o.__)("Off-Canvas Panel","gp-premium")),gpCustomizerControls.hasWooCommerce&&(a.wooCommerce=(0,o.__)("WooCommerce","gp-premium")),{...e,...a}})),(0,e.addFilter)("generate_typography_elements","generatepress-pro/customizer/add-typography-elements",(function(e){const a={};return gpCustomizerControls.hasSecondaryNav&&(a["secondary-nav-menu-items"]={module:"secondary-nav",group:"secondaryNavigation",label:(0,o.__)("Secondary Menu Items","gp-premium"),placeholders:{fontSize:{value:"13",min:6,max:30,step:1}}},a["secondary-nav-sub-menu-items"]={module:"secondary-nav",group:"secondaryNavigation",label:(0,o.__)("Secondary Sub-Menu Items","gp-premium"),placeholders:{fontSize:{value:"12",min:6,max:30,step:1}}},a["secondary-nav-menu-toggle"]={module:"secondary-nav",group:"secondaryNavigation",label:(0,o.__)("Secondary Mobile Menu Toggle","gp-premium"),placeholders:{fontSize:{value:"13",min:6,max:30,step:1}}}),gpCustomizerControls.hasMenuPlus&&(a["off-canvas-panel-menu-items"]={module:"off-canvas-panel",group:"offCanvasPanel",label:(0,o.__)("Off-Canvas Menu Items","gp-premium"),placeholders:{fontSize:{value:"",min:6,max:30,step:1}}},a["off-canvas-panel-sub-menu-items"]={module:"off-canvas-panel",group:"offCanvasPanel",label:(0,o.__)("Off-Canvas Sub-Menu Items","gp-premium"),placeholders:{fontSize:{value:"",min:6,max:30,step:1}}}),gpCustomizerControls.hasWooCommerce&&(a["woocommerce-catalog-product-titles"]={module:"woocommerce",group:"wooCommerce",label:(0,o.__)("Catalog Product Titles","gp-premium"),placeholders:{fontSize:{value:"",min:6,max:50,step:1}}},a["woocommerce-related-product-titles"]={module:"woocommerce",group:"wooCommerce",label:(0,o.__)("Related/Upsell Product Titles","gp-premium"),placeholders:{fontSize:{value:"",min:6,max:50,step:1}}}),{...e,...a}}))})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/dashboard.asset.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/dashboard.asset.php deleted file mode 100644 index 12a58801..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/dashboard.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('react', 'wp-api-fetch', 'wp-components', 'wp-element', 'wp-i18n'), 'version' => '6a732fdaaa86f685bd9f'); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/dashboard.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/dashboard.js deleted file mode 100644 index f1b04547..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/dashboard.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{var e,t={217:(e,t,s)=>{"use strict";const r=window.React,a=window.wp.element;function n(e,t){void 0!==a.createRoot?(0,a.createRoot)(t).render(e):(0,a.render)(e,t)}const o=window.wp.i18n,i=window.wp.components,l=window.wp.apiFetch;var c=s.n(l),m=s(162),d=s.n(m);function p(e,t=null){return"generatepress"===e?(0,r.createElement)("svg",{width:"20",height:"20",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 600 600",preserveAspectRatio:"none"},(0,r.createElement)("path",{d:"M485.2 427.8l-99.1-46.2 15.8-34c5.6-11.9 8.8-24.3 10-36.7 3.3-33.7-9-67.3-33.2-91.1-8.9-8.7-19.3-16.1-31.3-21.7-11.9-5.6-24.3-8.8-36.7-10-33.7-3.3-67.4 9-91.1 33.2-8.7 8.9-16.1 19.3-21.7 31.3l-15.8 34-30.4 65.2c-.7 1.5-.1 3.3 1.5 4l65.2 30.4 34 15.8 34 15.8 68 31.7 74.7 34.8c-65 45.4-152.1 55.2-228.7 17.4C90.2 447.4 44.1 313.3 97.3 202.6c53.3-110.8 186-158.5 297.8-106.3 88.1 41.1 137.1 131.9 129.1 223.4-.1 1.3.6 2.4 1.7 3l65.6 30.6c1.8.8 3.9-.3 4.2-2.2 22.6-130.7-44-265.4-170.5-323.5-150.3-69-327-4.1-396.9 145.8-70 150.1-5.1 328.5 145.1 398.5 114.1 53.2 244.5 28.4 331.3-52.3 17.9-16.6 33.9-35.6 47.5-56.8 1-1.5.4-3.6-1.3-4.3l-65.7-30.7zm-235-109.6l15.8-34c8.8-18.8 31.1-26.9 49.8-18.1s26.9 31 18.1 49.8l-15.8 34-34-15.8-33.9-15.9z"})):"dynamic"===e?(0,r.createElement)("svg",{width:"24",height:"24",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",viewBox:"0 0 256 256"},(0,r.createElement)("path",{d:"M128 26c-52.71 0-94 23.72-94 54v96c0 30.28 41.29 54 94 54s94-23.72 94-54V80c0-30.28-41.29-54-94-54zm0 12c44.449 0 82 19.233 82 42s-37.551 42-82 42-82-19.233-82-42 37.551-42 82-42zm82 138c0 22.767-37.551 42-82 42s-82-19.233-82-42v-21.21C61.97 171.163 92.374 182 128 182s66.03-10.837 82-27.21zm0-48c0 22.767-37.551 42-82 42s-82-19.233-82-42v-21.21C61.97 123.163 92.374 134 128 134s66.03-10.837 82-27.21z",fill:"currentColor"})):"tools"===e?(0,r.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},(0,r.createElement)("path",{d:"M14.7 6.3a1 1 0 000 1.4l1.6 1.6a1 1 0 001.4 0l3.77-3.77a6 6 0 01-7.94 7.94l-6.91 6.91a2.12 2.12 0 01-3-3l6.91-6.91a6 6 0 017.94-7.94l-3.76 3.76z"})):"sliders"===e?(0,r.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",viewBox:"0 0 24 24"},(0,r.createElement)("path",{d:"M4 21v-7M4 10V3M12 21v-9M12 8V3M20 21v-5M20 12V3M1 14h6M9 8h6M17 16h6"})):"plus-circle"===e?(0,r.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg",clipRule:"evenodd",fillRule:"evenodd",strokeLinejoin:"round",strokeMiterlimit:"2",viewBox:"0 0 24 24",style:t},(0,r.createElement)("path",{d:"m12.002 2c5.518 0 9.998 4.48 9.998 9.998 0 5.517-4.48 9.997-9.998 9.997-5.517 0-9.997-4.48-9.997-9.997 0-5.518 4.48-9.998 9.997-9.998zm0 1.5c-4.69 0-8.497 3.808-8.497 8.498s3.807 8.497 8.497 8.497 8.498-3.807 8.498-8.497-3.808-8.498-8.498-8.498zm-.747 7.75h-3.5c-.414 0-.75.336-.75.75s.336.75.75.75h3.5v3.5c0 .414.336.75.75.75s.75-.336.75-.75v-3.5h3.5c.414 0 .75-.336.75-.75s-.336-.75-.75-.75h-3.5v-3.5c0-.414-.336-.75-.75-.75s-.75.336-.75.75z",fillRule:"nonzero"})):"minus-circle"===e?(0,r.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg",clipRule:"evenodd",fillRule:"evenodd",strokeLinejoin:"round",strokeMiterlimit:"2",viewBox:"0 0 24 24",style:t},(0,r.createElement)("path",{d:"m12.002 2.005c5.518 0 9.998 4.48 9.998 9.997 0 5.518-4.48 9.998-9.998 9.998-5.517 0-9.997-4.48-9.997-9.998 0-5.517 4.48-9.997 9.997-9.997zm0 1.5c-4.69 0-8.497 3.807-8.497 8.497s3.807 8.498 8.497 8.498 8.498-3.808 8.498-8.498-3.808-8.497-8.498-8.497zm4.253 7.75h-8.5c-.414 0-.75.336-.75.75s.336.75.75.75h8.5c.414 0 .75-.336.75-.75s-.336-.75-.75-.75z",fillRule:"nonzero"})):"trash"===e?(0,r.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",style:{fill:"none"},stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",viewBox:"0 0 24 24"},(0,r.createElement)("path",{d:"M3 6h18M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2M10 11v6M14 11v6"})):void 0}const u=()=>{const[e,t]=(0,a.useState)(!1),[s,n]=(0,a.useState)(""),[l,m]=(0,a.useState)(""),[u,g]=(0,a.useState)(!1),[_,h]=(0,a.useState)(!1),[v,b]=(0,a.useState)(generateProDashboard.modules);if((0,a.useEffect)((()=>{e||t(!0)})),!e)return(0,r.createElement)(i.Placeholder,{className:"generatepress-dashboard__placeholder"},(0,r.createElement)(i.Spinner,null));const E=(e,t,s)=>{n(t);const r=e.target.previousElementSibling.previousElementSibling;c()({path:"/generatepress-pro/v1/modules",method:"POST",data:{key:v[t].key,action:s}}).then((e=>{if(n(""),r.classList.add("generatepress-dashboard__section-item-message__show"),r.textContent=e.response,e.success&&e.response){b((e=>({...e,[t]:{...e[t],isActive:"activate"===s}})));const e={"Font Library":{id:"gp-font-library-tab",url:generateProDashboard.fontLibraryUrl},"Site Library":{id:"gp-site-library-tab",url:generateProDashboard.siteLibraryUrl},Elements:{id:"gp-elements-tab",url:generateProDashboard.elementsUrl}};let a=null;if(t in e&&(a=document.querySelector(`a#${e[t].id}`),!a)){a=document.createElement("a"),a.id=e[t].id,a.href=e[t].url,a.textContent=t,a.style.display="none";const s=document.querySelector(".generatepress-dashboard-header__navigation");if(s){const e=s.children[0].nextSibling;s.insertBefore(a,e)}}a&&("activate"===s?a.style.display="flex":"deactivate"===s&&(a.style.display="none")),setTimeout((function(){r.classList.remove("generatepress-dashboard__section-item-message__show")}),3e3)}else r.classList.add("generatepress-dashboard__section-item-message__error")}))};return(0,r.createElement)(r.Fragment,null,!!v&&(0,r.createElement)("div",{className:"generatepress-dashboard__section"},(0,r.createElement)("div",{className:"generatepress-dashboard__section-title"},(0,r.createElement)("h2",null,(0,o.__)("Modules","gp-premium"))),Object.keys(v).filter((e=>!(!v[e].isActive&&v[e].deprecated))).map((e=>(0,r.createElement)("div",{className:"generatepress-dashboard__section-item",key:e,style:{boxShadow:v[e].isActive?"-5px 0 0 var(--wp-admin-theme-color)":"-5px 0 0 #ddd",pointerEvents:"WooCommerce"!==e||generateProDashboard.hasWooCommerce?null:"none",opacity:"WooCommerce"!==e||generateProDashboard.hasWooCommerce?null:"0.5"}},(0,r.createElement)("div",{className:"generatepress-dashboard__section-item-content"},(0,r.createElement)(r.Fragment,null,!!v[e].title&&(0,r.createElement)("div",{className:"generatepress-dashboard__section-item-title"},v[e].title,!!v[e].isActive&&"Site Library"===e&&(0,r.createElement)("a",{className:"generatepress-module-action",href:generateProDashboard.siteLibraryUrl},(0,o.__)("Open Site Library","gp-premium")," →"),!!v[e].isActive&&"Elements"===e&&(0,r.createElement)("a",{className:"generatepress-module-action",href:generateProDashboard.elementsUrl},(0,o.__)("Open Elements","gp-premium")," →"),!!v[e].isActive&&"Font Library"===e&&(0,r.createElement)("a",{className:"generatepress-module-action",href:generateProDashboard.fontLibraryUrl},(0,o.__)("Open Font Library","gp-premium")," →")),!!v[e].description&&(0,r.createElement)("div",{className:"generatepress-dashboard__section-item-description"},v[e].description))),(0,r.createElement)("div",{className:"generatepress-dashboard__section-item-action"},(0,r.createElement)("span",{className:"generatepress-dashboard__section-item-message"}),(0,r.createElement)("div",{className:"generatepress-dashboard__section-item-settings"},!!v[e].settings&&!!v[e].isActive&&(0,r.createElement)(r.Fragment,null,e!==l&&(0,r.createElement)(i.Tooltip,{text:(0,o.__)("Open tools for this module.","gp-premium")},(0,r.createElement)(i.Button,{isTertiary:!0,icon:p("sliders"),onClick:()=>m(e)})),e===l&&(0,r.createElement)(r.Fragment,null,(0,r.createElement)(i.Button,{disabled:!!_,className:"generatepress-dashboard__reset-button",isPrimary:!0,onClick:t=>{const s={[e]:v[e]};window.confirm((0,o.__)("This will delete all settings for this module. It cannot be undone.","gp-premium"))&&((e,t)=>{h(!0);const s=e.target.parentNode.previousElementSibling;c()({path:"/generatepress-pro/v1/reset",method:"POST",data:{items:t}}).then((e=>{h(!1),s.classList.add("generatepress-dashboard__section-item-message__show"),"object"==typeof e.response?s.textContent=(0,o.__)("Settings reset.","gp-premium"):s.textContent=e.response,e.success&&e.response?setTimeout((function(){s.classList.remove("generatepress-dashboard__section-item-message__show")}),3e3):s.classList.add("generatepress-dashboard__section-item-message__error")}))})(t,s)}},!!_&&(0,r.createElement)(i.Spinner,null),!_&&(0,o.__)("Reset","gp-premium")),(0,r.createElement)(i.Button,{isTertiary:!0,onClick:t=>{((e,t,s,r)=>{g(!0);const a=e.target.parentNode.previousElementSibling;c()({path:"/generatepress-pro/v1/export",method:"POST",data:{items:t,type:"all"}}).then((e=>{if(g(!1),a.classList.add("generatepress-dashboard__section-item-message__show"),"object"==typeof e.response?a.textContent=(0,o.__)("Options exported","gp-premium"):a.textContent=e.response,e.success&&e.response){const t=(new Date).toISOString().slice(0,10),s="generatepress-settings-"+r+"-"+t+".json",n=new Blob([JSON.stringify(e.response)],{type:"application/json",name:s});d()(n,s),setTimeout((function(){a.classList.remove("generatepress-dashboard__section-item-message__show")}),3e3)}else a.classList.add("generatepress-dashboard__section-item-message__error")}))})(t,{[e]:v[e]},0,e)}},!!u&&(0,r.createElement)(i.Spinner,null),!u&&(0,o.__)("Export","gp-premium"))))),(0,r.createElement)(i.Button,{disabled:e===s||"WooCommerce"===e&&!generateProDashboard.hasWooCommerce,isPrimary:!v[e].isActive||null,isSecondary:!!v[e].isActive||null,onClick:t=>{if(v[e].isActive){if(v[e].deprecated&&!window.confirm((0,o.__)("This module has been deprecated. Deactivating it will remove it from this list.","gp-premium")))return;E(t,e,"deactivate")}else E(t,e,"activate")}},e===s&&(0,r.createElement)(i.Spinner,null),e!==s&&!v[e].isActive&&(0,o.__)("Activate","gp-premium"),e!==s&&!!v[e].isActive&&(0,o.__)("Deactivate","gp-premium"))))))))};window.addEventListener("DOMContentLoaded",(()=>{n((0,r.createElement)(u,null),document.getElementById("generatepress-module-list"))}));const g=()=>{const[e,t]=(0,a.useState)(!1),[s,n]=(0,a.useState)(!1),[l,m]=(0,a.useState)(generateProDashboard.licenseKey),[d,p]=(0,a.useState)(generateProDashboard.licenseKeyStatus),[u,g]=(0,a.useState)(generateProDashboard.betaTester),[_,h]=(0,a.useState)(!1);if((0,a.useEffect)((()=>{h(!!l)}),[]),(0,a.useEffect)((()=>{e||t(!0)})),!e)return(0,r.createElement)(i.Placeholder,{className:"generatepress-dashboard__placeholder"},(0,r.createElement)(i.Spinner,null));const v=(e=l)=>{n(!0),h(!!e);const t=document.querySelector(".generatepress-dashboard__section-item-message");t.classList.remove("generatepress-dashboard__section-item-message__show"),c()({path:"/generatepress-pro/v1/license",method:"POST",data:{key:e,status:d}}).then((e=>{n(!1),t.classList.add("generatepress-dashboard__section-item-message__show"),e.success&&e.response?(t.classList.remove("generatepress-dashboard__section-item-message__error"),"valid"===e.response.license?t.textContent=(0,o.__)("License key activated.","gp-premium"):"deactivated"===e.response.license?t.textContent=(0,o.__)("License key deactivated.","gp-premium"):t.textContent=e.response,p(e.response.license),setTimeout((function(){t.classList.remove("generatepress-dashboard__section-item-message__show")}),3e3)):(t.classList.add("generatepress-dashboard__section-item-message__error"),t.textContent=e.response)}))};return(0,r.createElement)(r.Fragment,null,(0,r.createElement)("div",{className:"generatepress-dashboard__section generatepress-license-key-area"},(0,r.createElement)("div",{className:"generatepress-dashboard__section-title"},(0,r.createElement)("h2",null,(0,o.__)("License Key","gp-premium")),(0,r.createElement)("span",{className:"generatepress-dashboard__section-item-message"})),(0,r.createElement)("div",{className:"generatepress-dashboard__section-item"},(0,r.createElement)(i.Notice,{className:"generatepress-dashboard__section-license-notice",isDismissible:!1,status:"valid"===d?"success":"warning"},"valid"===d?(0,r.createElement)("span",null,(0,o.__)("Receiving premium updates.","gp-premium")):(0,r.createElement)("span",null,(0,o.__)("Not receiving premium updates.","gp-premium"))),(0,r.createElement)("div",{className:"generatepress-dashboard__section-license-key"},_?(0,r.createElement)(i.TextControl,{type:"text",autoComplete:"off",value:l,disabled:!0}):(0,r.createElement)(r.Fragment,null,(0,r.createElement)(i.TextControl,{placeholder:(0,o.__)("Enter your license key to activate updates.","gp-premium"),type:"text",autoComplete:"off",onChange:e=>m(e)}),!!l&&(0,r.createElement)(i.Button,{variant:"primary",disabled:!!s,onClick:()=>v()},s&&(0,r.createElement)(i.Spinner,null),!s&&(0,o.__)("Save key"))),!!_&&!!l&&(0,r.createElement)(i.Button,{variant:"primary",onClick:()=>{m(""),v("")}},(0,o.__)("Clear key","generateblocks"))),""!==l&&(0,r.createElement)("div",{className:"generatepress-dashboard__section-beta-tester"},(0,r.createElement)(i.ToggleControl,{label:(0,o.__)("Receive development version updates"),help:(0,o.__)("Get alpha, beta, and release candidate updates directly to your Dashboard.","gp-premium"),checked:!!u,onChange:e=>{g(e),(e=>{const t=document.querySelector(".generatepress-dashboard__section-item-message");t.classList.remove("generatepress-dashboard__section-item-message__show"),c()({path:"/generatepress-pro/v1/beta",method:"POST",data:{beta:e}}).then((e=>{n(!1),t.classList.add("generatepress-dashboard__section-item-message__show"),e.success&&e.response?(t.classList.remove("generatepress-dashboard__section-item-message__error"),t.textContent=e.response,setTimeout((function(){t.classList.remove("generatepress-dashboard__section-item-message__show")}),3e3)):(t.classList.add("generatepress-dashboard__section-item-message__error"),t.textContent=e.response)}))})(e)}})))))};window.addEventListener("DOMContentLoaded",(()=>{n((0,r.createElement)(g,null),document.getElementById("generatepress-license-key"))}));const _=()=>{const[e,t]=(0,a.useState)(!1),[s,n]=(0,a.useState)(!1),[l,m]=(0,a.useState)(!1),[p,u]=(0,a.useState)(!1),[g,_]=(0,a.useState)("all");return(0,a.useEffect)((()=>{e||t(!0)})),e?(0,r.createElement)(r.Fragment,null,(0,r.createElement)("div",{className:"generatepress-dashboard__section"},(0,r.createElement)("div",{className:"generatepress-dashboard__section-title"},(0,r.createElement)("h2",null,(0,o.__)("Import / Export","gp-premium"))),(0,r.createElement)("div",{className:"generatepress-dashboard__section-item"},(0,r.createElement)("div",{className:"generatepress-dashboard__section-item-content"},(0,r.createElement)("div",{className:"generatepress-dashboard__section-item-title"},(0,o.__)("Export","gp-premium")),(0,r.createElement)("div",{className:"generatepress-dashboard__section-item-description"},(0,o.__)("Export your customizer settings.","gp-premium"))),(0,r.createElement)("div",{className:"generatepress-dashboard__section-item-action"},(0,r.createElement)("span",{className:"generatepress-dashboard__section-item-message"}),(0,r.createElement)(i.ButtonGroup,{className:"generatepress-dashboard__section-item-export-type"},(0,r.createElement)(i.Button,{isPrimary:"all"===g,onClick:()=>_("all")},(0,o.__)("All","gp-premium")),(0,r.createElement)(i.Button,{isPrimary:"global-colors"===g,onClick:()=>_("global-colors")},(0,o.__)("Global Colors","gp-premium")),(0,r.createElement)(i.Button,{isPrimary:"typography"===g,onClick:()=>_("typography")},(0,o.__)("Typography","gp-premium"))),(0,r.createElement)(i.Button,{disabled:!!s,isPrimary:!0,onClick:e=>(e=>{n(!0);const t=e.target.previousElementSibling.previousElementSibling;c()({path:"/generatepress-pro/v1/export",method:"POST",data:{items:!1,type:g}}).then((e=>{if(n(!1),t.classList.add("generatepress-dashboard__section-item-message__show"),"object"==typeof e.response?t.textContent=(0,o.__)("Options exported","gp-premium"):t.textContent=e.response,e.success&&e.response){const s=(new Date).toISOString().slice(0,10),r="generatepress-settings-"+g+"-"+s+".json",a=new Blob([JSON.stringify(e.response)],{type:"application/json",name:r});d()(a,r),setTimeout((function(){t.classList.remove("generatepress-dashboard__section-item-message__show")}),3e3)}else t.classList.add("generatepress-dashboard__section-item-message__error")}))})(e)},!!s&&(0,r.createElement)(i.Spinner,null),!s&&(0,o.__)("Export","gp-premium")))),(0,r.createElement)("div",{className:"generatepress-dashboard__section-item"},(0,r.createElement)("div",{className:"generatepress-dashboard__section-item-content"},(0,r.createElement)("div",{className:"generatepress-dashboard__section-item-title"},(0,o.__)("Import","gp-premium")),(0,r.createElement)("div",{className:"generatepress-dashboard__section-item-description"},(0,o.__)("Import your customizer settings.","gp-premium"))),(0,r.createElement)("div",{className:"generatepress-dashboard__section-item-action"},(0,r.createElement)("span",{className:"generatepress-dashboard__section-item-message"}),(0,r.createElement)("input",{type:"file",accept:".json",onChange:e=>{const t=new FileReader;t.onloadend=()=>{let e=t.result;e=JSON.parse(e),e&&u(e)},t.readAsText(e.target.files[0])}}),(0,r.createElement)(i.Button,{disabled:!!l||!p,isPrimary:!0,onClick:e=>{window.confirm((0,o.__)("This can overwrite existing settings and cannot be undone.","gp-premium"))&&(e=>{m(!0);const t=e.target.previousElementSibling.previousElementSibling,s=e.target.previousElementSibling;s.style.display="none",c()({path:"/generatepress-pro/v1/import",method:"POST",data:{import:p}}).then((e=>{m(!1),t.classList.add("generatepress-dashboard__section-item-message__show"),"object"==typeof e.response?t.textContent=(0,o.__)("Options imported.","gp-premium"):t.textContent=e.response,e.success&&e.response?setTimeout((function(){t.classList.remove("generatepress-dashboard__section-item-message__show"),s.style.display="block",s.value=""}),3e3):t.classList.add("generatepress-dashboard__section-item-message__error")}))})(e)}},!!l&&(0,r.createElement)(i.Spinner,null),!l&&(0,o.__)("Import","gp-premium")))))):(0,r.createElement)(i.Placeholder,{className:"generatepress-dashboard__placeholder"},(0,r.createElement)(i.Spinner,null))};window.addEventListener("DOMContentLoaded",(()=>{n((0,r.createElement)(_,null),document.getElementById("generatepress-import-export-pro"))}));const h=()=>{const[e,t]=(0,a.useState)(!1),[s,n]=(0,a.useState)(!1);return(0,a.useEffect)((()=>{e||t(!0)})),e?(0,r.createElement)(r.Fragment,null,(0,r.createElement)("div",{className:"generatepress-dashboard__section"},(0,r.createElement)("div",{className:"generatepress-dashboard__section-title",style:{marginBottom:0}},(0,r.createElement)("h2",null,(0,o.__)("Reset","gp-premium"))),(0,r.createElement)("div",{className:"generatepress-dashboard__section-item-description",style:{marginTop:0}},(0,o.__)("Reset your customizer settings.","gp-premium")),(0,r.createElement)(i.Button,{className:"generatepress-dashboard__reset-button",style:{marginTop:"10px"},disabled:!!s,isPrimary:!0,onClick:e=>{window.confirm((0,o.__)("This will delete all of your customizer settings. It cannot be undone.","gp-premium"))&&(e=>{n(!0);const t=e.target.nextElementSibling;c()({path:"/generatepress-pro/v1/reset",method:"POST",data:{items:!1}}).then((e=>{n(!1),t.classList.add("generatepress-dashboard__section-item-message__show"),"object"==typeof e.response?t.textContent=(0,o.__)("Settings reset.","gp-premium"):t.textContent=e.response,e.success&&e.response?setTimeout((function(){t.classList.remove("generatepress-dashboard__section-item-message__show")}),3e3):t.classList.add("generatepress-dashboard__section-item-message__error")}))})(e)}},!!s&&(0,r.createElement)(i.Spinner,null),!s&&(0,o.__)("Reset","gp-premium")),(0,r.createElement)("span",{className:"generatepress-dashboard__section-item-message",style:{marginLeft:"10px"}}))):(0,r.createElement)(i.Placeholder,{className:"generatepress-dashboard__placeholder"},(0,r.createElement)(i.Spinner,null))};window.addEventListener("DOMContentLoaded",(()=>{n((0,r.createElement)(h,null),document.getElementById("generatepress-reset-pro"))}))},162:function(e,t,s){var r,a;void 0===(a="function"==typeof(r=function(){"use strict";function t(e,t,s){var r=new XMLHttpRequest;r.open("GET",e),r.responseType="blob",r.onload=function(){i(r.response,t,s)},r.onerror=function(){console.error("could not download file")},r.send()}function r(e){var t=new XMLHttpRequest;t.open("HEAD",e,!1);try{t.send()}catch(e){}return 200<=t.status&&299>=t.status}function a(e){try{e.dispatchEvent(new MouseEvent("click"))}catch(s){var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),e.dispatchEvent(t)}}var n="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof s.g&&s.g.global===s.g?s.g:void 0,o=n.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),i=n.saveAs||("object"!=typeof window||window!==n?function(){}:"download"in HTMLAnchorElement.prototype&&!o?function(e,s,o){var i=n.URL||n.webkitURL,l=document.createElement("a");s=s||e.name||"download",l.download=s,l.rel="noopener","string"==typeof e?(l.href=e,l.origin===location.origin?a(l):r(l.href)?t(e,s,o):a(l,l.target="_blank")):(l.href=i.createObjectURL(e),setTimeout((function(){i.revokeObjectURL(l.href)}),4e4),setTimeout((function(){a(l)}),0))}:"msSaveOrOpenBlob"in navigator?function(e,s,n){if(s=s||e.name||"download","string"!=typeof e)navigator.msSaveOrOpenBlob(function(e,t){return void 0===t?t={autoBom:!1}:"object"!=typeof t&&(console.warn("Deprecated: Expected third argument to be a object"),t={autoBom:!t}),t.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e}(e,n),s);else if(r(e))t(e,s,n);else{var o=document.createElement("a");o.href=e,o.target="_blank",setTimeout((function(){a(o)}))}}:function(e,s,r,a){if((a=a||open("","_blank"))&&(a.document.title=a.document.body.innerText="downloading..."),"string"==typeof e)return t(e,s,r);var i="application/octet-stream"===e.type,l=/constructor/i.test(n.HTMLElement)||n.safari,c=/CriOS\/[\d]+/.test(navigator.userAgent);if((c||i&&l||o)&&"undefined"!=typeof FileReader){var m=new FileReader;m.onloadend=function(){var e=m.result;e=c?e:e.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=e:location=e,a=null},m.readAsDataURL(e)}else{var d=n.URL||n.webkitURL,p=d.createObjectURL(e);a?a.location=p:location.href=p,a=null,setTimeout((function(){d.revokeObjectURL(p)}),4e4)}});n.saveAs=i.saveAs=i,e.exports=i})?r.apply(t,[]):r)||(e.exports=a)}},s={};function r(e){var a=s[e];if(void 0!==a)return a.exports;var n=s[e]={exports:{}};return t[e].call(n.exports,n,n.exports,r),n.exports}r.m=t,e=[],r.O=(t,s,a,n)=>{if(!s){var o=1/0;for(m=0;m=n)&&Object.keys(r.O).every((e=>r.O[e](s[l])))?s.splice(l--,1):(i=!1,n0&&e[m-1][2]>n;m--)e[m]=e[m-1];e[m]=[s,a,n]},r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var s in t)r.o(t,s)&&!r.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={966:0,100:0};r.O.j=t=>0===e[t];var t=(t,s)=>{var a,n,[o,i,l]=s,c=0;if(o.some((t=>0!==e[t]))){for(a in i)r.o(i,a)&&(r.m[a]=i[a]);if(l)var m=l(r)}for(t&&t(s);cr(217)));a=r.O(a)})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor-rtl.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor-rtl.css deleted file mode 100644 index 4d7bafd0..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor-rtl.css +++ /dev/null @@ -1 +0,0 @@ -.gpp-active-element-type{color:#555;font-size:11px;text-transform:uppercase} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.asset.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.asset.php deleted file mode 100644 index a6182b78..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('react', 'wp-edit-post', 'wp-element', 'wp-html-entities', 'wp-i18n', 'wp-plugins'), 'version' => '81f036c27194ee54b73d'); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.css deleted file mode 100644 index 4d7bafd0..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.css +++ /dev/null @@ -1 +0,0 @@ -.gpp-active-element-type{color:#555;font-size:11px;text-transform:uppercase} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.js deleted file mode 100644 index 4a40ca01..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/editor.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";const e=window.React,t=window.wp.i18n,n=window.wp.plugins,l=window.wp.editPost,i=window.wp.element,m=window.wp.htmlEntities;class s extends i.Component{render(){const n=gpPremiumEditor.activeElements;return!n||n.length<1?null:gpPremiumEditor.postTypeIsPublic?(0,e.createElement)(l.PluginDocumentSettingPanel,{name:"generatepress-elements-info",title:(0,t.__)("Active Elements","gp-premium"),className:"gpp-element-info-panel gpp-element-panel-label"},(0,e.createElement)(i.Fragment,null,(0,e.createElement)("ul",{className:"gpp-active-elements"},Object.keys(n).map(((t,l)=>(0,e.createElement)("li",{key:`gpp-active-block-element-${l}`},(0,e.createElement)("a",{href:n[t].url+"&action=edit"},(0,m.decodeEntities)(n[t].name))," ",(0,e.createElement)("span",{className:"gpp-active-element-type"},"- ",n[t].type))))),(0,e.createElement)("a",{href:gpPremiumEditor.elementsUrl,className:"components-button is-secondary"},(0,t.__)("All Elements","gp-premium")))):null}}(0,n.registerPlugin)("generatepress-elements-info-panel",{icon:null,render:s})})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/font-library-rtl.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/font-library-rtl.css deleted file mode 100644 index 6b1f9806..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/font-library-rtl.css +++ /dev/null @@ -1 +0,0 @@ -.gp-font-library{box-sizing:border-box;margin:40px auto 0;max-width:1200px;padding:0 20px}.gp-font-library .components-tab-panel__tabs{background-color:#fff;border-bottom:1px solid #e7e7e7}.gp-font-library .components-tab-panel__tabs .components-tab-panel__tabs-item{padding:30px 20px}.gp-font-library .components-tab-panel__tabs .components-tab-panel__tabs-item.active-tab{color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.gp-font-library .components-tab-panel__tabs .components-tab-panel__tabs-item:first-child{margin-right:20px}.gp-font-library .components-tab-panel__tabs .gp-tab-header{font-size:14px}.gp-font-library .components-tab-panel__tab-content{background-color:#fff;box-sizing:border-box;margin:0 auto;max-width:1200px;min-height:600px;padding:30px 40px}.gp-font-library .components-tab-panel__tab-content h2{font-size:20px;line-height:1.2em;margin-bottom:20px;margin-top:0}.gp-font-library__text{max-width:700px}.gp-font-library__list{font-size:16px}.gp-font-library__list li{margin-bottom:0}.gp-font-library__list li+li{margin-top:-1px}.gp-font-library__notice{margin-bottom:30px}.gp-font-library__results li{align-items:center;display:flex;gap:2px}.gp-font-library__result--success svg{fill:#4ab866}.gp-font-library__result--failure svg{fill:#cc1818}.gp-font-library-authorize-fonts{border:1px solid #aaa;border-radius:3px;margin:50px auto 0;max-width:350px;padding:25px}.gp-font-library-authorize-fonts h3{font-size:1.5em;margin-top:10px}.gp-font-library-authorize-fonts .components-button{margin:10px 0}.gp-font-library-variant{padding:30px}.gp-font-library-variant__header{display:flex;justify-content:space-between}.gp-font-library-variant__label{color:#777;font-size:14px}.gp-font-library-card{align-items:center;border:1px solid #e0e0e0;display:flex;font-style:italic;gap:10px;height:auto;padding:16px;text-align:right;width:100%}.gp-font-library-card :where(input,label),.gp-font-library-card:where(button,a){cursor:pointer}.gp-font-library-card+.gp-font-library-card{margin-top:-1px}.gp-font-library-card__variants{align-items:center;display:flex;gap:10px;margin-right:auto}.gp-font-library-card__categories{margin:auto;min-width:7.69em;text-transform:capitalize}.gp-font-library-card .gp-font-library-preview{min-width:25%}.gp-font-library-card:hover img{filter:invert(39%) sepia(67%) saturate(7078%) hue-rotate(213deg) brightness(96%) contrast(98%)}.gp-font-library-preview{align-items:center;display:flex;font-style:normal}.gp-font-library-preview__image{display:block;max-width:100%}.gp-font-library-preview__fallback{font-size:19px}.gp-font-library-edit h3{margin-top:20px}.gp-font-library-edit__control-notice{max-width:500px}.gp-font-library-edit__control label{display:block}.gp-font-library-edit__control .components-input-control__container,.gp-font-library-edit__control input[type=text]{max-width:250px!important}.gp-font-library-edit__footer{margin-top:40px}.gp-font-library-edit__variants{list-style:none;padding-right:0;width:250px}.gp-font-library-edit__variant{align-items:center;display:flex;justify-content:space-between}.gp-font-library-edit__variant .components-checkbox-control{--checkbox-input-size:24px}.gp-font-library-edit__variant .components-checkbox-control .components-base-control__field{align-items:center;display:flex}.gp-font-library-edit__variant--delete .components-checkbox-control{opacity:.5;text-decoration:line-through}.gp-font-library-edit__advanced{margin-bottom:20px}.gp-font-library-edit__advanced>.gb-stack{margin-top:20px}.gp-font-library-google__header-container{container-type:inline-size}.gp-font-library-google__header{align-items:flex-start;display:flex;margin-bottom:30px}.gp-font-library-google__header-content{flex-grow:1}.gp-font-library-google__header-content>:last-child{margin-bottom:0}.gp-font-library-google__header-content h2{margin-top:0}.gp-font-library-google__description{width:100%}.gp-font-library-google__filters{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;margin-bottom:10px}.gp-font-library-google__filters select{height:40px!important}.gp-font-library-google__results{font-size:12px;font-style:italic;font-weight:500}.gp-font-library-google__results .components-button{margin-right:1em}.gp-font-library-google__pagination{align-items:flex-end;display:flex;gap:10px}.gp-font-library-google__pagination-numbers{align-items:center;display:flex;gap:10px;margin-left:auto}.gp-font-library-google__footer{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.gp-font-library-settings{width:500px}.gp-font-library-settings__controls{margin-bottom:40px}.gp-font-library-settings__controls .components-base-control>:last-child{margin-bottom:0}.gp-font-library-settings__auth{background-color:#cc181833;border:1px solid #cc1818;border-radius:4px;font-size:14px;padding:10px}.gp-font-library-settings__auth :first-child{margin-top:0}.gp-font-library-settings__auth :last-child{margin-bottom:0} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/font-library.asset.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/font-library.asset.php deleted file mode 100644 index 0264391d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/font-library.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('lodash', 'react', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-element', 'wp-i18n', 'wp-primitives'), 'version' => '70fe87ecb0efc8fb0659'); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/font-library.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/font-library.css deleted file mode 100644 index 4ab5702e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/font-library.css +++ /dev/null @@ -1 +0,0 @@ -.gp-font-library{box-sizing:border-box;margin:40px auto 0;max-width:1200px;padding:0 20px}.gp-font-library .components-tab-panel__tabs{background-color:#fff;border-bottom:1px solid #e7e7e7}.gp-font-library .components-tab-panel__tabs .components-tab-panel__tabs-item{padding:30px 20px}.gp-font-library .components-tab-panel__tabs .components-tab-panel__tabs-item.active-tab{color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.gp-font-library .components-tab-panel__tabs .components-tab-panel__tabs-item:first-child{margin-left:20px}.gp-font-library .components-tab-panel__tabs .gp-tab-header{font-size:14px}.gp-font-library .components-tab-panel__tab-content{background-color:#fff;box-sizing:border-box;margin:0 auto;max-width:1200px;min-height:600px;padding:30px 40px}.gp-font-library .components-tab-panel__tab-content h2{font-size:20px;line-height:1.2em;margin-bottom:20px;margin-top:0}.gp-font-library__text{max-width:700px}.gp-font-library__list{font-size:16px}.gp-font-library__list li{margin-bottom:0}.gp-font-library__list li+li{margin-top:-1px}.gp-font-library__notice{margin-bottom:30px}.gp-font-library__results li{align-items:center;display:flex;gap:2px}.gp-font-library__result--success svg{fill:#4ab866}.gp-font-library__result--failure svg{fill:#cc1818}.gp-font-library-authorize-fonts{border:1px solid #aaa;border-radius:3px;margin:50px auto 0;max-width:350px;padding:25px}.gp-font-library-authorize-fonts h3{font-size:1.5em;margin-top:10px}.gp-font-library-authorize-fonts .components-button{margin:10px 0}.gp-font-library-variant{padding:30px}.gp-font-library-variant__header{display:flex;justify-content:space-between}.gp-font-library-variant__label{color:#777;font-size:14px}.gp-font-library-card{align-items:center;border:1px solid #e0e0e0;display:flex;font-style:italic;gap:10px;height:auto;padding:16px;text-align:left;width:100%}.gp-font-library-card :where(input,label),.gp-font-library-card:where(button,a){cursor:pointer}.gp-font-library-card+.gp-font-library-card{margin-top:-1px}.gp-font-library-card__variants{align-items:center;display:flex;gap:10px;margin-left:auto}.gp-font-library-card__categories{margin:auto;min-width:7.69em;text-transform:capitalize}.gp-font-library-card .gp-font-library-preview{min-width:25%}.gp-font-library-card:hover img{filter:invert(39%) sepia(67%) saturate(7078%) hue-rotate(213deg) brightness(96%) contrast(98%)}.gp-font-library-preview{align-items:center;display:flex;font-style:normal}.gp-font-library-preview__image{display:block;max-width:100%}.gp-font-library-preview__fallback{font-size:19px}.gp-font-library-edit h3{margin-top:20px}.gp-font-library-edit__control-notice{max-width:500px}.gp-font-library-edit__control label{display:block}.gp-font-library-edit__control .components-input-control__container,.gp-font-library-edit__control input[type=text]{max-width:250px!important}.gp-font-library-edit__footer{margin-top:40px}.gp-font-library-edit__variants{list-style:none;padding-left:0;width:250px}.gp-font-library-edit__variant{align-items:center;display:flex;justify-content:space-between}.gp-font-library-edit__variant .components-checkbox-control{--checkbox-input-size:24px}.gp-font-library-edit__variant .components-checkbox-control .components-base-control__field{align-items:center;display:flex}.gp-font-library-edit__variant--delete .components-checkbox-control{opacity:.5;text-decoration:line-through}.gp-font-library-edit__advanced{margin-bottom:20px}.gp-font-library-edit__advanced>.gb-stack{margin-top:20px}.gp-font-library-google__header-container{container-type:inline-size}.gp-font-library-google__header{align-items:flex-start;display:flex;margin-bottom:30px}.gp-font-library-google__header-content{flex-grow:1}.gp-font-library-google__header-content>:last-child{margin-bottom:0}.gp-font-library-google__header-content h2{margin-top:0}.gp-font-library-google__description{width:100%}.gp-font-library-google__filters{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;margin-bottom:10px}.gp-font-library-google__filters select{height:40px!important}.gp-font-library-google__results{font-size:12px;font-style:italic;font-weight:500}.gp-font-library-google__results .components-button{margin-left:1em}.gp-font-library-google__pagination{align-items:flex-end;display:flex;gap:10px}.gp-font-library-google__pagination-numbers{align-items:center;display:flex;gap:10px;margin-right:auto}.gp-font-library-google__footer{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.gp-font-library-settings{width:500px}.gp-font-library-settings__controls{margin-bottom:40px}.gp-font-library-settings__controls .components-base-control>:last-child{margin-bottom:0}.gp-font-library-settings__auth{background-color:#cc181833;border:1px solid #cc1818;border-radius:4px;font-size:14px;padding:10px}.gp-font-library-settings__auth :first-child{margin-top:0}.gp-font-library-settings__auth :last-child{margin-bottom:0} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/font-library.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/font-library.js deleted file mode 100644 index d907e9cc..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/font-library.js +++ /dev/null @@ -1,11 +0,0 @@ -(()=>{var e={771:e=>{var t;globalThis,t=()=>(()=>{var e={703:(e,t,n)=>{"use strict";var r=n(414);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,s){if(s!==r){var a=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw a.name="Invariant Violation",a}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},697:(e,t,n)=>{e.exports=n(703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},921:(e,t)=>{"use strict";Symbol.for("react.element"),Symbol.for("react.portal"),Symbol.for("react.fragment"),Symbol.for("react.strict_mode"),Symbol.for("react.profiler"),Symbol.for("react.provider"),Symbol.for("react.context"),Symbol.for("react.server_context"),Symbol.for("react.forward_ref"),Symbol.for("react.suspense"),Symbol.for("react.suspense_list"),Symbol.for("react.memo"),Symbol.for("react.lazy"),Symbol.for("react.offscreen"),Symbol.for("react.module.reference")},864:(e,t,n)=>{"use strict";n(921)},251:(e,t,n)=>{"use strict";var r=n(196),o=Symbol.for("react.element"),i=(Symbol.for("react.fragment"),Object.prototype.hasOwnProperty),s=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,a={key:!0,ref:!0,__self:!0,__source:!0};t.jsx=function(e,t,n){var r,l={},u=null,c=null;for(r in void 0!==n&&(u=""+n),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(c=t.ref),t)i.call(t,r)&&!a.hasOwnProperty(r)&&(l[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===l[r]&&(l[r]=t[r]);return{$$typeof:o,type:e,key:u,ref:c,props:l,_owner:s.current}}},893:(e,t,n)=>{"use strict";e.exports=n(251)},196:e=>{"use strict";e.exports=window.React}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nc=void 0;var r={};return(()=>{"use strict";n.r(r),n.d(r,{Autocomplete:()=>Be,Checkbox:()=>Ke,ColorPicker:()=>on,SortableList:()=>Uo,SortableListItem:()=>Ho,Stack:()=>jo,Table:()=>Wi});var e=n(196),t=n.n(e);const o=window.wp.element,i=window.wp.components,s=window.wp.i18n,a=window.wp.primitives;var l=n(893);const u=(0,l.jsx)(a.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,l.jsx)(a.Path,{d:"M12 3.2c-4.8 0-8.8 3.9-8.8 8.8 0 4.8 3.9 8.8 8.8 8.8 4.8 0 8.8-3.9 8.8-8.8 0-4.8-4-8.8-8.8-8.8zm0 16c-4 0-7.2-3.3-7.2-7.2C4.8 8 8 4.8 12 4.8s7.2 3.3 7.2 7.2c0 4-3.2 7.2-7.2 7.2zM11 17h2v-6h-2v6zm0-8h2V7h-2v2z"})});function c(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)>=0)continue;n[r]=e[r]}return n}function d(){return d=Object.assign?Object.assign.bind():function(e){for(var t=1;t"object"==typeof e&&null!=e&&1===e.nodeType,p=(e,t)=>(!t||"hidden"!==e)&&"visible"!==e&&"clip"!==e,m=(e,t)=>{if(e.clientHeight{const t=(e=>{if(!e.ownerDocument||!e.ownerDocument.defaultView)return null;try{return e.ownerDocument.defaultView.frameElement}catch(e){return null}})(e);return!!t&&(t.clientHeightit||i>e&&s=t&&a>=n?i-e-r:s>t&&an?s-t+o:0,v=e=>{const t=e.parentElement;return null==t?e.getRootNode().host||null:t};var w=function(){return w=Object.assign||function(e){for(var t,n=1,r=arguments.length;n1?n-1:0),o=1;os)&&(e=t>0?-1:s+1);var a=e+t;a<0?a=o?s:0:a>s&&(a=o?0:s);var l=M(a,t<0,n,r,o);return-1===l?e>=i?-1:e:l}function M(e,t,n,r,o){void 0===o&&(o=!1);var i=n.length;if(t){for(var s=e;s>=0;s--)if(!r(n[s],s))return s}else for(var a=e;a{var n,r,o,i;if("undefined"==typeof document)return[];const{scrollMode:s,block:a,inline:l,boundary:u,skipOverflowHiddenElements:c}=t,d="function"==typeof u?u:e=>e!==u;if(!g(e))throw new TypeError("Invalid target");const h=document.scrollingElement||document.documentElement,f=[];let p=e;for(;g(p)&&d(p);){if(p=v(p),p===h){f.push(p);break}null!=p&&p===document.body&&m(p)&&!m(document.documentElement)||null!=p&&m(p,c)&&f.push(p)}const w=null!=(r=null==(n=window.visualViewport)?void 0:n.width)?r:innerWidth,y=null!=(i=null==(o=window.visualViewport)?void 0:o.height)?i:innerHeight,{scrollX:C,scrollY:x}=window,{height:S,width:E,top:R,right:O,bottom:I,left:k}=e.getBoundingClientRect(),{top:M,right:F,bottom:D,left:P}=(e=>{const t=window.getComputedStyle(e);return{top:parseFloat(t.scrollMarginTop)||0,right:parseFloat(t.scrollMarginRight)||0,bottom:parseFloat(t.scrollMarginBottom)||0,left:parseFloat(t.scrollMarginLeft)||0}})(e);let A="start"===a||"nearest"===a?R-M:"end"===a?I+D:R+S/2-M+D,V="center"===l?k+E/2-P+F:"end"===l?O+F:k-P;const T=[];for(let e=0;e=0&&k>=0&&I<=y&&O<=w&&R>=o&&I<=u&&k>=c&&O<=i)return T;const d=getComputedStyle(t),g=parseInt(d.borderLeftWidth,10),p=parseInt(d.borderTopWidth,10),m=parseInt(d.borderRightWidth,10),v=parseInt(d.borderBottomWidth,10);let M=0,F=0;const D="offsetWidth"in t?t.offsetWidth-t.clientWidth-g-m:0,P="offsetHeight"in t?t.offsetHeight-t.clientHeight-p-v:0,L="offsetWidth"in t?0===t.offsetWidth?0:r/t.offsetWidth:0,N="offsetHeight"in t?0===t.offsetHeight?0:n/t.offsetHeight:0;if(h===t)M="start"===a?A:"end"===a?A-y:"nearest"===a?b(x,x+y,y,p,v,x+A,x+A+S,S):A-y/2,F="start"===l?V:"center"===l?V-w/2:"end"===l?V-w:b(C,C+w,w,g,m,C+V,C+V+E,E),M=Math.max(0,M+x),F=Math.max(0,F+C);else{M="start"===a?A-o-p:"end"===a?A-u+v+P:"nearest"===a?b(o,u,n,p,v+P,A,A+S,S):A-(o+n/2)+P/2,F="start"===l?V-c-g:"center"===l?V-(c+r/2)+D/2:"end"===l?V-i+m+D:b(c,i,r,g,m+D,V,V+E,E);const{scrollLeft:e,scrollTop:s}=t;M=0===N?0:Math.max(0,Math.min(s+M/N,t.scrollHeight-n/N+P)),F=0===L?0:Math.max(0,Math.min(e+F/L,t.scrollWidth-r/L+D)),A+=s-M,V+=e-F}T.push({el:t,top:M,left:F})}return T})(e,{boundary:t,block:"nearest",scrollMode:"if-needed"});n.forEach((function(e){var t=e.el,n=e.top,r=e.left;t.scrollTop=n,t.scrollLeft=r}))}},environment:"undefined"==typeof window?void 0:window};function H(e,t,n){void 0===n&&(n=A);var r=e["default"+N(t)];return void 0!==r?r:n[t]}function U(e,t,n){void 0===n&&(n=A);var r=e[t];if(void 0!==r)return r;var o=e["initial"+N(t)];return void 0!==o?o:H(e,t,n)}function W(e,t,n){var r=e.items,o=e.initialHighlightedIndex,i=e.defaultHighlightedIndex,s=e.isItemDisabled,a=e.itemToKey,l=t.selectedItem,u=t.highlightedIndex;return 0===r.length?-1:void 0===o||u!==o||s(r[o],o)?void 0===i||s(r[i],i)?l?r.findIndex((function(e){return a(l)===a(e)})):n<0&&!s(r[r.length-1],r.length-1)?r.length-1:n>0&&!s(r[0],0)?0:-1:i:o}var j=C;function q(e,t,n){var r;return void 0===n&&(n=!0),d({isOpen:!1,highlightedIndex:-1},(null==(r=e.items)?void 0:r.length)&&t>=0&&d({selectedItem:e.items[t],isOpen:H(e,"isOpen"),highlightedIndex:H(e,"highlightedIndex")},n&&{inputValue:e.itemToString(e.items[t])}))}function K(e,t){return e.isOpen===t.isOpen&&e.inputValue===t.inputValue&&e.highlightedIndex===t.highlightedIndex&&e.selectedItem===t.selectedItem}function Y(){var e=t().useRef(!0);return t().useEffect((function(){return e.current=!1,function(){e.current=!0}}),[]),e.current}function _(e){var t=H(e,"highlightedIndex");return t>-1&&e.isItemDisabled(e.items[t],t)?-1:t}var Z=d({},{environment:f().shape({addEventListener:f().func.isRequired,removeEventListener:f().func.isRequired,document:f().shape({createElement:f().func.isRequired,getElementById:f().func.isRequired,activeElement:f().any.isRequired,body:f().any.isRequired}).isRequired,Node:f().func.isRequired}),itemToString:f().func,itemToKey:f().func,stateReducer:f().func},{getA11yStatusMessage:f().func,highlightedIndex:f().number,defaultHighlightedIndex:f().number,initialHighlightedIndex:f().number,isOpen:f().bool,defaultIsOpen:f().bool,initialIsOpen:f().bool,selectedItem:f().any,initialSelectedItem:f().any,defaultSelectedItem:f().any,id:f().string,labelId:f().string,menuId:f().string,getItemId:f().func,toggleButtonId:f().string,onSelectedItemChange:f().func,onHighlightedIndexChange:f().func,onStateChange:f().func,onIsOpenChange:f().func,scrollIntoView:f().func});w(w({},Z),{items:f().array.isRequired,isItemDisabled:f().func}),w(w({},G),{isItemDisabled:function(){return!1}});var X=0,J=1,Q=2,$=3,ee=4,te=5,ne=6,re=7,oe=8,ie=9,se=10,ae=13,le=19,ue=22,ce=Object.freeze({__proto__:null,ControlledPropUpdatedSelectedItem:ue,FunctionCloseMenu:17,FunctionOpenMenu:16,FunctionReset:21,FunctionSelectItem:le,FunctionSetHighlightedIndex:18,FunctionSetInputValue:20,FunctionToggleMenu:15,InputBlur:ie,InputChange:oe,InputClick:se,InputKeyDownArrowDown:X,InputKeyDownArrowUp:J,InputKeyDownEnd:ee,InputKeyDownEnter:re,InputKeyDownEscape:Q,InputKeyDownHome:$,InputKeyDownPageDown:ne,InputKeyDownPageUp:te,ItemClick:ae,ItemMouseMove:12,MenuMouseLeave:11,ToggleButtonClick:14});function de(e){var t=function(e){var t=U(e,"selectedItem"),n=U(e,"isOpen"),r=function(e){var t=U(e,"highlightedIndex");return t>-1&&e.isItemDisabled(e.items[t],t)?-1:t}(e),o=U(e,"inputValue");return{highlightedIndex:r<0&&t&&n?e.items.findIndex((function(n){return e.itemToKey(n)===e.itemToKey(t)})):r,isOpen:n,selectedItem:t,inputValue:o}}(e),n=t.selectedItem,r=t.inputValue;return""===r&&n&&void 0===e.defaultInputValue&&void 0===e.initialInputValue&&void 0===e.inputValue&&(r=e.itemToString(n)),d({},t,{inputValue:r})}d({},Z,{items:f().array.isRequired,isItemDisabled:f().func,inputValue:f().string,defaultInputValue:f().string,initialInputValue:f().string,inputId:f().string,onInputValueChange:f().func});var he=C,fe=d({},G,{isItemDisabled:function(){return!1}});function ge(e,t){var n,r,o=t.type,i=t.props,s=t.altKey;switch(o){case ae:r={isOpen:H(i,"isOpen"),highlightedIndex:_(i),selectedItem:i.items[t.index],inputValue:i.itemToString(i.items[t.index])};break;case X:r=e.isOpen?{highlightedIndex:k(e.highlightedIndex,1,i.items,i.isItemDisabled,!0)}:{highlightedIndex:s&&null==e.selectedItem?-1:W(i,e,1),isOpen:i.items.length>=0};break;case J:r=e.isOpen?s?q(i,e.highlightedIndex):{highlightedIndex:k(e.highlightedIndex,-1,i.items,i.isItemDisabled,!0)}:{highlightedIndex:W(i,e,-1),isOpen:i.items.length>=0};break;case re:r=q(i,e.highlightedIndex);break;case Q:r=d({isOpen:!1,highlightedIndex:-1},!e.isOpen&&{selectedItem:null,inputValue:""});break;case te:r={highlightedIndex:k(e.highlightedIndex,-10,i.items,i.isItemDisabled,!0)};break;case ne:r={highlightedIndex:k(e.highlightedIndex,10,i.items,i.isItemDisabled,!0)};break;case $:r={highlightedIndex:M(0,!1,i.items,i.isItemDisabled)};break;case ee:r={highlightedIndex:M(i.items.length-1,!0,i.items,i.isItemDisabled)};break;case ie:r=d({isOpen:!1,highlightedIndex:-1},e.highlightedIndex>=0&&(null==(n=i.items)?void 0:n.length)&&t.selectItem&&{selectedItem:i.items[e.highlightedIndex],inputValue:i.itemToString(i.items[e.highlightedIndex])});break;case oe:r={isOpen:!0,highlightedIndex:_(i),inputValue:t.inputValue};break;case se:r={isOpen:!e.isOpen,highlightedIndex:e.isOpen?-1:W(i,e,0)};break;case le:r={selectedItem:t.selectedItem,inputValue:i.itemToString(t.selectedItem)};break;case ue:r={inputValue:t.inputValue};break;default:return function(e,t,n){var r,o=t.type,i=t.props;switch(o){case n.ItemMouseMove:r={highlightedIndex:t.disabled?-1:t.index};break;case n.MenuMouseLeave:r={highlightedIndex:-1};break;case n.ToggleButtonClick:case n.FunctionToggleMenu:r={isOpen:!e.isOpen,highlightedIndex:e.isOpen?-1:W(i,e,0)};break;case n.FunctionOpenMenu:r={isOpen:!0,highlightedIndex:W(i,e,0)};break;case n.FunctionCloseMenu:r={isOpen:!1};break;case n.FunctionSetHighlightedIndex:r={highlightedIndex:i.isItemDisabled(i.items[t.highlightedIndex],t.highlightedIndex)?-1:t.highlightedIndex};break;case n.FunctionSetInputValue:r={inputValue:t.inputValue};break;case n.FunctionReset:r={highlightedIndex:_(i),isOpen:H(i,"isOpen"),selectedItem:H(i,"selectedItem"),inputValue:H(i,"inputValue")};break;default:throw new Error("Reducer called without proper action type.")}return d({},e,r)}(e,t,ce)}return d({},e,r)}var pe=["onMouseLeave","refKey","ref"],me=["item","index","refKey","ref","onMouseMove","onMouseDown","onClick","onPress","disabled"],be=["onClick","onPress","refKey","ref"],ve=["onKeyDown","onChange","onInput","onBlur","onChangeText","onClick","refKey","ref"];function we(t){void 0===t&&(t={}),he(t,we);var n=d({},fe,t),r=n.items,o=n.scrollIntoView,i=n.environment,s=n.getA11yStatusMessage,a=function(t,n,r,o){var i=(0,e.useRef)(),s=B(t,n,r,o),a=s[0],l=s[1],u=Y();return(0,e.useEffect)((function(){I(n,"selectedItem")&&(u||n.itemToKey(n.selectedItem)!==n.itemToKey(i.current)&&l({type:ue,inputValue:n.itemToString(n.selectedItem)}),i.current=a.selectedItem===i.current?n.selectedItem:a.selectedItem)}),[a.selectedItem,n.selectedItem]),[O(a,n),l]}(ge,n,de,K),l=a[0],u=a[1],h=l.isOpen,f=l.highlightedIndex,g=l.selectedItem,p=l.inputValue,m=(0,e.useRef)(null),b=(0,e.useRef)({}),v=(0,e.useRef)(null),w=(0,e.useRef)(null),y=Y(),x=L(n),S=(0,e.useRef)(),k=z({state:l,props:n}),M=(0,e.useCallback)((function(e){return b.current[x.getItemId(e)]}),[x]);!function(t,n,r,o){void 0===o&&(o={});var i=o.document,s=Y();(0,e.useEffect)((function(){if(t&&!s&&i){var e=t(n);V(e,i)}}),r),(0,e.useEffect)((function(){return function(){var e,t;V.cancel(),(t=null==(e=i)?void 0:e.getElementById("a11y-status-message"))&&t.remove()}}),[i])}(s,l,[h,f,g,p],i);var D=function(t){var n=t.highlightedIndex,r=t.isOpen,o=t.itemRefs,i=t.getItemNodeFromIndex,s=t.menuElement,a=t.scrollIntoView,l=(0,e.useRef)(!0);return T((function(){n<0||!r||!Object.keys(o.current).length||(!1===l.current?l.current=!0:a(i(n),s))}),[n]),l}({menuElement:m.current,highlightedIndex:f,isOpen:h,itemRefs:b,scrollIntoView:o,getItemNodeFromIndex:M});j({props:n,state:l}),(0,e.useEffect)((function(){U(n,"isOpen")&&v.current&&v.current.focus()}),[]),(0,e.useEffect)((function(){y||(S.current=r.length)}));var P=function(t,n,r){var o=(0,e.useRef)({isMouseDown:!1,isTouchMove:!1,isTouchEnd:!1});return(0,e.useEffect)((function(){if(!t)return C;var e=n.map((function(e){return e.current}));function i(){o.current.isTouchEnd=!1,o.current.isMouseDown=!0}function s(n){o.current.isMouseDown=!1,F(n.target,e,t)||r()}function a(){o.current.isTouchEnd=!1,o.current.isTouchMove=!1}function l(){o.current.isTouchMove=!0}function u(n){o.current.isTouchEnd=!0,o.current.isTouchMove||F(n.target,e,t,!1)||r()}return t.addEventListener("mousedown",i),t.addEventListener("mouseup",s),t.addEventListener("touchstart",a),t.addEventListener("touchmove",l),t.addEventListener("touchend",u),function(){t.removeEventListener("mousedown",i),t.removeEventListener("mouseup",s),t.removeEventListener("touchstart",a),t.removeEventListener("touchmove",l),t.removeEventListener("touchend",u)}}),[t,r]),o.current}(i,[w,m,v],(0,e.useCallback)((function(){k.current.state.isOpen&&u({type:ie,selectItem:!1})}),[u,k])),A=C;(0,e.useEffect)((function(){h||(b.current={})}),[h]),(0,e.useEffect)((function(){var e;h&&null!=i&&i.document&&null!=v&&null!=(e=v.current)&&e.focus&&i.document.activeElement!==v.current&&v.current.focus()}),[h,i]);var N=(0,e.useMemo)((function(){return{ArrowDown:function(e){e.preventDefault(),u({type:X,altKey:e.altKey})},ArrowUp:function(e){e.preventDefault(),u({type:J,altKey:e.altKey})},Home:function(e){k.current.state.isOpen&&(e.preventDefault(),u({type:$}))},End:function(e){k.current.state.isOpen&&(e.preventDefault(),u({type:ee}))},Escape:function(e){var t=k.current.state;(t.isOpen||t.inputValue||t.selectedItem||t.highlightedIndex>-1)&&(e.preventDefault(),u({type:Q}))},Enter:function(e){k.current.state.isOpen&&229!==e.which&&(e.preventDefault(),u({type:re}))},PageUp:function(e){k.current.state.isOpen&&(e.preventDefault(),u({type:te}))},PageDown:function(e){k.current.state.isOpen&&(e.preventDefault(),u({type:ne}))}}}),[u,k]),G=(0,e.useCallback)((function(e){return d({id:x.labelId,htmlFor:x.inputId},e)}),[x]),H=(0,e.useCallback)((function(e,t){var n,r=void 0===e?{}:e,o=r.onMouseLeave,i=r.refKey,s=void 0===i?"ref":i,a=r.ref,l=c(r,pe),h=(void 0===t?{}:t).suppressRefError;return A("getMenuProps",void 0!==h&&h,s,m),d(((n={})[s]=R(a,(function(e){m.current=e})),n.id=x.menuId,n.role="listbox",n["aria-labelledby"]=l&&l["aria-label"]?void 0:""+x.labelId,n.onMouseLeave=E(o,(function(){u({type:11})})),n),l)}),[u,A,x]),W=(0,e.useCallback)((function(e){var t,n,r=void 0===e?{}:e,o=r.item,i=r.index,s=r.refKey,a=void 0===s?"ref":s,l=r.ref,h=r.onMouseMove,f=r.onMouseDown,g=r.onClick;r.onPress;var p=r.disabled,m=c(r,me);void 0!==p&&console.warn('Passing "disabled" as an argument to getItemProps is not supported anymore. Please use the isItemDisabled prop from useCombobox.');var v=k.current,w=v.props,y=v.state,C=function(e,t,n,r){var o,i;if(void 0===e){if(void 0===t)throw new Error(r);o=n[t],i=t}else i=void 0===t?n.indexOf(e):t,o=e;return[o,i]}(o,i,w.items,"Pass either item or index to getItemProps!"),S=C[0],O=C[1],I=w.isItemDisabled(S,O),M=g;return d(((t={})[a]=R(l,(function(e){e&&(b.current[x.getItemId(O)]=e)})),t["aria-disabled"]=I,t["aria-selected"]=O===y.highlightedIndex,t.id=x.getItemId(O),t.role="option",t),!I&&((n={}).onClick=E(M,(function(){u({type:ae,index:O})})),n),{onMouseMove:E(h,(function(){P.isTouchEnd||O===y.highlightedIndex||(D.current=!1,u({type:12,index:O,disabled:I}))})),onMouseDown:E(f,(function(e){return e.preventDefault()}))},m)}),[u,x,k,P,D]),q=(0,e.useCallback)((function(e){var t,n=void 0===e?{}:e,r=n.onClick;n.onPress;var o=n.refKey,i=void 0===o?"ref":o,s=n.ref,a=c(n,be),l=k.current.state;return d(((t={})[i]=R(s,(function(e){w.current=e})),t["aria-controls"]=x.menuId,t["aria-expanded"]=l.isOpen,t.id=x.toggleButtonId,t.tabIndex=-1,t),!a.disabled&&d({},{onClick:E(r,(function(){u({type:14})}))}),a)}),[u,k,x]),_=(0,e.useCallback)((function(e,t){var n,r=void 0===e?{}:e,o=r.onKeyDown,s=r.onChange,a=r.onInput,l=r.onBlur;r.onChangeText;var h=r.onClick,f=r.refKey,g=void 0===f?"ref":f,p=r.ref,m=c(r,ve),b=(void 0===t?{}:t).suppressRefError;A("getInputProps",void 0!==b&&b,g,v);var w,y=k.current.state,C={};return m.disabled||((w={}).onChange=E(s,a,(function(e){u({type:oe,inputValue:e.target.value})})),w.onKeyDown=E(o,(function(e){var t=function(e){var t=e.key,n=e.keyCode;return n>=37&&n<=40&&0!==t.indexOf("Arrow")?"Arrow"+t:t}(e);t&&N[t]&&N[t](e)})),w.onBlur=E(l,(function(e){if(null!=i&&i.document&&y.isOpen&&!P.isMouseDown){var t=null===e.relatedTarget&&i.document.activeElement!==i.document.body;u({type:ie,selectItem:!t})}})),w.onClick=E(h,(function(){u({type:se})})),C=w),d(((n={})[g]=R(p,(function(e){v.current=e})),n["aria-activedescendant"]=y.isOpen&&y.highlightedIndex>-1?x.getItemId(y.highlightedIndex):"",n["aria-autocomplete"]="list",n["aria-controls"]=x.menuId,n["aria-expanded"]=y.isOpen,n["aria-labelledby"]=m&&m["aria-label"]?void 0:x.labelId,n.autoComplete="off",n.id=x.inputId,n.role="combobox",n.value=y.inputValue,n),C,m)}),[u,x,i,N,k,P,A]),Z=(0,e.useCallback)((function(){u({type:15})}),[u]),ce=(0,e.useCallback)((function(){u({type:17})}),[u]),ye=(0,e.useCallback)((function(){u({type:16})}),[u]),Ce=(0,e.useCallback)((function(e){u({type:18,highlightedIndex:e})}),[u]),xe=(0,e.useCallback)((function(e){u({type:le,selectedItem:e})}),[u]);return{getItemProps:W,getLabelProps:G,getMenuProps:H,getInputProps:_,getToggleButtonProps:q,toggleMenu:Z,openMenu:ye,closeMenu:ce,setHighlightedIndex:Ce,setInputValue:(0,e.useCallback)((function(e){u({type:20,inputValue:e})}),[u]),selectItem:xe,reset:(0,e.useCallback)((function(){u({type:21})}),[u]),highlightedIndex:f,isOpen:h,selectedItem:g,inputValue:p}}we.stateChangeTypes=ce,f().array,f().array,f().array,f().func,f().number,f().number,f().number,f().func,f().func,f().string,f().string;const ye=window.ReactDOM;function Ce(e,t,n){let r,o=n.initialDeps??[];return()=>{var i,s,a,l;let u;n.key&&(null==(i=n.debug)?void 0:i.call(n))&&(u=Date.now());const c=e();if(c.length===o.length&&!c.some(((e,t)=>o[t]!==e)))return r;let d;if(o=c,n.key&&(null==(s=n.debug)?void 0:s.call(n))&&(d=Date.now()),r=t(...c),n.key&&(null==(a=n.debug)?void 0:a.call(n))){const e=Math.round(100*(Date.now()-u))/100,t=Math.round(100*(Date.now()-d))/100,r=t/16,o=(e,t)=>{for(e=String(e);e.length{let r;return function(...o){e.clearTimeout(r),r=e.setTimeout((()=>t.apply(this,o)),n)}},Ee=e=>e,Re=e=>{const t=Math.max(e.startIndex-e.overscan,0),n=Math.min(e.endIndex+e.overscan,e.count-1),r=[];for(let e=t;e<=n;e++)r.push(e);return r},Oe=(e,t)=>{const n=e.scrollElement;if(!n)return;const r=e.targetWindow;if(!r)return;const o=e=>{const{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(o(n.getBoundingClientRect()),!r.ResizeObserver)return()=>{};const i=new r.ResizeObserver((e=>{const t=e[0];if(null==t?void 0:t.borderBoxSize){const e=t.borderBoxSize[0];if(e)return void o({width:e.inlineSize,height:e.blockSize})}o(n.getBoundingClientRect())}));return i.observe(n,{box:"border-box"}),()=>{i.unobserve(n)}},Ie={passive:!0},ke="undefined"==typeof window||"onscrollend"in window,Me=(e,t)=>{const n=e.scrollElement;if(!n)return;const r=e.targetWindow;if(!r)return;let o=0;const i=ke?()=>{}:Se(r,(()=>{t(o,!1)}),e.options.isScrollingResetDelay),s=r=>()=>{o=n[e.options.horizontal?"scrollLeft":"scrollTop"],i(),t(o,r)},a=s(!0),l=s(!1);return l(),n.addEventListener("scroll",a,Ie),n.addEventListener("scrollend",l,Ie),()=>{n.removeEventListener("scroll",a),n.removeEventListener("scrollend",l)}},Fe=(e,t,n)=>{if(null==t?void 0:t.borderBoxSize){const e=t.borderBoxSize[0];if(e)return Math.round(e[n.options.horizontal?"inlineSize":"blockSize"])}return Math.round(e.getBoundingClientRect()[n.options.horizontal?"width":"height"])},De=(e,{adjustments:t=0,behavior:n},r)=>{var o,i;const s=e+t;null==(i=null==(o=r.scrollElement)?void 0:o.scrollTo)||i.call(o,{[r.options.horizontal?"left":"top"]:s,behavior:n})};class Pe{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollToIndexTimeoutId=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.pendingMeasuredCacheIndexes=[],this.scrollDirection=null,this.scrollAdjustments=0,this.measureElementCache=new Map,this.observer=(()=>{let e=null;const t=()=>e||(this.targetWindow&&this.targetWindow.ResizeObserver?e=new this.targetWindow.ResizeObserver((e=>{e.forEach((e=>{this._measureElement(e.target,e)}))})):null);return{disconnect:()=>{var e;return null==(e=t())?void 0:e.disconnect()},observe:e=>{var n;return null==(n=t())?void 0:n.observe(e,{box:"border-box"})},unobserve:e=>{var n;return null==(n=t())?void 0:n.unobserve(e)}}})(),this.range=null,this.setOptions=e=>{Object.entries(e).forEach((([t,n])=>{void 0===n&&delete e[t]})),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:Ee,rangeExtractor:Re,onChange:()=>{},measureElement:Fe,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,...e}},this.notify=(e,t)=>{var n,r;const{startIndex:o,endIndex:i}=this.range??{startIndex:void 0,endIndex:void 0},s=this.calculateRange();(e||o!==(null==s?void 0:s.startIndex)||i!==(null==s?void 0:s.endIndex))&&(null==(r=(n=this.options).onChange)||r.call(n,this,t))},this.cleanup=()=>{this.unsubs.filter(Boolean).forEach((e=>e())),this.unsubs=[],this.scrollElement=null},this._didMount=()=>(this.measureElementCache.forEach(this.observer.observe),()=>{this.observer.disconnect(),this.cleanup()}),this._willUpdate=()=>{var e;const t=this.options.getScrollElement();this.scrollElement!==t&&(this.cleanup(),this.scrollElement=t,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=(null==(e=this.scrollElement)?void 0:e.window)??null,this._scrollToOffset(this.scrollOffset,{adjustments:void 0,behavior:void 0}),this.unsubs.push(this.options.observeElementRect(this,(e=>{this.scrollRect=e,this.notify(!1,!1)}))),this.unsubs.push(this.options.observeElementOffset(this,((e,t)=>{this.scrollAdjustments=0,this.scrollDirection=t?this.scrollOffsetthis.scrollRect[this.options.horizontal?"width":"height"],this.getMeasurementOptions=Ce((()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey]),((e,t,n,r)=>(this.pendingMeasuredCacheIndexes=[],{count:e,paddingStart:t,scrollMargin:n,getItemKey:r})),{key:!1}),this.getFurthestMeasurement=(e,t)=>{const n=new Map,r=new Map;for(let o=t-1;o>=0;o--){const t=e[o];if(n.has(t.lane))continue;const i=r.get(t.lane);if(null==i||t.end>i.end?r.set(t.lane,t):t.ende.end===t.end?e.index-t.index:e.end-t.end))[0]:void 0},this.getMeasurements=Ce((()=>[this.getMeasurementOptions(),this.itemSizeCache]),(({count:e,paddingStart:t,scrollMargin:n,getItemKey:r},o)=>{const i=this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[];const s=this.measurementsCache.slice(0,i);for(let a=i;athis.options.debug}),this.calculateRange=Ce((()=>[this.getMeasurements(),this.getSize(),this.scrollOffset]),((e,t,n)=>this.range=e.length>0&&t>0?function({measurements:e,outerSize:t,scrollOffset:n}){const r=e.length-1,o=Ae(0,r,(t=>e[t].start),n);let i=o;for(;ithis.options.debug}),this.getIndexes=Ce((()=>[this.options.rangeExtractor,this.calculateRange(),this.options.overscan,this.options.count]),((e,t,n,r)=>null===t?[]:e({startIndex:t.startIndex,endIndex:t.endIndex,overscan:n,count:r})),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{const t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this._measureElement=(e,t)=>{const n=this.measurementsCache[this.indexFromElement(e)];if(!n||!e.isConnected)return void this.measureElementCache.forEach(((t,n)=>{t===e&&(this.observer.unobserve(e),this.measureElementCache.delete(n))}));const r=this.measureElementCache.get(n.key);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.measureElementCache.set(n.key,e));const o=this.options.measureElement(e,t,this);this.resizeItem(n,o)},this.resizeItem=(e,t)=>{const n=t-(this.itemSizeCache.get(e.key)??e.size);0!==n&&((void 0!==this.shouldAdjustScrollPositionOnItemSizeChange?this.shouldAdjustScrollPositionOnItemSizeChange(e,n,this):e.start{e&&this._measureElement(e,void 0)},this.getVirtualItems=Ce((()=>[this.getIndexes(),this.getMeasurements()]),((e,t)=>{const n=[];for(let r=0,o=e.length;rthis.options.debug}),this.getVirtualItemForOffset=e=>{const t=this.getMeasurements();return xe(t[Ae(0,t.length-1,(e=>xe(t[e]).start),e)])},this.getOffsetForAlignment=(e,t)=>{const n=this.getSize();"auto"===t&&(t=e<=this.scrollOffset?"start":e>=this.scrollOffset+n?"end":"start"),"start"===t||("end"===t?e-=n:"center"===t&&(e-=n/2));const r=this.options.horizontal?"scrollWidth":"scrollHeight",o=(this.scrollElement?"document"in this.scrollElement?this.scrollElement.document.documentElement[r]:this.scrollElement[r]:0)-this.getSize();return Math.max(Math.min(o,e),0)},this.getOffsetForIndex=(e,t="auto")=>{e=Math.max(0,Math.min(e,this.options.count-1));const n=xe(this.getMeasurements()[e]);if("auto"===t)if(n.end>=this.scrollOffset+this.getSize()-this.options.scrollPaddingEnd)t="end";else{if(!(n.start<=this.scrollOffset+this.options.scrollPaddingStart))return[this.scrollOffset,t];t="start"}const r="end"===t?n.end+this.options.scrollPaddingEnd:n.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(r,t),t]},this.isDynamicMode=()=>this.measureElementCache.size>0,this.cancelScrollToIndex=()=>{null!==this.scrollToIndexTimeoutId&&this.targetWindow&&(this.targetWindow.clearTimeout(this.scrollToIndexTimeoutId),this.scrollToIndexTimeoutId=null)},this.scrollToOffset=(e,{align:t="start",behavior:n}={})=>{this.cancelScrollToIndex(),"smooth"===n&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getOffsetForAlignment(e,t),{adjustments:void 0,behavior:n})},this.scrollToIndex=(e,{align:t="auto",behavior:n}={})=>{e=Math.max(0,Math.min(e,this.options.count-1)),this.cancelScrollToIndex(),"smooth"===n&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size.");const[r,o]=this.getOffsetForIndex(e,t);this._scrollToOffset(r,{adjustments:void 0,behavior:n}),"smooth"!==n&&this.isDynamicMode()&&this.targetWindow&&(this.scrollToIndexTimeoutId=this.targetWindow.setTimeout((()=>{if(this.scrollToIndexTimeoutId=null,this.measureElementCache.has(this.options.getItemKey(e))){const[t]=this.getOffsetForIndex(e,o);((e,t)=>Math.abs(e-t)<1)(t,this.scrollOffset)||this.scrollToIndex(e,{align:o,behavior:n})}else this.scrollToIndex(e,{align:o,behavior:n})})))},this.scrollBy=(e,{behavior:t}={})=>{this.cancelScrollToIndex(),"smooth"===t&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.scrollOffset+e,{adjustments:void 0,behavior:t})},this.getTotalSize=()=>{var e;const t=this.getMeasurements();let n;return n=0===t.length?this.options.paddingStart:1===this.options.lanes?(null==(e=t[t.length-1])?void 0:e.end)??0:Math.max(...t.slice(-this.options.lanes).map((e=>e.end))),n-this.options.scrollMargin+this.options.paddingEnd},this._scrollToOffset=(e,{adjustments:t,behavior:n})=>{this.options.scrollToFn(e,{behavior:n,adjustments:t},this)},this.measure=()=>{var e,t;this.itemSizeCache=new Map,null==(t=(e=this.options).onChange)||t.call(e,this,!1)},this.setOptions(e),this.scrollRect=this.options.initialRect,this.scrollOffset="function"==typeof this.options.initialOffset?this.options.initialOffset():this.options.initialOffset,this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach((e=>{this.itemSizeCache.set(e.key,e.size)})),this.notify(!1,!1)}}const Ae=(e,t,n,r)=>{for(;e<=t;){const o=(e+t)/2|0,i=n(o);if(ir))return o;t=o-1}}return e>0?e-1:0},Ve="undefined"!=typeof document?e.useLayoutEffect:e.useEffect;function Te(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t""===t||e.value.includes(t)||e.label.includes(t))},R){const[O,I]=(0,o.useState)(n),[k,M]=(0,o.useState)(w),F=(0,o.useRef)(null);(0,o.useEffect)((()=>{I(n)}),[n]),(0,o.useEffect)((()=>{M(w),w||H("")}),[w]);const D=function(t){return function(t){const n=e.useReducer((()=>({})),{})[1],r={...t,onChange:(e,r)=>{var o;r?(0,ye.flushSync)(n):n(),null==(o=t.onChange)||o.call(t,e,r)}},[o]=e.useState((()=>new Pe(r)));return o.setOptions(r),e.useEffect((()=>o._didMount()),[]),Ve((()=>o._willUpdate())),o}({observeElementRect:Oe,observeElementOffset:Me,scrollToFn:De,...t})}({count:O.length,getScrollElement:()=>F.current,estimateSize:(0,o.useCallback)((()=>33),[]),onChange:c}),P=(0,o.useMemo)((()=>{const e={initialInputValue:h,items:O,selectedItem:k,onInputValueChange({inputValue:e}){I(n.filter((t=>E(t,e)))),r&&r(e)},onSelectedItemChange({selectedItem:e}){M(e),e||H(""),a&&a(e,H,M)},itemToString:e=>e?e["label"===v?m:b]||e:""};return x&&(e.onHighlightedIndexChange=({highlightedIndex:e,type:t})=>{t!==we.stateChangeTypes.MenuMouseLeave&&D.scrollToIndex(e)}),e}),[x,k,O,h,E,r,a,n,m,b,v]),{isOpen:A,getToggleButtonProps:V,getLabelProps:T,getMenuProps:L,getInputProps:N,highlightedIndex:z,getItemProps:B,inputValue:G,setInputValue:H}=we(P);(0,o.useEffect)((()=>{H(h)}),[h]);const{id:U,...W}=T();return(0,e.createElement)(i.BaseControl,{id:U,label:t,help:p,...W,className:"gb-autocomplete"},(0,e.createElement)(e.Fragment,null,d&&(0,e.createElement)("div",{className:"gb-icon"},(0,e.createElement)(i.Tooltip,{text:d},(0,e.createElement)("div",null,(0,e.createElement)(i.Icon,{icon:u})))),(0,e.createElement)("div",{className:Le(Ne.control,x&&"is-virtualized",f)},(0,e.createElement)("div",{className:Ne.wrapper},y&&y({inputValue:G,items:O,setSelectedItem:M,setInputValue:H}),(0,e.createElement)("div",{className:Ne.inputWrapper},(0,e.createElement)("input",{placeholder:g,className:Le(Ne.input,S&&Ne.showClear),type:"text",...N({ref:R,value:G})}),S&&G&&(0,e.createElement)(i.Button,{className:Ne.clear,icon:ze,label:(0,s.__)("Clear","generateblocks-pro"),onClick:()=>{l&&l(),M(""),H("")}}),(0,e.createElement)("button",{"aria-label":(0,s.__)("toggle menu","generateblocks-pro"),className:Ne.toggle,type:"button",...V()},(0,e.createElement)("svg",{className:Ne.arrow,viewBox:"0 0 20 20",width:"20",height:"20",xmlns:"http://www.w3.org/2000/svg"},(0,e.createElement)("path",{transform:A?"rotate(180)":void 0,d:"M5 6l5 5 5-5 2 1-7 7-7-7 2-1z",fill:"#555",style:{transformOrigin:"center"}})))),C&&C({inputValue:G,items:O,setSelectedItem:M,setInputValue:H})),(0,e.createElement)("ul",{...L({ref:F,className:Le(Ne.menu,!(A&&O.length)&&Ne.hidden)})},x?(0,e.createElement)(e.Fragment,null,(0,e.createElement)("li",{key:"total-size",style:{height:D.getTotalSize(),marginBottom:0}}),D.getVirtualItems().map((({index:t,size:n,start:r})=>{const o=O[t],i=o[m]||o.value||o;return(0,e.createElement)("li",{className:Le(z===t&&Ne.focused,k===o&&Ne.selected,Ne.option),key:`${i}${t}`,...B({index:t,item:o}),style:{position:"absolute",top:0,left:0,width:"100%",height:n,transform:`translateY(${r}px)`}},(0,e.createElement)("span",null,i))}))):A&&O.map(((t,n)=>{const r=t[m]||t.value||t;return(0,e.createElement)("li",{className:Le(z===n&&Ne.focused,k===t&&Ne.selected,Ne.option),key:`${t}${n}`,...B({item:t,index:n})},(0,e.createElement)("span",null,r))}))))))})),Ge={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};let He;const Ue=new Uint8Array(16);function We(){if(!He&&(He="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!He))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return He(Ue)}const je=[];for(let e=0;e<256;++e)je.push((e+256).toString(16).slice(1));const qe=function(e,t,n){if(Ge.randomUUID&&!t&&!e)return Ge.randomUUID();const r=(e=e||{}).random||(e.rng||We)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,t){n=n||0;for(let e=0;e<16;++e)t[n+e]=r[e];return t}return function(e,t=0){return je[e[t+0]]+je[e[t+1]]+je[e[t+2]]+je[e[t+3]]+"-"+je[e[t+4]]+je[e[t+5]]+"-"+je[e[t+6]]+je[e[t+7]]+"-"+je[e[t+8]]+je[e[t+9]]+"-"+je[e[t+10]]+je[e[t+11]]+je[e[t+12]]+je[e[t+13]]+je[e[t+14]]+je[e[t+15]]}(r)},Ke=(0,o.forwardRef)((function({id:t,label:n,value:r,checked:i,onChange:a,indeterminate:l,"aria-label":u,className:c,...d},h){const f=t||qe(),g=(0,o.useRef)(),p=h||g;if((0,o.useLayoutEffect)((()=>{p.current&&(p.current.indeterminate=l)}),[p.current]),!u&&!n)throw new Error((0,s.__)("Checkbox must have an accessible label","generateblocks-pro"));return(0,e.createElement)("div",{className:"components-checkbox-control gb-checkbox"},(0,e.createElement)("span",{className:"components-checkbox-control__input-container"},(0,e.createElement)("input",{type:"checkbox",className:Le("components-checkbox-control__input",c),id:f,checked:i,onChange:a,value:r,"aria-label":u,ref:p,...d}),l&&!i&&(0,e.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"24",height:"24",role:"presentation",className:"components-checkbox-control__indeterminate","aria-hidden":"true",focusable:"false"},(0,e.createElement)("path",{d:"M7 11.5h10V13H7z"})),i&&(0,e.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"24",height:"24",role:"presentation",className:"components-checkbox-control__checked","aria-hidden":"true",focusable:"false"},(0,e.createElement)("path",{d:"M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z"}))),n&&(0,e.createElement)("label",{htmlFor:f,className:"components-checkbox-control__label"},n))})),Ye=window.wp.compose,_e=window.wp.blockEditor,Ze=window.wp.hooks;function Xe(){return(Xe=Object.assign||function(e){for(var t=1;t=0||(o[n]=e[n]);return o}function Qe(t){var n=(0,e.useRef)(t),r=(0,e.useRef)((function(e){n.current&&n.current(e)}));return n.current=t,r.current}var $e=function(e,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),e>n?n:e0:e.buttons>0)&&i.current?s(nt(i.current,e,l.current)):n(!1)},t=function(){return n(!1)};function n(n){var r=u.current,o=tt(i.current),s=n?o.addEventListener:o.removeEventListener;s(r?"touchmove":"mousemove",e),s(r?"touchend":"mouseup",t)}return[function(e){var t=e.nativeEvent,r=i.current;if(r&&(rt(t),!function(e,t){return t&&!et(e)}(t,u.current)&&r)){if(et(t)){u.current=!0;var o=t.changedTouches||[];o.length&&(l.current=o[0].identifier)}r.focus(),s(nt(r,t,l.current)),n(!0)}},function(e){var t=e.which||e.keyCode;t<37||t>40||(e.preventDefault(),a({left:39===t?.05:37===t?-.05:0,top:40===t?.05:38===t?-.05:0}))},n]}),[a,s]),d=c[0],h=c[1],f=c[2];return(0,e.useEffect)((function(){return f}),[f]),e.createElement("div",Xe({},o,{onTouchStart:d,onMouseDown:d,className:"react-colorful__interactive",ref:i,onKeyDown:h,tabIndex:0,role:"slider"}))})),it=function(e){return e.filter(Boolean).join(" ")},st=function(t){var n=t.color,r=t.left,o=t.top,i=void 0===o?.5:o,s=it(["react-colorful__pointer",t.className]);return e.createElement("div",{className:s,style:{top:100*i+"%",left:100*r+"%"}},e.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:n}}))},at=function(e,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*e)/n},lt=(Math.PI,function(e){var t=e.s,n=e.v,r=e.a,o=(200-t)*n/100;return{h:at(e.h),s:at(o>0&&o<200?t*n/100/(o<=100?o:200-o)*100:0),l:at(o/2),a:at(r,2)}}),ut=function(e){var t=lt(e);return"hsl("+t.h+", "+t.s+"%, "+t.l+"%)"},ct=function(e){var t=lt(e);return"hsla("+t.h+", "+t.s+"%, "+t.l+"%, "+t.a+")"},dt=function(e){var t=e.h,n=e.s,r=e.v,o=e.a;t=t/360*6,n/=100,r/=100;var i=Math.floor(t),s=r*(1-n),a=r*(1-(t-i)*n),l=r*(1-(1-t+i)*n),u=i%6;return{r:at(255*[r,a,s,s,l,r][u]),g:at(255*[l,r,r,a,s,s][u]),b:at(255*[s,s,l,r,r,a][u]),a:at(o,2)}},ht=function(e){var t=/rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return t?gt({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):{h:0,s:0,v:0,a:1}},ft=ht,gt=function(e){var t=e.r,n=e.g,r=e.b,o=e.a,i=Math.max(t,n,r),s=i-Math.min(t,n,r),a=s?i===t?(n-r)/s:i===n?2+(r-t)/s:4+(t-n)/s:0;return{h:at(60*(a<0?a+6:a)),s:at(i?s/i*100:0),v:at(i/255*100),a:o}},pt=e.memo((function(t){var n=t.hue,r=t.onChange,o=it(["react-colorful__hue",t.className]);return e.createElement("div",{className:o},e.createElement(ot,{onMove:function(e){r({h:360*e.left})},onKey:function(e){r({h:$e(n+360*e.left,0,360)})},"aria-label":"Hue","aria-valuenow":at(n),"aria-valuemax":"360","aria-valuemin":"0"},e.createElement(st,{className:"react-colorful__hue-pointer",left:n/360,color:ut({h:n,s:100,v:100,a:1})})))})),mt=e.memo((function(t){var n=t.hsva,r=t.onChange,o={backgroundColor:ut({h:n.h,s:100,v:100,a:1})};return e.createElement("div",{className:"react-colorful__saturation",style:o},e.createElement(ot,{onMove:function(e){r({s:100*e.left,v:100-100*e.top})},onKey:function(e){r({s:$e(n.s+100*e.left,0,100),v:$e(n.v-100*e.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+at(n.s)+"%, Brightness "+at(n.v)+"%"},e.createElement(st,{className:"react-colorful__saturation-pointer",top:1-n.v/100,left:n.s/100,color:ut(n)})))})),bt=function(e,t){return e.replace(/\s/g,"")===t.replace(/\s/g,"")};function vt(t,n,r){var o=Qe(r),i=(0,e.useState)((function(){return t.toHsva(n)})),s=i[0],a=i[1],l=(0,e.useRef)({color:n,hsva:s});(0,e.useEffect)((function(){if(!t.equal(n,l.current.color)){var e=t.toHsva(n);l.current={hsva:e,color:n},a(e)}}),[n,t]),(0,e.useEffect)((function(){var e;(function(e,t){if(e===t)return!0;for(var n in e)if(e[n]!==t[n])return!1;return!0})(s,l.current.hsva)||t.equal(e=t.fromHsva(s),l.current.color)||(l.current={hsva:s,color:e},o(e))}),[s,t,o]);var u=(0,e.useCallback)((function(e){a((function(t){return Object.assign({},t,e)}))}),[]);return[s,u]}var wt="undefined"!=typeof window?e.useLayoutEffect:e.useEffect,yt=new Map,Ct=function(e){wt((function(){var t=e.current?e.current.ownerDocument:document;if(void 0!==t&&!yt.has(t)){var r=t.createElement("style");r.innerHTML='.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url(\'data:image/svg+xml;charset=utf-8,\')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}',yt.set(t,r);var o=n.nc;o&&r.setAttribute("nonce",o),t.head.appendChild(r)}}),[])},xt=function(t){var n=t.className,r=t.colorModel,o=t.color,i=void 0===o?r.defaultColor:o,s=t.onChange,a=Je(t,["className","colorModel","color","onChange"]),l=(0,e.useRef)(null);Ct(l);var u=vt(r,i,s),c=u[0],d=u[1],h=it(["react-colorful",n]);return e.createElement("div",Xe({},a,{ref:l,className:h}),e.createElement(mt,{hsva:c,onChange:d}),e.createElement(pt,{hue:c.h,onChange:d,className:"react-colorful__last-control"}))},St=function(t){var n=t.className,r=t.hsva,o=t.onChange,i={backgroundImage:"linear-gradient(90deg, "+ct(Object.assign({},r,{a:0}))+", "+ct(Object.assign({},r,{a:1}))+")"},s=it(["react-colorful__alpha",n]),a=at(100*r.a);return e.createElement("div",{className:s},e.createElement("div",{className:"react-colorful__alpha-gradient",style:i}),e.createElement(ot,{onMove:function(e){o({a:e.left})},onKey:function(e){o({a:$e(r.a+e.left)})},"aria-label":"Alpha","aria-valuetext":a+"%","aria-valuenow":a,"aria-valuemin":"0","aria-valuemax":"100"},e.createElement(st,{className:"react-colorful__alpha-pointer",left:r.a,color:ct(r)})))},Et=function(t){var n=t.className,r=t.colorModel,o=t.color,i=void 0===o?r.defaultColor:o,s=t.onChange,a=Je(t,["className","colorModel","color","onChange"]),l=(0,e.useRef)(null);Ct(l);var u=vt(r,i,s),c=u[0],d=u[1],h=it(["react-colorful",n]);return e.createElement("div",Xe({},a,{ref:l,className:h}),e.createElement(mt,{hsva:c,onChange:d}),e.createElement(pt,{hue:c.h,onChange:d}),e.createElement(St,{hsva:c,onChange:d,className:"react-colorful__last-control"}))},Rt={defaultColor:"rgba(0, 0, 0, 1)",toHsva:ht,fromHsva:function(e){var t=dt(e);return"rgba("+t.r+", "+t.g+", "+t.b+", "+t.a+")"},equal:bt},Ot=function(t){return e.createElement(Et,Xe({},t,{colorModel:Rt}))},It={defaultColor:"rgb(0, 0, 0)",toHsva:ft,fromHsva:function(e){var t=dt(e);return"rgb("+t.r+", "+t.g+", "+t.b+")"},equal:bt},kt=function(t){return e.createElement(xt,Xe({},t,{colorModel:It}))},Mt={grad:.9,turn:360,rad:360/(2*Math.PI)},Ft=function(e){return"string"==typeof e?e.length>0:"number"==typeof e},Dt=function(e,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*e)/n+0},Pt=function(e,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),e>n?n:e>t?e:t},At=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},Vt=function(e){return{r:Pt(e.r,0,255),g:Pt(e.g,0,255),b:Pt(e.b,0,255),a:Pt(e.a)}},Tt=function(e){return{r:Dt(e.r),g:Dt(e.g),b:Dt(e.b),a:Dt(e.a,3)}},Lt=/^#([0-9a-f]{3,8})$/i,Nt=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},zt=function(e){var t=e.r,n=e.g,r=e.b,o=e.a,i=Math.max(t,n,r),s=i-Math.min(t,n,r),a=s?i===t?(n-r)/s:i===n?2+(r-t)/s:4+(t-n)/s:0;return{h:60*(a<0?a+6:a),s:i?s/i*100:0,v:i/255*100,a:o}},Bt=function(e){var t=e.h,n=e.s,r=e.v,o=e.a;t=t/360*6,n/=100,r/=100;var i=Math.floor(t),s=r*(1-n),a=r*(1-(t-i)*n),l=r*(1-(1-t+i)*n),u=i%6;return{r:255*[r,a,s,s,l,r][u],g:255*[l,r,r,a,s,s][u],b:255*[s,s,l,r,r,a][u],a:o}},Gt=function(e){return{h:At(e.h),s:Pt(e.s,0,100),l:Pt(e.l,0,100),a:Pt(e.a)}},Ht=function(e){return{h:Dt(e.h),s:Dt(e.s),l:Dt(e.l),a:Dt(e.a,3)}},Ut=function(e){return Bt((n=(t=e).s,{h:t.h,s:(n*=((r=t.l)<50?r:100-r)/100)>0?2*n/(r+n)*100:0,v:r+n,a:t.a}));var t,n,r},Wt=function(e){return{h:(t=zt(e)).h,s:(o=(200-(n=t.s))*(r=t.v)/100)>0&&o<200?n*r/100/(o<=100?o:200-o)*100:0,l:o/2,a:t.a};var t,n,r,o},jt=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,qt=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Kt=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,Yt=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,_t={string:[[function(e){var t=Lt.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:4===e.length?Dt(parseInt(e[3]+e[3],16)/255,2):1}:6===e.length||8===e.length?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:8===e.length?Dt(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=Kt.exec(e)||Yt.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:Vt({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(e){var t=jt.exec(e)||qt.exec(e);if(!t)return null;var n,r,o=Gt({h:(n=t[1],r=t[2],void 0===r&&(r="deg"),Number(n)*(Mt[r]||1)),s:Number(t[3]),l:Number(t[4]),a:void 0===t[5]?1:Number(t[5])/(t[6]?100:1)});return Ut(o)},"hsl"]],object:[[function(e){var t=e.r,n=e.g,r=e.b,o=e.a,i=void 0===o?1:o;return Ft(t)&&Ft(n)&&Ft(r)?Vt({r:Number(t),g:Number(n),b:Number(r),a:Number(i)}):null},"rgb"],[function(e){var t=e.h,n=e.s,r=e.l,o=e.a,i=void 0===o?1:o;if(!Ft(t)||!Ft(n)||!Ft(r))return null;var s=Gt({h:Number(t),s:Number(n),l:Number(r),a:Number(i)});return Ut(s)},"hsl"],[function(e){var t=e.h,n=e.s,r=e.v,o=e.a,i=void 0===o?1:o;if(!Ft(t)||!Ft(n)||!Ft(r))return null;var s=function(e){return{h:At(e.h),s:Pt(e.s,0,100),v:Pt(e.v,0,100),a:Pt(e.a)}}({h:Number(t),s:Number(n),v:Number(r),a:Number(i)});return Bt(s)},"hsv"]]},Zt=function(e,t){for(var n=0;n=.5},e.prototype.toHex=function(){return t=(e=Tt(this.rgba)).r,n=e.g,r=e.b,i=(o=e.a)<1?Nt(Dt(255*o)):"","#"+Nt(t)+Nt(n)+Nt(r)+i;var e,t,n,r,o,i},e.prototype.toRgb=function(){return Tt(this.rgba)},e.prototype.toRgbString=function(){return t=(e=Tt(this.rgba)).r,n=e.g,r=e.b,(o=e.a)<1?"rgba("+t+", "+n+", "+r+", "+o+")":"rgb("+t+", "+n+", "+r+")";var e,t,n,r,o},e.prototype.toHsl=function(){return Ht(Wt(this.rgba))},e.prototype.toHslString=function(){return t=(e=Ht(Wt(this.rgba))).h,n=e.s,r=e.l,(o=e.a)<1?"hsla("+t+", "+n+"%, "+r+"%, "+o+")":"hsl("+t+", "+n+"%, "+r+"%)";var e,t,n,r,o},e.prototype.toHsv=function(){return e=zt(this.rgba),{h:Dt(e.h),s:Dt(e.s),v:Dt(e.v),a:Dt(e.a,3)};var e},e.prototype.invert=function(){return en({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},e.prototype.saturate=function(e){return void 0===e&&(e=.1),en(Xt(this.rgba,e))},e.prototype.desaturate=function(e){return void 0===e&&(e=.1),en(Xt(this.rgba,-e))},e.prototype.grayscale=function(){return en(Xt(this.rgba,-1))},e.prototype.lighten=function(e){return void 0===e&&(e=.1),en(Qt(this.rgba,e))},e.prototype.darken=function(e){return void 0===e&&(e=.1),en(Qt(this.rgba,-e))},e.prototype.rotate=function(e){return void 0===e&&(e=15),this.hue(this.hue()+e)},e.prototype.alpha=function(e){return"number"==typeof e?en({r:(t=this.rgba).r,g:t.g,b:t.b,a:e}):Dt(this.rgba.a,3);var t},e.prototype.hue=function(e){var t=Wt(this.rgba);return"number"==typeof e?en({h:e,s:t.s,l:t.l,a:t.a}):Dt(t.h)},e.prototype.isEqual=function(e){return this.toHex()===en(e).toHex()},e}(),en=function(e){return e instanceof $t?e:new $t(e)};const tn={control:"Uy2rTDWqjs4vgNH0aeBm",toggleButton:"qLXIpwst_CtGTtmsg3mN",toggleIndicator:"UVmA1eywUsKVQzLMDooq",content:"eTonGpRD1VuB2tbLNegK",inputWrapper:"nc5TMqH__oA5bcPGTm0D",input:"_ubMuvqZvhc0awiEVNAL",clear:"f5wwshdAOOkfChALEoo2",palette:"OhNX_C7EMJcWKe5tqpKQ",opacity:"mos6VIbAjooq2LMyKr88"},nn="gb-color-picker-palettes";function rn(e){return{...e,color:`var(--wp--preset--color--${e.slug}, ${e.color})`}}function on(t){const{value:n,onChange:r,label:a,tooltip:l,"aria-label":u,colors:c,renderToggle:d,onClick:h,onOpacityChange:f,valueOpacity:g=1}=t,[p,m]=(0,o.useState)(n||""),b=(0,o.useRef)(null),v=1!==g?kt:Ot,w=(0,o.useMemo)((()=>(e=>{if(String(e).startsWith("var(")){const t=e.match(/\(([^)]+)\)/);if(t){const n=getComputedStyle(document.documentElement).getPropertyValue(t[1]);n&&(e=n)}}return en(e).toRgbString()})(n)),[n]),y=(0,Ye.useDebounce)(r,100);(0,o.useEffect)((()=>{n!==p&&m(n)}),[n]),(0,o.useEffect)((()=>{n!==p&&y(p);const e=setTimeout((()=>{b.current&&b.current.focus()}),10);return()=>clearTimeout(e)}),[p]);const C=function(){const[e=[],t=[]]=(0,_e.useSettings)("color.palette.custom","color.palette.theme");return(0,o.useMemo)((()=>[...e.map(rn),...t.map(rn)]),[e,t])}(),x=(0,Ze.applyFilters)("generateblocks.components.colorPalettes",c||C,t,C);(0,o.useEffect)((()=>{sessionStorage.setItem(nn,JSON.stringify(x))}),[x]);const S=qe();return(0,e.createElement)(i.BaseControl,{id:S,label:a,className:Le("gb-color-picker",tn.control),"data-gb-control":"ColorPickerControl"},(0,e.createElement)(i.Dropdown,{className:tn.toggle,contentClassName:tn.content,placement:"top left",renderToggle:({isOpen:t,onToggle:r})=>{if(d)return d({isOpen:t,onToggle:r});const o=(0,e.createElement)(i.Button,{className:tn.toggleButton,onClick:()=>{r(),h&&h()},"aria-expanded":t,"aria-label":u},(0,e.createElement)("span",{className:tn.toggleIndicator,style:{background:n?(s=n,a=g,s?(a||0===a)&&1!==a&&s.startsWith("#")?en(s).alpha(a).toRgbString():s:""):null}}));var s,a;return(0,e.createElement)(e.Fragment,null,l?(0,e.createElement)(i.Tooltip,{text:l},o):o)},renderContent:()=>{const t=sessionStorage.getItem(nn),r=sessionStorage?JSON.parse(t):x;return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(v,{color:w,onChange:e=>{en(e).isValid()&&(e=1===en(e).alpha()?en(e).toHex():e),m(e)}}),(0,e.createElement)("div",{className:tn.inputWrapper},(0,e.createElement)(i.TextControl,{ref:b,className:tn.input,type:"text",value:p,onChange:e=>{!e.startsWith("#")&&/^([0-9A-F]{3}){1,2}$/i.test(e)&&(e="#"+e),m(e)},onBlur:()=>{en(n).isValid()&&1===en(n).alpha()&&m(en(n).toHex())}}),(0,e.createElement)(i.Button,{size:"small",variant:"secondary",className:tn.clear,onClick:()=>{m(""),1!==g&&f(1)}},(0,s.__)("Clear","generateblocks"))),1!==g&&(0,e.createElement)("div",{className:tn.opacity},(0,e.createElement)(i.RangeControl,{label:(0,s.__)("Opacity","generateblocks"),value:g||0,onChange:e=>f(e),min:0,max:1,step:.01,initialPosition:1})),(0,e.createElement)(i.BaseControl,{className:tn.palette},(0,e.createElement)(_e.ColorPalette,{colors:r,value:n||"",onChange:e=>{m(e)},disableCustomColors:!0,clearable:!1})))}}))}const sn="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement;function an(e){const t=Object.prototype.toString.call(e);return"[object Window]"===t||"[object global]"===t}function ln(e){return"nodeType"in e}function un(e){var t,n;return e?an(e)?e:ln(e)&&null!=(t=null==(n=e.ownerDocument)?void 0:n.defaultView)?t:window:window}function cn(e){const{Document:t}=un(e);return e instanceof t}function dn(e){return!an(e)&&e instanceof un(e).HTMLElement}function hn(e){return e instanceof un(e).SVGElement}function fn(e){return e?an(e)?e.document:ln(e)?cn(e)?e:dn(e)||hn(e)?e.ownerDocument:document:document:document}const gn=sn?e.useLayoutEffect:e.useEffect;function pn(t){const n=(0,e.useRef)(t);return gn((()=>{n.current=t})),(0,e.useCallback)((function(){for(var e=arguments.length,t=new Array(e),r=0;r{r.current!==t&&(r.current=t)}),n),r}function bn(t,n){const r=(0,e.useRef)();return(0,e.useMemo)((()=>{const e=t(r.current);return r.current=e,e}),[...n])}function vn(t){const n=pn(t),r=(0,e.useRef)(null),o=(0,e.useCallback)((e=>{e!==r.current&&(null==n||n(e,r.current)),r.current=e}),[]);return[r,o]}function wn(t){const n=(0,e.useRef)();return(0,e.useEffect)((()=>{n.current=t}),[t]),n.current}let yn={};function Cn(t,n){return(0,e.useMemo)((()=>{if(n)return n;const e=null==yn[t]?0:yn[t]+1;return yn[t]=e,t+"-"+e}),[t,n])}function xn(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o{const r=Object.entries(n);for(const[n,o]of r){const r=t[n];null!=r&&(t[n]=r+e*o)}return t}),{...t})}}const Sn=xn(1),En=xn(-1);function Rn(e){if(!e)return!1;const{KeyboardEvent:t}=un(e.target);return t&&e instanceof t}function On(e){if(function(e){if(!e)return!1;const{TouchEvent:t}=un(e.target);return t&&e instanceof t}(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return function(e){return"clientX"in e&&"clientY"in e}(e)?{x:e.clientX,y:e.clientY}:null}const In=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[In.Translate.toString(e),In.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),kn="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function Mn(e){return e.matches(kn)?e:e.querySelector(kn)}const Fn={display:"none"};function Dn(e){let{id:n,value:r}=e;return t().createElement("div",{id:n,style:Fn},r)}function Pn(e){let{id:n,announcement:r,ariaLiveType:o="assertive"}=e;return t().createElement("div",{id:n,style:{position:"fixed",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"},role:"status","aria-live":o,"aria-atomic":!0},r)}const An=(0,e.createContext)(null),Vn={draggable:"\n To pick up a draggable item, press the space bar.\n While dragging, use the arrow keys to move the item.\n Press space again to drop the item in its new position, or press escape to cancel.\n "},Tn={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was moved over droppable area "+n.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was dropped over droppable area "+n.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function Ln(n){let{announcements:r=Tn,container:o,hiddenTextDescribedById:i,screenReaderInstructions:s=Vn}=n;const{announce:a,announcement:l}=function(){const[t,n]=(0,e.useState)("");return{announce:(0,e.useCallback)((e=>{null!=e&&n(e)}),[]),announcement:t}}(),u=Cn("DndLiveRegion"),[c,d]=(0,e.useState)(!1);if((0,e.useEffect)((()=>{d(!0)}),[]),function(t){const n=(0,e.useContext)(An);(0,e.useEffect)((()=>{if(!n)throw new Error("useDndMonitor must be used within a children of ");return n(t)}),[t,n])}((0,e.useMemo)((()=>({onDragStart(e){let{active:t}=e;a(r.onDragStart({active:t}))},onDragMove(e){let{active:t,over:n}=e;r.onDragMove&&a(r.onDragMove({active:t,over:n}))},onDragOver(e){let{active:t,over:n}=e;a(r.onDragOver({active:t,over:n}))},onDragEnd(e){let{active:t,over:n}=e;a(r.onDragEnd({active:t,over:n}))},onDragCancel(e){let{active:t,over:n}=e;a(r.onDragCancel({active:t,over:n}))}})),[a,r])),!c)return null;const h=t().createElement(t().Fragment,null,t().createElement(Dn,{id:i,value:s.draggable}),t().createElement(Pn,{id:u,announcement:l}));return o?(0,ye.createPortal)(h,o):h}var Nn;function zn(){}function Bn(t,n){return(0,e.useMemo)((()=>({sensor:t,options:null!=n?n:{}})),[t,n])}function Gn(){for(var t=arguments.length,n=new Array(t),r=0;r[...n].filter((e=>null!=e))),[...n])}!function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"}(Nn||(Nn={}));const Hn=Object.freeze({x:0,y:0});function Un(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function Wn(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function jn(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function qn(e){let{left:t,top:n,height:r,width:o}=e;return[{x:t,y:n},{x:t+o,y:n},{x:t,y:n+r},{x:t+o,y:n+r}]}function Kn(e,t){if(!e||0===e.length)return null;const[n]=e;return t?n[t]:n}function Yn(e,t,n){return void 0===t&&(t=e.left),void 0===n&&(n=e.top),{x:t+.5*e.width,y:n+.5*e.height}}const Zn=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const o=Yn(t,t.left,t.top),i=[];for(const e of r){const{id:t}=e,r=n.get(t);if(r){const n=Un(Yn(r),o);i.push({id:t,data:{droppableContainer:e,value:n}})}}return i.sort(Wn)};function Xn(e,t){const n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),o=Math.min(t.left+t.width,e.left+e.width),i=Math.min(t.top+t.height,e.top+e.height),s=o-r,a=i-n;if(r{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const o=[];for(const e of r){const{id:r}=e,i=n.get(r);if(i){const n=Xn(i,t);n>0&&o.push({id:r,data:{droppableContainer:e,value:n}})}}return o.sort(jn)};function Qn(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:Hn}function $n(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o({...t,top:t.top+e*n.y,bottom:t.bottom+e*n.y,left:t.left+e*n.x,right:t.right+e*n.x})),{...t})}}const er=$n(1);const tr={ignoreTransform:!1};function nr(e,t){void 0===t&&(t=tr);let n=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:t,transformOrigin:r}=un(e).getComputedStyle(e);t&&(n=function(e,t,n){const r=function(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}(t);if(!r)return e;const{scaleX:o,scaleY:i,x:s,y:a}=r,l=e.left-s-(1-o)*parseFloat(n),u=e.top-a-(1-i)*parseFloat(n.slice(n.indexOf(" ")+1)),c=o?e.width/o:e.width,d=i?e.height/i:e.height;return{width:c,height:d,top:u,right:l+c,bottom:u+d,left:l}}(n,t,r))}const{top:r,left:o,width:i,height:s,bottom:a,right:l}=n;return{top:r,left:o,width:i,height:s,bottom:a,right:l}}function rr(e){return nr(e,{ignoreTransform:!0})}function or(e,t){const n=[];return e?function r(o){if(null!=t&&n.length>=t)return n;if(!o)return n;if(cn(o)&&null!=o.scrollingElement&&!n.includes(o.scrollingElement))return n.push(o.scrollingElement),n;if(!dn(o)||hn(o))return n;if(n.includes(o))return n;const i=un(e).getComputedStyle(o);return o!==e&&function(e,t){void 0===t&&(t=un(e).getComputedStyle(e));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some((e=>{const r=t[e];return"string"==typeof r&&n.test(r)}))}(o,i)&&n.push(o),function(e,t){return void 0===t&&(t=un(e).getComputedStyle(e)),"fixed"===t.position}(o,i)?n:r(o.parentNode)}(e):n}function ir(e){const[t]=or(e,1);return null!=t?t:null}function sr(e){return sn&&e?an(e)?e:ln(e)?cn(e)||e===fn(e).scrollingElement?window:dn(e)?e:null:null:null}function ar(e){return an(e)?e.scrollX:e.scrollLeft}function lr(e){return an(e)?e.scrollY:e.scrollTop}function ur(e){return{x:ar(e),y:lr(e)}}var cr;function dr(e){return!(!sn||!e)&&e===document.scrollingElement}function hr(e){const t={x:0,y:0},n=dr(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height};return{isTop:e.scrollTop<=t.y,isLeft:e.scrollLeft<=t.x,isBottom:e.scrollTop>=r.y,isRight:e.scrollLeft>=r.x,maxScroll:r,minScroll:t}}!function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"}(cr||(cr={}));const fr={x:.2,y:.2};function gr(e,t,n,r,o){let{top:i,left:s,right:a,bottom:l}=n;void 0===r&&(r=10),void 0===o&&(o=fr);const{isTop:u,isBottom:c,isLeft:d,isRight:h}=hr(e),f={x:0,y:0},g={x:0,y:0},p=t.height*o.y,m=t.width*o.x;return!u&&i<=t.top+p?(f.y=cr.Backward,g.y=r*Math.abs((t.top+p-i)/p)):!c&&l>=t.bottom-p&&(f.y=cr.Forward,g.y=r*Math.abs((t.bottom-p-l)/p)),!h&&a>=t.right-m?(f.x=cr.Forward,g.x=r*Math.abs((t.right-m-a)/m)):!d&&s<=t.left+m&&(f.x=cr.Backward,g.x=r*Math.abs((t.left+m-s)/m)),{direction:f,speed:g}}function pr(e){if(e===document.scrollingElement){const{innerWidth:e,innerHeight:t}=window;return{top:0,left:0,right:e,bottom:t,width:e,height:t}}const{top:t,left:n,right:r,bottom:o}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:o,width:e.clientWidth,height:e.clientHeight}}function mr(e){return e.reduce(((e,t)=>Sn(e,ur(t))),Hn)}const br=[["x",["left","right"],function(e){return e.reduce(((e,t)=>e+ar(t)),0)}],["y",["top","bottom"],function(e){return e.reduce(((e,t)=>e+lr(t)),0)}]];class vr{constructor(e,t){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const n=or(t),r=mr(n);this.rect={...e},this.width=e.width,this.height=e.height;for(const[e,t,o]of br)for(const i of t)Object.defineProperty(this,i,{get:()=>{const t=o(n),s=r[e]-t;return this.rect[i]+s},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class wr{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach((e=>{var t;return null==(t=this.target)?void 0:t.removeEventListener(...e)}))},this.target=e}add(e,t,n){var r;null==(r=this.target)||r.addEventListener(e,t,n),this.listeners.push([e,t,n])}}function yr(e,t){const n=Math.abs(e.x),r=Math.abs(e.y);return"number"==typeof t?Math.sqrt(n**2+r**2)>t:"x"in t&&"y"in t?n>t.x&&r>t.y:"x"in t?n>t.x:"y"in t&&r>t.y}var Cr,xr;function Sr(e){e.preventDefault()}function Er(e){e.stopPropagation()}!function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"}(Cr||(Cr={})),function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter"}(xr||(xr={}));const Rr={start:[xr.Space,xr.Enter],cancel:[xr.Esc],end:[xr.Space,xr.Enter]},Or=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case xr.Right:return{...n,x:n.x+25};case xr.Left:return{...n,x:n.x-25};case xr.Down:return{...n,y:n.y+25};case xr.Up:return{...n,y:n.y-25}}};class Ir{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;const{event:{target:t}}=e;this.props=e,this.listeners=new wr(fn(t)),this.windowListeners=new wr(un(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(Cr.Resize,this.handleCancel),this.windowListeners.add(Cr.VisibilityChange,this.handleCancel),setTimeout((()=>this.listeners.add(Cr.Keydown,this.handleKeyDown)))}handleStart(){const{activeNode:e,onStart:t}=this.props,n=e.node.current;n&&function(e,t){if(void 0===t&&(t=nr),!e)return;const{top:n,left:r,bottom:o,right:i}=t(e);ir(e)&&(o<=0||i<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}(n),t(Hn)}handleKeyDown(e){if(Rn(e)){const{active:t,context:n,options:r}=this.props,{keyboardCodes:o=Rr,coordinateGetter:i=Or,scrollBehavior:s="smooth"}=r,{code:a}=e;if(o.end.includes(a))return void this.handleEnd(e);if(o.cancel.includes(a))return void this.handleCancel(e);const{collisionRect:l}=n.current,u=l?{x:l.left,y:l.top}:Hn;this.referenceCoordinates||(this.referenceCoordinates=u);const c=i(e,{active:t,context:n.current,currentCoordinates:u});if(c){const t=En(c,u),r={x:0,y:0},{scrollableAncestors:o}=n.current;for(const n of o){const o=e.code,{isTop:i,isRight:a,isLeft:l,isBottom:u,maxScroll:d,minScroll:h}=hr(n),f=pr(n),g={x:Math.min(o===xr.Right?f.right-f.width/2:f.right,Math.max(o===xr.Right?f.left:f.left+f.width/2,c.x)),y:Math.min(o===xr.Down?f.bottom-f.height/2:f.bottom,Math.max(o===xr.Down?f.top:f.top+f.height/2,c.y))},p=o===xr.Right&&!a||o===xr.Left&&!l,m=o===xr.Down&&!u||o===xr.Up&&!i;if(p&&g.x!==c.x){const e=n.scrollLeft+t.x,i=o===xr.Right&&e<=d.x||o===xr.Left&&e>=h.x;if(i&&!t.y)return void n.scrollTo({left:e,behavior:s});r.x=i?n.scrollLeft-e:o===xr.Right?n.scrollLeft-d.x:n.scrollLeft-h.x,r.x&&n.scrollBy({left:-r.x,behavior:s});break}if(m&&g.y!==c.y){const e=n.scrollTop+t.y,i=o===xr.Down&&e<=d.y||o===xr.Up&&e>=h.y;if(i&&!t.x)return void n.scrollTo({top:e,behavior:s});r.y=i?n.scrollTop-e:o===xr.Down?n.scrollTop-d.y:n.scrollTop-h.y,r.y&&n.scrollBy({top:-r.y,behavior:s});break}}this.handleMove(e,Sn(En(c,this.referenceCoordinates),r))}}}handleMove(e,t){const{onMove:n}=this.props;e.preventDefault(),n(t)}handleEnd(e){const{onEnd:t}=this.props;e.preventDefault(),this.detach(),t()}handleCancel(e){const{onCancel:t}=this.props;e.preventDefault(),this.detach(),t()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}function kr(e){return Boolean(e&&"distance"in e)}function Mr(e){return Boolean(e&&"delay"in e)}Ir.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:r=Rr,onActivation:o}=t,{active:i}=n;const{code:s}=e.nativeEvent;if(r.start.includes(s)){const t=i.activatorNode.current;return!(t&&e.target!==t||(e.preventDefault(),null==o||o({event:e.nativeEvent}),0))}return!1}}];class Fr{constructor(e,t,n){var r;void 0===n&&(n=function(e){const{EventTarget:t}=un(e);return e instanceof t?e:fn(e)}(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=t;const{event:o}=e,{target:i}=o;this.props=e,this.events=t,this.document=fn(i),this.documentListeners=new wr(this.document),this.listeners=new wr(n),this.windowListeners=new wr(un(i)),this.initialCoordinates=null!=(r=On(o))?r:Hn,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:e,props:{options:{activationConstraint:t,bypassActivationConstraint:n}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),this.windowListeners.add(Cr.Resize,this.handleCancel),this.windowListeners.add(Cr.DragStart,Sr),this.windowListeners.add(Cr.VisibilityChange,this.handleCancel),this.windowListeners.add(Cr.ContextMenu,Sr),this.documentListeners.add(Cr.Keydown,this.handleKeydown),t){if(null!=n&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(Mr(t))return void(this.timeoutId=setTimeout(this.handleStart,t.delay));if(kr(t))return}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),null!==this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handleStart(){const{initialCoordinates:e}=this,{onStart:t}=this.props;e&&(this.activated=!0,this.documentListeners.add(Cr.Click,Er,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(Cr.SelectionChange,this.removeTextSelection),t(e))}handleMove(e){var t;const{activated:n,initialCoordinates:r,props:o}=this,{onMove:i,options:{activationConstraint:s}}=o;if(!r)return;const a=null!=(t=On(e))?t:Hn,l=En(r,a);if(!n&&s){if(kr(s)){if(null!=s.tolerance&&yr(l,s.tolerance))return this.handleCancel();if(yr(l,s.distance))return this.handleStart()}return Mr(s)&&yr(l,s.tolerance)?this.handleCancel():void 0}e.cancelable&&e.preventDefault(),i(a)}handleEnd(){const{onEnd:e}=this.props;this.detach(),e()}handleCancel(){const{onCancel:e}=this.props;this.detach(),e()}handleKeydown(e){e.code===xr.Esc&&this.handleCancel()}removeTextSelection(){var e;null==(e=this.document.getSelection())||e.removeAllRanges()}}const Dr={move:{name:"pointermove"},end:{name:"pointerup"}};class Pr extends Fr{constructor(e){const{event:t}=e,n=fn(t.target);super(e,Dr,n)}}Pr.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!(!n.isPrimary||0!==n.button||(null==r||r({event:n}),0))}}];const Ar={move:{name:"mousemove"},end:{name:"mouseup"}};var Vr;!function(e){e[e.RightClick=2]="RightClick"}(Vr||(Vr={})),class extends Fr{constructor(e){super(e,Ar,fn(e.event.target))}}.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button!==Vr.RightClick&&(null==r||r({event:n}),!0)}}];const Tr={move:{name:"touchmove"},end:{name:"touchend"}};var Lr,Nr;(class extends Fr{constructor(e){super(e,Tr)}static setup(){return window.addEventListener(Tr.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(Tr.move.name,e)};function e(){}}}).activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;const{touches:o}=n;return!(o.length>1||(null==r||r({event:n}),0))}}],function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"}(Lr||(Lr={})),function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"}(Nr||(Nr={}));const zr={x:{[cr.Backward]:!1,[cr.Forward]:!1},y:{[cr.Backward]:!1,[cr.Forward]:!1}};var Br,Gr;!function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"}(Br||(Br={})),function(e){e.Optimized="optimized"}(Gr||(Gr={}));const Hr=new Map;function Ur(e,t){return bn((n=>e?n||("function"==typeof t?t(e):e):null),[t,e])}function Wr(t){let{callback:n,disabled:r}=t;const o=pn(n),i=(0,e.useMemo)((()=>{if(r||"undefined"==typeof window||void 0===window.ResizeObserver)return;const{ResizeObserver:e}=window;return new e(o)}),[r]);return(0,e.useEffect)((()=>()=>null==i?void 0:i.disconnect()),[i]),i}function jr(e){return new vr(nr(e),e)}function qr(t,n,r){void 0===n&&(n=jr);const[o,i]=(0,e.useReducer)((function(e){if(!t)return null;var o;if(!1===t.isConnected)return null!=(o=null!=e?e:r)?o:null;const i=n(t);return JSON.stringify(e)===JSON.stringify(i)?e:i}),null),s=function(t){let{callback:n,disabled:r}=t;const o=pn(n),i=(0,e.useMemo)((()=>{if(r||"undefined"==typeof window||void 0===window.MutationObserver)return;const{MutationObserver:e}=window;return new e(o)}),[o,r]);return(0,e.useEffect)((()=>()=>null==i?void 0:i.disconnect()),[i]),i}({callback(e){if(t)for(const n of e){const{type:e,target:r}=n;if("childList"===e&&r instanceof HTMLElement&&r.contains(t)){i();break}}}}),a=Wr({callback:i});return gn((()=>{i(),t?(null==a||a.observe(t),null==s||s.observe(document.body,{childList:!0,subtree:!0})):(null==a||a.disconnect(),null==s||s.disconnect())}),[t]),o}const Kr=[];function Yr(t,n){void 0===n&&(n=[]);const r=(0,e.useRef)(null);return(0,e.useEffect)((()=>{r.current=null}),n),(0,e.useEffect)((()=>{const e=t!==Hn;e&&!r.current&&(r.current=t),!e&&r.current&&(r.current=null)}),[t]),r.current?En(t,r.current):Hn}function _r(t){return(0,e.useMemo)((()=>t?function(e){const t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}(t):null),[t])}const Zr=[];const Xr=[{sensor:Pr,options:{}},{sensor:Ir,options:{}}],Jr={current:{}},Qr={draggable:{measure:rr},droppable:{measure:rr,strategy:Br.WhileDragging,frequency:Gr.Optimized},dragOverlay:{measure:nr}};class $r extends Map{get(e){var t;return null!=e&&null!=(t=super.get(e))?t:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter((e=>{let{disabled:t}=e;return!t}))}getNodeFor(e){var t,n;return null!=(t=null==(n=this.get(e))?void 0:n.node.current)?t:void 0}}const eo={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new $r,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:zn},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:Qr,measureDroppableContainers:zn,windowRect:null,measuringScheduled:!1},to={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:zn,draggableNodes:new Map,over:null,measureDroppableContainers:zn},no=(0,e.createContext)(to),ro=(0,e.createContext)(eo);function oo(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new $r}}}function io(e,t){switch(t.type){case Nn.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case Nn.DragMove:return e.draggable.active?{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}}:e;case Nn.DragEnd:case Nn.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case Nn.RegisterDroppable:{const{element:n}=t,{id:r}=n,o=new $r(e.droppable.containers);return o.set(r,n),{...e,droppable:{...e.droppable,containers:o}}}case Nn.SetDroppableDisabled:{const{id:n,key:r,disabled:o}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;const s=new $r(e.droppable.containers);return s.set(n,{...i,disabled:o}),{...e,droppable:{...e.droppable,containers:s}}}case Nn.UnregisterDroppable:{const{id:n,key:r}=t,o=e.droppable.containers.get(n);if(!o||r!==o.key)return e;const i=new $r(e.droppable.containers);return i.delete(n),{...e,droppable:{...e.droppable,containers:i}}}default:return e}}function so(t){let{disabled:n}=t;const{active:r,activatorEvent:o,draggableNodes:i}=(0,e.useContext)(no),s=wn(o),a=wn(null==r?void 0:r.id);return(0,e.useEffect)((()=>{if(!n&&!o&&s&&null!=a){if(!Rn(s))return;if(document.activeElement===s.target)return;const e=i.get(a);if(!e)return;const{activatorNode:t,node:n}=e;if(!t.current&&!n.current)return;requestAnimationFrame((()=>{for(const e of[t.current,n.current]){if(!e)continue;const t=Mn(e);if(t){t.focus();break}}}))}}),[o,n,i,a,s]),null}const ao=(0,e.createContext)({...Hn,scaleX:1,scaleY:1});var lo;!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"}(lo||(lo={}));const uo=(0,e.memo)((function(n){var r,o,i,s;let{id:a,accessibility:l,autoScroll:u=!0,children:c,sensors:d=Xr,collisionDetection:h=Jn,measuring:f,modifiers:g,...p}=n;const m=(0,e.useReducer)(io,void 0,oo),[b,v]=m,[w,y]=function(){const[t]=(0,e.useState)((()=>new Set)),n=(0,e.useCallback)((e=>(t.add(e),()=>t.delete(e))),[t]);return[(0,e.useCallback)((e=>{let{type:n,event:r}=e;t.forEach((e=>{var t;return null==(t=e[n])?void 0:t.call(e,r)}))}),[t]),n]}(),[C,x]=(0,e.useState)(lo.Uninitialized),S=C===lo.Initialized,{draggable:{active:E,nodes:R,translate:O},droppable:{containers:I}}=b,k=E?R.get(E):null,M=(0,e.useRef)({initial:null,translated:null}),F=(0,e.useMemo)((()=>{var e;return null!=E?{id:E,data:null!=(e=null==k?void 0:k.data)?e:Jr,rect:M}:null}),[E,k]),D=(0,e.useRef)(null),[P,A]=(0,e.useState)(null),[V,T]=(0,e.useState)(null),L=mn(p,Object.values(p)),N=Cn("DndDescribedBy",a),z=(0,e.useMemo)((()=>I.getEnabled()),[I]),B=(G=f,(0,e.useMemo)((()=>({draggable:{...Qr.draggable,...null==G?void 0:G.draggable},droppable:{...Qr.droppable,...null==G?void 0:G.droppable},dragOverlay:{...Qr.dragOverlay,...null==G?void 0:G.dragOverlay}})),[null==G?void 0:G.draggable,null==G?void 0:G.droppable,null==G?void 0:G.dragOverlay]));var G;const{droppableRects:H,measureDroppableContainers:U,measuringScheduled:W}=function(t,n){let{dragging:r,dependencies:o,config:i}=n;const[s,a]=(0,e.useState)(null),{frequency:l,measure:u,strategy:c}=i,d=(0,e.useRef)(t),h=function(){switch(c){case Br.Always:return!1;case Br.BeforeDragging:return r;default:return!r}}(),f=mn(h),g=(0,e.useCallback)((function(e){void 0===e&&(e=[]),f.current||a((t=>null===t?e:t.concat(e.filter((e=>!t.includes(e))))))}),[f]),p=(0,e.useRef)(null),m=bn((e=>{if(h&&!r)return Hr;if(!e||e===Hr||d.current!==t||null!=s){const e=new Map;for(let n of t){if(!n)continue;if(s&&s.length>0&&!s.includes(n.id)&&n.rect.current){e.set(n.id,n.rect.current);continue}const t=n.node.current,r=t?new vr(u(t),t):null;n.rect.current=r,r&&e.set(n.id,r)}return e}return e}),[t,s,r,h,u]);return(0,e.useEffect)((()=>{d.current=t}),[t]),(0,e.useEffect)((()=>{h||g()}),[r,h]),(0,e.useEffect)((()=>{s&&s.length>0&&a(null)}),[JSON.stringify(s)]),(0,e.useEffect)((()=>{h||"number"!=typeof l||null!==p.current||(p.current=setTimeout((()=>{g(),p.current=null}),l))}),[l,h,g,...o]),{droppableRects:m,measureDroppableContainers:g,measuringScheduled:null!=s}}(z,{dragging:S,dependencies:[O.x,O.y],config:B.droppable}),j=function(e,t){const n=null!==t?e.get(t):void 0,r=n?n.node.current:null;return bn((e=>{var n;return null===t?null:null!=(n=null!=r?r:e)?n:null}),[r,t])}(R,E),q=(0,e.useMemo)((()=>V?On(V):null),[V]),K=function(){const e=!1===(null==P?void 0:P.autoScrollEnabled),t="object"==typeof u?!1===u.enabled:!1===u,n=S&&!e&&!t;return"object"==typeof u?{...u,enabled:n}:{enabled:n}}(),Y=function(e,t){return Ur(e,t)}(j,B.draggable.measure);!function(t){let{activeNode:n,measure:r,initialRect:o,config:i=!0}=t;const s=(0,e.useRef)(!1),{x:a,y:l}="boolean"==typeof i?{x:i,y:i}:i;gn((()=>{if(!a&&!l||!n)return void(s.current=!1);if(s.current||!o)return;const e=null==n?void 0:n.node.current;if(!e||!1===e.isConnected)return;const t=Qn(r(e),o);if(a||(t.x=0),l||(t.y=0),s.current=!0,Math.abs(t.x)>0||Math.abs(t.y)>0){const n=ir(e);n&&n.scrollBy({top:t.y,left:t.x})}}),[n,a,l,o,r])}({activeNode:E?R.get(E):null,config:K.layoutShiftCompensation,initialRect:Y,measure:B.draggable.measure});const _=qr(j,B.draggable.measure,Y),Z=qr(j?j.parentElement:null),X=(0,e.useRef)({activatorEvent:null,active:null,activeNode:j,collisionRect:null,collisions:null,droppableRects:H,draggableNodes:R,draggingNode:null,draggingNodeRect:null,droppableContainers:I,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),J=I.getNodeFor(null==(r=X.current.over)?void 0:r.id),Q=function(t){let{measure:n}=t;const[r,o]=(0,e.useState)(null),i=Wr({callback:(0,e.useCallback)((e=>{for(const{target:t}of e)if(dn(t)){o((e=>{const r=n(t);return e?{...e,width:r.width,height:r.height}:r}));break}}),[n])}),s=(0,e.useCallback)((e=>{const t=function(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return dn(t)?t:e}(e);null==i||i.disconnect(),t&&(null==i||i.observe(t)),o(t?n(t):null)}),[n,i]),[a,l]=vn(s);return(0,e.useMemo)((()=>({nodeRef:a,rect:r,setRef:l})),[r,a,l])}({measure:B.dragOverlay.measure}),$=null!=(o=Q.nodeRef.current)?o:j,ee=S?null!=(i=Q.rect)?i:_:null,te=Boolean(Q.nodeRef.current&&Q.rect),ne=Qn(re=te?null:_,Ur(re));var re;const oe=_r($?un($):null),ie=function(t){const n=(0,e.useRef)(t),r=bn((e=>t?e&&e!==Kr&&t&&n.current&&t.parentNode===n.current.parentNode?e:or(t):Kr),[t]);return(0,e.useEffect)((()=>{n.current=t}),[t]),r}(S?null!=J?J:j:null),se=function(t,n){void 0===n&&(n=nr);const[r]=t,o=_r(r?un(r):null),[i,s]=(0,e.useReducer)((function(){return t.length?t.map((e=>dr(e)?o:new vr(n(e),e))):Zr}),Zr),a=Wr({callback:s});return t.length>0&&i===Zr&&s(),gn((()=>{t.length?t.forEach((e=>null==a?void 0:a.observe(e))):(null==a||a.disconnect(),s())}),[t]),i}(ie),ae=function(e,t){let{transform:n,...r}=t;return null!=e&&e.length?e.reduce(((e,t)=>t({transform:e,...r})),n):n}(g,{transform:{x:O.x-ne.x,y:O.y-ne.y,scaleX:1,scaleY:1},activatorEvent:V,active:F,activeNodeRect:_,containerNodeRect:Z,draggingNodeRect:ee,over:X.current.over,overlayNodeRect:Q.rect,scrollableAncestors:ie,scrollableAncestorRects:se,windowRect:oe}),le=q?Sn(q,O):null,ue=function(t){const[n,r]=(0,e.useState)(null),o=(0,e.useRef)(t),i=(0,e.useCallback)((e=>{const t=sr(e.target);t&&r((e=>e?(e.set(t,ur(t)),new Map(e)):null))}),[]);return(0,e.useEffect)((()=>{const e=o.current;if(t!==e){n(e);const s=t.map((e=>{const t=sr(e);return t?(t.addEventListener("scroll",i,{passive:!0}),[t,ur(t)]):null})).filter((e=>null!=e));r(s.length?new Map(s):null),o.current=t}return()=>{n(t),n(e)};function n(e){e.forEach((e=>{const t=sr(e);null==t||t.removeEventListener("scroll",i)}))}}),[i,t]),(0,e.useMemo)((()=>t.length?n?Array.from(n.values()).reduce(((e,t)=>Sn(e,t)),Hn):mr(t):Hn),[t,n])}(ie),ce=Yr(ue),de=Yr(ue,[_]),he=Sn(ae,ce),fe=ee?er(ee,ae):null,ge=F&&fe?h({active:F,collisionRect:fe,droppableRects:H,droppableContainers:z,pointerCoordinates:le}):null,pe=Kn(ge,"id"),[me,be]=(0,e.useState)(null),ve=function(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}(te?ae:Sn(ae,de),null!=(s=null==me?void 0:me.rect)?s:null,_),we=(0,e.useCallback)(((e,t)=>{let{sensor:n,options:r}=t;if(null==D.current)return;const o=R.get(D.current);if(!o)return;const i=e.nativeEvent,s=new n({active:D.current,activeNode:o,event:i,options:r,context:X,onStart(e){const t=D.current;if(null==t)return;const n=R.get(t);if(!n)return;const{onDragStart:r}=L.current,o={active:{id:t,data:n.data,rect:M}};(0,ye.unstable_batchedUpdates)((()=>{null==r||r(o),x(lo.Initializing),v({type:Nn.DragStart,initialCoordinates:e,active:t}),w({type:"onDragStart",event:o})}))},onMove(e){v({type:Nn.DragMove,coordinates:e})},onEnd:a(Nn.DragEnd),onCancel:a(Nn.DragCancel)});function a(e){return async function(){const{active:t,collisions:n,over:r,scrollAdjustedTranslate:o}=X.current;let s=null;if(t&&o){const{cancelDrop:a}=L.current;s={activatorEvent:i,active:t,collisions:n,delta:o,over:r},e===Nn.DragEnd&&"function"==typeof a&&await Promise.resolve(a(s))&&(e=Nn.DragCancel)}D.current=null,(0,ye.unstable_batchedUpdates)((()=>{v({type:e}),x(lo.Uninitialized),be(null),A(null),T(null);const t=e===Nn.DragEnd?"onDragEnd":"onDragCancel";if(s){const e=L.current[t];null==e||e(s),w({type:t,event:s})}}))}}(0,ye.unstable_batchedUpdates)((()=>{A(s),T(e.nativeEvent)}))}),[R]),Ce=(0,e.useCallback)(((e,t)=>(n,r)=>{const o=n.nativeEvent,i=R.get(r);if(null!==D.current||!i||o.dndKit||o.defaultPrevented)return;const s={active:i};!0===e(n,t.options,s)&&(o.dndKit={capturedBy:t.sensor},D.current=r,we(n,t))}),[R,we]),xe=function(t,n){return(0,e.useMemo)((()=>t.reduce(((e,t)=>{const{sensor:r}=t;return[...e,...r.activators.map((e=>({eventName:e.eventName,handler:n(e.handler,t)})))]}),[])),[t,n])}(d,Ce);!function(t){(0,e.useEffect)((()=>{if(!sn)return;const e=t.map((e=>{let{sensor:t}=e;return null==t.setup?void 0:t.setup()}));return()=>{for(const t of e)null==t||t()}}),t.map((e=>{let{sensor:t}=e;return t})))}(d),gn((()=>{_&&C===lo.Initializing&&x(lo.Initialized)}),[_,C]),(0,e.useEffect)((()=>{const{onDragMove:e}=L.current,{active:t,activatorEvent:n,collisions:r,over:o}=X.current;if(!t||!n)return;const i={active:t,activatorEvent:n,collisions:r,delta:{x:he.x,y:he.y},over:o};(0,ye.unstable_batchedUpdates)((()=>{null==e||e(i),w({type:"onDragMove",event:i})}))}),[he.x,he.y]),(0,e.useEffect)((()=>{const{active:e,activatorEvent:t,collisions:n,droppableContainers:r,scrollAdjustedTranslate:o}=X.current;if(!e||null==D.current||!t||!o)return;const{onDragOver:i}=L.current,s=r.get(pe),a=s&&s.rect.current?{id:s.id,rect:s.rect.current,data:s.data,disabled:s.disabled}:null,l={active:e,activatorEvent:t,collisions:n,delta:{x:o.x,y:o.y},over:a};(0,ye.unstable_batchedUpdates)((()=>{be(a),null==i||i(l),w({type:"onDragOver",event:l})}))}),[pe]),gn((()=>{X.current={activatorEvent:V,active:F,activeNode:j,collisionRect:fe,collisions:ge,droppableRects:H,draggableNodes:R,draggingNode:$,draggingNodeRect:ee,droppableContainers:I,over:me,scrollableAncestors:ie,scrollAdjustedTranslate:he},M.current={initial:ee,translated:fe}}),[F,j,ge,fe,R,$,ee,H,I,me,ie,he]),function(t){let{acceleration:n,activator:r=Lr.Pointer,canScroll:o,draggingRect:i,enabled:s,interval:a=5,order:l=Nr.TreeOrder,pointerCoordinates:u,scrollableAncestors:c,scrollableAncestorRects:d,delta:h,threshold:f}=t;const g=function(e){let{delta:t,disabled:n}=e;const r=wn(t);return bn((e=>{if(n||!r||!e)return zr;const o=Math.sign(t.x-r.x),i=Math.sign(t.y-r.y);return{x:{[cr.Backward]:e.x[cr.Backward]||-1===o,[cr.Forward]:e.x[cr.Forward]||1===o},y:{[cr.Backward]:e.y[cr.Backward]||-1===i,[cr.Forward]:e.y[cr.Forward]||1===i}}}),[n,t,r])}({delta:h,disabled:!s}),[p,m]=function(){const t=(0,e.useRef)(null);return[(0,e.useCallback)(((e,n)=>{t.current=setInterval(e,n)}),[]),(0,e.useCallback)((()=>{null!==t.current&&(clearInterval(t.current),t.current=null)}),[])]}(),b=(0,e.useRef)({x:0,y:0}),v=(0,e.useRef)({x:0,y:0}),w=(0,e.useMemo)((()=>{switch(r){case Lr.Pointer:return u?{top:u.y,bottom:u.y,left:u.x,right:u.x}:null;case Lr.DraggableRect:return i}}),[r,i,u]),y=(0,e.useRef)(null),C=(0,e.useCallback)((()=>{const e=y.current;if(!e)return;const t=b.current.x*v.current.x,n=b.current.y*v.current.y;e.scrollBy(t,n)}),[]),x=(0,e.useMemo)((()=>l===Nr.TreeOrder?[...c].reverse():c),[l,c]);(0,e.useEffect)((()=>{if(s&&c.length&&w){for(const e of x){if(!1===(null==o?void 0:o(e)))continue;const t=c.indexOf(e),r=d[t];if(!r)continue;const{direction:i,speed:s}=gr(e,r,w,n,f);for(const e of["x","y"])g[e][i[e]]||(s[e]=0,i[e]=0);if(s.x>0||s.y>0)return m(),y.current=e,p(C,a),b.current=s,void(v.current=i)}b.current={x:0,y:0},v.current={x:0,y:0},m()}else m()}),[n,C,o,m,s,a,JSON.stringify(w),JSON.stringify(g),p,c,x,d,JSON.stringify(f)])}({...K,delta:O,draggingRect:fe,pointerCoordinates:le,scrollableAncestors:ie,scrollableAncestorRects:se});const Se=(0,e.useMemo)((()=>({active:F,activeNode:j,activeNodeRect:_,activatorEvent:V,collisions:ge,containerNodeRect:Z,dragOverlay:Q,draggableNodes:R,droppableContainers:I,droppableRects:H,over:me,measureDroppableContainers:U,scrollableAncestors:ie,scrollableAncestorRects:se,measuringConfiguration:B,measuringScheduled:W,windowRect:oe})),[F,j,_,V,ge,Z,Q,R,I,H,me,U,ie,se,B,W,oe]),Ee=(0,e.useMemo)((()=>({activatorEvent:V,activators:xe,active:F,activeNodeRect:_,ariaDescribedById:{draggable:N},dispatch:v,draggableNodes:R,over:me,measureDroppableContainers:U})),[V,xe,F,_,v,N,R,me,U]);return t().createElement(An.Provider,{value:y},t().createElement(no.Provider,{value:Ee},t().createElement(ro.Provider,{value:Se},t().createElement(ao.Provider,{value:ve},c)),t().createElement(so,{disabled:!1===(null==l?void 0:l.restoreFocus)})),t().createElement(Ln,{...l,hiddenTextDescribedById:N}))})),co=(0,e.createContext)(null),ho="button",fo="Droppable";const go="Droppable",po={timeout:25};function mo(e,t,n){const r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function bo(e,t){return e.reduce(((e,n,r)=>{const o=t.get(n);return o&&(e[r]=o),e}),Array(e.length))}function vo(e){return null!==e&&e>=0}const wo=e=>{let{rects:t,activeIndex:n,overIndex:r,index:o}=e;const i=mo(t,r,n),s=t[o],a=i[o];return a&&s?{x:a.left-s.left,y:a.top-s.top,scaleX:a.width/s.width,scaleY:a.height/s.height}:null},yo={scaleX:1,scaleY:1},Co=e=>{var t;let{activeIndex:n,activeNodeRect:r,index:o,rects:i,overIndex:s}=e;const a=null!=(t=i[n])?t:r;if(!a)return null;if(o===n){const e=i[s];return e?{x:0,y:nn&&o<=s?{x:0,y:-a.height-l,...yo}:o=s?{x:0,y:a.height+l,...yo}:{x:0,y:0,...yo}},xo="Sortable",So=t().createContext({activeIndex:-1,containerId:xo,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:wo,disabled:{draggable:!1,droppable:!1}});function Eo(n){let{children:r,id:o,items:i,strategy:s=wo,disabled:a=!1}=n;const{active:l,dragOverlay:u,droppableRects:c,over:d,measureDroppableContainers:h}=(0,e.useContext)(ro),f=Cn(xo,o),g=Boolean(null!==u.rect),p=(0,e.useMemo)((()=>i.map((e=>"object"==typeof e&&"id"in e?e.id:e))),[i]),m=null!=l,b=l?p.indexOf(l.id):-1,v=d?p.indexOf(d.id):-1,w=(0,e.useRef)(p),y=!function(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n{y&&m&&h(p)}),[y,p,m,h]),(0,e.useEffect)((()=>{w.current=p}),[p]);const S=(0,e.useMemo)((()=>({activeIndex:b,containerId:f,disabled:x,disableTransforms:C,items:p,overIndex:v,useDragOverlay:g,sortedRects:bo(p,c),strategy:s})),[b,f,x.draggable,x.droppable,C,p,v,c,g,s]);return t().createElement(So.Provider,{value:S},r)}const Ro=e=>{let{id:t,items:n,activeIndex:r,overIndex:o}=e;return mo(n,r,o).indexOf(t)},Oo=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:o,items:i,newIndex:s,previousItems:a,previousContainerId:l,transition:u}=e;return!(!u||!r||a!==i&&o===s||!n&&(s===o||t!==l))},Io={duration:200,easing:"ease"},ko="transform",Mo=In.Transition.toString({property:ko,duration:0,easing:"linear"}),Fo={roleDescription:"sortable"};function Do(t){let{animateLayoutChanges:n=Oo,attributes:r,disabled:o,data:i,getNewIndex:s=Ro,id:a,strategy:l,resizeObserverConfig:u,transition:c=Io}=t;const{items:d,containerId:h,activeIndex:f,disabled:g,disableTransforms:p,sortedRects:m,overIndex:b,useDragOverlay:v,strategy:w}=(0,e.useContext)(So),y=function(e,t){var n,r;return"boolean"==typeof e?{draggable:e,droppable:!1}:{draggable:null!=(n=null==e?void 0:e.draggable)?n:t.draggable,droppable:null!=(r=null==e?void 0:e.droppable)?r:t.droppable}}(o,g),C=d.indexOf(a),x=(0,e.useMemo)((()=>({sortable:{containerId:h,index:C,items:d},...i})),[h,i,C,d]),S=(0,e.useMemo)((()=>d.slice(d.indexOf(a))),[d,a]),{rect:E,node:R,isOver:O,setNodeRef:I}=function(t){let{data:n,disabled:r=!1,id:o,resizeObserverConfig:i}=t;const s=Cn(go),{active:a,dispatch:l,over:u,measureDroppableContainers:c}=(0,e.useContext)(no),d=(0,e.useRef)({disabled:r}),h=(0,e.useRef)(!1),f=(0,e.useRef)(null),g=(0,e.useRef)(null),{disabled:p,updateMeasurementsFor:m,timeout:b}={...po,...i},v=mn(null!=m?m:o),w=Wr({callback:(0,e.useCallback)((()=>{h.current?(null!=g.current&&clearTimeout(g.current),g.current=setTimeout((()=>{c(Array.isArray(v.current)?v.current:[v.current]),g.current=null}),b)):h.current=!0}),[b]),disabled:p||!a}),y=(0,e.useCallback)(((e,t)=>{w&&(t&&(w.unobserve(t),h.current=!1),e&&w.observe(e))}),[w]),[C,x]=vn(y),S=mn(n);return(0,e.useEffect)((()=>{w&&C.current&&(w.disconnect(),h.current=!1,w.observe(C.current))}),[C,w]),gn((()=>(l({type:Nn.RegisterDroppable,element:{id:o,key:s,disabled:r,node:C,rect:f,data:S}}),()=>l({type:Nn.UnregisterDroppable,key:s,id:o}))),[o]),(0,e.useEffect)((()=>{r!==d.current.disabled&&(l({type:Nn.SetDroppableDisabled,id:o,key:s,disabled:r}),d.current.disabled=r)}),[o,s,r,l]),{active:a,rect:f,isOver:(null==u?void 0:u.id)===o,node:C,over:u,setNodeRef:x}}({id:a,data:x,disabled:y.droppable,resizeObserverConfig:{updateMeasurementsFor:S,...u}}),{active:k,activatorEvent:M,activeNodeRect:F,attributes:D,setNodeRef:P,listeners:A,isDragging:V,over:T,setActivatorNodeRef:L,transform:N}=function(t){let{id:n,data:r,disabled:o=!1,attributes:i}=t;const s=Cn(fo),{activators:a,activatorEvent:l,active:u,activeNodeRect:c,ariaDescribedById:d,draggableNodes:h,over:f}=(0,e.useContext)(no),{role:g=ho,roleDescription:p="draggable",tabIndex:m=0}=null!=i?i:{},b=(null==u?void 0:u.id)===n,v=(0,e.useContext)(b?ao:co),[w,y]=vn(),[C,x]=vn(),S=function(t,n){return(0,e.useMemo)((()=>t.reduce(((e,t)=>{let{eventName:r,handler:o}=t;return e[r]=e=>{o(e,n)},e}),{})),[t,n])}(a,n),E=mn(r);return gn((()=>(h.set(n,{id:n,key:s,node:w,activatorNode:C,data:E}),()=>{const e=h.get(n);e&&e.key===s&&h.delete(n)})),[h,n]),{active:u,activatorEvent:l,activeNodeRect:c,attributes:(0,e.useMemo)((()=>({role:g,tabIndex:m,"aria-disabled":o,"aria-pressed":!(!b||g!==ho)||void 0,"aria-roledescription":p,"aria-describedby":d.draggable})),[o,g,m,b,p,d.draggable]),isDragging:b,listeners:o?void 0:S,node:w,over:f,setNodeRef:y,setActivatorNodeRef:x,transform:v}}({id:a,data:x,attributes:{...Fo,...r},disabled:y.draggable}),z=function(){for(var t=arguments.length,n=new Array(t),r=0;re=>{n.forEach((t=>t(e)))}),n)}(I,P),B=Boolean(k),G=B&&!p&&vo(f)&&vo(b),H=!v&&V,U=H&&G?N:null,W=G?null!=U?U:(null!=l?l:w)({rects:m,activeNodeRect:F,activeIndex:f,overIndex:b,index:C}):null,j=vo(f)&&vo(b)?s({id:a,items:d,activeIndex:f,overIndex:b}):C,q=null==k?void 0:k.id,K=(0,e.useRef)({activeId:q,items:d,newIndex:j,containerId:h}),Y=d!==K.current.items,_=n({active:k,containerId:h,isDragging:V,isSorting:B,id:a,index:C,items:d,newIndex:K.current.newIndex,previousItems:K.current.items,previousContainerId:K.current.containerId,transition:c,wasDragging:null!=K.current.activeId}),Z=function(t){let{disabled:n,index:r,node:o,rect:i}=t;const[s,a]=(0,e.useState)(null),l=(0,e.useRef)(r);return gn((()=>{if(!n&&r!==l.current&&o.current){const e=i.current;if(e){const t=nr(o.current,{ignoreTransform:!0}),n={x:e.left-t.left,y:e.top-t.top,scaleX:e.width/t.width,scaleY:e.height/t.height};(n.x||n.y)&&a(n)}}r!==l.current&&(l.current=r)}),[n,r,o,i]),(0,e.useEffect)((()=>{s&&a(null)}),[s]),s}({disabled:!_,index:C,node:R,rect:E});return(0,e.useEffect)((()=>{B&&K.current.newIndex!==j&&(K.current.newIndex=j),h!==K.current.containerId&&(K.current.containerId=h),d!==K.current.items&&(K.current.items=d)}),[B,j,h,d]),(0,e.useEffect)((()=>{if(q===K.current.activeId)return;if(q&&!K.current.activeId)return void(K.current.activeId=q);const e=setTimeout((()=>{K.current.activeId=q}),50);return()=>clearTimeout(e)}),[q]),{active:k,activeIndex:f,attributes:D,data:x,rect:E,index:C,newIndex:j,items:d,isOver:O,isSorting:B,isDragging:V,listeners:A,node:R,overIndex:b,over:T,setNodeRef:z,setActivatorNodeRef:L,setDroppableNodeRef:I,setDraggableNodeRef:P,transform:null!=Z?Z:W,transition:Z||Y&&K.current.newIndex===C?Mo:H&&!Rn(M)||!c?void 0:B||_?In.Transition.toString({...c,property:ko}):void 0}}function Po(e){if(!e)return!1;const t=e.data.current;return!!(t&&"sortable"in t&&"object"==typeof t.sortable&&"containerId"in t.sortable&&"items"in t.sortable&&"index"in t.sortable)}const Ao=[xr.Down,xr.Right,xr.Up,xr.Left],Vo=(e,t)=>{let{context:{active:n,collisionRect:r,droppableRects:o,droppableContainers:i,over:s,scrollableAncestors:a}}=t;if(Ao.includes(e.code)){if(e.preventDefault(),!n||!r)return;const t=[];i.getEnabled().forEach((n=>{if(!n||null!=n&&n.disabled)return;const i=o.get(n.id);if(i)switch(e.code){case xr.Down:r.topi.top&&t.push(n);break;case xr.Left:r.left>i.left&&t.push(n);break;case xr.Right:r.left{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const o=qn(t),i=[];for(const e of r){const{id:t}=e,r=n.get(t);if(r){const n=qn(r),s=o.reduce(((e,t,r)=>e+Un(n[r],t)),0),a=Number((s/4).toFixed(4));i.push({id:t,data:{droppableContainer:e,value:a}})}}return i.sort(Wn)})({active:n,collisionRect:r,droppableRects:o,droppableContainers:t,pointerCoordinates:null});let u=Kn(l,"id");if(u===(null==s?void 0:s.id)&&l.length>1&&(u=l[1].id),null!=u){const e=i.get(n.id),t=i.get(u),s=t?o.get(t.id):null,l=null==t?void 0:t.node.current;if(l&&s&&e&&t){const n=or(l).some(((e,t)=>a[t]!==e)),o=To(e,t),i=function(e,t){return!(!Po(e)||!Po(t))&&!!To(e,t)&&e.data.current.sortable.index{let{containerNodeRect:t,draggingNodeRect:n,transform:r}=e;return n&&t?function(e,t,n){const r={...e};return t.top+e.y<=n.top?r.y=n.top-t.top:t.bottom+e.y>=n.top+n.height&&(r.y=n.top+n.height-t.bottom),t.left+e.x<=n.left?r.x=n.left-t.left:t.right+e.x>=n.left+n.width&&(r.x=n.left+n.width-t.right),r}(r,n,t):r},No=e=>{let{transform:t}=e;return{...t,x:0}},zo={list:"UFXv660XisMp2k7oIkOA",item:"cuno_GtO4bhcM59n00B2",handle:"fOOS92b6g0h9pAqn_2JI"},Bo=(0,e.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 256"},(0,e.createElement)("rect",{width:"256",height:"256",fill:"none"}),(0,e.createElement)("circle",{cx:"91",cy:"60",r:"16"}),(0,e.createElement)("circle",{cx:"91",cy:"128",r:"16"}),(0,e.createElement)("circle",{cx:"91",cy:"196",r:"16"}),(0,e.createElement)("circle",{cx:"161",cy:"60",r:"16"}),(0,e.createElement)("circle",{cx:"161",cy:"128",r:"16"}),(0,e.createElement)("circle",{cx:"161",cy:"196",r:"16"}));function Go({label:t,className:n="",...r}){return(0,e.createElement)(i.Button,{className:Le("gb-sortable-listitem__handle",zo.handle,n),variant:"tertiary",showTooltip:!1,icon:Bo,label:t,...r})}function Ho({children:t,id:n,dragHandle:r=!0,dragHandleLabel:o=(0,s.__)("Reorder Item","generateblocks"),as:i="li",className:a="",disabled:l=!1}){const{active:u,attributes:c,listeners:d,setNodeRef:h,transform:f,transition:g,isDragging:p}=Do({id:n,disabled:l,data:{disabled:l}}),m={transform:In.Transform.toString(f),transition:g};u&&u.id===n&&(m.zIndex=1);const b=i,v=r?{ref:h,style:m}:{ref:h,style:m,...c,...d};return(0,e.createElement)(b,{className:Le("gb-sortable-listitem",zo.item,a,p&&"is-dragging"),"data-component":"SortableListItem",...v},r&&(0,e.createElement)(Go,{label:o,...c,...d}),t)}const Uo=(0,o.forwardRef)((function({itemComponent:t,onDragStart:n,onDragEnd:r,items:i,setItems:a,dragHandle:l=!0,dragHandleLabel:u=(0,s.__)("Reorder Item","generateblocks-pro"),className:c=""},d){const[h,f]=(0,o.useState)(!1),[g,p]=(0,o.useState)(null),m=Gn(Bn(Pr),Bn(Ir,{coordinateGetter:Vo})),b=t,v=(0,o.useMemo)((()=>i.map((e=>(e.id||(e.id=qe()),e)))),[i]);return(0,e.createElement)(uo,{modifiers:[No,Lo],sensors:m,collisionDetection:Zn,onDragStart:e=>{const{active:t}=e;f(!0),p(t),n&&n(e)},onDragEnd:e=>{f(!1),function(e){var t;const{active:n,over:r}=e,o=null!==(t=r.data.current?.disabled)&&void 0!==t&&t;if(n.id!==r.id&&!o){const e=i.findIndex((e=>e.id===n.id)),t=i.findIndex((e=>e.id===r.id));a(mo(i,e,t))}}(e),p(null),r&&r(e,g)}},(0,e.createElement)("ul",{className:Le("gb-sortable-list",zo.list,c,h&&"is-dragging"),ref:d},(0,e.createElement)(Eo,{items:v,strategy:Co},i.map(((t,n)=>{var r;return(0,e.createElement)(Ho,{key:`${t.id}${n}`,id:t.id,dragHandle:l,dragHandleLabel:u,disabled:null!==(r=t.disabled)&&void 0!==r&&r},(0,e.createElement)(b,{item:t,index:n}))})))))})),Wo={flex:"rDe4XxEMyRee1hSKKXzn",horizontal:"Yg1nkwz9mFYMuk6zv1DW",flow:"b6i6J_7eUIspcsEZ3Qia",vertical:"dfG8sfdNVPzQp7pqgYJQ"};function jo({children:t,gap:n,layout:r="flow",direction:o="vertical",as:i="div",wrap:s=!0,className:a="",style:l={},...u}){const c=i,d={...l,"--gap":n};return"flex"===r&&(d.flexWrap=s?"wrap":"nowrap"),(0,e.createElement)(c,{...u,className:Le("gb-stack",Wo[o],Wo[r],a),style:d},t)}function qo(e,t){return"function"==typeof e?e(t):e}function Ko(e,t){return n=>{t.setState((t=>({...t,[e]:qo(n,t[e])})))}}function Yo(e){return e instanceof Function}function _o(e,t,n){let r,o=[];return i=>{let s;n.key&&n.debug&&(s=Date.now());const a=e(i);if(a.length===o.length&&!a.some(((e,t)=>o[t]!==e)))return r;let l;if(o=a,n.key&&n.debug&&(l=Date.now()),r=t(...a),null==n||null==n.onChange||n.onChange(r),n.key&&n.debug&&null!=n&&n.debug()){const e=Math.round(100*(Date.now()-s))/100,t=Math.round(100*(Date.now()-l))/100,r=t/16,o=(e,t)=>{for(e=String(e);e.length{var n;return null!=(n=null==e?void 0:e.debugAll)?n:e[t]},key:!1,onChange:r}}const Xo="debugHeaders";function Jo(e,t,n){var r;let o={id:null!=(r=n.id)?r:t.id,column:t,index:n.index,isPlaceholder:!!n.isPlaceholder,placeholderId:n.placeholderId,depth:n.depth,subHeaders:[],colSpan:0,rowSpan:0,headerGroup:null,getLeafHeaders:()=>{const e=[],t=n=>{n.subHeaders&&n.subHeaders.length&&n.subHeaders.map(t),e.push(n)};return t(o),e},getContext:()=>({table:e,header:o,column:t})};return e._features.forEach((t=>{null==t.createHeader||t.createHeader(o,e)})),o}const Qo={createTable:e=>{e.getHeaderGroups=_o((()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right]),((t,n,r,o)=>{var i,s;const a=null!=(i=null==r?void 0:r.map((e=>n.find((t=>t.id===e)))).filter(Boolean))?i:[],l=null!=(s=null==o?void 0:o.map((e=>n.find((t=>t.id===e)))).filter(Boolean))?s:[];return $o(t,[...a,...n.filter((e=>!(null!=r&&r.includes(e.id)||null!=o&&o.includes(e.id)))),...l],e)}),Zo(e.options,Xo)),e.getCenterHeaderGroups=_o((()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right]),((t,n,r,o)=>$o(t,n=n.filter((e=>!(null!=r&&r.includes(e.id)||null!=o&&o.includes(e.id)))),e,"center")),Zo(e.options,Xo)),e.getLeftHeaderGroups=_o((()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left]),((t,n,r)=>{var o;const i=null!=(o=null==r?void 0:r.map((e=>n.find((t=>t.id===e)))).filter(Boolean))?o:[];return $o(t,i,e,"left")}),Zo(e.options,Xo)),e.getRightHeaderGroups=_o((()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.right]),((t,n,r)=>{var o;const i=null!=(o=null==r?void 0:r.map((e=>n.find((t=>t.id===e)))).filter(Boolean))?o:[];return $o(t,i,e,"right")}),Zo(e.options,Xo)),e.getFooterGroups=_o((()=>[e.getHeaderGroups()]),(e=>[...e].reverse()),Zo(e.options,Xo)),e.getLeftFooterGroups=_o((()=>[e.getLeftHeaderGroups()]),(e=>[...e].reverse()),Zo(e.options,Xo)),e.getCenterFooterGroups=_o((()=>[e.getCenterHeaderGroups()]),(e=>[...e].reverse()),Zo(e.options,Xo)),e.getRightFooterGroups=_o((()=>[e.getRightHeaderGroups()]),(e=>[...e].reverse()),Zo(e.options,Xo)),e.getFlatHeaders=_o((()=>[e.getHeaderGroups()]),(e=>e.map((e=>e.headers)).flat()),Zo(e.options,Xo)),e.getLeftFlatHeaders=_o((()=>[e.getLeftHeaderGroups()]),(e=>e.map((e=>e.headers)).flat()),Zo(e.options,Xo)),e.getCenterFlatHeaders=_o((()=>[e.getCenterHeaderGroups()]),(e=>e.map((e=>e.headers)).flat()),Zo(e.options,Xo)),e.getRightFlatHeaders=_o((()=>[e.getRightHeaderGroups()]),(e=>e.map((e=>e.headers)).flat()),Zo(e.options,Xo)),e.getCenterLeafHeaders=_o((()=>[e.getCenterFlatHeaders()]),(e=>e.filter((e=>{var t;return!(null!=(t=e.subHeaders)&&t.length)}))),Zo(e.options,Xo)),e.getLeftLeafHeaders=_o((()=>[e.getLeftFlatHeaders()]),(e=>e.filter((e=>{var t;return!(null!=(t=e.subHeaders)&&t.length)}))),Zo(e.options,Xo)),e.getRightLeafHeaders=_o((()=>[e.getRightFlatHeaders()]),(e=>e.filter((e=>{var t;return!(null!=(t=e.subHeaders)&&t.length)}))),Zo(e.options,Xo)),e.getLeafHeaders=_o((()=>[e.getLeftHeaderGroups(),e.getCenterHeaderGroups(),e.getRightHeaderGroups()]),((e,t,n)=>{var r,o,i,s,a,l;return[...null!=(r=null==(o=e[0])?void 0:o.headers)?r:[],...null!=(i=null==(s=t[0])?void 0:s.headers)?i:[],...null!=(a=null==(l=n[0])?void 0:l.headers)?a:[]].map((e=>e.getLeafHeaders())).flat()}),Zo(e.options,Xo))}};function $o(e,t,n,r){var o,i;let s=0;const a=function(e,t){void 0===t&&(t=1),s=Math.max(s,t),e.filter((e=>e.getIsVisible())).forEach((e=>{var n;null!=(n=e.columns)&&n.length&&a(e.columns,t+1)}),0)};a(e);let l=[];const u=(e,t)=>{const o={depth:t,id:[r,`${t}`].filter(Boolean).join("_"),headers:[]},i=[];e.forEach((e=>{const s=[...i].reverse()[0];let a,l=!1;if(e.column.depth===o.depth&&e.column.parent?a=e.column.parent:(a=e.column,l=!0),s&&(null==s?void 0:s.column)===a)s.subHeaders.push(e);else{const o=Jo(n,a,{id:[r,t,a.id,null==e?void 0:e.id].filter(Boolean).join("_"),isPlaceholder:l,placeholderId:l?`${i.filter((e=>e.column===a)).length}`:void 0,depth:t,index:i.length});o.subHeaders.push(e),i.push(o)}o.headers.push(e),e.headerGroup=o})),l.push(o),t>0&&u(i,t-1)},c=t.map(((e,t)=>Jo(n,e,{depth:s,index:t})));u(c,s-1),l.reverse();const d=e=>e.filter((e=>e.column.getIsVisible())).map((e=>{let t=0,n=0,r=[0];return e.subHeaders&&e.subHeaders.length?(r=[],d(e.subHeaders).forEach((e=>{let{colSpan:n,rowSpan:o}=e;t+=n,r.push(o)}))):t=1,n+=Math.min(...r),e.colSpan=t,e.rowSpan=n,{colSpan:t,rowSpan:n}}));return d(null!=(o=null==(i=l[0])?void 0:i.headers)?o:[]),l}const ei=(e,t,n,r,o,i,s)=>{let a={id:t,index:r,original:n,depth:o,parentId:s,_valuesCache:{},_uniqueValuesCache:{},getValue:t=>{if(a._valuesCache.hasOwnProperty(t))return a._valuesCache[t];const n=e.getColumn(t);return null!=n&&n.accessorFn?(a._valuesCache[t]=n.accessorFn(a.original,r),a._valuesCache[t]):void 0},getUniqueValues:t=>{if(a._uniqueValuesCache.hasOwnProperty(t))return a._uniqueValuesCache[t];const n=e.getColumn(t);return null!=n&&n.accessorFn?n.columnDef.getUniqueValues?(a._uniqueValuesCache[t]=n.columnDef.getUniqueValues(a.original,r),a._uniqueValuesCache[t]):(a._uniqueValuesCache[t]=[a.getValue(t)],a._uniqueValuesCache[t]):void 0},renderValue:t=>{var n;return null!=(n=a.getValue(t))?n:e.options.renderFallbackValue},subRows:null!=i?i:[],getLeafRows:()=>function(e,t){const n=[],r=e=>{e.forEach((e=>{n.push(e);const o=t(e);null!=o&&o.length&&r(o)}))};return r(e),n}(a.subRows,(e=>e.subRows)),getParentRow:()=>a.parentId?e.getRow(a.parentId,!0):void 0,getParentRows:()=>{let e=[],t=a;for(;;){const n=t.getParentRow();if(!n)break;e.push(n),t=n}return e.reverse()},getAllCells:_o((()=>[e.getAllLeafColumns()]),(t=>t.map((t=>function(e,t,n,r){const o={id:`${t.id}_${n.id}`,row:t,column:n,getValue:()=>t.getValue(r),renderValue:()=>{var t;return null!=(t=o.getValue())?t:e.options.renderFallbackValue},getContext:_o((()=>[e,n,t,o]),((e,t,n,r)=>({table:e,column:t,row:n,cell:r,getValue:r.getValue,renderValue:r.renderValue})),Zo(e.options,"debugCells"))};return e._features.forEach((r=>{null==r.createCell||r.createCell(o,n,t,e)}),{}),o}(e,a,t,t.id)))),Zo(e.options,"debugRows")),_getAllCellsByColumnId:_o((()=>[a.getAllCells()]),(e=>e.reduce(((e,t)=>(e[t.column.id]=t,e)),{})),Zo(e.options,"debugRows"))};for(let t=0;t{e._getFacetedRowModel=t.options.getFacetedRowModel&&t.options.getFacetedRowModel(t,e.id),e.getFacetedRowModel=()=>e._getFacetedRowModel?e._getFacetedRowModel():t.getPreFilteredRowModel(),e._getFacetedUniqueValues=t.options.getFacetedUniqueValues&&t.options.getFacetedUniqueValues(t,e.id),e.getFacetedUniqueValues=()=>e._getFacetedUniqueValues?e._getFacetedUniqueValues():new Map,e._getFacetedMinMaxValues=t.options.getFacetedMinMaxValues&&t.options.getFacetedMinMaxValues(t,e.id),e.getFacetedMinMaxValues=()=>{if(e._getFacetedMinMaxValues)return e._getFacetedMinMaxValues()}}},ni=(e,t,n)=>{var r;const o=n.toLowerCase();return Boolean(null==(r=e.getValue(t))||null==(r=r.toString())||null==(r=r.toLowerCase())?void 0:r.includes(o))};ni.autoRemove=e=>hi(e);const ri=(e,t,n)=>{var r;return Boolean(null==(r=e.getValue(t))||null==(r=r.toString())?void 0:r.includes(n))};ri.autoRemove=e=>hi(e);const oi=(e,t,n)=>{var r;return(null==(r=e.getValue(t))||null==(r=r.toString())?void 0:r.toLowerCase())===(null==n?void 0:n.toLowerCase())};oi.autoRemove=e=>hi(e);const ii=(e,t,n)=>{var r;return null==(r=e.getValue(t))?void 0:r.includes(n)};ii.autoRemove=e=>hi(e)||!(null!=e&&e.length);const si=(e,t,n)=>!n.some((n=>{var r;return!(null!=(r=e.getValue(t))&&r.includes(n))}));si.autoRemove=e=>hi(e)||!(null!=e&&e.length);const ai=(e,t,n)=>n.some((n=>{var r;return null==(r=e.getValue(t))?void 0:r.includes(n)}));ai.autoRemove=e=>hi(e)||!(null!=e&&e.length);const li=(e,t,n)=>e.getValue(t)===n;li.autoRemove=e=>hi(e);const ui=(e,t,n)=>e.getValue(t)==n;ui.autoRemove=e=>hi(e);const ci=(e,t,n)=>{let[r,o]=n;const i=e.getValue(t);return i>=r&&i<=o};ci.resolveFilterValue=e=>{let[t,n]=e,r="number"!=typeof t?parseFloat(t):t,o="number"!=typeof n?parseFloat(n):n,i=null===t||Number.isNaN(r)?-1/0:r,s=null===n||Number.isNaN(o)?1/0:o;if(i>s){const e=i;i=s,s=e}return[i,s]},ci.autoRemove=e=>hi(e)||hi(e[0])&&hi(e[1]);const di={includesString:ni,includesStringSensitive:ri,equalsString:oi,arrIncludes:ii,arrIncludesAll:si,arrIncludesSome:ai,equals:li,weakEquals:ui,inNumberRange:ci};function hi(e){return null==e||""===e}const fi={getDefaultColumnDef:()=>({filterFn:"auto"}),getInitialState:e=>({columnFilters:[],...e}),getDefaultOptions:e=>({onColumnFiltersChange:Ko("columnFilters",e),filterFromLeafRows:!1,maxLeafRowFilterDepth:100}),createColumn:(e,t)=>{e.getAutoFilterFn=()=>{const n=t.getCoreRowModel().flatRows[0],r=null==n?void 0:n.getValue(e.id);return"string"==typeof r?di.includesString:"number"==typeof r?di.inNumberRange:"boolean"==typeof r||null!==r&&"object"==typeof r?di.equals:Array.isArray(r)?di.arrIncludes:di.weakEquals},e.getFilterFn=()=>{var n,r;return Yo(e.columnDef.filterFn)?e.columnDef.filterFn:"auto"===e.columnDef.filterFn?e.getAutoFilterFn():null!=(n=null==(r=t.options.filterFns)?void 0:r[e.columnDef.filterFn])?n:di[e.columnDef.filterFn]},e.getCanFilter=()=>{var n,r,o;return(null==(n=e.columnDef.enableColumnFilter)||n)&&(null==(r=t.options.enableColumnFilters)||r)&&(null==(o=t.options.enableFilters)||o)&&!!e.accessorFn},e.getIsFiltered=()=>e.getFilterIndex()>-1,e.getFilterValue=()=>{var n;return null==(n=t.getState().columnFilters)||null==(n=n.find((t=>t.id===e.id)))?void 0:n.value},e.getFilterIndex=()=>{var n,r;return null!=(n=null==(r=t.getState().columnFilters)?void 0:r.findIndex((t=>t.id===e.id)))?n:-1},e.setFilterValue=n=>{t.setColumnFilters((t=>{const r=e.getFilterFn(),o=null==t?void 0:t.find((t=>t.id===e.id)),i=qo(n,o?o.value:void 0);var s;if(gi(r,i,e))return null!=(s=null==t?void 0:t.filter((t=>t.id!==e.id)))?s:[];const a={id:e.id,value:i};var l;return o?null!=(l=null==t?void 0:t.map((t=>t.id===e.id?a:t)))?l:[]:null!=t&&t.length?[...t,a]:[a]}))}},createRow:(e,t)=>{e.columnFilters={},e.columnFiltersMeta={}},createTable:e=>{e.setColumnFilters=t=>{const n=e.getAllLeafColumns();null==e.options.onColumnFiltersChange||e.options.onColumnFiltersChange((e=>{var r;return null==(r=qo(t,e))?void 0:r.filter((e=>{const t=n.find((t=>t.id===e.id));return!t||!gi(t.getFilterFn(),e.value,t)}))}))},e.resetColumnFilters=t=>{var n,r;e.setColumnFilters(t?[]:null!=(n=null==(r=e.initialState)?void 0:r.columnFilters)?n:[])},e.getPreFilteredRowModel=()=>e.getCoreRowModel(),e.getFilteredRowModel=()=>(!e._getFilteredRowModel&&e.options.getFilteredRowModel&&(e._getFilteredRowModel=e.options.getFilteredRowModel(e)),e.options.manualFiltering||!e._getFilteredRowModel?e.getPreFilteredRowModel():e._getFilteredRowModel())}};function gi(e,t,n){return!(!e||!e.autoRemove)&&e.autoRemove(t,n)||void 0===t||"string"==typeof t&&!t}const pi={sum:(e,t,n)=>n.reduce(((t,n)=>{const r=n.getValue(e);return t+("number"==typeof r?r:0)}),0),min:(e,t,n)=>{let r;return n.forEach((t=>{const n=t.getValue(e);null!=n&&(r>n||void 0===r&&n>=n)&&(r=n)})),r},max:(e,t,n)=>{let r;return n.forEach((t=>{const n=t.getValue(e);null!=n&&(r=n)&&(r=n)})),r},extent:(e,t,n)=>{let r,o;return n.forEach((t=>{const n=t.getValue(e);null!=n&&(void 0===r?n>=n&&(r=o=n):(r>n&&(r=n),o{let n=0,r=0;if(t.forEach((t=>{let o=t.getValue(e);null!=o&&(o=+o)>=o&&(++n,r+=o)})),n)return r/n},median:(e,t)=>{if(!t.length)return;const n=t.map((t=>t.getValue(e)));if(!function(e){return Array.isArray(e)&&e.every((e=>"number"==typeof e))}(n))return;if(1===n.length)return n[0];const r=Math.floor(n.length/2),o=n.sort(((e,t)=>e-t));return n.length%2!=0?o[r]:(o[r-1]+o[r])/2},unique:(e,t)=>Array.from(new Set(t.map((t=>t.getValue(e)))).values()),uniqueCount:(e,t)=>new Set(t.map((t=>t.getValue(e)))).size,count:(e,t)=>t.length},mi={getDefaultColumnDef:()=>({aggregatedCell:e=>{var t,n;return null!=(t=null==(n=e.getValue())||null==n.toString?void 0:n.toString())?t:null},aggregationFn:"auto"}),getInitialState:e=>({grouping:[],...e}),getDefaultOptions:e=>({onGroupingChange:Ko("grouping",e),groupedColumnMode:"reorder"}),createColumn:(e,t)=>{e.toggleGrouping=()=>{t.setGrouping((t=>null!=t&&t.includes(e.id)?t.filter((t=>t!==e.id)):[...null!=t?t:[],e.id]))},e.getCanGroup=()=>{var n,r;return(null==(n=e.columnDef.enableGrouping)||n)&&(null==(r=t.options.enableGrouping)||r)&&(!!e.accessorFn||!!e.columnDef.getGroupingValue)},e.getIsGrouped=()=>{var n;return null==(n=t.getState().grouping)?void 0:n.includes(e.id)},e.getGroupedIndex=()=>{var n;return null==(n=t.getState().grouping)?void 0:n.indexOf(e.id)},e.getToggleGroupingHandler=()=>{const t=e.getCanGroup();return()=>{t&&e.toggleGrouping()}},e.getAutoAggregationFn=()=>{const n=t.getCoreRowModel().flatRows[0],r=null==n?void 0:n.getValue(e.id);return"number"==typeof r?pi.sum:"[object Date]"===Object.prototype.toString.call(r)?pi.extent:void 0},e.getAggregationFn=()=>{var n,r;if(!e)throw new Error;return Yo(e.columnDef.aggregationFn)?e.columnDef.aggregationFn:"auto"===e.columnDef.aggregationFn?e.getAutoAggregationFn():null!=(n=null==(r=t.options.aggregationFns)?void 0:r[e.columnDef.aggregationFn])?n:pi[e.columnDef.aggregationFn]}},createTable:e=>{e.setGrouping=t=>null==e.options.onGroupingChange?void 0:e.options.onGroupingChange(t),e.resetGrouping=t=>{var n,r;e.setGrouping(t?[]:null!=(n=null==(r=e.initialState)?void 0:r.grouping)?n:[])},e.getPreGroupedRowModel=()=>e.getFilteredRowModel(),e.getGroupedRowModel=()=>(!e._getGroupedRowModel&&e.options.getGroupedRowModel&&(e._getGroupedRowModel=e.options.getGroupedRowModel(e)),e.options.manualGrouping||!e._getGroupedRowModel?e.getPreGroupedRowModel():e._getGroupedRowModel())},createRow:(e,t)=>{e.getIsGrouped=()=>!!e.groupingColumnId,e.getGroupingValue=n=>{if(e._groupingValuesCache.hasOwnProperty(n))return e._groupingValuesCache[n];const r=t.getColumn(n);return null!=r&&r.columnDef.getGroupingValue?(e._groupingValuesCache[n]=r.columnDef.getGroupingValue(e.original),e._groupingValuesCache[n]):e.getValue(n)},e._groupingValuesCache={}},createCell:(e,t,n,r)=>{e.getIsGrouped=()=>t.getIsGrouped()&&t.id===n.groupingColumnId,e.getIsPlaceholder=()=>!e.getIsGrouped()&&t.getIsGrouped(),e.getIsAggregated=()=>{var t;return!e.getIsGrouped()&&!e.getIsPlaceholder()&&!(null==(t=n.subRows)||!t.length)}}},bi={getInitialState:e=>({columnOrder:[],...e}),getDefaultOptions:e=>({onColumnOrderChange:Ko("columnOrder",e)}),createColumn:(e,t)=>{e.getIndex=_o((e=>[Ei(t,e)]),(t=>t.findIndex((t=>t.id===e.id))),Zo(t.options,"debugColumns")),e.getIsFirstColumn=n=>{var r;return(null==(r=Ei(t,n)[0])?void 0:r.id)===e.id},e.getIsLastColumn=n=>{var r;const o=Ei(t,n);return(null==(r=o[o.length-1])?void 0:r.id)===e.id}},createTable:e=>{e.setColumnOrder=t=>null==e.options.onColumnOrderChange?void 0:e.options.onColumnOrderChange(t),e.resetColumnOrder=t=>{var n;e.setColumnOrder(t?[]:null!=(n=e.initialState.columnOrder)?n:[])},e._getOrderColumnsFn=_o((()=>[e.getState().columnOrder,e.getState().grouping,e.options.groupedColumnMode]),((e,t,n)=>r=>{let o=[];if(null!=e&&e.length){const t=[...e],n=[...r];for(;n.length&&t.length;){const e=t.shift(),r=n.findIndex((t=>t.id===e));r>-1&&o.push(n.splice(r,1)[0])}o=[...o,...n]}else o=r;return function(e,t,n){if(null==t||!t.length||!n)return e;const r=e.filter((e=>!t.includes(e.id)));if("remove"===n)return r;const o=t.map((t=>e.find((e=>e.id===t)))).filter(Boolean);return[...o,...r]}(o,t,n)}),Zo(e.options,"debugTable"))}},vi={getInitialState:e=>({columnPinning:{left:[],right:[]},...e}),getDefaultOptions:e=>({onColumnPinningChange:Ko("columnPinning",e)}),createColumn:(e,t)=>{e.pin=n=>{const r=e.getLeafColumns().map((e=>e.id)).filter(Boolean);t.setColumnPinning((e=>{var t,o,i,s,a,l;return"right"===n?{left:(null!=(i=null==e?void 0:e.left)?i:[]).filter((e=>!(null!=r&&r.includes(e)))),right:[...(null!=(s=null==e?void 0:e.right)?s:[]).filter((e=>!(null!=r&&r.includes(e)))),...r]}:"left"===n?{left:[...(null!=(a=null==e?void 0:e.left)?a:[]).filter((e=>!(null!=r&&r.includes(e)))),...r],right:(null!=(l=null==e?void 0:e.right)?l:[]).filter((e=>!(null!=r&&r.includes(e))))}:{left:(null!=(t=null==e?void 0:e.left)?t:[]).filter((e=>!(null!=r&&r.includes(e)))),right:(null!=(o=null==e?void 0:e.right)?o:[]).filter((e=>!(null!=r&&r.includes(e))))}}))},e.getCanPin=()=>e.getLeafColumns().some((e=>{var n,r,o;return(null==(n=e.columnDef.enablePinning)||n)&&(null==(r=null!=(o=t.options.enableColumnPinning)?o:t.options.enablePinning)||r)})),e.getIsPinned=()=>{const n=e.getLeafColumns().map((e=>e.id)),{left:r,right:o}=t.getState().columnPinning,i=n.some((e=>null==r?void 0:r.includes(e))),s=n.some((e=>null==o?void 0:o.includes(e)));return i?"left":!!s&&"right"},e.getPinnedIndex=()=>{var n,r;const o=e.getIsPinned();return o?null!=(n=null==(r=t.getState().columnPinning)||null==(r=r[o])?void 0:r.indexOf(e.id))?n:-1:0}},createRow:(e,t)=>{e.getCenterVisibleCells=_o((()=>[e._getAllVisibleCells(),t.getState().columnPinning.left,t.getState().columnPinning.right]),((e,t,n)=>{const r=[...null!=t?t:[],...null!=n?n:[]];return e.filter((e=>!r.includes(e.column.id)))}),Zo(t.options,"debugRows")),e.getLeftVisibleCells=_o((()=>[e._getAllVisibleCells(),t.getState().columnPinning.left]),((e,t)=>{const n=(null!=t?t:[]).map((t=>e.find((e=>e.column.id===t)))).filter(Boolean).map((e=>({...e,position:"left"})));return n}),Zo(t.options,"debugRows")),e.getRightVisibleCells=_o((()=>[e._getAllVisibleCells(),t.getState().columnPinning.right]),((e,t)=>{const n=(null!=t?t:[]).map((t=>e.find((e=>e.column.id===t)))).filter(Boolean).map((e=>({...e,position:"right"})));return n}),Zo(t.options,"debugRows"))},createTable:e=>{e.setColumnPinning=t=>null==e.options.onColumnPinningChange?void 0:e.options.onColumnPinningChange(t),e.resetColumnPinning=t=>{var n,r;return e.setColumnPinning(t?{left:[],right:[]}:null!=(n=null==(r=e.initialState)?void 0:r.columnPinning)?n:{left:[],right:[]})},e.getIsSomeColumnsPinned=t=>{var n;const r=e.getState().columnPinning;var o,i;return t?Boolean(null==(n=r[t])?void 0:n.length):Boolean((null==(o=r.left)?void 0:o.length)||(null==(i=r.right)?void 0:i.length))},e.getLeftLeafColumns=_o((()=>[e.getAllLeafColumns(),e.getState().columnPinning.left]),((e,t)=>(null!=t?t:[]).map((t=>e.find((e=>e.id===t)))).filter(Boolean)),Zo(e.options,"debugColumns")),e.getRightLeafColumns=_o((()=>[e.getAllLeafColumns(),e.getState().columnPinning.right]),((e,t)=>(null!=t?t:[]).map((t=>e.find((e=>e.id===t)))).filter(Boolean)),Zo(e.options,"debugColumns")),e.getCenterLeafColumns=_o((()=>[e.getAllLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right]),((e,t,n)=>{const r=[...null!=t?t:[],...null!=n?n:[]];return e.filter((e=>!r.includes(e.id)))}),Zo(e.options,"debugColumns"))}},wi={size:150,minSize:20,maxSize:Number.MAX_SAFE_INTEGER},yi={getDefaultColumnDef:()=>wi,getInitialState:e=>({columnSizing:{},columnSizingInfo:{startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,isResizingColumn:!1,columnSizingStart:[]},...e}),getDefaultOptions:e=>({columnResizeMode:"onEnd",columnResizeDirection:"ltr",onColumnSizingChange:Ko("columnSizing",e),onColumnSizingInfoChange:Ko("columnSizingInfo",e)}),createColumn:(e,t)=>{e.getSize=()=>{var n,r,o;const i=t.getState().columnSizing[e.id];return Math.min(Math.max(null!=(n=e.columnDef.minSize)?n:wi.minSize,null!=(r=null!=i?i:e.columnDef.size)?r:wi.size),null!=(o=e.columnDef.maxSize)?o:wi.maxSize)},e.getStart=_o((e=>[e,Ei(t,e),t.getState().columnSizing]),((t,n)=>n.slice(0,e.getIndex(t)).reduce(((e,t)=>e+t.getSize()),0)),Zo(t.options,"debugColumns")),e.getAfter=_o((e=>[e,Ei(t,e),t.getState().columnSizing]),((t,n)=>n.slice(e.getIndex(t)+1).reduce(((e,t)=>e+t.getSize()),0)),Zo(t.options,"debugColumns")),e.resetSize=()=>{t.setColumnSizing((t=>{let{[e.id]:n,...r}=t;return r}))},e.getCanResize=()=>{var n,r;return(null==(n=e.columnDef.enableResizing)||n)&&(null==(r=t.options.enableColumnResizing)||r)},e.getIsResizing=()=>t.getState().columnSizingInfo.isResizingColumn===e.id},createHeader:(e,t)=>{e.getSize=()=>{let t=0;const n=e=>{var r;e.subHeaders.length?e.subHeaders.forEach(n):t+=null!=(r=e.column.getSize())?r:0};return n(e),t},e.getStart=()=>{if(e.index>0){const t=e.headerGroup.headers[e.index-1];return t.getStart()+t.getSize()}return 0},e.getResizeHandler=n=>{const r=t.getColumn(e.column.id),o=null==r?void 0:r.getCanResize();return i=>{if(!r||!o)return;if(null==i.persist||i.persist(),xi(i)&&i.touches&&i.touches.length>1)return;const s=e.getSize(),a=e?e.getLeafHeaders().map((e=>[e.column.id,e.column.getSize()])):[[r.id,r.getSize()]],l=xi(i)?Math.round(i.touches[0].clientX):i.clientX,u={},c=(e,n)=>{"number"==typeof n&&(t.setColumnSizingInfo((e=>{var r,o;const i="rtl"===t.options.columnResizeDirection?-1:1,s=(n-(null!=(r=null==e?void 0:e.startOffset)?r:0))*i,a=Math.max(s/(null!=(o=null==e?void 0:e.startSize)?o:0),-.999999);return e.columnSizingStart.forEach((e=>{let[t,n]=e;u[t]=Math.round(100*Math.max(n+n*a,0))/100})),{...e,deltaOffset:s,deltaPercentage:a}})),"onChange"!==t.options.columnResizeMode&&"end"!==e||t.setColumnSizing((e=>({...e,...u}))))},d=e=>c("move",e),h=e=>{c("end",e),t.setColumnSizingInfo((e=>({...e,isResizingColumn:!1,startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,columnSizingStart:[]})))},f=n||"undefined"!=typeof document?document:null,g={moveHandler:e=>d(e.clientX),upHandler:e=>{null==f||f.removeEventListener("mousemove",g.moveHandler),null==f||f.removeEventListener("mouseup",g.upHandler),h(e.clientX)}},p={moveHandler:e=>(e.cancelable&&(e.preventDefault(),e.stopPropagation()),d(e.touches[0].clientX),!1),upHandler:e=>{var t;null==f||f.removeEventListener("touchmove",p.moveHandler),null==f||f.removeEventListener("touchend",p.upHandler),e.cancelable&&(e.preventDefault(),e.stopPropagation()),h(null==(t=e.touches[0])?void 0:t.clientX)}},m=!!function(){if("boolean"==typeof Ci)return Ci;let e=!1;try{const t={get passive(){return e=!0,!1}},n=()=>{};window.addEventListener("test",n,t),window.removeEventListener("test",n)}catch(t){e=!1}return Ci=e,Ci}()&&{passive:!1};xi(i)?(null==f||f.addEventListener("touchmove",p.moveHandler,m),null==f||f.addEventListener("touchend",p.upHandler,m)):(null==f||f.addEventListener("mousemove",g.moveHandler,m),null==f||f.addEventListener("mouseup",g.upHandler,m)),t.setColumnSizingInfo((e=>({...e,startOffset:l,startSize:s,deltaOffset:0,deltaPercentage:0,columnSizingStart:a,isResizingColumn:r.id})))}}},createTable:e=>{e.setColumnSizing=t=>null==e.options.onColumnSizingChange?void 0:e.options.onColumnSizingChange(t),e.setColumnSizingInfo=t=>null==e.options.onColumnSizingInfoChange?void 0:e.options.onColumnSizingInfoChange(t),e.resetColumnSizing=t=>{var n;e.setColumnSizing(t?{}:null!=(n=e.initialState.columnSizing)?n:{})},e.resetHeaderSizeInfo=t=>{var n;e.setColumnSizingInfo(t?{startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,isResizingColumn:!1,columnSizingStart:[]}:null!=(n=e.initialState.columnSizingInfo)?n:{startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,isResizingColumn:!1,columnSizingStart:[]})},e.getTotalSize=()=>{var t,n;return null!=(t=null==(n=e.getHeaderGroups()[0])?void 0:n.headers.reduce(((e,t)=>e+t.getSize()),0))?t:0},e.getLeftTotalSize=()=>{var t,n;return null!=(t=null==(n=e.getLeftHeaderGroups()[0])?void 0:n.headers.reduce(((e,t)=>e+t.getSize()),0))?t:0},e.getCenterTotalSize=()=>{var t,n;return null!=(t=null==(n=e.getCenterHeaderGroups()[0])?void 0:n.headers.reduce(((e,t)=>e+t.getSize()),0))?t:0},e.getRightTotalSize=()=>{var t,n;return null!=(t=null==(n=e.getRightHeaderGroups()[0])?void 0:n.headers.reduce(((e,t)=>e+t.getSize()),0))?t:0}}};let Ci=null;function xi(e){return"touchstart"===e.type}const Si={getInitialState:e=>({columnVisibility:{},...e}),getDefaultOptions:e=>({onColumnVisibilityChange:Ko("columnVisibility",e)}),createColumn:(e,t)=>{e.toggleVisibility=n=>{e.getCanHide()&&t.setColumnVisibility((t=>({...t,[e.id]:null!=n?n:!e.getIsVisible()})))},e.getIsVisible=()=>{var n,r;const o=e.columns;return null==(n=o.length?o.some((e=>e.getIsVisible())):null==(r=t.getState().columnVisibility)?void 0:r[e.id])||n},e.getCanHide=()=>{var n,r;return(null==(n=e.columnDef.enableHiding)||n)&&(null==(r=t.options.enableHiding)||r)},e.getToggleVisibilityHandler=()=>t=>{null==e.toggleVisibility||e.toggleVisibility(t.target.checked)}},createRow:(e,t)=>{e._getAllVisibleCells=_o((()=>[e.getAllCells(),t.getState().columnVisibility]),(e=>e.filter((e=>e.column.getIsVisible()))),Zo(t.options,"debugRows")),e.getVisibleCells=_o((()=>[e.getLeftVisibleCells(),e.getCenterVisibleCells(),e.getRightVisibleCells()]),((e,t,n)=>[...e,...t,...n]),Zo(t.options,"debugRows"))},createTable:e=>{const t=(t,n)=>_o((()=>[n(),n().filter((e=>e.getIsVisible())).map((e=>e.id)).join("_")]),(e=>e.filter((e=>null==e.getIsVisible?void 0:e.getIsVisible()))),Zo(e.options,"debugColumns"));e.getVisibleFlatColumns=t(0,(()=>e.getAllFlatColumns())),e.getVisibleLeafColumns=t(0,(()=>e.getAllLeafColumns())),e.getLeftVisibleLeafColumns=t(0,(()=>e.getLeftLeafColumns())),e.getRightVisibleLeafColumns=t(0,(()=>e.getRightLeafColumns())),e.getCenterVisibleLeafColumns=t(0,(()=>e.getCenterLeafColumns())),e.setColumnVisibility=t=>null==e.options.onColumnVisibilityChange?void 0:e.options.onColumnVisibilityChange(t),e.resetColumnVisibility=t=>{var n;e.setColumnVisibility(t?{}:null!=(n=e.initialState.columnVisibility)?n:{})},e.toggleAllColumnsVisible=t=>{var n;t=null!=(n=t)?n:!e.getIsAllColumnsVisible(),e.setColumnVisibility(e.getAllLeafColumns().reduce(((e,n)=>({...e,[n.id]:t||!(null!=n.getCanHide&&n.getCanHide())})),{}))},e.getIsAllColumnsVisible=()=>!e.getAllLeafColumns().some((e=>!(null!=e.getIsVisible&&e.getIsVisible()))),e.getIsSomeColumnsVisible=()=>e.getAllLeafColumns().some((e=>null==e.getIsVisible?void 0:e.getIsVisible())),e.getToggleAllColumnsVisibilityHandler=()=>t=>{var n;e.toggleAllColumnsVisible(null==(n=t.target)?void 0:n.checked)}}};function Ei(e,t){return t?"center"===t?e.getCenterVisibleLeafColumns():"left"===t?e.getLeftVisibleLeafColumns():e.getRightVisibleLeafColumns():e.getVisibleLeafColumns()}const Ri={getInitialState:e=>({...e,pagination:{pageIndex:0,pageSize:10,...null==e?void 0:e.pagination}}),getDefaultOptions:e=>({onPaginationChange:Ko("pagination",e)}),createTable:e=>{let t=!1,n=!1;e._autoResetPageIndex=()=>{var r,o;if(t){if(null!=(r=null!=(o=e.options.autoResetAll)?o:e.options.autoResetPageIndex)?r:!e.options.manualPagination){if(n)return;n=!0,e._queue((()=>{e.resetPageIndex(),n=!1}))}}else e._queue((()=>{t=!0}))},e.setPagination=t=>null==e.options.onPaginationChange?void 0:e.options.onPaginationChange((e=>qo(t,e))),e.resetPagination=t=>{var n;e.setPagination(t?{pageIndex:0,pageSize:10}:null!=(n=e.initialState.pagination)?n:{pageIndex:0,pageSize:10})},e.setPageIndex=t=>{e.setPagination((n=>{let r=qo(t,n.pageIndex);const o=void 0===e.options.pageCount||-1===e.options.pageCount?Number.MAX_SAFE_INTEGER:e.options.pageCount-1;return r=Math.max(0,Math.min(r,o)),{...n,pageIndex:r}}))},e.resetPageIndex=t=>{var n,r;e.setPageIndex(t?0:null!=(n=null==(r=e.initialState)||null==(r=r.pagination)?void 0:r.pageIndex)?n:0)},e.resetPageSize=t=>{var n,r;e.setPageSize(t?10:null!=(n=null==(r=e.initialState)||null==(r=r.pagination)?void 0:r.pageSize)?n:10)},e.setPageSize=t=>{e.setPagination((e=>{const n=Math.max(1,qo(t,e.pageSize)),r=e.pageSize*e.pageIndex,o=Math.floor(r/n);return{...e,pageIndex:o,pageSize:n}}))},e.setPageCount=t=>e.setPagination((n=>{var r;let o=qo(t,null!=(r=e.options.pageCount)?r:-1);return"number"==typeof o&&(o=Math.max(-1,o)),{...n,pageCount:o}})),e.getPageOptions=_o((()=>[e.getPageCount()]),(e=>{let t=[];return e&&e>0&&(t=[...new Array(e)].fill(null).map(((e,t)=>t))),t}),Zo(e.options,"debugTable")),e.getCanPreviousPage=()=>e.getState().pagination.pageIndex>0,e.getCanNextPage=()=>{const{pageIndex:t}=e.getState().pagination,n=e.getPageCount();return-1===n||0!==n&&te.setPageIndex((e=>e-1)),e.nextPage=()=>e.setPageIndex((e=>e+1)),e.firstPage=()=>e.setPageIndex(0),e.lastPage=()=>e.setPageIndex(e.getPageCount()-1),e.getPrePaginationRowModel=()=>e.getExpandedRowModel(),e.getPaginationRowModel=()=>(!e._getPaginationRowModel&&e.options.getPaginationRowModel&&(e._getPaginationRowModel=e.options.getPaginationRowModel(e)),e.options.manualPagination||!e._getPaginationRowModel?e.getPrePaginationRowModel():e._getPaginationRowModel()),e.getPageCount=()=>{var t;return null!=(t=e.options.pageCount)?t:Math.ceil(e.getRowCount()/e.getState().pagination.pageSize)},e.getRowCount=()=>{var t;return null!=(t=e.options.rowCount)?t:e.getPrePaginationRowModel().rows.length}}},Oi={getInitialState:e=>({rowPinning:{top:[],bottom:[]},...e}),getDefaultOptions:e=>({onRowPinningChange:Ko("rowPinning",e)}),createRow:(e,t)=>{e.pin=(n,r,o)=>{const i=r?e.getLeafRows().map((e=>{let{id:t}=e;return t})):[],s=o?e.getParentRows().map((e=>{let{id:t}=e;return t})):[],a=new Set([...s,e.id,...i]);t.setRowPinning((e=>{var t,r,o,i,s,l;return"bottom"===n?{top:(null!=(o=null==e?void 0:e.top)?o:[]).filter((e=>!(null!=a&&a.has(e)))),bottom:[...(null!=(i=null==e?void 0:e.bottom)?i:[]).filter((e=>!(null!=a&&a.has(e)))),...Array.from(a)]}:"top"===n?{top:[...(null!=(s=null==e?void 0:e.top)?s:[]).filter((e=>!(null!=a&&a.has(e)))),...Array.from(a)],bottom:(null!=(l=null==e?void 0:e.bottom)?l:[]).filter((e=>!(null!=a&&a.has(e))))}:{top:(null!=(t=null==e?void 0:e.top)?t:[]).filter((e=>!(null!=a&&a.has(e)))),bottom:(null!=(r=null==e?void 0:e.bottom)?r:[]).filter((e=>!(null!=a&&a.has(e))))}}))},e.getCanPin=()=>{var n;const{enableRowPinning:r,enablePinning:o}=t.options;return"function"==typeof r?r(e):null==(n=null!=r?r:o)||n},e.getIsPinned=()=>{const n=[e.id],{top:r,bottom:o}=t.getState().rowPinning,i=n.some((e=>null==r?void 0:r.includes(e))),s=n.some((e=>null==o?void 0:o.includes(e)));return i?"top":!!s&&"bottom"},e.getPinnedIndex=()=>{var n,r;const o=e.getIsPinned();if(!o)return-1;const i=null==(n="top"===o?t.getTopRows():t.getBottomRows())?void 0:n.map((e=>{let{id:t}=e;return t}));return null!=(r=null==i?void 0:i.indexOf(e.id))?r:-1}},createTable:e=>{e.setRowPinning=t=>null==e.options.onRowPinningChange?void 0:e.options.onRowPinningChange(t),e.resetRowPinning=t=>{var n,r;return e.setRowPinning(t?{top:[],bottom:[]}:null!=(n=null==(r=e.initialState)?void 0:r.rowPinning)?n:{top:[],bottom:[]})},e.getIsSomeRowsPinned=t=>{var n;const r=e.getState().rowPinning;var o,i;return t?Boolean(null==(n=r[t])?void 0:n.length):Boolean((null==(o=r.top)?void 0:o.length)||(null==(i=r.bottom)?void 0:i.length))},e._getPinnedRows=(t,n,r)=>{var o;return(null==(o=e.options.keepPinnedRows)||o?(null!=n?n:[]).map((t=>{const n=e.getRow(t,!0);return n.getIsAllParentsExpanded()?n:null})):(null!=n?n:[]).map((e=>t.find((t=>t.id===e))))).filter(Boolean).map((e=>({...e,position:r})))},e.getTopRows=_o((()=>[e.getRowModel().rows,e.getState().rowPinning.top]),((t,n)=>e._getPinnedRows(t,n,"top")),Zo(e.options,"debugRows")),e.getBottomRows=_o((()=>[e.getRowModel().rows,e.getState().rowPinning.bottom]),((t,n)=>e._getPinnedRows(t,n,"bottom")),Zo(e.options,"debugRows")),e.getCenterRows=_o((()=>[e.getRowModel().rows,e.getState().rowPinning.top,e.getState().rowPinning.bottom]),((e,t,n)=>{const r=new Set([...null!=t?t:[],...null!=n?n:[]]);return e.filter((e=>!r.has(e.id)))}),Zo(e.options,"debugRows"))}},Ii={getInitialState:e=>({rowSelection:{},...e}),getDefaultOptions:e=>({onRowSelectionChange:Ko("rowSelection",e),enableRowSelection:!0,enableMultiRowSelection:!0,enableSubRowSelection:!0}),createTable:e=>{e.setRowSelection=t=>null==e.options.onRowSelectionChange?void 0:e.options.onRowSelectionChange(t),e.resetRowSelection=t=>{var n;return e.setRowSelection(t?{}:null!=(n=e.initialState.rowSelection)?n:{})},e.toggleAllRowsSelected=t=>{e.setRowSelection((n=>{t=void 0!==t?t:!e.getIsAllRowsSelected();const r={...n},o=e.getPreGroupedRowModel().flatRows;return t?o.forEach((e=>{e.getCanSelect()&&(r[e.id]=!0)})):o.forEach((e=>{delete r[e.id]})),r}))},e.toggleAllPageRowsSelected=t=>e.setRowSelection((n=>{const r=void 0!==t?t:!e.getIsAllPageRowsSelected(),o={...n};return e.getRowModel().rows.forEach((t=>{ki(o,t.id,r,!0,e)})),o})),e.getPreSelectedRowModel=()=>e.getCoreRowModel(),e.getSelectedRowModel=_o((()=>[e.getState().rowSelection,e.getCoreRowModel()]),((t,n)=>Object.keys(t).length?Mi(e,n):{rows:[],flatRows:[],rowsById:{}}),Zo(e.options,"debugTable")),e.getFilteredSelectedRowModel=_o((()=>[e.getState().rowSelection,e.getFilteredRowModel()]),((t,n)=>Object.keys(t).length?Mi(e,n):{rows:[],flatRows:[],rowsById:{}}),Zo(e.options,"debugTable")),e.getGroupedSelectedRowModel=_o((()=>[e.getState().rowSelection,e.getSortedRowModel()]),((t,n)=>Object.keys(t).length?Mi(e,n):{rows:[],flatRows:[],rowsById:{}}),Zo(e.options,"debugTable")),e.getIsAllRowsSelected=()=>{const t=e.getFilteredRowModel().flatRows,{rowSelection:n}=e.getState();let r=Boolean(t.length&&Object.keys(n).length);return r&&t.some((e=>e.getCanSelect()&&!n[e.id]))&&(r=!1),r},e.getIsAllPageRowsSelected=()=>{const t=e.getPaginationRowModel().flatRows.filter((e=>e.getCanSelect())),{rowSelection:n}=e.getState();let r=!!t.length;return r&&t.some((e=>!n[e.id]))&&(r=!1),r},e.getIsSomeRowsSelected=()=>{var t;const n=Object.keys(null!=(t=e.getState().rowSelection)?t:{}).length;return n>0&&n{const t=e.getPaginationRowModel().flatRows;return!e.getIsAllPageRowsSelected()&&t.filter((e=>e.getCanSelect())).some((e=>e.getIsSelected()||e.getIsSomeSelected()))},e.getToggleAllRowsSelectedHandler=()=>t=>{e.toggleAllRowsSelected(t.target.checked)},e.getToggleAllPageRowsSelectedHandler=()=>t=>{e.toggleAllPageRowsSelected(t.target.checked)}},createRow:(e,t)=>{e.toggleSelected=(n,r)=>{const o=e.getIsSelected();t.setRowSelection((i=>{var s;if(n=void 0!==n?n:!o,e.getCanSelect()&&o===n)return i;const a={...i};return ki(a,e.id,n,null==(s=null==r?void 0:r.selectChildren)||s,t),a}))},e.getIsSelected=()=>{const{rowSelection:n}=t.getState();return Fi(e,n)},e.getIsSomeSelected=()=>{const{rowSelection:n}=t.getState();return"some"===Di(e,n)},e.getIsAllSubRowsSelected=()=>{const{rowSelection:n}=t.getState();return"all"===Di(e,n)},e.getCanSelect=()=>{var n;return"function"==typeof t.options.enableRowSelection?t.options.enableRowSelection(e):null==(n=t.options.enableRowSelection)||n},e.getCanSelectSubRows=()=>{var n;return"function"==typeof t.options.enableSubRowSelection?t.options.enableSubRowSelection(e):null==(n=t.options.enableSubRowSelection)||n},e.getCanMultiSelect=()=>{var n;return"function"==typeof t.options.enableMultiRowSelection?t.options.enableMultiRowSelection(e):null==(n=t.options.enableMultiRowSelection)||n},e.getToggleSelectedHandler=()=>{const t=e.getCanSelect();return n=>{var r;t&&e.toggleSelected(null==(r=n.target)?void 0:r.checked)}}}},ki=(e,t,n,r,o)=>{var i;const s=o.getRow(t,!0);n?(s.getCanMultiSelect()||Object.keys(e).forEach((t=>delete e[t])),s.getCanSelect()&&(e[t]=!0)):delete e[t],r&&null!=(i=s.subRows)&&i.length&&s.getCanSelectSubRows()&&s.subRows.forEach((t=>ki(e,t.id,n,r,o)))};function Mi(e,t){const n=e.getState().rowSelection,r=[],o={},i=function(e,t){return e.map((e=>{var t;const s=Fi(e,n);if(s&&(r.push(e),o[e.id]=e),null!=(t=e.subRows)&&t.length&&(e={...e,subRows:i(e.subRows)}),s)return e})).filter(Boolean)};return{rows:i(t.rows),flatRows:r,rowsById:o}}function Fi(e,t){var n;return null!=(n=t[e.id])&&n}function Di(e,t,n){var r;if(null==(r=e.subRows)||!r.length)return!1;let o=!0,i=!1;return e.subRows.forEach((e=>{if((!i||o)&&(e.getCanSelect()&&(Fi(e,t)?i=!0:o=!1),e.subRows&&e.subRows.length)){const n=Di(e,t);"all"===n?i=!0:"some"===n?(i=!0,o=!1):o=!1}})),o?"all":!!i&&"some"}const Pi=/([0-9]+)/gm;function Ai(e,t){return e===t?0:e>t?1:-1}function Vi(e){return"number"==typeof e?isNaN(e)||e===1/0||e===-1/0?"":String(e):"string"==typeof e?e:""}function Ti(e,t){const n=e.split(Pi).filter(Boolean),r=t.split(Pi).filter(Boolean);for(;n.length&&r.length;){const e=n.shift(),t=r.shift(),o=parseInt(e,10),i=parseInt(t,10),s=[o,i].sort();if(isNaN(s[0])){if(e>t)return 1;if(t>e)return-1}else{if(isNaN(s[1]))return isNaN(o)?-1:1;if(o>i)return 1;if(i>o)return-1}}return n.length-r.length}const Li={alphanumeric:(e,t,n)=>Ti(Vi(e.getValue(n)).toLowerCase(),Vi(t.getValue(n)).toLowerCase()),alphanumericCaseSensitive:(e,t,n)=>Ti(Vi(e.getValue(n)),Vi(t.getValue(n))),text:(e,t,n)=>Ai(Vi(e.getValue(n)).toLowerCase(),Vi(t.getValue(n)).toLowerCase()),textCaseSensitive:(e,t,n)=>Ai(Vi(e.getValue(n)),Vi(t.getValue(n))),datetime:(e,t,n)=>{const r=e.getValue(n),o=t.getValue(n);return r>o?1:rAi(e.getValue(n),t.getValue(n))},Ni={getInitialState:e=>({sorting:[],...e}),getDefaultColumnDef:()=>({sortingFn:"auto",sortUndefined:1}),getDefaultOptions:e=>({onSortingChange:Ko("sorting",e),isMultiSortEvent:e=>e.shiftKey}),createColumn:(e,t)=>{e.getAutoSortingFn=()=>{const n=t.getFilteredRowModel().flatRows.slice(10);let r=!1;for(const t of n){const n=null==t?void 0:t.getValue(e.id);if("[object Date]"===Object.prototype.toString.call(n))return Li.datetime;if("string"==typeof n&&(r=!0,n.split(Pi).length>1))return Li.alphanumeric}return r?Li.text:Li.basic},e.getAutoSortDir=()=>{const n=t.getFilteredRowModel().flatRows[0];return"string"==typeof(null==n?void 0:n.getValue(e.id))?"asc":"desc"},e.getSortingFn=()=>{var n,r;if(!e)throw new Error;return Yo(e.columnDef.sortingFn)?e.columnDef.sortingFn:"auto"===e.columnDef.sortingFn?e.getAutoSortingFn():null!=(n=null==(r=t.options.sortingFns)?void 0:r[e.columnDef.sortingFn])?n:Li[e.columnDef.sortingFn]},e.toggleSorting=(n,r)=>{const o=e.getNextSortingOrder(),i=null!=n;t.setSorting((s=>{const a=null==s?void 0:s.find((t=>t.id===e.id)),l=null==s?void 0:s.findIndex((t=>t.id===e.id));let u,c=[],d=i?n:"desc"===o;var h;return u=null!=s&&s.length&&e.getCanMultiSort()&&r?a?"toggle":"add":null!=s&&s.length&&l!==s.length-1?"replace":a?"toggle":"replace","toggle"===u&&(i||o||(u="remove")),"add"===u?(c=[...s,{id:e.id,desc:d}],c.splice(0,c.length-(null!=(h=t.options.maxMultiSortColCount)?h:Number.MAX_SAFE_INTEGER))):c="toggle"===u?s.map((t=>t.id===e.id?{...t,desc:d}:t)):"remove"===u?s.filter((t=>t.id!==e.id)):[{id:e.id,desc:d}],c}))},e.getFirstSortDir=()=>{var n,r;return(null!=(n=null!=(r=e.columnDef.sortDescFirst)?r:t.options.sortDescFirst)?n:"desc"===e.getAutoSortDir())?"desc":"asc"},e.getNextSortingOrder=n=>{var r,o;const i=e.getFirstSortDir(),s=e.getIsSorted();return s?!!(s===i||null!=(r=t.options.enableSortingRemoval)&&!r||n&&null!=(o=t.options.enableMultiRemove)&&!o)&&("desc"===s?"asc":"desc"):i},e.getCanSort=()=>{var n,r;return(null==(n=e.columnDef.enableSorting)||n)&&(null==(r=t.options.enableSorting)||r)&&!!e.accessorFn},e.getCanMultiSort=()=>{var n,r;return null!=(n=null!=(r=e.columnDef.enableMultiSort)?r:t.options.enableMultiSort)?n:!!e.accessorFn},e.getIsSorted=()=>{var n;const r=null==(n=t.getState().sorting)?void 0:n.find((t=>t.id===e.id));return!!r&&(r.desc?"desc":"asc")},e.getSortIndex=()=>{var n,r;return null!=(n=null==(r=t.getState().sorting)?void 0:r.findIndex((t=>t.id===e.id)))?n:-1},e.clearSorting=()=>{t.setSorting((t=>null!=t&&t.length?t.filter((t=>t.id!==e.id)):[]))},e.getToggleSortingHandler=()=>{const n=e.getCanSort();return r=>{n&&(null==r.persist||r.persist(),null==e.toggleSorting||e.toggleSorting(void 0,!!e.getCanMultiSort()&&(null==t.options.isMultiSortEvent?void 0:t.options.isMultiSortEvent(r))))}}},createTable:e=>{e.setSorting=t=>null==e.options.onSortingChange?void 0:e.options.onSortingChange(t),e.resetSorting=t=>{var n,r;e.setSorting(t?[]:null!=(n=null==(r=e.initialState)?void 0:r.sorting)?n:[])},e.getPreSortedRowModel=()=>e.getGroupedRowModel(),e.getSortedRowModel=()=>(!e._getSortedRowModel&&e.options.getSortedRowModel&&(e._getSortedRowModel=e.options.getSortedRowModel(e)),e.options.manualSorting||!e._getSortedRowModel?e.getPreSortedRowModel():e._getSortedRowModel())}},zi=[Qo,Si,bi,vi,ti,fi,{createTable:e=>{e._getGlobalFacetedRowModel=e.options.getFacetedRowModel&&e.options.getFacetedRowModel(e,"__global__"),e.getGlobalFacetedRowModel=()=>e.options.manualFiltering||!e._getGlobalFacetedRowModel?e.getPreFilteredRowModel():e._getGlobalFacetedRowModel(),e._getGlobalFacetedUniqueValues=e.options.getFacetedUniqueValues&&e.options.getFacetedUniqueValues(e,"__global__"),e.getGlobalFacetedUniqueValues=()=>e._getGlobalFacetedUniqueValues?e._getGlobalFacetedUniqueValues():new Map,e._getGlobalFacetedMinMaxValues=e.options.getFacetedMinMaxValues&&e.options.getFacetedMinMaxValues(e,"__global__"),e.getGlobalFacetedMinMaxValues=()=>{if(e._getGlobalFacetedMinMaxValues)return e._getGlobalFacetedMinMaxValues()}}},{getInitialState:e=>({globalFilter:void 0,...e}),getDefaultOptions:e=>({onGlobalFilterChange:Ko("globalFilter",e),globalFilterFn:"auto",getColumnCanGlobalFilter:t=>{var n;const r=null==(n=e.getCoreRowModel().flatRows[0])||null==(n=n._getAllCellsByColumnId()[t.id])?void 0:n.getValue();return"string"==typeof r||"number"==typeof r}}),createColumn:(e,t)=>{e.getCanGlobalFilter=()=>{var n,r,o,i;return(null==(n=e.columnDef.enableGlobalFilter)||n)&&(null==(r=t.options.enableGlobalFilter)||r)&&(null==(o=t.options.enableFilters)||o)&&(null==(i=null==t.options.getColumnCanGlobalFilter?void 0:t.options.getColumnCanGlobalFilter(e))||i)&&!!e.accessorFn}},createTable:e=>{e.getGlobalAutoFilterFn=()=>di.includesString,e.getGlobalFilterFn=()=>{var t,n;const{globalFilterFn:r}=e.options;return Yo(r)?r:"auto"===r?e.getGlobalAutoFilterFn():null!=(t=null==(n=e.options.filterFns)?void 0:n[r])?t:di[r]},e.setGlobalFilter=t=>{null==e.options.onGlobalFilterChange||e.options.onGlobalFilterChange(t)},e.resetGlobalFilter=t=>{e.setGlobalFilter(t?void 0:e.initialState.globalFilter)}}},Ni,mi,{getInitialState:e=>({expanded:{},...e}),getDefaultOptions:e=>({onExpandedChange:Ko("expanded",e),paginateExpandedRows:!0}),createTable:e=>{let t=!1,n=!1;e._autoResetExpanded=()=>{var r,o;if(t){if(null!=(r=null!=(o=e.options.autoResetAll)?o:e.options.autoResetExpanded)?r:!e.options.manualExpanding){if(n)return;n=!0,e._queue((()=>{e.resetExpanded(),n=!1}))}}else e._queue((()=>{t=!0}))},e.setExpanded=t=>null==e.options.onExpandedChange?void 0:e.options.onExpandedChange(t),e.toggleAllRowsExpanded=t=>{(null!=t?t:!e.getIsAllRowsExpanded())?e.setExpanded(!0):e.setExpanded({})},e.resetExpanded=t=>{var n,r;e.setExpanded(t?{}:null!=(n=null==(r=e.initialState)?void 0:r.expanded)?n:{})},e.getCanSomeRowsExpand=()=>e.getPrePaginationRowModel().flatRows.some((e=>e.getCanExpand())),e.getToggleAllRowsExpandedHandler=()=>t=>{null==t.persist||t.persist(),e.toggleAllRowsExpanded()},e.getIsSomeRowsExpanded=()=>{const t=e.getState().expanded;return!0===t||Object.values(t).some(Boolean)},e.getIsAllRowsExpanded=()=>{const t=e.getState().expanded;return"boolean"==typeof t?!0===t:!!Object.keys(t).length&&!e.getRowModel().flatRows.some((e=>!e.getIsExpanded()))},e.getExpandedDepth=()=>{let t=0;return(!0===e.getState().expanded?Object.keys(e.getRowModel().rowsById):Object.keys(e.getState().expanded)).forEach((e=>{const n=e.split(".");t=Math.max(t,n.length)})),t},e.getPreExpandedRowModel=()=>e.getSortedRowModel(),e.getExpandedRowModel=()=>(!e._getExpandedRowModel&&e.options.getExpandedRowModel&&(e._getExpandedRowModel=e.options.getExpandedRowModel(e)),e.options.manualExpanding||!e._getExpandedRowModel?e.getPreExpandedRowModel():e._getExpandedRowModel())},createRow:(e,t)=>{e.toggleExpanded=n=>{t.setExpanded((r=>{var o;const i=!0===r||!(null==r||!r[e.id]);let s={};if(!0===r?Object.keys(t.getRowModel().rowsById).forEach((e=>{s[e]=!0})):s=r,n=null!=(o=n)?o:!i,!i&&n)return{...s,[e.id]:!0};if(i&&!n){const{[e.id]:t,...n}=s;return n}return r}))},e.getIsExpanded=()=>{var n;const r=t.getState().expanded;return!!(null!=(n=null==t.options.getIsRowExpanded?void 0:t.options.getIsRowExpanded(e))?n:!0===r||(null==r?void 0:r[e.id]))},e.getCanExpand=()=>{var n,r,o;return null!=(n=null==t.options.getRowCanExpand?void 0:t.options.getRowCanExpand(e))?n:(null==(r=t.options.enableExpanding)||r)&&!(null==(o=e.subRows)||!o.length)},e.getIsAllParentsExpanded=()=>{let n=!0,r=e;for(;n&&r.parentId;)r=t.getRow(r.parentId,!0),n=r.getIsExpanded();return n},e.getToggleExpandedHandler=()=>{const t=e.getCanExpand();return()=>{t&&e.toggleExpanded()}}}},Ri,Oi,Ii,yi];function Bi(e){var t,n;const r=[...zi,...null!=(t=e._features)?t:[]];let o={_features:r};const i=o._features.reduce(((e,t)=>Object.assign(e,null==t.getDefaultOptions?void 0:t.getDefaultOptions(o))),{});let s={...null!=(n=e.initialState)?n:{}};o._features.forEach((e=>{var t;s=null!=(t=null==e.getInitialState?void 0:e.getInitialState(s))?t:s}));const a=[];let l=!1;const u={_features:r,options:{...i,...e},initialState:s,_queue:e=>{a.push(e),l||(l=!0,Promise.resolve().then((()=>{for(;a.length;)a.shift()();l=!1})).catch((e=>setTimeout((()=>{throw e})))))},reset:()=>{o.setState(o.initialState)},setOptions:e=>{const t=qo(e,o.options);o.options=(e=>o.options.mergeOptions?o.options.mergeOptions(i,e):{...i,...e})(t)},getState:()=>o.options.state,setState:e=>{null==o.options.onStateChange||o.options.onStateChange(e)},_getRowId:(e,t,n)=>{var r;return null!=(r=null==o.options.getRowId?void 0:o.options.getRowId(e,t,n))?r:`${n?[n.id,t].join("."):t}`},getCoreRowModel:()=>(o._getCoreRowModel||(o._getCoreRowModel=o.options.getCoreRowModel(o)),o._getCoreRowModel()),getRowModel:()=>o.getPaginationRowModel(),getRow:(e,t)=>{let n=(t?o.getPrePaginationRowModel():o.getRowModel()).rowsById[e];if(!n&&(n=o.getCoreRowModel().rowsById[e],!n))throw new Error;return n},_getDefaultColumnDef:_o((()=>[o.options.defaultColumn]),(e=>{var t;return e=null!=(t=e)?t:{},{header:e=>{const t=e.header.column.columnDef;return t.accessorKey?t.accessorKey:t.accessorFn?t.id:null},cell:e=>{var t,n;return null!=(t=null==(n=e.renderValue())||null==n.toString?void 0:n.toString())?t:null},...o._features.reduce(((e,t)=>Object.assign(e,null==t.getDefaultColumnDef?void 0:t.getDefaultColumnDef())),{}),...e}}),Zo(e,"debugColumns")),_getColumnDefs:()=>o.options.columns,getAllColumns:_o((()=>[o._getColumnDefs()]),(e=>{const t=function(e,n,r){return void 0===r&&(r=0),e.map((e=>{const i=function(e,t,n,r){var o,i;const s={...e._getDefaultColumnDef(),...t},a=s.accessorKey;let l,u=null!=(o=null!=(i=s.id)?i:a?a.replace(".","_"):void 0)?o:"string"==typeof s.header?s.header:void 0;if(s.accessorFn?l=s.accessorFn:a&&(l=a.includes(".")?e=>{let t=e;for(const e of a.split(".")){var n;t=null==(n=t)?void 0:n[e]}return t}:e=>e[s.accessorKey]),!u)throw new Error;let c={id:`${String(u)}`,accessorFn:l,parent:r,depth:n,columnDef:s,columns:[],getFlatColumns:_o((()=>[!0]),(()=>{var e;return[c,...null==(e=c.columns)?void 0:e.flatMap((e=>e.getFlatColumns()))]}),Zo(e.options,"debugColumns")),getLeafColumns:_o((()=>[e._getOrderColumnsFn()]),(e=>{var t;if(null!=(t=c.columns)&&t.length){let t=c.columns.flatMap((e=>e.getLeafColumns()));return e(t)}return[c]}),Zo(e.options,"debugColumns"))};for(const t of e._features)null==t.createColumn||t.createColumn(c,e);return c}(o,e,r,n),s=e;return i.columns=s.columns?t(s.columns,i,r+1):[],i}))};return t(e)}),Zo(e,"debugColumns")),getAllFlatColumns:_o((()=>[o.getAllColumns()]),(e=>e.flatMap((e=>e.getFlatColumns()))),Zo(e,"debugColumns")),_getAllFlatColumnsById:_o((()=>[o.getAllFlatColumns()]),(e=>e.reduce(((e,t)=>(e[t.id]=t,e)),{})),Zo(e,"debugColumns")),getAllLeafColumns:_o((()=>[o.getAllColumns(),o._getOrderColumnsFn()]),((e,t)=>t(e.flatMap((e=>e.getLeafColumns())))),Zo(e,"debugColumns")),getColumn:e=>o._getAllFlatColumnsById()[e]};Object.assign(o,u);for(let e=0;e{const t=Object.getPrototypeOf(e);return t.prototype&&t.prototype.isReactComponent})()}(r=t)||"function"==typeof r||function(e){return"object"==typeof e&&"symbol"==typeof e.$$typeof&&["react.memo","react.forward_ref"].includes(e.$$typeof.description)}(r)?e.createElement(t,n):t:null;var r}const Hi={table:"l03h0IHl5WOI4XvelHt3",striped:"pz9cxM_c8wpWcOh3bw5v"},Ui=function({row:t,canDrag:n}){var r,o;const{active:i,setNodeRef:s,transform:a,transition:l,isDragging:u}=Do({id:t.id,disabled:null!==(r=t?.disabled)&&void 0!==r&&r,data:{disabled:null!==(o=t?.disabled)&&void 0!==o&&o}}),c={backgroundColor:u?"#fff":void 0,transform:In.Transform.toString(a),transition:l,width:t?.getSize?`${t.getSize().width}px`:void 0,zIndex:i&&i.id===t.id?1:void 0},d=n?{ref:s,style:c,className:Le("gb-table__row","gb-table__row--draggable",u&&"is-dragging"),"data-row-id":t.id}:{};return(0,e.createElement)("tr",{...d,key:t.id,"data-row-id":t.id},t.getVisibleCells().map((t=>(0,e.createElement)("td",{key:t.id,className:"gb-table__cell"},Gi(t.column.columnDef.cell,t.getContext())))))};function Wi({columns:t,onDragStart:n,onDragEnd:r,onRowSelectionChange:i,rowSelection:s={},striped:a=!0,showHeader:l=!0,data:u=[],className:c="",draggableRows:d=!1,getRowId:h=(e=>e.id),enableRowSelection:f=!1,"aria-labelledby":g,"aria-label":p}){const m={},b=(0,o.useRef)(null);f&&(m.rowSelection=s);const v=function(t){const n={state:{},onStateChange:()=>{},renderFallbackValue:null,...t},[r]=e.useState((()=>({current:Bi(n)}))),[o,i]=e.useState((()=>r.current.initialState));return r.current.setOptions((e=>({...e,...t,state:{...o,...t.state},onStateChange:e=>{i(e),null==t.onStateChange||t.onStateChange(e)}}))),r.current}({data:u,columns:t,getCoreRowModel:e=>_o((()=>[e.options.data]),(t=>{const n={rows:[],flatRows:[],rowsById:{}},r=function(t,o,i){void 0===o&&(o=0);const s=[];for(let l=0;le._autoResetPageIndex()))),getRowId:h,enableRowSelection:f,onRowSelectionChange:i,state:m}),w=v.getRowModel().rows,y=d&&!v.getIsSomeRowsSelected()&&!v.getIsAllRowsSelected(),C=Gn(Bn(Pr),Bn(Ir,{coordinateGetter:Vo}));if(!p&&!g)throw new Error("Table component requires an accessible label. Please add an aria-label or valid aria-labelledby prop.");return(0,e.createElement)(uo,{modifiers:[No,Lo],sensors:C,collisionDetection:Zn,onDragStart:n,onDragEnd:r},(0,e.createElement)("table",{className:Le("gb-table",Hi.table,a&&Hi.striped,c),cellPadding:0,"aria-label":p,"aria-labelledby":g,ref:b},l&&(0,e.createElement)("thead",null,v.getHeaderGroups().map((t=>(0,e.createElement)("tr",{key:t.id},t.headers.map((t=>(0,e.createElement)("th",{key:t.id,className:"gb-table__header",colSpan:t.colSpan,"data-column-id":t.column.id},t.isPlaceholder?null:Gi(t.column.columnDef.header,t.getContext())))))))),(0,e.createElement)("tbody",null,y?(0,e.createElement)(Eo,{items:w,strategy:Co},w.map((t=>(0,e.createElement)(Ui,{row:t,key:t.id,canDrag:y})))):(0,e.createElement)(e.Fragment,null,w.map((t=>(0,e.createElement)("tr",{key:t.id,className:"gb-table__row","data-row-id":t.id},t.getVisibleCells().map((t=>(0,e.createElement)("td",{key:t.id,className:"gb-table__cell","data-column-id":t.column.id},Gi(t.column.columnDef.cell,t.getContext())))))))))))}Wi.RowHandle=function({row:t,disabled:n=!1}){var r,o;const{attributes:i,listeners:a}=Do({id:t.id,disabled:n||null!==(r=t?.disabled)&&void 0!==r&&r,data:{disabled:n||null!==(o=t?.disabled)&&void 0!==o&&o}});return(0,e.createElement)(Go,{className:"gb-table__handle",variant:"tertiary",showTooltip:!1,label:(0,s.__)("Reorder style","generateblocks-pro"),...i,...a})},Wi.HeaderRowCheckbox=function({table:t,onChange:n,...r}){return(0,e.createElement)(Ke,{type:"checkbox",className:"components-checkbox-control__input gb-table__checkbox gb-table__checkbox--all",checked:t.getIsAllRowsSelected(),indeterminate:t.getIsSomeRowsSelected(),onChange:e=>{t.toggleAllRowsSelected(e.target.checked),n&&n(e)},...r})},Wi.RowCheckbox=function({row:t,"aria-label":n=(0,s.__)("Select row","generateblocks-pro"),...r}){return(0,e.createElement)(Ke,{checked:t.getIsSelected(),disabled:!t.getCanSelect(),onChange:t.getToggleSelectedHandler(),"aria-label":n,...r})}})(),r})(),e.exports=t()},528:e=>{e.exports=function e(t,n,r){function o(s,a){if(!n[s]){if(!t[s]){if(i)return i(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var u=n[s]={exports:{}};t[s][0].call(u.exports,(function(e){return o(t[s][1][e]||e)}),u,u.exports,e,t,n,r)}return n[s].exports}for(var i=void 0,s=0;s=252?6:a>=248?5:a>=240?4:a>=224?3:a>=192?2:1;function l(e,t){if(t<65534&&(e.subarray&&i||!e.subarray&&o))return String.fromCharCode.apply(null,r.shrinkBuf(e,t));for(var n="",s=0;s>>6,t[s++]=128|63&n):n<65536?(t[s++]=224|n>>>12,t[s++]=128|n>>>6&63,t[s++]=128|63&n):(t[s++]=240|n>>>18,t[s++]=128|n>>>12&63,t[s++]=128|n>>>6&63,t[s++]=128|63&n);return t},n.buf2binstring=function(e){return l(e,e.length)},n.binstring2buf=function(e){for(var t=new r.Buf8(e.length),n=0,o=t.length;n4)u[r++]=65533,n+=i-1;else{for(o&=2===i?31:3===i?15:7;i>1&&n1?u[r++]=65533:o<65536?u[r++]=o:(o-=65536,u[r++]=55296|o>>10&1023,u[r++]=56320|1023&o)}return l(u,r)},n.utf8border=function(e,t){var n;for((t=t||e.length)>e.length&&(t=e.length),n=t-1;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+s[e[n]]>t?n:t}},{"./common":1}],3:[function(e,t,n){"use strict";t.exports=function(e,t,n,r){for(var o=65535&e|0,i=e>>>16&65535|0,s=0;0!==n;){n-=s=n>2e3?2e3:n;do{i=i+(o=o+t[r++]|0)|0}while(--s);o%=65521,i%=65521}return o|i<<16|0}},{}],4:[function(e,t,n){"use strict";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],5:[function(e,t,n){"use strict";var r=function(){for(var e,t=[],n=0;n<256;n++){e=n;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t}();t.exports=function(e,t,n,o){var i=r,s=o+n;e^=-1;for(var a=o;a>>8^i[255&(e^t[a])];return-1^e}},{}],6:[function(e,t,n){"use strict";t.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],7:[function(e,t,n){"use strict";t.exports=function(e,t){var n,r,o,i,s,a,l,u,c,d,h,f,g,p,m,b,v,w,y,C,x,S,E,R,O;n=e.state,r=e.next_in,R=e.input,o=r+(e.avail_in-5),i=e.next_out,O=e.output,s=i-(t-e.avail_out),a=i+(e.avail_out-257),l=n.dmax,u=n.wsize,c=n.whave,d=n.wnext,h=n.window,f=n.hold,g=n.bits,p=n.lencode,m=n.distcode,b=(1<>>=y=w>>>24,g-=y,0==(y=w>>>16&255))O[i++]=65535&w;else{if(!(16&y)){if(0==(64&y)){w=p[(65535&w)+(f&(1<>>=y,g-=y),g<15&&(f+=R[r++]<>>=y=w>>>24,g-=y,!(16&(y=w>>>16&255))){if(0==(64&y)){w=m[(65535&w)+(f&(1<l){e.msg="invalid distance too far back",n.mode=30;break e}if(f>>>=y,g-=y,x>(y=i-s)){if((y=x-y)>c&&n.sane){e.msg="invalid distance too far back",n.mode=30;break e}if(S=0,E=h,0===d){if(S+=u-y,y2;)O[i++]=E[S++],O[i++]=E[S++],O[i++]=E[S++],C-=3;C&&(O[i++]=E[S++],C>1&&(O[i++]=E[S++]))}else{S=i-x;do{O[i++]=O[S++],O[i++]=O[S++],O[i++]=O[S++],C-=3}while(C>2);C&&(O[i++]=O[S++],C>1&&(O[i++]=O[S++]))}break}}break}}while(r>3,f&=(1<<(g-=C<<3))-1,e.next_in=r,e.next_out=i,e.avail_in=r>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function v(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function w(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=h,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new r.Buf32(p),t.distcode=t.distdyn=new r.Buf32(m),t.sane=1,t.back=-1,c):d}function y(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,w(e)):d}function C(e,t){var n,r;return e&&e.state?(r=e.state,t<0?(n=0,t=-t):(n=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?d:(null!==r.window&&r.wbits!==t&&(r.window=null),r.wrap=n,r.wbits=t,y(e))):d}function x(e,t){var n,r;return e?(r=new v,e.state=r,r.window=null,(n=C(e,t))!==c&&(e.state=null),n):d}var S,E,R=!0;function O(e){if(R){var t;for(S=new r.Buf32(512),E=new r.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(a(l,e.lens,0,288,S,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;a(u,e.lens,0,32,E,0,e.work,{bits:5}),R=!1}e.lencode=S,e.lenbits=9,e.distcode=E,e.distbits=5}function I(e,t,n,o){var i,s=e.state;return null===s.window&&(s.wsize=1<=s.wsize?(r.arraySet(s.window,t,n-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):((i=s.wsize-s.wnext)>o&&(i=o),r.arraySet(s.window,t,n-o,i,s.wnext),(o-=i)?(r.arraySet(s.window,t,n-o,o,0),s.wnext=o,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,n.check=i(n.check,U,2,0),x=0,S=0,n.mode=2;break}if(n.flags=0,n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&x)<<8)+(x>>8))%31){e.msg="incorrect header check",n.mode=g;break}if(8!=(15&x)){e.msg="unknown compression method",n.mode=g;break}if(S-=4,N=8+(15&(x>>>=4)),0===n.wbits)n.wbits=N;else if(N>n.wbits){e.msg="invalid window size",n.mode=g;break}n.dmax=1<>8&1),512&n.flags&&(U[0]=255&x,U[1]=x>>>8&255,n.check=i(n.check,U,2,0)),x=0,S=0,n.mode=3;case 3:for(;S<32;){if(0===y)break e;y--,x+=p[v++]<>>8&255,U[2]=x>>>16&255,U[3]=x>>>24&255,n.check=i(n.check,U,4,0)),x=0,S=0,n.mode=4;case 4:for(;S<16;){if(0===y)break e;y--,x+=p[v++]<>8),512&n.flags&&(U[0]=255&x,U[1]=x>>>8&255,n.check=i(n.check,U,2,0)),x=0,S=0,n.mode=5;case 5:if(1024&n.flags){for(;S<16;){if(0===y)break e;y--,x+=p[v++]<>>8&255,n.check=i(n.check,U,2,0)),x=0,S=0}else n.head&&(n.head.extra=null);n.mode=6;case 6:if(1024&n.flags&&((k=n.length)>y&&(k=y),k&&(n.head&&(N=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Array(n.head.extra_len)),r.arraySet(n.head.extra,p,v,k,N)),512&n.flags&&(n.check=i(n.check,p,k,v)),y-=k,v+=k,n.length-=k),n.length))break e;n.length=0,n.mode=7;case 7:if(2048&n.flags){if(0===y)break e;k=0;do{N=p[v+k++],n.head&&N&&n.length<65536&&(n.head.name+=String.fromCharCode(N))}while(N&&k>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=f;break;case 10:for(;S<32;){if(0===y)break e;y--,x+=p[v++]<>>=7&S,S-=7&S,n.mode=27;break}for(;S<3;){if(0===y)break e;y--,x+=p[v++]<>>=1)){case 0:n.mode=14;break;case 1:if(O(n),n.mode=20,6===t){x>>>=2,S-=2;break e}break;case 2:n.mode=17;break;case 3:e.msg="invalid block type",n.mode=g}x>>>=2,S-=2;break;case 14:for(x>>>=7&S,S-=7&S;S<32;){if(0===y)break e;y--,x+=p[v++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=g;break}if(n.length=65535&x,x=0,S=0,n.mode=15,6===t)break e;case 15:n.mode=16;case 16:if(k=n.length){if(k>y&&(k=y),k>C&&(k=C),0===k)break e;r.arraySet(m,p,v,k,w),y-=k,v+=k,C-=k,w+=k,n.length-=k;break}n.mode=f;break;case 17:for(;S<14;){if(0===y)break e;y--,x+=p[v++]<>>=5,S-=5,n.ndist=1+(31&x),x>>>=5,S-=5,n.ncode=4+(15&x),x>>>=4,S-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=g;break}n.have=0,n.mode=18;case 18:for(;n.have>>=3,S-=3}for(;n.have<19;)n.lens[W[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,B={bits:n.lenbits},z=a(0,n.lens,0,19,n.lencode,0,n.work,B),n.lenbits=B.bits,z){e.msg="invalid code lengths set",n.mode=g;break}n.have=0,n.mode=19;case 19:for(;n.have>>16&255,A=65535&H,!((D=H>>>24)<=S);){if(0===y)break e;y--,x+=p[v++]<>>=D,S-=D,n.lens[n.have++]=A;else{if(16===A){for(G=D+2;S>>=D,S-=D,0===n.have){e.msg="invalid bit length repeat",n.mode=g;break}N=n.lens[n.have-1],k=3+(3&x),x>>>=2,S-=2}else if(17===A){for(G=D+3;S>>=D)),x>>>=3,S-=3}else{for(G=D+7;S>>=D)),x>>>=7,S-=7}if(n.have+k>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=g;break}for(;k--;)n.lens[n.have++]=N}}if(n.mode===g)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=g;break}if(n.lenbits=9,B={bits:n.lenbits},z=a(l,n.lens,0,n.nlen,n.lencode,0,n.work,B),n.lenbits=B.bits,z){e.msg="invalid literal/lengths set",n.mode=g;break}if(n.distbits=6,n.distcode=n.distdyn,B={bits:n.distbits},z=a(u,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,B),n.distbits=B.bits,z){e.msg="invalid distances set",n.mode=g;break}if(n.mode=20,6===t)break e;case 20:n.mode=21;case 21:if(y>=6&&C>=258){e.next_out=w,e.avail_out=C,e.next_in=v,e.avail_in=y,n.hold=x,n.bits=S,s(e,R),w=e.next_out,m=e.output,C=e.avail_out,v=e.next_in,p=e.input,y=e.avail_in,x=n.hold,S=n.bits,n.mode===f&&(n.back=-1);break}for(n.back=0;P=(H=n.lencode[x&(1<>>16&255,A=65535&H,!((D=H>>>24)<=S);){if(0===y)break e;y--,x+=p[v++]<>V)])>>>16&255,A=65535&H,!(V+(D=H>>>24)<=S);){if(0===y)break e;y--,x+=p[v++]<>>=V,S-=V,n.back+=V}if(x>>>=D,S-=D,n.back+=D,n.length=A,0===P){n.mode=26;break}if(32&P){n.back=-1,n.mode=f;break}if(64&P){e.msg="invalid literal/length code",n.mode=g;break}n.extra=15&P,n.mode=22;case 22:if(n.extra){for(G=n.extra;S>>=n.extra,S-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=23;case 23:for(;P=(H=n.distcode[x&(1<>>16&255,A=65535&H,!((D=H>>>24)<=S);){if(0===y)break e;y--,x+=p[v++]<>V)])>>>16&255,A=65535&H,!(V+(D=H>>>24)<=S);){if(0===y)break e;y--,x+=p[v++]<>>=V,S-=V,n.back+=V}if(x>>>=D,S-=D,n.back+=D,64&P){e.msg="invalid distance code",n.mode=g;break}n.offset=A,n.extra=15&P,n.mode=24;case 24:if(n.extra){for(G=n.extra;S>>=n.extra,S-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=g;break}n.mode=25;case 25:if(0===C)break e;if(k=R-C,n.offset>k){if((k=n.offset-k)>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=g;break}k>n.wnext?(k-=n.wnext,M=n.wsize-k):M=n.wnext-k,k>n.length&&(k=n.length),F=n.window}else F=m,M=w-n.offset,k=n.length;k>C&&(k=C),C-=k,n.length-=k;do{m[w++]=F[M++]}while(--k);0===n.length&&(n.mode=21);break;case 26:if(0===C)break e;m[w++]=n.length,C--,n.mode=21;break;case 27:if(n.wrap){for(;S<32;){if(0===y)break e;y--,x|=p[v++]<=1&&0===L[I];I--);if(k>I&&(k=I),0===I)return c[d++]=20971520,c[d++]=20971520,f.bits=1,0;for(O=1;O0&&(0===e||1!==I))return-1;for(N[1]=0,E=1;E852||2===e&&P>592)return 1;for(;;){y=E-F,h[R]w?(C=z[B+h[R]],x=V[T+h[R]]):(C=96,x=0),g=1<>F)+(p-=g)]=y<<24|C<<16|x|0}while(0!==p);for(g=1<>=1;if(0!==g?(A&=g-1,A+=g):A=0,R++,0==--L[E]){if(E===I)break;E=t[n+h[R]]}if(E>k&&(A&b)!==m){for(0===F&&(F=k),v+=O,D=1<<(M=E-F);M+F852||2===e&&P>592)return 1;c[m=A&b]=k<<24|M<<16|v-d|0}}return 0!==A&&(c[v+A]=E-F<<24|64<<16|0),f.bits=k,0}},{"../utils/common":1}],10:[function(e,t,n){"use strict";t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],11:[function(e,t,n){"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],"/lib/inflate.js":[function(e,t,n){"use strict";var r=e("./zlib/inflate"),o=e("./utils/common"),i=e("./utils/strings"),s=e("./zlib/constants"),a=e("./zlib/messages"),l=e("./zlib/zstream"),u=e("./zlib/gzheader"),c=Object.prototype.toString;function d(e){if(!(this instanceof d))return new d(e);this.options=o.assign({chunkSize:16384,windowBits:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var n=r.inflateInit2(this.strm,t.windowBits);if(n!==s.Z_OK)throw new Error(a[n]);if(this.header=new u,r.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=i.string2buf(t.dictionary):"[object ArrayBuffer]"===c.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=r.inflateSetDictionary(this.strm,t.dictionary))!==s.Z_OK))throw new Error(a[n])}function h(e,t){var n=new d(t);if(n.push(e,!0),n.err)throw n.msg||a[n.err];return n.result}d.prototype.push=function(e,t){var n,a,l,u,d,h=this.strm,f=this.options.chunkSize,g=this.options.dictionary,p=!1;if(this.ended)return!1;a=t===~~t?t:!0===t?s.Z_FINISH:s.Z_NO_FLUSH,"string"==typeof e?h.input=i.binstring2buf(e):"[object ArrayBuffer]"===c.call(e)?h.input=new Uint8Array(e):h.input=e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new o.Buf8(f),h.next_out=0,h.avail_out=f),(n=r.inflate(h,s.Z_NO_FLUSH))===s.Z_NEED_DICT&&g&&(n=r.inflateSetDictionary(this.strm,g)),n===s.Z_BUF_ERROR&&!0===p&&(n=s.Z_OK,p=!1),n!==s.Z_STREAM_END&&n!==s.Z_OK)return this.onEnd(n),this.ended=!0,!1;h.next_out&&(0!==h.avail_out&&n!==s.Z_STREAM_END&&(0!==h.avail_in||a!==s.Z_FINISH&&a!==s.Z_SYNC_FLUSH)||("string"===this.options.to?(l=i.utf8border(h.output,h.next_out),u=h.next_out-l,d=i.buf2string(h.output,l),h.next_out=u,h.avail_out=f-u,u&&o.arraySet(h.output,h.output,l,u,0),this.onData(d)):this.onData(o.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(p=!0)}while((h.avail_in>0||0===h.avail_out)&&n!==s.Z_STREAM_END);return n===s.Z_STREAM_END&&(a=s.Z_FINISH),a===s.Z_FINISH?(n=r.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===s.Z_OK):a!==s.Z_SYNC_FLUSH||(this.onEnd(s.Z_OK),h.avail_out=0,!0)},d.prototype.onData=function(e){this.chunks.push(e)},d.prototype.onEnd=function(e){e===s.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},n.Inflate=d,n.inflate=h,n.inflateRaw=function(e,t){return(t=t||{}).raw=!0,h(e,t)},n.ungzip=h},{"./utils/common":1,"./utils/strings":2,"./zlib/constants":4,"./zlib/gzheader":6,"./zlib/inflate":8,"./zlib/messages":10,"./zlib/zstream":11}]},{},[])("/lib/inflate.js")},606:e=>{e.exports=function e(t,n,r){function o(s,a){if(!n[s]){if(!t[s]){if(i)return i(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var u=n[s]={exports:{}};t[s][0].call(u.exports,(function(e){return o(t[s][1][e]||e)}),u,u.exports,e,t,n,r)}return n[s].exports}for(var i=void 0,s=0;s0},i.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var e=this.buf_ptr_,t=this.input_.read(this.buf_,e,r);if(t<0)throw new Error("Unexpected end of input");if(t=8;)this.val_>>>=8,this.val_|=this.buf_[8191&this.pos_]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0},i.prototype.readBits=function(e){32-this.bit_pos_>>this.bit_pos_&o[e];return this.bit_pos_+=e,t},t.exports=i},{}],2:[function(e,t,n){n.lookup=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),n.lookupOffsets=new Uint16Array([1024,1536,1280,1536,0,256,768,512])},{}],3:[function(e,t,n){var r=e("./streams").BrotliInput,o=e("./streams").BrotliOutput,i=e("./bit_reader"),s=e("./dictionary"),a=e("./huffman").HuffmanCode,l=e("./huffman").BrotliBuildHuffmanTable,u=e("./context"),c=e("./prefix"),d=e("./transform"),h=8,f=16,g=256,p=704,m=26,b=6,v=2,w=8,y=255,C=1080,x=18,S=new Uint8Array([1,2,3,4,0,5,17,6,16,7,8,9,10,11,12,13,14,15]),E=16,R=new Uint8Array([3,2,1,0,3,3,3,3,3,3,2,2,2,2,2,2]),O=new Int8Array([0,0,0,0,-1,1,-2,2,-3,3,-1,1,-2,2,-3,3]),I=new Uint16Array([256,402,436,468,500,534,566,598,630,662,694,726,758,790,822,854,886,920,952,984,1016,1048,1080]);function k(e){var t;return 0===e.readBits(1)?16:(t=e.readBits(3))>0?17+t:(t=e.readBits(3))>0?8+t:17}function M(e){if(e.readBits(1)){var t=e.readBits(3);return 0===t?1:e.readBits(t)+(1<1&&0===i)throw new Error("Invalid size byte");o.meta_block_length|=i<<8*r}}else for(r=0;r4&&0===s)throw new Error("Invalid size nibble");o.meta_block_length|=s<<4*r}return++o.meta_block_length,o.input_end||o.is_metadata||(o.is_uncompressed=e.readBits(1)),o}function P(e,t,n){var r;return n.fillBitWindow(),(r=e[t+=n.val_>>>n.bit_pos_&y].bits-w)>0&&(n.bit_pos_+=w,t+=e[t].value,t+=n.val_>>>n.bit_pos_&(1<>=1,++c;for(p=0;p0;++p){var C,E=S[p],R=0;r.fillBitWindow(),R+=r.val_>>>r.bit_pos_&15,r.bit_pos_+=y[R].bits,C=y[R].value,m[E]=C,0!==C&&(b-=32>>C,++v)}if(1!==v&&0!==b)throw new Error("[ReadHuffmanCode] invalid num_codes or space");!function(e,t,n,r){for(var o=0,i=h,s=0,u=0,c=32768,d=[],g=0;g<32;g++)d.push(new a(0,0));for(l(d,0,5,e,x);o0;){var p,m=0;if(r.readMoreInput(),r.fillBitWindow(),m+=r.val_>>>r.bit_pos_&31,r.bit_pos_+=d[m].bits,(p=255&d[m].value)>p);else{var b,v,w=p-14,y=0;if(p===f&&(y=i),u!==y&&(s=0,u=y),b=s,s>0&&(s-=2,s<<=w),o+(v=(s+=r.readBits(w)+3)-b)>t)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var C=0;C>>5]),this.htrees=new Uint32Array(t)}function z(e,t){var n,r,o={num_htrees:null,context_map:null},i=0;t.readMoreInput();var s=o.num_htrees=M(t)+1,l=o.context_map=new Uint8Array(e);if(s<=1)return o;for(t.readBits(1)&&(i=t.readBits(4)+1),n=[],r=0;r=e)throw new Error("[DecodeContextMap] i >= context_map_size");l[r]=0,++r}else l[r]=u-i,++r}return t.readBits(1)&&function(e,t){var n,r=new Uint8Array(256);for(n=0;n<256;++n)r[n]=n;for(n=0;n=e&&(a-=e),r[n]=a,o[l+(1&i[u])]=a,++i[u]}function G(e,t,n,r,o,s){var a,l=o+1,u=n&o,c=s.pos_&i.IBUF_MASK;if(t<8||s.bit_pos_+(t<<3)0;)s.readMoreInput(),r[u++]=s.readBits(8),u===l&&(e.write(r,l),u=0);else{if(s.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;s.bit_pos_<32;)r[u]=s.val_>>>s.bit_pos_,s.bit_pos_+=8,++u,--t;if(c+(a=s.bit_end_pos_-s.bit_pos_>>3)>i.IBUF_MASK){for(var d=i.IBUF_MASK+1-c,h=0;h=l)for(e.write(r,l),u-=l,h=0;h=l;){if(a=l-u,s.input_.read(r,u,a)t.buffer.length){var ve=new Uint8Array(R+ne);ve.set(t.buffer),t.buffer=ve}if(O=be.input_end,Y=be.is_uncompressed,be.is_metadata)for(H(x);ne>0;--ne)x.readMoreInput(),x.readBits(8);else if(0!==ne)if(Y)x.bit_pos_=x.bit_pos_+7&-8,G(t,ne,R,h,l,x),R+=ne;else{for(n=0;n<3;++n)ie[n]=M(x)+1,ie[n]>=2&&(A(ie[n]+2,w,n*C,x),A(m,y,n*C,x),re[n]=V(y,n*C,x),ae[n]=1);for(x.readMoreInput(),X=(1<<(_=x.readBits(2)))-1,J=(Z=E+(x.readBits(4)<<_))+(48<<_),ue=new Uint8Array(ie[0]),n=0;n0;){var Ce,xe,Se,Ee,Re,Oe,Ie,ke,Me,Fe,De,Pe;for(x.readMoreInput(),0===re[1]&&(B(ie[1],w,1,oe,se,ae,x),re[1]=V(y,C,x),te=j[1].htrees[oe[1]]),--re[1],(xe=(Ce=P(j[1].codes,te,x))>>6)>=2?(xe-=2,Ie=-1):Ie=0,Se=c.kInsertRangeLut[xe]+(Ce>>3&7),Ee=c.kCopyRangeLut[xe]+(7&Ce),Re=c.kInsertLengthPrefixCode[Se].offset+x.readBits(c.kInsertLengthPrefixCode[Se].nbits),Oe=c.kCopyLengthPrefixCode[Ee].offset+x.readBits(c.kCopyLengthPrefixCode[Ee].nbits),U=h[R-1&l],W=h[R-2&l],Me=0;Me4?3:Oe-2))],(Ie=P(j[2].codes,j[2].htrees[ge],x))>=Z&&(Pe=(Ie-=Z)&X,Ie=Z+((Ae=(2+(1&(Ie>>=_))<<(De=1+(Ie>>1)))-4)+x.readBits(De)<<_)+Pe)),(ke=T(Ie,F,L))<0)throw new Error("[BrotliDecompress] invalid distance");if(Fe=R&l,ke>(I=R=s.minDictionaryWordLength&&Oe<=s.maxDictionaryWordLength))throw new Error("Invalid backward reference. pos: "+R+" distance: "+ke+" len: "+Oe+" bytes left: "+ne);var Ae=s.offsetsByLength[Oe],Ve=ke-I-1,Te=s.sizeBitsByLength[Oe],Le=Ve>>Te;if(Ae+=(Ve&(1<=f){t.write(h,o);for(var _x=0;_x0&&(F[3&L]=ke,++L),Oe>ne)throw new Error("Invalid backward reference. pos: "+R+" distance: "+ke+" len: "+Oe+" bytes left: "+ne);for(Me=0;Me>=1;return(e&n-1)+n}function s(e,t,n,o,i){do{e[t+(o-=n)]=new r(i.bits,i.value)}while(o>0)}function a(e,t,n){for(var r=1<0;--C[c])s(e,t+h,f,b,new r(255&c,65535&w[d++])),h=i(h,c);for(p=v-1,g=-1,c=n+1,f=2;c<=o;++c,f<<=1)for(;C[c]>0;--C[c])(h&p)!==g&&(t+=b,v+=b=1<<(m=a(C,c,n)),e[y+(g=h&p)]=new r(m+n&255,t-y-g&65535)),s(e,t+(h>>n),f,b,new r(c-n&255,65535&w[d++])),h=i(h,c);return v}},{}],8:[function(e,t,n){"use strict";n.byteLength=function(e){var t=l(e),n=t[0],r=t[1];return 3*(n+r)/4-r},n.toByteArray=function(e){for(var t,n=l(e),r=n[0],s=n[1],a=new i(function(e,t,n){return 3*(t+n)/4-n}(0,r,s)),u=0,c=s>0?r-4:r,d=0;d>16&255,a[u++]=t>>8&255,a[u++]=255&t;return 2===s&&(t=o[e.charCodeAt(d)]<<2|o[e.charCodeAt(d+1)]>>4,a[u++]=255&t),1===s&&(t=o[e.charCodeAt(d)]<<10|o[e.charCodeAt(d+1)]<<4|o[e.charCodeAt(d+2)]>>2,a[u++]=t>>8&255,a[u++]=255&t),a},n.fromByteArray=function(e){for(var t,n=e.length,o=n%3,i=[],s=16383,a=0,l=n-o;al?l:a+s));return 1===o?(t=e[n-1],i.push(r[t>>2]+r[t<<4&63]+"==")):2===o&&(t=(e[n-2]<<8)+e[n-1],i.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"=")),i.join("")};for(var r=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0;a<64;++a)r[a]=s[a],o[s.charCodeAt(a)]=a;function l(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function u(e,t,n){for(var o,i=[],s=t;s>18&63]+r[a>>12&63]+r[a>>6&63]+r[63&a]);var a;return i.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},{}],9:[function(e,t,n){function r(e,t){this.offset=e,this.nbits=t}n.kBlockLengthPrefixCode=[new r(1,2),new r(5,2),new r(9,2),new r(13,2),new r(17,3),new r(25,3),new r(33,3),new r(41,3),new r(49,4),new r(65,4),new r(81,4),new r(97,4),new r(113,5),new r(145,5),new r(177,5),new r(209,5),new r(241,6),new r(305,6),new r(369,7),new r(497,8),new r(753,9),new r(1265,10),new r(2289,11),new r(4337,12),new r(8433,13),new r(16625,24)],n.kInsertLengthPrefixCode=[new r(0,0),new r(1,0),new r(2,0),new r(3,0),new r(4,0),new r(5,0),new r(6,1),new r(8,1),new r(10,2),new r(14,2),new r(18,3),new r(26,3),new r(34,4),new r(50,4),new r(66,5),new r(98,5),new r(130,6),new r(194,7),new r(322,8),new r(578,9),new r(1090,10),new r(2114,12),new r(6210,14),new r(22594,24)],n.kCopyLengthPrefixCode=[new r(2,0),new r(3,0),new r(4,0),new r(5,0),new r(6,0),new r(7,0),new r(8,0),new r(9,0),new r(10,1),new r(12,1),new r(14,2),new r(18,2),new r(22,3),new r(30,3),new r(38,4),new r(54,4),new r(70,5),new r(102,5),new r(134,6),new r(198,7),new r(326,8),new r(582,9),new r(1094,10),new r(2118,24)],n.kInsertRangeLut=[0,0,8,8,0,16,8,16,16],n.kCopyRangeLut=[0,8,0,8,16,0,16,8,16]},{}],10:[function(e,t,n){function r(e){this.buffer=e,this.pos=0}function o(e){this.buffer=e,this.pos=0}r.prototype.read=function(e,t,n){this.pos+n>this.buffer.length&&(n=this.buffer.length-this.pos);for(var r=0;rthis.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(e.subarray(0,t),this.pos),this.pos+=t,t},n.BrotliOutput=o},{}],11:[function(e,t,n){var r=e("./dictionary"),o=10,i=11;function s(e,t,n){this.prefix=new Uint8Array(e.length),this.transform=t,this.suffix=new Uint8Array(n.length);for(var r=0;r'),new s("",0,"\n"),new s("",3,""),new s("",0,"]"),new s("",0," for "),new s("",14,""),new s("",2,""),new s("",0," a "),new s("",0," that "),new s(" ",o,""),new s("",0,". "),new s(".",0,""),new s(" ",0,", "),new s("",15,""),new s("",0," with "),new s("",0,"'"),new s("",0," from "),new s("",0," by "),new s("",16,""),new s("",17,""),new s(" the ",0,""),new s("",4,""),new s("",0,". The "),new s("",i,""),new s("",0," on "),new s("",0," as "),new s("",0," is "),new s("",7,""),new s("",1,"ing "),new s("",0,"\n\t"),new s("",0,":"),new s(" ",0,". "),new s("",0,"ed "),new s("",20,""),new s("",18,""),new s("",6,""),new s("",0,"("),new s("",o,", "),new s("",8,""),new s("",0," at "),new s("",0,"ly "),new s(" the ",0," of "),new s("",5,""),new s("",9,""),new s(" ",o,", "),new s("",o,'"'),new s(".",0,"("),new s("",i," "),new s("",o,'">'),new s("",0,'="'),new s(" ",0,"."),new s(".com/",0,""),new s(" the ",0," of the "),new s("",o,"'"),new s("",0,". This "),new s("",0,","),new s(".",0," "),new s("",o,"("),new s("",o,"."),new s("",0," not "),new s(" ",0,'="'),new s("",0,"er "),new s(" ",i," "),new s("",0,"al "),new s(" ",i,""),new s("",0,"='"),new s("",i,'"'),new s("",o,". "),new s(" ",0,"("),new s("",0,"ful "),new s(" ",o,". "),new s("",0,"ive "),new s("",0,"less "),new s("",i,"'"),new s("",0,"est "),new s(" ",o,"."),new s("",i,'">'),new s(" ",0,"='"),new s("",o,","),new s("",0,"ize "),new s("",i,"."),new s(" ",0,""),new s(" ",0,","),new s("",o,'="'),new s("",i,'="'),new s("",0,"ous "),new s("",i,", "),new s("",o,"='"),new s(" ",o,","),new s(" ",i,'="'),new s(" ",i,", "),new s("",i,","),new s("",i,"("),new s("",i,". "),new s(" ",i,"."),new s("",i,"='"),new s(" ",i,". "),new s(" ",o,'="'),new s(" ",i,"='"),new s(" ",o,"='")];function l(e,t){return e[t]<192?(e[t]>=97&&e[t]<=122&&(e[t]^=32),1):e[t]<224?(e[t+1]^=32,2):(e[t+2]^=5,3)}n.kTransforms=a,n.kNumTransforms=a.length,n.transformDictionaryWord=function(e,t,n,s,u){var c,d=a[u].prefix,h=a[u].suffix,f=a[u].transform,g=f<12?0:f-11,p=0,m=t;g>s&&(g=s);for(var b=0;b0;){var v=l(e,c);c+=v,s-=v}for(var w=0;w{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";const e=window.React,t=window.wp.i18n,r=window.wp.element,o=window.wp.components,i=window.wp.apiFetch;var s=n.n(i),a=n(606),l=n.n(a),u=n(528),c=n.n(u);globalThis.fetch;class d{constructor(e,t={},n){this.type=e,this.detail=t,this.msg=n,Object.defineProperty(this,"__mayPropagate",{enumerable:!1,writable:!0}),this.__mayPropagate=!0}preventDefault(){}stopPropagation(){this.__mayPropagate=!1}valueOf(){return this}toString(){return this.msg?`[${this.type} event]: ${this.msg}`:`[${this.type} event]`}}class h{constructor(){this.listeners={}}addEventListener(e,t,n){let r=this.listeners[e]||[];n?r.unshift(t):r.push(t),this.listeners[e]=r}removeEventListener(e,t){let n=this.listeners[e]||[],r=n.findIndex((e=>e===t));r>-1&&(n.splice(r,1),this.listeners[e]=n)}dispatch(e){let t=this.listeners[e.type];if(t)for(let n=0,r=t.length;n{let t=e.replace(/get(Big)?/,"").toLowerCase(),n=parseInt(e.replace(/[^\d]/g,""))/8;Object.defineProperty(this,t,{get:()=>this.getValue(e,n)})}))}get currentPosition(){return this.start+this.offset}set currentPosition(e){this.start=e,this.offset=0}skip(e=0,t=8){this.offset+=e*t/8}getValue(e,t){let n=this.start+this.offset;this.offset+=t;try{return this.data[e](n)}catch(n){throw console.error("parser",e,t,this),console.error("parser",this.start,this.offset),n}}flags(e){if(8===e||16===e||32===e||64===e)return this[`uint${e}`].toString(2).padStart(e,0).split("").map((e=>"1"===e));console.error("Error parsing flags: flag types can only be 1, 2, 4, or 8 bytes long"),console.trace()}get tag(){const e=this.uint32;return t=[e>>24&255,e>>16&255,e>>8&255,255&e],Array.from(t).map((e=>String.fromCharCode(e))).join("");var t}get fixed(){return this.int16+Math.round(1e3*this.uint16/65356)/1e3}get legacyFixed(){let e=this.uint16,t=this.uint16.toString(16).padStart(4,0);return parseFloat(`${e}.${t}`)}get uint24(){return(this.uint8<<16)+(this.uint8<<8)+this.uint8}get uint128(){let e=0;for(let t=0;t<5;t++){let t=this.uint8;if(e=128*e+(127&t),t<128)break}return e}get longdatetime(){return new Date(f+1e3*parseInt(this.int64.toString()))}get fword(){return this.int16}get ufword(){return this.uint16}get Offset16(){return this.uint16}get Offset32(){return this.uint32}get F2DOT14(){const e=p.uint16;return[0,1,-2,-1][e>>14]+(16383&e)/16384}verifyLength(){this.offset!=this.length&&console.error(`unexpected parsed table size (${this.offset}) for "${this.name}" (expected ${this.length})`)}readBytes(e=0,t=0,n=8,r=!1){if(0===(e=e||this.length))return[];t&&(this.currentPosition=t);const o=`${r?"":"u"}int${n}`,i=[];for(;e--;)i.push(this[o]);return i}}class m{constructor(e){const t={enumerable:!1,get:()=>e};Object.defineProperty(this,"parser",t);const n=e.currentPosition,r={enumerable:!1,get:()=>n};Object.defineProperty(this,"start",r)}load(e){Object.keys(e).forEach((t=>{let n=Object.getOwnPropertyDescriptor(e,t);n.get?this[t]=n.get.bind(this):void 0!==n.value&&(this[t]=n.value)})),this.parser.length&&this.parser.verifyLength()}}class b extends m{constructor(e,t,n){const{parser:r,start:o}=super(new g(e,t,n)),i={enumerable:!1,get:()=>r};Object.defineProperty(this,"p",i);const s={enumerable:!1,get:()=>o};Object.defineProperty(this,"tableStart",s)}}function v(e,t,n){let r;Object.defineProperty(e,t,{get:()=>r||(r=n(),r),enumerable:!0})}class w extends b{constructor(e,t,n){const{p:r}=super({offset:0,length:12},t,"sfnt");this.version=r.uint32,this.numTables=r.uint16,this.searchRange=r.uint16,this.entrySelector=r.uint16,this.rangeShift=r.uint16,r.verifyLength(),this.directory=[...new Array(this.numTables)].map((e=>new y(r))),this.tables={},this.directory.forEach((e=>{v(this.tables,e.tag.trim(),(()=>n(this.tables,{tag:e.tag,offset:e.offset,length:e.length},t)))}))}}class y{constructor(e){this.tag=e.tag,this.checksum=e.uint32,this.offset=e.uint32,this.length=e.uint32}}const C=c().inflate||void 0;class x extends b{constructor(e,t,n){const{p:r}=super({offset:0,length:44},t,"woff");this.signature=r.tag,this.flavor=r.uint32,this.length=r.uint32,this.numTables=r.uint16,r.uint16,this.totalSfntSize=r.uint32,this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.metaOffset=r.uint32,this.metaLength=r.uint32,this.metaOrigLength=r.uint32,this.privOffset=r.uint32,this.privLength=r.uint32,r.verifyLength(),this.directory=[...new Array(this.numTables)].map((e=>new S(r))),E(this,t,n)}}class S{constructor(e){this.tag=e.tag,this.offset=e.uint32,this.compLength=e.uint32,this.origLength=e.uint32,this.origChecksum=e.uint32}}function E(e,t,n){e.tables={},e.directory.forEach((r=>{v(e.tables,r.tag.trim(),(()=>{let o=0,i=t;if(r.compLength!==r.origLength){const e=t.buffer.slice(r.offset,r.offset+r.compLength);let n;if(!C){const e="no brotli decoder available to decode WOFF2 font";throw font.onerror&&font.onerror(e),new Error(e)}n=C(new Uint8Array(e)),i=new DataView(n.buffer)}else o=r.offset;return n(e.tables,{tag:r.tag,offset:o,length:r.origLength},i)}))}))}const R=l();class O extends b{constructor(e,t,n){const{p:r}=super({offset:0,length:48},t,"woff2");this.signature=r.tag,this.flavor=r.uint32,this.length=r.uint32,this.numTables=r.uint16,r.uint16,this.totalSfntSize=r.uint32,this.totalCompressedSize=r.uint32,this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.metaOffset=r.uint32,this.metaLength=r.uint32,this.metaOrigLength=r.uint32,this.privOffset=r.uint32,this.privLength=r.uint32,r.verifyLength(),this.directory=[...new Array(this.numTables)].map((e=>new I(r)));let o,i=r.currentPosition;this.directory[0].offset=0,this.directory.forEach(((e,t)=>{let n=this.directory[t+1];n&&(n.offset=e.offset+(void 0!==e.transformLength?e.transformLength:e.origLength))}));let s=t.buffer.slice(i);if(!R){const t="no brotli decoder available to decode WOFF2 font";throw e.onerror&&e.onerror(t),new Error(t)}o=R(new Uint8Array(s)),function(e,t,n){e.tables={},e.directory.forEach((r=>{v(e.tables,r.tag.trim(),(()=>{const o=r.offset,i=o+(r.transformLength?r.transformLength:r.origLength),s=new DataView(t.slice(o,i).buffer);try{return n(e.tables,{tag:r.tag,offset:0,length:r.origLength},s)}catch(e){console.error(e)}}))}))}(this,o,n)}}class I{constructor(e){this.flags=e.uint8;const t=this.tagNumber=63&this.flags;this.tag=63===t?e.tag:["cmap","head","hhea","hmtx","maxp","name","OS/2","post","cvt ","fpgm","glyf","loca","prep","CFF ","VORG","EBDT","EBLC","gasp","hdmx","kern","LTSH","PCLT","VDMX","vhea","vmtx","BASE","GDEF","GPOS","GSUB","EBSC","JSTF","MATH","CBDT","CBLC","COLR","CPAL","SVG ","sbix","acnt","avar","bdat","bloc","bsln","cvar","fdsc","feat","fmtx","fvar","gvar","hsty","just","lcar","mort","morx","opbd","prop","trak","Zapf","Silf","Glat","Gloc","Feat","Sill"][63&t];let n=0!=(this.transformVersion=(192&this.flags)>>6);"glyf"!==this.tag&&"loca"!==this.tag||(n=3!==this.transformVersion),this.origLength=e.uint128,n&&(this.transformLength=e.uint128)}}const k={};let M=!1;function F(e,t,n){let r=t.tag.replace(/[^\w\d]/g,""),o=k[r];return o?new o(t,n,e):(console.warn(`lib-font has no definition for ${r}. The table was skipped.`),{})}function D(){let e=0;function t(n,r){if(!M)return e>10?r(new Error("loading took too long")):(e++,setTimeout((()=>t(n)),250));n(F)}return new Promise(((e,n)=>t(e)))}Promise.all([Promise.resolve().then((function(){return ee})),Promise.resolve().then((function(){return te})),Promise.resolve().then((function(){return ne})),Promise.resolve().then((function(){return oe})),Promise.resolve().then((function(){return ie})),Promise.resolve().then((function(){return le})),Promise.resolve().then((function(){return ue})),Promise.resolve().then((function(){return de})),Promise.resolve().then((function(){return xe})),Promise.resolve().then((function(){return Ve})),Promise.resolve().then((function(){return Dt})),Promise.resolve().then((function(){return Pt})),Promise.resolve().then((function(){return Tt})),Promise.resolve().then((function(){return zt})),Promise.resolve().then((function(){return Bt})),Promise.resolve().then((function(){return Gt})),Promise.resolve().then((function(){return Ut})),Promise.resolve().then((function(){return Wt})),Promise.resolve().then((function(){return jt})),Promise.resolve().then((function(){return qt})),Promise.resolve().then((function(){return Kt})),Promise.resolve().then((function(){return Yt})),Promise.resolve().then((function(){return Zt})),Promise.resolve().then((function(){return en})),Promise.resolve().then((function(){return nn})),Promise.resolve().then((function(){return rn})),Promise.resolve().then((function(){return on})),Promise.resolve().then((function(){return sn})),Promise.resolve().then((function(){return an})),Promise.resolve().then((function(){return cn})),Promise.resolve().then((function(){return pn})),Promise.resolve().then((function(){return vn})),Promise.resolve().then((function(){return yn})),Promise.resolve().then((function(){return Sn})),Promise.resolve().then((function(){return En})),Promise.resolve().then((function(){return Rn})),Promise.resolve().then((function(){return In})),Promise.resolve().then((function(){return kn})),Promise.resolve().then((function(){return Pn})),Promise.resolve().then((function(){return An})),Promise.resolve().then((function(){return Tn}))]).then((e=>{e.forEach((e=>{let t=Object.keys(e)[0];k[t]=e[t]})),M=!0}));const P=[0,1,0,0],A=[79,84,84,79],V=[119,79,70,70],T=[119,79,70,50];function L(e,t){if(e.length===t.length){for(let n=0;n{globalThis.document&&!this.options.skipStyleSheet&&await async function(e,t,n={}){if(!globalThis.document)return;let r=function(e,t){let n=e.lastIndexOf("."),r=(e.substring(n+1)||"").toLowerCase(),o={ttf:"truetype",otf:"opentype",woff:"woff",woff2:"woff2"}[r];if(o)return o;let i={eot:"The .eot format is not supported: it died in January 12, 2016, when Microsoft retired all versions of IE that didn't already support WOFF.",svg:"The .svg format is not supported: SVG fonts (not to be confused with OpenType with embedded SVG) were so bad we took the entire fonts chapter out of the SVG specification again.",fon:"The .fon format is not supported: this is an ancient Windows bitmap font format.",ttc:"Based on the current CSS specification, font collections are not (yet?) supported."}[r];if(i||(i=`${e} is not a known webfont format.`),t)throw new Error(i);console.warn(`Could not load font: ${i}`)}(t,n.errorOnStyle);if(!r)return;let o=document.createElement("style");o.className="injected-by-Font-js";let i=[];return n.styleRules&&(i=Object.entries(n.styleRules).map((([e,t])=>`${e}: ${t};`))),o.textContent=`\n@font-face {\n font-family: "${e}";\n ${i.join("\n\t")}\n src: url("${t}") format("${r}");\n}`,globalThis.document.head.appendChild(o),o}(this.name,e,this.options),this.loadFont(e)})()}async loadFont(e,t){fetch(e).then((e=>function(e){if(!e.ok)throw new Error(`HTTP ${e.status} - ${e.statusText}`);return e}(e)&&e.arrayBuffer())).then((n=>this.fromDataBuffer(n,t||e))).catch((n=>{const r=new d("error",n,`Failed to load font at ${t||e}`);this.dispatch(r),this.onerror&&this.onerror(r)}))}async fromDataBuffer(e,t){this.fontData=new DataView(e);let n=function(e){const t=[e.getUint8(0),e.getUint8(1),e.getUint8(2),e.getUint8(3)];return L(t,P)||L(t,A)?"SFNT":L(t,V)?"WOFF":L(t,T)?"WOFF2":void 0}(this.fontData);if(!n)throw new Error(`${t} is either an unsupported font format, or not a font at all.`);await this.parseBasicData(n);const r=new d("load",{font:this});this.dispatch(r),this.onload&&this.onload(r)}async parseBasicData(e){return D().then((t=>("SFNT"===e&&(this.opentype=new w(this,this.fontData,t)),"WOFF"===e&&(this.opentype=new x(this,this.fontData,t)),"WOFF2"===e&&(this.opentype=new O(this,this.fontData,t)),this.opentype)))}getGlyphId(e){return this.opentype.tables.cmap.getGlyphId(e)}reverse(e){return this.opentype.tables.cmap.reverse(e)}supports(e){return 0!==this.getGlyphId(e)}supportsVariation(e){return!1!==this.opentype.tables.cmap.supportsVariation(e)}measureText(e,t=16){if(this.__unloaded)throw new Error("Cannot measure text: font was unloaded. Please reload before calling measureText()");let n=document.createElement("div");n.textContent=e,n.style.fontFamily=this.name,n.style.fontSize=`${t}px`,n.style.color="transparent",n.style.background="transparent",n.style.top="0",n.style.left="0",n.style.position="absolute",document.body.appendChild(n);let r=n.getBoundingClientRect();document.body.removeChild(n);const o=this.opentype.tables["OS/2"];return r.fontSize=t,r.ascender=o.sTypoAscender,r.descender=o.sTypoDescender,r}unload(){if(this.styleElement.parentNode){this.styleElement.parentNode.removeElement(this.styleElement);const e=new d("unload",{font:this});this.dispatch(e),this.onunload&&this.onunload(e)}this._unloaded=!0}load(){if(this.__unloaded){delete this.__unloaded,document.head.appendChild(this.styleElement);const e=new d("load",{font:this});this.dispatch(e),this.onload&&this.onload(e)}}}globalThis.Font=N;class z extends m{constructor(e,t,n){super(e),this.plaformID=t,this.encodingID=n}}class B extends z{constructor(e,t,n){super(e,t,n),this.format=0,this.length=e.uint16,this.language=e.uint16,this.glyphIdArray=[...new Array(256)].map((t=>e.uint8))}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 0. only supports(id) is implemented.")),0<=e&&e<=255}reverse(e){return console.warn("reverse not implemented for cmap subtable format 0"),{}}getSupportedCharCodes(){return[{start:1,end:256}]}}class G extends z{constructor(e,t,n){super(e,t,n),this.format=2,this.length=e.uint16,this.language=e.uint16,this.subHeaderKeys=[...new Array(256)].map((t=>e.uint16));const r=Math.max(...this.subHeaderKeys),o=e.currentPosition;v(this,"subHeaders",(()=>(e.currentPosition=o,[...new Array(r)].map((t=>new H(e))))));const i=o+8*r;v(this,"glyphIndexArray",(()=>(e.currentPosition=i,[...new Array(r)].map((t=>e.uint16)))))}supports(e){e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 2. only supports(id) is implemented."));const t=e&&255,n=e&&65280,r=this.subHeaders[n],o=this.subHeaders[r],i=o.firstCode,s=i+o.entryCount;return i<=t&&t<=s}reverse(e){return console.warn("reverse not implemented for cmap subtable format 2"),{}}getSupportedCharCodes(e=!1){return e?this.subHeaders.map((e=>({firstCode:e.firstCode,lastCode:e.lastCode}))):this.subHeaders.map((e=>({start:e.firstCode,end:e.lastCode})))}}class H{constructor(e){this.firstCode=e.uint16,this.entryCount=e.uint16,this.lastCode=this.first+this.entryCount,this.idDelta=e.int16,this.idRangeOffset=e.uint16}}class U extends z{constructor(e,t,n){super(e,t,n),this.format=4,this.length=e.uint16,this.language=e.uint16,this.segCountX2=e.uint16,this.segCount=this.segCountX2/2,this.searchRange=e.uint16,this.entrySelector=e.uint16,this.rangeShift=e.uint16;const r=e.currentPosition;v(this,"endCode",(()=>e.readBytes(this.segCount,r,16)));const o=r+2+this.segCountX2;v(this,"startCode",(()=>e.readBytes(this.segCount,o,16)));const i=o+this.segCountX2;v(this,"idDelta",(()=>e.readBytes(this.segCount,i,16,!0)));const s=i+this.segCountX2;v(this,"idRangeOffset",(()=>e.readBytes(this.segCount,s,16)));const a=s+this.segCountX2,l=this.length-(a-this.tableStart);v(this,"glyphIdArray",(()=>e.readBytes(l,a,16))),v(this,"segments",(()=>this.buildSegments(s,a,e)))}buildSegments(e,t,n){return[...new Array(this.segCount)].map(((t,r)=>{let o=this.startCode[r],i=this.endCode[r],s=this.idDelta[r],a=this.idRangeOffset[r],l=e+2*r,u=[];if(0===a)for(let e=o+s,t=i+s;e<=t;e++)u.push(e);else for(let e=0,t=i-o;e<=t;e++)n.currentPosition=l+a+2*e,u.push(n.uint16);return{startCode:o,endCode:i,idDelta:s,idRangeOffset:a,glyphIDs:u}}))}reverse(e){let t=this.segments.find((t=>t.glyphIDs.includes(e)));if(!t)return{};const n=t.startCode+t.glyphIDs.indexOf(e);return{code:n,unicode:String.fromCodePoint(n)}}getGlyphId(e){if(e.charCodeAt&&(e=e.charCodeAt(0)),55296<=e&&e<=57343)return 0;if(65534==(65534&e)||65535==(65535&e))return 0;let t=this.segments.find((t=>t.startCode<=e&&e<=t.endCode));return t?t.glyphIDs[e-t.startCode]:0}supports(e){return 0!==this.getGlyphId(e)}getSupportedCharCodes(e=!1){return e?this.segments:this.segments.map((e=>({start:e.startCode,end:e.endCode})))}}class W extends z{constructor(e,t,n){super(e,t,n),this.format=6,this.length=e.uint16,this.language=e.uint16,this.firstCode=e.uint16,this.entryCount=e.uint16,this.lastCode=this.firstCode+this.entryCount-1,v(this,"glyphIdArray",(()=>[...new Array(this.entryCount)].map((t=>e.uint16))))}supports(e){if(e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 6. only supports(id) is implemented.")),ethis.firstCode+this.entryCount)return{};const t=e-this.firstCode;return{code:t,unicode:String.fromCodePoint(t)}}reverse(e){let t=this.glyphIdArray.indexOf(e);if(t>-1)return this.firstCode+t}getSupportedCharCodes(e=!1){return e?[{firstCode:this.firstCode,lastCode:this.lastCode}]:[{start:this.firstCode,end:this.lastCode}]}}class j extends z{constructor(e,t,n){super(e,t,n),this.format=8,e.uint16,this.length=e.uint32,this.language=e.uint32,this.is32=[...new Array(8192)].map((t=>e.uint8)),this.numGroups=e.uint32,v(this,"groups",(()=>[...new Array(this.numGroups)].map((t=>new q(e)))))}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 8. only supports(id) is implemented.")),-1!==this.groups.findIndex((t=>t.startcharCode<=e&&e<=t.endcharCode))}reverse(e){return console.warn("reverse not implemented for cmap subtable format 8"),{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map((e=>({start:e.startcharCode,end:e.endcharCode})))}}class q{constructor(e){this.startcharCode=e.uint32,this.endcharCode=e.uint32,this.startGlyphID=e.uint32}}class K extends z{constructor(e,t,n){super(e,t,n),this.format=10,e.uint16,this.length=e.uint32,this.language=e.uint32,this.startCharCode=e.uint32,this.numChars=e.uint32,this.endCharCode=this.startCharCode+this.numChars,v(this,"glyphs",(()=>[...new Array(this.numChars)].map((t=>e.uint16))))}supports(e){return e.charCodeAt&&(e=-1,console.warn("supports(character) not implemented for cmap subtable format 10. only supports(id) is implemented.")),!(ethis.startCharCode+this.numChars)&&e-this.startCharCode}reverse(e){return console.warn("reverse not implemented for cmap subtable format 10"),{}}getSupportedCharCodes(e=!1){return e?[{startCharCode:this.startCharCode,endCharCode:this.endCharCode}]:[{start:this.startCharCode,end:this.endCharCode}]}}class Y extends z{constructor(e,t,n){super(e,t,n),this.format=12,e.uint16,this.length=e.uint32,this.language=e.uint32,this.numGroups=e.uint32,v(this,"groups",(()=>[...new Array(this.numGroups)].map((t=>new _(e)))))}supports(e){return e.charCodeAt&&(e=e.charCodeAt(0)),55296<=e&&e<=57343||65534==(65534&e)||65535==(65535&e)?0:-1!==this.groups.findIndex((t=>t.startCharCode<=e&&e<=t.endCharCode))}reverse(e){for(let t of this.groups){let n=t.startGlyphID;if(n>e)continue;if(n===e)return t.startCharCode;if(n+(t.endCharCode-t.startCharCode)({start:e.startCharCode,end:e.endCharCode})))}}class _{constructor(e){this.startCharCode=e.uint32,this.endCharCode=e.uint32,this.startGlyphID=e.uint32}}class Z extends z{constructor(e,t,n){super(e,t,n),this.format=13,e.uint16,this.length=e.uint32,this.language=e.uint32,this.numGroups=e.uint32,v(this,"groups",[...new Array(this.numGroups)].map((t=>new X(e))))}supports(e){return e.charCodeAt&&(e=e.charCodeAt(0)),-1!==this.groups.findIndex((t=>t.startCharCode<=e&&e<=t.endCharCode))}reverse(e){return console.warn("reverse not implemented for cmap subtable format 13"),{}}getSupportedCharCodes(e=!1){return e?this.groups:this.groups.map((e=>({start:e.startCharCode,end:e.endCharCode})))}}class X{constructor(e){this.startCharCode=e.uint32,this.endCharCode=e.uint32,this.glyphID=e.uint32}}class J extends z{constructor(e,t,n){super(e,t,n),this.subTableStart=e.currentPosition,this.format=14,this.length=e.uint32,this.numVarSelectorRecords=e.uint32,v(this,"varSelectors",(()=>[...new Array(this.numVarSelectorRecords)].map((t=>new Q(e)))))}supports(){return console.warn("supports not implemented for cmap subtable format 14"),0}getSupportedCharCodes(){return console.warn("getSupportedCharCodes not implemented for cmap subtable format 14"),[]}reverse(e){return console.warn("reverse not implemented for cmap subtable format 14"),{}}supportsVariation(e){return this.varSelector.find((t=>t.varSelector===e))||!1}getSupportedVariations(){return this.varSelectors.map((e=>e.varSelector))}}class Q{constructor(e){this.varSelector=e.uint24,this.defaultUVSOffset=e.Offset32,this.nonDefaultUVSOffset=e.Offset32}}class ${constructor(e,t){const n=this.platformID=e.uint16,r=this.encodingID=e.uint16,o=this.offset=e.Offset32;v(this,"table",(()=>(e.currentPosition=t+o,function(e,t,n){const r=e.uint16;return 0===r?new B(e,t,n):2===r?new G(e,t,n):4===r?new U(e,t,n):6===r?new W(e,t,n):8===r?new j(e,t,n):10===r?new K(e,t,n):12===r?new Y(e,t,n):13===r?new Z(e,t,n):14===r?new J(e,t,n):{}}(e,n,r))))}}var ee=Object.freeze({__proto__:null,cmap:class extends b{constructor(e,t){const{p:n}=super(e,t);this.version=n.uint16,this.numTables=n.uint16,this.encodingRecords=[...new Array(this.numTables)].map((e=>new $(n,this.tableStart)))}getSubTable(e){return this.encodingRecords[e].table}getSupportedEncodings(){return this.encodingRecords.map((e=>({platformID:e.platformID,encodingId:e.encodingID})))}getSupportedCharCodes(e,t){const n=this.encodingRecords.findIndex((n=>n.platformID===e&&n.encodingID===t));return-1!==n&&this.getSubTable(n).getSupportedCharCodes()}reverse(e){for(let t=0;t{let o=this.getSubTable(r);return!!o.getGlyphId&&(t=o.getGlyphId(e),0!==t)})),t}supports(e){return this.encodingRecords.some(((t,n)=>{const r=this.getSubTable(n);return r.supports&&!1!==r.supports(e)}))}supportsVariation(e){return this.encodingRecords.some(((t,n)=>{const r=this.getSubTable(n);return r.supportsVariation&&!1!==r.supportsVariation(e)}))}}}),te=Object.freeze({__proto__:null,head:class extends b{constructor(e,t){const{p:n}=super(e,t);this.load({majorVersion:n.uint16,minorVersion:n.uint16,fontRevision:n.fixed,checkSumAdjustment:n.uint32,magicNumber:n.uint32,flags:n.flags(16),unitsPerEm:n.uint16,created:n.longdatetime,modified:n.longdatetime,xMin:n.int16,yMin:n.int16,xMax:n.int16,yMax:n.int16,macStyle:n.flags(16),lowestRecPPEM:n.uint16,fontDirectionHint:n.uint16,indexToLocFormat:n.uint16,glyphDataFormat:n.uint16})}}}),ne=Object.freeze({__proto__:null,hhea:class extends b{constructor(e,t){const{p:n}=super(e,t);this.majorVersion=n.uint16,this.minorVersion=n.uint16,this.ascender=n.fword,this.descender=n.fword,this.lineGap=n.fword,this.advanceWidthMax=n.ufword,this.minLeftSideBearing=n.fword,this.minRightSideBearing=n.fword,this.xMaxExtent=n.fword,this.caretSlopeRise=n.int16,this.caretSlopeRun=n.int16,this.caretOffset=n.int16,n.int16,n.int16,n.int16,n.int16,this.metricDataFormat=n.int16,this.numberOfHMetrics=n.uint16,n.verifyLength()}}});class re{constructor(e,t){this.advanceWidth=e,this.lsb=t}}var oe=Object.freeze({__proto__:null,hmtx:class extends b{constructor(e,t,n){const{p:r}=super(e,t),o=n.hhea.numberOfHMetrics,i=n.maxp.numGlyphs,s=r.currentPosition;if(v(this,"hMetrics",(()=>(r.currentPosition=s,[...new Array(o)].map((e=>new re(r.uint16,r.int16)))))),o(r.currentPosition=e,[...new Array(i-o)].map((e=>r.int16)))))}}}}),ie=Object.freeze({__proto__:null,maxp:class extends b{constructor(e,t){const{p:n}=super(e,t);this.version=n.legacyFixed,this.numGlyphs=n.uint16,1===this.version&&(this.maxPoints=n.uint16,this.maxContours=n.uint16,this.maxCompositePoints=n.uint16,this.maxCompositeContours=n.uint16,this.maxZones=n.uint16,this.maxTwilightPoints=n.uint16,this.maxStorage=n.uint16,this.maxFunctionDefs=n.uint16,this.maxInstructionDefs=n.uint16,this.maxStackElements=n.uint16,this.maxSizeOfInstructions=n.uint16,this.maxComponentElements=n.uint16,this.maxComponentDepth=n.uint16),n.verifyLength()}}});class se{constructor(e,t){this.length=e,this.offset=t}}class ae{constructor(e,t){this.platformID=e.uint16,this.encodingID=e.uint16,this.languageID=e.uint16,this.nameID=e.uint16,this.length=e.uint16,this.offset=e.Offset16,v(this,"string",(()=>(e.currentPosition=t.stringStart+this.offset,function(e,t){const{platformID:n,length:r}=t;if(0===r)return"";if(0===n||3===n){const t=[];for(let n=0,o=r/2;nnew ae(n,this))),1===this.format&&(this.langTagCount=n.uint16,this.langTagRecords=[...new Array(this.langTagCount)].map((e=>new se(n.uint16,n.Offset16)))),this.stringStart=this.tableStart+this.stringOffset}get(e){let t=this.nameRecords.find((t=>t.nameID===e));if(t)return t.string}}}),ue=Object.freeze({__proto__:null,OS2:class extends b{constructor(e,t){const{p:n}=super(e,t);return this.version=n.uint16,this.xAvgCharWidth=n.int16,this.usWeightClass=n.uint16,this.usWidthClass=n.uint16,this.fsType=n.uint16,this.ySubscriptXSize=n.int16,this.ySubscriptYSize=n.int16,this.ySubscriptXOffset=n.int16,this.ySubscriptYOffset=n.int16,this.ySuperscriptXSize=n.int16,this.ySuperscriptYSize=n.int16,this.ySuperscriptXOffset=n.int16,this.ySuperscriptYOffset=n.int16,this.yStrikeoutSize=n.int16,this.yStrikeoutPosition=n.int16,this.sFamilyClass=n.int16,this.panose=[...new Array(10)].map((e=>n.uint8)),this.ulUnicodeRange1=n.flags(32),this.ulUnicodeRange2=n.flags(32),this.ulUnicodeRange3=n.flags(32),this.ulUnicodeRange4=n.flags(32),this.achVendID=n.tag,this.fsSelection=n.uint16,this.usFirstCharIndex=n.uint16,this.usLastCharIndex=n.uint16,this.sTypoAscender=n.int16,this.sTypoDescender=n.int16,this.sTypoLineGap=n.int16,this.usWinAscent=n.uint16,this.usWinDescent=n.uint16,0===this.version?n.verifyLength():(this.ulCodePageRange1=n.flags(32),this.ulCodePageRange2=n.flags(32),1===this.version?n.verifyLength():(this.sxHeight=n.int16,this.sCapHeight=n.int16,this.usDefaultChar=n.uint16,this.usBreakChar=n.uint16,this.usMaxContext=n.uint16,this.version<=4?n.verifyLength():(this.usLowerOpticalPointSize=n.uint16,this.usUpperOpticalPointSize=n.uint16,5===this.version?n.verifyLength():void 0)))}}});const ce=[".notdef",".null","nonmarkingreturn","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quotesingle","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","grave","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","Adieresis","Aring","Ccedilla","Eacute","Ntilde","Odieresis","Udieresis","aacute","agrave","acircumflex","adieresis","atilde","aring","ccedilla","eacute","egrave","ecircumflex","edieresis","iacute","igrave","icircumflex","idieresis","ntilde","oacute","ograve","ocircumflex","odieresis","otilde","uacute","ugrave","ucircumflex","udieresis","dagger","degree","cent","sterling","section","bullet","paragraph","germandbls","registered","copyright","trademark","acute","dieresis","notequal","AE","Oslash","infinity","plusminus","lessequal","greaterequal","yen","mu","partialdiff","summation","product","pi","integral","ordfeminine","ordmasculine","Omega","ae","oslash","questiondown","exclamdown","logicalnot","radical","florin","approxequal","Delta","guillemotleft","guillemotright","ellipsis","nonbreakingspace","Agrave","Atilde","Otilde","OE","oe","endash","emdash","quotedblleft","quotedblright","quoteleft","quoteright","divide","lozenge","ydieresis","Ydieresis","fraction","currency","guilsinglleft","guilsinglright","fi","fl","daggerdbl","periodcentered","quotesinglbase","quotedblbase","perthousand","Acircumflex","Ecircumflex","Aacute","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Oacute","Ocircumflex","apple","Ograve","Uacute","Ucircumflex","Ugrave","dotlessi","circumflex","tilde","macron","breve","dotaccent","ring","cedilla","hungarumlaut","ogonek","caron","Lslash","lslash","Scaron","scaron","Zcaron","zcaron","brokenbar","Eth","eth","Yacute","yacute","Thorn","thorn","minus","multiply","onesuperior","twosuperior","threesuperior","onehalf","onequarter","threequarters","franc","Gbreve","gbreve","Idotaccent","Scedilla","scedilla","Cacute","cacute","Ccaron","ccaron","dcroat"];var de=Object.freeze({__proto__:null,post:class extends b{constructor(e,t){const{p:n}=super(e,t);if(this.version=n.legacyFixed,this.italicAngle=n.fixed,this.underlinePosition=n.fword,this.underlineThickness=n.fword,this.isFixedPitch=n.uint32,this.minMemType42=n.uint32,this.maxMemType42=n.uint32,this.minMemType1=n.uint32,this.maxMemType1=n.uint32,1===this.version||3===this.version)return n.verifyLength();if(this.numGlyphs=n.uint16,2===this.version){this.glyphNameIndex=[...new Array(this.numGlyphs)].map((e=>n.uint16)),this.namesOffset=n.currentPosition,this.glyphNameOffsets=[1];for(let e=0;en.int8)))}getGlyphName(e){if(2!==this.version)return console.warn(`post table version ${this.version} does not support glyph name lookups`),"";let t=this.glyphNameIndex[e];if(t<258)return ce[t];let n=this.glyphNameOffsets[e],r=this.glyphNameOffsets[e+1]-n-1;return 0===r?".notdef.":(this.parser.currentPosition=this.namesOffset+n,this.parser.readBytes(r,this.namesOffset+n,8,!0).map((e=>String.fromCharCode(e))).join(""))}}});class he extends b{constructor(e,t){const{p:n}=super(e,t,"AxisTable");this.baseTagListOffset=n.Offset16,this.baseScriptListOffset=n.Offset16,v(this,"baseTagList",(()=>new fe({offset:e.offset+this.baseTagListOffset},t))),v(this,"baseScriptList",(()=>new ge({offset:e.offset+this.baseScriptListOffset},t)))}}class fe extends b{constructor(e,t){const{p:n}=super(e,t,"BaseTagListTable");this.baseTagCount=n.uint16,this.baselineTags=[...new Array(this.baseTagCount)].map((e=>n.tag))}}class ge extends b{constructor(e,t){const{p:n}=super(e,t,"BaseScriptListTable");this.baseScriptCount=n.uint16;const r=n.currentPosition;v(this,"baseScriptRecords",(()=>(n.currentPosition=r,[...new Array(this.baseScriptCount)].map((e=>new pe(this.start,n))))))}}class pe{constructor(e,t){this.baseScriptTag=t.tag,this.baseScriptOffset=t.Offset16,v(this,"baseScriptTable",(()=>(t.currentPosition=e+this.baseScriptOffset,new me(t))))}}class me{constructor(e){this.start=e.currentPosition,this.baseValuesOffset=e.Offset16,this.defaultMinMaxOffset=e.Offset16,this.baseLangSysCount=e.uint16,this.baseLangSysRecords=[...new Array(this.baseLangSysCount)].map((t=>new be(this.start,e))),v(this,"baseValues",(()=>(e.currentPosition=this.start+this.baseValuesOffset,new ve(e)))),v(this,"defaultMinMax",(()=>(e.currentPosition=this.start+this.defaultMinMaxOffset,new we(e))))}}class be{constructor(e,t){this.baseLangSysTag=t.tag,this.minMaxOffset=t.Offset16,v(this,"minMax",(()=>(t.currentPosition=e+this.minMaxOffset,new we(t))))}}class ve{constructor(e){this.parser=e,this.start=e.currentPosition,this.defaultBaselineIndex=e.uint16,this.baseCoordCount=e.uint16,this.baseCoords=[...new Array(this.baseCoordCount)].map((t=>e.Offset16))}getTable(e){return this.parser.currentPosition=this.start+this.baseCoords[e],new Ce(this.parser)}}class we{constructor(e){this.minCoord=e.Offset16,this.maxCoord=e.Offset16,this.featMinMaxCount=e.uint16;const t=e.currentPosition;v(this,"featMinMaxRecords",(()=>(e.currentPosition=t,[...new Array(this.featMinMaxCount)].map((t=>new ye(e))))))}}class ye{constructor(e){this.featureTableTag=e.tag,this.minCoord=e.Offset16,this.maxCoord=e.Offset16}}class Ce{constructor(e){this.baseCoordFormat=e.uint16,this.coordinate=e.int16,2===this.baseCoordFormat&&(this.referenceGlyph=e.uint16,this.baseCoordPoint=e.uint16),3===this.baseCoordFormat&&(this.deviceTable=e.Offset16)}}var xe=Object.freeze({__proto__:null,BASE:class extends b{constructor(e,t){const{p:n}=super(e,t);this.majorVersion=n.uint16,this.minorVersion=n.uint16,this.horizAxisOffset=n.Offset16,this.vertAxisOffset=n.Offset16,v(this,"horizAxis",(()=>new he({offset:e.offset+this.horizAxisOffset},t))),v(this,"vertAxis",(()=>new he({offset:e.offset+this.vertAxisOffset},t))),1===this.majorVersion&&1===this.minorVersion&&(this.itemVarStoreOffset=n.Offset32,v(this,"itemVarStore",(()=>new he({offset:e.offset+this.itemVarStoreOffset},t))))}}});class Se{constructor(e){this.classFormat=e.uint16,1===this.classFormat&&(this.startGlyphID=e.uint16,this.glyphCount=e.uint16,this.classValueArray=[...new Array(this.glyphCount)].map((t=>e.uint16))),2===this.classFormat&&(this.classRangeCount=e.uint16,this.classRangeRecords=[...new Array(this.classRangeCount)].map((t=>new Ee(e))))}}class Ee{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.class=e.uint16}}class Re extends m{constructor(e){super(e),this.coverageFormat=e.uint16,1===this.coverageFormat&&(this.glyphCount=e.uint16,this.glyphArray=[...new Array(this.glyphCount)].map((t=>e.uint16))),2===this.coverageFormat&&(this.rangeCount=e.uint16,this.rangeRecords=[...new Array(this.rangeCount)].map((t=>new Oe(e))))}}class Oe{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.startCoverageIndex=e.uint16}}class Ie{constructor(e,t){this.table=e,this.parser=t,this.start=t.currentPosition,this.format=t.uint16,this.variationRegionListOffset=t.Offset32,this.itemVariationDataCount=t.uint16,this.itemVariationDataOffsets=[...new Array(this.itemVariationDataCount)].map((e=>t.Offset32))}}class ke extends m{constructor(e){super(e),this.coverageOffset=e.Offset16,this.glyphCount=e.uint16,this.attachPointOffsets=[...new Array(this.glyphCount)].map((t=>e.Offset16))}getPoint(e){return this.parser.currentPosition=this.start+this.attachPointOffsets[e],new Me(this.parser)}}class Me{constructor(e){this.pointCount=e.uint16,this.pointIndices=[...new Array(this.pointCount)].map((t=>e.uint16))}}class Fe extends m{constructor(e){super(e),this.coverageOffset=e.Offset16,v(this,"coverage",(()=>(e.currentPosition=this.start+this.coverageOffset,new Re(e)))),this.ligGlyphCount=e.uint16,this.ligGlyphOffsets=[...new Array(this.ligGlyphCount)].map((t=>e.Offset16))}getLigGlyph(e){return this.parser.currentPosition=this.start+this.ligGlyphOffsets[e],new De(this.parser)}}class De extends m{constructor(e){super(e),this.caretCount=e.uint16,this.caretValueOffsets=[...new Array(this.caretCount)].map((t=>e.Offset16))}getCaretValue(e){return this.parser.currentPosition=this.start+this.caretValueOffsets[e],new Pe(this.parser)}}class Pe{constructor(e){this.caretValueFormat=e.uint16,1===this.caretValueFormat&&(this.coordinate=e.int16),2===this.caretValueFormat&&(this.caretValuePointIndex=e.uint16),3===this.caretValueFormat&&(this.coordinate=e.int16,this.deviceOffset=e.Offset16)}}class Ae extends m{constructor(e){super(e),this.markGlyphSetTableFormat=e.uint16,this.markGlyphSetCount=e.uint16,this.coverageOffsets=[...new Array(this.markGlyphSetCount)].map((t=>e.Offset32))}getMarkGlyphSet(e){return this.parser.currentPosition=this.start+this.coverageOffsets[e],new Re(this.parser)}}var Ve=Object.freeze({__proto__:null,GDEF:class extends b{constructor(e,t){const{p:n}=super(e,t);this.majorVersion=n.uint16,this.minorVersion=n.uint16,this.glyphClassDefOffset=n.Offset16,v(this,"glyphClassDefs",(()=>{if(0!==this.glyphClassDefOffset)return n.currentPosition=this.tableStart+this.glyphClassDefOffset,new Se(n)})),this.attachListOffset=n.Offset16,v(this,"attachList",(()=>{if(0!==this.attachListOffset)return n.currentPosition=this.tableStart+this.attachListOffset,new ke(n)})),this.ligCaretListOffset=n.Offset16,v(this,"ligCaretList",(()=>{if(0!==this.ligCaretListOffset)return n.currentPosition=this.tableStart+this.ligCaretListOffset,new Fe(n)})),this.markAttachClassDefOffset=n.Offset16,v(this,"markAttachClassDef",(()=>{if(0!==this.markAttachClassDefOffset)return n.currentPosition=this.tableStart+this.markAttachClassDefOffset,new Se(n)})),this.minorVersion>=2&&(this.markGlyphSetsDefOffset=n.Offset16,v(this,"markGlyphSetsDef",(()=>{if(0!==this.markGlyphSetsDefOffset)return n.currentPosition=this.tableStart+this.markGlyphSetsDefOffset,new Ae(n)}))),3===this.minorVersion&&(this.itemVarStoreOffset=n.Offset32,v(this,"itemVarStore",(()=>{if(0!==this.itemVarStoreOffset)return n.currentPosition=this.tableStart+this.itemVarStoreOffset,new Ie(n)})))}}});class Te extends m{static EMPTY={scriptCount:0,scriptRecords:[]};constructor(e){super(e),this.scriptCount=e.uint16,this.scriptRecords=[...new Array(this.scriptCount)].map((t=>new Le(e)))}}class Le{constructor(e){this.scriptTag=e.tag,this.scriptOffset=e.Offset16}}class Ne extends m{constructor(e){super(e),this.defaultLangSys=e.Offset16,this.langSysCount=e.uint16,this.langSysRecords=[...new Array(this.langSysCount)].map((t=>new ze(e)))}}class ze{constructor(e){this.langSysTag=e.tag,this.langSysOffset=e.Offset16}}class Be{constructor(e){this.lookupOrder=e.Offset16,this.requiredFeatureIndex=e.uint16,this.featureIndexCount=e.uint16,this.featureIndices=[...new Array(this.featureIndexCount)].map((t=>e.uint16))}}class Ge extends m{static EMPTY={featureCount:0,featureRecords:[]};constructor(e){super(e),this.featureCount=e.uint16,this.featureRecords=[...new Array(this.featureCount)].map((t=>new He(e)))}}class He{constructor(e){this.featureTag=e.tag,this.featureOffset=e.Offset16}}class Ue extends m{constructor(e){super(e),this.featureParams=e.Offset16,this.lookupIndexCount=e.uint16,this.lookupListIndices=[...new Array(this.lookupIndexCount)].map((t=>e.uint16))}getFeatureParams(){if(this.featureParams>0){const e=this.parser;e.currentPosition=this.start+this.featureParams;const t=this.featureTag;if("size"===t)return new je(e);if(t.startsWith("cc"))return new We(e);if(t.startsWith("ss"))return new qe(e)}}}class We{constructor(e){this.format=e.uint16,this.featUiLabelNameId=e.uint16,this.featUiTooltipTextNameId=e.uint16,this.sampleTextNameId=e.uint16,this.numNamedParameters=e.uint16,this.firstParamUiLabelNameId=e.uint16,this.charCount=e.uint16,this.character=[...new Array(this.charCount)].map((t=>e.uint24))}}class je{constructor(e){this.designSize=e.uint16,this.subfamilyIdentifier=e.uint16,this.subfamilyNameID=e.uint16,this.smallEnd=e.uint16,this.largeEnd=e.uint16}}class qe{constructor(e){this.version=e.uint16,this.UINameID=e.uint16}}function Ke(e){e.parser.currentPosition-=2,delete e.coverageOffset,delete e.getCoverageTable}class Ye extends m{constructor(e){super(e),this.substFormat=e.uint16,this.coverageOffset=e.Offset16}getCoverageTable(){let e=this.parser;return e.currentPosition=this.start+this.coverageOffset,new Re(e)}}class _e{constructor(e){this.glyphSequenceIndex=e.uint16,this.lookupListIndex=e.uint16}}class Ze extends Ye{constructor(e){super(e),this.deltaGlyphID=e.int16}}class Xe extends Ye{constructor(e){super(e),this.sequenceCount=e.uint16,this.sequenceOffsets=[...new Array(this.sequenceCount)].map((t=>e.Offset16))}getSequence(e){let t=this.parser;return t.currentPosition=this.start+this.sequenceOffsets[e],new Je(t)}}class Je{constructor(e){this.glyphCount=e.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map((t=>e.uint16))}}class Qe extends Ye{constructor(e){super(e),this.alternateSetCount=e.uint16,this.alternateSetOffsets=[...new Array(this.alternateSetCount)].map((t=>e.Offset16))}getAlternateSet(e){let t=this.parser;return t.currentPosition=this.start+this.alternateSetOffsets[e],new $e(t)}}class $e{constructor(e){this.glyphCount=e.uint16,this.alternateGlyphIDs=[...new Array(this.glyphCount)].map((t=>e.uint16))}}class et extends Ye{constructor(e){super(e),this.ligatureSetCount=e.uint16,this.ligatureSetOffsets=[...new Array(this.ligatureSetCount)].map((t=>e.Offset16))}getLigatureSet(e){let t=this.parser;return t.currentPosition=this.start+this.ligatureSetOffsets[e],new tt(t)}}class tt extends m{constructor(e){super(e),this.ligatureCount=e.uint16,this.ligatureOffsets=[...new Array(this.ligatureCount)].map((t=>e.Offset16))}getLigature(e){let t=this.parser;return t.currentPosition=this.start+this.ligatureOffsets[e],new nt(t)}}class nt{constructor(e){this.ligatureGlyph=e.uint16,this.componentCount=e.uint16,this.componentGlyphIDs=[...new Array(this.componentCount-1)].map((t=>e.uint16))}}class rt extends Ye{constructor(e){super(e),1===this.substFormat&&(this.subRuleSetCount=e.uint16,this.subRuleSetOffsets=[...new Array(this.subRuleSetCount)].map((t=>e.Offset16))),2===this.substFormat&&(this.classDefOffset=e.Offset16,this.subClassSetCount=e.uint16,this.subClassSetOffsets=[...new Array(this.subClassSetCount)].map((t=>e.Offset16))),3===this.substFormat&&(Ke(this),this.glyphCount=e.uint16,this.substitutionCount=e.uint16,this.coverageOffsets=[...new Array(this.glyphCount)].map((t=>e.Offset16)),this.substLookupRecords=[...new Array(this.substitutionCount)].map((t=>new _e(e))))}getSubRuleSet(e){if(1!==this.substFormat)throw new Error(`lookup type 5.${this.substFormat} has no subrule sets.`);let t=this.parser;return t.currentPosition=this.start+this.subRuleSetOffsets[e],new ot(t)}getSubClassSet(e){if(2!==this.substFormat)throw new Error(`lookup type 5.${this.substFormat} has no subclass sets.`);let t=this.parser;return t.currentPosition=this.start+this.subClassSetOffsets[e],new st(t)}getCoverageTable(e){if(3!==this.substFormat&&!e)return super.getCoverageTable();if(!e)throw new Error(`lookup type 5.${this.substFormat} requires an coverage table index.`);let t=this.parser;return t.currentPosition=this.start+this.coverageOffsets[e],new Re(t)}}class ot extends m{constructor(e){super(e),this.subRuleCount=e.uint16,this.subRuleOffsets=[...new Array(this.subRuleCount)].map((t=>e.Offset16))}getSubRule(e){let t=this.parser;return t.currentPosition=this.start+this.subRuleOffsets[e],new it(t)}}class it{constructor(e){this.glyphCount=e.uint16,this.substitutionCount=e.uint16,this.inputSequence=[...new Array(this.glyphCount-1)].map((t=>e.uint16)),this.substLookupRecords=[...new Array(this.substitutionCount)].map((t=>new _e(e)))}}class st extends m{constructor(e){super(e),this.subClassRuleCount=e.uint16,this.subClassRuleOffsets=[...new Array(this.subClassRuleCount)].map((t=>e.Offset16))}getSubClass(e){let t=this.parser;return t.currentPosition=this.start+this.subClassRuleOffsets[e],new at(t)}}class at extends it{constructor(e){super(e)}}class lt extends Ye{constructor(e){super(e),1===this.substFormat&&(this.chainSubRuleSetCount=e.uint16,this.chainSubRuleSetOffsets=[...new Array(this.chainSubRuleSetCount)].map((t=>e.Offset16))),2===this.substFormat&&(this.backtrackClassDefOffset=e.Offset16,this.inputClassDefOffset=e.Offset16,this.lookaheadClassDefOffset=e.Offset16,this.chainSubClassSetCount=e.uint16,this.chainSubClassSetOffsets=[...new Array(this.chainSubClassSetCount)].map((t=>e.Offset16))),3===this.substFormat&&(Ke(this),this.backtrackGlyphCount=e.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map((t=>e.Offset16)),this.inputGlyphCount=e.uint16,this.inputCoverageOffsets=[...new Array(this.inputGlyphCount)].map((t=>e.Offset16)),this.lookaheadGlyphCount=e.uint16,this.lookaheadCoverageOffsets=[...new Array(this.lookaheadGlyphCount)].map((t=>e.Offset16)),this.seqLookupCount=e.uint16,this.seqLookupRecords=[...new Array(this.substitutionCount)].map((t=>new ft(e))))}getChainSubRuleSet(e){if(1!==this.substFormat)throw new Error(`lookup type 6.${this.substFormat} has no chainsubrule sets.`);let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleSetOffsets[e],new ut(t)}getChainSubClassSet(e){if(2!==this.substFormat)throw new Error(`lookup type 6.${this.substFormat} has no chainsubclass sets.`);let t=this.parser;return t.currentPosition=this.start+this.chainSubClassSetOffsets[e],new dt(t)}getCoverageFromOffset(e){if(3!==this.substFormat)throw new Error(`lookup type 6.${this.substFormat} does not use contextual coverage offsets.`);let t=this.parser;return t.currentPosition=this.start+e,new Re(t)}}class ut extends m{constructor(e){super(e),this.chainSubRuleCount=e.uint16,this.chainSubRuleOffsets=[...new Array(this.chainSubRuleCount)].map((t=>e.Offset16))}getSubRule(e){let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleOffsets[e],new ct(t)}}class ct{constructor(e){this.backtrackGlyphCount=e.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map((t=>e.uint16)),this.inputGlyphCount=e.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map((t=>e.uint16)),this.lookaheadGlyphCount=e.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map((t=>e.uint16)),this.substitutionCount=e.uint16,this.substLookupRecords=[...new Array(this.SubstCount)].map((t=>new _e(e)))}}class dt extends m{constructor(e){super(e),this.chainSubClassRuleCount=e.uint16,this.chainSubClassRuleOffsets=[...new Array(this.chainSubClassRuleCount)].map((t=>e.Offset16))}getSubClass(e){let t=this.parser;return t.currentPosition=this.start+this.chainSubRuleOffsets[e],new ht(t)}}class ht{constructor(e){this.backtrackGlyphCount=e.uint16,this.backtrackSequence=[...new Array(this.backtrackGlyphCount)].map((t=>e.uint16)),this.inputGlyphCount=e.uint16,this.inputSequence=[...new Array(this.inputGlyphCount-1)].map((t=>e.uint16)),this.lookaheadGlyphCount=e.uint16,this.lookAheadSequence=[...new Array(this.lookAheadGlyphCount)].map((t=>e.uint16)),this.substitutionCount=e.uint16,this.substLookupRecords=[...new Array(this.substitutionCount)].map((t=>new ft(e)))}}class ft extends m{constructor(e){super(e),this.sequenceIndex=e.uint16,this.lookupListIndex=e.uint16}}class gt extends m{constructor(e){super(e),this.substFormat=e.uint16,this.extensionLookupType=e.uint16,this.extensionOffset=e.Offset32}}class pt extends Ye{constructor(e){super(e),this.backtrackGlyphCount=e.uint16,this.backtrackCoverageOffsets=[...new Array(this.backtrackGlyphCount)].map((t=>e.Offset16)),this.lookaheadGlyphCount=e.uint16,this.lookaheadCoverageOffsets=[new Array(this.lookaheadGlyphCount)].map((t=>e.Offset16)),this.glyphCount=e.uint16,this.substituteGlyphIDs=[...new Array(this.glyphCount)].map((t=>e.uint16))}}var mt={buildSubtable:function(e,t){const n=new[void 0,Ze,Xe,Qe,et,rt,lt,gt,pt][e](t);return n.type=e,n}};class bt extends m{constructor(e){super(e)}}class vt extends bt{constructor(e){super(e),console.log("lookup type 1")}}class wt extends bt{constructor(e){super(e),console.log("lookup type 2")}}class yt extends bt{constructor(e){super(e),console.log("lookup type 3")}}class Ct extends bt{constructor(e){super(e),console.log("lookup type 4")}}class xt extends bt{constructor(e){super(e),console.log("lookup type 5")}}class St extends bt{constructor(e){super(e),console.log("lookup type 6")}}class Et extends bt{constructor(e){super(e),console.log("lookup type 7")}}class Rt extends bt{constructor(e){super(e),console.log("lookup type 8")}}class Ot extends bt{constructor(e){super(e),console.log("lookup type 9")}}var It={buildSubtable:function(e,t){const n=new[void 0,vt,wt,yt,Ct,xt,St,Et,Rt,Ot][e](t);return n.type=e,n}};class kt extends m{static EMPTY={lookupCount:0,lookups:[]};constructor(e){super(e),this.lookupCount=e.uint16,this.lookups=[...new Array(this.lookupCount)].map((t=>e.Offset16))}}class Mt extends m{constructor(e,t){super(e),this.ctType=t,this.lookupType=e.uint16,this.lookupFlag=e.uint16,this.subTableCount=e.uint16,this.subtableOffsets=[...new Array(this.subTableCount)].map((t=>e.Offset16)),this.markFilteringSet=e.uint16}get rightToLeft(){return!0&this.lookupFlag}get ignoreBaseGlyphs(){return!0&this.lookupFlag}get ignoreLigatures(){return!0&this.lookupFlag}get ignoreMarks(){return!0&this.lookupFlag}get useMarkFilteringSet(){return!0&this.lookupFlag}get markAttachmentType(){return!0&this.lookupFlag}getSubTable(e){const t="GSUB"===this.ctType?mt:It;return this.parser.currentPosition=this.start+this.subtableOffsets[e],t.buildSubtable(this.lookupType,this.parser)}}class Ft extends b{constructor(e,t,n){const{p:r,tableStart:o}=super(e,t,n);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.scriptListOffset=r.Offset16,this.featureListOffset=r.Offset16,this.lookupListOffset=r.Offset16,1===this.majorVersion&&1===this.minorVersion&&(this.featureVariationsOffset=r.Offset32);const i=!(this.scriptListOffset||this.featureListOffset||this.lookupListOffset);v(this,"scriptList",(()=>i?Te.EMPTY:(r.currentPosition=o+this.scriptListOffset,new Te(r)))),v(this,"featureList",(()=>i?Ge.EMPTY:(r.currentPosition=o+this.featureListOffset,new Ge(r)))),v(this,"lookupList",(()=>i?kt.EMPTY:(r.currentPosition=o+this.lookupListOffset,new kt(r)))),this.featureVariationsOffset&&v(this,"featureVariations",(()=>i?FeatureVariations.EMPTY:(r.currentPosition=o+this.featureVariationsOffset,new FeatureVariations(r))))}getSupportedScripts(){return this.scriptList.scriptRecords.map((e=>e.scriptTag))}getScriptTable(e){let t=this.scriptList.scriptRecords.find((t=>t.scriptTag===e));this.parser.currentPosition=this.scriptList.start+t.scriptOffset;let n=new Ne(this.parser);return n.scriptTag=e,n}ensureScriptTable(e){return"string"==typeof e?this.getScriptTable(e):e}getSupportedLangSys(e){const t=0!==(e=this.ensureScriptTable(e)).defaultLangSys,n=e.langSysRecords.map((e=>e.langSysTag));return t&&n.unshift("dflt"),n}getDefaultLangSysTable(e){let t=(e=this.ensureScriptTable(e)).defaultLangSys;if(0!==t){this.parser.currentPosition=e.start+t;let n=new Be(this.parser);return n.langSysTag="",n.defaultForScript=e.scriptTag,n}}getLangSysTable(e,t="dflt"){if("dflt"===t)return this.getDefaultLangSysTable(e);let n=(e=this.ensureScriptTable(e)).langSysRecords.find((e=>e.langSysTag===t));this.parser.currentPosition=e.start+n.langSysOffset;let r=new Be(this.parser);return r.langSysTag=t,r}getFeatures(e){return e.featureIndices.map((e=>this.getFeature(e)))}getFeature(e){let t;if(t=parseInt(e)==e?this.featureList.featureRecords[e]:this.featureList.featureRecords.find((t=>t.featureTag===e)),!t)return;this.parser.currentPosition=this.featureList.start+t.featureOffset;let n=new Ue(this.parser);return n.featureTag=t.featureTag,n}getLookups(e){return e.lookupListIndices.map((e=>this.getLookup(e)))}getLookup(e,t){let n=this.lookupList.lookups[e];return this.parser.currentPosition=this.lookupList.start+n,new Mt(this.parser,t)}}var Dt=Object.freeze({__proto__:null,GSUB:class extends Ft{constructor(e,t){super(e,t,"GSUB")}getLookup(e){return super.getLookup(e,"GSUB")}}}),Pt=Object.freeze({__proto__:null,GPOS:class extends Ft{constructor(e,t){super(e,t,"GPOS")}getLookup(e){return super.getLookup(e,"GPOS")}}});class At extends m{constructor(e){super(e),this.numEntries=e.uint16,this.documentRecords=[...new Array(this.numEntries)].map((t=>new Vt(e)))}getDocument(e){let t=this.documentRecords[e];if(!t)return"";let n=this.start+t.svgDocOffset;return this.parser.currentPosition=n,this.parser.readBytes(t.svgDocLength)}getDocumentForGlyph(e){let t=this.documentRecords.findIndex((t=>t.startGlyphID<=e&&e<=t.endGlyphID));return-1===t?"":this.getDocument(t)}}class Vt{constructor(e){this.startGlyphID=e.uint16,this.endGlyphID=e.uint16,this.svgDocOffset=e.Offset32,this.svgDocLength=e.uint32}}var Tt=Object.freeze({__proto__:null,SVG:class extends b{constructor(e,t){const{p:n}=super(e,t);this.version=n.uint16,this.offsetToSVGDocumentList=n.Offset32,n.currentPosition=this.tableStart+this.offsetToSVGDocumentList,this.documentList=new At(n)}}});class Lt{constructor(e){this.tag=e.tag,this.minValue=e.fixed,this.defaultValue=e.fixed,this.maxValue=e.fixed,this.flags=e.flags(16),this.axisNameID=e.uint16}}class Nt{constructor(e,t,n){let r=e.currentPosition;this.subfamilyNameID=e.uint16,e.uint16,this.coordinates=[...new Array(t)].map((t=>e.fixed)),e.currentPosition-r(n.currentPosition=r,[...new Array(this.axisCount)].map((e=>new Lt(n))))));const o=r+this.axisCount*this.axisSize;v(this,"instances",(()=>{let e=[];for(let t=0;te.tag))}getAxis(e){return this.axes.find((t=>t.tag===e))}}}),Bt=Object.freeze({__proto__:null,cvt:class extends b{constructor(e,t){const{p:n}=super(e,t),r=e.length/2;v(this,"items",(()=>[...new Array(r)].map((e=>n.fword))))}}}),Gt=Object.freeze({__proto__:null,fpgm:class extends b{constructor(e,t){const{p:n}=super(e,t);v(this,"instructions",(()=>[...new Array(e.length)].map((e=>n.uint8))))}}});class Ht{constructor(e){this.rangeMaxPPEM=e.uint16,this.rangeGaspBehavior=e.uint16}}var Ut=Object.freeze({__proto__:null,gasp:class extends b{constructor(e,t){const{p:n}=super(e,t);this.version=n.uint16,this.numRanges=n.uint16,v(this,"gaspRanges",(()=>[...new Array(this.numRanges)].map((e=>new Ht(n)))))}}}),Wt=Object.freeze({__proto__:null,glyf:class extends b{constructor(e,t){super(e,t)}getGlyphData(e,t){return this.parser.currentPosition=this.tableStart+e,this.parser.readBytes(t)}}}),jt=Object.freeze({__proto__:null,loca:class extends b{constructor(e,t,n){const{p:r}=super(e,t),o=n.maxp.numGlyphs+1;0===n.head.indexToLocFormat?(this.x2=!0,v(this,"offsets",(()=>[...new Array(o)].map((e=>r.Offset16))))):v(this,"offsets",(()=>[...new Array(o)].map((e=>r.Offset32))))}getGlyphDataOffsetAndLength(e){let t=this.offsets[e]*this.x2?2:1;return{offset:t,length:(this.offsets[e+1]*this.x2?2:1)-t}}}}),qt=Object.freeze({__proto__:null,prep:class extends b{constructor(e,t){const{p:n}=super(e,t);v(this,"instructions",(()=>[...new Array(e.length)].map((e=>n.uint8))))}}}),Kt=Object.freeze({__proto__:null,CFF:class extends b{constructor(e,t){const{p:n}=super(e,t);v(this,"data",(()=>n.readBytes()))}}}),Yt=Object.freeze({__proto__:null,CFF2:class extends b{constructor(e,t){const{p:n}=super(e,t);v(this,"data",(()=>n.readBytes()))}}});class _t{constructor(e){this.glyphIndex=e.uint16,this.vertOriginY=e.int16}}var Zt=Object.freeze({__proto__:null,VORG:class extends b{constructor(e,t){const{p:n}=super(e,t);this.majorVersion=n.uint16,this.minorVersion=n.uint16,this.defaultVertOriginY=n.int16,this.numVertOriginYMetrics=n.uint16,v(this,"vertORiginYMetrics",(()=>[...new Array(this.numVertOriginYMetrics)].map((e=>new _t(n)))))}}});class Xt{constructor(e){this.indexSubTableArrayOffset=e.Offset32,this.indexTablesSize=e.uint32,this.numberofIndexSubTables=e.uint32,this.colorRef=e.uint32,this.hori=new Qt(e),this.vert=new Qt(e),this.startGlyphIndex=e.uint16,this.endGlyphIndex=e.uint16,this.ppemX=e.uint8,this.ppemY=e.uint8,this.bitDepth=e.uint8,this.flags=e.int8}}class Jt{constructor(e){this.hori=new Qt(e),this.vert=new Qt(e),this.ppemX=e.uint8,this.ppemY=e.uint8,this.substitutePpemX=e.uint8,this.substitutePpemY=e.uint8}}class Qt{constructor(e){this.ascender=e.int8,this.descender=e.int8,this.widthMax=e.uint8,this.caretSlopeNumerator=e.int8,this.caretSlopeDenominator=e.int8,this.caretOffset=e.int8,this.minOriginSB=e.int8,this.minAdvanceSB=e.int8,this.maxBeforeBL=e.int8,this.minAfterBL=e.int8,this.pad1=e.int8,this.pad2=e.int8}}class $t extends b{constructor(e,t,n){const{p:r}=super(e,t,n);this.majorVersion=r.uint16,this.minorVersion=r.uint16,this.numSizes=r.uint32,v(this,"bitMapSizes",(()=>[...new Array(this.numSizes)].map((e=>new Xt(r)))))}}var en=Object.freeze({__proto__:null,EBLC:$t});class tn extends b{constructor(e,t,n){const{p:r}=super(e,t,n);this.majorVersion=r.uint16,this.minorVersion=r.uint16}}var nn=Object.freeze({__proto__:null,EBDT:tn}),rn=Object.freeze({__proto__:null,EBSC:class extends b{constructor(e,t){const{p:n}=super(e,t);this.majorVersion=n.uint16,this.minorVersion=n.uint16,this.numSizes=n.uint32,v(this,"bitmapScales",(()=>[...new Array(this.numSizes)].map((e=>new Jt(n)))))}}}),on=Object.freeze({__proto__:null,CBLC:class extends $t{constructor(e,t){super(e,t,"CBLC")}}}),sn=Object.freeze({__proto__:null,CBDT:class extends tn{constructor(e,t){super(e,t,"CBDT")}}}),an=Object.freeze({__proto__:null,sbix:class extends b{constructor(e,t){const{p:n}=super(e,t);this.version=n.uint16,this.flags=n.flags(16),this.numStrikes=n.uint32,v(this,"strikeOffsets",(()=>[...new Array(this.numStrikes)].map((e=>n.Offset32))))}}});class ln{constructor(e){this.gID=e.uint16,this.firstLayerIndex=e.uint16,this.numLayers=e.uint16}}class un{constructor(e){this.gID=e.uint16,this.paletteIndex=e.uint16}}var cn=Object.freeze({__proto__:null,COLR:class extends b{constructor(e,t){const{p:n}=super(e,t);this.version=n.uint16,this.numBaseGlyphRecords=n.uint16,this.baseGlyphRecordsOffset=n.Offset32,this.layerRecordsOffset=n.Offset32,this.numLayerRecords=n.uint16}getBaseGlyphRecord(e){let t=this.tableStart+this.baseGlyphRecordsOffset;this.parser.currentPosition=t;let n=new ln(this.parser),r=n.gID,o=this.tableStart+this.layerRecordsOffset-6;this.parser.currentPosition=o;let i=new ln(this.parser),s=i.gID;if(r===e)return n;if(s===e)return i;for(;t!==o;){let n=t+(o-t)/12;this.parser.currentPosition=n;let r=new ln(this.parser),i=r.gID;if(i===e)return r;i>e?o=n:inew un(p)))}}});class dn{constructor(e){this.blue=e.uint8,this.green=e.uint8,this.red=e.uint8,this.alpha=e.uint8}}class hn{constructor(e,t){this.paletteTypes=[...new Array(t)].map((t=>e.uint32))}}class fn{constructor(e,t){this.paletteLabels=[...new Array(t)].map((t=>e.uint16))}}class gn{constructor(e,t){this.paletteEntryLabels=[...new Array(t)].map((t=>e.uint16))}}var pn=Object.freeze({__proto__:null,CPAL:class extends b{constructor(e,t){const{p:n}=super(e,t);this.version=n.uint16,this.numPaletteEntries=n.uint16;const r=this.numPalettes=n.uint16;this.numColorRecords=n.uint16,this.offsetFirstColorRecord=n.Offset32,this.colorRecordIndices=[...new Array(this.numPalettes)].map((e=>n.uint16)),v(this,"colorRecords",(()=>(n.currentPosition=this.tableStart+this.offsetFirstColorRecord,[...new Array(this.numColorRecords)].map((e=>new dn(n)))))),1===this.version&&(this.offsetPaletteTypeArray=n.Offset32,this.offsetPaletteLabelArray=n.Offset32,this.offsetPaletteEntryLabelArray=n.Offset32,v(this,"paletteTypeArray",(()=>(n.currentPosition=this.tableStart+this.offsetPaletteTypeArray,new hn(n,r)))),v(this,"paletteLabelArray",(()=>(n.currentPosition=this.tableStart+this.offsetPaletteLabelArray,new fn(n,r)))),v(this,"paletteEntryLabelArray",(()=>(n.currentPosition=this.tableStart+this.offsetPaletteEntryLabelArray,new gn(n,r)))))}}});class mn{constructor(e){this.format=e.uint32,this.length=e.uint32,this.offset=e.Offset32}}class bn{constructor(e){e.uint16,e.uint16,this.signatureLength=e.uint32,this.signature=e.readBytes(this.signatureLength)}}var vn=Object.freeze({__proto__:null,DSIG:class extends b{constructor(e,t){const{p:n}=super(e,t);this.version=n.uint32,this.numSignatures=n.uint16,this.flags=n.uint16,this.signatureRecords=[...new Array(this.numSignatures)].map((e=>new mn(n)))}getData(e){const t=this.signatureRecords[e];return this.parser.currentPosition=this.tableStart+t.offset,new bn(this.parser)}}});class wn{constructor(e,t){this.pixelSize=e.uint8,this.maxWidth=e.uint8,this.widths=e.readBytes(t)}}var yn=Object.freeze({__proto__:null,hdmx:class extends b{constructor(e,t,n){const{p:r}=super(e,t),o=n.hmtx.numGlyphs;this.version=r.uint16,this.numRecords=r.int16,this.sizeDeviceRecord=r.int32,this.records=[...new Array(numRecords)].map((e=>new wn(r,o)))}}});class Cn{constructor(e){this.version=e.uint16,this.length=e.uint16,this.coverage=e.flags(8),this.format=e.uint8,0===this.format&&(this.nPairs=e.uint16,this.searchRange=e.uint16,this.entrySelector=e.uint16,this.rangeShift=e.uint16,v(this,"pairs",(()=>[...new Array(this.nPairs)].map((t=>new xn(e)))))),2===this.format&&console.warn("Kern subtable format 2 is not supported: this parser currently only parses universal table data.")}get horizontal(){return this.coverage[0]}get minimum(){return this.coverage[1]}get crossstream(){return this.coverage[2]}get override(){return this.coverage[3]}}class xn{constructor(e){this.left=e.uint16,this.right=e.uint16,this.value=e.fword}}var Sn=Object.freeze({__proto__:null,kern:class extends b{constructor(e,t){const{p:n}=super(e,t);this.version=n.uint16,this.nTables=n.uint16,v(this,"tables",(()=>{let e=this.tableStart+4;const t=[];for(let r=0;r[...new Array(this.mergeClassCount)].map((e=>n.readBytes(this.mergeClassCount))))),console.warn("Full MERG parsing is currently not supported."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}}});class On{constructor(e,t){this.tableStart=e,this.parser=t,this.tag=t.tag,this.dataOffset=t.Offset32,this.dataLength=t.uint32}getData(){return this.parser.currentField=this.tableStart+this.dataOffset,this.parser.readBytes(this.dataLength)}}var In=Object.freeze({__proto__:null,meta:class extends b{constructor(e,t){const{p:n}=super(e,t);this.version=n.uint32,this.flags=n.uint32,n.uint32,this.dataMapsCount=n.uint32,this.dataMaps=[...new Array(this.dataMapsCount)].map((e=>new On(this.tableStart,n)))}}}),kn=Object.freeze({__proto__:null,PCLT:class extends b{constructor(e,t){super(e,t),console.warn("This font uses a PCLT table, which is currently not supported by this parser."),console.warn("If you need this table parsed, please file an issue, or better yet, a PR.")}}});class Mn{constructor(e){this.bCharSet=e.uint8,this.xRatio=e.uint8,this.yStartRatio=e.uint8,this.yEndRatio=e.uint8}}class Fn{constructor(e){this.recs=e.uint16,this.startsz=e.uint8,this.endsz=e.uint8,this.records=[...new Array(this.recs)].map((t=>new Dn(e)))}}class Dn{constructor(e){this.yPelHeight=e.uint16,this.yMax=e.int16,this.yMin=e.int16}}var Pn=Object.freeze({__proto__:null,VDMX:class extends b{constructor(e,t){const{p:n}=super(e,t);this.version=n.uint16,this.numRecs=n.uint16,this.numRatios=n.uint16,this.ratRanges=[...new Array(this.numRatios)].map((e=>new Mn(n))),this.offsets=[...new Array(this.numRatios)].map((e=>n.Offset16)),this.VDMXGroups=[...new Array(this.numRecs)].map((e=>new Fn(n)))}}}),An=Object.freeze({__proto__:null,vhea:class extends b{constructor(e,t){const{p:n}=super(e,t);this.version=n.fixed,this.ascent=this.vertTypoAscender=n.int16,this.descent=this.vertTypoDescender=n.int16,this.lineGap=this.vertTypoLineGap=n.int16,this.advanceHeightMax=n.int16,this.minTopSideBearing=n.int16,this.minBottomSideBearing=n.int16,this.yMaxExtent=n.int16,this.caretSlopeRise=n.int16,this.caretSlopeRun=n.int16,this.caretOffset=n.int16,this.reserved=n.int16,this.reserved=n.int16,this.reserved=n.int16,this.reserved=n.int16,this.metricDataFormat=n.int16,this.numOfLongVerMetrics=n.uint16,n.verifyLength()}}});class Vn{constructor(e,t){this.advanceHeight=e,this.topSideBearing=t}}var Tn=Object.freeze({__proto__:null,vmtx:class extends b{constructor(e,t,n){super(e,t);const r=n.vhea.numOfLongVerMetrics,o=n.maxp.numGlyphs,i=p.currentPosition;if(lazy(this,"vMetrics",(()=>(p.currentPosition=i,[...new Array(r)].map((e=>new Vn(p.uint16,p.int16)))))),r(p.currentPosition=e,[...new Array(o-r)].map((e=>p.int16)))))}}}});const Ln=["otf","ttf","woff","woff2"];function Nn(e,t="custom"){const n=new FormData;if(e?.fontFace){const r=[];e.fontFace.forEach(((o,i)=>{const s={...o};if(s.file){const e=Array.isArray(s.file)?s.file:[s.file],t=[];e.forEach(((e,r)=>{const o=`file-${i}-${r}`;n.append(o,e,e.name),t.push(o)})),s.src=1===t.length?t[0]:t}s.slug=e?.slug,s.source=t,r.push(s)})),n.append("variants",JSON.stringify(r)),n.append("source",t),n.append("slug",e?.slug)}return n}const zn=e=>s()({path:`/generatepress-font-library/v1/${e}`,method:"GET"}),Bn=(e,t={})=>s()({path:`/generatepress-font-library/v1/${e}`,method:"POST",...t});async function Gn(e){return new Promise(((t,n)=>{const r=new window.FileReader;r.readAsArrayBuffer(e),r.onload=()=>t(r.result),r.onerror=n}))}async function Hn(e){const t=new N("Uploaded Font");if("string"==typeof e)t.src=e;else{const n=await Gn(e);t.fromDataBuffer(n,e.name)}const n=(await new Promise((e=>t.onload=e))).detail.font,{name:r}=n.opentype.tables,o=r.get(16)||r.get(1),i=r.get(2).toLowerCase().includes("italic"),s=n.opentype.tables["OS/2"].usWeightClass||"normal",a=!!n.opentype.tables.fvar,l=a&&n.opentype.tables.fvar.axes.find((({tag:e})=>"wght"===e));return{file:e,fontFamily:o,fontStyle:i?"italic":"normal",fontWeight:(l?`${l.minValue} ${l.maxValue}`:null)||s,isVariable:a}}const Un=window.wp.primitives,Wn=(0,e.createElement)(Un.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,e.createElement)(Un.Path,{d:"M18.3 11.7c-.6-.6-1.4-.9-2.3-.9H6.7l2.9-3.3-1.1-1-4.5 5L8.5 16l1-1-2.7-2.7H16c.5 0 .9.2 1.3.5 1 1 1 3.4 1 4.5v.3h1.5v-.2c0-1.5 0-4.3-1.5-5.7z"}));function jn(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t{var d;const[h,f]=(0,r.useState)(null),[g,p]=(0,r.useState)(n.cssVariable.replace("--gp-font--","")),[m,b]=(0,r.useState)(n.disabled),[v,w]=(0,r.useState)(null!==(d=n.alias)&&void 0!==d?d:""),[y,C]=(0,r.useState)(n.fallback||""),[x,S]=(0,r.useState)((()=>{var e;return null!==(e=(0,Kn.cloneDeep)(n.variants))&&void 0!==e?e:[]})),[E,R]=(0,r.useState)(n.fontDisplay||"auto"),O=v||n.name,I=(0,r.useMemo)((()=>Xn(v)),[v]),k=(0,r.useMemo)((()=>`--gp-font--${Xn(g)}`),[g]),M=(0,r.useMemo)((()=>y?`${v||O}, ${y}`:`${v||O}`),[v,y,O]),F=(0,r.useCallback)((async()=>{const e={data:{fontId:n.id}};try{await Bn("delete-font",e),s(!0),a({type:"success",message:(0,t.__)("Font deleted successfully.")}),i(null),f(null),c(!1)}catch(e){f({type:"error",message:(0,t.__)("Error deleting font. Please try again.","gp-premium")}),console.error(e.message)}}),[n,s,a,i,c]),D=(0,r.useCallback)((()=>{window.confirm((0,t.__)("Are you sure you want to delete this font and all its variants?","gp-premium"))&&F()}),[F]);return(0,r.useEffect)((()=>{const e={...n,disabled:m,fontDisplay:E,alias:v,variants:x,fallback:y,cssVariable:k};c(!(0,Kn.isEqual)(e,n))}),[m,v,x,E,y,c,n,k]),(0,e.createElement)("div",{className:"gp-font-library-edit"},!n&&(0,e.createElement)(o.Spinner,null),n&&(0,e.createElement)(e.Fragment,null,h&&(0,e.createElement)(o.Notice,{status:h.type,onRemove:()=>f(null)},h.message),(0,e.createElement)(o.Button,{className:"gp-font-library-edit__back",title:(0,t.__)("Go back to the font library","gp-premium"),variant:"tertiary",icon:Wn,onClick:()=>{if(u){if(window.confirm((0,t.__)("You have unsaved changes. Click OK to discard changes or cancel to keep editing the font.","gp-premium"))){const e=x.map((e=>({...e,deleteStatus:!1})));S(e),c(!1),i(null)}}else i(null)}},(0,t.__)("Back","gp-premium")),(0,e.createElement)("h3",null,(0,t.sprintf)(/* translators: Edit font family */ -(0,t.__)("Edit Font: %s","gp-premium"),O)),(0,e.createElement)(Yn.Stack,{gap:"30px"},(0,e.createElement)("div",{className:"gp-font-library-edit__control"},(0,e.createElement)("strong",null,(0,t.__)("Font Status","gp-premium")),(0,e.createElement)("p",null,(0,t.__)("If a font is disabled, no font variants are added to the frontend of your site.","gp-premium")),(0,e.createElement)(o.ToggleControl,{checked:!m,label:m?(0,t.__)("Disabled","gp-premium"):(0,t.__)("Enabled","gp-premium"),onChange:e=>{b(!e)}})),(0,e.createElement)("div",{className:"gp-font-library-edit__control"},(0,e.createElement)("strong",null,(0,t.__)("Available Font Variants","gp-premium")),(0,e.createElement)("p",null,(0,t.__)("Enable or disable individual font variants on the frontend of your site.","gp-premium")),(0,e.createElement)("ul",{className:"gp-font-library-edit__variants",style:{opacity:m?"0.5":"1"},role:"list"},x&&(0,e.createElement)(e.Fragment,null,x?.map((({name:n,src:r,disabled:i=!1,deleteStatus:s=!1},a)=>(0,e.createElement)("li",{key:r,className:qn("gp-font-library-edit__variant",s&&"gp-font-library-edit__variant--delete")},(0,e.createElement)(o.CheckboxControl,{className:s?"delete-variant":"",disabled:m||s,label:n,checked:!i,onChange:e=>{const t=[...x];t[a].disabled=!e,S(t),t.every((e=>e.disabled))&&b(!0)},__nextHasNoMarginBottom:!0}),(0,e.createElement)(o.Button,{size:"compact",title:s?(0,t.__)("Undelete font variant","gp-premium"):(0,t.__)("Delete font variant","gp-premium"),onClick:()=>{const e=[...x];e[a].deleteStatus=!s,S(e)}},(0,e.createElement)(o.Icon,{size:"18",color:"#cc1818",icon:Zn("trash")}))))))))),(0,e.createElement)("details",{className:"gp-font-library-edit__advanced"},(0,e.createElement)("summary",null,(0,t.__)("Advanced Options","gp-premium")," "),(0,e.createElement)(Yn.Stack,{gap:"30px"},(0,e.createElement)("div",{className:"gp-font-library-edit__control"},(0,e.createElement)("strong",null,(0,t.__)("Font Display")),(0,e.createElement)("p",{className:"gp-font-library__text"},(0,t.__)("Specify the font-display value, used in the @font-face CSS. This value determines how your text displays as the webfont loads.","gp-premium")),(0,e.createElement)(o.SelectControl,{className:"gp-font-library-edit__control",value:E,options:[{label:"Auto",value:"auto"},{label:"Block",value:"block"},{label:"Fallback",value:"fallback"},{label:"Optional",value:"optional"},{label:"Swap",value:"swap"}],onChange:e=>{R(e)}})),(0,e.createElement)("div",{className:"gp-font-library-edit__control"},(0,e.createElement)("strong",null,(0,t.__)("Font Alias")),(0,e.createElement)("p",{className:"gp-font-library__text"},(0,t.__)("Specify an alias for this font that will be used as the font family name in CSS. If left blank the default font family name will be used.","gp-premium")),(0,e.createElement)(o.TextControl,{className:"gp-font-library-edit__control",label:(0,t.__)("Add Font Family Alias","gp-premium"),placeholder:(0,t.sprintf)(/* translators: Font family alias */ -(0,t.__)("e.g. Custom %s","gp-premium"),O),value:v,onChange:w,help:`${k}: ${M};`})),(0,e.createElement)("div",{className:"gp-font-library-edit__control"},(0,e.createElement)("strong",null,(0,t.__)("Font Family Fallback")),(0,e.createElement)("p",{className:"gp-font-library__text"},(0,t.__)("Enter the CSS font-family fallback value you want to use for this font here. This appears after the font family name in the CSS.","gp-premium")),(0,e.createElement)(o.TextControl,{className:"gp-font-library-edit__control",label:(0,t.__)("Font Family","gp-premium"),placeholder:(0,t.__)("sans-serif, system-ui","gp-premium"),value:y,onChange:C,help:`font-family: ${M};`})),(0,e.createElement)("div",{className:"gp-font-library-edit__control"},(0,e.createElement)("strong",null,(0,t.__)("CSS Variable Suffix")),(0,e.createElement)("p",{className:"gp-font-library__text"},(0,t.__)("You may customize the CSS variable suffix for your font if you wish to change it.","gp-premium")),(0,e.createElement)(o.TextControl,{className:"gp-font-library-edit__control",label:(0,t.__)("CSS Variable suffix","gp-premium"),placeholder:I||n.slug,value:g,onChange:p,help:(0,e.createElement)(e.Fragment,null,`font-family: var(${k});`,25===g.length&&(0,e.createElement)(e.Fragment,null,(0,e.createElement)("br",null),(0,e.createElement)("strong",null,(0,t.__)("Max 25 characters","gp-premium")))),minLength:"1",maxLength:"25",max:"25"})),0===g.length&&(0,e.createElement)(o.Notice,{status:"warning",isDismissible:!1,className:"gp-font-library-edit__control-notice"},(0,t.__)("CSS Variable suffix cannot be empty. Please enter a valid suffix.","gp-premium")))),k!==n.cssVariable&&(0,e.createElement)(o.Notice,{status:"warning",isDismissible:!1},(0,t.__)("If you have used this font's css variable, changing the variable suffix may cause loss of visual styles.","gp-premium")),(0,e.createElement)(o.Flex,{className:"gp-font-library-edit__footer",alignItems:"center",gap:"20px",justifyContent:"flex-start"},(0,e.createElement)(o.FlexItem,null,(0,e.createElement)(o.Button,{title:(0,t.__)("Delete font and all its variants","gp-premium"),isDestructive:!0,size:"compact",variant:"primary",onClick:D},(0,t.__)("Delete","gp-premium"))),u&&(0,e.createElement)(o.FlexItem,null,(0,e.createElement)(o.Button,{title:(0,t.__)("Save font changes","gp-premium"),size:"compact",variant:"primary",onClick:async()=>{let e=m?"draft":"publish";Array.isArray(x)&&x?.every((({disabled:e})=>e))&&(e="draft");const r=[],o=[];if(x.forEach((e=>{e.deleteStatus?o.push(e):r.push({...e,deleteStatus:!1})})),0===r.length)if(window.confirm((0,t.__)("You've selected to delete ALL variants. This will also delete the font from the library. Click OK to proceed, or Cancel to undelete variants.","gp-premium")))F();else{const e=x.map((e=>({...e,deleteStatus:!1})));S(e)}else{const a={data:{newVariants:r,deleteVariants:o,fontDisplay:E,fallback:y,alias:v,cssVariable:k,status:e,id:n.id}};await Bn("update-font-post",a),s(!0),l({type:"success",message:(0,t.__)("Font changes saved.")}),c(!1),i(null)}}},(0,t.__)("Save","gp-premium"))))))},Qn=(0,e.createElement)(Un.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,e.createElement)(Un.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})),$n=(0,r.memo)((function({font:n,loading:r="lazy",fallbackText:i=""}){const{preview:s,fontFamily:a,name:l,alias:u}=n;return(0,e.createElement)("div",{className:"gp-font-library-preview"},s?(0,e.createElement)(e.Fragment,null,(0,e.createElement)("img",{className:"gp-font-library-preview__image",src:s,alt:(0,t.__)("A graphical rendering of the font family","gp-premium"),height:"23",loading:r}),(0,e.createElement)(o.VisuallyHidden,null,i||l)):(0,e.createElement)("span",{className:"gp-font-library-preview__fallback",style:{fontFamily:a}},l," ",u&&`(${u})`))})),er=(0,r.memo)((function({font:n,onClick:i,category:s=""}){const a=(0,r.useMemo)((()=>function({variants:e=[],fontFace:t=[]}){var n;let r=0;const o=e.length>0?e:t,i=null!==(n=o?.length)&&void 0!==n?n:0;return o.forEach((({disabled:e=!1})=>{e||r++})),{total:i,enabled:r}}(n)),[n]);return(0,e.createElement)(o.Button,{className:"gp-font-library-card",type:"button",onClick:i},(0,e.createElement)($n,{font:n}),s&&(0,e.createElement)("span",{className:"gp-font-library-card__categories"},s),(0,e.createElement)("div",{className:"gp-font-library-card__variants"},a.total===a.enabled?(0,t.sprintf)(/* translators: %d: Total number of font variants. */ -(0,t._n)("%d variant","%d variants",a.total,"gp-premium"),a.total):(0,t.sprintf)(/* translators: %s: Number of enabled font variants. */ -(0,t.__)("%s variants","gp-premium"),`${a.enabled}/${a.total}`),(0,e.createElement)(o.Icon,{icon:Qn})))}));function tr({fonts:n,setUpdateFontList:i,unsavedChanges:s,setUnsavedChanges:a,editFont:l,setEditFont:u}){const[c,d]=(0,r.useState)(null),[h,f]=(0,r.useState)(null);return(0,r.useEffect)((()=>{if(n)return document.head.appendChild(function(e){const t=document.getElementById("gp-custom-font-style");t&&t.parentNode.removeChild(t);const n=document.createElement("style");n.id="gp-custom-font-style";let r="";return e.forEach((e=>{const{name:t="",alias:n="",variants:o=[],fontDisplay:i="auto",preview:s=""}=e;if(s)return null;const a=n||t;o&&o.length>0&&o.filter((e=>!e.disabled)).forEach((e=>{r+=`@font-face {\n\tfont-display: ${i};\n\tfont-family: '${a}';\n\tfont-style: ${e.fontStyle};\n\tfont-weight: ${e.fontWeight};\n\tsrc: url('${e.src}')${(e=>{const t={woff:"woff",woff2:"woff2",ttf:"truetype",otf:"opentype"}[e.split(".").pop()]||null;return t?` format('${t}')`:""})(e.src)};\n}\n`}))})),n.textContent=r,n}(n?.response)),()=>{const e=document.getElementById("gp-custom-font-style");e&&document.head.removeChild(e)}}),[n]),(0,r.useEffect)((()=>{l&&(d(null),f(null))}),[l]),l?(0,e.createElement)(Jn,{editFont:l,setEditFont:u,setUpdateFontList:i,setDeleteNotice:d,setSaveNotice:f,unsavedChanges:s,setUnsavedChanges:a}):(0,e.createElement)("div",{className:"gp-font-library__tab"},(0,e.createElement)("div",{className:"gp-font-library__notices"},c&&(0,e.createElement)("div",{style:{margin:"0 0 20px 0"}},(0,e.createElement)(o.Notice,{status:c.type,onRemove:()=>d(null)},c.message)),h&&(0,e.createElement)("div",{style:{margin:"0 0 20px 0"}},(0,e.createElement)(o.Notice,{status:h.type,onRemove:()=>f(null)},h.message))),(0,e.createElement)("h2",null,(0,t.__)("Installed Fonts","gp-premium")),n?(0,e.createElement)("div",null,0===n?.response.length&&(0,e.createElement)(e.Fragment,null,(0,e.createElement)("p",null,(0,t.__)("No fonts have been installed yet.","gp-premium")),(0,e.createElement)("div",{style:{display:"flex",gap:"10px"}},(0,e.createElement)(o.Button,{variant:"primary",onClick:()=>{const e=document.querySelector(".gp-font-library__google-fonts");e&&e.click()}},(0,t.__)("Install Google Fonts","gp-premium")),(0,e.createElement)(o.Button,{variant:"primary",onClick:()=>{const e=document.querySelector(".gp-font-library__upload");e&&e.click()}},(0,t.__)("Upload Custom Fonts","gp-premium")))),n?.response.length>0&&(0,e.createElement)(e.Fragment,null,(0,e.createElement)("div",{style:{marginBottom:"30px",__marginTop:"-20px"}},(0,t.__)("Installed and enabled fonts are automatically available on the frontend of your site."))),n?.response.length>0&&(0,e.createElement)(e.Fragment,null,(0,e.createElement)("ul",{style:{marginBottom:"25px"},className:"gp-font-library__list",role:"list"},n.response.map((t=>(0,e.createElement)("li",{key:t.id},(0,e.createElement)(er,{font:t,onClick:()=>u(t),loading:"eager"}))))))):(0,e.createElement)(o.Spinner,null))}const nr=(0,e.createElement)(Un.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,e.createElement)(Un.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})),rr=window.wp.compose,or=[{value:"latin",label:"Latin"},{value:"latin-ext",label:"Latin Extended"},{value:"bengali",label:"Bengali"},{value:"chinese-hongkong",label:"Chinese (Hong Kong)"},{value:"chinese-simplified",label:"Chinese (Simplified)"},{value:"chinese-traditional",label:"Chinese (Traditional)"},{value:"cyrillic",label:"Cyrillic"},{value:"cyrillic-ext",label:"Cyrillic Extended"},{value:"devanagari",label:"Devanagari"},{value:"greek",label:"Greek"},{value:"greek-ext",label:"Greek Extended"},{value:"gujarati",label:"Gujarati"},{value:"gurmukhi",label:"Gurmukhi"},{value:"hebrew",label:"Hebrew"},{value:"japanese",label:"Japanese"},{value:"kannada",label:"Kannada"},{value:"khmer",label:"Khmer"},{value:"korean",label:"Korean"},{value:"malayalam",label:"Malayalam"},{value:"math",label:"Math"},{value:"myanmar",label:"Myanmar"},{value:"oriya",label:"Oriya"},{value:"sinhala",label:"Sinhala"},{value:"symbols",label:"Symbols"},{value:"tamil",label:"Tamil"},{value:"telugu",label:"Telugu"},{value:"thai",label:"Thai"},{value:"tibetan",label:"Tibetan"},{value:"vietnamese",label:"Vietnamese"}];function ir({settings:n,setSettings:i,setUpdateFontList:s,googleFonts:a}){var l;const[u,c]=(0,r.useState)(5),[d,h]=(0,r.useState)(n?.preferred_subset?n.preferred_subset[0]:"latin"),[f,g]=(0,r.useState)(!1),[p,m]=(0,r.useState)(!1),[b,v]=(0,r.useState)(null),[w,y]=(0,r.useState)([]),[C,x]=(0,r.useState)(1),[S,E]=(0,r.useState)({}),[R,O]=(0,r.useState)(null),I=(0,r.useRef)(),k=null!==(l=n?.google_gdpr)&&void 0!==l&&l,M=(0,r.useMemo)((()=>{var e;return null!==(e=b?.font_family_settings?.fontFace)&&void 0!==e?e:[]}),[b]),F=(0,r.useMemo)((()=>function(e,t){const{category:n,search:r}=t;let o=e||[];return n&&"all"!==n&&(o=o.filter((e=>-1!==e.categories.indexOf(n)))),r&&(o=o.filter((e=>e.font_family_settings.name.toLowerCase().includes(r.toLowerCase())))),o}(a,S)),[a,S]),D=(0,r.useMemo)((()=>F.slice((C-1)*u,C*u)),[F,C,u]),P=(0,r.useMemo)((()=>Array.from({length:Math.ceil(F.length/u)},((e,t)=>({label:t+1,value:t+1})))),[F,u]),A=(0,r.useMemo)((()=>Object.values(S).length>0),[S]);function V(){E({}),x(1)}const T=(0,rr.debounce)((function(e){E({...S,search:e}),x(1)}),300),L=(0,r.useCallback)((async(e=!1)=>{try{const t=await Bn("set-settings",{data:{settings:{...n,google_gdpr:e}}});if(!t.success)throw new Error(t.response);i({...n,google_gdpr:e})}catch(e){console.error(e),O({type:"error",message:(0,t.__)("An error occurred while updating settings.","gp-premium")})}}),[n,i]),N=(0,r.useCallback)((async(e="")=>{try{const t=await Bn("set-settings",{data:{settings:{...n,preferred_subset:e}}});if(!t.success)throw new Error(t.response.message);i({...n,preferred_subset:e})}catch(e){console.error(e),O({type:"error",message:(0,t.__)("An error occurred while updating settings.","gp-premium")})}}),[n,i]);return(0,r.useEffect)((()=>{I.current?I.current.scrollIntoView({behavior:"smooth"}):window.scrollTo(0,0)}),[C]),(0,e.createElement)(e.Fragment,null,R&&(0,e.createElement)(o.Notice,{className:"gp-font-library__notice",isDismissible:!0,status:R.type,onRemove:()=>O(null)},R.message),k?(0,e.createElement)("section",{ref:I},b?(0,e.createElement)("div",{className:"gp-font-library__select-variants"},(0,e.createElement)(o.Button,{onClick:()=>{v(null),O(null)},icon:nr},b.font_family_settings.name),(0,e.createElement)("h3",null,(0,t.__)("Install variants","gp-premium")),(0,e.createElement)("p",{className:"gp-font-library__text"},(0,t.__)("Select the font variants you want to install. GeneratePress will install the most optimal version of the font available. If the font has a variable version, that will be used automatically.","gp-premium")),(0,e.createElement)("ul",{role:"list",className:"gp-font-library__list"},M.map((t=>{const n=`variant-${t.fontWeight}-${t.fontStyle}`;return(0,e.createElement)("li",{className:"gp-font-library-card",key:n},(0,e.createElement)(o.CheckboxControl,{checked:w.includes(t),id:n,onChange:e=>{y(e?[...w,t]:w.filter((e=>e!==t)))},__nextHasNoMarginBottom:!0}),(0,e.createElement)("label",{htmlFor:n},(0,e.createElement)($n,{font:t,loading:"eager",fallbackText:t.fontFamily})))}))),(0,e.createElement)("footer",{className:"gp-font-library-google__footer"},(0,e.createElement)(o.Button,{isBusy:p,variant:"primary",disabled:0===w.length,onClick:async()=>{try{m(!0);let e=w;const n=await Bn("optimize-google-fonts",{data:{font:b.font_family_settings,variants:w}});if(n.success){e=n.response;const t=e.map((e=>e.src));if(t.every((e=>t[0]===e))){const{fontWeight:t,isVariable:n,fontStyle:r}=await Hn(e[0].src);e=[{...e[0],fontWeight:t,isVariable:n,fontStyle:r}],document.querySelectorAll(".injected-by-Font-js").forEach((e=>e.remove()))}}const r=await Bn("upload-fonts",{data:{font:b.font_family_settings,variants:e}});if(!r.success)throw new Error(r.response);s(!0),V(),y([]),O({type:"success",message:(0,t.__)("Fonts were installed successfully.","gp-premium")})}catch(e){s(!1),O({type:"error",message:(0,t.__)("An error occurred while downloading the variants.","gp-premium")}),console.error(e.message)}m(!1)}},(0,t.__)("Install Selected","gp-premium")),p&&(0,e.createElement)("span",null,(0,t.__)("Downloading…","gp-premium")," "))):(0,e.createElement)(e.Fragment,null,(0,e.createElement)("header",{className:"gp-font-library-google__header"},(0,e.createElement)("div",{className:"gp-font-library-google__header-content"},(0,e.createElement)("h2",null,(0,t.__)("Google Fonts","gp-premium")),(0,e.createElement)("p",{className:"gp-font-library-google__description"},(0,t.__)("Install fonts from Google Fonts. Fonts are installed locally on your site.","gp-premium"))),(0,e.createElement)(o.Button,{variant:"link",onClick:()=>g(!0)},(0,t.__)("Settings","gp-premium")),f&&(0,e.createElement)(o.Modal,{title:(0,t.__)("Settings","gp-premium"),onRequestClose:()=>g(!1),className:"gp-font-library-settings"},(0,e.createElement)(Yn.Stack,{className:"gp-font-library-settings__controls",gap:"20px"},(0,e.createElement)(o.SelectControl,{value:d,options:or,label:(0,t.__)("Preferred Subset","gp-premium"),onChange:e=>{h(e)},help:(0,t.__)("Choose which character subset you want to download if available.","gp-premium")}),(0,e.createElement)(o.Button,{variant:"primary",onClick:()=>{N(d||"latin"),O({type:"success",message:(0,t.__)("Preferred subset updated.","gp-premium")}),g(!1)},size:"compact"},(0,t.__)("Save Settings","gp-premium"))),(0,e.createElement)("h3",null,(0,t.__)("Revoke access to Google Fonts","gp-premium")),(0,e.createElement)("div",{className:"gp-font-library-settings__auth"},(0,e.createElement)("p",{id:"google-fonts-revoke-access-description"},(0,t.__)("This will remove the connection to Google Fonts and you will not be able to install new fonts from Google Fonts. Previously installed fonts will NOT be deleted.","gp-premium")),(0,e.createElement)(o.Button,{isDestructive:!0,variant:"primary",size:"compact","aria-describedby":"google-fonts-revoke-access-description",onClick:()=>{L(!1),O({type:"success",message:(0,t.__)("Google fonts access has been revoked.","gp-premium")}),g(!1)}},(0,t.__)("Revoke access","gp-premium"))))),(0,e.createElement)("div",{className:"gp-font-library-google__filters"},(0,e.createElement)(o.SearchControl,{label:(0,t.__)("Search","gp-premium"),value:S.search,onChange:T,__nextHasNoMarginBottom:!0,placeholder:(0,t.__)("Font name…","gp-premium"),hideLabelFromVision:!1}),(0,e.createElement)(o.SelectControl,{label:(0,t.__)("Category","gp-premium"),value:S.category,onChange:e=>E({...S,category:e}),options:[{label:(0,t.__)("All","gp-premium"),value:""},{label:(0,t.__)("Serif","gp-premium"),value:"serif"},{label:(0,t.__)("Sans Serif","gp-premium"),value:"sans-serif"},{label:(0,t.__)("Display","gp-premium"),value:"display"},{label:(0,t.__)("Handwriting","gp-premium"),value:"handwriting"},{label:(0,t.__)("Monospace","gp-premium"),value:"monospace"}],__nextHasNoMarginBottom:!0})),(0,e.createElement)("p",{className:"gp-font-library-google__results"},F.length>0?(0,e.createElement)(e.Fragment,null,(0,e.createElement)("span",null,(0,t.sprintf)(/* translators: %d: Total number of matching fonts. */ -(0,t._n)("%d matching font","%d matching fonts",F.length,"gp-premium"),F.length)),F.length!==a.length&&(0,e.createElement)("span",null,"( ",(0,t.sprintf)(/* translators: %d: Total number of fonts. */ -"%d total",a.length)," )"),A&&(0,e.createElement)(o.Button,{onClick:V,variant:"link"},(0,t.__)("Reset","gp-premium"))):(0,e.createElement)("span",null,(0,t.__)("No matching fonts found.","gp-premium"))),(0,e.createElement)("ul",{role:"list",className:"gp-font-library__list"},D.map((t=>{var n;const r=null!==(n=t.font_family_settings)&&void 0!==n?n:{};return(0,e.createElement)("li",{key:r.slug},(0,e.createElement)(er,{font:r,onClick:()=>v(t),category:t.categories[0]}))}))),(0,e.createElement)("nav",{className:"gp-font-library-google__pagination","aria-label":(0,t.__)("Font list pagination","gp-premium")},(0,e.createElement)("div",{className:"gp-font-library-google__pagination-numbers"},(0,e.createElement)(o.Button,{disabled:1===C,onClick:()=>x(C-1)},(0,t.__)("Previous","gp-premium")),(0,e.createElement)(o.SelectControl,{label:(0,t.__)("Choose Page","gp-premium"),value:C,onChange:e=>x(parseInt(e,10)),options:P,hideLabelFromVision:!0,__nextHasNoMarginBottom:!0}),(0,e.createElement)(o.Button,{disabled:D.lengthx(C+1)},(0,t.__)("Next","gp-premium"))),(0,e.createElement)(o.SelectControl,{label:(0,t.__)("Per Page","gp-premium"),value:S.category,onChange:e=>c(e),options:[{label:(0,t.__)("5","gp-premium"),value:5},{label:(0,t.__)("10","gp-premium"),value:10},{label:(0,t.__)("15","gp-premium"),value:15},{label:(0,t.__)("20","gp-premium"),value:20}],style:{width:"100px"},__nextHasNoMarginBottom:!0})))):(0,e.createElement)("div",{className:"gp-font-library-authorize-fonts"},(0,e.createElement)("h3",null,(0,t.__)("Connect to Google Fonts?","gp-premium")),(0,e.createElement)("p",null,(0,t.__)("To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.","gp-premium")),(0,e.createElement)("p",null,(0,t.__)("You can alternatively upload fonts directly on the Upload Custom Fonts tab.","gp-premium")),(0,e.createElement)(o.Button,{variant:"primary",onClick:()=>{L(!0)}},(0,t.__)("Allow access to Google Fonts","gp-premium"))))}const sr=(0,r.forwardRef)((function({icon:e,size:t=24,...n},o){return(0,r.cloneElement)(e,{width:t,height:t,...n,ref:o})})),ar=(0,e.createElement)(Un.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,e.createElement)(Un.Path,{d:"M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z"})),lr=(0,e.createElement)(Un.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,e.createElement)(Un.Path,{d:"M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z"})),ur=/([\p{Ll}\d])(\p{Lu})/gu,cr=/(\p{Lu})([\p{Lu}][\p{Ll}])/gu,dr=/(\d)\p{Ll}|(\p{L})\d/u,hr=/[^\p{L}\d]+/giu,fr="$1\0$2",gr="";function pr(e){let t=e.trim();t=t.replace(ur,fr).replace(cr,fr),t=t.replace(hr,"\0");let n=0,r=t.length;for(;"\0"===t.charAt(n);)n++;if(n===r)return[];for(;"\0"===t.charAt(r-1);)r--;return t.slice(n,r).split(/\0/g)}function mr(e){const t=pr(e);for(let e=0;ei;){const t=s-1,n=e.charAt(t);if(!o.includes(n))break;s=t}return[e.slice(0,i),n(e.slice(i,s)),e.slice(s)]}(e,t);return n+r.map((i=t?.locale,!1===i?e=>e.toLowerCase():e=>e.toLocaleLowerCase(i))).join(t?.delimiter??" ")+o;var i}const vr=Ln.map((e=>`.${e}`)).join(","),wr=({setUpdateFontList:n})=>{const[i,s]=(0,r.useState)([]),[a,l]=(0,r.useState)(!1),u=(0,r.useCallback)((async r=>{try{const n=await async function(e){return await Promise.all(e.map((async e=>await Hn(e))))}(r),o=await async function(e){const t=[];for(const n of e){const{name:e}=n;try{const r=await Bn("upload-fonts",{body:Nn(n)});t.push({status:"fulfilled",value:{...r.response,name:e}})}catch(n){t.push({status:"rejected",value:{message:n.message,name:e}})}}const n={errors:[],successes:[]};return t.forEach((e=>{const t=e.value;"fulfilled"===e.status&&t.ID?n.successes.push(t):n.errors.push(t)})),n}(function(e){const t=e.reduce(((e,t)=>{var n;return e[t.fontFamily]||(e[t.fontFamily]={name:t.fontFamily,fontFamily:t.fontFamily,slug:(n=t.fontFamily.toLowerCase(),br(n,{delimiter:"-"})),fontFace:[]}),e[t.fontFamily].fontFace.push(t),e}),{});return Object.values(t)}(n)),i=o.errors.length>0,a=o.successes.length>0;let l=(0,t.__)("All fonts were uploaded successfully.");i&&a?l=(0,t.__)("Some fonts failed to upload.","gp-premium"):i&&!a&&(l=(0,t.__)("All fonts failed to upload.","gp-premium")),s((n=>[...n,{type:"info",message:(0,e.createElement)(e.Fragment,null,l,(0,e.createElement)("ul",{className:"gp-font-library__results"},o.successes.map((n=>(0,e.createElement)("li",{className:"gp-font-library__result gp-font-library__result--success",key:n.fontFamily},(0,e.createElement)(sr,{icon:ar,size:"1.25em"}),(0,t.sprintf)( -// translators: %s: font family name -(0,t.__)("%s installed.","gp-premium"),n.name)))),o.errors.map((n=>(0,e.createElement)("li",{className:"gp-font-library__result gp-font-library__result--failure",key:n.fontFamily},(0,e.createElement)(sr,{icon:lr,size:"1.25em"}),(0,t.sprintf)( -// translators: %s: font family name -(0,t.__)("%s install failed.","gp-premium"),n.name))))))}]))}catch(e){s((e=>[...e,{type:"error",message:(0,t.__)("There was an error installing fonts.")}])),console.error(e.message)}n(!0),l(!1)}),[n,l,s]),c=(0,r.useCallback)((async n=>{l(!0),s([]);const r=new Set,o=[...n];let i=!1;const a=o.map((async n=>{const o=await async function(e){const t=new N("Uploaded Font");try{const n=await Gn(e);return await t.fromDataBuffer(n,"font"),!0}catch(e){return console.error("Error: ",e),!1}}(n);if(!o)return i=!0,s([{type:"error",message:(0,e.createElement)(e.Fragment,null,(0,t.__)("Invalid or corrupted font file: ","gp-premium")," ",`${n.name}`)}]),null;if(r.has(n.name))return null;const a=n.name.split(".").pop().toLowerCase();return Ln.includes(a)?(r.add(n.name),n):null})),c=(await Promise.all(a)).filter((e=>null!==e));if(c.length>0)u(c);else{const e=i?(0,t.__)("Sorry, you are not allowed to upload this file type."):(0,t.__)("No fonts found to install.");console.error("Error: ",e),l(!1)}}),[u,l,s]);return(0,e.createElement)(e.Fragment,null,i&&(0,e.createElement)("div",{style:{margin:"0 0 20px 0"}},(0,e.createElement)(Yn.Stack,{gap:"20px"},i.map(((t,n)=>(0,e.createElement)(o.Notice,{key:`${t.type}-${n}`,status:t.type,onRemove:()=>s(i.toSpliced(n,1))},t.message))))),(0,e.createElement)("h2",null,(0,t.__)("Upload Fonts","gp-premium")),(0,e.createElement)("div",{style:{position:"relative"},className:"gp-font-library-upload"},(0,e.createElement)(o.DropZone,{onFilesDrop:function(e){c(e)}}),(0,e.createElement)("div",{className:"gp-font-library-modal__local-fonts"},(0,e.createElement)(o.FormFileUpload,{accept:vr,multiple:!0,onChange:function(e){c(e.target.files)},render:({openFileDialog:n})=>(0,e.createElement)(o.Button,{style:{background:"#f0f0f0",alignItems:"center",display:"flex",height:"256px",justifyContent:"center",width:"100%"},className:"gp-font-library-modal__upload-area",onClick:n},a&&(0,e.createElement)(o.Spinner,null),!a&&(0,t.__)("Click to upload"))}))),(0,e.createElement)("p",{style:{margin:"25px 0"}},(0,t.__)("Upload one or more fonts. Once uploaded, they will appear via the Font Library tab above. Supported formats are: .ttf, .otf, .woff, and .woff2.","gp-premium")))},yr=(t,n)=>(0,e.createElement)("div",{className:"gp-tab-header",id:n},t),Cr=async({setFonts:e,updateFontList:t,setUpdateFontList:n})=>{const r=await zn("get-fonts");e({success:r.success,response:r.response}),t&&n(!1)};var xr,Sr;xr=(0,e.createElement)((()=>{const[n,i]=(0,r.useState)(null),[a,l]=(0,r.useState)(!1),[u,c]=(0,r.useState)({google_gdpr:!1}),[d,h]=(0,r.useState)(!1),[f,g]=(0,r.useState)(null),[p,m]=(0,r.useState)("library-font"),[b,v]=(0,r.useState)([]),w=(0,r.useMemo)((()=>[{disabled:d,name:"library-font",title:yr((0,t.__)("Font Library","gp-premium"),"library_font_hd"),content:(0,e.createElement)(tr,{fonts:n,editFont:f,setEditFont:g,unsavedChanges:d,setUnsavedChanges:h,setUpdateFontList:l}),className:"gp-font-library__fonts"},{disabled:d,name:"upload-font",title:yr((0,t.__)("Upload Custom Fonts","gp-premium"),"upload_font_hd"),content:(0,e.createElement)(wr,{setFonts:i,setUpdateFontList:l}),className:"gp-font-library__upload"},{disabled:d,name:"google-font",title:yr((0,t.__)("Install Google Fonts","gp-premium"),"google_font_hd"),content:(0,e.createElement)(ir,{settings:u,setSettings:c,setUpdateFontList:l,googleFonts:b}),className:"gp-font-library__google-fonts"}]),[n,f,d,h,i,l,u,c,b]),y=(0,r.useCallback)((e=>{"library-font"===e||d||g(null),m(e)}),[d]);return(0,r.useEffect)((()=>{0===b.length&&"google-font"===p&&async function({setGoogleFonts:e,setNotice:n}){try{var r;const t=await async function(e="google-fonts"){const t={path:`/wp/v2/font-collections/${e}`,method:"GET"};return await s()(t)}("google-fonts"),n=null!==(r=t?.font_families)&&void 0!==r?r:[];if(!n)throw new Error(t);e(n)}catch(e){n({type:"error",message:(0,t.__)("An error occurred while fetching Google Fonts.","gp-premium")}),console.error(e.message)}}({setGoogleFonts:v})}),[p,b.length,v]),(0,r.useEffect)((()=>{a&&Cr({updateFontList:a,setUpdateFontList:l,setFonts:i}).catch((e=>console.error("Error:",e)))}),[a]),(0,r.useEffect)((()=>{Cr({updateFontList:a,setUpdateFontList:l,setFonts:i}),(async()=>{try{var e;const t=await zn("get-settings");c(null!==(e=t?.response)&&void 0!==e&&e)}catch(e){console.error(e.message)}})()}),[]),(0,e.createElement)(e.Fragment,null,(0,e.createElement)(o.TabPanel,{onSelect:y,className:"gp-font-tab-panel",activeClass:"active-tab",orientation:"horizontal",initialTabName:p,tabs:w},(e=>e.content)))}),null),Sr=document.getElementById("gp-font-library"),void 0!==r.createRoot?(0,r.createRoot)(Sr).render(xr):(0,r.render)(xr,Sr)})()})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/packages-rtl.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/packages-rtl.css deleted file mode 100644 index b69e48bd..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/packages-rtl.css +++ /dev/null @@ -1,2 +0,0 @@ -.mnc9nIWbe_UvWqh_EGSg{position:relative;width:100%}.lvIdqq0VcOc4Fsgp6edt{display:flex;gap:0 4px}.JQD57VZha1Nz_puhbEGL{flex-grow:1;position:relative}.uPu9muJa3zAmugfyIwKm[type=text]{appearance:none;border-color:#8c8f94;border-radius:3px;box-shadow:none;color:#2c3338;cursor:pointer;font-size:16px;line-height:2;min-height:30px;min-width:0;padding:0 8px 0 24px;vertical-align:middle;width:100%}@media(min-width:600px){.uPu9muJa3zAmugfyIwKm[type=text]{font-size:13px}}.uPu9muJa3zAmugfyIwKm[type=text].WNS5v6eZssWgR0abiuiV{outline-offset:2px}.uPu9muJa3zAmugfyIwKm[type=text].MgYZFTRJHzGT5kJMx1EN{padding-left:44px}.BI9El7N6XuVkzJ0yYqjN{display:block;height:12px;width:12px}.FIMlw2_F2weKvrhreh8G{background:#0000;border:none;box-shadow:none;height:100%;left:0;top:0}.FIMlw2_F2weKvrhreh8G,.HfEDCyNjbWPw8DWxXwEJ{position:absolute}.HfEDCyNjbWPw8DWxXwEJ{background-color:#fff;border:1px solid #d3d6d9;color:#0b0c0c;margin:8px 0 0;max-height:342px;overflow-x:hidden;padding:0;transform:translateZ(0);width:calc(100% - 2px);z-index:200}.HfEDCyNjbWPw8DWxXwEJ.GguvZjj87n5NGDn8J2P6{display:block}.HfEDCyNjbWPw8DWxXwEJ.BJaSrnsPhERUxtRDC6Vu{display:none}.GzNl93gsU8KelMCsQSyZ{border-bottom:1px solid #d3d6d9;border-right-width:0;border-left-width:0;border-top-width:1px;cursor:pointer;display:block;margin:0;padding:7px;position:relative}.GzNl93gsU8KelMCsQSyZ>*{pointer-events:none}.GzNl93gsU8KelMCsQSyZ:first-of-type{border-top-width:0}.GzNl93gsU8KelMCsQSyZ:last-of-type{border-bottom-width:0;margin-bottom:0}.GzNl93gsU8KelMCsQSyZ:where(:nth-child(odd)){background-color:#fafafa}.GzNl93gsU8KelMCsQSyZ.WNS5v6eZssWgR0abiuiV,.GzNl93gsU8KelMCsQSyZ:hover{background-color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));border-color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));color:#fff;outline:0}.kUveEVlY9D_n5Zmz_dXD{height:30px!important;min-width:16px!important;padding:0!important;position:absolute;left:24px;top:0;width:16px!important}@media(-ms-high-contrast:active),(forced-colors:active){.HfEDCyNjbWPw8DWxXwEJ{border-color:FieldText}.GzNl93gsU8KelMCsQSyZ{background-color:Field;color:FieldText}.GzNl93gsU8KelMCsQSyZ:hover,.HKlvLGhxs7ir32hUBNzQ{background-color:SelectedItem;border-color:SelectedItem;color:SelectedItemText;forced-color-adjust:none;outline-color:SelectedItemText}}.Uy2rTDWqjs4vgNH0aeBm .components-base-control__field{align-items:center;display:flex}.Uy2rTDWqjs4vgNH0aeBm .components-base-control__field .components-base-control__label{flex:1;margin:0}.qLXIpwst_CtGTtmsg3mN{height:auto;min-height:auto;padding:4px}.UVmA1eywUsKVQzLMDooq{background:linear-gradient(45deg,#0000 48%,#0003 0,#0003 52%,#0000 0);border:1px solid #0003;border-radius:50%;height:25px;width:25px}.eTonGpRD1VuB2tbLNegK .components-popover__content{max-width:365px;min-width:max-content;padding:15px}.eTonGpRD1VuB2tbLNegK .components-popover__content>div{padding:0}.eTonGpRD1VuB2tbLNegK .components-base-control__field{margin-bottom:0}.eTonGpRD1VuB2tbLNegK .react-colorful{width:100%!important}.eTonGpRD1VuB2tbLNegK .react-colorful .react-colorful__pointer{height:20px;width:20px}.eTonGpRD1VuB2tbLNegK .react-colorful .react-colorful__saturation{height:150px}.eTonGpRD1VuB2tbLNegK .components-circular-option-picker__option-wrapper{height:25px;width:25px}.nc5TMqH__oA5bcPGTm0D{display:flex;margin-top:15px}.nc5TMqH__oA5bcPGTm0D ._ubMuvqZvhc0awiEVNAL{flex:1}.nc5TMqH__oA5bcPGTm0D .f5wwshdAOOkfChALEoo2{height:auto}.nc5TMqH__oA5bcPGTm0D .components-base-control__field{margin-bottom:0}.OhNX_C7EMJcWKe5tqpKQ{margin-top:15px}.OhNX_C7EMJcWKe5tqpKQ .components-circular-option-picker{display:flex;flex-wrap:wrap}.OhNX_C7EMJcWKe5tqpKQ .components-circular-option-picker .components-circular-option-picker__swatches{display:flex;flex-wrap:wrap;gap:6px}.OhNX_C7EMJcWKe5tqpKQ .components-circular-option-picker .components-circular-option-picker__swatches .components-circular-option-picker__option-wrapper{margin:0}.mos6VIbAjooq2LMyKr88{display:flex;margin-top:15px}.mos6VIbAjooq2LMyKr88 .components-range-control{flex-grow:1;padding-right:5px}.UFXv660XisMp2k7oIkOA{margin:0}.cuno_GtO4bhcM59n00B2{--icon-size:1rem;display:grid;gap:.625rem;grid-template-columns:36px minmax(0,1fr);position:relative}.cuno_GtO4bhcM59n00B2 .components-button svg{display:block;height:var(--icon-size);width:var(--icon-size)}.fOOS92b6g0h9pAqn_2JI{border-radius:0;height:100%;position:relative;z-index:2}.rDe4XxEMyRee1hSKKXzn{display:flex;flex-wrap:wrap;gap:var(--gap,10px)}.Yg1nkwz9mFYMuk6zv1DW.b6i6J_7eUIspcsEZ3Qia>*+*{margin-inline-start:var(--gap,10px)}.dfG8sfdNVPzQp7pqgYJQ.b6i6J_7eUIspcsEZ3Qia>*+*{margin-block-start:var(--gap,10px)}.dfG8sfdNVPzQp7pqgYJQ.rDe4XxEMyRee1hSKKXzn{flex-direction:column}.l03h0IHl5WOI4XvelHt3{border-collapse:collapse;width:100%}.l03h0IHl5WOI4XvelHt3 td,.l03h0IHl5WOI4XvelHt3 th{box-sizing:border-box}.l03h0IHl5WOI4XvelHt3.pz9cxM_c8wpWcOh3bw5v tr:nth-child(2n){background-color:rgba(var(--wp-admin-theme-color--rgb),.04)} - diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/packages.asset.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/packages.asset.php deleted file mode 100644 index 71313fd9..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/packages.asset.php +++ /dev/null @@ -1 +0,0 @@ - array(), 'version' => '50ca20852d9e1cd8d9dc'); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/packages.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/packages.css deleted file mode 100644 index a6a6311e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/packages.css +++ /dev/null @@ -1,2 +0,0 @@ -.mnc9nIWbe_UvWqh_EGSg{position:relative;width:100%}.lvIdqq0VcOc4Fsgp6edt{display:flex;gap:0 4px}.JQD57VZha1Nz_puhbEGL{flex-grow:1;position:relative}.uPu9muJa3zAmugfyIwKm[type=text]{appearance:none;border-color:#8c8f94;border-radius:3px;box-shadow:none;color:#2c3338;cursor:pointer;font-size:16px;line-height:2;min-height:30px;min-width:0;padding:0 24px 0 8px;vertical-align:middle;width:100%}@media(min-width:600px){.uPu9muJa3zAmugfyIwKm[type=text]{font-size:13px}}.uPu9muJa3zAmugfyIwKm[type=text].WNS5v6eZssWgR0abiuiV{outline-offset:2px}.uPu9muJa3zAmugfyIwKm[type=text].MgYZFTRJHzGT5kJMx1EN{padding-right:44px}.BI9El7N6XuVkzJ0yYqjN{display:block;height:12px;width:12px}.FIMlw2_F2weKvrhreh8G{background:#0000;border:none;box-shadow:none;height:100%;right:0;top:0}.FIMlw2_F2weKvrhreh8G,.HfEDCyNjbWPw8DWxXwEJ{position:absolute}.HfEDCyNjbWPw8DWxXwEJ{background-color:#fff;border:1px solid #d3d6d9;color:#0b0c0c;margin:8px 0 0;max-height:342px;overflow-x:hidden;padding:0;transform:translateZ(0);width:calc(100% - 2px);z-index:200}.HfEDCyNjbWPw8DWxXwEJ.GguvZjj87n5NGDn8J2P6{display:block}.HfEDCyNjbWPw8DWxXwEJ.BJaSrnsPhERUxtRDC6Vu{display:none}.GzNl93gsU8KelMCsQSyZ{border-bottom:1px solid #d3d6d9;border-left-width:0;border-right-width:0;border-top-width:1px;cursor:pointer;display:block;margin:0;padding:7px;position:relative}.GzNl93gsU8KelMCsQSyZ>*{pointer-events:none}.GzNl93gsU8KelMCsQSyZ:first-of-type{border-top-width:0}.GzNl93gsU8KelMCsQSyZ:last-of-type{border-bottom-width:0;margin-bottom:0}.GzNl93gsU8KelMCsQSyZ:where(:nth-child(odd)){background-color:#fafafa}.GzNl93gsU8KelMCsQSyZ.WNS5v6eZssWgR0abiuiV,.GzNl93gsU8KelMCsQSyZ:hover{background-color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));border-color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));color:#fff;outline:0}.kUveEVlY9D_n5Zmz_dXD{height:30px!important;min-width:16px!important;padding:0!important;position:absolute;right:24px;top:0;width:16px!important}@media(-ms-high-contrast:active),(forced-colors:active){.HfEDCyNjbWPw8DWxXwEJ{border-color:FieldText}.GzNl93gsU8KelMCsQSyZ{background-color:Field;color:FieldText}.GzNl93gsU8KelMCsQSyZ:hover,.HKlvLGhxs7ir32hUBNzQ{background-color:SelectedItem;border-color:SelectedItem;color:SelectedItemText;forced-color-adjust:none;outline-color:SelectedItemText}}.Uy2rTDWqjs4vgNH0aeBm .components-base-control__field{align-items:center;display:flex}.Uy2rTDWqjs4vgNH0aeBm .components-base-control__field .components-base-control__label{flex:1;margin:0}.qLXIpwst_CtGTtmsg3mN{height:auto;min-height:auto;padding:4px}.UVmA1eywUsKVQzLMDooq{background:linear-gradient(-45deg,#0000 48%,#0003 0,#0003 52%,#0000 0);border:1px solid #0003;border-radius:50%;height:25px;width:25px}.eTonGpRD1VuB2tbLNegK .components-popover__content{max-width:365px;min-width:max-content;padding:15px}.eTonGpRD1VuB2tbLNegK .components-popover__content>div{padding:0}.eTonGpRD1VuB2tbLNegK .components-base-control__field{margin-bottom:0}.eTonGpRD1VuB2tbLNegK .react-colorful{width:100%!important}.eTonGpRD1VuB2tbLNegK .react-colorful .react-colorful__pointer{height:20px;width:20px}.eTonGpRD1VuB2tbLNegK .react-colorful .react-colorful__saturation{height:150px}.eTonGpRD1VuB2tbLNegK .components-circular-option-picker__option-wrapper{height:25px;width:25px}.nc5TMqH__oA5bcPGTm0D{display:flex;margin-top:15px}.nc5TMqH__oA5bcPGTm0D ._ubMuvqZvhc0awiEVNAL{flex:1}.nc5TMqH__oA5bcPGTm0D .f5wwshdAOOkfChALEoo2{height:auto}.nc5TMqH__oA5bcPGTm0D .components-base-control__field{margin-bottom:0}.OhNX_C7EMJcWKe5tqpKQ{margin-top:15px}.OhNX_C7EMJcWKe5tqpKQ .components-circular-option-picker{display:flex;flex-wrap:wrap}.OhNX_C7EMJcWKe5tqpKQ .components-circular-option-picker .components-circular-option-picker__swatches{display:flex;flex-wrap:wrap;gap:6px}.OhNX_C7EMJcWKe5tqpKQ .components-circular-option-picker .components-circular-option-picker__swatches .components-circular-option-picker__option-wrapper{margin:0}.mos6VIbAjooq2LMyKr88{display:flex;margin-top:15px}.mos6VIbAjooq2LMyKr88 .components-range-control{flex-grow:1;padding-left:5px}.UFXv660XisMp2k7oIkOA{margin:0}.cuno_GtO4bhcM59n00B2{--icon-size:1rem;display:grid;gap:.625rem;grid-template-columns:36px minmax(0,1fr);position:relative}.cuno_GtO4bhcM59n00B2 .components-button svg{display:block;height:var(--icon-size);width:var(--icon-size)}.fOOS92b6g0h9pAqn_2JI{border-radius:0;height:100%;position:relative;z-index:2}.rDe4XxEMyRee1hSKKXzn{display:flex;flex-wrap:wrap;gap:var(--gap,10px)}.Yg1nkwz9mFYMuk6zv1DW.b6i6J_7eUIspcsEZ3Qia>*+*{margin-inline-start:var(--gap,10px)}.dfG8sfdNVPzQp7pqgYJQ.b6i6J_7eUIspcsEZ3Qia>*+*{margin-block-start:var(--gap,10px)}.dfG8sfdNVPzQp7pqgYJQ.rDe4XxEMyRee1hSKKXzn{flex-direction:column}.l03h0IHl5WOI4XvelHt3{border-collapse:collapse;width:100%}.l03h0IHl5WOI4XvelHt3 td,.l03h0IHl5WOI4XvelHt3 th{box-sizing:border-box}.l03h0IHl5WOI4XvelHt3.pz9cxM_c8wpWcOh3bw5v tr:nth-child(2n){background-color:rgba(var(--wp-admin-theme-color--rgb),.04)} - diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/packages.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/packages.js deleted file mode 100644 index e69de29b..00000000 diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library-rtl.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library-rtl.css deleted file mode 100644 index fe19ff49..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library-rtl.css +++ /dev/null @@ -1 +0,0 @@ -.generatepress-site-library{box-sizing:border-box;margin:40px auto 0;max-width:1200px;padding:0 20px}.generatepress-site-library .generatepress-site-library-opened{bottom:0;display:flex;height:100vh;right:0;position:fixed;left:0;top:0;width:100%;z-index:99999}.generatepress-site-library .generatepress-site-library-info{background:#fff;border-right:1px solid #ddd;padding-bottom:50px;position:relative;width:300px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-header{border-bottom:1px solid #ddd;display:flex;justify-content:space-between;padding-right:20px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-header .has-author{margin-bottom:0}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-header .site-library-author{color:#777;display:block;font-size:11px;margin-bottom:1em;margin-top:3px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-header button{border-right:1px solid #ddd;height:auto}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-footer{border-top:1px solid #ddd;bottom:0;display:flex;right:0;position:absolute;left:0}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-footer button{flex-grow:1;font-size:20px;height:50px;justify-content:center}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-footer button:not(:last-child){border-left:1px solid #ddd}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-content{box-sizing:border-box;height:calc(100% - 53px);overflow-y:auto;padding:20px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-content>:first-child{margin-top:0}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-content h3{margin-top:30px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-content h3+.gpp-library-action-button{margin-top:10px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-content .gpp-debug-panel{background-color:#ffe0a3;border:1px solid #ffcd99}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-content .gpp-debug-panel .components-panel__body-title:hover{background-color:#0000}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-content .gpp-debug-panel code{font-size:11px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-plugins{font-size:12px;list-style-type:disc;margin-bottom:0;margin-right:1.5em}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-plugins li{margin-bottom:0}.generatepress-site-library .generatepress-site-library-iframe{background:#fff;display:flex;justify-content:center;width:calc(100% - 300px)}.generatepress-site-library .generatepress-site-library-iframe iframe{height:100%;width:100%}.generatepress-site-library .gpp-library-action-button{align-items:center;display:flex;margin-top:30px}.generatepress-site-library .gpp-library-action-button button .components-spinner{margin:0}.generatepress-site-library .gpp-library-action-button .gpp-library-action-message{padding-right:10px}.generatepress-site-library .generatepress-site-library-filter{align-items:center;background:#fff;border:1px solid #ddd;border-radius:4px;display:flex;justify-content:space-between;margin-bottom:40px;padding:20px}.generatepress-site-library .generatepress-site-library-filter>.components-base-control{margin-left:20px}.generatepress-site-library .generatepress-site-library-filter>.components-base-control .components-base-control__field{margin-bottom:0}.generatepress-site-library .generatepress-site-library-filter .components-select-control label{font-size:11px}.generatepress-site-library-list{display:flex;flex-wrap:wrap;list-style:none;margin-right:-30px;padding:0}.generatepress-site-library-list>.generatepress-site-library-list-item{box-sizing:border-box;flex:0 0 33.333%;padding-bottom:30px;padding-right:30px;width:33.333%}@media screen and (max-width:840px){.generatepress-site-library-list>.generatepress-site-library-list-item{flex:0 0 50%;width:50%}}@media screen and (max-width:450px){.generatepress-site-library-list>.generatepress-site-library-list-item{flex:0 0 100%;width:100%}}.generatepress-site-library-list>.generatepress-site-library-list-item>button{background-color:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 0 0 2px #0000;cursor:pointer;display:block;padding:5px;text-align:center;transition:border-color .2s,box-shadow .2s;width:100%}.generatepress-site-library-list>.generatepress-site-library-list-item>button:active,.generatepress-site-library-list>.generatepress-site-library-list-item>button:focus,.generatepress-site-library-list>.generatepress-site-library-list-item>button:hover{box-shadow:0 0 0 2px #216eb7}.generatepress-site-library-list>.generatepress-site-library-list-item>button .generatepress-site-library-list-item-image{display:block;position:relative}.generatepress-site-library-list>.generatepress-site-library-list-item>button .generatepress-site-library-list-item-image img{border-top-right-radius:4px;border-top-left-radius:4px;display:block;height:auto;width:100%}.generatepress-site-library-list>.generatepress-site-library-list-item .generatepress-site-library-list-item-title{font-size:20px;padding:20px 20px 10px}.generatepress-site-library-list>.generatepress-site-library-list-item .generatepress-site-library-list-item-title .generatepress-site-library-required-version{color:#000;display:block;font-size:12px;padding-top:5px}.generatepress-site-library-restore{background:#fff;border:1px solid #ddd;padding:40px}.generatepress-site-library-restore h2{font-size:25px;margin-top:0}.components-placeholder.gpp-library-placeholder{background:#0000;border:0;box-shadow:0 0 0}.components-placeholder.gpp-library-placeholder .components-placeholder__fieldset{justify-content:center}.generatepress-site-library-no-results{padding:50px;text-align:center}.generatepress-site-library-no-results button .components-spinner,.generatepress-site-library-refresh button .components-spinner{margin:0}.generatepress-site-library-refresh{text-align:center}.appearance_page_generatepress-library #wpbody-content .metabox-holder,.appearance_page_generatepress-library #wpcontent{padding:0}.site-library-header{background-color:#fff;box-shadow:0 1px 0 #c8d7e180,0 1px 2px #ddd;margin-bottom:40px;padding:20px}.site-library-header .site-library-container{box-sizing:border-box;display:flex;margin:0 auto;max-width:1200px;padding:0 20px}.site-library-header .library-links{margin-right:auto}.site-library-header .library-links a{display:inline-block;margin:0 10px}.site-library-header .library-title{color:#000;font-size:20px;font-weight:500}.generatepress-dashboard-tabs{box-sizing:border-box;margin:0 auto;max-width:1200px;padding:0 20px} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.asset.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.asset.php deleted file mode 100644 index f83a7026..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('react', 'wp-api-fetch', 'wp-components', 'wp-element', 'wp-html-entities', 'wp-i18n'), 'version' => 'a6719ff1717f5c4541f7'); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.css deleted file mode 100644 index 254a1596..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.css +++ /dev/null @@ -1 +0,0 @@ -.generatepress-site-library{box-sizing:border-box;margin:40px auto 0;max-width:1200px;padding:0 20px}.generatepress-site-library .generatepress-site-library-opened{bottom:0;display:flex;height:100vh;left:0;position:fixed;right:0;top:0;width:100%;z-index:99999}.generatepress-site-library .generatepress-site-library-info{background:#fff;border-left:1px solid #ddd;padding-bottom:50px;position:relative;width:300px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-header{border-bottom:1px solid #ddd;display:flex;justify-content:space-between;padding-left:20px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-header .has-author{margin-bottom:0}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-header .site-library-author{color:#777;display:block;font-size:11px;margin-bottom:1em;margin-top:3px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-header button{border-left:1px solid #ddd;height:auto}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-footer{border-top:1px solid #ddd;bottom:0;display:flex;left:0;position:absolute;right:0}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-footer button{flex-grow:1;font-size:20px;height:50px;justify-content:center}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-footer button:not(:last-child){border-right:1px solid #ddd}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-content{box-sizing:border-box;height:calc(100% - 53px);overflow-y:auto;padding:20px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-content>:first-child{margin-top:0}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-content h3{margin-top:30px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-content h3+.gpp-library-action-button{margin-top:10px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-content .gpp-debug-panel{background-color:#ffe0a3;border:1px solid #ffcd99}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-content .gpp-debug-panel .components-panel__body-title:hover{background-color:#0000}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-content .gpp-debug-panel code{font-size:11px}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-plugins{font-size:12px;list-style-type:disc;margin-bottom:0;margin-left:1.5em}.generatepress-site-library .generatepress-site-library-info .generatepress-site-library-plugins li{margin-bottom:0}.generatepress-site-library .generatepress-site-library-iframe{background:#fff;display:flex;justify-content:center;width:calc(100% - 300px)}.generatepress-site-library .generatepress-site-library-iframe iframe{height:100%;width:100%}.generatepress-site-library .gpp-library-action-button{align-items:center;display:flex;margin-top:30px}.generatepress-site-library .gpp-library-action-button button .components-spinner{margin:0}.generatepress-site-library .gpp-library-action-button .gpp-library-action-message{padding-left:10px}.generatepress-site-library .generatepress-site-library-filter{align-items:center;background:#fff;border:1px solid #ddd;border-radius:4px;display:flex;justify-content:space-between;margin-bottom:40px;padding:20px}.generatepress-site-library .generatepress-site-library-filter>.components-base-control{margin-right:20px}.generatepress-site-library .generatepress-site-library-filter>.components-base-control .components-base-control__field{margin-bottom:0}.generatepress-site-library .generatepress-site-library-filter .components-select-control label{font-size:11px}.generatepress-site-library-list{display:flex;flex-wrap:wrap;list-style:none;margin-left:-30px;padding:0}.generatepress-site-library-list>.generatepress-site-library-list-item{box-sizing:border-box;flex:0 0 33.333%;padding-bottom:30px;padding-left:30px;width:33.333%}@media screen and (max-width:840px){.generatepress-site-library-list>.generatepress-site-library-list-item{flex:0 0 50%;width:50%}}@media screen and (max-width:450px){.generatepress-site-library-list>.generatepress-site-library-list-item{flex:0 0 100%;width:100%}}.generatepress-site-library-list>.generatepress-site-library-list-item>button{background-color:#fff;border:1px solid #ddd;border-radius:4px;box-shadow:0 0 0 2px #0000;cursor:pointer;display:block;padding:5px;text-align:center;transition:border-color .2s,box-shadow .2s;width:100%}.generatepress-site-library-list>.generatepress-site-library-list-item>button:active,.generatepress-site-library-list>.generatepress-site-library-list-item>button:focus,.generatepress-site-library-list>.generatepress-site-library-list-item>button:hover{box-shadow:0 0 0 2px #216eb7}.generatepress-site-library-list>.generatepress-site-library-list-item>button .generatepress-site-library-list-item-image{display:block;position:relative}.generatepress-site-library-list>.generatepress-site-library-list-item>button .generatepress-site-library-list-item-image img{border-top-left-radius:4px;border-top-right-radius:4px;display:block;height:auto;width:100%}.generatepress-site-library-list>.generatepress-site-library-list-item .generatepress-site-library-list-item-title{font-size:20px;padding:20px 20px 10px}.generatepress-site-library-list>.generatepress-site-library-list-item .generatepress-site-library-list-item-title .generatepress-site-library-required-version{color:#000;display:block;font-size:12px;padding-top:5px}.generatepress-site-library-restore{background:#fff;border:1px solid #ddd;padding:40px}.generatepress-site-library-restore h2{font-size:25px;margin-top:0}.components-placeholder.gpp-library-placeholder{background:#0000;border:0;box-shadow:0 0 0}.components-placeholder.gpp-library-placeholder .components-placeholder__fieldset{justify-content:center}.generatepress-site-library-no-results{padding:50px;text-align:center}.generatepress-site-library-no-results button .components-spinner,.generatepress-site-library-refresh button .components-spinner{margin:0}.generatepress-site-library-refresh{text-align:center}.appearance_page_generatepress-library #wpbody-content .metabox-holder,.appearance_page_generatepress-library #wpcontent{padding:0}.site-library-header{background-color:#fff;box-shadow:0 1px 0 #c8d7e180,0 1px 2px #ddd;margin-bottom:40px;padding:20px}.site-library-header .site-library-container{box-sizing:border-box;display:flex;margin:0 auto;max-width:1200px;padding:0 20px}.site-library-header .library-links{margin-left:auto}.site-library-header .library-links a{display:inline-block;margin:0 10px}.site-library-header .library-title{color:#000;font-size:20px;font-weight:500}.generatepress-dashboard-tabs{box-sizing:border-box;margin:0 auto;max-width:1200px;padding:0 20px} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.js deleted file mode 100644 index 66525a97..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/site-library.js +++ /dev/null @@ -1,6 +0,0 @@ -(()=>{var e={703:(e,t,r)=>{"use strict";var n=r(414);function a(){}function s(){}s.resetWarningCache=a,e.exports=function(){function e(e,t,r,a,s,i){if(i!==n){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:s,resetWarningCache:a};return r.PropTypes=r,r}},697:(e,t,r)=>{e.exports=r(703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},216:(e,t,r)=>{"use strict";t.be=void 0;var n=function(){function e(e,t){for(var r=0;r=0&&_-E[0]<=d&&_+b+E[1]>=0}(e,r):function(e){var t=e.ref;if(!(t.offsetWidth||t.offsetHeight||t.getClientRects().length))return!1;var r=void 0,n=void 0;try{var a=t.getBoundingClientRect();r=a.top,n=a.height}catch(e){r=0,n=0}var s=window.innerHeight||document.documentElement.clientHeight,i=Array.isArray(e.props.offset)?e.props.offset:[e.props.offset,e.props.offset];return r-i[0]<=s&&r+n+i[1]>=0}(e);n?e.visible||(e.props.once&&g.push(e),e.visible=!0,e.forceUpdate()):e.props.once&&e.visible||(e.visible=!1,e.props.unmountIfInvisible&&e.forceUpdate())}},y=function(){for(var e=0;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,r){var n=void 0,a=void 0,s=void 0,i=void 0,l=void 0,o=function o(){var p=+new Date-i;p=0?n=setTimeout(o,t-p):(n=null,r||(l=e.apply(s,a),n||(s=null,a=null)))};return function(){s=this,a=arguments,i=+new Date;var p=r&&!n;return n||(n=setTimeout(o,t)),p&&(l=e.apply(s,a),s=null,a=null),l}}},81:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.on=function(e,t,r,n){n=n||!1,e.addEventListener?e.addEventListener(t,r,n):e.attachEvent&&e.attachEvent("on"+t,(function(t){r.call(e,t||window.event)}))},t.off=function(e,t,r,n){n=n||!1,e.removeEventListener?e.removeEventListener(t,r,n):e.detachEvent&&e.detachEvent("on"+t,r)}},315:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if(!(e instanceof HTMLElement))return document.documentElement;for(var t="absolute"===e.style.position,r=/(scroll|auto)/,n=e;n;){if(!n.parentNode)return e.ownerDocument||document.documentElement;var a=window.getComputedStyle(n),s=a.position,i=a.overflow,l=a["overflow-x"],o=a["overflow-y"];if("static"===s&&t)n=n.parentNode;else{if(r.test(i)&&r.test(l)&&r.test(o))return n;n=n.parentNode}}return e.ownerDocument||e.documentElement||document.documentElement}},821:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,r){var n,a;return t||(t=250),function(){var s=r||this,i=+new Date,l=arguments;n&&i{"use strict";e.exports=window.React}},t={};function r(n){var a=t[n];if(void 0!==a)return a.exports;var s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=r(196);const t=window.wp.i18n,n=window.wp.element,a=window.wp.components,s=window.wp.htmlEntities,i=window.wp.apiFetch;var l,o,p=r.n(i),c=r(216);function m(e,t,r){const n=r&&r.lexicographical,a=r&&r.zeroExtend;let s=e.split("."),i=t.split(".");function l(e){return(n?/^\d+[A-Za-z]*$/:/^\d+$/).test(e)}if(!s.every(l)||!i.every(l))return NaN;if(a){for(;s.lengthi[e]?1:-1}return s.length!==i.length?-1:0}function u({allSites:r,value:n,onChange:s}){if(!r)return null;const i=[""];return Object.keys(r).forEach((e=>{r[e].category.forEach((e=>{i.includes(e)||i.push(e)}))})),i.length<2?null:(0,e.createElement)("div",null,i.map((r=>(0,e.createElement)(a.Button,{key:r,variant:r===n?"primary":"",onClick:()=>s(r)},""===r?(0,t.__)("All","gp-premium"):r))))}function d({onChange:r,value:n}){return(0,e.createElement)("div",null,(0,e.createElement)("input",{type:"search",onChange:e=>r(e?.target?.value),value:n,placeholder:(0,t.__)("Search site name or author","gp-premium")}))}function g({url:t,previewWidth:r}){const a=(0,n.useRef)(null);return(0,n.useEffect)((()=>{const e=a.current.attachShadow({mode:"open"}),r=document.createElement("iframe");return r.src=t,r.style.width="100%",r.style.height="100%",e.appendChild(r),()=>{e.removeChild(r)}}),[t]),(0,e.createElement)("div",{style:{width:r},ref:a})}l=(0,e.createElement)((function(){const[r,i]=(0,n.useState)(!1),[l,o]=(0,n.useState)({}),[h,f]=(0,n.useState)(!1),[b,v]=(0,n.useState)(!1),[y,_]=(0,n.useState)({}),[E,w]=(0,n.useState)({}),[C,k]=(0,n.useState)({}),[S,O]=(0,n.useState)(!1),[T,x]=(0,n.useState)(!0),[N,L]=(0,n.useState)(!0),[P,R]=(0,n.useState)(!1),[j,B]=(0,n.useState)(!1),[I,D]=(0,n.useState)([]),[A,M]=(0,n.useState)([]),[W,F]=(0,n.useState)([]),[U,z]=(0,n.useState)(!1),[H,V]=(0,n.useState)(gppSiteLibrary.hasBackup),[G,q]=(0,n.useState)(""),[Z,$]=(0,n.useState)(""),[J,Y]=(0,n.useState)("desktop");function K(e){e.classList.add("gpp-library-action-message--show"),e.textContent=(0,t.__)("Activating plugins","gp-premium"),p()({path:"/generatepress-site-library/v1/activate_plugins",method:"POST",data:{siteData:y,siteSlug:y.name.replace(/\s+/g,"_").toLowerCase(),importOptions:T,importContent:N}}).then((t=>{e.textContent=t.response,t.success&&t.response||e.classList.add("gblocks-action-message--error"),setTimeout((()=>{Q(e)}),2e3)}))}function Q(e){e.classList.add("gpp-library-action-message--show"),e.textContent=(0,t.__)("Importing content","gp-premium"),p()({path:"/generatepress-site-library/v1/import_content",method:"POST",data:{siteData:y,siteSlug:y.name.replace(/\s+/g,"_").toLowerCase(),importOptions:T,importContent:N}}).then((r=>{e.textContent=r.response,r.success&&r.response||e.classList.add("gblocks-action-message--error"),setTimeout((()=>{!function(e){e.classList.add("gpp-library-action-message--show"),e.textContent=(0,t.__)("Importing site options","gp-premium"),p()({path:"/generatepress-site-library/v1/import_site_options",method:"POST",data:{siteData:y,siteSlug:y.name.replace(/\s+/g,"_").toLowerCase(),importOptions:T,importContent:N}}).then((r=>{e.textContent=r.response,r.success&&r.response||e.classList.add("gblocks-action-message--error"),setTimeout((()=>{S?function(e){e.classList.add("gpp-library-action-message--show"),e.textContent=(0,t.__)("Importing widgets","gp-premium"),p()({path:"/generatepress-site-library/v1/import_widgets",method:"POST",data:{siteData:y,siteSlug:y.name.replace(/\s+/g,"_").toLowerCase(),importOptions:T,importContent:N}}).then((r=>{e.textContent=r.response,r.success&&r.response||e.classList.add("gblocks-action-message--error"),setTimeout((()=>{e.textContent=(0,t.__)("Import Complete","gp-premium"),f(!1),B(!0),V(!0)}),2e3)}))}(e):(e.textContent=(0,t.__)("Import Complete","gp-premium"),f(!1),B(!0),V(!0))}),2e3)}))}(e)}),2e3)}))}if((0,n.useEffect)((()=>{p()({path:"/generatepress-site-library/v1/get_sites",method:"POST",data:{forceRefresh:!1}}).then((e=>{i(!0),o(e.response)}))}),[]),!r)return(0,e.createElement)(a.Placeholder,{className:"gpp-library-placeholder"},(0,e.createElement)(a.Spinner,null));if(!l||"no results"===l)return(0,e.createElement)("div",{className:"generatepress-site-library-no-results"},(0,e.createElement)("p",null,(0,t.__)("No sites were found.","gp-premium")," ",(0,e.createElement)("a",{href:"https://docs.generatepress.com/article/site-library-unavailable/",target:"_blank",rel:"noreferrer noopener"},(0,t.__)("Why?","gp-premium"))),(0,e.createElement)(a.Button,{variant:"primary",onClick:()=>{z(!0),p()({path:"/generatepress-site-library/v1/get_sites",method:"POST",data:{forceRefresh:!0}}).then((e=>{i(!0),o(e.response),z(!1)}))}},U&&(0,e.createElement)(a.Spinner,null),!U&&(0,t.__)("Try again","gp-premium")));let X="100%";"tablet"===J&&(X="768px"),"mobile"===J&&(X="480px");const ee=y.author_name&&y.author_url&&"GeneratePress"!==y.author_name;return(0,e.createElement)(n.Fragment,null,(0,e.createElement)("div",{className:"generatepress-site-library"},!!H&&(0,e.createElement)("div",{className:"generatepress-site-library-restore"},(0,e.createElement)("h2",null,(0,t.__)("Existing Site Import Detected","gp-premium")),(0,e.createElement)("p",null,(0,t.__)("It is highly recommended that you remove the last site you imported before importing a new one.","gp-premium")),(0,e.createElement)("p",null,(0,t.__)("This process restores your previous options, widgets and active plugins. It will also remove your imported content and CSS.","gp-premium")),(0,e.createElement)("div",{className:"gpp-library-action-button"},(0,e.createElement)(a.Button,{variant:"primary",onClick:e=>{window.confirm((0,t.__)("This process makes changes to your website. If it contains important data, we suggest backing it up before proceeding.","gp-premium"))&&(f(!0),function(e){const r=e.target.nextElementSibling;r.classList.add("gpp-library-action-message--show"),r.textContent=(0,t.__)("Restoring theme options","gp-premium"),p()({path:"/generatepress-site-library/v1/restore_theme_options",method:"POST"}).then((e=>{r.textContent=e.response,e.success&&e.response||r.classList.add("gblocks-action-message--error"),setTimeout((()=>{r.textContent=(0,t.__)("Restoring content","gp-premium"),p()({path:"/generatepress-site-library/v1/restore_content",method:"POST"}).then((e=>{r.textContent=e.response,e.success&&e.response||r.classList.add("gblocks-action-message--error"),f(!1),V(!1)}))}),2e3)}))}(e))}},h&&(0,e.createElement)(a.Spinner,null),!h&&(0,t.__)("Remove imported site","gp-premium")),(0,e.createElement)("span",{className:"gpp-library-action-message"}),!h&&(0,e.createElement)(a.Button,{onClick:()=>{V(!1)}},(0,t.__)("No thanks","gp-premium")))),!b&&!H&&(0,e.createElement)(n.Fragment,null,(0,e.createElement)("div",{className:"generatepress-site-library-filter"},(0,e.createElement)(u,{allSites:l,value:G,onChange:e=>{q(e),setTimeout((()=>{(0,c.be)()}),100)}}),(0,e.createElement)(d,{value:Z,onChange:e=>{$(e),q(""),setTimeout((()=>{(0,c.be)()}),100)}})),(0,e.createElement)("ul",{className:"generatepress-site-library-list"},Object.keys(l).map((r=>{if(""!==G&&!l[r].category.includes(G))return null;const n=l[r].name,a=(0,s.decodeEntities)(n);if(""!==Z&&!a.toLowerCase().includes(Z.toLowerCase())&&!l[r].author_name.toLowerCase().includes(Z.toLowerCase()))return null;const i=l[r].directory+"/screenshot.png",o=gppSiteLibrary.gppVersion.split("-")[0],p=l[r].min_version.split("-")[0],u=gppSiteLibrary.gpVersion.split("-")[0],d=gppSiteLibrary.generateblocksVersion.split("-")[0],g=l[r].min_theme_version?l[r].min_theme_version.split("-")[0]:u,h=l[r].min_generateblocks_version?l[r].min_generateblocks_version.split("-")[0]:d,f=l[r].image_width,b=l[r].image_height,y=m(p,o)>0||m(g,u)>0||d&&m(h,d)>0;return(0,e.createElement)("li",{className:"generatepress-site-library-list-item",key:n+":"+r},(0,e.createElement)("button",{disabled:y,onClick:()=>{v(!0),_(l[r]),w(JSON.parse(l[r].plugins))}},(0,e.createElement)("div",{className:"generatepress-site-library-list-item-image"},(0,e.createElement)(c.ZP,{offset:100,once:!0},(0,e.createElement)("img",{src:i,alt:n,width:f,height:b}))),(0,e.createElement)("div",{className:"generatepress-site-library-list-item-title"},a,!!y&&m(p,o)>0&&(0,e.createElement)("span",{className:"generatepress-site-library-required-version"},(0,t.sprintf)(/* translators: Version number */ -(0,t.__)("Requires GP Premium %s.","gp-premium"),p)),!!y&&m(g,u)>0&&(0,e.createElement)("span",{className:"generatepress-site-library-required-version"},(0,t.sprintf)(/* translators: Version number */ -(0,t.__)("Requires GeneratePress %s.","gp-premium"),g)),!!y&&d&&m(h,d)>0&&(0,e.createElement)("span",{className:"generatepress-site-library-required-version"},(0,t.sprintf)(/* translators: Version number */ -(0,t.__)("Requires GenerateBlocks %s.","gp-premium"),h)))))}))),(0,e.createElement)("div",{className:"generatepress-site-library-refresh"},(0,e.createElement)(a.Button,{variant:"primary",onClick:()=>{z(!0),p()({path:"/generatepress-site-library/v1/get_sites",method:"POST",data:{forceRefresh:!0}}).then((e=>{i(!0),o(e.response),z(!1)}))}},U&&(0,e.createElement)(a.Spinner,null),!U&&(0,t.__)("Refresh sites","gp-premium")))),b&&(0,e.createElement)("div",{className:"generatepress-site-library-opened"},(0,e.createElement)("div",{className:"generatepress-site-library-iframe"},(0,e.createElement)(g,{url:y.preview_url,previewWidth:X})),(0,e.createElement)("div",{className:"generatepress-site-library-info"},(0,e.createElement)("div",{className:"generatepress-site-library-header"},(0,e.createElement)("div",{className:"generatepress-site-library-header__title"},(0,e.createElement)("h2",{className:ee?"has-author":""},(0,s.decodeEntities)(y.name)),ee&&(0,e.createElement)("span",{className:"site-library-author"},/* translators: Site library site built by "author name" */ -(0,t.__)("Built by","gp-premium")+" ",(0,e.createElement)("a",{href:y.author_url,target:"_blank",rel:"noreferrer noopener"},y.author_name))),(0,e.createElement)(a.Button,{onClick:()=>{f(!1),v(!1),_({}),w({}),k({}),O(!1),x(!0),L(!0),R(!1),B(!1),D([]),M([]),F([])}},(0,e.createElement)("svg",{width:"35",height:"35",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",role:"img","aria-hidden":"true",focusable:"false"},(0,e.createElement)("path",{d:"M13 11.9l3.3-3.4-1.1-1-3.2 3.3-3.2-3.3-1.1 1 3.3 3.4-3.5 3.6 1 1L12 13l3.5 3.5 1-1z"})))),(0,e.createElement)("div",{className:"generatepress-site-library-content"},!!y.description&&(0,e.createElement)("p",null,(0,s.decodeEntities)(y.description)),!j&&(0,e.createElement)(n.Fragment,null,0===Object.keys(C).length&&(0,e.createElement)(n.Fragment,null,gppSiteLibrary.isDebugEnabled&&(0,e.createElement)(a.PanelBody,{className:"gpp-debug-panel",title:(0,t.__)("Debug Mode Enabled","gp-premium"),initialOpen:!1},(0,e.createElement)("p",null,(0,t.__)("WordPress debug mode is currently enabled. With this, any errors from third-party plugins might affect the import process.","gp-premium")),(0,e.createElement)("p",null,(0,t.__)("To disable it, find WP_DEBUG in your wp-config.php file and set it to false like the below.","gp-premium")),(0,e.createElement)("code",null,"define( 'WP_DEBUG', false );"),(0,e.createElement)("p",null,(0,e.createElement)("a",{href:"https://docs.generatepress.com/article/debug-mode-enabled/",target:"_blank",rel:"noreferrer noopener"},(0,t.__)("Learn more here","gp-premium")))),Object.keys(E).length>0&&(0,e.createElement)(n.Fragment,null,(0,e.createElement)("h3",null,(0,t.__)("Plugins","gp-premium")),(0,e.createElement)("p",null,(0,t.__)("This site uses the following plugins.","gp-premium")),(0,e.createElement)("ul",{className:"generatepress-site-library-plugins"},Object.entries(E).map((([t])=>(0,e.createElement)("li",{key:t},t))))),(0,e.createElement)("div",{className:"gpp-library-action-button"},(0,e.createElement)(a.Button,{variant:"primary",disabled:h,onClick:e=>{f(!0);const r=e.target.nextElementSibling;r.textContent=(0,t.__)("Gathering information","gp-premium"),p()({path:"/generatepress-site-library/v1/get_site_data",method:"POST",data:{siteData:y}}).then((e=>{const t=[],n=[],a=[];Object.entries(e.response.plugin_data).forEach((([r])=>{const s=e.response.plugin_data[r];s.repo&&!s.installed?t.push(s.name):s.installed||s.active?n.push(s.name):a.push(s.name)})),f(!1),k(e.response),w(e.response.plugins),O(e.response.widgets),D(t),M(n),F(a),r.classList.add("gpp-library-action-message--show"),r.textContent=e.response,e.success&&e.response?setTimeout((function(){r.classList.remove("gpp-library-action-message--show")}),3e3):r.classList.add("gpp-library-action-message--error")}))}},h&&(0,e.createElement)(a.Spinner,null),!h&&(0,t.__)("Get Started","gp-premium")),(0,e.createElement)("span",{className:"gpp-library-action-message"}))),Object.keys(C).length>0&&Object.keys(E).length>0&&(0,e.createElement)(n.Fragment,null,(0,e.createElement)("h3",null,(0,t.__)("Plugins","gp-premium")),I.length>0&&(0,e.createElement)(n.Fragment,null,(0,e.createElement)("p",null,(0,t.__)("These plugins can be installed automatically.","gp-premium")),(0,e.createElement)("ul",{className:"generatepress-site-library-plugins"},I.map((t=>(0,e.createElement)("li",{key:t},t))))),A.length>0&&(0,e.createElement)(n.Fragment,null,(0,e.createElement)("p",null,(0,t.__)("These plugins are already installed.","gp-premium")),(0,e.createElement)("ul",{className:"generatepress-site-library-plugins"},A.map((t=>(0,e.createElement)("li",{key:t},t))))),W.length>0&&(0,e.createElement)(n.Fragment,null,(0,e.createElement)("p",{style:{fontWeight:"bold"}},(0,t.__)("These plugins need to be installed manually.","gp-premium")),(0,e.createElement)("ul",{className:"generatepress-site-library-plugins"},W.map((t=>"GenerateBlocks Pro"===t?(0,e.createElement)("li",{key:t},(0,e.createElement)(a.ExternalLink,{href:"https://generatepress.com/blocks/#pricing"},t)):(0,e.createElement)("li",{key:t},t)))))),Object.keys(C).length>0&&(0,e.createElement)(n.Fragment,null,(0,e.createElement)("h3",null,(0,t.__)("Import","gp-premium")),!h&&0===W.length&&(0,e.createElement)(n.Fragment,null,(0,e.createElement)("p",null,(0,t.__)("This process makes changes to your website. If it contains important data, we suggest backing it up before proceeding.","gp-premium")),(0,e.createElement)(a.ToggleControl,{checked:!!P,label:(0,t.__)("I understand","gp-premium"),onChange:e=>{R(e)}})),(0,e.createElement)("div",{className:"gpp-library-action-button"},(0,e.createElement)(a.Button,{variant:"primary",disabled:!P||j||h||W.length>0,onClick:e=>{f(!0),function(e){const r=e.target.nextElementSibling;r.classList.add("gpp-library-action-message--show"),r.textContent=(0,t.__)("Importing theme options","gp-premium"),p()({path:"/generatepress-site-library/v1/import_theme_options",method:"POST",data:{siteData:y,siteSlug:y.name.replace(/\s+/g,"_").toLowerCase(),importOptions:T,importContent:N}}).then((e=>{r.textContent=e.response,e.success&&e.response||r.classList.add("gblocks-action-message--error"),setTimeout((()=>{N?Object.keys(C.plugin_data).length>0?function(e){void 0!==e.target&&(e=e.target.nextElementSibling),e.classList.add("gpp-library-action-message--show"),e.textContent=(0,t.__)("Installing plugins","gp-premium"),Object.entries(C.plugin_data).forEach((([r,n])=>{let a=n.slug.split("/")[0],s=n.name;n.installed?(delete C.plugin_data[r],0===Object.keys(C.plugin_data).length&&K(e)):("bb-plugin"===a&&(a="beaver-builder-lite-version",s="Beaver Builder Lite"),e.textContent=(0,t.sprintf)(/* translators: Installing "Plugin Name" */ -(0,t.__)("Installing %s","gp-premium"),s),wp.updates.installPlugin({slug:a,success:t=>{console.log(t),delete C.plugin_data[r],0===Object.keys(C.plugin_data).length&&K(e)},error:t=>{console.log(t),delete C.plugin_data[r],0===Object.keys(C.plugin_data).length&&K(e)}}))}))}(r):Q(r):(r.textContent=(0,t.__)("Import Complete","gp-premium"),f(!1),B(!0),V(!0))}),2e3)}))}(e)}},h&&(0,e.createElement)(a.Spinner,null),!h&&(0,t.__)("Begin Import","gp-premium")),(0,e.createElement)("span",{className:"gpp-library-action-message"})))),!!j&&(0,e.createElement)(n.Fragment,null,(0,e.createElement)("h3",null,(0,t.__)("Import Complete","gp-premium")),(0,e.createElement)("p",null,(0,t.__)("Check out your new site and start making it yours!","gp-premium")),(0,e.createElement)("p",null,(0,t.__)("Note: We do our best to ensure all imported images are licensed for open use. However, image licenses can change, so we strongly advise that you replace all imported images with your own.","gp-premium")),(0,e.createElement)("a",{className:"components-button is-primary",href:gppSiteLibrary.homeUrl},(0,t.__)("View Site","gp-premium")),y.uploads_url&&Object.values(E).includes("elementor/elementor.php")&&(0,e.createElement)(n.Fragment,null,(0,e.createElement)("h3",null,(0,t.__)("Additional Cleanup","gp-premium")),(0,e.createElement)("p",null,(0,t.__)("This site is using Elementor which means you will want to replace the imported image URLs.","gp-premium")),(0,e.createElement)("p",null,(0,t.__)("Take note of the old and new URLs below, then head over to the Elementor Tools area to replace them.","gp-premium")),(0,e.createElement)(a.TextControl,{label:(0,t.__)("Old URL","gp-premium"),readOnly:!0,value:y.uploads_url}),(0,e.createElement)(a.TextControl,{label:(0,t.__)("New URL","gp-premium"),readOnly:!0,value:gppSiteLibrary.uploadsUrl}),(0,e.createElement)("a",{href:gppSiteLibrary.elementorReplaceUrls,className:"components-button is-primary",target:"_blank",rel:"noopener noreferrer"},(0,t.__)("Elementor Tools","gp-premium")))),(0,e.createElement)("div",{className:"generatepress-site-library-footer"},(0,e.createElement)(a.Tooltip,{text:(0,t.__)("Preview desktop","gp-premium")},(0,e.createElement)(a.Button,{variant:"desktop"===J?"primary":"",onClick:()=>{Y("desktop")}},(0,e.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",width:"1em",height:"1em",viewBox:"0 0 24 24"},(0,e.createElement)("path",{d:"M21 14H3V4h18m0-2H3c-1.11 0-2 .89-2 2v12a2 2 0 002 2h7l-2 3v1h8v-1l-2-3h7a2 2 0 002-2V4a2 2 0 00-2-2z",fill:"currentColor"})))),(0,e.createElement)(a.Tooltip,{text:(0,t.__)("Preview tablet","gp-premium")},(0,e.createElement)(a.Button,{variant:"tablet"===J?"primary":"",onClick:()=>{Y("tablet")}},(0,e.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",width:"1em",height:"1em",viewBox:"0 0 24 24"},(0,e.createElement)("path",{d:"M19 19H4V3h15m-7.5 20a1.5 1.5 0 01-1.5-1.5 1.5 1.5 0 011.5-1.5 1.5 1.5 0 011.5 1.5 1.5 1.5 0 01-1.5 1.5m7-23h-14A2.5 2.5 0 002 2.5v19A2.5 2.5 0 004.5 24h14a2.5 2.5 0 002.5-2.5v-19A2.5 2.5 0 0018.5 0z",fill:"currentColor"})))),(0,e.createElement)(a.Tooltip,{text:(0,t.__)("Preview mobile","gp-premium")},(0,e.createElement)(a.Button,{variant:"mobile"===J?"primary":"",onClick:()=>{Y("mobile")}},(0,e.createElement)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",width:"1em",height:"1em",viewBox:"0 0 24 24"},(0,e.createElement)("path",{d:"M17 19H7V5h10m0-4H7c-1.11 0-2 .89-2 2v18a2 2 0 002 2h10a2 2 0 002-2V3a2 2 0 00-2-2z",fill:"currentColor"}))))))))))}),null),o=document.getElementById("gpp-site-library"),void 0!==n.createRoot?(0,n.createRoot)(o).render(l):(0,n.render)(l,o)})()})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/style-dashboard-rtl.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/style-dashboard-rtl.css deleted file mode 100644 index d1224c75..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/style-dashboard-rtl.css +++ /dev/null @@ -1,4 +0,0 @@ -.generatepress-module-action{display:inline-block;font-size:12px;font-weight:400;line-height:1;margin-right:10px;text-decoration:none}.generatepress-dashboard__section-item-settings{align-items:center;display:flex}.generatepress-dashboard__section-item-settings button{font-size:11px;height:30px;justify-content:center!important}.generatepress-dashboard__section-item-settings button .components-spinner{margin-top:0}.generatepress-dashboard__section-item-settings button svg{height:20px;margin:0!important;width:20px}.generatepress-dashboard__section-item-settings button:not(:last-child){margin-left:5px} -.generatepress-license-key-area .generatepress-dashboard__section-item-message{background:#fff}.generatepress-license-key-area .generatepress-dashboard__section-item{flex-wrap:wrap;justify-content:flex-start}.generatepress-license-key-area .generatepress-dashboard__section-license-key{display:flex;flex:1}.generatepress-license-key-area .generatepress-dashboard__section-license-key .components-base-control{flex:1}.generatepress-license-key-area .generatepress-dashboard__section-license-key button{height:31px;margin-right:8px}.generatepress-license-key-area .generatepress-dashboard__section-beta-tester{align-items:center;display:flex;flex-basis:100%;margin-top:30px}.generatepress-license-key-area .generatepress-dashboard__section-license-notice{flex-basis:100%;margin:0 0 20px}.generatepress-license-key-area .components-base-control__field,.generatepress-license-key-area .components-base-control__help{margin-bottom:0} -.generatepress-dashboard__section-item-action input[type=file]{border:1px solid #ddd;padding:5px}.generatepress-dashboard__section-item-export-popover .components-popover__content{padding:20px} -.generatepress-dashboard__section-item-modules{margin-top:20px} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/style-dashboard.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/style-dashboard.css deleted file mode 100644 index f226f072..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/dist/style-dashboard.css +++ /dev/null @@ -1,4 +0,0 @@ -.generatepress-module-action{display:inline-block;font-size:12px;font-weight:400;line-height:1;margin-left:10px;text-decoration:none}.generatepress-dashboard__section-item-settings{align-items:center;display:flex}.generatepress-dashboard__section-item-settings button{font-size:11px;height:30px;justify-content:center!important}.generatepress-dashboard__section-item-settings button .components-spinner{margin-top:0}.generatepress-dashboard__section-item-settings button svg{height:20px;margin:0!important;width:20px}.generatepress-dashboard__section-item-settings button:not(:last-child){margin-right:5px} -.generatepress-license-key-area .generatepress-dashboard__section-item-message{background:#fff}.generatepress-license-key-area .generatepress-dashboard__section-item{flex-wrap:wrap;justify-content:flex-start}.generatepress-license-key-area .generatepress-dashboard__section-license-key{display:flex;flex:1}.generatepress-license-key-area .generatepress-dashboard__section-license-key .components-base-control{flex:1}.generatepress-license-key-area .generatepress-dashboard__section-license-key button{height:31px;margin-left:8px}.generatepress-license-key-area .generatepress-dashboard__section-beta-tester{align-items:center;display:flex;flex-basis:100%;margin-top:30px}.generatepress-license-key-area .generatepress-dashboard__section-license-notice{flex-basis:100%;margin:0 0 20px}.generatepress-license-key-area .components-base-control__field,.generatepress-license-key-area .components-base-control__help{margin-bottom:0} -.generatepress-dashboard__section-item-action input[type=file]{border:1px solid #ddd;padding:5px}.generatepress-dashboard__section-item-export-popover .components-popover__content{padding:20px} -.generatepress-dashboard__section-item-modules{margin-top:20px} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/author-image-placeholder.png b/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/author-image-placeholder.png deleted file mode 100644 index f8bdda75e9c137e170da559fa6526a8bfb11fbe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138 zcmeAS@N?(olHy`uVBq!ia0y~yVEh8YjLblhj}pEoffRFqPl)UP|NoaCkv;+BGL{7S z1xxL1QIr94Og&v3Ln>~)J!r@X(}tF zUn9H$9t0G`=LZEF1q}uG#Ky$IK*zwrB*n+Y#V4g8AtIrmr>3T7XJr=`*L(55=fC>@ zr{Jj_go*G{3w|E%1qJ9O<_kE?7f+oa;%77AUH}j1e?2c=!o7lj^BUo47KHHMuOF8| zpzLfg1OkkO7PUL)Gw9zU04czu zs3AdcPnidOmv&NKScCtGp(6@|0XP9is{}y+pU?*Ya4HK|CO$Io3rSrV3PYY<4+ICI zFeDo=^BFb(RIoZc4j3x>r4|3Ia))JNrtNY`3~KgI66CIigoFbDO#6qgI{dR*KB<0CuTBRhsYEjM*n9{ zjz5qb&pvxz0`Tc`l!V`mEb~8sl#)<+uTESQ4d&Tqm-u}AN-w|sn{)yXj|8j&OnZ(7 zH6Y?%hQrgXc#GKyDRJthEPB;zN>)UqHrvl6*-buyB>zo%6AFM>0_c}`PC;A|U>cC+ z=}Q>LK7QEKYh%r4tra9%=KE9CzI^PXHPK`gGUmnN}TkTP;r@ zJ`K;5{jti*v|KwbR}xNVr(5h@p_2cm0&WLj1Tg&1Se$H?FF8@jYrMyEmETG=1@Vq= z@xNB0z%uxK6NgBeZdvvol*V1ZJkNE{3HnDP&wxHBb520e%Wxh+o;3wcCZ=J19j+0+ z#^6KS=7H@q=Y6~B$(9r!zkl|=SdIS|Y|r}xk_(^+BnS@VdMRq8XS%N~%I{6u-YHKD z3U`a3z}$@&`$eJnl0G5d6UgbV?0MlAt3^OkJyX~7ClKafa5hxrS}FPB%xd5b=OUB$ zEz8+0ue%q|rL)5=p`9d;!GZRL(*GOL(=nbRJ+z4P-hE#QpC1%VvH@clW9=Qzp=-fFUj@TVMfqaAk6{M`sc?p>C zAIH&ufePopI7NSxr0JHGTd3N*z0gg<`Nz4L6u zNzp&{{Z9q(Ef`=evcQ`xO;SD%r>#oGwk|J&NH53fsmi!!QnW*Z3>_aqGO?^e+lueJ zF2f6am#z=k7w-T?{PsXa0pbk_a0w6# Vi_-0+N(Q@nH)b-rakZ7V~_*_$Qi)R0L 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 GPygAO2B7_SgwXF$egBxc>kDfB6yV6F@Fw zNswQ#)ZP|F86c2$d8|N1@yMr?-c YX0ZRwz^HwwM+hYA>FVdQ&MBb@02TBl<^TWy diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/metabox.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/metabox.css deleted file mode 100644 index d508c547..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/metabox.css +++ /dev/null @@ -1,400 +0,0 @@ -#generate_premium_elements { - background-color: transparent; - border: 0; - box-shadow: 0 0 0; -} - -#generate_premium_elements .inside { - padding: 0; - margin: 0; -} - -#generate_premium_elements .CodeMirror { - position: relative; - padding: 0; - background: white; - box-shadow: 0 0 0 1px rgba(200, 215, 225, 0.5), 0 1px 2px #e9eff3; - width: 100%; - overflow: hidden; -} - -tr.generate-element-row td { - border-bottom: 1px solid #f0f0f0; - zoom: 1; -} - -td.generate-element-row-heading { - background: #F9F9F9; - border-right: 1px solid #E1E1E1; - padding: 13px 15px; - width: 24%; -} - -td.generate-element-row-heading label { - display: inline-block; - font-size: 13px; - line-height: 1.4em; - font-weight: bold; - padding: 0; - margin: 0 0 3px; - color: #333; -} - -td.generate-element-row-content { - padding: 13px 15px; - position: relative; - width: 75%; -} - -.metabox-holder #generate_premium_elements .handlediv, -.metabox-holder #generate_premium_elements .hndle, -.metabox-holder #generate_premium_elements .postbox-header { - display: none; -} - -#generate_premium_elements .inside { - padding: 0; -} - -#generate_premium_elements select, -#generate_premium_elements input[type="number"], -#generate_premium_elements input[type="text"] { - width: 100%; -} - -#generate_premium_elements .condition select.condition-object-select + .select2 { - display: none; -} - -#generate_premium_elements .condition.generate-elements-rule-objects-visible select.condition-select + .select2 { - margin-right: 5px; - width: 100%; -} - -#generate_premium_elements .condition.generate-elements-rule-objects-visible select.condition-object-select + .select2 { - display: inline-block; - margin-left: 5px; - width: 100%; -} - -#generate_premium_elements .condition { - display: flex; - margin-bottom: 10px; -} - -#generate_premium_elements .condition .select2 { - flex-grow: 1; -} - -button.remove-condition { - background: transparent; - border: 0; - line-height: 1; - width: 30px; - font-size: 20px; - cursor: pointer; - opacity: 0.5; - position: relative; - bottom: -3px; -} - -button.add-condition { - margin-top: 10px !important; -} - -button.remove-condition:before { - content: "\f153"; - font-family: dashicons; -} - -table.generate-elements-settings { - position: relative; - padding: 0; - background: white; - box-shadow: 0 0 0 1px rgba(200, 215, 225, 0.5), 0 1px 2px #e9eff3; - width: 100%; - overflow: hidden; -} - -.generate-element-row-loading { - background-color: rgba(255,255,255,0.9); - background-image: url('spinner.gif'); - background-position: center center; - background-repeat: no-repeat; - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - z-index: 1; -} - -ul.element-metabox-tabs { - position: relative; - padding: 0; - margin: 0 0 20px; - background: white; - box-shadow: 0 0 0 1px rgba(200, 215, 225, 0.5), 0 1px 2px #e9eff3; - display: flex; - width: 100%; - overflow: hidden; -} - -.edit-post-layout__metaboxes ul.element-metabox-tabs { - margin: 0; -} - -ul.element-metabox-tabs li { - width: auto; - flex: none; - border-bottom: 2px solid transparent; - border-top: none; - text-align: center; - margin-bottom: 0; -} - -ul.element-metabox-tabs li a { - display: block; - width: auto; - padding: 16px 16px 14px 16px; - color: #0087be; - font-weight: 400; - text-decoration: none; - box-shadow: 0 0 0; -} - -ul.element-metabox-tabs li a:hover { - color: #00a0d2; -} - -ul.element-metabox-tabs li.is-selected { - border-bottom-color: #2e4453; -} - -ul.element-metabox-tabs li.is-selected a { - color: #2e4453; -} - -#generate-element-content, -#generate-element-content + .CodeMirror { - margin-bottom: 20px; -} - -.element-metabox-tabs li:not([data-tab="display-rules"]):not([data-tab="internal-notes"]), -.generate-elements-settings:not([data-tab="display-rules"]):not([data-tab="internal-notes"]) { - display: none; -} - -.element-settings.header .element-metabox-tabs li[data-type="header"], -.element-settings.hook .element-metabox-tabs li[data-type="hook"], -.element-settings.block .element-metabox-tabs li[data-type="hook"], -.element-settings.layout .element-metabox-tabs li[data-type="layout"] { - display: block; -} - -.element-settings.header:not(.has-page-hero) table[data-tab="site-header"], -.element-settings.header.has-page-hero table[data-tab="hero"], -.element-settings.hook table[data-tab="hook-settings"], -.element-settings.block table[data-tab="hook-settings"], -.element-settings.layout table[data-tab="sidebars"] { - display: table; -} - -.element-settings.header:not(.has-page-hero) #generate-element-content { - display: none; -} - -.element-settings.header:not(.has-page-hero) #generate-element-content + .CodeMirror:not(.gpp-elements-show-codemirror) { - height: 0; - overflow: hidden; - opacity: 0; - margin: 0; -} - -.padding-container { - display: flex; -} - -.single-value-padding-container { - display: block; -} - -.single-value-padding-container input[type="number"] { - width: 60px !important; - display: inline-block; - vertical-align: middle; -} - -.padding-element-options { - display: flex; -} - -.padding-element span.unit { - border: 1px solid #ddd; - display: inline-block; - line-height: 26px; - padding: 0 10px; - margin-left: -5px; - vertical-align: middle; - border-left: 0; -} - -.padding-element input { - width: 60px !important; - min-height: 30px; -} - -.padding-element select { - width: auto !important; - position: relative; - left: -5px; - min-height: 30px; -} - -.padding-element span { - display: block; - font-size: 90%; - opacity: 0.8; -} - -.generate-element-row-content .responsive-controls.single-responsive-value { - padding: 8px 15px 7px 0; -} - -.generate-element-row-content .responsive-controls.checkbox-responsive-value { - padding: 2px 15px 0 0; -} - -#postimagediv { - display: none; -} - -.image-preview img { - height: 30px; - width: auto; - vertical-align: middle; - border-radius: 5px; -} - -.gp-media-preview img { - vertical-align: middle; - background-color: #efefef; - border-radius: 5px; - height: 30px; - width: auto; -} - -.media-container, -.change-featured-image, -.set-featured-image { - display: flex; - align-items: center; -} - -.media-container > input, -.media-container .gp-media-preview img, -.change-featured-image > *, -.set-featured-image > * { - margin-right: 10px !important; -} - -.generate-element-row-content .responsive-controls { - float: left; - padding: 15px 15px 15px 0; -} - -.generate-element-row-content .responsive-controls a { - text-decoration: none; - color: #222; - opacity: 0.5; - outline: 0; - box-shadow: 0 0 0; -} - -.generate-element-row-content .responsive-controls a.is-selected { - opacity: 1; -} - -.generate-element-row-content .responsive-controls a span { - font-size: 14px; - width: auto; - height: auto; - vertical-align: baseline; -} - -#generate-element-content { - width: 100%; - height: 300px; -} - -.layout-radio-item { - margin-bottom: 3px; -} - -.layout-radio-item:first-child { - margin-bottom: 15px; -} - -span.tip { - display: inline-block; - float: right; - background: #b3b3b3; - height: 15px; - width: 15px; - text-align: center; - line-height: 15px; - color: #fff; - border-radius: 50%; - font-size: 10px; -} - -body:not(.header-element-type) #generate_page_hero_template_tags, -.header-element-type:not(.element-has-page-hero) #generate_page_hero_template_tags { - display: none; -} - -#_generate_element_internal_notes { - width: 100%; - height: 250px; -} - -.select2-results__option { - margin: 0; -} - -body .select2-container--default .select2-selection--single { - border-color: #ddd; -} - -.select2-results__option[role="list"] { - padding: 0; -} - -#generate_premium_elements #_generate_content_width { - width: 65px; - vertical-align: middle; -} - -#_generate_content_width + span { - border: 1px solid #ddd; - height: 26px; - display: inline-block; - vertical-align: middle; - line-height: 26px; - padding: 0 10px; - margin-left: -6px; -} - -.hide-hook-row, -.sidebar-notice { - display: none; -} - -.sidebar-notice { - margin-top: 10px; - font-style: italic; -} - -.element-settings.block .generate-elements-settings[data-type="hook"] tr:last-child td { - border-bottom: 0; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/metabox.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/metabox.js deleted file mode 100644 index c003b0df..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/metabox.js +++ /dev/null @@ -1,424 +0,0 @@ -jQuery( function( $ ) { - if ( $( '.element-settings' ).hasClass( 'header' ) || $( '.element-settings' ).hasClass( 'hook' ) ) { - $( function() { - if ( elements.settings ) { - wp.codeEditor.initialize( 'generate-element-content', elements.settings ); - } - } ); - } - - $( '#_generate_block_type' ).on( 'change', function() { - var _this = $( this ).val(); - - if ( 'hook' === _this ) { - $( '.hook-row' ).removeClass( 'hide-hook-row' ); - } else { - $( '.hook-row' ).addClass( 'hide-hook-row' ); - } - - $( 'body' ).removeClass( 'right-sidebar-block-type' ); - $( 'body' ).removeClass( 'left-sidebar-block-type' ); - $( 'body' ).removeClass( 'header-block-type' ); - $( 'body' ).removeClass( 'footer-block-type' ); - - $( 'body' ).addClass( _this + '-block-type' ); - - if ( 'left-sidebar' === _this || 'right-sidebar' === _this ) { - $( '.sidebar-notice' ).show(); - } else { - $( '.sidebar-notice' ).hide(); - } - } ); - - $( '#_generate_hook' ).on( 'change', function() { - var _this = $( this ); - - $( '.disable-header-hook' ).hide(); - $( '.disable-footer-hook' ).hide(); - $( '.custom-hook-name' ).hide(); - - if ( 'generate_header' === _this.val() ) { - $( '.disable-header-hook' ).show(); - } - - if ( 'generate_footer' === _this.val() ) { - $( '.disable-footer-hook' ).show(); - } - - if ( 'custom' === _this.val() ) { - $( '.custom-hook-name' ).show(); - } - } ); - - $( '#_generate_hook' ).select2( { - width: '100%', - } ); - - $( '.element-metabox-tabs li' ).on( 'click', function() { - var _this = $( this ), - tab = _this.data( 'tab' ); - - _this.siblings().removeClass( 'is-selected' ); - _this.addClass( 'is-selected' ); - $( '.generate-elements-settings' ).hide(); - $( '.generate-elements-settings[data-tab="' + tab + '"]' ).show(); - - if ( $( '.element-settings' ).hasClass( 'block' ) && 'hook-settings' === tab ) { - $( '.generate-elements-settings[data-tab="display-rules"]' ).show(); - } - - if ( $( '.element-settings' ).hasClass( 'header' ) ) { - if ( 'hero' !== tab ) { - $( '#generate-element-content' ).next( '.CodeMirror' ).removeClass( 'gpp-elements-show-codemirror' ); - $( '#generate_page_hero_template_tags' ).css( 'display', '' ); - } else { - $( '#generate-element-content' ).next( '.CodeMirror' ).addClass( 'gpp-elements-show-codemirror' ); - $( '#generate_page_hero_template_tags' ).css( 'display', 'block' ); - } - } - } ); - - var select2Init = function() { - var selects = $( '.generate-element-row-content .condition:not(.hidden) select:not(.select2-init)' ); - - selects.each( function() { - var select = $( this ), - config = { - width: 'style', - }; - - select.select2( config ); - select.addClass( 'select2-init' ); - } ); - }; - - select2Init(); - - $( '.add-condition' ).on( 'click', function() { - var _this = $( this ); - - var row = _this.closest( '.generate-element-row-content' ).find( '.condition.hidden.screen-reader-text' ).clone( true ); - row.removeClass( 'hidden screen-reader-text' ); - row.insertBefore( _this.closest( '.generate-element-row-content' ).find( '.condition:last' ) ); - - select2Init(); - - return false; - } ); - - $( '.remove-condition' ).on( 'click', function() { - $( this ).parents( '.condition' ).remove(); - - select2Init(); - - return false; - } ); - - var getLocationObjects = function( _this, onload = false, data = '' ) { - var select = _this, - parent = select.parent(), - location = select.val(), - objectSelect = parent.find( '.condition-object-select' ), - locationType = '', - actionType = 'terms'; - - if ( '' === location ) { - parent.removeClass( 'generate-elements-rule-objects-visible' ); - select.closest( '.generate-element-row-content' ).find( '.generate-element-row-loading' ).remove(); - } else { - if ( location.indexOf( ':taxonomy:' ) > 0 ) { - locationType = 'taxonomy'; - } else { - locationType = location.substr( 0, location.indexOf( ':' ) ); - } - - var locationID = location.substr( location.lastIndexOf( ':' ) + 1 ); - - if ( 'taxonomy' === locationType || 'post' === locationType ) { - if ( ! ( '.generate-element-row-loading' ).length ) { - select.closest( '.generate-element-row-content' ).prepend( '
    ' ); - } - - var fillObjects = function( response ) { - var objects = response[ locationID ].objects; - - var blank = { - id: '', - name: 'All ' + response[ locationID ].label, - }; - - if ( location.indexOf( ':taxonomy:' ) > 0 ) { - blank.name = elements.choose; - } - - objectSelect.empty(); - - objectSelect.append( $( '' ); - objectSelect.val( '0' ); - } - } - }; - - $( '.condition select.condition-select' ).on( 'change', function() { - getLocationObjects( $( this ) ); - - $( '.elements-no-location-error' ).hide(); - } ); - - var postObjects = []; - var termObjects = []; - - $( '.generate-elements-rule-objects-visible' ).each( function() { - var _this = $( this ), - select = _this.find( 'select.condition-select' ), - location = select.val(), - locationID = location.substr( location.lastIndexOf( ':' ) + 1 ), - locationType = ''; - - if ( location.indexOf( ':taxonomy:' ) > 0 ) { - locationType = 'taxonomy'; - } else { - locationType = location.substr( 0, location.indexOf( ':' ) ); - } - - if ( 'post' === locationType ) { - if ( ! postObjects.includes( locationID ) ) { - postObjects.push( locationID ); - } - } else if ( 'taxonomy' === locationType && ! termObjects.includes( locationID ) ) { - termObjects.push( locationID ); - } - } ); - - if ( postObjects.length > 0 || termObjects.length > 0 ) { - $.post( ajaxurl, { - action: 'generate_elements_get_location_objects', - posts: postObjects, - terms: termObjects, - nonce: elements.nonce, - }, function( response ) { - response = JSON.parse( response ); - - $( '.generate-elements-rule-objects-visible' ).each( function() { - var _this = $( this ), - select = _this.find( 'select.condition-select' ); - - $( '
    ' ).insertBefore( _this ); - - getLocationObjects( select, true, response ); - } ); - } ); - } - - $( '.set-featured-image a, .change-featured-image a:not(.remove-image)' ).on( 'click', function( event ) { - event.preventDefault(); - - // Stop propagation to prevent thickbox from activating. - event.stopPropagation(); - - // Open the featured image modal - wp.media.featuredImage.frame().open(); - } ); - - wp.media.featuredImage.frame().on( 'select', function() { - $( '.set-featured-image' ).hide(); - $( '.change-featured-image' ).show(); - - setTimeout( function() { - $( '.image-preview' ).empty(); - $( '#postimagediv img' ).appendTo( '.image-preview' ); - }, 500 ); - } ); - - $( '#postimagediv' ).on( 'click', '#remove-post-thumbnail', function() { - $( '.set-featured-image' ).show(); - $( '.change-featured-image' ).hide(); - $( '.image-preview' ).empty(); - return false; - } ); - - $( '.remove-image' ).on( 'click', function( e ) { - e.preventDefault(); - - $( '#remove-post-thumbnail' ).trigger( 'click' ); - } ); - - $( '.generate-upload-file' ).on( 'click', function() { - if ( frame ) { - frame.open(); - return; - } - - var _this = $( this ), - container = _this.closest( '.media-container' ); - - var frame = wp.media( { - title: _this.data( 'title' ), - multiple: false, - library: { type: _this.data( 'type' ) }, - button: { text: _this.data( 'insert' ) }, - } ); - - frame.on( 'select', function() { - var attachment = frame.state().get( 'selection' ).first().toJSON(); - - container.find( '.media-field' ).val( attachment.id ); - container.find( '.remove-field' ).show(); - - if ( _this.data( 'preview' ) ) { - container.find( '.gp-media-preview' ).empty().append( '' ).show(); - } - } ); - - frame.open(); - } ); - - $( '.remove-field' ).on( 'click', function() { - var _this = $( this ), - container = _this.closest( '.media-container' ); - - _this.hide(); - container.find( '.media-field' ).val( '' ); - container.find( '.gp-media-preview' ).empty(); - } ); - - $( '#_generate_hero_background_image' ).on( 'change', function() { - var _this = $( this ); - - if ( '' !== _this.val() ) { - $( '.requires-background-image' ).show(); - } else { - $( '.requires-background-image' ).hide(); - } - - if ( 'featured-image' === _this.val() ) { - $( '.image-text' ).text( elements.fallback_image ); - } - - if ( 'custom-image' === _this.val() ) { - $( '.image-text' ).text( elements.custom_image ); - } - } ); - - // Responsive controls in our settings. - $( '.responsive-controls a' ).on( 'click', function( e ) { - e.preventDefault(); - - var _this = $( this ), - control = _this.attr( 'data-control' ), - controlArea = _this.closest( '.generate-element-row-content' ); - - controlArea.find( '.padding-container' ).hide(); - controlArea.find( '.padding-container.' + control ).show(); - _this.siblings().removeClass( 'is-selected' ); - _this.addClass( 'is-selected' ); - } ); - - $( '#_generate_site_header_merge' ).on( 'change', function() { - var _this = $( this ); - - if ( '' !== _this.val() ) { - $( '.requires-header-merge' ).show(); - - if ( $( '#_generate_navigation_colors' ).is( ':checked' ) ) { - $( '.requires-navigation-colors' ).show(); - } - - if ( $( '#_generate_hero_full_screen' ).is( ':checked' ) ) { - $( '.requires-full-screen' ).show(); - } - } else { - $( '.requires-header-merge' ).hide(); - $( '.requires-navigation-colors' ).hide(); - $( '.requires-full-screen' ).hide(); - } - } ); - - $( '#_generate_navigation_colors' ).on( 'change', function() { - var _this = $( this ); - - if ( _this.is( ':checked' ) ) { - $( '.requires-navigation-colors' ).show(); - } else { - $( '.requires-navigation-colors' ).hide(); - } - } ); - - $( '#_generate_hero_full_screen' ).on( 'change', function() { - var _this = $( this ); - - if ( _this.is( ':checked' ) ) { - $( '.requires-full-screen' ).show(); - } else { - $( '.requires-full-screen' ).hide(); - } - } ); - - $( '#_generate_hero_background_parallax' ).on( 'change', function() { - var _this = $( this ); - - if ( _this.is( ':checked' ) ) { - $( '#_generate_hero_background_position' ).val( '' ).change(); - $( '#_generate_hero_background_position option[value="left center"]' ).attr( 'disabled', true ); - $( '#_generate_hero_background_position option[value="left bottom"]' ).attr( 'disabled', true ); - $( '#_generate_hero_background_position option[value="right center"]' ).attr( 'disabled', true ); - $( '#_generate_hero_background_position option[value="right bottom"]' ).attr( 'disabled', true ); - $( '#_generate_hero_background_position option[value="center center"]' ).attr( 'disabled', true ); - $( '#_generate_hero_background_position option[value="center bottom"]' ).attr( 'disabled', true ); - } else { - $( '#_generate_hero_background_position option[value="left center"]' ).attr( 'disabled', false ); - $( '#_generate_hero_background_position option[value="left bottom"]' ).attr( 'disabled', false ); - $( '#_generate_hero_background_position option[value="right center"]' ).attr( 'disabled', false ); - $( '#_generate_hero_background_position option[value="right bottom"]' ).attr( 'disabled', false ); - $( '#_generate_hero_background_position option[value="center center"]' ).attr( 'disabled', false ); - $( '#_generate_hero_background_position option[value="center bottom"]' ).attr( 'disabled', false ); - } - } ); -} ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/spinner.gif b/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/admin/spinner.gif deleted file mode 100644 index 209d10b6bb1a443fa7488d5238b32b93a2bd8b8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4162 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 LsoI7F?dpF4ttiU7 diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/js/parallax.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/js/parallax.js deleted file mode 100644 index a4540e52..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/js/parallax.js +++ /dev/null @@ -1,17 +0,0 @@ -function generate_parallax_element( selector, context ) { - context = context || document; - var elements = context.querySelectorAll( selector ); - return Array.prototype.slice.call( elements ); -} - -window.addEventListener( "scroll", function() { - var scrolledHeight= window.pageYOffset; - generate_parallax_element( ".page-hero" ).forEach( function( el, index, array ) { - var limit = el.offsetTop + el.offsetHeight; - if( scrolledHeight > el.offsetTop && scrolledHeight <= limit ) { - el.style.backgroundPositionY = ( scrolledHeight - el.offsetTop ) / hero.parallax + "px"; - } else { - el.style.backgroundPositionY = "0"; - } - }); -}); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/js/parallax.min.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/js/parallax.min.js deleted file mode 100644 index f1918424..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/assets/js/parallax.min.js +++ /dev/null @@ -1 +0,0 @@ -function generate_parallax_element(e,o){var t=(o=o||document).querySelectorAll(e);return Array.prototype.slice.call(t)}window.addEventListener("scroll",function(){var r=window.pageYOffset;generate_parallax_element(".page-hero").forEach(function(e,o,t){var a=e.offsetTop+e.offsetHeight;r>e.offsetTop&&r<=a?e.style.backgroundPositionY=(r-e.offsetTop)/hero.parallax+"px":e.style.backgroundPositionY="0"})}); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-block-elements.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-block-elements.php deleted file mode 100644 index 4e2b73de..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-block-elements.php +++ /dev/null @@ -1,1789 +0,0 @@ - true, - ) - ) - ); - - $parent_elements = get_posts( - array( - 'post_type' => 'gp_elements', - 'post_parent' => 0, - 'no_found_rows' => true, - 'post_status' => 'publish', - 'numberposts' => 100, - 'fields' => 'ids', - 'exclude' => array( get_the_ID() ), - 'meta_query' => array( - array( - 'key' => '_generate_block_type', - 'value' => 'content-template', - 'compare' => '=', - ), - ), - ) - ); - - $parent_elements_data = array(); - - foreach ( (array) $parent_elements as $element ) { - $parent_elements_data[] = array( - 'label' => get_the_title( $element ), - 'id' => $element, - ); - } - - $image_sizes = get_intermediate_image_sizes(); - $image_sizes = array_diff( $image_sizes, array( '1536x1536', '2048x2048' ) ); - $image_sizes[] = 'full'; - - $containerWidth = function_exists( 'generate_get_option' ) ? generate_get_option( 'container_width' ) : 1100; - $rightSidebarWidth = apply_filters( 'generate_right_sidebar_width', '25' ); - $leftSidebarWidth = apply_filters( 'generate_left_sidebar_width', '25' ); - - $containerWidth = floatval( $containerWidth ); - $leftSidebarWidth = '0.' . $leftSidebarWidth; - $rightSidebarWidth = '0.' . $rightSidebarWidth; - - $leftSidebarWidth = $containerWidth - ( $containerWidth * $leftSidebarWidth ); - $rightSidebarWidth = $containerWidth - ( $containerWidth * $rightSidebarWidth ); - - $leftSidebarWidth = $containerWidth - $leftSidebarWidth; - $rightSidebarWidth = $containerWidth - $rightSidebarWidth; - - $contentWidth = $containerWidth - $rightSidebarWidth; - - wp_localize_script( - 'gp-premium-block-elements', - 'gpPremiumBlockElements', - array( - 'isBlockElement' => 'gp_elements' === get_post_type(), - 'taxonomies' => $taxonomies, - 'rightSidebarWidth' => $rightSidebarWidth, - 'leftSidebarWidth' => $leftSidebarWidth, - 'contentWidth' => $contentWidth, - 'hooks' => GeneratePress_Elements_Helper::get_available_hooks(), - 'excerptLength' => apply_filters( 'excerpt_length', 55 ), // phpcs:ignore -- Core filter. - 'isGenerateBlocksActive' => function_exists( 'generateblocks_load_plugin_textdomain' ), - 'isGenerateBlocksInstalled' => file_exists( WP_PLUGIN_DIR . '/generateblocks/plugin.php' ) ? true : false, - 'isGenerateBlocksProActive' => function_exists( 'generateblocks_pro_init' ), - 'installLink' => wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=generateblocks' ), 'install-plugin_generateblocks' ), - 'activateLink' => wp_nonce_url( 'plugins.php?action=activate&plugin=generateblocks/plugin.php&plugin_status=all&paged=1&s', 'activate-plugin_generateblocks/plugin.php' ), - 'imageSizes' => $image_sizes, - 'imageSizeDimensions' => $this->get_image_Sizes(), - 'featuredImagePlaceholder' => GP_PREMIUM_DIR_URL . 'elements/assets/admin/featured-image-placeholder.png', - 'authorImagePlaceholder' => GP_PREMIUM_DIR_URL . 'elements/assets/admin/author-image-placeholder.png', - 'bgImageFallback' => GP_PREMIUM_DIR_URL . 'elements/assets/admin/background-image-fallback.jpg', - 'templateImageUrl' => 'https://gpsites.co/files/element-library', - 'parentElements' => $parent_elements_data, - ) - ); - - wp_enqueue_style( - 'gp-premium-block-elements', - GP_PREMIUM_DIR_URL . 'dist/block-elements.css', - array( 'wp-edit-blocks' ), - filemtime( GP_PREMIUM_DIR_PATH . 'dist/block-elements.css' ) - ); - } - - /** - * Add our block category. - * - * @param array $categories The existing categories. - */ - public function add_block_category( $categories ) { - return array_merge( - array( - array( - 'slug' => 'generatepress', - 'title' => __( 'GeneratePress', 'gp-premium' ), - ), - ), - $categories - ); - } - - /** - * Register our dynamic blocks. - */ - public function register_dynamic_blocks() { - if ( ! function_exists( 'register_block_type' ) ) { - return; - } - - register_block_type( - 'generatepress/dynamic-content', - array( - 'render_callback' => array( $this, 'do_dynamic_content_block' ), - 'attributes' => array( - 'contentType' => array( - 'type' => 'string', - 'default' => '', - ), - 'excerptLength' => array( - 'type' => 'number', - 'default' => apply_filters( 'excerpt_length', 55 ), // phpcs:ignore -- Core filter. - ), - 'useThemeMoreLink' => array( - 'type' => 'boolean', - 'defaut' => true, - ), - 'customMoreLink' => array( - 'type' => 'string', - 'default' => '', - ), - ), - ) - ); - - register_block_type( - 'generatepress/dynamic-image', - array( - 'render_callback' => array( $this, 'do_dynamic_image_block' ), - 'attributes' => array( - 'imageType' => array( - 'type' => 'string', - 'default' => '', - ), - 'imageSource' => array( - 'type' => 'string', - 'default' => 'current-post', - ), - 'customField' => array( - 'type' => 'string', - 'default' => '', - ), - 'gpDynamicSourceInSameTerm' => array( - 'type' => 'boolean', - 'default' => false, - ), - 'gpDynamicSourceInSameTermTaxonomy' => array( - 'tyoe' => 'string', - 'default' => 'category', - ), - 'imageSize' => array( - 'type' => 'string', - 'default' => 'full', - ), - 'linkTo' => array( - 'type' => 'string', - 'default' => '', - ), - 'linkToCustomField' => array( - 'type' => 'string', - 'default' => '', - ), - 'imageWidth' => array( - 'type' => 'number', - 'default' => null, - ), - 'imageHeight' => array( - 'type' => 'number', - 'default' => null, - ), - 'avatarSize' => array( - 'type' => 'number', - 'default' => 30, - ), - 'avatarRounded' => array( - 'type' => 'boolean', - 'default' => false, - ), - ), - ) - ); - } - - /** - * Do our dynamic content block. - * - * @param array $attributes The attributes from this block. - */ - public function do_dynamic_content_block( $attributes ) { - if ( empty( $attributes['contentType'] ) ) { - return; - } - - if ( 'post-content' === $attributes['contentType'] ) { - return $this->do_content_block(); - } - - if ( 'post-excerpt' === $attributes['contentType'] ) { - return $this->do_excerpt_block( $attributes ); - } - - if ( 'term-description' === $attributes['contentType'] ) { - return sprintf( - '
    %s
    ', - term_description() - ); - } - - if ( 'author-description' === $attributes['contentType'] ) { - return sprintf( - '
    %s
    ', - get_the_author_meta( 'description' ) - ); - } - } - - /** - * Build our content block. - */ - public function do_content_block() { - // Prevents infinite loops while in the editor or autosaving. - $nonpublic_post_types = array( - 'gp_elements', - 'revision', - ); - - if ( ! in_array( get_post_type(), $nonpublic_post_types ) && ! is_admin() ) { - return sprintf( - '
    %s
    ', - apply_filters( 'the_content', str_replace( ']]>', ']]>', get_the_content() ) ) // phpcs:ignore -- Core filter. - ); - } - } - - /** - * Build our excerpt block. - * - * @param array $attributes The block attributes. - */ - public function do_excerpt_block( $attributes ) { - if ( version_compare( PHP_VERSION, '5.6', '>=' ) ) { - $filter_excerpt_length = function( $length ) use ( $attributes ) { - return isset( $attributes['excerptLength'] ) ? $attributes['excerptLength'] : $length; - }; - - add_filter( - 'excerpt_length', - $filter_excerpt_length, - 100 - ); - - if ( isset( $attributes['useThemeMoreLink'] ) && ! $attributes['useThemeMoreLink'] ) { - $filter_more_text = function() use ( $attributes ) { - if ( empty( $attributes['customMoreLink'] ) ) { - return ' ...'; - } - - return apply_filters( - 'generate_excerpt_block_more_output', - sprintf( - ' ... %3$s', - the_title_attribute( 'echo=0' ), - esc_url( get_permalink( get_the_ID() ) ), - wp_kses_post( $attributes['customMoreLink'] ), - sprintf( - /* translators: Aria-label describing the read more button */ - _x( 'More on %s', 'more on post title', 'gp-premium' ), - the_title_attribute( 'echo=0' ) - ) - ) - ); - }; - - add_filter( - 'excerpt_more', - $filter_more_text, - 100 - ); - } - } - - if ( 'gp_elements' === get_post_type() || is_admin() ) { - $post = get_posts( - array( - 'post_type' => 'post', - 'numberposts' => 1, - ) - ); - - if ( ! empty( $post[0] ) ) { - return sprintf( - '
    %s
    ', - apply_filters( 'the_excerpt', get_the_excerpt( $post[0]->ID ) ) // phpcs:ignore -- Core filter. - ); - } else { - return sprintf( - '

    %s

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed pulvinar ligula augue, quis bibendum tellus scelerisque venenatis. Pellentesque porta nisi mi. In hac habitasse platea dictumst. Etiam risus elit, molestie non volutpat ac, pellentesque sed eros. Nunc leo odio, sodales non tortor at, porttitor posuere dui.

    ', - __( 'This is a placeholder for your content.', 'gp-premium' ) - ); - } - } - - $excerpt = apply_filters( 'the_excerpt', get_the_excerpt() ); // phpcs:ignore -- Core filter. - - if ( isset( $filter_excerpt_length ) ) { - remove_filter( - 'excerpt_length', - $filter_excerpt_length, - 100 - ); - } - - if ( isset( $filter_more_text ) ) { - remove_filter( - 'excerpt_more', - $filter_more_text, - 100 - ); - } - - return sprintf( - '
    %s
    ', - $excerpt - ); - } - - /** - * Build our dynamic image block. - * - * @param array $attributes The block attributes. - */ - public function do_dynamic_image_block( $attributes ) { - if ( empty( $attributes['imageType'] ) ) { - return; - } - - if ( 'featured-image' === $attributes['imageType'] ) { - $image_source = ! empty( $attributes['imageSource'] ) ? $attributes['imageSource'] : 'current-post'; - $id = $this->get_source_id( $image_source, $attributes ); - - if ( ! $id ) { - return; - } - - if ( has_post_thumbnail( $id ) ) { - $size = ! empty( $attributes['imageSize'] ) ? $attributes['imageSize'] : 'full'; - $featured_image_classes = array( 'dynamic-featured-image' ); - - if ( ! empty( $attributes['className'] ) ) { - $featured_image_classes[] = $attributes['className']; - } - - $featured_image = get_the_post_thumbnail( $id, $size, array( 'class' => implode( ' ', $featured_image_classes ) ) ); - - // We can't alter the width/height generated by get_the_post_thumbnail(), so we need to resort to this. - if ( ! empty( $attributes['imageWidth'] ) ) { - $featured_image = preg_replace( '/width=[\"\'][0-9]+[\"\']/i', 'width="' . absint( $attributes['imageWidth'] ) . '"', $featured_image ); - } - - if ( ! empty( $attributes['imageHeight'] ) ) { - $featured_image = preg_replace( '/height=[\"\'][0-9]+[\"\']/i', 'height="' . absint( $attributes['imageHeight'] ) . '"', $featured_image ); - } - - if ( $featured_image ) { - if ( ! empty( $attributes['linkTo'] ) ) { - if ( 'single-post' === $attributes['linkTo'] ) { - $featured_image = sprintf( - '%s', - esc_url( get_permalink( $id ) ), - $featured_image - ); - } - - if ( 'custom-field' === $attributes['linkTo'] ) { - $custom_field = get_post_meta( $id, $attributes['linkToCustomField'], true ); - - if ( $custom_field ) { - $featured_image = sprintf( - '%s', - esc_url( $custom_field ), - $featured_image - ); - } - } - } - - return $featured_image; - } - } - } - - if ( 'post-meta' === $attributes['imageType'] ) { - $image_source = ! empty( $attributes['imageSource'] ) ? $attributes['imageSource'] : 'current-post'; - $id = $this->get_source_id( $image_source, $attributes ); - - if ( ! $id ) { - return; - } - - $image_field_name = ! empty( $attributes['customField'] ) ? $attributes['customField'] : ''; - - if ( $image_field_name ) { - $image = get_post_meta( $id, $image_field_name, true ); - - if ( ctype_digit( $image ) ) { - $size = ! empty( $attributes['imageSize'] ) ? $attributes['imageSize'] : 'full'; - $image_output = wp_get_attachment_image( $image, $size, false, array( 'class' => 'dynamic-meta-image' ) ); - - // We can't alter the width/height generated by get_the_post_thumbnail(), so we need to resort to this. - if ( ! empty( $attributes['imageWidth'] ) ) { - $image_output = preg_replace( '/width=[\"\'][0-9]+[\"\']/i', 'width="' . absint( $attributes['imageWidth'] ) . '"', $image_output ); - } - - if ( ! empty( $attributes['imageHeight'] ) ) { - $image_output = preg_replace( '/height=[\"\'][0-9]+[\"\']/i', 'height="' . absint( $attributes['imageHeight'] ) . '"', $image_output ); - } - } else { - $image_output = apply_filters( - 'generate_dynamic_custom_field_image', - sprintf( - '', - $image, - ! empty( $attributes['imageWidth'] ) ? absint( $attributes['imageWidth'] ) : '', - ! empty( $attributes['imageHeight'] ) ? absint( $attributes['imageHeight'] ) : '' - ) - ); - } - - if ( ! empty( $image_output ) ) { - if ( ! empty( $attributes['linkTo'] ) ) { - if ( 'single-post' === $attributes['linkTo'] ) { - $image_output = sprintf( - '%s', - esc_url( get_permalink( $id ) ), - $image_output - ); - } - - if ( 'custom-field' === $attributes['linkTo'] ) { - $custom_field = get_post_meta( $id, $attributes['linkToCustomField'], true ); - - if ( $custom_field ) { - $image_output = sprintf( - '%s', - esc_url( $custom_field ), - $image_output - ); - } - } - } - - return $image_output; - } - } - } - - if ( 'author-avatar' === $attributes['imageType'] ) { - global $post; - $author_id = $post->post_author; - $size = ! empty( $attributes['avatarSize'] ) ? $attributes['avatarSize'] : 30; - $image_alt = apply_filters( 'generate_dynamic_author_image_alt', __( 'Photo of author', 'gp-premium' ) ); - - $classes = array( - 'dynamic-author-image', - ); - - if ( ! empty( $attributes['avatarRounded'] ) ) { - $classes[] = 'dynamic-author-image-rounded'; - } - - $avatar = get_avatar( - $author_id, - $size, - '', - esc_attr( $image_alt ), - array( - 'class' => implode( ' ', $classes ), - ) - ); - - if ( $avatar ) { - return $avatar; - } - } - } - - /** - * Get our dynamic URL. - * - * @param string $link_type The kind of link to add. - * @param string $source The source of the dynamic data. - * @param array $block The block we're working with. - */ - public function get_dynamic_url( $link_type, $source, $block ) { - $id = $this->get_source_id( $source, $block['attrs'] ); - $author_id = $this->get_author_id( $source, $block['attrs'] ); - $url = ''; - - if ( 'single-post' === $link_type ) { - $url = get_permalink( $id ); - } - - if ( isset( $block['attrs']['gpDynamicLinkCustomField'] ) ) { - if ( 'post-meta' === $link_type ) { - $url = get_post_meta( $id, $block['attrs']['gpDynamicLinkCustomField'], true ); - } - - if ( 'user-meta' === $link_type ) { - $url = $this->get_user_data( $author_id, $block['attrs']['gpDynamicLinkCustomField'] ); - } - - if ( 'term-meta' === $link_type ) { - $url = get_term_meta( get_queried_object_id(), $block['attrs']['gpDynamicLinkCustomField'], true ); - } - } - - if ( 'author-archives' === $link_type ) { - $url = get_author_posts_url( $author_id ); - } - - if ( 'comments' === $link_type ) { - $url = get_comments_link( $id ); - } - - if ( 'next-posts' === $link_type ) { - global $paged, $wp_query; - - $max_page = 0; - - if ( ! $max_page ) { - $max_page = $wp_query->max_num_pages; - } - - $paged_num = isset( $paged ) && $paged ? $paged : 1; - $nextpage = (int) $paged_num + 1; - - if ( ! is_single() && ( $nextpage <= $max_page ) ) { - $url = next_posts( $max_page, false ); - } - } - - if ( 'previous-posts' === $link_type ) { - global $paged; - - if ( ! is_single() && (int) $paged > 1 ) { - $url = previous_posts( false ); - } - } - - return apply_filters( 'generate_dynamic_element_url', $url, $link_type, $source, $block ); - } - - /** - * Wrap our dynamic text in a link. - * - * @param string $text The text to wrap. - * @param string $link_type The kind of link to add. - * @param string $source The source of the dynamic data. - * @param array $block The block we're working with. - */ - public function add_dynamic_link( $text, $link_type, $source, $block ) { - if ( 'generateblocks/headline' === $block['blockName'] ) { - $url = $this->get_dynamic_url( $link_type, $source, $block ); - - if ( ! $url ) { - return $text; - } - - return sprintf( - '%s', - esc_url( $url ), - $text - ); - } - - if ( 'generateblocks/button' === $block['blockName'] ) { - $url = $this->get_dynamic_url( $link_type, $source, $block ); - - // Since this is a button, we want to scrap the whole block if we don't have a link. - if ( ! $url ) { - return ''; - } - - $dynamic_url = sprintf( - 'href="%s"', - esc_url( $url ) - ); - - return str_replace( 'href="#"', $dynamic_url, $text ); - } - } - - /** - * Get user data. - * - * @since 2.0.0 - * @param int $author_id The ID of the user. - * @param string $field The field to look up. - */ - public function get_user_data( $author_id, $field ) { - $data = get_user_meta( $author_id, $field, true ); - - if ( ! $data ) { - $user_data_names = array( - 'user_nicename', - 'user_email', - 'user_url', - 'display_name', - ); - - if ( in_array( $field, $user_data_names ) ) { - $user_data = get_userdata( $author_id ); - - if ( $user_data ) { - switch ( $field ) { - case 'user_nicename': - $data = $user_data->user_nicename; - break; - - case 'user_email': - $data = $user_data->user_email; - break; - - case 'user_url': - $data = $user_data->user_url; - break; - - case 'display_name': - $data = $user_data->display_name; - break; - } - } - } - } - - return $data; - } - - /** - * Add the dynamic bits to our blocks. - * - * @param string $block_content The block content. - * @param array $block The block info. - */ - public function render_blocks( $block_content, $block ) { - if ( 'gp_elements' === get_post_type() || is_admin() ) { - return $block_content; - } - - if ( 'generateblocks/headline' === $block['blockName'] || 'generateblocks/button' === $block['blockName'] ) { - if ( ! empty( $block['attrs']['gpDynamicTextType'] ) && ! empty( $block['attrs']['gpDynamicTextReplace'] ) ) { - $text_to_replace = $block['attrs']['gpDynamicTextReplace']; - $text_type = $block['attrs']['gpDynamicTextType']; - $link_type = ! empty( $block['attrs']['gpDynamicLinkType'] ) ? $block['attrs']['gpDynamicLinkType'] : ''; - $source = ! empty( $block['attrs']['gpDynamicSource'] ) ? $block['attrs']['gpDynamicSource'] : 'current-post'; - $id = $this->get_source_id( $source, $block['attrs'] ); - - if ( ! $id ) { - return ''; - } - - if ( 'title' === $text_type ) { - $post_title = get_the_title( $id ); - - if ( ! in_the_loop() ) { - if ( is_tax() || is_category() || is_tag() ) { - $post_title = get_queried_object()->name; - } elseif ( is_post_type_archive() ) { - $post_title = post_type_archive_title( '', false ); - } elseif ( is_archive() && function_exists( 'get_the_archive_title' ) ) { - $post_title = get_the_archive_title(); - - if ( is_author() ) { - $post_title = get_the_author(); - } - } elseif ( is_home() ) { - $page_for_posts = get_option( 'page_for_posts' ); - - if ( ! empty( $page_for_posts ) ) { - $post_title = get_the_title( $page_for_posts ); - } else { - $post_title = __( 'Blog', 'gp-premium' ); - } - } - } - - $post_title = apply_filters( 'generate_dynamic_element_text', $post_title, $block ); - - if ( $link_type ) { - $post_title = $this->add_dynamic_link( $post_title, $link_type, $source, $block ); - } - - if ( ! empty( $block['attrs']['gpDynamicTextBefore'] ) ) { - $post_title = $block['attrs']['gpDynamicTextBefore'] . $post_title; - } - - $post_title = apply_filters( 'generate_dynamic_element_text_output', $post_title, $block ); - $block_content = str_replace( $text_to_replace, $post_title, $block_content ); - } - - if ( 'post-date' === $text_type ) { - $updated_time = get_the_modified_time( 'U', $id ); - $published_time = get_the_time( 'U', $id ) + 1800; - - $post_date = sprintf( - '', - esc_attr( get_the_date( 'c', $id ) ), - esc_html( get_the_date( '', $id ) ) - ); - - $is_updated_date = isset( $block['attrs']['gpDynamicDateType'] ) && 'updated-date' === $block['attrs']['gpDynamicDateType']; - - if ( ! empty( $block['attrs']['gpDynamicDateUpdated'] ) || $is_updated_date ) { - if ( $updated_time > $published_time ) { - $post_date = sprintf( - '', - esc_attr( get_the_modified_date( 'c', $id ) ), - esc_html( get_the_modified_date( '', $id ) ) - ); - } elseif ( $is_updated_date ) { - // If we're showing the updated date but no updated date exists, don't display anything. - return ''; - } - } - - $post_date = apply_filters( 'generate_dynamic_element_text', $post_date, $block ); - - if ( $link_type ) { - $post_date = $this->add_dynamic_link( $post_date, $link_type, $source, $block ); - } - - $before_text = ''; - - if ( ! empty( $block['attrs']['gpDynamicTextBefore'] ) ) { - $before_text = $block['attrs']['gpDynamicTextBefore']; - } - - // Use the updated date before text if we're set to replace the published date with updated date. - if ( ! empty( $block['attrs']['gpDynamicUpdatedDateBefore'] ) && ! empty( $block['attrs']['gpDynamicDateUpdated'] ) && $updated_time > $published_time ) { - $before_text = $block['attrs']['gpDynamicUpdatedDateBefore']; - } - - if ( ! empty( $before_text ) ) { - $post_date = $before_text . $post_date; - } - - $post_date = apply_filters( 'generate_dynamic_element_text_output', $post_date, $block ); - $block_content = str_replace( $text_to_replace, $post_date, $block_content ); - } - - if ( 'post-author' === $text_type ) { - $author_id = $this->get_author_id( $source, $block['attrs'] ); - $post_author = get_the_author_meta( 'display_name', $author_id ); - $post_author = apply_filters( 'generate_dynamic_element_text', $post_author, $block ); - - if ( empty( $post_author ) ) { - return ''; - } - - if ( $link_type ) { - $post_author = $this->add_dynamic_link( $post_author, $link_type, $source, $block ); - } - - if ( ! empty( $block['attrs']['gpDynamicTextBefore'] ) ) { - $post_author = $block['attrs']['gpDynamicTextBefore'] . $post_author; - } - - $post_author = apply_filters( 'generate_dynamic_element_text_output', $post_author, $block ); - $block_content = str_replace( $text_to_replace, $post_author, $block_content ); - } - - if ( 'terms' === $text_type && 'generateblocks/headline' === $block['blockName'] ) { - if ( ! empty( $block['attrs']['gpDynamicTextTaxonomy'] ) ) { - $terms = get_the_terms( $id, $block['attrs']['gpDynamicTextTaxonomy'] ); - - if ( is_wp_error( $terms ) ) { - return $block_content; - } - - $term_items = array(); - - foreach ( (array) $terms as $term ) { - if ( ! isset( $term->name ) ) { - continue; - } - - if ( 'term-archives' === $link_type ) { - $term_link = get_term_link( $term, $block['attrs']['gpDynamicTextTaxonomy'] ); - - if ( ! is_wp_error( $term_link ) ) { - $term_items[] = sprintf( - '%2$s', - esc_url( get_term_link( $term, $block['attrs']['gpDynamicTextTaxonomy'] ) ), - $term->name, - $term->slug - ); - } - } else { - $term_items[] = sprintf( - '%1$s', - $term->name, - $term->slug - ); - } - } - - if ( empty( $term_items ) ) { - return ''; - } - - $sep = isset( $block['attrs']['gpDynamicTextTaxonomySeparator'] ) ? $block['attrs']['gpDynamicTextTaxonomySeparator'] : ', '; - $term_output = implode( $sep, $term_items ); - - if ( ! empty( $block['attrs']['gpDynamicTextBefore'] ) ) { - $term_output = $block['attrs']['gpDynamicTextBefore'] . $term_output; - } - - $term_output = apply_filters( 'generate_dynamic_element_text_output', $term_output, $block ); - $block_content = str_replace( $text_to_replace, $term_output, $block_content ); - } else { - return ''; - } - } - - if ( 'comments-number' === $text_type ) { - if ( ! post_password_required( $id ) && ( comments_open( $id ) || get_comments_number( $id ) ) ) { - if ( ! isset( $block['attrs']['gpDynamicNoCommentsText'] ) ) { - $block['attrs']['gpDynamicNoCommentsText'] = __( 'No Comments', 'gp-premium' ); - } - - if ( '' === $block['attrs']['gpDynamicNoCommentsText'] && get_comments_number( $id ) < 1 ) { - return ''; - } - - $comments_text = get_comments_number_text( - $block['attrs']['gpDynamicNoCommentsText'], - ! empty( $block['attrs']['gpDynamicSingleCommentText'] ) ? $block['attrs']['gpDynamicSingleCommentText'] : __( '1 Comment', 'gp-premium' ), - ! empty( $block['attrs']['gpDynamicMultipleCommentsText'] ) ? $block['attrs']['gpDynamicMultipleCommentsText'] : __( '% Comments', 'gp-premium' ) - ); - - $comments_text = apply_filters( 'generate_dynamic_element_text', $comments_text, $block ); - - if ( '' === $comments_text ) { - return ''; - } - - if ( $link_type ) { - $comments_text = $this->add_dynamic_link( $comments_text, $link_type, $source, $block ); - } - - if ( ! empty( $block['attrs']['gpDynamicTextBefore'] ) ) { - $comments_text = $block['attrs']['gpDynamicTextBefore'] . $comments_text; - } - - $comments_text = apply_filters( 'generate_dynamic_element_text_output', $comments_text, $block ); - $block_content = str_replace( $text_to_replace, $comments_text, $block_content ); - } else { - return ''; - } - } - - if ( 'post-meta' === $text_type || 'term-meta' === $text_type || 'user-meta' === $text_type ) { - if ( ! empty( $block['attrs']['gpDynamicTextCustomField'] ) ) { - $custom_field = get_post_meta( $id, $block['attrs']['gpDynamicTextCustomField'], true ); - - if ( 'term-meta' === $text_type ) { - $custom_field = get_term_meta( get_queried_object_id(), $block['attrs']['gpDynamicTextCustomField'], true ); - } - - if ( 'user-meta' === $text_type ) { - $author_id = $this->get_author_id( $source, $block['attrs'] ); - $custom_field = $this->get_user_data( $author_id, $block['attrs']['gpDynamicTextCustomField'] ); - } - - $custom_field = apply_filters( 'generate_dynamic_element_text', $custom_field, $block ); - - if ( $custom_field ) { - if ( $link_type ) { - $custom_field = $this->add_dynamic_link( $custom_field, $link_type, $source, $block ); - } - - if ( ! empty( $block['attrs']['gpDynamicTextBefore'] ) ) { - $custom_field = $block['attrs']['gpDynamicTextBefore'] . $custom_field; - } - - add_filter( 'wp_kses_allowed_html', [ 'GeneratePress_Elements_Helper', 'expand_allowed_html' ], 10, 2 ); - $custom_field = wp_kses_post( $custom_field ); - remove_filter( 'wp_kses_allowed_html', [ 'GeneratePress_Elements_Helper', 'expand_allowed_html' ], 10, 2 ); - - $custom_field = apply_filters( 'generate_dynamic_element_text_output', $custom_field, $block ); - $block_content = str_replace( $text_to_replace, $custom_field, $block_content ); - } else { - $block_content = ''; - } - } else { - $block_content = ''; - } - } - } - } - - if ( 'generateblocks/button' === $block['blockName'] ) { - $link_type = ! empty( $block['attrs']['gpDynamicLinkType'] ) ? $block['attrs']['gpDynamicLinkType'] : ''; - - if ( ! empty( $link_type ) && 'term-archives' !== $link_type ) { - $source = ! empty( $block['attrs']['gpDynamicSource'] ) ? $block['attrs']['gpDynamicSource'] : 'current-post'; - $id = $this->get_source_id( $source, $block['attrs'] ); - - if ( ! $id ) { - return ''; - } - - if ( $link_type ) { - $block_content = $this->add_dynamic_link( $block_content, $link_type, $source, $block ); - } - } - - if ( ! empty( $block['attrs']['gpDynamicTextType'] ) && ! empty( $block['attrs']['gpDynamicTextReplace'] ) ) { - $text_to_replace = $block['attrs']['gpDynamicTextReplace']; - $text_type = $block['attrs']['gpDynamicTextType']; - $link_type = ! empty( $block['attrs']['gpDynamicLinkType'] ) ? $block['attrs']['gpDynamicLinkType'] : ''; - $source = ! empty( $block['attrs']['gpDynamicSource'] ) ? $block['attrs']['gpDynamicSource'] : 'current-post'; - $id = $this->get_source_id( $source, $block['attrs'] ); - - if ( ! $id ) { - return ''; - } - - if ( 'terms' === $text_type ) { - if ( ! empty( $block['attrs']['gpDynamicTextTaxonomy'] ) ) { - $terms = get_the_terms( $id, $block['attrs']['gpDynamicTextTaxonomy'] ); - - if ( is_wp_error( $terms ) ) { - return ''; - } - - $term_buttons = array(); - - foreach ( (array) $terms as $term ) { - if ( ! isset( $term->name ) ) { - continue; - } - - $term_button = str_replace( $text_to_replace, $term->name, $block_content ); - - if ( isset( $term->slug ) ) { - $term_button = str_replace( 'dynamic-term-class', 'post-term-item term-' . $term->slug, $term_button ); - } - - if ( 'term-archives' === $link_type ) { - $term_link = get_term_link( $term, $block['attrs']['gpDynamicTextTaxonomy'] ); - - if ( ! is_wp_error( $term_link ) ) { - $term_url = sprintf( - 'href="%s"', - esc_url( $term_link ) - ); - - $term_button = str_replace( 'href="#"', $term_url, $term_button ); - } - } - - $term_buttons[] = $term_button; - } - - if ( empty( $term_buttons ) ) { - return ''; - } - - $block_content = implode( '', $term_buttons ); - } else { - return ''; - } - } - } - } - - if ( 'generateblocks/container' === $block['blockName'] ) { - if ( ! empty( $block['attrs']['gpRemoveContainerCondition'] ) ) { - $in_same_term = ! empty( $block['attrs']['gpAdjacentPostInSameTerm'] ) ? true : false; - $term_taxonomy = ! empty( $block['attrs']['gpAdjacentPostInSameTermTax'] ) ? $block['attrs']['gpAdjacentPostInSameTermTax'] : 'category'; - - if ( 'no-next-post' === $block['attrs']['gpRemoveContainerCondition'] ) { - $next_post = get_next_post( $in_same_term, '', $term_taxonomy ); - - if ( ! is_object( $next_post ) ) { - if ( ! empty( $block['attrs']['isGrid'] ) && ! empty( $block['attrs']['uniqueId'] ) ) { - return '
    '; - } else { - return ''; - } - } - } - - if ( 'no-previous-post' === $block['attrs']['gpRemoveContainerCondition'] ) { - $previous_post = get_previous_post( $in_same_term, '', $term_taxonomy ); - - if ( ! is_object( $previous_post ) ) { - if ( ! empty( $block['attrs']['isGrid'] ) && ! empty( $block['attrs']['uniqueId'] ) ) { - return '
    '; - } else { - return ''; - } - } - } - - if ( 'no-featured-image' === $block['attrs']['gpRemoveContainerCondition'] ) { - if ( ! has_post_thumbnail() ) { - return ''; - } - } - - if ( 'no-post-meta' === $block['attrs']['gpRemoveContainerCondition'] && ! empty( $block['attrs']['gpRemoveContainerConditionPostMeta'] ) ) { - $post_meta_check = get_post_meta( get_the_ID(), $block['attrs']['gpRemoveContainerConditionPostMeta'], true ); - - if ( ! $post_meta_check ) { - return ''; - } - } - } elseif ( ! empty( $block['attrs']['url'] ) && ! empty( $block['attrs']['gpDynamicLinkType'] ) ) { - $source = ! empty( $block['attrs']['gpDynamicSource'] ) ? $block['attrs']['gpDynamicSource'] : 'current-post'; - - $id = $this->get_source_id( $source, $block['attrs'] ); - - if ( ! $id ) { - return ''; - } - } - } - - return $block_content; - } - - /** - * Set the featured image as a GB background. - * - * @param string $url The current URL. - * @param array $settings The current settings. - */ - public function set_background_image_url( $url, $settings ) { - if ( ! empty( $settings['gpDynamicImageBg'] ) ) { - $custom_field = ''; - $source = ! empty( $settings['gpDynamicSource'] ) ? $settings['gpDynamicSource'] : 'current-post'; - $id = $this->get_source_id( $source, $settings ); - - if ( ! $id ) { - return ''; - } - - if ( 'post-meta' === $settings['gpDynamicImageBg'] ) { - $custom_field = get_post_meta( $id, $settings['gpDynamicImageCustomField'], true ); - } - - if ( 'term-meta' === $settings['gpDynamicImageBg'] ) { - $custom_field = get_term_meta( get_queried_object_id(), $settings['gpDynamicImageCustomField'], true ); - } - - if ( 'user-meta' === $settings['gpDynamicImageBg'] ) { - $author_id = $this->get_author_id( $source, $settings ); - $custom_field = $this->get_user_data( $author_id, $settings['gpDynamicImageCustomField'] ); - } - - if ( 'featured-image' === $settings['gpDynamicImageBg'] && has_post_thumbnail( $id ) ) { - $image_size = ! empty( $settings['bgImageSize'] ) ? $settings['bgImageSize'] : 'full'; - $url = get_the_post_thumbnail_url( $id, $image_size ); - } elseif ( ! empty( $custom_field ) ) { - if ( is_numeric( $custom_field ) ) { - $image_size = ! empty( $settings['bgImageSize'] ) ? $settings['bgImageSize'] : 'full'; - $url = wp_get_attachment_image_url( $custom_field, $image_size ); - } else { - $url = $custom_field; - } - } elseif ( empty( $settings['gpUseFallbackImageBg'] ) ) { - $url = ''; - } - } - - return $url; - } - - /** - * Set the attributes for our main Container wrapper. - * - * @param array $attributes The existing attributes. - * @param array $settings The settings for the block. - */ - public function set_container_attributes( $attributes, $settings ) { - if ( ! empty( $settings['bgImage'] ) && in_the_loop() ) { - if ( ! empty( $settings['gpDynamicImageBg'] ) ) { - $custom_field = ''; - $source = ! empty( $settings['gpDynamicSource'] ) ? $settings['gpDynamicSource'] : 'current-post'; - $id = $this->get_source_id( $source, $settings ); - - if ( ! $id ) { - return $attributes; - } - - if ( 'post-meta' === $settings['gpDynamicImageBg'] ) { - $custom_field = get_post_meta( $id, $settings['gpDynamicImageCustomField'], true ); - } - - if ( 'term-meta' === $settings['gpDynamicImageBg'] ) { - $custom_field = get_term_meta( get_queried_object_id(), $settings['gpDynamicImageCustomField'], true ); - } - - if ( 'user-meta' === $settings['gpDynamicImageBg'] ) { - $author_id = $this->get_author_id( $source, $settings ); - $custom_field = $this->get_user_data( $author_id, $settings['gpDynamicImageCustomField'] ); - } - - if ( 'featured-image' === $settings['gpDynamicImageBg'] && has_post_thumbnail( $id ) ) { - $image_size = ! empty( $settings['bgImageSize'] ) ? $settings['bgImageSize'] : 'full'; - $url = get_the_post_thumbnail_url( $id, $image_size ); - } elseif ( ! empty( $custom_field ) ) { - if ( is_numeric( $custom_field ) ) { - $image_size = ! empty( $settings['bgImageSize'] ) ? $settings['bgImageSize'] : 'full'; - $url = wp_get_attachment_image_url( $custom_field, $image_size ); - } else { - $url = $custom_field; - } - } elseif ( ! empty( $settings['gpUseFallbackImageBg'] ) ) { - if ( isset( $settings['bgImage']['id'] ) ) { - $image_size = ! empty( $settings['bgImageSize'] ) ? $settings['bgImageSize'] : 'full'; - $image_src = wp_get_attachment_image_src( $settings['bgImage']['id'], $image_size ); - - if ( is_array( $image_src ) ) { - $url = $image_src[0]; - } else { - $url = $settings['bgImage']['image']['url']; - } - } else { - $url = $settings['bgImage']['image']['url']; - } - } - - if ( ! empty( $url ) ) { - $attributes['style'] = '--background-url:url(' . esc_url( $url ) . ')'; - $attributes['class'] .= ' gb-has-dynamic-bg'; - } else { - $attributes['class'] .= ' gb-no-dynamic-bg'; - } - } - } - - if ( ! empty( $settings['gpInlinePostMeta'] ) ) { - $attributes['class'] .= ' inline-post-meta-area'; - } - - return $attributes; - } - - /** - * Set GenerateBlocks defaults. - * - * @param array $defaults The current defaults. - */ - public function set_defaults( $defaults ) { - $defaults['container']['gpInlinePostMeta'] = false; - $defaults['container']['gpInlinePostMetaJustify'] = ''; - $defaults['container']['gpInlinePostMetaJustifyTablet'] = ''; - $defaults['container']['gpInlinePostMetaJustifyMobile'] = ''; - $defaults['container']['gpDynamicImageBg'] = ''; - $defaults['container']['gpDynamicImageCustomField'] = ''; - $defaults['container']['gpDynamicLinkType'] = ''; - $defaults['container']['gpDynamicSource'] = 'current-post'; - $defaults['container']['gpDynamicSourceInSameTerm'] = false; - $defaults['headline']['gpDynamicTextTaxonomy'] = ''; - $defaults['headline']['gpDynamicTextTaxonomySeparator'] = ', '; - - return $defaults; - } - - /** - * Generate our CSS for our options. - * - * @param string $name Name of the block. - * @param array $settings Our available settings. - * @param object $css Current desktop CSS object. - * @param object $desktop_css Current desktop-only CSS object. - * @param object $tablet_css Current tablet CSS object. - * @param object $tablet_only_css Current tablet-only CSS object. - * @param object $mobile_css Current mobile CSS object. - */ - public function generate_css( $name, $settings, $css, $desktop_css, $tablet_css, $tablet_only_css, $mobile_css ) { - if ( 'container' === $name ) { - if ( ! empty( $settings['bgImage'] ) ) { - if ( 'element' === $settings['bgOptions']['selector'] ) { - $css->set_selector( '.gb-container-' . $settings['uniqueId'] . '.gb-has-dynamic-bg' ); - } elseif ( 'pseudo-element' === $settings['bgOptions']['selector'] ) { - $css->set_selector( '.gb-container-' . $settings['uniqueId'] . '.gb-has-dynamic-bg:before' ); - } - - $css->add_property( 'background-image', 'var(--background-url)' ); - - if ( 'element' === $settings['bgOptions']['selector'] ) { - $css->set_selector( '.gb-container-' . $settings['uniqueId'] . '.gb-no-dynamic-bg' ); - } elseif ( 'pseudo-element' === $settings['bgOptions']['selector'] ) { - $css->set_selector( '.gb-container-' . $settings['uniqueId'] . '.gb-no-dynamic-bg:before' ); - } - - $css->add_property( 'background-image', 'none' ); - } - - if ( ! empty( $settings['gpInlinePostMeta'] ) ) { - $css->set_selector( '.gb-container-' . $settings['uniqueId'] . '.inline-post-meta-area > .gb-inside-container' ); - $css->add_property( 'display', 'flex' ); - $css->add_property( 'align-items', 'center' ); - $css->add_property( 'justify-content', $settings['gpInlinePostMetaJustify'] ); - - $tablet_css->set_selector( '.gb-container-' . $settings['uniqueId'] . '.inline-post-meta-area > .gb-inside-container' ); - $tablet_css->add_property( 'justify-content', $settings['gpInlinePostMetaJustifyTablet'] ); - - $mobile_css->set_selector( '.gb-container-' . $settings['uniqueId'] . '.inline-post-meta-area > .gb-inside-container' ); - $mobile_css->add_property( 'justify-content', $settings['gpInlinePostMetaJustifyMobile'] ); - } - } - } - - /** - * Set the attributes for our main Container wrapper. - * - * @param array $attributes The existing attributes. - * @param array $settings The settings for the block. - */ - public function set_dynamic_container_url( $attributes, $settings ) { - $link_type = ! empty( $settings['gpDynamicLinkType'] ) ? $settings['gpDynamicLinkType'] : ''; - - if ( - $link_type && - isset( $settings['url'] ) && - isset( $settings['linkType'] ) && - '' !== $settings['url'] && - ( 'wrapper' === $settings['linkType'] || 'hidden-link' === $settings['linkType'] ) - ) { - if ( ! empty( $link_type ) ) { - $source = ! empty( $settings['gpDynamicSource'] ) ? $settings['gpDynamicSource'] : 'current-post'; - $id = $this->get_source_id( $source, $settings ); - - if ( ! $id ) { - return $attributes; - } - - if ( 'post' === $link_type ) { - $attributes['href'] = esc_url( get_permalink( $id ) ); - } - - if ( 'post-meta' === $link_type ) { - if ( ! empty( $settings['gpDynamicLinkCustomField'] ) ) { - $custom_field = get_post_meta( $id, $settings['gpDynamicLinkCustomField'], true ); - - if ( $custom_field ) { - $attributes['href'] = esc_url( $custom_field ); - } - } - } - } - } - - return $attributes; - } - - /** - * Get our needed source ID. - * - * @param string $source The source attribute. - * @param array $attributes All block attributes. - */ - public function get_source_id( $source, $attributes = array() ) { - $id = get_the_ID(); - - if ( 'next-post' === $source ) { - $in_same_term = ! empty( $attributes['gpDynamicSourceInSameTerm'] ) ? true : false; - $term_taxonomy = ! empty( $attributes['gpDynamicSourceInSameTermTaxonomy'] ) ? $attributes['gpDynamicSourceInSameTermTaxonomy'] : 'category'; - $next_post = get_next_post( $in_same_term, '', $term_taxonomy ); - - if ( ! is_object( $next_post ) ) { - return false; - } - - $id = $next_post->ID; - } - - if ( 'previous-post' === $source ) { - $in_same_term = ! empty( $attributes['gpDynamicSourceInSameTerm'] ) ? true : false; - $term_taxonomy = ! empty( $attributes['gpDynamicSourceInSameTermTaxonomy'] ) ? $attributes['gpDynamicSourceInSameTermTaxonomy'] : 'category'; - $previous_post = get_previous_post( $in_same_term, '', $term_taxonomy ); - - if ( ! is_object( $previous_post ) ) { - return false; - } - - $id = $previous_post->ID; - } - - return apply_filters( 'generate_dynamic_element_source_id', $id, $source, $attributes ); - } - - /** - * Get our author ID. - * - * @param string $source The source attribute. - * @param array $attributes All block attributes. - */ - public function get_author_id( $source, $attributes ) { - global $post; - $post_info = $post; - - if ( 'next-post' === $source ) { - $in_same_term = ! empty( $attributes['gpDynamicSourceInSameTerm'] ) ? true : false; - $term_taxonomy = ! empty( $attributes['gpDynamicSourceInSameTermTaxonomy'] ) ? $attributes['gpDynamicSourceInSameTermTaxonomy'] : 'category'; - $next_post = get_next_post( $in_same_term, '', $term_taxonomy ); - - if ( ! is_object( $next_post ) ) { - return ''; - } - - $post_info = $next_post; - } - - if ( 'previous-post' === $source ) { - $in_same_term = ! empty( $attributes['gpDynamicSourceInSameTerm'] ) ? true : false; - $term_taxonomy = ! empty( $attributes['gpDynamicSourceInSameTermTaxonomy'] ) ? $attributes['gpDynamicSourceInSameTermTaxonomy'] : 'category'; - $previous_post = get_previous_post( $in_same_term, '', $term_taxonomy ); - - if ( ! is_object( $previous_post ) ) { - return ''; - } - - $post_info = $previous_post; - } - - if ( isset( $post_info->post_author ) ) { - return $post_info->post_author; - } - } - - /** - * Register our post meta. - */ - public function register_meta() { - register_meta( - 'post', - '_generate_block_element_editor_width', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'string', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => array( $this, 'sanitize_int' ), - ) - ); - - register_meta( - 'post', - '_generate_block_element_editor_width_unit', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'string', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - register_meta( - 'post', - '_generate_block_type', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'string', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - register_meta( - 'post', - '_generate_hook', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'string', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - register_meta( - 'post', - '_generate_custom_hook', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'string', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => array( $this, 'sanitize_custom_hook' ), - ) - ); - - register_meta( - 'post', - '_generate_hook_priority', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'string', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => array( $this, 'sanitize_int' ), - ) - ); - - register_meta( - 'post', - '_generate_post_meta_location', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'string', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => array( $this, 'sanitize_text_field' ), - ) - ); - - register_meta( - 'post', - '_generate_post_loop_item_tagname', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'string', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => array( $this, 'sanitize_text_field' ), - ) - ); - - register_meta( - 'post', - '_generate_disable_primary_post_meta', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'boolean', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => array( $this, 'rest_sanitize_boolean' ), - ) - ); - - register_meta( - 'post', - '_generate_disable_secondary_post_meta', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'boolean', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => array( $this, 'rest_sanitize_boolean' ), - ) - ); - - register_meta( - 'post', - '_generate_disable_title', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'boolean', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => array( $this, 'rest_sanitize_boolean' ), - ) - ); - - register_meta( - 'post', - '_generate_disable_featured_image', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'boolean', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => array( $this, 'rest_sanitize_boolean' ), - ) - ); - - register_meta( - 'post', - '_generate_use_theme_post_container', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'boolean', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => array( $this, 'rest_sanitize_boolean' ), - ) - ); - - register_meta( - 'post', - '_generate_use_archive_navigation_container', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'boolean', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => array( $this, 'rest_sanitize_boolean' ), - ) - ); - - register_meta( - 'post', - '_generate_disable_post_navigation', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'boolean', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => array( $this, 'rest_sanitize_boolean' ), - ) - ); - - register_meta( - 'post', - '_generate_disable_archive_navigation', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'boolean', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => array( $this, 'rest_sanitize_boolean' ), - ) - ); - - register_meta( - 'post', - '_generate_post_loop_item_display', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'string', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => array( $this, 'sanitize_text_field' ), - ) - ); - - register_meta( - 'post', - '_generate_post_loop_item_display_tax', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'string', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => array( $this, 'sanitize_text_field' ), - ) - ); - - register_meta( - 'post', - '_generate_post_loop_item_display_term', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'string', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => array( $this, 'sanitize_text_field' ), - ) - ); - - register_meta( - 'post', - '_generate_post_loop_item_display_post_meta', - array( - 'object_subtype' => 'gp_elements', - 'type' => 'string', - 'show_in_rest' => true, - 'auth_callback' => '__return_true', - 'single' => true, - 'sanitize_callback' => array( $this, 'sanitize_text_field' ), - ) - ); - } - - /** - * Sanitize our custom hook field. - * - * @param string $value The value to sanitize. - */ - public function sanitize_custom_hook( $value ) { - $not_allowed = array( - 'muplugins_loaded', - 'registered_taxonomy', - 'plugins_loaded', - 'setup_theme', - 'after_setup_theme', - 'init', - 'widgets_init', - 'wp_loaded', - 'pre_get_posts', - 'wp', - 'template_redirect', - 'get_header', - 'wp_enqueue_scripts', - 'the_post', - 'dynamic_sidebar', - 'get_footer', - 'get_sidebar', - 'wp_print_footer_scripts', - 'shutdown', - ); - - if ( in_array( $value, $not_allowed ) ) { - return ''; - } - - return sanitize_key( $value ); - } - - /** - * Sanitize number values that can be empty. - * - * @param int $value The value to sanitize. - */ - public function sanitize_int( $value ) { - if ( ! is_numeric( $value ) ) { - return ''; - } - - return absint( $value ); - } - - /** - * Get our image size names and dimensions. - */ - public function get_image_sizes() { - global $_wp_additional_image_sizes; - - $default_image_sizes = get_intermediate_image_sizes(); - - foreach ( $default_image_sizes as $size ) { - $image_sizes[ $size ]['width'] = intval( get_option( "{$size}_size_w" ) ); - $image_sizes[ $size ]['height'] = intval( get_option( "{$size}_size_h" ) ); - $image_sizes[ $size ]['crop'] = get_option( "{$size}_crop" ) ? get_option( "{$size}_crop" ) : false; - } - - if ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) ) { - $image_sizes = array_merge( $image_sizes, $_wp_additional_image_sizes ); - } - - return $image_sizes; - } - - /** - * Add front-end CSS. - */ - public function frontend_css() { - require_once GP_LIBRARY_DIRECTORY . 'class-make-css.php'; - $css = new GeneratePress_Pro_CSS(); - - $css->set_selector( '.dynamic-author-image-rounded' ); - $css->add_property( 'border-radius', '100%' ); - - $css->set_selector( '.dynamic-featured-image, .dynamic-author-image' ); - $css->add_property( 'vertical-align', 'middle' ); - - $css->set_selector( '.one-container.blog .dynamic-content-template:not(:last-child), .one-container.archive .dynamic-content-template:not(:last-child)' ); - $css->add_property( 'padding-bottom', '0px' ); - - $css->set_selector( '.dynamic-entry-excerpt > p:last-child' ); - $css->add_property( 'margin-bottom', '0px' ); - - wp_add_inline_style( 'generate-style', $css->css_output() ); - } -} - -GeneratePress_Block_Elements::get_instance(); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-block.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-block.php deleted file mode 100644 index 051d8e43..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-block.php +++ /dev/null @@ -1,469 +0,0 @@ -post_id = $post_id; - $this->type = get_post_meta( $post_id, '_generate_block_type', true ); - $has_content_template_condition = get_post_meta( $post_id, '_generate_post_loop_item_display', true ); - - // Take over the $post_id temporarily if this is a child block. - // This allows us to inherit the parent block Display Rules. - if ( 'content-template' === $this->type && $has_content_template_condition ) { - $parent_block = wp_get_post_parent_id( $post_id ); - - if ( ! empty( $parent_block ) ) { - $this->has_parent = true; - $post_id = $parent_block; - } - } - - $display_conditions = get_post_meta( $post_id, '_generate_element_display_conditions', true ) ? get_post_meta( $post_id, '_generate_element_display_conditions', true ) : array(); - $exclude_conditions = get_post_meta( $post_id, '_generate_element_exclude_conditions', true ) ? get_post_meta( $post_id, '_generate_element_exclude_conditions', true ) : array(); - $user_conditions = get_post_meta( $post_id, '_generate_element_user_conditions', true ) ? get_post_meta( $post_id, '_generate_element_user_conditions', true ) : array(); - - $display = apply_filters( - 'generate_block_element_display', - GeneratePress_Conditions::show_data( - $display_conditions, - $exclude_conditions, - $user_conditions - ), - $post_id - ); - - /** - * Simplify filter name. - * - * @since 2.0.0 - */ - $display = apply_filters( - 'generate_element_display', - $display, - $post_id - ); - - // Restore our actual post ID if it's been changed. - if ( 'content-template' === $this->type && $has_content_template_condition ) { - $post_id = $this->post_id; - } - - if ( $display ) { - global $generate_elements; - - $generate_elements[ $post_id ] = array( - 'is_block_element' => true, - 'type' => $this->type, - 'id' => $post_id, - ); - - $hook = get_post_meta( $post_id, '_generate_hook', true ); - $custom_hook = get_post_meta( $post_id, '_generate_custom_hook', true ); - $priority = get_post_meta( $post_id, '_generate_hook_priority', true ); - - if ( '' === $priority ) { - $priority = 10; - } - - switch ( $this->type ) { - case 'site-header': - $hook = 'generate_header'; - break; - - case 'site-footer': - $hook = 'generate_footer'; - break; - - case 'right-sidebar': - $hook = 'generate_before_right_sidebar_content'; - break; - - case 'left-sidebar': - $hook = 'generate_before_left_sidebar_content'; - break; - - case 'content-template': - $hook = 'generate_before_do_template_part'; - break; - - case 'loop-template': - $hook = 'generate_before_main_content'; - break; - - case 'search-modal': - $hook = 'generate_inside_search_modal'; - break; - } - - if ( 'custom' === $hook && $custom_hook ) { - $hook = $custom_hook; - } - - if ( 'post-meta-template' === $this->type ) { - $post_meta_location = get_post_meta( $post_id, '_generate_post_meta_location', true ); - - if ( '' === $post_meta_location || 'after-post-title' === $post_meta_location ) { - $hook = 'generate_after_entry_title'; - - if ( is_page() ) { - $hook = 'generate_after_page_title'; - } - } elseif ( 'before-post-title' === $post_meta_location ) { - $hook = 'generate_before_entry_title'; - - if ( is_page() ) { - $hook = 'generate_before_page_title'; - } - } elseif ( 'after-content' === $post_meta_location ) { - $hook = 'generate_after_content'; - } - } - - if ( ! $hook ) { - return; - } - - if ( 'generate_header' === $hook ) { - remove_action( 'generate_header', 'generate_construct_header' ); - } - - if ( 'generate_footer' === $hook ) { - remove_action( 'generate_footer', 'generate_construct_footer' ); - } - - if ( 'content-template' === $this->type && ! $this->has_parent ) { - add_filter( 'generate_do_template_part', array( $this, 'do_template_part' ) ); - } - - if ( 'loop-template' === $this->type ) { - add_filter( 'generate_has_default_loop', '__return_false' ); - add_filter( 'generate_blog_columns', '__return_false' ); - add_filter( 'option_generate_blog_settings', array( $this, 'filter_blog_settings' ) ); - add_filter( 'post_class', array( $this, 'post_classes' ) ); - } - - if ( 'search-modal' === $this->type ) { - remove_action( 'generate_inside_search_modal', 'generate_do_search_fields' ); - } - - add_action( 'wp', array( $this, 'remove_elements' ), 100 ); - add_action( esc_attr( $hook ), array( $this, 'build_hook' ), absint( $priority ) ); - add_filter( 'generateblocks_do_content', array( $this, 'do_block_content' ) ); - } - } - - /** - * Disable our post loop items if needed. - * - * @param boolean $do Whether to display the default post loop item or not. - */ - public function do_template_part( $do ) { - if ( GeneratePress_Elements_Helper::should_render_content_template( $this->post_id ) ) { - return false; - } - - return $do; - } - - /** - * Tell GenerateBlocks about our block element content so it can build CSS. - * - * @since 1.11.0 - * @param string $content The existing content. - */ - public function do_block_content( $content ) { - if ( has_blocks( $this->post_id ) ) { - $block_element = get_post( $this->post_id ); - - if ( ! $block_element || 'gp_elements' !== $block_element->post_type ) { - return $content; - } - - if ( 'publish' !== $block_element->post_status || ! empty( $block_element->post_password ) ) { - return $content; - } - - $content .= $block_element->post_content; - } - - return $content; - } - - /** - * Remove existing sidebar widgets. - * - * @since 1.11.0 - * @param array $widgets The existing widgets. - */ - public function remove_sidebar_widgets( $widgets ) { - if ( 'right-sidebar' === $this->type ) { - unset( $widgets['sidebar-1'] ); - } - - if ( 'left-sidebar' === $this->type ) { - unset( $widgets['sidebar-2'] ); - } - - return $widgets; - } - - /** - * Filter some of our blog settings. - * - * @param array $settings Existing blog settings. - */ - public function filter_blog_settings( $settings ) { - if ( 'loop-template' === $this->type ) { - $settings['infinite_scroll'] = false; - $settings['read_more_button'] = false; - } - - return $settings; - } - - /** - * Add class to our loop template item posts. - * - * @param array $classes Post classes. - */ - public function post_classes( $classes ) { - if ( 'loop-template' === $this->type && is_main_query() ) { - $classes[] = 'is-loop-template-item'; - } - - return $classes; - } - - /** - * Remove existing elements. - * - * @since 2.0.0 - */ - public function remove_elements() { - if ( 'right-sidebar' === $this->type || 'left-sidebar' === $this->type ) { - add_filter( 'sidebars_widgets', array( $this, 'remove_sidebar_widgets' ) ); - add_filter( 'generate_show_default_sidebar_widgets', '__return_false' ); - } - - if ( 'page-hero' === $this->type ) { - $disable_title = get_post_meta( $this->post_id, '_generate_disable_title', true ); - $disable_featured_image = get_post_meta( $this->post_id, '_generate_disable_featured_image', true ); - $disable_primary_post_meta = get_post_meta( $this->post_id, '_generate_disable_primary_post_meta', true ); - - if ( $disable_title ) { - if ( is_singular() ) { - add_filter( 'generate_show_title', '__return_false' ); - } - - remove_action( 'generate_archive_title', 'generate_archive_title' ); - remove_filter( 'get_the_archive_title', 'generate_filter_the_archive_title' ); - - // WooCommerce removal. - if ( class_exists( 'WooCommerce' ) ) { - remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 ); - add_filter( 'woocommerce_show_page_title', '__return_false' ); - remove_action( 'woocommerce_archive_description', 'woocommerce_taxonomy_archive_description' ); - remove_action( 'woocommerce_archive_description', 'woocommerce_product_archive_description' ); - } - } - - if ( $disable_primary_post_meta ) { - remove_action( 'generate_after_entry_title', 'generate_post_meta' ); - } - - if ( $disable_featured_image && is_singular() ) { - remove_action( 'generate_after_entry_header', 'generate_blog_single_featured_image' ); - remove_action( 'generate_before_content', 'generate_blog_single_featured_image' ); - remove_action( 'generate_after_header', 'generate_blog_single_featured_image' ); - remove_action( 'generate_before_content', 'generate_featured_page_header_inside_single' ); - remove_action( 'generate_after_header', 'generate_featured_page_header' ); - } - } - - if ( 'post-meta-template' === $this->type ) { - $post_meta_location = get_post_meta( $this->post_id, '_generate_post_meta_location', true ); - $disable_primary_post_meta = get_post_meta( $this->post_id, '_generate_disable_primary_post_meta', true ); - $disable_secondary_post_meta = get_post_meta( $this->post_id, '_generate_disable_secondary_post_meta', true ); - - if ( '' === $post_meta_location || 'after-post-title' === $post_meta_location || 'custom' === $post_meta_location ) { - if ( $disable_primary_post_meta ) { - remove_action( 'generate_after_entry_title', 'generate_post_meta' ); - } - } elseif ( 'before-post-title' === $post_meta_location || 'custom' === $post_meta_location ) { - if ( $disable_primary_post_meta ) { - remove_action( 'generate_after_entry_title', 'generate_post_meta' ); - } - } elseif ( 'after-content' === $post_meta_location || 'custom' === $post_meta_location ) { - if ( $disable_secondary_post_meta ) { - remove_action( 'generate_after_entry_content', 'generate_footer_meta' ); - } - } - } - - if ( 'post-navigation-template' === $this->type ) { - $disable_post_navigation = get_post_meta( $this->post_id, '_generate_disable_post_navigation', true ); - - if ( $disable_post_navigation ) { - add_filter( 'generate_footer_entry_meta_items', array( $this, 'disable_post_navigation' ) ); - } - } - - if ( 'archive-navigation-template' === $this->type ) { - $disable_archive_navigation = get_post_meta( $this->post_id, '_generate_disable_archive_navigation', true ); - - if ( $disable_archive_navigation ) { - remove_action( 'generate_after_loop', 'generate_do_post_navigation' ); - } - } - } - - /** - * Disable post navigation. - * - * @param array $items The post meta items. - */ - public function disable_post_navigation( $items ) { - return array_diff( $items, array( 'post-navigation' ) ); - } - - /** - * Builds the HTML structure for Page Headers. - * - * @since 1.11.0 - */ - public function build_hook() { - $post_id = $this->post_id; - - if ( 'content-template' === $this->type ) { - // Check for child templates if this isn't already one. - if ( ! $this->has_parent ) { - $children = get_posts( - array( - 'post_type' => 'gp_elements', - 'post_parent' => $post_id, - 'order' => 'ASC', - 'orderby' => 'menu_order', - 'no_found_rows' => true, - 'post_status' => 'publish', - 'numberposts' => 20, - 'fields' => 'ids', - ) - ); - - if ( ! empty( $children ) ) { - // Loop through any child templates and overwrite $post_id if applicable. - foreach ( (array) $children as $child_id ) { - if ( GeneratePress_Elements_Helper::should_render_content_template( $child_id ) ) { - $post_id = $child_id; - break; - } - } - } else { - // No children, check if parent should render. - if ( ! GeneratePress_Elements_Helper::should_render_content_template( $post_id ) ) { - return; - } - } - } else { - // No children, check if template should render. - if ( ! GeneratePress_Elements_Helper::should_render_content_template( $post_id ) ) { - return; - } - } - - // Don't display child elements - they will replace the parent element if applicable. - if ( $this->has_parent ) { - return; - } - - $tag_name_value = get_post_meta( $post_id, '_generate_post_loop_item_tagname', true ); - $use_theme_container = get_post_meta( $post_id, '_generate_use_theme_post_container', true ); - - if ( $tag_name_value ) { - $tag_name = $tag_name_value; - } else { - $tag_name = 'article'; - } - - printf( - '<%s id="%s" class="%s">', - esc_attr( $tag_name ), - 'post-' . get_the_ID(), - implode( ' ', get_post_class( 'dynamic-content-template' ) ) // phpcs:ignore -- No escaping needed. - ); - - if ( $use_theme_container ) { - echo '
    '; - } - } - - if ( 'archive-navigation-template' === $this->type || 'post-navigation-template' === $this->type ) { - $use_theme_pagination_container = get_post_meta( $post_id, '_generate_use_archive_navigation_container', true ); - - if ( $use_theme_pagination_container ) { - echo '
    '; - } - } - - echo GeneratePress_Elements_Helper::build_content( $post_id ); // phpcs:ignore -- No escaping needed. - - if ( 'content-template' === $this->type ) { - if ( $use_theme_container ) { - echo '
    '; - } - - echo ''; - } - - if ( 'archive-navigation-template' === $this->type || 'post-navigation-template' === $this->type ) { - $use_theme_pagination_container = get_post_meta( $post_id, '_generate_use_archive_navigation_container', true ); - - if ( $use_theme_pagination_container ) { - echo '
    '; - } - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-conditions.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-conditions.php deleted file mode 100644 index 759d1f81..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-conditions.php +++ /dev/null @@ -1,447 +0,0 @@ - array( - 'label' => esc_attr__( 'General', 'gp-premium' ), - 'locations' => array( - 'general:site' => esc_attr__( 'Entire Site', 'gp-premium' ), - 'general:front_page' => esc_attr__( 'Front Page', 'gp-premium' ), - 'general:blog' => esc_attr__( 'Blog', 'gp-premium' ), - 'general:singular' => esc_attr__( 'All Singular', 'gp-premium' ), - 'general:archive' => esc_attr__( 'All Archives', 'gp-premium' ), - 'general:author' => esc_attr__( 'Author Archives', 'gp-premium' ), - 'general:date' => esc_attr__( 'Date Archives', 'gp-premium' ), - 'general:search' => esc_attr__( 'Search Results', 'gp-premium' ), - 'general:no_results' => esc_attr__( 'No Search Results', 'gp-premium' ), - 'general:404' => esc_attr__( '404 Template', 'gp-premium' ), - 'general:is_paged' => esc_attr__( 'Paginated Results', 'gp-premium' ), - ), - ), - ); - - // Add the post types. - $post_types = get_post_types( - array( - 'public' => true, - ), - 'objects' - ); - - foreach ( $post_types as $post_type_slug => $post_type ) { - - if ( in_array( $post_type_slug, array( 'fl-theme-layout' ) ) ) { - continue; - } - - $post_type_object = get_post_type_object( $post_type_slug ); - $counts = wp_count_posts( $post_type_slug ); - $count = $counts->publish + $counts->future + $counts->draft + $counts->pending + $counts->private; - - // Add the post type. - $types[ $post_type_slug ] = array( - 'label' => esc_html( $post_type->labels->name ), - 'locations' => array( - 'post:' . $post_type_slug => esc_html( $post_type->labels->singular_name ), - ), - ); - - // Add the post type archive. - // We add this regardless of `has_archive` as we deal with that after taxonomies are added. - $types[ $post_type_slug . '_archive' ] = array( - /* translators: post type name */ - 'label' => sprintf( esc_html_x( '%s Archives', '%s is a singular post type name', 'gp-premium' ), $post_type->labels->singular_name ), - 'locations' => array( - /* translators: post type name */ - 'archive:' . $post_type_slug => sprintf( esc_html_x( '%s Archive', '%s is a singular post type name', 'gp-premium' ), $post_type->labels->singular_name ), - ), - ); - - // Add the taxonomies for the post type. - $taxonomies = get_object_taxonomies( $post_type_slug, 'objects' ); - - foreach ( $taxonomies as $taxonomy_slug => $taxonomy ) { - - $public = $taxonomy->public && $taxonomy->show_ui; - - if ( 'post_format' === $taxonomy_slug ) { - continue; - } elseif ( ! apply_filters( 'generate_elements_show_taxonomy', $public, $taxonomy ) ) { - continue; - } - - $label = str_replace( - array( - $post_type->labels->name, - $post_type->labels->singular_name, - ), - '', - $taxonomy->labels->singular_name - ); - - if ( isset( $types[ $post_type_slug . '_archive' ]['locations'] ) ) { - /* translators: '%1$s is post type label. %2$s is taxonomy label. */ - $types[ $post_type_slug . '_archive' ]['locations'][ 'taxonomy:' . $taxonomy_slug ] = sprintf( esc_html_x( '%1$s %2$s Archive', '%1$s is post type label. %2$s is taxonomy label.', 'gp-premium' ), $post_type->labels->singular_name, $label ); - } - - if ( isset( $types[ $post_type_slug ]['locations'] ) ) { - $types[ $post_type_slug ]['locations'][ $post_type_slug . ':taxonomy:' . $taxonomy_slug ] = esc_html( $post_type->labels->singular_name . ' ' . $label ); - } - } - - // Remove the archives location if `has_archive` is set to false. - if ( 'post' !== $post_type_slug && empty( $post_type_object->has_archive ) ) { - unset( $types[ $post_type_slug . '_archive' ]['locations'][ 'archive:' . $post_type_slug ] ); - } - - // Remove the entire item if no locations exist. - if ( 0 === count( (array) $types[ $post_type_slug . '_archive' ]['locations'] ) ) { - unset( $types[ $post_type_slug . '_archive' ] ); - } - } - - return $types; - } - - /** - * Output our available user conditions. - * - * @since 1.7 - * - * @return array - */ - public static function get_user_conditions() { - $rules = array( - 'general' => array( - 'label' => esc_attr__( 'General', 'gp-premium' ), - 'rules' => array( - 'general:all' => esc_attr__( 'All Users', 'gp-premium' ), - 'general:logged_in' => esc_attr__( 'Logged In', 'gp-premium' ), - 'general:logged_out' => esc_attr__( 'Logged Out', 'gp-premium' ), - ), - ), - 'role' => array( - 'label' => esc_attr__( 'Roles', 'gp-premium' ), - 'rules' => array(), - ), - ); - - $roles = get_editable_roles(); - - foreach ( $roles as $slug => $data ) { - $rules['role']['rules'][ $slug ] = $data['name']; - } - - return $rules; - } - - /** - * Get our current location. - * - * @since 1.7 - * - * @return array - */ - public static function get_current_location() { - global $wp_query; - global $post; - - $location = null; - $object = null; - $queried_object = get_queried_object(); - - // Get the location string. - if ( is_front_page() ) { - $location = 'general:front_page'; - } elseif ( is_home() ) { - $location = 'general:blog'; - } elseif ( is_author() ) { - $location = 'general:author'; - } elseif ( is_date() ) { - $location = 'general:date'; - } elseif ( is_search() ) { - $location = 'general:search'; - - global $wp_query; - - if ( 0 === $wp_query->found_posts ) { - $location = 'general:no_results'; - } - } elseif ( is_404() ) { - $location = 'general:404'; - } elseif ( is_category() ) { - - $location = 'taxonomy:category'; - - if ( is_object( $queried_object ) ) { - $object = $queried_object->term_id; - } - } elseif ( is_tag() ) { - - $location = 'taxonomy:post_tag'; - - if ( is_object( $queried_object ) ) { - $object = $queried_object->term_id; - } - } elseif ( is_tax() ) { - - $location = 'taxonomy:' . get_query_var( 'taxonomy' ); - - if ( is_object( $queried_object ) ) { - $location = 'taxonomy:' . $queried_object->taxonomy; - $object = $queried_object->term_id; - } - } elseif ( is_post_type_archive() ) { - $post_type = $wp_query->get( 'post_type' ); - - if ( is_array( $post_type ) ) { - $location = 'archive:' . $post_type[0]; - } else { - $location = 'archive:' . $post_type; - } - } elseif ( is_singular() ) { - - if ( is_object( $post ) ) { - $location = 'post:' . $post->post_type; - } - - if ( is_object( $queried_object ) ) { - $object = $queried_object->ID; - } - } - - if ( is_admin() && function_exists( 'get_current_screen' ) ) { - $current_screen = get_current_screen(); - - if ( isset( $current_screen->is_block_editor ) && $current_screen->is_block_editor ) { - $post_id = false; - - if ( isset( $_GET['post'] ) ) { // phpcs:ignore -- Just checking if it's set. - $post_id = absint( $_GET['post'] ); // phpcs:ignore -- No data processing going on. - } - - if ( $post_id ) { - // Get the location string. - $front_page_id = get_option( 'page_on_front' ); - $blog_id = get_option( 'page_for_posts' ); - - if ( (int) $post_id === (int) $front_page_id ) { - $location = 'general:front_page'; - } elseif ( (int) $post_id === (int) $blog_id ) { - $location = 'general:blog'; - } else { - if ( isset( $current_screen->post_type ) ) { - $location = 'post:' . $current_screen->post_type; - } - - $object = $post_id; - } - } elseif ( isset( $_GET['post_type'] ) ) { // phpcs:ignore -- Just checking if it's set. - $location = 'post:' . esc_attr( $_GET['post_type'] ); // phpcs:ignore -- No data processing going on. - } - } - } - - return array( - 'rule' => $location, - 'object' => $object, - ); - } - - /** - * Get info on the current user. - * - * @since 1.7 - * - * @return array - */ - public static function get_current_user() { - $status = array(); - if ( is_user_logged_in() ) { - $status[] = 'general:logged_in'; - } else { - $status[] = 'general:logged_out'; - } - - $user = wp_get_current_user(); - - foreach ( (array) $user->roles as $role ) { - $status[] = $role; - } - - return $status; - } - - /** - * Figure out if we should display the element or not. - * - * @since 1.7 - * - * @param array $conditionals The conditions. - * @param array $exclude The exclusions. - * @param array $roles The roles. - * @return bool - */ - public static function show_data( $conditionals, $exclude, $roles ) { - $current_location = self::get_current_location(); - $show = false; - - // Show depending on location conditionals. - if ( ! $show ) { - foreach ( (array) $conditionals as $conditional ) { - if ( in_array( 'general:site', $conditional ) ) { - $show = true; - } elseif ( is_singular() && in_array( 'general:singular', $conditional ) ) { - $show = true; - } elseif ( is_archive() && in_array( 'general:archive', $conditional ) ) { - $show = true; - } elseif ( ! empty( $current_location['rule'] ) && in_array( $current_location['rule'], $conditional ) ) { - if ( ! isset( $conditional['object'] ) || empty( $conditional['object'] ) ) { - $show = true; - } else { - if ( in_array( $current_location['object'], $conditional ) ) { - $show = true; - } - } - } elseif ( is_singular() && strstr( $conditional['rule'], ':taxonomy:' ) ) { - $tax = substr( $conditional['rule'], strrpos( $conditional['rule'], ':' ) + 1 ); - - if ( $tax && isset( $conditional['object'] ) && has_term( $conditional['object'], $tax ) ) { - $show = true; - } - } elseif ( is_front_page() && is_home() && ( in_array( 'general:blog', $conditional ) || in_array( 'general:front_page', $conditional ) ) ) { - // If the home page is the blog, both of general:blog and general:front_page apply. - $show = true; - } elseif ( in_array( 'general:is_paged', $conditional ) && is_paged() ) { - $show = true; - } - } - } - - // Exclude based on exclusion conditionals. - if ( $show ) { - foreach ( (array) $exclude as $conditional ) { - if ( is_singular() && in_array( 'general:singular', $conditional ) ) { - $show = false; - } elseif ( is_archive() && in_array( 'general:archive', $conditional ) ) { - $show = false; - } elseif ( ! empty( $current_location['rule'] ) && in_array( $current_location['rule'], $conditional ) ) { - if ( ! isset( $conditional['object'] ) || empty( $conditional['object'] ) ) { - $show = false; - } else { - if ( in_array( $current_location['object'], $conditional ) ) { - $show = false; - } - } - } elseif ( is_singular() && strstr( $conditional['rule'], ':taxonomy:' ) ) { - $tax = substr( $conditional['rule'], strrpos( $conditional['rule'], ':' ) + 1 ); - - if ( $tax && isset( $conditional['object'] ) && has_term( $conditional['object'], $tax ) ) { - $show = false; - } - } elseif ( is_front_page() && is_home() && ( in_array( 'general:blog', $conditional ) || in_array( 'general:front_page', $conditional ) ) ) { - // If the home page is the blog, both of general:blog and general:front_page apply. - $show = false; - } elseif ( in_array( 'general:is_paged', $conditional ) && is_paged() ) { - $show = false; - } - } - } - - // Exclude user roles. - if ( $show && ! empty( $roles ) ) { - $user_info = self::get_current_user(); - - $check = array_intersect( $roles, $user_info ); - if ( ! count( $check ) > 0 && ! in_array( 'general:all', $roles ) ) { - $show = false; - } - } - - return $show; - } - - /** - * Returns the label for a saved location. - * - * @since 1.7 - * @param string $saved_location The location. - * @return string|bool - */ - public static function get_saved_label( $saved_location ) { - $locations = self::get_conditions(); - - $rule = $saved_location['rule']; - $object_id = $saved_location['object']; - $object_type = ''; - $label = false; - - foreach ( $locations as $data ) { - if ( isset( $data['locations'][ $rule ] ) && ! $label ) { - $label = $data['locations'][ $rule ]; - - $object_types = explode( ':', $rule ); - - if ( in_array( 'taxonomy', $object_types ) && $object_id ) { - $term = get_term( $object_id ); - - if ( ! is_object( $term ) || is_wp_error( $term ) ) { - return false; - } - - $label .= ': ' . $term->name; - } elseif ( ( in_array( 'post', $object_types ) || in_array( 'page', $object_types ) ) && $object_id ) { - $post = get_post( $object_id ); - - if ( ! is_object( $post ) ) { - return false; - } - - $label .= ': ' . $post->post_title; - } - } - } - - return $label; - } -} - -GeneratePress_Conditions::get_instance(); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-elements-helper.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-elements-helper.php deleted file mode 100644 index 052f2687..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-elements-helper.php +++ /dev/null @@ -1,527 +0,0 @@ -post_type ) { - return ''; - } - - if ( 'publish' !== $block_element->post_status || ! empty( $block_element->post_password ) ) { - return ''; - } - - $block_type = get_post_meta( $id, '_generate_block_type', true ); - - if ( 'site-footer' === $block_type ) { - $block_element->post_content = str_replace( '{{current_year}}', date( 'Y' ), $block_element->post_content ); // phpcs:ignore -- Prefer date(). - } - - // Handle embeds for block elements. - global $wp_embed; - - if ( is_object( $wp_embed ) && method_exists( $wp_embed, 'autoembed' ) ) { - $block_element->post_content = $wp_embed->autoembed( $block_element->post_content ); - } - - return apply_filters( 'generate_do_block_element_content', do_blocks( $block_element->post_content ) ); - } - - /** - * Get our Element type label. - * - * @since 2.0.0 - * @param string $type The type value. - */ - public static function get_element_type_label( $type ) { - switch ( $type ) { - case 'block': - $label = __( 'Block', 'gp-premium' ); - break; - - case 'header': - $label = __( 'Header', 'gp-premium' ); - break; - - case 'hook': - $label = __( 'Hook', 'gp-premium' ); - break; - - case 'layout': - $label = __( 'Layout', 'gp-premium' ); - break; - - case 'site-header': - $label = __( 'Site Header', 'gp-premium' ); - break; - - case 'page-hero': - $label = __( 'Page Hero', 'gp-premium' ); - break; - - case 'content-template': - $label = __( 'Content Template', 'gp-premium' ); - break; - - case 'loop-template': - $label = __( 'Loop Template', 'gp-premium' ); - break; - - case 'post-meta-template': - $label = __( 'Post Meta Template', 'gp-premium' ); - break; - - case 'post-navigation-template': - $label = __( 'Post Navigation', 'gp-premium' ); - break; - - case 'archive-navigation-template': - $label = __( 'Archive Navigation', 'gp-premium' ); - break; - - case 'right-sidebar': - $label = __( 'Right Sidebar', 'gp-premium' ); - break; - - case 'left-sidebar': - $label = __( 'Left Sidebar', 'gp-premium' ); - break; - - case 'site-footer': - $label = __( 'Site Footer', 'gp-premium' ); - break; - - default: - $label = esc_html( str_replace( '-', ' ', ucfirst( $type ) ) ); - break; - } - - return $label; - } - - /** - * Check for content template conditions. - * - * @since 2.0.0 - * @param int $post_id The post to check. - */ - public static function should_render_content_template( $post_id ) { - $loop_item_display = get_post_meta( $post_id, '_generate_post_loop_item_display', true ); - $display = true; - - if ( 'has-term' === $loop_item_display ) { - $tax = get_post_meta( $post_id, '_generate_post_loop_item_display_tax', true ); - - if ( $tax ) { - $term = get_post_meta( $post_id, '_generate_post_loop_item_display_term', true ); - - // Add support for multiple comma separated terms. - if ( ! empty( $term ) ) { - $term = str_replace( ' ', '', $term ); - $term = explode( ',', $term ); - } - - if ( has_term( $term, $tax ) ) { - $display = true; - } else { - $display = false; - } - } - } - - if ( 'has-post-meta' === $loop_item_display ) { - $post_meta_name = get_post_meta( $post_id, '_generate_post_loop_item_display_post_meta', true ); - - if ( $post_meta_name ) { - $post_meta = get_post_meta( get_the_ID(), $post_meta_name, true ); - - if ( $post_meta ) { - $display = true; - } else { - $display = false; - } - } - } - - if ( 'is-first-post' === $loop_item_display ) { - global $wp_query; - - if ( 0 === $wp_query->current_post && ! is_paged() ) { - $display = true; - } else { - $display = false; - } - } - - return apply_filters( 'generate_should_render_content_template', $display, $post_id ); - } - - /** - * Build our entire list of hooks to display. - * - * @since 1.7 - * - * @return array Our list of hooks. - */ - public static function get_available_hooks() { - $hooks = array( - 'scripts' => array( - 'group' => esc_attr__( 'Scripts/Styles', 'gp-premium' ), - 'hooks' => array( - 'wp_head', - 'wp_body_open', - 'wp_footer', - ), - ), - 'header' => array( - 'group' => esc_attr__( 'Header', 'gp-premium' ), - 'hooks' => array( - 'generate_before_header', - 'generate_after_header', - 'generate_before_header_content', - 'generate_after_header_content', - 'generate_before_logo', - 'generate_after_logo', - 'generate_header', - ), - ), - 'navigation' => array( - 'group' => esc_attr__( 'Navigation', 'gp-premium' ), - 'hooks' => array( - 'generate_inside_navigation', - 'generate_after_primary_menu', - 'generate_inside_secondary_navigation', - 'generate_inside_mobile_menu', - 'generate_inside_mobile_menu_bar', - 'generate_inside_mobile_header', - 'generate_inside_slideout_navigation', - 'generate_after_slideout_navigation', - ), - ), - 'content' => array( - 'group' => esc_attr__( 'Content', 'gp-premium' ), - 'hooks' => array( - 'generate_inside_site_container', - 'generate_inside_container', - 'generate_before_main_content', - 'generate_after_main_content', - 'generate_before_content', - 'generate_after_content', - 'generate_after_entry_content', - 'generate_after_primary_content_area', - 'generate_before_entry_title', - 'generate_after_entry_title', - 'generate_after_entry_header', - 'generate_before_archive_title', - 'generate_after_archive_title', - 'generate_after_archive_description', - ), - ), - 'comments' => array( - 'group' => esc_attr__( 'Comments', 'gp-premium' ), - 'hooks' => array( - 'generate_before_comments_container', - 'generate_before_comments', - 'generate_inside_comments', - 'generate_below_comments_title', - ), - ), - 'sidebars' => array( - 'group' => esc_attr__( 'Sidebars', 'gp-premium' ), - 'hooks' => array( - 'generate_before_right_sidebar_content', - 'generate_after_right_sidebar_content', - 'generate_before_left_sidebar_content', - 'generate_after_left_sidebar_content', - ), - ), - 'footer' => array( - 'group' => esc_attr__( 'Footer', 'gp-premium' ), - 'hooks' => array( - 'generate_before_footer', - 'generate_after_footer', - 'generate_after_footer_widgets', - 'generate_before_footer_content', - 'generate_after_footer_content', - 'generate_footer', - ), - ), - ); - - if ( class_exists( 'WooCommerce' ) ) { - $hooks['navigation']['hooks'][] = 'generate_mobile_cart_items'; - - $hooks['woocommerce-global'] = array( - 'group' => esc_attr__( 'WooCommerce - Global', 'gp-premium' ), - 'hooks' => array( - 'woocommerce_before_main_content', - 'woocommerce_after_main_content', - 'woocommerce_sidebar', - 'woocommerce_breadcrumb', - ), - ); - - $hooks['woocommerce-shop'] = array( - 'group' => esc_attr__( 'WooCommerce - Shop', 'gp-premium' ), - 'hooks' => array( - 'woocommerce_archive_description', - 'woocommerce_before_shop_loop', - 'woocommerce_after_shop_loop', - 'woocommerce_before_shop_loop_item_title', - 'woocommerce_after_shop_loop_item_title', - ), - ); - - $hooks['woocommerce-product'] = array( - 'group' => esc_attr__( 'WooCommerce - Product', 'gp-premium' ), - 'hooks' => array( - 'woocommerce_before_single_product', - 'woocommerce_before_single_product_summary', - 'woocommerce_after_single_product_summary', - 'woocommerce_single_product_summary', - 'woocommerce_share', - 'woocommerce_simple_add_to_cart', - 'woocommerce_before_add_to_cart_form', - 'woocommerce_after_add_to_cart_form', - 'woocommerce_before_add_to_cart_button', - 'woocommerce_after_add_to_cart_button', - 'woocommerce_before_add_to_cart_quantity', - 'woocommerce_after_add_to_cart_quantity', - 'woocommerce_product_meta_start', - 'woocommerce_product_meta_end', - 'woocommerce_after_single_product', - ), - ); - - $hooks['woocommerce-cart'] = array( - 'group' => esc_attr__( 'WooCommerce - Cart', 'gp-premium' ), - 'hooks' => array( - 'woocommerce_before_calculate_totals', - 'woocommerce_after_calculate_totals', - 'woocommerce_before_cart', - 'woocommerce_after_cart_table', - 'woocommerce_before_cart_table', - 'woocommerce_before_cart_contents', - 'woocommerce_cart_contents', - 'woocommerce_after_cart_contents', - 'woocommerce_cart_coupon', - 'woocommerce_cart_actions', - 'woocommerce_before_cart_totals', - 'woocommerce_cart_totals_before_order_total', - 'woocommerce_cart_totals_after_order_total', - 'woocommerce_proceed_to_checkout', - 'woocommerce_after_cart_totals', - 'woocommerce_after_cart', - ), - ); - - $hooks['woocommerce-checkout'] = array( - 'group' => esc_attr__( 'WooCommerce - Checkout', 'gp-premium' ), - 'hooks' => array( - 'woocommerce_before_checkout_form', - 'woocommerce_checkout_before_customer_details', - 'woocommerce_checkout_after_customer_details', - 'woocommerce_checkout_billing', - 'woocommerce_before_checkout_billing_form', - 'woocommerce_after_checkout_billing_form', - 'woocommerce_before_order_notes', - 'woocommerce_after_order_notes', - 'woocommerce_checkout_shipping', - 'woocommerce_checkout_before_order_review', - 'woocommerce_checkout_order_review', - 'woocommerce_review_order_before_cart_contents', - 'woocommerce_review_order_after_cart_contents', - 'woocommerce_review_order_before_order_total', - 'woocommerce_review_order_after_order_total', - 'woocommerce_review_order_before_payment', - 'woocommerce_review_order_before_submit', - 'woocommerce_review_order_after_submit', - 'woocommerce_review_order_after_payment', - 'woocommerce_checkout_after_order_review', - 'woocommerce_after_checkout_form', - ), - ); - - $hooks['woocommerce-account'] = array( - 'group' => esc_attr__( 'WooCommerce - Account', 'gp-premium' ), - 'hooks' => array( - 'woocommerce_before_account_navigation', - 'woocommerce_account_navigation', - 'woocommerce_after_account_navigation', - ), - ); - } - - if ( function_exists( 'generate_is_using_flexbox' ) && generate_is_using_flexbox() ) { - $hooks['navigation']['hooks'][] = 'generate_menu_bar_items'; - } - - if ( defined( 'GENERATE_VERSION' ) && version_compare( GENERATE_VERSION, '3.0.0-alpha.1', '>' ) ) { - $hooks['navigation']['hooks'][] = 'generate_before_navigation'; - $hooks['navigation']['hooks'][] = 'generate_after_navigation'; - $hooks['navigation']['hooks'][] = 'generate_after_mobile_menu_button'; - $hooks['navigation']['hooks'][] = 'generate_inside_mobile_menu_control_wrapper'; - - $hooks['content']['hooks'][] = 'generate_after_loop'; - $hooks['content']['hooks'][] = 'generate_before_do_template_part'; - $hooks['content']['hooks'][] = 'generate_after_do_template_part'; - } - - return apply_filters( 'generate_hooks_list', $hooks ); - } - - /** - * Expand the wp_kses_post sanitization function to allow iframe HTML tags - * - * @param array $tags The allowed tags, attributes, and/or attribute values. - * @param string $context Context to judge allowed tags by. Allowed values are 'post'. - * @return array - */ - public static function expand_allowed_html( $tags, $context ) { - if ( ! isset( $tags['iframe'] ) ) { - $tags['iframe'] = [ - 'src' => true, - 'height' => true, - 'width' => true, - 'frameborder' => true, - 'allowfullscreen' => true, - 'title' => true, - ]; - } - - $tags = apply_filters( 'generate_dynamic_content_allowed_html', $tags, $context ); - - return $tags; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-hero.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-hero.php deleted file mode 100644 index 631b1185..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-hero.php +++ /dev/null @@ -1,1041 +0,0 @@ -conditional = get_post_meta( $post_id, '_generate_element_display_conditions', true ); - } - - if ( get_post_meta( $post_id, '_generate_element_exclude_conditions', true ) ) { - $this->exclude = get_post_meta( $post_id, '_generate_element_exclude_conditions', true ); - } - - if ( get_post_meta( $post_id, '_generate_element_user_conditions', true ) ) { - $this->users = get_post_meta( $post_id, '_generate_element_user_conditions', true ); - } - - $display = apply_filters( 'generate_header_element_display', GeneratePress_Conditions::show_data( $this->conditional, $this->exclude, $this->users ), $post_id ); - - /** - * Simplify filter name. - * - * @since 2.0.0 - */ - $display = apply_filters( - 'generate_element_display', - $display, - $post_id - ); - - if ( $display ) { - global $generate_elements; - - $generate_elements[ $post_id ] = array( - 'is_block_element' => false, - 'type' => 'header', - 'id' => $post_id, - ); - - $location = apply_filters( 'generate_page_hero_location', 'generate_after_header', $post_id ); - - add_action( $location, array( $this, 'build_hero' ), 9 ); - add_action( 'wp_enqueue_scripts', array( $this, 'enqueue' ), 100 ); - add_action( 'wp', array( $this, 'after_setup' ), 100 ); - - self::$instances++; - } - - } - - /** - * Add necessary scripts and styles. - * - * @since 1.7 - */ - public function enqueue() { - $options = self::get_options(); - - wp_add_inline_style( 'generate-style', self::build_css() ); - - if ( $options['parallax'] ) { - wp_enqueue_script( 'generate-hero-parallax', plugin_dir_url( __FILE__ ) . 'assets/js/parallax.min.js', array(), GP_PREMIUM_VERSION, true ); - wp_localize_script( - 'generate-hero-parallax', - 'hero', - array( - 'parallax' => apply_filters( 'generate_hero_parallax_speed', 2 ), - ) - ); - } - } - - /** - * Builds the HTML structure for Page Headers. - * - * @since 1.7 - */ - public function build_hero() { - $options = self::get_options(); - - if ( empty( $options['content'] ) ) { - return; - } - - $options['container_classes'] = implode( - ' ', - array( - 'page-hero', - 'contained' === $options['container'] ? 'grid-container grid-parent' : '', - $options['classes'], - ) - ); - - $options['inner_container_classes'] = implode( - ' ', - array( - 'inside-page-hero', - 'full-width' !== $options['inner_container'] ? 'grid-container grid-parent' : '', - ) - ); - - $options['content'] = self::template_tags( $options['content'] ); - $options['content'] = do_shortcode( $options['content'] ); - - // phpcs:ignore -- No escaping needed. - echo apply_filters( - 'generate_page_hero_output', - sprintf( - '
    -
    - %3$s -
    -
    ', - trim( $options['container_classes'] ), - trim( $options['inner_container_classes'] ), - $options['content'] - ), - $options - ); - } - - /** - * Builds all of our custom CSS for Page Headers. - * - * @since 1.7 - * - * @return string Dynamic CSS. - */ - public static function build_css() { - $options = self::get_options(); - - // Initiate our CSS class. - require_once GP_LIBRARY_DIRECTORY . 'class-make-css.php'; - $css = new GeneratePress_Pro_CSS(); - - $image_url = false; - if ( $options['background_image'] && function_exists( 'get_the_post_thumbnail_url' ) ) { - if ( 'featured-image' === $options['background_image'] ) { - if ( is_singular() ) { - $image_url = get_the_post_thumbnail_url( get_the_ID(), 'full' ); - } - - if ( ! $image_url ) { - $image_url = get_the_post_thumbnail_url( self::$post_id, 'full' ); - } - } - - if ( 'custom-image' === $options['background_image'] ) { - $image_url = get_the_post_thumbnail_url( self::$post_id, 'full' ); - } - } - - $image_url = apply_filters( 'generate_page_hero_background_image_url', $image_url, $options ); - - // Figure out desktop units. - $options['padding_top_unit'] = $options['padding_top_unit'] ? $options['padding_top_unit'] : 'px'; - $options['padding_right_unit'] = $options['padding_right_unit'] ? $options['padding_right_unit'] : 'px'; - $options['padding_bottom_unit'] = $options['padding_bottom_unit'] ? $options['padding_bottom_unit'] : 'px'; - $options['padding_left_unit'] = $options['padding_left_unit'] ? $options['padding_left_unit'] : 'px'; - - // Figure out mobile units. - $options['padding_top_unit_mobile'] = $options['padding_top_unit_mobile'] ? $options['padding_top_unit_mobile'] : 'px'; - $options['padding_right_unit_mobile'] = $options['padding_right_unit_mobile'] ? $options['padding_right_unit_mobile'] : 'px'; - $options['padding_bottom_unit_mobile'] = $options['padding_bottom_unit_mobile'] ? $options['padding_bottom_unit_mobile'] : 'px'; - $options['padding_left_unit_mobile'] = $options['padding_left_unit_mobile'] ? $options['padding_left_unit_mobile'] : 'px'; - - $padding_inside = false; - $using_flexbox = false; - - if ( function_exists( 'generate_is_using_flexbox' ) && generate_is_using_flexbox() ) { - $using_flexbox = true; - - if ( function_exists( 'generate_get_option' ) && 'text' === generate_get_option( 'container_alignment' ) ) { - $padding_inside = true; - } - } - - $css->set_selector( '.page-hero' ); - - if ( $options['background_color'] ) { - $css->add_property( 'background-color', esc_attr( $options['background_color'] ) ); - } - - if ( $image_url ) { - $css->add_property( 'background-image', 'url(' . esc_url( $image_url ) . ')' ); - $css->add_property( 'background-size', 'cover' ); - - if ( $options['background_color'] && $options['background_overlay'] ) { - $css->add_property( 'background-image', 'linear-gradient(0deg, ' . $options['background_color'] . ',' . $options['background_color'] . '), url(' . $image_url . ')' ); - } - - if ( $options['background_position'] ) { - $css->add_property( 'background-position', esc_attr( $options['background_position'] ) ); - } - - $css->add_property( 'background-repeat', 'no-repeat' ); - } - - if ( $options['text_color'] ) { - $css->add_property( 'color', esc_attr( $options['text_color'] ) ); - } - - if ( $options['padding_top'] ) { - $css->add_property( 'padding-top', absint( $options['padding_top'] ), false, esc_html( $options['padding_top_unit'] ) ); - } - - if ( $options['padding_right'] ) { - $css->add_property( 'padding-right', absint( $options['padding_right'] ), false, esc_html( $options['padding_right_unit'] ) ); - } - - if ( $options['padding_bottom'] ) { - $css->add_property( 'padding-bottom', absint( $options['padding_bottom'] ), false, esc_html( $options['padding_bottom_unit'] ) ); - } - - if ( $options['padding_left'] ) { - $css->add_property( 'padding-left', absint( $options['padding_left'] ), false, esc_html( $options['padding_left_unit'] ) ); - } - - if ( $options['horizontal_alignment'] ) { - $css->add_property( 'text-align', esc_html( $options['horizontal_alignment'] ) ); - } - - if ( ! $using_flexbox ) { - $css->add_property( 'box-sizing', 'border-box' ); - } - - if ( $options['site_header_merge'] && $options['full_screen'] ) { - $css->add_property( 'min-height', '100vh' ); - - if ( $options['vertical_alignment'] ) { - $css->add_property( 'display', '-webkit-flex' ); - $css->add_property( 'display', '-ms-flex' ); - $css->add_property( 'display', 'flex' ); - - if ( 'center' === $options['vertical_alignment'] ) { - $css->add_property( '-webkit-box', 'center' ); - $css->add_property( '-ms-flex-pack', 'center' ); - $css->add_property( 'justify-content', 'center' ); - } elseif ( 'bottom' === $options['vertical_alignment'] ) { - $css->add_property( '-webkit-box', 'end' ); - $css->add_property( '-ms-flex-pack', 'end' ); - $css->add_property( 'justify-content', 'flex-end' ); - } - - $css->add_property( '-webkit-box-orient', 'vertical' ); - $css->add_property( '-webkit-box-direction', 'normal' ); - $css->add_property( '-ms-flex-direction', 'column' ); - $css->add_property( 'flex-direction', 'column' ); - - $css->set_selector( '.page-hero .inside-page-hero' ); - $css->add_property( 'width', '100%' ); - } - } - - if ( $padding_inside && function_exists( 'generate_get_option' ) ) { - $container_width = generate_get_option( 'container_width' ); - $padding_right = '0px'; - $padding_left = '0px'; - - if ( $options['padding_right'] ) { - $padding_right = absint( $options['padding_right'] ) . $options['padding_right_unit']; - } - - if ( $options['padding_left'] ) { - $padding_left = absint( $options['padding_left'] ) . $options['padding_left_unit']; - } - - $css->set_selector( '.page-hero .inside-page-hero.grid-container' ); - - $css->add_property( - 'max-width', - sprintf( - 'calc(%1$s - %2$s - %3$s)', - $container_width . 'px', - $padding_right, - $padding_left - ) - ); - } - - $css->set_selector( '.page-hero h1, .page-hero h2, .page-hero h3, .page-hero h4, .page-hero h5, .page-hero h6' ); - if ( $options['text_color'] ) { - $css->add_property( 'color', esc_attr( $options['text_color'] ) ); - } - - $css->set_selector( '.inside-page-hero > *:last-child' ); - $css->add_property( 'margin-bottom', '0px' ); - - $css->set_selector( '.page-hero a, .page-hero a:visited' ); - - if ( $options['link_color'] ) { - $css->add_property( 'color', esc_attr( $options['link_color'] ) ); - } - - if ( $options['content'] ) { - $css->set_selector( '.page-hero time.updated' ); - $css->add_property( 'display', 'none' ); - } - - $css->set_selector( '.page-hero a:hover' ); - - if ( $options['link_color_hover'] ) { - $css->add_property( 'color', esc_attr( $options['link_color_hover'] ) ); - } - - if ( '' !== $options['site_header_merge'] ) { - if ( 'merge-desktop' === $options['site_header_merge'] ) { - $css->start_media_query( apply_filters( 'generate_not_mobile_media_query', '(min-width: 769px)' ) ); - } - - $header_background = $options['header_background_color'] ? $options['header_background_color'] : 'transparent'; - - if ( $options['site_header_height'] ) { - $css->set_selector( '.page-hero' ); - - if ( $options['padding_top'] ) { - $css->add_property( 'padding-top', 'calc(' . absint( $options['padding_top'] ) . esc_html( $options['padding_top_unit'] ) . ' + ' . absint( $options['site_header_height'] ) . 'px)' ); - } else { - $css->add_property( 'padding-top', absint( $options['site_header_height'] ), false, 'px' ); - } - } - - $css->set_selector( '.header-wrap' ); - $css->add_property( 'position', 'absolute' ); - $css->add_property( 'left', '0px' ); - $css->add_property( 'right', '0px' ); - $css->add_property( 'z-index', '10' ); - - $css->set_selector( '.header-wrap .site-header' ); - $css->add_property( 'background', $header_background ); - - $css->set_selector( '.header-wrap .main-title a, .header-wrap .main-title a:hover, .header-wrap .main-title a:visited' ); - $css->add_property( 'color', esc_attr( $options['header_title_color'] ) ); - - if ( ! GeneratePress_Elements_Helper::does_option_exist( 'navigation-as-header' ) ) { - $css->set_selector( '.header-wrap .mobile-header-navigation:not(.navigation-stick):not(.toggled) .main-title a, .header-wrap .mobile-header-navigation:not(.navigation-stick):not(.toggled) .main-title a:hover, .header-wrap .mobile-header-navigation:not(.navigation-stick):not(.toggled) .main-title a:visited' ); - $css->add_property( 'color', esc_attr( $options['header_title_color'] ) ); - } - - if ( function_exists( 'generate_get_color_defaults' ) ) { - $color_settings = wp_parse_args( - get_option( 'generate_settings', array() ), - generate_get_color_defaults() - ); - - if ( GeneratePress_Elements_Helper::does_option_exist( 'navigation-as-header' ) ) { - $css->set_selector( '.header-wrap .toggled .main-title a, .header-wrap .toggled .main-title a:hover, .header-wrap .toggled .main-title a:visited, .header-wrap .navigation-stick .main-title a, .header-wrap .navigation-stick .main-title a:hover, .header-wrap .navigation-stick .main-title a:visited' ); - $css->add_property( 'color', esc_attr( $color_settings['site_title_color'] ) ); - } - } - - $css->set_selector( '.header-wrap .site-description' ); - $css->add_property( 'color', esc_attr( $options['header_tagline_color'] ) ); - - if ( $options['navigation_colors'] ) { - $navigation_background = $options['navigation_background_color'] ? $options['navigation_background_color'] : 'transparent'; - $navigation_background_hover = $options['navigation_background_color_hover'] ? $options['navigation_background_color_hover'] : 'transparent'; - $navigation_background_current = $options['navigation_background_color_current'] ? $options['navigation_background_color_current'] : 'transparent'; - - $css->set_selector( '.header-wrap #site-navigation:not(.toggled), .header-wrap #mobile-header:not(.toggled):not(.navigation-stick), .has-inline-mobile-toggle .mobile-menu-control-wrapper' ); - $css->add_property( 'background', $navigation_background ); - - if ( function_exists( 'generate_is_using_flexbox' ) && generate_is_using_flexbox() ) { - $css->set_selector( '.header-wrap #site-navigation:not(.toggled) .main-nav > ul > li > a, .header-wrap #mobile-header:not(.toggled):not(.navigation-stick) .main-nav > ul > li > a, .header-wrap .main-navigation:not(.toggled):not(.navigation-stick) .menu-toggle, .header-wrap .main-navigation:not(.toggled):not(.navigation-stick) .menu-toggle:hover, .main-navigation:not(.toggled):not(.navigation-stick) .menu-bar-item:not(.close-search) > a' ); - } else { - $css->set_selector( '.header-wrap #site-navigation:not(.toggled) .main-nav > ul > li > a, .header-wrap #mobile-header:not(.toggled):not(.navigation-stick) .main-nav > ul > li > a, .header-wrap .main-navigation:not(.toggled):not(.navigation-stick) .menu-toggle, .header-wrap .main-navigation:not(.toggled):not(.navigation-stick) .menu-toggle:hover, .main-navigation:not(.toggled):not(.navigation-stick) .mobile-bar-items a, .main-navigation:not(.toggled):not(.navigation-stick) .mobile-bar-items a:hover, .main-navigation:not(.toggled):not(.navigation-stick) .mobile-bar-items a:focus' ); - } - - $css->add_property( 'color', esc_attr( $options['navigation_text_color'] ) ); - - if ( function_exists( 'generate_is_using_flexbox' ) && generate_is_using_flexbox() ) { - $css->set_selector( '.header-wrap #site-navigation:not(.toggled) .main-nav > ul > li:hover > a, .header-wrap #site-navigation:not(.toggled) .main-nav > ul > li:focus > a, .header-wrap #site-navigation:not(.toggled) .main-nav > ul > li.sfHover > a, .header-wrap #mobile-header:not(.toggled) .main-nav > ul > li:hover > a, .header-wrap #site-navigation:not(.toggled) .menu-bar-item:not(.close-search):hover > a, .header-wrap #mobile-header:not(.toggled) .menu-bar-item:not(.close-search):hover > a, .header-wrap #site-navigation:not(.toggled) .menu-bar-item:not(.close-search).sfHover > a, .header-wrap #mobile-header:not(.toggled) .menu-bar-item:not(.close-search).sfHover > a' ); - } else { - $css->set_selector( '.header-wrap #site-navigation:not(.toggled) .main-nav > ul > li:hover > a, .header-wrap #site-navigation:not(.toggled) .main-nav > ul > li:focus > a, .header-wrap #site-navigation:not(.toggled) .main-nav > ul > li.sfHover > a, .header-wrap #mobile-header:not(.toggled) .main-nav > ul > li:hover > a' ); - } - - $css->add_property( 'background', $navigation_background_hover ); - - if ( '' !== $options['navigation_text_color_hover'] ) { - $css->add_property( 'color', esc_attr( $options['navigation_text_color_hover'] ) ); - } else { - $css->add_property( 'color', esc_attr( $options['navigation_text_color'] ) ); - } - - $css->set_selector( '.header-wrap #site-navigation:not(.toggled) .main-nav > ul > li[class*="current-menu-"] > a, .header-wrap #mobile-header:not(.toggled) .main-nav > ul > li[class*="current-menu-"] > a, .header-wrap #site-navigation:not(.toggled) .main-nav > ul > li[class*="current-menu-"]:hover > a, .header-wrap #mobile-header:not(.toggled) .main-nav > ul > li[class*="current-menu-"]:hover > a' ); - $css->add_property( 'background', $navigation_background_current ); - - if ( '' !== $options['navigation_text_color_current'] ) { - $css->add_property( 'color', esc_attr( $options['navigation_text_color_current'] ) ); - } else { - $css->add_property( 'color', esc_attr( $options['navigation_text_color'] ) ); - } - } - - if ( $options['site_logo'] && GeneratePress_Elements_Helper::does_option_exist( 'navigation-as-header' ) ) { - $css->set_selector( '.main-navigation .site-logo, .main-navigation.toggled .page-hero-logo, .main-navigation.navigation-stick .page-hero-logo' ); - $css->add_property( 'display', 'none' ); - - $css->set_selector( '.main-navigation .page-hero-logo, .main-navigation.toggled .site-logo:not(.page-hero-logo), #mobile-header .mobile-header-logo' ); - $css->add_property( 'display', 'block' ); - - if ( ! GeneratePress_Elements_Helper::does_option_exist( 'sticky-navigation-logo' ) ) { - $css->set_selector( '.main-navigation.navigation-stick .site-logo:not(.page-hero-logo)' ); - $css->add_property( 'display', 'block' ); - - $css->set_selector( '.main-navigation.navigation-stick .page-hero-logo' ); - $css->add_property( 'display', 'none' ); - } - } - - if ( $options['navigation_logo'] && GeneratePress_Elements_Helper::does_option_exist( 'sticky-navigation' ) ) { - $css->set_selector( '#site-navigation:not(.navigation-stick):not(.toggled) .navigation-logo:not(.page-hero-navigation-logo)' ); - $css->add_property( 'display', 'none' ); - - $css->set_selector( '#sticky-navigation .page-hero-navigation-logo, #site-navigation.navigation-stick .page-hero-navigation-logo, #site-navigation.toggled .page-hero-navigation-logo' ); - $css->add_property( 'display', 'none' ); - } - - if ( $options['mobile_logo'] && GeneratePress_Elements_Helper::does_option_exist( 'mobile-logo' ) ) { - $css->set_selector( '#mobile-header:not(.navigation-stick):not(.toggled) .mobile-header-logo:not(.page-hero-mobile-logo)' ); - $css->add_property( 'display', 'none' ); - - $css->set_selector( '#mobile-header.navigation-stick .page-hero-mobile-logo, #mobile-header.toggled .page-hero-mobile-logo' ); - $css->add_property( 'display', 'none' ); - } - - if ( $options['site_logo'] && GeneratePress_Elements_Helper::does_option_exist( 'site-logo' ) ) { - $css->set_selector( '.site-logo:not(.page-hero-logo)' ); - $css->add_property( 'display', 'none' ); - } - - if ( 'merge-desktop' === $options['site_header_merge'] ) { - $css->stop_media_query(); - } - - if ( class_exists( 'Elementor\Plugin' ) ) { - $css->set_selector( '.elementor-editor-active .header-wrap' ); - $css->add_property( 'pointer-events', 'none' ); - } - } - - $css->start_media_query( generate_premium_get_media_query( 'mobile' ) ); - - $css->set_selector( '.page-hero' ); - - if ( $options['padding_top_mobile'] || '0' === $options['padding_top_mobile'] ) { - $css->add_property( 'padding-top', absint( $options['padding_top_mobile'] ), false, esc_html( $options['padding_top_unit_mobile'] ) ); - } - - if ( 'merge' === $options['site_header_merge'] && $options['site_header_height_mobile'] ) { - if ( $options['padding_top_mobile'] || '0' === $options['padding_top_mobile'] ) { - $css->add_property( 'padding-top', 'calc(' . absint( $options['padding_top_mobile'] ) . esc_html( $options['padding_top_unit_mobile'] ) . ' + ' . absint( $options['site_header_height_mobile'] ) . 'px)' ); - } elseif ( $options['padding_top'] ) { - $css->add_property( 'padding-top', 'calc(' . absint( $options['padding_top'] ) . esc_html( $options['padding_top_unit'] ) . ' + ' . absint( $options['site_header_height_mobile'] ) . 'px)' ); - } else { - $css->add_property( 'padding-top', absint( $options['site_header_height_mobile'] ), false, 'px' ); - } - } - - if ( $options['padding_right_mobile'] || '0' === $options['padding_right_mobile'] ) { - $css->add_property( 'padding-right', absint( $options['padding_right_mobile'] ), false, esc_html( $options['padding_right_unit_mobile'] ) ); - } - - if ( $options['padding_bottom_mobile'] || '0' === $options['padding_bottom_mobile'] ) { - $css->add_property( 'padding-bottom', absint( $options['padding_bottom_mobile'] ), false, esc_html( $options['padding_bottom_unit_mobile'] ) ); - } - - if ( $options['padding_left_mobile'] || '0' === $options['padding_left_mobile'] ) { - $css->add_property( 'padding-left', absint( $options['padding_left_mobile'] ), false, esc_html( $options['padding_left_unit_mobile'] ) ); - } - - if ( GeneratePress_Elements_Helper::does_option_exist( 'site-logo' ) && 'merge-desktop' === $options['site_header_merge'] ) { - $css->set_selector( '.inside-header .page-hero-logo, .main-navigation .page-hero-logo, #mobile-header .page-hero-mobile-logo' ); - $css->add_property( 'display', 'none' ); - } - - $css->stop_media_query(); - - return apply_filters( 'generate_page_hero_css_output', $css->css_output(), $options ); - } - - /** - * Put all of our meta options within an array. - * - * @since 1.7 - * - * @return array All Page Header options. - */ - public static function get_options() { - $post_id = self::$post_id; - - return apply_filters( - 'generate_hero_options', - array( - 'element_id' => $post_id, - 'content' => get_post_meta( $post_id, '_generate_element_content', true ), - 'classes' => get_post_meta( $post_id, '_generate_hero_custom_classes', true ), - 'container' => get_post_meta( $post_id, '_generate_hero_container', true ), - 'inner_container' => get_post_meta( $post_id, '_generate_hero_inner_container', true ), - 'horizontal_alignment' => get_post_meta( $post_id, '_generate_hero_horizontal_alignment', true ), - 'full_screen' => get_post_meta( $post_id, '_generate_hero_full_screen', true ), - 'vertical_alignment' => get_post_meta( $post_id, '_generate_hero_vertical_alignment', true ), - 'padding_top' => get_post_meta( $post_id, '_generate_hero_padding_top', true ), - 'padding_top_unit' => get_post_meta( $post_id, '_generate_hero_padding_top_unit', true ), - 'padding_right' => get_post_meta( $post_id, '_generate_hero_padding_right', true ), - 'padding_right_unit' => get_post_meta( $post_id, '_generate_hero_padding_right_unit', true ), - 'padding_bottom' => get_post_meta( $post_id, '_generate_hero_padding_bottom', true ), - 'padding_bottom_unit' => get_post_meta( $post_id, '_generate_hero_padding_bottom_unit', true ), - 'padding_left' => get_post_meta( $post_id, '_generate_hero_padding_left', true ), - 'padding_left_unit' => get_post_meta( $post_id, '_generate_hero_padding_left_unit', true ), - 'padding_top_mobile' => get_post_meta( $post_id, '_generate_hero_padding_top_mobile', true ), - 'padding_top_unit_mobile' => get_post_meta( $post_id, '_generate_hero_padding_top_unit_mobile', true ), - 'padding_right_mobile' => get_post_meta( $post_id, '_generate_hero_padding_right_mobile', true ), - 'padding_right_unit_mobile' => get_post_meta( $post_id, '_generate_hero_padding_right_unit_mobile', true ), - 'padding_bottom_mobile' => get_post_meta( $post_id, '_generate_hero_padding_bottom_mobile', true ), - 'padding_bottom_unit_mobile' => get_post_meta( $post_id, '_generate_hero_padding_bottom_unit_mobile', true ), - 'padding_left_mobile' => get_post_meta( $post_id, '_generate_hero_padding_left_mobile', true ), - 'padding_left_unit_mobile' => get_post_meta( $post_id, '_generate_hero_padding_left_unit_mobile', true ), - 'background_image' => get_post_meta( $post_id, '_generate_hero_background_image', true ), - 'disable_featured_image' => get_post_meta( $post_id, '_generate_hero_disable_featured_image', true ), - 'background_overlay' => get_post_meta( $post_id, '_generate_hero_background_overlay', true ), - 'background_position' => get_post_meta( $post_id, '_generate_hero_background_position', true ), - 'parallax' => get_post_meta( $post_id, '_generate_hero_background_parallax', true ), - 'background_color' => get_post_meta( $post_id, '_generate_hero_background_color', true ), - 'text_color' => get_post_meta( $post_id, '_generate_hero_text_color', true ), - 'link_color' => get_post_meta( $post_id, '_generate_hero_link_color', true ), - 'link_color_hover' => get_post_meta( $post_id, '_generate_hero_background_link_color_hover', true ), - 'site_header_merge' => get_post_meta( $post_id, '_generate_site_header_merge', true ), - 'site_header_height' => get_post_meta( $post_id, '_generate_site_header_height', true ), - 'site_header_height_mobile' => get_post_meta( $post_id, '_generate_site_header_height_mobile', true ), - 'site_logo' => get_post_meta( $post_id, '_generate_site_logo', true ), - 'retina_logo' => get_post_meta( $post_id, '_generate_retina_logo', true ), - 'navigation_logo' => get_post_meta( $post_id, '_generate_navigation_logo', true ), - 'mobile_logo' => get_post_meta( $post_id, '_generate_mobile_logo', true ), - 'navigation_location' => get_post_meta( $post_id, '_generate_navigation_location', true ), - 'header_background_color' => get_post_meta( $post_id, '_generate_site_header_background_color', true ), - 'header_title_color' => get_post_meta( $post_id, '_generate_site_header_title_color', true ), - 'header_tagline_color' => get_post_meta( $post_id, '_generate_site_header_tagline_color', true ), - 'navigation_colors' => get_post_meta( $post_id, '_generate_navigation_colors', true ), - 'navigation_background_color' => get_post_meta( $post_id, '_generate_navigation_background_color', true ), - 'navigation_text_color' => get_post_meta( $post_id, '_generate_navigation_text_color', true ), - 'navigation_background_color_hover' => get_post_meta( $post_id, '_generate_navigation_background_color_hover', true ), - 'navigation_text_color_hover' => get_post_meta( $post_id, '_generate_navigation_text_color_hover', true ), - 'navigation_background_color_current' => get_post_meta( $post_id, '_generate_navigation_background_color_current', true ), - 'navigation_text_color_current' => get_post_meta( $post_id, '_generate_navigation_text_color_current', true ), - ) - ); - } - - /** - * Does the bulk of the work after everything has initialized. - * - * @since 1.7 - */ - public function after_setup() { - $options = self::get_options(); - - if ( $options['disable_featured_image'] && is_singular() ) { - remove_action( 'generate_after_entry_header', 'generate_blog_single_featured_image' ); - remove_action( 'generate_before_content', 'generate_blog_single_featured_image' ); - remove_action( 'generate_after_header', 'generate_blog_single_featured_image' ); - remove_action( 'generate_before_content', 'generate_featured_page_header_inside_single' ); - remove_action( 'generate_after_header', 'generate_featured_page_header' ); - } - - if ( $options['site_logo'] && GeneratePress_Elements_Helper::does_option_exist( 'site-logo' ) ) { - if ( '' !== $options['site_header_merge'] ) { - add_action( 'generate_after_logo', array( $this, 'add_site_logo' ) ); - } else { - add_filter( 'theme_mod_custom_logo', array( $this, 'replace_logo' ) ); - - if ( $options['retina_logo'] && GeneratePress_Elements_Helper::does_option_exist( 'retina-logo' ) ) { - add_filter( 'generate_retina_logo', array( $this, 'replace_logo' ) ); - } - } - } - - if ( $options['navigation_logo'] && GeneratePress_Elements_Helper::does_option_exist( 'navigation-logo' ) ) { - if ( $options['site_header_merge'] && GeneratePress_Elements_Helper::does_option_exist( 'sticky-navigation' ) ) { - add_action( 'generate_inside_navigation', array( $this, 'add_navigation_logo' ) ); - } else { - add_filter( 'generate_navigation_logo', array( $this, 'replace_logo' ) ); - } - } - - if ( $options['mobile_logo'] && GeneratePress_Elements_Helper::does_option_exist( 'mobile-logo' ) ) { - if ( 'merge' === $options['site_header_merge'] ) { - add_action( 'generate_inside_mobile_header', array( $this, 'add_mobile_header_logo' ) ); - } else { - add_filter( 'generate_mobile_header_logo', array( $this, 'replace_logo' ) ); - } - } - - if ( $options['navigation_location'] ) { - add_filter( 'generate_navigation_location', array( $this, 'navigation_location' ) ); - } - - if ( '' !== $options['site_header_merge'] ) { - add_action( 'generate_before_header', array( $this, 'merged_header_start' ), 1 ); - add_action( 'generate_after_header', array( $this, 'merged_header_end' ), 8 ); - - if ( 'contained' === $options['container'] ) { - add_filter( 'generate_header_class', array( $this, 'site_header_classes' ) ); - } - } - - if ( $options['content'] ) { - self::remove_template_elements(); - } - } - - /** - * Returns our custom logos if set within the Page Header. - * - * @since 1.7 - * - * @return string New URLs to images. - */ - public static function replace_logo() { - $filter = current_filter(); - $options = self::get_options(); - - if ( 'theme_mod_custom_logo' === $filter ) { - return $options['site_logo']; - } - - if ( 'generate_retina_logo' === $filter ) { - return wp_get_attachment_url( $options['retina_logo'] ); - } - - if ( 'generate_navigation_logo' === $filter ) { - return wp_get_attachment_url( $options['navigation_logo'] ); - } - - if ( 'generate_mobile_header_logo' === $filter ) { - return wp_get_attachment_url( $options['mobile_logo'] ); - } - } - - /** - * Adds a new site logo element if our header is merged on desktop only. - * - * @since 1.7 - */ - public static function add_site_logo() { - $options = self::get_options(); - - $logo_url = wp_get_attachment_url( $options['site_logo'] ); - $retina_logo_url = wp_get_attachment_url( $options['retina_logo'] ); - - if ( ! $logo_url ) { - return; - } - - $attr = apply_filters( - 'generate_page_hero_logo_attributes', - array( - 'class' => 'header-image is-logo-image', - 'alt' => esc_attr( apply_filters( 'generate_logo_title', get_bloginfo( 'name', 'display' ) ) ), - 'src' => $logo_url, - 'title' => esc_attr( apply_filters( 'generate_logo_title', get_bloginfo( 'name', 'display' ) ) ), - ) - ); - - if ( '' !== $retina_logo_url ) { - $attr['srcset'] = $logo_url . ' 1x, ' . $retina_logo_url . ' 2x'; - - // Add dimensions to image if retina is set. This fixes a container width bug in Firefox. - $data = wp_get_attachment_metadata( $options['site_logo'] ); - - if ( ! empty( $data ) ) { - $attr['width'] = $data['width']; - $attr['height'] = $data['height']; - } - } - - $attr = array_map( 'esc_attr', $attr ); - $html_attr = ''; - - foreach ( $attr as $name => $value ) { - $html_attr .= " $name=" . '"' . $value . '"'; - } - - // phpcs:ignore -- Escaping not needed. - echo apply_filters( - 'generate_page_hero_logo_output', - sprintf( - '', - esc_url( apply_filters( 'generate_logo_href', home_url( '/' ) ) ), - esc_attr( apply_filters( 'generate_logo_title', get_bloginfo( 'name', 'display' ) ) ), - $html_attr - ), - $logo_url, - $html_attr - ); - } - - /** - * Adds the custom navigation logo if needed. - * Only needed if there's a sticky navigation. - * - * @since 1.7 - */ - public static function add_navigation_logo() { - $options = self::get_options(); - - printf( - '', - esc_url( apply_filters( 'generate_logo_href', home_url( '/' ) ) ), - esc_attr( apply_filters( 'generate_logo_title', get_bloginfo( 'name', 'display' ) ) ), - esc_url( wp_get_attachment_url( $options['navigation_logo'] ) ), - esc_attr( apply_filters( 'generate_logo_title', get_bloginfo( 'name', 'display' ) ) ) - ); - } - - /** - * Adds the custom mobile header if needed. - * Only needed if there's a sticky navigation. - * - * @since 1.7 - */ - public static function add_mobile_header_logo() { - $options = self::get_options(); - - if ( 'title' === GeneratePress_Elements_Helper::does_option_exist( 'mobile-header-branding' ) ) { - return; - } - - printf( - '', - esc_url( apply_filters( 'generate_logo_href', home_url( '/' ) ) ), - esc_attr( apply_filters( 'generate_logo_title', get_bloginfo( 'name', 'display' ) ) ), - esc_url( wp_get_attachment_url( $options['mobile_logo'] ) ), - esc_attr( apply_filters( 'generate_logo_title', get_bloginfo( 'name', 'display' ) ) ) - ); - } - - /** - * Set the navigation location if set. - * - * @since 1.7 - * - * @return string The navigation location. - */ - public static function navigation_location() { - $options = self::get_options(); - - if ( 'no-navigation' === $options['navigation_location'] ) { - return ''; - } else { - return $options['navigation_location']; - } - } - - /** - * The opening merged header element. - * - * @since 1.7 - */ - public static function merged_header_start() { - echo '
    '; - } - - /** - * The closing merged header element. - * - * @since 1.7 - */ - public static function merged_header_end() { - echo '
    '; - } - - /** - * Adds classes to the site header. - * - * @since 1.7 - * - * @param array $classes Existing classes. - * @return array New classes. - */ - public static function site_header_classes( $classes ) { - $classes[] = 'grid-container'; - $classes[] = 'grid-parent'; - - return $classes; - } - - /** - * Checks if template tags exist, and removes those elements from elsewhere. - * - * @since 1.7 - */ - public static function remove_template_elements() { - $options = self::get_options(); - - if ( strpos( $options['content'], '{{post_title}}' ) !== false ) { - if ( is_singular() ) { - add_filter( 'generate_show_title', '__return_false' ); - } - - remove_action( 'generate_archive_title', 'generate_archive_title' ); - remove_filter( 'get_the_archive_title', 'generate_filter_the_archive_title' ); - add_filter( 'post_class', array( self::$hero, 'remove_hentry' ) ); - } - - if ( strpos( $options['content'], '{{post_date}}' ) !== false ) { - add_filter( 'generate_post_date', '__return_false' ); - add_filter( 'post_class', array( self::$hero, 'remove_hentry' ) ); - } - - if ( strpos( $options['content'], '{{post_author}}' ) !== false ) { - add_filter( 'generate_post_author', '__return_false' ); - add_filter( 'post_class', array( self::$hero, 'remove_hentry' ) ); - } - - if ( strpos( $options['content'], '{{post_terms.category}}' ) !== false ) { - add_filter( 'generate_show_categories', '__return_false' ); - } - - if ( strpos( $options['content'], '{{post_terms.post_tag}}' ) !== false ) { - add_filter( 'generate_show_tags', '__return_false' ); - } - } - - /** - * Checks for template tags and replaces them. - * - * @since 1.7 - * - * @param string $content The content to check. - * @return mixed The content with the template tags replaced. - */ - public static function template_tags( $content ) { - $search = array(); - $replace = array(); - - $search[] = '{{post_title}}'; - $post_title = ''; - - if ( is_singular() ) { - $post_title = get_the_title(); - } elseif ( is_tax() || is_category() || is_tag() ) { - $post_title = get_queried_object()->name; - } elseif ( is_post_type_archive() ) { - $post_title = post_type_archive_title( '', false ); - } elseif ( is_archive() && function_exists( 'get_the_archive_title' ) ) { - $post_title = get_the_archive_title(); - - if ( is_author() ) { - $post_title = get_the_author(); - } - } elseif ( is_home() ) { - $post_title = __( 'Blog', 'gp-premium' ); - } - - $replace[] = apply_filters( 'generate_page_hero_post_title', $post_title ); - - if ( is_singular() ) { - $time_string = ''; - if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) { - $time_string = '' . $time_string; - } - - $time_string = sprintf( - $time_string, - esc_attr( get_the_date( 'c' ) ), - esc_html( get_the_date() ), - esc_attr( get_the_modified_date( 'c' ) ), - esc_html( get_the_modified_date() ) - ); - - $search[] = '{{post_date}}'; - $replace[] = apply_filters( 'generate_page_hero_post_date', $time_string ); - - // Author. - global $post; - $author_id = $post->post_author; - - $author = sprintf( - '', - esc_url( get_author_posts_url( $author_id ) ), - /* translators: author name */ - esc_attr( sprintf( __( 'View all posts by %s', 'gp-premium' ), get_the_author_meta( 'display_name', $author_id ) ) ), - esc_html( get_the_author_meta( 'display_name', $author_id ) ) - ); - - $search[] = '{{post_author}}'; - $replace[] = apply_filters( 'generate_page_hero_post_author', $author ); - - // Post terms. - if ( strpos( $content, '{{post_terms' ) !== false ) { - $data = preg_match_all( '/{{post_terms.([^}]*)}}/', $content, $matches ); - foreach ( $matches[1] as $match ) { - $search[] = '{{post_terms.' . $match . '}}'; - $terms = get_the_term_list( get_the_ID(), $match, apply_filters( 'generate_page_hero_terms_before', '' ), apply_filters( 'generate_page_hero_terms_separator', ', ' ), apply_filters( 'generate_page_hero_terms_after', '' ) ); - - if ( ! is_wp_error( $terms ) ) { - $replace[] = $terms; - } - } - } - - // Custom field. - if ( strpos( $content, '{{custom_field' ) !== false ) { - $data = preg_match_all( '/{{custom_field.([^}]*)}}/', $content, $matches ); - foreach ( $matches[1] as $match ) { - if ( null !== get_post_meta( get_the_ID(), $match, true ) && '_thumbnail_id' !== $match ) { - $search[] = '{{custom_field.' . $match . '}}'; - $value = get_post_meta( get_the_ID(), $match, true ); - add_filter( 'wp_kses_allowed_html', [ 'GeneratePress_Elements_Helper', 'expand_allowed_html' ], 10, 2 ); - $value = wp_kses_post( $value ); - remove_filter( 'wp_kses_allowed_html', [ 'GeneratePress_Elements_Helper', 'expand_allowed_html' ], 10, 2 ); - $replace[] = $value; - } - } - - $thumbnail_id = get_post_meta( get_the_ID(), '_thumbnail_id', true ); - if ( null !== $thumbnail_id ) { - $search[] = '{{custom_field._thumbnail_id}}'; - $replace[] = wp_get_attachment_image( $thumbnail_id, apply_filters( 'generate_hero_thumbnail_id_size', 'medium' ) ); - } - } - } - - // Taxonomy description. - if ( is_tax() || is_category() || is_tag() ) { - if ( strpos( $content, '{{custom_field' ) !== false ) { - $search[] = '{{custom_field.description}}'; - $replace[] = term_description( get_queried_object()->term_id, get_queried_object()->taxonomy ); - } - } - - return str_replace( $search, $replace, $content ); - } - - /** - * When the post title, author or date are in the Page Hero, they appear outside of the - * hentry element. This causes errors in Google Search Console. - * - * @since 1.7 - * - * @param array $classes Existing classes. - * @return array - */ - public function remove_hentry( $classes ) { - $classes = array_diff( $classes, array( 'hentry' ) ); - - return $classes; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-hooks.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-hooks.php deleted file mode 100644 index dca87caa..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-hooks.php +++ /dev/null @@ -1,223 +0,0 @@ -hook = get_post_meta( $post_id, '_generate_hook', true ); - - if ( empty( $this->hook ) ) { - return; - } - - $this->content = get_post_meta( $post_id, '_generate_element_content', true ); - - if ( get_post_meta( $post_id, '_generate_custom_hook', true ) ) { - $this->custom_hook = get_post_meta( $post_id, '_generate_custom_hook', true ); - } - - if ( get_post_meta( $post_id, '_generate_hook_disable_site_header', true ) ) { - $this->disable_site_header = get_post_meta( $post_id, '_generate_hook_disable_site_header', true ); - } - - if ( get_post_meta( $post_id, '_generate_hook_disable_site_footer', true ) ) { - $this->disable_site_footer = get_post_meta( $post_id, '_generate_hook_disable_site_footer', true ); - } - - if ( get_post_meta( $post_id, '_generate_hook_priority', true ) || '0' === get_post_meta( $post_id, '_generate_hook_priority', true ) ) { - $this->priority = get_post_meta( $post_id, '_generate_hook_priority', true ); - } - - if ( get_post_meta( $post_id, '_generate_hook_execute_php', true ) ) { - $this->php = get_post_meta( $post_id, '_generate_hook_execute_php', true ); - } - - if ( get_post_meta( $post_id, '_generate_hook_execute_shortcodes', true ) ) { - $this->shortcodes = get_post_meta( $post_id, '_generate_hook_execute_shortcodes', true ); - } - - if ( get_post_meta( $post_id, '_generate_element_display_conditions', true ) ) { - $this->conditional = get_post_meta( $post_id, '_generate_element_display_conditions', true ); - } - - if ( get_post_meta( $post_id, '_generate_element_exclude_conditions', true ) ) { - $this->exclude = get_post_meta( $post_id, '_generate_element_exclude_conditions', true ); - } - - if ( get_post_meta( $post_id, '_generate_element_user_conditions', true ) ) { - $this->users = get_post_meta( $post_id, '_generate_element_user_conditions', true ); - } - - if ( 'custom' === $this->hook && $this->custom_hook ) { - $this->hook = $this->custom_hook; - } - - $display = apply_filters( 'generate_hook_element_display', GeneratePress_Conditions::show_data( $this->conditional, $this->exclude, $this->users ), $post_id ); - - /** - * Simplify filter name. - * - * @since 2.0.0 - */ - $display = apply_filters( - 'generate_element_display', - $display, - $post_id - ); - - if ( $display ) { - global $generate_elements; - - $generate_elements[ $post_id ] = array( - 'is_block_element' => false, - 'type' => 'hook', - 'id' => $post_id, - ); - - if ( 'generate_header' === $this->hook && $this->disable_site_header ) { - remove_action( 'generate_header', 'generate_construct_header' ); - } - - if ( 'generate_footer' === $this->hook && $this->disable_site_footer ) { - remove_action( 'generate_footer', 'generate_construct_footer' ); - add_filter( 'generate_footer_widgets', '__return_null' ); - } - - add_action( esc_attr( $this->hook ), array( $this, 'execute_hook' ), absint( $this->priority ) ); - } - - } - - /** - * Output our hook content. - * - * @since 1.7 - */ - public function execute_hook() { - - $content = $this->content; - - if ( $this->shortcodes ) { - $content = do_shortcode( $content ); - } - - if ( $this->php && GeneratePress_Elements_Helper::should_execute_php() ) { - ob_start(); - eval( '?>' . $content . 'conditional = get_post_meta( $post_id, '_generate_element_display_conditions', true ); - } - - if ( get_post_meta( $post_id, '_generate_element_exclude_conditions', true ) ) { - $this->exclude = get_post_meta( $post_id, '_generate_element_exclude_conditions', true ); - } - - if ( get_post_meta( $post_id, '_generate_element_user_conditions', true ) ) { - $this->users = get_post_meta( $post_id, '_generate_element_user_conditions', true ); - } - - if ( get_post_meta( $post_id, '_generate_sidebar_layout', true ) ) { - $this->sidebar_layout = get_post_meta( $post_id, '_generate_sidebar_layout', true ); - } - - if ( get_post_meta( $post_id, '_generate_footer_widgets', true ) ) { - $this->footer_widgets = get_post_meta( $post_id, '_generate_footer_widgets', true ); - } - - if ( get_post_meta( $post_id, '_generate_disable_site_header', true ) ) { - $this->disable_site_header = get_post_meta( $post_id, '_generate_disable_site_header', true ); - } - - if ( get_post_meta( $post_id, '_generate_disable_mobile_header', true ) ) { - $this->disable_mobile_header = get_post_meta( $post_id, '_generate_disable_mobile_header', true ); - } - - if ( get_post_meta( $post_id, '_generate_disable_top_bar', true ) ) { - $this->disable_top_bar = get_post_meta( $post_id, '_generate_disable_top_bar', true ); - } - - if ( get_post_meta( $post_id, '_generate_disable_primary_navigation', true ) ) { - $this->disable_primary_navigation = get_post_meta( $post_id, '_generate_disable_primary_navigation', true ); - } - - if ( get_post_meta( $post_id, '_generate_disable_secondary_navigation', true ) ) { - $this->disable_secondary_navigation = get_post_meta( $post_id, '_generate_disable_secondary_navigation', true ); - } - - if ( get_post_meta( $post_id, '_generate_disable_featured_image', true ) ) { - $this->disable_featured_image = get_post_meta( $post_id, '_generate_disable_featured_image', true ); - } - - if ( get_post_meta( $post_id, '_generate_disable_content_title', true ) ) { - $this->disable_content_title = get_post_meta( $post_id, '_generate_disable_content_title', true ); - } - - if ( get_post_meta( $post_id, '_generate_disable_footer', true ) ) { - $this->disable_footer = get_post_meta( $post_id, '_generate_disable_footer', true ); - } - - if ( get_post_meta( $post_id, '_generate_content_area', true ) ) { - $this->content_area = get_post_meta( $post_id, '_generate_content_area', true ); - } - - if ( get_post_meta( $post_id, '_generate_content_width', true ) ) { - $this->content_width = get_post_meta( $post_id, '_generate_content_width', true ); - } - - $display = apply_filters( 'generate_layout_element_display', GeneratePress_Conditions::show_data( $this->conditional, $this->exclude, $this->users ), $post_id ); - - /** - * Simplify filter name. - * - * @since 2.0.0 - */ - $display = apply_filters( - 'generate_element_display', - $display, - $post_id - ); - - if ( $display ) { - global $generate_elements; - - $generate_elements[ $post_id ] = array( - 'is_block_element' => false, - 'type' => 'layout', - 'id' => $post_id, - ); - - add_action( 'wp', array( $this, 'after_setup' ), 100 ); - add_action( 'wp_enqueue_scripts', array( $this, 'build_css' ), 50 ); - - if ( is_admin() ) { - add_action( 'current_screen', array( $this, 'after_setup' ), 100 ); - add_action( 'enqueue_block_editor_assets', array( $this, 'build_css' ), 50 ); - } - } - - } - - /** - * Return our available options. - * - * @since 1.7 - * @deprecated 1.7.3 - * - * @return array - */ - public static function get_options() { - return false; - } - - /** - * Initiate our set layout changes. - * - * @since 1.7 - */ - public function after_setup() { - if ( $this->sidebar_layout && ! self::post_meta_exists( '_generate-sidebar-layout-meta' ) ) { - add_filter( 'generate_sidebar_layout', array( $this, 'filter_options' ) ); - } - - if ( $this->footer_widgets && ! self::post_meta_exists( '_generate-footer-widget-meta' ) ) { - add_filter( 'generate_footer_widgets', array( $this, 'filter_options' ) ); - } - - if ( $this->disable_site_header ) { - remove_action( 'generate_header', 'generate_construct_header' ); - } - - if ( $this->disable_mobile_header ) { - remove_action( 'generate_after_header', 'generate_menu_plus_mobile_header', 5 ); - } - - if ( $this->disable_top_bar ) { - remove_action( 'generate_before_header', 'generate_top_bar', 5 ); - remove_action( 'generate_inside_secondary_navigation', 'generate_secondary_nav_top_bar_widget', 5 ); - } - - if ( $this->disable_primary_navigation ) { - add_filter( 'generate_navigation_location', '__return_false', 20 ); - add_filter( 'generate_disable_mobile_header_menu', '__return_true' ); - } - - if ( $this->disable_secondary_navigation ) { - add_filter( 'has_nav_menu', array( $this, 'disable_secondary_navigation' ), 10, 2 ); - } - - if ( $this->disable_featured_image ) { - remove_action( 'generate_after_entry_header', 'generate_blog_single_featured_image' ); - remove_action( 'generate_before_content', 'generate_blog_single_featured_image' ); - remove_action( 'generate_after_header', 'generate_blog_single_featured_image' ); - remove_action( 'generate_before_content', 'generate_featured_page_header_inside_single' ); - remove_action( 'generate_after_header', 'generate_featured_page_header' ); - add_filter( 'body_class', array( $this, 'remove_featured_image_class' ), 20 ); - } - - if ( $this->disable_content_title ) { - add_filter( 'generate_show_title', '__return_false' ); - } - - if ( $this->disable_footer ) { - remove_action( 'generate_footer', 'generate_construct_footer' ); - add_filter( 'generate_footer_widgets', '__return_null' ); - } - - if ( $this->content_area ) { - add_filter( 'body_class', array( $this, 'body_classes' ) ); - } - - if ( is_admin() ) { - if ( $this->sidebar_layout && ! self::admin_post_meta_exists( '_generate-sidebar-layout-meta' ) ) { - add_filter( 'generate_block_editor_sidebar_layout', array( $this, 'filter_options' ) ); - } - - if ( $this->disable_content_title ) { - add_filter( 'generate_block_editor_show_content_title', '__return_false' ); - } - - if ( $this->content_area ) { - add_filter( 'generate_block_editor_content_area_type', array( $this, 'set_editor_content_area' ) ); - } - - if ( $this->content_width ) { - add_filter( 'generate_block_editor_container_width', array( $this, 'set_editor_content_width' ) ); - } - } - } - - /** - * Build dynamic CSS - */ - public function build_css() { - if ( $this->content_width ) { - wp_add_inline_style( 'generate-style', '#content {max-width: ' . absint( $this->content_width ) . 'px;margin-left: auto;margin-right: auto;}' ); - } - - if ( is_admin() ) { - $admin_css = ''; - - if ( version_compare( generate_premium_get_theme_version(), '3.2.0-alpha.1', '<' ) ) { - if ( 'full-width' === $this->content_area ) { - $admin_css .= 'html .editor-styles-wrapper .wp-block{max-width: 100%}'; - } - - if ( $this->content_width ) { - $admin_css .= 'html .editor-styles-wrapper .wp-block{max-width: ' . absint( $this->content_width ) . 'px;}'; - } - } - - if ( $this->content_area ) { - $admin_css .= '#generate-layout-page-builder-container {opacity: 0.5;pointer-events: none;}'; - } - - if ( $admin_css ) { - wp_add_inline_style( 'wp-edit-blocks', $admin_css ); - } - } - } - - /** - * Check to see if our individual post metabox has a value. - * - * @since 1.7 - * - * @param string $meta The meta key we're checking for. - * @return bool - */ - public static function post_meta_exists( $meta ) { - if ( ! is_singular() ) { - return false; - } - - $value = get_post_meta( get_the_ID(), $meta, true ); - - if ( '_generate-footer-widget-meta' === $meta && '0' === $value ) { - $value = true; - } - - if ( $value ) { - return true; - } - - return false; - } - - /** - * Check to see if our individual post metabox has a value in the admin area. - * - * @since 1.11.0 - * - * @param string $meta The meta key we're checking for. - * @return bool - */ - public static function admin_post_meta_exists( $meta ) { - if ( is_admin() ) { - $current_screen = get_current_screen(); - - if ( isset( $current_screen->is_block_editor ) && $current_screen->is_block_editor ) { - $post_id = false; - - if ( isset( $_GET['post'] ) ) { // phpcs:ignore -- No data processing happening here. - $post_id = absint( $_GET['post'] ); // phpcs:ignore -- No data processing happening here. - } - - if ( $post_id ) { - $value = get_post_meta( $post_id, $meta, true ); - - if ( '_generate-footer-widget-meta' === $meta && '0' === $value ) { - $value = true; - } - - if ( $value ) { - return true; - } - } else { - return false; - } - } - } - } - - /** - * Filter our filterable options. - * - * @since 1.7 - */ - public function filter_options() { - $filter = current_filter(); - - if ( 'generate_sidebar_layout' === $filter || 'generate_block_editor_sidebar_layout' === $filter ) { - return $this->sidebar_layout; - } - - if ( 'generate_footer_widgets' === $filter ) { - if ( 'no-widgets' === $this->footer_widgets ) { - return 0; - } else { - return $this->footer_widgets; - } - } - } - - /** - * Set the content area type in the editor. - * - * @param string $area Content area type. - */ - public function set_editor_content_area( $area ) { - if ( 'full-width' === $this->content_area ) { - $area = 'true'; - } - - if ( 'contained-container' === $this->content_area ) { - $area = 'contained'; - } - - return $area; - } - - /** - * Set the content width in the editor. - * - * @param string $width Content width with unit. - */ - public function set_editor_content_width( $width ) { - if ( $this->content_width ) { - $width = absint( $this->content_width ) . 'px'; - } - - return $width; - } - - /** - * Disable the Secondary Navigation if set. - * - * @since 1.7 - * - * @param bool $has_nav_menu The existing value. - * @param string $location The location we're checking. - * @return bool - */ - public static function disable_secondary_navigation( $has_nav_menu, $location ) { - if ( 'secondary' === $location ) { - return false; - } - - return $has_nav_menu; - } - - /** - * Sets any necessary body classes. - * - * @since 1.7 - * - * @param array $classes Our existing body classes. - * @return array Our new set of classes. - */ - public function body_classes( $classes ) { - if ( 'full-width' === $this->content_area ) { - $classes[] = 'full-width-content'; - } - - if ( 'contained' === $this->content_area ) { - $classes[] = 'contained-content'; - } - - return $classes; - } - - /** - * Remove the featured image class if it's disabled. - * - * @since 2.1.0 - * @param array $classes The body classes. - */ - public function remove_featured_image_class( $classes ) { - if ( is_singular() ) { - $classes = generate_premium_remove_featured_image_class( $classes, $this->disable_featured_image ); - } - - return $classes; - } - -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-metabox.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-metabox.php deleted file mode 100644 index 4d121d9e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/elements/class-metabox.php +++ /dev/null @@ -1,2245 +0,0 @@ -is_block_editor ) ) { - $element_type = 'block'; - } - } - } - - return $element_type; - } - - /** - * Add a body class if we're using the Header element type. - * We do this so we can hide the Template Tags metabox for other types. - * - * @since 1.7 - * - * @param string $classes Existing classes. - * @return string - */ - public function body_class( $classes ) { - if ( 'gp_elements' === get_post_type() ) { - $element_type = self::get_element_type(); - - if ( $element_type ) { - $classes .= ' ' . $element_type . '-element-type'; - } else { - $classes .= ' no-element-type'; - } - - if ( 'header' === $element_type && get_post_meta( get_the_ID(), '_generate_element_content', true ) ) { - $classes .= ' element-has-page-hero'; - } - - $block_type = get_post_meta( get_the_ID(), '_generate_block_type', true ); - - if ( $block_type ) { - if ( 'content-template' === $block_type && get_post_meta( get_the_ID(), '_generate_use_theme_post_container', true ) ) { - $classes .= ' using-theme-post-container'; - } - - if ( ( 'archive-navigation-template' === $block_type || 'post-navigation-template' === $block_type ) && get_post_meta( get_the_ID(), '_generate_use_archive_navigation_container', true ) ) { - $classes .= ' using-theme-pagination-container'; - } - - $classes .= ' ' . $block_type . '-block-type'; - } - } - - return $classes; - } - - /** - * Enqueue any necessary scripts and styles. - * - * @since 1.7 - * - * @param string $hook The current page hook. - */ - public function scripts( $hook ) { - if ( in_array( $hook, array( 'post.php', 'post-new.php' ) ) ) { - if ( 'gp_elements' === get_post_type() ) { - $element_type = get_post_meta( get_the_ID(), '_generate_element_type', true ); - - // Remove autosave when dealing with non-content Elements. - // phpcs:ignore -- No data processing happening. - if ( 'block' !== $element_type || ( isset( $_GET['element_type'] ) && 'block' !== $_GET['element_type'] ) ) { - wp_dequeue_script( 'autosave' ); - } - - $deps = array( 'jquery' ); - - if ( function_exists( 'wp_enqueue_code_editor' ) ) { - $settings = wp_enqueue_code_editor( - array( - 'type' => 'application/x-httpd-php', - 'codemirror' => array( - 'indentUnit' => 2, - 'tabSize' => 2, - ), - ) - ); - - $deps[] = 'code-editor'; - } else { - $settings = false; - } - - $element_type = self::get_element_type(); - - wp_enqueue_script( 'generate-elements-metabox', plugin_dir_url( __FILE__ ) . 'assets/admin/metabox.js', $deps, GP_PREMIUM_VERSION, true ); - - wp_localize_script( - 'generate-elements-metabox', - 'elements', - array( - 'nonce' => wp_create_nonce( 'generate-elements-location' ), - 'settings' => $settings ? wp_json_encode( $settings ) : false, - 'type' => $element_type, - 'custom_image' => __( 'Custom Image', 'gp-premium' ), - 'fallback_image' => __( 'Fallback Image', 'gp-premium' ), - 'choose' => __( 'Choose...', 'gp-premium' ), - 'showID' => apply_filters( 'generate_elements_show_object_ids', false ), - ) - ); - - wp_enqueue_style( 'generate-elements-metabox', plugin_dir_url( __FILE__ ) . 'assets/admin/metabox.css', array(), GP_PREMIUM_VERSION ); - wp_enqueue_style( 'generate-elements-balloon', plugin_dir_url( __FILE__ ) . 'assets/admin/balloon.css', array(), GP_PREMIUM_VERSION ); - - wp_enqueue_media(); - wp_enqueue_script( 'wp-color-picker' ); - wp_enqueue_style( 'wp-color-picker' ); - wp_enqueue_script( 'wp-color-picker-alpha', GP_LIBRARY_DIRECTORY_URL . 'alpha-color-picker/wp-color-picker-alpha.min.js', array( 'wp-color-picker' ), '3.0.0', true ); - - wp_add_inline_script( - 'wp-color-picker-alpha', - 'jQuery( function() { jQuery( ".color-picker" ).wpColorPicker(); } );' - ); - - if ( function_exists( 'wp_add_inline_script' ) && function_exists( 'generate_get_default_color_palettes' ) ) { - // Grab our palette array and turn it into JS. - $palettes = wp_json_encode( generate_get_default_color_palettes() ); - - // Add our custom palettes. - // json_encode takes care of escaping. - wp_add_inline_script( 'wp-color-picker', 'jQuery.wp.wpColorPicker.prototype.options.palettes = ' . $palettes . ';' ); - } - - wp_enqueue_style( 'select2', GP_LIBRARY_DIRECTORY_URL . 'select2/select2.min.css', array(), '4.0.13' ); - wp_enqueue_script( 'select2', GP_LIBRARY_DIRECTORY_URL . 'select2/select2.full.min.js', array( 'jquery', 'generate-elements-metabox' ), '4.0.13', true ); - - $css = ''; - - if ( function_exists( 'generate_get_option' ) && 'separate-containers' === generate_get_option( 'content_layout_setting' ) ) { - $css .= 'body.left-sidebar-block-type .block-editor-block-list__layout.is-root-container, body.right-sidebar-block-type .block-editor-block-list__layout.is-root-container {background: ' . generate_get_option( 'background_color' ) . ';}'; - $css .= 'body.content-template-block-type:not(.using-theme-post-container) .block-editor-block-list__layout.is-root-container, body.archive-navigation-template-block-type:not(.using-theme-pagination-container) .block-editor-block-list__layout.is-root-container {background: ' . generate_get_option( 'background_color' ) . ';}'; - } - - wp_add_inline_style( 'generate-elements-metabox', $css ); - } - } - } - - /** - * Register our metabox. - * - * @since 1.7 - */ - public function register_metabox() { - // Title not translated on purpose. - add_meta_box( 'generate_premium_elements', __( 'Display Rules', 'gp-premium' ), array( $this, 'element_fields' ), 'gp_elements', 'normal', 'high' ); - add_meta_box( 'generate_page_hero_template_tags', __( 'Template Tags', 'gp-premium' ), array( $this, 'template_tags' ), 'gp_elements', 'side', 'low' ); - remove_meta_box( 'slugdiv', 'gp_elements', 'normal' ); - } - - /** - * Output all of our metabox fields. - * - * @since 1.7 - * - * @param object $post Our post object. - */ - public function element_fields( $post ) { - wp_nonce_field( basename( __FILE__ ), 'generate_elements_nonce' ); - - $type = self::get_element_type(); - $page_hero_class = ''; - $merge = get_post_meta( get_the_ID(), '_generate_site_header_merge', true ); - $conditions_set = get_post_meta( get_the_ID(), '_generate_element_display_conditions', true ); - $post_status = get_post_status( get_the_ID() ); - - if ( 'header' === $type && get_post_meta( get_the_ID(), '_generate_element_content', true ) ) { - $page_hero_class = ' has-page-hero'; - } - ?> - - - -
    -

    -
    - - -
    - - - - - - - - - - - - - - - > - - - - - > - - - - - > - - - - - - - - - - - - - - - - - - - - - -
    - - - /> -
    - - - /> -
    - - - - DISALLOW_FILE_EDIT' - ); - ?> - - /> - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - > - - - - - > - - - - - - - - - - - - - - - - - > - - - - - > - - - - - > - - - - - > - - - - - > - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - ? - - -
    - - - -
    - - - -
    - - - -
    - - - /> -
    - - - -
    - - -
    - - -
    - -
    -
    -
    - - - -
    - - -
    - -
    -
    - - - -
    - - -
    - -
    -
    - - - -
    - - -
    - -
    -
    - - - -
    - - -
    -
    - - -
    - - - -
    - - - - - -
    - - - -
    - - - /> -
    - - ? - - /> -
    - - ? - - /> -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - - - - - - - > - - - - - > - - - - - - > - - - - - - - > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > - - - - - > - - - - - > - - - - - > - - - - - > - - - - - > - - - - - > - - - - -
    - - ? - - -
    - - ? - - -
    - - -
    - -
    -
    - - px -
    -
    - - -
    - - - -
    - - - -
    - - - -
    - - -
    -
    - '; - } - ?> -
    - - /> - - -
    -
    - - -
    -
    - '; - } - ?> -
    - - /> - - -
    -
    - - -
    -
    - '; - } - ?> -
    - - /> - - -
    -
    - - -
    -
    - '; - } - ?> -
    - - /> - - -
    -
    - - - -
    - - - /> -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - -
    - - - - - - - - - - -
    - - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    -
    - - - - - - - - -
    - - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - /> -
    - - - /> -
    - - - /> -
    - - - /> -
    - - - /> -
    - - - /> -
    - - - /> -
    - - - /> -
    - - - - - - - - - - - - -
    - - -
    - -
    - -
    - -
    - -
    - -
    -
    - - - - px -
    - - - - - - - - - - - - - - - - - - - > - - - - -
    - - ? - - $value ) { - $type = explode( ':', $value['rule'] ); - - if ( in_array( 'post', $type ) || in_array( 'taxonomy', $type ) ) { - $show = true; - } else { - $show = false; - } - ?> -
    - - - - - -
    - -
    - - - - - -
    - - - - -
    - - ? - - $value ) { - $type = explode( ':', $value['rule'] ); - - if ( in_array( 'post', $type ) || in_array( 'taxonomy', $type ) ) { - $show = true; - } else { - $show = false; - } - ?> -
    - - - - - -
    - -
    - - - - - -
    - - - - -
    - - ? - - $value ) { - ?> -
    - - - -
    - -
    - - - -
    - - - - -
    - - ? - - /> -
    - - - - - - - - -
    - 'text', - '_generate_custom_hook' => 'text', - '_generate_hook_priority' => 'number', - ); - - if ( 'hook' === $type_value ) { - $hook_values['_generate_hook_disable_site_header'] = 'key'; - $hook_values['_generate_hook_disable_site_footer'] = 'key'; - $hook_values['_generate_hook_execute_shortcodes'] = 'key'; - $hook_values['_generate_hook_execute_php'] = 'key'; - } - - // We don't want people to be able to use these hooks. - $blacklist = array( - 'muplugins_loaded', - 'registered_taxonomy', - 'plugins_loaded', - 'setup_theme', - 'after_setup_theme', - 'init', - 'widgets_init', - 'wp_loaded', - 'pre_get_posts', - 'wp', - 'template_redirect', - 'get_header', - 'wp_enqueue_scripts', - 'the_post', - 'dynamic_sidebar', - 'get_footer', - 'get_sidebar', - 'wp_print_footer_scripts', - 'shutdown', - ); - - foreach ( $hook_values as $key => $type ) { - $value = false; - - if ( isset( $_POST[ $key ] ) ) { - // Bail if we're using a blacklisted hook. - if ( '_generate_custom_hook' === $key ) { - if ( in_array( $_POST[ $key ], $blacklist ) ) { - continue; - } - } - - if ( 'number' === $type ) { - $value = absint( $_POST[ $key ] ); - } elseif ( 'key' === $type ) { - $value = sanitize_key( $_POST[ $key ] ); - } else { - $value = sanitize_text_field( $_POST[ $key ] ); - } - - // Need to temporarily change the $value so it returns true. - if ( '_generate_hook_priority' === $key ) { - if ( '0' === $_POST[ $key ] ) { - $value = 'zero'; - } - } - } - - if ( $value ) { - if ( 'zero' === $value ) { - $value = '0'; - } - - update_post_meta( $post_id, $key, $value ); - } else { - delete_post_meta( $post_id, $key ); - } - } - } - - // Page Header type. - if ( 'header' === $type_value ) { - $hero_values = array( - '_generate_hero_custom_classes' => 'attribute', - '_generate_hero_container' => 'text', - '_generate_hero_inner_container' => 'text', - '_generate_hero_horizontal_alignment' => 'text', - '_generate_hero_full_screen' => 'key', - '_generate_hero_vertical_alignment' => 'text', - '_generate_hero_padding_top' => 'number', - '_generate_hero_padding_top_unit' => 'text', - '_generate_hero_padding_right' => 'number', - '_generate_hero_padding_right_unit' => 'text', - '_generate_hero_padding_bottom' => 'number', - '_generate_hero_padding_bottom_unit' => 'text', - '_generate_hero_padding_left' => 'number', - '_generate_hero_padding_left_unit' => 'text', - '_generate_hero_padding_top_mobile' => 'number', - '_generate_hero_padding_top_unit_mobile' => 'text', - '_generate_hero_padding_right_mobile' => 'number', - '_generate_hero_padding_right_unit_mobile' => 'text', - '_generate_hero_padding_bottom_mobile' => 'number', - '_generate_hero_padding_bottom_unit_mobile' => 'text', - '_generate_hero_padding_left_mobile' => 'number', - '_generate_hero_padding_left_unit_mobile' => 'text', - '_generate_hero_background_image' => 'key', - '_generate_hero_disable_featured_image' => 'key', - '_generate_hero_background_color' => 'color', - '_generate_hero_text_color' => 'color', - '_generate_hero_link_color' => 'color', - '_generate_hero_background_link_color_hover' => 'color', - '_generate_hero_background_overlay' => 'key', - '_generate_hero_background_position' => 'text', - '_generate_hero_background_parallax' => 'key', - '_generate_site_header_merge' => 'key', - '_generate_site_header_height' => 'number', - '_generate_site_header_height_mobile' => 'number', - '_generate_navigation_colors' => 'key', - '_generate_site_logo' => 'number', - '_generate_retina_logo' => 'number', - '_generate_navigation_logo' => 'number', - '_generate_mobile_logo' => 'number', - '_generate_navigation_location' => 'key', - '_generate_site_header_background_color' => 'text', - '_generate_site_header_title_color' => 'text', - '_generate_site_header_tagline_color' => 'text', - '_generate_navigation_background_color' => 'text', - '_generate_navigation_text_color' => 'text', - '_generate_navigation_background_color_hover' => 'text', - '_generate_navigation_text_color_hover' => 'text', - '_generate_navigation_background_color_current' => 'text', - '_generate_navigation_text_color_current' => 'text', - ); - - foreach ( $hero_values as $key => $type ) { - $value = false; - - if ( isset( $_POST[ $key ] ) ) { - if ( 'number' === $type ) { - $value = absint( $_POST[ $key ] ); - } elseif ( 'key' === $type ) { - $value = sanitize_key( $_POST[ $key ] ); - } elseif ( 'attribute' === $type ) { - $value = esc_attr( $_POST[ $key ] ); - } else { - $value = sanitize_text_field( $_POST[ $key ] ); - } - } - - if ( - '_generate_hero_padding_top_mobile' === $key || - '_generate_hero_padding_right_mobile' === $key || - '_generate_hero_padding_bottom_mobile' === $key || - '_generate_hero_padding_left_mobile' === $key - ) { - if ( '0' === $_POST[ $key ] ) { - $value = 'zero'; - } - } - - if ( $value ) { - if ( 'zero' === $value ) { - $value = '0'; // String on purpose. - } - - update_post_meta( $post_id, $key, $value ); - } else { - delete_post_meta( $post_id, $key ); - } - } - } - - // Save Layout type. - if ( 'layout' === $type_value ) { - $layout_values = array( - '_generate_sidebar_layout' => 'key', - '_generate_footer_widgets' => 'key', - '_generate_disable_site_header' => 'key', - '_generate_disable_mobile_header' => 'key', - '_generate_disable_top_bar' => 'key', - '_generate_disable_primary_navigation' => 'key', - '_generate_disable_secondary_navigation' => 'key', - '_generate_disable_featured_image' => 'key', - '_generate_disable_content_title' => 'key', - '_generate_disable_footer' => 'key', - '_generate_content_area' => 'key', - '_generate_content_width' => 'number', - ); - - foreach ( $layout_values as $key => $type ) { - $value = false; - - if ( isset( $_POST[ $key ] ) ) { - if ( 'number' === $type ) { - $value = absint( $_POST[ $key ] ); - } elseif ( 'key' === $type ) { - $value = sanitize_key( $_POST[ $key ] ); - } else { - $value = sanitize_text_field( $_POST[ $key ] ); - } - } - - if ( $value ) { - update_post_meta( $post_id, $key, $value ); - } else { - delete_post_meta( $post_id, $key ); - } - } - } - - $ignore_languages = false; - - if ( isset( $_POST['_generate_element_ignore_languages'] ) ) { - $ignore_languages = sanitize_key( $_POST['_generate_element_ignore_languages'] ); - } - - if ( $ignore_languages ) { - update_post_meta( $post_id, '_generate_element_ignore_languages', $ignore_languages ); - } else { - delete_post_meta( $post_id, '_generate_element_ignore_languages' ); - } - - // Display conditions. - $conditions = get_post_meta( $post_id, '_generate_element_display_conditions', true ); - $new_conditions = array(); - - $rules = $_POST['display-condition']; - $objects = $_POST['display-condition-object']; - - $count = count( $rules ); - - for ( $i = 0; $i < $count; $i++ ) { - if ( '' !== $rules[ $i ] ) { - if ( in_array( $rules[ $i ], $rules ) ) { - $new_conditions[ $i ]['rule'] = sanitize_text_field( $rules[ $i ] ); - $new_conditions[ $i ]['object'] = sanitize_key( $objects[ $i ] ); - } else { - $new_conditions[ $i ]['rule'] = ''; - $new_conditions[ $i ]['object'] = ''; - } - } - } - - if ( 'block' === $type_value ) { - $dynamic_css_posts = get_option( 'generateblocks_dynamic_css_posts', array() ); - - if ( $dynamic_css_posts ) { - foreach ( $new_conditions as $condition ) { - if ( $condition['object'] && isset( $dynamic_css_posts[ $condition['object'] ] ) ) { - unset( $dynamic_css_posts[ $condition['object'] ] ); - } - - if ( ! $condition['object'] ) { - $dynamic_css_posts = array(); - break; - } - } - - update_option( 'generateblocks_dynamic_css_posts', $dynamic_css_posts ); - } - } - - if ( ! empty( $new_conditions ) && $new_conditions !== $conditions ) { - update_post_meta( $post_id, '_generate_element_display_conditions', $new_conditions ); - } elseif ( empty( $new_conditions ) && $conditions ) { - delete_post_meta( $post_id, '_generate_element_display_conditions', $conditions ); - } - - // Exclude conditions. - $exclude_conditions = get_post_meta( $post_id, '_generate_element_exclude_conditions', true ); - $new_exclude_conditions = array(); - - $exclude_rules = $_POST['exclude-condition']; - $exclude_objects = $_POST['exclude-condition-object']; - - $exclude_count = count( $exclude_rules ); - - for ( $i = 0; $i < $exclude_count; $i++ ) { - if ( '' !== $exclude_rules[ $i ] ) { - if ( in_array( $exclude_rules[ $i ], $exclude_rules ) ) { - $new_exclude_conditions[ $i ]['rule'] = sanitize_text_field( $exclude_rules[ $i ] ); - $new_exclude_conditions[ $i ]['object'] = sanitize_key( $exclude_objects[ $i ] ); - } else { - $new_exclude_conditions[ $i ]['rule'] = ''; - $new_exclude_conditions[ $i ]['object'] = ''; - } - } - } - - if ( ! empty( $new_exclude_conditions ) && $new_exclude_conditions !== $exclude_conditions ) { - update_post_meta( $post_id, '_generate_element_exclude_conditions', $new_exclude_conditions ); - } elseif ( empty( $new_exclude_conditions ) && $exclude_conditions ) { - delete_post_meta( $post_id, '_generate_element_exclude_conditions', $exclude_conditions ); - } - - // User conditions. - $user_conditions = get_post_meta( $post_id, '_generate_element_user_conditions', true ); - $new_user_conditions = array(); - - $user_rules = $_POST['user-condition']; - $user_count = count( $user_rules ); - - for ( $i = 0; $i < $user_count; $i++ ) { - if ( '' !== $user_rules[ $i ] ) { - if ( in_array( $user_rules[ $i ], $user_rules ) ) { - $new_user_conditions[ $i ] = sanitize_text_field( $user_rules[ $i ] ); - } else { - $new_user_conditions[ $i ] = ''; - } - } - } - - if ( ! empty( $new_user_conditions ) && $new_user_conditions !== $user_conditions ) { - update_post_meta( $post_id, '_generate_element_user_conditions', $new_user_conditions ); - } elseif ( empty( $new_user_conditions ) && $user_conditions ) { - delete_post_meta( $post_id, '_generate_element_user_conditions', $user_conditions ); - } - - // Internal notes. - $notes_key = '_generate_element_internal_notes'; - - if ( isset( $_POST[ $notes_key ] ) ) { - if ( function_exists( 'sanitize_textarea_field' ) ) { - $notes_value = sanitize_textarea_field( $_POST[ $notes_key ] ); - } else { - $notes_value = sanitize_text_field( $_POST[ $notes_key ] ); - } - - if ( $notes_value ) { - update_post_meta( $post_id, $notes_key, $notes_value ); - } else { - delete_post_meta( $post_id, $notes_key ); - } - } - } - - /** - * Get terms of a set taxonomy. - * - * @since 1.7 - */ - public function get_terms() { - check_ajax_referer( 'generate-elements-location', 'nonce' ); - - $current_user_can = 'manage_options'; - - if ( apply_filters( 'generate_elements_metabox_ajax_allow_editors', false ) ) { - $current_user_can = 'edit_posts'; - } - - if ( ! current_user_can( $current_user_can ) ) { - return; - } - - if ( ! isset( $_POST['id'] ) ) { - return; - } - - $tax_id = sanitize_text_field( $_POST['id'] ); - - echo wp_json_encode( self::get_taxonomy_terms( $tax_id ) ); - - die(); - } - - /** - * Get all posts inside a specific post type. - * - * @since 1.7 - */ - public function get_posts() { - check_ajax_referer( 'generate-elements-location', 'nonce' ); - - $current_user_can = 'manage_options'; - - if ( apply_filters( 'generate_elements_metabox_ajax_allow_editors', false ) ) { - $current_user_can = 'edit_posts'; - } - - if ( ! current_user_can( $current_user_can ) ) { - return; - } - - if ( ! isset( $_POST['id'] ) ) { - return; - } - - $post_type = sanitize_text_field( $_POST['id'] ); - - echo wp_json_encode( self::get_post_type_posts( $post_type ) ); - - die(); - } - - /** - * Get all of our posts and terms in one go on load. - * - * @since 2.0.0 - */ - public function get_all_objects() { - check_ajax_referer( 'generate-elements-location', 'nonce' ); - - $current_user_can = 'manage_options'; - - if ( apply_filters( 'generate_elements_metabox_ajax_allow_editors', false ) ) { - $current_user_can = 'edit_posts'; - } - - if ( ! current_user_can( $current_user_can ) ) { - return; - } - - if ( ! isset( $_POST['posts'] ) && ! isset( $_POST['terms'] ) ) { - return; - } - - $posts = array(); - $terms = array(); - - if ( ! empty( $_POST['posts'] ) ) { - $posts = array_map( 'sanitize_text_field', $_POST['posts'] ); - } - - if ( ! empty( $_POST['terms'] ) ) { - $terms = array_map( 'sanitize_text_field', $_POST['terms'] ); - } - - $all_posts = self::get_post_type_posts( $posts ); - $all_terms = self::get_taxonomy_terms( $terms ); - - echo wp_json_encode( array_merge( $all_posts, $all_terms ) ); - - die(); - } - - /** - * Look up posts inside a post type. - * - * @since 1.7 - * - * @param string|array $post_type The post type to look up. - * @return array - */ - public static function get_post_type_posts( $post_type ) { - if ( ! is_array( $post_type ) ) { - $post_type = array( $post_type ); - } - - $data = array(); - - foreach ( $post_type as $type ) { - global $wpdb; - - $post_status = array( 'publish', 'future', 'draft', 'pending', 'private' ); - - $object = get_post_type_object( $type ); - - $data[ $type ] = array( - 'type' => 'posts', - 'postType' => $type, - 'label' => $object->label, - 'objects' => array(), - ); - - if ( 'attachment' === $type ) { - $posts = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_title from $wpdb->posts where post_type = %s ORDER BY post_title", $type ) ); - - } else { - $format = implode( ', ', array_fill( 0, count( $post_status ), '%s' ) ); - $query = sprintf( "SELECT ID, post_title from $wpdb->posts where post_type = '%s' AND post_status IN(%s) ORDER BY post_title", $type, $format ); - // @codingStandardsIgnoreLine - $posts = $wpdb->get_results( $wpdb->prepare( $query, $post_status ) ); - } - - foreach ( $posts as $post ) { - $title = ( '' !== $post->post_title ) ? esc_attr( $post->post_title ) : $type . '-' . $post->ID; - $data[ $type ]['objects'][] = array( - 'id' => $post->ID, - 'name' => $title, - ); - } - } - - return $data; - } - - /** - * Get taxonomy terms for a specific taxonomy. - * - * @since 1.7 - * - * @param int|array $tax_id The taxonomy ID. - * @return array - */ - public static function get_taxonomy_terms( $tax_id ) { - if ( ! is_array( $tax_id ) ) { - $tax_id = array( $tax_id ); - } - - $data = array(); - - foreach ( $tax_id as $id ) { - $tax = get_taxonomy( $id ); - - $terms = get_terms( - array( - 'taxonomy' => $id, - 'hide_empty' => false, - ) - ); - - $data[ $id ] = array( - 'type' => 'terms', - 'taxonomy' => $id, - 'label' => $tax->label, - 'objects' => array(), - ); - - foreach ( $terms as $term ) { - $data[ $id ]['objects'][] = array( - 'id' => $term->term_id, - 'name' => esc_attr( $term->name ), - ); - } - } - - return $data; - } - - /** - * Build our entire list of hooks to display. - * - * @since 1.7 - * - * @return array Our list of hooks. - */ - public static function get_available_hooks() { - return GeneratePress_Elements_Helper::get_available_hooks(); - } - - /** - * Add available template tags to Header Elements. - * - * @since 1.7 - */ - public static function template_tags() { - ?> - -

    - -

    - - -

    - -

    - - -

    - -

    - - -

    - -

    - - -

    - -

    - _x( 'Elements', 'Post Type General Name', 'gp-premium' ), - 'singular_name' => _x( 'Element', 'Post Type Singular Name', 'gp-premium' ), - 'menu_name' => __( 'Elements', 'gp-premium' ), - 'all_items' => __( 'All Elements', 'gp-premium' ), - 'add_new' => __( 'Add New Element', 'gp-premium' ), - 'add_new_item' => __( 'Add New Element', 'gp-premium' ), - 'new_item' => __( 'New Element', 'gp-premium' ), - 'edit_item' => __( 'Edit Element', 'gp-premium' ), - 'update_item' => __( 'Update Element', 'gp-premium' ), - 'search_items' => __( 'Search Element', 'gp-premium' ), - 'featured_image' => __( 'Background Image', 'gp-premium' ), - 'set_featured_image' => __( 'Set background image', 'gp-premium' ), - 'remove_featured_image' => __( 'Remove background image', 'gp-premium' ), - 'item_published' => __( 'Element published.', 'gp-premium' ), - 'item_updated' => __( 'Element updated.', 'gp-premium' ), - 'item_scheduled' => __( 'Element scheduled.', 'gp-premium' ), - 'item_reverted_to_draft' => __( 'Element reverted to draft.', 'gp-premium' ), - ); - - $args = array( - 'labels' => $labels, - 'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields', 'page-attributes', 'revisions' ), - 'hierarchical' => true, - 'public' => false, - 'show_ui' => true, - 'show_in_menu' => false, - 'can_export' => true, - 'has_archive' => false, - 'exclude_from_search' => true, - 'show_in_rest' => true, - ); - - register_post_type( 'gp_elements', $args ); - } - - /** - * Disable editor and show_in_rest support for non-Block Elements. - * - * @since 1.11.0 - * @param array $args The existing args. - * @param string $post_type The current post type. - */ - public function set_standard_element( $args, $post_type ) { - if ( 'gp_elements' === $post_type ) { - $post_id = false; - $type = false; - - if ( isset( $_GET['post'] ) ) { // phpcs:ignore -- No processing happening. - $post_id = absint( $_GET['post'] ); // phpcs:ignore -- No processing happening. - } - - if ( $post_id ) { - $type = get_post_meta( $post_id, '_generate_element_type', true ); - } elseif ( isset( $_GET['element_type'] ) ) { // phpcs:ignore -- No processing happening. - $type = esc_html( $_GET['element_type'] ); // phpcs:ignore -- No processing happening. - } - - if ( ! $type ) { - return $args; - } - - if ( 'block' !== $type ) { - $args['supports'] = array( 'title', 'thumbnail' ); - $args['show_in_rest'] = false; - $args['hierarchical'] = false; - } - - if ( 'block' === $type ) { - $args['supports'] = array( 'title', 'editor', 'custom-fields', 'page-attributes', 'revisions' ); - } - - if ( 'layout' === $type ) { - $args['labels']['add_new_item'] = __( 'Add New Layout', 'gp-premium' ); - $args['labels']['edit_item'] = __( 'Edit Layout', 'gp-premium' ); - } - - if ( 'hook' === $type ) { - $args['labels']['add_new_item'] = __( 'Add New Hook', 'gp-premium' ); - $args['labels']['edit_item'] = __( 'Edit Hook', 'gp-premium' ); - } - - if ( 'header' === $type ) { - $args['labels']['add_new_item'] = __( 'Add New Header', 'gp-premium' ); - $args['labels']['edit_item'] = __( 'Edit Header', 'gp-premium' ); - } - } - - return $args; - } - - /** - * Register custom post type columns. - * - * @since 1.7 - * - * @param array $columns Existing CPT columns. - * @return array All our CPT columns. - */ - public function register_columns( $columns ) { - $columns['element_type'] = esc_html__( 'Type', 'gp-premium' ); - $columns['location'] = esc_html__( 'Location', 'gp-premium' ); - $columns['exclusions'] = esc_html__( 'Exclusions', 'gp-premium' ); - $columns['users'] = esc_html__( 'Users', 'gp-premium' ); - - $new_columns = array(); - - // Need to do some funky stuff to display these columns before the date. - foreach ( $columns as $key => $value ) { - if ( 'date' === $key ) { - $new_columns['element_type'] = esc_html__( 'Type', 'gp-premium' ); - $new_columns['location'] = esc_html__( 'Location', 'gp-premium' ); - $new_columns['exclusions'] = esc_html__( 'Exclusions', 'gp-premium' ); - $new_columns['users'] = esc_html__( 'Users', 'gp-premium' ); - } - - $new_columns[ $key ] = $value; - } - - return $new_columns; - } - - /** - * Add a filter select input to the admin list. - * - * @since 1.7 - */ - public function build_element_type_filter() { - $screen = function_exists( 'get_current_screen' ) ? get_current_screen() : false; - - if ( ! $screen ) { - return; - } - - if ( ! isset( $screen->post_type ) || 'gp_elements' !== $screen->post_type ) { - return; - } - - $values = array( - 'block' => esc_html__( 'Blocks', 'gp-premium' ), - 'header' => esc_html__( 'Headers', 'gp-premium' ), - 'hook' => esc_html__( 'Hooks', 'gp-premium' ), - 'layout' => esc_html__( 'Layouts', 'gp-premium' ), - ); - - $current_element_type = isset( $_GET['gp_element_type_filter'] ) ? esc_html( $_GET['gp_element_type_filter'] ) : ''; // phpcs:ignore -- No processing happening. - $current_block_type = isset( $_GET['gp_elements_block_type_filter'] ) ? esc_html( $_GET['gp_elements_block_type_filter'] ) : ''; // phpcs:ignore -- No processing happening. - ?> - - - - is_main_query() && '' !== $type ) { - $meta_query[] = array( - 'key' => '_generate_element_type', - 'value' => esc_attr( $type ), - 'compare' => '=', - ); - - $block_type = isset( $_GET['gp_elements_block_type_filter'] ) ? $_GET['gp_elements_block_type_filter'] : ''; // phpcs:ignore -- No processing happening. - - if ( 'block' === $type && '' !== $block_type ) { - $meta_query['relation'] = 'AND'; - - $meta_query[] = array( - 'key' => '_generate_block_type', - 'value' => esc_attr( $block_type ), - 'compare' => '=', - ); - } - - $query->set( 'meta_query', $meta_query ); - } - } - - /** - * Add content to our custom post type columns. - * - * @since 1.7 - * - * @param string $column The name of the column. - * @param int $post_id The ID of the post row. - */ - public function add_columns( $column, $post_id ) { - switch ( $column ) { - case 'element_type': - $type = get_post_meta( $post_id, '_generate_element_type', true ); - $hook_location = get_post_meta( $post_id, '_generate_hook', true ); - - if ( 'block' === $type ) { - echo esc_html__( 'Block', 'gp-premium' ); - - $block_type = get_post_meta( $post_id, '_generate_block_type', true ); - - if ( $block_type ) { - echo ' - ' . esc_html( GeneratePress_Elements_Helper::get_element_type_label( $block_type ) ); - - if ( 'hook' === $block_type && $hook_location ) { - echo '
    '; - - if ( 'custom' === $hook_location ) { - $custom_hook = get_post_meta( $post_id, '_generate_custom_hook', true ); - echo '' . esc_html( $custom_hook ) . ''; - } else { - echo '' . esc_html( $hook_location ) . ''; - } - } - } - } - - if ( 'header' === $type ) { - echo esc_html__( 'Header', 'gp-premium' ); - } - - if ( 'hook' === $type ) { - echo esc_html__( 'Hook', 'gp-premium' ); - - if ( $hook_location ) { - echo '
    '; - - if ( 'custom' === $hook_location ) { - $custom_hook = get_post_meta( $post_id, '_generate_custom_hook', true ); - echo '' . esc_html( $custom_hook ) . ''; - } else { - echo '' . esc_html( $hook_location ) . ''; - } - } - } - - if ( 'layout' === $type ) { - echo esc_html__( 'Layout', 'gp-premium' ); - } - break; - - case 'location': - $location = get_post_meta( $post_id, '_generate_element_display_conditions', true ); - $parent_block = wp_get_post_parent_id( $post_id ); - - if ( $location ) { - foreach ( (array) $location as $data ) { - echo esc_html( GeneratePress_Conditions::get_saved_label( $data ) ); - echo '
    '; - } - } elseif ( ! empty( $parent_block ) ) { - echo esc_html__( 'Inherit from parent', 'gp-premium' ); - } else { - echo esc_html__( 'Not set', 'gp-premium' ); - } - break; - - case 'exclusions': - $location = get_post_meta( $post_id, '_generate_element_exclude_conditions', true ); - - if ( $location ) { - foreach ( (array) $location as $data ) { - echo esc_html( GeneratePress_Conditions::get_saved_label( $data ) ); - echo '
    '; - } - } - break; - - case 'users': - $users = get_post_meta( $post_id, '_generate_element_user_conditions', true ); - - if ( $users ) { - foreach ( (array) $users as $data ) { - if ( strpos( $data, ':' ) !== false ) { - $data = substr( $data, strpos( $data, ':' ) + 1 ); - } - - $return = ucwords( str_replace( '_', ' ', $data ) ); - - echo esc_html( $return ) . '
    '; - } - } - break; - } - } - - /** - * Create our admin menu item. - * - * @since 1.7 - */ - public function menu_item() { - add_submenu_page( - 'themes.php', - esc_html__( 'Elements', 'gp-premium' ), - esc_html__( 'Elements', 'gp-premium' ), - apply_filters( 'generate_elements_admin_menu_capability', 'manage_options' ), - 'edit.php?post_type=gp_elements' - ); - } - - /** - * Make sure our admin menu item is highlighted. - * - * @since 1.7 - */ - public function fix_current_item() { - global $parent_file, $submenu_file, $post_type; - - if ( 'gp_elements' === $post_type ) { - $parent_file = 'themes.php'; // phpcs:ignore - $submenu_file = 'edit.php?post_type=gp_elements'; // phpcs:ignore - } - } - - /** - * Add scripts to the edit/post area of Elements. - * - * @since 1.11.0 - * @param string $hook The current hook for the page. - */ - public function admin_scripts( $hook ) { - if ( ! function_exists( 'get_current_screen' ) ) { - return; - } - - $current_screen = get_current_screen(); - - if ( 'edit.php' === $hook || 'post.php' === $hook ) { - if ( 'gp_elements' === $current_screen->post_type ) { - wp_enqueue_script( 'generate-elements', plugin_dir_url( __FILE__ ) . 'assets/admin/elements.js', array( 'jquery' ), GP_PREMIUM_VERSION, true ); - wp_enqueue_style( 'generate-elements', plugin_dir_url( __FILE__ ) . 'assets/admin/elements.css', array(), GP_PREMIUM_VERSION ); - } - } - } - - /** - * Build the Add New Element modal. - * - * @since 1.11.0 - */ - public function element_modal() { - if ( ! function_exists( 'get_current_screen' ) ) { - return; - } - - $current_screen = get_current_screen(); - - if ( 'edit-gp_elements' === $current_screen->id || 'gp_elements' === $current_screen->id ) { - ?> - - 'gp_elements', - 'no_found_rows' => true, - 'post_status' => 'publish', - 'numberposts' => 500, // phpcs:ignore - 'fields' => 'ids', - 'suppress_filters' => false, - ); - - $custom_args = apply_filters( - 'generate_elements_custom_args', - array( - 'order' => 'ASC', - ) - ); - - $args = array_merge( $args, $custom_args ); - - // Prevent Polylang from altering the query. - if ( function_exists( 'pll_get_post_language' ) ) { - $args['lang'] = ''; - } - - $posts = get_posts( $args ); - - foreach ( $posts as $post_id ) { - $post_id = apply_filters( 'generate_element_post_id', $post_id ); - $type = get_post_meta( $post_id, '_generate_element_type', true ); - - if ( 'hook' === $type ) { - new GeneratePress_Hook( $post_id ); - } - - if ( 'header' === $type && ! GeneratePress_Hero::$instances ) { - new GeneratePress_Hero( $post_id ); - } - - if ( 'layout' === $type ) { - new GeneratePress_Site_Layout( $post_id ); - } - - if ( 'block' === $type ) { - new GeneratePress_Block_Element( $post_id ); - } - } -} - -add_filter( 'generate_dashboard_tabs', 'generate_elements_dashboard_tab' ); -/** - * Add the Sites tab to our Dashboard tabs. - * - * @since 1.6 - * - * @param array $tabs Existing tabs. - * @return array New tabs. - */ -function generate_elements_dashboard_tab( $tabs ) { - $screen = get_current_screen(); - - $tabs['Elements'] = array( - 'name' => __( 'Elements', 'gp-premium' ), - 'url' => admin_url( 'edit.php?post_type=gp_elements' ), - 'class' => 'edit-gp_elements' === $screen->id ? 'active' : '', - 'id' => 'gp-elements-tab', - ); - - return $tabs; -} - -add_filter( 'generate_dashboard_screens', 'generate_elements_dashboard_screen' ); -/** - * Add the Sites tab to our Dashboard screens. - * - * @since 2.1.0 - * - * @param array $screens Existing screens. - * @return array New screens. - */ -function generate_elements_dashboard_screen( $screens ) { - $screens[] = 'edit-gp_elements'; - - return $screens; -} - -add_filter( 'generate_element_post_id', 'generate_elements_ignore_languages' ); -/** - * Disable Polylang elements if their language doesn't match. - * We disable their automatic quering so Elements with no language display by default. - * - * @since 1.8 - * - * @param int $post_id The current post ID. - * @return bool|int - */ -function generate_elements_ignore_languages( $post_id ) { - if ( function_exists( 'pll_get_post_language' ) && function_exists( 'pll_current_language' ) ) { - $language = pll_get_post_language( $post_id, 'locale' ); - $disable = get_post_meta( $post_id, '_generate_element_ignore_languages', true ); - - if ( $disable ) { - return $post_id; - } - - if ( $language && $language !== pll_current_language( 'locale' ) ) { // phpcs:ignore -- Using Yoda check I am. - return false; - } - } - - return $post_id; -} - -add_action( 'save_post_wp_block', 'generate_elements_wp_block_update', 10, 2 ); -/** - * Regenerate the GenerateBlocks CSS file when a re-usable block is saved. - * - * @since 1.11.0 - * @param int $post_id The post ID. - * @param object $post The post object. - */ -function generate_elements_wp_block_update( $post_id, $post ) { - $is_autosave = wp_is_post_autosave( $post_id ); - $is_revision = wp_is_post_revision( $post_id ); - - if ( $is_autosave || $is_revision || ! current_user_can( 'edit_post', $post_id ) ) { - return $post_id; - } - - if ( isset( $post->post_content ) ) { - if ( strpos( $post->post_content, 'wp:generateblocks' ) !== false ) { - global $wpdb; - - $option = get_option( 'generateblocks_dynamic_css_posts', array() ); - - $posts = $wpdb->get_col( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_generateblocks_reusable_blocks'" ); - - foreach ( (array) $posts as $id ) { - $display_conditions = get_post_meta( $id, '_generate_element_display_conditions', true ); - - if ( $display_conditions ) { - foreach ( (array) $display_conditions as $condition ) { - if ( 'general:site' === $condition['rule'] ) { - $option = array(); - break; - } - - if ( $condition['object'] && isset( $option[ $condition['object'] ] ) ) { - unset( $option[ $condition['object'] ] ); - } - } - } - } - - update_option( 'generateblocks_dynamic_css_posts', $option ); - } - } - -} - -add_filter( 'generate_do_block_element_content', 'generate_add_block_element_content_filters' ); -/** - * Apply content filters to our block elements. - * - * @since 1.11.0 - * @param string $content The block element content. - */ -function generate_add_block_element_content_filters( $content ) { - $content = shortcode_unautop( $content ); - $content = do_shortcode( $content ); - - if ( function_exists( 'wp_filter_content_tags' ) ) { - $content = wp_filter_content_tags( $content ); - } elseif ( function_exists( 'wp_make_content_images_responsive' ) ) { - $content = wp_make_content_images_responsive( $content ); - } - - return $content; -} - -add_action( 'admin_bar_menu', 'generate_add_elements_admin_bar', 100 ); -/** - * Add the Elementd admin bar item. - * - * @since 2.0.0 - */ -function generate_add_elements_admin_bar() { - $current_user_can = 'manage_options'; - - if ( apply_filters( 'generate_elements_metabox_ajax_allow_editors', false ) ) { - $current_user_can = 'edit_posts'; - } - - if ( ! current_user_can( $current_user_can ) ) { - return; - } - - global $wp_admin_bar; - global $generate_elements; - - $title = __( 'Elements', 'gp-premium' ); - $count = ! empty( $generate_elements ) ? count( $generate_elements ) : 0; - - // Prevent "Entire Site" Elements from being counted on non-edit pages in the admin. - if ( is_admin() && function_exists( 'get_current_screen' ) ) { - $screen = get_current_screen(); - - if ( ! isset( $screen->is_block_editor ) || ! $screen->is_block_editor ) { - $count = 0; - } - - if ( 'edit' !== $screen->parent_base ) { - $count = 0; - } - } - - if ( $count > 0 ) { - $title = sprintf( - /* translators: Active Element count. */ - __( 'Elements (%s)', 'gp-premium' ), - $count - ); - } - - $wp_admin_bar->add_menu( - array( - 'id' => 'gp_elements-menu', - 'title' => $title, - 'href' => esc_url( admin_url( 'edit.php?post_type=gp_elements' ) ), - ) - ); - - if ( ! empty( $generate_elements ) ) { - // Prevent "Entire Site" Elements from being counted on non-edit pages in the admin. - if ( is_admin() && function_exists( 'get_current_screen' ) ) { - $screen = get_current_screen(); - - if ( ! isset( $screen->is_block_editor ) || ! $screen->is_block_editor ) { - return; - } - - if ( 'edit' !== $screen->parent_base ) { - return; - } - } - - foreach ( (array) $generate_elements as $key => $data ) { - $label = GeneratePress_Elements_Helper::get_element_type_label( $data['type'] ); - - $wp_admin_bar->add_menu( - array( - 'id' => 'element-' . absint( $data['id'] ), - 'parent' => 'gp_elements-menu', - 'title' => get_the_title( $data['id'] ) . ' (' . $label . ')', - 'href' => get_edit_post_link( $data['id'] ), - ) - ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/font-library/class-font-library-cpt.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/font-library/class-font-library-cpt.php deleted file mode 100644 index e8afe669..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/font-library/class-font-library-cpt.php +++ /dev/null @@ -1,134 +0,0 @@ - _x( 'Fonts', 'Post Type General Name', 'gp-premium' ), - 'singular_name' => _x( 'Font', 'Post Type Singular Name', 'gp-premium' ), - 'menu_name' => __( 'Fonts', 'gp-premium' ), - 'all_items' => __( 'All Fonts', 'gp-premium' ), - 'add_new' => __( 'Add New Font', 'gp-premium' ), - 'add_new_item' => __( 'Add New Font', 'gp-premium' ), - 'new_item' => __( 'New Font', 'gp-premium' ), - 'edit_item' => __( 'Edit Font', 'gp-premium' ), - 'update_item' => __( 'Update Font', 'gp-premium' ), - 'search_items' => __( 'Search Font', 'gp-premium' ), - 'item_published' => __( 'Font published.', 'gp-premium' ), - 'item_updated' => __( 'Font updated.', 'gp-premium' ), - 'item_scheduled' => __( 'Font scheduled.', 'gp-premium' ), - 'item_reverted_to_draft' => __( 'Font reverted to draft.', 'gp-premium' ), - ); - - $args = array( - 'labels' => $labels, - 'supports' => array( 'title', 'custom-fields' ), - 'hierarchical' => false, - 'public' => false, - 'show_ui' => false, - 'show_in_menu' => true, - 'has_archive' => false, - 'exclude_from_search' => true, - 'show_in_rest' => true, - ); - - register_post_type( GeneratePress_Pro_Font_Library::FONT_LIBRARY_CPT, $args ); - - // Font variants. - register_post_meta( - GeneratePress_Pro_Font_Library::FONT_LIBRARY_CPT, - 'gp_font_variants', - array( - 'type' => 'array', - 'show_in_rest' => false, - ) - ); - - // Font family alias. - register_post_meta( - GeneratePress_Pro_Font_Library::FONT_LIBRARY_CPT, - 'gp_font_family_alias', - array( - 'type' => 'string', - 'show_in_rest' => false, - ) - ); - - // Font display value. - register_post_meta( - GeneratePress_Pro_Font_Library::FONT_LIBRARY_CPT, - 'gp_font_display', - array( - 'type' => 'string', - 'show_in_rest' => false, - ) - ); - - // Font source. - register_post_meta( - GeneratePress_Pro_Font_Library::FONT_LIBRARY_CPT, - 'gp_font_source', - array( - 'type' => 'string', - 'show_in_rest' => false, - ) - ); - - // Font family fallback. - register_post_meta( - GeneratePress_Pro_Font_Library::FONT_LIBRARY_CPT, - 'gp_font_fallback', - array( - 'type' => 'string', - 'show_in_rest' => false, - ) - ); - - // Font family preview. - register_post_meta( - GeneratePress_Pro_Font_Library::FONT_LIBRARY_CPT, - 'gp_font_preview', - array( - 'type' => 'string', - 'show_in_rest' => false, - ) - ); - - // Font family variable. - register_post_meta( - GeneratePress_Pro_Font_Library::FONT_LIBRARY_CPT, - 'gp_font_variable', - array( - 'type' => 'string', - 'show_in_rest' => false, - ) - ); - } -} - -GeneratePress_Pro_Font_Library_CPT::get_instance()->init(); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/font-library/class-font-library-optimize.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/font-library/class-font-library-optimize.php deleted file mode 100644 index b688a8d7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/font-library/class-font-library-optimize.php +++ /dev/null @@ -1,252 +0,0 @@ - self::USER_AGENT, - ) - ); - - $code = wp_remote_retrieve_response_code( $response ); - - if ( 200 !== $code ) { - return ''; - } - - return wp_remote_retrieve_body( $response ); - } - - /** - * Parse the stylesheet and build it into a font object which OMGF can understand. - * - * @param string $stylesheet A valid CSS stylesheet. - * - * @return array - */ - private static function convert_to_fonts_object( $stylesheet ) { - preg_match_all( '/font-family:\s\'(.*?)\';/', $stylesheet, $font_families ); - - if ( empty( $font_families[1] ) ) { - return array(); - } - - $font_families = array_unique( $font_families[1] ); - $object = array(); - - foreach ( $font_families as $font_family ) { - $slug = sanitize_title( $font_family ); - $object[ $slug ] = array( - 'slug' => $slug, - 'fontFamily' => $font_family, - 'variants' => self::parse_variants( $stylesheet, $font_family ), - 'subsets' => self::parse_subsets( $stylesheet, $font_family ), - ); - } - - return $object; - } - - /** - * Parse a stylesheet from Google Fonts' API into a valid Font Object. - * - * @param string $stylesheet The stylesheet to parse. - * @param string $font_family The font family used in the parse. - * - * @return array - */ - private static function parse_variants( $stylesheet, $font_family ) { - /** - * This also captures the commented Subset name. - */ - preg_match_all( '/\/\*\s.*?}/s', $stylesheet, $font_faces ); - - if ( empty( $font_faces[0] ) ) { - return array(); - } - - $font_object = array(); - - foreach ( $font_faces[0] as $font_face ) { - // Check for exact match of font-family. - if ( ! preg_match( '/font-family:[\s\'"]*?' . $font_family . '[\'"]?;/', $font_face ) ) { - continue; - } - - preg_match( '/font-style:\s(normal|italic);/', $font_face, $font_style ); - preg_match( '/font-weight:\s([0-9]+);/', $font_face, $font_weight ); - preg_match( '/src:\surl\((.*?woff2)\)/', $font_face, $font_src ); - preg_match( '/\/\*\s([a-z\-0-9\[\]]+?)\s\*\//', $font_face, $subset ); - preg_match( '/unicode-range:\s(.*?);/', $font_face, $range ); - - $subset = ! empty( $subset[1] ) ? trim( $subset[1], '[]' ) : ''; - - /** - * Remove variants that have subset the user doesn't need. - */ - $allowed_subsets = apply_filters( - 'generatepress_google_font_subsets', - GeneratePress_Pro_Font_Library::get_settings( 'preferred_subset' ) - ); - - if ( empty( $allowed_subsets ) ) { - $allowed_subsets = array( 'latin' ); - } - - if ( ! empty( $subset ) && ! in_array( $subset, $allowed_subsets, true ) && ! is_numeric( $subset ) ) { - continue; - } - - /** - * If $subset is empty, assume it's a logographic (Chinese, Japanese, etc.) character set. - * - * @TODO: Apply subset setting here. - */ - if ( is_numeric( $subset ) ) { - $subset = 'logogram-' . $subset; - } - - $key = $subset . '-' . $font_weight[1] . ( 'normal' === $font_style[1] ? '' : '-' . $font_style[1] ); - - // Setup font object data. - $font_object[ $key ] = array( - 'fontFamily' => $font_family, - 'fontStyle' => $font_style[1], - 'fontWeight' => $font_weight[1], - 'src' => $font_src[1], - ); - - if ( ! empty( $subset ) ) { - $font_object[ $key ]['subset'] = $subset; - } - - if ( ! empty( $range ) && isset( $range[1] ) ) { - $font_object[ $key ]['range'] = $range[1]; - } - } - - return $font_object; - } - - /** - * Parse stylesheets for subsets, which in Google Fonts stylesheets are always - * included, commented above each @font-face statements, e.g. /* latin-ext - * - * @param string $stylesheet The stylesheet to parse. - * @param string $font_family The font family used in the parse. - * - * @return array - */ - private static function parse_subsets( $stylesheet, $font_family ) { - - preg_match_all( '/\/\*\s([a-z\-]+?)\s\*\//', $stylesheet, $subsets ); - - if ( empty( $subsets[1] ) ) { - return array(); - } - - $subsets = array_unique( $subsets[1] ); - - return $subsets; - } - -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/font-library/class-font-library-rest.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/font-library/class-font-library-rest.php deleted file mode 100644 index b91e5aea..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/font-library/class-font-library-rest.php +++ /dev/null @@ -1,579 +0,0 @@ -namespace . $this->version; - - // Get fonts from CPT. - register_rest_route( - $namespace, - '/get-fonts/', - array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_fonts' ), - 'permission_callback' => array( $this, 'edit_posts_permission' ), - ) - ); - - // Download a Google font. - register_rest_route( - $namespace, - '/download-google-font/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'download_google_font' ), - 'permission_callback' => array( $this, 'edit_posts_permission' ), - ) - ); - - // Upload a font. - register_rest_route( - $namespace, - '/upload-fonts/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'upload_fonts' ), - 'permission_callback' => array( $this, 'edit_posts_permission' ), - ) - ); - - // Delete a font family. - register_rest_route( - $namespace, - '/delete-font/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'delete_font' ), - 'permission_callback' => array( $this, 'edit_posts_permission' ), - ) - ); - - // Get font library settings. - register_rest_route( - $namespace, - '/get-settings/', - array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_settings' ), - 'permission_callback' => array( $this, 'edit_posts_permission' ), - ) - ); - - // Set font library settings. - register_rest_route( - $namespace, - '/set-settings/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'set_settings' ), - 'permission_callback' => array( $this, 'edit_posts_permission' ), - ) - ); - - register_rest_route( - $namespace, - '/optimize-google-fonts/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'optimize_google_fonts' ), - 'permission_callback' => array( $this, 'edit_posts_permission' ), - ) - ); - - register_rest_route( - $namespace, - '/update-font-post/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'update_font_post' ), - 'permission_callback' => array( $this, 'edit_posts_permission' ), - ) - ); - } - - /** - * Get font posts. - * - * @param WP_REST_Request $request The request object. - * - * @return array The response. - */ - public function get_fonts( WP_REST_Request $request ) { - $name = $request->get_param( 'name' ); - $response = GeneratePress_Pro_Font_Library::get_fonts( $name ); - - return $this->success( $response ); - } - - /** - * Generate font CSS. - * - * @return mixed - */ - public function build_css_file() { - - $result = GeneratePress_Pro_Font_Library::build_css_file(); - - if ( is_wp_error( $result ) ) { - return $this->error( 'font_css_generation_failed', __( 'Failed to generate font CSS.', 'gp-premium' ) ); - } - - return $this->success( $result ); - } - - /** - * Delete a specific font from the library and the associated CPT post. - * - * @param WP_REST_Request $request request object. - * - * @return mixed - */ - public function delete_font( WP_REST_Request $request ) { - $font_id = $request->get_param( 'fontId' ); - $slug = get_post_field( 'post_name', $font_id ); - $upload_dir = wp_get_upload_dir(); - $font_base_path = trailingslashit( $upload_dir['basedir'] ) . 'generatepress/fonts/' . $slug . '/'; - - // Delete the font post. - $success = wp_delete_post( $font_id, true ); - - if ( ! $success ) { - return $this->error( - 'font_post_delete_failed', - __( 'Failed to delete font post.', 'gp-premium' ) - ); - } - - // Delete the font sub folder if it exists. - if ( file_exists( $font_base_path ) ) { - GeneratePress_Pro_Font_Library::delete_directory( $font_base_path ); - } - - // Regenerate the font CSS. - $this->build_css_file(); - - // Return success. - return $this->success( __( 'Font successfully deleted!', 'gp-premium' ) ); - } - - /** - * Download a specific Google font and update the CPT. - * - * @param WP_REST_Request $request request object. - * - * @return mixed - */ - public function optimize_google_fonts( WP_REST_Request $request ) { - $font = $request->get_param( 'font' ) ?? array(); - $variants = $request->get_param( 'variants' ) ?? array(); - - if ( ! $font || ! $variants ) { - return $this->failed( 'No font or variants provided' ); - } - - $optimized_variants = GeneratePress_Pro_Font_Library_Optimize::get_variants( $font, $variants ); - - if ( $optimized_variants ) { - foreach ( $optimized_variants as $key => $optimized_variant ) { - foreach ( $variants as &$variant ) { - $style_match = $variant['fontStyle'] === $optimized_variant['fontStyle']; - $weight_match = $variant['fontWeight'] === $optimized_variant['fontWeight']; - - if ( $style_match && $weight_match ) { - $variant['src'] = $optimized_variant['src']; - break; - } - } - } - } - - return $this->success( $variants ); - } - - /** - * Check if a font post exists by slug and create it if it doesn't exist. - * - * @param array $variant The font variant to check. - * @param array $slug The font slug. - * @return mixed - */ - public static function get_font_post( $variant, $slug ) { - global $wpdb; - - $font_post = $wpdb->get_row( - $wpdb->prepare( - "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type = %s", - $slug, - GeneratePress_Pro_Font_Library::FONT_LIBRARY_CPT - ) - ); - - if ( $font_post ) { - return $font_post->ID; - } - - $font_post = wp_insert_post( - array( - 'post_title' => $variant['fontFamily'], - 'post_name' => $slug, - 'post_type' => GeneratePress_Pro_Font_Library::FONT_LIBRARY_CPT, - 'post_status' => 'publish', - 'wp_error' => true, - 'meta_input' => array( - 'gp_font_family_alias' => '', - 'gp_font_variants' => array(), - 'gp_font_display' => 'auto', - 'gp_font_fallback' => '', - 'gp_font_variable' => GeneratePress_Pro_Font_Library::CSS_VAR_PREFIX . $slug, - ), - ) - ); - - return $font_post; - } - - /** - * Upload a specific custom font and update the CPT. - * - * @param WP_REST_Request $request request object. - * - * @return mixed - */ - public function upload_fonts( WP_REST_Request $request ) { - $font = $request->get_param( 'font' ) ?? array(); - $variants = $request->get_param( 'variants' ); - $source = $request->get_param( 'source' ); - $slug = $request->get_param( 'slug' ) ?? $font['slug'] ?? ''; - $results = array( - 'ID' => null, - 'variants' => array(), - ); - - // Tweaks variants based on the source if needed. - if ( 'custom' === $source ) { - // Decode the FormData sent via POST. - $variants = json_decode( $variants, true ); - } - - foreach ( $variants as $variant ) { - // Move the uploaded font asset from the temp folder to the fonts directory. - if ( ! function_exists( 'wp_handle_upload' ) ) { - require_once ABSPATH . 'wp-admin/includes/file.php'; - } - - $file = $variant['src']; - - // If custom assume the font is being uploaded. - if ( 'custom' === $source ) { - $file_params = $request->get_file_params(); - $file = $file_params[ $variant['src'] ] ?? $variant['src']; - } - - $font_file = GeneratePress_Pro_Font_Library::handle_font_file_upload( $variant, $slug, $file ); - - if ( is_wp_error( $font_file ) ) { - $results['error'][] = array( - 'font' => $variant, - 'message' => $font_file->get_error_message(), - ); - - continue; - } - - // Get the font post for this variant. - $font_post = self::get_font_post( $variant, $slug ); - - if ( is_wp_error( $font_post ) ) { - return $this->error( 500, __( 'Failed to create font post.', 'gp-premium' ) ); - } - - if ( 'google' === $source ) { - $font_family = explode( ', ', $font['fontFamily'] ?? '' ); - // Remove the main font-family. - array_shift( $font_family ); - - // Set the fallback if we can infer one. - if ( $font_family ) { - $fallback = implode( ', ', $font_family ); - update_post_meta( $font_post, 'gp_font_fallback', $fallback ); - } - } - - $existing_variants = get_post_meta( $font_post, 'gp_font_variants', true ); - - if ( ! is_array( $variants ) ) { - $existing_variants = array(); - } - - $checked_variants = GeneratePress_Pro_Font_Library::check_variants( - $existing_variants, - array( - 'src' => $font_file['url'], - 'fontFamily' => $variant['fontFamily'], - 'fontStyle' => $variant['fontStyle'], - 'fontWeight' => $variant['fontWeight'], - 'name' => GeneratePress_Pro_Font_Library::get_variant_name( $variant ), - 'isVariable' => $variant['isVariable'] ?? false, - 'source' => 'custom', - 'disabled' => false, - 'preview' => '', - ) - ); - - // Update the font post meta with merged variants. - update_post_meta( $font_post, 'gp_font_variants', $checked_variants ); - - // Generate the font CSS. - $generate_css = $this->build_css_file(); - - if ( false === $generate_css->data['success'] ) { - return $this->error( 500, __( 'CSS Generation failed', 'gp-premium' ) ); - } - - $results['ID'] = $font_post; - $results['variants'] = $checked_variants; - } - - return $this->success( $results ); - } - - /** - * Get font library settings. - * - * @return mixed - */ - public function get_settings() { - return $this->success( get_option( 'gp_font_library_settings', array() ) ); - } - - /** - * Update font library settings. - * - * @param WP_REST_Request $request request object. - * - * @return mixed - */ - public function set_settings( WP_REST_Request $request ) { - $settings = $request->get_param( 'settings' ); - $sanitized_settings = array(); - - foreach ( $settings as $setting => $value ) { - if ( 'google_gdpr' === $setting ) { - $sanitized_settings[ $setting ] = (bool) $value; - } elseif ( 'preferred_subset' === $setting ) { - // Stored as an array to support multiple preferred subsets in the future. - $sanitized_settings[ $setting ] = array( sanitize_text_field( $value ) ); - } else { - $sanitized_settings[ $setting ] = sanitize_text_field( $value ); - } - } - - $updated = update_option( - GeneratePress_Pro_Font_Library::SETTINGS_OPTION, - $sanitized_settings, - false - ); - - if ( $updated ) { - // Return success. - return $this->success( - array( - 'message' => __( 'Font settings successfully updated!', 'gp-premium' ), - 'response' => $updated, - 'settings' => $sanitized_settings, - ) - ); - } - - return $this->failed( - array( - 'message' => __( 'Failed to update font settings.', 'gp-premium' ), - 'settings' => $sanitized_settings, - ) - ); - - } - - /** - * Update a font post. - * - * @param WP_REST_Request $request request object. - * - * @return mixed - */ - public function update_font_post( WP_REST_Request $request ) { - $font_id = $request->get_param( 'id' ); - $status = $request->get_param( 'status' ); - $font_family_alias = $request->get_param( 'alias' ); - $new_variants = $request->get_param( 'newVariants' ); - $delete_variants = $request->get_param( 'deleteVariants' ); - $font_display = $request->get_param( 'fontDisplay' ); - $fallback = $request->get_param( 'fallback' ); - $css_variable = $request->get_param( 'cssVariable' ); - $slug = get_post_field( 'post_name', $font_id ); - - // Update the font post. - wp_update_post( - array( - 'ID' => $font_id, - 'post_status' => $status, - 'meta_input' => array( - 'gp_font_family_alias' => $font_family_alias, - 'gp_font_variants' => $new_variants, - 'gp_font_display' => $font_display, - 'gp_font_fallback' => $fallback, - 'gp_font_variable' => $css_variable, - ), - ) - ); - - $upload_dir = wp_get_upload_dir(); - $base_path = trailingslashit( $upload_dir['basedir'] ) . 'generatepress/fonts/' . $slug . '/'; - foreach ( $delete_variants as $variant ) { - if ( isset( $variant['deleteStatus'] ) && $variant['deleteStatus'] ) { - $file_path = $base_path . basename( $variant['src'] ); - if ( file_exists( $file_path ) ) { - unlink( $file_path ); - } - } - } - - // Regenerate the font CSS. - $this->build_css_file(); - - // Return success. - return $this->success( __( 'Font post successfully updated!', 'gp-premium' ) ); - } - - /** - * Get edit options permissions. - * - * @return bool - */ - public function update_settings_permission() { - return current_user_can( 'manage_options' ); - } - - /** - * Get edit posts permissions. - * - * @return bool - */ - public function edit_posts_permission() { - return current_user_can( 'edit_posts' ); - } - - /** - * Success rest. - * - * @param mixed $response response data. - * @param mixed $data data. - * @return mixed - */ - public function success( $response, $data = null ) { - return new WP_REST_Response( - array( - 'success' => true, - 'response' => $response, - 'data' => $data, - ), - 200 - ); - } - - /** - * Failed rest. - * - * @param mixed $response response data. - * @return mixed - */ - public function failed( $response ) { - return new WP_REST_Response( - array( - 'success' => false, - 'response' => $response, - ), - 200 - ); - } - - /** - * Error rest. - * - * @param mixed $code error code. - * @param mixed $response response data. - * @return mixed - */ - public function error( $code, $response ) { - return new WP_REST_Response( - array( - 'error' => true, - 'success' => false, - 'error_code' => $code, - 'response' => $response, - ), - 500 - ); - } -} - -GeneratePress_Pro_Font_Library_Rest::get_instance(); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/font-library/class-font-library.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/font-library/class-font-library.php deleted file mode 100644 index a8dffd38..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/font-library/class-font-library.php +++ /dev/null @@ -1,840 +0,0 @@ - __( 'Font Library', 'gp-premium' ), - 'url' => self::get_font_library_uri(), - 'class' => 'appearance_page_generatepress-font-library' === $screen->id ? 'active' : '', - 'id' => 'gp-font-library-tab', - ); - - return $tabs; - } - - /** - * Add our menu item. - */ - public function add_menu() { - add_submenu_page( - 'themes.php', - __( 'Font Library', 'gp-premium' ), - __( 'Font Library', 'gp-premium' ), - 'manage_options', - 'generatepress-font-library', - array( $this, 'library_page' ) - ); - } - - /** - * Add our page. - */ - public function library_page() { - echo '
    '; - } - - /** - * Add tags to the head element for the font library page. - */ - public function add_head_tags() { - $screen = get_current_screen(); - $user_id = get_current_user_id(); - $google_gdpr = (bool) self::get_settings( 'google_gdpr' ); - - // Stop if we're not on the right page or the user hasn't opted in to google fonts. - if ( 'appearance_page_generatepress-font-library' !== $screen->id || ! $google_gdpr ) { - return; - } - - echo ' - - - - '; - } - - /** - * Add our scripts. - */ - public function enqueue_scripts() { - $screen = get_current_screen(); - - if ( 'appearance_page_generatepress-font-library' === $screen->id ) { - $assets = generate_premium_get_enqueue_assets( 'font-library' ); - $upload_dir = wp_get_upload_dir(); - - wp_enqueue_script( - 'generatepress-pro-font-library', - GP_PREMIUM_DIR_URL . 'dist/font-library.js', - $assets['dependencies'], - $assets['version'], - true - ); - - if ( function_exists( 'wp_set_script_translations' ) ) { - wp_set_script_translations( 'generatepress-pro-font-library', 'gp-premium', GP_PREMIUM_DIR_PATH . 'langs' ); - } - - wp_localize_script( - 'generatepress-pro-font-library', - 'gppFontLibrary', - array( - 'uploadsUrl' => $upload_dir['baseurl'], - ) - ); - - wp_enqueue_style( - 'generatepress-pro-font-library', - GP_PREMIUM_DIR_URL . 'dist/font-library.css', - array( 'wp-components' ), - GP_PREMIUM_VERSION - ); - } - } - - /** - * Tell GeneratePress this is an admin page. - * - * @param array $screens Existing screens. - */ - public function add_dashboard_screen( $screens ) { - $screens[] = 'appearance_page_generatepress-font-library'; - - return $screens; - } - - /** - * Get font posts. - * - * @param string $name font name. - * - * @return mixed - */ - public static function get_fonts( $name = null ) { - $args = array( - 'post_type' => self::FONT_LIBRARY_CPT, - 'post_status' => 'any', - 'numberposts' => GeneratePress_Pro_Font_Library::FONTS_MAX_QUERY, // phpcs:ignore - 'fields' => 'ids', - 'no_found_rows' => true, - 'update_post_meta_cache' => false, - 'update_post_term_cache' => false, - 'order' => 'ASC', - ); - - if ( $name ) { - $args['name'] = $name; - } - - $all_fonts = get_posts( $args ); - $response = array(); - - if ( is_array( $all_fonts ) ) { - foreach ( $all_fonts as $font_post ) { - $font_name = get_the_title( $font_post ); - $alias = get_post_meta( $font_post, 'gp_font_family_alias', true ); - $slug = get_post_field( 'post_name', $font_post ); - $status = get_post_status( $font_post ); - $fallback = get_post_meta( $font_post, 'gp_font_fallback', true ); - $preview = get_post_meta( $font_post, 'gp_font_preview', true ); - $font_family = empty( $alias ) ? $font_name : $alias; - - $font_family = "\"$font_family\""; - - if ( $fallback ) { - $font_family .= ", $fallback"; - } - - // Setup the font data. - $response[] = array( - 'id' => $font_post, - 'name' => $font_name, - 'fontFamily' => $font_family, - 'disabled' => 'publish' !== $status, - 'slug' => get_post_field( 'post_name', $font_post ), - 'alias' => get_post_meta( $font_post, 'gp_font_family_alias', true ), - 'variants' => get_post_meta( $font_post, 'gp_font_variants', true ), - 'source' => get_post_meta( $font_post, 'gp_font_source', true ), - 'fallback' => $fallback, - 'fontDisplay' => get_post_meta( $font_post, 'gp_font_display', true ), - 'preview' => empty( $preview ) ? '' : $preview, - 'cssVariable' => get_post_meta( $font_post, 'gp_font_variable', true ), - ); - } - - return $response; - } else { - return array(); - } - } - - /** - * Get the font library URI. - * - * @return string - */ - public static function get_font_library_uri() { - return admin_url( 'themes.php?page=generatepress-font-library' ); - } - - /** - * Font format mappings. - * - * @param array $font Array of font data. - * @return string - */ - public static function get_font_face_rule( $font ) { - $css = ''; - if ( ! empty( $font['variants'] ) ) { - $font_family = $font['alias'] ? $font['alias'] : $font['name']; - - foreach ( $font['variants'] as $variant ) { - $is_disabled = $variant['disabled'] ?? false; - - if ( $is_disabled ) { - continue; - } - - $format = self::get_font_format( $variant['src'] ); - $css .= "@font-face { - font-display: {$font['fontDisplay']}; - font-family: \"$font_family\"; - font-style: {$variant['fontStyle']}; - font-weight: {$variant['fontWeight']}; - src: url('{$variant['src']}')$format; -}\n"; - } - } - - return $css; - } - - /** - * Font format mappings. - * - * @param string $font_url File extension. - * @return string|null - */ - private static function get_font_format( $font_url ) { - $extension = pathinfo( $font_url, PATHINFO_EXTENSION ); - - $format_map = array( - 'woff' => 'woff', - 'woff2' => 'woff2', - 'ttf' => 'truetype', - 'otf' => 'opentype', - ); - - $format_string = isset( $format_map[ $extension ] ) ? $format_map[ $extension ] : null; - return $format_string ? " format('$format_string')" : ''; - } - - /** - * Parses a font variant string to determine weight and style. - * Returns an array with 'weight', 'style'. - * - * @param string $variant Font variant string. - * @return array - */ - private static function parse_font_variant( $variant ) { - $weight = '400'; - $style = 'normal'; - - if ( 'regular' === $variant ) { - return array( - 'weight' => $weight, - 'style' => $style, - ); - } - - if ( 'italic' === $variant || strpos( $variant, 'italic' ) !== false ) { - $style = 'italic'; - if ( strpos( $variant, 'italic' ) !== false ) { - $variant = str_replace( 'italic', '', $variant ); - } - } - - return array( - 'weight' => empty( $variant ) ? $weight : $variant, - 'style' => $style, - ); - } - - /** - * Checks if the existing font variant exists. - * - * Overwrite it if it exists, and delete associated font file if different. - * Otherwise, add new variant if not found in the list. - * - * @param array $variants Font variants. - * @param int $new_variant New variant to be added. - * @param string $base_path Base path. - * - * @return array The resolved list of variants. - */ - public static function check_variants( $variants, $new_variant ) { - $checked_variants = $variants; - if ( empty( $variants ) ) { - return array( $new_variant ); - } - - $found = false; - foreach ( $variants as $key => $variant ) { - if ( $variant['name'] === $new_variant['name'] ) { - $checked_variants[ $key ] = $new_variant; - $found = true; - break; - } - } - - if ( ! $found ) { - $checked_variants[] = $new_variant; - } - - return $checked_variants; - } - - /** - * Format uploaded font variant. - * - * @param array $variant Font variant. - * @return string The formatted variant name. - */ - public static function get_variant_name( $variant ) { - // Force variant to array-like structure. - $is_italic = 'italic' === $variant['fontStyle']; - - $labels = array( - '100' => 'Thin 100', - '200' => 'ExtraLight 200', - '250' => 'ExtraLight 250', - '300' => 'Light 300', - '400' => 'Regular 400', - 'regular' => 'Regular 400', - '500' => 'Medium 500', - '600' => 'SemiBold 600', - '700' => 'Bold 700', - '800' => 'ExtraBold 800', - '900' => 'Black 900', - ); - - $resolved_label = $labels[ $variant['fontWeight'] ]; - - if ( $resolved_label ) { - return $resolved_label . ( $is_italic ? ' Italic' : '' ); - } - - return str_replace( ' ', '-', $variant['fontWeight'] ) . ' ' . __( '(Variable)', 'gp-premium' ); - } - - /** - * Format a font file name to remove spaces, commas. - * - * @param string $name Font name. - * @return string - */ - public static function format_font_filename( $name ) { - // Replace spaces and commas in file name with hyphen. - $name = preg_replace( '/[ ,]/', '-', $name ); - return $name; - } - - /** - * Returns the expected mime-type values for font files, depending on PHP version. - * - * This is needed because font mime types vary by PHP version, so checking the PHP version - * is necessary until a list of valid mime-types for each file extension can be provided to - * the 'upload_mimes' filter. - * - * @return array A collection of mime types keyed by file extension. - */ - public static function get_allowed_font_mime_types() { - $php_7_ttf_mime_type = PHP_VERSION_ID >= 70300 ? 'application/font-sfnt' : 'application/x-font-ttf'; - - return array( - 'otf' => 'application/vnd.ms-opentype', - 'ttf' => PHP_VERSION_ID >= 70400 ? 'font/sfnt' : $php_7_ttf_mime_type, - 'woff' => PHP_VERSION_ID >= 80112 ? 'font/woff' : 'application/font-woff', - 'woff2' => PHP_VERSION_ID >= 80112 ? 'font/woff2' : 'application/font-woff2', - ); - } - - /** - * Get the font CSS file. - * - * @param string $type Type of path to return. Can return the `path` or `url` to the file. - * @return string - */ - public static function get_font_css_file( $type ) { - $upload_dir = wp_get_upload_dir(); - $file_path = 'generatepress/fonts/fonts.css'; - $base = ''; - - if ( 'url' === $type ) { - $base = $upload_dir['baseurl']; - } elseif ( 'path' === $type ) { - $base = $upload_dir['basedir']; - } - - return $base ? trailingslashit( $base ) . $file_path : ''; - } - - /** - * Get the font CSS file URL. - * - * @return string - */ - public static function get_font_css_file_url() { - $css_file_url = self::get_font_css_file( 'url' ); - $css_file_dir = self::get_font_css_file( 'path' ); - - return file_exists( $css_file_dir ) - ? $css_file_url - : ''; - } - - /** - * Add our font CSS. - */ - public function enqueue_font_css() { - $font_file_url = self::get_font_css_file_url(); - - // Enqueue the custom fonts CSS if the file exists. - if ( $font_file_url ) { - $version = filemtime( self::get_font_css_file( 'path' ) ) ?? GP_PREMIUM_VERSION; - - wp_enqueue_style( 'generatepress-fonts', $font_file_url, array(), $version ); - } - } - - /** - * Add a font to the uploads directory either from $_FILES or a remote URL. - * - * @param array $variant Font variant object. - * @param string $slug Font slug. - * @param array|null $file Single file item from $_FILES or null. - * @return array|WP_Error Array containing uploaded file attributes on success, or WP_Error object on failure. - */ - public static function handle_font_file_upload( $variant, $slug, $file ) { - if ( ! $slug ) { - $slug = $variant['slug'] ?? ''; - } - $upload_dir = wp_get_upload_dir(); - $base_path = trailingslashit( $upload_dir['basedir'] ) . 'generatepress/fonts/' . $slug . '/'; - - // Ensure the directory exists. - if ( ! file_exists( $base_path ) ) { - wp_mkdir_p( $base_path ); - } - - /** - * If $file is an array, assume it's a param from $_FILES. - */ - if ( is_array( $file ) ) { - $file_name = basename( $file['name'] ); - $file_path = $base_path . $file_name; - - // Check if the font file exists and delete it if so. - if ( file_exists( $file_path ) ) { - unlink( $file_path ); - } - - $set_upload_dir = function ( $font_dir ) use ( $base_path, $slug ) { - $font_dir['path'] = $base_path; - $font_dir['url'] = untrailingslashit( - content_url( 'uploads/generatepress/fonts/' . $slug ) - ); - $font_dir['subdir'] = ''; - return $font_dir; - }; - - add_filter( 'upload_mimes', array( __CLASS__, 'get_allowed_font_mime_types' ) ); - add_filter( 'upload_dir', $set_upload_dir ); - - $overrides = array( - 'upload_error_handler' => array( __CLASS__, 'handle_font_file_upload_error' ), - // Not testing a form submission. - 'test_form' => false, - // Only allow uploading font files for this request. - 'mimes' => self::get_allowed_font_mime_types(), - ); - - $uploaded_file = wp_handle_upload( $file, $overrides ); - - remove_filter( 'upload_dir', $set_upload_dir ); - remove_filter( 'upload_mimes', array( __CLASS__, 'get_allowed_font_mime_types' ) ); - - return $uploaded_file; - } - - $file_name = basename( $variant['src'] ); - $file_path = $base_path . $file_name; - - $response = wp_remote_get( $variant['src'] ); - - if ( is_wp_error( $response ) ) { - $error_message = $response->get_error_message(); - return new WP_Error( 500, "Failed to download {$variant['fontFamily']} from {$variant['src']}: $error_message" ); - } - - // Save the file. - $filesystem = generate_premium_get_wp_filesystem(); - - if ( ! $filesystem ) { - return new WP_Error( 500, 'Error setting up the file system object.' ); - } - - $file_contents = wp_remote_retrieve_body( $response ); - - if ( ! $file_contents ) { - return new WP_Error( 500, "Failed to download $variant from {$variant['src']}: Empty body" ); - } - - // Assuming $filesystem is already set up correctly. - $chmod_file = defined( 'FS_CHMOD_FILE' ) ? FS_CHMOD_FILE : 0644; - - if ( is_writable( $file_path ) || is_writable( dirname( $file_path ) ) ) { - if ( $filesystem->put_contents( $file_path, $file_contents, $chmod_file ) ) { - return array( - 'file' => $file_path, - 'url' => trailingslashit( $upload_dir['baseurl'] ) . 'generatepress/fonts/' . $slug . '/' . $file_name, - ); - } else { - return new WP_Error( 500, "Failed to download $variant from {$variant['src']}." ); - } - } - - return new WP_Error( 500, 'Unable to write to file path.' ); - } - - /** - * Handles file upload error. - * - * @param array $file File upload data. - * @param string $message Error message from wp_handle_upload(). - * @return WP_Error WP_Error object. - */ - public static function handle_font_file_upload_error( $file, $message ) { - $status = 500; - $code = 'rest_font_upload_unknown_error'; - - // Note: The absence of a text domain is intentional here as it's checking against a WP core string. - if ( __( 'Sorry, you are not allowed to upload this file type.' ) === $message ) { - $status = 400; - $code = 'rest_font_upload_invalid_file_type'; - } - - return new WP_Error( $code, $message, array( 'status' => $status ) ); - } - - /** - * Runs on wp_after_insert_post to download remote font files. - * - * @param int $post_id Post ID. - * @param string $key The meta key that was imported. - * @param mixed $value The meta value that was imported. - * @return void - */ - public function update_post_meta( $post_id, $key, $value ) { - $upload_dir = wp_get_upload_dir(); - // Bail if we're not working with a font library post variant meta value. - if ( get_post_type( $post_id ) !== self::FONT_LIBRARY_CPT || 'gp_font_variants' !== $key ) { - return; - } - - // Check the src of each variant and if the URL is remote, download the file. - $variants = $value; - - // Stop here if variants aren't found. - if ( ! $variants ) { - return; - } - - foreach ( $variants as &$variant ) { - $site_hostname = wp_parse_url( site_url(), PHP_URL_HOST ); - - // Bail if the variant src is already on this site. - if ( strpos( $variant['src'], $site_hostname ) !== false ) { - continue; - } - - $font_slug = get_post_field( 'post_name', $post_id ); - $font_dir = trailingslashit( $upload_dir['basedir'] ) . 'generatepress/fonts/' . $font_slug . '/'; - $font_base_url = trailingslashit( $upload_dir['baseurl'] ) . 'generatepress/fonts/' . $font_slug . '/'; - $response = wp_remote_get( $variant['src'] ); - $response_code = (int) wp_remote_retrieve_response_code( $response ); - - if ( is_wp_error( $response ) || 200 !== $response_code ) { - continue; - } - - $file_name = basename( $variant['src'] ); - $file_path = $font_dir . $file_name; - - // If the directory exists, remove it and it's contents. - if ( ! file_exists( $font_dir ) ) { - wp_mkdir_p( $font_dir ); - } - - // Setup filesystem. - $filesystem = generate_premium_get_wp_filesystem(); - - // Bail here if the filesystem can't initialize. - if ( ! $filesystem ) { - continue; - } - - $file_contents = wp_remote_retrieve_body( $response ); - - // Bail if file contents are empty or not found. - if ( ! $file_contents ) { - continue; - } - - $chmod_file = defined( 'FS_CHMOD_FILE' ) ? FS_CHMOD_FILE : 0644; - - if ( is_writable( $file_path ) || is_writable( dirname( $file_path ) ) ) { - // Bail if the file can't be written. - if ( ! $filesystem->put_contents( $file_path, $file_contents, $chmod_file ) ) { - continue; - } - } - - $variant['src'] = $font_base_url . $file_name; - } - - // Update the meta value with the new src for each variant. - update_post_meta( $post_id, 'gp_font_variants', $variants ); - } - - /** - * Recursive function to delete a directory and its contents. - * - * @param string $dir directory path. - * @return bool - */ - public static function delete_directory( $dir ) { - if ( ! file_exists( $dir ) ) { - return true; - } - - if ( ! is_dir( $dir ) ) { - return unlink( $dir ); - } - - foreach ( scandir( $dir ) as $item ) { - if ( '.' === $item || '..' === $item ) { - continue; - } - - if ( ! self::delete_directory( $dir . DIRECTORY_SEPARATOR . $item ) ) { - return false; - } - } - - return rmdir( $dir ); - } - - /** - * Check if the post exists by checking the title. - * - * @param bool $post_exists Unused. The default post_exists function value. - * @param array $font The font post array. - * @return int Post ID on success, 0 on failure. - */ - public function maybe_font_exists( $post_exists, $font ) { - /** - * The value of $font here is a post array from the XML import, not our standard - * font array. We need to check if the font exists by title. - */ - return post_exists( $font['post_title'] ); - } - - /** - * Get the CSS variables and values for each font-family. - * - * @return string The color palette variable CSS declaration. - */ - public static function get_css_variables() { - $fonts = self::get_fonts(); - - if ( ! $fonts ) { - return ''; - } - - $variables = ":root {\n"; - - foreach ( $fonts as $font ) { - if ( isset( $font['disabled'] ) && $font['disabled'] ) { - continue; - } - - $variables .= sprintf( - "%s: %s;\n", - $font['cssVariable'], - $font['fontFamily'] - ); - } - - $variables .= "}\n"; - - return $variables; - } - - /** - * Add CSS variable definitions to the block editor. - * - * @param string $css The generated CSS for the stylesheet. - * @return void - **/ - public function add_variable_definitions_to_editor( $css ) { - wp_add_inline_style( 'generateblocks-pro', self::get_css_variables() ); - } - - /** - * Build the font CSS file. - * - * @return string|WP_Error The file path on success, WP_Error on failure. - */ - public static function build_css_file() { - $generated_css = self::generate_font_css(); - $upload_dir = wp_get_upload_dir(); - - // Save the generated font CSS to a file. - $base_path_dir = trailingslashit( $upload_dir['basedir'] ) . 'generatepress/fonts/'; - $file_path = $base_path_dir . 'fonts.css'; - $filesystem = generate_premium_get_wp_filesystem(); - - if ( ! $filesystem ) { - return new WP_Error( 500, __( 'Error setting up the file system object.', 'gp-premium' ) ); - } - - // Assuming $filesystem is already set up correctly. - $chmod_file = defined( 'FS_CHMOD_FILE' ) ? FS_CHMOD_FILE : 0644; - - if ( empty( $generated_css ) ) { - if ( file_exists( $file_path ) ) { - $filesystem->delete( $file_path ); - } - } else { - if ( is_writable( $file_path ) || is_writable( dirname( $file_path ) ) ) { - if ( ! $filesystem->put_contents( $file_path, $generated_css, $chmod_file ) ) { - return new WP_Error( 500, __( 'Failed to write Google font CSS to file.', 'gp-premium' ) ); - } - } - } - - return $file_path; - } - - /** - * Generate font CSS. - * - * @return mixed - */ - public static function generate_font_css() { - $fonts = self::get_fonts(); - $variables = self::get_css_variables(); - $css = $variables . "\n"; - - if ( $fonts ) { - foreach ( $fonts as $font ) { - // Add the generated CSS. - $css .= self::get_font_face_rule( $font ); - } - } - - return apply_filters( 'generatepress_font_css', $css, $fonts ); - } - - /** - * Add the font CSS to the block editor. - * - * @param array $settings The block editor settings. - * @return array - */ - public function add_fonts_to_editor( $settings ) { - $font_file_url = self::get_font_css_file_url(); - - if ( ! $font_file_url ) { - return $settings; - } - - $fonts_import = sprintf( - '@import url("%s");', - $font_file_url - ); - - $settings['styles'][] = array( 'css' => $fonts_import ); - - return $settings; - } - - /** - * Get font library settings. At the moment this is just the Google GDPR setting. - * - * @param string $setting The setting to retrieve. - * @return mixed - */ - public static function get_settings( $setting = null ) { - - $settings = get_option( self::SETTINGS_OPTION, array() ); - - if ( $setting ) { - return $settings[ $setting ] ?? null; - } - - return $settings; - } -} - -GeneratePress_Pro_Font_Library::get_instance()->init(); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/general/class-external-file-css.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/general/class-external-file-css.php deleted file mode 100644 index 9f59b66c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/general/class-external-file-css.php +++ /dev/null @@ -1,449 +0,0 @@ -register_control_type( 'GeneratePress_Action_Button_Control' ); - } - - $wp_customize->add_setting( - 'generate_settings[css_print_method]', - array( - 'default' => $defaults['css_print_method'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_settings[css_print_method]', - array( - 'type' => 'select', - 'label' => __( 'Dynamic CSS Print Method', 'gp-premium' ), - 'description' => __( 'Generating your dynamic CSS in an external file offers significant performance advantages.', 'gp-premium' ), - 'section' => 'generate_general_section', - 'choices' => array( - 'inline' => __( 'Inline Embedding', 'gp-premium' ), - 'file' => __( 'External File', 'gp-premium' ), - ), - 'settings' => 'generate_settings[css_print_method]', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Action_Button_Control( - $wp_customize, - 'generate_regenerate_external_css_file', - array( - 'section' => 'generate_general_section', - 'data_type' => 'regenerate_external_css', - 'nonce' => esc_html( wp_create_nonce( 'generatepress_regenerate_css_file' ) ), - 'label' => __( 'Regenerate CSS File', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'active_callback' => 'generate_is_using_external_css_file_callback', - ) - ) - ); - } - - /** - * Set our CSS Print Method. - * - * @param string $method The existing method. - */ - public function set_print_method( $method ) { - if ( ! function_exists( 'generate_get_option' ) ) { - return $method; - } - - return generate_get_option( 'css_print_method' ); - } - - /** - * Determine if we're using file mode or inline mode. - */ - public function mode() { - $mode = generate_get_css_print_method(); - - if ( 'file' === $mode && $this->needs_update() ) { - $data = get_option( 'generatepress_dynamic_css_data', array() ); - - if ( ! isset( $data['updated_time'] ) ) { - // No time set, so set the current time minus 5 seconds so the file is still generated. - $data['updated_time'] = time() - 5; - update_option( 'generatepress_dynamic_css_data', $data ); - } - - // Only allow processing 1 file every 5 seconds. - $current_time = (int) time(); - $last_time = (int) $data['updated_time']; - - if ( 5 <= ( $current_time - $last_time ) ) { - - // Attempt to write to the file. - $mode = ( $this->can_write() && $this->make_css() ) ? 'file' : 'inline'; - - // Does again if the file exists. - if ( 'file' === $mode ) { - $mode = ( file_exists( $this->file( 'path' ) ) ) ? 'file' : 'inline'; - } - } - } - - return $mode; - } - - /** - * Set things up. - */ - public function init() { - if ( 'file' === $this->mode() ) { - add_filter( 'generate_using_dynamic_css_external_file', '__return_true' ); - add_filter( 'generate_dynamic_css_skip_cache', '__return_true', 20 ); - - // Remove inline CSS in GP < 3.0.0. - if ( ! function_exists( 'generate_get_dynamic_css' ) && function_exists( 'generate_enqueue_dynamic_css' ) ) { - remove_action( 'wp_enqueue_scripts', 'generate_enqueue_dynamic_css', 50 ); - } - } - } - - /** - * Enqueue the dynamic CSS. - */ - public function enqueue_dynamic_css() { - if ( 'file' === $this->mode() ) { - wp_enqueue_style( 'generatepress-dynamic', esc_url( $this->file( 'uri' ) ), array( 'generate-style' ), null ); // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion - - // Move the child theme after our dynamic stylesheet. - if ( is_child_theme() && wp_style_is( 'generate-child', 'enqueued' ) ) { - wp_dequeue_style( 'generate-child' ); - wp_enqueue_style( 'generate-child' ); - } - - // Re-add no-cache CSS in GP < 3.0.0. - if ( ! function_exists( 'generate_get_dynamic_css' ) && function_exists( 'generate_no_cache_dynamic_css' ) ) { - $nocache_css = generate_no_cache_dynamic_css(); - - if ( function_exists( 'generate_do_icon_css' ) ) { - $nocache_css .= generate_do_icon_css(); - } - - wp_add_inline_style( 'generate-style', wp_strip_all_tags( $nocache_css ) ); - } - } - } - - /** - * Make our CSS. - */ - public function make_css() { - $content = ''; - - if ( function_exists( 'generate_get_dynamic_css' ) ) { - $content = generate_get_dynamic_css(); - } elseif ( function_exists( 'generate_base_css' ) && function_exists( 'generate_font_css' ) && function_exists( 'generate_advanced_css' ) && function_exists( 'generate_spacing_css' ) ) { - $content = generate_base_css() . generate_font_css() . generate_advanced_css() . generate_spacing_css(); - } - - $content = apply_filters( 'generate_external_dynamic_css_output', $content ); - - if ( ! $content ) { - return false; - } - - $filesystem = generate_premium_get_wp_filesystem(); - - if ( ! $filesystem ) { - return false; - } - - // Take care of domain mapping. - if ( defined( 'DOMAIN_MAPPING' ) && DOMAIN_MAPPING ) { - if ( function_exists( 'domain_mapping_siteurl' ) && function_exists( 'get_original_url' ) ) { - $mapped_domain = domain_mapping_siteurl( false ); - $original_domain = get_original_url( 'siteurl' ); - - $content = str_replace( $original_domain, $mapped_domain, $content ); - } - } - - if ( is_writable( $this->file( 'path' ) ) || ( ! file_exists( $this->file( 'path' ) ) && is_writable( dirname( $this->file( 'path' ) ) ) ) ) { - $chmod_file = 0644; - - if ( defined( 'FS_CHMOD_FILE' ) ) { - $chmod_file = FS_CHMOD_FILE; - } - - if ( ! $filesystem->put_contents( $this->file( 'path' ), wp_strip_all_tags( $content ), $chmod_file ) ) { - - // Fail! - return false; - - } else { - - $this->update_saved_time(); - - // Success! - return true; - - } - } - } - - /** - * Determines if the CSS file is writable. - */ - public function can_write() { - global $blog_id; - - // Get the upload directory for this site. - $upload_dir = wp_get_upload_dir(); - - // If this is a multisite installation, append the blogid to the filename. - $css_blog_id = ( is_multisite() && $blog_id > 1 ) ? '_blog-' . $blog_id : null; - - $file_name = '/style' . $css_blog_id . '.min.css'; - $folder_path = $upload_dir['basedir'] . DIRECTORY_SEPARATOR . 'generatepress'; - - // Does the folder exist? - if ( file_exists( $folder_path ) ) { - // Folder exists, but is the folder writable? - if ( ! is_writable( $folder_path ) ) { - // Folder is not writable. - // Does the file exist? - if ( ! file_exists( $folder_path . $file_name ) ) { - // File does not exist, therefore it can't be created - // since the parent folder is not writable. - return false; - } else { - // File exists, but is it writable? - if ( ! is_writable( $folder_path . $file_name ) ) { - // Nope, it's not writable. - return false; - } - } - } else { - // The folder is writable. - // Does the file exist? - if ( file_exists( $folder_path . $file_name ) ) { - // File exists. - // Is it writable? - if ( ! is_writable( $folder_path . $file_name ) ) { - // Nope, it's not writable. - return false; - } - } - } - } else { - // Can we create the folder? - // returns true if yes and false if not. - return wp_mkdir_p( $folder_path ); - } - - // all is well! - return true; - } - - /** - * Gets the css path or url to the stylesheet - * - * @param string $target path/url. - */ - public function file( $target = 'path' ) { - global $blog_id; - - // Get the upload directory for this site. - $upload_dir = wp_get_upload_dir(); - - // If this is a multisite installation, append the blogid to the filename. - $css_blog_id = ( is_multisite() && $blog_id > 1 ) ? '_blog-' . $blog_id : null; - - $file_name = 'style' . $css_blog_id . '.min.css'; - $folder_path = $upload_dir['basedir'] . DIRECTORY_SEPARATOR . 'generatepress'; - - // The complete path to the file. - $file_path = $folder_path . DIRECTORY_SEPARATOR . $file_name; - - // Get the URL directory of the stylesheet. - $css_uri_folder = $upload_dir['baseurl']; - - $css_uri = trailingslashit( $css_uri_folder ) . 'generatepress/' . $file_name; - - // Take care of domain mapping. - if ( defined( 'DOMAIN_MAPPING' ) && DOMAIN_MAPPING ) { - if ( function_exists( 'domain_mapping_siteurl' ) && function_exists( 'get_original_url' ) ) { - $mapped_domain = domain_mapping_siteurl( false ); - $original_domain = get_original_url( 'siteurl' ); - $css_uri = str_replace( $original_domain, $mapped_domain, $css_uri ); - } - } - - $css_uri = set_url_scheme( $css_uri ); - - if ( 'path' === $target ) { - return $file_path; - } elseif ( 'url' === $target || 'uri' === $target ) { - $timestamp = ( file_exists( $file_path ) ) ? '?ver=' . filemtime( $file_path ) : ''; - return $css_uri . $timestamp; - } - } - - /** - * Update the our updated file time. - */ - public function update_saved_time() { - $data = get_option( 'generatepress_dynamic_css_data', array() ); - $data['updated_time'] = time(); - - update_option( 'generatepress_dynamic_css_data', $data ); - } - - /** - * Delete the saved time. - */ - public function delete_saved_time() { - $data = get_option( 'generatepress_dynamic_css_data', array() ); - - if ( isset( $data['updated_time'] ) ) { - unset( $data['updated_time'] ); - } - - update_option( 'generatepress_dynamic_css_data', $data ); - } - - /** - * Update our plugin/theme versions. - */ - public function update_versions() { - $data = get_option( 'generatepress_dynamic_css_data', array() ); - - $data['theme_version'] = GENERATE_VERSION; - $data['plugin_version'] = GP_PREMIUM_VERSION; - - update_option( 'generatepress_dynamic_css_data', $data ); - } - - /** - * Do we need to update the CSS file? - */ - public function needs_update() { - $data = get_option( 'generatepress_dynamic_css_data', array() ); - $update = false; - - // If there's no updated time, needs update. - // The time is set in mode(). - if ( ! isset( $data['updated_time'] ) ) { - $update = true; - } - - // If we haven't set our versions, do so now. - if ( ! isset( $data['theme_version'] ) && ! isset( $data['plugin_version'] ) ) { - $update = true; - $this->update_versions(); - - // Bail early so we don't check undefined versions below. - return $update; - } - - // Version numbers have changed, needs update. - if ( (string) GENERATE_VERSION !== (string) $data['theme_version'] || (string) GP_PREMIUM_VERSION !== (string) $data['plugin_version'] ) { - $update = true; - $this->update_versions(); - } - - return $update; - } - - /** - * Regenerate the CSS file. - */ - public function regenerate_css_file() { - check_ajax_referer( 'generatepress_regenerate_css_file', '_nonce' ); - - if ( ! current_user_can( 'manage_options' ) ) { - wp_send_json_error( __( 'Security check failed.', 'gp-premium' ) ); - } - - $this->delete_saved_time(); - - wp_send_json_success(); - } -} - -GeneratePress_External_CSS_File::get_instance(); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/general/enqueue-scripts.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/general/enqueue-scripts.php deleted file mode 100644 index a9108a61..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/general/enqueue-scripts.php +++ /dev/null @@ -1,81 +0,0 @@ - $data ) { - $type = esc_html( GeneratePress_Elements_Helper::get_element_type_label( $data['type'] ) ); - - $active_elements[] = array( - 'type' => $type, - 'name' => get_the_title( $data['id'] ), - 'url' => get_edit_post_link( $data['id'] ), - ); - } - } - - $post_type_is_public = false; - - if ( get_post_type() ) { - $post_type = get_post_type_object( get_post_type() ); - - if ( is_object( $post_type ) && ! empty( $post_type->public ) ) { - $post_type_is_public = true; - } - } - - wp_localize_script( - 'gp-premium-editor', - 'gpPremiumEditor', - array( - 'isBlockElement' => 'gp_elements' === get_post_type(), - 'activeElements' => $active_elements, - 'elementsUrl' => esc_url( admin_url( 'edit.php?post_type=gp_elements' ) ), - 'postTypeIsPublic' => $post_type_is_public, - ) - ); - - wp_enqueue_style( - 'gp-premium-editor', - GP_PREMIUM_DIR_URL . 'dist/editor.css', - array( 'wp-edit-blocks' ), - filemtime( GP_PREMIUM_DIR_PATH . 'dist/editor.css' ) - ); -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons.php deleted file mode 100644 index 1b587f4c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons.php +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - '; - } - - if ( 'shopping-cart' === $icon ) { - $svg = ''; - } - - if ( 'shopping-basket' === $icon ) { - $svg = ''; - } - - if ( 'spinner' === $icon ) { - $svg = ''; - } - - if ( 'pro-menu-bars' === $icon ) { - $svg = ''; - } - - if ( 'pro-close' === $icon ) { - $svg = ''; - } - - if ( $svg ) { - $output = sprintf( - ' - %2$s - ', - $icon, - $svg - ); - } - - return $output; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/gp-premium.eot b/wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/gp-premium.eot deleted file mode 100644 index 72d973946e650143c5f724c18c0fbe2cf576ab27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3020 zcmbVOZ){Ul6hHUf_pe>|x~^S^Y>c*}?SxUF-CErSEHjMpXMkW95(HMdZh+f5#z??_ znZ)>ke*(b-j4^8Tix|`xqb9^GMq@~T5aI_v7$m_D5K#z5C1LCQ-S^%`2a^xn%2cRD;e)qN$D1Q6`Yp>!#wu)@rBQG8Z4z5gD|DGL)k}^c?lWz@YV% zr5@Tty_BXwAb#oqGDy2&D{KO^h+?$Rw0&?kK=HvM8YWH)*KSx4cbB?106B}^ndwUp z{4?`w4MvrahkDYx2S7_89|hHWdiQnzaJb@M$R~+3-}Y>}tE^$eYfyaxeR4Yh{R8<6 z$iG3Jv%PO<@4VMp6_G=S{8Vo)lXmv%zd&w=T-BG}JAmb9Aa_Cz^r!o>r&c=dK_138 z-WbU39>O}&ip2Z?aefjjQHZ2d(s>|nT9o}x3FZ)X1&v|ZQ(H69onw4te1w`gI+P+7 z6D?pe;%lN;LT6EKT2+!v8-bT18XVipC~!l*U3~k++vn~a8y_1VH)jWKkc}NRF*bg! zTy~GTkGflmU&g$`@0k-YFk+bPF3=%)Qcs(v_w65zVaLWtWWrw+Q8`u90&1k?^cAzAl-F`#l9b^Z66;WPM$vI;1KS24y}~QGMn9cq&;Jjf7aFE|rXz`+b@k@2-@e zcg|8>*Dza@tsTb-O2J!5GvKkzS6;=+5wO$}mO{{?F?eTnrj&@Ax-$5OWp&8ZNz~E4 zdRH(I2<}?l-ci7heOyy>aLeYMJ2!7RSc7(-=jn%x?TPuV4_liv&3})v3aLxV(j0TI zHD)mEca+5#_IxQ@!m#hN8CGi2Dpn?Sah|^`X)@OYm1U_CoUHLHzgl1==TcJEr2Jiu z#`H;)^D9>bB<%5N)I(vco}qP*AFpr-F}4#@GjkQGDDw6(0x9XiSS*NsG27Ob75yUe;PJvTgV|IznssAdk~*A}-`Y9SHf!->>D96QjqFg>BI8^4?5fc};%E2<+vIT5ytz$HbLTbj zM0ftBR}$Ioo>?>4>L(K2qZcMrV(&!)tiyS;kcz2-o}$tYYEFJ3Hq@DkjkFR1`95N`AD!#^n7s=}jGA^4bEXAAnBW*#@3wxRcQ)R%8nHV9*(RJ6!@3DCW_j{SmtH4*;ypv|q0aPWE9Y73dEM5ZNWAhyRVw;!2o9_|WE6B@$jjO=d z+q@IG`r(dDt}mDCpZW^z$PVt_k?RjEiY=V}={fDJX~Ff`o;|(k!KrWBX)RlG{X>DC zY=3qzJ(TSVY}*%Dk;%1VZ82&!pS?r)iyl0L`_0F2nub8TfNi6F7+09j=yv-VjZ+kV H`N;Mk0>1K9 diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/gp-premium.svg b/wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/gp-premium.svg deleted file mode 100644 index e1c517d0..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/gp-premium.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - -Generated by IcoMoon - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/gp-premium.ttf b/wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/gp-premium.ttf deleted file mode 100644 index 4bae85f6844108ab76d7625ad5aaf319202725b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2856 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 ax&`WmY%A?Uzs&rAZtDZYEsC$aZ~GVTbLMLR diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/icons.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/icons.css deleted file mode 100644 index be13090e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/icons.css +++ /dev/null @@ -1,10 +0,0 @@ -@font-face { - font-family: 'GP Premium'; - src: url('gp-premium.eot'); - src: url('gp-premium.eot#iefix') format('embedded-opentype'), - url('gp-premium.woff') format('woff'), - url('gp-premium.ttf') format('truetype'), - url('gp-premium.svg#gp-premium') format('svg'); - font-weight: normal; - font-style: normal; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/icons.min.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/icons.min.css deleted file mode 100644 index 442a46bd..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/general/icons/icons.min.css +++ /dev/null @@ -1 +0,0 @@ -@font-face{font-family:'GP Premium';src:url(gp-premium.eot);src:url(gp-premium.eot#iefix) format('embedded-opentype'),url(gp-premium.woff) format('woff'),url(gp-premium.ttf) format('truetype'),url(gp-premium.svg#gp-premium) format('svg');font-weight:400;font-style:normal} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/general/js/smooth-scroll.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/general/js/smooth-scroll.js deleted file mode 100644 index c2a8a5f7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/general/js/smooth-scroll.js +++ /dev/null @@ -1,743 +0,0 @@ -/*! - * smooth-scroll v14.2.1: Animate scrolling to anchor links - * (c) 2018 Chris Ferdinandi - * MIT License - * http://github.com/cferdinandi/smooth-scroll - */ - -/** - * closest() polyfill - * @link https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill - */ -if (window.Element && !Element.prototype.closest) { - Element.prototype.closest = function(s) { - var matches = (this.document || this.ownerDocument).querySelectorAll(s), - i, - el = this; - do { - i = matches.length; - while (--i >= 0 && matches.item(i) !== el) {} - } while ((i < 0) && (el = el.parentElement)); - return el; - }; -} - -/** - * CustomEvent() polyfill - * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent#Polyfill - */ -(function () { - - if (typeof window.CustomEvent === "function") return false; - - function CustomEvent(event, params) { - params = params || { bubbles: false, cancelable: false, detail: undefined }; - var evt = document.createEvent('CustomEvent'); - evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); - return evt; - } - - CustomEvent.prototype = window.Event.prototype; - - window.CustomEvent = CustomEvent; -})(); -/** - * requestAnimationFrame() polyfill - * By Erik Möller. Fixes from Paul Irish and Tino Zijdel. - * @link http://paulirish.com/2011/requestanimationframe-for-smart-animating/ - * @link http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating - * @license MIT - */ -(function() { - var lastTime = 0; - var vendors = ['ms', 'moz', 'webkit', 'o']; - for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { - window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame']; - window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame'] || - window[vendors[x]+'CancelRequestAnimationFrame']; - } - - if (!window.requestAnimationFrame) { - window.requestAnimationFrame = function(callback, element) { - var currTime = new Date().getTime(); - var timeToCall = Math.max(0, 16 - (currTime - lastTime)); - var id = window.setTimeout((function() { callback(currTime + timeToCall); }), - timeToCall); - lastTime = currTime + timeToCall; - return id; - }; - } - - if (!window.cancelAnimationFrame) { - window.cancelAnimationFrame = function(id) { - clearTimeout(id); - }; - } -}()); - -(function (root, factory) { - if (typeof define === 'function' && define.amd) { - define([], (function () { - return factory(root); - })); - } else if (typeof exports === 'object') { - module.exports = factory(root); - } else { - root.SmoothScroll = factory(root); - } -})(typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : this, (function (window) { - - 'use strict'; - - // - // Default settings - // - - var defaults = { - // Selectors - ignore: '[data-scroll-ignore]', - header: null, - topOnEmptyHash: true, - - // Speed & Easing - speed: 500, - clip: true, - offset: 0, - easing: 'easeInOutCubic', - customEasing: null, - - // History - updateURL: true, - popstate: true, - - // Custom Events - emitEvents: true - }; - - - // - // Utility Methods - // - - /** - * Check if browser supports required methods - * @return {Boolean} Returns true if all required methods are supported - */ - var supports = function () { - return ( - 'querySelector' in document && - 'addEventListener' in window && - 'requestAnimationFrame' in window && - 'closest' in window.Element.prototype - ); - }; - - /** - * Merge two or more objects. Returns a new object. - * @param {Object} objects The objects to merge together - * @returns {Object} Merged values of defaults and options - */ - var extend = function () { - - // Variables - var extended = {}; - - // Merge the object into the extended object - var merge = function (obj) { - for (var prop in obj) { - if (obj.hasOwnProperty(prop)) { - extended[prop] = obj[prop]; - } - } - }; - - // Loop through each object and conduct a merge - for (var i = 0; i < arguments.length; i++) { - merge(arguments[i]); - } - - return extended; - - }; - - /** - * Check to see if user prefers reduced motion - * @param {Object} settings Script settings - */ - var reduceMotion = function (settings) { - if ('matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches) { - return true; - } - return false; - }; - - /** - * Get the height of an element. - * @param {Node} elem The element to get the height of - * @return {Number} The element's height in pixels - */ - var getHeight = function (elem) { - return parseInt(window.getComputedStyle(elem).height, 10); - }; - - /** - * Decode a URI, with error check - * @param {String} hash The URI to decode - * @return {String} A decoded URI (or the original string if an error is thrown) - */ - var decode = function (hash) { - var decoded; - try { - decoded = decodeURIComponent(hash); - } catch(e) { - decoded = hash; - } - return decoded; - }; - - /** - * Escape special characters for use with querySelector - * @author Mathias Bynens - * @link https://github.com/mathiasbynens/CSS.escape - * @param {String} id The anchor ID to escape - */ - var escapeCharacters = function (id) { - - // Remove leading hash - if (id.charAt(0) === '#') { - id = id.substr(1); - } - - var string = String(id); - var length = string.length; - var index = -1; - var codeUnit; - var result = ''; - var firstCodeUnit = string.charCodeAt(0); - while (++index < length) { - codeUnit = string.charCodeAt(index); - // Note: there’s no need to special-case astral symbols, surrogate - // pairs, or lone surrogates. - - // If the character is NULL (U+0000), then throw an - // `InvalidCharacterError` exception and terminate these steps. - if (codeUnit === 0x0000) { - throw new InvalidCharacterError( - 'Invalid character: the input contains U+0000.' - ); - } - - if ( - // If the character is in the range [\1-\1F] (U+0001 to U+001F) or is - // U+007F, […] - (codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F || - // If the character is the first character and is in the range [0-9] - // (U+0030 to U+0039), […] - (index === 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) || - // If the character is the second character and is in the range [0-9] - // (U+0030 to U+0039) and the first character is a `-` (U+002D), […] - ( - index === 1 && - codeUnit >= 0x0030 && codeUnit <= 0x0039 && - firstCodeUnit === 0x002D - ) - ) { - // http://dev.w3.org/csswg/cssom/#escape-a-character-as-code-point - result += '\\' + codeUnit.toString(16) + ' '; - continue; - } - - // If the character is not handled by one of the above rules and is - // greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or - // is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to - // U+005A), or [a-z] (U+0061 to U+007A), […] - if ( - codeUnit >= 0x0080 || - codeUnit === 0x002D || - codeUnit === 0x005F || - codeUnit >= 0x0030 && codeUnit <= 0x0039 || - codeUnit >= 0x0041 && codeUnit <= 0x005A || - codeUnit >= 0x0061 && codeUnit <= 0x007A - ) { - // the character itself - result += string.charAt(index); - continue; - } - - // Otherwise, the escaped character. - // http://dev.w3.org/csswg/cssom/#escape-a-character - result += '\\' + string.charAt(index); - - } - - // Return sanitized hash - var hash; - try { - hash = decodeURIComponent('#' + result); - } catch(e) { - hash = '#' + result; - } - return hash; - - }; - - /** - * Calculate the easing pattern - * @link https://gist.github.com/gre/1650294 - * @param {String} type Easing pattern - * @param {Number} time Time animation should take to complete - * @returns {Number} - */ - var easingPattern = function (settings, time) { - var pattern; - - // Default Easing Patterns - if (settings.easing === 'easeInQuad') pattern = time * time; // accelerating from zero velocity - if (settings.easing === 'easeOutQuad') pattern = time * (2 - time); // decelerating to zero velocity - if (settings.easing === 'easeInOutQuad') pattern = time < 0.5 ? 2 * time * time : -1 + (4 - 2 * time) * time; // acceleration until halfway, then deceleration - if (settings.easing === 'easeInCubic') pattern = time * time * time; // accelerating from zero velocity - if (settings.easing === 'easeOutCubic') pattern = (--time) * time * time + 1; // decelerating to zero velocity - if (settings.easing === 'easeInOutCubic') pattern = time < 0.5 ? 4 * time * time * time : (time - 1) * (2 * time - 2) * (2 * time - 2) + 1; // acceleration until halfway, then deceleration - if (settings.easing === 'easeInQuart') pattern = time * time * time * time; // accelerating from zero velocity - if (settings.easing === 'easeOutQuart') pattern = 1 - (--time) * time * time * time; // decelerating to zero velocity - if (settings.easing === 'easeInOutQuart') pattern = time < 0.5 ? 8 * time * time * time * time : 1 - 8 * (--time) * time * time * time; // acceleration until halfway, then deceleration - if (settings.easing === 'easeInQuint') pattern = time * time * time * time * time; // accelerating from zero velocity - if (settings.easing === 'easeOutQuint') pattern = 1 + (--time) * time * time * time * time; // decelerating to zero velocity - if (settings.easing === 'easeInOutQuint') pattern = time < 0.5 ? 16 * time * time * time * time * time : 1 + 16 * (--time) * time * time * time * time; // acceleration until halfway, then deceleration - - // Custom Easing Patterns - if (!!settings.customEasing) pattern = settings.customEasing(time); - - return pattern || time; // no easing, no acceleration - }; - - /** - * Determine the document's height - * @returns {Number} - */ - var getDocumentHeight = function () { - return Math.max( - document.body.scrollHeight, document.documentElement.scrollHeight, - document.body.offsetHeight, document.documentElement.offsetHeight, - document.body.clientHeight, document.documentElement.clientHeight - ); - }; - - /** - * Calculate how far to scroll - * Clip support added by robjtede - https://github.com/cferdinandi/smooth-scroll/issues/405 - * @param {Element} anchor The anchor element to scroll to - * @param {Number} headerHeight Height of a fixed header, if any - * @param {Number} offset Number of pixels by which to offset scroll - * @param {Boolean} clip If true, adjust scroll distance to prevent abrupt stops near the bottom of the page - * @returns {Number} - */ - var getEndLocation = function (anchor, headerHeight, offset, clip) { - var location = 0; - if (anchor.offsetParent) { - do { - location += anchor.offsetTop; - anchor = anchor.offsetParent; - } while (anchor); - } - location = Math.max(location - headerHeight - offset, 0); - if (clip) { - location = Math.min(location, getDocumentHeight() - window.innerHeight); - } - return location; - }; - - /** - * Get the height of the fixed header - * @param {Node} header The header - * @return {Number} The height of the header - */ - var getHeaderHeight = function (header) { - return !header ? 0 : (getHeight(header) + header.offsetTop); - }; - - /** - * Update the URL - * @param {Node} anchor The anchor that was scrolled to - * @param {Boolean} isNum If true, anchor is a number - * @param {Object} options Settings for Smooth Scroll - */ - var updateURL = function (anchor, isNum, options) { - - // Bail if the anchor is a number - if (isNum) return; - - // Verify that pushState is supported and the updateURL option is enabled - if (!history.pushState || !options.updateURL) return; - - // Update URL - history.pushState( - { - smoothScroll: JSON.stringify(options), - anchor: anchor.id - }, - document.title, - anchor === document.documentElement ? '#top' : '#' + anchor.id - ); - - }; - - /** - * Bring the anchored element into focus - * @param {Node} anchor The anchor element - * @param {Number} endLocation The end location to scroll to - * @param {Boolean} isNum If true, scroll is to a position rather than an element - */ - var adjustFocus = function (anchor, endLocation, isNum) { - - // Is scrolling to top of page, blur - if (anchor === 0) { - document.body.focus(); - } - - // Don't run if scrolling to a number on the page - if (isNum) return; - - // Otherwise, bring anchor element into focus - anchor.focus(); - if (document.activeElement !== anchor) { - anchor.setAttribute('tabindex', '-1'); - anchor.focus(); - anchor.style.outline = 'none'; - } - window.scrollTo(0 , endLocation); - - }; - - /** - * Emit a custom event - * @param {String} type The event type - * @param {Object} options The settings object - * @param {Node} anchor The anchor element - * @param {Node} toggle The toggle element - */ - var emitEvent = function (type, options, anchor, toggle) { - if (!options.emitEvents || typeof window.CustomEvent !== 'function') return; - var event = new CustomEvent(type, { - bubbles: true, - detail: { - anchor: anchor, - toggle: toggle - } - }); - document.dispatchEvent(event); - }; - - - // - // SmoothScroll Constructor - // - - var SmoothScroll = function (selector, options) { - - // - // Variables - // - - var smoothScroll = {}; // Object for public APIs - var settings, anchor, toggle, fixedHeader, headerHeight, eventTimeout, animationInterval; - - - // - // Methods - // - - /** - * Cancel a scroll-in-progress - */ - smoothScroll.cancelScroll = function (noEvent) { - cancelAnimationFrame(animationInterval); - animationInterval = null; - if (noEvent) return; - emitEvent('scrollCancel', settings); - }; - - /** - * Start/stop the scrolling animation - * @param {Node|Number} anchor The element or position to scroll to - * @param {Element} toggle The element that toggled the scroll event - * @param {Object} options - */ - smoothScroll.animateScroll = function (anchor, toggle, options) { - - // Local settings - var animateSettings = extend(settings || defaults, options || {}); // Merge user options with defaults - - // Selectors and variables - var isNum = Object.prototype.toString.call(anchor) === '[object Number]' ? true : false; - var anchorElem = isNum || !anchor.tagName ? null : anchor; - if (!isNum && !anchorElem) return; - var startLocation = window.pageYOffset; // Current location on the page - if (animateSettings.header && !fixedHeader) { - // Get the fixed header if not already set - fixedHeader = document.querySelector(animateSettings.header); - } - if (!headerHeight) { - // Get the height of a fixed header if one exists and not already set - headerHeight = getHeaderHeight(fixedHeader); - } - var endLocation = isNum ? anchor : getEndLocation(anchorElem, headerHeight, parseInt((typeof animateSettings.offset === 'function' ? animateSettings.offset(anchor, toggle) : animateSettings.offset), 10), animateSettings.clip); // Location to scroll to - var distance = endLocation - startLocation; // distance to travel - var documentHeight = getDocumentHeight(); - var timeLapsed = 0; - var start, percentage, position; - - /** - * Stop the scroll animation when it reaches its target (or the bottom/top of page) - * @param {Number} position Current position on the page - * @param {Number} endLocation Scroll to location - * @param {Number} animationInterval How much to scroll on this loop - */ - var stopAnimateScroll = function (position, endLocation) { - - // Get the current location - var currentLocation = window.pageYOffset; - - // Check if the end location has been reached yet (or we've hit the end of the document) - if (position == endLocation || currentLocation == endLocation || ((startLocation < endLocation && window.innerHeight + currentLocation) >= documentHeight)) { - - // Clear the animation timer - smoothScroll.cancelScroll(true); - - // Bring the anchored element into focus - adjustFocus(anchor, endLocation, isNum); - - // Emit a custom event - emitEvent('scrollStop', animateSettings, anchor, toggle); - - // Reset start - start = null; - animationInterval = null; - - return true; - - } - }; - - /** - * Loop scrolling animation - */ - var loopAnimateScroll = function (timestamp) { - if (!start) { start = timestamp; } - timeLapsed += timestamp - start; - percentage = (timeLapsed / parseInt(animateSettings.speed, 10)); - percentage = (percentage > 1) ? 1 : percentage; - position = startLocation + (distance * easingPattern(animateSettings, percentage)); - window.scrollTo(0, Math.floor(position)); - if (!stopAnimateScroll(position, endLocation)) { - animationInterval = window.requestAnimationFrame(loopAnimateScroll); - start = timestamp; - } - }; - - /** - * Reset position to fix weird iOS bug - * @link https://github.com/cferdinandi/smooth-scroll/issues/45 - */ - if (window.pageYOffset === 0) { - window.scrollTo(0, 0); - } - - // Update the URL - updateURL(anchor, isNum, animateSettings); - - // Emit a custom event - emitEvent('scrollStart', animateSettings, anchor, toggle); - - // Start scrolling animation - smoothScroll.cancelScroll(true); - window.requestAnimationFrame(loopAnimateScroll); - - }; - - /** - * If smooth scroll element clicked, animate scroll - */ - var clickHandler = function (event) { - - // Don't run if the user prefers reduced motion - if (reduceMotion(settings)) return; - - // Don't run if right-click or command/control + click - if (event.button !== 0 || event.metaKey || event.ctrlKey) return; - - // Check if event.target has closest() method - // By @totegi - https://github.com/cferdinandi/smooth-scroll/pull/401/ - if(!('closest' in event.target))return; - - // Check if a smooth scroll link was clicked - toggle = event.target.closest(selector); - if (!toggle || toggle.tagName.toLowerCase() !== 'a' || event.target.closest(settings.ignore)) return; - - // Only run if link is an anchor and points to the current page - if (toggle.hostname !== window.location.hostname || toggle.pathname !== window.location.pathname || !/#/.test(toggle.href)) return; - - // Get an escaped version of the hash - var hash = escapeCharacters(decode(toggle.hash)); - - // Get the anchored element - var anchor = settings.topOnEmptyHash && hash === '#' ? document.documentElement : document.querySelector(hash); - anchor = !anchor && hash === '#top' ? document.documentElement : anchor; - - // If anchored element exists, scroll to it - if (!anchor) return; - event.preventDefault(); - smoothScroll.animateScroll(anchor, toggle); - - }; - - /** - * Animate scroll on popstate events - */ - var popstateHandler = function (event) { - // Stop if history.state doesn't exist (ex. if clicking on a broken anchor link). - // fixes `Cannot read property 'smoothScroll' of null` error getting thrown. - if (history.state === null) return; - - // Only run if state is a popstate record for this instantiation - if (!history.state.smoothScroll || history.state.smoothScroll !== JSON.stringify(settings)) return; - - // Only run if state includes an anchor - if (!history.state.anchor) return; - - // Get the anchor - var anchor = document.querySelector(escapeCharacters(decode(history.state.anchor))); - if (!anchor) return; - - // Animate scroll to anchor link - smoothScroll.animateScroll(anchor, null, {updateURL: false}); - - }; - - /** - * On window scroll and resize, only run events at a rate of 15fps for better performance - */ - var resizeThrottler = function (event) { - if (!eventTimeout) { - eventTimeout = setTimeout((function() { - eventTimeout = null; // Reset timeout - headerHeight = getHeaderHeight(fixedHeader); // Get the height of a fixed header if one exists - }), 66); - } - }; - - /** - * Destroy the current initialization. - */ - smoothScroll.destroy = function () { - - // If plugin isn't already initialized, stop - if (!settings) return; - - // Remove event listeners - document.removeEventListener('click', clickHandler, false); - window.removeEventListener('resize', resizeThrottler, false); - window.removeEventListener('popstate', popstateHandler, false); - - // Cancel any scrolls-in-progress - smoothScroll.cancelScroll(); - - // Reset variables - settings = null; - anchor = null; - toggle = null; - fixedHeader = null; - headerHeight = null; - eventTimeout = null; - animationInterval = null; - - }; - - /** - * Initialize Smooth Scroll - * @param {Object} options User settings - */ - smoothScroll.init = function (options) { - - // feature test - if (!supports()) throw 'Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.'; - - // Destroy any existing initializations - smoothScroll.destroy(); - - // Selectors and variables - settings = extend(defaults, options || {}); // Merge user options with defaults - fixedHeader = settings.header ? document.querySelector(settings.header) : null; // Get the fixed header - headerHeight = getHeaderHeight(fixedHeader); - - // When a toggle is clicked, run the click handler - document.addEventListener('click', clickHandler, false); - - // If window is resized and there's a fixed header, recalculate its size - if (fixedHeader) { - window.addEventListener('resize', resizeThrottler, false); - } - - // If updateURL and popState are enabled, listen for pop events - if (settings.updateURL && settings.popstate) { - window.addEventListener('popstate', popstateHandler, false); - } - - }; - - - // - // Initialize plugin - // - - smoothScroll.init(options); - - - // - // Public APIs - // - - return smoothScroll; - - }; - - return SmoothScroll; - -})); - -/* GP */ -var gpscroll = new SmoothScroll( gpSmoothScroll.elements.join(), { - speed: gpSmoothScroll.duration, - offset: function( anchor, toggle ) { - var body = document.body, - nav = document.querySelector( '#site-navigation' ), - stickyNav = document.querySelector( '#sticky-navigation' ), - mobileHeader = document.querySelector( '#mobile-header' ), - menuToggle = document.querySelector( '.menu-toggle' ), - offset = 0; - - if ( mobileHeader && ( mobileHeader.offsetWidth || mobileHeader.offsetHeight || mobileHeader.getClientRects().length ) ) { - if ( body.classList.contains( 'mobile-header-sticky' ) ) { - offset = offset + mobileHeader.clientHeight; - } - } else if ( menuToggle && ( menuToggle.offsetWidth || menuToggle.offsetHeight || menuToggle.getClientRects().length ) ) { - if ( body.classList.contains( 'both-sticky-menu' ) || body.classList.contains( 'mobile-sticky-menu' ) ) { - if ( stickyNav ) { - offset = offset + stickyNav.clientHeight; - } else if ( nav ) { - offset = offset + nav.clientHeight; - } - } - } else if ( body.classList.contains( 'both-sticky-menu' ) || body.classList.contains( 'desktop-sticky-menu' ) ) { - if ( stickyNav ) { - offset = offset + stickyNav.clientHeight; - } else if ( nav ) { - offset = offset + nav.clientHeight; - } - } - - return gpSmoothScroll.offset - ? gpSmoothScroll.offset - : offset; - } -} ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/general/js/smooth-scroll.min.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/general/js/smooth-scroll.min.js deleted file mode 100644 index 9fbd8c4e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/general/js/smooth-scroll.min.js +++ /dev/null @@ -1 +0,0 @@ -window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t,n=(this.document||this.ownerDocument).querySelectorAll(e),o=this;do{for(t=n.length;0<=--t&&n.item(t)!==o;);}while(t<0&&(o=o.parentElement));return o}),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}"function"!=typeof window.CustomEvent&&(e.prototype=window.Event.prototype,window.CustomEvent=e)}(),function(){for(var r=0,e=["ms","moz","webkit","o"],t=0;t=s)return S.cancelScroll(!0),e=t,n=p,0===(t=o)&&document.body.focus(),n||(t.focus(),document.activeElement!==t&&(t.setAttribute("tabindex","-1"),t.focus(),t.style.outline="none"),b.scrollTo(0,e)),C("scrollStop",h,o,i),!(w=l=null)},f=function(e){var t,n,o;m=(u+=e-(l=l||e))/parseInt(h.speed,10),m=r+c*(n=1 apply_filters( - 'generate_smooth_scroll_elements', - array( - '.smooth-scroll', - 'li.smooth-scroll a', - ) - ), - 'duration' => apply_filters( 'generate_smooth_scroll_duration', 800 ), - 'offset' => apply_filters( 'generate_smooth_scroll_offset', '' ), - ) - ); -} - -add_filter( 'generate_option_defaults', 'generate_smooth_scroll_default' ); -/** - * Add the smooth scroll option to our defaults. - * - * @since 1.6 - * - * @param array $defaults Existing defaults. - * @return array New defaults. - */ -function generate_smooth_scroll_default( $defaults ) { - $defaults['smooth_scroll'] = false; - - return $defaults; -} - -add_action( 'customize_register', 'generate_smooth_scroll_customizer', 99 ); -/** - * Add our smooth scroll option to the Customizer. - * - * @since 1.6 - * - * @param WP_Customize_Manager $wp_customize Theme Customizer object. - */ -function generate_smooth_scroll_customizer( $wp_customize ) { - if ( ! function_exists( 'generate_get_defaults' ) ) { - return; - } - - $defaults = generate_get_defaults(); - - require_once GP_LIBRARY_DIRECTORY . 'customizer-helpers.php'; - - $wp_customize->add_setting( - 'generate_settings[smooth_scroll]', - array( - 'default' => $defaults['smooth_scroll'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_settings[smooth_scroll]', - array( - 'type' => 'checkbox', - 'label' => __( 'Smooth scroll', 'gp-premium' ), - 'description' => __( 'Initiate smooth scroll on anchor links using the smooth-scroll class.', 'gp-premium' ), - 'section' => 'generate_general_section', - ) - ); -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/gp-premium.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/gp-premium.php deleted file mode 100644 index 14974bfa..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/gp-premium.php +++ /dev/null @@ -1,309 +0,0 @@ -=' ) && ! defined( 'GENERATE_DISABLE_SITE_LIBRARY' ) ) { - require_once GP_PREMIUM_DIR_PATH . 'site-library/class-site-library-rest.php'; - require_once GP_PREMIUM_DIR_PATH . 'site-library/class-site-library-helper.php'; -} - -if ( is_admin() ) { - require_once GP_PREMIUM_DIR_PATH . 'inc/deprecated-admin.php'; - - if ( generatepress_is_module_active( 'generate_package_site_library', 'GENERATE_SITE_LIBRARY' ) && version_compare( PHP_VERSION, '5.4', '>=' ) && ! defined( 'GENERATE_DISABLE_SITE_LIBRARY' ) ) { - require_once GP_PREMIUM_DIR_PATH . 'site-library/class-site-library.php'; - } -} - -if ( generatepress_is_module_active( 'generate_package_font_library', 'GENERATE_FONT_LIBRARY' ) ) { - require_once GP_PREMIUM_DIR_PATH . 'font-library/class-font-library.php'; - require_once GP_PREMIUM_DIR_PATH . 'font-library/class-font-library-rest.php'; - require_once GP_PREMIUM_DIR_PATH . 'font-library/class-font-library-optimize.php'; - require_once GP_PREMIUM_DIR_PATH . 'font-library/class-font-library-cpt.php'; -} - -if ( ! function_exists( 'generate_premium_updater' ) ) { - add_action( 'admin_init', 'generate_premium_updater', 0 ); - /** - * Set up the updater - **/ - function generate_premium_updater() { - if ( ! class_exists( 'GeneratePress_Premium_Plugin_Updater' ) ) { - include GP_PREMIUM_DIR_PATH . 'library/class-plugin-updater.php'; - } - - $license_key = get_option( 'gen_premium_license_key' ); - - $edd_updater = new GeneratePress_Premium_Plugin_Updater( - 'https://generatepress.com', - __FILE__, - array( - 'version' => GP_PREMIUM_VERSION, - 'license' => trim( $license_key ), - 'item_name' => 'GP Premium', - 'author' => 'Tom Usborne', - 'url' => home_url(), - 'beta' => apply_filters( 'generate_premium_beta_tester', false ), - ) - ); - } -} - -add_filter( 'edd_sl_plugin_updater_api_params', 'generate_premium_set_updater_api_params', 10, 3 ); -/** - * Add the GeneratePress version to our updater params. - * - * @param array $api_params The array of data sent in the request. - * @param array $api_data The array of data set up in the class constructor. - * @param string $plugin_file The full path and filename of the file. - */ -function generate_premium_set_updater_api_params( $api_params, $api_data, $plugin_file ) { - /* - * Make sure $plugin_file matches your plugin's file path. You should have a constant for this - * or can use __FILE__ if this code goes in your plugin's main file. - */ - if ( __FILE__ === $plugin_file ) { - // Dynamically retrieve the current version number. - $api_params['generatepress_version'] = defined( 'GENERATE_VERSION' ) ? GENERATE_VERSION : ''; - } - - return $api_params; -} - -if ( ! function_exists( 'generate_premium_setup' ) ) { - add_action( 'after_setup_theme', 'generate_premium_setup' ); - /** - * Add useful functions to GP Premium - **/ - function generate_premium_setup() { - // This used to be in the theme but the WP.org review team asked for it to be removed. - // Not wanting people to have broken shortcodes in their widgets on update, I added it into premium. - add_filter( 'widget_text', 'do_shortcode' ); - } -} - -if ( ! function_exists( 'generate_premium_theme_information' ) ) { - add_action( 'admin_notices', 'generate_premium_theme_information' ); - /** - * Checks whether there's a theme update available and lets you know. - * Also checks to see if GeneratePress is the active theme. If not, tell them. - * - * @since 1.2.95 - **/ - function generate_premium_theme_information() { - $theme = wp_get_theme(); - - if ( 'GeneratePress' === $theme->name || 'generatepress' === $theme->template ) { - - // Get our information on updates. - // @see https://developer.wordpress.org/reference/functions/wp_prepare_themes_for_js/. - $updates = array(); - if ( current_user_can( 'update_themes' ) ) { - $updates_transient = get_site_transient( 'update_themes' ); - if ( isset( $updates_transient->response ) ) { - $updates = $updates_transient->response; - } - } - - $screen = get_current_screen(); - - // If a GeneratePress update exists, and we're not on the themes page. - // No need to tell people an update exists on the themes page, WP does that for us. - if ( isset( $updates['generatepress'] ) && 'themes' !== $screen->base ) { - printf( - '
    -

    %1$s %3$s

    -
    ', - esc_html__( 'GeneratePress has an update available.', 'gp-premium' ), - esc_url( admin_url( 'themes.php' ) ), - esc_html__( 'Update now.', 'gp-premium' ) - ); - } - } else { - // GeneratePress isn't the active theme, let them know GP Premium won't work. - printf( - '
    -

    %1$s %2$s

    -
    ', - esc_html__( 'GP Premium requires GeneratePress to be your active theme.', 'gp-premium' ), - esc_html__( 'Install now.', 'gp-premium' ), - esc_url( admin_url( 'theme-install.php?theme=generatepress' ) ) - ); - } - - } -} - -add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'generate_add_configure_action_link' ); -/** - * Show a "Configure" link in the plugin action links. - * - * @since 1.3 - * @param array $links The existing plugin row links. - */ -function generate_add_configure_action_link( $links ) { - $configuration_link = '' . __( 'Configure', 'gp-premium' ) . ''; - - return array_merge( $links, array( $configuration_link ) ); -} - -add_action( 'admin_init', 'generatepress_deactivate_standalone_addons' ); -/** - * Deactivate any standalone add-ons if they're active. - * - * @since 1.3.1 - */ -function generatepress_deactivate_standalone_addons() { - $addons = array( - 'generate-backgrounds/generate-backgrounds.php', - 'generate-blog/generate-blog.php', - 'generate-colors/generate-colors.php', - 'generate-copyright/generate-copyright.php', - 'generate-disable-elements/generate-disable-elements.php', - 'generate-hooks/generate-hooks.php', - 'generate-ie/generate-ie.php', - 'generate-menu-plus/generate-menu-plus.php', - 'generate-page-header/generate-page-header.php', - 'generate-secondary-nav/generate-secondary-nav.php', - 'generate-sections/generate-sections.php', - 'generate-spacing/generate-spacing.php', - 'generate-typography/generate-fonts.php', - ); - - deactivate_plugins( $addons ); -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/assets/css/hooks.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/assets/css/hooks.css deleted file mode 100644 index 5b981c5e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/assets/css/hooks.css +++ /dev/null @@ -1,59 +0,0 @@ -#gp_hooks_settings .form-table td, -#gp_hooks_settings .form-table th { - padding: 30px; - background: #FFF; - display: block; - width: 100%; - box-sizing: border-box; - margin-bottom: 0; -} - -#gp_hooks_settings .form-table th { - padding-bottom: 0; -} - -#gp_hooks_settings .form-table tr { - margin-bottom: 20px; - display: block; - max-width: 100%; - border: 1px solid #e5e5e5; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); - box-sizing: border-box; -} - -.execute, div.disable { - background: none repeat scroll 0 0 #f1f1f1; - display: inline-block; - padding: 10px; - font-size: 14px; -} - -.admin-bar #gp_hooks_settings .sticky-scroll-box.fixed { - top: 52px; -} -#gp_hooks_settings .sticky-scroll-box.fixed { - position: fixed; - right: 18px; - top: 20px; -} - -.rtl #gp_hooks_settings .sticky-scroll-box.fixed { - position: fixed; - left: 18px; - right: auto; -} - -#gp_hooks_settings input[type="checkbox"] { - margin-top: 1px; - margin-right: 0px; -} - -#gp_hooks_settings .form-table { - margin-top: 0; -} - -.appearance_page_gp_hooks_settings #setting-error-true { - margin-left: 2px; - margin-right: 19px; - margin-top: 20px; -} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/assets/js/admin.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/assets/js/admin.js deleted file mode 100644 index c4a41586..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/assets/js/admin.js +++ /dev/null @@ -1,38 +0,0 @@ -jQuery(document).ready(function($) { - - jQuery('#hook-dropdown').on('change', function() { - var id = jQuery(this).children(":selected").attr("id"); - jQuery('#gp_hooks_settings .form-table tr').hide(); - jQuery('#gp_hooks_settings .form-table tr').eq(id).show(); - Cookies.set('remember_hook', $('#hook-dropdown option:selected').attr('id'), { expires: 90, path: '/'}); - - if ( jQuery('#hook-dropdown').val() == 'all' ) { - $('#gp_hooks_settings .form-table tr').show(); - Cookies.set('remember_hook', 'none', { expires: 90, path: '/'}); - } - - }); - - //checks if the cookie has been set - if( Cookies.get('remember_hook') === null || Cookies.get('remember_hook') === "" || Cookies.get('remember_hook') === "null" || Cookies.get('remember_hook') === "none" || Cookies.get('remember_hook') === undefined ) - { - $('#gp_hooks_settings .form-table tr').show(); - Cookies.set('remember_hook', 'none', { expires: 90, path: '/'}); - } else { - $('#hook-dropdown option[id="' + Cookies.get('remember_hook') + '"]').attr('selected', 'selected'); - $('#gp_hooks_settings .form-table tr').hide(); - $('#gp_hooks_settings .form-table tr').eq(Cookies.get('remember_hook')).show(); - } - - var top = $('.sticky-scroll-box').offset().top; - $(window).scroll(function (event) { - var y = $(this).scrollTop(); - if (y >= top) - $('.sticky-scroll-box').addClass('fixed'); - else - $('.sticky-scroll-box').removeClass('fixed'); - $('.sticky-scroll-box').width($('.sticky-scroll-box').parent().width()); - }); - -}); - diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/assets/js/jquery.cookie.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/assets/js/jquery.cookie.js deleted file mode 100644 index e5733169..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/assets/js/jquery.cookie.js +++ /dev/null @@ -1,165 +0,0 @@ -/*! - * JavaScript Cookie v2.1.3 - * https://github.com/js-cookie/js-cookie - * - * Copyright 2006, 2015 Klaus Hartl & Fagner Brack - * Released under the MIT license - */ -;(function (factory) { - var registeredInModuleLoader = false; - if (typeof define === 'function' && define.amd) { - define(factory); - registeredInModuleLoader = true; - } - if (typeof exports === 'object') { - module.exports = factory(); - registeredInModuleLoader = true; - } - if (!registeredInModuleLoader) { - var OldCookies = window.Cookies; - var api = window.Cookies = factory(); - api.noConflict = function () { - window.Cookies = OldCookies; - return api; - }; - } -}(function () { - function extend () { - var i = 0; - var result = {}; - for (; i < arguments.length; i++) { - var attributes = arguments[ i ]; - for (var key in attributes) { - result[key] = attributes[key]; - } - } - return result; - } - - function init (converter) { - function api (key, value, attributes) { - var result; - if (typeof document === 'undefined') { - return; - } - - // Write - - if (arguments.length > 1) { - attributes = extend({ - path: '/' - }, api.defaults, attributes); - - if (typeof attributes.expires === 'number') { - var expires = new Date(); - expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5); - attributes.expires = expires; - } - - // We're using "expires" because "max-age" is not supported by IE - attributes.expires = attributes.expires ? attributes.expires.toUTCString() : ''; - - try { - result = JSON.stringify(value); - if (/^[\{\[]/.test(result)) { - value = result; - } - } catch (e) {} - - if (!converter.write) { - value = encodeURIComponent(String(value)) - .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent); - } else { - value = converter.write(value, key); - } - - key = encodeURIComponent(String(key)); - key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent); - key = key.replace(/[\(\)]/g, escape); - - var stringifiedAttributes = ''; - - for (var attributeName in attributes) { - if (!attributes[attributeName]) { - continue; - } - stringifiedAttributes += '; ' + attributeName; - if (attributes[attributeName] === true) { - continue; - } - stringifiedAttributes += '=' + attributes[attributeName]; - } - return (document.cookie = key + '=' + value + stringifiedAttributes); - } - - // Read - - if (!key) { - result = {}; - } - - // To prevent the for loop in the first place assign an empty array - // in case there are no cookies at all. Also prevents odd result when - // calling "get()" - var cookies = document.cookie ? document.cookie.split('; ') : []; - var rdecode = /(%[0-9A-Z]{2})+/g; - var i = 0; - - for (; i < cookies.length; i++) { - var parts = cookies[i].split('='); - var cookie = parts.slice(1).join('='); - - if (cookie.charAt(0) === '"') { - cookie = cookie.slice(1, -1); - } - - try { - var name = parts[0].replace(rdecode, decodeURIComponent); - cookie = converter.read ? - converter.read(cookie, name) : converter(cookie, name) || - cookie.replace(rdecode, decodeURIComponent); - - if (this.json) { - try { - cookie = JSON.parse(cookie); - } catch (e) {} - } - - if (key === name) { - result = cookie; - break; - } - - if (!key) { - result[name] = cookie; - } - } catch (e) {} - } - - return result; - } - - api.set = api; - api.get = function (key) { - return api.call(api, key); - }; - api.getJSON = function () { - return api.apply({ - json: true - }, [].slice.call(arguments)); - }; - api.defaults = {}; - - api.remove = function (key, attributes) { - api(key, '', extend(attributes, { - expires: -1 - })); - }; - - api.withConverter = init; - - return api; - } - - return init(function () {}); -})); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/functions.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/functions.php deleted file mode 100644 index e0954f28..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/hooks/functions/functions.php +++ /dev/null @@ -1,542 +0,0 @@ - -

    %1$s %2$s

    - ', - esc_html__( 'DISALLOW_FILE_EDIT is defined. You should also disallow PHP execution in GP Hooks.', 'gp-premium' ), - esc_html__( 'Learn how', 'gp-premium' ) - ); - } - } -} - -if ( ! function_exists( 'generate_hooks_setup' ) ) { - function generate_hooks_setup() { - // Just to verify that we're activated. - } -} - -if ( ! class_exists( 'Generate_Hooks_Settings' ) ) { - class Generate_Hooks_Settings { - private $dir; - private $file; - private $assets_dir; - private $assets_url; - private $settings_base; - private $settings; - - public function __construct( $file ) { - $this->file = $file; - $this->dir = dirname( $this->file ); - $this->assets_dir = trailingslashit( $this->dir ) . 'assets'; - $this->assets_url = esc_url( trailingslashit( plugins_url( '/assets/', $this->file ) ) ); - $this->settings_base = ''; - - // Initialise settings - add_action( 'admin_init', array( $this, 'init' ) ); - - // Register plugin settings - add_action( 'admin_init' , array( $this, 'register_settings' ) ); - - // Add settings page to menu - add_action( 'admin_menu' , array( $this, 'add_menu_item' ) ); - - // Add settings link to plugins page - add_filter( 'plugin_action_links_' . plugin_basename( $this->file ) , array( $this, 'add_settings_link' ) ); - } - - /** - * Initialise settings - * @return void - */ - public function init() { - $this->settings = $this->settings_fields(); - } - - /** - * Add settings page to admin menu - * @return void - */ - public function add_menu_item() { - $page = add_theme_page( __( 'GP Hooks', 'gp-premium' ) , __( 'GP Hooks', 'gp-premium' ) , apply_filters( 'generate_hooks_capability','manage_options' ) , 'gp_hooks_settings' , array( $this, 'settings_page' ) ); - add_action( 'admin_print_styles-' . $page, array( $this, 'settings_assets' ) ); - } - - /** - * Load settings JS & CSS - * @return void - */ - public function settings_assets() { - wp_enqueue_script( 'gp-cookie', $this->assets_url . 'js/jquery.cookie.js', array( 'jquery' ), GENERATE_HOOKS_VERSION ); - wp_enqueue_script( 'gp-hooks', $this->assets_url . 'js/admin.js', array( 'jquery', 'gp-cookie' ), GENERATE_HOOKS_VERSION ); - wp_enqueue_style( 'gp-hooks', $this->assets_url . 'css/hooks.css' ); - } - - /** - * Add settings link to plugin list table - * @param array $links Existing links - * @return array Modified links - */ - public function add_settings_link( $links ) { - $settings_link = '' . __( 'GP Hooks', 'gp-premium' ) . ''; - array_push( $links, $settings_link ); - return $links; - } - - /** - * Build settings fields - * @return array Fields to be displayed on settings page - */ - private function settings_fields() { - - $settings['standard'] = array( - 'title' => '', - 'description' => '', - 'fields' => array( - array( - "name" => __( 'wp_head', 'gp-premium' ), - "id" => 'generate_wp_head', - "type" => 'textarea' - ), - - array( - "name" => __( 'Before Header', 'gp-premium' ), - "id" => 'generate_before_header', - "type" => 'textarea' - ), - - array( - "name" => __( 'Before Header Content', 'gp-premium' ), - "id" => 'generate_before_header_content', - "type" => 'textarea' - ), - - array( - "name" => __( 'After Header Content', 'gp-premium' ), - "id" => 'generate_after_header_content', - "type" => 'textarea' - ), - - array( - "name" => __( 'After Header', 'gp-premium' ), - "id" => 'generate_after_header', - "type" => 'textarea' - ), - - array( - "name" => __( 'Inside Content Container', 'gp-premium' ), - "id" => 'generate_before_main_content', - "type" => 'textarea' - ), - - array( - "name" => __( 'Before Content', 'gp-premium' ), - "id" => 'generate_before_content', - "type" => 'textarea' - ), - - array( - "name" => __( 'After Entry Title', 'gp-premium' ), - "id" => 'generate_after_entry_header', - "type" => 'textarea' - ), - - array( - "name" => __( 'After Content', 'gp-premium' ), - "id" => 'generate_after_content', - "type" => 'textarea' - ), - - array( - "name" => __( 'Before Right Sidebar Content', 'gp-premium' ), - "id" => 'generate_before_right_sidebar_content', - "type" => 'textarea' - ), - - array( - "name" => __( 'After Right Sidebar Content', 'gp-premium' ), - "id" => 'generate_after_right_sidebar_content', - "type" => 'textarea' - ), - - array( - "name" => __( 'Before Left Sidebar Content', 'gp-premium' ), - "id" => 'generate_before_left_sidebar_content', - "type" => 'textarea' - ), - - array( - "name" => __( 'After Left Sidebar Content', 'gp-premium' ), - "id" => 'generate_after_left_sidebar_content', - "type" => 'textarea' - ), - - array( - "name" => __( 'Before Footer', 'gp-premium' ), - "id" => 'generate_before_footer', - "type" => 'textarea' - ), - - array( - "name" => __( 'After Footer Widgets', 'gp-premium' ), - "id" => 'generate_after_footer_widgets', - "type" => 'textarea' - ), - - array( - "name" => __( 'Before Footer Content', 'gp-premium' ), - "id" => 'generate_before_footer_content', - "type" => 'textarea' - ), - - array( - "name" => __( 'After Footer Content', 'gp-premium' ), - "id" => 'generate_after_footer_content', - "type" => 'textarea' - ), - - array( - "name" => __( 'wp_footer', 'gp-premium' ), - "id" => 'generate_wp_footer', - "type" => 'textarea' - ) - ) - ); - - $settings = apply_filters( 'gp_hooks_settings_fields', $settings ); - - return $settings; - } - - /** - * Register plugin settings - * @return void - */ - public function register_settings() { - if ( is_array( $this->settings ) ) { - foreach( $this->settings as $section => $data ) { - - // Add section to page - add_settings_section( $section, $data['title'], array( $this, 'settings_section' ), 'gp_hooks_settings' ); - - foreach( $data['fields'] as $field ) { - - // Sanitizing isn't possible, as hooks allow any HTML, JS or PHP to be added. - // Allowing PHP can be a security issue if you have admin users who you don't trust. - // In that case, you can disable the ability to add PHP in hooks like this: define( 'GENERATE_HOOKS_DISALLOW_PHP', true ); - $validation = ''; - if( isset( $field['callback'] ) ) { - $validation = $field['callback']; - } - - // Register field - $option_name = $this->settings_base . $field['id']; - register_setting( 'gp_hooks_settings', 'generate_hooks', $validation ); - - // Add field to page - add_settings_field( 'generate_hooks[' . $field['id'] . ']', $field['name'], array( $this, 'display_field' ), 'gp_hooks_settings', $section, array( 'field' => $field ) ); - } - } - } - } - - public function settings_section( $section ) { - $html = ''; - echo $html; - } - - /** - * Generate HTML for displaying fields - * @param array $args Field data - * @return void - */ - public function display_field( $args ) { - - $field = $args['field']; - - $html = ''; - - $option_name = $this->settings_base . $field['id']; - $option = get_option( 'generate_hooks' ); - - $data = ''; - if( isset( $option[$option_name] ) ) { - $data = $option[$option_name]; - } elseif( isset( $field['default'] ) ) { - $data = $field['default']; - } - - - switch( $field['type'] ) { - - case 'textarea': - $checked = ''; - $checked2 = ''; - if( isset( $option[$field['id'] . '_php'] ) && 'true' == $option[$field['id'] . '_php'] ){ - $checked = 'checked="checked"'; - } - if( isset( $option[$field['id'] . '_disable'] ) && 'true' == $option[$field['id'] . '_disable'] ){ - $checked2 = 'checked="checked"'; - } - $html .= ''; - - if ( ! defined( 'GENERATE_HOOKS_DISALLOW_PHP' ) ) { - $html .= '
    '; - } - $html .= '
    '; - break; - - case 'checkbox': - - - break; - - } - - echo $html; - } - - /** - * Validate individual settings field - * @param string $data Inputted value - * @return string Validated value - */ - public function validate_field( $data ) { - if ( $data && strlen( $data ) > 0 && $data != '' ) { - $data = urlencode( strtolower( str_replace( ' ' , '-' , $data ) ) ); - } - return $data; - } - - /** - * Load settings page content - * @return void - */ - public function settings_page() { - - // Build page HTML - $html = '
    '; - $html .= '
    '; - $html .= '
    '; - $html .= '
    '; - $html .= '
    '; - // Get settings fields - ob_start(); - settings_fields( 'gp_hooks_settings' ); - do_settings_sections( 'gp_hooks_settings' ); - $html .= ob_get_clean(); - $html .= '
    '; - - $html .= '
    '; - $html .= '
    '; - $html .= '

    ' . __( 'GP Hooks', 'gp-premium' ) . '

    '; - $html .= '
    '; - $html .= '

    ' . __( 'Use these fields to insert anything you like throughout GeneratePress. Shortcodes are allowed, and you can even use PHP if you check the Execute PHP checkboxes.', 'gp-premium' ) . '

    '; - $html .= ''; - $html .= '

    '; - $html .= ''; - $html .= '

    '; - $html .= '
    '; - $html .= '
    '; - $html .= '
    '; - $html .= '
    '; - $html .= '
    '; - $html .= '
    '; - $html .= '
    '; - $html .= '
    '; - - echo $html; - } - - } - $settings = new Generate_Hooks_Settings( __FILE__ ); -} - -if ( ! function_exists( 'generate_update_hooks' ) ) { - add_action( 'admin_init', 'generate_update_hooks' ); - /** - * Moving standalone db entries to generate_hooks db entry - */ - function generate_update_hooks() { - $generate_hooks = get_option( 'generate_hooks' ); - - // If we've done this before, bail - if ( ! empty( $generate_hooks ) ) { - return; - } - - // One last check - if ( 'true' == $generate_hooks['updated'] ) { - return; - } - - $hooks = generate_hooks_get_hooks(); - $generate_new_hooks = array(); - - foreach ( $hooks as $hook ) { - - $current_hook = get_option( $hook ); - - if ( isset( $current_hook ) && '' !== $current_hook ) { - - $generate_new_hooks[ $hook ] = get_option( $hook ); - $generate_new_hooks[ 'updated' ] = 'true'; - // Let's not delete the old options yet, just in case - //delete_option( $hook ); - - } - - } - - $generate_new_hook_settings = wp_parse_args( $generate_new_hooks, $generate_hooks ); - update_option( 'generate_hooks', $generate_new_hook_settings ); - - } -} - -if ( ! function_exists( 'generate_hooks_admin_errors' ) ) { - add_action( 'admin_notices', 'generate_hooks_admin_errors' ); - /** - * Add our admin notices - */ - function generate_hooks_admin_errors() { - $screen = get_current_screen(); - if ( 'appearance_page_gp_hooks_settings' !== $screen->base ) { - return; - } - - if ( isset( $_GET['settings-updated'] ) && 'true' == $_GET['settings-updated'] ) { - add_settings_error( 'generate-hook-notices', 'true', __( 'Hooks saved.', 'gp-premium' ), 'updated' ); - } - - settings_errors( 'generate-hook-notices' ); - } -} - -add_action( 'admin_head', 'generate_old_gp_hooks_fix_menu' ); -/** - * Set our current menu in the admin while in the old Page Header pages. - * - * @since 1.7 - */ -function generate_old_gp_hooks_fix_menu() { - if ( ! function_exists( 'generate_premium_do_elements' ) ) { - return; - } - - global $parent_file, $submenu_file, $post_type; - - $screen = get_current_screen(); - - if ( 'appearance_page_gp_hooks_settings' === $screen->base ) { - $parent_file = 'themes.php'; - $submenu_file = 'edit.php?post_type=gp_elements'; - } - - remove_submenu_page( 'themes.php', 'gp_hooks_settings' ); -} - -add_action( 'admin_head', 'generate_hooks_add_legacy_button', 999 ); -/** - * Add legacy buttons to our new GP Elements post type. - * - * @since 1.7 - */ -function generate_hooks_add_legacy_button() { - if ( ! function_exists( 'generate_premium_do_elements' ) ) { - return; - } - - $screen = get_current_screen(); - - if ( 'gp_elements' === $screen->post_type && 'edit' === $screen->base ) : - ?> - - $valueID; - } - - if ( 'previous-post' === $source ) { - $in_same_term = $options['inSameTerm'] ?? false; - $term_taxonomy = $options['sameTermTaxonomy'] ?? 'category'; - $previous_post = get_previous_post( $in_same_term, '', $term_taxonomy ); - - if ( ! is_object( $previous_post ) ) { - return false; - } - - return $previous_post->ID; - } - - return $id; - } -} - -GeneratePress_Pro_Dynamic_Tags_Adjacent_Posts::get_instance()->init(); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/class-dashboard.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/class-dashboard.php deleted file mode 100644 index c3e35a92..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/class-dashboard.php +++ /dev/null @@ -1,417 +0,0 @@ - array( - 'title' => __( 'Backgrounds', 'gp-premium' ), - 'description' => __( 'Set background images for various HTML elements.', 'gp-premium' ), - 'key' => 'generate_package_backgrounds', - 'settings' => 'generate_background_settings', - 'isActive' => 'activated' === get_option( 'generate_package_backgrounds', false ), - 'exportable' => true, - ), - 'Blog' => array( - 'title' => __( 'Blog', 'gp-premium' ), - 'description' => __( 'Set blog options like infinite scroll, masonry layouts and more.', 'gp-premium' ), - 'key' => 'generate_package_blog', - 'settings' => 'generate_blog_settings', - 'isActive' => 'activated' === get_option( 'generate_package_blog', false ), - 'exportable' => true, - ), - 'Colors' => array( - 'title' => __( 'Colors', 'gp-premium' ), - 'key' => 'generate_package_colors', - 'isActive' => 'activated' === get_option( 'generate_package_colors', false ), - ), - 'Copyright' => array( - 'title' => __( 'Copyright', 'gp-premium' ), - 'description' => __( 'Set a custom copyright message in your footer.', 'gp-premium' ), - 'key' => 'generate_package_copyright', - 'settings' => 'copyright', - 'isActive' => 'activated' === get_option( 'generate_package_copyright', false ), - 'exportable' => true, - ), - 'Disable Elements' => array( - 'title' => __( 'Disable Elements', 'gp-premium' ), - 'description' => __( 'Disable default theme elements on specific pages or inside a Layout Element.', 'gp-premium' ), - 'key' => 'generate_package_disable_elements', - 'isActive' => 'activated' === get_option( 'generate_package_disable_elements', false ), - ), - 'Elements' => array( - 'title' => __( 'Elements', 'gp-premium' ), - 'description' => __( 'Use our block editor theme builder, build advanced HTML hooks, and gain more Layout control.', 'gp-premium' ), - 'key' => 'generate_package_elements', - 'isActive' => 'activated' === get_option( 'generate_package_elements', false ), - ), - 'Font Library' => array( - 'title' => __( 'Font Library', 'gp-premium' ), - 'description' => __( 'Download and localize fonts from the Google Fonts library.', 'gp-premium' ), - 'key' => 'generate_package_font_library', - 'isActive' => 'activated' === get_option( 'generate_package_font_library', false ), - ), - 'Hooks' => array( - 'title' => __( 'Hooks', 'gp-premium' ), - 'description' => __( 'This module has been deprecated. Please use Elements instead.', 'gp-premium' ), - 'key' => 'generate_package_hooks', - 'settings' => 'generate_hooks', - 'isActive' => 'activated' === get_option( 'generate_package_hooks', false ), - 'exportable' => true, - ), - 'Menu Plus' => array( - 'title' => __( 'Menu Plus', 'gp-premium' ), - 'description' => __( 'Set up a mobile header, sticky navigation or off-canvas panel.', 'gp-premium' ), - 'key' => 'generate_package_menu_plus', - 'settings' => 'generate_menu_plus_settings', - 'isActive' => 'activated' === get_option( 'generate_package_menu_plus', false ), - 'exportable' => true, - ), - 'Page Header' => array( - 'title' => __( 'Page Header', 'gp-premium' ), - 'description' => __( 'This module has been deprecated. Please use Elements instead.', 'gp-premium' ), - 'key' => 'generate_package_page_header', - 'settings' => 'generate_page_header_settings', - 'isActive' => 'activated' === get_option( 'generate_package_page_header', false ), - 'exportable' => true, - ), - 'Secondary Nav' => array( - 'title' => __( 'Secondary Nav', 'gp-premium' ), - 'description' => __( 'Add a fully-featured secondary navigation to your site.', 'gp-premium' ), - 'key' => 'generate_package_secondary_nav', - 'settings' => 'generate_secondary_nav_settings', - 'isActive' => 'activated' === get_option( 'generate_package_secondary_nav', false ), - 'exportable' => true, - ), - 'Sections' => array( - 'title' => __( 'Sections', 'gp-premium' ), - 'description' => __( 'This module has been deprecated. Please consider using our GenerateBlocks plugin instead.', 'gp-premium' ), - 'key' => 'generate_package_sections', - 'isActive' => 'activated' === get_option( 'generate_package_sections', false ), - ), - 'Spacing' => array( - 'title' => __( 'Spacing', 'gp-premium' ), - 'description' => __( 'Set the padding and overall spacing of your theme elements.', 'gp-premium' ), - 'key' => 'generate_package_spacing', - 'settings' => 'generate_spacing_settings', - 'isActive' => 'activated' === get_option( 'generate_package_spacing', false ), - 'exportable' => true, - ), - 'Typography' => array( - 'title' => __( 'Typography', 'gp-premium' ), - 'description' => __( 'This module has been deprecated. Switch to our dynamic typography system in Customize > General instead.', 'gp-premium' ), - 'key' => 'generate_package_typography', - 'isActive' => 'activated' === get_option( 'generate_package_typography', false ), - ), - 'WooCommerce' => array( - 'title' => __( 'WooCommerce', 'gp-premium' ), - 'description' => __( 'Add colors, typography, and layout options to your WooCommerce store.', 'gp-premium' ), - 'key' => 'generate_package_woocommerce', - 'settings' => 'generate_woocommerce_settings', - 'isActive' => 'activated' === get_option( 'generate_package_woocommerce', false ), - 'exportable' => true, - ), - ); - - if ( version_compare( PHP_VERSION, '5.4', '>=' ) && ! defined( 'GENERATE_DISABLE_SITE_LIBRARY' ) ) { - $modules['Site Library'] = array( - 'title' => __( 'Site Library', 'gp-premium' ), - 'description' => __( 'Choose from an extensive library of professionally designed starter sites.', 'gp-premium' ), - 'key' => 'generate_package_site_library', - 'isActive' => 'activated' === get_option( 'generate_package_site_library', false ), - ); - } - - if ( function_exists( 'generate_is_using_dynamic_typography' ) && generate_is_using_dynamic_typography() ) { - unset( $modules['Typography'] ); - } - - if ( version_compare( generate_premium_get_theme_version(), '3.1.0-alpha.1', '>=' ) ) { - unset( $modules['Colors'] ); - } - - $deprecated_modules = apply_filters( - 'generate_premium_deprecated_modules', - array( - 'Page Header', - 'Hooks', - 'Sections', - ) - ); - - foreach ( $deprecated_modules as $deprecated_module ) { - if ( isset( $modules[ $deprecated_module ] ) ) { - $modules[ $deprecated_module ]['deprecated'] = true; - } - } - - ksort( $modules ); - - return $modules; - } - - /** - * Get modules that can have their settings exported and imported. - */ - public static function get_exportable_modules() { - $modules = array( - 'Core' => array( - 'settings' => 'generate_settings', - 'title' => __( 'Core', 'gp-premium' ), - 'isActive' => true, - ), - ); - - foreach ( self::get_modules() as $key => $data ) { - if ( ! empty( $data['exportable'] ) && $data['isActive'] ) { - $modules[ $key ] = $data; - } - } - - return $modules; - } - - /** - * Get options using theme_mods. - */ - public static function get_theme_mods() { - $theme_mods = array( - 'font_body_variants', - 'font_body_category', - 'font_site_title_variants', - 'font_site_title_category', - 'font_site_tagline_variants', - 'font_site_tagline_category', - 'font_navigation_variants', - 'font_navigation_category', - 'font_secondary_navigation_variants', - 'font_secondary_navigation_category', - 'font_buttons_variants', - 'font_buttons_category', - 'font_heading_1_variants', - 'font_heading_1_category', - 'font_heading_2_variants', - 'font_heading_2_category', - 'font_heading_3_variants', - 'font_heading_3_category', - 'font_heading_4_variants', - 'font_heading_4_category', - 'font_heading_5_variants', - 'font_heading_5_category', - 'font_heading_6_variants', - 'font_heading_6_category', - 'font_widget_title_variants', - 'font_widget_title_category', - 'font_footer_variants', - 'font_footer_category', - 'generate_copyright', - ); - - if ( function_exists( 'generate_is_using_dynamic_typography' ) && generate_is_using_dynamic_typography() ) { - $theme_mods = array( - 'generate_copyright', - ); - } - - return $theme_mods; - } - - /** - * Get our setting keys. - */ - public static function get_setting_keys() { - return array( - 'generate_settings', - 'generate_background_settings', - 'generate_blog_settings', - 'generate_hooks', - 'generate_page_header_settings', - 'generate_secondary_nav_settings', - 'generate_spacing_settings', - 'generate_menu_plus_settings', - 'generate_woocommerce_settings', - ); - } - - /** - * Returns safely the license key. - */ - public static function get_license_key() { - $license_key = get_option( 'gen_premium_license_key', '' ); - - if ( $license_key && strlen( $license_key ) > 4 ) { - $hidden_length = strlen( $license_key ) - 4; - $safe_part = substr( $license_key, -4 ); - $hidden_part = implode( '', array_fill( 0, $hidden_length, '*' ) ); - - return $hidden_part . $safe_part; - } - - return $license_key; - } - - /** - * Add our scripts to the page. - */ - public function enqueue_scripts() { - if ( ! class_exists( 'GeneratePress_Dashboard' ) ) { - return; - } - - $dashboard_pages = GeneratePress_Dashboard::get_pages(); - $current_screen = get_current_screen(); - - - if ( in_array( $current_screen->id, $dashboard_pages ) ) { - $packages_info = generate_premium_get_enqueue_assets( 'packages' ); - wp_enqueue_style( - 'generatepress-pro-packages', - GP_PREMIUM_DIR_URL . 'dist/packages.css', - array(), - $packages_info['version'] - ); - - wp_enqueue_style( - 'generate-pro-dashboard', - GP_PREMIUM_DIR_URL . 'dist/style-dashboard.css', - array( 'wp-components' ), - GP_PREMIUM_VERSION - ); - - if ( 'appearance_page_generate-options' === $current_screen->id ) { - wp_enqueue_script( - 'generate-pro-dashboard', - GP_PREMIUM_DIR_URL . 'dist/dashboard.js', - array(), - GP_PREMIUM_VERSION, - true - ); - - wp_set_script_translations( 'generate-pro-dashboard', 'gp-premium', GP_PREMIUM_DIR_PATH . 'langs' ); - - wp_localize_script( - 'generate-pro-dashboard', - 'generateProDashboard', - array( - 'modules' => self::get_modules(), - 'exportableModules' => self::get_exportable_modules(), - 'fontLibraryUrl' => admin_url( 'themes.php?page=generatepress-font-library' ), - 'siteLibraryUrl' => admin_url( 'themes.php?page=generatepress-library' ), - 'elementsUrl' => admin_url( 'edit.php?post_type=gp_elements' ), - 'hasWooCommerce' => class_exists( 'WooCommerce' ), - 'licenseKey' => self::get_license_key(), - 'licenseKeyStatus' => get_option( 'gen_premium_license_key_status', 'deactivated' ), - 'betaTester' => get_option( 'gp_premium_beta_testing', false ), - ) - ); - } - } - } - - /** - * Enable beta testing if our option is set. - * - * @since 2.1.0 - * @param boolean $value Whether beta testing is on or not. - */ - public function set_beta_tester( $value ) { - if ( get_option( 'gp_premium_beta_testing', false ) ) { - return true; - } - - return $value; - } - - /** - * Add the container for our start customizing app. - */ - public function module_list() { - echo '
    '; - } - - /** - * Add the container for our start customizing app. - */ - public function license_key() { - echo '
    '; - } - - /** - * Add the container for our start customizing app. - */ - public function import_export() { - echo '
    '; - } - - /** - * Add the container for our reset app. - */ - public function reset() { - echo '
    '; - } -} - -GeneratePress_Pro_Dashboard::get_instance(); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/class-register-dynamic-tags.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/class-register-dynamic-tags.php deleted file mode 100644 index b7038ead..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/class-register-dynamic-tags.php +++ /dev/null @@ -1,306 +0,0 @@ - __( 'Archive Title', 'gp-premium' ), - 'tag' => 'archive_title', - 'type' => 'archive', - 'supports' => [], - 'description' => __( 'Get the title for the current archive being viewed.', 'gp-premium' ), - 'return' => [ $this, 'get_archive_title' ], - ] - ); - - new GenerateBlocks_Register_Dynamic_Tag( - [ - 'title' => __( 'Archive Description', 'gp-premium' ), - 'tag' => 'archive_description', - 'type' => 'archive', - 'supports' => [], - 'description' => __( 'Get the description for the current archive being viewed.', 'gp-premium' ), - 'return' => [ $this, 'get_archive_description' ], - ] - ); - - new GenerateBlocks_Register_Dynamic_Tag( - [ - 'title' => __( 'Term Meta', 'gp-premium' ), - 'tag' => 'term_meta', - 'type' => 'term', - 'supports' => [ 'meta', 'source' ], - 'description' => __( 'Access term meta by key for the specified term. Return value must be a string.', 'gp-premium' ), - 'return' => [ $this, 'get_term_meta' ], - ] - ); - - new GenerateBlocks_Register_Dynamic_Tag( - [ - 'title' => __( 'Current year', 'gp-premium' ), - 'tag' => 'current_year', - 'type' => 'site', - 'supports' => [], - 'return' => [ $this, 'get_current_year' ], - ] - ); - - new GenerateBlocks_Register_Dynamic_Tag( - [ - 'title' => __( 'Previous Posts URL', 'gp-premium' ), - 'tag' => 'previous_posts_page_url', - 'type' => 'post', - 'supports' => [ 'source', 'instant-pagination' ], - 'return' => [ $this, 'get_previous_posts_page_url' ], - ] - ); - - new GenerateBlocks_Register_Dynamic_Tag( - [ - 'title' => __( 'Next Posts URL', 'gp-premium' ), - 'tag' => 'next_posts_page_url', - 'type' => 'post', - 'supports' => [ 'source', 'instant-pagination' ], - 'return' => [ $this, 'get_next_posts_page_url' ], - ] - ); - } - - /** - * Get the archive title. - * - * @param array $options The options. - * @param object $block The block. - * @param object $instance The block instance. - * @return string - */ - public static function get_archive_title( $options, $block, $instance ) { - $output = ''; - $id = $options['id'] ?? 0; - - if ( is_category() ) { - $output = single_cat_title( '', false ); - } elseif ( is_tag() ) { - $output = single_tag_title( '', false ); - } elseif ( is_author() ) { - $output = get_the_author(); - } elseif ( is_post_type_archive() ) { - $output = post_type_archive_title( '', false ); - } elseif ( is_tax() ) { - $output = single_term_title( '', false ); - } elseif ( is_home() ) { - $page = get_option( 'page_for_posts' ) ?? 0; - - if ( $page ) { - $output = get_the_title( $page ); - } else { - $output = __( 'Blog', 'generateblocks-pro' ); - } - } elseif ( is_search() ) { - $output = get_search_query(); - } elseif ( $id ) { - if ( term_exists( (int) $id ) ) { - $term = get_term( $id ); - $output = $term->name; - } elseif ( is_string( $id ) ) { - // Assume it's a post type archive title. - $post_type_obj = get_post_type_object( $id ); - $title = $post_type_obj->labels->name ?? ''; - - if ( $title ) { - /** - * Core Filter. Filters the post type archive title. - * - * @param string $post_type_name Post type 'name' label. - * @param string $post_type Post type. - */ - $output = apply_filters( 'post_type_archive_title', $title, $id ); - } - } - } - - return GenerateBlocks_Dynamic_Tag_Callbacks::output( $output, $options, $instance ); - } - - /** - * Get the archive description. - * - * @param array $options The options. - * @param object $block The block. - * @param object $instance The block instance. - * @return string - */ - public static function get_archive_description( $options, $block, $instance ) { - $output = get_the_archive_description(); - - return GenerateBlocks_Dynamic_Tag_Callbacks::output( $output, $options, $instance ); - } - - /** - * Get the term meta. - * - * @param array $options The options. - * @param array $block The block. - * @param object $instance The block instance. - * @return string - */ - public static function get_term_meta( $options, $block, $instance ) { - $id = GenerateBlocks_Dynamic_Tags::get_id( $options, 'term', $instance ); - - if ( ! $id ) { - return GenerateBlocks_Dynamic_Tag_Callbacks::output( '', $options, $instance ); - } - - $key = $options['key'] ?? ''; - $output = ''; - - if ( empty( $key ) ) { - return GenerateBlocks_Dynamic_Tag_Callbacks::output( $output, $options, $instance ); - } - - $value = GenerateBlocks_Meta_Handler::get_term_meta( $id, $key, true ); - - if ( ! $value ) { - return GenerateBlocks_Dynamic_Tag_Callbacks::output( $output, $options, $instance ); - } - - add_filter( 'wp_kses_allowed_html', [ 'GenerateBlocks_Dynamic_Tags', 'expand_allowed_html' ], 10, 2 ); - $output = wp_kses_post( $value ); - remove_filter( 'wp_kses_allowed_html', [ 'GenerateBlocks_Dynamic_Tags', 'expand_allowed_html' ], 10, 2 ); - - return GenerateBlocks_Dynamic_Tag_Callbacks::output( $output, $options, $instance ); - } - - /** - * Get the current year. - * - * @param array $options The options. - * @param array $block The block. - * @param object $instance The block instance. - * - * @return string - */ - public static function get_current_year( $options, $block, $instance ) { - $output = wp_date( 'Y' ); - - return GenerateBlocks_Dynamic_Tag_Callbacks::output( $output, $options, $instance ); - } - - /** - * Get the previous post page URL. - * - * @param array $options The options. - * @param object $block The block. - * @param object $instance The block instance. - * @return string - */ - public static function get_previous_posts_page_url( $options, $block, $instance ) { - $page_key = isset( $instance->context['generateblocks/queryId'] ) ? 'query-' . $instance->context['generateblocks/queryId'] . '-page' : 'query-page'; - $page = empty( $_GET[ $page_key ] ) ? 1 : (int) $_GET[ $page_key ]; // phpcs:ignore -- No data processing happening. - $inherit_query = $instance->context['generateblocks/inheritQuery'] ?? false; - $output = ''; - - if ( $inherit_query ) { - global $paged; - - if ( $paged > 1 ) { - $output = previous_posts( false ); - } - } elseif ( 1 !== $page ) { - $output = esc_url( add_query_arg( $page_key, $page - 1 ) ); - } - - return GenerateBlocks_Dynamic_Tag_Callbacks::output( $output, $options, $instance ); - } - - /** - * Get the next post page URL. - * - * @param array $options The options. - * @param object $block The block. - * @param object $instance The block instance. - * @return string - */ - public static function get_next_posts_page_url( $options, $block, $instance ) { - $page_key = isset( $instance->context['generateblocks/queryId'] ) ? 'query-' . $instance->context['generateblocks/queryId'] . '-page' : 'query-page'; - $page = empty( $_GET[ $page_key ] ) ? 1 : (int) $_GET[ $page_key ]; // phpcs:ignore -- No data processing happening. - $args = $instance->context['generateblocks/query'] ?? []; - $inherit_query = $instance->context['generateblocks/inheritQuery'] ?? false; - $per_page = $args['per_page'] ?? apply_filters( 'generateblocks_query_per_page_default', 10, $args ); - $output = ''; - - if ( $inherit_query ) { - global $wp_query, $paged; - - if ( ! $paged ) { - $paged = 1; // phpcs:ignore -- Need to overrite global here. - } - - $next_page = (int) $paged + 1; - - if ( $next_page <= $wp_query->max_num_pages ) { - $output = next_posts( $wp_query->max_num_pages, false ); - } - } else { - $query_data = $instance->context['generateblocks/queryData'] ?? null; - $query_type = $instance->context['generateblocks/queryType'] ?? GenerateBlocks_Block_Query::TYPE_WP_QUERY; - $is_wp_query = GenerateBlocks_Block_Query::TYPE_WP_QUERY === $query_type; - - if ( ! $query_data || ( ! $is_wp_query && ! is_array( $query_data ) ) ) { - return GenerateBlocks_Dynamic_Tag_Callbacks::output( $output, $options, $instance ); - } - - $next_page = $page + 1; - $custom_query_max_pages = $is_wp_query - ? (int) $query_data->max_num_pages - : ceil( count( $query_data ) / $per_page ); - - if ( $custom_query_max_pages < $next_page ) { - return GenerateBlocks_Dynamic_Tag_Callbacks::output( $output, $options, $instance ); - } - - if ( $custom_query_max_pages && $custom_query_max_pages !== $page ) { - $output = esc_url( add_query_arg( $page_key, $page + 1 ) ); - } - - wp_reset_postdata(); // Restore original Post Data. - } - - return GenerateBlocks_Dynamic_Tag_Callbacks::output( $output, $options, $instance ); - } -} - -GeneratePress_Pro_Dynamic_Tags_Register::get_instance()->init(); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/class-rest.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/class-rest.php deleted file mode 100644 index e9bffe21..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/class-rest.php +++ /dev/null @@ -1,570 +0,0 @@ -namespace . $this->version; - - register_rest_route( - $namespace, - '/modules/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'update_module' ), - 'permission_callback' => array( $this, 'update_settings_permission' ), - ) - ); - - register_rest_route( - $namespace, - '/license/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'update_licensing' ), - 'permission_callback' => array( $this, 'update_settings_permission' ), - ) - ); - - register_rest_route( - $namespace, - '/beta/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'update_beta_testing' ), - 'permission_callback' => array( $this, 'update_settings_permission' ), - ) - ); - - register_rest_route( - $namespace, - '/export/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'export' ), - 'permission_callback' => array( $this, 'update_settings_permission' ), - ) - ); - - register_rest_route( - $namespace, - '/import/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'import' ), - 'permission_callback' => array( $this, 'update_settings_permission' ), - ) - ); - - register_rest_route( - $namespace, - '/reset/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'reset' ), - 'permission_callback' => array( $this, 'update_settings_permission' ), - ) - ); - } - - /** - * Get edit options permissions. - * - * @return bool - */ - public function update_settings_permission() { - return current_user_can( 'manage_options' ); - } - - /** - * Update modules. - * - * @param WP_REST_Request $request request object. - * - * @return mixed - */ - public function update_module( WP_REST_Request $request ) { - $module_key = $request->get_param( 'key' ); - $action = $request->get_param( 'action' ); - $current_setting = get_option( $module_key, false ); - $modules = GeneratePress_Pro_Dashboard::get_modules(); - $safe_module_keys = array(); - - foreach ( $modules as $key => $data ) { - $safe_module_keys[] = $data['key']; - } - - if ( ! in_array( $module_key, $safe_module_keys ) ) { - return $this->failed( 'Bad module key.' ); - } - - $message = ''; - - if ( 'activate' === $action ) { - update_option( $module_key, 'activated' ); - $message = __( 'Module activated.', 'gp-premium' ); - } - - if ( 'deactivate' === $action ) { - update_option( $module_key, 'deactivated' ); - $message = __( 'Module deactivated.', 'gp-premium' ); - } - - return $this->success( $message ); - } - - /** - * Update licensing. - * - * @param WP_REST_Request $request request object. - * - * @return mixed - */ - public function update_licensing( WP_REST_Request $request ) { - $new_license_key = $request->get_param( 'key' ); - $old_license = get_option( 'gen_premium_license_key', '' ); - $old_status = get_option( 'gen_premium_license_key_status', 'deactivated' ); - $new_license = strpos( $new_license_key, '***' ) !== false - ? trim( $old_license ) - : trim( $new_license_key ); - - if ( $new_license ) { - $api_params = array( - 'edd_action' => 'activate_license', - 'license' => sanitize_key( $new_license ), - 'item_name' => rawurlencode( 'GP Premium' ), - 'url' => home_url(), - ); - } elseif ( $old_license && 'valid' === $old_status ) { - $api_params = array( - 'edd_action' => 'deactivate_license', - 'license' => sanitize_key( $old_license ), - 'item_name' => rawurlencode( 'GP Premium' ), - 'url' => home_url(), - ); - } - - if ( isset( $api_params ) ) { - $response = wp_remote_post( - 'https://generatepress.com', - array( - 'timeout' => 30, - 'sslverify' => false, - 'body' => $api_params, - ) - ); - - if ( is_wp_error( $response ) || 200 !== (int) wp_remote_retrieve_response_code( $response ) ) { - if ( is_object( $response ) ) { - return $this->failed( $response->get_error_message() ); - } elseif ( is_array( $response ) && isset( $response['response']['message'] ) ) { - if ( 'Forbidden' === $response['response']['message'] ) { - $message = __( '403 Forbidden. Your server is not able to communicate with generatepress.com in order to activate your license key.', 'gp-premium' ); - } else { - $message = $response['response']['message']; - } - } - } else { - $license_data = json_decode( wp_remote_retrieve_body( $response ) ); - - if ( false === $license_data->success ) { - switch ( $license_data->error ) { - case 'expired': - $message = sprintf( - /* translators: License key expiration date. */ - __( 'Your license key expired on %s.', 'gp-premium' ), - date_i18n( get_option( 'date_format' ), strtotime( $license_data->expires, current_time( 'timestamp' ) ) ) // phpcs:ignore - ); - break; - - case 'disabled': - case 'revoked': - $message = __( 'Your license key has been disabled.', 'gp-premium' ); - break; - - case 'missing': - $message = __( 'Invalid license.', 'gp-premium' ); - break; - - case 'invalid': - case 'site_inactive': - $message = __( 'Your license is not active for this URL.', 'gp-premium' ); - break; - - case 'item_name_mismatch': - /* translators: GP Premium */ - $message = sprintf( __( 'This appears to be an invalid license key for %s.', 'gp-premium' ), __( 'GP Premium', 'gp-premium' ) ); - break; - - case 'no_activations_left': - $message = __( 'Your license key has reached its activation limit.', 'gp-premium' ); - break; - - default: - $message = __( 'An error occurred, please try again.', 'gp-premium' ); - break; - } - } - } - - update_option( 'gen_premium_license_key_status', esc_attr( $license_data->license ) ); - } - - update_option( 'gen_premium_license_key', sanitize_key( $new_license ) ); - - if ( ! isset( $api_params ) ) { - return $this->success( __( 'Settings saved.', 'gp-premium' ) ); - } - - if ( ! empty( $message ) ) { - return $this->failed( $message ); - } - - return $this->success( $license_data ); - } - - /** - * Update licensing. - * - * @param WP_REST_Request $request request object. - * - * @return mixed - */ - public function update_beta_testing( WP_REST_Request $request ) { - $new_beta_tester = $request->get_param( 'beta' ); - - if ( ! empty( $new_beta_tester ) ) { - update_option( 'gp_premium_beta_testing', true, false ); - } else { - delete_option( 'gp_premium_beta_testing' ); - } - - if ( ! isset( $api_params ) ) { - return $this->success( __( 'Settings saved.', 'gp-premium' ) ); - } - - if ( ! empty( $message ) ) { - return $this->failed( $message ); - } - - return $this->success( $license_data ); - } - - /** - * Export settings. - * - * @param WP_REST_Request $request request object. - * - * @return mixed - */ - public function export( WP_REST_Request $request ) { - $exportable_modules = $request->get_param( 'items' ); - - if ( ! $exportable_modules ) { - $exportable_modules = GeneratePress_Pro_Dashboard::get_exportable_modules(); - } - - $export_type = $request->get_param( 'type' ); - - if ( 'all' === $export_type ) { - $data = array( - 'modules' => array(), - 'mods' => array(), - 'options' => array(), - ); - - $module_settings = array(); - - foreach ( $exportable_modules as $exported_module_key => $exported_module_data ) { - if ( isset( $exported_module_data['settings'] ) ) { - $module_settings[] = $exported_module_data['settings']; - } - } - - $modules = GeneratePress_Pro_Dashboard::get_modules(); - - // Export module status of the exported options. - foreach ( $modules as $module_key => $module_data ) { - if ( isset( $module_data['settings'] ) && in_array( $module_data['settings'], $module_settings ) ) { - $data['modules'][ $module_key ] = $module_data['key']; - } - } - - $theme_mods = GeneratePress_Pro_Dashboard::get_theme_mods(); - - foreach ( $theme_mods as $theme_mod ) { - if ( 'generate_copyright' === $theme_mod ) { - if ( in_array( 'copyright', $module_settings ) ) { - $data['mods'][ $theme_mod ] = get_theme_mod( $theme_mod ); - } - } else { - if ( in_array( 'generate_settings', $module_settings ) ) { - $data['mods'][ $theme_mod ] = get_theme_mod( $theme_mod ); - } - } - } - - $settings = GeneratePress_Pro_Dashboard::get_setting_keys(); - - foreach ( $settings as $setting ) { - if ( in_array( $setting, $module_settings ) ) { - $data['options'][ $setting ] = get_option( $setting ); - } - } - } - - if ( 'global-colors' === $export_type ) { - $data['global-colors'] = generate_get_option( 'global_colors' ); - } - - if ( 'typography' === $export_type ) { - $data['font-manager'] = generate_get_option( 'font_manager' ); - $data['typography'] = generate_get_option( 'typography' ); - } - - $data = apply_filters( 'generate_export_data', $data, $export_type ); - - return $this->success( $data ); - } - - /** - * Import settings. - * - * @param WP_REST_Request $request request object. - * - * @return mixed - */ - public function import( WP_REST_Request $request ) { - $settings = $request->get_param( 'import' ); - - if ( empty( $settings ) ) { - $this->failed( __( 'No settings to import.', 'gp-premium' ) ); - } - - if ( ! empty( $settings['typography'] ) ) { - $existing_settings = get_option( 'generate_settings', array() ); - $existing_settings['typography'] = $settings['typography']; - - if ( ! empty( $settings['font-manager'] ) ) { - $existing_settings['font_manager'] = $settings['font-manager']; - } - - update_option( 'generate_settings', $existing_settings ); - } elseif ( ! empty( $settings['global-colors'] ) ) { - $existing_settings = get_option( 'generate_settings', array() ); - $existing_settings['global_colors'] = $settings['global-colors']; - - update_option( 'generate_settings', $existing_settings ); - } else { - $modules = GeneratePress_Pro_Dashboard::get_modules(); - - foreach ( (array) $settings['modules'] as $key => $val ) { - if ( isset( $modules[ $key ] ) && in_array( $val, $modules[ $key ] ) ) { - update_option( $val, 'activated' ); - } - } - - foreach ( (array) $settings['mods'] as $key => $val ) { - if ( in_array( $key, GeneratePress_Pro_Dashboard::get_theme_mods() ) ) { - set_theme_mod( $key, $val ); - } - } - - foreach ( (array) $settings['options'] as $key => $val ) { - if ( in_array( $key, GeneratePress_Pro_Dashboard::get_setting_keys() ) ) { - update_option( $key, $val ); - } - } - } - - // Delete existing dynamic CSS cache. - delete_option( 'generate_dynamic_css_output' ); - delete_option( 'generate_dynamic_css_cached_version' ); - - $dynamic_css_data = get_option( 'generatepress_dynamic_css_data', array() ); - - if ( isset( $dynamic_css_data['updated_time'] ) ) { - unset( $dynamic_css_data['updated_time'] ); - } - - update_option( 'generatepress_dynamic_css_data', $dynamic_css_data ); - - return $this->success( __( 'Settings imported.', 'gp-premium' ) ); - } - - /** - * Reset settings. - * - * @param WP_REST_Request $request request object. - * - * @return mixed - */ - public function reset( WP_REST_Request $request ) { - $reset_items = $request->get_param( 'items' ); - - if ( ! $reset_items ) { - $reset_items = GeneratePress_Pro_Dashboard::get_exportable_modules(); - } - - $module_settings = array(); - - foreach ( $reset_items as $reset_module_key => $reset_module_data ) { - if ( isset( $reset_module_data['settings'] ) ) { - $module_settings[] = $reset_module_data['settings']; - } - } - - $theme_mods = GeneratePress_Pro_Dashboard::get_theme_mods(); - - foreach ( $theme_mods as $theme_mod ) { - if ( 'generate_copyright' === $theme_mod ) { - if ( in_array( 'copyright', $module_settings ) ) { - remove_theme_mod( $theme_mod ); - } - } else { - if ( in_array( 'generate_settings', $module_settings ) ) { - remove_theme_mod( $theme_mod ); - } - } - } - - $settings = GeneratePress_Pro_Dashboard::get_setting_keys(); - - foreach ( $settings as $setting ) { - if ( in_array( $setting, $module_settings ) ) { - delete_option( $setting ); - } - } - - // Delete our dynamic CSS option. - delete_option( 'generate_dynamic_css_output' ); - delete_option( 'generate_dynamic_css_cached_version' ); - - // Reset our dynamic CSS file updated time so it regenerates. - $dynamic_css_data = get_option( 'generatepress_dynamic_css_data', array() ); - - if ( isset( $dynamic_css_data['updated_time'] ) ) { - unset( $dynamic_css_data['updated_time'] ); - } - - update_option( 'generatepress_dynamic_css_data', $dynamic_css_data ); - - // Delete any GeneratePress Site CSS in Additional CSS. - $additional_css = wp_get_custom_css_post(); - - if ( ! empty( $additional_css ) ) { - $additional_css->post_content = preg_replace( '#(/\\* GeneratePress Site CSS \\*/).*?(/\\* End GeneratePress Site CSS \\*/)#s', '', $additional_css->post_content ); - wp_update_custom_css_post( $additional_css->post_content ); - } - - return $this->success( __( 'Settings reset.', 'gp-premium' ) ); - } - - /** - * Success rest. - * - * @param mixed $response response data. - * @return mixed - */ - public function success( $response ) { - return new WP_REST_Response( - array( - 'success' => true, - 'response' => $response, - ), - 200 - ); - } - - /** - * Failed rest. - * - * @param mixed $response response data. - * @return mixed - */ - public function failed( $response ) { - return new WP_REST_Response( - array( - 'success' => false, - 'response' => $response, - ), - 200 - ); - } - - /** - * Error rest. - * - * @param mixed $code error code. - * @param mixed $response response data. - * @return mixed - */ - public function error( $code, $response ) { - return new WP_REST_Response( - array( - 'error' => true, - 'success' => false, - 'error_code' => $code, - 'response' => $response, - ), - 401 - ); - } -} - -GeneratePress_Pro_Rest::get_instance(); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/class-singleton.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/class-singleton.php deleted file mode 100644 index 52507b82..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/class-singleton.php +++ /dev/null @@ -1,58 +0,0 @@ -id ) { - return true; - } - - return false; -} - -/** - * Add the Sites tab to our Dashboard tabs. - * - * @since 1.6 - * @deprecated 2.0.0 - * - * @param array $tabs Existing tabs. - * @return array New tabs. - */ -function generate_sites_dashboard_tab( $tabs ) { - $tabs['Sites'] = array( - 'name' => __( 'Site Library', 'gp-premium' ), - 'url' => admin_url( 'themes.php?page=generatepress-site-library' ), - 'class' => generate_is_sites_dashboard() ? 'active' : '', - ); - - return $tabs; -} - -/** - * Register our Site Library page. - * - * @since 1.7 - * @deprecated 2.0.0 - */ -function generate_site_library_register() { - add_submenu_page( - 'themes.php', - __( 'Site Library', 'gp-premium' ), - __( 'Site Library', 'gp-premium' ), - 'manage_options', - 'generatepress-site-library', - 'generate_sites_container' - ); -} - -/** - * Set our current menu item as the GeneratePress Dashboard. - * - * @since 1.7 - * @deprecated 2.0.0 - */ -function generate_site_library_fix_menu() { - global $parent_file, $submenu_file, $post_type; - - if ( generate_is_sites_dashboard() ) { - $parent_file = 'themes.php'; // phpcs:ignore -- Override necessary. - $submenu_file = 'generate-options'; // phpcs:ignore -- Override necessary. - } - - remove_submenu_page( 'themes.php', 'generatepress-site-library' ); -} - -/** - * Add our scripts for the site library. - * - * @since 1.8 - * @deprecated 2.0.0 - */ -function generate_sites_do_enqueue_scripts() { - if ( ! generate_is_sites_dashboard() ) { - return; - } - - $backup_data = get_option( '_generatepress_site_library_backup', array() ); - - wp_enqueue_script( - 'generate-sites-admin', - GENERATE_SITES_URL . 'assets/js/admin.js', - array( 'jquery', 'wp-util', 'updates', 'generate-sites-blazy' ), - GP_PREMIUM_VERSION, - true - ); - - wp_enqueue_script( - 'generate-sites-download', - GENERATE_SITES_URL . 'assets/js/download.js', - array( 'jquery', 'generate-sites-admin' ), - GP_PREMIUM_VERSION, - true - ); - - wp_enqueue_script( - 'generate-sites-blazy', - GENERATE_SITES_URL . 'assets/js/blazy.min.js', - array(), - GP_PREMIUM_VERSION, - true - ); - - wp_localize_script( - 'generate-sites-admin', - 'generate_sites_params', - array( - 'ajaxurl' => admin_url( 'admin-ajax.php' ), - 'nonce' => wp_create_nonce( 'generate_sites_nonce' ), - 'importing_options' => __( 'Importing options', 'gp-premium' ), - 'backing_up_options' => __( 'Backing up options', 'gp-premium' ), - 'checking_demo_content' => __( 'Checking demo content', 'gp-premium' ), - 'downloading_content' => __( 'Downloading content', 'gp-premium' ), - 'importing_content' => __( 'Importing content', 'gp-premium' ), - 'importing_site_options' => __( 'Importing site options', 'gp-premium' ), - 'importing_widgets' => __( 'Importing widgets', 'gp-premium' ), - 'activating_plugins' => __( 'Activating plugins', 'gp-premium' ), - 'installing_plugins' => __( 'Installing plugins', 'gp-premium' ), - 'automatic_plugins' => __( 'Automatic', 'gp-premium' ), - 'manual_plugins' => __( 'Manual', 'gp-premium' ), - 'home_url' => home_url(), - 'restoreThemeOptions' => __( 'Restoring theme options', 'gp-premium' ), - 'restoreSiteOptions' => __( 'Restoring site options', 'gp-premium' ), - 'restoreContent' => __( 'Removing imported content', 'gp-premium' ), - 'restorePlugins' => __( 'Deactivating imported plugins', 'gp-premium' ), - 'restoreWidgets' => __( 'Restoring widgets', 'gp-premium' ), - 'restoreCSS' => __( 'Restoring CSS', 'gp-premium' ), - 'cleanUp' => __( 'Cleaning up', 'gp-premium' ), - 'hasContentBackup' => ! empty( $backup_data['content'] ), - 'confirmRemoval' => __( 'This process makes changes to your database. If you have existing data, be sure to create a backup as a precaution.', 'gp-premium' ), - ) - ); - - wp_enqueue_style( - 'generate-sites-admin', - GENERATE_SITES_URL . 'assets/css/admin.css', - array(), - GP_PREMIUM_VERSION - ); - - wp_enqueue_style( - 'generate-premium-dashboard', - plugin_dir_url( dirname( __FILE__ ) ) . 'inc/assets/dashboard.css', - array(), - GP_PREMIUM_VERSION - ); -} - -/** - * Add a body class while in the Site Library. - * - * @since 1.8 - * @deprecated 2.0.0 - * - * @param array $classes Current body classes. - * @return array Existing and our new body classes - */ -function generate_sites_do_admin_body_classes( $classes ) { - if ( generate_is_sites_dashboard() ) { - $classes .= ' generate-sites'; - } - - return $classes; -} - -/** - * Add an opening wrapper element for our Dashboard tabs and page builder links. - * - * @since 1.8 - */ -function generate_sites_add_tabs_wrapper_open() { - echo '
    '; -} - -/** - * Adds our Site dashboard container. - * - * @since 1.6 - * @deprecated 2.0.0 - */ -function generate_sites_container() { - ?> -
    -
    -
    -
    - -
    - - -
    -
    -
    - '; - - if ( ! empty( $page_builders ) ) : - ?> -
    - -
    - -
    -
    - - -
    - -
    - - - - -
    -

    - -
    -

    -

    -
    - -
    - - - - -
    -
    - -
    - -
    - - - %2$s - -
    ', - esc_html( wp_create_nonce( 'refresh_sites_nonce' ) ), - __( 'Refresh Sites', 'gp-premium' ), - esc_url( admin_url( 'themes.php?page=generatepress-site-library' ) ), - __( 'Reload Page', 'gp-premium' ) - ); - ?> - - - get_post_types( array( 'public' => true ) ), - 'showposts' => -1, - 'meta_query' => array( - array( - 'key' => '_generate-select-page-header', - 'compare' => 'EXISTS', - ), - ), - ); - - $posts = get_posts( $args ); - $new_values = array(); - - foreach ( $posts as $post ) { - $page_header_id = get_post_meta( $post->ID, '_generate-select-page-header', true ); - - if ( $page_header_id ) { - $new_values[ $post->ID ] = $page_header_id; - } - } - - return $new_values; -} - -/** - * Get our Element display locations. - * - * @since 1.7 - * @deprecated 2.0.0 - * - * @return array - */ -function generate_sites_export_elements_location() { - $args = array( - 'post_type' => 'gp_elements', - 'showposts' => -1, - ); - - $posts = get_posts( $args ); - $new_values = array(); - - foreach ( $posts as $post ) { - $display_conditions = get_post_meta( $post->ID, '_generate_element_display_conditions', true ); - - if ( $display_conditions ) { - $new_values[ $post->ID ] = $display_conditions; - } - } - - return $new_values; -} - -/** - * Get our Element display locations. - * - * @since 1.7 - * @deprecated 2.0.0 - * - * @return array - */ -function generate_sites_export_elements_exclusion() { - $args = array( - 'post_type' => 'gp_elements', - 'showposts' => -1, - ); - - $posts = get_posts( $args ); - $new_values = array(); - - foreach ( $posts as $post ) { - $display_conditions = get_post_meta( $post->ID, '_generate_element_exclude_conditions', true ); - - if ( $display_conditions ) { - $new_values[ $post->ID ] = $display_conditions; - } - } - - return $new_values; -} - -/** - * List out compatible theme modules Sites can activate. - * - * @since 1.6 - * @deprecated 2.0.0 - * - * @return array - */ -function generatepress_get_site_premium_modules() { - return array( - 'Backgrounds' => 'generate_package_backgrounds', - 'Blog' => 'generate_package_blog', - 'Colors' => 'generate_package_colors', - 'Copyright' => 'generate_package_copyright', - 'Elements' => 'generate_package_elements', - 'Disable Elements' => 'generate_package_disable_elements', - 'Hooks' => 'generate_package_hooks', - 'Menu Plus' => 'generate_package_menu_plus', - 'Page Header' => 'generate_package_page_header', - 'Secondary Nav' => 'generate_package_secondary_nav', - 'Sections' => 'generate_package_sections', - 'Spacing' => 'generate_package_spacing', - 'Typography' => 'generate_package_typography', - 'WooCommerce' => 'generate_package_woocommerce', - ); -} - -/** - * Don't allow Sites to modify these options. - * - * @since 1.6 - * @deprecated 2.0.0 - * - * @return array - */ -function generatepress_sites_disallowed_options() { - return array( - 'admin_email', - 'siteurl', - 'home', - 'blog_charset', - 'blog_public', - 'current_theme', - 'stylesheet', - 'template', - 'default_role', - 'mailserver_login', - 'mailserver_pass', - 'mailserver_port', - 'mailserver_url', - 'permalink_structure', - 'rewrite_rules', - 'users_can_register', - ); -} - -/** - * Add our GeneratePress Site export checkbox to the Export module. - * - * @since 1.7 - * @deprecated 2.0.0 - */ -function generatepress_sites_add_export_checkbox() { - if ( ! apply_filters( 'generate_show_generatepress_site_export_option', false ) ) { - return; - } - ?> -
    - - - $key ) { - if ( 'activated' === get_option( $key ) ) { - $data['modules'][ $name ] = $key; - } - } - - // Site options. - $data['site_options']['nav_menu_locations'] = get_theme_mod( 'nav_menu_locations' ); - $data['site_options']['custom_logo'] = wp_get_attachment_url( get_theme_mod( 'custom_logo' ) ); - $data['site_options']['show_on_front'] = get_option( 'show_on_front' ); - $data['site_options']['page_on_front'] = get_option( 'page_on_front' ); - $data['site_options']['page_for_posts'] = get_option( 'page_for_posts' ); - - // Page header. - $data['site_options']['page_header_global_locations'] = get_option( 'generate_page_header_global_locations' ); - $data['site_options']['page_headers'] = generate_sites_export_page_headers(); - - // Elements. - $data['site_options']['element_locations'] = generate_sites_export_elements_location(); - $data['site_options']['element_exclusions'] = generate_sites_export_elements_exclusion(); - - // Custom CSS. - if ( function_exists( 'wp_get_custom_css_post' ) ) { - $data['custom_css'] = wp_get_custom_css_post()->post_content; - } - - // WooCommerce. - if ( is_plugin_active( 'woocommerce/woocommerce.php' ) ) { - $data['site_options']['woocommerce_shop_page_id'] = get_option( 'woocommerce_shop_page_id' ); - $data['site_options']['woocommerce_cart_page_id'] = get_option( 'woocommerce_cart_page_id' ); - $data['site_options']['woocommerce_checkout_page_id'] = get_option( 'woocommerce_checkout_page_id' ); - $data['site_options']['woocommerce_myaccount_page_id'] = get_option( 'woocommerce_myaccount_page_id' ); - $data['site_options']['woocommerce_single_image_width'] = get_option( 'woocommerce_single_image_width' ); - $data['site_options']['woocommerce_thumbnail_image_width'] = get_option( 'woocommerce_thumbnail_image_width' ); - $data['site_options']['woocommerce_thumbnail_cropping'] = get_option( 'woocommerce_thumbnail_cropping' ); - $data['site_options']['woocommerce_shop_page_display'] = get_option( 'woocommerce_shop_page_display' ); - $data['site_options']['woocommerce_category_archive_display'] = get_option( 'woocommerce_category_archive_display' ); - $data['site_options']['woocommerce_default_catalog_orderby'] = get_option( 'woocommerce_default_catalog_orderby' ); - } - - // Elementor. - if ( is_plugin_active( 'elementor/elementor.php' ) ) { - $data['site_options']['elementor_container_width'] = get_option( 'elementor_container_width' ); - $data['site_options']['elementor_cpt_support'] = get_option( 'elementor_cpt_support' ); - $data['site_options']['elementor_css_print_method'] = get_option( 'elementor_css_print_method' ); - $data['site_options']['elementor_default_generic_fonts'] = get_option( 'elementor_default_generic_fonts' ); - $data['site_options']['elementor_disable_color_schemes'] = get_option( 'elementor_disable_color_schemes' ); - $data['site_options']['elementor_disable_typography_schemes'] = get_option( 'elementor_disable_typography_schemes' ); - $data['site_options']['elementor_editor_break_lines'] = get_option( 'elementor_editor_break_lines' ); - $data['site_options']['elementor_exclude_user_roles'] = get_option( 'elementor_exclude_user_roles' ); - $data['site_options']['elementor_global_image_lightbox'] = get_option( 'elementor_global_image_lightbox' ); - $data['site_options']['elementor_page_title_selector'] = get_option( 'elementor_page_title_selector' ); - $data['site_options']['elementor_scheme_color'] = get_option( 'elementor_scheme_color' ); - $data['site_options']['elementor_scheme_color-picker'] = get_option( 'elementor_scheme_color-picker' ); - $data['site_options']['elementor_scheme_typography'] = get_option( 'elementor_scheme_typography' ); - $data['site_options']['elementor_space_between_widgets'] = get_option( 'elementor_space_between_widgets' ); - $data['site_options']['elementor_stretched_section_container'] = get_option( 'elementor_stretched_section_container' ); - $data['site_options']['elementor_load_fa4_shim'] = get_option( 'elementor_load_fa4_shim' ); - $data['site_options']['elementor_active_kit'] = get_option( 'elementor_active_kit' ); - } - - // Beaver Builder. - if ( is_plugin_active( 'beaver-builder-lite-version/fl-builder.php' ) || is_plugin_active( 'bb-plugin/fl-builder.php' ) ) { - $data['site_options']['_fl_builder_enabled_icons'] = get_option( '_fl_builder_enabled_icons' ); - $data['site_options']['_fl_builder_enabled_modules'] = get_option( '_fl_builder_enabled_modules' ); - $data['site_options']['_fl_builder_post_types'] = get_option( '_fl_builder_post_types' ); - $data['site_options']['_fl_builder_color_presets'] = get_option( '_fl_builder_color_presets' ); - $data['site_options']['_fl_builder_services'] = get_option( '_fl_builder_services' ); - $data['site_options']['_fl_builder_settings'] = get_option( '_fl_builder_settings' ); - $data['site_options']['_fl_builder_user_access'] = get_option( '_fl_builder_user_access' ); - $data['site_options']['_fl_builder_enabled_templates'] = get_option( '_fl_builder_enabled_templates' ); - } - - // Menu Icons. - if ( is_plugin_active( 'menu-icons/menu-icons.php' ) ) { - $data['site_options']['menu-icons'] = get_option( 'menu-icons' ); - } - - // Ninja Forms. - if ( is_plugin_active( 'ninja-forms/ninja-forms.php' ) ) { - $data['site_options']['ninja_forms_settings'] = get_option( 'ninja_forms_settings' ); - } - - // Social Warfare. - if ( is_plugin_active( 'social-warfare/social-warfare.php' ) ) { - $data['site_options']['socialWarfareOptions'] = get_option( 'socialWarfareOptions' ); - } - - // Elements Plus. - if ( is_plugin_active( 'elements-plus/elements-plus.php' ) ) { - $data['site_options']['elements_plus_settings'] = get_option( 'elements_plus_settings' ); - } - - // Ank Google Map. - if ( is_plugin_active( 'ank-google-map/ank-google-map.php' ) ) { - $data['site_options']['ank_google_map'] = get_option( 'ank_google_map' ); - } - - // GP Social Share. - if ( is_plugin_active( 'gp-social-share-svg/gp-social-share.php' ) ) { - $data['site_options']['gp_social_settings'] = get_option( 'gp_social_settings' ); - } - - // Active plugins. - $active_plugins = get_option( 'active_plugins' ); - $all_plugins = get_plugins(); - - $ignore = apply_filters( - 'generate_sites_ignore_plugins', - array( - 'gp-premium/gp-premium.php', - 'widget-importer-exporter/widget-importer-exporter.php', - ) - ); - - foreach ( $ignore as $plugin ) { - unset( $all_plugins[ $plugin ] ); - } - - $activated_plugins = array(); - - foreach ( $active_plugins as $p ) { - if ( isset( $all_plugins[ $p ] ) ) { - $activated_plugins[ $all_plugins[ $p ]['Name'] ] = $p; - } - } - - $data['plugins'] = $activated_plugins; - - return $data; - -} - -/** - * Get our sites from the site server. - * - * @since 1.12.0' - * @deprecated 2.0.0 - */ -function generate_get_sites_from_library() { - $remote_sites = get_transient( 'generatepress_sites' ); - $trusted_authors = get_transient( 'generatepress_sites_trusted_providers' ); - - if ( empty( $remote_sites ) ) { - $sites = array(); - - $data = wp_safe_remote_get( 'https://gpsites.co/wp-json/wp/v2/sites?per_page=100' ); - - if ( is_wp_error( $data ) ) { - set_transient( 'generatepress_sites', 'no results', 5 * MINUTE_IN_SECONDS ); - return; - } - - $data = json_decode( wp_remote_retrieve_body( $data ), true ); - - if ( ! is_array( $data ) ) { - set_transient( 'generatepress_sites', 'no results', 5 * MINUTE_IN_SECONDS ); - return; - } - - foreach ( (array) $data as $site ) { - $sites[ $site['name'] ] = array( - 'name' => $site['name'], - 'directory' => $site['directory'], - 'preview_url' => $site['preview_url'], - 'author_name' => $site['author_name'], - 'author_url' => $site['author_url'], - 'description' => $site['description'], - 'page_builder' => $site['page_builder'], - 'min_version' => $site['min_version'], - 'uploads_url' => $site['uploads_url'], - 'plugins' => $site['plugins'], - 'documentation' => $site['documentation'], - ); - } - - $sites = apply_filters( 'generate_add_sites', $sites ); - - set_transient( 'generatepress_sites', $sites, 24 * HOUR_IN_SECONDS ); - } - - if ( empty( $trusted_authors ) ) { - $trusted_authors = wp_safe_remote_get( 'https://gpsites.co/wp-json/sites/site' ); - - if ( is_wp_error( $trusted_authors ) || empty( $trusted_authors ) ) { - set_transient( 'generatepress_sites_trusted_providers', 'no results', 5 * MINUTE_IN_SECONDS ); - return; - } - - $trusted_authors = json_decode( wp_remote_retrieve_body( $trusted_authors ), true ); - - $authors = array(); - foreach ( (array) $trusted_authors['trusted_author'] as $author ) { - $authors[] = $author; - } - - set_transient( 'generatepress_sites_trusted_providers', $authors, 24 * HOUR_IN_SECONDS ); - } -} - -/** - * Fetch our sites and trusted authors. Stores them in their own transients. - * We use current_screen instead of admin_init so we can check what admin page we're on. - * - * @since 1.6 - * @deprecated 2.0.0 - */ -function generatepress_sites_init() { - $screen = get_current_screen(); - - if ( 'appearance_page_generate-options' === $screen->id || 'appearance_page_generatepress-site-library' === $screen->id ) { - generate_get_sites_from_library(); - } -} - -/** - * Initiate our Sites once everything has loaded. - * We use current_screen instead of admin_init so we can check what admin page we're on. - * - * @since 1.6 - * @deprecated 2.0.0 - */ -function generatepress_sites_output() { - if ( ! class_exists( 'GeneratePress_Site' ) ) { - return; // Bail if we don't have the needed class. - } - - $sites = get_transient( 'generatepress_sites' ); - - if ( empty( $sites ) || ! is_array( $sites ) ) { - add_action( 'generate_inside_sites_container', 'generatepress_sites_no_results_error' ); - return; - } - - if ( apply_filters( 'generate_sites_randomize', false ) ) { - shuffle( $sites ); - } - - foreach ( $sites as $site ) { - new GeneratePress_Site( $site ); - } -} - -/** - * Show an error message when no sites exist. - * - * @since 1.8.2 - * @deprecated 2.0.0 - */ -function generatepress_sites_no_results_error() { - printf( - '
    - %1$s %2$s -
    ', - __( 'No sites found.', 'gp-premium' ), - __( 'Why?', 'gp-premium' ), - 'https://docs.generatepress.com/article/site-library-unavailable/' - ); -} - -/** - * Build each site UI. - * - * @deprecated 2.0.0 - */ -class GeneratePress_Site { - /** - * Get it rockin' - * - * @param array $config The site configuration. - */ - public function __construct( $config = array() ) { - // Do nothing. - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/deprecated.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/deprecated.php deleted file mode 100644 index e84e37a8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/deprecated.php +++ /dev/null @@ -1,728 +0,0 @@ -current_post == 0 && $paged == 1 ) ? true : false; - - // Get our Customizer options - $generate_blog_settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - $masonry_post_width = $generate_blog_settings['masonry_width']; - - // Get our post meta option - $stored_meta = ( isset( $post ) ) ? get_post_meta( $post->ID, '_generate-blog-post-class', true ) : ''; - - // If our post meta option is set, use it - // Or else, use our Customizer option - if ( '' !== $stored_meta ) { - if ( 'width4' == $stored_meta && 'width4' == $generate_blog_settings['masonry_width'] ) { - $masonry_post_width = 'medium'; - } else { - $masonry_post_width = $stored_meta; - } - } - - // Return our width class - return apply_filters( 'generate_masonry_post_width', $masonry_post_width ); - } -} - -if ( ! function_exists( 'generate_blog_add_post_class_meta_box' ) ) { - /** - * Create our masonry meta box - * - * @deprecated 1.5 - */ - function generate_blog_add_post_class_meta_box() { - $generate_blog_settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - if ( 'true' !== $generate_blog_settings['masonry'] ) { - return; - } - - $post_types = apply_filters( 'generate_blog_masonry_metabox', array( 'post' ) ); - - add_meta_box - ( - 'generate_blog_post_class_meta_box', // $id - __('Masonry Post Width','generate-blog'), // $title - 'generate_blog_show_post_class_metabox', // $callback - $post_types, // $page - 'side', // $context - 'default' // $priority - ); - } -} - -if ( ! function_exists( 'generate_blog_show_post_class_metabox' ) ) { - /** - * Outputs the content of the metabox - * @deprecated 1.5 - */ - function generate_blog_show_post_class_metabox( $post ) { - wp_nonce_field( basename( __FILE__ ), 'generate_blog_post_class_nonce' ); - $stored_meta = get_post_meta( $post->ID ); - - // Set defaults to avoid PHP notices - if ( isset($stored_meta['_generate-blog-post-class'][0]) ) { - $stored_meta['_generate-blog-post-class'][0] = $stored_meta['_generate-blog-post-class'][0]; - } else { - $stored_meta['_generate-blog-post-class'][0] = ''; - } - ?> -

    -
    - -

    - max_num_pages; - } - - if ( ! $paged ) { - $paged = 1; - } - - $nextpage = intval( $paged ) + 1; - - if ( ! is_single() && ( $nextpage <= $max_page ) ) { - return next_posts( $max_page, false ); - } - } -} - -/** - * Fixes a bug in Safari where images with srcset won't display when using infinite scroll. - * - * @since 1.5.5 - * @deprecated 1.6 - */ -function generate_blog_disable_infinite_scroll_srcset() { - $settings = wp_parse_args( - get_option( 'generate_blog_settings', array() ), - generate_blog_get_defaults() - ); - - if ( ! is_singular() && $settings[ 'infinite_scroll' ] ) { - add_filter( 'wp_calculate_image_srcset', '__return_empty_array' ); - } -} - -if ( ! function_exists( 'generate_blog_init' ) ) { - function generate_blog_init() { - load_plugin_textdomain( 'generate-blog', false, 'gp-premium/langs/blog/' ); - } -} - -/** - * Colors module. - */ -if ( ! function_exists( 'generate_colors_init' ) ) { - function generate_colors_init() { - load_plugin_textdomain( 'generate-colors', false, 'gp-premium/langs/colors/' ); - } -} - -if ( ! function_exists( 'generate_colors_setup' ) ) { - function generate_colors_setup() { - // Here so we can check to see if Colors is activated - } -} - -/** - * Copyright module. - */ -if ( ! function_exists( 'generate_copyright_init' ) ) { - function generate_copyright_init() { - load_plugin_textdomain( 'generate-copyright', false, 'gp-premium/langs/copyright/' ); - } -} - -/** - * Disable Elements module. - */ -if ( ! function_exists('generate_disable_elements_init') ) { - function generate_disable_elements_init() { - load_plugin_textdomain( 'disable-elements', false, 'gp-premium/langs/disable-elements/' ); - } -} - -/** - * Hooks module. - */ -if ( ! function_exists( 'generate_hooks_init' ) ) { - function generate_hooks_init() { - load_plugin_textdomain( 'generate-hooks', false, 'gp-premium/langs/hooks/' ); - } -} - -/** - * Import/Export module. - */ -if ( ! function_exists( 'generate_ie_init' ) ) { - function generate_ie_init() { - load_plugin_textdomain( 'generate-ie', false, 'gp-premium/langs/import-export/' ); - } -} - -/** - * Menu Plus module. - */ -if ( ! function_exists( 'generate_slideout_navigation_class' ) ) { - /** - * Display the classes for the slideout navigation. - * - * @since 0.1 - * @param string|array $class One or more classes to add to the class list. - */ - function generate_slideout_navigation_class( $class = '' ) { - // Separates classes with a single space, collates classes for post DIV - echo 'class="' . join( ' ', generate_get_slideout_navigation_class( $class ) ) . '"'; - } -} - -if ( ! function_exists( 'generate_get_slideout_navigation_class' ) ) { - /** - * Retrieve the classes for the slideout navigation. - * - * @since 0.1 - * @param string|array $class One or more classes to add to the class list. - * @return array Array of classes. - */ - function generate_get_slideout_navigation_class( $class = '' ) { - $classes = array(); - - if ( !empty($class) ) { - if ( !is_array( $class ) ) - $class = preg_split('#\s+#', $class); - $classes = array_merge($classes, $class); - } - - $classes = array_map('esc_attr', $classes); - - return apply_filters('generate_slideout_navigation_class', $classes, $class); - } -} - -if ( ! function_exists( 'generate_slideout_menu_class' ) ) { - /** - * Display the classes for the slideout navigation. - * - * @since 0.1 - * @param string|array $class One or more classes to add to the class list. - */ - function generate_slideout_menu_class( $class = '' ) { - // Separates classes with a single space, collates classes for post DIV - echo 'class="' . join( ' ', generate_get_slideout_menu_class( $class ) ) . '"'; - } -} - -if ( ! function_exists( 'generate_get_slideout_menu_class' ) ) { - /** - * Retrieve the classes for the slideout navigation. - * - * @since 0.1 - * @param string|array $class One or more classes to add to the class list. - * @return array Array of classes. - */ - function generate_get_slideout_menu_class( $class = '' ) { - $classes = array(); - - if ( !empty($class) ) { - if ( !is_array( $class ) ) - $class = preg_split('#\s+#', $class); - $classes = array_merge($classes, $class); - } - - $classes = array_map('esc_attr', $classes); - - return apply_filters('generate_slideout_menu_class', $classes, $class); - } -} - -if ( ! function_exists( 'generate_slideout_menu_classes' ) ) { - /** - * Adds custom classes to the menu - * @since 0.1 - */ - function generate_slideout_menu_classes( $classes ) { - $classes[] = 'slideout-menu'; - return $classes; - } -} - -if ( ! function_exists( 'generate_slideout_navigation_classes' ) ) { - /** - * Adds custom classes to the navigation - * @since 0.1 - */ - function generate_slideout_navigation_classes( $classes ){ - $slideout_effect = apply_filters( 'generate_menu_slideout_effect','overlay' ); - $slideout_position = apply_filters( 'generate_menu_slideout_position','left' ); - - $classes[] = 'main-navigation'; - $classes[] = 'slideout-navigation'; - - return $classes; - } -} - -if ( ! function_exists( 'generate_menu_plus_init' ) ) { - function generate_menu_plus_init() { - load_plugin_textdomain( 'menu-plus', false, 'gp-premium/langs/menu-plus/' ); - } -} - -if ( ! function_exists( 'generate_slideout_menu_fallback' ) ) { - /** - * Menu fallback. - * - * @param array $args - * @return string - * @since 1.1.4 - */ - function generate_slideout_menu_fallback( $args ) { - - } -} - -/** - * Page header module. - */ -if ( ! function_exists( 'generate_page_header_inside' ) ) { - /** - * Add page header inside content - * @since 0.3 - */ - function generate_page_header_inside() { - if ( ! is_page() ) { - return; - } - - if ( 'inside-content' == generate_get_page_header_location() ) { - generate_page_header_area( 'page-header-image', 'page-header-content' ); - } - } -} - -if ( ! function_exists( 'generate_page_header_single_below_title' ) ) { - /** - * Add post header below title - * @since 0.3 - */ - function generate_page_header_single_below_title() { - if ( ! is_single() ) { - return; - } - - if ( 'below-title' == generate_get_page_header_location() ) { - generate_page_header_area( 'page-header-image-single page-header-below-title', 'page-header-content-single page-header-below-title' ); - } - } -} - -if ( ! function_exists( 'generate_page_header_single_above' ) ) { - /** - * Add post header above content - * @since 0.3 - */ - function generate_page_header_single_above() { - if ( ! is_single() ) { - return; - } - - if ( 'above-content' == generate_get_page_header_location() ) { - generate_page_header_area( 'page-header-image-single', 'page-header-content-single' ); - } - } -} - -if ( ! function_exists( 'generate_page_header_single' ) ) { - /** - * Add post header inside content - * @since 0.3 - */ - function generate_page_header_single() { - $image_class = 'page-header-image-single'; - $content_class = 'page-header-content-single'; - - if ( 'below-title' == generate_get_page_header_location() ) { - $image_class = 'page-header-image-single page-header-below-title'; - $content_class = 'page-header-content-single page-header-below-title'; - } - - if ( 'inside-content' == generate_get_page_header_location() ) { - generate_page_header_area( $image_class, $content_class ); - } - } -} - -if ( ! function_exists( 'generate_page_header_init' ) ) { - function generate_page_header_init() { - load_plugin_textdomain( 'page-header', false, 'gp-premium/langs/page-header/' ); - } -} - -/** - * Secondary Navigation module. - */ -if ( ! function_exists( 'generate_secondary_nav_init' ) ) { - function generate_secondary_nav_init() { - load_plugin_textdomain( 'secondary-nav', false, 'gp-premium/langs/secondary-nav/' ); - } -} - -/** - * Sections module. - */ -if ( ! function_exists( 'generate_sections_init' ) ) { - function generate_sections_init() { - load_plugin_textdomain( 'generate-sections', false, 'gp-premium/langs/sections/' ); - } -} - -if ( ! function_exists( 'generate_sections_metabox_init' ) ) { - /* - * Enqueue styles and scripts specific to metaboxs - */ - function generate_sections_metabox_init(){ - - // I prefer to enqueue the styles only on pages that are using the metaboxes - wp_enqueue_style( 'generate-sections-metabox', plugin_dir_url( __FILE__ ) . 'wpalchemy/css/meta.css'); - wp_enqueue_style( 'generate-style-grid', get_template_directory_uri() . '/css/unsemantic-grid.css', false, GENERATE_VERSION, 'all' ); - - //make sure we enqueue some scripts just in case ( only needed for repeating metaboxes ) - wp_enqueue_script( 'jquery' ); - wp_enqueue_script( 'jquery-ui-core' ); - wp_enqueue_script( 'jquery-ui-widget' ); - wp_enqueue_script( 'jquery-ui-mouse' ); - wp_enqueue_script( 'jquery-ui-sortable' ); - wp_enqueue_style( 'wp-color-picker' ); - - // special script for dealing with repeating textareas- needs to run AFTER all the tinyMCE init scripts, so make 'editor' a requirement - wp_enqueue_script( 'generate-sections-metabox', plugin_dir_url( __FILE__ ) . 'wpalchemy/js/sections-metabox.js', array( 'jquery', 'editor', 'media-upload', 'wp-color-picker' ), GENERATE_SECTIONS_VERSION, true ); - $translation_array = array( - 'no_content_error' => __( 'Error: Content already detected in default editor.', 'gp-premium' ), - 'use_visual_editor' => __( 'Please activate the "Visual" tab in your main editor before transferring content.', 'gp-premium' ) - ); - wp_localize_script( 'generate-sections-metabox', 'generate_sections', $translation_array ); - } -} - -/** - * Spacing module. - */ -if ( ! function_exists( 'generate_spacing_init' ) ) { - function generate_spacing_init() { - load_plugin_textdomain( 'generate-spacing', false, 'gp-premium/langs/spacing/' ); - } -} - -if ( ! function_exists( 'generate_spacing_setup' ) ) { - function generate_spacing_setup() { - // Here so we can check to see if Spacing is active - } -} - -/** - * Typography module. - */ -if ( ! function_exists( 'generate_typography_init' ) ) { - function generate_typography_init() { - load_plugin_textdomain( 'generate-typography', false, 'gp-premium/langs/typography/' ); - } -} - -if ( ! function_exists( 'generate_fonts_setup' ) ) { - function generate_fonts_setup() { - // Here to check if Typography is active - } -} - -/** - * WooCommerce module. - */ -if ( ! function_exists( 'generate_woocommerce_init' ) ) { - function generate_woocommerce_init() { - load_plugin_textdomain( 'generate-woocommerce', false, 'gp-premium/langs/woocommerce/' ); - } -} - -/** - * Use text instead of an icon if essentials are in use. - * - * @since 1.3 - * @deprecated 1.6 - * - * @param string $icon Existing icon HTML. - * @return string New icon HTML. - */ -function generatepress_wc_essentials_menu_icon( $icon ) { - if ( apply_filters( 'generate_fontawesome_essentials', false ) ) { - return __( 'Cart', 'gp-premium' ); - } - - return $icon; -} - -if ( ! function_exists( 'generate_activation_styles' ) ) { - function generate_activation_styles() { - // Added to dashboard.css - } -} - -if ( ! function_exists( 'generate_verify_styles' ) ) { - function generate_verify_styles() { - // Added to dashboard.css - } -} - -if ( ! function_exists( 'generate_add_license_key_field' ) ) { - function generate_add_license_key_field() { - // Replaced by generatepress_premium_license_key_field() - } -} - -if ( ! function_exists( 'generate_premium_license_key' ) ) { - function generate_premium_license_key() { - // Replaced by generatepress_premium_license_key_field() - } -} - -if ( ! function_exists( 'generate_save_premium_license_key' ) ) { - function generate_save_premium_license_key() { - // Replaced by generatepress_premium_process_license_key() - } -} - - -if ( ! function_exists( 'generate_process_license_key' ) ) { - function generate_process_license_key() { - // Replaced by generatepress_premium_process_license_key() - } -} - -/** - * Add the Refresh sites link after the list of sites. - * - * @since 1.6 - * @deprecated 1.7 - */ -function generate_sites_refresh_link() { - if ( ! generate_is_sites_dashboard() ) { - return; - } - - printf( - '
    - %2$s -
    ', - wp_nonce_url( admin_url( 'themes.php?page=generate-options&area=generate-sites' ), 'refresh_sites', 'refresh_sites_nonce' ), - __( 'Refresh Sites', 'gp-premium' ) - ); -} - -/** - * Delete our sites transient if the Refresh sites link is clicked. - * - * @since 1.6 - * @deprecated 1.12.0 - */ -function generate_sites_refresh_list() { - if ( ! isset( $_GET['refresh_sites_nonce'] ) || ! wp_verify_nonce( $_GET['refresh_sites_nonce'], 'refresh_sites' ) ) { - return; - } - - delete_transient( 'generatepress_sites' ); -} - -if ( ! function_exists( 'generate_insert_import_export' ) ) { - /** - * @deprecated 1.7 - */ - function generate_insert_import_export() { - // Replaced by GeneratePress_Import_Export::build_html() - } -} - -if ( ! function_exists( 'generate_ie_import_form' ) ) { - /** - * @deprecated 1.7 - */ - function generate_ie_import_form() { - // Replaced by GeneratePress_Import_Export::build_html() - } -} - -if ( ! function_exists( 'generate_process_settings_export' ) ) { - /** - * Process a settings export that generates a .json file of the shop settings - * - * @deprecated 1.7 - */ - function generate_process_settings_export() { - // Replaced by GeneratePress_Import_Export::export() - } -} - -if ( ! function_exists( 'generate_process_settings_import' ) ) { - /** - * Process a settings import from a json file - * - * @deprecated 1.7 - */ - function generate_process_settings_import() { - // Replaced by GeneratePress_Import_Export::import() - } -} - -if ( ! function_exists( 'generate_ie_exportable' ) ) { - /** - * @deprecated 1.7 - */ - function generate_ie_exportable() { - // A check to see if other addons can add their export button - } -} - -/** - * Build our dynamic CSS. - * - * @since 1.6 - */ -function generate_menu_plus_make_css() { - // Replaced by generate_do_off_canvas_css() -} - -/** - * Enqueue our dynamic CSS. - * - * @since 1.6 - */ -function generate_menu_plus_enqueue_dynamic_css() { - // No longer needed. -} - -if ( ! function_exists( 'generate_hidden_secondary_navigation' ) && function_exists( 'is_customize_preview' ) ) { - /** - * Adds a hidden navigation if no navigation is set - * This allows us to use postMessage to position the navigation when it doesn't exist - */ - function generate_hidden_secondary_navigation() { - if ( is_customize_preview() && function_exists( 'generate_secondary_navigation_position' ) ) { - ?> -
    - -
    - $desktop, - 'tablet' => $tablet, - 'mobile' => $mobile, - 'mobile-menu' => $mobile_menu, - ) - ); - - return $queries[ $name ]; -} - -/** - * Get our CSS print method. - * - * @since 1.11.0 - */ -function generate_get_css_print_method() { - $mode = apply_filters( 'generatepress_dynamic_css_print_method', 'inline' ); - - if ( - ( function_exists( 'is_customize_preview' ) && is_customize_preview() ) - || - is_preview() - || - // AMP inlines all CSS, so inlining from the start improves CSS processing performance. - ( function_exists( 'is_amp_endpoint' ) && is_amp_endpoint() ) - ) { - return 'inline'; - } - - if ( ! defined( 'GENERATE_VERSION' ) ) { - return 'inline'; - } - - return $mode; -} - -/** - * Check to see if we have a Block Element. - * - * @since 2.0.0 - * @param string $element The type of element to check. - * @param boolean $block_element Whether it's a block element or not. - */ -function generate_has_active_element( $element, $block_element ) { - global $generate_elements; - - if ( ! empty( $generate_elements ) ) { - foreach ( (array) $generate_elements as $key => $data ) { - if ( $element === $data['type'] && $block_element === $data['is_block_element'] ) { - return true; - } - } - } - - return false; -} - -/** - * Check our GeneratePress version. - * - * @since 2.1.0 - */ -function generate_premium_get_theme_version() { - return defined( 'GENERATE_VERSION' ) ? GENERATE_VERSION : false; -} - -/** - * Remove the featured-image-active class if needed. - * - * @since 2.1.0 - */ -function generate_premium_remove_featured_image_class( $classes, $remove_class ) { - if ( $remove_class && in_array( 'featured-image-active', $classes ) ) { - $classes = array_diff( $classes, array( 'featured-image-active' ) ); - } - - return $classes; -} - -/** - * Returns the global $wp_filesystem with credentials set. - * Returns null in case of any errors. - * - * @return WP_Filesystem_Base|null - */ -function generate_premium_get_wp_filesystem() { - global $wp_filesystem; - - $success = true; - - // Initialize the file system if it has not been done yet. - if ( ! $wp_filesystem ) { - require_once ABSPATH . '/wp-admin/includes/file.php'; - - $constants = array( - 'hostname' => 'FTP_HOST', - 'username' => 'FTP_USER', - 'password' => 'FTP_PASS', - 'public_key' => 'FTP_PUBKEY', - 'private_key' => 'FTP_PRIKEY', - ); - - $credentials = array(); - - // We provide credentials based on wp-config.php constants. - // Reference https://developer.wordpress.org/apis/wp-config-php/#wordpress-upgrade-constants. - foreach ( $constants as $key => $constant ) { - if ( defined( $constant ) ) { - $credentials[ $key ] = constant( $constant ); - } - } - - $success = WP_Filesystem( $credentials ); - } - - if ( ! $success || $wp_filesystem->errors->has_errors() ) { - return null; - } - - return $wp_filesystem; -} - -/** - * Get our script dependencies and version. - * - * @param string $filename The filename to use. - * @param array $fallback_assets The assets to fallback to. - */ -function generate_premium_get_enqueue_assets( - $filename = '', - $fallback_assets = array( - 'dependencies' => array(), - 'version' => '', - ) -) { - if ( ! $filename ) { - return $fallback_assets; - } - - $assets_file = GP_PREMIUM_DIR_PATH . 'dist/' . $filename . '.asset.php'; - $compiled_assets = file_exists( $assets_file ) - ? require $assets_file - : false; - - $assets = - isset( $compiled_assets['dependencies'] ) && - isset( $compiled_assets['version'] ) - ? $compiled_assets - : $fallback_assets; - - return $assets; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/activation.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/activation.php deleted file mode 100644 index bce1852b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/activation.php +++ /dev/null @@ -1,623 +0,0 @@ -base ) { - return; - } - - wp_enqueue_style( 'generate-premium-dashboard', plugin_dir_url( __FILE__ ) . 'assets/dashboard.css', array(), GP_PREMIUM_VERSION ); - wp_enqueue_script( 'generate-premium-dashboard', plugin_dir_url( __FILE__ ) . 'assets/dashboard.js', array( 'jquery' ), GP_PREMIUM_VERSION, true ); - - wp_localize_script( - 'generate-premium-dashboard', - 'dashboard', - array( - 'deprecated_module' => esc_attr__( 'This module has been deprecated. Deactivating it will remove it from this list.', 'gp-premium' ), - ) - ); -} - -if ( ! function_exists( 'generate_premium_notices' ) ) { - add_action( 'admin_notices', 'generate_premium_notices' ); - /* - * Set up errors and messages - */ - function generate_premium_notices() { - if ( isset( $_GET['generate-message'] ) && 'addon_deactivated' == $_GET['generate-message'] ) { - add_settings_error( 'generate-premium-notices', 'addon_deactivated', __( 'Module deactivated.', 'gp-premium' ), 'updated' ); - } - - if ( isset( $_GET['generate-message'] ) && 'addon_activated' == $_GET['generate-message'] ) { - add_settings_error( 'generate-premium-notices', 'addon_activated', __( 'Module activated.', 'gp-premium' ), 'updated' ); - } - - settings_errors( 'generate-premium-notices' ); - } -} - -if ( ! function_exists( 'generate_license_errors' ) ) { - add_action( 'admin_notices', 'generate_license_errors' ); - /* - * Set up errors and messages - */ - function generate_license_errors() { - if ( isset( $_GET['generate-message'] ) && 'deactivation_passed' == $_GET['generate-message'] ) { - add_settings_error( 'generate-license-notices', 'deactivation_passed', __( 'License deactivated.', 'gp-premium' ), 'updated' ); - } - - if ( isset( $_GET['generate-message'] ) && 'license_activated' == $_GET['generate-message'] ) { - add_settings_error( 'generate-license-notices', 'license_activated', __( 'License activated.', 'gp-premium' ), 'updated' ); - } - - if ( isset( $_GET['sl_activation'] ) && ! empty( $_GET['message'] ) ) { - - switch ( $_GET['sl_activation'] ) { - - case 'false': - $message = urldecode( $_GET['message'] ); - add_settings_error( 'generate-license-notices', 'license_failed', esc_html( $message ), 'error' ); - break; - - case 'true': - default: - break; - - } - } - - settings_errors( 'generate-license-notices' ); - } -} - -if ( ! function_exists( 'generate_super_package_addons' ) ) { - add_action( 'generate_options_items', 'generate_super_package_addons', 5 ); - /** - * Build the area that allows us to activate and deactivate modules. - * - * @since 0.1 - */ - function generate_super_package_addons() { - $addons = array( - 'Backgrounds' => 'generate_package_backgrounds', - 'Blog' => 'generate_package_blog', - 'Colors' => 'generate_package_colors', - 'Copyright' => 'generate_package_copyright', - 'Disable Elements' => 'generate_package_disable_elements', - 'Elements' => 'generate_package_elements', - 'Hooks' => 'generate_package_hooks', - 'Menu Plus' => 'generate_package_menu_plus', - 'Page Header' => 'generate_package_page_header', - 'Secondary Nav' => 'generate_package_secondary_nav', - 'Sections' => 'generate_package_sections', - 'Spacing' => 'generate_package_spacing', - 'Typography' => 'generate_package_typography', - 'WooCommerce' => 'generate_package_woocommerce', - ); - - if ( version_compare( PHP_VERSION, '5.4', '>=' ) && ! defined( 'GENERATE_DISABLE_SITE_LIBRARY' ) ) { - $addons['Site Library'] = 'generate_package_site_library'; - } - - if ( function_exists( 'generate_is_using_dynamic_typography' ) && generate_is_using_dynamic_typography() ) { - unset( $addons['Typography'] ); - } - - if ( version_compare( generate_premium_get_theme_version(), '3.1.0-alpha.1', '>=' ) ) { - unset( $addons['Colors'] ); - } - - ksort( $addons ); - - $addon_count = 0; - foreach ( $addons as $k => $v ) { - if ( 'activated' == get_option( $v ) ) - $addon_count++; - } - - $key = get_option( 'gen_premium_license_key_status', 'deactivated' ); - $version = ( defined( 'GP_PREMIUM_VERSION' ) ) ? GP_PREMIUM_VERSION : ''; - - ?> -
    -

    -
    -
    -
    -
    -
    - - - - -
    -
    - $v ) : - - $key = get_option( $v ); - - if( $key == 'activated' ) { ?> -
    -
    - - -
    -
    - - -
    -
    - -
    - -
    - type="checkbox" class="addon-checkbox" name="generate_addon_checkbox[]" value="" /> - -
    - -
    - - - - - - -
    - -
    -
    '; - endforeach; - ?> - -
    -
    - - 'generate_package_typography', - 'Colors' => 'generate_package_colors', - 'Backgrounds' => 'generate_package_backgrounds', - 'Page Header' => 'generate_package_page_header', - 'Sections' => 'generate_package_sections', - 'Copyright' => 'generate_package_copyright', - 'Disable Elements' => 'generate_package_disable_elements', - 'Elements' => 'generate_package_elements', - 'Blog' => 'generate_package_blog', - 'Hooks' => 'generate_package_hooks', - 'Spacing' => 'generate_package_spacing', - 'Secondary Nav' => 'generate_package_secondary_nav', - 'Menu Plus' => 'generate_package_menu_plus', - 'WooCommerce' => 'generate_package_woocommerce', - ); - - if ( version_compare( PHP_VERSION, '5.4', '>=' ) && ! defined( 'GENERATE_DISABLE_SITE_LIBRARY' ) ) { - $addons['Site Library'] = 'generate_package_site_library'; - } - - foreach( $addons as $k => $v ) : - - if ( isset( $_POST[$v . '_activate_package'] ) ) { - - // If we didn't click the button, bail. - if ( ! check_admin_referer( $v . '_activate_nonce', $v . '_activate_nonce' ) ) { - return; - } - - // If we're not an administrator, bail. - if ( ! current_user_can( 'manage_options' ) ) { - return; - } - - $autoload = null; - - if ( 'generate_package_site_library' === $v ) { - $autoload = false; - } - - update_option( $v, 'activated', $autoload ); - wp_safe_redirect( admin_url( 'themes.php?page=generate-options&generate-message=addon_activated' ) ); - exit; - } - - endforeach; - } -} - -/*********************************************** -* Deactivate the plugin -***********************************************/ -if ( ! function_exists( 'generate_deactivate_super_package_addons' ) ) { - add_action( 'admin_init', 'generate_deactivate_super_package_addons' ); - - function generate_deactivate_super_package_addons() { - $addons = array( - 'Typography' => 'generate_package_typography', - 'Colors' => 'generate_package_colors', - 'Backgrounds' => 'generate_package_backgrounds', - 'Page Header' => 'generate_package_page_header', - 'Sections' => 'generate_package_sections', - 'Copyright' => 'generate_package_copyright', - 'Disable Elements' => 'generate_package_disable_elements', - 'Elements' => 'generate_package_elements', - 'Blog' => 'generate_package_blog', - 'Hooks' => 'generate_package_hooks', - 'Spacing' => 'generate_package_spacing', - 'Secondary Nav' => 'generate_package_secondary_nav', - 'Menu Plus' => 'generate_package_menu_plus', - 'WooCommerce' => 'generate_package_woocommerce', - ); - - if ( version_compare( PHP_VERSION, '5.4', '>=' ) && ! defined( 'GENERATE_DISABLE_SITE_LIBRARY' ) ) { - $addons['Site Library'] = 'generate_package_site_library'; - } - - foreach( $addons as $k => $v ) : - - if ( isset( $_POST[$v . '_deactivate_package'] ) ) { - - // If we didn't click the button, bail. - if ( ! check_admin_referer( $v . '_deactivate_nonce', $v . '_deactivate_nonce' ) ) { - return; - } - - // If we're not an administrator, bail. - if ( ! current_user_can( 'manage_options' ) ) { - return; - } - - $autoload = null; - - if ( 'generate_package_site_library' === $v ) { - $autoload = false; - } - - update_option( $v, 'deactivated', $autoload ); - wp_safe_redirect( admin_url('themes.php?page=generate-options&generate-message=addon_deactivated' ) ); - exit; - } - - endforeach; - } -} - -if ( ! function_exists( 'generate_premium_body_class' ) ) { - add_filter( 'admin_body_class', 'generate_premium_body_class' ); - /** - * Add a class or many to the body in the dashboard - */ - function generate_premium_body_class( $classes ) { - return "$classes gp_premium"; - } -} - -if ( ! function_exists( 'generate_activation_area' ) ) { - add_action( 'generate_admin_right_panel', 'generate_activation_area' ); - - function generate_activation_area() { - $license = get_option( 'gen_premium_license_key', '' ); - $key = get_option( 'gen_premium_license_key_status', 'deactivated' ); - - if ( 'valid' == $key ) { - $message = sprintf( '%s', __( 'Receiving updates', 'gp-premium' ) ); - } else { - $message = sprintf( '%s', __( 'Not receiving updates', 'gp-premium' ) ); - } - ?> -
    -
    -

    - - - - [?] - -

    - -
    -
    -

    - -

    - -

    > - /> - -

    - - - -
    -
    -
    -
    - 'activate_license', - 'license' => $new, - 'item_name' => urlencode( 'GP Premium' ), - 'url' => home_url() - ); - } - - // If we don't have a value (it's been cleared), run deactivation. - if ( '' == $new && 'valid' == get_option( 'gen_premium_license_key_status' ) ) { - $api_params = array( - 'edd_action' => 'deactivate_license', - 'license' => $old, - 'item_name' => urlencode( 'GP Premium' ), - 'url' => home_url() - ); - } - - // Nothing? Get out of here. - if ( ! isset( $api_params ) ) { - wp_safe_redirect( admin_url( 'themes.php?page=generate-options' ) ); - exit; - } - - // Phone home. - $license_response = wp_remote_post( 'https://generatepress.com', array( - 'timeout' => 60, - 'sslverify' => false, - 'body' => $api_params - ) ); - - // Make sure the response came back okay. - if ( is_wp_error( $license_response ) || 200 !== wp_remote_retrieve_response_code( $license_response ) ) { - if ( is_object( $license_response ) ) { - $message = $license_response->get_error_message(); - } elseif ( is_array( $license_response ) && isset( $license_response['response']['message'] ) ) { - if ( 'Forbidden' === $license_response['response']['message'] ) { - $message = __( '403 Forbidden. Your server is not able to communicate with generatepress.com in order to activate your license key.', 'gp-premium' ); - } else { - $message = $license_response['response']['message']; - } - } - } else { - - // Still here? Decode our response. - $license_data = json_decode( wp_remote_retrieve_body( $license_response ) ); - - if ( false === $license_data->success ) { - - switch ( $license_data->error ) { - - case 'expired' : - - $message = sprintf( - __( 'Your license key expired on %s.', 'gp-premium' ), - date_i18n( get_option( 'date_format' ), strtotime( $license_data->expires, current_time( 'timestamp' ) ) ) - ); - break; - - case 'revoked' : - - $message = __( 'Your license key has been disabled.', 'gp-premium' ); - break; - - case 'missing' : - - $message = __( 'Invalid license.', 'gp-premium' ); - break; - - case 'invalid' : - case 'site_inactive' : - - $message = __( 'Your license is not active for this URL.', 'gp-premium' ); - break; - - case 'item_name_mismatch' : - - $message = __( 'This appears to be an invalid license key for GP Premium.', 'gp-premium' ); - break; - - case 'no_activations_left': - - $message = __( 'Your license key has reached its activation limit.', 'gp-premium' ); - break; - - default : - - $message = __( 'An error occurred, please try again.', 'gp-premium' ); - break; - } - - } - - } - - // Check if anything passed on a message constituting a failure - if ( ! empty( $message ) ) { - delete_option( 'gen_premium_license_key_status' ); - $base_url = admin_url( 'themes.php?page=generate-options' ); - $redirect = add_query_arg( array( 'sl_activation' => 'false', 'message' => urlencode( $message ) ), esc_url( $base_url ) ); - wp_redirect( $redirect ); - exit(); - } - - // Update our license key status - update_option( 'gen_premium_license_key_status', $license_data->license ); - - if ( 'valid' == $license_data->license ) { - // Validated, go tell them - wp_safe_redirect( admin_url( 'themes.php?page=generate-options&generate-message=license_activated' ) ); - exit; - } elseif ( 'deactivated' == $license_data->license ) { - // Deactivated, go tell them - wp_safe_redirect( admin_url( 'themes.php?page=generate-options&generate-message=deactivation_passed' ) ); - exit; - } else { - // Failed, go tell them - wp_safe_redirect( admin_url( 'themes.php?page=generate-options&generate-message=license_failed' ) ); - exit; - } - } -} - -if ( ! function_exists( 'generate_license_missing' ) ) { - add_action( 'in_plugin_update_message-gp-premium/gp-premium.php', 'generate_license_missing', 10, 2 ); - /** - * Add a message to the plugin update area if no license key is set - */ - function generate_license_missing() { - $license = get_option( 'gen_premium_license_key_status' ); - - if ( 'valid' !== $license ) { - echo ' ' . __( 'Enter valid license key for automatic updates.', 'gp-premium' ) . ''; - } - } -} - -add_filter( 'generate_premium_beta_tester', 'generatepress_premium_beta_tester' ); -/** - * Enable beta testing if our option is set. - * - * @since 1.6 - */ -function generatepress_premium_beta_tester( $value ) { - if ( get_option( 'gp_premium_beta_testing', false ) ) { - return true; - } - - return $value; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/assets/dashboard.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/assets/dashboard.css deleted file mode 100644 index 700993cb..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/assets/dashboard.css +++ /dev/null @@ -1,199 +0,0 @@ -.generatepress-dashboard-tabs { - margin-bottom: 40px; -} - -.generatepress-dashboard-tabs a { - background-color: rgba(255,255,255,0.5); - border: 1px solid #ddd; - padding: 10px 15px; - cursor: pointer; - color: #222; - display: inline-block; - text-decoration: none; -} - -.generatepress-dashboard-tabs a:not(:last-child) { - border-right: 0; -} - -.generatepress-dashboard-tabs a.active { - background-color: #ffffff; - border-color: #ccc; - font-weight: 500; -} - -input#generate-select-all, -.addon-checkbox { - margin-right: 15px !important; -} -.gp-premium-version, -.gp-addon-count { - display: block; - color:#ccc; -} - -.addon-container:before, -.addon-container:after { - content: "."; - display: block; - overflow: hidden; - visibility: hidden; - font-size: 0; - line-height: 0; - width: 0; - height: 0; -} - -.addon-container:after { - clear: both; -} - -.premium-addons .gp-clear { - margin: 0 !important; - border: 0; - padding: 0 !important; -} - -.premium-addons .add-on.gp-clear { - padding: 15px !important; - margin: 0 !important; - box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1) inset; -} - -.premium-addons .add-on:last-child { - border: 0 !important; -} - -.addon-action { - float: right; - clear: right; -} - -.addon-name { - float: left; -} - -.premium-addons .add-on.gp-clear.activated { - background-color:#F7FCFE !important; - border-left: 5px solid #2EA2CC !important; - font-weight: bold; - padding-left: 10px !important; -} - -.premium-addons .addon-action input[type="submit"], -.premium-addons .addon-action input[type="submit"]:visited { - background: none; - border: 0; - color: #0d72b2; - padding: 0; - font-size: inherit; - cursor: pointer; - box-shadow: 0 0 0 transparent; -} - -.premium-addons .addon-action input[type="submit"]:hover, -.premium-addons .addon-action input[type="submit"]:focus { - background: none; - border: 0; - color: #0f92e5; - padding: 0; - font-size: inherit; - box-shadow: 0 0 0 transparent; -} - -.premium-addons input[type="submit"].hide-customizer-button, -.premium-addons input[type="submit"]:visited.hide-customizer-button { - color: #a00; - font-weight: normal; -} - -.premium-addons input[type="submit"]:hover.hide-customizer-button, -.premium-addons input[type="submit"]:focus.hide-customizer-button { - color: red; - font-weight: normal; -} - -.premium-addons input[type="submit"].hide-customizer-button { - display: none; -} - -.premium-addons .add-on.activated:hover input[type="submit"].hide-customizer-button { - display: inline; -} - -.gp_premium input[name="generate_activate_all"] { - display: none; -} - -.email-container .addon-name { - width: 75%; - min-width: 150px; -} - -.license-key-container { - margin-bottom:15px; -} - -.license-key-container:last-child { - margin:0; -} - -.license-key-info { - float: right; - text-decoration: none; -} - -.license-key-container label { - font-size: 11px; - font-weight: normal; - color: #777; - display: inline-block; - margin-bottom: 0; -} - -.status { - position: absolute; - right:10px; - top:-1px; - background:rgba(255,255,255,0.9); -} - -.license-key-input { - width:100%; - box-sizing:border-box; - padding:10px; -} - -.license-key-input::-webkit-credentials-auto-fill-button { - visibility: hidden; - pointer-events: none; - position: absolute; - right: 0; -} - -.license-key-button { - position:relative; - top:1px; - width:100%; - box-sizing:border-box; - padding: 10px !important; - height:auto !important; - line-height:normal !important; -} - -.license-key-message { - font-size: 80%; - font-weight: normal; -} - -.license-key-message.receiving-updates { - color: green; -} - -.license-key-message.not-receiving-updates { - color: red; -} - -.mass-activate-select { - margin-top: 0; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/assets/dashboard.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/assets/dashboard.js deleted file mode 100644 index e789014f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/assets/dashboard.js +++ /dev/null @@ -1,48 +0,0 @@ -jQuery( function( $ ) { - $( '#generate-select-all' ).on( 'click', function() { - if ( this.checked ) { - $( '.addon-checkbox:not(:disabled)' ).each( function() { - this.checked = true; - } ); - } else { - $( '.addon-checkbox' ).each( function() { - this.checked = false; - } ); - } - } ); - - $( '#generate_license_key_gp_premium' ).on( 'input', function() { - if ( '' !== $.trim( this.value ) ) { - $( '.beta-testing-container' ).show(); - } else { - $( '.beta-testing-container' ).hide(); - } - } ); - - $( 'input[name="generate_package_hooks_deactivate_package"]' ).on( 'click', function() { - // eslint-disable-next-line no-alert - var check = confirm( dashboard.deprecated_module ); - - if ( ! check ) { - return false; - } - } ); - - $( 'input[name="generate_package_page_header_deactivate_package"]' ).on( 'click', function() { - // eslint-disable-next-line no-alert - var check = confirm( dashboard.deprecated_module ); - - if ( ! check ) { - return false; - } - } ); - - $( 'input[name="generate_package_sections_deactivate_package"]' ).on( 'click', function() { - // eslint-disable-next-line no-alert - var check = confirm( dashboard.deprecated_module ); - - if ( ! check ) { - return false; - } - } ); -} ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/dashboard.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/dashboard.php deleted file mode 100644 index 2ea4d584..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/dashboard.php +++ /dev/null @@ -1,47 +0,0 @@ - array( - 'name' => __( 'Modules', 'gp-premium' ), - 'url' => admin_url( 'themes.php?page=generate-options' ), - 'class' => 'appearance_page_generate-options' === $screen->id ? 'active' : '', - ), - ) ); - - // Don't print any markup if we only have one tab. - if ( count( $tabs ) === 1 ) { - return; - } - ?> -
    - %3$s', - esc_url( $tab['url'] ), - esc_attr( $tab['class'] ), - esc_html( $tab['name'] ) - ); - } - ?> -
    - -
    -

    -
    -
    -

    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    -

    - - '' ) ); ?> -

    -
    - -

    -
    -

    - -

    -

    - - - '' ) ); ?> -

    -
    -
    -
    - array(), - 'mods' => array(), - 'options' => array(), - ); - - foreach ( $modules as $name => $value ) { - if ( 'activated' === get_option( $value ) ) { - $data['modules'][ $name ] = $value; - } - } - - foreach ( $theme_mods as $theme_mod ) { - if ( 'generate_copyright' === $theme_mod ) { - if ( in_array( 'copyright', $_POST['module_group'] ) ) { - $data['mods'][ $theme_mod ] = get_theme_mod( $theme_mod ); - } - } else { - if ( in_array( 'generate_settings', $_POST['module_group'] ) ) { - $data['mods'][ $theme_mod ] = get_theme_mod( $theme_mod ); - } - } - } - - foreach ( $settings as $setting ) { - if ( in_array( $setting, $_POST['module_group'] ) ) { - $data['options'][ $setting ] = get_option( $setting ); - } - } - - $data = apply_filters( 'generate_export_data', $data ); - - nocache_headers(); - header( 'Content-Type: application/json; charset=utf-8' ); - header( 'Content-Disposition: attachment; filename=generate-settings-export-' . date( 'Ymd' ) . '.json' ); // phpcs:ignore -- Prefer date(). - header( 'Expires: 0' ); - - echo wp_json_encode( $data ); - exit; - } - - /** - * Import our exported file. - * - * @since 1.7 - */ - public static function import() { - if ( empty( $_POST['generate_action'] ) || 'import_settings' !== $_POST['generate_action'] ) { - return; - } - - if ( ! wp_verify_nonce( $_POST['generate_import_nonce'], 'generate_import_nonce' ) ) { - return; - } - - if ( ! current_user_can( 'manage_options' ) ) { - return; - } - - $filename = $_FILES['import_file']['name']; - $extension = end( explode( '.', $_FILES['import_file']['name'] ) ); - - if ( 'json' !== $extension ) { - wp_die( __( 'Please upload a valid .json file', 'gp-premium' ) ); - } - - $import_file = $_FILES['import_file']['tmp_name']; - - if ( empty( $import_file ) ) { - wp_die( __( 'Please upload a file to import', 'gp-premium' ) ); - } - - // Retrieve the settings from the file and convert the json object to an array. - $settings = json_decode( file_get_contents( $import_file ), true ); // phpcs:ignore -- file_get_contents() is fine here. - - foreach ( (array) $settings['modules'] as $key => $val ) { - if ( in_array( $val, self::get_modules() ) ) { - update_option( $val, 'activated' ); - } - } - - foreach ( (array) $settings['mods'] as $key => $val ) { - if ( in_array( $key, self::get_theme_mods() ) ) { - set_theme_mod( $key, $val ); - } - } - - foreach ( (array) $settings['options'] as $key => $val ) { - if ( in_array( $key, self::get_settings() ) ) { - update_option( $key, $val ); - } - } - - // Delete existing dynamic CSS cache. - delete_option( 'generate_dynamic_css_output' ); - delete_option( 'generate_dynamic_css_cached_version' ); - - $dynamic_css_data = get_option( 'generatepress_dynamic_css_data', array() ); - - if ( isset( $dynamic_css_data['updated_time'] ) ) { - unset( $dynamic_css_data['updated_time'] ); - } - - update_option( 'generatepress_dynamic_css_data', $dynamic_css_data ); - - wp_safe_redirect( admin_url( 'admin.php?page=generate-options&status=imported' ) ); - exit; - } - - /** - * List out our available modules. - * - * @since 1.7 - */ - public static function get_modules() { - return array( - 'Backgrounds' => 'generate_package_backgrounds', - 'Blog' => 'generate_package_blog', - 'Colors' => 'generate_package_colors', - 'Copyright' => 'generate_package_copyright', - 'Elements' => 'generate_package_elements', - 'Disable Elements' => 'generate_package_disable_elements', - 'Hooks' => 'generate_package_hooks', - 'Menu Plus' => 'generate_package_menu_plus', - 'Page Header' => 'generate_package_page_header', - 'Secondary Nav' => 'generate_package_secondary_nav', - 'Sections' => 'generate_package_sections', - 'Spacing' => 'generate_package_spacing', - 'Typography' => 'generate_package_typography', - 'WooCommerce' => 'generate_package_woocommerce', - ); - } - - /** - * List our our set theme mods. - * - * @since 1.7 - */ - public static function get_theme_mods() { - return array( - 'font_body_variants', - 'font_body_category', - 'font_site_title_variants', - 'font_site_title_category', - 'font_site_tagline_variants', - 'font_site_tagline_category', - 'font_navigation_variants', - 'font_navigation_category', - 'font_secondary_navigation_variants', - 'font_secondary_navigation_category', - 'font_buttons_variants', - 'font_buttons_category', - 'font_heading_1_variants', - 'font_heading_1_category', - 'font_heading_2_variants', - 'font_heading_2_category', - 'font_heading_3_variants', - 'font_heading_3_category', - 'font_heading_4_variants', - 'font_heading_4_category', - 'font_heading_5_variants', - 'font_heading_5_category', - 'font_heading_6_variants', - 'font_heading_6_category', - 'font_widget_title_variants', - 'font_widget_title_category', - 'font_footer_variants', - 'font_footer_category', - 'generate_copyright', - ); - } - - /** - * List out our available settings. - * - * @since 1.7 - */ - public static function get_settings() { - return array( - 'generate_settings', - 'generate_background_settings', - 'generate_blog_settings', - 'generate_hooks', - 'generate_page_header_settings', - 'generate_secondary_nav_settings', - 'generate_spacing_settings', - 'generate_menu_plus_settings', - 'generate_woocommerce_settings', - ); - } -} - -GeneratePress_Import_Export::get_instance(); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/reset.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/reset.php deleted file mode 100644 index bdcdca6f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/inc/legacy/reset.php +++ /dev/null @@ -1,273 +0,0 @@ - -
    -

    -
    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    -

    - esc_js( $warning ), - 'id' => '', - ) - ); - ?> -

    -
    -
    -
    - array(), - 'options' => array(), - ); - - foreach ( $theme_mods as $theme_mod ) { - if ( 'generate_copyright' === $theme_mod ) { - if ( in_array( 'copyright', $_POST['module_group'] ) ) { - remove_theme_mod( $theme_mod ); - } - } else { - if ( in_array( 'generate_settings', $_POST['module_group'] ) ) { - remove_theme_mod( $theme_mod ); - } - } - } - - foreach ( $settings as $setting ) { - if ( in_array( $setting, $_POST['module_group'] ) ) { - delete_option( $setting ); - } - } - - // Delete our dynamic CSS option. - delete_option( 'generate_dynamic_css_output' ); - delete_option( 'generate_dynamic_css_cached_version' ); - - // Reset our dynamic CSS file updated time so it regenerates. - $dynamic_css_data = get_option( 'generatepress_dynamic_css_data', array() ); - - if ( isset( $dynamic_css_data['updated_time'] ) ) { - unset( $dynamic_css_data['updated_time'] ); - } - - update_option( 'generatepress_dynamic_css_data', $dynamic_css_data ); - - // Delete any GeneratePress Site CSS in Additional CSS. - $additional_css = wp_get_custom_css_post(); - - if ( ! empty( $additional_css ) ) { - $additional_css->post_content = preg_replace( '#(/\\* GeneratePress Site CSS \\*/).*?(/\\* End GeneratePress Site CSS \\*/)#s', '', $additional_css->post_content ); - wp_update_custom_css_post( $additional_css->post_content ); - } - - wp_safe_redirect( admin_url( 'themes.php?page=generate-options&status=reset' ) ); - exit; -} - -add_action( 'admin_head', 'generate_reset_options_css', 100 ); -/** - * Add CSS to the dashboard. - */ -function generate_reset_options_css() { - $screen = get_current_screen(); - - if ( ! is_object( $screen ) ) { - return; - } - - if ( 'appearance_page_generate-options' !== $screen->base ) { - return; - } - ?> - - base ) { - return; - } - ?> - - >U{P3tTw@3WF8MM}S`f&jJ4lJQw^k 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 diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-da_DK.mo b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-da_DK.mo deleted file mode 100644 index 2d9a4edbf9adf83e2bdd75c9413fce508934b543..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28026 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 Y5%UnaLnN@f0O=1ZxVxdvb}9G&1+7dPrT_o{ diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_AR.mo b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_AR.mo deleted file mode 100644 index d0736cec1f42425560094042f7067dd96bbd64d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26952 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 diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-42da344ccb044413769d16ed3484307b.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-42da344ccb044413769d16ed3484307b.json deleted file mode 100644 index 1d7ad859..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-42da344ccb044413769d16ed3484307b.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2022-08-18 07:05:04+0000","generator":"WP-CLI\/2.6.0","source":"dist\/block-elements.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"es","plural-forms":"nplurals=2; plural=n != 1;"},"Loop Template":[""],"The taxonomy to check if in the same term.":["La taxonom\u00eda a buscar si est\u00e1 en el mismo t\u00e9rmino."],"Check for posts with the same term as the current post.":["Busque publicaciones con el mismo t\u00e9rmino que la publicaci\u00f3n actual."],"Remove container condition":["Eliminar el estado del contenedor"],"Display Order":["Mostrar orden"],"Parent Element":["Elemento superior"],"First post":["Primera entrada"],"No post meta":["Sin meta de entrada"],"No featured image":["Sin imagen destacada"],"Keep default archive navigation container":["Manten el contenedor de navegaci\u00f3n de archivado predeterminado"],"Disable default pagination":["Desactivar la paginaci\u00f3n predeterminada"],"Add default archive navigation container":["A\u00f1adir contenedor de navegaci\u00f3n de archivado predeterminado"],"Disable default post navigation":["Deshabilita la navegaci\u00f3n de entrada predeterminada"],"Use the above template tag to add the current year to your footer.":["Utiliza la etiqueta de plantilla anterior para agregar el a\u00f1o actual a su pie de p\u00e1gina."],"Current year template tag":["Etiqueta de plantilla del a\u00f1o actual"],"Disable primary post meta":["Desactivar el meta de la publicaci\u00f3n principal"],"Disable featured image":["Desactivar imagen destacada"],"Disable title":["Deshabilitar t\u00edtulo"],"Keep default post container":["Mantener el contenedor de correos predeterminado"],"Post meta name":["Nombre de la entrada meta"],"Term name":["Nombre del t\u00e9mino"],"Posts with custom field":["Entradas con campo personalizado"],"Posts with term":["Entradas con t\u00e9rminos"],"All posts":["Todas las entradas"],"Apply to":["Aplicar a"],"Tag name":["Nombre de la etiqueta"],"Replace default secondary post meta":["Reemplazar meta secundario predeterminado"],"Replace default primary post meta":["Reemplazar meta de poste principal predeterminado"],"Custom hook name":["Nombre del gancho personalizado"],"Choose your hook":["Elige tu gancho"],"Hook name":["Nombre del gancho"],"Quick hook select":["Selecci\u00f3n de gancho r\u00e1pido"],"Before post title":["Antes del t\u00edtulo"],"After post title":["Despu\u00e9s del t\u00edtulo"],"This Element will replace your site footer area that holds your copyright message. It will not replace footer widgets if they exist.":["Este elemento reemplazar\u00e1 el \u00e1rea de pie de p\u00e1gina del sitio que contiene su mensaje de derechos de autor. No reemplazar\u00e1 los widgets de pie de p\u00e1gina si existen."],"Templates":["Plantillas"],"Element type":["Tipo de elemento"],"Editor width":["Ancho del editor"],"Install GenerateBlocks":["Instalar GenerateBlocks"],"Activate GenerateBlocks":["Activar GenerateBlocks"],"To take full advantage of Block Elements, we suggest using our GenerateBlocks plugin.":["Para aprovechar al m\u00e1ximo Block Elements, sugerimos usar nuestro plugin GenerateBlocks."],"Block Element":["Elemento de bloque"],"After content container":["Contenedor de contenido posterior"],"After content":["Despu\u00e9s del contenido"],"Before content":["Antes del contenido"],"Before content container":["Antes del contenedor de contenido"],"After header":["Despu\u00e9s de la cabecera"],"label\u0004Single post hero with excerpt":["Entrada simple hero con extracto"],"label\u0004Basic single post page hero":["P\u00e1gina hero con entrada simple b\u00e1sica"],"label\u0004Rounded buttons with icon":["Botones redondeados con icono"],"label\u0004Default next and previous buttons":["Botones predeterminados siguientes y anteriores"],"label\u0004Landscape layout":["Dise\u00f1o del paisaje"],"label\u0004Layout with offset content":["Dise\u00f1o con contenido offset"],"label\u0004Basic layout with term buttons":["Dise\u00f1o b\u00e1sico con botones de t\u00e9rminos"],"label\u0004Full footer 2":["Pie de p\u00e1gina completo 2"],"label\u0004Full footer 1":["Pie de p\u00e1gina completo 1"],"label\u0004Term buttons":["Botones de t\u00e9rminos"],"label\u0004Stacked with avatar":["Apilado con avatar"],"label\u0004Inline with avatar":["En l\u00ednea con avatar"],"label\u0004Two columns with background overlays":["Dos columnas con superposiciones de fondo"],"label\u0004Two columns with arrows":["Dos columnas con flechas"],"label\u0004Two columns with featured image":["Dos columnas con imagen destacada"],"%s Units":["Unidades de %s"],"A size unit for CSS markup\u0004Degree":["Grado"],"A size unit for CSS markup\u0004Percentage":["Porcentaje"],"A size unit for CSS markup\u0004Em":["Em"],"A size unit for CSS markup\u0004Pixel":["P\u00edxel"],"Select Units":["Seleccionar unidades"],"Displays a dynamic image from your chosen source.":["Muestra una imagen din\u00e1mica del origen elegido."],"Dynamic Image":["Imagen din\u00e1mica"],"Dynamic image placeholder":["Marcador de posici\u00f3n din\u00e1mico de la imagen"],"Choose your dynamic image type.":["Elige el tipo de imagen din\u00e1mica."],"Dynamic image":["Imagen din\u00e1mica"],"Make image rounded":["Hacer imagen redondeada"],"Custom field name":["Nombre de campo personalizado"],"Custom field":["Campo personalizado"],"Link to":["Enlace a"],"Image height":["Altura de la imagen"],"Image width":["Ancho de la imagen"],"Image size":["Tama\u00f1o de la imagen"],"Author avatar":["Avatar del autor"],"Displays dynamic content based on your chosen source.":["Muestra contenido din\u00e1mico basado en el origen elegido."],"Dynamic Content":["Contenido Din\u00e1mico"],"This is a placeholder for your description.":["Este es un marcador de posici\u00f3n para la descripci\u00f3n."],"Choose your dynamic content type.":["Elige tipo de contenido din\u00e1mico."],"Dynamic content":["Contenido din\u00e1mico"],"Custom more link":["Enlace personalizado m\u00e1s"],"Use theme more link":["Utiliza el tema m\u00e1s enlace"],"Excerpt length":["Longitud del extracto"],"Author description":["Descripci\u00f3n del autor"],"Term description":["Descripci\u00f3n del t\u00e9rmino"],"Post excerpt":["Extracto de la entrada"],"Post content":["Contenido de la entrada"],"Dynamic link type":["Tipo de enlace din\u00e1mico"],"Updated date before text":["Fecha actualizada antes del texto"],"Use % in place of the number of comments":["Utiliza % en lugar del n\u00famero de comentarios"],"Plural comments text":["Texto de comentarios plurales"],"Singular comments text":["Texto de comentarios singulares"],"No comments text":["Sin texto de comentarios"],"Term separator":["Separador de t\u00e9rminos"],"Replace with updated date":["Reemplazar con la fecha actualizada"],"Updated date":["Fecha actualizada"],"Date type":["Tipo de fecha"],"Terms":["T\u00e9rminos"],"Hello World":["Hola mundo"],"Comments number":["N\u00famero de comentarios"],"List of terms":["Lista de t\u00e9rminos"],"Post author name":["Nombre del autor de la entrada"],"Post date":["Fecha de la entrada"],"Title":["T\u00edtulo"],"Dynamic text type":["Tipo de texto din\u00e1mico"],"Published date before text":["Fecha publicada antes del texto"],"Term archives":["Archivos de t\u00e9rminos"],"Author meta":["Autor meta"],"Previous page of posts":["P\u00e1gina anterior de publicaciones"],"Next page of posts":["Siguiente p\u00e1gina de publicaciones"],"Comments area":["\u00c1rea de comentarios"],"Author archives":["Archivos de autor"],"Single post":["Entrada simple"],"Taxonomy":["Taxonom\u00eda"],"In same term":["En el mismo t\u00e9rmino"],"No previous post":["Sin entrada anterior"],"No next post":["No hay pr\u00f3xima entrada"],"Space between":["Espacio entre"],"Inline alignment":["Alineaci\u00f3n en l\u00ednea"],"Inline post meta items":["Entrada en l\u00ednea de meta items"],"Previous post":["Entrada anterior"],"Next post":["Siguiente entrada"],"Current post":["Entrada actual"],"Source":["Origen"],"Post":["Entrada"],"Choose\u2026":["Elige..."],"Dynamic Link":["Enlace din\u00e1mico"],"Use fallback image":["Usar imagen de reserva"],"Meta field name":["Nombre del campo Meta"],"Add a background image to this Container to make it dynamic.":["A\u00f1ade una imagen de fondo a este contenedor para que sea din\u00e1mica."],"User meta":["Meta de usuario"],"Term meta":["Meta de t\u00e9rmino"],"Post meta":["Meta de entrada"],"Featured image":["Imagen destacada"],"Dynamic Background Image":["Imagen de fondo din\u00e1mico"],"Dynamic options":["Opciones din\u00e1micas"],"Archive Navigation":["Navegaci\u00f3n de archivos"],"Post Navigation":["Navegaci\u00f3n por entradas"],"Post Meta Template":["Plantilla entrada meta"],"Content Template":["Plantilla de contenido"],"% Comments":["% comentarios"],"1 Comment":["1 comentario"],"No Comments":["Sin comentarios"],"This is a placeholder for your content.":["Este es un marcador de posici\u00f3n para tu contenido."],"This will remove the current sidebar widgets for the selected sidebar. Your layout must have a sidebar set for this Element to show.":["Esto eliminar\u00e1 los widgets de barra lateral actuales para la barra lateral seleccionada. La plantilla debe tener una barra lateral establecida para que este elemento se muestre."],"Site Footer":["Pie de p\u00e1gina del sitio"],"None":["Ninguno"],"Type":["Tipo"],"Right Sidebar":["Barra Lateral Derecha"],"Left Sidebar":["Barra Lateral Izquierda"],"Priority":["Prioridad"],"Custom Hook":["Hook personalizado"],"Custom":["Personalizado"],"Site Header":["Encabezamiento del sitio"],"Page Hero":["P\u00e1gina Hero"],"Hook":["Hook"],"Right":["Derecha"],"Left":["Izquierda"],"Center":["Centro"],"Location":["Posici\u00f3n"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-53e2a1d5945b8d2b1c35e81ae1e532f3.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-53e2a1d5945b8d2b1c35e81ae1e532f3.json deleted file mode 100644 index 2cf56df7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-53e2a1d5945b8d2b1c35e81ae1e532f3.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2022-08-18 07:05:04+0000","generator":"WP-CLI\/2.6.0","source":"dist\/editor.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"es","plural-forms":"nplurals=2; plural=n != 1;"},"Active Elements":["Elementos activos"],"All Elements":["Todos los Elementos"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-92fa58377f1b6f7bef9c785c31ae29ff.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-92fa58377f1b6f7bef9c785c31ae29ff.json deleted file mode 100644 index a488db28..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-92fa58377f1b6f7bef9c785c31ae29ff.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2022-08-18 07:05:04+0000","generator":"WP-CLI\/2.6.0","source":"dist\/site-library.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"es","plural-forms":"nplurals=2; plural=n != 1;"},"Requires GeneratePress %s.":[""],"Built by":["Construido por"],"Note: We do our best to ensure all imported images are licensed for open use. However, image licenses can change, so we strongly advise that you replace all imported images with your own.":["Nota: Hacemos todo lo posible para garantizar que todas las im\u00e1genes importadas tengan licencia para su uso p\u00fablico. Sin embargo, las licencias de imagen pueden cambiar, por lo que te recomendamos encarecidamente que reemplaces todas las im\u00e1genes importadas por las tuyas propias."],"Check out your new site and start making it yours!":["\u00a1Echa un vistazo a tu nuevo sitio y empezar a hacerlo tuyo!"],"Learn more here":["M\u00e1s informaci\u00f3n aqu\u00ed"],"To disable it, find WP_DEBUG in your wp-config.php file and set it to false like the below.":["Para desactivarlo, busca WP_DEBUG en su archivo wp-config.php y estab\u00edzcalo en false como el siguiente."],"WordPress debug mode is currently enabled. With this, any errors from third-party plugins might affect the import process.":["El modo de depuraci\u00f3n de WordPress est\u00e1 habilitado actualmente. Con esto, cualquier error de plugins de terceros podr\u00eda afectar al proceso de importaci\u00f3n."],"Debug Mode Enabled":["Modo de depuraci\u00f3n activado"],"Preview mobile":["Vista previa del m\u00f3vil"],"Preview tablet":["Vista previa del tablet"],"Preview desktop":["Vista previa de escritorio"],"Elementor Tools":["Herramientas elementor"],"Take note of the old and new URLs below, then head over to the Elementor Tools area to replace them.":["Toma nota de las direcciones URL antiguas y nuevas a continuaci\u00f3n y, dir\u00edgete al \u00e1rea Herramientas de Elementor para reemplazarlas."],"Begin Import":["Iniciar importaci\u00f3n"],"I understand":["Entiendo"],"Confirm Import":["Confirmar importaci\u00f3n"],"Import Demo Content":["Importar contenido demo"],"This will install and activate needed plugins, import demo content, and import site options.":["Esto instalar\u00e1 y activar\u00e1 los plugins necesarios, importar\u00e1 contenido de demostraci\u00f3n e importar\u00e1 las opciones del sitio."],"Import Theme Options":["Importar opciones del tema"],"This will import the options from the Customizer.":["Esto importar\u00e1 las opciones desde el Personalizador."],"These plugins need to be installed manually.":["Estos plugins deben instalarse manualmente."],"These plugins are already installed.":["Estos plugins ya est\u00e1n instalados."],"These plugins can be installed automatically.":["Estos plugins se pueden instalar autom\u00e1ticamente."],"Gathering information":["Recopilaci\u00f3n de informaci\u00f3n"],"Refresh sites":["Actualizar sitios"],"Requires GP Premium %s.":["Requiere %s GP Premium."],"Page Builder":["Constructor de p\u00e1gina"],"Category":["Categor\u00eda"],"No thanks":["No gracias"],"Remove imported site":["Eliminar sitio importado"],"This process makes changes to your website. If it contains important data, we suggest backing it up before proceeding.":["Este proceso realiza cambios en su sitio web. Si contiene datos importantes, le sugerimos que los respalde antes de continuar."],"Try again":["Int\u00e9ntalo de nuevo"],"No sites were found.":["No se encontraron sitios."],"Restoring content":["Restauraci\u00f3n del contenido"],"Installing %s":["Instalando %s"],"Import Complete":["Importaci\u00f3n completa"],"Importing theme options":["Importando las opciones del tema"],"Why?":["\u00bfPor qu\u00e9?"],"This process restores your previous options, widgets and active plugins. It will also remove your imported content and CSS.":["Este proceso restaura la anterior versi\u00f3n de las opciones, widgets y plugins activos. Tambi\u00e9n eliminar\u00e1 el contenido importado y el CSS."],"It is highly recommended that you remove the last site you imported before importing a new one.":["Es muy recomendable que elimines el anterior sitio que importaste antes de importar uno nuevo."],"Existing Site Import Detected":["Detectado sitio existente importado"],"Restoring theme options":["Restauraci\u00f3n de opciones del tema"],"New URL":["Nueva URL"],"Old URL":["URL antigua"],"This site is using Elementor which means you will want to replace the imported image URLs.":["Este sitio est\u00e1 utilizando Elementor, lo que significa que querr\u00e1 reemplazar las URLs de im\u00e1genes importadas."],"Additional Cleanup":["Limpieza adicional"],"This site uses the following plugins.":["Este sitio utiliza los siguientes plugins."],"All":["Todo"],"View Site":["Ver Sitio"],"Get Started":["Empezar"],"Plugins":["Plugins"],"Installing plugins":["Instalaci\u00f3n de plugins"],"Activating plugins":["Activar plugins"],"Importing widgets":["Importar widgets"],"Importing site options":["Importar opciones del sitio"],"Importing content":["Importando contenido"],"None":["Ninguno"],"Import":["Importar"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-cbab080b0f20fd6c323029398be6c986.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-cbab080b0f20fd6c323029398be6c986.json deleted file mode 100644 index 31f23b82..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-cbab080b0f20fd6c323029398be6c986.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2022-08-18 07:05:04+0000","generator":"WP-CLI\/2.6.0","source":"dist\/dashboard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"es","plural-forms":"nplurals=2; plural=n != 1;"},"This will delete all of your customizer settings. It cannot be undone.":["Esto eliminar\u00e1 todas sus ajustes de personalizaci\u00f3n. No se puede deshacer."],"Reset your customizer settings.":["Reestablecer sus ajustes de personalizaci\u00f3n."],"Options imported.":["Opciones imoprtadas."],"This can overwrite existing settings and cannot be undone.":["Esto puede sobreescribir ajustes existentes y no se puede dehacer."],"Import your customizer settings.":["Importar sus ajustes de personalizaci\u00f3n."],"Global Colors":["Colores globales"],"Export your customizer settings.":["Exportar sus ajustes de personalizaci\u00f3n."],"Import \/ Export":["Importar \/ Exportar"],"License key deactivated.":["Clave de licencia desactivada."],"License key activated.":["Clave de licencia activada."],"Get alpha and beta updates directly to your Dashboard.":["Obtenga actualizaciones alfa y beta directamente en su Panel de control."],"Enter your license key to activate updates.":["Ingrese su clave de licencia para activar las actualizaciones."],"Not receiving premium updates.":["No recibiendo actualizaciones premium."],"Receiving premium updates.":["Recibiendo actualizaciones premium."],"Options exported":["Opciones exportadas"],"This will delete all settings for this module. It cannot be undone.":["Esto eliminar\u00e1 todos los ajustes para este m\u00f3dulo. No se puede deshacer."],"Open tools for this module.":["Abrir herramientas para este m\u00f3dulo."],"Open Elements":["Abrir Elementos"],"Open Site Library":["Abrir Biblioteca de sitios"],"Settings reset.":["Reestablecer ajustes"],"Typography":["Tipograf\u00eda"],"All":["Todo"],"Reset":["Restablecer"],"Modules":["M\u00f3dulos"],"License Key":["Clave de licencia"],"Deactivate":["Desactivar"],"Activate":["Activar"],"This module has been deprecated. Deactivating it will remove it from this list.":["Este m\u00f3dulo se encuentra obsoleto. Al desactivarlo, lo eliminar\u00e1 de esta lista."],"Import":["Importar"],"Export":["Exportar"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-ecf9f3c2af10c4f2dfbf4f42504922d1.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-ecf9f3c2af10c4f2dfbf4f42504922d1.json deleted file mode 100644 index 7385063a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES-ecf9f3c2af10c4f2dfbf4f42504922d1.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2022-08-18 07:05:04+0000","generator":"WP-CLI\/2.6.0","source":"dist\/customizer.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"es","plural-forms":"nplurals=2; plural=n != 1;"},"Related\/Upsell Product Titles":["T\u00edtulos de productos relacionados\/mejorados"],"Catalog Product Titles":["T\u00edtulos de productos del cat\u00e1logo"],"Off-Canvas Sub-Menu Items":["Elementos del submen\u00fa fuera de lienzo"],"Off-Canvas Menu Items":["Elementos del men\u00fa fuera de lienzo"],"Secondary Mobile Menu Toggle":["Alternar men\u00fa m\u00f3vil secundario"],"Secondary Sub-Menu Items":["Elementos del submen\u00fa secundario"],"Secondary Menu Items":["Elementos del men\u00fa secundario"],"Off-Canvas Panel":["Panel fuera de lienzo"],"WooCommerce":["WooCommerce"],"Secondary Navigation":["Navegaci\u00f3n Secundaria"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES.mo b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-es_ES.mo deleted file mode 100644 index 2e6b0d2102d999a9b079504b89cb68db125a2cba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60021 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Ä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 1;"},"Post author name":["Nom de l'auteur de la publication"],"Post date":["Date de la publication"],"Title":["Titre"],"Dynamic text type":["Type de texte dynamique"],"Published date before text":["Texte avant la date de publication"],"Term archives":["Archives des termes"],"Author meta":["M\u00e9tadonn\u00e9es des auteurs"],"Previous page of posts":["Pr\u00e9c\u00e9dente page des publications"],"Next page of posts":["Prochaine page des publications"],"Comments area":["Zone des commentaires"],"Author archives":["Archives des auteurs"],"Single post":["Publication unique"],"Taxonomy":["Taxonomie"],"In same term":["Dans le m\u00eame terme"],"No previous post":["Pas de publication pr\u00e9c\u00e9dente"],"This will remove the current sidebar widgets for the selected sidebar. Your layout must have a sidebar set for this Element to show.":["Cela supprimera les widgets en cours pour la colonne lat\u00e9rale s\u00e9lectionn\u00e9e. Votre mise en page doit avoir des colonnes lat\u00e9rales d\u00e9finies pour que cet \u00e9l\u00e9ment soit visible."],"Site Footer":["Pied de page du site"],"None":["Aucun"],"Type":["Type"],"Right Sidebar":["Colonne lat\u00e9rale de droite"],"Left Sidebar":["Colonne lat\u00e9rale gauche"],"Priority":["Priorit\u00e9"],"Custom Hook":["Hook personnalis\u00e9"],"Custom":["Personnaliser"],"Site Header":["Ent\u00eate du site"],"Page Hero":["Banni\u00e8re"],"Hook":["Hook"],"Right":["Droite"],"Left":["Gauche"],"Center":["Centre"],"Location":["Emplacement"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fr_FR-53e2a1d5945b8d2b1c35e81ae1e532f3.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fr_FR-53e2a1d5945b8d2b1c35e81ae1e532f3.json deleted file mode 100644 index a7b5560a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fr_FR-53e2a1d5945b8d2b1c35e81ae1e532f3.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2021-03-10 11:23:17+0000","generator":"WP-CLI\/2.6.0","source":"dist\/editor.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"fr","plural-forms":"nplurals=2; plural=n > 1;"},"All Elements":["Tous les \u00e9l\u00e9ments"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fr_FR-92fa58377f1b6f7bef9c785c31ae29ff.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fr_FR-92fa58377f1b6f7bef9c785c31ae29ff.json deleted file mode 100644 index 0c595687..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fr_FR-92fa58377f1b6f7bef9c785c31ae29ff.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2021-03-10 11:23:17+0000","generator":"WP-CLI\/2.6.0","source":"dist\/site-library.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"fr","plural-forms":"nplurals=2; plural=n > 1;"},"Why?":["Pourquoi?"],"This process restores your previous options, widgets and active plugins. It will also remove your imported content and CSS.":["Cette op\u00e9ration restaure vos r\u00e9glages pr\u00e9c\u00e9dents: options, widgets et extensions actives. Cela va aussi supprimer le contenu import\u00e9 est les CSS. "],"It is highly recommended that you remove the last site you imported before importing a new one.":["Il est vraiment recommand\u00e9 de supprimer le dernier site que vous avez import\u00e9 avant d'en importer un nouveau. "],"Existing Site Import Detected":["L'importation de ce site existe d\u00e9j\u00e0"],"Restoring theme options":["Restaurer les options du th\u00e8me"],"New URL":["Nouvelle URL"],"Old URL":["Ancienne URL"],"This site is using Elementor which means you will want to replace the imported image URLs.":["Ce site utilise Elementor ce qui veut dire que vous devrez remplacer les URLs des images import\u00e9es"],"Additional Cleanup":["Nettoyage suppl\u00e9mentaire"],"This site uses the following plugins.":["Ce site utilise les plugins suivants"],"Installing plugins":["Installation de plugins..."],"Activating plugins":["Activer les plugins"],"Importing widgets":["Importation des widgets"],"Importing site options":["Importation des options du site"],"Importing content":["Importation du contenu"],"None":["Aucun"],"Import":["Importer"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fr_FR.mo b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-fr_FR.mo deleted file mode 100644 index 09ab19f4d044d5a3ab8f49e4be4863700b32fb50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39934 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 diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-hr.mo b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-hr.mo deleted file mode 100644 index aa6b8ca5ae87120380577ebecfd985ea79a2bdc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27851 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 A{r~^~ diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-hu_HU.mo b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-hu_HU.mo deleted file mode 100644 index e0aa58e484d8978b037c8155dd992988af29c619..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52216 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 diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-it_IT.mo b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-it_IT.mo deleted file mode 100644 index f92a2b4a4087d12fa87d78218b981d9101eea075..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39606 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 diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-42da344ccb044413769d16ed3484307b.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-42da344ccb044413769d16ed3484307b.json deleted file mode 100644 index cd4fea2c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-42da344ccb044413769d16ed3484307b.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2022-10-22 13:18:34+0000","generator":"WP-CLI\/2.6.0","source":"dist\/block-elements.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"nl","plural-forms":"nplurals=2; plural=n != 1;"},"Loop Template":["Loop thema"],"The taxonomy to check if in the same term.":["De taxonomie om te controleren of het om dezelfde term gaat."],"Check for posts with the same term as the current post.":["Zoek naar berichten met dezelfde term als het huidige bericht."],"Remove container condition":["Verwijder container conditie"],"Display Order":["Weergavevolgorde"],"Parent Element":["Bovenliggend element"],"First post":["Eerste bericht"],"No post meta":["Geen bericht-meta"],"No featured image":["Geen uitgelichte afbeelding"],"Keep default archive navigation container":["Behoud standaard archief navigatie container"],"Disable default pagination":["Standaard paginering uitschakelen"],"Add default archive navigation container":["Voeg standaard archief navigatie container toe"],"Disable default post navigation":["Standaard berichtnavigatie uitschakelen"],"Use the above template tag to add the current year to your footer.":["Gebruik bovenstaande template tag om het huidige jaartal aan je footer toe te voegen."],"Current year template tag":["Huidig jaartal template tag"],"Disable primary post meta":["Uitzetten primaire bericht-meta"],"Disable featured image":["Uitzetten uitgelichte afbeelding"],"Disable title":["Uitzetten titel"],"Keep default post container":["Behoud standaard berichtcontainer"],"Post meta name":["Berichtmeta-naam"],"Term name":["Termnaam"],"Posts with custom field":["Berichten met aangepast veld"],"Posts with term":["Berichten met term"],"All posts":["Alle berichten"],"Apply to":["Toepassen op"],"Tag name":["Tag-naam"],"Replace default secondary post meta":["Vervang standaard secundaire bericht-meta"],"Replace default primary post meta":["Vervang standaard primaire bericht-meta"],"Custom hook name":["Aangepaste hook naam"],"Choose your hook":["Kies je hook"],"Hook name":["Hook naam"],"Quick hook select":["Snelle hook selectie"],"Before post title":["Voor berichttitel"],"After post title":["Na bericht titel"],"This Element will replace your site footer area that holds your copyright message. It will not replace footer widgets if they exist.":["Dit element vervangt het footer gebied van je site waar het copyright bericht staat. Het vervangt niet je footer widgets als deze bestaan."],"Templates":["Templates"],"Element type":["Element type"],"Editor width":["Breedte editor"],"Install GenerateBlocks":["Installeer GenerateBlocks"],"Activate GenerateBlocks":["Activeer GenerateBlocks"],"To take full advantage of Block Elements, we suggest using our GenerateBlocks plugin.":["Om volledig gebruikt te kunnen maken Block Elements, raden we het gebruik van onze GenerateBlocks plug-in aan."],"Block Element":["Block Element"],"After content container":["Na inhoud-container"],"After content":["Na inhoud"],"Before content":["Voor inhoud"],"Before content container":["Voor inhoud-container"],"After header":["Na header"],"label\u0004Single post hero with excerpt":["Enkel bericht-hero met uittreksel"],"label\u0004Basic single post page hero":["Eenvoudige enkel bericht-hero "],"label\u0004Rounded buttons with icon":["Afgeronde knoppen met icoon"],"label\u0004Default next and previous buttons":["Standaard volgende en vorige knoppen"],"label\u0004Landscape layout":["Liggende layout"],"label\u0004Layout with offset content":["Layout met offset inhoud"],"label\u0004Basic layout with term buttons":["Eenvoudige layout met term-knoppen"],"label\u0004Full footer 2":["Volledige footer 2"],"label\u0004Full footer 1":["Volledige footer 1"],"label\u0004Term buttons":["Term-knoppen"],"label\u0004Stacked with avatar":["Gestapeld met avatar"],"label\u0004Inline with avatar":["Inline met avatar"],"label\u0004Two columns with background overlays":["Twee kolommen met achtergrond bedekking"],"label\u0004Two columns with arrows":["Twee kolommen met pijlen"],"label\u0004Two columns with featured image":["Twee kolommen met uitgelichte afbeelding"],"%s Units":["%s eenheden"],"A size unit for CSS markup\u0004Degree":["Graden"],"A size unit for CSS markup\u0004Percentage":["Percentage"],"A size unit for CSS markup\u0004Em":["Em"],"A size unit for CSS markup\u0004Pixel":["Pixel"],"Select Units":["Selecteer eenheden"],"Displays a dynamic image from your chosen source.":["Geef een dynamische afbeelding weer van je gekozen bron"],"Dynamic Image":["Dynamische afbeelding"],"Dynamic image placeholder":["Dynamische afbeelding placeholder"],"Choose your dynamic image type.":["Kies type dynamische afbeelding"],"Dynamic image":["Dynamische afbeelding"],"Make image rounded":["Maak afbeelding afgerond"],"Custom field name":["Aangepast veld-naam"],"Custom field":["Aangepast veld"],"Link to":["Link naar"],"Image height":["Afbeeldingshoogte"],"Image width":["Afbeeldingsbreedte"],"Image size":["Afbeeldingsgrootte"],"Author avatar":["Auteur avatar"],"Displays dynamic content based on your chosen source.":["Toont dynamische inhoud gebaseerd op je gekozen bron."],"Dynamic Content":["Dynamische inhoud"],"This is a placeholder for your description.":["Dit is een plaatshouder voor je beschrijving."],"Choose your dynamic content type.":["Selecteer je dynamische inhoudstype"],"Dynamic content":["Dynamische inhoud"],"Custom more link":["Aangepaste meer link"],"Use theme more link":["Gebruik thema meer link"],"Excerpt length":["Lengte uittreksel"],"Author description":["Schrijver omschrijving"],"Term description":["Term omschrijving"],"Post excerpt":["Bericht uittreksel"],"Post content":["Bericht-inhoud"],"Dynamic link type":["Dynamische link-type"],"Updated date before text":["Bijgewerkt datum voor tekst"],"Use % in place of the number of comments":["Gebruik % in de plaats van het aantal reacties"],"Plural comments text":["Meervoud reacties tekst"],"Singular comments text":["Enkelvoudige reacties tekst"],"No comments text":["Geen reacties tekst"],"Term separator":["Term scheidingsteken"],"Replace with updated date":["Vervang door bijgewerkt datum"],"Updated date":["Bijgewerkt datum"],"Date type":["Datumtype"],"Terms":["Termen"],"Hello World":["Hallo wereld"],"Comments number":["Aantal reacties"],"List of terms":["Termenlijst"],"Post author name":["Bericht auteurnaam"],"Post date":["Berichtdatum"],"Title":["Titel"],"Dynamic text type":["Dynamische tekst type"],"Published date before text":["Gepubliceerd datum voor tekst"],"Term archives":["Term archief"],"Author meta":["Auteur meta"],"Previous page of posts":["Vorige pagina van berichten"],"Next page of posts":["Volgende pagina van berichten"],"Comments area":["Reacties gebied"],"Author archives":["Auteur archieven"],"Single post":["Enkel bericht"],"Taxonomy":["Taxonomie"],"In same term":["In dezelfde term"],"No previous post":["Geen vorig bericht"],"No next post":["Geen volgend bericht"],"Space between":["Spatie tussen"],"Inline alignment":["Inline uitlijning"],"Inline post meta items":["Inline bericht meta-termen"],"Previous post":["Vorig bericht"],"Next post":["Volgend bericht"],"Current post":["huidig bericht"],"Source":["Bron"],"Post":["Bericht"],"Choose\u2026":["Selecteer..."],"Dynamic Link":["Dynamische link"],"Use fallback image":["Gebruik terugval-afbeelding"],"Meta field name":["Metaveld naam"],"Add a background image to this Container to make it dynamic.":["Voeg een achtergrond toe aan deze Container om deze dynamisch te maken."],"User meta":["Gebruiker meta"],"Term meta":["Term meta"],"Post meta":["Bericht meta"],"Featured image":["Uitgelichte afbeelding"],"Dynamic Background Image":["Dynamische achtergrond afbeelding"],"Dynamic options":["Dynamische instellingen"],"Archive Navigation":["Archief navigatie"],"Post Navigation":["Berichtnavigatie"],"Post Meta Template":["Bericht meta template"],"Content Template":["Inhoud template"],"% Comments":["% reacties"],"1 Comment":["1 reactie"],"No Comments":["Geen reacties"],"This is a placeholder for your content.":["Dit is een plaatshouder voor je inhoud."],"This will remove the current sidebar widgets for the selected sidebar. Your layout must have a sidebar set for this Element to show.":["Dit verwijdert de huidige zijbalkwidgets voor de geselecteerde zijbalk. Je lay-out moet een zijbalk hebben om dit Element te laten zien."],"Site Footer":["Site footer"],"None":["Geen"],"Type":["Type"],"Right Sidebar":["Rechter zijbalk"],"Left Sidebar":["Linker zijbalk"],"Priority":["Prioriteit"],"Custom Hook":["Aangepaste hook"],"Custom":["Aangepast"],"Site Header":["Site header"],"Page Hero":["Page Hero"],"Hook":["Hook"],"Right":["Rechts"],"Left":["Links"],"Center":["Midden"],"Location":["Locatie"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-53e2a1d5945b8d2b1c35e81ae1e532f3.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-53e2a1d5945b8d2b1c35e81ae1e532f3.json deleted file mode 100644 index bd23357a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-53e2a1d5945b8d2b1c35e81ae1e532f3.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2022-10-22 13:18:34+0000","generator":"WP-CLI\/2.6.0","source":"dist\/editor.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"nl","plural-forms":"nplurals=2; plural=n != 1;"},"Active Elements":["Actieve elementen"],"All Elements":["Alle elementen"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-92fa58377f1b6f7bef9c785c31ae29ff.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-92fa58377f1b6f7bef9c785c31ae29ff.json deleted file mode 100644 index 0cc8e32a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-92fa58377f1b6f7bef9c785c31ae29ff.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2022-10-22 13:18:34+0000","generator":"WP-CLI\/2.6.0","source":"dist\/site-library.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"nl","plural-forms":"nplurals=2; plural=n != 1;"},"Requires GeneratePress %s.":["Vereist GeneratePress %s."],"Built by":["Gebouwd door"],"Note: We do our best to ensure all imported images are licensed for open use. However, image licenses can change, so we strongly advise that you replace all imported images with your own.":["Opmerking: we doen ons best om ervoor te zorgen dat alle ge\u00efmporteerde afbeeldingen vrij gebruikt mogen worden. Afbeeldingslicenties kunnen echter veranderen, dus we raden je ten zeerste aan om alle ge\u00efmporteerde afbeeldingen te vervangen door je eigen afbeeldingen."],"Check out your new site and start making it yours!":["Bekijk je nieuwe site en geef het jouw unieke stijl!"],"Learn more here":["Leer hier meer"],"To disable it, find WP_DEBUG in your wp-config.php file and set it to false like the below.":["Zoek - om het uit te schakelen - naar WP_DEBUG in je wp-config.php-bestand en stel het in op false zoals hieronder."],"WordPress debug mode is currently enabled. With this, any errors from third-party plugins might affect the import process.":["De foutopsporingsmodus van WordPress is momenteel ingeschakeld. Hierdoor kunnen eventuele fouten van plug-ins van derden het importproces be\u00efnvloeden."],"Debug Mode Enabled":["Foutopsporingsmodus ingeschakeld"],"Preview mobile":["Voorbeeld mobiel"],"Preview tablet":["Voorbeeld tablet"],"Preview desktop":["Voorbeeld desktop"],"Elementor Tools":["Elementor Tools"],"Take note of the old and new URLs below, then head over to the Elementor Tools area to replace them.":["Noteer de oude en nieuwe URL's hieronder en ga naar het Elementor Tools-gebied om ze te vervangen."],"Begin Import":["Begin importeren"],"I understand":["Ik begrijp het"],"Confirm Import":["Bevestig importeren"],"Import Demo Content":["Importeer demo inhoud"],"This will install and activate needed plugins, import demo content, and import site options.":["Dit installeert en activeert de benodigde plug-ins, importeert de demo-inhoud en importeert site-instellingen."],"Import Theme Options":["Importeer thema-instellingen"],"This will import the options from the Customizer.":["Dit importeert de instellingen van de Customizer."],"These plugins need to be installed manually.":["Deze plug-ins moeten handmatig worden ge\u00efnstalleerd."],"These plugins are already installed.":["Deze plug-ins zijn al ge\u00efnstalleerd."],"These plugins can be installed automatically.":["Deze plug-ins kunnen automatisch worden ge\u00efnstalleerd."],"Gathering information":["Informatie aan het verzamelen."],"Refresh sites":["Vernieuw sites"],"Requires GP Premium %s.":["Vereist GP Premium %s."],"Page Builder":["Pagina bouwer"],"Category":["Categorie"],"No thanks":["Nee bedankt"],"Remove imported site":["Verwijder ge\u00efmporteerde site"],"This process makes changes to your website. If it contains important data, we suggest backing it up before proceeding.":["Dit proces maakt veranderingen aan je website. Als deze belangrijke data bevat, raden we aan om deze te back-uppen."],"Try again":["Nogmaals proberen"],"No sites were found.":["Geen sites gevonden."],"Restoring content":["Terugzetten inhoud"],"Installing %s":["%s wordt ge\u00efnstalleerd"],"Import Complete":["Import compleet"],"Importing theme options":["Thema-instellingen worden ge\u00efmporteerd"],"Why?":["Waarom?"],"This process restores your previous options, widgets and active plugins. It will also remove your imported content and CSS.":["Deze procedure zet de vorige instellingen, widgets, en actieve plugins terug. Het verwijdert ook de ge\u00efmporteerde inhoud en CSS."],"It is highly recommended that you remove the last site you imported before importing a new one.":["Het is aanbevolen dat je de laatste site verwijdert die je hebt ge\u00efmporteerd voordat je een nieuwe importeert."],"Existing Site Import Detected":["Bestaande site import gevonden"],"Restoring theme options":["Terugzetten thema-instellingen"],"New URL":["Nieuwe URL"],"Old URL":["Oude URL"],"This site is using Elementor which means you will want to replace the imported image URLs.":["Deze site maakt gebruik van Elementor, wat betekent dat je de ge\u00efmporteerde afbeeldings-URLs moet aanpassen."],"Additional Cleanup":["Extra opruimen"],"This site uses the following plugins.":["Deze site maakt gebruik van de volgende plugins:"],"All":["Alles"],"View Site":["Bekijk site"],"Get Started":["Nu beginnen"],"Plugins":["Plugins"],"Installing plugins":["Plugins aan het installeren"],"Activating plugins":["Plugins aan het activeren"],"Importing widgets":["Widgets aan het importeren"],"Importing site options":["Site-instellingen aan het importeren"],"Importing content":["Inhoud aan het importeren"],"None":["Geen"],"Import":["Importeren"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-cbab080b0f20fd6c323029398be6c986.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-cbab080b0f20fd6c323029398be6c986.json deleted file mode 100644 index 2c6bc645..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-cbab080b0f20fd6c323029398be6c986.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2022-10-22 13:18:34+0000","generator":"WP-CLI\/2.6.0","source":"dist\/dashboard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"nl","plural-forms":"nplurals=2; plural=n != 1;"},"This will delete all of your customizer settings. It cannot be undone.":["Dit zal al je customizer instellingen verwijderen. Het kan niet ongedaan worden gemaakt."],"Reset your customizer settings.":["Reset je customizer instellingen."],"Options imported.":["Opties ge\u00efmporteerd."],"This can overwrite existing settings and cannot be undone.":["Dit kan bestaande instellingen overschrijven en kan niet ongedaan worden gemaakt."],"Import your customizer settings.":["Importeer je customizer instellingen."],"Global Colors":["Globale kleuren"],"Export your customizer settings.":["Exporteer je customizer instellingen."],"Import \/ Export":["Importeren \/ exporteren"],"License key deactivated.":["Licentiesleutel gedeactiveerd."],"License key activated.":["Licentiesleutel geactiveerd."],"Get alpha and beta updates directly to your Dashboard.":["Ontvang alpha en beta updates direct in je Dashboard."],"Enter your license key to activate updates.":["Voer je licentiesleutel in om updates te activeren."],"Not receiving premium updates.":["Geen premium updates ontvangen."],"Receiving premium updates.":["Premium-updates ontvangen."],"Options exported":["Opties ge\u00ebxporteerd"],"This will delete all settings for this module. It cannot be undone.":["Hiermee worden alle instellingen voor deze module verwijderd. Dit kan niet ongedaan worden gemaakt."],"Open tools for this module.":["Open gereedschap voor deze module."],"Open Elements":["Open elementen"],"Open Site Library":["Open site bibliotheek"],"Settings reset.":["Instellingen gereset."],"Typography":["Typografie"],"All":["Alles"],"Reset":["Terugzetten"],"Modules":["Modules"],"License Key":["Licentiecode"],"Deactivate":["Deactiveren"],"Activate":["Activeren"],"This module has been deprecated. Deactivating it will remove it from this list.":["Deze module is verouderd. Als u deze deactiveert, wordt deze uit deze lijst verwijderd."],"Import":["Importeren"],"Export":["Exporteren"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-ecf9f3c2af10c4f2dfbf4f42504922d1.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-ecf9f3c2af10c4f2dfbf4f42504922d1.json deleted file mode 100644 index 69729ba2..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL-ecf9f3c2af10c4f2dfbf4f42504922d1.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2022-10-22 13:18:34+0000","generator":"WP-CLI\/2.6.0","source":"dist\/customizer.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"nl","plural-forms":"nplurals=2; plural=n != 1;"},"Related\/Upsell Product Titles":["Gerelateerde\/opwaarderende producttitels"],"Catalog Product Titles":["Catalogus product titels"],"Off-Canvas Sub-Menu Items":["Off-canvas submenu items"],"Off-Canvas Menu Items":["Off-canvas menu items"],"Secondary Mobile Menu Toggle":["Secundair mobiel menu toggle"],"Secondary Sub-Menu Items":["Secundaire submenu items"],"Secondary Menu Items":["Secundaire menu-items"],"Off-Canvas Panel":["Off-canvas paneel"],"WooCommerce":["WooCommerce"],"Secondary Navigation":["Secundaire navigatie"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL.mo b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-nl_NL.mo deleted file mode 100644 index d13ab9e4af5e046e4aba38f99465ca8ec3a3b416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57471 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 GD*q2N4mEWE diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-pl_PL.mo b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-pl_PL.mo deleted file mode 100644 index 06c623d9a0f3d2dd66355c3545b76024ab09693e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30953 zcma)^3A`jlo#%7pZf+1z&g5w9mhRUlf=xq1_v?$k9{sv$1qAa|<$Et*Rb>{HRb5?$ zB5cqm)}XTfzY ze$?@GjuY?*-e2#+Z-h$;zZJe3ei0rAe+!jv*4dtSI6Mg||Ffaq&vRS>RmH7P^(e!m zVGQ-%8{v`gRyYs72kQH2sQjLQ`tChqX;|5GUW{t~_nzGSw2e+pFmkmCxdc8|d0 z;TTkVcS5yew+r764en4m^1KPE+;>2=>u#uad=e_3M_l~lQ04wBY{EangW&aKs&=*E!SE)i z_TB~$f$xHc!uLUycb|*@qziuzD&M^>{xPU>zYis!UqX$G1LoRt&VWik59Cb~NCAB6se;muI}{W_@f$D#V61~m>FE_@r5JoZ49 z|1Nk8d;m&*4?%tZb$Bd%%<(5s}zlEyD|AyDWKf~kUbxTie}&?HPrdcP01!dMNq50ZQJxp~l&5?){xm_4)vm z-0yYahoQ>Z3zhFbL6!eBlpOvKR6hR(mH(lyvh)5ZsCJzL&wv*|mAeB<9hho3DvGgUHs!v@_oj={{vM0j=#W`dk$218B{(ST>R_cNrY4A!`q

    q4dX9Q2KEf)OYWMlG8`vN$}H9>Awk8 z-qY^=@1XSNp%{Vs?kuS9mO_0u4E5bLQ0-|z$>Bz*dfpC|-@BpY`T&$XKLynv{{WT# z>rnE20xJKXL-q3?pz@cp(03<7y*~#Y0GGP(g;3?MgDUs6@Fg&C;j&}Zu?dym8=%I+ ztx(_Zfy)1bQ0@IBJRRA8?Uv&k0cD=5)tPpz^!cu?*GzDX4b55vrZXX` z_UwZi-#>;*_bk+Re}?MUqc8TnE$|ia<**Hv{tl?}-{bf}sP^6uHP8MIO0JJUmG=#( z{GNuY?;oN1`>0FocPB%o_o3Q1E=O|cRo~omO=HyW+?ew4V7;No&h^h?Yj%gj`}3j z_m4x>=X+4?ehQufpLaawQrn(+Q2Aa2RnHAja^412zpJ6z-GY+aO;G*32dZ9oL(Tj9 zpx*yIRQV4>^~+wU`aKHO{vScr|2e4od6(II4uvZB1jkdM>UB0${g*)X=V}+e1}gs; zN}f%qdcMu^Jy7zy531c?fNIZopz8fgsPg^|svZZewDmd?s{W@y<>y1SZvoVI%UpP^ zd%qQ)L3{v9@GWow{0Y1Op0J8B3^zf^p#|r`{{UYNKMzOY^Kc7XH;nFu?}0bKBUXFf zZ1`4KhaZQM^BHTb{y7h-{tKYwbph1-wNUjQg=){WE?k0YR}59JzjWbyp}zYRRDNHA z2g9#I_4l`+^ul+c#QH*c&K(RgsT5V@MO3a&Vgf4{c{^U8$JLR z!*4;A`;ztc`$M3{$8k{Q&4Y)*rBLZEfvWc^cqqIa9tKC@lE1(%gXa*w<8mASX{dI5 z$%VfGHU7T?XThI2{>t&+pz43v2K(I!5Ebm51uuoyLdpOAQ2BfoD*s2J>icb|es~h9 z{m(fbxzXl32dY1oLdkV4)V$aZ7s2bH^xfaUBjD%Y;qc2)^Y0&_zJD5?4u1>PuP1J@ z{dOKyJ(fX@|CLa3YCx591N7m$;avDxsPs=kmGdlA|NjOa2@l$A+j~5e{O3W*Z4p$t z%c1na6;Sn>gh#*|9N+4AC)D>Jf|A>PF8;GFej2JC|INMsM|dXTAH%cYK}<@GyE#zf zZU`O)FLB%iRsU10>br3$dDUI`-B9iMAXGm0yYOe>O9}s1sPX=7sCqsJH6Lef zw|=YHP;$5$N*`Sh7r{HB55EHS-Ou0x=v`^sxezL!O;B>1g!=v#sPqrO6X9N{^1la9 zfWLu~(-AxD`?*l>FNGT4*FeeTO;F?M9q#>oQ2ntNYCimndw=+AtlZ9l%I6X&xnBh( zrzxoMbO%)VpMa|8G*tcm1zrTb*IK>294g&4Q1hn&mF`XOc=#@;`rYsNIjH{qDpWsw z7aBbRQAysjQ2AVNm6gjdR6DML%5OK+ckgoV-w*ZuXP~}&1ZsSK9jbj#K*{NOsPS;p z)s|<%lL(&&Ri9N*^I{v+IJnxy*B##iHD3N2D%}TM_&%s|{|i(*{{g-X{tqa*KkMR; zxW>x)6sY{qgDUq@sCjpVdw&hoJgGwE`z9BDJJkC0eyH^O;2QWXsP>=uI{V$}@RfuY zLDlmbsC-IL<<_CTzZt6E_du2R0T=%u)I53^Nv%`uL@P(jqnWk4yg8j9I9XTLgo7tsB!UY7ydI;x}#rj%RdLAYP<`f#`)XfCio$! za(@9Yh6e;z-j_l3$2zEXj6lg}J3JFkK=u3Epvt)$O3t5f@n3RsJUE!!f9GZ-kP=?ND-hH&p-J4^_@S#~(n=@8_Y)JGpGr&w-Nn zMNs8k;dmufzg-PAzAI4Uy8%_dH$ln!ZBXg%fv3O+pz8G%sCqpHmH+pl^vN%wzW=?8 zKQOfNJQ=E;bK$9QB~<@i2USiTD*xT^4ER2%d>@ADkAHIUKZeTZfN@)|Q=#NB51t0s zKz&z+YEKucUbjG%v&Y4M2ue<$aQq^a{J#bz=O04l^DB5DJZ!>_pQE7C&4-#-E1~3Z zB~<=nP~SJ9tNs@%L~Teg&$&M?^N?6XDr}=R(zI6I4B~ zh59~*hr+i*$>~n_{sE|Ve!<0m6)OFcQ2q2rcqTk?%C74dLe+B;s(mrk_qRcn`yO~b z{3uj?PN~>(SHM|>*ExCZkxr{@7-+?OkR>u!R>9vR9;qY;&@_z*N-81kk_d((ZwdZlD`utz0@{g(6 zcAX7XuOTS8EQK0hS3s3ta!lb7gl~kB^B#CE{5U)SKJMOs7pk0}!rAaoj%UZV|JFn4 zlk4D-uni^Oo1x^f2daJ#Le=BTQ0;yKD*e;&DEOS?UnEuz$3VS53F^DqQ2AT{CBMs| z={FZY4i6)~1C{@cQ1!YUYMk8%r6;}!)vw=$>Ze~p$@ODNKY zX$-0!Z-(lx{|F_=yP?`~AC&w*4VCU8_x@W@`sW8w_5U?g{SIT0s(oj|op1@92k(aq z;CGP=Q2n?OYCP<4;j5wM|2S0nH^AfI-@#+yUa0&Yhw7iFT=-ci{rp=fIh{mf z7sGR*=Jji#zPkZRKfD!6PIo}b|6Uh<#JztEUP}BAp!)r^wypOopy@ZLdaZ-1$JJ2n zEx9VjI@fGa{t!7dSno%jJRy#x9Wn;R*fcNTUfP9OG}f{&X9@|aJ8_3 zQJU4N1~i>Fs)vnkcIrx9OIoUK?1zm;((sc~Nir|bLl9w*(m#!kA4~*MOl9izYR7X0 zXw8i(w`g7JTp1c1K{B?8_RmyAKYzC!C+nQE$lA82hWgYCT3`!LVYg zWUHu&25l%89;rn&Y0QZ5w@_p?==8m?Bdi!@Yu3xyUtgnRiYZJ)T8tS5oR`a4eu(`a(W~Y-2dyoEf`SQ$^8?AqU0|BPCX@ ziuG$jgHcRqm%ojE_Et86Snsn?7*y&>M8~geRV%)Rf5Mp0WNJj~_axw66k=TW*$$FwO9tOs$$sk7P7G`#&^`N8{j59WN28}3b zrP(}5eP*fVZnP_`rbB!cmMV%UhqVOlVswFxO-ollTm}f#-KUv`lGOvtD`?BMs#lS%*|sLWD{y;j6d_8Ss}6v zvssjdN5gv12%6}UEXGdYEYw#mMkXsx8g*?`sHoov(er3igk!7jOY53I6t_ZubTX;e zkvK7K1>{M3ag|vh9Q;*woydaglB806_BRJLGPP^U`r-V^sIB2J$X2=hQGFcM>I}ND zoG*C8;ds!hHof66tu&K*M$`~We>h5mF_u8bZ0@9a#F{W@(urlKEVFc@SQ-ABB+-=a zi*s5ri_thq@_kut>$UQ$hur=v}$9$EKOcf>@!+hc|sGJ=TgYJm%@&3ri_-?thW74 z>=jar;>gxIZH>+EE2?f4JI&T2N4FuH-iLKbs%eawtPBZFMiFahUapD5a0w@pMpXP< zX=O_Fr;LN0(S$K``s14cx~5o8iWw)Z!0g`7i&~H-G3LWWBP#bkYec0&agC(hDm87h z3TbR?Eo=s=UNGYg6N|AbjZ_qG-Q^~As#%p+)x|f1LdRx_`=xh%D~O5dxZ%@l6>6ZE zrACThV{ZHC#et#L2xS5@vuv@wJkp@bFlRDP=2c6>QWBQ~q?C{PNuvR>y0iW;n9{*!BdM2(_lKi~vu{_kUS%4=Gl9(V&6e0qf#r7T>e#50)mrOW z&8tz_XUPg8Eo*Ry15h|(64Qz+`40n0N&+oTb)F^Vhcj0k6h6w( z)SI58-%c83H;jzAj}UURpG0%1 z;j@9!5+g0P&vxxJY0RTp&Fi+hbG@}A{s_iQ)T$L8Sx>KTF#=M5Z5W5l$dELt**}f3 z8S}w{6o# z9}AKFX42N$?$$DkqMTez)(1972IvkAnnmo77R?<9A~5Y;vNVhB9;!b$kY)*Kmh|$m z!GSbONwc(<#s&w{oKKqbdueQNAkC{t^Qt_J+G57yy0BXJ)?teI#)7u%s@f=3;TeNP zKcr^?>LNxqw7vc7`iWSYbR*_xi-D7RW`k8sU}hH4no!C%(?-1*XNDHiup`5Yu-0iI zy6qes>toCb4DIzXL&?u~N;arbi!I9dw&BhBis($y^{6W5I$NlOQDyh}#32E`NNHZx zj}xwbyMXGPc^1}7>1jv58MBDCWQgT4YFjtf>D~;JAuq4THl}m*exoJ2SvaEzI ztR@70jE^IUnHuYHAKAh)i)+ZcoT+2iDZhp_s&<4%(HpCbRVkmhnaomeV?dEj2ZGx1 z>L)kiivcJ6jc%#f5O%!mIkR$+MHW@gOpn^pZH4v7u(J}+k z+az;SKfV#Pn`XTTt3C5@YSV6#9jP6)4UXWw;;DfyHor1?oq6wXky&qJje(u%=|U9a z+Sw+(;m;>&YUb#sWGrGwVBuTc)*te16HPkbRCOhblyf||?@aVYBTW}GY5XOH&6JBb z`;bi-hA84fXS1>NuW0;z=WddUfCDnA9r){7yowS=WE){ta zFbuJK{W(nK8t$)-uk~y0fo91r^lR_2pmz(AJvmZNwmm2;cK#~oN!$NhJDCda%rci2 z^U^>c4DT;jJ0XmbT*xn+Fj4lsgG|PVIu@l>eD}E#;lk`Royg z2*)8m@;{WqXs1+^v!P9FC*%#rQ`y_hR+ohZSC536dRxZF^?y`|@%LzC7sDgkH+x%f zhp8o7Vh=rLmb@*_v6@*rX7I0UMO8-sGEbqDUz}ZX8D-8%MO3T7E`Rm-I1N&Q5Yy32 zCtIBn>w<38wFzPI8Asu0wXq8nC!5AYoxip#;LsGiPLq@b#+Tny7v4zbr{$q(Jb!LU zVl|ew$Tujx_nG^=FM%?`6dW;|S@Y|Uviu@TdY!2^>mOvMmCr$kkT4(I~tr|O0JuKWBJLh{_v)yp-$t{Xo%?J!J1=y%% zgV076hvingWnQq|?ozYHWYKQ(YPRZym0_#(c3Lo(oJY&-4_&0Q%~C36tevs^yufa_ zv-lQPU`b0GeO6{u=eEWv+fr8O%*i;9!sW}tCuL5_j4zZOV5!nE4kGrbrW`dbx1yw= z8Q8orbJ@b*<-&f42m0Cm_I4;lqPmsQs?kxsbfG@0wik`cm(SK&yS;cCmkTo!U8W~)31-e~T$Fur0Zw$T7Lv(=jU*53swT)r9JX6A#@BfVf@^tq#DEjRTiJxz^>9m0+||suIoYU#}P;7aZM2l8e1wvoiQt$m-l zO;B~(NK~_Z(U7M+%n#>98F6Z_azo4&(TgcKynF9@PlMk%V?0Y>bs3GPRC7QjU5L$R zk(KIilM-QH$X?dHal#|Wmcp5a=Glxt^Rz9PsItMbNlXqrcFE>4j{C@{644P-srHv0 zTCdZL?a+&FSoP|S)|i}=nNv5jqehz?5~H$g|H`vf@+b@0#gNz;oiF2OcoA;!)i z7j4!<*XhlU1cUcBU%zO$*=_ViBFroe(&bED!QO;0>+t^Kazki8>7B+N?WEe1StkWr zzRJkVq`b|Y%lky6p0RC=;c{7ihHQdXu=dfJb0%Qz8}o=}j8oZ?-Zq^r*|S;}0ok19 z=$IwE&f+*^-aFlg#bRbHwy0ucu9^>Yrf1fMHf|vklWl;knwe*P+w-#hzR|bnQk1l& zReu?Fb=Xf;7BquhNu1O;y;Gg}US7l!o`0ux_@>_>RBss9lYF9VH_+<(uHG7}M(HF= zpSgUnpMp%fo*Ksd%8q}w=}6IfTg?t%r-bZ|vDPrv<{3Spop;I+$_ffo;ySAZmH;|{ zgg6DF{vCeqC+&I4R6JjX_VNH*^{`Anel@$Yz$#-7Q}EfVw=&PL?lw>kdjwt>r=ALB z5wr)MCQmB}UyiadbyYb;L^@C?521A3c1-FKPp~;+M1XQG5FBrC9^F*Mke(S9Jk}eD zR$ENL3T2yvN7W&*PCU8%$AUB*^4FU~NXjLzFmtx*^*l*M;?hTW6{!kMm11wzrTGJj zpn@%}Do!q0nXXq-TNcT7nzLlLcFyZt+fB>pdTU5hAJ@E~ni|K9+DOMWW~}yRq_T3m zvdyZE1H=ydafV*fmbkKvZO{FG9nQLXs2fp{X!ctVoWa?HJy~ynZ z1)NPyEzAbO9M?!U**qc+o?|Ug)?2B3xr1>fR|_}-;sO7jE)^BF!&gRZ;9=RSyHM?=coHQ$w887?krX7>~y{KJ>^KNiK zyJ!{zsY_|d+G19i1GUHp68B)Z-{Wo*%OCF*-3^6jGlUARm)C0GXU8`5sz#WbFf0&u zXY9E%BW1s7nD-?q^cFI+Nz@e+U0h0B(_dfC#Y=Pl%avo@{Yw0b^+Nokk) zi-s1?a#q)T&7oy}le;eqP_O^TIj#w4JKY`7S83HMSQb(?nSd+Gv6(ZNn@G6wwg3YB((*Lhn5U2nw5F%mr>#@ zjJ_!r)cNbnz2^27r&+pdhzc&ZD$T-Ur|`V@!8Z30+tI$eO5qe&5!+FD`k}C?=tWt; zUPnw(cS$9gzNZv%Dbc0tcuRVZOM8!_U2Gvn#nOdKxt3VSG`nP2yqOp&CH;`l>H+8q6Gn#<9GB$`c4crm3(##~AB&(ypm%=v@^cjW|`~ zLT^W>fgEDB)7z1fs)ZM4hk{O=;>rpiQkrL>W-1R&bTahVzQsIuS*@jSMyT- z4N1A4)8XbkJ+bc=%1)d6ZmvhuyZteZ2v*ayPIbmwQ{>4aCE?fiJ~;h(9{A^euHqCW zN$H$zrnic{>T1ks=8L>z3&nNG7fVo27#d76E^0+BdwCKmTou^yN-tz_cC2zOwKxp% z`gA*`D6RNyTERf1TPF5C*ywoMrgtaa26MZsIlVh5JW^hTm~tgDiG1Wa{SZd`1Oo10 zJ+y3ef5oRik5X za_|!?4JK|i@EI%955=9*WHyJHkY@h0gDKP`w=OGOEs1bWNU{h<)1s+9D@9m(HAYsD zGFLl{okmwvEX$~sMb7h?)n!gM*;-`Vms)_^&8V^Id)iUhtfD%HUhD%i8)a5Ut$4~n3Fr!Dl<}S*epXr;F1^#A@E6{;8 z_SFIJc(gY<8HmHo87agO>R6L{8qF4Nw2#!XBBj9G@<;34WcTNcgskWH)HXEDyoG-4v`Hjy!)l7Zd*NWoDTN9}Pd>q{p#vXdA__EMQ z)0NV}I78&bU`7;EBEV)RZn4UA1Gcl0I|9nh4=sxIaC*0TYIAY5?RYy-Iw|MeX4M^d z$tJqu&za;F#$1e#E*UZ^3QIL3j1)nhr0=D_et0muL`vRc^Y1K@;gH&5oVbzL4XguP zLFta3ky7hS-&2jHl4^DCRL2romS;vtz~5HjfR4FQrw>tu^`hWn!_W(GshgG?^*hhVq%p zQX-3tWj0g8g*4_4>RGJMz3)|0R>{7(%{sHi`J&QJDq3@G22Afl z6YRoY=p9$8F}(x7U1w8WNM2#*T59ze_##I2PGI-CSN)%Gzct!VPRc_D zj8%CIh(ZmrcP(Qjby3-AgiRY2l5nlDC?z8{dco|3ij9#+lU~83obgV!hKyOW9MUz? ziTh3E)+=Uq_P)P`6}B0yYcmRP7T5mXWXn$EN3x6AaTSK-K-)0mo7B~9;ryw9d7XV< z_>AR?WfnsruVqm{?T*HOIbiQs_@><8EY}X10rRIP_b?Lu8qvq>}BRJpFmU zjnGhsX5VK$Go{WH5i(j57Vb{1V|Jj0-Dz)g%BNrV^WUkcsJ}cN>SbV zLy#Hq107>iHDz;Zz?v`Da0x(K#oMUyOhIO!i<8(!Yd)CTs|(B~+}KG(vQkc&Yq;5S zHx7)Niu5Ns_CQS^H!#hdHx^H06Zy*m%Iy7)x4MG$)Ii=?9Wp*hz%Ie=SMo)`SWV_^ zy8v}URd8`+DR!9S>P{Bac2C~on*J=XOLx+OeRpX96(a4PqYxoK zllg#iE^V*4kD43RAhl9LV11Zky~qO)VIN#^lSkTnPAuZUMJD z{1F895QDn^*k+6|-nt3hQd|75{GeKg`n>IT~4&E6f^vnWL$LBjv=j#db)C`2)huJk@ zJDYkLWbuWR?y~TVlrFxI(p?#zkma zPXhz{qU3F7BI9L2W$7oghFFBlX1l&FsPGT2m=E1lG@GSvgvsKW>%=Hj7J2r*TCaL( z%<9{6*MU(2_R@$9ngK=K_d>g-s6VZVVnQ(m@EDn^CoUHzC^vwlskh(<2>E}hn|Ta+ zJ_NrVw&Q(wp_F4x7;i@&(zes>mU@x>6D2cZXqtwxl#p312rHYL$&?Ghyuum4o*Lzr zT|~~R=sbqp5tFe}tcz}l4aPBfCidM-y=rV(nB{f;EP<-CA)hA?0gg2`55-lsE5n(& zXv|DagD9*g(vwUs44E)yPHDTz0c=pS%Tu=fr4+Ny#!*5^y*&iw8)0JtnfKX=Ta9A} z)US0W#%v>UV|(yEGHxSzblcgkqQki>D#Wy@k}%S!Gw-{ZEVmnzj**DU=TCJvhV4W@ z^bZFF6}Knt+Y8F~q>Va0D$XK}kBY9{ATMlTHP+H+Bp?-I_e%&PkL+@lwGfXJ(#;IA zh@*%>wkeYVRk-BWS+yP z-uw}72RndpDlN6Rk;?wZY*6uOm>1pN z0w*^Sn#v9(hKvTfJlTxWY;uxdM--H4fH9iQEoR!DDLqC|O*f;7k_`APTLxUbv_jFh zs2XKoAEa|lhgr!MTI|&2Ft$AI2e%c=mqO+uYNgBwaMmtrrtd7$){F6DkBB%s%$#Y{ zH!ZVHQjRVVvEAbp3^kN{R-AKWzfjP6xMebCE4IxH_h8>-GRs`2kgFSOg_xD{m6KE6 zp2E8ssRyzz%$&kkZlt&xdE4zgV>gAB92$2tD`c-_=#Fly!a+#`eN=p5ZM$B=fp9JZ zb~?uMoTnV9WpU!=X;?u}lCBGFK-Yy=Ht;{0<(JAd%~)asl``Xu4p~W{kcC;!+j1xd zQ&`0_U4dFt?D~=|e%ym5ifutP#13F7Fr#hA6zodRwm>MYqJ0;6mxt!~NiH$|2@Isk z_t_T3EH||%F-v;3Ez$8XhZ%vfZ{_mWOf1G|nb2+NQQFY)B>=Zw)0dmEmGhN)b6`(c z0!|O~uQqVput67E*kRfEvdr4sI$f~usk=_KTi)t%{JIpxVQ)}L+1%KxKTIU)wKym@ zx=bi*VBqA%pu*X$C9=4(%5`O5vOsg>x?A065}K>j-VPZH7zw$C$d7UI^0EhShg>Dz zD*oz+Nor1SxunyUTM?nMp^^_Mz(wd>(3IoOIAkv6Z;QGikKErUC`2~ATr5_u5sP>6 zvUIbBFQRZ;y3^!B9Me|*YRWbK7ZqC^#Mu_gnu%Ge7AF`5zllC_Ug6x6G7uh^CnL5r zv!m1jI62TewtKbzbR$j*t;==lRo0DCW+YGbR$R9d+t@8;C}ZByE9PifyLW6b_KIyX z><#q3{e9GHf98V02eP2gw=t5v35)UaSM>X~t*frZPO63OH@|(us%Nmdm&QcZ&WrTU zkz>?=jbP^0<)R43*i}2_!5^+={uQ%{_ZdnP`|jdW6Q+MC6T#S8*?FM3x}_Tfa@J|n zT;c+n9bw(D&Xl&Zlv_s{lbY(qX@HBM=%_&qbQ6Yj_P~wp{L$UnX8*8Ncem+=!lBLx zL%PlVaZ`dWZ}&y??Hl&<#_UtkB*jd6I|{P^G|XLYb1Hy|z@(L~c>$BuI45S>q`KP8 z7D2mvv%l48Zas5vNpbkyGTSGPplTRyOzJMvq*XzKxUP|-2KNbDhir{89xyrSoGu(( zfoZy#K!h=BTs6>c$h{j)sRbY=HR}l9W;{kidnjiKe!r0lQD7Kxy%N0xN1XE z3WMR1Vy|rA-}@miwxXJ%e#-pF90ehN&w-^p{ZQW~O17}BJJj4pHmR|e@h^Y$9efo7 z9Cu|$<@=8wJP#X4H4x15vKt^X(+ay9r{2xbLn!%f$7I6QJ9|Q}gFkciLb^YD%$&`I z>1J<_7m_%|S~QoP@o1)idmgPO6I^X{A*X}+bH+x8#U?X`=g8YRm-1^7ipmVGRxAsW zKDEvY4F1*HAR7Tk2+_9R*zu(m5O$W&f;uKhpO2 zAJE})5fq-eaL%_g(iB%c(@4s5pQD?4wox&sx@?U6bZL~W3-fZuCaG=@X0lb9K64Sp zr7w$fHbkCgrWN}FDF@cPRoNkE$|&X*0LzlQl)eRhf|Jtr5*N}rgtphy@zof6lQ#4` zHcfM9A?qm{uvRG!c4J>_&z)UHG3IK&rH;Ia?aCpcbylmSZb6v4G2Bu#UsIzN7Z~ze z>P>fj0k^YmtLvzp-pI8Qo)EWF$z8_uv5pAkNUpI!x%*l?*_@c|9H8V1x5gob+2=;g zeK&5iGKlOZ{jWRi-xBmGG`djK014vsn*%RDm)IXOn=&Bs%vNQ)Gy1VXf zujJOfT5bx!Eo!a>*tN&3nC^6%+HICX$IQY)w!$jm{M1E-dB#u5Ns3=*T7)qd*VPXb zRc=aIEvYlo8D|kXf$3cfr1gb6AI`JeTTI#0WF7>T8fjWNV_4VsdjxAUvm)^`A5@DS z0R~@JH^S9}+EP$4-CMT@)@A|hU8!hs55sB)ANi=wI($o;+5uBl6cabsX(vO&+`upw zf2iBGHVSTvE9g1|#XxAt*frjSzN*kHYj4;pP?j26)=2LOvS1rIOCE)0&g3i6kdHxR zCI)xf8A?1-$D(aSWpZVWm7Ork^=D~R!x^!d;9LdNor1tP(Oa_DbiBq*RJJr^s_Q}7 ztrbpax&eYLTwHO|%UALK`ztb&Q%ScV=+eQ?&B}q1sQsVn(B_Af~?6pu`uCy2Gc_=7#S>sv}u1ffmjjo@WI%rwOxw%&F-lXll4{B!U z78_g2F7jY8-OfHB;7WbM2sb0w44=YqN7-hBf*B=mG+m%!!OU)=)P|kcdPUyX+WE3| zz(BQ^HwVJ3@iu`ZfbD~azf;^fdRM9Y@p20M6`Kx+`;M~g5m}!*tM6((<0w0JvOZzy z8&pcqVQyN~pN7kdXj3!h+3WLnmvS`dJ0r9Kzq536z$mMFZwyqfqD6_rHemc->isdO@^;{H@Wt``FT?+@g7-kR)0gAwNUx~3#j_I0WN?y2Hz9U-v?D6ABD%luRw)=7%JT#LB;cH zsQO!YfxC}}D(}fq{>z~9b2ilbYoYSF393Il2P%KP@V^EgjQcvM@P7%Fzjs3A=iN~4 za5q%Gz66!dLr~%WHTduFY}~(q>aQyY~RH$}Z4i)~q@LvxVZfp2IAF4ja zq1xq7;EC`xQ0d{NrPln3ZCaCrthAQW? zpvw1rsPGMVJnV-5UqF@PdZ_xm2`c^fL&f(=sQ11Q{J&7;_zqOKp9K$EU#sz7?Q#60 zd_NcJ{VSmAwGU5%*FcTuw?Wn02ZA4gO6ODI{(GqSAAoAdhoSn-Z-Pf|KsMlB1fK|> z1~MC8^!1C^iO1P|Nj?&G1}|08%RTniQdI8;Bq3Z4vK3)OyiLXD@-LB01) zsPg<0syxSCQ~o=|Lsuux))~fAE4s>C0q`V+2rxAg=gcw3@YB&LFMN?Q1$U4 zsCYgPmEJd?`s;r}gKR^7ph5K@-@GpSsZ&$-Z;VZ-ahIszY z;O$WHehexfUxcdv2gCi}Q1Ko1bnh?6L4{ue4}njG%FkMO5Zn%j;H7XWycQk?KM2*| zJ^|H#z5*4`!%*e^FR1j7pp&hFr@({ZE~xr{9@O(z_+JAT;(j?i48A^|za6UG?}WJRPowiuX!*4%`D3?)~u5 z@Z(VNdB_l9uq40ki!d&B+eaKAO& zcZT~@;eG(Be|{G#{U1T)|39JHzxE98cLzebp8!?Ar$W{1a;W^A300np;bY(~cmx~| z|J_ja|5B*`C1PZ|4w)`yb>zk*M$GIQ0cr4Du1`Z zqu@uN+UrXYkze~qsQ9y;^g*~19u2R9XTo{#j_16KhJ~8|8A)Az9QVOgOA01bNGK0 z>iti_BjIPE^7}QYdj1!veEl4%JO^Lu{zpOO<7BA(Erp7AB~-c>LCxEjLFM}@sCZrq zm7nXO@_PeR`1itN;oVUA_}}nx@Vij;^y~0H9zKIg?;NP-m%!uUWl-<+!~a^S_ud4R&ikRt`5CDCcmS#&eH*I&z7N$N zzlMtcpyznF6QJty+O%DoIKU*|!+za`wG zQ1#Xiz6L7Z_re3<2cY7=3#y!-h9|lBD^$GC zfvUGARC#Bh#=$jE>HQg0I&X%m|MxdU_Ac`JO}r0;WOYl2(>4` zKZhB-1uB1^hkEZmsCs`0DxIH0jpy1QdwK`LC*pi;@NB4j?Se{w94i04aK9+ruY}6y z8=%T{GgN=P6{;Mc4&DzH?%Tni!eep&7OI|(t^50@LG{ZgLAB!rQ1!hND*OaI2VMBcFQM{(*odcd98~obgDUq+!vBp>@BJ^Rdb$g$JwFQOP%sP=wA@Rd;g{bs24e;-u%Pe9er-$9k<0jU1)L#Y1o3#j^EIN|Go zCqmWRRw(~Tcm{kCd>VW|JQw~1D&D1&p59qd?RQb|QmArHK-EhND%}^y^H)RV?`=@^ z|30Yt`Vu@9eh2FPgPUHi!=dW&7%2I4dT=dNJw6{Q{V8||d=WedUK`I}4b^UMg{p`5 zhWnGjFG1z+Yw%F`-EjXHYCiiF)cXfr;rTiW9*FyKQ29Oysy@#S|BX=P+YFVD%felU z2jlKQrMD-ZzbyDFsB*j>s=PNr<@ZD3{t{HW4?@-Jcc9wo=TP-<_?4dSiBSD*36%eZ zP~o>i)!zuT@c}h1-U1cRT~PV^JXHSfgUbJdQ1$xVc>W{Ekg5GF{4Z;Hx}#9__kwW0 z5UO5Y5&ky>-vyPg_d}KE9;o)74gb%>g}A>44~Gwh`zKKE{SvC*96H5Z4VSet@Vij$w6g7X*-dac?lxQo-wIy_zYy-N9oJ`G2%n1o?Qk{xXE+Q`nf7#c z!=2u)A;4b(rco;lqkLwF-q1tyNJOXZodj5Q< z`o03H{br!r!{N7~sB(S?u7yYL^YZV6dVVcbyf;9V|6Nf1^fst??uzI4!eemX z2OkH&2i32C122FJuA;BNbx`I04ODp#pmCJHBjKaq6QIhq3@W{|pz3iol$^cZJ=G3$KRC&l}*e@D`~2d?KEIHJ*PTo`CP4RJlcC&e;qmYysQlKU-fu$H*DK&j@Or55cS6<2UqjX3Jy7B9g};LLLDk3KUG3%g z27C>76;3l-lfQ1L8*s=qU#;$H(*ZSsTLD$gM=bNBJ^INZyi+Hpg0 zCsaD4a1q=S?ze^ePN??!8dN^M1=XJp_%qMvLij}7$3XS#v%>%B@Ic(Vpz`&c;1pE5 zUjtR1*FwGbE~xU{4ONeyg9pL~p~l~L;1l3ap~4+;t(WISsQAu;D(`xz_Spqh4^!|U z_~LNCJa_}l@V_0ZUcL;KpMMViI(X#EJs+n-m17w^2wngezztCOxdf^np9xhTS3u?W zl~DC}D^$5Y2$kQ@L%sKPsB!UKsCxK!sB#?o=gt$L(pw7k-YTeeSR3xKaQETC_`eAr z0^c6I1*&`>2z~+T{fD5&<$_mu{XQD%{S)E2@Kksfyd188Z-7hSXW$|5$58qHIaIk1 ze5K2+ce%yu1V|pA*3jRC)Hm!{95R(t9IR z_*)c+s4l4Z3@Iv@0cqFX7-s3w8s@$i;Q{h=~2tErczL!I_ z^Sj|Hcn?&4{S>OakGbC6OW~7nKOL%FcSF_F>%#qRcr@-$LcRCZaQ_%8{sZ3N|AsPIpP zD)$z61Z+UH%M4U|zZ|L_u7`^6#(4e#cnt2pg^K5EP;%*Cq4M>pw|G7?sBkNx%DoY) z-(3zBUo+f$;dwHG394M5gXh7oK!rQ}?Hd{V^0NUdKhJ`y-%+UY z?}4hv*F*K6w?mch_Hh4gxbF}5!{PoJRQwCy;o*;iaxV|}x#8XpmEY$>6I8oD z51s~RUX&yz^`n1<^C!>5Pmz{{|xp1&!GCt zZ=upV{5{?uj)cnhDNy}uJv<2hF;u-wK;`>o;r|Y(_um7Lhwp>R=Vyce4=P{(0hOP_ zZt?ziJUj^Z3aENK2kQL`pu#^3E`rlg`F#^qe%=XH-yeq={0fx3{3+D?$G_L#I}<(y z_p_n${d%bWeg{;){uEUD{|74n-+)TzTTt!w1E_R<4G)1w-0Ic{g} z$MYMZ;=4O|A5=QugNnEIK5v&rQ0;IYR6Z|(ihnr#r=ZI9La6$>9;$rrg6eN~hWpb{ z>3tchzPx%hChN6Q2E{Ues9NdsQgYt-_zeDBk*HHOB@Pl5jCqm_CIaGO9Lp|RV&o77S|1W@Qzdhmq zMyPV$0@V-x7Cs673sij{eV3PKIaEJ57pkAEg=)9Upwig`75>$59lQmq9sd;`4gU+C z0vCSB>vK7@c%bU@GI$ic0;+vq1Xa$P;4$!hQ1O2Xs=odas-FH8D*m5AmE+J4yWBht zsy#MB#eaFQ10Rd~8mRog5vt#P5S{_Q36+n>{I$2wsqnG5mqMkx1}fh>pvrRvJQlth zUIyOrnaocc^ka@gpA3 z3aIjK2>vltJ-iUA{a*`}{@bC_eGkmw$D!)=L8yE_3>D7-AN78D5>z{%2bJDBcnlnd zD(56rJzN8ihp&Sw$8F(%AAB6{Z$tI7UqGevxQ}^$&V+h?E>t}aL*-{2YJTrPmE-#0 zEl~A*H@p!36U^Wf?)G>tgipbJDSQTe9b63`g3A9%ANTZ^L$&uNsPxC7#@E$Q`Ftrn z65a?^zPq6E@foP`{B?LDd>E=d4!FnPUjg;}EO2Cs!m?*s5S_<5-C--fE^ zpFp+Of5F4xfuHd59SN2HRZ#V`Hn%9-4VPOs$V<^ zm5=X1h5wIm{{kxhgFor@atu^|Tm@BM=Rq3>Q03VXyb`LMFM}%ATcPUnW_SYpFw}eZ zh5xsq!v6Oa!)+}5>))(gi7~esPI38s;58rTTl1VP~|xR zs$Nz>#rJf$0*=6^!q>wm!oP!0hChUx;c2s8?iWDGzt_Su;fLTV_%HCS@Wjt}y?g{N z!~K1@79RUq_I}{A;nU!I;bQoGD0zO=y}ti+J{-gSGI)`m!`*P@=dk6#_Xbye9@_%$ zkHeS3r+$I6YVaO-DqQkK+6Hb3-UMHQ`{z*k+V>@NE%+XI9bEEvUhj9qChl3Nd@TQa zufNyB1-Rc1)vs@cPkIYCcFk-4L8C6f#<`E z?{j%^EtFii2`c`N2k(V?|2`=B_dTd^KZcSshurV^It{9wmO`4Q)`JRv?*I1wwH_Xc z`#DhMoq`9$7YF}5_&TU@_!jsWco$TCeg>-E?t`kI??Uz4Uqa>Y$gjHp>F_Ar=RxIj z8+;3FLbdk+|HtEB0o87oz~y=lm7h05#rqDZcKd6ncIWeBcYz3 z6g&;;{iX5z3|L!~t?NupHQN1NZPCipdReoVO?P_ztiNx%k+te0jn+`MXq7+c*Y|eX zovD4{zrbFwhikf{lg-_Y+M=6lG5@#>l)ovzY-6W8 z(i|IWw1={1cV@a-uhHGz=&D-UoqkpyX*IHbCmW^CX4=isdcTqFY4#_xiAKB8#Wme+ z^m;=)&YJD4(;eegg4aj;&D{#SPf@m-qm6d2kzLu?H&i?8jI*+xjj8Dtk85Y=SvhaC zGuF6Z(P(FS-=gzYm_rdY+oP?SF|sh(AP>{~y3L8ne%9MJHPUGf)zV8d-7XD!`MyTI zTYh%RgH`y^|SF#H(NJ6oK4lcSI$f?Sl^iFHX6Sx z#D=Ng^>llqOL6=4iQgH=_U7J3tF~sOv%5h9w)?z6e`wUh>*7Y8stm`@X1_&bQK$Kj z?4oFcwXM$RmA&Lof6Jy@GZW2rcr~&Ot%mpbHDhDhhP_m2ui0s5J7yFuUYk2KY{h3w zW2{MDc(%2%C%vD$Q|{vN#huQT`LoS++PrVh;RadmwC(pU`c;u&JsYWyUOCb2%(NLm zQ`D6jyFW>oGq4z0ppq)9o$ONbgK^>(i6_mSuI)Z&{AB&a^VyQ?mBrrJasR z3R*Mk^%-;#%M6aGY_wJH^%@pheRI2taB-vC$r@hQ9@q+{vQ1~x^|3KEO=sMrFWw*! zqiDB!0KK8xs!vZ7&?0CmOZ8T^uGOfwXQnCs?s|K)F;-hM-lv8rwmMGLWxiH};XfID z$zE|;=N+omoM@|G)Yi1Nc0;VMW?|r98%1ls4YFrh??5Rah3NO|qmy1yGyO@Di#T}X?z+ESxRHHz z%HmJQ8okkO(|T9(nrieJT}dR>R5$8(JLxB0UFPNEqx6$Z(}m}FWZSIU?5jL*nOOGn z3NG3q+oXY44q+a>vd=s*Z|^XqG^~r5{1x@?ndvl+YHJ$^R!ME|qg7|Alg5Km$6VV$ zc#*s5PPb1qtDwVg3)q{Cb_+#G9+)akMnS4OAY z+!!Z?av1sU&?F;o26})2Zo@Y@nJdU6uD#h#dU|bb7fGTD2v?(i<#eY>7hOBkqz8|X zlbP0)nPfOJ28YH(AS)_zu1|FM7(_NCO1~>ld$n~E4lO{v>7P=}(RIw%29kHBb#zoJ zE8E`fjLnSpGpkxf)Nf35y8CMD5D$#Xb(8frUBzLOac{als`6^`++FWBJ2Sl``g$4D z3y-EX#r1}Gt3mfxKobwHKS*fy(1S9fpUUb8QqAz*X)RoOkIBRZW}Asf!rWwbkMY&l z^q_>8ASAJSCwo%z8f#2RY4NUS8PKG(ZnD!sI7HFI5ouODL-u)V##@`v6`GR8HU`6U zyvtlrM-1&n5ckjsQFcbUnu?I~)7{QE+L4Ly);{voL*Qz@QsxogDvi~TS=_!H!gIB0ar?~8ionG-zQG`nZ?MfUD^wE+T2P_y`gT( z(TGnUdz#EbUW48pG+R(B46STby;E=XI&`Qs!FI;Sv(b8cH+^eVO=cM{=Kdt7C~S*P z;s0haFs+TrUZ*uP)y^)eQ+E3)uUI^!A6Z>mTkdMlOpR#3blT(13A7XcMHdfo#sjH0 z@^&?+_$6H!m0eFXDF?H~ZR$BB*pl3LMUrZBeX_aFOtVZ8CQ+8$!;R@Wsyq`*^2zn{ z+`|-xrJO!(-F>{Flvx;XU4Lw8qjC zbD&igZ)u=ZJf<|swVG{)k86fDk!gY-%62puxTue(D27uC!6#?lPe=VVOKPaLUMrSd zzc80nsoMHRT2mE2)#aNuOCnT~%D=ubGBd#tHAraBa( z_066_C8nvgmwRkXYPPEj5uWZxMmKgknjR{CF;yqOF;5)*mmzAZc^*7}r1f{9y3cuz zFrdCdD)ux(_of@8&GF`_Vr}5VdKKwQk?WbSKTF26_=+--ZOSOEzcQwDMJ?=F-B-D$rbL4w99lnz3A(gQGp?>6)J`3TPV5Qhk}fR_@i1)ed4cYax*WrKGh0ktqU^ zkLaG~!BoB1X)`}hbeoKfXt3!nCW?~Fm7%<+cw(U84!0XaS~L zX|80%&Uvd}FEwlmT&=wq%+%ZXFxlB;SdH#C$L=Ma1GAZD~$3Rr!*S@S@8lqVCfMt2IA zrVO7KQ}{4Iv*;{Yy`_<<6+oYUMx7#{(&X2$_Mtd?M;qPg zeqz>Yv?tI8!#mr9Z8Zdo8Sv=fxgn1t>}`zBFduKfczgaEEvws?AytnVA<`CX(soTW zTOXO>sV%e}F~CeGL8p^F*mZT~koJ)^YGV_9VPl;vY{Z&6BIAV*g8@~c>g?5Ww~vI4 z%`Wr4WO!{OOU1F;Mh0l#*W~`w7vdYGV2)$|LtC-mrfk};Jq=r`hZ^EQdqN?P-)k|$ z#Lw+MXC)^}EcWwC;F4Fq-jA345k=^r%9q-Hz@2SG=%i3)4Uae6GG2OW-NfG3uhM(G z-Bp2QAFOS}(3yIXJBCLQaBcrhrsyFS#(vsTVcLtiq;}DER`rdk=FC*-Ckw3?%rF#s zSu!3Ire|i%k+9a==wber(lu1OsLqeBX_{@sxlHI7F8t+IVm6!>bd^}+alhedSm)d9 z%j1DZlgwAFqQhWc-(7FA6Vp=iG|{jvm&fdPy)`{qx0T$82C%=tbYTLVH8!K)B*J>8 zvyo1{ix9e~)fq|4_Fi&DudZFxvDSp038q1Hs$T8lom)0*1BA}q*&{g?($-OK{_sg% z%bi5PXjhf3%obm~a>;;`_LLDXg;_N6aB3fm2^}SY3}#u z@=3FM;Un|UJl;0&=JBV5w&Ax4#YgK$gz;2u6N8euY|fli@i$qssjYF`=M7_KmMa$i z4ORkf+9Ef-DHe2-nYXCaEewiGBeuRxWJub}eVGP;Cz9E_>medYH#+f%qf<$V!GjX8h@|HtqEIz$8AecIV8Ww!h5gISUTEU7r_dUD&`j(55jUs1 zTScg6vWRxtNXbo@L_G1d&>X5=f)u4?*muaL=(#FK!|eeIgEF31T&mb!?dgribgr2A z@+@zl%~-q}wa_pfz1n8%F|0y0aOqV%mOWkn3kt8q~#GS>b6VX;%8`j=Ha^|_LE&ABds_?r`U}0Bx{WZ94;0S zUSc~eU~V->#U&f6HdR~puT7boI};PMINzSfuWcBl`AJ$GwtaGw+ZJtkj_0aTZk(vu z1Jj&XMM-du;nkiYjV-aH-7Y(dD+RWHn-x1(v|cqKus~(oWO;I5J55kzf#7Z@W34=xnodjw_Jt5e z-H~juG)>I=`!cCwOBUD!R_X@D&ys#n@+_*Ebn+7cg>M$d<^4Q$QBZo*yr<8R4tYAX

    J2qpZ^vUk!Yg^5TKCup& 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%0A`M&M> zQ@982y)Sn4I2g*k2&%uALXC@6Q2B0#v*8Hb6TTg4oZSRxz`umb=i{FDLVfp5AO1tA z{(B0le7kIOWCVrS9Cv zK)IKA_ba`71nz_X8=>0&2B>=70#%MXp!(yp@C5h(oC%+X=fLOSZt&&fu0H2L#XBFK z3NM37@2{cC_qT9&_zk!Z{AZ|q{|zeLpFy?PZ=lBCfeqK6bD_q~>7Hvm&-Y9{JDzX! ze7EPVo}cpklIJ&|%J)5}a{UOZKK~6hZhsEduLn1s|6x%5b~IGEPl1wKtDw?(4ODwo zz5jNo`n(;gzixqQhc7_QpNBmE8!G?3TTUN72r8d(sQ7P!D$mVO>3tR|{)2Eo_${b- zKk)8fz>9G2dWnl)fv?5A18N-nGdvsq3@V+4ZO7B0#@#tk^;rW|jzOq-KMD_oZ-EEF zKZmOSC*l6^KDZZr7#;v0gPJeTK*@W4Kz+B|^Htuz0oDF*@a}7%#`6uHw?UT#0iIZ*THe7G-cz=Po%pwhnqDxLR3$*Eg? z_&qSj{SByi&p^d{4ys+EuB+!ko(rM1A5=SxLbc2FQ1L$qUjjb`_lExfHQv4nmHxkY z_v7#&+&_eBpI`a#-$H%2=XRIQOQ70g4wU~wsD3;P9s*ZGeSe`3ABLJ|4XARw1*%;? z22cXh@3@ZG2cqlw!r)&Q+ zpvt)pDxb|zS8XVHag7guCse*4fwSP>LDliu)?-t$ry zejrr;9}5qIi{Kjg3OEnm==o)+`aAz$4%(Q0+4a zRlac;!#Bcp@c%%Q7& zS*Uvc4!#r~aJfro9+dw|csSe&W7vdC;0;jq`3I7D*vhQIJgn2{Vsv3-=$FHemhh@-vX8H$DqQ$0gr`` z!=vFYSG)9%g{s%fp~mStsQPX6{@bAHbs4nuq2|RcQ1$yH)O@@TD&MDl_^+Vy-TfNZ zPltIff*N1zq569iD*vmX#@`K4{dzN0dwkl5e;%q`9)K#xccIe%iFfbvMwiZ^Q000V z)c0pX_2WvY_B_us@!>n6=HpeK*F)9+{ZRG!EL6LE8LA!b_xv_I3ip#x{j&R;T=|cN zD*tS#dYuDR?oCkn4?}%70Z)cEL*+N=`8ZU$e*;y&-L7@%&Vs7<(NObc5!?-~@$L;! z^%(YSLbdZ7pwhV+DxW)G3h##}!MShdYyobCD$l#%Ciq3Da_)PbvsaxAPs9CMI0|oq zYv6C-&2ZJ9GPmLPUG1zSwa38Qod0sD_8x+J!V26Q)?o~HLgn{o@MZ9$Q0@2-TmYYdYQIC? z?)v>WsPMT^=`Dk5&-0+#C55}gH^PnZtx)kEff^702G#D*L#4CN^{!u!^_&A0e<3^) zE`^GJKHM9QLDjDVHE#YCs+~RrmEOHj?e$Mk1S;ME?{xj}QmFVRLdBcw-HV~(oerbf3s1=6S{ApO zStssHw9>eq45#&hc=jR}&`EYS8_n?v??1ynu)t;Q%2;iC8qKc8wN5%7m_@TK#U##Z zjnQsBX_pdjB;)A}!t-zc;HX)2a=fA0PNN0!1-0sE+R37Y{#Uec!GhWP-5HA(<)Mr7 zUrUN#3zo!N((zV3>7>yqx%ZisW;H!~cBR>xn0@AabHtryTx(S7-D($&J5IWt=6KSnRg!w0TU5)2o7>ZPMYGZ2 zLz*H@yw}<^sitl3*i!4%(`Z?xQ`@f6`X4lD+^Tm+YiQ5Qs?~VaPRf|onvHmKSJClW z->i^V*=Ivqt&s;|8`B-}s(Lz3#<@G>>Vwxdo7?iR^~prD>!J>&6s6g)psiWjE;6ii zGwK&t>PeQRnOaUQHkgd2@!GWAj8m5(6(FL*ekXc8(!GGA%@v zao!sL`qhb-cRL+gaCuVMHrj4>8%ll}-*~NxR}R~f?xeYjxN?VB<0M32BTn1xW;>I-R64 z=31)T8KWdVAA-U_jZ|~>)fW26HHLZl#wgl_Qq-I6Qke6IH(9q$^aQw>QucDqS4wT& zIHRT|_321ws_$k=33)RoJQ&$F(t~q6X)}Rw?ToiDsTA}Gv2knmiiA&w# zI#)r6O$M@eGcOtSE5?!ro#kLtK5HcvHTei*YJ1YIHM?1u{8@~YlI*JOOzYVIU!|38 z@~EccO{A;ILgy=ivtq2-WJdT&>srbC?HEfNHOyAXkYJcf!9A3=l6KNT1_d8CrGu-dSd2`T zl&p5CtBTf_cFN*~6sB=p(M=07N3GFKSj|Cq{q*T<>04!j)Wv?Y9NVR zHBJ^90ueAK{UV_!sJWZ|rj}SKBn)B%uV!yWBFxRNJYqShl{C`2GRP|JCh9{-Y?!30 zm3DW0xJc5{sx@LJM>mgXo_Q*zq>C7CIx$0~1%wQGt5{?*UTf4`sk83zyq>IDZZVyy;&DVtj2P}4YVA}z4yKzc zPLW2IFuO(&8e@6Uvb54{R1;b$AN6AW~HlTz;}LgN2A_MOj)6rChAwV zo2@GT@yc4;?-5q9JO+snnZwU+_ggy*`{lP6_B-q^!kQmMX|A}hYM8)TCFKM4qF$@U ztf^@OJz-lqVM<57(L(FfAf~oNr&z2v3~7GTtQ$0j*4G-_vMC;3H7dn3l@N6 z)8s1jqo_B)#obv++pSK-#!QTNG}~1_C~dDsljeIi3a~S+bP-3pt*#-DS107KnvLeLG4tEc_ik(#ROg}DQ358GM)dwJ3hKL?%A3Qo6$?}=RU z%JpTRjtioo&GvY?`TN}QYQ}1aMYFTQxES`k9BMsfVW!p=-|=-@71ri8THR%Oc&)%W zhAPa9hWqUl3yWhvP1R|+YR-w)490_KdbRF&=_ks@C0#~i7OzPgDe@yFPG&piVN3_f$>n#CVRiPHFbS$xQ*2CaYNE$2&1Ior$d}XvjT9_p|x z()DZV&0)rm*Hxo6O>1P>)Z(wc&Z4zjHmsMSh>_LYA$7^mXoqsIc%RVY&Pf8uM-AnL zY*iP|>2uP|+D3*ri`;g$*Vz|mF>w|b={RR!oF&9rQp9o2zBs24=aeFjbN0nKl{ly7 zaa0!@`D@d9D_VZVZ}QvU!h46epsj0+G?9l>l*B|8Mtvajt)2G^(AReY$Fj|h-3t--|R_;b7nFZd!B2dU}7_a(Ev#@7vg*~?3|i* z>@=9d&b={LK>S8y9daLG$S%3bv~Z>={OAn6$Y|+$+-UAl>gG^`1-scgtsoMZ8__~( z_TXe+$kb#b6*C*h=-ZKQUCJZ#I2|9Rj62v%^{lZwG`p%*O^0=Cze-CI9uy7*m4Q;9 zAc=~pe?%n(9Vk!Mvn%deF^QVfLc(`htm-a5$9GFlDL5dui0P%ufyi*G7k#w zKy)4x+^GfeIQtUSBehl2lwg#AI0%l=W?8fzV?@edGVXZbDbt4j$-)gqUYTZEMpzKEtFG6ZQh0FzQkoqsXi*pWQq+%KmD;`K?;K zNxL!UYa7I(2t;>VCFX}$DT`^uCpPU#w>d1u!6A0yy4MxEMzVOZ)nqxVyth&L@66ln z6TQ!v+1W~4Ztri~#|`N7tSzPC;(dBXi}%xhcSfOhsmS)V^Ow1<>``pgdwsEAls&>s za7(c1hvi@=xXV6PL)R0f?7f*At*hOW{Pb;J`f#Xa#e6OIkpQ!` zu|a!n)_Fy^k>)UUSMt>q7{($-jF{a_d=e649DC73tQC9C43plaZZCe8R+^G$(ahu% zHhrb#Jzn9>xYLKa*;)$o_N9`KCQ3PNH*uz>YW`Ew3#S|96l{2wa*#V7l<8zVWv^Wd z8R9smGFJBKYaiF1)6~)0c}i*A>@A!XcMiE;*WuZQF3CNV#XLMbYi9&8=@ zm7AOSow;?*uQA6eSZhQ^=d<%4z}-msBO_KNt!9(}LWuYBGC~9SOi|>?Rx7rU}j6uVq z62YCyc^0BAV%2cR6SjQF#_yM5G!RL)e1}_vhXbmf2ucV|e9-JA_BS3v<)A|uhMb5h zgtnXTrd_wHT72^@jkpkT2;0&$-rf+68K>FK6(Ws+Gn06%osOJ!-0{bqjXs#3IX~fF zjUYAj+s*_(kZ;&-nDb`;32v|0vS#?jGX!iwU@en{GR?o0m(9si9M!?4>}QfT@dQ64d+cwqXT`}PrG#iC1$viF(y&J=tuI#Tb_de`G`W6*reJZI<7w166TC}F(1 zl_WQEc_+n`6_U`PahXgloTb@Tc=k<0-@{5odTUP+y_Zw8d<4s`s~O1o5XWkmYmi;6 z5B_XKO)hOih32m=FS;@6;y0*3zL<yNvXsf%U{A^l)U8N#qODCajr0dOIniyIDRyWg z)2`fE%vj0l4EWGTTl~GF7>_Kn&-ACHg`3m#Wed*BY5q?2w4aFbMkX~s+JYwI4t9cG zV^>O0j#{V+0~YRuHOgcQg-Y85`DiC$ijdCiZMoZlWz&4Z=GRHPx$ZD&ZZJ350)g;n zRk1_Lo;=)g=2fh6QRathWUfqnFQYsPM%@cEzUkeNasNlwQyoIEQDhlXU0dDZdMz7c zHJ5e&h3m|MHjdV87hPm=aW|5%Pi3lOxY2f!KmVHG1`f@25r9|k}Glx4IgcavJjC^YP|-d{0yV8 z94mXi4614)O{=66b615aM#ikMw!i1ZO)70T*U?2V@f0(Mn#Ux$#V z@0HA{{6yPs7f-zAFt)5bIZ}E9&64un)U25@b z5L0W%SgpbahKnRt9M^U`I6zdj+Wt6Sot39=Dus4YHpEHNlEzf$rsoJ#q`5;q5z6ca z#UFG@#5aM)f%0@03|Jr9W<8*u16Yrk{TbcCH8ktgDWjPh)8SjQ;bxnahWlXpA4_{X z5GC8)ZjyigTQbV+dhAjYfBbEfXlr90i`F(B;mMk})eMwspR_m(QDxLu&Bp73NXqtZ9(*5hwXeM3kf>i&6_9IBa`-I|rLgUvo#RRAPpjHs|x+lKKpU3|gV#5s{u zVe&5YPPgSMJ2D^B$hvE*?+ocjiMp!a-FqJDqFiszvFrA3EeS%udmrd`@E#@ z%5dH5?GCj1JiV6M=ZhxU>hY2&_X1GE?$r`t;hdTAme2W1A3&mX;FC17f(`(%GBtVwN9h9Z{EMc|A8Cqc44C%AB zZdpC=^dg?=MQMB9ss_jBHXBYKu61T&k-?HQZ#AXNmc|VPDbDPyMQ2E+^7E`leC%2A z!ZT*RYM$3Yn(d`AW2iHzcALLwVDZ4hnc~mh_tYKkQpA227v7Uv#)bDC`Gt4)%UyV{q6% z4Nl(5oxvntvS109-b2iAf4zL^T^b^*1y{;zSPA27@=o1#w`$}U;D7(kcb@{%jucqJ zD;=a$?b4o0@Z+d|C~wH3CO4fctbk|;@#L+t57AJjuuk5?vsxdf>s!O={sWrK zT|11KcGx4W5>+ilMFHJSIhwiU27~U>TN!8*wg5D)dWA0Uk_P5HeQTHN_=E)}e8!!9 z8d5q|+Mt88CKu!o3^gn5K(rpUCcQM_Skl#xd-&YWCvkNqi~g9)1?R?w4SU4sJ-Uqx$BGVVwizps0q&w-xLSX5(6@yT31}1MsouSdW_O74JWmo*8k;+oqGmRqz44e$o|q4I+vu*)PH4{$%yr- z4RjH(EwNtqoV55|Nd^hM6e;nEE-CLLg zHdZKj5(O8QAa>qW4l6lJ&~&Gr$d-#kh*4Kp8-px;)Y^4s|77WRPd{k-CdJeVG~Fyy zhH7q(qj-|Qphx4wV2so+j~(?GGolp0Fbngu2%x5%E%6kG=C&s~C`L@@9%)C5wI=V} znWDp)VB5|jR6`);;)nScqr&SBr3nOPtyU(rn;tH3x1{Zti`A^KZlObLv}n*(8C!y} zge)bG^hHQD!t|>3nA~Z6t#?%kP-;%;SQ$e+z9H|)TiNJi8b$qTBS*Qv`3HX8&`g{@ zi6OG6Xl+b&O=6jJN$RgR2`UiFwuUMtu||;zfkiZgnx77wr}ZkW-afTbd~J`Ytvx1C zvsqueJS~O@ zI72S~3RAZE1V)orn{q|F<_Y)65lyK)#2p);V7S%_CCL|$a@_vXo8Go18BdtClItT% zHLsh67Nx|ZBXz?@br4ZSF%*v{7&h-Tqtv+h6O5!qbu|v6!II8{pqN$@;sPFzFUs0c zlap~Qd(>MBSzpk)mHi%WnJFibM7l?eC`DY9{c)BXb0EgboM9J5hw{%jS{ykuuwCvM z%YP-|oUb<#CZ%6zr4qfn;;ZMs0B4KUNq%jyj#OWUCxO!fqo z)wGs;6$vr(mO=_l8&j)b12ftvBQktcemoNVLdueCNC@tZ`Lg()(Ae>7o06P1ulyU$ zm7xF72!+52iCVikbtvzU5SDd^RR9~UVKoh5{fi`K3>$`6SH@cQ*SKqJi!y!OXomOJyFxEsV$0=8hMOR zL^jvlw9-CXq9>#qIz-tLbG+G`yr0nQbJ-1Om1NJTIo7}L3du2gS@m7>aIR$H&~zx9 zyHZ-pTfsj_jS5NU^+?=17xX>Eq-r8LB{}FWPmsCvmHa)7tB{Fe%~;L+Vhtr8db``i ztG{?@gSm*+UQb=V_Sh z8j{W@0jkb)-qZK9-!7Ctx9ynZ3Wd>Rt2*3|#6h_77pp*ykU% zjH{FJ$vf*zEp0$X(VVr5iTaf@6e!NVXlGN^qRnoRE;L3YjaKc*DU{SUc=Rif!Qbne zx_j)d6usa#3@o$ynQ)pW_61WD@T0 z2cyo|Lmtz4=3mIP>?5Lmd2=f#MwJ?7@fGX`If-G|RoasuVT<0;z=&3Hib~VckHLyN z#mA}p<;A$?VbP|zFgY`Mk%Dd8P&Q+4#`e#Pvh-qYL#1kRJAoW!F-1RGgX*o~^=!!E zQD>f5UgM}8GeE`KP6OT+o}QH11F^-iqvd8}^3Lt-pCo2TKNl8SuKUWPm)7Gl=kgj= zTUjsGN9_?(biSF6dfy%m@)(YzRz|+=H1mC74))_gT2pQ!?jM+?pyEsHh2Em(A0)ki z(?3NDp?yyO2q}d2IsNma5ZdST50642TD69(?~TTwbn7$1$&0h_!@okJ>z0KLN6)HP z@(o+=a?IdoOQN;_rTF1oBA?;8+{dV;116dIgY4Hr;a7!n=vrCO^khgg&jhud*UARK z!l!-B|rp00IM8B1DLhh=Oh${rZ;Fi(+g zJD$7;apTQf=mvTth{$Otmr9dnE1F0vtoLb5Bh6aA^^nPFy@bM@2(*7TBuS`wxm|meOl&@*^Y6aUP zYBOcIwe7eSL5-E(f1ICc$1SrBsnlC+g~u_}g0|cH!m2npL%K8a%=o}~(M+WEhHNCM$rHwPlpVEp?H zUuiw&%&=O|lMz=5y!ZCWZ?PFUYN@sl=)5e%IdD_g>=E(>&f$`tJc z6@X=w*In)-HnZgH_U5X1u3Br`YGHOouEwFN%GGbsDQ$(3V@M5s;$}^8))5W%pMJ(ojX`EWdutJs?RX2MmIv5I4cZ&q)$Q30t5Qc4Ve=W3{Ze7&6aF zGOX~AQ0Lqp-tDNu&PtQjPCMN?Pavl_dPc@}M(@Q|jc{V>Q~+~3ksWR}&}zzbLA6P_782B;#MEzIL{UFG$LHF#Evhn5u^$aa0n<)` z((|IR-6J!ncu~!1-_k>K%?t;9mK?nxZ zVT*;WQo};c=qW@Y@tt>ldSCAGVPkfKZkc4Ovt3S?Y)N1BgBk6%{Md}6gj)Hrnb|P? zS(}X{j1Oju&6n-`GytV_ob?h($&hf-m?-K2*|cq0vOQ`D%QyPD$#vQ;TboYdILFy%gPIoH$8qf8&3L`Cf(zD|OvSy%O!f6fg)B;!9bC-OnqTT;hOtz2qSK3F<(YSJR2c&Il`LcVO zopceo9LS=t9b^$0_SwZk-lohA{fk=erpa=(OTN1a#>CRZvWA-yVNg~=Bt*V{e}N-_ ze15$^_$q&tQ!`Im(m%B9l%}2!vDPDO{M8!$vrPO`mHCB|+-9Dox&fdKHve9gUGI^# z&Wk8_%-wfE%49_8h*xGb+cx;iOj5b>LOClNwjM7B!&G50?ip|En-^nXaWmDmo)=9@ zt**eKq+$y)g2)}nv+M5l@S7lYUWn8)o>=S%vW+L2c^__ZOD>p{>?f;!&ypSV)r40?~TEeIA z9{zbjA5870VIXvSlpwEPO=E@CzgXgS&H0DuYWe9H%Y9B^z6xwkLa9akyxMmJy=^L*1Xjb}S*t zSqWFv^oQqzg>QL+B7QNz6!q@W;w7AupuzIn4M;x_l}$~zguND9Z2tZEcfKtO?p)C6 zJ(BJ2^@x!EnX=cK-rK7bFYwXyIzTQnS#9#OuB@vkRrzsO$>hll3V}miEk68PWg5av zTJ^r(AnKgQo*zy(HiC$?NzPL+E~H=%*A==Rb1{i^%+rqx=Wz1d=}lhwnAXI!#ct!v zaLYeTV##c>lSRf-$==~L5!v)|iPt-2w9>LCmod?ugh0D;Rfsc|ce`xD6DB9U{A)!s z1F7Boxx8}8HIY&w!s|qxLYpF_m7c2t;Q&{Xj1wF?2^n|x3_W>s4-~0Qk8wiZx=Rdb z)OxR235TPl9P@lO@yv_Iib%Mm)2C5J;)unXxUUy?kg8^A=m)~u)_TJ=Cjj$v8 zK2bg#M>U5tx~|h4h?hwego{#hRYZbKgJZX>Ai7kK7;V`l9aK}BaB|a&Z zbK`t+sG&4J_=mviW|k?xhD7>W)B3~lU`b$9mY!5Faoy56eQ@q;0@EFa+A)*;aTiq0 z8q;I4H^UEi>3HeDD;=G@y4RD;Hf}IzrDcry3Bg3;wFdRpGqlo9FBmb(e*VNMYzN)A zw|m$+0my%l6i*t-tYik0!iR{*5)Ai?e#6Ku*r^MV)y;GjBj@?+=p4X6BKMWJFg z{auUTBSk>}Ot$;~N%5L%I6&cWNq3O37lt3x-7{D<<$6NtiDlV@&dx~sbJFh@6tL1~ zL|xr~O};nyg&%G*2zsO1Zl&yHEonl}=IJsM)%l`jp>Bb2aoiChKB;@Z*%#klZ?aiq zF|=vZo0<+t^QEQA`qB4wqSv;yE<;8mfGikAE?YOF2BHR+Q#G>lr<=?!S-F1C+f8n@ lYSa5-Pd6EHllNp5#FanQuqs4qfXKhpq%@~Qobu)I{ufKzu?+wK diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-42da344ccb044413769d16ed3484307b.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-42da344ccb044413769d16ed3484307b.json deleted file mode 100644 index ff9ec0df..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-42da344ccb044413769d16ed3484307b.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2023-11-08 16:38:58+0000","generator":"WP-CLI\/2.6.0","source":"dist\/block-elements.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"ru","plural-forms":"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"},"Loop Template":["\u0428\u0430\u0431\u043b\u043e\u043d \u0446\u0438\u043a\u043b\u0430"],"The taxonomy to check if in the same term.":["\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044e \u0435\u0441\u043b\u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439 \u0442\u0435\u0440\u043c\u0438\u043d."],"Check for posts with the same term as the current post.":["\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0441 \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u0438\u043c\u0435\u043d\u0435\u043c \u043a\u0430\u043a \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c."],"Remove container condition":["\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430"],"Display Order":["\u041e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u0417\u0430\u043a\u0430\u0437"],"Parent Element":["\u0420\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442"],"First post":["\u041f\u0435\u0440\u0432\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c"],"No post meta":["\u041d\u0435\u0442 \u043c\u0435\u0442\u0430-\u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0438"],"No featured image":["\u041d\u0435\u0442 \u0438\u0437\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f"],"Keep default archive navigation container":["\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0430\u0440\u0445\u0438\u0432\u0430 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e"],"Disable default pagination":["\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e"],"Add default archive navigation container":["\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u043f\u043e \u0430\u0440\u0445\u0438\u0432\u0443 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e"],"Disable default post navigation":["\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044e \u043f\u043e \u0437\u0430\u043f\u0438\u0441\u044f\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e"],"Use the above template tag to add the current year to your footer.":["\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0432\u044b\u0448\u0435 \u0442\u0435\u0433 \u0448\u0430\u0431\u043b\u043e\u043d\u0430, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0433\u043e\u0434 \u0432 \u043f\u043e\u0434\u0432\u0430\u043b"],"Current year template tag":["\u0422\u0435\u0433 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0433\u043e\u0434\u0430"],"Disable primary post meta":["\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u0435\u0442\u0430-\u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438"],"Disable featured image":["\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438"],"Disable title":["\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a"],"Keep default post container":["\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e"],"Post meta name":["\u041c\u0435\u0442\u0430-\u0438\u043c\u044f \u0437\u0430\u043f\u0438\u0441\u0438"],"Term name":["\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430"],"Posts with custom field":["\u0417\u0430\u043f\u0438\u0441\u0438 \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u043b\u0435\u043c"],"Posts with term":["\u0417\u0430\u043f\u0438\u0441\u0438 \u0441 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043c\u0438"],"All posts":["\u0412\u0441\u0435 \u0437\u0430\u043f\u0438\u0441\u0438"],"Apply to":["\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043a"],"Tag name":["\u0418\u043c\u044f \u0442\u0435\u0433\u0430"],"Replace default secondary post meta":["\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043c\u0435\u0442\u0443 \u0432\u0442\u043e\u0440\u0438\u0447\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e"],"Replace default primary post meta":["\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043c\u0435\u0442\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e"],"Custom hook name":["\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0445\u0443\u043a\u0430"],"Choose your hook":["\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 \u0445\u0443\u043a"],"Hook name":["\u0418\u043c\u044f \u0445\u0443\u043a\u0430"],"Quick hook select":["\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0432\u044b\u0431\u043e\u0440 \u0445\u0443\u043a\u0430"],"Before post title":["\u041f\u0435\u0440\u0435\u0434 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c \u0437\u0430\u043f\u0438\u0441\u0438"],"After post title":["\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 \u0437\u0430\u043f\u0438\u0441\u0438"],"This Element will replace your site footer area that holds your copyright message. It will not replace footer widgets if they exist.":["\u042d\u0442\u043e\u0442 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0437\u0430\u043c\u0435\u043d\u0438\u0442 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u043f\u043e\u0434\u0432\u0430\u043b\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u0432\u0430\u0448\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0445 \u043f\u0440\u0430\u0432\u0430\u0445. \u041e\u043d \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u0438\u0442 \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u043f\u043e\u0434\u0432\u0430\u043b\u0430, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442."],"Templates":["\u0428\u0430\u0431\u043b\u043e\u043d\u044b\u0439"],"Element type":["\u0422\u0438\u043f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430"],"Editor width":["\u0428\u0438\u0440\u0438\u043d\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430"],"Install GenerateBlocks":["\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c GenerateBlocks"],"Activate GenerateBlocks":["\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c GenerateBlocks"],"To take full advantage of Block Elements, we suggest using our GenerateBlocks plugin.":["\u0427\u0442\u043e\u0431\u044b \u0432 \u043f\u043e\u043b\u043d\u043e\u0439 \u043c\u0435\u0440\u0435 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430\u043c\u0438 \u0431\u043b\u043e\u0447\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432, \u043c\u044b \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448 \u043f\u043b\u0430\u0433\u0438\u043d GenerateBlocks."],"Block Element":["\u042d\u043b\u0435\u043c\u0435\u043d\u0442 \u0411\u043b\u043e\u043a\u0430"],"After content container":["\u041f\u043e\u0441\u043b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430"],"After content":["\u041f\u043e\u0441\u043b\u0435 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430"],"Before content":["\u041f\u0435\u0440\u0435\u0434 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043e\u043c"],"Before content container":["\u041f\u0435\u0440\u0435\u0434 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430"],"After header":["\u041f\u043e\u0441\u043b\u0435 \u0448\u0430\u043f\u043a\u0438"],"label\u0004Single post hero with excerpt":["Hero \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 \u0441 \u043e\u0442\u0440\u044b\u0432\u043a\u0430\u043c\u0438"],"label\u0004Basic single post page hero":["Hero \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u044c\u044e"],"label\u0004Rounded buttons with icon":["\u041e\u043a\u0440\u0443\u0433\u043b\u044b\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u0441\u043e \u0437\u043d\u0430\u0447\u043a\u043e\u043c"],"label\u0004Default next and previous buttons":["\u041a\u043d\u043e\u043f\u043a\u0438 \u00ab\u0414\u0430\u043b\u0435\u0435\u00bb \u0438 \u00ab\u041d\u0430\u0437\u0430\u0434\u00bb \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e"],"label\u0004Landscape layout":["\u0410\u043b\u044c\u0431\u043e\u043c\u043d\u0430\u044f \u043e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f"],"label\u0004Layout with offset content":["\u041c\u0430\u043a\u0435\u0442 \u0441\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u043d\u044b\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c"],"label\u0004Basic layout with term buttons":["\u0411\u0430\u0437\u043e\u0432\u044b\u0439 \u043c\u0430\u043a\u0435\u0442 \u0441 \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u0432"],"label\u0004Full footer 2":["\u041f\u043e\u043b\u043d\u044b\u0439 \u043f\u043e\u0434\u0432\u0430\u043b 2"],"label\u0004Full footer 1":["\u041f\u043e\u043b\u043d\u044b\u0439 \u043f\u043e\u0434\u0432\u0430\u043b 1"],"label\u0004Term buttons":["\u041a\u043d\u043e\u043f\u043a\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u0432"],"label\u0004Stacked with avatar":["\u0421\u043b\u043e\u0436\u0435\u043d\u044b \u0441 \u0430\u0432\u0430\u0442\u0430\u0440\u043e\u043c"],"label\u0004Inline with avatar":["\u041d\u0430 \u043b\u0438\u043d\u0438\u0438 \u0441 \u0430\u0432\u0430\u0442\u0430\u0440\u043e\u043c"],"label\u0004Two columns with background overlays":["\u0414\u0432\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0441 \u0444\u043e\u043d\u043e\u0432\u044b\u043c\u0438 \u043d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438"],"label\u0004Two columns with arrows":["\u0414\u0432\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0441\u043e \u0441\u0442\u0440\u0435\u043b\u043a\u0430\u043c\u0438"],"label\u0004Two columns with featured image":["\u0414\u0432\u0435 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0437\u0430\u043f\u0438\u0441\u0438"],"%s Units":["% \u0435\u0434\u0438\u043d\u0438\u0446"],"A size unit for CSS markup\u0004Degree":["\u0421\u0442\u0435\u043f\u0435\u043d\u044c"],"A size unit for CSS markup\u0004Percentage":["\u041f\u0440\u043e\u0446\u0435\u043d\u0442"],"A size unit for CSS markup\u0004Em":["\u0420\u0430\u0437\u043c\u0435\u0440"],"A size unit for CSS markup\u0004Pixel":["\u041f\u0438\u043a\u0441\u0435\u043b\u044c"],"Select Units":["\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0435\u0434\u0438\u043d\u0438\u0446\u044b"],"Displays a dynamic image from your chosen source.":["\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438\u0437 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u0430\u043c\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430."],"Dynamic Image":["\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435"],"Dynamic image placeholder":["\u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f"],"Choose your dynamic image type.":["\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0438\u043f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f."],"Dynamic image":["\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435"],"Make image rounded":["\u0421\u0434\u0435\u043b\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u043d\u044b\u043c"],"Custom field name":["\u0418\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u043e\u043b\u044f"],"Custom field":["\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u043f\u043e\u043b\u0435"],"Link to":["\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430"],"Image height":["\u0412\u044b\u0441\u043e\u0442\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f"],"Image width":["\u0428\u0438\u0440\u0438\u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f"],"Image size":["\u0420\u0430\u0437\u043c\u0435\u0440 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438"],"Author avatar":["\u0410\u0432\u0430\u0442\u0430\u0440 \u0430\u0432\u0442\u043e\u0440\u0430"],"Displays dynamic content based on your chosen source.":["\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u0430\u043c\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430."],"Dynamic Content":["\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442"],"This is a placeholder for your description.":["\u042d\u0442\u043e \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f"],"Choose your dynamic content type.":["\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0438\u043f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430."],"Dynamic content":["\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442"],"Custom more link":["\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u0435\u0449\u0435"],"Use theme more link":["\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443 \u0435\u0449\u0435 \u0442\u0435\u043c\u044b"],"Excerpt length":["\u0414\u043b\u0438\u043d\u0430 \u043e\u0442\u0440\u044b\u0432\u043a\u0430"],"Author description":["\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430 "],"Term description":["\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430"],"Post excerpt":["\u041e\u0442\u0440\u044b\u0432\u043e\u043a \u0437\u0430\u043f\u0438\u0441\u0438"],"Post content":["\u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0437\u0430\u043f\u0438\u0441\u0438"],"Dynamic link type":["\u0422\u0438\u043f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438"],"Updated date before text":["\u0414\u0430\u0442\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043a\u0441\u0442\u043e\u043c"],"Use % in place of the number of comments":["\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 % \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432"],"Plural comments text":["\u0422\u0435\u043a\u0441\u0442 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u0432\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u0447\u0438\u0441\u043b\u0435"],"Singular comments text":["\u0422\u0435\u043a\u0441\u0442 \u0435\u0434\u0438\u043d\u0438\u0447\u043d\u044b\u0445 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432"],"No comments text":["\u0422\u0435\u043a\u0441\u0442 \u0431\u0435\u0437 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432"],"Term separator":["\u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u0432"],"Replace with updated date":["\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0434\u0430\u0442\u043e\u0439"],"Updated date":["\u0414\u0430\u0442\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f"],"Date type":["\u0422\u0438\u043f \u0434\u0430\u0442\u044b"],"Terms":["\u0422\u0435\u0440\u043c\u0438\u043d\u044b"],"Hello World":["\u041f\u0440\u0438\u0432\u0435\u0442, \u043c\u0438\u0440"],"Comments number":["\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432"],"List of terms":["\u0421\u043f\u0438\u0441\u043e\u043a \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u0432"],"Post author name":["\u0418\u043c\u044f \u0430\u0432\u0442\u043e\u0440\u0430 \u0437\u0430\u043f\u0438\u0441\u0438"],"Post date":["\u0414\u0430\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u0438"],"Title":["\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a"],"Dynamic text type":["\u0422\u0438\u043f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430"],"Published date before text":["\u0414\u0430\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043a\u0441\u0442\u043e\u043c"],"Term archives":["\u0410\u0440\u0445\u0438\u0432\u044b \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u0432"],"Author meta":["\u041c\u0435\u0442\u0430 \u0430\u0432\u0442\u043e\u0440\u0430"],"Previous page of posts":["\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0437\u0430\u043f\u0438\u0441\u0435\u0439"],"Next page of posts":["\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u0437\u0430\u043f\u0438\u0441\u0435\u0439"],"Comments area":["\u041e\u0431\u043b\u0430\u0441\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432"],"Author archives":["\u0410\u0440\u0445\u0438\u0432\u044b \u0430\u0432\u0442\u043e\u0440\u0430"],"Single post":["\u0415\u0434\u0438\u043d\u0438\u0447\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c"],"Taxonomy":["\u0422\u0430\u043a\u0441\u043e\u043d\u043e\u043c\u0438\u044f"],"In same term":["\u0422\u0435\u043c \u0436\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043c"],"No previous post":["\u041d\u0435\u0442 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0437\u0430\u043f\u0438\u0441\u0438"],"No next post":["\u041d\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0437\u0430\u043f\u0438\u0441\u0438"],"Space between":["\u041f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043c\u0435\u0436\u0434\u0443"],"Inline alignment":["\u041b\u0438\u043d\u0435\u0439\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435"],"Inline post meta items":["\u041c\u0435\u0442\u0430\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0445 \u0437\u0430\u043f\u0438\u0441\u0435\u0439"],"Previous post":["\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c"],"Next post":["\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c"],"Current post":["\u0422\u0435\u043a\u0443\u0449\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c"],"Source":["\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a"],"Post":["\u0417\u0430\u043f\u0438\u0441\u044c"],"Choose\u2026":["\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435..."],"Dynamic Link":["\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430"],"Use fallback image":["\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435"],"Meta field name":["\u0418\u043c\u044f \u043c\u0435\u0442\u0430\u043f\u043e\u043b\u044f"],"Add a background image to this Container to make it dynamic.":["\u0414\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0444\u043e\u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u044d\u0442\u043e\u0442 \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0447\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0433\u043e \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u044b\u043c."],"User meta":["\u041c\u0435\u0442\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f"],"Term meta":["\u0422\u0435\u0440\u043c\u0438\u043d \u043c\u0435\u0442\u0430"],"Post meta":["\u041c\u0435\u0442\u0430 \u0437\u0430\u043f\u0438\u0441\u0438"],"Featured image":["\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0438\u0441\u0438"],"Dynamic Background Image":["\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0444\u043e\u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435"],"Dynamic options":["\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b"],"Archive Navigation":["\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043f\u043e \u0430\u0440\u0445\u0438\u0432\u0443"],"Post Navigation":["\u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043f\u043e \u0437\u0430\u043f\u0438\u0441\u044f\u043c"],"Post Meta Template":["\u041c\u0435\u0442\u0430 \u0448\u0430\u0431\u043b\u043e\u043d \u0437\u0430\u043f\u0438\u0441\u0438"],"Content Template":["\u0428\u0430\u0431\u043b\u043e\u043d \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430"],"% Comments":["% \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438"],"1 Comment":["1 \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439"],"No Comments":["\u041d\u0435\u0442 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432"],"This is a placeholder for your content.":["\u042d\u0442\u043e \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e. "],"This will remove the current sidebar widgets for the selected sidebar. Your layout must have a sidebar set for this Element to show.":["\u042d\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0441\u0430\u0439\u0434\u0431\u0430\u0440\u0430 \u0434\u043b\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0430\u0439\u0434\u0431\u0430\u0440\u0430. \u0412 \u0432\u0430\u0448\u0435\u043c \u043c\u0430\u043a\u0435\u0442\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0441\u0430\u0439\u0434\u0431\u0430\u0440 \u0434\u043b\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430."],"Site Footer":["\u041f\u043e\u0434\u0432\u0430\u043b \u0441\u0430\u0439\u0442\u0430"],"None":["\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442"],"Type":["\u0422\u0438\u043f"],"Right Sidebar":["\u0412 \u043f\u0440\u0430\u0432\u043e\u043c \u0431\u043e\u043a\u043e\u0432\u0438\u043a\u0435"],"Left Sidebar":["\u0412 \u043b\u0435\u0432\u043e\u043c \u0431\u043e\u043a\u043e\u0432\u0438\u043a\u0435"],"Priority":["\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442"],"Custom Hook":["\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0445\u0443\u043a"],"Custom":["\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439"],"Site Header":["\u0428\u0430\u043f\u043a\u0430 \u0441\u0430\u0439\u0442\u0430"],"Page Hero":["Hero \u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430"],"Hook":["\u0425\u0443\u043a"],"Right":["\u0421\u043f\u0440\u0430\u0432\u0430"],"Left":["\u0421\u043b\u0435\u0432\u0430"],"Center":["\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443"],"Location":["\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-53e2a1d5945b8d2b1c35e81ae1e532f3.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-53e2a1d5945b8d2b1c35e81ae1e532f3.json deleted file mode 100644 index 31dfd244..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-53e2a1d5945b8d2b1c35e81ae1e532f3.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2023-11-08 16:38:58+0000","generator":"WP-CLI\/2.6.0","source":"dist\/editor.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"ru","plural-forms":"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"},"Active Elements":["\u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u042d\u0435\u043c\u0435\u043d\u0442\u044b"],"All Elements":["\u0412\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-92fa58377f1b6f7bef9c785c31ae29ff.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-92fa58377f1b6f7bef9c785c31ae29ff.json deleted file mode 100644 index 3b4bd9e2..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-92fa58377f1b6f7bef9c785c31ae29ff.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2023-11-08 16:38:58+0000","generator":"WP-CLI\/2.6.0","source":"dist\/site-library.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"ru","plural-forms":"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"},"Requires GeneratePress %s.":["\u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f GeneratePress %s."],"Built by":["\u0421\u043e\u0437\u0434\u0430\u043d\u043e"],"Note: We do our best to ensure all imported images are licensed for open use. However, image licenses can change, so we strongly advise that you replace all imported images with your own.":["\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435. \u041c\u044b \u0434\u0435\u043b\u0430\u0435\u043c \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u0438 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f. \u041e\u0434\u043d\u0430\u043a\u043e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043c\u043e\u0433\u0443\u0442 \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0432\u0430\u043c \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438."],"Check out your new site and start making it yours!":["\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0441\u0432\u043e\u0439 \u043d\u043e\u0432\u044b\u0439 \u0441\u0430\u0439\u0442 \u0438 \u043d\u0430\u0447\u043d\u0438\u0442\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u0432\u043e\u0438\u043c!"],"Learn more here":["\u0423\u0437\u043d\u0430\u0439\u0442\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0437\u0434\u0435\u0441\u044c"],"To disable it, find WP_DEBUG in your wp-config.php file and set it to false like the below.":["\u0427\u0442\u043e\u0431\u044b \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u043d\u0430\u0439\u0434\u0438\u0442\u0435 WP_DEBUG \u0432 \u0444\u0430\u0439\u043b\u0435 wp-config.php \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 false, \u043a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0438\u0436\u0435."],"WordPress debug mode is currently enabled. With this, any errors from third-party plugins might affect the import process.":["\u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u0440\u0435\u0436\u0438\u043c \u043e\u0442\u043b\u0430\u0434\u043a\u0438 WordPress. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043b\u044e\u0431\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438\u043c\u043f\u043e\u0440\u0442\u0430."],"Debug Mode Enabled":["\u0412\u043a\u043b\u044e\u0447\u0435\u043d \u0440\u0435\u0436\u0438\u043c \u043e\u0442\u043b\u0430\u0434\u043a\u0438"],"Preview mobile":["\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445"],"Preview tablet":["\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0430"],"Preview desktop":["\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u0441\u0442\u043e\u043b\u0430"],"Elementor Tools":["\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b Elementor"],"Take note of the old and new URLs below, then head over to the Elementor Tools area to replace them.":["\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0441\u0442\u0430\u0440\u044b\u0439 \u0438 \u043d\u043e\u0432\u044b\u0439 URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u043d\u0438\u0436\u0435, \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0439\u0434\u0438\u0442\u0435 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 Elementor, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0445."],"Begin Import":["\u041d\u0430\u0447\u0430\u0442\u044c \u0438\u043c\u043f\u043e\u0440\u0442"],"I understand":["\u042f \u043f\u043e\u043d\u0438\u043c\u0430\u044e"],"Confirm Import":["\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c \u0438\u043c\u043f\u043e\u0440\u0442"],"Import Demo Content":["\u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442"],"This will install and activate needed plugins, import demo content, and import site options.":["\u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b, \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0430\u0439\u0442\u0430."],"Import Theme Options":["\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0442\u0435\u043c\u044b "],"This will import the options from the Customizer.":["\u0418\u043c\u043f\u043e\u0440\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0438\u0437 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0449\u0438\u043a\u0430."],"These plugins need to be installed manually.":["\u042d\u0442\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0440\u0443\u0447\u043d\u0443\u044e."],"These plugins are already installed.":["\u042d\u0442\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b."],"These plugins can be installed automatically.":["\u042d\u0442\u0438 \u043f\u043b\u0430\u0433\u0438\u043d\u044b \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438."],"Gathering information":["\u041f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u0431\u043e\u0440 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. "],"Refresh sites":["\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u0441\u0430\u0439\u0442\u044b"],"Requires GP Premium %s.":["\u0422\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043f\u043b\u0430\u0433\u0438\u043d GP Premium %s."],"Page Builder":["\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0441\u0442\u0440\u0430\u043d\u0438\u0446"],"Category":["\u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f"],"No thanks":["\u041d\u0435\u0442, \u0441\u043f\u0430\u0441\u0438\u0431\u043e"],"Remove imported site":["\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0430\u0439\u0442"],"This process makes changes to your website. If it contains important data, we suggest backing it up before proceeding.":["\u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u043d\u043e\u0441\u0438\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0432\u0430\u0448 \u0441\u0430\u0439\u0442. \u0415\u0441\u043b\u0438 \u043e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0430\u0436\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c."],"Try again":["\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439 \u0435\u0449\u0435 \u0440\u0430\u0437"],"No sites were found.":["\u0421\u0430\u0439\u0442\u043e\u0432 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e."],"Restoring content":["\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e"],"Installing %s":["\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 %s"],"Import Complete":["\u0418\u043c\u043f\u043e\u0440\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d"],"Importing theme options":["\u0418\u043c\u043f\u043e\u0440\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0442\u0435\u043c\u044b"],"Why?":["\u041f\u043e\u0447\u0435\u043c\u0443?"],"This process restores your previous options, widgets and active plugins. It will also remove your imported content and CSS.":["\u042d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0432\u0430\u0448\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u0432\u0438\u0434\u0436\u0435\u0442\u044b \u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u0443\u0434\u0430\u043b\u0438\u0442 \u0432\u0430\u0448 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0438 CSS."],"It is highly recommended that you remove the last site you imported before importing a new one.":["\u041d\u0430\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 \u043f\u0435\u0440\u0435\u0434 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u043c \u043d\u043e\u0432\u043e\u0433\u043e."],"Existing Site Import Detected":["\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d \u0438\u043c\u043f\u043e\u0440\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u0430\u0439\u0442\u0430"],"Restoring theme options":["\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0442\u0435\u043c\u044b"],"New URL":["\u041d\u043e\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 URL"],"Old URL":["\u0421\u0442\u0430\u0440\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 URL"],"This site is using Elementor which means you will want to replace the imported image URLs.":["\u042d\u0442\u043e\u0442 \u0441\u0430\u0439\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 Elementor, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0412\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c URL-\u0430\u0434\u0440\u0435\u0441\u0430 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439."],"Additional Cleanup":["\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u0447\u0438\u0441\u0442\u043a\u0430"],"This site uses the following plugins.":["\u042d\u0442\u043e\u0442 \u0441\u0430\u0439\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b."],"All":["\u0412\u0441\u0435"],"View Site":["\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0430\u0439\u0442"],"Get Started":["\u041d\u0430\u0447\u0430\u0442\u044c"],"Plugins":["\u041f\u043b\u0430\u0433\u0438\u043d\u044b"],"Installing plugins":["\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432"],"Activating plugins":["\u0410\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432"],"Importing widgets":["\u0418\u043c\u043f\u043e\u0440\u0442 \u0432\u0438\u0434\u0436\u0435\u0442\u043e\u0432"],"Importing site options":["\u0418\u043c\u043f\u043e\u0440\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0441\u0430\u0439\u0442\u0430"],"Importing content":["\u0418\u043c\u043f\u043e\u0440\u0442 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430"],"None":["\u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442"],"Import":["\u0418\u043c\u043f\u043e\u0440\u0442"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-cbab080b0f20fd6c323029398be6c986.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-cbab080b0f20fd6c323029398be6c986.json deleted file mode 100644 index c12a39a7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-cbab080b0f20fd6c323029398be6c986.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2023-11-08 16:38:58+0000","generator":"WP-CLI\/2.6.0","source":"dist\/dashboard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"ru","plural-forms":"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"},"This will delete all of your customizer settings. It cannot be undone.":["\u042d\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442 \u0432\u0441\u0435 \u0432\u0430\u0448\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u0430\u0441\u0442\u043e\u043c\u0430\u0439\u0437\u0435\u0440\u0430. \u042d\u0442\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u043e."],"Reset your customizer settings.":["\u0421\u0431\u0440\u043e\u0441\u044c\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u0430\u0441\u0442\u043e\u043c\u0430\u0439\u0437\u0435\u0440\u0430."],"Options imported.":["\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b."],"This can overwrite existing settings and cannot be undone.":["\u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u043e."],"Import your customizer settings.":["\u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u041a\u0430\u0441\u0442\u043e\u043c\u0430\u0439\u0437\u0435\u0440\u0430."],"Global Colors":["\u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430"],"Export your customizer settings.":["\u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u043a\u0430\u0441\u0442\u043e\u043c\u0430\u0439\u0437\u0435\u0440\u0430."],"Import \/ Export":["\u0418\u043c\u043f\u043e\u0440\u0442 \/ \u042d\u043a\u0441\u043f\u043e\u0440\u0442"],"License key deactivated.":["\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0434\u0435\u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d."],"License key activated.":["\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d."],"Get alpha and beta updates directly to your Dashboard.":["\u041f\u043e\u043b\u0443\u0447\u0430\u0439\u0442\u0435 \u0430\u043b\u044c\u0444\u0430- \u0438 \u0431\u0435\u0442\u0430-\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u041a\u043e\u043d\u0441\u043e\u043b\u0438."],"Enter your license key to activate updates.":["\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447, \u0447\u0442\u043e\u0431\u044b \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f."],"Not receiving premium updates.":["\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u043c\u0438\u0443\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043e."],"Receiving premium updates.":["\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u043c\u0438\u0443\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043e."],"Options exported":["\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b"],"This will delete all settings for this module. It cannot be undone.":["\u042d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044e \u0432\u0441\u0435\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f. \u042d\u0442\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0442\u043c\u0435\u043d\u0435\u043d\u043e."],"Open tools for this module.":["\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u043e\u0434\u0443\u043b\u044f."],"Open Elements":["\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u042d\u043b\u0435\u043c\u0435\u043d\u0442\u044b"],"Open Site Library":["\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0421\u0430\u0439\u0442\u043e\u0432"],"Settings reset.":["\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u0431\u0440\u043e\u0448\u0435\u043d\u044b"],"Typography":["\u0422\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430"],"All":["\u0412\u0441\u0435"],"Reset":["\u0421\u0431\u0440\u043e\u0441"],"Modules":["\u041c\u043e\u0434\u0443\u043b\u0438"],"License Key":["\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447"],"Deactivate":["\u0414\u0435\u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c"],"Activate":["\u0410\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c"],"This module has been deprecated. Deactivating it will remove it from this list.":["\u042d\u0442\u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c \u0443\u0441\u0442\u0430\u0440\u0435\u043b. \u0414\u0435\u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u0443\u0434\u0430\u043b\u0438\u0442 \u0435\u0433\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430."],"Import":["\u0418\u043c\u043f\u043e\u0440\u0442"],"Export":["\u042d\u043a\u0441\u043f\u043e\u0440\u0442"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-ecf9f3c2af10c4f2dfbf4f42504922d1.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-ecf9f3c2af10c4f2dfbf4f42504922d1.json deleted file mode 100644 index 37e7b72a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU-ecf9f3c2af10c4f2dfbf4f42504922d1.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2023-11-08 16:38:58+0000","generator":"WP-CLI\/2.6.0","source":"dist\/customizer.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"ru","plural-forms":"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"},"Related\/Upsell Product Titles":["\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0445\u043e\u0436\u0438\u0445\/\u0430\u043f\u0441\u0435\u043b\u043b \u0442\u043e\u0432\u0430\u0440\u043e\u0432"],"Catalog Product Titles":["\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430"],"Off-Canvas Sub-Menu Items":["\u041f\u0443\u043d\u043a\u0442\u044b \u043f\u043e\u0434\u043c\u0435\u043d\u044e Off-Canvas"],"Off-Canvas Menu Items":["\u041f\u0443\u043d\u043a\u0442\u044b \u043c\u0435\u043d\u044e Off-Canvas"],"Secondary Mobile Menu Toggle":["\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0432\u0442\u043e\u0440\u0438\u0447\u043d\u043e\u0433\u043e \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044e"],"Secondary Sub-Menu Items":["\u041f\u0443\u043d\u043a\u0442\u044b \u0432\u0442\u043e\u0440\u0438\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043c\u0435\u043d\u044e"],"Secondary Menu Items":["\u041f\u0443\u043d\u043a\u0442\u044b \u0432\u0442\u043e\u0440\u0438\u0447\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044e"],"Off-Canvas Panel":["\u041f\u0430\u043d\u0435\u043b\u044c Off-Canvas"],"WooCommerce":["WooCommerce"],"Secondary Navigation":["\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043c\u0435\u043d\u044e"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU.mo b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-ru_RU.mo deleted file mode 100644 index dd9262e2a267805f4a64951cbac0bd2c7f122421..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77631 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 diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-42da344ccb044413769d16ed3484307b.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-42da344ccb044413769d16ed3484307b.json deleted file mode 100644 index 58f573c2..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-42da344ccb044413769d16ed3484307b.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2022-10-01 13:13:24+0000","generator":"WP-CLI\/2.6.0","source":"dist\/block-elements.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"sv_SE","plural-forms":"nplurals=2; plural=n != 1;"},"Loop Template":[""],"The taxonomy to check if in the same term.":[""],"Check for posts with the same term as the current post.":["Kolla efter inl\u00e4gg med samma term som det nuvarande inl\u00e4gget."],"Remove container condition":["Ta bort beh\u00e5llarens villkor"],"Display Order":[""],"Parent Element":["\u00d6verordnat element"],"First post":["F\u00f6rsta inl\u00e4gg"],"No post meta":[""],"No featured image":["Ingen utvald bild"],"Keep default archive navigation container":[""],"Disable default pagination":[""],"Add default archive navigation container":[""],"Disable default post navigation":[""],"Use the above template tag to add the current year to your footer.":[""],"Current year template tag":[""],"Disable primary post meta":["Inaktivera prim\u00e4r metadata f\u00f6r inl\u00e4gg"],"Disable featured image":["Inaktivera utvald bild"],"Disable title":["Inaktivera rubrik"],"Keep default post container":[""],"Post meta name":["Namn f\u00f6r metadata f\u00f6r inl\u00e4gg"],"Term name":["Termnamn"],"Posts with custom field":["Inl\u00e4gg med anpassat f\u00e4lt"],"Posts with term":["Inl\u00e4gg med term"],"All posts":["Alla inl\u00e4gg"],"Apply to":["Till\u00e4mpa p\u00e5"],"Tag name":["Etikettnamn"],"Replace default secondary post meta":[""],"Replace default primary post meta":[""],"Custom hook name":["V\u00e4lj namn f\u00f6r \u00e5tg\u00e4rds-hook"],"Choose your hook":["V\u00e4lj din \u00e5tg\u00e4rds-hook"],"Hook name":["Namn p\u00e5 \u00e5tg\u00e4rds-hook"],"Quick hook select":[""],"Before post title":["F\u00f6re inl\u00e4ggsrubrik"],"After post title":["Efter inl\u00e4ggsrubrik"],"This Element will replace your site footer area that holds your copyright message. It will not replace footer widgets if they exist.":["Detta element kommer att ers\u00e4tta ditt sidfotomr\u00e5de som inneh\u00e5ller ditt upphovsr\u00e4ttsmeddelande. Det ers\u00e4tter inte sidfotens widgetar om det finns."],"Templates":["Mallar"],"Element type":["Elementtyp"],"Editor width":["Redigeringsbredd"],"Install GenerateBlocks":["Installera GenerateBlocks"],"Activate GenerateBlocks":["Aktivera GenerateBlocks"],"To take full advantage of Block Elements, we suggest using our GenerateBlocks plugin.":["F\u00f6r att dra full nytta av Block Elements f\u00f6resl\u00e5r vi att du anv\u00e4nder v\u00e5rt till\u00e4gg GenerateBlocks."],"Block Element":["Block Element"],"After content container":["Efter inneh\u00e5llsbeh\u00e5llare"],"After content":["Efter inneh\u00e5ll"],"Before content":["F\u00f6re inneh\u00e5ll"],"Before content container":["F\u00f6re inneh\u00e5llsbeh\u00e5llare"],"After header":[""],"label\u0004Single post hero with excerpt":[""],"label\u0004Basic single post page hero":[""],"label\u0004Rounded buttons with icon":["Rundade knappar med ikon"],"label\u0004Default next and previous buttons":["Standardknappar f\u00f6r n\u00e4sta och f\u00f6reg\u00e5ende"],"label\u0004Landscape layout":["Liggande layout"],"label\u0004Layout with offset content":["Layout med f\u00f6rskjutet inneh\u00e5ll"],"label\u0004Basic layout with term buttons":[""],"label\u0004Full footer 2":["Hel sidfot 2"],"label\u0004Full footer 1":["Hel sidfot 1"],"label\u0004Term buttons":[""],"label\u0004Stacked with avatar":["Staplad med profilbild"],"label\u0004Inline with avatar":[""],"label\u0004Two columns with background overlays":["2 kolumner med bakgrund\u00f6verl\u00e4gg"],"label\u0004Two columns with arrows":["Tv\u00e5 kolumner med pilar"],"label\u0004Two columns with featured image":["Tv\u00e5 kolumner med utvald bild"],"%s Units":[""],"A size unit for CSS markup\u0004Degree":["Grad"],"A size unit for CSS markup\u0004Percentage":["Procentsats"],"A size unit for CSS markup\u0004Em":["Em"],"A size unit for CSS markup\u0004Pixel":["Pixel"],"Select Units":["V\u00e4lj enheter"],"Displays a dynamic image from your chosen source.":["Visar en dynamisk bild fr\u00e5n din valda k\u00e4lla."],"Dynamic Image":["Dynamisk bild"],"Dynamic image placeholder":["Platsh\u00e5llare f\u00f6r dynamisk bild"],"Choose your dynamic image type.":["V\u00e4lj din dynamiska bildtyp."],"Dynamic image":["Dynamisk bild"],"Make image rounded":["G\u00f6r bild rundad"],"Custom field name":["Anpassat f\u00e4ltnamn"],"Custom field":["Anpassat f\u00e4lt"],"Link to":["L\u00e4nk till"],"Image height":["Bildh\u00f6jd"],"Image width":["Bildbredd"],"Image size":["Bildstorlek"],"Author avatar":["Profilbild f\u00f6r f\u00f6rfattare"],"Displays dynamic content based on your chosen source.":["Visar dynamiskt inneh\u00e5ll baserat p\u00e5 din valda k\u00e4lla."],"Dynamic Content":["Dynamiskt inneh\u00e5ll"],"This is a placeholder for your description.":["Detta \u00e4r en platsh\u00e5llare f\u00f6r din beskrivning."],"Choose your dynamic content type.":["V\u00e4lj din dynamiska inneh\u00e5llstyp."],"Dynamic content":["Dynamiskt inneh\u00e5ll"],"Custom more link":["Anpassad l\u00e4nk f\u00f6r \u201dMer\u201d"],"Use theme more link":["Anv\u00e4nd temats l\u00e4nk f\u00f6r \u201dMer\u201d"],"Excerpt length":["Utdragsl\u00e4ngd"],"Author description":["F\u00f6rfattarbeskrivning"],"Term description":["Termbeskrivning"],"Post excerpt":["Inl\u00e4ggsutdrag"],"Post content":["Inl\u00e4ggsinneh\u00e5ll"],"Dynamic link type":["Dynamisk l\u00e4nktyp"],"Updated date before text":["Uppdateringsdatum f\u00f6re text"],"Use % in place of the number of comments":["Anv\u00e4nd % i st\u00e4llet f\u00f6r antalet kommentarer"],"Plural comments text":["Kommentarstext i plural"],"Singular comments text":["Kommentarstext i singular"],"No comments text":["Text f\u00f6r \u201dInga kommentarer\u201d"],"Term separator":[""],"Replace with updated date":["Ers\u00e4tt med uppdateringsdatum"],"Updated date":["Uppdateringsdatum"],"Date type":["Datumtyp"],"Terms":["Termer"],"Hello World":["Hej v\u00e4rlden"],"Comments number":["Antal kommentarer"],"List of terms":["Lista \u00f6ver termer"],"Post author name":["Inl\u00e4ggsf\u00f6rfattarens namn"],"Post date":["Publiceringsdatum"],"Title":["Rubrik"],"Dynamic text type":["Dynamisk texttyp"],"Published date before text":["Publiceringsdatum f\u00f6re text"],"Term archives":["Termarkiv"],"Author meta":["Meta f\u00f6r f\u00f6rfattare"],"Previous page of posts":["F\u00f6reg\u00e5ende sida med inl\u00e4gg"],"Next page of posts":["N\u00e4sta sida med inl\u00e4gg"],"Comments area":["Kommentaromr\u00e5de"],"Author archives":["F\u00f6rfattararkiv"],"Single post":["Enskilt inl\u00e4gg"],"Taxonomy":["Taxonomi"],"In same term":["I samma term"],"No previous post":["Inget f\u00f6reg\u00e5ende inl\u00e4gg"],"No next post":["Inget n\u00e4sta inl\u00e4gg"],"Space between":["Avst\u00e5nd mellan"],"Inline alignment":[""],"Inline post meta items":[""],"Previous post":["F\u00f6reg\u00e5ende inl\u00e4gg"],"Next post":["N\u00e4sta inl\u00e4gg"],"Current post":["Nuvarande inl\u00e4gg"],"Source":["K\u00e4lla"],"Post":["Inl\u00e4gg"],"Choose\u2026":["V\u00e4lj \u2026"],"Dynamic Link":["Dynamisk l\u00e4nk"],"Use fallback image":["Anv\u00e4nd reservbild"],"Meta field name":[""],"Add a background image to this Container to make it dynamic.":["L\u00e4gg till en bakgrundsbild i denna beh\u00e5llare f\u00f6r att g\u00f6ra den dynamisk."],"User meta":["Anv\u00e4ndarmeta"],"Term meta":[""],"Post meta":["Metadata f\u00f6r inl\u00e4gg"],"Featured image":["Utvald bild"],"Dynamic Background Image":["Dynamisk bakgrundsbild"],"Dynamic options":["Dynamiska alternativ"],"Archive Navigation":["Arkivnavigering"],"Post Navigation":["Inl\u00e4ggsnavigering"],"Post Meta Template":[""],"Content Template":["Inneh\u00e5llsmall"],"% Comments":["% kommentarer"],"1 Comment":["1 kommentar"],"No Comments":["Inga kommentarer"],"This is a placeholder for your content.":["Detta \u00e4r en platsh\u00e5llare f\u00f6r ditt inneh\u00e5ll."],"This will remove the current sidebar widgets for the selected sidebar. Your layout must have a sidebar set for this Element to show.":["Detta kommer ta bort nuvarande widgetar i sidopanelen f\u00f6r den valda sidopanelen. Din layout m\u00e5ste ha en sidopanel f\u00f6r att detta element ska visas."],"Site Footer":["Webbplatsens sidfot"],"None":["Ingen"],"Type":["Typ"],"Right Sidebar":["H\u00f6ger sidopanel"],"Left Sidebar":["V\u00e4nster sidopanel"],"Priority":["Prioritet"],"Custom Hook":["Anpassad \u00e5tg\u00e4rds-hook"],"Custom":["Anpassad"],"Site Header":["Webbplatsens sidhuvud"],"Page Hero":[""],"Hook":["\u00c5tg\u00e4rds-hook"],"Right":["H\u00f6ger"],"Left":["V\u00e4nster"],"Center":["Centrerat"],"Location":["Plats"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-53e2a1d5945b8d2b1c35e81ae1e532f3.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-53e2a1d5945b8d2b1c35e81ae1e532f3.json deleted file mode 100644 index 5b924ae9..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-53e2a1d5945b8d2b1c35e81ae1e532f3.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2022-10-01 13:13:24+0000","generator":"WP-CLI\/2.6.0","source":"dist\/editor.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"sv_SE","plural-forms":"nplurals=2; plural=n != 1;"},"Active Elements":["Aktiva element"],"All Elements":["Alla element"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-92fa58377f1b6f7bef9c785c31ae29ff.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-92fa58377f1b6f7bef9c785c31ae29ff.json deleted file mode 100644 index b2ff7285..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-92fa58377f1b6f7bef9c785c31ae29ff.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2022-10-01 13:13:24+0000","generator":"WP-CLI\/2.6.0","source":"dist\/site-library.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"sv_SE","plural-forms":"nplurals=2; plural=n != 1;"},"Requires GeneratePress %s.":["Kr\u00e4ver GeneratePress %s."],"Built by":["Byggd med"],"Note: We do our best to ensure all imported images are licensed for open use. However, image licenses can change, so we strongly advise that you replace all imported images with your own.":[""],"Check out your new site and start making it yours!":["Kolla in din nya webbplats och b\u00f6rja g\u00f6ra den till din egen!"],"Learn more here":["L\u00e4r dig mer h\u00e4r"],"To disable it, find WP_DEBUG in your wp-config.php file and set it to false like the below.":["F\u00f6r att inaktivera den, hitta WP_DEBUG i din wp-config.php-fil och st\u00e4ll in den p\u00e5 falsk som nedan."],"WordPress debug mode is currently enabled. With this, any errors from third-party plugins might affect the import process.":["WordPress fels\u00f6kningsl\u00e4ge \u00e4r f\u00f6r n\u00e4rvarande aktiverat. Med detta kan eventuella fel fr\u00e5n till\u00e4gg fr\u00e5n tredje part p\u00e5verka importprocessen."],"Debug Mode Enabled":["Fels\u00f6kningsl\u00e4ge aktiverat"],"Preview mobile":["F\u00f6rhandsgranska mobil"],"Preview tablet":["F\u00f6rhandsgranska surfplatta"],"Preview desktop":["F\u00f6rhandsgranska station\u00e4r dator"],"Elementor Tools":["Elementor-verktyg"],"Take note of the old and new URLs below, then head over to the Elementor Tools area to replace them.":[""],"Begin Import":["Starta import"],"I understand":["Jag f\u00f6rst\u00e5r"],"Confirm Import":["Bekr\u00e4fta import"],"Import Demo Content":["Importera demoinneh\u00e5ll"],"This will install and activate needed plugins, import demo content, and import site options.":["Detta kommer att installera och aktivera n\u00f6dv\u00e4ndiga till\u00e4gg, importera demo-inneh\u00e5ll och importera webbplatsalternativ."],"Import Theme Options":["Importera temaalternativ"],"This will import the options from the Customizer.":["Detta importerar alternativen fr\u00e5n anpassaren."],"These plugins need to be installed manually.":["Dessa till\u00e4gg m\u00e5ste installeras manuellt."],"These plugins are already installed.":["Dessa till\u00e4gg \u00e4r redan installerade."],"These plugins can be installed automatically.":["Dessa till\u00e4gg kan installeras automatiskt."],"Gathering information":["Samlar information"],"Refresh sites":["Uppdatera webbplatser"],"Requires GP Premium %s.":["Kr\u00e4ver GP Premium %s."],"Page Builder":["Sidbyggare"],"Category":["Kategori"],"No thanks":["Nej tack"],"Remove imported site":["Ta bort importerad webbplats"],"This process makes changes to your website. If it contains important data, we suggest backing it up before proceeding.":["Denna process g\u00f6r \u00e4ndringar p\u00e5 din webbplats. Om den inneh\u00e5ller viktiga data f\u00f6resl\u00e5r vi att du s\u00e4kerhetskopierar den innan du forts\u00e4tter."],"Try again":["F\u00f6rs\u00f6k igen"],"No sites were found.":["Inga webbplatser hittades."],"Restoring content":["\u00c5terst\u00e4ller inneh\u00e5ll"],"Installing %s":["Installerar %s"],"Import Complete":["Import slutf\u00f6rd"],"Importing theme options":["Importerar temaalternativ"],"Why?":["Varf\u00f6r?"],"This process restores your previous options, widgets and active plugins. It will also remove your imported content and CSS.":["Denna process \u00e5terst\u00e4ller dina f\u00f6reg\u00e5ende alternativ, widgetar och aktiva till\u00e4gg. Det tar ocks\u00e5 bort ditt importerade inneh\u00e5ll och CSS."],"It is highly recommended that you remove the last site you imported before importing a new one.":["Det rekommenderas starkt att du tar bort den senaste webbplatsen du importerade innan du importerar en ny."],"Existing Site Import Detected":["Befintlig webbplatsimport uppt\u00e4ckt"],"Restoring theme options":["\u00c5terst\u00e4ller temalternativ"],"New URL":["Ny URL"],"Old URL":["Gammal URL"],"This site is using Elementor which means you will want to replace the imported image URLs.":["Denna webbplats anv\u00e4nder Elementor vilket inneb\u00e4r att du beh\u00f6ver ers\u00e4tta de importerade bild-URL:erna."],"Additional Cleanup":["Ytterligare upprensning"],"This site uses the following plugins.":["Denna webbplats anv\u00e4nder f\u00f6ljande till\u00e4gg."],"All":["Alla"],"View Site":["Visa webbplats"],"Get Started":["Komma ig\u00e5ng"],"Plugins":["Till\u00e4gg"],"Installing plugins":["Installerar till\u00e4gg"],"Activating plugins":["Aktiverar till\u00e4gg"],"Importing widgets":["Importerar widgetar"],"Importing site options":["Importerar webbplatsalternativ"],"Importing content":["Importerar inneh\u00e5ll"],"None":["Ingen"],"Import":["Importera"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-cbab080b0f20fd6c323029398be6c986.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-cbab080b0f20fd6c323029398be6c986.json deleted file mode 100644 index 4bad3bc6..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-cbab080b0f20fd6c323029398be6c986.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2022-10-01 13:13:24+0000","generator":"WP-CLI\/2.6.0","source":"dist\/dashboard.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"sv_SE","plural-forms":"nplurals=2; plural=n != 1;"},"This will delete all of your customizer settings. It cannot be undone.":["Detta kommer ta bort alla dina anpassningsinst\u00e4llningar. Det kan inte \u00e5ngras."],"Reset your customizer settings.":["\u00c5terst\u00e4ll dina inst\u00e4llningar f\u00f6r anpassaren."],"Options imported.":["Alternativ importerade."],"This can overwrite existing settings and cannot be undone.":["Detta kan skriva \u00f6ver befintliga inst\u00e4llningar och kan inte \u00e5ngras."],"Import your customizer settings.":["Importera dina inst\u00e4llningar f\u00f6r anpassaren."],"Global Colors":["Globala f\u00e4rger"],"Export your customizer settings.":["Exportera dina inst\u00e4llningar f\u00f6r anpassaren."],"Import \/ Export":["Import\/export"],"License key deactivated.":["Licensnyckel inaktiverad."],"License key activated.":["Licensnyckel aktiverad."],"Get alpha and beta updates directly to your Dashboard.":[""],"Enter your license key to activate updates.":["Ange din licensnyckel f\u00f6r att aktivera uppdateringar."],"Not receiving premium updates.":["Tar inte emot premiumuppdateringar."],"Receiving premium updates.":["Tar emot premiumuppdateringar."],"Options exported":["Alternativ exporterad"],"This will delete all settings for this module. It cannot be undone.":["Detta kommer ta bort alla inst\u00e4llningar f\u00f6r denna modul. Det kan inte \u00e5ngras."],"Open tools for this module.":["\u00d6ppna verktyg f\u00f6r denna modul."],"Open Elements":["\u00d6ppna element"],"Open Site Library":["\u00d6ppna webbplatsbibliotek"],"Settings reset.":["Inst\u00e4llningar \u00e5terst\u00e4lls."],"Typography":["Typografi"],"All":["Alla"],"Reset":["\u00c5terst\u00e4ll"],"Modules":["Moduler"],"License Key":["Licensnyckel"],"Deactivate":["Inaktivera"],"Activate":["Aktivera"],"This module has been deprecated. Deactivating it will remove it from this list.":["Denna modul har tagits ur bruk. Vid inaktivering kommer den att tas bort fr\u00e5n denna lista."],"Import":["Importera"],"Export":["Exportera"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-ecf9f3c2af10c4f2dfbf4f42504922d1.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-ecf9f3c2af10c4f2dfbf4f42504922d1.json deleted file mode 100644 index f7a81aff..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE-ecf9f3c2af10c4f2dfbf4f42504922d1.json +++ /dev/null @@ -1 +0,0 @@ -{"translation-revision-date":"2022-10-01 13:13:24+0000","generator":"WP-CLI\/2.6.0","source":"dist\/customizer.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"sv_SE","plural-forms":"nplurals=2; plural=n != 1;"},"Related\/Upsell Product Titles":["Produktrubriker f\u00f6r relaterad\/merf\u00f6rs\u00e4ljning"],"Catalog Product Titles":[""],"Off-Canvas Sub-Menu Items":[""],"Off-Canvas Menu Items":[""],"Secondary Mobile Menu Toggle":[""],"Secondary Sub-Menu Items":[""],"Secondary Menu Items":["Sekund\u00e4ra menyalternativ"],"Off-Canvas Panel":[""],"WooCommerce":["WooCommerce"],"Secondary Navigation":["Sekund\u00e4r navigation"]}}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE.mo b/wp-content/upgrade-temp-backup/plugins/gp-premium/langs/gp-premium-sv_SE.mo deleted file mode 100644 index 2452b734b18641f2105f789083545b8235a739f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50196 zcmb8237lM2mH$iGBq;li$YY5FlkP0+0fDR#l0Zx+AZ}RQRoz|b>Z-P?I-wnPMA1P+ zaoV!=(?3Dw`|IKVU8wi}8>;+| zUS6pj4G)8QZxNLLg~3fw?Ng2CU3eJomqNw=mhitFs=Yn}72kbO@BJH8ef}a?InUpF z98~#_fy(y@Q1vqa_l9Q#&yD97K-JF%cqAN#3O@st?hB#fxe2PCZVvbDQ04t#_}>GS zpZlQRe-J94-+<~DKZPpSzH}=29}4$_r$B{Y1eL$jq4IMMR6AS-mF}~k!i@!6@J!s( zkSis-CZeYL|)de*s*8`?YWp{5aJ3{C9W)Jm3Ov zzlBiketvK*RJk@m)!#Fq>Z=Qtk88vKjZo!zFI4+{0xDmhhAP)rpz8DgLDkE5pvwIt zsQ7*f_5PzT^z;vfYM;kLgza3ENz8ET= z*FlB9CHQwx>HIxZxGx0%8Lr0tW2pQtUE%Lv2vwi!;PG$^RC{-z>gy%JS3srn`f%S0 z75}@S+Vf*j{pJ4P_rm`-@EH6LVKPy=3xnsvV{u;$Plm(L#x+#`dkZ`fz7MKhz5+Eq zz7O@@AEEMl>?+UiIZ*GfhYEK!R6Xnn_shclH&F8715odO5h`Clgi7bvQ29NO%F^=% zQ1PvW%Ga}?!gZnIc^Opu+zQoS?hOBbgsR8y!3_QnRJ_NoLB_x{pyC~dOW||jneg3E z@qZgCU%!Sb*S>2#zGI=%9SE+4>X%nTg>OT()APgshVXw2RQh*7)yt>i`B%gJU8wi| z3#y;(b+Px4gP`2UKs}!yTn3fyg;3?Z9I9Q0!~J}y@UMdECpSZde=pQ{{RC8gKL_`P z55htC4Y&{4G)vkYl zO84>WynRlF%Fk-JH{1*r@0Gz(sQgcd`z28EzYgvL-xltjQ0cut_;I*D?)$=hKUBKk z3ircM@%$Vrz28BV^MFgeKA!;Pe=bz|mq5k;RJcE^L8ae<^I#9E-v1IR+>PP?CaC`Q zx8eR6T#oy*Q2p&u>%BgYf@-f5pz31@RJ&dPp9rslPlGRn2f%-Z3io}eeEtfmUH0DK z`FJc;e8)hQ`$WDkya!$u{SQ74_iCv6*&M7v$=B^r?e~iC-wBnU4~PG!!~Yvl z_4!k%bp8u&hVw4>d_NN^KP{+uUjP;E^-%eJXZXJ#D*n$w<&XsYbJ z$>Y5gUXAQ&~P`Dkc9$yAEu3i=H+o8h02Oa|Ng38~gq3ZKNsC;}ED*a!E z{~w{!J#fhLb2L=EPk@KQGvEpEVyJwML8U(hRh}JC_4N{{bl(cqkKPMa51$SH`{7}@ zzYF#J*HHO8c#EfZB9!}V_yl+fRD5Icdhn_vdt0TthU;r|V&`u`==d%uHA;elJd zycfa4aj%Ce-?O3Q^meFu^>tA1y&o#xPeIk!Ls0YD_u_fw3im%0DnBQ|Bj9qV{BMFP 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 Wg`Ai?nMnXa@y?xR=3a8Q+$G6?)bd6J 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 wpColorPickerAlpha.version ) { - return; - } - } - - // Prevent multiple initiations - if ( Color.fn.hasOwnProperty( 'to_s' ) ) { - return; - } - - // Create new method to replace the `Color.toString()` inside the scripts. - Color.fn.to_s = function( type ) { - type = ( type || 'hex' ); - // Change hex to rgba to return the correct color. - if ( 'hex' === type && this._alpha < 1 ) { - type = 'rgba'; - } - - var color = ''; - if ( 'hex' === type ) { - color = this.toString(); - } else if ( ! this.error ) { - color = this.toCSS( type ).replace( /\(\s+/, '(' ).replace( /\s+\)/, ')' ); - } - return color; - } - - // Register the global variable. - window.wpColorPickerAlpha = wpColorPickerAlpha; - - // Background image encoded - var backgroundImage = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAAHnlligAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHJJREFUeNpi+P///4EDBxiAGMgCCCAGFB5AADGCRBgYDh48CCRZIJS9vT2QBAggFBkmBiSAogxFBiCAoHogAKIKAlBUYTELAiAmEtABEECk20G6BOmuIl0CIMBQ/IEMkO0myiSSraaaBhZcbkUOs0HuBwDplz5uFJ3Z4gAAAABJRU5ErkJggg=='; - - /** - * Iris - */ - $.widget( 'a8c.iris', $.a8c.iris, { - /** - * Alpha options - * - * @since 3.0.0 - * - * @type {Object} - */ - alphaOptions: { - alphaEnabled: false, - }, - /** - * Get the current color or the new color. - * - * @since 3.0.0 - * @access private - * - * @param {Object|*} The color instance if not defined return the cuurent color. - * - * @return {string} The element's color. - */ - _getColor: function( color ) { - if ( color === undef ) { - color = this._color; - } - - if ( this.alphaOptions.alphaEnabled ) { - color = color.to_s( this.alphaOptions.alphaColorType ); - if ( ! this.alphaOptions.alphaColorWithSpace ) { - color = color.replace( /\s+/g, '' ); - } - return color; - } - return color.toString(); - }, - /** - * Create widget - * - * @since 3.0.0 - * @access private - * - * @return {void} - */ - _create: function() { - try { - // Try to get the wpColorPicker alpha options. - this.alphaOptions = this.element.wpColorPicker( 'instance' ).alphaOptions; - } catch( e ) {} - - // We make sure there are all options - $.extend( {}, this.alphaOptions, { - alphaEnabled: false, - alphaCustomWidth: 130, - alphaReset: false, - alphaColorType: 'hex', - alphaColorWithSpace: false, - } ); - - this._super(); - }, - /** - * Binds event listeners to the Iris. - * - * @since 3.0.0 - * @access private - * - * @return {void} - */ - _addInputListeners: function( input ) { - var self = this, - debounceTimeout = 100, - callback = function( event ){ - var val = input.val(), - color = new Color( val ), - val = val.replace( /^(#|(rgb|hsl)a?)/, '' ), - type = self.alphaOptions.alphaColorType; - - input.removeClass( 'iris-error' ); - - if ( ! color.error ) { - // let's not do this on keyup for hex shortcodes - if ( 'hex' !== type || ! ( event.type === 'keyup' && val.match( /^[0-9a-fA-F]{3}$/ ) ) ) { - // Compare color ( #AARRGGBB ) - if ( color.toIEOctoHex() !== self._color.toIEOctoHex() ) { - self._setOption( 'color', self._getColor( color ) ); - } - } - } else if ( val !== '' ) { - input.addClass( 'iris-error' ); - } - }; - - input.on( 'change', callback ).on( 'keyup', self._debounce( callback, debounceTimeout ) ); - - // If we initialized hidden, show on first focus. The rest is up to you. - if ( self.options.hide ) { - input.one( 'focus', function() { - self.show(); - }); - } - }, - /** - * Init Controls - * - * @since 3.0.0 - * @access private - * - * @return {void} - */ - _initControls: function() { - this._super(); - - if ( this.alphaOptions.alphaEnabled ) { - // Create Alpha controls - var self = this, - stripAlpha = self.controls.strip.clone(false, false), - stripAlphaSlider = stripAlpha.find( '.iris-slider-offset' ), - controls = { - stripAlpha : stripAlpha, - stripAlphaSlider : stripAlphaSlider - }; - - stripAlpha.addClass( 'iris-strip-alpha' ); - stripAlphaSlider.addClass( 'iris-slider-offset-alpha' ); - stripAlpha.appendTo( self.picker.find( '.iris-picker-inner' ) ); - - // Push new controls - $.each( controls, function( k, v ) { - self.controls[k] = v; - } ); - - // Create slider - self.controls.stripAlphaSlider.slider( { - orientation : 'vertical', - min : 0, - max : 100, - step : 1, - value : parseInt( self._color._alpha * 100 ), - slide : function( event, ui ) { - self.active = 'strip'; - // Update alpha value - self._color._alpha = parseFloat( ui.value / 100 ); - self._change.apply( self, arguments ); - } - } ); - } - }, - /** - * Create the controls sizes - * - * @since 3.0.0 - * @access private - * - * @param {bool} reset Set to True for recreate the controls sizes. - * - * @return {void} - */ - _dimensions: function( reset ) { - this._super( reset ); - - if ( this.alphaOptions.alphaEnabled ) { - var self = this, - opts = self.options, - controls = self.controls, - square = controls.square, - strip = self.picker.find( '.iris-strip' ), - innerWidth, squareWidth, stripWidth, stripMargin, totalWidth; - - /** - * I use Math.round() to avoid possible size errors, - * this function returns the value of a number rounded - * to the nearest integer. - * - * The width to append all widgets, - * if border is enabled, 22 is subtracted. - * 20 for css left and right property - * 2 for css border - */ - innerWidth = Math.round( self.picker.outerWidth( true ) - ( opts.border ? 22 : 0 ) ); - // The width of the draggable, aka square. - squareWidth = Math.round( square.outerWidth() ); - // The width for the sliders - stripWidth = Math.round( ( innerWidth - squareWidth ) / 2 ); - // The margin for the sliders - stripMargin = Math.round( stripWidth / 2 ); - // The total width of the elements. - totalWidth = Math.round( squareWidth + ( stripWidth * 2 ) + ( stripMargin * 2 ) ); - - // Check and change if necessary. - while ( totalWidth > innerWidth ) { - stripWidth = Math.round( stripWidth - 2 ); - stripMargin = Math.round( stripMargin - 1 ); - totalWidth = Math.round( squareWidth + ( stripWidth * 2 ) + ( stripMargin * 2 ) ); - } - - - square.css( 'margin', '0' ); - strip.width( stripWidth ).css( 'margin-left', stripMargin + 'px' ); - } - }, - /** - * Callback to update the controls and the current color. - * - * @since 3.0.0 - * @access private - * - * @return {void} - */ - _change: function() { - var self = this, - active = self.active; - - self._super(); - - if ( self.alphaOptions.alphaEnabled ) { - var controls = self.controls, - alpha = parseInt( self._color._alpha * 100 ), - color = self._color.toRgb(), - gradient = [ - 'rgb(' + color.r + ',' + color.g + ',' + color.b + ') 0%', - 'rgba(' + color.r + ',' + color.g + ',' + color.b + ', 0) 100%' - ], - target = self.picker.closest( '.wp-picker-container' ).find( '.wp-color-result' ); - - self.options.color = self._getColor(); - // Generate background slider alpha, only for CSS3. - controls.stripAlpha.css( { 'background' : 'linear-gradient(to bottom, ' + gradient.join( ', ' ) + '), url(' + backgroundImage + ')' } ); - // Update alpha value - if ( active ) { - controls.stripAlphaSlider.slider( 'value', alpha ); - } - - if ( ! self._color.error ) { - self.element.removeClass( 'iris-error' ).val( self.options.color ); - } - - self.picker.find( '.iris-palette-container' ).on( 'click.palette', '.iris-palette', function() { - var color = $( this ).data( 'color' ); - if ( self.alphaOptions.alphaReset ) { - self._color._alpha = 1; - color = self._getColor(); - } - self._setOption( 'color', color ); - } ); - } - }, - /** - * Paint dimensions. - * - * @since 3.0.0 - * @access private - * - * @param {string} origin Origin (position). - * @param {string} control Type of the control, - * - * @return {void} - */ - _paintDimension: function( origin, control ) { - var self = this, - color = false; - - // Fix for slider hue opacity. - if ( self.alphaOptions.alphaEnabled && 'strip' === control ) { - color = self._color; - self._color = new Color( color.toString() ); - self.hue = self._color.h(); - } - - self._super( origin, control ); - - // Restore the color after paint. - if ( color ) { - self._color = color; - } - }, - /** - * To update the options, see original source to view the available options. - * - * @since 3.0.0 - * - * @param {string} key The Option name. - * @param {mixed} value The Option value to update. - * - * @return {void} - */ - _setOption: function( key, value ) { - var self = this; - if ( 'color' === key && self.alphaOptions.alphaEnabled ) { - // cast to string in case we have a number - value = '' + value; - newColor = new Color( value ).setHSpace( self.options.mode ); - // Check if error && Check the color to prevent callbacks with the same color. - if ( ! newColor.error && self._getColor( newColor ) !== self._getColor() ) { - self._color = newColor; - self.options.color = self._getColor(); - self.active = 'external'; - self._change(); - } - } else { - return self._super( key, value ); - } - }, - /** - * Returns the iris object if no new color is provided. If a new color is provided, it sets the new color. - * - * @param newColor {string|*} The new color to use. Can be undefined. - * - * @since 3.0.0 - * - * @return {string} The element's color. - */ - color: function( newColor ) { - if ( newColor === true ) { - return this._color.clone(); - } - if ( newColor === undef ) { - return this._getColor(); - } - this.option( 'color', newColor ); - }, - } ); - - /** - * wpColorPicker - */ - $.widget( 'wp.wpColorPicker', $.wp.wpColorPicker, { - /** - * Alpha options - * - * @since 3.0.0 - * - * @type {Object} - */ - alphaOptions: { - alphaEnabled: false, - }, - /** - * Get the alpha options. - * - * @since 3.0.0 - * @access private - * - * @return {object} The current alpha options. - */ - _getAlphaOptions: function() { - var el = this.element, - type = ( el.data( 'type' ) || this.options.type ), - color = ( el.data( 'defaultColor' ) || el.val() ), - options = { - alphaEnabled: ( el.data( 'alphaEnabled' ) || false ), - alphaCustomWidth: 130, - alphaReset: false, - alphaColorType: 'rgb', - alphaColorWithSpace: false, - }; - - if ( options.alphaEnabled ) { - options.alphaEnabled = ( el.is( 'input' ) && 'full' === type ); - } - - if ( ! options.alphaEnabled ) { - return options; - } - - options.alphaColorWithSpace = ( color && color.match( /\s/ ) ); - - $.each( options, function( name, defaultValue ) { - var value = ( el.data( name ) || defaultValue ); - switch ( name ) { - case 'alphaCustomWidth': - value = ( value ? parseInt( value, 10 ) : 0 ); - value = ( isNaN( value ) ? defaultValue : value ); - break; - case 'alphaColorType': - if ( ! value.match( /^(hex|(rgb|hsl)a?)$/ ) ) { - if ( color && color.match( /^#/ ) ) { - value = 'hex'; - } else if ( color && color.match( /^hsla?/ ) ) { - value = 'hsl'; - } else { - value = defaultValue; - } - } - break; - default: - value = !!value; - break; - } - options[name] = value; - } ); - - return options; - }, - /** - * Create widget - * - * @since 3.0.0 - * @access private - * - * @return {void} - */ - _create: function() { - // Return early if Iris support is missing. - if ( ! $.support.iris ) { - return; - } - - // Set the alpha options for the current instance. - this.alphaOptions = this._getAlphaOptions(); - - // Create widget. - this._super(); - }, - /** - * Binds event listeners to the color picker and create options, etc... - * - * @since 3.0.0 - * @access private - * - * @return {void} - */ - _addListeners: function() { - if ( ! this.alphaOptions.alphaEnabled ) { - return this._super(); - } - - var self = this, - el = self.element, - isDeprecated = self.toggler.is( 'a' ); - - this.alphaOptions.defaultWidth = el.width(); - if ( this.alphaOptions.alphaCustomWidth ) { - el.width( parseInt( this.alphaOptions.defaultWidth + this.alphaOptions.alphaCustomWidth, 10 ) ); - } - - self.toggler.css( { - 'position': 'relative', - 'background-image' : 'url(' + backgroundImage + ')' - } ); - - if ( isDeprecated ) { - self.toggler.html( '' ); - } else { - self.toggler.append( '' ); - } - - self.colorAlpha = self.toggler.find( 'span.color-alpha' ).css( { - 'width' : '30px', - 'height' : '100%', - 'position' : 'absolute', - 'top' : 0, - 'background-color' : el.val(), - } ); - - // Define the correct position for ltr or rtl direction. - if ( 'ltr' === self.colorAlpha.css( 'direction' ) ) { - self.colorAlpha.css( { - 'border-bottom-left-radius' : '2px', - 'border-top-left-radius' : '2px', - 'left' : 0 - } ); - } else { - self.colorAlpha.css( { - 'border-bottom-right-radius' : '2px', - 'border-top-right-radius' : '2px', - 'right' : 0 - } ); - } - - - el.iris( { - /** - * @summary Handles the onChange event if one has been defined in the options. - * - * Handles the onChange event if one has been defined in the options and additionally - * sets the background color for the toggler element. - * - * @since 3.0.0 - * - * @param {Event} event The event that's being called. - * @param {HTMLElement} ui The HTMLElement containing the color picker. - * - * @returns {void} - */ - change: function( event, ui ) { - self.colorAlpha.css( { 'background-color': ui.color.to_s( self.alphaOptions.alphaColorType ) } ); - - // fire change callback if we have one - if ( $.isFunction( self.options.change ) ) { - self.options.change.call( this, event, ui ); - } - } - } ); - - - /** - * Prevent any clicks inside this widget from leaking to the top and closing it. - * - * @since 3.0.0 - * - * @param {Event} event The event that's being called. - * - * @return {void} - */ - self.wrap.on( 'click.wpcolorpicker', function( event ) { - event.stopPropagation(); - }); - - /** - * Open or close the color picker depending on the class. - * - * @since 3.0.0 - */ - self.toggler.click( function() { - if ( self.toggler.hasClass( 'wp-picker-open' ) ) { - self.close(); - } else { - self.open(); - } - }); - - /** - * Checks if value is empty when changing the color in the color picker. - * If so, the background color is cleared. - * - * @since 3.0.0 - * - * @param {Event} event The event that's being called. - * - * @return {void} - */ - el.change( function( event ) { - var val = $( this ).val(); - - if ( el.hasClass( 'iris-error' ) || val === '' || val.match( /^(#|(rgb|hsl)a?)$/ ) ) { - if ( isDeprecated ) { - self.toggler.removeAttr( 'style' ); - } - - self.colorAlpha.css( 'background-color', '' ); - - // fire clear callback if we have one - if ( $.isFunction( self.options.clear ) ) { - self.options.clear.call( this, event ); - } - } - } ); - - /** - * Enables the user to either clear the color in the color picker or revert back to the default color. - * - * @since 3.0.0 - * - * @param {Event} event The event that's being called. - * - * @return {void} - */ - self.button.click( function( event ) { - if ( $( this ).hasClass( 'wp-picker-default' ) ) { - el.val( self.options.defaultColor ).change(); - } else if ( $( this ).hasClass( 'wp-picker-clear' ) ) { - el.val( '' ); - if ( isDeprecated ) { - self.toggler.removeAttr( 'style' ); - } - - self.colorAlpha.css( 'background-color', '' ); - - // fire clear callback if we have one - if ( $.isFunction( self.options.clear ) ) { - self.options.clear.call( this, event ); - } - - el.trigger( 'change' ); - } - } ); - }, - } ); -} ( jQuery ) ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/alpha-color-picker/wp-color-picker-alpha.min.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/alpha-color-picker/wp-color-picker-alpha.min.js deleted file mode 100644 index fde8c833..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/alpha-color-picker/wp-color-picker-alpha.min.js +++ /dev/null @@ -1,11 +0,0 @@ -/**! - * wp-color-picker-alpha - * - * Overwrite Automattic Iris for enabled Alpha Channel in wpColorPicker - * Only run in input and is defined data alpha in true - * - * Version: 3.0.0 - * https://github.com/kallookoo/wp-color-picker-alpha - * Licensed under the GPLv2 license or later. - */ -!function(e,a){var l,o={version:300};if("wpColorPickerAlpha"in window&&"version"in window.wpColorPickerAlpha){var t=parseInt(window.wpColorPickerAlpha.version,10);if(!isNaN(t)&&o.version<=t)return}Color.fn.hasOwnProperty("to_s")||(Color.fn.to_s=function(o){"hex"===(o=o||"hex")&&this._alpha<1&&(o="rgba");var a="";return"hex"===o?a=this.toString():this.error||(a=this.toCSS(o).replace(/\(\s+/,"(").replace(/\s+\)/,")")),a},window.wpColorPickerAlpha=o,l="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAAHnlligAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHJJREFUeNpi+P///4EDBxiAGMgCCCAGFB5AADGCRBgYDh48CCRZIJS9vT2QBAggFBkmBiSAogxFBiCAoHogAKIKAlBUYTELAiAmEtABEECk20G6BOmuIl0CIMBQ/IEMkO0myiSSraaaBhZcbkUOs0HuBwDplz5uFJ3Z4gAAAABJRU5ErkJggg==",e.widget("a8c.iris",e.a8c.iris,{alphaOptions:{alphaEnabled:!1},_getColor:function(o){return o===a&&(o=this._color),this.alphaOptions.alphaEnabled?(o=o.to_s(this.alphaOptions.alphaColorType),this.alphaOptions.alphaColorWithSpace||(o=o.replace(/\s+/g,"")),o):o.toString()},_create:function(){try{this.alphaOptions=this.element.wpColorPicker("instance").alphaOptions}catch(o){}e.extend({},this.alphaOptions,{alphaEnabled:!1,alphaCustomWidth:130,alphaReset:!1,alphaColorType:"hex",alphaColorWithSpace:!1}),this._super()},_addInputListeners:function(i){function o(o){var a=i.val(),t=new Color(a),a=a.replace(/^(#|(rgb|hsl)a?)/,""),r=l.alphaOptions.alphaColorType;i.removeClass("iris-error"),t.error?""!==a&&i.addClass("iris-error"):"hex"===r&&"keyup"===o.type&&a.match(/^[0-9a-fA-F]{3}$/)||t.toIEOctoHex()!==l._color.toIEOctoHex()&&l._setOption("color",l._getColor(t))}var l=this;i.on("change",o).on("keyup",l._debounce(o,100)),l.options.hide&&i.one("focus",function(){l.show()})},_initControls:function(){var t,o,a,r;this._super(),this.alphaOptions.alphaEnabled&&(a=(o=(t=this).controls.strip.clone(!1,!1)).find(".iris-slider-offset"),r={stripAlpha:o,stripAlphaSlider:a},o.addClass("iris-strip-alpha"),a.addClass("iris-slider-offset-alpha"),o.appendTo(t.picker.find(".iris-picker-inner")),e.each(r,function(o,a){t.controls[o]=a}),t.controls.stripAlphaSlider.slider({orientation:"vertical",min:0,max:100,step:1,value:parseInt(100*t._color._alpha),slide:function(o,a){t.active="strip",t._color._alpha=parseFloat(a.value/100),t._change.apply(t,arguments)}}))},_dimensions:function(o){if(this._super(o),this.alphaOptions.alphaEnabled){for(var a=this,t=a.options,r=a.controls.square,o=a.picker.find(".iris-strip"),i=Math.round(a.picker.outerWidth(!0)-(t.border?22:0)),l=Math.round(r.outerWidth()),e=Math.round((i-l)/2),s=Math.round(e/2),n=Math.round(l+2*e+2*s);i'):t.toggler.append(''),t.colorAlpha=t.toggler.find("span.color-alpha").css({width:"30px",height:"100%",position:"absolute",top:0,"background-color":r.val()}),"ltr"===t.colorAlpha.css("direction")?t.colorAlpha.css({"border-bottom-left-radius":"2px","border-top-left-radius":"2px",left:0}):t.colorAlpha.css({"border-bottom-right-radius":"2px","border-top-right-radius":"2px",right:0}),r.iris({change:function(o,a){t.colorAlpha.css({"background-color":a.color.to_s(t.alphaOptions.alphaColorType)}),e.isFunction(t.options.change)&&t.options.change.call(this,o,a)}}),t.wrap.on("click.wpcolorpicker",function(o){o.stopPropagation()}),t.toggler.click(function(){t.toggler.hasClass("wp-picker-open")?t.close():t.open()}),r.change(function(o){var a=e(this).val();(r.hasClass("iris-error")||""===a||a.match(/^(#|(rgb|hsl)a?)$/))&&(i&&t.toggler.removeAttr("style"),t.colorAlpha.css("background-color",""),e.isFunction(t.options.clear)&&t.options.clear.call(this,o))}),t.button.click(function(o){e(this).hasClass("wp-picker-default")?r.val(t.options.defaultColor).change():e(this).hasClass("wp-picker-clear")&&(r.val(""),i&&t.toggler.removeAttr("style"),t.colorAlpha.css("background-color",""),e.isFunction(t.options.clear)&&t.options.clear.call(this,o),r.trigger("change"))})}}))}(jQuery); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/class-make-css.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/class-make-css.php deleted file mode 100644 index 19876b27..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/class-make-css.php +++ /dev/null @@ -1,202 +0,0 @@ -_selector !== '' ){ - $this->add_selector_rules_to_output(); - } - $this->_selector = $selector; - return $this; - } - - /** - * Adds a css property with value to the css output - * - * @access public - * @since 1.0 - * - * @param string $property - the css property - * @param string $value - the value to be placed with the property - * @param string $og_default - check to see if the value matches the default - * @param string $unit - the unit for the value (px) - * @return $this - */ - public function add_property( $property, $value, $og_default = false, $unit = false ) { - // Add our unit to our value if it exists - if ( $unit && '' !== $unit ) { - $value = $value . $unit; - if ( '' !== $og_default ) { - $og_default = $og_default . $unit; - } - } - - // If we don't have a value or our value is the same as our og default, bail - if ( empty( $value ) || $og_default == $value ) - return false; - - $this->_css .= $property . ':' . $value . ';'; - return $this; - } - - /** - * Sets a media query in the class - * - * @since 1.1 - * @param string $value - * @return $this - */ - public function start_media_query( $value ) { - // Add the current rules to the output - $this->add_selector_rules_to_output(); - - // Add any previous media queries to the output - if ( ! empty( $this->_media_query ) ) { - $this->add_media_query_rules_to_output(); - } - - // Set the new media query - $this->_media_query = $value; - return $this; - } - - /** - * Stops using a media query. - * - * @see start_media_query() - * - * @since 1.1 - * @return $this - */ - public function stop_media_query() { - return $this->start_media_query( null ); - } - - /** - * Adds the current media query's rules to the class' output variable - * - * @since 1.1 - * @return $this - */ - private function add_media_query_rules_to_output() { - if( !empty( $this->_media_query_output ) ) { - $this->_output .= sprintf( '@media %1$s{%2$s}', $this->_media_query, $this->_media_query_output ); - - // Reset the media query output string - $this->_media_query_output = ''; - } - return $this; - } - - /** - * Adds the current selector rules to the output variable - * - * @access private - * @since 1.0 - * - * @return $this - */ - private function add_selector_rules_to_output() { - if( !empty( $this->_css ) ) { - $this->_selector_output = $this->_selector; - $selector_output = sprintf( '%1$s{%2$s}', $this->_selector_output, $this->_css ); - - // Add our CSS to the output - if ( ! empty( $this->_media_query ) ) { - $this->_media_query_output .= $selector_output; - $this->_css = ''; - } else { - $this->_output .= $selector_output; - } - - // Reset the css - $this->_css = ''; - } - - return $this; - } - - /** - * Returns the minified css in the $_output variable - * - * @access public - * @since 1.0 - * - * @return string - */ - public function css_output() - { - // Add current selector's rules to output - $this->add_selector_rules_to_output(); - - // Output minified css - return $this->_output; - } - -} -endif; diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/class-plugin-updater.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/class-plugin-updater.php deleted file mode 100644 index 42fb1e09..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/class-plugin-updater.php +++ /dev/null @@ -1,676 +0,0 @@ -api_url = trailingslashit( $_api_url ); - $this->api_data = $_api_data; - $this->plugin_file = $_plugin_file; - $this->name = plugin_basename( $_plugin_file ); - $this->slug = basename( $_plugin_file, '.php' ); - $this->version = $_api_data['version']; - $this->wp_override = isset( $_api_data['wp_override'] ) ? (bool) $_api_data['wp_override'] : false; - $this->beta = ! empty( $this->api_data['beta'] ) ? true : false; - $this->failed_request_cache_key = 'edd_sl_failed_http_' . md5( $this->api_url ); - - $edd_plugin_data[ $this->slug ] = $this->api_data; - - /** - * Fires after the $edd_plugin_data is setup. - * - * @since x.x.x - * - * @param array $edd_plugin_data Array of EDD SL plugin data. - */ - do_action( 'post_edd_sl_plugin_updater_setup', $edd_plugin_data ); - - // Set up hooks. - $this->init(); - - } - - /** - * Set up WordPress filters to hook into WP's update process. - * - * @uses add_filter() - * - * @return void - */ - public function init() { - - add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_update' ) ); - add_filter( 'plugins_api', array( $this, 'plugins_api_filter' ), 10, 3 ); - add_action( 'after_plugin_row', array( $this, 'show_update_notification' ), 10, 2 ); - add_action( 'admin_init', array( $this, 'show_changelog' ) ); - - } - - /** - * Check for Updates at the defined API endpoint and modify the update array. - * - * This function dives into the update API just when WordPress creates its update array, - * then adds a custom API call and injects the custom plugin data retrieved from the API. - * It is reassembled from parts of the native WordPress plugin update code. - * See wp-includes/update.php line 121 for the original wp_update_plugins() function. - * - * @uses api_request() - * - * @param array $_transient_data Update array build by WordPress. - * @return array Modified update array with custom plugin data. - */ - public function check_update( $_transient_data ) { - - global $pagenow; - - if ( ! is_object( $_transient_data ) ) { - $_transient_data = new stdClass(); - } - - if ( ! empty( $_transient_data->response ) && ! empty( $_transient_data->response[ $this->name ] ) && false === $this->wp_override ) { - return $_transient_data; - } - - $current = $this->get_repo_api_data(); - if ( false !== $current && is_object( $current ) && isset( $current->new_version ) ) { - if ( version_compare( $this->version, $current->new_version, '<' ) ) { - $_transient_data->response[ $this->name ] = $current; - } else { - // Populating the no_update information is required to support auto-updates in WordPress 5.5. - $_transient_data->no_update[ $this->name ] = $current; - } - } - $_transient_data->last_checked = time(); - $_transient_data->checked[ $this->name ] = $this->version; - - return $_transient_data; - } - - /** - * Get repo API data from store. - * Save to cache. - * - * @return \stdClass - */ - public function get_repo_api_data() { - $version_info = $this->get_cached_version_info(); - - if ( false === $version_info ) { - $version_info = $this->api_request( - 'plugin_latest_version', - array( - 'slug' => $this->slug, - 'beta' => $this->beta, - ) - ); - if ( ! $version_info ) { - return false; - } - - // This is required for your plugin to support auto-updates in WordPress 5.5. - $version_info->plugin = $this->name; - $version_info->id = $this->name; - $version_info->tested = $this->get_tested_version( $version_info ); - - $this->set_version_info_cache( $version_info ); - } - - return $version_info; - } - - /** - * Gets the plugin's tested version. - * - * @since 1.9.2 - * @param object $version_info - * @return null|string - */ - private function get_tested_version( $version_info ) { - - // There is no tested version. - if ( empty( $version_info->tested ) ) { - return null; - } - - // Strip off extra version data so the result is x.y or x.y.z. - list( $current_wp_version ) = explode( '-', get_bloginfo( 'version' ) ); - - // The tested version is greater than or equal to the current WP version, no need to do anything. - if ( version_compare( $version_info->tested, $current_wp_version, '>=' ) ) { - return $version_info->tested; - } - $current_version_parts = explode( '.', $current_wp_version ); - $tested_parts = explode( '.', $version_info->tested ); - - // The current WordPress version is x.y.z, so update the tested version to match it. - if ( isset( $current_version_parts[2] ) && $current_version_parts[0] === $tested_parts[0] && $current_version_parts[1] === $tested_parts[1] ) { - $tested_parts[2] = $current_version_parts[2]; - } - - return implode( '.', $tested_parts ); - } - - /** - * Show the update notification on multisite subsites. - * - * @param string $file - * @param array $plugin - */ - public function show_update_notification( $file, $plugin ) { - - // Return early if in the network admin, or if this is not a multisite install. - if ( is_network_admin() || ! is_multisite() ) { - return; - } - - // Allow single site admins to see that an update is available. - if ( ! current_user_can( 'activate_plugins' ) ) { - return; - } - - if ( $this->name !== $file ) { - return; - } - - // Do not print any message if update does not exist. - $update_cache = get_site_transient( 'update_plugins' ); - - if ( ! isset( $update_cache->response[ $this->name ] ) ) { - if ( ! is_object( $update_cache ) ) { - $update_cache = new stdClass(); - } - $update_cache->response[ $this->name ] = $this->get_repo_api_data(); - } - - // Return early if this plugin isn't in the transient->response or if the site is running the current or newer version of the plugin. - if ( empty( $update_cache->response[ $this->name ] ) || version_compare( $this->version, $update_cache->response[ $this->name ]->new_version, '>=' ) ) { - return; - } - - printf( - '', - $this->slug, - $file, - in_array( $this->name, $this->get_active_plugins(), true ) ? 'active' : 'inactive' - ); - - echo ''; - echo ''; - } - - /** - * Gets the plugins active in a multisite network. - * - * @return array - */ - private function get_active_plugins() { - $active_plugins = (array) get_option( 'active_plugins' ); - $active_network_plugins = (array) get_site_option( 'active_sitewide_plugins' ); - - return array_merge( $active_plugins, array_keys( $active_network_plugins ) ); - } - - /** - * Updates information on the "View version x.x details" page with custom data. - * - * @uses api_request() - * - * @param mixed $_data - * @param string $_action - * @param object $_args - * @return object $_data - */ - public function plugins_api_filter( $_data, $_action = '', $_args = null ) { - - if ( 'plugin_information' !== $_action ) { - - return $_data; - - } - - if ( ! isset( $_args->slug ) || ( $_args->slug !== $this->slug ) ) { - - return $_data; - - } - - $to_send = array( - 'slug' => $this->slug, - 'is_ssl' => is_ssl(), - 'fields' => array( - 'banners' => array(), - 'reviews' => false, - 'icons' => array(), - ), - ); - - // Get the transient where we store the api request for this plugin for 24 hours - $edd_api_request_transient = $this->get_cached_version_info(); - - //If we have no transient-saved value, run the API, set a fresh transient with the API value, and return that value too right now. - if ( empty( $edd_api_request_transient ) ) { - - $api_response = $this->api_request( 'plugin_information', $to_send ); - - // Expires in 3 hours - $this->set_version_info_cache( $api_response ); - - if ( false !== $api_response ) { - $_data = $api_response; - } - } else { - $_data = $edd_api_request_transient; - } - - // Convert sections into an associative array, since we're getting an object, but Core expects an array. - if ( isset( $_data->sections ) && ! is_array( $_data->sections ) ) { - $_data->sections = $this->convert_object_to_array( $_data->sections ); - } - - // Convert banners into an associative array, since we're getting an object, but Core expects an array. - if ( isset( $_data->banners ) && ! is_array( $_data->banners ) ) { - $_data->banners = $this->convert_object_to_array( $_data->banners ); - } - - // Convert icons into an associative array, since we're getting an object, but Core expects an array. - if ( isset( $_data->icons ) && ! is_array( $_data->icons ) ) { - $_data->icons = $this->convert_object_to_array( $_data->icons ); - } - - // Convert contributors into an associative array, since we're getting an object, but Core expects an array. - if ( isset( $_data->contributors ) && ! is_array( $_data->contributors ) ) { - $_data->contributors = $this->convert_object_to_array( $_data->contributors ); - } - - if ( ! isset( $_data->plugin ) ) { - $_data->plugin = $this->name; - } - - return $_data; - } - - /** - * Convert some objects to arrays when injecting data into the update API - * - * Some data like sections, banners, and icons are expected to be an associative array, however due to the JSON - * decoding, they are objects. This method allows us to pass in the object and return an associative array. - * - * @since 3.6.5 - * - * @param stdClass $data - * - * @return array - */ - private function convert_object_to_array( $data ) { - if ( ! is_array( $data ) && ! is_object( $data ) ) { - return array(); - } - $new_data = array(); - foreach ( $data as $key => $value ) { - $new_data[ $key ] = is_object( $value ) ? $this->convert_object_to_array( $value ) : $value; - } - - return $new_data; - } - - /** - * Disable SSL verification in order to prevent download update failures - * - * @param array $args - * @param string $url - * @return object $array - */ - public function http_request_args( $args, $url ) { - - if ( strpos( $url, 'https://' ) !== false && strpos( $url, 'edd_action=package_download' ) ) { - $args['sslverify'] = $this->verify_ssl(); - } - return $args; - - } - - /** - * Calls the API and, if successfull, returns the object delivered by the API. - * - * @uses get_bloginfo() - * @uses wp_remote_post() - * @uses is_wp_error() - * - * @param string $_action The requested action. - * @param array $_data Parameters for the API action. - * @return false|object|void - */ - private function api_request( $_action, $_data ) { - $data = array_merge( $this->api_data, $_data ); - - if ( $data['slug'] !== $this->slug ) { - return; - } - - // Don't allow a plugin to ping itself - if ( trailingslashit( home_url() ) === $this->api_url ) { - return false; - } - - if ( $this->request_recently_failed() ) { - return false; - } - - return $this->get_version_from_remote(); - } - - /** - * Determines if a request has recently failed. - * - * @since 1.9.1 - * - * @return bool - */ - private function request_recently_failed() { - $failed_request_details = get_option( $this->failed_request_cache_key ); - - // Request has never failed. - if ( empty( $failed_request_details ) || ! is_numeric( $failed_request_details ) ) { - return false; - } - - /* - * Request previously failed, but the timeout has expired. - * This means we're allowed to try again. - */ - if ( time() > $failed_request_details ) { - delete_option( $this->failed_request_cache_key ); - - return false; - } - - return true; - } - - /** - * Logs a failed HTTP request for this API URL. - * We set a timestamp for 1 hour from now. This prevents future API requests from being - * made to this domain for 1 hour. Once the timestamp is in the past, API requests - * will be allowed again. This way if the site is down for some reason we don't bombard - * it with failed API requests. - * - * @see EDD_SL_Plugin_Updater::request_recently_failed - * - * @since 1.9.1 - */ - private function log_failed_request() { - update_option( $this->failed_request_cache_key, strtotime( '+1 hour' ) ); - } - - /** - * If available, show the changelog for sites in a multisite install. - */ - public function show_changelog() { - - if ( empty( $_REQUEST['edd_sl_action'] ) || 'view_plugin_changelog' !== $_REQUEST['edd_sl_action'] ) { - return; - } - - if ( empty( $_REQUEST['plugin'] ) ) { - return; - } - - if ( empty( $_REQUEST['slug'] ) || $this->slug !== $_REQUEST['slug'] ) { - return; - } - - if ( ! current_user_can( 'update_plugins' ) ) { - wp_die( esc_html__( 'You do not have permission to install plugin updates', 'easy-digital-downloads' ), esc_html__( 'Error', 'easy-digital-downloads' ), array( 'response' => 403 ) ); - } - - $version_info = $this->get_repo_api_data(); - if ( isset( $version_info->sections ) ) { - $sections = $this->convert_object_to_array( $version_info->sections ); - if ( ! empty( $sections['changelog'] ) ) { - echo '
    ' . wp_kses_post( $sections['changelog'] ) . '
    '; - } - } - - exit; - } - - /** - * Gets the current version information from the remote site. - * - * @return array|false - */ - private function get_version_from_remote() { - $api_params = array( - 'edd_action' => 'get_version', - 'license' => ! empty( $this->api_data['license'] ) ? $this->api_data['license'] : '', - 'item_name' => isset( $this->api_data['item_name'] ) ? $this->api_data['item_name'] : false, - 'item_id' => isset( $this->api_data['item_id'] ) ? $this->api_data['item_id'] : false, - 'version' => isset( $this->api_data['version'] ) ? $this->api_data['version'] : false, - 'slug' => $this->slug, - 'author' => $this->api_data['author'], - 'url' => home_url(), - 'beta' => $this->beta, - 'php_version' => phpversion(), - 'wp_version' => get_bloginfo( 'version' ), - ); - - /** - * Filters the parameters sent in the API request. - * - * @param array $api_params The array of data sent in the request. - * @param array $this->api_data The array of data set up in the class constructor. - * @param string $this->plugin_file The full path and filename of the file. - */ - $api_params = apply_filters( 'edd_sl_plugin_updater_api_params', $api_params, $this->api_data, $this->plugin_file ); - - $request = wp_remote_post( - $this->api_url, - array( - 'timeout' => 15, - 'sslverify' => $this->verify_ssl(), - 'body' => $api_params, - ) - ); - - if ( is_wp_error( $request ) || ( 200 !== wp_remote_retrieve_response_code( $request ) ) ) { - $this->log_failed_request(); - - return false; - } - - $request = json_decode( wp_remote_retrieve_body( $request ) ); - - if ( $request && isset( $request->sections ) ) { - $request->sections = maybe_unserialize( $request->sections ); - } else { - $request = false; - } - - if ( $request && isset( $request->banners ) ) { - $request->banners = maybe_unserialize( $request->banners ); - } - - if ( $request && isset( $request->icons ) ) { - $request->icons = maybe_unserialize( $request->icons ); - } - - if ( ! empty( $request->sections ) ) { - foreach ( $request->sections as $key => $section ) { - $request->$key = (array) $section; - } - } - - return $request; - } - - /** - * Get the version info from the cache, if it exists. - * - * @param string $cache_key - * @return object - */ - public function get_cached_version_info( $cache_key = '' ) { - - if ( empty( $cache_key ) ) { - $cache_key = $this->get_cache_key(); - } - - $cache = get_option( $cache_key ); - - // Cache is expired - if ( empty( $cache['timeout'] ) || time() > $cache['timeout'] ) { - return false; - } - - // We need to turn the icons into an array, thanks to WP Core forcing these into an object at some point. - $cache['value'] = json_decode( $cache['value'] ); - if ( ! empty( $cache['value']->icons ) ) { - $cache['value']->icons = (array) $cache['value']->icons; - } - - return $cache['value']; - - } - - /** - * Adds the plugin version information to the database. - * - * @param string $value - * @param string $cache_key - */ - public function set_version_info_cache( $value = '', $cache_key = '' ) { - - if ( empty( $cache_key ) ) { - $cache_key = $this->get_cache_key(); - } - - $data = array( - 'timeout' => strtotime( '+3 hours', time() ), - 'value' => wp_json_encode( $value ), - ); - - update_option( $cache_key, $data, 'no' ); - - // Delete the duplicate option - delete_option( 'edd_api_request_' . md5( serialize( $this->slug . $this->api_data['license'] . $this->beta ) ) ); - } - - /** - * Returns if the SSL of the store should be verified. - * - * @since 1.6.13 - * @return bool - */ - private function verify_ssl() { - return (bool) apply_filters( 'edd_sl_api_request_verify_ssl', true, $this ); - } - - /** - * Gets the unique key (option name) for a plugin. - * - * @since 1.9.0 - * @return string - */ - private function get_cache_key() { - $string = $this->slug . $this->api_data['license'] . $this->beta; - - return 'edd_sl_' . md5( serialize( $string ) ); - } - -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer-helpers.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer-helpers.php deleted file mode 100644 index 7bdb8f16..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer-helpers.php +++ /dev/null @@ -1,531 +0,0 @@ - wp_create_nonce( 'gp_customize_nonce' ) ) ); - wp_localize_script( 'generatepress-pro-typography-customizer', 'typography_defaults', generate_typography_default_fonts() ); - wp_localize_script( - 'generatepress-pro-typography-customizer', - 'generatePressTypography', - array( - 'googleFonts' => apply_filters( 'generate_typography_customize_list', generate_get_all_google_fonts( $number_of_fonts ) ) - ) - ); - } - - wp_enqueue_script( 'generatepress-pro-customizer-controls', plugin_dir_url( __FILE__ ) . 'customizer/controls/js/generatepress-controls.js', array( 'customize-controls', 'jquery' ), GP_PREMIUM_VERSION, true ); - - $overlay_defaults = apply_filters( 'generate_off_canvas_overlay_style_defaults', array( - 'backgroundColor' => 'rgba(10,10,10,0.95)', - 'textColor' => '#ffffff', - 'backgroundHoverColor' => 'rgba(0,0,0,0)', - 'backgroundCurrentColor' => 'rgba(0,0,0,0)', - 'subMenuBackgroundColor' => 'rgba(0,0,0,0)', - 'subMenuTextColor' => '#ffffff', - 'subMenuBackgroundHoverColor' => 'rgba(0,0,0,0)', - 'subMenuBackgroundCurrentColor' => 'rgba(0,0,0,0)', - 'fontWeight' => 200, - 'fontSize' => 25, - ) ); - - wp_localize_script( - 'gp-button-actions', - 'gpButtonActions', - array( - 'warning' => esc_html__( 'This will design your overlay by changing options in the Customizer for you. Once saved, this can not be undone.', 'gp-premium' ), - 'styling' => $overlay_defaults, - ) - ); - - $controls_a11y = array( - 'fontSizeLabel' => esc_html__( 'Font size', 'gp-premium' ), - 'mobileHeaderFontSizeLabel' => esc_html__( 'Mobile header font size', 'gp-premium' ), - ); - - if ( function_exists( 'generate_get_default_fonts' ) ) { - $font_defaults = generate_get_default_fonts(); - - $controls_a11y['siteTitleFontSize'] = $font_defaults['site_title_font_size']; - $controls_a11y['mobileSiteTitleFontSize'] = $font_defaults['mobile_site_title_font_size']; - } - - if ( function_exists( 'generate_get_color_defaults' ) ) { - $color_defaults = generate_get_color_defaults(); - - $controls_a11y['navigationTextColor'] = $color_defaults['navigation_text_color']; - $controls_a11y['siteTitleTextColor'] = $color_defaults['site_title_color']; - } - - if ( function_exists( 'generate_get_defaults' ) ) { - $defaults = generate_get_defaults(); - - $controls_a11y['navigationAlignment'] = $defaults['nav_alignment_setting']; - } - - wp_localize_script( - 'generatepress-pro-customizer-controls', - 'gpControls', - $controls_a11y - ); - - wp_enqueue_script( - 'generate-pro-customizer-controls', - GP_PREMIUM_DIR_URL . 'dist/customizer.js', - array( 'customize-controls', 'wp-i18n', 'wp-element', 'customize-base' ), - GP_PREMIUM_VERSION, - true - ); - - if ( function_exists( 'wp_set_script_translations' ) ) { - wp_set_script_translations( 'generate-pro-customizer-controls', 'gp-premium' ); - } - - wp_localize_script( - 'generate-pro-customizer-controls', - 'gpCustomizerControls', - array( - 'hasSecondaryNav' => generatepress_is_module_active( 'generate_package_secondary_nav', 'GENERATE_SECONDARY_NAV' ), - 'hasMenuPlus' => generatepress_is_module_active( 'generate_package_menu_plus', 'GENERATE_MENU_PLUS' ), - 'hasWooCommerce' => class_exists( 'WooCommerce' ) && generatepress_is_module_active( 'generate_package_woocommerce', 'GENERATE_WOOCOMMERCE' ), - ) - ); -} - -add_action( 'customize_register', 'generate_premium_customizer_shortcut_controls', 100 ); -/** - * Add shortcuts to sections we don't control in this plugin. - * - * @since 1.8 - */ -function generate_premium_customizer_shortcut_controls( $wp_customize ) { - if ( ! class_exists( 'WP_Customize_Panel' ) ) { - return; - } - - if ( ! $wp_customize->get_panel( 'generate_layout_panel' ) ) { - return; - } - - if ( method_exists( $wp_customize, 'register_control_type' ) ) { - $wp_customize->register_control_type( 'GeneratePress_Section_Shortcut_Control' ); - } - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_header_layout_shortcuts', - array( - 'section' => 'generate_layout_header', - 'element' => __( 'Header', 'gp-premium' ), - 'shortcuts' => array( - 'colors' => 'header_color_section', - 'typography' => 'font_header_section', - 'backgrounds' => 'generate_backgrounds_header', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_primary_navigation_layout_shortcuts', - array( - 'section' => 'generate_layout_navigation', - 'element' => __( 'Primary Navigation', 'gp-premium' ), - 'shortcuts' => array( - 'colors' => 'navigation_color_section', - 'typography' => 'font_navigation_section', - 'backgrounds' => 'generate_backgrounds_navigation', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - if ( $wp_customize->get_control( 'blogname' ) ) { - $wp_customize->get_control( 'generate_settings[container_width]' )->priority = 1; - } - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_content_layout_shortcuts', - array( - 'section' => 'generate_layout_container', - 'element' => __( 'Content', 'gp-premium' ), - 'shortcuts' => array( - 'colors' => 'content_color_section', - 'typography' => 'font_content_section', - 'backgrounds' => 'generate_backgrounds_content', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 0, - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_sidebar_layout_shortcuts', - array( - 'section' => 'generate_layout_sidebars', - 'element' => __( 'Sidebar', 'gp-premium' ), - 'shortcuts' => array( - 'colors' => 'sidebar_widget_color_section', - 'typography' => 'font_widget_section', - 'backgrounds' => 'generate_backgrounds_sidebars', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_footer_layout_shortcuts', - array( - 'section' => 'generate_layout_footer', - 'element' => __( 'Footer', 'gp-premium' ), - 'shortcuts' => array( - 'colors' => 'footer_color_section', - 'typography' => 'font_footer_section', - 'backgrounds' => 'generate_backgrounds_footer', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_colors_shortcuts', - array( - 'section' => 'generate_colors_section', - 'element' => __( 'Colors', 'gp-premium' ), - 'shortcuts' => array(), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_typography_shortcuts', - array( - 'section' => 'generate_typography_section', - 'element' => __( 'Typography', 'gp-premium' ), - 'shortcuts' => array(), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); -} - -add_action( 'customize_register', 'generate_premium_layout_block_element_messages', 1000 ); -/** - * Add shortcuts to sections we don't control in this plugin. - * - * @since 1.8 - */ -function generate_premium_layout_block_element_messages( $wp_customize ) { - if ( ! class_exists( 'WP_Customize_Panel' ) ) { - return; - } - - if ( method_exists( $wp_customize, 'register_control_type' ) ) { - $wp_customize->register_control_type( 'GeneratePress_Information_Customize_Control' ); - } - - if ( version_compare( PHP_VERSION, '5.6', '>=' ) ) { - $footer_sections = array( - 'generate_layout_footer', - 'footer_color_section', - 'font_footer_section', - 'generate_backgrounds_footer', - ); - - foreach ( $footer_sections as $section ) { - if ( $wp_customize->get_section( $section ) ) { - $wp_customize->add_control( - new GeneratePress_Information_Customize_Control( - $wp_customize, - 'generate_using_site_footer_element_' . $section, - array( - 'section' => $section, - 'description' => sprintf( - /* translators: URL to the Elements dashboard. */ - __( 'This page is using a Site Footer Element. Some of the options below may not apply.', 'gp-premium' ), - admin_url( 'edit.php?post_type=gp_elements' ) - ), - 'notice' => true, - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'active_callback' => function() { - $has_block_element = generate_has_active_element( 'site-footer', true ); - - if ( $has_block_element ) { - return true; - } - - return false; - }, - 'priority' => 0, - ) - ) - ); - } - } - - $header_sections = array( - 'generate_layout_header', - 'header_color_section', - 'font_header_section', - 'generate_backgrounds_header', - ); - - foreach ( $header_sections as $section ) { - if ( $wp_customize->get_section( $section ) ) { - $wp_customize->add_control( - new GeneratePress_Information_Customize_Control( - $wp_customize, - 'generate_using_site_header_element_' . $section, - array( - 'section' => $section, - 'description' => sprintf( - /* translators: URL to the Elements dashboard. */ - __( 'This page is using a Site Header Element. Some of the options below may not apply.', 'gp-premium' ), - admin_url( 'edit.php?post_type=gp_elements' ) - ), - 'notice' => true, - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'active_callback' => function() { - $has_block_element = generate_has_active_element( 'site-header', true ); - - if ( $has_block_element ) { - return true; - } - - return false; - }, - 'priority' => 0, - ) - ) - ); - } - } - - $sidebar_sections = array( - 'generate_layout_sidebars', - 'sidebar_widget_color_section', - 'font_widget_section', - 'generate_backgrounds_sidebars', - ); - - foreach ( $sidebar_sections as $section ) { - if ( $wp_customize->get_section( $section ) ) { - $wp_customize->add_control( - new GeneratePress_Information_Customize_Control( - $wp_customize, - 'generate_using_sidebar_element_' . $section, - array( - 'section' => $section, - 'description' => sprintf( - /* translators: URL to the Elements dashboard. */ - __( 'This page is using a Sidebar Element. Some of the options below may not apply.', 'gp-premium' ), - admin_url( 'edit.php?post_type=gp_elements' ) - ), - 'notice' => true, - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'active_callback' => function() { - $has_right_sidebar_block_element = generate_has_active_element( 'right-sidebar', true ); - - if ( $has_right_sidebar_block_element ) { - return true; - } - - $has_left_sidebar_block_element = generate_has_active_element( 'left-sidebar', true ); - - if ( $has_left_sidebar_block_element ) { - return true; - } - - return false; - }, - 'priority' => 0, - ) - ) - ); - } - } - - if ( $wp_customize->get_section( 'generate_blog_section' ) ) { - $wp_customize->add_control( - new GeneratePress_Information_Customize_Control( - $wp_customize, - 'generate_using_post_loop_item_element', - array( - 'section' => 'generate_blog_section', - 'description' => sprintf( - /* translators: URL to the Elements dashboard. */ - __( 'This page is using a Content Template Element. Some of the options below may not apply.', 'gp-premium' ), - admin_url( 'edit.php?post_type=gp_elements' ) - ), - 'notice' => true, - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'active_callback' => function() { - $has_block_element = generate_has_active_element( 'content-template', true ); - - if ( $has_block_element ) { - return true; - } - - return false; - }, - 'priority' => 0, - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Information_Customize_Control( - $wp_customize, - 'generate_using_page_hero_element', - array( - 'section' => 'generate_blog_section', - 'description' => sprintf( - /* translators: URL to the Elements dashboard. */ - __( 'This page is using a Page Hero Element. Some of the options below may not apply.', 'gp-premium' ), - admin_url( 'edit.php?post_type=gp_elements' ) - ), - 'notice' => true, - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'active_callback' => function() { - $has_block_element = generate_has_active_element( 'page-hero', true ); - - if ( $has_block_element ) { - return true; - } - - return false; - }, - 'priority' => 0, - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Information_Customize_Control( - $wp_customize, - 'generate_using_post_meta_area_element', - array( - 'section' => 'generate_blog_section', - 'description' => sprintf( - /* translators: URL to the Elements dashboard. */ - __( 'This page is using a Post Meta Template Element. Some of the options below may not apply.', 'gp-premium' ), - admin_url( 'edit.php?post_type=gp_elements' ) - ), - 'notice' => true, - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'active_callback' => function() { - $has_block_element = generate_has_active_element( 'post-meta-template', true ); - - if ( $has_block_element ) { - return true; - } - - return false; - }, - 'priority' => 0, - ) - ) - ); - } - } -} - -add_action( 'customize_controls_print_styles', 'generate_premium_customize_print_styles' ); -/** - * Print control styles for the Customizer. - * - * @since 1.9 - */ -function generate_premium_customize_print_styles() { - $sizes = apply_filters( 'generate_customizer_device_preview_sizes', array( - 'tablet' => 800, - 'mobile' => 411, - 'mobile_height' => 731, - ) ); - ?> - - json['data_type'] = $this->data_type; - $this->json['description'] = $this->description; - $this->json['nonce'] = $this->nonce; - } - - public function content_template() { - ?> - - <# if ( data.description ) { #> - -

    {{{ data.description }}}

    -
    - <# } #> - json['palette'] = $this->palette; - $this->json['defaultValue'] = $this->setting->default; - $this->json[ 'link' ] = $this->get_link(); - $this->json[ 'show_opacity' ] = $this->show_opacity; - - if ( is_array( $this->json['palette'] ) ) { - $this->json['palette'] = implode( '|', $this->json['palette'] ); - } else { - // Default to true. - $this->json['palette'] = ( false === $this->json['palette'] || 'false' === $this->json['palette'] ) ? 'false' : 'true'; - } - - // Support passing show_opacity as string or boolean. Default to true. - $this->json[ 'show_opacity' ] = ( false === $this->json[ 'show_opacity' ] || 'false' === $this->json[ 'show_opacity' ] ) ? 'false' : 'true'; - } - - /** - * Render the control. - */ - public function render_content() {} - - public function content_template() { - ?> - <# if ( data.label && '' !== data.label ) { #> - {{ data.label }} - <# } #> - - json[ 'position_title' ] = esc_html__( 'left top, x% y%, xpos ypos (px)', 'gp-premium' ); - $this->json[ 'position_placeholder' ] = esc_html__( 'Position', 'gp-premium' ); - - foreach ( $this->settings as $setting_key => $setting_id ) { - $this->json[ $setting_key ] = array( - 'link' => $this->get_link( $setting_key ), - 'value' => $this->value( $setting_key ), - 'default' => isset( $setting_id->default ) ? $setting_id->default : '', - 'id' => isset( $setting_id->id ) ? $setting_id->id : '' - ); - - if ( 'repeat' === $setting_key ) { - $this->json[ $setting_key ]['choices'] = $this->get_repeat_choices(); - } - - if ( 'size' === $setting_key ) { - $this->json[ $setting_key ]['choices'] = $this->get_size_choices(); - } - - if ( 'attachment' === $setting_key ) { - $this->json[ $setting_key ]['choices'] = $this->get_attachment_choices(); - } - } - } - - public function content_template() { - ?> - <# if ( '' !== data.label ) { #> - {{ data.label }} - <# } #> - - <# if ( 'undefined' !== typeof ( data.repeat ) ) { #> -
    - -
    - <# } #> - - <# if ( 'undefined' !== typeof ( data.size ) ) { #> -
    - -
    - <# } #> - - <# if ( 'undefined' !== typeof ( data.attachment ) ) { #> -
    - -
    - <# } #> - - <# if ( 'undefined' !== typeof ( data.position ) ) { #> -
    - -
    - <# } #> - esc_html__( 'Repeat', 'gp-premium' ), - 'repeat-x' => esc_html__( 'Repeat x', 'gp-premium' ), - 'repeat-y' => esc_html__( 'Repeat y', 'gp-premium' ), - 'no-repeat' => esc_html__( 'No Repeat', 'gp-premium' ) - ); - } - - public function get_size_choices() { - return array( - '' => esc_html__( 'Size (Auto)', 'gp-premium' ), - '100' => esc_html__( '100% Width', 'gp-premium' ), - 'cover' => esc_html__( 'Cover', 'gp-premium' ), - 'contain' => esc_html__( 'Contain', 'gp-premium' ) - ); - } - - public function get_attachment_choices() { - return array( - '' => esc_html__( 'Attachment', 'gp-premium' ), - 'fixed' => esc_html__( 'Fixed', 'gp-premium' ), - 'local' => esc_html__( 'Local', 'gp-premium' ), - 'inherit' => esc_html__( 'Inherit', 'gp-premium' ) - ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-control-toggle.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-control-toggle.php deleted file mode 100644 index 7c893a6e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/class-control-toggle.php +++ /dev/null @@ -1,37 +0,0 @@ -json[ 'targets' ] = $this->targets; - - } - - public function content_template() { - ?> -
    - <# jQuery.each( data.targets, function( index, value ) { #> - - <# } ); #> -
    - json[ 'link' ] = $this->get_link(); - $this->json[ 'value' ] = $this->value(); - $this->json[ 'id' ] = $this->id; - $this->json[ 'current_year' ] = __( '%current_year% to update year automatically.', 'gp-premium' ); - $this->json[ 'copyright' ] = __( '%copy% to include the copyright symbol.', 'gp-premium' ); - $this->json[ 'html' ] = __( 'HTML is allowed.', 'gp-premium' ); - $this->json[ 'shortcodes' ] = __( 'Shortcodes are allowed.', 'gp-premium' ); - } - /** - * Render the control's content. - * - * Allows the content to be overriden without having to rewrite the wrapper. - * - * @since 10/16/2012 - * @return void - */ - public function content_template() { - ?> - - json[ 'link' ] = $this->get_link(); - $this->json[ 'value' ] = $this->value(); - $this->json[ 'id' ] = $this->id; - $this->json[ 'default_value' ] = $this->default_value; - $this->json[ 'reset_title' ] = esc_attr__( 'Reset','generate-spacing' ); - $this->json[ 'unit' ] = $this->unit; - $this->json[ 'edit_field' ] = $this->edit_field; - } - - public function content_template() { - ?> - -
    - <# if ( '' !== data.default_value ) { #>{{ data.reset_title }}<# } #> - json[ 'link' ] = $this->get_link(); - $this->json[ 'value' ] = absint( $this->value() ); - $this->json[ 'description' ] = esc_html( $this->description ); - } - - public function content_template() { - ?> - - type ) { - default: - case 'text' : ?> - - label ) ) echo '' . esc_html( $this->label ) . ''; - if ( ! empty( $this->description ) ) echo '' . esc_html( $this->description ) . ''; - if ( ! empty( $this->areas ) ) : - echo '
    '; - foreach ( $this->areas as $value => $label ) : - echo '' . esc_html( $label ) . ''; - endforeach; - endif; - break; - - case 'line' : - echo '
    '; - break; - } - } -} -endif; - -if ( class_exists( 'WP_Customize_Control' ) && ! class_exists( 'Generate_Backgrounds_Customize_Control' ) ) : -/* - * @deprecated 1.3 - */ -class Generate_Backgrounds_Customize_Control extends WP_Customize_Control { - public function render() {} -} -endif; - -if ( class_exists( 'WP_Customize_Control' ) && ! class_exists( 'Generate_Backgrounds_Customize_Misc_Control' ) ) : -/* - * No longer used - * Kept for back compat purposes - * @deprecated 1.2.95 - */ -class Generate_Backgrounds_Customize_Misc_Control extends WP_Customize_Control { - public function render() {} -} -endif; - -if ( class_exists( 'WP_Customize_Control' ) && ! class_exists( 'Generate_Blog_Customize_Control' ) ) : -/** - * Add our number input field for the featured image width - * @deprecated 1.3 - */ -class Generate_Blog_Customize_Control extends WP_Customize_Control { - public $type = 'gp-post-image-size'; - public $placeholder = ''; - - public function enqueue() { - wp_enqueue_script( 'gp-blog-customizer', trailingslashit( plugin_dir_url( __FILE__ ) ) . 'js/blog-customizer.js', array( 'customize-controls' ), GENERATE_BLOG_VERSION, true ); - } - - public function to_json() { - parent::to_json(); - $this->json[ 'link' ] = $this->get_link(); - $this->json[ 'value' ] = $this->value(); - $this->json[ 'placeholder' ] = $this->placeholder; - } - public function content_template() { - ?> - - json[ 'link' ] = $this->get_link(); - $this->json[ 'value' ] = $this->value(); - $this->json[ 'placeholder' ] = $this->placeholder; - } - public function content_template() { - ?> - - json[ 'text' ] = __( 'Apply image sizes','page-header' ); - } - - public function content_template() { - ?> - {{{ data.text }}} - json[ 'link' ] = $this->get_link(); - $this->json[ 'value' ] = $this->value(); - $this->json[ 'id' ] = $this->id; - } - - public function content_template() { - ?> - - - - - - json['description'] = $this->description; - $this->json['notice'] = $this->notice; - } - - public function content_template() { - ?> - <# if ( data.notice ) { #> -
    - <# } #> - - <# if ( data.label ) { #> - {{ data.label }} - <# } #> - <# if ( data.description ) { #> -

    {{{ data.description }}}

    - <# } #> - - <# if ( data.notice ) { #> -
    - <# } #> - json['choices'][$device]['min'] = ( isset( $this->choices[$device]['min'] ) ) ? $this->choices[$device]['min'] : '0'; - $this->json['choices'][$device]['max'] = ( isset( $this->choices[$device]['max'] ) ) ? $this->choices[$device]['max'] : '100'; - $this->json['choices'][$device]['step'] = ( isset( $this->choices[$device]['step'] ) ) ? $this->choices[$device]['step'] : '1'; - $this->json['choices'][$device]['edit'] = ( isset( $this->choices[$device]['edit'] ) ) ? $this->choices[$device]['edit'] : false; - $this->json['choices'][$device]['unit'] = ( isset( $this->choices[$device]['unit'] ) ) ? $this->choices[$device]['unit'] : false; - } - - foreach ( $this->settings as $setting_key => $setting_id ) { - $this->json[ $setting_key ] = array( - 'link' => $this->get_link( $setting_key ), - 'value' => $this->value( $setting_key ), - 'default' => isset( $setting_id->default ) ? $setting_id->default : '', - ); - } - - $this->json['desktop_label'] = __( 'Desktop', 'gp-premium' ); - $this->json['tablet_label'] = __( 'Tablet', 'gp-premium' ); - $this->json['mobile_label'] = __( 'Mobile', 'gp-premium' ); - $this->json['reset_label'] = __( 'Reset', 'gp-premium' ); - - $this->json['description'] = $this->description; - $this->json['sub_description'] = $this->sub_description; - } - /** - * Enqueue control related scripts/styles. - * - * @access public - */ - public function enqueue() { - wp_enqueue_script( 'generatepress-pro-range-slider', trailingslashit( plugin_dir_url( __FILE__ ) ) . 'js/slider-customizer.js', array( 'jquery', 'customize-base', 'jquery-ui-slider' ), GP_PREMIUM_VERSION, true ); - wp_enqueue_style( 'generatepress-pro-range-slider-css', trailingslashit( plugin_dir_url( __FILE__ ) ) . 'css/slider-customizer.css', GP_PREMIUM_VERSION ); - } - /** - * An Underscore (JS) template for this control's content (but not its container). - * - * Class variables for this control class are available in the `data` JS object; - * export custom variables by overriding {@see WP_Customize_Control::to_json()}. - * - * @see WP_Customize_Control::print_template() - * - * @access protected - */ - protected function content_template() { - ?> -
    -
    - <# if ( data.label || data.description ) { #> -
    - <# if ( data.label ) { #> - {{{ data.label }}} - <# } #> - - <# if ( data.description ) { #> -

    {{{ data.description }}}

    - <# } #> -
    - <# } #> - -
    - - <# if ( 'undefined' !== typeof ( data.desktop ) ) { #> - - <# } #> - - <# if ( 'undefined' !== typeof (data.tablet) ) { #> - - <# } #> - - <# if ( 'undefined' !== typeof (data.mobile) ) { #> - - <# } #> - - - -
    -
    - -
    - <# if ( 'undefined' !== typeof ( data.desktop ) ) { #> - - <# } #> - - <# if ( 'undefined' !== typeof ( data.tablet ) ) { #> - - <# } #> - - <# if ( 'undefined' !== typeof ( data.mobile ) ) { #> - - <# } #> -
    - - <# if ( data.sub_description ) { #> -

    {{{ data.sub_description }}}

    - <# } #> -
    - - {{{ data.label }}} - shortcuts as $name => $id ) { - if ( 'colors' === $name ) { - $name = esc_html__( 'Colors', 'gp-premium' ); - - if ( version_compare( generate_premium_get_theme_version(), '3.1.0-alpha.1', '>=' ) && 'generate_woocommerce_colors' !== $id ) { - $id = 'generate_colors_section'; - } - - if ( ! generatepress_is_module_active( 'generate_package_colors', 'GENERATE_COLORS' ) ) { - $id = false; - $name = false; - } - } - - if ( 'typography' === $name ) { - $name = esc_html__( 'Typography', 'gp-premium' ); - - if ( function_exists( 'generate_is_using_dynamic_typography' ) && generate_is_using_dynamic_typography() ) { - $id = 'generate_typography_section'; - } - - if ( ! generatepress_is_module_active( 'generate_package_typography', 'GENERATE_TYPOGRAPHY' ) ) { - $id = false; - $name = false; - } - } - - if ( 'backgrounds' === $name ) { - $name = esc_html__( 'Backgrounds', 'gp-premium' ); - - if ( ! generatepress_is_module_active( 'generate_package_backgrounds', 'GENERATE_BACKGROUNDS' ) ) { - $id = false; - $name = false; - } - } - - if ( 'layout' === $name ) { - $name = esc_html__( 'Layout', 'gp-premium' ); - } - - if ( $id && $name ) { - $shortcuts[ $id ] = $name; - } - } - - if ( ! empty( $shortcuts ) ) { - $this->json['shortcuts'] = $shortcuts; - } else { - $this->json['shortcuts'] = false; - } - - if ( 'WooCommerce' !== $this->element ) { - $this->element = strtolower( $this->element ); - } - - $this->json['more'] = sprintf( - __( 'More %s controls:', 'gp-premium' ), - '' . $this->element . '' - ); - - $this->json['return'] = __( 'Go Back', 'gp-premium' ); - - $this->json['section'] = $this->section; - - if ( apply_filters( 'generate_disable_customizer_shortcuts', false ) ) { - $this->json['shortcuts'] = false; - } - } - - public function content_template() { - ?> -
    - <# if ( data.shortcuts ) { #> -
    - - {{{ data.more }}} - - - - <# _.each( data.shortcuts, function( label, section ) { #> - - {{{ label }}} - - <# } ) #> - -
    - <# } #> - - -
    - - settings as $setting_key => $setting_id ) { - $this->json[ $setting_key ] = array( - 'link' => $this->get_link( $setting_key ), - 'value' => $this->value( $setting_key ) - ); - } - - $this->json[ 'element' ] = $this->element; - $this->json[ 'title' ] = __( 'Link values', 'gp-premium' ); - $this->json[ 'unlink_title' ] = __( 'Un-link values', 'gp-premium' ); - - $this->json['label_top'] = esc_html__( 'Top', 'gp-premium' ); - $this->json['label_right'] = esc_html__( 'Right', 'gp-premium' ); - $this->json['label_bottom'] = esc_html__( 'Bottom', 'gp-premium' ); - $this->json['label_left'] = esc_html__( 'Left', 'gp-premium' ); - $this->json['desktop_label'] = esc_html__( 'Desktop', 'gp-premium' ); - $this->json['tablet_label'] = esc_html__( 'Tablet', 'gp-premium' ); - $this->json['mobile_label'] = esc_html__( 'Mobile', 'gp-premium' ); - } - - public function content_template() { - ?> -
    -
    - <# if ( data.label || data.description ) { #> -
    - <# if ( data.label ) { #> - - <# } #> - - <# if ( data.description ) { #> - {{{ data.description }}} - <# } #> -
    - <# } #> - -
    - - <# if ( 'undefined' !== typeof ( data.desktop_top ) ) { #> - - <# } #> - - <# if ( 'undefined' !== typeof (data.tablet_top) ) { #> - - <# } #> - - <# if ( 'undefined' !== typeof (data.mobile_top) ) { #> - - <# } #> - -
    -
    - -
    - - - <# if ( 'undefined' !== typeof ( data.mobile_top ) ) { #> - - <# } #> -
    -
    - json[ 'title' ] = esc_html( $this->title ); - } - - public function content_template() { - ?> -
    - {{ data.title }} -
    - json[ 'default_fonts_title'] = __( 'System Fonts', 'gp-premium' ); - $this->json[ 'google_fonts_title'] = __( 'Google Fonts', 'gp-premium' ); - $this->json[ 'default_fonts' ] = generate_typography_default_fonts(); - $this->json[ 'family_title' ] = esc_html__( 'Font family', 'gp-premium' ); - $this->json[ 'weight_title' ] = esc_html__( 'Font weight', 'gp-premium' ); - $this->json[ 'transform_title' ] = esc_html__( 'Text transform', 'gp-premium' ); - $this->json[ 'category_title' ] = ''; - $this->json[ 'variant_title' ] = esc_html__( 'Variants', 'gp-premium' ); - - foreach ( $this->settings as $setting_key => $setting_id ) { - $this->json[ $setting_key ] = array( - 'link' => $this->get_link( $setting_key ), - 'value' => $this->value( $setting_key ), - 'default' => isset( $setting_id->default ) ? $setting_id->default : '', - 'id' => isset( $setting_id->id ) ? $setting_id->id : '' - ); - - if ( 'weight' === $setting_key ) { - $this->json[ $setting_key ]['choices'] = $this->get_font_weight_choices(); - } - - if ( 'transform' === $setting_key ) { - $this->json[ $setting_key ]['choices'] = $this->get_font_transform_choices(); - } - } - } - - public function content_template() { - ?> - <# if ( '' !== data.label ) { #> - {{ data.label }} - <# } #> - <# if ( 'undefined' !== typeof ( data.family ) ) { #> -
    - -
    - <# } #> - - <# if ( 'undefined' !== typeof ( data.variant ) ) { #> - <# - var id = data.family.value.split(' ').join('_').toLowerCase(); - var font_data = generatePressTypography.googleFonts[id]; - var variants = ''; - if ( typeof font_data !== 'undefined' ) { - variants = font_data.variants; - } - - if ( null === data.variant.value ) { - data.variant.value = data.variant.default; - } - #> -
    - -
    - <# } #> - - <# if ( 'undefined' !== typeof ( data.category ) ) { #> -
    - -
    - <# } #> - -
    - <# if ( 'undefined' !== typeof ( data.weight ) ) { #> -
    - -
    - <# } #> - - <# if ( 'undefined' !== typeof ( data.transform ) ) { #> -
    - -
    - <# } #> -
    - esc_html__( 'inherit', 'gp-premium' ), - 'normal' => esc_html__( 'normal', 'gp-premium' ), - 'bold' => esc_html__( 'bold', 'gp-premium' ), - '100' => esc_html( '100' ), - '200' => esc_html( '200' ), - '300' => esc_html( '300' ), - '400' => esc_html( '400' ), - '500' => esc_html( '500' ), - '600' => esc_html( '600' ), - '700' => esc_html( '700' ), - '800' => esc_html( '800' ), - '900' => esc_html( '900' ), - ); - } - - public function get_font_transform_choices() { - return array( - '' => esc_html__( 'inherit', 'gp-premium' ), - 'none' => esc_html__( 'none', 'gp-premium' ), - 'capitalize' => esc_html__( 'capitalize', 'gp-premium' ), - 'uppercase' => esc_html__( 'uppercase', 'gp-premium' ), - 'lowercase' => esc_html__( 'lowercase', 'gp-premium' ), - ); - } -} -endif; diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/alpha-color-picker.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/alpha-color-picker.css deleted file mode 100644 index d820a935..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/alpha-color-picker.css +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Alpha Color Picker CSS - */ -.customize-control-gp-alpha-color .iris-picker .iris-square { - margin-right:10px; -} - -.customize-control-gp-alpha-color .alpha-slider.ui-widget-content, -.customize-control-gp-alpha-color .ui-widget-header{ - background: none; - border: 0; - box-shadow: 0 0 0 transparent; -} - -.alpha-color-picker-wrap a.iris-square-value:focus { - box-shadow: none; -} - -.gp-alpha-color-picker-container { - position: relative; - margin-left: 10px; - background-image: url(transparency-grid.png); -} - -.gp-alpha-color-picker-container .iris-picker .iris-strip .ui-slider-handle { - z-index: 100; -} - -.customize-control-gp-alpha-color .wp-picker-input-wrap .button.wp-picker-clear { - margin-left: 6px; - padding: 2px 8px; -} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/button-actions.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/button-actions.css deleted file mode 100644 index 4c55423e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/button-actions.css +++ /dev/null @@ -1,19 +0,0 @@ -button[data-type="regenerate_external_css"]:before { - font: normal 20px/.5 dashicons; - display: inline-block; - padding: 0; - top: 9px; - left: -4px; - position: relative; - vertical-align: top; - content: "\f463"; -} - -button[data-type="regenerate_external_css"].loading:before { - animation: rotation 1s infinite linear; -} - -button[data-type="regenerate_external_css"].success:before { - content: "\f147"; - color: #46b450; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/control-toggle-customizer.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/control-toggle-customizer.css deleted file mode 100644 index b27e743b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/control-toggle-customizer.css +++ /dev/null @@ -1,21 +0,0 @@ -.generatepress-control-toggles { - display: flex; -} - -.generatepress-control-toggles button { - flex-basis: 100%; - background-color: #fafafa; - border: 1px solid #ddd; - cursor: pointer; - padding: 5px 10px; -} - -.generatepress-control-toggles button:last-child { - border-left: 0; -} - -.generatepress-control-toggles button.active { - background-color: #fff; - border: 1px solid #ccc; - font-weight: bold; -} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/information-control.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/information-control.css deleted file mode 100644 index 4d042817..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/information-control.css +++ /dev/null @@ -1,12 +0,0 @@ -.gp-info-notice { - background: #fff; - border: 1px solid #c3c4c7; - border-left-width: 4px; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); - margin: 0; - padding: 1px 12px; -} - -.gp-info-notice-info { - border-left-color: #72aee6; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/section-shortcuts.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/section-shortcuts.css deleted file mode 100644 index 71e4c4ec..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/section-shortcuts.css +++ /dev/null @@ -1,43 +0,0 @@ -.generatepress-shortcuts > div { - background: #fff; - padding: 10px 15px; - border-width: 0 1px 1px 0; - border-color: #ddd; - border-style: solid; - margin-bottom: 10px; -} - -.customize-control-gp_section_shortcut { - margin-bottom: 0; -} - -.generatepress-shortcuts .more-controls { - font-weight: 600; - margin-right: 5px; - display: block; - font-size: 12px; - margin-bottom: 3px; -} - -.generatepress-shortcuts .shortcuts .shortcut:not(:last-child):after { - content: "\2022"; - padding: 0 1px; -} - -.generatepress-shortcuts .shortcut a { - text-decoration: none; -} - -.generatepress-shortcuts .shortcut { - font-size: 12px; -} - -.return-shortcut .dashicons { - float: right; - cursor: pointer; -} - -.return-shortcut a { - font-size: 12px; - text-decoration: none; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/selectWoo.min.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/selectWoo.min.css deleted file mode 100644 index 59fa33d3..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/selectWoo.min.css +++ /dev/null @@ -1 +0,0 @@ -.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[data-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[data-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[data-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top, #fff 50%, #eee 100%);background-image:-o-linear-gradient(top, #fff 50%, #eee 100%);background-image:linear-gradient(to bottom, #fff 50%, #eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top, #eee 50%, #ccc 100%);background-image:-o-linear-gradient(top, #eee 50%, #ccc 100%);background-image:linear-gradient(to bottom, #eee 50%, #ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top, #fff 0%, #eee 50%);background-image:-o-linear-gradient(top, #fff 0%, #eee 50%);background-image:linear-gradient(to bottom, #fff 0%, #eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top, #eee 50%, #fff 100%);background-image:-o-linear-gradient(top, #eee 50%, #fff 100%);background-image:linear-gradient(to bottom, #eee 50%, #fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[data-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/slider-customizer.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/slider-customizer.css deleted file mode 100644 index d7add5f7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/slider-customizer.css +++ /dev/null @@ -1,131 +0,0 @@ -.customize-control-generatepress-pro-range-slider .generatepress-slider { - position: relative; - width: calc(100% - 60px); - height: 6px; - background-color: rgba(0,0,0,.10); - cursor: pointer; - transition: background .5s; -} - -.customize-control-generatepress-pro-range-slider .has-unit .generatepress-slider { - width: calc(100% - 90px); -} - -.customize-control-generatepress-pro-range-slider .gp_range_value.hide-value { - display: none; -} - -.customize-control-generatepress-pro-range-slider .gp_range_value.hide-value + .generatepress-slider { - width: 100%; -} - -.customize-control-generatepress-pro-range-slider .generatepress-slider .ui-slider-handle { - height: 16px; - width: 16px; - background-color: #3498D9; - display: inline-block; - position: absolute; - top: 50%; - transform: translateY(-50%) translateX(-4px); - border-radius: 50%; - cursor: pointer; -} - -.customize-control-generatepress-pro-range-slider .wrapper { - display: flex; - justify-content: space-between; - align-items: center; -} - -.customize-control-generatepress-pro-range-slider .gp_range_value { - font-size: 14px; - padding: 0; - font-weight: 400; - width: 50px; - display: flex; -} - -.customize-control-generatepress-pro-range-slider .has-unit .gp_range_value { - width: 80px; -} - -.customize-control-generatepress-pro-range-slider .gp_range_value span.value { - font-size: 12px; - width: calc(100% - 2px); - text-align: center; - min-height: 30px; - background: #FFF; - line-height: 30px; - border: 1px solid #DDD; -} - -.customize-control-generatepress-pro-range-slider .has-unit .gp_range_value span.value { - width: calc(100% - 32px); - display: block; -} - -.customize-control-generatepress-pro-range-slider .gp_range_value .unit { - width: 29px; - text-align: center; - font-size: 12px; - line-height: 30px; - background: #fff; - border: 1px solid #ddd; - margin-left: 1px; -} - -.customize-control-generatepress-pro-range-slider .generatepress-pro-range-slider-reset span { - font-size: 16px; - line-height: 22px; -} - -.customize-control-generatepress-pro-range-slider .gp_range_value input { - font-size: 12px; - padding: 0px; - text-align: center; - min-height: 30px; - height: auto; - border-radius: 0; - border-color: #ddd; -} - -.customize-control-generatepress-pro-range-slider .has-unit .gp_range_value input { - width: calc(100% - 30px); -} - -.customize-control-generatepress-pro-range-slider .gp-range-title-area .dashicons { - cursor: pointer; - font-size: 11px; - width: 20px; - height: 20px; - line-height: 20px; - color: #222; - text-align: center; - position: relative; - top: 2px; -} - -.customize-control-generatepress-pro-range-slider .gp-range-title-area .dashicons:hover { - background: #fafafa; -} - -.customize-control-generatepress-pro-range-slider .gp-range-title-area .dashicons.selected { - background: #fff; - color: #222; -} - -.gp-range-title-area { - display: flex; -} - -.gp-range-slider-controls { - margin-left: auto; -} - -.customize-control-generatepress-pro-range-slider .gp-device-controls > span:first-child:last-child { - display: none; -} - -.customize-control-generatepress-pro-range-slider .sub-description { - margin-top: 10px; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/spacing-customizer.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/spacing-customizer.css deleted file mode 100644 index 058e9c60..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/spacing-customizer.css +++ /dev/null @@ -1,101 +0,0 @@ -.gp-spacing-control-section-title-area { - display: flex; -} - -.gp-range-slider-controls { - margin-left: auto; -} - -.customize-control-spacing .description { - font-size: 10px; - text-transform: uppercase; - font-weight: bold; - font-style: normal; - opacity: 0.7; -} - -.spacing-values-area { - display: flex; -} - -.gp-spacing-section input { - min-height: 30px; - border-radius: 0; - border-color: #ddd; -} - -.gp-link-spacing-section span { - display: block; - color: #0073aa; - font-size: 14px; - cursor: pointer; - height: auto; - min-height: 28px; - line-height: 28px; - box-sizing: border-box; - width: 40px; - background: #fff; - border: 1px solid #ddd; -} - -.gp-link-spacing-section span.gp-unlink-spacing { - background-color: #0073aa; - color: #fff; -} - -.gp-spacing-section { - margin-right: 2px; - text-align:center -} - -.gp-link-spacing-section { - margin-right: 0; -} - -.gp-spacing-section .description { - font-size: 10px; - text-transform: uppercase; - font-weight: bold; - font-style: normal; - opacity: 0.7; -} - -.no-edit-field { - font-size: 11px; - opacity: 0.8; - font-weight: 600; -} - -/* - * Make sure slider is 100% wide. - * Old versions of Secondary Nav will have this set as 50% - * so we need to set !important to overwrite that. - */ -.customize-control.customize-control-gp-spacing-slider { - width: 100% !important; -} - -.customize-control-generatepress-spacing .gp-spacing-control-section-title-area .dashicons { - cursor: pointer; - font-size: 11px; - width: 20px; - height: 20px; - line-height: 20px; - color: #222; - text-align: center; - position: relative; - top: 2px; -} - -.customize-control-generatepress-spacing .gp-spacing-control-section-title-area .dashicons:hover { - background: #fafafa; -} - -.customize-control-generatepress-spacing .gp-spacing-control-section-title-area .dashicons.selected { - background: #fff; - color: #222; -} - -.customize-control-generatepress-spacing .gp-device-controls > span:first-child:last-child { - display: none; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/title-customizer.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/title-customizer.css deleted file mode 100644 index 9a1289e2..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/title-customizer.css +++ /dev/null @@ -1,9 +0,0 @@ -.generatepress-customizer-title { - background: #FFF; - padding: 10px 12px; - font-weight: 600; - border-style: solid; - border-width: 0 1px 1px 0; - border-color: #ddd; - font-size: 15px; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/transparency-grid.png b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/transparency-grid.png deleted file mode 100644 index 20d0f653caa35ad09e015d392b803d60188a0154..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2343 zcmV+?3E1|DP)eWrH*+3);*vNi6fos zNjhLbCQN`^w8yj1>6q#)uh(l%zaV}`>}!Ao)mpGwus#=CWRy@5Q45|0yvG{k=|=or z%saJR@O-B}Y>j3;Q<0K7GrFKI3%87ADjJ<#y=vbK09B-UT{ zitof)R`Np6@?8cjZA34QAfDXCoHpp4u7QhYRJfBZ6sm#EqLo!R3t>#H27Ve3%JpKN z%*wY-Ip;+!3u^3>7c}V3;H3PDqqU0zI|gV!VlW81;QwO=nNhd6*GtH7zGpg2XQQ=_V_Q9DkGE=d6_RBNK5?0e!LTt!9 z@*?bvgJ#?7^O{ddb+es5 zD{70B$4~>Q(w0%^7PV8*56~1@RzY4J&t-eH9I^jE!PLTH0xJ&(*I9LpkORU|FMo}#7TzVu z3yn@z!BP@@mn6LQ@8AY@-*!4P?$*smQ?smX?ZG zJQ&Z4s503ND%55#f^QBxGn)Nec8!v;HdX$aY1(rkV6n|eeD-uzY+j&Z5UGHRJy*t1 zzRqDL8=>FdZO<5!S)PfB0P|o57mpxmi}GsBBto=pW8F@lsU}Drix+eDsG@4&6kK4L z<4{GcQ&nf%+#ao)X(&XEAZD67qXSlj`jL7m*ttjI6ka-;z)DrEJ;AinilA=h)J%@QaWqrgp_kCrK(wQf1nmzIhR`(>S(H*fZg(}Hi6EX9D@zA z^SSF$n59f1$oFW9*|NwI+z273(#2SumZQEC{lOb7JWU3rX zuG?>YY$ey}=inHr|it2$Ej1&ty<4_KbeR66gsP?iGTvCZ-;GWv|qj zPcTn+%w}B`4=NMJWMN~>zDHBiM#Of$C=;U)b8^&pjGS$@XH* z?pv{(EiwbOZX3<)T3aF0=ISmC`Y4HF%GQPUV^D#1t_J76GA`gdJ0z-3Dl?+USYpuz zSY)swye)jSh3dp!Hg4Yk{~tIQY{7Cx#BI(O(Hxeo0Y)w)#=sE0e=<>K%I;Y~7}@%x zqg4deepvOPuhd+Y$Lg^E(ntBhxOO1HzKN_36?gri9dH;-RC@z9!^yDo9S)0TNKl?4 zWLCs%I)Ymd63xO*KTzO>0EUA%X&D{1$c(UJ6y&;??el{zT}!$@-=m@DZmO9K!e`gj zevKK!GNaBnAg(C&N;7qYI(y}8@<%#Ft z2>N+enYm^}V(_tkgc@g$m#yd1UE!50^J9VUa z(Qh&sWr1tS{Rd?+Q+K+C?GrkE2NQaLX^|kc<0~5^%8qT(157O5vW(j$3p0GW>{>~k zi#jPakw6{Xs1jfX*^JI+ruM`#VWfnZ>a0BZ+p&0zS9y^%$?yC>yUx*u?kgS202|$= z@Pc~up$+gJ>H0_m@(k4J9d({1kGH9#$~3A#w5azf8mqc?ac_Q6a_4+(+_J-AR^onw zWR@e-_dM_I$*wwh^kAr93{_5J_= N002ovPDHLkV1j8oZ)*Sm diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/typography-customizer.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/typography-customizer.css deleted file mode 100644 index 53aadcda..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/css/typography-customizer.css +++ /dev/null @@ -1,60 +0,0 @@ -.generatepress-font-family { - margin-bottom: 12px; -} - -.generatepress-weight-transform-wrapper { - display: flex; - justify-content: space-between; -} - -.generatepress-font-weight, -.generatepress-font-transform { - width: calc(50% - 5px); -} - -span.select2-container.select2-container--default.select2-container--open li.select2-results__option { - margin:0; -} - -span.select2-container.select2-container--default.select2-container--open{ - z-index:999999; -} - -.select2-selection__rendered li { - margin-bottom: 0; -} - -.select2-container--default .select2-selection--single, -.select2-container--default.select2-container .select2-selection--multiple, -.select2-dropdown, -.select2-container--default .select2-selection--multiple .select2-selection__choice { - border-color: #ddd; - border-radius: 0; -} - -.select2-container--default .select2-results__option[aria-selected=true] { - color: rgba(0,0,0,0.4); -} - -.select2-container .select2-search--inline { - display: none; -} - -#customize-control-single_content_title_control, -#customize-control-font_heading_2_control, -#customize-control-archive_content_title_control, -#customize-control-font_heading_3_control, -#customize-control-font_heading_4_control, -#customize-control-font_heading_5_control, -#customize-control-font_heading_6_control { - margin-top: 20px; -} - -.generatepress-weight-transform-wrapper select option[value=""] { - display: none; -} - -#customize-control-single_content_title_control .generatepress-weight-transform-wrapper select option[value=""], -#customize-control-archive_content_title_control .generatepress-weight-transform-wrapper select option[value=""] { - display: block; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/alpha-color-picker.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/alpha-color-picker.js deleted file mode 100644 index 319f7a1a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/alpha-color-picker.js +++ /dev/null @@ -1,277 +0,0 @@ -/** - * Alpha Color Picker JS - * - * This file includes several helper functions and the core control JS. - */ - -/** - * Override the stock color.js toString() method to add support for - * outputting RGBa or Hex. - */ -Color.prototype.toString = function( flag ) { - - // If our no-alpha flag has been passed in, output RGBa value with 100% opacity. - // This is used to set the background color on the opacity slider during color changes. - if ( 'no-alpha' == flag ) { - return this.toCSS( 'rgba', '1' ).replace( /\s+/g, '' ); - } - - // If we have a proper opacity value, output RGBa. - if ( 1 > this._alpha ) { - return this.toCSS( 'rgba', this._alpha ).replace( /\s+/g, '' ); - } - - // Proceed with stock color.js hex output. - var hex = parseInt( this._color, 10 ).toString( 16 ); - if ( this.error ) { return ''; } - if ( hex.length < 6 ) { - for ( var i = 6 - hex.length - 1; i >= 0; i-- ) { - hex = '0' + hex; - } - } - - return '#' + hex; -}; - -/** - * Given an RGBa, RGB, or hex color value, return the alpha channel value. - */ -function generate_get_alpha_value_from_color( value ) { - var alphaVal; - - // Remove all spaces from the passed in value to help our RGBa regex. - value = value.toString().replace( / /g, '' ); - - if ( value.match( /rgba\(\d+\,\d+\,\d+\,([^\)]+)\)/ ) ) { - alphaVal = parseFloat( value.match( /rgba\(\d+\,\d+\,\d+\,([^\)]+)\)/ )[1] ).toFixed(2) * 100; - alphaVal = parseInt( alphaVal ); - } else { - alphaVal = 100; - } - - return alphaVal; -} - -/** - * Force update the alpha value of the color picker object and maybe the alpha slider. - */ - function generate_update_alpha_value_on_color_control( alpha, $control, $alphaSlider, update_slider ) { - var iris, colorPicker, color; - - iris = $control.data( 'a8cIris' ); - colorPicker = $control.data( 'wpWpColorPicker' ); - - // Set the alpha value on the Iris object. - iris._color._alpha = alpha; - - // Store the new color value. - color = iris._color.toString(); - - // Set the value of the input. - $control.val( color ); - - // Update the background color of the color picker. - colorPicker.toggler.css({ - 'background-color': color - }); - - // Maybe update the alpha slider itself. - if ( update_slider ) { - generate_update_alpha_value_on_alpha_slider( alpha, $alphaSlider ); - } - - // Update the color value of the color picker object. - $control.wpColorPicker( 'color', color ); -} - -/** - * Update the slider handle position and label. - */ -function generate_update_alpha_value_on_alpha_slider( alpha, $alphaSlider ) { - $alphaSlider.slider( 'value', alpha ); - //$alphaSlider.find( '.ui-slider-handle' ).text( alpha.toString() ); -} - -/** - * Initialization trigger. - */ -jQuery( document ).ready( function( $ ) { - - // Loop over each control and transform it into our color picker. - $( '.gp-alpha-color-control' ).each( function() { - - // Scope the vars. - var $control, startingColor, paletteInput, showOpacity, defaultColor, palette, - colorPickerOptions, $container, $alphaSlider, alphaVal, sliderOptions, savedValue; - - // Store the control instance. - $control = $( this ); - - // Get our saved value - savedValue = wp.customize.value( $control.attr( 'data-customize-setting-link' ) )(); - - // Get a clean starting value for the option. - startingColor = savedValue.toString().replace( /\s+/g, '' ); - - // Get some data off the control. - paletteInput = $control.attr( 'data-palette' ); - showOpacity = $control.attr( 'data-show-opacity' ); - defaultColor = $control.attr( 'data-default-color' ); - - // Process the palette. - if ( paletteInput.indexOf( '|' ) !== -1 ) { - palette = paletteInput.split( '|' ); - } else if ( 'false' == paletteInput ) { - palette = false; - } else { - palette = true; - } - - // Set up the options that we'll pass to wpColorPicker(). - colorPickerOptions = { - change: function( event, ui ) { - var key, value, alpha, $transparency; - - key = $control.attr( 'data-customize-setting-link' ); - value = $control.wpColorPicker( 'color' ); - - // Send ajax request to wp.customize to trigger the Save action. - wp.customize( key, function( obj ) { - obj.set( value ); - }); - - $transparency = $container.find( '.transparency' ); - - // Always show the background color of the opacity slider at 100% opacity. - $alphaSlider.closest( '.gp-alpha-color-picker-container' ).css( 'background-color', ui.color.toString( 'no-alpha' ) ); - }, - palettes: palette - }; - - // Create the colorpicker. - $control.val( savedValue ).wpColorPicker( colorPickerOptions ); - - $container = $control.parents( '.wp-picker-container:first' ); - - // Insert our opacity slider. - $( '
    ' + - '
    ' + - '
    ' ).appendTo( $container.find( '.iris-picker-inner' ) ); - - $alphaSlider = $container.find( '.alpha-slider' ); - - // If starting value is in format RGBa, grab the alpha channel. - alphaVal = generate_get_alpha_value_from_color( startingColor ); - - // Get the solid color - solidColor = startingColor.toString().replace( '0.' + alphaVal, '100' ); - - // Set up jQuery UI slider() options. - sliderOptions = { - create: function( event, ui ) { - var value = $( this ).slider( 'value' ); - - // Set up initial values. - //$( this ).find( '.ui-slider-handle' ).text( value ); - $( this ).closest( '.iris-slider' ).css( 'background-color', solidColor ); - }, - value: alphaVal, - range: 'max', - step: 1, - min: 0, - max: 100, - animate: 300, - orientation: "vertical" - }; - - // Initialize jQuery UI slider with our options. - $alphaSlider.slider( sliderOptions ); - - // Bind event handler for clicking on a palette color. - $container.find( '.iris-palette' ).on( 'click', function() { - var color, alpha; - - color = $( this ).css( 'background-color' ); - alpha = generate_get_alpha_value_from_color( color ); - - generate_update_alpha_value_on_alpha_slider( alpha, $alphaSlider ); - - // Sometimes Iris doesn't set a perfect background-color on the palette, - // for example rgba(20, 80, 100, 0.3) becomes rgba(20, 80, 100, 0.298039). - // To compensante for this we round the opacity value on RGBa colors here - // and save it a second time to the color picker object. - if ( alpha != 100 ) { - color = color.toString().replace( /[^,]+(?=\))/, ( alpha / 100 ).toFixed( 2 ) ); - } - - $control.wpColorPicker( 'color', color ); - }); - - // Bind event handler for clicking on the 'Clear' button. - $container.find( '.button.wp-picker-clear' ).on( 'click', function() { - var key = $control.attr( 'data-customize-setting-link' ); - - // The #fff color is delibrate here. This sets the color picker to white instead of the - // defult black, which puts the color picker in a better place to visually represent empty. - $control.wpColorPicker( 'color', '#ffffff' ); - - // Set the actual option value to empty string. - wp.customize( key, function( obj ) { - obj.set( '' ); - }); - - generate_update_alpha_value_on_alpha_slider( 100, $alphaSlider ); - }); - - // Bind event handler for clicking on the 'Default' button. - $container.find( '.button.wp-picker-default' ).on( 'click', function() { - var alpha = generate_get_alpha_value_from_color( defaultColor ); - - generate_update_alpha_value_on_alpha_slider( alpha, $alphaSlider ); - }); - - // Bind event handler for typing or pasting into the input. - $control.on( 'input', function() { - var value = $( this ).val(); - - if ( '' === value ) { - var key = $control.attr( 'data-customize-setting-link' ); - - // The #fff color is delibrate here. This sets the color picker to white instead of the - // defult black, which puts the color picker in a better place to visually represent empty. - $control.wpColorPicker( 'color', '' ); - - // Set the actual option value to empty string. - wp.customize( key, function( obj ) { - obj.set( '' ); - }); - - generate_update_alpha_value_on_alpha_slider( 100, $alphaSlider ); - } else { - var alpha = generate_get_alpha_value_from_color( value ); - - generate_update_alpha_value_on_alpha_slider( alpha, $alphaSlider ); - } - }); - - // Update all the things when the slider is interacted with. - $alphaSlider.slider().on( 'slide', function( event, ui ) { - var alpha = parseFloat( ui.value ) / 100.0; - - generate_update_alpha_value_on_color_control( alpha, $control, $alphaSlider, false ); - }); - - }); -}); - -// Move the opacity bar next to the hue bar -jQuery( document ).ready( function( $ ) { - var container_width = $( '.customize-control-gp-alpha-color .iris-picker' ).width(); - var square_width = $( '.customize-control-gp-alpha-color .iris-square' ).width(); - var available_space = container_width - square_width; - var strip_width = ( available_space / 2 ) - 20; - var strip_height = $( '.customize-control-gp-alpha-color .iris-strip' ).height(); - $( '.customize-control-gp-alpha-color .iris-strip, .gp-alpha-color-picker-container' ).css( 'width', strip_width + 'px' ); - $( '.gp-alpha-color-picker-container' ).css( 'height', strip_height + 'px' ); - -}); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/backgrounds-customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/backgrounds-customizer.js deleted file mode 100644 index 74a4b2b7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/backgrounds-customizer.js +++ /dev/null @@ -1,31 +0,0 @@ -( function( api ) { - api.controlConstructor[ 'gp-background-images' ] = api.Control.extend( { - ready() { - var control = this; - - control.container.on( 'change', '.generatepress-backgrounds-repeat select', - function() { - control.settings.repeat.set( jQuery( this ).val() ); - } - ); - - control.container.on( 'change', '.generatepress-backgrounds-size select', - function() { - control.settings.size.set( jQuery( this ).val() ); - } - ); - - control.container.on( 'change', '.generatepress-backgrounds-attachment select', - function() { - control.settings.attachment.set( jQuery( this ).val() ); - } - ); - - control.container.on( 'input', '.generatepress-backgrounds-position input', - function() { - control.settings.position.set( jQuery( this ).val() ); - } - ); - }, - } ); -}( wp.customize ) ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/button-actions.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/button-actions.js deleted file mode 100644 index 600c3072..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/button-actions.js +++ /dev/null @@ -1,43 +0,0 @@ -jQuery( function( $ ) { - $( '[data-type="overlay_design"]' ).on( 'click', function( e ) { - e.preventDefault(); - - // eslint-disable-next-line no-alert - if ( ! confirm( gpButtonActions.warning ) ) { - return; - } - - ( function( api ) { - 'use strict'; - - api.instance( 'generate_settings[slideout_background_color]' ).set( gpButtonActions.styling.backgroundColor ); - api.instance( 'generate_settings[slideout_text_color]' ).set( gpButtonActions.styling.textColor ); - api.instance( 'generate_settings[slideout_background_hover_color]' ).set( gpButtonActions.styling.backgroundHoverColor ); - api.instance( 'generate_settings[slideout_background_current_color]' ).set( gpButtonActions.styling.backgroundCurrentColor ); - - api.instance( 'generate_settings[slideout_submenu_background_color]' ).set( gpButtonActions.styling.subMenuBackgroundColor ); - api.instance( 'generate_settings[slideout_submenu_text_color]' ).set( gpButtonActions.styling.subMenuTextColor ); - api.instance( 'generate_settings[slideout_submenu_background_hover_color]' ).set( gpButtonActions.styling.subMenuBackgroundHoverColor ); - api.instance( 'generate_settings[slideout_submenu_background_current_color]' ).set( gpButtonActions.styling.subMenuBackgroundCurrentColor ); - - api.instance( 'generate_settings[slideout_font_weight]' ).set( gpButtonActions.styling.fontWeight ); - api.instance( 'generate_settings[slideout_font_size]' ).set( gpButtonActions.styling.fontSize ); - - $( '.wp-color-picker' ).wpColorPicker().change(); - }( wp.customize ) ); - } ); - - $( '[data-type="regenerate_external_css"]' ).on( 'click', function( e ) { - var $thisButton = $( this ); // eslint-disable-line no-var - e.preventDefault(); - - $thisButton.removeClass( 'success' ).addClass( 'loading' ); - - $.post( ajaxurl, { - action: 'generatepress_regenerate_css_file', - _nonce: $thisButton.data( 'nonce' ), - } ).done( function() { - $thisButton.removeClass( 'loading' ).addClass( 'success' ); - } ); - } ); -} ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/control-toggle-customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/control-toggle-customizer.js deleted file mode 100644 index 76083b29..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/control-toggle-customizer.js +++ /dev/null @@ -1,35 +0,0 @@ -jQuery( function( $ ) { - $( '.generatepress-control-toggles' ).each( function() { - $( this ).find( 'button' ).first().addClass( 'active' ); - } ); - - $( document ).on( 'click', '.generatepress-control-toggles button', function( e ) { - e.preventDefault(); - var button = $( this ), - target = button.data( 'target' ), - otherTargets = button.siblings(); - - button.addClass( 'active' ); - button.siblings().removeClass( 'active' ); - - $( 'li[data-control-section="' + target + '"]' ).css( { - visibility: 'visible', - height: '', - width: '', - margin: '', - overflow: '', - } ); - - $.each( otherTargets, function() { - var otherTarget = $( this ).data( 'target' ); - - $( 'li[data-control-section="' + otherTarget + '"]' ).css( { - visibility: 'hidden', - height: '0', - width: '0', - margin: '0', - overflow: 'hidden', - } ); - } ); - } ); -} ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/copyright-customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/copyright-customizer.js deleted file mode 100644 index 4d5b4eb8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/copyright-customizer.js +++ /dev/null @@ -1,12 +0,0 @@ -( function( $, api ) { - api.controlConstructor[ 'gp-copyright' ] = api.Control.extend( { - ready() { - var control = this; - $( '.gp-copyright-area', control.container ).on( 'change keyup', - function() { - control.setting.set( $( this ).val() ); - } - ); - }, - } ); -}( jQuery, wp.customize ) ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/generatepress-controls.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/generatepress-controls.js deleted file mode 100644 index 2b3f2e08..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/generatepress-controls.js +++ /dev/null @@ -1,151 +0,0 @@ -( function( $, api ) { - /** - * Set some controls when we're using the navigation as a header. - * - * @since 1.8 - */ - api( 'generate_menu_plus_settings[navigation_as_header]', function( value ) { - value.bind( function( newval ) { - var navAlignmentSetting = api.instance( 'generate_settings[nav_alignment_setting]' ), - navAlignment = gpControls.navigationAlignment, - siteTitleFontSizeSetting = api.instance( 'generate_settings[site_title_font_size]' ), - mobileSiteTitleFontSizeSetting = api.instance( 'generate_settings[mobile_site_title_font_size]' ), - siteTitleFontSize = gpControls.siteTitleFontSize, - mobileSiteTitleFontSize = gpControls.mobileSiteTitleFontSize, - mobileHeader = api.instance( 'generate_menu_plus_settings[mobile_header]' ).get(), - navTextColorSetting = api.instance( 'generate_settings[navigation_text_color]' ), - navTextColor = gpControls.navigationTextColor, - siteTitleTextColorSetting = api.instance( 'generate_settings[site_title_color]' ), - siteTitleTextColor = gpControls.siteTitleTextColor; - - if ( siteTitleFontSizeSetting && ! siteTitleFontSizeSetting._dirty && 25 !== siteTitleFontSizeSetting.get() ) { - siteTitleFontSize = siteTitleFontSizeSetting.get(); - } - - if ( mobileSiteTitleFontSizeSetting && ! mobileSiteTitleFontSizeSetting._dirty && 20 !== mobileSiteTitleFontSizeSetting.get() ) { - mobileSiteTitleFontSize = mobileSiteTitleFontSizeSetting.get(); - } - - if ( navTextColorSetting && ! navTextColorSetting._dirty ) { - navTextColor = navTextColorSetting.get(); - } - - if ( siteTitleTextColorSetting && ! siteTitleTextColorSetting._dirty ) { - siteTitleTextColor = siteTitleTextColorSetting.get(); - } - - if ( newval ) { - navAlignmentSetting.set( 'right' ); - - if ( siteTitleFontSizeSetting ) { - siteTitleFontSizeSetting.set( 25 ); - } - - if ( api.instance( 'generate_settings[site_title_color]' ) ) { - api.instance( 'generate_settings[site_title_color]' ).set( navTextColor ); - } - - if ( mobileSiteTitleFontSizeSetting && 'enable' !== mobileHeader ) { - mobileSiteTitleFontSizeSetting.set( 20 ); - } - } else { - navAlignmentSetting.set( navAlignment ); - - if ( siteTitleFontSizeSetting ) { - siteTitleFontSizeSetting.set( siteTitleFontSize ); - } - - if ( api.instance( 'generate_settings[site_title_color]' ) ) { - api.instance( 'generate_settings[site_title_color]' ).set( siteTitleTextColor ); - } - - if ( mobileSiteTitleFontSizeSetting && 'enable' !== mobileHeader ) { - mobileSiteTitleFontSizeSetting.set( mobileSiteTitleFontSize ); - } - } - } ); - - var showRegularHeader, - showRegularHeaderCallback; - - /** - * Determine whether we should display our header controls. - * - * @return {boolean} Whether we should show the regular header. - */ - showRegularHeader = function() { - if ( value.get() ) { - return false; - } - - return true; - }; - - /** - * Update a control's active state according to the navigation as header option. - * - * @param {wp.customize.Control} control The current control. - */ - showRegularHeaderCallback = function( control ) { - var setActiveState = function() { - control.active.set( showRegularHeader() ); - }; - - control.active.validate = showRegularHeader; - setActiveState(); - value.bind( setActiveState ); - }; - - api.control( 'generate_header_helper', showRegularHeaderCallback ); - api.control( 'generate_settings[header_layout_setting]', showRegularHeaderCallback ); - api.control( 'generate_settings[header_inner_width]', showRegularHeaderCallback ); - api.control( 'generate_settings[header_alignment_setting]', showRegularHeaderCallback ); - api.control( 'header_spacing', showRegularHeaderCallback ); - api.control( 'generate_settings[header_background_color]', showRegularHeaderCallback ); - api.control( 'header_text_color', showRegularHeaderCallback ); - api.control( 'header_link_color', showRegularHeaderCallback ); - api.control( 'header_link_hover_color', showRegularHeaderCallback ); - api.control( 'site_tagline_color', showRegularHeaderCallback ); - api.control( 'font_site_tagline_control', showRegularHeaderCallback ); - api.control( 'generate_settings[site_tagline_font_size]', showRegularHeaderCallback ); - api.control( 'generate_settings[nav_position_setting]', showRegularHeaderCallback ); - api.control( 'generate_settings[logo_width]', showRegularHeaderCallback ); - } ); - - /** - * Set the navigation branding font size label on mobile header branding change. - * - * @since 1.8 - */ - api( 'generate_menu_plus_settings[mobile_header_branding]', function( value ) { - value.bind( function( newval ) { - if ( api.instance( 'generate_settings[mobile_site_title_font_size]' ) && 'title' === newval ) { - api.instance( 'generate_settings[mobile_site_title_font_size]' ).set( 20 ); - } - } ); - } ); - - /** - * Set the navigation branding font size label on mobile header change. - * - * @since 1.8 - */ - api( 'generate_menu_plus_settings[mobile_header]', function( value ) { - value.bind( function( newval ) { - var mobileSiteTitleFontSizeSetting = api.instance( 'generate_settings[mobile_site_title_font_size]' ), - mobileSiteTitleFontSize = gpControls.mobileSiteTitleFontSize; - - if ( mobileSiteTitleFontSizeSetting && ! mobileSiteTitleFontSizeSetting._dirty && 20 !== mobileSiteTitleFontSizeSetting.get() ) { - mobileSiteTitleFontSize = mobileSiteTitleFontSizeSetting.get(); - } - - if ( api.instance( 'generate_settings[mobile_site_title_font_size]' ) ) { - if ( 'enable' === newval ) { - api.instance( 'generate_settings[mobile_site_title_font_size]' ).set( 20 ); - } else { - api.instance( 'generate_settings[mobile_site_title_font_size]' ).set( mobileSiteTitleFontSize ); - } - } - } ); - } ); -}( jQuery, wp.customize ) ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/section-shortcuts.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/section-shortcuts.js deleted file mode 100644 index f1d93985..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/section-shortcuts.js +++ /dev/null @@ -1,46 +0,0 @@ -jQuery( function( $ ) { - $( '.generatepress-shortcuts a' ).on( 'click', function( e ) { - e.preventDefault(); - var section = $( this ).attr( 'data-section' ), - currentSection = $( this ).attr( 'data-current-section' ), - destinationSectionElement = $( '[id$="' + section + '"]' ); - - if ( section ) { - wp.customize.section( section ).focus(); - - destinationSectionElement.find( '.show-shortcuts' ).hide(); - destinationSectionElement.find( '.return-shortcut' ).show(); - destinationSectionElement.find( '.return-shortcut a' ).attr( 'data-return', currentSection ); - } - } ); - - $( '.return-shortcut .dashicons' ).on( 'click', function() { - var container = $( this ).closest( '.generatepress-shortcuts' ); - - container.find( '.show-shortcuts' ).show(); - container.find( '.return-shortcut' ).hide(); - } ); - - $( '.return-shortcut a' ).on( 'click', function( e ) { - e.preventDefault(); - - var section = $( this ).attr( 'data-return' ); - var container = $( this ).closest( '.generatepress-shortcuts' ); - - if ( section ) { - wp.customize.section( section ).focus(); - - container.find( '.show-shortcuts' ).show(); - container.find( '.return-shortcut' ).hide(); - } - } ); - - var customizeSectionBack = $( '.customize-section-back' ); - - if ( customizeSectionBack ) { - customizeSectionBack.on( 'click', function() { - $( '.show-shortcuts' ).show(); - $( '.return-shortcut' ).hide(); - } ); - } -} ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/selectWoo.min.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/selectWoo.min.js deleted file mode 100644 index c2de789f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/selectWoo.min.js +++ /dev/null @@ -1 +0,0 @@ -/*! Select2 1.0.8 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof module&&module.exports?module.exports=function(b,c){return void 0===c&&(c="undefined"!=typeof window?require("jquery"):require("jquery")(b)),a(c),c}:a(jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return v.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n,o=b&&b.split("/"),p=t.map,q=p&&p["*"]||{};if(a){for(a=a.split("/"),g=a.length-1,t.nodeIdCompat&&x.test(a[g])&&(a[g]=a[g].replace(x,"")),"."===a[0].charAt(0)&&o&&(n=o.slice(0,o.length-1),a=n.concat(a)),k=0;k0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}if((o||q)&&p){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),o)for(l=o.length;l>0;l-=1)if((e=p[o.slice(0,l).join("/")])&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&q&&q[d]&&(i=q[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=w.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),o.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){r[a]=b}}function j(a){if(e(s,a)){var c=s[a];delete s[a],u[a]=!0,n.apply(b,c)}if(!e(r,a)&&!e(u,a))throw new Error("No "+a);return r[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return a?k(a):[]}function m(a){return function(){return t&&t.config&&t.config[a]||{}}}var n,o,p,q,r={},s={},t={},u={},v=Object.prototype.hasOwnProperty,w=[].slice,x=/\.js$/;p=function(a,b){var c,d=k(a),e=d[0],g=b[1];return a=d[1],e&&(e=f(e,g),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(g)):f(a,g):(a=f(a,g),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},q={require:function(a){return g(a)},exports:function(a){var b=r[a];return void 0!==b?b:r[a]={}},module:function(a){return{id:a,uri:"",exports:r[a],config:m(a)}}},n=function(a,c,d,f){var h,k,m,n,o,t,v,w=[],x=typeof d;if(f=f||a,t=l(f),"undefined"===x||"function"===x){for(c=!c.length&&d.length?["require","exports","module"]:c,o=0;o0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h":">",'"':""","'":"'","/":"/"};return"string"!=typeof a?a:String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})},c.entityDecode=function(a){var b=document.createElement("textarea");return b.innerHTML=a,b.value},c.appendMany=function(b,c){if("1.7"===a.fn.jquery.substr(0,3)){var d=a();a.map(c,function(a){d=d.add(a)}),c=d}b.append(c)},c.isTouchscreen=function(){return void 0===c._isTouchscreenCache&&(c._isTouchscreenCache="ontouchstart"in document.documentElement),c._isTouchscreenCache},c}),b.define("select2/results",["jquery","./utils"],function(a,b){function c(a,b,d){this.$element=a,this.data=d,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('
      ');return this.options.get("multiple")&&b.attr("aria-multiselectable","true"),this.$results=b,b},c.prototype.clear=function(){this.$results.empty()},c.prototype.displayMessage=function(b){var c=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var d=a(''),e=this.options.get("translations").get(b.message);d.append(c(e(b.args))),d[0].className+=" select2-results__message",this.$results.append(d)},c.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},c.prototype.append=function(a){this.hideLoading();var b=[];if(null==a.results||0===a.results.length)return void(0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"}));a.results=this.sort(a.results);for(var c=0;c0?b.first().trigger("mouseenter"):a.first().trigger("mouseenter"),this.ensureHighlightVisible()},c.prototype.setClasses=function(){var b=this;this.data.current(function(c){var d=a.map(c,function(a){return a.id.toString()});b.$results.find(".select2-results__option[data-selected]").each(function(){var b=a(this),c=a.data(this,"data"),e=""+c.id;null!=c.element&&c.element.selected||null==c.element&&a.inArray(e,d)>-1?b.attr("data-selected","true"):b.attr("data-selected","false")})})},c.prototype.showLoading=function(a){this.hideLoading();var b=this.options.get("translations").get("searching"),c={disabled:!0,loading:!0,text:b(a)},d=this.option(c);d.className+=" loading-results",this.$results.prepend(d)},c.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},c.prototype.option=function(b){var c=document.createElement("li");c.className="select2-results__option";var d={role:"option","data-selected":"false",tabindex:-1};b.disabled&&(delete d["data-selected"],d["aria-disabled"]="true"),null==b.id&&delete d["data-selected"],null!=b._resultId&&(c.id=b._resultId),b.title&&(c.title=b.title),b.children&&(d["aria-label"]=b.text,delete d["data-selected"]);for(var e in d){var f=d[e];c.setAttribute(e,f)}if(b.children){var g=a(c),h=document.createElement("strong");h.className="select2-results__group";var i=a(h);this.template(b,h),i.attr("role","presentation");for(var j=[],k=0;k",{class:"select2-results__options select2-results__options--nested",role:"listbox"});n.append(j),g.attr("role","list"),g.append(h),g.append(n)}else this.template(b,c);return a.data(c,"data",b),c},c.prototype.bind=function(b,c){var d=this,e=b.id+"-results";this.$results.attr("id",e),b.on("results:all",function(a){d.clear(),d.append(a.data),b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("results:append",function(a){d.append(a.data),b.isOpen()&&d.setClasses()}),b.on("query",function(a){d.hideMessages(),d.showLoading(a)}),b.on("select",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("unselect",function(){b.isOpen()&&(d.setClasses(),d.highlightFirstItem())}),b.on("open",function(){d.$results.attr("aria-expanded","true"),d.$results.attr("aria-hidden","false"),d.setClasses(),d.ensureHighlightVisible()}),b.on("close",function(){d.$results.attr("aria-expanded","false"),d.$results.attr("aria-hidden","true"),d.$results.removeAttr("aria-activedescendant")}),b.on("results:toggle",function(){var a=d.getHighlightedResults();0!==a.length&&a.trigger("mouseup")}),b.on("results:select",function(){var a=d.getHighlightedResults();if(0!==a.length){var b=a.data("data");"true"==a.attr("data-selected")?d.trigger("close",{}):d.trigger("select",{data:b})}}),b.on("results:previous",function(){var a=d.getHighlightedResults(),b=d.$results.find("[data-selected]"),c=b.index(a);if(0!==c){var e=c-1;0===a.length&&(e=0);var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top,h=f.offset().top,i=d.$results.scrollTop()+(h-g);0===e?d.$results.scrollTop(0):h-g<0&&d.$results.scrollTop(i)}}),b.on("results:next",function(){var a=d.getHighlightedResults(),b=d.$results.find("[data-selected]"),c=b.index(a),e=c+1;if(!(e>=b.length)){var f=b.eq(e);f.trigger("mouseenter");var g=d.$results.offset().top+d.$results.outerHeight(!1),h=f.offset().top+f.outerHeight(!1),i=d.$results.scrollTop()+h-g;0===e?d.$results.scrollTop(0):h>g&&d.$results.scrollTop(i)}}),b.on("results:focus",function(a){a.element.addClass("select2-results__option--highlighted").attr("aria-selected","true"),d.$results.attr("aria-activedescendant",a.element.attr("id"))}),b.on("results:message",function(a){d.displayMessage(a)}),a.fn.mousewheel&&this.$results.on("mousewheel",function(a){var b=d.$results.scrollTop(),c=d.$results.get(0).scrollHeight-b+a.deltaY,e=a.deltaY>0&&b-a.deltaY<=0,f=a.deltaY<0&&c<=d.$results.height();e?(d.$results.scrollTop(0),a.preventDefault(),a.stopPropagation()):f&&(d.$results.scrollTop(d.$results.get(0).scrollHeight-d.$results.height()),a.preventDefault(),a.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[data-selected]",function(b){var c=a(this),e=c.data("data");if("true"===c.attr("data-selected"))return void(d.options.get("multiple")?d.trigger("unselect",{originalEvent:b,data:e}):d.trigger("close",{}));d.trigger("select",{originalEvent:b,data:e})}),this.$results.on("mouseenter",".select2-results__option[data-selected]",function(b){var c=a(this).data("data");d.getHighlightedResults().removeClass("select2-results__option--highlighted").attr("aria-selected","false"),d.trigger("results:focus",{data:c,element:a(this)})})},c.prototype.getHighlightedResults=function(){return this.$results.find(".select2-results__option--highlighted")},c.prototype.destroy=function(){this.$results.remove()},c.prototype.ensureHighlightVisible=function(){var a=this.getHighlightedResults();if(0!==a.length){var b=this.$results.find("[data-selected]"),c=b.index(a),d=this.$results.offset().top,e=a.offset().top,f=this.$results.scrollTop()+(e-d),g=e-d;f-=2*a.outerHeight(!1),c<=2?this.$results.scrollTop(0):(g>this.$results.outerHeight()||g<0)&&this.$results.scrollTop(f)}},c.prototype.template=function(b,c){var d=this.options.get("templateResult"),e=this.options.get("escapeMarkup"),f=d(b,c);null==f?c.style.display="none":"string"==typeof f?c.innerHTML=e(f):a(c).append(f)},c}),b.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),b.define("select2/selection/base",["jquery","../utils","../keys"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,b.Observable),d.prototype.render=function(){var b=a('');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),b.attr("title",this.$element.attr("title")),b.attr("tabindex",this._tabindex),this.$selection=b,b},d.prototype.bind=function(a,b){var d=this,e=(a.id,a.id+"-results");this.options.get("minimumResultsForSearch");this.container=a,this.$selection.on("focus",function(a){d.trigger("focus",a)}),this.$selection.on("blur",function(a){d._handleBlur(a)}),this.$selection.on("keydown",function(a){d.trigger("keypress",a),a.which===c.SPACE&&a.preventDefault()}),a.on("results:focus",function(a){d.$selection.attr("aria-activedescendant",a.data._resultId)}),a.on("selection:update",function(a){d.update(a.data)}),a.on("open",function(){d.$selection.attr("aria-expanded","true"),d.$selection.attr("aria-owns",e),d._attachCloseHandler(a)}),a.on("close",function(){d.$selection.attr("aria-expanded","false"),d.$selection.removeAttr("aria-activedescendant"),d.$selection.removeAttr("aria-owns"),window.setTimeout(function(){d.$selection.focus()},1),d._detachCloseHandler(a)}),a.on("enable",function(){d.$selection.attr("tabindex",d._tabindex)}),a.on("disable",function(){d.$selection.attr("tabindex","-1")})},d.prototype._handleBlur=function(b){var c=this;window.setTimeout(function(){document.activeElement==c.$selection[0]||a.contains(c.$selection[0],document.activeElement)||c.trigger("blur",b)},1)},d.prototype._attachCloseHandler=function(b){a(document.body).on("mousedown.select2."+b.id,function(b){var c=a(b.target),d=c.closest(".select2");a(".select2.select2-container--open").each(function(){var b=a(this);this!=d[0]&&(b.data("element").select2("close"),setTimeout(function(){b.find("*:focus").blur(),c.focus()},1))})})},d.prototype._detachCloseHandler=function(b){a(document.body).off("mousedown.select2."+b.id)},d.prototype.position=function(a,b){b.find(".selection").append(a)},d.prototype.destroy=function(){this._detachCloseHandler(this.container)},d.prototype.update=function(a){throw new Error("The `update` method must be defined in child classes.")},d}),b.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(a,b,c,d){function e(){e.__super__.constructor.apply(this,arguments)}return c.Extend(e,b),e.prototype.render=function(){var a=e.__super__.render.call(this);return a.addClass("select2-selection--single"),a.html(''),a},e.prototype.bind=function(a,b){var c=this;e.__super__.bind.apply(this,arguments);var d=a.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",d).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",d),this.$selection.attr("role","combobox"),this.$selection.on("mousedown",function(a){1===a.which&&c.trigger("toggle",{originalEvent:a})}),this.$selection.on("focus",function(a){}),this.$selection.on("keydown",function(b){!a.isOpen()&&b.which>=48&&b.which<=90&&a.open()}),this.$selection.on("blur",function(a){}),a.on("focus",function(b){a.isOpen()||c.$selection.focus()}),a.on("selection:update",function(a){c.update(a.data)})},e.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},e.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},e.prototype.selectionContainer=function(){return a("")},e.prototype.update=function(a){if(0===a.length)return void this.clear();var b=a[0],d=this.$selection.find(".select2-selection__rendered"),e=c.entityDecode(this.display(b,d));d.empty().text(e),d.prop("title",b.title||b.text)},e}),b.define("select2/selection/multiple",["jquery","./base","../utils"],function(a,b,c){function d(a,b){d.__super__.constructor.apply(this,arguments)}return c.Extend(d,b),d.prototype.render=function(){var a=d.__super__.render.call(this);return a.addClass("select2-selection--multiple"),a.html('
        '),a},d.prototype.bind=function(b,c){var e=this;d.__super__.bind.apply(this,arguments),this.$selection.on("click",function(a){e.trigger("toggle",{originalEvent:a})}),this.$selection.on("click",".select2-selection__choice__remove",function(b){if(!e.options.get("disabled")){var c=a(this),d=c.parent(),f=d.data("data");e.trigger("unselect",{originalEvent:b,data:f})}}),this.$selection.on("keydown",function(a){!b.isOpen()&&a.which>=48&&a.which<=90&&b.open()}),b.on("focus",function(){e.focusOnSearch()})},d.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},d.prototype.display=function(a,b){var c=this.options.get("templateSelection");return this.options.get("escapeMarkup")(c(a,b))},d.prototype.selectionContainer=function(){return a('
      • ')},d.prototype.focusOnSearch=function(){var a=this;void 0!==a.$search&&setTimeout(function(){a._keyUpPrevented=!0,a.$search.focus()},1)},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d1||c)return a.call(this,b);this.clear();var d=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(d)},b}),b.define("select2/selection/allowClear",["jquery","../keys"],function(a,b){function c(){}return c.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(a){d._handleClear(a)}),b.on("keypress",function(a){d._handleKeyboardClear(a,b)})},c.prototype._handleClear=function(a,b){if(!this.options.get("disabled")){var c=this.$selection.find(".select2-selection__clear");if(0!==c.length){b.stopPropagation();for(var d=c.data("data"),e=0;e0||0===c.length)){var d=a('×');d.data("data",c),this.$selection.find(".select2-selection__rendered").prepend(d)}},c}),b.define("select2/selection/search",["jquery","../utils","../keys"],function(a,b,c){function d(a,b,c){a.call(this,b,c)}return d.prototype.render=function(b){var c=a('');this.$searchContainer=c,this.$search=c.find("input");var d=b.call(this);return this._transferTabIndex(),d},d.prototype.bind=function(a,b,d){var e=this,f=b.id+"-results";a.call(this,b,d),b.on("open",function(){e.$search.attr("aria-owns",f),e.$search.trigger("focus")}),b.on("close",function(){e.$search.val(""),e.$search.removeAttr("aria-activedescendant"),e.$search.removeAttr("aria-owns"),e.$search.trigger("focus")}),b.on("enable",function(){e.$search.prop("disabled",!1),e._transferTabIndex()}),b.on("disable",function(){e.$search.prop("disabled",!0)}),b.on("focus",function(a){e.$search.trigger("focus")}),b.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.data._resultId)}),this.$selection.on("focusin",".select2-search--inline",function(a){e.trigger("focus",a)}),this.$selection.on("focusout",".select2-search--inline",function(a){e._handleBlur(a)}),this.$selection.on("keydown",".select2-search--inline",function(a){if(a.stopPropagation(),e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented(),a.which===c.BACKSPACE&&""===e.$search.val()){var d=e.$searchContainer.prev(".select2-selection__choice");if(d.length>0){var f=d.data("data");e.searchRemoveChoice(f),a.preventDefault()}}else a.which===c.ENTER&&(b.open(),a.preventDefault())});var g=document.documentMode,h=g&&g<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(a){if(h)return void e.$selection.off("input.search input.searchcheck");e.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(a){if(h&&"input"===a.type)return void e.$selection.off("input.search input.searchcheck");var b=a.which;b!=c.SHIFT&&b!=c.CTRL&&b!=c.ALT&&b!=c.TAB&&e.handleSearch(a)})},d.prototype._transferTabIndex=function(a){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},d.prototype.createPlaceholder=function(a,b){this.$search.attr("placeholder",b.text)},d.prototype.update=function(a,b){var c=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),a.call(this,b),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),c&&this.$search.focus()},d.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var a=this.$search.val();this.trigger("query",{term:a})}this._keyUpPrevented=!1},d.prototype.searchRemoveChoice=function(a,b){this.trigger("unselect",{data:b}),this.$search.val(b.text),this.handleSearch()},d.prototype.resizeSearch=function(){this.$search.css("width","25px");var a="";if(""!==this.$search.attr("placeholder"))a=this.$selection.find(".select2-selection__rendered").innerWidth();else{a=.75*(this.$search.val().length+1)+"em"}this.$search.css("width",a)},d}),b.define("select2/selection/eventRelay",["jquery"],function(a){function b(){}return b.prototype.bind=function(b,c,d){var e=this,f=["open","opening","close","closing","select","selecting","unselect","unselecting"],g=["opening","closing","selecting","unselecting"];b.call(this,c,d),c.on("*",function(b,c){if(-1!==a.inArray(b,f)){c=c||{};var d=a.Event("select2:"+b,{params:c});e.$element.trigger(d),-1!==a.inArray(b,g)&&(c.prevented=d.isDefaultPrevented())}})},b}),b.define("select2/translation",["jquery","require"],function(a,b){function c(a){this.dict=a||{}}return c.prototype.all=function(){return this.dict},c.prototype.get=function(a){return this.dict[a]},c.prototype.extend=function(b){this.dict=a.extend({},b.all(),this.dict)},c._cache={},c.loadPath=function(a){if(!(a in c._cache)){var d=b(a);c._cache[a]=d}return new c(c._cache[a])},c}),b.define("select2/diacritics",[],function(){return{"Ⓐ":"A","A":"A","À":"A","Á":"A","Â":"A","Ầ":"A","Ấ":"A","Ẫ":"A","Ẩ":"A","Ã":"A","Ā":"A","Ă":"A","Ằ":"A","Ắ":"A","Ẵ":"A","Ẳ":"A","Ȧ":"A","Ǡ":"A","Ä":"A","Ǟ":"A","Ả":"A","Å":"A","Ǻ":"A","Ǎ":"A","Ȁ":"A","Ȃ":"A","Ạ":"A","Ậ":"A","Ặ":"A","Ḁ":"A","Ą":"A","Ⱥ":"A","Ɐ":"A","Ꜳ":"AA","Æ":"AE","Ǽ":"AE","Ǣ":"AE","Ꜵ":"AO","Ꜷ":"AU","Ꜹ":"AV","Ꜻ":"AV","Ꜽ":"AY","Ⓑ":"B","B":"B","Ḃ":"B","Ḅ":"B","Ḇ":"B","Ƀ":"B","Ƃ":"B","Ɓ":"B","Ⓒ":"C","C":"C","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","Ç":"C","Ḉ":"C","Ƈ":"C","Ȼ":"C","Ꜿ":"C","Ⓓ":"D","D":"D","Ḋ":"D","Ď":"D","Ḍ":"D","Ḑ":"D","Ḓ":"D","Ḏ":"D","Đ":"D","Ƌ":"D","Ɗ":"D","Ɖ":"D","Ꝺ":"D","DZ":"DZ","DŽ":"DZ","Dz":"Dz","Dž":"Dz","Ⓔ":"E","E":"E","È":"E","É":"E","Ê":"E","Ề":"E","Ế":"E","Ễ":"E","Ể":"E","Ẽ":"E","Ē":"E","Ḕ":"E","Ḗ":"E","Ĕ":"E","Ė":"E","Ë":"E","Ẻ":"E","Ě":"E","Ȅ":"E","Ȇ":"E","Ẹ":"E","Ệ":"E","Ȩ":"E","Ḝ":"E","Ę":"E","Ḙ":"E","Ḛ":"E","Ɛ":"E","Ǝ":"E","Ⓕ":"F","F":"F","Ḟ":"F","Ƒ":"F","Ꝼ":"F","Ⓖ":"G","G":"G","Ǵ":"G","Ĝ":"G","Ḡ":"G","Ğ":"G","Ġ":"G","Ǧ":"G","Ģ":"G","Ǥ":"G","Ɠ":"G","Ꞡ":"G","Ᵹ":"G","Ꝿ":"G","Ⓗ":"H","H":"H","Ĥ":"H","Ḣ":"H","Ḧ":"H","Ȟ":"H","Ḥ":"H","Ḩ":"H","Ḫ":"H","Ħ":"H","Ⱨ":"H","Ⱶ":"H","Ɥ":"H","Ⓘ":"I","I":"I","Ì":"I","Í":"I","Î":"I","Ĩ":"I","Ī":"I","Ĭ":"I","İ":"I","Ï":"I","Ḯ":"I","Ỉ":"I","Ǐ":"I","Ȉ":"I","Ȋ":"I","Ị":"I","Į":"I","Ḭ":"I","Ɨ":"I","Ⓙ":"J","J":"J","Ĵ":"J","Ɉ":"J","Ⓚ":"K","K":"K","Ḱ":"K","Ǩ":"K","Ḳ":"K","Ķ":"K","Ḵ":"K","Ƙ":"K","Ⱪ":"K","Ꝁ":"K","Ꝃ":"K","Ꝅ":"K","Ꞣ":"K","Ⓛ":"L","L":"L","Ŀ":"L","Ĺ":"L","Ľ":"L","Ḷ":"L","Ḹ":"L","Ļ":"L","Ḽ":"L","Ḻ":"L","Ł":"L","Ƚ":"L","Ɫ":"L","Ⱡ":"L","Ꝉ":"L","Ꝇ":"L","Ꞁ":"L","LJ":"LJ","Lj":"Lj","Ⓜ":"M","M":"M","Ḿ":"M","Ṁ":"M","Ṃ":"M","Ɱ":"M","Ɯ":"M","Ⓝ":"N","N":"N","Ǹ":"N","Ń":"N","Ñ":"N","Ṅ":"N","Ň":"N","Ṇ":"N","Ņ":"N","Ṋ":"N","Ṉ":"N","Ƞ":"N","Ɲ":"N","Ꞑ":"N","Ꞥ":"N","NJ":"NJ","Nj":"Nj","Ⓞ":"O","O":"O","Ò":"O","Ó":"O","Ô":"O","Ồ":"O","Ố":"O","Ỗ":"O","Ổ":"O","Õ":"O","Ṍ":"O","Ȭ":"O","Ṏ":"O","Ō":"O","Ṑ":"O","Ṓ":"O","Ŏ":"O","Ȯ":"O","Ȱ":"O","Ö":"O","Ȫ":"O","Ỏ":"O","Ő":"O","Ǒ":"O","Ȍ":"O","Ȏ":"O","Ơ":"O","Ờ":"O","Ớ":"O","Ỡ":"O","Ở":"O","Ợ":"O","Ọ":"O","Ộ":"O","Ǫ":"O","Ǭ":"O","Ø":"O","Ǿ":"O","Ɔ":"O","Ɵ":"O","Ꝋ":"O","Ꝍ":"O","Ƣ":"OI","Ꝏ":"OO","Ȣ":"OU","Ⓟ":"P","P":"P","Ṕ":"P","Ṗ":"P","Ƥ":"P","Ᵽ":"P","Ꝑ":"P","Ꝓ":"P","Ꝕ":"P","Ⓠ":"Q","Q":"Q","Ꝗ":"Q","Ꝙ":"Q","Ɋ":"Q","Ⓡ":"R","R":"R","Ŕ":"R","Ṙ":"R","Ř":"R","Ȑ":"R","Ȓ":"R","Ṛ":"R","Ṝ":"R","Ŗ":"R","Ṟ":"R","Ɍ":"R","Ɽ":"R","Ꝛ":"R","Ꞧ":"R","Ꞃ":"R","Ⓢ":"S","S":"S","ẞ":"S","Ś":"S","Ṥ":"S","Ŝ":"S","Ṡ":"S","Š":"S","Ṧ":"S","Ṣ":"S","Ṩ":"S","Ș":"S","Ş":"S","Ȿ":"S","Ꞩ":"S","Ꞅ":"S","Ⓣ":"T","T":"T","Ṫ":"T","Ť":"T","Ṭ":"T","Ț":"T","Ţ":"T","Ṱ":"T","Ṯ":"T","Ŧ":"T","Ƭ":"T","Ʈ":"T","Ⱦ":"T","Ꞇ":"T","Ꜩ":"TZ","Ⓤ":"U","U":"U","Ù":"U","Ú":"U","Û":"U","Ũ":"U","Ṹ":"U","Ū":"U","Ṻ":"U","Ŭ":"U","Ü":"U","Ǜ":"U","Ǘ":"U","Ǖ":"U","Ǚ":"U","Ủ":"U","Ů":"U","Ű":"U","Ǔ":"U","Ȕ":"U","Ȗ":"U","Ư":"U","Ừ":"U","Ứ":"U","Ữ":"U","Ử":"U","Ự":"U","Ụ":"U","Ṳ":"U","Ų":"U","Ṷ":"U","Ṵ":"U","Ʉ":"U","Ⓥ":"V","V":"V","Ṽ":"V","Ṿ":"V","Ʋ":"V","Ꝟ":"V","Ʌ":"V","Ꝡ":"VY","Ⓦ":"W","W":"W","Ẁ":"W","Ẃ":"W","Ŵ":"W","Ẇ":"W","Ẅ":"W","Ẉ":"W","Ⱳ":"W","Ⓧ":"X","X":"X","Ẋ":"X","Ẍ":"X","Ⓨ":"Y","Y":"Y","Ỳ":"Y","Ý":"Y","Ŷ":"Y","Ỹ":"Y","Ȳ":"Y","Ẏ":"Y","Ÿ":"Y","Ỷ":"Y","Ỵ":"Y","Ƴ":"Y","Ɏ":"Y","Ỿ":"Y","Ⓩ":"Z","Z":"Z","Ź":"Z","Ẑ":"Z","Ż":"Z","Ž":"Z","Ẓ":"Z","Ẕ":"Z","Ƶ":"Z","Ȥ":"Z","Ɀ":"Z","Ⱬ":"Z","Ꝣ":"Z","ⓐ":"a","a":"a","ẚ":"a","à":"a","á":"a","â":"a","ầ":"a","ấ":"a","ẫ":"a","ẩ":"a","ã":"a","ā":"a","ă":"a","ằ":"a","ắ":"a","ẵ":"a","ẳ":"a","ȧ":"a","ǡ":"a","ä":"a","ǟ":"a","ả":"a","å":"a","ǻ":"a","ǎ":"a","ȁ":"a","ȃ":"a","ạ":"a","ậ":"a","ặ":"a","ḁ":"a","ą":"a","ⱥ":"a","ɐ":"a","ꜳ":"aa","æ":"ae","ǽ":"ae","ǣ":"ae","ꜵ":"ao","ꜷ":"au","ꜹ":"av","ꜻ":"av","ꜽ":"ay","ⓑ":"b","b":"b","ḃ":"b","ḅ":"b","ḇ":"b","ƀ":"b","ƃ":"b","ɓ":"b","ⓒ":"c","c":"c","ć":"c","ĉ":"c","ċ":"c","č":"c","ç":"c","ḉ":"c","ƈ":"c","ȼ":"c","ꜿ":"c","ↄ":"c","ⓓ":"d","d":"d","ḋ":"d","ď":"d","ḍ":"d","ḑ":"d","ḓ":"d","ḏ":"d","đ":"d","ƌ":"d","ɖ":"d","ɗ":"d","ꝺ":"d","dz":"dz","dž":"dz","ⓔ":"e","e":"e","è":"e","é":"e","ê":"e","ề":"e","ế":"e","ễ":"e","ể":"e","ẽ":"e","ē":"e","ḕ":"e","ḗ":"e","ĕ":"e","ė":"e","ë":"e","ẻ":"e","ě":"e","ȅ":"e","ȇ":"e","ẹ":"e","ệ":"e","ȩ":"e","ḝ":"e","ę":"e","ḙ":"e","ḛ":"e","ɇ":"e","ɛ":"e","ǝ":"e","ⓕ":"f","f":"f","ḟ":"f","ƒ":"f","ꝼ":"f","ⓖ":"g","g":"g","ǵ":"g","ĝ":"g","ḡ":"g","ğ":"g","ġ":"g","ǧ":"g","ģ":"g","ǥ":"g","ɠ":"g","ꞡ":"g","ᵹ":"g","ꝿ":"g","ⓗ":"h","h":"h","ĥ":"h","ḣ":"h","ḧ":"h","ȟ":"h","ḥ":"h","ḩ":"h","ḫ":"h","ẖ":"h","ħ":"h","ⱨ":"h","ⱶ":"h","ɥ":"h","ƕ":"hv","ⓘ":"i","i":"i","ì":"i","í":"i","î":"i","ĩ":"i","ī":"i","ĭ":"i","ï":"i","ḯ":"i","ỉ":"i","ǐ":"i","ȉ":"i","ȋ":"i","ị":"i","į":"i","ḭ":"i","ɨ":"i","ı":"i","ⓙ":"j","j":"j","ĵ":"j","ǰ":"j","ɉ":"j","ⓚ":"k","k":"k","ḱ":"k","ǩ":"k","ḳ":"k","ķ":"k","ḵ":"k","ƙ":"k","ⱪ":"k","ꝁ":"k","ꝃ":"k","ꝅ":"k","ꞣ":"k","ⓛ":"l","l":"l","ŀ":"l","ĺ":"l","ľ":"l","ḷ":"l","ḹ":"l","ļ":"l","ḽ":"l","ḻ":"l","ſ":"l","ł":"l","ƚ":"l","ɫ":"l","ⱡ":"l","ꝉ":"l","ꞁ":"l","ꝇ":"l","lj":"lj","ⓜ":"m","m":"m","ḿ":"m","ṁ":"m","ṃ":"m","ɱ":"m","ɯ":"m","ⓝ":"n","n":"n","ǹ":"n","ń":"n","ñ":"n","ṅ":"n","ň":"n","ṇ":"n","ņ":"n","ṋ":"n","ṉ":"n","ƞ":"n","ɲ":"n","ʼn":"n","ꞑ":"n","ꞥ":"n","nj":"nj","ⓞ":"o","o":"o","ò":"o","ó":"o","ô":"o","ồ":"o","ố":"o","ỗ":"o","ổ":"o","õ":"o","ṍ":"o","ȭ":"o","ṏ":"o","ō":"o","ṑ":"o","ṓ":"o","ŏ":"o","ȯ":"o","ȱ":"o","ö":"o","ȫ":"o","ỏ":"o","ő":"o","ǒ":"o","ȍ":"o","ȏ":"o","ơ":"o","ờ":"o","ớ":"o","ỡ":"o","ở":"o","ợ":"o","ọ":"o","ộ":"o","ǫ":"o","ǭ":"o","ø":"o","ǿ":"o","ɔ":"o","ꝋ":"o","ꝍ":"o","ɵ":"o","ƣ":"oi","ȣ":"ou","ꝏ":"oo","ⓟ":"p","p":"p","ṕ":"p","ṗ":"p","ƥ":"p","ᵽ":"p","ꝑ":"p","ꝓ":"p","ꝕ":"p","ⓠ":"q","q":"q","ɋ":"q","ꝗ":"q","ꝙ":"q","ⓡ":"r","r":"r","ŕ":"r","ṙ":"r","ř":"r","ȑ":"r","ȓ":"r","ṛ":"r","ṝ":"r","ŗ":"r","ṟ":"r","ɍ":"r","ɽ":"r","ꝛ":"r","ꞧ":"r","ꞃ":"r","ⓢ":"s","s":"s","ß":"s","ś":"s","ṥ":"s","ŝ":"s","ṡ":"s","š":"s","ṧ":"s","ṣ":"s","ṩ":"s","ș":"s","ş":"s","ȿ":"s","ꞩ":"s","ꞅ":"s","ẛ":"s","ⓣ":"t","t":"t","ṫ":"t","ẗ":"t","ť":"t","ṭ":"t","ț":"t","ţ":"t","ṱ":"t","ṯ":"t","ŧ":"t","ƭ":"t","ʈ":"t","ⱦ":"t","ꞇ":"t","ꜩ":"tz","ⓤ":"u","u":"u","ù":"u","ú":"u","û":"u","ũ":"u","ṹ":"u","ū":"u","ṻ":"u","ŭ":"u","ü":"u","ǜ":"u","ǘ":"u","ǖ":"u","ǚ":"u","ủ":"u","ů":"u","ű":"u","ǔ":"u","ȕ":"u","ȗ":"u","ư":"u","ừ":"u","ứ":"u","ữ":"u","ử":"u","ự":"u","ụ":"u","ṳ":"u","ų":"u","ṷ":"u","ṵ":"u","ʉ":"u","ⓥ":"v","v":"v","ṽ":"v","ṿ":"v","ʋ":"v","ꝟ":"v","ʌ":"v","ꝡ":"vy","ⓦ":"w","w":"w","ẁ":"w","ẃ":"w","ŵ":"w","ẇ":"w","ẅ":"w","ẘ":"w","ẉ":"w","ⱳ":"w","ⓧ":"x","x":"x","ẋ":"x","ẍ":"x","ⓨ":"y","y":"y","ỳ":"y","ý":"y","ŷ":"y","ỹ":"y","ȳ":"y","ẏ":"y","ÿ":"y","ỷ":"y","ẙ":"y","ỵ":"y","ƴ":"y","ɏ":"y","ỿ":"y","ⓩ":"z","z":"z","ź":"z","ẑ":"z","ż":"z","ž":"z","ẓ":"z","ẕ":"z","ƶ":"z","ȥ":"z","ɀ":"z","ⱬ":"z","ꝣ":"z","Ά":"Α","Έ":"Ε","Ή":"Η","Ί":"Ι","Ϊ":"Ι","Ό":"Ο","Ύ":"Υ","Ϋ":"Υ","Ώ":"Ω","ά":"α","έ":"ε","ή":"η","ί":"ι","ϊ":"ι","ΐ":"ι","ό":"ο","ύ":"υ","ϋ":"υ","ΰ":"υ","ω":"ω","ς":"σ"}}),b.define("select2/data/base",["../utils"],function(a){function b(a,c){b.__super__.constructor.call(this)}return a.Extend(b,a.Observable),b.prototype.current=function(a){throw new Error("The `current` method must be defined in child classes.")},b.prototype.query=function(a,b){throw new Error("The `query` method must be defined in child classes.")},b.prototype.bind=function(a,b){},b.prototype.destroy=function(){},b.prototype.generateResultId=function(b,c){var d="";return d+=null!=b?b.id:a.generateChars(4),d+="-result-",d+=a.generateChars(4),null!=c.id?d+="-"+c.id.toString():d+="-"+a.generateChars(4),d},b}),b.define("select2/data/select",["./base","../utils","jquery"],function(a,b,c){function d(a,b){this.$element=a,this.options=b,d.__super__.constructor.call(this)}return b.Extend(d,a),d.prototype.current=function(a){var b=[],d=this;this.$element.find(":selected").each(function(){var a=c(this),e=d.item(a);b.push(e)}),a(b)},d.prototype.select=function(a){var b=this;if(a.selected=!0,c(a.element).is("option"))return a.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},j,l),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f),e.container.focusOnActiveElement()},function(){d.status&&"0"===d.status||e.trigger("results:message",{message:"errorLoading"})});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&null!=a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");void 0!==f&&(this.createTag=f);var g=d.get("insertTag");if(void 0!==g&&(this.insertTag=g),b.call(this,c,d),a.isArray(e))for(var h=0;h0&&b.term.length>this.maximumInputLength)return void this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:b.term,params:b}});a.call(this,b,c)},a}),b.define("select2/data/maximumSelectionLength",[],function(){function a(a,b,c){this.maximumSelectionLength=c.get("maximumSelectionLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){var d=this;this.current(function(e){var f=null!=e?e.length:0;if(d.maximumSelectionLength>0&&f>=d.maximumSelectionLength)return void d.trigger("results:message",{message:"maximumSelected",args:{maximum:d.maximumSelectionLength}});a.call(d,b,c)})},a}),b.define("select2/dropdown",["jquery","./utils"],function(a,b){function c(a,b){this.$element=a,this.options=b,c.__super__.constructor.call(this)}return b.Extend(c,b.Observable),c.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$dropdown=b,b},c.prototype.bind=function(){},c.prototype.position=function(a,b){},c.prototype.destroy=function(){this.$dropdown.remove()},c}),b.define("select2/dropdown/search",["jquery","../utils"],function(a,b){function c(){}return c.prototype.render=function(b){var c=b.call(this),d=a('');return this.$searchContainer=d,this.$search=d.find("input"),c.prepend(d),c},c.prototype.bind=function(b,c,d){var e=this,f=c.id+"-results";b.call(this,c,d),this.$search.on("keydown",function(a){e.trigger("keypress",a),e._keyUpPrevented=a.isDefaultPrevented()}),this.$search.on("input",function(b){a(this).off("keyup")}),this.$search.on("keyup input",function(a){e.handleSearch(a)}),c.on("open",function(){e.$search.attr("tabindex",0),e.$search.attr("aria-owns",f),e.$search.focus(),window.setTimeout(function(){e.$search.focus()},0)}),c.on("close",function(){e.$search.attr("tabindex",-1),e.$search.removeAttr("aria-activedescendant"),e.$search.removeAttr("aria-owns"),e.$search.val("")}),c.on("focus",function(){c.isOpen()||e.$search.focus()}),c.on("results:all",function(a){if(null==a.query.term||""===a.query.term){e.showSearch(a)?e.$searchContainer.removeClass("select2-search--hide"):e.$searchContainer.addClass("select2-search--hide")}}),c.on("results:focus",function(a){e.$search.attr("aria-activedescendant",a.data._resultId)})},c.prototype.handleSearch=function(a){if(!this._keyUpPrevented){var b=this.$search.val();this.trigger("query",{term:b})}this._keyUpPrevented=!1},c.prototype.showSearch=function(a,b){return!0},c}),b.define("select2/dropdown/hidePlaceholder",[],function(){function a(a,b,c,d){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c,d)}return a.prototype.append=function(a,b){b.results=this.removePlaceholder(b.results),a.call(this,b)},a.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},a.prototype.removePlaceholder=function(a,b){for(var c=b.slice(0),d=b.length-1;d>=0;d--){var e=b[d];this.placeholder.id===e.id&&c.splice(d,1)}return c},a}),b.define("select2/dropdown/infiniteScroll",["jquery"],function(a){function b(a,b,c,d){this.lastParams={},a.call(this,b,c,d),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return b.prototype.append=function(a,b){this.$loadingMore.remove(),this.loading=!1,a.call(this,b),this.showLoadingMore(b)&&this.$results.append(this.$loadingMore)},b.prototype.bind=function(b,c,d){var e=this;b.call(this,c,d),c.on("query",function(a){e.lastParams=a,e.loading=!0}),c.on("query:append",function(a){e.lastParams=a,e.loading=!0}),this.$results.on("scroll",function(){var b=a.contains(document.documentElement,e.$loadingMore[0]);if(!e.loading&&b){e.$results.offset().top+e.$results.outerHeight(!1)+50>=e.$loadingMore.offset().top+e.$loadingMore.outerHeight(!1)&&e.loadMore()}})},b.prototype.loadMore=function(){this.loading=!0;var b=a.extend({},{page:1},this.lastParams);b.page++,this.trigger("query:append",b)},b.prototype.showLoadingMore=function(a,b){return b.pagination&&b.pagination.more},b.prototype.createLoadingMore=function(){var b=a('
      • '),c=this.options.get("translations").get("loadingMore");return b.html(c(this.lastParams)),b},b}),b.define("select2/dropdown/attachBody",["jquery","../utils"],function(a,b){function c(b,c,d){this.$dropdownParent=d.get("dropdownParent")||a(document.body),b.call(this,c,d)}return c.prototype.bind=function(a,b,c){var d=this,e=!1;a.call(this,b,c),b.on("open",function(){d._showDropdown(),d._attachPositioningHandler(b),e||(e=!0,b.on("results:all",function(){d._positionDropdown(),d._resizeDropdown()}),b.on("results:append",function(){d._positionDropdown(),d._resizeDropdown()}))}),b.on("close",function(){d._hideDropdown(),d._detachPositioningHandler(b)}),this.$dropdownContainer.on("mousedown",function(a){a.stopPropagation()})},c.prototype.destroy=function(a){a.call(this),this.$dropdownContainer.remove()},c.prototype.position=function(a,b,c){b.attr("class",c.attr("class")),b.removeClass("select2"),b.addClass("select2-container--open"),b.css({position:"absolute",top:-999999}),this.$container=c},c.prototype.render=function(b){var c=a(""),d=b.call(this);return c.append(d),this.$dropdownContainer=c,c},c.prototype._hideDropdown=function(a){this.$dropdownContainer.detach()},c.prototype._attachPositioningHandler=function(c,d){var e=this,f="scroll.select2."+d.id,g="resize.select2."+d.id,h="orientationchange.select2."+d.id,i=this.$container.parents().filter(b.hasScroll);i.each(function(){a(this).data("select2-scroll-position",{x:a(this).scrollLeft(),y:a(this).scrollTop()})}),i.on(f,function(b){var c=a(this).data("select2-scroll-position");a(this).scrollTop(c.y)}),a(window).on(f+" "+g+" "+h,function(a){e._positionDropdown(),e._resizeDropdown()})},c.prototype._detachPositioningHandler=function(c,d){var e="scroll.select2."+d.id,f="resize.select2."+d.id,g="orientationchange.select2."+d.id;this.$container.parents().filter(b.hasScroll).off(e),a(window).off(e+" "+f+" "+g)},c.prototype._positionDropdown=function(){var b=a(window),c=this.$dropdown.hasClass("select2-dropdown--above"),d=this.$dropdown.hasClass("select2-dropdown--below"),e=null,f=this.$container.offset();f.bottom=f.top+this.$container.outerHeight(!1);var g={height:this.$container.outerHeight(!1)};g.top=f.top,g.bottom=f.top+g.height;var h={height:this.$dropdown.outerHeight(!1)},i={top:b.scrollTop(),bottom:b.scrollTop()+b.height()},j=i.topf.bottom+h.height,l={left:f.left,top:g.bottom},m=this.$dropdownParent;"static"===m.css("position")&&(m=m.offsetParent());var n=m.offset();l.top-=n.top,l.left-=n.left,c||d||(e="below"),k||!j||c?!j&&k&&c&&(e="below"):e="above",("above"==e||c&&"below"!==e)&&(l.top=g.top-n.top-h.height),null!=e&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+e),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+e)),this.$dropdownContainer.css(l)},c.prototype._resizeDropdown=function(){var a={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(a.minWidth=a.width,a.position="relative",a.width="auto"),this.$dropdown.css(a)},c.prototype._showDropdown=function(a){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},c}),b.define("select2/dropdown/minimumResultsForSearch",[],function(){function a(b){for(var c=0,d=0;d0&&(l.dataAdapter=j.Decorate(l.dataAdapter,r)),l.maximumInputLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,s)),l.maximumSelectionLength>0&&(l.dataAdapter=j.Decorate(l.dataAdapter,t)),l.tags&&(l.dataAdapter=j.Decorate(l.dataAdapter,p)),null==l.tokenSeparators&&null==l.tokenizer||(l.dataAdapter=j.Decorate(l.dataAdapter,q)),null!=l.query){var C=b(l.amdBase+"compat/query");l.dataAdapter=j.Decorate(l.dataAdapter,C)}if(null!=l.initSelection){var D=b(l.amdBase+"compat/initSelection");l.dataAdapter=j.Decorate(l.dataAdapter,D)}}if(null==l.resultsAdapter&&(l.resultsAdapter=c,null!=l.ajax&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,x)),null!=l.placeholder&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,w)),l.selectOnClose&&(l.resultsAdapter=j.Decorate(l.resultsAdapter,A))),null==l.dropdownAdapter){if(l.multiple)l.dropdownAdapter=u;else{var E=j.Decorate(u,v);l.dropdownAdapter=E}if(0!==l.minimumResultsForSearch&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,z)),l.closeOnSelect&&(l.dropdownAdapter=j.Decorate(l.dropdownAdapter,B)),null!=l.dropdownCssClass||null!=l.dropdownCss||null!=l.adaptDropdownCssClass){var F=b(l.amdBase+"compat/dropdownCss");l.dropdownAdapter=j.Decorate(l.dropdownAdapter,F)}l.dropdownAdapter=j.Decorate(l.dropdownAdapter,y)}if(null==l.selectionAdapter){if(l.multiple?l.selectionAdapter=e:l.selectionAdapter=d,null!=l.placeholder&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,f)),l.allowClear&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,g)),l.multiple&&(l.selectionAdapter=j.Decorate(l.selectionAdapter,h)),null!=l.containerCssClass||null!=l.containerCss||null!=l.adaptContainerCssClass){var G=b(l.amdBase+"compat/containerCss");l.selectionAdapter=j.Decorate(l.selectionAdapter,G)}l.selectionAdapter=j.Decorate(l.selectionAdapter,i)}if("string"==typeof l.language)if(l.language.indexOf("-")>0){var H=l.language.split("-"),I=H[0];l.language=[l.language,I]}else l.language=[l.language];if(a.isArray(l.language)){var J=new k;l.language.push("en");for(var K=l.language,L=0;L0){for(var f=a.extend(!0,{},e),g=e.children.length-1;g>=0;g--){null==c(d,e.children[g])&&f.children.splice(g,1)}return f.children.length>0?f:c(d,f)}var h=b(e.text).toUpperCase(),i=b(d.term).toUpperCase();return h.indexOf(i)>-1?e:null}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:j.escapeMarkup,language:C,matcher:c,minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(a){return a},templateResult:function(a){return a.text},templateSelection:function(a){return a.text},theme:"default",width:"resolve"}},D.prototype.set=function(b,c){var d=a.camelCase(b),e={};e[d]=c;var f=j._convertData(e);a.extend(this.defaults,f)},new D}),b.define("select2/options",["require","jquery","./defaults","./utils"],function(a,b,c,d){function e(b,e){if(this.options=b,null!=e&&this.fromElement(e),this.options=c.apply(this.options),e&&e.is("input")){var f=a(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=d.Decorate(this.options.dataAdapter,f)}}return e.prototype.fromElement=function(a){var c=["select2"];null==this.options.multiple&&(this.options.multiple=a.prop("multiple")),null==this.options.disabled&&(this.options.disabled=a.prop("disabled")),null==this.options.language&&(a.prop("lang")?this.options.language=a.prop("lang").toLowerCase():a.closest("[lang]").prop("lang")&&(this.options.language=a.closest("[lang]").prop("lang"))),null==this.options.dir&&(a.prop("dir")?this.options.dir=a.prop("dir"):a.closest("[dir]").prop("dir")?this.options.dir=a.closest("[dir]").prop("dir"):this.options.dir="ltr"),a.prop("disabled",this.options.disabled),a.prop("multiple",this.options.multiple),a.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),a.data("data",a.data("select2Tags")),a.data("tags",!0)),a.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),a.attr("ajax--url",a.data("ajaxUrl")),a.data("ajax--url",a.data("ajaxUrl")));var e={};e=b.fn.jquery&&"1."==b.fn.jquery.substr(0,2)&&a[0].dataset?b.extend(!0,{},a[0].dataset,a.data()):a.data();var f=b.extend(!0,{},e);f=d._convertData(f);for(var g in f)b.inArray(g,c)>-1||(b.isPlainObject(this.options[g])?b.extend(this.options[g],f[g]):this.options[g]=f[g]);return this},e.prototype.get=function(a){return this.options[a]},e.prototype.set=function(a,b){this.options[a]=b},e}),b.define("select2/core",["jquery","./options","./utils","./keys"],function(a,b,c,d){var e=function(a,c){null!=a.data("select2")&&a.data("select2").destroy(),this.$element=a,this.id=this._generateId(a),c=c||{},this.options=new b(c,a),e.__super__.constructor.call(this);var d=a.attr("tabindex")||0;a.data("old-tabindex",d),a.attr("tabindex","-1");var f=this.options.get("dataAdapter");this.dataAdapter=new f(a,this.options);var g=this.render();this._placeContainer(g);var h=this.options.get("selectionAdapter");this.selection=new h(a,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,g);var i=this.options.get("dropdownAdapter");this.dropdown=new i(a,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,g);var j=this.options.get("resultsAdapter");this.results=new j(a,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var k=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(a){k.trigger("selection:update",{data:a})}),a.addClass("select2-hidden-accessible"),a.attr("aria-hidden","true"),this._syncAttributes(),a.data("select2",this)};return c.Extend(e,c.Observable),e.prototype._generateId=function(a){var b="";return b=null!=a.attr("id")?a.attr("id"):null!=a.attr("name")?a.attr("name")+"-"+c.generateChars(2):c.generateChars(4),b=b.replace(/(:|\.|\[|\]|,)/g,""),b="select2-"+b},e.prototype._placeContainer=function(a){a.insertAfter(this.$element);var b=this._resolveWidth(this.$element,this.options.get("width"));null!=b&&a.css("width",b)},e.prototype._resolveWidth=function(a,b){var c=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==b){var d=this._resolveWidth(a,"style");return null!=d?d:this._resolveWidth(a,"element")}if("element"==b){var e=a.outerWidth(!1);return e<=0?"auto":e+"px"}if("style"==b){var f=a.attr("style");if("string"!=typeof f)return null;for(var g=f.split(";"),h=0,i=g.length;h=1)return k[1]}return null}return b},e.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},e.prototype._registerDomEvents=function(){var b=this;this.$element.on("change.select2",function(){b.dataAdapter.current(function(a){b.trigger("selection:update",{data:a})})}),this.$element.on("focus.select2",function(a){b.trigger("focus",a)}),this._syncA=c.bind(this._syncAttributes,this),this._syncS=c.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=d?(this._observer=new d(function(c){a.each(c,b._syncA),a.each(c,b._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",b._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",b._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",b._syncS,!1))},e.prototype._registerDataEvents=function(){var a=this;this.dataAdapter.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerSelectionEvents=function(){var b=this,c=["toggle","focus"];this.selection.on("toggle",function(){b.toggleDropdown()}),this.selection.on("focus",function(a){b.focus(a)}),this.selection.on("*",function(d,e){-1===a.inArray(d,c)&&b.trigger(d,e)})},e.prototype._registerDropdownEvents=function(){var a=this;this.dropdown.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerResultsEvents=function(){var a=this;this.results.on("*",function(b,c){a.trigger(b,c)})},e.prototype._registerEvents=function(){var b=this;this.on("open",function(){b.$container.addClass("select2-container--open")}),this.on("close",function(){b.$container.removeClass("select2-container--open")}),this.on("enable",function(){b.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){b.$container.addClass("select2-container--disabled")}),this.on("blur",function(){b.$container.removeClass("select2-container--focus")}),this.on("query",function(a){b.isOpen()||b.trigger("open",{}),this.dataAdapter.query(a,function(c){b.trigger("results:all",{data:c,query:a})})}),this.on("query:append",function(a){this.dataAdapter.query(a,function(c){b.trigger("results:append",{data:c,query:a})})}),this.on("open",function(){setTimeout(function(){b.focusOnActiveElement()},1)}),a(document).on("keydown",function(a){var c=a.which;if(b.isOpen()){c===d.ESC||c===d.UP&&a.altKey?(b.close(),a.preventDefault()):c===d.ENTER||c===d.TAB?(b.trigger("results:select",{}),a.preventDefault()):c===d.SPACE&&a.ctrlKey?(b.trigger("results:toggle",{}),a.preventDefault()):c===d.UP?(b.trigger("results:previous",{}),a.preventDefault()):c===d.DOWN&&(b.trigger("results:next",{}),a.preventDefault());var e=b.$dropdown.find(".select2-search__field");e.length||(e=b.$container.find(".select2-search__field")),c===d.DOWN||c===d.UP?b.focusOnActiveElement():(e.focus(),setTimeout(function(){b.focusOnActiveElement()},1e3))}else b.hasFocus()&&(c!==d.ENTER&&c!==d.SPACE&&c!==d.DOWN||(b.open(),a.preventDefault()))})},e.prototype.focusOnActiveElement=function(){this.isOpen()&&!c.isTouchscreen()&&this.$results.find("li.select2-results__option--highlighted").focus()},e.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},e.prototype._syncSubtree=function(a,b){var c=!1,d=this;if(!a||!a.target||"OPTION"===a.target.nodeName||"OPTGROUP"===a.target.nodeName){if(b)if(b.addedNodes&&b.addedNodes.length>0)for(var e=0;e0&&(c=!0);else c=!0;c&&this.dataAdapter.current(function(a){d.trigger("selection:update",{data:a})})}},e.prototype.trigger=function(a,b){var c=e.__super__.trigger,d={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===b&&(b={}),a in d){var f=d[a],g={prevented:!1,name:a,args:b};if(c.call(this,f,g),g.prevented)return void(b.prevented=!0)}c.call(this,a,b)},e.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},e.prototype.open=function(){this.isOpen()||this.trigger("query",{})},e.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},e.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},e.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},e.prototype.focus=function(a){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},e.prototype.enable=function(a){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),null!=a&&0!==a.length||(a=[!0]);var b=!a[0];this.$element.prop("disabled",b)},e.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var a=[];return this.dataAdapter.current(function(b){a=b}),a},e.prototype.val=function(b){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==b||0===b.length)return this.$element.val();var c=b[0];a.isArray(c)&&(c=a.map(c,function(a){return a.toString()})),this.$element.val(c).trigger("change")},e.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},e.prototype.render=function(){var b=a('');return b.attr("dir",this.options.get("dir")),this.$container=b,this.$container.addClass("select2-container--"+this.options.get("theme")),b.data("element",this.$element),b},e}),b.define("jquery-mousewheel",["jquery"],function(a){return a}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.selectWoo){var e=["open","close","destroy"];a.fn.selectWoo=function(b){if("object"==typeof(b=b||{}))return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null!=a.fn.select2&&null!=a.fn.select2.defaults&&(a.fn.selectWoo.defaults=a.fn.select2.defaults),null==a.fn.selectWoo.defaults&&(a.fn.selectWoo.defaults=d),a.fn.select2=a.fn.select2||a.fn.selectWoo,c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,a.fn.selectWoo.amd=b,c}); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/slider-customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/slider-customizer.js deleted file mode 100644 index d517ffc9..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/slider-customizer.js +++ /dev/null @@ -1,137 +0,0 @@ -wp.customize.controlConstructor[ 'generatepress-pro-range-slider' ] = wp.customize.Control.extend( { - ready() { - 'use strict'; - - var control = this, - value, - controlClass = '.customize-control-generatepress-pro-range-slider', - footerActions = jQuery( '#customize-footer-actions' ); - - // Set up the sliders - jQuery( '.generatepress-slider' ).each( function() { - var _this = jQuery( this ); - var _input = _this.closest( 'label' ).find( 'input[type="number"]' ); - var _text = _input.next( '.value' ); - - _this.slider( { - value: _input.val(), - min: _this.data( 'min' ), - max: _this.data( 'max' ), - step: _this.data( 'step' ), - slide( event, ui ) { - _input.val( ui.value ).change(); - _text.text( ui.value ); - }, - } ); - } ); - - // Update the range value based on the input value - jQuery( controlClass + ' .gp_range_value input[type=number]' ).on( 'input', function() { - value = jQuery( this ).attr( 'value' ); - - if ( '' == value ) { - value = -1; - } - - jQuery( this ).closest( 'label' ).find( '.generatepress-slider' ).slider( 'value', parseFloat( value ) ).change(); - } ); - - // Handle the reset button - jQuery( controlClass + ' .generatepress-reset' ).on( 'click', function() { - var icon = jQuery( this ), - visibleArea = icon.closest( '.gp-range-title-area' ).next( '.gp-range-slider-areas' ).children( 'label:visible' ), - input = visibleArea.find( 'input[type=number]' ), - sliderValue = visibleArea.find( '.generatepress-slider' ), - visualValue = visibleArea.find( '.gp_range_value' ), - resetValue = input.attr( 'data-reset_value' ); - - input.val( resetValue ).change(); - visualValue.find( 'input' ).val( resetValue ); - visualValue.find( '.value' ).text( resetValue ); - - if ( '' == resetValue ) { - resetValue = -1; - } - - sliderValue.slider( 'value', parseFloat( resetValue ) ); - } ); - - // Figure out which device icon to make active on load - jQuery( controlClass + ' .generatepress-range-slider-control' ).each( function() { - var _this = jQuery( this ); - - _this.find( '.gp-device-controls' ).children( 'span:first-child' ).addClass( 'selected' ); - _this.find( '.range-option-area:first-child' ).show(); - } ); - - // Do stuff when device icons are clicked - jQuery( controlClass + ' .gp-device-controls > span' ).on( 'click', function( event ) { - var device = jQuery( this ).data( 'option' ); - - jQuery( controlClass + ' .gp-device-controls span' ).each( function() { - var _this = jQuery( this ); - - if ( device === _this.attr( 'data-option' ) ) { - _this.addClass( 'selected' ); - _this.siblings().removeClass( 'selected' ); - } - } ); - - jQuery( controlClass + ' .gp-range-slider-areas label' ).each( function() { - var _this = jQuery( this ); - - if ( device === _this.attr( 'data-option' ) ) { - _this.show(); - _this.siblings().hide(); - } - } ); - - // Set the device we're currently viewing - wp.customize.previewedDevice.set( jQuery( event.currentTarget ).data( 'option' ) ); - } ); - - // Set the selected devices in our control when the Customizer devices are clicked - footerActions.find( '.devices button' ).on( 'click', function() { - var device = jQuery( this ).data( 'device' ); - - jQuery( controlClass + ' .gp-device-controls span' ).each( function() { - var _this = jQuery( this ); - - if ( device === _this.attr( 'data-option' ) ) { - _this.addClass( 'selected' ); - _this.siblings().removeClass( 'selected' ); - } - } ); - - jQuery( controlClass + ' .gp-range-slider-areas label' ).each( function() { - var _this = jQuery( this ); - - if ( device === _this.attr( 'data-option' ) ) { - _this.show(); - _this.siblings().hide(); - } - } ); - } ); - - // Apply changes when desktop slider is changed - control.container.on( 'input change', '.desktop-range', - function() { - control.settings.desktop.set( jQuery( this ).val() ); - } - ); - - // Apply changes when tablet slider is changed - control.container.on( 'input change', '.tablet-range', - function() { - control.settings.tablet.set( jQuery( this ).val() ); - } - ); - - // Apply changes when mobile slider is changed - control.container.on( 'input change', '.mobile-range', - function() { - control.settings.mobile.set( jQuery( this ).val() ); - } - ); - }, -} ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/spacing-customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/spacing-customizer.js deleted file mode 100644 index 35c205d4..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/spacing-customizer.js +++ /dev/null @@ -1,203 +0,0 @@ -( function( $, api ) { - // No longer needed as of 1.2.95 - // Keeping it here just in case - api.controlConstructor.spacing = api.Control.extend( { - ready() { - var control = this; - $( '.generate-number-control', control.container ).on( 'change keyup', - function() { - control.setting.set( $( this ).val() ); - } - ); - }, - } ); - - api.controlConstructor[ 'gp-spacing-slider' ] = api.Control.extend( { - ready() { - var control = this; - $( '.slider-input', control.container ).on( 'change keyup', - function() { - control.setting.set( $( this ).val() ); - } - ); - }, - } ); - - api.controlConstructor[ 'generatepress-spacing' ] = api.Control.extend( { - ready() { - var control = this, - controlClass = '.customize-control-generatepress-spacing', - footerActions = jQuery( '#customize-footer-actions' ); - - // Figure out which device icon to make active on load - jQuery( controlClass + ' .gp-spacing-control-section' ).each( function() { - var _this = jQuery( this ); - _this.find( '.gp-device-controls' ).children( 'span:first-child' ).addClass( 'selected' ); - _this.find( '.spacing-values-area:first-child' ).show(); - } ); - - // Do stuff when device icons are clicked - jQuery( controlClass + ' .gp-device-controls > span' ).on( 'click', function( event ) { - var device = jQuery( this ).data( 'option' ); - - jQuery( controlClass + ' .gp-device-controls span' ).each( function() { - var _this = jQuery( this ); - - if ( device === _this.attr( 'data-option' ) ) { - _this.addClass( 'selected' ); - _this.siblings().removeClass( 'selected' ); - } - } ); - - jQuery( controlClass + ' .spacing-values-container .spacing-values-area' ).each( function() { - var _this = jQuery( this ); - - if ( device === _this.attr( 'data-option' ) ) { - _this.show(); - _this.siblings().hide(); - } - } ); - - // Set the device we're currently viewing - wp.customize.previewedDevice.set( jQuery( event.currentTarget ).data( 'option' ) ); - } ); - - // Set the selected devices in our control when the Customizer devices are clicked - footerActions.find( '.devices button' ).on( 'click', function() { - var device = jQuery( this ).data( 'device' ); - jQuery( controlClass + ' .gp-device-controls span' ).each( function() { - var _this = jQuery( this ); - - if ( device === _this.attr( 'data-option' ) ) { - _this.addClass( 'selected' ); - _this.siblings().removeClass( 'selected' ); - } - } ); - - jQuery( controlClass + ' .spacing-values-container .spacing-values-area' ).each( function() { - var _this = jQuery( this ); - - if ( device === _this.attr( 'data-option' ) ) { - _this.show(); - _this.siblings().hide(); - } - } ); - } ); - - control.container.on( 'change keyup', '.spacing-top', - function() { - control.settings.desktop_top.set( jQuery( this ).val() ); - } - ); - - control.container.on( 'change keyup', '.spacing-right', - function() { - control.settings.desktop_right.set( jQuery( this ).val() ); - } - ); - - control.container.on( 'change keyup', '.spacing-bottom', - function() { - control.settings.desktop_bottom.set( jQuery( this ).val() ); - } - ); - - control.container.on( 'change keyup', '.spacing-left', - function() { - control.settings.desktop_left.set( jQuery( this ).val() ); - } - ); - - control.container.on( 'change keyup', '.tablet-spacing-top', - function() { - control.settings.tablet_top.set( jQuery( this ).val() ); - } - ); - - control.container.on( 'change keyup', '.tablet-spacing-right', - function() { - control.settings.tablet_right.set( jQuery( this ).val() ); - } - ); - - control.container.on( 'change keyup', '.tablet-spacing-bottom', - function() { - control.settings.tablet_bottom.set( jQuery( this ).val() ); - } - ); - - control.container.on( 'change keyup', '.tablet-spacing-left', - function() { - control.settings.tablet_left.set( jQuery( this ).val() ); - } - ); - - control.container.on( 'change keyup', '.mobile-spacing-top', - function() { - control.settings.mobile_top.set( jQuery( this ).val() ); - } - ); - - control.container.on( 'change keyup', '.mobile-spacing-right', - function() { - control.settings.mobile_right.set( jQuery( this ).val() ); - } - ); - - control.container.on( 'change keyup', '.mobile-spacing-bottom', - function() { - control.settings.mobile_bottom.set( jQuery( this ).val() ); - } - ); - - control.container.on( 'change keyup', '.mobile-spacing-left', - function() { - control.settings.mobile_left.set( jQuery( this ).val() ); - } - ); - }, - } ); -}( jQuery, wp.customize ) ); - -jQuery( function( $ ) { - $( '.gp-link-spacing' ).on( 'click', function( e ) { - e.preventDefault(); - - // Set up variables - var _this = $( this ), - element = _this.data( 'element' ); - - // Add our linked-values class to the next 4 elements - _this.parent( '.gp-spacing-section' ).prevAll().slice( 0, 4 ).find( 'input' ).addClass( 'linked-values' ).attr( 'data-element', element ); - - // Change our link icon class - _this.hide(); - _this.next( 'span' ).show(); - } ); - - $( '.gp-unlink-spacing' ).on( 'click', function( e ) { - e.preventDefault(); - - // Set up variables - var _this = $( this ); - - // Remove our linked-values class to the next 4 elements - _this.parent( '.gp-spacing-section' ).prevAll().slice( 0, 4 ).find( 'input' ).removeClass( 'linked-values' ).attr( 'data-element', '' ); - - // Change our link icon class - _this.hide(); - _this.prev( 'span' ).show(); - } ); - - $( '.gp-spacing-section' ).on( 'input', '.linked-values', function() { - var _this = $( this ), - data = _this.attr( 'data-element' ), - val = _this.val(), - targetElements = _this.closest( '.spacing-values-area' ).find( '.linked-values[ data-element="' + data + '" ]' ); - - targetElements.each( function() { - var element = $( this ); - element.val( val ).change(); - } ); - } ); -} ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/typography-customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/typography-customizer.js deleted file mode 100644 index 1d8b2b3c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/controls/js/typography-customizer.js +++ /dev/null @@ -1,148 +0,0 @@ -( function( api ) { - api.controlConstructor[ 'gp-pro-customizer-typography' ] = api.Control.extend( { - ready() { - var control = this; - - control.container.on( 'change', '.generatepress-font-family select', - function() { - var _this = jQuery( this ), - _value = _this.val(), - _categoryID = _this.attr( 'data-category' ), - _variantsID = _this.attr( 'data-variants' ); - - // Set our font family - control.settings.family.set( _this.val() ); - - // Bail if our controls don't exist - if ( 'undefined' === typeof control.settings.category || 'undefined' === typeof control.settings.variant ) { - return; - } - - setTimeout( function() { - // Send our request to the generate_get_all_google_fonts_ajax function - var response = jQuery.getJSON( { - type: 'POST', - url: ajaxurl, - data: { - action: 'generate_get_all_google_fonts_ajax', - gp_customize_nonce: gp_customize.nonce, - }, - async: false, - dataType: 'json', - } ); - - // Get our response - var fonts = response.responseJSON; - - // Create an ID from our selected font - var id = _value.split( ' ' ).join( '_' ).toLowerCase(); - - // Set our values if we have them - if ( id in fonts ) { - // Get existing variants if this font is already selected - var got_variants = false; - jQuery( '.generatepress-font-family select' ).not( _this ).each( function( key, select ) { - var parent = jQuery( this ).closest( '.generatepress-font-family' ); - - if ( _value == jQuery( select ).val() && _this.data( 'category' ) !== jQuery( select ).data( 'category' ) ) { - if ( ! got_variants ) { - updated_variants = jQuery( parent.next( '.generatepress-font-variant' ).find( 'select' ) ).val(); - got_variants = true; - } - } - } ); - - // We're using a Google font, so show the variants field - _this.closest( '.generatepress-font-family' ).next( 'div' ).show(); - - // Remove existing variants - jQuery( 'select[name="' + _variantsID + '"]' ).find( 'option' ).remove(); - - // Populate our select input with available variants - jQuery.each( fonts[ id ].variants, function( key, value ) { - jQuery( 'select[name="' + _variantsID + '"]' ).append( jQuery( '' ).attr( 'value', value ).text( value ) ); - } ); - - // Set our variants - if ( ! got_variants ) { - control.settings.variant.set( fonts[ id ].variants ); - } else { - control.settings.variant.set( updated_variants ); - } - - // Set our font category - control.settings.category.set( fonts[ id ].category ); - jQuery( 'input[name="' + _categoryID + '"' ).val( fonts[ id ].category ); - } else { - _this.closest( '.generatepress-font-family' ).next( 'div' ).hide(); - control.settings.category.set( '' ); - control.settings.variant.set( '' ); - jQuery( 'input[name="' + _categoryID + '"' ).val( '' ); - jQuery( 'select[name="' + _variantsID + '"]' ).find( 'option' ).remove(); - } - }, 25 ); - } - ); - - control.container.on( 'change', '.generatepress-font-variant select', - function() { - var _this = jQuery( this ); - var variants = _this.val(); - - control.settings.variant.set( variants ); - - jQuery( '.generatepress-font-variant select' ).each( function( key, value ) { - var this_control = jQuery( this ).closest( 'li' ).attr( 'id' ).replace( 'customize-control-', '' ); - var parent = jQuery( this ).closest( '.generatepress-font-variant' ); - var font_val = api.control( this_control ).settings.family.get(); - - if ( font_val == control.settings.family.get() && _this.attr( 'name' ) !== jQuery( value ).attr( 'name' ) ) { - jQuery( parent.find( 'select' ) ).not( _this ).val( variants ).triggerHandler( 'change' ); - api.control( this_control ).settings.variant.set( variants ); - } - } ); - } - ); - - control.container.on( 'change', '.generatepress-font-category input', - function() { - control.settings.category.set( jQuery( this ).val() ); - } - ); - - control.container.on( 'change', '.generatepress-font-weight select', - function() { - control.settings.weight.set( jQuery( this ).val() ); - } - ); - - control.container.on( 'change', '.generatepress-font-transform select', - function() { - control.settings.transform.set( jQuery( this ).val() ); - } - ); - }, - } ); -}( wp.customize ) ); - -jQuery( document ).ready( function( $ ) { - jQuery( '.generatepress-font-family select' ).selectWoo(); - jQuery( '.generatepress-font-variant' ).each( function( key, value ) { - var _this = $( this ); - value = _this.data( 'saved-value' ); - - if ( value ) { - value = value.toString().split( ',' ); - } - - _this.find( 'select' ).selectWoo().val( value ).trigger( 'change.select2' ); - } ); - - $( '.generatepress-font-family' ).each( function( key, value ) { - var _this = $( this ); - - if ( $.inArray( _this.find( 'select' ).val(), typography_defaults ) !== -1 ) { - _this.next( '.generatepress-font-variant' ).hide(); - } - } ); -} ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/deprecated.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/deprecated.php deleted file mode 100644 index 00dd2f9e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/deprecated.php +++ /dev/null @@ -1,324 +0,0 @@ -manager->get_control( $setting->id )->choices; - - // If the input is a valid key, return it; - // otherwise, return the default - return ( array_key_exists( $input, $choices ) ? $input : $setting->default ); -} -endif; - -if ( ! function_exists( 'generate_backgrounds_is_top_bar_active' ) ) : -/** - * Check to see if the top bar is active - * - * @since 1.3.45 - */ -function generate_backgrounds_is_top_bar_active() -{ - $top_bar = is_active_sidebar( 'top-bar' ) ? true : false; - return apply_filters( 'generate_is_top_bar_active', $top_bar ); -} -endif; - -if ( ! function_exists( 'generate_blog_sanitize_choices' ) ) : -/** - * Sanitize choices - */ -function generate_blog_sanitize_choices( $input, $setting ) { - - // Ensure input is a slug - $input = sanitize_key( $input ); - - // Get list of choices from the control - // associated with the setting - $choices = $setting->manager->get_control( $setting->id )->choices; - - // If the input is a valid key, return it; - // otherwise, return the default - return ( array_key_exists( $input, $choices ) ? $input : $setting->default ); -} -endif; - -if ( ! function_exists( 'generate_blog_is_posts_page' ) ) : -/** - * Check to see if we're on a posts page - */ -function generate_blog_is_posts_page() -{ - $blog = ( is_home() || is_archive() || is_attachment() || is_tax() ) ? true : false; - - return $blog; -} -endif; - -if ( ! function_exists( 'generate_blog_is_posts_page_single' ) ) : -/** - * Check to see if we're on a posts page or a single post - */ -function generate_blog_is_posts_page_single() -{ - $blog = ( is_home() || is_archive() || is_attachment() || is_tax() || is_single() ) ? true : false; - - return $blog; -} -endif; - -if ( ! function_exists( 'generate_blog_is_excerpt' ) ) : -/** - * Check to see if we're displaying excerpts - */ -function generate_blog_is_excerpt() -{ - if ( ! function_exists( 'generate_get_defaults' ) ) - return; - - $generate_settings = wp_parse_args( - get_option( 'generate_settings', array() ), - generate_get_defaults() - ); - - return ( 'excerpt' == $generate_settings['post_content'] ) ? true : false; -} -endif; - -if ( ! function_exists( 'generate_colors_sanitize_hex_color' ) ) : -/** - * Sanitize hex colors - * We don't use the core function as we want to allow empty values - * @since 0.1 - */ -function generate_colors_sanitize_hex_color( $color ) { - if ( '' === $color ) - return ''; - - // 3 or 6 hex digits, or the empty string. - if ( preg_match('|^#([A-Fa-f0-9]{3}){1,2}$|', $color ) ) - return $color; - - return ''; -} -endif; - -if ( ! function_exists( 'generate_colors_sanitize_rgba' ) ) : -/** - * Sanitize RGBA colors - * @since 1.3.42 - */ -function generate_colors_sanitize_rgba( $color ) { - if ( '' === $color ) - return ''; - - // If string does not start with 'rgba', then treat as hex - // sanitize the hex color and finally convert hex to rgba - if ( false === strpos( $color, 'rgba' ) ) { - return generate_colors_sanitize_hex_color( $color ); - } - - // By now we know the string is formatted as an rgba color so we need to further sanitize it. - $color = str_replace( ' ', '', $color ); - sscanf( $color, 'rgba(%d,%d,%d,%f)', $red, $green, $blue, $alpha ); - return 'rgba('.$red.','.$green.','.$blue.','.$alpha.')'; - - return ''; -} -endif; - -if ( ! function_exists( 'generate_menu_plus_sanitize_choices' ) ) : -/** - * Sanitize choices - */ -function generate_menu_plus_sanitize_choices( $input, $setting ) { - - // Ensure input is a slug - $input = sanitize_key( $input ); - - // Get list of choices from the control - // associated with the setting - $choices = $setting->manager->get_control( $setting->id )->choices; - - // If the input is a valid key, return it; - // otherwise, return the default - return ( array_key_exists( $input, $choices ) ? $input : $setting->default ); -} -endif; - -if ( ! function_exists( 'generate_page_header_is_posts_page' ) ) : -/** - * This is an active_callback - * Check if we're on a posts page - */ -function generate_page_header_is_posts_page() -{ - $blog = ( is_home() || is_archive() || is_attachment() || is_tax() ) ? true : false; - - return $blog; -} -endif; - -if ( ! function_exists( 'generate_page_header_is_posts_page_single' ) ) : -/** - * Check to see if we're on a posts page or a single post - */ -function generate_page_header_is_posts_page_single() -{ - $blog = ( is_home() || is_archive() || is_attachment() || is_tax() || is_single() ) ? true : false; - - return $blog; -} -endif; - -if ( ! function_exists( 'generate_secondary_nav_sanitize_choices' ) ) : -/** - * Sanitize choices - */ -function generate_secondary_nav_sanitize_choices( $input, $setting ) { - - // Ensure input is a slug - $input = sanitize_key( $input ); - - // Get list of choices from the control - // associated with the setting - $choices = $setting->manager->get_control( $setting->id )->choices; - - // If the input is a valid key, return it; - // otherwise, return the default - return ( array_key_exists( $input, $choices ) ? $input : $setting->default ); -} -endif; - -if ( ! function_exists( 'generate_spacing_sanitize_choices' ) ) : -/** - * Sanitize choices - */ -function generate_spacing_sanitize_choices( $input, $setting ) { - - // Ensure input is a slug - $input = sanitize_key( $input ); - - // Get list of choices from the control - // associated with the setting - $choices = $setting->manager->get_control( $setting->id )->choices; - - // If the input is a valid key, return it; - // otherwise, return the default - return ( array_key_exists( $input, $choices ) ? $input : $setting->default ); -} -endif; - -if ( ! function_exists( 'generate_premium_sanitize_typography' ) ) : -/** - * Sanitize typography dropdown - * @since 1.1.10 - * @deprecated 1.2.95 - */ -function generate_premium_sanitize_typography( $input ) -{ - if ( ! function_exists( 'generate_get_all_google_fonts' ) || ! function_exists( 'generate_typography_default_fonts' ) ) { - return 'Open Sans'; - } - - // Grab all of our fonts - $fonts = generate_get_all_google_fonts(); - - // Loop through all of them and grab their names - $font_names = array(); - foreach ( $fonts as $k => $fam ) { - $font_names[] = $fam['name']; - } - - // Get all non-Google font names - $not_google = generate_typography_default_fonts(); - - // Merge them both into one array - $valid = array_merge( $font_names, $not_google ); - - // Sanitize - if ( in_array( $input, $valid ) ) { - return $input; - } else { - return 'Open Sans'; - } -} -endif; - -if ( ! function_exists( 'generate_typography_sanitize_choices' ) ) : -/** - * Sanitize choices - * @since 1.3.24 - */ -function generate_typography_sanitize_choices( $input, $setting ) { - - // Ensure input is a slug - $input = sanitize_key( $input ); - - // Get list of choices from the control - // associated with the setting - $choices = $setting->manager->get_control( $setting->id )->choices; - - // If the input is a valid key, return it; - // otherwise, return the default - return ( array_key_exists( $input, $choices ) ? $input : $setting->default ); -} -endif; - -if ( ! function_exists( 'generate_page_header_sanitize_choices' ) ) : -/** - * Sanitize our select inputs - */ -function generate_page_header_sanitize_choices( $input, $setting ) { - - // Ensure input is a slug - $input = sanitize_key( $input ); - - // Get list of choices from the control - // associated with the setting - $choices = $setting->manager->get_control( $setting->id )->choices; - - // If the input is a valid key, return it; - // otherwise, return the default - return ( array_key_exists( $input, $choices ) ? $input : $setting->default ); -} -endif; - -if ( ! function_exists( 'generate_page_header_sanitize_hex_color' ) ) : -/** - * Sanitize colors - * We don't use the core function as we want to allow empty values - */ -function generate_page_header_sanitize_hex_color( $color ) { - if ( '' === $color ) - return ''; - - // 3 or 6 hex digits, or the empty string. - if ( preg_match('|^#([A-Fa-f0-9]{3}){1,2}$|', $color ) ) - return $color; - - return ''; -} -endif; - -if ( ! function_exists( 'generate_page_header_sanitize_html' ) ) : -/** - * Sanitize our fields that accept HTML - */ -function generate_page_header_sanitize_html( $input ) -{ - return wp_kses_post( $input ); -} -endif; \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/sanitize.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/sanitize.php deleted file mode 100644 index a0cb7efc..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/customizer/sanitize.php +++ /dev/null @@ -1,131 +0,0 @@ -manager->get_control( $setting->id )->choices; - - // If the input is a valid key, return it; - // otherwise, return the default - return ( array_key_exists( $input, $choices ) ? $input : $setting->default ); - } -} - -if ( ! function_exists( 'generate_premium_sanitize_checkbox' ) ) { - /** - * Sanitize checkbox - */ - function generate_premium_sanitize_checkbox( $checked ) { - // Boolean check. - return ( ( isset( $checked ) && true == $checked ) ? true : false ); - } -} - -if ( ! function_exists( 'generate_premium_sanitize_hex_color' ) ) { - /** - * Sanitize hex colors - * We don't use the core function as we want to allow empty values - * - * @since 0.1 - */ - function generate_premium_sanitize_hex_color( $color ) { - if ( '' === $color ) { - return ''; - } - - // 3 or 6 hex digits, or the empty string. - if ( preg_match('|^#([A-Fa-f0-9]{3}){1,2}$|', $color ) ) { - return $color; - } - - return ''; - } -} - -if ( ! function_exists( 'generate_premium_sanitize_rgba' ) ) { - /** - * Sanitize RGBA colors - * - * @since 1.3.42 - */ - function generate_premium_sanitize_rgba( $color ) { - if ( '' === $color ) { - return ''; - } - - // If string does not start with 'rgba', then treat as hex - // sanitize the hex color and finally convert hex to rgba - if ( false === strpos( $color, 'rgba' ) ) { - return generate_premium_sanitize_hex_color( $color ); - } - - // By now we know the string is formatted as an rgba color so we need to further sanitize it. - $color = str_replace( ' ', '', $color ); - sscanf( $color, 'rgba(%d,%d,%d,%f)', $red, $green, $blue, $alpha ); - return 'rgba('.$red.','.$green.','.$blue.','.$alpha.')'; - - return ''; - } -} - -if ( ! function_exists( 'generate_premium_sanitize_decimal_integer' ) ) { - /** - * Sanitize integers that can use decimals - * - * @since 1.3.41 - */ - function generate_premium_sanitize_decimal_integer( $input ) { - return abs( floatval( $input ) ); - } -} - -/** - * Sanitize integers that can use decimals - * @since 1.4 - */ -function generate_premium_sanitize_decimal_integer_empty( $input ) { - if ( '' == $input ) { - return ''; - } - - return abs( floatval( $input ) ); -} - -if ( ! function_exists( 'generate_premium_sanitize_html' ) ) { - /** - * Sanitize our fields that accept HTML - */ - function generate_premium_sanitize_html( $input ) { - return wp_kses_post( $input ); - } -} - -function generate_premium_sanitize_variants( $input ) { - if ( is_array( $input ) ) { - $input = implode( ',', $input ); - } - - return sanitize_text_field( $input ); -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/select2/select2.full.min.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/library/select2/select2.full.min.js deleted file mode 100644 index fa781916..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/library/select2/select2.full.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ -!function(n){"function"==typeof define&&define.amd?define(["jquery"],n):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),n(t),t}:n(jQuery)}(function(d){var e=function(){if(d&&d.fn&&d.fn.select2&&d.fn.select2.amd)var e=d.fn.select2.amd;var t,n,i,h,o,s,f,g,m,v,y,_,r,a,w,l;function b(e,t){return r.call(e,t)}function c(e,t){var n,i,r,o,s,a,l,c,u,d,p,h=t&&t.split("/"),f=y.map,g=f&&f["*"]||{};if(e){for(s=(e=e.split("/")).length-1,y.nodeIdCompat&&w.test(e[s])&&(e[s]=e[s].replace(w,"")),"."===e[0].charAt(0)&&h&&(e=h.slice(0,h.length-1).concat(e)),u=0;u":">",'"':""","'":"'","/":"/"};return"string"!=typeof e?e:String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})},r.appendMany=function(e,t){if("1.7"===o.fn.jquery.substr(0,3)){var n=o();o.map(t,function(e){n=n.add(e)}),t=n}e.append(t)},r.__cache={};var n=0;return r.GetUniqueElementId=function(e){var t=e.getAttribute("data-select2-id");return null==t&&(e.id?(t=e.id,e.setAttribute("data-select2-id",t)):(e.setAttribute("data-select2-id",++n),t=n.toString())),t},r.StoreData=function(e,t,n){var i=r.GetUniqueElementId(e);r.__cache[i]||(r.__cache[i]={}),r.__cache[i][t]=n},r.GetData=function(e,t){var n=r.GetUniqueElementId(e);return t?r.__cache[n]&&null!=r.__cache[n][t]?r.__cache[n][t]:o(e).data(t):r.__cache[n]},r.RemoveData=function(e){var t=r.GetUniqueElementId(e);null!=r.__cache[t]&&delete r.__cache[t],e.removeAttribute("data-select2-id")},r}),e.define("select2/results",["jquery","./utils"],function(h,f){function i(e,t,n){this.$element=e,this.data=n,this.options=t,i.__super__.constructor.call(this)}return f.Extend(i,f.Observable),i.prototype.render=function(){var e=h('
          ');return this.options.get("multiple")&&e.attr("aria-multiselectable","true"),this.$results=e},i.prototype.clear=function(){this.$results.empty()},i.prototype.displayMessage=function(e){var t=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var n=h(''),i=this.options.get("translations").get(e.message);n.append(t(i(e.args))),n[0].className+=" select2-results__message",this.$results.append(n)},i.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},i.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n",{class:"select2-results__options select2-results__options--nested"});p.append(l),s.append(a),s.append(p)}else this.template(e,t);return f.StoreData(t,"data",e),t},i.prototype.bind=function(t,e){var l=this,n=t.id+"-results";this.$results.attr("id",n),t.on("results:all",function(e){l.clear(),l.append(e.data),t.isOpen()&&(l.setClasses(),l.highlightFirstItem())}),t.on("results:append",function(e){l.append(e.data),t.isOpen()&&l.setClasses()}),t.on("query",function(e){l.hideMessages(),l.showLoading(e)}),t.on("select",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("unselect",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("open",function(){l.$results.attr("aria-expanded","true"),l.$results.attr("aria-hidden","false"),l.setClasses(),l.ensureHighlightVisible()}),t.on("close",function(){l.$results.attr("aria-expanded","false"),l.$results.attr("aria-hidden","true"),l.$results.removeAttr("aria-activedescendant")}),t.on("results:toggle",function(){var e=l.getHighlightedResults();0!==e.length&&e.trigger("mouseup")}),t.on("results:select",function(){var e=l.getHighlightedResults();if(0!==e.length){var t=f.GetData(e[0],"data");"true"==e.attr("aria-selected")?l.trigger("close",{}):l.trigger("select",{data:t})}}),t.on("results:previous",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e);if(!(n<=0)){var i=n-1;0===e.length&&(i=0);var r=t.eq(i);r.trigger("mouseenter");var o=l.$results.offset().top,s=r.offset().top,a=l.$results.scrollTop()+(s-o);0===i?l.$results.scrollTop(0):s-o<0&&l.$results.scrollTop(a)}}),t.on("results:next",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e)+1;if(!(n>=t.length)){var i=t.eq(n);i.trigger("mouseenter");var r=l.$results.offset().top+l.$results.outerHeight(!1),o=i.offset().top+i.outerHeight(!1),s=l.$results.scrollTop()+o-r;0===n?l.$results.scrollTop(0):rthis.$results.outerHeight()||o<0)&&this.$results.scrollTop(r)}},i.prototype.template=function(e,t){var n=this.options.get("templateResult"),i=this.options.get("escapeMarkup"),r=n(e,t);null==r?t.style.display="none":"string"==typeof r?t.innerHTML=i(r):h(t).append(r)},i}),e.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),e.define("select2/selection/base",["jquery","../utils","../keys"],function(n,i,r){function o(e,t){this.$element=e,this.options=t,o.__super__.constructor.call(this)}return i.Extend(o,i.Observable),o.prototype.render=function(){var e=n('');return this._tabindex=0,null!=i.GetData(this.$element[0],"old-tabindex")?this._tabindex=i.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),e.attr("title",this.$element.attr("title")),e.attr("tabindex",this._tabindex),e.attr("aria-disabled","false"),this.$selection=e},o.prototype.bind=function(e,t){var n=this,i=e.id+"-results";this.container=e,this.$selection.on("focus",function(e){n.trigger("focus",e)}),this.$selection.on("blur",function(e){n._handleBlur(e)}),this.$selection.on("keydown",function(e){n.trigger("keypress",e),e.which===r.SPACE&&e.preventDefault()}),e.on("results:focus",function(e){n.$selection.attr("aria-activedescendant",e.data._resultId)}),e.on("selection:update",function(e){n.update(e.data)}),e.on("open",function(){n.$selection.attr("aria-expanded","true"),n.$selection.attr("aria-owns",i),n._attachCloseHandler(e)}),e.on("close",function(){n.$selection.attr("aria-expanded","false"),n.$selection.removeAttr("aria-activedescendant"),n.$selection.removeAttr("aria-owns"),n.$selection.trigger("focus"),n._detachCloseHandler(e)}),e.on("enable",function(){n.$selection.attr("tabindex",n._tabindex),n.$selection.attr("aria-disabled","false")}),e.on("disable",function(){n.$selection.attr("tabindex","-1"),n.$selection.attr("aria-disabled","true")})},o.prototype._handleBlur=function(e){var t=this;window.setTimeout(function(){document.activeElement==t.$selection[0]||n.contains(t.$selection[0],document.activeElement)||t.trigger("blur",e)},1)},o.prototype._attachCloseHandler=function(e){n(document.body).on("mousedown.select2."+e.id,function(e){var t=n(e.target).closest(".select2");n(".select2.select2-container--open").each(function(){this!=t[0]&&i.GetData(this,"element").select2("close")})})},o.prototype._detachCloseHandler=function(e){n(document.body).off("mousedown.select2."+e.id)},o.prototype.position=function(e,t){t.find(".selection").append(e)},o.prototype.destroy=function(){this._detachCloseHandler(this.container)},o.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},o.prototype.isEnabled=function(){return!this.isDisabled()},o.prototype.isDisabled=function(){return this.options.get("disabled")},o}),e.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(e,t,n,i){function r(){r.__super__.constructor.apply(this,arguments)}return n.Extend(r,t),r.prototype.render=function(){var e=r.__super__.render.call(this);return e.addClass("select2-selection--single"),e.html(''),e},r.prototype.bind=function(t,e){var n=this;r.__super__.bind.apply(this,arguments);var i=t.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",i).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",i),this.$selection.on("mousedown",function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})}),this.$selection.on("focus",function(e){}),this.$selection.on("blur",function(e){}),t.on("focus",function(e){t.isOpen()||n.$selection.trigger("focus")})},r.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},r.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},r.prototype.selectionContainer=function(){return e("")},r.prototype.update=function(e){if(0!==e.length){var t=e[0],n=this.$selection.find(".select2-selection__rendered"),i=this.display(t,n);n.empty().append(i);var r=t.title||t.text;r?n.attr("title",r):n.removeAttr("title")}else this.clear()},r}),e.define("select2/selection/multiple",["jquery","./base","../utils"],function(r,e,l){function n(e,t){n.__super__.constructor.apply(this,arguments)}return l.Extend(n,e),n.prototype.render=function(){var e=n.__super__.render.call(this);return e.addClass("select2-selection--multiple"),e.html('
            '),e},n.prototype.bind=function(e,t){var i=this;n.__super__.bind.apply(this,arguments),this.$selection.on("click",function(e){i.trigger("toggle",{originalEvent:e})}),this.$selection.on("click",".select2-selection__choice__remove",function(e){if(!i.isDisabled()){var t=r(this).parent(),n=l.GetData(t[0],"data");i.trigger("unselect",{originalEvent:e,data:n})}})},n.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},n.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},n.prototype.selectionContainer=function(){return r('
          • ×
          • ')},n.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],n=0;n×');a.StoreData(i[0],"data",t),this.$selection.find(".select2-selection__rendered").prepend(i)}},e}),e.define("select2/selection/search",["jquery","../utils","../keys"],function(i,a,l){function e(e,t,n){e.call(this,t,n)}return e.prototype.render=function(e){var t=i('');this.$searchContainer=t,this.$search=t.find("input");var n=e.call(this);return this._transferTabIndex(),n},e.prototype.bind=function(e,t,n){var i=this,r=t.id+"-results";e.call(this,t,n),t.on("open",function(){i.$search.attr("aria-controls",r),i.$search.trigger("focus")}),t.on("close",function(){i.$search.val(""),i.$search.removeAttr("aria-controls"),i.$search.removeAttr("aria-activedescendant"),i.$search.trigger("focus")}),t.on("enable",function(){i.$search.prop("disabled",!1),i._transferTabIndex()}),t.on("disable",function(){i.$search.prop("disabled",!0)}),t.on("focus",function(e){i.$search.trigger("focus")}),t.on("results:focus",function(e){e.data._resultId?i.$search.attr("aria-activedescendant",e.data._resultId):i.$search.removeAttr("aria-activedescendant")}),this.$selection.on("focusin",".select2-search--inline",function(e){i.trigger("focus",e)}),this.$selection.on("focusout",".select2-search--inline",function(e){i._handleBlur(e)}),this.$selection.on("keydown",".select2-search--inline",function(e){if(e.stopPropagation(),i.trigger("keypress",e),i._keyUpPrevented=e.isDefaultPrevented(),e.which===l.BACKSPACE&&""===i.$search.val()){var t=i.$searchContainer.prev(".select2-selection__choice");if(0this.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define("select2/data/maximumSelectionLength",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("select",function(){i._checkIfMaximumSelected()})},e.prototype.query=function(e,t,n){var i=this;this._checkIfMaximumSelected(function(){e.call(i,t,n)})},e.prototype._checkIfMaximumSelected=function(e,n){var i=this;this.current(function(e){var t=null!=e?e.length:0;0=i.maximumSelectionLength?i.trigger("results:message",{message:"maximumSelected",args:{maximum:i.maximumSelectionLength}}):n&&n()})},e}),e.define("select2/dropdown",["jquery","./utils"],function(t,e){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t('');return e.attr("dir",this.options.get("dir")),this.$dropdown=e},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),e.define("select2/dropdown/search",["jquery","../utils"],function(o,e){function t(){}return t.prototype.render=function(e){var t=e.call(this),n=o('');return this.$searchContainer=n,this.$search=n.find("input"),t.prepend(n),t},t.prototype.bind=function(e,t,n){var i=this,r=t.id+"-results";e.call(this,t,n),this.$search.on("keydown",function(e){i.trigger("keypress",e),i._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on("input",function(e){o(this).off("keyup")}),this.$search.on("keyup input",function(e){i.handleSearch(e)}),t.on("open",function(){i.$search.attr("tabindex",0),i.$search.attr("aria-controls",r),i.$search.trigger("focus"),window.setTimeout(function(){i.$search.trigger("focus")},0)}),t.on("close",function(){i.$search.attr("tabindex",-1),i.$search.removeAttr("aria-controls"),i.$search.removeAttr("aria-activedescendant"),i.$search.val(""),i.$search.trigger("blur")}),t.on("focus",function(){t.isOpen()||i.$search.trigger("focus")}),t.on("results:all",function(e){null!=e.query.term&&""!==e.query.term||(i.showSearch(e)?i.$searchContainer.removeClass("select2-search--hide"):i.$searchContainer.addClass("select2-search--hide"))}),t.on("results:focus",function(e){e.data._resultId?i.$search.attr("aria-activedescendant",e.data._resultId):i.$search.removeAttr("aria-activedescendant")})},t.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger("query",{term:t})}this._keyUpPrevented=!1},t.prototype.showSearch=function(e,t){return!0},t}),e.define("select2/dropdown/hidePlaceholder",[],function(){function e(e,t,n,i){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,i)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),i=t.length-1;0<=i;i--){var r=t[i];this.placeholder.id===r.id&&n.splice(i,1)}return n},e}),e.define("select2/dropdown/infiniteScroll",["jquery"],function(n){function e(e,t,n,i){this.lastParams={},e.call(this,t,n,i),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("query",function(e){i.lastParams=e,i.loading=!0}),t.on("query:append",function(e){i.lastParams=e,i.loading=!0}),this.$results.on("scroll",this.loadMoreIfNeeded.bind(this))},e.prototype.loadMoreIfNeeded=function(){var e=n.contains(document.documentElement,this.$loadingMore[0]);if(!this.loading&&e){var t=this.$results.offset().top+this.$results.outerHeight(!1);this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)<=t+50&&this.loadMore()}},e.prototype.loadMore=function(){this.loading=!0;var e=n.extend({},{page:1},this.lastParams);e.page++,this.trigger("query:append",e)},e.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},e.prototype.createLoadingMore=function(){var e=n('
          • '),t=this.options.get("translations").get("loadingMore");return e.html(t(this.lastParams)),e},e}),e.define("select2/dropdown/attachBody",["jquery","../utils"],function(f,a){function e(e,t,n){this.$dropdownParent=f(n.get("dropdownParent")||document.body),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var i=this;e.call(this,t,n),t.on("open",function(){i._showDropdown(),i._attachPositioningHandler(t),i._bindContainerResultHandlers(t)}),t.on("close",function(){i._hideDropdown(),i._detachPositioningHandler(t)}),this.$dropdownContainer.on("mousedown",function(e){e.stopPropagation()})},e.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},e.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t.removeClass("select2"),t.addClass("select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},e.prototype.render=function(e){var t=f(""),n=e.call(this);return t.append(n),this.$dropdownContainer=t},e.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},e.prototype._bindContainerResultHandlers=function(e,t){if(!this._containerResultsHandlersBound){var n=this;t.on("results:all",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:append",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:message",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("select",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("unselect",function(){n._positionDropdown(),n._resizeDropdown()}),this._containerResultsHandlersBound=!0}},e.prototype._attachPositioningHandler=function(e,t){var n=this,i="scroll.select2."+t.id,r="resize.select2."+t.id,o="orientationchange.select2."+t.id,s=this.$container.parents().filter(a.hasScroll);s.each(function(){a.StoreData(this,"select2-scroll-position",{x:f(this).scrollLeft(),y:f(this).scrollTop()})}),s.on(i,function(e){var t=a.GetData(this,"select2-scroll-position");f(this).scrollTop(t.y)}),f(window).on(i+" "+r+" "+o,function(e){n._positionDropdown(),n._resizeDropdown()})},e.prototype._detachPositioningHandler=function(e,t){var n="scroll.select2."+t.id,i="resize.select2."+t.id,r="orientationchange.select2."+t.id;this.$container.parents().filter(a.hasScroll).off(n),f(window).off(n+" "+i+" "+r)},e.prototype._positionDropdown=function(){var e=f(window),t=this.$dropdown.hasClass("select2-dropdown--above"),n=this.$dropdown.hasClass("select2-dropdown--below"),i=null,r=this.$container.offset();r.bottom=r.top+this.$container.outerHeight(!1);var o={height:this.$container.outerHeight(!1)};o.top=r.top,o.bottom=r.top+o.height;var s=this.$dropdown.outerHeight(!1),a=e.scrollTop(),l=e.scrollTop()+e.height(),c=ar.bottom+s,d={left:r.left,top:o.bottom},p=this.$dropdownParent;"static"===p.css("position")&&(p=p.offsetParent());var h={top:0,left:0};(f.contains(document.body,p[0])||p[0].isConnected)&&(h=p.offset()),d.top-=h.top,d.left-=h.left,t||n||(i="below"),u||!c||t?!c&&u&&t&&(i="below"):i="above",("above"==i||t&&"below"!==i)&&(d.top=o.top-h.top-s),null!=i&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+i),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+i)),this.$dropdownContainer.css(d)},e.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},e.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},e}),e.define("select2/dropdown/minimumResultsForSearch",[],function(){function e(e,t,n,i){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,i)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,i=0;i');return e.attr("dir",this.options.get("dir")),this.$container=e,this.$container.addClass("select2-container--"+this.options.get("theme")),u.StoreData(e[0],"element",this.$element),e},d}),e.define("select2/compat/utils",["jquery"],function(s){return{syncCssClasses:function(e,t,n){var i,r,o=[];(i=s.trim(e.attr("class")))&&s((i=""+i).split(/\s+/)).each(function(){0===this.indexOf("select2-")&&o.push(this)}),(i=s.trim(t.attr("class")))&&s((i=""+i).split(/\s+/)).each(function(){0!==this.indexOf("select2-")&&null!=(r=n(this))&&o.push(r)}),e.attr("class",o.join(" "))}}}),e.define("select2/compat/containerCss",["jquery","./utils"],function(s,a){function l(e){return null}function e(){}return e.prototype.render=function(e){var t=e.call(this),n=this.options.get("containerCssClass")||"";s.isFunction(n)&&(n=n(this.$element));var i=this.options.get("adaptContainerCssClass");if(i=i||l,-1!==n.indexOf(":all:")){n=n.replace(":all:","");var r=i;i=function(e){var t=r(e);return null!=t?t+" "+e:e}}var o=this.options.get("containerCss")||{};return s.isFunction(o)&&(o=o(this.$element)),a.syncCssClasses(t,this.$element,i),t.css(o),t.addClass(n),t},e}),e.define("select2/compat/dropdownCss",["jquery","./utils"],function(s,a){function l(e){return null}function e(){}return e.prototype.render=function(e){var t=e.call(this),n=this.options.get("dropdownCssClass")||"";s.isFunction(n)&&(n=n(this.$element));var i=this.options.get("adaptDropdownCssClass");if(i=i||l,-1!==n.indexOf(":all:")){n=n.replace(":all:","");var r=i;i=function(e){var t=r(e);return null!=t?t+" "+e:e}}var o=this.options.get("dropdownCss")||{};return s.isFunction(o)&&(o=o(this.$element)),a.syncCssClasses(t,this.$element,i),t.css(o),t.addClass(n),t},e}),e.define("select2/compat/initSelection",["jquery"],function(i){function e(e,t,n){n.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `initSelection` option has been deprecated in favor of a custom data adapter that overrides the `current` method. This method is now called multiple times instead of a single time when the instance is initialized. Support will be removed for the `initSelection` option in future versions of Select2"),this.initSelection=n.get("initSelection"),this._isInitialized=!1,e.call(this,t,n)}return e.prototype.current=function(e,t){var n=this;this._isInitialized?e.call(this,t):this.initSelection.call(null,this.$element,function(e){n._isInitialized=!0,i.isArray(e)||(e=[e]),t(e)})},e}),e.define("select2/compat/inputData",["jquery","../utils"],function(s,i){function e(e,t,n){this._currentData=[],this._valueSeparator=n.get("valueSeparator")||",","hidden"===t.prop("type")&&n.get("debug")&&console&&console.warn&&console.warn("Select2: Using a hidden input with Select2 is no longer supported and may stop working in the future. It is recommended to use a ` - - -1, - 'orderby' => 'title', - 'post_type' => 'generate_page_header', - 'suppress_filters' => false, - )); - - $options[ $type ] = ! isset( $options[ $type ] ) ? '' : $options[ $type ]; - - foreach( $page_headers as $header ) { - printf( '', - $header->ID, - selected( $options[ $type ], $header->ID ), - $header->post_title - ); - } - ?> - - ( window_height - offset ) ) { - jQuery( '.fullscreen-enabled' ).attr( 'style', 'height: initial !important' ); - } -} - -jQuery(document).ready(function($) { - - // Run the header height function - generateHeaderHeight(); - - // Set up the resize timer - var generateResizeTimer; - - if ( jQuery('.generate-page-header.fullscreen-enabled')[0] ) { - // Initiate full window height on resize - var width = $(window).width(); - $(window).resize(function() { - if($(window).width() != width){ - clearTimeout(generateResizeTimer); - generateResizeTimer = setTimeout(generateHeaderHeight, 200); - width = $(window).width(); - } - }); - - $( window ).on( "orientationchange", function( event ) { - if($(window).width() != width){ - clearTimeout(generateResizeTimer); - generateResizeTimer = setTimeout(generateHeaderHeight, 200); - width = $(window).width(); - } - }); - } - -}); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/full-height.min.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/full-height.min.js deleted file mode 100644 index dd988e11..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/full-height.min.js +++ /dev/null @@ -1 +0,0 @@ -function generateHeaderHeight(){if(jQuery(".fullscreen-enabled").length){var a,b=jQuery(window).height();a=jQuery(".inside-page-header").length?jQuery(".inside-page-header"):jQuery(".generate-inside-combined-content").length?jQuery(".generate-inside-combined-content"):jQuery(".generate-inside-page-header-content");var c=jQuery(".fullscreen-enabled").offset().top;jQuery(".fullscreen-enabled").css("height",b-c+"px"),a.outerHeight()>b-c&&jQuery(".fullscreen-enabled").attr("style","height: initial !important")}}function generateHeaderParallax(){var a=jQuery(".menu-toggle");if(!a.is(":visible")&&jQuery(".generate-page-header.parallax-enabled")[0]){if(jQuery(".page-header-contained")[0])var b=jQuery(".generate-page-header.parallax-enabled .inside-content-header");else var b=jQuery(".generate-page-header.parallax-enabled");var c=jQuery(this).scrollTop(),d=jQuery(".generate-page-header.parallax-enabled").data("parallax-speed");return b.css("background-position","center "+parseInt(-c/d)+"px")}}jQuery(document).ready(function(a){generateHeaderHeight();var b;if(jQuery(".generate-page-header.parallax-enabled")[0]&&a(document).scroll(function(){generateHeaderParallax()}),jQuery(".generate-page-header.fullscreen-enabled")[0]){var c=a(window).width();a(window).resize(function(){a(window).width()!=c&&(clearTimeout(b),b=setTimeout(generateHeaderHeight,200),c=a(window).width())}),a(window).on("orientationchange",function(d){a(window).width()!=c&&(clearTimeout(b),b=setTimeout(generateHeaderHeight,200),c=a(window).width())})}}); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/jquery.vide.min.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/jquery.vide.min.js deleted file mode 100644 index d78004e0..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/jquery.vide.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Vide - v0.5.0 - * Easy as hell jQuery plugin for video backgrounds. - * http://vodkabears.github.io/vide/ - * - * Made by Ilya Makarov - * Under MIT License - */ -!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],b):b("object"==typeof exports?require("jquery"):a.jQuery)}(this,function(a){"use strict";function b(a){var b,c,d,e,f,g,h,i={};for(f=a.replace(/\s*:\s*/g,":").replace(/\s*,\s*/g,",").split(","),h=0,g=f.length;g>h&&(c=f[h],-1===c.search(/^(http|https|ftp):\/\//)&&-1!==c.search(":"));h++)b=c.indexOf(":"),d=c.substring(0,b),e=c.substring(b+1),e||(e=void 0),"string"==typeof e&&(e="true"===e||("false"===e?!1:e)),"string"==typeof e&&(e=isNaN(e)?e:+e),i[d]=e;return null==d&&null==e?a:i}function c(a){a=""+a;var b,c,d,e=a.split(/\s+/),f="50%",g="50%";for(d=0,b=e.length;b>d;d++)c=e[d],"left"===c?f="0%":"right"===c?f="100%":"top"===c?g="0%":"bottom"===c?g="100%":"center"===c?0===d?f="50%":g="50%":0===d?f=c:g=c;return{x:f,y:g}}function d(b,c){var d=function(){c(this.src)};a('').load(d),a('').load(d),a('').load(d),a('').load(d)}function e(c,d,e){if(this.$element=a(c),"string"==typeof d&&(d=b(d)),e?"string"==typeof e&&(e=b(e)):e={},"string"==typeof d)d=d.replace(/\.\w*$/,"");else if("object"==typeof d)for(var f in d)d.hasOwnProperty(f)&&(d[f]=d[f].replace(/\.\w*$/,""));this.settings=a.extend({},g,e),this.path=d;try{this.init()}catch(i){if(i.message!==h)throw i}}var f="vide",g={volume:1,playbackRate:1,muted:!0,loop:!0,autoplay:!0,position:"50% 50%",posterType:"detect",resizing:!0,bgColor:"transparent",className:""},h="Not implemented";e.prototype.init=function(){var b,e,g=this,i=g.path,j=i,k="",l=g.$element,m=g.settings,n=c(m.position),o=m.posterType;e=g.$wrapper=a("
            ").addClass(m.className).css({position:"absolute","z-index":-1,top:0,left:0,bottom:0,right:0,overflow:"hidden","-webkit-background-size":"cover","-moz-background-size":"cover","-o-background-size":"cover","background-size":"cover","background-color":m.bgColor,"background-repeat":"no-repeat","background-position":n.x+" "+n.y}),"object"==typeof i&&(i.poster?j=i.poster:i.mp4?j=i.mp4:i.webm?j=i.webm:i.ogv&&(j=i.ogv)),"detect"===o?d(j,function(a){e.css("background-image","url("+a+")")}):"none"!==o&&e.css("background-image","url("+j+"."+o+")"),"static"===l.css("position")&&l.css("position","relative"),l.prepend(e),"object"==typeof i?(i.mp4&&(k+=''),i.webm&&(k+=''),i.ogv&&(k+=''),b=g.$video=a("")):b=g.$video=a('');try{b.prop({autoplay:m.autoplay,loop:m.loop,volume:m.volume,muted:m.muted,defaultMuted:m.muted,playbackRate:m.playbackRate,defaultPlaybackRate:m.playbackRate})}catch(p){throw new Error(h)}b.css({margin:"auto",position:"absolute","z-index":-1,top:n.y,left:n.x,"-webkit-transform":"translate(-"+n.x+", -"+n.y+")","-ms-transform":"translate(-"+n.x+", -"+n.y+")","-moz-transform":"translate(-"+n.x+", -"+n.y+")",transform:"translate(-"+n.x+", -"+n.y+")",visibility:"hidden",opacity:0}).one("canplaythrough."+f,function(){g.resize()}).one("playing."+f,function(){b.css({visibility:"visible",opacity:1}),e.css("background-image","none")}),l.on("resize."+f,function(){m.resizing&&g.resize()}),e.append(b)},e.prototype.getVideoObject=function(){return this.$video[0]},e.prototype.resize=function(){if(this.$video){var a=this.$wrapper,b=this.$video,c=b[0],d=c.videoHeight,e=c.videoWidth,f=a.height(),g=a.width();g/e>f/d?b.css({width:g+2,height:"auto"}):b.css({width:"auto",height:f+2})}},e.prototype.destroy=function(){delete a[f].lookup[this.index],this.$video&&this.$video.off(f),this.$element.off(f).removeData(f),this.$wrapper.remove()},a[f]={lookup:[]},a.fn[f]=function(b,c){var d;return this.each(function(){d=a.data(this,f),d&&d.destroy(),d=new e(this,b,c),d.index=a[f].lookup.push(d)-1,a.data(this,f,d)}),this},a(document).ready(function(){var b=a(window);b.on("resize."+f,function(){for(var b,c=a[f].lookup.length,d=0;c>d;d++)b=a[f].lookup[d],b&&b.settings.resizing&&b.resize()}),b.on("unload."+f,function(){return!1}),a(document).find("[data-"+f+"-bg]").each(function(b,c){var d=a(c),e=d.data(f+"-options"),g=d.data(f+"-bg");d[f](g,e)})})});jQuery(document).ready(function($) {var page_header_content = $( '.page-header-content' );if ( page_header_content.length ) {if ( page_header_content.hasClass( 'grid-container' ) ) {$( '.inside-page-header-container' ).data('vide').getVideoObject().play();} else {page_header_content.data('vide').getVideoObject().play();}}}); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/lc_switch.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/lc_switch.js deleted file mode 100644 index 89eae365..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/lc_switch.js +++ /dev/null @@ -1,149 +0,0 @@ -/** - * lc_switch.js - * Version: 1.0 - * Author: LCweb - Luca Montanari - * Website: http://www.lcweb.it - * Licensed under the MIT license - */ - -(function($){ - if(typeof($.fn.lc_switch) != 'undefined') {return false;} // prevent dmultiple scripts inits - - $.fn.lc_switch = function(on_text, off_text) { - - // destruct - $.fn.lcs_destroy = function() { - - $(this).each(function() { - var $wrap = $(this).parents('.lcs_wrap'); - - $wrap.children().not('input').remove(); - $(this).unwrap(); - }); - - return true; - }; - - - // set to ON - $.fn.lcs_on = function() { - - $(this).each(function() { - var $wrap = $(this).parents('.lcs_wrap'); - var $input = $wrap.find('input'); - - if(typeof($.fn.prop) == 'function') { - $wrap.find('input').prop('checked', true); - } else { - $wrap.find('input').attr('checked', true); - } - - $wrap.find('input').trigger('lcs-on'); - $wrap.find('input').trigger('lcs-statuschange'); - $wrap.find('.lcs_switch').removeClass('lcs_off').addClass('lcs_on'); - - // if radio - disable other ones - if( $wrap.find('.lcs_switch').hasClass('lcs_radio_switch') ) { - var f_name = $input.attr('name'); - $wrap.parents('form').find('input[name='+f_name+']').not($input).lcs_off(); - } - }); - - return true; - }; - - - // set to OFF - $.fn.lcs_off = function() { - - $(this).each(function() { - var $wrap = $(this).parents('.lcs_wrap'); - - if(typeof($.fn.prop) == 'function') { - $wrap.find('input').prop('checked', false); - } else { - $wrap.find('input').attr('checked', false); - } - - $wrap.find('input').trigger('lcs-off'); - $wrap.find('input').trigger('lcs-statuschange'); - $wrap.find('.lcs_switch').removeClass('lcs_on').addClass('lcs_off'); - }); - - return true; - }; - - - // construct - return this.each(function(){ - - // check against double init - if( !$(this).parent().hasClass('lcs_wrap') ) { - - // default texts - var ckd_on_txt = (typeof(on_text) == 'undefined') ? 'ON' : on_text; - var ckd_off_txt = (typeof(off_text) == 'undefined') ? 'OFF' : off_text; - - // labels structure - var on_label = (ckd_on_txt) ? '
            '+ ckd_on_txt +'
            ' : ''; - var off_label = (ckd_off_txt) ? '
            '+ ckd_off_txt +'
            ' : ''; - - - // default states - var disabled = ($(this).is(':disabled')) ? true: false; - var active = ($(this).is(':checked')) ? true : false; - - var status_classes = ''; - status_classes += (active) ? ' lcs_on' : ' lcs_off'; - if(disabled) {status_classes += ' lcs_disabled';} - - - // wrap and append - var structure = - '
            ' + - '
            ' + - on_label + off_label + - '
            '; - - if( $(this).is(':input') && ($(this).attr('type') == 'checkbox' || $(this).attr('type') == 'radio') ) { - - $(this).wrap('
            '); - $(this).parent().append(structure); - - $(this).parent().find('.lcs_switch').addClass('lcs_'+ $(this).attr('type') +'_switch'); - } - } - }); - }; - - - - // handlers - $(document).ready(function() { - - // on click - $(document).delegate('.lcs_switch:not(.lcs_disabled)', 'click tap', function(e) { - - if( $(this).hasClass('lcs_on') ) { - if( !$(this).hasClass('lcs_radio_switch') ) { // not for radio - $(this).lcs_off(); - } - } else { - $(this).lcs_on(); - } - }); - - - // on checkbox status change - $(document).delegate('.lcs_wrap input', 'change', function() { - - if( $(this).is(':checked') ) { - $(this).lcs_on(); - } else { - $(this).lcs_off(); - } - }); - - }); - -})(jQuery); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/metabox.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/metabox.js deleted file mode 100644 index f1c0f66e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/metabox.js +++ /dev/null @@ -1,220 +0,0 @@ -jQuery(document).ready(function($) { - $( '#generate-tabs-container input[type="checkbox"]' ).lc_switch( '', '' ); - - $( '.generate-tabs-menu a' ).on( 'click', function( event ) { - event.preventDefault(); - $( this ).parent().addClass( 'generate-current' ); - $( this ).parent().siblings().removeClass( 'generate-current' ); - var tab = $( this ).attr( 'href' ); - $( '.generate-tab-content' ).not(tab).css( 'display', 'none' ); - $( tab ).fadeIn( 100 ); - - if ( '#generate-image-tab' == tab || '#generate-content-tab' == tab ) { - $( '.show-in-excerpt' ).show(); - } else { - $( '.show-in-excerpt' ).hide(); - } - } ); - - $( '#_meta-generate-page-header-content' ).on( 'input change', function() { - if ( this.value.length ) { - $( '.page-header-content-required' ).hide(); - } else { - $( '.page-header-content-required' ).show(); - } - }); -}); - -jQuery(window).on('load', function() { - if ( jQuery( '#_meta-generate-page-header-enable-image-crop' ).val() == 'enable' ) { - jQuery( '#crop-enabled' ).show(); - } - - jQuery( '#_meta-generate-page-header-enable-image-crop' ).change(function () { - if ( jQuery( this ).val() === 'enable' ) { - jQuery( '#crop-enabled' ).show(); - } else { - jQuery( '#crop-enabled' ).hide(); - } - }); - - if ( jQuery( '#_meta-generate-page-header-image-background' ).is( ':checked' ) ) { - jQuery( '.parallax' ).show(); - } else { - jQuery( '.parallax' ).hide(); - } - - jQuery('body').delegate('.image-background', 'lcs-statuschange', function() { - if (jQuery(this).is(":checked")) { - jQuery('.parallax').show(); - } else { - jQuery('.parallax').hide(); - jQuery('#_meta-generate-page-header-image-background-fixed').lcs_off(); - } - }); - - if ( jQuery('#_meta-generate-page-header-full-screen').is(':checked')) { - jQuery('.vertical-center').show(); - } else { - jQuery('.vertical-center').hide(); - } - - jQuery('body').delegate('#_meta-generate-page-header-full-screen', 'lcs-statuschange', function() { - if (jQuery(this).is(":checked")) { - jQuery('.vertical-center').show(); - } else { - jQuery('.vertical-center').hide(); - jQuery('#_meta-generate-page-header-vertical-center').lcs_off(); - } - }); - - if ( jQuery('#_meta-generate-page-header-transparent-navigation').is(':checked')) { - jQuery('.navigation-colors').show(); - } else { - jQuery('.navigation-colors').hide(); - } - - jQuery('body').delegate('#_meta-generate-page-header-transparent-navigation', 'lcs-statuschange', function() { - if (jQuery(this).is(":checked")) { - jQuery('.navigation-colors').show(); - } else { - jQuery('.navigation-colors').hide(); - } - }); - - if ( jQuery('#_meta-generate-page-header-combine').is(':checked')) { - jQuery('.combination-options').show(); - } else { - jQuery('.combination-options').hide(); - } - - jQuery('body').delegate('#_meta-generate-page-header-combine', 'lcs-statuschange', function() { - if (jQuery(this).is(":checked")) { - jQuery('.combination-options').show(); - } else { - jQuery('.combination-options').hide(); - } - }); - - if ( jQuery('#_meta-generate-page-header-image-background-type').val() == '' ) { - jQuery('.vertical-center').hide(); - jQuery('.fullscreen').hide(); - } - jQuery('#_meta-generate-page-header-image-background-type').change(function () { - if (jQuery(this).val() === '') { - jQuery('.vertical-center').hide(); - jQuery('#_meta-generate-page-header-vertical-center').lcs_off(); - jQuery('.fullscreen').hide(); - jQuery('#_meta-generate-page-header-full-screen').lcs_off(); - } else { - //jQuery('.vertical-center').show(); - jQuery('.fullscreen').show(); - } - }); - - var $set_button = jQuery('.generate-upload-file'); - /** - * open the media manager - */ - $set_button.click(function (e) { - e.preventDefault(); - - var $thisbutton = jQuery(this); - var frame = wp.media({ - title : $thisbutton.data('title'), - multiple : false, - library : { type : $thisbutton.data('type') }, - button : { text : $thisbutton.data('insert') } - }); - // close event media manager - frame.on('select', function () { - var attachment = frame.state().get('selection').first().toJSON(); - // set the file - //set_dfi(attachment.url); - $thisbutton.prev('input').val(attachment.url); - $thisbutton.nextAll('input.image-id').val(attachment.id); - if ( $thisbutton.data('prev') === true ) { - $thisbutton.prev('input').prevAll('#preview-image').children('.saved-image').remove(); - $thisbutton.prev('input').prevAll('#preview-image').append(''); - } - $thisbutton.nextAll( '.generate-page-header-remove-image' ).show(); - if ( 'upload_image' == $thisbutton.prev( 'input' ).attr( 'id' ) ) { - jQuery( '.featured-image-message' ).hide(); - jQuery( '.page-header-image-settings' ).show(); - jQuery( '.generate-page-header-set-featured-image' ).hide(); - } - }); - - // everthing is set open the media manager - frame.open(); - }); -}); -jQuery(document).ready(function($) { - $('#generate-tabs-container .color-picker').wpColorPicker(); - - jQuery( '.generate-page-header-remove-image' ).on( 'click', function( e ) { - e.preventDefault(); - var input = jQuery( this ).data( 'input' ); - var input_id = jQuery( this ).data( 'input-id' ); - var preview = jQuery( this ).data( 'prev' ); - jQuery( input ).attr( 'value', '' ); - jQuery( input_id ).attr( 'value', '' ); - jQuery( preview ).children( '.saved-image' ).remove(); - jQuery( this ).hide(); - if ( '-1' == jQuery( '#_thumbnail_id' ).attr( 'value' ) ) { - jQuery( '.page-header-image-settings' ).hide(); - jQuery( '.generate-page-header-set-featured-image' ).show(); - - } else { - jQuery( '.generate-page-header-set-featured-image' ).hide(); - jQuery( '.page-header-image-settings' ).show(); - jQuery( '.featured-image-message' ).show(); - } - return false; - }); - - $('#postimagediv').on( 'click', '#remove-post-thumbnail', function() { - // The featured image is gone, so we can hide the message - jQuery( '.featured-image-message' ).hide(); - - // If there's no other image set, we can hide the image settings - if ( '' == jQuery( '#_meta-generate-page-header-image-id' ).attr( 'value' ) ) { - jQuery( '.page-header-image-settings' ).hide(); - jQuery( '.generate-page-header-set-featured-image' ).show(); - } - - // No more featured image means we can show the 'show excerpt' option - jQuery( '.show-in-excerpt' ).show(); - - return false; - }); - - wp.media.featuredImage.frame().on('select', function() { - - // We have a featured image, so the 'show excerpt' function isn't necessary - jQuery( '.show-in-excerpt' ).hide(); - - // We can stop here if we have a custom image set - if ( '' !== jQuery( '#_meta-generate-page-header-image-id' ).attr( 'value' ) ) - return; - - // Hide the set your featured image message - jQuery( '.generate-page-header-set-featured-image' ).hide(); - - // Show the "using feaured image" message - jQuery( '.featured-image-message' ).show(); - - // Show the image settings (image link, resizing etc..) - jQuery( '.page-header-image-settings' ).show(); - }); - - $( '.generate-featured-image, .generate-page-header-set-featured-image a' ).on( 'click', function( event ) { - event.preventDefault(); - - // Stop propagation to prevent thickbox from activating. - event.stopPropagation(); - - // Open the featured image modal - wp.media.featuredImage.frame().open(); - }); -}); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/parallax.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/parallax.js deleted file mode 100644 index 8fe3b26c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/parallax.js +++ /dev/null @@ -1,17 +0,0 @@ -function generate_parallax_element( selector, context ) { - context = context || document; - var elements = context.querySelectorAll( selector ); - return Array.prototype.slice.call( elements ); -} - -window.addEventListener( "scroll", function() { - var scrolledHeight= window.pageYOffset; - generate_parallax_element( ".parallax-enabled" ).forEach( function( el, index, array ) { - var limit = el.offsetTop + el.offsetHeight; - if( scrolledHeight > el.offsetTop && scrolledHeight <= limit ) { - el.style.backgroundPositionY = ( scrolledHeight - el.offsetTop ) / el.getAttribute( 'data-parallax-speed' ) + "px"; - } else { - el.style.backgroundPositionY = "0"; - } - }); -}); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/parallax.min.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/parallax.min.js deleted file mode 100644 index 8263a901..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/js/parallax.min.js +++ /dev/null @@ -1 +0,0 @@ -function generate_parallax_element(e,t){var a=(t=t||document).querySelectorAll(e);return Array.prototype.slice.call(a)}window.addEventListener("scroll",function(){var e=window.pageYOffset;generate_parallax_element(".parallax-enabled").forEach(function(t,a,o){var r=t.offsetTop+t.offsetHeight;e>t.offsetTop&&e<=r?t.style.backgroundPositionY=(e-t.offsetTop)/t.getAttribute("data-parallax-speed")+"px":t.style.backgroundPositionY="0"})}); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/metabox.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/metabox.php deleted file mode 100644 index 76b25c4a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/metabox.php +++ /dev/null @@ -1,782 +0,0 @@ - true ); - $post_types = get_post_types( $args ); - - // Bail if we're not using the old Page Header meta box - if ( 'generate_page_header' !== get_post_type() && '' == $stored_meta['_meta-generate-page-header-content'][0] && '' == $stored_meta['_meta-generate-page-header-image'][0] && '' == $stored_meta['_meta-generate-page-header-image-id'][0] ) { - if ( ! defined( 'GENERATE_LAYOUT_META_BOX' ) ) { - foreach ( $post_types as $type ) { - if ( 'attachment' !== $type ) { - add_meta_box( - 'generate_select_page_header_meta_box', - __( 'Page Header', 'gp-premium' ), - 'generate_do_select_page_header_meta_box', - $type, - 'normal', - 'high' - ); - } - } - } - - if ( ! apply_filters( 'generate_page_header_legacy_metabox', false ) ) { - return; - } - } - - array_push( $post_types, 'generate_page_header' ); - foreach ($post_types as $type) { - if ( 'attachment' !== $type ) { - add_meta_box( - 'generate_page_header_meta_box', - __( 'Page Header', 'gp-premium' ), - 'show_generate_page_header_meta_box', - $type, - 'normal', - 'high' - ); - } - } - } -} - -if ( ! function_exists( 'generate_page_header_metabox_enqueue' ) ) { - add_action( 'admin_enqueue_scripts', 'generate_page_header_metabox_enqueue' ); - /** - * Add our metabox scripts - */ - function generate_page_header_metabox_enqueue( $hook ) { - // I prefer to enqueue the styles only on pages that are using the metaboxes - if ( in_array( $hook, array( "post.php", "post-new.php" ) ) ) { - $args = array( 'public' => true ); - $post_types = get_post_types( $args ); - - $screen = get_current_screen(); - $post_type = $screen->id; - - if ( in_array( $post_type, (array) $post_types ) || 'generate_page_header' == get_post_type() ){ - wp_enqueue_media(); - wp_enqueue_script( 'wp-color-picker' ); - wp_enqueue_style( 'wp-color-picker' ); - wp_enqueue_script( 'wp-color-picker-alpha', GP_LIBRARY_DIRECTORY_URL . 'alpha-color-picker/wp-color-picker-alpha.min.js', array( 'wp-color-picker' ), '3.0.0', true ); - - wp_add_inline_script( - 'wp-color-picker-alpha', - 'jQuery( function() { jQuery( ".color-picker" ).wpColorPicker(); } );' - ); - - wp_enqueue_style( 'generate-page-header-metabox', plugin_dir_url( __FILE__ ) . 'css/metabox.css', array(), GENERATE_PAGE_HEADER_VERSION ); - wp_enqueue_script( 'generate-lc-switch', plugin_dir_url( __FILE__ ) . 'js/lc_switch.js', array( 'jquery' ), GENERATE_PAGE_HEADER_VERSION, false ); - wp_enqueue_script( 'generate-page-header-metabox', plugin_dir_url( __FILE__ ) . 'js/metabox.js', array( 'jquery','generate-lc-switch', 'wp-color-picker' ), GENERATE_PAGE_HEADER_VERSION, false ); - - if ( function_exists( 'wp_add_inline_script' ) && function_exists( 'generate_get_default_color_palettes' ) ) { - // Grab our palette array and turn it into JS - $palettes = json_encode( generate_get_default_color_palettes() ); - - // Add our custom palettes - // json_encode takes care of escaping - wp_add_inline_script( 'wp-color-picker', 'jQuery.wp.wpColorPicker.prototype.options.palettes = ' . $palettes . ';' ); - } - } - } - } -} - -/** - * Build our Select Page Header meta box. - * - * @since 1.4 - */ -function generate_do_select_page_header_meta_box( $post ) { - wp_nonce_field( basename( __FILE__ ), 'generate_page_header_nonce' ); - $stored_meta = get_post_meta( $post->ID ); - $stored_meta['_generate-select-page-header'][0] = ( isset( $stored_meta['_generate-select-page-header'][0] ) ) ? $stored_meta['_generate-select-page-header'][0] : ''; - - $page_headers = get_posts(array( - 'posts_per_page' => -1, - 'orderby' => 'title', - 'post_type' => 'generate_page_header', - )); - - if ( count( $page_headers ) > 0 ) : - ?> -

            - -

            - -

            - create one?', 'gp-premium' ), - esc_url( admin_url( 'post-new.php?post_type=generate_page_header' ) ) - ); - ?> -

            -

            %1$s

            ', - __( 'Content is required for the below settings to work.', 'gp-premium' ), - '' !== generate_page_header_get_post_meta( get_the_ID(), '_meta-generate-page-header-content', true ) ? 'style="display:none"' : '' - ); - - if ( '' !== generate_page_header_get_post_meta( get_the_ID(), '_meta-generate-page-header-content', true ) ) { - ?> - - -
            -
              -
            • - -
            • - -
            • - -
            • - -
            • - -
            • - - -
            • - -
            • - - -
            • - -
            • - - -
              > -

              -
              - /> -

              -
              - -
            -
            -
            - - - -
            - - - -
            - - - - - - - - -
            > -

            -
            - -

            - -

            -
            - -

            - - -
            -
            - -
            - - -

            - -
            - -
            -

            - /> - -

            - -

            - /> - -

            - -

            - /> - -

            - -

            - /> - -

            - -

            - /> - -

            - -

            - /> - -

            - -

            - /> - -

            -
            - -
            -

            -
            - -

            - -

            -
            - -

            - -

            -
            - -

            - -

            -
            - - -

            - -

            -
            - - -

            -
            - -
            -

            -
            - -

            - -

            -
            - -

            - -

            -
            - -

            - -

            -
            - -

            -
            -
            -
            -
            - - - - -
            - -

            - -

            - -
            - - - -
            - - - - - - - - -

            - -

            - -

            - -
            - - - -
            - - - - - - - - - -
            - - - -
            -
            - 'FILTER_CONTENT', - '_meta-generate-page-header-image' => 'FILTER_SANITIZE_URL', - '_meta-generate-page-header-image-id' => 'FILTER_SANITIZE_NUMBER_INT', - '_meta-generate-page-header-image-link' => 'FILTER_SANITIZE_URL', - '_meta-generate-page-header-enable-image-crop' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-image-crop' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-image-width' => 'FILTER_SANITIZE_NUMBER_INT', - '_meta-generate-page-header-image-height' => 'FILTER_SANITIZE_NUMBER_INT', - '_meta-generate-page-header-image-background-type' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-inner-container' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-image-background-alignment' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-image-background-spacing' => 'FILTER_SANITIZE_NUMBER_INT', - '_meta-generate-page-header-image-background-spacing-unit' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-left-right-padding' => 'FILTER_SANITIZE_NUMBER_INT', - '_meta-generate-page-header-left-right-padding-unit' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-image-background-color' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-image-background-text-color' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-image-background-link-color' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-image-background-link-color-hover' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-navigation-background' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-navigation-text' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-navigation-background-hover' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-navigation-text-hover' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-navigation-background-current' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-navigation-text-current' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-site-title' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-site-tagline' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-video' => 'FILTER_SANITIZE_URL', - '_meta-generate-page-header-video-ogv' => 'FILTER_SANITIZE_URL', - '_meta-generate-page-header-video-webm' => 'FILTER_SANITIZE_URL', - '_meta-generate-page-header-video-overlay' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-content-autop' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-content-padding' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-image-background' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-full-screen' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-vertical-center' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-image-background-fixed' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-image-background-overlay' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-combine' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-absolute-position' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-transparent-navigation' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-add-to-excerpt' => 'FILTER_SANITIZE_STRING', - '_meta-generate-page-header-logo' => 'FILTER_SANITIZE_URL', - '_meta-generate-page-header-logo-id' => 'FILTER_SANITIZE_NUMBER_INT', - '_meta-generate-page-header-navigation-logo' => 'FILTER_SANITIZE_URL', - '_meta-generate-page-header-navigation-logo-id' => 'FILTER_SANITIZE_NUMBER_INT', - ); - - if ( ! defined( 'GENERATE_LAYOUT_META_BOX' ) ) { - $options[ '_generate-select-page-header' ] = 'FILTER_SANITIZE_NUMBER_INT'; - } - - foreach ( $options as $key => $sanitize ) { - if ( 'FILTER_SANITIZE_STRING' == $sanitize ) { - $value = filter_input( INPUT_POST, $key, FILTER_SANITIZE_STRING ); - } elseif ( 'FILTER_SANITIZE_URL' == $sanitize ) { - $value = filter_input( INPUT_POST, $key, FILTER_SANITIZE_URL ); - } elseif ( 'FILTER_SANITIZE_NUMBER_INT' == $sanitize ) { - $value = filter_input( INPUT_POST, $key, FILTER_SANITIZE_NUMBER_INT ); - } elseif ( 'FILTER_CONTENT' == $sanitize && isset( $_POST[ $key ] ) ) { - if ( current_user_can( 'unfiltered_html' ) ) { - $value = $_POST[ $key ]; - } else { - $value = wp_kses_post( $_POST[ $key ] ); - } - } else { - $value = filter_input( INPUT_POST, $key, FILTER_DEFAULT ); - } - - if ( $value ) { - update_post_meta( $post_id, $key, $value ); - } else { - delete_post_meta( $post_id, $key ); - } - } - } -} - -add_action( 'add_meta_boxes', 'generate_page_header_tags_add_meta_box' ); -/** - * Add our Template Tags meta box. - * - * @param WP_Post $post Current post object. - * - * @since 1.4 - */ -function generate_page_header_tags_add_meta_box( $post ) { - add_meta_box( 'generate_page_header_tags', __( 'Template Tags', 'gp-premium' ), 'generate_page_header_tags_do_meta_box', 'generate_page_header', 'side', 'low' ); -} - -/** - * Meta box display callback. - * - * @param WP_Post $post Current post object. - * - * @since 1.4 - */ -function generate_page_header_tags_do_meta_box( $post ) { - ?> - -

            - - -

            - - -

            - - -

            - - -

            - - - -
          • - ( ! empty( $options[ 'background_video' ] ) ) ? 'mp4:' . esc_url( $options[ 'background_video' ] ) : null, - 'ogv' => ( ! empty( $options[ 'background_video_ogv' ] ) ) ? 'ogv:' . esc_url( $options[ 'background_video_ogv' ] ) : null, - 'webm' => ( ! empty( $options[ 'background_video_webm' ] ) ) ? 'webm:' . esc_url( $options[ 'background_video_webm' ] ) : null, - 'poster' => ( ! empty( $image_url ) ) ? 'poster:' . esc_url( $image_url ) : null - ); - - // Add our videos to a string - $video_output = array(); - foreach( $video_types as $video => $val ) { - $video_output[] = $val; - } - - $video = null; - // Video variable - if ( $video_enabled && '' !== $options[ 'content' ] ) { - - $ext = ( ! empty( $image_url ) ) ? pathinfo( $image_url, PATHINFO_EXTENSION ) : false; - $video_options = array(); - - if ( $ext ) { - $video_options[ 'posterType' ] = 'posterType:' . $ext; - } else { - $video_options[ 'posterType' ] = 'posterType: none'; - } - - $video_options[ 'className' ] = 'className:generate-page-header-video'; - - if ( apply_filters( 'generate_page_header_video_loop', true ) ) { - $video_options[ 'loop' ] = 'loop:true'; - } else { - $video_options[ 'loop' ] = 'loop:false'; - } - - if ( apply_filters( 'generate_page_header_video_muted', true ) ) { - $video_options[ 'muted' ] = 'muted:true'; - } else { - $video_options[ 'muted' ] = 'muted:false'; - } - - $video_options[ 'autoplay' ] = 'autoplay:false'; - - $video = sprintf( ' data-vide-bg="%1$s" data-vide-options="%2$s"', - implode( ', ', array_filter( $video_output ) ), - implode( ', ', array_filter( $video_options ) ) - ); - } - - // Write a class if we're merging the header - $combined_content = ( '' !== $options[ 'merge' ] ) ? ' generate-combined-page-header' : ''; - - // If content is set, show it - if ( '' !== $options[ 'content' ] && false !== $options[ 'content' ] ) { - printf( - '
            -
            ', - ( 'fluid' == $options[ 'container_type' ] ) ? $video : null, - $content_class . $parallax . $full_screen . $vertical_center_container . $container_type . $combined_content . ' generate-page-header generate-content-header', - ( 'fluid' !== $options[ 'container_type' ] ) ? $video : null, - $vertical_center, - ( '' !== $options[ 'merge' ] ) ? 'generate-merged-header' : '', - ( ! empty( $parallax ) ) ? 'data-parallax-speed="' . esc_attr( $parallax_speed ) . '"' : '', - $options[ 'page_header_id' ] - ); - } - - do_action( 'generate_inside_merged_page_header' ); - } -} - -if ( ! function_exists( 'generate_page_header_area' ) ) { - /** - * Build our entire page header. - * - * @since 0.1 - * - * @param $image_class The class to give our element if it's an image. - * @param $content_class The class to give our element if it's content. - */ - function generate_page_header_area( $image_class, $content_class ) { - // Get our options - $options = generate_page_header_get_options(); - - // Get out of here if we don't have content or an image - if ( '' == $options[ 'content' ] && ! generate_page_header_get_image( 'ALL' ) ) { - return; - } - - $inner_container = ( '' == $options[ 'inner_container' ] ) ? ' grid-container grid-parent' : ''; - - do_action( 'generate_before_page_header' ); - - // If an image is set and no content is set - if ( '' == $options[ 'content' ] && generate_page_header_get_image( 'ALL' ) ) { - - printf( - '
            - %2$s - %4$s - %3$s -
            ', - esc_attr( $image_class ) . $inner_container . ' generate-page-header', - ( ! empty( $options[ 'image_link' ] ) ) ? '' : null, - ( ! empty( $options[ 'image_link' ] ) ) ? '' : null, - generate_page_header_get_image_output() - ); - - } - - // If content is set, show it - if ( '' !== $options[ 'content' ] && false !== $options[ 'content' ] ) { - // If we're not merging our header, we can start the container here - // If we were merging, the container would be added in the generate_before_header hook - if ( '' == $options[ 'merge' ] ) { - generate_page_header_area_start_container( 'page-header-image', 'page-header-content' ); - } - - // Replace any found template tags - $options[ 'content' ] = generate_page_header_template_tags( $options[ 'content' ] ); - - // Print the rest of our page header HTML - // The starting elements are inside generate_page_header_area_start_container() - printf ( '
            -
            - %4$s - %6$s - %5$s -
            -
            -
            -
            ', - ( '' !== $options[ 'merge' ] ) ? 'generate-combined-content' : '', - $inner_container, - ( '' !== $options[ 'merge' ] ) ? 'generate-inside-combined-content' : 'generate-inside-page-header-content', - ( ! empty( $options[ 'add_padding' ] ) ) ? '
            ' : null, - ( ! empty( $options[ 'add_padding' ] ) ) ? '
            ' : null, - ( ! empty( $options[ 'autop' ] ) ) ? do_shortcode( wpautop( $options[ 'content' ] ) ) : do_shortcode( $options[ 'content' ] ) - ); - } - - do_action( 'generate_after_page_header' ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/post-image.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/post-image.php deleted file mode 100644 index b88250ad..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/post-image.php +++ /dev/null @@ -1,60 +0,0 @@ - - %2$s - %4$s - %3$s - ', - 'post-image page-header-post-image', - ( ! empty( $options[ 'image_link' ] ) ) ? '' : null, - ( ! empty( $options[ 'image_link' ] ) ) ? '' : null, - generate_page_header_get_image_output() - ); - } - - // If content is set, show it - if ( '' !== $options[ 'content' ] && false !== $options[ 'content' ] ) { - printf( - '
            -
            - %3$s - %5$s - %4$s -
            -
            ', - 'post-image generate-page-header generate-post-content-header page-header-post-image', - 'inside-page-header-container inside-post-content-header grid-container grid-parent', - ( ! empty( $options[ 'add_padding' ] ) ) ? '
            ' : null, - ( ! empty( $options[ 'add_padding' ] ) ) ? '
            ' : null, - ( ! empty( $options[ 'autop' ] ) ) ? do_shortcode( wpautop( $options[ 'content' ] ) ) : do_shortcode( $options[ 'content' ] ) - ); - } - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/post-type.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/post-type.php deleted file mode 100644 index 9768b43c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/page-header/functions/post-type.php +++ /dev/null @@ -1,236 +0,0 @@ - _x( 'Page Headers', 'Post Type General Name', 'gp-premium' ), - 'singular_name' => _x( 'Page Header', 'Post Type Singular Name', 'gp-premium' ), - 'menu_name' => __( 'Page Headers', 'gp-premium' ), - 'name_admin_bar' => __( 'Page Header', 'gp-premium' ), - 'archives' => __( 'Page Header Archives', 'gp-premium' ), - 'parent_item_colon' => __( 'Parent Page Header:', 'gp-premium' ), - 'all_items' => __( 'All Page Headers', 'gp-premium' ), - 'add_new_item' => __( 'Add New Page Header', 'gp-premium' ), - 'new_item' => __( 'New Page Header', 'gp-premium' ), - 'edit_item' => __( 'Edit Page Header', 'gp-premium' ), - 'update_item' => __( 'Update Page Header', 'gp-premium' ), - 'view_item' => __( 'View Page Header', 'gp-premium' ), - 'search_items' => __( 'Search Page Header', 'gp-premium' ), - 'insert_into_item' => __( 'Insert into Page Header', 'gp-premium' ), - 'uploaded_to_this_item' => __( 'Uploaded to this Page Header', 'gp-premium' ), - ); - $args = array( - 'label' => __( 'Page Header', 'gp-premium' ), - 'labels' => $labels, - 'supports' => array( 'title', 'thumbnail' ), - 'hierarchical' => false, - 'public' => false, - 'show_ui' => true, - 'show_in_menu' => function_exists( 'generate_premium_do_elements' ) ? false : true, - 'menu_position' => 100, - 'menu_icon' => 'dashicons-welcome-widgets-menus', - 'show_in_admin_bar' => false, - 'show_in_nav_menus' => false, - 'can_export' => true, - 'has_archive' => false, - 'exclude_from_search' => true, - 'publicly_queryable' => false, - 'capability_type' => 'page', - ); - register_post_type( 'generate_page_header', $args ); - - $post_types = get_post_types( array( 'public' => true ) ); - $term_args = array( - 'sanitize_callback' => 'int', - 'type' => 'string', - 'description' => '', - 'single' => true, - 'show_in_rest' => true, - ); - foreach ( $post_types as $type ) { - register_meta( $type, 'generate_page_header', $term_args ); - } - - $taxonomies = get_taxonomies( array( 'public' => true ) ); - if ( $taxonomies ) { - foreach ( $taxonomies as $taxonomy ) { - add_action( $taxonomy . '_add_form_fields', 'generate_page_header_tax_new_ph_field' ); - add_action( $taxonomy . '_edit_form_fields', 'generate_page_header_tax_edit_ph_field' ); - add_action( 'edit_' . $taxonomy, 'generate_page_header_tax_save_ph' ); - add_action( 'create_' . $taxonomy, 'generate_page_header_tax_save_ph' ); - } - } -} - -add_action( 'admin_menu', 'generate_old_page_header_options_page' ); -/** - * Add our submenu page to the Appearance tab. - * - * @since 1.7 - */ -function generate_old_page_header_options_page() { - if ( ! function_exists( 'generate_premium_do_elements' ) ) { - return; - } - - add_submenu_page( - 'themes.php', - esc_html__( 'Page Headers', 'gp-premium' ), - esc_html__( 'Page Headers', 'gp-premium' ), - 'manage_options', - 'edit.php?post_type=generate_page_header' - ); -} - -add_action( 'admin_head', 'generate_old_page_header_fix_menu' ); -/** - * Set our current menu in the admin while in the old Page Header pages. - * - * @since 1.7 - */ -function generate_old_page_header_fix_menu() { - if ( ! function_exists( 'generate_premium_do_elements' ) ) { - return; - } - - global $parent_file, $submenu_file, $post_type; - - $screen = get_current_screen(); - - if ( 'generate_page_header' === $post_type || 'appearance_page_page-header-global-locations' === $screen->base ) { - $parent_file = 'themes.php'; - $submenu_file = 'edit.php?post_type=gp_elements'; - } - - remove_submenu_page( 'themes.php', 'edit.php?post_type=generate_page_header' ); - remove_submenu_page( 'themes.php', 'page-header-global-locations' ); -} - -add_action( 'admin_head', 'generate_page_header_add_legacy_locations_button', 999 ); -/** - * Add legacy buttons to our new GP Elements post type. - * - * @since 1.7 - */ -function generate_page_header_add_legacy_locations_button() { - if ( ! function_exists( 'generate_premium_do_elements' ) ) { - return; - } - - $screen = get_current_screen(); - - if ( 'generate_page_header' === $screen->post_type ) : - ?> - - post_type && 'edit' === $screen->base ) : - ?> - - -
            - - -
            - - - - - - - - - - - tag in metabox -* Elements: Add generate_elements_metabox_ajax_allow_editors filter -* Elements: Add new 3.0 hooks to hook selector -* Elements: Re-add generate_elements_custom_args filter -* Menu Plus: Better prepare navigation as header for GP 3.0 -* Menu Plus: Better prepare Off-Canvas Panel for GP 3.0 -* Menu Plus: Better prepare sticky navigation for GP 3.0 -* Menu Plus: Add has-menu-bar-items class to mobile header if needed -* Menu Plus: Add is-logo-image class to all site logos -* Menu Plus: Fix mobile header alignment when it has menu bar items -* Secondary Nav: Better prepare sticky navigation for GP 3.0 -* Secondary Nav: Fix hidden navigation widget in top bar when merged with secondary nav -* Sites: Improve the option-only import feature -* Sites: Improve the refresh sites button functionality -* Sites: Improve the undo site import functionality -* Sites: Fix Elementor site import issues -* Sites: Re-add Elementor sites to library -* Spacing: Better prepare Customizer live preview for GP 3.0 -* Spacing: Fix blog column spacing Customizer live preview -* Spacing: Stop handling mobile header, widget and footer widget features added in GP 3.0 -* Typography: Add mobile font size control for H3 (when using GP 3.0) -* Typography: Add mobile font size control for H4 (when using GP 3.0) -* Typography: Add mobile font size control for H5 (when using GP 3.0) -* Typography: Allow empty tablet and mobile site title font size values -* Typography: Make menu toggle CSS selector specific to primary navigation -* WooCommerce: Use CSS for secondary product image functionality instead of JS -* WooCommerce: Only load .js file if needed -* WooCommerce: Fix quantity box functionality when multiple quantity boxes exist on the page -* General: Improve alpha color picker script for better 5.5 compatibility -* General: Move child theme stylesheet after dynamic stylesheet if enabled -* General: Update gp-premium-de_DE.mo -* General: Update gp-premium-es_ES.mo -* General: Update gp-premium-fi.mo -* General: Update gp-premium-pt_PT.mo -* General: Update gp-premium-sv_SE.mo - -= 1.11.3 = -* Blog: Set widths to grid-sizer element -* Elements: Fix legacy Page Header/Hooks buttons in the Elements dashboard -* Page Header: Replace .load() with .on('load') -* Page Header: Fix color picker error in WP 5.5 - -= 1.11.2 = -* Blog: Remove negative featured image top margin from columns when using one container -* Blog: Fix infinite scroll items loading above viewport when using columns -* Blog: Fix infinite scroll featured images not displaying in Safari -* Elements: Prevent error in editor when generate_get_option() function doesn't exist -* General: Load inline CSS in previews when using external CSS option -* General: Update gp-premium-es_ES.mo -* General: Update gp-premium-pt_PT.mo - -= 1.11.1 = -* Elements: Remove stray quote character in Layout Element metabox -* Sections: Fix color picker JS error in WP 5.5 -* General: Fix external CSS option not removing inline CSS in some cases - -= 1.11.0 = -* New: Block Elements -* New: Apply Layout Element options to the block editor if set -* New: Generate dynamic CSS in an external file -* Blog: Separate CSS and load only when needed -* Blog: Add column width classes to stylesheet -* Blog: Disable featured image itemprop if microdata is disabled -* Blog: Add generate_blog_masonry_init filter -* Blog: Add generate_blog_infinite_scroll_init filter -* Blog: Fix archive page header overlap when using no featured image padding/one container -* Blog: Replace screen reader text with aria-label in read more buttons -* Disable Elements: Add option to disable the Mobile Header -* Disable Elements: Disable top bar disables it even when combined with Secondary Nav -* Disable Elements: Use generate_show_post_navigation filter to disable single post navigation -* Elements: Use full hook name with generate_ prefix in dropdown -* Elements: Rebuild how Element types are chosen -* Elements: Add chosen hook under type column in edit.php -* Menu Plus: Add generate_after_mobile_header_menu_button filter -* Menu Plus: Add sticky placeholder only when nav becomes sticky -* Menu Plus: Add class to sticky nav when scrolling up -* Menu Plus: Fix navigation branding/mobile header layout when using RTL languages -* Page Header: Prevent PHP notices -* Secondary Nav: Clean up CSS -* Secondary Nav: Add generate_after_secondary_navigation hook -* Secondary Nav: Add generate_before_secondary_navigation hook -* Secondary Nav: Integrate with future flexbox option -* Secondary Nav: Add has-top-bar class if needed -* Secondary Nav: Add screen reader text to mobile menu toggle if no text exists -* Secondary Nav: Remove microdata if disabled -* Secondary Nav: Add generate_secondary_menu_bar_items hook -* Spacing: Set sidebar width in Customizer for future flexbox option -* WooCommerce: Add generate_woocommerce_show_add_to_cart_panel filter -* WooCommerce: Integrate with future flexbox option -* WooCommerce: Ensure WC()->cart is set -* WooCommerce: Remove left margin from SVG menu cart icon -* WooCommerce: Show sticky add to cart panel on sold individually products -* WooCommerce: Remove bottom margin from related/upsell products -* WooCommerce: Fix cart menu item spacing in RTL languages -* WooCommerce: Fix menu item cart dropdown design in RTL languages -* General: Update selectWoo -* General: Update select2 -* General: Run all CSS through PostCSS -* General: Fix various text domains -* General: Fix JS error when toggling nav as header option without Colors/Typography modules -* General: Update all translations over 90% complete -* General: PHP cleanup/coding standards -* General: Add off_canvas_desktop_toggle_label to wpml-config.xml - -= 1.10.0 = -* Blog: Remove existing on-the-fly featured image resizer (Image Processing Queue) -* Blog: Choose from existing image sizes for featured images -* Blog: Use CSS to further resize featured images if necessary -* Blog: Fix edge case persistent transient bug with old image resizer -* Elements: Fix broken closing element in metabox -* General: Change scroll variable to gpscroll in smooth scroll script to avoid conflicts -* General: Update responsive widths in Customizer -* General: Fix responsive Customizer views when using RTL -* Menu Plus: Don't output sticky nav branding if sticky nav is disabled -* Menu Plus: Fix focus when off canvas overlay is opened (a11y) -* Menu Plus: Fix sticky navigation jump when navigation branding is in use -* Sections: Fix visible block editor when Sections are enabled -* WooCommerce: Use minmax in grid template definitions to fix overflow issue -* WooCommerce: Prevent add to cart panel interfering with back to top button on mobile -* WooCommerce: WooCommerce: Fix secondary image position if HTML isn't ordered correctly -* General: Add/update all translations over 50% complete. Big thanks to all contributors! -* Translation: Added Arabic - thank you anass! -* Translation: Added Bengali - thank you gtmroy! -* Translation: Added Spanish (Spain) - thank you davidperez (closemarketing.es)! -* Translation: Added Spanish (Argentina) - thank you bratorr! -* Translation: Added Finnish - thank you Stedi! -* Translation: Add Dutch - thank you Robin! -* Translation: Added Ukrainian - thank you EUROMEDIA! -* Translation: Vietnamese added - thank you themevi! - -= 1.9.1 = -* Blog: Fix "null" in infinite scroll load more button text -* WooCommerce: Fix hidden added to cart panel on mobile when sticky nav active -* WooCommerce: Fix missing SVG icon in mobile added to cart panel - -= 1.9.0 = -* Blog: Support SVG icon feature -* Colors: Add navigation search color options -* Disable Elements: Disable mobile menu in Mobile Header if nav is disabled -* Elements: Add wp_body_open hook -* Elements: Allow 0 mobile padding in Elements -* Elements: Add generate_elements_admin_menu_capability filter -* Elements: Add generate_page_hero_css_output filter -* Elements: Prevent error in Header Element if taxonomy doesn't exist -* Elements: Fix double logo when Header Element has logo + using nav as header -* Elements: Fix mobile header logo not replacing if merge is disabled -* Elements: Fix missing arrow in Choose Element Type select in WP 5.3 -* Elements: Add generate_inside_site_container hook option -* Elements: Add generate_after_entry_content hook option -* Menu Plus: Add off canvas desktop toggle label option -* Menu Plus: Add generate_off_canvas_toggle_output filter -* Menu Plus: Support SVG icon feature -* Menu Plus: Fix sticky navigation overlapping BB controls -* Menu Plus: Add align-items: center to nav as header, mobile header and sticky nav with branding -* Sections: Fix text/visual switch bug in Firefox -* Sites: Add option to revert site import -* Sites: Increase site library limit to 100 -* Spacing: Add live preview to group container padding -* Typography: Add tablet site title/navigation font size options -* Typography: Add archive post title weight, transform, font size and line height -* Typography: Add single content title weight, transform, font size and line height -* Typography: Only call all google fonts once in the Customizer -* Typography: Get Google fonts from readable JSON list -* Typography: Make sure font settings aren't lost if list is changed -* Typography: Only call generate_get_all_google_fonts if needed -* WooCommerce: Add columns gap options (desktop, tablet, mobile) -* WooCommerce: Add tablet column options -* WooCommerce: Add related/upsell tablet column options -* WooCommerce: Support SVG icon feature -* WooCommerce: Prevent empty added to cart panel on single products -* WooCommerce: Fix woocommerce-ordering arrow in old FF versions -* WooCommerce: Make item/items string translatable -* General: Better customizer device widths -* General: Use generate_premium_get_media_query throughout modules -* General: Improve Customizer control styling - -= 1.8.3 = -* Menu Plus: Use flexbox for center aligned nav with nav branding -* Menu Plus: Center overlay off canvas exit button on mobile -* Menu Plus: Add alt tag to sticky nav logo -* Menu Plus: Set generate_not_mobile_menu_media_query filter based on mobile menu breakpoint -* Sections: Remember when text tab is active -* Sections: Disable visual editor if turned off in profile -* Typography: Add generate_google_font_display filter -* WooCommerce: Fix single product sidebar layout metabox option -* WooCommerce: Reduce carousel thumbnail max-width to 100px to match new thumbnail sizes - -= 1.8.2 = -* Elements: Use Page Hero site title color for mobile header site title -* Menu Plus: Give mobile header site title more left spacing -* Menu Plus: Fix nav search icon in sticky navigation when using nav branding in Firefox -* Site Library: Show Site Library tab even if no sites exist -* Site Library: Show an error message in Site Library if no sites exist -* Typography: Remove reference to generate_get_navigation_location() function -* WooCommerce: Remove quantity field arrows when using quantity buttons in Firefox -* WooCommerce: Remove extra border when loading quantity buttons -* WooCommerce: Use get_price_html() is sticky add to cart panel - -= 1.8.1 = -* Menu Plus: Revert sticky nav duplicate ID fix due to Cyrillic script bug - -= 1.8 = -* Blog: Apply columns filter to masonry grid sizer -* Colors: Merge Footer Widgets and Footer controls in Color panel -* Colors: Remove edit_theme_options capability to Customizer controls (set by default) -* Disable Elements: Make sure mobile header is disabled when primary navigation is disabled -* Elements: Add content width option in Layout Element -* Elements: Fix mobile header logo when mobile menu toggled -* Elements: Add generate_page_hero_location filter -* Elements: Add generate_elements_show_object_ids filter to show IDs in Display Rule values -* Elements: Prevent merged header wrap from conflicting with Elementor controls -* Elements: Change Container tab name to Content -* Elements: Add woocommerce_share option to Hooks -* Elements: Improve WPML compatibility -* Elements: Improve Polylang compatibility -* Elements: Prevent PHP notices when adding taxonomy locations to non-existent archives -* Elements: Add generate_mobile_cart_items hook to hook list -* Elements: Add generate_element_post_id filter -* Elements: Escape HTML elements inside Element textarea -* Elements: Add Beaver Builder templates to the Display Rules -* Menu Plus: Add mobile header breakpoint option -* Menu Plus: Add off canvas overlay option -* Menu Plus: Add navigation as header option -* Menu Plus: Remove navigation logo option if navigation as header set -* Menu Plus: Add sticky navigation logo option -* Menu Plus: Allow site title in mobile header instead of logo -* Menu Plus: Add option to move exit button inside the off canvas panel -* Menu Plus: Change Slideout Navigation name to Off Canvas Panel -* Menu Plus: Only re-focus after slideout close on escape key -* Menu Plus: Give close slideout event a name so it can be removed -* Menu Plus: Remove invalid transition-delay -* Menu Plus: Improve slideout overlay transition -* Menu Plus: Add mobile open/close icons to GPP font -* Menu Plus: Allow dynamic widget classes in off canvas panel (fixes WC range slider widget issue) -* Menu Plus: Basic compatibility with future SVG icons -* Menu Plus: Prevent duplicate IDs when sticky navigation is cloned -* Secondary Nav: Add dropdown direction option -* Secondary Nav: Basic compatibility with future SVG icons -* Sections: Fix section editor issues in WP 5.0 -* Sections: Show Better Font Awesome icon in editor -* Sites: Re-design UI -* Sites: Add option to activate as a module like all the other modules -* Sites: Don't show backup options button if no options exist -* Sites: Make JS action classes more specific to the site library -* Sites: Set mime types of content.xml and widgets.wie -* Spacing: Add header padding option for mobile -* Spacing: Add widget padding option for mobile -* Spacing: Add footer widgets padding option for mobile -* Spacing: Add content separator option -* Spacing: Apply mobile menu item width to mobile bar only -* WooCommerce: Add option for mini cart in the menu -* WooCommerce: Add option to open off overlay panel on add to cart -* WooCommerce: Add option to open sticky add to cart panel on single products -* WooCommerce: Add option to add +/- buttons to the quantity fields -* WooCommerce: Add option to show number of items in cart menu item -* WooCommerce: Add option to choose single product image area width -* WooCommerce: Add color options for price slider widget -* WooCommerce: Use CSS grid for the product archives -* WooCommerce: Horizontally align add to cart buttons -* WooCommerce: Re-design the cart widget -* WooCommerce: Tighten up product info spacing -* WooCommerce: Improve product tab design to look more like tabs -* WooCommerce: Simplify single product image display -* WooCommerce: Use flexbox for quantity/add to cart alignment -* WooCommerce: Improve rating star styles -* WooCommerce: Use product alignment setting for related/upsell products -* WooCommerce: Remove bottom margin from product image -* WooCommerce: Organize colors in the Customizer -* WooCommerce: Remove title attribute from menu cart item -* WooCommerce: Improve coupon field design -* WooCommerce: Improve result count/ordering styling -* WooCommerce: Add gap around WC single product images -* WooCommerce: Remove arrow from checkout button -* WooCommerce: Hide view cart link on add to cart click -* WooCommerce: Organize CSS -* Introduce in-Customizer shortcuts -* Add generate_disable_customizer_shortcuts filter diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/fields/secondary-navigation.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/fields/secondary-navigation.php deleted file mode 100644 index d2bffea0..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/fields/secondary-navigation.php +++ /dev/null @@ -1,174 +0,0 @@ - a, .secondary-navigation .main-nav ul li:not([class*="current-menu-"]):focus > a, .secondary-navigation .main-nav ul li.sfHover:not([class*="current-menu-"]) > a, .secondary-navigation .menu-bar-item:hover > a, .secondary-navigation .menu-bar-item.sfHover > a'; - $menu_current_selectors = '.secondary-navigation .main-nav ul li[class*="current-menu-"] > a'; - $submenu_hover_selectors = '.secondary-navigation .main-nav ul ul li:not([class*="current-menu-"]):hover > a, .secondary-navigation .main-nav ul ul li:not([class*="current-menu-"]):focus > a, .secondary-navigation .main-nav ul ul li.sfHover:not([class*="current-menu-"]) > a'; - $submenu_current_selectors = '.secondary-navigation .main-nav ul ul li[class*="current-menu-"] > a'; - - GeneratePress_Customize_Field::add_title( - 'generate_secondary_navigation_colors_title', - array( - 'section' => 'generate_colors_section', - 'title' => __( 'Secondary Navigation', 'gp-premium' ), - 'choices' => array( - 'toggleId' => 'secondary-navigation-colors', - ), - ) - ); - - // Navigation background group. - GeneratePress_Customize_Field::add_color_field_group( - 'secondary_navigation_background', - 'generate_colors_section', - 'secondary-navigation-colors', - array( - 'generate_secondary_nav_settings[navigation_background_color]' => array( - 'default_value' => $secondary_color_defaults['navigation_background_color'], - 'label' => __( 'Navigation Background', 'gp-premium' ), - 'tooltip' => __( 'Choose Initial Color', 'gp-premium' ), - 'element' => '.secondary-navigation', - 'property' => 'background-color', - 'hide_label' => false, - ), - 'generate_secondary_nav_settings[navigation_background_hover_color]' => array( - 'default_value' => $secondary_color_defaults['navigation_background_hover_color'], - 'label' => __( 'Navigation Background Hover', 'gp-premium' ), - 'tooltip' => __( 'Choose Hover Color', 'gp-premium' ), - 'element' => $menu_hover_selectors, - 'property' => 'background-color', - 'hide_label' => true, - ), - 'generate_secondary_nav_settings[navigation_background_current_color]' => array( - 'default_value' => $secondary_color_defaults['navigation_background_current_color'], - 'label' => __( 'Navigation Background Current', 'gp-premium' ), - 'tooltip' => __( 'Choose Current Color', 'gp-premium' ), - 'element' => $menu_current_selectors, - 'property' => 'background-color', - 'hide_label' => true, - ), - ) - ); - - // Navigation text group. - GeneratePress_Customize_Field::add_color_field_group( - 'secondary_navigation_text', - 'generate_colors_section', - 'secondary-navigation-colors', - array( - 'generate_secondary_nav_settings[navigation_text_color]' => array( - 'default_value' => $secondary_color_defaults['navigation_text_color'], - 'label' => __( 'Navigation Text', 'gp-premium' ), - 'tooltip' => __( 'Choose Initial Color', 'gp-premium' ), - 'element' => '.secondary-navigation .main-nav ul li a, .secondary-navigation .menu-toggle, .secondary-navigation button.menu-toggle:hover, .secondary-navigation button.menu-toggle:focus, .secondary-navigation .mobile-bar-items a, .secondary-navigation .mobile-bar-items a:hover, .secondary-navigation .mobile-bar-items a:focus, .secondary-navigation .menu-bar-items', - 'property' => 'color', - 'hide_label' => false, - ), - 'generate_secondary_nav_settings[navigation_text_hover_color]' => array( - 'default_value' => $secondary_color_defaults['navigation_text_hover_color'], - 'label' => __( 'Navigation Text Hover', 'gp-premium' ), - 'tooltip' => __( 'Choose Hover Color', 'gp-premium' ), - 'element' => $menu_hover_selectors, - 'property' => 'color', - 'hide_label' => true, - ), - 'generate_secondary_nav_settings[navigation_text_current_color]' => array( - 'default_value' => $secondary_color_defaults['navigation_text_current_color'], - 'label' => __( 'Navigation Text Current', 'gp-premium' ), - 'tooltip' => __( 'Choose Current Color', 'gp-premium' ), - 'element' => $menu_current_selectors, - 'property' => 'color', - 'hide_label' => true, - ), - ) - ); - - // Sub-Menu background group. - GeneratePress_Customize_Field::add_color_field_group( - 'secondary_navigation_submenu_background', - 'generate_colors_section', - 'secondary-navigation-colors', - array( - 'generate_secondary_nav_settings[subnavigation_background_color]' => array( - 'default_value' => $secondary_color_defaults['subnavigation_background_color'], - 'label' => __( 'Sub-Menu Background', 'gp-premium' ), - 'tooltip' => __( 'Choose Initial Color', 'gp-premium' ), - 'element' => '.secondary-navigation ul ul', - 'property' => 'background-color', - 'hide_label' => false, - ), - 'generate_secondary_nav_settings[subnavigation_background_hover_color]' => array( - 'default_value' => $secondary_color_defaults['subnavigation_background_hover_color'], - 'label' => __( 'Sub-Menu Background Hover', 'gp-premium' ), - 'tooltip' => __( 'Choose Hover Color', 'gp-premium' ), - 'element' => $submenu_hover_selectors, - 'property' => 'background-color', - 'hide_label' => true, - ), - 'generate_secondary_nav_settings[subnavigation_background_current_color]' => array( - 'default_value' => $secondary_color_defaults['subnavigation_background_current_color'], - 'label' => __( 'Sub-Menu Background Current', 'gp-premium' ), - 'tooltip' => __( 'Choose Current Color', 'gp-premium' ), - 'element' => $submenu_current_selectors, - 'property' => 'background-color', - 'hide_label' => true, - ), - ) - ); - - // Sub-Menu text group. - GeneratePress_Customize_Field::add_color_field_group( - 'secondary_navigation_submenu_text', - 'generate_colors_section', - 'secondary-navigation-colors', - array( - 'generate_secondary_nav_settings[subnavigation_text_color]' => array( - 'default_value' => $secondary_color_defaults['subnavigation_text_color'], - 'label' => __( 'Sub-Menu Text', 'gp-premium' ), - 'tooltip' => __( 'Choose Initial Color', 'gp-premium' ), - 'element' => '.secondary-navigation .main-nav ul ul li a', - 'property' => 'color', - 'hide_label' => false, - ), - 'generate_secondary_nav_settings[subnavigation_text_hover_color]' => array( - 'default_value' => $secondary_color_defaults['subnavigation_text_hover_color'], - 'label' => __( 'Sub-Menu Text Hover', 'gp-premium' ), - 'tooltip' => __( 'Choose Hover Color', 'gp-premium' ), - 'element' => $submenu_hover_selectors, - 'property' => 'color', - 'hide_label' => true, - ), - 'generate_secondary_nav_settings[subnavigation_text_current_color]' => array( - 'default_value' => $secondary_color_defaults['subnavigation_text_current_color'], - 'label' => __( 'Sub-Menu Text Current', 'gp-premium' ), - 'tooltip' => __( 'Choose Current Color', 'gp-premium' ), - 'element' => $submenu_current_selectors, - 'property' => 'color', - 'hide_label' => true, - ), - ) - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css.php deleted file mode 100644 index 370c5ef8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css.php +++ /dev/null @@ -1,138 +0,0 @@ -_selector ) { - $this->add_selector_rules_to_output(); - } - - $this->_selector = $selector; - return $this; - } - - /** - * Adds a css property with value to the css output. - * - * @access public - * @since 1.0 - * - * @param string $property - the css property. - * @param string $value - the value to be placed with the property. - * @param string $og_default - check to see if the value matches the default. - * @param string $unit - the unit for the value (px). - * @return $this - */ - public function add_property( $property, $value, $og_default = false, $unit = false ) { - // Add our unit to the value if it exists. - if ( $unit && '' !== $unit ) { - $value = $value . $unit; - if ( '' !== $og_default ) { - $og_default = $og_default . $unit; - } - } - - // If we don't have a value or our value is the same as our og default, bail. - if ( empty( $value ) || $og_default == $value ) { - return false; - } - - $this->_css .= $property . ':' . $value . ';'; - return $this; - } - - /** - * Adds the current selector rules to the output variable - * - * @access private - * @since 1.0 - * - * @return $this - */ - private function add_selector_rules_to_output() { - if ( ! empty( $this->_css ) ) { - $this->_selector_output = $this->_selector; - $selector_output = sprintf( '%1$s{%2$s}', $this->_selector_output, $this->_css ); - - $this->_output .= $selector_output; - - // Reset the css. - $this->_css = ''; - } - - return $this; - } - - /** - * Returns the minified css in the $_output variable - * - * @access public - * @since 1.0 - * - * @return string - */ - public function css_output() { - // Add current selector's rules to output. - $this->add_selector_rules_to_output(); - - // Output minified css. - return $this->_output; - } - - } -endif; diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main-mobile.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main-mobile.css deleted file mode 100644 index ed9b708c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main-mobile.css +++ /dev/null @@ -1,125 +0,0 @@ -.secondary-navigation.toggled ul ul { - transition: 0s; - visibility: hidden; - float: none; -} - -.secondary-navigation.toggled ul ul.toggled-on { - visibility: visible; -} - -.secondary-navigation.toggled .main-nav ul ul { - position: relative; - top: 0; - left: 0; - width: 100%; - box-shadow: none; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); -} - -.secondary-navigation.toggled .main-nav ul ul li:last-child > ul { - border-bottom: 0; -} - -.secondary-navigation.toggled .main-nav ul ul.toggled-on { - position: relative; - top: 0; - left: auto !important; - right: auto !important; - width: 100%; - pointer-events: auto; - height: auto; - opacity: 1; - display: block; -} - -.secondary-navigation.toggled .main-nav > ul { - display: block; -} - -.secondary-navigation.toggled .main-nav .sf-menu > li { - float: none; - clear: both; - display: block !important; - text-align: left !important; -} - -.secondary-navigation.toggled .main-nav .sf-menu > li.hide-on-mobile { - display: none !important; -} - -.secondary-navigation.toggled .dropdown-menu-toggle:before { - content: "\f107" !important; -} - -.secondary-navigation.toggled .sfHover > a .dropdown-menu-toggle:before { - content: "\f106" !important; -} - -.secondary-navigation.toggled .menu-item-has-children .dropdown-menu-toggle { - float: right; -} - -.dropdown-hover .secondary-navigation.toggled ul li:hover > ul, -.dropdown-hover .secondary-navigation.toggled ul li.sfHover > ul { - transition-delay: 0s; -} - -.rtl .secondary-navigation.toggled .main-nav .sf-menu > li { - text-align: right !important; -} - -@media (max-width: 768px) { - .secondary-navigation .menu-toggle { - display: block; - } - .secondary-navigation ul, - .secondary-navigation:not(.toggled) .main-nav > ul { - display: none; - } - .secondary-navigation.toggled .main-nav { - flex-basis: 100%; - order: 3; - } - .secondary-nav-aligned-left .secondary-navigation.has-top-bar .menu-toggle { - text-align: left; - } - .secondary-nav-aligned-left .secondary-navigation .top-bar { - order: 2; - } - .secondary-nav-aligned-right .secondary-navigation.has-top-bar .menu-toggle { - text-align: right; - } - .secondary-navigation.has-top-bar .top-bar .inside-top-bar .widget { - margin: 0 20px; - } - .secondary-nav-aligned-center .secondary-navigation .top-bar { - flex-basis: 100%; - } - .secondary-nav-float-right .secondary-navigation { - margin-left: 0; - width: 100%; - margin-top: 1.5em; - } - .secondary-nav-float-right .header-widget { - margin-left: auto; - } - .secondary-nav-float-left .secondary-navigation, - .secondary-nav-float-left .multi-navigation-wrapper { - margin-left: 0; - width: 100%; - margin-top: 1.5em; - } - .secondary-nav-float-left:not(.nav-float-right) .header-widget { - margin-left: auto; - margin-right: auto; - order: unset; - } - .secondary-nav-float-left .site-logo, - .secondary-nav-float-left .site-branding { - order: unset; - } - .secondary-navigation.has-top-bar .inside-navigation, .secondary-navigation.has-menu-bar-items .inside-navigation { - justify-content: space-between; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main-mobile.min.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main-mobile.min.css deleted file mode 100644 index 567c5024..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main-mobile.min.css +++ /dev/null @@ -1 +0,0 @@ -.secondary-navigation.toggled ul ul{transition:0s;visibility:hidden;float:none}.secondary-navigation.toggled ul ul.toggled-on{visibility:visible}.secondary-navigation.toggled .main-nav ul ul{position:relative;top:0;left:0;width:100%;box-shadow:none;border-bottom:1px solid rgba(0,0,0,.05)}.secondary-navigation.toggled .main-nav ul ul li:last-child>ul{border-bottom:0}.secondary-navigation.toggled .main-nav ul ul.toggled-on{position:relative;top:0;left:auto!important;right:auto!important;width:100%;pointer-events:auto;height:auto;opacity:1;display:block}.secondary-navigation.toggled .main-nav>ul{display:block}.secondary-navigation.toggled .main-nav .sf-menu>li{float:none;clear:both;display:block!important;text-align:left!important}.secondary-navigation.toggled .main-nav .sf-menu>li.hide-on-mobile{display:none!important}.secondary-navigation.toggled .dropdown-menu-toggle:before{content:"\f107"!important}.secondary-navigation.toggled .sfHover>a .dropdown-menu-toggle:before{content:"\f106"!important}.secondary-navigation.toggled .menu-item-has-children .dropdown-menu-toggle{float:right}.dropdown-hover .secondary-navigation.toggled ul li.sfHover>ul,.dropdown-hover .secondary-navigation.toggled ul li:hover>ul{transition-delay:0s}.rtl .secondary-navigation.toggled .main-nav .sf-menu>li{text-align:right!important}@media (max-width:768px){.secondary-navigation .menu-toggle{display:block}.secondary-navigation ul,.secondary-navigation:not(.toggled) .main-nav>ul{display:none}.secondary-navigation.toggled .main-nav{flex-basis:100%;order:3}.secondary-nav-aligned-left .secondary-navigation.has-top-bar .menu-toggle{text-align:left}.secondary-nav-aligned-left .secondary-navigation .top-bar{order:2}.secondary-nav-aligned-right .secondary-navigation.has-top-bar .menu-toggle{text-align:right}.secondary-navigation.has-top-bar .top-bar .inside-top-bar .widget{margin:0 20px}.secondary-nav-aligned-center .secondary-navigation .top-bar{flex-basis:100%}.secondary-nav-float-right .secondary-navigation{margin-left:0;width:100%;margin-top:1.5em}.secondary-nav-float-right .header-widget{margin-left:auto}.secondary-nav-float-left .multi-navigation-wrapper,.secondary-nav-float-left .secondary-navigation{margin-left:0;width:100%;margin-top:1.5em}.secondary-nav-float-left:not(.nav-float-right) .header-widget{margin-left:auto;margin-right:auto;order:unset}.secondary-nav-float-left .site-branding,.secondary-nav-float-left .site-logo{order:unset}.secondary-navigation.has-menu-bar-items .inside-navigation,.secondary-navigation.has-top-bar .inside-navigation{justify-content:space-between}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main.css deleted file mode 100644 index 9540b8a4..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main.css +++ /dev/null @@ -1,377 +0,0 @@ -.secondary-navigation { - z-index: 99; - padding: 0; -} - -.secondary-navigation .inside-navigation { - display: flex; - align-items: center; - flex-wrap: wrap; - justify-content: space-between; -} - -.secondary-navigation ul { - list-style: none; - margin: 0; - padding-left: 0; -} - -.secondary-navigation li { - position: relative; -} - -.secondary-navigation a { - display: block; - text-decoration: none; -} - -.secondary-navigation ul ul { - display: block; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - float: left; - position: absolute; - left: -99999px; - opacity: 0; - z-index: 99999; - width: 200px; - text-align: left; - top: auto; - transition: opacity 80ms linear; - transition-delay: 0s; - pointer-events: none; - height: 0; - overflow: hidden; -} - -.secondary-navigation ul ul li { - width: 100%; -} - -.secondary-navigation ul ul li a { - line-height: normal; - font-size: 90%; -} - -.secondary-navigation.sub-menu-left ul ul { - box-shadow: -1px 1px 0 rgba(0, 0, 0, 0.1); -} - -.secondary-navigation.sub-menu-left .sub-menu { - right: 0; -} - -.secondary-navigation .main-nav > ul { - display: flex; - flex-wrap: wrap; -} - -.secondary-navigation .main-nav ul ul li a { - line-height: normal; - font-size: 12px; - padding-left: 20px; - padding-right: 20px; - padding-top: 10px; - padding-bottom: 10px; -} - -.secondary-navigation .main-nav ul li.menu-item-has-children > a { - padding-right: 0; - position: relative; -} - -.secondary-navigation .main-nav ul li a { - font-family: inherit; - font-weight: normal; - text-transform: none; - font-size: 13px; - padding-left: 20px; - padding-right: 20px; - line-height: 40px; -} - -.secondary-navigation .menu-toggle { - font-family: inherit; - font-weight: normal; - text-transform: none; - font-size: 13px; - padding-left: 20px; - padding-right: 20px; - line-height: 40px; - margin: 0; -} - -.secondary-navigation .menu-item-has-children .dropdown-menu-toggle { - padding-right: 20px; -} - -.secondary-navigation .menu-item-has-children ul .dropdown-menu-toggle { - padding-top: 10px; - padding-bottom: 10px; - margin-top: -10px; -} - -.secondary-navigation .secondary-menu-bar-items { - display: flex; - align-items: center; - font-size: 13px; -} - -.secondary-navigation .menu-bar-item { - position: relative; -} - -.secondary-navigation .menu-bar-item.search-item { - z-index: 20; -} - -.secondary-navigation .menu-bar-item > a { - font-family: inherit; - font-weight: normal; - text-transform: none; - font-size: 13px; - padding-left: 20px; - padding-right: 20px; - line-height: 40px; -} - -.dropdown-hover .secondary-navigation:not(.toggled) ul li:hover > ul, -.dropdown-hover .secondary-navigation:not(.toggled) ul li.sfHover > ul { - left: auto; - opacity: 1; - transition-delay: 150ms; - pointer-events: auto; - height: auto; - overflow: visible; -} - -.dropdown-hover .secondary-navigation:not(.toggled) ul ul li:hover > ul, -.dropdown-hover .secondary-navigation:not(.toggled) ul ul li.sfHover > ul { - left: 100%; - top: 0; -} - -.dropdown-hover .secondary-navigation.sub-menu-left:not(.toggled) ul ul li:hover > ul, -.dropdown-hover .secondary-navigation.sub-menu-left:not(.toggled) ul ul li.sfHover > ul { - right: 100%; - top: 0; - left: auto; -} - -.secondary-nav-float-right .header-widget { - margin-left: 20px; -} - -.secondary-nav-float-right .secondary-navigation { - margin-left: auto; -} - -.secondary-nav-float-right .secondary-navigation .main-nav ul ul li a { - line-height: normal; -} - -.secondary-nav-float-right .secondary-navigation ul ul ul { - top: 0; -} - -.secondary-nav-float-right .multi-navigation-wrapper { - margin-left: auto; -} - -.secondary-nav-float-left .secondary-navigation, -.secondary-nav-float-left .multi-navigation-wrapper { - margin-right: auto; -} - -.secondary-nav-float-left .site-logo, -.secondary-nav-float-left .site-branding { - order: 5; -} - -.secondary-nav-float-left:not(.nav-float-right) .header-widget { - order: -10; - margin-left: 0; - margin-right: 20px; -} - -.secondary-nav-float-left.nav-float-right .site-branding, -.secondary-nav-float-left.nav-float-right .site-logo { - margin-left: auto; - margin-right: auto; -} - -.secondary-nav-float-left.nav-float-right .inside-header .main-navigation, -.secondary-nav-float-left.nav-float-right .header-widget { - order: 10; -} - -.secondary-nav-float-right.nav-float-left .secondary-navigation { - order: 10; -} - -.multi-navigation-wrapper { - display: flex; - flex-direction: column; -} - -.widget-area .secondary-navigation li { - display: block; - float: none; - margin: 0; - padding: 0; - width: 100%; -} - -.widget-area .secondary-navigation ul ul { - left: 100%; - top: 0; - width: 220px; -} - -.secondary-nav-aligned-right .secondary-navigation .inside-navigation { - justify-content: flex-end; -} - -.secondary-nav-aligned-right.rtl .secondary-navigation .inside-navigation { - justify-content: flex-start; -} - -.secondary-nav-aligned-center .secondary-navigation .inside-navigation { - justify-content: center; -} - -.secondary-nav-aligned-center .secondary-navigation .main-nav > ul { - justify-content: center; -} - -.secondary-nav-aligned-left.rtl .secondary-navigation .inside-navigation { - justify-content: flex-end; -} - -.dropdown-click .secondary-navigation ul ul { - visibility: hidden; - float: none; -} - -.dropdown-click .secondary-navigation ul.toggled-on, -.dropdown-click .secondary-navigation ul li.sfHover > ul.toggled-on { - left: auto; - opacity: 1; - visibility: visible; - pointer-events: auto; - height: auto; - overflow: visible; -} - -.dropdown-click .secondary-navigation ul ul ul.toggled-on { - left: 0; - top: auto; - position: relative; - box-shadow: none; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); -} - -.dropdown-click .secondary-navigation ul ul li:last-child > ul.toggled-on { - border-bottom: 0; -} - -.dropdown-click .widget-area .secondary-navigation ul ul { - top: auto; - position: absolute; - float: none; - width: 100%; - left: -99999px; -} - -.dropdown-click .widget-area .secondary-navigation ul ul.toggled-on { - position: relative; - left: 0; - right: 0; -} - -.both-right .widget-area .secondary-navigation ul ul, -.right-sidebar .widget-area .secondary-navigation ul ul, -.both-sidebars .widget-area .inside-right-sidebar .secondary-navigation ul ul { - left: auto; - right: 100%; -} - -.dropdown-click.both-right .widget-area .secondary-navigation ul ul, -.dropdown-click.right-sidebar .widget-area .secondary-navigation ul ul, -.dropdown-click.both-sidebars .widget-area .inside-right-sidebar .secondary-navigation ul ul { - right: 0; -} - -.dropdown-hover .widget-area .secondary-navigation:not(.toggled) ul li:hover ul, -.dropdown-hover .widget-area .secondary-navigation:not(.toggled) ul li.sfHover > ul { - top: 0; - left: 100%; - width: 220px; -} - -.dropdown-hover.both-right .widget-area .secondary-navigation:not(.toggled) ul li:hover ul, -.dropdown-hover.both-right .widget-area .secondary-navigation:not(.toggled) ul li.sfHover ul, -.dropdown-hover.right-sidebar .widget-area .secondary-navigation:not(.toggled) ul li:hover ul, -.dropdown-hover.right-sidebar .widget-area .secondary-navigation:not(.toggled) ul li.sfHover ul, -.dropdown-hover.both-sidebars .widget-area .inside-right-sidebar .secondary-navigation:not(.toggled) ul li:hover ul, -.dropdown-hover.both-sidebars .widget-area .inside-right-sidebar .secondary-navigation:not(.toggled) ul li.sfHover ul { - right: 100%; - left: auto; -} - -.rtl .secondary-navigation ul ul { - float: right; - left: auto; - right: 0; - text-align: right; -} - -.rtl .secondary-navigation ul ul ul { - left: auto; - right: 100%; -} - -.rtl .secondary-navigation .menu-item-has-children ul .dropdown-menu-toggle { - transform: rotate(180deg); -} - -/* Top bar */ -.secondary-navigation.has-top-bar .menu-toggle, .secondary-navigation.has-menu-bar-items .menu-toggle { - flex-grow: 0; -} - -.secondary-navigation .top-bar { - background: transparent; -} - -.secondary-navigation .top-bar a { - display: inline; -} - -.secondary-navigation .inside-top-bar { - padding: 0; -} - -.secondary-nav-aligned-right .secondary-navigation .top-bar { - margin-right: auto; -} - -.secondary-nav-aligned-right .secondary-navigation .top-bar .inside-top-bar .widget { - margin: 0 10px; -} - -.secondary-nav-aligned-left .secondary-navigation .top-bar { - order: 2; - margin-left: auto; -} - -.secondary-nav-aligned-left .secondary-navigation .top-bar .inside-top-bar .widget { - margin-left: 10px; -} - -.secondary-nav-aligned-center .secondary-navigation.has-top-bar .inside-top-bar { - justify-content: center; -} - -.secondary-nav-aligned-center .secondary-navigation.has-top-bar .inside-navigation { - display: block; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main.min.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main.min.css deleted file mode 100644 index e21c11da..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/main.min.css +++ /dev/null @@ -1 +0,0 @@ -.secondary-navigation{z-index:99;padding:0}.secondary-navigation .inside-navigation{display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between}.secondary-navigation ul{list-style:none;margin:0;padding-left:0}.secondary-navigation li{position:relative}.secondary-navigation a{display:block;text-decoration:none}.secondary-navigation ul ul{display:block;box-shadow:0 1px 1px rgba(0,0,0,.1);float:left;position:absolute;left:-99999px;opacity:0;z-index:99999;width:200px;text-align:left;top:auto;transition:opacity 80ms linear;transition-delay:0s;pointer-events:none;height:0;overflow:hidden}.secondary-navigation ul ul li{width:100%}.secondary-navigation ul ul li a{line-height:normal;font-size:90%}.secondary-navigation.sub-menu-left ul ul{box-shadow:-1px 1px 0 rgba(0,0,0,.1)}.secondary-navigation.sub-menu-left .sub-menu{right:0}.secondary-navigation .main-nav>ul{display:flex;flex-wrap:wrap}.secondary-navigation .main-nav ul ul li a{line-height:normal;font-size:12px;padding-left:20px;padding-right:20px;padding-top:10px;padding-bottom:10px}.secondary-navigation .main-nav ul li.menu-item-has-children>a{padding-right:0;position:relative}.secondary-navigation .main-nav ul li a{font-family:inherit;font-weight:400;text-transform:none;font-size:13px;padding-left:20px;padding-right:20px;line-height:40px}.secondary-navigation .menu-toggle{font-family:inherit;font-weight:400;text-transform:none;font-size:13px;padding-left:20px;padding-right:20px;line-height:40px;margin:0}.secondary-navigation .menu-item-has-children .dropdown-menu-toggle{padding-right:20px}.secondary-navigation .menu-item-has-children ul .dropdown-menu-toggle{padding-top:10px;padding-bottom:10px;margin-top:-10px}.secondary-navigation .secondary-menu-bar-items{display:flex;align-items:center;font-size:13px}.secondary-navigation .menu-bar-item{position:relative}.secondary-navigation .menu-bar-item.search-item{z-index:20}.secondary-navigation .menu-bar-item>a{font-family:inherit;font-weight:400;text-transform:none;font-size:13px;padding-left:20px;padding-right:20px;line-height:40px}.dropdown-hover .secondary-navigation:not(.toggled) ul li.sfHover>ul,.dropdown-hover .secondary-navigation:not(.toggled) ul li:hover>ul{left:auto;opacity:1;transition-delay:150ms;pointer-events:auto;height:auto;overflow:visible}.dropdown-hover .secondary-navigation:not(.toggled) ul ul li.sfHover>ul,.dropdown-hover .secondary-navigation:not(.toggled) ul ul li:hover>ul{left:100%;top:0}.dropdown-hover .secondary-navigation.sub-menu-left:not(.toggled) ul ul li.sfHover>ul,.dropdown-hover .secondary-navigation.sub-menu-left:not(.toggled) ul ul li:hover>ul{right:100%;top:0;left:auto}.secondary-nav-float-right .header-widget{margin-left:20px}.secondary-nav-float-right .secondary-navigation{margin-left:auto}.secondary-nav-float-right .secondary-navigation .main-nav ul ul li a{line-height:normal}.secondary-nav-float-right .secondary-navigation ul ul ul{top:0}.secondary-nav-float-right .multi-navigation-wrapper{margin-left:auto}.secondary-nav-float-left .multi-navigation-wrapper,.secondary-nav-float-left .secondary-navigation{margin-right:auto}.secondary-nav-float-left .site-branding,.secondary-nav-float-left .site-logo{order:5}.secondary-nav-float-left:not(.nav-float-right) .header-widget{order:-10;margin-left:0;margin-right:20px}.secondary-nav-float-left.nav-float-right .site-branding,.secondary-nav-float-left.nav-float-right .site-logo{margin-left:auto;margin-right:auto}.secondary-nav-float-left.nav-float-right .header-widget,.secondary-nav-float-left.nav-float-right .inside-header .main-navigation{order:10}.secondary-nav-float-right.nav-float-left .secondary-navigation{order:10}.multi-navigation-wrapper{display:flex;flex-direction:column}.widget-area .secondary-navigation li{display:block;float:none;margin:0;padding:0;width:100%}.widget-area .secondary-navigation ul ul{left:100%;top:0;width:220px}.secondary-nav-aligned-right .secondary-navigation .inside-navigation{justify-content:flex-end}.secondary-nav-aligned-right.rtl .secondary-navigation .inside-navigation{justify-content:flex-start}.secondary-nav-aligned-center .secondary-navigation .inside-navigation{justify-content:center}.secondary-nav-aligned-center .secondary-navigation .main-nav>ul{justify-content:center}.secondary-nav-aligned-left.rtl .secondary-navigation .inside-navigation{justify-content:flex-end}.dropdown-click .secondary-navigation ul ul{visibility:hidden;float:none}.dropdown-click .secondary-navigation ul li.sfHover>ul.toggled-on,.dropdown-click .secondary-navigation ul.toggled-on{left:auto;opacity:1;visibility:visible;pointer-events:auto;height:auto;overflow:visible}.dropdown-click .secondary-navigation ul ul ul.toggled-on{left:0;top:auto;position:relative;box-shadow:none;border-bottom:1px solid rgba(0,0,0,.05)}.dropdown-click .secondary-navigation ul ul li:last-child>ul.toggled-on{border-bottom:0}.dropdown-click .widget-area .secondary-navigation ul ul{top:auto;position:absolute;float:none;width:100%;left:-99999px}.dropdown-click .widget-area .secondary-navigation ul ul.toggled-on{position:relative;left:0;right:0}.both-right .widget-area .secondary-navigation ul ul,.both-sidebars .widget-area .inside-right-sidebar .secondary-navigation ul ul,.right-sidebar .widget-area .secondary-navigation ul ul{left:auto;right:100%}.dropdown-click.both-right .widget-area .secondary-navigation ul ul,.dropdown-click.both-sidebars .widget-area .inside-right-sidebar .secondary-navigation ul ul,.dropdown-click.right-sidebar .widget-area .secondary-navigation ul ul{right:0}.dropdown-hover .widget-area .secondary-navigation:not(.toggled) ul li.sfHover>ul,.dropdown-hover .widget-area .secondary-navigation:not(.toggled) ul li:hover ul{top:0;left:100%;width:220px}.dropdown-hover.both-right .widget-area .secondary-navigation:not(.toggled) ul li.sfHover ul,.dropdown-hover.both-right .widget-area .secondary-navigation:not(.toggled) ul li:hover ul,.dropdown-hover.both-sidebars .widget-area .inside-right-sidebar .secondary-navigation:not(.toggled) ul li.sfHover ul,.dropdown-hover.both-sidebars .widget-area .inside-right-sidebar .secondary-navigation:not(.toggled) ul li:hover ul,.dropdown-hover.right-sidebar .widget-area .secondary-navigation:not(.toggled) ul li.sfHover ul,.dropdown-hover.right-sidebar .widget-area .secondary-navigation:not(.toggled) ul li:hover ul{right:100%;left:auto}.rtl .secondary-navigation ul ul{float:right;left:auto;right:0;text-align:right}.rtl .secondary-navigation ul ul ul{left:auto;right:100%}.rtl .secondary-navigation .menu-item-has-children ul .dropdown-menu-toggle{transform:rotate(180deg)}.secondary-navigation.has-menu-bar-items .menu-toggle,.secondary-navigation.has-top-bar .menu-toggle{flex-grow:0}.secondary-navigation .top-bar{background:0 0}.secondary-navigation .top-bar a{display:inline}.secondary-navigation .inside-top-bar{padding:0}.secondary-nav-aligned-right .secondary-navigation .top-bar{margin-right:auto}.secondary-nav-aligned-right .secondary-navigation .top-bar .inside-top-bar .widget{margin:0 10px}.secondary-nav-aligned-left .secondary-navigation .top-bar{order:2;margin-left:auto}.secondary-nav-aligned-left .secondary-navigation .top-bar .inside-top-bar .widget{margin-left:10px}.secondary-nav-aligned-center .secondary-navigation.has-top-bar .inside-top-bar{justify-content:center}.secondary-nav-aligned-center .secondary-navigation.has-top-bar .inside-navigation{display:block} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style-mobile.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style-mobile.css deleted file mode 100644 index 51b5e656..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style-mobile.css +++ /dev/null @@ -1,97 +0,0 @@ -.secondary-navigation.toggled ul ul { - transition: 0s; - visibility: hidden; -} - -.secondary-navigation.toggled ul ul.toggled-on { - visibility: visible; -} - -.secondary-navigation.toggled .main-nav ul ul { - position: relative; - top: 0; - left: 0; - width: 100%; -} - -.secondary-navigation.toggled .main-nav ul ul.toggled-on { - position: relative; - top: 0; - left: auto !important; - right: auto !important; - width: 100%; - pointer-events: auto; - height: auto; - opacity: 1; - display: block; -} - -.secondary-navigation.toggled .main-nav > ul { - display: block; -} - -.secondary-navigation.toggled .main-nav .sf-menu > li { - float: none; - clear: both; - display: block !important; - text-align: left !important; -} - -.secondary-navigation.toggled .main-nav .sf-menu > li.hide-on-mobile { - display: none !important; -} - -.secondary-navigation.toggled .dropdown-menu-toggle:before { - content: "\f107" !important; -} - -.secondary-navigation.toggled .sfHover > a .dropdown-menu-toggle:before { - content: "\f106" !important; -} - -.secondary-navigation.toggled .menu-item-has-children .dropdown-menu-toggle { - float: right; -} - -.secondary-navigation.toggled .sf-menu > li.menu-item-float-right { - float: none !important; - display: inline-block; -} - -.dropdown-hover .secondary-navigation.toggled ul li:hover > ul, -.dropdown-hover .secondary-navigation.toggled ul li.sfHover > ul { - transition-delay: 0s; -} - -.rtl .secondary-navigation.toggled .main-nav .sf-menu > li { - text-align: right !important; -} - -@media (max-width: 768px) { - .secondary-nav-float-left .inside-header .secondary-navigation { - float: none; - } - .secondary-navigation .menu-toggle { - display: block; - } - .secondary-navigation ul { - display: none; - } - .secondary-nav-aligned-left .secondary-navigation .top-bar { - position: absolute; - right: 0; - } - .secondary-nav-aligned-left .secondary-navigation .top-bar + .menu-toggle { - text-align: left; - } - .secondary-nav-aligned-right .secondary-navigation .top-bar { - position: absolute; - left: 0; - } - .secondary-nav-aligned-right .secondary-navigation .top-bar + .menu-toggle { - text-align: right; - } - .secondary-nav-aligned-center .secondary-navigation .top-bar + .menu-toggle + div { - display: block; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style-mobile.min.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style-mobile.min.css deleted file mode 100644 index f1ded0a3..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style-mobile.min.css +++ /dev/null @@ -1 +0,0 @@ -.secondary-navigation.toggled ul ul{transition:0s;visibility:hidden}.secondary-navigation.toggled ul ul.toggled-on{visibility:visible}.secondary-navigation.toggled .main-nav ul ul{position:relative;top:0;left:0;width:100%}.secondary-navigation.toggled .main-nav ul ul.toggled-on{position:relative;top:0;left:auto!important;right:auto!important;width:100%;pointer-events:auto;height:auto;opacity:1;display:block}.secondary-navigation.toggled .main-nav>ul{display:block}.secondary-navigation.toggled .main-nav .sf-menu>li{float:none;clear:both;display:block!important;text-align:left!important}.secondary-navigation.toggled .main-nav .sf-menu>li.hide-on-mobile{display:none!important}.secondary-navigation.toggled .dropdown-menu-toggle:before{content:"\f107"!important}.secondary-navigation.toggled .sfHover>a .dropdown-menu-toggle:before{content:"\f106"!important}.secondary-navigation.toggled .menu-item-has-children .dropdown-menu-toggle{float:right}.secondary-navigation.toggled .sf-menu>li.menu-item-float-right{float:none!important;display:inline-block}.dropdown-hover .secondary-navigation.toggled ul li.sfHover>ul,.dropdown-hover .secondary-navigation.toggled ul li:hover>ul{transition-delay:0s}.rtl .secondary-navigation.toggled .main-nav .sf-menu>li{text-align:right!important}@media (max-width:768px){.secondary-nav-float-left .inside-header .secondary-navigation{float:none}.secondary-navigation .menu-toggle{display:block}.secondary-navigation ul{display:none}.secondary-nav-aligned-left .secondary-navigation .top-bar{position:absolute;right:0}.secondary-nav-aligned-left .secondary-navigation .top-bar+.menu-toggle{text-align:left}.secondary-nav-aligned-right .secondary-navigation .top-bar{position:absolute;left:0}.secondary-nav-aligned-right .secondary-navigation .top-bar+.menu-toggle{text-align:right}.secondary-nav-aligned-center .secondary-navigation .top-bar+.menu-toggle+div{display:block}} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style.css deleted file mode 100644 index e24c07f1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style.css +++ /dev/null @@ -1,337 +0,0 @@ -.secondary-navigation { - clear: both; - z-index: 99; - padding: 0; -} - -.secondary-navigation ul { - list-style: none; - margin: 0; - padding-left: 0; -} - -.secondary-navigation li { - float: left; - position: relative; -} - -.secondary-navigation a { - display: block; - text-decoration: none; -} - -.secondary-navigation ul ul { - display: block; - box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1); - float: left; - position: absolute; - left: -99999px; - opacity: 0; - z-index: 99999; - width: 200px; - text-align: left; - top: auto; - transition: opacity 80ms linear; - transition-delay: 0s; - pointer-events: none; - height: 0; - overflow: hidden; -} - -.secondary-navigation ul ul li { - width: 100%; -} - -.secondary-navigation ul ul li a { - line-height: normal; - font-size: 90%; -} - -.secondary-navigation.sub-menu-left .sub-menu { - right: 0; -} - -.secondary-navigation .main-nav ul ul li a { - line-height: normal; - font-size: 12px; - padding-left: 20px; - padding-right: 20px; - padding-top: 10px; - padding-bottom: 10px; -} - -.secondary-navigation .main-nav ul li.menu-item-has-children > a { - padding-right: 0; - position: relative; -} - -.secondary-navigation .main-nav ul li a { - font-family: inherit; - font-weight: normal; - text-transform: none; - font-size: 13px; - padding-left: 20px; - padding-right: 20px; - line-height: 40px; -} - -.secondary-navigation .menu-toggle { - font-family: inherit; - font-weight: normal; - text-transform: none; - font-size: 13px; - padding-left: 20px; - padding-right: 20px; - line-height: 40px; - margin: 0; -} - -.secondary-navigation .menu-item-has-children .dropdown-menu-toggle { - padding-right: 20px; -} - -.secondary-navigation .menu-item-has-children ul .dropdown-menu-toggle { - padding-top: 10px; - padding-bottom: 10px; - margin-top: -10px; -} - -.dropdown-hover .secondary-navigation:not(.toggled) ul li:hover > ul, -.dropdown-hover .secondary-navigation:not(.toggled) ul li.sfHover > ul { - left: auto; - opacity: 1; - transition-delay: 150ms; - pointer-events: auto; - height: auto; - overflow: visible; -} - -.dropdown-hover .secondary-navigation:not(.toggled) ul ul li:hover > ul, -.dropdown-hover .secondary-navigation:not(.toggled) ul ul li.sfHover > ul { - left: 100%; - top: 0; -} - -.dropdown-hover .secondary-navigation.sub-menu-left:not(.toggled) ul ul li:hover > ul, -.dropdown-hover .secondary-navigation.sub-menu-left:not(.toggled) ul ul li.sfHover > ul { - right: 100%; - top: 0; - left: auto; -} - -.secondary-nav-float-right .secondary-navigation { - float: right; -} - -.secondary-nav-float-right .secondary-navigation .main-nav ul ul li a { - line-height: normal; -} - -.secondary-nav-float-right .secondary-navigation ul ul ul { - top: 0; -} - -.secondary-nav-float-left .inside-header .secondary-navigation { - float: left; - clear: left; -} - -.secondary-nav-float-left .inside-header:after { - clear: both; - content: ''; - display: table; -} - -.secondary-nav-float-left:not(.nav-float-right) .inside-header .site-branding, -.secondary-nav-float-left:not(.nav-float-right) .inside-header .site-logo { - float: right; - clear: right; -} - -.secondary-nav-float-left.nav-float-right .inside-header .site-branding, -.secondary-nav-float-left.nav-float-right .inside-header .site-logo { - float: none; - clear: none; -} - -.secondary-nav-float-left.nav-float-right .site-header { - text-align: center; -} - -.secondary-nav-float-right.nav-float-left .inside-header .site-branding, -.secondary-nav-float-right.nav-float-left .inside-header .site-logo { - float: none; - clear: none; -} - -.secondary-nav-float-right.nav-float-left .site-header { - text-align: center; -} - -.widget-area .secondary-navigation li { - display: block; - float: none; - margin: 0; - padding: 0; - width: 100%; -} - -.widget-area .secondary-navigation ul ul { - left: 100%; - top: 0; - width: 220px; -} - -.both-right .widget-area .secondary-navigation ul ul, -.right-sidebar .widget-area .secondary-navigation ul ul, -.both-sidebars .widget-area .inside-right-sidebar .secondary-navigation ul ul { - left: auto; - right: 100%; -} - -.secondary-nav-aligned-right.secondary-nav-below-header .secondary-navigation .sf-menu > li, -.secondary-nav-aligned-right.secondary-nav-above-header .secondary-navigation .sf-menu > li, -.secondary-nav-aligned-center.secondary-nav-below-header .secondary-navigation .sf-menu > li, -.secondary-nav-aligned-center.secondary-nav-above-header .secondary-navigation .sf-menu > li { - float: none; - display: inline-block; -} - -.secondary-nav-aligned-right .secondary-navigation ul.secondary-menu, -.secondary-nav-aligned-center .secondary-navigation ul.secondary-menu { - font-size: 0px; -} - -.secondary-nav-aligned-left.secondary-nav-below-header .secondary-navigation, -.secondary-nav-aligned-left.secondary-nav-above-header .secondary-navigation { - text-align: left; -} - -.secondary-nav-aligned-left.secondary-nav-below-header .secondary-navigation:after, -.secondary-nav-aligned-left.secondary-nav-above-header .secondary-navigation:after { - clear: both; - content: ''; - display: table; -} - -.secondary-nav-aligned-center.secondary-nav-below-header .secondary-navigation, -.secondary-nav-aligned-center.secondary-nav-above-header .secondary-navigation { - text-align: center; -} - -.secondary-nav-aligned-right.secondary-nav-below-header .secondary-navigation, -.secondary-nav-aligned-right.secondary-nav-above-header .secondary-navigation { - text-align: right; -} - -.dropdown-click .secondary-navigation ul ul { - visibility: hidden; -} - -.dropdown-click .secondary-navigation ul.toggled-on, -.dropdown-click .secondary-navigation ul li.sfHover > ul.toggled-on { - left: auto; - opacity: 1; - visibility: visible; - pointer-events: auto; - height: auto; - overflow: visible; -} - -.dropdown-click .secondary-navigation ul ul ul.toggled-on { - left: 0; - top: auto; - position: relative; -} - -.dropdown-click .widget-area .secondary-navigation ul ul { - top: auto; - position: absolute; - float: none; - width: 100%; - left: -99999px; -} - -.dropdown-click .widget-area .secondary-navigation ul ul.toggled-on { - position: relative; - left: 0; - right: 0; -} - -.dropdown-click.both-right .widget-area .secondary-navigation ul ul, -.dropdown-click.right-sidebar .widget-area .secondary-navigation ul ul, -.dropdown-click.both-sidebars .widget-area .inside-right-sidebar .secondary-navigation ul ul { - right: 0; -} - -.dropdown-hover .widget-area .secondary-navigation:not(.toggled) ul li:hover ul, -.dropdown-hover .widget-area .secondary-navigation:not(.toggled) ul li.sfHover > ul { - top: 0; - left: 100%; - width: 220px; -} - -.dropdown-hover.both-right .widget-area .secondary-navigation:not(.toggled) ul li:hover ul, -.dropdown-hover.both-right .widget-area .secondary-navigation:not(.toggled) ul li.sfHover ul, -.dropdown-hover.right-sidebar .widget-area .secondary-navigation:not(.toggled) ul li:hover ul, -.dropdown-hover.right-sidebar .widget-area .secondary-navigation:not(.toggled) ul li.sfHover ul, -.dropdown-hover.both-sidebars .widget-area .inside-right-sidebar .secondary-navigation:not(.toggled) ul li:hover ul, -.dropdown-hover.both-sidebars .widget-area .inside-right-sidebar .secondary-navigation:not(.toggled) ul li.sfHover ul { - right: 100%; - left: auto; -} - -.rtl .secondary-navigation ul ul { - float: right; - left: auto; - right: 0; - text-align: right; -} - -.rtl .secondary-navigation ul ul ul { - left: auto; - right: 100%; -} - -.rtl .secondary-navigation .menu-item-has-children ul .dropdown-menu-toggle { - transform: rotate(180deg); -} - -/* Top bar */ -.secondary-navigation .top-bar { - background: transparent; -} - -.secondary-navigation .inside-top-bar { - padding: 0; -} - -.secondary-navigation .top-bar a { - display: inline; -} - -.secondary-nav-aligned-right .secondary-navigation .top-bar { - float: left; -} - -.secondary-nav-aligned-right .secondary-navigation .top-bar .inside-top-bar .widget { - margin: 0 10px; -} - -.secondary-nav-aligned-left .secondary-navigation .top-bar { - float: right; -} - -.secondary-nav-aligned-left .secondary-navigation .top-bar .inside-top-bar .widget { - margin-left: 10px; -} - -.secondary-nav-aligned-center .secondary-navigation .top-bar, -.secondary-nav-aligned-center .secondary-navigation .top-bar + .menu-toggle + div { - display: inline-block; - vertical-align: middle; -} - -.secondary-nav-aligned-center .secondary-navigation .top-bar .widget:not(:first-child) { - margin-left: 10px; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style.min.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style.min.css deleted file mode 100644 index 88215e4e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/css/style.min.css +++ /dev/null @@ -1 +0,0 @@ -.secondary-navigation{clear:both;z-index:99;padding:0}.secondary-navigation ul{list-style:none;margin:0;padding-left:0}.secondary-navigation li{float:left;position:relative}.secondary-navigation a{display:block;text-decoration:none}.secondary-navigation ul ul{display:block;box-shadow:0 2px 2px rgba(0,0,0,.1);float:left;position:absolute;left:-99999px;opacity:0;z-index:99999;width:200px;text-align:left;top:auto;transition:opacity 80ms linear;transition-delay:0s;pointer-events:none;height:0;overflow:hidden}.secondary-navigation ul ul li{width:100%}.secondary-navigation ul ul li a{line-height:normal;font-size:90%}.secondary-navigation.sub-menu-left .sub-menu{right:0}.secondary-navigation .main-nav ul ul li a{line-height:normal;font-size:12px;padding-left:20px;padding-right:20px;padding-top:10px;padding-bottom:10px}.secondary-navigation .main-nav ul li.menu-item-has-children>a{padding-right:0;position:relative}.secondary-navigation .main-nav ul li a{font-family:inherit;font-weight:400;text-transform:none;font-size:13px;padding-left:20px;padding-right:20px;line-height:40px}.secondary-navigation .menu-toggle{font-family:inherit;font-weight:400;text-transform:none;font-size:13px;padding-left:20px;padding-right:20px;line-height:40px;margin:0}.secondary-navigation .menu-item-has-children .dropdown-menu-toggle{padding-right:20px}.secondary-navigation .menu-item-has-children ul .dropdown-menu-toggle{padding-top:10px;padding-bottom:10px;margin-top:-10px}.dropdown-hover .secondary-navigation:not(.toggled) ul li.sfHover>ul,.dropdown-hover .secondary-navigation:not(.toggled) ul li:hover>ul{left:auto;opacity:1;transition-delay:150ms;pointer-events:auto;height:auto;overflow:visible}.dropdown-hover .secondary-navigation:not(.toggled) ul ul li.sfHover>ul,.dropdown-hover .secondary-navigation:not(.toggled) ul ul li:hover>ul{left:100%;top:0}.dropdown-hover .secondary-navigation.sub-menu-left:not(.toggled) ul ul li.sfHover>ul,.dropdown-hover .secondary-navigation.sub-menu-left:not(.toggled) ul ul li:hover>ul{right:100%;top:0;left:auto}.secondary-nav-float-right .secondary-navigation{float:right}.secondary-nav-float-right .secondary-navigation .main-nav ul ul li a{line-height:normal}.secondary-nav-float-right .secondary-navigation ul ul ul{top:0}.secondary-nav-float-left .inside-header .secondary-navigation{float:left;clear:left}.secondary-nav-float-left .inside-header:after{clear:both;content:'';display:table}.secondary-nav-float-left:not(.nav-float-right) .inside-header .site-branding,.secondary-nav-float-left:not(.nav-float-right) .inside-header .site-logo{float:right;clear:right}.secondary-nav-float-left.nav-float-right .inside-header .site-branding,.secondary-nav-float-left.nav-float-right .inside-header .site-logo{float:none;clear:none}.secondary-nav-float-left.nav-float-right .site-header{text-align:center}.secondary-nav-float-right.nav-float-left .inside-header .site-branding,.secondary-nav-float-right.nav-float-left .inside-header .site-logo{float:none;clear:none}.secondary-nav-float-right.nav-float-left .site-header{text-align:center}.widget-area .secondary-navigation li{display:block;float:none;margin:0;padding:0;width:100%}.widget-area .secondary-navigation ul ul{left:100%;top:0;width:220px}.both-right .widget-area .secondary-navigation ul ul,.both-sidebars .widget-area .inside-right-sidebar .secondary-navigation ul ul,.right-sidebar .widget-area .secondary-navigation ul ul{left:auto;right:100%}.secondary-nav-aligned-center.secondary-nav-above-header .secondary-navigation .sf-menu>li,.secondary-nav-aligned-center.secondary-nav-below-header .secondary-navigation .sf-menu>li,.secondary-nav-aligned-right.secondary-nav-above-header .secondary-navigation .sf-menu>li,.secondary-nav-aligned-right.secondary-nav-below-header .secondary-navigation .sf-menu>li{float:none;display:inline-block}.secondary-nav-aligned-center .secondary-navigation ul.secondary-menu,.secondary-nav-aligned-right .secondary-navigation ul.secondary-menu{font-size:0}.secondary-nav-aligned-left.secondary-nav-above-header .secondary-navigation,.secondary-nav-aligned-left.secondary-nav-below-header .secondary-navigation{text-align:left}.secondary-nav-aligned-left.secondary-nav-above-header .secondary-navigation:after,.secondary-nav-aligned-left.secondary-nav-below-header .secondary-navigation:after{clear:both;content:'';display:table}.secondary-nav-aligned-center.secondary-nav-above-header .secondary-navigation,.secondary-nav-aligned-center.secondary-nav-below-header .secondary-navigation{text-align:center}.secondary-nav-aligned-right.secondary-nav-above-header .secondary-navigation,.secondary-nav-aligned-right.secondary-nav-below-header .secondary-navigation{text-align:right}.dropdown-click .secondary-navigation ul ul{visibility:hidden}.dropdown-click .secondary-navigation ul li.sfHover>ul.toggled-on,.dropdown-click .secondary-navigation ul.toggled-on{left:auto;opacity:1;visibility:visible;pointer-events:auto;height:auto;overflow:visible}.dropdown-click .secondary-navigation ul ul ul.toggled-on{left:0;top:auto;position:relative}.dropdown-click .widget-area .secondary-navigation ul ul{top:auto;position:absolute;float:none;width:100%;left:-99999px}.dropdown-click .widget-area .secondary-navigation ul ul.toggled-on{position:relative;left:0;right:0}.dropdown-click.both-right .widget-area .secondary-navigation ul ul,.dropdown-click.both-sidebars .widget-area .inside-right-sidebar .secondary-navigation ul ul,.dropdown-click.right-sidebar .widget-area .secondary-navigation ul ul{right:0}.dropdown-hover .widget-area .secondary-navigation:not(.toggled) ul li.sfHover>ul,.dropdown-hover .widget-area .secondary-navigation:not(.toggled) ul li:hover ul{top:0;left:100%;width:220px}.dropdown-hover.both-right .widget-area .secondary-navigation:not(.toggled) ul li.sfHover ul,.dropdown-hover.both-right .widget-area .secondary-navigation:not(.toggled) ul li:hover ul,.dropdown-hover.both-sidebars .widget-area .inside-right-sidebar .secondary-navigation:not(.toggled) ul li.sfHover ul,.dropdown-hover.both-sidebars .widget-area .inside-right-sidebar .secondary-navigation:not(.toggled) ul li:hover ul,.dropdown-hover.right-sidebar .widget-area .secondary-navigation:not(.toggled) ul li.sfHover ul,.dropdown-hover.right-sidebar .widget-area .secondary-navigation:not(.toggled) ul li:hover ul{right:100%;left:auto}.rtl .secondary-navigation ul ul{float:right;left:auto;right:0;text-align:right}.rtl .secondary-navigation ul ul ul{left:auto;right:100%}.rtl .secondary-navigation .menu-item-has-children ul .dropdown-menu-toggle{transform:rotate(180deg)}.secondary-navigation .top-bar{background:0 0}.secondary-navigation .inside-top-bar{padding:0}.secondary-navigation .top-bar a{display:inline}.secondary-nav-aligned-right .secondary-navigation .top-bar{float:left}.secondary-nav-aligned-right .secondary-navigation .top-bar .inside-top-bar .widget{margin:0 10px}.secondary-nav-aligned-left .secondary-navigation .top-bar{float:right}.secondary-nav-aligned-left .secondary-navigation .top-bar .inside-top-bar .widget{margin-left:10px}.secondary-nav-aligned-center .secondary-navigation .top-bar,.secondary-nav-aligned-center .secondary-navigation .top-bar+.menu-toggle+div{display:inline-block;vertical-align:middle}.secondary-nav-aligned-center .secondary-navigation .top-bar .widget:not(:first-child){margin-left:10px} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/functions.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/functions.php deleted file mode 100644 index f8a2a29e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/functions/functions.php +++ /dev/null @@ -1,1379 +0,0 @@ - __( 'Secondary Menu', 'gp-premium' ), - ) - ); - } -} - -if ( ! function_exists( 'generate_secondary_nav_enqueue_scripts' ) ) { - add_action( 'wp_enqueue_scripts', 'generate_secondary_nav_enqueue_scripts', 100 ); - /** - * Add our necessary scripts. - * - * @since 0.1 - */ - function generate_secondary_nav_enqueue_scripts() { - // Bail if no Secondary menu is set. - if ( ! has_nav_menu( 'secondary' ) ) { - return; - } - - $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; - - if ( function_exists( 'generate_is_using_flexbox' ) && generate_is_using_flexbox() ) { - wp_enqueue_style( 'generate-secondary-nav', plugin_dir_url( __FILE__ ) . "css/main{$suffix}.css", array(), GENERATE_SECONDARY_NAV_VERSION ); - wp_enqueue_style( 'generate-secondary-nav-mobile', plugin_dir_url( __FILE__ ) . "css/main-mobile{$suffix}.css", array(), GENERATE_SECONDARY_NAV_VERSION, 'all' ); - } else { - wp_enqueue_style( 'generate-secondary-nav', plugin_dir_url( __FILE__ ) . "css/style{$suffix}.css", array(), GENERATE_SECONDARY_NAV_VERSION ); - wp_enqueue_style( 'generate-secondary-nav-mobile', plugin_dir_url( __FILE__ ) . "css/style-mobile{$suffix}.css", array(), GENERATE_SECONDARY_NAV_VERSION, 'all' ); - } - - if ( ! defined( 'GENERATE_DISABLE_MOBILE' ) ) { - wp_add_inline_script( - 'generate-navigation', - "jQuery( document ).ready( function($) { - $( '.secondary-navigation .menu-toggle' ).on( 'click', function( e ) { - e.preventDefault(); - $( this ).closest( '.secondary-navigation' ).toggleClass( 'toggled' ); - $( this ).closest( '.secondary-navigation' ).attr( 'aria-expanded', $( this ).closest( '.secondary-navigation' ).attr( 'aria-expanded' ) === 'true' ? 'false' : 'true' ); - $( this ).toggleClass( 'toggled' ); - $( this ).children( 'i' ).toggleClass( 'fa-bars' ).toggleClass( 'fa-close' ); - $( this ).attr( 'aria-expanded', $( this ).attr( 'aria-expanded' ) === 'false' ? 'true' : 'false' ); - }); - });" - ); - } - } -} - -if ( ! function_exists( 'generate_secondary_nav_enqueue_customizer_scripts' ) ) { - add_action( 'customize_preview_init', 'generate_secondary_nav_enqueue_customizer_scripts' ); - /** - * Add our Customizer preview JS. - * - * @since 0.1 - */ - function generate_secondary_nav_enqueue_customizer_scripts() { - wp_enqueue_script( 'generate-secondary-nav-customizer', plugin_dir_url( __FILE__ ) . 'js/customizer.js', array( 'jquery', 'customize-preview' ), GENERATE_SECONDARY_NAV_VERSION, true ); - - wp_localize_script( - 'generate-secondary-nav-customizer', - 'generateSecondaryNav', - array( - 'isFlex' => function_exists( 'generate_is_using_flexbox' ) && generate_is_using_flexbox(), - ) - ); - } -} - -if ( ! function_exists( 'generate_secondary_nav_get_defaults' ) ) { - /** - * Set default options. - * - * @since 0.1 - * @param bool $filter Whether to filter the defaults or not. - */ - function generate_secondary_nav_get_defaults( $filter = true ) { - $generate_defaults = array( - 'secondary_nav_mobile_label' => 'Menu', - 'secondary_nav_layout_setting' => 'secondary-fluid-nav', - 'secondary_nav_inner_width' => 'contained', - 'secondary_nav_position_setting' => 'secondary-nav-above-header', - 'secondary_nav_alignment' => 'right', - 'secondary_nav_dropdown_direction' => 'right', - 'navigation_background_color' => '#636363', - 'navigation_text_color' => '#ffffff', - 'navigation_background_hover_color' => '#303030', - 'navigation_text_hover_color' => '#ffffff', - 'navigation_background_current_color' => '#ffffff', - 'navigation_text_current_color' => '#222222', - 'subnavigation_background_color' => '#303030', - 'subnavigation_text_color' => '#ffffff', - 'subnavigation_background_hover_color' => '#474747', - 'subnavigation_text_hover_color' => '#ffffff', - 'subnavigation_background_current_color' => '#474747', - 'subnavigation_text_current_color' => '#ffffff', - 'secondary_menu_item' => '20', - 'secondary_menu_item_height' => '40', - 'secondary_sub_menu_item_height' => '10', - 'font_secondary_navigation' => 'inherit', - 'font_secondary_navigation_variants' => '', - 'font_secondary_navigation_category' => '', - 'secondary_navigation_font_weight' => 'normal', - 'secondary_navigation_font_transform' => 'none', - 'secondary_navigation_font_size' => '13', - 'nav_image' => '', - 'nav_repeat' => '', - 'nav_item_image' => '', - 'nav_item_repeat' => '', - 'nav_item_hover_image' => '', - 'nav_item_hover_repeat' => '', - 'nav_item_current_image' => '', - 'nav_item_current_repeat' => '', - 'sub_nav_image' => '', - 'sub_nav_repeat' => '', - 'sub_nav_item_image' => '', - 'sub_nav_item_repeat' => '', - 'sub_nav_item_hover_image' => '', - 'sub_nav_item_hover_repeat' => '', - 'sub_nav_item_current_image' => '', - 'sub_nav_item_current_repeat' => '', - 'merge_top_bar' => false, - ); - - if ( $filter ) { - return apply_filters( 'generate_secondary_nav_option_defaults', $generate_defaults ); - } - - return $generate_defaults; - } -} - -if ( ! function_exists( 'generate_secondary_nav_customize_register' ) ) { - add_action( 'customize_register', 'generate_secondary_nav_customize_register', 100 ); - /** - * Register our options. - * - * @since 0.1 - * @param object $wp_customize The Customizer object. - */ - function generate_secondary_nav_customize_register( $wp_customize ) { - $defaults = generate_secondary_nav_get_defaults(); - - require_once GP_LIBRARY_DIRECTORY . 'customizer-helpers.php'; - - if ( method_exists( $wp_customize, 'register_control_type' ) ) { - $wp_customize->register_control_type( 'GeneratePress_Section_Shortcut_Control' ); - } - - // Use the Layout panel in the free theme if it exists. - if ( $wp_customize->get_panel( 'generate_layout_panel' ) ) { - $layout_panel = 'generate_layout_panel'; - } else { - $layout_panel = 'secondary_navigation_panel'; - } - - // Add our secondary navigation panel. - // This shouldn't be used anymore if the theme is up to date. - if ( class_exists( 'WP_Customize_Panel' ) ) { - $wp_customize->add_panel( - 'secondary_navigation_panel', - array( - 'priority' => 100, - 'capability' => 'edit_theme_options', - 'theme_supports' => '', - 'title' => __( 'Secondary Navigation', 'gp-premium' ), - 'description' => '', - ) - ); - } - - $wp_customize->add_section( - 'secondary_nav_section', - array( - 'title' => __( 'Secondary Navigation', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 31, - 'panel' => $layout_panel, - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_secondary_navigation_layout_shortcuts', - array( - 'section' => 'secondary_nav_section', - 'element' => __( 'Secondary Navigation', 'gp-premium' ), - 'shortcuts' => array( - 'colors' => 'secondary_navigation_color_section', - 'typography' => 'secondary_font_section', - 'backgrounds' => 'secondary_bg_images_section', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[secondary_nav_mobile_label]', - array( - 'default' => $defaults['secondary_nav_mobile_label'], - 'type' => 'option', - 'sanitize_callback' => 'wp_kses_post', - ) - ); - - $wp_customize->add_control( - 'secondary_nav_mobile_label_control', - array( - 'label' => __( 'Mobile Menu Label', 'gp-premium' ), - 'section' => 'secondary_nav_section', - 'settings' => 'generate_secondary_nav_settings[secondary_nav_mobile_label]', - 'priority' => 10, - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[secondary_nav_layout_setting]', - array( - 'default' => $defaults['secondary_nav_layout_setting'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - 'generate_secondary_nav_settings[secondary_nav_layout_setting]', - array( - 'type' => 'select', - 'label' => __( 'Navigation Width', 'gp-premium' ), - 'section' => 'secondary_nav_section', - 'choices' => array( - 'secondary-fluid-nav' => _x( 'Full', 'Width', 'gp-premium' ), - 'secondary-contained-nav' => _x( 'Contained', 'Width', 'gp-premium' ), - ), - 'settings' => 'generate_secondary_nav_settings[secondary_nav_layout_setting]', - 'priority' => 15, - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[secondary_nav_inner_width]', - array( - 'default' => $defaults['secondary_nav_inner_width'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - 'generate_secondary_nav_settings[secondary_nav_inner_width]', - array( - 'type' => 'select', - 'label' => __( 'Inner Navigation Width', 'gp-premium' ), - 'section' => 'secondary_nav_section', - 'choices' => array( - 'full-width' => _x( 'Full', 'Width', 'gp-premium' ), - 'contained' => _x( 'Contained', 'Width', 'gp-premium' ), - ), - 'settings' => 'generate_secondary_nav_settings[secondary_nav_inner_width]', - 'priority' => 15, - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[secondary_nav_alignment]', - array( - 'default' => $defaults['secondary_nav_alignment'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - 'generate_secondary_nav_settings[secondary_nav_alignment]', - array( - 'type' => 'select', - 'label' => __( 'Navigation Alignment', 'gp-premium' ), - 'section' => 'secondary_nav_section', - 'choices' => array( - 'left' => __( 'Left', 'gp-premium' ), - 'center' => __( 'Center', 'gp-premium' ), - 'right' => __( 'Right', 'gp-premium' ), - ), - 'settings' => 'generate_secondary_nav_settings[secondary_nav_alignment]', - 'priority' => 20, - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[secondary_nav_position_setting]', - array( - 'default' => $defaults['secondary_nav_position_setting'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_secondary_nav_settings[secondary_nav_position_setting]', - array( - 'type' => 'select', - 'label' => __( 'Navigation Location', 'gp-premium' ), - 'section' => 'secondary_nav_section', - 'choices' => array( - 'secondary-nav-below-header' => __( 'Below Header', 'gp-premium' ), - 'secondary-nav-above-header' => __( 'Above Header', 'gp-premium' ), - 'secondary-nav-float-right' => __( 'Float Right', 'gp-premium' ), - 'secondary-nav-float-left' => __( 'Float Left', 'gp-premium' ), - 'secondary-nav-left-sidebar' => __( 'Left Sidebar', 'gp-premium' ), - 'secondary-nav-right-sidebar' => __( 'Right Sidebar', 'gp-premium' ), - '' => __( 'No Navigation', 'gp-premium' ), - ), - 'settings' => 'generate_secondary_nav_settings[secondary_nav_position_setting]', - 'priority' => 30, - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[secondary_nav_dropdown_direction]', - array( - 'default' => $defaults['secondary_nav_dropdown_direction'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices', - ) - ); - - $wp_customize->add_control( - 'generate_secondary_nav_settings[secondary_nav_dropdown_direction]', - array( - 'type' => 'select', - 'label' => __( 'Dropdown Direction', 'gp-premium' ), - 'section' => 'secondary_nav_section', - 'choices' => array( - 'right' => __( 'Right', 'gp-premium' ), - 'left' => __( 'Left', 'gp-premium' ), - ), - 'settings' => 'generate_secondary_nav_settings[secondary_nav_dropdown_direction]', - 'priority' => 35, - ) - ); - - $wp_customize->add_setting( - 'generate_secondary_nav_settings[merge_top_bar]', - array( - 'default' => $defaults['merge_top_bar'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox', - ) - ); - - $wp_customize->add_control( - 'generate_secondary_nav_settings[merge_top_bar]', - array( - 'type' => 'checkbox', - 'label' => __( 'Merge with Secondary Navigation', 'gp-premium' ), - 'section' => 'generate_top_bar', - 'settings' => 'generate_secondary_nav_settings[merge_top_bar]', - 'priority' => 100, - 'active_callback' => 'generate_secondary_nav_show_merge_top_bar', - ) - ); - } -} - -if ( ! function_exists( 'generate_display_secondary_google_fonts' ) ) { - add_filter( 'generate_typography_google_fonts', 'generate_display_secondary_google_fonts', 50 ); - /** - * Add Google Fonts to wp_head if needed. - * - * @since 0.1 - * @param array $google_fonts Existing fonts. - */ - function generate_display_secondary_google_fonts( $google_fonts ) { - if ( ! has_nav_menu( 'secondary' ) ) { - return $google_fonts; - } - - $generate_secondary_nav_settings = wp_parse_args( - get_option( 'generate_secondary_nav_settings', array() ), - generate_secondary_nav_get_defaults() - ); - - if ( function_exists( 'generate_typography_default_fonts' ) ) { - $not_google = str_replace( ' ', '+', generate_typography_default_fonts() ); - } else { - $not_google = array( - 'inherit', - 'Arial,+Helvetica,+sans-serif', - 'Century+Gothic', - 'Comic+Sans+MS', - 'Courier+New', - 'Georgia,+Times+New+Roman,+Times,+serif', - 'Helvetica', - 'Impact', - 'Lucida+Console', - 'Lucida+Sans+Unicode', - 'Palatino+Linotype', - 'Tahoma,+Geneva,+sans-serif', - 'Trebuchet+MS,+Helvetica,+sans-serif', - 'Verdana,+Geneva,+sans-serif', - ); - } - - $secondary_google_fonts = array(); - - if ( function_exists( 'generate_get_google_font_variants' ) ) { - - // If our value is still using the old format, fix it. - if ( strpos( $generate_secondary_nav_settings['font_secondary_navigation'], ':' ) !== false ) { - $generate_secondary_nav_settings['font_secondary_navigation'] = current( explode( ':', $generate_secondary_nav_settings['font_secondary_navigation'] ) ); - } - - // Grab the variants using the plain name. - $variants = generate_get_google_font_variants( $generate_secondary_nav_settings['font_secondary_navigation'], 'font_secondary_navigation', generate_secondary_nav_get_defaults() ); - - } else { - $variants = ''; - } - - // Replace the spaces in the names with a plus. - $value = str_replace( ' ', '+', $generate_secondary_nav_settings['font_secondary_navigation'] ); - - // If we have variants, add them to our value. - $value = ! empty( $variants ) ? $value . ':' . $variants : $value; - - // Add our value to the array. - $secondary_google_fonts[] = $value; - - // Ignore any non-Google fonts. - $secondary_google_fonts = array_diff( $secondary_google_fonts, $not_google ); - - // Separate each different font with a bar. - $secondary_google_fonts = implode( '|', $secondary_google_fonts ); - - if ( ! empty( $secondary_google_fonts ) ) { - $print_secondary_fonts = '|' . $secondary_google_fonts; - } else { - $print_secondary_fonts = ''; - } - - // Remove any duplicates. - $return = $google_fonts . $print_secondary_fonts; - $return = implode( '|', array_unique( explode( '|', $return ) ) ); - return $return; - - } -} - -if ( ! function_exists( 'generate_add_secondary_navigation_after_header' ) ) { - add_action( 'generate_after_header', 'generate_add_secondary_navigation_after_header', 7 ); - /** - * Add the navigation after the header. - * - * @since 0.1 - */ - function generate_add_secondary_navigation_after_header() { - $generate_settings = wp_parse_args( - get_option( 'generate_secondary_nav_settings', array() ), - generate_secondary_nav_get_defaults() - ); - - if ( 'secondary-nav-below-header' === $generate_settings['secondary_nav_position_setting'] ) { - generate_secondary_navigation_position(); - } - - } -} - -if ( ! function_exists( 'generate_add_secondary_navigation_before_header' ) ) { - add_action( 'generate_before_header', 'generate_add_secondary_navigation_before_header', 7 ); - /** - * Add the navigation before the header. - * - * @since 0.1 - */ - function generate_add_secondary_navigation_before_header() { - $generate_settings = wp_parse_args( - get_option( 'generate_secondary_nav_settings', array() ), - generate_secondary_nav_get_defaults() - ); - - if ( 'secondary-nav-above-header' === $generate_settings['secondary_nav_position_setting'] ) { - generate_secondary_navigation_position(); - } - - } -} - -if ( ! function_exists( 'generate_add_secondary_navigation_float_right' ) ) { - add_action( 'generate_before_header_content', 'generate_add_secondary_navigation_float_right', 7 ); - /** - * Add the navigation inside the header so it can float right. - * - * @since 0.1 - */ - function generate_add_secondary_navigation_float_right() { - if ( function_exists( 'generate_is_using_flexbox' ) && generate_is_using_flexbox() ) { - return; - } - - $generate_settings = wp_parse_args( - get_option( 'generate_secondary_nav_settings', array() ), - generate_secondary_nav_get_defaults() - ); - - if ( 'secondary-nav-float-right' === $generate_settings['secondary_nav_position_setting'] || 'secondary-nav-float-left' === $generate_settings['secondary_nav_position_setting'] ) { - generate_secondary_navigation_position(); - } - - } -} - -add_action( 'generate_after_header_content', 'generate_do_secondary_navigation_float_right', 7 ); -/** - * Add the navigation inside the header so it can float right. - * - * @since 1.11.0 - */ -function generate_do_secondary_navigation_float_right() { - if ( ! function_exists( 'generate_is_using_flexbox' ) ) { - return; - } - - if ( ! generate_is_using_flexbox() ) { - return; - } - - $generate_settings = wp_parse_args( - get_option( 'generate_secondary_nav_settings', array() ), - generate_secondary_nav_get_defaults() - ); - - if ( 'secondary-nav-float-right' === $generate_settings['secondary_nav_position_setting'] || 'secondary-nav-float-left' === $generate_settings['secondary_nav_position_setting'] ) { - generate_secondary_navigation_position(); - } - -} - -add_action( 'generate_before_navigation', 'generate_do_multi_navigation_wrapper_open', 11 ); -/** - * Open our wrapper that puts both navigations inside one element. - * - * @since 1.11.0 - */ -function generate_do_multi_navigation_wrapper_open() { - if ( ! function_exists( 'generate_is_using_flexbox' ) ) { - return; - } - - if ( ! generate_is_using_flexbox() ) { - return; - } - - if ( ! function_exists( 'generate_get_option' ) ) { - return; - } - - if ( ! has_nav_menu( 'secondary' ) ) { - return; - } - - if ( function_exists( 'generate_menu_plus_get_defaults' ) ) { - $menu_settings = wp_parse_args( - get_option( 'generate_menu_plus_settings', array() ), - generate_menu_plus_get_defaults() - ); - - if ( $menu_settings['navigation_as_header'] ) { - return; - } - } - - $generate_settings = wp_parse_args( - get_option( 'generate_secondary_nav_settings', array() ), - generate_secondary_nav_get_defaults() - ); - - if ( - ( 'secondary-nav-float-right' === $generate_settings['secondary_nav_position_setting'] && 'nav-float-right' === generate_get_option( 'nav_position_setting' ) ) || - ( 'secondary-nav-float-left' === $generate_settings['secondary_nav_position_setting'] && 'nav-float-left' === generate_get_option( 'nav_position_setting' ) ) - ) { - echo '
            '; - } -} - -add_action( 'generate_after_secondary_navigation', 'generate_do_multi_navigation_wrapper_close', 7 ); -/** - * Close our wrapper that puts both navigations inside one element. - * - * @since 1.11.0 - */ -function generate_do_multi_navigation_wrapper_close() { - if ( ! function_exists( 'generate_is_using_flexbox' ) ) { - return; - } - - if ( ! generate_is_using_flexbox() ) { - return; - } - - if ( ! function_exists( 'generate_get_option' ) ) { - return; - } - - $generate_settings = wp_parse_args( - get_option( 'generate_secondary_nav_settings', array() ), - generate_secondary_nav_get_defaults() - ); - - if ( - ( 'secondary-nav-float-right' === $generate_settings['secondary_nav_position_setting'] && 'nav-float-right' === generate_get_option( 'nav_position_setting' ) ) || - ( 'secondary-nav-float-left' === $generate_settings['secondary_nav_position_setting'] && 'nav-float-left' === generate_get_option( 'nav_position_setting' ) ) - ) { - echo '
            '; - } -} - -if ( ! function_exists( 'generate_add_secondary_navigation_before_right_sidebar' ) ) { - add_action( 'generate_before_right_sidebar_content', 'generate_add_secondary_navigation_before_right_sidebar', 7 ); - /** - * Add the navigation into the right sidebar. - * - * @since 0.1 - */ - function generate_add_secondary_navigation_before_right_sidebar() { - $generate_settings = wp_parse_args( - get_option( 'generate_secondary_nav_settings', array() ), - generate_secondary_nav_get_defaults() - ); - - if ( 'secondary-nav-right-sidebar' === $generate_settings['secondary_nav_position_setting'] ) { - echo '
            '; - generate_secondary_navigation_position(); - echo '
            '; - } - - } -} - -if ( ! function_exists( 'generate_add_secondary_navigation_before_left_sidebar' ) ) { - add_action( 'generate_before_left_sidebar_content', 'generate_add_secondary_navigation_before_left_sidebar', 7 ); - /** - * Add the navigation into the left sidebar. - * - * @since 0.1 - */ - function generate_add_secondary_navigation_before_left_sidebar() { - $generate_settings = wp_parse_args( - get_option( 'generate_secondary_nav_settings', array() ), - generate_secondary_nav_get_defaults() - ); - - if ( 'secondary-nav-left-sidebar' === $generate_settings['secondary_nav_position_setting'] ) { - echo '
            '; - generate_secondary_navigation_position(); - echo '
            '; - } - - } -} - -if ( ! function_exists( 'generate_secondary_navigation_position' ) ) { - /** - * Build our secondary navigation. - * Would like to change this function name. - * - * @since 0.1 - */ - function generate_secondary_navigation_position() { - $generate_settings = wp_parse_args( - get_option( 'generate_secondary_nav_settings', array() ), - generate_secondary_nav_get_defaults() - ); - if ( has_nav_menu( 'secondary' ) ) : - do_action( 'generate_before_secondary_navigation' ); - - $classes = generate_get_secondary_navigation_class(); - $classes = implode( ' ', $classes ); - $attributes = [ - 'id' => 'secondary-navigation', - 'aria-label' => esc_attr__( 'Secondary', 'gp-premium' ), - 'class' => $classes, - ]; - $microdata = ''; - - if ( function_exists( 'generate_get_schema_type' ) && 'microdata' === generate_get_schema_type() ) { - $attributes['itemtype'] = 'https://schema.org/SiteNavigationElement'; - $attributes['itemscope'] = true; - $microdata = ' itemtype="https://schema.org/SiteNavigationElement" itemscope="itemscope"'; - } - - $secondary_nav_attributes = sprintf( - 'id="secondary-navigation" aria-label="%1$s" class="%2$s"%3$s"', - esc_attr__( 'Secondary', 'gp-premium' ), - esc_attr( $classes ), - $microdata - ); - - if ( function_exists( 'generate_get_attr' ) ) { - $secondary_nav_attributes = generate_get_attr( - 'secondary-navigation', - $attributes - ); - } - ?> - - - - '; - do_action( 'generate_secondary_menu_bar_items' ); - echo ''; - } - } -} - -if ( ! function_exists( 'generate_secondary_nav_body_classes' ) ) { - add_filter( 'body_class', 'generate_secondary_nav_body_classes' ); - /** - * Adds custom classes to the array of body classes. - * - * @since 0.1 - * @param array $classes Existing body classes. - */ - function generate_secondary_nav_body_classes( $classes ) { - if ( ! has_nav_menu( 'secondary' ) ) { - return $classes; - } - - $generate_settings = wp_parse_args( - get_option( 'generate_secondary_nav_settings', array() ), - generate_secondary_nav_get_defaults() - ); - - $classes[] = ( $generate_settings['secondary_nav_position_setting'] ) ? $generate_settings['secondary_nav_position_setting'] : 'secondary-nav-below-header'; - - if ( 'left' === $generate_settings['secondary_nav_alignment'] ) { - $classes[] = 'secondary-nav-aligned-left'; - } elseif ( 'center' === $generate_settings['secondary_nav_alignment'] ) { - $classes[] = 'secondary-nav-aligned-center'; - } elseif ( 'right' === $generate_settings['secondary_nav_alignment'] ) { - $classes[] = 'secondary-nav-aligned-right'; - } else { - $classes[] = 'secondary-nav-aligned-left'; - } - - return $classes; - } -} - -if ( ! function_exists( 'generate_secondary_menu_classes' ) ) { - add_filter( 'generate_secondary_menu_class', 'generate_secondary_menu_classes' ); - /** - * Adds custom classes to the menu. - * - * @since 0.1 - * @param array $classes Existing classes. - */ - function generate_secondary_menu_classes( $classes ) { - - $classes[] = 'secondary-menu'; - $classes[] = 'sf-menu'; - - return $classes; - - } -} - -if ( ! function_exists( 'generate_secondary_navigation_classes' ) ) { - add_filter( 'generate_secondary_navigation_class', 'generate_secondary_navigation_classes' ); - /** - * Adds custom classes to the navigation. - * - * @since 0.1 - * @param array $classes Existing classes. - */ - function generate_secondary_navigation_classes( $classes ) { - $classes[] = 'secondary-navigation'; - - $generate_settings = wp_parse_args( - get_option( 'generate_secondary_nav_settings', array() ), - generate_secondary_nav_get_defaults() - ); - - $nav_layout = $generate_settings['secondary_nav_layout_setting']; - - if ( 'secondary-contained-nav' === $nav_layout ) { - if ( function_exists( 'generate_is_using_flexbox' ) && generate_is_using_flexbox() ) { - $navigation_location = $generate_settings['secondary_nav_position_setting']; - - if ( 'secondary-nav-float-right' !== $navigation_location && 'secondary-nav-float-left' !== $navigation_location ) { - $classes[] = 'grid-container'; - } - } else { - $classes[] = 'grid-container'; - $classes[] = 'grid-parent'; - } - } - - if ( 'left' === $generate_settings['secondary_nav_dropdown_direction'] ) { - $layout = $generate_settings['secondary_nav_position_setting']; - - switch ( $layout ) { - case 'secondary-nav-below-header': - case 'secondary-nav-above-header': - case 'secondary-nav-float-right': - case 'secondary-nav-float-left': - $classes[] = 'sub-menu-left'; - break; - } - } - - if ( $generate_settings['merge_top_bar'] && is_active_sidebar( 'top-bar' ) ) { - $classes[] = 'has-top-bar'; - } - - if ( generate_secondary_nav_has_menu_bar_items() ) { - $classes[] = 'has-menu-bar-items'; - } - - return $classes; - - } -} - -if ( ! function_exists( 'generate_inside_secondary_navigation_classes' ) ) { - add_filter( 'generate_inside_secondary_navigation_class', 'generate_inside_secondary_navigation_classes' ); - /** - * Adds custom classes to the inner navigation - * - * @since 1.3.41 - * @param array $classes Existing classes. - */ - function generate_inside_secondary_navigation_classes( $classes ) { - $classes[] = 'inside-navigation'; - - $generate_settings = wp_parse_args( - get_option( 'generate_secondary_nav_settings', array() ), - generate_secondary_nav_get_defaults() - ); - - $inner_nav_width = $generate_settings['secondary_nav_inner_width']; - - if ( 'full-width' !== $inner_nav_width ) { - $classes[] = 'grid-container'; - $classes[] = 'grid-parent'; - } - - return $classes; - - } -} - -if ( ! function_exists( 'generate_secondary_nav_css' ) ) { - /** - * Generate the CSS in the section using the Theme Customizer. - * - * @since 0.1 - */ - function generate_secondary_nav_css() { - - $generate_settings = wp_parse_args( - get_option( 'generate_secondary_nav_settings', array() ), - generate_secondary_nav_get_defaults() - ); - - if ( function_exists( 'generate_spacing_get_defaults' ) ) { - $spacing_settings = wp_parse_args( - get_option( 'generate_spacing_settings', array() ), - generate_spacing_get_defaults() - ); - $separator = $spacing_settings['separator']; - } else { - $separator = 20; - } - - // Check if we're using our legacy typography system. - $using_dynamic_typography = function_exists( 'generate_is_using_dynamic_typography' ) && generate_is_using_dynamic_typography(); - $secondary_nav_family = ''; - - if ( ! $using_dynamic_typography ) { - if ( function_exists( 'generate_get_font_family_css' ) ) { - $secondary_nav_family = generate_get_font_family_css( 'font_secondary_navigation', 'generate_secondary_nav_settings', generate_secondary_nav_get_defaults() ); - } else { - $secondary_nav_family = current( explode( ':', $generate_settings['font_secondary_navigation'] ) ); - } - - if ( '""' === $secondary_nav_family ) { - $secondary_nav_family = 'inherit'; - } - } - - // Get our untouched defaults. - $og_defaults = generate_secondary_nav_get_defaults( false ); - - $css = new GeneratePress_Secondary_Nav_CSS(); - - $css->set_selector( '.secondary-navigation' ); - $css->add_property( 'background-color', esc_attr( $generate_settings['navigation_background_color'] ) ); - $css->add_property( 'background-image', ! empty( $generate_settings['nav_image'] ) ? 'url(' . esc_url( $generate_settings['nav_image'] ) . ')' : '' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['nav_repeat'] ) ); - - if ( function_exists( 'generate_is_using_flexbox' ) && generate_is_using_flexbox() ) { - if ( function_exists( 'generate_spacing_get_defaults' ) && function_exists( 'generate_get_option' ) && 'text' === generate_get_option( 'container_alignment' ) ) { - $spacing_settings = wp_parse_args( - get_option( 'generate_spacing_settings', array() ), - generate_spacing_get_defaults() - ); - - $navigation_left_padding = absint( $spacing_settings['header_left'] ) - absint( $generate_settings['secondary_menu_item'] ); - $navigation_right_padding = absint( $spacing_settings['header_right'] ) - absint( $generate_settings['secondary_menu_item'] ); - - $css->set_selector( '.secondary-nav-below-header .secondary-navigation .inside-navigation.grid-container, .secondary-nav-above-header .secondary-navigation .inside-navigation.grid-container' ); - $css->add_property( 'padding', generate_padding_css( 0, $navigation_right_padding, 0, $navigation_left_padding ) ); - } - } - - if ( 'secondary-nav-above-header' === $generate_settings['secondary_nav_position_setting'] && has_nav_menu( 'secondary' ) && is_active_sidebar( 'top-bar' ) ) { - $css->set_selector( '.secondary-navigation .top-bar' ); - $css->add_property( 'color', esc_attr( $generate_settings['navigation_text_color'] ) ); - $css->add_property( 'line-height', absint( $generate_settings['secondary_menu_item_height'] ), false, 'px' ); - - if ( ! $using_dynamic_typography ) { - $css->add_property( 'font-family', $secondary_nav_family ); - $css->add_property( 'font-weight', esc_attr( $generate_settings['secondary_navigation_font_weight'] ) ); - $css->add_property( 'text-transform', esc_attr( $generate_settings['secondary_navigation_font_transform'] ) ); - $css->add_property( 'font-size', absint( $generate_settings['secondary_navigation_font_size'] ), false, 'px' ); - } - - $css->set_selector( '.secondary-navigation .top-bar a' ); - $css->add_property( 'color', esc_attr( $generate_settings['navigation_text_color'] ) ); - - $css->set_selector( '.secondary-navigation .top-bar a:hover, .secondary-navigation .top-bar a:focus' ); - $css->add_property( 'color', esc_attr( $generate_settings['navigation_background_hover_color'] ) ); - } - - // Navigation text. - $css->set_selector( '.secondary-navigation .main-nav ul li a,.secondary-navigation .menu-toggle,.secondary-menu-bar-items .menu-bar-item > a' ); - $css->add_property( 'color', esc_attr( $generate_settings['navigation_text_color'] ) ); - - if ( ! $using_dynamic_typography ) { - $css->add_property( 'font-family', ( 'inherit' !== $secondary_nav_family ) ? $secondary_nav_family : null ); - $css->add_property( 'font-weight', esc_attr( $generate_settings['secondary_navigation_font_weight'] ), $og_defaults['secondary_navigation_font_weight'] ); - $css->add_property( 'text-transform', esc_attr( $generate_settings['secondary_navigation_font_transform'] ), $og_defaults['secondary_navigation_font_transform'] ); - $css->add_property( 'font-size', absint( $generate_settings['secondary_navigation_font_size'] ), $og_defaults['secondary_navigation_font_size'], 'px' ); - } - - $css->add_property( 'padding-left', absint( $generate_settings['secondary_menu_item'] ), $og_defaults['secondary_menu_item'], 'px' ); - $css->add_property( 'padding-right', absint( $generate_settings['secondary_menu_item'] ), $og_defaults['secondary_menu_item'], 'px' ); - $css->add_property( 'line-height', absint( $generate_settings['secondary_menu_item_height'] ), $og_defaults['secondary_menu_item_height'], 'px' ); - $css->add_property( 'background-image', ! empty( $generate_settings['nav_item_image'] ) ? 'url(' . esc_url( $generate_settings['nav_item_image'] ) . ')' : '' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['nav_item_repeat'] ) ); - - $css->set_selector( '.secondary-navigation .secondary-menu-bar-items' ); - $css->add_property( 'color', $generate_settings['navigation_text_color'] ); - - if ( ! $using_dynamic_typography ) { - $css->add_property( 'font-size', absint( $generate_settings['secondary_navigation_font_size'] ), $og_defaults['secondary_navigation_font_size'], 'px' ); - } - - // Mobile menu text on hover. - $css->set_selector( 'button.secondary-menu-toggle:hover,button.secondary-menu-toggle:focus' ); - $css->add_property( 'color', esc_attr( $generate_settings['navigation_text_color'] ) ); - - // Widget area navigation. - $css->set_selector( '.widget-area .secondary-navigation' ); - $css->add_property( 'margin-bottom', absint( $separator ), false, 'px' ); - - // Sub-navigation background. - $css->set_selector( '.secondary-navigation ul ul' ); - $css->add_property( 'background-color', esc_attr( $generate_settings['subnavigation_background_color'] ) ); - $css->add_property( 'top', 'auto' ); // Added for compatibility purposes on 22/12/2016. - - // Sub-navigation text. - $css->set_selector( '.secondary-navigation .main-nav ul ul li a' ); - $css->add_property( 'color', esc_attr( $generate_settings['subnavigation_text_color'] ) ); - - if ( ! $using_dynamic_typography ) { - $css->add_property( 'font-size', absint( $generate_settings['secondary_navigation_font_size'] - 1 ), absint( $og_defaults['secondary_navigation_font_size'] - 1 ), 'px' ); - } - - $css->add_property( 'padding-left', absint( $generate_settings['secondary_menu_item'] ), $og_defaults['secondary_menu_item'], 'px' ); - $css->add_property( 'padding-right', absint( $generate_settings['secondary_menu_item'] ), $og_defaults['secondary_menu_item'], 'px' ); - $css->add_property( 'padding-top', absint( $generate_settings['secondary_sub_menu_item_height'] ), $og_defaults['secondary_sub_menu_item_height'], 'px' ); - $css->add_property( 'padding-bottom', absint( $generate_settings['secondary_sub_menu_item_height'] ), $og_defaults['secondary_sub_menu_item_height'], 'px' ); - $css->add_property( 'background-image', ! empty( $generate_settings['sub_nav_item_image'] ) ? 'url(' . esc_url( $generate_settings['sub_nav_item_image'] ) . ')' : '' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['sub_nav_item_repeat'] ) ); - - // Menu item padding on RTL. - if ( is_rtl() ) { - $css->set_selector( 'nav.secondary-navigation .main-nav ul li.menu-item-has-children > a' ); - $css->add_property( 'padding-right', absint( $generate_settings['secondary_menu_item'] ), $og_defaults['secondary_menu_item'], 'px' ); - } - - // Dropdown arrow. - $css->set_selector( '.secondary-navigation .menu-item-has-children ul .dropdown-menu-toggle' ); - $css->add_property( 'padding-top', absint( $generate_settings['secondary_sub_menu_item_height'] ), $og_defaults['secondary_sub_menu_item_height'], 'px' ); - $css->add_property( 'padding-bottom', absint( $generate_settings['secondary_sub_menu_item_height'] ), $og_defaults['secondary_sub_menu_item_height'], 'px' ); - $css->add_property( 'margin-top', '-' . absint( $generate_settings['secondary_sub_menu_item_height'] ), '-' . absint( $og_defaults['secondary_sub_menu_item_height'] ), 'px' ); - - // Dropdown arrow. - $css->set_selector( '.secondary-navigation .menu-item-has-children .dropdown-menu-toggle' ); - $css->add_property( 'padding-right', absint( $generate_settings['secondary_menu_item'] ), $og_defaults['secondary_menu_item'], 'px' ); - - // Sub-navigation dropdown arrow. - $css->set_selector( '.secondary-navigation .menu-item-has-children ul .dropdown-menu-toggle' ); - $css->add_property( 'padding-top', absint( $generate_settings['secondary_sub_menu_item_height'] ), $og_defaults['secondary_sub_menu_item_height'], 'px' ); - $css->add_property( 'padding-bottom', absint( $generate_settings['secondary_sub_menu_item_height'] ), $og_defaults['secondary_sub_menu_item_height'], 'px' ); - $css->add_property( 'margin-top', '-' . absint( $generate_settings['secondary_sub_menu_item_height'] ), '-' . absint( $og_defaults['secondary_sub_menu_item_height'] ), 'px' ); - - // Navigation background/text on hover. - $css->set_selector( '.secondary-navigation .main-nav ul li:not([class*="current-menu-"]):hover > a, .secondary-navigation .main-nav ul li:not([class*="current-menu-"]):focus > a, .secondary-navigation .main-nav ul li.sfHover:not([class*="current-menu-"]) > a, .secondary-menu-bar-items .menu-bar-item:hover > a' ); - $css->add_property( 'color', esc_attr( $generate_settings['navigation_text_hover_color'] ) ); - $css->add_property( 'background-color', esc_attr( $generate_settings['navigation_background_hover_color'] ) ); - $css->add_property( 'background-image', ! empty( $generate_settings['nav_item_hover_image'] ) ? 'url(' . esc_url( $generate_settings['nav_item_hover_image'] ) . ')' : '' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['nav_item_hover_repeat'] ) ); - - // Sub-Navigation background/text on hover. - $css->set_selector( '.secondary-navigation .main-nav ul ul li:not([class*="current-menu-"]):hover > a,.secondary-navigation .main-nav ul ul li:not([class*="current-menu-"]):focus > a,.secondary-navigation .main-nav ul ul li.sfHover:not([class*="current-menu-"]) > a' ); - $css->add_property( 'color', esc_attr( $generate_settings['subnavigation_text_hover_color'] ) ); - $css->add_property( 'background-color', esc_attr( $generate_settings['subnavigation_background_hover_color'] ) ); - $css->add_property( 'background-image', ! empty( $generate_settings['sub_nav_item_hover_image'] ) ? 'url(' . esc_url( $generate_settings['sub_nav_item_hover_image'] ) . ')' : '' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['sub_nav_item_hover_repeat'] ) ); - - // Navigation background / text current + hover. - $css->set_selector( '.secondary-navigation .main-nav ul li[class*="current-menu-"] > a' ); - $css->add_property( 'color', esc_attr( $generate_settings['navigation_text_current_color'] ) ); - $css->add_property( 'background-color', esc_attr( $generate_settings['navigation_background_current_color'] ) ); - $css->add_property( 'background-image', ! empty( $generate_settings['nav_item_current_image'] ) ? 'url(' . esc_url( $generate_settings['nav_item_current_image'] ) . ')' : '' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['nav_item_current_repeat'] ) ); - - // Sub-Navigation background / text current + hover. - $css->set_selector( '.secondary-navigation .main-nav ul ul li[class*="current-menu-"] > a' ); - $css->add_property( 'color', esc_attr( $generate_settings['subnavigation_text_current_color'] ) ); - $css->add_property( 'background-color', esc_attr( $generate_settings['subnavigation_background_current_color'] ) ); - $css->add_property( 'background-image', ! empty( $generate_settings['sub_nav_item_current_image'] ) ? 'url(' . esc_url( $generate_settings['sub_nav_item_current_image'] ) . ')' : '' ); - $css->add_property( 'background-repeat', esc_attr( $generate_settings['sub_nav_item_current_repeat'] ) ); - - // RTL menu item padding. - if ( is_rtl() ) { - $css->set_selector( '.secondary-navigation .main-nav ul li.menu-item-has-children > a' ); - $css->add_property( 'padding-right', absint( $generate_settings['secondary_menu_item'] ), false, 'px' ); - } - - if ( function_exists( 'generate_get_option' ) && function_exists( 'generate_get_defaults' ) ) { - $theme_defaults = generate_get_defaults(); - - if ( isset( $theme_defaults['icons'] ) ) { - if ( 'svg' === generate_get_option( 'icons' ) ) { - $css->set_selector( '.secondary-navigation.toggled .dropdown-menu-toggle:before' ); - $css->add_property( 'display', 'none' ); - } - } - } - - $mobile_css = '@media ' . generate_premium_get_media_query( 'mobile-menu' ) . ' {.secondary-menu-bar-items .menu-bar-item:hover > a{background: none;color: ' . $generate_settings['navigation_text_color'] . ';}}'; - - // Return our dynamic CSS. - return $css->css_output() . $mobile_css; - } -} - -if ( ! function_exists( 'generate_secondary_color_scripts' ) ) { - add_action( 'wp_enqueue_scripts', 'generate_secondary_color_scripts', 110 ); - /** - * Enqueue scripts and styles - */ - function generate_secondary_color_scripts() { - // Bail if no Secondary menu is set. - if ( ! has_nav_menu( 'secondary' ) ) { - return; - } - - wp_add_inline_style( 'generate-secondary-nav', generate_secondary_nav_css() ); - - if ( class_exists( 'GeneratePress_Typography' ) ) { - wp_add_inline_style( 'generate-secondary-nav', GeneratePress_Typography::get_css( 'secondary-nav' ) ); - } - } -} - -if ( ! function_exists( 'generate_secondary_navigation_class' ) ) { - /** - * Display the classes for the secondary navigation. - * - * @since 0.1 - * @param string|array $class One or more classes to add to the class list. - */ - function generate_secondary_navigation_class( $class = '' ) { - // Separates classes with a single space, collates classes for post DIV. - echo 'class="' . join( ' ', generate_get_secondary_navigation_class( $class ) ) . '"'; // phpcs:ignore -- Escaped in generate_get_secondary_navigation_class. - } -} - -if ( ! function_exists( 'generate_get_secondary_navigation_class' ) ) { - /** - * Retrieve the classes for the secondary navigation. - * - * @since 0.1 - * @param string|array $class One or more classes to add to the class list. - * @return array Array of classes. - */ - function generate_get_secondary_navigation_class( $class = '' ) { - $classes = array(); - - if ( ! empty( $class ) ) { - if ( ! is_array( $class ) ) { - $class = preg_split( '#\s+#', $class ); - } - - $classes = array_merge( $classes, $class ); - } - - $classes = array_map( 'esc_attr', $classes ); - - return apply_filters( 'generate_secondary_navigation_class', $classes, $class ); - } -} - -if ( ! function_exists( 'generate_secondary_menu_class' ) ) { - /** - * Display the classes for the secondary navigation. - * - * @since 0.1 - * @param string|array $class One or more classes to add to the class list. - */ - function generate_secondary_menu_class( $class = '' ) { - // Separates classes with a single space, collates classes for post DIV. - echo 'class="' . join( ' ', generate_get_secondary_menu_class( $class ) ) . '"'; // phpcs:ignore -- Escaped in generate_get_secondary_menu_class. - } -} - -if ( ! function_exists( 'generate_get_secondary_menu_class' ) ) { - /** - * Retrieve the classes for the secondary navigation. - * - * @since 0.1 - * @param string|array $class One or more classes to add to the class list. - * @return array Array of classes. - */ - function generate_get_secondary_menu_class( $class = '' ) { - $classes = array(); - - if ( ! empty( $class ) ) { - if ( ! is_array( $class ) ) { - $class = preg_split( '#\s+#', $class ); - } - - $classes = array_merge( $classes, $class ); - } - - $classes = array_map( 'esc_attr', $classes ); - - return apply_filters( 'generate_secondary_menu_class', $classes, $class ); - } -} - -if ( ! function_exists( 'generate_inside_secondary_navigation_class' ) ) { - /** - * Display the classes for the inner navigation. - * - * @since 0.1 - * @param string|array $class One or more classes to add to the class list. - */ - function generate_inside_secondary_navigation_class( $class = '' ) { - $classes = array(); - - if ( ! empty( $class ) ) { - if ( ! is_array( $class ) ) { - $class = preg_split( '#\s+#', $class ); - } - - $classes = array_merge( $classes, $class ); - } - - $classes = array_map( 'esc_attr', $classes ); - - $return = apply_filters( 'generate_inside_secondary_navigation_class', $classes, $class ); - - // Separates classes with a single space, collates classes for post DIV. - echo 'class="' . join( ' ', $return ) . '"'; // phpcs:ignore -- Escaped above. - } -} - -if ( ! function_exists( 'generate_secondary_nav_remove_top_bar' ) ) { - add_action( 'wp', 'generate_secondary_nav_remove_top_bar' ); - /** - * Remove the top bar and add it to the Secondary Navigation if it's set - */ - function generate_secondary_nav_remove_top_bar() { - $generate_settings = wp_parse_args( - get_option( 'generate_secondary_nav_settings', array() ), - generate_secondary_nav_get_defaults() - ); - - if ( $generate_settings['merge_top_bar'] && 'secondary-nav-above-header' === $generate_settings['secondary_nav_position_setting'] && has_nav_menu( 'secondary' ) && is_active_sidebar( 'top-bar' ) ) { - remove_action( 'generate_before_header', 'generate_top_bar', 5 ); - add_action( 'generate_inside_secondary_navigation', 'generate_secondary_nav_top_bar_widget', 5 ); - add_filter( 'generate_is_top_bar_active', '__return_false' ); - } - } -} - -if ( ! function_exists( 'generate_secondary_nav_top_bar_widget' ) ) { - /** - * Build the top bar widget area - * This is placed into the secondary navigation if set - */ - function generate_secondary_nav_top_bar_widget() { - if ( ! is_active_sidebar( 'top-bar' ) ) { - return; - } - ?> -
            -
            - -
            -
            - .secondary-navigation .main-nav ul li a, .secondary-navigation .menu-toggle, .secondary-menu-bar-items .menu-bar-item > a{padding: 0 ' + newval + 'px;}.secondary-navigation .menu-item-has-children .dropdown-menu-toggle{padding-right:' + newval + 'px;}' ); - setTimeout(function() { - jQuery( 'style#secondary_menu_item' ).not( ':last' ).remove(); - }, 50); - } ); - } ); - - wp.customize( 'generate_secondary_nav_settings[secondary_menu_item_height]', function( value ) { - value.bind( function( newval ) { - jQuery( 'head' ).append( '' ); - setTimeout(function() { - jQuery( 'style#secondary_menu_item_height' ).not( ':last' ).remove(); - }, 50); - } ); - } ); - - wp.customize( 'generate_secondary_nav_settings[secondary_sub_menu_item_height]', function( value ) { - value.bind( function( newval ) { - jQuery( 'head' ).append( '' ); - setTimeout(function() { - jQuery( 'style#secondary_sub_menu_item_height' ).not( ':last' ).remove(); - }, 50); - } ); - } ); - -})( jQuery ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/generate-secondary-nav.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/generate-secondary-nav.php deleted file mode 100644 index 7c3e48eb..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/secondary-nav/generate-secondary-nav.php +++ /dev/null @@ -1,23 +0,0 @@ - *:last-child { - margin-bottom: 0; -} - -.generate-sections-container { - background-size: cover; -} - -.generate-sections-container.no-padding .generate-sections-inside-container { - padding: 0px !important; -} - -.generate-sections-enabled.one-container .site-content { - padding: 0; -} - -.generate-sections-enabled.one-container .container { - background: transparent; -} - -.generate-sections-enabled.one-container .site-main { - margin: 0 !important; -} - -.generate-sections-enabled .entry-content { - text-align: center; -} - -.separate-containers .site-main > .generate-sections-container { - margin-bottom: 0; -} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/css/style.min.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/css/style.min.css deleted file mode 100644 index 802b011a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/css/style.min.css +++ /dev/null @@ -1 +0,0 @@ -.sections-no-sidebars.generate-sections-enabled .container.grid-container,.sections-sidebars.no-sidebar.generate-sections-enabled .container.grid-container{max-width:100%}.sections-no-sidebars.generate-sections-enabled #primary.content-area,.sections-sidebars.no-sidebar.generate-sections-enabled #primary.content-area{width:100%}.sections-no-sidebars.generate-sections-enabled.separate-containers #main.site-main,.sections-no-sidebars.generate-sections-enabled.separate-containers .hentry,.sections-sidebars.no-sidebar.generate-sections-enabled.separate-containers #main.site-main,.sections-sidebars.no-sidebar.generate-sections-enabled.separate-containers .hentry{margin:0}.generate-sections-inside-container>:last-child{margin-bottom:0}.generate-sections-container{background-size:cover}.generate-sections-container.no-padding .generate-sections-inside-container{padding:0!important}.generate-sections-enabled.one-container .site-content{padding:0}.generate-sections-enabled.one-container .container{background:0 0}.generate-sections-enabled.one-container .site-main{margin:0!important}.generate-sections-enabled .entry-content{text-align:center}.separate-containers .site-main>.generate-sections-container{margin-bottom:0} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/generate-sections.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/generate-sections.php deleted file mode 100644 index 2703c8e4..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/generate-sections.php +++ /dev/null @@ -1,329 +0,0 @@ -ID, '_generate_use_sections', TRUE) : ''; - - if ( is_home() || is_archive() || is_search() || is_attachment() || is_tax() ) { - return $template; - } - - if ( isset( $use_sections['use_sections'] ) && 'true' == $use_sections['use_sections'] ) { - - $new_template = dirname( __FILE__ ) . '/templates/template.php'; - - if ( '' != $new_template ) { - return $new_template; - } - } - return $template; - - } -} - -if ( ! function_exists( 'generate_sections_show_excerpt' ) ) { - add_filter( 'generate_show_excerpt', 'generate_sections_show_excerpt' ); - /** - * If Sections is enabled on a post, make sure we use the excerpt field on the blog page - */ - function generate_sections_show_excerpt( $show_excerpt ) { - global $post; - $use_sections = ( isset( $post ) ) ? get_post_meta( $post->ID, '_generate_use_sections', TRUE) : ''; - - if ( isset( $use_sections['use_sections'] ) && 'true' == $use_sections['use_sections'] ) { - return true; - } - - return $show_excerpt; - } -} - -if ( ! function_exists( 'generate_sections_styles' ) ) { - add_action( 'wp_enqueue_scripts', 'generate_sections_styles' ); - /** - * Enqueue necessary scripts if sections are enabled - */ - function generate_sections_styles() { - - global $post; - $use_sections = ( isset( $post ) ) ? get_post_meta( $post->ID, '_generate_use_sections', TRUE) : ''; - - // Bail if we're on a posts page - if ( is_home() || is_archive() || is_search() || is_attachment() || is_tax() ) { - return; - } - - if ( isset( $use_sections['use_sections'] ) && 'true' == $use_sections['use_sections'] ) { - wp_enqueue_style( 'generate-sections-styles', plugin_dir_url( __FILE__ ) . 'css/style.min.css' ); - wp_enqueue_script( 'generate-sections-parallax', plugin_dir_url( __FILE__ ) . 'js/parallax.min.js', array(), GENERATE_SECTIONS_VERSION, true ); - } - } -} - -if ( ! function_exists( 'generate_sections_body_classes' ) ) { - add_filter( 'body_class', 'generate_sections_body_classes' ); - /** - * Add classes to our element when sections are enabled - */ - function generate_sections_body_classes( $classes ) { - global $post; - $use_sections = ( isset( $post ) ) ? get_post_meta( $post->ID, '_generate_use_sections', TRUE) : ''; - $sidebars = apply_filters( 'generate_sections_sidebars', false ); - - // Bail if we're on a posts page - if ( is_home() || is_archive() || is_search() || is_attachment() || is_tax() ) { - return $classes; - } - - if ( isset( $use_sections['use_sections'] ) && 'true' == $use_sections['use_sections'] ) { - $classes[] = 'generate-sections-enabled'; - } - - if ( ( isset( $use_sections['use_sections'] ) && 'true' == $use_sections['use_sections'] ) && ! $sidebars ) { - $classes[] = 'sections-no-sidebars'; - } - - if ( ( isset( $use_sections['use_sections'] ) && 'true' == $use_sections['use_sections'] ) && $sidebars ) { - $classes[] = 'sections-sidebars'; - } - - return $classes; - } -} - -if ( ! function_exists( 'generate_sections_add_css' ) ) { - add_action( 'wp_enqueue_scripts', 'generate_sections_add_css', 500 ); - /** - * Create the CSS for our sections - */ - function generate_sections_add_css() { - global $post; - $use_sections = ( isset( $post ) ) ? get_post_meta( $post->ID, '_generate_use_sections', TRUE) : ''; - - if ( ! isset( $use_sections['use_sections'] ) ) { - return; - } - - if ( 'true' !== $use_sections['use_sections'] ) { - return; - } - - if ( is_home() || is_archive() || is_search() || is_attachment() || is_tax() ) { - return; - } - - if ( function_exists( 'generate_spacing_get_defaults' ) ) { - $spacing_settings = wp_parse_args( - get_option( 'generate_spacing_settings', array() ), - generate_spacing_get_defaults() - ); - - $left_padding = $spacing_settings['content_left']; - $right_padding = $spacing_settings['content_right']; - $mobile_padding_left = ( isset( $spacing_settings[ 'mobile_content_left' ] ) ) ? $spacing_settings[ 'mobile_content_left' ] : 30; - $mobile_padding_right = ( isset( $spacing_settings[ 'mobile_content_right' ] ) ) ? $spacing_settings[ 'mobile_content_right' ] : 30; - } else { - $right_padding = 40; - $left_padding = 40; - $mobile_padding = 30; - } - - $sections = ( isset( $post ) ) ? get_post_meta( $post->ID, '_generate_sections', TRUE) : ''; - - // check if the repeater field has rows of data - if ( $sections && '' !== $sections ) { - - $css = '.generate-sections-inside-container {padding-left:' . $left_padding . 'px;padding-right:' . $right_padding . 'px;}'; - // loop through the rows of data - $i = 0; - foreach ( $sections['sections'] as $section ) : - $i++; - - // Get image details - $image_id = ( isset( $section['background_image'] ) && '' !== $section['background_image'] ) ? intval( $section['background_image'] ) : ''; - $image_url = ( '' !== $image_id ) ? wp_get_attachment_image_src( $image_id, 'full' ) : ''; - - // Get the padding type - $padding_type = apply_filters( 'generate_sections_padding_type','px' ); - - // If someone has changed the padding type using a filter, use their value - if ( 'px' !== $padding_type ) { - $top_padding_type = $padding_type; - $bottom_padding_type = $padding_type; - } else { - $top_padding_type = ( isset( $section['top_padding_unit'] ) && '' !== $section['top_padding_unit'] ) ? $section['top_padding_unit'] : $padding_type; - $bottom_padding_type = ( isset( $section['bottom_padding_unit'] ) && '' !== $section['bottom_padding_unit'] ) ? $section['bottom_padding_unit'] : $padding_type; - } - - // Default padding top - $padding_top = apply_filters( 'generate_sections_default_padding_top','40' ); - - // Default padding bottom - $padding_bottom = apply_filters( 'generate_sections_default_padding_bottom','40' ); - - $custom_id = ( isset( $section['custom_id'] ) ) ? $section['custom_id'] : ''; - $custom_id = ( '' == $custom_id ) ? "generate-section-$i" : $custom_id; - - // Get the values - $background_color = ( isset( $section['background_color'] ) && '' !== $section['background_color'] ) ? 'background-color:' . esc_attr( $section['background_color'] ) . ';' : ''; - $background_image = ( ! empty( $image_url[0] ) ) ? 'background-image:url(' . esc_url( $image_url[0] ) . ');' : ''; - - if ( isset( $section['background_color_overlay'] ) && '' !== $section['background_color_overlay'] ) { - if ( '' !== $background_image && '' !== $background_color ) { - $background_image = 'background-image:linear-gradient(0deg, ' . $section['background_color'] . ',' . $section['background_color'] . '), url(' . esc_url( $image_url[0] ) . ');'; - $background_color = ''; - } - } - - $text_color = ( isset( $section['text_color'] ) && '' !== $section['text_color'] ) ? 'color:' . esc_attr( $section['text_color'] ) . ';' : ''; - $link_color = ( isset( $section['link_color'] ) && '' !== $section['link_color'] ) ? 'color:' . esc_attr( $section['link_color'] ) . ';' : ''; - $link_color_hover = ( isset( $section['link_color_hover'] ) && '' !== $section['link_color_hover'] ) ? 'color:' . esc_attr( $section['link_color_hover'] ) . ';' : ''; - $top_padding = ( isset( $section['top_padding'] ) && '' !== $section['top_padding'] ) ? 'padding-top:' . absint( $section['top_padding'] ) . $top_padding_type . ';' : 'padding-top:' . $padding_top . 'px;'; - $bottom_padding = ( isset( $section['bottom_padding'] ) && '' !== $section['bottom_padding'] ) ? 'padding-bottom:' . absint( $section['bottom_padding'] ) . $bottom_padding_type . ';' : 'padding-bottom:' . $padding_bottom . 'px;'; - - // Outer container - if ( '' !== $background_color || '' !== $background_image ) { - $css .= '#' . $custom_id . '.generate-sections-container{' . $background_color . $background_image . '}'; - } - - // Inner container - if ( '' !== $top_padding || '' !== $bottom_padding || '' !== $text_color ) { - $css .= '#' . $custom_id . ' .generate-sections-inside-container{' . $top_padding . $bottom_padding . $text_color . '}'; - } - - // Link color - if ( '' !== $link_color ) { - $css .= '#' . $custom_id . ' a,#generate-section-' . $i . ' a:visited{' . $link_color . '}'; - } - - // Link color hover - if ( '' !== $link_color_hover ) { - $css .= '#' . $custom_id . ' a:hover{' . $link_color_hover . '}'; - } - - $mobile = generate_premium_get_media_query( 'mobile' ); - $css .= '@media ' . esc_attr( $mobile ) . ' {.generate-sections-inside-container {padding-left: ' . $mobile_padding_left . 'px;padding-right: ' . $mobile_padding_right . 'px;}}'; - endforeach; - - // Build CSS - wp_add_inline_style( 'generate-style', $css ); - - } - } -} - -if ( ! function_exists( 'generate_sections_filter_admin_init' ) ) { - add_action( 'admin_init', 'generate_sections_filter_admin_init' ); - /* - * Recreate the default filters on the_content - * this will make it much easier to output the meta content with proper/expected formatting - */ - function generate_sections_filter_admin_init() { - if ( user_can_richedit() ) { - add_filter( 'generate_section_content', 'convert_smilies' ); - add_filter( 'generate_section_content', 'convert_chars' ); - add_filter( 'generate_section_content', 'wpautop' ); - add_filter( 'generate_section_content', 'shortcode_unautop' ); - add_filter( 'generate_section_content', 'prepend_attachment' ); - } - } -} - -if ( ! function_exists( 'generate_sections_filter' ) ) { - add_action( 'init', 'generate_sections_filter' ); - /* - * Recreate the default filters on the_content - * this will make it much easier to output the meta content with proper/expected formatting - */ - function generate_sections_filter() { - if ( is_admin() ) { - return; - } - - add_filter( 'generate_section_content', 'convert_smilies' ); - add_filter( 'generate_section_content', 'convert_chars' ); - add_filter( 'generate_section_content', 'wpautop' ); - add_filter( 'generate_section_content', 'shortcode_unautop' ); - add_filter( 'generate_section_content', 'prepend_attachment' ); - add_filter( 'generate_section_content', 'do_shortcode'); - - add_filter( 'generate_the_section_content', array($GLOBALS['wp_embed'], 'autoembed'), 9 ); - } -} - -if ( ! function_exists( 'generate_sections_save_content' ) ) { - add_action( 'save_post', 'generate_sections_save_content', 99, 4 ); - /* - * When we save our post, grab all of the section content and save it as regular content. - * - * This will prevent content loss/theme lock. - */ - function generate_sections_save_content( $post_id, $post ) { - - if ( ! isset( $_POST['_generate_sections_nonce'] ) || ! wp_verify_nonce( $_POST['_generate_sections_nonce'], 'generate_sections_nonce' ) ) { - return; - } - - if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) { - return; - } - - if ( ! current_user_can('edit_post', $post_id ) ) { - return; - } - - // See if we're using sections - $use_sections = get_post_meta( $post_id, '_generate_use_sections', true); - - // Make sure use sections exists and that we're not saving a revision - if ( ! isset( $use_sections['use_sections'] ) || wp_is_post_revision( $post_id ) ) { - return; - } - - // Return if sections are set to false - if ( 'true' !== $use_sections['use_sections'] ) { - return; - } - - // Get our sections - $sections = get_post_meta( $post_id, '_generate_sections', true ); - - // Return if there's nothing in our sections - if ( ! isset( $sections ) || '' == $sections ) { - return; - } - - // Prevent infinite loop - remove_action( 'save_post', 'generate_sections_save_content', 99, 4 ); - - // Let's do some stuff if sections aren't empty - if ( '' !== $sections ) { - // Set up our content variable - $content = ''; - - // Loop through each section and add our content to the content variable - foreach ( $sections['sections'] as $section ) { - $content .= ( isset( $section['content'] ) && '' !== $section['content'] ) ? $section['content'] . "\n\n" : ''; - } - - // Now update our post if we have section content - if ( '' !== $content ) { - $post->post_content = $content; - wp_update_post( $post, true ); - } - } - - // Re-hook the save_post action - add_action('save_post', 'generate_sections_save_content', 99, 4); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/js/parallax.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/js/parallax.js deleted file mode 100644 index 2c49e753..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/js/parallax.js +++ /dev/null @@ -1,17 +0,0 @@ -function generate_sections_parallax_element( selector, context ) { - context = context || document; - var elements = context.querySelectorAll( selector ); - return Array.prototype.slice.call( elements ); -} - -window.addEventListener( "scroll", function() { - var scrolledHeight= window.pageYOffset; - generate_sections_parallax_element( ".generate-sections-container.enable-parallax" ).forEach( function( el, index, array ) { - var limit = el.offsetTop + el.offsetHeight; - if( scrolledHeight > el.offsetTop && scrolledHeight <= limit ) { - el.style.backgroundPositionY = ( scrolledHeight - el.offsetTop ) / el.getAttribute( 'data-speed' ) + "px"; - } else { - el.style.backgroundPositionY = "0"; - } - }); -}); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/js/parallax.min.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/js/parallax.min.js deleted file mode 100644 index 7004f63b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/js/parallax.min.js +++ /dev/null @@ -1 +0,0 @@ -function generate_sections_parallax_element(e,t){var o=(t=t||document).querySelectorAll(e);return Array.prototype.slice.call(o)}window.addEventListener("scroll",function(){var e=window.pageYOffset;generate_sections_parallax_element(".generate-sections-container.enable-parallax").forEach(function(t,o,n){var a=t.offsetTop+t.offsetHeight;e>t.offsetTop&&e<=a?t.style.backgroundPositionY=(e-t.offsetTop)/t.getAttribute("data-speed")+"px":t.style.backgroundPositionY="0"})}); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/css/generate-sections-metabox.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/css/generate-sections-metabox.css deleted file mode 100644 index 6927a1b3..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/css/generate-sections-metabox.css +++ /dev/null @@ -1,348 +0,0 @@ -body { - -webkit-backface-visibility: hidden; -} -#_generate_sections_metabox { - opacity: 0; - height: 0; - overflow: hidden; -} - -#_generate_use_sections_metabox { - display: block !important; -} - -.generate_sections_control { - padding-top: 8px; -} - -.generate-sections-enabled #postdivrich { - opacity: 0; - height: 0; - overflow: hidden; -} -.generate-sections-enabled #_generate_sections_metabox { - opacity: 1; - height: auto; -} - -.generate_sections_control .warning { - color: red; -} -.generate_sections_control .dodelete-repeating_textareas { - float: right; -} -.generate_sections_control .section { - border: 1px solid #DFDFDF; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); - margin: 6px 0px 8px; - overflow: hidden; - position: relative; - background: white; -} -.generate_sections_control .section .section-title { - font-size: 14px; - padding: 0 0 0 15px; - margin: 0; - max-height: 50px; -} -.generate_sections_control .section .section-title > span { - cursor: pointer; - overflow:hidden; - display:block; - max-height:50px; - line-height:50px; - width:100%; -} -.generate_sections_control .section .section-controls { - position: absolute; - top:0; - right:0; - text-align: right; -} -.rtl .generate_sections_control .section .section-controls { - right:auto;left:0; -} -.generate_sections_control .section .section-controls a { - color: #aaa; - display:block; - float:left; - border-left: 1px solid #efefef; -} -.generate_sections_control .section .section-controls a:hover { - color: #777; -} -.generate_sections_control .section textarea { - display: none; -} -.generate_sections_control .section h3 { - color: #999; - font-size: 1em; - margin: 15px 6px; - text-transform: uppercase; -} -.generate_sections_control .section .ui-sortable-placeholder { - line-height: 1.4em; - border: 3px dashed #DDD; -} -.generate-sections-modal .media-menu-item { - cursor: pointer; -} -.custom-classes input { - width:100%; -} -.js .generate_sections_control .move-section { - cursor: move; -} -.generate-sections-modal p { - margin-top:5px; -} -#_generate_sections_metabox { - box-shadow: 0 0 0 transparent; -} -.section-controls a { - line-height:50px; - padding: 0 15px; - width:initial; - height:initial; -} - -.generate_sections_control .section .section-controls a.delete-section:hover { - color: red; -} - -.generate_sections_control p { - margin: 5px; -} - -textarea#generate-sections-editor { - border:0; -} - -#generate-sections-editor_ifr { - min-height: 400px; -} - -a#generate-add-section, a#generate-delete-sections { - height: auto; - line-height: inherit; - padding: 10px 20px; -} - -#wp-generate-sections-editor-wrap.old-sections-js .wp-media-buttons > * { - display:none; -} - -#wp-generate-sections-editor-wrap.old-sections-js .wp-media-buttons > .generate-sections-add-media, -#wp-generate-sections-editor-wrap.old-sections-js .wp-media-buttons > .su-generator-button, -#wp-generate-sections-editor-wrap.old-sections-js .wp-media-buttons > .envira-gallery-choose-gallery, -#wp-generate-sections-editor-wrap.old-sections-js .wp-media-buttons > .gridable-insert-row-button { - display: inline-block; -} - -#custom-media-buttons > * { - display: none; -} - -#custom-media-buttons > .insert-media, -#custom-media-buttons > .su-generator-button, -#custom-media-buttons > .envira-gallery-choose-gallery, -#custom-media-buttons > .gridable-insert-row-button, -#custom-media-buttons > .bfa-iconpicker { - display: inline-block; -} - -#_generate_sections_metabox { - background: transparent; - border: 0; -} -#_generate_sections_metabox > .handlediv, #_generate_sections_metabox > .hndle { - display: none; -} -#_generate_sections_metabox > .inside { - padding-left: 0; - padding-right: 0; -} - -body.wp-admin .grid-container { - max-width: 100%; -} - -.generate-sections-modal h3 { - margin-top: 0; -} - -input#custom_classes, -input#custom_id { - width: 100%; - max-width: 300px; -} - -.box-type select, -.inner-box-type select, -.parallax-effect select, -.top-padding input, -.bottom-padding input { - width: 100%; - box-sizing: border-box; -} - -.send-to-editor { - display: inline-block; - margin-top: 15px !important; -} - -#generate-sections-modal-dialog .media-frame-title .dashicons-arrow-down { - display: none; -} - -.gs-grid-container { - margin-left: auto; - margin-right: auto; - max-width: 100%; - padding-left: 10px; - padding-right: 10px; -} - -.gs-grid-parent { - padding-left: 0; - padding-right: 0; -} - -.gs-grid-container:before, -.gs-grid-container:after { - content: "."; - display: block; - overflow: hidden; - visibility: hidden; - font-size: 0; - line-height: 0; - width: 0; - height: 0; - clear: both; -} - -@media screen and (min-width: 769px) { - .gs-grid-50:before, - .gs-grid-50:after, - .gs-grid-33:before, - .gs-grid-33:after, - .gs-grid-25:before, - .gs-grid-25:after - .gs-grid-20:before, - .gs-grid-20:after - .gs-grid-12:before, - .gs-grid-12:after { - content: "."; - display: block; - overflow: hidden; - visibility: hidden; - font-size: 0; - line-height: 0; - width: 0; - height: 0; - clear: both; - } - .gs-grid-50, - .gs-grid-33, - .gs-grid-25, - .gs-grid-20, - .gs-grid-12 { - box-sizing: border-box; - padding-left: 10px; - padding-right: 10px; - } - .gs-grid-50 { - width: 50% !important; - float: left; - } - .gs-grid-33 { - width: 33.333% !important; - float: left; - } - .gs-grid-25 { - width: 25% !important; - float: left; - } - .gs-grid-20 { - width: 20% !important; - float: left; - } - .gs-grid-12 { - width: 12.5% !important; - float: left; - } - .top-border { - border-top: 1px solid #EFEFEF; - } - .bottom-border { - border-bottom: 1px solid #EFEFEF; - } - .border-right { - border-right: 1px solid #EFEFEF; - } - .border-left { - border-left: 1px solid #EFEFEF; - } -} - -@media screen and (max-width: 768px) { - .gs-grid-50, .gs-grid-33, .gs-grid-25, .gs-grid-12 { - width: 100% !important; - } - .generate_sections_control .section .section-controls { - position: relative; - } -} - -@media screen and (max-width: 500px) { - .generate_sections_control .section .section-controls a:first-child { - border-left: 0; - } -} - -#generate-sections-modal-dialog .media-modal-close { - text-decoration: none; - text-align: center; -} -/* - The styles below were ripped from the Media Modal in WordPress 3.5 - ~~ Thanks for building a beautiful Modal UI ( that I could steal ) -*/ -body.generate-modal-open { overflow: hidden; } - -.generate-sections-modal .media-modal { z-index: 65535; } -.generate-sections-modal .media-modal-backdrop { z-index: 65534; } -.generate-sections-modal .media-frame-content .panel { display: none; padding: 2em; } -.generate-sections-modal .media-frame-content .panel.active { display: block; } -.generate-sections-modal .media-frame-content .panel .section-title input { width:100%;padding:10px; } -.generate-sections-modal .media-frame-content .panel .html-active .mce-panel { display: none; } -.generate-sections-modal .media-frame-content .panel .html-active .wp-editor-area { display: block !important; min-height: 300px; } -.generate-sections-modal .media-frame-content .panel .mce-wp-dfw, .generate-sections-modal .media-frame-content .panel .qt-dfw { display: none; } -.generate-sections-modal .media-frame-content .panel .generate-sections-remove-image { display: none; } - -textarea.no-rich-edit { - width: 100%; - min-height: 300px; -} - -.wp-picker-container .wp-color-result.button { - height: 24px; - margin: 0 6px 6px 0px; - padding: 0 0 0 30px; - font-size: 11px; -} - -.wp-color-result:after { - display: none; -} - -.wp-color-result-text { - background: #f7f7f7; - border-radius: 0 2px 2px 0; - border-left: 1px solid #ccc; - color: #555; - display: block; - line-height: 22px; - padding: 0 6px; - text-align: center; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/css/lc_switch.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/css/lc_switch.css deleted file mode 100644 index 5f95b304..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/css/lc_switch.css +++ /dev/null @@ -1,92 +0,0 @@ -.lcs_wrap { - display: inline-block; - direction: ltr; - height: 28px; - vertical-align: middle; -} -.lcs_wrap input { - display: none; -} - -.lcs_switch { - display: inline-block; - position: relative; - width: 73px; - height: 28px; - border-radius: 30px; - background: #ddd; - overflow: hidden; - cursor: pointer; - transition: all .2s ease-in-out; -} -.lcs_cursor { - display: inline-block; - position: absolute; - top: 3px; - width: 22px; - height: 22px; - border-radius: 100%; - background: #fff; - box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.2), 0 3px 4px 0 rgba(0, 0, 0, 0.1); - z-index: 10; - transition: all .2s linear; -} -.lcs_label { - font-family: "Trebuchet MS", Helvetica, sans-serif; - font-size: 12px; - letter-spacing: 1px; - line-height: 18px; - color: #fff; - font-weight: bold; - position: absolute; - width: 33px; - top: 5px; - overflow: hidden; - text-align: center; - opacity: 0; - transition: all .2s ease-in-out .1s; -} -.lcs_label.lcs_label_on { - left: -70px; - z-index: 6; -} -.lcs_label.lcs_label_off { - right: -70px; - z-index: 5; -} - - -/* on */ -.lcs_switch.lcs_on { - background: #75b936; - box-shadow: 0 0 2px #579022 inset; -} -.lcs_switch.lcs_on .lcs_cursor { - left: 48px; -} -.lcs_switch.lcs_on .lcs_label_on { - left: 10px; - opacity: 1; -} - - -/* off */ -.lcs_switch.lcs_off { - background: #b2b2b2; - box-shadow: 0px 0px 2px #a4a4a4 inset; -} -.lcs_switch.lcs_off .lcs_cursor { - left: 3px; -} -.lcs_switch.lcs_off .lcs_label_off { - right: 10px; - opacity: 1; -} - - -/* disabled */ -.lcs_switch.lcs_disabled { - opacity: 0.65; - filter: alpha(opacity=65); - cursor: default; -} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/js/generate-sections-metabox-4.9.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/js/generate-sections-metabox-4.9.js deleted file mode 100644 index f9215062..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/js/generate-sections-metabox-4.9.js +++ /dev/null @@ -1,835 +0,0 @@ -/*-----------------------------------------------------------------------------------*/ -/* Generate Sections Metabox -/* -/* © Kathy Darling http://www.kathyisawesome.com -/* 2016-07-19. */ -/*-----------------------------------------------------------------------------------*/ - -/** - * @type {Object} JavaScript namespace for our application. - */ -var Generate_Sections = { - backbone_modal: { - __instance: undefined - } -}; - -(function($, Generate_Sections) { - - - // Model - Generate_Sections.Section = Backbone.Model.extend({ - defaults: { - "title": "", - "box_type": "", - "inner_box_type": "", - "custom_classes": "", - "custom_id": "", - "top_padding": "", - "bottom_padding": "", - "top_padding_unit": "", - "bottom_padding_unit": "", - "background_color": "", - "background_image": "", - "background_image_preview": "", - "parallax_effect": "", - "background_color_overlay": "", - "text_color": "", - "link_color": "", - "link_color_hover": "", - "content": "" - } - }); - - - // Collection - Generate_Sections.SectionsCollection = Backbone.Collection.extend({ - model: Generate_Sections.Section, - el: "#generate_sections_container", - comparator: function(model) { - return model.get('index'); - } - }); - - - /** - * Primary Modal Application Class - */ - Generate_Sections.backbone_modal.Application = Backbone.View.extend({ - - attributes: { - id: "generate-sections-modal-dialog", - class: "generate-sections-modal", - role: "dialog" - }, - - template: wp.template("generate-sections-modal-window"), - - mediaUploader: null, - - /*-----------------------------------------------------------------------------------*/ - /* tinyMCE settings - /*-----------------------------------------------------------------------------------*/ - - tmc_settings: {}, - - /*-----------------------------------------------------------------------------------*/ - /* tinyMCE defaults - /*-----------------------------------------------------------------------------------*/ - - tmc_defaults: { - theme: "modern", - menubar: false, - wpautop: true, - indent: false, - toolbar1: "bold,italic,underline,blockquote,strikethrough,bullist,numlist,alignleft,aligncenter,alignright,undo,redo,link,unlink,fullscreen", - plugins: "fullscreen,image,wordpress,wpeditimage,wplink", - max_height: 500 - }, - - /*-----------------------------------------------------------------------------------*/ - /* quicktags settings - /*-----------------------------------------------------------------------------------*/ - - qt_settings: {}, - - /*-----------------------------------------------------------------------------------*/ - /* quicktags defaults - /*-----------------------------------------------------------------------------------*/ - - qt_defaults: { - buttons: "strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,fullscreen" - }, - - model: Generate_Sections.Section, - - events: { - "click .media-modal-backdrop, .media-modal-close, .media-button-close": "closeModal", - "click .media-button-insert": "saveModal", - "click .media-menu-item": "switchTab", - "keydown": "keydown", - "click .generate-sections-upload-button": "openMediaUploader", - "click .generate-sections-remove-image": "removeImage", - "click div.media-frame-title h1": "toggleMenu" - }, - - - - /** - * Simple object to store any UI elements we need to use over the life of the application. - */ - ui: { - nav: undefined, - content: undefined - }, - - - /** - * Instantiates the Template object and triggers load. - */ - initialize: function() { - _.bindAll(this, "render", "closeModal", "saveModal", "switchTab"); - - this.focusManager = new wp.media.view.FocusManager({ - el: this.el - }); - - this.changeInsertText(); - this.tinyMCEsettings(); - this.render(); - }, - - /** - * switch the insert button text to "insert section" - */ - changeInsertText: function(restore) { - - var restore = typeof restore !== 'undefined' && restore == true ? true : false; - - if (restore == false && typeof(wp.media.view.l10n.insertIntoPost) !== "undefined") { - this.insertIntoPost = wp.media.view.l10n.insertIntoPost; - wp.media.view.l10n.insertIntoPost = generate_sections_metabox_i18n.insert_into_section; - // switch the insert button text back - } else if (restore == true && typeof(this.insertIntoPost) !== "undefined") { - wp.media.view.l10n.insertIntoPost = this.insertIntoPost; - } - }, - - - /** - * Merge the default TinyMCE settings - */ - tinyMCEsettings: function() { - // get the #content"s tinyMCE settings or use default - var init_settings = typeof tinyMCEPreInit == "object" && "mceInit" in tinyMCEPreInit && "content" in tinyMCEPreInit.mceInit ? tinyMCEPreInit.mceInit.content : this.tmc_defaults; - - // get the #content"s quicktags settings or use default - var qt_settings = typeof tinyMCEPreInit == "object" && "qtInit" in tinyMCEPreInit && "content" in tinyMCEPreInit.qtInit ? tinyMCEPreInit.qtInit.content : this.qt_defaults; - - var _this = this; - var custom_settings = { - selector: "#generate-sections-editor", - wp_autoresize_on: false, - cache_suffix: "", - min_height: 400, - } - - // merge our settings with WordPress" and store for later use - this.tmc_settings = $.extend({}, init_settings, custom_settings); - - this.qt_settings = $.extend({}, qt_settings, { - id: "generate-sections-editor" - }); - }, - - - /** - * Assembles the UI from loaded template. - * @internal Obviously, if the template fail to load, our modal never launches. - */ - render: function() { - - "use strict"; - - // Build the base window and backdrop, attaching them to the $el. - // Setting the tab index allows us to capture focus and redirect it in Application.preserveFocus - this.$el.attr("tabindex", "0") - .html(this.template); - - // Handle any attempt to move focus out of the modal. - //jQuery(document).on("focusin", this.preserveFocus); - - // set overflow to "hidden" on the body so that it ignores any scroll events while the modal is active - // and append the modal to the body. - jQuery("body").addClass("generate-modal-open").prepend(this.$el); - - // aria hide the background - jQuery("#wpwrap").attr("aria-hidden", "true"); - - this.renderContent(); - - this.renderPreview(); - - this.selected(); - this.colorPicker(); - this.startTinyMCE(); - - // Set focus on the modal to prevent accidental actions in the underlying page - this.$el.focus(); - - return this; - }, - - /** - * Make the menu mobile-friendly - */ - toggleMenu: function() { - this.$el.find('.media-menu').toggleClass('visible'); - }, - - /** - * Create the nav tabs & panels - */ - renderContent: function() { - - var model = this.model; - - var menu_item = wp.template("generate-sections-modal-menu-item"); - - // Save a reference to the navigation bar"s unordered list and populate it with items. - this.ui.nav = this.$el.find(".media-menu"); - - // reference to content area - this.ui.panels = this.$el.find(".media-frame-content"); - - // loop through the tabs - if (generate_sections_metabox_i18n.tabs.length) { - - // for...of is nicer, but not supported by minify, so stay with for...in for now - for (var tab in generate_sections_metabox_i18n.tabs) { - - if (generate_sections_metabox_i18n.tabs.hasOwnProperty(tab)) { - - tab = generate_sections_metabox_i18n.tabs[tab]; - - var $new_tab = $(menu_item({ - target: tab.target, - name: tab.title - })); - - var panel = wp.template("generate-sections-edit-" + tab.target); - - var $new_panel = $(panel(model.toJSON())); - - if (tab.active == "true") { - $new_tab.addClass("active"); - $new_panel.addClass("active"); - } - - jQuery( 'body' ).on( 'generate_section_show_settings', function() { - jQuery( '.generate-sections-modal .media-menu-item' ).removeClass('active'); - jQuery( '.generate-sections-modal .panel' ).removeClass('active'); - jQuery( '.generate-section-item-style' ).addClass('active'); - jQuery( '.generate-section-settings' ).addClass('active'); - }); - - this.ui.nav.append($new_tab); - this.ui.panels.append($new_panel); - } - } - } - - }, - - - /** - * Render the background image preview - */ - renderPreview: function(image_id) { - - var image_id = typeof image_id !== 'undefined' ? image_id : this.model.get("background_image"); - - var $preview = $("#generate-section-image-preview"); - $preview.children().remove(); - - if (image_id > 0) { - this.background = new wp.media.model.Attachment.get(image_id); - - this.background.fetch({ - success: function(att) { - if (_.contains(['png', 'jpg', 'gif', 'jpeg'], att.get('subtype'))) { - $("").attr("src", att.attributes.sizes.thumbnail.url).appendTo($preview); - $preview.next().find(".generate-sections-remove-image").show(); - } - } - }); - } - - }, - - - /** - * Set the default option for the select boxes - */ - selected: function() { - - var _this = this; - - this.$el.find("select").each(function(index, select) { - - var attribute = jQuery(select).attr("name"); - var selected = _this.model.get(attribute); - jQuery(select).val(selected); - - }); - }, - - /** - * Start the colorpicker - */ - colorPicker: function() { - this.$el.find(".generate-sections-color").wpColorPicker(); - }, - - /** - * Start TinyMCE on the textarea - */ - startTinyMCE: function() { - - // set the default editor - this.ui.panels.find("#wp-generate-sections-editor-wrap").addClass(generate_sections_metabox_i18n.default_editor); - - // remove tool buttons if richedit disabled - if (!generate_sections_metabox_i18n.user_can_richedit) { - this.ui.panels.find(".wp-editor-tabs").remove(); - } - - // add our copy to the collection in the tinyMCEPreInit object because switch editors - if (typeof tinyMCEPreInit == 'object') { - tinyMCEPreInit.mceInit["generate-sections-editor"] = this.tmc_settings; - tinyMCEPreInit.qtInit["generate-sections-editor"] = this.qt_settings; - tinyMCEPreInit.mceInit["generate-sections-editor"].wp_keep_scroll_position = false; - } - - try { - - var rich = (typeof tinyMCE != "undefined"); - - // turn on the quicktags editor - quicktags(this.qt_settings); - - // attempt to fix problem of quicktags toolbar with no buttons - QTags._buttonsInit(); - - if (rich !== false) { - // turn on tinyMCE - tinyMCE.init(this.tmc_settings); - } - - } catch (e) {} - - }, - - /** - * Launch Media Uploader - */ - openMediaUploader: function(e) { - - var _this = this; - - $input = jQuery(e.currentTarget).prev("#generate-sections-background-image"); - - e.preventDefault(); - - // If the uploader object has already been created, reopen the dialog - if (this.mediaUploader) { - this.mediaUploader.open(); - return; - } - // Extend the wp.media object - this.mediaUploader = wp.media.frames.file_frame = wp.media({ - title: generate_sections_metabox_i18n.media_library_title, - button: { - text: generate_sections_metabox_i18n.media_library_button - }, - multiple: false - }); - - - // When a file is selected, grab the URL and set it as the text field"s value - this.mediaUploader.on("select", function() { - - attachment = _this.mediaUploader.state().get("selection").first().toJSON(); - - $input.val(attachment.id); - - _this.renderPreview(attachment.id); - }); - // Open the uploader dialog - this.mediaUploader.open(); - - }, - - /** - * Remove the background image - */ - removeImage: function(e) { - e.preventDefault(); - $("#generate-section-image-preview").children().remove(); - $("#generate-section-image-preview").next().find(".generate-sections-remove-image").hide(); - $("#generate-sections-background-image").val(""); - }, - - - /** - * Closes the modal and cleans up after the instance. - * @param e {object} A jQuery-normalized event object. - */ - closeModal: function(e) { - "use strict"; - - e.preventDefault(); - this.undelegateEvents(); - jQuery(document).off("focusin"); - jQuery("body").removeClass("generate-modal-open"); - jQuery("body").removeClass("generate-section-content"); - - // remove restricted media modal tab focus once it's closed - this.$el.undelegate('keydown'); - - // remove the tinymce editor - // this needs to be called before the modal is closed or it will fail in Firefox (that was fun to figure out...) - if (typeof tinyMCE != "undefined") { - tinymce.EditorManager.execCommand("mceRemoveEditor", true, "generate-sections-editor"); - } - - // remove modal and unset instances - this.remove(); - Generate_Sections.backbone_modal.__instance = undefined; - this.mediaUploader = null; - Generate_Sections.modalOpen = null; - - // switch the insert button text back - this.changeInsertText(true); - - // send focus back to where it was prior to modal open - Generate_Sections.lastFocus.focus(); - - // aria unhide the background - jQuery("#wpwrap").attr("aria-hidden", "false"); - - // Fix bug where the window scrolls down 50px on close - var topDistance = jQuery("body").offset().top; - if ( topDistance >= jQuery("body").scrollTop() ) { - jQuery("body").scrollTop(0); - } - - }, - - /** - * Responds to the btn-ok.click event - * @param e {object} A jQuery-normalized event object. - * @todo You should make this your own. - */ - saveModal: function(e) { - "use strict"; - - this.model.get("index"); - - var model = this.model; - - // send the tinymce content to the textarea - if (typeof tinyMCE != "undefined") { - tinymce.triggerSave(); - } - - var $inputs = this.ui.panels.find("input, select, textarea"); - - $inputs.each(function(index, input) { - - var name = $(input).attr("name"); - - if (model.attributes.hasOwnProperty(name)) { - var value = $(input).val(); - model.set(name, value); - } - - }); - - this.closeModal(e); - }, - - /** - * Handles tab clicks and switches to corresponding panel - * @param e {object} A jQuery-normalized event object. - */ - switchTab: function(e) { - "use strict"; - e.preventDefault(); - - // close lingering wp link windows - if (typeof tinyMCE != "undefined" && 'style' == jQuery( e.currentTarget ).data( 'target' ) && this.ui.panels.find( '#wp-generate-sections-editor-wrap' ).hasClass( 'tmce-active' )) { - tinyMCE.activeEditor.execCommand('wp_link_cancel'); - tinyMCE.activeEditor.execCommand('wp_media_cancel'); - } - - this.ui.nav.children().removeClass("active"); - this.ui.panels.children().removeClass("active"); - - var target = jQuery(e.currentTarget).addClass("active").data("target"); - - this.ui.panels.find("div[data-id=" + target + "]").addClass("active"); - }, - - /** - * close on keyboard shortcuts - * @param {Object} event - */ - keydown: function(e) { - // Close the modal when escape is pressed. - if (27 === e.which && this.$el.is(':visible')) { - this.closeModal(e); - e.stopImmediatePropagation(); - } - } - - }); - - - // Singular View - Generate_Sections.sectionView = Backbone.View.extend({ - - model: Generate_Sections.Section, - tagName: 'div', - - initialize: function() { - // re-render on all changes EXCEPT index - this.listenTo(this.model, "change", this.maybeRender); - }, - - attributes: { - class: "ui-state-default section" - }, - - // Get the template from the DOM - template: wp.template("generate-sections-section"), - - events: { - 'click .edit-section': 'editSection', - 'click .section-title > span': 'editSection', - 'click .delete-section': 'removeSection', - 'click .toggle-section': 'toggleSection', - 'reorder': 'reorder', - }, - - maybeRender: function(e) { - if (this.model.hasChanged('index')) return; - this.render(); - }, - - // Render the single model - include an index. - render: function() { - this.model.set('index', this.model.collection.indexOf(this.model)); - this.$el.html(this.template(this.model.toJSON())); - - if (!this.model.get('title')) { - this.$el.find('h3.section-title > span').text(generate_sections_metabox_i18n.default_title); - } - this.$el.find('textarea').val(JSON.stringify(this.model)); - - return this; - }, - - - // launch the edit modal - editSection: function(e) { - - // stash the current focus - Generate_Sections.lastFocus = document.activeElement; - Generate_Sections.modalOpen = true; - - e.preventDefault(); - if (Generate_Sections.backbone_modal.__instance === undefined) { - Generate_Sections.backbone_modal.__instance = new Generate_Sections.backbone_modal.Application({ - model: this.model - }); - } - - }, - - // reorder after sort - reorder: function(event, index) { - this.$el.trigger('update-sort', [this.model, index]); - }, - - // remove/destroy a model - removeSection: function(e) { - e.preventDefault(); - if (confirm(generate_sections_metabox_i18n.confirm)) { - this.model.destroy(); - Generate_Sections.sectionList.render(); // manually calling instead of listening since listening interferes with sorting - } - }, - }); - - - // List View - Generate_Sections.sectionListView = Backbone.View.extend({ - - el: "#generate_sections_container", - events: { - 'update-sort': 'updateSort', - // 'add-section': 'addOne' - }, - - // callback for clone button - addSection: function(model) { - this.collection.add(model); - this.addOne(model); - }, - - addOne: function(model) { - var view = new Generate_Sections.sectionView({ - model: model - }); - this.$el.append(view.render().el); - }, - - render: function() { - this.$el.children().remove(); - this.collection.each(this.addOne, this); - return this; - }, - - updateSort: function(event, model, position) { - this.collection.remove(model); - - // renumber remaining models around missing model - this.collection.each(function(model, index) { - - var new_index = index; - if (index >= position) { - new_index += 1; - } - model.set('index', new_index); - }); - - // set the index of the missing model - model.set('index', position); - - // add the model back to the collection - this.collection.add(model, { - at: position - }); - - this.render(); - - }, - - }); - - - // The Buttons & Nonce - Generate_Sections.ButtonControls = Backbone.View.extend({ - - attributes: { - class: "generate_sections_buttons" - }, - - tagName: 'p', - - el: "#_generate_sections_metabox", - - template: wp.template("generate-sections-buttons"), - - // Attach events - events: { - "click .button-primary": "newSection", - "click #generate-delete-sections": "clearAll", - 'click .edit-section': 'editSection', - }, - - // create new - newSection: function(e) { - e.preventDefault(); - var newSection = new Generate_Sections.Section(); - Generate_Sections.sectionList.addSection(newSection); - }, - - // clear all models - clearAll: function(e) { - e.preventDefault(); - if (confirm(generate_sections_metabox_i18n.confirm)) { - Generate_Sections.sectionCollection.reset(); - Generate_Sections.sectionList.render(); - } - }, - - render: function() { - this.$el.find(".generate_sections_control").append(this.template); - return this; - }, - - }); - - - // init - Generate_Sections.initApplication = function() { - - // Create Collection From Existing Meta - Generate_Sections.sectionCollection = new Generate_Sections.SectionsCollection(generate_sections_metabox_i18n.sections); - - // Create the List View - Generate_Sections.sectionList = new Generate_Sections.sectionListView({ - collection: Generate_Sections.sectionCollection - }); - Generate_Sections.sectionList.render(); - - // Buttons - Generate_Sections.Buttons = new Generate_Sections.ButtonControls({ - collection: Generate_Sections.sectionCollection - }); - Generate_Sections.Buttons.render(); - - }; - - - /*-----------------------------------------------------------------------------------*/ - /* Execute the above methods in the Generate_Sections object. - /*-----------------------------------------------------------------------------------*/ - - jQuery(document).ready(function($) { - - Generate_Sections.initApplication(); - - $( '#generate_sections_container' ).sortable({ - axis: "y", - opacity: 0.5, - grid: [20, 10], - tolerance: "pointer", - handle: ".move-section", - update: function(event, ui) { - ui.item.trigger("reorder", ui.item.index()); - } - } ); - - if ( $( '.use-sections-switch' ).is( ':checked' ) ) { - setTimeout( function() { - generateShowSections(); - }, 200 ); - } else { - generateHideSections(); - } - - $( '.use-sections-switch' ).on( 'change', function( e ) { - var status = ( $(this).is( ':checked' ) ) ? 'checked' : 'unchecked'; - - if ( 'checked' == status ) { - generateShowSections(); - } else if ( 'unchecked' == status ) { - generateHideSections(); - } - } ); - - function generateShowSections() { - - // Hide send to editor button - $('.send-to-editor').css('display', 'none'); - - // Hide the editor - $('#postdivrich').css({ - 'opacity': '0', - 'height': '0', - 'overflow': 'hidden' - }); - - // Show the sections - $('#_generate_sections_metabox').css({ - 'opacity': '1', - 'height': 'auto' - }); - - // Remove and add the default editor - this removes any visible toolbars etc.. - // We need to set a timeout for this to work - // if (typeof tinyMCE != "undefined") { - // tinyMCE.EditorManager.execCommand("mceRemoveEditor", true, "content"); - // $( '.use-sections-cover' ).css( 'z-index','10000' ); - // setTimeout('tinyMCE.EditorManager.execCommand("mceAddEditor", true, "content");', 1); - // setTimeout('jQuery( ".use-sections-cover" ).css( "z-index","-1" );', 1000); - // } - - // Set a trigger - $('body').trigger('generate_show_sections'); - - } - - function generateHideSections() { - - // Show send to editor button - $('.send-to-editor').css('display', 'inline-block'); - - // Show the editor - $('#postdivrich').css({ - 'opacity': '1', - 'height': 'auto' - }); - - // Hide the sections - $('#_generate_sections_metabox').css({ - 'opacity': '0', - 'height': '0', - 'overflow': 'hidden' - }); - - $('body').trigger('generate_hide_sections'); - - } - - $( document ).on( 'click', '.edit-section.edit-settings', function() { - $( 'body' ).trigger( 'generate_section_show_settings' ); - }); - - }); - - -})(jQuery, Generate_Sections); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/js/generate-sections-metabox.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/js/generate-sections-metabox.js deleted file mode 100644 index 4c498070..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/js/generate-sections-metabox.js +++ /dev/null @@ -1,858 +0,0 @@ -/*-----------------------------------------------------------------------------------*/ -/* Generate Sections Metabox -/* -/* © Kathy Darling http://www.kathyisawesome.com -/* 2016-07-19. */ -/*-----------------------------------------------------------------------------------*/ - -/** - * @type {Object} JavaScript namespace for our application. - */ -var Generate_Sections = { - backbone_modal: { - __instance: undefined - } -}; - -(function($, Generate_Sections) { - - - // Model - Generate_Sections.Section = Backbone.Model.extend({ - defaults: { - "title": "", - "box_type": "", - "inner_box_type": "", - "custom_classes": "", - "custom_id": "", - "top_padding": "", - "bottom_padding": "", - "top_padding_unit": "", - "bottom_padding_unit": "", - "background_color": "", - "background_image": "", - "background_image_preview": "", - "parallax_effect": "", - "background_color_overlay": "", - "text_color": "", - "link_color": "", - "link_color_hover": "", - "content": "" - } - }); - - - // Collection - Generate_Sections.SectionsCollection = Backbone.Collection.extend({ - model: Generate_Sections.Section, - el: "#generate_sections_container", - comparator: function(model) { - return model.get('index'); - } - }); - - - /** - * Primary Modal Application Class - */ - Generate_Sections.backbone_modal.Application = Backbone.View.extend({ - - attributes: { - id: "generate-sections-modal-dialog", - class: "generate-sections-modal", - role: "dialog" - }, - - template: wp.template("generate-sections-modal-window"), - - mediaUploader: null, - - /*-----------------------------------------------------------------------------------*/ - /* tinyMCE settings - /*-----------------------------------------------------------------------------------*/ - - tmc_settings: {}, - - /*-----------------------------------------------------------------------------------*/ - /* tinyMCE defaults - /*-----------------------------------------------------------------------------------*/ - - tmc_defaults: { - theme: "modern", - menubar: false, - wpautop: true, - indent: false, - toolbar1: "bold,italic,underline,blockquote,strikethrough,bullist,numlist,alignleft,aligncenter,alignright,undo,redo,link,unlink,fullscreen", - plugins: "fullscreen,image,wordpress,wpeditimage,wplink", - max_height: 500 - }, - - /*-----------------------------------------------------------------------------------*/ - /* quicktags settings - /*-----------------------------------------------------------------------------------*/ - - qt_settings: {}, - - /*-----------------------------------------------------------------------------------*/ - /* quicktags defaults - /*-----------------------------------------------------------------------------------*/ - - qt_defaults: { - buttons: "strong,em,link,block,del,ins,img,ul,ol,li,code,more,close,fullscreen" - }, - - model: Generate_Sections.Section, - - events: { - "click .media-modal-backdrop, .media-modal-close, .media-button-close": "closeModal", - "click .media-button-insert": "saveModal", - "click .media-menu-item": "switchTab", - "keydown": "keydown", - "click .generate-sections-upload-button": "openMediaUploader", - "click .generate-sections-remove-image": "removeImage", - "click div.media-frame-title h1": "toggleMenu" - }, - - - - /** - * Simple object to store any UI elements we need to use over the life of the application. - */ - ui: { - nav: undefined, - content: undefined - }, - - - /** - * Instantiates the Template object and triggers load. - */ - initialize: function() { - _.bindAll(this, "render", "closeModal", "saveModal", "switchTab"); - - this.focusManager = new wp.media.view.FocusManager({ - el: this.el - }); - - this.changeInsertText(); - //this.tinyMCEsettings(); - this.render(); - }, - - /** - * switch the insert button text to "insert section" - */ - changeInsertText: function(restore) { - - var restore = typeof restore !== 'undefined' && restore == true ? true : false; - - if (restore == false && typeof(wp.media.view.l10n.insertIntoPost) !== "undefined") { - this.insertIntoPost = wp.media.view.l10n.insertIntoPost; - wp.media.view.l10n.insertIntoPost = generate_sections_metabox_i18n.insert_into_section; - // switch the insert button text back - } else if (restore == true && typeof(this.insertIntoPost) !== "undefined") { - wp.media.view.l10n.insertIntoPost = this.insertIntoPost; - } - }, - - /** - * Assembles the UI from loaded template. - * @internal Obviously, if the template fail to load, our modal never launches. - */ - render: function() { - - "use strict"; - - // Build the base window and backdrop, attaching them to the $el. - // Setting the tab index allows us to capture focus and redirect it in Application.preserveFocus - this.$el.attr("tabindex", "0").html(this.template); - - // Handle any attempt to move focus out of the modal. - //jQuery(document).on("focusin", this.preserveFocus); - - // set overflow to "hidden" on the body so that it ignores any scroll events while the modal is active - // and append the modal to the body. - jQuery("body").addClass("generate-modal-open").prepend(this.$el); - - // aria hide the background - jQuery("#wpwrap").attr("aria-hidden", "true"); - - this.renderContent(); - - this.renderPreview(); - - this.selected(); - this.colorPicker(); - //this.startTinyMCE(); - this.launchEditor(); - - // Set focus on the modal to prevent accidental actions in the underlying page - this.$el.focus(); - - return this; - }, - - launchEditor: function() { - var id = this.ui.panels.find( ".generate-sections-editor-wrap" ).find( 'textarea' ).attr( 'id' ), - customButtonsContainer = this.ui.panels.find( '.generate-sections-editor-wrap' ).find( '#custom-media-buttons' ); - - customButtonsContainer.find( '.insert-media' ).remove(); - var customButtons = customButtonsContainer.html(); - customButtonsContainer.remove(); - - var init_settings = true; - - if ( typeof tinyMCEPreInit == "object" && "mceInit" in tinyMCEPreInit && "content" in tinyMCEPreInit.mceInit ) { - init_settings = tinyMCEPreInit.mceInit.content; - } else if ( typeof window.wpEditorL10n !== "undefined" ) { - init_settings = window.wpEditorL10n.tinymce.settings; - } else { - init_settings = this.tmc_defaults; - } - - var thisPanel = this.ui.panels; - - var custom_settings = { - wp_autoresize_on: false, - cache_suffix: "", - min_height: 400, - wp_keep_scroll_position: false, - setup: function( editor ) { - editor.on( 'init', function( e ) { - if ( 'html-active' === generate_sections_metabox_i18n.default_editor && generate_sections_metabox_i18n.user_can_richedit ) { - thisPanel.find( '#wp-generate-sections-editor-wrap' ).removeClass( 'tmce-active' ).addClass( 'html-active' ); - editor.hidden = true; - } - } ); - } - } - - init_settings = $.extend({}, init_settings, custom_settings); - - var qt_settings = true; - - if ( typeof tinyMCEPreInit == "object" && "qtInit" in tinyMCEPreInit && "content" in tinyMCEPreInit.qtInit ) { - qt_settings = tinyMCEPreInit.qtInit.content; - } else { - qt_settings = this.qt_defaults; - } - - if ( ! generate_sections_metabox_i18n.user_can_richedit ) { - init_settings = false; - } - - wp.sectionsEditor.initialize( id, { - tinymce: init_settings, - quicktags: qt_settings, - mediaButtons: true - } ); - - var buttonsElement = this.ui.panels.find( '#wp-generate-sections-editor-wrap' ).find( '.wp-media-buttons' ); - buttonsElement.attr( 'id', 'custom-media-buttons' ); - $( customButtons ).appendTo( buttonsElement ); - - if ( ! generate_sections_metabox_i18n.user_can_richedit ) { - this.ui.panels.find( '#generate-sections-editor' ).addClass( 'no-rich-edit' ); - } - }, - - /** - * Make the menu mobile-friendly - */ - toggleMenu: function() { - this.$el.find('.media-menu').toggleClass('visible'); - }, - - /** - * Create the nav tabs & panels - */ - renderContent: function() { - - var model = this.model; - - var menu_item = wp.template("generate-sections-modal-menu-item"); - - // Save a reference to the navigation bar"s unordered list and populate it with items. - this.ui.nav = this.$el.find(".media-menu"); - - // reference to content area - this.ui.panels = this.$el.find(".media-frame-content"); - - // loop through the tabs - if (generate_sections_metabox_i18n.tabs.length) { - - // for...of is nicer, but not supported by minify, so stay with for...in for now - for (var tab in generate_sections_metabox_i18n.tabs) { - - if (generate_sections_metabox_i18n.tabs.hasOwnProperty(tab)) { - - tab = generate_sections_metabox_i18n.tabs[tab]; - - var $new_tab = $(menu_item({ - target: tab.target, - name: tab.title - })); - - var panel = wp.template("generate-sections-edit-" + tab.target); - - var $new_panel = $(panel(model.toJSON())); - - if (tab.active == "true") { - $new_tab.addClass("active"); - $new_panel.addClass("active"); - } - - jQuery( 'body' ).on( 'generate_section_show_settings', function() { - jQuery( '.generate-sections-modal .media-menu-item' ).removeClass('active'); - jQuery( '.generate-sections-modal .panel' ).removeClass('active'); - jQuery( '.generate-section-item-style' ).addClass('active'); - jQuery( '.generate-section-settings' ).addClass('active'); - }); - - this.ui.nav.append($new_tab); - this.ui.panels.append($new_panel); - } - } - } - - }, - - - /** - * Render the background image preview - */ - renderPreview: function(image_id) { - - var image_id = typeof image_id !== 'undefined' ? image_id : this.model.get("background_image"); - - var $preview = $("#generate-section-image-preview"); - $preview.children().remove(); - - if (image_id > 0) { - this.background = new wp.media.model.Attachment.get(image_id); - - this.background.fetch({ - success: function(att) { - if (_.contains(['png', 'jpg', 'gif', 'jpeg'], att.get('subtype'))) { - $("").attr("src", att.attributes.sizes.thumbnail.url).appendTo($preview); - $preview.next().find(".generate-sections-remove-image").show(); - } - } - }); - } - - }, - - - /** - * Set the default option for the select boxes - */ - selected: function() { - - var _this = this; - - this.$el.find("select").each(function(index, select) { - - var attribute = jQuery(select).attr("name"); - var selected = _this.model.get(attribute); - jQuery(select).val(selected); - - }); - }, - - /** - * Start the colorpicker - */ - colorPicker: function() { - this.$el.find(".generate-sections-color").wpColorPicker(); - }, - - /** - * Launch Media Uploader - */ - openMediaUploader: function(e) { - - var _this = this; - - $input = jQuery(e.currentTarget).prev("#generate-sections-background-image"); - - e.preventDefault(); - - // If the uploader object has already been created, reopen the dialog - if (this.mediaUploader) { - this.mediaUploader.open(); - return; - } - // Extend the wp.media object - this.mediaUploader = wp.media.frames.file_frame = wp.media({ - title: generate_sections_metabox_i18n.media_library_title, - button: { - text: generate_sections_metabox_i18n.media_library_button - }, - multiple: false - }); - - - // When a file is selected, grab the URL and set it as the text field"s value - this.mediaUploader.on("select", function() { - - attachment = _this.mediaUploader.state().get("selection").first().toJSON(); - - $input.val(attachment.id); - - _this.renderPreview(attachment.id); - }); - // Open the uploader dialog - this.mediaUploader.open(); - - }, - - /** - * Remove the background image - */ - removeImage: function(e) { - e.preventDefault(); - $("#generate-section-image-preview").children().remove(); - $("#generate-section-image-preview").next().find(".generate-sections-remove-image").hide(); - $("#generate-sections-background-image").val(""); - }, - - - /** - * Closes the modal and cleans up after the instance. - * @param e {object} A jQuery-normalized event object. - */ - closeModal: function(e) { - "use strict"; - - e.preventDefault(); - this.undelegateEvents(); - jQuery(document).off("focusin"); - jQuery("body").removeClass("generate-modal-open"); - jQuery("body").removeClass("generate-section-content"); - - // remove restricted media modal tab focus once it's closed - this.$el.undelegate('keydown'); - - // remove the tinymce editor - // this needs to be called before the modal is closed or it will fail in Firefox (that was fun to figure out...) - if (typeof tinyMCE != "undefined") { - tinymce.EditorManager.execCommand("mceRemoveEditor", true, "generate-sections-editor"); - } - - // remove modal and unset instances - this.remove(); - Generate_Sections.backbone_modal.__instance = undefined; - this.mediaUploader = null; - Generate_Sections.modalOpen = null; - - // switch the insert button text back - this.changeInsertText(true); - - // send focus back to where it was prior to modal open - Generate_Sections.lastFocus.focus(); - - // aria unhide the background - jQuery("#wpwrap").attr("aria-hidden", "false"); - - // Fix bug where the window scrolls down 50px on close - var topDistance = jQuery("body").offset().top; - if ( topDistance >= jQuery("body").scrollTop() ) { - jQuery("body").scrollTop(0); - } - - }, - - /** - * Responds to the btn-ok.click event - * @param e {object} A jQuery-normalized event object. - * @todo You should make this your own. - */ - saveModal: function(e) { - "use strict"; - - this.model.get("index"); - - var model = this.model; - - // send the tinymce content to the textarea - if (typeof tinyMCE != "undefined") { - tinymce.triggerSave(); - } - - var $inputs = this.ui.panels.find("input, select, textarea"); - - $inputs.each(function(index, input) { - - var name = $(input).attr("name"); - - if (model.attributes.hasOwnProperty(name)) { - var value = $(input).val(); - model.set(name, value); - } - - }); - - this.closeModal(e); - }, - - /** - * Handles tab clicks and switches to corresponding panel - * @param e {object} A jQuery-normalized event object. - */ - switchTab: function(e) { - "use strict"; - e.preventDefault(); - - // close lingering wp link windows - if (typeof tinyMCE != "undefined" && 'style' == jQuery( e.currentTarget ).data( 'target' ) && this.ui.panels.find( '#wp-generate-sections-editor-wrap' ).hasClass( 'tmce-active' )) { - tinyMCE.activeEditor.execCommand('wp_link_cancel'); - tinyMCE.activeEditor.execCommand('wp_media_cancel'); - } - - this.ui.nav.children().removeClass("active"); - this.ui.panels.children().removeClass("active"); - - var target = jQuery(e.currentTarget).addClass("active").data("target"); - - this.ui.panels.find("div[data-id=" + target + "]").addClass("active"); - }, - - /** - * close on keyboard shortcuts - * @param {Object} event - */ - keydown: function(e) { - // Close the modal when escape is pressed. - if (27 === e.which && this.$el.is(':visible')) { - this.closeModal(e); - e.stopImmediatePropagation(); - } - } - - }); - - - // Singular View - Generate_Sections.sectionView = Backbone.View.extend({ - - model: Generate_Sections.Section, - tagName: 'div', - - initialize: function() { - // re-render on all changes EXCEPT index - this.listenTo(this.model, "change", this.maybeRender); - }, - - attributes: { - class: "ui-state-default section" - }, - - // Get the template from the DOM - template: wp.template("generate-sections-section"), - - events: { - 'click .edit-section': 'editSection', - 'click .section-title > span': 'editSection', - 'click .delete-section': 'removeSection', - 'click .toggle-section': 'toggleSection', - 'reorder': 'reorder', - }, - - maybeRender: function(e) { - if (this.model.hasChanged('index')) return; - this.render(); - }, - - // Render the single model - include an index. - render: function() { - this.model.set('index', this.model.collection.indexOf(this.model)); - this.$el.html(this.template(this.model.toJSON())); - - if (!this.model.get('title')) { - this.$el.find('h3.section-title > span').text(generate_sections_metabox_i18n.default_title); - } - this.$el.find('textarea').val(JSON.stringify(this.model)); - - return this; - }, - - - // launch the edit modal - editSection: function(e) { - - // stash the current focus - Generate_Sections.lastFocus = document.activeElement; - Generate_Sections.modalOpen = true; - - e.preventDefault(); - if (Generate_Sections.backbone_modal.__instance === undefined) { - Generate_Sections.backbone_modal.__instance = new Generate_Sections.backbone_modal.Application({ - model: this.model - }); - } - - }, - - // reorder after sort - reorder: function(event, index) { - this.$el.trigger('update-sort', [this.model, index]); - }, - - // remove/destroy a model - removeSection: function(e) { - e.preventDefault(); - if (confirm(generate_sections_metabox_i18n.confirm)) { - this.model.destroy(); - Generate_Sections.sectionList.render(); // manually calling instead of listening since listening interferes with sorting - } - }, - }); - - - // List View - Generate_Sections.sectionListView = Backbone.View.extend({ - - el: "#generate_sections_container", - events: { - 'update-sort': 'updateSort', - // 'add-section': 'addOne' - }, - - // callback for clone button - addSection: function(model) { - this.collection.add(model); - this.addOne(model); - }, - - addOne: function(model) { - var view = new Generate_Sections.sectionView({ - model: model - }); - this.$el.append(view.render().el); - }, - - render: function() { - this.$el.children().remove(); - this.collection.each(this.addOne, this); - return this; - }, - - updateSort: function(event, model, position) { - this.collection.remove(model); - - // renumber remaining models around missing model - this.collection.each(function(model, index) { - - var new_index = index; - if (index >= position) { - new_index += 1; - } - model.set('index', new_index); - }); - - // set the index of the missing model - model.set('index', position); - - // add the model back to the collection - this.collection.add(model, { - at: position - }); - - this.render(); - - }, - - }); - - - // The Buttons & Nonce - Generate_Sections.ButtonControls = Backbone.View.extend({ - - attributes: { - class: "generate_sections_buttons" - }, - - tagName: 'p', - - el: "#_generate_sections_metabox", - - template: wp.template("generate-sections-buttons"), - - // Attach events - events: { - "click .button-primary": "newSection", - "click #generate-delete-sections": "clearAll", - 'click .edit-section': 'editSection', - }, - - // create new - newSection: function(e) { - e.preventDefault(); - var newSection = new Generate_Sections.Section(); - Generate_Sections.sectionList.addSection(newSection); - }, - - // clear all models - clearAll: function(e) { - e.preventDefault(); - if (confirm(generate_sections_metabox_i18n.confirm)) { - Generate_Sections.sectionCollection.reset(); - Generate_Sections.sectionList.render(); - } - }, - - render: function() { - this.$el.find(".generate_sections_control").append(this.template); - return this; - }, - - }); - - - // init - Generate_Sections.initApplication = function() { - - // Create Collection From Existing Meta - Generate_Sections.sectionCollection = new Generate_Sections.SectionsCollection(generate_sections_metabox_i18n.sections); - - // Create the List View - Generate_Sections.sectionList = new Generate_Sections.sectionListView({ - collection: Generate_Sections.sectionCollection - }); - Generate_Sections.sectionList.render(); - - // Buttons - Generate_Sections.Buttons = new Generate_Sections.ButtonControls({ - collection: Generate_Sections.sectionCollection - }); - Generate_Sections.Buttons.render(); - - }; - - - /*-----------------------------------------------------------------------------------*/ - /* Execute the above methods in the Generate_Sections object. - /*-----------------------------------------------------------------------------------*/ - - jQuery( function( $ ) { - - Generate_Sections.initApplication(); - - $( '#generate_sections_container' ).sortable({ - axis: "y", - opacity: 0.5, - grid: [20, 10], - tolerance: "pointer", - handle: ".move-section", - update: function(event, ui) { - ui.item.trigger("reorder", ui.item.index()); - } - } ); - - if ( $( '.use-sections-switch' ).is( ':checked' ) ) { - setTimeout( function() { - generateShowSections(); - }, 200 ); - } else { - generateHideSections(); - } - - $( '.use-sections-switch' ).on( 'change', function( e ) { - var status = ( $(this).is( ':checked' ) ) ? 'checked' : 'unchecked'; - - if ( 'checked' == status ) { - generateShowSections(); - } else if ( 'unchecked' == status ) { - generateHideSections(); - } - } ); - - function generateShowSections() { - - // Hide send to editor button - $('.send-to-editor').css('display', 'none'); - - // Hide the editor - $('#postdivrich').css({ - 'opacity': '0', - 'height': '0', - 'overflow': 'hidden' - }); - - $( '.block-editor-block-list__layout' ).hide(); - - $( '.edit-post-layout .edit-post-visual-editor' ).css( { - 'flex-grow': 'unset', - 'flex-basis': '0' - } ); - - $( '.edit-post-visual-editor .block-editor-writing-flow__click-redirect' ).css( { - 'min-height': '0' - } ); - - $( '.edit-post-layout__metaboxes:not(:empty)' ).css( 'border-top', '0' ); - - // Show the sections - $('#_generate_sections_metabox').css({ - 'opacity': '1', - 'height': 'auto' - }); - - // Remove and add the default editor - this removes any visible toolbars etc.. - // We need to set a timeout for this to work - // if (typeof tinyMCE != "undefined") { - // tinyMCE.EditorManager.execCommand("mceRemoveEditor", true, "content"); - // $( '.use-sections-cover' ).css( 'z-index','10000' ); - // setTimeout('tinyMCE.EditorManager.execCommand("mceAddEditor", true, "content");', 1); - // setTimeout('jQuery( ".use-sections-cover" ).css( "z-index","-1" );', 1000); - // } - - // Set a trigger - $('body').trigger('generate_show_sections'); - - } - - function generateHideSections() { - - // Show send to editor button - $('.send-to-editor').css('display', 'inline-block'); - - // Show the editor - $('#postdivrich').css({ - 'opacity': '1', - 'height': 'auto' - }); - - $( '.block-editor-block-list__layout' ).show(); - - $( '.edit-post-layout .edit-post-visual-editor' ).css( { - 'flex-grow': '', - 'flex-basis': '' - } ); - - $( '.edit-post-visual-editor .block-editor-writing-flow__click-redirect' ).css( { - 'min-height': '' - } ); - - $( '.edit-post-layout__metaboxes:not(:empty)' ).css( 'border-top', '' ); - - // Hide the sections - $('#_generate_sections_metabox').css({ - 'opacity': '0', - 'height': '0', - 'overflow': 'hidden' - }); - - $('body').trigger('generate_hide_sections'); - - } - - $( document ).on( 'click', '.edit-section.edit-settings', function() { - $( 'body' ).trigger( 'generate_section_show_settings' ); - }); - - }); - - -})(jQuery, Generate_Sections); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/metabox-functions.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/metabox-functions.php deleted file mode 100644 index 402614ec..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/metabox-functions.php +++ /dev/null @@ -1,396 +0,0 @@ -ID, '_generate_use_sections', TRUE) : ''; - - if ( isset( $use_sections['use_sections'] ) && 'true' == $use_sections['use_sections'] ) { - $classes .= ' generate-sections-enabled'; - } - - return $classes; - } -} - -if ( ! function_exists( 'generate_sections_content_width' ) ) { - add_action( 'wp', 'generate_sections_content_width', 50 ); - /** - * Set our content width when sections are enabled - */ - function generate_sections_content_width() { - global $post; - $use_sections = ( isset( $post ) ) ? get_post_meta( $post->ID, '_generate_use_sections', TRUE) : ''; - - if ( isset( $use_sections['use_sections'] ) && 'true' == $use_sections['use_sections'] ) { - global $content_width; - $content_width = 2000; - } - } -} - -if ( ! function_exists( 'generate_sections_add_metaboxes' ) ) { - add_action( 'add_meta_boxes', 'generate_sections_add_metaboxes', 5 ); - /* - * Functions for creating the metaboxes - */ - function generate_sections_add_metaboxes() { - - $post_types = apply_filters( 'generate_sections_post_types', array( 'page', 'post' ) ); - - add_meta_box( - '_generate_use_sections_metabox', - __( 'Sections', 'gp-premium' ), - 'generate_sections_use_sections_metabox', - $post_types, - 'side', - 'high' - ); - - add_meta_box( - '_generate_sections_metabox', - __( 'Sections', 'gp-premium' ), - 'generate_sections_sections_metabox', - $post_types, - 'normal', - 'high' - ); - - } -} - -if ( ! function_exists( 'generate_sections_sanitize_function' ) ) { - /* - * Sanitize our settings - */ - function generate_sections_sanitize_function( $data, $post_id ) { - - $section = array(); - - if ( isset( $data['title'] ) ) { - $section['title'] = sanitize_text_field( $data['title'] ); - } - - if ( isset( $data['content'] ) ) { - $section['content'] = sanitize_post_field( 'post_content', $data['content'], $post_id, 'db' ); - } - - if ( isset( $data['custom_classes'] ) ) { - $section['custom_classes'] = sanitize_text_field( $data['custom_classes'] ); - } - - if ( isset( $data['custom_id'] ) ) { - $section['custom_id'] = sanitize_text_field( $data['custom_id'] ); - } - - if ( isset( $data['top_padding'] ) ) { - $section['top_padding'] = '' == $data['top_padding'] ? $data['top_padding'] : absint( $data['top_padding'] ); - } - - if ( isset( $data['bottom_padding'] ) ) { - $section['bottom_padding'] = '' == $data['bottom_padding'] ? $data['bottom_padding'] : absint( $data['bottom_padding'] ); - } - - if ( isset( $data['top_padding_unit'] ) ) { - $section['top_padding_unit'] = $data['top_padding_unit'] == '%' ? '%' : ''; - } - - if ( isset( $data['bottom_padding_unit'] ) ) { - $section['bottom_padding_unit'] = $data['bottom_padding_unit'] == '%' ? '%' : ''; - } - - if ( isset( $data['background_image'] ) ) { - $section['background_image'] = absint( $data['background_image'] ); - } - - if ( isset( $data['background_color'] ) ) { - $section['background_color'] = generate_sections_sanitize_rgba( $data['background_color'] ); - } - - if ( isset( $data['text_color'] ) ) { - $section['text_color'] = generate_sections_sanitize_hex_color( $data['text_color'] ); - } - - if ( isset( $data['link_color'] ) ) { - $section['link_color'] = generate_sections_sanitize_hex_color( $data['link_color'] ); - } - - if ( isset( $data['link_color_hover'] ) ) { - $section['link_color_hover'] = generate_sections_sanitize_hex_color( $data['link_color_hover'] ); - } - - if ( isset( $data['box_type'] ) ) { - $section['box_type'] = $data['box_type'] == 'contained' ? 'contained' : ''; - } - - if ( isset( $data['inner_box_type'] ) ) { - $section['inner_box_type'] = $data['inner_box_type'] == 'fluid' ? 'fluid' : ''; - } - - if ( isset( $data['parallax_effect'] ) ) { - $section['parallax_effect'] = $data['parallax_effect'] == 'enable' ? 'enable' : ''; - } - - if ( isset( $data['background_color_overlay'] ) ) { - $section['background_color_overlay'] = $data['background_color_overlay'] == 'enable' ? 'enable' : ''; - } - - return $section; - - } -} - -if ( ! function_exists( 'generate_sections_metabox_scripts' ) ) { - add_action( 'admin_enqueue_scripts', 'generate_sections_metabox_scripts', 20 ); - /* - * Enqueue styles and scripts specific to metaboxs - */ - function generate_sections_metabox_scripts( $hook ) { - // I prefer to enqueue the styles only on pages that are using the metaboxes - if ( in_array( $hook, array( "post.php", "post-new.php" ) ) ) { - - $post_types = apply_filters( 'generate_sections_post_types', array( 'page', 'post' ) ); - - $screen = get_current_screen(); - $post_type = $screen->id; - - if ( in_array( $post_type, (array) $post_types ) ) { - wp_enqueue_style( 'generate-sections-metabox', plugin_dir_url( __FILE__ ) . 'css/generate-sections-metabox.css', false, GENERATE_SECTIONS_VERSION ); - wp_enqueue_style( 'generate-lc-switch', plugin_dir_url( __FILE__ ) . 'css/lc_switch.css', false, GENERATE_SECTIONS_VERSION ); - - //make sure we enqueue some scripts just in case ( only needed for repeating metaboxes ) - wp_enqueue_script( 'jquery' ); - wp_enqueue_script( 'jquery-ui-core' ); - wp_enqueue_script( 'jquery-ui-widget' ); - wp_enqueue_script( 'jquery-ui-mouse' ); - wp_enqueue_script( 'jquery-ui-sortable' ); - wp_enqueue_script( 'editor' ); - wp_enqueue_script( 'media-upload' ); - wp_enqueue_script( 'wp-color-picker' ); - wp_enqueue_style( 'wp-color-picker' ); - wp_enqueue_script( 'wp-color-picker-alpha', GP_LIBRARY_DIRECTORY_URL . 'alpha-color-picker/wp-color-picker-alpha.min.js', array( 'wp-color-picker' ), '3.0.0', true ); - - wp_add_inline_script( - 'wp-color-picker-alpha', - 'jQuery( function() { jQuery( ".color-picker" ).wpColorPicker(); } );' - ); - - wp_enqueue_media(); - - if ( function_exists( 'wp_enqueue_editor' ) ) { - wp_enqueue_editor(); - - wp_add_inline_script( - 'editor', - 'window.wp.sectionsEditor = window.wp.editor;', - 'after' - ); - } - - if ( version_compare( get_bloginfo( 'version' ), '5.0', '<' ) ) { - wp_enqueue_script( 'generate-sections-metabox', plugin_dir_url( __FILE__ ) . 'js/generate-sections-metabox-4.9.js', array( 'jquery', 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-mouse', 'jquery-ui-sortable', 'editor', 'media-upload', 'wp-color-picker' ), GENERATE_SECTIONS_VERSION, true ); - } else { - wp_enqueue_script( 'generate-sections-metabox', plugin_dir_url( __FILE__ ) . 'js/generate-sections-metabox.js', array( 'jquery', 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-mouse', 'jquery-ui-sortable', 'editor', 'media-upload', 'wp-color-picker' ), GENERATE_SECTIONS_VERSION, true ); - } - - if ( function_exists( 'wp_add_inline_script' ) ) { - if ( function_exists( 'generate_get_default_color_palettes' ) ) { - // Grab our palette array and turn it into JS - $palettes = json_encode( generate_get_default_color_palettes() ); - - // Add our custom palettes - // json_encode takes care of escaping - wp_add_inline_script( 'wp-color-picker', 'jQuery.wp.wpColorPicker.prototype.options.palettes = ' . $palettes . ';' ); - } - } - } - } - } -} - -if ( ! function_exists( 'generate_sections_admin_footer_scripts' ) ) { - add_action( 'admin_footer', 'generate_sections_admin_footer_scripts' ); - - function generate_sections_admin_footer_scripts() { - // We don't need this if wp_add_inline_script exists - if ( function_exists( 'wp_add_inline_script' ) ) { - return; - } - ?> - - ID, '_generate_sections', true ); - - $sections = isset( $meta['sections'] ) && is_array( $meta['sections' ] ) ? $meta['sections'] : array(); - - $translation_array = array( - 'confirm' => __( 'This action can not be undone, are you sure?', 'gp-premium' ), - 'post_id' => $post->ID, - 'sections' => $sections, - 'default_title' => __( 'Section', 'gp-premium' ), - 'default_content_title' => __( 'Content', 'gp-premium' ), - 'tabs' => array( - array( 'title' => __( 'Settings', 'gp-premium' ), 'target' => 'style', 'active' => 'false' ), - array( 'title' => __( 'Content', 'gp-premium' ), 'target' => 'content', 'active' => 'true' ), - //array( 'title' => __( 'Layout', 'gp-premium' ), 'target' => 'layout', 'active' => 'false' ), - ), - 'top_padding' => apply_filters( 'generate_sections_default_padding_top','40' ), - 'bottom_padding' => apply_filters( 'generate_sections_default_padding_bottom','40' ), - 'media_library_title' => __('Section Background', 'gp-premium' ), - 'media_library_button' => __( 'Set as Section Background', 'gp-premium' ), - 'generate_nonce' => wp_create_nonce( 'generate_sections_nonce' ), - 'default_editor' => user_can_richedit() && wp_default_editor() == 'tinymce' ? 'tmce-active' : 'html-active', - 'user_can_richedit' => user_can_richedit(), - 'insert_into_section' => __( 'Insert into Section', 'gp-premium' ), - 'edit_section' => __( 'Edit Section', 'gp-premium' ) - - ); - wp_localize_script( 'generate-sections-metabox', 'generate_sections_metabox_i18n', $translation_array ); - - include_once( plugin_dir_path( __FILE__ ) . 'views/sections.php' ); - include_once( plugin_dir_path( __FILE__ ) . 'views/sections-template.php' ); - add_action( 'print_media_templates', 'generate_sections_print_templates' ); - - do_action( 'generate_sections_metabox' ); - } -} - -if ( ! function_exists( 'generate_sections_save_use_metabox' ) ) { - add_action( 'save_post', 'generate_sections_save_use_metabox' ); - /* - * Save the "use" metabox - */ - function generate_sections_save_use_metabox( $post_id ) { - if ( ! isset( $_POST['_generate_sections_use_sections_nonce'] ) || ! wp_verify_nonce( $_POST['_generate_sections_use_sections_nonce'], 'generate_sections_use_sections_nonce' ) ) { - return $post_id; - } - - if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) { - return $post_id; - } - - if ( ! current_user_can('edit_post', $post_id ) ) { - return $post_id; - } - - if ( isset ( $_POST['_generate_use_sections'] ) && isset ( $_POST['_generate_use_sections']['use_sections'] ) && $_POST['_generate_use_sections']['use_sections'] == 'true' ) { - update_post_meta( $post_id, '_generate_use_sections', array( 'use_sections' => 'true' ) ); - } else { - delete_post_meta( $post_id, '_generate_use_sections' ); - } - } -} - -if ( ! function_exists( 'generate_sections_save_sections_metabox' ) ) { - add_action( 'save_post', 'generate_sections_save_sections_metabox', 20 ); - /* - * Save the sections metabox - */ - function generate_sections_save_sections_metabox( $post_id ) { - - if ( ! isset( $_POST['_generate_sections_nonce'] ) || ! wp_verify_nonce( $_POST['_generate_sections_nonce'], 'generate_sections_nonce' ) ) { - return $post_id; - } - - if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) { - return $post_id; - } - - if ( ! current_user_can('edit_post', $post_id ) ) { - return $post_id; - } - - $clean = array(); - - if ( isset ( $_POST['_generate_sections'] ) && isset( $_POST['_generate_sections']['sections'] ) && is_array( $_POST['_generate_sections']['sections'] ) ) { - - foreach( $_POST['_generate_sections']['sections'] as $section ) { - - $section = json_decode( stripslashes( trim($section) ), true); - - $section = generate_sections_sanitize_function( $section, $post_id ); - if ( ! empty( $section ) ){ - $clean[] = $section; - } - - } - - } - - // save data - if ( ! empty( $clean ) ) { - // this maintains data structure of previous version - $meta = array( 'sections' => $clean ); - update_post_meta( $post_id, '_generate_sections', $meta ); - } else { - delete_post_meta( $post_id, '_generate_sections' ); - } - - } -} - -if ( ! function_exists( 'generate_sections_sanitize_hex_color' ) ) { - /* - * Sanitize colors - * We don't use the built in function so we can use empty values - */ - function generate_sections_sanitize_hex_color( $color ) { - if ( '' === $color ) { - return ''; - } - - // 3 or 6 hex digits, or the empty string. - if ( preg_match('|^#([A-Fa-f0-9]{3}){1,2}$|', $color ) ) { - return $color; - } - - return null; - } -} - -if ( ! function_exists( 'generate_sections_sanitize_rgba' ) ) { - /** - * Sanitize RGBA colors - * @since 1.3.42 - */ - function generate_sections_sanitize_rgba( $color ) { - if ( '' === $color ) { - return ''; - } - - // If string does not start with 'rgba', then treat as hex - // sanitize the hex color and finally convert hex to rgba - if ( false === strpos( $color, 'rgba' ) ) { - return generate_sections_sanitize_hex_color( $color ); - } - - // By now we know the string is formatted as an rgba color so we need to further sanitize it. - $color = str_replace( ' ', '', $color ); - sscanf( $color, 'rgba(%d,%d,%d,%f)', $red, $green, $blue, $alpha ); - return 'rgba('.$red.','.$green.','.$blue.','.$alpha.')'; - - return ''; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/views/sections-template.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/views/sections-template.php deleted file mode 100644 index 4fd904bf..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/views/sections-template.php +++ /dev/null @@ -1,279 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -
            - - - -
            - -
            \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/views/use-sections.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/views/use-sections.php deleted file mode 100644 index d2aa993f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/metaboxes/views/use-sections.php +++ /dev/null @@ -1,17 +0,0 @@ - -
            - - ID, '_generate_use_sections', true ); - //$use_sections = isset( $use_sections['use_sections'] ) && 'true' == $use_sections['use_sections'] ? true : false; - wp_nonce_field( 'generate_sections_use_sections_nonce', '_generate_sections_use_sections_nonce' ); - ?> - -
            diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/templates/template.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/templates/template.php deleted file mode 100644 index daf0d21e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/sections/functions/templates/template.php +++ /dev/null @@ -1,122 +0,0 @@ -ID, '_generate_sections', TRUE) : ''; -$sidebars = apply_filters( 'generate_sections_sidebars', false ); -?> - -
            > -
            > - - - -
            > -
            -
            - -
            -
            -
            - - - - '; - $container['after'] = '
            '; - else : - $container['before'] = '
            '; - $container['after'] = '
            '; - endif; - - // Create inner container - if ( 'fluid' == $inner_box_type ) : - $inner_container['before'] = '
            '; - $inner_container['after'] = '
            '; - else : - $inner_container['before'] = '
            '; - $inner_container['after'] = '
            '; - endif; - - // Output the container - $return .= $container['before']; - $return .= $inner_container['before']; - - // Output the content - // Add \n\n to fix issue where paragraph wrapping was off - $return .= "\n\n" . $content; - - // Output the closing containers - $return .= $container['after']; - $return .= $inner_container['after']; - - endforeach; - - // Return our sections through the_content filter - echo apply_filters( 'the_content', $return ); - else : - ?> -
            -
            - -
            -
            - - - - - - - - - $widgets ) { - // Skip inactive widgets (should not be in export file). - if ( 'wp_inactive_widgets' === $sidebar_id ) { - continue; - } - - if ( is_array( $widgets ) ) { - foreach ( $widgets as $widget_instance_id => $widget ) { - $all_widgets[] = $widget; - } - } - } - - $results['wp_inactive_widgets'] = $all_widgets; - - update_option( 'sidebars_widgets', $results ); - - } - - /** - * Checks to see whether options exist or not. - * - * @since 1.8 - * - * @return bool - */ - public static function do_options_exist() { - $theme_mods = self::get_theme_mods(); - $settings = self::get_theme_settings(); - - $has_data = array( - 'mods' => array(), - 'options' => array(), - ); - - foreach ( $theme_mods as $theme_mod ) { - if ( get_theme_mod( $theme_mod ) ) { - $has_data['mods'][ $theme_mod ] = get_theme_mod( $theme_mod ); - } - } - - foreach ( $settings as $setting ) { - if ( get_option( $setting ) ) { - - // The blog module runs a migration script on activation for now. This checks if those migrated values have been changed. - if ( 'generate_blog_settings' === $setting && function_exists( 'generate_blog_get_defaults' ) ) { - $defaults = generate_blog_get_defaults(); - $options = get_option( $setting ); - $diff = array(); - - foreach ( $options as $option => $value ) { - if ( isset( $defaults[ $option ] ) && $value !== $defaults[ $option ] ) { - $diff[ $option ] = $value; - } - } - - if ( empty( $diff ) ) { - continue; - } - } - - $has_data['options'][ $setting ] = get_option( $setting ); - } - } - - if ( ! array_filter( $has_data ) ) { - return false; - } else { - return true; - } - } - - /** - * Imports our content and custom CSS. - * - * @since 1.6 - * @param string $path Path to the file. - * @param string $slug File slug. - */ - public static function import_xml( $path, $slug ) { - if ( ! class_exists( 'WP_Importer' ) ) { - require_once ABSPATH . '/wp-admin/includes/class-wp-importer.php'; - } - - require_once GP_PREMIUM_DIR_PATH . 'site-library/libs/wxr-importer/WXRImporter.php'; - require_once GP_PREMIUM_DIR_PATH . 'site-library/libs/wxr-importer/WPImporterLogger.php'; - require_once GP_PREMIUM_DIR_PATH . 'site-library/libs/wxr-importer/WXRImportInfo.php'; - require_once GP_PREMIUM_DIR_PATH . 'site-library/classes/class-content-importer.php'; - - if ( ! function_exists( 'wp_crop_image' ) ) { - require_once ABSPATH . 'wp-admin/includes/image.php'; - } - - add_filter( 'upload_mimes', array( __CLASS__, 'mime_types' ) ); - add_filter( 'wp_check_filetype_and_ext', array( __CLASS__, 'check_real_mime_type' ), 10, 4 ); - add_filter( 'wp_prepare_attachment_for_js', array( __CLASS__, 'add_svg_image_support' ), 10, 3 ); - - $options = array( - 'fetch_attachments' => true, - 'default_author' => 0, - ); - - $current_css = wp_get_custom_css_post(); - - $logger = new GeneratePress\WPContentImporter2\WPImporterLogger(); - $importer = new GeneratePress_Sites_Content_Importer( $options ); - $importer->set_logger( $logger ); - $result = $importer->import( $path ); - - // Get all mapped post and term data. - $existing_data = self::get_mapped_post_ids( $slug ); - $mapped_data = $importer->get_importer_data(); - $mapped_posts = $mapped_data['mapping']['post']; - - // Merge exiting mapped posts with any new ones. Existing posts don't get mapped, so we need to preserve them. - $all_data = $mapped_posts + $existing_data; - - // Set our site specific mapped posts with all of our data. - update_option( 'generatepress_sites_mapped_ids_' . $slug, $all_data, false ); - - // Set mapped term IDs. - // These are always the same, even if the site has been imported before. No fancy stuff needed. - $term_mapping = $mapped_data['mapping']['term_id']; - set_transient( 'generatepress_sites_mapped_term_ids', $term_mapping, 0.1 * HOUR_IN_SECONDS ); - - wp_update_custom_css_post( $current_css->post_content ); - - // Page builders need so much extra work. - self::update_page_builder_content(); - - remove_filter( 'upload_mimes', array( __CLASS__, 'mime_types' ) ); - remove_filter( 'wp_check_filetype_and_ext', array( __CLASS__, 'check_real_mime_type' ), 10, 4 ); - remove_filter( 'wp_prepare_attachment_for_js', array( __CLASS__, 'add_svg_image_support' ), 10, 3 ); - } - - /** - * List plugins that have a pro version. - * - * We want to check to see if these exist before installing or activating - * the free versions. - * - * @since 1.6 - * - * @return array - */ - public static function check_for_pro_plugins() { - return apply_filters( - 'generate_sites_pro_plugins', - array( - 'beaver-builder-lite-version/fl-builder.php' => 'bb-plugin/fl-builder.php', - 'ultimate-addons-for-beaver-builder-lite/bb-ultimate-addon.php' => 'bb-ultimate-addon/bb-ultimate-addon.php', - 'powerpack-addon-for-beaver-builder/bb-powerpack-lite.php' => 'bbpowerpack/bb-powerpack.php', - ) - ); - } - - /** - * Check to see if required plugins are active. - * - * @since 1.6 - * - * @param string $plugin The plugin to check for. - */ - public static function is_plugin_installed( $plugin ) { - $pro_plugins = self::check_for_pro_plugins(); - - // Check to see if this plugin has a pro version. - if ( array_key_exists( $plugin, $pro_plugins ) ) { - if ( file_exists( WP_PLUGIN_DIR . '/' . $pro_plugins[ $plugin ] ) ) { - return true; - } - } - - if ( file_exists( WP_PLUGIN_DIR . '/' . $plugin ) ) { - return true; - } - - return false; - - } - - /** - * Allow SVG images. - * - * @since 1.6 - * - * @param array $response Attachment response. - * @param object $attachment Attachment object. - * @param array $meta Attachment meta data. - */ - public static function add_svg_image_support( $response, $attachment, $meta ) { - if ( ! function_exists( 'simplexml_load_file' ) ) { - return $response; - } - - if ( ! empty( $response['sizes'] ) ) { - return $response; - } - - if ( 'image/svg+xml' !== $response['mime'] ) { - return $response; - } - - $svg_path = get_attached_file( $attachment->ID ); - - $dimensions = self::get_svg_dimensions( $svg_path ); - - $response['sizes'] = array( - 'full' => array( - 'url' => $response['url'], - 'width' => $dimensions->width, - 'height' => $dimensions->height, - 'orientation' => $dimensions->width > $dimensions->height ? 'landscape' : 'portrait', - ), - ); - - return $response; - } - - /** - * Get the dimensions of the uploaded SVG. - * - * @since 1.6 - * - * @param string $svg SVG file path. - * @return array Return SVG file height & width for valid SVG file. - */ - public static function get_svg_dimensions( $svg ) { - $svg = simplexml_load_file( $svg ); - - if ( false === $svg ) { - $width = '0'; - $height = '0'; - } else { - $attributes = $svg->attributes(); - $width = (string) $attributes->width; - $height = (string) $attributes->height; - } - - return (object) array( - 'width' => $width, - 'height' => $height, - ); - } - - /** - * Taken from the core media_sideload_image function and - * modified to return an array of data instead of html. - * - * @since 1.6 - * - * @param string $file The image file path. - * @return array An array of image data. - */ - public static function sideload_image( $file ) { - - $data = new stdClass(); - - if ( ! function_exists( 'media_handle_sideload' ) ) { - require_once ABSPATH . 'wp-admin/includes/media.php'; - require_once ABSPATH . 'wp-admin/includes/file.php'; - require_once ABSPATH . 'wp-admin/includes/image.php'; - } - - add_filter( 'upload_mimes', array( __CLASS__, 'mime_types' ) ); - add_filter( 'wp_check_filetype_and_ext', array( __CLASS__, 'check_real_mime_type' ), 10, 4 ); - add_filter( 'wp_prepare_attachment_for_js', array( __CLASS__, 'add_svg_image_support' ), 10, 3 ); - - if ( ! empty( $file ) ) { - - // Set variables for storage, fix file filename for query strings. - preg_match( '/[^\?]+\.(jpe?g|jpe|svg|gif|png)\b/i', $file, $matches ); - $file_array = array(); - $file_array['name'] = basename( $matches[0] ); - - // Download file to temp location. - $file_array['tmp_name'] = download_url( $file ); - - // If error storing temporarily, return the error. - if ( is_wp_error( $file_array['tmp_name'] ) ) { - return $file_array['tmp_name']; - } - - // Do the validation and storage stuff. - $id = media_handle_sideload( $file_array, 0 ); - - // If error storing permanently, unlink. - if ( is_wp_error( $id ) ) { - @unlink( $file_array['tmp_name'] ); // phpcs:ignore - return $id; - } - - // Build the object to return. - $meta = wp_get_attachment_metadata( $id ); - $data->attachment_id = $id; - $data->url = wp_get_attachment_url( $id ); - $data->thumbnail_url = wp_get_attachment_thumb_url( $id ); - - if ( isset( $meta['height'] ) ) { - $data->height = $meta['height']; - } - - if ( isset( $meta['width'] ) ) { - $data->width = $meta['width']; - } - } - - remove_filter( 'upload_mimes', array( __CLASS__, 'mime_types' ) ); - remove_filter( 'wp_check_filetype_and_ext', array( __CLASS__, 'check_real_mime_type' ), 10, 4 ); - remove_filter( 'wp_prepare_attachment_for_js', array( __CLASS__, 'add_svg_image_support' ), 10, 3 ); - - return $data; - - } - - /** - * Re-maps menu locations. - * - * @since 1.6 - * - * @param array $locations Incoming locations. - */ - public static function set_nav_menu_locations( $locations = array() ) { - $menu_locations = array(); - - $term_ids = self::get_mapped_term_ids(); - - if ( isset( $locations ) ) { - self::log( '== Start mapping menu locations ==' ); - - foreach ( $locations as $menu => $value ) { - if ( empty( $value ) ) { - continue; - } - - $menu_locations[ $menu ] = $term_ids[ $value ]; - self::log( $value . ' -> ' . $term_ids[ $value ] ); - } - - set_theme_mod( 'nav_menu_locations', $menu_locations ); - } - } - - /** - * Re-maps the front page and posts page. - * - * @since 1.6 - * - * @param string $name Name of the option to update. - * @param string $value Title of the page. - * @param string $slug Slug of the page. - */ - public static function set_reading_pages( $name, $value, $slug ) { - if ( empty( $value ) ) { - return; - } - - self::log( '== Start mapping front and blog pages ==' ); - - // Get import data, with new menu IDs. - $post_ids = self::get_mapped_post_ids( $slug ); - - update_option( $name, $post_ids[ $value ] ); - self::log( $value . ' -> ' . $post_ids[ $value ] ); - } - - /** - * Re-maps WooCommerce pages. - * - * @since 1.6 - * - * @param string $name Name of the option to update. - * @param string $value Title of the page. - * @param string $slug Slug of the page. - */ - public static function set_woocommerce_pages( $name, $value, $slug ) { - if ( empty( $value ) ) { - return; - } - - self::log( '== Start mapping WooCommerce pages ==' ); - - $post_ids = self::get_mapped_post_ids( $slug ); - - update_option( $name, $post_ids[ $value ] ); - self::log( $value . ' -> ' . $post_ids[ $value ] ); - } - - /** - * Change the menu IDs in the custom menu widgets in the widget import data. - * This solves the issue with custom menu widgets not having the correct (new) menu ID, because they - * have the old menu ID from the export site. - * - * @param array $widget The widget settings array. - */ - public static function fix_custom_menu_widget_ids( $widget ) { - // Skip (no changes needed), if this is not a custom menu widget. - if ( ! array_key_exists( 'nav_menu', $widget ) || empty( $widget['nav_menu'] ) || ! is_int( $widget['nav_menu'] ) ) { - return $widget; - } - - // Get import data, with new menu IDs. - $term_ids = self::get_mapped_term_ids(); - - if ( ! isset( $term_ids[ $widget['nav_menu'] ] ) ) { - return $widget; - } - - self::log( '== Start mapping navigation widgets ==' ); - self::log( $widget['nav_menu'] . ' -> ' . $term_ids[ $widget['nav_menu'] ] ); - - // Set the new menu ID for the widget. - $widget['nav_menu'] = $term_ids[ $widget['nav_menu'] ]; - - return $widget; - } - - /** - * Re-maps the element locations. - * - * @since 1.7 - * - * @param array $locations Incoming locations. - * @param string $slug Element slug. - */ - public static function set_element_locations( $locations, $slug ) { - $post_ids = self::get_mapped_post_ids( $slug ); - - if ( isset( $locations ) && ! empty( $locations ) ) { - self::log( '== Start mapping element locations ==' ); - - foreach ( (array) $locations as $key => $value ) { - $new_locations = array(); - if ( empty( $value ) ) { - continue; - } - - foreach ( (array) $value as $data ) { - if ( $data['object'] ) { - self::log( $data['object'] . ' -> ' . $post_ids[ $data['object'] ] ); - $data['object'] = $post_ids[ $data['object'] ]; - } - - $new_locations[] = $data; - } - - update_post_meta( $post_ids[ $key ], '_generate_element_display_conditions', $new_locations ); - } - } - } - - /** - * Re-maps the element exclusions. - * - * @since 1.7 - * - * @param array $locations Incoming locations. - * @param string $slug Element slug. - */ - public static function set_element_exclusions( $locations, $slug ) { - $post_ids = self::get_mapped_post_ids( $slug ); - - if ( isset( $locations ) && ! empty( $locations ) ) { - self::log( '== Start mapping element exclusions ==' ); - - foreach ( (array) $locations as $key => $value ) { - $new_locations = array(); - if ( empty( $value ) ) { - continue; - } - - foreach ( (array) $value as $data ) { - if ( $data['object'] ) { - self::log( $data['object'] . ' -> ' . $post_ids[ $data['object'] ] ); - $data['object'] = $post_ids[ $data['object'] ]; - } - - $new_locations[] = $data; - } - - update_post_meta( $post_ids[ $key ], '_generate_element_exclude_conditions', $new_locations ); - } - } - } - - /** - * Update menu URLs. - * - * @since 1.7.3 - * @param string $url Preview URL. - */ - public static function update_menu_urls( $url ) { - $args = array( - 'post_type' => 'nav_menu_item', - 'fields' => 'ids', - 'no_found_rows' => true, - 'post_status' => 'any', - 'numberposts' => 50, - ); - - $items = get_posts( $args ); - - foreach ( $items as $item_id ) { - $item_type = get_post_meta( $item_id, '_menu_item_type', true ); - - if ( 'custom' === $item_type ) { - $item_url = get_post_meta( $item_id, '_menu_item_url', true ); - - if ( $item_url && '#' !== $item_url ) { - $item_url = str_replace( $url, site_url(), $item_url ); - - update_post_meta( $item_id, '_menu_item_url', $item_url ); - } - } - } - } - - /** - * Allow other files types to be uploaded. - * - * @since 1.6 - * - * @param array $mimes Existing types. - * @return array Merged types. - */ - public static function mime_types( $mimes ) { - $mimes = array_merge( - $mimes, - array( - 'xml' => 'text/xml', - 'wie' => 'text/plain', - 'svg' => 'image/svg+xml', - 'svgz' => 'image/svg+xml', - ) - ); - - return $mimes; - } - - /** - * Different MIME type of different PHP version - * - * Filters the "real" file type of the given file. - * - * @since 1.8 - * - * @param array $defaults Default file types. - * @param string $file Full path to the file. - * @param string $filename The name of the file (may differ from $file due to $file being in a tmp directory). - * @param array $mimes Key is the file extension with value as the mime type. - */ - public static function check_real_mime_type( $defaults, $file, $filename, $mimes ) { - if ( 'content.xml' === $filename ) { - $defaults['ext'] = 'xml'; - $defaults['type'] = 'text/xml'; - } - - if ( 'widgets.wie' === $filename ) { - $defaults['ext'] = 'wie'; - $defaults['type'] = 'text/plain'; - } - - return $defaults; - } - - /** - * Download a file to WordPress from a URL. - * - * @since 1.6 - * - * @param string $file URL of the file. - * @return array - */ - public static function download_file( $file ) { - add_filter( 'upload_mimes', array( __CLASS__, 'mime_types' ) ); - add_filter( 'wp_check_filetype_and_ext', array( __CLASS__, 'check_real_mime_type' ), 10, 4 ); - add_filter( 'wp_prepare_attachment_for_js', array( __CLASS__, 'add_svg_image_support' ), 10, 3 ); - - // Gives us access to the download_url() and wp_handle_sideload() functions. - require_once ABSPATH . 'wp-admin/includes/file.php'; - - // URL to the WordPress logo. - $url = $file; - $timeout_seconds = 10; - - // Download file to temp dir. - $temp_file = download_url( $url, $timeout_seconds ); - - if ( is_wp_error( $temp_file ) ) { - - return array( - 'success' => false, - 'data' => $temp_file->get_error_message(), - ); - - } - - // Array based on $_FILE as seen in PHP file uploads. - $file = array( - 'name' => basename( $url ), - 'tmp_name' => $temp_file, - 'error' => 0, - 'size' => filesize( $temp_file ), - ); - - $overrides = array( - 'test_form' => false, - 'test_size' => true, - ); - - // Move the temporary file into the uploads directory. - $results = wp_handle_sideload( $file, $overrides ); - - // Clean up. - remove_filter( 'upload_mimes', array( __CLASS__, 'mime_types' ) ); - remove_filter( 'wp_check_filetype_and_ext', array( __CLASS__, 'check_real_mime_type' ), 10, 4 ); - remove_filter( 'wp_prepare_attachment_for_js', array( __CLASS__, 'add_svg_image_support' ), 10, 3 ); - - if ( empty( $results['error'] ) ) { - - return array( - 'success' => true, - 'data' => $results, - ); - - } else { - - return array( - 'success' => false, - 'error' => $results['error'], - ); - - } - - } - - /** - * Get data from the options.json file. - * - * @since 1.6 - * - * @param string $url URL of the file. - * @return array - */ - public static function get_options( $url ) { - $url = wp_safe_remote_get( esc_url( $url ) ); - - if ( is_wp_error( $url ) ) { - return false; - } - - return json_decode( wp_remote_retrieve_body( $url ), true ); - } - - /** - * Check to see if a remote file exists. - * - * @since 1.6 - * - * @param string $url URL of the file. - * @return bool - */ - public static function file_exists( $url ) { - $response = wp_safe_remote_get( esc_url( $url ) ); - - if ( is_wp_error( $response ) ) { - self::log( $response->get_error_message() ); - return false; - } - - return strlen( $response['body'] ) > 100 && ( '200' === (string) $response['response']['code'] || '301' === (string) $response['response']['code'] ) ? true : false; - } - - /** - * Log events to the debug.log file. - * - * @since 1.6 - * @param mixed $log Log data. - * @return void - */ - public static function log( $log ) { - if ( ! WP_DEBUG_LOG ) { - return; - } - - if ( is_array( $log ) || is_object( $log ) ) { - error_log( print_r( $log, true ) ); // phpcs:ignore -- Needed to log events. - } else { - error_log( $log ); // phpcs:ignore -- Needed to log events. - } - } - - /** - * Get all posts to run through batch processing. - * - * @since 1.6 - * - * @return object All posts. - */ - public static function get_all_posts() { - $args = array( - 'post_type' => 'any', - 'fields' => 'ids', - 'no_found_rows' => true, - 'post_status' => 'publish', - 'numberposts' => -1, - 'meta_query' => array( - 'relation' => 'OR', - array( - 'key' => '_fl_builder_data', - 'compare' => 'EXISTS', - ), - array( - 'key' => '_elementor_data', - 'compare' => 'EXISTS', - ), - ), - ); - - $posts = get_posts( $args ); - - if ( $posts ) { - return $posts; - } - - return false; - } - - /** - * Searches Elementor and Beaver Builder content for images to download. - * - * @since 1.6 - */ - public static function update_page_builder_content() { - include_once ABSPATH . 'wp-admin/includes/plugin.php'; - - // Add "bb-plugin" in import [queue]. - // Add "beaver-builder-lite-version" in import [queue]. - if ( is_plugin_active( 'beaver-builder-lite-version/fl-builder.php' ) || is_plugin_active( 'bb-plugin/fl-builder.php' ) ) { - require_once GP_PREMIUM_DIR_PATH . 'site-library/classes/class-beaver-builder-batch-processing.php'; - require_once GP_PREMIUM_DIR_PATH . 'site-library/classes/class-site-import-image.php'; - - $beaver_builder = new GeneratePress_Sites_Process_Beaver_Builder(); - $beaver_builder->import(); - } - } - - /** - * Clear Elementor & Beaver Builder caches when needed. - * - * @since 1.6 - */ - public static function clear_page_builder_cache() { - - if ( class_exists( 'FLBuilderModel' ) && method_exists( 'FLBuilderModel', 'delete_asset_cache_for_all_posts' ) ) { - // Clear all cache. - FLBuilderModel::delete_asset_cache_for_all_posts(); - self::log( 'Cleared Beaver Builder cache.' ); - } - - if ( class_exists( 'Elementor\Plugin' ) && method_exists( 'Elementor\Posts_CSS_Manager', 'clear_cache' ) ) { - // !important, Clear the cache after images import. - Elementor\Plugin::instance()->posts_css_manager->clear_cache(); - self::log( 'Cleared Elementor cache.' ); - } - - } - - /** - * List out GP option names. - * - * @since 1.6 - * - * @return array - */ - public static function get_theme_settings() { - return array( - 'generate_settings', - 'generate_background_settings', - 'generate_blog_settings', - 'generate_page_header_settings', - 'generate_secondary_nav_settings', - 'generate_spacing_settings', - 'generate_menu_plus_settings', - 'generate_woocommerce_settings', - ); - } - - /** - * List out GP theme mods. - * - * @since 1.6 - * - * @return array - */ - public static function get_theme_mods() { - return array( - 'font_body_variants', - 'font_body_category', - 'font_site_title_variants', - 'font_site_title_category', - 'font_site_tagline_variants', - 'font_site_tagline_category', - 'font_navigation_variants', - 'font_navigation_category', - 'font_secondary_navigation_variants', - 'font_secondary_navigation_category', - 'font_buttons_variants', - 'font_buttons_category', - 'font_heading_1_variants', - 'font_heading_1_category', - 'font_heading_2_variants', - 'font_heading_2_category', - 'font_heading_3_variants', - 'font_heading_3_category', - 'font_heading_4_variants', - 'font_heading_4_category', - 'font_heading_5_variants', - 'font_heading_5_category', - 'font_heading_6_variants', - 'font_heading_6_category', - 'font_widget_title_variants', - 'font_widget_title_category', - 'font_footer_variants', - 'font_footer_category', - 'generate_copyright', - ); - } - - /** - * Build the loading icon. - * - * @since 1.6 - */ - public static function loading_icon() { - ?> - - - - - - - - - - - - - 'generate_package_backgrounds', - 'Blog' => 'generate_package_blog', - 'Colors' => 'generate_package_colors', - 'Copyright' => 'generate_package_copyright', - 'Elements' => 'generate_package_elements', - 'Disable Elements' => 'generate_package_disable_elements', - 'Hooks' => 'generate_package_hooks', - 'Menu Plus' => 'generate_package_menu_plus', - 'Page Header' => 'generate_package_page_header', - 'Secondary Nav' => 'generate_package_secondary_nav', - 'Sections' => 'generate_package_sections', - 'Spacing' => 'generate_package_spacing', - 'Typography' => 'generate_package_typography', - 'WooCommerce' => 'generate_package_woocommerce', - 'Font Library' => 'generate_package_font_library', - ); - } - - /** - * A list of options we shouldn't be able to touch. - */ - public static function disallowed_options() { - return array( - 'admin_email', - 'siteurl', - 'home', - 'blog_charset', - 'blog_public', - 'current_theme', - 'stylesheet', - 'template', - 'default_role', - 'mailserver_login', - 'mailserver_pass', - 'mailserver_port', - 'mailserver_url', - 'permalink_structure', - 'rewrite_rules', - 'users_can_register', - ); - } - - /** - * Track Imported Post - * - * @param int $post_id Post ID. - * @return void - */ - public static function track_post( $post_id ) { - update_post_meta( $post_id, '_generatepress_sites_imported_post', true ); - } - - /** - * Track Imported Term - * - * @param int $term_id Term ID. - * @return void - */ - public static function track_term( $term_id ) { - $term = get_term( $term_id ); - - update_term_meta( $term_id, '_generatepress_sites_imported_term', true ); - } - - /** - * Prevent WooCommerce from creating new pages if we're importing them. - * generate_woocommerce_no_create_pages is set during Site Library import. - */ - public static function woocommerce_no_new_pages() { - if ( ! function_exists( 'is_woocommerce' ) ) { - return; - } - - $woocommerce_version = get_option( 'woocommerce_db_version' ); - - if ( empty( $woocommerce_version ) ) { - $no_new_pages = get_option( 'generate_woocommerce_no_create_pages', false ); - - if ( $no_new_pages ) { - add_filter( 'woocommerce_create_pages', '__return_empty_array' ); - delete_option( 'generate_woocommerce_no_create_pages' ); - } - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/class-site-library-rest.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/class-site-library-rest.php deleted file mode 100644 index abcd7f27..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/class-site-library-rest.php +++ /dev/null @@ -1,947 +0,0 @@ -namespace . $this->version; - - // Get Templates. - register_rest_route( - $namespace, - '/get_sites/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'get_sites' ), - 'permission_callback' => array( $this, 'update_settings_permission' ), - ) - ); - - // Get Templates. - register_rest_route( - $namespace, - '/get_site_data/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'get_site_data' ), - 'permission_callback' => array( $this, 'update_settings_permission' ), - ) - ); - - // Get Templates. - register_rest_route( - $namespace, - '/import_theme_options/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'import_options' ), - 'permission_callback' => array( $this, 'update_settings_permission' ), - ) - ); - - // Get Templates. - register_rest_route( - $namespace, - '/activate_plugins/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'activate_plugins' ), - 'permission_callback' => array( $this, 'update_settings_permission' ), - ) - ); - - // Get Templates. - register_rest_route( - $namespace, - '/import_content/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'import_content' ), - 'permission_callback' => array( $this, 'update_settings_permission' ), - ) - ); - - // Get Templates. - register_rest_route( - $namespace, - '/import_site_options/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'import_site_options' ), - 'permission_callback' => array( $this, 'update_settings_permission' ), - ) - ); - - // Get Templates. - register_rest_route( - $namespace, - '/import_widgets/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'import_widgets' ), - 'permission_callback' => array( $this, 'update_settings_permission' ), - ) - ); - - // Get Templates. - register_rest_route( - $namespace, - '/restore_theme_options/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'restore_theme_options' ), - 'permission_callback' => array( $this, 'update_settings_permission' ), - ) - ); - - // Get Templates. - register_rest_route( - $namespace, - '/restore_content/', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'restore_content' ), - 'permission_callback' => array( $this, 'update_settings_permission' ), - ) - ); - } - - /** - * Get edit options permissions. - * - * @return bool - */ - public function update_settings_permission() { - return current_user_can( 'manage_options' ); - } - - /** - * Export a group of assets. - * - * @param WP_REST_Request $request request object. - * - * @return mixed - */ - public function get_sites( WP_REST_Request $request ) { - $force_refresh = $request->get_param( 'forceRefresh' ); - $sites = get_option( 'generatepress_sites', array() ); - - $time_now = strtotime( 'now' ); - $sites_expire = get_option( 'generatepress_sites_expiration', sanitize_text_field( $time_now ) ); - - if ( $force_refresh || empty( $sites ) || $sites_expire < $time_now ) { - $sites = array(); - - $url = 'https://sites.generatepress.com/wp-json/gp-starter-sites/v1/sites'; - - if ( defined( 'GENERATEBLOCKS_VERSION' ) ) { - if ( ! function_exists( 'generateblocks_use_v1_blocks' ) || generateblocks_use_v1_blocks() ) { - $url = 'https://gpsites.co/wp-json/wp/v2/sites?per_page=100'; - } - } - - $data = wp_safe_remote_get( $url ); - - if ( is_wp_error( $data ) ) { - update_option( 'generatepress_sites', 'no results', false ); - update_option( 'generatepress_sites_expiration', strtotime( '+5 minutes' ), false ); - return $this->failed( 'no results' ); - } - - $data = json_decode( wp_remote_retrieve_body( $data ), true ); - - if ( ! is_array( $data ) ) { - update_option( 'generatepress_sites', 'no results', false ); - update_option( 'generatepress_sites_expiration', strtotime( '+5 minutes' ), false ); - return $this->failed( 'no results' ); - } - - foreach ( (array) $data as $site ) { - $sites[ $site['name'] ] = array( - 'name' => $site['name'], - 'directory' => $site['directory'], - 'preview_url' => $site['preview_url'], - 'author_name' => $site['author_name'], - 'author_url' => $site['author_url'], - 'description' => $site['description'], - 'page_builder' => $site['page_builder'], - 'category' => $site['category'], - 'min_version' => $site['min_version'], - 'min_theme_version' => $site['min_theme_version'], - 'min_generateblocks_version' => $site['min_generateblocks_version'], - 'uploads_url' => $site['uploads_url'], - 'plugins' => $site['plugins'], - 'documentation' => $site['documentation'], - 'image_width' => ! empty( $site['image_width'] ) ? $site['image_width'] : 600, - 'image_height' => ! empty( $site['image_height'] ) ? $site['image_height'] : 600, - ); - } - - update_option( 'generatepress_sites', $sites, false ); - update_option( 'generatepress_sites_expiration', strtotime( '+1 day' ), false ); - } - - $sites = apply_filters( 'generate_add_sites', $sites ); - - return $this->success( $sites ); - } - - /** - * Export a group of assets. - * - * @param WP_REST_Request $request request object. - * - * @return mixed - */ - public function get_site_data( WP_REST_Request $request ) { - $site_data = $request->get_param( 'siteData' ); - - if ( GeneratePress_Site_Library_Helper::file_exists( $site_data['directory'] . '/options.json' ) ) { - $settings = GeneratePress_Site_Library_Helper::get_options( $site_data['directory'] . '/options.json' ); - - $data['options'] = true; - $data['modules'] = $settings['modules']; - $data['plugins'] = $settings['plugins']; - - if ( is_array( $data['plugins'] ) ) { - include_once ABSPATH . 'wp-admin/includes/plugin.php'; - $plugin_data = array(); - - foreach ( $data['plugins'] as $name => $slug ) { - $basename = strtok( $slug, '/' ); - $plugin_data[ $name ] = array( - 'name' => $name, - 'slug' => $slug, - 'installed' => GeneratePress_Site_Library_Helper::is_plugin_installed( $slug ) ? true : false, - 'active' => is_plugin_active( $slug ) ? true : false, - 'repo' => GeneratePress_Site_Library_Helper::file_exists( 'https://api.wordpress.org/plugins/info/1.0/' . $basename ) ? true : false, - ); - } - - $data['plugin_data'] = $plugin_data; - } - } - - if ( GeneratePress_Site_Library_Helper::file_exists( $site_data['directory'] . '/content.xml' ) ) { - $data['content'] = true; - } else { - $data['content'] = false; - } - - if ( GeneratePress_Site_Library_Helper::file_exists( $site_data['directory'] . '/widgets.wie' ) ) { - $data['widgets'] = true; - } else { - $data['widgets'] = false; - } - - return $this->success( $data ); - } - - /** - * Export a group of assets. - * - * @param WP_REST_Request $request request object. - * - * @return mixed - */ - public function import_options( WP_REST_Request $request ) { - $site_data = $request->get_param( 'siteData' ); - - if ( ! GeneratePress_Site_Library_Helper::file_exists( $site_data['directory'] . '/options.json' ) ) { - return $this->failed( 'No theme options exist.' ); - } - - // Delete existing backup. - delete_option( '_generatepress_site_library_backup' ); - - // Backup options. - $backup_data = get_option( '_generatepress_site_library_backup', array() ); - - $theme_mods = GeneratePress_Site_Library_Helper::get_theme_mods(); - $settings = GeneratePress_Site_Library_Helper::get_theme_settings(); - - $data = array( - 'mods' => array(), - 'options' => array(), - ); - - foreach ( $theme_mods as $theme_mod ) { - $data['mods'][ $theme_mod ] = get_theme_mod( $theme_mod ); - } - - foreach ( $settings as $setting ) { - $data['options'][ $setting ] = get_option( $setting ); - } - - $backup_data['theme_options'] = $data; - - $modules = GeneratePress_Site_Library_Helper::premium_modules(); - - $active_modules = array(); - foreach ( $modules as $name => $key ) { - if ( 'activated' === get_option( $key ) ) { - $active_modules[ $name ] = $key; - } - } - - $backup_data['modules'] = $active_modules; - - $settings = GeneratePress_Site_Library_Helper::get_options( $site_data['directory'] . '/options.json' ); - - // Remove all existing theme options. - $option_keys = array( - 'generate_settings', - 'generate_background_settings', - 'generate_blog_settings', - 'generate_hooks', - 'generate_page_header_settings', - 'generate_secondary_nav_settings', - 'generate_spacing_settings', - 'generate_menu_plus_settings', - 'generate_woocommerce_settings', - ); - - foreach ( $option_keys as $key ) { - delete_option( $key ); - } - - // Need to backup these items before we remove all theme mods. - $backup_data['site_options']['nav_menu_locations'] = get_theme_mod( 'nav_menu_locations' ); - $backup_data['site_options']['custom_logo'] = get_theme_mod( 'custom_logo' ); - - // Remove existing theme mods. - remove_theme_mods(); - - // Remove existing activated premium modules. - $premium_modules = GeneratePress_Site_Library_Helper::premium_modules(); - - foreach ( $premium_modules as $name => $key ) { - delete_option( $key ); - } - - // Activate necessary modules. - foreach ( $settings['modules'] as $name => $key ) { - // Only allow valid premium modules. - if ( ! in_array( $key, $premium_modules ) ) { - GeneratePress_Site_Library_Helper::log( 'Bad premium module key: ' . $key ); - continue; - } - - update_option( $key, 'activated' ); - } - - // Set theme mods. - foreach ( $settings['mods'] as $key => $val ) { - // Only allow valid theme mods. - if ( ! in_array( $key, GeneratePress_Site_Library_Helper::get_theme_mods() ) ) { - GeneratePress_Site_Library_Helper::log( 'Bad theme mod key: ' . $key ); - continue; - } - - set_theme_mod( $key, $val ); - } - - // Set theme options. - foreach ( $settings['options'] as $key => $val ) { - // Only allow valid options. - if ( ! in_array( $key, GeneratePress_Site_Library_Helper::get_theme_settings() ) ) { - GeneratePress_Site_Library_Helper::log( 'Bad theme setting key: ' . $key ); - continue; - } - - if ( is_array( $val ) || is_object( $val ) ) { - foreach ( $val as $option_name => $option_value ) { - // Import any images. - if ( is_string( $option_value ) && preg_match( '/\.(jpg|jpeg|png|gif)/i', $option_value ) ) { - $data = GeneratePress_Site_Library_Helper::sideload_image( $option_value ); - - if ( ! is_wp_error( $data ) ) { - $val[ $option_name ] = $data->url; - } - } - - // Set these options if we import content. - unset( $val['hide_title'] ); - unset( $val['hide_tagline'] ); - unset( $val['logo_width'] ); - } - } - - update_option( $key, $val ); - } - - // Re-add non-theme option related theme mods. - set_theme_mod( 'nav_menu_locations', $backup_data['site_options']['nav_menu_locations'] ); - set_theme_mod( 'custom_logo', $backup_data['site_options']['custom_logo'] ); - - $existing_settings = get_option( 'generate_settings', array() ); - - if ( isset( $backup_data['theme_options']['options']['generate_settings']['hide_title'] ) ) { - $existing_settings['hide_title'] = $backup_data['theme_options']['options']['generate_settings']['hide_title']; - } - - if ( isset( $backup_data['theme_options']['options']['generate_settings']['hide_tagline'] ) ) { - $existing_settings['hide_tagline'] = $backup_data['theme_options']['options']['generate_settings']['hide_tagline']; - } - - if ( isset( $backup_data['theme_options']['options']['generate_settings']['logo_width'] ) ) { - $existing_settings['logo_width'] = $backup_data['theme_options']['options']['generate_settings']['logo_width']; - } - - update_option( 'generate_settings', $existing_settings ); - - // Remove dynamic CSS cache. - delete_option( 'generate_dynamic_css_output' ); - delete_option( 'generate_dynamic_css_cached_version' ); - - $dynamic_css_data = get_option( 'generatepress_dynamic_css_data', array() ); - - if ( isset( $dynamic_css_data['updated_time'] ) ) { - unset( $dynamic_css_data['updated_time'] ); - } - - update_option( 'generatepress_dynamic_css_data', $dynamic_css_data ); - - // Custom CSS. - $css = $settings['custom_css']; - $css = '/* GeneratePress Site CSS */ ' . $css . ' /* End GeneratePress Site CSS */'; - - $current_css = wp_get_custom_css_post(); - - if ( isset( $current_css->post_content ) ) { - $current_css->post_content = preg_replace( '#(/\\* GeneratePress Site CSS \\*/).*?(/\\* End GeneratePress Site CSS \\*/)#s', '', $current_css->post_content ); - $css = $current_css->post_content . $css; - } - - wp_update_custom_css_post( $css ); - - update_option( '_generatepress_site_library_backup', $backup_data ); - - return $this->success( __( 'Options imported', 'gp-premium' ) ); - } - - /** - * Export a group of assets. - * - * @param WP_REST_Request $request request object. - * - * @return mixed - */ - public function activate_plugins( WP_REST_Request $request ) { - $site_data = $request->get_param( 'siteData' ); - $settings = GeneratePress_Site_Library_Helper::get_options( $site_data['directory'] . '/options.json' ); - $plugins = $settings['plugins']; - - // Backup plugins. - $backup_data = get_option( '_generatepress_site_library_backup', array() ); - $backup_data['plugins'] = get_option( 'active_plugins', array() ); - update_option( '_generatepress_site_library_backup', $backup_data ); - - if ( ! empty( $plugins ) ) { - $pro_plugins = GeneratePress_Site_Library_Helper::check_for_pro_plugins(); - include_once ABSPATH . 'wp-admin/includes/plugin.php'; - - foreach ( $plugins as $plugin ) { - // If the plugin has a pro version and it exists, activate it instead. - if ( array_key_exists( $plugin, $pro_plugins ) ) { - if ( file_exists( WP_PLUGIN_DIR . '/' . $pro_plugins[ $plugin ] ) ) { - $plugin = $pro_plugins[ $plugin ]; - } - } - - // Install BB lite if pro doesn't exist. - if ( 'bb-plugin/fl-builder.php' === $plugin && ! file_exists( WP_PLUGIN_DIR . '/bb-plugin/fl-builder.php' ) ) { - $plugin = 'beaver-builder-lite-version/fl-builder.php'; - } - - if ( ! is_plugin_active( $plugin ) ) { - activate_plugin( $plugin, '', false, true ); - - if ( 'woocommerce/woocommerce.php' === $plugin ) { - add_option( 'generate_woocommerce_no_create_pages', true ); - } - } - } - - return $this->success( __( 'Plugins activated', 'gp-premium' ) ); - } - } - - /** - * Export a group of assets. - * - * @param WP_REST_Request $request request object. - * - * @return mixed - */ - public function import_content( WP_REST_Request $request ) { - $site_data = $request->get_param( 'siteData' ); - $site_slug = $request->get_param( 'siteSlug' ); - $import_options = $request->get_param( 'importOptions' ); - $import_content = $request->get_param( 'importContent' ); - - // Increase PHP max execution time. - set_time_limit( apply_filters( 'generate_sites_content_import_time_limit', 300 ) ); - - $xml_path = $site_data['directory'] . '/content.xml'; - $xml_file = GeneratePress_Site_Library_Helper::download_file( $xml_path ); - $xml_path = $xml_file['data']['file']; - - if ( ! $xml_path ) { - return $this->failed( 'No content found.' ); - } - - // Increase PHP max execution time. - set_time_limit( apply_filters( 'generate_sites_content_import_time_limit', 300 ) ); - - // Disable import of authors. - add_filter( 'wxr_importer.pre_process.user', '__return_false' ); - - // Keep track of our progress. - add_action( 'wxr_importer.processed.post', array( 'GeneratePress_Site_Library_Helper', 'track_post' ) ); - add_action( 'wxr_importer.processed.term', array( 'GeneratePress_Site_Library_Helper', 'track_term' ) ); - - if ( class_exists( 'GeneratePress_Pro_Font_Library' ) ) { - $font_instance = GeneratePress_Pro_Font_Library::get_instance(); - add_action( 'import_post_meta', array( $font_instance, 'update_post_meta' ), 100, 3 ); - } - - // Disables generation of multiple image sizes (thumbnails) in the content import step. - if ( ! apply_filters( 'generate_sites_regen_thumbnails', true ) ) { - add_filter( 'intermediate_image_sizes_advanced', '__return_null' ); - } - - $backup_data = get_option( '_generatepress_site_library_backup', array() ); - $backup_data['content'] = true; - update_option( '_generatepress_site_library_backup', $backup_data ); - - GeneratePress_Site_Library_Helper::import_xml( $xml_path, $site_slug ); - - if ( class_exists( 'GeneratePress_Pro_Font_Library' ) ) { - GeneratePress_Pro_Font_Library::build_css_file(); - } - - if ( class_exists( 'GenerateBlocks_Pro_Enqueue_Styles' ) ) { - $instance = GenerateBlocks_Pro_Enqueue_Styles::get_instance(); - - if ( $instance && method_exists( $instance, 'build_css' ) ) { - $instance->build_css(); - } - } - - return $this->success( 'Content imported' ); - } - - /** - * Export a group of assets. - * - * @param WP_REST_Request $request request object. - * - * @return mixed - */ - public function import_site_options( WP_REST_Request $request ) { - $site_data = $request->get_param( 'siteData' ); - $site_slug = $request->get_param( 'siteSlug' ); - $backup_data = get_option( '_generatepress_site_library_backup', array() ); - - $settings = GeneratePress_Site_Library_Helper::get_options( $site_data['directory'] . '/options.json' ); - - foreach ( $settings['site_options'] as $key => $val ) { - switch ( $key ) { - case 'page_for_posts': - case 'page_on_front': - $backup_data['site_options'][ $key ] = get_option( $key ); - GeneratePress_Site_Library_Helper::set_reading_pages( $key, $val, $site_slug ); - break; - - case 'woocommerce_shop_page_id': - case 'woocommerce_cart_page_id': - case 'woocommerce_checkout_page_id': - case 'woocommerce_myaccount_page_id': - $backup_data['site_options'][ $key ] = get_option( $key ); - GeneratePress_Site_Library_Helper::set_woocommerce_pages( $key, $val, $site_slug ); - break; - - case 'nav_menu_locations': - if ( ! isset( $backup_data['site_options']['nav_menu_location'] ) ) { - $backup_data['site_options']['nav_menu_locations'] = get_theme_mod( 'nav_menu_locations' ); - } - - GeneratePress_Site_Library_Helper::set_nav_menu_locations( $val ); - break; - - case 'element_locations': - GeneratePress_Site_Library_Helper::set_element_locations( $val, $site_slug ); - break; - - case 'element_exclusions': - GeneratePress_Site_Library_Helper::set_element_exclusions( $val, $site_slug ); - break; - - case 'custom_logo': - if ( ! isset( $backup_data['site_options']['custom_logo'] ) ) { - $backup_data['site_options']['custom_logo'] = get_theme_mod( 'custom_logo' ); - } - - $data = GeneratePress_Site_Library_Helper::sideload_image( $val ); - - if ( ! is_wp_error( $data ) && isset( $data->attachment_id ) ) { - set_theme_mod( 'custom_logo', $data->attachment_id ); - update_post_meta( $data->attachment_id, '_wp_attachment_is_custom_header', get_option( 'stylesheet' ) ); - } else { - remove_theme_mod( 'custom_logo' ); - } - - break; - - default: - if ( in_array( $key, (array) GeneratePress_Site_Library_Helper::disallowed_options() ) ) { - GeneratePress_Site_Library_Helper::log( 'Disallowed option: ' . $key ); - } else { - $backup_data['site_options'][ $key ] = get_option( $key ); - delete_option( $key ); - update_option( $key, $val ); - } - break; - } - } - - // Set theme options. - $theme_settings = get_option( 'generate_settings', array() ); - $update_theme_settings = false; - - foreach ( $settings['options'] as $key => $val ) { - if ( 'generate_settings' !== $key ) { - continue; - } - - if ( is_array( $val ) || is_object( $val ) ) { - foreach ( $val as $option_name => $option_value ) { - if ( 'hide_title' === $option_name ) { - $theme_settings['hide_title'] = $option_value; - $update_theme_settings = true; - } - - if ( 'hide_tagline' === $option_name ) { - $theme_settings['hide_tagline'] = $option_value; - $update_theme_settings = true; - } - - if ( 'logo_width' === $option_name ) { - $theme_settings['logo_width'] = $option_value; - $update_theme_settings = true; - } - } - } - } - - if ( $update_theme_settings ) { - update_option( 'generate_settings', $theme_settings ); - - // Remove dynamic CSS cache. - delete_option( 'generate_dynamic_css_output' ); - delete_option( 'generate_dynamic_css_cached_version' ); - - $dynamic_css_data = get_option( 'generatepress_dynamic_css_data', array() ); - - if ( isset( $dynamic_css_data['updated_time'] ) ) { - unset( $dynamic_css_data['updated_time'] ); - } - - update_option( 'generatepress_dynamic_css_data', $dynamic_css_data ); - } - - // Set our backed up options. - update_option( '_generatepress_site_library_backup', $backup_data ); - - // Update any custom menu link URLs. - GeneratePress_Site_Library_Helper::update_menu_urls( $site_data['preview_url'] ); - - // Clear page builder cache. - GeneratePress_Site_Library_Helper::clear_page_builder_cache(); - - return $this->success( 'Site options imported' ); - } - - /** - * Export a group of assets. - * - * @param WP_REST_Request $request request object. - * - * @return mixed - */ - public function import_widgets( WP_REST_Request $request ) { - $site_data = $request->get_param( 'siteData' ); - - require_once GP_PREMIUM_DIR_PATH . 'site-library/classes/class-site-widget-importer.php'; - - $widgets_path = $site_data['directory'] . '/widgets.wie'; - - $wie_file = GeneratePress_Site_Library_Helper::download_file( $widgets_path ); - $wie_path = $wie_file['data']['file']; - - $data = implode( '', file( $wie_path ) ); - $data = json_decode( $data ); - - GeneratePress_Site_Library_Helper::clear_widgets(); - - add_filter( 'wie_widget_settings_array', array( 'GeneratePress_Site_Library_Helper', 'fix_custom_menu_widget_ids' ) ); - $widgets_importer = GeneratePress_Sites_Widget_Importer::instance(); - $widgets_importer->wie_import_data( $data ); - remove_filter( 'wie_widget_settings_array', array( 'GeneratePress_Site_Library_Helper', 'fix_custom_menu_widget_ids' ) ); - - return $this->success( 'Widgets imported' ); - } - - /** - * Restore our theme options. - */ - public function restore_theme_options() { - $backup_data = get_option( '_generatepress_site_library_backup', array() ); - - if ( ! empty( $backup_data ) ) { - if ( ! empty( $backup_data['theme_options']['mods'] ) ) { - remove_theme_mods(); - } - - if ( ! empty( $backup_data['theme_options']['options'] ) ) { - $option_keys = array( - 'generate_settings', - 'generate_background_settings', - 'generate_blog_settings', - 'generate_hooks', - 'generate_page_header_settings', - 'generate_secondary_nav_settings', - 'generate_spacing_settings', - 'generate_menu_plus_settings', - 'generate_woocommerce_settings', - ); - - foreach ( $option_keys as $key ) { - delete_option( $key ); - } - } - - if ( ! empty( $backup_data['modules'] ) ) { - $modules = GeneratePress_Site_Library_Helper::premium_modules(); - - foreach ( $modules as $name => $key ) { - delete_option( $key ); - } - - foreach ( (array) $backup_data['modules'] as $name => $key ) { - update_option( $key, 'activated' ); - } - } - - if ( ! empty( $backup_data['theme_options']['mods'] ) ) { - foreach ( $backup_data['theme_options']['mods'] as $key => $val ) { - // Only allow valid theme mods. - if ( ! in_array( $key, GeneratePress_Site_Library_Helper::get_theme_mods() ) ) { - GeneratePress_Site_Library_Helper::log( 'Bad theme mod key: ' . $key ); - continue; - } - - set_theme_mod( $key, $val ); - } - } - - if ( ! empty( $backup_data['theme_options']['options'] ) ) { - foreach ( $backup_data['theme_options']['options'] as $key => $val ) { - // Only allow valid options. - if ( ! in_array( $key, GeneratePress_Site_Library_Helper::get_theme_settings() ) ) { - GeneratePress_Site_Library_Helper::log( 'Bad theme setting key: ' . $key ); - continue; - } - - update_option( $key, $val ); - } - } - - // Re-add non-theme option related theme mods. - if ( isset( $backup_data['site_options']['nav_menu_locations'] ) ) { - set_theme_mod( 'nav_menu_locations', $backup_data['site_options']['nav_menu_locations'] ); - } - - if ( isset( $backup_data['site_options']['custom_logo'] ) ) { - set_theme_mod( 'custom_logo', $backup_data['site_options']['custom_logo'] ); - } - } - - return $this->success( __( 'Theme options restored.', 'gp-premium' ) ); - } - - /** - * Restore content. - */ - public function restore_content() { - $backup_data = get_option( '_generatepress_site_library_backup', array() ); - - // Plugins. - if ( ! empty( $backup_data['plugins'] ) && ! empty( $backup_data['site_options'] ) ) { - update_option( 'active_plugins', $backup_data['plugins'] ); - } - - // Content. - if ( ! empty( $backup_data ) ) { - global $wpdb; - $post_ids = $wpdb->get_col( "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key='_generatepress_sites_imported_post'" ); - $term_ids = $wpdb->get_col( "SELECT term_id FROM {$wpdb->termmeta} WHERE meta_key='_generatepress_sites_imported_term'" ); - - foreach ( $post_ids as $id ) { - wp_delete_post( $id, true ); - } - } - - // Site options. - if ( ! empty( $backup_data['site_options'] ) ) { - foreach ( $backup_data['site_options'] as $key => $val ) { - if ( in_array( $key, (array) GeneratePress_Site_Library_Helper::disallowed_options() ) ) { - GeneratePress_Site_Library_Helper::log( 'Disallowed option: ' . $key ); - continue; - } - - if ( 'nav_menu_locations' === $key || 'custom_logo' === $key ) { - set_theme_mod( $key, $val ); - } else { - if ( ! $val && ! is_numeric( $val ) ) { - delete_option( $key ); - } else { - update_option( $key, $val ); - } - } - } - } - - // Widgets. - if ( ! empty( $backup_data['widgets'] ) ) { - update_option( 'sidebars_widgets', $backup_data['widgets'] ); - } - - // CSS. - $current_css = wp_get_custom_css_post(); - - if ( isset( $current_css->post_content ) ) { - // Remove existing library CSS. - $current_css->post_content = preg_replace( '#(/\\* GeneratePress Site CSS \\*/).*?(/\\* End GeneratePress Site CSS \\*/)#s', '', $current_css->post_content ); - } - - wp_update_custom_css_post( $current_css->post_content ); - - // Clean up. - delete_option( 'generate_dynamic_css_output' ); - delete_option( 'generate_dynamic_css_cached_version' ); - delete_option( '_generatepress_site_library_backup' ); - - return $this->success( __( 'Content restored.', 'gp-premium' ) ); - } - - /** - * Success rest. - * - * @param mixed $response response data. - * @return mixed - */ - public function success( $response ) { - return new WP_REST_Response( - array( - 'success' => true, - 'response' => $response, - ), - 200 - ); - } - - /** - * Failed rest. - * - * @param mixed $response response data. - * @return mixed - */ - public function failed( $response ) { - return new WP_REST_Response( - array( - 'success' => false, - 'response' => $response, - ), - 200 - ); - } - - /** - * Error rest. - * - * @param mixed $code error code. - * @param mixed $response response data. - * @return mixed - */ - public function error( $code, $response ) { - return new WP_REST_Response( - array( - 'error' => true, - 'success' => false, - 'error_code' => $code, - 'response' => $response, - ), - 401 - ); - } -} - -GeneratePress_Site_Library_Rest::get_instance(); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/class-site-library.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/class-site-library.php deleted file mode 100644 index eb212fb2..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/class-site-library.php +++ /dev/null @@ -1,413 +0,0 @@ -id ) { - $parent_file = 'themes.php'; // phpcs:ignore -- Override necessary. - $submenu_file = 'generate-options'; // phpcs:ignore -- Override necessary. - } - - remove_submenu_page( 'themes.php', 'generatepress-library' ); - } - - /** - * Add our scripts. - */ - public function enqueue_scripts() { - $screen = get_current_screen(); - - if ( 'appearance_page_generatepress-library' === $screen->id ) { - wp_enqueue_script( - 'generatepress-pro-site-library', - GP_PREMIUM_DIR_URL . 'dist/site-library.js', - array( 'wp-api', 'wp-i18n', 'wp-components', 'wp-element', 'wp-api-fetch', 'wp-util', 'wp-html-entities', 'updates' ), - GP_PREMIUM_VERSION, - true - ); - - if ( function_exists( 'wp_set_script_translations' ) ) { - wp_set_script_translations( 'generatepress-pro-site-library', 'gp-premium', GP_PREMIUM_DIR_PATH . 'langs' ); - } - - if ( function_exists( 'wp_get_upload_dir' ) ) { - $uploads_url = wp_get_upload_dir(); - } else { - $uploads_url = wp_upload_dir( null, false ); - } - - wp_localize_script( - 'generatepress-pro-site-library', - 'gppSiteLibrary', - array( - 'homeUrl' => esc_url( home_url() ), - 'hasBackup' => ! empty( get_option( '_generatepress_site_library_backup', array() ) ), - 'gppVersion' => GP_PREMIUM_VERSION, - 'gpVersion' => generate_premium_get_theme_version(), - 'generateblocksVersion' => defined( 'GENERATEBLOCKS_VERSION' ) ? GENERATEBLOCKS_VERSION : '', - 'elementorReplaceUrls' => esc_url( admin_url( 'admin.php?page=elementor-tools#tab-replace_url' ) ), - 'uploadsUrl' => $uploads_url['baseurl'], - 'isDebugEnabled' => defined( 'WP_DEBUG' ) && true === WP_DEBUG, - ) - ); - - wp_enqueue_style( - 'generatepress-pro-site-library', - GP_PREMIUM_DIR_URL . 'dist/site-library.css', - array( 'wp-components' ), - GP_PREMIUM_VERSION - ); - - if ( ! class_exists( 'GeneratePress_Dashboard' ) ) { - wp_enqueue_style( - 'generate-premium-dashboard', - GP_PREMIUM_DIR_URL . 'inc/legacy/assets/dashboard.css', - array(), - GP_PREMIUM_VERSION - ); - } - } - } - - /** - * Add our page. - */ - public function library_page() { - if ( ! class_exists( 'GeneratePress_Dashboard' ) ) : - ?> -
            -
            -
            - -
            - - -
            -
            - - -
            - __( 'Site Library', 'gp-premium' ), - 'url' => admin_url( 'themes.php?page=generatepress-library' ), - 'class' => 'appearance_page_generatepress-library' === $screen->id ? 'active' : '', - 'id' => 'gp-site-library-tab', - ); - - return $tabs; - } - - /** - * Tell GeneratePress this is an admin page. - * - * @param array $screens Existing screens. - */ - public function add_dashboard_screen( $screens ) { - $screens[] = 'appearance_page_generatepress-library'; - - return $screens; - } - - /** - * Add our GeneratePress Site export checkbox to the Export module. - */ - public function add_export_checkbox() { - if ( ! apply_filters( 'generate_show_generatepress_site_export_option', false ) ) { - return; - } - ?> -
            - - - $key ) { - if ( 'activated' === get_option( $key ) ) { - $data['modules'][ $name ] = $key; - } - } - - // Site options. - $data['site_options']['nav_menu_locations'] = get_theme_mod( 'nav_menu_locations' ); - $data['site_options']['custom_logo'] = wp_get_attachment_url( get_theme_mod( 'custom_logo' ) ); - $data['site_options']['show_on_front'] = get_option( 'show_on_front' ); - $data['site_options']['page_on_front'] = get_option( 'page_on_front' ); - $data['site_options']['page_for_posts'] = get_option( 'page_for_posts' ); - - // Elements. - $data['site_options']['element_locations'] = $this->get_elements_locations(); - $data['site_options']['element_exclusions'] = $this->get_elements_exclusions(); - - // Custom CSS. - if ( function_exists( 'wp_get_custom_css_post' ) ) { - $data['custom_css'] = wp_get_custom_css_post()->post_content; - } - - // WooCommerce. - if ( is_plugin_active( 'woocommerce/woocommerce.php' ) ) { - $data['site_options']['woocommerce_shop_page_id'] = get_option( 'woocommerce_shop_page_id' ); - $data['site_options']['woocommerce_cart_page_id'] = get_option( 'woocommerce_cart_page_id' ); - $data['site_options']['woocommerce_checkout_page_id'] = get_option( 'woocommerce_checkout_page_id' ); - $data['site_options']['woocommerce_myaccount_page_id'] = get_option( 'woocommerce_myaccount_page_id' ); - $data['site_options']['woocommerce_single_image_width'] = get_option( 'woocommerce_single_image_width' ); - $data['site_options']['woocommerce_thumbnail_image_width'] = get_option( 'woocommerce_thumbnail_image_width' ); - $data['site_options']['woocommerce_thumbnail_cropping'] = get_option( 'woocommerce_thumbnail_cropping' ); - $data['site_options']['woocommerce_shop_page_display'] = get_option( 'woocommerce_shop_page_display' ); - $data['site_options']['woocommerce_category_archive_display'] = get_option( 'woocommerce_category_archive_display' ); - $data['site_options']['woocommerce_default_catalog_orderby'] = get_option( 'woocommerce_default_catalog_orderby' ); - } - - // Elementor. - if ( is_plugin_active( 'elementor/elementor.php' ) ) { - $data['site_options']['elementor_container_width'] = get_option( 'elementor_container_width' ); - $data['site_options']['elementor_cpt_support'] = get_option( 'elementor_cpt_support' ); - $data['site_options']['elementor_css_print_method'] = get_option( 'elementor_css_print_method' ); - $data['site_options']['elementor_default_generic_fonts'] = get_option( 'elementor_default_generic_fonts' ); - $data['site_options']['elementor_disable_color_schemes'] = get_option( 'elementor_disable_color_schemes' ); - $data['site_options']['elementor_disable_typography_schemes'] = get_option( 'elementor_disable_typography_schemes' ); - $data['site_options']['elementor_editor_break_lines'] = get_option( 'elementor_editor_break_lines' ); - $data['site_options']['elementor_exclude_user_roles'] = get_option( 'elementor_exclude_user_roles' ); - $data['site_options']['elementor_global_image_lightbox'] = get_option( 'elementor_global_image_lightbox' ); - $data['site_options']['elementor_page_title_selector'] = get_option( 'elementor_page_title_selector' ); - $data['site_options']['elementor_scheme_color'] = get_option( 'elementor_scheme_color' ); - $data['site_options']['elementor_scheme_color-picker'] = get_option( 'elementor_scheme_color-picker' ); - $data['site_options']['elementor_scheme_typography'] = get_option( 'elementor_scheme_typography' ); - $data['site_options']['elementor_space_between_widgets'] = get_option( 'elementor_space_between_widgets' ); - $data['site_options']['elementor_stretched_section_container'] = get_option( 'elementor_stretched_section_container' ); - $data['site_options']['elementor_load_fa4_shim'] = get_option( 'elementor_load_fa4_shim' ); - $data['site_options']['elementor_active_kit'] = get_option( 'elementor_active_kit' ); - } - - // Beaver Builder. - if ( is_plugin_active( 'beaver-builder-lite-version/fl-builder.php' ) || is_plugin_active( 'bb-plugin/fl-builder.php' ) ) { - $data['site_options']['_fl_builder_enabled_icons'] = get_option( '_fl_builder_enabled_icons' ); - $data['site_options']['_fl_builder_enabled_modules'] = get_option( '_fl_builder_enabled_modules' ); - $data['site_options']['_fl_builder_post_types'] = get_option( '_fl_builder_post_types' ); - $data['site_options']['_fl_builder_color_presets'] = get_option( '_fl_builder_color_presets' ); - $data['site_options']['_fl_builder_services'] = get_option( '_fl_builder_services' ); - $data['site_options']['_fl_builder_settings'] = get_option( '_fl_builder_settings' ); - $data['site_options']['_fl_builder_user_access'] = get_option( '_fl_builder_user_access' ); - $data['site_options']['_fl_builder_enabled_templates'] = get_option( '_fl_builder_enabled_templates' ); - } - - // Menu Icons. - if ( is_plugin_active( 'menu-icons/menu-icons.php' ) ) { - $data['site_options']['menu-icons'] = get_option( 'menu-icons' ); - } - - // Ninja Forms. - if ( is_plugin_active( 'ninja-forms/ninja-forms.php' ) ) { - $data['site_options']['ninja_forms_settings'] = get_option( 'ninja_forms_settings' ); - } - - // Social Warfare. - if ( is_plugin_active( 'social-warfare/social-warfare.php' ) ) { - $data['site_options']['socialWarfareOptions'] = get_option( 'socialWarfareOptions' ); - } - - // Elements Plus. - if ( is_plugin_active( 'elements-plus/elements-plus.php' ) ) { - $data['site_options']['elements_plus_settings'] = get_option( 'elements_plus_settings' ); - } - - // Ank Google Map. - if ( is_plugin_active( 'ank-google-map/ank-google-map.php' ) ) { - $data['site_options']['ank_google_map'] = get_option( 'ank_google_map' ); - } - - // GP Social Share. - if ( is_plugin_active( 'gp-social-share-svg/gp-social-share.php' ) ) { - $data['site_options']['gp_social_settings'] = get_option( 'gp_social_settings' ); - } - - // Active plugins. - $active_plugins = get_option( 'active_plugins' ); - $all_plugins = get_plugins(); - - $ignore = apply_filters( - 'generate_sites_ignore_plugins', - array( - 'gp-premium/gp-premium.php', - 'widget-importer-exporter/widget-importer-exporter.php', - ) - ); - - foreach ( $ignore as $plugin ) { - unset( $all_plugins[ $plugin ] ); - } - - $activated_plugins = array(); - - foreach ( $active_plugins as $p ) { - if ( isset( $all_plugins[ $p ] ) ) { - $activated_plugins[ $all_plugins[ $p ]['Name'] ] = $p; - } - } - - $data['plugins'] = $activated_plugins; - - return $data; - - } - - /** - * Get our Element display locations. - * - * @return array - */ - public function get_elements_locations() { - $args = array( - 'post_type' => 'gp_elements', - 'showposts' => -1, - ); - - $posts = get_posts( $args ); - $new_values = array(); - - foreach ( $posts as $post ) { - $display_conditions = get_post_meta( $post->ID, '_generate_element_display_conditions', true ); - - if ( $display_conditions ) { - $new_values[ $post->ID ] = $display_conditions; - } - } - - return $new_values; - } - - /** - * Get our Element display locations. - * - * @return array - */ - public function get_elements_exclusions() { - $args = array( - 'post_type' => 'gp_elements', - 'showposts' => -1, - ); - - $posts = get_posts( $args ); - $new_values = array(); - - foreach ( $posts as $post ) { - $display_conditions = get_post_meta( $post->ID, '_generate_element_exclude_conditions', true ); - - if ( $display_conditions ) { - $new_values[ $post->ID ] = $display_conditions; - } - } - - return $new_values; - } -} - -GeneratePress_Site_Library::get_instance(); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-beaver-builder-batch-processing.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-beaver-builder-batch-processing.php deleted file mode 100644 index 6ec1cbdc..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-beaver-builder-batch-processing.php +++ /dev/null @@ -1,163 +0,0 @@ -image_importer = new GeneratePress_Sites_Image_Importer(); - } - - /** - * Import - * - * @since 1.6 - * @return void - */ - public function import() { - GeneratePress_Site_Library_Helper::log( '== Start Processing Beaver Builder Images ==' ); - - $post_ids = GeneratePress_Site_Library_Helper::get_all_posts(); - - if ( is_array( $post_ids ) ) { - foreach ( $post_ids as $post_id ) { - $this->import_single_post( $post_id ); - } - } - } - - /** - * Update post meta. - * - * @param integer $post_id Post ID. - * @return void - */ - public function import_single_post( $post_id = 0 ) { - - if ( ! empty( $post_id ) ) { - - // Get page builder data. - $data = get_post_meta( $post_id, '_fl_builder_data', true ); - - if ( ! empty( $data ) ) { - foreach ( $data as $key => $el ) { - // Import background images. - if ( 'row' === $el->type || 'column' === $el->type ) { - $data[ $key ]->settings = $this->import_background_images( $el->settings ); - } - - // Import module images. - if ( 'module' === $el->type ) { - $data[ $key ]->settings = $this->import_module_images( $el->settings ); - } - } - - // Update page builder data. - update_post_meta( $post_id, '_fl_builder_data', $data ); - update_post_meta( $post_id, '_fl_builder_draft', $data ); - - // Clear all cache. - FLBuilderModel::delete_asset_cache_for_all_posts(); - } - } - } - - /** - * Import Module Images. - * - * @param object $settings Module settings object. - * @return object - */ - public function import_module_images( $settings ) { - - /** - * 1) Set photos. - */ - $settings = $this->import_photo( $settings ); - - /** - * 2) Set `$settings->data` for Only type 'image-icon' - * - * @todo Remove the condition `'image-icon' === $settings->type` if `$settings->data` is used only for the Image Icon. - */ - if ( isset( $settings->data ) && isset( $settings->photo ) && ! empty( $settings->photo ) && 'image-icon' === $settings->type ) { - $settings->data = FLBuilderPhoto::get_attachment_data( $settings->photo ); - } - - /** - * 3) Set `list item` module images - */ - if ( isset( $settings->add_list_item ) ) { - foreach ( $settings->add_list_item as $key => $value ) { - $settings->add_list_item[ $key ] = $this->import_photo( $value ); - } - } - - return $settings; - } - - /** - * Helper: Import BG Images. - * - * @param object $settings Row settings object. - * @return object - */ - public function import_background_images( $settings ) { - - if ( ! empty( $settings->bg_image ) && ! empty( $settings->bg_image_src ) ) { - $image = array( - 'url' => $settings->bg_image_src, - 'id' => $settings->bg_image, - ); - - $downloaded_image = $this->image_importer->import( $image ); - - $settings->bg_image_src = $downloaded_image['url']; - $settings->bg_image = $downloaded_image['id']; - } - - return $settings; - } - - /** - * Helper: Import Photo. - * - * @param object $settings Row settings object. - * @return object - */ - public function import_photo( $settings ) { - - if ( ! empty( $settings->photo ) && ! empty( $settings->photo_src ) ) { - $image = array( - 'url' => $settings->photo_src, - 'id' => $settings->photo, - ); - - $downloaded_image = $this->image_importer->import( $image ); - - $settings->photo_src = $downloaded_image['url']; - $settings->photo = $downloaded_image['id']; - } - - return $settings; - } - - -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-content-importer.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-content-importer.php deleted file mode 100644 index f2198499..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-content-importer.php +++ /dev/null @@ -1,49 +0,0 @@ -mapping['user_slug'][ $current_user_obj->user_login ] = $current_user_obj->ID; - } - - /** - * Get all protected variables from the WXR_Importer needed for continuing the import. - */ - public function get_importer_data() { - return array( - 'mapping' => $this->mapping, - ); - } - - /** - * Sets all protected variables from the WXR_Importer needed for continuing the import. - * - * @param array $data with set variables. - */ - public function set_importer_data( $data ) { - // phpcs:ignore -- Commented out code for now. - // $this->mapping = empty( $data['mapping'] ) ? array() : $data['mapping']; - // $this->requires_remapping = empty( $data['requires_remapping'] ) ? array() : $data['requires_remapping']; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-site-import-image.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-site-import-image.php deleted file mode 100644 index bd8226fe..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-site-import-image.php +++ /dev/null @@ -1,200 +0,0 @@ - $attachment ) { - $downloaded_images[] = $this->import( $attachment ); - } - - return $downloaded_images; - } - - /** - * Get Hash Image. - * - * @since 1.6 - * @param string $attachment_url Attachment URL. - * @return string Hash string. - */ - private function get_hash_image( $attachment_url ) { - return sha1( $attachment_url ); - } - - /** - * Get Saved Image. - * - * @since 1.6 - * @param string $attachment Attachment Data. - * @return string Hash string. - */ - private function get_saved_image( $attachment ) { - - global $wpdb; - - // Already imported? Then return! - if ( isset( $this->already_imported_ids[ $attachment['id'] ] ) ) { - GeneratePress_Site_Library_Helper::log( 'Successfully replaced: ' . $attachment['url'] ); - - return $this->already_imported_ids[ $attachment['id'] ]; - } - - // 1. Is already imported in Batch Import Process? - $post_id = $wpdb->get_var( - $wpdb->prepare( - 'SELECT `post_id` FROM `' . $wpdb->postmeta . '` - WHERE `meta_key` = \'_generatepress_sites_image_hash\' - AND `meta_value` = %s - ;', - $this->get_hash_image( $attachment['url'] ) - ) - ); - - // 2. Is image already imported though XML? - if ( empty( $post_id ) ) { - // Get file name without extension. - // To check it exist in attachment. - $filename = preg_replace( '/\\.[^.\\s]{3,4}$/', '', basename( $attachment['url'] ) ); - - $post_id = $wpdb->get_var( - $wpdb->prepare( - 'SELECT `post_id` FROM `' . $wpdb->postmeta . '` - WHERE `meta_key` = \'_wp_attached_file\' - AND `meta_value` LIKE %s - ;', - '%' . $filename . '%' - ) - ); - - GeneratePress_Site_Library_Helper::log( 'Successfully replaced: ' . $attachment['url'] ); - } - - if ( $post_id ) { - $new_attachment = array( - 'id' => $post_id, - 'url' => wp_get_attachment_url( $post_id ), - ); - - $this->already_imported_ids[ $attachment['id'] ] = $new_attachment; - - return $new_attachment; - } - - return false; - } - - /** - * Import Image - * - * @since 1.6 - * @param array $attachment Attachment array. - * @return array Attachment array. - */ - public function import( $attachment ) { - - $saved_image = $this->get_saved_image( $attachment ); - - if ( $saved_image ) { - return $saved_image; - } - - $file_content = wp_remote_retrieve_body( wp_safe_remote_get( $attachment['url'] ) ); - - // Empty file content? - if ( empty( $file_content ) ) { - GeneratePress_Site_Library_Helper::log( 'Failed to replace: ' . $attachment['url'] ); - GeneratePress_Site_Library_Helper::log( 'Error: Failed wp_remote_retrieve_body().' ); - - return $attachment; - } - - // Extract the file name and extension from the URL. - $filename = basename( $attachment['url'] ); - - $upload = wp_upload_bits( - $filename, - null, - $file_content - ); - - $post = array( - 'post_title' => $filename, - 'guid' => $upload['url'], - ); - - $info = wp_check_filetype( $upload['file'] ); - - if ( $info ) { - $post['post_mime_type'] = $info['type']; - } else { - // For now just return the origin attachment. - return $attachment; - } - - $post_id = wp_insert_attachment( $post, $upload['file'] ); - - wp_update_attachment_metadata( - $post_id, - wp_generate_attachment_metadata( $post_id, $upload['file'] ) - ); - - update_post_meta( $post_id, '_generatepress_sites_image_hash', $this->get_hash_image( $attachment['url'] ) ); - - $new_attachment = array( - 'id' => $post_id, - 'url' => $upload['url'], - ); - - GeneratePress_Site_Library_Helper::log( 'Successfully replaced: ' . $attachment['url'] ); - - $this->already_imported_ids[ $attachment['id'] ] = $new_attachment; - - return $new_attachment; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-site-widget-importer.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-site-widget-importer.php deleted file mode 100644 index ed1b611a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/classes/class-site-widget-importer.php +++ /dev/null @@ -1,275 +0,0 @@ - true, - ) - ); - } - - // Hook before import. - do_action( 'wie_before_import' ); // phpcs:ignore -- Keep the plugin prefix. - - $data = apply_filters( 'wie_import_data', $data ); // phpcs:ignore -- Keep the plugin prefix. - - // Get all available widgets site supports. - $available_widgets = $this->wie_available_widgets(); - - // Get all existing widget instances. - $widget_instances = array(); - - foreach ( $available_widgets as $widget_data ) { - $widget_instances[ $widget_data['id_base'] ] = get_option( 'widget_' . $widget_data['id_base'] ); - } - - // Begin results. - $results = array(); - - // Loop import data's sidebars. - foreach ( $data as $sidebar_id => $widgets ) { - // Skip inactive widgets (should not be in export file). - if ( 'wp_inactive_widgets' === $sidebar_id ) { - continue; - } - - // Check if sidebar is available on this site. - // Otherwise add widgets to inactive, and say so. - if ( isset( $wp_registered_sidebars[ $sidebar_id ] ) ) { - $sidebar_available = true; - $use_sidebar_id = $sidebar_id; - $sidebar_message_type = 'success'; - $sidebar_message = ''; - } else { - $sidebar_available = false; - $use_sidebar_id = 'wp_inactive_widgets'; // Add to inactive if sidebar does not exist in theme. - $sidebar_message_type = 'error'; - $sidebar_message = esc_html__( 'Widget area does not exist in theme (using Inactive)', 'widget-importer-exporter' ); - } - - // Result for sidebar - // Sidebar name if theme supports it; otherwise ID. - $results[ $sidebar_id ]['name'] = ! empty( $wp_registered_sidebars[ $sidebar_id ]['name'] ) ? $wp_registered_sidebars[ $sidebar_id ]['name'] : $sidebar_id; - $results[ $sidebar_id ]['message_type'] = $sidebar_message_type; - $results[ $sidebar_id ]['message'] = $sidebar_message; - $results[ $sidebar_id ]['widgets'] = array(); - - // Loop widgets. - foreach ( $widgets as $widget_instance_id => $widget ) { - $fail = false; - - // Get id_base (remove -# from end) and instance ID number. - $id_base = preg_replace( '/-[0-9]+$/', '', $widget_instance_id ); - $instance_id_number = str_replace( $id_base . '-', '', $widget_instance_id ); - - // Does site support this widget? - if ( ! $fail && ! isset( $available_widgets[ $id_base ] ) ) { - $fail = true; - $widget_message_type = 'error'; - $widget_message = esc_html__( 'Site does not support widget', 'widget-importer-exporter' ); // Explain why widget not imported. - } - - // Filter to modify settings object before conversion to array and import - // Leave this filter here for backwards compatibility with manipulating objects (before conversion to array below) - // Ideally the newer wie_widget_settings_array below will be used instead of this. - $widget = apply_filters( 'wie_widget_settings', $widget ); // phpcs:ignore -- Keep the plugin prefix. - - // Convert multidimensional objects to multidimensional arrays - // Some plugins like Jetpack Widget Visibility store settings as multidimensional arrays - // Without this, they are imported as objects and cause fatal error on Widgets page - // If this creates problems for plugins that do actually intend settings in objects then may need to consider other approach: https://wordpress.org/support/topic/problem-with-array-of-arrays - // It is probably much more likely that arrays are used than objects, however. - $widget = json_decode( wp_json_encode( $widget ), true ); - - // Filter to modify settings array - // This is preferred over the older wie_widget_settings filter above - // Do before identical check because changes may make it identical to end result (such as URL replacements). - $widget = apply_filters( 'wie_widget_settings_array', $widget ); // phpcs:ignore -- Keep the plugin prefix. - - // Does widget with identical settings already exist in same sidebar? - if ( ! $fail && isset( $widget_instances[ $id_base ] ) ) { - // Get existing widgets in this sidebar. - $sidebars_widgets = get_option( 'sidebars_widgets' ); - $sidebar_widgets = isset( $sidebars_widgets[ $use_sidebar_id ] ) ? $sidebars_widgets[ $use_sidebar_id ] : array(); // Check Inactive if that's where will go. - - // Loop widgets with ID base. - $single_widget_instances = ! empty( $widget_instances[ $id_base ] ) ? $widget_instances[ $id_base ] : array(); - - foreach ( $single_widget_instances as $check_id => $check_widget ) { - // Is widget in same sidebar and has identical settings? - if ( in_array( "$id_base-$check_id", $sidebar_widgets, true ) && (array) $widget === $check_widget ) { - $fail = true; - $widget_message_type = 'warning'; - // Explain why widget not imported. - $widget_message = esc_html__( 'Widget already exists', 'widget-importer-exporter' ); - break; - } - } - } - - // No failure. - if ( ! $fail ) { - // Add widget instance. - $single_widget_instances = get_option( 'widget_' . $id_base ); // All instances for that widget ID base, get fresh every time. - - $single_widget_instances = ! empty( $single_widget_instances ) ? $single_widget_instances : array( - '_multiwidget' => 1, // Start fresh if have to. - ); - - $single_widget_instances[] = $widget; // Add it. - - // Get the key it was given. - end( $single_widget_instances ); - - $new_instance_id_number = key( $single_widget_instances ); - - // If key is 0, make it 1 - // When 0, an issue can occur where adding a widget causes data from other widget to load, - // and the widget doesn't stick (reload wipes it). - if ( '0' === strval( $new_instance_id_number ) ) { - $new_instance_id_number = 1; - $single_widget_instances[ $new_instance_id_number ] = $single_widget_instances[0]; - unset( $single_widget_instances[0] ); - } - - // Move _multiwidget to end of array for uniformity. - if ( isset( $single_widget_instances['_multiwidget'] ) ) { - $multiwidget = $single_widget_instances['_multiwidget']; - unset( $single_widget_instances['_multiwidget'] ); - $single_widget_instances['_multiwidget'] = $multiwidget; - } - - // Update option with new widget. - update_option( 'widget_' . $id_base, $single_widget_instances ); - - // Assign widget instance to sidebar. - // Which sidebars have which widgets, get fresh every time. - $sidebars_widgets = get_option( 'sidebars_widgets' ); - - // Avoid rarely fatal error when the option is an empty string - // https://github.com/stevengliebe/widget-importer-exporter/pull/11. - if ( ! $sidebars_widgets ) { - $sidebars_widgets = array(); - } - - // Use ID number from new widget instance. - $new_instance_id = $id_base . '-' . $new_instance_id_number; - - // Add new instance to sidebar. - $sidebars_widgets[ $use_sidebar_id ][] = $new_instance_id; - - // Save the amended data. - update_option( 'sidebars_widgets', $sidebars_widgets ); - - // After widget import action. - $after_widget_import = array( - 'sidebar' => $use_sidebar_id, - 'sidebar_old' => $sidebar_id, - 'widget' => $widget, - 'widget_type' => $id_base, - 'widget_id' => $new_instance_id, - 'widget_id_old' => $widget_instance_id, - 'widget_id_num' => $new_instance_id_number, - 'widget_id_num_old' => $instance_id_number, - ); - - do_action( 'wie_after_widget_import', $after_widget_import ); // phpcs:ignore -- Keep the plugin prefix. - - // Success message. - if ( $sidebar_available ) { - $widget_message_type = 'success'; - $widget_message = esc_html__( 'Imported', 'widget-importer-exporter' ); - } else { - $widget_message_type = 'warning'; - $widget_message = esc_html__( 'Imported to Inactive', 'widget-importer-exporter' ); - } - } - - // Result for widget instance. - $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['name'] = isset( $available_widgets[ $id_base ]['name'] ) ? $available_widgets[ $id_base ]['name'] : $id_base; // Widget name or ID if name not available (not supported by site). - $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['title'] = ! empty( $widget['title'] ) ? $widget['title'] : esc_html__( 'No Title', 'widget-importer-exporter' ); // Show "No Title" if widget instance is untitled. - $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['message_type'] = $widget_message_type; - $results[ $sidebar_id ]['widgets'][ $widget_instance_id ]['message'] = $widget_message; - } - } - - // Hook after import. - do_action( 'wie_after_import' ); // phpcs:ignore -- Keep the plugin prefix. - - // Return results. - return apply_filters( 'wie_import_results', $results ); // phpcs:ignore -- Keep the plugin prefix. - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/libs/wxr-importer/WPImporterLogger.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/libs/wxr-importer/WPImporterLogger.php deleted file mode 100644 index 08183915..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/libs/wxr-importer/WPImporterLogger.php +++ /dev/null @@ -1,138 +0,0 @@ -log( 'emergency', $message, $context ); - } - - /** - * Action must be taken immediately. - * - * Example: Entire website down, database unavailable, etc. This should - * trigger the SMS alerts and wake you up. - * - * @param string $message - * @param array $context - * @return null - */ - public function alert( $message, array $context = array() ) { - return $this->log( 'alert', $message, $context ); - } - - /** - * Critical conditions. - * - * Example: Application component unavailable, unexpected exception. - * - * @param string $message - * @param array $context - * @return null - */ - public function critical( $message, array $context = array() ) { - return $this->log( 'critical', $message, $context ); - } - - /** - * Runtime errors that do not require immediate action but should typically - * be logged and monitored. - * - * @param string $message - * @param array $context - * @return null - */ - public function error( $message, array $context = array()) { - return $this->log( 'error', $message, $context ); - } - - /** - * Exceptional occurrences that are not errors. - * - * Example: Use of deprecated APIs, poor use of an API, undesirable things - * that are not necessarily wrong. - * - * @param string $message - * @param array $context - * @return null - */ - public function warning( $message, array $context = array() ) { - return $this->log( 'warning', $message, $context ); - } - - /** - * Normal but significant events. - * - * @param string $message - * @param array $context - * @return null - */ - public function notice( $message, array $context = array() ) { - return $this->log( 'notice', $message, $context ); - } - - /** - * Interesting events. - * - * Example: User logs in, SQL logs. - * - * @param string $message - * @param array $context - * @return null - */ - public function info( $message, array $context = array() ) { - return $this->log( 'info', $message, $context ); - } - - /** - * Detailed debug information. - * - * @param string $message - * @param array $context - * @return null - */ - public function debug( $message, array $context = array() ) { - return $this->log( 'debug', $message, $context ); - } - - /** - * Logs with an arbitrary level. - * - * @param mixed $level - * @param string $message - * @param array $context - * @return null - */ - public function log( $level, $message, array $context = array() ) { - $this->messages[] = array( - 'timestamp' => time(), - 'level' => $level, - 'message' => $message, - 'context' => $context, - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/libs/wxr-importer/WXRImportInfo.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/libs/wxr-importer/WXRImportInfo.php deleted file mode 100644 index a7e75aa0..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/site-library/libs/wxr-importer/WXRImportInfo.php +++ /dev/null @@ -1,16 +0,0 @@ -` tag at the start of the file. - * - * @var string - */ - protected $version = '1.0'; - - // information to import from WXR file - protected $categories = array(); - protected $tags = array(); - protected $base_url = ''; - - // TODO: REMOVE THESE - protected $processed_terms = array(); - protected $processed_posts = array(); - protected $processed_menu_items = array(); - protected $menu_item_orphans = array(); - protected $missing_menu_items = array(); - - // NEW STYLE - protected $mapping = array(); - protected $requires_remapping = array(); - protected $exists = array(); - protected $user_slug_override = array(); - - protected $url_remap = array(); - protected $featured_images = array(); - - /** - * Logger instance. - * - * @var WP_Importer_Logger - */ - protected $logger; - - /** - * Constructor - * - * @param array $options { - * @var bool $prefill_existing_posts Should we prefill `post_exists` calls? (True prefills and uses more memory, false checks once per imported post and takes longer. Default is true.) - * @var bool $prefill_existing_comments Should we prefill `comment_exists` calls? (True prefills and uses more memory, false checks once per imported comment and takes longer. Default is true.) - * @var bool $prefill_existing_terms Should we prefill `term_exists` calls? (True prefills and uses more memory, false checks once per imported term and takes longer. Default is true.) - * @var bool $update_attachment_guids Should attachment GUIDs be updated to the new URL? (True updates the GUID, which keeps compatibility with v1, false doesn't update, and allows deduplication and reimporting. Default is false.) - * @var bool $fetch_attachments Fetch attachments from the remote server. (True fetches and creates attachment posts, false skips attachments. Default is false.) - * @var bool $aggressive_url_search Should we search/replace for URLs aggressively? (True searches all posts' content for old URLs and replaces, false checks for `` only. Default is false.) - * @var int $default_author User ID to use if author is missing or invalid. (Default is null, which leaves posts unassigned.) - * } - */ - public function __construct( $options = array() ) { - // Initialize some important variables - $empty_types = array( - 'post' => array(), - 'comment' => array(), - 'term' => array(), - 'user' => array(), - ); - - $this->mapping = $empty_types; - $this->mapping['user_slug'] = array(); - $this->mapping['term_id'] = array(); - $this->requires_remapping = $empty_types; - $this->exists = $empty_types; - - $this->options = wp_parse_args( $options, array( - 'prefill_existing_posts' => true, - 'prefill_existing_comments' => true, - 'prefill_existing_terms' => true, - 'update_attachment_guids' => false, - 'fetch_attachments' => false, - 'aggressive_url_search' => false, - 'default_author' => null, - ) ); - } - - public function set_logger( $logger ) { - $this->logger = $logger; - } - - /** - * Get a stream reader for the file. - * - * @param string $file Path to the XML file. - * @return XMLReader|WP_Error Reader instance on success, error otherwise. - */ - protected function get_reader( $file ) { - // Avoid loading external entities for security - $old_value = null; - if ( function_exists( 'libxml_disable_entity_loader' ) ) { - // $old_value = libxml_disable_entity_loader( true ); - } - - $reader = new \XMLReader(); - $status = $reader->open( $file ); - - if ( ! is_null( $old_value ) ) { - // libxml_disable_entity_loader( $old_value ); - } - - if ( ! $status ) { - return new \WP_Error( 'wxr_importer.cannot_parse', __( 'Could not open the file for parsing', 'wordpress-importer' ) ); - } - - return $reader; - } - - /** - * The main controller for the actual import stage. - * - * @param string $file Path to the WXR file for importing - */ - public function get_preliminary_information( $file ) { - // Let's run the actual importer now, woot - $reader = $this->get_reader( $file ); - if ( is_wp_error( $reader ) ) { - return $reader; - } - - // Set the version to compatibility mode first - $this->version = '1.0'; - - // Start parsing! - $data = new WXRImportInfo(); - while ( $reader->read() ) { - // Only deal with element opens - if ( $reader->nodeType !== \XMLReader::ELEMENT ) { - continue; - } - - switch ( $reader->name ) { - case 'wp:wxr_version': - // Upgrade to the correct version - $this->version = $reader->readString(); - - if ( version_compare( $this->version, self::MAX_WXR_VERSION, '>' ) ) { - $this->logger->warning( sprintf( - __( 'This WXR file (version %s) is newer than the importer (version %s) and may not be supported. Please consider updating.', 'wordpress-importer' ), - $this->version, - self::MAX_WXR_VERSION - ) ); - } - - // Handled everything in this node, move on to the next - $reader->next(); - break; - - case 'generator': - $data->generator = $reader->readString(); - $reader->next(); - break; - - case 'title': - $data->title = $reader->readString(); - $reader->next(); - break; - - case 'wp:base_site_url': - $data->siteurl = $reader->readString(); - $reader->next(); - break; - - case 'wp:base_blog_url': - $data->home = $reader->readString(); - $reader->next(); - break; - - case 'wp:author': - $node = $reader->expand(); - - $parsed = $this->parse_author_node( $node ); - if ( is_wp_error( $parsed ) ) { - $this->log_error( $parsed ); - - // Skip the rest of this post - $reader->next(); - break; - } - - $data->users[] = $parsed; - - // Handled everything in this node, move on to the next - $reader->next(); - break; - - case 'item': - $node = $reader->expand(); - $parsed = $this->parse_post_node( $node ); - if ( is_wp_error( $parsed ) ) { - $this->log_error( $parsed ); - - // Skip the rest of this post - $reader->next(); - break; - } - - if ( $parsed['data']['post_type'] === 'attachment' ) { - $data->media_count++; - } else { - $data->post_count++; - } - $data->comment_count += count( $parsed['comments'] ); - - // Handled everything in this node, move on to the next - $reader->next(); - break; - - case 'wp:category': - case 'wp:tag': - case 'wp:term': - $data->term_count++; - - // Handled everything in this node, move on to the next - $reader->next(); - break; - } - } - - $data->version = $this->version; - - return $data; - } - - /** - * The main controller for the actual import stage. - * - * @param string $file Path to the WXR file for importing - */ - public function parse_authors( $file ) { - // Let's run the actual importer now, woot - $reader = $this->get_reader( $file ); - if ( is_wp_error( $reader ) ) { - return $reader; - } - - // Set the version to compatibility mode first - $this->version = '1.0'; - - // Start parsing! - $authors = array(); - while ( $reader->read() ) { - // Only deal with element opens - if ( $reader->nodeType !== \XMLReader::ELEMENT ) { - continue; - } - - switch ( $reader->name ) { - case 'wp:wxr_version': - // Upgrade to the correct version - $this->version = $reader->readString(); - - if ( version_compare( $this->version, self::MAX_WXR_VERSION, '>' ) ) { - $this->logger->warning( sprintf( - __( 'This WXR file (version %s) is newer than the importer (version %s) and may not be supported. Please consider updating.', 'wordpress-importer' ), - $this->version, - self::MAX_WXR_VERSION - ) ); - } - - // Handled everything in this node, move on to the next - $reader->next(); - break; - - case 'wp:author': - $node = $reader->expand(); - - $parsed = $this->parse_author_node( $node ); - if ( is_wp_error( $parsed ) ) { - $this->log_error( $parsed ); - - // Skip the rest of this post - $reader->next(); - break; - } - - $authors[] = $parsed; - - // Handled everything in this node, move on to the next - $reader->next(); - break; - } - } - - return $authors; - } - - /** - * The main controller for the actual import stage. - * - * @param string $file Path to the WXR file for importing - */ - public function import( $file ) { - add_filter( 'import_post_meta_key', array( $this, 'is_valid_meta_key' ) ); - add_filter( 'http_request_timeout', array( &$this, 'bump_request_timeout' ) ); - - /* - * Elementor fix for excessive use of `wp_slash` after our update v3.0.2. - * Method in Elementor: \Elementor\Compatibility::register_actions - * https://wordpress.org/support/topic/version-2-6-0-breaks-every-elementor-theme/ - * - * This can be removed after Elementor skips the functionality in above method if our plugin is in use. - */ - if ( method_exists( '\Elementor\Compatibility', 'on_wxr_importer_pre_process_post_meta' ) ) { - remove_action( 'wxr_importer.pre_process.post_meta', array( 'Elementor\Compatibility', 'on_wxr_importer_pre_process_post_meta' ) ); - } - - $result = $this->import_start( $file ); - if ( is_wp_error( $result ) ) { - return $result; - } - - // Let's run the actual importer now, woot - $reader = $this->get_reader( $file ); - if ( is_wp_error( $reader ) ) { - return $reader; - } - - // Set the version to compatibility mode first - $this->version = '1.0'; - - // Reset other variables - $this->base_url = ''; - - // Start parsing! - while ( $reader->read() ) { - // Only deal with element opens - if ( $reader->nodeType !== \XMLReader::ELEMENT ) { - continue; - } - - switch ( $reader->name ) { - case 'wp:wxr_version': - // Upgrade to the correct version - $this->version = $reader->readString(); - - if ( version_compare( $this->version, self::MAX_WXR_VERSION, '>' ) ) { - $this->logger->warning( sprintf( - __( 'This WXR file (version %s) is newer than the importer (version %s) and may not be supported. Please consider updating.', 'wordpress-importer' ), - $this->version, - self::MAX_WXR_VERSION - ) ); - } - - // Handled everything in this node, move on to the next - $reader->next(); - break; - - case 'wp:base_site_url': - $this->base_url = $reader->readString(); - - // Handled everything in this node, move on to the next - $reader->next(); - break; - - case 'item': - $node = $reader->expand(); - $parsed = $this->parse_post_node( $node ); - if ( is_wp_error( $parsed ) ) { - $this->log_error( $parsed ); - - // Skip the rest of this post - $reader->next(); - break; - } - - $this->process_post( $parsed['data'], $parsed['meta'], $parsed['comments'], $parsed['terms'] ); - - // Handled everything in this node, move on to the next - $reader->next(); - break; - - case 'wp:author': - $node = $reader->expand(); - - $parsed = $this->parse_author_node( $node ); - if ( is_wp_error( $parsed ) ) { - $this->log_error( $parsed ); - - // Skip the rest of this post - $reader->next(); - break; - } - - $status = $this->process_author( $parsed['data'], $parsed['meta'] ); - if ( is_wp_error( $status ) ) { - $this->log_error( $status ); - } - - // Handled everything in this node, move on to the next - $reader->next(); - break; - - case 'wp:category': - $node = $reader->expand(); - - $parsed = $this->parse_term_node( $node, 'category' ); - if ( is_wp_error( $parsed ) ) { - $this->log_error( $parsed ); - - // Skip the rest of this post - $reader->next(); - break; - } - - $status = $this->process_term( $parsed['data'], $parsed['meta'] ); - - // Handled everything in this node, move on to the next - $reader->next(); - break; - - case 'wp:tag': - $node = $reader->expand(); - - $parsed = $this->parse_term_node( $node, 'tag' ); - if ( is_wp_error( $parsed ) ) { - $this->log_error( $parsed ); - - // Skip the rest of this post - $reader->next(); - break; - } - - $status = $this->process_term( $parsed['data'], $parsed['meta'] ); - - // Handled everything in this node, move on to the next - $reader->next(); - break; - - case 'wp:term': - $node = $reader->expand(); - - $parsed = $this->parse_term_node( $node ); - if ( is_wp_error( $parsed ) ) { - $this->log_error( $parsed ); - - // Skip the rest of this post - $reader->next(); - break; - } - - $status = $this->process_term( $parsed['data'], $parsed['meta'] ); - - // Handled everything in this node, move on to the next - $reader->next(); - break; - - default: - // Skip this node, probably handled by something already - break; - } - } - - // Now that we've done the main processing, do any required - // post-processing and remapping. - $this->post_process(); - - if ( $this->options['aggressive_url_search'] ) { - $this->replace_attachment_urls_in_content(); - } - - $this->remap_featured_images(); - - $this->import_end(); - } - - /** - * Log an error instance to the logger. - * - * @param WP_Error $error Error instance to log. - */ - protected function log_error( WP_Error $error ) { - $this->logger->warning( $error->get_error_message() ); - - // Log the data as debug info too - $data = $error->get_error_data(); - if ( ! empty( $data ) ) { - $this->logger->debug( var_export( $data, true ) ); - } - } - - /** - * Parses the WXR file and prepares us for the task of processing parsed data - * - * @param string $file Path to the WXR file for importing - */ - protected function import_start( $file ) { - if ( ! is_file( $file ) ) { - return new \WP_Error( 'wxr_importer.file_missing', __( 'The file does not exist, please try again.', 'wordpress-importer' ) ); - } - - // Suspend bunches of stuff in WP core - wp_defer_term_counting( true ); - wp_defer_comment_counting( true ); - wp_suspend_cache_invalidation( true ); - - // Prefill exists calls if told to - if ( $this->options['prefill_existing_posts'] ) { - $this->prefill_existing_posts(); - } - if ( $this->options['prefill_existing_comments'] ) { - $this->prefill_existing_comments(); - } - if ( $this->options['prefill_existing_terms'] ) { - $this->prefill_existing_terms(); - } - - /** - * Begin the import. - * - * Fires before the import process has begun. If you need to suspend - * caching or heavy processing on hooks, do so here. - */ - do_action( 'generate_import_start' ); - } - - /** - * Performs post-import cleanup of files and the cache - */ - protected function import_end() { - // Re-enable stuff in core - wp_suspend_cache_invalidation( false ); - wp_cache_flush(); - foreach ( get_taxonomies() as $tax ) { - delete_option( "{$tax}_children" ); - _get_term_hierarchy( $tax ); - } - - wp_defer_term_counting( false ); - wp_defer_comment_counting( false ); - - /** - * Complete the import. - * - * Fires after the import process has finished. If you need to update - * your cache or re-enable processing, do so here. - */ - do_action( 'generate_import_end' ); - } - - /** - * Set the user mapping. - * - * @param array $mapping List of map arrays (containing `old_slug`, `old_id`, `new_id`) - */ - public function set_user_mapping( $mapping ) { - foreach ( $mapping as $map ) { - if ( empty( $map['old_slug'] ) || empty( $map['old_id'] ) || empty( $map['new_id'] ) ) { - $this->logger->warning( __( 'Invalid author mapping', 'wordpress-importer' ) ); - $this->logger->debug( var_export( $map, true ) ); - continue; - } - - $old_slug = $map['old_slug']; - $old_id = $map['old_id']; - $new_id = $map['new_id']; - - $this->mapping['user'][ $old_id ] = $new_id; - $this->mapping['user_slug'][ $old_slug ] = $new_id; - } - } - - /** - * Set the user slug overrides. - * - * Allows overriding the slug in the import with a custom/renamed version. - * - * @param string[] $overrides Map of old slug to new slug. - */ - public function set_user_slug_overrides( $overrides ) { - foreach ( $overrides as $original => $renamed ) { - $this->user_slug_override[ $original ] = $renamed; - } - } - - /** - * Parse a post node into post data. - * - * @param DOMElement $node Parent node of post data (typically `item`). - * @return array|WP_Error Post data array on success, error otherwise. - */ - protected function parse_post_node( $node ) { - $data = array(); - $meta = array(); - $comments = array(); - $terms = array(); - - foreach ( $node->childNodes as $child ) { - // We only care about child elements - if ( $child->nodeType !== XML_ELEMENT_NODE ) { - continue; - } - - switch ( $child->tagName ) { - case 'wp:post_type': - $data['post_type'] = $child->textContent; - break; - - case 'title': - $data['post_title'] = $child->textContent; - break; - - case 'guid': - $data['guid'] = $child->textContent; - break; - - case 'dc:creator': - $data['post_author'] = $child->textContent; - break; - - case 'content:encoded': - $data['post_content'] = $child->textContent; - break; - - case 'excerpt:encoded': - $data['post_excerpt'] = $child->textContent; - break; - - case 'wp:post_id': - $data['post_id'] = $child->textContent; - break; - - case 'wp:post_date': - $data['post_date'] = $child->textContent; - break; - - case 'wp:post_date_gmt': - $data['post_date_gmt'] = $child->textContent; - break; - - case 'wp:comment_status': - $data['comment_status'] = $child->textContent; - break; - - case 'wp:ping_status': - $data['ping_status'] = $child->textContent; - break; - - case 'wp:post_name': - $data['post_name'] = $child->textContent; - break; - - case 'wp:status': - $data['post_status'] = $child->textContent; - - if ( $data['post_status'] === 'auto-draft' ) { - // Bail now - return new \WP_Error( - 'wxr_importer.post.cannot_import_draft', - __( 'Cannot import auto-draft posts' ), - $data - ); - } - break; - - case 'wp:post_parent': - $data['post_parent'] = $child->textContent; - break; - - case 'wp:menu_order': - $data['menu_order'] = $child->textContent; - break; - - case 'wp:post_password': - $data['post_password'] = $child->textContent; - break; - - case 'wp:is_sticky': - $data['is_sticky'] = $child->textContent; - break; - - case 'wp:attachment_url': - $data['attachment_url'] = $child->textContent; - break; - - case 'wp:postmeta': - $meta_item = $this->parse_meta_node( $child ); - if ( ! empty( $meta_item ) ) { - $meta[] = $meta_item; - } - break; - - case 'wp:comment': - $comment_item = $this->parse_comment_node( $child ); - if ( ! empty( $comment_item ) ) { - $comments[] = $comment_item; - } - break; - - case 'category': - $term_item = $this->parse_category_node( $child ); - if ( ! empty( $term_item ) ) { - $terms[] = $term_item; - } - break; - } - } - - return compact( 'data', 'meta', 'comments', 'terms' ); - } - - /** - * Create new posts based on import information - * - * Posts marked as having a parent which doesn't exist will become top level items. - * Doesn't create a new post if: the post type doesn't exist, the given post ID - * is already noted as imported or a post with the same title and date already exists. - * Note that new/updated terms, comments and meta are imported for the last of the above. - */ - protected function process_post( $data, $meta, $comments, $terms ) { - /** - * Pre-process post data. - * - * @param array $data Post data. (Return empty to skip.) - * @param array $meta Meta data. - * @param array $comments Comments on the post. - * @param array $terms Terms on the post. - */ - $data = apply_filters( 'wxr_importer.pre_process.post', $data, $meta, $comments, $terms ); - if ( empty( $data ) ) { - return false; - } - - $original_id = isset( $data['post_id'] ) ? (int) $data['post_id'] : 0; - $parent_id = isset( $data['post_parent'] ) ? (int) $data['post_parent'] : 0; - $author_id = isset( $data['post_author'] ) ? (int) $data['post_author'] : 0; - - // Have we already processed this? - if ( isset( $this->mapping['post'][ $original_id ] ) ) { - return; - } - - $post_type_object = get_post_type_object( $data['post_type'] ); - - // Is this type even valid? - if ( ! $post_type_object ) { - $this->logger->warning( sprintf( - __( 'Failed to import "%s": Invalid post type %s', 'wordpress-importer' ), - $data['post_title'], - $data['post_type'] - ) ); - return false; - } - - $post_exists = $this->post_exists( $data ); - if ( $post_exists ) { - $this->logger->info( sprintf( - __( '%s "%s" already exists.', 'wordpress-importer' ), - $post_type_object->labels->singular_name, - $data['post_title'] - ) ); - - /** - * Post processing already imported. - * - * @param array $data Raw data imported for the post. - */ - do_action( 'wxr_importer.process_already_imported.post', $data ); - - // Even though this post already exists, new comments might need importing - $this->process_comments( $comments, $original_id, $data, $post_exists ); - - return false; - } - - // Map the parent post, or mark it as one we need to fix - $requires_remapping = false; - if ( $parent_id ) { - if ( isset( $this->mapping['post'][ $parent_id ] ) ) { - $data['post_parent'] = $this->mapping['post'][ $parent_id ]; - } else { - $meta[] = array( 'key' => '_wxr_import_parent', 'value' => $parent_id ); - $requires_remapping = true; - - $data['post_parent'] = 0; - } - } - - // Map the author, or mark it as one we need to fix - $author = sanitize_user( $data['post_author'], true ); - if ( empty( $author ) ) { - // Missing or invalid author, use default if available. - $data['post_author'] = $this->options['default_author']; - } elseif ( isset( $this->mapping['user_slug'][ $author ] ) ) { - $data['post_author'] = $this->mapping['user_slug'][ $author ]; - } else { - $meta[] = array( 'key' => '_wxr_import_user_slug', 'value' => $author ); - $requires_remapping = true; - - $data['post_author'] = (int) get_current_user_id(); - } - - // Does the post look like it contains attachment images? - if ( preg_match( self::REGEX_HAS_ATTACHMENT_REFS, $data['post_content'] ) ) { - $meta[] = array( 'key' => '_wxr_import_has_attachment_refs', 'value' => true ); - $requires_remapping = true; - } - - // Whitelist to just the keys we allow - $postdata = array( - 'import_id' => $data['post_id'], - ); - $allowed = array( - 'post_author' => true, - 'post_date' => true, - 'post_date_gmt' => true, - 'post_content' => true, - 'post_excerpt' => true, - 'post_title' => true, - 'post_status' => true, - 'post_name' => true, - 'comment_status' => true, - 'ping_status' => true, - 'guid' => true, - 'post_parent' => true, - 'menu_order' => true, - 'post_type' => true, - 'post_password' => true, - ); - foreach ( $data as $key => $value ) { - if ( ! isset( $allowed[ $key ] ) ) { - continue; - } - - $postdata[ $key ] = $data[ $key ]; - } - - $postdata = apply_filters( 'wp_import_post_data_processed', wp_slash( $postdata ), $data ); - - if ( 'attachment' === $postdata['post_type'] ) { - if ( ! $this->options['fetch_attachments'] ) { - $this->logger->notice( sprintf( - __( 'Skipping attachment "%s", fetching attachments disabled' ), - $data['post_title'] - ) ); - /** - * Post processing skipped. - * - * @param array $data Raw data imported for the post. - * @param array $meta Raw meta data, already processed by {@see process_post_meta}. - */ - do_action( 'wxr_importer.process_skipped.post', $data, $meta ); - return false; - } - $remote_url = ! empty( $data['attachment_url'] ) ? $data['attachment_url'] : $data['guid']; - $post_id = $this->process_attachment( $postdata, $meta, $remote_url ); - } else { - $post_id = wp_insert_post( $postdata, true ); - do_action( 'wp_import_insert_post', $post_id, $original_id, $postdata, $data ); - } - - if ( is_wp_error( $post_id ) ) { - $this->logger->error( sprintf( - __( 'Failed to import "%s" (%s)', 'wordpress-importer' ), - $data['post_title'], - $post_type_object->labels->singular_name - ) ); - $this->logger->debug( $post_id->get_error_message() ); - - /** - * Post processing failed. - * - * @param WP_Error $post_id Error object. - * @param array $data Raw data imported for the post. - * @param array $meta Raw meta data, already processed by {@see process_post_meta}. - * @param array $comments Raw comment data, already processed by {@see process_comments}. - * @param array $terms Raw term data, already processed. - */ - do_action( 'wxr_importer.process_failed.post', $post_id, $data, $meta, $comments, $terms ); - return false; - } - - // Ensure stickiness is handled correctly too - if ( $data['is_sticky'] === '1' ) { - stick_post( $post_id ); - } - - // map pre-import ID to local ID - $this->mapping['post'][ $original_id ] = (int) $post_id; - if ( $requires_remapping ) { - $this->requires_remapping['post'][ $post_id ] = true; - } - $this->mark_post_exists( $data, $post_id ); - - $this->logger->info( sprintf( - __( 'Imported "%s" (%s)', 'wordpress-importer' ), - $data['post_title'], - $post_type_object->labels->singular_name - ) ); - $this->logger->debug( sprintf( - __( 'Post %d remapped to %d', 'wordpress-importer' ), - $original_id, - $post_id - ) ); - - // Handle the terms too - $terms = apply_filters( 'wp_import_post_terms', $terms, $post_id, $data ); - - if ( ! empty( $terms ) ) { - $term_ids = array(); - foreach ( $terms as $term ) { - $taxonomy = $term['taxonomy']; - $key = sha1( $taxonomy . ':' . $term['slug'] ); - - if ( isset( $this->mapping['term'][ $key ] ) ) { - $term_ids[ $taxonomy ][] = (int) $this->mapping['term'][ $key ]; - } else { - $meta[] = array( 'key' => '_wxr_import_term', 'value' => $term ); - $requires_remapping = true; - } - } - - foreach ( $term_ids as $tax => $ids ) { - $tt_ids = wp_set_post_terms( $post_id, $ids, $tax ); - do_action( 'wp_import_set_post_terms', $tt_ids, $ids, $tax, $post_id, $data ); - } - } - - $this->process_comments( $comments, $post_id, $data ); - $this->process_post_meta( $meta, $post_id, $data ); - - if ( 'nav_menu_item' === $data['post_type'] ) { - $this->process_menu_item_meta( $post_id, $data, $meta ); - } - - /** - * Post processing completed. - * - * @param int $post_id New post ID. - * @param array $data Raw data imported for the post. - * @param array $meta Raw meta data, already processed by {@see process_post_meta}. - * @param array $comments Raw comment data, already processed by {@see process_comments}. - * @param array $terms Raw term data, already processed. - */ - do_action( 'wxr_importer.processed.post', $post_id, $data, $meta, $comments, $terms ); - } - - /** - * Attempt to create a new menu item from import data - * - * Fails for draft, orphaned menu items and those without an associated nav_menu - * or an invalid nav_menu term. If the post type or term object which the menu item - * represents doesn't exist then the menu item will not be imported (waits until the - * end of the import to retry again before discarding). - * - * @param array $item Menu item details from WXR file - */ - protected function process_menu_item_meta( $post_id, $data, $meta ) { - - $item_type = get_post_meta( $post_id, '_menu_item_type', true ); - $original_object_id = get_post_meta( $post_id, '_menu_item_object_id', true ); - $object_id = null; - - $this->logger->debug( sprintf( 'Processing menu item %s', $item_type ) ); - - $requires_remapping = false; - switch ( $item_type ) { - case 'taxonomy': - if ( isset( $this->mapping['term_id'][ $original_object_id ] ) ) { - $object_id = $this->mapping['term_id'][ $original_object_id ]; - } else { - add_post_meta( $post_id, '_wxr_import_menu_item', wp_slash( $original_object_id ) ); - $requires_remapping = true; - } - break; - - case 'post_type': - if ( isset( $this->mapping['post'][ $original_object_id ] ) ) { - $object_id = $this->mapping['post'][ $original_object_id ]; - } else { - add_post_meta( $post_id, '_wxr_import_menu_item', wp_slash( $original_object_id ) ); - $requires_remapping = true; - } - break; - - case 'custom': - // Custom refers to itself, wonderfully easy. - $object_id = $post_id; - break; - - default: - // associated object is missing or not imported yet, we'll retry later - $this->missing_menu_items[] = $item; - $this->logger->debug( 'Unknown menu item type' ); - break; - } - - if ( $requires_remapping ) { - $this->requires_remapping['post'][ $post_id ] = true; - } - - if ( empty( $object_id ) ) { - // Nothing needed here. - return; - } - - $this->logger->debug( sprintf( 'Menu item %d mapped to %d', $original_object_id, $object_id ) ); - update_post_meta( $post_id, '_menu_item_object_id', wp_slash( $object_id ) ); - } - - /** - * If fetching attachments is enabled then attempt to create a new attachment - * - * @param array $post Attachment post details from WXR - * @param string $url URL to fetch attachment from - * @return int|WP_Error Post ID on success, WP_Error otherwise - */ - protected function process_attachment( $post, $meta, $remote_url ) { - // try to use _wp_attached file for upload folder placement to ensure the same location as the export site - // e.g. location is 2003/05/image.jpg but the attachment post_date is 2010/09, see media_handle_upload() - $post['upload_date'] = $post['post_date']; - foreach ( $meta as $meta_item ) { - if ( $meta_item['key'] !== '_wp_attached_file' ) { - continue; - } - - if ( preg_match( '%^[0-9]{4}/[0-9]{2}%', $meta_item['value'], $matches ) ) { - $post['upload_date'] = $matches[0]; - } - break; - } - - // if the URL is absolute, but does not contain address, then upload it assuming base_site_url - if ( preg_match( '|^/[\w\W]+$|', $remote_url ) ) { - $remote_url = rtrim( $this->base_url, '/' ) . $remote_url; - } - - $upload = $this->fetch_remote_file( $remote_url, $post ); - if ( is_wp_error( $upload ) ) { - return $upload; - } - - $info = wp_check_filetype( $upload['file'] ); - if ( ! $info ) { - return new \WP_Error( 'attachment_processing_error', __( 'Invalid file type', 'wordpress-importer' ) ); - } - - $post['post_mime_type'] = $info['type']; - - // WP really likes using the GUID for display. Allow updating it. - // See https://core.trac.wordpress.org/ticket/33386 - if ( $this->options['update_attachment_guids'] ) { - $post['guid'] = $upload['url']; - } - - // as per wp-admin/includes/upload.php - $post_id = wp_insert_attachment( $post, $upload['file'] ); - if ( is_wp_error( $post_id ) ) { - return $post_id; - } - - $attachment_metadata = wp_generate_attachment_metadata( $post_id, $upload['file'] ); - wp_update_attachment_metadata( $post_id, $attachment_metadata ); - - // Map this image URL later if we need to - $this->url_remap[ $remote_url ] = $upload['url']; - - // If we have a HTTPS URL, ensure the HTTP URL gets replaced too - if ( substr( $remote_url, 0, 8 ) === 'https://' ) { - $insecure_url = 'http' . substr( $remote_url, 5 ); - $this->url_remap[ $insecure_url ] = $upload['url']; - } - - if ( $this->options['aggressive_url_search'] ) { - // remap resized image URLs, works by stripping the extension and remapping the URL stub. - /*if ( preg_match( '!^image/!', $info['type'] ) ) { - $parts = pathinfo( $remote_url ); - $name = basename( $parts['basename'], ".{$parts['extension']}" ); // PATHINFO_FILENAME in PHP 5.2 - - $parts_new = pathinfo( $upload['url'] ); - $name_new = basename( $parts_new['basename'], ".{$parts_new['extension']}" ); - - $this->url_remap[$parts['dirname'] . '/' . $name] = $parts_new['dirname'] . '/' . $name_new; - }*/ - } - - return $post_id; - } - - /** - * Parse a meta node into meta data. - * - * @param DOMElement $node Parent node of meta data (typically `wp:postmeta` or `wp:commentmeta`). - * @return array|null Meta data array on success, or null on error. - */ - protected function parse_meta_node( $node ) { - foreach ( $node->childNodes as $child ) { - // We only care about child elements - if ( $child->nodeType !== XML_ELEMENT_NODE ) { - continue; - } - - switch ( $child->tagName ) { - case 'wp:meta_key': - $key = $child->textContent; - break; - - case 'wp:meta_value': - $value = $child->textContent; - break; - } - } - - if ( empty( $key ) || empty( $value ) ) { - return null; - } - - return compact( 'key', 'value' ); - } - - /** - * Process and import post meta items. - * - * @param array $meta List of meta data arrays - * @param int $post_id Post to associate with - * @param array $post Post data - * @return int|WP_Error Number of meta items imported on success, error otherwise. - */ - protected function process_post_meta( $meta, $post_id, $post ) { - if ( empty( $meta ) ) { - return true; - } - - foreach ( $meta as $meta_item ) { - /** - * Pre-process post meta data. - * - * @param array $meta_item Meta data. (Return empty to skip.) - * @param int $post_id Post the meta is attached to. - */ - $meta_item = apply_filters( 'wxr_importer.pre_process.post_meta', $meta_item, $post_id ); - if ( empty( $meta_item ) ) { - return false; - } - - $key = apply_filters( 'import_post_meta_key', $meta_item['key'], $post_id, $post ); - $value = false; - - if ( '_edit_last' === $key ) { - $value = intval( $meta_item['value'] ); - if ( ! isset( $this->mapping['user'][ $value ] ) ) { - // Skip! - continue; - } - - $value = $this->mapping['user'][ $value ]; - } - - if ( $key ) { - // export gets meta straight from the DB so could have a serialized string - if ( ! $value ) { - $value = maybe_unserialize( $meta_item['value'] ); - } - - if ( function_exists( 'wp_slash_strings_only' ) ) { - add_post_meta( $post_id, wp_slash( $key ), wp_slash_strings_only( $value ) ); - } else { - add_post_meta( $post_id, $key, $value ); - } - - do_action( 'import_post_meta', $post_id, $key, $value ); - - // if the post has a featured image, take note of this in case of remap - if ( '_thumbnail_id' === $key ) { - $this->featured_images[ $post_id ] = (int) $value; - } - } - } - - return true; - } - - /** - * Parse a comment node into comment data. - * - * @param DOMElement $node Parent node of comment data (typically `wp:comment`). - * @return array Comment data array. - */ - protected function parse_comment_node( $node ) { - $data = array( - 'commentmeta' => array(), - ); - - foreach ( $node->childNodes as $child ) { - // We only care about child elements - if ( $child->nodeType !== XML_ELEMENT_NODE ) { - continue; - } - - switch ( $child->tagName ) { - case 'wp:comment_id': - $data['comment_id'] = $child->textContent; - break; - case 'wp:comment_author': - $data['comment_author'] = $child->textContent; - break; - - case 'wp:comment_author_email': - $data['comment_author_email'] = $child->textContent; - break; - - case 'wp:comment_author_IP': - $data['comment_author_IP'] = $child->textContent; - break; - - case 'wp:comment_author_url': - $data['comment_author_url'] = $child->textContent; - break; - - case 'wp:comment_user_id': - $data['comment_user_id'] = $child->textContent; - break; - - case 'wp:comment_date': - $data['comment_date'] = $child->textContent; - break; - - case 'wp:comment_date_gmt': - $data['comment_date_gmt'] = $child->textContent; - break; - - case 'wp:comment_content': - $data['comment_content'] = $child->textContent; - break; - - case 'wp:comment_approved': - $data['comment_approved'] = $child->textContent; - break; - - case 'wp:comment_type': - $data['comment_type'] = $child->textContent; - break; - - case 'wp:comment_parent': - $data['comment_parent'] = $child->textContent; - break; - - case 'wp:commentmeta': - $meta_item = $this->parse_meta_node( $child ); - if ( ! empty( $meta_item ) ) { - $data['commentmeta'][] = $meta_item; - } - break; - } - } - - return $data; - } - - /** - * Process and import comment data. - * - * @param array $comments List of comment data arrays. - * @param int $post_id Post to associate with. - * @param array $post Post data. - * @return int|WP_Error Number of comments imported on success, error otherwise. - */ - protected function process_comments( $comments, $post_id, $post, $post_exists = false ) { - - $comments = apply_filters( 'wp_import_post_comments', $comments, $post_id, $post ); - if ( empty( $comments ) ) { - return 0; - } - - $num_comments = 0; - - // Sort by ID to avoid excessive remapping later - usort( $comments, array( $this, 'sort_comments_by_id' ) ); - - foreach ( $comments as $key => $comment ) { - /** - * Pre-process comment data - * - * @param array $comment Comment data. (Return empty to skip.) - * @param int $post_id Post the comment is attached to. - */ - $comment = apply_filters( 'wxr_importer.pre_process.comment', $comment, $post_id ); - if ( empty( $comment ) ) { - return false; - } - - $original_id = isset( $comment['comment_id'] ) ? (int) $comment['comment_id'] : 0; - $parent_id = isset( $comment['comment_parent'] ) ? (int) $comment['comment_parent'] : 0; - $author_id = isset( $comment['comment_user_id'] ) ? (int) $comment['comment_user_id'] : 0; - - // if this is a new post we can skip the comment_exists() check - // TODO: Check comment_exists for performance - if ( $post_exists ) { - $existing = $this->comment_exists( $comment ); - if ( $existing ) { - - /** - * Comment processing already imported. - * - * @param array $comment Raw data imported for the comment. - */ - do_action( 'wxr_importer.process_already_imported.comment', $comment ); - - $this->mapping['comment'][ $original_id ] = $existing; - continue; - } - } - - // Remove meta from the main array - $meta = isset( $comment['commentmeta'] ) ? $comment['commentmeta'] : array(); - unset( $comment['commentmeta'] ); - - // Map the parent comment, or mark it as one we need to fix - $requires_remapping = false; - if ( $parent_id ) { - if ( isset( $this->mapping['comment'][ $parent_id ] ) ) { - $comment['comment_parent'] = $this->mapping['comment'][ $parent_id ]; - } else { - // Prepare for remapping later - $meta[] = array( 'key' => '_wxr_import_parent', 'value' => $parent_id ); - $requires_remapping = true; - - // Wipe the parent for now - $comment['comment_parent'] = 0; - } - } - - // Map the author, or mark it as one we need to fix - if ( $author_id ) { - if ( isset( $this->mapping['user'][ $author_id ] ) ) { - $comment['user_id'] = $this->mapping['user'][ $author_id ]; - } else { - // Prepare for remapping later - $meta[] = array( 'key' => '_wxr_import_user', 'value' => $author_id ); - $requires_remapping = true; - - // Wipe the user for now - $comment['user_id'] = 0; - } - } - - // Run standard core filters - $comment['comment_post_ID'] = $post_id; - $comment = wp_filter_comment( $comment ); - - // wp_insert_comment expects slashed data - $comment_id = wp_insert_comment( wp_slash( $comment ) ); - $this->mapping['comment'][ $original_id ] = $comment_id; - if ( $requires_remapping ) { - $this->requires_remapping['comment'][ $comment_id ] = true; - } - $this->mark_comment_exists( $comment, $comment_id ); - - /** - * Comment has been imported. - * - * @param int $comment_id New comment ID - * @param array $comment Comment inserted (`comment_id` item refers to the original ID) - * @param int $post_id Post parent of the comment - * @param array $post Post data - */ - do_action( 'wp_import_insert_comment', $comment_id, $comment, $post_id, $post ); - - // Process the meta items - foreach ( $meta as $meta_item ) { - $value = maybe_unserialize( $meta_item['value'] ); - add_comment_meta( $comment_id, wp_slash( $meta_item['key'] ), wp_slash( $value ) ); - } - - /** - * Post processing completed. - * - * @param int $post_id New post ID. - * @param array $comment Raw data imported for the comment. - * @param array $meta Raw meta data, already processed by {@see process_post_meta}. - * @param array $post_id Parent post ID. - */ - do_action( 'wxr_importer.processed.comment', $comment_id, $comment, $meta, $post_id ); - - $num_comments++; - } - - return $num_comments; - } - - protected function parse_category_node( $node ) { - $data = array( - // Default taxonomy to "category", since this is a `` tag - 'taxonomy' => 'category', - ); - $meta = array(); - - if ( $node->hasAttribute( 'domain' ) ) { - $data['taxonomy'] = $node->getAttribute( 'domain' ); - } - if ( $node->hasAttribute( 'nicename' ) ) { - $data['slug'] = $node->getAttribute( 'nicename' ); - } - - $data['name'] = $node->textContent; - - if ( empty( $data['slug'] ) ) { - return null; - } - - // Just for extra compatibility - if ( $data['taxonomy'] === 'tag' ) { - $data['taxonomy'] = 'post_tag'; - } - - return $data; - } - - /** - * Callback for `usort` to sort comments by ID - * - * @param array $a Comment data for the first comment - * @param array $b Comment data for the second comment - * @return int - */ - public static function sort_comments_by_id( $a, $b ) { - if ( empty( $a['comment_id'] ) ) { - return 1; - } - - if ( empty( $b['comment_id'] ) ) { - return -1; - } - - return $a['comment_id'] - $b['comment_id']; - } - - protected function parse_author_node( $node ) { - $data = array(); - $meta = array(); - foreach ( $node->childNodes as $child ) { - // We only care about child elements - if ( $child->nodeType !== XML_ELEMENT_NODE ) { - continue; - } - - switch ( $child->tagName ) { - case 'wp:author_login': - $data['user_login'] = $child->textContent; - break; - - case 'wp:author_id': - $data['ID'] = $child->textContent; - break; - - case 'wp:author_email': - $data['user_email'] = $child->textContent; - break; - - case 'wp:author_display_name': - $data['display_name'] = $child->textContent; - break; - - case 'wp:author_first_name': - $data['first_name'] = $child->textContent; - break; - - case 'wp:author_last_name': - $data['last_name'] = $child->textContent; - break; - } - } - - return compact( 'data', 'meta' ); - } - - protected function process_author( $data, $meta ) { - /** - * Pre-process user data. - * - * @param array $data User data. (Return empty to skip.) - * @param array $meta Meta data. - */ - $data = apply_filters( 'wxr_importer.pre_process.user', $data, $meta ); - if ( empty( $data ) ) { - return false; - } - - // Have we already handled this user? - $original_id = isset( $data['ID'] ) ? $data['ID'] : 0; - $original_slug = $data['user_login']; - - if ( isset( $this->mapping['user'][ $original_id ] ) ) { - $existing = $this->mapping['user'][ $original_id ]; - - // Note the slug mapping if we need to too - if ( ! isset( $this->mapping['user_slug'][ $original_slug ] ) ) { - $this->mapping['user_slug'][ $original_slug ] = $existing; - } - - return false; - } - - if ( isset( $this->mapping['user_slug'][ $original_slug ] ) ) { - $existing = $this->mapping['user_slug'][ $original_slug ]; - - // Ensure we note the mapping too - $this->mapping['user'][ $original_id ] = $existing; - - return false; - } - - // Allow overriding the user's slug - $login = $original_slug; - if ( isset( $this->user_slug_override[ $login ] ) ) { - $login = $this->user_slug_override[ $login ]; - } - - $userdata = array( - 'user_login' => sanitize_user( $login, true ), - 'user_pass' => wp_generate_password(), - ); - - $allowed = array( - 'user_email' => true, - 'display_name' => true, - 'first_name' => true, - 'last_name' => true, - ); - foreach ( $data as $key => $value ) { - if ( ! isset( $allowed[ $key ] ) ) { - continue; - } - - $userdata[ $key ] = $data[ $key ]; - } - - $user_id = wp_insert_user( wp_slash( $userdata ) ); - if ( is_wp_error( $user_id ) ) { - $this->logger->error( sprintf( - __( 'Failed to import user "%s"', 'wordpress-importer' ), - $userdata['user_login'] - ) ); - $this->logger->debug( $user_id->get_error_message() ); - - /** - * User processing failed. - * - * @param WP_Error $user_id Error object. - * @param array $userdata Raw data imported for the user. - */ - do_action( 'wxr_importer.process_failed.user', $user_id, $userdata ); - return false; - } - - if ( $original_id ) { - $this->mapping['user'][ $original_id ] = $user_id; - } - $this->mapping['user_slug'][ $original_slug ] = $user_id; - - $this->logger->info( sprintf( - __( 'Imported user "%s"', 'wordpress-importer' ), - $userdata['user_login'] - ) ); - $this->logger->debug( sprintf( - __( 'User %d remapped to %d', 'wordpress-importer' ), - $original_id, - $user_id - ) ); - - // TODO: Implement meta handling once WXR includes it - /** - * User processing completed. - * - * @param int $user_id New user ID. - * @param array $userdata Raw data imported for the user. - */ - do_action( 'wxr_importer.processed.user', $user_id, $userdata ); - } - - protected function parse_term_node( $node, $type = 'term' ) { - $data = array(); - $meta = array(); - - $tag_name = array( - 'id' => 'wp:term_id', - 'taxonomy' => 'wp:term_taxonomy', - 'slug' => 'wp:term_slug', - 'parent' => 'wp:term_parent', - 'name' => 'wp:term_name', - 'description' => 'wp:term_description', - ); - $taxonomy = null; - - // Special casing! - switch ( $type ) { - case 'category': - $tag_name['slug'] = 'wp:category_nicename'; - $tag_name['parent'] = 'wp:category_parent'; - $tag_name['name'] = 'wp:cat_name'; - $tag_name['description'] = 'wp:category_description'; - $tag_name['taxonomy'] = null; - - $data['taxonomy'] = 'category'; - break; - - case 'tag': - $tag_name['slug'] = 'wp:tag_slug'; - $tag_name['parent'] = null; - $tag_name['name'] = 'wp:tag_name'; - $tag_name['description'] = 'wp:tag_description'; - $tag_name['taxonomy'] = null; - - $data['taxonomy'] = 'post_tag'; - break; - } - - foreach ( $node->childNodes as $child ) { - // We only care about child elements - if ( $child->nodeType !== XML_ELEMENT_NODE ) { - continue; - } - - $key = array_search( $child->tagName, $tag_name ); - if ( $key ) { - $data[ $key ] = $child->textContent; - } - } - - if ( empty( $data['taxonomy'] ) ) { - return null; - } - - // Compatibility with WXR 1.0 - if ( $data['taxonomy'] === 'tag' ) { - $data['taxonomy'] = 'post_tag'; - } - - return compact( 'data', 'meta' ); - } - - protected function process_term( $data, $meta ) { - /** - * Pre-process term data. - * - * @param array $data Term data. (Return empty to skip.) - * @param array $meta Meta data. - */ - $data = apply_filters( 'wxr_importer.pre_process.term', $data, $meta ); - if ( empty( $data ) ) { - return false; - } - - $original_id = isset( $data['id'] ) ? (int) $data['id'] : 0; - $parent_id = isset( $data['parent'] ) ? (int) $data['parent'] : 0; - - $mapping_key = sha1( $data['taxonomy'] . ':' . $data['slug'] ); - $existing = $this->term_exists( $data ); - if ( $existing ) { - - /** - * Term processing already imported. - * - * @param array $data Raw data imported for the term. - */ - do_action( 'wxr_importer.process_already_imported.term', $data ); - - $this->mapping['term'][ $mapping_key ] = $existing; - $this->mapping['term_id'][ $original_id ] = $existing; - return false; - } - - // WP really likes to repeat itself in export files - if ( isset( $this->mapping['term'][ $mapping_key ] ) ) { - return false; - } - - $termdata = array(); - $allowed = array( - 'slug' => true, - 'description' => true, - ); - - // Map the parent comment, or mark it as one we need to fix - // TODO: add parent mapping and remapping - /*$requires_remapping = false; - if ( $parent_id ) { - if ( isset( $this->mapping['term'][ $parent_id ] ) ) { - $data['parent'] = $this->mapping['term'][ $parent_id ]; - } else { - // Prepare for remapping later - $meta[] = array( 'key' => '_wxr_import_parent', 'value' => $parent_id ); - $requires_remapping = true; - - // Wipe the parent for now - $data['parent'] = 0; - } - }*/ - - foreach ( $data as $key => $value ) { - if ( ! isset( $allowed[ $key ] ) ) { - continue; - } - - $termdata[ $key ] = $data[ $key ]; - } - - $result = wp_insert_term( $data['name'], $data['taxonomy'], $termdata ); - if ( is_wp_error( $result ) ) { - $this->logger->warning( sprintf( - __( 'Failed to import %s %s', 'wordpress-importer' ), - $data['taxonomy'], - $data['name'] - ) ); - $this->logger->debug( $result->get_error_message() ); - do_action( 'wp_import_insert_term_failed', $result, $data ); - - /** - * Term processing failed. - * - * @param WP_Error $result Error object. - * @param array $data Raw data imported for the term. - * @param array $meta Meta data supplied for the term. - */ - do_action( 'wxr_importer.process_failed.term', $result, $data, $meta ); - return false; - } - - $term_id = $result['term_id']; - - $this->mapping['term'][ $mapping_key ] = $term_id; - $this->mapping['term_id'][ $original_id ] = $term_id; - - $this->logger->info( sprintf( - __( 'Imported "%s" (%s)', 'wordpress-importer' ), - $data['name'], - $data['taxonomy'] - ) ); - $this->logger->debug( sprintf( - __( 'Term %d remapped to %d', 'wordpress-importer' ), - $original_id, - $term_id - ) ); - - do_action( 'wp_import_insert_term', $term_id, $data ); - - /** - * Term processing completed. - * - * @param int $term_id New term ID. - * @param array $data Raw data imported for the term. - */ - do_action( 'wxr_importer.processed.term', $term_id, $data ); - } - - /** - * Attempt to download a remote file attachment - * - * @param string $url URL of item to fetch - * @param array $post Attachment details - * @return array|WP_Error Local file location details on success, WP_Error otherwise - */ - protected function fetch_remote_file( $url, $post ) { - // extract the file name and extension from the url - $file_name = basename( $url ); - - // get placeholder file in the upload dir with a unique, sanitized filename - $upload = wp_upload_bits( $file_name, 0, '', $post['upload_date'] ); - if ( $upload['error'] ) { - return new \WP_Error( 'upload_dir_error', $upload['error'] ); - } - - // fetch the remote url and write it to the placeholder file - $response = wp_remote_get( $url, array( - 'stream' => true, - 'filename' => $upload['file'], - ) ); - - // request failed - if ( is_wp_error( $response ) ) { - unlink( $upload['file'] ); - return $response; - } - - $code = (int) wp_remote_retrieve_response_code( $response ); - - // make sure the fetch was successful - if ( $code !== 200 ) { - unlink( $upload['file'] ); - return new \WP_Error( - 'import_file_error', - sprintf( - __( 'Remote server returned %1$d %2$s for %3$s', 'wordpress-importer' ), - $code, - get_status_header_desc( $code ), - $url - ) - ); - } - - $filesize = filesize( $upload['file'] ); - $headers = wp_remote_retrieve_headers( $response ); - - if ( isset( $headers['content-length'] ) && $filesize !== (int) $headers['content-length'] ) { - unlink( $upload['file'] ); - return new \WP_Error( 'import_file_error', __( 'Remote file is incorrect size', 'wordpress-importer' ) ); - } - - if ( 0 === $filesize ) { - unlink( $upload['file'] ); - return new \WP_Error( 'import_file_error', __( 'Zero size file downloaded', 'wordpress-importer' ) ); - } - - $max_size = (int) $this->max_attachment_size(); - if ( ! empty( $max_size ) && $filesize > $max_size ) { - unlink( $upload['file'] ); - $message = sprintf( __( 'Remote file is too large, limit is %s', 'wordpress-importer' ), size_format( $max_size ) ); - return new \WP_Error( 'import_file_error', $message ); - } - - return $upload; - } - - protected function post_process() { - // Time to tackle any left-over bits - if ( ! empty( $this->requires_remapping['post'] ) ) { - $this->post_process_posts( $this->requires_remapping['post'] ); - } - if ( ! empty( $this->requires_remapping['comment'] ) ) { - $this->post_process_comments( $this->requires_remapping['comment'] ); - } - } - - protected function post_process_posts( $todo ) { - foreach ( $todo as $post_id => $_ ) { - $this->logger->debug( sprintf( - // Note: title intentionally not used to skip extra processing - // for when debug logging is off - __( 'Running post-processing for post %d', 'wordpress-importer' ), - $post_id - ) ); - - $data = array(); - - $parent_id = get_post_meta( $post_id, '_wxr_import_parent', true ); - if ( ! empty( $parent_id ) ) { - // Have we imported the parent now? - if ( isset( $this->mapping['post'][ $parent_id ] ) ) { - $data['post_parent'] = $this->mapping['post'][ $parent_id ]; - } else { - $this->logger->warning( sprintf( - __( 'Could not find the post parent for "%s" (post #%d)', 'wordpress-importer' ), - get_the_title( $post_id ), - $post_id - ) ); - $this->logger->debug( sprintf( - __( 'Post %d was imported with parent %d, but could not be found', 'wordpress-importer' ), - $post_id, - $parent_id - ) ); - } - } - - $author_slug = get_post_meta( $post_id, '_wxr_import_user_slug', true ); - if ( ! empty( $author_slug ) ) { - // Have we imported the user now? - if ( isset( $this->mapping['user_slug'][ $author_slug ] ) ) { - $data['post_author'] = $this->mapping['user_slug'][ $author_slug ]; - } else { - $this->logger->warning( sprintf( - __( 'Could not find the author for "%s" (post #%d)', 'wordpress-importer' ), - get_the_title( $post_id ), - $post_id - ) ); - $this->logger->debug( sprintf( - __( 'Post %d was imported with author "%s", but could not be found', 'wordpress-importer' ), - $post_id, - $author_slug - ) ); - } - } - - $has_attachments = get_post_meta( $post_id, '_wxr_import_has_attachment_refs', true ); - if ( ! empty( $has_attachments ) ) { - $post = get_post( $post_id ); - $content = $post->post_content; - - // Replace all the URLs we've got - $new_content = str_replace( array_keys( $this->url_remap ), $this->url_remap, $content ); - if ( $new_content !== $content ) { - $data['post_content'] = $new_content; - } - } - - if ( get_post_type( $post_id ) === 'nav_menu_item' ) { - $this->post_process_menu_item( $post_id ); - } - - // Do we have updates to make? - if ( empty( $data ) ) { - $this->logger->debug( sprintf( - __( 'Post %d was marked for post-processing, but none was required.', 'wordpress-importer' ), - $post_id - ) ); - continue; - } - - // Run the update - $data['ID'] = $post_id; - - if ( isset( $data['post_content'] ) ) { - $data['post_content'] = wp_slash( $data['post_content'] ); - } - - $result = wp_update_post( $data, true ); - - if ( is_wp_error( $result ) ) { - $this->logger->warning( sprintf( - __( 'Could not update "%s" (post #%d) with mapped data', 'wordpress-importer' ), - get_the_title( $post_id ), - $post_id - ) ); - $this->logger->debug( $result->get_error_message() ); - continue; - } - - // Clear out our temporary meta keys - delete_post_meta( $post_id, '_wxr_import_parent' ); - delete_post_meta( $post_id, '_wxr_import_user_slug' ); - delete_post_meta( $post_id, '_wxr_import_has_attachment_refs' ); - } - } - - protected function post_process_menu_item( $post_id ) { - $menu_object_id = get_post_meta( $post_id, '_wxr_import_menu_item', true ); - if ( empty( $menu_object_id ) ) { - // No processing needed! - return; - } - - $menu_item_type = get_post_meta( $post_id, '_menu_item_type', true ); - switch ( $menu_item_type ) { - case 'taxonomy': - if ( isset( $this->mapping['term_id'][ $menu_object_id ] ) ) { - $menu_object = $this->mapping['term_id'][ $menu_object_id ]; - } - break; - - case 'post_type': - if ( isset( $this->mapping['post'][ $menu_object_id ] ) ) { - $menu_object = $this->mapping['post'][ $menu_object_id ]; - } - break; - - default: - // Cannot handle this. - return; - } - - if ( ! empty( $menu_object ) ) { - update_post_meta( $post_id, '_menu_item_object_id', wp_slash( $menu_object ) ); - } else { - $this->logger->warning( sprintf( - __( 'Could not find the menu object for "%s" (post #%d)', 'wordpress-importer' ), - get_the_title( $post_id ), - $post_id - ) ); - $this->logger->debug( sprintf( - __( 'Post %d was imported with object "%d" of type "%s", but could not be found', 'wordpress-importer' ), - $post_id, - $menu_object_id, - $menu_item_type - ) ); - } - - delete_post_meta( $post_id, '_wxr_import_menu_item' ); - } - - - protected function post_process_comments( $todo ) { - foreach ( $todo as $comment_id => $_ ) { - $data = array(); - - $parent_id = get_comment_meta( $comment_id, '_wxr_import_parent', true ); - if ( ! empty( $parent_id ) ) { - // Have we imported the parent now? - if ( isset( $this->mapping['comment'][ $parent_id ] ) ) { - $data['comment_parent'] = $this->mapping['comment'][ $parent_id ]; - } else { - $this->logger->warning( sprintf( - __( 'Could not find the comment parent for comment #%d', 'wordpress-importer' ), - $comment_id - ) ); - $this->logger->debug( sprintf( - __( 'Comment %d was imported with parent %d, but could not be found', 'wordpress-importer' ), - $comment_id, - $parent_id - ) ); - } - } - - $author_id = get_comment_meta( $comment_id, '_wxr_import_user', true ); - if ( ! empty( $author_id ) ) { - // Have we imported the user now? - if ( isset( $this->mapping['user'][ $author_id ] ) ) { - $data['user_id'] = $this->mapping['user'][ $author_id ]; - } else { - $this->logger->warning( sprintf( - __( 'Could not find the author for comment #%d', 'wordpress-importer' ), - $comment_id - ) ); - $this->logger->debug( sprintf( - __( 'Comment %d was imported with author %d, but could not be found', 'wordpress-importer' ), - $comment_id, - $author_id - ) ); - } - } - - // Do we have updates to make? - if ( empty( $data ) ) { - continue; - } - - // Run the update - $data['comment_ID'] = $comment_ID; - $result = wp_update_comment( wp_slash( $data ) ); - if ( empty( $result ) ) { - $this->logger->warning( sprintf( - __( 'Could not update comment #%d with mapped data', 'wordpress-importer' ), - $comment_id - ) ); - continue; - } - - // Clear out our temporary meta keys - delete_comment_meta( $comment_id, '_wxr_import_parent' ); - delete_comment_meta( $comment_id, '_wxr_import_user' ); - } - } - - /** - * Use stored mapping information to update old attachment URLs - */ - protected function replace_attachment_urls_in_content() { - global $wpdb; - // make sure we do the longest urls first, in case one is a substring of another - uksort( $this->url_remap, array( $this, 'cmpr_strlen' ) ); - - foreach ( $this->url_remap as $from_url => $to_url ) { - // remap urls in post_content - $query = $wpdb->prepare( "UPDATE {$wpdb->posts} SET post_content = REPLACE(post_content, %s, %s)", $from_url, $to_url ); - $wpdb->query( $query ); - - // remap enclosure urls - $query = $wpdb->prepare( "UPDATE {$wpdb->postmeta} SET meta_value = REPLACE(meta_value, %s, %s) WHERE meta_key='enclosure'", $from_url, $to_url ); - $result = $wpdb->query( $query ); - } - } - - /** - * Update _thumbnail_id meta to new, imported attachment IDs - */ - function remap_featured_images() { - - if ( empty( $this->featured_images ) ) { - return; - } - - // cycle through posts that have a featured image - $this->logger->info( 'Starting remapping of featured images' ); - - foreach ( $this->featured_images as $post_id => $value ) { - if ( isset( $this->mapping['post'][ $value ] ) ) { - $new_id = $this->mapping['post'][ $value ]; - - // only update if there's a difference - if ( $new_id !== $value ) { - $this->logger->info( sprintf( 'Remapping featured image ID %d to new ID %d for post ID %d',$value, $new_id, $post_id ) ); - update_post_meta( $post_id, '_thumbnail_id', $new_id ); - } - } - } - } - - /** - * Decide if the given meta key maps to information we will want to import - * - * @param string $key The meta key to check - * @return string|bool The key if we do want to import, false if not - */ - public function is_valid_meta_key( $key ) { - // skip attachment metadata since we'll regenerate it from scratch - // skip _edit_lock as not relevant for import - if ( in_array( $key, array( '_wp_attached_file', '_wp_attachment_metadata', '_edit_lock' ) ) ) { - return false; - } - - return $key; - } - - /** - * Decide what the maximum file size for downloaded attachments is. - * Default is 0 (unlimited), can be filtered via import_attachment_size_limit - * - * @return int Maximum attachment file size to import - */ - protected function max_attachment_size() { - return apply_filters( 'import_attachment_size_limit', 0 ); - } - - /** - * Added to http_request_timeout filter to force timeout at 60 seconds during import - * - * @access protected - * @return int 60 - */ - function bump_request_timeout($val) { - return 60; - } - - // return the difference in length between two strings - function cmpr_strlen( $a, $b ) { - return strlen( $b ) - strlen( $a ); - } - - /** - * Prefill existing post data. - * - * This preloads all GUIDs into memory, allowing us to avoid hitting the - * database when we need to check for existence. With larger imports, this - * becomes prohibitively slow to perform SELECT queries on each. - * - * By preloading all this data into memory, it's a constant-time lookup in - * PHP instead. However, this does use a lot more memory, so for sites doing - * small imports onto a large site, it may be a better tradeoff to use - * on-the-fly checking instead. - */ - protected function prefill_existing_posts() { - global $wpdb; - $posts = $wpdb->get_results( "SELECT ID, guid FROM {$wpdb->posts}" ); - - foreach ( $posts as $item ) { - $this->exists['post'][ $item->guid ] = $item->ID; - } - } - - /** - * Does the post exist? - * - * @param array $data Post data to check against. - * @return int|bool Existing post ID if it exists, false otherwise. - */ - protected function post_exists( $data ) { - // Constant-time lookup if we prefilled - $exists_key = $data['guid']; - - $exists = null; - - if ( $this->options['prefill_existing_posts'] ) { - // Sites: fix for custom post types. The guids in the prefilled section are escaped, so these ones should be as well. - $exists_key = htmlentities( $exists_key ); - $exists = isset( $this->exists['post'][ $exists_key ] ) ? $this->exists['post'][ $exists_key ] : false; - } else if ( isset( $this->exists['post'][ $exists_key ] ) ) { - // No prefilling, but might have already handled it - $exists = $this->exists['post'][ $exists_key ]; - } else { - // Still nothing, try post_exists, and cache it - $exists = post_exists( $data['post_title'], $data['post_content'], $data['post_date'] ); - } - - /** - * Filter ID of the existing post corresponding to post currently importing. - * - * Return 0 to force the post to be imported. Filter the ID to be something else - * to override which existing post is mapped to the imported post. - * - * @see post_exists() - * - * @param int $post_exists Post ID, or 0 if post did not exist. - * @param array $data The post array to be inserted. - */ - $exists = apply_filters( 'wp_import_existing_post', $exists, $data ); - - $this->exists['post'][ $exists_key ] = $exists; - - return $exists; - } - - /** - * Mark the post as existing. - * - * @param array $data Post data to mark as existing. - * @param int $post_id Post ID. - */ - protected function mark_post_exists( $data, $post_id ) { - $exists_key = $data['guid']; - $this->exists['post'][ $exists_key ] = $post_id; - } - - /** - * Prefill existing comment data. - * - * @see self::prefill_existing_posts() for justification of why this exists. - */ - protected function prefill_existing_comments() { - global $wpdb; - $posts = $wpdb->get_results( "SELECT comment_ID, comment_author, comment_date FROM {$wpdb->comments}" ); - - foreach ( $posts as $item ) { - $exists_key = sha1( $item->comment_author . ':' . $item->comment_date ); - $this->exists['comment'][ $exists_key ] = $item->comment_ID; - } - } - - /** - * Does the comment exist? - * - * @param array $data Comment data to check against. - * @return int|bool Existing comment ID if it exists, false otherwise. - */ - protected function comment_exists( $data ) { - $exists_key = sha1( $data['comment_author'] . ':' . $data['comment_date'] ); - - // Constant-time lookup if we prefilled - if ( $this->options['prefill_existing_comments'] ) { - return isset( $this->exists['comment'][ $exists_key ] ) ? $this->exists['comment'][ $exists_key ] : false; - } - - // No prefilling, but might have already handled it - if ( isset( $this->exists['comment'][ $exists_key ] ) ) { - return $this->exists['comment'][ $exists_key ]; - } - - // Still nothing, try comment_exists, and cache it - $exists = comment_exists( $data['comment_author'], $data['comment_date'] ); - $this->exists['comment'][ $exists_key ] = $exists; - - return $exists; - } - - /** - * Mark the comment as existing. - * - * @param array $data Comment data to mark as existing. - * @param int $comment_id Comment ID. - */ - protected function mark_comment_exists( $data, $comment_id ) { - $exists_key = sha1( $data['comment_author'] . ':' . $data['comment_date'] ); - $this->exists['comment'][ $exists_key ] = $comment_id; - } - - /** - * Prefill existing term data. - * - * @see self::prefill_existing_posts() for justification of why this exists. - */ - protected function prefill_existing_terms() { - global $wpdb; - $query = "SELECT t.term_id, tt.taxonomy, t.slug FROM {$wpdb->terms} AS t"; - $query .= " JOIN {$wpdb->term_taxonomy} AS tt ON t.term_id = tt.term_id"; - $terms = $wpdb->get_results( $query ); - - foreach ( $terms as $item ) { - $exists_key = sha1( $item->taxonomy . ':' . $item->slug ); - $this->exists['term'][ $exists_key ] = $item->term_id; - } - } - - /** - * Does the term exist? - * - * @param array $data Term data to check against. - * @return int|bool Existing term ID if it exists, false otherwise. - */ - protected function term_exists( $data ) { - $exists_key = sha1( $data['taxonomy'] . ':' . $data['slug'] ); - - // Constant-time lookup if we prefilled - if ( $this->options['prefill_existing_terms'] ) { - return isset( $this->exists['term'][ $exists_key ] ) ? $this->exists['term'][ $exists_key ] : false; - } - - // No prefilling, but might have already handled it - if ( isset( $this->exists['term'][ $exists_key ] ) ) { - return $this->exists['term'][ $exists_key ]; - } - - // Still nothing, try comment_exists, and cache it - $exists = term_exists( $data['slug'], $data['taxonomy'] ); - if ( is_array( $exists ) ) { - $exists = $exists['term_id']; - } - - $this->exists['term'][ $exists_key ] = $exists; - - return $exists; - } - - /** - * Mark the term as existing. - * - * @param array $data Term data to mark as existing. - * @param int $term_id Term ID. - */ - protected function mark_term_exists( $data, $term_id ) { - $exists_key = sha1( $data['taxonomy'] . ':' . $data['slug'] ); - $this->exists['term'][ $exists_key ] = $term_id; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/content-spacing.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/content-spacing.php deleted file mode 100644 index 3b90e405..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/content-spacing.php +++ /dev/null @@ -1,244 +0,0 @@ -add_section( - 'generate_spacing_content', - array( - 'title' => __( 'Content', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 10, - 'panel' => 'generate_spacing_panel', - ) -); - -// If we don't have a layout panel, use our old spacing section. -if ( $wp_customize->get_panel( 'generate_layout_panel' ) ) { - $content_section = 'generate_layout_container'; -} else { - $content_section = 'generate_spacing_content'; -} - -// Take control of the container width control. -// This control is handled by the free theme, but we take control of it here for consistency between control styles. -$wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[container_width]', - array( - 'label' => __( 'Container Width', 'gp-premium' ), - 'section' => 'generate_layout_container', - 'settings' => array( - 'desktop' => 'generate_settings[container_width]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 700, - 'max' => 2000, - 'step' => 5, - 'edit' => true, - 'unit' => 'px', - ), - ), - 'priority' => 0, - ) - ) -); - -// Separating space. -$wp_customize->add_setting( - 'generate_spacing_settings[separator]', - array( - 'default' => $defaults['separator'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -$wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_spacing_settings[separator]', - array( - 'label' => __( 'Separating Space', 'gp-premium' ), - 'section' => $content_section, - 'settings' => array( - 'desktop' => 'generate_spacing_settings[separator]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 100, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) -); - -// Content padding top. -$wp_customize->add_setting( - 'generate_spacing_settings[content_top]', - array( - 'default' => $defaults['content_top'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Content padding right. -$wp_customize->add_setting( - 'generate_spacing_settings[content_right]', - array( - 'default' => $defaults['content_right'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Content padding bottom. -$wp_customize->add_setting( - 'generate_spacing_settings[content_bottom]', - array( - 'default' => $defaults['content_bottom'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Content padding left. -$wp_customize->add_setting( - 'generate_spacing_settings[content_left]', - array( - 'default' => $defaults['content_left'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -$content_padding_settings = array( - 'desktop_top' => 'generate_spacing_settings[content_top]', - 'desktop_right' => 'generate_spacing_settings[content_right]', - 'desktop_bottom' => 'generate_spacing_settings[content_bottom]', - 'desktop_left' => 'generate_spacing_settings[content_left]', -); - -// If mobile_content_top is set, the rest of them are too. -// We have to check as these defaults are set in the theme. -if ( isset( $defaults['mobile_content_top'] ) ) { - $content_padding_settings['mobile_top'] = 'generate_spacing_settings[mobile_content_top]'; - $content_padding_settings['mobile_right'] = 'generate_spacing_settings[mobile_content_right]'; - $content_padding_settings['mobile_bottom'] = 'generate_spacing_settings[mobile_content_bottom]'; - $content_padding_settings['mobile_left'] = 'generate_spacing_settings[mobile_content_left]'; - - // Mobile content padding top. - $wp_customize->add_setting( - 'generate_spacing_settings[mobile_content_top]', - array( - 'default' => $defaults['mobile_content_top'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - // Content padding right. - $wp_customize->add_setting( - 'generate_spacing_settings[mobile_content_right]', - array( - 'default' => $defaults['mobile_content_right'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - // Content padding bottom. - $wp_customize->add_setting( - 'generate_spacing_settings[mobile_content_bottom]', - array( - 'default' => $defaults['mobile_content_bottom'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - // Content padding left. - $wp_customize->add_setting( - 'generate_spacing_settings[mobile_content_left]', - array( - 'default' => $defaults['mobile_content_left'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); -} - -// Make use of the content padding settings. -$wp_customize->add_control( - new GeneratePress_Spacing_Control( - $wp_customize, - 'content_spacing', - array( - 'type' => 'generatepress-spacing', - 'label' => esc_html__( 'Content Padding', 'gp-premium' ), - 'section' => $content_section, - 'settings' => $content_padding_settings, - 'element' => 'content', - 'priority' => 99, - ) - ) -); - -$wp_customize->add_setting( - 'generate_spacing_settings[content_element_separator]', - array( - 'default' => $defaults['content_element_separator'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_decimal_integer', - 'transport' => 'postMessage', - ) -); - -$wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_spacing_settings[content_element_separator]', - array( - 'label' => __( 'Content Separator', 'gp-premium' ), - 'sub_description' => __( 'The content separator controls the space between the featured image, title, content and entry meta.', 'gp-premium' ), - 'section' => $content_section, - 'settings' => array( - 'desktop' => 'generate_spacing_settings[content_element_separator]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 10, - 'step' => .1, - 'edit' => true, - 'unit' => 'em', - ), - ), - ) - ) -); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/footer-spacing.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/footer-spacing.php deleted file mode 100644 index 3ffc54af..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/footer-spacing.php +++ /dev/null @@ -1,207 +0,0 @@ -add_section( - 'generate_spacing_footer', - array( - 'title' => __( 'Footer', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 20, - 'panel' => 'generate_spacing_panel', - ) -); - -// Use our layout panel if it exists. -if ( $wp_customize->get_panel( 'generate_layout_panel' ) ) { - $footer_section = 'generate_layout_footer'; -} else { - $footer_section = 'generate_spacing_footer'; -} - -// Footer widget area padding top. -$wp_customize->add_setting( - 'generate_spacing_settings[footer_widget_container_top]', - array( - 'default' => $defaults['footer_widget_container_top'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Footer widget area padding right. -$wp_customize->add_setting( - 'generate_spacing_settings[footer_widget_container_right]', - array( - 'default' => $defaults['footer_widget_container_right'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Footer widget area padding bottom. -$wp_customize->add_setting( - 'generate_spacing_settings[footer_widget_container_bottom]', - array( - 'default' => $defaults['footer_widget_container_bottom'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Footer widget area padding left. -$wp_customize->add_setting( - 'generate_spacing_settings[footer_widget_container_left]', - array( - 'default' => $defaults['footer_widget_container_left'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Footer widget area padding top. -$wp_customize->add_setting( - 'generate_spacing_settings[mobile_footer_widget_container_top]', - array( - 'default' => $defaults['mobile_footer_widget_container_top'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Footer widget area padding right. -$wp_customize->add_setting( - 'generate_spacing_settings[mobile_footer_widget_container_right]', - array( - 'default' => $defaults['mobile_footer_widget_container_right'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Footer widget area padding bottom. -$wp_customize->add_setting( - 'generate_spacing_settings[mobile_footer_widget_container_bottom]', - array( - 'default' => $defaults['mobile_footer_widget_container_bottom'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Footer widget area padding left. -$wp_customize->add_setting( - 'generate_spacing_settings[mobile_footer_widget_container_left]', - array( - 'default' => $defaults['mobile_footer_widget_container_left'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Make use of the Footer widget area padding settings. -$wp_customize->add_control( - new GeneratePress_Spacing_Control( - $wp_customize, - 'footer_widget_area_spacing', - array( - 'type' => 'generatepress-spacing', - 'label' => esc_html__( 'Footer Widget Area Padding', 'gp-premium' ), - 'section' => $footer_section, - 'settings' => array( - 'desktop_top' => 'generate_spacing_settings[footer_widget_container_top]', - 'desktop_right' => 'generate_spacing_settings[footer_widget_container_right]', - 'desktop_bottom' => 'generate_spacing_settings[footer_widget_container_bottom]', - 'desktop_left' => 'generate_spacing_settings[footer_widget_container_left]', - 'mobile_top' => 'generate_spacing_settings[mobile_footer_widget_container_top]', - 'mobile_right' => 'generate_spacing_settings[mobile_footer_widget_container_right]', - 'mobile_bottom' => 'generate_spacing_settings[mobile_footer_widget_container_bottom]', - 'mobile_left' => 'generate_spacing_settings[mobile_footer_widget_container_left]', - ), - 'element' => 'footer_widget_area', - 'priority' => 99, - ) - ) -); - -// Footer padding top. -$wp_customize->add_setting( - 'generate_spacing_settings[footer_top]', - array( - 'default' => $defaults['footer_top'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Footer padding right. -$wp_customize->add_setting( - 'generate_spacing_settings[footer_right]', - array( - 'default' => $defaults['footer_right'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Footer padding bottom. -$wp_customize->add_setting( - 'generate_spacing_settings[footer_bottom]', - array( - 'default' => $defaults['footer_bottom'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Footer padding left. -$wp_customize->add_setting( - 'generate_spacing_settings[footer_left]', - array( - 'default' => $defaults['footer_left'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Make use of the footer padding settings. -$wp_customize->add_control( - new GeneratePress_Spacing_Control( - $wp_customize, - 'footer_spacing', - array( - 'type' => 'generatepress-spacing', - 'label' => esc_html__( 'Footer Padding', 'gp-premium' ), - 'section' => $footer_section, - 'settings' => array( - 'desktop_top' => 'generate_spacing_settings[footer_top]', - 'desktop_right' => 'generate_spacing_settings[footer_right]', - 'desktop_bottom' => 'generate_spacing_settings[footer_bottom]', - 'desktop_left' => 'generate_spacing_settings[footer_left]', - ), - 'element' => 'footer', - 'priority' => 105, - ) - ) -); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/header-spacing.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/header-spacing.php deleted file mode 100644 index f937d91b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/header-spacing.php +++ /dev/null @@ -1,135 +0,0 @@ -add_section( - 'generate_spacing_header', - array( - 'title' => __( 'Header', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 5, - 'panel' => 'generate_spacing_panel', - ) -); - -// If we don't have a layout panel, use our old spacing section. -$header_section = ( $wp_customize->get_panel( 'generate_layout_panel' ) ) ? 'generate_layout_header' : 'generate_spacing_header'; - -// Header top. -$wp_customize->add_setting( - 'generate_spacing_settings[header_top]', - array( - 'default' => $defaults['header_top'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Header right. -$wp_customize->add_setting( - 'generate_spacing_settings[header_right]', - array( - 'default' => $defaults['header_right'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Header bottom. -$wp_customize->add_setting( - 'generate_spacing_settings[header_bottom]', - array( - 'default' => $defaults['header_bottom'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Header left. -$wp_customize->add_setting( - 'generate_spacing_settings[header_left]', - array( - 'default' => $defaults['header_left'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -$wp_customize->add_setting( - 'generate_spacing_settings[mobile_header_top]', - array( - 'default' => $defaults['mobile_header_top'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Header right. -$wp_customize->add_setting( - 'generate_spacing_settings[mobile_header_right]', - array( - 'default' => $defaults['mobile_header_right'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Header bottom. -$wp_customize->add_setting( - 'generate_spacing_settings[mobile_header_bottom]', - array( - 'default' => $defaults['mobile_header_bottom'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Header left. -$wp_customize->add_setting( - 'generate_spacing_settings[mobile_header_left]', - array( - 'default' => $defaults['mobile_header_left'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Do something with our header controls. -$wp_customize->add_control( - new GeneratePress_Spacing_Control( - $wp_customize, - 'header_spacing', - array( - 'type' => 'generatepress-spacing', - 'label' => esc_html__( 'Header Padding', 'gp-premium' ), - 'section' => $header_section, - 'settings' => array( - 'desktop_top' => 'generate_spacing_settings[header_top]', - 'desktop_right' => 'generate_spacing_settings[header_right]', - 'desktop_bottom' => 'generate_spacing_settings[header_bottom]', - 'desktop_left' => 'generate_spacing_settings[header_left]', - 'mobile_top' => 'generate_spacing_settings[mobile_header_top]', - 'mobile_right' => 'generate_spacing_settings[mobile_header_right]', - 'mobile_bottom' => 'generate_spacing_settings[mobile_header_bottom]', - 'mobile_left' => 'generate_spacing_settings[mobile_header_left]', - ), - 'element' => 'header', - ) - ) -); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/js/customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/js/customizer.js deleted file mode 100644 index 966c3eaa..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/js/customizer.js +++ /dev/null @@ -1,661 +0,0 @@ -function generate_spacing_live_update( name, id, selector, property, negative, divide, media, unit ) { - settings = typeof settings !== 'undefined' ? settings : 'generate_spacing_settings'; - wp.customize( settings + '[' + id + ']', function( value ) { - value.bind( function( newval ) { - negative = typeof negative !== 'undefined' ? negative : false; - media = typeof media !== 'undefined' ? media : ''; - divide = typeof divide !== 'undefined' ? divide : false; - unit = typeof unit !== 'undefined' ? unit : 'px'; - - // Get new value - newval = ( divide ) ? newval / 2 : newval; - - // Check if negative integer - negative = ( negative ) ? '-' : ''; - - var isTablet = ( 'tablet' == id.substring( 0, 6 ) ) ? true : false, - isMobile = ( 'mobile' == id.substring( 0, 6 ) ) ? true : false; - - if ( isTablet ) { - if ( '' == wp.customize(settings + '[' + id + ']').get() ) { - var desktopID = id.replace( 'tablet_', '' ); - newval = wp.customize(settings + '[' + desktopID + ']').get(); - } - } - - if ( isMobile ) { - if ( '' == wp.customize(settings + '[' + id + ']').get() ) { - var desktopID = id.replace( 'mobile_', '' ); - newval = wp.customize(settings + '[' + desktopID + ']').get(); - } - } - - // We're using a desktop value - if ( ! isTablet && ! isMobile ) { - - var tabletValue = ( typeof wp.customize(settings + '[tablet_' + id + ']') !== 'undefined' ) ? wp.customize(settings + '[tablet_' + id + ']').get() : '', - mobileValue = ( typeof wp.customize(settings + '[mobile_' + id + ']') !== 'undefined' ) ? wp.customize(settings + '[mobile_' + id + ']').get() : ''; - - // The tablet setting exists, mobile doesn't - if ( '' !== tabletValue && '' == mobileValue ) { - media = gp_spacing.desktop + ', ' + gp_spacing.mobile; - } - - // The tablet setting doesn't exist, mobile does - if ( '' == tabletValue && '' !== mobileValue ) { - media = gp_spacing.desktop + ', ' + gp_spacing.tablet; - } - - // The tablet setting doesn't exist, neither does mobile - if ( '' == tabletValue && '' == mobileValue ) { - media = gp_spacing.desktop + ', ' + gp_spacing.tablet + ', ' + gp_spacing.mobile; - } - - } - - // Check if media query - media_query = ( '' !== media ) ? 'media="' + media + '"' : ''; - - jQuery( 'head' ).append( '' ); - setTimeout(function() { - jQuery( 'style#' + name ).not( ':last' ).remove(); - }, 50 ); - - jQuery('body').trigger('generate_spacing_updated'); - } ); - } ); -} - -/** - * Top bar padding - */ -generate_spacing_live_update( 'top_bar_top', 'top_bar_top', '.inside-top-bar', 'padding-top' ); -generate_spacing_live_update( 'top_bar_right', 'top_bar_right', '.inside-top-bar', 'padding-right' ); -generate_spacing_live_update( 'top_bar_bottom', 'top_bar_bottom', '.inside-top-bar', 'padding-bottom' ); -generate_spacing_live_update( 'top_bar_left', 'top_bar_left', '.inside-top-bar', 'padding-left' ); - -/** - * Header padding - */ -generate_spacing_live_update( 'header_top', 'header_top', '.inside-header', 'padding-top', false, false, gp_spacing.desktop ); -generate_spacing_live_update( 'header_right', 'header_right', '.inside-header', 'padding-right', false, false, gp_spacing.desktop ); -generate_spacing_live_update( 'header_bottom', 'header_bottom', '.inside-header', 'padding-bottom', false, false, gp_spacing.desktop ); -generate_spacing_live_update( 'header_left', 'header_left', '.inside-header', 'padding-left', false, false, gp_spacing.desktop ); - -generate_spacing_live_update( 'mobile_header_top', 'mobile_header_top', '.inside-header', 'padding-top', false, false, gp_spacing.mobile ); -generate_spacing_live_update( 'mobile_header_right', 'mobile_header_right', '.inside-header', 'padding-right', false, false, gp_spacing.mobile ); -generate_spacing_live_update( 'mobile_header_bottom', 'mobile_header_bottom', '.inside-header', 'padding-bottom', false, false, gp_spacing.mobile ); -generate_spacing_live_update( 'mobile_header_left', 'mobile_header_left', '.inside-header', 'padding-left', false, false, gp_spacing.mobile ); - -jQuery( window ).on( 'load', function() { - var containerAlignment = wp.customize( 'generate_settings[container_alignment]' ); - - if ( gp_spacing.isFlex && containerAlignment && 'text' === containerAlignment.get() ) { - generate_spacing_live_update( 'header_left_sticky_nav', 'header_left', '.main-navigation.navigation-stick:not(.has-branding) .inside-navigation.grid-container', 'padding-left', false, false, gp_spacing.desktop ); - generate_spacing_live_update( 'header_right_sticky_nav', 'header_right', '.main-navigation.navigation-stick:not(.has-branding) .inside-navigation.grid-container', 'padding-right', false, false, gp_spacing.desktop ); - - generate_spacing_live_update( 'mobile_header_left_sticky_nav', 'mobile_header_left', '.main-navigation.navigation-stick:not(.has-branding) .inside-navigation.grid-container', 'padding-left', false, false, gp_spacing.mobile ); - generate_spacing_live_update( 'mobile_header_right_sticky_nav', 'mobile_header_right', '.main-navigation.navigation-stick:not(.has-branding) .inside-navigation.grid-container', 'padding-right', false, false, gp_spacing.mobile ); - } -} ); - -/** - * Content padding - */ -var content_areas = '.separate-containers .inside-article, \ - .separate-containers .comments-area, \ - .separate-containers .page-header, \ - .separate-containers .paging-navigation, \ - .one-container .site-content, \ - .inside-page-header, \ - .wp-block-group__inner-container'; - -generate_spacing_live_update( 'content_top', 'content_top', content_areas, 'padding-top', false, false, gp_spacing.desktop ); -generate_spacing_live_update( 'content_right', 'content_right', content_areas, 'padding-right', false, false, gp_spacing.desktop ); -generate_spacing_live_update( 'content_bottom', 'content_bottom', content_areas, 'padding-bottom', false, false, gp_spacing.desktop ); -generate_spacing_live_update( 'content_left', 'content_left', content_areas, 'padding-left', false, false, gp_spacing.desktop ); - -jQuery( window ).on( 'load', function() { - var containerAlignment = wp.customize( 'generate_settings[container_alignment]' ); - - if ( gp_spacing.isFlex && containerAlignment && 'text' === containerAlignment.get() ) { - generate_spacing_live_update( 'content_left_nav_as_header', 'content_left', '.main-navigation.has-branding .inside-navigation.grid-container, .main-navigation.has-branding .inside-navigation.grid-container', 'padding-left', false, false, gp_spacing.desktop ); - generate_spacing_live_update( 'content_right_nav_as_header', 'content_right', '.main-navigation.has-branding .inside-navigation.grid-container, .main-navigation.has-branding .inside-navigation.grid-container', 'padding-right', false, false, gp_spacing.desktop ); - } -} ); - -generate_spacing_live_update( 'one_container_post_content_bottom', 'content_bottom', '.one-container.archive .post:not(:last-child):not(.is-loop-template-item),.one-container.blog .post:not(:last-child):not(.is-loop-template-item)', 'padding-bottom' ); - -/* Mobile content padding */ -generate_spacing_live_update( 'mobile_content_top', 'mobile_content_top', content_areas, 'padding-top', false, false, gp_spacing.mobile ); -generate_spacing_live_update( 'mobile_content_right', 'mobile_content_right', content_areas, 'padding-right', false, false, gp_spacing.mobile ); -generate_spacing_live_update( 'mobile_content_bottom', 'mobile_content_bottom', content_areas, 'padding-bottom', false, false, gp_spacing.mobile ); -generate_spacing_live_update( 'mobile_content_left', 'mobile_content_left', content_areas, 'padding-left', false, false, gp_spacing.mobile ); - -generate_spacing_live_update( 'content-margin-right', 'content_right', '.one-container.right-sidebar .site-main,.one-container.both-right .site-main', 'margin-right' ); -generate_spacing_live_update( 'content-margin-left', 'content_left', '.one-container.left-sidebar .site-main,.one-container.both-left .site-main', 'margin-left' ); -generate_spacing_live_update( 'content-margin-right-both', 'content_right', '.one-container.both-sidebars .site-main', 'margin-right' ); -generate_spacing_live_update( 'content-margin-left-both', 'content_left', '.one-container.both-sidebars .site-main', 'margin-left' ); - -/* Content element separator */ - -generate_spacing_live_update( 'content_element_separator_top', 'content_element_separator', '.post-image:not(:first-child), .page-content:not(:first-child), .entry-content:not(:first-child), .entry-summary:not(:first-child), footer.entry-meta', 'margin-top', false, false, false, 'em' ); -generate_spacing_live_update( 'content_element_separator_bottom', 'content_element_separator', '.post-image-above-header .inside-article div.featured-image, .post-image-above-header .inside-article div.post-image', 'margin-bottom', false, false, false, 'em' ); - -/** - * Featured image padding - */ -var featured_image_no_padding_x = '.post-image-below-header.post-image-aligned-center .no-featured-image-padding .post-image, \ - .post-image-below-header.post-image-aligned-center .no-featured-image-padding .featured-image'; - -generate_spacing_live_update( 'featured_image_padding_right', 'content_right', featured_image_no_padding_x, 'margin-right', true, false, gp_spacing.desktop ); -generate_spacing_live_update( 'featured_image_padding_left', 'content_left', featured_image_no_padding_x, 'margin-left', true, false, gp_spacing.desktop ); -generate_spacing_live_update( 'mobile_featured_image_padding_right', 'mobile_content_right', featured_image_no_padding_x, 'margin-right', true, false, gp_spacing.mobile ); -generate_spacing_live_update( 'mobile_featured_image_padding_left', 'mobile_content_left', featured_image_no_padding_x, 'margin-left', true, false, gp_spacing.mobile ); - -var featured_image_no_padding_y = '.post-image-above-header.post-image-aligned-center .no-featured-image-padding .post-image, \ - .post-image-above-header.post-image-aligned-center .no-featured-image-padding .featured-image'; - -generate_spacing_live_update( 'featured_image_padding_top', 'content_top', featured_image_no_padding_y, 'margin-top', true, false, gp_spacing.desktop ); -generate_spacing_live_update( 'featured_image_padding_right', 'content_right', featured_image_no_padding_y, 'margin-right', true, false, gp_spacing.desktop ); -generate_spacing_live_update( 'featured_image_padding_left', 'content_left', featured_image_no_padding_y, 'margin-left', true, false, gp_spacing.desktop ); -generate_spacing_live_update( 'mobile_featured_image_padding_top', 'mobile_content_top', featured_image_no_padding_y, 'margin-top', true, false, gp_spacing.mobile ); -generate_spacing_live_update( 'mobile_featured_image_padding_right', 'mobile_content_right', featured_image_no_padding_y, 'margin-right', true, false, gp_spacing.mobile ); -generate_spacing_live_update( 'mobile_featured_image_padding_left', 'mobile_content_left', featured_image_no_padding_y, 'margin-left', true, false, gp_spacing.mobile ); - -/** - * Main navigation spacing - */ -var menu_items = '.main-navigation .main-nav ul li a,\ - .main-navigation .menu-toggle,\ - .main-navigation .mobile-bar-items a,\ - .main-navigation .menu-bar-item > a'; - -// Menu item width -generate_spacing_live_update( 'menu_item_padding_left', 'menu_item', menu_items + ', .slideout-navigation button.slideout-exit', 'padding-left', false, false, gp_spacing.desktop ); -generate_spacing_live_update( 'menu_item_padding_right', 'menu_item', menu_items + ', .slideout-navigation button.slideout-exit', 'padding-right', false, false, gp_spacing.desktop ); - -// Tablet menu item width -//generate_spacing_live_update( 'tablet_menu_item_padding_left', 'tablet_menu_item', menu_items, 'padding-left', false, false, gp_spacing.tablet ); -//generate_spacing_live_update( 'tablet_menu_item_padding_right', 'tablet_menu_item', menu_items, 'padding-right', false, false, gp_spacing.tablet ); - -// Mobile menu item width -generate_spacing_live_update( 'mobile_menu_item_padding_left', 'mobile_menu_item', '.main-navigation .menu-toggle,.main-navigation .mobile-bar-items a, .main-navigation .menu-bar-item > a', 'padding-left', false, false, gp_spacing.mobile ); -generate_spacing_live_update( 'mobile_menu_item_padding_right', 'mobile_menu_item', '.main-navigation .menu-toggle,.main-navigation .mobile-bar-items a, .main-navigation .menu-bar-item > a', 'padding-right', false, false, gp_spacing.mobile ); - -// Menu item height -generate_spacing_live_update( 'menu_item_height', 'menu_item_height', menu_items, 'line-height', false, false, gp_spacing.desktop ); -generate_spacing_live_update( 'navigation_logo_height', 'menu_item_height', '.main-navigation .navigation-logo img, .main-navigation .site-logo img', 'height', false, false, gp_spacing.desktop ); -generate_spacing_live_update( 'nav_title_height', 'menu_item_height', '.navigation-branding .main-title', 'line-height', false, false, gp_spacing.desktop ); -generate_spacing_live_update( 'mobile_header_logo_height', 'menu_item_height', '.mobile-header-navigation .mobile-header-logo img', 'height', false, false, gp_spacing.desktop ); - -//generate_spacing_live_update( 'tablet_menu_item_height', 'tablet_menu_item_height', menu_items, 'line-height', false, false, gp_spacing.tablet ); -//generate_spacing_live_update( 'tablet_navigation_logo_height', 'tablet_menu_item_height', '.main-navigation .navigation-logo img', 'height', false, false, gp_spacing.tablet ); -//generate_spacing_live_update( 'tablet_mobile_header_logo_height', 'tablet_menu_item_height', '.mobile-header-navigation .mobile-header-logo img', 'height', false, false, gp_spacing.tablet ); - -generate_spacing_live_update( 'mobile_menu_item_height', 'mobile_menu_item_height', menu_items, 'line-height', false, false, gp_spacing.mobile ); -generate_spacing_live_update( 'mobile_navigation_logo_height', 'mobile_menu_item_height', '.main-navigation .site-logo.navigation-logo img, .main-navigation .site-logo img, .main-navigation .navigation-branding img', 'height', false, false, gp_spacing.mobile ); -generate_spacing_live_update( 'mobile_nav_title_height', 'menu_item_height', '.navigation-branding .main-title', 'line-height', false, false, gp_spacing.mobile ); -generate_spacing_live_update( 'mobile_mobile_header_logo_height', 'mobile_menu_item_height', '.mobile-header-navigation .site-logo.mobile-header-logo img', 'height', false, false, gp_spacing.mobile ); - -// Off canvas menu item height -wp.customize( 'generate_spacing_settings[off_canvas_menu_item_height]', function( value ) { - value.bind( function( newval ) { - - if ( '' == newval ) { - newval = wp.customize('generate_spacing_settings[menu_item_height]').get(); - } - - jQuery( 'head' ).append( '' ); - setTimeout(function() { - jQuery( 'style#off_canvas_menu_item_height' ).not( ':last' ).remove(); - }, 200 ); - - } ); -} ); - -/** - * Main sub-navigation spacing - */ -generate_spacing_live_update( 'sub_menu_item_height_top', 'sub_menu_item_height', '.main-navigation .main-nav ul ul li a', 'padding-top' ); -generate_spacing_live_update( 'sub_menu_item_height_right', 'menu_item', '.main-navigation .main-nav ul ul li a', 'padding-right', false, false, gp_spacing.desktop ); -//generate_spacing_live_update( 'tablet_sub_menu_item_height_right', 'tablet_menu_item', '.main-navigation .main-nav ul ul li a', 'padding-right', false, false, gp_spacing.tablet ); -generate_spacing_live_update( 'sub_menu_item_height_bottom', 'sub_menu_item_height', '.main-navigation .main-nav ul ul li a', 'padding-bottom' ); -generate_spacing_live_update( 'sub_menu_item_height_left', 'menu_item', '.main-navigation .main-nav ul ul li a', 'padding-left', false, false, gp_spacing.desktop ); -//generate_spacing_live_update( 'tablet_sub_menu_item_height_left', 'tablet_menu_item', '.main-navigation .main-nav ul ul li a', 'padding-left', false, false, gp_spacing.tablet ); -generate_spacing_live_update( 'sub_menu_item_offset', 'menu_item_height', '.main-navigation ul ul', 'top' ); - -/** - * Main navigation RTL arrow spacing - */ -generate_spacing_live_update( 'dropdown_menu_arrow', 'menu_item', '.menu-item-has-children .dropdown-menu-toggle', 'padding-right', false, false, gp_spacing.desktop ); -//generate_spacing_live_update( 'tablet_dropdown_menu_arrow', 'tablet_menu_item', '.menu-item-has-children .dropdown-menu-toggle', 'padding-right', false, false, gp_spacing.tablet ); - -/** - * Main sub-navigation arrow spacing - */ -generate_spacing_live_update( 'dropdown_submenu_arrow_top', 'sub_menu_item_height', '.menu-item-has-children ul .dropdown-menu-toggle', 'padding-top' ); -generate_spacing_live_update( 'dropdown_submenu_arrow_bottom', 'sub_menu_item_height', '.menu-item-has-children ul .dropdown-menu-toggle', 'padding-bottom' ); -generate_spacing_live_update( 'dropdown_submenu_arrow_margin', 'sub_menu_item_height', '.menu-item-has-children ul .dropdown-menu-toggle', 'margin-top', true ); - -/** - * Sub-Menu Width - */ -generate_spacing_live_update( 'sub_menu_width', 'sub_menu_width', '.main-navigation ul ul', 'width' ); - -/** - - * Sticky menu item height - - */ -wp.customize( 'generate_spacing_settings[sticky_menu_item_height]', function( value ) { - value.bind( function( newval ) { - - if ( '' == newval ) { - newval = wp.customize('generate_spacing_settings[menu_item_height]').get(); - } - - jQuery( 'head' ).append( '' ); - jQuery( 'head' ).append( '' ); - jQuery( 'head' ).append( '' ); - setTimeout(function() { - jQuery( 'style#sticky_menu_item_height' ).not( ':last' ).remove(); - jQuery( 'style#sticky_menu_item_logo_height' ).not( ':last' ).remove(); - jQuery( 'style#sticky_menu_item_height_transition' ).remove(); - }, 200 ); - - } ); -} ); - -// Disable the transition while we resize -wp.customize( 'generate_spacing_settings[menu_item_height]', function( value ) { - value.bind( function( newval ) { - - jQuery( 'head' ).append( '' ); - setTimeout(function() { - jQuery( 'style#menu_item_height_transition' ).remove(); - }, 200 ); - - } ); -} ); - -wp.customize( 'generate_spacing_settings[off_canvas_menu_item_height]', function( value ) { - value.bind( function( newval ) { - - jQuery( 'head' ).append( '' ); - setTimeout(function() { - jQuery( 'style#off_canvas_menu_item_height_transition' ).remove(); - }, 200 ); - - } ); -} ); - -/** - * Widget padding - */ -generate_spacing_live_update( 'widget_top', 'widget_top', '.widget-area .widget, .one-container .widget-area .widget', 'padding-top', false, false, gp_spacing.desktop ); -generate_spacing_live_update( 'widget_right', 'widget_right', '.widget-area .widget, .one-container .widget-area .widget', 'padding-right', false, false, gp_spacing.desktop ); -generate_spacing_live_update( 'widget_bottom', 'widget_bottom', '.widget-area .widget, .one-container .widget-area .widget', 'padding-bottom', false, false, gp_spacing.desktop ); -generate_spacing_live_update( 'widget_left', 'widget_left', '.widget-area .widget, .one-container .widget-area .widget', 'padding-left', false, false, gp_spacing.desktop ); - -generate_spacing_live_update( 'mobile_widget_top', 'mobile_widget_top', '.widget-area .widget', 'padding-top', false, false, gp_spacing.mobile ); -generate_spacing_live_update( 'mobile_widget_right', 'mobile_widget_right', '.widget-area .widget', 'padding-right', false, false, gp_spacing.mobile ); -generate_spacing_live_update( 'mobile_widget_bottom', 'mobile_widget_bottom', '.widget-area .widget', 'padding-bottom', false, false, gp_spacing.mobile ); -generate_spacing_live_update( 'mobile_widget_left', 'mobile_widget_left', '.widget-area .widget', 'padding-left', false, false, gp_spacing.mobile ); - - -if ( gp_spacing.isFlex ) { - /** - * Footer widget area - */ - generate_spacing_live_update( 'footer_widget_container_top', 'footer_widget_container_top', '.footer-widgets-container', 'padding-top', false, false, gp_spacing.desktop ); - generate_spacing_live_update( 'footer_widget_container_right', 'footer_widget_container_right', '.footer-widgets-container', 'padding-right', false, false, gp_spacing.desktop ); - generate_spacing_live_update( 'footer_widget_container_bottom', 'footer_widget_container_bottom', '.footer-widgets-container', 'padding-bottom', false, false, gp_spacing.desktop ); - generate_spacing_live_update( 'footer_widget_container_left', 'footer_widget_container_left', '.footer-widgets-container', 'padding-left', false, false, gp_spacing.desktop ); - - generate_spacing_live_update( 'mobile_footer_widget_container_top', 'mobile_footer_widget_container_top', '.footer-widgets-container', 'padding-top', false, false, gp_spacing.mobile ); - generate_spacing_live_update( 'mobile_footer_widget_container_right', 'mobile_footer_widget_container_right', '.footer-widgets-container', 'padding-right', false, false, gp_spacing.mobile ); - generate_spacing_live_update( 'mobile_footer_widget_container_bottom', 'mobile_footer_widget_container_bottom', '.footer-widgets-container', 'padding-bottom', false, false, gp_spacing.mobile ); - generate_spacing_live_update( 'mobile_footer_widget_container_left', 'mobile_footer_widget_container_left', '.footer-widgets-container', 'padding-left', false, false, gp_spacing.mobile ); - - /** - * Footer - */ - generate_spacing_live_update( 'footer_top', 'footer_top', '.inside-site-info', 'padding-top' ); - generate_spacing_live_update( 'footer_right', 'footer_right', '.inside-site-info', 'padding-right' ); - generate_spacing_live_update( 'footer_bottom', 'footer_bottom', '.inside-site-info', 'padding-bottom' ); - generate_spacing_live_update( 'footer_left', 'footer_left', '.inside-site-info', 'padding-left' ); -} else { - /** - * Footer widget area - */ - generate_spacing_live_update( 'footer_widget_container_top', 'footer_widget_container_top', '.footer-widgets', 'padding-top', false, false, gp_spacing.desktop ); - generate_spacing_live_update( 'footer_widget_container_right', 'footer_widget_container_right', '.footer-widgets', 'padding-right', false, false, gp_spacing.desktop ); - generate_spacing_live_update( 'footer_widget_container_bottom', 'footer_widget_container_bottom', '.footer-widgets', 'padding-bottom', false, false, gp_spacing.desktop ); - generate_spacing_live_update( 'footer_widget_container_left', 'footer_widget_container_left', '.footer-widgets', 'padding-left', false, false, gp_spacing.desktop ); - - generate_spacing_live_update( 'mobile_footer_widget_container_top', 'mobile_footer_widget_container_top', '.footer-widgets', 'padding-top', false, false, gp_spacing.mobile ); - generate_spacing_live_update( 'mobile_footer_widget_container_right', 'mobile_footer_widget_container_right', '.footer-widgets', 'padding-right', false, false, gp_spacing.mobile ); - generate_spacing_live_update( 'mobile_footer_widget_container_bottom', 'mobile_footer_widget_container_bottom', '.footer-widgets', 'padding-bottom', false, false, gp_spacing.mobile ); - generate_spacing_live_update( 'mobile_footer_widget_container_left', 'mobile_footer_widget_container_left', '.footer-widgets', 'padding-left', false, false, gp_spacing.mobile ); - - /** - * Footer - */ - generate_spacing_live_update( 'footer_top', 'footer_top', '.site-info', 'padding-top' ); - generate_spacing_live_update( 'footer_right', 'footer_right', '.site-info', 'padding-right' ); - generate_spacing_live_update( 'footer_bottom', 'footer_bottom', '.site-info', 'padding-bottom' ); - generate_spacing_live_update( 'footer_left', 'footer_left', '.site-info', 'padding-left' ); -} - - -/** - * Separator - */ - -/* Masonry */ -if ( jQuery( 'body' ).hasClass( 'masonry-enabled' ) ) { - generate_spacing_live_update( 'masonry_separator', 'separator', '.masonry-post .inside-article', 'margin-left' ); - generate_spacing_live_update( 'masonry_separator_bottom', 'separator', '.masonry-container > article', 'margin-bottom' ); - generate_spacing_live_update( 'masonry_separator_container', 'separator', '.masonry-container', 'margin-left', 'negative' ); - generate_spacing_live_update( 'masonry_separator_page_header_left', 'separator', '.masonry-enabled .page-header', 'margin-left' ); - generate_spacing_live_update( 'masonry_separator_page_header_bottom', 'separator', '.masonry-enabled .page-header', 'margin-bottom' ); - generate_spacing_live_update( 'masonry_separator_load_more', 'separator', '.separate-containers .site-main > .masonry-load-more', 'margin-bottom' ); -} - -/* Columns */ -if ( jQuery( 'body' ).hasClass( 'generate-columns-activated' ) ) { - generate_spacing_live_update( 'columns_bottom', 'separator', '.generate-columns', 'margin-bottom' ); - generate_spacing_live_update( 'columns_left', 'separator', '.generate-columns', 'padding-left' ); - generate_spacing_live_update( 'columns_container', 'separator', '.generate-columns-container', 'margin-left', 'negative' ); - generate_spacing_live_update( 'columns_page_header_bottom', 'separator', '.generate-columns-container .page-header', 'margin-bottom' ); - generate_spacing_live_update( 'columns_page_header_left', 'separator', '.generate-columns-container .page-header', 'margin-left' ); - generate_spacing_live_update( 'columns_pagination', 'separator', '.separate-containers .generate-columns-container > .paging-navigation', 'margin-left' ); -} - -/* Right sidebar */ -if ( jQuery( 'body' ).hasClass( 'right-sidebar' ) ) { - generate_spacing_live_update( 'right_sidebar_sepatator_top', 'separator', '.right-sidebar.separate-containers .site-main', 'margin-top' ); - generate_spacing_live_update( 'right_sidebar_sepatator_right', 'separator', '.right-sidebar.separate-containers .site-main', 'margin-right' ); - generate_spacing_live_update( 'right_sidebar_sepatator_bottom', 'separator', '.right-sidebar.separate-containers .site-main', 'margin-bottom' ); -} - -/* Left sidebar */ -if ( jQuery( 'body' ).hasClass( 'left-sidebar' ) ) { - generate_spacing_live_update( 'left_sidebar_sepatator_top', 'separator', '.left-sidebar.separate-containers .site-main', 'margin-top' ); - generate_spacing_live_update( 'left_sidebar_sepatator_left', 'separator', '.left-sidebar.separate-containers .site-main', 'margin-left' ); - generate_spacing_live_update( 'left_sidebar_sepatator_bottom', 'separator', '.left-sidebar.separate-containers .site-main', 'margin-bottom' ); -} - -/* Both sidebars */ -if ( jQuery( 'body' ).hasClass( 'both-sidebars' ) ) { - generate_spacing_live_update( 'both_sidebars_sepatator', 'separator', '.both-sidebars.separate-containers .site-main', 'margin' ); -} - -/* Both sidebars right */ -if ( jQuery( 'body' ).hasClass( 'both-right' ) ) { - generate_spacing_live_update( 'both_right_sidebar_sepatator_top', 'separator', '.both-right.separate-containers .site-main', 'margin-top' ); - generate_spacing_live_update( 'both_right_sidebar_sepatator_right', 'separator', '.both-right.separate-containers .site-main', 'margin-right' ); - generate_spacing_live_update( 'both_right_sidebar_sepatator_bottom', 'separator', '.both-right.separate-containers .site-main', 'margin-bottom' ); - - if ( gp_spacing.isFlex ) { - generate_spacing_live_update( 'both_right_left_sidebar', 'separator', '.both-right .inside-left-sidebar', 'margin-right', false, true ); - generate_spacing_live_update( 'both_right_right_sidebar', 'separator', '.both-right .inside-right-sidebar', 'margin-left', false, true ); - } else { - generate_spacing_live_update( 'both_right_left_sidebar', 'separator', '.both-right.separate-containers .inside-left-sidebar', 'margin-right', false, true ); - generate_spacing_live_update( 'both_right_right_sidebar', 'separator', '.both-right.separate-containers .inside-right-sidebar', 'margin-left', false, true ); - } -} - -/* Both sidebars left */ -if ( jQuery( 'body' ).hasClass( 'both-left' ) ) { - generate_spacing_live_update( 'both_left_sidebar_sepatator_top', 'separator', '.both-left.separate-containers .site-main', 'margin-top' ); - generate_spacing_live_update( 'both_left_sidebar_sepatator_right', 'separator', '.both-left.separate-containers .site-main', 'margin-bottom' ); - generate_spacing_live_update( 'both_left_sidebar_sepatator_bottom', 'separator', '.both-left.separate-containers .site-main', 'margin-left' ); - - if ( gp_spacing.isFlex ) { - generate_spacing_live_update( 'both_left_left_sidebar', 'separator', '.both-left .inside-left-sidebar', 'margin-right', false, true ); - generate_spacing_live_update( 'both_left_right_sidebar', 'separator', '.both-left .inside-right-sidebar', 'margin-left', false, true ); - } else { - generate_spacing_live_update( 'both_left_left_sidebar', 'separator', '.both-left.separate-containers .inside-left-sidebar', 'margin-right', false, true ); - generate_spacing_live_update( 'both_left_right_sidebar', 'separator', '.both-left.separate-containers .inside-right-sidebar', 'margin-left', false, true ); - } -} - -/* Main element margin */ -generate_spacing_live_update( 'site_main_separator_top', 'separator', '.separate-containers .site-main', 'margin-top' ); -generate_spacing_live_update( 'site_main_separator_bottom', 'separator', '.separate-containers .site-main', 'margin-bottom' ); - -/* Page header element */ -if ( gp_spacing.isFlex ) { - generate_spacing_live_update( 'page_header_separator_top', 'separator', '.separate-containers .featured-image', 'margin-top' ); -} else { - generate_spacing_live_update( 'page_header_separator_top', 'separator', - '.separate-containers .page-header-image, \ - .separate-containers .page-header-contained, \ - .separate-containers .page-header-image-single, \ - .separate-containers .page-header-content-single', 'margin-top' ); -} - -/* Top and bottom sidebar margin */ -generate_spacing_live_update( 'right_sidebar_separator_top', 'separator', '.separate-containers .inside-right-sidebar, .separate-containers .inside-left-sidebar', 'margin-top' ); -generate_spacing_live_update( 'right_sidebar_separator_bottom', 'separator', '.separate-containers .inside-right-sidebar, .separate-containers .inside-left-sidebar', 'margin-bottom' ); - -/* Element separators */ -if ( gp_spacing.isFlex ) { - generate_spacing_live_update( 'content_separator', 'separator', - '.sidebar .widget, \ - .site-main > *, \ - .page-header, \ - .widget-area .main-navigation', 'margin-bottom' ); -} else { - generate_spacing_live_update( 'content_separator', 'separator', - '.separate-containers .widget, \ - .separate-containers .site-main > *, \ - .separate-containers .page-header, \ - .widget-area .main-navigation', 'margin-bottom' ); -} - -/** - * Right sidebar width - */ -wp.customize( 'generate_spacing_settings[right_sidebar_width]', function( value ) { - value.bind( function( newval ) { - var body = jQuery( 'body' ); - - if ( jQuery( '#right-sidebar' ).length ) { - if ( gp_spacing.isFlex ) { - var contentWidth = 100, - leftSidebar = jQuery( '#left-sidebar' ).length ? wp.customize.value('generate_spacing_settings[left_sidebar_width]')() : 0; - - if ( body.hasClass( 'right-sidebar' ) ) { - contentWidth = ( Number( contentWidth ) - Number( newval ) ); - } else if ( ! body.hasClass( 'left-sidebar' ) && ! body.hasClass( 'no-sidebar' ) ) { - var totalSidebarWidth = ( Number( leftSidebar ) + Number( newval ) ); - - contentWidth = ( Number( contentWidth ) - Number( totalSidebarWidth ) ); - } - - jQuery( 'head' ).append( '' ); - - setTimeout(function() { - jQuery( 'style#right_sidebar_width' ).not( ':last' ).remove(); - }, 200 ); - } else { - // Left sidebar width - var left_sidebar = ( jQuery( '#left-sidebar' ).length ) ? wp.customize.value('generate_spacing_settings[left_sidebar_width]')() : 0; - - // Right sidebar class - jQuery( "#right-sidebar" ).removeClass(function (index, css) { - return (css.match (/(^|\s)grid-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-grid-\S+/g) || []).join(' '); - }).addClass( 'grid-' + newval ).addClass( 'tablet-grid-' + newval ).addClass( 'grid-parent' ); - - // Content area class - jQuery( ".content-area" ).removeClass(function (index, css) { - return (css.match (/(^|\s)grid-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-grid-\S+/g) || []).join(' '); - }).addClass( 'grid-' + ( 100 - newval - left_sidebar ) ).addClass( 'tablet-grid-' + ( 100 - newval - left_sidebar ) ).addClass( 'grid-parent' ); - - if ( body.hasClass( 'both-sidebars' ) ) { - var content_width = ( 100 - newval - left_sidebar ); - jQuery( '#left-sidebar' ).removeClass(function (index, css) { - return (css.match (/(^|\s)pull-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-pull-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)push-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-push-\S+/g) || []).join(' '); - }).addClass( 'pull-' + ( content_width ) ).addClass( 'tablet-pull-' + ( content_width ) ); - } - - if ( body.hasClass( 'both-left' ) ) { - var total_sidebar_width = ( parseInt( left_sidebar ) + parseInt( newval ) ); - - jQuery( '#right-sidebar' ).removeClass(function (index, css) { - return (css.match (/(^|\s)pull-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-pull-\S+/g) || []).join(' '); - }).addClass( 'pull-' + ( 100 - total_sidebar_width ) ).addClass( 'tablet-pull-' + ( 100 - total_sidebar_width ) ); - - jQuery( '#left-sidebar' ).removeClass(function (index, css) { - return (css.match (/(^|\s)pull-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-pull-\S+/g) || []).join(' '); - }).addClass( 'pull-' + ( 100 - total_sidebar_width ) ).addClass( 'tablet-pull-' + ( 100 - total_sidebar_width ) ); - - jQuery( '.content-area' ).removeClass(function (index, css) { - return (css.match (/(^|\s)pull-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-pull-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)push-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-push-\S+/g) || []).join(' '); - }).addClass( 'push-' + ( total_sidebar_width ) ).addClass( 'tablet-push-' + ( total_sidebar_width ) ); - } - } - jQuery('body').trigger('generate_spacing_updated'); - } - } ); -} ); - -/** - * Left sidebar width - */ -wp.customize( 'generate_spacing_settings[left_sidebar_width]', function( value ) { - value.bind( function( newval ) { - var body = jQuery( 'body' ); - if ( jQuery( '#left-sidebar' ).length ) { - if ( gp_spacing.isFlex ) { - var contentWidth = 100, - rightSidebar = jQuery( '#right-sidebar' ).length ? wp.customize.value('generate_spacing_settings[right_sidebar_width]')() : 0; - - if ( body.hasClass( 'left-sidebar' ) ) { - contentWidth = ( Number( contentWidth ) - Number( newval ) ); - } else if ( ! body.hasClass( 'right-sidebar' ) && ! body.hasClass( 'no-sidebar' ) ) { - var totalSidebarWidth = ( Number( rightSidebar ) + Number( newval ) ); - - contentWidth = ( Number( contentWidth ) - Number( totalSidebarWidth ) ); - } - - jQuery( 'head' ).append( '' ); - - setTimeout(function() { - jQuery( 'style#left_sidebar_width' ).not( ':last' ).remove(); - }, 200 ); - } else { - // Right sidebar width - var right_sidebar = ( jQuery( '#right-sidebar' ).length ) ? wp.customize.value('generate_spacing_settings[right_sidebar_width]')() : 0; - - // Right sidebar class - jQuery( "#left-sidebar" ).removeClass(function (index, css) { - return (css.match (/(^|\s)grid-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-grid-\S+/g) || []).join(' '); - }).addClass( 'grid-' + newval ).addClass( 'tablet-grid-' + newval ).addClass( 'grid-parent' ); - - // Content area class - jQuery( ".content-area" ).removeClass(function (index, css) { - return (css.match (/(^|\s)grid-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-grid-\S+/g) || []).join(' '); - }).addClass( 'grid-' + ( 100 - newval - right_sidebar ) ).addClass( 'tablet-grid-' + ( 100 - newval - right_sidebar ) ).addClass( 'grid-parent' ); - - if ( body.hasClass( 'left-sidebar' ) ) { - jQuery( '#left-sidebar' ).removeClass(function (index, css) { - return (css.match (/(^|\s)pull-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-pull-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)push-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-push-\S+/g) || []).join(' '); - }).addClass( 'pull-' + ( 100 - newval ) ).addClass( 'tablet-pull-' + ( 100 - newval ) ); - - jQuery( '.content-area' ).removeClass(function (index, css) { - return (css.match (/(^|\s)pull-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-pull-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)push-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-push-\S+/g) || []).join(' '); - }).addClass( 'push-' + newval ).addClass( 'tablet-push-' + newval ).addClass( 'grid-' + ( 100 - newval ) ).addClass( 'tablet-grid-' + ( 100 - newval ) ); - } - - if ( body.hasClass( 'both-sidebars' ) ) { - var content_width = ( 100 - newval - right_sidebar ); - jQuery( '#left-sidebar' ).removeClass(function (index, css) { - return (css.match (/(^|\s)pull-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-pull-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)push-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-push-\S+/g) || []).join(' '); - }).addClass( 'pull-' + ( content_width ) ).addClass( 'tablet-pull-' + ( content_width ) ); - - jQuery( '.content-area' ).removeClass(function (index, css) { - return (css.match (/(^|\s)pull-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-pull-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)push-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-push-\S+/g) || []).join(' '); - }).addClass( 'push-' + ( newval ) ).addClass( 'tablet-push-' + ( newval ) ); - } - - if ( body.hasClass( 'both-left' ) ) { - var content_width = ( 100 - newval - right_sidebar ); - var total_sidebar_width = ( parseInt( right_sidebar ) + parseInt( newval ) ); - - jQuery( '#right-sidebar' ).removeClass(function (index, css) { - return (css.match (/(^|\s)pull-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-pull-\S+/g) || []).join(' '); - }).addClass( 'pull-' + ( 100 - total_sidebar_width ) ).addClass( 'tablet-pull-' + ( 100 - total_sidebar_width ) ); - - jQuery( '#left-sidebar' ).removeClass(function (index, css) { - return (css.match (/(^|\s)pull-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-pull-\S+/g) || []).join(' '); - }).addClass( 'pull-' + ( 100 - total_sidebar_width ) ).addClass( 'tablet-pull-' + ( 100 - total_sidebar_width ) ); - - jQuery( '.content-area' ).removeClass(function (index, css) { - return (css.match (/(^|\s)pull-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-pull-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)push-\S+/g) || []).join(' '); - }).removeClass(function (index, css) { - return (css.match (/(^|\s)tablet-push-\S+/g) || []).join(' '); - }).addClass( 'push-' + ( total_sidebar_width ) ).addClass( 'tablet-push-' + ( total_sidebar_width ) ); - } - } - jQuery('body').trigger('generate_spacing_updated'); - } - } ); -} ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/navigation-spacing.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/navigation-spacing.php deleted file mode 100644 index 09884e67..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/navigation-spacing.php +++ /dev/null @@ -1,281 +0,0 @@ -add_section( - 'generate_spacing_navigation', - array( - 'title' => __( 'Primary Navigation', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 15, - 'panel' => 'generate_spacing_panel', - ) -); - -// If our new Layout section doesn't exist, use the old navigation section. -$navigation_section = ( $wp_customize->get_panel( 'generate_layout_panel' ) ) ? 'generate_layout_navigation' : 'generate_spacing_navigation'; - -// Menu item width. -$wp_customize->add_setting( - 'generate_spacing_settings[menu_item]', - array( - 'default' => $defaults['menu_item'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -$wp_customize->add_setting( - 'generate_spacing_settings[mobile_menu_item]', - array( - 'default' => $defaults['mobile_menu_item'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) -); - -$wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_spacing_settings[menu_item]', - array( - 'label' => __( 'Menu Item Width', 'gp-premium' ), - 'section' => $navigation_section, - 'settings' => array( - 'desktop' => 'generate_spacing_settings[menu_item]', - 'mobile' => 'generate_spacing_settings[mobile_menu_item]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 100, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - 'mobile' => array( - 'min' => 0, - 'max' => 100, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - 'priority' => 220, - ) - ) -); - -// Menu item height. -$wp_customize->add_setting( - 'generate_spacing_settings[menu_item_height]', - array( - 'default' => $defaults['menu_item_height'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -$wp_customize->add_setting( - 'generate_spacing_settings[mobile_menu_item_height]', - array( - 'default' => $defaults['mobile_menu_item_height'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) -); - -$wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_spacing_settings[menu_item_height]', - array( - 'label' => __( 'Menu Item Height', 'gp-premium' ), - 'section' => $navigation_section, - 'settings' => array( - 'desktop' => 'generate_spacing_settings[menu_item_height]', - 'mobile' => 'generate_spacing_settings[mobile_menu_item_height]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 20, - 'max' => 150, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - 'mobile' => array( - 'min' => 20, - 'max' => 150, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - 'priority' => 240, - ) - ) -); - -// Sub-menu item height. -$wp_customize->add_setting( - 'generate_spacing_settings[sub_menu_item_height]', - array( - 'default' => $defaults['sub_menu_item_height'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -$wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_spacing_settings[sub_menu_item_height]', - array( - 'label' => __( 'Sub-Menu Item Height', 'gp-premium' ), - 'section' => $navigation_section, - 'settings' => array( - 'desktop' => 'generate_spacing_settings[sub_menu_item_height]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 50, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - 'priority' => 260, - ) - ) -); - -if ( isset( $defaults['sub_menu_width'] ) ) { - $wp_customize->add_setting( - 'generate_spacing_settings[sub_menu_width]', - array( - 'default' => $defaults['sub_menu_width'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_spacing_settings[sub_menu_width]', - array( - 'label' => __( 'Sub-Menu Width', 'gp-premium' ), - 'section' => $navigation_section, - 'settings' => array( - 'desktop' => 'generate_spacing_settings[sub_menu_width]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 100, - 'max' => 500, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - 'priority' => 265, - ) - ) - ); -} - -// Sticky menu height. -$wp_customize->add_setting( - 'generate_spacing_settings[sticky_menu_item_height]', - array( - 'default' => $defaults['sticky_menu_item_height'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) -); - -$wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_spacing_settings[sticky_menu_item_height]', - array( - 'label' => __( 'Menu Item Height', 'gp-premium' ), - 'section' => 'menu_plus_sticky_menu', - 'settings' => array( - 'desktop' => 'generate_spacing_settings[sticky_menu_item_height]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 20, - 'max' => 150, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - 'priority' => 150, - 'active_callback' => 'generate_sticky_navigation_activated', - ) - ) -); - -// Off canvas menu height. -$wp_customize->add_setting( - 'generate_spacing_settings[off_canvas_menu_item_height]', - array( - 'default' => $defaults['off_canvas_menu_item_height'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) -); - -$wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_spacing_settings[off_canvas_menu_item_height]', - array( - 'label' => __( 'Menu Item Height', 'gp-premium' ), - 'section' => 'menu_plus_slideout_menu', - 'settings' => array( - 'desktop' => 'generate_spacing_settings[off_canvas_menu_item_height]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 20, - 'max' => 150, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - 'priority' => 200, - 'active_callback' => 'generate_slideout_navigation_activated', - ) - ) -); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/secondary-nav-spacing.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/secondary-nav-spacing.php deleted file mode 100644 index dd565a57..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/secondary-nav-spacing.php +++ /dev/null @@ -1,159 +0,0 @@ -get_section( 'secondary_nav_section' ) ) { - return; - } - - // Get our controls. - require_once GP_LIBRARY_DIRECTORY . 'customizer-helpers.php'; - - // Get our defaults. - $defaults = generate_secondary_nav_get_defaults(); - - // Remove our old label control if it exists. - // It only would if the user is using an old Secondary Nav add-on version. - if ( $wp_customize->get_control( 'generate_secondary_navigation_spacing_title' ) ) { - $wp_customize->remove_control( 'generate_secondary_navigation_spacing_title' ); - } - - // Menu item width. - $wp_customize->add_setting( - 'generate_secondary_nav_settings[secondary_menu_item]', - array( - 'default' => $defaults['secondary_menu_item'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_secondary_nav_settings[secondary_menu_item]', - array( - 'label' => __( 'Menu Item Width', 'gp-premium' ), - 'section' => 'secondary_nav_section', - 'settings' => array( - 'desktop' => 'generate_secondary_nav_settings[secondary_menu_item]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 100, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - 'priority' => 220, - ) - ) - ); - - // Menu item height. - $wp_customize->add_setting( - 'generate_secondary_nav_settings[secondary_menu_item_height]', - array( - 'default' => $defaults['secondary_menu_item_height'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_secondary_nav_settings[secondary_menu_item_height]', - array( - 'label' => __( 'Menu Item Height', 'gp-premium' ), - 'section' => 'secondary_nav_section', - 'settings' => array( - 'desktop' => 'generate_secondary_nav_settings[secondary_menu_item_height]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 20, - 'max' => 150, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - 'priority' => 240, - ) - ) - ); - - // Sub-menu height. - $wp_customize->add_setting( - 'generate_secondary_nav_settings[secondary_sub_menu_item_height]', - array( - 'default' => $defaults['secondary_sub_menu_item_height'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_secondary_nav_settings[secondary_sub_menu_item_height]', - array( - 'label' => __( 'Sub-Menu Item Height', 'gp-premium' ), - 'section' => 'secondary_nav_section', - 'settings' => array( - 'desktop' => 'generate_secondary_nav_settings[secondary_sub_menu_item_height]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 50, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - 'priority' => 260, - ) - ) - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/sidebar-spacing.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/sidebar-spacing.php deleted file mode 100644 index b8c3b0c7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/sidebar-spacing.php +++ /dev/null @@ -1,211 +0,0 @@ -add_section( - 'generate_spacing_sidebar', - array( - 'title' => __( 'Sidebars', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 15, - 'panel' => 'generate_spacing_panel', - ) -); - -// Add our controls to the Layout panel if it exists. -// If not, use the old section. -$widget_section = ( $wp_customize->get_panel( 'generate_layout_panel' ) ) ? 'generate_layout_sidebars' : 'generate_spacing_sidebar'; - -// Widget padding top. -$wp_customize->add_setting( - 'generate_spacing_settings[widget_top]', - array( - 'default' => $defaults['widget_top'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Widget padding right. -$wp_customize->add_setting( - 'generate_spacing_settings[widget_right]', - array( - 'default' => $defaults['widget_right'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Widget padding bottom. -$wp_customize->add_setting( - 'generate_spacing_settings[widget_bottom]', - array( - 'default' => $defaults['widget_bottom'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Widget padding left. -$wp_customize->add_setting( - 'generate_spacing_settings[widget_left]', - array( - 'default' => $defaults['widget_left'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Widget padding top. -$wp_customize->add_setting( - 'generate_spacing_settings[mobile_widget_top]', - array( - 'default' => $defaults['mobile_widget_top'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Widget padding right. -$wp_customize->add_setting( - 'generate_spacing_settings[mobile_widget_right]', - array( - 'default' => $defaults['mobile_widget_right'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Widget padding bottom. -$wp_customize->add_setting( - 'generate_spacing_settings[mobile_widget_bottom]', - array( - 'default' => $defaults['mobile_widget_bottom'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Widget padding left. -$wp_customize->add_setting( - 'generate_spacing_settings[mobile_widget_left]', - array( - 'default' => $defaults['mobile_widget_left'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -// Make use of the widget padding settings. -$wp_customize->add_control( - new GeneratePress_Spacing_Control( - $wp_customize, - 'widget_spacing', - array( - 'type' => 'generatepress-spacing', - 'label' => esc_html__( 'Widget Padding', 'gp-premium' ), - 'section' => $widget_section, - 'settings' => array( - 'desktop_top' => 'generate_spacing_settings[widget_top]', - 'desktop_right' => 'generate_spacing_settings[widget_right]', - 'desktop_bottom' => 'generate_spacing_settings[widget_bottom]', - 'desktop_left' => 'generate_spacing_settings[widget_left]', - 'mobile_top' => 'generate_spacing_settings[mobile_widget_top]', - 'mobile_right' => 'generate_spacing_settings[mobile_widget_right]', - 'mobile_bottom' => 'generate_spacing_settings[mobile_widget_bottom]', - 'mobile_left' => 'generate_spacing_settings[mobile_widget_left]', - ), - 'element' => 'widget', - 'priority' => 99, - ) - ) -); - -// Left sidebar width. -$wp_customize->add_setting( - 'generate_spacing_settings[left_sidebar_width]', - array( - 'default' => $defaults['left_sidebar_width'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -$wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_spacing_settings[left_sidebar_width]', - array( - 'label' => esc_html__( 'Left Sidebar Width', 'gp-premium' ), - 'section' => $widget_section, - 'settings' => array( - 'desktop' => 'generate_spacing_settings[left_sidebar_width]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 15, - 'max' => 50, - 'step' => 5, - 'edit' => false, - 'unit' => '%', - ), - ), - 'priority' => 125, - ) - ) -); - -// Right sidebar width. -$wp_customize->add_setting( - 'generate_spacing_settings[right_sidebar_width]', - array( - 'default' => $defaults['right_sidebar_width'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) -); - -$wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_spacing_settings[right_sidebar_width]', - array( - 'label' => esc_html__( 'Right Sidebar Width', 'gp-premium' ), - 'section' => $widget_section, - 'settings' => array( - 'desktop' => 'generate_spacing_settings[right_sidebar_width]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 15, - 'max' => 50, - 'step' => 5, - 'edit' => false, - 'unit' => '%', - ), - ), - 'priority' => 125, - ) - ) -); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/top-bar-spacing.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/top-bar-spacing.php deleted file mode 100644 index ecc0f085..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/customizer/top-bar-spacing.php +++ /dev/null @@ -1,73 +0,0 @@ -add_setting( - 'generate_spacing_settings[top_bar_top]', - array( - 'default' => $defaults['top_bar_top'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_spacing_settings[top_bar_right]', - array( - 'default' => $defaults['top_bar_right'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_spacing_settings[top_bar_bottom]', - array( - 'default' => $defaults['top_bar_bottom'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_spacing_settings[top_bar_left]', - array( - 'default' => $defaults['top_bar_left'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Spacing_Control( - $wp_customize, - 'top_bar_spacing', - array( - 'type' => 'generatepress-spacing', - 'label' => esc_html__( 'Top Bar Padding', 'gp-premium' ), - 'section' => 'generate_top_bar', - 'settings' => array( - 'desktop_top' => 'generate_spacing_settings[top_bar_top]', - 'desktop_right' => 'generate_spacing_settings[top_bar_right]', - 'desktop_bottom' => 'generate_spacing_settings[top_bar_bottom]', - 'desktop_left' => 'generate_spacing_settings[top_bar_left]', - ), - 'element' => 'top_bar', - 'priority' => 99, - 'active_callback' => 'generate_premium_is_top_bar_active', - ) - ) - ); -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/functions.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/functions.php deleted file mode 100644 index a428989c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/functions.php +++ /dev/null @@ -1,362 +0,0 @@ -register_control_type( 'GeneratePress_Pro_Range_Slider_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Spacing_Control' ); - } - - // Add our Spacing panel. - // This is only used if the Layout panel in the free theme doesn't exist. - if ( class_exists( 'WP_Customize_Panel' ) ) { - if ( ! $wp_customize->get_panel( 'generate_spacing_panel' ) ) { - $wp_customize->add_panel( - 'generate_spacing_panel', - array( - 'capability' => 'edit_theme_options', - 'theme_supports' => '', - 'title' => __( 'Spacing', 'gp-premium' ), - 'description' => __( 'Change the spacing for various elements using pixels.', 'gp-premium' ), - 'priority' => 35, - ) - ); - } - } - - require_once plugin_dir_path( __FILE__ ) . 'customizer/top-bar-spacing.php'; - require_once plugin_dir_path( __FILE__ ) . 'customizer/header-spacing.php'; - require_once plugin_dir_path( __FILE__ ) . 'customizer/content-spacing.php'; - require_once plugin_dir_path( __FILE__ ) . 'customizer/sidebar-spacing.php'; - require_once plugin_dir_path( __FILE__ ) . 'customizer/navigation-spacing.php'; - require_once plugin_dir_path( __FILE__ ) . 'customizer/footer-spacing.php'; - - } -} - -if ( ! function_exists( 'generate_right_sidebar_width' ) ) { - add_filter( 'generate_right_sidebar_width', 'generate_right_sidebar_width' ); - /** - * Set our right sidebar width. - * - * @param int $width The sidebar width. - */ - function generate_right_sidebar_width( $width ) { - // Bail if we don't have our defaults. - if ( ! function_exists( 'generate_spacing_get_defaults' ) ) { - return $width; - } - - $spacing_settings = wp_parse_args( - get_option( 'generate_spacing_settings', array() ), - generate_spacing_get_defaults() - ); - - return absint( $spacing_settings['right_sidebar_width'] ); - } -} - -if ( ! function_exists( 'generate_left_sidebar_width' ) ) { - add_filter( 'generate_left_sidebar_width', 'generate_left_sidebar_width' ); - /** - * Set our left sidebar width. - * - * @param int $width The sidebar width. - */ - function generate_left_sidebar_width( $width ) { - // Bail if we don't have our defaults. - if ( ! function_exists( 'generate_spacing_get_defaults' ) ) { - return $width; - } - - $spacing_settings = wp_parse_args( - get_option( 'generate_spacing_settings', array() ), - generate_spacing_get_defaults() - ); - - return absint( $spacing_settings['left_sidebar_width'] ); - } -} - -if ( ! function_exists( 'generate_spacing_customizer_live_preview' ) ) { - add_action( 'customize_preview_init', 'generate_spacing_customizer_live_preview' ); - /** - * Add our live preview JS - */ - function generate_spacing_customizer_live_preview() { - wp_enqueue_script( - 'generate-spacing-customizer', - trailingslashit( plugin_dir_url( __FILE__ ) ) . 'customizer/js/customizer.js', - array( 'jquery', 'customize-preview' ), - GENERATE_SPACING_VERSION, - true - ); - - wp_localize_script( - 'generate-spacing-customizer', - 'gp_spacing', - array( - 'mobile' => generate_premium_get_media_query( 'mobile' ), - 'tablet' => generate_premium_get_media_query( 'tablet' ), - 'desktop' => generate_premium_get_media_query( 'desktop' ), - 'isFlex' => function_exists( 'generate_is_using_flexbox' ) && generate_is_using_flexbox(), - ) - ); - } -} - -if ( ! function_exists( 'generate_include_spacing_defaults' ) ) { - /** - * Check if we should include our default.css file. - * - * @since 1.3.42 - */ - function generate_include_spacing_defaults() { - return true; - } -} - -if ( ! function_exists( 'generate_spacing_premium_defaults' ) ) { - add_filter( 'generate_spacing_option_defaults', 'generate_spacing_premium_defaults' ); - /** - * Add premium spacing defaults. - * - * @since 1.3 - * @param array $defaults The existing defaults. - */ - function generate_spacing_premium_defaults( $defaults ) { - $defaults['mobile_menu_item'] = ''; - $defaults['mobile_menu_item_height'] = ''; - $defaults['sticky_menu_item_height'] = ''; - $defaults['off_canvas_menu_item_height'] = ''; - $defaults['content_element_separator'] = '2'; // em. - - // These defaults were added to GeneratePress (free) in 3.0.0. - if ( defined( 'GENERATE_VERSION' ) && version_compare( GENERATE_VERSION, '3.0.0-alpha.1', '<' ) ) { - $defaults['mobile_header_top'] = ''; - $defaults['mobile_header_right'] = ''; - $defaults['mobile_header_bottom'] = ''; - $defaults['mobile_header_left'] = ''; - - $defaults['mobile_widget_top'] = ''; - $defaults['mobile_widget_right'] = ''; - $defaults['mobile_widget_bottom'] = ''; - $defaults['mobile_widget_left'] = ''; - - $defaults['mobile_footer_widget_container_top'] = ''; - $defaults['mobile_footer_widget_container_right'] = ''; - $defaults['mobile_footer_widget_container_bottom'] = ''; - $defaults['mobile_footer_widget_container_left'] = ''; - } - - return $defaults; - } -} - -/** - * Build our premium CSS. - */ -function generate_spacing_do_premium_css() { - // Bail if we don't have our defaults. - if ( ! function_exists( 'generate_spacing_get_defaults' ) ) { - return; - } - - $spacing_settings = wp_parse_args( - get_option( 'generate_spacing_settings', array() ), - generate_spacing_get_defaults() - ); - - require_once GP_LIBRARY_DIRECTORY . 'class-make-css.php'; - $premium_css = new GeneratePress_Pro_CSS(); - $css_output = ''; - - // Mobile spacing. - $premium_css->start_media_query( generate_premium_get_media_query( 'mobile-menu' ) ); - - if ( '' !== $spacing_settings['mobile_menu_item'] ) { - $premium_css->set_selector( '.main-navigation .menu-toggle,.main-navigation .mobile-bar-items a,.main-navigation .menu-bar-item > a' ); - $premium_css->add_property( 'padding-left', absint( $spacing_settings['mobile_menu_item'] ), false, 'px' ); - $premium_css->add_property( 'padding-right', absint( $spacing_settings['mobile_menu_item'] ), false, 'px' ); - } - - if ( '' !== $spacing_settings['mobile_menu_item_height'] ) { - $premium_css->set_selector( '.main-navigation .main-nav ul li a,.main-navigation .menu-toggle,.main-navigation .mobile-bar-items a,.main-navigation .menu-bar-item > a' ); - $premium_css->add_property( 'line-height', absint( $spacing_settings['mobile_menu_item_height'] ), false, 'px' ); - - $premium_css->set_selector( '.main-navigation .site-logo.navigation-logo img, .mobile-header-navigation .site-logo.mobile-header-logo img, .navigation-search input[type="search"]' ); - $premium_css->add_property( 'height', absint( $spacing_settings['mobile_menu_item_height'] ), false, 'px' ); - } - - $premium_css->stop_media_query(); - - // This CSS was added to GeneratePress (free) in 3.0.0. - if ( defined( 'GENERATE_VERSION' ) && version_compare( GENERATE_VERSION, '3.0.0-alpha.1', '<' ) ) { - $premium_css->start_media_query( generate_premium_get_media_query( 'mobile' ) ); - - $premium_css->set_selector( '.inside-header' ); - - if ( '' !== $spacing_settings['mobile_header_top'] ) { - $premium_css->add_property( 'padding-top', absint( $spacing_settings['mobile_header_top'] ), false, 'px' ); - } - - if ( '' !== $spacing_settings['mobile_header_right'] ) { - $premium_css->add_property( 'padding-right', absint( $spacing_settings['mobile_header_right'] ), false, 'px' ); - } - - if ( '' !== $spacing_settings['mobile_header_bottom'] ) { - $premium_css->add_property( 'padding-bottom', absint( $spacing_settings['mobile_header_bottom'] ), false, 'px' ); - } - - if ( '' !== $spacing_settings['mobile_header_left'] ) { - $premium_css->add_property( 'padding-left', absint( $spacing_settings['mobile_header_left'] ), false, 'px' ); - } - - $premium_css->set_selector( '.widget-area .widget' ); - - if ( '' !== $spacing_settings['mobile_widget_top'] ) { - $premium_css->add_property( 'padding-top', absint( $spacing_settings['mobile_widget_top'] ), false, 'px' ); - } - - if ( '' !== $spacing_settings['mobile_widget_right'] ) { - $premium_css->add_property( 'padding-right', absint( $spacing_settings['mobile_widget_right'] ), false, 'px' ); - } - - if ( '' !== $spacing_settings['mobile_widget_bottom'] ) { - $premium_css->add_property( 'padding-bottom', absint( $spacing_settings['mobile_widget_bottom'] ), false, 'px' ); - } - - if ( '' !== $spacing_settings['mobile_widget_left'] ) { - $premium_css->add_property( 'padding-left', absint( $spacing_settings['mobile_widget_left'] ), false, 'px' ); - } - - $premium_css->set_selector( '.footer-widgets' ); - - if ( '' !== $spacing_settings['mobile_footer_widget_container_top'] ) { - $premium_css->add_property( 'padding-top', absint( $spacing_settings['mobile_footer_widget_container_top'] ), false, 'px' ); - } - - if ( '' !== $spacing_settings['mobile_footer_widget_container_right'] ) { - $premium_css->add_property( 'padding-right', absint( $spacing_settings['mobile_footer_widget_container_right'] ), false, 'px' ); - } - - if ( '' !== $spacing_settings['mobile_footer_widget_container_bottom'] ) { - $premium_css->add_property( 'padding-bottom', absint( $spacing_settings['mobile_footer_widget_container_bottom'] ), false, 'px' ); - } - - if ( '' !== $spacing_settings['mobile_footer_widget_container_left'] ) { - $premium_css->add_property( 'padding-left', absint( $spacing_settings['mobile_footer_widget_container_left'] ), false, 'px' ); - } - - $premium_css->stop_media_query(); - - $premium_css->set_selector( '.post-image, .page-content, .entry-content, .entry-summary, footer.entry-meta' ); - $premium_css->add_property( 'margin-top', floatval( $spacing_settings['content_element_separator'] ), '2', 'em' ); - } else { - $premium_css->set_selector( '.post-image:not(:first-child), .page-content:not(:first-child), .entry-content:not(:first-child), .entry-summary:not(:first-child), footer.entry-meta' ); - $premium_css->add_property( 'margin-top', floatval( $spacing_settings['content_element_separator'] ), '2', 'em' ); - } - - $premium_css->set_selector( '.post-image-above-header .inside-article div.featured-image, .post-image-above-header .inside-article div.post-image' ); - $premium_css->add_property( 'margin-bottom', floatval( $spacing_settings['content_element_separator'] ), '2', 'em' ); - - if ( function_exists( 'generate_menu_plus_get_defaults' ) ) { - $menu_plus = wp_parse_args( - get_option( 'generate_menu_plus_settings', array() ), - generate_menu_plus_get_defaults() - ); - - if ( 'false' !== $menu_plus['sticky_menu'] && '' !== $spacing_settings['sticky_menu_item_height'] ) { - $premium_css->start_media_query( generate_premium_get_media_query( 'tablet' ) . ',' . generate_premium_get_media_query( 'desktop' ) ); - - if ( function_exists( 'generate_is_using_flexbox' ) && generate_is_using_flexbox() ) { - $premium_css->set_selector( '.main-navigation.sticky-navigation-transition .main-nav > ul > li > a,.sticky-navigation-transition .menu-toggle,.main-navigation.sticky-navigation-transition .menu-bar-item > a, .sticky-navigation-transition .navigation-branding .main-title' ); - } else { - $premium_css->set_selector( '.main-navigation.sticky-navigation-transition .main-nav > ul > li > a,.sticky-navigation-transition .menu-toggle,.main-navigation.sticky-navigation-transition .mobile-bar-items a, .sticky-navigation-transition .navigation-branding .main-title' ); - } - - $premium_css->add_property( 'line-height', absint( $spacing_settings['sticky_menu_item_height'] ), false, 'px' ); - - $premium_css->set_selector( '.main-navigation.sticky-navigation-transition .site-logo img, .main-navigation.sticky-navigation-transition .navigation-search input[type="search"], .main-navigation.sticky-navigation-transition .navigation-branding img' ); - $premium_css->add_property( 'height', absint( $spacing_settings['sticky_menu_item_height'] ), false, 'px' ); - - $premium_css->stop_media_query(); - } - - if ( 'false' !== $menu_plus['slideout_menu'] ) { - $premium_css->set_selector( '.main-navigation.slideout-navigation .main-nav > ul > li > a' ); - if ( '' !== $spacing_settings['off_canvas_menu_item_height'] ) { - $premium_css->add_property( 'line-height', absint( $spacing_settings['off_canvas_menu_item_height'] ), false, 'px' ); - } - } - } - - if ( '' !== $premium_css->css_output() ) { - $css_output = $premium_css->css_output(); - } - - return $css_output; -} - -if ( ! function_exists( 'generate_spacing_premium_css' ) ) { - add_action( 'wp_enqueue_scripts', 'generate_spacing_premium_css', 105 ); - /** - * Add premium spacing CSS - * - * @since 1.3 - */ - function generate_spacing_premium_css() { - $css = generate_spacing_do_premium_css(); - - if ( 'inline' === generate_get_css_print_method() && $css ) { - wp_add_inline_style( 'generate-style', $css ); - } - } -} - -add_filter( 'generate_external_dynamic_css_output', 'generate_spacing_add_to_external_stylesheet' ); -/** - * Add CSS to the external stylesheet. - * - * @since 1.11.0 - * @param string $css Existing CSS. - */ -function generate_spacing_add_to_external_stylesheet( $css ) { - if ( 'inline' === generate_get_css_print_method() ) { - return $css; - } - - $css .= generate_spacing_do_premium_css(); - - return $css; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/migration.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/migration.php deleted file mode 100644 index 1eac04b6..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/spacing/functions/migration.php +++ /dev/null @@ -1,102 +0,0 @@ -register_control_type( 'GeneratePress_Pro_Range_Slider_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Pro_Typography_Customize_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Section_Shortcut_Control' ); - } - - // Add the typography panel. - if ( class_exists( 'WP_Customize_Panel' ) ) { - $wp_customize->add_panel( - 'generate_typography_panel', - array( - 'priority' => 30, - 'capability' => 'edit_theme_options', - 'theme_supports' => '', - 'title' => __( 'Typography', 'gp-premium' ), - 'description' => '', - ) - ); - } - - // Body section. - $wp_customize->add_section( - 'font_section', - array( - 'title' => __( 'Body', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'description' => '', - 'priority' => 30, - 'panel' => 'generate_typography_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_body_typography_shortcuts', - array( - 'section' => 'font_section', - 'element' => __( 'Body', 'gp-premium' ), - 'shortcuts' => array( - 'colors' => 'body_section', - 'backgrounds' => 'generate_backgrounds_body', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 0, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[font_body]', - array( - 'default' => $defaults['font_body'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_body_variants', - array( - 'default' => $defaults['font_body_variants'], - 'sanitize_callback' => 'generate_premium_sanitize_variants', - ) - ); - - $wp_customize->add_setting( - 'font_body_category', - array( - 'default' => $defaults['font_body_category'], - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[body_font_weight]', - array( - 'default' => $defaults['body_font_weight'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[body_font_transform]', - array( - 'default' => $defaults['body_font_transform'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Typography_Customize_Control( - $wp_customize, - 'body_typography', - array( - 'section' => 'font_section', - 'priority' => 1, - 'settings' => array( - 'family' => 'generate_settings[font_body]', - 'variant' => 'font_body_variants', - 'category' => 'font_body_category', - 'weight' => 'generate_settings[body_font_weight]', - 'transform' => 'generate_settings[body_font_transform]', - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[body_font_size]', - array( - 'default' => $defaults['body_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[body_font_size]', - array( - 'description' => __( 'Font size', 'gp-premium' ), - 'section' => 'font_section', - 'priority' => 40, - 'settings' => array( - 'desktop' => 'generate_settings[body_font_size]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 6, - 'max' => 25, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[body_line_height]', - array( - 'default' => $defaults['body_line_height'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_decimal_integer', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[body_line_height]', - array( - 'description' => __( 'Line height', 'gp-premium' ), - 'section' => 'font_section', - 'priority' => 45, - 'settings' => array( - 'desktop' => 'generate_settings[body_line_height]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 1, - 'max' => 5, - 'step' => .1, - 'edit' => true, - 'unit' => '', - ), - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[paragraph_margin]', - array( - 'default' => $defaults['paragraph_margin'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_decimal_integer', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[paragraph_margin]', - array( - 'description' => __( 'Paragraph margin', 'gp-premium' ), - 'section' => 'font_section', - 'priority' => 47, - 'settings' => array( - 'desktop' => 'generate_settings[paragraph_margin]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 5, - 'step' => .1, - 'edit' => true, - 'unit' => 'em', - ), - ), - ) - ) - ); - - $wp_customize->add_section( - 'generate_top_bar_typography', - array( - 'title' => __( 'Top Bar', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'description' => '', - 'priority' => 30, - 'panel' => 'generate_typography_panel', - ) - ); - - if ( isset( $defaults['font_top_bar'] ) && function_exists( 'generate_is_top_bar_active' ) ) { - $wp_customize->add_setting( - 'generate_settings[font_top_bar]', - array( - 'default' => $defaults['font_top_bar'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_top_bar_category', - array( - 'default' => '', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_top_bar_variants', - array( - 'default' => '', - 'sanitize_callback' => 'generate_premium_sanitize_variants', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[top_bar_font_weight]', - array( - 'default' => $defaults['top_bar_font_weight'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[top_bar_font_transform]', - array( - 'default' => $defaults['top_bar_font_transform'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Typography_Customize_Control( - $wp_customize, - 'top_bar_typography', - array( - 'section' => 'generate_top_bar_typography', - 'settings' => array( - 'family' => 'generate_settings[font_top_bar]', - 'variant' => 'font_top_bar_variants', - 'category' => 'font_top_bar_category', - 'weight' => 'generate_settings[top_bar_font_weight]', - 'transform' => 'generate_settings[top_bar_font_transform]', - ), - 'active_callback' => 'generate_premium_is_top_bar_active', - ) - ) - ); - - } - - if ( isset( $defaults['top_bar_font_size'] ) && function_exists( 'generate_is_top_bar_active' ) ) { - $wp_customize->add_setting( - 'generate_settings[top_bar_font_size]', - array( - 'default' => $defaults['top_bar_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[top_bar_font_size]', - array( - 'description' => __( 'Font size', 'gp-premium' ), - 'section' => 'generate_top_bar_typography', - 'priority' => 75, - 'settings' => array( - 'desktop' => 'generate_settings[top_bar_font_size]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 6, - 'max' => 25, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - 'active_callback' => 'generate_premium_is_top_bar_active', - ) - ) - ); - } - - $wp_customize->add_section( - 'font_header_section', - array( - 'title' => __( 'Header', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'description' => '', - 'priority' => 40, - 'panel' => 'generate_typography_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_header_typography_shortcuts', - array( - 'section' => 'font_header_section', - 'element' => __( 'Header', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'generate_layout_header', - 'colors' => 'header_color_section', - 'backgrounds' => 'generate_backgrounds_header', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[font_site_title]', - array( - 'default' => $defaults['font_site_title'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_site_title_category', - array( - 'default' => '', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_site_title_variants', - array( - 'default' => '', - 'sanitize_callback' => 'generate_premium_sanitize_variants', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[site_title_font_weight]', - array( - 'default' => $defaults['site_title_font_weight'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[site_title_font_transform]', - array( - 'default' => $defaults['site_title_font_transform'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Typography_Customize_Control( - $wp_customize, - 'site_title_typography', - array( - 'label' => __( 'Site Title', 'gp-premium' ), - 'section' => 'font_header_section', - 'settings' => array( - 'family' => 'generate_settings[font_site_title]', - 'variant' => 'font_site_title_variants', - 'category' => 'font_site_title_category', - 'weight' => 'generate_settings[site_title_font_weight]', - 'transform' => 'generate_settings[site_title_font_transform]', - ), - 'priority' => 50, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[site_title_font_size]', - array( - 'default' => $defaults['site_title_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[tablet_site_title_font_size]', - array( - 'default' => $defaults['tablet_site_title_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[mobile_site_title_font_size]', - array( - 'default' => $defaults['mobile_site_title_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[site_title_font_size]', - array( - 'description' => __( 'Font size', 'gp-premium' ), - 'section' => 'font_header_section', - 'priority' => 75, - 'settings' => array( - 'desktop' => 'generate_settings[site_title_font_size]', - 'tablet' => 'generate_settings[tablet_site_title_font_size]', - 'mobile' => 'generate_settings[mobile_site_title_font_size]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 10, - 'max' => 200, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - 'tablet' => array( - 'min' => 10, - 'max' => 200, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - 'mobile' => array( - 'min' => 10, - 'max' => 200, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[font_site_tagline]', - array( - 'default' => $defaults['font_site_tagline'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_site_tagline_category', - array( - 'default' => '', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_site_tagline_variants', - array( - 'default' => '', - 'sanitize_callback' => 'generate_premium_sanitize_variants', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[site_tagline_font_weight]', - array( - 'default' => $defaults['site_tagline_font_weight'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[site_tagline_font_transform]', - array( - 'default' => $defaults['site_tagline_font_transform'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Typography_Customize_Control( - $wp_customize, - 'font_site_tagline_control', - array( - 'label' => __( 'Site Tagline', 'gp-premium' ), - 'section' => 'font_header_section', - 'settings' => array( - 'family' => 'generate_settings[font_site_tagline]', - 'variant' => 'font_site_tagline_variants', - 'category' => 'font_site_tagline_category', - 'weight' => 'generate_settings[site_tagline_font_weight]', - 'transform' => 'generate_settings[site_tagline_font_transform]', - ), - 'priority' => 80, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[site_tagline_font_size]', - array( - 'default' => $defaults['site_tagline_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[site_tagline_font_size]', - array( - 'description' => __( 'Font size', 'gp-premium' ), - 'section' => 'font_header_section', - 'priority' => 105, - 'settings' => array( - 'desktop' => 'generate_settings[site_tagline_font_size]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 6, - 'max' => 50, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - - $wp_customize->add_section( - 'font_navigation_section', - array( - 'title' => __( 'Primary Navigation', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'description' => '', - 'priority' => 50, - 'panel' => 'generate_typography_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_primary_navigation_typography_shortcuts', - array( - 'section' => 'font_navigation_section', - 'element' => __( 'Primary Navigation', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'generate_layout_navigation', - 'colors' => 'navigation_color_section', - 'backgrounds' => 'generate_backgrounds_navigation', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[font_navigation]', - array( - 'default' => $defaults['font_navigation'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_navigation_category', - array( - 'default' => '', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_navigation_variants', - array( - 'default' => '', - 'sanitize_callback' => 'generate_premium_sanitize_variants', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[navigation_font_weight]', - array( - 'default' => $defaults['navigation_font_weight'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[navigation_font_transform]', - array( - 'default' => $defaults['navigation_font_transform'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Typography_Customize_Control( - $wp_customize, - 'google_font_site_navigation_control', - array( - 'section' => 'font_navigation_section', - 'settings' => array( - 'family' => 'generate_settings[font_navigation]', - 'variant' => 'font_navigation_variants', - 'category' => 'font_navigation_category', - 'weight' => 'generate_settings[navigation_font_weight]', - 'transform' => 'generate_settings[navigation_font_transform]', - ), - 'priority' => 120, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[navigation_font_size]', - array( - 'default' => $defaults['navigation_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[tablet_navigation_font_size]', - array( - 'default' => $defaults['tablet_navigation_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[mobile_navigation_font_size]', - array( - 'default' => $defaults['mobile_navigation_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[navigation_font_size]', - array( - 'description' => __( 'Font size', 'gp-premium' ), - 'section' => 'font_navigation_section', - 'priority' => 165, - 'settings' => array( - 'desktop' => 'generate_settings[navigation_font_size]', - 'tablet' => 'generate_settings[tablet_navigation_font_size]', - 'mobile' => 'generate_settings[mobile_navigation_font_size]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 6, - 'max' => 30, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - 'tablet' => array( - 'min' => 6, - 'max' => 30, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - 'mobile' => array( - 'min' => 6, - 'max' => 30, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - - $wp_customize->add_section( - 'font_buttons_section', - array( - 'title' => __( 'Buttons', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'description' => '', - 'priority' => 55, - 'panel' => 'generate_typography_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_buttons_typography_shortcuts', - array( - 'section' => 'font_buttons_section', - 'element' => __( 'Button', 'gp-premium' ), - 'shortcuts' => array( - 'colors' => 'buttons_color_section', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - if ( isset( $defaults['font_buttons'] ) ) { - $wp_customize->add_setting( - 'generate_settings[font_buttons]', - array( - 'default' => $defaults['font_buttons'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_buttons_category', - array( - 'default' => '', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_buttons_variants', - array( - 'default' => '', - 'sanitize_callback' => 'generate_premium_sanitize_variants', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[buttons_font_weight]', - array( - 'default' => $defaults['buttons_font_weight'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[buttons_font_transform]', - array( - 'default' => $defaults['buttons_font_transform'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Typography_Customize_Control( - $wp_customize, - 'font_buttons_control', - array( - 'section' => 'font_buttons_section', - 'settings' => array( - 'family' => 'generate_settings[font_buttons]', - 'variant' => 'font_buttons_variants', - 'category' => 'font_buttons_category', - 'weight' => 'generate_settings[buttons_font_weight]', - 'transform' => 'generate_settings[buttons_font_transform]', - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[buttons_font_size]', - array( - 'default' => $defaults['buttons_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'buttons_font_sizes', - array( - 'description' => __( 'Font size', 'gp-premium' ), - 'section' => 'font_buttons_section', - 'settings' => array( - 'desktop' => 'generate_settings[buttons_font_size]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 5, - 'max' => 100, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - } - - $wp_customize->add_section( - 'font_content_section', - array( - 'title' => __( 'Headings', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'description' => '', - 'priority' => 60, - 'panel' => 'generate_typography_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_headings_typography_shortcuts', - array( - 'section' => 'font_content_section', - 'element' => __( 'Content', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'generate_layout_container', - 'colors' => 'content_color_section', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[font_heading_1]', - array( - 'default' => $defaults['font_heading_1'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_heading_1_category', - array( - 'default' => '', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_heading_1_variants', - array( - 'default' => '', - 'sanitize_callback' => 'generate_premium_sanitize_variants', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_1_weight]', - array( - 'default' => $defaults['heading_1_weight'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_1_transform]', - array( - 'default' => $defaults['heading_1_transform'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Typography_Customize_Control( - $wp_customize, - 'font_heading_1_control', - array( - 'label' => __( 'Heading 1 (H1)', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'family' => 'generate_settings[font_heading_1]', - 'variant' => 'font_heading_1_variants', - 'category' => 'font_heading_1_category', - 'weight' => 'generate_settings[heading_1_weight]', - 'transform' => 'generate_settings[heading_1_transform]', - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_1_font_size]', - array( - 'default' => $defaults['heading_1_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[mobile_heading_1_font_size]', - array( - 'default' => $defaults['mobile_heading_1_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'h1_font_sizes', - array( - 'description' => __( 'Font size', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'desktop' => 'generate_settings[heading_1_font_size]', - 'mobile' => 'generate_settings[mobile_heading_1_font_size]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 15, - 'max' => 100, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - 'mobile' => array( - 'min' => 15, - 'max' => 100, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - - if ( isset( $defaults['heading_1_line_height'] ) ) { - $wp_customize->add_setting( - 'generate_settings[heading_1_line_height]', - array( - 'default' => $defaults['heading_1_line_height'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_decimal_integer', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[heading_1_line_height]', - array( - 'description' => __( 'Line height', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'desktop' => 'generate_settings[heading_1_line_height]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 5, - 'step' => .1, - 'edit' => true, - 'unit' => 'em', - ), - ), - ) - ) - ); - } - - if ( isset( $defaults['heading_1_margin_bottom'] ) ) { - $wp_customize->add_setting( - 'generate_settings[heading_1_margin_bottom]', - array( - 'default' => $defaults['heading_1_margin_bottom'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_decimal_integer', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[heading_1_margin_bottom]', - array( - 'description' => __( 'Bottom margin', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'desktop' => 'generate_settings[heading_1_margin_bottom]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 100, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - } - - $wp_customize->add_setting( - 'generate_settings[single_post_title_weight]', - array( - 'default' => $defaults['single_post_title_weight'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[single_post_title_transform]', - array( - 'default' => $defaults['single_post_title_transform'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Typography_Customize_Control( - $wp_customize, - 'single_content_title_control', - array( - 'label' => __( 'Single Content Title (H1)', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'weight' => 'generate_settings[single_post_title_weight]', - 'transform' => 'generate_settings[single_post_title_transform]', - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[single_post_title_font_size]', - array( - 'default' => $defaults['single_post_title_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[single_post_title_font_size_mobile]', - array( - 'default' => $defaults['single_post_title_font_size_mobile'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'single_post_title_font_sizes', - array( - 'description' => __( 'Font size', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'desktop' => 'generate_settings[single_post_title_font_size]', - 'mobile' => 'generate_settings[single_post_title_font_size_mobile]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 15, - 'max' => 100, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - 'mobile' => array( - 'min' => 15, - 'max' => 100, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[single_post_title_line_height]', - array( - 'default' => $defaults['single_post_title_line_height'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_decimal_integer_empty', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[single_post_title_line_height]', - array( - 'description' => __( 'Line height', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'desktop' => 'generate_settings[single_post_title_line_height]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 5, - 'step' => .1, - 'edit' => true, - 'unit' => 'em', - ), - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[font_heading_2]', - array( - 'default' => $defaults['font_heading_2'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_heading_2_category', - array( - 'default' => '', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_heading_2_variants', - array( - 'default' => '', - 'sanitize_callback' => 'generate_premium_sanitize_variants', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_2_weight]', - array( - 'default' => $defaults['heading_2_weight'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_2_transform]', - array( - 'default' => $defaults['heading_2_transform'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Typography_Customize_Control( - $wp_customize, - 'font_heading_2_control', - array( - 'label' => __( 'Heading 2 (H2)', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'family' => 'generate_settings[font_heading_2]', - 'variant' => 'font_heading_2_variants', - 'category' => 'font_heading_2_category', - 'weight' => 'generate_settings[heading_2_weight]', - 'transform' => 'generate_settings[heading_2_transform]', - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_2_font_size]', - array( - 'default' => $defaults['heading_2_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[mobile_heading_2_font_size]', - array( - 'default' => $defaults['mobile_heading_2_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'h2_font_sizes', - array( - 'description' => __( 'Font size', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'desktop' => 'generate_settings[heading_2_font_size]', - 'mobile' => 'generate_settings[mobile_heading_2_font_size]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 10, - 'max' => 80, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - 'mobile' => array( - 'min' => 10, - 'max' => 80, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - - if ( isset( $defaults['heading_2_line_height'] ) ) { - $wp_customize->add_setting( - 'generate_settings[heading_2_line_height]', - array( - 'default' => $defaults['heading_2_line_height'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_decimal_integer', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[heading_2_line_height]', - array( - 'description' => __( 'Line height', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'desktop' => 'generate_settings[heading_2_line_height]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 5, - 'step' => .1, - 'edit' => true, - 'unit' => 'em', - ), - ), - ) - ) - ); - } - - if ( isset( $defaults['heading_2_margin_bottom'] ) ) { - $wp_customize->add_setting( - 'generate_settings[heading_2_margin_bottom]', - array( - 'default' => $defaults['heading_2_margin_bottom'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_decimal_integer', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[heading_2_margin_bottom]', - array( - 'description' => __( 'Bottom margin', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'desktop' => 'generate_settings[heading_2_margin_bottom]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 100, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - } - - $wp_customize->add_setting( - 'generate_settings[archive_post_title_weight]', - array( - 'default' => $defaults['archive_post_title_weight'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[archive_post_title_transform]', - array( - 'default' => $defaults['archive_post_title_transform'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Typography_Customize_Control( - $wp_customize, - 'archive_content_title_control', - array( - 'label' => __( 'Archive Content Title (H2)', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'weight' => 'generate_settings[archive_post_title_weight]', - 'transform' => 'generate_settings[archive_post_title_transform]', - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[archive_post_title_font_size]', - array( - 'default' => $defaults['archive_post_title_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[archive_post_title_font_size_mobile]', - array( - 'default' => $defaults['archive_post_title_font_size_mobile'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'archive_post_title_font_sizes', - array( - 'description' => __( 'Font size', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'desktop' => 'generate_settings[archive_post_title_font_size]', - 'mobile' => 'generate_settings[archive_post_title_font_size_mobile]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 15, - 'max' => 100, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - 'mobile' => array( - 'min' => 15, - 'max' => 100, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[archive_post_title_line_height]', - array( - 'default' => $defaults['archive_post_title_line_height'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_decimal_integer_empty', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[archive_post_title_line_height]', - array( - 'description' => __( 'Line height', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'desktop' => 'generate_settings[archive_post_title_line_height]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 5, - 'step' => .1, - 'edit' => true, - 'unit' => 'em', - ), - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[font_heading_3]', - array( - 'default' => $defaults['font_heading_3'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_heading_3_category', - array( - 'default' => '', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_heading_3_variants', - array( - 'default' => '', - 'sanitize_callback' => 'generate_premium_sanitize_variants', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_3_weight]', - array( - 'default' => $defaults['heading_3_weight'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_3_transform]', - array( - 'default' => $defaults['heading_3_transform'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Typography_Customize_Control( - $wp_customize, - 'font_heading_3_control', - array( - 'label' => __( 'Heading 3 (H3)', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'family' => 'generate_settings[font_heading_3]', - 'variant' => 'font_heading_3_variants', - 'category' => 'font_heading_3_category', - 'weight' => 'generate_settings[heading_3_weight]', - 'transform' => 'generate_settings[heading_3_transform]', - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_3_font_size]', - array( - 'default' => $defaults['heading_3_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $h3_font_size_options = array( - 'desktop' => array( - 'min' => 10, - 'max' => 80, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ); - - $h3_font_size_settings = array( - 'desktop' => 'generate_settings[heading_3_font_size]', - ); - - if ( isset( $defaults['mobile_heading_3_font_size'] ) ) { - $wp_customize->add_setting( - 'generate_settings[mobile_heading_3_font_size]', - array( - 'default' => $defaults['mobile_heading_3_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) - ); - - $h3_font_size_options['mobile'] = array( - 'min' => 10, - 'max' => 80, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ); - - $h3_font_size_settings['mobile'] = 'generate_settings[mobile_heading_3_font_size]'; - } - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'h3_font_sizes', - array( - 'description' => __( 'Font size', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => $h3_font_size_settings, - 'choices' => $h3_font_size_options, - ) - ) - ); - - if ( isset( $defaults['heading_3_line_height'] ) ) { - $wp_customize->add_setting( - 'generate_settings[heading_3_line_height]', - array( - 'default' => $defaults['heading_3_line_height'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_decimal_integer', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[heading_3_line_height]', - array( - 'description' => __( 'Line height', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'desktop' => 'generate_settings[heading_3_line_height]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 5, - 'step' => .1, - 'edit' => true, - 'unit' => 'em', - ), - ), - ) - ) - ); - } - - if ( isset( $defaults['heading_3_margin_bottom'] ) ) { - $wp_customize->add_setting( - 'generate_settings[heading_3_margin_bottom]', - array( - 'default' => $defaults['heading_3_margin_bottom'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_decimal_integer', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[heading_3_margin_bottom]', - array( - 'description' => __( 'Bottom margin', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'desktop' => 'generate_settings[heading_3_margin_bottom]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 100, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - } - - if ( isset( $defaults['font_heading_4'] ) ) { - $wp_customize->add_setting( - 'generate_settings[font_heading_4]', - array( - 'default' => $defaults['font_heading_4'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_heading_4_category', - array( - 'default' => '', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_heading_4_variants', - array( - 'default' => '', - 'sanitize_callback' => 'generate_premium_sanitize_variants', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_4_weight]', - array( - 'default' => $defaults['heading_4_weight'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_4_transform]', - array( - 'default' => $defaults['heading_4_transform'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Typography_Customize_Control( - $wp_customize, - 'font_heading_4_control', - array( - 'label' => __( 'Heading 4 (H4)', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'family' => 'generate_settings[font_heading_4]', - 'variant' => 'font_heading_4_variants', - 'category' => 'font_heading_4_category', - 'weight' => 'generate_settings[heading_4_weight]', - 'transform' => 'generate_settings[heading_4_transform]', - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_4_font_size]', - array( - 'default' => $defaults['heading_4_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) - ); - - $h4_font_size_options = array( - 'desktop' => array( - 'min' => 10, - 'max' => 80, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ); - - $h4_font_size_settings = array( - 'desktop' => 'generate_settings[heading_4_font_size]', - ); - - if ( isset( $defaults['mobile_heading_4_font_size'] ) ) { - $wp_customize->add_setting( - 'generate_settings[mobile_heading_4_font_size]', - array( - 'default' => $defaults['mobile_heading_4_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) - ); - - $h4_font_size_options['mobile'] = array( - 'min' => 10, - 'max' => 80, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ); - - $h4_font_size_settings['mobile'] = 'generate_settings[mobile_heading_4_font_size]'; - } - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'h4_font_sizes', - array( - 'description' => __( 'Font size', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => $h4_font_size_settings, - 'choices' => $h4_font_size_options, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_4_line_height]', - array( - 'default' => $defaults['heading_4_line_height'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_decimal_integer_empty', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[heading_4_line_height]', - array( - 'description' => __( 'Line height', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'desktop' => 'generate_settings[heading_4_line_height]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 5, - 'step' => .1, - 'edit' => true, - 'unit' => 'em', - ), - ), - ) - ) - ); - } - - if ( isset( $defaults['font_heading_5'] ) ) { - $wp_customize->add_setting( - 'generate_settings[font_heading_5]', - array( - 'default' => $defaults['font_heading_5'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_heading_5_category', - array( - 'default' => '', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_heading_5_variants', - array( - 'default' => '', - 'sanitize_callback' => 'generate_premium_sanitize_variants', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_5_weight]', - array( - 'default' => $defaults['heading_5_weight'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_5_transform]', - array( - 'default' => $defaults['heading_5_transform'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Typography_Customize_Control( - $wp_customize, - 'font_heading_5_control', - array( - 'label' => __( 'Heading 5 (H5)', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'family' => 'generate_settings[font_heading_5]', - 'variant' => 'font_heading_5_variants', - 'category' => 'font_heading_5_category', - 'weight' => 'generate_settings[heading_5_weight]', - 'transform' => 'generate_settings[heading_5_transform]', - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_5_font_size]', - array( - 'default' => $defaults['heading_5_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) - ); - - $h5_font_size_options = array( - 'desktop' => array( - 'min' => 10, - 'max' => 80, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ); - - $h5_font_size_settings = array( - 'desktop' => 'generate_settings[heading_5_font_size]', - ); - - if ( isset( $defaults['mobile_heading_5_font_size'] ) ) { - $wp_customize->add_setting( - 'generate_settings[mobile_heading_5_font_size]', - array( - 'default' => $defaults['mobile_heading_5_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) - ); - - $h5_font_size_options['mobile'] = array( - 'min' => 10, - 'max' => 80, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ); - - $h5_font_size_settings['mobile'] = 'generate_settings[mobile_heading_5_font_size]'; - } - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'h5_font_sizes', - array( - 'description' => __( 'Font size', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => $h5_font_size_settings, - 'choices' => $h5_font_size_options, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_5_line_height]', - array( - 'default' => $defaults['heading_5_line_height'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_decimal_integer_empty', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[heading_5_line_height]', - array( - 'description' => __( 'Line height', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'desktop' => 'generate_settings[heading_5_line_height]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 5, - 'step' => .1, - 'edit' => true, - 'unit' => 'em', - ), - ), - ) - ) - ); - } - - if ( isset( $defaults['font_heading_6'] ) ) { - $wp_customize->add_setting( - 'generate_settings[font_heading_6]', - array( - 'default' => $defaults['font_heading_6'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_heading_6_category', - array( - 'default' => '', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_heading_6_variants', - array( - 'default' => '', - 'sanitize_callback' => 'generate_premium_sanitize_variants', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_6_weight]', - array( - 'default' => $defaults['heading_6_weight'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_6_transform]', - array( - 'default' => $defaults['heading_6_transform'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Typography_Customize_Control( - $wp_customize, - 'font_heading_6_control', - array( - 'label' => __( 'Heading 6 (H6)', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'family' => 'generate_settings[font_heading_6]', - 'variant' => 'font_heading_6_variants', - 'category' => 'font_heading_6_category', - 'weight' => 'generate_settings[heading_6_weight]', - 'transform' => 'generate_settings[heading_6_transform]', - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_6_font_size]', - array( - 'default' => $defaults['heading_6_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'h6_font_sizes', - array( - 'description' => __( 'Font size', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'desktop' => 'generate_settings[heading_6_font_size]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 10, - 'max' => 80, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[heading_6_line_height]', - array( - 'default' => $defaults['heading_6_line_height'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_decimal_integer_empty', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[heading_6_line_height]', - array( - 'description' => __( 'Line height', 'gp-premium' ), - 'section' => 'font_content_section', - 'settings' => array( - 'desktop' => 'generate_settings[heading_6_line_height]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 5, - 'step' => .1, - 'edit' => true, - 'unit' => 'em', - ), - ), - ) - ) - ); - } - - $wp_customize->add_section( - 'font_widget_section', - array( - 'title' => __( 'Widgets', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'description' => '', - 'priority' => 60, - 'panel' => 'generate_typography_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_widgets_typography_shortcuts', - array( - 'section' => 'font_widget_section', - 'element' => __( 'Widgets', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'generate_layout_sidebars', - 'colors' => 'sidebar_widget_color_section', - 'backgrounds' => 'generate_backgrounds_sidebars', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[font_widget_title]', - array( - 'default' => $defaults['font_widget_title'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_widget_title_category', - array( - 'default' => '', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_widget_title_variants', - array( - 'default' => '', - 'sanitize_callback' => 'generate_premium_sanitize_variants', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[widget_title_font_weight]', - array( - 'default' => $defaults['widget_title_font_weight'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[widget_title_font_transform]', - array( - 'default' => $defaults['widget_title_font_transform'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Typography_Customize_Control( - $wp_customize, - 'google_font_widget_title_control', - array( - 'label' => __( 'Widget Titles', 'gp-premium' ), - 'section' => 'font_widget_section', - 'settings' => array( - 'family' => 'generate_settings[font_widget_title]', - 'variant' => 'font_widget_title_variants', - 'category' => 'font_widget_title_category', - 'weight' => 'generate_settings[widget_title_font_weight]', - 'transform' => 'generate_settings[widget_title_font_transform]', - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[widget_title_font_size]', - array( - 'default' => $defaults['widget_title_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[widget_title_font_size]', - array( - 'description' => __( 'Font size', 'gp-premium' ), - 'section' => 'font_widget_section', - 'settings' => array( - 'desktop' => 'generate_settings[widget_title_font_size]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 6, - 'max' => 30, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - - if ( isset( $defaults['widget_title_separator'] ) ) { - $wp_customize->add_setting( - 'generate_settings[widget_title_separator]', - array( - 'default' => $defaults['widget_title_separator'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[widget_title_separator]', - array( - 'description' => __( 'Bottom margin', 'gp-premium' ), - 'section' => 'font_widget_section', - 'settings' => array( - 'desktop' => 'generate_settings[widget_title_separator]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 100, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - } - - $wp_customize->add_setting( - 'generate_settings[widget_content_font_size]', - array( - 'default' => $defaults['widget_content_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[widget_content_font_size]', - array( - 'description' => __( 'Content font size', 'gp-premium' ), - 'section' => 'font_widget_section', - 'priority' => 240, - 'settings' => array( - 'desktop' => 'generate_settings[widget_content_font_size]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 6, - 'max' => 30, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - - $wp_customize->add_section( - 'font_footer_section', - array( - 'title' => __( 'Footer', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'description' => '', - 'priority' => 70, - 'panel' => 'generate_typography_panel', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_footer_typography_shortcuts', - array( - 'section' => 'font_footer_section', - 'element' => __( 'Footer', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'generate_layout_footer', - 'colors' => 'footer_color_section', - 'backgrounds' => 'generate_backgrounds_footer', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - if ( isset( $defaults['font_footer'] ) ) { - $wp_customize->add_setting( - 'generate_settings[font_footer]', - array( - 'default' => $defaults['font_footer'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_footer_category', - array( - 'default' => '', - 'sanitize_callback' => 'sanitize_text_field', - ) - ); - - $wp_customize->add_setting( - 'font_footer_variants', - array( - 'default' => '', - 'sanitize_callback' => 'generate_premium_sanitize_variants', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[footer_weight]', - array( - 'default' => $defaults['footer_weight'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_setting( - 'generate_settings[footer_transform]', - array( - 'default' => $defaults['footer_transform'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Typography_Customize_Control( - $wp_customize, - 'font_footer_control', - array( - 'section' => 'font_footer_section', - 'settings' => array( - 'family' => 'generate_settings[font_footer]', - 'variant' => 'font_footer_variants', - 'category' => 'font_footer_category', - 'weight' => 'generate_settings[footer_weight]', - 'transform' => 'generate_settings[footer_transform]', - ), - ) - ) - ); - } - - $wp_customize->add_setting( - 'generate_settings[footer_font_size]', - array( - 'default' => $defaults['footer_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[footer_font_size]', - array( - 'description' => __( 'Font size', 'gp-premium' ), - 'section' => 'font_footer_section', - 'settings' => array( - 'desktop' => 'generate_settings[footer_font_size]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 6, - 'max' => 30, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - } -} - -if ( ! function_exists( 'generate_enqueue_google_fonts' ) ) { - add_action( 'wp_enqueue_scripts', 'generate_enqueue_google_fonts', 0 ); - /** - * Enqueue Google Fonts. - * - * @since 0.1 - */ - function generate_enqueue_google_fonts() { - // Bail if we don't have our defaults function. - if ( ! function_exists( 'generate_get_default_fonts' ) ) { - return; - } - - $generate_settings = wp_parse_args( - get_option( 'generate_settings', array() ), - generate_get_default_fonts() - ); - - // List our non-Google fonts. - $not_google = str_replace( ' ', '+', generate_typography_default_fonts() ); - - // Grab our font family settings. - $font_settings = array( - 'font_body', - 'font_top_bar', - 'font_site_title', - 'font_site_tagline', - 'font_navigation', - 'font_widget_title', - 'font_buttons', - 'font_heading_1', - 'font_heading_2', - 'font_heading_3', - 'font_heading_4', - 'font_heading_5', - 'font_heading_6', - 'font_footer', - ); - - // Create our Google Fonts array. - $google_fonts = array(); - if ( ! empty( $font_settings ) ) { - foreach ( $font_settings as $key ) { - // If the key isn't set, move on. - if ( ! isset( $generate_settings[ $key ] ) ) { - continue; - } - - // If our value is still using the old format, fix it. - if ( strpos( $generate_settings[ $key ], ':' ) !== false ) { - $generate_settings[ $key ] = current( explode( ':', $generate_settings[ $key ] ) ); - } - - // Replace the spaces in the names with a plus. - $value = str_replace( ' ', '+', $generate_settings[ $key ] ); - - // Grab the variants using the plain name. - $variants = generate_get_google_font_variants( $generate_settings[ $key ], $key, generate_get_default_fonts() ); - - // If we have variants, add them to our value. - $value = ! empty( $variants ) ? $value . ':' . $variants : $value; - - // Make sure we don't add the same font twice. - if ( ! in_array( $value, $google_fonts ) ) { - $google_fonts[] = $value; - } - } - } - - // Ignore any non-Google fonts. - $google_fonts = array_diff( $google_fonts, $not_google ); - - // Separate each different font with a bar. - $google_fonts = implode( '|', $google_fonts ); - - // Apply a filter to the output. - $google_fonts = apply_filters( 'generate_typography_google_fonts', $google_fonts ); - - // Get the subset. - $subset = apply_filters( 'generate_fonts_subset', '' ); - - // Set up our arguments. - $font_args = array(); - $font_args['family'] = $google_fonts; - if ( '' !== $subset ) { - $font_args['subset'] = urlencode( $subset ); // phpcs:ignore -- Keeping legacy urlencode(). - } - - $display = apply_filters( 'generate_google_font_display', '' ); - - if ( $display ) { - $font_args['display'] = $display; - } - - // Create our URL using the arguments. - $fonts_url = add_query_arg( $font_args, '//fonts.googleapis.com/css' ); - - // Enqueue our fonts. - if ( $google_fonts ) { - wp_enqueue_style( 'generate-fonts', $fonts_url, array(), null, 'all' ); // phpcs:ignore -- Version not needed. - } - } -} - -if ( ! function_exists( 'generate_get_all_google_fonts' ) ) { - /** - * Return an array of all of our Google Fonts. - * - * @since 1.3.0 - * @param string $amount The number of fonts to load. - */ - function generate_get_all_google_fonts( $amount = 'all' ) { - ob_start(); - include wp_normalize_path( dirname( __FILE__ ) . '/google-fonts.json' ); // phpcs:ignore WPThemeReview.CoreFunctionality.FileInclude - $fonts_json = ob_get_clean(); - $google_fonts = json_decode( $fonts_json ); - - // Loop through them and put what we need into our fonts array. - $fonts = array(); - foreach ( (array) $google_fonts as $item ) { - - // Grab what we need from our big list. - $atts = array( - 'name' => $item->family, - 'category' => $item->category, - 'variants' => $item->variants, - ); - - // Create an ID using our font family name. - $id = strtolower( str_replace( ' ', '_', $item->family ) ); - - // Add our attributes to our new array. - $fonts[ $id ] = $atts; - } - - if ( 'all' !== $amount ) { - $fonts = array_slice( $fonts, 0, $amount ); - } - - // Alphabetize our fonts. - if ( apply_filters( 'generate_alphabetize_google_fonts', true ) ) { - asort( $fonts ); - } - - // Filter to allow us to modify the fonts array. - return apply_filters( 'generate_google_fonts_array', $fonts ); - } -} - -if ( ! function_exists( 'generate_get_all_google_fonts_ajax' ) ) { - add_action( 'wp_ajax_generate_get_all_google_fonts_ajax', 'generate_get_all_google_fonts_ajax' ); - /** - * Return an array of all of our Google Fonts. - * - * @since 1.3.0 - */ - function generate_get_all_google_fonts_ajax() { - // Bail if the nonce doesn't check out. - if ( ! isset( $_POST['gp_customize_nonce'] ) || ! wp_verify_nonce( $_POST['gp_customize_nonce'], 'gp_customize_nonce' ) ) { - wp_die(); - } - - // Do another nonce check. - check_ajax_referer( 'gp_customize_nonce', 'gp_customize_nonce' ); - - // Bail if user can't edit theme options. - if ( ! current_user_can( 'edit_theme_options' ) ) { - wp_die(); - } - - // Get all of our fonts. - $fonts = apply_filters( 'generate_typography_customize_list', generate_get_all_google_fonts() ); - - // Send all of our fonts in JSON format. - echo wp_json_encode( $fonts ); - - die(); - } -} - -if ( ! function_exists( 'generate_get_google_font_variants' ) ) { - /** - * Wrapper function to find variants for chosen Google Fonts - * Example: generate_get_google_font_variation( 'Open Sans' ) - * - * @since 1.3.0 - * @param string $font The font we're checking. - * @param string $key The key we're checking. - * @param array $default The defaults we're checking. - */ - function generate_get_google_font_variants( $font, $key = '', $default = '' ) { - // Bail if we don't have our defaults function. - if ( ! function_exists( 'generate_get_default_fonts' ) ) { - return; - } - - // Don't need variants if we're using a system font. - if ( in_array( $font, generate_typography_default_fonts() ) ) { - return; - } - - // Return if we have our variants saved. - if ( '' !== $key && get_theme_mod( $key . '_variants' ) ) { - return get_theme_mod( $key . '_variants' ); - } - - // Make sure we have defaults. - if ( '' == $default ) { // phpcs:ignore -- Non-strict allowed. - $default = generate_get_default_fonts(); - } - - // If our default font is selected and the category isn't saved, we already know the category. - if ( $default[ $key ] == $font ) { // phpcs:ignore -- Non-strict allowed. - return $default[ $key . '_variants' ]; - } - - // Grab all of our fonts. - // It's a big list, so hopefully we're not even still reading. - $fonts = generate_get_all_google_fonts(); - - // Get the ID from our font. - $id = strtolower( str_replace( ' ', '_', $font ) ); - - // If the ID doesn't exist within our fonts, we can bail. - if ( ! array_key_exists( $id, $fonts ) ) { - return; - } - - // Grab all of the variants associated with our font. - $variants = $fonts[ $id ]['variants']; - - // Loop through them and put them into an array, then turn them into a comma separated list. - $output = array(); - if ( $variants ) { - foreach ( $variants as $variant ) { - $output[] = $variant; - } - - return implode( ',', apply_filters( 'generate_typography_variants', $output ) ); - } - } -} - -if ( ! function_exists( 'generate_get_google_font_category' ) ) { - /** - * Wrapper function to find the category for chosen Google Font - * Example: generate_get_google_font_category( 'Open Sans' ) - * - * @since 1.3.0 - * @param string $font The font we're checking. - * @param string $key The key we're checking. - * @param array $default The defaults we're checking. - */ - function generate_get_google_font_category( $font, $key = '', $default = '' ) { - // Bail if we don't have our defaults function. - if ( ! function_exists( 'generate_get_default_fonts' ) ) { - return; - } - - // Don't need a category if we're using a system font. - if ( in_array( $font, generate_typography_default_fonts() ) ) { - return; - } - - // Return if we have our variants saved. - if ( '' !== $key && get_theme_mod( $key . '_category' ) ) { - return ', ' . get_theme_mod( $key . '_category' ); - } - - // Make sure we have defaults. - if ( '' == $default ) { // phpcs:ignore -- Non-strict allowed. - $default = generate_get_default_fonts(); - } - - // If our default font is selected and the category isn't saved, we already know the category. - if ( $default[ $key ] == $font ) { // phpcs:ignore -- Non-strict allowed. - return ', ' . $default[ $key . '_category' ]; - } - - // Get all of our fonts. - // It's a big list, so hopefully we're not even still reading. - $fonts = generate_get_all_google_fonts(); - - // Get the ID from our font. - $id = strtolower( str_replace( ' ', '_', $font ) ); - - // If the ID doesn't exist within our fonts, we can bail. - if ( ! array_key_exists( $id, $fonts ) ) { - return; - } - - // Let's grab our category to go with our font. - $category = ! empty( $fonts[ $id ]['category'] ) ? ', ' . $fonts[ $id ]['category'] : ''; - - // Return it to be used by our function. - return $category; - - } -} - -if ( ! function_exists( 'generate_get_font_family_css' ) ) { - /** - * Wrapper function to create font-family value for CSS. - * - * @since 1.3.0 - * @param string $font The font we're checking. - * @param array $settings The settings we're checking. - * @param array $default The defaults we're checking. - */ - function generate_get_font_family_css( $font, $settings, $default ) { - $generate_settings = wp_parse_args( - get_option( $settings, array() ), - $default - ); - - // We don't want to wrap quotes around these values. - $no_quotes = array( - 'inherit', - 'Arial, Helvetica, sans-serif', - 'Georgia, Times New Roman, Times, serif', - 'Helvetica', - 'Impact', - 'Segoe UI, Helvetica Neue, Helvetica, sans-serif', - 'Tahoma, Geneva, sans-serif', - 'Trebuchet MS, Helvetica, sans-serif', - 'Verdana, Geneva, sans-serif', - apply_filters( 'generate_typography_system_stack', '-apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"' ), - ); - - // Get our font. - $font_family = $generate_settings[ $font ]; - - if ( 'System Stack' === $font_family ) { - $font_family = apply_filters( 'generate_typography_system_stack', '-apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"' ); - } - - // If our value is still using the old format, fix it. - if ( strpos( $font_family, ':' ) !== false ) { - $font_family = current( explode( ':', $font_family ) ); - } - - // Set up our wrapper. - if ( in_array( $font_family, $no_quotes ) ) { - $wrapper_start = null; - $wrapper_end = null; - } else { - $wrapper_start = '"'; - $wrapper_end = '"' . generate_get_google_font_category( $font_family, $font, $default ); - } - - // Output the CSS. - $output = ( 'inherit' === $font_family ) ? 'inherit' : $wrapper_start . $font_family . $wrapper_end; - return $output; - } -} - -if ( ! function_exists( 'generate_typography_customizer_live_preview' ) ) { - add_action( 'customize_preview_init', 'generate_typography_customizer_live_preview' ); - /** - * Add our live preview JS - */ - function generate_typography_customizer_live_preview() { - wp_enqueue_script( - 'generate-typography-customizer', - trailingslashit( plugin_dir_url( __FILE__ ) ) . 'js/customizer.js', - array( 'jquery', 'customize-preview' ), - GENERATE_FONT_VERSION, - true - ); - - wp_localize_script( - 'generate-typography-customizer', - 'gp_typography', - array( - 'mobile' => generate_premium_get_media_query( 'mobile' ), - 'tablet' => generate_premium_get_media_query( 'tablet' ), - 'desktop' => generate_premium_get_media_query( 'desktop' ), - ) - ); - } -} - -if ( ! function_exists( 'generate_typography_default_fonts' ) ) { - /** - * Get our system fonts - */ - function generate_typography_default_fonts() { - $fonts = array( - 'inherit', - 'System Stack', - 'Arial, Helvetica, sans-serif', - 'Century Gothic', - 'Comic Sans MS', - 'Courier New', - 'Georgia, Times New Roman, Times, serif', - 'Helvetica', - 'Impact', - 'Lucida Console', - 'Lucida Sans Unicode', - 'Palatino Linotype', - 'Segoe UI, Helvetica Neue, Helvetica, sans-serif', - 'Tahoma, Geneva, sans-serif', - 'Trebuchet MS, Helvetica, sans-serif', - 'Verdana, Geneva, sans-serif', - ); - - return apply_filters( 'generate_typography_default_fonts', $fonts ); - } -} - -if ( ! function_exists( 'generate_include_typography_defaults' ) ) { - /** - * Check if we should include our default.css file. - * - * @since 1.3.42 - */ - function generate_include_typography_defaults() { - return true; - } -} - -if ( ! function_exists( 'generate_typography_premium_css_defaults' ) ) { - add_filter( 'generate_font_option_defaults', 'generate_typography_premium_css_defaults' ); - /** - * Add premium control defaults - * - * @since 1.3 - * @param array $defaults The existing defaults. - */ - function generate_typography_premium_css_defaults( $defaults ) { - $defaults['tablet_site_title_font_size'] = ''; - $defaults['tablet_navigation_font_size'] = ''; - $defaults['mobile_navigation_font_size'] = ''; - - $defaults['single_post_title_weight'] = ''; - $defaults['single_post_title_transform'] = ''; - $defaults['single_post_title_font_size'] = ''; - $defaults['single_post_title_font_size_mobile'] = ''; - $defaults['single_post_title_line_height'] = ''; - - $defaults['archive_post_title_weight'] = ''; - $defaults['archive_post_title_transform'] = ''; - $defaults['archive_post_title_font_size'] = ''; - $defaults['archive_post_title_font_size_mobile'] = ''; - $defaults['archive_post_title_line_height'] = ''; - - return $defaults; - } -} - -/** - * Premium typography CSS output. - */ -function generate_typography_get_premium_css() { - if ( ! function_exists( 'generate_get_default_fonts' ) ) { - return; - } - - $generate_settings = wp_parse_args( - get_option( 'generate_settings', array() ), - generate_get_default_fonts() - ); - - // Initiate our CSS class. - require_once GP_LIBRARY_DIRECTORY . 'class-make-css.php'; - - $premium_css = new GeneratePress_Pro_CSS(); - - $site_title_family = false; - if ( function_exists( 'generate_get_font_family_css' ) ) { - $site_title_family = generate_get_font_family_css( 'font_site_title', 'generate_settings', generate_get_default_fonts() ); - } - - $premium_css->set_selector( 'h1.entry-title' ); - $premium_css->add_property( 'font-weight', esc_attr( $generate_settings['single_post_title_weight'] ) ); - $premium_css->add_property( 'text-transform', esc_attr( $generate_settings['single_post_title_transform'] ) ); - - if ( '' !== $generate_settings['single_post_title_font_size'] ) { - $premium_css->add_property( 'font-size', absint( $generate_settings['single_post_title_font_size'] ), false, 'px' ); - } - - if ( '' !== $generate_settings['single_post_title_line_height'] ) { - $premium_css->add_property( 'line-height', floatval( $generate_settings['single_post_title_line_height'] ), false, 'em' ); - } - - $premium_css->set_selector( 'h2.entry-title' ); - $premium_css->add_property( 'font-weight', esc_attr( $generate_settings['archive_post_title_weight'] ) ); - $premium_css->add_property( 'text-transform', esc_attr( $generate_settings['archive_post_title_transform'] ) ); - - if ( '' !== $generate_settings['archive_post_title_font_size'] ) { - $premium_css->add_property( 'font-size', absint( $generate_settings['archive_post_title_font_size'] ), false, 'px' ); - } - - if ( '' !== $generate_settings['archive_post_title_line_height'] ) { - $premium_css->add_property( 'line-height', floatval( $generate_settings['archive_post_title_line_height'] ), false, 'em' ); - } - - if ( function_exists( 'generate_menu_plus_get_defaults' ) ) { - $menu_settings = wp_parse_args( - get_option( 'generate_menu_plus_settings', array() ), - generate_menu_plus_get_defaults() - ); - - if ( $menu_settings['navigation_as_header'] || $menu_settings['sticky_navigation_logo'] || 'enable' === $menu_settings['mobile_header'] ) { - $premium_css->set_selector( '.navigation-branding .main-title' ); - $premium_css->add_property( 'font-weight', esc_attr( $generate_settings['site_title_font_weight'] ) ); - $premium_css->add_property( 'text-transform', esc_attr( $generate_settings['site_title_font_transform'] ) ); - $premium_css->add_property( 'font-size', absint( $generate_settings['site_title_font_size'] ), false, 'px' ); - - if ( $site_title_family ) { - $premium_css->add_property( 'font-family', 'inherit' !== $generate_settings['font_site_title'] ? $site_title_family : null ); - } - } - } - - $premium_css->start_media_query( generate_premium_get_media_query( 'tablet' ) ); - - if ( '' !== $generate_settings['tablet_navigation_font_size'] ) { - $premium_css->set_selector( '.main-navigation:not(.slideout-navigation) a, .main-navigation .menu-toggle, .main-navigation .menu-bar-items' ); - $premium_css->add_property( 'font-size', absint( $generate_settings['tablet_navigation_font_size'] ), false, 'px' ); - - $tablet_subnav_font_size = $generate_settings['tablet_navigation_font_size'] - 1; - - if ( $generate_settings['tablet_navigation_font_size'] >= 17 ) { - $tablet_subnav_font_size = $generate_settings['tablet_navigation_font_size'] - 3; - } - - $premium_css->set_selector( '.main-navigation:not(.slideout-navigation) .main-nav ul ul li a' ); - $premium_css->add_property( 'font-size', absint( $tablet_subnav_font_size ), false, 'px' ); - } - - if ( '' !== $generate_settings['tablet_site_title_font_size'] ) { - $premium_css->set_selector( '.main-title, .navigation-branding .main-title' ); - $premium_css->add_property( 'font-size', absint( $generate_settings['tablet_site_title_font_size'] ), false, 'px' ); - } - - $premium_css->stop_media_query(); - - $premium_css->start_media_query( generate_premium_get_media_query( 'mobile' ) ); - - $premium_css->set_selector( 'h1.entry-title' ); - - if ( '' !== $generate_settings['single_post_title_font_size_mobile'] ) { - $premium_css->add_property( 'font-size', absint( $generate_settings['single_post_title_font_size_mobile'] ), false, 'px' ); - } - - $premium_css->set_selector( 'h2.entry-title' ); - - if ( '' !== $generate_settings['archive_post_title_font_size_mobile'] ) { - $premium_css->add_property( 'font-size', absint( $generate_settings['archive_post_title_font_size_mobile'] ), false, 'px' ); - } - - $premium_css->stop_media_query(); - - $premium_css->start_media_query( generate_premium_get_media_query( 'mobile-menu' ) ); - - if ( ! empty( $generate_settings['mobile_navigation_font_size'] ) ) { - $premium_css->set_selector( '.main-navigation:not(.slideout-navigation) a, .main-navigation .menu-toggle, .main-navigation .menu-bar-items' ); - $premium_css->add_property( 'font-size', absint( $generate_settings['mobile_navigation_font_size'] ), false, 'px' ); - - $mobile_subnav_font_size = $generate_settings['mobile_navigation_font_size'] - 1; - - if ( $generate_settings['mobile_navigation_font_size'] >= 17 ) { - $mobile_subnav_font_size = $generate_settings['mobile_navigation_font_size'] - 3; - } - - $premium_css->set_selector( '.main-navigation:not(.slideout-navigation) .main-nav ul ul li a' ); - $premium_css->add_property( 'font-size', absint( $mobile_subnav_font_size ), false, 'px' ); - } - - if ( function_exists( 'generate_menu_plus_get_defaults' ) ) { - $menu_settings = wp_parse_args( - get_option( 'generate_menu_plus_settings', array() ), - generate_menu_plus_get_defaults() - ); - - if ( $menu_settings['navigation_as_header'] || $menu_settings['sticky_navigation_logo'] || 'enable' === $menu_settings['mobile_header'] ) { - if ( ! empty( $generate_settings['mobile_site_title_font_size'] ) ) { - $premium_css->set_selector( '.navigation-branding .main-title' ); - $premium_css->add_property( 'font-size', absint( $generate_settings['mobile_site_title_font_size'] ), false, 'px' ); - } - } - } - - $premium_css->stop_media_query(); - - return $premium_css->css_output(); -} - -if ( ! function_exists( 'generate_typography_premium_css' ) ) { - add_action( 'wp_enqueue_scripts', 'generate_typography_premium_css', 100 ); - /** - * Add premium control CSS - * - * @since 1.3 - */ - function generate_typography_premium_css() { - if ( 'inline' === generate_get_css_print_method() ) { - wp_add_inline_style( 'generate-style', generate_typography_get_premium_css() ); - } - } -} - -add_filter( 'generate_external_dynamic_css_output', 'generate_typography_add_to_external_stylesheet' ); -/** - * Add CSS to the external stylesheet. - * - * @since 1.11.0 - * @param string $css Existing CSS. - */ -function generate_typography_add_to_external_stylesheet( $css ) { - if ( 'inline' === generate_get_css_print_method() ) { - return $css; - } - - $css .= generate_typography_get_premium_css(); - - return $css; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/google-fonts.json b/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/google-fonts.json deleted file mode 100644 index a574abcf..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/google-fonts.json +++ /dev/null @@ -1,6835 +0,0 @@ -[ - { - "family": "Roboto", - "category": "sans-serif", - "variants": [ - "100", - "100italic", - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "700", - "700italic", - "900", - "900italic" - ] - }, - { - "family": "Open Sans", - "category": "sans-serif", - "variants": [ - "300", - "300italic", - "regular", - "italic", - "600", - "600italic", - "700", - "700italic", - "800", - "800italic" - ] - }, - { - "family": "Lato", - "category": "sans-serif", - "variants": [ - "100", - "100italic", - "300", - "300italic", - "regular", - "italic", - "700", - "700italic", - "900", - "900italic" - ] - }, - { - "family": "Slabo 27px", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Oswald", - "category": "sans-serif", - "variants": [ - "200", - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Roboto Condensed", - "category": "sans-serif", - "variants": [ - "300", - "300italic", - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Source Sans Pro", - "category": "sans-serif", - "variants": [ - "200", - "200italic", - "300", - "300italic", - "regular", - "italic", - "600", - "600italic", - "700", - "700italic", - "900", - "900italic" - ] - }, - { - "family": "Montserrat", - "category": "sans-serif", - "variants": [ - "100", - "100italic", - "200", - "200italic", - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "600", - "600italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "Raleway", - "category": "sans-serif", - "variants": [ - "100", - "100italic", - "200", - "200italic", - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "600", - "600italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "PT Sans", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Roboto Slab", - "category": "serif", - "variants": [ - "100", - "300", - "regular", - "700" - ] - }, - { - "family": "Merriweather", - "category": "serif", - "variants": [ - "300", - "300italic", - "regular", - "italic", - "700", - "700italic", - "900", - "900italic" - ] - }, - { - "family": "Open Sans Condensed", - "category": "sans-serif", - "variants": [ - "300", - "300italic", - "700" - ] - }, - { - "family": "Droid Sans", - "category": "sans-serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Lora", - "category": "serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Ubuntu", - "category": "sans-serif", - "variants": [ - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "700", - "700italic" - ] - }, - { - "family": "Droid Serif", - "category": "serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Playfair Display", - "category": "serif", - "variants": [ - "regular", - "italic", - "700", - "700italic", - "900", - "900italic" - ] - }, - { - "family": "Arimo", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Noto Sans", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "PT Serif", - "category": "serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Titillium Web", - "category": "sans-serif", - "variants": [ - "200", - "200italic", - "300", - "300italic", - "regular", - "italic", - "600", - "600italic", - "700", - "700italic", - "900" - ] - }, - { - "family": "PT Sans Narrow", - "category": "sans-serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Muli", - "category": "sans-serif", - "variants": [ - "200", - "200italic", - "300", - "300italic", - "regular", - "italic", - "600", - "600italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "Indie Flower", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Bitter", - "category": "serif", - "variants": [ - "regular", - "italic", - "700" - ] - }, - { - "family": "Poppins", - "category": "sans-serif", - "variants": [ - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Inconsolata", - "category": "monospace", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Dosis", - "category": "sans-serif", - "variants": [ - "200", - "300", - "regular", - "500", - "600", - "700", - "800" - ] - }, - { - "family": "Fjalla One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Oxygen", - "category": "sans-serif", - "variants": [ - "300", - "regular", - "700" - ] - }, - { - "family": "Hind", - "category": "sans-serif", - "variants": [ - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Cabin", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "500", - "500italic", - "600", - "600italic", - "700", - "700italic" - ] - }, - { - "family": "Anton", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Arvo", - "category": "serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Noto Serif", - "category": "serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Crimson Text", - "category": "serif", - "variants": [ - "regular", - "italic", - "600", - "600italic", - "700", - "700italic" - ] - }, - { - "family": "Lobster", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Yanone Kaffeesatz", - "category": "sans-serif", - "variants": [ - "200", - "300", - "regular", - "700" - ] - }, - { - "family": "Nunito", - "category": "sans-serif", - "variants": [ - "200", - "200italic", - "300", - "300italic", - "regular", - "italic", - "600", - "600italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "Bree Serif", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Catamaran", - "category": "sans-serif", - "variants": [ - "100", - "200", - "300", - "regular", - "500", - "600", - "700", - "800", - "900" - ] - }, - { - "family": "Libre Baskerville", - "category": "serif", - "variants": [ - "regular", - "italic", - "700" - ] - }, - { - "family": "Abel", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Josefin Sans", - "category": "sans-serif", - "variants": [ - "100", - "100italic", - "300", - "300italic", - "regular", - "italic", - "600", - "600italic", - "700", - "700italic" - ] - }, - { - "family": "Fira Sans", - "category": "sans-serif", - "variants": [ - "100", - "100italic", - "200", - "200italic", - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "600", - "600italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "Gloria Hallelujah", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Abril Fatface", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Exo 2", - "category": "sans-serif", - "variants": [ - "100", - "100italic", - "200", - "200italic", - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "600", - "600italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "Merriweather Sans", - "category": "sans-serif", - "variants": [ - "300", - "300italic", - "regular", - "italic", - "700", - "700italic", - "800", - "800italic" - ] - }, - { - "family": "Pacifico", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Roboto Mono", - "category": "monospace", - "variants": [ - "100", - "100italic", - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "700", - "700italic" - ] - }, - { - "family": "Varela Round", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Asap", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "500", - "500italic", - "700", - "700italic" - ] - }, - { - "family": "Amatic SC", - "category": "handwriting", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Quicksand", - "category": "sans-serif", - "variants": [ - "300", - "regular", - "500", - "700" - ] - }, - { - "family": "Karla", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Ubuntu Condensed", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Signika", - "category": "sans-serif", - "variants": [ - "300", - "regular", - "600", - "700" - ] - }, - { - "family": "Alegreya", - "category": "serif", - "variants": [ - "regular", - "italic", - "700", - "700italic", - "900", - "900italic" - ] - }, - { - "family": "Questrial", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Rubik", - "category": "sans-serif", - "variants": [ - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "700", - "700italic", - "900", - "900italic" - ] - }, - { - "family": "Shadows Into Light", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "PT Sans Caption", - "category": "sans-serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Archivo Narrow", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Play", - "category": "sans-serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Cuprum", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Dancing Script", - "category": "handwriting", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Rokkitt", - "category": "serif", - "variants": [ - "100", - "200", - "300", - "regular", - "500", - "600", - "700", - "800", - "900" - ] - }, - { - "family": "Work Sans", - "category": "sans-serif", - "variants": [ - "100", - "200", - "300", - "regular", - "500", - "600", - "700", - "800", - "900" - ] - }, - { - "family": "Francois One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Vollkorn", - "category": "serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Source Code Pro", - "category": "monospace", - "variants": [ - "200", - "300", - "regular", - "500", - "600", - "700", - "900" - ] - }, - { - "family": "Exo", - "category": "sans-serif", - "variants": [ - "100", - "100italic", - "200", - "200italic", - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "600", - "600italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "Maven Pro", - "category": "sans-serif", - "variants": [ - "regular", - "500", - "700", - "900" - ] - }, - { - "family": "Architects Daughter", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Orbitron", - "category": "sans-serif", - "variants": [ - "regular", - "500", - "700", - "900" - ] - }, - { - "family": "Pathway Gothic One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Acme", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Ropa Sans", - "category": "sans-serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Patua One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "EB Garamond", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Lobster Two", - "category": "display", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Crete Round", - "category": "serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Cinzel", - "category": "serif", - "variants": [ - "regular", - "700", - "900" - ] - }, - { - "family": "Josefin Slab", - "category": "serif", - "variants": [ - "100", - "100italic", - "300", - "300italic", - "regular", - "italic", - "600", - "600italic", - "700", - "700italic" - ] - }, - { - "family": "Source Serif Pro", - "category": "serif", - "variants": [ - "regular", - "600", - "700" - ] - }, - { - "family": "Alegreya Sans", - "category": "sans-serif", - "variants": [ - "100", - "100italic", - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "Comfortaa", - "category": "display", - "variants": [ - "300", - "regular", - "700" - ] - }, - { - "family": "Russo One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "News Cycle", - "category": "sans-serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "ABeeZee", - "category": "sans-serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Yellowtail", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Noticia Text", - "category": "serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Monda", - "category": "sans-serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Quattrocento Sans", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Hammersmith One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Libre Franklin", - "category": "sans-serif", - "variants": [ - "100", - "100italic", - "200", - "200italic", - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "600", - "600italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "Satisfy", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Pontano Sans", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Righteous", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Poiret One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "BenchNine", - "category": "sans-serif", - "variants": [ - "300", - "regular", - "700" - ] - }, - { - "family": "Arapey", - "category": "serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Kaushan Script", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Economica", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Kanit", - "category": "sans-serif", - "variants": [ - "100", - "100italic", - "200", - "200italic", - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "600", - "600italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "Old Standard TT", - "category": "serif", - "variants": [ - "regular", - "italic", - "700" - ] - }, - { - "family": "Sanchez", - "category": "serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Courgette", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Quattrocento", - "category": "serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Domine", - "category": "serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Gudea", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700" - ] - }, - { - "family": "Permanent Marker", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Armata", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Cantarell", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Archivo Black", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Istok Web", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Cardo", - "category": "serif", - "variants": [ - "regular", - "italic", - "700" - ] - }, - { - "family": "Playfair Display SC", - "category": "serif", - "variants": [ - "regular", - "italic", - "700", - "700italic", - "900", - "900italic" - ] - }, - { - "family": "Passion One", - "category": "display", - "variants": [ - "regular", - "700", - "900" - ] - }, - { - "family": "Tinos", - "category": "serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Cookie", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Cormorant Garamond", - "category": "serif", - "variants": [ - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "600", - "600italic", - "700", - "700italic" - ] - }, - { - "family": "Philosopher", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Yantramanav", - "category": "sans-serif", - "variants": [ - "100", - "300", - "regular", - "500", - "700", - "900" - ] - }, - { - "family": "Chewy", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Antic Slab", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Handlee", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Teko", - "category": "sans-serif", - "variants": [ - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Boogaloo", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Vidaloka", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Audiowide", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Coming Soon", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Alfa Slab One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Cabin Condensed", - "category": "sans-serif", - "variants": [ - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Ruda", - "category": "sans-serif", - "variants": [ - "regular", - "700", - "900" - ] - }, - { - "family": "Ek Mukta", - "category": "sans-serif", - "variants": [ - "200", - "300", - "regular", - "500", - "600", - "700", - "800" - ] - }, - { - "family": "Changa One", - "category": "display", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Tangerine", - "category": "handwriting", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Great Vibes", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Sintony", - "category": "sans-serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Khand", - "category": "sans-serif", - "variants": [ - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Bevan", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Kalam", - "category": "handwriting", - "variants": [ - "300", - "regular", - "700" - ] - }, - { - "family": "Days One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Bangers", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Rajdhani", - "category": "sans-serif", - "variants": [ - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Droid Sans Mono", - "category": "monospace", - "variants": [ - "regular" - ] - }, - { - "family": "Kreon", - "category": "serif", - "variants": [ - "300", - "regular", - "700" - ] - }, - { - "family": "Rambla", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Shrikhand", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Fredoka One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Shadows Into Light Two", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Playball", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Neuton", - "category": "serif", - "variants": [ - "200", - "300", - "regular", - "italic", - "700", - "800" - ] - }, - { - "family": "Copse", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Didact Gothic", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Signika Negative", - "category": "sans-serif", - "variants": [ - "300", - "regular", - "600", - "700" - ] - }, - { - "family": "Amiri", - "category": "serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Gentium Book Basic", - "category": "serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Glegoo", - "category": "serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Oleo Script", - "category": "display", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Voltaire", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Actor", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Amaranth", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Paytone One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Volkhov", - "category": "serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Sorts Mill Goudy", - "category": "serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Bad Script", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Coda", - "category": "display", - "variants": [ - "regular", - "800" - ] - }, - { - "family": "Damion", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Sacramento", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Squada One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Rock Salt", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Adamina", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Alice", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Cantata One", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Luckiest Guy", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Rochester", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Covered By Your Grace", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Heebo", - "category": "sans-serif", - "variants": [ - "100", - "300", - "regular", - "500", - "700", - "800", - "900" - ] - }, - { - "family": "VT323", - "category": "monospace", - "variants": [ - "regular" - ] - }, - { - "family": "Nothing You Could Do", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Patrick Hand", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Gentium Basic", - "category": "serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Nobile", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Rancho", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Marck Script", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Special Elite", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Julius Sans One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Varela", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "PT Mono", - "category": "monospace", - "variants": [ - "regular" - ] - }, - { - "family": "Alex Brush", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Homemade Apple", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Scada", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Jura", - "category": "sans-serif", - "variants": [ - "300", - "regular", - "500", - "600" - ] - }, - { - "family": "Antic", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Gochi Hand", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Sarala", - "category": "sans-serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Electrolize", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Sigmar One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Candal", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Prata", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Homenaje", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Pinyon Script", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Unica One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Basic", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Neucha", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Convergence", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Molengo", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Caveat Brush", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Monoton", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Calligraffitti", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Kameron", - "category": "serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Share", - "category": "display", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Alegreya Sans SC", - "category": "sans-serif", - "variants": [ - "100", - "100italic", - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "Enriqueta", - "category": "serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Martel", - "category": "serif", - "variants": [ - "200", - "300", - "regular", - "600", - "700", - "800", - "900" - ] - }, - { - "family": "Black Ops One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Just Another Hand", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Caveat", - "category": "handwriting", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "PT Serif Caption", - "category": "serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Ultra", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Ubuntu Mono", - "category": "monospace", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Carme", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Cousine", - "category": "monospace", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Cherry Cream Soda", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Reenie Beanie", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Hind Siliguri", - "category": "sans-serif", - "variants": [ - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Bubblegum Sans", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Aldrich", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Lustria", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Alef", - "category": "sans-serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Freckle Face", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Fanwood Text", - "category": "serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Advent Pro", - "category": "sans-serif", - "variants": [ - "100", - "200", - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Allura", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Ceviche One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Press Start 2P", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Overlock", - "category": "display", - "variants": [ - "regular", - "italic", - "700", - "700italic", - "900", - "900italic" - ] - }, - { - "family": "Niconne", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Limelight", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Frank Ruhl Libre", - "category": "sans-serif", - "variants": [ - "300", - "regular", - "500", - "700", - "900" - ] - }, - { - "family": "Allerta Stencil", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Marcellus", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Pragati Narrow", - "category": "sans-serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Michroma", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Fauna One", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Syncopate", - "category": "sans-serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Telex", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Marvel", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Cabin Sketch", - "category": "display", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Hanuman", - "category": "serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Cairo", - "category": "sans-serif", - "variants": [ - "200", - "300", - "regular", - "600", - "700", - "900" - ] - }, - { - "family": "Chivo", - "category": "sans-serif", - "variants": [ - "300", - "300italic", - "regular", - "italic", - "700", - "700italic", - "900", - "900italic" - ] - }, - { - "family": "Allerta", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Fugaz One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Viga", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Ruslan Display", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Nixie One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Marmelad", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Average", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Spinnaker", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Leckerli One", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Judson", - "category": "serif", - "variants": [ - "regular", - "italic", - "700" - ] - }, - { - "family": "Lusitana", - "category": "serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Montserrat Alternates", - "category": "sans-serif", - "variants": [ - "100", - "100italic", - "200", - "200italic", - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "600", - "600italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "Contrail One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Oranienbaum", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Hind Vadodara", - "category": "sans-serif", - "variants": [ - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Rufina", - "category": "serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Quantico", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Concert One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Marcellus SC", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Jockey One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Parisienne", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Carter One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Arbutus Slab", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Slabo 13px", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Tauri", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Goudy Bookletter 1911", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Carrois Gothic", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Sue Ellen Francisco", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Walter Turncoat", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Annie Use Your Telescope", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Puritan", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Grand Hotel", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Yesteryear", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Jaldi", - "category": "sans-serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Khula", - "category": "sans-serif", - "variants": [ - "300", - "regular", - "600", - "700", - "800" - ] - }, - { - "family": "Cinzel Decorative", - "category": "display", - "variants": [ - "regular", - "700", - "900" - ] - }, - { - "family": "Crafty Girls", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Merienda", - "category": "handwriting", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Hind Guntur", - "category": "sans-serif", - "variants": [ - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Cutive", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Prompt", - "category": "sans-serif", - "variants": [ - "100", - "100italic", - "200", - "200italic", - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "600", - "600italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "Coustard", - "category": "serif", - "variants": [ - "regular", - "900" - ] - }, - { - "family": "Arima Madurai", - "category": "display", - "variants": [ - "100", - "200", - "300", - "regular", - "500", - "700", - "800", - "900" - ] - }, - { - "family": "Doppio One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Radley", - "category": "serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Fontdiner Swanky", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Iceland", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Alegreya SC", - "category": "serif", - "variants": [ - "regular", - "italic", - "700", - "700italic", - "900", - "900italic" - ] - }, - { - "family": "Halant", - "category": "serif", - "variants": [ - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Schoolbell", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Waiting for the Sunrise", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Italianno", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Fredericka the Great", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Average Sans", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Rosario", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Mr Dafoe", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Port Lligat Slab", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Aclonica", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Graduate", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Racing Sans One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Berkshire Swash", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Forum", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Anonymous Pro", - "category": "monospace", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Love Ya Like A Sister", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Nunito Sans", - "category": "sans-serif", - "variants": [ - "200", - "200italic", - "300", - "300italic", - "regular", - "italic", - "600", - "600italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "Magra", - "category": "sans-serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Lateef", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Assistant", - "category": "sans-serif", - "variants": [ - "200", - "300", - "regular", - "600", - "700", - "800" - ] - }, - { - "family": "Six Caps", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Gilda Display", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Oregano", - "category": "display", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Metrophobic", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Lalezar", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Caudex", - "category": "serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Kelly Slab", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Reem Kufi", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Cambay", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Gruppo", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Give You Glory", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "GFS Didot", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Duru Sans", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Andika", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Tenor Sans", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Knewave", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Averia Serif Libre", - "category": "display", - "variants": [ - "300", - "300italic", - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Eczar", - "category": "serif", - "variants": [ - "regular", - "500", - "600", - "700", - "800" - ] - }, - { - "family": "Inder", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Martel Sans", - "category": "sans-serif", - "variants": [ - "200", - "300", - "regular", - "600", - "700", - "800", - "900" - ] - }, - { - "family": "Trocchi", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Wire One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Petit Formal Script", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Mako", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Frijole", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Zeyada", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Slackey", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Karma", - "category": "serif", - "variants": [ - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Mate", - "category": "serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Belleza", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Montez", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Quando", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Capriola", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Lilita One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Trirong", - "category": "serif", - "variants": [ - "100", - "100italic", - "200", - "200italic", - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "600", - "600italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "Lekton", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700" - ] - }, - { - "family": "Just Me Again Down Here", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Bowlby One SC", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "The Girl Next Door", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Happy Monkey", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Merienda One", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Alike", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Chelsea Market", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Unkempt", - "category": "display", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Anaheim", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Strait", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Brawler", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Clicker Script", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Delius", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Mouse Memoirs", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "IM Fell Double Pica", - "category": "serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Crushed", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Rammetto One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Prosto One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Kranky", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "IM Fell English", - "category": "serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Aladin", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Mr De Haviland", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "NTR", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Londrina Solid", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Skranji", - "category": "display", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Allan", - "category": "display", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Baumans", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Ovo", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Changa", - "category": "sans-serif", - "variants": [ - "200", - "300", - "regular", - "500", - "600", - "700", - "800" - ] - }, - { - "family": "Lemon", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Federo", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Herr Von Muellerhoff", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Arizonia", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Bowlby One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Orienta", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Short Stack", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Bungee Inline", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Andada", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Baloo Paaji", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Oxygen Mono", - "category": "monospace", - "variants": [ - "regular" - ] - }, - { - "family": "Yeseva One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "UnifrakturMaguntia", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Bentham", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Londrina Outline", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Pompiere", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Gabriela", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Qwigley", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Nova Square", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Poly", - "category": "serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Sniglet", - "category": "display", - "variants": [ - "regular", - "800" - ] - }, - { - "family": "Patrick Hand SC", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Gravitas One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Khmer", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Shojumaru", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Kurale", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Gafata", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Biryani", - "category": "sans-serif", - "variants": [ - "200", - "300", - "regular", - "600", - "700", - "800", - "900" - ] - }, - { - "family": "Cambo", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Titan One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Carrois Gothic SC", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "La Belle Aurore", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Holtwood One SC", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Oleo Script Swash Caps", - "category": "display", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Headland One", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Cherry Swash", - "category": "display", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Belgrano", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Norican", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Mountains of Christmas", - "category": "display", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Julee", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Ramabhadra", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Mallanna", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Kristi", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Imprima", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Lily Script One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Chau Philomene One", - "category": "sans-serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Bilbo Swash Caps", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Finger Paint", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Voces", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Itim", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Megrim", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Simonetta", - "category": "display", - "variants": [ - "regular", - "italic", - "900", - "900italic" - ] - }, - { - "family": "Cutive Mono", - "category": "monospace", - "variants": [ - "regular" - ] - }, - { - "family": "Stardos Stencil", - "category": "display", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "IM Fell DW Pica", - "category": "serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Unna", - "category": "serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Loved by the King", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Prociono", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Corben", - "category": "display", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Amiko", - "category": "sans-serif", - "variants": [ - "regular", - "600", - "700" - ] - }, - { - "family": "Denk One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Palanquin", - "category": "sans-serif", - "variants": [ - "100", - "200", - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Baloo", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Fondamento", - "category": "handwriting", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Seaweed Script", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Shanti", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Wendy One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Raleway Dots", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Amethysta", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Vast Shadow", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Stalemate", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Fira Mono", - "category": "monospace", - "variants": [ - "regular", - "500", - "700" - ] - }, - { - "family": "Expletus Sans", - "category": "display", - "variants": [ - "regular", - "italic", - "500", - "500italic", - "600", - "600italic", - "700", - "700italic" - ] - }, - { - "family": "Scheherazade", - "category": "serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Fenix", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Delius Swash Caps", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Rouge Script", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Life Savers", - "category": "display", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "IM Fell English SC", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Meddon", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Tienne", - "category": "serif", - "variants": [ - "regular", - "700", - "900" - ] - }, - { - "family": "Over the Rainbow", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Share Tech Mono", - "category": "monospace", - "variants": [ - "regular" - ] - }, - { - "family": "Abhaya Libre", - "category": "serif", - "variants": [ - "regular", - "500", - "600", - "700", - "800" - ] - }, - { - "family": "Kotta One", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Pridi", - "category": "serif", - "variants": [ - "200", - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Euphoria Script", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Engagement", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Podkova", - "category": "serif", - "variants": [ - "regular", - "500", - "600", - "700", - "800" - ] - }, - { - "family": "Salsa", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Sofia", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Suranna", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Mada", - "category": "sans-serif", - "variants": [ - "300", - "regular", - "500", - "900" - ] - }, - { - "family": "Chonburi", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Ledger", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Italiana", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Dawning of a New Day", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Nokora", - "category": "serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Angkor", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Medula One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Taviraj", - "category": "serif", - "variants": [ - "100", - "100italic", - "200", - "200italic", - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "600", - "600italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "Vampiro One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Englebert", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Nova Mono", - "category": "monospace", - "variants": [ - "regular" - ] - }, - { - "family": "Dorsa", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Averia Sans Libre", - "category": "display", - "variants": [ - "300", - "300italic", - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Cedarville Cursive", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Geo", - "category": "sans-serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Rationale", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Balthazar", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Sunshiney", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Aguafina Script", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Mystery Quest", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Fjord One", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Fira Sans Extra Condensed", - "category": "sans-serif", - "variants": [ - "100", - "100italic", - "200", - "200italic", - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "600", - "600italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "Kadwa", - "category": "serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "McLaren", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Rye", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Sail", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Athiti", - "category": "sans-serif", - "variants": [ - "200", - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Rosarivo", - "category": "serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Kite One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Odor Mean Chey", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Numans", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Artifika", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Poller One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Gurajada", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Inika", - "category": "serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Mandali", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Bungee Shade", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Suwannaphum", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Mate SC", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Creepster", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Arsenal", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Montserrat Subrayada", - "category": "sans-serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Metamorphous", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Palanquin Dark", - "category": "sans-serif", - "variants": [ - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Coda Caption", - "category": "sans-serif", - "variants": [ - "800" - ] - }, - { - "family": "Dynalight", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Maitree", - "category": "serif", - "variants": [ - "200", - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "IM Fell French Canon", - "category": "serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Amarante", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Quintessential", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Codystar", - "category": "display", - "variants": [ - "300", - "regular" - ] - }, - { - "family": "Cantora One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Aref Ruqaa", - "category": "serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Griffy", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Revalia", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Buenard", - "category": "serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Donegal One", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "IM Fell DW Pica SC", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Habibi", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Share Tech", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Flamenco", - "category": "display", - "variants": [ - "300", - "regular" - ] - }, - { - "family": "Mitr", - "category": "sans-serif", - "variants": [ - "200", - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Maiden Orange", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Diplomata SC", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Cormorant", - "category": "serif", - "variants": [ - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "600", - "600italic", - "700", - "700italic" - ] - }, - { - "family": "Delius Unicase", - "category": "handwriting", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Stoke", - "category": "serif", - "variants": [ - "300", - "regular" - ] - }, - { - "family": "Vibur", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Sarpanch", - "category": "sans-serif", - "variants": [ - "regular", - "500", - "600", - "700", - "800", - "900" - ] - }, - { - "family": "Baloo Bhaina", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Baloo Tamma", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Averia Libre", - "category": "display", - "variants": [ - "300", - "300italic", - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Esteban", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Battambang", - "category": "display", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Bokor", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Wallpoet", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "IM Fell Great Primer", - "category": "serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Tulpen One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Proza Libre", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "500", - "500italic", - "600", - "600italic", - "700", - "700italic", - "800", - "800italic" - ] - }, - { - "family": "IM Fell French Canon SC", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Vesper Libre", - "category": "serif", - "variants": [ - "regular", - "500", - "700", - "900" - ] - }, - { - "family": "Rozha One", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Sansita", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "Kavoon", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Della Respira", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Milonga", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Condiment", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Junge", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "New Rocker", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Chicle", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Mrs Saint Delafield", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "League Script", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Miniver", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Galindo", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Moul", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Amatica SC", - "category": "display", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Stint Ultra Expanded", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Yrsa", - "category": "serif", - "variants": [ - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Stint Ultra Condensed", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Suez One", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Text Me One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Buda", - "category": "display", - "variants": [ - "300" - ] - }, - { - "family": "Ruluko", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Sonsie One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Krona One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Elsie", - "category": "display", - "variants": [ - "regular", - "900" - ] - }, - { - "family": "Pangolin", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Linden Hill", - "category": "serif", - "variants": [ - "regular", - "italic" - ] - }, - { - "family": "Secular One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "IM Fell Double Pica SC", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Alike Angular", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Sancreek", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Bilbo", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Antic Didone", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Paprika", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Asul", - "category": "sans-serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "David Libre", - "category": "serif", - "variants": [ - "regular", - "500", - "700" - ] - }, - { - "family": "Almendra", - "category": "serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Sriracha", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Miriam Libre", - "category": "sans-serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Ribeye", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Swanky and Moo Moo", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Trade Winds", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Overlock SC", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Nova Round", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Cagliostro", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Glass Antiqua", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Offside", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "El Messiri", - "category": "sans-serif", - "variants": [ - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Bigshot One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "IM Fell Great Primer SC", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Akronim", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Fira Sans Condensed", - "category": "sans-serif", - "variants": [ - "100", - "100italic", - "200", - "200italic", - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "600", - "600italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "Nosifer", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Autour One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Pirata One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Port Lligat Sans", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Scope One", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Sumana", - "category": "serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Lemonada", - "category": "display", - "variants": [ - "300", - "regular", - "600", - "700" - ] - }, - { - "family": "Montaga", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Iceberg", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Ruthie", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Content", - "category": "display", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Henny Penny", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Nova Slim", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Hind Madurai", - "category": "sans-serif", - "variants": [ - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Harmattan", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "UnifrakturCook", - "category": "display", - "variants": [ - "700" - ] - }, - { - "family": "Sarina", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Bubbler One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Dekko", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Redressed", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Laila", - "category": "serif", - "variants": [ - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Faster One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Arya", - "category": "sans-serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Peralta", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Meie Script", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Overpass", - "category": "sans-serif", - "variants": [ - "100", - "100italic", - "200", - "200italic", - "300", - "300italic", - "regular", - "italic", - "600", - "600italic", - "700", - "700italic", - "800", - "800italic", - "900", - "900italic" - ] - }, - { - "family": "Monsieur La Doulaise", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Bungee", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Snippet", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Emilys Candy", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Trykker", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "MedievalSharp", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Space Mono", - "category": "monospace", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Croissant One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Monofett", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Lovers Quarrel", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Oldenburg", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Galdeano", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Spicy Rice", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Wellfleet", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Germania One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "GFS Neohellenic", - "category": "sans-serif", - "variants": [ - "regular", - "italic", - "700", - "700italic" - ] - }, - { - "family": "Baloo Thambi", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Jolly Lodger", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Rubik Mono One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Pattaya", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Joti One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Siemreap", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Ranga", - "category": "display", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Chango", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Miltonian Tattoo", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Koulen", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Eagle Lake", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Nova Flat", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Petrona", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Jacques Francois", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Amita", - "category": "handwriting", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Plaster", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Ramaraja", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Sura", - "category": "serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Kenia", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Fresca", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Jomhuria", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Lancelot", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Pavanam", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Rum Raisin", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Almendra SC", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Purple Purse", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Kumar One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Modern Antiqua", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Piedra", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Irish Grover", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Molle", - "category": "handwriting", - "variants": [ - "italic" - ] - }, - { - "family": "Cormorant Infant", - "category": "serif", - "variants": [ - "300", - "300italic", - "regular", - "italic", - "500", - "500italic", - "600", - "600italic", - "700", - "700italic" - ] - }, - { - "family": "Margarine", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Sahitya", - "category": "serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Mukta Vaani", - "category": "sans-serif", - "variants": [ - "200", - "300", - "regular", - "500", - "600", - "700", - "800" - ] - }, - { - "family": "Astloch", - "category": "display", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Snowburst One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Rhodium Libre", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Smythe", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Asset", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Ewert", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Keania One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Ranchers", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Gorditas", - "category": "display", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Sirin Stencil", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Averia Gruesa Libre", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Trochut", - "category": "display", - "variants": [ - "regular", - "italic", - "700" - ] - }, - { - "family": "Baloo Chettan", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Kdam Thmor", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Timmana", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Original Surfer", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Supermercado One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Mirza", - "category": "display", - "variants": [ - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Passero One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Nova Oval", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Caesar Dressing", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Taprom", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Fascinate", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Seymour One", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Freehand", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Ravi Prakash", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Coiny", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Atomic Age", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Jacques Francois Shadow", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Diplomata", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Dr Sugiyama", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Miltonian", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Ribeye Marrow", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Elsie Swash Caps", - "category": "display", - "variants": [ - "regular", - "900" - ] - }, - { - "family": "Felipa", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Galada", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Nova Script", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Bayon", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Underdog", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Devonshire", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Atma", - "category": "display", - "variants": [ - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Londrina Shadow", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Sofadi One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Tillana", - "category": "handwriting", - "variants": [ - "regular", - "500", - "600", - "700", - "800" - ] - }, - { - "family": "Inknut Antiqua", - "category": "serif", - "variants": [ - "300", - "regular", - "500", - "600", - "700", - "800", - "900" - ] - }, - { - "family": "Goblin One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Rakkas", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Metal", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Farsan", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Londrina Sketch", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Nova Cut", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "BioRhyme", - "category": "serif", - "variants": [ - "200", - "300", - "regular", - "700", - "800" - ] - }, - { - "family": "Warnes", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Romanesco", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Fascinate Inline", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Mrs Sheppards", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Princess Sofia", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Modak", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Spirax", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Cormorant Upright", - "category": "serif", - "variants": [ - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Geostar Fill", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Cormorant SC", - "category": "serif", - "variants": [ - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Baloo Bhai", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Sree Krushnadevaraya", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Smokum", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Arbutus", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Fruktur", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Geostar", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Marko One", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Erica One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Yatra One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Uncial Antiqua", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Combo", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Gidugu", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Aubrey", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Jim Nightshade", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Butterfly Kids", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Metal Mania", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Macondo", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Chenla", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Miss Fajardose", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Macondo Swash Caps", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Barrio", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Sevillana", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Bigelow Rules", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Rasa", - "category": "serif", - "variants": [ - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Risque", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Federant", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Dangrek", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Chathura", - "category": "sans-serif", - "variants": [ - "100", - "300", - "regular", - "700", - "800" - ] - }, - { - "family": "Almendra Display", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Chela One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Bonbon", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Stalinist One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Mr Bedfort", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Eater", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Fasthand", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Mogra", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Padauk", - "category": "sans-serif", - "variants": [ - "regular", - "700" - ] - }, - { - "family": "Preahvihear", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Flavors", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Ruge Boogie", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Tenali Ramakrishna", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Unlock", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Butcherman", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Baloo Da", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Lakki Reddy", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Cormorant Unicase", - "category": "serif", - "variants": [ - "300", - "regular", - "500", - "600", - "700" - ] - }, - { - "family": "Katibeh", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Asar", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Emblema One", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Moulpali", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Meera Inimai", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Kantumruy", - "category": "sans-serif", - "variants": [ - "300", - "regular", - "700" - ] - }, - { - "family": "Suravaram", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Bungee Hairline", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Overpass Mono", - "category": "monospace", - "variants": [ - "300", - "regular", - "600", - "700" - ] - }, - { - "family": "Peddana", - "category": "serif", - "variants": [ - "regular" - ] - }, - { - "family": "Bahiana", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Kumar One Outline", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Hanalei Fill", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Dhurjati", - "category": "sans-serif", - "variants": [ - "regular" - ] - }, - { - "family": "Hanalei", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "Kavivanar", - "category": "handwriting", - "variants": [ - "regular" - ] - }, - { - "family": "Bungee Outline", - "category": "display", - "variants": [ - "regular" - ] - }, - { - "family": "BioRhyme Expanded", - "category": "serif", - "variants": [ - "200", - "300", - "regular", - "700", - "800" - ] - } -] diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/js/customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/js/customizer.js deleted file mode 100644 index f214b655..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/js/customizer.js +++ /dev/null @@ -1,250 +0,0 @@ -function gp_premium_typography_live_update( id, selector, property, unit, media, settings ) { - settings = typeof settings !== 'undefined' ? settings : 'generate_settings'; - wp.customize( settings + '[' + id + ']', function( value ) { - value.bind( function( newval ) { - // Get our unit if applicable - unit = typeof unit !== 'undefined' ? unit : ''; - - var isTablet = ( 'tablet' == id.substring( 0, 6 ) ) ? true : false, - isMobile = ( 'mobile' == id.substring( 0, 6 ) ) ? true : false; - - if ( isTablet ) { - if ( '' == wp.customize(settings + '[' + id + ']').get() ) { - var desktopID = id.replace( 'tablet_', '' ); - newval = wp.customize(settings + '[' + desktopID + ']').get(); - } - } - - if ( isMobile ) { - if ( '' == wp.customize(settings + '[' + id + ']').get() ) { - var desktopID = id.replace( 'mobile_', '' ); - newval = wp.customize(settings + '[' + desktopID + ']').get(); - } - } - - if ( 'buttons_font_size' == id && '' == wp.customize('generate_settings[buttons_font_size]').get() ) { - newval = wp.customize('generate_settings[body_font_size]').get(); - } - - if ( 'single_post_title_weight' == id && '' == wp.customize('generate_settings[single_post_title_weight]').get() ) { - newval = wp.customize('generate_settings[heading_1_weight]').get(); - } - - if ( 'single_post_title_transform' == id && '' == wp.customize('generate_settings[single_post_title_transform]').get() ) { - newval = wp.customize('generate_settings[heading_1_transform]').get(); - } - - if ( 'archive_post_title_weight' == id && '' == wp.customize('generate_settings[archive_post_title_weight]').get() ) { - newval = wp.customize('generate_settings[heading_2_weight]').get(); - } - - if ( 'archive_post_title_transform' == id && '' == wp.customize('generate_settings[archive_post_title_transform]').get() ) { - newval = wp.customize('generate_settings[heading_2_transform]').get(); - } - - // We're using a desktop value - if ( ! isTablet && ! isMobile ) { - - var tabletValue = ( typeof wp.customize(settings + '[tablet_' + id + ']') !== 'undefined' ) ? wp.customize(settings + '[tablet_' + id + ']').get() : '', - mobileValue = ( typeof wp.customize(settings + '[mobile_' + id + ']') !== 'undefined' ) ? wp.customize(settings + '[mobile_' + id + ']').get() : ''; - - // The tablet setting exists, mobile doesn't - if ( '' !== tabletValue && '' == mobileValue ) { - media = gp_typography.desktop + ', ' + gp_typography.mobile; - } - - // The tablet setting doesn't exist, mobile does - if ( '' == tabletValue && '' !== mobileValue ) { - media = gp_typography.desktop + ', ' + gp_typography.tablet; - } - - // The tablet setting doesn't exist, neither does mobile - if ( '' == tabletValue && '' == mobileValue ) { - media = gp_typography.desktop + ', ' + gp_typography.tablet + ', ' + gp_typography.mobile; - } - - } - - // Check if media query - media_query = typeof media !== 'undefined' ? 'media="' + media + '"' : ''; - - jQuery( 'head' ).append( '' ); - setTimeout(function() { - jQuery( 'style#' + id ).not( ':last' ).remove(); - }, 1000); - - setTimeout("jQuery('body').trigger('generate_spacing_updated');", 1000); - } ); - } ); -} - -/** - * Body font size, weight and transform - */ -gp_premium_typography_live_update( 'body_font_size', 'body, button, input, select, textarea', 'font-size', 'px' ); -gp_premium_typography_live_update( 'body_line_height', 'body', 'line-height', '' ); -gp_premium_typography_live_update( 'paragraph_margin', 'p, .entry-content > [class*="wp-block-"]:not(:last-child)', 'margin-bottom', 'em' ); -gp_premium_typography_live_update( 'body_font_weight', 'body, button, input, select, textarea', 'font-weight' ); -gp_premium_typography_live_update( 'body_font_transform', 'body, button, input, select, textarea', 'text-transform' ); - -/** - * Top bar font size, weight and transform - */ -gp_premium_typography_live_update( 'top_bar_font_size', '.top-bar', 'font-size', 'px' ); -gp_premium_typography_live_update( 'top_bar_font_weight', '.top-bar', 'font-weight' ); -gp_premium_typography_live_update( 'top_bar_font_transform', '.top-bar', 'text-transform' ); - -/** - * Site title font size, weight and transform - */ -gp_premium_typography_live_update( 'site_title_font_size', '.main-title, .navigation-branding .main-title', 'font-size', 'px', gp_typography.desktop ); -gp_premium_typography_live_update( 'tablet_site_title_font_size', '.main-title, .navigation-branding .main-title', 'font-size', 'px', gp_typography.tablet ); -gp_premium_typography_live_update( 'mobile_site_title_font_size', '.main-title, .navigation-branding .main-title', 'font-size', 'px', gp_typography.mobile ); -gp_premium_typography_live_update( 'site_title_font_weight', '.main-title, .navigation-branding .main-title', 'font-weight' ); -gp_premium_typography_live_update( 'site_title_font_transform', '.main-title, .navigation-branding .main-title', 'text-transform' ); - -/** - * Site description font size, weight and transform - */ -gp_premium_typography_live_update( 'site_tagline_font_size', '.site-description', 'font-size', 'px' ); -gp_premium_typography_live_update( 'site_tagline_font_weight', '.site-description', 'font-weight' ); -gp_premium_typography_live_update( 'site_tagline_font_transform', '.site-description', 'text-transform' ); - -/** - * Main navigation font size, weight and transform - */ -gp_premium_typography_live_update( 'navigation_font_size', '.main-navigation a, .menu-toggle, .main-navigation .menu-bar-items', 'font-size', 'px', gp_typography.desktop ); -gp_premium_typography_live_update( 'tablet_navigation_font_size', '.main-navigation a, .menu-toggle, .main-navigation .menu-bar-items', 'font-size', 'px', gp_typography.tablet ); -gp_premium_typography_live_update( 'mobile_navigation_font_size', '.main-navigation:not(.slideout-navigation) a, .menu-toggle, .main-navigation .menu-bar-items', 'font-size', 'px', gp_typography.mobile ); -gp_premium_typography_live_update( 'navigation_font_weight', '.main-navigation a, .menu-toggle', 'font-weight' ); -gp_premium_typography_live_update( 'navigation_font_transform', '.main-navigation a, .menu-toggle', 'text-transform' ); - -/** - * Site title when in navigation. - */ - gp_premium_typography_live_update( 'navigation_site_title_font_size', '.navigation-branding .main-title', 'font-size', 'px', gp_typography.desktop ); - gp_premium_typography_live_update( 'tablet_navigation_site_title_font_size', '.navigation-branding .main-title', 'font-size', 'px', gp_typography.tablet ); - gp_premium_typography_live_update( 'mobile_navigation_site_title_font_size', '.navigation-branding .main-title', 'font-size', 'px', gp_typography.mobile ); - -/** - * Secondary navigation font size, weight and transform - */ -gp_premium_typography_live_update( 'secondary_navigation_font_size', '.secondary-navigation .main-nav ul li a,.secondary-navigation .menu-toggle, .secondary-navigation .top-bar, .secondary-navigation .secondary-menu-bar-items', 'font-size', 'px', '', 'generate_secondary_nav_settings' ); -gp_premium_typography_live_update( 'secondary_navigation_font_weight', '.secondary-navigation .main-nav ul li a,.secondary-navigation .menu-toggle, .secondary-navigation .top-bar', 'font-weight', '', '', 'generate_secondary_nav_settings' ); -gp_premium_typography_live_update( 'secondary_navigation_font_transform', '.secondary-navigation .main-nav ul li a,.secondary-navigation .menu-toggle, .secondary-navigation .top-bar', 'text-transform', '', '', 'generate_secondary_nav_settings' ); - -/** - * Buttons - */ -gp_premium_typography_live_update( 'buttons_font_size', 'button:not(.menu-toggle),html input[type="button"],input[type="reset"],input[type="submit"],.button,.button:visited,.wp-block-button .wp-block-button__link,.woocommerce #respond input#submit, .woocommerce a.button, .woocommerce button.button, .woocommerce input.button', 'font-size', 'px' ); -gp_premium_typography_live_update( 'buttons_font_weight', 'button:not(.menu-toggle),html input[type="button"],input[type="reset"],input[type="submit"],.button,.button:visited,.wp-block-button .wp-block-button__link,.woocommerce #respond input#submit, .woocommerce a.button, .woocommerce button.button, .woocommerce input.button', 'font-weight' ); -gp_premium_typography_live_update( 'buttons_font_transform', 'button:not(.menu-toggle),html input[type="button"],input[type="reset"],input[type="submit"],.button,.button:visited,.wp-block-button .wp-block-button__link,.woocommerce #respond input#submit, .woocommerce a.button, .woocommerce button.button, .woocommerce input.button', 'text-transform' ); - -/** - * H1 font size, weight and transform - */ -gp_premium_typography_live_update( 'heading_1_font_size', 'h1', 'font-size', 'px', gp_typography.desktop ); -gp_premium_typography_live_update( 'mobile_heading_1_font_size', 'h1', 'font-size', 'px', gp_typography.mobile ); -gp_premium_typography_live_update( 'heading_1_weight', 'h1', 'font-weight' ); -gp_premium_typography_live_update( 'heading_1_transform', 'h1', 'text-transform' ); -gp_premium_typography_live_update( 'heading_1_line_height', 'h1', 'line-height', 'em' ); -gp_premium_typography_live_update( 'heading_1_margin_bottom', 'h1', 'margin-bottom', 'px' ); - -/** - * Single content title (h1) - */ -gp_premium_typography_live_update( 'single_post_title_font_size', 'h1.entry-title', 'font-size', 'px', gp_typography.desktop ); -gp_premium_typography_live_update( 'single_post_title_font_size_mobile', 'h1.entry-title', 'font-size', 'px', gp_typography.mobile ); -gp_premium_typography_live_update( 'single_post_title_weight', 'h1.entry-title', 'font-weight' ); -gp_premium_typography_live_update( 'single_post_title_transform', 'h1.entry-title', 'text-transform' ); -gp_premium_typography_live_update( 'single_post_title_line_height', 'h1.entry-title', 'line-height', 'em' ); - -/** - * H2 font size, weight and transform - */ -gp_premium_typography_live_update( 'heading_2_font_size', 'h2', 'font-size', 'px', gp_typography.desktop ); -gp_premium_typography_live_update( 'mobile_heading_2_font_size', 'h2', 'font-size', 'px', gp_typography.mobile ); -gp_premium_typography_live_update( 'heading_2_weight', 'h2', 'font-weight' ); -gp_premium_typography_live_update( 'heading_2_transform', 'h2', 'text-transform' ); -gp_premium_typography_live_update( 'heading_2_line_height', 'h2', 'line-height', 'em' ); -gp_premium_typography_live_update( 'heading_2_margin_bottom', 'h2', 'margin-bottom', 'px' ); - -/** - * Archive post title (h1) - */ -gp_premium_typography_live_update( 'archive_post_title_font_size', 'h2.entry-title', 'font-size', 'px', gp_typography.desktop ); -gp_premium_typography_live_update( 'archive_post_title_font_size_mobile', 'h2.entry-title', 'font-size', 'px', gp_typography.mobile ); -gp_premium_typography_live_update( 'archive_post_title_weight', 'h2.entry-title', 'font-weight' ); -gp_premium_typography_live_update( 'archive_post_title_transform', 'h2.entry-title', 'text-transform' ); -gp_premium_typography_live_update( 'archive_post_title_line_height', 'h2.entry-title', 'line-height', 'em' ); - -/** - * H3 font size, weight and transform - */ -gp_premium_typography_live_update( 'heading_3_font_size', 'h3', 'font-size', 'px', gp_typography.desktop ); -gp_premium_typography_live_update( 'mobile_heading_3_font_size', 'h3', 'font-size', 'px', gp_typography.mobile ); -gp_premium_typography_live_update( 'heading_3_weight', 'h3', 'font-weight' ); -gp_premium_typography_live_update( 'heading_3_transform', 'h3', 'text-transform' ); -gp_premium_typography_live_update( 'heading_3_line_height', 'h3', 'line-height', 'em' ); -gp_premium_typography_live_update( 'heading_3_margin_bottom', 'h3', 'margin-bottom', 'px' ); - -/** - * H4 font size, weight and transform - */ -gp_premium_typography_live_update( 'heading_4_font_size', 'h4', 'font-size', 'px', gp_typography.desktop ); -gp_premium_typography_live_update( 'mobile_heading_4_font_size', 'h4', 'font-size', 'px', gp_typography.mobile ); -gp_premium_typography_live_update( 'heading_4_weight', 'h4', 'font-weight' ); -gp_premium_typography_live_update( 'heading_4_transform', 'h4', 'text-transform' ); -gp_premium_typography_live_update( 'heading_4_line_height', 'h4', 'line-height', 'em' ); - -/** - * H5 font size, weight and transform - */ -gp_premium_typography_live_update( 'heading_5_font_size', 'h5', 'font-size', 'px', gp_typography.desktop ); -gp_premium_typography_live_update( 'mobile_heading_5_font_size', 'h5', 'font-size', 'px', gp_typography.mobile ); -gp_premium_typography_live_update( 'heading_5_weight', 'h5', 'font-weight' ); -gp_premium_typography_live_update( 'heading_5_transform', 'h5', 'text-transform' ); -gp_premium_typography_live_update( 'heading_5_line_height', 'h5', 'line-height', 'em' ); - -/** - * H6 font size, weight and transform - */ -gp_premium_typography_live_update( 'heading_6_font_size', 'h6', 'font-size', 'px' ); -gp_premium_typography_live_update( 'heading_6_weight', 'h6', 'font-weight' ); -gp_premium_typography_live_update( 'heading_6_transform', 'h6', 'text-transform' ); -gp_premium_typography_live_update( 'heading_6_line_height', 'h6', 'line-height', 'em' ); - -/** - * Widget title font size, weight and transform - */ -gp_premium_typography_live_update( 'widget_title_font_size', '.widget-title', 'font-size', 'px' ); -gp_premium_typography_live_update( 'widget_title_font_weight', '.widget-title', 'font-weight' ); -gp_premium_typography_live_update( 'widget_title_font_transform', '.widget-title', 'text-transform' ); -gp_premium_typography_live_update( 'widget_title_separator', '.widget-title', 'margin-bottom', 'px' ); -gp_premium_typography_live_update( 'widget_content_font_size', '.sidebar .widget, .footer-widgets .widget', 'font-size', 'px' ); - -/** - * Footer font size, weight and transform - */ -gp_premium_typography_live_update( 'footer_font_size', '.site-info', 'font-size', 'px' ); -gp_premium_typography_live_update( 'footer_weight', '.site-info', 'font-weight' ); -gp_premium_typography_live_update( 'footer_transform', '.site-info', 'text-transform' ); -gp_premium_typography_live_update( 'footer_line_height', '.site-info', 'line-height', 'em' ); - -/** - * WooCommerce product title - */ -gp_premium_typography_live_update( 'wc_product_title_font_size', '.woocommerce ul.products li.product .woocommerce-LoopProduct-link h2, .woocommerce ul.products li.product .woocommerce-loop-category__title', 'font-size', 'px', gp_typography.desktop ); -gp_premium_typography_live_update( 'mobile_wc_product_title_font_size', '.woocommerce ul.products li.product .woocommerce-LoopProduct-link h2, .woocommerce ul.products li.product .woocommerce-loop-category__title', 'font-size', 'px', gp_typography.mobile ); -gp_premium_typography_live_update( 'wc_product_title_font_weight', '.woocommerce ul.products li.product .woocommerce-LoopProduct-link h2, .woocommerce ul.products li.product .woocommerce-loop-category__title', 'font-weight' ); -gp_premium_typography_live_update( 'wc_product_title_font_transform', '.woocommerce ul.products li.product .woocommerce-LoopProduct-link h2, .woocommerce ul.products li.product .woocommerce-loop-category__title', 'text-transform' ); - -gp_premium_typography_live_update( 'wc_related_product_title_font_size', '.woocommerce .up-sells ul.products li.product .woocommerce-LoopProduct-link h2, .woocommerce .cross-sells ul.products li.product .woocommerce-LoopProduct-link h2, .woocommerce .related ul.products li.product .woocommerce-LoopProduct-link h2', 'font-size', 'px' ); - -/** - * Slideout navigation font size, weight and transform - */ -gp_premium_typography_live_update( 'slideout_font_size', '.slideout-navigation.main-navigation .main-nav ul li a', 'font-size', 'px', gp_typography.desktop ); -gp_premium_typography_live_update( 'slideout_mobile_font_size', '.slideout-navigation.main-navigation .main-nav ul li a', 'font-size', 'px', gp_typography.mobile ); -gp_premium_typography_live_update( 'slideout_font_weight', '.slideout-navigation.main-navigation .main-nav ul li a', 'font-weight' ); -gp_premium_typography_live_update( 'slideout_font_transform', '.slideout-navigation.main-navigation .main-nav ul li a', 'text-transform' ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/migration.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/migration.php deleted file mode 100644 index c2ea0e08..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/migration.php +++ /dev/null @@ -1,359 +0,0 @@ - $generate_settings[ $setting ], - 'variants' => $variants, - 'category' => $category ? $category : 'sans-serif', - ); - } - - if ( function_exists( 'generate_secondary_nav_get_defaults' ) ) { - $secondary_nav_settings = wp_parse_args( - get_option( 'generate_secondary_nav_settings', array() ), - generate_secondary_nav_get_defaults() - ); - - $secondary_nav_id = strtolower( str_replace( ' ', '_', $secondary_nav_settings[ 'font_secondary_navigation' ] ) ); - - if ( ! array_key_exists( $secondary_nav_id, $select_fonts ) && ! in_array( $secondary_nav_settings[ 'font_secondary_navigation' ], generate_typography_default_fonts() ) ) { - $variants = get_theme_mod( 'font_secondary_navigation_variants', array() ); - $category = get_theme_mod( 'font_secondary_navigation_category' ); - - if ( ! empty( $variants ) && ! is_array( $variants ) ) { - $variants = explode( ',', $variants ); - } - - if ( ! $variants ) { - if ( ! $all_fonts ) { - $all_fonts = generate_get_all_google_fonts(); - } - - if ( array_key_exists( $secondary_nav_id, $all_fonts ) ) { - $variants = $all_fonts[ $secondary_nav_id ]['variants']; - } - } - - if ( ! $category ) { - if ( ! $all_fonts ) { - $all_fonts = generate_get_all_google_fonts(); - } - - if ( array_key_exists( $secondary_nav_id, $all_fonts ) ) { - $category = $all_fonts[ $secondary_nav_id ]['category']; - } - } - - $fonts[ $secondary_nav_id ] = array( - 'name' => $secondary_nav_settings[ 'font_secondary_navigation' ], - 'variants' => $variants, - 'category' => $category ? $category : 'sans-serif', - ); - } - } - - return $fonts; - } -} - -if ( ! function_exists( 'generate_typography_set_font_data' ) ) { - add_action( 'admin_init', 'generate_typography_set_font_data' ); - /** - * This function will check to see if your category and variants are saved - * If not, it will set them for you, and won't run again - * - * @since 1.2.90 - */ - function generate_typography_set_font_data() { - // Bail if we don't have our defaults - if ( ! function_exists( 'generate_get_default_fonts' ) ) { - return; - } - - // Get our defaults - $defaults = generate_get_default_fonts(); - - // Get our settings - $generate_settings = wp_parse_args( - get_option( 'generate_settings', array() ), - generate_get_default_fonts() - ); - - // We need to loop through these settings - $font_settings = array( - 'font_body', - 'font_site_title', - 'font_site_tagline', - 'font_navigation', - 'font_widget_title', - 'font_heading_1', - 'font_heading_2', - 'font_heading_3' - ); - - // Add secondary navigation to the array last if it exists - if ( function_exists( 'generate_secondary_nav_get_defaults' ) ) { - $font_settings[ 'font_secondary_navigation' ] = 'font_secondary_navigation'; - } - - // Start looping - foreach( $font_settings as $setting ) { - - // Change our variables for the secondary navigation - this will run last - if ( function_exists( 'generate_secondary_nav_get_defaults' ) && 'font_secondary_navigation' == $setting ) { - $generate_settings = wp_parse_args( - get_option( 'generate_secondary_nav_settings', array() ), - generate_secondary_nav_get_defaults() - ); - $defaults = generate_secondary_nav_get_defaults(); - } - - // We don't need to do this if we're using the default font, as these values have defaults already - if ( $defaults[ $setting ] == $generate_settings[ $setting ] ) { - continue; - } - - // Don't need to continue if we're using a system font or our default font - if ( in_array( $generate_settings[ $setting ], generate_typography_default_fonts() ) || 'Open Sans' == $generate_settings[ $setting ] ) { - continue; - } - - // Don't continue if our category and variants are already set - if ( get_theme_mod( $setting . '_category' ) && get_theme_mod( $setting . '_variants' ) ) { - continue; - } - - // Get all of our fonts - $fonts = generate_get_all_google_fonts(); - - // Get the ID from our font - $id = strtolower( str_replace( ' ', '_', $generate_settings[ $setting ] ) ); - - // If the ID doesn't exist within our fonts, we can bail - if ( ! array_key_exists( $id, $fonts ) ) { - continue; - } - - // Let's grab our category to go with our font - $category = ! empty( $fonts[$id]['category'] ) ? $fonts[$id]['category'] : ''; - - // Grab all of the variants associated with our font - $variants = $fonts[$id]['variants']; - - // Loop through our variants and put them into an array, then turn them into a comma separated list - $output = array(); - if ( $variants ) { - foreach ( $variants as $variant ) { - $output[] = $variant; - } - - $variants = implode( ',', $output ); - } - - // Set our theme mods with our new settings - if ( '' !== $category ) { - set_theme_mod( $setting . '_category', $category ); - } - - if ( '' !== $variants ) { - set_theme_mod( $setting . '_variants', $variants ); - } - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/secondary-nav-fonts.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/secondary-nav-fonts.php deleted file mode 100644 index 76081000..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/secondary-nav-fonts.php +++ /dev/null @@ -1,176 +0,0 @@ -get_section( 'secondary_nav_section' ) ) { - return; - } - - // Get our controls - require_once GP_LIBRARY_DIRECTORY . 'customizer-helpers.php'; - - // Get our defaults - $defaults = generate_secondary_nav_get_defaults(); - - // Register our custom controls - if ( method_exists( $wp_customize,'register_control_type' ) ) { - $wp_customize->register_control_type( 'GeneratePress_Pro_Typography_Customize_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Pro_Range_Slider_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Section_Shortcut_Control' ); - } - - // Add our section - $wp_customize->add_section( - 'secondary_font_section', - array( - 'title' => __( 'Secondary Navigation', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'description' => '', - 'priority' => 51, - 'panel' => 'generate_typography_panel' - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_secondary_navigation_typography_shortcuts', - array( - 'section' => 'secondary_font_section', - 'element' => __( 'Secondary Navigation', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'secondary_nav_section', - 'colors' => 'secondary_navigation_color_section', - 'backgrounds' => 'secondary_bg_images_section', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - // Font family - $wp_customize->add_setting( - 'generate_secondary_nav_settings[font_secondary_navigation]', - array( - 'default' => $defaults['font_secondary_navigation'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_text_field' - ) - ); - - // Category - $wp_customize->add_setting( - 'font_secondary_navigation_category', - array( - 'default' => $defaults['font_secondary_navigation_category'], - 'sanitize_callback' => 'sanitize_text_field' - ) - ); - - // Variants - $wp_customize->add_setting( - 'font_secondary_navigation_variants', - array( - 'default' => $defaults['font_secondary_navigation_variants'], - 'sanitize_callback' => 'generate_premium_sanitize_variants' - ) - ); - - // Font weight - $wp_customize->add_setting( - 'generate_secondary_nav_settings[secondary_navigation_font_weight]', - array( - 'default' => $defaults['secondary_navigation_font_weight'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage' - ) - ); - - // Font transform - $wp_customize->add_setting( - 'generate_secondary_nav_settings[secondary_navigation_font_transform]', - array( - 'default' => $defaults['secondary_navigation_font_transform'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage' - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Typography_Customize_Control( - $wp_customize, - 'google_font_site_secondary_navigation_control', - array( - 'section' => 'secondary_font_section', - 'settings' => array( - 'family' => 'generate_secondary_nav_settings[font_secondary_navigation]', - 'variant' => 'font_secondary_navigation_variants', - 'category' => 'font_secondary_navigation_category', - 'weight' => 'generate_secondary_nav_settings[secondary_navigation_font_weight]', - 'transform' => 'generate_secondary_nav_settings[secondary_navigation_font_transform]', - ), - ) - ) - ); - - // Font size - $wp_customize->add_setting( - 'generate_secondary_nav_settings[secondary_navigation_font_size]', - array( - 'default' => $defaults['secondary_navigation_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage' - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_secondary_nav_settings[secondary_navigation_font_size]', - array( - 'description' => __( 'Font size', 'gp-premium' ), - 'section' => 'secondary_font_section', - 'priority' => 165, - 'settings' => array( - 'desktop' => 'generate_secondary_nav_settings[secondary_navigation_font_size]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 6, - 'max' => 30, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/slideout-nav-fonts.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/slideout-nav-fonts.php deleted file mode 100644 index a6619549..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/slideout-nav-fonts.php +++ /dev/null @@ -1,149 +0,0 @@ -register_control_type( 'GeneratePress_Pro_Range_Slider_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Pro_Typography_Customize_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Section_Shortcut_Control' ); - } - - // Bail if Menu Plus isn't activated - if ( ! $wp_customize->get_section( 'menu_plus_slideout_menu' ) ) { - return; - } - - $wp_customize->add_section( - 'generate_slideout_typography', - array( - 'title' => __( 'Off Canvas Panel', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 52, - 'panel' => 'generate_typography_panel' - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_off_canvas_panel_typography_shortcuts', - array( - 'section' => 'generate_slideout_typography', - 'element' => esc_html__( 'Off Canvas Panel', 'gp-premium' ), - 'shortcuts' => array( - 'colors' => 'slideout_color_section', - 'layout' => 'menu_plus_slideout_menu', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 1, - ) - ) - ); - - $wp_customize->add_setting( - 'generate_settings[slideout_font_weight]', - array( - 'default' => $defaults['slideout_font_weight'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage' - ) - ); - - // Text transform - $wp_customize->add_setting( - 'generate_settings[slideout_font_transform]', - array( - 'default' => $defaults['slideout_font_transform'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage' - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Typography_Customize_Control( - $wp_customize, - 'slideout_navigation_typography', - array( - 'label' => esc_html__( 'Menu Items', 'gp-premium' ), - 'section' => 'generate_slideout_typography', - 'settings' => array( - 'weight' => 'generate_settings[slideout_font_weight]', - 'transform' => 'generate_settings[slideout_font_transform]', - ), - ) - ) - ); - - // Font size - $wp_customize->add_setting( - 'generate_settings[slideout_font_size]', - array( - 'default' => $defaults['slideout_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage' - ) - ); - - $wp_customize->add_setting( - 'generate_settings[slideout_mobile_font_size]', - array( - 'default' => $defaults['slideout_mobile_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage' - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[slideout_font_size]', - array( - 'description' => __( 'Font size', 'gp-premium' ), - 'section' => 'generate_slideout_typography', - 'settings' => array( - 'desktop' => 'generate_settings[slideout_font_size]', - 'mobile' => 'generate_settings[slideout_mobile_font_size]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 10, - 'max' => 80, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - 'mobile' => array( - 'min' => 10, - 'max' => 80, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/woocommerce-fonts.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/woocommerce-fonts.php deleted file mode 100644 index b1d0b3c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/functions/woocommerce-fonts.php +++ /dev/null @@ -1,179 +0,0 @@ -register_control_type( 'GeneratePress_Pro_Range_Slider_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Pro_Typography_Customize_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Section_Shortcut_Control' ); - } - - // Bail if WooCommerce isn't activated - if ( ! $wp_customize->get_section( 'generate_woocommerce_typography' ) ) { - return; - } - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_woocommerce_typography_shortcuts', - array( - 'section' => 'generate_woocommerce_typography', - 'element' => __( 'WooCommerce', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'generate_woocommerce_layout', - 'colors' => 'generate_woocommerce_colors', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 0, - ) - ) - ); - - // WooCommerce - $wp_customize->add_setting( - 'generate_settings[wc_product_title_font_weight]', - array( - 'default' => $defaults['wc_product_title_font_weight'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage' - ) - ); - - // Text transform - $wp_customize->add_setting( - 'generate_settings[wc_product_title_font_transform]', - array( - 'default' => $defaults['wc_product_title_font_transform'], - 'type' => 'option', - 'sanitize_callback' => 'sanitize_key', - 'transport' => 'postMessage' - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Typography_Customize_Control( - $wp_customize, - 'google_wc_product_title_control', - array( - 'label' => __( 'Shop Product Titles', 'gp-premium' ), - 'section' => 'generate_woocommerce_typography', - 'settings' => array( - 'weight' => 'generate_settings[wc_product_title_font_weight]', - 'transform' => 'generate_settings[wc_product_title_font_transform]', - ), - ) - ) - ); - - // Font size - $wp_customize->add_setting( - 'generate_settings[wc_product_title_font_size]', - array( - 'default' => $defaults['wc_product_title_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage' - ) - ); - - $wp_customize->add_setting( - 'generate_settings[mobile_wc_product_title_font_size]', - array( - 'default' => $defaults['mobile_wc_product_title_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint', - 'transport' => 'postMessage' - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[wc_product_title_font_size]', - array( - 'description' => __( 'Font size', 'gp-premium' ), - 'section' => 'generate_woocommerce_typography', - 'priority' => 240, - 'settings' => array( - 'desktop' => 'generate_settings[wc_product_title_font_size]', - 'mobile' => 'generate_settings[mobile_wc_product_title_font_size]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 10, - 'max' => 80, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - 'mobile' => array( - 'min' => 10, - 'max' => 80, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - - // Font size - $wp_customize->add_setting( - 'generate_settings[wc_related_product_title_font_size]', - array( - 'default' => $defaults['wc_related_product_title_font_size'], - 'type' => 'option', - 'sanitize_callback' => 'absint', - 'transport' => 'postMessage' - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'generate_settings[wc_related_product_title_font_size]', - array( - 'description' => __( 'Related/upsell title font size', 'gp-premium' ), - 'section' => 'generate_woocommerce_typography', - 'priority' => 240, - 'settings' => array( - 'desktop' => 'generate_settings[wc_related_product_title_font_size]', - 'mobile' => 'generate_settings[mobile_wc_product_title_font_size]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 10, - 'max' => 80, - 'step' => 1, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/generate-fonts.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/generate-fonts.php deleted file mode 100644 index fd8a9939..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/typography/generate-fonts.php +++ /dev/null @@ -1,20 +0,0 @@ -add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_woocommerce_colors_shortcuts', - array( - 'section' => 'generate_woocommerce_colors', - 'element' => __( 'WooCommerce', 'gp-premium' ), - 'shortcuts' => array( - 'layout' => 'generate_woocommerce_layout', - 'typography' => 'generate_woocommerce_typography', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 0, - ) - ) - ); - - $color_defaults = generate_get_color_defaults(); - - $wp_customize->add_section( - 'generate_woocommerce_colors', - array( - 'title' => __( 'Colors', 'gp-premium' ), - 'priority' => 40, - 'panel' => 'woocommerce', - ) - ); - - GeneratePress_Customize_Field::add_title( - 'generate_woocommerce_button_colors_title', - array( - 'section' => 'generate_woocommerce_colors', - 'title' => __( 'Buttons', 'gp-premium' ), - 'choices' => array( - 'toggleId' => 'woocommerce-button-colors', - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_alt_button_background', - 'generate_woocommerce_colors', - 'woocommerce-button-colors', - array( - 'generate_settings[wc_alt_button_background]' => array( - 'default_value' => $color_defaults['wc_alt_button_background'], - 'label' => __( 'Alt Button Background', 'gp-premium' ), - 'tooltip' => __( 'Choose Initial Color', 'gp-premium' ), - 'element' => '.woocommerce #respond input#submit.alt, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt, .woocommerce #respond input#submit.alt.disabled, .woocommerce #respond input#submit.alt.disabled:hover, .woocommerce #respond input#submit.alt:disabled, .woocommerce #respond input#submit.alt:disabled:hover, .woocommerce #respond input#submit.alt:disabled[disabled], .woocommerce #respond input#submit.alt:disabled[disabled]:hover, .woocommerce a.button.alt.disabled, .woocommerce a.button.alt.disabled:hover, .woocommerce a.button.alt:disabled, .woocommerce a.button.alt:disabled:hover, .woocommerce a.button.alt:disabled[disabled], .woocommerce a.button.alt:disabled[disabled]:hover, .woocommerce button.button.alt.disabled, .woocommerce button.button.alt.disabled:hover, .woocommerce button.button.alt:disabled, .woocommerce button.button.alt:disabled:hover, .woocommerce button.button.alt:disabled[disabled], .woocommerce button.button.alt:disabled[disabled]:hover, .woocommerce input.button.alt.disabled, .woocommerce input.button.alt.disabled:hover, .woocommerce input.button.alt:disabled, .woocommerce input.button.alt:disabled:hover, .woocommerce input.button.alt:disabled[disabled], .woocommerce input.button.alt:disabled[disabled]:hover', - 'property' => 'background-color', - 'hide_label' => false, - ), - 'generate_settings[wc_alt_button_background_hover]' => array( - 'default_value' => $color_defaults['wc_alt_button_background_hover'], - 'label' => __( 'Alt Button Background Hover', 'gp-premium' ), - 'tooltip' => __( 'Choose Hover Color', 'gp-premium' ), - 'element' => '.woocommerce #respond input#submit.alt:hover, .woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover, .woocommerce input.button.alt:hover', - 'property' => 'background-color', - 'hide_label' => true, - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_alt_button_text', - 'generate_woocommerce_colors', - 'woocommerce-button-colors', - array( - 'generate_settings[wc_alt_button_text]' => array( - 'default_value' => $color_defaults['wc_alt_button_text'], - 'label' => __( 'Alt Button Text', 'gp-premium' ), - 'tooltip' => __( 'Choose Initial Color', 'gp-premium' ), - 'element' => '.woocommerce #respond input#submit.alt, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt, .woocommerce #respond input#submit.alt.disabled, .woocommerce #respond input#submit.alt.disabled:hover, .woocommerce #respond input#submit.alt:disabled, .woocommerce #respond input#submit.alt:disabled:hover, .woocommerce #respond input#submit.alt:disabled[disabled], .woocommerce #respond input#submit.alt:disabled[disabled]:hover, .woocommerce a.button.alt.disabled, .woocommerce a.button.alt.disabled:hover, .woocommerce a.button.alt:disabled, .woocommerce a.button.alt:disabled:hover, .woocommerce a.button.alt:disabled[disabled], .woocommerce a.button.alt:disabled[disabled]:hover, .woocommerce button.button.alt.disabled, .woocommerce button.button.alt.disabled:hover, .woocommerce button.button.alt:disabled, .woocommerce button.button.alt:disabled:hover, .woocommerce button.button.alt:disabled[disabled], .woocommerce button.button.alt:disabled[disabled]:hover, .woocommerce input.button.alt.disabled, .woocommerce input.button.alt.disabled:hover, .woocommerce input.button.alt:disabled, .woocommerce input.button.alt:disabled:hover, .woocommerce input.button.alt:disabled[disabled], .woocommerce input.button.alt:disabled[disabled]:hover', - 'property' => 'color', - 'hide_label' => false, - ), - 'generate_settings[wc_alt_button_text_hover]' => array( - 'default_value' => $color_defaults['wc_alt_button_text_hover'], - 'label' => __( 'Alt Button Text Hover', 'gp-premium' ), - 'tooltip' => __( 'Choose Hover Color', 'gp-premium' ), - 'element' => '.woocommerce #respond input#submit.alt:hover, .woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover, .woocommerce input.button.alt:hover', - 'property' => 'color', - 'hide_label' => true, - ), - ) - ); - - GeneratePress_Customize_Field::add_title( - 'generate_woocommerce_product_colors_title', - array( - 'section' => 'generate_woocommerce_colors', - 'title' => __( 'Products', 'gp-premium' ), - 'choices' => array( - 'toggleId' => 'woocommerce-product-colors', - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_product_title', - 'generate_woocommerce_colors', - 'woocommerce-product-colors', - array( - 'generate_settings[wc_product_title_color]' => array( - 'default_value' => $color_defaults['wc_product_title_color'], - 'label' => __( 'Product Title', 'gp-premium' ), - 'tooltip' => __( 'Choose Initial Color', 'gp-premium' ), - 'element' => '.woocommerce ul.products li.product .woocommerce-LoopProduct-link', - 'property' => 'color', - 'hide_label' => false, - ), - 'generate_settings[wc_product_title_color_hover]' => array( - 'default_value' => $color_defaults['wc_product_title_color_hover'], - 'label' => __( 'Product Title Hover', 'gp-premium' ), - 'tooltip' => __( 'Choose Hover Color', 'gp-premium' ), - 'element' => '.woocommerce ul.products li.product .woocommerce-LoopProduct-link:hover', - 'property' => 'color', - 'hide_label' => true, - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_rating_stars', - 'generate_woocommerce_colors', - 'woocommerce-product-colors', - array( - 'generate_settings[wc_rating_stars]' => array( - 'default_value' => $color_defaults['wc_rating_stars'], - 'label' => __( 'Star Ratings', 'gp-premium' ), - 'tooltip' => __( 'Choose Color', 'gp-premium' ), - 'element' => '.woocommerce .star-rating span:before, .woocommerce p.stars:hover a::before', - 'property' => 'color', - 'hide_label' => false, - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_sale_sticker_background', - 'generate_woocommerce_colors', - 'woocommerce-product-colors', - array( - 'generate_settings[wc_sale_sticker_background]' => array( - 'default_value' => $color_defaults['wc_sale_sticker_background'], - 'label' => __( 'Sale Sticker Background', 'gp-premium' ), - 'tooltip' => __( 'Choose Color', 'gp-premium' ), - 'element' => '.woocommerce span.onsale', - 'property' => 'background-color', - 'hide_label' => false, - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_sale_sticker_text', - 'generate_woocommerce_colors', - 'woocommerce-product-colors', - array( - 'generate_settings[wc_sale_sticker_text]' => array( - 'default_value' => $color_defaults['wc_sale_sticker_text'], - 'label' => __( 'Sale Sticker Text', 'gp-premium' ), - 'tooltip' => __( 'Choose Color', 'gp-premium' ), - 'element' => '.woocommerce span.onsale', - 'property' => 'color', - 'hide_label' => false, - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_price_text', - 'generate_woocommerce_colors', - 'woocommerce-product-colors', - array( - 'generate_settings[wc_price_color]' => array( - 'default_value' => $color_defaults['wc_price_color'], - 'label' => __( 'Price', 'gp-premium' ), - 'tooltip' => __( 'Choose Color', 'gp-premium' ), - 'element' => '.woocommerce ul.products li.product .price, .woocommerce div.product p.price', - 'property' => 'color', - 'hide_label' => false, - ), - ) - ); - - GeneratePress_Customize_Field::add_title( - 'generate_woocommerce_panel_cart_colors_title', - array( - 'section' => 'generate_woocommerce_colors', - 'title' => __( 'Sticky Panel Cart', 'gp-premium' ), - 'choices' => array( - 'toggleId' => 'woocommerce-panel-cart-colors', - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_panel_cart_background', - 'generate_woocommerce_colors', - 'woocommerce-panel-cart-colors', - array( - 'generate_settings[wc_panel_cart_background_color]' => array( - 'default_value' => $color_defaults['wc_panel_cart_background_color'], - 'label' => __( 'Background Color', 'gp-premium' ), - 'tooltip' => __( 'Choose Color', 'gp-premium' ), - 'element' => '.add-to-cart-panel', - 'property' => 'background-color', - 'hide_label' => false, - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_panel_cart_text', - 'generate_woocommerce_colors', - 'woocommerce-panel-cart-colors', - array( - 'generate_settings[wc_panel_cart_text_color]' => array( - 'default_value' => $color_defaults['wc_panel_cart_text_color'], - 'label' => __( 'Text Color', 'gp-premium' ), - 'tooltip' => __( 'Choose Color', 'gp-premium' ), - 'element' => '.add-to-cart-panel, .add-to-cart-panel a:not(.button)', - 'property' => 'color', - 'hide_label' => false, - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_panel_cart_button_background', - 'generate_woocommerce_colors', - 'woocommerce-panel-cart-colors', - array( - 'generate_settings[wc_panel_cart_button_background]' => array( - 'default_value' => $color_defaults['wc_panel_cart_button_background'], - 'label' => __( 'Button Background', 'gp-premium' ), - 'tooltip' => __( 'Choose Initial Color', 'gp-premium' ), - 'element' => '#wc-sticky-cart-panel .button', - 'property' => 'background-color', - 'hide_label' => false, - ), - 'generate_settings[wc_panel_cart_button_background_hover]' => array( - 'default_value' => $color_defaults['wc_panel_cart_button_background_hover'], - 'label' => __( 'Button Background Hover', 'gp-premium' ), - 'tooltip' => __( 'Choose Hover Color', 'gp-premium' ), - 'element' => '#wc-sticky-cart-panel .button:hover, #wc-sticky-cart-panel .button:focus, #wc-sticky-cart-panel .button:active', - 'property' => 'background-color', - 'hide_label' => true, - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_panel_cart_button_text', - 'generate_woocommerce_colors', - 'woocommerce-panel-cart-colors', - array( - 'generate_settings[wc_panel_cart_button_text]' => array( - 'default_value' => $color_defaults['wc_panel_cart_button_text'], - 'label' => __( 'Button Text', 'gp-premium' ), - 'tooltip' => __( 'Choose Initial Color', 'gp-premium' ), - 'element' => '#wc-sticky-cart-panel .button', - 'property' => 'color', - 'hide_label' => false, - ), - 'generate_settings[wc_panel_cart_button_text_hover]' => array( - 'default_value' => $color_defaults['wc_panel_cart_button_text_hover'], - 'label' => __( 'Button Text Hover', 'gp-premium' ), - 'tooltip' => __( 'Choose Hover Color', 'gp-premium' ), - 'element' => '#wc-sticky-cart-panel .button:hover, #wc-sticky-cart-panel .button:focus, #wc-sticky-cart-panel .button:active', - 'property' => 'color', - 'hide_label' => true, - ), - ) - ); - - GeneratePress_Customize_Field::add_title( - 'generate_woocommerce_mini_cart_colors_title', - array( - 'section' => 'generate_woocommerce_colors', - 'title' => __( 'Menu Mini Cart', 'gp-premium' ), - 'choices' => array( - 'toggleId' => 'woocommerce-mini-cart-colors', - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_mini_cart_background', - 'generate_woocommerce_colors', - 'woocommerce-mini-cart-colors', - array( - 'generate_settings[wc_mini_cart_background_color]' => array( - 'default_value' => $color_defaults['wc_mini_cart_background_color'], - 'label' => __( 'Background Color', 'gp-premium' ), - 'tooltip' => __( 'Choose Color', 'gp-premium' ), - 'element' => '#wc-mini-cart', - 'property' => 'background-color', - 'hide_label' => false, - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_mini_cart_text', - 'generate_woocommerce_colors', - 'woocommerce-mini-cart-colors', - array( - 'generate_settings[wc_mini_cart_text_color]' => array( - 'default_value' => $color_defaults['wc_mini_cart_text_color'], - 'label' => __( 'Text Color', 'gp-premium' ), - 'tooltip' => __( 'Choose Color', 'gp-premium' ), - 'element' => '#wc-mini-cart', - 'property' => 'color', - 'hide_label' => false, - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_mini_cart_button_background', - 'generate_woocommerce_colors', - 'woocommerce-mini-cart-colors', - array( - 'generate_settings[wc_mini_cart_button_background]' => array( - 'default_value' => $color_defaults['wc_mini_cart_button_background'], - 'label' => __( 'Button Background', 'gp-premium' ), - 'tooltip' => __( 'Choose Initial Color', 'gp-premium' ), - 'element' => '#wc-mini-cart .button', - 'property' => 'background-color', - 'hide_label' => false, - ), - 'generate_settings[wc_mini_cart_button_background_hover]' => array( - 'default_value' => $color_defaults['wc_mini_cart_button_background_hover'], - 'label' => __( 'Button Background Hover', 'gp-premium' ), - 'tooltip' => __( 'Choose Hover Color', 'gp-premium' ), - 'element' => '#wc-mini-cart .button:hover, #wc-mini-cart .button:focus, #wc-mini-cart .button:active', - 'property' => 'background-color', - 'hide_label' => true, - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_mini_cart_button_text', - 'generate_woocommerce_colors', - 'woocommerce-mini-cart-colors', - array( - 'generate_settings[wc_mini_cart_button_text]' => array( - 'default_value' => $color_defaults['wc_mini_cart_button_text'], - 'label' => __( 'Button Text', 'gp-premium' ), - 'tooltip' => __( 'Choose Initial Color', 'gp-premium' ), - 'element' => '#wc-mini-cart .button', - 'property' => 'color', - 'hide_label' => false, - ), - 'generate_settings[wc_mini_cart_button_text_hover]' => array( - 'default_value' => $color_defaults['wc_mini_cart_button_text_hover'], - 'label' => __( 'Button Text Hover', 'gp-premium' ), - 'tooltip' => __( 'Choose Hover Color', 'gp-premium' ), - 'element' => '#wc-mini-cart .button:hover, #wc-mini-cart .button:focus, #wc-mini-cart .button:active', - 'property' => 'color', - 'hide_label' => true, - ), - ) - ); - - GeneratePress_Customize_Field::add_title( - 'generate_woocommerce_price_slider_colors_title', - array( - 'section' => 'generate_woocommerce_colors', - 'title' => __( 'Price Slider Widget', 'gp-premium' ), - 'choices' => array( - 'toggleId' => 'woocommerce-price-slider-colors', - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_price_slider_background', - 'generate_woocommerce_colors', - 'woocommerce-price-slider-colors', - array( - 'generate_settings[wc_price_slider_background_color]' => array( - 'default_value' => $color_defaults['wc_price_slider_background_color'], - 'label' => __( 'Slider Background Color', 'gp-premium' ), - 'tooltip' => __( 'Choose Color', 'gp-premium' ), - 'element' => '.woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content', - 'property' => 'background-color', - 'hide_label' => false, - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_price_slider_bar', - 'generate_woocommerce_colors', - 'woocommerce-price-slider-colors', - array( - 'generate_settings[wc_price_slider_bar_color]' => array( - 'default_value' => $color_defaults['wc_price_slider_bar_color'], - 'label' => __( 'Slider Bar Color', 'gp-premium' ), - 'tooltip' => __( 'Choose Color', 'gp-premium' ), - 'element' => '.woocommerce .widget_price_filter .ui-slider .ui-slider-range, .woocommerce .widget_price_filter .ui-slider .ui-slider-handle', - 'property' => 'background-color', - 'hide_label' => false, - ), - ) - ); - - GeneratePress_Customize_Field::add_title( - 'generate_woocommerce_product_tabs_colors_title', - array( - 'section' => 'generate_woocommerce_colors', - 'title' => __( 'Product Tabs', 'gp-premium' ), - 'choices' => array( - 'toggleId' => 'woocommerce-product-tabs-colors', - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_product_tab_text', - 'generate_woocommerce_colors', - 'woocommerce-product-tabs-colors', - array( - 'generate_settings[wc_product_tab]' => array( - 'default_value' => $color_defaults['wc_product_tab'], - 'label' => __( 'Product Tab Text', 'gp-premium' ), - 'tooltip' => __( 'Choose Color', 'gp-premium' ), - 'element' => '.woocommerce div.product .woocommerce-tabs ul.tabs li a', - 'property' => 'color', - 'hide_label' => false, - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_product_tab_text', - 'generate_woocommerce_colors', - 'woocommerce-product-tabs-colors', - array( - 'generate_settings[wc_product_tab_highlight]' => array( - 'default_value' => $color_defaults['wc_product_tab_highlight'], - 'label' => __( 'Product Tab Active', 'gp-premium' ), - 'tooltip' => __( 'Choose Color', 'gp-premium' ), - 'element' => '.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover, .woocommerce div.product .woocommerce-tabs ul.tabs li.active a', - 'property' => 'color', - 'hide_label' => false, - ), - ) - ); - - GeneratePress_Customize_Field::add_title( - 'generate_woocommerce_messages_colors_title', - array( - 'section' => 'generate_woocommerce_colors', - 'title' => __( 'Messages', 'gp-premium' ), - 'choices' => array( - 'toggleId' => 'woocommerce-messages-colors', - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_success_message_background', - 'generate_woocommerce_colors', - 'woocommerce-messages-colors', - array( - 'generate_settings[wc_success_message_background]' => array( - 'default_value' => $color_defaults['wc_success_message_background'], - 'label' => __( 'Success Message Background', 'gp-premium' ), - 'tooltip' => __( 'Choose Color', 'gp-premium' ), - 'element' => '.woocommerce-message', - 'property' => 'background-color', - 'hide_label' => false, - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_success_message_text', - 'generate_woocommerce_colors', - 'woocommerce-messages-colors', - array( - 'generate_settings[wc_success_message_text]' => array( - 'default_value' => $color_defaults['wc_success_message_text'], - 'label' => __( 'Success Message Text', 'gp-premium' ), - 'tooltip' => __( 'Choose Color', 'gp-premium' ), - 'element' => '.woocommerce-message', - 'property' => 'color', - 'hide_label' => false, - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_info_message_background', - 'generate_woocommerce_colors', - 'woocommerce-messages-colors', - array( - 'generate_settings[wc_info_message_background]' => array( - 'default_value' => $color_defaults['wc_info_message_background'], - 'label' => __( 'Info Message Background', 'gp-premium' ), - 'tooltip' => __( 'Choose Color', 'gp-premium' ), - 'element' => '.woocommerce-info', - 'property' => 'background-color', - 'hide_label' => false, - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_info_message_text', - 'generate_woocommerce_colors', - 'woocommerce-messages-colors', - array( - 'generate_settings[wc_info_message_text]' => array( - 'default_value' => $color_defaults['wc_info_message_text'], - 'label' => __( 'Info Message Text', 'gp-premium' ), - 'tooltip' => __( 'Choose Color', 'gp-premium' ), - 'element' => '.woocommerce-info', - 'property' => 'color', - 'hide_label' => false, - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_error_message_background', - 'generate_woocommerce_colors', - 'woocommerce-messages-colors', - array( - 'generate_settings[wc_error_message_background]' => array( - 'default_value' => $color_defaults['wc_error_message_background'], - 'label' => __( 'Error Message Background', 'gp-premium' ), - 'tooltip' => __( 'Choose Color', 'gp-premium' ), - 'element' => '.woocommerce-error', - 'property' => 'background-color', - 'hide_label' => false, - ), - ) - ); - - GeneratePress_Customize_Field::add_color_field_group( - 'woocommerce_error_message_text', - 'generate_woocommerce_colors', - 'woocommerce-messages-colors', - array( - 'generate_settings[wc_error_message_text]' => array( - 'default_value' => $color_defaults['wc_error_message_text'], - 'label' => __( 'Error Message Text', 'gp-premium' ), - 'tooltip' => __( 'Choose Color', 'gp-premium' ), - 'element' => '.woocommerce-error', - 'property' => 'color', - 'hide_label' => false, - ), - ) - ); - - GeneratePress_Customize_Field::add_title( - 'woocommerce_colors_redirect', - array( - 'section' => 'generate_colors_section', - 'title' => __( 'WooCommerce', 'gp-premium' ), - 'choices' => array( - 'sectionRedirect' => true, - 'toggleId' => 'generate_woocommerce_colors', - ), - ) - ); - - GeneratePress_Customize_Field::add_title( - 'generate_colors_redirect', - array( - 'section' => 'generate_woocommerce_colors', - 'title' => __( 'Other Theme Colors', 'gp-premium' ), - 'choices' => array( - 'sectionRedirect' => true, - 'toggleId' => 'generate_colors_section', - ), - ) - ); -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce-mobile.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce-mobile.css deleted file mode 100644 index 1ec6d510..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce-mobile.css +++ /dev/null @@ -1,198 +0,0 @@ -.woocommerce-product-gallery { - margin-right: 0; -} - -.woocommerce .woocommerce-ordering, -.woocommerce-page .woocommerce-ordering { - float: none; -} - -.woocommerce .woocommerce-ordering select { - max-width: 100%; -} - -.woocommerce #wc-column-container.wc-mobile-columns-1 .products, -.wc-related-upsell-mobile-columns-1 .related ul.products, -.wc-related-upsell-mobile-columns-1 .up-sells ul.products { - grid-template-columns: repeat(1, minmax(0, 1fr)); -} - -.woocommerce #wc-column-container.wc-mobile-columns-2 .products, -.wc-related-upsell-mobile-columns-2 .related ul.products, -.wc-related-upsell-mobile-columns-2 .up-sells ul.products { - grid-template-columns: repeat(2, minmax(0, 1fr)); -} - -.woocommerce #wc-column-container.wc-mobile-columns-3 .products, -.wc-related-upsell-mobile-columns-3 .related ul.products, -.wc-related-upsell-mobile-columns-3 .up-sells ul.products { - grid-template-columns: repeat(3, minmax(0, 1fr)); -} - -.woocommerce ul.products li.product a img { - width: auto; - margin-left: auto; - margin-right: auto; -} - -.woocommerce div.product .woocommerce-tabs ul.tabs, -.woocommerce div.product .woocommerce-tabs .panel { - float: none; - width: 100%; -} - -.woocommerce div.product .woocommerce-tabs .panel { - margin-top: 20px; -} - -.wc-tabs .active a:after { - transform: rotate(90deg); - padding-right: 3px; -} - -.woocommerce .col2-set, -.woocommerce-page .col2-set { - width: 100%; - float: none; - margin-right: 0; -} - -#customer_details + #wc_checkout_add_ons, -#order_review, -#order_review_heading { - width: 100%; - float: none; - margin-right: 0; -} - -.woocommerce ul.products li.product.woocommerce-image-align-left .wc-product-image, -.woocommerce ul.products li.product.woocommerce-image-align-right .wc-product-image { - float: none; - margin: 0; -} - -.woocommerce ul.products li.product.woocommerce-image-align-left a .wc-product-image img, -.woocommerce ul.products li.product.woocommerce-image-align-right a .wc-product-image img { - width: 100%; -} - -.woocommerce .related ul.products li.product, -.woocommerce-page .related ul.products li.product, -.woocommerce-page[class*=columns-] .related ul.products li.product, -.woocommerce[class*=columns-] .related ul.products li.product, -.woocommerce .up-sells ul.products li.product, -.woocommerce-page .up-sells ul.products li.product, -.woocommerce-page[class*=columns-] .up-sells ul.products li.product, -.woocommerce[class*=columns-] .up-sells ul.products li.product { - width: 100%; - margin-left: 0; - margin-right: 0; -} - -.woocommerce form .woocommerce-billing-fields__field-wrapper .form-row-first, -.woocommerce form .woocommerce-billing-fields__field-wrapper .form-row-last, -.woocommerce-page form .woocommerce-billing-fields__field-wrapper .form-row-first, -.woocommerce-page form .woocommerce-billing-fields__field-wrapper .form-row-last { - float: none; - width: 100%; -} - -.woocommerce-account .woocommerce-MyAccount-navigation { - width: 100%; -} - -.woocommerce-MyAccount-navigation li.is-active a:after { - content: "\e901"; -} - -#wc-mini-cart { - display: none; -} - -.do-quantity-buttons div.quantity { - justify-content: flex-end; -} - -.woocommerce div.product .woocommerce-tabs ul.tabs { - flex-direction: column; -} - -.woocommerce div.product .woocommerce-tabs ul.tabs li { - border-left-width: 1px; -} - -.woocommerce div.product .woocommerce-tabs ul.tabs li:last-child { - border-bottom-color: rgba(0, 0, 0, 0.08); - border-bottom-width: 1px; -} - -.woocommerce .coupon .button { - font-size: 14px; - padding: 10px; -} - -.woocommerce .woocommerce-ordering { - margin-bottom: 0; -} - -.add-to-cart-panel { - bottom: 0; - top: auto; - transform: translateY(0px) !important; -} - -.add-to-cart-panel .continue-shopping:not(.has-svg-icon):before { - content: "\f00d"; - font-family: 'GP Premium'; - line-height: 1em; - width: 1.28571429em; - text-align: center; - display: inline-block; - padding: 10px; -} - -#wc-sticky-cart-panel .quantity, -.add-to-cart-panel .continue-shopping-link { - display: none; -} - -.add-to-cart-panel .continue-shopping { - order: 5; - margin-left: auto; - margin-right: 0; - position: absolute; - top: -20px; - left: 10px; - height: 50px; - width: 50px; - text-align: center; - border-radius: 50%; - line-height: 50px; - cursor: pointer; -} - -.add-to-cart-panel .continue-shopping .gp-icon { - display: block; -} - -.add-to-cart-panel .product-image, -.add-to-cart-panel .cart { - flex-shrink: 0; -} - -.add-to-cart-panel .product-title { - padding-right: 20px; - margin-left: 10px; -} - -.add-to-cart-panel .cart-info { - margin-right: auto; -} - -.add-to-cart-panel .product-price { - font-size: 13px; -} - -.add-to-cart-panel:not(.item-added):not(.show-sticky-add-to-cart) { - pointer-events: none; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce-mobile.min.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce-mobile.min.css deleted file mode 100644 index 6c944aa9..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce-mobile.min.css +++ /dev/null @@ -1 +0,0 @@ -.woocommerce-product-gallery{margin-right:0}.woocommerce .woocommerce-ordering,.woocommerce-page .woocommerce-ordering{float:none}.woocommerce .woocommerce-ordering select{max-width:100%}.wc-related-upsell-mobile-columns-1 .related ul.products,.wc-related-upsell-mobile-columns-1 .up-sells ul.products,.woocommerce #wc-column-container.wc-mobile-columns-1 .products{grid-template-columns:repeat(1,minmax(0,1fr))}.wc-related-upsell-mobile-columns-2 .related ul.products,.wc-related-upsell-mobile-columns-2 .up-sells ul.products,.woocommerce #wc-column-container.wc-mobile-columns-2 .products{grid-template-columns:repeat(2,minmax(0,1fr))}.wc-related-upsell-mobile-columns-3 .related ul.products,.wc-related-upsell-mobile-columns-3 .up-sells ul.products,.woocommerce #wc-column-container.wc-mobile-columns-3 .products{grid-template-columns:repeat(3,minmax(0,1fr))}.woocommerce ul.products li.product a img{width:auto;margin-left:auto;margin-right:auto}.woocommerce div.product .woocommerce-tabs .panel,.woocommerce div.product .woocommerce-tabs ul.tabs{float:none;width:100%}.woocommerce div.product .woocommerce-tabs .panel{margin-top:20px}.wc-tabs .active a:after{transform:rotate(90deg);padding-right:3px}.woocommerce .col2-set,.woocommerce-page .col2-set{width:100%;float:none;margin-right:0}#customer_details+#wc_checkout_add_ons,#order_review,#order_review_heading{width:100%;float:none;margin-right:0}.woocommerce ul.products li.product.woocommerce-image-align-left .wc-product-image,.woocommerce ul.products li.product.woocommerce-image-align-right .wc-product-image{float:none;margin:0}.woocommerce ul.products li.product.woocommerce-image-align-left a .wc-product-image img,.woocommerce ul.products li.product.woocommerce-image-align-right a .wc-product-image img{width:100%}.woocommerce .related ul.products li.product,.woocommerce .up-sells ul.products li.product,.woocommerce-page .related ul.products li.product,.woocommerce-page .up-sells ul.products li.product,.woocommerce-page[class*=columns-] .related ul.products li.product,.woocommerce-page[class*=columns-] .up-sells ul.products li.product,.woocommerce[class*=columns-] .related ul.products li.product,.woocommerce[class*=columns-] .up-sells ul.products li.product{width:100%;margin-left:0;margin-right:0}.woocommerce form .woocommerce-billing-fields__field-wrapper .form-row-first,.woocommerce form .woocommerce-billing-fields__field-wrapper .form-row-last,.woocommerce-page form .woocommerce-billing-fields__field-wrapper .form-row-first,.woocommerce-page form .woocommerce-billing-fields__field-wrapper .form-row-last{float:none;width:100%}.woocommerce-account .woocommerce-MyAccount-navigation{width:100%}.woocommerce-MyAccount-navigation li.is-active a:after{content:"\e901"}#wc-mini-cart{display:none}.do-quantity-buttons div.quantity{justify-content:flex-end}.woocommerce div.product .woocommerce-tabs ul.tabs{flex-direction:column}.woocommerce div.product .woocommerce-tabs ul.tabs li{border-left-width:1px}.woocommerce div.product .woocommerce-tabs ul.tabs li:last-child{border-bottom-color:rgba(0,0,0,.08);border-bottom-width:1px}.woocommerce .coupon .button{font-size:14px;padding:10px}.woocommerce .woocommerce-ordering{margin-bottom:0}.add-to-cart-panel{bottom:0;top:auto;transform:translateY(0)!important}.add-to-cart-panel .continue-shopping:not(.has-svg-icon):before{content:"\f00d";font-family:'GP Premium';line-height:1em;width:1.28571429em;text-align:center;display:inline-block;padding:10px}#wc-sticky-cart-panel .quantity,.add-to-cart-panel .continue-shopping-link{display:none}.add-to-cart-panel .continue-shopping{order:5;margin-left:auto;margin-right:0;position:absolute;top:-20px;left:10px;height:50px;width:50px;text-align:center;border-radius:50%;line-height:50px;cursor:pointer}.add-to-cart-panel .continue-shopping .gp-icon{display:block}.add-to-cart-panel .cart,.add-to-cart-panel .product-image{flex-shrink:0}.add-to-cart-panel .product-title{padding-right:20px;margin-left:10px}.add-to-cart-panel .cart-info{margin-right:auto}.add-to-cart-panel .product-price{font-size:13px}.add-to-cart-panel:not(.item-added):not(.show-sticky-add-to-cart){pointer-events:none} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce.css deleted file mode 100644 index d1505f49..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce.css +++ /dev/null @@ -1,1283 +0,0 @@ -@supports (display: grid) { - .woocommerce ul.products li.product { - display: flex; - flex-direction: column; - } -} - -.woocommerce ul.products li.product.woocommerce-image-align-left, -.woocommerce ul.products li.product.woocommerce-image-align-right { - display: block; -} - -.woocommerce ul.products li.product .woocommerce-LoopProduct-link { - display: block; - margin-bottom: auto; -} - -.woocommerce ul.products li.product .button { - margin-left: auto; - margin-right: auto; -} - -.woocommerce ul.products li.product.woocommerce-text-align-left .button { - margin-left: 0; -} - -.woocommerce ul.products li.product.woocommerce-text-align-right .button { - margin-right: 0; -} - -.woocommerce ul.products li.product .woocommerce-LoopProduct-link > *:not(:first-child) { - margin-top: 10px; - margin-bottom: 0; -} - -.woocommerce ul.products li.product .woocommerce-LoopProduct-link > .secondary-image + img { - margin-top: 0; -} - -.woocommerce ul.products li.product .onsale, -.woocommerce span.onsale { - position: relative; - border-radius: 0; - min-height: 15px; - min-width: initial; - font-weight: inherit; - font-size: inherit; - padding: 8px 13px; - line-height: 1; - display: inline-block; - top: auto; - left: auto; - font-size: 80%; - text-transform: uppercase; - font-weight: bold; -} - -.woocommerce ul.products li.product.sales-flash-overlay .onsale { - position: absolute; - top: 0; - right: 0; - margin: 0; -} - -.single-product span.onsale { - margin-bottom: 15px; -} - -.woocommerce-product-gallery { - margin-right: 4%; -} - -.rtl .woocommerce-product-gallery { - margin-right: 0; - margin-left: 4%; -} - -.woocommerce div.product div.images .flex-control-thumbs li { - max-width: 100px; - padding-top: 5px; - padding-right: 5px; - box-sizing: border-box; -} - -.woocommerce ul.products li.product .woocommerce-loop-product__title { - padding: 0; -} - -.woocommerce .page-header-image-single { - display: none; -} - -.woocommerce .entry-content, -.woocommerce .product .entry-summary { - margin-top: 0; -} - -.related.products { - clear: both; -} - -.checkout-subscribe-prompt.clear { - visibility: visible; - height: initial; - width: initial; -} - -.woocommerce .add_to_cart_button + .added_to_cart { - display: none; -} - -.woocommerce-result-count { - font-size: 14px; - padding: 10px 0; - border: 1px solid transparent; -} - -.woocommerce-ordering select { - font-size: 14px; - font-weight: 500; - padding: 10px 40px 10px 12px; - -webkit-appearance: none; - -moz-appearance: none; - width: 100%; - background: transparent; - border-color: rgba(0, 0, 0, 0.1); - color: inherit; - cursor: pointer; -} - -.woocommerce-ordering select::-ms-expand { - display: none; -} - -.woocommerce-ordering:after { - content: "\e903"; - font-family: "GP Premium"; - display: inline-block; - position: absolute; - pointer-events: none; - color: inherit; - top: 10px; - right: 15px; - font-size: 16px; -} - -.woocommerce-ordering select option { - color: initial; -} - -.woocommerce .woocommerce-ordering, -.woocommerce .woocommerce-result-count { - margin-bottom: 30px; -} - -.woocommerce-variation-add-to-cart { - display: flex; - flex-wrap: wrap; -} - -/* Columns */ -@supports (display: grid) { - #wc-column-container .product { - float: none; - width: auto; - margin: 0; - } - .woocommerce .wc-columns-container .products::after, - .woocommerce .wc-columns-container .products::before, - .woocommerce .related ul.products::after, - .woocommerce .related ul.products::before, - .woocommerce .up-sells ul.products::after, - .woocommerce .up-sells ul.products::before { - display: none; - } - .wc-columns-container .products, - .woocommerce .related ul.products, - .woocommerce .up-sells ul.products { - display: grid; - grid-gap: 50px; - width: 100%; - } - .wc-columns-container.wc-columns-6 .products, - .wc-related-upsell-columns-6 .related ul.products, - .wc-related-upsell-columns-6 .up-sells ul.products { - grid-template-columns: repeat(6, minmax(0, 1fr)); - } - .wc-columns-container.wc-columns-5 .products, - .wc-related-upsell-columns-5 .related ul.products, - .wc-related-upsell-columns-5 .up-sells ul.products { - grid-template-columns: repeat(5, minmax(0, 1fr)); - } - .woocommerce .wc-columns-container.wc-columns-4 .products, - .wc-related-upsell-columns-4 .related ul.products, - .wc-related-upsell-columns-4 .up-sells ul.products { - grid-template-columns: repeat(4, minmax(0, 1fr)); - } - .woocommerce .wc-columns-container.wc-columns-3 .products, - .wc-related-upsell-columns-3 .related ul.products, - .wc-related-upsell-columns-3 .up-sells ul.products { - grid-template-columns: repeat(3, minmax(0, 1fr)); - } - .woocommerce .wc-columns-container.wc-columns-2 .products, - .wc-related-upsell-columns-2 .related ul.products, - .wc-related-upsell-columns-2 .up-sells ul.products { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } - .woocommerce .wc-columns-container.wc-columns-1 .products, - .wc-related-upsell-columns-1 .related ul.products, - .wc-related-upsell-columns-1 .up-sells ul.products { - width: 100%; - } - .woocommerce .wc-columns-1 ul.products li.product, - .woocommerce-page .wc-columns-1 ul.products li.product { - margin-left: 0; - margin-right: 0; - } -} - -/* Mini Cart */ -#wc-mini-cart ul.woocommerce-mini-cart { - position: relative; - left: auto; - right: auto; - opacity: 1; - pointer-events: auto; - height: auto; - width: auto; - float: none; - background-color: transparent; - box-shadow: 0 0 0; - visibility: visible; -} - -.wc-mini-cart { - position: absolute; - width: 300px; - right: 0; - box-shadow: 0 2px 2px rgba(0, 0, 0, 0.1); - z-index: 99999; - left: -99999px; - opacity: 0; - height: 0; - overflow: hidden; - pointer-events: none; - transition: opacity 80ms linear; - transition-delay: 0s; - visibility: hidden; -} - -.wc-menu-item:hover .wc-mini-cart, -.wc-menu-item.sfHover .wc-mini-cart { - left: auto; - opacity: 1; - transition-delay: 150ms; - pointer-events: auto; - height: auto; - overflow: visible; - visibility: visible; -} - -.dropdown-click ul li.wc-menu-item:hover ul { - display: block; -} - -.sidebar .wc-mini-cart { - right: 100%; - top: 0; -} - -.sidebar .wc-mini-cart .widget { - background: none; -} - -body:not(.using-mouse) .wc-menu-item.sfHover .wc-mini-cart { - display: none; -} - -.wc-menu-item .sub-menu { - left: auto; - right: 0; - width: 300px; -} - -.wc-menu-item .wc-mini-cart .widget_shopping_cart_content li:hover a, -.wc-menu-item .wc-mini-cart .widget_shopping_cart_content li.sfHover a { - background: none; -} - -.wc-menu-item .wc-mini-cart .widget_shopping_cart { - padding: 15px; -} - -.woocommerce.widget_shopping_cart .cart_list li { - padding: 0 0 0 4em; - margin: 0; - box-sizing: border-box; - min-height: 3em; -} - -.woocommerce.widget_shopping_cart { - font-size: 14px; -} - -.widget_shopping_cart .woocommerce-mini-cart__buttons { - margin-bottom: 0; - display: flex; -} - -.woocommerce.widget_shopping_cart .woocommerce-mini-cart__buttons a { - margin: 0; - width: calc(50% - 10px); - text-align: center; - padding: 10px 15px; - line-height: inherit; - font-size: 14px; -} - -.woocommerce.widget_shopping_cart .woocommerce-mini-cart__buttons a:first-child { - margin-right: 2px; -} - -.woocommerce.widget_shopping_cart .woocommerce-mini-cart__buttons a:last-child { - margin-left: 2px; -} - -.woocommerce.widget_shopping_cart .cart_list li a.remove { - right: 0; - left: auto; - height: 20px; - width: 20px; - border-width: 1px; - border-style: solid; - border-radius: 50%; - padding: 0; - font-size: 16px; - line-height: 17px; - font-weight: normal; - position: relative; - float: right; -} - -.woocommerce ul.cart_list li img { - position: absolute; - left: 0; - width: 3em; - height: auto; - top: 0; - margin-left: 0; -} - -#wc-mini-cart .woocommerce-mini-cart-item a { - padding: 0; -} - -.woocommerce-mini-cart-item .quantity { - font-size: 12px; - display: block; -} - -.woocommerce.widget_shopping_cart .total { - margin: 15px 0; - padding: 15px; - background: rgba(0, 0, 0, 0.05); - border: 0; - font-size: 14px; -} - -#wc-mini-cart .total { - padding: 15px; - margin: 15px -15px 15px; - text-align: left; -} - -#generate-slideout-menu .total { - padding: 10px 20px; - margin: 20px -20px 20px; -} - -#generate-slideout-menu.do-overlay .total { - margin: 20px 0; -} - -.woocommerce.widget_shopping_cart a.button.wc-forward:after { - display: none; -} - -.woocommerce.widget_shopping_cart .cart_list li.woocommerce-mini-cart-item:not(:last-child) { - margin-bottom: 15px; -} - -.rtl .wc-mini-cart .woocommerce.widget_shopping_cart .cart_list li { - padding: 0 4em 0 0; -} - -.rtl .wc-mini-cart .woocommerce.widget_shopping_cart .cart_list li a.remove { - float: left; -} - -.rtl .wc-mini-cart .woocommerce ul.cart_list li img { - right: 0; -} - -.slideout-widget .widget_shopping_cart_content, -.slideout-widget .widget_shopping_cart_content a { - font-size: 14px; -} - -#generate-slideout-menu.do-overlay li.woocommerce-mini-cart-item { - text-align: left; -} - -#wc-mini-cart a:not(.button) { - font-family: inherit; -} - -.wc-menu-item:not(.has-items) .wc-mini-cart { - display: none; -} - -.woocommerce-mini-cart__empty-message { - margin-bottom: 0; -} - -.secondary-nav-aligned-right .secondary-navigation ul.woocommerce-mini-cart, -.secondary-nav-aligned-center .secondary-navigation ul.woocommerce-mini-cart { - font-size: inherit; -} - -#wc-mini-cart .widgettitle { - display: none; -} - -/* Related/Upsell products */ -@supports (display: grid) { - .woocommerce .related ul.products li.product, - .woocommerce .up-sells ul.products li.product { - width: auto; - margin-left: 0; - margin-right: 0; - margin-bottom: 0; - } -} - -.woocommerce #respond input#submit, -.woocommerce a.button, -.woocommerce button.button, -.woocommerce input.button { - border-radius: 0px; - font-weight: inherit; - font-size: inherit; - line-height: inherit; - padding: 10px 20px; -} - -ul.products .woocommerce-text-align-center { - text-align: center; -} - -ul.products li.product.woocommerce-text-align-center .price, -ul.products li.product.woocommerce-text-align-center .star-rating { - margin-left: auto; - margin-right: auto; -} - -ul.products li.product.woocommerce-text-align-right .price, -ul.products li.product.woocommerce-text-align-right .star-rating { - margin-left: auto; -} - -.woocommerce .star-rating:before { - color: rgba(0, 0, 0, 0.4); -} - -.woocommerce p.stars a { - color: rgba(0, 0, 0, 0.4); -} - -.woocommerce p.stars.selected a:before { - color: #ffa200; -} - -.woocommerce ul.products li.product .price del { - display: inline; - padding-right: 10px; -} - -ul.products .woocommerce-text-align-right { - text-align: right; -} - -/*-------------------------------------------------------------- -# Single Product ---------------------------------------------------------------*/ -.woocommerce #content div.product div.images, -.woocommerce div.product div.images, -.woocommerce-page #content div.product div.images, -.woocommerce-page div.product div.images { - width: 50%; -} - -.woocommerce #content div.product div.summary, -.woocommerce div.product div.summary, -.woocommerce-page #content div.product div.summary, -.woocommerce-page div.product div.summary { - width: auto; - float: none; - overflow: hidden; -} - -.product_meta { - font-size: 80%; - border-top: 1px solid rgba(0, 0, 0, 0.1); - padding-top: 30px; -} - -.product_meta > span { - display: block; -} - -.up-sells { - margin-top: 40px; -} - -.woocommerce div.product.do-quantity-buttons form.cart, -.add-to-cart-panel form.cart { - display: flex; - flex-wrap: wrap; -} - -.woocommerce div.product form.cart > *:not(.quantity):not(.single_add_to_cart_button) { - width: 100%; -} - -.add-to-cart-panel form.cart { - flex-shrink: 0; -} - -.woocommerce .quantity .qty { - height: 100%; - width: auto; - max-width: 80px; - background: transparent; - border: 1px solid rgba(0, 0, 0, 0.1); - padding: 0 10px; - height: 50px; -} - -.do-quantity-buttons .quantity:not(.buttons-added) .qty { - width: 50px; -} - -.do-quantity-buttons div.quantity, -.add-to-cart-panel .cart.do-quantity-buttons div.quantity { - display: flex; - align-items: center; -} - -.woocommerce form .quantity.buttons-added .qty, -.woocommerce form .quantity.buttons-added .minus, -.woocommerce form .quantity.buttons-added .plus, -.do-quantity-buttons form .quantity:not(.buttons-added):not(.hidden):before, -.do-quantity-buttons form .quantity:not(.buttons-added):not(.hidden):after { - display: block; - width: 50px; - height: 100%; - min-height: 50px; - background-color: transparent; - border: 1px solid rgba(0, 0, 0, 0.1); - margin: 0; - padding: 0; - text-align: center; - vertical-align: middle; - -moz-appearance: textfield !important; - -webkit-appearance: none; - border-radius: 0; - color: inherit; - box-sizing: border-box; - text-decoration: none; -} - -.do-quantity-buttons form .quantity:not(.buttons-added):not(.hidden):before, -.do-quantity-buttons form .quantity:not(.buttons-added):not(.hidden):after, -.woocommerce form .quantity.buttons-added .minus, -.woocommerce form .quantity.buttons-added .plus { - display: flex; - align-items: center; - justify-content: center; -} - -.do-quantity-buttons form .quantity:not(.buttons-added):not(.hidden):before { - content: "-"; - border-right: 0; -} - -.do-quantity-buttons form .quantity:not(.buttons-added):not(.hidden):after { - content: "+"; - border-left: 0; -} - -.woocommerce form .quantity.buttons-added .qty:focus { - border-color: rgba(0, 0, 0, 0.1); -} - -.do-quantity-buttons form .quantity input[type=number]::-webkit-inner-spin-button, -.do-quantity-buttons form .quantity input[type=number]::-webkit-outer-spin-button { - -webkit-appearance: none; - margin: 0; -} - -.woocommerce form .quantity.buttons-added .minus, -.do-quantity-buttons form .quantity:not(.buttons-added):before { - border-right-width: 0; -} - -.woocommerce form .quantity.buttons-added .plus, -.do-quantity-buttons form .quantity:not(.buttons-added):after { - border-left-width: 0; -} - -.do-quantity-buttons .elementor-add-to-cart form .quantity:not(.buttons-added):before, -.do-quantity-buttons .elementor-add-to-cart form .quantity:not(.buttons-added):after, -.do-quantity-buttons form .quantity.hidden { - display: none; -} - -.woocommerce div.product form.cart div.quantity.hidden { - margin: 0; -} - -/*-------------------------------------------------------------- -## Tabs ---------------------------------------------------------------*/ -.woocommerce div.product .woocommerce-tabs ul.tabs li::after, -.woocommerce div.product .woocommerce-tabs ul.tabs li::before, -.woocommerce div.product .woocommerce-tabs ul.tabs::before { - display: none; - border: 0; -} - -.woocommerce div.product .woocommerce-tabs ul.tabs { - display: flex; - margin-left: 0; - padding-left: 0; -} - -.woocommerce div.product .woocommerce-tabs ul.tabs li { - background-color: rgba(0, 0, 0, 0.02); - margin: 0; - border-radius: 0; - border-width: 1px 1px 0 0; - border-color: rgba(0, 0, 0, 0.08); -} - -.woocommerce div.product .woocommerce-tabs ul.tabs li:first-child { - border-left-width: 1px; -} - -.woocommerce-ordering { - float: left; - margin-right: 1em; - margin-bottom: 0; - position: relative; - padding: 0; -} - -/*-------------------------------------------------------------- -# Menu Item ---------------------------------------------------------------*/ -nav li.wc-menu-item { - float: right; -} - -.cart-contents > span { - line-height: 0; -} - -.cart-contents > span:not(:empty) { - margin-left: 10px; -} - -.rtl .cart-contents > span:not(:empty) { - margin-left: 0; - margin-right: 10px; -} - -.cart-contents > span.gp-icon { - margin-left: 0; -} - -.rtl .cart-contents > span.gp-icon { - margin-right: 0; -} - -nav span.count { - font-size: 0.8em; - opacity: 0.5; -} - -/*-------------------------------------------------------------- -# Cart ---------------------------------------------------------------*/ -.woocommerce a.remove { - color: inherit !important; - background: transparent !important; - border: 1px solid !important; - border-color: inherit; - font-weight: normal; - font-size: 16px; - width: 20px; - height: 20px; - line-height: 17px; - font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !important; -} - -.woocommerce a.remove:hover { - color: inherit !important; - background: transparent !important; - opacity: 0.7; -} - -.woocommerce .star-rating:before { - opacity: 0.25; - content: "SSSSS"; -} - -.woocommerce div.product .woocommerce-product-rating { - margin: 1em 0; -} - -.woocommerce div.product p.price, -.woocommerce div.product span.price { - color: inherit; -} - -.wc-has-gallery .secondary-image { - position: absolute; - opacity: 0; - transition: opacity 100ms ease-in-out; - left: 50%; - transform: translate(-50%, 0px); - top: 0; -} - -.wc-has-gallery picture.secondary-image { - width: 100%; - height: 100%; -} - -.wc-product-image:hover .secondary-image { - opacity: 1; -} - -.woocommerce ul.products li.product a img { - margin-bottom: 0; -} - -.woocommerce div.product .woocommerce-tabs ul.tabs li a, -.woocommerce div.product .woocommerce-tabs ul.tabs li.active a { - color: initial; -} - -.woocommerce ul.products li.product .price, .woocommerce div.product p.price { - font-weight: bold; -} - -div.woocommerce-message a.button, -div.woocommerce-message a.button:hover, -div.woocommerce-message a.button:focus, -div.woocommerce-info a.button, -div.woocommerce-info a.button:hover, -div.woocommerce-info a.button:focus, -div.woocommerce-error a.button, -div.woocommerce-error a.button:hover, -div.woocommerce-error a.button:focus { - background: transparent; - padding: 0; -} - -.woocommerce-error a, -.woocommerce-info a, -.woocommerce-message a { - font-weight: bold; -} - -.woocommerce-error, -.woocommerce-info, -.woocommerce-message { - padding: 20px 30px; - border: 0; - border-left: 10px solid rgba(0, 0, 0, 0.3); -} - -.woocommerce-message::before, -.woocommerce-info::before, -.woocommerce-error::before { - display: none; -} - -a.button.wc-forward:after { - content: "\e901"; - font-family: "GP Premium"; - line-height: 1em; - padding-left: 10px; - position: relative; - top: 2px; -} - -.rtl a.button.wc-forward:after { - display: none; -} - -.woocommerce-checkout .col2-set .col-2, -.woocommerce-checkout .col2-set .col-1 { - float: none; - width: 100%; - margin: 0; -} - -.woocommerce-checkout .col2-set { - width: 52.9411764706%; - float: left; - margin-right: 5.8823529412%; -} - -.rtl.woocommerce-checkout .col2-set { - float: right; - margin-right: 0; - margin-left: 5.8823529412%; -} - -#customer_details + #wc_checkout_add_ons, -#order_review, -#order_review_heading { - width: 41.1764705882%; - float: right; - margin-right: 0; -} - -.woocommerce-additional-fields > h3 { - margin-top: 20px; -} - -.woocommerce table.shop_table, -.woocommerce table.shop_table tfoot th, -.woocommerce table.shop_table tfoot td { - border: 0; - border-radius: 0; -} - -.woocommerce table.shop_table th { - background-color: rgba(0, 0, 0, 0.03); -} - -.woocommerce table.shop_table th, -.woocommerce table.shop_table td { - padding: 20px; - border: 0; -} - -.woocommerce table.shop_table td { - background-color: rgba(0, 0, 0, 0.005); - border-bottom: 1px solid rgba(0, 0, 0, 0.1); -} - -#add_payment_method .cart-collaterals .cart_totals tr td, -#add_payment_method .cart-collaterals .cart_totals tr th, -.woocommerce-cart .cart-collaterals .cart_totals tr td, -.woocommerce-cart .cart-collaterals .cart_totals tr th, -.woocommerce-checkout .cart-collaterals .cart_totals tr td, -.woocommerce-checkout .cart-collaterals .cart_totals tr th { - border-top: 0; -} - -#add_payment_method #payment, -.woocommerce-cart #payment, -.woocommerce-checkout #payment, -#add_payment_method #payment div.payment_box, -.woocommerce-cart #payment div.payment_box, -.woocommerce-checkout #payment div.payment_box { - background-color: transparent; - color: inherit; -} - -#add_payment_method #payment div.payment_box:before, -.woocommerce-cart #payment div.payment_box:before, -.woocommerce-checkout #payment div.payment_box:before { - display: none; -} - -#payment .payment_methods > .wc_payment_method > label { - padding: 20px; - background-color: rgba(0, 0, 0, 0.04); - display: block; - cursor: pointer; -} - -#payment .payment_methods li.wc_payment_method > input[type=radio]:first-child:checked + label { - font-weight: bold; - background-color: rgba(0, 0, 0, 0.07); -} - -#payment .payment_methods li.wc_payment_method > input[type=radio]:first-child { - clip: rect(1px, 1px, 1px, 1px); - position: absolute !important; -} - -#payment .payment_methods > .wc_payment_method > label:before { - display: inline-block; - font-size: inherit; - -webkit-font-smoothing: antialiased; - content: "\e902"; - margin-right: .5407911001em; - transition: color,ease,.2s; - font-family: "GP Premium"; -} - -#payment .payment_methods li.wc_payment_method > input[type=radio]:first-child:checked + label:before { - content: "\e904"; -} - -#add_payment_method #payment ul.payment_methods, -.woocommerce-cart #payment ul.payment_methods, -.woocommerce-checkout #payment ul.payment_methods { - padding: 0; - border: 0; -} - -.woocommerce #payment #place_order, -.woocommerce-page #payment #place_order { - float: none; - width: 100%; - padding-top: 20px; - padding-bottom: 20px; - font-weight: bold; - font-size: 150%; -} - -#add_payment_method #payment div.form-row, -.woocommerce-cart #payment div.form-row, -.woocommerce-checkout #payment div.form-row { - padding-left: 0; - padding-right: 0; - padding-top: 0; -} - -#add_payment_method #payment ul.payment_methods li img, -.woocommerce-cart #payment ul.payment_methods li img, -.woocommerce-checkout #payment ul.payment_methods li img { - float: right; -} - -#add_payment_method #payment .payment_method_paypal .about_paypal, -.woocommerce-cart #payment .payment_method_paypal .about_paypal, -.woocommerce-checkout #payment .payment_method_paypal .about_paypal { - float: none; - display: inline-block; - line-height: 1; -} - -a.checkout-button:after { - display: none; -} - -.woocommerce #content table.cart td.actions .input-text, -.woocommerce table.cart td.actions .input-text, -.woocommerce-page #content table.cart td.actions .input-text, -.woocommerce-page table.cart td.actions .input-text { - width: 150px; - padding: 10px 15px; -} - -.woocommerce .coupon .button { - border: 1px solid transparent; -} - -.woocommerce ul.products li.product .woocommerce-product-details__short-description p:last-child { - margin-bottom: 0; -} - -.wc-product-image { - text-align: center; -} - -.woocommerce-text-align-left .wc-product-image { - text-align: left; -} - -.woocommerce-text-align-right .wc-product-image { - text-align: right; -} - -.inside-wc-product-image { - position: relative; - display: inline-block; -} - -.woocommerce ul.products li.product.woocommerce-image-align-left .wc-product-image { - float: left; - margin-right: 2em; -} - -.woocommerce ul.products li.product.woocommerce-image-align-right .wc-product-image { - float: right; - margin-left: 2em; -} - -.woocommerce ul.products li.product.woocommerce-image-align-left a .wc-product-image img, -.woocommerce ul.products li.product.woocommerce-image-align-right a .wc-product-image img { - width: auto; -} - -.woocommerce-cart ul.products li.product.woocommerce-image-align-left .wc-product-image, -.woocommerce-cart ul.products li.product.woocommerce-image-align-right .wc-product-image { - float: none; - margin: 0; -} - -.woocommerce-cart ul.products li.product.woocommerce-image-align-left a .wc-product-image img, -.woocommerce-cart ul.products li.product.woocommerce-image-align-right a .wc-product-image img { - width: 100%; -} - -.woocommerce .widget_price_filter .price_slider_amount .button { - font-size: 1em; - line-height: normal; -} - -.woocommerce .related ul.products li.product a img, -.woocommerce .up-sells ul.products li.product a img { - margin-bottom: 0; -} - -.woocommerce-review-link { - font-size: 80%; -} - -.woocommerce-Reviews .comment-reply-title { - font-size: 120%; - font-weight: bold; - display: block; - margin-bottom: 10px; -} - -.woocommerce-MyAccount-navigation ul { - margin: 0; - border-top: 1px solid rgba(0, 0, 0, 0.1); -} - -.site-main .woocommerce-MyAccount-navigation li { - margin: 0; - padding: 0; -} - -.woocommerce-MyAccount-navigation li a { - display: block; - padding: 20px 0; - border-bottom: 1px solid rgba(0, 0, 0, 0.1); - font-size: 85%; -} - -.woocommerce-MyAccount-navigation li.is-active a { - font-weight: bold; -} - -.woocommerce-MyAccount-navigation li a:hover { - border-bottom: 1px solid rgba(0, 0, 0, 0.2); -} - -.woocommerce-MyAccount-navigation li.is-active a:after { - font-family: "GP Premium"; - content: "\e901"; - float: right; - font-weight: bold; - font-size: 115%; -} - -.woocommerce-account .woocommerce-MyAccount-navigation { - width: 25%; -} - -.woocommerce #payment .terms { - padding: 20px; -} - -h2.woocommerce-loop-category__title mark { - background: none; - font-size: 80%; - opacity: 0.5; -} - -.woocommerce form.checkout_coupon, -.woocommerce form.login, -.woocommerce form.register { - padding: 0; - margin: 0 0 1.5em; - border: 0; -} - -#ship-to-different-address { - padding: 3px; - font-size: inherit; -} - -.woocommerce-image-align-left .products ul, -.woocommerce-image-align-left ul.products, -.woocommerce-image-align-left .products ul:after, -.woocommerce-image-align-left ul.products:after, -.woocommerce-image-align-right .products ul, -.woocommerce-image-align-right ul.products, -.woocommerce-image-align-right .products ul:after, -.woocommerce-image-align-right ul.products:after { - clear: none; -} - -.woocommerce nav.woocommerce-pagination { - margin-top: 60px; - clear: both; -} - -.woocommerce input.button:disabled, -.woocommerce input.button:disabled[disabled], -.woocommerce input.button:disabled:hover, -.woocommerce input.button:disabled[disabled]:hover { - background-color: transparent; - color: initial; - opacity: 0.3; -} - -.entry-summary + .up-sells { - clear: both; -} - -.woocommerce form .form-row input.input-text, -.woocommerce form .form-row textarea { - line-height: 1.5; -} - -.main-navigation a.cart-contents:not(.has-svg-icon):before, -.secondary-navigation a.cart-contents:not(.has-svg-icon):before { - content: "\f07a"; - display: inline-block; - font-family: "GP Premium"; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.main-navigation a.cart-contents:not(.has-svg-icon).shopping-bag:before, -.secondary-navigation a.cart-contents:not(.has-svg-icon).shopping-bag:before { - content: "\f290"; -} - -.main-navigation a.cart-contents:not(.has-svg-icon).shopping-basket:before, -.secondary-navigation a.cart-contents:not(.has-svg-icon).shopping-basket:before { - content: "\f291"; -} - -.cart-contents > span.number-of-items { - font-size: 11px; - display: inline-block; - background: rgba(255, 255, 255, 0.1); - line-height: 1.7em; - height: 1.7em; - width: 1.7em; - text-align: center; - border-radius: 50%; - margin-left: 5px; - position: relative; - top: -5px; - display: none; -} - -.cart-contents > span.number-of-items.no-items { - display: none; -} - -.woocommerce-MyAccount-navigation ul { - list-style-type: none; -} - -/* Fix BlockUI */ -form.checkout:after, -form.checkout:before { - content: ''; - display: table; -} - -form.checkout:after { - clear: both; -} - -/* Add to Cart panel */ -.add-to-cart-panel { - position: fixed; - top: 0; - left: 0; - right: 0; - background: #fff; - padding: 20px; - opacity: 0; - transition: opacity 500ms ease-in-out, transform 500ms ease-in-out; - box-shadow: 0 2px 2px -2px rgba(0, 0, 0, 0.2); - z-index: 101; - font-size: 90%; - box-sizing: border-box; - transform: translateY(-100%); -} - -.add-to-cart-panel.item-added, -.add-to-cart-panel.show-sticky-add-to-cart { - opacity: 1; -} - -.add-to-cart-panel > div { - display: flex; - align-items: center; -} - -.add-to-cart-panel .continue-shopping { - margin-right: auto; -} - -.add-to-cart-panel .continue-shopping .gp-icon { - display: none; -} - -.add-to-cart-panel .cart-info { - margin-right: 20px; -} - -.add-to-cart-panel img { - height: 50px; - width: auto; - vertical-align: middle; -} - -.add-to-cart-panel .product-title { - margin-left: 20px; - margin-right: auto; - font-weight: 600; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.add-to-cart-panel .product-price { - margin-right: 20px; -} - -.add-to-cart-panel div.quantity { - margin-right: 4px; -} - -.add-to-cart-panel .cart-data { - font-size: 12px; -} - -.add-to-cart-panel del { - opacity: 0.4; -} - -.do-quantity-buttons input.qty::-webkit-outer-spin-button, -.do-quantity-buttons input.qty::-webkit-inner-spin-button { - -webkit-appearance: none; -} - -.wc-menu-cart-activated .menu-toggle { - text-align: left; -} - -.woocommerce-order-received .woocommerce-customer-details .col2-set { - float: none; - width: auto; -} - -.woocommerce-order-received .woocommerce-customer-details .col2-set .col-1 { - margin-bottom: 1.5em; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce.min.css b/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce.min.css deleted file mode 100644 index efa4afcc..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/css/woocommerce.min.css +++ /dev/null @@ -1 +0,0 @@ -@supports (display:grid){.woocommerce ul.products li.product{display:flex;flex-direction:column}}.woocommerce ul.products li.product.woocommerce-image-align-left,.woocommerce ul.products li.product.woocommerce-image-align-right{display:block}.woocommerce ul.products li.product .woocommerce-LoopProduct-link{display:block;margin-bottom:auto}.woocommerce ul.products li.product .button{margin-left:auto;margin-right:auto}.woocommerce ul.products li.product.woocommerce-text-align-left .button{margin-left:0}.woocommerce ul.products li.product.woocommerce-text-align-right .button{margin-right:0}.woocommerce ul.products li.product .woocommerce-LoopProduct-link>:not(:first-child){margin-top:10px;margin-bottom:0}.woocommerce ul.products li.product .woocommerce-LoopProduct-link>.secondary-image+img{margin-top:0}.woocommerce span.onsale,.woocommerce ul.products li.product .onsale{position:relative;border-radius:0;min-height:15px;min-width:initial;font-weight:inherit;font-size:inherit;padding:8px 13px;line-height:1;display:inline-block;top:auto;left:auto;font-size:80%;text-transform:uppercase;font-weight:700}.woocommerce ul.products li.product.sales-flash-overlay .onsale{position:absolute;top:0;right:0;margin:0}.single-product span.onsale{margin-bottom:15px}.woocommerce-product-gallery{margin-right:4%}.rtl .woocommerce-product-gallery{margin-right:0;margin-left:4%}.woocommerce div.product div.images .flex-control-thumbs li{max-width:100px;padding-top:5px;padding-right:5px;box-sizing:border-box}.woocommerce ul.products li.product .woocommerce-loop-product__title{padding:0}.woocommerce .page-header-image-single{display:none}.woocommerce .entry-content,.woocommerce .product .entry-summary{margin-top:0}.related.products{clear:both}.checkout-subscribe-prompt.clear{visibility:visible;height:initial;width:initial}.woocommerce .add_to_cart_button+.added_to_cart{display:none}.woocommerce-result-count{font-size:14px;padding:10px 0;border:1px solid transparent}.woocommerce-ordering select{font-size:14px;font-weight:500;padding:10px 40px 10px 12px;-webkit-appearance:none;-moz-appearance:none;width:100%;background:0 0;border-color:rgba(0,0,0,.1);color:inherit;cursor:pointer}.woocommerce-ordering select::-ms-expand{display:none}.woocommerce-ordering:after{content:"\e903";font-family:"GP Premium";display:inline-block;position:absolute;pointer-events:none;color:inherit;top:10px;right:15px;font-size:16px}.woocommerce-ordering select option{color:initial}.woocommerce .woocommerce-ordering,.woocommerce .woocommerce-result-count{margin-bottom:30px}.woocommerce-variation-add-to-cart{display:flex;flex-wrap:wrap}@supports (display:grid){#wc-column-container .product{float:none;width:auto;margin:0}.woocommerce .related ul.products::after,.woocommerce .related ul.products::before,.woocommerce .up-sells ul.products::after,.woocommerce .up-sells ul.products::before,.woocommerce .wc-columns-container .products::after,.woocommerce .wc-columns-container .products::before{display:none}.wc-columns-container .products,.woocommerce .related ul.products,.woocommerce .up-sells ul.products{display:grid;grid-gap:50px;width:100%}.wc-columns-container.wc-columns-6 .products,.wc-related-upsell-columns-6 .related ul.products,.wc-related-upsell-columns-6 .up-sells ul.products{grid-template-columns:repeat(6,minmax(0,1fr))}.wc-columns-container.wc-columns-5 .products,.wc-related-upsell-columns-5 .related ul.products,.wc-related-upsell-columns-5 .up-sells ul.products{grid-template-columns:repeat(5,minmax(0,1fr))}.wc-related-upsell-columns-4 .related ul.products,.wc-related-upsell-columns-4 .up-sells ul.products,.woocommerce .wc-columns-container.wc-columns-4 .products{grid-template-columns:repeat(4,minmax(0,1fr))}.wc-related-upsell-columns-3 .related ul.products,.wc-related-upsell-columns-3 .up-sells ul.products,.woocommerce .wc-columns-container.wc-columns-3 .products{grid-template-columns:repeat(3,minmax(0,1fr))}.wc-related-upsell-columns-2 .related ul.products,.wc-related-upsell-columns-2 .up-sells ul.products,.woocommerce .wc-columns-container.wc-columns-2 .products{grid-template-columns:repeat(2,minmax(0,1fr))}.wc-related-upsell-columns-1 .related ul.products,.wc-related-upsell-columns-1 .up-sells ul.products,.woocommerce .wc-columns-container.wc-columns-1 .products{width:100%}.woocommerce .wc-columns-1 ul.products li.product,.woocommerce-page .wc-columns-1 ul.products li.product{margin-left:0;margin-right:0}}#wc-mini-cart ul.woocommerce-mini-cart{position:relative;left:auto;right:auto;opacity:1;pointer-events:auto;height:auto;width:auto;float:none;background-color:transparent;box-shadow:0 0 0;visibility:visible}.wc-mini-cart{position:absolute;width:300px;right:0;box-shadow:0 2px 2px rgba(0,0,0,.1);z-index:99999;left:-99999px;opacity:0;height:0;overflow:hidden;pointer-events:none;transition:opacity 80ms linear;transition-delay:0s;visibility:hidden}.wc-menu-item.sfHover .wc-mini-cart,.wc-menu-item:hover .wc-mini-cart{left:auto;opacity:1;transition-delay:150ms;pointer-events:auto;height:auto;overflow:visible;visibility:visible}.dropdown-click ul li.wc-menu-item:hover ul{display:block}.sidebar .wc-mini-cart{right:100%;top:0}.sidebar .wc-mini-cart .widget{background:0 0}body:not(.using-mouse) .wc-menu-item.sfHover .wc-mini-cart{display:none}.wc-menu-item .sub-menu{left:auto;right:0;width:300px}.wc-menu-item .wc-mini-cart .widget_shopping_cart_content li.sfHover a,.wc-menu-item .wc-mini-cart .widget_shopping_cart_content li:hover a{background:0 0}.wc-menu-item .wc-mini-cart .widget_shopping_cart{padding:15px}.woocommerce.widget_shopping_cart .cart_list li{padding:0 0 0 4em;margin:0;box-sizing:border-box;min-height:3em}.woocommerce.widget_shopping_cart{font-size:14px}.widget_shopping_cart .woocommerce-mini-cart__buttons{margin-bottom:0;display:flex}.woocommerce.widget_shopping_cart .woocommerce-mini-cart__buttons a{margin:0;width:calc(50% - 10px);text-align:center;padding:10px 15px;line-height:inherit;font-size:14px}.woocommerce.widget_shopping_cart .woocommerce-mini-cart__buttons a:first-child{margin-right:2px}.woocommerce.widget_shopping_cart .woocommerce-mini-cart__buttons a:last-child{margin-left:2px}.woocommerce.widget_shopping_cart .cart_list li a.remove{right:0;left:auto;height:20px;width:20px;border-width:1px;border-style:solid;border-radius:50%;padding:0;font-size:16px;line-height:17px;font-weight:400;position:relative;float:right}.woocommerce ul.cart_list li img{position:absolute;left:0;width:3em;height:auto;top:0;margin-left:0}#wc-mini-cart .woocommerce-mini-cart-item a{padding:0}.woocommerce-mini-cart-item .quantity{font-size:12px;display:block}.woocommerce.widget_shopping_cart .total{margin:15px 0;padding:15px;background:rgba(0,0,0,.05);border:0;font-size:14px}#wc-mini-cart .total{padding:15px;margin:15px -15px 15px;text-align:left}#generate-slideout-menu .total{padding:10px 20px;margin:20px -20px 20px}#generate-slideout-menu.do-overlay .total{margin:20px 0}.woocommerce.widget_shopping_cart a.button.wc-forward:after{display:none}.woocommerce.widget_shopping_cart .cart_list li.woocommerce-mini-cart-item:not(:last-child){margin-bottom:15px}.rtl .wc-mini-cart .woocommerce.widget_shopping_cart .cart_list li{padding:0 4em 0 0}.rtl .wc-mini-cart .woocommerce.widget_shopping_cart .cart_list li a.remove{float:left}.rtl .wc-mini-cart .woocommerce ul.cart_list li img{right:0}.slideout-widget .widget_shopping_cart_content,.slideout-widget .widget_shopping_cart_content a{font-size:14px}#generate-slideout-menu.do-overlay li.woocommerce-mini-cart-item{text-align:left}#wc-mini-cart a:not(.button){font-family:inherit}.wc-menu-item:not(.has-items) .wc-mini-cart{display:none}.woocommerce-mini-cart__empty-message{margin-bottom:0}.secondary-nav-aligned-center .secondary-navigation ul.woocommerce-mini-cart,.secondary-nav-aligned-right .secondary-navigation ul.woocommerce-mini-cart{font-size:inherit}#wc-mini-cart .widgettitle{display:none}@supports (display:grid){.woocommerce .related ul.products li.product,.woocommerce .up-sells ul.products li.product{width:auto;margin-left:0;margin-right:0;margin-bottom:0}}.woocommerce #respond input#submit,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button{border-radius:0;font-weight:inherit;font-size:inherit;line-height:inherit;padding:10px 20px}ul.products .woocommerce-text-align-center{text-align:center}ul.products li.product.woocommerce-text-align-center .price,ul.products li.product.woocommerce-text-align-center .star-rating{margin-left:auto;margin-right:auto}ul.products li.product.woocommerce-text-align-right .price,ul.products li.product.woocommerce-text-align-right .star-rating{margin-left:auto}.woocommerce .star-rating:before{color:rgba(0,0,0,.4)}.woocommerce p.stars a{color:rgba(0,0,0,.4)}.woocommerce p.stars.selected a:before{color:#ffa200}.woocommerce ul.products li.product .price del{display:inline;padding-right:10px}ul.products .woocommerce-text-align-right{text-align:right}.woocommerce #content div.product div.images,.woocommerce div.product div.images,.woocommerce-page #content div.product div.images,.woocommerce-page div.product div.images{width:50%}.woocommerce #content div.product div.summary,.woocommerce div.product div.summary,.woocommerce-page #content div.product div.summary,.woocommerce-page div.product div.summary{width:auto;float:none;overflow:hidden}.product_meta{font-size:80%;border-top:1px solid rgba(0,0,0,.1);padding-top:30px}.product_meta>span{display:block}.up-sells{margin-top:40px}.add-to-cart-panel form.cart,.woocommerce div.product.do-quantity-buttons form.cart{display:flex;flex-wrap:wrap}.woocommerce div.product form.cart>:not(.quantity):not(.single_add_to_cart_button){width:100%}.add-to-cart-panel form.cart{flex-shrink:0}.woocommerce .quantity .qty{height:100%;width:auto;max-width:80px;background:0 0;border:1px solid rgba(0,0,0,.1);padding:0 10px;height:50px}.do-quantity-buttons .quantity:not(.buttons-added) .qty{width:50px}.add-to-cart-panel .cart.do-quantity-buttons div.quantity,.do-quantity-buttons div.quantity{display:flex;align-items:center}.do-quantity-buttons form .quantity:not(.buttons-added):not(.hidden):after,.do-quantity-buttons form .quantity:not(.buttons-added):not(.hidden):before,.woocommerce form .quantity.buttons-added .minus,.woocommerce form .quantity.buttons-added .plus,.woocommerce form .quantity.buttons-added .qty{display:block;width:50px;height:100%;min-height:50px;background-color:transparent;border:1px solid rgba(0,0,0,.1);margin:0;padding:0;text-align:center;vertical-align:middle;-moz-appearance:textfield!important;-webkit-appearance:none;border-radius:0;color:inherit;box-sizing:border-box;text-decoration:none}.do-quantity-buttons form .quantity:not(.buttons-added):not(.hidden):after,.do-quantity-buttons form .quantity:not(.buttons-added):not(.hidden):before,.woocommerce form .quantity.buttons-added .minus,.woocommerce form .quantity.buttons-added .plus{display:flex;align-items:center;justify-content:center}.do-quantity-buttons form .quantity:not(.buttons-added):not(.hidden):before{content:"-";border-right:0}.do-quantity-buttons form .quantity:not(.buttons-added):not(.hidden):after{content:"+";border-left:0}.woocommerce form .quantity.buttons-added .qty:focus{border-color:rgba(0,0,0,.1)}.do-quantity-buttons form .quantity input[type=number]::-webkit-inner-spin-button,.do-quantity-buttons form .quantity input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.do-quantity-buttons form .quantity:not(.buttons-added):before,.woocommerce form .quantity.buttons-added .minus{border-right-width:0}.do-quantity-buttons form .quantity:not(.buttons-added):after,.woocommerce form .quantity.buttons-added .plus{border-left-width:0}.do-quantity-buttons .elementor-add-to-cart form .quantity:not(.buttons-added):after,.do-quantity-buttons .elementor-add-to-cart form .quantity:not(.buttons-added):before,.do-quantity-buttons form .quantity.hidden{display:none}.woocommerce div.product form.cart div.quantity.hidden{margin:0}.woocommerce div.product .woocommerce-tabs ul.tabs li::after,.woocommerce div.product .woocommerce-tabs ul.tabs li::before,.woocommerce div.product .woocommerce-tabs ul.tabs::before{display:none;border:0}.woocommerce div.product .woocommerce-tabs ul.tabs{display:flex;margin-left:0;padding-left:0}.woocommerce div.product .woocommerce-tabs ul.tabs li{background-color:rgba(0,0,0,.02);margin:0;border-radius:0;border-width:1px 1px 0 0;border-color:rgba(0,0,0,.08)}.woocommerce div.product .woocommerce-tabs ul.tabs li:first-child{border-left-width:1px}.woocommerce-ordering{float:left;margin-right:1em;margin-bottom:0;position:relative;padding:0}nav li.wc-menu-item{float:right}.cart-contents>span{line-height:0}.cart-contents>span:not(:empty){margin-left:10px}.rtl .cart-contents>span:not(:empty){margin-left:0;margin-right:10px}.cart-contents>span.gp-icon{margin-left:0}.rtl .cart-contents>span.gp-icon{margin-right:0}nav span.count{font-size:.8em;opacity:.5}.woocommerce a.remove{color:inherit!important;background:0 0!important;border:1px solid!important;border-color:inherit;font-weight:400;font-size:16px;width:20px;height:20px;line-height:17px;font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"!important}.woocommerce a.remove:hover{color:inherit!important;background:0 0!important;opacity:.7}.woocommerce .star-rating:before{opacity:.25;content:"SSSSS"}.woocommerce div.product .woocommerce-product-rating{margin:1em 0}.woocommerce div.product p.price,.woocommerce div.product span.price{color:inherit}.wc-has-gallery .secondary-image{position:absolute;opacity:0;transition:opacity .1s ease-in-out;left:50%;transform:translate(-50%,0);top:0}.wc-has-gallery picture.secondary-image{width:100%;height:100%}.wc-product-image:hover .secondary-image{opacity:1}.woocommerce ul.products li.product a img{margin-bottom:0}.woocommerce div.product .woocommerce-tabs ul.tabs li a,.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:initial}.woocommerce div.product p.price,.woocommerce ul.products li.product .price{font-weight:700}div.woocommerce-error a.button,div.woocommerce-error a.button:focus,div.woocommerce-error a.button:hover,div.woocommerce-info a.button,div.woocommerce-info a.button:focus,div.woocommerce-info a.button:hover,div.woocommerce-message a.button,div.woocommerce-message a.button:focus,div.woocommerce-message a.button:hover{background:0 0;padding:0}.woocommerce-error a,.woocommerce-info a,.woocommerce-message a{font-weight:700}.woocommerce-error,.woocommerce-info,.woocommerce-message{padding:20px 30px;border:0;border-left:10px solid rgba(0,0,0,.3)}.woocommerce-error::before,.woocommerce-info::before,.woocommerce-message::before{display:none}a.button.wc-forward:after{content:"\e901";font-family:"GP Premium";line-height:1em;padding-left:10px;position:relative;top:2px}.rtl a.button.wc-forward:after{display:none}.woocommerce-checkout .col2-set .col-1,.woocommerce-checkout .col2-set .col-2{float:none;width:100%;margin:0}.woocommerce-checkout .col2-set{width:52.9411764706%;float:left;margin-right:5.8823529412%}.rtl.woocommerce-checkout .col2-set{float:right;margin-right:0;margin-left:5.8823529412%}#customer_details+#wc_checkout_add_ons,#order_review,#order_review_heading{width:41.1764705882%;float:right;margin-right:0}.woocommerce-additional-fields>h3{margin-top:20px}.woocommerce table.shop_table,.woocommerce table.shop_table tfoot td,.woocommerce table.shop_table tfoot th{border:0;border-radius:0}.woocommerce table.shop_table th{background-color:rgba(0,0,0,.03)}.woocommerce table.shop_table td,.woocommerce table.shop_table th{padding:20px;border:0}.woocommerce table.shop_table td{background-color:rgba(0,0,0,.005);border-bottom:1px solid rgba(0,0,0,.1)}#add_payment_method .cart-collaterals .cart_totals tr td,#add_payment_method .cart-collaterals .cart_totals tr th,.woocommerce-cart .cart-collaterals .cart_totals tr td,.woocommerce-cart .cart-collaterals .cart_totals tr th,.woocommerce-checkout .cart-collaterals .cart_totals tr td,.woocommerce-checkout .cart-collaterals .cart_totals tr th{border-top:0}#add_payment_method #payment,#add_payment_method #payment div.payment_box,.woocommerce-cart #payment,.woocommerce-cart #payment div.payment_box,.woocommerce-checkout #payment,.woocommerce-checkout #payment div.payment_box{background-color:transparent;color:inherit}#add_payment_method #payment div.payment_box:before,.woocommerce-cart #payment div.payment_box:before,.woocommerce-checkout #payment div.payment_box:before{display:none}#payment .payment_methods>.wc_payment_method>label{padding:20px;background-color:rgba(0,0,0,.04);display:block;cursor:pointer}#payment .payment_methods li.wc_payment_method>input[type=radio]:first-child:checked+label{font-weight:700;background-color:rgba(0,0,0,.07)}#payment .payment_methods li.wc_payment_method>input[type=radio]:first-child{clip:rect(1px,1px,1px,1px);position:absolute!important}#payment .payment_methods>.wc_payment_method>label:before{display:inline-block;font-size:inherit;-webkit-font-smoothing:antialiased;content:"\e902";margin-right:.5407911001em;transition:color,ease,.2s;font-family:"GP Premium"}#payment .payment_methods li.wc_payment_method>input[type=radio]:first-child:checked+label:before{content:"\e904"}#add_payment_method #payment ul.payment_methods,.woocommerce-cart #payment ul.payment_methods,.woocommerce-checkout #payment ul.payment_methods{padding:0;border:0}.woocommerce #payment #place_order,.woocommerce-page #payment #place_order{float:none;width:100%;padding-top:20px;padding-bottom:20px;font-weight:700;font-size:150%}#add_payment_method #payment div.form-row,.woocommerce-cart #payment div.form-row,.woocommerce-checkout #payment div.form-row{padding-left:0;padding-right:0;padding-top:0}#add_payment_method #payment ul.payment_methods li img,.woocommerce-cart #payment ul.payment_methods li img,.woocommerce-checkout #payment ul.payment_methods li img{float:right}#add_payment_method #payment .payment_method_paypal .about_paypal,.woocommerce-cart #payment .payment_method_paypal .about_paypal,.woocommerce-checkout #payment .payment_method_paypal .about_paypal{float:none;display:inline-block;line-height:1}a.checkout-button:after{display:none}.woocommerce #content table.cart td.actions .input-text,.woocommerce table.cart td.actions .input-text,.woocommerce-page #content table.cart td.actions .input-text,.woocommerce-page table.cart td.actions .input-text{width:150px;padding:10px 15px}.woocommerce .coupon .button{border:1px solid transparent}.woocommerce ul.products li.product .woocommerce-product-details__short-description p:last-child{margin-bottom:0}.wc-product-image{text-align:center}.woocommerce-text-align-left .wc-product-image{text-align:left}.woocommerce-text-align-right .wc-product-image{text-align:right}.inside-wc-product-image{position:relative;display:inline-block}.woocommerce ul.products li.product.woocommerce-image-align-left .wc-product-image{float:left;margin-right:2em}.woocommerce ul.products li.product.woocommerce-image-align-right .wc-product-image{float:right;margin-left:2em}.woocommerce ul.products li.product.woocommerce-image-align-left a .wc-product-image img,.woocommerce ul.products li.product.woocommerce-image-align-right a .wc-product-image img{width:auto}.woocommerce-cart ul.products li.product.woocommerce-image-align-left .wc-product-image,.woocommerce-cart ul.products li.product.woocommerce-image-align-right .wc-product-image{float:none;margin:0}.woocommerce-cart ul.products li.product.woocommerce-image-align-left a .wc-product-image img,.woocommerce-cart ul.products li.product.woocommerce-image-align-right a .wc-product-image img{width:100%}.woocommerce .widget_price_filter .price_slider_amount .button{font-size:1em;line-height:normal}.woocommerce .related ul.products li.product a img,.woocommerce .up-sells ul.products li.product a img{margin-bottom:0}.woocommerce-review-link{font-size:80%}.woocommerce-Reviews .comment-reply-title{font-size:120%;font-weight:700;display:block;margin-bottom:10px}.woocommerce-MyAccount-navigation ul{margin:0;border-top:1px solid rgba(0,0,0,.1)}.site-main .woocommerce-MyAccount-navigation li{margin:0;padding:0}.woocommerce-MyAccount-navigation li a{display:block;padding:20px 0;border-bottom:1px solid rgba(0,0,0,.1);font-size:85%}.woocommerce-MyAccount-navigation li.is-active a{font-weight:700}.woocommerce-MyAccount-navigation li a:hover{border-bottom:1px solid rgba(0,0,0,.2)}.woocommerce-MyAccount-navigation li.is-active a:after{font-family:"GP Premium";content:"\e901";float:right;font-weight:700;font-size:115%}.woocommerce-account .woocommerce-MyAccount-navigation{width:25%}.woocommerce #payment .terms{padding:20px}h2.woocommerce-loop-category__title mark{background:0 0;font-size:80%;opacity:.5}.woocommerce form.checkout_coupon,.woocommerce form.login,.woocommerce form.register{padding:0;margin:0 0 1.5em;border:0}#ship-to-different-address{padding:3px;font-size:inherit}.woocommerce-image-align-left .products ul,.woocommerce-image-align-left .products ul:after,.woocommerce-image-align-left ul.products,.woocommerce-image-align-left ul.products:after,.woocommerce-image-align-right .products ul,.woocommerce-image-align-right .products ul:after,.woocommerce-image-align-right ul.products,.woocommerce-image-align-right ul.products:after{clear:none}.woocommerce nav.woocommerce-pagination{margin-top:60px;clear:both}.woocommerce input.button:disabled,.woocommerce input.button:disabled:hover,.woocommerce input.button:disabled[disabled],.woocommerce input.button:disabled[disabled]:hover{background-color:transparent;color:initial;opacity:.3}.entry-summary+.up-sells{clear:both}.woocommerce form .form-row input.input-text,.woocommerce form .form-row textarea{line-height:1.5}.main-navigation a.cart-contents:not(.has-svg-icon):before,.secondary-navigation a.cart-contents:not(.has-svg-icon):before{content:"\f07a";display:inline-block;font-family:"GP Premium";font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.main-navigation a.cart-contents:not(.has-svg-icon).shopping-bag:before,.secondary-navigation a.cart-contents:not(.has-svg-icon).shopping-bag:before{content:"\f290"}.main-navigation a.cart-contents:not(.has-svg-icon).shopping-basket:before,.secondary-navigation a.cart-contents:not(.has-svg-icon).shopping-basket:before{content:"\f291"}.cart-contents>span.number-of-items{font-size:11px;display:inline-block;background:rgba(255,255,255,.1);line-height:1.7em;height:1.7em;width:1.7em;text-align:center;border-radius:50%;margin-left:5px;position:relative;top:-5px;display:none}.cart-contents>span.number-of-items.no-items{display:none}.woocommerce-MyAccount-navigation ul{list-style-type:none}form.checkout:after,form.checkout:before{content:'';display:table}form.checkout:after{clear:both}.add-to-cart-panel{position:fixed;top:0;left:0;right:0;background:#fff;padding:20px;opacity:0;transition:opacity .5s ease-in-out,transform .5s ease-in-out;box-shadow:0 2px 2px -2px rgba(0,0,0,.2);z-index:101;font-size:90%;box-sizing:border-box;transform:translateY(-100%)}.add-to-cart-panel.item-added,.add-to-cart-panel.show-sticky-add-to-cart{opacity:1}.add-to-cart-panel>div{display:flex;align-items:center}.add-to-cart-panel .continue-shopping{margin-right:auto}.add-to-cart-panel .continue-shopping .gp-icon{display:none}.add-to-cart-panel .cart-info{margin-right:20px}.add-to-cart-panel img{height:50px;width:auto;vertical-align:middle}.add-to-cart-panel .product-title{margin-left:20px;margin-right:auto;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.add-to-cart-panel .product-price{margin-right:20px}.add-to-cart-panel div.quantity{margin-right:4px}.add-to-cart-panel .cart-data{font-size:12px}.add-to-cart-panel del{opacity:.4}.do-quantity-buttons input.qty::-webkit-inner-spin-button,.do-quantity-buttons input.qty::-webkit-outer-spin-button{-webkit-appearance:none}.wc-menu-cart-activated .menu-toggle{text-align:left}.woocommerce-order-received .woocommerce-customer-details .col2-set{float:none;width:auto}.woocommerce-order-received .woocommerce-customer-details .col2-set .col-1{margin-bottom:1.5em} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/customizer/customizer.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/customizer/customizer.php deleted file mode 100644 index a03e0370..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/customizer/customizer.php +++ /dev/null @@ -1,1031 +0,0 @@ -register_control_type( 'GeneratePress_Title_Customize_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Pro_Range_Slider_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Information_Customize_Control' ); - $wp_customize->register_control_type( 'GeneratePress_Section_Shortcut_Control' ); - } - - $wp_customize->add_section( - 'generate_woocommerce_layout', - array( - 'title' => __( 'WooCommerce', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 100, - 'panel' => 'generate_layout_panel' - ) - ); - - $wp_customize->add_control( - new GeneratePress_Section_Shortcut_Control( - $wp_customize, - 'generate_woocommerce_layout_shortcuts', - array( - 'section' => 'generate_woocommerce_layout', - 'element' => __( 'WooCommerce', 'gp-premium' ), - 'shortcuts' => array( - 'colors' => 'generate_woocommerce_colors', - 'typography' => 'generate_woocommerce_typography', - ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname', - 'priority' => 0, - ) - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_woocommerce_general_title', - array( - 'section' => 'generate_woocommerce_layout', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'General', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname' - ) - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[cart_menu_item]', - array( - 'default' => $defaults['cart_menu_item'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[cart_menu_item]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display cart in menu', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[cart_menu_item]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[menu_mini_cart]', - array( - 'default' => $defaults['menu_mini_cart'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[menu_mini_cart]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display mini cart sub-menu', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[menu_mini_cart]', - 'active_callback' => 'generate_premium_wc_menu_item_active', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[cart_menu_item_icon]', - array( - 'default' => $defaults['cart_menu_item_icon'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[cart_menu_item_icon]', - array( - 'type' => 'select', - 'label' => __( 'Menu Item Icon', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'choices' => array( - 'shopping-cart' => __( 'Shopping Cart', 'gp-premium' ), - 'shopping-bag' => __( 'Shopping Bag', 'gp-premium' ), - 'shopping-basket' => __( 'Shopping Basket', 'gp-premium' ), - ), - 'settings' => 'generate_woocommerce_settings[cart_menu_item_icon]', - 'active_callback' => 'generatepress_wc_menu_cart_active', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[cart_menu_item_content]', - array( - 'default' => $defaults['cart_menu_item_content'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[cart_menu_item_content]', - array( - 'type' => 'select', - 'label' => __( 'Menu Item Content', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'choices' => array( - 'amount' => __( 'Amount', 'gp-premium' ), - 'number' => __( 'Number of Items', 'gp-premium' ), - ), - 'settings' => 'generate_woocommerce_settings[cart_menu_item_content]', - 'active_callback' => 'generatepress_wc_menu_cart_active', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[breadcrumbs]', - array( - 'default' => $defaults['breadcrumbs'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[breadcrumbs]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display breadcrumbs', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[breadcrumbs]', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_woocommerce_shop_page_title', - array( - 'section' => 'generate_woocommerce_layout', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Shop', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname' - ) - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[sidebar_layout]', - array( - 'default' => $defaults['sidebar_layout'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[sidebar_layout]', - array( - 'type' => 'select', - 'label' => __( 'Sidebar Layout', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'choices' => array( - 'left-sidebar' => __( 'Sidebar / Content', 'gp-premium' ), - 'right-sidebar' => __( 'Content / Sidebar', 'gp-premium' ), - 'no-sidebar' => __( 'Content (no sidebars)', 'gp-premium' ), - 'both-sidebars' => __( 'Sidebar / Content / Sidebar', 'gp-premium' ), - 'both-left' => __( 'Sidebar / Sidebar / Content', 'gp-premium' ), - 'both-right' => __( 'Content / Sidebar / Sidebar', 'gp-premium' ) - ), - 'settings' => 'generate_woocommerce_settings[sidebar_layout]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[columns]', array( - 'default' => $defaults['columns'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'absint' - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[tablet_columns]', array( - 'default' => $defaults['tablet_columns'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'absint' - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[mobile_columns]', array( - 'default' => $defaults['mobile_columns'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'absint' - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'gp_woocommerce_columns', - array( - 'label' => __( 'Product Columns', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => array( - 'desktop' => 'generate_woocommerce_settings[columns]', - 'tablet' => 'generate_woocommerce_settings[tablet_columns]', - 'mobile' => 'generate_woocommerce_settings[mobile_columns]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 1, - 'max' => 6, - 'step' => 1, - 'edit' => false, - 'unit' => 'Col', - ), - 'tablet' => array( - 'min' => 1, - 'max' => 3, - 'step' => 1, - 'edit' => false, - 'unit' => 'Col', - ), - 'mobile' => array( - 'min' => 1, - 'max' => 3, - 'step' => 1, - 'edit' => false, - 'unit' => 'Col', - ), - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[columns_gap]', array( - 'default' => $defaults['columns_gap'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'absint' - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[tablet_columns_gap]', array( - 'default' => $defaults['tablet_columns_gap'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint' - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[mobile_columns_gap]', array( - 'default' => $defaults['mobile_columns_gap'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'generate_premium_sanitize_empty_absint' - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'gp_woocommerce_column_gap', - array( - 'label' => __( 'Column Gap', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => array( - 'desktop' => 'generate_woocommerce_settings[columns_gap]', - 'tablet' => 'generate_woocommerce_settings[tablet_columns_gap]', - 'mobile' => 'generate_woocommerce_settings[mobile_columns_gap]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 0, - 'max' => 100, - 'step' => 5, - 'edit' => true, - 'unit' => 'px', - ), - 'tablet' => array( - 'min' => 0, - 'max' => 100, - 'step' => 5, - 'edit' => true, - 'unit' => 'px', - ), - 'mobile' => array( - 'min' => 0, - 'max' => 100, - 'step' => 5, - 'edit' => true, - 'unit' => 'px', - ), - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[product_archive_image_alignment]', - array( - 'default' => $defaults['product_archive_image_alignment'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[product_archive_image_alignment]', - array( - 'type' => 'radio', - 'label' => __( 'Image Alignment', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'choices' => array( - 'left' => __( 'Left', 'gp-premium' ), - 'center' => __( 'Center', 'gp-premium' ), - 'right' => __( 'Right', 'gp-premium' ), - ), - 'settings' => 'generate_woocommerce_settings[product_archive_image_alignment]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[products_per_page]', - array( - 'default' => $defaults['products_per_page'], - 'type' => 'option', - 'sanitize_callback' => 'absint' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[products_per_page]', - array( - 'type' => 'text', - 'label' => __( 'Products Per Page', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[products_per_page]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[product_archive_alignment]', - array( - 'default' => $defaults['product_archive_alignment'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[product_archive_alignment]', - array( - 'type' => 'radio', - 'label' => __( 'Text Alignment', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'choices' => array( - 'left' => __( 'Left', 'gp-premium' ), - 'center' => __( 'Center', 'gp-premium' ), - 'right' => __( 'Right', 'gp-premium' ), - ), - 'settings' => 'generate_woocommerce_settings[product_archive_alignment]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[off_canvas_panel_on_add_to_cart]', - array( - 'default' => $defaults['off_canvas_panel_on_add_to_cart'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[off_canvas_panel_on_add_to_cart]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display cart panel on add to cart', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[off_canvas_panel_on_add_to_cart]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[shop_page_title]', - array( - 'default' => $defaults['shop_page_title'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[shop_page_title]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display page title', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[shop_page_title]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[product_results_count]', - array( - 'default' => $defaults['product_results_count'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[product_results_count]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display product results count', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[product_results_count]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[product_sorting]', - array( - 'default' => $defaults['product_sorting'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[product_sorting]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display product sorting', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[product_sorting]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[product_archive_image]', - array( - 'default' => $defaults['product_archive_image'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[product_archive_image]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display product image', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[product_archive_image]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[product_secondary_image]', - array( - 'default' => $defaults['product_secondary_image'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[product_secondary_image]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display secondary image on hover', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[product_secondary_image]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[product_archive_title]', - array( - 'default' => $defaults['product_archive_title'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[product_archive_title]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display product title', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[product_archive_title]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[product_archive_sale_flash]', - array( - 'default' => $defaults['product_archive_sale_flash'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[product_archive_sale_flash]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display sale flash', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[product_archive_sale_flash]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[product_archive_sale_flash_overlay]', - array( - 'default' => $defaults['product_archive_sale_flash_overlay'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[product_archive_sale_flash_overlay]', - array( - 'type' => 'checkbox', - 'label' => __( 'Sale flash over image', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[product_archive_sale_flash_overlay]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[product_archive_rating]', - array( - 'default' => $defaults['product_archive_rating'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[product_archive_rating]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display rating', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[product_archive_rating]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[product_archive_price]', - array( - 'default' => $defaults['product_archive_price'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[product_archive_price]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display price', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[product_archive_price]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[product_archive_add_to_cart]', - array( - 'default' => $defaults['product_archive_add_to_cart'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[product_archive_add_to_cart]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display add to cart button', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[product_archive_add_to_cart]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[product_archive_description]', - array( - 'default' => $defaults['product_archive_description'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[product_archive_description]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display short description', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[product_archive_description]', - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_woocommerce_single_product_title', - array( - 'section' => 'generate_woocommerce_layout', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Single Product', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname' - ) - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[single_sidebar_layout]', - array( - 'default' => $defaults['single_sidebar_layout'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_choices' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[single_sidebar_layout]', - array( - 'type' => 'select', - 'label' => __( 'Sidebar Layout', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'choices' => array( - 'inherit' => __( 'Inherit', 'gp-premium' ), - 'left-sidebar' => __( 'Sidebar / Content', 'gp-premium' ), - 'right-sidebar' => __( 'Content / Sidebar', 'gp-premium' ), - 'no-sidebar' => __( 'Content (no sidebars)', 'gp-premium' ), - 'both-sidebars' => __( 'Sidebar / Content / Sidebar', 'gp-premium' ), - 'both-left' => __( 'Sidebar / Sidebar / Content', 'gp-premium' ), - 'both-right' => __( 'Content / Sidebar / Sidebar', 'gp-premium' ) - ), - 'settings' => 'generate_woocommerce_settings[single_sidebar_layout]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[single_product_image_width]', array( - 'default' => $defaults['single_product_image_width'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'absint' - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'gp_woocommerce_single_product_image_width', - array( - 'label' => __( 'Product Image Area Width', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => array( - 'desktop' => 'generate_woocommerce_settings[single_product_image_width]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 10, - 'max' => 100, - 'step' => 5, - 'edit' => true, - 'unit' => '%', - ), - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[sticky_add_to_cart_panel]', - array( - 'default' => $defaults['sticky_add_to_cart_panel'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[sticky_add_to_cart_panel]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display add to cart panel on scroll', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[sticky_add_to_cart_panel]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[quantity_buttons]', - array( - 'default' => $defaults['quantity_buttons'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[quantity_buttons]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display quantity buttons', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[quantity_buttons]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[single_product_sale_flash]', - array( - 'default' => $defaults['single_product_sale_flash'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[single_product_sale_flash]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display sale flash', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[single_product_sale_flash]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[product_tabs]', - array( - 'default' => $defaults['product_tabs'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[product_tabs]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display product tabs', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[product_tabs]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[product_related]', - array( - 'default' => $defaults['product_related'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[product_related]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display related products', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[product_related]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[product_upsells]', - array( - 'default' => $defaults['product_upsells'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[product_upsells]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display upsell products', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[product_upsells]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[related_upsell_columns]', array( - 'default' => $defaults['related_upsell_columns'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'absint' - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[tablet_related_upsell_columns]', array( - 'default' => $defaults['tablet_related_upsell_columns'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'absint' - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[mobile_related_upsell_columns]', array( - 'default' => $defaults['mobile_related_upsell_columns'], - 'type' => 'option', - 'capability' => 'edit_theme_options', - 'sanitize_callback' => 'absint' - ) - ); - - $wp_customize->add_control( - new GeneratePress_Pro_Range_Slider_Control( - $wp_customize, - 'gp_woocommerce_related_upsell_columns', - array( - 'label' => __( 'Related/Upsell Columns', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => array( - 'desktop' => 'generate_woocommerce_settings[related_upsell_columns]', - 'tablet' => 'generate_woocommerce_settings[tablet_related_upsell_columns]', - 'mobile' => 'generate_woocommerce_settings[mobile_related_upsell_columns]', - ), - 'choices' => array( - 'desktop' => array( - 'min' => 1, - 'max' => 6, - 'step' => 1, - 'edit' => false, - 'unit' => 'Col', - ), - 'tablet' => array( - 'min' => 1, - 'max' => 3, - 'step' => 1, - 'edit' => false, - 'unit' => 'Col', - ), - 'mobile' => array( - 'min' => 1, - 'max' => 3, - 'step' => 1, - 'edit' => false, - 'unit' => 'Col', - ), - ), - ) - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[product_meta]', - array( - 'default' => $defaults['product_meta'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[product_meta]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display product meta data', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[product_meta]', - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[product_description]', - array( - 'default' => $defaults['product_description'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[product_description]', - array( - 'type' => 'checkbox', - 'label' => __( 'Display short description', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[product_description]', - ) - ); - - $wp_customize->add_section( - 'generate_woocommerce_colors', - array( - 'title' => __( 'WooCommerce', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 200, - 'panel' => 'generate_colors_panel' - ) - ); - - $wp_customize->add_section( - 'generate_woocommerce_typography', - array( - 'title' => __( 'WooCommerce', 'gp-premium' ), - 'capability' => 'edit_theme_options', - 'priority' => 200, - 'panel' => 'generate_typography_panel' - ) - ); - - $wp_customize->add_control( - new GeneratePress_Title_Customize_Control( - $wp_customize, - 'generate_woocommerce_checkout_title', - array( - 'section' => 'generate_woocommerce_layout', - 'type' => 'generatepress-customizer-title', - 'title' => __( 'Checkout', 'gp-premium' ), - 'settings' => ( isset( $wp_customize->selective_refresh ) ) ? array() : 'blogname' - ) - ) - ); - - $wp_customize->add_setting( - 'generate_woocommerce_settings[distraction_free]', - array( - 'default' => $defaults['distraction_free'], - 'type' => 'option', - 'sanitize_callback' => 'generate_premium_sanitize_checkbox' - ) - ); - - $wp_customize->add_control( - 'generate_woocommerce_settings[distraction_free]', - array( - 'type' => 'checkbox', - 'label' => __( 'Distraction-free mode', 'gp-premium' ), - 'description' => __( 'Remove unnecessary distractions like sidebars, footer widgets and sticky menus.', 'gp-premium' ), - 'section' => 'generate_woocommerce_layout', - 'settings' => 'generate_woocommerce_settings[distraction_free]', - ) - ); - -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/customizer/js/customizer.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/customizer/js/customizer.js deleted file mode 100644 index a455a2f7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/customizer/js/customizer.js +++ /dev/null @@ -1,6 +0,0 @@ -jQuery( function( $ ) { - $( '#customize-control-generate_woocommerce_primary_button_message a' ).on( 'click', function( e ) { - e.preventDefault(); - wp.customize.control( 'generate_settings[form_button_background_color]' ).focus(); - } ); -} ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/functions.php b/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/functions.php deleted file mode 100644 index b22c8ae8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/functions.php +++ /dev/null @@ -1,1571 +0,0 @@ - true, - 'cart_menu_item_icon' => 'shopping-cart', - 'cart_menu_item_content' => 'amount', - 'menu_mini_cart' => false, - 'off_canvas_panel_on_add_to_cart' => false, - 'sticky_add_to_cart_panel' => false, - 'sidebar_layout' => 'right-sidebar', - 'single_sidebar_layout' => 'inherit', - 'products_per_page' => 9, - 'columns' => 4, - 'tablet_columns' => 2, - 'mobile_columns' => 1, - 'columns_gap' => 50, - 'tablet_columns_gap' => '', - 'mobile_columns_gap' => '', - 'related_upsell_columns' => 4, - 'tablet_related_upsell_columns' => 2, - 'mobile_related_upsell_columns' => 1, - 'product_archive_image_alignment' => 'center', - 'product_archive_alignment' => 'center', - 'shop_page_title' => true, - 'product_results_count' => true, - 'product_sorting' => true, - 'product_archive_image' => true, - 'product_secondary_image' => true, - 'product_archive_title' => true, - 'product_archive_sale_flash' => true, - 'product_archive_sale_flash_overlay' => true, - 'product_archive_rating' => true, - 'product_archive_price' => true, - 'product_archive_add_to_cart' => true, - 'single_product_sale_flash' => true, - 'single_product_image_width' => '50', - 'product_tabs' => true, - 'product_related' => true, - 'product_upsells' => true, - 'product_meta' => true, - 'product_description' => true, - 'quantity_buttons' => true, - 'breadcrumbs' => true, - 'distraction_free' => true, - 'product_archive_description' => false, - ) ); -} - -add_filter( 'generate_color_option_defaults', 'generatepress_wc_color_defaults' ); -/** - * Set the WC color option defaults. - * - * @since 1.3 - */ -function generatepress_wc_color_defaults( $defaults ) { - $defaults[ 'wc_alt_button_background' ] = '#1e73be'; - $defaults[ 'wc_alt_button_background_hover' ] = '#377fbf'; - $defaults[ 'wc_alt_button_text' ] = '#ffffff'; - $defaults[ 'wc_alt_button_text_hover' ] = '#ffffff'; - $defaults[ 'wc_rating_stars' ] = '#ffa200'; - $defaults[ 'wc_sale_sticker_background' ] = '#222222'; - $defaults[ 'wc_sale_sticker_text' ] = '#ffffff'; - $defaults[ 'wc_price_color' ] = '#222222'; - $defaults[ 'wc_product_tab' ] = '#222222'; - $defaults[ 'wc_product_tab_highlight' ] = '#1e73be'; - $defaults[ 'wc_success_message_background' ] = '#0b9444'; - $defaults[ 'wc_success_message_text' ] = '#ffffff'; - $defaults[ 'wc_info_message_background' ] = '#1e73be'; - $defaults[ 'wc_info_message_text' ] = '#ffffff'; - $defaults[ 'wc_error_message_background' ] = '#e8626d'; - $defaults[ 'wc_error_message_text' ] = '#ffffff'; - $defaults[ 'wc_product_title_color' ] = ''; - $defaults[ 'wc_product_title_color_hover' ] = ''; - - $defaults['wc_mini_cart_background_color'] = '#ffffff'; - $defaults['wc_mini_cart_text_color'] = '#000000'; - $defaults['wc_mini_cart_button_background'] = ''; - $defaults['wc_mini_cart_button_text'] = ''; - $defaults['wc_mini_cart_button_background_hover'] = ''; - $defaults['wc_mini_cart_button_text_hover'] = ''; - - $defaults['wc_panel_cart_background_color'] = '#ffffff'; - $defaults['wc_panel_cart_text_color'] = '#000000'; - $defaults['wc_panel_cart_button_background'] = ''; - $defaults['wc_panel_cart_button_text'] = ''; - $defaults['wc_panel_cart_button_background_hover'] = ''; - $defaults['wc_panel_cart_button_text_hover'] = ''; - - $defaults['wc_price_slider_background_color'] = '#dddddd'; - $defaults['wc_price_slider_bar_color'] = '#666666'; - - return $defaults; -} - -add_filter( 'generate_font_option_defaults', 'generatepress_wc_typography_defaults' ); -/** - * Set the WC typography option defaults. - * - * @since 1.3 - */ -function generatepress_wc_typography_defaults( $defaults ) { - $defaults[ 'wc_product_title_font_weight' ] = 'normal'; - $defaults[ 'wc_product_title_font_transform' ] = 'none'; - $defaults[ 'wc_product_title_font_size' ] = '20'; - $defaults[ 'mobile_wc_product_title_font_size' ] = ''; - $defaults[ 'wc_related_product_title_font_size' ] = '20'; - return $defaults; -} - -add_filter( 'generate_navigation_class', 'generatepress_wc_navigation_class' ); -/** - * Add navigation class when the menu icon is enabled. - * - * @since 1.3 - */ -function generatepress_wc_navigation_class( $classes ) { - $classes[] = ( generatepress_wc_get_setting( 'cart_menu_item' ) ) ? 'wc-menu-cart-activated' : ''; - return $classes; -} - -add_filter( 'post_class', 'generatepress_wc_post_class' ); -add_filter( 'product_cat_class', 'generatepress_wc_post_class' ); -/** - * Add post classes to the products. - * - * @since 1.3 - * - * @param array $classes Existing product classes. - * @return array - */ -function generatepress_wc_post_class( $classes ) { - if ( 'product' == get_post_type() ) { - $classes[] = ( generatepress_wc_get_setting( 'product_archive_sale_flash_overlay' ) && generatepress_wc_get_setting( 'product_archive_image' ) ) ? 'sales-flash-overlay' : ''; - $classes[] = 'woocommerce-text-align-' . generatepress_wc_get_setting( 'product_archive_alignment' ); - - if ( is_single() ) { - $classes[] = 'wc-related-upsell-columns-' . generatepress_wc_get_setting( 'related_upsell_columns' ); - $classes[] = 'wc-related-upsell-tablet-columns-' . generatepress_wc_get_setting( 'tablet_related_upsell_columns' ); - $classes[] = 'wc-related-upsell-mobile-columns-' . generatepress_wc_get_setting( 'mobile_related_upsell_columns' ); - } else { - $classes[] = 'woocommerce-image-align-' . generatepress_wc_get_setting( 'product_archive_image_alignment' ); - } - } - - if ( 'product' === get_post_type() || is_cart() ) { - if ( generatepress_wc_get_setting( 'quantity_buttons' ) ) { - $classes[] = 'do-quantity-buttons'; - $product = wc_get_product( get_the_ID() ); - - $check_stock = is_callable( array( $product, 'managing_stock' ) ) && - is_callable( array( $product, 'get_stock_quantity' ) ) && - is_callable( array( $product, 'backorders_allowed' ) ) && - is_callable( array( $product, 'is_sold_individually' ) ) && - function_exists( 'is_product' ) && - is_product() && - defined( 'WC_VERSION' ); - - if ( $check_stock && version_compare( WC_VERSION, '7.4.0', '>=' ) ) { - $managing_stock = $product->managing_stock(); - $stock_quantity = $product->get_stock_quantity(); - $backorders_allowed = $product->backorders_allowed(); - $sold_individually = $product->is_sold_individually(); - - if ( $sold_individually || ( $managing_stock && $stock_quantity < 2 && ! $backorders_allowed ) ) { - $classes = array_diff( $classes, array( 'do-quantity-buttons' ) ); - } - } - } - } - - return $classes; -} - -add_action( 'woocommerce_before_shop_loop', 'generatepress_wc_before_shop_loop' ); -/** - * Add opening element inside shop page. - * - * @since 1.3 - */ -function generatepress_wc_before_shop_loop() { - $classes = apply_filters( 'generate_woocommerce_container_classes', array( - 'wc-columns-container', - 'wc-columns-' . generatepress_wc_get_setting( 'columns' ), - 'wc-tablet-columns-' . generatepress_wc_get_setting( 'tablet_columns' ), - 'wc-mobile-columns-' . generatepress_wc_get_setting( 'mobile_columns' ), - ) ); - - $classes = array_map('esc_attr', $classes); - echo '
            '; -} - -add_action( 'woocommerce_after_shop_loop', 'generatepress_wc_after_shop_loop' ); -/** - * Add closing element inside shop page. - * - * @since 1.3 - */ -function generatepress_wc_after_shop_loop() { - echo '
            '; -} - -add_action( 'wp_enqueue_scripts', 'generatepress_wc_scripts', 100 ); -/** - * Add scripts and styles. - * - * @since 1.3 - */ -function generatepress_wc_scripts() { - if ( ! function_exists( 'is_checkout' ) ) { - return; - } - - $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; - wp_enqueue_style( 'generate-woocommerce', plugin_dir_url( __FILE__ ) . "css/woocommerce{$suffix}.css", array(), GENERATE_WOOCOMMERCE_VERSION ); - wp_enqueue_style( 'generate-woocommerce-mobile', plugin_dir_url( __FILE__ ) . "css/woocommerce-mobile{$suffix}.css", array(), GENERATE_WOOCOMMERCE_VERSION, generate_premium_get_media_query( 'mobile' ) ); - - if ( - generatepress_wc_get_setting( 'cart_menu_item' ) || - generatepress_wc_get_setting( 'off_canvas_panel_on_add_to_cart' ) || - generatepress_wc_show_sticky_add_to_cart() || - generatepress_wc_get_setting( 'quantity_buttons' ) - ) { - wp_enqueue_script( 'generate-woocommerce', plugin_dir_url( __FILE__ ) . "js/woocommerce{$suffix}.js", array( 'jquery' ), GENERATE_WOOCOMMERCE_VERSION, true ); - } - - $show_add_to_cart_panel = false; - - if ( ! is_singular() && generatepress_wc_get_setting( 'off_canvas_panel_on_add_to_cart' ) ) { - $show_add_to_cart_panel = true; - } - - wp_localize_script( - 'generate-woocommerce', - 'generateWooCommerce', - array( - 'quantityButtons' => generatepress_wc_get_setting( 'quantity_buttons' ), - 'stickyAddToCart' => generatepress_wc_show_sticky_add_to_cart(), - 'addToCartPanel' => apply_filters( 'generate_woocommerce_show_add_to_cart_panel', $show_add_to_cart_panel ), - ) - ); - - if ( generatepress_wc_get_setting( 'distraction_free' ) && is_checkout() ) { - wp_dequeue_script( 'generate-advanced-sticky' ); - wp_dequeue_script( 'generate-sticky' ); - } - - $font_icons = true; - - if ( function_exists( 'generate_get_option' ) ) { - if ( 'font' !== generate_get_option( 'icons' ) ) { - $font_icons = false; - } - } - - if ( $font_icons ) { - wp_enqueue_style( 'gp-premium-icons' ); - } -} - -/** - * Wrapper class to get the options. - * - * @since 1.3 - * - * @return string $setting The option name. - * @return string The value. - */ -function generatepress_wc_get_setting( $setting ) { - $settings = wp_parse_args( - get_option( 'generate_woocommerce_settings', array() ), - generatepress_wc_defaults() - ); - - return $settings[ $setting ]; -} - -add_filter( 'generate_sidebar_layout', 'generatepress_wc_sidebar_layout' ); -/** - * Set the WC sidebars. - * - * @since 1.3 - * - * @param string Existing layout - * @return string New layout - */ -function generatepress_wc_sidebar_layout( $layout ) { - if ( function_exists( 'is_woocommerce' ) && is_woocommerce() ) { - $layout = generatepress_wc_get_setting( 'sidebar_layout' ); - - if ( is_single() ) { - if ( 'inherit' !== generatepress_wc_get_setting( 'single_sidebar_layout' ) ) { - $layout = generatepress_wc_get_setting( 'single_sidebar_layout' ); - } - - if ( get_post_meta( get_the_ID(), '_generate-sidebar-layout-meta', true ) ) { - $layout = get_post_meta( get_the_ID(), '_generate-sidebar-layout-meta', true ); - } - } - } - - return $layout; -} - -add_filter( 'loop_shop_columns', 'generatepress_wc_product_columns', 999 ); -/** - * Set the WC column number. - * - * @since 1.3 - */ -function generatepress_wc_product_columns() { - return generatepress_wc_get_setting( 'columns' ); -} - -add_filter( 'loop_shop_per_page', 'generatepress_wc_products_per_page', 20 ); -/** - * Set the WC products per page. - * - * @since 1.3 - */ -function generatepress_wc_products_per_page() { - return generatepress_wc_get_setting( 'products_per_page' ); -} - -add_action( 'wp', 'generatepress_wc_setup' ); -/** - * Set up WC. - * - * @since 1.3 - */ -function generatepress_wc_setup() { - - // Add support for WC features - add_theme_support( 'wc-product-gallery-zoom' ); - add_theme_support( 'wc-product-gallery-lightbox' ); - add_theme_support( 'wc-product-gallery-slider' ); - - remove_action( 'wp_enqueue_scripts', 'generate_woocommerce_css', 100 ); - - remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 ); - add_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 10 ); - - add_action( 'woocommerce_before_shop_loop_item_title', 'generatepress_wc_image_wrapper_open', 8 ); - add_action( 'woocommerce_before_subcategory_title', 'generatepress_wc_image_wrapper_open', 8 ); - add_action( 'woocommerce_shop_loop_item_title', 'generatepress_wc_image_wrapper_close', 8 ); - add_action( 'woocommerce_before_subcategory_title', 'generatepress_wc_image_wrapper_close', 20 ); - - $archive_results_count = generatepress_wc_get_setting( 'product_results_count' ); - $archive_sorting = generatepress_wc_get_setting( 'product_sorting' ); - $archive_image = generatepress_wc_get_setting( 'product_archive_image' ); - $archive_sale_flash = generatepress_wc_get_setting( 'product_archive_sale_flash' ); - $archive_sale_flash_overlay = generatepress_wc_get_setting( 'product_archive_sale_flash_overlay' ); - $archive_rating = generatepress_wc_get_setting( 'product_archive_rating' ); - $archive_price = generatepress_wc_get_setting( 'product_archive_price' ); - $archive_add_to_cart = generatepress_wc_get_setting( 'product_archive_add_to_cart' ); - $archive_title = generatepress_wc_get_setting( 'product_archive_title' ); - $single_product_sale_flash = generatepress_wc_get_setting( 'single_product_sale_flash' ); - $product_tabs = generatepress_wc_get_setting( 'product_tabs' ); - $product_related = generatepress_wc_get_setting( 'product_related' ); - $product_upsells = generatepress_wc_get_setting( 'product_upsells' ); - $product_meta = generatepress_wc_get_setting( 'product_meta' ); - $product_description = generatepress_wc_get_setting( 'product_description' ); - $breadcrumbs = generatepress_wc_get_setting( 'breadcrumbs' ); - $page_title = generatepress_wc_get_setting( 'shop_page_title' ); - $distraction_free = generatepress_wc_get_setting( 'distraction_free' ); - $archive_description = generatepress_wc_get_setting( 'product_archive_description' ); - - if ( false === $page_title ) { - add_filter( 'woocommerce_show_page_title', '__return_false' ); - } - - if ( false === $archive_results_count ) { - remove_action( 'woocommerce_after_shop_loop', 'woocommerce_result_count', 20 ); - remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 ); - } - - if ( false === $archive_sorting ) { - remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 10 ); - } - - if ( false === $archive_image ) { - remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 ); - } - - if ( false === $archive_sale_flash_overlay ) { - remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 10 ); - add_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 6 ); - } - - if ( false === $archive_sale_flash ) { - if ( false === $archive_sale_flash_overlay ) { - remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 6 ); - } else { - remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 10 ); - } - } - - if ( false === $single_product_sale_flash ) { - remove_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_sale_flash', 10 ); - } - - if ( false === $archive_rating ) { - remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating', 5 ); - } - - if ( false === $archive_price ) { - remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 ); - } - - if ( false === $archive_add_to_cart ) { - remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 ); - } - - if ( false === $archive_title ) { - remove_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title', 10 ); - } - - if ( false === $product_tabs ) { - remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 ); - } - - if ( false === $product_related ) { - remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 ); - } - - if ( false === $product_upsells ) { - remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15 ); - } - - if ( false === $product_meta ) { - remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 ); - } - - if ( false === $product_description ) { - remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20 ); - } - - if ( false === $breadcrumbs ) { - remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0); - } - - if ( true === $distraction_free ) { - add_filter( 'generate_sidebar_layout', 'generatepress_wc_checkout_sidebar_layout' ); - add_filter( 'generate_footer_widgets', 'generatepress_wc_checkout_footer_widgets' ); - } - - if ( true === $archive_description && ! is_single() && ! is_cart() ) { - add_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_single_excerpt', 5 ); - add_action( 'woocommerce_after_subcategory_title', 'generatepress_wc_category_description', 12 ); - } -} - -/** - * Set the WC checkout sidebar layout. - * - * @since 1.3 - * - * @param string $layout Existing sidebar layout. - * @return string New sidebar layout. - */ -function generatepress_wc_checkout_sidebar_layout( $layout ) { - if ( ! function_exists( 'is_checkout' ) ) { - return $layout; - } - - if ( is_checkout() ) { - return 'no-sidebar'; - } - - return $layout; -} - -/** - * Set the WC checkout footer widgets. - * - * @since 1.3 - * - * @param int $widgets Existing number of widgets. - * @return int New number of widgets. - */ -function generatepress_wc_checkout_footer_widgets( $widgets ) { - if ( ! function_exists( 'is_checkout' ) ) { - return $widgets; - } - - if ( is_checkout() ) { - return '0'; - } - - return $widgets; -} - -add_filter( 'wp_nav_menu_items', 'generatepress_wc_menu_cart', 10, 2 ); -/** - * Add the WC cart menu item. - * - * @since 1.3 - * - * @param string $nav The HTML list content for the menu items. - * @param stdClass $args An object containing wp_nav_menu() arguments. - * @return string The search icon menu item. - */ -function generatepress_wc_menu_cart( $nav, $args ) { - if ( function_exists( 'generate_is_using_flexbox' ) && generate_is_using_flexbox() ) { - return $nav; - } - - // If our primary menu is set, add the search icon. - if ( apply_filters( 'generate_woocommerce_menu_item_location', 'primary' ) === $args->theme_location && generatepress_wc_get_setting( 'cart_menu_item' ) ) { - if ( ! class_exists( 'WooCommerce' ) ) { - return; - } - - if ( ! isset( WC()->cart ) ) { - return; - } - - $has_items = false; - - if ( ! WC()->cart->is_empty() ) { - $has_items = 'has-items'; - } - - return sprintf( - '%1$s - ', - $nav, - generatepress_wc_cart_link(), - is_cart() ? 'current-menu-item' : '', - $has_items - ); - } - - // Our primary menu isn't set, return the regular nav. - return $nav; -} - -add_action( 'wp', 'generatepress_wc_add_menu_bar_items' ); -/** - * Add to the menu bar items. - * - * @since 1.11.0 - */ -function generatepress_wc_add_menu_bar_items() { - if ( function_exists( 'generate_is_using_flexbox' ) && generate_is_using_flexbox() ) { - if ( 'secondary' === apply_filters( 'generate_woocommerce_menu_item_location', 'primary' ) && generatepress_wc_get_setting( 'cart_menu_item' ) ) { - add_action( 'generate_secondary_menu_bar_items', 'generate_wc_do_cart_secondary_menu_item', 5 ); - } - - if ( 'primary' === apply_filters( 'generate_woocommerce_menu_item_location', 'primary' ) && generatepress_wc_get_setting( 'cart_menu_item' ) ) { - add_action( 'generate_menu_bar_items', 'generate_wc_do_cart_menu_item', 5 ); - } - } -} - -/** - * Add the cart menu item to the secondary navigation. - */ -function generate_wc_do_cart_secondary_menu_item() { - if ( function_exists( 'generate_is_using_flexbox' ) && generate_is_using_flexbox() ) { - if ( 'secondary' === apply_filters( 'generate_woocommerce_menu_item_location', 'primary' ) && generatepress_wc_get_setting( 'cart_menu_item' ) ) { - if ( ! class_exists( 'WooCommerce' ) ) { - return; - } - - if ( ! isset( WC()->cart ) ) { - return; - } - - $has_items = false; - - if ( ! WC()->cart->is_empty() ) { - $has_items = 'has-items'; - } - - printf( - ' - %1$s - ', - generatepress_wc_cart_link(), - is_cart() ? 'current-menu-item' : '', - $has_items - ); - } - } -} - -/** - * Add the cart menu item to the navigation. - * - * @since 1.11.0 - */ -function generate_wc_do_cart_menu_item() { - if ( function_exists( 'generate_is_using_flexbox' ) && generate_is_using_flexbox() ) { - if ( 'primary' === apply_filters( 'generate_woocommerce_menu_item_location', 'primary' ) && generatepress_wc_get_setting( 'cart_menu_item' ) ) { - if ( ! class_exists( 'WooCommerce' ) ) { - return; - } - - if ( ! isset( WC()->cart ) ) { - return; - } - - $has_items = false; - - if ( ! WC()->cart->is_empty() ) { - $has_items = 'has-items'; - } - - printf( - ' - %1$s - ', - generatepress_wc_cart_link(), - is_cart() ? 'current-menu-item' : '', - $has_items - ); - } - } -} - -/** - * Build the menu cart link. - * - * @since 1.3 - */ -function generatepress_wc_cart_link() { - // Kept for backward compatibility. - $legacy_icon = apply_filters( 'generate_woocommerce_menu_cart_icon', '' ); - - // Get the icon type. - $icon_type = generatepress_wc_get_setting( 'cart_menu_item_icon' ); - - $icon = ''; - - if ( function_exists( 'generate_get_svg_icon' ) ) { - $icon = generate_get_svg_icon( $icon_type ); - } - - ob_start(); - - if ( ! class_exists( 'WooCommerce' ) ) { - return; - } - - if ( ! isset( WC()->cart ) ) { - return; - } - - $no_items = ''; - - if ( ! WC()->cart->get_cart_contents_count() > 0 ) { - $no_items = 'no-items'; - } - - printf( - '%5$s%6$s%7$s%8$s', - esc_url( wc_get_cart_url() ), - esc_attr( $icon_type ), - $icon ? 'has-svg-icon' : '', - esc_attr__( 'View your shopping cart', 'gp-premium' ), - $icon, - sprintf( - '%2$s', - $no_items, - WC()->cart->get_cart_contents_count() - ), - $legacy_icon, - WC()->cart->subtotal > 0 ? wp_kses_data( WC()->cart->get_cart_subtotal() ) : '' - ); - - if ( generatepress_wc_get_setting( 'menu_mini_cart' ) && ! is_cart() ) : ?> - - cart ) ) { - $fragments['.cart-contents span.amount'] = ( WC()->cart->subtotal > 0 ) ? '' . wp_kses_data( WC()->cart->get_cart_subtotal() ) . '' : ''; - $fragments['.cart-contents span.number-of-items'] = ( WC()->cart->get_cart_contents_count() > 0 ) ? '' . wp_kses_data( WC()->cart->get_cart_contents_count() ) . '' : ''; - } - - return $fragments; -} - -/** - * Add the cart icon in the mobile menu. - * - * @since 1.3 - */ -function generatepress_wc_mobile_cart_link() { - if ( function_exists( 'generate_is_using_flexbox' ) && generate_is_using_flexbox() ) { - return; - } - - if ( ! generatepress_wc_get_setting( 'cart_menu_item' ) || 'primary' !== apply_filters( 'generate_woocommerce_menu_item_location', 'primary' ) ) { - return; - } - - if ( ! class_exists( 'WooCommerce' ) ) { - return; - } - - if ( ! isset( WC()->cart ) ) { - return; - } - - $has_items = false; - - if ( ! WC()->cart->is_empty() ) { - $has_items = ' has-items'; - } - ?> -
            - - -
            - set_selector( '.woocommerce ul.products li.product .woocommerce-LoopProduct-link' ); - $css->add_property( 'color', esc_attr( $settings['wc_product_title_color'] ) ); - - // Product title color hover. - $css->set_selector( '.woocommerce ul.products li.product .woocommerce-LoopProduct-link:hover' ); - $css->add_property( 'color', esc_attr( $settings['wc_product_title_color_hover'] ) ); - - if ( ! $using_dynamic_typography ) { - // Product title font size. - $css->set_selector( '.woocommerce ul.products li.product .woocommerce-LoopProduct-link h2, .woocommerce ul.products li.product .woocommerce-loop-category__title' ); - $css->add_property( 'font-weight', esc_attr( $settings['wc_product_title_font_weight'] ) ); - $css->add_property( 'text-transform', esc_attr( $settings['wc_product_title_font_transform'] ) ); - $css->add_property( 'font-size', esc_attr( $settings['wc_product_title_font_size'] ), false, 'px' ); - - $css->set_selector( '.woocommerce .up-sells ul.products li.product .woocommerce-LoopProduct-link h2, .woocommerce .cross-sells ul.products li.product .woocommerce-LoopProduct-link h2, .woocommerce .related ul.products li.product .woocommerce-LoopProduct-link h2' ); - if ( '' !== $settings['wc_related_product_title_font_size'] ) { - $css->add_property( 'font-size', esc_attr( $settings['wc_related_product_title_font_size'] ), false, 'px' ); - } - } - - // Primary button. - $css->set_selector( '.woocommerce #respond input#submit, .woocommerce a.button, .woocommerce button.button, .woocommerce input.button, .wc-block-components-button' ); - $css->add_property( 'color', esc_attr( $settings['form_button_text_color'] ) ); - $css->add_property( 'background-color', esc_attr( $settings['form_button_background_color'] ) ); - $css->add_property( 'text-decoration', 'none' ); - - if ( ! $using_dynamic_typography && isset( $settings['buttons_font_size'] ) ) { - $css->add_property( 'font-weight', esc_attr( $settings['buttons_font_weight'] ) ); - $css->add_property( 'text-transform', esc_attr( $settings['buttons_font_transform'] ) ); - - if ( '' !== $settings['buttons_font_size'] ) { - $css->add_property( 'font-size', absint( $settings['buttons_font_size'] ), false, 'px' ); - } - } - - if ( $using_dynamic_typography && class_exists( 'GeneratePress_Typography' ) ) { - $typography = generate_get_option( 'typography' ); - - foreach ( (array) $typography as $key => $data ) { - if ( 'buttons' === $data['selector'] ) { - $unit = isset( $data['fontSizeUnit'] ) ? $data['fontSizeUnit'] : ''; - - if ( ! empty( $data['fontSize'] ) ) { - - // Check for legacy font size values. - // @see https://github.com/tomusborne/generatepress/pull/548. - if ( is_numeric( $data['fontSize'] ) ) { - $data['fontSize'] = floatval( $data['fontSize'] ); - - if ( ! $unit ) { - $unit = 'px'; - } - } - - $css->add_property( 'font-size', esc_attr( $data['fontSize'] ), false, $unit ); - } - - if ( ! empty( $data['fontWeight'] ) ) { - $css->add_property( 'font-weight', esc_attr( $data['fontWeight'] ) ); - } - - if ( ! empty( $data['textTransform'] ) ) { - $css->add_property( 'text-transform', esc_attr( $data['textTransform'] ) ); - } - - if ( ! empty( $data['fontSizeTablet'] ) ) { - $css->start_media_query( generate_premium_get_media_query( 'tablet' ) ); - - // Check for legacy font size values. - // @see https://github.com/tomusborne/generatepress/pull/548. - if ( is_numeric( $data['fontSizeTablet'] ) ) { - $data['fontSizeTablet'] = floatval( $data['fontSizeTablet'] ); - - if ( ! $unit ) { - $unit = 'px'; - } - } - - $css->add_property( 'font-size', esc_attr( $data['fontSizeTablet'] ), false, $unit ); - $css->stop_media_query(); - } - - if ( ! empty( $data['fontSizeMobile'] ) ) { - $css->start_media_query( generate_premium_get_media_query( 'mobile' ) ); - - // Check for legacy font size values. - // @see https://github.com/tomusborne/generatepress/pull/548. - if ( is_numeric( $data['fontSizeMobile'] ) ) { - $data['fontSizeMobile'] = floatval( $data['fontSizeMobile'] ); - - if ( ! $unit ) { - $unit = 'px'; - } - } - - $css->add_property( 'font-size', esc_attr( $data['fontSizeMobile'] ), false, $unit ); - $css->stop_media_query(); - } - } - } - } - - // Primary button hover. - $css->set_selector( '.woocommerce #respond input#submit:hover, .woocommerce a.button:hover, .woocommerce button.button:hover, .woocommerce input.button:hover, .wc-block-components-button:hover' ); - $css->add_property( 'color', esc_attr( $settings['form_button_text_color_hover'] ) ); - $css->add_property( 'background-color', esc_attr( $settings['form_button_background_color_hover'] ) ); - - // Alt button. - $css->set_selector( '.woocommerce #respond input#submit.alt, .woocommerce a.button.alt, .woocommerce button.button.alt, .woocommerce input.button.alt, .woocommerce #respond input#submit.alt.disabled, .woocommerce #respond input#submit.alt.disabled:hover, .woocommerce #respond input#submit.alt:disabled, .woocommerce #respond input#submit.alt:disabled:hover, .woocommerce #respond input#submit.alt:disabled[disabled], .woocommerce #respond input#submit.alt:disabled[disabled]:hover, .woocommerce a.button.alt.disabled, .woocommerce a.button.alt.disabled:hover, .woocommerce a.button.alt:disabled, .woocommerce a.button.alt:disabled:hover, .woocommerce a.button.alt:disabled[disabled], .woocommerce a.button.alt:disabled[disabled]:hover, .woocommerce button.button.alt.disabled, .woocommerce button.button.alt.disabled:hover, .woocommerce button.button.alt:disabled, .woocommerce button.button.alt:disabled:hover, .woocommerce button.button.alt:disabled[disabled], .woocommerce button.button.alt:disabled[disabled]:hover, .woocommerce input.button.alt.disabled, .woocommerce input.button.alt.disabled:hover, .woocommerce input.button.alt:disabled, .woocommerce input.button.alt:disabled:hover, .woocommerce input.button.alt:disabled[disabled], .woocommerce input.button.alt:disabled[disabled]:hover' ); - $css->add_property( 'color', esc_attr( $settings['wc_alt_button_text'] ) ); - $css->add_property( 'background-color', esc_attr( $settings['wc_alt_button_background'] ) ); - - // Alt button hover. - $css->set_selector( '.woocommerce #respond input#submit.alt:hover, .woocommerce a.button.alt:hover, .woocommerce button.button.alt:hover, .woocommerce input.button.alt:hover' ); - $css->add_property( 'color', esc_attr( $settings['wc_alt_button_text_hover'] ) ); - $css->add_property( 'background-color', esc_attr( $settings['wc_alt_button_background_hover'] ) ); - - // WooBlocks panel button font-size. - // We don't want to treat this like a normal button. - $css->set_selector( 'button.wc-block-components-panel__button' ); - $css->add_property( 'font-size', 'inherit' ); - - // Star rating. - $css->set_selector( '.woocommerce .star-rating span:before, .woocommerce p.stars:hover a::before' ); - $css->add_property( 'color', esc_attr( $settings['wc_rating_stars'] ) ); - - // Sale sticker. - $css->set_selector( '.woocommerce span.onsale' ); - $css->add_property( 'background-color', esc_attr( $settings['wc_sale_sticker_background'] ) ); - $css->add_property( 'color', esc_attr( $settings['wc_sale_sticker_text'] ) ); - - // Price. - $css->set_selector( '.woocommerce ul.products li.product .price, .woocommerce div.product p.price' ); - $css->add_property( 'color', esc_attr( $settings['wc_price_color'] ) ); - - // Product tab. - $css->set_selector( '.woocommerce div.product .woocommerce-tabs ul.tabs li a' ); - $css->add_property( 'color', esc_attr( $settings['wc_product_tab'] ) ); - - // Highlight product tab. - $css->set_selector( '.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover, .woocommerce div.product .woocommerce-tabs ul.tabs li.active a' ); - $css->add_property( 'color', esc_attr( $settings['wc_product_tab_highlight'] ) ); - - // Success message. - $css->set_selector( '.woocommerce-message' ); - $css->add_property( 'background-color', esc_attr( $settings['wc_success_message_background'] ) ); - $css->add_property( 'color', esc_attr( $settings['wc_success_message_text'] ) ); - - $css->set_selector( 'div.woocommerce-message a.button, div.woocommerce-message a.button:focus, div.woocommerce-message a.button:hover, div.woocommerce-message a, div.woocommerce-message a:focus, div.woocommerce-message a:hover' ); - $css->add_property( 'color', esc_attr( $settings['wc_success_message_text'] ) ); - - // Info message. - $css->set_selector( '.woocommerce-info' ); - $css->add_property( 'background-color', esc_attr( $settings['wc_info_message_background'] ) ); - $css->add_property( 'color', esc_attr( $settings['wc_info_message_text'] ) ); - - $css->set_selector( 'div.woocommerce-info a.button, div.woocommerce-info a.button:focus, div.woocommerce-info a.button:hover, div.woocommerce-info a, div.woocommerce-info a:focus, div.woocommerce-info a:hover' ); - $css->add_property( 'color', esc_attr( $settings['wc_info_message_text'] ) ); - - // Info message. - $css->set_selector( '.woocommerce-error' ); - $css->add_property( 'background-color', esc_attr( $settings['wc_error_message_background'] ) ); - $css->add_property( 'color', esc_attr( $settings['wc_error_message_text'] ) ); - - $css->set_selector( 'div.woocommerce-error a.button, div.woocommerce-error a.button:focus, div.woocommerce-error a.button:hover, div.woocommerce-error a, div.woocommerce-error a:focus, div.woocommerce-error a:hover' ); - $css->add_property( 'color', esc_attr( $settings['wc_error_message_text'] ) ); - - // Archive short description. - $css->set_selector( '.woocommerce-product-details__short-description' ); - if ( '' !== $settings['content_text_color'] ) { - $css->add_property( 'color', esc_attr( $settings['content_text_color'] ) ); - } else { - $css->add_property( 'color', esc_attr( $settings['text_color'] ) ); - } - - $css->set_selector( '#wc-mini-cart' ); - $css->add_property( 'background-color', esc_attr( $settings['wc_mini_cart_background_color'] ) ); - $css->add_property( 'color', esc_attr( $settings['wc_mini_cart_text_color'] ) ); - - $css->set_selector( '#wc-mini-cart a:not(.button), #wc-mini-cart a.remove' ); - $css->add_property( 'color', esc_attr( $settings['wc_mini_cart_text_color'] ) ); - - $css->set_selector( '#wc-mini-cart .button' ); - if ( $settings['wc_mini_cart_button_background'] ) { - $css->add_property( 'background-color', esc_attr( $settings['wc_mini_cart_button_background'] ) ); - } - - if ( $settings['wc_mini_cart_button_text'] ) { - $css->add_property( 'color', esc_attr( $settings['wc_mini_cart_button_text'] ) ); - } else { - $css->add_property( 'color', esc_attr( $settings['form_button_text_color'] ) ); - } - - $css->set_selector( '#wc-mini-cart .button:hover, #wc-mini-cart .button:focus, #wc-mini-cart .button:active' ); - $css->add_property( 'background-color', esc_attr( $settings['wc_mini_cart_button_background_hover'] ) ); - - if ( $settings['wc_mini_cart_button_text_hover'] ) { - $css->add_property( 'color', esc_attr( $settings['wc_mini_cart_button_text_hover'] ) ); - } else { - $css->add_property( 'color', esc_attr( $settings['form_button_text_color_hover'] ) ); - } - - $css->set_selector( '.woocommerce #content div.product div.images, .woocommerce div.product div.images, .woocommerce-page #content div.product div.images, .woocommerce-page div.product div.images' ); - $css->add_property( 'width', absint( generatepress_wc_get_setting( 'single_product_image_width' ) ), false, '%' ); - - if ( ! $using_dynamic_typography && function_exists( 'generate_get_font_family_css' ) ) { - $buttons_family = generate_get_font_family_css( 'font_buttons', 'generate_settings', generate_get_default_fonts() ); - $css->set_selector( '.woocommerce.widget_shopping_cart .woocommerce-mini-cart__buttons a' ); - $css->add_property( 'font-family', $buttons_family ); - } - - $css->set_selector( '.add-to-cart-panel' ); - $css->add_property( 'background-color', esc_attr( $settings['wc_panel_cart_background_color'] ) ); - $css->add_property( 'color', esc_attr( $settings['wc_panel_cart_text_color'] ) ); - - $css->set_selector( '.add-to-cart-panel a:not(.button)' ); - $css->add_property( 'color', esc_attr( $settings['wc_panel_cart_text_color'] ) ); - - $css->set_selector( '#wc-sticky-cart-panel .button' ); - $css->add_property( 'background-color', esc_attr( $settings['wc_panel_cart_button_background'] ) ); - $css->add_property( 'color', esc_attr( $settings['wc_panel_cart_button_text'] ) ); - - $css->set_selector( '#wc-sticky-cart-panel .button:hover, #wc-sticky-cart-panel .button:focus, #wc-sticky-cart-panel .button:active' ); - $css->add_property( 'background-color', esc_attr( $settings['wc_panel_cart_button_background_hover'] ) ); - $css->add_property( 'color', esc_attr( $settings['wc_panel_cart_button_text_hover'] ) ); - - $transparent_border_color = $settings['text_color']; - - if ( $settings['content_text_color'] ) { - $transparent_border_color = $settings['content_text_color']; - } - - $transparent_border_color = generate_premium_check_text_color( $transparent_border_color ); - - if ( 'light' === $transparent_border_color ) { - $transparent_border_elements = '.woocommerce-ordering select, .variations .value select'; - - if ( generatepress_wc_get_setting( 'quantity_buttons' ) ) { - $transparent_border_elements = '.woocommerce form .quantity.buttons-added .qty, .woocommerce form .quantity.buttons-added .minus, .woocommerce form .quantity.buttons-added .plus, .do-quantity-buttons form .quantity:not(.buttons-added):before, .do-quantity-buttons form .quantity:not(.buttons-added):after, .woocommerce-ordering select, .variations .value select'; - } - - $css->set_selector( $transparent_border_elements ); - $css->add_property( 'border-color', 'rgba(255,255,255,0.1)' ); - - if ( generatepress_wc_get_setting( 'sticky_add_to_cart_panel' ) ) { - $css->set_selector( '#wc-sticky-cart-panel .quantity.buttons-added .qty, #wc-sticky-cart-panel .quantity.buttons-added .minus, #wc-sticky-cart-panel .quantity.buttons-added .plus' ); - $css->add_property( 'border-color', 'rgba(255,255,255,0.1)' ); - } - } - - $css->set_selector( '.woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content' ); - $css->add_property( 'background-color', esc_attr( $settings['wc_price_slider_background_color'] ) ); - - $css->set_selector( '.woocommerce .widget_price_filter .ui-slider .ui-slider-range, .woocommerce .widget_price_filter .ui-slider .ui-slider-handle' ); - $css->add_property( 'background-color', esc_attr( $settings['wc_price_slider_bar_color'] ) ); - - if ( 'number' === generatepress_wc_get_setting( 'cart_menu_item_content' ) ) { - $nav_text_color = generate_premium_check_text_color( $settings['navigation_text_color'] ); - - $css->set_selector( '.cart-contents > span.number-of-items' ); - if ( 'light' === $nav_text_color ) { - $css->add_property( 'background-color', 'rgba(255,255,255,0.1)' ); - } else { - $css->add_property( 'background-color', 'rgba(0,0,0,0.05)' ); - } - - $css->set_selector( '.cart-contents .amount' ); - $css->add_property( 'display', 'none' ); - - $css->set_selector( '.cart-contents > span.number-of-items' ); - $css->add_property( 'display', 'inline-block' ); - } - - $font_icons = true; - - if ( function_exists( 'generate_get_option' ) ) { - if ( 'font' !== generate_get_option( 'icons' ) ) { - $font_icons = false; - } - } - - if ( ! $font_icons ) { - $css->set_selector( '.woocommerce-MyAccount-navigation li.is-active a:after, a.button.wc-forward:after' ); - $css->add_property( 'display', 'none' ); - - $css->set_selector( '#payment .payment_methods>.wc_payment_method>label:before' ); - $css->add_property( 'font-family', 'WooCommerce' ); - $css->add_property( 'content', '"\e039"' ); - - $css->set_selector( '#payment .payment_methods li.wc_payment_method>input[type=radio]:first-child:checked+label:before' ); - $css->add_property( 'content', '"\e03c"' ); - - $css->set_selector( '.woocommerce-ordering:after' ); - $css->add_property( 'font-family', 'WooCommerce' ); - $css->add_property( 'content', '"\e00f"' ); - } - - $css->set_selector( '.wc-columns-container .products, .woocommerce .related ul.products, .woocommerce .up-sells ul.products' ); - - if ( '' !== generatepress_wc_get_setting( 'columns_gap' ) ) { - $css->add_property( 'grid-gap', generatepress_wc_get_setting( 'columns_gap' ), false, 'px' ); - } - - $css->start_media_query( generate_premium_get_media_query( 'tablet' ) ); - $css->set_selector( '.wc-columns-container .products, .woocommerce .related ul.products, .woocommerce .up-sells ul.products' ); - - if ( '' !== generatepress_wc_get_setting( 'tablet_columns_gap' ) ) { - $css->add_property( 'grid-gap', generatepress_wc_get_setting( 'tablet_columns_gap' ), false, 'px' ); - } - - if ( 3 === generatepress_wc_get_setting( 'tablet_columns' ) ) { - $css->set_selector( '.woocommerce .wc-columns-container.wc-tablet-columns-3 .products' ); - $css->add_property( '-ms-grid-columns', '(1fr)[3]' ); - $css->add_property( 'grid-template-columns', 'repeat(3, 1fr)' ); - } - - if ( 2 === generatepress_wc_get_setting( 'tablet_columns' ) ) { - $css->set_selector( '.woocommerce .wc-columns-container.wc-tablet-columns-2 .products' ); - $css->add_property( '-ms-grid-columns', '(1fr)[2]' ); - $css->add_property( 'grid-template-columns', 'repeat(2, 1fr)' ); - } - - if ( 1 === generatepress_wc_get_setting( 'tablet_columns' ) ) { - $css->set_selector( '.woocommerce .wc-columns-container.wc-tablet-columns-1 .products' ); - $css->add_property( 'width', '100%' ); - $css->add_property( '-ms-grid-columns', '1fr' ); - $css->add_property( 'grid-template-columns', '1fr' ); - } - - if ( 3 === generatepress_wc_get_setting( 'tablet_related_upsell_columns' ) ) { - $css->set_selector( '.wc-related-upsell-tablet-columns-3 .related ul.products, .wc-related-upsell-tablet-columns-3 .up-sells ul.products' ); - $css->add_property( '-ms-grid-columns', '(1fr)[3]' ); - $css->add_property( 'grid-template-columns', 'repeat(3, 1fr)' ); - } - - if ( 2 === generatepress_wc_get_setting( 'tablet_related_upsell_columns' ) ) { - $css->set_selector( '.wc-related-upsell-tablet-columns-2 .related ul.products, .wc-related-upsell-tablet-columns-2 .up-sells ul.products' ); - $css->add_property( '-ms-grid-columns', '(1fr)[2]' ); - $css->add_property( 'grid-template-columns', 'repeat(2, 1fr)' ); - } - - if ( 1 === generatepress_wc_get_setting( 'tablet_related_upsell_columns' ) ) { - $css->set_selector( '.wc-related-upsell-tablet-columns-1 .related ul.products, .wc-related-upsell-tablet-columns-1 .up-sells ul.products' ); - $css->add_property( 'width', '100%' ); - $css->add_property( '-ms-grid-columns', '1fr' ); - $css->add_property( 'grid-template-columns', '1fr' ); - } - $css->stop_media_query(); - - $css->start_media_query( generate_premium_get_media_query( 'mobile' ) ); - if ( ! $using_dynamic_typography ) { - $css->set_selector( '.woocommerce ul.products li.product .woocommerce-LoopProduct-link h2, .woocommerce ul.products li.product .woocommerce-loop-category__title' ); - if ( '' !== $settings[ 'mobile_wc_product_title_font_size' ] ) { - $css->add_property( 'font-size', esc_attr( $settings[ 'mobile_wc_product_title_font_size' ] ), false, 'px' ); - } - } - - $css->set_selector( '.add-to-cart-panel .continue-shopping' ); - $css->add_property( 'background-color', esc_attr( $settings['wc_panel_cart_background_color'] ) ); - - $css->set_selector( '.wc-columns-container .products, .woocommerce .related ul.products, .woocommerce .up-sells ul.products' ); - - if ( '' !== generatepress_wc_get_setting( 'mobile_columns_gap' ) ) { - $css->add_property( 'grid-gap', generatepress_wc_get_setting( 'mobile_columns_gap' ), false, 'px' ); - } - - $css->set_selector( '.woocommerce #content div.product div.images,.woocommerce div.product div.images,.woocommerce-page #content div.product div.images,.woocommerce-page div.product div.images' ); - $css->add_property( 'width', '100%' ); - $css->stop_media_query(); - - $using_flex = false; - - if ( function_exists( 'generate_is_using_flexbox' ) && generate_is_using_flexbox() ) { - $using_flex = true; - } - - $css->start_media_query( generate_premium_get_media_query( 'mobile-menu' ) ); - if ( ! $using_flex ) { - $css->set_selector( '.mobile-bar-items + .menu-toggle' ); - $css->add_property( 'text-align', 'left' ); - } - - $css->set_selector( 'nav.toggled .main-nav li.wc-menu-item' ); - $css->add_property( 'display', 'none !important' ); - - if ( ! $using_flex ) { - $css->set_selector( 'body.nav-search-enabled .wc-menu-cart-activated:not(#mobile-header) .mobile-bar-items' ); - $css->add_property( 'float', 'right' ); - $css->add_property( 'position', 'relative' ); - - $css->set_selector( '.nav-search-enabled .wc-menu-cart-activated:not(#mobile-header) .menu-toggle' ); - $css->add_property( 'float', 'left' ); - $css->add_property( 'width', 'auto' ); - } - - $css->set_selector( '.mobile-bar-items.wc-mobile-cart-items' ); - $css->add_property( 'z-index', '1' ); - $css->stop_media_query(); - - return $css->css_output(); -} - -add_action( 'wp_enqueue_scripts', 'generatepress_wc_enqueue_css', 100 ); -/** - * Enqueue our dynamic CSS. - * - * @since 1.3 - */ -function generatepress_wc_enqueue_css() { - wp_add_inline_style( 'generate-woocommerce', generatepress_wc_css() ); - - if ( class_exists( 'GeneratePress_Typography' ) ) { - wp_add_inline_style( 'generate-woocommerce', GeneratePress_Typography::get_css( 'woocommerce' ) ); - } -} - -/** - * Open WC image wrapper. - * - * @since 1.3 - */ -function generatepress_wc_image_wrapper_open() { - if ( generatepress_wc_get_setting( 'product_archive_image' ) ) { - echo '
            '; - } -} - -/** - * Close WC image wrapper. - * - * @since 1.3 - */ -function generatepress_wc_image_wrapper_close() { - if ( generatepress_wc_get_setting( 'product_archive_image' ) ) { - echo '
            '; - } -} - -add_filter( 'post_class', 'generatepress_wc_product_has_gallery' ); -add_filter( 'product_cat_class', 'generatepress_wc_product_has_gallery' ); -/** - * Add product image post classes to products. - * - * @since 1.3 - * - * @param array $classes Existing classes. - * @return array New classes. - */ -function generatepress_wc_product_has_gallery( $classes ) { - - $post_type = get_post_type( get_the_ID() ); - - if ( 'product' === $post_type && method_exists( 'WC_Product', 'get_gallery_image_ids' ) ) { - $product = wc_get_product( get_the_ID() ); - $attachment_ids = $product->get_gallery_image_ids(); - - if ( $attachment_ids && generatepress_wc_get_setting( 'product_secondary_image' ) && generatepress_wc_get_setting( 'product_archive_image' ) && has_post_thumbnail() ) { - $classes[] = 'wc-has-gallery'; - } - } - - return $classes; -} - -add_action( 'woocommerce_before_shop_loop_item_title', 'generatepress_wc_secondary_product_image' ); -/** - * Add secondary product image. - * - * @since 1.3 - */ -function generatepress_wc_secondary_product_image() { - $post_type = get_post_type( get_the_ID() ); - - if ( 'product' === $post_type && method_exists( 'WC_Product', 'get_gallery_image_ids' ) ) { - $product = wc_get_product( get_the_ID() ); - $attachment_ids = $product->get_gallery_image_ids(); - - if ( $attachment_ids && generatepress_wc_get_setting( 'product_secondary_image' ) && generatepress_wc_get_setting( 'product_archive_image' ) && has_post_thumbnail() ) { - $secondary_image_id = $attachment_ids['0']; - echo wp_get_attachment_image( $secondary_image_id, 'woocommerce_thumbnail', '', $attr = array( 'class' => 'secondary-image attachment-shop-catalog' ) ); - } - } -} - -add_filter( 'woocommerce_product_get_rating_html', 'generatepress_wc_rating_html', 10, 2 ); -/** - * Always show ratings area to make sure products are similar heights. - * - * @since 1.3.1 - * - * @param string $rating_html - * @param int $rating - * @return string - */ -function generatepress_wc_rating_html( $rating_html, $rating ) { - if ( $rating > 0 ) { - $title = sprintf( __( 'Rated %s out of 5', 'gp-premium' ), $rating ); - } else { - $title = __( 'Not yet rated', 'gp-premium' ); - $rating = 0; - } - - $rating_html = '
            '; - $rating_html .= '' . $rating . ' ' . __( 'out of 5', 'gp-premium' ) . ''; - $rating_html .= '
            '; - - return $rating_html; -} - -/** - * Add WC category description. - * - * @since 1.3 - * - * @param array $category - * @return string - */ -function generatepress_wc_category_description( $category ) { - $prod_term = get_term( $category->term_id, 'product_cat' ); - $description = $prod_term->description; - echo '
            ' . $description . '
            '; -} - -add_action( 'generate_after_footer', 'generatepress_wc_add_to_cart_helper' ); -/** - * Adds a sticky/slide down navigation with add to cart details. - * - * @since 1.8 - */ -function generatepress_wc_add_to_cart_helper() { - if ( ! generatepress_wc_get_setting( 'off_canvas_panel_on_add_to_cart' ) && ! generatepress_wc_get_setting( 'sticky_add_to_cart_panel' ) ) { - return; - } - - $outer_classes = array( - 'add-to-cart-panel', - ); - - $inner_classes = array( - 'inside-add-to-cart-panel', - ); - - if ( function_exists( 'generate_get_option' ) ) { - if ( 'contained-nav' === generate_get_option( 'nav_layout_setting' ) ) { - $outer_classes[] = 'grid-container grid-parent'; - } - - if ( 'contained' === generate_get_option( 'nav_inner_width' ) ) { - $inner_classes[] = 'grid-container grid-parent'; - } - } - ?> -
            -
            - - -
            - - -
            - -
            -
            - -
            - -
            - cart ) ) { - echo sprintf( _n( '%d item', '%d items', WC()->cart->get_cart_contents_count(), 'gp-premium' ), WC()->cart->get_cart_contents_count() ); ?> - cart->get_cart_total(); - } - ?> -
            -
            - - - %s -
            ', - esc_url( wc_get_checkout_url() ), - esc_html__( 'Checkout', 'gp-premium' ) - ) - ); - ?> - -
            - -
            - -
            - -
            - - get_price() ) : ?> -
            - get_price_html(); ?> -
            - is_type( 'simple' ) ) { - $args = array( - 'min_value' => apply_filters( 'woocommerce_quantity_input_min', $product->get_min_purchase_quantity(), $product ), - 'max_value' => apply_filters( 'woocommerce_quantity_input_max', $product->get_max_purchase_quantity(), $product ), - ); - - $action = sprintf( - '
            - %3$s - -
            ', - esc_url( $product->add_to_cart_url() ), - $quantity_buttons, - woocommerce_quantity_input( $args, $product, false ), - esc_html( $product->add_to_cart_text() ) - ); - } - - if ( $product->is_type( 'variable' ) ) { - $action = sprintf( - '', - esc_html( $product->add_to_cart_text() ) - ); - } - - if ( $product->is_type( 'external' ) ) { - $action = sprintf( - '
            - -
            ', - esc_url( $product->add_to_cart_url() ), - esc_html( $product->add_to_cart_text() ) - ); - } - - echo apply_filters( 'generate_wc_sticky_add_to_cart_action', $action, $product ); // phpcs:ignore -- No escaping needed. - endif; - ?> - -
            - - cart ) ) { - $fragments['.add-to-cart-panel .cart-data'] = '
            ' . sprintf( _n( '%d item', '%d items', WC()->cart->get_cart_contents_count(), 'gp-premium' ), WC()->cart->get_cart_contents_count() ) . ' - ' . WC()->cart->get_cart_total() . '
            '; - } - - return $fragments; -} - -/** - * If we should display the sticky add to cart panel. - * - * @since 1.8 - */ -function generatepress_wc_show_sticky_add_to_cart() { - if ( ! function_exists( 'wc_get_product' ) ) { - return false; - } - - $product = wc_get_product( get_the_ID() ); - $show = false; - - if ( ! $product || ! generatepress_wc_get_setting( 'sticky_add_to_cart_panel' ) || ! is_singular( 'product' ) ) { - return false; - } - - if ( ( $product->is_type( 'simple' ) || $product->is_type( 'variable' ) ) && $product->is_purchasable() && $product->is_in_stock() ) { - $show = true; - } - - if ( $product->is_type( 'external' ) ) { - $show = true; - } - - return apply_filters( 'generate_wc_show_sticky_add_to_cart', $show ); -} - -/** - * Checks if a color is light or dark. - * - * @since 1.8 - * @param string $color The color to check. - */ -function generate_premium_check_text_color( $color ) { - // Get the hex value if we're using variables. - if ( function_exists( 'generate_get_option' ) && strpos( $color, 'var(' ) !== false ) { - $global_colors = generate_get_option( 'global_colors' ); - $found_color = false; - - // Remove whitespace if it's been added. - $color = str_replace( ' ', '', $color ); - - foreach ( (array) $global_colors as $key => $data ) { - // Check for the full variable - var(--color) - or a variable with a fallback - var(--color,#fff). - if ( 'var(--' . $data['slug'] . ')' === $color || strpos( $color, 'var(--' . $data['slug'] . ',' ) !== false ) { - $color = $data['color']; - $found_color = true; - break; - } - } - - // If we didn't find the hex value, bail. - if ( ! $found_color ) { - return; - } - } - - $r = hexdec( substr( $color, 1, 2 ) ); - $g = hexdec( substr( $color, 3, 2 ) ); - $b = hexdec( substr( $color, 5, 2 ) ); - $yiq = ( ( $r * 299 ) + ( $g * 587 ) + ( $b * 114 ) ) / 1000; - - return ( $yiq >= 128 ) ? 'light' : 'dark'; -} - -add_filter( 'generate_typography_css_selector', 'generate_woocommerce_typography_selectors' ); -/** - * Add the WooCommerce typography CSS selectors. - * - * @since 2.1.0 - * @param string $selector The selector we're targeting. - */ -function generate_woocommerce_typography_selectors( $selector ) { - switch ( $selector ) { - case 'woocommerce-catalog-product-titles': - $selector = '.woocommerce ul.products li.product .woocommerce-LoopProduct-link h2, .woocommerce ul.products li.product .woocommerce-loop-category__title'; - break; - - case 'woocommerce-related-product-titles': - $selector = '.woocommerce .up-sells ul.products li.product .woocommerce-LoopProduct-link h2, .woocommerce .cross-sells ul.products li.product .woocommerce-LoopProduct-link h2, .woocommerce .related ul.products li.product .woocommerce-LoopProduct-link h2'; - break; - } - - return $selector; -} diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/js/woocommerce.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/js/woocommerce.js deleted file mode 100644 index 6950977f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/js/woocommerce.js +++ /dev/null @@ -1,285 +0,0 @@ -jQuery( function( $ ) { - var debounce = function( callback, wait ) { - var timeout; - - return function() { - clearTimeout( timeout ); - - timeout = setTimeout( function() { - timeout = undefined; - callback.call(); - }, wait ); - }; - }; - - $( 'body' ).on( 'added_to_cart', function() { - if ( ! $( '.wc-menu-item' ).hasClass( 'has-items' ) ) { - $( '.wc-menu-item' ).addClass( 'has-items' ); - } - - if ( ! $( '.wc-mobile-cart-items' ).hasClass( 'has-items' ) ) { - $( '.wc-mobile-cart-items' ).addClass( 'has-items' ); - } - } ); - - $( 'body' ).on( 'removed_from_cart', function() { - var numberOfItems = $( '.number-of-items' ); - - if ( numberOfItems.length ) { - if ( numberOfItems.hasClass( 'no-items' ) ) { - $( '.wc-menu-item' ).removeClass( 'has-items' ); - $( '.wc-mobile-cart-items' ).removeClass( 'has-items' ); - } - } - } ); - - if ( generateWooCommerce.addToCartPanel ) { - $( document.body ).on( 'added_to_cart', function() { - var adminBar = $( '#wpadminbar' ), - stickyNav = $( '.navigation-stick' ), - top = 0; - - if ( adminBar.length ) { - top = adminBar.outerHeight(); - } - - if ( stickyNav.length && '0px' === stickyNav.css( 'top' ) ) { - top = top + stickyNav.outerHeight(); - } - - $( '.add-to-cart-panel' ).addClass( 'item-added' ).css( { - '-webkit-transform': 'translateY(' + top + 'px)', - '-ms-transform': 'translateY(' + top + 'px)', - transform: 'translateY(' + top + 'px)', - } ); - } ); - - $( '.add-to-cart-panel .continue-shopping' ).on( 'click', function( e ) { - e.preventDefault(); - - $( '.add-to-cart-panel' ).removeClass( 'item-added' ).css( { - '-webkit-transform': 'translateY(-100%)', - '-ms-transform': 'translateY(-100%)', - transform: 'translateY(-100%)', - } ); - } ); - - $( window ).on( 'scroll', debounce( function() { - var panel = $( '.add-to-cart-panel' ); - - if ( panel.hasClass( 'item-added' ) ) { - panel.removeClass( 'item-added' ).css( { - '-webkit-transform': 'translateY(-100%)', - '-ms-transform': 'translateY(-100%)', - transform: 'translateY(-100%)', - } ); - } - }, 250 ) ); - } - - if ( generateWooCommerce.stickyAddToCart ) { - var lastScroll = 0; - var scrollDownTimeout = 300; - - $( window ).on( 'scroll', debounce( function() { - var adminBar = $( '#wpadminbar' ), - stickyNav = $( '.navigation-stick' ), - stuckElement = $( '.stuckElement' ), - top = 0, - scrollTop = $( window ).scrollTop(), - panel = $( '.add-to-cart-panel' ), - panelPosition = panel.offset().top + panel.outerHeight(), - button = $( '.single_add_to_cart_button' ), - buttonTop = button.offset().top, - buttonHeight = button.outerHeight(), - footerTop = $( '.site-footer' ).offset().top; - - if ( stuckElement.length === 0 ) { - scrollDownTimeout = 0; - } - - if ( scrollTop > ( buttonTop + buttonHeight ) && panelPosition < footerTop ) { - setTimeout( function() { - if ( adminBar.length ) { - top = adminBar.outerHeight(); - } - - if ( stickyNav.length ) { - if ( stickyNav.hasClass( 'auto-hide-sticky' ) ) { - if ( scrollTop < lastScroll && '0px' === stickyNav.css( 'top' ) ) { - top = top + stickyNav.outerHeight(); - } else { - top = top; - } - - lastScroll = scrollTop; - } else { - top = top + stickyNav.outerHeight(); - } - } - - panel.addClass( 'show-sticky-add-to-cart' ).css( { - '-webkit-transform': 'translateY(' + top + 'px)', - '-ms-transform': 'translateY(' + top + 'px)', - transform: 'translateY(' + top + 'px)', - } ); - }, scrollDownTimeout ); - } else { - panel.removeClass( 'show-sticky-add-to-cart' ).css( { - '-webkit-transform': '', - '-ms-transform': '', - transform: '', - } ); - } - }, 50 ) ); - - $( '.go-to-variables' ).on( 'click', function( e ) { - e.preventDefault(); - - var offset = 0, - stickyNav = $( '.navigation-stick' ), - adminBar = $( '#wpadminbar' ); - - if ( stickyNav.length ) { - offset = stickyNav.outerHeight(); - } - - if ( adminBar.length ) { - offset = offset + adminBar.outerHeight(); - } - - $( 'html, body' ).animate( { - scrollTop: $( '.variations' ).offset().top - offset, - }, 250 ); - } ); - } - - $( function() { - 'use strict'; - - if ( generateWooCommerce.quantityButtons ) { - generateQuantityButtons(); - } - } ); - - $( document ).ajaxComplete( function() { - 'use strict'; - - if ( generateWooCommerce.quantityButtons ) { - generateQuantityButtons(); - } - } ); - - function generateQuantityButtons() { - // Check if we have an overwrite hook for this function - try { - return generateWooCommerce.hooks.generateQuantityButtons(); - } catch ( e ) { - // No hook in place, carry on - } - - // Grab the FIRST available cart form on the page - var cart = $( '.woocommerce div.product form.cart' ).first(); - - // Check if we see elementor style classes - if ( cart.closest( '.elementor-add-to-cart' ).length ) { - // Found classes, remove them and finish here - $( '.elementor.product' ).removeClass( 'do-quantity-buttons' ); - return; - } - - // Grab all the quantity boxes that need dynamic buttons adding - var quantityBoxes; - - try { - // Is there a hook available? - quantityBoxes = generateWooCommerce.selectors.generateQuantityButtons.quantityBoxes; - } catch ( e ) { - // Use the default plugin selector functionality - quantityBoxes = $( '.cart div.quantity:not(.buttons-added), .cart td.quantity:not(.buttons-added)' ).find( '.qty' ); - } - - // Test the elements have length and greater than 0 - // Try, catch here to provide basic error checking on hooked data - try { - // Nothing found... stop here - if ( quantityBoxes.length === 0 ) { - return false; - } - } catch ( e ) { - return false; - } - - // Allow the each loop callback to be completely overwritten - var quantityBoxesCallback; - - try { - // Try assign a hooked callback - quantityBoxesCallback = generateWooCommerce.callbacks.generateQuantityButtons.quantityBoxes; - } catch ( e ) { - // Use the default callback handler - quantityBoxesCallback = function( key, value ) { - var box = $( value ); - - // Check allowed types - if ( [ 'date', 'hidden' ].indexOf( box.prop( 'type' ) ) !== -1 ) { - return; - } - - // Add plus and minus icons - box.parent().addClass( 'buttons-added' ).prepend( '-' ); - box.after( '+' ); - - // Enforce min value on the input - var min = parseFloat( $( this ).attr( 'min' ) ); - - if ( min && min > 0 && parseFloat( $( this ).val() ) < min ) { - $( this ).val( min ); - } - - // Add event handlers to plus and minus (within this scope) - box.parent().find( '.plus, .minus' ).on( 'click', function() { - // Get values - var currentQuantity = parseFloat( box.val() ), - maxQuantity = parseFloat( box.attr( 'max' ) ), - minQuantity = parseFloat( box.attr( 'min' ) ), - step = box.attr( 'step' ); - - // Fallback default values - if ( ! currentQuantity || '' === currentQuantity || 'NaN' === currentQuantity ) { - currentQuantity = 0; - } - - if ( '' === maxQuantity || 'NaN' === maxQuantity ) { - maxQuantity = ''; - } - - if ( '' === minQuantity || 'NaN' === minQuantity ) { - minQuantity = 0; - } - - if ( 'any' === step || '' === step || undefined === step || 'NaN' === parseFloat( step ) ) { - step = 1; - } - - if ( $( this ).is( '.plus' ) ) { - if ( maxQuantity && ( maxQuantity === currentQuantity || currentQuantity > maxQuantity ) ) { - box.val( maxQuantity ); - } else { - box.val( currentQuantity + parseFloat( step ) ); - } - } else if ( minQuantity && ( minQuantity === currentQuantity || currentQuantity < minQuantity ) ) { - box.val( minQuantity ); - } else if ( currentQuantity > 0 ) { - box.val( currentQuantity - parseFloat( step ) ); - } - - // Trigger change event - box.trigger( 'change' ); - } ); - }; - } - - $.each( quantityBoxes, quantityBoxesCallback ); - } -} ); diff --git a/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/js/woocommerce.min.js b/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/js/woocommerce.min.js deleted file mode 100644 index 97f0e7aa..00000000 --- a/wp-content/upgrade-temp-backup/plugins/gp-premium/woocommerce/functions/js/woocommerce.min.js +++ /dev/null @@ -1 +0,0 @@ -jQuery(function(d){function t(t,a){var e;return function(){clearTimeout(e),e=setTimeout(function(){e=void 0,t.call()},a)}}var m,u;function a(){try{return generateWooCommerce.hooks.generateQuantityButtons()}catch(t){}var a,e;if(d(".woocommerce div.product form.cart").first().closest(".elementor-add-to-cart").length)d(".elementor.product").removeClass("do-quantity-buttons");else{try{a=generateWooCommerce.selectors.generateQuantityButtons.quantityBoxes}catch(t){a=d(".cart div.quantity:not(.buttons-added), .cart td.quantity:not(.buttons-added)").find(".qty")}try{if(0===a.length)return}catch(t){return}try{e=generateWooCommerce.callbacks.generateQuantityButtons.quantityBoxes}catch(t){e=function(t,a){var s=d(a);-1===["date","hidden"].indexOf(s.prop("type"))&&(s.parent().addClass("buttons-added").prepend('-'),s.after('+'),(a=parseFloat(d(this).attr("min")))&&0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - gp_elements - - - _generate_element_content - _generate_element_type - _generate_block_type - _generate_element_display_conditions - _generate_element_exclude_conditions - _generate_element_user_conditions - _generate_hook - _generate_hook_execute_shortcodes - _generate_hook_execute_php - _generate_hook_priority - _generate_hook_disable_site_header - _generate_hook_disable_site_footer - _generate_hero_custom_classes - _generate_hero_container - _generate_hero_inner_container - _generate_hero_horizontal_alignment - _generate_hero_padding_top - _generate_hero_padding_right - _generate_hero_padding_bottom - _generate_hero_padding_left - _generate_hero_padding_top_unit - _generate_hero_padding_right_unit - _generate_hero_padding_bottom_unit - _generate_hero_padding_left_unit - _generate_hero_padding_top_mobile - _generate_hero_padding_right_mobile - _generate_hero_padding_bottom_mobile - _generate_hero_padding_left_mobile - _generate_hero_padding_top_unit_mobile - _generate_hero_padding_right_unit_mobile - _generate_hero_padding_bottom_unit_mobile - _generate_hero_padding_left_unit_mobile - _generate_hero_background_image - _generate_hero_background_position - _generate_hero_background_parallax - _generate_hero_disable_featured_image - _generate_hero_background_overlay - _generate_hero_background_color - _generate_hero_text_color - _generate_hero_link_color - _generate_hero_background_link_color_hover - _generate_site_header_merge - _generate_site_header_height - _generate_site_header_height_mobile - _generate_site_header_background_color - _generate_site_header_title_color - _generate_site_header_tagline_color - _generate_site_logo - _generate_retina_logo - _generate_navigation_logo - _generate_mobile_logo - _generate_navigation_location - _generate_navigation_colors - _generate_navigation_background_color - _generate_navigation_text_color - _generate_navigation_background_color_hover - _generate_navigation_text_color_hover - _generate_navigation_background_color_current - _generate_navigation_text_color_current - _generate_sidebar_layout - _generate_footer_widgets - _generate_disable_site_header - _generate_disable_top_bar - _generate_disable_primary_navigation - _generate_disable_secondary_navigation - _generate_disable_featured_image - _generate_disable_content_title - _generate_disable_footer - _generate_content_area - _generate_content_width - - diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/CHANGELOG.md deleted file mode 100644 index 9e4d2bc5..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/CHANGELOG.md +++ /dev/null @@ -1,321 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## 4.0.0 - 2025-03-24 - -### Changed -- Scanner: add threat count to tab [#40056] -- Scanner: animated the "scan in progress" placeholder image [#39825] -- General: indicate compatibility with the upcoming version of WordPress - 6.7. [#39786] -- General: Update package dependencies. [#42511] - -### Removed -- Firewall: removed "new" badge from tab. [#41902] -- General: Update minimum PHP version to 7.2. [#40147] -- General: Update minimum WordPress version to 6.6. [#40146] - -## 3.1.1 - 2024-10-17 -### Changed -- Firewall: Fix backwards compatibility for sites running standalone mode with outdated packages autoloaded. - -## 3.1.0 - 2024-10-15 -### Added -- Firewall: Adds stat cards showing recent block counts [#35739] -- Auto-Fixers: Adds handling for long-running fixers [#39301] - -### Changed -- Firewall: added help text for IP list formatting rules [#39448] -- Updated package dependencies. [#39707] - -### Removed -- Security Scanning: disabled database threat category [#39467] - -### Fixed -- Minor fixes and improvements. - -## 3.0.2 - 2024-09-06 -### Changed -- Internal updates. - -## 3.0.1 - 2024-09-06 -### Added -- Threats List: Add pagination. [#39058] - -### Changed -- Admin menu: change order of Jetpack sub-menu items. [#39095] -- Updated package dependencies. [#39176] - -### Fixed -- Security Scanning: Adds a background to the scan progress bar. [#38847] -- General: Delete relevant Protect options on deactivation. [#38815] -- Auto Fixers: Disable the unignore threats button when a fixer is in progress. [#38898] -- Security Scanning: Fix the threat fixed on date in the history view. [#39164] -- General: Improves the manual scan link button loading state. [#38897] - -## 3.0.0-beta - 2024-08-09 -### Added -- Firewall: add dedicated WAF allow and block list toggles [#38265] -- General: add "contact support" links [#38416] -- Security Scanning: add threats history view [#38117] - -### Changed -- General: indicate compatibility with the upcoming version of WordPress - 6.6. [#37962] - -### Removed -- General: update WordPress version requirements to WordPress 6.5. [#38382] - -### Fixed -- Fix an issue where the connection error hook was always resetting the notice [#38120] -- Fix image optimization [#38573] -- Fix in-progress threat fixer loading indicator [#38051] -- Fix threat fix modal title [#38312] - -## 2.2.0 - 2024-05-24 -### Added -- Add data to WAF logs and a toggle for users to opt-in to share more data with us if needed. [#36377] -- Trigger a red bubble notification when a bad install is detected. [#36449] - -### Changed -- Update WordPress minimum version requirement to WordPress 6.4. [#37047] -- Only show installation errors on the plugins page. [#36390] - -### Fixed -- Jetpack Protect Footer: ensure that "Go to cloud" links are not shown when on a platform with no firewall support. [#36794] - -## 2.1.0 - 2024-03-14 -### Added -- Added onboarding flows. [#34649] -- Added firewall standalone mode indicator. [#34840] - -### Changed -- General: indicate compatibility with the upcoming version of WordPress, 6.5. [#35820] -- Use blog ID instead of site slug in checkout links. [#35004] -- Updated package dependencies. [#36325] -- Updated package lockfile. [#35672] - -### Fixed -- Prevent text orphans in the site scanning header. [#35935] - -## 2.0.0 - 2024-01-18 -### Changed -- Firewall: use datetime versioning for rules file updates. [#34698] -- General: unify display of notifications across Scan and Firewall screens [#34702] -- General: indicate full compatibility with the latest version of WordPress, 6.4. [#33776] -- General: update PHP requirement to PHP 7.0+ [#34126] -- General: update WordPress version requirements to WordPress 6.3. [#34127] -- General: update package dependencies. [#34882] -- General: update lockfile. [#33607] - -### Fixed -- Fix Modal component overflow scrolling. [#34475] -- Fix Popover component styling. [#34424] -- Improved helper script installer logging. [#34297] - -## 1.4.2 - 2023-10-19 -### Changed -- General: update WordPress version requirements to WordPress 6.2. [#32762] [#32772] -- Updated Jetpack submenu sort order so individual features are alpha-sorted. [#32958] -- Updated method used to render Connection initial state. [#32499] -- Updated package dependencies. [#33692] - -## 1.4.1 - 2023-07-18 -### Changed -- Brute Force Protection: add access to feature in environments that otherwise do not support the WAF. [#31952] -- General: indicate full compatibility with the latest version of WordPress, 6.3. [#31910] -- Update WordPress version requirements. Now requires version 6.1. [#30120] -- Update package dependencies. [#31952] - -### Fixed -- Scan: Fixed sorting of threats by severity. [#31124] -- License Activation: add filtering for unattached and unrevoked licenses within upgrade flow check. [#31086] - -## 1.4.0 - 2023-05-05 -### Added -- Add brute force protection. [#28401] - -### Changed -- General: indicate full compatibility with the latest version of WordPress, 6.2. [#29341] -- Improve the firewall status heading to provide more information based on the current configuration. [#28401] -- Updated package dependencies. [#29480] - -## 1.3.0 - 2023-03-13 -### Added -- Add ability to toggle automatic and manual firewall rules independently. [#27726] -- Add improved messaging for currently enabled firewall features. [#27845] -- Disable Jetpack Firewall on unsupported environments. [#27939] -- Add link to pricing page for getting started with an existing plan or license key. [#27745] - -### Changed -- Updated package dependencies. [#29297] -- Update to React 18. [#28710] -- Use `flex-start`/`flex-end` instead of `start`/`end` for better browser compatibility. [#28530] - -### Fixed -- Fix connection button loading indicators. [#28514] -- Fix Protect status report caching. [#28766] -- Remove unnecessary full path from example in UI. [#29037] -- Other assorted fixes for minor bugs and grammar. [#27846] [#28091] [#28397] [#28273] - -## 1.2.0 - 2023-01-16 -### Added -- Add web application firewall (WAF) features [#27528] -- Add progress bar to site scannnig screen [#27171] - -### Fixed -- Poll for scan status while scanner is provisioning [#28275] -- Bug fixes - -## 1.1.2 - 2022-11-30 -### Changed -- changed description and author [#27618] -- Updated package dependencies. [#27043] - -## 1.1.1 - 2022-11-18 -### Fixed -- Fix issue with plugin activation. - -## 1.1.0 - 2022-11-17 -### Added -- Add features for paid Jetpack Scan users, including file and database threats, on-demand scanning, and threat auto-fixers. - -### Changed -- Compatibility: WordPress 6.1 compatibility - -### Fixed -- Adjust alignment of spinner icon and loading text on the in-progress scan screen. - -## 1.0.4 - 2022-08-29 -### Fixed -- Fixed NaN error that prevented the pricing interstitial from rendering. - -## 1.0.3 - 2022-08-26 -### Added -- Added a default 'See all results' label to the mobile navigation button. -- Added a spinner to the in progress scan page in admin -- Added JITM functionality -- Added threat descriptions. -- My Jetpack includes JITMs - -### Changed -- Add condition to check plugin activation context before redirecting - -### Fixed -- Fixed alignment of long navigation item labels on mobile screen sizes. - -## 1.0.2 - 2022-07-27 -### Changed -- Updated package dependencies. - -### Fixed -- Fix protect admin toolbar icon display when Jetpack enabled and connected -- Minor bug fix - added isset() checks for report data properties - -## 1.0.1 - 2022-07-07 -### Added -- Added two new FAQ entries -- Protect: record even just after the site is registered - -### Changed -- Moved normalization of the Protect status report data to the server side. -- Renamed `master` references to `trunk` -- Reorder JS imports for `import/order` eslint rule. - -### Fixed -- Fixed bug that would not display Core vulnerabilities. -- Removed legacy code and documentation and adds new docs for the debug helper plugin. -- Fixed recommendation for plugins that don't have a fix yet -- Protect: Fix visual issue of the Interstitial page - -## 1.0.0 - 2022-05-31 -### Added -- Add additional tracking events -- Add Alert icon to the error admin page -- Add checks to the Site Health page -- Add custom hook to handle viewport sizes via CSS -- Add error message when adding plugin fails -- Add first approach of Interstitial page -- Add Jetpack Scan to promotion section when site doesn't have Security bundle -- Add missing prop-types module dependency -- Add Navigation dropdown mode and use it for small/medium screens -- Add ProductOffer component -- Add product offer component -- Add title and redirect for vul at wpscan -- Add 'get themes' to synced callables in Protect -- Add installedThemes to the initial state -- Add notifications to the menu item and the admin bar -- Add status polling to the Protect admin page. -- Added details to the FAQ question on how Jetpack Protect is different from other Jetpack products. -- Added Jetpack Protect readme file for the plugin listing. -- Added option to display terms of service below product activation button. -- Added Social card to My Jetpack. -- Added the list of installed plugins to the initial state -- Change ConnectScreen by the Interstitial component -- Creates Status Class -- Empty state screen -- Expose and use IconsCard component -- Flush cache on plugin deactivation -- Footer component -- Handle error in the UI -- Hooks on plugin activation and deactivation -- Hook to read data from the initial state -- Implement Footer -- Implement Add Security bundle workflow -- Introduce Accordion component -- Introduce Navigation component -- Introduce Summary component -- Introduce VulnerabilitiesList component -- JS Components: Introduce Alert component. Add error to ProductOffer components -- More options to the testing api responses -- Record admin page-view and get security from footer events -- Render Security component with data provided by wpcom -- Request and expose to the client the Security bundle data -- Update logo - -### Changed -- Add empty state for no vuls -- Add popover at Badge -- Cache empty statuses for a short period of time -- Changed connection screen to the one that does not require a product -- Changed the method used to disconnect -- Changed the wording for the initial screen. -- Change expiration time of plugin cache -- Clean connection data. Update to latest connection API -- Configure Sync to only what we need to sync -- Janitorial: require a more recent version of WordPress now that WP 6.0 is coming out. -- JS Components: Add subTitle prop to ProductOffer component -- JS Components: iterate over Dialog component -- Improve Dialog layout in medium viewport size -- Move VulnerabilitiesList to section hero -- New VulsList -- Redesign Summary component -- Re-implement "Your results will be ready soon" layout -- Re-implement Admin page by using Dialog component -- Remove use of `pnpx` in preparation for pnpm 7.0. -- Replace deprecated external-link variation by using isExternalLink prop -- Require only site level connection -- Truncate items at NavigationGroup -- Tweak footer -- Update Footer and VulsList for small/medium viewport -- Update Navigation to be external controlled -- Update Protect icon -- Update VulnerabilitiesList to remove severity and add fixed in -- Updated package dependencies. -- Update package.json metadata. -- Updates CTA wording to reduce confusion when user already has Jetpack Security Bundle which includes Jetpack Scan -- Update the Status when connection is established -- Use data provided by My Jetpack to render Product offer -- Use weight Button prop to style the "learn more" footer link -- Use a different copy when there are no found vulnerabilities but there are still some unchecked items - -### Removed -- Removed Full Sync from loaded modules as Full Sync Immediately is present by default now - -### Fixed -- Adjust spacing and overflow properties of the navigation labels to improve display of long names. -- Fix Connectino initialization -- Fix fatal when checking whether site site has vuls -- Fix right margin in primary layout diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/fonts/jetpack-protect.eot b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/fonts/jetpack-protect.eot deleted file mode 100644 index 51f012dd13d1ecd25dc203f65c51f94ba8d635a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1496 zcmb7EOK22X6g{s#U9pv9(pIO^gT&HIzL1`D+9Wy?oAe^V&m?M;fD3UdotloC?rJ&} zNSG`{kU(HaKoDHI6M~fhCyM#&r%@>rakoucFW+92d~~a=iYbUt9ReK zFH}Hh7m!ff1lEM7{C2Wd_k4rax*ECttqo|wMc8mrf`uF|p@*mphl)+^azZ^Oi1V1o zEPcvUnlMSFj5%DOXAve+NTQdP|Bpr|Z$mqA88UiLoc_75A*OaydC2~Iu3(jn$>+;- z+CzROZ_SlB{y^@Hb@|!FKdwLMUMF85-Am;op8%3)ADE$_Wn_=vBL8Wo;4Vag z74m1~`mB?)(1|tjf5>+gtc4PyI86SY+$>rJ`{j`%*8q7J*Z8;O%(>hroASZ4LzW@d zzzj$?{D`Z;DBdA0c6feOO>o<_Z5Vh1`ElhjhGljdx02)encl}=&0BE~ZNbPTeXigj z$0+KUe2JR*29?j13N_9Rv8cQ@6wa%TD}!HgIj=-=1hrp9%xUT6_5vcIFfBPlxC`_b0SC`glApMzh+ul87}X z5{YyTS5m2FO>0i2u8fVJdV2Nh(~)ep(AB9+lHS=>$Yw`oHa73Y3?tTP z82*3rKW|4?ThBKPeZ)@1KeE49n{Rp`7{kBg9pl*sjdT25A@G-%s!lNQPy&KYx@ tViKc%$#Y?{B-$)~ULmynaydKh diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/fonts/jetpack-protect.svg b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/fonts/jetpack-protect.svg deleted file mode 100644 index 51e14560..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/fonts/jetpack-protect.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - -Generated by IcoMoon - - - - - - - \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/fonts/jetpack-protect.ttf b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/fonts/jetpack-protect.ttf deleted file mode 100644 index c44c262f09b0bdd218d4330f0a1e2f3652cfd5da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1300 zcmb7EOGq106g@99lhG(z(}`n>*i;*%f~hek>Bk1MQ2Y>!wg@gtJH~0^Cz+6ppwvYX zL=cKXq0nV_g7mX(X~9(&;;PFoN@<~B+hq$<(Dcs7Hf{>u@N&;N_rCkyeeWe;0IKi+ z9J+4YywqLm7CK0IL*s5LtK{X0_iF%aBz`Nc6!YZI5I1~9dVcBN73iT@z(%PCp) z!{Fc}fUBl8zUH-}PWvR|e;RRc9M~oV%70>3+^{_Rjxeh<^2&_Swoh6gun%shw1Ym5 z1_h0?I5wXNjMa?MNHNRPk|yVInY;@XaL|Xrw~x|csYDw7VpjSh^E9u#E(4>i+A_@n z#IBer|MLE?@mMeY=9amKkkEl3uF}^1LY*WxF}Yr@?~X-daTbe4E=2r-M-pq8=oFpJ zf!08f1zICQOCWq!a<(+LMtY**?s{(dXzggt>z$0phov@YI3Az$dJm_VpZPtWk#M+I ztPy*|;SrCA4J5=--s`UOdh6U?$LHC^m#bE6LHZ-PP6I{zM|%-X=L5 zQd@gAk?7AH9KCeQvb#=}&AzG6XU>h5JGH&PP{o@^_Hm=(sR1l+cSmoG&ek%TW8M|4 zd~Uhy1g#9gide*$Mx5RnnTyV;3Dyh&*X$CFYLj zp@;Fas-9O;bDjBurmHC(vrwTU4+SaA(N^*(KqEyZu1~0i;*6H_g@Rp}AgO>NW+_Mk4(o{ZYcBYt3Pm?x diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/fonts/jetpack-protect.woff b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/fonts/jetpack-protect.woff deleted file mode 100644 index dc898ac561ba44db0ed4e73f806927c20c134edd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1376 zcmb7DO=uHA6n?WmS({2~<0jiksnOaWi;YcVTYqY34h?OkEmbLc5W7v+q?%+yvPFwM z6-uEXEeL`~Z$k0sswj9658}zA2M-ED^{OC(jo-{}wO$H+%bWSWZ{EDw_jdN?csfmt zVCodridlC#$N$^-h2z~sY!B2a?sY-6BU3O-&~o4xxf_%3m$PPtYcIfgEcboc{QNa& zuYrGZzxTXjJ!hFSL=und<$mzl+?yOkXy3t)aMzOZn_R)UMI<+X>)icBD|tJEIQba( zUg7PuRxoejT=^t;RJfnc7R`bM?Gn!Z!u`Y0(A|<S;2V7+08x>4sN z-)i&Ky8a(jtB5XqTy1#3fjfKE@q36)2*V!ntwwh7`M!g_d#Fru%Ava<+|mR%*>6>QrUK_j6>JSB8N(3 zQig8eRZ3JQ8;S+)Oj_m2tX+)8V_h@}sZ14`#d49N6vqwf+Eun)1)sOFb9u8&=W%S7 z<|vOhEbl5q+AccLtW~tiren=Sr{|-?8GF>Wi!n-z8XQ!SMf#$s%oIh>K%1s{jKgSv QO`~vLZwz0R|H(VpA8x+W-~a#s diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/jetpack-protect.css b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/jetpack-protect.css deleted file mode 100644 index d194c5b1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/assets/jetpack-protect.css +++ /dev/null @@ -1,30 +0,0 @@ -@font-face { - font-family: 'jetpack-protect'; - src: url('fonts/jetpack-protect.eot?31wpn'); - src: url('fonts/jetpack-protect.eot?31wpn#iefix') format('embedded-opentype'), - url('fonts/jetpack-protect.ttf?31wpn') format('truetype'), - url('fonts/jetpack-protect.woff?31wpn') format('woff'), - url('fonts/jetpack-protect.svg?31wpn#jetpack-protect') format('svg'); - font-weight: normal; - font-style: normal; - font-display: block; - } - -[class^="jp-protect-icon"], [class*=" jp-protect-icon"] { - /* use !important to prevent issues with browser extensions that change fonts */ - font-family: 'jetpack-protect' !important; - speak: never; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - - /* Better Font Rendering =========== */ - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.jp-protect-icon:before { - content: "\e900"; -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.asset.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.asset.php deleted file mode 100644 index 14de1bb2..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('jetpack-connection', 'jetpack-script-data', 'moment', 'react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-date', 'wp-element', 'wp-i18n', 'wp-polyfill', 'wp-primitives', 'wp-url'), 'version' => '5a27a9f58fb4802d8a58'); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.css b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.css deleted file mode 100644 index 4dcb512e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.css +++ /dev/null @@ -1 +0,0 @@ -._aiMxmJRAw5jRPbZFX57{background-color:var(--jp-gray-90);border-radius:var(--jp-border-radius);color:var(--jp-white);display:flex;overflow:hidden;z-index:1}._aiMxmJRAw5jRPbZFX57.eWgNBUaexiR66ZI1Px4U{border-left:4px solid var(--jp-yellow-20);margin-bottom:calc(var(--spacing-base)*3)}._aiMxmJRAw5jRPbZFX57.ZGELG1CO333FilJXOaeI{margin-left:calc(var(--spacing-base)*3);position:fixed;right:calc(var(--spacing-base)*3);top:calc(var(--spacing-base)*6)}@media(max-width:782px){._aiMxmJRAw5jRPbZFX57.ZGELG1CO333FilJXOaeI{top:calc(var(--spacing-base)*8)}}._aiMxmJRAw5jRPbZFX57 a,._aiMxmJRAw5jRPbZFX57 a:active,._aiMxmJRAw5jRPbZFX57 a:hover,._aiMxmJRAw5jRPbZFX57 a:link,._aiMxmJRAw5jRPbZFX57 a:visited{color:var(--jp-white)}.BnI88X_e8ItF1c9Uozmj{background-color:var(--jp-yellow-30);fill:var(--jp-white);align-items:center;display:flex;justify-content:center;padding:calc(var(--spacing-base)*1.5)}.hRRUwTCPRpurhMwRNZkg .BnI88X_e8ItF1c9Uozmj{background-color:var(--jp-green-50)}.Z6q3IxY_uR1y2lAPTkVF .BnI88X_e8ItF1c9Uozmj{background-color:var(--jp-red)}.eWgNBUaexiR66ZI1Px4U .BnI88X_e8ItF1c9Uozmj{fill:var(--jp-yellow-50);background-color:var(--jp-yellow-5)}.ST8sowTbBVLRPrk4ZQrn{font-size:14px;padding:calc(var(--spacing-base)*1.75)}.eWgNBUaexiR66ZI1Px4U .ST8sowTbBVLRPrk4ZQrn{background-color:var(--jp-yellow-5);color:var(--jp-gray-90)}.lMkO08Vd8YQMfwrwaI8u{fill:var(--jp-gray);align-items:center;background:#0000;border:none;cursor:pointer;display:flex;justify-content:center;padding:calc(var(--spacing-base)*1.5)}._Wc3apZobag_9Ag_THTb{display:flex;justify-content:space-between}.WQVtrU6q0L1Igcj7wCrQ{margin:0;padding:0}.UujoBFTnQNY2cWU2SIsH{font-size:var(--font-headline-medium);font-weight:700;line-height:52px}.TeGO5V_thHw5lDAm1_2M{font-weight:700}.TeGO5V_thHw5lDAm1_2M,.WolQzb2MsSgiNmLtc7_j{font-size:var(--font-headline-small);line-height:40px}.WolQzb2MsSgiNmLtc7_j{font-weight:400}.hUB0JT8p1T2Hw28N6qC8{font-weight:500}.gKZWDv5chz3_O3Syp74H,.hUB0JT8p1T2Hw28N6qC8{font-size:var(--font-title-medium);line-height:32px}.gKZWDv5chz3_O3Syp74H{font-weight:600}.zY2No8Ga4b8shbOQGhnv{font-size:var(--font-title-small);font-weight:500;line-height:30px}.tIj0D1t8Cc892ikmgFPZ{font-size:var(--font-body);font-weight:400;line-height:24px}.KdcN0BnOaVeVhyLRKqhS{font-size:var(--font-body-small);font-weight:400;line-height:24px}.dso3Rh3tl3Xv1GumBktz{font-weight:400}.dso3Rh3tl3Xv1GumBktz,.mQ1UlbN9u4Mg9byO8m7v{font-size:var(--font-body-extra-small);line-height:20px}.mQ1UlbN9u4Mg9byO8m7v{font-weight:700}.PItlW5vRExLnTj4a8eLE{font-size:var(--font-body-extra-small);font-weight:600;line-height:16px}.TwRpPlktzxhmFVeua7P5{margin:calc(var( --spacing-base )*0)}.zVfqx7gyb3o9mxfGynn1{margin-left:calc(var( --spacing-base )*0);margin-right:calc(var( --spacing-base )*0)}.iSHVzNiB9iVleGljaQxy{margin-bottom:calc(var( --spacing-base )*0)}.iSHVzNiB9iVleGljaQxy,.xqDIp6cNVr_E6RXaiPyD{margin-top:calc(var( --spacing-base )*0)}.S8EwaXk1kyPizt6x4WH2{margin-right:calc(var( --spacing-base )*0)}.ODX5Vr1TARoLFkDDFooD{margin-bottom:calc(var( --spacing-base )*0)}.cphJ8dCpfimnky7P2FHg{margin-left:calc(var( --spacing-base )*0)}.PFgIhNxIyiSuNvQjAIYj{margin:calc(var( --spacing-base )*1)}.M2jKmUzDxvJjjVEPU3zn{margin-left:calc(var( --spacing-base )*1);margin-right:calc(var( --spacing-base )*1)}.io15gAh8tMTNbSEfwJKk{margin-bottom:calc(var( --spacing-base )*1)}.io15gAh8tMTNbSEfwJKk,.rcTN5uw9xIEeMEGL3Xi_{margin-top:calc(var( --spacing-base )*1)}.CQSkybjq2TcRM1Xo9COV{margin-right:calc(var( --spacing-base )*1)}.hfqOWgq6_MEGdFE82eOY{margin-bottom:calc(var( --spacing-base )*1)}.I8MxZQYTbuu595yfesWA{margin-left:calc(var( --spacing-base )*1)}.kQkc6rmdpvLKPkyoJtVQ{margin:calc(var( --spacing-base )*2)}.j6vFPxWuu4Jan2ldoxpp{margin-left:calc(var( --spacing-base )*2);margin-right:calc(var( --spacing-base )*2)}.hqr39dC4H_AbactPAkCG{margin-bottom:calc(var( --spacing-base )*2)}.c3dQnMi16C6J6Ecy4283,.hqr39dC4H_AbactPAkCG{margin-top:calc(var( --spacing-base )*2)}.YNZmHOuRo6hU7zzKfPdP{margin-right:calc(var( --spacing-base )*2)}.Db8lbak1_wunpPk8NwKU{margin-bottom:calc(var( --spacing-base )*2)}.ftsYE5J9hLzquQ0tA5dY{margin-left:calc(var( --spacing-base )*2)}.Det4MHzLUW7EeDnafPzq{margin:calc(var( --spacing-base )*3)}.h_8EEAztC29Vve1datb5{margin-left:calc(var( --spacing-base )*3);margin-right:calc(var( --spacing-base )*3)}.YXIXJ0h1k47u6hzK8KcM{margin-bottom:calc(var( --spacing-base )*3)}.YXIXJ0h1k47u6hzK8KcM,.soADBBkcIKCBXzCTuV9_{margin-top:calc(var( --spacing-base )*3)}.zSX59ziEaEWGjnpZa4uV{margin-right:calc(var( --spacing-base )*3)}.yrVTnq_WBMbejg89c2ZQ{margin-bottom:calc(var( --spacing-base )*3)}.UKtHPJnI2cXBWtPDm5hM{margin-left:calc(var( --spacing-base )*3)}.guexok_Tqd5Tf52hRlbT{margin:calc(var( --spacing-base )*4)}.oS1E2KfTBZkJ3F0tN7T6{margin-left:calc(var( --spacing-base )*4);margin-right:calc(var( --spacing-base )*4)}.DN1OhhXi6AoBgEdDSbGd{margin-bottom:calc(var( --spacing-base )*4)}.DN1OhhXi6AoBgEdDSbGd,.ot2kkMcYHv53hLZ4LSn0{margin-top:calc(var( --spacing-base )*4)}.A1krOZZhlQ6Sp8Cy4bly{margin-right:calc(var( --spacing-base )*4)}.pkDbXXXL32237M0hokEh{margin-bottom:calc(var( --spacing-base )*4)}.XXv4kDTGvEnQeuGKOPU3{margin-left:calc(var( --spacing-base )*4)}.yGqHk1a57gaISwkXwXe6{margin:calc(var( --spacing-base )*5)}.X8cghM358X3DkXLc9aNK{margin-left:calc(var( --spacing-base )*5);margin-right:calc(var( --spacing-base )*5)}.GdfSmGwHlFnN2S6xBn1f{margin-bottom:calc(var( --spacing-base )*5)}.GdfSmGwHlFnN2S6xBn1f,.yqeuzwyGQ7zG0avrGqi_{margin-top:calc(var( --spacing-base )*5)}.g9emeCkuHvYhveiJbfXO{margin-right:calc(var( --spacing-base )*5)}.Lvk3dqcyHbZ07QCRlrUQ{margin-bottom:calc(var( --spacing-base )*5)}.r3yQECDQ9qX0XZzXlVAg{margin-left:calc(var( --spacing-base )*5)}.aQhlPwht2Cz1X_63Miw0{margin:calc(var( --spacing-base )*6)}.JyHb0vK3wJgpblL9s5j8{margin-left:calc(var( --spacing-base )*6);margin-right:calc(var( --spacing-base )*6)}.cY2gULL1lAv6WPNIRuf3{margin-bottom:calc(var( --spacing-base )*6)}.NBWQ9Lwhh_fnry3lg_p7,.cY2gULL1lAv6WPNIRuf3{margin-top:calc(var( --spacing-base )*6)}.yIOniNe5E40C8fWvBm5V{margin-right:calc(var( --spacing-base )*6)}.t30usboNSyqfQWIwHvT3{margin-bottom:calc(var( --spacing-base )*6)}.Nm_TyFkYCMhOoghoToKJ{margin-left:calc(var( --spacing-base )*6)}.C4qJKoBXpgKtpmrqtEKB{margin:calc(var( --spacing-base )*7)}.S93Srbu6NQ_PBr7DmTiD{margin-left:calc(var( --spacing-base )*7);margin-right:calc(var( --spacing-base )*7)}.fJj8k6gGJDks3crUZxOS{margin-bottom:calc(var( --spacing-base )*7)}.cW6D6djs7Ppm7fD7TeoV,.fJj8k6gGJDks3crUZxOS{margin-top:calc(var( --spacing-base )*7)}.DuCnqNfcxcP3Z__Yo5Ro{margin-right:calc(var( --spacing-base )*7)}.im8407m2fw5vOg7O2zsw{margin-bottom:calc(var( --spacing-base )*7)}.G0fbeBgvz2sh3uTP9gNl{margin-left:calc(var( --spacing-base )*7)}.kvW3sBCxRxUqz1jrVMJl{margin:calc(var( --spacing-base )*8)}.tOjEqjLONQdkiYx_XRnw{margin-left:calc(var( --spacing-base )*8);margin-right:calc(var( --spacing-base )*8)}.op5hFSx318zgxsoZZNLN{margin-bottom:calc(var( --spacing-base )*8)}.c9WfNHP6TFKWIfLxv52J,.op5hFSx318zgxsoZZNLN{margin-top:calc(var( --spacing-base )*8)}.sBA75QqcqRwwYSHJh2wc{margin-right:calc(var( --spacing-base )*8)}.GpL6idrXmSOM6jB8Ohsf{margin-bottom:calc(var( --spacing-base )*8)}.HbtWJoQwpgGycz8dGzeT{margin-left:calc(var( --spacing-base )*8)}.uxX3khU88VQ_Ah49Ejsa{padding:calc(var( --spacing-base )*0)}.KX0FhpBKwKzs9fOUdbNz{padding-left:calc(var( --spacing-base )*0);padding-right:calc(var( --spacing-base )*0)}.PfK8vKDyN32dnimlzYjz{padding-bottom:calc(var( --spacing-base )*0)}.PfK8vKDyN32dnimlzYjz,.emxLHRjQuJsImnPbQIzE{padding-top:calc(var( --spacing-base )*0)}.kJ8WzlpTVgdViXt8ukP9{padding-right:calc(var( --spacing-base )*0)}.tg_UIUI11VBzrTAn2AzJ{padding-bottom:calc(var( --spacing-base )*0)}.uczvl8kaz84oPQJ2DB2R{padding-left:calc(var( --spacing-base )*0)}.o7UHPcdVK3lt7q3lqV4o{padding:calc(var( --spacing-base )*1)}.IDqEOxvDoYrFYxELPmtX{padding-left:calc(var( --spacing-base )*1);padding-right:calc(var( --spacing-base )*1)}.DdywPW2qSYlu2pt8tpO2{padding-bottom:calc(var( --spacing-base )*1)}.DdywPW2qSYlu2pt8tpO2,.npy3hw4A5QSkDicb2CJJ{padding-top:calc(var( --spacing-base )*1)}.LgbptTApNY5NwLQvEFAt{padding-right:calc(var( --spacing-base )*1)}.WZQy2SZuZso59bUsXXyl{padding-bottom:calc(var( --spacing-base )*1)}.o331apInxNunbYB3SfPE{padding-left:calc(var( --spacing-base )*1)}.fMPIyD9Vqki1Lrc_yJnG{padding:calc(var( --spacing-base )*2)}.i2pMcTcdrr10IQoiSm_L{padding-left:calc(var( --spacing-base )*2);padding-right:calc(var( --spacing-base )*2)}.eA702gn32kwptiI1obXH{padding-bottom:calc(var( --spacing-base )*2)}.eA702gn32kwptiI1obXH,.o9bGieUKcYc8o0Ij9oZX{padding-top:calc(var( --spacing-base )*2)}.SwZcFez1RDqWsOFjB5iG{padding-right:calc(var( --spacing-base )*2)}.eHpLc_idmuEqeqCTvqkN{padding-bottom:calc(var( --spacing-base )*2)}.vU39i2B4P1fUTMB2l6Vo{padding-left:calc(var( --spacing-base )*2)}.JHWNzBnE29awhdu5BEh1{padding:calc(var( --spacing-base )*3)}.X72lGbb56L3KFzC2xQ9N{padding-left:calc(var( --spacing-base )*3);padding-right:calc(var( --spacing-base )*3)}.BzfNhRG8wXdCEB5ocQ6e{padding-bottom:calc(var( --spacing-base )*3)}.BzfNhRG8wXdCEB5ocQ6e,.srV0KSDC83a2fiimSMMQ{padding-top:calc(var( --spacing-base )*3)}.lUWfkmbQjCskhcNwkyCm{padding-right:calc(var( --spacing-base )*3)}.Ts0dIlc3aTSL7V4cIHis{padding-bottom:calc(var( --spacing-base )*3)}.CzlqQXXhX6MvorArFZ8B{padding-left:calc(var( --spacing-base )*3)}.TqMPkQtR_DdZuKb5vBoV{padding:calc(var( --spacing-base )*4)}.a7UrjhI69Vetlcj9ZVzz{padding-left:calc(var( --spacing-base )*4);padding-right:calc(var( --spacing-base )*4)}.StEhBzGs2Gi5dDEkjhAv{padding-bottom:calc(var( --spacing-base )*4)}.FGneZfZyvYrt1dG0zcnm,.StEhBzGs2Gi5dDEkjhAv{padding-top:calc(var( --spacing-base )*4)}.APEH216rpdlJWgD2fHc8{padding-right:calc(var( --spacing-base )*4)}.oGwXC3ohCic9XnAj6x69{padding-bottom:calc(var( --spacing-base )*4)}.U6gnT9y42ViPNOcNzBwb{padding-left:calc(var( --spacing-base )*4)}.IpdRLBwnHqbqFrixgbYC{padding:calc(var( --spacing-base )*5)}.HgNeXvkBa9o3bQ5fvFZm{padding-left:calc(var( --spacing-base )*5);padding-right:calc(var( --spacing-base )*5)}.tJtFZM3XfPG9v9TSDfN1{padding-bottom:calc(var( --spacing-base )*5)}.PdifHW45QeXYfK568uD8,.tJtFZM3XfPG9v9TSDfN1{padding-top:calc(var( --spacing-base )*5)}.mbLkWTTZ0Za_BBbFZ5b2{padding-right:calc(var( --spacing-base )*5)}.vVWpZpLlWrkTt0hMk8XU{padding-bottom:calc(var( --spacing-base )*5)}.RxfaJj5a1Nt6IavEo5Zl{padding-left:calc(var( --spacing-base )*5)}.SppJULDGdnOGcjZNCYBy{padding:calc(var( --spacing-base )*6)}.palY2nLwdoyooPUm9Hhk{padding-left:calc(var( --spacing-base )*6);padding-right:calc(var( --spacing-base )*6)}.WYw1JvZC0ppLdvSAPhr_{padding-bottom:calc(var( --spacing-base )*6)}.WYw1JvZC0ppLdvSAPhr_,.YEEJ9b90ueQaPfiU8aeN{padding-top:calc(var( --spacing-base )*6)}.QE0ssnsKvWJMqlhPbY5u{padding-right:calc(var( --spacing-base )*6)}.n8yA3jHlMRyLd5UIfoND{padding-bottom:calc(var( --spacing-base )*6)}.tXHmxYnHzbwtfxEaG51n{padding-left:calc(var( --spacing-base )*6)}.kBTsPKkO_3g_tLkj77Um{padding:calc(var( --spacing-base )*7)}.RyhrFx6Y1FGDrGAAyaxm{padding-left:calc(var( --spacing-base )*7);padding-right:calc(var( --spacing-base )*7)}.CBwRpB0bDN3iEdQPPMJO{padding-bottom:calc(var( --spacing-base )*7)}.CBwRpB0bDN3iEdQPPMJO,.vQVSq6SvWKbOMu6r4H6b{padding-top:calc(var( --spacing-base )*7)}.oBy5__aEADMsH46mrgFX{padding-right:calc(var( --spacing-base )*7)}.KVEXoJqf1s92j0JMdNmN{padding-bottom:calc(var( --spacing-base )*7)}.ZMXGNrNaKW3k_3TLz0Fq{padding-left:calc(var( --spacing-base )*7)}.tuiR9PhkHXhGyEgzRZRI{padding:calc(var( --spacing-base )*8)}.U7454qyWkQNa2iaSJziu{padding-left:calc(var( --spacing-base )*8);padding-right:calc(var( --spacing-base )*8)}.VLYIv2GVocjuN93e8HC8{padding-bottom:calc(var( --spacing-base )*8)}.VLYIv2GVocjuN93e8HC8,.X1rm9DQ1zLGLfogja5Gn{padding-top:calc(var( --spacing-base )*8)}.JS7G6kAuqJo5GIuF8S5t{padding-right:calc(var( --spacing-base )*8)}.Y8F9ga1TDCMbM1lj4gUz{padding-bottom:calc(var( --spacing-base )*8)}.AJuyNGrI63BOWql719H8{padding-left:calc(var( --spacing-base )*8)}.zI5tJ_qhWE6Oe6Lk75GY{--wp-admin-theme-color:var(--jp-black);--wp-admin-theme-color-darker-10:var(--jp-black-80);--wp-admin-theme-color-darker-20:var(--jp-black-80);--wp-admin-border-width-focus:1.51px;border-radius:var(--jp-border-radius);font-weight:600;justify-content:center}.zI5tJ_qhWE6Oe6Lk75GY.tuBt2DLqimiImoqVzPqo{height:calc(var(--spacing-base)*5);padding:var(--spacing-base);width:calc(var(--spacing-base)*5)}.zI5tJ_qhWE6Oe6Lk75GY.tuBt2DLqimiImoqVzPqo>svg:first-child{margin:0;padding:0}.zI5tJ_qhWE6Oe6Lk75GY.tuBt2DLqimiImoqVzPqo.Na39I683LAaSA99REg14{height:calc(var(--spacing-base)*4);min-width:calc(var(--spacing-base)*4);padding:calc(var(--spacing-base)/2);width:calc(var(--spacing-base)*4)}.zI5tJ_qhWE6Oe6Lk75GY.ipS7tKy9GntCS4R3vekF:not(.tuBt2DLqimiImoqVzPqo){font-size:var(--font-body);height:auto;line-height:24px;padding:var(--spacing-base) calc(var(--spacing-base)*3)}.zI5tJ_qhWE6Oe6Lk75GY.ipS7tKy9GntCS4R3vekF:not(.tuBt2DLqimiImoqVzPqo).paGLQwtPEaJmtArCcmyK{padding:var(--spacing-base) calc(var(--spacing-base)*2)}.zI5tJ_qhWE6Oe6Lk75GY.Na39I683LAaSA99REg14:not(.tuBt2DLqimiImoqVzPqo){font-size:var(--font-body-extra-small);height:auto;line-height:20px;padding:calc(var(--spacing-base)/2) var(--spacing-base)}.zI5tJ_qhWE6Oe6Lk75GY.Na39I683LAaSA99REg14:not(.tuBt2DLqimiImoqVzPqo).paGLQwtPEaJmtArCcmyK>svg:first-child{margin-right:calc(var(--spacing-base)/2)}.zI5tJ_qhWE6Oe6Lk75GY.Na39I683LAaSA99REg14:not(.tuBt2DLqimiImoqVzPqo)>.components-spinner{height:20px}.zI5tJ_qhWE6Oe6Lk75GY.lZAo6_oGfclXOO9CC6Rd{font-weight:400}.zI5tJ_qhWE6Oe6Lk75GY.xJDOiJxTt0R_wSl8Ipz_{min-width:100%}.zI5tJ_qhWE6Oe6Lk75GY.is-primary:disabled,.zI5tJ_qhWE6Oe6Lk75GY.is-secondary:disabled{background:var(--jp-gray);color:var(--jp-gray-20)}.zI5tJ_qhWE6Oe6Lk75GY.is-secondary{background:var(--jp-white);box-shadow:inset 0 0 0 1.51px var(--jp-black)}.zI5tJ_qhWE6Oe6Lk75GY.is-secondary:active:not(:disabled),.zI5tJ_qhWE6Oe6Lk75GY.is-secondary:hover:not(:disabled){background:var(--jp-gray-0)}.zI5tJ_qhWE6Oe6Lk75GY.is-link.Na39I683LAaSA99REg14,.zI5tJ_qhWE6Oe6Lk75GY.is-link.ipS7tKy9GntCS4R3vekF{padding:0}.zI5tJ_qhWE6Oe6Lk75GY.is-link:hover:not(:disabled){text-decoration-thickness:3px}.zI5tJ_qhWE6Oe6Lk75GY.is-link:focus:not(:disabled){text-decoration-line:none}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary{box-shadow:none}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary:not(:disabled){background:var(--jp-red-50);box-shadow:inset 0 0 0 1px var(--jp-red-50);color:var(--jp-white)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary:hover:not(:disabled){background:var(--jp-red-60);box-shadow:inset 0 0 0 1px var(--jp-red-60)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary:focus:not(:disabled){background:var(--jp-red-70);box-shadow:inset 0 0 0 1px var(--jp-white),0 0 0 var(--wp-admin-border-width-focus) var(--jp-red-70);color:var(--jp-white)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary:active:not(:disabled){background:var(--jp-red-50)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary{box-shadow:none}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary:not(:disabled){background:var(--jp-white);box-shadow:inset 0 0 0 1.5px var(--jp-red-50);color:var(--jp-red-50)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary:hover:not(:disabled){background:var(--jp-red-0);box-shadow:inset 0 0 0 1.5px var(--jp-red-60);color:var(--jp-red-60)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary:focus:not(:disabled){box-shadow:inset 0 0 0 1px var(--jp-white),0 0 0 var(--wp-admin-border-width-focus) var(--jp-red-70);color:var(--jp-red-70)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary:active:not(:disabled){background:var(--jp-gray-0)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-link:not(:disabled){color:var(--jp-red-50)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-link:hover:not(:disabled){box-shadow:none;color:var(--jp-red-60)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-link:focus:not(:disabled){box-shadow:inset 0 0 0 1px var(--jp-white),0 0 0 var(--wp-admin-border-width-focus) var(--jp-red-70);color:var(--jp-red-70)}.zI5tJ_qhWE6Oe6Lk75GY.q_tVWqMjl39RcY6WtQA6{position:relative}.zI5tJ_qhWE6Oe6Lk75GY.q_tVWqMjl39RcY6WtQA6.has-icon{justify-content:center}.zI5tJ_qhWE6Oe6Lk75GY.q_tVWqMjl39RcY6WtQA6>:not(.components-spinner){visibility:hidden}.zI5tJ_qhWE6Oe6Lk75GY.q_tVWqMjl39RcY6WtQA6>.components-spinner{margin:0;position:absolute}.CDuBjJp_8jxzx5j6Nept{margin-left:calc(var(--spacing-base)/2)}.kdsaL7c4bpTwf_A4fIUT{padding-bottom:calc(var(--spacing-base)*6);padding-top:calc(var(--spacing-base)*6);text-align:center}.b0eN3as5AgxQW7EAkarg{margin-bottom:0}@keyframes rotate-spinner{to{transform:rotate(1turn)}}.jp-components-spinner{align-items:center;display:flex}.jp-components-spinner__inner,.jp-components-spinner__outer{animation:3s linear infinite;animation-name:rotate-spinner;border:.1em solid #0000;border-radius:50%;box-sizing:border-box;margin:auto}.jp-components-spinner__outer{border-top-color:#fff}.jp-components-spinner__inner{border-right-color:#fff;border-top-color:#fff;height:100%;opacity:.4;width:100%}.NHzH3tt6CypjZ92CvK9x{border:1px solid var(--jp-gray);border-radius:var(--jp-border-radius);display:flex;padding:calc(var(--spacing-base)*2)}.NHzH3tt6CypjZ92CvK9x:first-of-type{border-top-left-radius:var(--jp-border-radius);border-top-right-radius:var(--jp-border-radius)}.NHzH3tt6CypjZ92CvK9x:last-of-type{border-bottom-left-radius:var(--jp-border-radius);border-bottom-right-radius:var(--jp-border-radius)}.NHzH3tt6CypjZ92CvK9x+.NHzH3tt6CypjZ92CvK9x{border-top:0}.D9zvYDUrOP_zwSm0yJMs{margin-right:calc(var(--spacing-base)*2);min-width:24px}._XISfmbjoVlqhB61hHYn{width:100%}.AQDPBnMZFu7BOBuo8mYW{font-size:18px;font-weight:600;line-height:24px;margin-bottom:0}.cZ9s5eCAZe3R82Y6Ru3z{color:var(--jp-gray-80);font-size:14px;line-height:21px}.AKnbWQiViZ2O_dwCV8Fw,.W6alQ2_S5Rh06djX9m27{align-self:center;margin-left:calc(var(--spacing-base)*2);margin-right:var(--spacing-base)}.VLE2X0rP3Ug4QHebdiJd{background-color:var(--jp-gray-0);border-radius:4px;color:var(--jp-gray-80);display:inline-block;font-size:13px;font-weight:400;line-height:16px;padding:4px 8px}.VLE2X0rP3Ug4QHebdiJd.hEfxH6nau4tQkeE4BNms{background-color:var(--jp-green-5);color:var(--jp-green-50)}.VLE2X0rP3Ug4QHebdiJd.Snl4I6aKbXFIrcWaSIC0{background-color:var(--jp-yellow-5);color:var(--jp-yellow-60)}.VLE2X0rP3Ug4QHebdiJd.zvZFUdy480Xv3IHYbX6a{background-color:var(--jp-red-5);color:var(--jp-red-70)}.uUEJGMrSV3XoBwX5xEwA{display:flex;justify-content:space-between}.sQkG5Cu80gPaeFj3L_wa{margin-bottom:calc(var(--spacing-base)*5)}.oIl6GCMeUnzE0inXbuj9{display:flex;justify-content:space-between}.RP2MVoGqaCFXPKZhhxQ1{margin-bottom:calc(var(--spacing-base)*5)}.YpEs8b7KE7fzVuXUbOEb{display:flex;justify-content:space-between}.EqpwvErHtRi_WQkJKgi1{border:1px solid var(--jp-gray);border-radius:var(--jp-border-radius);display:flex;margin-bottom:calc(var(--spacing-base)*3);padding:calc(var(--spacing-base)*2)}.EicvN1QaJu5OJLzdUN5A{margin-right:calc(var(--spacing-base)*2);min-width:24px}.b7ynAmUwGlxK_vxyIN0y{width:100%}.uSV9HYRxjL4S6zIZDlqP{font-size:18px;font-weight:600;line-height:24px;margin-bottom:0}.XpW8Mvw_XFEbqxUdw155{color:var(--jp-gray-80);font-size:14px;line-height:21px}.Fkj60BmQ5sUo9zHcJwVv{align-self:center;margin-left:calc(var(--spacing-base)*2);margin-right:var(--spacing-base)}.XLzPr74ad3osCq9kxy2q{display:flex;justify-content:space-between}.jNlU3vgp4xEGwmX5aTyK{background-color:var(--jp-gray-5)}.gE8s4nh3f7iGIBrFeyCT{list-style-type:disc;padding-left:calc(var(--spacing-base)*2.5)}.L9hh_sX51PzO41icwJlh{border:1px solid var(--jp-gray);border-radius:var(--jp-border-radius);display:flex;margin-bottom:calc(var(--spacing-base)*3);padding:calc(var(--spacing-base)*2)}.o8E4Bv6U0d7USFxSjRCj{margin-right:calc(var(--spacing-base)*2);min-width:24px}.sT31awD6bHO8KJewvmaO{width:100%}.VVTRIG51r8ORUIBPs5gN{font-size:18px;font-weight:600;line-height:24px;margin-bottom:0}.AiaWRbRLFT9xvP9vn5jA{color:var(--jp-gray-80);font-size:14px;line-height:21px}.MP1wWkqvqfvAc7Izl7x4{align-self:center;margin-left:calc(var(--spacing-base)*2);margin-right:var(--spacing-base)}.i9X_KxEJiGpRT7q_RU6i{display:flex;justify-content:space-between}.WtVEv641JBaLl929sZq2{align-items:flex-start;background-color:#00000040;bottom:0;display:flex;justify-content:center;left:0;overflow-y:auto;padding-top:calc(var(--spacing-base)*12 + 2px);position:fixed;right:0;top:0;z-index:1000001}.G0aPt7WmA1rkUE0wcTno{background:var(--jp-white);border:1px solid var(--jp-gray);border-radius:calc(var(--jp-border-radius)*2);box-shadow:0 8px 20px #00000040;padding:calc(var(--spacing-base)*4);position:relative;width:616px}.VkrhWjfEIlIwYEumycbP{background:none;border:none;cursor:pointer;padding:0;position:absolute;right:calc(var(--spacing-base)*3);top:calc(var(--spacing-base)*3)}.yFzeV4cmWRbZKk5tIyEw{display:block}.lyrXe0pA852TUmyekDb5{display:flex}.KgEeDTKgTC5ZjzYlbTqN{color:var(--jp-black);font-size:var(--font-body);line-height:1.5;margin-right:calc(var(--spacing-base)*4);padding:var(--spacing-base) 0;text-decoration:none}.KgEeDTKgTC5ZjzYlbTqN:last-child{margin-right:0}.KgEeDTKgTC5ZjzYlbTqN:focus,.KgEeDTKgTC5ZjzYlbTqN:hover{border-bottom-color:var(--jp-green);box-shadow:none;color:var(--jp-green)}.Lv4WoNVkeJntqvUyG4dX{border-bottom:1px solid var(--jp-black)}.YXKeyNLeZvIdah_5_5GR{white-space:nowrap}.vvXnRXxrU1kP1KsdSr4J{margin-top:calc(var(--spacing-base)*3*-1)}.aDCTkUFaJEeZzYYE6qv5{background-color:var(--jp-green);border-radius:32px;color:var(--jp-white);font-size:12px;letter-spacing:-2%;line-height:1;margin-left:var(--spacing-base);padding:calc(var(--spacing-base)/2) var(--spacing-base);position:relative;top:-1px}.jp-dashboard-footer{align-items:center;color:var(--jp-black);display:flex;flex-wrap:wrap;font-size:var(--font-body-extra-small);line-height:1.333;max-width:1128px;width:100%}.jp-dashboard-footer a{text-decoration:none}.jp-dashboard-footer a:any-link,.jp-dashboard-footer a[role=button]{color:inherit}.jp-dashboard-footer a:hover{text-decoration:underline;text-decoration-thickness:1.5px}.jp-dashboard-footer a:focus{box-shadow:none;outline-width:0}.jp-dashboard-footer a:focus-visible{border-radius:2px;box-shadow:none;outline:1.5px solid currentColor;outline-offset:3px}.jp-dashboard-footer.is-sm>ul{gap:.125rem}.jp-dashboard-footer.is-md,.jp-dashboard-footer.is-sm>ul{align-items:flex-start;flex-direction:column}.jp-dashboard-footer>ul{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;list-style:none;margin:0;padding:0;width:100%}.jp-dashboard-footer>ul>li{margin-bottom:0}.jp-dashboard-footer>ul>li>a{align-items:center;display:flex;gap:.25rem;min-height:44px}.jp-dashboard-footer__accessible-external-link{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;overflow-wrap:normal;padding:0;position:absolute;width:1px}.jp-dashboard-footer__jp-item{font-weight:600;padding-inline-end:1rem}.jp-dashboard-footer.is-sm .jp-dashboard-footer__jp-item{padding-bottom:1rem}.jp-dashboard-footer.is-lg .jp-dashboard-footer__a8c-item{margin-inline-start:auto}.jp-dashboard-footer.is-sm .jp-dashboard-footer__a8c-item{padding-top:1rem}.jp-dashboard-footer__a8c-item>a,.jp-dashboard-footer__jp-item>a{text-decoration:none}@media(max-width:599px){.RuVLl3q4lxTQa3wbhBJB{grid-column-end:span 1}.f9LZTRG4MMK42rS89afW{grid-column-start:1}.bHe_zKxjjpUwHw_MdYE1{grid-column-end:2}.QZbNrOqE2aNSn50xVhpU{grid-column-end:span 2}.ev7W3z7zVYPeHAlYqZjf{grid-column-start:2}.NJWd1m_e7lOiPYru2ZMP{grid-column-end:3}.Xc6nt1Qc1DI0Z2A3gt1r{grid-column-end:span 3}.UIcN_GXiPRoIsin8Kohg{grid-column-start:3}.GRKCyqb5LufCSCgykKFc{grid-column-end:4}.i_qTq8gqhhC3vIUepVRB{grid-column-end:span 4}.G3qaZ3Jpbvam_1XvGxgc{grid-column-start:4}.VRCNYKZtO9zukEwmgP1y{grid-column-end:5}}@media(min-width:600px)and (max-width:959px){.tRm008K_WJL79WoNZTNL{grid-column-end:span 1}.l5T2P_bgKts4tdaRkS1d{grid-column-start:1}.zOCxfLZpF6BlgC7a_Yq1{grid-column-end:2}.F80DdgVn0m5OpvtSQWka{grid-column-end:span 2}.oI1c7JYfiJtMQHbhngtU{grid-column-start:2}.pMQtA_4jh1_1lVknqEP5{grid-column-end:3}.VenqMpdgyKQVUNNQcfqd{grid-column-end:span 3}.seNYL99uoczf9V4MxBxT{grid-column-start:3}.YKfF1HFhI9KygA5l3b2J{grid-column-end:4}.yAi0Cv1xDWkoqsaUhvhR{grid-column-end:span 4}.ubhnyZOnkgxNhh6XtVWv{grid-column-start:4}.RGOPGQbWMJ9Ei5oFxS7X{grid-column-end:5}.Sz1E2aWbX483ijdi6yge{grid-column-end:span 5}.tku6_bRYrX9tMbgYGmIl{grid-column-start:5}.b5JHttOhSEcI1WBlqAjk{grid-column-end:6}.FboSx5MoKTAWbxXyYlCw{grid-column-end:span 6}.Jhs8yEEmodG30edbJvag{grid-column-start:6}.IpzbbKVqEqPcfIGkXkwt{grid-column-end:7}.mhCPwfAZ4Kmm_empzJAq{grid-column-end:span 7}.x034ilrJF7rO9UJB2rI1{grid-column-start:7}.Wt8t2e16viRrOJ1lLA5v{grid-column-end:8}.S6pIrEy9AMLKx9bgh_Ae{grid-column-end:span 8}.kEfI4tGyuWfHTlRnvIab{grid-column-start:8}.PUzX4RRsKq1dnsz3gebS{grid-column-end:9}}@media(min-width:960px){.X_pdcLJikd8LS_YAdJlB{grid-column-end:span 1}.tl936d14Huby4khYp05X{grid-column-start:1}.hnge0LnR69d3NXEtEE1t{grid-column-end:2}.fj0NUMuyZQcPNgKcjp5Z{grid-column-end:span 2}.R2ncBX7a2NigdYCcV1OX{grid-column-start:2}.t8vMSDVYno9k9itRwnXb{grid-column-end:3}.wsDuEN2GqHx6qzo8dUdk{grid-column-end:span 3}.cIEVPUweWtLBy3xaXnMx{grid-column-start:3}.fajUWBwu1m2B479j3jmz{grid-column-end:4}.YR0c7fQTgMkDdWzwSyLp{grid-column-end:span 4}.xlwp8BmplxkKNMI7gamo{grid-column-start:4}._C4O1w9DUqx1m3gPf8aA{grid-column-end:5}.Z54F1hAErckAIrKlxnXW{grid-column-end:span 5}.ezSDWkRHmKSxDJXxuiOH{grid-column-start:5}.T0ChoeAjGJjkkNrYhD4g{grid-column-end:6}.qtMoMPF6yHvGJnWHSsde{grid-column-end:span 6}.gdoywN5VPiWERfIBqkph{grid-column-start:6}.wUev_VH5uf_pwFFlbnAU{grid-column-end:7}.egIPDFJsOpownTClq9XP{grid-column-end:span 7}.yGhp9yoAW7k0kQik9AB7{grid-column-start:7}.SJ43U9mR5wUg5V2qBeQA{grid-column-end:8}.cTuyHfMwSUJxN_HdIEgd{grid-column-end:span 8}.smCr8DaIagcumdvdldiK{grid-column-start:8}.T03NHzQJvzwL6wAfIiTL{grid-column-end:9}.pMvxM3RJGjqyNdf9qg1Y{grid-column-end:span 9}.iIVpNRwEnQ_JI5gpp9EN{grid-column-start:9}.ZbQ4u4vGSX5rJOje4uGL{grid-column-end:10}.gKb5wuIDAlKGbrjK2vxy{grid-column-end:span 10}.Z7pINdImE2WJiYnZBTqm{grid-column-start:10}.ZTxp6qpvwurMdOnLLSz1{grid-column-end:11}.NnQTlbfnxPDR6cQ7rygg{grid-column-end:span 11}.O137wZd6Yl0olSA9PsXR{grid-column-start:11}.zf2OJtQ2MPz6SDoh6CB0{grid-column-end:12}.U3H6UHW6HqRt9hdzVg3O{grid-column-end:span 12}.zynnNeS_ZBTxABcVpUQH{grid-column-start:12}.vI8tltFZtFUNAy9Iag9s{grid-column-end:13}}.SqdhUZkXCRuIpErj1B3z{--max-container-width:1128px;--vertical-gutter:24px;--horizontal-spacing:8px;column-gap:var(--vertical-gutter);display:grid;margin:0 auto;max-width:var(--max-container-width);width:100%}@media(max-width:599px){.SqdhUZkXCRuIpErj1B3z{grid-template-columns:repeat(4,minmax(0,1fr));padding:0 16px}}@media(min-width:600px)and (max-width:959px){.SqdhUZkXCRuIpErj1B3z{grid-template-columns:repeat(8,minmax(0,1fr));padding:0 18px}}@media(min-width:960px){.SqdhUZkXCRuIpErj1B3z{grid-template-columns:repeat(12,minmax(0,1fr));padding:0 24px}}.SqdhUZkXCRuIpErj1B3z.OZC_9a1LhpWF9dv15Gdh{max-width:none;padding:unset}.sexr0jUxC1jVixdKiDnC{margin-left:-20px}@media(max-width:782px){.sexr0jUxC1jVixdKiDnC{margin-left:-10px}}.sexr0jUxC1jVixdKiDnC.vKQ11sLeAM45M04P1ccj{background-color:var(--jp-white)}.sexr0jUxC1jVixdKiDnC .iWGAhN9gOB48g0jEO1OQ{align-items:center;display:flex;gap:8px}.sexr0jUxC1jVixdKiDnC .JOYmuxQjG4FArIIUxJfA{background:#d63638;color:#fff;cursor:pointer;font-size:9px;font-weight:700;letter-spacing:.2em;text-shadow:none;text-transform:uppercase}.rigH8UdiDrmmSLQMUurD{background-color:var(--jp-white);border:1px solid var(--jp-gray-10);border-radius:var(--jp-border-radius);color:var(--jp-black);display:block;font-size:var(--font-body);letter-spacing:-.02em;line-height:1.5;padding:var(--spacing-base) calc(var(--spacing-base)*1.5);transition:box-shadow .1s ease-out;width:100%}.rigH8UdiDrmmSLQMUurD::placeholder{color:var(--jp-gray-20)}.rigH8UdiDrmmSLQMUurD:focus{box-shadow:0 0 0 2px var(--jp-green-5)}.rigH8UdiDrmmSLQMUurD:focus,.rigH8UdiDrmmSLQMUurD:hover:not(:disabled){border:1px solid var(--jp-green)}.rigH8UdiDrmmSLQMUurD:disabled{background-color:var(--jp-gray-0);color:var(--jp-gray-30)}.V8FDM08CpcwQs4UwN2nI{color:var(--jp-black);display:block;font-size:var(--font-title-small);font-weight:600;margin-bottom:var(--spacing-base)}.WjKn66iJO4hAZYE6o9b3{font-weight:700}.IS5K46VvD7VX5YtlwbMI,.eDfoDi2nArFY_KiYIwKh{margin-bottom:calc(var(--spacing-base)*7);margin-top:calc(var(--spacing-base)*7)}.XKUO6pX9vFbOUplFfCW2{margin-top:calc(var(--spacing-base)*3)}.gridicon{fill:currentColor;display:inline-block}.gridicon.needs-offset g{transform:translate(1px,1px)}.gridicon.needs-offset-x g{transform:translate(1px)}.gridicon.needs-offset-y g{transform:translateY(1px)}:root{--font-title-large:36px;--font-title-small:24px;--font-body:16px;--font-label:12px;--jp-black:#000;--jp-black-80:#2c3338;--jp-white:#fff;--jp-white-off:#f9f9f6;--jp-gray:#dcdcde;--jp-gray-0:#f6f7f7;--jp-gray-5:#dcdcde;--jp-gray-10:#c3c4c7;--jp-gray-20:#a7aaad;--jp-gray-30:#8c8f94;--jp-gray-40:#787c82;--jp-gray-50:#646970;--jp-gray-60:#50575e;--jp-gray-70:#3c434a;--jp-gray-80:#2c3338;--jp-gray-90:#1d2327;--jp-gray-100:#101517;--jp-gray-off:#e2e2df;--jp-yellow-5:#f5e6b3;--jp-yellow-10:#f2cf75;--jp-yellow-40:#c08c00;--jp-orange-20:#faa754;--jp-blue-5:#ced9f2;--jp-red-0:#f7ebec;--jp-red-50:#d63638;--jp-red-60:#b32d2e;--jp-red-80:#8a2424;--jp-red:#d63639;--jp-pink:#c9356e;--jp-green-0:#f0f2eb;--jp-green-5:#d0e6b8;--jp-green-10:#9dd977;--jp-green-20:#64ca43;--jp-green-30:#2fb41f;--jp-green-40:#069e08;--jp-green-50:#008710;--jp-green-60:#007117;--jp-green-70:#005b18;--jp-green-80:#004515;--jp-green-90:#003010;--jp-green-100:#001c09;--jp-green:#069e08;--jp-green-primary:var(--jp-green-40);--jp-green-secondary:var(--jp-green-30);--jp-border-radius:4px;--jp-border-radius-rna:8px;--jp-menu-border-height:1px;--jp-underline-thickness:2px;--jp-modal-padding-large:32px;--jp-modal-padding:24px;--jp-modal-padding-small:16px;--jp-modal-radius:8px;--jp-button-padding:8px;--jp-button-radius:4px;--jp-gap:16px;--jp-highlight:#3858e9}:where(body){font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;margin:0;min-height:100%;padding:0}.jp-wrap{align-items:center;display:flex;flex-wrap:wrap;margin:0 auto;max-width:1128px}.jp-row{display:grid;grid-gap:24px;grid-template-columns:repeat(4,1fr);margin:0 16px;width:100%}@media(min-width:600px){.jp-row{grid-template-columns:repeat(8,1fr);margin:0 18px}}@media(min-width:960px){.jp-row{grid-template-columns:repeat(12,1fr);margin:0 24px;max-width:1128px}}.sm-col-span-1{grid-column-end:span 1}.sm-col-span-2{grid-column-end:span 2}.sm-col-span-3{grid-column-end:span 3}.sm-col-span-4{grid-column-end:span 4}@media(min-width:600px){.md-col-span-1{grid-column-end:span 1}.md-col-span-2{grid-column-end:span 2}.md-col-span-3{grid-column-end:span 3}.md-col-span-4{grid-column-end:span 4}.md-col-span-5{grid-column-end:span 5}.md-col-span-6{grid-column-end:span 6}.md-col-span-7{grid-column-end:span 7}.md-col-span-8{grid-column-end:span 8}}@media(min-width:960px){.lg-col-span-1{grid-column-end:span 1}.lg-col-span-2{grid-column-end:span 2}.lg-col-span-3{grid-column-end:span 3}.lg-col-span-4{grid-column-end:span 4}.lg-col-span-5{grid-column-end:span 5}.lg-col-span-6{grid-column-end:span 6}.lg-col-span-7{grid-column-end:span 7}.lg-col-span-8{grid-column-end:span 8}.lg-col-span-9{grid-column-end:span 9}.lg-col-span-10{grid-column-end:span 10}.lg-col-span-11{grid-column-end:span 11}.lg-col-span-12{grid-column-end:span 12}}@media(max-width:960px){.md-col-span-0{display:none}}@media(max-width:600px){.sm-col-span-0{display:none}}.jp-cut{border:2px solid var(--jp-green-primary);border-radius:var(--jp-border-radius);margin:32px 0;padding:16px 64px 16px 24px;position:relative;text-decoration:none}.jp-cut,.jp-cut span{display:block}.jp-cut span:last-of-type{font-weight:600}.jp-cut:focus span:last-of-type,.jp-cut:hover span:last-of-type{text-decoration:underline;text-decoration-thickness:var(--jp-underline-thickness)}.jp-cut:focus:after,.jp-cut:hover:after{transform:translateY(-50%) translateX(8px)}.jp-cut:after{color:var(--jp-green-primary);content:"→";font-size:24px;font-weight:600;position:absolute;right:24px;top:50%;transform:translateY(-50%);transition:transform .15s ease-out}.components-popover:not(.is-without-arrow):before{border-color:var(--jp-gray)}.icon-tooltip-helper .components-popover:not([data-y-axis=middle])[data-x-axis=left] .components-popover__content{margin-right:-62px}.icon-tooltip-helper .components-popover:not([data-y-axis=middle])[data-x-axis=right] .components-popover__content{margin-left:-62px}.icon-tooltip-helper .components-popover[data-y-axis=bottom] .components-popover__content{top:2px!important}.icon-tooltip-helper .components-popover:not(.is-without-arrow)[data-y-axis=bottom]:before{top:-6px!important}.icon-tooltip-helper .components-popover:not(.is-without-arrow)[data-y-axis=bottom]:after{top:-4px!important}.icon-tooltip-helper .components-popover[data-y-axis=top] .components-popover__content{bottom:10px!important}.icon-tooltip-helper .components-popover:not(.is-without-arrow)[data-y-axis=top]:before{bottom:3px}.icon-tooltip-helper .components-popover:not(.is-without-arrow)[data-y-axis=top]:after{bottom:4px}.icon-tooltip-helper.is-wide .components-popover__content{width:440px}.icon-tooltip-wrapper{color:var(--jp-black);display:inline-block;position:relative}.icon-tooltip-wrapper .components-button.is-link:focus:not(:disabled){box-shadow:none}.icon-tooltip-helper{height:18px;left:-53px;pointer-events:none;position:absolute;top:0;width:124px}.icon-tooltip-container{pointer-events:all}.icon-tooltip-container .components-popover__content{border:1px solid var(--jp-gray);border-radius:4px;margin:0 10px;max-width:90vw;outline:none;padding:24px;white-space:normal;width:304px}.icon-tooltip-title{font-size:16px;font-weight:600;line-height:19px}.icon-tooltip-title:not(:last-child){margin-bottom:8px}.icon-tooltip-content{font-size:14px;font-weight:400;line-height:24px}.icon-tooltip-content ul{list-style-type:disc;margin:0 0 0 1rem}.icon-tooltip-content ul li:last-child{margin-bottom:0}.msOlyh2T7D6uhbM6AROg{align-items:center;background:none;border:2px solid var(--jp-green-40);border-radius:var(--jp-border-radius);color:var(--jp-gray-80);display:flex;gap:calc(var(--spacing-base)*3);justify-content:space-between;padding:calc(var(--spacing-base)*2) calc(var(--spacing-base)*3);position:relative;text-align:left;width:100%}.msOlyh2T7D6uhbM6AROg a,.msOlyh2T7D6uhbM6AROg button{all:unset;color:var(--jp-gray-80);cursor:pointer}.msOlyh2T7D6uhbM6AROg a:after,.msOlyh2T7D6uhbM6AROg button:after{content:"";height:100%;left:0;position:absolute;top:0;width:100%}.msOlyh2T7D6uhbM6AROg:focus-within{border-color:var(--jp-black)}.msOlyh2T7D6uhbM6AROg:focus-within .cPN7USVqSBpxUswfDtUZ,.msOlyh2T7D6uhbM6AROg:hover .cPN7USVqSBpxUswfDtUZ{transform:translateX(calc(var(--spacing-base)*2))}.msOlyh2T7D6uhbM6AROg:focus-within .EmnJAyEzzn1QpA8HtypY,.msOlyh2T7D6uhbM6AROg:hover .EmnJAyEzzn1QpA8HtypY{text-decoration:underline;text-decoration-thickness:2px}.EmnJAyEzzn1QpA8HtypY,.msOlyh2T7D6uhbM6AROg .EmnJAyEzzn1QpA8HtypY{font-weight:700}.cPN7USVqSBpxUswfDtUZ{fill:var(--jp-green-40);pointer-events:none;transition:transform .1s ease-out}.vV7YZikAz0oHYsuvtxMq{display:inline;margin:0 0 0 calc(var(--spacing-base)/3);vertical-align:middle}.vV7YZikAz0oHYsuvtxMq svg{position:relative;z-index:10}.T1YaMupeZmBIpXZHY9EZ{display:inline}.pVJWvyeviifcrLbZZxCj{align-items:flex-start}.pVJWvyeviifcrLbZZxCj,.segmN0DtUjey3r5zVPON{display:flex;flex-direction:column;justify-content:center}.segmN0DtUjey3r5zVPON{align-items:flex-end}.lolS8hq75wfk687xQjbY{margin-bottom:calc(var(--spacing-base)/2*-1);margin-left:var(--spacing-base)}.HC8zzYgv0GvkecCkpyld{width:fit-content}.XJqRbP_azFalXqUoYPtl{margin-top:calc(var(--spacing-base)*3 + 1px)}.vMa4i_Dza2t5Zi_Bw9Nf{background:var(--jp-white-off);padding-top:1px}.cuoSlhSNrqf1dozY22Xb{fill:#000}.JLquNpQVlysAamuh5lJO,.lAIiifeLMmZAPlQ9n9ZR{fill:var(--jp-green-primary)}.cbOwD8Y4tFjwimmtchQI{fill:#757575}.cbOwD8Y4tFjwimmtchQI.aLWBKY0yRghEk7tNCgK3{fill:var(--color-bluesky)}.cbOwD8Y4tFjwimmtchQI.aHOlEBGD5EA8NKRw3xTw{fill:var(--color-facebook)}.cbOwD8Y4tFjwimmtchQI.aHOlEBGD5EA8NKRw3xTw.social-logo{border-radius:50%}.cbOwD8Y4tFjwimmtchQI.af4Y_zItXvLAOEoSDPSv{fill:var(--color-twitter)}.cbOwD8Y4tFjwimmtchQI.f68aqF3XSD1OBvXR1get{fill:var(--color-linkedin)}.cbOwD8Y4tFjwimmtchQI.xFI0dt3UiXRlRQdqPWkx{fill:var(--color-tumblr)}.cbOwD8Y4tFjwimmtchQI.q7JEoyymveP6kF747M43{fill:var(--color-gplus)}.cbOwD8Y4tFjwimmtchQI.DKOBOTVmTLbh26gUH_73{fill:var(--color-mastodon)}.cbOwD8Y4tFjwimmtchQI.n5XodNsuMfMAAvqHFmbw{fill:var(--color-nextdoor)}.cbOwD8Y4tFjwimmtchQI.n5XodNsuMfMAAvqHFmbw.social-logo{border-radius:50%}.cbOwD8Y4tFjwimmtchQI.cL3m0xBYTYhIKI7lCqDB{fill:var(--color-instagram)}.cbOwD8Y4tFjwimmtchQI.fftumuc_lJ6v0tq4UMVR{fill:var(--color-whatsapp)}.cbOwD8Y4tFjwimmtchQI.inzgC27qxdt7hSdhTWRI{fill:var(--color-threads)}.cbOwD8Y4tFjwimmtchQI.inzgC27qxdt7hSdhTWRI.social-logo{border-radius:40%}.L1LjeCYPldBcTLILS13l{max-width:calc(744px + var(--spacing-base)*6);width:100%}.JWWznnb8sAKHIOhE59_z{display:flex}.JWWznnb8sAKHIOhE59_z:not(:first-child){margin-top:calc(var(--spacing-base)*7)}.kV5wl2UResIqqBdSTuQr{margin-right:calc(var(--spacing-base)*2);padding-top:calc(var(--spacing-base)/2)}@media(min-width:600px){.kV5wl2UResIqqBdSTuQr{margin-right:calc(var(--spacing-base)*5)}}.oePuSIKcH_JzEhDJcHh8{width:100%}.mxYw7vghJF8H8C0FjvPz{align-items:center;display:flex}.lyiOCAyjT_eQyDg8Ier_ .oePuSIKcH_JzEhDJcHh8{opacity:.5}.IclfL4iNXTZfBAbHZdog>:last-child{margin-top:calc(var(--spacing-base)*2)}@media(min-width:600px){.IclfL4iNXTZfBAbHZdog{display:flex;justify-content:space-between}}.bOadM4auwszaOl0el95T{display:flex;flex-wrap:wrap;margin-top:calc(var(--spacing-base)*2)}.G7vkgqk8AEd6pRbNUyE4{color:var(--jp-green-50);margin-right:calc(var(--spacing-base)/2)}.qnlbRElIsj4nB45F5s3a{color:var(--jp-gray-50)}.TvvdPGzRa_ubn3BnQOnQ{color:var(--jp-red-50)}.yAFMUkq1ot9DZF05RUwG{margin-top:calc(var(--spacing-base)*3)}@media(min-width:600px){.yAFMUkq1ot9DZF05RUwG{padding-left:calc(var(--spacing-base)*11)}}.qoajQ2Ew8eYJgdbssSg9{margin-top:calc(var(--spacing-base)*3)}.EbfrbByI7NQ2_MD_gDXp{align-items:center;border:1px solid var(--jp-gray-30);border-radius:4px;color:var(--jp-gray-30);display:flex;font-size:12px;height:21px;margin-bottom:calc(var(--spacing-base)*2);margin-left:var(--spacing-base);padding:calc(var(--spacing-base)/2)}.hCwaBLH_6dELyWWwB8S1{padding:calc(var(--spacing-base)*3);width:304px}.V3U9oKSdRmKjOQ523C86{display:flex;justify-content:space-between}.OSrT4pA4vIGzg9EE6rcv{margin:calc(var(--spacing-base)*-1) calc(var(--spacing-base)*-3)}.OSrT4pA4vIGzg9EE6rcv:focus,.OSrT4pA4vIGzg9EE6rcv:focus:not(:disabled){box-shadow:none}.rbL50q3wwzE6X7VBHcmW{display:flex;justify-content:flex-end}.g593fzjQCE_4rNiiwLdg{line-height:1;margin-bottom:calc(var(--spacing-base)*1.5)}.CIp_BwDbLdjYPSVrreqg{align-items:flex-start;justify-content:space-between}.CIp_BwDbLdjYPSVrreqg,.m2epTt5F7wBQNcMdguwQ{display:flex;margin-top:calc(var(--spacing-base)*2)}.m2epTt5F7wBQNcMdguwQ{justify-content:right}.HrEvG7sxsWbTLD0sk477{border-bottom:2px solid var(--jp-gray-5);margin-top:calc(var(--spacing-base)*7)}.WIttYmnC0O4JKFyPgkTW{padding:calc(var(--spacing-base)*2);width:250px}.p1_cy4ERoY1_uwtgq3Tn{align-items:center;display:flex}.ehnXRuGNl9ZnPh6c1Pa3{display:flex;flex-wrap:wrap;margin-left:auto}.ehnXRuGNl9ZnPh6c1Pa3>:first-child{margin-right:calc(var(--spacing-base)*3)}.ehnXRuGNl9ZnPh6c1Pa3 .q8mOIlVn7qA44s7ysC5Z{opacity:.5}.IxCDeZ2a0wRu3AQbqGuG{align-items:center;display:flex;justify-content:space-between;margin-bottom:calc(var(--spacing-base)*3);width:100%}.YIQOtwFZuyfirlpFfjDb{white-space:nowrap}@media(max-width:1115px){.ehnXRuGNl9ZnPh6c1Pa3{margin-top:calc(var(--spacing-base)*3)}}@media(max-width:599px){.ehnXRuGNl9ZnPh6c1Pa3{margin-top:calc(var(--spacing-base)*3)}.ehnXRuGNl9ZnPh6c1Pa3>:first-child{margin-bottom:var(--spacing-base);margin-right:0}.IxCDeZ2a0wRu3AQbqGuG{margin-bottom:0}}.x8nPhsBEpxvgCxHNbCXo{display:flex}.x8nPhsBEpxvgCxHNbCXo .b_pwVVOoMN73AXhJNbgr{margin-right:var(--spacing-base);margin-top:calc(var(--spacing-base)/2)}.MWO4b3hqGdH8p1Vt9zmQ{margin-left:calc(var(--spacing-base)/2);max-height:20px}.DuflEZ86axRQGuMhmH3n{color:var(--jp-gray-20)}.ywr2PcNYcX5_sEzdvHAS{color:var(--jp-gray-70);font-weight:400;line-height:24px}.e_wseeb7HqoyLjv9N_ww{background-color:var(--jp-white-off)}.mzfjOg8s_uehdCmNjX0P,.nxtQ3M8WCX69d_NjShwZ{align-items:flex-start;display:flex;flex-direction:column;gap:calc(var(--spacing-base)*2)}.mzfjOg8s_uehdCmNjX0P .components-toggle-control__label,.nxtQ3M8WCX69d_NjShwZ .components-toggle-control__label{font-size:var(--font-body);font-weight:500}.mzfjOg8s_uehdCmNjX0P .components-base-control__help,.nxtQ3M8WCX69d_NjShwZ .components-base-control__help{color:inherit}.VfIXL69k_I0zUU0s7LqM{background-color:var(--jp-white);border-radius:calc(var(--jp-border-radius)*2);box-shadow:0 4px 40px #00000014;display:flex}.VfIXL69k_I0zUU0s7LqM.SvvAonSzsVSo_5Hu6Goz{align-items:center;padding:calc(var(--spacing-base)*2);width:358px}.VfIXL69k_I0zUU0s7LqM.SvvAonSzsVSo_5Hu6Goz .dwXtyo4qYbpJ2b3rZL1N{align-items:center;display:flex;overflow:hidden;width:100%}.VfIXL69k_I0zUU0s7LqM.SvvAonSzsVSo_5Hu6Goz .WxFqmtANZGuBRdR2NewQ{flex-grow:1;margin:0 calc(var(--spacing-base)*2)}.VfIXL69k_I0zUU0s7LqM.ee2TJQm2FgpSRwchomAH{--square-stat-vertical-spacing:calc(var( --spacing-base )*2);--square-stat-horizontal-spacing:calc(var( --spacing-base )*3);flex-direction:column;height:168px;justify-content:space-between;padding:var(--square-stat-vertical-spacing) var(--square-stat-horizontal-spacing);width:168px}.VfIXL69k_I0zUU0s7LqM.ee2TJQm2FgpSRwchomAH .WxFqmtANZGuBRdR2NewQ{margin-bottom:calc(var(--spacing-base)/2)}.VfIXL69k_I0zUU0s7LqM .mgcKzhKqFk7UOZ156QPT{overflow:hidden;text-overflow:ellipsis}.VfIXL69k_I0zUU0s7LqM .h_uY7ygjuMtuY4ZWJz1R{color:var(--jp-green-40);display:flex;fill:var(--jp-green-40)}.bZ4b33s2MdcOjaDKBbeV{--spacing-base:8px;--wp-admin-border-width-focus:1.5px;align-items:center;display:flex;white-space:nowrap}.UzkzDaqt2mXprJh2OXRz{background-color:var(--jp-gray-50);border-radius:50%;flex-shrink:0;height:.666em;width:.666em}.QuS0vdcr87FsiBvSSrvA{font-weight:600;line-height:1.666;margin-left:calc(var(--spacing-base)/2)}.bZ4b33s2MdcOjaDKBbeV.bGx0wbQAwuY7k8P3PHVQ a,.bZ4b33s2MdcOjaDKBbeV.bGx0wbQAwuY7k8P3PHVQ span{color:var(--jp-green-50)}.bZ4b33s2MdcOjaDKBbeV.bGx0wbQAwuY7k8P3PHVQ .UzkzDaqt2mXprJh2OXRz{background-color:var(--jp-green-50)}.bZ4b33s2MdcOjaDKBbeV.wR8Cz8uHgObTQavolv5y a,.bZ4b33s2MdcOjaDKBbeV.wR8Cz8uHgObTQavolv5y span{color:var(--jp-gray-50)}.bZ4b33s2MdcOjaDKBbeV.wR8Cz8uHgObTQavolv5y .UzkzDaqt2mXprJh2OXRz{background-color:var(--jp-gray-50)}.bZ4b33s2MdcOjaDKBbeV.IzbBYGwBKhSYFUQlIMww a,.bZ4b33s2MdcOjaDKBbeV.IzbBYGwBKhSYFUQlIMww span{color:var(--jp-red-50)}.bZ4b33s2MdcOjaDKBbeV.IzbBYGwBKhSYFUQlIMww .UzkzDaqt2mXprJh2OXRz{background-color:var(--jp-red-50)}.bZ4b33s2MdcOjaDKBbeV.Kdvp_HJf89IBrZuCaLm8 a,.bZ4b33s2MdcOjaDKBbeV.Kdvp_HJf89IBrZuCaLm8 span{color:var(--jp-yellow-30)}.bZ4b33s2MdcOjaDKBbeV.Kdvp_HJf89IBrZuCaLm8 .UzkzDaqt2mXprJh2OXRz{background-color:var(--jp-yellow-30)}.bZ4b33s2MdcOjaDKBbeV.hVf5vsbBWm8OFye7cy7a a,.bZ4b33s2MdcOjaDKBbeV.hVf5vsbBWm8OFye7cy7a span{color:var(--jp-blue-40)}.bZ4b33s2MdcOjaDKBbeV.hVf5vsbBWm8OFye7cy7a .UzkzDaqt2mXprJh2OXRz{background-color:var(--jp-blue-40)}.gecp_0Z0owRZtj8JAYir{--base-width:8px;--track-width:calc(var(--base-width)*6)}.gecp_0Z0owRZtj8JAYir.qgKXEdMmHsIK84VDnLO2{--base-width:6px}.gecp_0Z0owRZtj8JAYir.Vy6dbB4PsGKm8BDqzJ9J .components-toggle-control__label{display:none}.gecp_0Z0owRZtj8JAYir .components-form-toggle{--wp-admin-theme-color:var( --jp-green-40 );height:calc(var(--base-width)*3)}.gecp_0Z0owRZtj8JAYir .components-form-toggle__input:focus+.components-form-toggle__track{box-shadow:0 0 0 2px var(--jp-white),0 0 0 4px var(--jp-green-50)}.gecp_0Z0owRZtj8JAYir .components-form-toggle .components-form-toggle__track{border-radius:12px;border-width:2px;height:calc(var(--base-width)*3);width:var(--track-width)}.gecp_0Z0owRZtj8JAYir .components-form-toggle .components-form-toggle__thumb{height:calc(var(--base-width)*2);left:calc(var(--base-width)/2);top:calc(var(--base-width)/2);width:calc(var(--base-width)*2)}.gecp_0Z0owRZtj8JAYir .components-form-toggle.is-checked .components-form-toggle__thumb{transform:translateX(calc(var(--base-width)*3))}.gecp_0Z0owRZtj8JAYir .components-toggle-control__help{margin-inline-start:calc(var(--track-width) + var(--spacing-base))}.gecp_0Z0owRZtj8JAYir.ykWv7fKpkVW_vpAoddu4 .components-form-toggle{opacity:.6}.VHYulMcpzbr10HWR0iSE{align-items:flex-start;border:1px solid var(--jp-black);border-color:var(--jp-gray-5);border-left-width:6px;border-radius:4px;display:flex;font-size:var(--font-body);padding:24px 31px 27px 18px}.FGpSkMCiIHQjszcV0dbn{height:calc(var(--spacing-base)*3);margin-right:20px;width:calc(var(--spacing-base)*3)}.KoWZcCwhW13xvkEb0QON{background-color:#0000;border:none;cursor:pointer;outline:none;padding:0}.KoWZcCwhW13xvkEb0QON svg{display:block}@media screen and (max-width:600px){.VHYulMcpzbr10HWR0iSE{box-shadow:0 4px 8px #00000008,0 1px 2px #0000000f;padding-top:68px;position:relative}.FGpSkMCiIHQjszcV0dbn{left:24px;position:absolute;top:24px}.KoWZcCwhW13xvkEb0QON{position:absolute;right:24px;top:24px}}.smrfczkC53EaFM8OJUXs{flex-grow:1}.IKYRWoPwt9xOVEx1wzNS{font-weight:600;margin-bottom:8px}.qM0qY6mPYp1MPN54A3Kg{align-items:center;display:flex;flex-wrap:wrap;margin-top:20px;row-gap:20px}@media screen and (max-width:600px){.qM0qY6mPYp1MPN54A3Kg{justify-content:center}}.qM0qY6mPYp1MPN54A3Kg a,.qM0qY6mPYp1MPN54A3Kg a:active,.qM0qY6mPYp1MPN54A3Kg a:focus,.qM0qY6mPYp1MPN54A3Kg a:hover{color:var(--jp-black)}.qM0qY6mPYp1MPN54A3Kg>*{margin-right:24px}.A5YkDkkXuiYgavrY6Nux{border-left-color:var(--jp-red)}.A5YkDkkXuiYgavrY6Nux .y_IPyP1wIAOhyNaqvXJq{fill:var(--jp-red)}.cT5rwuPMZzWvi5o6shMl{border-left-color:var(--jp-yellow-20)}.cT5rwuPMZzWvi5o6shMl .y_IPyP1wIAOhyNaqvXJq{fill:var(--jp-yellow-20)}.yo0O3uvNomPsYUXFCpAS{border-left-color:var(--black)}.yo0O3uvNomPsYUXFCpAS .y_IPyP1wIAOhyNaqvXJq{fill:var(--black)}.oZdDFf1jBLkzn5ICCC6x{border-left-color:var(--jp-green)}.oZdDFf1jBLkzn5ICCC6x .y_IPyP1wIAOhyNaqvXJq{fill:var(--jp-green)}._fUXxnSp5pagKBp9gSN7 *{box-sizing:border-box}.GqFcAwJvIrg1v7f6QUfw{display:flex;flex-direction:column;min-height:230px;padding:calc(var(--spacing-base)*3);width:304px}.GqFcAwJvIrg1v7f6QUfw .OENx8kmm62tkWGukzP2S{display:flex;justify-content:space-between;margin-bottom:calc(var(--spacing-base)*2)}.GqFcAwJvIrg1v7f6QUfw .OENx8kmm62tkWGukzP2S .KnqJLKwSceJTwFJrPGHq{max-width:226px}.GqFcAwJvIrg1v7f6QUfw .OENx8kmm62tkWGukzP2S .PJU0_yA9jNf7ao0jhHut{background-color:var(--jp-white);color:var(--jp-gray-90);flex-shrink:0;height:calc(var(--spacing-base)*3);min-width:unset;width:calc(var(--spacing-base)*3)}.GqFcAwJvIrg1v7f6QUfw .OENx8kmm62tkWGukzP2S .PJU0_yA9jNf7ao0jhHut:hover:not(:focus){box-shadow:none}.GqFcAwJvIrg1v7f6QUfw .rrORM3zqHfGvqiPduEXY{align-items:flex-end;display:flex;flex-grow:1;height:calc(var(--spacing-base)*6);justify-content:flex-end;margin-top:calc(var(--spacing-base)*2)}.GqFcAwJvIrg1v7f6QUfw .rrORM3zqHfGvqiPduEXY .Q7fUcDUGhteXEr18rZPC{color:var(--jp-gray-60);flex-grow:1;margin-bottom:var(--spacing-base)}.GqFcAwJvIrg1v7f6QUfw .rrORM3zqHfGvqiPduEXY .S5LAeskUiEQ0JlPhr0Ze{flex-shrink:0}.OtDl6kocO_m2s9sRHaqX{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;max-height:600px;width:100%}.BjwJh1S1YVPI7AjmTx6a+.BjwJh1S1YVPI7AjmTx6a{margin-top:calc(var(--spacing-base)*5)}.YWfK8VTp2wnByBauYPKg{background-color:var(--jp-gray-0);overflow-x:scroll;padding:calc(var(--spacing-base)*3)}.pkw2LnOTd8VvQ3oT8sXQ{justify-content:flex-end;margin-top:calc(var(--spacing-base)*3);padding-top:calc(var(--spacing-base)*3)}.ap6lG79CncSqdigJS_WA{margin-top:calc(var(--spacing-base)*4)}.uym7dGHhp6ifjF57yOAO{align-items:flex-end;display:flex;margin-bottom:calc(var(--spacing-base)*2.25)}.e_2eFTR8RyHwmfeqJL4F{flex:1;margin-bottom:0}.IKQVU01PrDMMV5UFLOKv{display:flex;gap:calc(var(--spacing-base)*2)}.pkw2LnOTd8VvQ3oT8sXQ{border-top:1px solid var(--jp-gray);display:flex;justify-content:right;padding-top:calc(var(--spacing-base)*4);width:100%}.pkw2LnOTd8VvQ3oT8sXQ>:last-child{margin-left:calc(var(--spacing-base)*2)}.qazuloIt0teplSEwxRN0{background-color:#fff;border:1px solid var(--jp-gray);border-bottom:none;color:var(--jp-gray-50);display:grid;grid-template-columns:repeat(9,1fr);padding:calc(var(--spacing-base)*2) calc(var(--spacing-base)*3);width:100%}.qazuloIt0teplSEwxRN0>span:first-child{grid-column:1/7}.qazuloIt0teplSEwxRN0>span:not(:first-child){text-align:center}.iJ_biSBRDribuNKX0Zuw{margin:calc(var(--spacing-base)*4) calc(var(--spacing-base)*8);text-align:center}@media(max-width:599px){.uym7dGHhp6ifjF57yOAO{margin-bottom:calc(var(--spacing-base)*3)}.e_2eFTR8RyHwmfeqJL4F{display:none}.pkw2LnOTd8VvQ3oT8sXQ{justify-content:center}.pkw2LnOTd8VvQ3oT8sXQ>*{width:50%}}.v640YfEL85A9rCvyHSzW{align-items:center;display:flex;gap:4px;justify-content:center;margin-bottom:calc(var(--spacing-base)*2);margin-top:calc(var(--spacing-base)*4)}.v640YfEL85A9rCvyHSzW button{font-size:var(--font-body);height:auto;line-height:32px;min-width:32px;padding:0 var(--spacing-base);width:auto}.v640YfEL85A9rCvyHSzW button.gfxpe4zp6ShFsIsce8Ii,.v640YfEL85A9rCvyHSzW button.gfxpe4zp6ShFsIsce8Ii:hover:not(:disabled){background:none;color:var(--jp-black)}.x8UuVEhWucPfdq0hEJg6{border:1px solid var(--jp-gray);border-radius:var(--jp-border-radius)}.x8UuVEhWucPfdq0hEJg6>:not(:last-child){border-bottom:1px solid var(--jp-gray)}.eb6Ovfvm1yONz4mdOwbH{background-color:var(--jp-white)}.jF9LXpXR3TxZVDw7TVXT{align-items:center;background:none;border:none;box-sizing:border-box;cursor:pointer;display:grid;grid-template-columns:repeat(9,1fr);margin:0;outline-color:var(--jp-black);padding:calc(var(--spacing-base)*2) calc(var(--spacing-base)*3);text-align:start;width:100%}.jF9LXpXR3TxZVDw7TVXT>:first-of-type{grid-column:1/8}.jF9LXpXR3TxZVDw7TVXT>:last-of-type{grid-column:9}.jF9LXpXR3TxZVDw7TVXT:hover{background:var(--jp-gray-0)}.lNQgAfpwdAUSOLZd8dlD{align-items:center;display:flex;font-size:var(--font-body-small);font-weight:400}.WRQwDYPdffWznX158azR{margin-right:var(--spacing-base)}.dJx9pvlYjDnKn11n5wo8{font-weight:600;margin-bottom:var(--spacing-base);margin-left:calc(var(--spacing-base)*4)}.EKcbLuSblRc7UpzgsFXw{align-items:center}.ILMBWlMLcXc0n97IisrG{overflow:hidden;transform-origin:top center}.T8XIzCNJBQy1UETN5gjU{max-height:0;padding:0;transform:scaleY(0);transition:all .1s}.kWoHGiaZSbq9XJVyUOMC{max-height:1000px;padding:calc(var(--spacing-base)*4) calc(var(--spacing-base)*7);transform:scaleY(1);transition:max-height .3s,transform .2s}.HQgjxePFDRJHamBAGcVU{background-color:var(--jp-white);border-radius:var(--jp-border-radius);box-shadow:0 0 40px #00000014;margin:0}.KtdsNIMumOoHNWMLmuAJ{align-items:center;display:flex;justify-content:space-between;margin:0;padding:calc(var(--spacing-base)*2);text-align:left}.KtdsNIMumOoHNWMLmuAJ.ewyV4ZGn34WDNXmK3ej2{cursor:pointer;outline-color:var(--jp-black)}.KtdsNIMumOoHNWMLmuAJ.ewyV4ZGn34WDNXmK3ej2:focus:not(.owofT85W_XvVdb5vr1GN),.KtdsNIMumOoHNWMLmuAJ.ewyV4ZGn34WDNXmK3ej2:hover:not(.owofT85W_XvVdb5vr1GN){background-color:var(--jp-gray-0)}.KtdsNIMumOoHNWMLmuAJ.owofT85W_XvVdb5vr1GN{background-color:var(--jp-black)}.KtdsNIMumOoHNWMLmuAJ.owofT85W_XvVdb5vr1GN .NESnw2xCLrBpP6WlYZL4{color:var(--jp-white)}.KtdsNIMumOoHNWMLmuAJ.owofT85W_XvVdb5vr1GN .aohnd_y_1lrMuww8NH63{fill:var(--jp-white)}.KtdsNIMumOoHNWMLmuAJ.owofT85W_XvVdb5vr1GN .Rnas_2_2_eLZSYfZ347E{background-color:var(--jp-red);border:1px solid var(--jp-red);color:var(--jp-white)}.NESnw2xCLrBpP6WlYZL4{align-items:center;display:flex;overflow-x:hidden;padding-right:var(--spacing-base)}.m4_14yNRByDyO9yf9pGg{display:block;overflow-x:hidden;text-overflow:ellipsis}.aohnd_y_1lrMuww8NH63{margin-right:calc(var(--spacing-base)*2)}.Rnas_2_2_eLZSYfZ347E{align-items:center;border:1px solid var(--jp-red-60);border-radius:50%;box-sizing:border-box;color:var(--jp-red-60);display:flex;justify-content:center;min-width:30px;padding:calc(var(--spacing-base)/2) var(--spacing-base)}.X8NRHUTBa_4wDvoHN9TT{fill:var(--jp-green-50)}.CsuOteurQlJm4IjXqyZ0{fill:var(--jp-gray-20)}.fvbewglUxEvV1o04yzzp{--icon-size:28px;--item-spacing:calc(var( --spacing-base )*2);--left-spacing:calc(var( --icon-size ) + var( --item-spacing ));list-style:none}.DINy59MKjwiQanaoDTiV{padding:calc(var(--spacing-base)*2)}.XoacHJljw8zRW_fkBSyg{padding:0}.mXM4WZRePVTa07dhQ6MD{margin-left:var(--left-spacing)}.sI3V8khLdCqxkhJQ_XnI{display:flex;justify-content:flex-start;padding:calc(var(--spacing-base)*2)}.hgdxMuIvZwTZ0sfXaols{padding:calc(var(--spacing-base)*2);width:250px}.UErHS2HAh1gszGfYuVIf{align-items:center;background-color:var(--jp-white);border:1px solid var(--jp-gray-10);border-radius:var(--jp-border-radius);display:flex;justify-content:space-between;padding:calc(var(--spacing-base)*2);width:100%}.lEhH1hvCcxLVFMHI8Gwv{display:flex;justify-content:flex-start}.c57Vj4QhAHwcK_HZMxtN{margin-right:var(--spacing-base)}.sfXsfklfkeSRtE9ivQwF{border:1px solid var(--jp-gray);border-radius:var(--jp-border-radius);display:inline-block;width:100%}.sfXsfklfkeSRtE9ivQwF>:not(:last-child){border-bottom:1px solid var(--jp-gray)}.ozRrKPlj1QFGUyd3oVke{background-color:var(--jp-white)}.PyvnSHQuuUkZvVsArigy{align-items:center;background:none;border:none;box-sizing:border-box;cursor:pointer;display:grid;grid-template-columns:repeat(9,1fr);margin:0;outline-color:var(--jp-black);padding:calc(var(--spacing-base)*2) calc(var(--spacing-base)*3);text-align:start;width:100%}.PyvnSHQuuUkZvVsArigy>:first-of-type{grid-column:1/7}.PyvnSHQuuUkZvVsArigy>:last-of-type{grid-column:9}.PyvnSHQuuUkZvVsArigy>:not(:first-child){margin:auto}.PyvnSHQuuUkZvVsArigy:hover{background:var(--jp-gray-0)}.u9Xod5s8bCRNj9MR1Drl{align-items:center;display:flex;font-size:var(--font-body-small);font-weight:400}.IbeyulkpO9kjYJ4OkYUD{margin-right:var(--spacing-base)}.KiCgmjHm2f0JDU3cMsgf{font-weight:600}.KiCgmjHm2f0JDU3cMsgf,.kh5zuLR1zNf7KCsxhAZ5{margin-bottom:var(--spacing-base);margin-left:calc(var(--spacing-base)*4)}.kh5zuLR1zNf7KCsxhAZ5{font-size:var(--font-body-small);font-weight:400}.z1z63g62c73XbcPk9DWc{background-color:var(--jp-gray-50);display:inline-block;height:4px;margin:2px 12px;width:4px}.kJ8t3FAtd5VAYjk31SfA{align-items:center}.JP0IJZcYRohfgntEozjm{overflow:hidden;transform-origin:top center}.y7c6zi2wjEnbW3F29fmP{max-height:0;padding:0;transform:scaleY(0);transition:all .1s}.wQWiN_J0SqgduvadyGnm{max-height:1000px;padding:calc(var(--spacing-base)*4) calc(var(--spacing-base)*7);transform:scaleY(1);transition:max-height .3s,transform .2s}.v1fUFCBPmd6miSCf_ehK{fill:var(--jp-green-40)}.oR9QG6gRLvyzqiuIarmu{border-radius:32px;flex-shrink:0;font-size:12px;font-style:normal;font-weight:600;line-height:16px;margin-left:calc(var(--spacing-base)*4);padding:calc(var(--spacing-base)/2);position:relative;text-align:center;width:60px}.oR9QG6gRLvyzqiuIarmu.bZ8KDXMWoim85Zv31E7E{background-color:#008a20;color:var(--jp-white)}.oR9QG6gRLvyzqiuIarmu.uYEkrN4rh8n5cs3aPrYC{background-color:var(--jp-gray-50);color:var(--jp-white)}.WOX88CWB12lzxcMcl_ns{color:#008a20}.H2J5mHqyiBHXCAyZ4KGa{color:inherit}.H2J5mHqyiBHXCAyZ4KGa:focus,.H2J5mHqyiBHXCAyZ4KGa:hover{box-shadow:none;color:inherit}.BT16ByfO8ktYf15hbMG8{margin-left:calc(var(--spacing-base)/2);max-height:20px}.Gi6geVLkEyrClNXuJ34I{color:var(--jp-red)}.Q02oRBdY3ZpNGOF2Y1iV{color:var(--jp-gray-70);font-weight:400;line-height:24px}@media(max-width:599px){.PyvnSHQuuUkZvVsArigy{display:grid;grid-auto-rows:minmax(auto,auto)}.PyvnSHQuuUkZvVsArigy>:first-child{grid-column:1/8;grid-row:1}.PyvnSHQuuUkZvVsArigy>:nth-child(2){grid-row:2;padding-left:calc(var(--spacing-base)*4)}.PyvnSHQuuUkZvVsArigy>:nth-child(3){grid-row:2}.PyvnSHQuuUkZvVsArigy>:nth-child(3) span{margin-top:var(--spacing-base);position:absolute}.PyvnSHQuuUkZvVsArigy>:last-child{grid-column:10;grid-row:1/3}.oR9QG6gRLvyzqiuIarmu{display:none}}@media(max-width:1200px){.kh5zuLR1zNf7KCsxhAZ5{display:grid}.z1z63g62c73XbcPk9DWc{display:none}}.SunkAzopVEoBZbCUFkpe{background-color:var(--jp-gray-0);display:flex;flex-direction:row;font-family:monospace;overflow-x:auto;padding:0}.s6eJjt_RVhQ8mEG1qQYb{background-color:var(--jp-red-0)}.cW2860S1RCjdsufX8ds_{display:flex;flex-direction:column;text-align:right}.hU_xmjv3sGJgIvV_26Ik{background-color:var(--jp-gray-10);color:var(--font-body);padding:0 calc(var(--spacing-base)/2)}.hU_xmjv3sGJgIvV_26Ik.s6eJjt_RVhQ8mEG1qQYb{background-color:var(--jp-red-50);color:var(--jp-white)}.O5ZaHoo1pFRkk_GUUczG{display:flex;flex:1;flex-direction:column;overflow-x:visible;white-space:pre}.UoS_E4HwI88HfDMpNtvB{padding-left:var(--spacing-base)}.ZotWIwUISq6XCpIyD8k7{background-color:var(--jp-red);border-radius:calc(var(--jp-border-radius)/2);color:var(--jp-white);padding:calc(var(--spacing-base)/4) calc(var(--spacing-base)/2)}.HPsJA6B0f3Bd2tZgEr7v{font-size:var(--font-body);line-height:1.5}.WA0OogO0bZSYbqUPL9aa{background-color:var(--jp-gray-10);font-weight:600;padding:calc(var(--spacing-base)/2) var(--spacing-base)}.Z1NxA7aDh5LEYjbLLKbF{background-color:var(--jp-gray-0);display:flex;flex-direction:row;font-family:Courier\ 10 Pitch,Courier,monospace;overflow-x:auto;white-space:pre}.aeQS3Qb4g1FwDY0HaZKb{background-color:var(--jp-gray-10);color:var(--jp-gray-50);display:flex;flex-direction:column;padding:0 var(--spacing-base);text-align:right}.ESXyHLdGmRLZMv7_Ei9d{display:flex;flex-direction:column;flex-grow:1;overflow-x:visible}.ESXyHLdGmRLZMv7_Ei9d del,.ESXyHLdGmRLZMv7_Ei9d div,.ESXyHLdGmRLZMv7_Ei9d ins{padding:0 var(--spacing-base);text-decoration:none}.ESXyHLdGmRLZMv7_Ei9d del{background-color:var(--jp-red-0);color:var(--jp-red-60)}.ESXyHLdGmRLZMv7_Ei9d ins{background-color:var(--jp-green-5);color:var(--jp-green-60)}.XqQBRzrxyMhhZvPXIHgk .components-button{box-shadow:inset 0 0 0 1.5px var(--jp-gray);position:relative}.XqQBRzrxyMhhZvPXIHgk .components-button:first-child{border-radius:var(--jp-border-radius) 0 0 var(--jp-border-radius)}.XqQBRzrxyMhhZvPXIHgk .components-button:last-child{border-radius:0 var(--jp-border-radius) var(--jp-border-radius) 0}.XqQBRzrxyMhhZvPXIHgk .components-button:hover{z-index:1}.XqQBRzrxyMhhZvPXIHgk .components-button+.components-button{margin-left:-1.5px}.iN9oF7KagtrwaFKTquqW{align-items:center;display:flex}.IZTexE5bnJrB25jtwXBW{height:54px;width:54px;fill:var(--jp-red);margin-left:-8px;margin-right:var(--spacing-base)}.YzqaprEdVpBoBJesZixw{margin-top:calc(var(--spacing-base)*3)}.AMcxtVDLtWB2EJJJU5NQ{height:auto;max-width:100%;position:relative;width:330px}.vtViVIQmuI1n8HDxrkNy{animation:BJ0WjZD0MlRR_Usu8HEd 4s ease-in-out .8s infinite normal forwards;opacity:0;position:relative;transform:translateY(24px)}.vtViVIQmuI1n8HDxrkNy:nth-of-type(2){animation-delay:.6s}.vtViVIQmuI1n8HDxrkNy:nth-of-type(3){animation-delay:.7s}@keyframes BJ0WjZD0MlRR_Usu8HEd{0%{opacity:0;transform:translateY(24px)}20%{opacity:1;transform:translateY(0)}50%{opacity:1;transform:translateY(0)}60%{opacity:0;transform:translateY(-48px)}to{opacity:0;transform:translateY(-48px)}}@media(prefers-reduced-motion:reduce){.vtViVIQmuI1n8HDxrkNy{animation:none}}.vzMlFr1AXWqefpRrb976{align-items:center;display:flex;justify-content:space-between;margin-bottom:calc(var(--spacing-base)*2)}.gYSOMa4xxLXmsNzvFPkW{background-color:var(--jp-gray-5);border-radius:calc(var(--spacing-base)*3);width:100%}.hNJWdt5qmZkWYAH_vjIp{background-color:var(--jp-green-40);border-radius:calc(var(--spacing-base)*3);height:9px;transition:width .2s}.DHMUfGyHbl5BgD5vjxVz{color:var(--jp-gray-90);font-weight:600;line-height:24px;margin-left:auto;padding-left:var(--spacing-base)}.cAbGtJDGgLubucBnz7vM{background-color:var(--jp-white)}.KmIjHqrMs3duMPaUf50k{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;max-height:600px;width:100%}.bpW3MfTt3siOyvw1ZsuF{font-weight:700}.DJS67UCXVaM7nIMJePYQ{align-items:flex-end;display:flex;justify-content:flex-end;margin-bottom:calc(var(--spacing-base)*2.25)}.s4378tf2MiM0bMIxQZkI{flex:1;margin-bottom:0}.jifq7nsF5kZYrcpGQ35V{display:flex;gap:calc(var(--spacing-base)*2)}@media(max-width:599px){.DJS67UCXVaM7nIMJePYQ{margin-bottom:calc(var(--spacing-base)*3)}.s4378tf2MiM0bMIxQZkI{display:none}}.yjKVIZH3KLvJeygIzaZn{margin-top:calc(var(--spacing-base)*3)}.terms-of-service{color:var(--jp-black);font-size:var(--font-body)}.terms-of-service .terms-of-service__link{color:var(--jp-green-50);text-decoration:underline;white-space:nowrap}.p4qz2tkq0p9hxucJ6Qk2{--padding:calc(var(--spacing-base)*4);color:var(--jp-black)}.lbNDyXioOwvyvbALtCBm{--gap:calc(var(--spacing-base)*3);padding:var(--padding) 0;position:relative}.s2Lsn4kbm6BrS3DSndRB .lbNDyXioOwvyvbALtCBm{column-gap:var(--gap);display:grid;grid-auto-flow:column;grid-template-columns:repeat(var(--columns),1fr);grid-template-rows:repeat(var(--rows),minmax(min-content,max-content))}.cLaNK_XcbTGlRQ4Tp43Q{margin-top:var(--padding)}.s2Lsn4kbm6BrS3DSndRB .cLaNK_XcbTGlRQ4Tp43Q{display:contents}.cLaNK_XcbTGlRQ4Tp43Q.CYt1X0eH1icRjhtJ28jx>*{background:var(--jp-white);position:relative}.cLaNK_XcbTGlRQ4Tp43Q.CYt1X0eH1icRjhtJ28jx>:after{bottom:0;box-shadow:0 4px 24px #0000000d;content:"";left:0;position:absolute;right:0;top:0;z-index:-1}.cLaNK_XcbTGlRQ4Tp43Q>:first-child{border-top-left-radius:var(--jp-border-radius);border-top-right-radius:var(--jp-border-radius);border-width:1px 1px 0}.cLaNK_XcbTGlRQ4Tp43Q>:last-child{border-bottom-left-radius:var(--jp-border-radius);border-bottom-right-radius:var(--jp-border-radius);border-width:0 1px 1px}.DAkZc1P9A3K12fjEliMg{display:flex;flex-direction:column;justify-content:space-between;padding:var(--padding)}.WUBuYABl8nymjs9NnCEL{align-items:center;display:flex;padding-bottom:calc(var(--spacing-base)*2);position:relative}.WUBuYABl8nymjs9NnCEL:not(:nth-child(2)){padding-top:calc(var(--spacing-base)*2)}.WUBuYABl8nymjs9NnCEL:not(:nth-child(2)):before{background-color:var(--jp-gray);content:"";height:1px;left:var(--padding);position:absolute;right:var(--padding);top:0;z-index:5}.s2Lsn4kbm6BrS3DSndRB .WUBuYABl8nymjs9NnCEL:not(:nth-child(2)):before{left:0;right:unset;width:calc(100% + var(--gap))}.s2Lsn4kbm6BrS3DSndRB .lbNDyXioOwvyvbALtCBm>:last-child .WUBuYABl8nymjs9NnCEL:not(:nth-child(2)):before{width:100%}.ANtCFeb41NhA8PA3H7ZN,.WUBuYABl8nymjs9NnCEL:last-of-type{padding-bottom:var(--padding)}.Ql2gy_148yW8Vw5vhaKD{padding-left:var(--padding);padding-right:var(--padding)}.EAQrAnQEW1z1BfdY5gbC{margin:0 var(--spacing-base);fill:var(--jp-gray);flex-shrink:0}.EAQrAnQEW1z1BfdY5gbC.JDSTlLoOC_4aUoH2oNM2{fill:var(--jp-green-40)}.EAQrAnQEW1z1BfdY5gbC.zNdQRJ1w7BvaQOYyqzHK{fill:var(--jp-red-50)}.lr7vbX95SKtoe7DarJcZ{margin-left:auto}.s2Lsn4kbm6BrS3DSndRB .lr7vbX95SKtoe7DarJcZ{margin:0 var(--spacing-base);top:1px}.WUBuYABl8nymjs9NnCEL .KRrGp2xdkeBOxLZeuQ6X{fill:var(--jp-gray-20);flex-shrink:0}.H_ZJiRVJg0LiMXPGOcmt{text-align:center;width:fit-content}.H_ZJiRVJg0LiMXPGOcmt>a{color:#000}.s2Lsn4kbm6BrS3DSndRB .H_ZJiRVJg0LiMXPGOcmt{grid-column:2;overflow:hidden;padding-left:var(--padding);padding-right:var(--padding);white-space:nowrap}.x21z_DixObRDsDaWotP1{align-items:right;display:flex;justify-content:right;margin:0 calc(var(--spacing-base)*4)}.dovianZYLKhnbnh9I06o{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-end}.lljtQMhW7lq5tE5SDJEf{align-items:flex-start;display:flex;flex-basis:0;flex-grow:2}.lljtQMhW7lq5tE5SDJEf .NubApIV1vQCRUNprfm6b{margin-left:auto}.dhFQXpZfMwVI8vuYHnwC{align-items:flex-start;display:inline-flex;flex:0 0 auto;position:relative}.dhFQXpZfMwVI8vuYHnwC:first-child{margin-right:calc(var(--spacing-base)*2)}.dhFQXpZfMwVI8vuYHnwC.eD7hzxFmdtG_MgmBtl_k{color:var(--jp-gray-20)}.dhFQXpZfMwVI8vuYHnwC.eD7hzxFmdtG_MgmBtl_k:after{background:var(--jp-red);border-radius:var(--jp-border-radius);content:" ";display:block;height:3px;margin-top:-2px;pointer-events:none;position:absolute;top:50%;width:100%}.C64ZjjUAqJC1T2Sa7apS{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start;margin-bottom:calc(var(--spacing-base)*3)}.UpZDGew6Ay1hPoP6eI7b{color:var(--jp-gray-40);font-size:var(--font-body-small);line-height:20px}.UpZDGew6Ay1hPoP6eI7b:after{content:"​"}.NubApIV1vQCRUNprfm6b{background-color:var(--jp-yellow-10);border-radius:4px;font-size:13px;font-weight:600;margin-left:var(--spacing-base);padding-left:var(--spacing-base);padding-right:var(--spacing-base)}.TDiiPbuW1Z0_05u_pvcK{font-weight:400}.T1f6nRmWifz5im6hB29M{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.Ki7ehROrWxWBIMIt8SUH:focus:not(:disabled){box-shadow:none}*{box-sizing:border-box}#jetpack-protect-root{--wp-admin-theme-color:var(--jp-black);--wp-admin-theme-color-darker-10:var(--jp-black-80);--wp-admin-theme-color-darker-20:var(--jp-black-80);--wp-admin-border-width-focus:1.51px;--actions-size:28px} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.js b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.js deleted file mode 100644 index 630de61d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.js +++ /dev/null @@ -1,77 +0,0 @@ -/*! For license information please see index.js.LICENSE.txt */ -(()=>{var e={9826:(e,t,a)=>{"use strict";a.d(t,{i:()=>r});const n={AED:{symbol:"د.إ.‏",grouping:",",decimal:".",precision:2},AFN:{symbol:"؋",grouping:",",decimal:".",precision:2},ALL:{symbol:"Lek",grouping:".",decimal:",",precision:2},AMD:{symbol:"֏",grouping:",",decimal:".",precision:2},ANG:{symbol:"ƒ",grouping:",",decimal:".",precision:2},AOA:{symbol:"Kz",grouping:",",decimal:".",precision:2},ARS:{symbol:"$",grouping:".",decimal:",",precision:2},AUD:{symbol:"A$",grouping:",",decimal:".",precision:2},AWG:{symbol:"ƒ",grouping:",",decimal:".",precision:2},AZN:{symbol:"₼",grouping:" ",decimal:",",precision:2},BAM:{symbol:"КМ",grouping:".",decimal:",",precision:2},BBD:{symbol:"Bds$",grouping:",",decimal:".",precision:2},BDT:{symbol:"৳",grouping:",",decimal:".",precision:0},BGN:{symbol:"лв.",grouping:" ",decimal:",",precision:2},BHD:{symbol:"د.ب.‏",grouping:",",decimal:".",precision:3},BIF:{symbol:"FBu",grouping:",",decimal:".",precision:0},BMD:{symbol:"$",grouping:",",decimal:".",precision:2},BND:{symbol:"$",grouping:".",decimal:",",precision:0},BOB:{symbol:"Bs",grouping:".",decimal:",",precision:2},BRL:{symbol:"R$",grouping:".",decimal:",",precision:2},BSD:{symbol:"$",grouping:",",decimal:".",precision:2},BTC:{symbol:"Ƀ",grouping:",",decimal:".",precision:2},BTN:{symbol:"Nu.",grouping:",",decimal:".",precision:1},BWP:{symbol:"P",grouping:",",decimal:".",precision:2},BYR:{symbol:"р.",grouping:" ",decimal:",",precision:2},BZD:{symbol:"BZ$",grouping:",",decimal:".",precision:2},CAD:{symbol:"C$",grouping:",",decimal:".",precision:2},CDF:{symbol:"FC",grouping:",",decimal:".",precision:2},CHF:{symbol:"CHF",grouping:"'",decimal:".",precision:2},CLP:{symbol:"$",grouping:".",decimal:",",precision:2},CNY:{symbol:"¥",grouping:",",decimal:".",precision:2},COP:{symbol:"$",grouping:".",decimal:",",precision:2},CRC:{symbol:"₡",grouping:".",decimal:",",precision:2},CUC:{symbol:"CUC",grouping:",",decimal:".",precision:2},CUP:{symbol:"$MN",grouping:",",decimal:".",precision:2},CVE:{symbol:"$",grouping:",",decimal:".",precision:2},CZK:{symbol:"Kč",grouping:" ",decimal:",",precision:2},DJF:{symbol:"Fdj",grouping:",",decimal:".",precision:0},DKK:{symbol:"kr.",grouping:"",decimal:",",precision:2},DOP:{symbol:"RD$",grouping:",",decimal:".",precision:2},DZD:{symbol:"د.ج.‏",grouping:",",decimal:".",precision:2},EGP:{symbol:"ج.م.‏",grouping:",",decimal:".",precision:2},ERN:{symbol:"Nfk",grouping:",",decimal:".",precision:2},ETB:{symbol:"ETB",grouping:",",decimal:".",precision:2},EUR:{symbol:"€",grouping:".",decimal:",",precision:2},FJD:{symbol:"FJ$",grouping:",",decimal:".",precision:2},FKP:{symbol:"£",grouping:",",decimal:".",precision:2},GBP:{symbol:"£",grouping:",",decimal:".",precision:2},GEL:{symbol:"Lari",grouping:" ",decimal:",",precision:2},GHS:{symbol:"₵",grouping:",",decimal:".",precision:2},GIP:{symbol:"£",grouping:",",decimal:".",precision:2},GMD:{symbol:"D",grouping:",",decimal:".",precision:2},GNF:{symbol:"FG",grouping:",",decimal:".",precision:0},GTQ:{symbol:"Q",grouping:",",decimal:".",precision:2},GYD:{symbol:"G$",grouping:",",decimal:".",precision:2},HKD:{symbol:"HK$",grouping:",",decimal:".",precision:2},HNL:{symbol:"L.",grouping:",",decimal:".",precision:2},HRK:{symbol:"kn",grouping:".",decimal:",",precision:2},HTG:{symbol:"G",grouping:",",decimal:".",precision:2},HUF:{symbol:"Ft",grouping:".",decimal:",",precision:0},IDR:{symbol:"Rp",grouping:".",decimal:",",precision:0},ILS:{symbol:"₪",grouping:",",decimal:".",precision:2},INR:{symbol:"₹",grouping:",",decimal:".",precision:2},IQD:{symbol:"د.ع.‏",grouping:",",decimal:".",precision:2},IRR:{symbol:"﷼",grouping:",",decimal:"/",precision:2},ISK:{symbol:"kr.",grouping:".",decimal:",",precision:0},JMD:{symbol:"J$",grouping:",",decimal:".",precision:2},JOD:{symbol:"د.ا.‏",grouping:",",decimal:".",precision:3},JPY:{symbol:"¥",grouping:",",decimal:".",precision:0},KES:{symbol:"S",grouping:",",decimal:".",precision:2},KGS:{symbol:"сом",grouping:" ",decimal:"-",precision:2},KHR:{symbol:"៛",grouping:",",decimal:".",precision:0},KMF:{symbol:"CF",grouping:",",decimal:".",precision:2},KPW:{symbol:"₩",grouping:",",decimal:".",precision:0},KRW:{symbol:"₩",grouping:",",decimal:".",precision:0},KWD:{symbol:"د.ك.‏",grouping:",",decimal:".",precision:3},KYD:{symbol:"$",grouping:",",decimal:".",precision:2},KZT:{symbol:"₸",grouping:" ",decimal:"-",precision:2},LAK:{symbol:"₭",grouping:",",decimal:".",precision:0},LBP:{symbol:"ل.ل.‏",grouping:",",decimal:".",precision:2},LKR:{symbol:"₨",grouping:",",decimal:".",precision:0},LRD:{symbol:"L$",grouping:",",decimal:".",precision:2},LSL:{symbol:"M",grouping:",",decimal:".",precision:2},LYD:{symbol:"د.ل.‏",grouping:",",decimal:".",precision:3},MAD:{symbol:"د.م.‏",grouping:",",decimal:".",precision:2},MDL:{symbol:"lei",grouping:",",decimal:".",precision:2},MGA:{symbol:"Ar",grouping:",",decimal:".",precision:0},MKD:{symbol:"ден.",grouping:".",decimal:",",precision:2},MMK:{symbol:"K",grouping:",",decimal:".",precision:2},MNT:{symbol:"₮",grouping:" ",decimal:",",precision:2},MOP:{symbol:"MOP$",grouping:",",decimal:".",precision:2},MRO:{symbol:"UM",grouping:",",decimal:".",precision:2},MTL:{symbol:"₤",grouping:",",decimal:".",precision:2},MUR:{symbol:"₨",grouping:",",decimal:".",precision:2},MVR:{symbol:"MVR",grouping:",",decimal:".",precision:1},MWK:{symbol:"MK",grouping:",",decimal:".",precision:2},MXN:{symbol:"MX$",grouping:",",decimal:".",precision:2},MYR:{symbol:"RM",grouping:",",decimal:".",precision:2},MZN:{symbol:"MT",grouping:",",decimal:".",precision:0},NAD:{symbol:"N$",grouping:",",decimal:".",precision:2},NGN:{symbol:"₦",grouping:",",decimal:".",precision:2},NIO:{symbol:"C$",grouping:",",decimal:".",precision:2},NOK:{symbol:"kr",grouping:" ",decimal:",",precision:2},NPR:{symbol:"₨",grouping:",",decimal:".",precision:2},NZD:{symbol:"NZ$",grouping:",",decimal:".",precision:2},OMR:{symbol:"﷼",grouping:",",decimal:".",precision:3},PAB:{symbol:"B/.",grouping:",",decimal:".",precision:2},PEN:{symbol:"S/.",grouping:",",decimal:".",precision:2},PGK:{symbol:"K",grouping:",",decimal:".",precision:2},PHP:{symbol:"₱",grouping:",",decimal:".",precision:2},PKR:{symbol:"₨",grouping:",",decimal:".",precision:2},PLN:{symbol:"zł",grouping:" ",decimal:",",precision:2},PYG:{symbol:"₲",grouping:".",decimal:",",precision:2},QAR:{symbol:"﷼",grouping:",",decimal:".",precision:2},RON:{symbol:"lei",grouping:".",decimal:",",precision:2},RSD:{symbol:"Дин.",grouping:".",decimal:",",precision:2},RUB:{symbol:"₽",grouping:" ",decimal:",",precision:2},RWF:{symbol:"RWF",grouping:" ",decimal:",",precision:2},SAR:{symbol:"﷼",grouping:",",decimal:".",precision:2},SBD:{symbol:"S$",grouping:",",decimal:".",precision:2},SCR:{symbol:"₨",grouping:",",decimal:".",precision:2},SDD:{symbol:"LSd",grouping:",",decimal:".",precision:2},SDG:{symbol:"£‏",grouping:",",decimal:".",precision:2},SEK:{symbol:"kr",grouping:",",decimal:".",precision:2},SGD:{symbol:"S$",grouping:",",decimal:".",precision:2},SHP:{symbol:"£",grouping:",",decimal:".",precision:2},SLL:{symbol:"Le",grouping:",",decimal:".",precision:2},SOS:{symbol:"S",grouping:",",decimal:".",precision:2},SRD:{symbol:"$",grouping:",",decimal:".",precision:2},STD:{symbol:"Db",grouping:",",decimal:".",precision:2},SVC:{symbol:"₡",grouping:",",decimal:".",precision:2},SYP:{symbol:"£",grouping:",",decimal:".",precision:2},SZL:{symbol:"E",grouping:",",decimal:".",precision:2},THB:{symbol:"฿",grouping:",",decimal:".",precision:2},TJS:{symbol:"TJS",grouping:" ",decimal:";",precision:2},TMT:{symbol:"m",grouping:" ",decimal:",",precision:0},TND:{symbol:"د.ت.‏",grouping:",",decimal:".",precision:3},TOP:{symbol:"T$",grouping:",",decimal:".",precision:2},TRY:{symbol:"TL",grouping:".",decimal:",",precision:2},TTD:{symbol:"TT$",grouping:",",decimal:".",precision:2},TVD:{symbol:"$T",grouping:",",decimal:".",precision:2},TWD:{symbol:"NT$",grouping:",",decimal:".",precision:2},TZS:{symbol:"TSh",grouping:",",decimal:".",precision:2},UAH:{symbol:"₴",grouping:" ",decimal:",",precision:2},UGX:{symbol:"USh",grouping:",",decimal:".",precision:2},USD:{symbol:"$",grouping:",",decimal:".",precision:2},UYU:{symbol:"$U",grouping:".",decimal:",",precision:2},UZS:{symbol:"сўм",grouping:" ",decimal:",",precision:2},VEB:{symbol:"Bs.",grouping:",",decimal:".",precision:2},VEF:{symbol:"Bs. F.",grouping:".",decimal:",",precision:2},VND:{symbol:"₫",grouping:".",decimal:",",precision:1},VUV:{symbol:"VT",grouping:",",decimal:".",precision:0},WST:{symbol:"WS$",grouping:",",decimal:".",precision:2},XAF:{symbol:"F",grouping:",",decimal:".",precision:2},XCD:{symbol:"$",grouping:",",decimal:".",precision:2},XOF:{symbol:"F",grouping:" ",decimal:",",precision:2},XPF:{symbol:"F",grouping:",",decimal:".",precision:2},YER:{symbol:"﷼",grouping:",",decimal:".",precision:2},ZAR:{symbol:"R",grouping:" ",decimal:",",precision:2},ZMW:{symbol:"ZK",grouping:",",decimal:".",precision:2},WON:{symbol:"₩",grouping:",",decimal:".",precision:2}};function r(e){return n[e]||{symbol:"$",grouping:",",decimal:".",precision:2}}},7397:(e,t,a)=>{"use strict";a.d(t,{vA:()=>c});var n=a(9826),r=a(8506);function c(e,t,a={}){const c=(0,n.i)(t);if(!c||isNaN(e))return null;const{decimal:s,grouping:i,precision:o,symbol:l}={...c,...a},u=e<0?"-":"",d=Math.abs(e),p=Math.floor(d);return{sign:u,symbol:l,integer:(0,r.A)(d,o,s,i).split(s)[0],fraction:o>0?(0,r.A)(d-p,o,s,i).slice(1):""}}},8506:(e,t,a)=>{"use strict";function n(e,t=0,a=".",n=","){const r=(e+"").replace(/[^0-9+\-Ee.]/g,""),c=isFinite(+r)?+r:0,s=isFinite(+t)?Math.abs(t):0,i=(s?function(e,t){const a=Math.pow(10,t);return""+(Math.round(e*a)/a).toFixed(t)}(c,s):""+Math.round(c)).split(".");return i[0].length>3&&(i[0]=i[0].replace(/\B(?=(?:\d{3})+(?!\d))/g,n)),(i[1]||"").lengthn})},6992:(e,t,a)=>{"use strict";function n(){return n=Object.assign?Object.assign.bind():function(e){for(var t=1;td,B6:()=>x,Gh:()=>z,HS:()=>O,Oi:()=>i,Rr:()=>p,TM:()=>s,pX:()=>H,pb:()=>M,rc:()=>r,tH:()=>D,ue:()=>g,yD:()=>P}),function(e){e.Pop="POP",e.Push="PUSH",e.Replace="REPLACE"}(r||(r={}));const c="popstate";function s(e){return void 0===e&&(e={}),m((function(e,t){let{pathname:a="/",search:n="",hash:r=""}=p(e.location.hash.substr(1));return a.startsWith("/")||a.startsWith(".")||(a="/"+a),u("",{pathname:a,search:n,hash:r},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}),(function(e,t){let a=e.document.querySelector("base"),n="";if(a&&a.getAttribute("href")){let t=e.location.href,a=t.indexOf("#");n=-1===a?t:t.slice(0,a)}return n+"#"+("string"==typeof t?t:d(t))}),(function(e,t){o("/"===e.pathname.charAt(0),"relative pathnames are not supported in hash history.push("+JSON.stringify(t)+")")}),e)}function i(e,t){if(!1===e||null==e)throw new Error(t)}function o(e,t){if(!e){"undefined"!=typeof console&&console.warn(t);try{throw new Error(t)}catch(e){}}}function l(e,t){return{usr:e.state,key:e.key,idx:t}}function u(e,t,a,r){return void 0===a&&(a=null),n({pathname:"string"==typeof e?e:e.pathname,search:"",hash:""},"string"==typeof t?p(t):t,{state:a,key:t&&t.key||r||Math.random().toString(36).substr(2,8)})}function d(e){let{pathname:t="/",search:a="",hash:n=""}=e;return a&&"?"!==a&&(t+="?"===a.charAt(0)?a:"?"+a),n&&"#"!==n&&(t+="#"===n.charAt(0)?n:"#"+n),t}function p(e){let t={};if(e){let a=e.indexOf("#");a>=0&&(t.hash=e.substr(a),e=e.substr(0,a));let n=e.indexOf("?");n>=0&&(t.search=e.substr(n),e=e.substr(0,n)),e&&(t.pathname=e)}return t}function m(e,t,a,s){void 0===s&&(s={});let{window:o=document.defaultView,v5Compat:p=!1}=s,m=o.history,h=r.Pop,g=null,v=f();function f(){return(m.state||{idx:null}).idx}function y(){h=r.Pop;let e=f(),t=null==e?null:e-v;v=e,g&&g({action:h,location:A.location,delta:t})}function E(e){let t="null"!==o.location.origin?o.location.origin:o.location.href,a="string"==typeof e?e:d(e);return a=a.replace(/ $/,"%20"),i(t,"No window.location.(origin|href) available to create URL for href: "+a),new URL(a,t)}null==v&&(v=0,m.replaceState(n({},m.state,{idx:v}),""));let A={get action(){return h},get location(){return e(o,m)},listen(e){if(g)throw new Error("A history only accepts one active listener");return o.addEventListener(c,y),g=e,()=>{o.removeEventListener(c,y),g=null}},createHref:e=>t(o,e),createURL:E,encodeLocation(e){let t=E(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:function(e,t){h=r.Push;let n=u(A.location,e,t);a&&a(n,e),v=f()+1;let c=l(n,v),s=A.createHref(n);try{m.pushState(c,"",s)}catch(e){if(e instanceof DOMException&&"DataCloneError"===e.name)throw e;o.location.assign(s)}p&&g&&g({action:h,location:A.location,delta:1})},replace:function(e,t){h=r.Replace;let n=u(A.location,e,t);a&&a(n,e),v=f();let c=l(n,v),s=A.createHref(n);m.replaceState(c,"",s),p&&g&&g({action:h,location:A.location,delta:0})},go:e=>m.go(e)};return A}var h;!function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"}(h||(h={}));new Set(["lazy","caseSensitive","path","id","index","children"]);function g(e,t,a){return void 0===a&&(a="/"),v(e,t,a,!1)}function v(e,t,a,n){let r=M(("string"==typeof t?p(t):t).pathname||"/",a);if(null==r)return null;let c=f(e);!function(e){e.sort(((e,t)=>e.score!==t.score?t.score-e.score:function(e,t){let a=e.length===t.length&&e.slice(0,-1).every(((e,a)=>e===t[a]));return a?e[e.length-1]-t[t.length-1]:0}(e.routesMeta.map((e=>e.childrenIndex)),t.routesMeta.map((e=>e.childrenIndex)))))}(c);let s=null;for(let e=0;null==s&&e{let s={relativePath:void 0===c?e.path||"":c,caseSensitive:!0===e.caseSensitive,childrenIndex:r,route:e};s.relativePath.startsWith("/")&&(i(s.relativePath.startsWith(n),'Absolute route path "'+s.relativePath+'" nested under path "'+n+'" is not valid. An absolute child route path must start with the combined path of all its parent routes.'),s.relativePath=s.relativePath.slice(n.length));let o=O([n,s.relativePath]),l=a.concat(s);e.children&&e.children.length>0&&(i(!0!==e.index,'Index routes must not have child routes. Please remove all child routes from route path "'+o+'".'),f(e.children,t,l,o)),(null!=e.path||e.index)&&t.push({path:o,score:_(o,e.index),routesMeta:l})};return e.forEach(((e,t)=>{var a;if(""!==e.path&&null!=(a=e.path)&&a.includes("?"))for(let a of y(e.path))r(e,t,a);else r(e,t)})),t}function y(e){let t=e.split("/");if(0===t.length)return[];let[a,...n]=t,r=a.endsWith("?"),c=a.replace(/\?$/,"");if(0===n.length)return r?[c,""]:[c];let s=y(n.join("/")),i=[];return i.push(...s.map((e=>""===e?c:[c,e].join("/")))),r&&i.push(...s),i.map((t=>e.startsWith("/")&&""===t?"/":t))}const E=/^:[\w-]+$/,A=3,b=2,w=1,k=10,R=-2,C=e=>"*"===e;function _(e,t){let a=e.split("/"),n=a.length;return a.some(C)&&(n+=R),t&&(n+=b),a.filter((e=>!C(e))).reduce(((e,t)=>e+(E.test(t)?A:""===t?w:k)),n)}function j(e,t,a){void 0===a&&(a=!1);let{routesMeta:n}=e,r={},c="/",s=[];for(let e=0;e(n.push({paramName:t,isOptional:null!=a}),a?"/?([^\\/]+)?":"/([^\\/]+)")));e.endsWith("*")?(n.push({paramName:"*"}),r+="*"===e||"/*"===e?"(.*)$":"(?:\\/(.+)|\\/*)$"):a?r+="\\/*$":""!==e&&"/"!==e&&(r+="(?:(?=\\/|$))");let c=new RegExp(r,t?void 0:"i");return[c,n]}(e.path,e.caseSensitive,e.end),r=t.match(a);if(!r)return null;let c=r[0],s=c.replace(/(.)\/+$/,"$1"),i=r.slice(1);return{params:n.reduce(((e,t,a)=>{let{paramName:n,isOptional:r}=t;if("*"===n){let e=i[a]||"";s=c.slice(0,c.length-e.length).replace(/(.)\/+$/,"$1")}const o=i[a];return e[n]=r&&!o?void 0:(o||"").replace(/%2F/g,"/"),e}),{}),pathname:c,pathnameBase:s,pattern:e}}function S(e){try{return e.split("/").map((e=>decodeURIComponent(e).replace(/\//g,"%2F"))).join("/")}catch(t){return o(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent encoding ('+t+")."),e}}function M(e,t){if("/"===t)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let a=t.endsWith("/")?t.length-1:t.length,n=e.charAt(a);return n&&"/"!==n?null:e.slice(a)||"/"}function N(e,t,a,n){return"Cannot include a '"+e+"' character in a manually specified `to."+t+"` field ["+JSON.stringify(n)+"]. Please separate it out to the `to."+a+'` field. Alternatively you may provide the full path as a string in and the router will parse it for you.'}function L(e){return e.filter(((e,t)=>0===t||e.route.path&&e.route.path.length>0))}function P(e,t){let a=L(e);return t?a.map(((e,t)=>t===a.length-1?e.pathname:e.pathnameBase)):a.map((e=>e.pathnameBase))}function z(e,t,a,r){let c;void 0===r&&(r=!1),"string"==typeof e?c=p(e):(c=n({},e),i(!c.pathname||!c.pathname.includes("?"),N("?","pathname","search",c)),i(!c.pathname||!c.pathname.includes("#"),N("#","pathname","hash",c)),i(!c.search||!c.search.includes("#"),N("#","search","hash",c)));let s,o=""===e||""===c.pathname,l=o?"/":c.pathname;if(null==l)s=a;else{let e=t.length-1;if(!r&&l.startsWith("..")){let t=l.split("/");for(;".."===t[0];)t.shift(),e-=1;c.pathname=t.join("/")}s=e>=0?t[e]:"/"}let u=function(e,t){void 0===t&&(t="/");let{pathname:a,search:n="",hash:r=""}="string"==typeof e?p(e):e,c=a?a.startsWith("/")?a:function(e,t){let a=t.replace(/\/+$/,"").split("/");return e.split("/").forEach((e=>{".."===e?a.length>1&&a.pop():"."!==e&&a.push(e)})),a.length>1?a.join("/"):"/"}(a,t):t;return{pathname:c,search:F(n),hash:V(r)}}(c,s),d=l&&"/"!==l&&l.endsWith("/"),m=(o||"."===l)&&a.endsWith("/");return u.pathname.endsWith("/")||!d&&!m||(u.pathname+="/"),u}const O=e=>e.join("/").replace(/\/\/+/g,"/"),I=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),F=e=>e&&"?"!==e?e.startsWith("?")?e:"?"+e:"",V=e=>e&&"#"!==e?e.startsWith("#")?e:"#"+e:"";class D extends Error{}function H(e){return null!=e&&"number"==typeof e.status&&"string"==typeof e.statusText&&"boolean"==typeof e.internal&&"data"in e}const T=["post","put","patch","delete"],B=(new Set(T),["get",...T]);new Set(B),new Set([301,302,303,307,308]),new Set([307,308]);Symbol("deferred")},1113:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});var n=a(6087);const r=(0,n.forwardRef)((function({icon:e,size:t=24,...a},r){return(0,n.cloneElement)(e,{width:t,height:t,...a,ref:r})}))},1797:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(5573),r=a(790);const c=(0,r.jsx)(n.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,r.jsx)(n.Path,{d:"m14.5 6.5-1 1 3.7 3.7H4v1.6h13.2l-3.7 3.7 1 1 5.6-5.5z"})})},3751:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(5573),r=a(790);const c=(0,r.jsx)(n.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,r.jsx)(n.Path,{d:"M12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4ZM12.75 8V13H11.25V8H12.75ZM12.75 14.5V16H11.25V14.5H12.75Z"})})},7267:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(5573),r=a(790);const c=(0,r.jsx)(n.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,r.jsx)(n.Path,{fillRule:"evenodd",d:"M11.25 5h1.5v15h-1.5V5zM6 10h1.5v10H6V10zm12 4h-1.5v6H18v-6z",clipRule:"evenodd"})})},3883:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(5573),r=a(790);const c=(0,r.jsx)(n.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,r.jsx)(n.Path,{d:"M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z"})})},4969:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(5573),r=a(790);const c=(0,r.jsx)(n.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,r.jsx)(n.Path,{d:"M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z"})})},8888:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(5573),r=a(790);const c=(0,r.jsx)(n.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,r.jsx)(n.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})})},9115:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(5573),r=a(790);const c=(0,r.jsx)(n.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,r.jsx)(n.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})})},8248:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(5573),r=a(790);const c=(0,r.jsx)(n.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,r.jsx)(n.Path,{d:"M6.5 12.4L12 8l5.5 4.4-.9 1.2L12 10l-4.5 3.6-1-1.2z"})})},1249:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(5573),r=a(790);const c=(0,r.jsx)(n.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,r.jsx)(n.Path,{d:"M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z"})})},991:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(5573),r=a(790);const c=(0,r.jsx)(n.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,r.jsx)(n.Path,{d:"m13.06 12 6.47-6.47-1.06-1.06L12 10.94 5.53 4.47 4.47 5.53 10.94 12l-6.47 6.47 1.06 1.06L12 13.06l6.47 6.47 1.06-1.06L13.06 12Z"})})},4314:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(5573),r=a(790);const c=(0,r.jsx)(n.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,r.jsx)(n.Path,{d:"M20.8 10.7l-4.3-4.3-1.1 1.1 4.3 4.3c.1.1.1.3 0 .4l-4.3 4.3 1.1 1.1 4.3-4.3c.7-.8.7-1.9 0-2.6zM4.2 11.8l4.3-4.3-1-1-4.3 4.3c-.7.7-.7 1.8 0 2.5l4.3 4.3 1.1-1.1-4.3-4.3c-.2-.1-.2-.3-.1-.4z"})})},2072:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(5573),r=a(790);const c=(0,r.jsx)(n.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,r.jsx)(n.Path,{d:"M17.2 10.9c-.5-1-1.2-2.1-2.1-3.2-.6-.9-1.3-1.7-2.1-2.6L12 4l-1 1.1c-.6.9-1.3 1.7-2 2.6-.8 1.2-1.5 2.3-2 3.2-.6 1.2-1 2.2-1 3 0 3.4 2.7 6.1 6.1 6.1s6.1-2.7 6.1-6.1c0-.8-.3-1.8-1-3zm-5.1 7.6c-2.5 0-4.6-2.1-4.6-4.6 0-.3.1-1 .8-2.3.5-.9 1.1-1.9 2-3.1.7-.9 1.3-1.7 1.8-2.3.7.8 1.3 1.6 1.8 2.3.8 1.1 1.5 2.2 2 3.1.7 1.3.8 2 .8 2.3 0 2.5-2.1 4.6-4.6 4.6z"})})},3512:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(5573),r=a(790);const c=(0,r.jsx)(n.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,r.jsx)(n.Path,{d:"M19.5 4.5h-7V6h4.44l-5.97 5.97 1.06 1.06L18 7.06v4.44h1.5v-7Zm-13 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-3H17v3a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h3V5.5h-3Z"})})},1651:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(5573),r=a(790);const c=(0,r.jsx)(n.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,r.jsx)(n.Path,{d:"m3 5c0-1.10457.89543-2 2-2h13.5c1.1046 0 2 .89543 2 2v13.5c0 1.1046-.8954 2-2 2h-13.5c-1.10457 0-2-.8954-2-2zm2-.5h6v6.5h-6.5v-6c0-.27614.22386-.5.5-.5zm-.5 8v6c0 .2761.22386.5.5.5h6v-6.5zm8 0v6.5h6c.2761 0 .5-.2239.5-.5v-6zm0-8v6.5h6.5v-6c0-.27614-.2239-.5-.5-.5z",fillRule:"evenodd",clipRule:"evenodd"})})},9783:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(5573),r=a(790);const c=(0,r.jsx)(n.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,r.jsx)(n.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.75 4v1.5h-1.5V8h1.5Zm0 8v-5h-1.5v5h1.5Z"})})},435:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(5573),r=a(790);const c=(0,r.jsx)(n.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,r.jsx)(n.Path,{d:"M10.5 4v4h3V4H15v4h1.5a1 1 0 011 1v4l-3 4v2a1 1 0 01-1 1h-3a1 1 0 01-1-1v-2l-3-4V9a1 1 0 011-1H9V4h1.5zm.5 12.5v2h2v-2l3-4v-3H8v3l3 4z"})})},5302:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(5573),r=a(790);const c=(0,r.jsx)(n.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,r.jsx)(n.Path,{d:"M12 3.176l6.75 3.068v4.574c0 3.9-2.504 7.59-6.035 8.755a2.283 2.283 0 01-1.43 0c-3.53-1.164-6.035-4.856-6.035-8.755V6.244L12 3.176zM6.75 7.21v3.608c0 3.313 2.145 6.388 5.005 7.33.159.053.331.053.49 0 2.86-.942 5.005-4.017 5.005-7.33V7.21L12 4.824 6.75 7.21z",fillRule:"evenodd",clipRule:"evenodd"})})},4648:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(5573),r=a(790);const c=(0,r.jsx)(n.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"-2 -2 24 24",children:(0,r.jsx)(n.Path,{d:"M20 10c0-5.51-4.49-10-10-10C4.48 0 0 4.49 0 10c0 5.52 4.48 10 10 10 5.51 0 10-4.48 10-10zM7.78 15.37L4.37 6.22c.55-.02 1.17-.08 1.17-.08.5-.06.44-1.13-.06-1.11 0 0-1.45.11-2.37.11-.18 0-.37 0-.58-.01C4.12 2.69 6.87 1.11 10 1.11c2.33 0 4.45.87 6.05 2.34-.68-.11-1.65.39-1.65 1.58 0 .74.45 1.36.9 2.1.35.61.55 1.36.55 2.46 0 1.49-1.4 5-1.4 5l-3.03-8.37c.54-.02.82-.17.82-.17.5-.05.44-1.25-.06-1.22 0 0-1.44.12-2.38.12-.87 0-2.33-.12-2.33-.12-.5-.03-.56 1.2-.06 1.22l.92.08 1.26 3.41zM17.41 10c.24-.64.74-1.87.43-4.25.7 1.29 1.05 2.71 1.05 4.25 0 3.29-1.73 6.24-4.4 7.78.97-2.59 1.94-5.2 2.92-7.78zM6.1 18.09C3.12 16.65 1.11 13.53 1.11 10c0-1.3.23-2.48.72-3.59C3.25 10.3 4.67 14.2 6.1 18.09zm4.03-6.63l2.58 6.98c-.86.29-1.76.45-2.71.45-.79 0-1.57-.11-2.29-.33.81-2.38 1.62-4.74 2.42-7.1z"})})},6185:e=>{"use strict";function t(e){return e&&"object"==typeof e?r(e)||c(e)?e:n(e)?function(e,t){if(e.map)return e.map(t);for(var a=[],n=0;n{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const a="color: "+this.color;t.splice(1,0,a,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(r=n))})),t.splice(r,0,a)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=a(3212)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},3212:(e,t,a)=>{e.exports=function(e){function t(e){let a,r,c,s=null;function i(...e){if(!i.enabled)return;const n=i,r=Number(new Date),c=r-(a||r);n.diff=c,n.prev=a,n.curr=r,a=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let s=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((a,r)=>{if("%%"===a)return"%";s++;const c=t.formatters[r];if("function"==typeof c){const t=e[s];a=c.call(n,t),e.splice(s,1),s--}return a})),t.formatArgs.call(n,e);(n.log||t.log).apply(n,e)}return i.namespace=e,i.useColors=t.useColors(),i.color=t.selectColor(e),i.extend=n,i.destroy=t.destroy,Object.defineProperty(i,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==s?s:(r!==t.namespaces&&(r=t.namespaces,c=t.enabled(e)),c),set:e=>{s=e}}),"function"==typeof t.init&&t.init(i),i}function n(e,a){const n=t(this.namespace+(void 0===a?":":a)+e);return n.log=this.log,n}function r(e,t){let a=0,n=0,r=-1,c=0;for(;a"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){t.save(e),t.namespaces=e,t.names=[],t.skips=[];const a=("string"==typeof e?e:"").trim().replace(" ",",").split(",").filter(Boolean);for(const e of a)"-"===e[0]?t.skips.push(e.slice(1)):t.names.push(e)},t.enabled=function(e){for(const a of t.skips)if(r(e,a))return!1;for(const a of t.names)if(r(e,a))return!0;return!1},t.humanize=a(4997),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((a=>{t[a]=e[a]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let a=0;for(let t=0;t{"use strict";a.d(t,{A:()=>n});const n={wrapper:"GqFcAwJvIrg1v7f6QUfw",header:"OENx8kmm62tkWGukzP2S",title:"KnqJLKwSceJTwFJrPGHq","close-button":"PJU0_yA9jNf7ao0jhHut",footer:"rrORM3zqHfGvqiPduEXY",steps:"Q7fUcDUGhteXEr18rZPC","action-button":"S5LAeskUiEQ0JlPhr0Ze"}},2021:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={"admin-page":"sexr0jUxC1jVixdKiDnC",background:"vKQ11sLeAM45M04P1ccj","admin-page-header":"iWGAhN9gOB48g0jEO1OQ","sandbox-domain-badge":"JOYmuxQjG4FArIIUxJfA"}},654:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={section:"cAbGtJDGgLubucBnz7vM"}},6888:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={"section-hero":"vMa4i_Dza2t5Zi_Bw9Nf"}},2451:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={badge:"VLE2X0rP3Ug4QHebdiJd","is-success":"hEfxH6nau4tQkeE4BNms","is-warning":"Snl4I6aKbXFIrcWaSIC0","is-danger":"zvZFUdy480Xv3IHYbX6a"}},2258:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={button:"zI5tJ_qhWE6Oe6Lk75GY","is-icon-button":"tuBt2DLqimiImoqVzPqo",small:"Na39I683LAaSA99REg14",normal:"ipS7tKy9GntCS4R3vekF",icon:"paGLQwtPEaJmtArCcmyK",regular:"lZAo6_oGfclXOO9CC6Rd","full-width":"xJDOiJxTt0R_wSl8Ipz_",loading:"q_tVWqMjl39RcY6WtQA6","external-icon":"CDuBjJp_8jxzx5j6Nept"}},2127:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={cut:"msOlyh2T7D6uhbM6AROg",icon:"cPN7USVqSBpxUswfDtUZ",cta:"EmnJAyEzzn1QpA8HtypY",iconContainer:"vV7YZikAz0oHYsuvtxMq",description:"T1YaMupeZmBIpXZHY9EZ"}},6373:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={"diff-viewer":"HPsJA6B0f3Bd2tZgEr7v","diff-viewer__filename":"WA0OogO0bZSYbqUPL9aa","diff-viewer__file":"Z1NxA7aDh5LEYjbLLKbF","diff-viewer__line-numbers":"aeQS3Qb4g1FwDY0HaZKb","diff-viewer__lines":"ESXyHLdGmRLZMv7_Ei9d"}},3689:()=>{},4803:()=>{},2300:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={"star-icon":"cuoSlhSNrqf1dozY22Xb",jetpack:"lAIiifeLMmZAPlQ9n9ZR","checkmark-icon":"JLquNpQVlysAamuh5lJO",socialIcon:"cbOwD8Y4tFjwimmtchQI",bluesky:"aLWBKY0yRghEk7tNCgK3",facebook:"aHOlEBGD5EA8NKRw3xTw",instagram:"cL3m0xBYTYhIKI7lCqDB",twitter:"af4Y_zItXvLAOEoSDPSv",linkedin:"f68aqF3XSD1OBvXR1get",tumblr:"xFI0dt3UiXRlRQdqPWkx",google:"q7JEoyymveP6kF747M43",mastodon:"DKOBOTVmTLbh26gUH_73",nextdoor:"n5XodNsuMfMAAvqHFmbw",whatsapp:"fftumuc_lJ6v0tq4UMVR",threads:"inzgC27qxdt7hSdhTWRI"}},4206:()=>{},8403:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={sm:"(max-width: 599px)",md:"(min-width: 600px) and (max-width: 959px)",lg:"(min-width: 960px)"}},7371:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={sm:"(max-width: 599px)",md:"(min-width: 600px) and (max-width: 959px)",lg:"(min-width: 960px)",smCols:"4",mdCols:"8",lgCols:"12","col-sm-1":"RuVLl3q4lxTQa3wbhBJB","col-sm-1-start":"f9LZTRG4MMK42rS89afW","col-sm-1-end":"bHe_zKxjjpUwHw_MdYE1","col-sm-2":"QZbNrOqE2aNSn50xVhpU","col-sm-2-start":"ev7W3z7zVYPeHAlYqZjf","col-sm-2-end":"NJWd1m_e7lOiPYru2ZMP","col-sm-3":"Xc6nt1Qc1DI0Z2A3gt1r","col-sm-3-start":"UIcN_GXiPRoIsin8Kohg","col-sm-3-end":"GRKCyqb5LufCSCgykKFc","col-sm-4":"i_qTq8gqhhC3vIUepVRB","col-sm-4-start":"G3qaZ3Jpbvam_1XvGxgc","col-sm-4-end":"VRCNYKZtO9zukEwmgP1y","col-md-1":"tRm008K_WJL79WoNZTNL","col-md-1-start":"l5T2P_bgKts4tdaRkS1d","col-md-1-end":"zOCxfLZpF6BlgC7a_Yq1","col-md-2":"F80DdgVn0m5OpvtSQWka","col-md-2-start":"oI1c7JYfiJtMQHbhngtU","col-md-2-end":"pMQtA_4jh1_1lVknqEP5","col-md-3":"VenqMpdgyKQVUNNQcfqd","col-md-3-start":"seNYL99uoczf9V4MxBxT","col-md-3-end":"YKfF1HFhI9KygA5l3b2J","col-md-4":"yAi0Cv1xDWkoqsaUhvhR","col-md-4-start":"ubhnyZOnkgxNhh6XtVWv","col-md-4-end":"RGOPGQbWMJ9Ei5oFxS7X","col-md-5":"Sz1E2aWbX483ijdi6yge","col-md-5-start":"tku6_bRYrX9tMbgYGmIl","col-md-5-end":"b5JHttOhSEcI1WBlqAjk","col-md-6":"FboSx5MoKTAWbxXyYlCw","col-md-6-start":"Jhs8yEEmodG30edbJvag","col-md-6-end":"IpzbbKVqEqPcfIGkXkwt","col-md-7":"mhCPwfAZ4Kmm_empzJAq","col-md-7-start":"x034ilrJF7rO9UJB2rI1","col-md-7-end":"Wt8t2e16viRrOJ1lLA5v","col-md-8":"S6pIrEy9AMLKx9bgh_Ae","col-md-8-start":"kEfI4tGyuWfHTlRnvIab","col-md-8-end":"PUzX4RRsKq1dnsz3gebS","col-lg-1":"X_pdcLJikd8LS_YAdJlB","col-lg-1-start":"tl936d14Huby4khYp05X","col-lg-1-end":"hnge0LnR69d3NXEtEE1t","col-lg-2":"fj0NUMuyZQcPNgKcjp5Z","col-lg-2-start":"R2ncBX7a2NigdYCcV1OX","col-lg-2-end":"t8vMSDVYno9k9itRwnXb","col-lg-3":"wsDuEN2GqHx6qzo8dUdk","col-lg-3-start":"cIEVPUweWtLBy3xaXnMx","col-lg-3-end":"fajUWBwu1m2B479j3jmz","col-lg-4":"YR0c7fQTgMkDdWzwSyLp","col-lg-4-start":"xlwp8BmplxkKNMI7gamo","col-lg-4-end":"_C4O1w9DUqx1m3gPf8aA","col-lg-5":"Z54F1hAErckAIrKlxnXW","col-lg-5-start":"ezSDWkRHmKSxDJXxuiOH","col-lg-5-end":"T0ChoeAjGJjkkNrYhD4g","col-lg-6":"qtMoMPF6yHvGJnWHSsde","col-lg-6-start":"gdoywN5VPiWERfIBqkph","col-lg-6-end":"wUev_VH5uf_pwFFlbnAU","col-lg-7":"egIPDFJsOpownTClq9XP","col-lg-7-start":"yGhp9yoAW7k0kQik9AB7","col-lg-7-end":"SJ43U9mR5wUg5V2qBeQA","col-lg-8":"cTuyHfMwSUJxN_HdIEgd","col-lg-8-start":"smCr8DaIagcumdvdldiK","col-lg-8-end":"T03NHzQJvzwL6wAfIiTL","col-lg-9":"pMvxM3RJGjqyNdf9qg1Y","col-lg-9-start":"iIVpNRwEnQ_JI5gpp9EN","col-lg-9-end":"ZbQ4u4vGSX5rJOje4uGL","col-lg-10":"gKb5wuIDAlKGbrjK2vxy","col-lg-10-start":"Z7pINdImE2WJiYnZBTqm","col-lg-10-end":"ZTxp6qpvwurMdOnLLSz1","col-lg-11":"NnQTlbfnxPDR6cQ7rygg","col-lg-11-start":"O137wZd6Yl0olSA9PsXR","col-lg-11-end":"zf2OJtQ2MPz6SDoh6CB0","col-lg-12":"U3H6UHW6HqRt9hdzVg3O","col-lg-12-start":"zynnNeS_ZBTxABcVpUQH","col-lg-12-end":"vI8tltFZtFUNAy9Iag9s"}},2420:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={sm:"(max-width: 599px)",md:"(min-width: 600px) and (max-width: 959px)",lg:"(min-width: 960px)",container:"SqdhUZkXCRuIpErj1B3z",fluid:"OZC_9a1LhpWF9dv15Gdh"}},5531:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={"marked-lines":"SunkAzopVEoBZbCUFkpe","marked-lines__marked-line":"s6eJjt_RVhQ8mEG1qQYb","marked-lines__line-numbers":"cW2860S1RCjdsufX8ds_","marked-lines__line-number":"hU_xmjv3sGJgIvV_26Ik","marked-lines__lines":"O5ZaHoo1pFRkk_GUUczG","marked-lines__line":"UoS_E4HwI88HfDMpNtvB","marked-lines__mark":"ZotWIwUISq6XCpIyD8k7"}},7410:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={container:"VHYulMcpzbr10HWR0iSE","icon-wrapper":"FGpSkMCiIHQjszcV0dbn","close-button":"KoWZcCwhW13xvkEb0QON","main-content":"smrfczkC53EaFM8OJUXs",title:"IKYRWoPwt9xOVEx1wzNS","action-bar":"qM0qY6mPYp1MPN54A3Kg","is-error":"A5YkDkkXuiYgavrY6Nux",icon:"y_IPyP1wIAOhyNaqvXJq","is-warning":"cT5rwuPMZzWvi5o6shMl","is-info":"yo0O3uvNomPsYUXFCpAS","is-success":"oZdDFf1jBLkzn5ICCC6x"}},3142:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={container:"p4qz2tkq0p9hxucJ6Qk2",table:"lbNDyXioOwvyvbALtCBm","is-viewport-large":"s2Lsn4kbm6BrS3DSndRB",card:"cLaNK_XcbTGlRQ4Tp43Q","is-primary":"CYt1X0eH1icRjhtJ28jx",header:"DAkZc1P9A3K12fjEliMg",item:"WUBuYABl8nymjs9NnCEL","last-feature":"ANtCFeb41NhA8PA3H7ZN",value:"Ql2gy_148yW8Vw5vhaKD",icon:"EAQrAnQEW1z1BfdY5gbC","icon-check":"JDSTlLoOC_4aUoH2oNM2","icon-cross":"zNdQRJ1w7BvaQOYyqzHK",popover:"lr7vbX95SKtoe7DarJcZ","popover-icon":"KRrGp2xdkeBOxLZeuQ6X",tos:"H_ZJiRVJg0LiMXPGOcmt","tos-container":"x21z_DixObRDsDaWotP1"}},3407:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={container:"dovianZYLKhnbnh9I06o","price-container":"lljtQMhW7lq5tE5SDJEf","promo-label":"NubApIV1vQCRUNprfm6b",price:"dhFQXpZfMwVI8vuYHnwC","is-not-off-price":"eD7hzxFmdtG_MgmBtl_k",footer:"C64ZjjUAqJC1T2Sa7apS",legend:"UpZDGew6Ay1hPoP6eI7b",symbol:"TDiiPbuW1Z0_05u_pvcK"}},8325:()=>{},9439:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={wrapper:"VfIXL69k_I0zUU0s7LqM",horizontal:"SvvAonSzsVSo_5Hu6Goz",info:"dwXtyo4qYbpJ2b3rZL1N",label:"WxFqmtANZGuBRdR2NewQ",square:"ee2TJQm2FgpSRwchomAH",value:"mgcKzhKqFk7UOZ156QPT",icon:"h_uY7ygjuMtuY4ZWJz1R"}},416:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={status:"bZ4b33s2MdcOjaDKBbeV",status__indicator:"UzkzDaqt2mXprJh2OXRz",status__label:"QuS0vdcr87FsiBvSSrvA","is-active":"bGx0wbQAwuY7k8P3PHVQ","is-inactive":"wR8Cz8uHgObTQavolv5y","is-error":"IzbBYGwBKhSYFUQlIMww","is-action":"Kdvp_HJf89IBrZuCaLm8","is-initializing":"hVf5vsbBWm8OFye7cy7a"}},9634:()=>{},4495:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={reset:"WQVtrU6q0L1Igcj7wCrQ","headline-medium":"UujoBFTnQNY2cWU2SIsH","headline-small":"TeGO5V_thHw5lDAm1_2M","headline-small-regular":"WolQzb2MsSgiNmLtc7_j","title-medium":"hUB0JT8p1T2Hw28N6qC8","title-medium-semi-bold":"gKZWDv5chz3_O3Syp74H","title-small":"zY2No8Ga4b8shbOQGhnv",body:"tIj0D1t8Cc892ikmgFPZ","body-small":"KdcN0BnOaVeVhyLRKqhS","body-extra-small":"dso3Rh3tl3Xv1GumBktz","body-extra-small-bold":"mQ1UlbN9u4Mg9byO8m7v",label:"PItlW5vRExLnTj4a8eLE","m-0":"TwRpPlktzxhmFVeua7P5","mx-0":"zVfqx7gyb3o9mxfGynn1","my-0":"iSHVzNiB9iVleGljaQxy","mt-0":"xqDIp6cNVr_E6RXaiPyD","mr-0":"S8EwaXk1kyPizt6x4WH2","mb-0":"ODX5Vr1TARoLFkDDFooD","ml-0":"cphJ8dCpfimnky7P2FHg","m-1":"PFgIhNxIyiSuNvQjAIYj","mx-1":"M2jKmUzDxvJjjVEPU3zn","my-1":"io15gAh8tMTNbSEfwJKk","mt-1":"rcTN5uw9xIEeMEGL3Xi_","mr-1":"CQSkybjq2TcRM1Xo9COV","mb-1":"hfqOWgq6_MEGdFE82eOY","ml-1":"I8MxZQYTbuu595yfesWA","m-2":"kQkc6rmdpvLKPkyoJtVQ","mx-2":"j6vFPxWuu4Jan2ldoxpp","my-2":"hqr39dC4H_AbactPAkCG","mt-2":"c3dQnMi16C6J6Ecy4283","mr-2":"YNZmHOuRo6hU7zzKfPdP","mb-2":"Db8lbak1_wunpPk8NwKU","ml-2":"ftsYE5J9hLzquQ0tA5dY","m-3":"Det4MHzLUW7EeDnafPzq","mx-3":"h_8EEAztC29Vve1datb5","my-3":"YXIXJ0h1k47u6hzK8KcM","mt-3":"soADBBkcIKCBXzCTuV9_","mr-3":"zSX59ziEaEWGjnpZa4uV","mb-3":"yrVTnq_WBMbejg89c2ZQ","ml-3":"UKtHPJnI2cXBWtPDm5hM","m-4":"guexok_Tqd5Tf52hRlbT","mx-4":"oS1E2KfTBZkJ3F0tN7T6","my-4":"DN1OhhXi6AoBgEdDSbGd","mt-4":"ot2kkMcYHv53hLZ4LSn0","mr-4":"A1krOZZhlQ6Sp8Cy4bly","mb-4":"pkDbXXXL32237M0hokEh","ml-4":"XXv4kDTGvEnQeuGKOPU3","m-5":"yGqHk1a57gaISwkXwXe6","mx-5":"X8cghM358X3DkXLc9aNK","my-5":"GdfSmGwHlFnN2S6xBn1f","mt-5":"yqeuzwyGQ7zG0avrGqi_","mr-5":"g9emeCkuHvYhveiJbfXO","mb-5":"Lvk3dqcyHbZ07QCRlrUQ","ml-5":"r3yQECDQ9qX0XZzXlVAg","m-6":"aQhlPwht2Cz1X_63Miw0","mx-6":"JyHb0vK3wJgpblL9s5j8","my-6":"cY2gULL1lAv6WPNIRuf3","mt-6":"NBWQ9Lwhh_fnry3lg_p7","mr-6":"yIOniNe5E40C8fWvBm5V","mb-6":"t30usboNSyqfQWIwHvT3","ml-6":"Nm_TyFkYCMhOoghoToKJ","m-7":"C4qJKoBXpgKtpmrqtEKB","mx-7":"S93Srbu6NQ_PBr7DmTiD","my-7":"fJj8k6gGJDks3crUZxOS","mt-7":"cW6D6djs7Ppm7fD7TeoV","mr-7":"DuCnqNfcxcP3Z__Yo5Ro","mb-7":"im8407m2fw5vOg7O2zsw","ml-7":"G0fbeBgvz2sh3uTP9gNl","m-8":"kvW3sBCxRxUqz1jrVMJl","mx-8":"tOjEqjLONQdkiYx_XRnw","my-8":"op5hFSx318zgxsoZZNLN","mt-8":"c9WfNHP6TFKWIfLxv52J","mr-8":"sBA75QqcqRwwYSHJh2wc","mb-8":"GpL6idrXmSOM6jB8Ohsf","ml-8":"HbtWJoQwpgGycz8dGzeT","p-0":"uxX3khU88VQ_Ah49Ejsa","px-0":"KX0FhpBKwKzs9fOUdbNz","py-0":"PfK8vKDyN32dnimlzYjz","pt-0":"emxLHRjQuJsImnPbQIzE","pr-0":"kJ8WzlpTVgdViXt8ukP9","pb-0":"tg_UIUI11VBzrTAn2AzJ","pl-0":"uczvl8kaz84oPQJ2DB2R","p-1":"o7UHPcdVK3lt7q3lqV4o","px-1":"IDqEOxvDoYrFYxELPmtX","py-1":"DdywPW2qSYlu2pt8tpO2","pt-1":"npy3hw4A5QSkDicb2CJJ","pr-1":"LgbptTApNY5NwLQvEFAt","pb-1":"WZQy2SZuZso59bUsXXyl","pl-1":"o331apInxNunbYB3SfPE","p-2":"fMPIyD9Vqki1Lrc_yJnG","px-2":"i2pMcTcdrr10IQoiSm_L","py-2":"eA702gn32kwptiI1obXH","pt-2":"o9bGieUKcYc8o0Ij9oZX","pr-2":"SwZcFez1RDqWsOFjB5iG","pb-2":"eHpLc_idmuEqeqCTvqkN","pl-2":"vU39i2B4P1fUTMB2l6Vo","p-3":"JHWNzBnE29awhdu5BEh1","px-3":"X72lGbb56L3KFzC2xQ9N","py-3":"BzfNhRG8wXdCEB5ocQ6e","pt-3":"srV0KSDC83a2fiimSMMQ","pr-3":"lUWfkmbQjCskhcNwkyCm","pb-3":"Ts0dIlc3aTSL7V4cIHis","pl-3":"CzlqQXXhX6MvorArFZ8B","p-4":"TqMPkQtR_DdZuKb5vBoV","px-4":"a7UrjhI69Vetlcj9ZVzz","py-4":"StEhBzGs2Gi5dDEkjhAv","pt-4":"FGneZfZyvYrt1dG0zcnm","pr-4":"APEH216rpdlJWgD2fHc8","pb-4":"oGwXC3ohCic9XnAj6x69","pl-4":"U6gnT9y42ViPNOcNzBwb","p-5":"IpdRLBwnHqbqFrixgbYC","px-5":"HgNeXvkBa9o3bQ5fvFZm","py-5":"tJtFZM3XfPG9v9TSDfN1","pt-5":"PdifHW45QeXYfK568uD8","pr-5":"mbLkWTTZ0Za_BBbFZ5b2","pb-5":"vVWpZpLlWrkTt0hMk8XU","pl-5":"RxfaJj5a1Nt6IavEo5Zl","p-6":"SppJULDGdnOGcjZNCYBy","px-6":"palY2nLwdoyooPUm9Hhk","py-6":"WYw1JvZC0ppLdvSAPhr_","pt-6":"YEEJ9b90ueQaPfiU8aeN","pr-6":"QE0ssnsKvWJMqlhPbY5u","pb-6":"n8yA3jHlMRyLd5UIfoND","pl-6":"tXHmxYnHzbwtfxEaG51n","p-7":"kBTsPKkO_3g_tLkj77Um","px-7":"RyhrFx6Y1FGDrGAAyaxm","py-7":"CBwRpB0bDN3iEdQPPMJO","pt-7":"vQVSq6SvWKbOMu6r4H6b","pr-7":"oBy5__aEADMsH46mrgFX","pb-7":"KVEXoJqf1s92j0JMdNmN","pl-7":"ZMXGNrNaKW3k_3TLz0Fq","p-8":"tuiR9PhkHXhGyEgzRZRI","px-8":"U7454qyWkQNa2iaSJziu","py-8":"VLYIv2GVocjuN93e8HC8","pt-8":"X1rm9DQ1zLGLfogja5Gn","pr-8":"JS7G6kAuqJo5GIuF8S5t","pb-8":"Y8F9ga1TDCMbM1lj4gUz","pl-8":"AJuyNGrI63BOWql719H8"}},9422:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={global:"_fUXxnSp5pagKBp9gSN7"}},7021:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={toggle:"gecp_0Z0owRZtj8JAYir","is-small":"qgKXEdMmHsIK84VDnLO2","no-label":"Vy6dbB4PsGKm8BDqzJ9J","is-toggling":"ykWv7fKpkVW_vpAoddu4"}},1517:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={tab:"YXKeyNLeZvIdah_5_5GR",navigation:"vvXnRXxrU1kP1KsdSr4J",badge:"aDCTkUFaJEeZzYYE6qv5"}},6900:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={"header-main":"pVJWvyeviifcrLbZZxCj","header-secondary":"segmN0DtUjey3r5zVPON","heading-icon":"lolS8hq75wfk687xQjbY",subheading:"HC8zzYgv0GvkecCkpyld","connection-error-col":"XJqRbP_azFalXqUoYPtl"}},3902:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={"button-group":"XqQBRzrxyMhhZvPXIHgk"}},9370:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={loading:"kdsaL7c4bpTwf_A4fIUT",loading__message:"b0eN3as5AgxQW7EAkarg"}},2148:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={footer:"_Wc3apZobag_9Ag_THTb"}},8842:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={heading:"iN9oF7KagtrwaFKTquqW",warning:"IZTexE5bnJrB25jtwXBW","scan-navigation":"YzqaprEdVpBoBJesZixw"}},4047:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={list:"sQkG5Cu80gPaeFj3L_wa",footer:"oIl6GCMeUnzE0inXbuj9"}},2318:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={list:"RP2MVoGqaCFXPKZhhxQ1",footer:"YpEs8b7KE7fzVuXUbOEb"}},4493:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={accordion:"x8UuVEhWucPfdq0hEJg6","accordion-item":"eb6Ovfvm1yONz4mdOwbH","accordion-header":"jF9LXpXR3TxZVDw7TVXT","accordion-header-label":"lNQgAfpwdAUSOLZd8dlD","accordion-header-label-icon":"WRQwDYPdffWznX158azR","accordion-header-description":"dJx9pvlYjDnKn11n5wo8","accordion-header-button":"EKcbLuSblRc7UpzgsFXw","accordion-body":"ILMBWlMLcXc0n97IisrG","accordion-body-close":"T8XIzCNJBQy1UETN5gjU","accordion-body-open":"kWoHGiaZSbq9XJVyUOMC"}},4871:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={threat:"EqpwvErHtRi_WQkJKgi1",threat__icon:"EicvN1QaJu5OJLzdUN5A",threat__summary:"b7ynAmUwGlxK_vxyIN0y",threat__summary__label:"uSV9HYRxjL4S6zIZDlqP",threat__summary__title:"XpW8Mvw_XFEbqxUdw155",threat__severity:"Fkj60BmQ5sUo9zHcJwVv",footer:"XLzPr74ad3osCq9kxy2q"}},8044:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={inProgressAnimation:"AMcxtVDLtWB2EJJJU5NQ",inProgressAnimation__el:"vtViVIQmuI1n8HDxrkNy",inprogress:"BJ0WjZD0MlRR_Usu8HEd"}},7259:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={modal:"WtVEv641JBaLl929sZq2",modal__window:"G0aPt7WmA1rkUE0wcTno",modal__close:"VkrhWjfEIlIwYEumycbP",modal__close__icon:"yFzeV4cmWRbZKk5tIyEw"}},3066:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={navigation:"HQgjxePFDRJHamBAGcVU","navigation-item":"KtdsNIMumOoHNWMLmuAJ",clickable:"ewyV4ZGn34WDNXmK3ej2",selected:"owofT85W_XvVdb5vr1GN","navigation-item-label":"NESnw2xCLrBpP6WlYZL4","navigation-item-icon":"aohnd_y_1lrMuww8NH63","navigation-item-badge":"Rnas_2_2_eLZSYfZ347E","navigation-item-label-text":"m4_14yNRByDyO9yf9pGg","navigation-item-check-badge":"X8NRHUTBa_4wDvoHN9TT","navigation-item-info-badge":"CsuOteurQlJm4IjXqyZ0","navigation-group":"fvbewglUxEvV1o04yzzp","navigation-group-label":"DINy59MKjwiQanaoDTiV","navigation-group-content":"XoacHJljw8zRW_fkBSyg","navigation-group-list":"mXM4WZRePVTa07dhQ6MD","navigation-group-truncate":"sI3V8khLdCqxkhJQ_XnI","popover-text":"hgdxMuIvZwTZ0sfXaols","navigation-dropdown-button":"UErHS2HAh1gszGfYuVIf","navigation-dropdown-label":"lEhH1hvCcxLVFMHI8Gwv","navigation-dropdown-icon":"c57Vj4QhAHwcK_HZMxtN"}},600:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={notice:"_aiMxmJRAw5jRPbZFX57","notice--info":"eWgNBUaexiR66ZI1Px4U","notice--floating":"ZGELG1CO333FilJXOaeI",notice__icon:"BnI88X_e8ItF1c9Uozmj","notice--success":"hRRUwTCPRpurhMwRNZkg","notice--error":"Z6q3IxY_uR1y2lAPTkVF",notice__message:"ST8sowTbBVLRPrk4ZQrn",notice__close:"lMkO08Vd8YQMfwrwaI8u"}},7489:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={accordion:"sfXsfklfkeSRtE9ivQwF","accordion-item":"ozRrKPlj1QFGUyd3oVke","accordion-header":"PyvnSHQuuUkZvVsArigy","accordion-header-label":"u9Xod5s8bCRNj9MR1Drl","accordion-header-label-icon":"IbeyulkpO9kjYJ4OkYUD","accordion-header-description":"KiCgmjHm2f0JDU3cMsgf","accordion-header-status":"kh5zuLR1zNf7KCsxhAZ5","accordion-header-status-separator":"z1z63g62c73XbcPk9DWc","accordion-header-button":"kJ8t3FAtd5VAYjk31SfA","accordion-body":"JP0IJZcYRohfgntEozjm","accordion-body-close":"y7c6zi2wjEnbW3F29fmP","accordion-body-open":"wQWiN_J0SqgduvadyGnm","icon-check":"v1fUFCBPmd6miSCf_ehK","status-badge":"oR9QG6gRLvyzqiuIarmu",fixed:"bZ8KDXMWoim85Zv31E7E",ignored:"uYEkrN4rh8n5cs3aPrYC","is-fixed":"WOX88CWB12lzxcMcl_ns","support-link":"H2J5mHqyiBHXCAyZ4KGa","icon-tooltip":"BT16ByfO8ktYf15hbMG8","icon-tooltip__icon":"Gi6geVLkEyrClNXuJ34I","icon-tooltip__content":"Q02oRBdY3ZpNGOF2Y1iV"}},8744:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={"progress-bar":"vzMlFr1AXWqefpRrb976","progress-bar__wrapper":"gYSOMa4xxLXmsNzvFPkW","progress-bar__bar":"hNJWdt5qmZkWYAH_vjIp","progress-bar__percent":"DHMUfGyHbl5BgD5vjxVz"}},1847:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={mark:"jNlU3vgp4xEGwmX5aTyK",list:"gE8s4nh3f7iGIBrFeyCT"}},4356:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={tabs:"lyrXe0pA852TUmyekDb5",tab:"KgEeDTKgTC5ZjzYlbTqN","tab--active":"Lv4WoNVkeJntqvUyG4dX"}},6578:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={textarea:"rigH8UdiDrmmSLQMUurD",label:"V8FDM08CpcwQs4UwN2nI"}},9054:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={threat:"NHzH3tt6CypjZ92CvK9x",threat__icon:"D9zvYDUrOP_zwSm0yJMs",threat__summary:"_XISfmbjoVlqhB61hHYn",threat__summary__label:"AQDPBnMZFu7BOBuo8mYW",threat__summary__title:"cZ9s5eCAZe3R82Y6Ru3z",threat__severity:"AKnbWQiViZ2O_dwCV8Fw",threat__checkbox:"W6alQ2_S5Rh06djX9m27"}},1476:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={empty:"OtDl6kocO_m2s9sRHaqX","threat-section":"BjwJh1S1YVPI7AjmTx6a","threat-filename":"YWfK8VTp2wnByBauYPKg","threat-footer":"pkw2LnOTd8VvQ3oT8sXQ","threat-item-cta":"ap6lG79CncSqdigJS_WA","list-header":"uym7dGHhp6ifjF57yOAO","list-title":"e_2eFTR8RyHwmfeqJL4F","list-header__controls":"IKQVU01PrDMMV5UFLOKv","accordion-header":"qazuloIt0teplSEwxRN0","manual-scan":"iJ_biSBRDribuNKX0Zuw","pagination-container":"v640YfEL85A9rCvyHSzW",unfocused:"gfxpe4zp6ShFsIsce8Ii"}},6834:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={threat:"L9hh_sX51PzO41icwJlh",threat__icon:"o8E4Bv6U0d7USFxSjRCj",threat__summary:"sT31awD6bHO8KJewvmaO",threat__summary__label:"VVTRIG51r8ORUIBPs5gN",threat__summary__title:"AiaWRbRLFT9xvP9vn5jA",threat__severity:"MP1wWkqvqfvAc7Izl7x4",footer:"i9X_KxEJiGpRT7q_RU6i"}},8340:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={footer:"uUEJGMrSV3XoBwX5xEwA"}},7642:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={container:"L1LjeCYPldBcTLILS13l","toggle-section":"JWWznnb8sAKHIOhE59_z","toggle-section__control":"kV5wl2UResIqqBdSTuQr","toggle-section__content":"oePuSIKcH_JzEhDJcHh8","toggle-section__title":"mxYw7vghJF8H8C0FjvPz","toggle-section--disabled":"lyiOCAyjT_eQyDg8Ier_","toggle-section__details":"IclfL4iNXTZfBAbHZdog","automatic-rules-stats":"bOadM4auwszaOl0el95T","automatic-rules-stats__version":"G7vkgqk8AEd6pRbNUyE4","automatic-rules-stats__last-updated":"qnlbRElIsj4nB45F5s3a","automatic-rules-stats__failed-install":"TvvdPGzRa_ubn3BnQOnQ","upgrade-trigger-section":"yAFMUkq1ot9DZF05RUwG","upgrade-prompt-button":"qoajQ2Ew8eYJgdbssSg9",badge:"EbfrbByI7NQ2_MD_gDXp",popover:"hCwaBLH_6dELyWWwB8S1",popover__header:"V3U9oKSdRmKjOQ523C86",popover__button:"OSrT4pA4vIGzg9EE6rcv",popover__footer:"rbL50q3wwzE6X7VBHcmW","allow-list-current-ip":"g593fzjQCE_4rNiiwLdg","allow-list-button-container":"CIp_BwDbLdjYPSVrreqg","block-list-button-container":"m2epTt5F7wBQNcMdguwQ",divider:"HrEvG7sxsWbTLD0sk477","popover-text":"WIttYmnC0O4JKFyPgkTW","firewall-subheading":"p1_cy4ERoY1_uwtgq3Tn","stat-card-wrapper":"ehnXRuGNl9ZnPh6c1Pa3",disabled:"q8mOIlVn7qA44s7ysC5Z","stat-card-icon":"IxCDeZ2a0wRu3AQbqGuG","stat-card-label":"YIQOtwFZuyfirlpFfjDb","share-data-section":"x8nPhsBEpxvgCxHNbCXo","share-data-toggle":"b_pwVVOoMN73AXhJNbgr","icon-tooltip":"MWO4b3hqGdH8p1Vt9zmQ","icon-tooltip__icon":"DuflEZ86axRQGuMhmH3n","icon-tooltip__content":"ywr2PcNYcX5_sEzdvHAS",footer:"e_wseeb7HqoyLjv9N_ww","standalone-mode":"nxtQ3M8WCX69d_NjShwZ","share-data":"mzfjOg8s_uehdCmNjX0P"}},5960:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={empty:"KmIjHqrMs3duMPaUf50k","subheading-content":"bpW3MfTt3siOyvw1ZsuF","list-header":"DJS67UCXVaM7nIMJePYQ","list-title":"s4378tf2MiM0bMIxQZkI","list-header__controls":"jifq7nsF5kZYrcpGQ35V","scan-navigation":"yjKVIZH3KLvJeygIzaZn"}},6359:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={"subheading-content":"WjKn66iJO4hAZYE6o9b3","product-section":"IS5K46VvD7VX5YtlwbMI","info-section":"eDfoDi2nArFY_KiYIwKh","scan-navigation":"XKUO6pX9vFbOUplFfCW2"}},3961:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});const n={"protect-header":"T1f6nRmWifz5im6hB29M","get-started-button":"Ki7ehROrWxWBIMIt8SUH"}},5490:()=>{},4997:e=>{var t=1e3,a=60*t,n=60*a,r=24*n,c=7*r,s=365.25*r;function i(e,t,a,n){var r=t>=1.5*a;return Math.round(e/a)+" "+n+(r?"s":"")}e.exports=function(e,o){o=o||{};var l=typeof e;if("string"===l&&e.length>0)return function(e){if((e=String(e)).length>100)return;var i=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!i)return;var o=parseFloat(i[1]);switch((i[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return o*s;case"weeks":case"week":case"w":return o*c;case"days":case"day":case"d":return o*r;case"hours":case"hour":case"hrs":case"hr":case"h":return o*n;case"minutes":case"minute":case"mins":case"min":case"m":return o*a;case"seconds":case"second":case"secs":case"sec":case"s":return o*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return o;default:return}}(e);if("number"===l&&isFinite(e))return o.long?function(e){var c=Math.abs(e);if(c>=r)return i(e,c,r,"day");if(c>=n)return i(e,c,n,"hour");if(c>=a)return i(e,c,a,"minute");if(c>=t)return i(e,c,t,"second");return e+" ms"}(e):function(e){var c=Math.abs(e);if(c>=r)return Math.round(e/r)+"d";if(c>=n)return Math.round(e/n)+"h";if(c>=a)return Math.round(e/a)+"m";if(c>=t)return Math.round(e/t)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},5762:(e,t,a)=>{"use strict";var n=a(3761);function r(){}function c(){}c.resetWarningCache=r,e.exports=function(){function e(e,t,a,r,c,s){if(s!==n){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var a={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:c,resetWarningCache:r};return a.PropTypes=a,a}},8120:(e,t,a)=>{e.exports=a(5762)()},3761:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},28:(e,t,a)=>{"use strict";a.d(t,{I9:()=>m,k2:()=>f});var n=a(1609),r=a(5795),c=a(9539),s=a(6992);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(r[a]=e[a]);return r}new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);const l=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],u=["aria-current","caseSensitive","className","end","style","to","viewTransition","children"];try{window.__reactRouterVersion="6"}catch(e){}const d=n.createContext({isTransitioning:!1});new Map;const p=n.startTransition;r.flushSync,n.useId;function m(e){let{basename:t,children:a,future:r,window:i}=e,o=n.useRef();null==o.current&&(o.current=(0,s.TM)({window:i,v5Compat:!0}));let l=o.current,[u,d]=n.useState({action:l.action,location:l.location}),{v7_startTransition:m}=r||{},h=n.useCallback((e=>{m&&p?p((()=>d(e))):d(e)}),[d,m]);return n.useLayoutEffect((()=>l.listen(h)),[l,h]),n.useEffect((()=>(0,c.V8)(r)),[r]),n.createElement(c.Ix,{basename:t,children:a,location:u.location,navigationType:u.action,navigator:l,future:r})}const h="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,g=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,v=n.forwardRef((function(e,t){let a,{onClick:r,relative:u,reloadDocument:d,replace:p,state:m,target:v,to:f,preventScrollReset:y,viewTransition:E}=e,A=o(e,l),{basename:b}=n.useContext(c.jb),w=!1;if("string"==typeof f&&g.test(f)&&(a=f,h))try{let e=new URL(window.location.href),t=f.startsWith("//")?new URL(e.protocol+f):new URL(f),a=(0,s.pb)(t.pathname,b);t.origin===e.origin&&null!=a?f=a+t.search+t.hash:w=!0}catch(e){}let k=(0,c.$P)(f,{relative:u}),R=function(e,t){let{target:a,replace:r,state:i,preventScrollReset:o,relative:l,viewTransition:u}=void 0===t?{}:t,d=(0,c.Zp)(),p=(0,c.zy)(),m=(0,c.x$)(e,{relative:l});return n.useCallback((t=>{if(function(e,t){return!(0!==e.button||t&&"_self"!==t||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e))}(t,a)){t.preventDefault();let a=void 0!==r?r:(0,s.AO)(p)===(0,s.AO)(m);d(e,{replace:a,state:i,preventScrollReset:o,relative:l,viewTransition:u})}}),[p,d,m,r,i,a,e,o,l,u])}(f,{replace:p,state:m,target:v,preventScrollReset:y,relative:u,viewTransition:E});return n.createElement("a",i({},A,{href:a||k,onClick:w||d?r:function(e){r&&r(e),e.defaultPrevented||R(e)},ref:t,target:v}))}));const f=n.forwardRef((function(e,t){let{"aria-current":a="page",caseSensitive:r=!1,className:l="",end:p=!1,style:m,to:h,viewTransition:g,children:f}=e,E=o(e,u),b=(0,c.x$)(h,{relative:E.relative}),w=(0,c.zy)(),k=n.useContext(c.Rq),{navigator:R,basename:C}=n.useContext(c.jb),_=null!=k&&function(e,t){void 0===t&&(t={});let a=n.useContext(d);null==a&&(0,s.Oi)(!1);let{basename:r}=A(y.useViewTransitionState),i=(0,c.x$)(e,{relative:t.relative});if(!a.isTransitioning)return!1;let o=(0,s.pb)(a.currentLocation.pathname,r)||a.currentLocation.pathname,l=(0,s.pb)(a.nextLocation.pathname,r)||a.nextLocation.pathname;return null!=(0,s.B6)(i.pathname,l)||null!=(0,s.B6)(i.pathname,o)}(b)&&!0===g,j=R.encodeLocation?R.encodeLocation(b).pathname:b.pathname,x=w.pathname,S=k&&k.navigation&&k.navigation.location?k.navigation.location.pathname:null;r||(x=x.toLowerCase(),S=S?S.toLowerCase():null,j=j.toLowerCase()),S&&C&&(S=(0,s.pb)(S,C)||S);const M="/"!==j&&j.endsWith("/")?j.length-1:j.length;let N,L=x===j||!p&&x.startsWith(j)&&"/"===x.charAt(M),P=null!=S&&(S===j||!p&&S.startsWith(j)&&"/"===S.charAt(j.length)),z={isActive:L,isPending:P,isTransitioning:_},O=L?a:void 0;N="function"==typeof l?l(z):[l,L?"active":null,P?"pending":null,_?"transitioning":null].filter(Boolean).join(" ");let I="function"==typeof m?m(z):m;return n.createElement(v,i({},E,{"aria-current":O,className:N,ref:t,style:I,to:h,viewTransition:g}),"function"==typeof f?f(z):f)}));var y,E;function A(e){let t=n.useContext(c.sp);return t||(0,s.Oi)(!1),t}(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(y||(y={})),function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"}(E||(E={}))},9539:(e,t,a)=>{"use strict";a.d(t,{$P:()=>p,BV:()=>F,C5:()=>z,Ix:()=>I,Rq:()=>i,V8:()=>P,Zp:()=>v,g:()=>f,jb:()=>o,qh:()=>O,sp:()=>s,x$:()=>y,zy:()=>h});var n=a(1609),r=a(6992);function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t{a.current=!0})),n.useCallback((function(n,r){void 0===r&&(r={}),a.current&&("number"==typeof n?e.navigate(n):e.navigate(n,c({fromRouteId:t},r)))}),[e,t])}():function(){m()||(0,r.Oi)(!1);let e=n.useContext(s),{basename:t,future:a,navigator:c}=n.useContext(o),{matches:i}=n.useContext(u),{pathname:l}=h(),d=JSON.stringify((0,r.yD)(i,a.v7_relativeSplatPath)),p=n.useRef(!1);return g((()=>{p.current=!0})),n.useCallback((function(a,n){if(void 0===n&&(n={}),!p.current)return;if("number"==typeof a)return void c.go(a);let s=(0,r.Gh)(a,JSON.parse(d),l,"path"===n.relative);null==e&&"/"!==t&&(s.pathname="/"===s.pathname?t:(0,r.HS)([t,s.pathname])),(n.replace?c.replace:c.push)(s,n.state,n)}),[t,c,d,l,e])}()}function f(){let{matches:e}=n.useContext(u),t=e[e.length-1];return t?t.params:{}}function y(e,t){let{relative:a}=void 0===t?{}:t,{future:c}=n.useContext(o),{matches:s}=n.useContext(u),{pathname:i}=h(),l=JSON.stringify((0,r.yD)(s,c.v7_relativeSplatPath));return n.useMemo((()=>(0,r.Gh)(e,JSON.parse(l),i,"path"===a)),[e,l,i,a])}function E(e,t,a,s){m()||(0,r.Oi)(!1);let{navigator:i}=n.useContext(o),{matches:d}=n.useContext(u),p=d[d.length-1],g=p?p.params:{},v=(p&&p.pathname,p?p.pathnameBase:"/");p&&p.route;let f,y=h();if(t){var E;let e="string"==typeof t?(0,r.Rr)(t):t;"/"===v||(null==(E=e.pathname)?void 0:E.startsWith(v))||(0,r.Oi)(!1),f=e}else f=y;let A=f.pathname||"/",b=A;if("/"!==v){let e=v.replace(/^\//,"").split("/");b="/"+A.replace(/^\//,"").split("/").slice(e.length).join("/")}let w=(0,r.ue)(e,{pathname:b});let k=R(w&&w.map((e=>Object.assign({},e,{params:Object.assign({},g,e.params),pathname:(0,r.HS)([v,i.encodeLocation?i.encodeLocation(e.pathname).pathname:e.pathname]),pathnameBase:"/"===e.pathnameBase?v:(0,r.HS)([v,i.encodeLocation?i.encodeLocation(e.pathnameBase).pathname:e.pathnameBase])}))),d,a,s);return t&&k?n.createElement(l.Provider,{value:{location:c({pathname:"/",search:"",hash:"",state:null,key:"default"},f),navigationType:r.rc.Pop}},k):k}function A(){let e=function(){var e;let t=n.useContext(d),a=x(_.UseRouteError),r=S(_.UseRouteError);if(void 0!==t)return t;return null==(e=a.errors)?void 0:e[r]}(),t=(0,r.pX)(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),a=e instanceof Error?e.stack:null,c="rgba(200,200,200, 0.5)",s={padding:"0.5rem",backgroundColor:c};return n.createElement(n.Fragment,null,n.createElement("h2",null,"Unexpected Application Error!"),n.createElement("h3",{style:{fontStyle:"italic"}},t),a?n.createElement("pre",{style:s},a):null,null)}const b=n.createElement(A,null);class w extends n.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||"idle"!==t.revalidation&&"idle"===e.revalidation?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:void 0!==e.error?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){console.error("React Router caught the following error during render",e,t)}render(){return void 0!==this.state.error?n.createElement(u.Provider,{value:this.props.routeContext},n.createElement(d.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function k(e){let{routeContext:t,match:a,children:r}=e,c=n.useContext(s);return c&&c.static&&c.staticContext&&(a.route.errorElement||a.route.ErrorBoundary)&&(c.staticContext._deepestRenderedBoundaryId=a.route.id),n.createElement(u.Provider,{value:t},r)}function R(e,t,a,c){var s;if(void 0===t&&(t=[]),void 0===a&&(a=null),void 0===c&&(c=null),null==e){var i;if(!a)return null;if(a.errors)e=a.matches;else{if(!(null!=(i=c)&&i.v7_partialHydration&&0===t.length&&!a.initialized&&a.matches.length>0))return null;e=a.matches}}let o=e,l=null==(s=a)?void 0:s.errors;if(null!=l){let e=o.findIndex((e=>e.route.id&&void 0!==(null==l?void 0:l[e.route.id])));e>=0||(0,r.Oi)(!1),o=o.slice(0,Math.min(o.length,e+1))}let u=!1,d=-1;if(a&&c&&c.v7_partialHydration)for(let e=0;e=0?o.slice(0,d+1):[o[0]];break}}}return o.reduceRight(((e,r,c)=>{let s,i=!1,p=null,m=null;var h;a&&(s=l&&r.route.id?l[r.route.id]:void 0,p=r.route.errorElement||b,u&&(d<0&&0===c?(h="route-fallback",!1||M[h]||(M[h]=!0),i=!0,m=null):d===c&&(i=!0,m=r.route.hydrateFallbackElement||null)));let g=t.concat(o.slice(0,c+1)),v=()=>{let t;return t=s?p:i?m:r.route.Component?n.createElement(r.route.Component,null):r.route.element?r.route.element:e,n.createElement(k,{match:r,routeContext:{outlet:e,matches:g,isDataRoute:null!=a},children:t})};return a&&(r.route.ErrorBoundary||r.route.errorElement||0===c)?n.createElement(w,{location:a.location,revalidation:a.revalidation,component:p,error:s,children:v(),routeContext:{outlet:null,matches:g,isDataRoute:!0}}):v()}),null)}var C=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(C||{}),_=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(_||{});function j(e){let t=n.useContext(s);return t||(0,r.Oi)(!1),t}function x(e){let t=n.useContext(i);return t||(0,r.Oi)(!1),t}function S(e){let t=function(){let e=n.useContext(u);return e||(0,r.Oi)(!1),e}(),a=t.matches[t.matches.length-1];return a.route.id||(0,r.Oi)(!1),a.route.id}const M={};const N={};const L=(e,t,a)=>{var n;N[n="⚠️ React Router Future Flag Warning: "+t+". You can use the `"+e+"` future flag to opt-in early. For more information, see "+a+"."]||(N[n]=!0,console.warn(n))};function P(e,t){void 0===(null==e?void 0:e.v7_startTransition)&&L("v7_startTransition","React Router will begin wrapping state updates in `React.startTransition` in v7","https://reactrouter.com/v6/upgrading/future#v7_starttransition"),void 0!==(null==e?void 0:e.v7_relativeSplatPath)||t&&t.v7_relativeSplatPath||L("v7_relativeSplatPath","Relative route resolution within Splat routes is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath"),t&&(void 0===t.v7_fetcherPersist&&L("v7_fetcherPersist","The persistence behavior of fetchers is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist"),void 0===t.v7_normalizeFormMethod&&L("v7_normalizeFormMethod","Casing of `formMethod` fields is being normalized to uppercase in v7","https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod"),void 0===t.v7_partialHydration&&L("v7_partialHydration","`RouterProvider` hydration behavior is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_partialhydration"),void 0===t.v7_skipActionErrorRevalidation&&L("v7_skipActionErrorRevalidation","The revalidation behavior after 4xx/5xx `action` responses is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation"))}n.startTransition;function z(e){let{to:t,replace:a,state:c,relative:s}=e;m()||(0,r.Oi)(!1);let{future:i,static:l}=n.useContext(o),{matches:d}=n.useContext(u),{pathname:p}=h(),g=v(),f=(0,r.Gh)(t,(0,r.yD)(d,i.v7_relativeSplatPath),p,"path"===s),y=JSON.stringify(f);return n.useEffect((()=>g(JSON.parse(y),{replace:a,state:c,relative:s})),[g,y,s,a,c]),null}function O(e){(0,r.Oi)(!1)}function I(e){let{basename:t="/",children:a=null,location:s,navigationType:i=r.rc.Pop,navigator:u,static:d=!1,future:p}=e;m()&&(0,r.Oi)(!1);let h=t.replace(/^\/*/,"/"),g=n.useMemo((()=>({basename:h,navigator:u,static:d,future:c({v7_relativeSplatPath:!1},p)})),[h,p,u,d]);"string"==typeof s&&(s=(0,r.Rr)(s));let{pathname:v="/",search:f="",hash:y="",state:E=null,key:A="default"}=s,b=n.useMemo((()=>{let e=(0,r.pb)(v,h);return null==e?null:{location:{pathname:e,search:f,hash:y,state:E,key:A},navigationType:i}}),[h,v,f,y,E,A,i]);return null==b?null:n.createElement(o.Provider,{value:g},n.createElement(l.Provider,{children:a,value:b}))}function F(e){let{children:t,location:a}=e;return E(V(t),a)}new Promise((()=>{}));n.Component;function V(e,t){void 0===t&&(t=[]);let a=[];return n.Children.forEach(e,((e,c)=>{if(!n.isValidElement(e))return;let s=[...t,c];if(e.type===n.Fragment)return void a.push.apply(a,V(e.props.children,s));e.type!==O&&(0,r.Oi)(!1),e.props.index&&e.props.children&&(0,r.Oi)(!1);let i={id:e.props.id||s.join("-"),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,loader:e.props.loader,action:e.props.action,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:null!=e.props.ErrorBoundary||null!=e.props.errorElement,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(i.children=V(e.props.children,s)),a.push(i)})),a}},372:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var n=a(6941);const r=a.n(n)()("dops:analytics");let c,s;window._tkq=window._tkq||[],window.ga=window.ga||function(){(window.ga.q=window.ga.q||[]).push(arguments)},window.ga.l=+new Date;const i={initialize:function(e,t,a){i.setUser(e,t),i.setSuperProps(a),i.identifyUser()},setGoogleAnalyticsEnabled:function(e,t=null){this.googleAnalyticsEnabled=e,this.googleAnalyticsKey=t},setMcAnalyticsEnabled:function(e){this.mcAnalyticsEnabled=e},setUser:function(e,t){s={ID:e,username:t}},setSuperProps:function(e){c=e},assignSuperProps:function(e){c=Object.assign(c||{},e)},mc:{bumpStat:function(e,t){const a=function(e,t){let a="";if("object"==typeof e){for(const t in e)a+="&x_"+encodeURIComponent(t)+"="+encodeURIComponent(e[t]);r("Bumping stats %o",e)}else a="&x_"+encodeURIComponent(e)+"="+encodeURIComponent(t),r('Bumping stat "%s" in group "%s"',t,e);return a}(e,t);i.mcAnalyticsEnabled&&((new Image).src=document.location.protocol+"//pixel.wp.com/g.gif?v=wpcom-no-pv"+a+"&t="+Math.random())},bumpStatWithPageView:function(e,t){const a=function(e,t){let a="";if("object"==typeof e){for(const t in e)a+="&"+encodeURIComponent(t)+"="+encodeURIComponent(e[t]);r("Built stats %o",e)}else a="&"+encodeURIComponent(e)+"="+encodeURIComponent(t),r('Built stat "%s" in group "%s"',t,e);return a}(e,t);i.mcAnalyticsEnabled&&((new Image).src=document.location.protocol+"//pixel.wp.com/g.gif?v=wpcom"+a+"&t="+Math.random())}},pageView:{record:function(e,t){i.tracks.recordPageView(e),i.ga.recordPageView(e,t)}},purchase:{record:function(e,t,a,n,r,c,s){i.ga.recordPurchase(e,t,a,n,r,c,s)}},tracks:{recordEvent:function(e,t){t=t||{},0===e.indexOf("akismet_")||0===e.indexOf("jetpack_")?(c&&(r("- Super Props: %o",c),t=Object.assign(t,c)),r('Record event "%s" called with props %s',e,JSON.stringify(t)),window._tkq.push(["recordEvent",e,t])):r('- Event name must be prefixed by "akismet_" or "jetpack_"')},recordJetpackClick:function(e){const t="object"==typeof e?e:{target:e};i.tracks.recordEvent("jetpack_wpa_click",t)},recordPageView:function(e){i.tracks.recordEvent("akismet_page_view",{path:e})},setOptOut:function(e){r("Pushing setOptOut: %o",e),window._tkq.push(["setOptOut",e])}},ga:{initialized:!1,initialize:function(){let e={};i.ga.initialized||(s&&(e={userId:"u-"+s.ID}),window.ga("create",this.googleAnalyticsKey,"auto",e),i.ga.initialized=!0)},recordPageView:function(e,t){i.ga.initialize(),r("Recording Page View ~ [URL: "+e+"] [Title: "+t+"]"),this.googleAnalyticsEnabled&&(window.ga("set","page",e),window.ga("send",{hitType:"pageview",page:e,title:t}))},recordEvent:function(e,t,a,n){i.ga.initialize();let c="Recording Event ~ [Category: "+e+"] [Action: "+t+"]";void 0!==a&&(c+=" [Option Label: "+a+"]"),void 0!==n&&(c+=" [Option Value: "+n+"]"),r(c),this.googleAnalyticsEnabled&&window.ga("send","event",e,t,a,n)},recordPurchase:function(e,t,a,n,r,c,s){window.ga("require","ecommerce"),window.ga("ecommerce:addTransaction",{id:e,revenue:n,currency:s}),window.ga("ecommerce:addItem",{id:e,name:t,sku:a,price:r,quantity:c}),window.ga("ecommerce:send")}},identifyUser:function(){s&&window._tkq.push(["identifyUser",s.ID,s.username])},setProperties:function(e){window._tkq.push(["setProperties",e])},clearedIdentity:function(){window._tkq.push(["clearIdentity"])}},o=i},5932:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>d});var n=a(6439),r=a(3832);function c(e){class t extends Error{constructor(...t){super(...t),this.name=e}}return t}const s=c("JsonParseError"),i=c("JsonParseAfterRedirectError"),o=c("Api404Error"),l=c("Api404AfterRedirectError"),u=c("FetchNetworkError");const d=new function(e,t){let a=e,c=e,s={"X-WP-Nonce":t},i={credentials:"same-origin",headers:s},o={method:"post",credentials:"same-origin",headers:Object.assign({},s,{"Content-type":"application/json"})},l=function(e){const t=e.split("?"),a=t.length>1?t[1]:"",n=a.length?a.split("&"):[];return n.push("_cacheBuster="+(new Date).getTime()),t[0]+"?"+n.join("&")};const u={setApiRoot(e){a=e},setWpcomOriginApiUrl(e){c=e},setApiNonce(e){s={"X-WP-Nonce":e},i={credentials:"same-origin",headers:s},o={method:"post",credentials:"same-origin",headers:Object.assign({},s,{"Content-type":"application/json"})}},setCacheBusterCallback:e=>{l=e},registerSite:(e,t,r)=>{const c={};return(0,n.jetpackConfigHas)("consumer_slug")&&(c.plugin_slug=(0,n.jetpackConfigGet)("consumer_slug")),null!==t&&(c.redirect_uri=t),r&&(c.from=r),h(`${a}jetpack/v4/connection/register`,o,{body:JSON.stringify(c)}).then(p).then(m)},fetchAuthorizationUrl:e=>d((0,r.addQueryArgs)(`${a}jetpack/v4/connection/authorize_url`,{no_iframe:"1",redirect_uri:e}),i).then(p).then(m),fetchSiteConnectionData:()=>d(`${a}jetpack/v4/connection/data`,i).then(m),fetchSiteConnectionStatus:()=>d(`${a}jetpack/v4/connection`,i).then(m),fetchSiteConnectionTest:()=>d(`${a}jetpack/v4/connection/test`,i).then(p).then(m),fetchUserConnectionData:()=>d(`${a}jetpack/v4/connection/data`,i).then(m),fetchUserTrackingSettings:()=>d(`${a}jetpack/v4/tracking/settings`,i).then(p).then(m),updateUserTrackingSettings:e=>h(`${a}jetpack/v4/tracking/settings`,o,{body:JSON.stringify(e)}).then(p).then(m),disconnectSite:()=>h(`${a}jetpack/v4/connection`,o,{body:JSON.stringify({isActive:!1})}).then(p).then(m),fetchConnectUrl:()=>d(`${a}jetpack/v4/connection/url`,i).then(p).then(m),unlinkUser:(e=!1,t={})=>{const n={linked:!1,force:!!e};return t.disconnectAllUsers&&(n["disconnect-all-users"]=!0),h(`${a}jetpack/v4/connection/user`,o,{body:JSON.stringify(n)}).then(p).then(m)},reconnect:()=>h(`${a}jetpack/v4/connection/reconnect`,o).then(p).then(m),fetchConnectedPlugins:()=>d(`${a}jetpack/v4/connection/plugins`,i).then(p).then(m),setHasSeenWCConnectionModal:()=>h(`${a}jetpack/v4/seen-wc-connection-modal`,o).then(p).then(m),fetchModules:()=>d(`${a}jetpack/v4/module/all`,i).then(p).then(m),fetchModule:e=>d(`${a}jetpack/v4/module/${e}`,i).then(p).then(m),activateModule:e=>h(`${a}jetpack/v4/module/${e}/active`,o,{body:JSON.stringify({active:!0})}).then(p).then(m),deactivateModule:e=>h(`${a}jetpack/v4/module/${e}/active`,o,{body:JSON.stringify({active:!1})}),updateModuleOptions:(e,t)=>h(`${a}jetpack/v4/module/${e}`,o,{body:JSON.stringify(t)}).then(p).then(m),updateSettings:e=>h(`${a}jetpack/v4/settings`,o,{body:JSON.stringify(e)}).then(p).then(m),getProtectCount:()=>d(`${a}jetpack/v4/module/protect/data`,i).then(p).then(m),resetOptions:e=>h(`${a}jetpack/v4/options/${e}`,o,{body:JSON.stringify({reset:!0})}).then(p).then(m),activateVaultPress:()=>h(`${a}jetpack/v4/plugins`,o,{body:JSON.stringify({slug:"vaultpress",status:"active"})}).then(p).then(m),getVaultPressData:()=>d(`${a}jetpack/v4/module/vaultpress/data`,i).then(p).then(m),installPlugin:(e,t)=>{const n={slug:e,status:"active"};return t&&(n.source=t),h(`${a}jetpack/v4/plugins`,o,{body:JSON.stringify(n)}).then(p).then(m)},activateAkismet:()=>h(`${a}jetpack/v4/plugins`,o,{body:JSON.stringify({slug:"akismet",status:"active"})}).then(p).then(m),getAkismetData:()=>d(`${a}jetpack/v4/module/akismet/data`,i).then(p).then(m),checkAkismetKey:()=>d(`${a}jetpack/v4/module/akismet/key/check`,i).then(p).then(m),checkAkismetKeyTyped:e=>h(`${a}jetpack/v4/module/akismet/key/check`,o,{body:JSON.stringify({api_key:e})}).then(p).then(m),getFeatureTypeStatus:e=>d(`${a}jetpack/v4/feature/${e}`,i).then(p).then(m),fetchStatsData:e=>d(function(e){let t=`${a}jetpack/v4/module/stats/data`;-1!==t.indexOf("?")?t+=`&range=${encodeURIComponent(e)}`:t+=`?range=${encodeURIComponent(e)}`;return t}(e),i).then(p).then(m).then(v),getPluginUpdates:()=>d(`${a}jetpack/v4/updates/plugins`,i).then(p).then(m),getPlans:()=>d(`${a}jetpack/v4/plans`,i).then(p).then(m),fetchSettings:()=>d(`${a}jetpack/v4/settings`,i).then(p).then(m),updateSetting:e=>h(`${a}jetpack/v4/settings`,o,{body:JSON.stringify(e)}).then(p).then(m),fetchSiteData:()=>d(`${a}jetpack/v4/site`,i).then(p).then(m).then((e=>JSON.parse(e.data))),fetchSiteFeatures:()=>d(`${a}jetpack/v4/site/features`,i).then(p).then(m).then((e=>JSON.parse(e.data))),fetchSiteProducts:()=>d(`${a}jetpack/v4/site/products`,i).then(p).then(m),fetchSitePurchases:()=>d(`${a}jetpack/v4/site/purchases`,i).then(p).then(m).then((e=>JSON.parse(e.data))),fetchSiteBenefits:()=>d(`${a}jetpack/v4/site/benefits`,i).then(p).then(m).then((e=>JSON.parse(e.data))),fetchSiteDiscount:()=>d(`${a}jetpack/v4/site/discount`,i).then(p).then(m).then((e=>e.data)),fetchSetupQuestionnaire:()=>d(`${a}jetpack/v4/setup/questionnaire`,i).then(p).then(m),fetchRecommendationsData:()=>d(`${a}jetpack/v4/recommendations/data`,i).then(p).then(m),fetchRecommendationsProductSuggestions:()=>d(`${a}jetpack/v4/recommendations/product-suggestions`,i).then(p).then(m),fetchRecommendationsUpsell:()=>d(`${a}jetpack/v4/recommendations/upsell`,i).then(p).then(m),fetchRecommendationsConditional:()=>d(`${a}jetpack/v4/recommendations/conditional`,i).then(p).then(m),saveRecommendationsData:e=>h(`${a}jetpack/v4/recommendations/data`,o,{body:JSON.stringify({data:e})}).then(p),fetchProducts:()=>d(`${a}jetpack/v4/products`,i).then(p).then(m),fetchRewindStatus:()=>d(`${a}jetpack/v4/rewind`,i).then(p).then(m).then((e=>JSON.parse(e.data))),fetchScanStatus:()=>d(`${a}jetpack/v4/scan`,i).then(p).then(m).then((e=>JSON.parse(e.data))),dismissJetpackNotice:e=>h(`${a}jetpack/v4/notice/${e}`,o,{body:JSON.stringify({dismissed:!0})}).then(p).then(m),fetchPluginsData:()=>d(`${a}jetpack/v4/plugins`,i).then(p).then(m),fetchIntroOffers:()=>d(`${a}jetpack/v4/intro-offers`,i).then(p).then(m),fetchVerifySiteGoogleStatus:e=>d(null!==e?`${a}jetpack/v4/verify-site/google/${e}`:`${a}jetpack/v4/verify-site/google`,i).then(p).then(m),verifySiteGoogle:e=>h(`${a}jetpack/v4/verify-site/google`,o,{body:JSON.stringify({keyring_id:e})}).then(p).then(m),submitSurvey:e=>h(`${a}jetpack/v4/marketing/survey`,o,{body:JSON.stringify(e)}).then(p).then(m),saveSetupQuestionnaire:e=>h(`${a}jetpack/v4/setup/questionnaire`,o,{body:JSON.stringify(e)}).then(p).then(m),updateLicensingError:e=>h(`${a}jetpack/v4/licensing/error`,o,{body:JSON.stringify(e)}).then(p).then(m),updateLicenseKey:e=>h(`${a}jetpack/v4/licensing/set-license`,o,{body:JSON.stringify({license:e})}).then(p).then(m),getUserLicensesCounts:()=>d(`${a}jetpack/v4/licensing/user/counts`,i).then(p).then(m),getUserLicenses:()=>d(`${a}jetpack/v4/licensing/user/licenses`,i).then(p).then(m),updateLicensingActivationNoticeDismiss:e=>h(`${a}jetpack/v4/licensing/user/activation-notice-dismiss`,o,{body:JSON.stringify({last_detached_count:e})}).then(p).then(m),updateRecommendationsStep:e=>h(`${a}jetpack/v4/recommendations/step`,o,{body:JSON.stringify({step:e})}).then(p),confirmIDCSafeMode:()=>h(`${a}jetpack/v4/identity-crisis/confirm-safe-mode`,o).then(p),startIDCFresh:e=>h(`${a}jetpack/v4/identity-crisis/start-fresh`,o,{body:JSON.stringify({redirect_uri:e})}).then(p).then(m),migrateIDC:()=>h(`${a}jetpack/v4/identity-crisis/migrate`,o).then(p),attachLicenses:e=>h(`${a}jetpack/v4/licensing/attach-licenses`,o,{body:JSON.stringify({licenses:e})}).then(p).then(m),fetchSearchPlanInfo:()=>d(`${c}jetpack/v4/search/plan`,i).then(p).then(m),fetchSearchSettings:()=>d(`${c}jetpack/v4/search/settings`,i).then(p).then(m),updateSearchSettings:e=>h(`${c}jetpack/v4/search/settings`,o,{body:JSON.stringify(e)}).then(p).then(m),fetchSearchStats:()=>d(`${c}jetpack/v4/search/stats`,i).then(p).then(m),fetchWafSettings:()=>d(`${a}jetpack/v4/waf`,i).then(p).then(m),updateWafSettings:e=>h(`${a}jetpack/v4/waf`,o,{body:JSON.stringify(e)}).then(p).then(m),fetchWordAdsSettings:()=>d(`${a}jetpack/v4/wordads/settings`,i).then(p).then(m),updateWordAdsSettings:e=>h(`${a}jetpack/v4/wordads/settings`,o,{body:JSON.stringify(e)}),fetchSearchPricing:()=>d(`${c}jetpack/v4/search/pricing`,i).then(p).then(m),fetchMigrationStatus:()=>d(`${a}jetpack/v4/migration/status`,i).then(p).then(m),fetchBackupUndoEvent:()=>d(`${a}jetpack/v4/site/backup/undo-event`,i).then(p).then(m),fetchBackupPreflightStatus:()=>d(`${a}jetpack/v4/site/backup/preflight`,i).then(p).then(m)};function d(e,t){return fetch(l(e),t)}function h(e,t,a){return fetch(e,Object.assign({},t,a)).catch(g)}function v(e){return e.general&&void 0===e.general.response||e.week&&void 0===e.week.response||e.month&&void 0===e.month.response?e:{}}Object.assign(this,u)};function p(e){return e.status>=200&&e.status<300?e:404===e.status?new Promise((()=>{throw e.redirected?new l(e.redirected):new o})):e.json().catch((e=>h(e))).then((t=>{const a=new Error(`${t.message} (Status ${e.status})`);throw a.response=t,a.name="ApiError",a}))}function m(e){return e.json().catch((t=>h(t,e.redirected,e.url)))}function h(e,t,a){throw t?new i(a):new s}function g(){throw new u}},1330:(e,t,a)=>{"use strict";a.d(t,{A:()=>d});var n=a(6427),r=a(7723),c=a(991),s=a(1112),i=a(442),o=a(7425),l=a(723),u=a(8579);const __=r.__,d=({hideCloseButton:e=!1,title:t,children:a,step:d=null,totalSteps:p=null,buttonContent:m=null,buttonDisabled:h=!1,buttonHref:g=null,buttonExternalLink:v=!1,offset:f=32,onClose:y,onClick:E,...A})=>{const[b]=(0,i.A)("sm");if(!t||!a||!m)return null;A.position||(A.position=b?"top center":"middle right");const w={...A,offset:f,onClose:y},k=Number.isFinite(d)&&Number.isFinite(p);let R=null;return k&&(R=(0,r.sprintf)(/* translators: 1 Current step, 2 Total steps */ -__("%1$d of %2$d","jetpack-protect"),d,p)),React.createElement(n.Popover,w,React.createElement(l.Ay,null,React.createElement("div",{className:u.A.wrapper},React.createElement("div",{className:u.A.header},React.createElement(o.Ay,{variant:"title-small",className:u.A.title},t),!e&&React.createElement(React.Fragment,null,React.createElement(s.A,{size:"small",variant:"tertiary","aria-label":"close",className:u.A["close-button"],icon:c.A,iconSize:16,onClick:y}))),a,React.createElement("div",{className:u.A.footer},k&&React.createElement(o.Ay,{variant:"body",className:u.A.steps},R),React.createElement(s.A,{variant:"primary",className:u.A["action-button"],disabled:h,onClick:E,isExternalLink:v,href:g},m)))))}},2947:(e,t,a)=>{"use strict";a.d(t,{A:()=>p});var n=a(5932),r=a(7723),c=a(3022),s=a(1609),i=a(8250),o=a(7142),l=a(8509),u=a(5918),d=a(2021);const __=r.__,p=({children:e,moduleName:t=__("Jetpack","jetpack-protect"),moduleNameHref:a,showHeader:p=!0,showFooter:m=!0,useInternalLinks:h=!1,showBackground:g=!0,sandboxedDomain:v="",apiRoot:f="",apiNonce:y="",optionalMenuItems:E,header:A})=>{(0,s.useEffect)((()=>{n.Ay.setApiRoot(f),n.Ay.setApiNonce(y)}),[f,y]);const b=(0,c.A)(d.A["admin-page"],{[d.A.background]:g}),w=(0,s.useCallback)((async()=>{try{const e=await n.Ay.fetchSiteConnectionTest();window.alert(e.message)}catch(e){window.alert((0,r.sprintf)(/* translators: placeholder is an error message. */ -__("There was an error testing Jetpack. Error: %s","jetpack-protect"),e.message))}}),[]);return React.createElement("div",{className:b},p&&React.createElement(u.A,{horizontalSpacing:5},React.createElement(l.A,{className:(0,c.A)(d.A["admin-page-header"],"jp-admin-page-header")},A||React.createElement(o.A,null),v&&React.createElement("code",{className:d.A["sandbox-domain-badge"],onClick:w,onKeyDown:w,role:"button",tabIndex:0,title:`Sandboxing via ${v}. Click to test connection.`},"API Sandboxed"))),React.createElement(u.A,{fluid:!0,horizontalSpacing:0},React.createElement(l.A,null,e)),m&&React.createElement(u.A,{horizontalSpacing:5},React.createElement(l.A,null,React.createElement(i.A,{moduleName:t,moduleNameHref:a,menu:E,useInternalLinks:h}))))}},5640:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});var n=a(1609),r=a.n(n),c=a(654);const s=({children:e})=>r().createElement("div",{className:c.A.section},e)},766:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});var n=a(1609),r=a.n(n),c=a(6888);const s=({children:e})=>r().createElement("div",{className:c.A["section-hero"]},e)},8907:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var n=a(6072),r=a.n(n),c=a(7723),s=a(3022),i=a(1609),o=a.n(i);const __=c.__,l=({title:e=__("An Automattic Airline","jetpack-protect"),height:t=7,className:a,...n})=>o().createElement("svg",r()({role:"img",x:"0",y:"0",viewBox:"0 0 935 38.2",enableBackground:"new 0 0 935 38.2","aria-labelledby":"jp-automattic-byline-logo-title",height:t,className:(0,s.A)("jp-automattic-byline-logo",a)},n),o().createElement("desc",{id:"jp-automattic-byline-logo-title"},e),o().createElement("path",{d:"M317.1 38.2c-12.6 0-20.7-9.1-20.7-18.5v-1.2c0-9.6 8.2-18.5 20.7-18.5 12.6 0 20.8 8.9 20.8 18.5v1.2C337.9 29.1 329.7 38.2 317.1 38.2zM331.2 18.6c0-6.9-5-13-14.1-13s-14 6.1-14 13v0.9c0 6.9 5 13.1 14 13.1s14.1-6.2 14.1-13.1V18.6zM175 36.8l-4.7-8.8h-20.9l-4.5 8.8h-7L157 1.3h5.5L182 36.8H175zM159.7 8.2L152 23.1h15.7L159.7 8.2zM212.4 38.2c-12.7 0-18.7-6.9-18.7-16.2V1.3h6.6v20.9c0 6.6 4.3 10.5 12.5 10.5 8.4 0 11.9-3.9 11.9-10.5V1.3h6.7V22C231.4 30.8 225.8 38.2 212.4 38.2zM268.6 6.8v30h-6.7v-30h-15.5V1.3h37.7v5.5H268.6zM397.3 36.8V8.7l-1.8 3.1 -14.9 25h-3.3l-14.7-25 -1.8-3.1v28.1h-6.5V1.3h9.2l14 24.4 1.7 3 1.7-3 13.9-24.4h9.1v35.5H397.3zM454.4 36.8l-4.7-8.8h-20.9l-4.5 8.8h-7l19.2-35.5h5.5l19.5 35.5H454.4zM439.1 8.2l-7.7 14.9h15.7L439.1 8.2zM488.4 6.8v30h-6.7v-30h-15.5V1.3h37.7v5.5H488.4zM537.3 6.8v30h-6.7v-30h-15.5V1.3h37.7v5.5H537.3zM569.3 36.8V4.6c2.7 0 3.7-1.4 3.7-3.4h2.8v35.5L569.3 36.8 569.3 36.8zM628 11.3c-3.2-2.9-7.9-5.7-14.2-5.7 -9.5 0-14.8 6.5-14.8 13.3v0.7c0 6.7 5.4 13 15.3 13 5.9 0 10.8-2.8 13.9-5.7l4 4.2c-3.9 3.8-10.5 7.1-18.3 7.1 -13.4 0-21.6-8.7-21.6-18.3v-1.2c0-9.6 8.9-18.7 21.9-18.7 7.5 0 14.3 3.1 18 7.1L628 11.3zM321.5 12.4c1.2 0.8 1.5 2.4 0.8 3.6l-6.1 9.4c-0.8 1.2-2.4 1.6-3.6 0.8l0 0c-1.2-0.8-1.5-2.4-0.8-3.6l6.1-9.4C318.7 11.9 320.3 11.6 321.5 12.4L321.5 12.4z"}),o().createElement("path",{d:"M37.5 36.7l-4.7-8.9H11.7l-4.6 8.9H0L19.4 0.8H25l19.7 35.9H37.5zM22 7.8l-7.8 15.1h15.9L22 7.8zM82.8 36.7l-23.3-24 -2.3-2.5v26.6h-6.7v-36H57l22.6 24 2.3 2.6V0.8h6.7v35.9H82.8z"}),o().createElement("path",{d:"M719.9 37l-4.8-8.9H694l-4.6 8.9h-7.1l19.5-36h5.6l19.8 36H719.9zM704.4 8l-7.8 15.1h15.9L704.4 8zM733 37V1h6.8v36H733zM781 37c-1.8 0-2.6-2.5-2.9-5.8l-0.2-3.7c-0.2-3.6-1.7-5.1-8.4-5.1h-12.8V37H750V1h19.6c10.8 0 15.7 4.3 15.7 9.9 0 3.9-2 7.7-9 9 7 0.5 8.5 3.7 8.6 7.9l0.1 3c0.1 2.5 0.5 4.3 2.2 6.1V37H781zM778.5 11.8c0-2.6-2.1-5.1-7.9-5.1h-13.8v10.8h14.4c5 0 7.3-2.4 7.3-5.2V11.8zM794.8 37V1h6.8v30.4h28.2V37H794.8zM836.7 37V1h6.8v36H836.7zM886.2 37l-23.4-24.1 -2.3-2.5V37h-6.8V1h6.5l22.7 24.1 2.3 2.6V1h6.8v36H886.2zM902.3 37V1H935v5.6h-26v9.2h20v5.5h-20v10.1h26V37H902.3z"}))},4105:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var n=a(6072),r=a.n(n),c=a(3022),s=a(1609),i=a.n(s),o=a(2451);const l=({children:e,className:t,variant:a,...n})=>{const s=(0,c.A)(o.A.badge,{[o.A["is-success"]]:"success"===a,[o.A["is-warning"]]:"warning"===a,[o.A["is-danger"]]:"danger"===a},t);return i().createElement("span",r()({className:s},n),e)}},1112:(e,t,a)=>{"use strict";a.d(t,{A:()=>h});var n=a(6072),r=a.n(n),c=a(6427),s=a(7723),i=a(1113),o=a(3512),l=a(3022),u=a(1609),d=a.n(u),p=a(2258);const __=s.__,m=(0,u.forwardRef)(((e,t)=>{const{children:a,variant:n="primary",size:s="normal",weight:u="bold",icon:m,iconSize:h,disabled:g,isDestructive:v,isLoading:f,isExternalLink:y,className:E,text:A,fullWidth:b,...w}=e,k=(0,l.A)(p.A.button,E,{[p.A.normal]:"normal"===s,[p.A.small]:"small"===s,[p.A.icon]:Boolean(m),[p.A.loading]:f,[p.A.regular]:"regular"===u,[p.A["full-width"]]:b,[p.A["is-icon-button"]]:Boolean(m)&&!a});w.ref=t;const R="normal"===s?20:16,C=y&&d().createElement(d().Fragment,null,d().createElement(i.A,{size:R,icon:o.A,className:p.A["external-icon"]}),d().createElement(c.VisuallyHidden,{as:"span"},/* translators: accessibility text */ -__("(opens in a new tab)","jetpack-protect"))),_=y?"_blank":void 0,j=a?.[0]&&null!==a[0]&&"components-tooltip"!==a?.[0]?.props?.className;return d().createElement(c.Button,r()({target:_,variant:n,className:(0,l.A)(k,{"has-text":!!m&&j}),icon:y?void 0:m,iconSize:h,disabled:g,"aria-disabled":g,isDestructive:v,text:A},w),f&&d().createElement(c.Spinner,null),d().createElement("span",null,a),C)}));m.displayName="Button";const h=m},4437:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var n=a(1113),r=a(1797),c=a(3022),s=a(597),i=a(7425),o=a(2127);const l=({description:e,cta:t,onClick:a,href:l,openInNewTab:u=!1,className:d,tooltipText:p=""})=>{const m=void 0!==l?"a":"button",h="a"===m?{href:l,...u&&{target:"_blank"}}:{onClick:a};return React.createElement("div",{className:(0,c.A)(o.A.cut,d)},React.createElement("div",null,React.createElement("div",null,React.createElement(i.Ay,{className:o.A.description},e),p&&React.createElement(s.A,{className:o.A.iconContainer,iconSize:16,offset:4},React.createElement(i.Ay,{variant:"body-small"},p))),React.createElement("div",null,React.createElement(m,h,React.createElement(i.Ay,{className:o.A.cta},t)))),React.createElement(n.A,{icon:r.A,className:o.A.icon,size:30}))}},4252:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var n=a(1609),r=a(4433),c=a(680),s=a(6373);const i=({diff:e})=>React.createElement("div",{className:s.A["diff-viewer"]},(0,c.A)(e).map(((e,t)=>React.createElement(n.Fragment,{key:t},React.createElement("div",{key:`file-${t}`,className:s.A["diff-viewer__filename"]},(({oldFileName:e,newFileName:t})=>{const{prev:a,next:c}=(0,r.A)(e,t);return a.prefix+a.path===c.prefix+c.path?React.createElement(n.Fragment,null,a.prefix&&React.createElement("span",{className:s.A["diff-viewer__path-prefix"]},a.prefix),React.createElement("span",{className:s.A["diff-viewer__path"]},a.path)):React.createElement(n.Fragment,null,!!a.prefix&&React.createElement("span",{className:s.A["diff-viewer__path-prefix"]},a.prefix),React.createElement("span",{className:s.A["diff-viewer__path"]},a.path)," → ",!!c.prefix&&React.createElement("span",{className:s.A["diff-viewer__path-prefix"]},c.prefix),React.createElement("span",{className:s.A["diff-viewer__path"]},c.path))})(e)),React.createElement("div",{key:`diff-${t}`,className:s.A["diff-viewer__file"]},React.createElement("div",{key:"left-numbers",className:s.A["diff-viewer__line-numbers"]},e.hunks.map(((e,t)=>{let a=0;return e.lines.map(((n,r)=>React.createElement("div",{key:`${t}-${r}`},"+"===n[0]?" ":e.oldStart+a++)))}))),React.createElement("div",{key:"right-numbers",className:s.A["diff-viewer__line-numbers"]},e.hunks.map(((e,t)=>{let a=0;return e.lines.map(((n,r)=>React.createElement("div",{key:`${t}-${r}`},"-"===n[0]?" ":e.newStart+a++)))}))),React.createElement("div",{className:s.A["diff-viewer__lines"]},e.hunks.map(((e,t)=>e.lines.map(((e,a)=>{const n=e.slice(1).replace(/^\s*$/," "),r=`${t}-${a}`;switch(e[0]){case" ":return React.createElement("div",{key:r},n);case"-":return React.createElement("del",{key:r},n);case"+":return React.createElement("ins",{key:r},n);default:return}}))))))))))},4433:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const n=e=>{const t=e.lastIndexOf("/");return t>-1?{prefix:e.slice(0,t),path:e.slice(t)}:{prefix:"",path:e}};function r(e,t){const a=e.startsWith("a/")&&t.startsWith("b/");if((e=a?e.slice(2):e)===(t=a?t.slice(2):t)){const{prefix:t,path:a}=n(e);return{prev:{prefix:t,path:a},next:{prefix:t,path:a}}}const r=Math.max(e.length,t.length);for(let a=0,n=0;a{"use strict";function n(e){const t=e.split(/\n/),a=[];let n=0;function r(){const e={};for(a.push(e);nn})},1883:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var n=a(7723),r=a(3022),c=a(1609);a(3689);const __=n.__;class s extends c.Component{static defaultProps={"aria-hidden":"false",focusable:"true"};needsOffset(e,t){return["gridicons-arrow-left","gridicons-arrow-right","gridicons-calendar","gridicons-cart","gridicons-folder","gridicons-help-outline","gridicons-info","gridicons-info-outline","gridicons-posts","gridicons-star-outline","gridicons-star"].indexOf(e)>=0&&t%18==0}getSVGDescription(e){if("description"in this.props)return this.props.description;switch(e){default:return"";case"gridicons-audio":return __("Has audio.","jetpack-protect");case"gridicons-arrow-left":return __("Arrow left","jetpack-protect");case"gridicons-arrow-right":return __("Arrow right","jetpack-protect");case"gridicons-calendar":return __("Is an event.","jetpack-protect");case"gridicons-cart":return __("Is a product.","jetpack-protect");case"chevron-down":return __("Show filters","jetpack-protect");case"gridicons-comment":return __("Matching comment.","jetpack-protect");case"gridicons-cross":return __("Close.","jetpack-protect");case"gridicons-filter":return __("Toggle search filters.","jetpack-protect");case"gridicons-folder":return __("Category","jetpack-protect");case"gridicons-help-outline":return __("Help","jetpack-protect");case"gridicons-info":case"gridicons-info-outline":return __("Information.","jetpack-protect");case"gridicons-image-multiple":return __("Has multiple images.","jetpack-protect");case"gridicons-image":return __("Has an image.","jetpack-protect");case"gridicons-page":return __("Page","jetpack-protect");case"gridicons-post":return __("Post","jetpack-protect");case"gridicons-jetpack-search":case"gridicons-search":return __("Magnifying Glass","jetpack-protect");case"gridicons-tag":return __("Tag","jetpack-protect");case"gridicons-video":return __("Has a video.","jetpack-protect")}}renderIcon(e){switch(e){default:return null;case"gridicons-audio":return React.createElement("g",null,React.createElement("path",{d:"M8 4v10.184C7.686 14.072 7.353 14 7 14c-1.657 0-3 1.343-3 3s1.343 3 3 3 3-1.343 3-3V7h7v4.184c-.314-.112-.647-.184-1-.184-1.657 0-3 1.343-3 3s1.343 3 3 3 3-1.343 3-3V4H8z"}));case"gridicons-arrow-left":return React.createElement("g",null,React.createElement("path",{d:"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z"}));case"gridicons-arrow-right":return React.createElement("g",null,React.createElement("path",{d:"M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8-8-8z"}));case"gridicons-block":return React.createElement("g",null,React.createElement("path",{d:"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zM4 12c0-4.418 3.582-8 8-8 1.848 0 3.545.633 4.9 1.686L5.686 16.9C4.633 15.545 4 13.848 4 12zm8 8c-1.848 0-3.546-.633-4.9-1.686L18.314 7.1C19.367 8.455 20 10.152 20 12c0 4.418-3.582 8-8 8z"}));case"gridicons-calendar":return React.createElement("g",null,React.createElement("path",{d:"M19 4h-1V2h-2v2H8V2H6v2H5c-1.105 0-2 .896-2 2v13c0 1.104.895 2 2 2h14c1.104 0 2-.896 2-2V6c0-1.104-.896-2-2-2zm0 15H5V8h14v11z"}));case"gridicons-cart":return React.createElement("g",null,React.createElement("path",{d:"M9 20c0 1.1-.9 2-2 2s-1.99-.9-1.99-2S5.9 18 7 18s2 .9 2 2zm8-2c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2zm.396-5c.937 0 1.75-.65 1.952-1.566L21 5H7V4c0-1.105-.895-2-2-2H3v2h2v11c0 1.105.895 2 2 2h12c0-1.105-.895-2-2-2H7v-2h10.396z"}));case"gridicons-checkmark":return React.createElement("g",null,React.createElement("path",{d:"M11 17.768l-4.884-4.884 1.768-1.768L11 14.232l8.658-8.658C17.823 3.39 15.075 2 12 2 6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10c0-1.528-.353-2.97-.966-4.266L11 17.768z"}));case"gridicons-chevron-left":return React.createElement("g",null,React.createElement("path",{d:"M16.443 7.41L15.0399 6L9.06934 12L15.0399 18L16.443 16.59L11.8855 12L16.443 7.41Z"}));case"gridicons-chevron-right":return React.createElement("g",null,React.createElement("path",{d:"M10.2366 6L8.8335 7.41L13.391 12L8.8335 16.59L10.2366 18L16.2072 12L10.2366 6Z"}));case"gridicons-chevron-down":return React.createElement("g",null,React.createElement("path",{d:"M20 9l-8 8-8-8 1.414-1.414L12 14.172l6.586-6.586"}));case"gridicons-comment":return React.createElement("g",null,React.createElement("path",{d:"M3 6v9c0 1.105.895 2 2 2h9v5l5.325-3.804c1.05-.75 1.675-1.963 1.675-3.254V6c0-1.105-.895-2-2-2H5c-1.105 0-2 .895-2 2z"}));case"gridicons-computer":return React.createElement("g",null,React.createElement("path",{d:"M20 2H4c-1.104 0-2 .896-2 2v12c0 1.104.896 2 2 2h6v2H7v2h10v-2h-3v-2h6c1.104 0 2-.896 2-2V4c0-1.104-.896-2-2-2zm0 14H4V4h16v12z"}));case"gridicons-cross":return React.createElement("g",null,React.createElement("path",{d:"M18.36 19.78L12 13.41l-6.36 6.37-1.42-1.42L10.59 12 4.22 5.64l1.42-1.42L12 10.59l6.36-6.36 1.41 1.41L13.41 12l6.36 6.36z"}));case"gridicons-filter":return React.createElement("g",null,React.createElement("path",{d:"M10 19h4v-2h-4v2zm-4-6h12v-2H6v2zM3 5v2h18V5H3z"}));case"gridicons-folder":return React.createElement("g",null,React.createElement("path",{d:"M18 19H6c-1.1 0-2-.9-2-2V7c0-1.1.9-2 2-2h3c1.1 0 2 .9 2 2h7c1.1 0 2 .9 2 2v8c0 1.1-.9 2-2 2z"}));case"gridicons-help-outline":return React.createElement("g",null,React.createElement("path",{d:"M12 4c4.41 0 8 3.59 8 8s-3.59 8-8 8-8-3.59-8-8 3.59-8 8-8m0-2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm1 13h-2v2h2v-2zm-1.962-2v-.528c0-.4.082-.74.246-1.017.163-.276.454-.546.87-.808.333-.21.572-.397.717-.565.146-.168.22-.36.22-.577 0-.172-.078-.308-.234-.41-.156-.1-.358-.15-.608-.15-.62 0-1.34.22-2.168.658l-.854-1.67c1.02-.58 2.084-.872 3.194-.872.913 0 1.63.202 2.15.603.52.4.78.948.78 1.64 0 .495-.116.924-.347 1.287-.23.362-.6.705-1.11 1.03-.43.278-.7.48-.807.61-.108.13-.163.282-.163.458V13h-1.885z"}));case"gridicons-image":return React.createElement("g",null,React.createElement("path",{d:"M13 9.5c0-.828.672-1.5 1.5-1.5s1.5.672 1.5 1.5-.672 1.5-1.5 1.5-1.5-.672-1.5-1.5zM22 6v12c0 1.105-.895 2-2 2H4c-1.105 0-2-.895-2-2V6c0-1.105.895-2 2-2h16c1.105 0 2 .895 2 2zm-2 0H4v7.444L8 9l5.895 6.55 1.587-1.85c.798-.932 2.24-.932 3.037 0L20 15.426V6z"}));case"gridicons-image-multiple":return React.createElement("g",null,React.createElement("path",{d:"M15 7.5c0-.828.672-1.5 1.5-1.5s1.5.672 1.5 1.5S17.328 9 16.5 9 15 8.328 15 7.5zM4 20h14c0 1.105-.895 2-2 2H4c-1.1 0-2-.9-2-2V8c0-1.105.895-2 2-2v14zM22 4v12c0 1.105-.895 2-2 2H8c-1.105 0-2-.895-2-2V4c0-1.105.895-2 2-2h12c1.105 0 2 .895 2 2zM8 4v6.333L11 7l4.855 5.395.656-.73c.796-.886 2.183-.886 2.977 0l.513.57V4H8z"}));case"gridicons-info":return React.createElement("g",null,React.createElement("path",{d:"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"}));case"gridicons-info-outline":return React.createElement("g",null,React.createElement("path",{d:"M13 9h-2V7h2v2zm0 2h-2v6h2v-6zm-1-7c-4.411 0-8 3.589-8 8s3.589 8 8 8 8-3.589 8-8-3.589-8-8-8m0-2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2z"}));case"gridicons-jetpack-search":return React.createElement("g",null,React.createElement("path",{d:"M0 9.257C0 4.15 4.151 0 9.257 0c5.105 0 9.256 4.151 9.256 9.257a9.218 9.218 0 01-2.251 6.045l.034.033h1.053L24 22.01l-1.986 1.989-6.664-6.662v-1.055l-.033-.033a9.218 9.218 0 01-6.06 2.264C4.15 18.513 0 14.362 0 9.257zm4.169 1.537h4.61V1.82l-4.61 8.973zm5.547-3.092v8.974l4.61-8.974h-4.61z"}));case"gridicons-phone":return React.createElement("g",null,React.createElement("path",{d:"M16 2H8c-1.104 0-2 .896-2 2v16c0 1.104.896 2 2 2h8c1.104 0 2-.896 2-2V4c0-1.104-.896-2-2-2zm-3 19h-2v-1h2v1zm3-2H8V5h8v14z"}));case"gridicons-pages":return React.createElement("g",null,React.createElement("path",{d:"M16 8H8V6h8v2zm0 2H8v2h8v-2zm4-6v12l-6 6H6c-1.105 0-2-.895-2-2V4c0-1.105.895-2 2-2h12c1.105 0 2 .895 2 2zm-2 10V4H6v16h6v-4c0-1.105.895-2 2-2h4z"}));case"gridicons-posts":return React.createElement("g",null,React.createElement("path",{d:"M16 19H3v-2h13v2zm5-10H3v2h18V9zM3 5v2h11V5H3zm14 0v2h4V5h-4zm-6 8v2h10v-2H11zm-8 0v2h5v-2H3z"}));case"gridicons-search":return React.createElement("g",null,React.createElement("path",{d:"M21 19l-5.154-5.154C16.574 12.742 17 11.42 17 10c0-3.866-3.134-7-7-7s-7 3.134-7 7 3.134 7 7 7c1.42 0 2.742-.426 3.846-1.154L19 21l2-2zM5 10c0-2.757 2.243-5 5-5s5 2.243 5 5-2.243 5-5 5-5-2.243-5-5z"}));case"gridicons-star-outline":return React.createElement("g",null,React.createElement("path",{d:"M12 6.308l1.176 3.167.347.936.997.042 3.374.14-2.647 2.09-.784.62.27.963.91 3.25-2.813-1.872-.83-.553-.83.552-2.814 1.87.91-3.248.27-.962-.783-.62-2.648-2.092 3.374-.14.996-.04.347-.936L12 6.308M12 2L9.418 8.953 2 9.257l5.822 4.602L5.82 21 12 16.89 18.18 21l-2.002-7.14L22 9.256l-7.418-.305L12 2z"}));case"gridicons-star":return React.createElement("g",null,React.createElement("path",{d:"M12 2l2.582 6.953L22 9.257l-5.822 4.602L18.18 21 12 16.89 5.82 21l2.002-7.14L2 9.256l7.418-.304"}));case"gridicons-tag":return React.createElement("g",null,React.createElement("path",{d:"M20 2.007h-7.087c-.53 0-1.04.21-1.414.586L2.592 11.5c-.78.78-.78 2.046 0 2.827l7.086 7.086c.78.78 2.046.78 2.827 0l8.906-8.906c.376-.374.587-.883.587-1.413V4.007c0-1.105-.895-2-2-2zM17.007 9c-1.105 0-2-.895-2-2s.895-2 2-2 2 .895 2 2-.895 2-2 2z"}));case"gridicons-video":return React.createElement("g",null,React.createElement("path",{d:"M20 4v2h-2V4H6v2H4V4c-1.105 0-2 .895-2 2v12c0 1.105.895 2 2 2v-2h2v2h12v-2h2v2c1.105 0 2-.895 2-2V6c0-1.105-.895-2-2-2zM6 16H4v-3h2v3zm0-5H4V8h2v3zm4 4V9l4.5 3-4.5 3zm10 1h-2v-3h2v3zm0-5h-2V8h2v3z"}));case"gridicons-lock":return React.createElement(React.Fragment,null,React.createElement("g",{id:"lock"},React.createElement("path",{d:"M18,8h-1V7c0-2.757-2.243-5-5-5S7,4.243,7,7v1H6c-1.105,0-2,0.895-2,2v10c0,1.105,0.895,2,2,2h12c1.105,0,2-0.895,2-2V10 C20,8.895,19.105,8,18,8z M9,7c0-1.654,1.346-3,3-3s3,1.346,3,3v1H9V7z M13,15.723V18h-2v-2.277c-0.595-0.346-1-0.984-1-1.723 c0-1.105,0.895-2,2-2s2,0.895,2,2C14,14.738,13.595,15.376,13,15.723z"})),React.createElement("g",{id:"Layer_1"}));case"gridicons-external":return React.createElement("g",null,React.createElement("path",{d:"M19 13v6c0 1.105-.895 2-2 2H5c-1.105 0-2-.895-2-2V7c0-1.105.895-2 2-2h6v2H5v12h12v-6h2zM13 3v2h4.586l-7.793 7.793 1.414 1.414L19 6.414V11h2V3h-8z"}))}}render(){const{size:e=24,className:t=""}=this.props,a=this.props.height||e,n=this.props.width||e,c=this.props.style||{height:a,width:n},s="gridicons-"+this.props.icon,i=(0,r.A)("gridicon",s,t,{"needs-offset":this.needsOffset(s,e)}),o=this.getSVGDescription(s);return React.createElement("svg",{className:i,focusable:this.props.focusable,height:a,onClick:this.props.onClick,style:c,viewBox:"0 0 24 24",width:n,xmlns:"http://www.w3.org/2000/svg","aria-hidden":this.props["aria-hidden"]},o?React.createElement("desc",null,o):null,this.renderIcon(s))}}const i=s},597:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var n=a(6427),r=a(3022),c=a(1609),s=a.n(c),i=a(1112),o=a(1883);a(4803);const l=e=>({"top-end":"top left",top:"top center","top-start":"top right","bottom-end":"bottom left",bottom:"bottom center","bottom-start":"bottom right"}[e]),u=({className:e="",iconClassName:t="",placement:a="bottom-end",animate:u=!0,iconCode:d="info-outline",iconSize:p=18,offset:m=10,title:h,children:g,popoverAnchorStyle:v="icon",forceShow:f=!1,hoverShow:y=!1,wide:E=!1,inline:A=!0,shift:b=!1})=>{const[w,k]=(0,c.useState)(!1),[R,C]=(0,c.useState)(null),_=(0,c.useCallback)((()=>k(!1)),[k]),j=(0,c.useCallback)((e=>{e.preventDefault(),k(!w)}),[w,k]),x={position:l(a),placement:a,animate:u,noArrow:!1,resize:!1,flip:!1,offset:m,focusOnMount:"container",onClose:_,className:"icon-tooltip-container",inline:A,shift:b},S="wrapper"===v,M=(0,r.A)("icon-tooltip-wrapper",e),N={left:S?0:-(62-p/2)+"px"},L=S&&f,P=(0,c.useCallback)((()=>{y&&(R&&(clearTimeout(R),C(null)),k(!0))}),[y,R]),z=(0,c.useCallback)((()=>{if(y){const e=setTimeout((()=>{k(!1),C(null)}),100);C(e)}}),[y]);return s().createElement("div",{className:M,"data-testid":"icon-tooltip_wrapper",onMouseEnter:P,onMouseLeave:z},!S&&s().createElement(i.A,{variant:"link",onMouseDown:j},s().createElement(o.A,{className:t,icon:d,size:p})),s().createElement("div",{className:(0,r.A)("icon-tooltip-helper",{"is-wide":E}),style:N},(L||w)&&s().createElement(n.Popover,x,s().createElement("div",null,h&&s().createElement("div",{className:"icon-tooltip-title"},h),s().createElement("div",{className:"icon-tooltip-content"},g)))))}},8478:(e,t,a)=>{"use strict";a.d(t,{Wy:()=>u});var n=a(6072),r=a.n(n),c=a(6427),s=a(3022),i=(a(4705),a(2300));const o=({className:e,size:t=24,viewBox:a="0 0 24 24",opacity:n=1,color:o="#2C3338",children:l})=>{const u={className:(0,s.A)(i.A.iconWrapper,e),width:t,height:t,viewBox:a,opacity:n,fill:void 0};return o&&(u.fill=o),React.createElement(c.SVG,r()({},u,{fillRule:"evenodd",clipRule:"evenodd",xmlns:"http://www.w3.org/2000/svg"}),React.createElement(c.G,{opacity:n},l))},l={...{"anti-spam":({opacity:e=1,size:t,color:a})=>React.createElement(o,{size:t,opacity:e,color:a},React.createElement(c.Path,{d:"M13.2,4.7l4.7,12.8c0.4,1.1,1,1.5,2.1,1.6c0.1,0,0.1,0,0.1,0l0.1,0.1l0.1,0.1c0,0.1,0,0.1,0,0.2c0,0.1,0,0.1,0,0.1 s0,0.1-0.1,0.1c-0.1,0-0.1,0.1-0.1,0.1s-0.1,0-0.2,0h-5.1c-0.1,0-0.1,0-0.2,0c-0.1,0-0.1-0.1-0.1-0.1l-0.1-0.1c0-0.1,0-0.1,0-0.1 c0-0.1,0-0.1,0-0.2s0-0.1,0.1-0.1l0.1-0.1c0,0,0.1,0,0.2,0c0.5,0,1.1-0.2,1.1-0.8c0-0.3-0.1-0.5-0.2-0.8l-1.1-3.1 c-0.1-0.2-0.1-0.2-0.2-0.2h-4.3c-0.7,0-1.5,0-1.9,0.9l-1.1,2.4C7.1,17.6,7,17.8,7,18.1c0,0.8,1,0.9,1.6,0.9c0.1,0,0.1,0,0.2,0 L8.8,19l0.1,0.1c0,0.1,0,0.1,0,0.2c0,0.1,0,0.1,0,0.1s-0.1,0.1-0.1,0.1l-0.1,0.1c-0.1,0-0.1,0-0.2,0H4.1c-0.1,0-0.1,0-0.1,0 c-0.1,0-0.1-0.1-0.1-0.1l-0.1-0.1c0-0.1,0-0.1,0-0.1c0-0.1,0-0.1,0-0.2s0-0.1,0.1-0.1L4,19c0,0,0.1,0,0.1,0C5.2,19,5.5,18.5,6,17.5 l5.4-12.4c0.2-0.5,0.8-1,1.3-1C13,4.2,13.1,4.4,13.2,4.7z M9.1,13.1c0,0.1-0.1,0.1-0.1,0.2c0,0.1,0.1,0.1,0.1,0.1h4.4 c0.3,0,0.4-0.1,0.4-0.3c0-0.1,0-0.2-0.1-0.3l-1.2-3.5c-0.3-0.8-0.8-1.9-0.8-2.7c0-0.1,0-0.1-0.1-0.1c0,0-0.1,0-0.1,0.1 c-0.1,0.6-0.4,1.2-0.7,1.7L9.1,13.1z"}),React.createElement(c.Path,{d:"M13.2,4.7l4.7,12.8c0.4,1.1,1,1.5,2.1,1.6c0.1,0,0.1,0,0.1,0l0.1,0.1l0.1,0.1c0,0.1,0,0.1,0,0.2c0,0.1,0,0.1,0,0.1 s0,0.1-0.1,0.1c-0.1,0-0.1,0.1-0.1,0.1s-0.1,0-0.2,0h-5.1c-0.1,0-0.1,0-0.2,0c-0.1,0-0.1-0.1-0.1-0.1l-0.1-0.1c0-0.1,0-0.1,0-0.1 c0-0.1,0-0.1,0-0.2s0-0.1,0.1-0.1l0.1-0.1c0,0,0.1,0,0.2,0c0.5,0,1.1-0.2,1.1-0.8c0-0.3-0.1-0.5-0.2-0.8l-1.1-3.1 c-0.1-0.2-0.1-0.2-0.2-0.2h-4.3c-0.7,0-1.5,0-1.9,0.9l-1.1,2.4C7.1,17.6,7,17.8,7,18.1c0,0.8,1,0.9,1.6,0.9c0.1,0,0.1,0,0.2,0 L8.8,19l0.1,0.1c0,0.1,0,0.1,0,0.2c0,0.1,0,0.1,0,0.1s-0.1,0.1-0.1,0.1l-0.1,0.1c-0.1,0-0.1,0-0.2,0H4.1c-0.1,0-0.1,0-0.1,0 c-0.1,0-0.1-0.1-0.1-0.1l-0.1-0.1c0-0.1,0-0.1,0-0.1c0-0.1,0-0.1,0-0.2s0-0.1,0.1-0.1L4,19c0,0,0.1,0,0.1,0C5.2,19,5.5,18.5,6,17.5 l5.4-12.4c0.2-0.5,0.8-1,1.3-1C13,4.2,13.1,4.4,13.2,4.7z M9.1,13.1c0,0.1-0.1,0.1-0.1,0.2c0,0.1,0.1,0.1,0.1,0.1h4.4 c0.3,0,0.4-0.1,0.4-0.3c0-0.1,0-0.2-0.1-0.3l-1.2-3.5c-0.3-0.8-0.8-1.9-0.8-2.7c0-0.1,0-0.1-0.1-0.1c0,0-0.1,0-0.1,0.1 c-0.1,0.6-0.4,1.2-0.7,1.7L9.1,13.1z"}),React.createElement(c.Path,{d:"M21.6,12.5c0,0.6-0.3,1-0.9,1c-0.6,0-0.8-0.3-0.8-0.8c0-0.6,0.4-1,0.9-1C21.3,11.7,21.6,12.1,21.6,12.5z"}),React.createElement(c.Path,{d:"M4.1,12.5c0,0.6-0.3,1-0.9,1s-0.8-0.3-0.8-0.8c0-0.6,0.4-1,0.9-1S4.1,12.1,4.1,12.5z"})),backup:({opacity:e=1,size:t,color:a})=>React.createElement(o,{size:t,opacity:e,color:a},React.createElement(c.Path,{d:"M2.1,5.8c0-0.1,0-0.1,0-0.2c0-0.2,0.1-0.5,0.1-0.7c0.1-0.4,0.4-0.6,0.7-0.8l8.3-2.9c0.1-0.1,0.3-0.1,0.4-0.1l0.5,0.1 l8.3,2.9c0.3,0.2,0.5,0.4,0.7,0.7c0.2,0.2,0.2,0.4,0.2,0.7c0,0.1,0,0.1,0,0.2v0.1c-0.1,0.5-0.2,0.9-0.3,1.4 c-0.2,0.4-0.3,1.2-0.7,2.2c-0.3,1-0.7,2.1-1.1,3.1c-0.5,1-1,2.1-1.6,3.3s-1.4,2.3-2.2,3.5c-0.9,1.1-1.8,2.2-2.8,3.1 c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4c-1.2-1.1-2.4-2.4-3.5-4c-1-1.6-1.9-3-2.5-4.3c-0.6-1.3-1.1-2.7-1.6-4 C2.8,8.7,2.5,7.6,2.3,7C2.3,6.5,2.1,6.1,2.1,5.8z M2.9,5.9c0,0.2,0.1,0.4,0.1,0.8C3.1,7,3.2,7.5,3.5,8.2C3.7,9,3.9,9.7,4.2,10.6 c0.3,0.7,0.7,1.7,1.1,2.7c0.4,1,1,2,1.5,2.9c0.5,1,1.2,1.9,1.9,2.9c0.8,1,1.6,1.9,2.4,2.6c0.2,0.2,0.4,0.2,0.5,0.2 c0.2,0,0.4-0.1,0.5-0.2c1.2-1,2.2-2.3,3.2-3.8c1-1.5,1.8-2.8,2.3-4c0.6-1.3,1.1-2.5,1.5-3.9c0.4-1.3,0.7-2.2,0.9-2.8 c0.1-0.5,0.2-1,0.3-1.3c0-0.1,0-0.1,0-0.1c0-0.2,0-0.3-0.1-0.4C20.3,5.2,20.2,5.1,20,5L12,2.1c0,0-0.1,0-0.2,0s-0.1,0-0.1,0h-0.2 l-8,2.8C3.2,5,3.1,5.2,3,5.3C2.9,5.5,2.9,5.6,2.9,5.8C2.9,5.8,2.9,5.8,2.9,5.9z M5.9,6.7h3l2.8,7l2.8-7h3c-0.1,0.1-0.2,0.5-0.3,0.8 C17,7.8,17,8.2,16.8,8.4c-0.1,0.3-0.2,0.5-0.4,0.8c0,0.1-0.1,0.1-0.1,0.1s-0.1,0.1-0.2,0.1c-0.1,0-0.1,0-0.1,0 c-0.1,0-0.2,0.1-0.2,0.2c0,0-0.1,0.1-0.1,0.1s-0.1,0.1-0.1,0.1c0,0,0,0.1-0.1,0.2c0,0.1-0.1,0.1-0.1,0.1l-0.4,1.1 c-1.3,3.3-2.1,5.2-2.3,5.8h-2.2l-1-2.4c-0.1-0.3-0.3-0.8-0.5-1.3c-0.1-0.3-0.3-0.8-0.5-1.3L8,10.8c-0.1-0.1-0.1-0.2-0.1-0.4 C7.8,10.2,7.7,10,7.7,9.8C7.6,9.7,7.5,9.5,7.4,9.4C7.3,9.3,7.3,9.3,7.3,9.3c-0.1,0-0.2,0-0.2,0s-0.1,0-0.1,0 C6.6,8.5,6.3,7.6,5.9,6.7z"})),boost:({opacity:e=1,size:t,color:a})=>React.createElement(o,{size:t,opacity:e,color:a},React.createElement(c.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M4.19505 16.2545C4.47368 16.561 4.94802 16.5836 5.25451 16.3049L10.2595 11.7549L14.2842 15.2765L19 10.5607V13.75H20.5V9.5V8.75239V8.7476V8H19.7529H19.7471H19H14.75V9.5H17.9393L14.2158 13.2235L10.2405 9.74507L4.2455 15.195C3.93901 15.4737 3.91642 15.948 4.19505 16.2545Z"})),crm:({opacity:e=1,size:t,color:a})=>React.createElement(o,{size:t,opacity:e,color:a},React.createElement(c.Path,{d:"M15.5 9.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2Zm0 1.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Zm-2.25 6v-2a2.75 2.75 0 0 0-2.75-2.75h-4A2.75 2.75 0 0 0 3.75 15v2h1.5v-2c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v2h1.5Zm7-2v2h-1.5v-2c0-.69-.56-1.25-1.25-1.25H15v-1.5h2.5A2.75 2.75 0 0 1 20.25 15ZM9.5 8.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Zm1.5 0a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0Z"})),extras:({opacity:e=1,size:t,color:a})=>React.createElement(o,{size:t,opacity:e,color:a},React.createElement(c.Path,{d:"M18.5 5.5V8H20V5.5h2.5V4H20V1.5h-1.5V4H16v1.5h2.5ZM12 4H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-6h-1.5v6a.5.5 0 0 1-.5.5H6a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5h6V4Z"})),protect:({opacity:e=1,size:t,className:a,color:n})=>React.createElement(o,{className:a,size:t,opacity:e,color:n},React.createElement(c.Path,{d:"M12 3.17627L18.75 6.24445V10.8183C18.75 14.7173 16.2458 18.4089 12.7147 19.5735C12.2507 19.7265 11.7493 19.7265 11.2853 19.5735C7.75416 18.4089 5.25 14.7173 5.25 10.8183V6.24445L12 3.17627ZM6.75 7.21032V10.8183C6.75 14.1312 8.89514 17.2057 11.7551 18.149C11.914 18.2014 12.086 18.2014 12.2449 18.149C15.1049 17.2057 17.25 14.1312 17.25 10.8183V7.21032L12 4.82396L6.75 7.21032Z"}),React.createElement(c.Path,{d:"M15.5291 10.0315L11.1818 14.358L8.47095 11.66L9.52907 10.5968L11.1818 12.2417L14.4709 8.96826L15.5291 10.0315Z"})),scan:({opacity:e=1,size:t,color:a})=>React.createElement(o,{size:t,opacity:e,color:a},React.createElement(c.Path,{d:"m12 3.176 6.75 3.068v4.574c0 3.9-2.504 7.59-6.035 8.755a2.283 2.283 0 0 1-1.43 0c-3.53-1.164-6.035-4.856-6.035-8.755V6.244L12 3.176ZM6.75 7.21v3.608c0 3.313 2.145 6.388 5.005 7.33.159.053.331.053.49 0 2.86-.942 5.005-4.017 5.005-7.33V7.21L12 4.824 6.75 7.21Z"})),search:({opacity:e=1,size:t,color:a})=>React.createElement(o,{size:t,opacity:e,color:a},React.createElement(c.Path,{d:"M17.5 11.5a4 4 0 1 1-8 0 4 4 0 0 1 8 0Zm1.5 0a5.5 5.5 0 0 1-9.142 4.121l-3.364 2.943-.988-1.128 3.373-2.952A5.5 5.5 0 1 1 19 11.5Z"})),social:({opacity:e=1,size:t,color:a})=>React.createElement(o,{size:t,opacity:e,color:a},React.createElement(c.Path,{d:"M15.5 3.97809V18.0219L7.5 15.5977V20H6V15.1431L3.27498 14.3173C2.22086 13.9979 1.5 13.0262 1.5 11.9248V10.0752C1.5 8.97375 2.22087 8.00207 3.27498 7.68264L15.5 3.97809ZM14 16L7.5 14.0303L7.5 7.96969L14 5.99999V16ZM6 8.42423L6 13.5757L3.70999 12.8818C3.28835 12.754 3 12.3654 3 11.9248V10.0752C3 9.63462 3.28835 9.24595 3.70999 9.11818L6 8.42423ZM17.5 11.75H21.5V10.25H17.5V11.75ZM21.5 16L17.5 15V13.5L21.5 14.5V16ZM17.5 8.5L21.5 7.5V6L17.5 7V8.5Z"})),star:({size:e,className:t=i.A["star-icon"],color:a})=>React.createElement(o,{className:t,size:e,color:a},React.createElement(c.Path,{d:"M12 2l2.582 6.953L22 9.257l-5.822 4.602L18.18 21 12 16.89 5.82 21l2.002-7.14L2 9.256l7.418-.304"})),videopress:({opacity:e=1,size:t,color:a})=>React.createElement(o,{size:t,opacity:e,color:a},React.createElement(c.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M4.3,6.2c0.8,0,1.6,0.6,1.8,1.4l2.3,7.9c0,0,0,0,0,0l2.7-9.3h1.5h4.2c2.9,0,4.9,1.9,4.9,4.7c0,2.9-2,4.7-5,4.7 h-2h-2.5l-0.5,1.5c-0.4,1.4-1.7,2.3-3.2,2.3c-1.4,0-2.7-0.9-3.2-2.3L2.5,8.7C2.1,7.4,3,6.2,4.3,6.2z M13,12.8h2.9c1.3,0,2-0.7,2-1.9 c0-1.2-0.8-1.8-2-1.8h-1.7L13,12.8z"})),jetpack:({size:e,className:t=i.A.jetpack,color:a})=>React.createElement(o,{className:t,size:e,color:a,viewBox:"0 0 32 32"},React.createElement(c.Path,{className:"jetpack-logo__icon-circle",d:"M16,0C7.2,0,0,7.2,0,16s7.2,16,16,16s16-7.2,16-16S24.8,0,16,0z"}),React.createElement(c.Polygon,{fill:"#fff",points:"15,19 7,19 15,3"}),React.createElement(c.Polygon,{fill:"#fff",points:"17,29 17,13 25,13"})),share:({size:e=16,className:t,color:a})=>React.createElement(o,{className:t,size:e,color:a,viewBox:"0 0 16 16"},React.createElement(c.Path,{fill:"#161722",fillRule:"evenodd",d:"M8.3 4.66C3.85 5.308.727 9.75.034 13.69l-.02.117c-.137.842.809 1.232 1.446.68 2.013-1.745 3.648-2.475 5.318-2.719a10.482 10.482 0 011.524-.103v2.792c0 .694.82 1.041 1.3.55l6.176-6.307a.79.79 0 00.012-1.088L9.614 1.004C9.14.496 8.301.84 8.301 1.542v3.117zm1.525-1.175v1.85a.773.773 0 01-.654.77l-.655.096c-2.133.311-3.987 1.732-5.295 3.672-.472.7-.854 1.44-1.143 2.18a12.32 12.32 0 011.675-.972c1.58-.75 3.048-.972 4.548-.972h.762a.77.77 0 01.762.779v1.69l4.347-4.44-4.347-4.653z",clipRule:"evenodd"})),ai:({size:e=24,color:t="#069e08"})=>React.createElement(o,{color:t,size:e,viewBox:"0 0 32 32"},React.createElement(c.Path,{className:"spark-first",d:"M9.33301 5.33325L10.4644 8.20188L13.333 9.33325L10.4644 10.4646L9.33301 13.3333L8.20164 10.4646L5.33301 9.33325L8.20164 8.20188L9.33301 5.33325Z"}),React.createElement(c.Path,{className:"spark-second",d:"M21.3333 5.33333L22.8418 9.15817L26.6667 10.6667L22.8418 12.1752L21.3333 16L19.8248 12.1752L16 10.6667L19.8248 9.15817L21.3333 5.33333Z"}),React.createElement(c.Path,{className:"spark-third",d:"M14.6667 13.3333L16.5523 18.1144L21.3333 20L16.5523 21.8856L14.6667 26.6667L12.781 21.8856L8 20L12.781 18.1144L14.6667 13.3333Z"})),stats:({opacity:e=1,size:t,color:a})=>React.createElement(o,{size:t,opacity:e,color:a},React.createElement(c.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M11.25 5H12.75V20H11.25V5ZM6 10H7.5V20H6V10ZM18 14H16.5V20H18V14Z"}))}};function u(e){return l[e]?l[e]:null}},8250:(e,t,a)=>{"use strict";a.d(t,{A:()=>y});var n=a(6072),r=a.n(n),c=a(7723),s=a(1113),i=a(3512),o=a(3022),l=a(1609),u=a.n(l),d=a(3924),p=a(1069),m=a(8907),h=(a(4206),a(7142)),g=a(442);const __=c.__,_x=c._x,v=()=>u().createElement(h.A,{logoColor:"#000",showText:!1,height:16,"aria-hidden":"true"}),f=()=>u().createElement(u().Fragment,null,u().createElement(s.A,{icon:i.A,size:16}),u().createElement("span",{className:"jp-dashboard-footer__accessible-external-link"},/* translators: accessibility text */ -__("(opens in a new tab)","jetpack-protect"))),y=({moduleName:e=__("Jetpack","jetpack-protect"),className:t,moduleNameHref:a="https://jetpack.com",menu:n,useInternalLinks:c,onAboutClick:s,onPrivacyClick:i,onTermsClick:l,...h})=>{const[y]=(0,g.A)("sm","<="),[E]=(0,g.A)("md","<="),[A]=(0,g.A)("lg",">"),b=(0,p.A)();let w=[{label:_x("About","Link to learn more about Jetpack.","jetpack-protect"),title:__("About Jetpack","jetpack-protect"),href:c?new URL("admin.php?page=jetpack_about",b).href:(0,d.A)("jetpack-about"),target:c?"_self":"_blank",onClick:s},{label:_x("Privacy","Shorthand for Privacy Policy.","jetpack-protect"),title:__("Automattic's Privacy Policy","jetpack-protect"),href:c?new URL("admin.php?page=jetpack#/privacy",b).href:(0,d.A)("a8c-privacy"),target:c?"_self":"_blank",onClick:i},{label:_x("Terms","Shorthand for Terms of Service.","jetpack-protect"),title:__("WordPress.com Terms of Service","jetpack-protect"),href:(0,d.A)("wpcom-tos"),target:"_blank",onClick:l}];n&&(w=[...w,...n]);const k=u().createElement(u().Fragment,null,u().createElement(v,null),e);return u().createElement("footer",r()({className:(0,o.A)("jp-dashboard-footer",{"is-sm":y,"is-md":E,"is-lg":A},t),"aria-label":__("Jetpack","jetpack-protect"),role:"contentinfo"},h),u().createElement("ul",null,u().createElement("li",{className:"jp-dashboard-footer__jp-item"},a?u().createElement("a",{href:a},k):k),w.map((e=>{const t="button"===e.role,a=!t&&"_blank"===e.target;return u().createElement("li",{key:e.label},u().createElement("a",{href:e.href,title:e.title,target:e.target,onClick:e.onClick,onKeyDown:e.onKeyDown,className:(0,o.A)("jp-dashboard-footer__menu-item",{"is-external":a}),role:e.role,rel:a?"noopener noreferrer":void 0,tabIndex:t?0:void 0},e.label,a&&u().createElement(f,null)))})),u().createElement("li",{className:"jp-dashboard-footer__a8c-item"},u().createElement("a",{href:c?new URL("admin.php?page=jetpack_about",b).href:(0,d.A)("a8c-about"),"aria-label":__("An Automattic Airline","jetpack-protect")},u().createElement(m.A,{"aria-hidden":"true"})))))}},7142:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var n=a(6072),r=a.n(n),c=a(7723),s=a(3022),i=a(1609),o=a.n(i);const __=c.__,l=({logoColor:e="#069e08",showText:t=!0,className:a,height:n=32,...c})=>{const i=t?"0 0 118 32":"0 0 32 32";return o().createElement("svg",r()({xmlns:"http://www.w3.org/2000/svg",x:"0px",y:"0px",viewBox:i,className:(0,s.A)("jetpack-logo",a),"aria-labelledby":"jetpack-logo-title",height:n},c,{role:"img"}),o().createElement("title",{id:"jetpack-logo-title"},__("Jetpack Logo","jetpack-protect")),o().createElement("path",{fill:e,d:"M16,0C7.2,0,0,7.2,0,16s7.2,16,16,16s16-7.2,16-16S24.8,0,16,0z M15,19H7l8-16V19z M17,29V13h8L17,29z"}),t&&o().createElement(o().Fragment,null,o().createElement("path",{d:"M41.3,26.6c-0.5-0.7-0.9-1.4-1.3-2.1c2.3-1.4,3-2.5,3-4.6V8h-3V6h6v13.4C46,22.8,45,24.8,41.3,26.6z"}),o().createElement("path",{d:"M65,18.4c0,1.1,0.8,1.3,1.4,1.3c0.5,0,2-0.2,2.6-0.4v2.1c-0.9,0.3-2.5,0.5-3.7,0.5c-1.5,0-3.2-0.5-3.2-3.1V12H60v-2h2.1V7.1 H65V10h4v2h-4V18.4z"}),o().createElement("path",{d:"M71,10h3v1.3c1.1-0.8,1.9-1.3,3.3-1.3c2.5,0,4.5,1.8,4.5,5.6s-2.2,6.3-5.8,6.3c-0.9,0-1.3-0.1-2-0.3V28h-3V10z M76.5,12.3 c-0.8,0-1.6,0.4-2.5,1.2v5.9c0.6,0.1,0.9,0.2,1.8,0.2c2,0,3.2-1.3,3.2-3.9C79,13.4,78.1,12.3,76.5,12.3z"}),o().createElement("path",{d:"M93,22h-3v-1.5c-0.9,0.7-1.9,1.5-3.5,1.5c-1.5,0-3.1-1.1-3.1-3.2c0-2.9,2.5-3.4,4.2-3.7l2.4-0.3v-0.3c0-1.5-0.5-2.3-2-2.3 c-0.7,0-2.3,0.5-3.7,1.1L84,11c1.2-0.4,3-1,4.4-1c2.7,0,4.6,1.4,4.6,4.7L93,22z M90,16.4l-2.2,0.4c-0.7,0.1-1.4,0.5-1.4,1.6 c0,0.9,0.5,1.4,1.3,1.4s1.5-0.5,2.3-1V16.4z"}),o().createElement("path",{d:"M104.5,21.3c-1.1,0.4-2.2,0.6-3.5,0.6c-4.2,0-5.9-2.4-5.9-5.9c0-3.7,2.3-6,6.1-6c1.4,0,2.3,0.2,3.2,0.5V13 c-0.8-0.3-2-0.6-3.2-0.6c-1.7,0-3.2,0.9-3.2,3.6c0,2.9,1.5,3.8,3.3,3.8c0.9,0,1.9-0.2,3.2-0.7V21.3z"}),o().createElement("path",{d:"M110,15.2c0.2-0.3,0.2-0.8,3.8-5.2h3.7l-4.6,5.7l5,6.3h-3.7l-4.2-5.8V22h-3V6h3V15.2z"}),o().createElement("path",{d:"M58.5,21.3c-1.5,0.5-2.7,0.6-4.2,0.6c-3.6,0-5.8-1.8-5.8-6c0-3.1,1.9-5.9,5.5-5.9s4.9,2.5,4.9,4.9c0,0.8,0,1.5-0.1,2h-7.3 c0.1,2.5,1.5,2.8,3.6,2.8c1.1,0,2.2-0.3,3.4-0.7C58.5,19,58.5,21.3,58.5,21.3z M56,15c0-1.4-0.5-2.9-2-2.9c-1.4,0-2.3,1.3-2.4,2.9 C51.6,15,56,15,56,15z"})))}},1608:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var n=a(6072),r=a.n(n),c=a(7723),s=a(3022),i=a(1609),o=a.n(i);const __=c.__,l=({logoColor:e="#069e08",showText:t=!0,className:a,height:n=42,...c})=>{const i=t?"0 0 245 41":"0 0 41 41";return o().createElement("svg",r()({xmlns:"http://www.w3.org/2000/svg",x:"0px",y:"0px",viewBox:i,className:(0,s.A)("jetpack-logo",a),"aria-labelledby":"jetpack-logo-title",height:n},c,{role:"img"}),o().createElement("title",{id:"jetpack-logo-title"},__("Jetpack Protect Logo","jetpack-protect")),o().createElement("path",{d:"M20.1063 40.2111C31.2106 40.2111 40.2126 31.2091 40.2126 20.1048C40.2126 9.00048 31.2106 0 20.1063 0C9.00197 0 0 9.00197 0 20.1063C0 31.2106 9.00197 40.2111 20.1063 40.2111Z",fill:e}),o().createElement("path",{d:"M21.104 16.7295V36.2209L31.1571 16.7295H21.104Z",fill:"white"}),o().createElement("path",{d:"M19.0701 23.4444V3.99023L9.05566 23.4444H19.0701Z",fill:"white"}),t&&o().createElement(o().Fragment,null,o().createElement("path",{d:"M159.347 27.3605H156.978V7.9082H162.371C163.176 7.9082 163.917 7.95666 164.596 8.05359C165.284 8.15051 165.914 8.30074 166.486 8.50428C167.649 8.92104 168.531 9.54619 169.132 10.3797C169.733 11.2036 170.033 12.2213 170.033 13.4328C170.033 14.4214 169.834 15.2937 169.437 16.0497C169.049 16.796 168.482 17.4211 167.736 17.9251C166.99 18.4291 166.079 18.812 165.003 19.0737C163.937 19.3257 162.725 19.4517 161.368 19.4517C160.719 19.4517 160.045 19.4226 159.347 19.3644V27.3605ZM159.347 17.1982C159.667 17.237 160.002 17.2661 160.35 17.2854C160.699 17.3048 161.029 17.3145 161.339 17.3145C162.454 17.3145 163.403 17.2273 164.189 17.0528C164.974 16.8784 165.613 16.6264 166.108 16.2968C166.602 15.9576 166.961 15.5505 167.183 15.0756C167.406 14.591 167.518 14.0434 167.518 13.4328C167.518 12.6768 167.334 12.0565 166.965 11.5719C166.607 11.0873 166.093 10.719 165.424 10.467C165.008 10.3119 164.528 10.2053 163.985 10.1471C163.442 10.0793 162.812 10.0453 162.095 10.0453H159.347V17.1982Z"}),o().createElement("path",{d:"M181.093 15.3809H180.919C180.386 15.3809 179.862 15.4294 179.349 15.5263C178.835 15.6232 178.35 15.7735 177.895 15.977C177.449 16.1708 177.042 16.4131 176.674 16.7039C176.315 16.9947 176.014 17.3388 175.772 17.7361V27.3605H173.519V13.5491H175.263L175.699 15.7444H175.743C175.966 15.3858 176.237 15.0514 176.557 14.7412C176.887 14.4311 177.255 14.1597 177.662 13.9271C178.069 13.6945 178.515 13.5152 179 13.3892C179.484 13.2535 179.993 13.1856 180.526 13.1856C180.623 13.1856 180.72 13.1905 180.817 13.2002C180.924 13.2002 181.016 13.205 181.093 13.2147V15.3809Z"}),o().createElement("path",{d:"M193.302 20.4694C193.302 19.6164 193.195 18.8604 192.982 18.2014C192.779 17.5326 192.488 16.9705 192.11 16.5149C191.741 16.0497 191.3 15.7008 190.787 15.4682C190.273 15.2258 189.711 15.1047 189.1 15.1047C188.49 15.1047 187.928 15.2258 187.414 15.4682C186.9 15.7008 186.454 16.0497 186.076 16.5149C185.708 16.9705 185.417 17.5326 185.204 18.2014C185.001 18.8604 184.899 19.6164 184.899 20.4694C184.899 21.3126 185.001 22.0686 185.204 22.7373C185.417 23.3964 185.713 23.9537 186.091 24.4092C186.469 24.8648 186.915 25.2137 187.428 25.456C187.942 25.6886 188.504 25.8049 189.115 25.8049C189.725 25.8049 190.283 25.6886 190.787 25.456C191.3 25.2137 191.741 24.8648 192.11 24.4092C192.488 23.9537 192.779 23.3964 192.982 22.7373C193.195 22.0686 193.302 21.3126 193.302 20.4694ZM195.657 20.4694C195.657 21.5549 195.502 22.5435 195.192 23.4352C194.882 24.3269 194.441 25.0926 193.869 25.7322C193.307 26.3622 192.623 26.8517 191.819 27.2006C191.015 27.5495 190.113 27.724 189.115 27.724C188.088 27.724 187.167 27.5495 186.353 27.2006C185.548 26.8517 184.86 26.3622 184.288 25.7322C183.726 25.0926 183.295 24.3269 182.994 23.4352C182.694 22.5435 182.544 21.5549 182.544 20.4694C182.544 19.3741 182.699 18.3807 183.009 17.489C183.319 16.5973 183.755 15.8316 184.317 15.1919C184.889 14.5522 185.577 14.0579 186.382 13.709C187.196 13.3601 188.102 13.1856 189.1 13.1856C190.118 13.1856 191.034 13.3601 191.848 13.709C192.662 14.0579 193.35 14.5522 193.913 15.1919C194.475 15.8316 194.906 16.5973 195.206 17.489C195.507 18.3807 195.657 19.3741 195.657 20.4694Z"}),o().createElement("path",{d:"M206.354 27.3896C206.16 27.4672 205.864 27.5398 205.467 27.6077C205.07 27.6755 204.595 27.7143 204.042 27.724C203.315 27.724 202.685 27.6319 202.152 27.4478C201.619 27.2733 201.173 27.0213 200.815 26.6918C200.466 26.3525 200.204 25.9455 200.03 25.4705C199.855 24.9956 199.768 24.4674 199.768 23.8859V15.4827H197.107V13.5491H199.768V9.76911H202.021V13.5491H206.15V15.4827H202.021V23.5369C202.021 23.8568 202.065 24.1524 202.152 24.4238C202.249 24.6952 202.395 24.9326 202.588 25.1362C202.792 25.33 203.049 25.4851 203.359 25.6014C203.669 25.708 204.042 25.7613 204.478 25.7613C204.779 25.7613 205.094 25.7371 205.423 25.6886C205.763 25.6402 206.073 25.5772 206.354 25.4996V27.3896Z"}),o().createElement("path",{d:"M214.681 15.1192C214.167 15.1192 213.687 15.221 213.242 15.4245C212.805 15.6281 212.423 15.9043 212.093 16.2532C211.764 16.6021 211.497 17.0141 211.293 17.489C211.09 17.9542 210.964 18.4534 210.915 18.9864H217.894C217.894 18.4437 217.821 17.9397 217.676 17.4744C217.54 16.9995 217.337 16.5876 217.065 16.2387C216.794 15.8898 216.459 15.6184 216.062 15.4245C215.665 15.221 215.204 15.1192 214.681 15.1192ZM215.917 25.7613C216.663 25.7613 217.341 25.7032 217.952 25.5869C218.572 25.4609 219.188 25.2864 219.798 25.0635V26.9389C219.304 27.1812 218.693 27.3702 217.967 27.5059C217.24 27.6513 216.459 27.724 215.626 27.724C214.637 27.724 213.707 27.598 212.835 27.346C211.972 27.094 211.216 26.6869 210.567 26.1248C209.917 25.5626 209.403 24.8309 209.025 23.9295C208.657 23.0184 208.473 21.9232 208.473 20.6438C208.473 19.3838 208.647 18.2934 208.996 17.3727C209.345 16.4422 209.811 15.6668 210.392 15.0465C210.974 14.4262 211.642 13.961 212.398 13.6509C213.154 13.3407 213.944 13.1856 214.768 13.1856C215.544 13.1856 216.266 13.3165 216.934 13.5782C217.613 13.8302 218.199 14.2324 218.693 14.7849C219.188 15.3373 219.575 16.0497 219.857 16.922C220.147 17.7943 220.293 18.8411 220.293 20.0623C220.293 20.1786 220.293 20.2804 220.293 20.3676C220.293 20.4451 220.288 20.6293 220.278 20.92H210.799C210.799 21.802 210.93 22.5532 211.192 23.1735C211.463 23.7841 211.827 24.2832 212.282 24.6709C212.747 25.0489 213.29 25.3252 213.91 25.4996C214.531 25.6741 215.199 25.7613 215.917 25.7613Z"}),o().createElement("path",{d:"M229.885 13.1856C230.553 13.1856 231.193 13.2583 231.804 13.4037C232.414 13.5394 232.938 13.7332 233.374 13.9852V15.8607C232.763 15.6281 232.201 15.4536 231.687 15.3373C231.174 15.221 230.65 15.1628 230.117 15.1628C229.555 15.1628 228.998 15.2549 228.445 15.4391C227.893 15.6232 227.398 15.9285 226.962 16.355C226.526 16.7718 226.172 17.3291 225.901 18.0269C225.639 18.7151 225.508 19.5728 225.508 20.6002C225.508 21.3465 225.605 22.0346 225.799 22.6646C226.003 23.2946 226.298 23.8423 226.686 24.3075C227.083 24.763 227.578 25.1216 228.169 25.3833C228.76 25.6353 229.444 25.7613 230.219 25.7613C230.781 25.7613 231.348 25.7032 231.92 25.5869C232.492 25.4609 233.049 25.2864 233.592 25.0635V26.9389C233.427 27.0358 233.209 27.1328 232.938 27.2297C232.676 27.3266 232.385 27.409 232.065 27.4768C231.745 27.5544 231.406 27.6125 231.048 27.6513C230.689 27.6998 230.33 27.724 229.972 27.724C229.041 27.724 228.159 27.5835 227.326 27.3024C226.502 27.0213 225.78 26.59 225.16 26.0085C224.539 25.4269 224.05 24.6903 223.691 23.7986C223.333 22.907 223.153 21.8505 223.153 20.6293C223.153 19.7182 223.245 18.8992 223.429 18.1723C223.623 17.4454 223.885 16.8057 224.215 16.2532C224.544 15.7008 224.927 15.2307 225.363 14.843C225.809 14.4553 226.279 14.1403 226.773 13.898C227.277 13.646 227.796 13.4667 228.329 13.3601C228.862 13.2438 229.381 13.1856 229.885 13.1856Z"}),o().createElement("path",{d:"M244.143 27.3896C243.949 27.4672 243.654 27.5398 243.256 27.6077C242.859 27.6755 242.384 27.7143 241.832 27.724C241.105 27.724 240.475 27.6319 239.942 27.4478C239.409 27.2733 238.963 27.0213 238.604 26.6918C238.255 26.3525 237.993 25.9455 237.819 25.4705C237.645 24.9956 237.557 24.4674 237.557 23.8859V15.4827H234.897V13.5491H237.557V9.76911H239.811V13.5491H243.94V15.4827H239.811V23.5369C239.811 23.8568 239.854 24.1524 239.942 24.4238C240.039 24.6952 240.184 24.9326 240.378 25.1362C240.581 25.33 240.838 25.4851 241.148 25.6014C241.458 25.708 241.832 25.7613 242.268 25.7613C242.568 25.7613 242.883 25.7371 243.213 25.6886C243.552 25.6402 243.862 25.5772 244.143 25.4996V27.3896Z"}),o().createElement("path",{d:"M51.9141 33.3819C51.3379 32.499 50.8019 31.6176 50.2644 30.7733C53.1038 29.0462 54.0626 27.666 54.0626 25.0559V9.97619H50.7245V7.09961H57.8236V24.2891C57.8236 28.6635 56.558 31.1188 51.9141 33.3819Z"}),o().createElement("path",{d:"M81.6522 23.0994C81.6522 24.557 82.6885 24.7104 83.3793 24.7104C84.0702 24.7104 85.0677 24.4796 85.8345 24.2503V26.9363C84.7595 27.2817 83.6473 27.5497 82.1122 27.5497C80.2705 27.5497 78.122 26.8589 78.122 23.6354V15.7307H76.1655V13.006H78.122V8.97852H81.6522V13.0075H86.1025V15.7322H81.6522V23.0994Z"}),o().createElement("path",{d:"M89.0193 34.7251V12.9691H92.3961V14.2734C93.7391 13.2371 95.2355 12.585 97.0773 12.585C100.262 12.585 102.795 14.8109 102.795 19.6067C102.795 24.3652 100.033 27.5113 95.4663 27.5113C94.3541 27.5113 93.4711 27.358 92.5495 27.1659V34.6864H89.0193V34.7251ZM96.1557 15.5017C95.1194 15.5017 93.8151 16.0005 92.5867 17.0755V24.4814C93.3535 24.6347 94.1605 24.7494 95.234 24.7494C97.7279 24.7494 99.1484 23.1756 99.1484 19.8762C99.1484 16.8447 98.1121 15.5017 96.1557 15.5017Z"}),o().createElement("path",{d:"M116.683 27.2051H113.384V25.6313H113.306C112.155 26.5142 110.735 27.4731 108.625 27.4731C106.783 27.4731 104.788 26.1301 104.788 23.4054C104.788 19.7605 107.896 19.0696 110.083 18.7629L113.19 18.3416V17.9202C113.19 16.001 112.423 15.3876 110.619 15.3876C109.736 15.3876 107.665 15.6556 105.976 16.3464L105.67 13.5071C107.205 12.9696 109.315 12.5869 111.08 12.5869C114.533 12.5869 116.759 13.9686 116.759 18.0736V27.2051H116.683ZM113.153 20.5675L110.236 21.0276C109.353 21.1422 108.433 21.6797 108.433 22.984C108.433 24.1349 109.085 24.7871 110.044 24.7871C111.08 24.7871 112.193 24.1736 113.152 23.4828V20.5675H113.153Z"}),o().createElement("path",{d:"M131.264 26.745C129.806 27.2438 128.502 27.5505 126.851 27.5505C121.556 27.5505 119.445 24.5191 119.445 20.1074C119.445 15.465 122.362 12.5869 127.08 12.5869C128.845 12.5869 129.92 12.8936 131.109 13.2778V16.2705C130.073 15.8863 128.577 15.465 127.119 15.465C124.97 15.465 123.129 16.6159 123.129 19.9153C123.129 23.5602 124.97 24.6739 127.311 24.6739C128.423 24.6739 129.652 24.4431 131.301 23.791V26.745H131.264Z"}),o().createElement("path",{d:"M137.941 19.1093C138.247 18.7639 138.478 18.4185 142.928 13.0077H147.532L141.776 19.7615L148.068 27.2432H143.464L137.978 20.4895V27.2432H134.449V7.09973H137.979V19.1093H137.941Z"}),o().createElement("path",{d:"M73.5167 26.7445C71.6749 27.3207 70.1011 27.55 68.2593 27.55C63.7316 27.55 60.9309 25.2869 60.9309 19.9908C60.9309 16.1152 63.3102 12.585 67.8752 12.585C72.403 12.585 73.9768 15.731 73.9768 18.7238C73.9768 19.7213 73.8993 20.2588 73.8621 20.8335H64.7306C64.808 23.9409 66.5724 24.6705 69.2197 24.6705C70.6773 24.6705 71.9816 24.325 73.4795 23.7875V26.7416H73.5167V26.7445ZM70.2947 18.4945C70.2947 16.7673 69.7185 15.271 67.8395 15.271C66.0751 15.271 65.0001 16.5365 64.7693 18.4945H70.2947Z"})))}},8509:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var n=a(3022),r=a(1609),c=a(7371);const s=Number(c.A.smCols),i=Number(c.A.mdCols),o=Number(c.A.lgCols),l=e=>{const{children:t,tagName:a="div",className:l}=e,u=Math.min(s,"number"==typeof e.sm?e.sm:s),d=Math.min(s,"object"==typeof e.sm?e.sm.start:0),p=Math.min(s,"object"==typeof e.sm?e.sm.end:0),m=Math.min(i,"number"==typeof e.md?e.md:i),h=Math.min(i,"object"==typeof e.md?e.md.start:0),g=Math.min(i,"object"==typeof e.md?e.md.end:0),v=Math.min(o,"number"==typeof e.lg?e.lg:o),f=Math.min(o,"object"==typeof e.lg?e.lg.start:0),y=Math.min(o,"object"==typeof e.lg?e.lg.end:0),E=(0,n.A)(l,{[c.A[`col-sm-${u}`]]:!(d&&p),[c.A[`col-sm-${d}-start`]]:d>0,[c.A[`col-sm-${p}-end`]]:p>0,[c.A[`col-md-${m}`]]:!(h&&g),[c.A[`col-md-${h}-start`]]:h>0,[c.A[`col-md-${g}-end`]]:g>0,[c.A[`col-lg-${v}`]]:!(f&&y),[c.A[`col-lg-${f}-start`]]:f>0,[c.A[`col-lg-${y}-end`]]:y>0});return(0,r.createElement)(a,{className:E},t)}},5918:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var n=a(3022),r=a(1609),c=a(2420);const s=({children:e,fluid:t=!1,tagName:a="div",className:s,horizontalGap:i=1,horizontalSpacing:o=1},l)=>{const u=(0,r.useMemo)((()=>{const e=`calc( var(--horizontal-spacing) * ${o} )`;return{paddingTop:e,paddingBottom:e,rowGap:`calc( var(--horizontal-spacing) * ${i} )`}}),[i,o]),d=(0,n.A)(s,c.A.container,{[c.A.fluid]:t});return(0,r.createElement)(a,{className:d,style:u,ref:l},e)},i=(0,r.forwardRef)(s)},442:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});var n=a(9491),r=a(8403);const c=["sm","md","lg"],s=(e,t)=>{const a=Array.isArray(e)?e:[e],s=Array.isArray(t)?t:[t],[i,o,l]=c,u={sm:(0,n.useMediaQuery)(r.A[i]),md:(0,n.useMediaQuery)(r.A[o]),lg:(0,n.useMediaQuery)(r.A[l])};return a.map(((e,t)=>{const a=s[t];return a?((e,t,a)=>{const n=c.indexOf(e),r=n+1,s=t.includes("=");let i=[];return t.startsWith("<")&&(i=c.slice(0,s?r:n)),t.startsWith(">")&&(i=c.slice(s?n:r)),i?.length?i.some((e=>a[e])):a[e]})(e,a,u):u[e]}))}},5734:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(5531);const r=e=>React.createElement("mark",{key:e,className:n.A["marked-lines__mark"]},e),c=({context:e})=>{const{marks:t,...a}=e;return React.createElement("div",{className:n.A["marked-lines"]},React.createElement("div",{className:n.A["marked-lines__line-numbers"]},Object.keys(a).map((e=>{const a=Object.hasOwn(t,e);return React.createElement("div",{key:e,className:`${n.A["marked-lines__line-number"]} ${a?n.A["marked-lines__marked-line"]:""}`},e)}))),React.createElement("div",{className:n.A["marked-lines__lines"]},Object.keys(a).map((e=>{const c=a[e]||" ",s=Object.hasOwn(t,e);return React.createElement("div",{key:e,className:`${n.A["marked-lines__line"]} ${s?n.A["marked-lines__marked-line"]:""} `},React.createElement(React.Fragment,null,s?((e,t)=>{const[a,n]=e.reduce((([e,a],[n,c])=>{const s=t.slice(n,c);return[[...e,...n>a?[t.slice(a,n),r(s)]:[r(s)]],c]}),[[],0]);return n{"use strict";a.d(t,{A:()=>m});var n=a(3751),r=a(9783),c=a(3883),s=a(1113),i=a(991),o=a(3022),l=a(1609),u=a.n(l),d=a(7410);const p=e=>{switch(e){case"error":case"warning":default:return n.A;case"info":return r.A;case"success":return c.A}},m=({level:e="info",title:t,children:a,actions:n,hideCloseButton:r=!1,onClose:c})=>{const l=(0,o.A)(d.A.container,d.A[`is-${e}`]);return u().createElement("div",{className:l},u().createElement("div",{className:d.A["icon-wrapper"]},u().createElement(s.A,{icon:p(e),className:d.A.icon})),u().createElement("div",{className:d.A["main-content"]},t&&u().createElement("div",{className:d.A.title},t),a,n&&n.length>0&&u().createElement("div",{className:d.A["action-bar"]},n.map(((e,t)=>u().createElement("div",{key:t,className:d.A.action},e))))),!r&&u().createElement("button",{"aria-label":"close",className:d.A["close-button"],onClick:c},u().createElement(s.A,{icon:i.A})))}},7975:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});var n=a(1437);const r=(e,t={})=>{const a=(0,n.Y)();return new Intl.NumberFormat(a,t).format(e)}},9245:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>w,N0:()=>b,eY:()=>E,i7:()=>A});var n=a(7723),r=a(1113),c=a(3883),s=a(1249),i=a(3022),o=a(1609),l=a.n(o),u=a(597),d=a(442),p=a(5879),m=a(7425),h=a(3142);const __=n.__,g=__("Included","jetpack-protect"),v=__("Not included","jetpack-protect"),f=__("Coming soon","jetpack-protect"),y=(0,o.createContext)(void 0),E=({isIncluded:e=!1,isComingSoon:t=!1,index:a=0,label:p=null,tooltipInfo:E,tooltipTitle:A,tooltipClassName:b=""})=>{const[w]=(0,d.A)("lg"),k=(0,o.useContext)(y)[a],R=t||e,C=k.name,_=k.tooltipInfo,j=k.tooltipTitle,x=E||!w&&_,S=((e,t,a)=>e?{lg:f, -// translators: Name of the current feature -default:(0,n.sprintf)(__("%s coming soon","jetpack-protect"),a)}:{lg:t?g:v,default:t?a:(0,n.sprintf)(/* translators: Name of the current feature */ -__("%s not included","jetpack-protect"),a)})(t,e,C),M=w?S.lg:S.default;return l().createElement("div",{className:(0,i.A)(h.A.item,h.A.value)},l().createElement(r.A,{className:(0,i.A)(h.A.icon,R?h.A["icon-check"]:h.A["icon-cross"]),size:32,icon:R?c.A:s.A}),l().createElement(m.Ay,{variant:"body-small"},p||M),x&&l().createElement(u.A,{title:A||j,iconClassName:h.A["popover-icon"],className:(0,i.A)(h.A.popover,b),placement:"bottom-end",iconSize:14,offset:4,wide:Boolean(A&&E)},l().createElement(m.Ay,{variant:"body-small",component:"div"},E||_)))},A=({children:e})=>l().createElement("div",{className:h.A.header},e),b=({primary:e=!1,children:t})=>{let a=0;return l().createElement("div",{className:(0,i.A)(h.A.card,{[h.A["is-primary"]]:e})},o.Children.map(t,(e=>{const t=e;return t.type===E?(a++,(0,o.cloneElement)(t,{index:a-1})):t})))},w=({title:e,items:t,children:a,showIntroOfferDisclaimer:n=!1})=>{const[r]=(0,d.A)("lg");return l().createElement(y.Provider,{value:t},l().createElement("div",{className:(0,i.A)(h.A.container,{[h.A["is-viewport-large"]]:r}),style:{"--rows":t.length+1,"--columns":o.Children.toArray(a).length+1}},l().createElement("div",{className:h.A.table},l().createElement(m.Ay,{variant:"headline-small"},e),r&&t.map(((e,a)=>l().createElement("div",{className:(0,i.A)(h.A.item,{[h.A["last-feature"]]:a===t.length-1}),key:a},l().createElement(m.Ay,{variant:"body-small"},l().createElement("strong",null,e.name)),e.tooltipInfo&&l().createElement(u.A,{title:e.tooltipTitle,iconClassName:h.A["popover-icon"],className:h.A.popover,placement:e.tooltipPlacement?e.tooltipPlacement:"bottom-end",iconSize:14,offset:4,wide:Boolean(e.tooltipTitle&&e.tooltipInfo)},l().createElement(m.Ay,{variant:"body-small"},e.tooltipInfo))))),a)),l().createElement("div",{className:h.A["tos-container"]},l().createElement("div",{className:h.A.tos},n&&l().createElement(m.Ay,{variant:"body-small"},__("Reduced pricing is a limited offer for the first year and renews at regular price.","jetpack-protect")),l().createElement(p.A,{multipleButtons:!0}))))}},489:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var n=a(7723),r=a(3022),c=a(7425),s=a(2746),i=a(3407);const __=n.__,o=({price:e,offPrice:t,currency:a="",showNotOffPrice:n=!0,hideDiscountLabel:o=!0,promoLabel:l="",legend:u=__("/month, paid yearly","jetpack-protect"),isNotConvenientPrice:d=!1,hidePriceFraction:p=!1,children:m})=>{if(null==e&&null==t||!a)return null;n=n&&null!=t;const h="number"==typeof e&&"number"==typeof t?Math.floor((e-t)/e*100):0,g=!o&&h&&h>0?h+__("% off","jetpack-protect"):null;return React.createElement(React.Fragment,null,React.createElement("div",{className:i.A.container},React.createElement("div",{className:(0,r.A)(i.A["price-container"],"product-price_container")},React.createElement(s.g,{value:t??e,currency:a,isOff:!d,hidePriceFraction:p}),n&&React.createElement(s.g,{value:e,currency:a,isOff:!1,hidePriceFraction:p}),g&&React.createElement(c.Ay,{className:(0,r.A)(i.A["promo-label"],"product-price_promo_label")},g))),React.createElement("div",{className:i.A.footer},m||React.createElement(c.Ay,{className:(0,r.A)(i.A.legend,"product-price_legend")},u),l&&React.createElement(c.Ay,{className:(0,r.A)(i.A["promo-label"],"product-price_promo_label")},l)))}},2746:(e,t,a)=>{"use strict";a.d(t,{g:()=>i});var n=a(7397),r=a(3022),c=a(7425),s=a(3407);const i=({value:e,currency:t,isOff:a,hidePriceFraction:i})=>{const o=(0,r.A)(s.A.price,"product-price_price",{[s.A["is-not-off-price"]]:!a}),{symbol:l,integer:u,fraction:d}=(0,n.vA)(e,t),p=!i||!d.endsWith("00");return React.createElement(c.Ay,{className:o,variant:"headline-medium",component:"p"},React.createElement(c.Ay,{className:s.A.symbol,component:"sup",variant:"title-medium"},l),u,p&&React.createElement(c.Ay,{component:"sup",variant:"body-small","data-testid":"PriceFraction"},React.createElement("strong",null,d)))}},6461:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var n=a(8120),r=a.n(n),c=a(1609),s=a.n(c);a(8325);const i=({color:e="#FFFFFF",className:t="",size:a=20})=>{const n=t+" jp-components-spinner",r={width:a,height:a,fontSize:a,borderTopColor:e},c={borderTopColor:e,borderRightColor:e};return s().createElement("div",{className:n},s().createElement("div",{className:"jp-components-spinner__outer",style:r},s().createElement("div",{className:"jp-components-spinner__inner",style:c})))};i.propTypes={color:r().string,className:r().string,size:r().number};const o=i},3390:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var n=a(6427),r=a(3022),c=a(7975),s=a(7425),i=a(9439);const o=({className:e,hideValue:t,icon:a,label:o,value:l,variant:u="square"})=>{const d=(0,c.A)(l),p=(0,c.A)(l,{notation:"compact",compactDisplay:"short"});return React.createElement("div",{className:(0,r.A)(e,i.A.wrapper,i.A[u])},React.createElement("div",{className:(0,r.A)(i.A.icon)},a),React.createElement("div",{className:(0,r.A)(i.A.info)},React.createElement(s.Ay,{className:i.A.label},o),"square"===u?React.createElement(n.Tooltip,{text:d,placement:"top"},React.createElement(s.Ay,{variant:"headline-small",className:(0,r.A)(i.A.value)},t?"-":p)):React.createElement(s.Ay,{variant:"title-medium-semi-bold",className:(0,r.A)(i.A.value)},t?"-":d)))}},1158:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var n=a(7723),r=a(3022),c=a(7425),s=a(416);const __=n.__,i=({className:e,label:t,status:a="inactive"})=>{const n={active:__("Active","jetpack-protect"),error:__("Error","jetpack-protect"),action:__("Action needed","jetpack-protect"),inactive:__("Inactive","jetpack-protect"),initializing:__("Setting up","jetpack-protect")};return React.createElement(c.Ay,{variant:"body-extra-small",className:(0,r.A)(s.A.status,{[s.A[`is-${a}`]]:a},e)},React.createElement("span",{className:s.A.status__indicator}),React.createElement("span",{className:s.A.status__label},t||""===t?t:n[a]))}},5879:(e,t,a)=>{"use strict";a.d(t,{A:()=>h});var n=a(6072),r=a.n(n),c=a(6087),s=a(7723),i=a(3022),o=a(3924),l=a(7425);a(9634);const __=s.__,u=({multipleButtonsLabels:e})=>Array.isArray(e)&&e.length>1?(0,c.createInterpolateElement)((0,s.sprintf)(/* translators: %1$s is button label 1 and %2$s is button label 2 */ -__("By clicking %1$s or %2$s, you agree to our Terms of Service and to sync your site‘s data with us.","jetpack-protect"),e[0],e[1]),{strong:React.createElement("strong",null),tosLink:React.createElement(m,{slug:"wpcom-tos"}),shareDetailsLink:React.createElement(m,{slug:"jetpack-support-what-data-does-jetpack-sync"})}):(0,c.createInterpolateElement)(__("By clicking the buttons above, you agree to our Terms of Service and to sync your site‘s data with us.","jetpack-protect"),{tosLink:React.createElement(m,{slug:"wpcom-tos"}),shareDetailsLink:React.createElement(m,{slug:"jetpack-support-what-data-does-jetpack-sync"})}),d=({agreeButtonLabel:e})=>(0,c.createInterpolateElement)((0,s.sprintf)(/* translators: %s is a button label */ -__("By clicking %s, you agree to our Terms of Service and to sync your site‘s data with us.","jetpack-protect"),e),{strong:React.createElement("strong",null),tosLink:React.createElement(m,{slug:"wpcom-tos"}),shareDetailsLink:React.createElement(m,{slug:"jetpack-support-what-data-does-jetpack-sync"})}),p=()=>(0,c.createInterpolateElement)(__("By continuing you agree to our Terms of Service and to sync your site’s data with us. We’ll check if that email is linked to an existing WordPress.com account or create a new one instantly.","jetpack-protect"),{tosLink:React.createElement(m,{slug:"wpcom-tos"}),shareDetailsLink:React.createElement(m,{slug:"jetpack-support-what-data-does-jetpack-sync"})}),m=({slug:e,children:t})=>React.createElement("a",{className:"terms-of-service__link",href:(0,o.A)(e),rel:"noopener noreferrer",target:"_blank"},t),h=({className:e,multipleButtons:t,agreeButtonLabel:a,isTextOnly:n,...c})=>React.createElement(l.Ay,r()({className:(0,i.A)(e,"terms-of-service")},c),n?React.createElement(p,null):t?React.createElement(u,{multipleButtonsLabels:t}):React.createElement(d,{agreeButtonLabel:a}))},110:(e,t,a)=>{"use strict";a.d(t,{Q:()=>n,Z:()=>r});const n={"headline-medium":"h1","headline-small":"h2","headline-small-regular":"h2","title-medium":"h3","title-medium-semi-bold":"h3","title-small":"h4",body:"p","body-small":"p","body-extra-small":"p","body-extra-small-bold":"p",label:"p"},r=["mt","mr","mb","ml","mx","my","m","pt","pr","pb","pl","px","py","p"]},7425:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>d,H3:()=>p,hE:()=>m});var n=a(6072),r=a.n(n),c=a(3022),s=a(1609),i=a.n(s),o=a(110),l=a(4495);const u=(0,s.forwardRef)((({variant:e="body",children:t,component:a,className:n,...u},d)=>{const p=a||o.Q[e]||"span",m=(0,s.useMemo)((()=>o.Z.reduce(((e,t)=>(void 0!==u[t]&&(e+=l.A[`${t}-${u[t]}`]+" ",delete u[t]),e)),"")),[u]);return i().createElement(p,r()({className:(0,c.A)(l.A.reset,l.A[e],n,m)},u,{ref:d}),t)}));u.displayName="Text";const d=u,p=({children:e,weight:t="bold",...a})=>{const n="headline-small"+("bold"===t?"":`-${t}`);return i().createElement(u,r()({variant:n,mb:3},a),e)},m=({children:e,size:t="medium",...a})=>i().createElement(u,r()({variant:`title-${t}`,mb:1},a),e)},723:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>p});var n=a(1609),r=a.n(n),c=a(9422);const s={"--font-headline-medium":"48px","--font-headline-small":"36px","--font-title-medium":"24px","--font-title-small":"20px","--font-body":"16px","--font-body-small":"14px","--font-body-extra-small":"12px","--font-title-large":"var(--font-headline-small)","--font-label":"var(--font-body-extra-small)"},i={"--jp-black":"#000000","--jp-black-80":"#2c3338","--jp-white":"#ffffff","--jp-white-off":"#f9f9f6","--jp-gray":"#dcdcde","--jp-gray-0":"#F6F7F7","--jp-gray-5":"var(--jp-gray)","--jp-gray-10":"#C3C4C7","--jp-gray-20":"#A7AAAD","--jp-gray-40":"#787C82","--jp-gray-50":"#646970","--jp-gray-60":"#50575E","--jp-gray-70":"#3C434A","--jp-gray-80":"#2C3338","--jp-gray-90":"#1d2327","--jp-gray-off":"#e2e2df","--jp-red-0":"#F7EBEC","--jp-red-5":"#FACFD2","--jp-red-40":"#E65054","--jp-red-50":"#D63638","--jp-red-60":"#B32D2E","--jp-red-70":"#8A2424","--jp-red-80":"#691C1C","--jp-red":"#d63639","--jp-yellow-5":"#F5E6B3","--jp-yellow-10":"#F2CF75","--jp-yellow-20":"#F0C930","--jp-yellow-30":"#DEB100","--jp-yellow-40":"#C08C00","--jp-yellow-50":"#9D6E00","--jp-yellow-60":"#7D5600","--jp-blue-20":"#68B3E8","--jp-blue-40":"#1689DB","--jp-pink":"#C9356E","--jp-green-0":"#f0f2eb","--jp-green-5":"#d0e6b8","--jp-green-10":"#9dd977","--jp-green-20":"#64ca43","--jp-green-30":"#2fb41f","--jp-green-40":"#069e08","--jp-green-50":"#008710","--jp-green-60":"#007117","--jp-green-70":"#005b18","--jp-green-80":"#004515","--jp-green-90":"#003010","--jp-green-100":"#001c09","--jp-green":"#069e08","--jp-green-primary":"var( --jp-green-40 )","--jp-green-secondary":"var( --jp-green-30 )"},o={"--jp-border-radius":"4px","--jp-menu-border-height":"1px","--jp-underline-thickness":"2px"},l={"--spacing-base":"8px"},u={},d=(e,t,a)=>{const n={...s,...i,...o,...l};for(const t in n)e.style.setProperty(t,n[t]);a&&e.classList.add(c.A.global),t&&(u[t]={provided:!0,root:e})},p=({children:e=null,targetDom:t,id:a,withGlobalStyles:c=!0})=>{const s=(0,n.useRef)(),i=u?.[a]?.provided;return(0,n.useLayoutEffect)((()=>{if(!i)return t?d(t,a,c):void(s?.current&&d(s.current,a,c))}),[t,s,i,a,c]),t?r().createElement(r().Fragment,null,e):r().createElement("div",{ref:s},e)}},1014:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(7723),r=a(4105);const _x=n._x,c=({severity:e})=>e>=5?React.createElement(r.A,{variant:"danger"},_x("Critical","Severity label for issues rated 5 or higher.","jetpack-protect")):e>=3&&e<5?React.createElement(r.A,{variant:"warning"},_x("High","Severity label for issues rated between 3 and 5.","jetpack-protect")):React.createElement(r.A,null,_x("Low","Severity label for issues rated below 3.","jetpack-protect"))},8316:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var n=a(6427),r=a(3022),c=a(1609),s=a(7021);const i=({checked:e,className:t,disabled:a,help:i,toggling:o,label:l,size:u="normal",onChange:d})=>{const p=void 0!==o?e&&!o||!e&&o:e,m=(0,c.useCallback)((e=>{o||d(e)}),[o,d]);return React.createElement(n.ToggleControl,{__nextHasNoMarginBottom:!0,checked:p,className:(0,r.A)(s.A.toggle,t,{[s.A["is-toggling"]]:o,[s.A["is-small"]]:"small"===u,[s.A["no-label"]]:!l}),disabled:a,help:i,label:l,onChange:m})}},1437:(e,t,a)=>{"use strict";a.d(t,{Y:()=>r});var n=a(8443);const r=()=>{const{l10n:{locale:e}}=(0,n.getSettings)();if(e)return(e=>{const t=e.match(/^([a-z]{2,3})(_[a-z]{2}|_[a-z][a-z0-9]{4,7})?(?:_.*)?$/i);return t?`${t[1]}${t[2]?t[2]:""}`.replace("_","-"):"en-US"})(e);return window?.window?.navigator?.language??"en-US"}},1069:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});var n=a(7999);function r(){return(0,n.getScriptData)()?.site?.admin_url||window.Initial_State?.adminUrl||window.Jetpack_Editor_Initial_State?.adminUrl||window?.myJetpackInitialState?.adminUrl||null}},3924:(e,t,a)=>{"use strict";function n(e,t={}){const a={};let n;if("undefined"!=typeof window&&(n=window?.JP_CONNECTION_INITIAL_STATE?.calypsoEnv),0===e.search("https://")){const t=new URL(e);e=`https://${t.host}${t.pathname}`,a.url=encodeURIComponent(e)}else a.source=encodeURIComponent(e);for(const e in t)a[e]=encodeURIComponent(t[e]);!Object.keys(a).includes("site")&&"undefined"!=typeof jetpack_redirects&&Object.hasOwn(jetpack_redirects,"currentSiteRawUrl")&&(a.site=jetpack_redirects.currentBlogID??jetpack_redirects.currentSiteRawUrl),n&&(a.calypso_env=n);return"https://jetpack.com/redirect/?"+Object.keys(a).map((e=>e+"="+a[e])).join("&")}a.d(t,{A:()=>n})},6439:(e,t,a)=>{let n={};try{n=a(6201)}catch{console.error("jetpackConfig is missing in your webpack config file. See @automattic/jetpack-config"),n={missingConfig:!0}}const r=e=>Object.hasOwn(n,e);e.exports={jetpackConfigHas:r,jetpackConfigGet:e=>{if(!r(e))throw'This app requires the "'+e+'" Jetpack Config to be defined in your webpack configuration file. See details in @automattic/jetpack-config package docs.';return n[e]}}},4705:(e,t,a)=>{"use strict";a(8992),a(1135)},1135:(e,t,a)=>{"use strict";a.d(t,{$:()=>n});const n=[{name:"amazon",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M13.582 8.182c-1.648.185-3.802.308-5.344.984-1.781.769-3.03 2.337-3.03 4.644 0 2.953 1.86 4.429 4.253 4.429 2.02 0 3.125-.477 4.685-2.065.516.747.685 1.109 1.629 1.894a.59.59 0 0 0 .672-.066l.006.006c.567-.505 1.599-1.401 2.18-1.888.231-.188.19-.496.009-.754-.52-.718-1.072-1.303-1.072-2.634V8.305c0-1.876.133-3.599-1.249-4.891C15.23 2.369 13.422 2 12.04 2 9.336 2 6.318 3.01 5.686 6.351c-.068.355.191.542.423.594l2.754.298c.258-.013.445-.266.494-.523.236-1.151 1.2-1.706 2.284-1.706.584 0 1.249.215 1.595.738.398.584.346 1.384.346 2.061zm-.533 5.906c-.451.8-1.169 1.291-1.967 1.291-1.09 0-1.728-.83-1.728-2.061 0-2.42 2.171-2.86 4.227-2.86v.615c.001 1.108.027 2.031-.532 3.015m7.634 5.251C18.329 21.076 14.917 22 11.979 22c-4.118 0-7.826-1.522-10.632-4.057-.22-.199-.024-.471.241-.317 3.027 1.762 6.771 2.823 10.639 2.823 2.608 0 5.476-.541 8.115-1.66.397-.169.73.262.341.55m.653 1.704c-.194.163-.379.076-.293-.139.284-.71.92-2.298.619-2.684s-1.99-.183-2.749-.092c-.23.027-.266-.173-.059-.319 1.348-.946 3.555-.673 3.811-.356.26.32-.066 2.533-1.329 3.59"})))},{name:"behance",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M7.799 5.698c.589 0 1.12.051 1.606.156q.722.155 1.241.507.516.351.804.938c.188.387.281.871.281 1.443q0 .93-.421 1.551-.424.62-1.255 1.014 1.133.328 1.689 1.146.559.822.557 1.975 0 .935-.359 1.612a3.14 3.14 0 0 1-.973 1.114q-.613.432-1.399.637A6.1 6.1 0 0 1 7.963 18H2V5.698zm-.35 4.97q.721 0 1.192-.345.465-.344.463-1.119 0-.43-.152-.707a1.1 1.1 0 0 0-.416-.427 1.7 1.7 0 0 0-.596-.216 3.6 3.6 0 0 0-.697-.06H4.709v2.874zm.151 5.237q.401.001.759-.077c.243-.053.457-.137.637-.261.182-.12.332-.283.441-.491q.164-.31.163-.798-.002-.948-.533-1.357c-.356-.27-.83-.404-1.413-.404H4.709v3.388zm8.562-.041q.552.538 1.583.538.74 0 1.277-.374c.354-.248.571-.514.654-.79h2.155c-.347 1.072-.872 1.838-1.589 2.299-.708.463-1.572.693-2.58.693q-1.05 0-1.899-.337a4 4 0 0 1-1.439-.958 4.4 4.4 0 0 1-.904-1.484 5.4 5.4 0 0 1-.32-1.899q0-1 .329-1.863a4.4 4.4 0 0 1 .933-1.492q.607-.63 1.444-.994a4.6 4.6 0 0 1 1.857-.363q1.131-.001 1.98.44a3.94 3.94 0 0 1 1.389 1.181 4.8 4.8 0 0 1 .783 1.69q.24.947.171 1.983h-6.428c-.001.706.237 1.372.604 1.73m2.811-4.68c-.291-.321-.783-.496-1.384-.496q-.585 0-.973.2a2 2 0 0 0-.621.491 1.8 1.8 0 0 0-.328.628 2.7 2.7 0 0 0-.111.587h3.98c-.058-.625-.271-1.085-.563-1.41m-3.916-3.446h4.985V6.524h-4.985z"})))},{name:"blogger-alt",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M19.779 9.904h-.981l-.021.001a1.163 1.163 0 0 1-1.16-1.079l-.001-.013A5.813 5.813 0 0 0 11.803 3H8.871a5.813 5.813 0 0 0-5.813 5.813v6.375a5.813 5.813 0 0 0 5.813 5.813h6.257a5.814 5.814 0 0 0 5.813-5.813l.002-4.121a1.164 1.164 0 0 0-1.164-1.163M8.726 7.713h3.291a1.117 1.117 0 1 1 0 2.234H8.726a1.117 1.117 0 1 1 0-2.234m6.601 8.657H8.72a1.057 1.057 0 1 1 0-2.114h6.607a1.057 1.057 0 1 1 0 2.114"})))},{name:"blogger",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M14.722 14.019a.654.654 0 0 1-.654.654H9.977a.654.654 0 0 1 0-1.308h4.091c.361 0 .654.293.654.654m-4.741-3.321h2.038a.692.692 0 0 0 0-1.384H9.981a.692.692 0 0 0 0 1.384M21 5v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2m-3.456 6.39a.72.72 0 0 0-.72-.72h-.607l-.013.001a.72.72 0 0 1-.718-.668l-.001-.008a3.6 3.6 0 0 0-3.599-3.599H10.07a3.6 3.6 0 0 0-3.599 3.599v3.947a3.6 3.6 0 0 0 3.599 3.599h3.874a3.6 3.6 0 0 0 3.599-3.599z"})))},{name:"bluesky",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M21.2 3.3c-.5-.2-1.4-.5-3.6 1C15.4 6 12.9 9.2 12 11c-.9-1.8-3.4-5-5.7-6.7-2.2-1.6-3-1.3-3.6-1S2 4.6 2 5.1s.3 4.7.5 5.4c.7 2.3 3.1 3.1 5.3 2.8-3.3.5-6.2 1.7-2.4 5.9 4.2 4.3 5.7-.9 6.5-3.6.8 2.7 1.7 7.7 6.4 3.6 3.6-3.6 1-5.4-2.3-5.9 2.2.2 4.6-.5 5.3-2.8.4-.7.7-4.8.7-5.4 0-.5-.1-1.5-.8-1.8"})))},{name:"codepen",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"m22.016 8.84-.007-.037q-.006-.037-.015-.072-.007-.022-.013-.042l-.023-.062-.02-.042a.4.4 0 0 0-.03-.057l-.025-.038-.035-.052-.03-.037q-.021-.026-.043-.045-.015-.018-.035-.035a.4.4 0 0 0-.048-.04l-.037-.03-.015-.012-9.161-6.096a.86.86 0 0 0-.955 0L2.359 8.237l-.015.012-.038.028-.048.04a.638.638 0 0 0-.078.082q-.018.018-.03.037-.018.026-.035.052l-.025.038q-.016.031-.03.059l-.02.041a1 1 0 0 0-.034.106q-.01.034-.016.071-.003.02-.006.037a1 1 0 0 0-.009.114v6.093q0 .056.008.112l.007.038q.006.035.015.072a.2.2 0 0 0 .013.04q.01.032.022.063l.02.04a.4.4 0 0 0 .055.096l.035.052.03.037.042.045.035.035q.023.02.048.04l.038.03.013.01 9.163 6.095a.858.858 0 0 0 .959.004l9.163-6.095.015-.01q.02-.015.037-.03l.048-.04q.02-.017.035-.035.025-.024.043-.045l.03-.037.035-.052.025-.038a.4.4 0 0 0 .03-.058l.02-.04.023-.063c.003-.013.01-.027.013-.04q.009-.037.015-.072l.007-.037q.006-.062.007-.117V8.954a1 1 0 0 0-.008-.114m-9.154-4.376 6.751 4.49-3.016 2.013-3.735-2.492zm-1.724 0v4.009l-3.735 2.494-3.014-2.013zm-7.439 6.098L5.853 12l-2.155 1.438zm7.439 8.974-6.749-4.491 3.015-2.011 3.735 2.492zM12 14.035 8.953 12 12 9.966 15.047 12zm.862 5.501v-4.009l3.735-2.492 3.016 2.011zm7.441-6.098L18.147 12l2.156-1.438z"})))},{name:"deezer",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M20.129 3.662c.222-1.287.548-2.096.909-2.098h.001c.673.002 1.219 2.809 1.219 6.274s-.546 6.274-1.22 6.274c-.276 0-.531-.477-.736-1.276-.324 2.926-.997 4.937-1.776 4.937-.603 0-1.144-1.208-1.507-3.114-.248 3.624-.872 6.195-1.602 6.195-.458 0-.875-1.019-1.184-2.678C13.861 21.6 13.003 24 12.002 24s-1.861-2.399-2.231-5.824c-.307 1.659-.724 2.678-1.184 2.678-.73 0-1.352-2.571-1.602-6.195-.363 1.905-.903 3.114-1.507 3.114-.778 0-1.452-2.011-1.776-4.937-.204.802-.46 1.276-.736 1.276-.674 0-1.22-2.809-1.22-6.274s.546-6.274 1.22-6.274c.362 0 .685.812.91 2.098.357-2.22.94-3.662 1.6-3.662.784 0 1.463 2.04 1.784 5.002.314-2.156.791-3.53 1.325-3.53.749 0 1.385 2.703 1.621 6.474.443-1.933 1.085-3.146 1.795-3.146s1.352 1.214 1.795 3.146c.237-3.771.872-6.474 1.621-6.474.533 0 1.009 1.374 1.325 3.53.321-2.962 1-5.002 1.784-5.002.658 0 1.244 1.443 1.603 3.662M0 7.221c0-1.549.31-2.805.692-2.805s.692 1.256.692 2.805-.31 2.805-.692 2.805S0 8.77 0 7.221m22.616 0c0-1.549.31-2.805.692-2.805S24 5.672 24 7.221s-.31 2.805-.692 2.805-.692-1.256-.692-2.805"})))},{name:"discord",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M20.33 4.523A20 20 0 0 0 15.379 3a14 14 0 0 0-.634 1.289 18.4 18.4 0 0 0-5.495 0A14 14 0 0 0 8.615 3 20 20 0 0 0 3.66 4.527C.527 9.163-.323 13.684.102 18.141a20 20 0 0 0 6.073 3.049 14.7 14.7 0 0 0 1.301-2.097 13 13 0 0 1-2.048-.978q.258-.189.502-.378a14.27 14.27 0 0 0 12.142 0q.247.202.502.378a13 13 0 0 1-2.052.98 14.5 14.5 0 0 0 1.301 2.095 19.9 19.9 0 0 0 6.076-3.047c.498-5.168-.851-9.648-3.568-13.62M8.013 15.4c-1.183 0-2.161-1.074-2.161-2.395S6.796 10.6 8.01 10.6s2.183 1.083 2.163 2.405S9.22 15.4 8.013 15.4m7.974 0c-1.186 0-2.16-1.074-2.16-2.395s.944-2.405 2.16-2.405 2.178 1.083 2.157 2.405-.951 2.395-2.158 2.395"})))},{name:"dribbble",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10m8.434-8.631c-.292-.092-2.644-.794-5.32-.365 1.117 3.07 1.572 5.57 1.659 6.09a8.56 8.56 0 0 0 3.661-5.725m-5.098 6.507c-.127-.749-.623-3.361-1.822-6.477l-.056.019c-4.818 1.679-6.547 5.02-6.701 5.334A8.5 8.5 0 0 0 12 20.555a8.5 8.5 0 0 0 3.336-.679m-9.682-2.152c.193-.331 2.538-4.213 6.943-5.637q.167-.054.337-.102a29 29 0 0 0-.692-1.45c-4.266 1.277-8.405 1.223-8.778 1.216a8.497 8.497 0 0 0 2.19 5.973m-2.015-7.46c.382.005 3.901.02 7.897-1.041a55 55 0 0 0-3.167-4.94 8.57 8.57 0 0 0-4.73 5.981m6.359-6.555a46 46 0 0 1 3.187 5c3.037-1.138 4.323-2.867 4.477-3.085a8.51 8.51 0 0 0-7.664-1.915m8.614 2.903c-.18.243-1.612 2.078-4.77 3.367a27 27 0 0 1 .751 1.678c2.842-.357 5.666.215 5.948.275a8.5 8.5 0 0 0-1.929-5.32"})))},{name:"dropbox",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 6.134 6.069 9.797 2 6.54l5.883-3.843zm-10 6.92 5.883 3.843L12 13.459 6.069 9.797zm10 .405 4.116 3.439L22 13.054l-4.069-3.257zM22 6.54l-5.884-3.843L12 6.134l5.931 3.663zm-9.989 7.66-4.129 3.426-1.767-1.153v1.291l5.896 3.539 5.897-3.539v-1.291l-1.769 1.153z"})))},{name:"eventbrite",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M18.041 3.931 5.959 3A2.96 2.96 0 0 0 3 5.959v12.083A2.96 2.96 0 0 0 5.959 21l12.083-.931C19.699 19.983 21 18.744 21 17.11V6.89c0-1.634-1.259-2.863-2.959-2.959M16.933 8.17c-.082.215-.192.432-.378.551-.188.122-.489.132-.799.132-1.521 0-3.062-.048-4.607-.048q-.23 1.061-.451 2.128c.932-.004 1.873.005 2.81.005.726 0 1.462-.069 1.586.525.04.189-.001.426-.052.615-.105.38-.258.676-.625.783-.185.054-.408.058-.646.058-1.145 0-2.345.017-3.493.02-.169.772-.328 1.553-.489 2.333 1.57-.005 3.067-.041 4.633-.058.627-.007 1.085.194 1.009.85a2.2 2.2 0 0 1-.211.725c-.102.208-.248.376-.488.452-.237.075-.541.064-.862.078-.304.014-.614.008-.924.016-.309.009-.619.022-.919.022-1.253 0-2.429.08-3.683.073-.603-.004-1.014-.249-1.124-.757-.059-.273-.018-.58.036-.841a3543 3543 0 0 1 1.629-7.763c.056-.265.114-.511.225-.714a1.24 1.24 0 0 1 .79-.62c.368-.099.883-.047 1.344-.047.305 0 .612.008.914.016.925.026 1.817.03 2.747.053.304.007.615.016.915.016.621 0 1.17.073 1.245.614.039.288-.051.567-.132.783"})))},{name:"facebook",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10"})))},{name:"fediverse",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 743 743"},React.createElement("g",null,React.createElement("path",{d:"M181.131 275.137a68.9 68.9 0 0 1-29.465 29.328l161.758 162.389 38.998-19.764zm213.363 214.187-38.998 19.764 81.963 82.283a68.9 68.9 0 0 1 29.471-29.332zM581.646 339.391l-91.576 46.41 6.752 43.189 103.616-52.513a68.9 68.9 0 0 1-18.792-37.086m-144.738 73.351L220.383 522.477a68.9 68.9 0 0 1 18.795 37.089L443.66 455.934zM367.275 142.438l-104.48 203.97 30.848 30.967 110.623-215.957a68.9 68.9 0 0 1-36.991-18.98M235.621 399.459l-52.922 103.314a68.9 68.9 0 0 1 36.987 18.979l46.781-91.328zM150.768 304.918a68.9 68.9 0 0 1-34.416 7.195 69 69 0 0 1-6.651-.695l30.903 197.662a68.9 68.9 0 0 1 34.416-7.195 69 69 0 0 1 6.646.695zM239.342 560.545c.707 4.589.949 9.239.72 13.877a68.9 68.9 0 0 1-7.267 27.18l197.629 31.712c-.708-4.59-.95-9.24-.723-13.878a68.9 68.9 0 0 1 7.27-27.178zM601.133 377.199l-91.219 178.082a68.9 68.9 0 0 1 36.994 18.983l91.217-178.08a68.9 68.9 0 0 1-36.992-18.985M476.723 125.33a68.9 68.9 0 0 1-29.471 29.332l141.266 141.811a68.9 68.9 0 0 1 29.468-29.332zM347.787 104.631l-178.576 90.498a68.9 68.9 0 0 1 18.793 37.086l178.574-90.502a68.9 68.9 0 0 1-18.791-37.082M446.926 154.826a68.9 68.9 0 0 1-34.983 7.483 69 69 0 0 1-6.029-.633l15.818 101.291 43.163 6.926zm-16 167.028 37.4 239.482a68.9 68.9 0 0 1 33.914-6.943q3.625.206 7.207.791L474.09 328.777zM188.131 232.975c.734 4.66.988 9.383.758 14.095a68.9 68.9 0 0 1-7.16 26.983l101.369 16.281 19.923-38.908zm173.736 27.9-19.926 38.912 239.514 38.467a69 69 0 0 1-.695-13.719 68.9 68.9 0 0 1 7.349-27.324z"}),React.createElement("path",{fillOpacity:".996",d:"M412.284 156.054c34.538 1.882 64.061-24.592 65.943-59.13s-24.592-64.062-59.131-65.943c-34.538-1.882-64.061 24.592-65.943 59.13s24.593 64.062 59.131 65.943M646.144 390.82c34.538 1.881 64.062-24.593 65.943-59.131s-24.592-64.061-59.13-65.943-64.062 24.593-65.943 59.131 24.592 64.061 59.13 65.943M495.086 685.719c34.538 1.881 64.062-24.592 65.943-59.13s-24.592-64.062-59.13-65.943-64.062 24.592-65.943 59.13 24.592 64.062 59.13 65.943M167.866 633.211c34.538 1.882 64.062-24.592 65.943-59.13s-24.592-64.062-59.13-65.943-64.062 24.592-65.943 59.13 24.592 64.062 59.13 65.943M116.692 305.86c34.538 1.882 64.062-24.592 65.943-59.13s-24.592-64.062-59.131-65.943c-34.538-1.881-64.061 24.592-65.943 59.13s24.593 64.062 59.131 65.943"})))},{name:"feed",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M2 8.667V12c5.515 0 10 4.485 10 10h3.333c0-7.363-5.97-13.333-13.333-13.333M2 2v3.333c9.19 0 16.667 7.477 16.667 16.667H22C22 10.955 13.045 2 2 2m2.5 15a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5"})))},{name:"flickr",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M6.5 7c-2.75 0-5 2.25-5 5s2.25 5 5 5 5-2.25 5-5-2.25-5-5-5m11 0c-2.75 0-5 2.25-5 5s2.25 5 5 5 5-2.25 5-5-2.25-5-5-5"})))},{name:"foursquare",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M17.573 2H6.905C5.434 2 5 3.107 5 3.805v16.948c0 .785.422 1.077.66 1.172.238.097.892.177 1.285-.275 0 0 5.035-5.843 5.122-5.93.132-.132.132-.132.262-.132h3.26c1.368 0 1.588-.977 1.732-1.552.078-.318.692-3.428 1.225-6.122l.675-3.368C19.56 2.893 19.14 2 17.573 2m-1.078 5.22c-.053.252-.372.518-.665.518h-4.157c-.467 0-.802.318-.802.787v.508c0 .467.337.798.805.798h3.528c.331 0 .655.362.583.715s-.407 2.102-.448 2.295c-.04.193-.262.523-.655.523h-2.88c-.523 0-.683.068-1.033.503-.35.437-3.505 4.223-3.505 4.223-.032.035-.063.027-.063-.015V4.852c0-.298.26-.648.648-.648h8.562c.315 0 .61.297.528.683z"})))},{name:"ghost",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M10.203 20.997H3.005v-3.599h7.198zm10.792-3.599h-7.193v3.599h7.193zm.003-7.198H3v3.599h17.998zm-7.195-7.197H3.005v3.599h10.798zm7.197 0h-3.599v3.599H21z"})))},{name:"git",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M23.519 10.947 13.053.482a1.543 1.543 0 0 0-2.183 0L8.696 2.656l2.756 2.756a1.83 1.83 0 0 1 1.886.439 1.84 1.84 0 0 1 .436 1.898l2.656 2.657a1.83 1.83 0 0 1 1.899.436 1.837 1.837 0 0 1 0 2.597 1.84 1.84 0 0 1-2.599 0 1.84 1.84 0 0 1-.4-1.998l-2.478-2.477v6.521a1.837 1.837 0 0 1 .485 2.945 1.837 1.837 0 0 1-2.597 0 1.837 1.837 0 0 1 0-2.598 1.8 1.8 0 0 1 .602-.401V8.85a1.8 1.8 0 0 1-.602-.4 1.84 1.84 0 0 1-.395-2.009L7.628 3.723.452 10.898a1.544 1.544 0 0 0 0 2.184l10.467 10.467a1.544 1.544 0 0 0 2.183 0l10.417-10.418a1.546 1.546 0 0 0 0-2.184"})))},{name:"github",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 2C6.477 2 2 6.477 2 12c0 4.419 2.865 8.166 6.839 9.489.5.09.682-.218.682-.484 0-.236-.009-.866-.014-1.699-2.782.602-3.369-1.34-3.369-1.34-.455-1.157-1.11-1.465-1.11-1.465-.909-.62.069-.608.069-.608 1.004.071 1.532 1.03 1.532 1.03.891 1.529 2.341 1.089 2.91.833.091-.647.349-1.086.635-1.337-2.22-.251-4.555-1.111-4.555-4.943 0-1.091.39-1.984 1.03-2.682-.103-.254-.447-1.27.097-2.646 0 0 .84-.269 2.75 1.025A9.6 9.6 0 0 1 12 6.836c.85.004 1.705.114 2.504.336 1.909-1.294 2.748-1.025 2.748-1.025.546 1.376.202 2.394.1 2.646.64.699 1.026 1.591 1.026 2.682 0 3.841-2.337 4.687-4.565 4.935.359.307.679.917.679 1.852 0 1.335-.012 2.415-.012 2.741 0 .269.18.579.688.481A10 10 0 0 0 22 12c0-5.523-4.477-10-10-10"})))},{name:"google-alt",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m-.05 16c-3.312 0-6-2.688-6-6s2.688-6 6-6c1.62 0 2.976.594 4.014 1.566L14.26 9.222c-.432-.408-1.188-.888-2.31-.888-1.986 0-3.606 1.65-3.606 3.672s1.62 3.672 3.606 3.672c2.298 0 3.144-1.59 3.3-2.532h-3.306v-2.238h5.616c.084.378.15.732.15 1.23 0 3.426-2.298 5.862-5.76 5.862"})))},{name:"google-plus-alt",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M8 11h6.61c.06.35.11.7.11 1.16 0 4-2.68 6.84-6.72 6.84-3.87 0-7-3.13-7-7s3.13-7 7-7c1.89 0 3.47.69 4.69 1.83l-1.9 1.83c-.52-.5-1.43-1.08-2.79-1.08-2.39 0-4.34 1.98-4.34 4.42S5.61 16.42 8 16.42c2.77 0 3.81-1.99 3.97-3.02H8zm15 0h-2V9h-2v2h-2v2h2v2h2v-2h2"})))},{name:"google-plus",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m-1.919 14.05a4.051 4.051 0 0 1 0-8.1c1.094 0 2.009.401 2.709 1.057l-1.15 1.118a2.23 2.23 0 0 0-1.559-.599c-1.341 0-2.434 1.114-2.434 2.479s1.094 2.479 2.434 2.479c1.551 0 2.122-1.073 2.227-1.709h-2.232v-1.511h3.791c.057.255.101.494.101.83.001 2.312-1.55 3.956-3.887 3.956M19 12.75h-1.25V14h-1.5v-1.25H15v-1.5h1.25V10h1.5v1.25H19z"})))},{name:"google",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12.02 10.18v3.73h5.51c-.26 1.57-1.67 4.22-5.5 4.22-3.31 0-6.01-2.75-6.01-6.12s2.7-6.12 6.01-6.12c1.87 0 3.13.8 3.85 1.48l2.84-2.76C16.99 2.99 14.73 2 12.03 2c-5.52 0-10 4.48-10 10s4.48 10 10 10c5.77 0 9.6-4.06 9.6-9.77 0-.83-.11-1.42-.25-2.05z"})))},{name:"instagram",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 4.622c2.403 0 2.688.009 3.637.052.877.04 1.354.187 1.671.31.42.163.72.358 1.035.673s.51.615.673 1.035c.123.317.27.794.31 1.671.043.949.052 1.234.052 3.637s-.009 2.688-.052 3.637c-.04.877-.187 1.354-.31 1.671-.163.42-.358.72-.673 1.035s-.615.51-1.035.673c-.317.123-.794.27-1.671.31-.949.043-1.233.052-3.637.052s-2.688-.009-3.637-.052c-.877-.04-1.354-.187-1.671-.31a2.8 2.8 0 0 1-1.035-.673 2.8 2.8 0 0 1-.673-1.035c-.123-.317-.27-.794-.31-1.671-.043-.949-.052-1.234-.052-3.637s.009-2.688.052-3.637c.04-.877.187-1.354.31-1.671.163-.42.358-.72.673-1.035s.615-.51 1.035-.673c.317-.123.794-.27 1.671-.31.949-.043 1.234-.052 3.637-.052M12 3c-2.444 0-2.751.01-3.711.054-.958.044-1.612.196-2.184.418a4.4 4.4 0 0 0-1.594 1.039c-.5.5-.808 1.002-1.038 1.594-.223.572-.375 1.226-.419 2.184C3.01 9.249 3 9.556 3 12s.01 2.751.054 3.711c.044.958.196 1.612.418 2.185.23.592.538 1.094 1.038 1.594s1.002.808 1.594 1.038c.572.222 1.227.375 2.185.418.96.044 1.267.054 3.711.054s2.751-.01 3.711-.054c.958-.044 1.612-.196 2.185-.418a4.4 4.4 0 0 0 1.594-1.038c.5-.5.808-1.002 1.038-1.594.222-.572.375-1.227.418-2.185.044-.96.054-1.267.054-3.711s-.01-2.751-.054-3.711c-.044-.958-.196-1.612-.418-2.185A4.4 4.4 0 0 0 19.49 4.51c-.5-.5-1.002-.808-1.594-1.038-.572-.222-1.227-.375-2.185-.418C14.751 3.01 14.444 3 12 3m0 4.378a4.622 4.622 0 1 0 0 9.244 4.622 4.622 0 0 0 0-9.244M12 15a3 3 0 1 1 0-6 3 3 0 0 1 0 6m4.804-8.884a1.08 1.08 0 1 0 .001 2.161 1.08 1.08 0 0 0-.001-2.161"})))},{name:"json-feed",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"m8.522 17.424.027.027c1.076-1.076 1.854-.993 3.154.306l2.053 2.053c2.136 2.136 4.131 2.028 6.515-.356l.729-.728-1.548-1.548-.373.373c-1.349 1.349-2.293 1.366-3.585.075l-2.409-2.409c-1.242-1.242-2.475-1.366-3.659-.381l-.232-.232c1.01-1.225.911-2.368-.29-3.568l-2.16-2.162c-1.317-1.317-1.308-2.236.058-3.602l.372-.372-1.54-1.54-.728.729c-2.393 2.393-2.525 4.346-.439 6.433l1.78 1.78c1.3 1.3 1.383 2.095.315 3.163l.008.008a1.384 1.384 0 0 0 1.952 1.951"}),React.createElement("circle",{cx:"13.089",cy:"10.905",r:"1.383"}),React.createElement("circle",{cx:"16.349",cy:"7.644",r:"1.383"}),React.createElement("circle",{cx:"19.61",cy:"4.383",r:"1.383"})))},{name:"line",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M14.255 9.572v3.333c0 .084-.066.15-.15.15h-.534a.16.16 0 0 1-.122-.061l-1.528-2.063v1.978c0 .084-.066.15-.15.15h-.534a.15.15 0 0 1-.15-.15V9.576c0-.084.066-.15.15-.15h.529a.14.14 0 0 1 .122.066l1.528 2.063V9.577c0-.084.066-.15.15-.15h.534a.15.15 0 0 1 .155.145m-3.844-.15h-.534a.15.15 0 0 0-.15.15v3.333c0 .084.066.15.15.15h.534c.084 0 .15-.066.15-.15V9.572c0-.08-.066-.15-.15-.15m-1.289 2.794H7.664V9.572a.15.15 0 0 0-.15-.15H6.98a.15.15 0 0 0-.15.15v3.333q0 .062.042.103a.16.16 0 0 0 .103.042h2.142c.084 0 .15-.066.15-.15v-.534a.15.15 0 0 0-.145-.15m7.945-2.794h-2.142c-.08 0-.15.066-.15.15v3.333c0 .08.066.15.15.15h2.142c.084 0 .15-.066.15-.15v-.534a.15.15 0 0 0-.15-.15h-1.458v-.563h1.458c.084 0 .15-.066.15-.15v-.539a.15.15 0 0 0-.15-.15h-1.458v-.563h1.458c.084 0 .15-.066.15-.15v-.534c-.005-.08-.07-.15-.15-.15M22.5 5.33v13.373c-.005 2.1-1.725 3.802-3.83 3.797H5.297c-2.1-.005-3.802-1.73-3.797-3.83V5.297c.005-2.1 1.73-3.802 3.83-3.797h13.373c2.1.005 3.802 1.725 3.797 3.83m-2.888 5.747c0-3.422-3.431-6.206-7.645-6.206s-7.645 2.784-7.645 6.206c0 3.066 2.719 5.634 6.394 6.122.895.192.792.52.591 1.725-.033.192-.155.755.661.413s4.402-2.592 6.009-4.439c1.106-1.219 1.636-2.452 1.636-3.82"})))},{name:"link",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M17 13H7v-2h10zm1-6h-1c-1.631 0-3.065.792-3.977 2H18c1.103 0 2 .897 2 2v2c0 1.103-.897 2-2 2h-4.977c.913 1.208 2.347 2 3.977 2h1a4 4 0 0 0 4-4v-2a4 4 0 0 0-4-4M2 11v2a4 4 0 0 0 4 4h1c1.63 0 3.065-.792 3.977-2H6c-1.103 0-2-.897-2-2v-2c0-1.103.897-2 2-2h4.977C10.065 7.792 8.631 7 7 7H6a4 4 0 0 0-4 4"})))},{name:"linkedin",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M19.7 3H4.3A1.3 1.3 0 0 0 3 4.3v15.4A1.3 1.3 0 0 0 4.3 21h15.4a1.3 1.3 0 0 0 1.3-1.3V4.3A1.3 1.3 0 0 0 19.7 3M8.339 18.338H5.667v-8.59h2.672zM7.004 8.574a1.548 1.548 0 1 1-.002-3.096 1.548 1.548 0 0 1 .002 3.096m11.335 9.764H15.67v-4.177c0-.996-.017-2.278-1.387-2.278-1.389 0-1.601 1.086-1.601 2.206v4.249h-2.667v-8.59h2.559v1.174h.037c.356-.675 1.227-1.387 2.526-1.387 2.703 0 3.203 1.779 3.203 4.092v4.711z"})))},{name:"mail",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M20 4H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2m0 4.236-8 4.882-8-4.882V6h16z"})))},{name:"mastodon",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M11.973 2.352c-2.468.02-4.842.286-6.225.921 0 0-2.742 1.229-2.742 5.415 0 .958-.018 2.105.012 3.32.1 4.094.75 8.128 4.535 9.129 1.745.462 3.244.56 4.45.494 2.19-.122 3.417-.781 3.417-.781l-.072-1.588s-1.565.491-3.32.431c-1.74-.06-3.576-.188-3.858-2.324a4 4 0 0 1-.04-.598s1.709.416 3.874.516c1.324.06 2.563-.076 3.824-.226 2.418-.29 4.524-1.78 4.79-3.141.416-2.144.38-5.232.38-5.232 0-4.186-2.74-5.415-2.74-5.415-1.383-.635-3.76-.9-6.227-.921zM9.18 5.622c1.028 0 1.804.395 2.318 1.185l.502.84.5-.84c.514-.79 1.292-1.186 2.32-1.186.888 0 1.605.313 2.15.922q.795.915.794 2.469v5.068h-2.008V9.16c0-1.037-.438-1.562-1.31-1.562-.966 0-1.448.622-1.448 1.857v2.693h-1.996V9.455c0-1.235-.484-1.857-1.45-1.857-.872 0-1.308.525-1.308 1.562v4.92H6.236V9.012q-.001-1.554.793-2.469c.547-.609 1.263-.922 2.15-.922"})))},{name:"medium-alt",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{fillRule:"nonzero",d:"M7.423 6c3.27 0 5.922 2.686 5.922 6s-2.651 6-5.922 6S1.5 15.313 1.5 12s2.652-6 5.923-6m9.458.351c1.635 0 2.961 2.53 2.961 5.65 0 3.118-1.325 5.648-2.96 5.648S13.92 15.119 13.92 12s1.325-5.649 2.96-5.649m4.577.589c.576 0 1.042 2.265 1.042 5.06s-.466 5.06-1.042 5.06c-.575 0-1.04-2.265-1.04-5.06s.465-5.06 1.04-5.06"})))},{name:"medium",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M3 3v18h18V3zm15 4.26-1 .93a.28.28 0 0 0-.11.27v6.8a.27.27 0 0 0 .11.27l.94.93v.2h-4.75v-.2l1-1c.09-.1.09-.12.09-.27V9.74l-2.71 6.9h-.37L8 9.74v4.62a.67.67 0 0 0 .17.54l1.27 1.54v.2H5.86v-.2l1.27-1.54a.64.64 0 0 0 .17-.54V9a.5.5 0 0 0-.16-.4L6 7.26v-.2h3.52L12.23 13l2.38-5.94H18z"})))},{name:"messenger",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12.026.375C5.462.375.375 5.172.375 11.652c0 3.389 1.393 6.318 3.66 8.341.391.352.311.556.377 2.73a.934.934 0 0 0 1.307.823c2.48-1.092 2.512-1.178 2.933-1.064 7.185 1.977 14.973-2.621 14.973-10.83 0-6.48-5.035-11.277-11.599-11.277m6.996 8.678L15.6 14.47a1.75 1.75 0 0 1-2.527.465l-2.723-2.038a.7.7 0 0 0-.844 0l-3.674 2.786c-.49.372-1.133-.216-.802-.735l3.422-5.417a1.75 1.75 0 0 1 2.527-.465l2.722 2.037a.7.7 0 0 0 .844 0L18.22 8.32c.489-.374 1.132.213.801.732"})))},{name:"microblog",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M19.641 17.086c1.294-1.522 2.067-3.438 2.067-5.521 0-4.957-4.371-8.972-9.763-8.972s-9.763 4.015-9.763 8.972 4.371 8.972 9.763 8.972a10.5 10.5 0 0 0 3.486-.59.315.315 0 0 1 .356.112c.816 1.101 2.09 1.876 3.506 2.191a.194.194 0 0 0 .192-.309 3.82 3.82 0 0 1 .162-4.858zm-3.065-6.575-2.514 1.909.912 3.022a.286.286 0 0 1-.437.317l-2.592-1.802-2.592 1.802a.285.285 0 0 1-.436-.317l.912-3.022-2.515-1.909a.285.285 0 0 1 .167-.513l3.155-.066 1.038-2.981a.285.285 0 0 1 .539 0l1.038 2.981 3.155.066a.285.285 0 0 1 .17.513"})))},{name:"nextdoor",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",strokeMiterlimit:"10",viewBox:"0 0 130 130"},React.createElement("g",null,React.createElement("path",{d:"M64.25 3.531c-31.144.337-57.596 24.22-60.469 55.907-3.064 33.799 21.857 63.685 55.657 66.75s63.685-21.857 66.75-55.657-21.857-63.686-55.657-66.75a62 62 0 0 0-6.281-.25m3.938 34.907C82.468 38.438 93.5 48.58 93.5 61.5v27c0 .685-.565 1.25-1.25 1.25H80.906a1.267 1.267 0 0 1-1.25-1.25V63.375c0-5.58-4.309-11.937-11.469-11.937-7.47 0-11.468 6.357-11.468 11.937V88.5c0 .685-.565 1.25-1.25 1.25H44.125c-.68 0-1.219-.57-1.219-1.25V64.156c0-.74-.529-1.364-1.25-1.531-13.13-2.93-15.115-10.285-15.375-21.125-.005-.332.142-.67.375-.906.233-.237.543-.375.875-.375l11.688.062c.66.01 1.187.529 1.218 1.188.13 4.44.438 9.406 4.438 9.406.83 0 1.443-1.179 1.813-1.719 4.41-6.48 12.28-10.718 21.5-10.718"})))},{name:"patreon",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M20 7.408c-.003-2.299-1.746-4.182-3.79-4.862-2.54-.844-5.888-.722-8.312.453-2.939 1.425-3.862 4.545-3.896 7.656-.028 2.559.22 9.297 3.92 9.345 2.75.036 3.159-3.603 4.43-5.356.906-1.247 2.071-1.599 3.506-1.963 2.465-.627 4.146-2.626 4.142-5.273"})))},{name:"pinterest-alt",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12.289 2C6.617 2 3.606 5.648 3.606 9.622c0 1.846 1.025 4.146 2.666 4.878.25.111.381.063.439-.169.044-.175.267-1.029.365-1.428a.37.37 0 0 0-.091-.362c-.54-.63-.975-1.791-.975-2.873 0-2.777 2.194-5.464 5.933-5.464 3.23 0 5.49 2.108 5.49 5.122 0 3.407-1.794 5.768-4.13 5.768-1.291 0-2.257-1.021-1.948-2.277.372-1.495 1.089-3.112 1.089-4.191 0-.967-.542-1.775-1.663-1.775-1.319 0-2.379 1.309-2.379 3.059 0 1.115.394 1.869.394 1.869s-1.302 5.279-1.54 6.261c-.405 1.666.053 4.368.094 4.604.021.126.167.169.25.063.129-.165 1.699-2.419 2.142-4.051.158-.59.817-2.995.817-2.995.43.784 1.681 1.446 3.013 1.446 3.963 0 6.822-3.494 6.822-7.833C20.394 5.112 16.849 2 12.289 2"})))},{name:"pinterest",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 2C6.477 2 2 6.477 2 12c0 4.236 2.636 7.855 6.356 9.312-.087-.791-.166-2.005.035-2.869.182-.78 1.173-4.971 1.173-4.971s-.299-.599-.299-1.484c0-1.39.806-2.429 1.809-2.429.853 0 1.265.641 1.265 1.409 0 .858-.546 2.141-.828 3.329-.236.996.499 1.807 1.481 1.807 1.777 0 3.144-1.874 3.144-4.579 0-2.394-1.72-4.068-4.177-4.068-2.845 0-4.515 2.134-4.515 4.34 0 .859.331 1.781.744 2.282a.3.3 0 0 1 .069.287c-.077.316-.246.995-.279 1.134-.044.183-.145.222-.334.134-1.249-.581-2.03-2.407-2.03-3.874 0-3.154 2.292-6.051 6.607-6.051 3.469 0 6.165 2.472 6.165 5.775 0 3.446-2.173 6.22-5.189 6.22-1.013 0-1.966-.526-2.292-1.148l-.623 2.377c-.226.869-.835 1.957-1.243 2.622.936.289 1.93.445 2.961.445 5.523 0 10-4.477 10-10S17.523 2 12 2"})))},{name:"pocket",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M21.927 4.194A1.82 1.82 0 0 0 20.222 3H3.839a1.823 1.823 0 0 0-1.813 1.814v6.035l.069 1.2c.29 2.73 1.707 5.115 3.899 6.778l.119.089.025.018a9.9 9.9 0 0 0 3.91 1.727 10.06 10.06 0 0 0 4.049-.014.3.3 0 0 0 .064-.023 9.9 9.9 0 0 0 3.753-1.691l.025-.018q.06-.043.119-.089c2.192-1.664 3.609-4.049 3.898-6.778l.069-1.2V4.814a1.8 1.8 0 0 0-.098-.62m-4.235 6.287-4.704 4.512a1.37 1.37 0 0 1-1.898 0l-4.705-4.512a1.371 1.371 0 1 1 1.898-1.979l3.756 3.601 3.755-3.601a1.372 1.372 0 0 1 1.898 1.979"})))},{name:"polldaddy",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 2C6.487 2 2 6.487 2 12c0 5.514 4.487 10 10 10 5.514 0 10-4.486 10-10 0-5.513-4.486-10-10-10m.991 1.68c2.361.084 4.657 1.251 6.197 3.136.283.334.541.693.774 1.067a7.78 7.78 0 0 0-6.094-2.94 7.76 7.76 0 0 0-5.896 2.703q-.008.006-.016.014l-.152.159-.031.032a6.12 6.12 0 0 0-1.633 4.165 6.15 6.15 0 0 0 6.143 6.143c.57 0 1.123-.081 1.649-.227-1.849.839-4.131.747-5.926-.324-1.841-1.089-3.171-3.111-3.433-5.313A7.39 7.39 0 0 1 6.69 6.137C8.294 4.5 10.634 3.563 12.991 3.68m3.373 8.519c-.049-2.024-1.587-3.889-3.544-4.174-1.927-.343-3.917.857-4.451 2.661a3.67 3.67 0 0 0 .2 2.653c.39.8 1.067 1.451 1.894 1.759 1.664.654 3.63-.27 4.173-1.863.593-1.58-.396-3.423-1.94-3.776-1.52-.407-3.161.757-3.204 2.243a2.36 2.36 0 0 0 .753 1.879c.501.476 1.23.667 1.871.529a2.07 2.07 0 0 0 1.469-1.134 1.91 1.91 0 0 0-.087-1.767c-.297-.513-.859-.863-1.429-.881a1.7 1.7 0 0 0-1.437.679 1.53 1.53 0 0 0-.18 1.489q.006.016.016.03c.193.634.774 1.1 1.467 1.117a1.6 1.6 0 0 1-.97-.183c-.466-.244-.809-.747-.893-1.29a1.8 1.8 0 0 1 .499-1.539 2.02 2.02 0 0 1 1.58-.606c.593.04 1.159.35 1.517.859.364.496.51 1.156.383 1.773-.116.62-.529 1.174-1.093 1.514a2.52 2.52 0 0 1-1.914.286c-.65-.161-1.226-.606-1.584-1.206a2.83 2.83 0 0 1-.341-2.031c.143-.7.573-1.321 1.176-1.753 1.193-.883 3.056-.751 4.106.411 1.106 1.1 1.327 3.027.406 4.371-.877 1.376-2.74 2.086-4.374 1.594-1.639-.449-2.913-2.079-3.031-3.853-.07-.884.13-1.797.583-2.577.445-.777 1.155-1.432 1.972-1.862 1.64-.88 3.816-.743 5.349.424 1.251.924 2.083 2.42 2.236 4.009l.001.03c0 2.9-2.359 5.26-5.26 5.26a5.2 5.2 0 0 1-1.947-.376 5 5 0 0 0 2.613-.079 4.96 4.96 0 0 0 2.514-1.751c.618-.828.95-1.861.901-2.869M12 21.113c-5.024 0-9.111-4.087-9.111-9.113 0-4.789 3.713-8.723 8.411-9.081a7 7 0 0 0-.397.06c-2.644.453-5.017 2.106-6.32 4.409-1.309 2.301-1.391 5.19-.3 7.527 1.056 2.34 3.253 4.156 5.776 4.553 2.497.44 5.133-.483 6.787-2.301 1.719-1.797 2.269-4.529 1.486-6.796-.583-1.81-1.976-3.331-3.7-4.046 3.417.594 6.174 3.221 6.174 6.781 0 1.004-.241 2.02-.657 2.966-1.498 2.984-4.586 5.041-8.149 5.041"})))},{name:"print",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M9 16h6v2H9zm13 1h-3v3a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-3H2V9a2 2 0 0 1 2-2h1V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v2h1a2 2 0 0 1 2 2zM7 7h10V5H7zm10 7H7v6h10zm3-3.5a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 20 10.5"})))},{name:"quora",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M47.736 16.521c-.41-.81-.898-1.631-1.846-1.631a1 1 0 0 0-.527.107l-.322-.644a2.93 2.93 0 0 1 1.836-.595c1.26 0 1.914.605 2.431 1.397a6.8 6.8 0 0 0 .449-2.675c0-2.773-.869-4.199-2.929-4.199-1.992 0-2.851 1.465-2.851 4.199s.859 4.17 2.851 4.17a4 4 0 0 0 .869-.107zm.498.966a6 6 0 0 1-1.367.185 5.27 5.27 0 0 1-5.263-5.204c0-3.114 2.558-5.233 5.263-5.233s5.282 2.109 5.282 5.233a5.08 5.08 0 0 1-1.992 4.072c.381.566.781.956 1.319.956.595 0 .839-.459.878-.82h.781c.049.488-.195 2.48-2.373 2.48-1.319 0-2.012-.761-2.529-1.66zm5.624-2.646v-3.563c0-.371-.146-.586-.615-.586h-.498v-.956h3.251v5.048c0 .849.459 1.231 1.161 1.231a1.56 1.56 0 0 0 1.465-.839V11.28c0-.371-.146-.586-.615-.586h-.527v-.957h3.28v5.302c0 .527.195.732.8.732h.107v.976l-2.929.468V16.21h-.057a3.12 3.12 0 0 1-2.509 1.152c-1.28 0-2.304-.644-2.304-2.558zm12.059 1.611c1.152 0 1.592-1.005 1.611-3.027.02-1.982-.459-2.929-1.611-2.929-1.005 0-1.641.956-1.641 2.929 0 2.021.625 3.027 1.641 3.027m0 .956a3.906 3.906 0 0 1-3.974-3.974c0-2.334 1.836-3.886 3.974-3.886 2.226 0 4.004 1.582 4.004 3.886a3.867 3.867 0 0 1-4.004 3.974m4.072-.146v-.956h.312c.781 0 .859-.224.859-.908v-4.121c0-.371-.215-.586-.732-.586h-.42v-.955h2.968l.146 1.553h.108c.371-1.113 1.221-1.699 2.051-1.699.693 0 1.221.39 1.221 1.181 0 .547-.264 1.093-1.005 1.093-.664 0-.8-.449-1.358-.449-.488 0-.869.468-.869 1.152v2.783c0 .673.166.908.937.908h.439v.956h-4.658zm9.901-1.093c.956 0 1.338-.898 1.338-1.797v-1.211c-.732.722-2.304.742-2.304 2.021 0 .625.371.986.966.986m1.387 0c-.39.752-1.191 1.26-2.314 1.26-1.309 0-2.148-.732-2.148-1.914 0-2.451 3.417-1.797 4.423-3.427v-.185c0-1.25-.488-1.445-1.035-1.445-1.524 0-.83 1.631-2.226 1.631-.673 0-.937-.371-.937-.859 0-.927 1.093-1.67 3.173-1.67 1.963 0 3.163.537 3.163 2.49v3.114q-.02.742.595.742a1 1 0 0 0 .449-.127l.254.615c-.205.312-.752.869-1.836.869-.908 0-1.465-.42-1.543-1.113h-.01zm-68.554 2.558c-.83-1.641-1.807-3.3-3.711-3.3a2.9 2.9 0 0 0-1.093.215l-.644-1.299a5.66 5.66 0 0 1 3.662-1.211c2.548 0 3.857 1.231 4.892 2.792q.917-2.012.908-5.38c0-5.585-1.748-8.417-5.829-8.417-4.033 0-5.76 2.87-5.76 8.417s1.738 8.397 5.76 8.397a5.9 5.9 0 0 0 1.748-.224zm.996 1.953a9.8 9.8 0 0 1-2.744.371C5.614 21.041.371 16.764.371 10.545.371 4.277 5.614 0 10.965 0c5.448 0 10.642 4.248 10.642 10.545a10.25 10.25 0 0 1-4.013 8.201c.732 1.152 1.563 1.914 2.665 1.914 1.201 0 1.689-.927 1.768-1.66h1.572c.088.966-.4 4.999-4.775 4.999-2.646 0-4.052-1.543-5.106-3.339z"})))},{name:"reddit",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M22 11.816a2.28 2.28 0 0 0-2.277-2.277c-.593 0-1.122.24-1.526.614-1.481-.965-3.455-1.594-5.647-1.69l1.171-3.702 3.18.748a1.88 1.88 0 0 0 1.876 1.862 1.88 1.88 0 0 0 1.877-1.878 1.88 1.88 0 0 0-1.877-1.877c-.769 0-1.431.466-1.72 1.13l-3.508-.826a.386.386 0 0 0-.46.261l-1.35 4.268c-2.316.038-4.411.67-5.97 1.671a2.24 2.24 0 0 0-1.492-.581A2.28 2.28 0 0 0 2 11.816c0 .814.433 1.523 1.078 1.925a4 4 0 0 0-.061.672c0 3.292 4.011 5.97 8.941 5.97s8.941-2.678 8.941-5.97q-.002-.32-.053-.632A2.26 2.26 0 0 0 22 11.816m-3.224-7.422a1.1 1.1 0 1 1-.001 2.199 1.1 1.1 0 0 1 .001-2.199M2.777 11.816c0-.827.672-1.5 1.499-1.5.313 0 .598.103.838.269-.851.676-1.477 1.479-1.812 2.36a1.48 1.48 0 0 1-.525-1.129m9.182 7.79c-4.501 0-8.164-2.329-8.164-5.193S7.457 9.22 11.959 9.22s8.164 2.329 8.164 5.193-3.663 5.193-8.164 5.193m8.677-6.605c-.326-.89-.948-1.701-1.797-2.384.248-.186.55-.301.883-.301.827 0 1.5.673 1.5 1.5.001.483-.23.911-.586 1.185m-11.64 1.703c-.76 0-1.397-.616-1.397-1.376s.637-1.397 1.397-1.397 1.376.637 1.376 1.397-.616 1.376-1.376 1.376m7.405-1.376c0 .76-.616 1.376-1.376 1.376s-1.399-.616-1.399-1.376.639-1.397 1.399-1.397 1.376.637 1.376 1.397m-1.172 3.38a.39.39 0 0 1 0 .55c-.674.674-1.727 1.002-3.219 1.002l-.011-.002-.011.002c-1.492 0-2.544-.328-3.218-1.002a.389.389 0 1 1 .55-.55c.521.521 1.394.775 2.669.775l.011.002.011-.002c1.275 0 2.148-.253 2.669-.775a.387.387 0 0 1 .549 0"})))},{name:"share",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M18 16c-.788 0-1.499.31-2.034.807L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.048 4.118A3 3 0 0 0 15 19a3 3 0 1 0 3-3"})))},{name:"skype",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"m10.113 2.699.1-.02q.05.025.098.051zM2.72 10.223l-.017.103q.025.048.051.095zm18.555 3.548q.009-.053.018-.106-.025-.047-.052-.095zm-7.712 7.428q.049.027.096.053l.105-.017zM22 16.386a5.55 5.55 0 0 1-1.637 3.953 5.55 5.55 0 0 1-3.953 1.637 5.6 5.6 0 0 1-2.75-.725l.105-.017-.202-.035q.049.027.096.053a9.5 9.5 0 0 1-1.654.147 9.4 9.4 0 0 1-3.676-.743 9.4 9.4 0 0 1-3.002-2.023 9.4 9.4 0 0 1-2.023-3.002 9.4 9.4 0 0 1-.743-3.676c0-.546.049-1.093.142-1.628q.025.048.051.095l-.034-.199-.017.103A5.6 5.6 0 0 1 2 7.615c0-1.493.582-2.898 1.637-3.953A5.56 5.56 0 0 1 7.59 2.024c.915 0 1.818.228 2.622.655l-.1.02.199.031q-.049-.026-.098-.051l.004-.001a9.5 9.5 0 0 1 1.788-.169 9.41 9.41 0 0 1 6.678 2.766 9.4 9.4 0 0 1 2.024 3.002 9.4 9.4 0 0 1 .743 3.676c0 .575-.054 1.15-.157 1.712q-.025-.047-.052-.095l.034.201q.009-.053.018-.106c.461.829.707 1.767.707 2.721m-5.183-2.248c0-1.331-.613-2.743-3.033-3.282l-2.209-.49c-.84-.192-1.807-.444-1.807-1.237s.679-1.348 1.903-1.348c2.468 0 2.243 1.696 3.468 1.696.645 0 1.209-.379 1.209-1.031 0-1.521-2.435-2.663-4.5-2.663-2.242 0-4.63.952-4.63 3.488 0 1.221.436 2.521 2.839 3.123l2.984.745c.903.223 1.129.731 1.129 1.189 0 .762-.758 1.507-2.129 1.507-2.679 0-2.307-2.062-3.743-2.062-.645 0-1.113.444-1.113 1.078 0 1.236 1.501 2.886 4.856 2.886 3.195 0 4.776-1.538 4.776-3.599"})))},{name:"sms",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M17.696 4C20.069 4 22 5.973 22 8.398v4.357c0 2.04-1.368 3.783-3.261 4.266v4.427l-5.234-4.295h-7.2C3.93 17.153 2 15.18 2 12.755V8.398C2 5.973 3.931 4 6.304 4zM7.028 8.515c-.98 0-1.66.562-1.66 1.349-.009.497.322.91.985 1.178l.39.142c.242.097.305.171.305.297 0 .162-.131.251-.442.251s-.76-.135-1.004-.284l-.112.046-.215.868c.359.258.832.364 1.33.364 1.104 0 1.764-.523 1.764-1.333-.008-.574-.305-.956-.954-1.216l-.393-.146c-.266-.108-.341-.181-.341-.287 0-.152.131-.243.387-.243.274 0 .587.093.808.214l.109-.047.214-.837c-.315-.224-.741-.316-1.171-.316m10.302 0c-.98 0-1.66.562-1.66 1.349-.008.497.322.91.985 1.178l.39.142c.243.097.305.171.305.297 0 .162-.13.251-.442.251-.311 0-.76-.135-1.004-.284l-.112.046-.215.868c.359.258.832.364 1.33.364 1.104 0 1.764-.523 1.764-1.333-.008-.574-.305-.956-.954-1.216l-.393-.146c-.266-.108-.341-.181-.341-.287 0-.152.131-.243.387-.243.274 0 .587.093.808.214l.109-.047.214-.837c-.316-.224-.741-.316-1.171-.316m-3.733 0c-.297 0-.55.066-.78.202l-.144.098a2 2 0 0 0-.264.247l-.078.095-.027-.077c-.15-.34-.55-.565-1.033-.565l-.169.007a1.36 1.36 0 0 0-.896.42l-.08.09-.038-.363-.075-.067H8.994l-.075.079.024.634c.005.2.008.397.008.604v2.652l.075.075h1.178l.075-.075v-2.269q-.002-.168.042-.274c.083-.23.262-.392.496-.392.314 0 .483.267.483.753v2.182l.075.075h1.179l.075-.075v-2.277c0-.097.016-.213.043-.285.077-.224.26-.373.486-.373.33 0 .5.272.5.817v2.118l.074.075h1.179l.075-.075v-2.293c0-1.131-.537-1.763-1.39-1.763Z"})))},{name:"snapchat",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M11.989 1.728c3.221.001 5.904 2.683 5.908 5.912q.002 1.133.067 2.094a.737.737 0 0 0 .902.669l1.009-.237a.6.6 0 0 1 .129-.015c.256 0 .492.175.55.434a.74.74 0 0 1-.479.861l-1.532.618a.823.823 0 0 0-.485.98c1.229 4.543 4.661 4.071 4.661 4.662 0 .743-2.587.848-2.821 1.082s-.01 1.368-.532 1.588a1.1 1.1 0 0 1-.409.056c-.393 0-.95-.077-1.536-.077-.509 0-1.04.058-1.507.273-1.239.572-2.433 1.641-3.914 1.641S9.325 21.2 8.086 20.628c-.467-.216-.998-.273-1.507-.273-.586 0-1.143.077-1.536.077-.17 0-.31-.014-.409-.056-.522-.22-.299-1.354-.532-1.588s-2.821-.337-2.821-1.08c0-.592 3.432-.119 4.661-4.662a.824.824 0 0 0-.486-.98l-1.532-.618a.74.74 0 0 1-.479-.861.56.56 0 0 1 .679-.419l1.009.237q.086.02.169.02a.737.737 0 0 0 .733-.689q.065-.961.067-2.094c.004-3.229 2.666-5.91 5.887-5.912m0-1.281c-.961 0-1.898.194-2.784.574A7.2 7.2 0 0 0 6.93 2.572a7.2 7.2 0 0 0-1.539 2.282A7.1 7.1 0 0 0 4.82 7.64a33 33 0 0 1-.029 1.369l-.375-.088a2 2 0 0 0-.421-.049 1.86 1.86 0 0 0-1.135.389 1.84 1.84 0 0 0-.666 1.049 2.024 2.024 0 0 0 1.271 2.335l1.124.454c-.744 2.285-2.117 2.723-3.041 3.018a5 5 0 0 0-.659.246C.087 16.76 0 17.436 0 17.708c0 .521.247.996.694 1.339.223.17.499.311.844.43.47.162 1.016.265 1.459.347.021.164.053.341.106.518.22.738.684 1.069 1.034 1.217.332.14.676.156.905.156.224 0 .462-.018.713-.036.269-.02.548-.041.823-.041.426 0 .743.051.97.155.311.144.64.337.989.542.972.571 2.073 1.217 3.462 1.217s2.49-.647 3.462-1.217c.349-.205.679-.399.989-.542.226-.105.544-.155.97-.155.275 0 .554.021.823.041.251.019.488.036.713.036.229 0 .573-.016.905-.156.35-.147.814-.478 1.034-1.217.053-.178.084-.354.106-.518.443-.082.989-.185 1.459-.347.345-.119.621-.259.844-.43.448-.342.694-.818.694-1.339 0-.272-.087-.948-.891-1.347a5 5 0 0 0-.659-.246c-.924-.295-2.297-.733-3.041-3.018l1.124-.454a2.025 2.025 0 0 0 1.271-2.335 1.83 1.83 0 0 0-.666-1.049 1.86 1.86 0 0 0-1.556-.34l-.375.088a33 33 0 0 1-.029-1.369 7.1 7.1 0 0 0-.575-2.789c-.365-.853-.886-1.62-1.547-2.282s-1.428-1.182-2.28-1.547a7.1 7.1 0 0 0-2.786-.574"})))},{name:"soundcloud",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M23.587 13.923a3.303 3.303 0 0 1-3.344 3.117h-8.037a.674.674 0 0 1-.667-.67V7.717a.74.74 0 0 1 .444-.705s.739-.512 2.296-.512a5.27 5.27 0 0 1 2.702.742 5.35 5.35 0 0 1 2.516 3.485 3.1 3.1 0 0 1 .852-.116 3.217 3.217 0 0 1 3.237 3.312m-13.05-5.659c.242 2.935.419 5.612 0 8.538a.261.261 0 0 1-.519 0c-.39-2.901-.221-5.628 0-8.538a.26.26 0 0 1 .398-.25.26.26 0 0 1 .12.25zm-1.627 8.541a.273.273 0 0 1-.541 0 32.7 32.7 0 0 1 0-7.533.274.274 0 0 1 .544 0 29.4 29.4 0 0 1-.003 7.533m-1.63-7.788c.264 2.69.384 5.099-.003 7.782a.262.262 0 0 1-.522 0c-.374-2.649-.249-5.127 0-7.782a.264.264 0 0 1 .525 0m-1.631 7.792a.268.268 0 0 1-.532 0 27.6 27.6 0 0 1 0-7.034.27.27 0 1 1 .541 0 25.8 25.8 0 0 1-.01 7.034zm-1.63-5.276c.412 1.824.227 3.435-.015 5.294a.255.255 0 0 1-.504 0c-.22-1.834-.402-3.482-.015-5.295a.268.268 0 0 1 .535 0m-1.626-.277c.378 1.869.254 3.451-.01 5.325-.031.277-.506.28-.531 0-.239-1.846-.352-3.476-.01-5.325a.277.277 0 0 1 .551 0m-1.643.907c.396 1.239.261 2.246-.016 3.517a.258.258 0 0 1-.514 0c-.239-1.246-.336-2.274-.021-3.517a.276.276 0 0 1 .55 0z"})))},{name:"spotify",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m4.586 14.424a.62.62 0 0 1-.857.207c-2.348-1.435-5.304-1.76-8.785-.964a.622.622 0 1 1-.277-1.215c3.809-.871 7.077-.496 9.713 1.115a.623.623 0 0 1 .206.857M17.81 13.7a.78.78 0 0 1-1.072.257c-2.687-1.652-6.785-2.131-9.965-1.166A.779.779 0 1 1 6.32 11.3c3.632-1.102 8.147-.568 11.234 1.328a.78.78 0 0 1 .256 1.072m.105-2.835c-3.223-1.914-8.54-2.09-11.618-1.156a.935.935 0 1 1-.542-1.79c3.532-1.072 9.404-.865 13.115 1.338a.936.936 0 1 1-.955 1.608"})))},{name:"squarespace",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M20.87 9.271a3.86 3.86 0 0 0-5.458 0l-6.141 6.141a.964.964 0 1 0 1.365 1.364l6.14-6.14a1.929 1.929 0 1 1 2.729 2.729l-6.022 6.022a1.93 1.93 0 0 0 2.729 0l4.658-4.658a3.86 3.86 0 0 0 0-5.458m-2.047 2.047a.965.965 0 0 0-1.365 0l-6.14 6.14a1.93 1.93 0 0 1-2.729 0 .964.964 0 1 0-1.364 1.364 3.86 3.86 0 0 0 5.458 0l6.14-6.14a.966.966 0 0 0 0-1.364m-2.047-6.141a3.86 3.86 0 0 0-5.458 0l-6.14 6.14a.964.964 0 1 0 1.364 1.364l6.141-6.14a1.93 1.93 0 0 1 2.729 0 .965.965 0 1 0 1.364-1.364m-2.047 2.047a.964.964 0 0 0-1.364 0l-6.14 6.141a1.929 1.929 0 1 1-2.729-2.729l6.022-6.022a1.93 1.93 0 0 0-2.729 0L3.13 9.271a3.86 3.86 0 0 0 5.458 5.458l6.14-6.141a.963.963 0 0 0 .001-1.364"})))},{name:"stackexchange",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M4 11.606h16v3.272H4zM4 7.377h16v3.272H4zM17.514 3H6.55C5.147 3 4 4.169 4 5.614v.848h16v-.85C20 4.167 18.895 3 17.514 3M4 15.813v.85c0 1.445 1.147 2.614 2.55 2.614h6.799v3.463l3.357-3.463h.744c1.402 0 2.55-1.169 2.55-2.614v-.85z"})))},{name:"stackoverflow",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M18.18 20.103V14.78h1.767v7.09H4v-7.09h1.767v5.323z"}),React.createElement("path",{d:"m7.717 14.275 8.673 1.813.367-1.744-8.673-1.813zm1.147-4.13 8.031 3.74.734-1.606-8.031-3.763zm2.226-3.946 6.815 5.667 1.124-1.354-6.815-5.667zM15.495 2l-1.423 1.055 5.277 7.113 1.423-1.055zM7.533 18.314h8.857v-1.767H7.533z"})))},{name:"stumbleupon",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 4.294a4.47 4.47 0 0 0-4.471 4.471v6.353a1.059 1.059 0 1 1-2.118 0v-2.824H2v2.941a4.471 4.471 0 0 0 8.942 0v-6.47a1.059 1.059 0 1 1 2.118 0v1.294l1.412.647 2-.647V8.765A4.473 4.473 0 0 0 12 4.294m1.059 8.059v2.882a4.471 4.471 0 0 0 8.941 0v-2.824h-3.412v2.824a1.059 1.059 0 1 1-2.118 0v-2.882l-2 .647z"})))},{name:"substack",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M19.904 9.182H4.095V7.054h15.81v2.127M4.095 11.109V21L12 16.583 19.905 21v-9.891zM19.905 3H4.095v2.127h15.81z"})))},{name:"telegram",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m3.08 14.757s-.25.625-.936.325l-2.541-1.949-1.63 1.486s-.127.096-.266.036c0 0-.12-.011-.27-.486s-.911-2.972-.911-2.972L6 12.349s-.387-.137-.425-.438c-.037-.3.437-.462.437-.462l10.03-3.934s.824-.362.824.238z"})))},{name:"threads",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 192 192"},React.createElement("g",null,React.createElement("path",{d:"M141.537 88.988a67 67 0 0 0-2.518-1.143c-1.482-27.307-16.403-42.94-41.457-43.1h-.34c-14.986 0-27.449 6.396-35.12 18.036l13.779 9.452c5.73-8.695 14.724-10.548 21.348-10.548h.229c8.249.053 14.474 2.452 18.503 7.129 2.932 3.405 4.893 8.111 5.864 14.05-7.314-1.243-15.224-1.626-23.68-1.14-23.82 1.371-39.134 15.264-38.105 34.568.522 9.792 5.4 18.216 13.735 23.719 7.047 4.652 16.124 6.927 25.557 6.412 12.458-.683 22.231-5.436 29.049-14.127 5.178-6.6 8.453-15.153 9.899-25.93 5.937 3.583 10.337 8.298 12.767 13.966 4.132 9.635 4.373 25.468-8.546 38.376-11.319 11.308-24.925 16.2-45.488 16.351-22.809-.169-40.06-7.484-51.275-21.742C35.236 139.966 29.808 120.682 29.605 96c.203-24.682 5.63-43.966 16.133-57.317C56.954 24.425 74.204 17.11 97.013 16.94c22.975.17 40.526 7.52 52.171 21.847 5.71 7.026 10.015 15.86 12.853 26.162l16.147-4.308c-3.44-12.68-8.853-23.606-16.219-32.668C147.036 9.607 125.202.195 97.07 0h-.113C68.882.194 47.292 9.642 32.788 28.08 19.882 44.485 13.224 67.315 13.001 95.932L13 96v.067c.224 28.617 6.882 51.447 19.788 67.854C47.292 182.358 68.882 191.806 96.957 192h.113c24.96-.173 42.554-6.708 57.048-21.189 18.963-18.945 18.392-42.692 12.142-57.27-4.484-10.454-13.033-18.945-24.723-24.553M98.44 129.507c-10.44.588-21.286-4.098-21.82-14.135-.397-7.442 5.296-15.746 22.461-16.735q2.948-.17 5.79-.169c6.235 0 12.068.606 17.371 1.765-1.978 24.702-13.58 28.713-23.802 29.274"})))},{name:"tiktok-alt",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M5 3a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zm7.531 3h2.053s-.114 2.635 2.85 2.82v2.04s-1.582.099-2.85-.87l.021 4.207a3.804 3.804 0 1 1-3.802-3.802h.533v2.082a1.73 1.73 0 0 0-1.922.648 1.727 1.727 0 0 0 1.947 2.646 1.73 1.73 0 0 0 1.19-1.642z"})))},{name:"tiktok",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12.22 2h3.42s-.19 4.394 4.75 4.702v3.396s-2.636.166-4.75-1.448l.037 7.012a6.338 6.338 0 1 1-6.34-6.339h.89v3.472a2.882 2.882 0 1 0 2.024 2.752z"})))},{name:"tripadvisor",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M21.01 9.859c.236-1.002.985-2.003.985-2.003l-3.341-.002C16.779 6.643 14.502 6 11.979 6 9.363 6 7 6.659 5.135 7.877L2 7.88s.74.988.98 1.983a4.98 4.98 0 0 0-.977 2.961 5.01 5.01 0 0 0 5.009 5.003 5 5 0 0 0 3.904-1.875l1.065 1.592 1.076-1.606a4.96 4.96 0 0 0 1.838 1.448 4.98 4.98 0 0 0 3.831.151 5.01 5.01 0 0 0 2.963-6.431 5 5 0 0 0-.679-1.247m-13.998 6.96a4 4 0 0 1-3.998-3.995 4 4 0 0 1 3.998-3.997 4 4 0 0 1 3.996 3.997 4 4 0 0 1-3.996 3.995m4.987-4.36A5.007 5.007 0 0 0 7.11 7.821c1.434-.613 3.081-.947 4.867-.947 1.798 0 3.421.324 4.853.966a4.984 4.984 0 0 0-4.831 4.619m6.288 4.134a3.97 3.97 0 0 1-3.058-.122 3.96 3.96 0 0 1-2.075-2.245v-.001a3.97 3.97 0 0 1 .118-3.056 3.97 3.97 0 0 1 2.246-2.077 4.005 4.005 0 0 1 5.135 2.366 4.006 4.006 0 0 1-2.366 5.135"}),React.createElement("path",{d:"M6.949 10.307a2.477 2.477 0 0 0-2.475 2.472 2.48 2.48 0 0 0 2.475 2.474 2.474 2.474 0 0 0 0-4.946m0 4.094a1.626 1.626 0 0 1-1.624-1.623 1.621 1.621 0 1 1 1.624 1.623M16.981 10.307a2.477 2.477 0 0 0-2.474 2.472 2.48 2.48 0 0 0 2.474 2.474 2.476 2.476 0 0 0 2.472-2.474 2.475 2.475 0 0 0-2.472-2.472m0 4.094a1.625 1.625 0 0 1-1.622-1.623 1.622 1.622 0 1 1 1.622 1.623"}),React.createElement("path",{d:"M7.778 12.778a.832.832 0 1 1-1.664.002.832.832 0 0 1 1.664-.002M16.981 11.947a.832.832 0 1 0 .002 1.666.832.832 0 0 0-.002-1.666"})))},{name:"tumblr-alt",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M16.749 17.396c-.357.17-1.041.319-1.551.332-1.539.041-1.837-1.081-1.85-1.896V9.847h3.861v-2.91h-3.847V2.039h-2.817c-.046 0-.127.041-.138.144-.165 1.499-.867 4.13-3.783 5.181v2.484h1.945v6.282c0 2.151 1.587 5.206 5.775 5.135 1.413-.024 2.982-.616 3.329-1.126z"})))},{name:"tumblr",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2m-5.569 14.265c-2.446.042-3.372-1.742-3.372-2.998v-3.668H8.923v-1.45c1.703-.614 2.113-2.15 2.209-3.025.007-.06.054-.084.081-.084h1.645V8.9h2.246v1.7H12.85v3.495c.008.476.182 1.131 1.081 1.107.298-.008.697-.094.906-.194l.54 1.601c-.205.296-1.121.641-1.946.656"})))},{name:"twitch",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M16.499 8.089h-1.636v4.91h1.636zm-4.499 0h-1.637v4.91H12zM4.228 3.178 3 6.451v13.092h4.499V22h2.456l2.454-2.456h3.681L21 14.636V3.178zm15.136 10.638L16.5 16.681H12l-2.453 2.453V16.68H5.863V4.814h13.501z"})))},{name:"twitter-alt",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M22.23 5.924a8.2 8.2 0 0 1-2.357.646 4.12 4.12 0 0 0 1.804-2.27 8.2 8.2 0 0 1-2.606.996 4.103 4.103 0 0 0-6.991 3.742 11.65 11.65 0 0 1-8.457-4.287 4.1 4.1 0 0 0-.556 2.063 4.1 4.1 0 0 0 1.825 3.415 4.1 4.1 0 0 1-1.859-.513v.052a4.104 4.104 0 0 0 3.292 4.023 4.1 4.1 0 0 1-1.853.07 4.11 4.11 0 0 0 3.833 2.85 8.24 8.24 0 0 1-5.096 1.756 8 8 0 0 1-.979-.057 11.6 11.6 0 0 0 6.29 1.843c7.547 0 11.675-6.252 11.675-11.675q0-.267-.012-.531a8.3 8.3 0 0 0 2.047-2.123"})))},{name:"twitter",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2m-2.534 6.71q.007.148.007.298c0 3.045-2.318 6.556-6.556 6.556a6.5 6.5 0 0 1-3.532-1.035q.27.032.55.032a4.63 4.63 0 0 0 2.862-.986 2.31 2.31 0 0 1-2.152-1.6 2.3 2.3 0 0 0 1.04-.04 2.306 2.306 0 0 1-1.848-2.259v-.029c.311.173.666.276 1.044.288a2.303 2.303 0 0 1-.713-3.076 6.54 6.54 0 0 0 4.749 2.407 2.305 2.305 0 0 1 3.926-2.101 4.6 4.6 0 0 0 1.463-.559 2.3 2.3 0 0 1-1.013 1.275c.466-.056.91-.18 1.323-.363-.31.461-.7.867-1.15 1.192"})))},{name:"untappd",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"m11 13.299-5.824 8.133c-.298.416-.8.635-1.308.572-.578-.072-1.374-.289-2.195-.879S.392 19.849.139 19.323a1.4 1.4 0 0 1 .122-1.425l5.824-8.133a3.1 3.1 0 0 1 1.062-.927l1.146-.604c.23-.121.436-.283.608-.478.556-.631 2.049-2.284 4.696-4.957l.046-.212a.13.13 0 0 1 .096-.1l.146-.037a.135.135 0 0 0 .101-.141l-.015-.18a.13.13 0 0 1 .125-.142c.176-.005.518.046 1.001.393s.64.656.692.824a.13.13 0 0 1-.095.164l-.175.044a.13.13 0 0 0-.101.141l.012.15a.13.13 0 0 1-.063.123l-.186.112c-1.679 3.369-2.764 5.316-3.183 6.046a2.2 2.2 0 0 0-.257.73l-.205 1.281A3.1 3.1 0 0 1 11 13.3zm12.739 4.598-5.824-8.133a3.1 3.1 0 0 0-1.062-.927l-1.146-.605a2.1 2.1 0 0 1-.608-.478 51 51 0 0 0-.587-.654.09.09 0 0 0-.142.018 97 97 0 0 1-1.745 3.223 1.4 1.4 0 0 0-.171.485 3.5 3.5 0 0 0 0 1.103l.01.064c.075.471.259.918.536 1.305l5.824 8.133c.296.413.79.635 1.294.574a4.76 4.76 0 0 0 2.209-.881 4.76 4.76 0 0 0 1.533-1.802 1.4 1.4 0 0 0-.122-1.425zM8.306 3.366l.175.044a.134.134 0 0 1 .101.141l-.012.15a.13.13 0 0 0 .063.123l.186.112q.465.933.869 1.721c.026.051.091.06.129.019q.655-.703 1.585-1.668a.137.137 0 0 0 .003-.19c-.315-.322-.645-.659-1.002-1.02l-.046-.212a.13.13 0 0 0-.096-.099l-.146-.037a.135.135 0 0 1-.101-.141l.015-.18a.13.13 0 0 0-.123-.142c-.175-.005-.518.045-1.002.393-.483.347-.64.656-.692.824a.13.13 0 0 0 .095.164z"})))},{name:"vimeo",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M22.396 7.164q-.139 3.039-4.245 8.32Q13.907 21 10.97 21q-1.82 0-3.079-3.359l-1.68-6.159q-.934-3.36-2.005-3.36-.234.001-1.634.98l-.978-1.261q1.541-1.353 3.037-2.708 2.056-1.774 3.084-1.869 2.429-.234 2.99 3.321.607 3.836.841 4.769.7 3.181 1.542 3.181.653 0 1.963-2.065 1.307-2.063 1.401-3.142.187-1.781-1.401-1.782-.747.001-1.541.341 1.534-5.024 5.862-4.884 3.21.095 3.024 4.161"})))},{name:"vk",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{fillRule:"evenodd",d:"M1.687 1.687C0 3.374 0 6.09 0 11.52v.96c0 5.431 0 8.146 1.687 9.833S6.09 24 11.52 24h.96c5.431 0 8.146 0 9.833-1.687S24 17.91 24 12.48v-.96c0-5.431 0-8.146-1.687-9.833S17.91 0 12.48 0h-.96C6.09 0 3.374 0 1.687 1.687M4.05 7.3c.13 6.24 3.25 9.99 8.72 9.99h.31v-3.57c2.01.2 3.53 1.67 4.14 3.57h2.84c-.78-2.84-2.83-4.41-4.11-5.01 1.28-.74 3.08-2.54 3.51-4.98h-2.58c-.56 1.98-2.22 3.78-3.8 3.95V7.3H10.5v6.92c-1.6-.4-3.62-2.34-3.71-6.92z"})))},{name:"whatsapp",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"m2.048 22 1.406-5.136a9.9 9.9 0 0 1-1.323-4.955C2.133 6.446 6.579 2 12.042 2a9.85 9.85 0 0 1 7.011 2.906 9.85 9.85 0 0 1 2.9 7.011c-.002 5.464-4.448 9.91-9.91 9.91h-.004a9.9 9.9 0 0 1-4.736-1.206zm5.497-3.172.301.179a8.2 8.2 0 0 0 4.193 1.148h.003c4.54 0 8.235-3.695 8.237-8.237a8.2 8.2 0 0 0-2.41-5.828 8.18 8.18 0 0 0-5.824-2.416c-4.544 0-8.239 3.695-8.241 8.237a8.2 8.2 0 0 0 1.259 4.384l.196.312-.832 3.04zm9.49-4.554c-.062-.103-.227-.165-.475-.289s-1.465-.723-1.692-.806-.392-.124-.557.124-.64.806-.784.971-.289.186-.536.062-1.046-.385-1.991-1.229c-.736-.657-1.233-1.468-1.378-1.715s-.015-.382.109-.505c.111-.111.248-.289.371-.434.124-.145.165-.248.248-.413s.041-.31-.021-.434-.557-1.343-.763-1.839c-.202-.483-.407-.417-.559-.425-.144-.007-.31-.009-.475-.009a.9.9 0 0 0-.66.31c-.226.248-.866.847-.866 2.066s.887 2.396 1.011 2.562 1.746 2.666 4.23 3.739c.591.255 1.052.408 1.412.522.593.189 1.133.162 1.56.098.476-.071 1.465-.599 1.671-1.177.206-.58.206-1.075.145-1.179"})))},{name:"woocommerce",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M19 2H5C3.3 2 2 3.3 2 5v11c0 1.7 1.3 3 3 3h4l6 3-1-3h5c1.7 0 3-1.3 3-3V5c0-1.7-1.3-3-3-3m-1.6 4.5c-.4.8-.8 2.1-1 3.9-.3 1.8-.4 3.1-.3 4.1 0 .3 0 .5-.1.7s-.3.4-.6.4-.6-.1-.9-.4c-1-1-1.8-2.6-2.4-4.6-.7 1.4-1.2 2.4-1.6 3.1-.6 1.2-1.2 1.8-1.6 1.9-.3 0-.5-.2-.8-.7-.5-1.4-1.1-4.2-1.7-8.2 0-.3 0-.5.2-.7.1-.2.4-.3.7-.4.5 0 .9.2.9.8.3 2.3.7 4.2 1.1 5.7l2.4-4.5c.2-.4.4-.6.8-.6q.75 0 .9.9c.3 1.4.6 2.6 1 3.7.3-2.7.8-4.7 1.4-5.9.2-.3.4-.5.7-.5.2 0 .5.1.7.2q.3.3.3.6c0 .3 0 .4-.1.5"})))},{name:"wordpress",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12.158 12.786 9.46 20.625a9 9 0 0 0 5.526-.144 1 1 0 0 1-.065-.124zM3.009 12a8.99 8.99 0 0 0 5.067 8.092L3.788 8.341A8.95 8.95 0 0 0 3.009 12m15.06-.454c0-1.112-.399-1.881-.741-2.48-.456-.741-.883-1.368-.883-2.109 0-.826.627-1.596 1.51-1.596q.06.002.116.007A8.96 8.96 0 0 0 12 3.009a8.98 8.98 0 0 0-7.512 4.052c.211.007.41.011.579.011.94 0 2.396-.114 2.396-.114.484-.028.541.684.057.741 0 0-.487.057-1.029.085l3.274 9.739 1.968-5.901-1.401-3.838c-.484-.028-.943-.085-.943-.085-.485-.029-.428-.769.057-.741 0 0 1.484.114 2.368.114.94 0 2.397-.114 2.397-.114.485-.028.542.684.057.741 0 0-.488.057-1.029.085l3.249 9.665.897-2.996q.684-1.753.684-2.907m1.82-3.86q.06.428.06.924c0 .912-.171 1.938-.684 3.22l-2.746 7.94a8.98 8.98 0 0 0 4.47-7.771 8.9 8.9 0 0 0-1.1-4.313M12 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10"})))},{name:"x",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387z"})))},{name:"xanga",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M9 9h6v6H9zM3 9h6V3H3zm12 0h6V3h-6zm0 12h6v-6h-6zM3 21h6v-6H3z"})))},{name:"youtube",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M21.8 8.001s-.195-1.378-.795-1.985c-.76-.797-1.613-.801-2.004-.847-2.799-.202-6.997-.202-6.997-.202h-.009s-4.198 0-6.997.202c-.39.047-1.242.051-2.003.847-.6.607-.795 1.985-.795 1.985S2 9.62 2 11.238v1.517c0 1.618.2 3.237.2 3.237s.195 1.378.795 1.985c.761.797 1.76.771 2.205.855 1.6.153 6.8.201 6.8.201s4.203-.006 7.001-.209c.391-.047 1.243-.051 2.004-.847.6-.607.795-1.985.795-1.985s.2-1.618.2-3.237v-1.517c0-1.618-.2-3.237-.2-3.237M9.935 14.594l-.001-5.62 5.404 2.82z"})))}]},8992:(e,t,a)=>{"use strict";a(6072);var n=a(8120),r=a.n(n),c=a(1609);a(1135);c.PureComponent,r().string.isRequired,r().number,r().func,r().string},295:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var n=a(1455),r=a.n(n),c=a(6185),s=a.n(c);const i={getWaf:()=>r()({path:"jetpack-protect/v1/waf",method:"GET"}).then(s()),toggleWaf:()=>r()({method:"POST",path:"jetpack-protect/v1/toggle-waf"}),updateWaf:e=>r()({method:"POST",path:"jetpack/v4/waf",data:e}).then(s()),wafSeen:()=>r()({path:"jetpack-protect/v1/waf-seen",method:"POST"}),wafUpgradeSeen:()=>r()({path:"jetpack-protect/v1/waf-upgrade-seen",method:"POST"}),getOnboardingProgress:()=>r()({path:"jetpack-protect/v1/onboarding-progress",method:"GET"}),completeOnboardingSteps:e=>r()({path:"jetpack-protect/v1/onboarding-progress",method:"POST",data:{step_ids:e}}),getScanHistory:()=>r()({path:"jetpack-protect/v1/scan-history",method:"GET"}).then(s()),scan:()=>r()({path:"jetpack-protect/v1/scan",method:"POST"}),getScanStatus:()=>r()({path:"jetpack-protect/v1/status?hard_refresh=true",method:"GET"}).then(s()),fixThreats:e=>r()({path:"jetpack-protect/v1/fix-threats",method:"POST",data:{threat_ids:e}}).then(s()),getFixersStatus:e=>{const t=e.reduce(((e,t)=>`${e}threat_ids[]=${t}&`),"jetpack-protect/v1/fix-threats-status?");return r()({path:t,method:"GET"}).then(s())},ignoreThreat:e=>r()({path:`jetpack-protect/v1/ignore-threat?threat_id=${e}`,method:"POST"}),unIgnoreThreat:e=>r()({path:`jetpack-protect/v1/unignore-threat?threat_id=${e}`,method:"POST"}),checkCredentials:()=>r()({path:"jetpack-protect/v1/check-credentials",method:"POST"}),checkPlan:()=>r()({path:"jetpack-protect/v1/check-plan",method:"GET"}),getProductData:()=>r()({path:"/my-jetpack/v1/site/products?products=scan",method:"GET"}).then((e=>s()(e?.scan)))}},1186:(e,t,a)=>{"use strict";a.d(t,{A:()=>f});var n=a(6072),r=a.n(n),c=a(2947),s=a(1608),i=a(5918),o=a(9384),l=a(7723),u=a(1609),d=a(9539),p=a(4537),m=a(9701),h=a(3041),g=a(241),v=a(1517);const __=l.__,f=({children:e})=>{const{notice:t}=(0,p.A)(),{isRegistered:a}=(0,o.useConnection)(),n=(0,d.Zp)(),{counts:{current:{threats:f}}}=(0,m.A)();return(0,u.useEffect)((()=>{a||n("/setup")}),[a,n]),a?React.createElement(c.A,{moduleName:__("Jetpack Protect","jetpack-protect"),header:React.createElement(s.A,null)},t&&React.createElement(h.A,r()({floating:!0,dismissable:!0},t)),React.createElement(i.A,{horizontalSpacing:0},React.createElement(g.A,{className:v.A.navigation},React.createElement(g.o,{link:"/scan",label:React.createElement("span",{className:v.A.tab},f>0?(0,l.sprintf)( -// translators: %d is the number of threats found. -__("Scan (%d)","jetpack-protect"),f):__("Scan","jetpack-protect"))}),React.createElement(g.o,{link:"/firewall",label:__("Firewall","jetpack-protect")}))),e):null}},7715:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var n=a(5918),r=a(8509),c=a(9384),s=a(6900);const i=()=>{const{hasConnectionError:e}=(0,c.useConnectionErrorNotice)();return React.createElement(n.A,{horizontalSpacing:0},e&&React.createElement(r.A,{className:s.A["connection-error-col"]},React.createElement(c.ConnectionError,null)),React.createElement(r.A,null,React.createElement("div",{id:"jp-admin-notices",className:"my-jetpack-jitm-card"})))}},7031:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var n=a(766),r=a(8478),c=a(7425),s=a(3127),i=a(7715),o=a(6900);const l=({main:e,secondary:t,preserveSecondaryOnMobile:a=!0,spacing:r=7})=>React.createElement(n.A,null,React.createElement(i.A,null),React.createElement(s.A,{spacing:r,gap:0,main:e,mainClassName:o.A["header-main"],secondary:t,secondaryClassName:o.A["header-secondary"],preserveSecondaryOnMobile:a,fluid:!1}));l.Heading=({children:e,showIcon:t=!1})=>{const a=(0,r.Wy)("protect");return React.createElement(c.H3,{className:o.A.heading,mt:2,mb:2},e,t&&React.createElement(a,{className:o.A["heading-icon"],size:32}))},l.Subheading=({children:e})=>React.createElement("div",{className:o.A.subheading},e);const u=l},4907:(e,t,a)=>{"use strict";a.d(t,{A:()=>d});var n=a(6072),r=a.n(n),c=a(1112),s=a(6427),i=a(1609),o=a.n(i),l=a(3902);function u({children:e,...t}){return o().createElement(s.ButtonGroup,r()({className:l.A["button-group"]},t),e)}u.Button=e=>o().createElement(c.A,e);const d=u},5747:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var n=a(6461),r=a(7723),c=a(2605),s=a(9417),i=a(9370);const __=r.__,o=({children:e})=>{const{data:t,isLoading:a}=(0,c.A)();return a?React.createElement("div",{className:i.A.loading},React.createElement(n.A,{color:"black",style:{color:"black",marginTop:0,marginLeft:0}}),React.createElement("p",{className:i.A.loading__message},__("Checking credentials…","jetpack-protect"))):t&&0!==t.length?e:React.createElement(s.A,null)}},9417:(e,t,a)=>{"use strict";a.d(t,{A:()=>h});var n=a(7425),r=a(1112),c=a(3924),s=a(7115),i=a(7723),o=a(1609),l=a(8140),u=a(2605),d=a(1009),p=a(3041),m=a(2148);const __=i.__,h=()=>{const e=(0,s.jE)(),{setModal:t}=(0,d.A)(),{data:a}=(0,u.A)(),{siteSuffix:i,blogID:h}=window.jetpackProtectInitialState;return(0,o.useEffect)((()=>{const t=setInterval((()=>{a&&0!==a.length||e.invalidateQueries({queryKey:[l.oA]})}),5e3);return()=>clearInterval(t)}),[e,a]),React.createElement(React.Fragment,null,React.createElement(n.Ay,{variant:"title-medium",mb:2},__("Site credentials needed","jetpack-protect")),React.createElement(p.A,{type:"info",message:__("Before Jetpack Protect can auto-fix threats on your site, it needs your server credentials.","jetpack-protect")}),React.createElement(n.Ay,{mb:3},__("Your server credentials allow Jetpack Protect to access the server that’s powering your website. This information is securely saved and only used to perform fix threats detected on your site.","jetpack-protect")),React.createElement(n.Ay,{mb:3},__("Once you’ve entered server credentials, Jetpack Protect will be fixing the selected threats.","jetpack-protect")),React.createElement("div",{className:m.A.footer},React.createElement(r.A,{variant:"secondary",onClick:e=>{e.preventDefault(),t({type:null})}},__("Not now","jetpack-protect")),React.createElement(r.A,{isExternalLink:!0,weight:"regular",href:(0,c.A)("jetpack-settings-security-credentials",{site:h??i})},__("Enter server credentials","jetpack-protect"))))}},2652:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var n=a(7425),r=a(7723),c=a(1113),s=a(3751),i=a(7031),o=a(9889),l=a(8842);const __=r.__,u=({baseErrorMessage:e,errorMessage:t,errorCode:a})=>{let r=t?`${t} (${a}).`:e;return r+=" "+__("Try again in a few minutes.","jetpack-protect"),React.createElement(i.A,{main:React.createElement(React.Fragment,null,React.createElement(i.A.Heading,null,React.createElement("div",{className:l.A.heading},React.createElement(c.A,{className:l.A.warning,icon:s.A,size:54}),__("An error occurred","jetpack-protect"))),React.createElement(i.A.Subheading,null,React.createElement(n.Ay,null,r)),React.createElement("div",{className:l.A["scan-navigation"]},React.createElement(o.A,null))),preserveSecondaryOnMobile:!1})}},8680:(e,t,a)=>{"use strict";a.d(t,{A:()=>m});var n=a(7425),r=a(1112),c=a(7723),s=a(1609),i=a(3657),o=a(1009),l=a(5747),u=a(1571),d=a(4031),p=a(4047);const __=c.__,m=({threatList:e=[]})=>{const{setModal:t}=(0,o.A)(),{fixThreats:a,isLoading:c}=(0,i.Ay)(),[m,h]=(0,s.useState)(e.map((({id:e})=>parseInt(e)))),g=(0,s.useCallback)((e=>{e.preventDefault(),t({type:null})}),[t]),v=(0,s.useCallback)((async e=>{e.preventDefault(),await a(m),t({type:null})}),[a,t,m]),f=(0,s.useCallback)(((e,t)=>{h(e?[...m,t.id]:m.filter((e=>e!==t.id)))}),[m]);return React.createElement(d.A,null,React.createElement(l.A,null,React.createElement(n.Ay,{variant:"title-medium",mb:2},__("Fix all threats","jetpack-protect")),React.createElement(n.Ay,{mb:3},__("Jetpack will be fixing the selected threats:","jetpack-protect")),React.createElement("div",{className:p.A.list},e.map((e=>React.createElement(u.A,{key:e.id,threat:e,fixAllDialog:!0,onCheckFix:f})))),React.createElement("div",{className:p.A.footer},React.createElement(r.A,{variant:"secondary",onClick:g},__("Cancel","jetpack-protect")),React.createElement(r.A,{isLoading:c,onClick:v,disabled:!m.length},__("Fix all threats","jetpack-protect")))))}},2607:(e,t,a)=>{"use strict";a.d(t,{A:()=>p});var n=a(7425),r=a(1112),c=a(7723),s=a(3657),i=a(1009),o=a(5747),l=a(1571),u=a(4031),d=a(2318);const __=c.__,p=({id:e,fixable:t,label:a,icon:c,severity:p})=>{const{setModal:m}=(0,i.A)(),{fixThreats:h,isLoading:g}=(0,s.Ay)();return React.createElement(u.A,null,React.createElement(o.A,null,React.createElement(n.Ay,{variant:"title-medium",mb:2},__("Fix Threat","jetpack-protect")),React.createElement(n.Ay,{mb:3},__("Jetpack will be fixing the selected threat:","jetpack-protect")),React.createElement("div",{className:d.A.list},React.createElement(l.A,{threat:{id:e,fixable:t,label:a,icon:c,severity:p},fixAllDialog:!1})),React.createElement("div",{className:d.A.footer},React.createElement(r.A,{variant:"secondary",onClick:e=>{e.preventDefault(),m({type:null})}},__("Cancel","jetpack-protect")),React.createElement(r.A,{isLoading:g,onClick:async t=>{t.preventDefault(),await h([e]),m({type:null})}},__("Fix threat","jetpack-protect")))))}},4114:(e,t,a)=>{"use strict";a.d(t,{A:()=>m,E:()=>p});var n=a(7425),r=a(1113),c=a(8248),s=a(4969),i=a(3022),o=a(1609),l=a.n(o),u=a(4493);const d=l().createContext(),p=({id:e,title:t,label:a,icon:p,children:m,onOpen:h})=>{const g=(0,o.useContext)(d),v=g?.open===e,f=g?.setOpen,y=(0,i.A)(u.A["accordion-body"],{[u.A["accordion-body-open"]]:v,[u.A["accordion-body-close"]]:!v}),E=(0,o.useCallback)((()=>{v||h?.(),f((t=>t===e?null:e))}),[v,h,f,e]);return l().createElement("div",{className:u.A["accordion-item"]},l().createElement("button",{className:u.A["accordion-header"],onClick:E},l().createElement("div",null,l().createElement(n.Ay,{className:u.A["accordion-header-label"],mb:1},l().createElement(r.A,{icon:p,className:u.A["accordion-header-label-icon"]}),a),l().createElement(n.Ay,{className:u.A["accordion-header-description"],variant:v?"title-small":"body"},t)),l().createElement("div",{className:u.A["accordion-header-button"]},l().createElement(r.A,{icon:v?c.A:s.A,size:38}))),l().createElement("div",{className:y,"aria-hidden":v?"false":"true"},m))},m=({children:e})=>{const[t,a]=(0,o.useState)();return l().createElement(d.Provider,{value:{open:t,setOpen:a}},l().createElement("div",{className:u.A.accordion},e))}},5920:(e,t,a)=>{"use strict";a.d(t,{A:()=>h});var n=a(3924),r=a(7425),c=a(1014),s=a(1112),i=a(6087),o=a(7723),l=a(1113),u=a(8847),d=a(1009),p=a(4031),m=a(4871);const __=o.__,h=({id:e,title:t,label:a,icon:o,severity:h})=>{const{setModal:g}=(0,d.A)(),v=(0,u.A)(),f=(0,n.A)("jetpack-protect-codeable-referral"),[y,E]=(0,i.useState)(!1);return React.createElement(p.A,null,React.createElement(r.Ay,{variant:"title-medium",mb:2},__("Do you really want to ignore this threat?","jetpack-protect")),React.createElement(r.Ay,{mb:3},__("Jetpack will ignore the threat:","jetpack-protect")),React.createElement("div",{className:m.A.threat},React.createElement(l.A,{icon:o,className:m.A.threat__icon}),React.createElement("div",{className:m.A.threat__summary},React.createElement(r.Ay,{className:m.A.threat__summary__label,mb:1},a),React.createElement(r.Ay,{className:m.A.threat__summary__title},t)),React.createElement("div",{className:m.A.threat__severity},React.createElement(c.A,{severity:h}))),React.createElement(r.Ay,{mb:4},(0,i.createInterpolateElement)(__("By choosing to ignore this threat, you acknowledge that you have reviewed the detected code. You are accepting the risks of maintaining a potentially malicious or vulnerable file on your site. If you are unsure, please request an estimate with Codeable.","jetpack-protect"),{codeableLink:React.createElement(s.A,{variant:"link",isExternalLink:!0,href:f})})),React.createElement("div",{className:m.A.footer},React.createElement(s.A,{variant:"secondary",onClick:e=>{e.preventDefault(),g({type:null})}},__("Cancel","jetpack-protect")),React.createElement(s.A,{isDestructive:!0,isLoading:y,onClick:async t=>{t.preventDefault(),E(!0),await v.mutateAsync(e),g({type:null}),E(!1)}},__("Ignore threat","jetpack-protect"))))}},9671:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});var n=a(8044);const r=()=>React.createElement("svg",{width:"440",height:"367",viewBox:"0 0 440 367",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:n.A.inProgressAnimation},React.createElement("g",{className:n.A.inProgressAnimation__el},React.createElement("g",{filter:"url(#filter_wordpress_el)"},React.createElement("rect",{className:"rect-1",x:"40",y:"211",width:"360",height:"116",rx:"4",fill:"white"})),React.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M127 269C127 253.572 114.428 241 99 241C83.544 241 71 253.572 71 269C71 284.456 83.544 297 99 297C114.428 297 127 284.456 127 269ZM92.784 284.036L83.236 258.416C84.776 258.36 86.512 258.192 86.512 258.192C87.912 258.024 87.744 255.028 86.344 255.084C86.344 255.084 82.284 255.392 79.708 255.392C79.204 255.392 78.672 255.392 78.084 255.364C82.536 248.532 90.236 244.108 99 244.108C105.524 244.108 111.46 246.544 115.94 250.66C114.036 250.352 111.32 251.752 111.32 255.084C111.32 256.898 112.286 258.455 113.372 260.205L113.372 260.205C113.527 260.454 113.683 260.706 113.84 260.964C114.82 262.672 115.38 264.772 115.38 267.852C115.38 272.024 111.46 281.852 111.46 281.852L102.976 258.416C104.488 258.36 105.272 257.94 105.272 257.94C106.672 257.8 106.504 254.44 105.104 254.524C105.104 254.524 101.072 254.86 98.44 254.86C96.004 254.86 91.916 254.524 91.916 254.524C90.516 254.44 90.348 257.884 91.748 257.94L94.324 258.164L97.852 267.712L92.784 284.036ZM119.809 268.837L119.748 269C117.719 274.341 115.706 279.728 113.696 285.105L113.696 285.106L113.696 285.106L113.694 285.111C112.986 287.004 112.279 288.896 111.572 290.784C119.048 286.472 123.892 278.212 123.892 269C123.892 264.688 122.912 260.712 120.952 257.1C121.794 263.568 120.5 267.002 119.809 268.837ZM88.08 291.652C79.736 287.62 74.108 278.884 74.108 269C74.108 265.36 74.752 262.056 76.124 258.948C76.9623 261.244 77.8006 263.542 78.6392 265.841L78.6401 265.843L78.6404 265.844C81.7786 274.446 84.9206 283.058 88.08 291.652ZM106.588 292.632L99.364 273.088C98.0331 277.014 96.6922 280.941 95.3474 284.879C94.4288 287.568 93.5084 290.264 92.588 292.968C94.604 293.584 96.788 293.892 99 293.892C101.66 293.892 104.18 293.444 106.588 292.632Z",fill:"#E9EFF5"}),React.createElement("path",{d:"M160 283C160 279.686 162.686 277 166 277H287C290.314 277 293 279.686 293 283C293 286.314 290.314 289 287 289H166C162.686 289 160 286.314 160 283Z",fill:"#E9EFF5"}),React.createElement("path",{d:"M160 255C160 251.686 162.686 249 166 249H360C363.314 249 366 251.686 366 255C366 258.314 363.314 261 360 261H166C162.686 261 160 258.314 160 255Z",fill:"#E9EFF5"})),React.createElement("g",{className:n.A.inProgressAnimation__el},React.createElement("g",{filter:"url(#filter_plugins_el)"},React.createElement("rect",{x:"72",y:"68",width:"168",height:"120",rx:"3",fill:"#A0C5D7"})),React.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M152 108L152 118H159.5V108L163.25 108V118H167C168.381 118 169.5 119.119 169.5 120.5V130.5L162 140.5V145.5C162 146.881 160.881 148 159.5 148H152C150.619 148 149.5 146.881 149.5 145.5V140.5L142 130.5V120.5C142 119.119 143.119 118 144.5 118H148.25L148.25 108L152 108ZM153.25 139.25V144.25H158.25V139.25L165.75 129.25V121.75H145.75V129.25L153.25 139.25Z",fill:"white"})),React.createElement("g",{className:n.A.inProgressAnimation__el},React.createElement("g",{filter:"url(#filter_themes_el)"},React.createElement("rect",{x:"272",y:"40",width:"96",height:"132",rx:"3",fill:"#EED77B"})),React.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M320.238 122.25C326.583 122.25 331.726 117.107 331.726 110.762C331.726 109.608 331.141 107.683 329.776 105.088C328.472 102.609 326.691 99.9488 324.845 97.4584C323.206 95.2483 321.561 93.2314 320.238 91.6723C318.915 93.2314 317.27 95.2483 315.631 97.4584C313.785 99.9488 312.004 102.609 310.7 105.088C309.335 107.683 308.75 109.608 308.75 110.762C308.75 117.107 313.893 122.25 320.238 122.25ZM317.739 88.8229C313.417 93.8726 305 104.507 305 110.762C305 119.178 311.822 126 320.238 126C328.654 126 335.476 119.178 335.476 110.762C335.476 104.507 327.06 93.8726 322.737 88.8229C321.243 87.078 320.238 86 320.238 86C320.238 86 319.233 87.078 317.739 88.8229Z",fill:"white"})),React.createElement("defs",null,React.createElement("filter",{id:"filter_wordpress_el",x:"0",y:"171",width:"440",height:"196",filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB"},React.createElement("feFlood",{floodOpacity:"0",result:"BackgroundImageFix"}),React.createElement("feColorMatrix",{in:"SourceAlpha",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",result:"hardAlpha"}),React.createElement("feOffset",null),React.createElement("feGaussianBlur",{stdDeviation:"20"}),React.createElement("feColorMatrix",{type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08 0"}),React.createElement("feBlend",{mode:"normal",in2:"BackgroundImageFix",result:"effect1_dropShadow_2754_20065"}),React.createElement("feBlend",{mode:"normal",in:"SourceGraphic",in2:"effect1_dropShadow_2754_20065",result:"shape"})),React.createElement("filter",{id:"filter_plugins_el",x:"32",y:"28",width:"248",height:"200",filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB"},React.createElement("feFlood",{floodOpacity:"0",result:"BackgroundImageFix"}),React.createElement("feColorMatrix",{in:"SourceAlpha",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",result:"hardAlpha"}),React.createElement("feOffset",null),React.createElement("feGaussianBlur",{stdDeviation:"20"}),React.createElement("feColorMatrix",{type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08 0"}),React.createElement("feBlend",{mode:"normal",in2:"BackgroundImageFix",result:"effect1_dropShadow_2754_20065"}),React.createElement("feBlend",{mode:"normal",in:"SourceGraphic",in2:"effect1_dropShadow_2754_20065",result:"shape"})),React.createElement("filter",{id:"filter_themes_el",x:"232",y:"0",width:"176",height:"212",filterUnits:"userSpaceOnUse",colorInterpolationFilters:"sRGB"},React.createElement("feFlood",{floodOpacity:"0",result:"BackgroundImageFix"}),React.createElement("feColorMatrix",{in:"SourceAlpha",type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0",result:"hardAlpha"}),React.createElement("feOffset",null),React.createElement("feGaussianBlur",{stdDeviation:"20"}),React.createElement("feColorMatrix",{type:"matrix",values:"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.08 0"}),React.createElement("feBlend",{mode:"normal",in2:"BackgroundImageFix",result:"effect1_dropShadow_2754_20065"}),React.createElement("feBlend",{mode:"normal",in:"SourceGraphic",in2:"effect1_dropShadow_2754_20065",result:"shape"}))))},4440:(e,t,a)=>{"use strict";a.d(t,{A:()=>g});var n=a(7723),r=a(1113),c=a(991),s=a(1009),i=a(9417),o=a(8680),l=a(2607),u=a(5920),d=a(3144),p=a(9623),m=a(7259);const __=n.__,h={IGNORE_THREAT:u.A,UNIGNORE_THREAT:p.A,FIX_THREAT:l.A,FIX_ALL_THREATS:o.A,CREDENTIALS_NEEDED:i.A,STANDALONE_MODE:d.A},g=()=>{const{modal:e,setModal:t}=(0,s.A)();if(!e.type)return null;const a=h[e.type];return React.createElement("div",{className:m.A.modal},React.createElement("div",{className:m.A.modal__window},React.createElement("button",{onClick:e=>{e.preventDefault(),t({type:null})},className:m.A.modal__close,title:__("Close Modal Window","jetpack-protect")},React.createElement(r.A,{icon:c.A,size:24,className:m.A.modal__close__icon,"aria-label":__("Close Modal Window","jetpack-protect")})),React.createElement(a,e.props)))}},9278:(e,t,a)=>{"use strict";a.d(t,{A:()=>v});var n=a(7425),r=a(6427),c=a(7723),s=a(1113),i=a(9783),o=a(3883),l=a(8120),u=a.n(l),d=a(1609),p=a.n(d),m=a(2425),h=a(3066);const __=c.__,g=({count:e,checked:t})=>{const{data:a}=(0,m.Ay)(),{popoverText:c,badgeElement:l}=((e,t)=>t?0===e?{popoverText:__("No known threats found to affect this version","jetpack-protect"),badgeElement:p().createElement(s.A,{icon:o.A,size:28,className:h.A["navigation-item-check-badge"]})}:{popoverText:null,badgeElement:p().createElement(n.Ay,{variant:"body-extra-small",className:h.A["navigation-item-badge"],component:"div"},e)}:{popoverText:__("This item was added to your site after the most recent scan. We will check for threats during the next scheduled one.","jetpack-protect"),badgeElement:p().createElement(s.A,{icon:i.A,size:28,className:h.A["navigation-item-info-badge"]})})(e,t),[u,g]=(0,d.useState)(!1),v=(0,d.useMemo)((()=>(0,m.EV)(a)),[a]),f=(0,d.useCallback)((()=>{v||g(!0)}),[v]),y=(0,d.useCallback)((()=>{g(!1)}),[]);return p().createElement("div",{onMouseLeave:c?y:null,onMouseEnter:c?f:null,onClick:c?f:null,onFocus:c?f:null,onBlur:c?y:null,role:"presentation"},v?p().createElement(r.Spinner,null):l,u&&p().createElement(r.Popover,{noArrow:!1,inline:!0},p().createElement(n.Ay,{variant:"body-small",className:h.A["popover-text"]},c)))};g.propTypes={count:u().number,checked:u().bool};const v=g},5498:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var n=a(1112),r=a(7723),c=a(1609),s=a.n(c),i=a(1549),o=a(3066),l=a(43);const __=r.__,u=({icon:e,label:t,children:a})=>{const[u,d]=(0,c.useState)(!0),{mode:p}=(0,c.useContext)(l._),m=Array.isArray(a)&&a?.length>=8&&"list"===p,h=m&&u?a.slice(0,8):a,g=m?a?.length-8:0,v=(0,c.useCallback)((()=>{d((e=>!e))}),[]);return s().createElement("li",{tabIndex:-1,role:"menuitem",className:o.A["navigation-group"]},s().createElement(i.A,{icon:e,className:o.A["navigation-group-label"]},t),s().createElement("div",{className:o.A["navigation-group-list"]},s().createElement("ul",{className:o.A["navigation-group-content"]},h),m&&s().createElement("div",{className:o.A["navigation-group-truncate"]},s().createElement(n.A,{variant:"link",onClick:v},u?(0,r.sprintf)(/* translators: %s: Number of hide items */ -__("Show %s more","jetpack-protect"),g):(0,r.sprintf)(/* translators: %s: Number of hide items */ -__("Hide %s items","jetpack-protect"),g)))))}},59:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>f,Me:()=>d.A,s$:()=>p.A});var n=a(7425),r=a(6427),c=a(7723),s=a(1113),i=a(8248),o=a(4969),l=a(1609),u=a.n(l),d=a(5498),p=a(7366),m=a(3066),h=a(43);const __=c.__,g=({children:e})=>u().createElement("ul",{className:m.A.navigation,role:"menu"},e),v=({children:e,data:t})=>{const a=(0,l.useRef)(void 0),[c,d]=(0,l.useState)(!1),p=t?.items?.find((e=>e?.id===t?.selectedItem))??{label:__("See all results","jetpack-protect")},{label:h,icon:g}=p,v=(0,l.useCallback)((()=>{d((e=>!e))}),[]);return u().createElement("button",{className:m.A["navigation-dropdown-button"],onClick:v,ref:a},u().createElement("div",{className:m.A["navigation-dropdown-label"]},g&&u().createElement(s.A,{icon:g,className:m.A["navigation-dropdown-icon"]}),u().createElement(n.Ay,null,h)),u().createElement(s.A,{icon:c?i.A:o.A,size:32}),u().createElement(r.Popover,{position:"bottom center",anchorRef:a?.current,inline:!0},u().createElement("div",{style:{display:c?"block":"none",width:a?.current?.getBoundingClientRect?.()?.width}},e)))},f=({children:e,selected:t,onSelect:a,mode:n="list"})=>{const r=(0,h.A)({selected:t,onSelect:a}),c=(e=>{switch(e){case"list":default:return g;case"dropdown":return v}})(n);return u().createElement(h._.Provider,{value:{...r,mode:n}},u().createElement(c,{data:r},e))}},7366:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var n=a(3022),r=a(1609),c=a.n(r),s=a(9278),i=a(1549),o=a(3066),l=a(43);const u=({id:e,label:t,icon:a,badge:u,disabled:d,onClick:p,onKeyDown:m,onFocus:h,checked:g})=>{const v=(0,r.useContext)(l._),f=v?.selectedItem===e,y=v?.registerItem,E=v?.registerRef,A=v?.handleClickItem,b=v?.handleKeyDownItem,w=v?.handleFocusItem,k=(0,n.A)(o.A["navigation-item"],{[o.A.clickable]:!d,[o.A.selected]:f}),R=(0,r.useCallback)((t=>{p?.(t),A?.(e)}),[A,e,p]),C=(0,r.useCallback)((e=>{m?.(e),b?.(e)}),[b,m]),_=(0,r.useCallback)((t=>{E(t,e)}),[E,e]),j=(0,r.useCallback)((t=>{h?.(t),w?.(e)}),[w,e,h]);return(0,r.useEffect)((()=>{y({id:e,disabled:d,label:t,icon:a})}),[]),c().createElement("li",{className:k,onClick:d?null:R,onKeyDown:C,onFocus:d?null:j,role:"menuitem",tabIndex:d?-1:0,ref:_},c().createElement(i.A,{icon:a},t),c().createElement(s.A,{count:u,checked:g}))}},1549:(e,t,a)=>{"use strict";a.d(t,{A:()=>p});var n=a(7425),r=a(1113),c=a(3022),s=a(8120),i=a.n(s),o=a(1609),l=a.n(o),u=a(3066);const d=({icon:e,children:t,className:a})=>l().createElement(n.Ay,{className:(0,c.A)(u.A["navigation-item-label"],a)},e&&l().createElement(r.A,{icon:e,className:u.A["navigation-item-icon"],size:28}),l().createElement("span",{className:u.A["navigation-item-label-content"]},t));d.propTypes={icon:i().node,children:i().node.isRequired};const p=d},43:(e,t,a)=>{"use strict";a.d(t,{A:()=>c,_:()=>r});var n=a(1609);const r=a.n(n)().createContext(),c=({selected:e,onSelect:t})=>{const[a,r]=(0,n.useState)([]),[c,s]=(0,n.useState)([]),[i,o]=(0,n.useState)(),l=(e,t)=>{const n=e-1,r=n<0?t:n,c=a[r];return c?.disabled?l(r,t):c},u=(e,t)=>{const n=e+1,r=n>t?0:n,c=a[r];return c?.disabled?u(r,t):c};return{selectedItem:e,handleClickItem:e=>{t(e)},handleKeyDownItem:n=>{const r=n?.code,s=a.findIndex((t=>t?.id===e)),o=a.length-1;let d;if("ArrowUp"===r){const e=l(s,o);d=e?.id}else if("ArrowDown"===r){const e=u(s,o);d=e?.id}else"Enter"!==r&&"Space"!==r||!i||(d=i);if(d){const e=c[d];e?.focus(),t(d)}},handleFocusItem:e=>{o(e)},registerRef:(e,t)=>{s((a=>!a[t]&&e?{...a,[t]:e}:a))},registerItem:e=>{r((t=>{const a=[...t],n=e?.id,r=a.findIndex((e=>e?.id===n));return r>=0?a[r]=e:a.push(e),a}))},items:a}}},3041:(e,t,a)=>{"use strict";a.d(t,{A:()=>p});var n=a(7723),r=a(3883),c=a(3751),s=a(9783),i=a(1113),o=a(991),l=a(1609),u=a(4537),d=a(600);const __=n.__,p=({dismissable:e=!1,duration:t=null,floating:a=!1,message:n,type:p="success"})=>{const{clearNotice:m}=(0,u.A)();let h;switch(p){case"success":h=r.A;break;case"error":h=c.A;break;default:h=s.A}const g=(0,l.useCallback)((()=>{m()}),[m]);return(0,l.useEffect)((()=>{let e;return t&&(e=setTimeout(m,t)),()=>clearTimeout(e)}),[m,t,n]),React.createElement("div",{className:`${d.A.notice} ${d.A[`notice--${p}`]} ${a?d.A["notice--floating"]:""}`},React.createElement("div",{className:d.A.notice__icon},React.createElement(i.A,{icon:h})),React.createElement("div",{className:d.A.notice__message},n),e&&React.createElement("button",{className:d.A.notice__close,"aria-label":__("Dismiss notice.","jetpack-protect"),onClick:g},React.createElement(i.A,{icon:o.A})))}},4254:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var n=a(1330),r=a(7723),c=a(1609),s=a(1936);const __=r.__,i=({id:e,anchor:t,position:a})=>{const{stepsCount:r,currentStep:i,currentStepCount:o,completeCurrentStep:l,completeAllCurrentSteps:u}=(0,s.Ay)(),{setRenderedSteps:d}=(0,c.useContext)(s.OC);return(0,c.useEffect)((()=>(d((t=>[...t,e])),()=>{d((t=>t.filter((t=>t!==e))))})),[e,d]),i?.id!==e?null:React.createElement(n.A,{anchor:t,title:i.title,noArrow:!1,children:i.description,buttonContent:o{"use strict";a.d(t,{A:()=>_,S:()=>C});var n=a(7425),r=a(597),c=a(6461),s=a(442),i=a(1014),o=a(6427),l=a(8443),u=a(6087),d=a(7723),p=a(1113),m=a(3883),h=a(8248),g=a(4969),v=a(3022),f=a(1609),y=a.n(f),E=a(8140),A=a(3657),b=a(7489);const __=d.__,w=y().createContext(),k=({firstDetected:e,fixedOn:t,status:a})=>{const r=(0,f.useMemo)((()=>"fixed"===a?(0,d.sprintf)(/* translators: %s: Fixed on date */ -__("Threat fixed %s","jetpack-protect"),(0,l.dateI18n)("M j, Y",t)):"ignored"===a?__("Threat ignored","jetpack-protect"):null),[a,t]);return e&&y().createElement(y().Fragment,null,y().createElement(n.Ay,{className:b.A["accordion-header-status"]},(0,d.sprintf)(/* translators: %s: First detected date */ -__("Threat found %s","jetpack-protect"),(0,l.dateI18n)("M j, Y",e)),r&&y().createElement(y().Fragment,null,y().createElement("span",{className:b.A["accordion-header-status-separator"]}),y().createElement("span",{className:b.A[`is-${a}`]},r))),["fixed","ignored"].includes(a)&&y().createElement(R,{status:a}))},R=({status:e})=>y().createElement("div",{className:`${b.A["status-badge"]} ${b.A[e]}`},"fixed"===e?__("Fixed","jetpack-protect"):__("Ignored","jetpack-protect",0)),C=({id:e,title:t,label:a,icon:l,fixable:d,severity:R,children:C,firstDetected:_,fixedOn:j,onOpen:x,status:S,hideAutoFixColumn:M=!1})=>{const{open:N,setOpen:L}=(0,f.useContext)(w),P=N===e,{isThreatFixInProgress:z,isThreatFixStale:O}=(0,A.Ay)(),I=(0,f.useCallback)((()=>{P||x?.(),L((t=>t===e?null:e))}),[P,x,L,e]),[F]=(0,s.A)(["sm","lg"],[null,"<"]);return y().createElement("div",{className:b.A["accordion-item"]},y().createElement("button",{className:b.A["accordion-header"],onClick:I},y().createElement("div",null,y().createElement(n.Ay,{className:b.A["accordion-header-label"],mb:1},y().createElement(p.A,{icon:l,className:b.A["accordion-header-label-icon"]}),a),y().createElement(n.Ay,{className:b.A["accordion-header-description"],variant:P?"title-small":"body"},t),["fixed","ignored"].includes(S)&&y().createElement(k,{firstDetected:_,fixedOn:j,status:S})),y().createElement("div",null,y().createElement(i.A,{severity:R})),!M&&d&&y().createElement("div",null,(V=z(e),O(e)?y().createElement(r.A,{className:b.A["icon-tooltip"],iconClassName:b.A["icon-tooltip__icon"],iconSize:20,placement:"top",hoverShow:!0},y().createElement(n.Ay,{className:b.A["icon-tooltip__content"]},(0,u.createInterpolateElement)(__("The fixer is taking longer than expected. Please try again or contact support.","jetpack-protect"),{supportLink:y().createElement(o.ExternalLink,{className:b.A["support-link"],href:E.NW})}))):V?y().createElement(c.A,{color:"black"}):y().createElement(p.A,{icon:m.A,className:b.A["icon-check"],size:28})),F&&y().createElement("span",null,__("Auto-fix","jetpack-protect"))),y().createElement("div",{className:b.A["accordion-header-button"]},y().createElement(p.A,{icon:P?h.A:g.A,size:38}))),y().createElement("div",{className:(0,v.A)(b.A["accordion-body"],{[b.A["accordion-body-open"]]:P,[b.A["accordion-body-close"]]:!P}),"aria-hidden":!P},C));var V},_=({children:e})=>{const[t,a]=(0,f.useState)();return y().createElement(w.Provider,{value:{open:t,setOpen:a}},y().createElement("div",{className:b.A.accordion},e))}},5409:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(9539),r=a(5925);function c({children:e,redirect:t="/"}){const{hasPlan:a}=(0,r.Ay)();return a?e:React.createElement(n.C5,{to:t,replace:!0})}},9374:(e,t,a)=>{"use strict";a.d(t,{A:()=>g});var n=a(9245),r=a(489),c=a(1112),s=a(9384),i=a(7723),o=a(1609),l=a.n(o),u=a(9539),d=a(8590),p=a(1226),m=a(5925),h=a(9701);const __=i.__,g=()=>{const e=(0,u.Zp)(),{recordEvent:t}=(0,p.A)(),a=(0,d.A)(),{upgradePlan:i,isLoading:g}=(0,m.Ay)(),{registrationError:v}=(0,s.useConnection)({skipUserConnection:!0}),{jetpackScan:f}=(0,h.A)(),{pricingForUi:y}=f,{introductoryOffer:E,currencyCode:A="USD"}=y,b=y.cost?Math.ceil(y.cost/12*100)/100:null,w=E?.costPerInterval?Math.ceil(E.costPerInterval/12*100)/100:null,k=(0,o.useCallback)((()=>{t("jetpack_protect_pricing_table_get_scan_link_click"),i()}),[t,i]),R=(0,o.useCallback)((async()=>{t("jetpack_protect_connected_product_activated"),await a.mutateAsync(),e("/scan")}),[a,t,e]),C={title:__("Stay one step ahead of threats","jetpack-protect"),items:[{name:__("Scan for threats and vulnerabilities","jetpack-protect")},{name:__("Daily automated scans","jetpack-protect")},{name:__("Web Application Firewall","jetpack-protect")},{name:__("Brute force protection","jetpack-protect")},{name:__("Access to scan on Cloud","jetpack-protect")},{name:__("One-click auto fixes","jetpack-protect")},{name:__("Notifications","jetpack-protect")},{name:__("Severity labels","jetpack-protect")}]};return l().createElement(l().Fragment,null,l().createElement(n.Ay,C,l().createElement(n.N0,{primary:!0},l().createElement(n.i7,null,l().createElement(r.A,{price:b,offPrice:w,leyend:__("/month, billed yearly","jetpack-protect"),currency:A,hideDiscountLabel:!1}),l().createElement(c.A,{fullWidth:!0,onClick:k,isLoading:g,disabled:g||a.isPending},__("Get Jetpack Protect","jetpack-protect"))),l().createElement(n.eY,{isIncluded:!0,label:l().createElement("strong",null,__("Line by line malware scanning","jetpack-protect"))}),l().createElement(n.eY,{isIncluded:!0,label:l().createElement("strong",null,__("Plus on-demand manual scans","jetpack-protect"))}),l().createElement(n.eY,{isIncluded:!0,label:l().createElement("strong",null,__("Automatic protection and rule updates","jetpack-protect"))}),l().createElement(n.eY,{isIncluded:!0}),l().createElement(n.eY,{isIncluded:!0}),l().createElement(n.eY,{isIncluded:!0}),l().createElement(n.eY,{isIncluded:!0}),l().createElement(n.eY,{isIncluded:!0})),l().createElement(n.N0,null,l().createElement(n.i7,null,l().createElement(r.A,{price:0,leyend:__("Free forever","jetpack-protect"),currency:A,hidePriceFraction:!0}),l().createElement(c.A,{fullWidth:!0,variant:"secondary",onClick:R,isLoading:a.isPending,disabled:a.isPending||g,error:v?__("An error occurred. Please try again.","jetpack-protect"):null},__("Start for free","jetpack-protect"))),l().createElement(n.eY,{isIncluded:!0,label:__("Check items against database","jetpack-protect")}),l().createElement(n.eY,{isIncluded:!0}),l().createElement(n.eY,{isIncluded:!0,label:__("Manual rules only","jetpack-protect")}),l().createElement(n.eY,{isIncluded:!0}),l().createElement(n.eY,{isIncluded:!1}),l().createElement(n.eY,{isIncluded:!1}),l().createElement(n.eY,{isIncluded:!1}),l().createElement(n.eY,{isIncluded:!1}))))}},4256:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(3022),r=a(8744);const c=({className:e,total:t=100,value:a=0})=>{const c=Math.min(Math.round(a/t*100),100),s={width:`${c}%`};return React.createElement("div",{className:(0,n.A)(e,r.A["progress-bar"])},React.createElement("div",{className:r.A["progress-bar__wrapper"]},React.createElement("div",{"aria-valuemax":t,"aria-valuemin":0,"aria-valuenow":Math.min(a,t),className:r.A["progress-bar__bar"],role:"progressbar",style:s})),React.createElement("p",{className:r.A["progress-bar__percent"]},`${c}%`))}},7827:(e,t,a)=>{"use strict";function n(){return React.createElement("svg",{width:"80",height:"96",viewBox:"0 0 80 96",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M40 0.00634766L80 17.7891V44.2985C80 66.8965 65.1605 88.2927 44.2352 95.0425C41.4856 95.9295 38.5144 95.9295 35.7648 95.0425C14.8395 88.2927 0 66.8965 0 44.2985V17.7891L40 0.00634766Z",fill:"#069E08"}),React.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M60.9 33.6909L35.375 67.9124L19.2047 55.9263L22.7848 51.1264L34.1403 59.5436L56.0851 30.122L60.9 33.6909Z",fill:"white"}))}a.d(t,{A:()=>n})},3535:(e,t,a)=>{"use strict";a.d(t,{A:()=>d});var n=a(6072),r=a.n(n),c=a(1112),s=a(7723),i=a(1609),o=a.n(i),l=a(2425),u=a(240);const __=s.__,d=(0,i.forwardRef)((({variant:e="secondary",children:t,...a},n)=>{const s=(0,u.A)(),{data:d}=(0,l.Ay)(),p=(0,i.useMemo)((()=>s.isPending||(0,l.EV)(d)),[s.isPending,d]);return o().createElement(c.A,r()({ref:n,variant:e,onClick:e=>{e.preventDefault(),s.mutate()},disabled:p},a),t??__("Scan now","jetpack-protect"))}))},9889:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var n=a(7723),r=a(1609),c=a.n(r),s=a(9539),i=a(5925),o=a(4907);const __=n.__;function l(){const e=(0,s.Zp)(),t=(0,s.zy)(),{hasPlan:a}=(0,i.Ay)(),n="/scan"===t.pathname,l=t.pathname.includes("/scan/history"),u=(0,r.useCallback)((()=>e("/scan")),[e]),d=(0,r.useCallback)((()=>e("/scan/history")),[e]);return a&&(n||l)?c().createElement(c().Fragment,null,c().createElement(o.A,null,c().createElement(o.A.Button,{variant:n?"primary":"secondary",onClick:u},__("Scanner","jetpack-protect")),c().createElement(o.A.Button,{variant:l?"primary":"secondary",onClick:d},__("History","jetpack-protect")))):null}},3127:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var n=a(442),r=a(5918),c=a(8509),s=a(1609),i=a.n(s);const o=({spacing:e=0,gap:t=0,main:a,mainClassName:s,secondary:o,secondaryClassName:l,preserveSecondaryOnMobile:u=!1,fluid:d})=>{const[p,m]=(0,n.A)(["sm","lg"]),h=!u&&p;return i().createElement(r.A,{horizontalSpacing:e,horizontalGap:t,fluid:d},!h&&i().createElement(i().Fragment,null,i().createElement(c.A,{className:s,sm:12,md:4,lg:6},a),m&&i().createElement(c.A,{lg:1}),i().createElement(c.A,{className:l,sm:12,md:4,lg:5},o)),h&&i().createElement(c.A,null,a))}},3144:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var n=a(7425),r=a(6087),c=a(7723),s=a(1847);const __=c.__,i=()=>React.createElement(React.Fragment,null,React.createElement(n.Ay,{variant:"title-medium-semi-bold",mb:2},__("Enhanced protection","jetpack-protect")),React.createElement(n.Ay,{mb:2},__("Learn how you can execute Jetpack Firewall before WordPress initializes. This mode offers the most protection.","jetpack-protect")),React.createElement("ul",{className:s.A.list},React.createElement("li",{className:s.A["list-item"]},React.createElement(n.Ay,{variant:"body-small"},(0,r.createInterpolateElement)(__("To ensure the firewall can best protect your site, please update: auto_prepend_file PHP directive to point to wp-content/jetpack-waf/bootstrap.php Typically this is set either in an .htaccess file or in the global PHP configuration; contact your host for further assistance.","jetpack-protect"),{mark:React.createElement("mark",{className:s.A.mark})}))),React.createElement("li",{className:s.A["list-item"]},React.createElement(n.Ay,{variant:"body-small"},__("Don't forget to undo this action when Firewall is turned off, or when you uninstall Jetpack.","jetpack-protect")))))},241:(e,t,a)=>{"use strict";a.d(t,{A:()=>s,o:()=>c});var n=a(28),r=a(4356);const c=({label:e,link:t})=>React.createElement(n.k2,{to:t,className:({isActive:e})=>e?`${r.A.tab} ${r.A["tab--active"]}`:r.A.tab},e),s=({children:e,className:t=""})=>React.createElement("nav",{className:`${r.A.tabs} ${t}`},e)},4491:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});var n=a(6578);const r=({disabled:e=!1,id:t,label:a="",description:r="",placeholder:c="",rows:s=3,value:i="",onChange:o=()=>{}})=>React.createElement("div",null,Boolean(a)&&React.createElement("label",{className:n.A.label,htmlFor:t},a),Boolean(r)&&r,React.createElement("textarea",{className:n.A.textarea,disabled:e,placeholder:c,rows:s,id:t,name:t,onChange:o,value:i||""}))},1571:(e,t,a)=>{"use strict";a.d(t,{A:()=>d});var n=a(7425),r=a(1014),c=a(7723),s=a(1113),i=a(1609),o=a.n(i),l=a(9054);const __=c.__,u=e=>{switch(e.fixer){case"replace":return __("Jetpack Scan will replace the affected file or directory.","jetpack-protect");case"delete":return __("Jetpack Scan will delete the affected file or directory.","jetpack-protect");case"update":return e.target?(0,c.sprintf)(/* translators: %s: Version that the plugin will be upgraded to */ -__("Jetpack Scan will update to a newer version %s.","jetpack-protect"),e.target):__("Jetpack Scan will update to a newer version.","jetpack-protect");case"edit":return __("Jetpack Scan will edit the affected file or directory.","jetpack-protect");case"rollback":return e.target?(0,c.sprintf)(/* translators: %s: Version that the plugin will be upgraded to */ -__("Jetpack Scan will rollback the affected file to the version from %s.","jetpack-protect"),e.target):__("Jetpack Scan will rollback the affected file to an older (clean) version.","jetpack-protect");default:return __("Jetpack Scan will resolve the threat.","jetpack-protect")}};function d({threat:e,fixAllDialog:t,onCheckFix:a}){const[c,d]=(0,i.useState)(!0),p=(0,i.useCallback)((t=>{d(t.target.checked),a(t.target.checked,e)}),[a,e]);return o().createElement(o().Fragment,null,o().createElement("div",{className:l.A.threat},o().createElement(s.A,{icon:e.icon,className:l.A.threat__icon}),o().createElement("div",{className:l.A.threat__summary},o().createElement(n.Ay,{className:l.A.threat__summary__label,mb:1},e.label),o().createElement(n.Ay,{className:l.A.threat__summary__title},u(e.fixable))),o().createElement("div",{className:l.A.threat__severity},o().createElement(r.A,{severity:e.severity})),t&&o().createElement("div",{className:l.A.threat__checkbox},o().createElement("input",{type:"checkbox",checked:c,onChange:p,value:e.id}))))}},9314:(e,t,a)=>{"use strict";a.d(t,{A:()=>h});var n=a(7425),r=a(6087),c=a(7723),s=a(1609),i=a(2425),o=a(5925),l=a(9701),u=a(4254),d=a(3535),p=a(1476);const __=c.__,_n=c._n,m=()=>React.createElement("svg",{width:"80",height:"96",viewBox:"0 0 80 96",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M40 0.00634766L80 17.7891V44.2985C80 66.8965 65.1605 88.2927 44.2352 95.0425C41.4856 95.9295 38.5144 95.9295 35.7648 95.0425C14.8395 88.2927 0 66.8965 0 44.2985V17.7891L40 0.00634766Z",fill:"#069E08"}),React.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M60.9 33.6909L35.375 67.9124L19.2047 55.9263L22.7848 51.1264L34.1403 59.5436L56.0851 30.122L60.9 33.6909Z",fill:"white"})),h=()=>{const{lastChecked:e}=(0,l.A)(),{hasPlan:t}=(0,o.Ay)(),{data:a}=(0,i.Ay)(),[h,g]=(0,s.useState)(null),v=(0,s.useMemo)((()=>e?(e=>{const t=new Date,a=6e4*t.getTimezoneOffset(),n=Math.floor((new Date(t.getTime()+a).getTime()-e)/1e3);let r=n/31536e3;return r>1?(0,c.sprintf)( -// translators: placeholder is a number amount of years i.e. "5 years ago". -_n("%s year ago","%s years ago",Math.floor(r),"jetpack-protect"),Math.floor(r)):(r=n/2592e3,r>1?(0,c.sprintf)( -// translators: placeholder is a number amount of months i.e. "5 months ago". -_n("%s month ago","%s months ago",Math.floor(r),"jetpack-protect"),Math.floor(r)):(r=n/86400,r>1?(0,c.sprintf)( -// translators: placeholder is a number amount of days i.e. "5 days ago". -_n("%s day ago","%s days ago",Math.floor(r),"jetpack-protect"),Math.floor(r)):(r=n/3600,r>1?(0,c.sprintf)( -// translators: placeholder is a number amount of hours i.e. "5 hours ago". -_n("%s hour ago","%s hours ago",Math.floor(r),"jetpack-protect"),Math.floor(r)):(r=n/60,r>1?(0,c.sprintf)( -// translators: placeholder is a number amount of minutes i.e. "5 minutes ago". -_n("%s minute ago","%s minutes ago",Math.floor(r),"jetpack-protect"),Math.floor(r)):__("a few seconds ago","jetpack-protect")))))})(Date.parse(e)):null),[e]);return React.createElement("div",{className:p.A.empty},React.createElement(m,null),React.createElement(n.H3,{weight:"bold",mt:8},__("Don't worry about a thing","jetpack-protect")),React.createElement(n.Ay,{mb:4},v?(0,r.createInterpolateElement)((0,c.sprintf)( -// translators: placeholder is the amount of time since the last scan, i.e. "5 minutes ago". -__("The last Protect scan ran %s and everything looked great.","jetpack-protect"),v),{strong:React.createElement("strong",null)}):__("No threats have been detected by the current scan.","jetpack-protect")),t&&React.createElement(React.Fragment,null,React.createElement(d.A,{ref:g}),!(0,i.EV)(a)&&React.createElement(u.A,{id:"paid-daily-and-manual-scans",position:"bottom middle",anchor:h})))}},5190:(e,t,a)=>{"use strict";a.d(t,{A:()=>g});var n=a(1112),r=a(7425),c=a(4437),s=a(7723),i=a(1609),o=a.n(i),l=a(1226),u=a(5925),d=a(4114),p=a(4569),m=a(1476);const __=s.__,h=({description:e,fixedIn:t,icon:a,id:p,label:h,name:g,source:v,title:f,type:y})=>{const{recordEvent:E}=(0,l.A)(),{upgradePlan:A}=(0,u.Ay)(),b=(0,i.useCallback)((()=>{E("jetpack_protect_threat_list_get_scan_link_click"),A()}),[E,A]),w=v?o().createElement(n.A,{variant:"link",isExternalLink:!0,weight:"regular",href:v},__("See more technical details of this threat","jetpack-protect")):null;return o().createElement(d.E,{id:p,label:h,title:f,icon:a,onOpen:(0,i.useCallback)((()=>{["core","plugin","theme"].includes(y)&&E(`jetpack_protect_${y}_threat_open`)}),[E,y])},e&&o().createElement("div",{className:m.A["threat-section"]},o().createElement(r.Ay,{variant:"title-small",mb:2},__("What is the problem?","jetpack-protect")),o().createElement(r.Ay,{mb:2},e),w),t&&o().createElement("div",{className:m.A["threat-section"]},o().createElement(r.Ay,{variant:"title-small",mb:2},__("How to fix it?","jetpack-protect")),o().createElement(r.Ay,{mb:2},/* translators: Translates to Update to. %1$s: Name. %2$s: Fixed version */ /* translators: Translates to Update to. %1$s: Name. %2$s: Fixed version */ -(0,s.sprintf)(__("Update to %1$s %2$s","jetpack-protect"),g,t)),o().createElement(c.A,{description:__("Looking for advanced scan results and one-click fixes?","jetpack-protect"),cta:__("Upgrade Jetpack Protect now","jetpack-protect"),onClick:b,className:m.A["threat-item-cta"]})),!e&&o().createElement("div",{className:m.A["threat-section"]},w))},g=({list:e})=>o().createElement(p.A,{list:e},(({currentItems:e})=>o().createElement(d.A,null,e.map((({description:e,fixedIn:t,icon:a,id:n,label:r,name:c,source:s,table:i,title:l,type:u,version:d})=>o().createElement(h,{description:e,fixedIn:t,icon:a,id:n,label:r,key:n,name:c,source:s,table:i,title:l,type:u,version:d}))))))},5661:(e,t,a)=>{"use strict";a.d(t,{A:()=>k});var n=a(442),r=a(5918),c=a(8509),s=a(7425),i=a(1112),o=a(7723),l=a(1609),u=a.n(l),d=a(2425),p=a(3657),m=a(1009),h=a(5925),g=a(4254),v=a(3535),f=a(9314),y=a(5190),E=a(9395),A=a(6742),b=a(1476),w=a(993);const __=o.__,k=()=>{const{hasPlan:e}=(0,h.Ay)(),{item:t,list:a,selected:k,setSelected:R}=(0,w.A)(),[C]=(0,n.A)("sm"),{isThreatFixInProgress:_,isThreatFixStale:j}=(0,p.Ay)(),{data:x}=(0,d.Ay)(),S=(0,d.EV)(x),M=(0,l.useMemo)((()=>a.filter((e=>{const t=parseInt(e.id);return e.fixable&&!_(t)&&!j(t)}))),[a,_,j]),[N,L]=(0,l.useState)(null),[P,z]=(0,l.useState)(null),[O,I]=(0,l.useState)(null),[F,V]=(0,l.useState)(null),{setModal:D}=(0,m.A)(),H=(0,l.useCallback)((()=>{switch(k){case"all":return 1===a.length?__("All threats","jetpack-protect"):(0,o.sprintf)(/* translators: placeholder is the amount of threats found on the site. */ -__("All %s threats","jetpack-protect"),a.length);case"core":return(0,o.sprintf)(/* translators: placeholder is the amount of WordPress threats found on the site. */ -__("%1$s WordPress %2$s","jetpack-protect"),a.length,1===a.length?"threat":"threats");case"files":return(0,o.sprintf)(/* translators: placeholder is the amount of file threats found on the site. */ -__("%1$s file %2$s","jetpack-protect"),a.length,1===a.length?"threat":"threats");case"database":return(0,o.sprintf)(/* translators: placeholder is the amount of database threats found on the site. */ -__("%1$s database %2$s","jetpack-protect"),a.length,1===a.length?"threat":"threats");default:return(0,o.sprintf)(/* translators: Translates to Update to. %1$s: Name. %2$s: Fixed version */ -__("%1$s %2$s in %3$s %4$s","jetpack-protect"),a.length,1===a.length?"threat":"threats",t?.name,t?.version)}}),[k,a,t]);return u().createElement(r.A,{fluid:!0,horizontalSpacing:0,horizontalGap:3},u().createElement(c.A,{lg:4},u().createElement("div",{ref:L},u().createElement(E.A,{selected:k,onSelect:R})),!S&&u().createElement(g.A,{id:e?"paid-scan-results":"free-scan-results",position:"top",anchor:N})),u().createElement(c.A,{lg:8},a?.length>0?u().createElement(u().Fragment,null,u().createElement("div",{className:b.A["list-header"]},u().createElement(s.hE,{className:b.A["list-title"]},H()),e&&u().createElement("div",{className:b.A["list-header__controls"]},M.length>0&&u().createElement(u().Fragment,null,u().createElement(i.A,{ref:I,variant:"primary",onClick:(T=M,e=>{e.preventDefault(),D({type:"FIX_ALL_THREATS",props:{threatList:T}})})},(0,o.sprintf)(/* translators: Translates to Show auto fixers $s: Number of fixable threats. */ -__("Show auto fixers (%s)","jetpack-protect"),M.length)),!S&&u().createElement(g.A,{id:"paid-fix-all-threats",position:C?"bottom right":"middle left",anchor:O}),u().createElement(v.A,{ref:V}),!S&&u().createElement(g.A,{id:"paid-daily-and-manual-scans",position:C?"bottom left":"middle left",anchor:F})))),e?u().createElement(u().Fragment,null,u().createElement("div",{ref:z},u().createElement(A.A,{list:a}),u().createElement("div",{className:b.A["manual-scan"]},u().createElement(s.Ay,{variant:"body-small",mb:4},__("If you have manually fixed any of the threats listed above, you can run a manual scan now or wait for Jetpack to scan your site later today.","jetpack-protect")),u().createElement(v.A,null))),!S&&u().createElement(g.A,{id:"paid-understand-severity",position:"top",anchor:P})):u().createElement(y.A,{list:a})):u().createElement(f.A,null)));var T}},9395:(e,t,a)=>{"use strict";a.d(t,{A:()=>g});var n=a(442),r=a(7723),c=a(3751),s=a(4648),i=a(435),o=a(2072),l=a(4314),u=a(1609),d=a(1226),p=a(5925),m=a(9701),h=a(59);const __=r.__,g=({selected:e,onSelect:t,sourceType:a="scan",statusFilter:r="all"})=>{const{hasPlan:g}=(0,p.Ay)(),{results:{plugins:v,themes:f},counts:{current:{threats:y,core:E,files:A}}}=(0,m.A)({sourceType:a,filter:{status:r}}),{recordEvent:b}=(0,d.A)(),[w]=(0,n.A)("lg","<"),k=(0,u.useCallback)((()=>{b("jetpack_protect_navigation_all_click")}),[b]),R=(0,u.useCallback)((()=>{b("jetpack_protect_navigation_core_click")}),[b]),C=(0,u.useCallback)((()=>{b("jetpack_protect_navigation_plugin_click")}),[b]),_=(0,u.useCallback)((()=>{b("jetpack_protect_navigation_theme_click")}),[b]),j=(0,u.useCallback)((()=>{b("jetpack_protect_navigation_file_click")}),[b]),x=(0,u.useMemo)((()=>"fixed"===r?__("All fixed threats","jetpack-protect"):"ignored"===r?__("All ignored threats","jetpack-protect",0):__("All threats","jetpack-protect")),[r]);return React.createElement(h.Ay,{selected:e,onSelect:t,mode:w?"dropdown":"list"},React.createElement(h.s$,{initial:!0,id:"all",label:x,icon:c.A,badge:y,disabled:y<=0,onClick:k,checked:!0}),React.createElement(h.s$,{id:"core",label:__("WordPress","jetpack-protect"),icon:s.A,badge:E,disabled:E<=0,onClick:R,checked:!0}),React.createElement(h.Me,{label:__("Plugins","jetpack-protect"),icon:i.A},v.map((({name:e,threats:t,checked:a})=>React.createElement(h.s$,{key:e,id:e,label:e,checked:a,badge:t?.length,disabled:t?.length<=0,onClick:C})))),React.createElement(h.Me,{label:__("Themes","jetpack-protect"),icon:o.A},f.map((({name:e,threats:t,checked:a})=>React.createElement(h.s$,{key:e,id:e,label:e,checked:a,badge:t?.length,disabled:t?.length<=0,onClick:_})))),g&&React.createElement(React.Fragment,null,React.createElement(h.s$,{id:"files",label:__("Files","jetpack-protect"),icon:l.A,badge:A,disabled:A<=0,onClick:j,checked:!0})))}},4569:(e,t,a)=>{"use strict";a.d(t,{A:()=>p});var n=a(1112),r=a(442),c=a(7723),s=a(8888),i=a(9115),o=a(1609),l=a.n(o),u=a(1476);const __=c.__,d=({pageNumber:e,currentPage:t,onPageChange:a})=>{const r=(0,o.useMemo)((()=>t===e),[t,e]),s=(0,o.useCallback)((()=>{a(e)}),[a,e]);return l().createElement(n.A,{size:"medium",className:r?null:u.A.unfocused,onClick:s,"aria-current":r?"page":void 0,"aria-label":(0,c.sprintf)(/* translators: placeholder is a page number, i.e. "Page 123" */ -__("Page %d","jetpack-protect"),e)},e)},p=({list:e,itemPerPage:t=10,children:a})=>{const[c]=(0,r.A)("sm"),[p,m]=(0,o.useState)(1),h=(0,o.useCallback)((()=>m(p-1)),[p,m]),g=(0,o.useCallback)((()=>m(p+1)),[p,m]),v=(0,o.useMemo)((()=>Math.ceil(e.length/t)),[e,t]),f=(0,o.useMemo)((()=>{const a=p*t,n=a-t;return e.slice(n,a)}),[p,e,t]),y=(0,o.useMemo)((()=>{if(c)return[p];const e=[1];return p>3&&v>4&&e.push("…"),1===p?e.push(p+1,p+2,p+3):2===p?e.push(p,p+1,p+2):p3&&e.push(p-2),p>2&&e.push(p-1),e.push(p)):p===v&&(p>=5&&e.push(p-3),p>=4&&e.push(p-2),e.push(p-1)),e[e.length-1]e<=v||isNaN(e)))}),[p,c,v]);return l().createElement(l().Fragment,null,a({currentItems:f}),v>1&&l().createElement("nav",{role:"navigation","aria-label":__("Threat list pages","jetpack-protect"),className:u.A["pagination-container"]},l().createElement(n.A,{onClick:h,disabled:1===p,variant:"link",icon:s.A,iconSize:24,"aria-label":__("Previous page","jetpack-protect")}),y.map(((e,t)=>"number"==typeof e?l().createElement(d,{key:e,pageNumber:e,currentPage:p,onPageChange:m}):l().createElement("span",{key:`ellipses_${t}`},e))),l().createElement(n.A,{onClick:g,disabled:p===v,variant:"link",icon:i.A,iconSize:24,"aria-label":__("Next page","jetpack-protect")})))}},6742:(e,t,a)=>{"use strict";a.d(t,{A:()=>y});var n=a(1112),r=a(7425),c=a(5734),s=a(4252),i=a(442),o=a(7723),l=a(1609),u=a.n(l),d=a(1226),p=a(3657),m=a(1009),h=a(2006),g=a(4569),v=a(1476);const __=o.__,f=({context:e,description:t,diff:a,filename:i,firstDetected:g,fixedIn:f,fixedOn:y,icon:E,fixable:A,id:b,label:w,name:k,source:R,title:C,type:_,severity:j,status:x,hideAutoFixColumn:S=!1})=>{const{setModal:M}=(0,m.A)(),{recordEvent:N}=(0,d.A)(),{isThreatFixInProgress:L,isThreatFixStale:P}=(0,p.Ay)(),z=L(b),O=P(b),I=R?u().createElement(n.A,{variant:"link",isExternalLink:!0,weight:"regular",href:R},__("See more technical details of this threat","jetpack-protect")):null;return u().createElement(h.S,{id:b,label:w,title:C,icon:E,fixable:A,severity:j,firstDetected:g,fixedOn:y,status:x,onOpen:(0,l.useCallback)((()=>{["core","plugin","theme","file","database"].includes(_)&&N(`jetpack_protect_${_}_threat_open`)}),[N,_]),hideAutoFixColumn:S},t&&u().createElement("div",{className:v.A["threat-section"]},u().createElement(r.Ay,{variant:"title-small",mb:2},"fixed"!==x?__("What is the problem?","jetpack-protect"):__("What was the problem?","jetpack-protect",0)),u().createElement(r.Ay,{mb:2},t),I),(i||e||a)&&u().createElement(r.Ay,{variant:"title-small",mb:2},__("The technical details","jetpack-protect")),i&&u().createElement(u().Fragment,null,u().createElement(r.Ay,{mb:2},/* translators: filename follows in separate line; e.g. "PHP.Injection.5 in: `post.php`" */ -__("Threat found in file:","jetpack-protect")),u().createElement("pre",{className:v.A["threat-filename"]},i)),e&&u().createElement(c.A,{context:e}),a&&u().createElement(s.A,{diff:a}),f&&"fixed"!==x&&u().createElement("div",{className:v.A["threat-section"]},u().createElement(r.Ay,{variant:"title-small",mb:2},__("How to fix it?","jetpack-protect")),u().createElement(r.Ay,{mb:2},/* translators: Translates to Update to. %1$s: Name. %2$s: Fixed version */ /* translators: Translates to Update to. %1$s: Name. %2$s: Fixed version */ -(0,o.sprintf)(__("Update to %1$s %2$s","jetpack-protect"),k,f))),!t&&u().createElement("div",{className:v.A["threat-section"]},I),["ignored","current"].includes(x)&&u().createElement("div",{className:v.A["threat-footer"]},"ignored"===x&&u().createElement(n.A,{isDestructive:!0,variant:"secondary",onClick:e=>{e.preventDefault(),M({type:"UNIGNORE_THREAT",props:{id:b,label:w,title:C,icon:E,severity:j}})}},__("Unignore threat","jetpack-protect")),"current"===x&&u().createElement(u().Fragment,null,u().createElement(n.A,{isDestructive:!0,variant:"secondary",onClick:e=>{e.preventDefault(),M({type:"IGNORE_THREAT",props:{id:b,label:w,title:C,icon:E,severity:j}})},disabled:z||O},__("Ignore threat","jetpack-protect")),A&&u().createElement(n.A,{disabled:z||O,onClick:e=>{e.preventDefault(),M({type:"FIX_THREAT",props:{id:b,fixable:A,label:w,icon:E,severity:j}})}},__("Fix threat","jetpack-protect")))))},y=({list:e,hideAutoFixColumn:t=!1})=>{const[a]=(0,i.A)(["sm","lg"],[null,"<"]);return u().createElement(u().Fragment,null,!a&&u().createElement("div",{className:v.A["accordion-header"]},u().createElement("span",null,__("Details","jetpack-protect")),u().createElement("span",null,__("Severity","jetpack-protect")),!t&&u().createElement("span",null,__("Auto-fix","jetpack-protect")),u().createElement("span",null)),u().createElement(g.A,{list:e},(({currentItems:e})=>u().createElement(h.A,null,e.map((({context:e,description:a,diff:n,filename:r,firstDetected:c,fixedIn:s,fixedOn:i,icon:o,fixable:l,id:d,label:p,name:m,severity:h,source:g,table:v,title:y,type:E,version:A,status:b})=>u().createElement(f,{context:e,description:a,diff:n,filename:r,firstDetected:c,fixedIn:s,fixedOn:i,icon:o,fixable:l,id:d,key:d,label:p,name:m,severity:h,source:g,table:v,title:y,type:E,version:A,status:b,hideAutoFixColumn:t})))))))}},993:(e,t,a)=>{"use strict";a.d(t,{A:()=>p});var n=a(4648),r=a(4314),c=a(1651),s=a(435),i=a(2072),o=a(1609),l=a(9701);const u=(e,t)=>t.severity-e.severity,d=(e,t)=>"object"==typeof e&&0===Object.keys(e).length?[]:Array.isArray(e)?e.map((e=>d(e,t))).flat():e?.threats.map((a=>({...a,...e,...t}))),p=({source:e,status:t}={source:"scan",status:"all"})=>{const[a,p]=(0,o.useState)("all"),{results:{plugins:m,themes:h,core:g,files:v,database:f}}=(0,l.A)({sourceType:e,filter:{status:t,key:a}}),{unsortedList:y,item:E}=(0,o.useMemo)((()=>{if(a&&"all"!==a){switch(a){case"core":return{unsortedList:d(g,{icon:n.A}),item:g};case"files":return{unsortedList:d({threats:v},{icon:r.A}),item:v};case"database":return{unsortedList:d({threats:f},{icon:c.A}),item:f}}const e=m.find((e=>e?.name===a));if(e)return{unsortedList:d(e,{icon:s.A}),item:e};const t=h.find((e=>e?.name===a));if(t)return{unsortedList:d(t,{icon:i.A}),item:t}}return{unsortedList:[...d(g,{icon:n.A}),...d(m,{icon:s.A}),...d(h,{icon:i.A}),...d({threats:v},{icon:r.A}),...d({threats:f},{icon:c.A})],item:null}}),[g,f,v,m,a,h]),A=e=>e.name&&e.version?`${e.name} (${e.version})`:e.filename?e.filename.split("/").pop():e.table?e.table:void 0,b=(0,o.useMemo)((()=>y.sort(u).map((e=>({label:A(e),...e})))),[y]);return(0,o.useEffect)((()=>{"all"!==a&&"all"!==t&&0===b.length&&p("all")}),[a,t,E,b]),{item:E,list:b,selected:a,setSelected:p}}},9623:(e,t,a)=>{"use strict";a.d(t,{A:()=>m});var n=a(7425),r=a(1014),c=a(1112),s=a(7723),i=a(1113),o=a(1609),l=a(7208),u=a(1009),d=a(4031),p=a(6834);const __=s.__,m=({id:e,title:t,label:a,icon:s,severity:m})=>{const{setModal:h}=(0,u.A)(),g=(0,l.A)(),[v,f]=(0,o.useState)(!1);return React.createElement(d.A,null,React.createElement(n.Ay,{variant:"title-medium",mb:2},__("Do you really want to unignore this threat?","jetpack-protect")),React.createElement(n.Ay,{mb:3},__("Jetpack will unignore the threat:","jetpack-protect")),React.createElement("div",{className:p.A.threat},React.createElement(i.A,{icon:s,className:p.A.threat__icon}),React.createElement("div",{className:p.A.threat__summary},React.createElement(n.Ay,{className:p.A.threat__summary__label,mb:1},a),React.createElement(n.Ay,{className:p.A.threat__summary__title},t)),React.createElement("div",{className:p.A.threat__severity},React.createElement(r.A,{severity:m}))),React.createElement("div",{className:p.A.footer},React.createElement(c.A,{variant:"secondary",onClick:e=>{e.preventDefault(),h({type:null})}},__("Cancel","jetpack-protect")),React.createElement(c.A,{isDestructive:!0,isLoading:v,onClick:async t=>{t.preventDefault(),f(!0),await g.mutateAsync(e),h({type:null}),f(!1)}},__("Unignore threat","jetpack-protect"))))}},4031:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var n=a(9384),r=a(1221);const c=({children:e})=>{const{isUserConnected:t,hasConnectedOwner:a}=(0,n.useConnection)();return t&&a?e:React.createElement(r.A,null)}},1221:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var n=a(7425),r=a(1112),c=a(9384),s=a(7723),i=a(1009),o=a(3041),l=a(8340);const __=s.__,u=()=>{const{setModal:e}=(0,i.A)(),{userIsConnecting:t,handleConnectUser:a}=(0,c.useConnection)({redirectUri:"admin.php?page=jetpack-protect"});return React.createElement(React.Fragment,null,React.createElement(n.Ay,{variant:"title-medium",mb:2},__("User connection needed","jetpack-protect")),React.createElement(o.A,{type:"info",message:__("Before Jetpack Protect can ignore and auto-fix threats on your site, a user connection is needed.","jetpack-protect")}),React.createElement(n.Ay,{mb:3},__("A user connection provides Jetpack Protect the access necessary to perform these tasks.","jetpack-protect")),React.createElement(n.Ay,{mb:3},__("Once you’ve secured a user connection, all Jetpack Protect features will be available for use.","jetpack-protect")),React.createElement("div",{className:l.A.footer},React.createElement(r.A,{variant:"secondary",onClick:t=>{t.preventDefault(),e({type:null})}},__("Not now","jetpack-protect")),React.createElement(r.A,{isExternalLink:!0,weight:"regular",isLoading:t,onClick:a},__("Connect your user account","jetpack-protect"))))}},8140:(e,t,a)=>{"use strict";a.d(t,{Gs:()=>v,J3:()=>n,JD:()=>s,Mm:()=>o,NW:()=>c,Oz:()=>p,Ss:()=>m,VE:()=>h,X9:()=>d,_R:()=>i,kD:()=>g,oA:()=>u,pQ:()=>r,vI:()=>l,yN:()=>f});const n="jetpack_scan",r="https://wordpress.org/support/plugin/jetpack-protect/",c="https://jetpack.com/contact-support/?rel=support",s="optimistically_scanning",i="idle",o="unavailable",l=["provisioning","scheduled","scanning",s],u="credentials",d="fixers",p="has plan",m="history",h="onboarding progress",g="product data",v="scan status",f="waf"},7534:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var n=a(7115),r=a(4613),c=a(295),s=a(8140);function i(){const e=(0,n.jE)();return(0,r.n)({mutationFn:c.A.completeOnboardingSteps,onMutate:t=>{e.setQueryData([s.VE],(e=>[...e,...t]))}})}},5780:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});var n=a(5104),r=a(295),c=a(8140);function s(){return(0,n.I)({queryKey:[c.VE],queryFn:r.A.getOnboardingProgress,initialData:window?.jetpackProtectInitialState?.onboardingProgress||[]})}},169:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var n=a(7115),r=a(4613),c=a(7723),s=a(295),i=a(8140),o=a(4537);const __=c.__;function l(){const e=(0,n.jE)(),{showSuccessNotice:t,showErrorNotice:a}=(0,o.A)();return(0,r.n)({mutationFn:s.A.fixThreats,onSuccess:a=>{if(!1===a.ok)throw new Error(a.error);if(Object.values(a.threats).every((e=>"error"in e)))throw new Error;e.setQueryData([i.X9],a),t(__("We're hard at work fixing this threat in the background. Please check back shortly.","jetpack-protect"))},onError:()=>{a(__("An error occurred fixing threats.","jetpack-protect"))}})}},8064:(e,t,a)=>{"use strict";a.d(t,{A:()=>m});var n=a(9384),r=a(7115),c=a(5104),s=a(7723),i=a(1609),o=a(295),l=a(8140),u=a(3657),d=a(4537);const __=s.__,_n=s._n,p=window.jetpackProtectInitialState?.fixerStatus||{ok:!0,threats:{}};function m({threatIds:e,usePolling:t}){const a=(0,r.jE)(),{showSuccessNotice:m,showErrorNotice:h}=(0,d.A)(),{isRegistered:g}=(0,n.useConnection)({autoTrigger:!1,from:"protect",redirectUri:null,skipUserConnection:!0}),v=(0,i.useCallback)(((e,t)=>{if(e.length>0){ -// Translators: %d is the number of threats, and %s is a list of threat IDs. -const t=_n("A threat could not be fixed.","%d threats could not be fixed.",e.length,"jetpack-protect");h((0,s.sprintf)(t,e.length))}else if(t.length>0){ -// Translators: %d is the number of threats, and %s is a list of threat IDs. -const e=_n("Threat fixed successfully.","%d threats fixed successfully.",t.length,"jetpack-protect");m((0,s.sprintf)(e,t.length))}}),[h,m]),f=(0,c.I)({queryKey:[l.X9],queryFn:async()=>{const t=await o.A.getFixersStatus(e),n=a.getQueryData([l.X9]);if(!1===t.ok)throw new Error(t.error);const r=[],c=[];return Object.keys(t.threats||{}).forEach((e=>{const s=t.threats[e];if(!0===n.ok){const t=n.threats?.[e];t&&"in_progress"===t.status&&("in_progress"===s.status?!(0,u.UM)(t.lastUpdated)&&(0,u.UM)(s.lastUpdated)&&c.push(e):(a.invalidateQueries({queryKey:[l.Gs]}),a.invalidateQueries({queryKey:[l.Ss]}),"fixed"===s.status?r.push(e):c.push(e)))}})),v(c,r),t},retry:!1,refetchInterval(e){if(!t||!e.state.data)return!1;const a=e.state.data;if(!0===a.ok){if(Object.values(a.threats).some((e=>"status"in e&&"in_progress"===e.status&&!(0,u.UM)(e.lastUpdated))))return e.state.dataUpdateCount<5?5e3:15e3}return!1},initialData:p,enabled:g});return(0,i.useEffect)((()=>{f.isError&&f.error&&(a.setQueryData([l.X9],p),h(__("An error occurred while fetching fixers status.","jetpack-protect")))}),[f.isError,f.error,a,h]),f}},1859:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var n=a(9384),r=a(5104),c=a(6185),s=a.n(c),i=a(295),o=a(8140);function l(){const{isRegistered:e}=(0,n.useConnection)({autoTrigger:!1,from:"protect",redirectUri:null,skipUserConnection:!0});return(0,r.I)({queryKey:[o.Ss],queryFn:i.A.getScanHistory,initialData:s()(window.jetpackProtectInitialState?.scanHistory),enabled:e})}},8847:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var n=a(7115),r=a(4613),c=a(7723),s=a(295),i=a(8140),o=a(4537);const __=c.__;function l(){const e=(0,n.jE)(),{showSuccessNotice:t,showErrorNotice:a}=(0,o.A)();return(0,r.n)({mutationFn:async t=>{const a=await s.A.ignoreThreat(t);return await Promise.all([e.refetchQueries({queryKey:[i.Gs]}),e.refetchQueries({queryKey:[i.Ss]})]),a},onSuccess:()=>{t(__("Threat ignored.","jetpack-protect"))},onError:()=>{a(__("An error occurred ignoring the threat.","jetpack-protect"))}})}},2425:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>p,EV:()=>d});var n=a(9384),r=a(7115),c=a(5104),s=a(6185),i=a.n(s),o=a(295),l=a(8140);const u=e=>{if("idle"!==e.status)return!1;const t=Number(localStorage.getItem("last_requested_scan"));if(!t)return!1;if(tt)},d=e=>{const t=!e?.lastChecked&&[l._R,l.Mm].includes(e?.status),a=l.vI.indexOf(e?.status)>=0;return t||a};function p({usePolling:e}={}){const t=(0,r.jE)(),{isRegistered:a}=(0,n.useConnection)({autoTrigger:!1,from:"protect",redirectUri:null,skipUserConnection:!0});return(0,c.I)({queryKey:[l.Gs],queryFn:async()=>{const e=await o.A.getScanStatus();return u(e)?t.getQueryData([l.Gs]):e},initialData:i()(window?.jetpackProtectInitialState?.status),enabled:a,refetchInterval(t){if(!e)return!1;const a=t.state.dataUpdateCount<5?5e3:15e3;return!!d(t.state.data)&&a}})}},240:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var n=a(7115),r=a(4613),c=a(295),s=a(8140);function i(){const e=(0,n.jE)();return(0,r.n)({mutationFn:c.A.scan,onMutate(){e.setQueryData([s.Gs],(e=>({...e,status:s.JD})))},onSuccess(){e.setQueryData([s.Gs],(e=>({...e,status:s.JD}))),localStorage.setItem("last_requested_scan",Date.now().toString())},onError(){e.invalidateQueries({queryKey:[s.Gs]})}})}},7208:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var n=a(7115),r=a(4613),c=a(7723),s=a(295),i=a(8140),o=a(4537);const __=c.__;function l(){const e=(0,n.jE)(),{showSuccessNotice:t,showErrorNotice:a}=(0,o.A)();return(0,r.n)({mutationFn:async t=>{const a=await s.A.unIgnoreThreat(t);return await Promise.all([e.refetchQueries({queryKey:[i.Gs]}),e.refetchQueries({queryKey:[i.Ss]})]),a},onSuccess:()=>{t(__("Threat is no longer ignored.","jetpack-protect"))},onError:()=>{a(__("An error occurred un-ignoring the threat.","jetpack-protect"))}})}},8590:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var n=a(9384),r=a(7115),c=a(4613),s=a(7723),i=a(8140),o=a(4537);const __=s.__;function l(){const e=(0,r.jE)(),{showErrorNotice:t}=(0,o.A)(),{handleRegisterSite:a}=(0,n.useConnection)({autoTrigger:!1,from:"protect",redirectUri:null,skipUserConnection:!0});return(0,c.n)({mutationFn:a,onSuccess:async()=>{e.setQueryData([i.Gs],(e=>({...e,status:i.JD}))),e.invalidateQueries({queryKey:[i.Ss]}),e.invalidateQueries({queryKey:[i.yN]}),e.invalidateQueries({queryKey:[i.Oz]}),e.invalidateQueries({queryKey:[i.oA]})},onError:()=>{t(__("Could not connect site.","jetpack-protect"))}})}},2605:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var n=a(9384),r=a(5104),c=a(295),s=a(8140);function i(){const{isRegistered:e}=(0,n.useConnection)({autoTrigger:!1,from:"protect",redirectUri:null,skipUserConnection:!0});return(0,r.I)({queryKey:[s.oA],queryFn:c.A.checkCredentials,initialData:window?.jetpackProtectInitialState?.credentials,enabled:e})}},6829:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var n=a(9384),r=a(5104),c=a(295),s=a(8140);function i(){const{isRegistered:e}=(0,n.useConnection)({autoTrigger:!1,from:"protect",redirectUri:null,skipUserConnection:!0});return(0,r.I)({queryKey:[s.Oz],queryFn:c.A.checkPlan,initialData:!!window?.jetpackProtectInitialState?.hasPlan,enabled:e})}},7651:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var n=a(5104),r=a(6185),c=a.n(r),s=a(295),i=a(8140);function o(){return(0,n.I)({queryKey:[i.kD],queryFn:s.A.getProductData,initialData:c()(window?.jetpackProtectInitialState?.jetpackScan)})}},9481:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var n=a(7115),r=a(4613),c=a(7723),s=a(295),i=a(8140),o=a(4537);const __=c.__;function l(){const e=(0,n.jE)(),{showSuccessNotice:t,showErrorNotice:a}=(0,o.A)();return(0,r.n)({mutationFn:s.A.toggleWaf,onSuccess:()=>{t(__("WAF module enabled.","jetpack-protect"))},onError:()=>{a(__("An error occurred enabling the WAF module.","jetpack-protect"))},onSettled:()=>{e.invalidateQueries({queryKey:[i.yN]})}})}},3990:(e,t,a)=>{"use strict";a.d(t,{A:()=>p});var n=a(7115),r=a(4613),c=a(6087),s=a(7723),i=a(6185),o=a.n(i),l=a(295),u=a(8140),d=a(4537);const __=s.__;function p(){const e=(0,n.jE)(),{showSuccessNotice:t,showSavingNotice:a,showErrorNotice:s}=(0,d.A)(),i=(0,c.useCallback)((e=>{switch(e.code){case"file_system_error":return __("A filesystem error occurred.","jetpack-protect");case"rules_api_error":return __("An error occurred retrieving the latest firewall rules from Jetpack.","jetpack-protect");default:return __("An error occurred.","jetpack-protect")}}),[]);return(0,r.n)({mutationFn:l.A.updateWaf,onMutate:t=>{a();const n=e.getQueryData([u.yN]);return e.setQueryData([u.yN],(e=>({...e,config:{...e.config,...o()(t)}}))),{initialValue:n}},onSuccess:()=>{t(__("Changes saved.","jetpack-protect"))},onError:(t,a,n)=>{e.setQueryData([u.yN],n.initialValue),s(i(t))}})}},5728:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var n=a(5104),r=a(6185),c=a.n(r),s=a(295),i=a(8140);function o(){return(0,n.I)({queryKey:[i.yN],queryFn:s.A.getWaf,initialData:c()(window?.jetpackProtectInitialState?.waf)})}},5632:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var n=a(7115),r=a(4613),c=a(295),s=a(8140);function i(){const e=(0,n.jE)();return(0,r.n)({mutationFn:c.A.wafUpgradeSeen,onMutate:()=>{e.setQueryData([s.yN],(e=>({...e,upgradeIsSeen:!0})))}})}},1226:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});var n=a(372),r=a(9384),c=a(1609);const s=({pageViewEventName:e,pageViewNamespace:t="jetpack",pageViewSuffix:a="page_view",pageViewEventProperties:s={}}={})=>{const{isUserConnected:i,isRegistered:o,userConnectionData:l}=(0,r.useConnection)(),{login:u,ID:d}=l.currentUser?.wpcomUser||{},{tracks:p}=n.A,{recordEvent:m}=p,h=(0,c.useCallback)((async(e,t)=>{m(e,t)}),[m]),g=(0,c.useCallback)(((e,t,a=()=>{})=>(a="function"==typeof t?t:a,t="function"==typeof t?{}:t,()=>h(e,t).then(a))),[h]);(0,c.useEffect)((()=>{i&&d&&u&&n.A.initialize(d,u)}),[i,d,u]);const v=e?`${t}_${e}_${a}`:null;return(0,c.useEffect)((()=>{o&&v&&m(v,s)}),[]),{recordEvent:h,recordEventHandler:g}}},3657:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>l,UM:()=>i});var n=a(1609),r=a(169),c=a(8064),s=a(2425);const i=e=>{const t=new Date,a=new Date(e);return t.getTime()-a.getTime()>=864e5},o=e=>"status"in e&&"in_progress"===e.status&&i(e.lastUpdated);function l(){const{data:e}=(0,s.Ay)(),t=(0,r.A)(),{data:a}=(0,c.A)({threatIds:e.fixableThreatIds,usePolling:!0}),i=(0,n.useCallback)((e=>{if(!1===a.ok)return!1;const t=a.threats?.[e];return t&&"status"in t&&"in_progress"===t.status}),[a]),l=(0,n.useCallback)((e=>{if(!1===a.ok)return!1;const t=a?.threats?.[e];return!!t&&o(t)}),[a]);return{fixableThreatIds:e.fixableThreatIds,fixersStatus:a,fixThreats:t.mutateAsync,isLoading:t.isPending,isThreatFixInProgress:i,isThreatFixStale:l}}},1009:(e,t,a)=>{"use strict";a.d(t,{A:()=>i,Z:()=>s});var n=a(1609),r=a.n(n);const c=(0,n.createContext)({modal:null,setModal:null}),s=({children:e})=>{const[t,a]=(0,n.useState)({});return r().createElement(c.Provider,{value:{modal:t,setModal:a}},e)};function i(){const{modal:e,setModal:t}=(0,n.useContext)(c);return{modal:e,setModal:t}}},4537:(e,t,a)=>{"use strict";a.d(t,{A:()=>d,m:()=>u});var n=a(6427),r=a(6087),c=a(7723),s=a(1609),i=a(8140),o=a(5925);const __=c.__,l=(0,s.createContext)(void 0),u=({children:e})=>{const[t,a]=(0,s.useState)(null);return React.createElement(l.Provider,{value:{notice:t,setNotice:a}},e)};function d(){const{hasPlan:e}=(0,o.Ay)(),{notice:t,setNotice:a}=(0,s.useContext)(l),c=(0,s.useCallback)((()=>{a(null)}),[a]),u=(0,s.useCallback)((e=>{a({type:"success",dismissable:!0,duration:7500,message:e})}),[a]);return{notice:t,clearNotice:c,showSavingNotice:(0,s.useCallback)((e=>{a({type:"info",dismissable:!1,message:e||__("Saving Changes…","jetpack-protect")})}),[a]),showSuccessNotice:u,showErrorNotice:(0,s.useCallback)((t=>{a({type:"error",dismissable:!0,message:React.createElement(React.Fragment,null,t||__("An error occurred.","jetpack-protect")," ",(0,r.createInterpolateElement)(__("Please try again or contact support.","jetpack-protect"),{supportLink:React.createElement(n.ExternalLink,{href:e?i.NW:i.pQ})}))})}),[e,a])}}},1936:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>l,Ll:()=>o,OC:()=>i,dn:()=>s});var n=a(1609),r=a(7534),c=a(5780);const s=(0,n.createContext)([]),i=(0,n.createContext)([]),o=({children:e})=>{const[t,a]=(0,n.useState)([]);return React.createElement(i.Provider,{value:{renderedSteps:t,setRenderedSteps:a}},e)},l=()=>{const e=(0,n.useContext)(s),{renderedSteps:t}=(0,n.useContext)(i),{data:a}=(0,c.A)(),o=(0,r.A)(),{currentStep:l,currentStepCount:u,stepsCount:d}=(0,n.useMemo)((()=>e.reduce(((e,n)=>(t.includes(n.id)&&(e.stepsCount++,e.currentStep||-1!==(a||[]).indexOf(n.id)||(e.currentStep=n,e.currentStepCount=e.stepsCount)),e)),{currentStep:null,currentStepCount:null,stepsCount:0})),[a,t,e]),p=(0,n.useCallback)((()=>{l&&o.mutate([l.id])}),[l,o]),m=(0,n.useCallback)((()=>{const t=e.reduce(((e,t)=>(t.id.startsWith("free-")&&e.push(t.id),e)),[]);o.mutate(t)}),[e,o]),h=(0,n.useCallback)((()=>{const t=e.reduce(((e,t)=>(t.id.startsWith("paid-")&&e.push(t.id),e)),[]);o.mutate(t)}),[e,o]),g=(0,n.useCallback)((()=>{l.id.startsWith("paid-")?h():m()}),[m,h,l]);return{progress:a,stepsCount:d,currentStep:l,currentStepCount:u,completeCurrentStep:p,completeAllCurrentSteps:g}}},5925:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>d,sT:()=>l});var n=a(9384),r=a(1609),c=a(295),s=a(8140),i=a(6829);const o=(0,r.createContext)({hasCheckoutStarted:!1,setHasCheckoutStarted:()=>{}}),l=({children:e})=>{const[t,a]=(0,r.useState)(!1);return React.createElement(o.Provider,{value:{hasCheckoutStarted:t,setHasCheckoutStarted:a}},e)},u=()=>(0,r.useContext)(o);function d({redirectUrl:e}={}){const{adminUrl:t}=window.jetpackProtectInitialState||{},{data:a,isLoading:o}=(0,i.A)(),{hasCheckoutStarted:l,setHasCheckoutStarted:d}=u(),{run:p}=(0,n.useProductCheckoutWorkflow)({productSlug:s.J3,redirectUrl:e||t,siteProductAvailabilityHandler:c.A.checkPlan,useBlogIdSuffix:!0,connectAfterCheckout:!1,from:()=>"protect"});return{hasPlan:a,upgradePlan:(0,r.useCallback)((()=>{d(!0),p()}),[p,d]),isLoading:o||l}}},9701:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var n=a(7723),r=a(1609),c=a(1859),s=a(2425),i=a(7651);const __=n.__,o=["all","core","plugins","themes","files","database"],l=(e,t,a)=>Array.isArray(e)?e.filter((e=>(!t.status||"all"===t.status||e.status===t.status)&&(!t.key||"all"===t.key||t.key===a))):[];function u({sourceType:e,filter:t}={sourceType:"scan",filter:{status:null,key:null}}){const{data:a}=(0,s.Ay)(),{data:n}=(0,c.A)(),{data:u}=(0,i.A)(),{counts:d,results:p,error:m,lastChecked:h,hasUncheckedItems:g}=(0,r.useMemo)((()=>{const r="history"===e?{...n}:{...a},c={results:{core:[],plugins:[],themes:[],files:[],database:[]},counts:{all:{threats:0,core:0,plugins:0,themes:0,files:0,database:0},current:{threats:0,core:0,plugins:0,themes:0,files:0,database:0}},error:null,lastChecked:r.lastChecked||null,hasUncheckedItems:r.hasUncheckedItems||!1},s=(e,a)=>{if(!Array.isArray(e))return[];e.forEach((e=>{c.counts.all[a]+=e?.threats?.length||0,c.counts.all.threats+=e?.threats?.length||0;const n=l(e?.threats||[],t,o.includes(t.key)?a:e?.name);c.results[a].push({...e,threats:n}),c.counts.current[a]+=n.length,c.counts.current.threats+=n.length}))},i=(e,a)=>{if(!Array.isArray(e))return[];c.counts.all[a]+=e.length,c.counts.all.threats+=e.length;const n=l(e,t,a);c.results[a]=[...c.results[a],...n],c.counts.current[a]+=n.length,c.counts.current.threats+=n.length};let u=Array.isArray(r.core)?r.core:[];return r?.core?.threats&&(u=[r.core]),s(u,"core"),s(r?.plugins,"plugins"),s(r?.themes,"themes"),i(r?.files,"files"),i(r?.database,"database"),r.error&&(c.error={message:r.errorMessage||__("An error occurred.","jetpack-protect"),code:r.errorCode||500}),c}),[n,e,a,t]);return{results:p,counts:d,error:m,lastChecked:h,hasUncheckedItems:g,jetpackScan:u}}},6516:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var n=a(1609),r=a(9481),c=a(3990),s=a(5728),i=a(1226);const o=()=>{const{recordEvent:e}=(0,i.A)(),{data:t}=(0,s.A)(),a=(0,c.A)(),o=(0,r.A)(),l=(0,n.useCallback)((async()=>{o.mutate()}),[o]),u=(0,n.useCallback)((async()=>!!t.isEnabled||await l()),[l,t.isEnabled]),d=(0,n.useCallback)((async()=>{const n=!t.config.jetpackWafAutomaticRules;await u(),await a.mutateAsync({jetpack_waf_automatic_rules:n}),e(n?"jetpack_protect_automatic_rules_enabled":"jetpack_protect_automatic_rules_disabled")}),[u,e,t.config.jetpackWafAutomaticRules,a]),p=(0,n.useCallback)((async()=>{const n=!t.config.jetpackWafIpAllowListEnabled;await a.mutateAsync({jetpack_waf_ip_allow_list_enabled:n}),e(n?"jetpack_protect_ip_allow_list_enabled":"jetpack_protect_ip_allow_list_disabled")}),[e,t.config.jetpackWafIpAllowListEnabled,a]),m=(0,n.useCallback)((async t=>{await a.mutateAsync({jetpack_waf_ip_allow_list:t}),e("jetpack_protect_ip_allow_list_updated")}),[e,a]),h=(0,n.useCallback)((async()=>{const n=!t.config.jetpackWafIpBlockListEnabled;await u(),await a.mutateAsync({jetpack_waf_ip_block_list_enabled:n}),e(n?"jetpack_protect_ip_block_list_enabled":"jetpack_protect_ip_block_list_disabled")}),[u,e,t.config.jetpackWafIpBlockListEnabled,a]),g=(0,n.useCallback)((async t=>{await u(),await a.mutateAsync({jetpack_waf_ip_block_list:t}),e("jetpack_protect_ip_block_list_updated")}),[u,a,e]),v=(0,n.useCallback)((async()=>{const n=!t.config.bruteForceProtection;await a.mutateAsync({brute_force_protection:n}),e(n?"jetpack_protect_brute_force_protection_enabled":"jetpack_protect_brute_force_protection_disabled")}),[e,t.config.bruteForceProtection,a]),f=(0,n.useCallback)((async()=>{const n=!t.config.jetpackWafShareData,r={jetpack_waf_share_data:n};n||(r.jetpack_waf_share_debug_data=!1),await a.mutateAsync(r),e(r?"jetpack_protect_share_data_enabled":"jetpack_protect_share_data_disabled")}),[e,t.config.jetpackWafShareData,a]),y=(0,n.useCallback)((async()=>{const n=!t.config.jetpackWafShareDebugData,r={jetpack_waf_share_debug_data:n};n&&(r.jetpack_waf_share_data=!0),await a.mutateAsync(r),e(n?"jetpack_protect_share_debug_data_enabled":"jetpack_protect_share_debug_data_disabled")}),[e,t.config.jetpackWafShareDebugData,a]);return{...t,isUpdating:a.isPending,isToggling:o.isPending,toggleWaf:l,toggleAutomaticRules:d,toggleIpAllowList:p,saveIpAllowList:m,toggleIpBlockList:h,saveIpBlockList:g,toggleBruteForceProtection:v,toggleShareData:f,toggleShareDebugData:y}}},6088:(e,t,a)=>{"use strict";a.d(t,{A:()=>d});var n=a(7425),r=a(1158),c=a(7723),s=a(1609),i=a(7031),o=a(6516),l=a(9347),u=a(5546);const __=c.__,d=()=>{const{config:{jetpackWafAutomaticRules:e,automaticRulesAvailable:t,standaloneMode:a,bruteForceProtection:c},isEnabled:d,wafSupported:p,isToggling:m}=(0,o.A)(),h=m?"loading":(p?d:c)?"on":"off",g=(0,s.useMemo)((()=>"on"===h?a?__("Standalone mode","jetpack-protect"):__("Active","jetpack-protect",0):__("Inactive","jetpack-protect")),[h,a]),v=(0,s.useMemo)((()=>"on"===h?React.createElement(React.Fragment,null,!p&&__("Brute force protection is active","jetpack-protect"),p&&(e?__("Automatic firewall is on","jetpack-protect"):__("Firewall is on","jetpack-protect",0))):"off"===h?React.createElement(React.Fragment,null,!p&&__("Brute force protection is disabled","jetpack-protect"),p&&(t?__("Automatic firewall is off","jetpack-protect"):__("Firewall is off","jetpack-protect",0))):"loading"===h?__("Automatic firewall is being set up","jetpack-protect"):null),[h,p,e,t]),f=(0,s.useMemo)((()=>"loading"===h?React.createElement(n.Ay,null,__("Please wait…","jetpack-protect")):React.createElement(u.A,null)),[h]);return React.createElement(i.A,{main:React.createElement(React.Fragment,null,React.createElement(r.A,{status:"on"===h?"active":"inactive",label:g}),React.createElement(i.A.Heading,null,v),React.createElement(i.A.Subheading,null,f)),secondary:p&&React.createElement(l.A,null)})}},8567:(e,t,a)=>{"use strict";a.d(t,{A:()=>v});var n=a(7425),r=a(1112),c=a(8316),s=a(5918),i=a(8509),o=a(7723),l=a(1609),u=a(1009),d=a(4537),p=a(6516),m=a(7642);const __=o.__,h=()=>{const{setModal:e}=(0,u.A)();return React.createElement("div",{className:m.A["standalone-mode"]},React.createElement(n.hE,{mb:0},__("Standalone mode","jetpack-protect")),React.createElement("div",null,React.createElement(n.Ay,null,__("Learn how you can execute the firewall before WordPress initializes.","jetpack-protect")),React.createElement(n.Ay,null,__("This mode offers the most protection.","jetpack-protect"))),React.createElement(r.A,{variant:"link",isExternalLink:!0,weight:"regular",onClick:t=>{t.preventDefault(),e({type:"STANDALONE_MODE"})}},__("Learn more","jetpack-protect")))},g=()=>{const{config:e,isUpdating:t,toggleShareData:a,toggleShareDebugData:r}=(0,p.A)(),{jetpackWafShareData:s,jetpackWafShareDebugData:i}=e||{},{showSuccessNotice:o,showErrorNotice:u}=(0,d.A)(),h=(0,l.useCallback)((async()=>{try{await a(),o(__("Changes saved.","jetpack-protect"))}catch{u()}}),[a,o,u]),g=(0,l.useCallback)((async()=>{try{await r(),o(__("Changes saved.","jetpack-protect"))}catch{u()}}),[r,o,u]);return React.createElement("div",{className:m.A["share-data"]},React.createElement(n.hE,{mb:0},__("Share data with Jetpack","jetpack-protect")),React.createElement(c.A,{className:m.A["share-data-toggle"],checked:!!s,onChange:h,disabled:t,size:"small",label:__("Share basic data","jetpack-protect"),help:__("Allow Jetpack to collect basic data from blocked requests to improve firewall protection and accuracy.","jetpack-protect")}),React.createElement(c.A,{className:m.A["share-data-toggle"],checked:!!i,onChange:g,disabled:t,size:"small",label:__("Share detailed data","jetpack-protect"),help:__("Allow Jetpack to collect detailed data from blocked requests to enhance firewall protection and accuracy.","jetpack-protect")}))},v=()=>{const{isEnabled:e}=(0,p.A)();return React.createElement("div",{className:m.A.footer},React.createElement(s.A,{horizontalSpacing:8,horizontalGap:7},React.createElement(i.A,{sm:12,md:6,lg:7},React.createElement(h,null)),e&&React.createElement(i.A,{sm:12,md:6,lg:5},React.createElement(g,null))))}},9347:(e,t,a)=>{"use strict";a.d(t,{A:()=>h});var n=a(442),r=a(7425),c=a(3390),s=a(7723),i=a(1113),o=a(5302),l=a(7267),u=a(1609),d=a(5925),p=a(6516),m=a(7642);const __=s.__,h=()=>{const{hasPlan:e}=(0,d.Ay)(),{config:{bruteForceProtection:t},isEnabled:a,wafSupported:h,stats:g}=(0,p.A)(),[v]=(0,n.A)(["sm","lg"],[null,"<"]),f=h?a:t,{currentDay:y,thirtyDays:E}=g?g.blockedRequests:{currentDay:0,thirtyDays:0},A=!f||!e,b=(0,u.useMemo)((()=>({className:A?m.A.disabled:m.A.active,variant:v?"horizontal":"square"})),[A,v]),w=(0,u.useCallback)((({icon:t})=>React.createElement("span",{className:m.A["stat-card-icon"]},React.createElement(i.A,{icon:t}),!v&&!e&&React.createElement(r.Ay,{variant:"label"},__("Paid feature","jetpack-protect")))),[v,e]),k=(0,u.useCallback)((({period:e,units:t})=>v?React.createElement("span",null,(0,s.sprintf)(/* translators: Translates to Blocked requests last %1$d: Number of units. %2$s: Unit of time (hours, days, etc) */ -__("Blocked requests last %1$d %2$s","jetpack-protect"),e,t)):React.createElement("span",{className:m.A["stat-card-label"]},React.createElement("span",null,__("Blocked requests","jetpack-protect")),React.createElement("br",null),React.createElement("span",null,(0,s.sprintf)(/* translators: Translates to Last %1$d: Number of units. %2$s: Unit of time (hours, days, etc) */ -__("Last %1$d %2$s","jetpack-protect"),e,t)))),[v]),R=(0,u.useMemo)((()=>({...b,icon:React.createElement(w,{icon:o.A}),label:React.createElement(k,{period:24,units:"hours"}),value:A?0:y})),[b,w,k,A,y]),C=(0,u.useMemo)((()=>({...b,icon:React.createElement(w,{icon:l.A}),label:React.createElement(k,{period:30,units:"days"}),value:A?0:E})),[b,w,k,A,E]);return React.createElement("div",{className:m.A["stat-card-wrapper"]},React.createElement(c.A,R),React.createElement(c.A,C))}},5546:(e,t,a)=>{"use strict";a.d(t,{A:()=>d});var n=a(597),r=a(7425),c=a(7723),s=a(1609),i=a(5925),o=a(6516),l=a(3969),u=a(7642);const __=c.__,d=()=>{const{hasPlan:e}=(0,i.Ay)(),{config:{jetpackWafAutomaticRules:t,jetpackWafIpBlockListEnabled:a,jetpackWafIpAllowListEnabled:c,automaticRulesAvailable:d,bruteForceProtection:p},wafSupported:m}=(0,o.A)(),h=a||c,g=(0,s.useMemo)((()=>({allRules:m&&t&&h,automaticRules:m&&t&&!h,manualRules:m&&!t&&h,noRules:m&&!t&&!h})),[m,t,h]),v=(0,s.useMemo)((()=>{const e=[];return m&&p&&e.push(__("Brute force protection is active.","jetpack-protect")),g.noRules&&e.push(__("There are no firewall rules applied.","jetpack-protect")),g.automaticRules&&e.push(__("Automatic firewall rules apply.","jetpack-protect")),g.manualRules&&e.push(__("Only manual IP list rules apply.","jetpack-protect")),g.allRules&&e.push(__("All firewall rules apply.","jetpack-protect")),e.join(" ")}),[m,p,g]),f=(0,s.useMemo)((()=>d?__("The free version of the firewall does not receive updates to automatic security rules.","jetpack-protect",0):__("The free version of the firewall only allows for use of manual rules.","jetpack-protect")),[d]);return React.createElement(React.Fragment,null,React.createElement("div",{className:u.A["firewall-subheading"]},React.createElement(r.Ay,null,v),!e&&(g.automaticRules||g.manualRules||g.allRules)?React.createElement(n.A,{className:u.A["icon-tooltip"],iconCode:"help-outline",iconSize:20,iconClassName:u.A["icon-tooltip__icon"],placement:"top",hoverShow:!0},React.createElement(r.Ay,null,f)):null),!e&&m&&React.createElement(l.A,null))}},3969:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var n=a(1112),r=a(7723),c=a(1609),s=a(1226),i=a(5925),o=a(6516),l=a(7642);const __=r.__,u=()=>{const{recordEvent:e}=(0,s.A)(),{adminUrl:t}=window.jetpackProtectInitialState||{},a=t+"#/firewall",{upgradePlan:r}=(0,i.Ay)({redirectUrl:a}),{config:{automaticRulesAvailable:u}}=(0,o.A)(),d=(0,c.useCallback)((()=>{e("jetpack_protect_waf_header_get_scan_link_click"),r()}),[e,r]);return React.createElement(n.A,{className:l.A["upgrade-prompt-button"],onClick:d},u?__("Upgrade to update automatic security rules","jetpack-protect",0):__("Upgrade to enable automatic firewall protection","jetpack-protect"))}},1671:(e,t,a)=>{"use strict";a.d(t,{A:()=>N});var n=a(442),r=a(7656),c=a(7425),s=a(1112),i=a(8316),o=a(4437),l=a(5918),u=a(8509),d=a(6427),p=a(6087),m=a(7723),h=a(1113),g=a(1249),v=a(6154),f=a.n(v),y=a(1609),E=a(1186),A=a(4491),b=a(8140),w=a(5632),k=a(1226),R=a(5925),C=a(6516),_=a(5285),j=a(6088),x=a(8567),S=a(7642);const __=m.__,M=window?.jetpackProtectInitialState?.adminUrl,N=()=>{const[e]=(0,n.A)(["sm","lg"],[null,"<"]),{config:{jetpackWafAutomaticRules:t,jetpackWafIpBlockListEnabled:a,jetpackWafIpAllowListEnabled:v,jetpackWafIpBlockList:N,jetpackWafIpAllowList:L,automaticRulesAvailable:P,bruteForceProtection:z},currentIp:O,isEnabled:I,upgradeIsSeen:F,displayUpgradeBadge:V,wafSupported:D,isUpdating:H,stats:T,toggleAutomaticRules:B,toggleIpAllowList:q,saveIpAllowList:U,toggleIpBlockList:$,saveIpBlockList:Q,toggleBruteForceProtection:J,toggleWaf:W}=(0,C.A)(),{hasPlan:Z}=(0,R.Ay)(),{upgradePlan:G}=(0,R.Ay)({redirectUrl:`${M}#/firewall`}),{recordEvent:K}=(0,k.A)(),X=(0,w.A)(),{automaticRulesLastUpdated:Y}=T,[ee,te]=(0,y.useState)(!1),[ae,ne]=(0,y.useState)({jetpack_waf_ip_block_list:N,jetpack_waf_ip_allow_list:L}),re=I&&!H,ce=I&&(Z||P),se=!H&&v,ie=ae.jetpack_waf_ip_block_list!==N,oe=ae.jetpack_waf_ip_allow_list!==L,le=!!ae.jetpack_waf_ip_block_list,ue=!!ae.jetpack_waf_ip_allow_list,de=I&&a,pe=(0,y.useCallback)((()=>{K("jetpack_protect_waf_page_get_scan_link_click"),G()}),[K,G]),me=(0,y.useCallback)((e=>{const{value:t,id:a}=e.target;ne({...ae,[a]:t})}),[ae]),he=(0,y.useCallback)((()=>{ne((e=>({...e,jetpack_waf_automatic_rules:!e.jetpack_waf_automatic_rules})));try{B(),te(!1)}catch{te(!0),ne((e=>({...e,jetpack_waf_automatic_rules:!e.jetpack_waf_automatic_rules})))}}),[B]),ge=(0,y.useCallback)((async()=>{await Q(ae.jetpack_waf_ip_block_list)}),[Q,ae.jetpack_waf_ip_block_list]),ve=(0,y.useCallback)((async()=>{await U(ae.jetpack_waf_ip_allow_list)}),[U,ae.jetpack_waf_ip_allow_list]),fe=(0,y.useCallback)((()=>{X.mutate()}),[X]),ye=(0,y.useMemo)((()=>ae.jetpack_waf_ip_allow_list?.includes(O)),[ae.jetpack_waf_ip_allow_list,O]),Ee=(0,y.useCallback)((()=>{const e=ae.jetpack_waf_ip_allow_list.length>0?`${ae.jetpack_waf_ip_allow_list}\n${O}`:O;ne((t=>({...t,jetpack_waf_ip_allow_list:e})))}),[ae.jetpack_waf_ip_allow_list,O]);(0,y.useEffect)((()=>{H||ne({jetpack_waf_ip_block_list:N,jetpack_waf_ip_allow_list:L})}),[N,L,H]),(0,k.A)({pageViewEventName:"protect_waf",pageViewEventProperties:{has_plan:Z}});const Ae=React.createElement(r.A,{level:"error",title:"Jetpack Firewall is currently disabled.",children:React.createElement(c.Ay,null,__("Re-enable the Firewall to continue.","jetpack-protect")),actions:[React.createElement(s.A,{key:"enable",variant:"link",onClick:W,isLoading:H,disabled:H},__("Enable Firewall","jetpack-protect"))],hideCloseButton:!0}),be=React.createElement(React.Fragment,null,React.createElement("div",{className:`${S.A["toggle-section"]} ${ce?"":S.A["toggle-section--disabled"]}`},React.createElement("div",{className:S.A["toggle-section__control"]},React.createElement(i.A,{checked:!!ce&&t,onChange:he,disabled:!re||!ce||H}),Z&&!1===F&&React.createElement(d.Popover,{noArrow:!1,offset:8,position:"top right",inline:!0},React.createElement("div",{className:S.A.popover},React.createElement("div",{className:S.A.popover__header},React.createElement(c.Ay,{className:S.A.popover__title,variant:"title-small"},__("Thanks for upgrading!","jetpack-protect")),React.createElement(s.A,{className:S.A.popover__button,variant:"icon"},React.createElement(h.A,{onClick:fe,icon:g.A,size:24,"aria-label":__("Close Window","jetpack-protect")}))),React.createElement(c.Ay,{className:S.A.popover__description,variant:"body",mt:2,mb:3},__("Turn on Automatic firewall protection to apply the latest security rules.","jetpack-protect")),React.createElement("div",{className:S.A.popover__footer},React.createElement(s.A,{onClick:fe},__("Got it","jetpack-protect")))))),React.createElement("div",{className:S.A["toggle-section__content"]},React.createElement("div",{className:S.A["toggle-section__title"]},React.createElement(c.Ay,{variant:"title-medium",mb:2},__("Automatic firewall protection","jetpack-protect")),!e&&Z&&V&&React.createElement("span",{className:S.A.badge},__("NOW AVAILABLE","jetpack-protect"))),React.createElement(c.Ay,null,__("Block untrusted traffic by scanning every request made to your site. Jetpack’s security rules are always up-to-date to protect against the latest threats.","jetpack-protect")),React.createElement("div",{className:S.A["toggle-section__details"]},t&&Y&&!ee&&React.createElement("div",{className:S.A["automatic-rules-stats"]},React.createElement(c.Ay,{className:S.A["automatic-rules-stats__version"],variant:"body-small"},__("Automatic security rules installed.","jetpack-protect")),React.createElement(c.Ay,{className:S.A["automatic-rules-stats__last-updated"],variant:"body-small"},(0,m.sprintf)( -// translators: placeholder is the date latest rules were updated i.e. "September 23, 2022". -__("Last updated on %s.","jetpack-protect"),f().unix(Y).format("MMMM D, YYYY")))),ee&&React.createElement(React.Fragment,null,React.createElement(c.Ay,{className:S.A["automatic-rules-stats__failed-install"],variant:"body-small",mt:2},__("Failed to update automatic firewall rules.","jetpack-protect")),React.createElement(s.A,{variant:"link",href:Z?b.NW:b.pQ},React.createElement(c.Ay,{variant:"body-small"},__("Contact support","jetpack-protect"))))))),!Z&&React.createElement("div",{className:S.A["upgrade-trigger-section"]},React.createElement(o.A,{className:S.A["upgrade-trigger"],description:ce?__("Your site is not receiving the latest updates to automatic rules","jetpack-protect",0):__("Set up automatic rules with one click","jetpack-protect"),cta:ce?__("Upgrade to keep your site secure with up-to-date firewall rules","jetpack-protect",0):__("Upgrade to enable automatic firewall protection","jetpack-protect"),onClick:pe}))),we=React.createElement("div",{className:S.A["toggle-section"]},React.createElement("div",{className:S.A["toggle-section__control"]},React.createElement(i.A,{checked:z,onChange:J,disabled:H})),React.createElement("div",{className:S.A["toggle-section__content"]},React.createElement(c.Ay,{variant:"title-medium",mb:2},__("Brute force protection","jetpack-protect")),React.createElement(c.Ay,null,__("Prevent bots and hackers from attempting to log in to your website with common username and password combinations.","jetpack-protect")))),ke=React.createElement("div",{className:`${S.A["toggle-section"]} ${I?"":S.A["toggle-section--disabled"]}`},React.createElement("div",{className:S.A["toggle-section__control"]},React.createElement(i.A,{checked:de,onChange:$,disabled:!re})),React.createElement("div",{className:S.A["toggle-section__content"]},React.createElement(c.Ay,{variant:"title-medium",mb:2},__("Block IP addresses","jetpack-protect")),React.createElement(c.Ay,{mb:1},__("Stop specific visitors from accessing your site by their IP address.","jetpack-protect")),(de||le)&&React.createElement("div",{className:S.A["manual-rules-section"]},React.createElement(A.A,{id:"jetpack_waf_ip_block_list",placeholder:__("Example:","jetpack-protect")+"\n12.12.12.1\n12.12.12.2",rows:3,value:ae.jetpack_waf_ip_block_list,onChange:me,disabled:!re||!de}),de&&React.createElement(c.Ay,{variant:"body-extra-small",mt:1},__("IPv4 and IPv6 supported. Separate IPs with commas, spaces, or new lines. To specify a range, use CIDR notation (i.e. 12.12.12.0/24) or enter the low value and high value separated by a dash (i.e. 12.12.12.0–12.12.12.255).","jetpack-protect"))),de&&React.createElement("div",{className:S.A["block-list-button-container"]},React.createElement(s.A,{onClick:ge,isLoading:H,disabled:!re||!ie},__("Save block list","jetpack-protect"))))),Re=React.createElement(React.Fragment,null,React.createElement("div",{className:S.A["toggle-section"]},React.createElement("div",{className:S.A["toggle-section__control"]},React.createElement(i.A,{checked:v,onChange:q,disabled:H})),React.createElement("div",{className:S.A["toggle-section__content"]},React.createElement(c.Ay,{variant:"title-medium",mb:2},__("Trusted IP addresses","jetpack-protect")),React.createElement(c.Ay,{mb:1},__("IP addresses added to this list are always allowed to access your site, regardless of any other Jetpack security settings.","jetpack-protect")),(v||ue)&&React.createElement("div",{className:S.A["manual-rules-section"]},React.createElement(A.A,{id:"jetpack_waf_ip_allow_list",placeholder:__("Example:","jetpack-protect")+"\n12.12.12.1\n12.12.12.2",rows:3,value:ae.jetpack_waf_ip_allow_list,onChange:me,disabled:!se}),v&&React.createElement(c.Ay,{variant:"body-extra-small",mt:1},__("IPv4 and IPv6 supported. Separate IPs with commas, spaces, or new lines. To specify a range, use CIDR notation (i.e. 12.12.12.0/24) or enter the low value and high value separated by a dash (i.e. 12.12.12.0–12.12.12.255).","jetpack-protect"))),v&&React.createElement("div",{className:S.A["allow-list-button-container"]},React.createElement("div",null,React.createElement(c.Ay,{variant:"body-small",className:S.A["allow-list-current-ip"]},(0,p.createInterpolateElement)((0,m.sprintf)( -// translators: placeholder is the user's current IP address. -__("Your current IP: %s","jetpack-protect"),O),{strong:React.createElement("strong",null)})),React.createElement(s.A,{variant:"secondary",size:"small",onClick:Ee,disabled:!se||ye||H},__("+ Add to Allow List","jetpack-protect"))),React.createElement(s.A,{onClick:ve,isLoading:H,disabled:H||!oe},__("Save allow list","jetpack-protect"))))));return React.createElement(E.A,null,React.createElement(j.A,null),React.createElement(l.A,{className:S.A.container,horizontalSpacing:8,horizontalGap:4},D&&!I&&React.createElement(u.A,null,Ae," "),React.createElement(u.A,null,React.createElement("div",{className:S.A["toggle-wrapper"]},D&&be,we,D&&React.createElement(React.Fragment,null,ke,React.createElement("div",{className:S.A.divider})),Re))),D?React.createElement(x.A,null):React.createElement(_.A,null))}},2014:(e,t,a)=>{"use strict";a.d(t,{A:()=>g});var n=a(1158),r=a(7425),c=a(8443),s=a(7723),i=a(1609),o=a(9539),l=a(7031),u=a(2652),d=a(9889),p=a(993),m=a(9701),h=a(5960);const __=s.__,g=()=>{const{filter:e="all"}=(0,o.g)(),{list:t}=(0,p.A)({source:"history",status:e}),{counts:a,error:g}=(0,m.A)({sourceType:"history",filter:{status:e}}),{threats:v}=a.all,f=(0,i.useMemo)((()=>t.length?t.reduce(((e,t)=>new Date(t.firstDetected)0?(0,s.sprintf)(/* translators: %s: Total number of threats */ -__("%1$s previously active %2$s","jetpack-protect"),v,1===v?"threat":"threats"):__("No previously active threats","jetpack-protect")),React.createElement(l.A.Subheading,null,React.createElement(r.Ay,null,f?React.createElement("span",{className:h.A["subheading-content"]},(0,s.sprintf)(/* translators: %s: Oldest first detected date */ -__("%s - Today","jetpack-protect"),(0,c.dateI18n)("F jS g:i A",f,!1))):__("Most recent results","jetpack-protect"))),React.createElement("div",{className:h.A["scan-navigation"]},React.createElement(d.A,null)))})}},5717:(e,t,a)=>{"use strict";a.d(t,{A:()=>w});var n=a(5640),r=a(5918),c=a(8509),s=a(7425),i=a(7723),o=a(1609),l=a(9539),u=a(1186),d=a(7827),p=a(9395),m=a(6742),h=a(993),g=a(1226),v=a(5925),f=a(9701),y=a(5285),E=a(2014),A=a(2621),b=a(5960);const __=i.__,_n=i._n,w=()=>{(0,g.A)({pageViewEventName:"protect_scan_history"});const{hasPlan:e}=(0,v.Ay)(),{filter:t="all"}=(0,l.g)(),{item:a,list:w,selected:k,setSelected:R}=(0,h.A)({source:"history",status:t}),{counts:C,error:_}=(0,f.A)({sourceType:"history",filter:{status:t}}),{threats:j}=C.all,{counts:x}=(0,f.A)({sourceType:"history",filter:{status:"fixed",key:k}}),{threats:S}=x.current,{counts:M}=(0,f.A)({sourceType:"history",filter:{status:"ignored",key:k}}),{threats:N}=M.current,L=(0,o.useCallback)((()=>{switch(k){case"all":if(1===w.length)switch(t){case"fixed":return __("All fixed threats","jetpack-protect");case"ignored":return __("All ignored threats","jetpack-protect",0);default:return __("All threats","jetpack-protect")}switch(t){case"fixed":return(0,i.sprintf)(/* translators: placeholder is the amount of fixed threats found on the site. */ -__("All %s fixed threats","jetpack-protect"),w.length);case"ignored":return(0,i.sprintf)(/* translators: placeholder is the amount of ignored threats found on the site. */ -__("All %s ignored threats","jetpack-protect"),w.length);default:return(0,i.sprintf)(/* translators: placeholder is the amount of threats found on the site. */ -__("All %s threats","jetpack-protect"),w.length)}case"core":switch(t){case"fixed":return(0,i.sprintf)(/* translators: placeholder is the amount of fixed WordPress threats found on the site. */ -_n("%1$s fixed WordPress threat","%1$s fixed WordPress threats",w.length,"jetpack-protect"),w.length);case"ignored":return(0,i.sprintf)(/* translators: placeholder is the amount of ignored WordPress threats found on the site. */ -_n("%1$s ignored WordPress threat","%1$s ignored WordPress threats",w.length,"jetpack-protect"),w.length);default:return(0,i.sprintf)(/* translators: placeholder is the amount of WordPress threats found on the site. */ -_n("%1$s WordPress threat","%1$s WordPress threats",w.length,"jetpack-protect"),w.length)}case"files":switch(t){case"fixed":return(0,i.sprintf)(/* translators: placeholder is the amount of fixed file threats found on the site. */ -_n("%1$s fixed file threat","%1$s fixed file threats",w.length,"jetpack-protect"),w.length);case"ignored":return(0,i.sprintf)(/* translators: placeholder is the amount of ignored file threats found on the site. */ -_n("%1$s ignored file threat","%1$s ignored file threats",w.length,"jetpack-protect"),w.length);default:return(0,i.sprintf)(/* translators: placeholder is the amount of file threats found on the site. */ -_n("%1$s file threat","%1$s file threats",w.length,"jetpack-protect"),w.length)}case"database":switch(t){case"fixed":return(0,i.sprintf)(/* translators: placeholder is the amount of fixed database threats found on the site. */ -_n("%1$s fixed database threat","%1$s fixed database threats",w.length,"jetpack-protect"),w.length);case"ignored":return(0,i.sprintf)(/* translators: placeholder is the amount of ignored database threats found on the site. */ -_n("%1$s ignored database threat","%1$s ignored database threats",w.length,"jetpack-protect"),w.length);default:return(0,i.sprintf)(/* translators: placeholder is the amount of database threats found on the site. */ -_n("%1$s database threat","%1$s database threats",w.length,"jetpack-protect"),w.length)}default:switch(t){case"fixed":return(0,i.sprintf)(/* translators: Translates to "123 fixed threats in Example Plugin (1.2.3)" */ -_n("%1$s fixed threat in %2$s %3$s","%1$s fixed threats in %2$s %3$s",w.length,"jetpack-protect"),w.length,a?.name,a?.version);case"ignored":return(0,i.sprintf)(/* translators: Translates to "123 ignored threats in Example Plugin (1.2.3)" */ -_n("%1$s ignored threat in %2$s %3$s","%1$s ignored threats in %2$s %3$s",w.length,"jetpack-protect"),w.length,a?.name,a?.version);default:return(0,i.sprintf)(/* translators: Translates to "123 threats in Example Plugin (1.2.3)" */ -_n("%1$s threat in %2$s %3$s","%1$s threats in %2$s %3$s",w.length,"jetpack-protect"),w.length,a?.name,a?.version)}}}),[k,w.length,t,a?.name,a?.version]);return e?0===w.length&&"all"!==t?React.createElement(l.C5,{to:"/scan/history"}):React.createElement(u.A,null,React.createElement(E.A,null),(!_||j)&&React.createElement(n.A,null,React.createElement(r.A,{horizontalSpacing:7,horizontalGap:4},React.createElement(c.A,null,React.createElement(r.A,{fluid:!0,horizontalSpacing:0,horizontalGap:3},React.createElement(c.A,{lg:4},React.createElement(p.A,{selected:k,onSelect:R,sourceType:"history",statusFilter:t})),React.createElement(c.A,{lg:8},w.length>0?React.createElement("div",null,React.createElement("div",{className:b.A["list-header"]},React.createElement(s.hE,{className:b.A["list-title"]},L()),React.createElement("div",{className:b.A["list-header__controls"]},React.createElement(A.A,{numFixed:S,numIgnored:N}))),React.createElement(m.A,{list:w,hideAutoFixColumn:!0})):React.createElement(React.Fragment,null,React.createElement("div",{className:b.A["list-header"]},React.createElement("div",{className:b.A["list-header__controls"]},React.createElement(A.A,null))),React.createElement("div",{className:b.A.empty},React.createElement(d.A,null),React.createElement(s.H3,{weight:"bold",mt:8},__("Don't worry about a thing","jetpack-protect")),React.createElement(s.Ay,{mb:4},(0,i.sprintf)(/* translators: %s: Filter type */ -__("There are no%sthreats in your scan history.","jetpack-protect"),"all"===t?" ":` ${t} `))))))))),React.createElement(y.A,null)):React.createElement(l.C5,{to:"/scan"})}},2621:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var n=a(7723),r=a(1609),c=a.n(r),s=a(9539),i=a(4907);const __=n.__;function o({numFixed:e,numIgnored:t}){const a=(0,s.Zp)(),{filter:n="all"}=(0,s.g)(),o=(0,r.useCallback)((e=>()=>a(e)),[a]);return c().createElement(i.A,null,c().createElement(i.A.Button,{variant:"all"===n?"primary":"secondary",onClick:o("/scan/history")},__("All","jetpack-protect")),c().createElement(i.A.Button,{variant:"fixed"===n?"primary":"secondary",onClick:o("/scan/history/fixed"),disabled:!e},__("Fixed","jetpack-protect")),c().createElement(i.A.Button,{variant:"ignored"===n?"primary":"secondary",onClick:o("/scan/history/ignored"),disabled:!t},__("Ignored","jetpack-protect")))}},5148:(e,t,a)=>{"use strict";a.d(t,{A:()=>v});var n=a(5640),r=a(5918),c=a(8509),s=a(1186),i=a(5661),o=a(2425),l=a(1226),u=a(1936),d=a(5925),p=a(9701),m=a(3411),h=a(4446),g=a(5285);const v=()=>{const{hasPlan:e}=(0,d.Ay)(),{counts:{current:{threats:t}},lastChecked:a}=(0,p.A)(),{data:v}=(0,o.Ay)({usePolling:!0});let f;return f=v.error?"error":a?"active":"in_progress",(0,l.A)({pageViewEventName:"protect_admin",pageViewEventProperties:{check_status:f,has_plan:e}}),React.createElement(u.dn.Provider,{value:m.A},React.createElement(s.A,null,React.createElement(h.A,null),(!v.error||t)&&React.createElement(n.A,null,React.createElement(r.A,{horizontalSpacing:7,horizontalGap:4},React.createElement(c.A,null,React.createElement(i.A,null)))),React.createElement(g.A,null)))}},3411:(e,t,a)=>{"use strict";a.d(t,{A:()=>v});var n=a(6072),r=a.n(n),c=a(7425),s=a(1112),i=a(3924),o=a(6087),l=a(7723),u=a(1226),d=a(5925);const __=l.__,{siteSuffix:p}=window.jetpackProtectInitialState,m=__("Your scan results","jetpack-protect"),h=React.createElement(c.Ay,null,__("Navigate through the results of the scan on your WordPress installation, plugins, themes, and other files","jetpack-protect")),g=e=>{const{upgradePlan:t}=(0,d.Ay)(),{recordEvent:a}=(0,u.A)(),n=(0,o.useCallback)((()=>{a("jetpack_protect_onboarding_get_scan_link_click"),t()}),[a,t]);return React.createElement(s.A,r()({variant:"link",weight:"regular",onClick:n},e))},v=[{id:"free-scan-results",title:m,description:h},{id:"free-daily-scans",title:__("Daily automated scans","jetpack-protect"),description:React.createElement(c.Ay,null,(0,o.createInterpolateElement)(__("We run daily automated scans. Do you want to be able to scan manually? Upgrade","jetpack-protect"),{upgradeLink:React.createElement(g,null)}))},{id:"paid-scan-results",title:m,description:h},{id:"paid-fix-all-threats",title:__("Auto-fix with one click","jetpack-protect"),description:React.createElement(c.Ay,null,__("Jetpack Protect offers one-click fixes for most threats. Press this button to be safe again.","jetpack-protect"),React.createElement("br",null),React.createElement("br",null),(0,o.createInterpolateElement)(__("Note that you'll have to input your server credentials first.","jetpack-protect"),{credentialsLink:React.createElement(s.A,{variant:"link",weight:"regular",href:(0,i.A)("jetpack-settings-security-credentials",{site:p})})}))},{id:"paid-understand-severity",title:__("Understand severity","jetpack-protect"),description:React.createElement(c.Ay,null,__("Learn how critical these threats are for the security of your site by glancing at the severity labels.","jetpack-protect"))},{id:"paid-daily-and-manual-scans",title:__("Daily & manual scanning","jetpack-protect"),description:React.createElement(c.Ay,null,__("We run daily automated scans but you can also run on-demand scans if you want to check the latest status.","jetpack-protect"))}]},4446:(e,t,a)=>{"use strict";a.d(t,{A:()=>y});var n=a(442),r=a(1158),c=a(7425),s=a(8443),i=a(7723),o=a(1609),l=a(7031),u=a(2652),d=a(4254),p=a(9889),m=a(2425),h=a(5925),g=a(9701),v=a(3752),f=a(6359);const __=i.__,_n=i._n,y=()=>{const{hasPlan:e}=(0,h.Ay)(),[t]=(0,n.A)("sm"),{counts:{current:{threats:a}},lastChecked:y}=(0,g.A)(),{data:E}=(0,m.Ay)(),[A,b]=(0,o.useState)(null);let w=null;return y&&(w=new Date(y+" UTC").getTime()),(0,m.EV)(E)?React.createElement(v.A,null):E.error?React.createElement(u.A,{baseErrorMessage:__("We are having problems scanning your site.","jetpack-protect"),errorMessage:E.errorMessage,errorCode:E.errorCode}):React.createElement(l.A,{main:React.createElement(React.Fragment,null,React.createElement(r.A,{status:"active",label:__("Active","jetpack-protect")}),React.createElement(l.A.Heading,{showIcon:!0},a>0?(0,i.sprintf)(/* translators: %s: Total number of threats/vulnerabilities */ -__("%1$s %2$s found","jetpack-protect"),a,e?_n("threat","threats",a,"jetpack-protect"):_n("vulnerability","vulnerabilities",a,"jetpack-protect")):(0,i.sprintf)(/* translators: %s: Pluralized type of threat/vulnerability */ -__("No %s found","jetpack-protect"),e?__("threats","jetpack-protect"):__("vulnerabilities","jetpack-protect",0))),React.createElement(l.A.Subheading,null,React.createElement(React.Fragment,null,React.createElement(c.Ay,{ref:b},w?React.createElement(React.Fragment,null,React.createElement("span",{className:f.A["subheading-content"]},(0,s.dateI18n)("F jS g:i A",w,!1))," ",__("results","jetpack-protect")):__("Most recent results","jetpack-protect")),!e&&React.createElement(d.A,{id:"free-daily-scans",position:t?"bottom":"middle right",anchor:A}))),React.createElement("div",{className:f.A["scan-navigation"]},React.createElement(p.A,null)))})}},5285:(e,t,a)=>{"use strict";a.d(t,{A:()=>E});var n=a(3924),r=a(7425),c=a(1112),s=a(4437),i=a(5918),o=a(8509),l=a(7723),u=a(1609),d=a.n(u),p=a(3127),m=a(1226),h=a(5925),g=a(6516),v=a(6359);const __=l.__,f=()=>{const{recordEvent:e}=(0,m.A)(),{hasPlan:t,upgradePlan:a}=(0,h.Ay)(),{siteSuffix:i,blogID:o}=window.jetpackProtectInitialState||{},l=(0,u.useCallback)((()=>{e("jetpack_protect_footer_get_scan_link_click"),a()}),[e,a]);if(t){const e=(0,n.A)("jetpack-scan-dash",{site:o??i});return d().createElement("div",{className:v.A["product-section"]},d().createElement(r.hE,null,__("Get access to our Cloud","jetpack-protect")),d().createElement(r.Ay,{mb:3},__("With your Protect upgrade, you have free access to scan your site on our Cloud, so you can be aware and fix your threats even if your site goes down.","jetpack-protect")),d().createElement(c.A,{variant:"secondary",weight:"regular",href:e},__("Go to Cloud","jetpack-protect")))}return d().createElement("div",{className:v.A["product-section"]},d().createElement(r.hE,null,__("Advanced scan results","jetpack-protect")),d().createElement(r.Ay,{mb:3},__("Upgrade Jetpack Protect to get advanced scan tools, including one-click fixes for most threats and malware scanning.","jetpack-protect")),d().createElement(s.A,{description:__("Looking for advanced scan results and one-click fixes?","jetpack-protect"),cta:__("Upgrade Jetpack Protect now","jetpack-protect"),onClick:l}))},y=()=>{const{hasPlan:e}=(0,h.Ay)(),{globalStats:t}=(0,g.A)(),a=parseInt(t?.totalVulnerabilities),s=isNaN(a)?"50,000":a.toLocaleString();if(e){const e=(0,n.A)("protect-footer-learn-more-scan");return d().createElement("div",{className:v.A["info-section"]},d().createElement(r.hE,null,__("Line-by-line scanning","jetpack-protect")),d().createElement(r.Ay,{mb:2},__("We actively review line-by-line of your site files to identify threats and vulnerabilities. Jetpack monitors millions of websites to keep your site secure all the time.","jetpack-protect")," ",d().createElement(c.A,{variant:"link",target:"_blank",weight:"regular",href:e},__("Learn more","jetpack-protect"))))}const i=(0,n.A)("jetpack-protect-footer-learn-more");return d().createElement("div",{className:v.A["info-section"]},d().createElement(r.hE,null,(0,l.sprintf)( -// translators: placeholder is the number of total vulnerabilities i.e. "22,000". -__("Over %s listed vulnerabilities","jetpack-protect"),s)),d().createElement(r.Ay,{mb:3},(0,l.sprintf)( -// translators: placeholder is the number of total vulnerabilities i.e. "22,000". -__("Every day we check your plugin, theme, and WordPress versions against our %s listed vulnerabilities powered by WPScan, an Automattic brand.","jetpack-protect"),s)),d().createElement(c.A,{variant:"link",isExternalLink:!0,href:i,weight:"regular"},__("Learn more","jetpack-protect")))},E=()=>{const{waf:e}=window.jetpackProtectInitialState||{};return e.wafSupported?d().createElement(p.A,{main:d().createElement(f,null),secondary:d().createElement(y,null),preserveSecondaryOnMobile:!0}):d().createElement(i.A,{horizontalSpacing:0,horizontalGap:0,fluid:!1},d().createElement(o.A,null,d().createElement(y,null)))}},3752:(e,t,a)=>{"use strict";a.d(t,{A:()=>m});var n=a(7425),r=a(7723),c=a(7031),s=a(9671),i=a(4256),o=a(9889),l=a(2425),u=a(5925),d=a(6516),p=a(6359);const __=r.__,m=()=>{const{hasPlan:e}=(0,u.Ay)(),{globalStats:t}=(0,d.A)(),{data:a}=(0,l.Ay)({usePolling:!0}),m=parseInt(t?.totalVulnerabilities||"0"),h=isNaN(m)?"50,000":m.toLocaleString();return React.createElement(c.A,{main:React.createElement(React.Fragment,null,React.createElement(c.A.Heading,null,__("Your results will be ready soon","jetpack-protect")),React.createElement(c.A.Subheading,null,React.createElement(React.Fragment,null,e&&React.createElement(i.A,{className:p.A.progress,value:a?.currentProgress,total:100}),React.createElement(n.Ay,null,(0,r.sprintf)( -// translators: placeholder is the number of total vulnerabilities i.e. "22,000". -__("We are scanning for security threats from our more than %s listed vulnerabilities, powered by WPScan. This could take a minute or two.","jetpack-protect"),h)))),React.createElement("div",{className:p.A["scan-navigation"]},React.createElement(o.A,null))),secondary:React.createElement(s.A,null),preserveSecondaryOnMobile:!1,spacing:4})}},2970:(e,t,a)=>{"use strict";a.d(t,{A:()=>h});var n=a(2947),r=a(1608),c=a(7425),s=a(766),i=a(5918),o=a(8509),l=a(6087),u=a(7723),d=a(9374),p=a(1226),m=a(3961);const __=u.__,h=()=>((0,p.A)({pageViewEventName:"protect_interstitial"}),React.createElement(n.A,{moduleName:__("Jetpack Protect","jetpack-protect"),header:React.createElement("div",{className:m.A["protect-header"]},React.createElement(r.A,null),React.createElement(c.Ay,{variant:"body-small"},(0,l.createInterpolateElement)(__("Already have an existing plan or license key? Click here to get started","jetpack-protect"),{a:React.createElement("a",{href:"admin.php?page=my-jetpack#/add-license"})})))},React.createElement(s.A,null,React.createElement(i.A,{horizontalSpacing:3,horizontalGap:3},React.createElement(o.A,{sm:4,md:8,lg:12},React.createElement(d.A,null))))))},6201:e=>{"use strict";e.exports={consumer_slug:"jetpack-protect"}},9384:e=>{"use strict";e.exports=window.JetpackConnection},7999:e=>{"use strict";e.exports=window.JetpackScriptDataModule},1609:e=>{"use strict";e.exports=window.React},5795:e=>{"use strict";e.exports=window.ReactDOM},790:e=>{"use strict";e.exports=window.ReactJSXRuntime},6154:e=>{"use strict";e.exports=window.moment},1455:e=>{"use strict";e.exports=window.wp.apiFetch},6427:e=>{"use strict";e.exports=window.wp.components},9491:e=>{"use strict";e.exports=window.wp.compose},8443:e=>{"use strict";e.exports=window.wp.date},6087:e=>{"use strict";e.exports=window.wp.element},7723:e=>{"use strict";e.exports=window.wp.i18n},5573:e=>{"use strict";e.exports=window.wp.primitives},3832:e=>{"use strict";e.exports=window.wp.url},6072:e=>{function t(){return e.exports=t=Object.assign?Object.assign.bind():function(e){for(var t=1;t{"use strict";a.d(t,{m:()=>c});var n=a(5530),r=a(698),c=new class extends n.Q{#e;#t;#a;constructor(){super(),this.#a=e=>{if(!r.S$&&window.addEventListener){const t=()=>e();return window.addEventListener("visibilitychange",t,!1),()=>{window.removeEventListener("visibilitychange",t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#a)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#a=e,this.#t?.(),this.#t=e((e=>{"boolean"==typeof e?this.setFocused(e):this.onFocus()}))}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){this.listeners.forEach((e=>{e()}))}isFocused(){return"boolean"==typeof this.#e?this.#e:"hidden"!==globalThis.document?.visibilityState}}},9101:(e,t,a)=>{"use strict";a.d(t,{PL:()=>r});var n=a(698);function r(e){return{onFetch:(t,a)=>{const r=async()=>{const a=t.options,r=t.fetchOptions?.meta?.fetchMore?.direction,i=t.state.data?.pages||[],o=t.state.data?.pageParams||[],l={pages:[],pageParams:[]};let u=!1;const d=t.options.queryFn||(()=>Promise.reject(new Error(`Missing queryFn: '${t.options.queryHash}'`))),p=async(e,a,r)=>{if(u)return Promise.reject();if(null==a&&e.pages.length)return Promise.resolve(e);const c={queryKey:t.queryKey,pageParam:a,direction:r?"backward":"forward",meta:t.options.meta};var s;s=c,Object.defineProperty(s,"signal",{enumerable:!0,get:()=>(t.signal.aborted?u=!0:t.signal.addEventListener("abort",(()=>{u=!0})),t.signal)});const i=await d(c),{maxPages:o}=t.options,l=r?n.ZZ:n.y9;return{pages:l(e.pages,i,o),pageParams:l(e.pageParams,a,o)}};let m;if(r&&i.length){const e="backward"===r,t={pages:i,pageParams:o},n=(e?s:c)(a,t);m=await p(t,n,e)}else{m=await p(l,o[0]??a.initialPageParam);const t=e??i.length;for(let e=1;et.options.persister?.(r,{queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},a):t.fetchFn=r}}}function c(e,{pages:t,pageParams:a}){const n=t.length-1;return e.getNextPageParam(t[n],t,a[n],a)}function s(e,{pages:t,pageParams:a}){return e.getPreviousPageParam?.(t[0],t,a[0],a)}},4352:(e,t,a)=>{"use strict";a.d(t,{$:()=>i,s:()=>s});var n=a(1795),r=a(1450),c=a(4610),s=class extends r.k{#n;#r;#c;#s;constructor(e){super(),this.mutationId=e.mutationId,this.#r=e.defaultOptions,this.#c=e.mutationCache,this.#n=[],this.state=e.state||{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0},this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options={...this.#r,...e},this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#n.includes(e)||(this.#n.push(e),this.clearGcTimeout(),this.#c.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#n=this.#n.filter((t=>t!==e)),this.scheduleGc(),this.#c.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#n.length||("pending"===this.state.status?this.scheduleGc():this.#c.remove(this))}continue(){return this.#s?.continue()??this.execute(this.state.variables)}async execute(e){const t=()=>(this.#s=(0,c.II)({fn:()=>this.options.mutationFn?this.options.mutationFn(e):Promise.reject(new Error("No mutationFn found")),onFail:(e,t)=>{this.#i({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#i({type:"pause"})},onContinue:()=>{this.#i({type:"continue"})},retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode}),this.#s.promise),a="pending"===this.state.status;try{if(!a){this.#i({type:"pending",variables:e}),await(this.#c.config.onMutate?.(e,this));const t=await(this.options.onMutate?.(e));t!==this.state.context&&this.#i({type:"pending",context:t,variables:e})}const n=await t();return await(this.#c.config.onSuccess?.(n,e,this.state.context,this)),await(this.options.onSuccess?.(n,e,this.state.context)),await(this.#c.config.onSettled?.(n,null,this.state.variables,this.state.context,this)),await(this.options.onSettled?.(n,null,e,this.state.context)),this.#i({type:"success",data:n}),n}catch(t){try{throw await(this.#c.config.onError?.(t,e,this.state.context,this)),await(this.options.onError?.(t,e,this.state.context)),await(this.#c.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this)),await(this.options.onSettled?.(void 0,t,e,this.state.context)),t}finally{this.#i({type:"error",error:t})}}}#i(e){this.state=(t=>{switch(e.type){case"failed":return{...t,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...t,isPaused:!0};case"continue":return{...t,isPaused:!1};case"pending":return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:!(0,c.v_)(this.options.networkMode),status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}})(this.state),n.j.batch((()=>{this.#n.forEach((t=>{t.onMutationUpdate(e)})),this.#c.notify({mutation:this,type:"updated",action:e})}))}};function i(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}},7708:(e,t,a)=>{"use strict";a.d(t,{q:()=>i});var n=a(1795),r=a(4352),c=a(698),s=a(5530),i=class extends s.Q{constructor(e={}){super(),this.config=e,this.#o=[],this.#l=0}#o;#l;#u;build(e,t,a){const n=new r.s({mutationCache:this,mutationId:++this.#l,options:e.defaultMutationOptions(t),state:a});return this.add(n),n}add(e){this.#o.push(e),this.notify({type:"added",mutation:e})}remove(e){this.#o=this.#o.filter((t=>t!==e)),this.notify({type:"removed",mutation:e})}clear(){n.j.batch((()=>{this.#o.forEach((e=>{this.remove(e)}))}))}getAll(){return this.#o}find(e){const t={exact:!0,...e};return this.#o.find((e=>(0,c.nJ)(t,e)))}findAll(e={}){return this.#o.filter((t=>(0,c.nJ)(e,t)))}notify(e){n.j.batch((()=>{this.listeners.forEach((t=>{t(e)}))}))}resumePausedMutations(){return this.#u=(this.#u??Promise.resolve()).then((()=>{const e=this.#o.filter((e=>e.state.isPaused));return n.j.batch((()=>e.reduce(((e,t)=>e.then((()=>t.continue().catch(c.lQ)))),Promise.resolve())))})).then((()=>{this.#u=void 0})),this.#u}}},4158:(e,t,a)=>{"use strict";a.d(t,{_:()=>i});var n=a(4352),r=a(1795),c=a(5530),s=a(698),i=class extends c.Q{#d;#p=void 0;#m;#h;constructor(e,t){super(),this.#d=e,this.setOptions(t),this.bindMethods(),this.#g()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){const t=this.options;this.options=this.#d.defaultMutationOptions(e),(0,s.f8)(t,this.options)||this.#d.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.#m,observer:this}),t?.mutationKey&&this.options.mutationKey&&(0,s.EN)(t.mutationKey)!==(0,s.EN)(this.options.mutationKey)?this.reset():this.#m?.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#m?.removeObserver(this)}onMutationUpdate(e){this.#g(),this.#v(e)}getCurrentResult(){return this.#p}reset(){this.#m?.removeObserver(this),this.#m=void 0,this.#g(),this.#v()}mutate(e,t){return this.#h=t,this.#m?.removeObserver(this),this.#m=this.#d.getMutationCache().build(this.#d,this.options),this.#m.addObserver(this),this.#m.execute(e)}#g(){const e=this.#m?.state??(0,n.$)();this.#p={...e,isPending:"pending"===e.status,isSuccess:"success"===e.status,isError:"error"===e.status,isIdle:"idle"===e.status,mutate:this.mutate,reset:this.reset}}#v(e){r.j.batch((()=>{if(this.#h&&this.hasListeners()){const t=this.#p.variables,a=this.#p.context;"success"===e?.type?(this.#h.onSuccess?.(e.data,t,a),this.#h.onSettled?.(e.data,null,t,a)):"error"===e?.type&&(this.#h.onError?.(e.error,t,a),this.#h.onSettled?.(void 0,e.error,t,a))}this.listeners.forEach((e=>{e(this.#p)}))}))}}},1795:(e,t,a)=>{"use strict";a.d(t,{j:()=>n});var n=function(){let e=[],t=0,a=e=>{e()},n=e=>{e()},r=e=>setTimeout(e,0);const c=n=>{t?e.push(n):r((()=>{a(n)}))},s=()=>{const t=e;e=[],t.length&&r((()=>{n((()=>{t.forEach((e=>{a(e)}))}))}))};return{batch:e=>{let a;t++;try{a=e()}finally{t--,t||s()}return a},batchCalls:e=>(...t)=>{c((()=>{e(...t)}))},schedule:c,setNotifyFunction:e=>{a=e},setBatchNotifyFunction:e=>{n=e},setScheduler:e=>{r=e}}}()},5873:(e,t,a)=>{"use strict";a.d(t,{t:()=>c});var n=a(5530),r=a(698),c=new class extends n.Q{#f=!0;#t;#a;constructor(){super(),this.#a=e=>{if(!r.S$&&window.addEventListener){const t=()=>e(!0),a=()=>e(!1);return window.addEventListener("online",t,!1),window.addEventListener("offline",a,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",a)}}}}onSubscribe(){this.#t||this.setEventListener(this.#a)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#a=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#f!==e&&(this.#f=e,this.listeners.forEach((t=>{t(e)})))}isOnline(){return this.#f}}},4135:(e,t,a)=>{"use strict";a.d(t,{X:()=>i});var n=a(698),r=a(1795),c=a(4610),s=a(1450),i=class extends s.k{#y;#E;#A;#b;#s;#n;#r;#w;constructor(e){super(),this.#w=!1,this.#r=e.defaultOptions,this.#k(e.options),this.#n=[],this.#A=e.cache,this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#y=e.state||function(e){const t="function"==typeof e.initialData?e.initialData():e.initialData,a=void 0!==t,n=a?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:a?n??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:a?"success":"pending",fetchStatus:"idle"}}(this.options),this.state=this.#y,this.scheduleGc()}get meta(){return this.options.meta}#k(e){this.options={...this.#r,...e},this.updateGcTime(this.options.gcTime)}optionalRemove(){this.#n.length||"idle"!==this.state.fetchStatus||this.#A.remove(this)}setData(e,t){const a=(0,n.pl)(this.state.data,e,this.options);return this.#i({data:a,type:"success",dataUpdatedAt:t?.updatedAt,manual:t?.manual}),a}setState(e,t){this.#i({type:"setState",state:e,setStateOptions:t})}cancel(e){const t=this.#b;return this.#s?.cancel(e),t?t.then(n.lQ).catch(n.lQ):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#y)}isActive(){return this.#n.some((e=>!1!==e.options.enabled))}isDisabled(){return this.getObserversCount()>0&&!this.isActive()}isStale(){return this.state.isInvalidated||!this.state.dataUpdatedAt||this.#n.some((e=>e.getCurrentResult().isStale))}isStaleByTime(e=0){return this.state.isInvalidated||!this.state.dataUpdatedAt||!(0,n.j3)(this.state.dataUpdatedAt,e)}onFocus(){const e=this.#n.find((e=>e.shouldFetchOnWindowFocus()));e?.refetch({cancelRefetch:!1}),this.#s?.continue()}onOnline(){const e=this.#n.find((e=>e.shouldFetchOnReconnect()));e?.refetch({cancelRefetch:!1}),this.#s?.continue()}addObserver(e){this.#n.includes(e)||(this.#n.push(e),this.clearGcTimeout(),this.#A.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.#n.includes(e)&&(this.#n=this.#n.filter((t=>t!==e)),this.#n.length||(this.#s&&(this.#w?this.#s.cancel({revert:!0}):this.#s.cancelRetry()),this.scheduleGc()),this.#A.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.#n.length}invalidate(){this.state.isInvalidated||this.#i({type:"invalidate"})}fetch(e,t){if("idle"!==this.state.fetchStatus)if(this.state.dataUpdatedAt&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#b)return this.#s?.continueRetry(),this.#b;if(e&&this.#k(e),!this.options.queryFn){const e=this.#n.find((e=>e.options.queryFn));e&&this.#k(e.options)}const a=new AbortController,n={queryKey:this.queryKey,meta:this.meta},r=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(this.#w=!0,a.signal)})};r(n);const s={fetchOptions:t,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:()=>this.options.queryFn?(this.#w=!1,this.options.persister?this.options.persister(this.options.queryFn,n,this):this.options.queryFn(n)):Promise.reject(new Error(`Missing queryFn: '${this.options.queryHash}'`))};r(s),this.options.behavior?.onFetch(s,this),this.#E=this.state,"idle"!==this.state.fetchStatus&&this.state.fetchMeta===s.fetchOptions?.meta||this.#i({type:"fetch",meta:s.fetchOptions?.meta});const i=e=>{(0,c.wm)(e)&&e.silent||this.#i({type:"error",error:e}),(0,c.wm)(e)||(this.#A.config.onError?.(e,this),this.#A.config.onSettled?.(this.state.data,e,this)),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1};return this.#s=(0,c.II)({fn:s.fetchFn,abort:a.abort.bind(a),onSuccess:e=>{void 0!==e?(this.setData(e),this.#A.config.onSuccess?.(e,this),this.#A.config.onSettled?.(e,this.state.error,this),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1):i(new Error(`${this.queryHash} data is undefined`))},onError:i,onFail:(e,t)=>{this.#i({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#i({type:"pause"})},onContinue:()=>{this.#i({type:"continue"})},retry:s.options.retry,retryDelay:s.options.retryDelay,networkMode:s.options.networkMode}),this.#b=this.#s.promise,this.#b}#i(e){this.state=(t=>{switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":return{...t,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:e.meta??null,fetchStatus:(0,c.v_)(this.options.networkMode)?"fetching":"paused",...!t.dataUpdatedAt&&{error:null,status:"pending"}};case"success":return{...t,data:e.data,dataUpdateCount:t.dataUpdateCount+1,dataUpdatedAt:e.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":const a=e.error;return(0,c.wm)(a)&&a.revert&&this.#E?{...this.#E,fetchStatus:"idle"}:{...t,error:a,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:a,fetchStatus:"idle",status:"error"};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}})(this.state),r.j.batch((()=>{this.#n.forEach((e=>{e.onQueryUpdate()})),this.#A.notify({query:this,type:"updated",action:e})}))}}},3205:(e,t,a)=>{"use strict";a.d(t,{$:()=>i});var n=a(698),r=a(4135),c=a(1795),s=a(5530),i=class extends s.Q{constructor(e={}){super(),this.config=e,this.#R=new Map}#R;build(e,t,a){const c=t.queryKey,s=t.queryHash??(0,n.F$)(c,t);let i=this.get(s);return i||(i=new r.X({cache:this,queryKey:c,queryHash:s,options:e.defaultQueryOptions(t),state:a,defaultOptions:e.getQueryDefaults(c)}),this.add(i)),i}add(e){this.#R.has(e.queryHash)||(this.#R.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){const t=this.#R.get(e.queryHash);t&&(e.destroy(),t===e&&this.#R.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){c.j.batch((()=>{this.getAll().forEach((e=>{this.remove(e)}))}))}get(e){return this.#R.get(e)}getAll(){return[...this.#R.values()]}find(e){const t={exact:!0,...e};return this.getAll().find((e=>(0,n.MK)(t,e)))}findAll(e={}){const t=this.getAll();return Object.keys(e).length>0?t.filter((t=>(0,n.MK)(e,t))):t}notify(e){c.j.batch((()=>{this.listeners.forEach((t=>{t(e)}))}))}onFocus(){c.j.batch((()=>{this.getAll().forEach((e=>{e.onFocus()}))}))}onOnline(){c.j.batch((()=>{this.getAll().forEach((e=>{e.onOnline()}))}))}}},116:(e,t,a)=>{"use strict";a.d(t,{E:()=>u});var n=a(698),r=a(3205),c=a(7708),s=a(2464),i=a(5873),o=a(1795),l=a(9101),u=class{#C;#c;#r;#_;#j;#x;#S;#M;constructor(e={}){this.#C=e.queryCache||new r.$,this.#c=e.mutationCache||new c.q,this.#r=e.defaultOptions||{},this.#_=new Map,this.#j=new Map,this.#x=0}mount(){this.#x++,1===this.#x&&(this.#S=s.m.subscribe((()=>{s.m.isFocused()&&(this.resumePausedMutations(),this.#C.onFocus())})),this.#M=i.t.subscribe((()=>{i.t.isOnline()&&(this.resumePausedMutations(),this.#C.onOnline())})))}unmount(){this.#x--,0===this.#x&&(this.#S?.(),this.#S=void 0,this.#M?.(),this.#M=void 0)}isFetching(e){return this.#C.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#c.findAll({...e,status:"pending"}).length}getQueryData(e){return this.#C.find({queryKey:e})?.state.data}ensureQueryData(e){const t=this.getQueryData(e.queryKey);return void 0!==t?Promise.resolve(t):this.fetchQuery(e)}getQueriesData(e){return this.getQueryCache().findAll(e).map((({queryKey:e,state:t})=>[e,t.data]))}setQueryData(e,t,a){const r=this.#C.find({queryKey:e}),c=r?.state.data,s=(0,n.Zw)(t,c);if(void 0===s)return;const i=this.defaultQueryOptions({queryKey:e});return this.#C.build(this,i).setData(s,{...a,manual:!0})}setQueriesData(e,t,a){return o.j.batch((()=>this.getQueryCache().findAll(e).map((({queryKey:e})=>[e,this.setQueryData(e,t,a)]))))}getQueryState(e){return this.#C.find({queryKey:e})?.state}removeQueries(e){const t=this.#C;o.j.batch((()=>{t.findAll(e).forEach((e=>{t.remove(e)}))}))}resetQueries(e,t){const a=this.#C,n={type:"active",...e};return o.j.batch((()=>(a.findAll(e).forEach((e=>{e.reset()})),this.refetchQueries(n,t))))}cancelQueries(e={},t={}){const a={revert:!0,...t},r=o.j.batch((()=>this.#C.findAll(e).map((e=>e.cancel(a)))));return Promise.all(r).then(n.lQ).catch(n.lQ)}invalidateQueries(e={},t={}){return o.j.batch((()=>{if(this.#C.findAll(e).forEach((e=>{e.invalidate()})),"none"===e.refetchType)return Promise.resolve();const a={...e,type:e.refetchType??e.type??"active"};return this.refetchQueries(a,t)}))}refetchQueries(e={},t){const a={...t,cancelRefetch:t?.cancelRefetch??!0},r=o.j.batch((()=>this.#C.findAll(e).filter((e=>!e.isDisabled())).map((e=>{let t=e.fetch(void 0,a);return a.throwOnError||(t=t.catch(n.lQ)),"paused"===e.state.fetchStatus?Promise.resolve():t}))));return Promise.all(r).then(n.lQ)}fetchQuery(e){const t=this.defaultQueryOptions(e);void 0===t.retry&&(t.retry=!1);const a=this.#C.build(this,t);return a.isStaleByTime(t.staleTime)?a.fetch(t):Promise.resolve(a.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(n.lQ).catch(n.lQ)}fetchInfiniteQuery(e){return e.behavior=(0,l.PL)(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(n.lQ).catch(n.lQ)}resumePausedMutations(){return this.#c.resumePausedMutations()}getQueryCache(){return this.#C}getMutationCache(){return this.#c}getDefaultOptions(){return this.#r}setDefaultOptions(e){this.#r=e}setQueryDefaults(e,t){this.#_.set((0,n.EN)(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[...this.#_.values()];let a={};return t.forEach((t=>{(0,n.Cp)(e,t.queryKey)&&(a={...a,...t.defaultOptions})})),a}setMutationDefaults(e,t){this.#j.set((0,n.EN)(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){const t=[...this.#j.values()];let a={};return t.forEach((t=>{(0,n.Cp)(e,t.mutationKey)&&(a={...a,...t.defaultOptions})})),a}defaultQueryOptions(e){if(e?._defaulted)return e;const t={...this.#r.queries,...e?.queryKey&&this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=(0,n.F$)(t.queryKey,t)),void 0===t.refetchOnReconnect&&(t.refetchOnReconnect="always"!==t.networkMode),void 0===t.throwOnError&&(t.throwOnError=!!t.suspense),void 0===t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#r.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#C.clear(),this.#c.clear()}}},3397:(e,t,a)=>{"use strict";a.d(t,{$:()=>o});var n=a(698),r=a(1795),c=a(2464),s=a(5530),i=a(4610),o=class extends s.Q{constructor(e,t){super(),this.options=t,this.#d=e,this.#N=null,this.bindMethods(),this.setOptions(t)}#d;#L=void 0;#P=void 0;#p=void 0;#z;#O;#N;#I;#F;#V;#D;#H;#T;#B=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(this.#L.addObserver(this),l(this.#L,this.options)?this.#q():this.updateResult(),this.#U())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return u(this.#L,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return u(this.#L,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#$(),this.#Q(),this.#L.removeObserver(this)}setOptions(e,t){const a=this.options,r=this.#L;if(this.options=this.#d.defaultQueryOptions(e),(0,n.f8)(a,this.options)||this.#d.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#L,observer:this}),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled)throw new Error("Expected enabled to be a boolean");this.options.queryKey||(this.options.queryKey=a.queryKey),this.#J();const c=this.hasListeners();c&&d(this.#L,r,this.options,a)&&this.#q(),this.updateResult(t),!c||this.#L===r&&this.options.enabled===a.enabled&&this.options.staleTime===a.staleTime||this.#W();const s=this.#Z();!c||this.#L===r&&this.options.enabled===a.enabled&&s===this.#T||this.#G(s)}getOptimisticResult(e){const t=this.#d.getQueryCache().build(this.#d,e),a=this.createResult(t,e);return function(e,t){if(!(0,n.f8)(e.getCurrentResult(),t))return!0;return!1}(this,a)&&(this.#p=a,this.#O=this.options,this.#z=this.#L.state),a}getCurrentResult(){return this.#p}trackResult(e){const t={};return Object.keys(e).forEach((a=>{Object.defineProperty(t,a,{configurable:!1,enumerable:!0,get:()=>(this.#B.add(a),e[a])})})),t}getCurrentQuery(){return this.#L}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){const t=this.#d.defaultQueryOptions(e),a=this.#d.getQueryCache().build(this.#d,t);return a.isFetchingOptimistic=!0,a.fetch().then((()=>this.createResult(a,t)))}fetch(e){return this.#q({...e,cancelRefetch:e.cancelRefetch??!0}).then((()=>(this.updateResult(),this.#p)))}#q(e){this.#J();let t=this.#L.fetch(this.options,e);return e?.throwOnError||(t=t.catch(n.lQ)),t}#W(){if(this.#$(),n.S$||this.#p.isStale||!(0,n.gn)(this.options.staleTime))return;const e=(0,n.j3)(this.#p.dataUpdatedAt,this.options.staleTime)+1;this.#D=setTimeout((()=>{this.#p.isStale||this.updateResult()}),e)}#Z(){return("function"==typeof this.options.refetchInterval?this.options.refetchInterval(this.#L):this.options.refetchInterval)??!1}#G(e){this.#Q(),this.#T=e,!n.S$&&!1!==this.options.enabled&&(0,n.gn)(this.#T)&&0!==this.#T&&(this.#H=setInterval((()=>{(this.options.refetchIntervalInBackground||c.m.isFocused())&&this.#q()}),this.#T))}#U(){this.#W(),this.#G(this.#Z())}#$(){this.#D&&(clearTimeout(this.#D),this.#D=void 0)}#Q(){this.#H&&(clearInterval(this.#H),this.#H=void 0)}createResult(e,t){const a=this.#L,r=this.options,c=this.#p,s=this.#z,o=this.#O,u=e!==a?e.state:this.#P,{state:m}=e;let h,{error:g,errorUpdatedAt:v,fetchStatus:f,status:y}=m,E=!1;if(t._optimisticResults){const n=this.hasListeners(),c=!n&&l(e,t),s=n&&d(e,a,t,r);(c||s)&&(f=(0,i.v_)(e.options.networkMode)?"fetching":"paused",m.dataUpdatedAt||(y="pending")),"isRestoring"===t._optimisticResults&&(f="idle")}if(t.select&&void 0!==m.data)if(c&&m.data===s?.data&&t.select===this.#I)h=this.#F;else try{this.#I=t.select,h=t.select(m.data),h=(0,n.pl)(c?.data,h,t),this.#F=h,this.#N=null}catch(e){this.#N=e}else h=m.data;if(void 0!==t.placeholderData&&void 0===h&&"pending"===y){let e;if(c?.isPlaceholderData&&t.placeholderData===o?.placeholderData)e=c.data;else if(e="function"==typeof t.placeholderData?t.placeholderData(this.#V?.state.data,this.#V):t.placeholderData,t.select&&void 0!==e)try{e=t.select(e),this.#N=null}catch(e){this.#N=e}void 0!==e&&(y="success",h=(0,n.pl)(c?.data,e,t),E=!0)}this.#N&&(g=this.#N,h=this.#F,v=Date.now(),y="error");const A="fetching"===f,b="pending"===y,w="error"===y,k=b&&A;return{status:y,fetchStatus:f,isPending:b,isSuccess:"success"===y,isError:w,isInitialLoading:k,isLoading:k,data:h,dataUpdatedAt:m.dataUpdatedAt,error:g,errorUpdatedAt:v,failureCount:m.fetchFailureCount,failureReason:m.fetchFailureReason,errorUpdateCount:m.errorUpdateCount,isFetched:m.dataUpdateCount>0||m.errorUpdateCount>0,isFetchedAfterMount:m.dataUpdateCount>u.dataUpdateCount||m.errorUpdateCount>u.errorUpdateCount,isFetching:A,isRefetching:A&&!b,isLoadingError:w&&0===m.dataUpdatedAt,isPaused:"paused"===f,isPlaceholderData:E,isRefetchError:w&&0!==m.dataUpdatedAt,isStale:p(e,t),refetch:this.refetch}}updateResult(e){const t=this.#p,a=this.createResult(this.#L,this.options);if(this.#z=this.#L.state,this.#O=this.options,void 0!==this.#z.data&&(this.#V=this.#L),(0,n.f8)(a,t))return;this.#p=a;const r={};!1!==e?.listeners&&(()=>{if(!t)return!0;const{notifyOnChangeProps:e}=this.options,a="function"==typeof e?e():e;if("all"===a||!a&&!this.#B.size)return!0;const n=new Set(a??this.#B);return this.options.throwOnError&&n.add("error"),Object.keys(this.#p).some((e=>{const a=e;return this.#p[a]!==t[a]&&n.has(a)}))})()&&(r.listeners=!0),this.#v({...r,...e})}#J(){const e=this.#d.getQueryCache().build(this.#d,this.options);if(e===this.#L)return;const t=this.#L;this.#L=e,this.#P=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#U()}#v(e){r.j.batch((()=>{e.listeners&&this.listeners.forEach((e=>{e(this.#p)})),this.#d.getQueryCache().notify({query:this.#L,type:"observerResultsUpdated"})}))}};function l(e,t){return function(e,t){return!(!1===t.enabled||e.state.dataUpdatedAt||"error"===e.state.status&&!1===t.retryOnMount)}(e,t)||e.state.dataUpdatedAt>0&&u(e,t,t.refetchOnMount)}function u(e,t,a){if(!1!==t.enabled){const n="function"==typeof a?a(e):a;return"always"===n||!1!==n&&p(e,t)}return!1}function d(e,t,a,n){return!1!==a.enabled&&(e!==t||!1===n.enabled)&&(!a.suspense||"error"!==e.state.status)&&p(e,a)}function p(e,t){return e.isStaleByTime(t.staleTime)}},1450:(e,t,a)=>{"use strict";a.d(t,{k:()=>r});var n=a(698),r=class{#K;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),(0,n.gn)(this.gcTime)&&(this.#K=setTimeout((()=>{this.optionalRemove()}),this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(n.S$?1/0:3e5))}clearGcTimeout(){this.#K&&(clearTimeout(this.#K),this.#K=void 0)}}},4610:(e,t,a)=>{"use strict";a.d(t,{II:()=>u,v_:()=>i,wm:()=>l});var n=a(2464),r=a(5873),c=a(698);function s(e){return Math.min(1e3*2**e,3e4)}function i(e){return"online"!==(e??"online")||r.t.isOnline()}var o=class{constructor(e){this.revert=e?.revert,this.silent=e?.silent}};function l(e){return e instanceof o}function u(e){let t,a,l,u=!1,d=0,p=!1;const m=new Promise(((e,t)=>{a=e,l=t})),h=()=>!n.m.isFocused()||"always"!==e.networkMode&&!r.t.isOnline(),g=n=>{p||(p=!0,e.onSuccess?.(n),t?.(),a(n))},v=a=>{p||(p=!0,e.onError?.(a),t?.(),l(a))},f=()=>new Promise((a=>{t=e=>{const t=p||!h();return t&&a(e),t},e.onPause?.()})).then((()=>{t=void 0,p||e.onContinue?.()})),y=()=>{if(p)return;let t;try{t=e.fn()}catch(e){t=Promise.reject(e)}Promise.resolve(t).then(g).catch((t=>{if(p)return;const a=e.retry??(c.S$?0:3),n=e.retryDelay??s,r="function"==typeof n?n(d,t):n,i=!0===a||"number"==typeof a&&d{if(h())return f()})).then((()=>{u?v(t):y()}))):v(t)}))};return i(e.networkMode)?y():f().then(y),{promise:m,cancel:t=>{p||(v(new o(t)),e.abort?.())},continue:()=>{const e=t?.();return e?m:Promise.resolve()},cancelRetry:()=>{u=!0},continueRetry:()=>{u=!1}}}},5530:(e,t,a)=>{"use strict";a.d(t,{Q:()=>n});var n=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}}},698:(e,t,a)=>{"use strict";a.d(t,{Cp:()=>p,EN:()=>d,F$:()=>u,MK:()=>o,S$:()=>n,ZZ:()=>b,Zw:()=>c,f8:()=>h,gn:()=>s,j3:()=>i,lQ:()=>r,nJ:()=>l,pl:()=>E,y9:()=>A,yy:()=>y});var n="undefined"==typeof window||"Deno"in window;function r(){}function c(e,t){return"function"==typeof e?e(t):e}function s(e){return"number"==typeof e&&e>=0&&e!==1/0}function i(e,t){return Math.max(e+(t||0)-Date.now(),0)}function o(e,t){const{type:a="all",exact:n,fetchStatus:r,predicate:c,queryKey:s,stale:i}=e;if(s)if(n){if(t.queryHash!==u(s,t.options))return!1}else if(!p(t.queryKey,s))return!1;if("all"!==a){const e=t.isActive();if("active"===a&&!e)return!1;if("inactive"===a&&e)return!1}return("boolean"!=typeof i||t.isStale()===i)&&((void 0===r||r===t.state.fetchStatus)&&!(c&&!c(t)))}function l(e,t){const{exact:a,status:n,predicate:r,mutationKey:c}=e;if(c){if(!t.options.mutationKey)return!1;if(a){if(d(t.options.mutationKey)!==d(c))return!1}else if(!p(t.options.mutationKey,c))return!1}return(!n||t.state.status===n)&&!(r&&!r(t))}function u(e,t){return(t?.queryKeyHashFn||d)(e)}function d(e){return JSON.stringify(e,((e,t)=>v(t)?Object.keys(t).sort().reduce(((e,a)=>(e[a]=t[a],e)),{}):t))}function p(e,t){return e===t||typeof e==typeof t&&(!(!e||!t||"object"!=typeof e||"object"!=typeof t)&&!Object.keys(t).some((a=>!p(e[a],t[a]))))}function m(e,t){if(e===t)return e;const a=g(e)&&g(t);if(a||v(e)&&v(t)){const n=a?e:Object.keys(e),r=n.length,c=a?t:Object.keys(t),s=c.length,i=a?[]:{};let o=0;for(let r=0;r{setTimeout(t,e)}))}function E(e,t,a){return"function"==typeof a.structuralSharing?a.structuralSharing(e,t):!1!==a.structuralSharing?m(e,t):t}function A(e,t,a=0){const n=[...e,t];return a&&n.length>a?n.slice(1):n}function b(e,t,a=0){const n=[t,...e];return a&&n.length>a?n.slice(0,-1):n}},1462:(e,t,a)=>{"use strict";a.d(t,{E:()=>n});var n=function(){return null}},7115:(e,t,a)=>{"use strict";a.d(t,{Ht:()=>i,jE:()=>s});var n=a(1609),r=a(790),c=n.createContext(void 0),s=e=>{const t=n.useContext(c);if(e)return e;if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},i=({client:e,children:t})=>(n.useEffect((()=>(e.mount(),()=>{e.unmount()})),[e]),(0,r.jsx)(c.Provider,{value:e,children:t}))},9690:(e,t,a)=>{"use strict";a.d(t,{h:()=>s});var n=a(1609);a(790);function r(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var c=n.createContext(r()),s=()=>n.useContext(c)},4804:(e,t,a)=>{"use strict";a.d(t,{$1:()=>i,LJ:()=>c,wZ:()=>s});var n=a(1609),r=a(5492),c=(e,t)=>{(e.suspense||e.throwOnError)&&(t.isReset()||(e.retryOnMount=!1))},s=e=>{n.useEffect((()=>{e.clearReset()}),[e])},i=({result:e,errorResetBoundary:t,throwOnError:a,query:n})=>e.isError&&!t.isReset()&&!e.isFetching&&n&&(0,r.G)(a,[e.error,n])},4796:(e,t,a)=>{"use strict";a.d(t,{w:()=>c});var n=a(1609),r=n.createContext(!1),c=()=>n.useContext(r);r.Provider},937:(e,t,a)=>{"use strict";a.d(t,{EU:()=>r,iL:()=>c,tu:()=>n});var n=e=>{e.suspense&&"number"!=typeof e.staleTime&&(e.staleTime=1e3)},r=(e,t)=>e?.suspense&&t.isPending,c=(e,t,a)=>t.fetchOptimistic(e).catch((()=>{a.clearReset()}))},4611:(e,t,a)=>{"use strict";a.d(t,{t:()=>u});var n=a(1609),r=a(1795),c=a(9690),s=a(7115),i=a(4796),o=a(4804),l=a(937);function u(e,t,a){const u=(0,s.jE)(a),d=(0,i.w)(),p=(0,c.h)(),m=u.defaultQueryOptions(e);m._optimisticResults=d?"isRestoring":"optimistic",(0,l.tu)(m),(0,o.LJ)(m,p),(0,o.wZ)(p);const[h]=n.useState((()=>new t(u,m))),g=h.getOptimisticResult(m);if(n.useSyncExternalStore(n.useCallback((e=>{const t=d?()=>{}:h.subscribe(r.j.batchCalls(e));return h.updateResult(),t}),[h,d]),(()=>h.getCurrentResult()),(()=>h.getCurrentResult())),n.useEffect((()=>{h.setOptions(m,{listeners:!1})}),[m,h]),(0,l.EU)(m,g))throw(0,l.iL)(m,h,p);if((0,o.$1)({result:g,errorResetBoundary:p,throwOnError:m.throwOnError,query:u.getQueryCache().get(m.queryHash)}))throw g.error;return m.notifyOnChangeProps?g:h.trackResult(g)}},4613:(e,t,a)=>{"use strict";a.d(t,{n:()=>o});var n=a(1609),r=a(4158),c=a(1795),s=a(7115),i=a(5492);function o(e,t){const a=(0,s.jE)(t),[o]=n.useState((()=>new r._(a,e)));n.useEffect((()=>{o.setOptions(e)}),[o,e]);const u=n.useSyncExternalStore(n.useCallback((e=>o.subscribe(c.j.batchCalls(e))),[o]),(()=>o.getCurrentResult()),(()=>o.getCurrentResult())),d=n.useCallback(((e,t)=>{o.mutate(e,t).catch(l)}),[o]);if(u.error&&(0,i.G)(o.options.throwOnError,[u.error]))throw u.error;return{...u,mutate:d,mutateAsync:u.mutate}}function l(){}},5104:(e,t,a)=>{"use strict";a.d(t,{I:()=>c});var n=a(3397),r=a(4611);function c(e,t){return(0,r.t)(e,n.$,t)}},5492:(e,t,a)=>{"use strict";function n(e,t){return"function"==typeof e?e(...t):!!e}a.d(t,{G:()=>n})},3022:(e,t,a)=>{"use strict";function n(e){var t,a,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e)){var c=e.length;for(t=0;tr});const r=function(){for(var e,t,a=0,r="",c=arguments.length;a{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=a(723),t=a(116),n=a(7115),r=a(1462),c=a(6087),s=a(1609),i=a.n(s),o=a(9539),l=a(28),u=a(4440),d=a(5409),p=a(1009),m=a(4537),h=a(1936),g=a(5925),v=a(1671),f=a(5148),y=a(5717),E=a(2970);a(5490);const A=new t.E({defaultOptions:{queries:{staleTime:1/0}}});function b(){const e=(0,o.zy)();return(0,s.useEffect)((()=>window.scrollTo(0,0)),[e]),null}!function(){const t=document.getElementById("jetpack-protect-root");if(null===t)return;const a=i().createElement(n.Ht,{client:A},i().createElement(e.Ay,null,i().createElement(m.m,null,i().createElement(p.Z,null,i().createElement(g.sT,null,i().createElement(h.Ll,null,i().createElement(l.I9,null,i().createElement(b,null),i().createElement(o.BV,null,i().createElement(o.qh,{path:"/setup",element:i().createElement(E.A,null)}),i().createElement(o.qh,{path:"/scan",element:i().createElement(f.A,null)}),i().createElement(o.qh,{path:"/scan/history",element:i().createElement(d.A,null,i().createElement(y.A,null))}),i().createElement(o.qh,{path:"/scan/history/:filter",element:i().createElement(d.A,null,i().createElement(y.A,null))}),i().createElement(o.qh,{path:"/firewall",element:i().createElement(v.A,null)}),i().createElement(o.qh,{path:"*",element:i().createElement(o.C5,{to:"/scan",replace:!0})}))),i().createElement(u.A,null)))))),i().createElement(r.E,{initialIsOpen:!1}));c.createRoot(t).render(a)}()})()})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.js.LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.js.LICENSE.txt deleted file mode 100644 index 08d80297..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.js.LICENSE.txt +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Exposes number format capability - * - * @copyright Copyright (c) 2013 Kevin van Zonneveld (http://kvz.io) and Contributors (http://phpjs.org/authors). - * @license See CREDITS.md - * @see https://github.com/kvz/phpjs/blob/ffe1356af23a6f2512c84c954dd4e828e92579fa/functions/strings/number_format.js - */ - -/** - * @remix-run/router v1.21.0 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */ - -/** - * React Router DOM v6.28.1 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */ - -/** - * React Router v6.28.1 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */ diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.rtl.css b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.rtl.css deleted file mode 100644 index 51f747c5..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/build/index.rtl.css +++ /dev/null @@ -1 +0,0 @@ -._aiMxmJRAw5jRPbZFX57{background-color:var(--jp-gray-90);border-radius:var(--jp-border-radius);color:var(--jp-white);display:flex;overflow:hidden;z-index:1}._aiMxmJRAw5jRPbZFX57.eWgNBUaexiR66ZI1Px4U{border-right:4px solid var(--jp-yellow-20);margin-bottom:calc(var(--spacing-base)*3)}._aiMxmJRAw5jRPbZFX57.ZGELG1CO333FilJXOaeI{left:calc(var(--spacing-base)*3);margin-right:calc(var(--spacing-base)*3);position:fixed;top:calc(var(--spacing-base)*6)}@media(max-width:782px){._aiMxmJRAw5jRPbZFX57.ZGELG1CO333FilJXOaeI{top:calc(var(--spacing-base)*8)}}._aiMxmJRAw5jRPbZFX57 a,._aiMxmJRAw5jRPbZFX57 a:active,._aiMxmJRAw5jRPbZFX57 a:hover,._aiMxmJRAw5jRPbZFX57 a:link,._aiMxmJRAw5jRPbZFX57 a:visited{color:var(--jp-white)}.BnI88X_e8ItF1c9Uozmj{background-color:var(--jp-yellow-30);fill:var(--jp-white);align-items:center;display:flex;justify-content:center;padding:calc(var(--spacing-base)*1.5)}.hRRUwTCPRpurhMwRNZkg .BnI88X_e8ItF1c9Uozmj{background-color:var(--jp-green-50)}.Z6q3IxY_uR1y2lAPTkVF .BnI88X_e8ItF1c9Uozmj{background-color:var(--jp-red)}.eWgNBUaexiR66ZI1Px4U .BnI88X_e8ItF1c9Uozmj{fill:var(--jp-yellow-50);background-color:var(--jp-yellow-5)}.ST8sowTbBVLRPrk4ZQrn{font-size:14px;padding:calc(var(--spacing-base)*1.75)}.eWgNBUaexiR66ZI1Px4U .ST8sowTbBVLRPrk4ZQrn{background-color:var(--jp-yellow-5);color:var(--jp-gray-90)}.lMkO08Vd8YQMfwrwaI8u{fill:var(--jp-gray);align-items:center;background:#0000;border:none;cursor:pointer;display:flex;justify-content:center;padding:calc(var(--spacing-base)*1.5)}._Wc3apZobag_9Ag_THTb{display:flex;justify-content:space-between}.WQVtrU6q0L1Igcj7wCrQ{margin:0;padding:0}.UujoBFTnQNY2cWU2SIsH{font-size:var(--font-headline-medium);font-weight:700;line-height:52px}.TeGO5V_thHw5lDAm1_2M{font-weight:700}.TeGO5V_thHw5lDAm1_2M,.WolQzb2MsSgiNmLtc7_j{font-size:var(--font-headline-small);line-height:40px}.WolQzb2MsSgiNmLtc7_j{font-weight:400}.hUB0JT8p1T2Hw28N6qC8{font-weight:500}.gKZWDv5chz3_O3Syp74H,.hUB0JT8p1T2Hw28N6qC8{font-size:var(--font-title-medium);line-height:32px}.gKZWDv5chz3_O3Syp74H{font-weight:600}.zY2No8Ga4b8shbOQGhnv{font-size:var(--font-title-small);font-weight:500;line-height:30px}.tIj0D1t8Cc892ikmgFPZ{font-size:var(--font-body);font-weight:400;line-height:24px}.KdcN0BnOaVeVhyLRKqhS{font-size:var(--font-body-small);font-weight:400;line-height:24px}.dso3Rh3tl3Xv1GumBktz{font-weight:400}.dso3Rh3tl3Xv1GumBktz,.mQ1UlbN9u4Mg9byO8m7v{font-size:var(--font-body-extra-small);line-height:20px}.mQ1UlbN9u4Mg9byO8m7v{font-weight:700}.PItlW5vRExLnTj4a8eLE{font-size:var(--font-body-extra-small);font-weight:600;line-height:16px}.TwRpPlktzxhmFVeua7P5{margin:calc(var( --spacing-base )*0)}.zVfqx7gyb3o9mxfGynn1{margin-left:calc(var( --spacing-base )*0);margin-right:calc(var( --spacing-base )*0)}.iSHVzNiB9iVleGljaQxy{margin-bottom:calc(var( --spacing-base )*0)}.iSHVzNiB9iVleGljaQxy,.xqDIp6cNVr_E6RXaiPyD{margin-top:calc(var( --spacing-base )*0)}.S8EwaXk1kyPizt6x4WH2{margin-left:calc(var( --spacing-base )*0)}.ODX5Vr1TARoLFkDDFooD{margin-bottom:calc(var( --spacing-base )*0)}.cphJ8dCpfimnky7P2FHg{margin-right:calc(var( --spacing-base )*0)}.PFgIhNxIyiSuNvQjAIYj{margin:calc(var( --spacing-base )*1)}.M2jKmUzDxvJjjVEPU3zn{margin-left:calc(var( --spacing-base )*1);margin-right:calc(var( --spacing-base )*1)}.io15gAh8tMTNbSEfwJKk{margin-bottom:calc(var( --spacing-base )*1)}.io15gAh8tMTNbSEfwJKk,.rcTN5uw9xIEeMEGL3Xi_{margin-top:calc(var( --spacing-base )*1)}.CQSkybjq2TcRM1Xo9COV{margin-left:calc(var( --spacing-base )*1)}.hfqOWgq6_MEGdFE82eOY{margin-bottom:calc(var( --spacing-base )*1)}.I8MxZQYTbuu595yfesWA{margin-right:calc(var( --spacing-base )*1)}.kQkc6rmdpvLKPkyoJtVQ{margin:calc(var( --spacing-base )*2)}.j6vFPxWuu4Jan2ldoxpp{margin-left:calc(var( --spacing-base )*2);margin-right:calc(var( --spacing-base )*2)}.hqr39dC4H_AbactPAkCG{margin-bottom:calc(var( --spacing-base )*2)}.c3dQnMi16C6J6Ecy4283,.hqr39dC4H_AbactPAkCG{margin-top:calc(var( --spacing-base )*2)}.YNZmHOuRo6hU7zzKfPdP{margin-left:calc(var( --spacing-base )*2)}.Db8lbak1_wunpPk8NwKU{margin-bottom:calc(var( --spacing-base )*2)}.ftsYE5J9hLzquQ0tA5dY{margin-right:calc(var( --spacing-base )*2)}.Det4MHzLUW7EeDnafPzq{margin:calc(var( --spacing-base )*3)}.h_8EEAztC29Vve1datb5{margin-left:calc(var( --spacing-base )*3);margin-right:calc(var( --spacing-base )*3)}.YXIXJ0h1k47u6hzK8KcM{margin-bottom:calc(var( --spacing-base )*3)}.YXIXJ0h1k47u6hzK8KcM,.soADBBkcIKCBXzCTuV9_{margin-top:calc(var( --spacing-base )*3)}.zSX59ziEaEWGjnpZa4uV{margin-left:calc(var( --spacing-base )*3)}.yrVTnq_WBMbejg89c2ZQ{margin-bottom:calc(var( --spacing-base )*3)}.UKtHPJnI2cXBWtPDm5hM{margin-right:calc(var( --spacing-base )*3)}.guexok_Tqd5Tf52hRlbT{margin:calc(var( --spacing-base )*4)}.oS1E2KfTBZkJ3F0tN7T6{margin-left:calc(var( --spacing-base )*4);margin-right:calc(var( --spacing-base )*4)}.DN1OhhXi6AoBgEdDSbGd{margin-bottom:calc(var( --spacing-base )*4)}.DN1OhhXi6AoBgEdDSbGd,.ot2kkMcYHv53hLZ4LSn0{margin-top:calc(var( --spacing-base )*4)}.A1krOZZhlQ6Sp8Cy4bly{margin-left:calc(var( --spacing-base )*4)}.pkDbXXXL32237M0hokEh{margin-bottom:calc(var( --spacing-base )*4)}.XXv4kDTGvEnQeuGKOPU3{margin-right:calc(var( --spacing-base )*4)}.yGqHk1a57gaISwkXwXe6{margin:calc(var( --spacing-base )*5)}.X8cghM358X3DkXLc9aNK{margin-left:calc(var( --spacing-base )*5);margin-right:calc(var( --spacing-base )*5)}.GdfSmGwHlFnN2S6xBn1f{margin-bottom:calc(var( --spacing-base )*5)}.GdfSmGwHlFnN2S6xBn1f,.yqeuzwyGQ7zG0avrGqi_{margin-top:calc(var( --spacing-base )*5)}.g9emeCkuHvYhveiJbfXO{margin-left:calc(var( --spacing-base )*5)}.Lvk3dqcyHbZ07QCRlrUQ{margin-bottom:calc(var( --spacing-base )*5)}.r3yQECDQ9qX0XZzXlVAg{margin-right:calc(var( --spacing-base )*5)}.aQhlPwht2Cz1X_63Miw0{margin:calc(var( --spacing-base )*6)}.JyHb0vK3wJgpblL9s5j8{margin-left:calc(var( --spacing-base )*6);margin-right:calc(var( --spacing-base )*6)}.cY2gULL1lAv6WPNIRuf3{margin-bottom:calc(var( --spacing-base )*6)}.NBWQ9Lwhh_fnry3lg_p7,.cY2gULL1lAv6WPNIRuf3{margin-top:calc(var( --spacing-base )*6)}.yIOniNe5E40C8fWvBm5V{margin-left:calc(var( --spacing-base )*6)}.t30usboNSyqfQWIwHvT3{margin-bottom:calc(var( --spacing-base )*6)}.Nm_TyFkYCMhOoghoToKJ{margin-right:calc(var( --spacing-base )*6)}.C4qJKoBXpgKtpmrqtEKB{margin:calc(var( --spacing-base )*7)}.S93Srbu6NQ_PBr7DmTiD{margin-left:calc(var( --spacing-base )*7);margin-right:calc(var( --spacing-base )*7)}.fJj8k6gGJDks3crUZxOS{margin-bottom:calc(var( --spacing-base )*7)}.cW6D6djs7Ppm7fD7TeoV,.fJj8k6gGJDks3crUZxOS{margin-top:calc(var( --spacing-base )*7)}.DuCnqNfcxcP3Z__Yo5Ro{margin-left:calc(var( --spacing-base )*7)}.im8407m2fw5vOg7O2zsw{margin-bottom:calc(var( --spacing-base )*7)}.G0fbeBgvz2sh3uTP9gNl{margin-right:calc(var( --spacing-base )*7)}.kvW3sBCxRxUqz1jrVMJl{margin:calc(var( --spacing-base )*8)}.tOjEqjLONQdkiYx_XRnw{margin-left:calc(var( --spacing-base )*8);margin-right:calc(var( --spacing-base )*8)}.op5hFSx318zgxsoZZNLN{margin-bottom:calc(var( --spacing-base )*8)}.c9WfNHP6TFKWIfLxv52J,.op5hFSx318zgxsoZZNLN{margin-top:calc(var( --spacing-base )*8)}.sBA75QqcqRwwYSHJh2wc{margin-left:calc(var( --spacing-base )*8)}.GpL6idrXmSOM6jB8Ohsf{margin-bottom:calc(var( --spacing-base )*8)}.HbtWJoQwpgGycz8dGzeT{margin-right:calc(var( --spacing-base )*8)}.uxX3khU88VQ_Ah49Ejsa{padding:calc(var( --spacing-base )*0)}.KX0FhpBKwKzs9fOUdbNz{padding-left:calc(var( --spacing-base )*0);padding-right:calc(var( --spacing-base )*0)}.PfK8vKDyN32dnimlzYjz{padding-bottom:calc(var( --spacing-base )*0)}.PfK8vKDyN32dnimlzYjz,.emxLHRjQuJsImnPbQIzE{padding-top:calc(var( --spacing-base )*0)}.kJ8WzlpTVgdViXt8ukP9{padding-left:calc(var( --spacing-base )*0)}.tg_UIUI11VBzrTAn2AzJ{padding-bottom:calc(var( --spacing-base )*0)}.uczvl8kaz84oPQJ2DB2R{padding-right:calc(var( --spacing-base )*0)}.o7UHPcdVK3lt7q3lqV4o{padding:calc(var( --spacing-base )*1)}.IDqEOxvDoYrFYxELPmtX{padding-left:calc(var( --spacing-base )*1);padding-right:calc(var( --spacing-base )*1)}.DdywPW2qSYlu2pt8tpO2{padding-bottom:calc(var( --spacing-base )*1)}.DdywPW2qSYlu2pt8tpO2,.npy3hw4A5QSkDicb2CJJ{padding-top:calc(var( --spacing-base )*1)}.LgbptTApNY5NwLQvEFAt{padding-left:calc(var( --spacing-base )*1)}.WZQy2SZuZso59bUsXXyl{padding-bottom:calc(var( --spacing-base )*1)}.o331apInxNunbYB3SfPE{padding-right:calc(var( --spacing-base )*1)}.fMPIyD9Vqki1Lrc_yJnG{padding:calc(var( --spacing-base )*2)}.i2pMcTcdrr10IQoiSm_L{padding-left:calc(var( --spacing-base )*2);padding-right:calc(var( --spacing-base )*2)}.eA702gn32kwptiI1obXH{padding-bottom:calc(var( --spacing-base )*2)}.eA702gn32kwptiI1obXH,.o9bGieUKcYc8o0Ij9oZX{padding-top:calc(var( --spacing-base )*2)}.SwZcFez1RDqWsOFjB5iG{padding-left:calc(var( --spacing-base )*2)}.eHpLc_idmuEqeqCTvqkN{padding-bottom:calc(var( --spacing-base )*2)}.vU39i2B4P1fUTMB2l6Vo{padding-right:calc(var( --spacing-base )*2)}.JHWNzBnE29awhdu5BEh1{padding:calc(var( --spacing-base )*3)}.X72lGbb56L3KFzC2xQ9N{padding-left:calc(var( --spacing-base )*3);padding-right:calc(var( --spacing-base )*3)}.BzfNhRG8wXdCEB5ocQ6e{padding-bottom:calc(var( --spacing-base )*3)}.BzfNhRG8wXdCEB5ocQ6e,.srV0KSDC83a2fiimSMMQ{padding-top:calc(var( --spacing-base )*3)}.lUWfkmbQjCskhcNwkyCm{padding-left:calc(var( --spacing-base )*3)}.Ts0dIlc3aTSL7V4cIHis{padding-bottom:calc(var( --spacing-base )*3)}.CzlqQXXhX6MvorArFZ8B{padding-right:calc(var( --spacing-base )*3)}.TqMPkQtR_DdZuKb5vBoV{padding:calc(var( --spacing-base )*4)}.a7UrjhI69Vetlcj9ZVzz{padding-left:calc(var( --spacing-base )*4);padding-right:calc(var( --spacing-base )*4)}.StEhBzGs2Gi5dDEkjhAv{padding-bottom:calc(var( --spacing-base )*4)}.FGneZfZyvYrt1dG0zcnm,.StEhBzGs2Gi5dDEkjhAv{padding-top:calc(var( --spacing-base )*4)}.APEH216rpdlJWgD2fHc8{padding-left:calc(var( --spacing-base )*4)}.oGwXC3ohCic9XnAj6x69{padding-bottom:calc(var( --spacing-base )*4)}.U6gnT9y42ViPNOcNzBwb{padding-right:calc(var( --spacing-base )*4)}.IpdRLBwnHqbqFrixgbYC{padding:calc(var( --spacing-base )*5)}.HgNeXvkBa9o3bQ5fvFZm{padding-left:calc(var( --spacing-base )*5);padding-right:calc(var( --spacing-base )*5)}.tJtFZM3XfPG9v9TSDfN1{padding-bottom:calc(var( --spacing-base )*5)}.PdifHW45QeXYfK568uD8,.tJtFZM3XfPG9v9TSDfN1{padding-top:calc(var( --spacing-base )*5)}.mbLkWTTZ0Za_BBbFZ5b2{padding-left:calc(var( --spacing-base )*5)}.vVWpZpLlWrkTt0hMk8XU{padding-bottom:calc(var( --spacing-base )*5)}.RxfaJj5a1Nt6IavEo5Zl{padding-right:calc(var( --spacing-base )*5)}.SppJULDGdnOGcjZNCYBy{padding:calc(var( --spacing-base )*6)}.palY2nLwdoyooPUm9Hhk{padding-left:calc(var( --spacing-base )*6);padding-right:calc(var( --spacing-base )*6)}.WYw1JvZC0ppLdvSAPhr_{padding-bottom:calc(var( --spacing-base )*6)}.WYw1JvZC0ppLdvSAPhr_,.YEEJ9b90ueQaPfiU8aeN{padding-top:calc(var( --spacing-base )*6)}.QE0ssnsKvWJMqlhPbY5u{padding-left:calc(var( --spacing-base )*6)}.n8yA3jHlMRyLd5UIfoND{padding-bottom:calc(var( --spacing-base )*6)}.tXHmxYnHzbwtfxEaG51n{padding-right:calc(var( --spacing-base )*6)}.kBTsPKkO_3g_tLkj77Um{padding:calc(var( --spacing-base )*7)}.RyhrFx6Y1FGDrGAAyaxm{padding-left:calc(var( --spacing-base )*7);padding-right:calc(var( --spacing-base )*7)}.CBwRpB0bDN3iEdQPPMJO{padding-bottom:calc(var( --spacing-base )*7)}.CBwRpB0bDN3iEdQPPMJO,.vQVSq6SvWKbOMu6r4H6b{padding-top:calc(var( --spacing-base )*7)}.oBy5__aEADMsH46mrgFX{padding-left:calc(var( --spacing-base )*7)}.KVEXoJqf1s92j0JMdNmN{padding-bottom:calc(var( --spacing-base )*7)}.ZMXGNrNaKW3k_3TLz0Fq{padding-right:calc(var( --spacing-base )*7)}.tuiR9PhkHXhGyEgzRZRI{padding:calc(var( --spacing-base )*8)}.U7454qyWkQNa2iaSJziu{padding-left:calc(var( --spacing-base )*8);padding-right:calc(var( --spacing-base )*8)}.VLYIv2GVocjuN93e8HC8{padding-bottom:calc(var( --spacing-base )*8)}.VLYIv2GVocjuN93e8HC8,.X1rm9DQ1zLGLfogja5Gn{padding-top:calc(var( --spacing-base )*8)}.JS7G6kAuqJo5GIuF8S5t{padding-left:calc(var( --spacing-base )*8)}.Y8F9ga1TDCMbM1lj4gUz{padding-bottom:calc(var( --spacing-base )*8)}.AJuyNGrI63BOWql719H8{padding-right:calc(var( --spacing-base )*8)}.zI5tJ_qhWE6Oe6Lk75GY{--wp-admin-theme-color:var(--jp-black);--wp-admin-theme-color-darker-10:var(--jp-black-80);--wp-admin-theme-color-darker-20:var(--jp-black-80);--wp-admin-border-width-focus:1.51px;border-radius:var(--jp-border-radius);font-weight:600;justify-content:center}.zI5tJ_qhWE6Oe6Lk75GY.tuBt2DLqimiImoqVzPqo{height:calc(var(--spacing-base)*5);padding:var(--spacing-base);width:calc(var(--spacing-base)*5)}.zI5tJ_qhWE6Oe6Lk75GY.tuBt2DLqimiImoqVzPqo>svg:first-child{margin:0;padding:0}.zI5tJ_qhWE6Oe6Lk75GY.tuBt2DLqimiImoqVzPqo.Na39I683LAaSA99REg14{height:calc(var(--spacing-base)*4);min-width:calc(var(--spacing-base)*4);padding:calc(var(--spacing-base)/2);width:calc(var(--spacing-base)*4)}.zI5tJ_qhWE6Oe6Lk75GY.ipS7tKy9GntCS4R3vekF:not(.tuBt2DLqimiImoqVzPqo){font-size:var(--font-body);height:auto;line-height:24px;padding:var(--spacing-base) calc(var(--spacing-base)*3)}.zI5tJ_qhWE6Oe6Lk75GY.ipS7tKy9GntCS4R3vekF:not(.tuBt2DLqimiImoqVzPqo).paGLQwtPEaJmtArCcmyK{padding:var(--spacing-base) calc(var(--spacing-base)*2)}.zI5tJ_qhWE6Oe6Lk75GY.Na39I683LAaSA99REg14:not(.tuBt2DLqimiImoqVzPqo){font-size:var(--font-body-extra-small);height:auto;line-height:20px;padding:calc(var(--spacing-base)/2) var(--spacing-base)}.zI5tJ_qhWE6Oe6Lk75GY.Na39I683LAaSA99REg14:not(.tuBt2DLqimiImoqVzPqo).paGLQwtPEaJmtArCcmyK>svg:first-child{margin-left:calc(var(--spacing-base)/2)}.zI5tJ_qhWE6Oe6Lk75GY.Na39I683LAaSA99REg14:not(.tuBt2DLqimiImoqVzPqo)>.components-spinner{height:20px}.zI5tJ_qhWE6Oe6Lk75GY.lZAo6_oGfclXOO9CC6Rd{font-weight:400}.zI5tJ_qhWE6Oe6Lk75GY.xJDOiJxTt0R_wSl8Ipz_{min-width:100%}.zI5tJ_qhWE6Oe6Lk75GY.is-primary:disabled,.zI5tJ_qhWE6Oe6Lk75GY.is-secondary:disabled{background:var(--jp-gray);color:var(--jp-gray-20)}.zI5tJ_qhWE6Oe6Lk75GY.is-secondary{background:var(--jp-white);box-shadow:inset 0 0 0 1.51px var(--jp-black)}.zI5tJ_qhWE6Oe6Lk75GY.is-secondary:active:not(:disabled),.zI5tJ_qhWE6Oe6Lk75GY.is-secondary:hover:not(:disabled){background:var(--jp-gray-0)}.zI5tJ_qhWE6Oe6Lk75GY.is-link.Na39I683LAaSA99REg14,.zI5tJ_qhWE6Oe6Lk75GY.is-link.ipS7tKy9GntCS4R3vekF{padding:0}.zI5tJ_qhWE6Oe6Lk75GY.is-link:hover:not(:disabled){text-decoration-thickness:3px}.zI5tJ_qhWE6Oe6Lk75GY.is-link:focus:not(:disabled){text-decoration-line:none}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary{box-shadow:none}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary:not(:disabled){background:var(--jp-red-50);box-shadow:inset 0 0 0 1px var(--jp-red-50);color:var(--jp-white)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary:hover:not(:disabled){background:var(--jp-red-60);box-shadow:inset 0 0 0 1px var(--jp-red-60)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary:focus:not(:disabled){background:var(--jp-red-70);box-shadow:inset 0 0 0 1px var(--jp-white),0 0 0 var(--wp-admin-border-width-focus) var(--jp-red-70);color:var(--jp-white)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary:active:not(:disabled){background:var(--jp-red-50)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary{box-shadow:none}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary:not(:disabled){background:var(--jp-white);box-shadow:inset 0 0 0 1.5px var(--jp-red-50);color:var(--jp-red-50)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary:hover:not(:disabled){background:var(--jp-red-0);box-shadow:inset 0 0 0 1.5px var(--jp-red-60);color:var(--jp-red-60)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary:focus:not(:disabled){box-shadow:inset 0 0 0 1px var(--jp-white),0 0 0 var(--wp-admin-border-width-focus) var(--jp-red-70);color:var(--jp-red-70)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary:active:not(:disabled){background:var(--jp-gray-0)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-link:not(:disabled){color:var(--jp-red-50)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-link:hover:not(:disabled){box-shadow:none;color:var(--jp-red-60)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-link:focus:not(:disabled){box-shadow:inset 0 0 0 1px var(--jp-white),0 0 0 var(--wp-admin-border-width-focus) var(--jp-red-70);color:var(--jp-red-70)}.zI5tJ_qhWE6Oe6Lk75GY.q_tVWqMjl39RcY6WtQA6{position:relative}.zI5tJ_qhWE6Oe6Lk75GY.q_tVWqMjl39RcY6WtQA6.has-icon{justify-content:center}.zI5tJ_qhWE6Oe6Lk75GY.q_tVWqMjl39RcY6WtQA6>:not(.components-spinner){visibility:hidden}.zI5tJ_qhWE6Oe6Lk75GY.q_tVWqMjl39RcY6WtQA6>.components-spinner{margin:0;position:absolute}.CDuBjJp_8jxzx5j6Nept{margin-right:calc(var(--spacing-base)/2)}.kdsaL7c4bpTwf_A4fIUT{padding-bottom:calc(var(--spacing-base)*6);padding-top:calc(var(--spacing-base)*6);text-align:center}.b0eN3as5AgxQW7EAkarg{margin-bottom:0}@keyframes rotate-spinner{to{transform:rotate(-1turn)}}.jp-components-spinner{align-items:center;display:flex}.jp-components-spinner__inner,.jp-components-spinner__outer{animation:3s linear infinite;animation-name:rotate-spinner;border:.1em solid #0000;border-radius:50%;box-sizing:border-box;margin:auto}.jp-components-spinner__outer{border-top-color:#fff}.jp-components-spinner__inner{border-left-color:#fff;border-top-color:#fff;height:100%;opacity:.4;width:100%}.NHzH3tt6CypjZ92CvK9x{border:1px solid var(--jp-gray);border-radius:var(--jp-border-radius);display:flex;padding:calc(var(--spacing-base)*2)}.NHzH3tt6CypjZ92CvK9x:first-of-type{border-top-left-radius:var(--jp-border-radius);border-top-right-radius:var(--jp-border-radius)}.NHzH3tt6CypjZ92CvK9x:last-of-type{border-bottom-left-radius:var(--jp-border-radius);border-bottom-right-radius:var(--jp-border-radius)}.NHzH3tt6CypjZ92CvK9x+.NHzH3tt6CypjZ92CvK9x{border-top:0}.D9zvYDUrOP_zwSm0yJMs{margin-left:calc(var(--spacing-base)*2);min-width:24px}._XISfmbjoVlqhB61hHYn{width:100%}.AQDPBnMZFu7BOBuo8mYW{font-size:18px;font-weight:600;line-height:24px;margin-bottom:0}.cZ9s5eCAZe3R82Y6Ru3z{color:var(--jp-gray-80);font-size:14px;line-height:21px}.AKnbWQiViZ2O_dwCV8Fw,.W6alQ2_S5Rh06djX9m27{align-self:center;margin-left:var(--spacing-base);margin-right:calc(var(--spacing-base)*2)}.VLE2X0rP3Ug4QHebdiJd{background-color:var(--jp-gray-0);border-radius:4px;color:var(--jp-gray-80);display:inline-block;font-size:13px;font-weight:400;line-height:16px;padding:4px 8px}.VLE2X0rP3Ug4QHebdiJd.hEfxH6nau4tQkeE4BNms{background-color:var(--jp-green-5);color:var(--jp-green-50)}.VLE2X0rP3Ug4QHebdiJd.Snl4I6aKbXFIrcWaSIC0{background-color:var(--jp-yellow-5);color:var(--jp-yellow-60)}.VLE2X0rP3Ug4QHebdiJd.zvZFUdy480Xv3IHYbX6a{background-color:var(--jp-red-5);color:var(--jp-red-70)}.uUEJGMrSV3XoBwX5xEwA{display:flex;justify-content:space-between}.sQkG5Cu80gPaeFj3L_wa{margin-bottom:calc(var(--spacing-base)*5)}.oIl6GCMeUnzE0inXbuj9{display:flex;justify-content:space-between}.RP2MVoGqaCFXPKZhhxQ1{margin-bottom:calc(var(--spacing-base)*5)}.YpEs8b7KE7fzVuXUbOEb{display:flex;justify-content:space-between}.EqpwvErHtRi_WQkJKgi1{border:1px solid var(--jp-gray);border-radius:var(--jp-border-radius);display:flex;margin-bottom:calc(var(--spacing-base)*3);padding:calc(var(--spacing-base)*2)}.EicvN1QaJu5OJLzdUN5A{margin-left:calc(var(--spacing-base)*2);min-width:24px}.b7ynAmUwGlxK_vxyIN0y{width:100%}.uSV9HYRxjL4S6zIZDlqP{font-size:18px;font-weight:600;line-height:24px;margin-bottom:0}.XpW8Mvw_XFEbqxUdw155{color:var(--jp-gray-80);font-size:14px;line-height:21px}.Fkj60BmQ5sUo9zHcJwVv{align-self:center;margin-left:var(--spacing-base);margin-right:calc(var(--spacing-base)*2)}.XLzPr74ad3osCq9kxy2q{display:flex;justify-content:space-between}.jNlU3vgp4xEGwmX5aTyK{background-color:var(--jp-gray-5)}.gE8s4nh3f7iGIBrFeyCT{list-style-type:disc;padding-right:calc(var(--spacing-base)*2.5)}.L9hh_sX51PzO41icwJlh{border:1px solid var(--jp-gray);border-radius:var(--jp-border-radius);display:flex;margin-bottom:calc(var(--spacing-base)*3);padding:calc(var(--spacing-base)*2)}.o8E4Bv6U0d7USFxSjRCj{margin-left:calc(var(--spacing-base)*2);min-width:24px}.sT31awD6bHO8KJewvmaO{width:100%}.VVTRIG51r8ORUIBPs5gN{font-size:18px;font-weight:600;line-height:24px;margin-bottom:0}.AiaWRbRLFT9xvP9vn5jA{color:var(--jp-gray-80);font-size:14px;line-height:21px}.MP1wWkqvqfvAc7Izl7x4{align-self:center;margin-left:var(--spacing-base);margin-right:calc(var(--spacing-base)*2)}.i9X_KxEJiGpRT7q_RU6i{display:flex;justify-content:space-between}.WtVEv641JBaLl929sZq2{align-items:flex-start;background-color:#00000040;bottom:0;display:flex;justify-content:center;left:0;overflow-y:auto;padding-top:calc(var(--spacing-base)*12 + 2px);position:fixed;right:0;top:0;z-index:1000001}.G0aPt7WmA1rkUE0wcTno{background:var(--jp-white);border:1px solid var(--jp-gray);border-radius:calc(var(--jp-border-radius)*2);box-shadow:0 8px 20px #00000040;padding:calc(var(--spacing-base)*4);position:relative;width:616px}.VkrhWjfEIlIwYEumycbP{background:none;border:none;cursor:pointer;left:calc(var(--spacing-base)*3);padding:0;position:absolute;top:calc(var(--spacing-base)*3)}.yFzeV4cmWRbZKk5tIyEw{display:block}.lyrXe0pA852TUmyekDb5{display:flex}.KgEeDTKgTC5ZjzYlbTqN{color:var(--jp-black);font-size:var(--font-body);line-height:1.5;margin-left:calc(var(--spacing-base)*4);padding:var(--spacing-base) 0;text-decoration:none}.KgEeDTKgTC5ZjzYlbTqN:last-child{margin-left:0}.KgEeDTKgTC5ZjzYlbTqN:focus,.KgEeDTKgTC5ZjzYlbTqN:hover{border-bottom-color:var(--jp-green);box-shadow:none;color:var(--jp-green)}.Lv4WoNVkeJntqvUyG4dX{border-bottom:1px solid var(--jp-black)}.YXKeyNLeZvIdah_5_5GR{white-space:nowrap}.vvXnRXxrU1kP1KsdSr4J{margin-top:calc(var(--spacing-base)*3*-1)}.aDCTkUFaJEeZzYYE6qv5{background-color:var(--jp-green);border-radius:32px;color:var(--jp-white);font-size:12px;letter-spacing:-2%;line-height:1;margin-right:var(--spacing-base);padding:calc(var(--spacing-base)/2) var(--spacing-base);position:relative;top:-1px}.jp-dashboard-footer{align-items:center;color:var(--jp-black);display:flex;flex-wrap:wrap;font-size:var(--font-body-extra-small);line-height:1.333;max-width:1128px;width:100%}.jp-dashboard-footer a{text-decoration:none}.jp-dashboard-footer a:any-link,.jp-dashboard-footer a[role=button]{color:inherit}.jp-dashboard-footer a:hover{text-decoration:underline;text-decoration-thickness:1.5px}.jp-dashboard-footer a:focus{box-shadow:none;outline-width:0}.jp-dashboard-footer a:focus-visible{border-radius:2px;box-shadow:none;outline:1.5px solid currentColor;outline-offset:3px}.jp-dashboard-footer.is-sm>ul{gap:.125rem}.jp-dashboard-footer.is-md,.jp-dashboard-footer.is-sm>ul{align-items:flex-start;flex-direction:column}.jp-dashboard-footer>ul{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;list-style:none;margin:0;padding:0;width:100%}.jp-dashboard-footer>ul>li{margin-bottom:0}.jp-dashboard-footer>ul>li>a{align-items:center;display:flex;gap:.25rem;min-height:44px}.jp-dashboard-footer__accessible-external-link{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;overflow-wrap:normal;padding:0;position:absolute;width:1px}.jp-dashboard-footer__jp-item{font-weight:600;padding-inline-end:1rem}.jp-dashboard-footer.is-sm .jp-dashboard-footer__jp-item{padding-bottom:1rem}.jp-dashboard-footer.is-lg .jp-dashboard-footer__a8c-item{margin-inline-start:auto}.jp-dashboard-footer.is-sm .jp-dashboard-footer__a8c-item{padding-top:1rem}.jp-dashboard-footer__a8c-item>a,.jp-dashboard-footer__jp-item>a{text-decoration:none}@media(max-width:599px){.RuVLl3q4lxTQa3wbhBJB{grid-column-end:span 1}.f9LZTRG4MMK42rS89afW{grid-column-start:1}.bHe_zKxjjpUwHw_MdYE1{grid-column-end:2}.QZbNrOqE2aNSn50xVhpU{grid-column-end:span 2}.ev7W3z7zVYPeHAlYqZjf{grid-column-start:2}.NJWd1m_e7lOiPYru2ZMP{grid-column-end:3}.Xc6nt1Qc1DI0Z2A3gt1r{grid-column-end:span 3}.UIcN_GXiPRoIsin8Kohg{grid-column-start:3}.GRKCyqb5LufCSCgykKFc{grid-column-end:4}.i_qTq8gqhhC3vIUepVRB{grid-column-end:span 4}.G3qaZ3Jpbvam_1XvGxgc{grid-column-start:4}.VRCNYKZtO9zukEwmgP1y{grid-column-end:5}}@media(min-width:600px)and (max-width:959px){.tRm008K_WJL79WoNZTNL{grid-column-end:span 1}.l5T2P_bgKts4tdaRkS1d{grid-column-start:1}.zOCxfLZpF6BlgC7a_Yq1{grid-column-end:2}.F80DdgVn0m5OpvtSQWka{grid-column-end:span 2}.oI1c7JYfiJtMQHbhngtU{grid-column-start:2}.pMQtA_4jh1_1lVknqEP5{grid-column-end:3}.VenqMpdgyKQVUNNQcfqd{grid-column-end:span 3}.seNYL99uoczf9V4MxBxT{grid-column-start:3}.YKfF1HFhI9KygA5l3b2J{grid-column-end:4}.yAi0Cv1xDWkoqsaUhvhR{grid-column-end:span 4}.ubhnyZOnkgxNhh6XtVWv{grid-column-start:4}.RGOPGQbWMJ9Ei5oFxS7X{grid-column-end:5}.Sz1E2aWbX483ijdi6yge{grid-column-end:span 5}.tku6_bRYrX9tMbgYGmIl{grid-column-start:5}.b5JHttOhSEcI1WBlqAjk{grid-column-end:6}.FboSx5MoKTAWbxXyYlCw{grid-column-end:span 6}.Jhs8yEEmodG30edbJvag{grid-column-start:6}.IpzbbKVqEqPcfIGkXkwt{grid-column-end:7}.mhCPwfAZ4Kmm_empzJAq{grid-column-end:span 7}.x034ilrJF7rO9UJB2rI1{grid-column-start:7}.Wt8t2e16viRrOJ1lLA5v{grid-column-end:8}.S6pIrEy9AMLKx9bgh_Ae{grid-column-end:span 8}.kEfI4tGyuWfHTlRnvIab{grid-column-start:8}.PUzX4RRsKq1dnsz3gebS{grid-column-end:9}}@media(min-width:960px){.X_pdcLJikd8LS_YAdJlB{grid-column-end:span 1}.tl936d14Huby4khYp05X{grid-column-start:1}.hnge0LnR69d3NXEtEE1t{grid-column-end:2}.fj0NUMuyZQcPNgKcjp5Z{grid-column-end:span 2}.R2ncBX7a2NigdYCcV1OX{grid-column-start:2}.t8vMSDVYno9k9itRwnXb{grid-column-end:3}.wsDuEN2GqHx6qzo8dUdk{grid-column-end:span 3}.cIEVPUweWtLBy3xaXnMx{grid-column-start:3}.fajUWBwu1m2B479j3jmz{grid-column-end:4}.YR0c7fQTgMkDdWzwSyLp{grid-column-end:span 4}.xlwp8BmplxkKNMI7gamo{grid-column-start:4}._C4O1w9DUqx1m3gPf8aA{grid-column-end:5}.Z54F1hAErckAIrKlxnXW{grid-column-end:span 5}.ezSDWkRHmKSxDJXxuiOH{grid-column-start:5}.T0ChoeAjGJjkkNrYhD4g{grid-column-end:6}.qtMoMPF6yHvGJnWHSsde{grid-column-end:span 6}.gdoywN5VPiWERfIBqkph{grid-column-start:6}.wUev_VH5uf_pwFFlbnAU{grid-column-end:7}.egIPDFJsOpownTClq9XP{grid-column-end:span 7}.yGhp9yoAW7k0kQik9AB7{grid-column-start:7}.SJ43U9mR5wUg5V2qBeQA{grid-column-end:8}.cTuyHfMwSUJxN_HdIEgd{grid-column-end:span 8}.smCr8DaIagcumdvdldiK{grid-column-start:8}.T03NHzQJvzwL6wAfIiTL{grid-column-end:9}.pMvxM3RJGjqyNdf9qg1Y{grid-column-end:span 9}.iIVpNRwEnQ_JI5gpp9EN{grid-column-start:9}.ZbQ4u4vGSX5rJOje4uGL{grid-column-end:10}.gKb5wuIDAlKGbrjK2vxy{grid-column-end:span 10}.Z7pINdImE2WJiYnZBTqm{grid-column-start:10}.ZTxp6qpvwurMdOnLLSz1{grid-column-end:11}.NnQTlbfnxPDR6cQ7rygg{grid-column-end:span 11}.O137wZd6Yl0olSA9PsXR{grid-column-start:11}.zf2OJtQ2MPz6SDoh6CB0{grid-column-end:12}.U3H6UHW6HqRt9hdzVg3O{grid-column-end:span 12}.zynnNeS_ZBTxABcVpUQH{grid-column-start:12}.vI8tltFZtFUNAy9Iag9s{grid-column-end:13}}.SqdhUZkXCRuIpErj1B3z{--max-container-width:1128px;--vertical-gutter:24px;--horizontal-spacing:8px;column-gap:var(--vertical-gutter);display:grid;margin:0 auto;max-width:var(--max-container-width);width:100%}@media(max-width:599px){.SqdhUZkXCRuIpErj1B3z{grid-template-columns:repeat(4,minmax(0,1fr));padding:0 16px}}@media(min-width:600px)and (max-width:959px){.SqdhUZkXCRuIpErj1B3z{grid-template-columns:repeat(8,minmax(0,1fr));padding:0 18px}}@media(min-width:960px){.SqdhUZkXCRuIpErj1B3z{grid-template-columns:repeat(12,minmax(0,1fr));padding:0 24px}}.SqdhUZkXCRuIpErj1B3z.OZC_9a1LhpWF9dv15Gdh{max-width:none;padding:unset}.sexr0jUxC1jVixdKiDnC{margin-right:-20px}@media(max-width:782px){.sexr0jUxC1jVixdKiDnC{margin-right:-10px}}.sexr0jUxC1jVixdKiDnC.vKQ11sLeAM45M04P1ccj{background-color:var(--jp-white)}.sexr0jUxC1jVixdKiDnC .iWGAhN9gOB48g0jEO1OQ{align-items:center;display:flex;gap:8px}.sexr0jUxC1jVixdKiDnC .JOYmuxQjG4FArIIUxJfA{background:#d63638;color:#fff;cursor:pointer;font-size:9px;font-weight:700;letter-spacing:.2em;text-shadow:none;text-transform:uppercase}.rigH8UdiDrmmSLQMUurD{background-color:var(--jp-white);border:1px solid var(--jp-gray-10);border-radius:var(--jp-border-radius);color:var(--jp-black);display:block;font-size:var(--font-body);letter-spacing:-.02em;line-height:1.5;padding:var(--spacing-base) calc(var(--spacing-base)*1.5);transition:box-shadow .1s ease-out;width:100%}.rigH8UdiDrmmSLQMUurD::placeholder{color:var(--jp-gray-20)}.rigH8UdiDrmmSLQMUurD:focus{box-shadow:0 0 0 2px var(--jp-green-5)}.rigH8UdiDrmmSLQMUurD:focus,.rigH8UdiDrmmSLQMUurD:hover:not(:disabled){border:1px solid var(--jp-green)}.rigH8UdiDrmmSLQMUurD:disabled{background-color:var(--jp-gray-0);color:var(--jp-gray-30)}.V8FDM08CpcwQs4UwN2nI{color:var(--jp-black);display:block;font-size:var(--font-title-small);font-weight:600;margin-bottom:var(--spacing-base)}.WjKn66iJO4hAZYE6o9b3{font-weight:700}.IS5K46VvD7VX5YtlwbMI,.eDfoDi2nArFY_KiYIwKh{margin-bottom:calc(var(--spacing-base)*7);margin-top:calc(var(--spacing-base)*7)}.XKUO6pX9vFbOUplFfCW2{margin-top:calc(var(--spacing-base)*3)}.gridicon{fill:currentColor;display:inline-block}.gridicon.needs-offset g{transform:translate(-1px,1px)}.gridicon.needs-offset-x g{transform:translate(-1px)}.gridicon.needs-offset-y g{transform:translateY(1px)}:root{--font-title-large:36px;--font-title-small:24px;--font-body:16px;--font-label:12px;--jp-black:#000;--jp-black-80:#2c3338;--jp-white:#fff;--jp-white-off:#f9f9f6;--jp-gray:#dcdcde;--jp-gray-0:#f6f7f7;--jp-gray-5:#dcdcde;--jp-gray-10:#c3c4c7;--jp-gray-20:#a7aaad;--jp-gray-30:#8c8f94;--jp-gray-40:#787c82;--jp-gray-50:#646970;--jp-gray-60:#50575e;--jp-gray-70:#3c434a;--jp-gray-80:#2c3338;--jp-gray-90:#1d2327;--jp-gray-100:#101517;--jp-gray-off:#e2e2df;--jp-yellow-5:#f5e6b3;--jp-yellow-10:#f2cf75;--jp-yellow-40:#c08c00;--jp-orange-20:#faa754;--jp-blue-5:#ced9f2;--jp-red-0:#f7ebec;--jp-red-50:#d63638;--jp-red-60:#b32d2e;--jp-red-80:#8a2424;--jp-red:#d63639;--jp-pink:#c9356e;--jp-green-0:#f0f2eb;--jp-green-5:#d0e6b8;--jp-green-10:#9dd977;--jp-green-20:#64ca43;--jp-green-30:#2fb41f;--jp-green-40:#069e08;--jp-green-50:#008710;--jp-green-60:#007117;--jp-green-70:#005b18;--jp-green-80:#004515;--jp-green-90:#003010;--jp-green-100:#001c09;--jp-green:#069e08;--jp-green-primary:var(--jp-green-40);--jp-green-secondary:var(--jp-green-30);--jp-border-radius:4px;--jp-border-radius-rna:8px;--jp-menu-border-height:1px;--jp-underline-thickness:2px;--jp-modal-padding-large:32px;--jp-modal-padding:24px;--jp-modal-padding-small:16px;--jp-modal-radius:8px;--jp-button-padding:8px;--jp-button-radius:4px;--jp-gap:16px;--jp-highlight:#3858e9}:where(body){font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;margin:0;min-height:100%;padding:0}.jp-wrap{align-items:center;display:flex;flex-wrap:wrap;margin:0 auto;max-width:1128px}.jp-row{display:grid;grid-gap:24px;grid-template-columns:repeat(4,1fr);margin:0 16px;width:100%}@media(min-width:600px){.jp-row{grid-template-columns:repeat(8,1fr);margin:0 18px}}@media(min-width:960px){.jp-row{grid-template-columns:repeat(12,1fr);margin:0 24px;max-width:1128px}}.sm-col-span-1{grid-column-end:span 1}.sm-col-span-2{grid-column-end:span 2}.sm-col-span-3{grid-column-end:span 3}.sm-col-span-4{grid-column-end:span 4}@media(min-width:600px){.md-col-span-1{grid-column-end:span 1}.md-col-span-2{grid-column-end:span 2}.md-col-span-3{grid-column-end:span 3}.md-col-span-4{grid-column-end:span 4}.md-col-span-5{grid-column-end:span 5}.md-col-span-6{grid-column-end:span 6}.md-col-span-7{grid-column-end:span 7}.md-col-span-8{grid-column-end:span 8}}@media(min-width:960px){.lg-col-span-1{grid-column-end:span 1}.lg-col-span-2{grid-column-end:span 2}.lg-col-span-3{grid-column-end:span 3}.lg-col-span-4{grid-column-end:span 4}.lg-col-span-5{grid-column-end:span 5}.lg-col-span-6{grid-column-end:span 6}.lg-col-span-7{grid-column-end:span 7}.lg-col-span-8{grid-column-end:span 8}.lg-col-span-9{grid-column-end:span 9}.lg-col-span-10{grid-column-end:span 10}.lg-col-span-11{grid-column-end:span 11}.lg-col-span-12{grid-column-end:span 12}}@media(max-width:960px){.md-col-span-0{display:none}}@media(max-width:600px){.sm-col-span-0{display:none}}.jp-cut{border:2px solid var(--jp-green-primary);border-radius:var(--jp-border-radius);margin:32px 0;padding:16px 24px 16px 64px;position:relative;text-decoration:none}.jp-cut,.jp-cut span{display:block}.jp-cut span:last-of-type{font-weight:600}.jp-cut:focus span:last-of-type,.jp-cut:hover span:last-of-type{text-decoration:underline;text-decoration-thickness:var(--jp-underline-thickness)}.jp-cut:focus:after,.jp-cut:hover:after{transform:translateY(-50%) translateX(-8px)}.jp-cut:after{color:var(--jp-green-primary);content:"→";font-size:24px;font-weight:600;left:24px;position:absolute;top:50%;transform:translateY(-50%);transition:transform .15s ease-out}.components-popover:not(.is-without-arrow):before{border-color:var(--jp-gray)}.icon-tooltip-helper .components-popover:not([data-y-axis=middle])[data-x-axis=left] .components-popover__content{margin-left:-62px}.icon-tooltip-helper .components-popover:not([data-y-axis=middle])[data-x-axis=right] .components-popover__content{margin-right:-62px}.icon-tooltip-helper .components-popover[data-y-axis=bottom] .components-popover__content{top:2px!important}.icon-tooltip-helper .components-popover:not(.is-without-arrow)[data-y-axis=bottom]:before{top:-6px!important}.icon-tooltip-helper .components-popover:not(.is-without-arrow)[data-y-axis=bottom]:after{top:-4px!important}.icon-tooltip-helper .components-popover[data-y-axis=top] .components-popover__content{bottom:10px!important}.icon-tooltip-helper .components-popover:not(.is-without-arrow)[data-y-axis=top]:before{bottom:3px}.icon-tooltip-helper .components-popover:not(.is-without-arrow)[data-y-axis=top]:after{bottom:4px}.icon-tooltip-helper.is-wide .components-popover__content{width:440px}.icon-tooltip-wrapper{color:var(--jp-black);display:inline-block;position:relative}.icon-tooltip-wrapper .components-button.is-link:focus:not(:disabled){box-shadow:none}.icon-tooltip-helper{height:18px;pointer-events:none;position:absolute;right:-53px;top:0;width:124px}.icon-tooltip-container{pointer-events:all}.icon-tooltip-container .components-popover__content{border:1px solid var(--jp-gray);border-radius:4px;margin:0 10px;max-width:90vw;outline:none;padding:24px;white-space:normal;width:304px}.icon-tooltip-title{font-size:16px;font-weight:600;line-height:19px}.icon-tooltip-title:not(:last-child){margin-bottom:8px}.icon-tooltip-content{font-size:14px;font-weight:400;line-height:24px}.icon-tooltip-content ul{list-style-type:disc;margin:0 1rem 0 0}.icon-tooltip-content ul li:last-child{margin-bottom:0}.msOlyh2T7D6uhbM6AROg{align-items:center;background:none;border:2px solid var(--jp-green-40);border-radius:var(--jp-border-radius);color:var(--jp-gray-80);display:flex;gap:calc(var(--spacing-base)*3);justify-content:space-between;padding:calc(var(--spacing-base)*2) calc(var(--spacing-base)*3);position:relative;text-align:right;width:100%}.msOlyh2T7D6uhbM6AROg a,.msOlyh2T7D6uhbM6AROg button{all:unset;color:var(--jp-gray-80);cursor:pointer}.msOlyh2T7D6uhbM6AROg a:after,.msOlyh2T7D6uhbM6AROg button:after{content:"";height:100%;position:absolute;right:0;top:0;width:100%}.msOlyh2T7D6uhbM6AROg:focus-within{border-color:var(--jp-black)}.msOlyh2T7D6uhbM6AROg:focus-within .cPN7USVqSBpxUswfDtUZ,.msOlyh2T7D6uhbM6AROg:hover .cPN7USVqSBpxUswfDtUZ{transform:translateX(calc((var(--spacing-base)*2)*-1))}.msOlyh2T7D6uhbM6AROg:focus-within .EmnJAyEzzn1QpA8HtypY,.msOlyh2T7D6uhbM6AROg:hover .EmnJAyEzzn1QpA8HtypY{text-decoration:underline;text-decoration-thickness:2px}.EmnJAyEzzn1QpA8HtypY,.msOlyh2T7D6uhbM6AROg .EmnJAyEzzn1QpA8HtypY{font-weight:700}.cPN7USVqSBpxUswfDtUZ{fill:var(--jp-green-40);pointer-events:none;transition:transform .1s ease-out}.vV7YZikAz0oHYsuvtxMq{display:inline;margin:0 calc(var(--spacing-base)/3) 0 0;vertical-align:middle}.vV7YZikAz0oHYsuvtxMq svg{position:relative;z-index:10}.T1YaMupeZmBIpXZHY9EZ{display:inline}.pVJWvyeviifcrLbZZxCj{align-items:flex-start}.pVJWvyeviifcrLbZZxCj,.segmN0DtUjey3r5zVPON{display:flex;flex-direction:column;justify-content:center}.segmN0DtUjey3r5zVPON{align-items:flex-end}.lolS8hq75wfk687xQjbY{margin-bottom:calc(var(--spacing-base)/2*-1);margin-right:var(--spacing-base)}.HC8zzYgv0GvkecCkpyld{width:fit-content}.XJqRbP_azFalXqUoYPtl{margin-top:calc(var(--spacing-base)*3 + 1px)}.vMa4i_Dza2t5Zi_Bw9Nf{background:var(--jp-white-off);padding-top:1px}.cuoSlhSNrqf1dozY22Xb{fill:#000}.JLquNpQVlysAamuh5lJO,.lAIiifeLMmZAPlQ9n9ZR{fill:var(--jp-green-primary)}.cbOwD8Y4tFjwimmtchQI{fill:#757575}.cbOwD8Y4tFjwimmtchQI.aLWBKY0yRghEk7tNCgK3{fill:var(--color-bluesky)}.cbOwD8Y4tFjwimmtchQI.aHOlEBGD5EA8NKRw3xTw{fill:var(--color-facebook)}.cbOwD8Y4tFjwimmtchQI.aHOlEBGD5EA8NKRw3xTw.social-logo{border-radius:50%}.cbOwD8Y4tFjwimmtchQI.af4Y_zItXvLAOEoSDPSv{fill:var(--color-twitter)}.cbOwD8Y4tFjwimmtchQI.f68aqF3XSD1OBvXR1get{fill:var(--color-linkedin)}.cbOwD8Y4tFjwimmtchQI.xFI0dt3UiXRlRQdqPWkx{fill:var(--color-tumblr)}.cbOwD8Y4tFjwimmtchQI.q7JEoyymveP6kF747M43{fill:var(--color-gplus)}.cbOwD8Y4tFjwimmtchQI.DKOBOTVmTLbh26gUH_73{fill:var(--color-mastodon)}.cbOwD8Y4tFjwimmtchQI.n5XodNsuMfMAAvqHFmbw{fill:var(--color-nextdoor)}.cbOwD8Y4tFjwimmtchQI.n5XodNsuMfMAAvqHFmbw.social-logo{border-radius:50%}.cbOwD8Y4tFjwimmtchQI.cL3m0xBYTYhIKI7lCqDB{fill:var(--color-instagram)}.cbOwD8Y4tFjwimmtchQI.fftumuc_lJ6v0tq4UMVR{fill:var(--color-whatsapp)}.cbOwD8Y4tFjwimmtchQI.inzgC27qxdt7hSdhTWRI{fill:var(--color-threads)}.cbOwD8Y4tFjwimmtchQI.inzgC27qxdt7hSdhTWRI.social-logo{border-radius:40%}.L1LjeCYPldBcTLILS13l{max-width:calc(744px + var(--spacing-base)*6);width:100%}.JWWznnb8sAKHIOhE59_z{display:flex}.JWWznnb8sAKHIOhE59_z:not(:first-child){margin-top:calc(var(--spacing-base)*7)}.kV5wl2UResIqqBdSTuQr{margin-left:calc(var(--spacing-base)*2);padding-top:calc(var(--spacing-base)/2)}@media(min-width:600px){.kV5wl2UResIqqBdSTuQr{margin-left:calc(var(--spacing-base)*5)}}.oePuSIKcH_JzEhDJcHh8{width:100%}.mxYw7vghJF8H8C0FjvPz{align-items:center;display:flex}.lyiOCAyjT_eQyDg8Ier_ .oePuSIKcH_JzEhDJcHh8{opacity:.5}.IclfL4iNXTZfBAbHZdog>:last-child{margin-top:calc(var(--spacing-base)*2)}@media(min-width:600px){.IclfL4iNXTZfBAbHZdog{display:flex;justify-content:space-between}}.bOadM4auwszaOl0el95T{display:flex;flex-wrap:wrap;margin-top:calc(var(--spacing-base)*2)}.G7vkgqk8AEd6pRbNUyE4{color:var(--jp-green-50);margin-left:calc(var(--spacing-base)/2)}.qnlbRElIsj4nB45F5s3a{color:var(--jp-gray-50)}.TvvdPGzRa_ubn3BnQOnQ{color:var(--jp-red-50)}.yAFMUkq1ot9DZF05RUwG{margin-top:calc(var(--spacing-base)*3)}@media(min-width:600px){.yAFMUkq1ot9DZF05RUwG{padding-right:calc(var(--spacing-base)*11)}}.qoajQ2Ew8eYJgdbssSg9{margin-top:calc(var(--spacing-base)*3)}.EbfrbByI7NQ2_MD_gDXp{align-items:center;border:1px solid var(--jp-gray-30);border-radius:4px;color:var(--jp-gray-30);display:flex;font-size:12px;height:21px;margin-bottom:calc(var(--spacing-base)*2);margin-right:var(--spacing-base);padding:calc(var(--spacing-base)/2)}.hCwaBLH_6dELyWWwB8S1{padding:calc(var(--spacing-base)*3);width:304px}.V3U9oKSdRmKjOQ523C86{display:flex;justify-content:space-between}.OSrT4pA4vIGzg9EE6rcv{margin:calc(var(--spacing-base)*-1) calc(var(--spacing-base)*-3)}.OSrT4pA4vIGzg9EE6rcv:focus,.OSrT4pA4vIGzg9EE6rcv:focus:not(:disabled){box-shadow:none}.rbL50q3wwzE6X7VBHcmW{display:flex;justify-content:flex-end}.g593fzjQCE_4rNiiwLdg{line-height:1;margin-bottom:calc(var(--spacing-base)*1.5)}.CIp_BwDbLdjYPSVrreqg{align-items:flex-start;justify-content:space-between}.CIp_BwDbLdjYPSVrreqg,.m2epTt5F7wBQNcMdguwQ{display:flex;margin-top:calc(var(--spacing-base)*2)}.m2epTt5F7wBQNcMdguwQ{justify-content:right}.HrEvG7sxsWbTLD0sk477{border-bottom:2px solid var(--jp-gray-5);margin-top:calc(var(--spacing-base)*7)}.WIttYmnC0O4JKFyPgkTW{padding:calc(var(--spacing-base)*2);width:250px}.p1_cy4ERoY1_uwtgq3Tn{align-items:center;display:flex}.ehnXRuGNl9ZnPh6c1Pa3{display:flex;flex-wrap:wrap;margin-right:auto}.ehnXRuGNl9ZnPh6c1Pa3>:first-child{margin-left:calc(var(--spacing-base)*3)}.ehnXRuGNl9ZnPh6c1Pa3 .q8mOIlVn7qA44s7ysC5Z{opacity:.5}.IxCDeZ2a0wRu3AQbqGuG{align-items:center;display:flex;justify-content:space-between;margin-bottom:calc(var(--spacing-base)*3);width:100%}.YIQOtwFZuyfirlpFfjDb{white-space:nowrap}@media(max-width:1115px){.ehnXRuGNl9ZnPh6c1Pa3{margin-top:calc(var(--spacing-base)*3)}}@media(max-width:599px){.ehnXRuGNl9ZnPh6c1Pa3{margin-top:calc(var(--spacing-base)*3)}.ehnXRuGNl9ZnPh6c1Pa3>:first-child{margin-bottom:var(--spacing-base);margin-left:0}.IxCDeZ2a0wRu3AQbqGuG{margin-bottom:0}}.x8nPhsBEpxvgCxHNbCXo{display:flex}.x8nPhsBEpxvgCxHNbCXo .b_pwVVOoMN73AXhJNbgr{margin-left:var(--spacing-base);margin-top:calc(var(--spacing-base)/2)}.MWO4b3hqGdH8p1Vt9zmQ{margin-right:calc(var(--spacing-base)/2);max-height:20px}.DuflEZ86axRQGuMhmH3n{color:var(--jp-gray-20)}.ywr2PcNYcX5_sEzdvHAS{color:var(--jp-gray-70);font-weight:400;line-height:24px}.e_wseeb7HqoyLjv9N_ww{background-color:var(--jp-white-off)}.mzfjOg8s_uehdCmNjX0P,.nxtQ3M8WCX69d_NjShwZ{align-items:flex-start;display:flex;flex-direction:column;gap:calc(var(--spacing-base)*2)}.mzfjOg8s_uehdCmNjX0P .components-toggle-control__label,.nxtQ3M8WCX69d_NjShwZ .components-toggle-control__label{font-size:var(--font-body);font-weight:500}.mzfjOg8s_uehdCmNjX0P .components-base-control__help,.nxtQ3M8WCX69d_NjShwZ .components-base-control__help{color:inherit}.VfIXL69k_I0zUU0s7LqM{background-color:var(--jp-white);border-radius:calc(var(--jp-border-radius)*2);box-shadow:0 4px 40px #00000014;display:flex}.VfIXL69k_I0zUU0s7LqM.SvvAonSzsVSo_5Hu6Goz{align-items:center;padding:calc(var(--spacing-base)*2);width:358px}.VfIXL69k_I0zUU0s7LqM.SvvAonSzsVSo_5Hu6Goz .dwXtyo4qYbpJ2b3rZL1N{align-items:center;display:flex;overflow:hidden;width:100%}.VfIXL69k_I0zUU0s7LqM.SvvAonSzsVSo_5Hu6Goz .WxFqmtANZGuBRdR2NewQ{flex-grow:1;margin:0 calc(var(--spacing-base)*2)}.VfIXL69k_I0zUU0s7LqM.ee2TJQm2FgpSRwchomAH{--square-stat-vertical-spacing:calc(var( --spacing-base )*2);--square-stat-horizontal-spacing:calc(var( --spacing-base )*3);flex-direction:column;height:168px;justify-content:space-between;padding:var(--square-stat-vertical-spacing) var(--square-stat-horizontal-spacing);width:168px}.VfIXL69k_I0zUU0s7LqM.ee2TJQm2FgpSRwchomAH .WxFqmtANZGuBRdR2NewQ{margin-bottom:calc(var(--spacing-base)/2)}.VfIXL69k_I0zUU0s7LqM .mgcKzhKqFk7UOZ156QPT{overflow:hidden;text-overflow:ellipsis}.VfIXL69k_I0zUU0s7LqM .h_uY7ygjuMtuY4ZWJz1R{color:var(--jp-green-40);display:flex;fill:var(--jp-green-40)}.bZ4b33s2MdcOjaDKBbeV{--spacing-base:8px;--wp-admin-border-width-focus:1.5px;align-items:center;display:flex;white-space:nowrap}.UzkzDaqt2mXprJh2OXRz{background-color:var(--jp-gray-50);border-radius:50%;flex-shrink:0;height:.666em;width:.666em}.QuS0vdcr87FsiBvSSrvA{font-weight:600;line-height:1.666;margin-right:calc(var(--spacing-base)/2)}.bZ4b33s2MdcOjaDKBbeV.bGx0wbQAwuY7k8P3PHVQ a,.bZ4b33s2MdcOjaDKBbeV.bGx0wbQAwuY7k8P3PHVQ span{color:var(--jp-green-50)}.bZ4b33s2MdcOjaDKBbeV.bGx0wbQAwuY7k8P3PHVQ .UzkzDaqt2mXprJh2OXRz{background-color:var(--jp-green-50)}.bZ4b33s2MdcOjaDKBbeV.wR8Cz8uHgObTQavolv5y a,.bZ4b33s2MdcOjaDKBbeV.wR8Cz8uHgObTQavolv5y span{color:var(--jp-gray-50)}.bZ4b33s2MdcOjaDKBbeV.wR8Cz8uHgObTQavolv5y .UzkzDaqt2mXprJh2OXRz{background-color:var(--jp-gray-50)}.bZ4b33s2MdcOjaDKBbeV.IzbBYGwBKhSYFUQlIMww a,.bZ4b33s2MdcOjaDKBbeV.IzbBYGwBKhSYFUQlIMww span{color:var(--jp-red-50)}.bZ4b33s2MdcOjaDKBbeV.IzbBYGwBKhSYFUQlIMww .UzkzDaqt2mXprJh2OXRz{background-color:var(--jp-red-50)}.bZ4b33s2MdcOjaDKBbeV.Kdvp_HJf89IBrZuCaLm8 a,.bZ4b33s2MdcOjaDKBbeV.Kdvp_HJf89IBrZuCaLm8 span{color:var(--jp-yellow-30)}.bZ4b33s2MdcOjaDKBbeV.Kdvp_HJf89IBrZuCaLm8 .UzkzDaqt2mXprJh2OXRz{background-color:var(--jp-yellow-30)}.bZ4b33s2MdcOjaDKBbeV.hVf5vsbBWm8OFye7cy7a a,.bZ4b33s2MdcOjaDKBbeV.hVf5vsbBWm8OFye7cy7a span{color:var(--jp-blue-40)}.bZ4b33s2MdcOjaDKBbeV.hVf5vsbBWm8OFye7cy7a .UzkzDaqt2mXprJh2OXRz{background-color:var(--jp-blue-40)}.gecp_0Z0owRZtj8JAYir{--base-width:8px;--track-width:calc(var(--base-width)*6)}.gecp_0Z0owRZtj8JAYir.qgKXEdMmHsIK84VDnLO2{--base-width:6px}.gecp_0Z0owRZtj8JAYir.Vy6dbB4PsGKm8BDqzJ9J .components-toggle-control__label{display:none}.gecp_0Z0owRZtj8JAYir .components-form-toggle{--wp-admin-theme-color:var( --jp-green-40 );height:calc(var(--base-width)*3)}.gecp_0Z0owRZtj8JAYir .components-form-toggle__input:focus+.components-form-toggle__track{box-shadow:0 0 0 2px var(--jp-white),0 0 0 4px var(--jp-green-50)}.gecp_0Z0owRZtj8JAYir .components-form-toggle .components-form-toggle__track{border-radius:12px;border-width:2px;height:calc(var(--base-width)*3);width:var(--track-width)}.gecp_0Z0owRZtj8JAYir .components-form-toggle .components-form-toggle__thumb{height:calc(var(--base-width)*2);right:calc(var(--base-width)/2);top:calc(var(--base-width)/2);width:calc(var(--base-width)*2)}.gecp_0Z0owRZtj8JAYir .components-form-toggle.is-checked .components-form-toggle__thumb{transform:translateX(calc((var(--base-width)*3)*-1))}.gecp_0Z0owRZtj8JAYir .components-toggle-control__help{margin-inline-start:calc(var(--track-width) + var(--spacing-base))}.gecp_0Z0owRZtj8JAYir.ykWv7fKpkVW_vpAoddu4 .components-form-toggle{opacity:.6}.VHYulMcpzbr10HWR0iSE{align-items:flex-start;border:1px solid var(--jp-black);border-color:var(--jp-gray-5);border-radius:4px;border-right-width:6px;display:flex;font-size:var(--font-body);padding:24px 18px 27px 31px}.FGpSkMCiIHQjszcV0dbn{height:calc(var(--spacing-base)*3);margin-left:20px;width:calc(var(--spacing-base)*3)}.KoWZcCwhW13xvkEb0QON{background-color:#0000;border:none;cursor:pointer;outline:none;padding:0}.KoWZcCwhW13xvkEb0QON svg{display:block}@media screen and (max-width:600px){.VHYulMcpzbr10HWR0iSE{box-shadow:0 4px 8px #00000008,0 1px 2px #0000000f;padding-top:68px;position:relative}.FGpSkMCiIHQjszcV0dbn{position:absolute;right:24px;top:24px}.KoWZcCwhW13xvkEb0QON{left:24px;position:absolute;top:24px}}.smrfczkC53EaFM8OJUXs{flex-grow:1}.IKYRWoPwt9xOVEx1wzNS{font-weight:600;margin-bottom:8px}.qM0qY6mPYp1MPN54A3Kg{align-items:center;display:flex;flex-wrap:wrap;margin-top:20px;row-gap:20px}@media screen and (max-width:600px){.qM0qY6mPYp1MPN54A3Kg{justify-content:center}}.qM0qY6mPYp1MPN54A3Kg a,.qM0qY6mPYp1MPN54A3Kg a:active,.qM0qY6mPYp1MPN54A3Kg a:focus,.qM0qY6mPYp1MPN54A3Kg a:hover{color:var(--jp-black)}.qM0qY6mPYp1MPN54A3Kg>*{margin-left:24px}.A5YkDkkXuiYgavrY6Nux{border-right-color:var(--jp-red)}.A5YkDkkXuiYgavrY6Nux .y_IPyP1wIAOhyNaqvXJq{fill:var(--jp-red)}.cT5rwuPMZzWvi5o6shMl{border-right-color:var(--jp-yellow-20)}.cT5rwuPMZzWvi5o6shMl .y_IPyP1wIAOhyNaqvXJq{fill:var(--jp-yellow-20)}.yo0O3uvNomPsYUXFCpAS{border-right-color:var(--black)}.yo0O3uvNomPsYUXFCpAS .y_IPyP1wIAOhyNaqvXJq{fill:var(--black)}.oZdDFf1jBLkzn5ICCC6x{border-right-color:var(--jp-green)}.oZdDFf1jBLkzn5ICCC6x .y_IPyP1wIAOhyNaqvXJq{fill:var(--jp-green)}._fUXxnSp5pagKBp9gSN7 *{box-sizing:border-box}.GqFcAwJvIrg1v7f6QUfw{display:flex;flex-direction:column;min-height:230px;padding:calc(var(--spacing-base)*3);width:304px}.GqFcAwJvIrg1v7f6QUfw .OENx8kmm62tkWGukzP2S{display:flex;justify-content:space-between;margin-bottom:calc(var(--spacing-base)*2)}.GqFcAwJvIrg1v7f6QUfw .OENx8kmm62tkWGukzP2S .KnqJLKwSceJTwFJrPGHq{max-width:226px}.GqFcAwJvIrg1v7f6QUfw .OENx8kmm62tkWGukzP2S .PJU0_yA9jNf7ao0jhHut{background-color:var(--jp-white);color:var(--jp-gray-90);flex-shrink:0;height:calc(var(--spacing-base)*3);min-width:unset;width:calc(var(--spacing-base)*3)}.GqFcAwJvIrg1v7f6QUfw .OENx8kmm62tkWGukzP2S .PJU0_yA9jNf7ao0jhHut:hover:not(:focus){box-shadow:none}.GqFcAwJvIrg1v7f6QUfw .rrORM3zqHfGvqiPduEXY{align-items:flex-end;display:flex;flex-grow:1;height:calc(var(--spacing-base)*6);justify-content:flex-end;margin-top:calc(var(--spacing-base)*2)}.GqFcAwJvIrg1v7f6QUfw .rrORM3zqHfGvqiPduEXY .Q7fUcDUGhteXEr18rZPC{color:var(--jp-gray-60);flex-grow:1;margin-bottom:var(--spacing-base)}.GqFcAwJvIrg1v7f6QUfw .rrORM3zqHfGvqiPduEXY .S5LAeskUiEQ0JlPhr0Ze{flex-shrink:0}.OtDl6kocO_m2s9sRHaqX{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;max-height:600px;width:100%}.BjwJh1S1YVPI7AjmTx6a+.BjwJh1S1YVPI7AjmTx6a{margin-top:calc(var(--spacing-base)*5)}.YWfK8VTp2wnByBauYPKg{background-color:var(--jp-gray-0);overflow-x:scroll;padding:calc(var(--spacing-base)*3)}.pkw2LnOTd8VvQ3oT8sXQ{justify-content:flex-end;margin-top:calc(var(--spacing-base)*3);padding-top:calc(var(--spacing-base)*3)}.ap6lG79CncSqdigJS_WA{margin-top:calc(var(--spacing-base)*4)}.uym7dGHhp6ifjF57yOAO{align-items:flex-end;display:flex;margin-bottom:calc(var(--spacing-base)*2.25)}.e_2eFTR8RyHwmfeqJL4F{flex:1;margin-bottom:0}.IKQVU01PrDMMV5UFLOKv{display:flex;gap:calc(var(--spacing-base)*2)}.pkw2LnOTd8VvQ3oT8sXQ{border-top:1px solid var(--jp-gray);display:flex;justify-content:right;padding-top:calc(var(--spacing-base)*4);width:100%}.pkw2LnOTd8VvQ3oT8sXQ>:last-child{margin-right:calc(var(--spacing-base)*2)}.qazuloIt0teplSEwxRN0{background-color:#fff;border:1px solid var(--jp-gray);border-bottom:none;color:var(--jp-gray-50);display:grid;grid-template-columns:repeat(9,1fr);padding:calc(var(--spacing-base)*2) calc(var(--spacing-base)*3);width:100%}.qazuloIt0teplSEwxRN0>span:first-child{grid-column:1/7}.qazuloIt0teplSEwxRN0>span:not(:first-child){text-align:center}.iJ_biSBRDribuNKX0Zuw{margin:calc(var(--spacing-base)*4) calc(var(--spacing-base)*8);text-align:center}@media(max-width:599px){.uym7dGHhp6ifjF57yOAO{margin-bottom:calc(var(--spacing-base)*3)}.e_2eFTR8RyHwmfeqJL4F{display:none}.pkw2LnOTd8VvQ3oT8sXQ{justify-content:center}.pkw2LnOTd8VvQ3oT8sXQ>*{width:50%}}.v640YfEL85A9rCvyHSzW{align-items:center;display:flex;gap:4px;justify-content:center;margin-bottom:calc(var(--spacing-base)*2);margin-top:calc(var(--spacing-base)*4)}.v640YfEL85A9rCvyHSzW button{font-size:var(--font-body);height:auto;line-height:32px;min-width:32px;padding:0 var(--spacing-base);width:auto}.v640YfEL85A9rCvyHSzW button.gfxpe4zp6ShFsIsce8Ii,.v640YfEL85A9rCvyHSzW button.gfxpe4zp6ShFsIsce8Ii:hover:not(:disabled){background:none;color:var(--jp-black)}.x8UuVEhWucPfdq0hEJg6{border:1px solid var(--jp-gray);border-radius:var(--jp-border-radius)}.x8UuVEhWucPfdq0hEJg6>:not(:last-child){border-bottom:1px solid var(--jp-gray)}.eb6Ovfvm1yONz4mdOwbH{background-color:var(--jp-white)}.jF9LXpXR3TxZVDw7TVXT{align-items:center;background:none;border:none;box-sizing:border-box;cursor:pointer;display:grid;grid-template-columns:repeat(9,1fr);margin:0;outline-color:var(--jp-black);padding:calc(var(--spacing-base)*2) calc(var(--spacing-base)*3);text-align:start;width:100%}.jF9LXpXR3TxZVDw7TVXT>:first-of-type{grid-column:1/8}.jF9LXpXR3TxZVDw7TVXT>:last-of-type{grid-column:9}.jF9LXpXR3TxZVDw7TVXT:hover{background:var(--jp-gray-0)}.lNQgAfpwdAUSOLZd8dlD{align-items:center;display:flex;font-size:var(--font-body-small);font-weight:400}.WRQwDYPdffWznX158azR{margin-left:var(--spacing-base)}.dJx9pvlYjDnKn11n5wo8{font-weight:600;margin-bottom:var(--spacing-base);margin-right:calc(var(--spacing-base)*4)}.EKcbLuSblRc7UpzgsFXw{align-items:center}.ILMBWlMLcXc0n97IisrG{overflow:hidden;transform-origin:top center}.T8XIzCNJBQy1UETN5gjU{max-height:0;padding:0;transform:scaleY(0);transition:all .1s}.kWoHGiaZSbq9XJVyUOMC{max-height:1000px;padding:calc(var(--spacing-base)*4) calc(var(--spacing-base)*7);transform:scaleY(1);transition:max-height .3s,transform .2s}.HQgjxePFDRJHamBAGcVU{background-color:var(--jp-white);border-radius:var(--jp-border-radius);box-shadow:0 0 40px #00000014;margin:0}.KtdsNIMumOoHNWMLmuAJ{align-items:center;display:flex;justify-content:space-between;margin:0;padding:calc(var(--spacing-base)*2);text-align:right}.KtdsNIMumOoHNWMLmuAJ.ewyV4ZGn34WDNXmK3ej2{cursor:pointer;outline-color:var(--jp-black)}.KtdsNIMumOoHNWMLmuAJ.ewyV4ZGn34WDNXmK3ej2:focus:not(.owofT85W_XvVdb5vr1GN),.KtdsNIMumOoHNWMLmuAJ.ewyV4ZGn34WDNXmK3ej2:hover:not(.owofT85W_XvVdb5vr1GN){background-color:var(--jp-gray-0)}.KtdsNIMumOoHNWMLmuAJ.owofT85W_XvVdb5vr1GN{background-color:var(--jp-black)}.KtdsNIMumOoHNWMLmuAJ.owofT85W_XvVdb5vr1GN .NESnw2xCLrBpP6WlYZL4{color:var(--jp-white)}.KtdsNIMumOoHNWMLmuAJ.owofT85W_XvVdb5vr1GN .aohnd_y_1lrMuww8NH63{fill:var(--jp-white)}.KtdsNIMumOoHNWMLmuAJ.owofT85W_XvVdb5vr1GN .Rnas_2_2_eLZSYfZ347E{background-color:var(--jp-red);border:1px solid var(--jp-red);color:var(--jp-white)}.NESnw2xCLrBpP6WlYZL4{align-items:center;display:flex;overflow-x:hidden;padding-left:var(--spacing-base)}.m4_14yNRByDyO9yf9pGg{display:block;overflow-x:hidden;text-overflow:ellipsis}.aohnd_y_1lrMuww8NH63{margin-left:calc(var(--spacing-base)*2)}.Rnas_2_2_eLZSYfZ347E{align-items:center;border:1px solid var(--jp-red-60);border-radius:50%;box-sizing:border-box;color:var(--jp-red-60);display:flex;justify-content:center;min-width:30px;padding:calc(var(--spacing-base)/2) var(--spacing-base)}.X8NRHUTBa_4wDvoHN9TT{fill:var(--jp-green-50)}.CsuOteurQlJm4IjXqyZ0{fill:var(--jp-gray-20)}.fvbewglUxEvV1o04yzzp{--icon-size:28px;--item-spacing:calc(var( --spacing-base )*2);--left-spacing:calc(var( --icon-size ) + var( --item-spacing ));list-style:none}.DINy59MKjwiQanaoDTiV{padding:calc(var(--spacing-base)*2)}.XoacHJljw8zRW_fkBSyg{padding:0}.mXM4WZRePVTa07dhQ6MD{margin-right:var(--left-spacing)}.sI3V8khLdCqxkhJQ_XnI{display:flex;justify-content:flex-start;padding:calc(var(--spacing-base)*2)}.hgdxMuIvZwTZ0sfXaols{padding:calc(var(--spacing-base)*2);width:250px}.UErHS2HAh1gszGfYuVIf{align-items:center;background-color:var(--jp-white);border:1px solid var(--jp-gray-10);border-radius:var(--jp-border-radius);display:flex;justify-content:space-between;padding:calc(var(--spacing-base)*2);width:100%}.lEhH1hvCcxLVFMHI8Gwv{display:flex;justify-content:flex-start}.c57Vj4QhAHwcK_HZMxtN{margin-left:var(--spacing-base)}.sfXsfklfkeSRtE9ivQwF{border:1px solid var(--jp-gray);border-radius:var(--jp-border-radius);display:inline-block;width:100%}.sfXsfklfkeSRtE9ivQwF>:not(:last-child){border-bottom:1px solid var(--jp-gray)}.ozRrKPlj1QFGUyd3oVke{background-color:var(--jp-white)}.PyvnSHQuuUkZvVsArigy{align-items:center;background:none;border:none;box-sizing:border-box;cursor:pointer;display:grid;grid-template-columns:repeat(9,1fr);margin:0;outline-color:var(--jp-black);padding:calc(var(--spacing-base)*2) calc(var(--spacing-base)*3);text-align:start;width:100%}.PyvnSHQuuUkZvVsArigy>:first-of-type{grid-column:1/7}.PyvnSHQuuUkZvVsArigy>:last-of-type{grid-column:9}.PyvnSHQuuUkZvVsArigy>:not(:first-child){margin:auto}.PyvnSHQuuUkZvVsArigy:hover{background:var(--jp-gray-0)}.u9Xod5s8bCRNj9MR1Drl{align-items:center;display:flex;font-size:var(--font-body-small);font-weight:400}.IbeyulkpO9kjYJ4OkYUD{margin-left:var(--spacing-base)}.KiCgmjHm2f0JDU3cMsgf{font-weight:600}.KiCgmjHm2f0JDU3cMsgf,.kh5zuLR1zNf7KCsxhAZ5{margin-bottom:var(--spacing-base);margin-right:calc(var(--spacing-base)*4)}.kh5zuLR1zNf7KCsxhAZ5{font-size:var(--font-body-small);font-weight:400}.z1z63g62c73XbcPk9DWc{background-color:var(--jp-gray-50);display:inline-block;height:4px;margin:2px 12px;width:4px}.kJ8t3FAtd5VAYjk31SfA{align-items:center}.JP0IJZcYRohfgntEozjm{overflow:hidden;transform-origin:top center}.y7c6zi2wjEnbW3F29fmP{max-height:0;padding:0;transform:scaleY(0);transition:all .1s}.wQWiN_J0SqgduvadyGnm{max-height:1000px;padding:calc(var(--spacing-base)*4) calc(var(--spacing-base)*7);transform:scaleY(1);transition:max-height .3s,transform .2s}.v1fUFCBPmd6miSCf_ehK{fill:var(--jp-green-40)}.oR9QG6gRLvyzqiuIarmu{border-radius:32px;flex-shrink:0;font-size:12px;font-style:normal;font-weight:600;line-height:16px;margin-right:calc(var(--spacing-base)*4);padding:calc(var(--spacing-base)/2);position:relative;text-align:center;width:60px}.oR9QG6gRLvyzqiuIarmu.bZ8KDXMWoim85Zv31E7E{background-color:#008a20;color:var(--jp-white)}.oR9QG6gRLvyzqiuIarmu.uYEkrN4rh8n5cs3aPrYC{background-color:var(--jp-gray-50);color:var(--jp-white)}.WOX88CWB12lzxcMcl_ns{color:#008a20}.H2J5mHqyiBHXCAyZ4KGa{color:inherit}.H2J5mHqyiBHXCAyZ4KGa:focus,.H2J5mHqyiBHXCAyZ4KGa:hover{box-shadow:none;color:inherit}.BT16ByfO8ktYf15hbMG8{margin-right:calc(var(--spacing-base)/2);max-height:20px}.Gi6geVLkEyrClNXuJ34I{color:var(--jp-red)}.Q02oRBdY3ZpNGOF2Y1iV{color:var(--jp-gray-70);font-weight:400;line-height:24px}@media(max-width:599px){.PyvnSHQuuUkZvVsArigy{display:grid;grid-auto-rows:minmax(auto,auto)}.PyvnSHQuuUkZvVsArigy>:first-child{grid-column:1/8;grid-row:1}.PyvnSHQuuUkZvVsArigy>:nth-child(2){grid-row:2;padding-right:calc(var(--spacing-base)*4)}.PyvnSHQuuUkZvVsArigy>:nth-child(3){grid-row:2}.PyvnSHQuuUkZvVsArigy>:nth-child(3) span{margin-top:var(--spacing-base);position:absolute}.PyvnSHQuuUkZvVsArigy>:last-child{grid-column:10;grid-row:1/3}.oR9QG6gRLvyzqiuIarmu{display:none}}@media(max-width:1200px){.kh5zuLR1zNf7KCsxhAZ5{display:grid}.z1z63g62c73XbcPk9DWc{display:none}}.SunkAzopVEoBZbCUFkpe{background-color:var(--jp-gray-0);display:flex;flex-direction:row;font-family:monospace;overflow-x:auto;padding:0}.s6eJjt_RVhQ8mEG1qQYb{background-color:var(--jp-red-0)}.cW2860S1RCjdsufX8ds_{display:flex;flex-direction:column;text-align:left}.hU_xmjv3sGJgIvV_26Ik{background-color:var(--jp-gray-10);color:var(--font-body);padding:0 calc(var(--spacing-base)/2)}.hU_xmjv3sGJgIvV_26Ik.s6eJjt_RVhQ8mEG1qQYb{background-color:var(--jp-red-50);color:var(--jp-white)}.O5ZaHoo1pFRkk_GUUczG{display:flex;flex:1;flex-direction:column;overflow-x:visible;white-space:pre}.UoS_E4HwI88HfDMpNtvB{padding-right:var(--spacing-base)}.ZotWIwUISq6XCpIyD8k7{background-color:var(--jp-red);border-radius:calc(var(--jp-border-radius)/2);color:var(--jp-white);padding:calc(var(--spacing-base)/4) calc(var(--spacing-base)/2)}.HPsJA6B0f3Bd2tZgEr7v{font-size:var(--font-body);line-height:1.5}.WA0OogO0bZSYbqUPL9aa{background-color:var(--jp-gray-10);font-weight:600;padding:calc(var(--spacing-base)/2) var(--spacing-base)}.Z1NxA7aDh5LEYjbLLKbF{background-color:var(--jp-gray-0);display:flex;flex-direction:row;font-family:Courier\ 10 Pitch,Courier,monospace;overflow-x:auto;white-space:pre}.aeQS3Qb4g1FwDY0HaZKb{background-color:var(--jp-gray-10);color:var(--jp-gray-50);display:flex;flex-direction:column;padding:0 var(--spacing-base);text-align:left}.ESXyHLdGmRLZMv7_Ei9d{display:flex;flex-direction:column;flex-grow:1;overflow-x:visible}.ESXyHLdGmRLZMv7_Ei9d del,.ESXyHLdGmRLZMv7_Ei9d div,.ESXyHLdGmRLZMv7_Ei9d ins{padding:0 var(--spacing-base);text-decoration:none}.ESXyHLdGmRLZMv7_Ei9d del{background-color:var(--jp-red-0);color:var(--jp-red-60)}.ESXyHLdGmRLZMv7_Ei9d ins{background-color:var(--jp-green-5);color:var(--jp-green-60)}.XqQBRzrxyMhhZvPXIHgk .components-button{box-shadow:inset 0 0 0 1.5px var(--jp-gray);position:relative}.XqQBRzrxyMhhZvPXIHgk .components-button:first-child{border-radius:0 var(--jp-border-radius) var(--jp-border-radius) 0}.XqQBRzrxyMhhZvPXIHgk .components-button:last-child{border-radius:var(--jp-border-radius) 0 0 var(--jp-border-radius)}.XqQBRzrxyMhhZvPXIHgk .components-button:hover{z-index:1}.XqQBRzrxyMhhZvPXIHgk .components-button+.components-button{margin-right:-1.5px}.iN9oF7KagtrwaFKTquqW{align-items:center;display:flex}.IZTexE5bnJrB25jtwXBW{height:54px;width:54px;fill:var(--jp-red);margin-left:var(--spacing-base);margin-right:-8px}.YzqaprEdVpBoBJesZixw{margin-top:calc(var(--spacing-base)*3)}.AMcxtVDLtWB2EJJJU5NQ{height:auto;max-width:100%;position:relative;width:330px}.vtViVIQmuI1n8HDxrkNy{animation:BJ0WjZD0MlRR_Usu8HEd 4s ease-in-out .8s infinite normal forwards;opacity:0;position:relative;transform:translateY(24px)}.vtViVIQmuI1n8HDxrkNy:nth-of-type(2){animation-delay:.6s}.vtViVIQmuI1n8HDxrkNy:nth-of-type(3){animation-delay:.7s}@keyframes BJ0WjZD0MlRR_Usu8HEd{0%{opacity:0;transform:translateY(24px)}20%{opacity:1;transform:translateY(0)}50%{opacity:1;transform:translateY(0)}60%{opacity:0;transform:translateY(-48px)}to{opacity:0;transform:translateY(-48px)}}@media(prefers-reduced-motion:reduce){.vtViVIQmuI1n8HDxrkNy{animation:none}}.vzMlFr1AXWqefpRrb976{align-items:center;display:flex;justify-content:space-between;margin-bottom:calc(var(--spacing-base)*2)}.gYSOMa4xxLXmsNzvFPkW{background-color:var(--jp-gray-5);border-radius:calc(var(--spacing-base)*3);width:100%}.hNJWdt5qmZkWYAH_vjIp{background-color:var(--jp-green-40);border-radius:calc(var(--spacing-base)*3);height:9px;transition:width .2s}.DHMUfGyHbl5BgD5vjxVz{color:var(--jp-gray-90);font-weight:600;line-height:24px;margin-right:auto;padding-right:var(--spacing-base)}.cAbGtJDGgLubucBnz7vM{background-color:var(--jp-white)}.KmIjHqrMs3duMPaUf50k{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;max-height:600px;width:100%}.bpW3MfTt3siOyvw1ZsuF{font-weight:700}.DJS67UCXVaM7nIMJePYQ{align-items:flex-end;display:flex;justify-content:flex-end;margin-bottom:calc(var(--spacing-base)*2.25)}.s4378tf2MiM0bMIxQZkI{flex:1;margin-bottom:0}.jifq7nsF5kZYrcpGQ35V{display:flex;gap:calc(var(--spacing-base)*2)}@media(max-width:599px){.DJS67UCXVaM7nIMJePYQ{margin-bottom:calc(var(--spacing-base)*3)}.s4378tf2MiM0bMIxQZkI{display:none}}.yjKVIZH3KLvJeygIzaZn{margin-top:calc(var(--spacing-base)*3)}.terms-of-service{color:var(--jp-black);font-size:var(--font-body)}.terms-of-service .terms-of-service__link{color:var(--jp-green-50);text-decoration:underline;white-space:nowrap}.p4qz2tkq0p9hxucJ6Qk2{--padding:calc(var(--spacing-base)*4);color:var(--jp-black)}.lbNDyXioOwvyvbALtCBm{--gap:calc(var(--spacing-base)*3);padding:var(--padding) 0;position:relative}.s2Lsn4kbm6BrS3DSndRB .lbNDyXioOwvyvbALtCBm{column-gap:var(--gap);display:grid;grid-auto-flow:column;grid-template-columns:repeat(var(--columns),1fr);grid-template-rows:repeat(var(--rows),minmax(min-content,max-content))}.cLaNK_XcbTGlRQ4Tp43Q{margin-top:var(--padding)}.s2Lsn4kbm6BrS3DSndRB .cLaNK_XcbTGlRQ4Tp43Q{display:contents}.cLaNK_XcbTGlRQ4Tp43Q.CYt1X0eH1icRjhtJ28jx>*{background:var(--jp-white);position:relative}.cLaNK_XcbTGlRQ4Tp43Q.CYt1X0eH1icRjhtJ28jx>:after{bottom:0;box-shadow:0 4px 24px #0000000d;content:"";left:0;position:absolute;right:0;top:0;z-index:-1}.cLaNK_XcbTGlRQ4Tp43Q>:first-child{border-top-left-radius:var(--jp-border-radius);border-top-right-radius:var(--jp-border-radius);border-width:1px 1px 0}.cLaNK_XcbTGlRQ4Tp43Q>:last-child{border-bottom-left-radius:var(--jp-border-radius);border-bottom-right-radius:var(--jp-border-radius);border-width:0 1px 1px}.DAkZc1P9A3K12fjEliMg{display:flex;flex-direction:column;justify-content:space-between;padding:var(--padding)}.WUBuYABl8nymjs9NnCEL{align-items:center;display:flex;padding-bottom:calc(var(--spacing-base)*2);position:relative}.WUBuYABl8nymjs9NnCEL:not(:nth-child(2)){padding-top:calc(var(--spacing-base)*2)}.WUBuYABl8nymjs9NnCEL:not(:nth-child(2)):before{background-color:var(--jp-gray);content:"";height:1px;left:var(--padding);position:absolute;right:var(--padding);top:0;z-index:5}.s2Lsn4kbm6BrS3DSndRB .WUBuYABl8nymjs9NnCEL:not(:nth-child(2)):before{left:unset;right:0;width:calc(100% + var(--gap))}.s2Lsn4kbm6BrS3DSndRB .lbNDyXioOwvyvbALtCBm>:last-child .WUBuYABl8nymjs9NnCEL:not(:nth-child(2)):before{width:100%}.ANtCFeb41NhA8PA3H7ZN,.WUBuYABl8nymjs9NnCEL:last-of-type{padding-bottom:var(--padding)}.Ql2gy_148yW8Vw5vhaKD{padding-left:var(--padding);padding-right:var(--padding)}.EAQrAnQEW1z1BfdY5gbC{margin:0 var(--spacing-base);fill:var(--jp-gray);flex-shrink:0}.EAQrAnQEW1z1BfdY5gbC.JDSTlLoOC_4aUoH2oNM2{fill:var(--jp-green-40)}.EAQrAnQEW1z1BfdY5gbC.zNdQRJ1w7BvaQOYyqzHK{fill:var(--jp-red-50)}.lr7vbX95SKtoe7DarJcZ{margin-right:auto}.s2Lsn4kbm6BrS3DSndRB .lr7vbX95SKtoe7DarJcZ{margin:0 var(--spacing-base);top:1px}.WUBuYABl8nymjs9NnCEL .KRrGp2xdkeBOxLZeuQ6X{fill:var(--jp-gray-20);flex-shrink:0}.H_ZJiRVJg0LiMXPGOcmt{text-align:center;width:fit-content}.H_ZJiRVJg0LiMXPGOcmt>a{color:#000}.s2Lsn4kbm6BrS3DSndRB .H_ZJiRVJg0LiMXPGOcmt{grid-column:2;overflow:hidden;padding-left:var(--padding);padding-right:var(--padding);white-space:nowrap}.x21z_DixObRDsDaWotP1{align-items:right;display:flex;justify-content:right;margin:0 calc(var(--spacing-base)*4)}.dovianZYLKhnbnh9I06o{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-end}.lljtQMhW7lq5tE5SDJEf{align-items:flex-start;display:flex;flex-basis:0;flex-grow:2}.lljtQMhW7lq5tE5SDJEf .NubApIV1vQCRUNprfm6b{margin-right:auto}.dhFQXpZfMwVI8vuYHnwC{align-items:flex-start;display:inline-flex;flex:0 0 auto;position:relative}.dhFQXpZfMwVI8vuYHnwC:first-child{margin-left:calc(var(--spacing-base)*2)}.dhFQXpZfMwVI8vuYHnwC.eD7hzxFmdtG_MgmBtl_k{color:var(--jp-gray-20)}.dhFQXpZfMwVI8vuYHnwC.eD7hzxFmdtG_MgmBtl_k:after{background:var(--jp-red);border-radius:var(--jp-border-radius);content:" ";display:block;height:3px;margin-top:-2px;pointer-events:none;position:absolute;top:50%;width:100%}.C64ZjjUAqJC1T2Sa7apS{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start;margin-bottom:calc(var(--spacing-base)*3)}.UpZDGew6Ay1hPoP6eI7b{color:var(--jp-gray-40);font-size:var(--font-body-small);line-height:20px}.UpZDGew6Ay1hPoP6eI7b:after{content:"​"}.NubApIV1vQCRUNprfm6b{background-color:var(--jp-yellow-10);border-radius:4px;font-size:13px;font-weight:600;margin-right:var(--spacing-base);padding-left:var(--spacing-base);padding-right:var(--spacing-base)}.TDiiPbuW1Z0_05u_pvcK{font-weight:400}.T1f6nRmWifz5im6hB29M{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.Ki7ehROrWxWBIMIt8SUH:focus:not(:disabled){box-shadow:none}*{box-sizing:border-box}#jetpack-protect-root{--wp-admin-theme-color:var(--jp-black);--wp-admin-theme-color-darker-10:var(--jp-black-80);--wp-admin-theme-color-darker-20:var(--jp-black-80);--wp-admin-border-width-focus:1.51px;--actions-size:28px} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/composer.json deleted file mode 100644 index 7a752c8f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/composer.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "name": "automattic/jetpack-protect", - "description": "Social plugin", - "type": "wordpress-plugin", - "license": "GPL-2.0-or-later", - "require": { - "ext-json": "*", - "automattic/jetpack-assets": "^4.0.14", - "automattic/jetpack-admin-ui": "^0.5.7", - "automattic/jetpack-autoloader": "^5.0.5", - "automattic/jetpack-composer-plugin": "^4.0.4", - "automattic/jetpack-config": "^3.0.1", - "automattic/jetpack-my-jetpack": "^5.9.1", - "automattic/jetpack-plugins-installer": "^0.5.4", - "automattic/jetpack-sync": "^4.9.2", - "automattic/jetpack-transport-helper": "^0.3.1", - "automattic/jetpack-plans": "^0.6.1", - "automattic/jetpack-waf": "^0.23.8", - "automattic/jetpack-status": "^5.0.10", - "automattic/jetpack-protect-status": "^0.5.8" - }, - "require-dev": { - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1" - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "scripts": { - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" - ], - "test-php": [ - "@composer phpunit" - ], - "build-development": [ - "pnpm run build" - ], - "build-production": [ - "pnpm run build-production-concurrently" - ], - "watch": [ - "Composer\\Config::disableProcessTimeout", - "pnpm run watch" - ] - }, - "repositories": [], - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "mirror-repo": "Automattic/jetpack-protect-plugin", - "autorelease": true, - "autotagger": { - "v": false - }, - "release-branch-prefix": "protect", - "wp-plugin-slug": "jetpack-protect", - "wp-svn-autopublish": true, - "version-constants": { - "JETPACK_PROTECT_VERSION": "jetpack-protect.php" - } - }, - "config": { - "allow-plugins": { - "roots/wordpress-core-installer": true, - "automattic/jetpack-autoloader": true, - "automattic/jetpack-composer-plugin": true - }, - "autoloader-suffix": "c4802e05bbcf59fd3b6350e8d3e5482c_protectⓥ4_0_0" - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack-protect.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack-protect.php deleted file mode 100644 index ccfa93b8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack-protect.php +++ /dev/null @@ -1,140 +0,0 @@ - array( - 'plugin' => 'Jetpack Protect', - ), - ); - - return $slugs; - } - ); - - add_action( - 'admin_notices', - function () { - if ( get_current_screen()->id !== 'plugins' ) { - return; - } - - $message = sprintf( - wp_kses( - /* translators: Placeholder is a link to a support document. */ - __( 'Your installation of Jetpack Protect is incomplete. If you installed Jetpack Protect from GitHub, please refer to this document to set up your development environment. Jetpack Protect must have Composer dependencies installed and built via the build command.', 'jetpack-protect' ), - array( - 'a' => array( - 'href' => array(), - 'target' => array(), - 'rel' => array(), - ), - ) - ), - 'https://github.com/Automattic/jetpack/blob/trunk/docs/development-environment.md#building-your-project' - ); - wp_admin_notice( - $message, - array( - 'type' => 'error', - 'dismissible' => true, - ) - ); - } - ); - - return; -} - -// Redirect to plugin page when the plugin is activated. -add_action( 'activated_plugin', 'jetpack_protect_plugin_activation' ); - -/** - * Redirects to plugin page when the plugin is activated - * - * @param string $plugin Path to the plugin file relative to the plugins directory. - */ -function jetpack_protect_plugin_activation( $plugin ) { - if ( - JETPACK_PROTECT_ROOT_FILE_RELATIVE_PATH === $plugin && - ( new \Automattic\Jetpack\Paths() )->is_current_request_activating_plugin_from_plugins_screen( JETPACK_PROTECT_ROOT_FILE_RELATIVE_PATH ) - ) { - wp_safe_redirect( esc_url( admin_url( 'admin.php?page=jetpack-protect' ) ) ); - exit( 0 ); - } -} - -// Add "Settings" link to plugins page. -add_filter( - 'plugin_action_links_' . JETPACK_PROTECT_FOLDER . '/jetpack-protect.php', - function ( $actions ) { - $settings_link = '' . __( 'Dashboard', 'jetpack-protect' ) . ''; - array_unshift( $actions, $settings_link ); - - return $actions; - } -); - -register_activation_hook( __FILE__, array( 'Jetpack_Protect', 'plugin_activation' ) ); -register_deactivation_hook( __FILE__, array( 'Jetpack_Protect', 'plugin_deactivation' ) ); - -// Main plugin class. -new Jetpack_Protect(); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/CHANGELOG.md deleted file mode 100644 index 8453869d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/CHANGELOG.md +++ /dev/null @@ -1,206 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [3.0.4] - 2025-03-21 -### Changed -- Internal updates. - -## [3.0.3] - 2025-03-12 -### Changed -- Internal updates. - -## [3.0.2] - 2025-03-05 -### Changed -- Internal updates. - -## [3.0.1] - 2025-02-24 -### Changed -- Update dependencies. - -## [3.0.0] - 2024-11-14 -### Removed -- General: Update minimum PHP version to 7.2. [#40147] - -## [2.0.4] - 2024-11-04 -### Added -- Enable test coverage. [#39961] - -## [2.0.3] - 2024-09-30 -### Fixed -- Added a check for function presence to avoid fatal errors. [#39581] - -## [2.0.2] - 2024-08-23 -### Changed -- Updated package dependencies. [#39004] - -## [2.0.1] - 2024-03-12 -### Changed -- Internal updates. - -## [2.0.0] - 2023-11-20 -### Changed -- Updated required PHP version to >= 7.0. [#34192] - -## [1.4.22] - 2023-09-19 - -- Minor internal updates. - -## [1.4.21] - 2023-08-23 -### Changed -- Updated package dependencies. [#32605] - -## [1.4.20] - 2023-04-10 -### Added -- Add Jetpack Autoloader package suggestion. [#29988] - -## [1.4.19] - 2023-02-20 -### Changed -- Minor internal updates. - -## [1.4.18] - 2023-01-11 -### Changed -- Updated package dependencies. - -## [1.4.17] - 2022-12-02 -### Changed -- Updated package dependencies. [#27688] - -## [1.4.16] - 2022-11-22 -### Changed -- Updated package dependencies. [#27043] - -## [1.4.15] - 2022-07-26 -### Changed -- Updated package dependencies. [#25158] - -## [1.4.14] - 2022-06-21 -### Changed -- Renaming master to trunk. - -## [1.4.13] - 2022-04-26 -### Changed -- Updated package dependencies. - -## [1.4.12] - 2022-01-25 -### Changed -- Updated package dependencies. - -## [1.4.11] - 2022-01-04 -### Changed -- Switch to pcov for code coverage. -- Updated package dependencies - -## [1.4.10] - 2021-12-14 -### Changed -- Updated package dependencies. - -## [1.4.9] - 2021-11-02 -### Changed -- Set `convertDeprecationsToExceptions` true in PHPUnit config. -- Update PHPUnit configs to include just what needs coverage rather than include everything then try to exclude stuff that doesn't. - -## [1.4.8] - 2021-10-13 -### Changed -- Updated package dependencies. - -## [1.4.7] - 2021-10-12 -### Changed -- Updated package dependencies - -## [1.4.6] - 2021-09-28 -### Changed -- Updated package dependencies. - -## [1.4.5] - 2021-08-30 -### Changed -- Run composer update on test-php command instead of phpunit -- Tests: update PHPUnit polyfills dependency (yoast/phpunit-polyfills). -- updated annotations versions - -## [1.4.4] - 2021-05-25 -### Changed -- Updated package dependencies. - -## [1.4.3] - 2021-04-08 -### Changed -- Packaging and build changes, no change to the package itself. - -## [1.4.2] - 2021-03-30 -### Added -- Composer alias for dev-master, to improve dependencies - -### Changed -- Update package dependencies. - -### Fixed -- Use `composer update` rather than `install` in scripts, as composer.lock isn't checked in. - -## [1.4.1] - 2021-02-05 - -- CI: Make tests more generic - -## [1.4.0] - 2021-01-20 - -- Add mirror-repo information to all current composer packages - -## [1.3.0] - 2020-12-17 - -- Coverage Update whitelist for backend tests -- Pin dependencies -- Packages: Update for PHP 8 testing - -## [1.2.0] - 2020-09-17 - -## [1.1.1] - 2020-09-17 - -- a8c-mc-stats: Do not distribute test files - -## [1.1.0] - 2020-08-13 - -- CI: Try collect js coverage - -## 1.0.0 - 2020-07-27 - -- Creates the MC Stats package - -[3.0.4]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v3.0.3...v3.0.4 -[3.0.3]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v3.0.2...v3.0.3 -[3.0.2]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v3.0.1...v3.0.2 -[3.0.1]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v3.0.0...v3.0.1 -[3.0.0]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v2.0.4...v3.0.0 -[2.0.4]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v2.0.3...v2.0.4 -[2.0.3]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v2.0.2...v2.0.3 -[2.0.2]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v2.0.1...v2.0.2 -[2.0.1]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v2.0.0...v2.0.1 -[2.0.0]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.22...v2.0.0 -[1.4.22]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.21...v1.4.22 -[1.4.21]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.20...v1.4.21 -[1.4.20]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.19...v1.4.20 -[1.4.19]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.18...v1.4.19 -[1.4.18]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.17...v1.4.18 -[1.4.17]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.16...v1.4.17 -[1.4.16]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.15...v1.4.16 -[1.4.15]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.14...v1.4.15 -[1.4.14]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.13...v1.4.14 -[1.4.13]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.12...v1.4.13 -[1.4.12]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.11...v1.4.12 -[1.4.11]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.10...v1.4.11 -[1.4.10]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.9...v1.4.10 -[1.4.9]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.8...v1.4.9 -[1.4.8]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.7...v1.4.8 -[1.4.7]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.6...v1.4.7 -[1.4.6]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.5...v1.4.6 -[1.4.5]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.4...v1.4.5 -[1.4.4]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.3...v1.4.4 -[1.4.3]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.2...v1.4.3 -[1.4.2]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.1...v1.4.2 -[1.4.1]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.4.0...v1.4.1 -[1.4.0]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.3.0...v1.4.0 -[1.3.0]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.2.0...v1.3.0 -[1.2.0]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.1.1...v1.2.0 -[1.1.1]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.1.0...v1.1.1 -[1.1.0]: https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v1.0.0...v1.1.0 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/composer.json deleted file mode 100644 index 702dd274..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/composer.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "automattic/jetpack-a8c-mc-stats", - "description": "Used to record internal usage stats for Automattic. Not visible to site owners.", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2" - }, - "require-dev": { - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "scripts": { - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" - ], - "test-php": [ - "@composer phpunit" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-a8c-mc-stats", - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v${old}...v${new}" - }, - "branch-alias": { - "dev-trunk": "3.0.x-dev" - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/src/class-a8c-mc-stats.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/src/class-a8c-mc-stats.php deleted file mode 100644 index 53ab5618..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-a8c-mc-stats/src/class-a8c-mc-stats.php +++ /dev/null @@ -1,182 +0,0 @@ -use_transparent_pixel = $use_transparent_pixel; - } - - /** - * Store a stat for later output. - * - * @param string $group The stat group. - * @param string $name The stat name to bump. - * - * @return boolean true if stat successfully added - */ - public function add( $group, $name ) { - - if ( ! \is_string( $group ) || ! \is_string( $name ) ) { - return false; - } - - if ( ! isset( $this->stats[ $group ] ) ) { - $this->stats[ $group ] = array(); - } - - if ( \in_array( $name, $this->stats[ $group ], true ) ) { - return false; - } - - $this->stats[ $group ][] = $name; - - return true; - } - - /** - * Gets current stats stored to be processed - * - * @return array $stats - */ - public function get_current_stats() { - return $this->stats; - } - - /** - * Return the stats from a group in an array ready to be added as parameters in a query string - * - * @param string $group_name The name of the group to retrieve. - * @return array Array with one item, where the key is the prefixed group and the value are all stats concatenated with a comma. If group not found, an empty array will be returned - */ - public function get_group_query_args( $group_name ) { - $stats = $this->get_current_stats(); - if ( isset( $stats[ $group_name ] ) && ! empty( $stats[ $group_name ] ) ) { - return array( "x_jetpack-{$group_name}" => implode( ',', $stats[ $group_name ] ) ); - } - return array(); - } - - /** - * Gets a list of trac URLs for every stored URL - * - * @return array An array of URLs - */ - public function get_stats_urls() { - - $urls = array(); - - foreach ( $this->get_current_stats() as $group => $stat ) { - $group_query_string = $this->get_group_query_args( $group ); - $urls[] = $this->build_stats_url( $group_query_string ); - } - - return $urls; - } - - /** - * Outputs the tracking pixels for the current stats and empty the stored stats from the object - * - * @return void - */ - public function do_stats() { - $urls = $this->get_stats_urls(); - foreach ( $urls as $url ) { - echo ''; - } - $this->stats = array(); - } - - /** - * Pings the stats server for the current stats and empty the stored stats from the object - * - * @return void - */ - public function do_server_side_stats() { - $urls = $this->get_stats_urls(); - foreach ( $urls as $url ) { - $this->do_server_side_stat( $url ); - } - $this->stats = array(); - } - - /** - * Runs stats code for a one-off, server-side. - * - * @param string $url string The URL to be pinged. Should include `x_jetpack-{$group}={$stats}` or whatever we want to store. - * - * @return bool If it worked. - */ - public function do_server_side_stat( $url ) { - $response = wp_remote_get( esc_url_raw( $url ) ); - if ( is_wp_error( $response ) ) { - return false; - } - - if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { - return false; - } - - return true; - } - - /** - * Builds the stats url. - * - * @param array $args array|string The arguments to append to the URL. - * - * @return string The URL to be pinged. - */ - public function build_stats_url( $args ) { - $defaults = array( - 'v' => 'wpcom2', - // phpcs:ignore WordPress.WP.AlternativeFunctions.rand_rand -- There can be a case where pluggables are not yet loaded. - 'rand' => md5( ( function_exists( 'wp_rand' ) ? wp_rand( 0, 999 ) : rand( 0, 999 ) ) . time() ), - ); - $args = wp_parse_args( $args, $defaults ); - $gifname = true === $this->use_transparent_pixel ? 'b.gif' : 'g.gif'; - - /** - * Filter the URL used as the Stats tracking pixel. - * - * @since-jetpack 2.3.2 - * @since 1.0.0 - * - * @param string $url Base URL used as the Stats tracking pixel. - */ - $base_url = apply_filters( - 'jetpack_stats_base_url', - 'https://pixel.wp.com/' . $gifname - ); - $url = add_query_arg( $args, $base_url ); - return $url; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/CHANGELOG.md deleted file mode 100644 index b3e636ab..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/CHANGELOG.md +++ /dev/null @@ -1,243 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [0.5.7] - 2025-03-21 -### Changed -- Internal updates. - -## [0.5.6] - 2025-03-17 -### Changed -- Internal updates. - -## [0.5.5] - 2025-03-12 -### Changed -- Internal updates. - -## [0.5.4] - 2025-03-05 -### Changed -- Internal updates. - -## [0.5.3] - 2025-02-24 -### Changed -- Update dependencies. - -## [0.5.2] - 2025-02-03 -### Added -- Add `remove_menu` method to `Admin_Menu` class. [#41422] - -## [0.5.1] - 2024-11-25 -### Changed -- Update dependencies. [#40286] - -## [0.5.0] - 2024-11-14 -### Removed -- General: Update minimum PHP version to 7.2. [#40147] - -## [0.4.6] - 2024-11-04 -### Added -- Enable test coverage. [#39961] - -## [0.4.5] - 2024-09-05 -### Changed -- Jetpack menu: only register Jetpack admin page for contributor roles and above. [#39081] - -## [0.4.4] - 2024-08-29 -### Changed -- Admin menu: change order of Jetpack sub-menu items [#39095] - -## [0.4.3] - 2024-08-23 -### Changed -- Updated package dependencies. [#39004] - -## [0.4.2] - 2024-04-22 -### Changed -- Internal updates. - -## [0.4.1] - 2024-03-12 -### Changed -- Internal updates. - -## [0.4.0] - 2024-03-01 -### Added -- Register menus in network admin as well as regular admin. [#36058] - -## [0.3.2] - 2024-01-29 -### Fixed -- Wait until 'admin_menu' action to call `add_menu()`, to avoid triggering the l10n load too early. [#35279] - -## [0.3.1] - 2023-11-24 - -## [0.3.0] - 2023-11-20 -### Changed -- Updated required PHP version to >= 7.0. [#34192] - -## [0.2.25] - 2023-11-14 - -## [0.2.24] - 2023-10-30 -### Fixed -- Handle Akismet submenu even if Jetpack is present, as Jetpack now relies on this package to do so. [#33559] - -## [0.2.23] - 2023-09-19 -### Changed -- Updated Jetpack submenu sort order so individual features are alpha-sorted. [#32958] - -## [0.2.22] - 2023-09-11 -### Fixed -- Akismet: update naming to common form [#32908] - -## [0.2.21] - 2023-08-23 -### Changed -- Updated package dependencies. [#32605] - -## [0.2.20] - 2023-04-25 -### Fixed -- Avoid errors when used in combination with an older version of the Logo package. [#30136] - -## [0.2.19] - 2023-04-10 -### Added -- Add Jetpack Autoloader package suggestion. [#29988] - -## [0.2.18] - 2023-04-04 -### Changed -- Menu icon: update to latest version of the Jetpack logo [#29418] - -## [0.2.17] - 2023-02-20 -### Changed -- Minor internal updates. - -## [0.2.16] - 2023-01-25 -### Changed -- Minor internal updates. - -## [0.2.15] - 2023-01-11 -### Changed -- Updated package dependencies. - -## [0.2.14] - 2022-12-02 -### Changed -- Updated package dependencies. [#27688] - -## [0.2.13] - 2022-11-22 -### Changed -- Updated package dependencies. [#27043] - -## [0.2.12] - 2022-09-20 -### Changed -- Updated package dependencies. - -## [0.2.11] - 2022-07-26 -### Changed -- Updated package dependencies. [#25158] - -## [0.2.10] - 2022-07-12 -### Changed -- Updated package dependencies. - -## [0.2.9] - 2022-06-21 -### Changed -- Renaming master to trunk. - -## [0.2.8] - 2022-06-14 -### Changed -- Updated package dependencies. - -## [0.2.7] - 2022-04-26 -### Changed -- Update package.json metadata. - -## [0.2.6] - 2022-04-05 -### Changed -- Updated package dependencies. - -## [0.2.5] - 2022-03-08 -### Fixed -- Do not handle Akismet submenu if Jetpack plugin is present - -## [0.2.4] - 2022-02-09 -### Added -- Support for akismet menu with stand-alone plugins - -### Fixed -- Fixes menu order working around a bug in add_submenu_page - -## [0.2.3] - 2022-01-25 -### Changed -- Updated package dependencies. - -## [0.2.2] - 2022-01-18 -### Changed -- General: update required node version to v16.13.2 - -## [0.2.1] - 2022-01-04 -### Changed -- Switch to pcov for code coverage. -- Updated package dependencies - -## [0.2.0] - 2021-12-14 -### Added -- New method to get the top level menu item - -## [0.1.1] - 2021-11-17 -### Changed -- Set `convertDeprecationsToExceptions` true in PHPUnit config. -- Update PHPUnit configs to include just what needs coverage rather than include everything then try to exclude stuff that doesn't. - -## 0.1.0 - 2021-10-13 -### Added -- Created the package. - -### Changed -- Updated package dependencies. - -### Fixed -- Fixing menu visibility issues. - -[0.5.7]: https://github.com/Automattic/jetpack-admin-ui/compare/0.5.6...0.5.7 -[0.5.6]: https://github.com/Automattic/jetpack-admin-ui/compare/0.5.5...0.5.6 -[0.5.5]: https://github.com/Automattic/jetpack-admin-ui/compare/0.5.4...0.5.5 -[0.5.4]: https://github.com/Automattic/jetpack-admin-ui/compare/0.5.3...0.5.4 -[0.5.3]: https://github.com/Automattic/jetpack-admin-ui/compare/0.5.2...0.5.3 -[0.5.2]: https://github.com/Automattic/jetpack-admin-ui/compare/0.5.1...0.5.2 -[0.5.1]: https://github.com/Automattic/jetpack-admin-ui/compare/0.5.0...0.5.1 -[0.5.0]: https://github.com/Automattic/jetpack-admin-ui/compare/0.4.6...0.5.0 -[0.4.6]: https://github.com/Automattic/jetpack-admin-ui/compare/0.4.5...0.4.6 -[0.4.5]: https://github.com/Automattic/jetpack-admin-ui/compare/0.4.4...0.4.5 -[0.4.4]: https://github.com/Automattic/jetpack-admin-ui/compare/0.4.3...0.4.4 -[0.4.3]: https://github.com/Automattic/jetpack-admin-ui/compare/0.4.2...0.4.3 -[0.4.2]: https://github.com/Automattic/jetpack-admin-ui/compare/0.4.1...0.4.2 -[0.4.1]: https://github.com/Automattic/jetpack-admin-ui/compare/0.4.0...0.4.1 -[0.4.0]: https://github.com/Automattic/jetpack-admin-ui/compare/0.3.2...0.4.0 -[0.3.2]: https://github.com/Automattic/jetpack-admin-ui/compare/0.3.1...0.3.2 -[0.3.1]: https://github.com/Automattic/jetpack-admin-ui/compare/0.3.0...0.3.1 -[0.3.0]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.25...0.3.0 -[0.2.25]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.24...0.2.25 -[0.2.24]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.23...0.2.24 -[0.2.23]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.22...0.2.23 -[0.2.22]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.21...0.2.22 -[0.2.21]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.20...0.2.21 -[0.2.20]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.19...0.2.20 -[0.2.19]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.18...0.2.19 -[0.2.18]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.17...0.2.18 -[0.2.17]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.16...0.2.17 -[0.2.16]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.15...0.2.16 -[0.2.15]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.14...0.2.15 -[0.2.14]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.13...0.2.14 -[0.2.13]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.12...0.2.13 -[0.2.12]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.11...0.2.12 -[0.2.11]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.10...0.2.11 -[0.2.10]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.9...0.2.10 -[0.2.9]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.8...0.2.9 -[0.2.8]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.7...0.2.8 -[0.2.7]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.6...0.2.7 -[0.2.6]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.5...0.2.6 -[0.2.5]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.4...0.2.5 -[0.2.4]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.3...0.2.4 -[0.2.3]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.2...0.2.3 -[0.2.2]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.1...0.2.2 -[0.2.1]: https://github.com/Automattic/jetpack-admin-ui/compare/0.2.0...0.2.1 -[0.2.0]: https://github.com/Automattic/jetpack-admin-ui/compare/0.1.1...0.2.0 -[0.1.1]: https://github.com/Automattic/jetpack-admin-ui/compare/0.1.0...0.1.1 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/composer.json deleted file mode 100644 index d8abc675..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/composer.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "automattic/jetpack-admin-ui", - "description": "Generic Jetpack wp-admin UI elements", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2" - }, - "require-dev": { - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-logo": "^3.0.4", - "automattic/jetpack-test-environment": "@dev", - "automattic/phpunit-select-config": "^1.0.1" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "scripts": { - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" - ], - "test-php": [ - "@composer phpunit" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-admin-ui", - "textdomain": "jetpack-admin-ui", - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-admin-ui/compare/${old}...${new}" - }, - "branch-alias": { - "dev-trunk": "0.5.x-dev" - }, - "version-constants": { - "::PACKAGE_VERSION": "src/class-admin-menu.php" - } - }, - "config": { - "allow-plugins": { - "roots/wordpress-core-installer": true - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/src/class-admin-menu.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/src/class-admin-menu.php deleted file mode 100644 index e9d402d3..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-admin-ui/src/class-admin-menu.php +++ /dev/null @@ -1,228 +0,0 @@ -get_base64_logo() - : 'dashicons-admin-plugins'; - - if ( ! $jetpack_plugin_present ) { - add_menu_page( - 'Jetpack', - 'Jetpack', - 'edit_posts', - 'jetpack', - '__return_null', - $icon, - 3 - ); - - // If Jetpack plugin is not present, user will only be able to see this menu if they have enough capability to at least one of the sub menus being added. - $can_see_toplevel_menu = false; - } - - /** - * The add_sub_menu function has a bug and will not keep the right order of menu items. - * - * @see https://core.trac.wordpress.org/ticket/52035 - * Let's order the items before registering them. - * Since this all happens after the Jetpack plugin menu items were added, all items will be added after Jetpack plugin items - unless position is very low number (smaller than the number of menu items present in Jetpack plugin). - */ - usort( - self::$menu_items, - function ( $a, $b ) { - $position_a = empty( $a['position'] ) ? 0 : $a['position']; - $position_b = empty( $b['position'] ) ? 0 : $b['position']; - $result = $position_a <=> $position_b; - - if ( 0 === $result ) { - $result = strcmp( $a['menu_title'], $b['menu_title'] ); - } - - return $result; - } - ); - - foreach ( self::$menu_items as $menu_item ) { - if ( ! current_user_can( $menu_item['capability'] ) ) { - continue; - } - - $can_see_toplevel_menu = true; - - add_submenu_page( - 'jetpack', - $menu_item['page_title'], - $menu_item['menu_title'], - $menu_item['capability'], - $menu_item['menu_slug'], - $menu_item['function'], - $menu_item['position'] - ); - } - - if ( ! $jetpack_plugin_present ) { - remove_submenu_page( 'jetpack', 'jetpack' ); - } - - if ( ! $can_see_toplevel_menu ) { - remove_menu_page( 'jetpack' ); - } - } - - /** - * Adds a new submenu to the Jetpack Top level menu - * - * The parameters this method accepts are the same as @see add_submenu_page. This class will - * aggreagate all menu items registered by stand-alone plugins and make sure they all go under the same - * Jetpack top level menu. It will also handle the top level menu registration in case the Jetpack plugin is not present. - * - * @param string $page_title The text to be displayed in the title tags of the page when the menu - * is selected. - * @param string $menu_title The text to be used for the menu. - * @param string $capability The capability required for this menu to be displayed to the user. - * @param string $menu_slug The slug name to refer to this menu by. Should be unique for this menu - * and only include lowercase alphanumeric, dashes, and underscores characters - * to be compatible with sanitize_key(). - * @param callable $function The function to be called to output the content for this page. - * @param int $position The position in the menu order this item should appear. Leave empty typically. - * - * @return string The resulting page's hook_suffix - */ - public static function add_menu( $page_title, $menu_title, $capability, $menu_slug, $function, $position = null ) { - self::init(); - self::$menu_items[] = compact( 'page_title', 'menu_title', 'capability', 'menu_slug', 'function', 'position' ); - - /** - * Let's return the page hook so consumers can use. - * We know all pages will be under Jetpack top level menu page, so we can hardcode the first part of the string. - * Using get_plugin_page_hookname here won't work because the top level page is not registered yet. - */ - return 'jetpack_page_' . $menu_slug; - } - - /** - * Removes an already added submenu - * - * @param string $menu_slug The slug of the submenu to remove. - * - * @return array|false The removed submenu on success, false if not found. - */ - public static function remove_menu( $menu_slug ) { - - foreach ( self::$menu_items as $index => $menu_item ) { - if ( $menu_item['menu_slug'] === $menu_slug ) { - unset( self::$menu_items[ $index ] ); - - return $menu_item; - } - } - - return false; - } - - /** - * Gets the slug for the first item under the Jetpack top level menu - * - * @return string|null - */ - public static function get_top_level_menu_item_slug() { - global $submenu; - if ( ! empty( $submenu['jetpack'] ) ) { - $item = reset( $submenu['jetpack'] ); - if ( isset( $item[2] ) ) { - return $item[2]; - } - } - } - - /** - * Gets the URL for the first item under the Jetpack top level menu - * - * @param string $fallback If Jetpack menu is not there or no children is found, return this fallback instead. Default to admin_url(). - * @return string - */ - public static function get_top_level_menu_item_url( $fallback = false ) { - $slug = self::get_top_level_menu_item_slug(); - - if ( $slug ) { - $url = menu_page_url( $slug, false ); - return $url; - } - - $url = $fallback ? $fallback : admin_url(); - return $url; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/CHANGELOG.md deleted file mode 100644 index 674e9916..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/CHANGELOG.md +++ /dev/null @@ -1,729 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [4.0.14] - 2025-03-21 -### Changed -- Internal updates. - -## [4.0.13] - 2025-03-18 -### Changed -- Update dependencies. [#42545] - -## [4.0.12] - 2025-03-17 -### Changed -- Internal updates. - -## [4.0.11] - 2025-03-12 -### Changed -- Internal updates. - -## [4.0.10] - 2025-03-05 -### Changed -- Internal updates. - -## [4.0.9] - 2025-03-03 -### Changed -- Update package dependencies. [#42163] - -## [4.0.8] - 2025-02-24 -### Added -- User data: Add permissions to the current user object. [#41859] - -## [4.0.7] - 2025-02-17 -### Changed -- Update dependencies. - -## [4.0.6] - 2025-02-11 -### Changed -- Update dependencies. - -## [4.0.5] - 2025-02-05 -### Changed -- Updated package dependencies. [#41491] - -## [4.0.4] - 2025-02-03 -### Changed -- Updated package dependencies. [#41286] - -## [4.0.3] - 2025-01-20 -### Changed -- Updated package dependencies. [#41099] - -## [4.0.2] - 2024-12-16 -### Changed -- Updated package dependencies. [#40564] - -## [4.0.1] - 2024-12-04 -### Changed -- Updated package dependencies. [#40363] - -## [4.0.0] - 2024-11-25 -### Changed -- Updated package dependencies. [#40258] [#40288] - -### Removed -- Remove JSX runtime polyfill, now that we've dropped support for WordPress < 6.6. [#40200] - -## [3.0.0] - 2024-11-14 -### Removed -- General: Update minimum PHP version to 7.2. [#40147] - -## [2.3.14] - 2024-11-11 -### Changed -- Updated package dependencies. [#39999] - -## [2.3.13] - 2024-11-04 -### Added -- Enable test coverage. [#39961] - -## [2.3.12] - 2024-10-29 -### Changed -- Internal updates. - -## [2.3.11] - 2024-10-29 -### Fixed -- Fixed the outdated JS build for script-data [#39937] - -## [2.3.10] - 2024-10-10 -### Changed -- Updated package dependencies. - -## [2.3.9] - 2024-10-07 -### Changed -- Updated package dependencies. [#39594] - -## [2.3.8] - 2024-09-10 -### Changed -- Updated package dependencies. [#39302] - -## [2.3.7] - 2024-09-05 -### Changed -- Internal updates. - -## [2.3.6] - 2024-09-05 -### Changed -- Updated package dependencies. [#39176] - -### Fixed -- Fixed script data not available in block editor iframe [#39221] - -## [2.3.5] - 2024-08-29 -### Changed -- Updated package dependencies. [#39111] - -## [2.3.4] - 2024-08-23 -### Changed -- Updated package dependencies. [#39004] - -## [2.3.3] - 2024-08-21 -### Changed -- i18n loader script & React JSX runtime: load scripts in the footer. [#38929] - -## [2.3.2] - 2024-08-15 -### Changed -- Updated package dependencies. [#38662] - -## [2.3.1] - 2024-08-12 -### Fixed -- Fixed variable names. [#38606] - -## [2.3.0] - 2024-08-08 -### Added -- Added jetpack-initial-state package to consolidate the logic for Initial state. [#38430] - -## [2.2.0] - 2024-07-23 -### Added -- Assets: Add JSX runtime polyfill `react-jsx-runtime` for WordPress < 6.6. [#38428] - -## [2.1.13] - 2024-07-03 -### Changed -- Updated package dependencies. [#38132] - -## [2.1.12] - 2024-06-05 -### Changed -- Updated package dependencies. [#37669] - -## [2.1.11] - 2024-05-20 -### Changed -- Internal updates. - -## [2.1.10] - 2024-05-16 -### Added -- Assets: Adding comments to explain why we use variables within translation functions [#37397] - -### Changed -- Updated package dependencies. [#37379] - -## [2.1.9] - 2024-05-06 -### Changed -- Updated package dependencies. [#37147] - -## [2.1.8] - 2024-04-22 -### Changed -- Internal updates. - -## [2.1.7] - 2024-04-08 -### Changed -- Updated package dependencies. [#36760] - -## [2.1.6] - 2024-03-27 -### Changed -- Updated package dependencies. [#36585] - -## [2.1.5] - 2024-03-18 -### Changed -- Internal updates. - -## [2.1.4] - 2024-03-12 -### Changed -- Internal updates. - -## [2.1.3] - 2024-03-12 -### Changed -- Updated package dependencies. [#36325] - -## [2.1.2] - 2024-03-04 -### Changed -- Updated package dependencies. [#36095] - -## [2.1.1] - 2024-02-13 -### Changed -- Updated package dependencies. [#35608] - -## [2.1.0] - 2024-02-05 -### Added -- Add support for script enqueuing strategies implemented in WordPress 6.3 [#34072] - -### Changed -- Updated package dependencies. [#35384] - -## [2.0.4] - 2024-01-04 -### Changed -- Updated package dependencies. [#34815] - -## [2.0.3] - 2023-12-11 -### Changed -- Updated package dependencies. [#34492] - -## [2.0.2] - 2023-12-03 -### Changed -- Updated package dependencies. [#34411] [#34427] - -## [2.0.1] - 2023-11-21 - -## [2.0.0] - 2023-11-20 -### Changed -- Updated required PHP version to >= 7.0. [#34192] - -## [1.18.15] - 2023-11-14 -### Changed -- Updated package dependencies. [#34093] - -## [1.18.14] - 2023-11-03 - -## [1.18.13] - 2023-10-19 -### Changed -- Updated package dependencies. [#33687] - -## [1.18.12] - 2023-10-10 -### Changed -- Updated package dependencies. [#33428] - -### Fixed -- Pass `false`, not `null`, to `WP_Scripts->add()`. [#33513] - -## [1.18.11] - 2023-09-19 - -- Minor internal updates. - -## [1.18.10] - 2023-09-04 -### Changed -- Updated package dependencies. [#32803] - -## [1.18.9] - 2023-08-23 -### Changed -- Updated package dependencies. [#32605] - -## [1.18.8] - 2023-08-09 -### Changed -- Updated package dependencies. [#32166] - -## [1.18.7] - 2023-07-11 -### Changed -- Updated package dependencies. [#31785] - -## [1.18.6] - 2023-07-05 -### Changed -- Updated package dependencies. [#31659] - -## [1.18.5] - 2023-06-21 -### Changed -- Updated package dependencies. [#31468] - -## [1.18.4] - 2023-06-06 -### Changed -- Updated package dependencies. [#31129] - -## [1.18.3] - 2023-05-15 -### Changed -- Internal updates. - -## [1.18.2] - 2023-05-02 -### Changed -- Updated package dependencies. [#30375] - -## [1.18.1] - 2023-04-10 -### Added -- Add Jetpack Autoloader package suggestion. [#29988] - -## [1.18.0] - 2023-04-04 -### Changed -- Async script enqueuing: switch to static method. [#29780] -- Updated package dependencies. [#29854] - -## [1.17.34] - 2023-03-20 -### Changed -- Updated package dependencies. [#29471] - -## [1.17.33] - 2023-03-08 -### Changed -- Updated package dependencies. [#29216] - -## [1.17.32] - 2023-02-20 -### Changed -- Minor internal updates. - -## [1.17.31] - 2023-02-15 -### Changed -- Update to React 18. [#28710] - -## [1.17.30] - 2023-01-25 -### Changed -- Minor internal updates. - -## [1.17.29] - 2023-01-11 -### Changed -- Updated package dependencies. - -## [1.17.28] - 2022-12-02 -### Changed -- Updated package dependencies. - -## [1.17.27] - 2022-11-28 -### Changed -- Updated package dependencies. [#27576] - -## [1.17.26] - 2022-11-22 -### Changed -- Updated package dependencies. [#27043] - -## [1.17.25] - 2022-11-08 -### Changed -- Updated package dependencies. [#27289] - -## [1.17.24] - 2022-11-01 -### Changed -- Updated package dependencies. - -## [1.17.23] - 2022-10-13 -### Changed -- Updated package dependencies. [#26791] - -## [1.17.22] - 2022-10-05 -### Changed -- Updated package dependencies. [#26568] - -## [1.17.21] - 2022-08-25 -### Changed -- Updated package dependencies. [#25814] - -## [1.17.20] - 2022-07-26 -### Changed -- Updated package dependencies. [#25158] - -## [1.17.19] - 2022-07-12 -### Changed -- Updated package dependencies. - -## [1.17.18] - 2022-07-06 -### Changed -- Updated package dependencies - -## [1.17.17] - 2022-06-21 -### Changed -- Renaming master to trunk. - -## [1.17.16] - 2022-06-14 - -## [1.17.15] - 2022-06-08 -### Changed -- Reorder JS imports for `import/order` eslint rule. [#24601] - -## [1.17.14] - 2022-05-18 -### Changed -- Updated package dependencies [#24372] - -## [1.17.13] - 2022-05-10 -### Changed -- Updated package dependencies. [#24302] - -## [1.17.12] - 2022-05-04 -### Added -- Add missing JavaScript dependencies, and fix a test. [#24096] - -## [1.17.11] - 2022-04-26 -### Changed -- Updated package dependencies. - -## [1.17.10] - 2022-04-19 -### Fixed -- Assets: Defer the enqueued script instead of its translations - -## [1.17.9] - 2022-04-05 -### Changed -- Updated package dependencies. - -## [1.17.8] - 2022-03-29 -### Changed -- Updated package dependencies. - -## [1.17.7] - 2022-03-23 -### Changed -- Updated package dependencies. - -## [1.17.6] - 2022-03-02 -### Changed -- Updated package dependencies. - -## [1.17.5] - 2022-02-16 -### Changed -- Updated package dependencies. - -## [1.17.4] - 2022-02-09 -### Changed -- Updated package dependencies. - -## [1.17.3] - 2022-02-02 -### Fixed -- Fixed minor coding standard violation. - -## [1.17.2] - 2022-02-01 -### Changed -- Build: remove unneeded files from production build. - -## [1.17.1] - 2022-01-27 -### Changed -- Updated package dependencies. - -## [1.17.0] - 2022-01-25 -### Added -- Accept package path prefixes from jetpack-composer-plugin and use them when lazy-loading JS translations. -- Generate the `wp-jp-i18n-loader` module needed by the new i18n-loader-webpack-plugin. - -### Deprecated -- Deprecated the `wp-jp-i18n-state` module. - -## [1.16.2] - 2022-01-18 -### Fixed -- Handle the case where `WP_LANG_DIR` is in `WP_CONTENT_DIR`, but `WP_CONTENT_DIR` is not in `ABSPATH`. - -## [1.16.1] - 2022-01-05 -### Fixed -- Don't issue a "doing it wrong" warning for registering aliases during plugin activation. - -## [1.16.0] - 2022-01-04 -### Added -- Document use of jetpack-assets, jetpack-composer-plugin, and i18n-loader-webpack-plugin together. - -### Changed -- Switch to pcov for code coverage. -- Updated package dependencies -- Updated package textdomain from `jetpack` to `jetpack-assets`. - -## [1.15.0] - 2021-12-20 -### Added -- Add `alias_textdomain()`. - -## [1.14.0] - 2021-12-14 -### Added -- Generate `wp-jp-i18n-state` script. - -## [1.13.1] - 2021-11-22 -### Fixed -- Call `_doing_it_wrong` correctly. - -## [1.13.0] - 2021-11-22 -### Added -- Have `Assets::register_script()` accept a textdomain for `wp_set_script_translations` (and complain if no textdomain is passed when `wp-i18n` is depended on). - -### Changed -- Updated package dependencies - -### Fixed -- Added missing option doc for `Assets::register_script()`. - -## [1.12.0] - 2021-11-15 -### Added -- Add `Assets::register_script()` for easier loading of Webpack-built scripts. - -## [1.11.10] - 2021-11-02 -### Changed -- Set `convertDeprecationsToExceptions` true in PHPUnit config. -- Update PHPUnit configs to include just what needs coverage rather than include everything then try to exclude stuff that doesn't. - -## [1.11.9] - 2021-10-13 -### Changed -- Updated package dependencies. - -## [1.11.8] - 2021-10-06 -### Changed -- Updated package dependencies - -## [1.11.7] - 2021-09-28 -### Changed -- Updated package dependencies. - -## [1.11.6] - 2021-08-30 -### Changed -- Run composer update on test-php command instead of phpunit -- Tests: update PHPUnit polyfills dependency (yoast/phpunit-polyfills). -- update annotations versions - -## [1.11.5] - 2021-05-25 -### Changed -- Updated package dependencies. - -## [1.11.4] - 2021-04-08 -### Changed -- Packaging and build changes, no change to the package itself. - -## [1.11.3] - 2021-03-30 -### Added -- Composer alias for dev-master, to improve dependencies - -### Changed -- Update package dependencies. - -### Fixed -- Use `composer update` rather than `install` in scripts, as composer.lock isn't checked in. - -## [1.11.2] - 2021-02-23 - -- CI: Make tests more generic - -## [1.11.1] - 2021-01-26 - -- Add mirror-repo information to all current composer packages -- Monorepo: Reorganize all projects - -## [1.11.0] - 2021-01-05 - -- Update dependency brain/monkey to v2.6.0 - -## [1.10.0] - 2020-12-08 - -- Assets: introduce new method to process static resources -- Assets: Use defer for script tags -- Pin dependencies -- Packages: Update for PHP 8 testing - -## [1.9.1] - 2020-11-24 - -- Update dependency brain/monkey to v2.5.0 -- Updated PHPCS: Packages and Debugger - -## [1.9.0] - 2020-10-27 - -- Instagram oEmbed: Simplify - -## [1.8.0] - 2020-09-29 - -- Consolidate the Lazy Images package to rely on the Assets package - -## [1.7.0] - 2020-08-25 - -- Packages: Update filenames after #16810 -- CI: Try collect js coverage -- Docker: Add package testing shortcut - -## [1.6.0] - 2020-07-28 - -- Various: Use wp_resource_hints - -## [1.5.0] - 2020-06-30 - -- PHPCS: Clean up the packages -- WooCommerce Analytics: avoid 404 error when enqueuing script - -## [1.4.0] - 2020-05-26 - -- Add Jetpack Scan threat notifications - -## [1.3.0] - 2020-04-28 - -- Update dependencies to latest stable - -## [1.2.0] - 2020-03-31 - -- Update dependencies to latest stable - -## [1.1.1] - 2020-01-27 - -- Pin dependency brain/monkey to 2.4.0 - -## [1.1.0] - 2020-01-14 - -- Packages: Various improvements for wp.com or self-contained consumers - -## [1.0.3] - 2019-11-08 - -- Packages: Use classmap instead of PSR-4 - -## [1.0.1] - 2019-10-28 - -- PHPCS: JITM and Assets packages -- Packages: Add gitattributes files to all packages that need th… - -## 1.0.0 - 2019-09-14 - -- Statically access asset tools - -[4.0.14]: https://github.com/Automattic/jetpack-assets/compare/v4.0.13...v4.0.14 -[4.0.13]: https://github.com/Automattic/jetpack-assets/compare/v4.0.12...v4.0.13 -[4.0.12]: https://github.com/Automattic/jetpack-assets/compare/v4.0.11...v4.0.12 -[4.0.11]: https://github.com/Automattic/jetpack-assets/compare/v4.0.10...v4.0.11 -[4.0.10]: https://github.com/Automattic/jetpack-assets/compare/v4.0.9...v4.0.10 -[4.0.9]: https://github.com/Automattic/jetpack-assets/compare/v4.0.8...v4.0.9 -[4.0.8]: https://github.com/Automattic/jetpack-assets/compare/v4.0.7...v4.0.8 -[4.0.7]: https://github.com/Automattic/jetpack-assets/compare/v4.0.6...v4.0.7 -[4.0.6]: https://github.com/Automattic/jetpack-assets/compare/v4.0.5...v4.0.6 -[4.0.5]: https://github.com/Automattic/jetpack-assets/compare/v4.0.4...v4.0.5 -[4.0.4]: https://github.com/Automattic/jetpack-assets/compare/v4.0.3...v4.0.4 -[4.0.3]: https://github.com/Automattic/jetpack-assets/compare/v4.0.2...v4.0.3 -[4.0.2]: https://github.com/Automattic/jetpack-assets/compare/v4.0.1...v4.0.2 -[4.0.1]: https://github.com/Automattic/jetpack-assets/compare/v4.0.0...v4.0.1 -[4.0.0]: https://github.com/Automattic/jetpack-assets/compare/v3.0.0...v4.0.0 -[3.0.0]: https://github.com/Automattic/jetpack-assets/compare/v2.3.14...v3.0.0 -[2.3.14]: https://github.com/Automattic/jetpack-assets/compare/v2.3.13...v2.3.14 -[2.3.13]: https://github.com/Automattic/jetpack-assets/compare/v2.3.12...v2.3.13 -[2.3.12]: https://github.com/Automattic/jetpack-assets/compare/v2.3.11...v2.3.12 -[2.3.11]: https://github.com/Automattic/jetpack-assets/compare/v2.3.10...v2.3.11 -[2.3.10]: https://github.com/Automattic/jetpack-assets/compare/v2.3.9...v2.3.10 -[2.3.9]: https://github.com/Automattic/jetpack-assets/compare/v2.3.8...v2.3.9 -[2.3.8]: https://github.com/Automattic/jetpack-assets/compare/v2.3.7...v2.3.8 -[2.3.7]: https://github.com/Automattic/jetpack-assets/compare/v2.3.6...v2.3.7 -[2.3.6]: https://github.com/Automattic/jetpack-assets/compare/v2.3.5...v2.3.6 -[2.3.5]: https://github.com/Automattic/jetpack-assets/compare/v2.3.4...v2.3.5 -[2.3.4]: https://github.com/Automattic/jetpack-assets/compare/v2.3.3...v2.3.4 -[2.3.3]: https://github.com/Automattic/jetpack-assets/compare/v2.3.2...v2.3.3 -[2.3.2]: https://github.com/Automattic/jetpack-assets/compare/v2.3.1...v2.3.2 -[2.3.1]: https://github.com/Automattic/jetpack-assets/compare/v2.3.0...v2.3.1 -[2.3.0]: https://github.com/Automattic/jetpack-assets/compare/v2.2.0...v2.3.0 -[2.2.0]: https://github.com/Automattic/jetpack-assets/compare/v2.1.13...v2.2.0 -[2.1.13]: https://github.com/Automattic/jetpack-assets/compare/v2.1.12...v2.1.13 -[2.1.12]: https://github.com/Automattic/jetpack-assets/compare/v2.1.11...v2.1.12 -[2.1.11]: https://github.com/Automattic/jetpack-assets/compare/v2.1.10...v2.1.11 -[2.1.10]: https://github.com/Automattic/jetpack-assets/compare/v2.1.9...v2.1.10 -[2.1.9]: https://github.com/Automattic/jetpack-assets/compare/v2.1.8...v2.1.9 -[2.1.8]: https://github.com/Automattic/jetpack-assets/compare/v2.1.7...v2.1.8 -[2.1.7]: https://github.com/Automattic/jetpack-assets/compare/v2.1.6...v2.1.7 -[2.1.6]: https://github.com/Automattic/jetpack-assets/compare/v2.1.5...v2.1.6 -[2.1.5]: https://github.com/Automattic/jetpack-assets/compare/v2.1.4...v2.1.5 -[2.1.4]: https://github.com/Automattic/jetpack-assets/compare/v2.1.3...v2.1.4 -[2.1.3]: https://github.com/Automattic/jetpack-assets/compare/v2.1.2...v2.1.3 -[2.1.2]: https://github.com/Automattic/jetpack-assets/compare/v2.1.1...v2.1.2 -[2.1.1]: https://github.com/Automattic/jetpack-assets/compare/v2.1.0...v2.1.1 -[2.1.0]: https://github.com/Automattic/jetpack-assets/compare/v2.0.4...v2.1.0 -[2.0.4]: https://github.com/Automattic/jetpack-assets/compare/v2.0.3...v2.0.4 -[2.0.3]: https://github.com/Automattic/jetpack-assets/compare/v2.0.2...v2.0.3 -[2.0.2]: https://github.com/Automattic/jetpack-assets/compare/v2.0.1...v2.0.2 -[2.0.1]: https://github.com/Automattic/jetpack-assets/compare/v2.0.0...v2.0.1 -[2.0.0]: https://github.com/Automattic/jetpack-assets/compare/v1.18.15...v2.0.0 -[1.18.15]: https://github.com/Automattic/jetpack-assets/compare/v1.18.14...v1.18.15 -[1.18.14]: https://github.com/Automattic/jetpack-assets/compare/v1.18.13...v1.18.14 -[1.18.13]: https://github.com/Automattic/jetpack-assets/compare/v1.18.12...v1.18.13 -[1.18.12]: https://github.com/Automattic/jetpack-assets/compare/v1.18.11...v1.18.12 -[1.18.11]: https://github.com/Automattic/jetpack-assets/compare/v1.18.10...v1.18.11 -[1.18.10]: https://github.com/Automattic/jetpack-assets/compare/v1.18.9...v1.18.10 -[1.18.9]: https://github.com/Automattic/jetpack-assets/compare/v1.18.8...v1.18.9 -[1.18.8]: https://github.com/Automattic/jetpack-assets/compare/v1.18.7...v1.18.8 -[1.18.7]: https://github.com/Automattic/jetpack-assets/compare/v1.18.6...v1.18.7 -[1.18.6]: https://github.com/Automattic/jetpack-assets/compare/v1.18.5...v1.18.6 -[1.18.5]: https://github.com/Automattic/jetpack-assets/compare/v1.18.4...v1.18.5 -[1.18.4]: https://github.com/Automattic/jetpack-assets/compare/v1.18.3...v1.18.4 -[1.18.3]: https://github.com/Automattic/jetpack-assets/compare/v1.18.2...v1.18.3 -[1.18.2]: https://github.com/Automattic/jetpack-assets/compare/v1.18.1...v1.18.2 -[1.18.1]: https://github.com/Automattic/jetpack-assets/compare/v1.18.0...v1.18.1 -[1.18.0]: https://github.com/Automattic/jetpack-assets/compare/v1.17.34...v1.18.0 -[1.17.34]: https://github.com/Automattic/jetpack-assets/compare/v1.17.33...v1.17.34 -[1.17.33]: https://github.com/Automattic/jetpack-assets/compare/v1.17.32...v1.17.33 -[1.17.32]: https://github.com/Automattic/jetpack-assets/compare/v1.17.31...v1.17.32 -[1.17.31]: https://github.com/Automattic/jetpack-assets/compare/v1.17.30...v1.17.31 -[1.17.30]: https://github.com/Automattic/jetpack-assets/compare/v1.17.29...v1.17.30 -[1.17.29]: https://github.com/Automattic/jetpack-assets/compare/v1.17.28...v1.17.29 -[1.17.28]: https://github.com/Automattic/jetpack-assets/compare/v1.17.27...v1.17.28 -[1.17.27]: https://github.com/Automattic/jetpack-assets/compare/v1.17.26...v1.17.27 -[1.17.26]: https://github.com/Automattic/jetpack-assets/compare/v1.17.25...v1.17.26 -[1.17.25]: https://github.com/Automattic/jetpack-assets/compare/v1.17.24...v1.17.25 -[1.17.24]: https://github.com/Automattic/jetpack-assets/compare/v1.17.23...v1.17.24 -[1.17.23]: https://github.com/Automattic/jetpack-assets/compare/v1.17.22...v1.17.23 -[1.17.22]: https://github.com/Automattic/jetpack-assets/compare/v1.17.21...v1.17.22 -[1.17.21]: https://github.com/Automattic/jetpack-assets/compare/v1.17.20...v1.17.21 -[1.17.20]: https://github.com/Automattic/jetpack-assets/compare/v1.17.19...v1.17.20 -[1.17.19]: https://github.com/Automattic/jetpack-assets/compare/v1.17.18...v1.17.19 -[1.17.18]: https://github.com/Automattic/jetpack-assets/compare/v1.17.17...v1.17.18 -[1.17.17]: https://github.com/Automattic/jetpack-assets/compare/v1.17.16...v1.17.17 -[1.17.16]: https://github.com/Automattic/jetpack-assets/compare/v1.17.15...v1.17.16 -[1.17.15]: https://github.com/Automattic/jetpack-assets/compare/v1.17.14...v1.17.15 -[1.17.14]: https://github.com/Automattic/jetpack-assets/compare/v1.17.13...v1.17.14 -[1.17.13]: https://github.com/Automattic/jetpack-assets/compare/v1.17.12...v1.17.13 -[1.17.12]: https://github.com/Automattic/jetpack-assets/compare/v1.17.11...v1.17.12 -[1.17.11]: https://github.com/Automattic/jetpack-assets/compare/v1.17.10...v1.17.11 -[1.17.10]: https://github.com/Automattic/jetpack-assets/compare/v1.17.9...v1.17.10 -[1.17.9]: https://github.com/Automattic/jetpack-assets/compare/v1.17.8...v1.17.9 -[1.17.8]: https://github.com/Automattic/jetpack-assets/compare/v1.17.7...v1.17.8 -[1.17.7]: https://github.com/Automattic/jetpack-assets/compare/v1.17.6...v1.17.7 -[1.17.6]: https://github.com/Automattic/jetpack-assets/compare/v1.17.5...v1.17.6 -[1.17.5]: https://github.com/Automattic/jetpack-assets/compare/v1.17.4...v1.17.5 -[1.17.4]: https://github.com/Automattic/jetpack-assets/compare/v1.17.3...v1.17.4 -[1.17.3]: https://github.com/Automattic/jetpack-assets/compare/v1.17.2...v1.17.3 -[1.17.2]: https://github.com/Automattic/jetpack-assets/compare/v1.17.1...v1.17.2 -[1.17.1]: https://github.com/Automattic/jetpack-assets/compare/v1.17.0...v1.17.1 -[1.17.0]: https://github.com/Automattic/jetpack-assets/compare/v1.16.2...v1.17.0 -[1.16.2]: https://github.com/Automattic/jetpack-assets/compare/v1.16.1...v1.16.2 -[1.16.1]: https://github.com/Automattic/jetpack-assets/compare/v1.16.0...v1.16.1 -[1.16.0]: https://github.com/Automattic/jetpack-assets/compare/v1.15.0...v1.16.0 -[1.15.0]: https://github.com/Automattic/jetpack-assets/compare/v1.14.0...v1.15.0 -[1.14.0]: https://github.com/Automattic/jetpack-assets/compare/v1.13.1...v1.14.0 -[1.13.1]: https://github.com/Automattic/jetpack-assets/compare/v1.13.0...v1.13.1 -[1.13.0]: https://github.com/Automattic/jetpack-assets/compare/v1.12.0...v1.13.0 -[1.12.0]: https://github.com/Automattic/jetpack-assets/compare/v1.11.10...v1.12.0 -[1.11.10]: https://github.com/Automattic/jetpack-assets/compare/v1.11.9...v1.11.10 -[1.11.9]: https://github.com/Automattic/jetpack-assets/compare/v1.11.8...v1.11.9 -[1.11.8]: https://github.com/Automattic/jetpack-assets/compare/v1.11.7...v1.11.8 -[1.11.7]: https://github.com/Automattic/jetpack-assets/compare/v1.11.6...v1.11.7 -[1.11.6]: https://github.com/Automattic/jetpack-assets/compare/v1.11.5...v1.11.6 -[1.11.5]: https://github.com/Automattic/jetpack-assets/compare/v1.11.4...v1.11.5 -[1.11.4]: https://github.com/Automattic/jetpack-assets/compare/v1.11.3...v1.11.4 -[1.11.3]: https://github.com/Automattic/jetpack-assets/compare/v1.11.2...v1.11.3 -[1.11.2]: https://github.com/Automattic/jetpack-assets/compare/v1.11.1...v1.11.2 -[1.11.1]: https://github.com/Automattic/jetpack-assets/compare/v1.11.0...v1.11.1 -[1.11.0]: https://github.com/Automattic/jetpack-assets/compare/v1.10.0...v1.11.0 -[1.10.0]: https://github.com/Automattic/jetpack-assets/compare/v1.9.1...v1.10.0 -[1.9.1]: https://github.com/Automattic/jetpack-assets/compare/v1.9.0...v1.9.1 -[1.9.0]: https://github.com/Automattic/jetpack-assets/compare/v1.8.0...v1.9.0 -[1.8.0]: https://github.com/Automattic/jetpack-assets/compare/v1.7.0...v1.8.0 -[1.7.0]: https://github.com/Automattic/jetpack-assets/compare/v1.6.0...v1.7.0 -[1.6.0]: https://github.com/Automattic/jetpack-assets/compare/v1.5.0...v1.6.0 -[1.5.0]: https://github.com/Automattic/jetpack-assets/compare/v1.4.0...v1.5.0 -[1.4.0]: https://github.com/Automattic/jetpack-assets/compare/v1.3.0...v1.4.0 -[1.3.0]: https://github.com/Automattic/jetpack-assets/compare/v1.2.0...v1.3.0 -[1.2.0]: https://github.com/Automattic/jetpack-assets/compare/v1.1.1...v1.2.0 -[1.1.1]: https://github.com/Automattic/jetpack-assets/compare/v1.1.0...v1.1.1 -[1.1.0]: https://github.com/Automattic/jetpack-assets/compare/v1.0.3...v1.1.0 -[1.0.3]: https://github.com/Automattic/jetpack-assets/compare/v1.0.1...v1.0.3 -[1.0.1]: https://github.com/Automattic/jetpack-assets/compare/v1.0.0...v1.0.1 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/actions.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/actions.php deleted file mode 100644 index 487100d8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/actions.php +++ /dev/null @@ -1,25 +0,0 @@ - 1, - 'function' => array( Automattic\Jetpack\Assets::class, 'wp_default_scripts_hook' ), - ); - // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited - $wp_filter['plugins_loaded'][1][] = array( - 'accepted_args' => 0, - 'function' => array( Automattic\Jetpack\Assets\Script_Data::class, 'configure' ), - ); -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/build/i18n-loader.asset.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/build/i18n-loader.asset.php deleted file mode 100644 index cb123d3a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/build/i18n-loader.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('wp-i18n'), 'version' => 'becd7d9884bc1b331e45'); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/build/i18n-loader.js b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/build/i18n-loader.js deleted file mode 100644 index 2712dfa9..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/build/i18n-loader.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{var e={477:function(e){e.exports=function(e){function r(t){if(n[t])return n[t].exports;var o=n[t]={i:t,l:!1,exports:{}};return e[t].call(o.exports,o,o.exports,r),o.l=!0,o.exports}var n={};return r.m=e,r.c=n,r.i=function(e){return e},r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p="",r(r.s=1)}([function(e,r,n){"use strict";function t(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,r){for(var n=0;n>>32-o)+n&4294967295}},{key:"ff",value:function(r,n,t,o,a,i,f){return e.cmn(n&t|~n&o,r,n,a,i,f)}},{key:"gg",value:function(r,n,t,o,a,i,f){return e.cmn(n&o|t&~o,r,n,a,i,f)}},{key:"hh",value:function(r,n,t,o,a,i,f){return e.cmn(n^t^o,r,n,a,i,f)}},{key:"ii",value:function(r,n,t,o,a,i,f){return e.cmn(t^(n|~o),r,n,a,i,f)}},{key:"md51",value:function(r){for(var n=r.length,t=[1732584193,-271733879,-1732584194,271733878],o=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],a=0,i=64;i<=n;i+=64)e.md5cycle(t,e.md5blk(r.substring(i-64,i)));for(r=r.substring(i-64),i=0,a=r.length;i>2]|=r.charCodeAt(i)<<(i%4<<3);if(o[i>>2]|=128<<(i%4<<3),i>55)for(e.md5cycle(t,o),i=0;i<16;i++)o[i]=0;return o[14]=8*n,e.md5cycle(t,o),t}},{key:"md5blk",value:function(e){for(var r=[],n=0;n<64;n+=4)r[n>>2]=e.charCodeAt(n)+(e.charCodeAt(n+1)<<8)+(e.charCodeAt(n+2)<<16)+(e.charCodeAt(n+3)<<24);return r}},{key:"rhex",value:function(r){var n="";return n+=e.hexArray[r>>4&15]+e.hexArray[15&r],n+=e.hexArray[r>>12&15]+e.hexArray[r>>8&15],(n+=e.hexArray[r>>20&15]+e.hexArray[r>>16&15])+(e.hexArray[r>>28&15]+e.hexArray[r>>24&15])}},{key:"hex",value:function(r){for(var n=r.length,t=0;t{const t=n(723),{default:o}=n(477),a={plugin:"plugins/",theme:"themes/",core:""},i=(e,r)=>Object.prototype.hasOwnProperty.call(e,r);e.exports={state:{baseUrl:null,locale:null,domainMap:{},domainPaths:{}},async downloadI18n(e,r,n){const f=this.state;if(!f||"string"!=typeof f.baseUrl)throw new Error("wp.jpI18nLoader.state is not set");if("en_US"===f.locale)return;if("undefined"==typeof fetch)throw new Error("Fetch API is not available.");const u=i(f.domainPaths,r)?f.domainPaths[r]:"";let c,h;const l=e.indexOf("?");l>=0?(c=o.hash(u+e.substring(0,l)),h=e.substring(l)):(c=o.hash(u+e),h="");const s=i(f.domainMap,r)?f.domainMap[r]:a[n]+r,g=await fetch(`${f.baseUrl}${s}-${f.locale}-${c}.json${h}`);if(!g.ok)throw new Error(`HTTP request failed: ${g.status} ${g.statusText}`);const d=await g.json(),p=i(d.locale_data,r)?d.locale_data[r]:d.locale_data.messages;p[""].domain=r,t.setLocaleData(p,r)}}},723:e=>{"use strict";e.exports=window.wp.i18n}},r={};var n=function n(t){var o=r[t];if(void 0!==o)return o.exports;var a=r[t]={exports:{}};return e[t].call(a.exports,a,a.exports,n),a.exports}(305);(window.wp=window.wp||{}).jpI18nLoader=n})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/build/jetpack-script-data.asset.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/build/jetpack-script-data.asset.php deleted file mode 100644 index d992ed4e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/build/jetpack-script-data.asset.php +++ /dev/null @@ -1 +0,0 @@ - array(), 'version' => '7f1c9fc474dccfef702f'); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/build/jetpack-script-data.js b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/build/jetpack-script-data.js deleted file mode 100644 index 05b7d3f7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/build/jetpack-script-data.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.JetpackScriptDataModule=t():e.JetpackScriptDataModule=t()}(globalThis,(()=>(()=>{"use strict";var e={729:(e,t,r)=>{r.d(t,{$8:()=>n.$8,IT:()=>n.IT,L2:()=>n.L2,Sy:()=>n.Sy,au:()=>n.au,d9:()=>n.d9,d_:()=>n.d_,e5:()=>n.e5,hT:()=>n.hT,lI:()=>n.lI,mH:()=>n.mH,oQ:()=>n.oQ,sV:()=>n.sV});var n=r(336)},336:(e,t,r)=>{function n(){return window.JetpackScriptData}function o(){return n().site}function i(e=""){return`${n().site.admin_url}${e}`}function u(e=""){return i(`admin.php?page=jetpack${e}`)}function a(e=""){return i(`admin.php?page=my-jetpack${e}`)}function c(){return n().site.plan?.features?.active??[]}function s(e){return c().includes(e)}function p(){return"wpcom"===n().site?.host}function d(){return"atomic"===n().site?.host}function f(){return"woa"===n().site?.host}function l(){return p()||f()}function m(){return"unknown"===n()?.site?.host}function S(e){return n().user.current_user.capabilities[e]}r.d(t,{$8:()=>l,IT:()=>s,L2:()=>m,Sy:()=>p,au:()=>n,d9:()=>d,d_:()=>S,e5:()=>a,hT:()=>i,lI:()=>f,mH:()=>c,oQ:()=>u,sV:()=>o})}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={exports:{}};return e[n](i,i.exports,r),i.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};r.r(n),r.d(n,{currentUserCan:()=>o.d_,getActiveFeatures:()=>o.mH,getAdminUrl:()=>o.hT,getJetpackAdminPageUrl:()=>o.oQ,getMyJetpackUrl:()=>o.e5,getScriptData:()=>o.au,getSiteData:()=>o.sV,isAtomicSite:()=>o.d9,isJetpackSelfHostedSite:()=>o.L2,isSimpleSite:()=>o.Sy,isWoASite:()=>o.lI,isWpcomPlatformSite:()=>o.$8,siteHasFeature:()=>o.IT});var o=r(729);return n})())); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/composer.json deleted file mode 100644 index 28811daa..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/composer.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "automattic/jetpack-assets", - "description": "Asset management utilities for Jetpack ecosystem packages", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2", - "automattic/jetpack-constants": "^3.0.5" - }, - "require-dev": { - "brain/monkey": "^2.6.2", - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "wikimedia/testing-access-wrapper": "^1.0 || ^2.0 || ^3.0", - "automattic/phpunit-select-config": "^1.0.1" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "autoload": { - "files": [ - "actions.php" - ], - "classmap": [ - "src/" - ] - }, - "scripts": { - "build-development": [ - "pnpm run build" - ], - "build-production": [ - "pnpm run build-production" - ], - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": "pnpm concurrently --names php,js 'php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"' 'pnpm:test-coverage'", - "test-js": [ - "pnpm run test" - ], - "test-php": [ - "@composer phpunit" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-assets", - "textdomain": "jetpack-assets", - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-assets/compare/v${old}...v${new}" - }, - "branch-alias": { - "dev-trunk": "4.0.x-dev" - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/src/class-assets.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/src/class-assets.php deleted file mode 100644 index 71725eec..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-assets/src/class-assets.php +++ /dev/null @@ -1,763 +0,0 @@ - array( string target_domain, string target_type, string semver, string path_prefix ) )`. - */ - private static $domain_map = array(); - - /** - * Constructor. - * - * Static-only class, so nothing here. - */ - private function __construct() {} - - // //////////////////// - // region Async script loading - - /** - * Get the singleton instance of the class. - * - * @return Assets - */ - public static function instance() { - if ( ! isset( self::$instance ) ) { - self::$instance = new Assets(); - } - - return self::$instance; - } - - /** - * A public method for adding the async script. - * - * @deprecated Since 2.1.0, the `strategy` feature should be used instead, with the "defer" setting. - * - * @param string $script_handle Script handle. - */ - public static function add_async_script( $script_handle ) { - _deprecated_function( __METHOD__, '2.1.0' ); - - wp_script_add_data( $script_handle, 'strategy', 'defer' ); - } - - /** - * Add an async attribute to scripts that can be loaded deferred. - * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script - * - * @deprecated Since 2.1.0, the `strategy` feature should be used instead. - * - * @param string $tag The - ' . esc_html__( 'Every Jetpack site needs at least one connected admin for the features to work properly. Please connect to your WordPress.com account via the button below. Once you connect, you may refresh this page to see an option to change the connection owner.', 'jetpack-connection' ) . '

            '; - $connect_url = $connection_manager->get_authorization_url(); - $connect_url = add_query_arg( 'from', 'delete_connection_owner_notice', $connect_url ); - echo "" . esc_html__( 'Connect to WordPress.com', 'jetpack-connection' ) . ''; - } - - echo '

            '; - printf( - wp_kses( - /* translators: URL to Jetpack support doc regarding the primary user. */ - __( "Learn more about the connection owner and what will break if you do not have one.", 'jetpack-connection' ), - array( - 'a' => array( - 'href' => true, - 'target' => true, - 'rel' => true, - ), - ) - ), - esc_url( Redirect::get_url( 'jetpack-support-primary-user' ) ) - ); - echo '

            '; - echo '

            '; - printf( - wp_kses( - /* translators: URL to contact Jetpack support. */ - __( 'As always, feel free to contact our support team if you have any questions.', 'jetpack-connection' ), - array( - 'a' => array( - 'href' => true, - 'target' => true, - 'rel' => true, - ), - ) - ), - esc_url( Redirect::get_url( 'jetpack-contact-support' ) ) - ); - echo '

            '; - echo ''; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-error-handler.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-error-handler.php deleted file mode 100644 index 55b65b62..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-error-handler.php +++ /dev/null @@ -1,780 +0,0 @@ - [ - * $user_id => [ - * $error_details - * ] - * ] - * ] - * - * For each error code we store a maximum of 5 errors for 5 different user ids. - * - * An user ID can be - * * 0 for blog tokens - * * positive integer for user tokens - * * 'invalid' for malformed tokens - * - * @since 1.14.2 - */ -class Error_Handler { - - /** - * The name of the option that stores the errors - * - * @since 1.14.2 - * - * @var string - */ - const STORED_ERRORS_OPTION = 'jetpack_connection_xmlrpc_errors'; - - /** - * The name of the option that stores the errors - * - * @since 1.14.2 - * - * @var string - */ - const STORED_VERIFIED_ERRORS_OPTION = 'jetpack_connection_xmlrpc_verified_errors'; - - /** - * The prefix of the transient that controls the gate for each error code - * - * @since 1.14.2 - * - * @var string - */ - const ERROR_REPORTING_GATE = 'jetpack_connection_error_reporting_gate_'; - - /** - * Time in seconds a test should live in the database before being discarded - * - * @since 1.14.2 - */ - const ERROR_LIFE_TIME = DAY_IN_SECONDS; - - /** - * The error code for event tracking purposes. - * If there are many, only the first error code will be tracked. - * - * @var string - */ - private $error_code; - - /** - * List of known errors. Only error codes in this list will be handled - * - * @since 1.14.2 - * - * @var array - */ - public $known_errors = array( - 'malformed_token', - 'malformed_user_id', - 'unknown_user', - 'no_user_tokens', - 'empty_master_user_option', - 'no_token_for_user', - 'token_malformed', - 'user_id_mismatch', - 'no_possible_tokens', - 'no_valid_user_token', - 'no_valid_blog_token', - 'unknown_token', - 'could_not_sign', - 'invalid_scheme', - 'invalid_secret', - 'invalid_token', - 'token_mismatch', - 'invalid_body', - 'invalid_signature', - 'invalid_body_hash', - 'invalid_nonce', - 'signature_mismatch', - 'invalid_connection_owner', - ); - - /** - * Holds the instance of this singleton class - * - * @since 1.14.2 - * - * @var Error_Handler $instance - */ - public static $instance = null; - - /** - * Initialize instance, hookds and load verified errors handlers - * - * @since 1.14.2 - */ - private function __construct() { - defined( 'JETPACK__ERRORS_PUBLIC_KEY' ) || define( 'JETPACK__ERRORS_PUBLIC_KEY', 'KdZY80axKX+nWzfrOcizf0jqiFHnrWCl9X8yuaClKgM=' ); - - add_action( 'rest_api_init', array( $this, 'register_verify_error_endpoint' ) ); - - // Handle verified errors on admin pages. - add_action( 'admin_init', array( $this, 'handle_verified_errors' ) ); - - // If the site gets reconnected, clear errors. - add_action( 'jetpack_site_registered', array( $this, 'delete_all_errors' ) ); - add_action( 'jetpack_get_site_data_success', array( $this, 'delete_all_api_errors' ) ); - add_filter( 'jetpack_connection_disconnect_site_wpcom', array( $this, 'delete_all_errors_and_return_unfiltered_value' ) ); - add_filter( 'jetpack_connection_delete_all_tokens', array( $this, 'delete_all_errors_and_return_unfiltered_value' ) ); - add_action( 'jetpack_unlinked_user', array( $this, 'delete_all_errors' ) ); - add_action( 'jetpack_updated_user_token', array( $this, 'delete_all_errors' ) ); - } - - /** - * Gets the list of verified errors and act upon them - * - * @since 1.14.2 - * - * @return void - */ - public function handle_verified_errors() { - $verified_errors = $this->get_verified_errors(); - foreach ( array_keys( $verified_errors ) as $error_code ) { - switch ( $error_code ) { - case 'malformed_token': - case 'token_malformed': - case 'no_possible_tokens': - case 'no_valid_user_token': - case 'no_valid_blog_token': - case 'unknown_token': - case 'could_not_sign': - case 'invalid_token': - case 'token_mismatch': - case 'invalid_signature': - case 'signature_mismatch': - case 'no_user_tokens': - case 'no_token_for_user': - case 'invalid_connection_owner': - add_action( 'admin_notices', array( $this, 'generic_admin_notice_error' ) ); - add_action( 'react_connection_errors_initial_state', array( $this, 'jetpack_react_dashboard_error' ) ); - $this->error_code = $error_code; - - // Since we are only generically handling errors, we don't need to trigger error messages for each one of them. - break 2; - } - } - } - - /** - * Gets the instance of this singleton class - * - * @since 1.14.2 - * - * @return Error_Handler $instance - */ - public static function get_instance() { - if ( self::$instance === null ) { - self::$instance = new self(); - } - return self::$instance; - } - - /** - * Keep track of a connection error that was encountered - * - * @param \WP_Error $error The error object. - * @param boolean $force Force the report, even if should_report_error is false. - * @param boolean $skip_wpcom_verification Set to 'true' to verify the error locally and skip the WP.com verification. - * - * @return void - * @since 1.14.2 - */ - public function report_error( \WP_Error $error, $force = false, $skip_wpcom_verification = false ) { - if ( in_array( $error->get_error_code(), $this->known_errors, true ) && $this->should_report_error( $error ) || $force ) { - $stored_error = $this->store_error( $error ); - if ( $stored_error ) { - $skip_wpcom_verification ? $this->verify_error( $stored_error ) : $this->send_error_to_wpcom( $stored_error ); - } - } - } - - /** - * Checks the status of the gate - * - * This protects the site (and WPCOM) against over loads. - * - * @since 1.14.2 - * - * @param \WP_Error $error the error object. - * @return boolean $should_report True if gate is open and the error should be reported. - */ - public function should_report_error( \WP_Error $error ) { - if ( defined( 'JETPACK_DEV_DEBUG' ) && JETPACK_DEV_DEBUG ) { - return true; - } - - /** - * Whether to bypass the gate for the error handling - * - * By default, we only process errors once an hour for each error code. - * This is done to avoid overflows. If you need to disable this gate, you can set this variable to true. - * - * This filter is useful for unit testing - * - * @since 1.14.2 - * - * @param boolean $bypass_gate whether to bypass the gate. Default is false, do not bypass. - */ - $bypass_gate = apply_filters( 'jetpack_connection_bypass_error_reporting_gate', false ); - if ( true === $bypass_gate ) { - return true; - } - - $transient = self::ERROR_REPORTING_GATE . $error->get_error_code(); - - if ( get_transient( $transient ) ) { - return false; - } - - set_transient( $transient, true, HOUR_IN_SECONDS ); - return true; - } - - /** - * Stores the error in the database so we know there is an issue and can inform the user - * - * @since 1.14.2 - * - * @param \WP_Error $error the error object. - * @return boolean|array False if stored errors were not updated and the error array if it was successfully stored. - */ - public function store_error( \WP_Error $error ) { - - $stored_errors = $this->get_stored_errors(); - $error_array = $this->wp_error_to_array( $error ); - $error_code = $error->get_error_code(); - $user_id = $error_array['user_id']; - - if ( ! isset( $stored_errors[ $error_code ] ) || ! is_array( $stored_errors[ $error_code ] ) ) { - $stored_errors[ $error_code ] = array(); - } - - $stored_errors[ $error_code ][ $user_id ] = $error_array; - - // Let's store a maximum of 5 different user ids for each error code. - $error_code_count = is_countable( $stored_errors[ $error_code ] ) ? count( $stored_errors[ $error_code ] ) : 0; - if ( $error_code_count > 5 ) { - // array_shift will destroy keys here because they are numeric, so manually remove first item. - $keys = array_keys( $stored_errors[ $error_code ] ); - unset( $stored_errors[ $error_code ][ $keys[0] ] ); - } - - if ( update_option( self::STORED_ERRORS_OPTION, $stored_errors ) ) { - return $error_array; - } - - return false; - } - - /** - * Converts a WP_Error object in the array representation we store in the database - * - * @since 1.14.2 - * - * @param \WP_Error $error the error object. - * @return boolean|array False if error is invalid or the error array - */ - public function wp_error_to_array( \WP_Error $error ) { - - $data = $error->get_error_data(); - - if ( ! isset( $data['signature_details'] ) || ! is_array( $data['signature_details'] ) ) { - return false; - } - - $signature_details = $data['signature_details']; - - if ( ! isset( $signature_details['token'] ) ) { - return false; - } - - $user_id = $this->get_user_id_from_token( $signature_details['token'] ); - - $error_array = array( - 'error_code' => $error->get_error_code(), - 'user_id' => $user_id, - 'error_message' => $error->get_error_message(), - 'error_data' => $signature_details, - 'timestamp' => time(), - 'nonce' => wp_generate_password( 10, false ), - 'error_type' => empty( $data['error_type'] ) ? '' : $data['error_type'], - ); - - return $error_array; - } - - /** - * Sends the error to WP.com to be verified - * - * @since 1.14.2 - * - * @param array $error_array The array representation of the error as it is stored in the database. - * @return bool - */ - public function send_error_to_wpcom( $error_array ) { - - $blog_id = \Jetpack_Options::get_option( 'id' ); - - $encrypted_data = $this->encrypt_data_to_wpcom( $error_array ); - - if ( false === $encrypted_data ) { - return false; - } - - $args = array( - 'body' => array( - 'error_data' => $encrypted_data, - ), - ); - - // send encrypted data to WP.com Public-API v2. - wp_remote_post( "https://public-api.wordpress.com/wpcom/v2/sites/{$blog_id}/jetpack-report-error/", $args ); - return true; - } - - /** - * Encrypt data to be sent over to WP.com - * - * @since 1.14.2 - * - * @param array|string $data the data to be encoded. - * @return boolean|string The encoded string on success, false on failure - */ - public function encrypt_data_to_wpcom( $data ) { - - try { - // phpcs:disable WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode - // phpcs:disable WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode - $encrypted_data = base64_encode( sodium_crypto_box_seal( wp_json_encode( $data ), base64_decode( JETPACK__ERRORS_PUBLIC_KEY ) ) ); - // phpcs:enable WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode - // phpcs:enable WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode - } catch ( \SodiumException $e ) { - // error encrypting data. - return false; - } - - return $encrypted_data; - } - - /** - * Extracts the user ID from a token - * - * @since 1.14.2 - * - * @param string $token the token used to make the request. - * @return string $the user id or `invalid` if user id not present. - */ - public function get_user_id_from_token( $token ) { - $user_id = 'invalid'; - - if ( $token ) { - $parsed_token = explode( ':', wp_unslash( $token ) ); - - if ( isset( $parsed_token[2] ) && ctype_digit( $parsed_token[2] ) ) { - $user_id = $parsed_token[2]; - } - } - - return $user_id; - } - - /** - * Gets the reported errors stored in the database - * - * @since 1.14.2 - * - * @return array $errors - */ - public function get_stored_errors() { - - $stored_errors = get_option( self::STORED_ERRORS_OPTION ); - - if ( ! is_array( $stored_errors ) ) { - $stored_errors = array(); - } - - $stored_errors = $this->garbage_collector( $stored_errors ); - - return $stored_errors; - } - - /** - * Gets the verified errors stored in the database - * - * @since 1.14.2 - * - * @return array $errors - */ - public function get_verified_errors() { - - $verified_errors = get_option( self::STORED_VERIFIED_ERRORS_OPTION ); - - if ( ! is_array( $verified_errors ) ) { - $verified_errors = array(); - } - - $verified_errors = $this->garbage_collector( $verified_errors ); - - return $verified_errors; - } - - /** - * Removes expired errors from the array - * - * This method is called by get_stored_errors and get_verified errors and filters their result - * Whenever a new error is stored to the database or verified, this will be triggered and the - * expired error will be permantently removed from the database - * - * @since 1.14.2 - * - * @param array $errors array of errors as stored in the database. - * @return array - */ - private function garbage_collector( $errors ) { - foreach ( $errors as $error_code => $users ) { - foreach ( $users as $user_id => $error ) { - if ( self::ERROR_LIFE_TIME < time() - (int) $error['timestamp'] ) { - unset( $errors[ $error_code ][ $user_id ] ); - } - } - } - // Clear empty error codes. - $errors = array_filter( - $errors, - function ( $user_errors ) { - return ! empty( $user_errors ); - } - ); - return $errors; - } - - /** - * Delete all stored and verified errors from the database - * - * @since 1.14.2 - * - * @return void - */ - public function delete_all_errors() { - $this->delete_stored_errors(); - $this->delete_verified_errors(); - } - - /** - * Delete all stored and verified API errors from the database, leave the non-API errors intact. - * - * @since 1.54.0 - * - * @return void - */ - public function delete_all_api_errors() { - $type_filter = function ( $errors ) { - if ( is_array( $errors ) ) { - foreach ( $errors as $key => $error ) { - if ( ! empty( $error['error_type'] ) && in_array( $error['error_type'], array( 'xmlrpc', 'rest' ), true ) ) { - unset( $errors[ $key ] ); - } - } - } - - return count( $errors ) ? $errors : null; - }; - - $stored_errors = $this->get_stored_errors(); - if ( is_array( $stored_errors ) && count( $stored_errors ) ) { - $stored_errors = array_filter( array_map( $type_filter, $stored_errors ) ); - if ( count( $stored_errors ) ) { - update_option( static::STORED_ERRORS_OPTION, $stored_errors ); - } else { - delete_option( static::STORED_ERRORS_OPTION ); - } - } - - $verified_errors = $this->get_verified_errors(); - if ( is_array( $verified_errors ) && count( $verified_errors ) ) { - $verified_errors = array_filter( array_map( $type_filter, $verified_errors ) ); - if ( count( $verified_errors ) ) { - update_option( static::STORED_VERIFIED_ERRORS_OPTION, $verified_errors ); - } else { - delete_option( static::STORED_VERIFIED_ERRORS_OPTION ); - } - } - } - - /** - * Delete all stored and verified errors from the database and returns unfiltered value - * - * This is used to hook into a couple of filters that expect true to not short circuit the disconnection flow - * - * @since 8.9.0 - * - * @param mixed $check The input sent by the filter. - * @return boolean - */ - public function delete_all_errors_and_return_unfiltered_value( $check ) { - $this->delete_all_errors(); - return $check; - } - - /** - * Delete the reported errors stored in the database - * - * @since 1.14.2 - * - * @return boolean True, if option is successfully deleted. False on failure. - */ - public function delete_stored_errors() { - return delete_option( self::STORED_ERRORS_OPTION ); - } - - /** - * Delete the verified errors stored in the database - * - * @since 1.14.2 - * - * @return boolean True, if option is successfully deleted. False on failure. - */ - public function delete_verified_errors() { - return delete_option( self::STORED_VERIFIED_ERRORS_OPTION ); - } - - /** - * Gets an error based on the nonce - * - * Receives a nonce and finds the related error. - * - * @since 1.14.2 - * - * @param string $nonce The nonce created for the error we want to get. - * @return null|array Returns the error array representation or null if error not found. - */ - public function get_error_by_nonce( $nonce ) { - $errors = $this->get_stored_errors(); - foreach ( $errors as $user_group ) { - foreach ( $user_group as $error ) { - if ( $error['nonce'] === $nonce ) { - return $error; - } - } - } - return null; - } - - /** - * Adds an error to the verified error list - * - * @since 1.14.2 - * - * @param array $error The error array, as it was saved in the unverified errors list. - * @return void - */ - public function verify_error( $error ) { - - $verified_errors = $this->get_verified_errors(); - $error_code = $error['error_code']; - $user_id = $error['user_id']; - - if ( ! isset( $verified_errors[ $error_code ] ) ) { - $verified_errors[ $error_code ] = array(); - } - - $verified_errors[ $error_code ][ $user_id ] = $error; - - update_option( self::STORED_VERIFIED_ERRORS_OPTION, $verified_errors ); - } - - /** - * Register REST API end point for error hanlding. - * - * @since 1.14.2 - * - * @return void - */ - public function register_verify_error_endpoint() { - register_rest_route( - 'jetpack/v4', - '/verify_xmlrpc_error', - array( - 'methods' => \WP_REST_Server::CREATABLE, - 'callback' => array( $this, 'verify_xml_rpc_error' ), - 'permission_callback' => '__return_true', - 'args' => array( - 'nonce' => array( - 'required' => true, - 'type' => 'string', - ), - ), - ) - ); - } - - /** - * Handles verification that a xml rpc error is legit and came from WordPres.com - * - * @since 1.14.2 - * - * @param \WP_REST_Request $request The request sent to the WP REST API. - * - * @return boolean - */ - public function verify_xml_rpc_error( \WP_REST_Request $request ) { - $error = $this->get_error_by_nonce( $request['nonce'] ); - - if ( $error ) { - $this->verify_error( $error ); - return new \WP_REST_Response( true, 200 ); - } - - return new \WP_REST_Response( false, 200 ); - } - - /** - * Prints a generic error notice for all connection errors - * - * @since 8.9.0 - * - * @return void - */ - public function generic_admin_notice_error() { - // do not add admin notice to the jetpack dashboard. - global $pagenow; - if ( 'admin.php' === $pagenow || isset( $_GET['page'] ) && 'jetpack' === $_GET['page'] ) { // phpcs:ignore - return; - } - - if ( ! current_user_can( 'jetpack_connect' ) ) { - return; - } - - /** - * Filters the message to be displayed in the admin notices area when there's a connection error. - * - * By default we don't display any errors. - * - * Return an empty value to disable the message. - * - * @since 8.9.0 - * - * @param string $message The error message. - * @param array $errors The array of errors. See Automattic\Jetpack\Connection\Error_Handler for details on the array structure. - */ - $message = apply_filters( 'jetpack_connection_error_notice_message', '', $this->get_verified_errors() ); - - /** - * Fires inside the admin_notices hook just before displaying the error message for a broken connection. - * - * If you want to disable the default message from being displayed, return an empty value in the jetpack_connection_error_notice_message filter. - * - * @since 8.9.0 - * - * @param array $errors The array of errors. See Automattic\Jetpack\Connection\Error_Handler for details on the array structure. - */ - do_action( 'jetpack_connection_error_notice', $this->get_verified_errors() ); - - if ( empty( $message ) ) { - return; - } - - wp_admin_notice( - esc_html( $message ), - array( - 'type' => 'error', - 'dismissible' => true, - 'additional_classes' => array( 'jetpack-message', 'jp-connect' ), - 'attributes' => array( 'style' => 'display:block !important;' ), - ) - ); - } - - /** - * Adds the error message to the Jetpack React Dashboard - * - * @since 8.9.0 - * - * @param array $errors The array of errors. See Automattic\Jetpack\Connection\Error_Handler for details on the array structure. - * @return array - */ - public function jetpack_react_dashboard_error( $errors ) { - $errors[] = array( - 'code' => 'connection_error', - 'message' => __( 'Your connection with WordPress.com seems to be broken. If you\'re experiencing issues, please try reconnecting.', 'jetpack-connection' ), - 'action' => 'reconnect', - 'data' => array( 'api_error_code' => $this->error_code ), - ); - return $errors; - } - - /** - * Check REST API response for errors, and report them to WP.com if needed. - * - * @see wp_remote_request() For more information on the $http_response array format. - * @param array|\WP_Error $http_response The response or WP_Error on failure. - * @param array $auth_data Auth data, allowed keys: `token`, `timestamp`, `nonce`, `body-hash`. - * @param string $url Request URL. - * @param string $method Request method. - * @param string $error_type The source of an error: 'xmlrpc' or 'rest'. - * - * @return void - */ - public function check_api_response_for_errors( $http_response, $auth_data, $url, $method, $error_type ) { - if ( 200 === wp_remote_retrieve_response_code( $http_response ) || ! is_array( $auth_data ) || ! $url || ! $method ) { - return; - } - - $body_raw = wp_remote_retrieve_body( $http_response ); - if ( ! $body_raw ) { - return; - } - - $body = json_decode( $body_raw, true ); - if ( empty( $body['error'] ) || ( ! is_string( $body['error'] ) && ! is_int( $body['error'] ) ) ) { - return; - } - - $error = new \WP_Error( - $body['error'], - empty( $body['message'] ) ? '' : $body['message'], - array( - 'signature_details' => array( - 'token' => empty( $auth_data['token'] ) ? '' : $auth_data['token'], - 'timestamp' => empty( $auth_data['timestamp'] ) ? '' : $auth_data['timestamp'], - 'nonce' => empty( $auth_data['nonce'] ) ? '' : $auth_data['nonce'], - 'body_hash' => empty( $auth_data['body_hash'] ) ? '' : $auth_data['body_hash'], - 'method' => $method, - 'url' => $url, - ), - 'error_type' => in_array( $error_type, array( 'xmlrpc', 'rest' ), true ) ? $error_type : '', - ) - ); - - $this->report_error( $error, false, true ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-heartbeat.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-heartbeat.php deleted file mode 100644 index cc32b536..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-heartbeat.php +++ /dev/null @@ -1,310 +0,0 @@ -cron_name, array( $this, 'cron_exec' ) ); - - if ( ! wp_next_scheduled( $this->cron_name ) ) { - // Deal with the old pre-3.0 weekly one. - $timestamp = wp_next_scheduled( 'jetpack_heartbeat' ); - if ( $timestamp ) { - wp_unschedule_event( $timestamp, 'jetpack_heartbeat' ); - } - - wp_schedule_event( time(), 'daily', $this->cron_name ); - } - - add_filter( 'jetpack_xmlrpc_unauthenticated_methods', array( __CLASS__, 'jetpack_xmlrpc_methods' ) ); - - if ( defined( 'WP_CLI' ) && WP_CLI ) { - WP_CLI::add_command( 'jetpack-heartbeat', array( $this, 'cli_callback' ) ); - } - - add_action( 'rest_api_init', array( $this, 'initialize_rest_api' ) ); - } - - /** - * Method that gets executed on the wp-cron call - * - * @since 1.0.0 - * @since-jetpack 2.3.3 - * @global string $wp_version - */ - public function cron_exec() { - - $a8c_mc_stats = new A8c_Mc_Stats(); - - /* - * This should run daily. Figuring in for variances in - * WP_CRON, don't let it run more than every 23 hours at most. - * - * i.e. if it ran less than 23 hours ago, fail out. - */ - $last = (int) Jetpack_Options::get_option( 'last_heartbeat' ); - if ( $last && ( $last + DAY_IN_SECONDS - HOUR_IN_SECONDS > time() ) ) { - return; - } - - /* - * Check for an identity crisis - * - * If one exists: - * - Bump stat for ID crisis - * - Email site admin about potential ID crisis - */ - - // Coming Soon! - - foreach ( self::generate_stats_array( 'v2-' ) as $key => $value ) { - if ( is_array( $value ) ) { - foreach ( $value as $v ) { - $a8c_mc_stats->add( $key, (string) $v ); - } - } else { - $a8c_mc_stats->add( $key, (string) $value ); - } - } - - Jetpack_Options::update_option( 'last_heartbeat', time() ); - - $a8c_mc_stats->do_server_side_stats(); - - /** - * Fires when we synchronize all registered options on heartbeat. - * - * @since 3.3.0 - */ - do_action( 'jetpack_heartbeat' ); - } - - /** - * Generates heartbeat stats data. - * - * @param string $prefix Prefix to add before stats identifier. - * - * @return array The stats array. - */ - public static function generate_stats_array( $prefix = '' ) { - - /** - * This filter is used to build the array of stats that are bumped once a day by Jetpack Heartbeat. - * - * Filter the array and add key => value pairs where - * * key is the stat group name - * * value is the stat name. - * - * Example: - * add_filter( 'jetpack_heartbeat_stats_array', function( $stats ) { - * $stats['is-https'] = is_ssl() ? 'https' : 'http'; - * }); - * - * This will bump the stats for the 'is-https/https' or 'is-https/http' stat. - * - * @param array $stats The stats to be filtered. - * @param string $prefix The prefix that will automatically be added at the begining at each stat group name. - */ - $stats = apply_filters( 'jetpack_heartbeat_stats_array', array(), $prefix ); - $return = array(); - - // Apply prefix to stats. - foreach ( $stats as $stat => $value ) { - $return[ "$prefix$stat" ] = $value; - } - - return $return; - } - - /** - * Registers jetpack.getHeartbeatData xmlrpc method - * - * @param array $methods The list of methods to be filtered. - * @return array $methods - */ - public static function jetpack_xmlrpc_methods( $methods ) { - $methods['jetpack.getHeartbeatData'] = array( __CLASS__, 'xmlrpc_data_response' ); - return $methods; - } - - /** - * Handles the response for the jetpack.getHeartbeatData xmlrpc method - * - * @param array $params The parameters received in the request. - * @return array $params all the stats that heartbeat handles. - */ - public static function xmlrpc_data_response( $params = array() ) { - // The WordPress XML-RPC server sets a default param of array() - // if no argument is passed on the request and the method handlers get this array in $params. - // generate_stats_array() needs a string as first argument. - $params = empty( $params ) ? '' : $params; - return self::generate_stats_array( $params ); - } - - /** - * Clear scheduled events - * - * @return void - */ - public function deactivate() { - // Deal with the old pre-3.0 weekly one. - $timestamp = wp_next_scheduled( 'jetpack_heartbeat' ); - if ( $timestamp ) { - wp_unschedule_event( $timestamp, 'jetpack_heartbeat' ); - } - - $timestamp = wp_next_scheduled( $this->cron_name ); - wp_unschedule_event( $timestamp, $this->cron_name ); - } - - /** - * Interact with the Heartbeat - * - * ## OPTIONS - * - * inspect (default): Gets the list of data that is going to be sent in the heartbeat and the date/time of the last heartbeat - * - * @param array $args Arguments passed via CLI. - * - * @return void - */ - public function cli_callback( $args ) { - - $allowed_args = array( - 'inspect', - ); - - if ( isset( $args[0] ) && ! in_array( $args[0], $allowed_args, true ) ) { - /* translators: %s is a command like "prompt" */ - WP_CLI::error( sprintf( __( '%s is not a valid command.', 'jetpack-connection' ), $args[0] ) ); - } - - $stats = self::generate_stats_array(); - $formatted_stats = array(); - - foreach ( $stats as $stat_name => $bin ) { - $formatted_stats[] = array( - 'Stat name' => $stat_name, - 'Bin' => $bin, - ); - } - - WP_CLI\Utils\format_items( 'table', $formatted_stats, array( 'Stat name', 'Bin' ) ); - - $last_heartbeat = Jetpack_Options::get_option( 'last_heartbeat' ); - - if ( $last_heartbeat ) { - $last_date = gmdate( 'Y-m-d H:i:s', $last_heartbeat ); - /* translators: %s is the full datetime of the last heart beat e.g. 2020-01-01 12:21:23 */ - WP_CLI::line( sprintf( __( 'Last heartbeat sent at: %s', 'jetpack-connection' ), $last_date ) ); - } - } - - /** - * Initialize the heartbeat REST API. - * - * @return void - */ - public function initialize_rest_api() { - register_rest_route( - 'jetpack/v4', - '/heartbeat/data', - array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => array( $this, 'rest_heartbeat_data' ), - 'permission_callback' => array( $this, 'rest_heartbeat_data_permission_check' ), - 'args' => array( - 'prefix' => array( - 'description' => __( 'Prefix to add before the stats identifiers.', 'jetpack-connection' ), - 'type' => 'string', - ), - ), - ) - ); - } - - /** - * Endpoint to retrieve the heartbeat data. - * - * @param WP_REST_Request $request The request data. - * - * @since 2.7.0 - * - * @return array - */ - public function rest_heartbeat_data( WP_REST_Request $request ) { - return static::generate_stats_array( $request->get_param( 'prefix' ) ); - } - - /** - * Check permissions for the `get_heartbeat_data` endpoint. - * - * @return true|WP_Error - */ - public function rest_heartbeat_data_permission_check() { - if ( current_user_can( 'jetpack_connect' ) ) { - return true; - } - - return Rest_Authentication::is_signed_with_blog_token() - ? true - : new WP_Error( 'invalid_permission_heartbeat_data', REST_Connector::get_user_permissions_error_msg(), array( 'status' => rest_authorization_required_code() ) ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-initial-state.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-initial-state.php deleted file mode 100644 index 5f44ab4a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-initial-state.php +++ /dev/null @@ -1,73 +0,0 @@ - esc_url_raw( rest_url() ), - 'apiNonce' => wp_create_nonce( 'wp_rest' ), - 'registrationNonce' => wp_create_nonce( 'jetpack-registration-nonce' ), - 'connectionStatus' => REST_Connector::connection_status( false ), - 'userConnectionData' => REST_Connector::get_user_connection_data( false ), - 'connectedPlugins' => REST_Connector::get_connection_plugins( false ), - 'wpVersion' => $wp_version, - 'siteSuffix' => $status->get_site_suffix(), - 'connectionErrors' => Error_Handler::get_instance()->get_verified_errors(), - 'isOfflineMode' => $status->is_offline_mode(), - 'calypsoEnv' => ( new Status\Host() )->get_calypso_env(), - ); - } - - /** - * Set the connection script data. - * - * @param array $data The script data. - */ - public static function set_connection_script_data( $data ) { - - $data['connection'] = self::get_data(); - - return $data; - } - - /** - * Render the initial state into a JavaScript variable. - * - * @return string - */ - public static function render() { - return 'var JP_CONNECTION_INITIAL_STATE; typeof JP_CONNECTION_INITIAL_STATE === "object" || (JP_CONNECTION_INITIAL_STATE = JSON.parse(decodeURIComponent("' . rawurlencode( wp_json_encode( self::get_data() ) ) . '")));'; - } - - /** - * Render the initial state using an inline script. - * - * @param string $handle The JS script handle. - * - * @return void - */ - public static function render_script( $handle ) { - wp_add_inline_script( $handle, static::render(), 'before' ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-manager.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-manager.php deleted file mode 100644 index 73af0210..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-manager.php +++ /dev/null @@ -1,2768 +0,0 @@ -set_plugin_instance( new Plugin( $plugin_slug ) ); - } - } - - /** - * Initializes required listeners. This is done separately from the constructors - * because some objects sometimes need to instantiate separate objects of this class. - * - * @todo Implement a proper nonce verification. - */ - public static function configure() { - $manager = new self(); - - add_filter( - 'jetpack_constant_default_value', - __NAMESPACE__ . '\Utils::jetpack_api_constant_filter', - 10, - 2 - ); - - $manager->setup_xmlrpc_handlers( - null, - $manager->has_connected_owner(), - $manager->verify_xml_rpc_signature() - ); - - $manager->error_handler = Error_Handler::get_instance(); - - if ( $manager->is_connected() ) { - add_filter( 'xmlrpc_methods', array( $manager, 'public_xmlrpc_methods' ) ); - add_filter( 'shutdown', array( new Package_Version_Tracker(), 'maybe_update_package_versions' ) ); - } - - // This runs on priority 11 - at least one api method in the connection package is set to override a previously - // existing method from the Jetpack plugin. Running later than Jetpack's api init ensures the override is successful. - add_action( 'rest_api_init', array( $manager, 'initialize_rest_api_registration_connector' ), 11 ); - - ( new Nonce_Handler() )->init_schedule(); - - add_action( 'plugins_loaded', __NAMESPACE__ . '\Plugin_Storage::configure', 100 ); - - add_filter( 'map_meta_cap', array( $manager, 'jetpack_connection_custom_caps' ), 1, 4 ); - - Heartbeat::init(); - add_filter( 'jetpack_heartbeat_stats_array', array( $manager, 'add_stats_to_heartbeat' ) ); - - Webhooks::init( $manager ); - - // Unlink user before deleting the user from WP.com. - add_action( 'deleted_user', array( $manager, 'disconnect_user_force' ), 9, 1 ); - add_action( 'remove_user_from_blog', array( $manager, 'disconnect_user_force' ), 9, 1 ); - - $manager->add_connection_status_invalidation_hooks(); - - // Set up package version hook. - add_filter( 'jetpack_package_versions', __NAMESPACE__ . '\Package_Version::send_package_version_to_tracker' ); - - if ( defined( 'JETPACK__SANDBOX_DOMAIN' ) && JETPACK__SANDBOX_DOMAIN ) { - ( new Server_Sandbox() )->init(); - } - - // Initialize connection notices. - new Connection_Notice(); - - // Initialize token locks. - new Tokens_Locks(); - - // Initial Partner management. - Partner::init(); - } - - /** - * Adds hooks to invalidate the memoized connection status. - */ - private function add_connection_status_invalidation_hooks() { - if ( self::$connection_invalidators_added ) { - return; - } - - // Force is_connected() to recompute after important actions. - add_action( 'jetpack_site_registered', array( $this, 'reset_connection_status' ) ); - add_action( 'jetpack_site_disconnected', array( $this, 'reset_connection_status' ) ); - add_action( 'jetpack_sync_register_user', array( $this, 'reset_connection_status' ) ); - add_action( 'pre_update_jetpack_option_id', array( $this, 'reset_connection_status' ) ); - add_action( 'pre_update_jetpack_option_blog_token', array( $this, 'reset_connection_status' ) ); - add_action( 'pre_update_jetpack_option_user_token', array( $this, 'reset_connection_status' ) ); - add_action( 'pre_update_jetpack_option_user_tokens', array( $this, 'reset_connection_status' ) ); - // phpcs:ignore WPCUT.SwitchBlog.SwitchBlog -- wpcom flags **every** use of switch_blog, apparently expecting valid instances to ignore or suppress the sniff. - add_action( 'switch_blog', array( $this, 'reset_connection_status' ) ); - - self::$connection_invalidators_added = true; - } - - /** - * Sets up the XMLRPC request handlers. - * - * @since 1.25.0 Deprecate $is_active param. - * @since 2.8.4 Deprecate $request_params param. - * - * @param array|null $deprecated Deprecated. Not used. - * @param bool $has_connected_owner Whether the site has a connected owner. - * @param bool $is_signed whether the signature check has been successful. - * @param Jetpack_XMLRPC_Server $xmlrpc_server (optional) an instance of the server to use instead of instantiating a new one. - */ - public function setup_xmlrpc_handlers( - $deprecated, - $has_connected_owner, - $is_signed, - ?Jetpack_XMLRPC_Server $xmlrpc_server = null - ) { - add_filter( 'xmlrpc_blog_options', array( $this, 'xmlrpc_options' ), 1000, 2 ); - if ( $deprecated !== null ) { - _deprecated_argument( __METHOD__, '2.8.4' ); - } - // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- We are using the 'for' request param to early return unless it's 'jetpack'. - if ( ! isset( $_GET['for'] ) || 'jetpack' !== $_GET['for'] ) { - return false; - } - - // Alternate XML-RPC, via ?for=jetpack&jetpack=comms. - // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- This just determines whether to handle the request as an XML-RPC request. The actual XML-RPC endpoints do the appropriate nonce checking where applicable. Plus we make sure to clear all cookies via require_jetpack_authentication called later in method. - if ( isset( $_GET['jetpack'] ) && 'comms' === $_GET['jetpack'] ) { - if ( ! Constants::is_defined( 'XMLRPC_REQUEST' ) ) { - // Use the real constant here for WordPress' sake. - define( 'XMLRPC_REQUEST', true ); - } - - add_action( 'template_redirect', array( $this, 'alternate_xmlrpc' ) ); - - add_filter( 'xmlrpc_methods', array( $this, 'remove_non_jetpack_xmlrpc_methods' ), 1000 ); - } - - if ( ! Constants::get_constant( 'XMLRPC_REQUEST' ) ) { - return false; - } - - // Display errors can cause the XML to be not well formed. - // This only affects Jetpack XML-RPC endpoints received from WordPress.com servers. - // All other XML-RPC requests are unaffected. - @ini_set( 'display_errors', false ); // phpcs:ignore - - if ( $xmlrpc_server ) { - $this->xmlrpc_server = $xmlrpc_server; - } else { - $this->xmlrpc_server = new Jetpack_XMLRPC_Server(); - } - - $this->require_jetpack_authentication(); - - if ( $is_signed ) { - // If the site is connected either at a site or user level and the request is signed, expose the methods. - // The callback is responsible to determine whether the request is signed with blog or user token and act accordingly. - // The actual API methods. - $callback = array( $this->xmlrpc_server, 'xmlrpc_methods' ); - - // Hack to preserve $HTTP_RAW_POST_DATA. - add_filter( 'xmlrpc_methods', array( $this, 'xmlrpc_methods' ) ); - - } elseif ( $has_connected_owner && ! $is_signed ) { - // The jetpack.authorize method should be available for unauthenticated users on a site with an - // active Jetpack connection, so that additional users can link their account. - $callback = array( $this->xmlrpc_server, 'authorize_xmlrpc_methods' ); - } else { - // Any other unsigned request should expose the bootstrap methods. - $callback = array( $this->xmlrpc_server, 'bootstrap_xmlrpc_methods' ); - new XMLRPC_Connector( $this ); - } - - add_filter( 'xmlrpc_methods', $callback ); - - // Now that no one can authenticate, and we're whitelisting all XML-RPC methods, force enable_xmlrpc on. - add_filter( 'pre_option_enable_xmlrpc', '__return_true' ); - return true; - } - - /** - * Initializes the REST API connector on the init hook. - */ - public function initialize_rest_api_registration_connector() { - new REST_Connector( $this ); - } - - /** - * Since a lot of hosts use a hammer approach to "protecting" WordPress sites, - * and just blanket block all requests to /xmlrpc.php, or apply other overly-sensitive - * security/firewall policies, we provide our own alternate XML RPC API endpoint - * which is accessible via a different URI. Most of the below is copied directly - * from /xmlrpc.php so that we're replicating it as closely as possible. - * - * @todo Tighten $wp_xmlrpc_server_class a bit to make sure it doesn't do bad things. - * - * @return never - */ - public function alternate_xmlrpc() { - // Some browser-embedded clients send cookies. We don't want them. - $_COOKIE = array(); - - include_once ABSPATH . 'wp-admin/includes/admin.php'; - include_once ABSPATH . WPINC . '/class-IXR.php'; - include_once ABSPATH . WPINC . '/class-wp-xmlrpc-server.php'; - - /** - * Filters the class used for handling XML-RPC requests. - * - * @since 1.7.0 - * @since-jetpack 3.1.0 - * - * @param string $class The name of the XML-RPC server class. - */ - $wp_xmlrpc_server_class = apply_filters( 'wp_xmlrpc_server_class', 'wp_xmlrpc_server' ); - $wp_xmlrpc_server = new $wp_xmlrpc_server_class(); - - // Fire off the request. - nocache_headers(); - $wp_xmlrpc_server->serve_request(); - - exit( 0 ); - } - - /** - * Removes all XML-RPC methods that are not `jetpack.*`. - * Only used in our alternate XML-RPC endpoint, where we want to - * ensure that Core and other plugins' methods are not exposed. - * - * @param array $methods a list of registered WordPress XMLRPC methods. - * @return array filtered $methods - */ - public function remove_non_jetpack_xmlrpc_methods( $methods ) { - $jetpack_methods = array(); - - foreach ( $methods as $method => $callback ) { - if ( str_starts_with( $method, 'jetpack.' ) ) { - $jetpack_methods[ $method ] = $callback; - } - } - - return $jetpack_methods; - } - - /** - * Removes all other authentication methods not to allow other - * methods to validate unauthenticated requests. - */ - public function require_jetpack_authentication() { - // Don't let anyone authenticate. - $_COOKIE = array(); - remove_all_filters( 'authenticate' ); - remove_all_actions( 'wp_login_failed' ); - - if ( $this->is_connected() ) { - // Allow Jetpack authentication. - add_filter( 'authenticate', array( $this, 'authenticate_jetpack' ), 10, 3 ); - } - } - - /** - * Authenticates XML-RPC and other requests from the Jetpack Server - * - * @param WP_User|Mixed $user user object if authenticated. - * @param String $username username. - * @param String $password password string. - * @return WP_User|Mixed authenticated user or error. - */ - public function authenticate_jetpack( $user, $username, $password ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - if ( is_a( $user, '\\WP_User' ) ) { - return $user; - } - - $token_details = $this->verify_xml_rpc_signature(); - - if ( ! $token_details ) { - return $user; - } - - if ( 'user' !== $token_details['type'] ) { - return $user; - } - - if ( ! $token_details['user_id'] ) { - return $user; - } - - nocache_headers(); - - return new \WP_User( $token_details['user_id'] ); - } - - /** - * Verifies the signature of the current request. - * - * @return false|array - */ - public function verify_xml_rpc_signature() { - if ( $this->xmlrpc_verification === null ) { - $this->xmlrpc_verification = $this->internal_verify_xml_rpc_signature(); - - if ( is_wp_error( $this->xmlrpc_verification ) ) { - /** - * Action for logging XMLRPC signature verification errors. This data is sensitive. - * - * @since 1.7.0 - * @since-jetpack 7.5.0 - * - * @param WP_Error $signature_verification_error The verification error - */ - do_action( 'jetpack_verify_signature_error', $this->xmlrpc_verification ); - - Error_Handler::get_instance()->report_error( $this->xmlrpc_verification ); - - } - } - - return is_wp_error( $this->xmlrpc_verification ) ? false : $this->xmlrpc_verification; - } - - /** - * Verifies the signature of the current request. - * - * This function has side effects and should not be used. Instead, - * use the memoized version `->verify_xml_rpc_signature()`. - * - * @internal - * @todo Refactor to use proper nonce verification. - */ - private function internal_verify_xml_rpc_signature() { - // phpcs:disable WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized - // It's not for us. - if ( ! isset( $_GET['token'] ) || empty( $_GET['signature'] ) ) { - return false; - } - - $signature_details = array( - 'token' => isset( $_GET['token'] ) ? wp_unslash( $_GET['token'] ) : '', - 'timestamp' => isset( $_GET['timestamp'] ) ? wp_unslash( $_GET['timestamp'] ) : '', - 'nonce' => isset( $_GET['nonce'] ) ? wp_unslash( $_GET['nonce'] ) : '', - 'body_hash' => isset( $_GET['body-hash'] ) ? wp_unslash( $_GET['body-hash'] ) : '', - 'method' => isset( $_SERVER['REQUEST_METHOD'] ) ? wp_unslash( $_SERVER['REQUEST_METHOD'] ) : null, - 'url' => wp_unslash( ( isset( $_SERVER['HTTP_HOST'] ) ? $_SERVER['HTTP_HOST'] : null ) . ( isset( $_SERVER['REQUEST_URI'] ) ? $_SERVER['REQUEST_URI'] : null ) ), // Temp - will get real signature URL later. - 'signature' => isset( $_GET['signature'] ) ? wp_unslash( $_GET['signature'] ) : '', - ); - - $error_type = 'xmlrpc'; - - // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged - @list( $token_key, $version, $user_id ) = explode( ':', wp_unslash( $_GET['token'] ) ); - // phpcs:enable WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized - - $jetpack_api_version = Constants::get_constant( 'JETPACK__API_VERSION' ); - - if ( - empty( $token_key ) - || empty( $version ) - || (string) $jetpack_api_version !== $version - ) { - return new \WP_Error( 'malformed_token', 'Malformed token in request', compact( 'signature_details', 'error_type' ) ); - } - - if ( '0' === $user_id ) { - $token_type = 'blog'; - $user_id = 0; - } else { - $token_type = 'user'; - if ( empty( $user_id ) || ! ctype_digit( $user_id ) ) { - return new \WP_Error( - 'malformed_user_id', - 'Malformed user_id in request', - compact( 'signature_details', 'error_type' ) - ); - } - $user_id = (int) $user_id; - - $user = new \WP_User( $user_id ); - if ( ! $user || ! $user->exists() ) { - return new \WP_Error( - 'unknown_user', - sprintf( 'User %d does not exist', $user_id ), - compact( 'signature_details', 'error_type' ) - ); - } - } - - $token = $this->get_tokens()->get_access_token( $user_id, $token_key, false ); - if ( is_wp_error( $token ) ) { - $token->add_data( compact( 'signature_details', 'error_type' ) ); - return $token; - } elseif ( ! $token ) { - return new \WP_Error( - 'unknown_token', - sprintf( 'Token %s:%s:%d does not exist', $token_key, $version, $user_id ), - compact( 'signature_details', 'error_type' ) - ); - } - - $jetpack_signature = new \Jetpack_Signature( $token->secret, (int) \Jetpack_Options::get_option( 'time_diff' ) ); - // phpcs:disable WordPress.Security.NonceVerification.Missing -- Used to verify a cryptographic signature of the post data. Also a nonce is verified later in the function. - if ( isset( $_POST['_jetpack_is_multipart'] ) ) { - $post_data = $_POST; // We need all of $_POST in order to verify a cryptographic signature of the post data. - $file_hashes = array(); - foreach ( $post_data as $post_data_key => $post_data_value ) { - if ( ! str_starts_with( $post_data_key, '_jetpack_file_hmac_' ) ) { - continue; - } - $post_data_key = substr( $post_data_key, strlen( '_jetpack_file_hmac_' ) ); - $file_hashes[ $post_data_key ] = $post_data_value; - } - - foreach ( $file_hashes as $post_data_key => $post_data_value ) { - unset( $post_data[ "_jetpack_file_hmac_{$post_data_key}" ] ); - $post_data[ $post_data_key ] = $post_data_value; - } - - ksort( $post_data ); - - $body = http_build_query( stripslashes_deep( $post_data ) ); - } elseif ( $this->raw_post_data === null ) { - $body = file_get_contents( 'php://input' ); - } else { - $body = null; - } - // phpcs:enable - - $signature = $jetpack_signature->sign_current_request( - array( 'body' => $body === null ? $this->raw_post_data : $body ) - ); - - $signature_details['url'] = $jetpack_signature->current_request_url; - - if ( ! $signature ) { - return new \WP_Error( - 'could_not_sign', - 'Unknown signature error', - compact( 'signature_details', 'error_type' ) - ); - } elseif ( is_wp_error( $signature ) ) { - return $signature; - } - - // phpcs:disable WordPress.Security.NonceVerification.Recommended - $timestamp = (int) $_GET['timestamp']; - $nonce = wp_unslash( (string) $_GET['nonce'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- WP Core doesn't sanitize nonces either. - // phpcs:enable WordPress.Security.NonceVerification.Recommended - - // Use up the nonce regardless of whether the signature matches. - if ( ! ( new Nonce_Handler() )->add( $timestamp, $nonce ) ) { - return new \WP_Error( - 'invalid_nonce', - 'Could not add nonce', - compact( 'signature_details', 'error_type' ) - ); - } - - // Be careful about what you do with this debugging data. - // If a malicious requester has access to the expected signature, - // bad things might be possible. - $signature_details['expected'] = $signature; - - // phpcs:ignore WordPress.Security.NonceVerification.Recommended - if ( ! hash_equals( $signature, wp_unslash( $_GET['signature'] ) ) ) { - return new \WP_Error( - 'signature_mismatch', - 'Signature mismatch', - compact( 'signature_details', 'error_type' ) - ); - } - - /** - * Action for additional token checking. - * - * @since 1.7.0 - * @since-jetpack 7.7.0 - * - * @param array $post_data request data. - * @param array $token_data token data. - */ - return apply_filters( - 'jetpack_signature_check_token', - array( - 'type' => $token_type, - 'token_key' => $token_key, - 'user_id' => $token->external_user_id, - ), - $token, - $this->raw_post_data - ); - } - - /** - * Returns true if the current site is connected to WordPress.com and has the minimum requirements to enable Jetpack UI. - * - * This method is deprecated since version 1.25.0 of this package. Please use has_connected_owner instead. - * - * Since this method has a wide spread use, we decided not to throw any deprecation warnings for now. - * - * @deprecated 1.25.0 - * @see Manager::has_connected_owner - * @return Boolean is the site connected? - */ - public function is_active() { - return (bool) $this->get_tokens()->get_access_token( true ); - } - - /** - * Obtains an instance of the Tokens class. - * - * @return Tokens the Tokens object - */ - public function get_tokens() { - return new Tokens(); - } - - /** - * Returns true if the site has both a token and a blog id, which indicates a site has been registered. - * - * @access public - * @deprecated 1.12.1 Use is_connected instead - * @see Manager::is_connected - * - * @return bool - */ - public function is_registered() { - _deprecated_function( __METHOD__, '1.12.1' ); - return $this->is_connected(); - } - - /** - * Returns true if the site has both a token and a blog id, which indicates a site has been connected. - * - * @access public - * @since 1.21.1 - * - * @return bool - */ - public function is_connected() { - if ( self::$is_connected === null ) { - if ( ! self::$connection_invalidators_added ) { - $this->add_connection_status_invalidation_hooks(); - } - - $has_blog_id = (bool) \Jetpack_Options::get_option( 'id' ); - if ( $has_blog_id ) { - $has_blog_token = (bool) $this->get_tokens()->get_access_token(); - self::$is_connected = ( $has_blog_id && $has_blog_token ); - } else { - // Short-circuit, no need to check for tokens if there's no blog ID. - self::$is_connected = false; - } - } - return self::$is_connected; - } - - /** - * Resets the memoized connection status. - * This will force the connection status to be recomputed on the next check. - * - * @since 5.0.0 - */ - public function reset_connection_status() { - self::$is_connected = null; - } - - /** - * Returns true if the site has at least one connected administrator. - * - * @access public - * @since 1.21.1 - * - * @return bool - */ - public function has_connected_admin() { - return (bool) count( $this->get_connected_users( 'manage_options' ) ); - } - - /** - * Returns true if the site has any connected user. - * - * @access public - * @since 1.21.1 - * - * @return bool - */ - public function has_connected_user() { - return (bool) count( $this->get_connected_users( 'any', 1 ) ); - } - - /** - * Returns an array of users that have user tokens for communicating with wpcom. - * Able to select by specific capability. - * - * @since 9.9.1 Added $limit parameter. - * - * @param string $capability The capability of the user. - * @param int|null $limit How many connected users to get before returning. - * @return WP_User[] Array of WP_User objects if found. - */ - public function get_connected_users( $capability = 'any', $limit = null ) { - $connected_users = array(); - $user_tokens = $this->get_tokens()->get_user_tokens(); - - if ( ! is_array( $user_tokens ) || empty( $user_tokens ) ) { - return $connected_users; - } - $connected_user_ids = array_keys( $user_tokens ); - - if ( ! empty( $connected_user_ids ) ) { - foreach ( $connected_user_ids as $id ) { - // Check for capability. - if ( 'any' !== $capability && ! user_can( $id, $capability ) ) { - continue; - } - - $user_data = get_userdata( $id ); - if ( $user_data instanceof \WP_User ) { - $connected_users[] = $user_data; - if ( $limit && count( $connected_users ) >= $limit ) { - return $connected_users; - } - } - } - } - - return $connected_users; - } - - /** - * Returns true if the site has a connected Blog owner (master_user). - * - * @access public - * @since 1.21.1 - * - * @return bool - */ - public function has_connected_owner() { - return (bool) $this->get_connection_owner_id(); - } - - /** - * Returns true if the site is connected only at a site level. - * - * Note that we are explicitly checking for the existence of the master_user option in order to account for cases where we don't have any user tokens (user-level connection) but the master_user option is set, which could be the result of a problematic user connection. - * - * @access public - * @since 1.25.0 - * @deprecated 1.27.0 - * - * @return bool - */ - public function is_userless() { - _deprecated_function( __METHOD__, '1.27.0', 'Automattic\\Jetpack\\Connection\\Manager::is_site_connection' ); - return $this->is_site_connection(); - } - - /** - * Returns true if the site is connected only at a site level. - * - * Note that we are explicitly checking for the existence of the master_user option in order to account for cases where we don't have any user tokens (user-level connection) but the master_user option is set, which could be the result of a problematic user connection. - * - * @access public - * @since 1.27.0 - * - * @return bool - */ - public function is_site_connection() { - return $this->is_connected() && ! $this->has_connected_user() && ! \Jetpack_Options::get_option( 'master_user' ); - } - - /** - * Checks to see if the connection owner of the site is missing. - * - * @return bool - */ - public function is_missing_connection_owner() { - $connection_owner = $this->get_connection_owner_id(); - if ( ! get_user_by( 'id', $connection_owner ) ) { - return true; - } - - return false; - } - - /** - * Returns true if the user with the specified identifier is connected to - * WordPress.com. - * - * @param int $user_id the user identifier. Default is the current user. - * @return bool Boolean is the user connected? - */ - public function is_user_connected( $user_id = false ) { - $user_id = false === $user_id ? get_current_user_id() : absint( $user_id ); - if ( ! $user_id ) { - return false; - } - - return (bool) $this->get_tokens()->get_access_token( $user_id ); - } - - /** - * Returns the local user ID of the connection owner. - * - * @return bool|int Returns the ID of the connection owner or False if no connection owner found. - */ - public function get_connection_owner_id() { - $owner = $this->get_connection_owner(); - return $owner instanceof \WP_User ? $owner->ID : false; - } - - /** - * Get the wpcom user data of the current|specified connected user. - * - * @todo Refactor to properly load the XMLRPC client independently. - * - * @param Integer $user_id the user identifier. - * @return bool|array An array with the WPCOM user data on success, false otherwise. - */ - public function get_connected_user_data( $user_id = null ) { - if ( ! $user_id ) { - $user_id = get_current_user_id(); - } - - // Check if the user is connected and return false otherwise. - if ( ! $this->is_user_connected( $user_id ) ) { - return false; - } - - $transient_key = "jetpack_connected_user_data_$user_id"; - $cached_user_data = get_transient( $transient_key ); - - if ( $cached_user_data ) { - return $cached_user_data; - } - - $xml = new Jetpack_IXR_Client( - array( - 'user_id' => $user_id, - ) - ); - $xml->query( 'wpcom.getUser' ); - - if ( ! $xml->isError() ) { - $user_data = $xml->getResponse(); - set_transient( $transient_key, $xml->getResponse(), DAY_IN_SECONDS ); - return $user_data; - } - - return false; - } - - /** - * Returns a user object of the connection owner. - * - * @return WP_User|false False if no connection owner found. - */ - public function get_connection_owner() { - - $user_id = \Jetpack_Options::get_option( 'master_user' ); - - if ( ! $user_id ) { - return false; - } - - // Make sure user is connected. - $user_token = $this->get_tokens()->get_access_token( $user_id ); - - $connection_owner = false; - - if ( $user_token && is_object( $user_token ) && isset( $user_token->external_user_id ) ) { - $connection_owner = get_userdata( $user_token->external_user_id ); - } - - if ( $connection_owner === false ) { - Error_Handler::get_instance()->report_error( - new WP_Error( - 'invalid_connection_owner', - 'Invalid connection owner', - array( - 'user_id' => $user_id, - 'has_user_token' => (bool) $user_token, - 'error_type' => 'connection', - 'signature_details' => array( - 'token' => '', - ), - ) - ), - false, - true - ); - } - - return $connection_owner; - } - - /** - * Returns true if the provided user is the Jetpack connection owner. - * If user ID is not specified, the current user will be used. - * - * @param Integer|Boolean $user_id the user identifier. False for current user. - * @return Boolean True the user the connection owner, false otherwise. - */ - public function is_connection_owner( $user_id = false ) { - if ( ! $user_id ) { - $user_id = get_current_user_id(); - } - - return ( (int) $user_id ) === $this->get_connection_owner_id(); - } - - /** - * Connects the user with a specified ID to a WordPress.com user using the - * remote login flow. - * - * @access public - * - * @param Integer $user_id (optional) the user identifier, defaults to current user. - * @param String $redirect_url the URL to redirect the user to for processing, defaults to - * admin_url(). - * @return WP_Error only in case of a failed user lookup. - */ - public function connect_user( $user_id = null, $redirect_url = null ) { - $user = null; - if ( null === $user_id ) { - $user = wp_get_current_user(); - } else { - $user = get_user_by( 'ID', $user_id ); - } - - if ( empty( $user ) ) { - return new \WP_Error( 'user_not_found', 'Attempting to connect a non-existent user.' ); - } - - if ( null === $redirect_url ) { - $redirect_url = admin_url(); - } - - // Using wp_redirect intentionally because we're redirecting outside. - wp_redirect( $this->get_authorization_url( $user, $redirect_url ) ); // phpcs:ignore WordPress.Security.SafeRedirect - exit( 0 ); - } - - /** - * Force user disconnect. - * - * @param int $user_id Local (external) user ID. - * @param bool $disconnect_all_users Whether to disconnect all users before disconnecting the primary user. - * - * @return bool - */ - public function disconnect_user_force( $user_id, $disconnect_all_users = false ) { - if ( ! (int) $user_id ) { - // Missing user ID. - return false; - } - // If we are disconnecting the primary user we may need to disconnect all other users first - if ( $user_id === $this->get_connection_owner_id() && $disconnect_all_users && ! $this->disconnect_all_users_except_primary() ) { - return false; - } - - return $this->disconnect_user( $user_id, true, true ); - } - - /** - * Disconnects all users except the primary user. - * - * @return bool - */ - public function disconnect_all_users_except_primary() { - - $all_connected_users = $this->get_connected_users(); - - foreach ( $all_connected_users as $user ) { - // Skip the primary. - if ( $user->ID === $this->get_connection_owner_id() ) { - continue; - } - $disconnected = $this->disconnect_user( $user->ID, false, true ); - // If we fail to disconnect any user, we should not proceed with disconnecting the primary user. - if ( ! $disconnected ) { - return false; - } - } - - return true; - } - - /** - * Unlinks the current user from the linked WordPress.com user. - * - * @access public - * @static - * - * @todo Refactor to properly load the XMLRPC client independently. - * - * @param Integer $user_id the user identifier. - * @param bool $can_overwrite_primary_user Allow for the primary user to be disconnected. - * @param bool $force_disconnect_locally Disconnect user locally even if we were unable to disconnect them from WP.com. - * @return Boolean Whether the disconnection of the user was successful. - */ - public function disconnect_user( $user_id = null, $can_overwrite_primary_user = false, $force_disconnect_locally = false ) { - $user_id = empty( $user_id ) ? get_current_user_id() : (int) $user_id; - $is_primary_user = Jetpack_Options::get_option( 'master_user' ) === $user_id; - - if ( $is_primary_user && ! $can_overwrite_primary_user ) { - return false; - } - - if ( in_array( $user_id, self::$disconnected_users, true ) ) { - // The user is already disconnected. - return false; - } - - // Attempt to disconnect the user from WordPress.com. - $is_disconnected_from_wpcom = $this->unlink_user_from_wpcom( $user_id ); - - $is_disconnected_locally = false; - if ( $is_disconnected_from_wpcom || $force_disconnect_locally ) { - // Disconnect the user locally. - $is_disconnected_locally = $this->get_tokens()->disconnect_user( $user_id ); - - if ( $is_disconnected_locally ) { - // Delete cached connected user data. - $transient_key = "jetpack_connected_user_data_$user_id"; - delete_transient( $transient_key ); - - /** - * Fires after the current user has been unlinked from WordPress.com. - * - * @since 1.7.0 - * @since-jetpack 4.1.0 - * - * @param int $user_id The current user's ID. - */ - do_action( 'jetpack_unlinked_user', $user_id ); - - if ( $is_primary_user ) { - Jetpack_Options::delete_option( 'master_user' ); - } - } - } - - self::$disconnected_users[] = $user_id; - - return $is_disconnected_from_wpcom && $is_disconnected_locally; - } - - /** - * Request to wpcom for a user to be unlinked from their WordPress.com account - * - * @param int $user_id The user identifier. - * - * @return bool Whether the disconnection of the user was successful. - */ - public function unlink_user_from_wpcom( $user_id ) { - // Attempt to disconnect the user from WordPress.com. - $xml = new Jetpack_IXR_Client(); - - $xml->query( 'jetpack.unlink_user', $user_id ); - if ( $xml->isError() ) { - return false; - } - - return (bool) $xml->getResponse(); - } - - /** - * Update the connection owner. - * - * @since 1.29.0 - * - * @param Integer $new_owner_id The ID of the user to become the connection owner. - * - * @return true|WP_Error True if owner successfully changed, WP_Error otherwise. - */ - public function update_connection_owner( $new_owner_id ) { - $roles = new Roles(); - if ( ! user_can( $new_owner_id, $roles->translate_role_to_cap( 'administrator' ) ) ) { - return new WP_Error( - 'new_owner_not_admin', - __( 'New owner is not admin', 'jetpack-connection' ), - array( 'status' => 400 ) - ); - } - - $old_owner_id = $this->get_connection_owner_id(); - - if ( $old_owner_id === $new_owner_id ) { - return new WP_Error( - 'new_owner_is_existing_owner', - __( 'New owner is same as existing owner', 'jetpack-connection' ), - array( 'status' => 400 ) - ); - } - - if ( ! $this->is_user_connected( $new_owner_id ) ) { - return new WP_Error( - 'new_owner_not_connected', - __( 'New owner is not connected', 'jetpack-connection' ), - array( 'status' => 400 ) - ); - } - - // Notify WPCOM about the connection owner change. - $owner_updated_wpcom = $this->update_connection_owner_wpcom( $new_owner_id ); - - if ( $owner_updated_wpcom ) { - // Update the connection owner in Jetpack only if they were successfully updated on WPCOM. - // This will ensure consistency with WPCOM. - \Jetpack_Options::update_option( 'master_user', $new_owner_id ); - - // Track it. - ( new Tracking() )->record_user_event( 'set_connection_owner_success' ); - - return true; - } - return new WP_Error( - 'error_setting_new_owner', - __( 'Could not confirm new owner.', 'jetpack-connection' ), - array( 'status' => 500 ) - ); - } - - /** - * Request to WPCOM to update the connection owner. - * - * @since 1.29.0 - * - * @param Integer $new_owner_id The ID of the user to become the connection owner. - * - * @return Boolean Whether the ownership transfer was successful. - */ - public function update_connection_owner_wpcom( $new_owner_id ) { - // Notify WPCOM about the connection owner change. - $xml = new Jetpack_IXR_Client( - array( - 'user_id' => get_current_user_id(), - ) - ); - $xml->query( - 'jetpack.switchBlogOwner', - array( - 'new_blog_owner' => $new_owner_id, - ) - ); - if ( $xml->isError() ) { - return false; - } - - return (bool) $xml->getResponse(); - } - - /** - * Returns the requested Jetpack API URL. - * - * @param String $relative_url the relative API path. - * @return String API URL. - */ - public function api_url( $relative_url ) { - $api_base = Constants::get_constant( 'JETPACK__API_BASE' ); - $api_version = '/' . Constants::get_constant( 'JETPACK__API_VERSION' ) . '/'; - - /** - * Filters the API URL that Jetpack uses for server communication. - * - * @since 1.7.0 - * @since-jetpack 8.0.0 - * - * @param String $url the generated URL. - * @param String $relative_url the relative URL that was passed as an argument. - * @param String $api_base the API base string that is being used. - * @param String $api_version the API version string that is being used. - */ - return apply_filters( - 'jetpack_api_url', - rtrim( $api_base . $relative_url, '/\\' ) . $api_version, - $relative_url, - $api_base, - $api_version - ); - } - - /** - * Returns the Jetpack XMLRPC WordPress.com API endpoint URL. - * - * @return String XMLRPC API URL. - */ - public function xmlrpc_api_url() { - $base = preg_replace( - '#(https?://[^?/]+)(/?.*)?$#', - '\\1', - Constants::get_constant( 'JETPACK__API_BASE' ) - ); - return untrailingslashit( $base ) . '/xmlrpc.php'; - } - - /** - * Attempts Jetpack registration which sets up the site for connection. Should - * remain public because the call to action comes from the current site, not from - * WordPress.com. - * - * @param String $api_endpoint (optional) an API endpoint to use, defaults to 'register'. - * @return true|WP_Error The error object. - */ - public function register( $api_endpoint = 'register' ) { - // Clean-up leftover tokens just in-case. - // This fixes an edge case that was preventing users to register when the blog token was missing but - // there were still leftover user tokens present. - $this->delete_all_connection_tokens( true ); - - add_action( 'pre_update_jetpack_option_register', array( '\\Jetpack_Options', 'delete_option' ) ); - $secrets = ( new Secrets() )->generate( 'register', get_current_user_id(), 600 ); - - if ( false === $secrets ) { - return new WP_Error( 'cannot_save_secrets', __( 'Jetpack experienced an issue trying to save options (cannot_save_secrets). We suggest that you contact your hosting provider, and ask them for help checking that the options table is writable on your site.', 'jetpack-connection' ) ); - } - - if ( - empty( $secrets['secret_1'] ) || - empty( $secrets['secret_2'] ) || - empty( $secrets['exp'] ) - ) { - return new \WP_Error( 'missing_secrets' ); - } - - // Better to try (and fail) to set a higher timeout than this system - // supports than to have register fail for more users than it should. - $timeout = $this->set_min_time_limit( 60 ) / 2; - - $gmt_offset = get_option( 'gmt_offset' ); - if ( ! $gmt_offset ) { - $gmt_offset = 0; - } - - $stats_options = get_option( 'stats_options' ); - $stats_id = isset( $stats_options['blog_id'] ) - ? $stats_options['blog_id'] - : null; - - /* This action is documented in src/class-package-version-tracker.php */ - $package_versions = apply_filters( 'jetpack_package_versions', array() ); - - $active_plugins_using_connection = Plugin_Storage::get_all(); - - /** - * Filters the request body for additional property addition. - * - * @since 1.7.0 - * @since-jetpack 7.7.0 - * - * @param array $post_data request data. - * @param Array $token_data token data. - */ - $body = apply_filters( - 'jetpack_register_request_body', - array_merge( - array( - 'siteurl' => Urls::site_url(), - 'home' => Urls::home_url(), - 'gmt_offset' => $gmt_offset, - 'timezone_string' => (string) get_option( 'timezone_string' ), - 'site_name' => (string) get_option( 'blogname' ), - 'secret_1' => $secrets['secret_1'], - 'secret_2' => $secrets['secret_2'], - 'site_lang' => get_locale(), - 'timeout' => $timeout, - 'stats_id' => $stats_id, - 'state' => get_current_user_id(), - 'site_created' => $this->get_assumed_site_creation_date(), - 'jetpack_version' => Constants::get_constant( 'JETPACK__VERSION' ), - 'ABSPATH' => Constants::get_constant( 'ABSPATH' ), - 'current_user_email' => wp_get_current_user()->user_email, - 'connect_plugin' => $this->get_plugin() ? $this->get_plugin()->get_slug() : null, - 'package_versions' => $package_versions, - 'active_connected_plugins' => $active_plugins_using_connection, - ), - self::$extra_register_params - ) - ); - - $args = array( - 'method' => 'POST', - 'body' => $body, - 'headers' => array( - 'Accept' => 'application/json', - ), - 'timeout' => $timeout, - ); - - $args['body'] = static::apply_activation_source_to_args( $args['body'] ); - - // TODO: fix URLs for bad hosts. - $response = Client::_wp_remote_request( - $this->api_url( $api_endpoint ), - $args, - true - ); - - // Make sure the response is valid and does not contain any Jetpack errors. - $registration_details = $this->validate_remote_register_response( $response ); - - if ( is_wp_error( $registration_details ) ) { - return $registration_details; - } elseif ( ! $registration_details ) { - return new \WP_Error( - 'unknown_error', - 'Unknown error registering your Jetpack site.', - wp_remote_retrieve_response_code( $response ) - ); - } - - if ( empty( $registration_details->jetpack_secret ) || ! is_string( $registration_details->jetpack_secret ) ) { - return new \WP_Error( - 'jetpack_secret', - 'Unable to validate registration of your Jetpack site.', - wp_remote_retrieve_response_code( $response ) - ); - } - - if ( isset( $registration_details->jetpack_public ) ) { - $jetpack_public = (int) $registration_details->jetpack_public; - } else { - $jetpack_public = false; - } - - Jetpack_Options::update_options( - array( - 'id' => (int) $registration_details->jetpack_id, - 'public' => $jetpack_public, - ) - ); - - update_option( Package_Version_Tracker::PACKAGE_VERSION_OPTION, $package_versions ); - - $this->get_tokens()->update_blog_token( (string) $registration_details->jetpack_secret ); - - if ( ! Jetpack_Options::get_option( 'id' ) || ! $this->get_tokens()->get_access_token() ) { - return new WP_Error( - 'connection_data_save_failed', - 'Failed to save connection data in the database' - ); - } - - $alternate_authorization_url = isset( $registration_details->alternate_authorization_url ) ? $registration_details->alternate_authorization_url : ''; - - add_filter( - 'jetpack_register_site_rest_response', - function ( $response ) use ( $alternate_authorization_url ) { - $response['alternateAuthorizeUrl'] = $alternate_authorization_url; - return $response; - } - ); - - /** - * Fires when a site is registered on WordPress.com. - * - * @since 1.7.0 - * @since-jetpack 3.7.0 - * - * @param int $json->jetpack_id Jetpack Blog ID. - * @param string $json->jetpack_secret Jetpack Blog Token. - * @param int|bool $jetpack_public Is the site public. - */ - do_action( - 'jetpack_site_registered', - $registration_details->jetpack_id, - $registration_details->jetpack_secret, - $jetpack_public - ); - - if ( isset( $registration_details->token ) ) { - /** - * Fires when a user token is sent along with the registration data. - * - * @since 1.7.0 - * @since-jetpack 7.6.0 - * - * @param object $token the administrator token for the newly registered site. - */ - do_action( 'jetpack_site_registered_user_token', $registration_details->token ); - } - - return true; - } - - /** - * Attempts Jetpack registration. - * - * @param bool $tos_agree Whether the user agreed to TOS. - * - * @return bool|WP_Error - */ - public function try_registration( $tos_agree = true ) { - if ( $tos_agree ) { - $terms_of_service = new Terms_Of_Service(); - $terms_of_service->agree(); - } - - /** - * Action fired when the user attempts the registration. - * - * @since 1.26.0 - */ - $pre_register = apply_filters( 'jetpack_pre_register', null ); - - if ( is_wp_error( $pre_register ) ) { - return $pre_register; - } - - $tracking_data = array(); - - if ( null !== $this->get_plugin() ) { - $tracking_data['plugin_slug'] = $this->get_plugin()->get_slug(); - } - - $tracking = new Tracking(); - $tracking->record_user_event( 'jpc_register_begin', $tracking_data ); - - add_filter( 'jetpack_register_request_body', array( Utils::class, 'filter_register_request_body' ) ); - - $result = $this->register(); - - remove_filter( 'jetpack_register_request_body', array( Utils::class, 'filter_register_request_body' ) ); - - // If there was an error with registration and the site was not registered, record this so we can show a message. - if ( ! $result || is_wp_error( $result ) ) { - return $result; - } - - return true; - } - - /** - * Adds a parameter to the register request body - * - * @since 1.26.0 - * - * @param string $name The name of the parameter to be added. - * @param string $value The value of the parameter to be added. - * - * @throws \InvalidArgumentException If supplied arguments are not strings. - * @return void - */ - public function add_register_request_param( $name, $value ) { - if ( ! is_string( $name ) || ! is_string( $value ) ) { - throw new \InvalidArgumentException( 'name and value must be strings' ); - } - self::$extra_register_params[ $name ] = $value; - } - - /** - * Takes the response from the Jetpack register new site endpoint and - * verifies it worked properly. - * - * @since 1.7.0 - * @since-jetpack 2.6.0 - * - * @param Mixed $response the response object, or the error object. - * @return string|WP_Error A JSON object on success or WP_Error on failures - **/ - protected function validate_remote_register_response( $response ) { - if ( is_wp_error( $response ) ) { - return new \WP_Error( - 'register_http_request_failed', - $response->get_error_message() - ); - } - - $code = wp_remote_retrieve_response_code( $response ); - $entity = wp_remote_retrieve_body( $response ); - - if ( $entity ) { - $registration_response = json_decode( $entity ); - } else { - $registration_response = false; - } - - $code_type = (int) ( $code / 100 ); - if ( 5 === $code_type ) { - return new \WP_Error( 'wpcom_5??', $code ); - } elseif ( 408 === $code ) { - return new \WP_Error( 'wpcom_408', $code ); - } elseif ( ! empty( $registration_response->error ) ) { - if ( - 'xml_rpc-32700' === $registration_response->error - && ! function_exists( 'xml_parser_create' ) - ) { - $error_description = __( "PHP's XML extension is not available. Jetpack requires the XML extension to communicate with WordPress.com. Please contact your hosting provider to enable PHP's XML extension.", 'jetpack-connection' ); - } else { - $error_description = isset( $registration_response->error_description ) - ? (string) $registration_response->error_description - : ''; - } - - return new \WP_Error( - (string) $registration_response->error, - $error_description, - $code - ); - } elseif ( 200 !== $code ) { - return new \WP_Error( 'wpcom_bad_response', $code ); - } - - // Jetpack ID error block. - if ( empty( $registration_response->jetpack_id ) ) { - return new \WP_Error( - 'jetpack_id', - /* translators: %s is an error message string */ - sprintf( __( 'Error Details: Jetpack ID is empty. Do not publicly post this error message! %s', 'jetpack-connection' ), $entity ), - $entity - ); - } elseif ( ! is_scalar( $registration_response->jetpack_id ) ) { - return new \WP_Error( - 'jetpack_id', - /* translators: %s is an error message string */ - sprintf( __( 'Error Details: Jetpack ID is not a scalar. Do not publicly post this error message! %s', 'jetpack-connection' ), $entity ), - $entity - ); - } elseif ( preg_match( '/[^0-9]/', $registration_response->jetpack_id ) ) { - return new \WP_Error( - 'jetpack_id', - /* translators: %s is an error message string */ - sprintf( __( 'Error Details: Jetpack ID begins with a numeral. Do not publicly post this error message! %s', 'jetpack-connection' ), $entity ), - $entity - ); - } - - return $registration_response; - } - - /** - * Adds a used nonce to a list of known nonces. - * - * @param int $timestamp the current request timestamp. - * @param string $nonce the nonce value. - * @return bool whether the nonce is unique or not. - * - * @deprecated since 1.24.0 - * @see Nonce_Handler::add() - */ - public function add_nonce( $timestamp, $nonce ) { - _deprecated_function( __METHOD__, '1.24.0', 'Automattic\\Jetpack\\Connection\\Nonce_Handler::add' ); - return ( new Nonce_Handler() )->add( $timestamp, $nonce ); - } - - /** - * Cleans nonces that were saved when calling ::add_nonce. - * - * @todo Properly prepare the query before executing it. - * - * @param bool $all whether to clean even non-expired nonces. - * - * @deprecated since 1.24.0 - * @see Nonce_Handler::clean_all() - */ - public function clean_nonces( $all = false ) { - _deprecated_function( __METHOD__, '1.24.0', 'Automattic\\Jetpack\\Connection\\Nonce_Handler::clean_all' ); - ( new Nonce_Handler() )->clean_all( $all ? PHP_INT_MAX : ( time() - Nonce_Handler::LIFETIME ) ); - } - - /** - * Sets the Connection custom capabilities. - * - * @param string[] $caps Array of the user's capabilities. - * @param string $cap Capability name. - * @param int $user_id The user ID. - * @param array $args Adds the context to the cap. Typically the object ID. - */ - public function jetpack_connection_custom_caps( $caps, $cap, $user_id, $args ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - switch ( $cap ) { - case 'jetpack_connect': - case 'jetpack_reconnect': - $is_offline_mode = ( new Status() )->is_offline_mode(); - if ( $is_offline_mode ) { - $caps = array( 'do_not_allow' ); - break; - } - // Pass through. If it's not offline mode, these should match disconnect. - // Let users disconnect if it's offline mode, just in case things glitch. - case 'jetpack_disconnect': - /** - * Filters the jetpack_disconnect capability. - * - * @since 1.14.2 - * - * @param array An array containing the capability name. - */ - $caps = apply_filters( 'jetpack_disconnect_cap', array( 'manage_options' ) ); - break; - case 'jetpack_connect_user': - $is_offline_mode = ( new Status() )->is_offline_mode(); - if ( $is_offline_mode ) { - $caps = array( 'do_not_allow' ); - break; - } - // With site connections in mind, non-admin users can connect their account only if a connection owner exists. - $caps = $this->has_connected_owner() ? array( 'read' ) : array( 'manage_options' ); - break; - case 'jetpack_unlink_user': - $is_offline_mode = ( new Status() )->is_offline_mode(); - if ( $is_offline_mode ) { - $caps = array( 'do_not_allow' ); - break; - } - - // Non-admins can always disconnect - $caps = array( 'read' ); - break; - } - return $caps; - } - - /** - * Builds the timeout limit for queries talking with the wpcom servers. - * - * Based on local php max_execution_time in php.ini - * - * @since 1.7.0 - * @since-jetpack 5.4.0 - * @return int - **/ - public function get_max_execution_time() { - $timeout = (int) ini_get( 'max_execution_time' ); - - // Ensure exec time set in php.ini. - if ( ! $timeout ) { - $timeout = 30; - } - return $timeout; - } - - /** - * Sets a minimum request timeout, and returns the current timeout - * - * @since 1.7.0 - * @since-jetpack 5.4.0 - * @param Integer $min_timeout the minimum timeout value. - **/ - public function set_min_time_limit( $min_timeout ) { - $timeout = $this->get_max_execution_time(); - if ( $timeout < $min_timeout ) { - $timeout = $min_timeout; - set_time_limit( $timeout ); - } - return $timeout; - } - - /** - * Get our assumed site creation date. - * Calculated based on the earlier date of either: - * - Earliest admin user registration date. - * - Earliest date of post of any post type. - * - * @since 1.7.0 - * @since-jetpack 7.2.0 - * - * @return string Assumed site creation date and time. - */ - public function get_assumed_site_creation_date() { - $cached_date = get_transient( 'jetpack_assumed_site_creation_date' ); - if ( ! empty( $cached_date ) ) { - return $cached_date; - } - - /** - * We don't use the 'ID' field, but need it to overcome a WP caching bug: https://core.trac.wordpress.org/ticket/62003 - * - * @todo Remote the 'ID' field from users fetching when the issue is fixed and Jetpack-supported WP versions move beyond it. - */ - $earliest_registered_users = get_users( - array( - 'role' => 'administrator', - 'orderby' => 'user_registered', - 'order' => 'ASC', - 'fields' => array( 'ID', 'user_registered' ), - 'number' => 1, - ) - ); - $earliest_registration_date = $earliest_registered_users[0]->user_registered; - - $earliest_posts = get_posts( - array( - 'posts_per_page' => 1, - 'post_type' => 'any', - 'post_status' => 'any', - 'orderby' => 'date', - 'order' => 'ASC', - ) - ); - - // If there are no posts at all, we'll count only on user registration date. - if ( $earliest_posts ) { - $earliest_post_date = $earliest_posts[0]->post_date; - } else { - $earliest_post_date = PHP_INT_MAX; - } - - $assumed_date = min( $earliest_registration_date, $earliest_post_date ); - set_transient( 'jetpack_assumed_site_creation_date', $assumed_date ); - - return $assumed_date; - } - - /** - * Adds the activation source string as a parameter to passed arguments. - * - * @todo Refactor to use rawurlencode() instead of urlencode(). - * - * @param array $args arguments that need to have the source added. - * @return array $amended arguments. - */ - public static function apply_activation_source_to_args( $args ) { - list( $activation_source_name, $activation_source_keyword ) = get_option( 'jetpack_activation_source' ); - - if ( $activation_source_name ) { - // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode - $args['_as'] = urlencode( $activation_source_name ); - } - - if ( $activation_source_keyword ) { - // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode - $args['_ak'] = urlencode( $activation_source_keyword ); - } - - return $args; - } - - /** - * Generates two secret tokens and the end of life timestamp for them. - * - * @param String $action The action name. - * @param Integer $user_id The user identifier. - * @param Integer $exp Expiration time in seconds. - */ - public function generate_secrets( $action, $user_id = false, $exp = 600 ) { - return ( new Secrets() )->generate( $action, $user_id, $exp ); - } - - /** - * Returns two secret tokens and the end of life timestamp for them. - * - * @deprecated 1.24.0 Use Automattic\Jetpack\Connection\Secrets->get() instead. - * - * @param String $action The action name. - * @param Integer $user_id The user identifier. - * @return string|array an array of secrets or an error string. - */ - public function get_secrets( $action, $user_id ) { - _deprecated_function( __METHOD__, '1.24.0', 'Automattic\\Jetpack\\Connection\\Secrets->get' ); - return ( new Secrets() )->get( $action, $user_id ); - } - - /** - * Deletes secret tokens in case they, for example, have expired. - * - * @deprecated 1.24.0 Use Automattic\Jetpack\Connection\Secrets->delete() instead. - * - * @param String $action The action name. - * @param Integer $user_id The user identifier. - */ - public function delete_secrets( $action, $user_id ) { - _deprecated_function( __METHOD__, '1.24.0', 'Automattic\\Jetpack\\Connection\\Secrets->delete' ); - ( new Secrets() )->delete( $action, $user_id ); - } - - /** - * Deletes all connection tokens and transients from the local Jetpack site. - * If the plugin object has been provided in the constructor, the function first checks - * whether it's the only active connection. - * If there are any other connections, the function will do nothing and return `false` - * (unless `$ignore_connected_plugins` is set to `true`). - * - * @param bool $ignore_connected_plugins Delete the tokens even if there are other connected plugins. - * - * @return bool True if disconnected successfully, false otherwise. - */ - public function delete_all_connection_tokens( $ignore_connected_plugins = false ) { - // refuse to delete if we're not the last Jetpack plugin installed. - if ( ! $ignore_connected_plugins && null !== $this->plugin && ! $this->plugin->is_only() ) { - return false; - } - - /** - * Fires upon the disconnect attempt. - * Return `false` to prevent the disconnect. - * - * @since 1.14.2 - */ - if ( ! apply_filters( 'jetpack_connection_delete_all_tokens', true ) ) { - return false; - } - - \Jetpack_Options::delete_option( - array( - 'master_user', - 'time_diff', - 'fallback_no_verify_ssl_certs', - ) - ); - - ( new Secrets() )->delete_all(); - $this->get_tokens()->delete_all(); - - // Delete cached connected user data. - $transient_key = 'jetpack_connected_user_data_' . get_current_user_id(); - delete_transient( $transient_key ); - - // Delete all XML-RPC errors. - Error_Handler::get_instance()->delete_all_errors(); - - return true; - } - - /** - * Tells WordPress.com to disconnect the site and clear all tokens from cached site. - * If the plugin object has been provided in the constructor, the function first check - * whether it's the only active connection. - * If there are any other connections, the function will do nothing and return `false` - * (unless `$ignore_connected_plugins` is set to `true`). - * - * @param bool $ignore_connected_plugins Delete the tokens even if there are other connected plugins. - * - * @return bool True if disconnected successfully, false otherwise. - */ - public function disconnect_site_wpcom( $ignore_connected_plugins = false ) { - if ( ! $ignore_connected_plugins && null !== $this->plugin && ! $this->plugin->is_only() ) { - return false; - } - - if ( ( new Status() )->is_offline_mode() && ! apply_filters( 'jetpack_connection_disconnect_site_wpcom_offline_mode', false ) ) { - // Prevent potential disconnect of the live site by removing WPCOM tokens. - return false; - } - - /** - * Fires upon the disconnect attempt. - * Return `false` to prevent the disconnect. - * - * @since 1.14.2 - */ - if ( ! apply_filters( 'jetpack_connection_disconnect_site_wpcom', true, $this ) ) { - return false; - } - - $xml = new Jetpack_IXR_Client(); - $xml->query( 'jetpack.deregister', get_current_user_id() ); - - return true; - } - - /** - * Disconnect the plugin and remove the tokens. - * This function will automatically perform "soft" or "hard" disconnect depending on whether other plugins are using the connection. - * This is a proxy method to simplify the Connection package API. - * - * @see Manager::disconnect_site() - * - * @param boolean $disconnect_wpcom Should disconnect_site_wpcom be called. - * @param bool $ignore_connected_plugins Delete the tokens even if there are other connected plugins. - * @return bool - */ - public function remove_connection( $disconnect_wpcom = true, $ignore_connected_plugins = false ) { - - $this->disconnect_site( $disconnect_wpcom, $ignore_connected_plugins ); - - return true; - } - - /** - * Completely clearing up the connection, and initiating reconnect. - * - * @return true|WP_Error True if reconnected successfully, a `WP_Error` object otherwise. - */ - public function reconnect() { - ( new Tracking() )->record_user_event( 'restore_connection_reconnect' ); - - $this->disconnect_site_wpcom( true ); - - return $this->register(); - } - - /** - * Validate the tokens, and refresh the invalid ones. - * - * @return string|bool|WP_Error True if connection restored or string indicating what's to be done next. A `WP_Error` object or false otherwise. - */ - public function restore() { - // If this is a site connection we need to trigger a full reconnection as our only secure means of - // communication with WPCOM, aka the blog token, is compromised. - if ( $this->is_site_connection() ) { - return $this->reconnect(); - } - - $validate_tokens_response = $this->get_tokens()->validate(); - - // If token validation failed, trigger a full reconnection. - if ( is_array( $validate_tokens_response ) && - isset( $validate_tokens_response['blog_token']['is_healthy'] ) && - isset( $validate_tokens_response['user_token']['is_healthy'] ) ) { - $blog_token_healthy = $validate_tokens_response['blog_token']['is_healthy']; - $user_token_healthy = $validate_tokens_response['user_token']['is_healthy']; - } else { - $blog_token_healthy = false; - $user_token_healthy = false; - } - - // Tokens are both valid, or both invalid. We can't fix the problem we don't see, so the full reconnection is needed. - if ( $blog_token_healthy === $user_token_healthy ) { - $result = $this->reconnect(); - return ( true === $result ) ? 'authorize' : $result; - } - - if ( ! $blog_token_healthy ) { - return $this->refresh_blog_token(); - } - - if ( ! $user_token_healthy ) { - return ( true === $this->refresh_user_token() ) ? 'authorize' : false; - } - - return false; - } - - /** - * Responds to a WordPress.com call to register the current site. - * Should be changed to protected. - * - * @param array $registration_data Array of [ secret_1, user_id ]. - */ - public function handle_registration( array $registration_data ) { - list( $registration_secret_1, $registration_user_id ) = $registration_data; - if ( empty( $registration_user_id ) ) { - return new \WP_Error( 'registration_state_invalid', __( 'Invalid Registration State', 'jetpack-connection' ), 400 ); - } - - return ( new Secrets() )->verify( 'register', $registration_secret_1, (int) $registration_user_id ); - } - - /** - * Perform the API request to validate the blog and user tokens. - * - * @deprecated 1.24.0 Use Automattic\Jetpack\Connection\Tokens->validate_tokens() instead. - * - * @param int|null $user_id ID of the user we need to validate token for. Current user's ID by default. - * - * @return array|false|WP_Error The API response: `array( 'blog_token_is_healthy' => true|false, 'user_token_is_healthy' => true|false )`. - */ - public function validate_tokens( $user_id = null ) { - _deprecated_function( __METHOD__, '1.24.0', 'Automattic\\Jetpack\\Connection\\Tokens->validate' ); - return $this->get_tokens()->validate( $user_id ); - } - - /** - * Verify a Previously Generated Secret. - * - * @deprecated 1.24.0 Use Automattic\Jetpack\Connection\Secrets->verify() instead. - * - * @param string $action The type of secret to verify. - * @param string $secret_1 The secret string to compare to what is stored. - * @param int $user_id The user ID of the owner of the secret. - * @return \WP_Error|string WP_Error on failure, secret_2 on success. - */ - public function verify_secrets( $action, $secret_1, $user_id ) { - _deprecated_function( __METHOD__, '1.24.0', 'Automattic\\Jetpack\\Connection\\Secrets->verify' ); - return ( new Secrets() )->verify( $action, $secret_1, $user_id ); - } - - /** - * Responds to a WordPress.com call to authorize the current user. - * Should be changed to protected. - */ - public function handle_authorization() { - } - - /** - * Obtains the auth token. - * - * @param array $data The request data. - * @return object|\WP_Error Returns the auth token on success. - * Returns a \WP_Error on failure. - */ - public function get_token( $data ) { - return $this->get_tokens()->get( $data, $this->api_url( 'token' ) ); - } - - /** - * Builds a URL to the Jetpack connection auth page. - * - * @since 2.7.6 Added optional $from and $raw parameters. - * - * @param WP_User|null $user (optional) defaults to the current logged in user. - * @param string|null $redirect (optional) a redirect URL to use instead of the default. - * @param bool|string $from If not false, adds 'from=$from' param to the connect URL. - * @param bool $raw If true, URL will not be escaped. - * - * @return string Connect URL. - */ - public function get_authorization_url( $user = null, $redirect = null, $from = false, $raw = false ) { - if ( empty( $user ) ) { - $user = wp_get_current_user(); - } - - $roles = new Roles(); - $role = $roles->translate_user_to_role( $user ); - $signed_role = $this->get_tokens()->sign_role( $role ); - - /** - * Filter the URL of the first time the user gets redirected back to your site for connection - * data processing. - * - * @since 1.7.0 - * @since-jetpack 8.0.0 - * - * @param string $redirect_url Defaults to the site admin URL. - */ - $processing_url = apply_filters( 'jetpack_connect_processing_url', admin_url( 'admin.php' ) ); - - /** - * Filter the URL to redirect the user back to when the authorization process - * is complete. - * - * @since 1.7.0 - * @since-jetpack 8.0.0 - * - * @param string $redirect_url Defaults to the site URL. - */ - $redirect = apply_filters( 'jetpack_connect_redirect_url', $redirect ); - - $secrets = ( new Secrets() )->generate( 'authorize', $user->ID, 2 * HOUR_IN_SECONDS ); - - /** - * Filter the type of authorization. - * 'calypso' completes authorization on wordpress.com/jetpack/connect - * while 'jetpack' ( or any other value ) completes the authorization at jetpack.wordpress.com. - * - * @since 1.7.0 - * @since-jetpack 4.3.3 - * - * @param string $auth_type Defaults to 'calypso', can also be 'jetpack'. - */ - $auth_type = apply_filters( 'jetpack_auth_type', 'calypso' ); - - /** - * Filters the user connection request data for additional property addition. - * - * @since 1.7.0 - * @since-jetpack 8.0.0 - * - * @param array $request_data request data. - */ - $body = apply_filters( - 'jetpack_connect_request_body', - array( - 'response_type' => 'code', - 'client_id' => \Jetpack_Options::get_option( 'id' ), - 'redirect_uri' => add_query_arg( - array( - 'handler' => 'jetpack-connection-webhooks', - 'action' => 'authorize', - '_wpnonce' => wp_create_nonce( "jetpack-authorize_{$role}_{$redirect}" ), - 'redirect' => $redirect ? rawurlencode( $redirect ) : false, - ), - esc_url( $processing_url ) - ), - 'state' => $user->ID, - 'scope' => $signed_role, - 'user_email' => $user->user_email, - 'user_login' => $user->user_login, - 'is_active' => $this->has_connected_owner(), // TODO Deprecate this. - 'jp_version' => (string) Constants::get_constant( 'JETPACK__VERSION' ), - 'auth_type' => $auth_type, - 'secret' => $secrets['secret_1'], - 'blogname' => get_option( 'blogname' ), - 'site_url' => Urls::site_url(), - 'home_url' => Urls::home_url(), - 'site_icon' => get_site_icon_url(), - 'site_lang' => get_locale(), - 'site_created' => $this->get_assumed_site_creation_date(), - 'allow_site_connection' => ! $this->has_connected_owner(), - 'calypso_env' => ( new Host() )->get_calypso_env(), - 'source' => ( new Host() )->get_source_query(), - ) - ); - - $body = static::apply_activation_source_to_args( urlencode_deep( $body ) ); - - $api_url = $this->api_url( 'authorize' ); - - $url = add_query_arg( $body, $api_url ); - - if ( is_network_admin() ) { - $url = add_query_arg( 'is_multisite', network_admin_url( 'admin.php?page=jetpack-settings' ), $url ); - } - - if ( $from ) { - $url = add_query_arg( 'from', $from, $url ); - } - - if ( $raw ) { - $url = esc_url_raw( $url ); - } - - /** - * Filter the URL used when connecting a user to a WordPress.com account. - * - * @since 2.0.0 - * @since 2.7.6 Added $raw parameter. - * - * @param string $url Connection URL. - * @param bool $raw If true, URL will not be escaped. - */ - return apply_filters( 'jetpack_build_authorize_url', $url, $raw ); - } - - /** - * Authorizes the user by obtaining and storing the user token. - * - * @param array $data The request data. - * @return string|\WP_Error Returns a string on success. - * Returns a \WP_Error on failure. - */ - public function authorize( $data = array() ) { - /** - * Action fired when user authorization starts. - * - * @since 1.7.0 - * @since-jetpack 8.0.0 - */ - do_action( 'jetpack_authorize_starting' ); - - $roles = new Roles(); - $role = $roles->translate_current_user_to_role(); - - if ( ! $role ) { - return new \WP_Error( 'no_role', 'Invalid request.', 400 ); - } - - $cap = $roles->translate_role_to_cap( $role ); - if ( ! $cap ) { - return new \WP_Error( 'no_cap', 'Invalid request.', 400 ); - } - - if ( ! empty( $data['error'] ) ) { - return new \WP_Error( $data['error'], 'Error included in the request.', 400 ); - } - - if ( ! isset( $data['state'] ) ) { - return new \WP_Error( 'no_state', 'Request must include state.', 400 ); - } - - if ( ! ctype_digit( $data['state'] ) ) { - return new \WP_Error( $data['error'], 'State must be an integer.', 400 ); - } - - $current_user_id = get_current_user_id(); - if ( $current_user_id !== (int) $data['state'] ) { - return new \WP_Error( 'wrong_state', 'State does not match current user.', 400 ); - } - - if ( empty( $data['code'] ) ) { - return new \WP_Error( 'no_code', 'Request must include an authorization code.', 400 ); - } - - $token = $this->get_tokens()->get( $data, $this->api_url( 'token' ) ); - - if ( is_wp_error( $token ) ) { - $code = $token->get_error_code(); - if ( empty( $code ) ) { - $code = 'invalid_token'; - } - return new \WP_Error( $code, $token->get_error_message(), 400 ); - } - - if ( ! $token ) { - return new \WP_Error( 'no_token', 'Error generating token.', 400 ); - } - - $is_connection_owner = ! $this->has_connected_owner(); - - $this->get_tokens()->update_user_token( $current_user_id, sprintf( '%s.%d', $token, $current_user_id ), $is_connection_owner ); - - /** - * Fires after user has successfully received an auth token. - * - * @since 1.7.0 - * @since-jetpack 3.9.0 - */ - do_action( 'jetpack_user_authorized' ); - - if ( ! $is_connection_owner ) { - /** - * Action fired when a secondary user has been authorized. - * - * @since 1.7.0 - * @since-jetpack 8.0.0 - */ - do_action( 'jetpack_authorize_ending_linked' ); - return 'linked'; - } - - /** - * Action fired when the master user has been authorized. - * - * @since 1.7.0 - * @since-jetpack 8.0.0 - * - * @param array $data The request data. - */ - do_action( 'jetpack_authorize_ending_authorized', $data ); - - \Jetpack_Options::delete_raw_option( 'jetpack_last_connect_url_check' ); - - ( new Nonce_Handler() )->reschedule(); - - return 'authorized'; - } - - /** - * Disconnects from the Jetpack servers. - * Forgets all connection details and tells the Jetpack servers to do the same. - * - * @param boolean $disconnect_wpcom Should disconnect_site_wpcom be called. - * @param bool $ignore_connected_plugins Delete the tokens even if there are other connected plugins. - */ - public function disconnect_site( $disconnect_wpcom = true, $ignore_connected_plugins = true ) { - if ( ! $ignore_connected_plugins && null !== $this->plugin && ! $this->plugin->is_only() ) { - return false; - } - - wp_clear_scheduled_hook( 'jetpack_clean_nonces' ); - - ( new Nonce_Handler() )->clean_all(); - - Heartbeat::init()->deactivate(); - - /** - * Fires before a site is disconnected. - * - * @since 1.36.3 - */ - do_action( 'jetpack_site_before_disconnected' ); - - // If the site is in an IDC because sync is not allowed, - // let's make sure to not disconnect the production site. - if ( $disconnect_wpcom ) { - $tracking = new Tracking(); - $tracking->record_user_event( 'disconnect_site', array() ); - - $this->disconnect_site_wpcom( $ignore_connected_plugins ); - } - - $this->delete_all_connection_tokens( $ignore_connected_plugins ); - - // Remove tracked package versions, since they depend on the Jetpack Connection. - delete_option( Package_Version_Tracker::PACKAGE_VERSION_OPTION ); - - $jetpack_unique_connection = \Jetpack_Options::get_option( 'unique_connection' ); - if ( $jetpack_unique_connection ) { - // Check then record unique disconnection if site has never been disconnected previously. - if ( - 1 === $jetpack_unique_connection['disconnected'] ) { - $jetpack_unique_connection['disconnected'] = 1; - } else { - if ( 0 === $jetpack_unique_connection['disconnected'] ) { - $a8c_mc_stats_instance = new A8c_Mc_Stats(); - $a8c_mc_stats_instance->add( 'connections', 'unique-disconnect' ); - $a8c_mc_stats_instance->do_server_side_stats(); - } - // increment number of times disconnected. - $jetpack_unique_connection['disconnected'] += 1; - } - - \Jetpack_Options::update_option( 'unique_connection', $jetpack_unique_connection ); - } - - /** - * Fires when a site is disconnected. - * - * @since 1.30.1 - */ - do_action( 'jetpack_site_disconnected' ); - } - - /** - * The Base64 Encoding of the SHA1 Hash of the Input. - * - * @param string $text The string to hash. - * @return string - */ - public function sha1_base64( $text ) { - return base64_encode( sha1( $text, true ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode - } - - /** - * This function mirrors Jetpack_Data::is_usable_domain() in the WPCOM codebase. - * - * @param string $domain The domain to check. - * - * @return bool|WP_Error - */ - public function is_usable_domain( $domain ) { - - // If it's empty, just fail out. - if ( ! $domain ) { - return new \WP_Error( - 'fail_domain_empty', - /* translators: %1$s is a domain name. */ - sprintf( __( 'Domain `%1$s` just failed is_usable_domain check as it is empty.', 'jetpack-connection' ), $domain ) - ); - } - - /** - * Skips the usuable domain check when connecting a site. - * - * Allows site administrators with domains that fail gethostname-based checks to pass the request to WP.com - * - * @since 1.7.0 - * @since-jetpack 4.1.0 - * - * @param bool If the check should be skipped. Default false. - */ - if ( apply_filters( 'jetpack_skip_usuable_domain_check', false ) ) { - return true; - } - - // None of the explicit localhosts. - $forbidden_domains = array( - 'wordpress.com', - 'localhost', - 'localhost.localdomain', - 'local.wordpress.test', // VVV pattern. - 'local.wordpress-trunk.test', // VVV pattern. - 'src.wordpress-develop.test', // VVV pattern. - 'build.wordpress-develop.test', // VVV pattern. - ); - if ( in_array( $domain, $forbidden_domains, true ) ) { - return new \WP_Error( - 'fail_domain_forbidden', - sprintf( - /* translators: %1$s is a domain name. */ - __( - 'Domain `%1$s` just failed is_usable_domain check as it is in the forbidden array.', - 'jetpack-connection' - ), - $domain - ) - ); - } - - // No .test or .local domains. - if ( preg_match( '#\.(test|local)$#i', $domain ) ) { - return new \WP_Error( - 'fail_domain_tld', - sprintf( - /* translators: %1$s is a domain name. */ - __( - 'Domain `%1$s` just failed is_usable_domain check as it uses an invalid top level domain.', - 'jetpack-connection' - ), - $domain - ) - ); - } - - // No WPCOM subdomains. - if ( preg_match( '#\.WordPress\.com$#i', $domain ) ) { - return new \WP_Error( - 'fail_subdomain_wpcom', - sprintf( - /* translators: %1$s is a domain name. */ - __( - 'Domain `%1$s` just failed is_usable_domain check as it is a subdomain of WordPress.com.', - 'jetpack-connection' - ), - $domain - ) - ); - } - - // If PHP was compiled without support for the Filter module (very edge case). - if ( ! function_exists( 'filter_var' ) ) { - // Just pass back true for now, and let wpcom sort it out. - return true; - } - - $domain = preg_replace( '#^https?://#', '', untrailingslashit( $domain ) ); - - if ( filter_var( $domain, FILTER_VALIDATE_IP ) - && ! filter_var( $domain, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) - ) { - return new \WP_Error( - 'fail_ip_forbidden', - sprintf( - /* translators: %1$s is a domain name. */ - __( - 'IP address `%1$s` just failed is_usable_domain check as it is in the private network.', - 'jetpack-connection' - ), - $domain - ) - ); - } - - return true; - } - - /** - * Gets the requested token. - * - * @deprecated 1.24.0 Use Automattic\Jetpack\Connection\Tokens->get_access_token() instead. - * - * @param int|false $user_id false: Return the Blog Token. int: Return that user's User Token. - * @param string|false $token_key If provided, check that the token matches the provided input. - * @param bool|true $suppress_errors If true, return a falsy value when the token isn't found; When false, return a descriptive WP_Error when the token isn't found. - * - * @return object|false - * - * @see $this->get_tokens()->get_access_token() - */ - public function get_access_token( $user_id = false, $token_key = false, $suppress_errors = true ) { - _deprecated_function( __METHOD__, '1.24.0', 'Automattic\\Jetpack\\Connection\\Tokens->get_access_token' ); - return $this->get_tokens()->get_access_token( $user_id, $token_key, $suppress_errors ); - } - - /** - * In some setups, $HTTP_RAW_POST_DATA can be emptied during some IXR_Server paths - * since it is passed by reference to various methods. - * Capture it here so we can verify the signature later. - * - * @param array $methods an array of available XMLRPC methods. - * @return array the same array, since this method doesn't add or remove anything. - */ - public function xmlrpc_methods( $methods ) { - $this->raw_post_data = isset( $GLOBALS['HTTP_RAW_POST_DATA'] ) ? $GLOBALS['HTTP_RAW_POST_DATA'] : null; - return $methods; - } - - /** - * Resets the raw post data parameter for testing purposes. - */ - public function reset_raw_post_data() { - $this->raw_post_data = null; - } - - /** - * Registering an additional method. - * - * @param array $methods an array of available XMLRPC methods. - * @return array the amended array in case the method is added. - */ - public function public_xmlrpc_methods( $methods ) { - if ( array_key_exists( 'wp.getOptions', $methods ) ) { - $methods['wp.getOptions'] = array( $this, 'jetpack_get_options' ); - } - return $methods; - } - - /** - * Handles a getOptions XMLRPC method call. - * - * @param array $args method call arguments. - * @return array|IXR_Error An amended XMLRPC server options array. - */ - public function jetpack_get_options( $args ) { - global $wp_xmlrpc_server; - - $wp_xmlrpc_server->escape( $args ); - - $username = $args[1]; - $password = $args[2]; - - $user = $wp_xmlrpc_server->login( $username, $password ); - if ( ! $user ) { - return $wp_xmlrpc_server->error; - } - - $options = array(); - $user_data = $this->get_connected_user_data(); - if ( is_array( $user_data ) ) { - $options['jetpack_user_id'] = array( - 'desc' => __( 'The WP.com user ID of the connected user', 'jetpack-connection' ), - 'readonly' => true, - 'value' => $user_data['ID'], - ); - $options['jetpack_user_login'] = array( - 'desc' => __( 'The WP.com username of the connected user', 'jetpack-connection' ), - 'readonly' => true, - 'value' => $user_data['login'], - ); - $options['jetpack_user_email'] = array( - 'desc' => __( 'The WP.com user email of the connected user', 'jetpack-connection' ), - 'readonly' => true, - 'value' => $user_data['email'], - ); - $options['jetpack_user_site_count'] = array( - 'desc' => __( 'The number of sites of the connected WP.com user', 'jetpack-connection' ), - 'readonly' => true, - 'value' => $user_data['site_count'], - ); - } - $wp_xmlrpc_server->blog_options = array_merge( $wp_xmlrpc_server->blog_options, $options ); - $args = stripslashes_deep( $args ); - return $wp_xmlrpc_server->wp_getOptions( $args ); - } - - /** - * Adds Jetpack-specific options to the output of the XMLRPC options method. - * - * @param array $options standard Core options. - * @return array amended options. - */ - public function xmlrpc_options( $options ) { - $jetpack_client_id = false; - if ( $this->is_connected() ) { - $jetpack_client_id = \Jetpack_Options::get_option( 'id' ); - } - $options['jetpack_version'] = array( - 'desc' => __( 'Jetpack Plugin Version', 'jetpack-connection' ), - 'readonly' => true, - 'value' => Constants::get_constant( 'JETPACK__VERSION' ), - ); - - $options['jetpack_client_id'] = array( - 'desc' => __( 'The Client ID/WP.com Blog ID of this site', 'jetpack-connection' ), - 'readonly' => true, - 'value' => $jetpack_client_id, - ); - return $options; - } - - /** - * Resets the saved authentication state in between testing requests. - */ - public function reset_saved_auth_state() { - $this->xmlrpc_verification = null; - } - - /** - * Sign a user role with the master access token. - * If not specified, will default to the current user. - * - * @access public - * - * @param string $role User role. - * @param int $user_id ID of the user. - * @return string Signed user role. - */ - public function sign_role( $role, $user_id = null ) { - return $this->get_tokens()->sign_role( $role, $user_id ); - } - - /** - * Set the plugin instance. - * - * @param Plugin $plugin_instance The plugin instance. - * - * @return $this - */ - public function set_plugin_instance( Plugin $plugin_instance ) { - $this->plugin = $plugin_instance; - - return $this; - } - - /** - * Retrieve the plugin management object. - * - * @return Plugin|null - */ - public function get_plugin() { - return $this->plugin; - } - - /** - * Get all connected plugins information, excluding those disconnected by user. - * WARNING: the method cannot be called until Plugin_Storage::configure is called, which happens on plugins_loaded - * Even if you don't use Jetpack Config, it may be introduced later by other plugins, - * so please make sure not to run the method too early in the code. - * - * @return array|WP_Error - */ - public function get_connected_plugins() { - $maybe_plugins = Plugin_Storage::get_all(); - - if ( $maybe_plugins instanceof WP_Error ) { - return $maybe_plugins; - } - - return $maybe_plugins; - } - - /** - * Force plugin disconnect. After its called, the plugin will not be allowed to use the connection. - * Note: this method does not remove any access tokens. - * - * @deprecated since 1.39.0 - * @return bool - */ - public function disable_plugin() { - return null; - } - - /** - * Force plugin reconnect after user-initiated disconnect. - * After its called, the plugin will be allowed to use the connection again. - * Note: this method does not initialize access tokens. - * - * @deprecated since 1.39.0. - * @return bool - */ - public function enable_plugin() { - return null; - } - - /** - * Whether the plugin is allowed to use the connection, or it's been disconnected by user. - * If no plugin slug was passed into the constructor, always returns true. - * - * @deprecated 1.42.0 This method no longer has a purpose after the removal of the soft disconnect feature. - * - * @return bool - */ - public function is_plugin_enabled() { - return true; - } - - /** - * Perform the API request to refresh the blog token. - * Note that we are making this request on behalf of the Jetpack master user, - * given they were (most probably) the ones that registered the site at the first place. - * - * @return WP_Error|bool The result of updating the blog_token option. - */ - public function refresh_blog_token() { - ( new Tracking() )->record_user_event( 'restore_connection_refresh_blog_token' ); - - $blog_id = \Jetpack_Options::get_option( 'id' ); - if ( ! $blog_id ) { - return new WP_Error( 'site_not_registered', 'Site not registered.' ); - } - - $url = sprintf( - '%s/%s/v%s/%s', - Constants::get_constant( 'JETPACK__WPCOM_JSON_API_BASE' ), - 'wpcom', - '2', - 'sites/' . $blog_id . '/jetpack-refresh-blog-token' - ); - $method = 'POST'; - $user_id = get_current_user_id(); - - $response = Client::remote_request( compact( 'url', 'method', 'user_id' ) ); - - if ( is_wp_error( $response ) ) { - return new WP_Error( 'refresh_blog_token_http_request_failed', $response->get_error_message() ); - } - - $code = wp_remote_retrieve_response_code( $response ); - $entity = wp_remote_retrieve_body( $response ); - - if ( $entity ) { - $json = json_decode( $entity ); - } else { - $json = false; - } - - if ( 200 !== $code ) { - if ( empty( $json->code ) ) { - return new WP_Error( 'unknown', '', $code ); - } - - /* translators: Error description string. */ - $error_description = isset( $json->message ) ? sprintf( __( 'Error Details: %s', 'jetpack-connection' ), (string) $json->message ) : ''; - - return new WP_Error( (string) $json->code, $error_description, $code ); - } - - if ( empty( $json->jetpack_secret ) || ! is_scalar( $json->jetpack_secret ) ) { - return new WP_Error( 'jetpack_secret', '', $code ); - } - - Error_Handler::get_instance()->delete_all_errors(); - - return $this->get_tokens()->update_blog_token( (string) $json->jetpack_secret ); - } - - /** - * Disconnect the user from WP.com, and initiate the reconnect process. - * - * @return bool - */ - public function refresh_user_token() { - ( new Tracking() )->record_user_event( 'restore_connection_refresh_user_token' ); - $this->disconnect_user( null, true, true ); - return true; - } - - /** - * Fetches a signed token. - * - * @deprecated 1.24.0 Use Automattic\Jetpack\Connection\Tokens->get_signed_token() instead. - * - * @param object $token the token. - * @return WP_Error|string a signed token - */ - public function get_signed_token( $token ) { - _deprecated_function( __METHOD__, '1.24.0', 'Automattic\\Jetpack\\Connection\\Tokens->get_signed_token' ); - return $this->get_tokens()->get_signed_token( $token ); - } - - /** - * If the site-level connection is active, add the list of plugins using connection to the heartbeat (except Jetpack itself) - * - * @param array $stats The Heartbeat stats array. - * @return array $stats - */ - public function add_stats_to_heartbeat( $stats ) { - - if ( ! $this->is_connected() ) { - return $stats; - } - - $active_plugins_using_connection = Plugin_Storage::get_all(); - foreach ( array_keys( $active_plugins_using_connection ) as $plugin_slug ) { - if ( 'jetpack' !== $plugin_slug ) { - $stats_group = isset( $active_plugins_using_connection['jetpack'] ) ? 'combined-connection' : 'standalone-connection'; - $stats[ $stats_group ][] = $plugin_slug; - } - } - return $stats; - } - - /** - * Get the WPCOM or self-hosted site ID. - * - * @param bool $quiet Return null instead of an error. - * - * @return int|WP_Error|null - */ - public static function get_site_id( $quiet = false ) { - $is_wpcom = ( defined( 'IS_WPCOM' ) && IS_WPCOM ); - $site_id = $is_wpcom ? get_current_blog_id() : \Jetpack_Options::get_option( 'id' ); - if ( ! $site_id ) { - return $quiet - ? null - : new \WP_Error( - 'unavailable_site_id', - __( 'Sorry, something is wrong with your Jetpack connection.', 'jetpack-connection' ), - 403 - ); - } - return (int) $site_id; - } - - /** - * Check if Jetpack is ready for uninstall cleanup. - * - * @param string $current_plugin_slug The current plugin's slug. - * - * @return bool - */ - public static function is_ready_for_cleanup( $current_plugin_slug ) { - $active_plugins = get_option( Plugin_Storage::ACTIVE_PLUGINS_OPTION_NAME ); - - return empty( $active_plugins ) || ! is_array( $active_plugins ) - || ( count( $active_plugins ) === 1 && array_key_exists( $current_plugin_slug, $active_plugins ) ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-nonce-handler.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-nonce-handler.php deleted file mode 100644 index 48e14a15..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-nonce-handler.php +++ /dev/null @@ -1,212 +0,0 @@ -db = $wpdb; - } - - /** - * Scheduling the WP-cron cleanup event. - */ - public function init_schedule() { - add_action( 'jetpack_clean_nonces', array( __CLASS__, 'clean_scheduled' ) ); - if ( ! wp_next_scheduled( 'jetpack_clean_nonces' ) ) { - wp_schedule_event( time(), 'hourly', 'jetpack_clean_nonces' ); - } - } - - /** - * Reschedule the WP-cron cleanup event to make it start sooner. - */ - public function reschedule() { - wp_clear_scheduled_hook( 'jetpack_clean_nonces' ); - wp_schedule_event( time(), 'hourly', 'jetpack_clean_nonces' ); - } - - /** - * Adds a used nonce to a list of known nonces. - * - * @param int $timestamp the current request timestamp. - * @param string $nonce the nonce value. - * - * @return bool whether the nonce is unique or not. - */ - public function add( $timestamp, $nonce ) { - if ( isset( static::$nonces_used_this_request[ "$timestamp:$nonce" ] ) ) { - return static::$nonces_used_this_request[ "$timestamp:$nonce" ]; - } - - // This should always have gone through Jetpack_Signature::sign_request() first to check $timestamp and $nonce. - $timestamp = (int) $timestamp; - $nonce = esc_sql( $nonce ); - - // Raw query so we can avoid races: add_option will also update. - $show_errors = $this->db->hide_errors(); - - // Running `try...finally` to make sure that we re-enable errors in case of an exception. - try { - $old_nonce = $this->db->get_row( - $this->db->prepare( "SELECT 1 FROM `{$this->db->options}` WHERE option_name = %s", "jetpack_nonce_{$timestamp}_{$nonce}" ) - ); - - if ( $old_nonce === null ) { - $return = (bool) $this->db->query( - $this->db->prepare( - "INSERT INTO `{$this->db->options}` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, %s)", - "jetpack_nonce_{$timestamp}_{$nonce}", - time(), - 'no' - ) - ); - } else { - $return = false; - } - } finally { - $this->db->show_errors( $show_errors ); - } - - static::$nonces_used_this_request[ "$timestamp:$nonce" ] = $return; - - return $return; - } - - /** - * Removing all existing nonces, or at least as many as possible. - * Capped at 20 seconds to avoid breaking the site. - * - * @param int $cutoff_timestamp All nonces added before this timestamp will be removed. - * @param int $time_limit How long the cleanup can run (in seconds). - * - * @return true - */ - public function clean_all( $cutoff_timestamp = PHP_INT_MAX, $time_limit = 20 ) { - // phpcs:ignore Generic.CodeAnalysis.ForLoopWithTestFunctionCall.NotAllowed - for ( $end_time = time() + $time_limit; time() < $end_time; ) { - $result = $this->delete( static::CLEAN_ALL_LIMIT_PER_BATCH, $cutoff_timestamp ); - - if ( ! $result ) { - break; - } - } - - return true; - } - - /** - * Scheduled clean up of the expired nonces. - */ - public static function clean_scheduled() { - /** - * Adjust the time limit for the scheduled cleanup. - * - * @since 9.5.0 - * - * @param int $time_limit How long the cleanup can run (in seconds). - */ - $time_limit = apply_filters( 'jetpack_connection_nonce_cleanup_runtime_limit', static::SCHEDULED_CLEANUP_TIME_LIMIT ); - - ( new static() )->clean_all( time() - static::LIFETIME, $time_limit ); - } - - /** - * Delete the nonces. - * - * @param int $limit How many nonces to delete. - * @param null|int $cutoff_timestamp All nonces added before this timestamp will be removed. - * - * @return int|false Number of removed nonces, or `false` if nothing to remove (or in case of a database error). - */ - public function delete( $limit = 10, $cutoff_timestamp = null ) { - global $wpdb; - - $ids = $wpdb->get_col( - $wpdb->prepare( - "SELECT option_id FROM `{$wpdb->options}`" - . " WHERE `option_name` >= 'jetpack_nonce_' AND `option_name` < %s" - . ' LIMIT %d', - 'jetpack_nonce_' . $cutoff_timestamp, - $limit - ) - ); - - if ( ! is_array( $ids ) ) { - // There's an error and we can't proceed. - return false; - } - - // Removing zeroes in case AUTO_INCREMENT of the options table is broken, and all ID's are zeroes. - $ids = array_filter( $ids ); - - if ( array() === $ids ) { - // There's nothing to remove. - return false; - } - - $ids_fill = implode( ', ', array_fill( 0, count( $ids ), '%d' ) ); - - $args = $ids; - $args[] = 'jetpack_nonce_%'; - - // The Code Sniffer is unable to understand what's going on... - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.PreparedSQLPlaceholders.ReplacementsWrongNumber - return $wpdb->query( $wpdb->prepare( "DELETE FROM `{$wpdb->options}` WHERE `option_id` IN ( {$ids_fill} ) AND option_name LIKE %s", $args ) ); - } - - /** - * Clean the cached nonces valid during the current request, therefore making them invalid. - * - * @return bool - */ - public static function invalidate_request_nonces() { - static::$nonces_used_this_request = array(); - - return true; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-package-version-tracker.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-package-version-tracker.php deleted file mode 100644 index 2d1b3743..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-package-version-tracker.php +++ /dev/null @@ -1,176 +0,0 @@ -is_rate_limiting() ) { - return; - } - - /** - * Obtains the package versions. - * - * @since 1.30.2 - * - * @param array An associative array of Jetpack package slugs and their corresponding versions as key/value pairs. - */ - $filter_versions = apply_filters( 'jetpack_package_versions', array() ); - - if ( ! is_array( $filter_versions ) ) { - return; - } - - $option_versions = get_option( self::PACKAGE_VERSION_OPTION, array() ); - - foreach ( $filter_versions as $package => $version ) { - if ( ! is_string( $package ) || ! is_string( $version ) ) { - unset( $filter_versions[ $package ] ); - } - } - - if ( ! is_array( $option_versions ) - || count( array_diff_assoc( $filter_versions, $option_versions ) ) - || count( array_diff_assoc( $option_versions, $filter_versions ) ) - ) { - $this->update_package_versions_option( $filter_versions ); - } - } - - /** - * Updates the package versions option. - * - * @param array $package_versions The package versions. - */ - protected function update_package_versions_option( $package_versions ) { - if ( ! $this->is_sync_enabled() ) { - $this->update_package_versions_via_remote_request( $package_versions ); - return; - } - - update_option( self::PACKAGE_VERSION_OPTION, $package_versions ); - } - - /** - * Whether Jetpack Sync is enabled. - * - * @return boolean true if Sync is present and enabled, false otherwise - */ - protected function is_sync_enabled() { - if ( class_exists( 'Automattic\Jetpack\Sync\Settings' ) && \Automattic\Jetpack\Sync\Settings::is_sync_enabled() ) { - - return true; - } - - return false; - } - - /** - * Fallback for updating the package versions via a remote request when Sync is not present. - * - * Updates the package versions as follows: - * - Sends the updated package versions to wpcom. - * - Updates the 'jetpack_package_versions' option. - * - * @param array $package_versions The package versions. - */ - protected function update_package_versions_via_remote_request( $package_versions ) { - $connection = new Manager(); - if ( ! $connection->is_connected() ) { - return; - } - - $site_id = \Jetpack_Options::get_option( 'id' ); - - $last_failed_attempt_within_hour = get_transient( self::CACHED_FAILED_REQUEST_KEY ); - - if ( $last_failed_attempt_within_hour ) { - return; - } - - $body = wp_json_encode( - array( - 'package_versions' => $package_versions, - ) - ); - - $response = Client::wpcom_json_api_request_as_blog( - sprintf( '/sites/%d/jetpack-package-versions', $site_id ), - '2', - array( - 'headers' => array( 'content-type' => 'application/json' ), - 'method' => 'POST', - ), - $body, - 'wpcom' - ); - - if ( 200 === wp_remote_retrieve_response_code( $response ) ) { - update_option( self::PACKAGE_VERSION_OPTION, $package_versions ); - } else { - set_transient( self::CACHED_FAILED_REQUEST_KEY, time(), self::CACHED_FAILED_REQUEST_EXPIRATION ); - } - } - - /** - * Check if version check is being rate limited, and update the rate limiting transient if needed. - * - * @return bool - */ - private function is_rate_limiting() { - if ( get_transient( static::RATE_LIMITER_KEY ) ) { - return true; - } - - set_transient( static::RATE_LIMITER_KEY, time(), static::RATE_LIMITER_TIMEOUT ); - - return false; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-package-version.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-package-version.php deleted file mode 100644 index 91888c8a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-package-version.php +++ /dev/null @@ -1,30 +0,0 @@ - array( - 'name' => 'IONOS', - 'logo' => array( - 'src' => '/images/ionos-logo.jpg', - 'width' => 119, - 'height' => 32, - ), - ), - ); - - /** - * A list of supported presets. - * - * @var array - */ - private static $supported_presets = array( - 'IONA' => 'jetpack_backup_daily', - ); - - /** - * Get singleton instance of class. - * - * @return Partner_Coupon - */ - public static function get_instance() { - if ( self::$instance === null ) { - self::$instance = new Partner_Coupon( array( Connection_Client::class, 'wpcom_json_api_request_as_blog' ) ); - } - - return self::$instance; - } - - /** - * Constructor. - * - * @param callable $request_as_blog Callable that executes a blog-authenticated request. - */ - public function __construct( $request_as_blog ) { - $this->request_as_blog = $request_as_blog; - } - - /** - * Register hooks to catch and purge coupon. - * - * @param string $plugin_slug The plugin slug to differentiate between Jetpack connections. - * @param string $redirect_location The location we should redirect to after catching the coupon. - */ - public static function register_coupon_admin_hooks( $plugin_slug, $redirect_location ) { - $instance = self::get_instance(); - - // We have to use an anonymous function, so we can pass along relevant information - // and not have to hardcode values for a single plugin. - // This open up the opportunity for e.g. the "all-in-one" and backup plugins - // to both implement partner coupon logic. - add_action( - 'admin_init', - function () use ( $plugin_slug, $redirect_location, $instance ) { - $instance->catch_coupon( $plugin_slug, $redirect_location ); - $instance->maybe_purge_coupon( $plugin_slug ); - } - ); - } - - /** - * Catch partner coupon and redirect to claim component. - * - * @param string $plugin_slug The plugin slug to differentiate between Jetpack connections. - * @param string $redirect_location The location we should redirect to after catching the coupon. - */ - public function catch_coupon( $plugin_slug, $redirect_location ) { - // Accept and store a partner coupon if present, and redirect to Jetpack connection screen. - $partner_coupon = isset( $_GET['jetpack-partner-coupon'] ) ? sanitize_text_field( wp_unslash( $_GET['jetpack-partner-coupon'] ) ) : false; // phpcs:ignore WordPress.Security.NonceVerification.Recommended - if ( $partner_coupon ) { - Jetpack_Options::update_options( - array( - self::$coupon_option => $partner_coupon, - self::$added_option => time(), - ) - ); - - $connection = new Connection_Manager( $plugin_slug ); - if ( $connection->is_connected() ) { - $redirect_location = add_query_arg( array( 'showCouponRedemption' => 1 ), $redirect_location ); - wp_safe_redirect( $redirect_location ); - } else { - wp_safe_redirect( $redirect_location ); - } - } - } - - /** - * Purge partner coupon. - * - * We try to remotely check if a coupon looks valid. We also automatically purge - * partner coupons after a certain amount of time to prevent unnecessary look-ups - * and/or promoting a product for months or years in the future due to unknown - * errors. - * - * @param string $plugin_slug The plugin slug to differentiate between Jetpack connections. - */ - public function maybe_purge_coupon( $plugin_slug ) { - // Only run coupon checks on Jetpack admin pages. - // The "admin-ui" package is responsible for registering the Jetpack admin - // page for all Jetpack plugins and has hardcoded the settings page to be - // "jetpack", so we shouldn't need to allow for dynamic/custom values. - // phpcs:ignore WordPress.Security.NonceVerification.Recommended - if ( ! isset( $_GET['page'] ) || 'jetpack' !== $_GET['page'] ) { - return; - } - - if ( ( new Status() )->is_offline_mode() ) { - return; - } - - $connection = new Connection_Manager( $plugin_slug ); - if ( ! $connection->is_connected() ) { - return; - } - - if ( $this->maybe_purge_coupon_by_added_date() ) { - return; - } - - // Limit checks to happen once a minute at most. - if ( get_transient( self::$last_check_transient ) ) { - return; - } - - set_transient( self::$last_check_transient, true, MINUTE_IN_SECONDS ); - - $this->maybe_purge_coupon_by_availability_check(); - } - - /** - * Purge coupon based on local added date. - * - * We automatically remove the coupon after a month to "self-heal" if - * something in the claim process has broken with the site. - * - * @return bool Return whether we should skip further purge checks. - */ - protected function maybe_purge_coupon_by_added_date() { - $date = Jetpack_Options::get_option( self::$added_option, '' ); - - if ( empty( $date ) ) { - return true; - } - - $expire_date = strtotime( '+30 days', $date ); - $today = time(); - - if ( $today >= $expire_date ) { - $this->delete_coupon_data(); - - return true; - } - - return false; - } - - /** - * Purge coupon based on availability check. - * - * @return bool Return whether we deleted coupon data. - */ - protected function maybe_purge_coupon_by_availability_check() { - $blog_id = Jetpack_Options::get_option( 'id', false ); - - if ( ! $blog_id ) { - return false; - } - - $coupon = self::get_coupon(); - - if ( ! $coupon ) { - return false; - } - - $response = call_user_func_array( - $this->request_as_blog, - array( - add_query_arg( - array( 'coupon_code' => $coupon['coupon_code'] ), - sprintf( - '/sites/%d/jetpack-partner/coupon/v1/site/coupon', - $blog_id - ) - ), - 2, - array( 'method' => 'GET' ), - null, - 'wpcom', - ) - ); - - $body = json_decode( wp_remote_retrieve_body( $response ), true ); - - if ( - 200 === wp_remote_retrieve_response_code( $response ) && - is_array( $body ) && - isset( $body['available'] ) && - false === $body['available'] - ) { - $this->delete_coupon_data(); - - return true; - } - - return false; - } - - /** - * Delete all coupon data. - */ - protected function delete_coupon_data() { - Jetpack_Options::delete_option( - array( - self::$coupon_option, - self::$added_option, - ) - ); - } - - /** - * Get partner coupon data. - * - * @return array|bool - */ - public static function get_coupon() { - $coupon_code = Jetpack_Options::get_option( self::$coupon_option, '' ); - - if ( ! is_string( $coupon_code ) || empty( $coupon_code ) ) { - return false; - } - - $instance = self::get_instance(); - $partner = $instance->get_coupon_partner( $coupon_code ); - - if ( ! $partner ) { - return false; - } - - $preset = $instance->get_coupon_preset( $coupon_code ); - - if ( ! $preset ) { - return false; - } - - $product = $instance->get_coupon_product( $preset ); - - if ( ! $product ) { - return false; - } - - return array( - 'coupon_code' => $coupon_code, - 'partner' => $partner, - 'preset' => $preset, - 'product' => $product, - ); - } - - /** - * Get coupon partner. - * - * @param string $coupon_code Coupon code to go through. - * @return array|bool - */ - private function get_coupon_partner( $coupon_code ) { - if ( ! is_string( $coupon_code ) || false === strpos( $coupon_code, '_' ) ) { - return false; - } - - $prefix = strtok( $coupon_code, '_' ); - $supported_partners = $this->get_supported_partners(); - - if ( ! isset( $supported_partners[ $prefix ] ) ) { - return false; - } - - return array( - 'name' => $supported_partners[ $prefix ]['name'], - 'prefix' => $prefix, - 'logo' => isset( $supported_partners[ $prefix ]['logo'] ) ? $supported_partners[ $prefix ]['logo'] : null, - ); - } - - /** - * Get coupon product. - * - * @param string $coupon_preset The preset we wish to find a product for. - * @return array|bool - */ - private function get_coupon_product( $coupon_preset ) { - if ( ! is_string( $coupon_preset ) ) { - return false; - } - - /** - * Allow for plugins to register supported products. - * - * @since 1.6.0 - * - * @param array A list of product details. - * @return array - */ - $product_details = apply_filters( 'jetpack_partner_coupon_products', array() ); - $product_slug = $this->get_supported_presets()[ $coupon_preset ]; - - foreach ( $product_details as $product ) { - if ( ! $this->array_keys_exist( array( 'title', 'slug', 'description', 'features' ), $product ) ) { - continue; - } - - if ( $product_slug === $product['slug'] ) { - return $product; - } - } - - return false; - } - - /** - * Checks if multiple keys are present in an array. - * - * @param array $needles The keys we wish to check for. - * @param array $haystack The array we want to compare keys against. - * - * @return bool - */ - private function array_keys_exist( $needles, $haystack ) { - foreach ( $needles as $needle ) { - if ( ! isset( $haystack[ $needle ] ) ) { - return false; - } - } - - return true; - } - - /** - * Get coupon preset. - * - * @param string $coupon_code Coupon code to go through. - * @return string|bool - */ - private function get_coupon_preset( $coupon_code ) { - if ( ! is_string( $coupon_code ) ) { - return false; - } - - $regex = '/^.*?_(?P.*?)_.+$/'; - $matches = array(); - - if ( ! preg_match( $regex, $coupon_code, $matches ) ) { - return false; - } - - return isset( $this->get_supported_presets()[ $matches['slug'] ] ) ? $matches['slug'] : false; - } - - /** - * Get supported partners. - * - * @return array - */ - private function get_supported_partners() { - /** - * Allow external code to add additional supported partners. - * - * @since partner-1.6.0 - * @since 2.0.0 - * - * @param array $supported_partners A list of supported partners. - * @return array - */ - return apply_filters( 'jetpack_partner_coupon_supported_partners', self::$supported_partners ); - } - - /** - * Get supported presets. - * - * @return array - */ - private function get_supported_presets() { - /** - * Allow external code to add additional supported presets. - * - * @since partner-1.6.0 - * @since 2.0.0 - * - * @param array $supported_presets A list of supported presets. - * @return array - */ - return apply_filters( 'jetpack_partner_coupon_supported_presets', self::$supported_presets ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-partner.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-partner.php deleted file mode 100644 index cfb7bb7e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-partner.php +++ /dev/null @@ -1,215 +0,0 @@ -add_code_as_query_arg( self::SUBSIDIARY_CODE, $url ); - } - - /** - * Adds the affiliate code to the passed URL. - * - * @param string $url The URL. - * - * @return string - */ - public function add_affiliate_code_as_query_arg( $url ) { - return $this->add_code_as_query_arg( self::AFFILIATE_CODE, $url ); - } - - /** - * Adds the partner subsidiary code to the passed array. - * - * @since partner-1.5.0 - * @since 2.0.0 - * - * @param array $params The parameters array. - * - * @return array - */ - public function add_subsidiary_id_to_params_array( $params ) { - if ( ! is_array( $params ) ) { - return $params; - } - return array_merge( $params, $this->get_code_as_array( self::SUBSIDIARY_CODE ) ); - } - - /** - * Adds the affiliate code to the passed array. - * - * @since partner-1.5.0 - * @since 2.0.0 - * - * @param array $params The parameters array. - * - * @return array - */ - public function add_affiliate_code_to_params_array( $params ) { - if ( ! is_array( $params ) ) { - return $params; - } - return array_merge( $params, $this->get_code_as_array( self::AFFILIATE_CODE ) ); - } - - /** - * Returns the passed URL with the partner code added as a URL query arg. - * - * @since partner-1.0.0 - * @since 2.0.0 - * - * @param string $type The partner code. - * @param string $url The URL where the partner subsidiary id will be added. - * - * @return string The passed URL with the partner code added. - */ - public function add_code_as_query_arg( $type, $url ) { - return add_query_arg( $this->get_code_as_array( $type ), $url ); - } - - /** - * Gets the partner code in an associative array format - * - * @since partner-1.5.0 - * @since 2.0.0 - * - * @param string $type The partner code. - * @return array - */ - private function get_code_as_array( $type ) { - switch ( $type ) { - case self::AFFILIATE_CODE: - $query_arg_name = 'aff'; - break; - case self::SUBSIDIARY_CODE: - $query_arg_name = 'subsidiaryId'; - break; - default: - return array(); - } - - $code = $this->get_partner_code( $type ); - - if ( '' === $code ) { - return array(); - } - - return array( $query_arg_name => $code ); - } - - /** - * Returns a partner code. - * - * @since partner-1.0.0 - * @since 2.0.0 - * - * @param string $type This can be either 'affiliate' or 'subsidiary'. Returns empty string when code is unknown. - * - * @return string The partner code. - */ - public function get_partner_code( $type ) { - switch ( $type ) { - case self::AFFILIATE_CODE: - /** - * Allow to filter the affiliate code. - * - * @since partner-1.0.0 - * @since-jetpack 6.9.0 - * @since 2.0.0 - * - * @param string $affiliate_code The affiliate code, blank by default. - */ - return apply_filters( 'jetpack_affiliate_code', get_option( 'jetpack_affiliate_code', '' ) ); - case self::SUBSIDIARY_CODE: - /** - * Allow to filter the partner subsidiary id. - * - * @since partner-1.0.0 - * @since 2.0.0 - * - * @param string $subsidiary_id The partner subsidiary id, blank by default. - */ - return apply_filters( - 'jetpack_partner_subsidiary_id', - get_option( 'jetpack_partner_subsidiary_id', '' ) - ); - default: - return ''; - } - } - - /** - * Resets the singleton for testing purposes. - */ - public static function reset() { - self::$instance = null; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-plugin-storage.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-plugin-storage.php deleted file mode 100644 index c6a73c3c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-plugin-storage.php +++ /dev/null @@ -1,260 +0,0 @@ -is_connected() ) { - return; - } - - $site_id = \Jetpack_Options::get_option( 'id' ); - - $body = wp_json_encode( - array( - 'active_connected_plugins' => self::$plugins, - ) - ); - - Client::wpcom_json_api_request_as_blog( - sprintf( '/sites/%d/jetpack-active-connected-plugins', $site_id ), - '2', - array( - 'headers' => array( 'content-type' => 'application/json' ), - 'method' => 'POST', - ), - $body, - 'wpcom' - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-plugin.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-plugin.php deleted file mode 100644 index 80cd3df7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-plugin.php +++ /dev/null @@ -1,100 +0,0 @@ -slug = $slug; - - // Initialize Users_Connection_Admin - $this->users_connection_admin = new Users_Connection_Admin(); - } - - /** - * Get the plugin slug. - * - * @return string - */ - public function get_slug() { - return $this->slug; - } - - /** - * Add the plugin connection info into Jetpack. - * - * @param string $name Plugin name, required. - * @param array $args Plugin arguments, optional. - * - * @return $this - * @see $this->arguments_whitelist - */ - public function add( $name, array $args = array() ) { - $args = compact( 'name' ) + array_intersect_key( $args, array_flip( $this->arguments_whitelist ) ); - - Plugin_Storage::upsert( $this->slug, $args ); - - return $this; - } - - /** - * Remove the plugin connection info from Jetpack. - * - * @return $this - */ - public function remove() { - Plugin_Storage::delete( $this->slug ); - - return $this; - } - - /** - * Determine if this plugin connection is the only one active at the moment, if any. - * - * @return bool - */ - public function is_only() { - $plugins = Plugin_Storage::get_all(); - - return ! $plugins || ( array_key_exists( $this->slug, $plugins ) && 1 === count( $plugins ) ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-rest-authentication.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-rest-authentication.php deleted file mode 100644 index 47d1a0a0..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-rest-authentication.php +++ /dev/null @@ -1,235 +0,0 @@ -connection_manager = new Manager(); - } - - /** - * Controls the single instance of this class. - * - * @static - */ - public static function init() { - if ( ! self::$instance ) { - self::$instance = new self(); - - add_filter( 'determine_current_user', array( self::$instance, 'wp_rest_authenticate' ) ); - add_filter( 'rest_authentication_errors', array( self::$instance, 'wp_rest_authentication_errors' ) ); - } - - return self::$instance; - } - - /** - * Authenticates requests from Jetpack server to WP REST API endpoints. - * Uses the existing XMLRPC request signing implementation. - * - * @param int|bool $user User ID if one has been determined, false otherwise. - * - * @return int|null The user id or null if the request was authenticated via blog token, or not authenticated at all. - */ - public function wp_rest_authenticate( $user ) { - if ( $this->doing_determine_current_user_filter ) { - return $user; - } - - $this->doing_determine_current_user_filter = true; - - try { - if ( ! empty( $user ) ) { - // Another authentication method is in effect. - return $user; - } - - add_filter( - 'jetpack_constant_default_value', - __NAMESPACE__ . '\Utils::jetpack_api_constant_filter', - 10, - 2 - ); - - // phpcs:ignore WordPress.Security.NonceVerification.Recommended - if ( ! isset( $_GET['_for'] ) || 'jetpack' !== $_GET['_for'] ) { - // Nothing to do for this authentication method. - return null; - } - - // phpcs:ignore WordPress.Security.NonceVerification.Recommended - if ( ! isset( $_GET['token'] ) && ! isset( $_GET['signature'] ) ) { - // Nothing to do for this authentication method. - return null; - } - - if ( ! isset( $_SERVER['REQUEST_METHOD'] ) ) { - $this->rest_authentication_status = new WP_Error( - 'rest_invalid_request', - __( 'The request method is missing.', 'jetpack-connection' ), - array( 'status' => 400 ) - ); - return null; - } - - // Only support specific request parameters that have been tested and - // are known to work with signature verification. A different method - // can be passed to the WP REST API via the '?_method=' parameter if - // needed. - if ( 'GET' !== $_SERVER['REQUEST_METHOD'] && 'POST' !== $_SERVER['REQUEST_METHOD'] ) { - $this->rest_authentication_status = new WP_Error( - 'rest_invalid_request', - __( 'This request method is not supported.', 'jetpack-connection' ), - array( 'status' => 400 ) - ); - return null; - } - if ( 'POST' !== $_SERVER['REQUEST_METHOD'] && ! empty( file_get_contents( 'php://input' ) ) ) { - $this->rest_authentication_status = new WP_Error( - 'rest_invalid_request', - __( 'This request method does not support body parameters.', 'jetpack-connection' ), - array( 'status' => 400 ) - ); - return null; - } - - $verified = $this->connection_manager->verify_xml_rpc_signature(); - - if ( - $verified && - isset( $verified['type'] ) && - 'blog' === $verified['type'] - ) { - // Site-level authentication successful. - $this->rest_authentication_status = true; - $this->rest_authentication_type = 'blog'; - return null; - } - - if ( - $verified && - isset( $verified['type'] ) && - 'user' === $verified['type'] && - ! empty( $verified['user_id'] ) - ) { - // User-level authentication successful. - $this->rest_authentication_status = true; - $this->rest_authentication_type = 'user'; - return $verified['user_id']; - } - - // Something else went wrong. Probably a signature error. - $this->rest_authentication_status = new WP_Error( - 'rest_invalid_signature', - __( 'The request is not signed correctly.', 'jetpack-connection' ), - array( 'status' => 400 ) - ); - return null; - } finally { - $this->doing_determine_current_user_filter = false; - } - } - - /** - * Report authentication status to the WP REST API. - * - * @param WP_Error|mixed $value Error from another authentication handler, null if we should handle it, or another value if not. - * @return WP_Error|boolean|null {@see WP_JSON_Server::check_authentication} - */ - public function wp_rest_authentication_errors( $value ) { - if ( null !== $value ) { - return $value; - } - return $this->rest_authentication_status; - } - - /** - * Resets the saved authentication state in between testing requests. - */ - public function reset_saved_auth_state() { - $this->rest_authentication_status = null; - $this->connection_manager->reset_saved_auth_state(); - } - - /** - * Whether the request was signed with a blog token. - * - * @since 1.29.0 - * - * @return bool True if the request was signed with a valid blog token, false otherwise. - */ - public static function is_signed_with_blog_token() { - $instance = self::init(); - - return true === $instance->rest_authentication_status && 'blog' === $instance->rest_authentication_type; - } - - /** - * Whether the request was signed with a user token. - * - * @since 6.7.0 - * - * @return bool True if the request was signed with a valid user token, false otherwise. - */ - public static function is_signed_with_user_token() { - $instance = self::init(); - - return true === $instance->rest_authentication_status && 'user' === $instance->rest_authentication_type; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-rest-connector.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-rest-connector.php deleted file mode 100644 index 6504b488..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-rest-connector.php +++ /dev/null @@ -1,1190 +0,0 @@ -connection = $connection; - - self::$user_permissions_error_msg = esc_html__( - 'You do not have the correct user permissions to perform this action. - Please contact your site admin if you think this is a mistake.', - 'jetpack-connection' - ); - - $jp_version = Constants::get_constant( 'JETPACK__VERSION' ); - - if ( ! $this->connection->has_connected_owner() ) { - // Register a site. - register_rest_route( - 'jetpack/v4', - '/verify_registration', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'verify_registration' ), - 'permission_callback' => '__return_true', - ) - ); - } - - // Authorize a remote user. - register_rest_route( - 'jetpack/v4', - '/remote_authorize', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::remote_authorize', - 'permission_callback' => '__return_true', - ) - ); - - // Authorize a remote user. - register_rest_route( - 'jetpack/v4', - '/remote_provision', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'remote_provision' ), - 'permission_callback' => array( $this, 'remote_provision_permission_check' ), - ) - ); - - register_rest_route( - 'jetpack/v4', - '/remote_register', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'remote_register' ), - 'permission_callback' => array( $this, 'remote_register_permission_check' ), - ) - ); - - // Connect a remote user. - register_rest_route( - 'jetpack/v4', - '/remote_connect', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'remote_connect' ), - 'permission_callback' => array( $this, 'remote_connect_permission_check' ), - ) - ); - - // The endpoint verifies blog connection and blog token validity. - register_rest_route( - 'jetpack/v4', - '/connection/check', - array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => array( $this, 'connection_check' ), - 'permission_callback' => array( $this, 'connection_check_permission_check' ), - ) - ); - - // Get current connection status of Jetpack. - register_rest_route( - 'jetpack/v4', - '/connection', - array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::connection_status', - 'permission_callback' => '__return_true', - ) - ); - - // Disconnect site. - register_rest_route( - 'jetpack/v4', - '/connection', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::disconnect_site', - 'permission_callback' => __CLASS__ . '::disconnect_site_permission_check', - 'args' => array( - 'isActive' => array( - 'description' => __( 'Set to false will trigger the site to disconnect.', 'jetpack-connection' ), - 'validate_callback' => function ( $value ) { - if ( false !== $value ) { - return new WP_Error( - 'rest_invalid_param', - __( 'The isActive argument should be set to false.', 'jetpack-connection' ), - array( 'status' => 400 ) - ); - } - - return true; - }, - 'required' => true, - ), - ), - ) - ); - - // Disconnect/unlink user from WordPress.com servers. - // this endpoint is set to override the older endpoint that was previously in the Jetpack plugin - // Override is here in case an older version of the Jetpack plugin is installed alongside an updated standalone - register_rest_route( - 'jetpack/v4', - '/connection/user', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::unlink_user', - 'permission_callback' => __CLASS__ . '::unlink_user_permission_callback', - ), - true // override other implementations - ); - - // We are only registering this route if Jetpack-the-plugin is not active or it's version is ge 10.0-alpha. - // The reason for doing so is to avoid conflicts between the Connection package and - // older versions of Jetpack, registering the same route twice. - if ( empty( $jp_version ) || version_compare( $jp_version, '10.0-alpha', '>=' ) ) { - // Get current user connection data. - register_rest_route( - 'jetpack/v4', - '/connection/data', - array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::get_user_connection_data', - 'permission_callback' => __CLASS__ . '::user_connection_data_permission_check', - ) - ); - } - - // Get list of plugins that use the Jetpack connection. - register_rest_route( - 'jetpack/v4', - '/connection/plugins', - array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => array( __CLASS__, 'get_connection_plugins' ), - 'permission_callback' => __CLASS__ . '::connection_plugins_permission_check', - ) - ); - - // Full or partial reconnect in case of connection issues. - register_rest_route( - 'jetpack/v4', - '/connection/reconnect', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'connection_reconnect' ), - 'permission_callback' => __CLASS__ . '::jetpack_reconnect_permission_check', - ) - ); - - // Register the site (get `blog_token`). - register_rest_route( - 'jetpack/v4', - '/connection/register', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( $this, 'connection_register' ), - 'permission_callback' => __CLASS__ . '::jetpack_register_permission_check', - 'args' => array( - 'from' => array( - 'description' => __( 'Indicates where the registration action was triggered for tracking/segmentation purposes', 'jetpack-connection' ), - 'type' => 'string', - ), - 'redirect_uri' => array( - 'description' => __( 'URI of the admin page where the user should be redirected after connection flow', 'jetpack-connection' ), - 'type' => 'string', - ), - 'plugin_slug' => array( - 'description' => __( 'Indicates from what plugin the request is coming from', 'jetpack-connection' ), - 'type' => 'string', - ), - ), - ) - ); - - // Get authorization URL. - register_rest_route( - 'jetpack/v4', - '/connection/authorize_url', - array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => array( $this, 'connection_authorize_url' ), - 'permission_callback' => __CLASS__ . '::user_connection_data_permission_check', - 'args' => array( - 'redirect_uri' => array( - 'description' => __( 'URI of the admin page where the user should be redirected after connection flow', 'jetpack-connection' ), - 'type' => 'string', - ), - ), - ) - ); - - // Provider-specific authorization URL endpoint - register_rest_route( - 'jetpack/v4', - '/connection/authorize_url/(?P[a-zA-Z]+)', - array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => array( $this, 'connection_authorize_url_provider' ), - 'permission_callback' => __CLASS__ . '::user_connection_data_permission_check', - 'args' => array( - 'provider' => array( - 'description' => __( 'Authentication provider (google, github, apple, link)', 'jetpack-connection' ), - 'type' => 'string', - 'required' => true, - 'enum' => array( 'google', 'github', 'apple', 'link' ), - ), - 'redirect_uri' => array( - 'description' => __( 'URI of the admin page where the user should be redirected after connection flow', 'jetpack-connection' ), - 'type' => 'string', - ), - 'email_address' => array( - 'description' => __( 'Email address for magic link authentication', 'jetpack-connection' ), - 'type' => 'string', - 'format' => 'email', - ), - ), - ) - ); - - register_rest_route( - 'jetpack/v4', - '/user-token', - array( - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( static::class, 'update_user_token' ), - 'permission_callback' => array( static::class, 'update_user_token_permission_check' ), - 'args' => array( - 'user_token' => array( - 'description' => __( 'New user token', 'jetpack-connection' ), - 'type' => 'string', - 'required' => true, - ), - 'is_connection_owner' => array( - 'description' => __( 'Is connection owner', 'jetpack-connection' ), - 'type' => 'boolean', - ), - ), - ), - ) - ); - - // Set the connection owner. - register_rest_route( - 'jetpack/v4', - '/connection/owner', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( static::class, 'set_connection_owner' ), - 'permission_callback' => array( static::class, 'set_connection_owner_permission_check' ), - 'args' => array( - 'owner' => array( - 'description' => __( 'New owner', 'jetpack-connection' ), - 'type' => 'integer', - 'required' => true, - ), - ), - ) - ); - } - - /** - * Handles verification that a site is registered. - * - * @since 1.7.0 - * @since-jetpack 5.4.0 - * - * @param WP_REST_Request $request The request sent to the WP REST API. - * - * @return string|WP_Error - */ - public function verify_registration( WP_REST_Request $request ) { - $registration_data = array( $request['secret_1'], $request['state'] ); - - return $this->connection->handle_registration( $registration_data ); - } - - /** - * Handles verification that a site is registered - * - * @since 1.7.0 - * @since-jetpack 5.4.0 - * - * @param WP_REST_Request $request The request sent to the WP REST API. - * - * @return array|WP_Error - */ - public static function remote_authorize( $request ) { - $xmlrpc_server = new Jetpack_XMLRPC_Server(); - $result = $xmlrpc_server->remote_authorize( $request ); - - if ( is_a( $result, 'IXR_Error' ) ) { - $result = new WP_Error( $result->code, $result->message ); - } - - return $result; - } - - /** - * Initiate the site provisioning process. - * - * @since 2.5.0 - * - * @param WP_REST_Request $request The request sent to the WP REST API. - * - * @return WP_Error|array - */ - public function remote_provision( WP_REST_Request $request ) { - $request_data = $request->get_params(); - - if ( current_user_can( 'jetpack_connect_user' ) ) { - $request_data['local_user'] = get_current_user_id(); - } - - $xmlrpc_server = new Jetpack_XMLRPC_Server(); - $result = $xmlrpc_server->remote_provision( $request_data ); - - if ( is_a( $result, 'IXR_Error' ) ) { - $result = new WP_Error( $result->code, $result->message ); - } - - return $result; - } - - /** - * Connect a remote user. - * - * @since 2.6.0 - * - * @param WP_REST_Request $request The request sent to the WP REST API. - * - * @return WP_Error|array - */ - public static function remote_connect( WP_REST_Request $request ) { - $xmlrpc_server = new Jetpack_XMLRPC_Server(); - $result = $xmlrpc_server->remote_connect( $request ); - - if ( is_a( $result, 'IXR_Error' ) ) { - $result = new WP_Error( $result->code, $result->message ); - } - - return $result; - } - - /** - * Register the site so that a plan can be provisioned. - * - * @since 2.5.0 - * - * @param WP_REST_Request $request The request object. - * - * @return WP_Error|array - */ - public function remote_register( WP_REST_Request $request ) { - $xmlrpc_server = new Jetpack_XMLRPC_Server(); - $result = $xmlrpc_server->remote_register( $request ); - - if ( is_a( $result, 'IXR_Error' ) ) { - $result = new WP_Error( $result->code, $result->message ); - } - - return $result; - } - - /** - * Remote provision endpoint permission check. - * - * @param WP_REST_Request $request The request object. - * - * @return true|WP_Error - */ - public function remote_provision_permission_check( WP_REST_Request $request ) { - if ( empty( $request['local_user'] ) && current_user_can( 'jetpack_connect_user' ) ) { - return true; - } - - return Rest_Authentication::is_signed_with_blog_token() - ? true - : new WP_Error( 'invalid_permission_remote_provision', self::get_user_permissions_error_msg(), array( 'status' => rest_authorization_required_code() ) ); - } - - /** - * Remote connect endpoint permission check. - * - * @return true|WP_Error - */ - public function remote_connect_permission_check() { - return Rest_Authentication::is_signed_with_blog_token() - ? true - : new WP_Error( 'invalid_permission_remote_connect', self::get_user_permissions_error_msg(), array( 'status' => rest_authorization_required_code() ) ); - } - - /** - * Remote register endpoint permission check. - * - * @return true|WP_Error - */ - public function remote_register_permission_check() { - if ( $this->connection->has_connected_owner() ) { - return Rest_Authentication::is_signed_with_blog_token() - ? true - : new WP_Error( 'already_registered', __( 'Blog is already registered', 'jetpack-connection' ), 400 ); - } - - return true; - } - - /** - * Get connection status for this Jetpack site. - * - * @since 1.7.0 - * @since-jetpack 4.3.0 - * - * @param bool $rest_response Should we return a rest response or a simple array. Default to rest response. - * - * @return WP_REST_Response|array Connection information. - */ - public static function connection_status( $rest_response = true ) { - $status = new Status(); - $connection = new Manager(); - - $connection_status = array( - 'isActive' => $connection->has_connected_owner(), // TODO deprecate this. - 'isStaging' => $status->in_safe_mode(), // TODO deprecate this. - 'isRegistered' => $connection->is_connected(), - 'isUserConnected' => $connection->is_user_connected(), - 'hasConnectedOwner' => $connection->has_connected_owner(), - 'offlineMode' => array( - 'isActive' => $status->is_offline_mode(), - 'constant' => defined( 'JETPACK_DEV_DEBUG' ) && JETPACK_DEV_DEBUG, - 'url' => $status->is_local_site(), - /** This filter is documented in packages/status/src/class-status.php */ - 'filter' => ( apply_filters( 'jetpack_development_mode', false ) || apply_filters( 'jetpack_offline_mode', false ) ), // jetpack_development_mode is deprecated. - 'wpLocalConstant' => defined( 'WP_LOCAL_DEV' ) && WP_LOCAL_DEV, - ), - 'isPublic' => '1' == get_option( 'blog_public' ), // phpcs:ignore Universal.Operators.StrictComparisons.LooseEqual - ); - - /** - * Filters the connection status data. - * - * @since 1.25.0 - * - * @param array An array containing the connection status data. - */ - $connection_status = apply_filters( 'jetpack_connection_status', $connection_status ); - - if ( $rest_response ) { - return rest_ensure_response( - $connection_status - ); - } else { - return $connection_status; - } - } - - /** - * Get plugins connected to the Jetpack. - * - * @param bool $rest_response Should we return a rest response or a simple array. Default to rest response. - * - * @since 1.13.1 - * @since 1.38.0 Added $rest_response param. - * - * @return WP_REST_Response|WP_Error Response or error object, depending on the request result. - */ - public static function get_connection_plugins( $rest_response = true ) { - $plugins = ( new Manager() )->get_connected_plugins(); - - if ( is_wp_error( $plugins ) ) { - return $plugins; - } - - array_walk( - $plugins, - function ( &$data, $slug ) { - $data['slug'] = $slug; - } - ); - - if ( $rest_response ) { - return rest_ensure_response( array_values( $plugins ) ); - } - - return array_values( $plugins ); - } - - /** - * Verify that user can view Jetpack admin page and can activate plugins. - * - * @since 1.15.0 - * - * @return bool|WP_Error Whether user has the capability 'activate_plugins'. - */ - public static function activate_plugins_permission_check() { - if ( current_user_can( 'activate_plugins' ) ) { - return true; - } - - return new WP_Error( 'invalid_user_permission_activate_plugins', self::get_user_permissions_error_msg(), array( 'status' => rest_authorization_required_code() ) ); - } - - /** - * Permission check for the connection_plugins endpoint - * - * @return bool|WP_Error - */ - public static function connection_plugins_permission_check() { - if ( true === static::activate_plugins_permission_check() ) { - return true; - } - - if ( true === static::is_request_signed_by_jetpack_debugger() ) { - return true; - } - - return new WP_Error( 'invalid_user_permission_activate_plugins', self::get_user_permissions_error_msg(), array( 'status' => rest_authorization_required_code() ) ); - } - - /** - * Permission check for the disconnect site endpoint. - * - * @since 1.30.1 - * - * @since 5.1.0 Modified the permission check to accept requests signed with blog tokens. - * - * @return bool|WP_Error True if user is able to disconnect the site or the request is signed with a blog token (aka a direct request from WPCOM). - */ - public static function disconnect_site_permission_check() { - if ( current_user_can( 'jetpack_disconnect' ) ) { - return true; - } - - return Rest_Authentication::is_signed_with_blog_token() - ? true - : new WP_Error( 'invalid_user_permission_jetpack_disconnect', self::get_user_permissions_error_msg(), array( 'status' => rest_authorization_required_code() ) ); - } - - /** - * Verify that a user can use the /connection/user endpoint. Has to be a registered user and be currently linked. - * - * @since 6.3.3 - * - * @return bool|WP_Error True if user is able to unlink. - */ - public static function unlink_user_permission_callback() { - // This is a mapped capability - // phpcs:ignore WordPress.WP.Capabilities.Unknown - if ( current_user_can( 'jetpack_unlink_user' ) && ( new Manager() )->is_user_connected( get_current_user_id() ) ) { - return true; - } - - return new WP_Error( - 'invalid_user_permission_unlink_user', - self::get_user_permissions_error_msg(), - array( 'status' => rest_authorization_required_code() ) - ); - } - - /** - * Get miscellaneous user data related to the connection. Similar data available in old "My Jetpack". - * Information about the master/primary user. - * Information about the current user. - * - * @param bool $rest_response Should we return a rest response or a simple array. Default to rest response. - * - * @since 1.30.1 - * - * @return \WP_REST_Response|array - */ - public static function get_user_connection_data( $rest_response = true ) { - $blog_id = \Jetpack_Options::get_option( 'id' ); - - $connection = new Manager(); - - $current_user = wp_get_current_user(); - $connection_owner = $connection->get_connection_owner(); - - $owner_display_name = false === $connection_owner ? null : $connection_owner->display_name; - - $is_user_connected = $connection->is_user_connected(); - $is_master_user = false === $connection_owner ? false : ( $current_user->ID === $connection_owner->ID ); - $wpcom_user_data = $connection->get_connected_user_data(); - - // Add connected user gravatar to the returned wpcom_user_data. - // Probably we shouldn't do this when $wpcom_user_data is false, but we have been since 2016 so - // clients probably expect that by now. - if ( false === $wpcom_user_data ) { - $wpcom_user_data = array(); - } - $wpcom_user_data['avatar'] = ( ! empty( $wpcom_user_data['email'] ) ? - get_avatar_url( - $wpcom_user_data['email'], - array( - 'size' => 64, - 'default' => 'mysteryman', - ) - ) - : false ); - - $current_user_connection_data = array( - 'isConnected' => $is_user_connected, - 'isMaster' => $is_master_user, - 'username' => $current_user->user_login, - 'id' => $current_user->ID, - 'blogId' => $blog_id, - 'wpcomUser' => $wpcom_user_data, - 'gravatar' => get_avatar_url( $current_user->ID ), - 'permissions' => array( - 'connect' => current_user_can( 'jetpack_connect' ), - 'connect_user' => current_user_can( 'jetpack_connect_user' ), - // This is a mapped capability - // phpcs:ignore WordPress.WP.Capabilities.Unknown - 'unlink_user' => current_user_can( 'jetpack_unlink_user' ), - 'disconnect' => current_user_can( 'jetpack_disconnect' ), - 'manage_options' => current_user_can( 'manage_options' ), - ), - ); - - /** - * Filters the current user connection data. - * - * @since 1.30.1 - * - * @param array An array containing the current user connection data. - */ - $current_user_connection_data = apply_filters( 'jetpack_current_user_connection_data', $current_user_connection_data ); - - $response = array( - 'currentUser' => $current_user_connection_data, - 'connectionOwner' => $owner_display_name, - 'isRegistered' => $connection->is_connected(), - ); - - if ( $rest_response ) { - return rest_ensure_response( $response ); - } - - return $response; - } - - /** - * Permission check for the connection/data endpoint - * - * @return bool|WP_Error - */ - public static function user_connection_data_permission_check() { - if ( current_user_can( 'jetpack_connect_user' ) ) { - return true; - } - - return new WP_Error( - 'invalid_user_permission_user_connection_data', - self::get_user_permissions_error_msg(), - array( 'status' => rest_authorization_required_code() ) - ); - } - - /** - * Verifies if the request was signed with the Jetpack Debugger key - * - * @param string|null $pub_key The public key used to verify the signature. Default is the Jetpack Debugger key. This is used for testing purposes. - * - * @return bool - */ - public static function is_request_signed_by_jetpack_debugger( $pub_key = null ) { - // phpcs:disable WordPress.Security.NonceVerification.Recommended - if ( ! isset( $_GET['signature'] ) || ! isset( $_GET['timestamp'] ) || ! isset( $_GET['url'] ) || ! isset( $_GET['rest_route'] ) ) { - return false; - } - - // signature timestamp must be within 5min of current time. - if ( abs( time() - (int) $_GET['timestamp'] ) > 300 ) { - return false; - } - - $signature = base64_decode( filter_var( wp_unslash( $_GET['signature'] ) ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode - - $signature_data = wp_json_encode( - array( - 'rest_route' => filter_var( wp_unslash( $_GET['rest_route'] ) ), - 'timestamp' => (int) $_GET['timestamp'], - 'url' => filter_var( wp_unslash( $_GET['url'] ) ), - ) - ); - - if ( - ! function_exists( 'openssl_verify' ) - || 1 !== openssl_verify( - $signature_data, - $signature, - $pub_key ? $pub_key : static::JETPACK__DEBUGGER_PUBLIC_KEY - ) - ) { - return false; - } - - // phpcs:enable WordPress.Security.NonceVerification.Recommended - - return true; - } - - /** - * Verify that user is allowed to disconnect Jetpack. - * - * @since 1.15.0 - * - * @return bool|WP_Error Whether user has the capability 'jetpack_disconnect'. - */ - public static function jetpack_reconnect_permission_check() { - if ( current_user_can( 'jetpack_reconnect' ) ) { - return true; - } - - return new WP_Error( 'invalid_user_permission_jetpack_disconnect', self::get_user_permissions_error_msg(), array( 'status' => rest_authorization_required_code() ) ); - } - - /** - * Returns generic error message when user is not allowed to perform an action. - * - * @return string The error message. - */ - public static function get_user_permissions_error_msg() { - return self::$user_permissions_error_msg; - } - - /** - * The endpoint tried to partially or fully reconnect the website to WP.com. - * - * @since 1.15.0 - * - * @return \WP_REST_Response|WP_Error - */ - public function connection_reconnect() { - $response = array(); - - $next = null; - - $result = $this->connection->restore(); - - if ( is_wp_error( $result ) ) { - $response = $result; - } elseif ( is_string( $result ) ) { - $next = $result; - } else { - $next = true === $result ? 'completed' : 'failed'; - } - - switch ( $next ) { - case 'authorize': - $response['status'] = 'in_progress'; - $response['authorizeUrl'] = $this->connection->get_authorization_url(); - break; - case 'completed': - $response['status'] = 'completed'; - /** - * Action fired when reconnection has completed successfully. - * - * @since 1.18.1 - */ - do_action( 'jetpack_reconnection_completed' ); - break; - case 'failed': - $response = new WP_Error( 'Reconnect failed' ); - break; - } - - return rest_ensure_response( $response ); - } - - /** - * Verify that user is allowed to connect Jetpack. - * - * @since 1.26.0 - * - * @return bool|WP_Error Whether user has the capability 'jetpack_connect'. - */ - public static function jetpack_register_permission_check() { - if ( current_user_can( 'jetpack_connect' ) ) { - return true; - } - - return new WP_Error( 'invalid_user_permission_jetpack_connect', self::get_user_permissions_error_msg(), array( 'status' => rest_authorization_required_code() ) ); - } - - /** - * The endpoint tried to connect Jetpack site to WPCOM. - * - * @since 1.7.0 - * @since 6.7.0 No longer needs `registration_nonce`. - * @since-jetpack 7.7.0 - * - * @param \WP_REST_Request $request The request sent to the WP REST API. - * - * @return \WP_REST_Response|WP_Error - */ - public function connection_register( $request ) { - if ( isset( $request['from'] ) ) { - $this->connection->add_register_request_param( 'from', (string) $request['from'] ); - } - - if ( ! empty( $request['plugin_slug'] ) ) { - // If `plugin_slug` matches a plugin using the connection, let's inform the plugin that is establishing the connection. - $connected_plugin = Plugin_Storage::get_one( (string) $request['plugin_slug'] ); - if ( ! is_wp_error( $connected_plugin ) && ! empty( $connected_plugin ) ) { - $this->connection->set_plugin_instance( new Plugin( (string) $request['plugin_slug'] ) ); - } - } - - $result = $this->connection->try_registration(); - - if ( is_wp_error( $result ) ) { - return $result; - } - - $redirect_uri = $request->get_param( 'redirect_uri' ) ? admin_url( $request->get_param( 'redirect_uri' ) ) : null; - - $authorize_url = ( new Authorize_Redirect( $this->connection ) )->build_authorize_url( $redirect_uri ); - - /** - * Filters the response of jetpack/v4/connection/register endpoint - * - * @param array $response Array response - * @since 1.27.0 - */ - $response_body = apply_filters( - 'jetpack_register_site_rest_response', - array() - ); - - // We manipulate the alternate URLs after the filter is applied, so they can not be overwritten. - $response_body['authorizeUrl'] = $authorize_url; - if ( ! empty( $response_body['alternateAuthorizeUrl'] ) ) { - $response_body['alternateAuthorizeUrl'] = Redirect::get_url( $response_body['alternateAuthorizeUrl'] ); - } - - return rest_ensure_response( $response_body ); - } - - /** - * Get the authorization URL. - * - * @since 1.27.0 - * - * @param \WP_REST_Request $request The request sent to the WP REST API. - * - * @return \WP_REST_Response|WP_Error - */ - public function connection_authorize_url( $request ) { - $redirect_uri = $request->get_param( 'redirect_uri' ) ? admin_url( $request->get_param( 'redirect_uri' ) ) : null; - $authorize_url = $this->connection->get_authorization_url( null, $redirect_uri ); - - return rest_ensure_response( - array( - 'authorizeUrl' => $authorize_url, - ) - ); - } - - /** - * The endpoint tried to partially or fully reconnect the website to WP.com. - * - * @since 1.29.0 - * - * @param \WP_REST_Request $request The request sent to the WP REST API. - * - * @return \WP_REST_Response|WP_Error - */ - public static function update_user_token( $request ) { - $token_parts = explode( '.', $request['user_token'] ); - - if ( count( $token_parts ) !== 3 || ! (int) $token_parts[2] || ! ctype_digit( $token_parts[2] ) ) { - return new WP_Error( 'invalid_argument_user_token', esc_html__( 'Invalid user token is provided', 'jetpack-connection' ) ); - } - - $user_id = (int) $token_parts[2]; - - if ( false === get_userdata( $user_id ) ) { - return new WP_Error( 'invalid_argument_user_id', esc_html__( 'Invalid user id is provided', 'jetpack-connection' ) ); - } - - $connection = new Manager(); - - if ( ! $connection->is_connected() ) { - return new WP_Error( 'site_not_connected', esc_html__( 'Site is not connected', 'jetpack-connection' ) ); - } - - $is_connection_owner = isset( $request['is_connection_owner'] ) - ? (bool) $request['is_connection_owner'] - : ( new Manager() )->get_connection_owner_id() === $user_id; - - ( new Tokens() )->update_user_token( $user_id, $request['user_token'], $is_connection_owner ); - - /** - * Fires when the user token gets successfully replaced. - * - * @since 1.29.0 - * - * @param int $user_id User ID. - * @param string $token New user token. - */ - do_action( 'jetpack_updated_user_token', $user_id, $request['user_token'] ); - - return rest_ensure_response( - array( - 'success' => true, - ) - ); - } - - /** - * Disconnects Jetpack from the WordPress.com Servers - * - * @since 1.30.1 - * - * @return bool|WP_Error True if Jetpack successfully disconnected. - */ - public static function disconnect_site() { - $connection = new Manager(); - - if ( $connection->is_connected() ) { - $connection->disconnect_site(); - return rest_ensure_response( array( 'code' => 'success' ) ); - } - - return new WP_Error( - 'disconnect_failed', - esc_html__( 'Failed to disconnect the site as it appears already disconnected.', 'jetpack-connection' ), - array( 'status' => 400 ) - ); - } - - /** - * Unlinks current user from the WordPress.com Servers. - * - * @since 6.3.3 - * - * @param WP_REST_Request $request The request sent to the WP REST API. - * - * @return bool|WP_Error True if user successfully unlinked. - */ - public static function unlink_user( $request ) { - - if ( ! isset( $request['linked'] ) || false !== $request['linked'] ) { - return new WP_Error( 'invalid_param', esc_html__( 'Invalid Parameter', 'jetpack-connection' ), array( 'status' => 404 ) ); - } - - // If the user is also connection owner, we need to disconnect all users. Since disconnecting all users is a destructive action, we need to pass a parameter to confirm the action. - $disconnect_all_users = false; - - if ( ( new Manager() )->get_connection_owner_id() === get_current_user_id() ) { - if ( isset( $request['disconnect-all-users'] ) && false !== $request['disconnect-all-users'] ) { - $disconnect_all_users = true; - } else { - return new WP_Error( 'unlink_user_failed', esc_html__( 'Unable to unlink the connection owner.', 'jetpack-connection' ), array( 'status' => 400 ) ); - } - } - - // Allow admins to force a disconnect by passing the "force" parameter - // This allows an admin to disconnect themselves - if ( isset( $request['force'] ) && false !== $request['force'] && current_user_can( 'manage_options' ) && ( new Manager( 'jetpack' ) )->disconnect_user_force( get_current_user_id(), $disconnect_all_users ) ) { - return rest_ensure_response( - array( - 'code' => 'success', - ) - ); - } elseif ( ( new Manager( 'jetpack' ) )->disconnect_user() ) { - return rest_ensure_response( - array( - 'code' => 'success', - ) - ); - } - - return new WP_Error( 'unlink_user_failed', esc_html__( 'Was not able to unlink the user. Please try again.', 'jetpack-connection' ), array( 'status' => 400 ) ); - } - - /** - * Verify that the API client is allowed to replace user token. - * - * @since 1.29.0 - * - * @return bool|WP_Error - */ - public static function update_user_token_permission_check() { - return Rest_Authentication::is_signed_with_blog_token() - ? true - : new WP_Error( 'invalid_permission_update_user_token', self::get_user_permissions_error_msg(), array( 'status' => rest_authorization_required_code() ) ); - } - - /** - * Change the connection owner. - * - * @since 1.29.0 - * - * @param WP_REST_Request $request The request sent to the WP REST API. - * - * @return \WP_REST_Response|WP_Error - */ - public static function set_connection_owner( $request ) { - $new_owner_id = $request['owner']; - - $owner_set = ( new Manager() )->update_connection_owner( $new_owner_id ); - - if ( is_wp_error( $owner_set ) ) { - return $owner_set; - } - - return rest_ensure_response( - array( - 'code' => 'success', - ) - ); - } - - /** - * Check that user has permission to change the master user. - * - * @since 1.7.0 - * @since-jetpack 6.2.0 - * @since-jetpack 7.7.0 Update so that any user with jetpack_disconnect privs can set owner. - * - * @return bool|WP_Error True if user is able to change master user. - */ - public static function set_connection_owner_permission_check() { - if ( current_user_can( 'jetpack_disconnect' ) ) { - return true; - } - - return new WP_Error( 'invalid_user_permission_set_connection_owner', self::get_user_permissions_error_msg(), array( 'status' => rest_authorization_required_code() ) ); - } - - /** - * The endpoint verifies blog connection and blog token validity. - * - * @since 2.7.0 - * - * @return mixed|null - */ - public function connection_check() { - /** - * Filters the successful response of the REST API test_connection method - * - * @param string $response The response string. - */ - $status = apply_filters( 'jetpack_rest_connection_check_response', 'success' ); - - return rest_ensure_response( - array( - 'status' => $status, - ) - ); - } - - /** - * Remote connect endpoint permission check. - * - * @return true|WP_Error - */ - public function connection_check_permission_check() { - if ( current_user_can( 'jetpack_connect' ) ) { - return true; - } - - return Rest_Authentication::is_signed_with_blog_token() - ? true - : new WP_Error( 'invalid_permission_connection_check', self::get_user_permissions_error_msg(), array( 'status' => rest_authorization_required_code() ) ); - } - - /** - * Provider-specific authorization URL endpoint - * - * @param WP_REST_Request $request The request sent to the WP REST API. - * - * @return \WP_REST_Response|WP_Error - */ - public function connection_authorize_url_provider( $request ) { - $provider = $request['provider']; - $redirect_uri = $request['redirect_uri'] ?? ''; - - // Validate magic link parameters if provider is 'link' - if ( 'link' === $provider ) { - if ( empty( $request['email_address'] ) ) { - return new WP_Error( - 'missing_email', - __( 'Email address is required for magic link authentication.', 'jetpack-connection' ), - array( 'status' => 400 ) - ); - } - - // Sanitize email address - $email = sanitize_email( $request['email_address'] ); - if ( ! is_email( $email ) ) { - return new WP_Error( - 'invalid_email', - __( 'Invalid email address format.', 'jetpack-connection' ), - array( 'status' => 400 ) - ); - } - } - - $authorize_url = ( new Authorize_Redirect( $this->connection ) )->build_authorize_url( - $redirect_uri, - false, - false, - $provider, - array( - 'email_address' => $email ?? '', - ) - ); - - return rest_ensure_response( - array( - 'authorizeUrl' => $authorize_url, - ) - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-secrets.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-secrets.php deleted file mode 100644 index 6f5de990..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-secrets.php +++ /dev/null @@ -1,282 +0,0 @@ - time() - ) { - return $secrets[ $secret_name ]; - } - - $secret_value = array( - 'secret_1' => call_user_func( $callable ), - 'secret_2' => call_user_func( $callable ), - 'exp' => time() + $exp, - ); - - $secrets[ $secret_name ] = $secret_value; - - $res = Jetpack_Options::update_raw_option( self::LEGACY_SECRETS_OPTION_NAME, $secrets ); - return $res ? $secrets[ $secret_name ] : false; - } - - /** - * Returns two secret tokens and the end of life timestamp for them. - * - * @param String $action The action name. - * @param Integer $user_id The user identifier. - * @return string|array an array of secrets or an error string. - */ - public function get( $action, $user_id ) { - $secret_name = 'jetpack_' . $action . '_' . $user_id; - $secrets = Jetpack_Options::get_raw_option( - self::LEGACY_SECRETS_OPTION_NAME, - array() - ); - - if ( ! isset( $secrets[ $secret_name ] ) ) { - return self::SECRETS_MISSING; - } - - if ( $secrets[ $secret_name ]['exp'] < time() ) { - $this->delete( $action, $user_id ); - return self::SECRETS_EXPIRED; - } - - return $secrets[ $secret_name ]; - } - - /** - * Deletes secret tokens in case they, for example, have expired. - * - * @param String $action The action name. - * @param Integer $user_id The user identifier. - */ - public function delete( $action, $user_id ) { - $secret_name = 'jetpack_' . $action . '_' . $user_id; - $secrets = Jetpack_Options::get_raw_option( - self::LEGACY_SECRETS_OPTION_NAME, - array() - ); - if ( isset( $secrets[ $secret_name ] ) ) { - unset( $secrets[ $secret_name ] ); - Jetpack_Options::update_raw_option( self::LEGACY_SECRETS_OPTION_NAME, $secrets ); - } - } - - /** - * Verify a Previously Generated Secret. - * - * @param string $action The type of secret to verify. - * @param string $secret_1 The secret string to compare to what is stored. - * @param int $user_id The user ID of the owner of the secret. - * @return WP_Error|string WP_Error on failure, secret_2 on success. - */ - public function verify( $action, $secret_1, $user_id ) { - $allowed_actions = array( 'register', 'authorize', 'publicize' ); - if ( ! in_array( $action, $allowed_actions, true ) ) { - return new WP_Error( 'unknown_verification_action', 'Unknown Verification Action', 400 ); - } - - $user = get_user_by( 'id', $user_id ); - - /** - * We've begun verifying the previously generated secret. - * - * @since 1.7.0 - * @since-jetpack 7.5.0 - * - * @param string $action The type of secret to verify. - * @param \WP_User $user The user object. - */ - do_action( 'jetpack_verify_secrets_begin', $action, $user ); - - /** Closure to run the 'fail' action and return an error. */ - $return_error = function ( WP_Error $error ) use ( $action, $user ) { - /** - * Verifying of the previously generated secret has failed. - * - * @since 1.7.0 - * @since-jetpack 7.5.0 - * - * @param string $action The type of secret to verify. - * @param \WP_User $user The user object. - * @param WP_Error $error The error object. - */ - do_action( 'jetpack_verify_secrets_fail', $action, $user, $error ); - - return $error; - }; - - $stored_secrets = $this->get( $action, $user_id ); - $this->delete( $action, $user_id ); - - $error = null; - if ( empty( $secret_1 ) ) { - $error = $return_error( - new WP_Error( - 'verify_secret_1_missing', - /* translators: "%s" is the name of a paramter. It can be either "secret_1" or "state". */ - sprintf( __( 'The required "%s" parameter is missing.', 'jetpack-connection' ), 'secret_1' ), - 400 - ) - ); - } elseif ( ! is_string( $secret_1 ) ) { - $error = $return_error( - new WP_Error( - 'verify_secret_1_malformed', - /* translators: "%s" is the name of a paramter. It can be either "secret_1" or "state". */ - sprintf( __( 'The required "%s" parameter is malformed.', 'jetpack-connection' ), 'secret_1' ), - 400 - ) - ); - } elseif ( empty( $user_id ) ) { - // $user_id is passed around during registration as "state". - $error = $return_error( - new WP_Error( - 'state_missing', - /* translators: "%s" is the name of a paramter. It can be either "secret_1" or "state". */ - sprintf( __( 'The required "%s" parameter is missing.', 'jetpack-connection' ), 'state' ), - 400 - ) - ); - } elseif ( ! ctype_digit( (string) $user_id ) ) { - $error = $return_error( - new WP_Error( - 'state_malformed', - /* translators: "%s" is the name of a paramter. It can be either "secret_1" or "state". */ - sprintf( __( 'The required "%s" parameter is malformed.', 'jetpack-connection' ), 'state' ), - 400 - ) - ); - } elseif ( self::SECRETS_MISSING === $stored_secrets ) { - $error = $return_error( - new WP_Error( - 'verify_secrets_missing', - __( 'Verification secrets not found', 'jetpack-connection' ), - 400 - ) - ); - } elseif ( self::SECRETS_EXPIRED === $stored_secrets ) { - $error = $return_error( - new WP_Error( - 'verify_secrets_expired', - __( 'Verification took too long', 'jetpack-connection' ), - 400 - ) - ); - } elseif ( ! $stored_secrets ) { - $error = $return_error( - new WP_Error( - 'verify_secrets_empty', - __( 'Verification secrets are empty', 'jetpack-connection' ), - 400 - ) - ); - } elseif ( is_wp_error( $stored_secrets ) ) { - $stored_secrets->add_data( 400 ); - $error = $return_error( $stored_secrets ); - } elseif ( empty( $stored_secrets['secret_1'] ) || empty( $stored_secrets['secret_2'] ) || empty( $stored_secrets['exp'] ) ) { - $error = $return_error( - new WP_Error( - 'verify_secrets_incomplete', - __( 'Verification secrets are incomplete', 'jetpack-connection' ), - 400 - ) - ); - } elseif ( ! hash_equals( $secret_1, $stored_secrets['secret_1'] ) ) { - $error = $return_error( - new WP_Error( - 'verify_secrets_mismatch', - __( 'Secret mismatch', 'jetpack-connection' ), - 400 - ) - ); - } - - // Something went wrong during the checks, returning the error. - if ( ! empty( $error ) ) { - return $error; - } - - /** - * We've succeeded at verifying the previously generated secret. - * - * @since 1.7.0 - * @since-jetpack 7.5.0 - * - * @param string $action The type of secret to verify. - * @param \WP_User $user The user object. - */ - do_action( 'jetpack_verify_secrets_success', $action, $user ); - - return $stored_secrets['secret_2']; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-server-sandbox.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-server-sandbox.php deleted file mode 100644 index a9ca288e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-server-sandbox.php +++ /dev/null @@ -1,243 +0,0 @@ - new URL, 'host' => new Host, 'new_signature => New signature if url was changed ] - */ - public function server_sandbox_request_parameters( $sandbox, $url, $headers, $data = null, $method = 'GET' ) { - $host = ''; - $new_signature = ''; - - if ( ! is_string( $sandbox ) || ! is_string( $url ) ) { - return array( - 'url' => $url, - 'host' => $host, - 'new_signature' => $new_signature, - ); - } - - $url_host = wp_parse_url( $url, PHP_URL_HOST ); - - switch ( $url_host ) { - case 'public-api.wordpress.com': - case 'jetpack.wordpress.com': - case 'jetpack.com': - case 'dashboard.wordpress.com': - $host = isset( $headers['Host'] ) ? $headers['Host'] : $url_host; - $original_url = $url; - $url = preg_replace( - '@^(https?://)' . preg_quote( $url_host, '@' ) . '(?=[/?#].*|$)@', - '${1}' . $sandbox, - $url, - 1 - ); - - /** - * Whether to add the X Debug query parameter to the request made to the Sandbox - * - * @since 1.36.0 - * - * @param bool $add_parameter Whether to add the parameter to the request or not. Default is to false. - * @param string $url The URL of the request being made. - * @param string $host The host of the request being made. - */ - if ( apply_filters( 'jetpack_sandbox_add_profile_parameter', false, $url, $host ) ) { - $url = add_query_arg( 'XDEBUG_PROFILE', 1, $url ); - - // URL has been modified since the signature was created. We'll need a new one. - $original_url = add_query_arg( 'XDEBUG_PROFILE', 1, $original_url ); - $new_signature = $this->get_new_signature( $original_url, $headers, $data, $method ); - - } - } - - return compact( 'url', 'host', 'new_signature' ); - } - - /** - * Gets a new signature for the request - * - * @param string $url The new URL to be signed. - * @param array $headers The headers of the request about to be made. - * @param string $data The body of request about to be made. - * @param string $method The method of the request about to be made. - * @return string|null - */ - private function get_new_signature( $url, $headers, $data, $method ) { - - if ( ! empty( $headers['Authorization'] ) ) { - $a_headers = $this->extract_authorization_headers( $headers ); - if ( ! empty( $a_headers ) ) { - $token_details = explode( ':', $a_headers['token'] ); - - if ( count( $token_details ) === 3 ) { - $user_id = $token_details[2]; - $token = ( new Tokens() )->get_access_token( $user_id ); - $time_diff = (int) \Jetpack_Options::get_option( 'time_diff' ); - $jetpack_signature = new \Jetpack_Signature( $token->secret, $time_diff ); - - $signature = $jetpack_signature->sign_request( - $a_headers['token'], - $a_headers['timestamp'], - $a_headers['nonce'], - $a_headers['body-hash'], - $method, - $url, - $data, - false - ); - - if ( $signature && ! is_wp_error( $signature ) ) { - return $signature; - } elseif ( is_wp_error( $signature ) ) { - $this->log_new_signature_error( $signature->get_error_message() ); - } - } else { - $this->log_new_signature_error( 'Malformed token on Authorization Header' ); - } - } else { - $this->log_new_signature_error( 'Error extracting Authorization Header' ); - } - } else { - $this->log_new_signature_error( 'Empty Authorization Header' ); - } - } - - /** - * Logs error if the attempt to create a new signature fails - * - * @param string $message The error message. - * @return void - */ - private function log_new_signature_error( $message ) { - if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { - error_log( sprintf( "SANDBOXING: Error re-signing the request. '%s'", $message ) ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log - } - } - - /** - * Extract the values in the Authorization header into an array - * - * @param array $headers The headers of the request about to be made. - * @return array|null - */ - public function extract_authorization_headers( $headers ) { - if ( ! empty( $headers['Authorization'] ) && is_string( $headers['Authorization'] ) ) { - $header = str_replace( 'X_JETPACK ', '', $headers['Authorization'] ); - $vars = explode( ' ', $header ); - $result = array(); - foreach ( $vars as $var ) { - $elements = explode( '"', $var ); - if ( count( $elements ) === 3 ) { - $result[ substr( $elements[0], 0, -1 ) ] = $elements[1]; - } - } - return $result; - } - } - - /** - * Modifies parameters of request in order to send the request to the - * server specified by `JETPACK__SANDBOX_DOMAIN`. - * - * Attached to the `requests-requests.before_request` filter. - * - * @param string $url URL of request about to be made. - * @param array $headers Headers of request about to be made. - * @param array|string $data Data of request about to be made. - * @param string $type Type of request about to be made. - * @return void - */ - public function server_sandbox( &$url, &$headers, &$data = null, &$type = null ) { - if ( ! Constants::get_constant( 'JETPACK__SANDBOX_DOMAIN' ) ) { - return; - } - - $original_url = $url; - - $request_parameters = $this->server_sandbox_request_parameters( Constants::get_constant( 'JETPACK__SANDBOX_DOMAIN' ), $url, $headers, $data, $type ); - - $url = $request_parameters['url']; - - if ( $request_parameters['host'] ) { - $headers['Host'] = $request_parameters['host']; - - if ( $request_parameters['new_signature'] ) { - $headers['Authorization'] = preg_replace( '/signature=\"[^\"]+\"/', 'signature="' . $request_parameters['new_signature'] . '"', $headers['Authorization'] ); - } - - if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { - error_log( sprintf( "SANDBOXING via '%s': '%s'", Constants::get_constant( 'JETPACK__SANDBOX_DOMAIN' ), $original_url ) ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log - } - } - } - - /** - * Adds a "Jetpack API Sandboxed" item to the admin bar if the JETPACK__SANDBOX_DOMAIN - * constant is set. - * - * Attached to the `admin_bar_menu` action. - * - * @param \WP_Admin_Bar $wp_admin_bar The WP_Admin_Bar instance. - */ - public function admin_bar_add_sandbox_item( $wp_admin_bar ) { - if ( ! Constants::get_constant( 'JETPACK__SANDBOX_DOMAIN' ) ) { - return; - } - - $node = array( - 'id' => 'jetpack-connection-api-sandbox', - 'title' => 'Jetpack API Sandboxed', - 'meta' => array( - 'title' => 'Sandboxing via ' . Constants::get_constant( 'JETPACK__SANDBOX_DOMAIN' ), - ), - ); - - $wp_admin_bar->add_menu( $node ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-terms-of-service.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-terms-of-service.php deleted file mode 100644 index b208123f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-terms-of-service.php +++ /dev/null @@ -1,111 +0,0 @@ -set_agree(); - /** - * Acton fired when the master user has agreed to the terms of service. - * - * @since 1.0.4 - * @since-jetpack 7.9.0 - */ - do_action( 'jetpack_agreed_to_terms_of_service' ); - } - - /** - * Allow the site to reject to the terms of service. - */ - public function reject() { - $this->set_reject(); - /** - * Acton fired when the master user has revoked their agreement to the terms of service. - * - * @since 1.0.4 - * @since-jetpack 7.9.1 - */ - do_action( 'jetpack_reject_terms_of_service' ); - } - - /** - * Returns whether the master user has agreed to the terms of service. - * - * The following conditions have to be met in order to agree to the terms of service. - * 1. The master user has gone though the connect flow. - * 2. The site is not in dev mode. - * 3. The master user of the site is still connected (deprecated @since 1.4.0). - * - * @return bool - */ - public function has_agreed() { - if ( $this->is_offline_mode() ) { - return false; - } - /** - * Before 1.4.0 we used to also check if the master user of the site is connected - * by calling the Connection related `is_active` method. - * As of 1.4.0 we have removed this check in order to resolve the - * circular dependencies it was introducing to composer packages. - * - * @since 1.4.0 - */ - return $this->get_raw_has_agreed(); - } - - /** - * Abstracted for testing purposes. - * Tells us if the site is in dev mode. - * - * @return bool - */ - protected function is_offline_mode() { - return ( new Status() )->is_offline_mode(); - } - - /** - * Gets just the Jetpack Option that contains the terms of service state. - * Abstracted for testing purposes. - * - * @return bool - */ - protected function get_raw_has_agreed() { - return \Jetpack_Options::get_option( self::OPTION_NAME, false ); - } - - /** - * Sets the correct Jetpack Option to mark the that the site has agreed to the terms of service. - * Abstracted for testing purposes. - */ - protected function set_agree() { - \Jetpack_Options::update_option( self::OPTION_NAME, true ); - } - - /** - * Sets the correct Jetpack Option to mark that the site has rejected the terms of service. - * Abstracted for testing purposes. - */ - protected function set_reject() { - \Jetpack_Options::update_option( self::OPTION_NAME, false ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-tokens-locks.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-tokens-locks.php deleted file mode 100644 index e6819a7c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-tokens-locks.php +++ /dev/null @@ -1,76 +0,0 @@ -init_aiowpm(); - - static::$is_initialized = true; - } - - /** - * Set the token lock for AIOWPM plugin export. - * - * @param array $params The filter parameters. - * - * @return array - */ - public function aiowpm_set_lock( $params ) { - ( new Tokens() )->set_lock(); - return $params; - } - - /** - * Remove the token lock for AIOWPM plugin export. - * - * @param array $params The filter parameters. - * - * @return array - */ - public function aiowpm_remove_lock( $params ) { - ( new Tokens() )->remove_lock(); - return $params; - } - - /** - * Initialize the All-in-One-WP-Migration plugin hooks. - * - * @return void - */ - private function init_aiowpm() { - add_filter( 'ai1wm_export', array( $this, 'aiowpm_set_lock' ), 180 ); - add_filter( 'ai1wm_export', array( $this, 'aiowpm_remove_lock' ), 250 ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-tokens.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-tokens.php deleted file mode 100644 index 1b10356d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-tokens.php +++ /dev/null @@ -1,687 +0,0 @@ -remove_lock(); - } - - /** - * Perform the API request to validate the blog and user tokens. - * - * @param int|null $user_id ID of the user we need to validate token for. Current user's ID by default. - * - * @return array|false|WP_Error The API response: `array( 'blog_token_is_healthy' => true|false, 'user_token_is_healthy' => true|false )`. - */ - public function validate( $user_id = null ) { - $blog_id = Jetpack_Options::get_option( 'id' ); - if ( ! $blog_id ) { - return new WP_Error( 'site_not_registered', 'Site not registered.' ); - } - $url = sprintf( - '%s/%s/v%s/%s', - Constants::get_constant( 'JETPACK__WPCOM_JSON_API_BASE' ), - 'wpcom', - '2', - 'sites/' . $blog_id . '/jetpack-token-health' - ); - - $user_token = $this->get_access_token( $user_id ? $user_id : get_current_user_id() ); - $blog_token = $this->get_access_token(); - - // Cannot validate non-existent tokens. - if ( false === $user_token || false === $blog_token ) { - return false; - } - - $method = 'POST'; - $body = array( - 'user_token' => $this->get_signed_token( $user_token ), - 'blog_token' => $this->get_signed_token( $blog_token ), - ); - $response = Client::_wp_remote_request( $url, compact( 'body', 'method' ) ); - - if ( is_wp_error( $response ) || ! wp_remote_retrieve_body( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) { - return false; - } - - $body = json_decode( wp_remote_retrieve_body( $response ), true ); - - return $body ? $body : false; - } - - /** - * Perform the API request to validate only the blog. - * - * @return bool|WP_Error Boolean with the test result. WP_Error if test cannot be performed. - */ - public function validate_blog_token() { - $blog_id = Jetpack_Options::get_option( 'id' ); - if ( ! $blog_id ) { - return new WP_Error( 'site_not_registered', 'Site not registered.' ); - } - $url = sprintf( - '%s/%s/v%s/%s', - Constants::get_constant( 'JETPACK__WPCOM_JSON_API_BASE' ), - 'wpcom', - '2', - 'sites/' . $blog_id . '/jetpack-token-health/blog' - ); - - $method = 'GET'; - $response = Client::remote_request( compact( 'url', 'method' ) ); - - if ( is_wp_error( $response ) || ! wp_remote_retrieve_body( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) { - return false; - } - - $body = json_decode( wp_remote_retrieve_body( $response ), true ); - - return is_array( $body ) && isset( $body['is_healthy'] ) && true === $body['is_healthy']; - } - - /** - * Obtains the auth token. - * - * @param array $data The request data. - * @param string $token_api_url The URL of the Jetpack "token" API. - * @return object|WP_Error Returns the auth token on success. - * Returns a WP_Error on failure. - */ - public function get( $data, $token_api_url ) { - $roles = new Roles(); - $role = $roles->translate_current_user_to_role(); - - if ( ! $role ) { - return new WP_Error( 'role', __( 'An administrator for this blog must set up the Jetpack connection.', 'jetpack-connection' ) ); - } - - $client_secret = $this->get_access_token(); - if ( ! $client_secret ) { - return new WP_Error( 'client_secret', __( 'You need to register your Jetpack before connecting it.', 'jetpack-connection' ) ); - } - - /** - * Filter the URL of the first time the user gets redirected back to your site for connection - * data processing. - * - * @since 1.7.0 - * @since-jetpack 8.0.0 - * - * @param string $redirect_url Defaults to the site admin URL. - */ - $processing_url = apply_filters( 'jetpack_token_processing_url', admin_url( 'admin.php' ) ); - - $redirect = isset( $data['redirect'] ) ? esc_url_raw( (string) $data['redirect'] ) : ''; - - /** - * Filter the URL to redirect the user back to when the authentication process - * is complete. - * - * @since 1.7.0 - * @since-jetpack 8.0.0 - * - * @param string $redirect_url Defaults to the site URL. - */ - $redirect = apply_filters( 'jetpack_token_redirect_url', $redirect ); - - $redirect_uri = ( 'calypso' === $data['auth_type'] ) - ? $data['redirect_uri'] - : add_query_arg( - array( - 'handler' => 'jetpack-connection-webhooks', - 'action' => 'authorize', - '_wpnonce' => wp_create_nonce( "jetpack-authorize_{$role}_{$redirect}" ), - 'redirect' => $redirect ? rawurlencode( $redirect ) : false, - ), - esc_url( $processing_url ) - ); - - /** - * Filters the token request data. - * - * @since 1.7.0 - * @since-jetpack 8.0.0 - * - * @param array $request_data request data. - */ - $body = apply_filters( - 'jetpack_token_request_body', - array( - 'client_id' => Jetpack_Options::get_option( 'id' ), - 'client_secret' => $client_secret->secret, - 'grant_type' => 'authorization_code', - 'code' => $data['code'], - 'redirect_uri' => $redirect_uri, - ) - ); - - $args = array( - 'method' => 'POST', - 'body' => $body, - 'headers' => array( - 'Accept' => 'application/json', - ), - ); - add_filter( 'http_request_timeout', array( $this, 'return_30' ), PHP_INT_MAX - 1 ); - $response = Client::_wp_remote_request( $token_api_url, $args ); - remove_filter( 'http_request_timeout', array( $this, 'return_30' ), PHP_INT_MAX - 1 ); - - if ( is_wp_error( $response ) ) { - return new WP_Error( 'token_http_request_failed', $response->get_error_message() ); - } - - $code = wp_remote_retrieve_response_code( $response ); - $entity = wp_remote_retrieve_body( $response ); - - if ( $entity ) { - $json = json_decode( $entity ); - } else { - $json = false; - } - - if ( 200 !== $code || ! empty( $json->error ) ) { - if ( empty( $json->error ) ) { - return new WP_Error( 'unknown', '', $code ); - } - - /* translators: Error description string. */ - $error_description = isset( $json->error_description ) ? sprintf( __( 'Error Details: %s', 'jetpack-connection' ), (string) $json->error_description ) : ''; - - return new WP_Error( (string) $json->error, $error_description, $code ); - } - - if ( empty( $json->access_token ) || ! is_scalar( $json->access_token ) ) { - return new WP_Error( 'access_token', '', $code ); - } - - if ( empty( $json->token_type ) || 'X_JETPACK' !== strtoupper( $json->token_type ) ) { - return new WP_Error( 'token_type', '', $code ); - } - - if ( empty( $json->scope ) ) { - return new WP_Error( 'scope', 'No Scope', $code ); - } - - // TODO: get rid of the error silencer. - // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged - @list( $role, $hmac ) = explode( ':', $json->scope ); - if ( empty( $role ) || empty( $hmac ) ) { - return new WP_Error( 'scope', 'Malformed Scope', $code ); - } - - if ( $this->sign_role( $role ) !== $json->scope ) { - return new WP_Error( 'scope', 'Invalid Scope', $code ); - } - - $cap = $roles->translate_role_to_cap( $role ); - if ( ! $cap ) { - return new WP_Error( 'scope', 'No Cap', $code ); - } - - if ( ! current_user_can( $cap ) ) { - return new WP_Error( 'scope', 'current_user_cannot', $code ); - } - - return (string) $json->access_token; - } - - /** - * Enters a user token into the user_tokens option - * - * @param int $user_id The user id. - * @param string $token The user token. - * @param bool $is_master_user Whether the user is the master user. - * @return bool - */ - public function update_user_token( $user_id, $token, $is_master_user ) { - // Not designed for concurrent updates. - $user_tokens = $this->get_user_tokens(); - if ( ! is_array( $user_tokens ) ) { - $user_tokens = array(); - } - $user_tokens[ $user_id ] = $token; - if ( $is_master_user ) { - $master_user = $user_id; - $options = compact( 'user_tokens', 'master_user' ); - } else { - $options = compact( 'user_tokens' ); - } - return Jetpack_Options::update_options( $options ); - } - - /** - * Sign a user role with the master access token. - * If not specified, will default to the current user. - * - * @access public - * - * @param string $role User role. - * @param int $user_id ID of the user. - * @return string Signed user role. - */ - public function sign_role( $role, $user_id = null ) { - if ( empty( $user_id ) ) { - $user_id = (int) get_current_user_id(); - } - - if ( ! $user_id ) { - return false; - } - - $token = $this->get_access_token(); - if ( ! $token || is_wp_error( $token ) ) { - return false; - } - - return $role . ':' . hash_hmac( 'md5', "{$role}|{$user_id}", $token->secret ); - } - - /** - * Increases the request timeout value to 30 seconds. - * - * @return int Returns 30. - */ - public function return_30() { - return 30; - } - - /** - * Gets the requested token. - * - * Tokens are one of two types: - * 1. Blog Tokens: These are the "main" tokens. Each site typically has one Blog Token, - * though some sites can have multiple "Special" Blog Tokens (see below). These tokens - * are not associated with a user account. They represent the site's connection with - * the Jetpack servers. - * 2. User Tokens: These are "sub-"tokens. Each connected user account has one User Token. - * - * All tokens look like "{$token_key}.{$private}". $token_key is a public ID for the - * token, and $private is a secret that should never be displayed anywhere or sent - * over the network; it's used only for signing things. - * - * Blog Tokens can be "Normal" or "Special". - * * Normal: The result of a normal connection flow. They look like - * "{$random_string_1}.{$random_string_2}" - * That is, $token_key and $private are both random strings. - * Sites only have one Normal Blog Token. Normal Tokens are found in either - * Jetpack_Options::get_option( 'blog_token' ) (usual) or the JETPACK_BLOG_TOKEN - * constant (rare). - * * Special: A connection token for sites that have gone through an alternative - * connection flow. They look like: - * ";{$special_id}{$special_version};{$wpcom_blog_id};.{$random_string}" - * That is, $private is a random string and $token_key has a special structure with - * lots of semicolons. - * Most sites have zero Special Blog Tokens. Special tokens are only found in the - * JETPACK_BLOG_TOKEN constant. - * - * In particular, note that Normal Blog Tokens never start with ";" and that - * Special Blog Tokens always do. - * - * When searching for a matching Blog Tokens, Blog Tokens are examined in the following - * order: - * 1. Defined Special Blog Tokens (via the JETPACK_BLOG_TOKEN constant) - * 2. Stored Normal Tokens (via Jetpack_Options::get_option( 'blog_token' )) - * 3. Defined Normal Tokens (via the JETPACK_BLOG_TOKEN constant) - * - * @param int|false $user_id false: Return the Blog Token. int: Return that user's User Token. - * @param string|false $token_key If provided, check that the token matches the provided input. - * @param bool|true $suppress_errors If true, return a falsy value when the token isn't found; When false, return a descriptive WP_Error when the token isn't found. - * - * @return object|false|WP_Error - */ - public function get_access_token( $user_id = false, $token_key = false, $suppress_errors = true ) { - if ( $this->is_locked() ) { - $this->delete_all(); - return false; - } - - $possible_special_tokens = array(); - $possible_normal_tokens = array(); - $user_tokens = $this->get_user_tokens(); - - if ( $user_id ) { - if ( ! $user_tokens ) { - return $suppress_errors ? false : new WP_Error( 'no_user_tokens', __( 'No user tokens found', 'jetpack-connection' ) ); - } - if ( true === $user_id ) { // connection owner. - $user_id = Jetpack_Options::get_option( 'master_user' ); - if ( ! $user_id ) { - return $suppress_errors ? false : new WP_Error( 'empty_master_user_option', __( 'No primary user defined', 'jetpack-connection' ) ); - } - } - if ( ! isset( $user_tokens[ $user_id ] ) || ! $user_tokens[ $user_id ] ) { - // translators: %s is the user ID. - return $suppress_errors ? false : new WP_Error( 'no_token_for_user', sprintf( __( 'No token for user %d', 'jetpack-connection' ), $user_id ) ); - } - $user_token_chunks = explode( '.', $user_tokens[ $user_id ] ); - if ( empty( $user_token_chunks[1] ) || empty( $user_token_chunks[2] ) ) { - // translators: %s is the user ID. - return $suppress_errors ? false : new WP_Error( 'token_malformed', sprintf( __( 'Token for user %d is malformed', 'jetpack-connection' ), $user_id ) ); - } - if ( $user_token_chunks[2] !== (string) $user_id ) { - // translators: %1$d is the ID of the requested user. %2$d is the user ID found in the token. - return $suppress_errors ? false : new WP_Error( 'user_id_mismatch', sprintf( __( 'Requesting user_id %1$d does not match token user_id %2$d', 'jetpack-connection' ), $user_id, $user_token_chunks[2] ) ); - } - $possible_normal_tokens[] = "{$user_token_chunks[0]}.{$user_token_chunks[1]}"; - } else { - $stored_blog_token = Jetpack_Options::get_option( 'blog_token' ); - if ( $stored_blog_token ) { - $possible_normal_tokens[] = $stored_blog_token; - } - - $defined_tokens_string = Constants::get_constant( 'JETPACK_BLOG_TOKEN' ); - - if ( $defined_tokens_string ) { - $defined_tokens = explode( ',', $defined_tokens_string ); - foreach ( $defined_tokens as $defined_token ) { - if ( ';' === $defined_token[0] ) { - $possible_special_tokens[] = $defined_token; - } else { - $possible_normal_tokens[] = $defined_token; - } - } - } - } - - if ( self::MAGIC_NORMAL_TOKEN_KEY === $token_key ) { - $possible_tokens = $possible_normal_tokens; - } else { - $possible_tokens = array_merge( $possible_special_tokens, $possible_normal_tokens ); - } - - if ( ! $possible_tokens ) { - // If no user tokens were found, it would have failed earlier, so this is about blog token. - return $suppress_errors ? false : new WP_Error( 'no_possible_tokens', __( 'No blog token found', 'jetpack-connection' ) ); - } - - $valid_token = false; - - if ( false === $token_key ) { - // Use first token. - $valid_token = $possible_tokens[0]; - } elseif ( self::MAGIC_NORMAL_TOKEN_KEY === $token_key ) { - // Use first normal token. - $valid_token = $possible_tokens[0]; // $possible_tokens only contains normal tokens because of earlier check. - } else { - // Use the token matching $token_key or false if none. - // Ensure we check the full key. - $token_check = rtrim( $token_key, '.' ) . '.'; - - foreach ( $possible_tokens as $possible_token ) { - if ( hash_equals( substr( $possible_token, 0, strlen( $token_check ) ), $token_check ) ) { - $valid_token = $possible_token; - break; - } - } - } - - if ( ! $valid_token ) { - if ( $user_id ) { - // translators: %d is the user ID. - return $suppress_errors ? false : new WP_Error( 'no_valid_user_token', sprintf( __( 'Invalid token for user %d', 'jetpack-connection' ), $user_id ) ); - } else { - return $suppress_errors ? false : new WP_Error( 'no_valid_blog_token', __( 'Invalid blog token', 'jetpack-connection' ) ); - } - } - - return (object) array( - 'secret' => $valid_token, - 'external_user_id' => (int) $user_id, - ); - } - - /** - * Updates the blog token to a new value. - * - * @access public - * - * @param string $token the new blog token value. - * @return Boolean Whether updating the blog token was successful. - */ - public function update_blog_token( $token ) { - return Jetpack_Options::update_option( 'blog_token', $token ); - } - - /** - * Unlinks the current user from the linked WordPress.com user. - * - * @access public - * @static - * - * @todo Refactor to properly load the XMLRPC client independently. - * - * @param int $user_id The user identifier. - * - * @return bool Whether the disconnection of the user was successful. - */ - public function disconnect_user( $user_id ) { - $tokens = $this->get_user_tokens(); - if ( ! $tokens ) { - return false; - } - - if ( ! isset( $tokens[ $user_id ] ) ) { - return false; - } - - unset( $tokens[ $user_id ] ); - - $this->update_user_tokens( $tokens ); - - return true; - } - - /** - * Returns an array of user_id's that have user tokens for communicating with wpcom. - * Able to select by specific capability. - * - * @deprecated 1.30.0 - * @see Manager::get_connected_users - * - * @param string $capability The capability of the user. - * @param int|null $limit How many connected users to get before returning. - * @return array Array of WP_User objects if found. - */ - public function get_connected_users( $capability = 'any', $limit = null ) { - _deprecated_function( __METHOD__, '1.30.0' ); - return ( new Manager( 'jetpack' ) )->get_connected_users( $capability, $limit ); - } - - /** - * Fetches a signed token. - * - * @param object $token the token. - * @return WP_Error|string a signed token - */ - public function get_signed_token( $token ) { - if ( ! isset( $token->secret ) || empty( $token->secret ) ) { - return new WP_Error( 'invalid_token' ); - } - - list( $token_key, $token_secret ) = explode( '.', $token->secret ); - - $token_key = sprintf( - '%s:%d:%d', - $token_key, - Constants::get_constant( 'JETPACK__API_VERSION' ), - $token->external_user_id - ); - - $timestamp = time(); - - if ( function_exists( 'wp_generate_password' ) ) { - $nonce = wp_generate_password( 10, false ); - } else { - $nonce = substr( sha1( wp_rand( 0, 1000000 ) ), 0, 10 ); - } - - $normalized_request_string = implode( - "\n", - array( - $token_key, - $timestamp, - $nonce, - ) - ) . "\n"; - - // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode - $signature = base64_encode( hash_hmac( 'sha1', $normalized_request_string, $token_secret, true ) ); - - $auth = array( - 'token' => $token_key, - 'timestamp' => $timestamp, - 'nonce' => $nonce, - 'signature' => $signature, - ); - - $header_pieces = array(); - foreach ( $auth as $key => $value ) { - $header_pieces[] = sprintf( '%s="%s"', $key, $value ); - } - - return implode( ' ', $header_pieces ); - } - - /** - * Gets the list of user tokens - * - * @since 1.30.0 - * - * @return bool|array An array of user tokens where keys are user IDs and values are the tokens. False if no user token is found. - */ - public function get_user_tokens() { - return Jetpack_Options::get_option( 'user_tokens' ); - } - - /** - * Updates the option that stores the user tokens - * - * @since 1.30.0 - * - * @param array $tokens An array of user tokens where keys are user IDs and values are the tokens. - * @return bool Was the option successfully updated? - * - * @todo add validate the input. - */ - public function update_user_tokens( $tokens ) { - return Jetpack_Options::update_option( 'user_tokens', $tokens ); - } - - /** - * Lock the tokens to the current site URL. - * - * @param int $timespan How long the tokens should be locked, in seconds. - * - * @return bool - */ - public function set_lock( $timespan = HOUR_IN_SECONDS ) { - try { - $expires = ( new DateTime() )->add( DateInterval::createFromDateString( (int) $timespan . ' seconds' ) ); - } catch ( Exception $e ) { - return false; - } - - if ( false === $expires ) { - return false; - } - - // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode - return Jetpack_Options::update_option( 'token_lock', $expires->format( static::DATE_FORMAT_ATOM ) . '|||' . base64_encode( Urls::site_url() ) ); - } - - /** - * Remove the site lock from tokens. - * - * @return bool - */ - public function remove_lock() { - Jetpack_Options::delete_option( 'token_lock' ); - - return true; - } - - /** - * Check if the domain is locked, remove the lock if needed. - * Possible scenarios: - * - lock expired, site URL matches the lock URL: remove the lock, return false. - * - lock not expired, site URL matches the lock URL: return false. - * - site URL does not match the lock URL (expiration date is ignored): return true, do not remove the lock. - * - * @return bool - */ - public function is_locked() { - $the_lock = Jetpack_Options::get_option( 'token_lock' ); - if ( ! $the_lock ) { - // Not locked. - return false; - } - - $the_lock = explode( '|||', $the_lock, 2 ); - if ( count( $the_lock ) !== 2 ) { - // Something's wrong with the lock. - $this->remove_lock(); - return false; - } - - // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode - $locked_site_url = base64_decode( $the_lock[1] ); - $expires = $the_lock[0]; - - $expiration_date = DateTime::createFromFormat( static::DATE_FORMAT_ATOM, $expires ); - if ( false === $expiration_date || ! $locked_site_url ) { - // Something's wrong with the lock. - $this->remove_lock(); - return false; - } - - if ( Urls::site_url() === $locked_site_url ) { - if ( new DateTime() > $expiration_date ) { - // Site lock expired. - // Site URL matches, removing the lock. - $this->remove_lock(); - } - - return false; - } - - // Site URL doesn't match. - return true; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-tracking.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-tracking.php deleted file mode 100644 index 3efc7537..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-tracking.php +++ /dev/null @@ -1,323 +0,0 @@ -product_name = $product_name; - $this->connection = $connection; - if ( $this->connection === null ) { - // TODO We should always pass a Connection. - $this->connection = new Connection\Manager(); - } - - if ( ! did_action( 'jetpack_set_tracks_ajax_hook' ) ) { - add_action( 'wp_ajax_jetpack_tracks', array( $this, 'ajax_tracks' ) ); - - /** - * Fires when the Tracking::ajax_tracks() callback has been hooked to the - * wp_ajax_jetpack_tracks action. This action is used to ensure that - * the callback is hooked only once. - * - * @since 1.13.11 - */ - do_action( 'jetpack_set_tracks_ajax_hook' ); - } - } - - /** - * Universal method for for all tracking events triggered via the JavaScript client. - * - * @access public - */ - public function ajax_tracks() { - // Check for nonce. - if ( - empty( $_REQUEST['tracksNonce'] ) - || ! wp_verify_nonce( $_REQUEST['tracksNonce'], 'jp-tracks-ajax-nonce' ) // phpcs:ignore WordPress.Security.ValidatedSanitizedInput -- WP core doesn't pre-sanitize nonces either. - ) { - wp_send_json_error( - __( 'You aren’t authorized to do that.', 'jetpack-connection' ), - 403 - ); - } - - if ( ! isset( $_REQUEST['tracksEventName'] ) || ! isset( $_REQUEST['tracksEventType'] ) ) { - wp_send_json_error( - __( 'No valid event name or type.', 'jetpack-connection' ), - 403 - ); - } - - $tracks_data = array(); - if ( 'click' === $_REQUEST['tracksEventType'] && isset( $_REQUEST['tracksEventProp'] ) ) { - if ( is_array( $_REQUEST['tracksEventProp'] ) ) { - $tracks_data = array_map( 'filter_var', wp_unslash( $_REQUEST['tracksEventProp'] ) ); - } else { - $tracks_data = array( 'clicked' => filter_var( wp_unslash( $_REQUEST['tracksEventProp'] ) ) ); - } - } - - $this->record_user_event( filter_var( wp_unslash( $_REQUEST['tracksEventName'] ) ), $tracks_data, null, false ); - - wp_send_json_success(); - } - - /** - * Register script necessary for tracking. - * - * @param boolean $enqueue Also enqueue? defaults to false. - */ - public static function register_tracks_functions_scripts( $enqueue = false ) { - - // Register jp-tracks as it is a dependency. - wp_register_script( - 'jp-tracks', - '//stats.wp.com/w.js', - array(), - gmdate( 'YW' ), - true - ); - - Assets::register_script( - 'jp-tracks-functions', - '../dist/tracks-callables.js', - __FILE__, - array( - 'dependencies' => array( 'jp-tracks' ), - 'enqueue' => $enqueue, - 'in_footer' => true, - ) - ); - } - - /** - * Enqueue script necessary for tracking. - */ - public function enqueue_tracks_scripts() { - Assets::register_script( - 'jptracks', - '../dist/tracks-ajax.js', - __FILE__, - array( - 'dependencies' => array( 'jquery' ), - 'enqueue' => true, - 'in_footer' => true, - ) - ); - - wp_localize_script( - 'jptracks', - 'jpTracksAJAX', - array( - 'ajaxurl' => admin_url( 'admin-ajax.php' ), - 'jpTracksAJAX_nonce' => wp_create_nonce( 'jp-tracks-ajax-nonce' ), - ) - ); - } - - /** - * Send an event in Tracks. - * - * @param string $event_type Type of the event. - * @param array $data Data to send with the event. - * @param mixed $user Username, user_id, or WP_User object. - * @param bool $use_product_prefix Whether to use the object's product name as a prefix to the event type. If - * set to false, the prefix will be 'jetpack_'. - */ - public function record_user_event( $event_type, $data = array(), $user = null, $use_product_prefix = true ) { - if ( ! $user ) { - $user = wp_get_current_user(); - } - $site_url = get_option( 'siteurl' ); - - $data['_via_ua'] = isset( $_SERVER['HTTP_USER_AGENT'] ) ? filter_var( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ) : ''; - $data['_via_ip'] = isset( $_SERVER['REMOTE_ADDR'] ) ? filter_var( wp_unslash( $_SERVER['REMOTE_ADDR'] ) ) : ''; - $data['_lg'] = isset( $_SERVER['HTTP_ACCEPT_LANGUAGE'] ) ? filter_var( wp_unslash( $_SERVER['HTTP_ACCEPT_LANGUAGE'] ) ) : ''; - $data['blog_url'] = $site_url; - $data['blog_id'] = \Jetpack_Options::get_option( 'id' ); - - // Top level events should not be namespaced. - if ( '_aliasUser' !== $event_type ) { - $prefix = $use_product_prefix ? $this->product_name : 'jetpack'; - $event_type = $prefix . '_' . $event_type; - } - - $data['jetpack_version'] = defined( 'JETPACK__VERSION' ) ? JETPACK__VERSION : '0'; - - return $this->tracks_record_event( $user, $event_type, $data ); - } - - /** - * Record an event in Tracks - this is the preferred way to record events from PHP. - * - * @param mixed $user username, user_id, or WP_User object. - * @param string $event_name The name of the event. - * @param array $properties Custom properties to send with the event. - * @param int $event_timestamp_millis The time in millis since 1970-01-01 00:00:00 when the event occurred. - * - * @return bool true for success | \WP_Error if the event pixel could not be fired - */ - public function tracks_record_event( $user, $event_name, $properties = array(), $event_timestamp_millis = false ) { - - // We don't want to track user events during unit tests/CI runs. - if ( $user instanceof \WP_User && 'wptests_capabilities' === $user->cap_key ) { - return false; - } - $terms_of_service = new Terms_Of_Service(); - $status = new Status(); - // Don't track users who have not agreed to our TOS. - if ( ! $this->should_enable_tracking( $terms_of_service, $status ) ) { - return false; - } - - $event_obj = $this->tracks_build_event_obj( $user, $event_name, $properties, $event_timestamp_millis ); - - if ( is_wp_error( $event_obj->error ) ) { - return $event_obj->error; - } - - return $event_obj->record(); - } - - /** - * Determines whether tracking should be enabled. - * - * @param \Automattic\Jetpack\Terms_Of_Service $terms_of_service A Terms_Of_Service object. - * @param \Automattic\Jetpack\Status $status A Status object. - * - * @return boolean True if tracking should be enabled, else false. - */ - public function should_enable_tracking( $terms_of_service, $status ) { - if ( $status->is_offline_mode() ) { - return false; - } - - return $terms_of_service->has_agreed() || $this->connection->is_user_connected(); - } - - /** - * Procedurally build a Tracks Event Object. - * NOTE: Use this only when the simpler Automattic\Jetpack\Tracking->jetpack_tracks_record_event() function won't work for you. - * - * @param \WP_User $user WP_User object. - * @param string $event_name The name of the event. - * @param array $properties Custom properties to send with the event. - * @param int $event_timestamp_millis The time in millis since 1970-01-01 00:00:00 when the event occurred. - * - * @return \Jetpack_Tracks_Event|\WP_Error - */ - private function tracks_build_event_obj( $user, $event_name, $properties = array(), $event_timestamp_millis = false ) { - $identity = $this->tracks_get_identity( $user->ID ); - - $properties['user_lang'] = $user->get( 'WPLANG' ); - - $blog_details = array( - 'blog_lang' => isset( $properties['blog_lang'] ) ? $properties['blog_lang'] : get_bloginfo( 'language' ), - 'blog_id' => \Jetpack_Options::get_option( 'id' ), - ); - - $timestamp = ( false !== $event_timestamp_millis ) ? $event_timestamp_millis : round( microtime( true ) * 1000 ); - $timestamp_string = is_string( $timestamp ) ? $timestamp : number_format( $timestamp, 0, '', '' ); - - return new \Jetpack_Tracks_Event( - array_merge( - $blog_details, - (array) $properties, - $identity, - array( - '_en' => $event_name, - '_ts' => $timestamp_string, - ) - ) - ); - } - - /** - * Get the identity to send to tracks. - * - * @param int $user_id The user id of the local user. - * - * @return array $identity - */ - public function tracks_get_identity( $user_id ) { - - // Meta is set, and user is still connected. Use WPCOM ID. - $wpcom_id = get_user_meta( $user_id, 'jetpack_tracks_wpcom_id', true ); - if ( $wpcom_id && is_string( $wpcom_id ) && $this->connection->is_user_connected( $user_id ) ) { - return array( - '_ut' => 'wpcom:user_id', - '_ui' => $wpcom_id, - ); - } - - // User is connected, but no meta is set yet. Use WPCOM ID and set meta. - if ( $this->connection->is_user_connected( $user_id ) ) { - $wpcom_user_data = $this->connection->get_connected_user_data( $user_id ); - $wpcom_id = $wpcom_user_data['ID'] ?? null; - - if ( is_string( $wpcom_id ) ) { - update_user_meta( $user_id, 'jetpack_tracks_wpcom_id', $wpcom_id ); - - return array( - '_ut' => 'wpcom:user_id', - '_ui' => $wpcom_id, - ); - } - } - - // User isn't linked at all. Fall back to anonymous ID. - $anon_id = get_user_meta( $user_id, 'jetpack_tracks_anon_id', true ); - if ( ! $anon_id ) { - $anon_id = \Jetpack_Tracks_Client::get_anon_id(); - add_user_meta( $user_id, 'jetpack_tracks_anon_id', $anon_id, false ); - } - - if ( ! isset( $_COOKIE['tk_ai'] ) && ! headers_sent() ) { - setcookie( 'tk_ai', $anon_id, 0, COOKIEPATH, COOKIE_DOMAIN, is_ssl(), false ); // phpcs:ignore Jetpack.Functions.SetCookie -- This is a random string and should be fine. - } - - return array( - '_ut' => 'anon', - '_ui' => $anon_id, - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-urls.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-urls.php deleted file mode 100644 index f8c22cee..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-urls.php +++ /dev/null @@ -1,192 +0,0 @@ -is_wpcom_simple() ) { - return; - } - - add_filter( 'manage_users_columns', array( $this, 'add_connection_column' ) ); - add_filter( 'manage_users_custom_column', array( $this, 'render_connection_column' ), 9, 3 ); // Priority 9 to run before SSO - add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); - add_action( 'admin_print_styles-users.php', array( $this, 'add_connection_column_styles' ) ); - } - - /** - * Add the connection column to the users list table. - * - * @param array $columns The current columns. - * @return array Modified columns. - */ - public function add_connection_column( $columns ) { - $columns[ self::COLUMN_ID ] = sprintf( - ' - %1$s - - ', - esc_html__( 'WordPress.com account', 'jetpack-connection' ), - esc_attr__( 'Tooltip', 'jetpack-connection' ) - ); - return $columns; - } - - /** - * Render the connection column content. - * - * @param string $output Custom column output. - * @param string $column_name Column name. - * @param int $user_id ID of the currently-listed user. - * @return string - */ - public function render_connection_column( $output, $column_name, $user_id ) { - if ( self::COLUMN_ID !== $column_name ) { - return $output; - } - - if ( ( new Manager() )->is_user_connected( $user_id ) ) { - return sprintf( - '%2$s', - esc_attr__( 'This user has connected their WordPress.com account.', 'jetpack-connection' ), - esc_html__( 'Connected', 'jetpack-connection' ) - ); - } - - return $output; - } - - /** - * Enqueue scripts and styles. - * - * @param string $hook The current admin page. - */ - public function enqueue_scripts( $hook ) { - if ( 'users.php' !== $hook ) { - return; - } - - Assets::register_script( - 'jetpack-users-connection', - '../dist/jetpack-users-connection.js', - __FILE__, - array( - 'strategy' => 'defer', - 'in_footer' => true, - 'enqueue' => true, - 'version' => Package_Version::PACKAGE_VERSION, - 'deps' => array( 'wp-i18n' ), - - ) - ); - - wp_localize_script( - 'jetpack-users-connection', - 'jetpackConnectionTooltips', - array( - 'columnTooltip' => esc_html__( 'Connecting a WordPress.com account unlocks Jetpack’s full suite of features including secure logins.', 'jetpack-connection' ), - ) - ); - } - - /** - * Add styles for the connection column. - */ - public function add_connection_column_styles() { - ?> - - update_user_token() instead. - * - * @param int $user_id The user id. - * @param string $token The user token. - * @param bool $is_master_user Whether the user is the master user. - * @return bool - */ - public static function update_user_token( $user_id, $token, $is_master_user ) { - _deprecated_function( __METHOD__, '1.24.0', 'Automattic\\Jetpack\\Connection\\Tokens->update_user_token' ); - return ( new Tokens() )->update_user_token( $user_id, $token, $is_master_user ); - } - - /** - * Filters the value of the api constant. - * - * @param String $constant_value The constant value. - * @param String $constant_name The constant name. - * @return mixed | null - */ - public static function jetpack_api_constant_filter( $constant_value, $constant_name ) { - if ( $constant_value !== null ) { - // If the constant value was already set elsewhere, use that value. - return $constant_value; - } - - if ( defined( "self::DEFAULT_$constant_name" ) ) { - return constant( "self::DEFAULT_$constant_name" ); - } - - return null; - } - - /** - * Add a filter to initialize default values of the constants. - */ - public static function init_default_constants() { - add_filter( - 'jetpack_constant_default_value', - array( __CLASS__, 'jetpack_api_constant_filter' ), - 10, - 2 - ); - } - - /** - * Filters the registration request body to include tracking properties. - * - * @param array $properties Already prepared tracking properties. - * @return array amended properties. - */ - public static function filter_register_request_body( $properties ) { - $tracking = new Tracking(); - $tracks_identity = $tracking->tracks_get_identity( get_current_user_id() ); - - return array_merge( - $properties, - array( - '_ui' => $tracks_identity['_ui'], - '_ut' => $tracks_identity['_ut'], - ) - ); - } - - /** - * Generate a new user from a SSO attempt. - * - * @param object $user_data WordPress.com user information. - */ - public static function generate_user( $user_data ) { - $username = $user_data->login; - /** - * Determines how many times the SSO module can attempt to randomly generate a user. - * - * @module sso - * - * @since jetpack-4.3.2 - * - * @param int 5 By default, SSO will attempt to random generate a user up to 5 times. - */ - $num_tries = (int) apply_filters( 'jetpack_sso_allowed_username_generate_retries', 5 ); - - $exists = username_exists( $username ); - $tries = 0; - while ( $exists && $tries++ < $num_tries ) { - $username = $user_data->login . '_' . $user_data->ID . '_' . wp_rand(); - $exists = username_exists( $username ); - } - - if ( $exists ) { - return false; - } - - $user = (object) array(); - $user->user_pass = wp_generate_password( 20 ); - $user->user_login = wp_slash( $username ); - $user->user_email = wp_slash( $user_data->email ); - $user->display_name = $user_data->display_name; - $user->first_name = $user_data->first_name; - $user->last_name = $user_data->last_name; - $user->url = $user_data->url; - $user->description = $user_data->description; - - if ( isset( $user_data->role ) && $user_data->role ) { - $user->role = $user_data->role; - } - - $created_user_id = wp_insert_user( $user ); - - update_user_meta( $created_user_id, 'wpcom_user_id', $user_data->ID ); - return get_userdata( $created_user_id ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-webhooks.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-webhooks.php deleted file mode 100644 index 94fd3df6..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-webhooks.php +++ /dev/null @@ -1,217 +0,0 @@ -connection = $connection; - } - - /** - * Initialize the webhooks. - * - * @param Manager $connection The Connection Manager object. - */ - public static function init( $connection ) { - $webhooks = new static( $connection ); - - add_action( 'init', array( $webhooks, 'controller' ) ); - add_action( 'load-toplevel_page_jetpack', array( $webhooks, 'fallback_jetpack_controller' ) ); - } - - /** - * Jetpack plugin used to trigger this webhooks in Jetpack::admin_page_load() - * - * The Jetpack toplevel menu is still accessible for stand-alone plugins, and while there's no content for that page, there are still - * actions from Calypso and WPCOM that reach that route regardless of the site having the Jetpack plugin or not. That's why we are still handling it here. - */ - public function fallback_jetpack_controller() { - $this->controller( true ); - } - - /** - * The "controller" decides which handler we need to run. - * - * @param bool $force Do not check if it's a webhook request and just run the controller. - */ - public function controller( $force = false ) { - if ( ! $force ) { - // The nonce is verified in specific handlers. - // phpcs:ignore WordPress.Security.NonceVerification.Recommended - if ( empty( $_GET['handler'] ) || 'jetpack-connection-webhooks' !== $_GET['handler'] ) { - return; - } - } - - // phpcs:ignore WordPress.Security.NonceVerification.Recommended - if ( isset( $_GET['connect_url_redirect'] ) ) { - $this->handle_connect_url_redirect(); - } - - // phpcs:ignore WordPress.Security.NonceVerification.Recommended - if ( empty( $_GET['action'] ) ) { - return; - } - - // The nonce is verified in specific handlers. - // phpcs:ignore WordPress.Security.NonceVerification.Recommended - switch ( $_GET['action'] ) { - case 'authorize': - $this->handle_authorize(); - $this->do_exit(); - break; // @phan-suppress-current-line PhanPluginUnreachableCode -- Safer to include it even though do_exit never returns. - case 'authorize_redirect': - $this->handle_authorize_redirect(); - $this->do_exit(); - break; // @phan-suppress-current-line PhanPluginUnreachableCode -- Safer to include it even though do_exit never returns. - // Class Jetpack::admin_page_load() still handles other cases. - } - } - - /** - * Perform the authorization action. - */ - public function handle_authorize() { - if ( $this->connection->is_connected() && $this->connection->is_user_connected() ) { - $redirect_url = apply_filters( 'jetpack_client_authorize_already_authorized_url', admin_url() ); - wp_safe_redirect( $redirect_url ); - - return; - } - do_action( 'jetpack_client_authorize_processing' ); - - $data = stripslashes_deep( $_GET ); // We need all request data under the context of an authorization request. - $data['auth_type'] = 'client'; - $roles = new Roles(); - $role = $roles->translate_current_user_to_role(); - $redirect = isset( $data['redirect'] ) ? esc_url_raw( (string) $data['redirect'] ) : ''; - - check_admin_referer( "jetpack-authorize_{$role}_{$redirect}" ); - - $tracking = new Tracking(); - - $result = $this->connection->authorize( $data ); - - if ( is_wp_error( $result ) ) { - do_action( 'jetpack_client_authorize_error', $result ); - - $tracking->record_user_event( - 'jpc_client_authorize_fail', - array( - 'error_code' => $result->get_error_code(), - 'error_message' => $result->get_error_message(), - ) - ); - } else { - /** - * Fires after the Jetpack client is authorized to communicate with WordPress.com. - * - * @param int Jetpack Blog ID. - * - * @since 1.7.0 - * @since-jetpack 4.2.0 - */ - do_action( 'jetpack_client_authorized', Jetpack_Options::get_option( 'id' ) ); - - $tracking->record_user_event( 'jpc_client_authorize_success' ); - } - - $fallback_redirect = apply_filters( 'jetpack_client_authorize_fallback_url', admin_url() ); - $redirect = wp_validate_redirect( $redirect ) ? $redirect : $fallback_redirect; - - wp_safe_redirect( $redirect ); - } - - /** - * The authorhize_redirect webhook handler - */ - public function handle_authorize_redirect() { - $authorize_redirect_handler = new Webhooks\Authorize_Redirect( $this->connection ); - $authorize_redirect_handler->handle(); - } - - /** - * The `exit` is wrapped into a method so we could mock it. - * - * @return never - */ - protected function do_exit() { - exit( 0 ); - } - - /** - * Handle the `connect_url_redirect` action, - * which is usually called to repeat an attempt for user to authorize the connection. - * - * @return void - */ - public function handle_connect_url_redirect() { - // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- no site changes. - $from = ! empty( $_GET['from'] ) ? sanitize_text_field( wp_unslash( $_GET['from'] ) ) : 'iframe'; - - // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- no site changes, sanitization happens in get_authorization_url() - $redirect = ! empty( $_GET['redirect_after_auth'] ) ? wp_unslash( $_GET['redirect_after_auth'] ) : false; - - add_filter( 'allowed_redirect_hosts', array( Host::class, 'allow_wpcom_environments' ) ); - - if ( ! $this->connection->is_user_connected() ) { - if ( ! $this->connection->is_connected() ) { - $this->connection->register(); - } - - $connect_url = add_query_arg( 'from', $from, $this->connection->get_authorization_url( null, $redirect ) ); - - // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- no site changes. - if ( isset( $_GET['notes_iframe'] ) ) { - $connect_url .= '¬es_iframe'; - } - wp_safe_redirect( $connect_url ); - $this->do_exit(); - } elseif ( ! isset( $_GET['calypso_env'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- no site changes. - ( new CookieState() )->state( 'message', 'already_authorized' ); - wp_safe_redirect( $redirect ); - $this->do_exit(); - } else { - if ( 'connect-after-checkout' === $from && $redirect ) { - wp_safe_redirect( $redirect ); - $this->do_exit(); - } - $connect_url = add_query_arg( - array( - 'from' => $from, - 'already_authorized' => true, - ), - $this->connection->get_authorization_url() - ); - wp_safe_redirect( $connect_url ); - $this->do_exit(); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-async-call.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-async-call.php deleted file mode 100644 index bc525104..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-async-call.php +++ /dev/null @@ -1,106 +0,0 @@ - [ - * $user_id => [ - * arrat of Jetpack_IXR_ClientMulticall - * ] - * ] - * ] - * - * @var array - */ - public static $clients = array(); - - /** - * Adds a new XMLRPC call to the queue to be processed on shutdown - * - * @param string $method The XML-RPC method. - * @param integer $user_id The user ID used to make the request (will use this user's token); Use 0 for the blog token. - * @param mixed ...$args This function accepts any number of additional arguments, that will be passed to the call. - * @return void - */ - public static function add_call( $method, $user_id = 0, ...$args ) { - global $blog_id; - - $client_blog_id = is_multisite() ? $blog_id : 0; - - if ( ! isset( self::$clients[ $client_blog_id ] ) ) { - self::$clients[ $client_blog_id ] = array(); - } - - if ( ! isset( self::$clients[ $client_blog_id ][ $user_id ] ) ) { - self::$clients[ $client_blog_id ][ $user_id ] = new Jetpack_IXR_ClientMulticall( array( 'user_id' => $user_id ) ); - } - - // https://plugins.trac.wordpress.org/ticket/2041 - if ( function_exists( 'ignore_user_abort' ) ) { - ignore_user_abort( true ); - } - - array_unshift( $args, $method ); - - call_user_func_array( array( self::$clients[ $client_blog_id ][ $user_id ], 'addCall' ), $args ); - - if ( false === has_action( 'shutdown', array( 'Automattic\Jetpack\Connection\XMLRPC_Async_Call', 'do_calls' ) ) ) { - add_action( 'shutdown', array( 'Automattic\Jetpack\Connection\XMLRPC_Async_Call', 'do_calls' ) ); - } - } - - /** - * Trigger the calls at shutdown - * - * @return void - */ - public static function do_calls() { - foreach ( self::$clients as $client_blog_id => $blog_clients ) { - if ( $client_blog_id > 0 ) { - $switch_success = switch_to_blog( $client_blog_id ); - - if ( ! $switch_success ) { - continue; - } - } - - foreach ( $blog_clients as $client ) { - if ( empty( $client->calls ) ) { - continue; - } - - flush(); - $client->query(); - } - - if ( $client_blog_id > 0 ) { - restore_current_blog(); - } - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-connector.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-connector.php deleted file mode 100644 index a5693cf2..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-connector.php +++ /dev/null @@ -1,85 +0,0 @@ -connection = $connection; - - // Adding the filter late to avoid being overwritten by Jetpack's XMLRPC server. - add_filter( 'xmlrpc_methods', array( $this, 'xmlrpc_methods' ), 20 ); - } - - /** - * Attached to the `xmlrpc_methods` filter. - * - * @param array $methods The already registered XML-RPC methods. - * @return array - */ - public function xmlrpc_methods( $methods ) { - return array_merge( - $methods, - array( - 'jetpack.verifyRegistration' => array( $this, 'verify_registration' ), - ) - ); - } - - /** - * Handles verification that a site is registered. - * - * @param array $registration_data The data sent by the XML-RPC client: - * [ $secret_1, $user_id ]. - * - * @return string|IXR_Error - */ - public function verify_registration( $registration_data ) { - return $this->output( $this->connection->handle_registration( $registration_data ) ); - } - - /** - * Normalizes output for XML-RPC. - * - * @param mixed $data The data to output. - */ - private function output( $data ) { - if ( is_wp_error( $data ) ) { - $code = $data->get_error_data(); - if ( ! $code ) { - $code = -10520; - } - - if ( ! class_exists( IXR_Error::class ) ) { - require_once ABSPATH . WPINC . '/class-IXR.php'; - } - return new IXR_Error( - $code, - sprintf( 'Jetpack: [%s] %s', $data->get_error_code(), $data->get_error_message() ) - ); - } - - return $data; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/_inc/admin-bar.scss b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/_inc/admin-bar.scss deleted file mode 100644 index 262b0819..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/_inc/admin-bar.scss +++ /dev/null @@ -1,30 +0,0 @@ -#wpadminbar #wp-admin-bar-jetpack-idc { - margin-right: 5px; - - .jp-idc-admin-bar { - border-radius: 2px; - font-weight: 500; - font-size: 14px; - line-height: 20px; - color: #EFEFF0; - padding: 6px 8px; - } - - &.hide { - display: none; - } - - .dashicons { - font-family: 'dashicons'; - margin-top: -6px; - - &:before { - font-size: 18px; - } - } - - .ab-item { - padding: 0; - background: #E68B28; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/_inc/admin.jsx b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/_inc/admin.jsx deleted file mode 100644 index 8d731738..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/_inc/admin.jsx +++ /dev/null @@ -1,62 +0,0 @@ -import { IDCScreen } from '@automattic/jetpack-idc'; -import * as WPElement from '@wordpress/element'; -import React from 'react'; - -import './admin-bar.scss'; -import './style.scss'; - -/** - * The initial renderer function. - */ -function render() { - if ( ! Object.hasOwn( window, 'JP_IDENTITY_CRISIS__INITIAL_STATE' ) ) { - return; - } - - const container = document.getElementById( - window.JP_IDENTITY_CRISIS__INITIAL_STATE.containerID || 'jp-identity-crisis-container' - ); - - if ( null === container ) { - return; - } - - const { - WP_API_root, - WP_API_nonce, - wpcomHomeUrl, - currentUrl, - redirectUri, - tracksUserData, - tracksEventData, - isSafeModeConfirmed, - consumerData, - isAdmin, - possibleDynamicSiteUrlDetected, - isDevelopmentSite, - } = window.JP_IDENTITY_CRISIS__INITIAL_STATE; - - if ( ! isSafeModeConfirmed ) { - const component = ( - - ); - WPElement.createRoot( container ).render( component ); - } -} - -window.addEventListener( 'load', () => render() ); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/_inc/style.scss b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/_inc/style.scss deleted file mode 100644 index 14f09db9..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/_inc/style.scss +++ /dev/null @@ -1,9 +0,0 @@ -#jp-identity-crisis-container .jp-idc__idc-screen { - margin-top: 40px; - margin-bottom: 40px; -} - -#jp-identity-crisis-container.notice { - background: none; - border: none; -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-exception.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-exception.php deleted file mode 100644 index f6bd4140..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-exception.php +++ /dev/null @@ -1,13 +0,0 @@ -disconnect_site( true ); - } else { - $connection->disconnect_site( false ); - } - - delete_option( static::PERSISTENT_BLOG_ID_OPTION_NAME ); - - // Clear IDC options. - self::clear_all_idc_options(); - } - - /** - * Filter to prevent site from disconnecting from WPCOM if it's in an IDC. - * - * @see jetpack_connection_disconnect_site_wpcom filter. - * - * @return bool False if the site is in IDC, true otherwise. - */ - public static function jetpack_connection_disconnect_site_wpcom_filter() { - return ! self::validate_sync_error_idc_option(); - } - - /** - * This method loops through the array of processed items from sync and checks if one of the items was the - * home_url or site_url callable. If so, then we delete the jetpack_migrate_for_idc option. - * - * @param array $processed_items Array of processed items that were synced to WordPress.com. - */ - public function maybe_clear_migrate_option( $processed_items ) { - foreach ( (array) $processed_items as $item ) { - - // First, is this item a jetpack_sync_callable action? If so, then proceed. - $callable_args = ( is_array( $item ) && isset( $item[0] ) && isset( $item[1] ) && 'jetpack_sync_callable' === $item[0] ) - ? $item[1] - : null; - - // Second, if $callable_args is set, check if the callable was home_url or site_url. If so, - // clear the migrate option. - if ( - isset( $callable_args[0] ) - && ( 'home_url' === $callable_args[0] || 'site_url' === $callable_args[1] ) - ) { - Jetpack_Options::delete_option( 'migrate_for_idc' ); - break; - } - } - } - - /** - * WordPress init. - * - * @return void - */ - public function wordpress_init() { - if ( current_user_can( 'jetpack_disconnect' ) ) { - if ( - isset( $_GET['jetpack_idc_clear_confirmation'] ) && isset( $_GET['_wpnonce'] ) && - wp_verify_nonce( $_GET['_wpnonce'], 'jetpack_idc_clear_confirmation' ) // phpcs:ignore WordPress.Security.ValidatedSanitizedInput -- WordPress core doesn't unslash or verify nonces either. - ) { - Jetpack_Options::delete_option( 'safe_mode_confirmed' ); - self::$is_safe_mode_confirmed = false; - } else { - self::$is_safe_mode_confirmed = (bool) Jetpack_Options::get_option( 'safe_mode_confirmed' ); - } - } - - // 121 Priority so that it's the most inner Jetpack item in the admin bar. - add_action( 'admin_bar_menu', array( $this, 'display_admin_bar_button' ), 121 ); - - UI::init(); - } - - /** - * Add the idc query arguments to the url. - * - * @param string $url The remote request url. - */ - public function add_idc_query_args_to_url( $url ) { - $status = new Status(); - if ( ! is_string( $url ) - || $status->is_offline_mode() - || self::validate_sync_error_idc_option() ) { - return $url; - } - $home_url = Urls::home_url(); - $site_url = Urls::site_url(); - $hostname = wp_parse_url( $site_url, PHP_URL_HOST ); - - // If request is from an IP, make sure ip_requester option is set - if ( self::url_is_ip( $hostname ) ) { - self::maybe_update_ip_requester( $hostname ); - } - - $query_args = array( - 'home' => $home_url, - 'siteurl' => $site_url, - ); - - if ( self::should_handle_idc() ) { - $query_args['idc'] = true; - } - - if ( \Jetpack_Options::get_option( 'migrate_for_idc', false ) ) { - $query_args['migrate_for_idc'] = true; - } - - if ( is_multisite() ) { - $query_args['multisite'] = true; - } - - return add_query_arg( $query_args, $url ); - } - - /** - * Renders the admin bar button. - * - * @return void - */ - public function display_admin_bar_button() { - global $wp_admin_bar; - - $href = is_admin() - ? add_query_arg( 'jetpack_idc_clear_confirmation', '1' ) - : add_query_arg( 'jetpack_idc_clear_confirmation', '1', admin_url() ); - - $href = wp_nonce_url( $href, 'jetpack_idc_clear_confirmation' ); - - $consumer_data = UI::get_consumer_data(); - $label = isset( $consumer_data['customContent']['adminBarSafeModeLabel'] ) - ? esc_html( $consumer_data['customContent']['adminBarSafeModeLabel'] ) - : esc_html__( 'Jetpack Safe Mode', 'jetpack-connection' ); - - $title = sprintf( - '', - '', - $label - ); - - $menu = array( - 'id' => 'jetpack-idc', - 'title' => $title, - 'href' => esc_url( $href ), - 'parent' => 'top-secondary', - ); - - if ( ! self::$is_safe_mode_confirmed ) { - $menu['meta'] = array( - 'class' => 'hide', - ); - } - - $wp_admin_bar->add_node( $menu ); - } - - /** - * Checks if the site is currently in an identity crisis. - * - * @return array|bool Array of options that are in a crisis, or false if everything is OK. - */ - public static function check_identity_crisis() { - $connection = new Connection_Manager( 'jetpack' ); - - if ( ! $connection->is_connected() || ( new Status() )->is_offline_mode() || ! self::validate_sync_error_idc_option() ) { - return false; - } - return Jetpack_Options::get_option( 'sync_error_idc' ); - } - - /** - * Checks the HTTP response body for the 'idc_detected' key. If the key exists, - * checks the idc_detected value for a valid idc error. - * - * @param array|WP_Error $http_response The HTTP response. - * - * @return bool Whether the site is in an identity crisis. - */ - public function check_http_response_for_idc_detected( $http_response ) { - if ( ! is_array( $http_response ) ) { - return false; - } - $response_body = json_decode( wp_remote_retrieve_body( $http_response ), true ); - - if ( isset( $response_body['idc_detected'] ) ) { - return $this->check_response_for_idc( $response_body['idc_detected'] ); - } - - if ( isset( $response_body['migrated_for_idc'] ) ) { - Jetpack_Options::delete_option( 'migrate_for_idc' ); - } - - return false; - } - - /** - * Checks the WPCOM response to determine if the site is in an identity crisis. Updates the - * sync_error_idc option if it is. - * - * @param array $response The response data. - * - * @return bool Whether the site is in an identity crisis. - */ - public function check_response_for_idc( $response ) { - if ( is_array( $response ) && isset( $response['error_code'] ) ) { - $error_code = $response['error_code']; - $allowed_idc_error_codes = array( - 'jetpack_url_mismatch', - 'jetpack_home_url_mismatch', - 'jetpack_site_url_mismatch', - ); - - if ( in_array( $error_code, $allowed_idc_error_codes, true ) ) { - Jetpack_Options::update_option( - 'sync_error_idc', - self::get_sync_error_idc_option( $response ) - ); - } - - return true; - } - - return false; - } - - /** - * Clears all IDC specific options. This method is used on disconnect and reconnect. - * - * @return void - */ - public static function clear_all_idc_options() { - // If the site is currently in IDC, let's also clear the VaultPress connection options. - // We have to check if the site is in IDC, otherwise we'd be clearing the VaultPress - // connection any time the Jetpack connection is cycled. - if ( self::validate_sync_error_idc_option() ) { - delete_option( 'vaultpress' ); - delete_option( 'vaultpress_auto_register' ); - } - - Jetpack_Options::delete_option( - array( - 'sync_error_idc', - 'safe_mode_confirmed', - 'migrate_for_idc', - ) - ); - - delete_transient( 'jetpack_idc_possible_dynamic_site_url_detected' ); - } - - /** - * Checks whether the sync_error_idc option is valid or not, and if not, will do cleanup. - * - * @return bool - * @since-jetpack 5.4.0 Do not call get_sync_error_idc_option() unless site is in IDC - * - * @since 0.2.0 - * @since-jetpack 4.4.0 - */ - public static function validate_sync_error_idc_option() { - $is_valid = false; - - // Is the site opted in and does the stored sync_error_idc option match what we now generate? - $sync_error = Jetpack_Options::get_option( 'sync_error_idc' ); - if ( $sync_error && self::should_handle_idc() ) { - $local_options = self::get_sync_error_idc_option(); - - // Ensure all values are set. - if ( isset( $sync_error['home'] ) && isset( $local_options['home'] ) && isset( $sync_error['siteurl'] ) && isset( $local_options['siteurl'] ) ) { - // If the WP.com expected home and siteurl match local home and siteurl it is not valid IDC. - if ( - isset( $sync_error['wpcom_home'] ) && - isset( $sync_error['wpcom_siteurl'] ) && - $sync_error['wpcom_home'] === $local_options['home'] && - $sync_error['wpcom_siteurl'] === $local_options['siteurl'] - ) { - // Enable migrate_for_idc so that sync actions are accepted. - Jetpack_Options::update_option( 'migrate_for_idc', true ); - } elseif ( $sync_error['home'] === $local_options['home'] && $sync_error['siteurl'] === $local_options['siteurl'] ) { - $is_valid = true; - } - } - } - - /** - * Filters whether the sync_error_idc option is valid. - * - * @param bool $is_valid If the sync_error_idc is valid or not. - * - * @since 0.2.0 - * @since-jetpack 4.4.0 - */ - $is_valid = (bool) apply_filters( 'jetpack_sync_error_idc_validation', $is_valid ); - - if ( ! $is_valid && $sync_error ) { - // Since the option exists, and did not validate, delete it. - Jetpack_Options::delete_option( 'sync_error_idc' ); - } - - return $is_valid; - } - - /** - * Reverses WP.com URLs stored in sync_error_idc option. - * - * @param array $sync_error error option containing reversed URLs. - * @return array - */ - public static function reverse_wpcom_urls_for_idc( $sync_error ) { - if ( isset( $sync_error['reversed_url'] ) ) { - if ( array_key_exists( 'wpcom_siteurl', $sync_error ) ) { - $sync_error['wpcom_siteurl'] = strrev( $sync_error['wpcom_siteurl'] ); - } - if ( array_key_exists( 'wpcom_home', $sync_error ) ) { - $sync_error['wpcom_home'] = strrev( $sync_error['wpcom_home'] ); - } - } - return $sync_error; - } - - /** - * Normalizes a url by doing three things: - * - Strips protocol - * - Strips www - * - Adds a trailing slash - * - * @param string $url URL to parse. - * - * @return WP_Error|string - * @since 0.2.0 - * @since-jetpack 4.4.0 - */ - public static function normalize_url_protocol_agnostic( $url ) { - $parsed_url = wp_parse_url( trailingslashit( esc_url_raw( $url ) ) ); - if ( ! $parsed_url || empty( $parsed_url['host'] ) || empty( $parsed_url['path'] ) ) { - return new WP_Error( - 'cannot_parse_url', - sprintf( - /* translators: %s: URL to parse. */ - esc_html__( 'Cannot parse URL %s', 'jetpack-connection' ), - $url - ) - ); - } - - // Strip www and protocols. - $url = preg_replace( '/^www\./i', '', $parsed_url['host'] . $parsed_url['path'] ); - - return $url; - } - - /** - * Gets the value that is to be saved in the jetpack_sync_error_idc option. - * - * @param array $response HTTP response. - * - * @return array Array of the local urls, wpcom urls, and error code. - * @since 0.2.0 - * @since-jetpack 4.4.0 - * @since-jetpack 5.4.0 Add transient since home/siteurl retrieved directly from DB. - */ - public static function get_sync_error_idc_option( $response = array() ) { - // Since the local options will hit the database directly, store the values - // in a transient to allow for autoloading and caching on subsequent views. - $local_options = get_transient( 'jetpack_idc_local' ); - if ( false === $local_options ) { - $local_options = array( - 'home' => Urls::home_url(), - 'siteurl' => Urls::site_url(), - ); - set_transient( 'jetpack_idc_local', $local_options, MINUTE_IN_SECONDS ); - } - - $options = array_merge( $local_options, $response ); - - $returned_values = array(); - foreach ( $options as $key => $option ) { - if ( 'error_code' === $key ) { - $returned_values[ $key ] = $option; - continue; - } - - $normalized_url = self::normalize_url_protocol_agnostic( $option ); - if ( is_wp_error( $normalized_url ) ) { - continue; - } - - $returned_values[ $key ] = $normalized_url; - } - // We need to protect WPCOM URLs from search & replace by reversing them. See https://wp.me/pf5801-3R - // Add 'reversed_url' key for backward compatibility - if ( array_key_exists( 'wpcom_home', $returned_values ) && array_key_exists( 'wpcom_siteurl', $returned_values ) ) { - $returned_values['reversed_url'] = true; - $returned_values = self::reverse_wpcom_urls_for_idc( $returned_values ); - } - - return $returned_values; - } - - /** - * Returns the value of the jetpack_should_handle_idc filter or constant. - * If set to true, the site will be put into staging mode. - * - * This method uses both the current jetpack_should_handle_idc filter - * and constant to determine whether an IDC should be handled. - * - * @return bool - * @since 0.2.6 - */ - public static function should_handle_idc() { - if ( Constants::is_defined( 'JETPACK_SHOULD_HANDLE_IDC' ) ) { - $default = Constants::get_constant( 'JETPACK_SHOULD_HANDLE_IDC' ); - } else { - $default = ! Constants::is_defined( 'SUNRISE' ) && ! is_multisite(); - } - - /** - * Allows sites to opt in for IDC mitigation which blocks the site from syncing to WordPress.com when the home - * URL or site URL do not match what WordPress.com expects. The default value is either true, or the value of - * JETPACK_SHOULD_HANDLE_IDC constant if set. - * - * @param bool $default Whether the site is opted in to IDC mitigation. - * - * @since 0.2.6 - */ - return (bool) apply_filters( 'jetpack_should_handle_idc', $default ); - } - - /** - * Whether the site is undergoing identity crisis. - * - * @return bool - */ - public static function has_identity_crisis() { - return false !== static::check_identity_crisis() && ! static::$is_safe_mode_confirmed; - } - - /** - * Whether an admin has confirmed safe mode. - * Unlike `static::$is_safe_mode_confirmed` this function always returns the actual flag value. - * - * @return bool - */ - public static function safe_mode_is_confirmed() { - return Jetpack_Options::get_option( 'safe_mode_confirmed' ); - } - - /** - * Returns the mismatched URLs. - * - * @return array|bool The mismatched urls, or false if the site is not connected, offline, in safe mode, or the IDC error is not valid. - */ - public static function get_mismatched_urls() { - if ( ! static::has_identity_crisis() ) { - return false; - } - - $data = static::check_identity_crisis(); - - if ( ! $data || - ! isset( $data['error_code'] ) || - ! isset( $data['wpcom_home'] ) || - ! isset( $data['home'] ) || - ! isset( $data['wpcom_siteurl'] ) || - ! isset( $data['siteurl'] ) - ) { - // The jetpack_sync_error_idc option is missing a key. - return false; - } - - if ( 'jetpack_site_url_mismatch' === $data['error_code'] ) { - return array( - 'wpcom_url' => $data['wpcom_siteurl'], - 'current_url' => $data['siteurl'], - ); - } - - return array( - 'wpcom_url' => $data['wpcom_home'], - 'current_url' => $data['home'], - ); - } - - /** - * Try to detect $_SERVER['HTTP_HOST'] being used within WP_SITEURL or WP_HOME definitions inside of wp-config. - * - * If `HTTP_HOST` usage is found, it's possbile (though not certain) that site URLs are dynamic. - * - * When a site URL is dynamic, it can lead to a Jetpack IDC. If potentially dynamic usage is detected, - * helpful support info will be shown on the IDC UI about setting a static site/home URL. - * - * @return bool True if potentially dynamic site urls were detected in wp-config, false otherwise. - */ - public static function detect_possible_dynamic_site_url() { - $transient_key = 'jetpack_idc_possible_dynamic_site_url_detected'; - $transient_val = get_transient( $transient_key ); - - if ( false !== $transient_val ) { - return (bool) $transient_val; - } - - $path = self::locate_wp_config(); - $wp_config = $path ? file_get_contents( $path ) : false; // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents - if ( $wp_config ) { - $matched = preg_match( - '/define ?\( ?[\'"](?:WP_SITEURL|WP_HOME).+(?:HTTP_HOST).+\);/', - $wp_config - ); - - if ( $matched ) { - set_transient( $transient_key, 1, HOUR_IN_SECONDS ); - return true; - } - } - - set_transient( $transient_key, 0, HOUR_IN_SECONDS ); - return false; - } - - /** - * Gets path to WordPress configuration. - * Source: https://github.com/wp-cli/wp-cli/blob/master/php/utils.php - * - * @return string - */ - public static function locate_wp_config() { - static $path; - - if ( null === $path ) { - $path = false; - - if ( getenv( 'WP_CONFIG_PATH' ) && file_exists( getenv( 'WP_CONFIG_PATH' ) ) ) { - $path = getenv( 'WP_CONFIG_PATH' ); - } elseif ( file_exists( ABSPATH . 'wp-config.php' ) ) { - $path = ABSPATH . 'wp-config.php'; - } elseif ( file_exists( dirname( ABSPATH ) . '/wp-config.php' ) && ! file_exists( dirname( ABSPATH ) . '/wp-settings.php' ) ) { - $path = dirname( ABSPATH ) . '/wp-config.php'; - } - - if ( $path ) { - $path = realpath( $path ); - } - } - - return $path; - } - - /** - * Adds `url_secret` to the `jetpack.idcUrlValidation` URL validation endpoint. - * Adds `url_secret_error` in case of an error. - * - * @param array $response The endpoint response that we're modifying. - * - * @return array - * - * phpcs:ignore Squiz.Commenting.FunctionCommentThrowTag -- The exception is being caught, false positive. - */ - public static function add_secret_to_url_validation_response( array $response ) { - try { - $secret = new URL_Secret(); - - $secret->create(); - - if ( $secret->exists() ) { - $response['url_secret'] = $secret->get_secret(); - } - } catch ( Exception $e ) { - $response['url_secret_error'] = new WP_Error( 'unable_to_create_url_secret', $e->getMessage() ); - } - - return $response; - } - - /** - * Check if URL is an IP. - * - * @param string $hostname The hostname to check. - * @return bool - */ - public static function url_is_ip( $hostname = null ) { - - if ( ! $hostname ) { - $hostname = wp_parse_url( Urls::site_url(), PHP_URL_HOST ); - } - - $is_ip = filter_var( $hostname, FILTER_VALIDATE_IP ) !== false ? $hostname : false; - return $is_ip; - } - - /** - * Add IDC-related data to the registration query. - * - * @param array $params The existing query params. - * - * @return array - */ - public static function register_request_body( array $params ) { - $persistent_blog_id = get_option( static::PERSISTENT_BLOG_ID_OPTION_NAME ); - if ( $persistent_blog_id ) { - $params['persistent_blog_id'] = $persistent_blog_id; - $params['url_secret'] = URL_Secret::create_secret( 'registration_request_url_secret_failed' ); - } - - return $params; - } - - /** - * Set the necessary options when site gets registered. - * - * @param int $blog_id The blog ID. - * - * @return void - */ - public static function site_registered( $blog_id ) { - update_option( static::PERSISTENT_BLOG_ID_OPTION_NAME, (int) $blog_id, false ); - } - - /** - * Check if we need to update the ip_requester option. - * - * @param string $hostname The hostname to check. - * - * @return void - */ - public static function maybe_update_ip_requester( $hostname ) { - // Check if transient exists - $transient_key = ip2long( $hostname ); - if ( $transient_key && ! get_transient( 'jetpack_idc_ip_requester_' . $transient_key ) ) { - self::set_ip_requester_for_idc( $hostname, $transient_key ); - } - } - - /** - * If URL is an IP, add the IP value to the ip_requester option with its expiry value. - * - * @param string $hostname The hostname to check. - * @param int $transient_key The transient key. - */ - public static function set_ip_requester_for_idc( $hostname, $transient_key ) { - // Check if option exists - $data = Jetpack_Options::get_option( 'identity_crisis_ip_requester' ); - - $ip_requester = array( - 'ip' => $hostname, - 'expires_at' => time() + 360, - ); - - // If not set, initialize it - if ( empty( $data ) ) { - $data = array( $ip_requester ); - } else { - $updated_data = array(); - $updated_value = false; - - // Remove expired values and update existing IP - foreach ( $data as $item ) { - if ( time() > $item['expires_at'] ) { - continue; // Skip expired IP - } - - if ( $item['ip'] === $hostname ) { - $item['expires_at'] = time() + 360; - $updated_value = true; - } - - $updated_data[] = $item; - } - - if ( ! $updated_value || empty( $updated_data ) ) { - $updated_data[] = $ip_requester; - } - - $data = $updated_data; - } - - self::update_ip_requester( $data, $transient_key ); - } - - /** - * Update the ip_requester option and set a transient to expire in 5 minutes. - * - * @param array $data The data to be updated. - * @param int $transient_key The transient key. - * - * @return void - */ - public static function update_ip_requester( $data, $transient_key ) { - // Update the option - $updated = Jetpack_Options::update_option( 'identity_crisis_ip_requester', $data ); - // Set a transient to expire in 5 minutes - if ( $updated ) { - $transient_name = 'jetpack_idc_ip_requester_' . $transient_key; - set_transient( $transient_name, $data, 300 ); - } - } - - /** - * Adds `ip_requester` to the `jetpack.idcUrlValidation` URL validation endpoint. - * - * @param array $response The enpoint response that we're modifying. - * - * @return array - */ - public static function add_ip_requester_to_url_validation_response( array $response ) { - $requesters = Jetpack_Options::get_option( 'identity_crisis_ip_requester' ); - if ( $requesters ) { - // Loop through the requesters and add the IP to the response if it's not expired - $i = 0; - foreach ( $requesters as $ip ) { - if ( $ip['expires_at'] > time() ) { - $response['ip_requester'][] = $ip['ip']; - } - // Limit the response to five IPs - $i = ++$i; - if ( $i === 5 ) { - break; - } - } - } - return $response; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-rest-endpoints.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-rest-endpoints.php deleted file mode 100644 index b3547811..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-rest-endpoints.php +++ /dev/null @@ -1,322 +0,0 @@ - WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::confirm_safe_mode', - 'permission_callback' => __CLASS__ . '::identity_crisis_mitigation_permission_check', - ) - ); - - // Handles the request to migrate stats and subscribers during an identity crisis. - register_rest_route( - 'jetpack/v4', - 'identity-crisis/migrate', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::migrate_stats_and_subscribers', - 'permission_callback' => __CLASS__ . '::identity_crisis_mitigation_permission_check', - ) - ); - - // IDC resolve: create an entirely new shadow site for this URL. - register_rest_route( - 'jetpack/v4', - '/identity-crisis/start-fresh', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::start_fresh_connection', - 'permission_callback' => __CLASS__ . '::identity_crisis_mitigation_permission_check', - 'args' => array( - 'redirect_uri' => array( - 'description' => __( 'URI of the admin page where the user should be redirected after connection flow', 'jetpack-connection' ), - 'type' => 'string', - ), - ), - ) - ); - - // Fetch URL and secret for IDC check. - register_rest_route( - 'jetpack/v4', - '/identity-crisis/idc-url-validation', - array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => array( static::class, 'validate_urls_and_set_secret' ), - 'permission_callback' => array( static::class, 'url_secret_permission_check' ), - ) - ); - - // Fetch URL verification secret. - register_rest_route( - 'jetpack/v4', - '/identity-crisis/url-secret', - array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => array( static::class, 'fetch_url_secret' ), - 'permission_callback' => array( static::class, 'url_secret_permission_check' ), - ) - ); - - // Fetch URL verification secret. - register_rest_route( - 'jetpack/v4', - '/identity-crisis/compare-url-secret', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => array( static::class, 'compare_url_secret' ), - 'permission_callback' => array( static::class, 'compare_url_secret_permission_check' ), - 'args' => array( - 'secret' => array( - 'description' => __( 'URL secret to compare to the ones stored in the database.', 'jetpack-connection' ), - 'type' => 'string', - 'required' => true, - ), - ), - ) - ); - } - - /** - * Handles identity crisis mitigation, confirming safe mode for this site. - * - * @since 0.2.0 - * @since-jetpack 4.4.0 - * - * @return bool | WP_Error True if option is properly set. - */ - public static function confirm_safe_mode() { - $updated = Jetpack_Options::update_option( 'safe_mode_confirmed', true ); - if ( $updated ) { - return rest_ensure_response( - array( - 'code' => 'success', - ) - ); - } - - return new WP_Error( - 'error_setting_jetpack_safe_mode', - esc_html__( 'Could not confirm safe mode.', 'jetpack-connection' ), - array( 'status' => 500 ) - ); - } - - /** - * Handles identity crisis mitigation, migrating stats and subscribers from old url to this, new url. - * - * @since 0.2.0 - * @since-jetpack 4.4.0 - * - * @return bool | WP_Error True if option is properly set. - */ - public static function migrate_stats_and_subscribers() { - if ( Jetpack_Options::get_option( 'sync_error_idc' ) && ! Jetpack_Options::delete_option( 'sync_error_idc' ) ) { - return new WP_Error( - 'error_deleting_sync_error_idc', - esc_html__( 'Could not delete sync error option.', 'jetpack-connection' ), - array( 'status' => 500 ) - ); - } - - if ( Jetpack_Options::get_option( 'migrate_for_idc' ) || Jetpack_Options::update_option( 'migrate_for_idc', true ) ) { - return rest_ensure_response( - array( - 'code' => 'success', - ) - ); - } - return new WP_Error( - 'error_setting_jetpack_migrate', - esc_html__( 'Could not confirm migration.', 'jetpack-connection' ), - array( 'status' => 500 ) - ); - } - - /** - * This IDC resolution will disconnect the site and re-connect to a completely new - * and separate shadow site than the original. - * - * It will first will disconnect the site without phoning home as to not disturb the production site. - * It then builds a fresh connection URL and sends it back along with the response. - * - * @since 0.2.0 - * @since-jetpack 4.4.0 - * - * @param \WP_REST_Request $request The request sent to the WP REST API. - * - * @return \WP_REST_Response|WP_Error - */ - public static function start_fresh_connection( $request ) { - /** - * Fires when Users have requested through Identity Crisis for the connection to be reset. - * Should be used to disconnect any connections and reset options. - * - * @since 0.2.0 - */ - do_action( 'jetpack_idc_disconnect' ); - - $connection = new Connection_Manager(); - $result = $connection->try_registration( true ); - - // early return if site registration fails. - if ( ! $result || is_wp_error( $result ) ) { - return rest_ensure_response( $result ); - } - - $redirect_uri = $request->get_param( 'redirect_uri' ) ? admin_url( $request->get_param( 'redirect_uri' ) ) : null; - - /** - * Filters the connection url that users should be redirected to for re-establishing their connection. - * - * @since 0.2.0 - * - * @param \WP_REST_Response|WP_Error $connection_url Connection URL user should be redirected to. - */ - return apply_filters( 'jetpack_idc_authorization_url', rest_ensure_response( $connection->get_authorization_url( null, $redirect_uri ) ) ); - } - - /** - * Verify that user can mitigate an identity crisis. - * - * @since 0.2.0 - * @since-jetpack 4.4.0 - * - * @return true|WP_Error True if the user has capability 'jetpack_disconnect', an error object otherwise. - */ - public static function identity_crisis_mitigation_permission_check() { - if ( current_user_can( 'jetpack_disconnect' ) ) { - return true; - } - $error_msg = esc_html__( - 'You do not have the correct user permissions to perform this action. - Please contact your site admin if you think this is a mistake.', - 'jetpack-connection' - ); - - return new WP_Error( 'invalid_user_permission_identity_crisis', $error_msg, array( 'status' => rest_authorization_required_code() ) ); - } - - /** - * Endpoint for URL validation and creating a secret. - * - * @since 0.18.0 - * - * @return array - */ - public static function validate_urls_and_set_secret() { - $xmlrpc_server = new Jetpack_XMLRPC_Server(); - $result = $xmlrpc_server->validate_urls_for_idc_mitigation(); - - return $result; - } - - /** - * Endpoint for fetching the existing secret. - * - * @return WP_Error|\WP_REST_Response - */ - public static function fetch_url_secret() { - $secret = new URL_Secret(); - - if ( ! $secret->exists() ) { - return new WP_Error( 'missing_url_secret', esc_html__( 'URL secret does not exist.', 'jetpack-connection' ) ); - } - - return rest_ensure_response( - array( - 'code' => 'success', - 'data' => array( - 'secret' => $secret->get_secret(), - 'expires_at' => $secret->get_expires_at(), - ), - ) - ); - } - - /** - * Endpoint for comparing the existing secret. - * - * @param \WP_REST_Request $request The request sent to the WP REST API. - * - * @return WP_Error|\WP_REST_Response - */ - public static function compare_url_secret( $request ) { - $match = false; - - $storage = new URL_Secret(); - - if ( $storage->exists() ) { - $remote_secret = $request->get_param( 'secret' ); - $match = $remote_secret && hash_equals( $storage->get_secret(), $remote_secret ); - } - - return rest_ensure_response( - array( - 'code' => 'success', - 'match' => $match, - ) - ); - } - - /** - * Verify url_secret create/fetch permissions (valid blog token authentication). - * - * @return true|WP_Error - */ - public static function url_secret_permission_check() { - return Rest_Authentication::is_signed_with_blog_token() - ? true - : new WP_Error( - 'invalid_user_permission_identity_crisis', - esc_html__( 'You do not have the correct user permissions to perform this action.', 'jetpack-connection' ), - array( 'status' => rest_authorization_required_code() ) - ); - } - - /** - * The endpoint is only available on non-connected sites. - * use `/identity-crisis/url-secret` for connected sites. - * - * @return true|WP_Error - */ - public static function compare_url_secret_permission_check() { - return ( new Connection_Manager() )->is_connected() - ? new WP_Error( - 'invalid_connection_status', - esc_html__( 'The endpoint is not available on connected sites.', 'jetpack-connection' ), - array( 'status' => 403 ) - ) - : true; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-ui.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-ui.php deleted file mode 100644 index da8e908d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-ui.php +++ /dev/null @@ -1,208 +0,0 @@ - true, - 'textdomain' => 'jetpack-connection', - ) - ); - Assets::enqueue_script( 'jp_identity_crisis_banner' ); - wp_add_inline_script( 'jp_identity_crisis_banner', static::get_initial_state(), 'before' ); - - add_action( 'admin_notices', array( static::class, 'render_container' ) ); - } - } - - /** - * Create the container element for the IDC banner. - */ - public static function render_container() { - ?> -
            - esc_url_raw( rest_url() ), - 'WP_API_nonce' => wp_create_nonce( 'wp_rest' ), - 'wpcomHomeUrl' => ( is_array( $idc_urls ) && array_key_exists( 'wpcom_url', $idc_urls ) ) ? $idc_urls['wpcom_url'] : null, - 'currentUrl' => ( is_array( $idc_urls ) && array_key_exists( 'current_url', $idc_urls ) ) ? $idc_urls['current_url'] : null, - 'redirectUri' => isset( $_SERVER['REQUEST_URI'] ) ? str_replace( '/wp-admin/', '/', filter_var( wp_unslash( $_SERVER['REQUEST_URI'] ) ) ) : '', - 'tracksUserData' => Jetpack_Tracks_Client::get_connected_user_tracks_identity(), - 'tracksEventData' => array( - 'isAdmin' => $is_admin, - 'currentScreen' => $current_screen ? $current_screen->id : false, - 'blogID' => Jetpack_Options::get_option( 'id' ), - 'platform' => static::get_platform(), - ), - 'isSafeModeConfirmed' => Identity_Crisis::$is_safe_mode_confirmed, - 'consumerData' => static::get_consumer_data(), - 'isAdmin' => $is_admin, - 'possibleDynamicSiteUrlDetected' => $possible_dynamic_site_url_detected, - 'isDevelopmentSite' => $is_development_site, - - /** - * Use the filter to provide custom HTML elecontainer ID. - * - * @since 0.10.0 - * - * @param string|null $containerID The container ID. - */ - 'containerID' => apply_filters( 'identity_crisis_container_id', null ), - ); - } - - /** - * Get the package consumer data. - * - * @return array - */ - public static function get_consumer_data() { - if ( null !== static::$consumers ) { - return static::$consumers; - } - - $consumers = apply_filters( 'jetpack_idc_consumers', array() ); - - if ( ! $consumers ) { - return array(); - } - - usort( - $consumers, - function ( $c1, $c2 ) { - $priority1 = ( array_key_exists( 'priority', $c1 ) && (int) $c1['priority'] ) ? (int) $c1['priority'] : 10; - $priority2 = ( array_key_exists( 'priority', $c2 ) && (int) $c2['priority'] ) ? (int) $c2['priority'] : 10; - - return $priority1 <=> $priority2; - } - ); - - $consumer_chosen = null; - $consumer_url_length = 0; - foreach ( $consumers as &$consumer ) { - if ( empty( $consumer['admin_page'] ) || ! is_string( $consumer['admin_page'] ) ) { - continue; - } - - if ( isset( $consumer['customContent'] ) && is_callable( $consumer['customContent'] ) ) { - $consumer['customContent'] = call_user_func( $consumer['customContent'] ); - } - - if ( isset( $_SERVER['REQUEST_URI'] ) && str_starts_with( filter_var( wp_unslash( $_SERVER['REQUEST_URI'] ) ), $consumer['admin_page'] ) && strlen( $consumer['admin_page'] ) > $consumer_url_length ) { - $consumer_chosen = $consumer; - $consumer_url_length = strlen( $consumer['admin_page'] ); - } - } - unset( $consumer ); - - static::$consumers = $consumer_chosen ? $consumer_chosen : array_shift( $consumers ); - - return static::$consumers; - } - - /** - * Get the site platform. - * - * @return string - */ - private static function get_platform() { - $host = new Host(); - - if ( $host->is_woa_site() ) { - return 'woa'; - } - - if ( $host->is_vip_site() ) { - return 'vip'; - } - - if ( $host->is_newspack_site() ) { - return 'newspack'; - } - - return 'self-hosted'; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-url-secret.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-url-secret.php deleted file mode 100644 index e2ff3f8b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-url-secret.php +++ /dev/null @@ -1,159 +0,0 @@ -fetch(); - - if ( $secret_data !== null ) { - $this->secret = $secret_data['secret']; - $this->expires_at = $secret_data['expires_at']; - } - } - - /** - * Fetch the URL secret from the database. - * - * @return array|null - */ - private function fetch() { - $data = Jetpack_Options::get_option( static::OPTION_KEY ); - - if ( $data === false || empty( $data['secret'] ) || empty( $data['expires_at'] ) ) { - return null; - } - - if ( time() > $data['expires_at'] ) { - Jetpack_Options::delete_option( static::OPTION_KEY ); - return null; - } - - return $data; - } - - /** - * Create new secret and save it in the options. - * - * @throws Exception Thrown if unable to save the new secret. - * - * @return bool - */ - public function create() { - $secret_data = array( - 'secret' => $this->generate_secret(), - 'expires_at' => strval( time() + static::LIFESPAN ), - ); - - $result = Jetpack_Options::update_option( static::OPTION_KEY, $secret_data ); - - if ( ! $result ) { - throw new Exception( esc_html__( 'Unable to save new URL secret', 'jetpack-connection' ) ); - } - - $this->secret = $secret_data['secret']; - $this->expires_at = $secret_data['expires_at']; - - return true; - } - - /** - * Get the URL secret. - * - * @return string|null - */ - public function get_secret() { - return $this->secret; - } - - /** - * Get the URL secret expiration date. - * - * @return string|null - */ - public function get_expires_at() { - return $this->expires_at; - } - - /** - * Check if the secret exists. - * - * @return bool - */ - public function exists() { - return $this->secret && $this->expires_at; - } - - /** - * Generate the secret string. - * - * @return string - */ - private function generate_secret() { - return wp_generate_password( 12, false ); - } - - /** - * Generate secret for response. - * - * @param string $flow used to tell which flow generated the exception. - * @return string|null - */ - public static function create_secret( $flow = 'generating_secret_failed' ) { - $secret_value = null; - try { - - $secret = new self(); - $secret->create(); - - if ( $secret->exists() ) { - $secret_value = $secret->get_secret(); - } - } catch ( Exception $e ) { - // Track the error and proceed. - ( new Tracking() )->record_user_event( $flow, array( 'current_url' => Urls::site_url() ) ); - } - return $secret_value; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/interface-manager.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/interface-manager.php deleted file mode 100644 index 804f3848..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/interface-manager.php +++ /dev/null @@ -1,17 +0,0 @@ -role = apply_filters( 'jetpack_force_2fa_cap', 'manage_options' ); - - // Bail if Jetpack SSO is not active - if ( ! ( new Modules() )->is_active( 'sso' ) ) { - add_action( 'admin_notices', array( $this, 'admin_notice' ) ); - return; - } - - $this->force_2fa(); - } - - /** - * Display an admin notice if Jetpack SSO is not active. - */ - public function admin_notice() { - /** - * Filter if an admin notice is deplayed when Force 2FA is required, but SSO is not enabled. - * Defaults to true. - * - * @param bool $display_notice Whether to display the notice. - * @return bool - * @since jetpack-12.7 - * @module SSO - */ - if ( apply_filters( 'jetpack_force_2fa_dependency_notice', true ) && current_user_can( $this->role ) ) { - wp_admin_notice( - esc_html__( 'Jetpack Force 2FA requires Jetpack’s SSO feature.', 'jetpack-connection' ), - array( - 'type' => 'warning', - ) - ); - } - } - - /** - * Force 2FA when using Jetpack SSO and force Jetpack SSO. - * - * @return void - */ - private function force_2fa() { - // Allows WP.com login to a local account if it matches the local account. - add_filter( 'jetpack_sso_match_by_email', '__return_true', 9999 ); - - // multisite - if ( is_multisite() ) { - - // Hide the login form - add_filter( 'jetpack_remove_login_form', '__return_true', 9999 ); - add_filter( 'jetpack_sso_bypass_login_forward_wpcom', '__return_true', 9999 ); - add_filter( 'jetpack_sso_display_disclaimer', '__return_false', 9999 ); - - add_filter( - 'wp_authenticate_user', - function () { - return new WP_Error( 'wpcom-required', $this->get_login_error_message() ); }, - 9999 - ); - - add_filter( 'jetpack_sso_require_two_step', '__return_true' ); - - add_filter( 'allow_password_reset', '__return_false' ); - } else { - // Not multisite. - - // Completely disable the standard login form for admins. - add_filter( - 'wp_authenticate_user', - function ( $user ) { - if ( is_wp_error( $user ) ) { - return $user; - } - if ( $user->has_cap( $this->role ) ) { - return new WP_Error( 'wpcom-required', $this->get_login_error_message(), $user->user_login ); - } - return $user; - }, - 9999 - ); - - add_filter( - 'allow_password_reset', - function ( $allow, $user_id ) { - if ( user_can( $user_id, $this->role ) ) { - return false; - } - return $allow; }, - 9999, - 2 - ); - - add_action( 'jetpack_sso_pre_handle_login', array( $this, 'jetpack_set_two_step' ) ); - } - } - - /** - * Specifically set the two step filter for Jetpack SSO. - * - * @param Object $user_data The user data from WordPress.com. - * - * @return void - */ - public function jetpack_set_two_step( $user_data ) { - $user = SSO::get_user_by_wpcom_id( $user_data->ID ); - - // Borrowed from Jetpack. Ignores the match_by_email setting. - if ( empty( $user ) ) { - $user = get_user_by( 'email', $user_data->email ); - } - - if ( $user && $user->has_cap( $this->role ) ) { - add_filter( 'jetpack_sso_require_two_step', '__return_true' ); - } - } - - /** - * Get the login error message. - * - * @return string - */ - private function get_login_error_message() { - /** - * Filter the login error message. - * Defaults to a message that explains the user must use a WordPress.com account with 2FA enabled. - * - * @param string $message The login error message. - * @return string - * @since jetpack-12.7 - * @module SSO - */ - return apply_filters( - 'jetpack_force_2fa_login_error_message', - sprintf( 'For added security, please log in using your WordPress.com account.

            Note: Your account must have Two Step Authentication enabled, which can be configured from Security Settings.', 'https://support.wordpress.com/security/two-step-authentication/', 'https://wordpress.com/me/security/two-step' ) - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/class-helpers.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/class-helpers.php deleted file mode 100644 index 2fdf7369..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/class-helpers.php +++ /dev/null @@ -1,387 +0,0 @@ - $original_request ) - ); - } - - /** - * Check if the site has a custom login page URL, and return it. - * If default login page URL is used (`wp-login.php`), `null` will be returned. - * - * @return string|null - */ - public static function get_custom_login_url() { - $login_url = wp_login_url(); - - if ( str_ends_with( $login_url, 'wp-login.php' ) ) { - // No custom URL found. - return null; - } - - $site_url = trailingslashit( site_url() ); - - if ( ! str_starts_with( $login_url, $site_url ) ) { - // Something went wrong, we can't properly extract the custom URL. - return null; - } - - // Extracting the "path" part of the URL, because we don't need the `site_url` part. - return str_ireplace( $site_url, '', $login_url ); - } - - /** - * Clear the cookies that store the profile information for the last - * WPCOM user to connect. - */ - public static function clear_wpcom_profile_cookies() { - if ( isset( $_COOKIE[ 'jetpack_sso_wpcom_name_' . COOKIEHASH ] ) ) { - setcookie( - 'jetpack_sso_wpcom_name_' . COOKIEHASH, - ' ', - time() - YEAR_IN_SECONDS, - COOKIEPATH, - COOKIE_DOMAIN, - is_ssl(), - true - ); - } - - if ( isset( $_COOKIE[ 'jetpack_sso_wpcom_gravatar_' . COOKIEHASH ] ) ) { - setcookie( - 'jetpack_sso_wpcom_gravatar_' . COOKIEHASH, - ' ', - time() - YEAR_IN_SECONDS, - COOKIEPATH, - COOKIE_DOMAIN, - is_ssl(), - true - ); - } - } - - /** - * Remove an SSO connection for a user. - * - * @param int $user_id The local user id. - */ - public static function delete_connection_for_user( $user_id ) { - $wpcom_user_id = get_user_meta( $user_id, 'wpcom_user_id', true ); - if ( ! $wpcom_user_id ) { - return; - } - - $xml = new Jetpack_IXR_Client( - array( - 'wpcom_user_id' => $user_id, - ) - ); - $xml->query( 'jetpack.sso.removeUser', $wpcom_user_id ); - - if ( $xml->isError() ) { - return false; - } - - // Clean up local data stored for SSO. - delete_user_meta( $user_id, 'wpcom_user_id' ); - delete_user_meta( $user_id, 'wpcom_user_data' ); - self::clear_wpcom_profile_cookies(); - - return $xml->getResponse(); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/class-notices.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/class-notices.php deleted file mode 100644 index 289ba6c7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/class-notices.php +++ /dev/null @@ -1,272 +0,0 @@ -Security Settings to configure Two-step Authentication for your account.', - 'jetpack-connection' - ), - array( 'a' => array( 'href' => array() ) ) - ), - Redirect::get_url( 'calypso-me-security-two-step' ), - Redirect::get_url( 'wpcom-support-security-two-step-authentication' ) - ); - - $message .= sprintf( '

            %s

            ', $error ); - - return $message; - } - - /** - * Error message displayed when the user tries to SSO, but match by email - * is off and they already have an account with their email address on - * this site. - * - * @param string $message Error message. - * @return string - */ - public static function error_msg_email_already_exists( $message ) { - $error = sprintf( - wp_kses( - /* translators: login URL */ - __( - 'You already have an account on this site. Please sign in with your username and password and then connect to WordPress.com.', - 'jetpack-connection' - ), - array( 'a' => array( 'href' => array() ) ) - ), - esc_url_raw( add_query_arg( 'jetpack-sso-show-default-form', '1', wp_login_url() ) ) - ); - - $message .= sprintf( '

            %s

            ', $error ); - - return $message; - } - - /** - * Error message that is displayed when the current site is in an identity crisis and SSO can not be used. - * - * @since jetpack-4.3.2 - * - * @param string $message Error Message. - * - * @return string - */ - public static function error_msg_identity_crisis( $message ) { - $error = esc_html__( 'Logging in with WordPress.com is not currently available because this site is experiencing connection problems.', 'jetpack-connection' ); - $message .= sprintf( '

            %s

            ', $error ); - return $message; - } - - /** - * Error message that is displayed when we are not able to verify the SSO nonce due to an XML error or - * failed validation. In either case, we prompt the user to try again or log in with username and password. - * - * @since jetpack-4.3.2 - * - * @param string $message Error message. - * - * @return string - */ - public static function error_invalid_response_data( $message ) { - $error = esc_html__( - 'There was an error logging you in via WordPress.com, please try again or try logging in with your username and password.', - 'jetpack-connection' - ); - $message .= sprintf( '

            %s

            ', $error ); - return $message; - } - - /** - * Error message that is displayed when we were not able to automatically create an account for a user - * after a user has logged in via SSO. By default, this message is triggered after trying to create an account 5 times. - * - * @since jetpack-4.3.2 - * - * @param string $message Error message. - * - * @return string - */ - public static function error_unable_to_create_user( $message ) { - $error = esc_html__( - 'There was an error creating a user for you. Please contact the administrator of your site.', - 'jetpack-connection' - ); - $message .= sprintf( '

            %s

            ', $error ); - return $message; - } - - /** - * When the default login form is hidden, this method is called on the 'authenticate' filter with a priority of 30. - * This method disables the ability to submit the default login form. - * - * @param WP_User|WP_Error $user Either the user attempting to login or an existing authentication failure. - * - * @return WP_Error - */ - public static function disable_default_login_form( $user ) { - if ( is_wp_error( $user ) ) { - return $user; - } - - /** - * Since we're returning an error that will be shown as a red notice, let's remove the - * informational "blue" notice. - */ - remove_filter( 'login_message', array( static::class, 'msg_login_by_jetpack' ) ); - return new WP_Error( 'jetpack_sso_required', self::get_sso_required_message() ); - } - - /** - * Message displayed when the site admin has disabled the default WordPress - * login form in Settings > General > Secure Sign On - * - * @since jetpack-2.7 - * @param string $message Error message. - * - * @return string - **/ - public static function msg_login_by_jetpack( $message ) { - $message .= sprintf( '

            %s

            ', self::get_sso_required_message() ); - return $message; - } - - /** - * Get the message for SSO required. - * - * @return string - */ - public static function get_sso_required_message() { - $msg = esc_html__( - 'A WordPress.com account is required to access this site. Click the button below to sign in or create a free WordPress.com account.', - 'jetpack-connection' - ); - - /** - * Filter the message displayed when the default WordPress login form is disabled. - * - * @module sso - * - * @since jetpack-2.8.0 - * - * @param string $msg Disclaimer when default WordPress login form is disabled. - */ - return apply_filters( 'jetpack_sso_disclaimer_message', $msg ); - } - - /** - * Message displayed when the user can not be found after approving the SSO process on WordPress.com - * - * @param string $message Error message. - * - * @return string - */ - public static function cant_find_user( $message ) { - $error = __( - "We couldn't find your account. If you already have an account, make sure you have connected to WordPress.com.", - 'jetpack-connection' - ); - - /** - * Filters the "couldn't find your account" notice after an attempted SSO. - * - * @module sso - * - * @since jetpack-10.5.0 - * - * @param string $error Error text. - */ - $error = apply_filters( 'jetpack_sso_unknown_user_notice', $error ); - - $message .= sprintf( '

            %s

            ', esc_html( $error ) ); - - return $message; - } - - /** - * Error message that is displayed when the current site is in an identity crisis and SSO can not be used. - * - * @since jetpack-4.4.0 - * @deprecated since 2.10.0 - * - * @param string $message Error message. - * - * @return string - */ - public static function sso_not_allowed_in_staging( $message ) { - _deprecated_function( __FUNCTION__, '2.10.0', 'sso_not_allowed_in_safe_mode' ); - $error = __( - 'Logging in with WordPress.com is disabled for sites that are in staging mode.', - 'jetpack-connection' - ); - - /** - * Filters the disallowed notice for staging sites attempting SSO. - * - * @module sso - * - * @since jetpack-10.5.0 - * - * @param string $error Error text. - */ - $error = apply_filters_deprecated( 'jetpack_sso_disallowed_staging_notice', array( $error ), '2.9.1', 'jetpack_sso_disallowed_safe_mode_notice' ); - $message .= sprintf( '

            %s

            ', esc_html( $error ) ); - return $message; - } - - /** - * Error message that is displayed when the current site is in an identity crisis and SSO can not be used. - * - * @since 2.10.0 - * - * @param string $message Error message. - * - * @return string - */ - public static function sso_not_allowed_in_safe_mode( $message ) { - $error = __( - 'Logging in with WordPress.com is disabled for sites that are in safe mode.', - 'jetpack-connection' - ); - - /** - * Filters the disallowed notice for sites in safe mode attempting SSO. - * - * @module sso - * - * @since 2.10.0 - * - * @param string $error Error text. - */ - $error = apply_filters( 'jetpack_sso_disallowed_safe_mode_notice', $error ); - $message .= sprintf( '

            %s

            ', esc_html( $error ) ); - return $message; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/class-sso.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/class-sso.php deleted file mode 100644 index 5fddfccc..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/class-sso.php +++ /dev/null @@ -1,1276 +0,0 @@ -is_user_connected() && - ! is_multisite() && - /** - * Toggle the ability to invite new users to create a WordPress.com account. - * - * @module sso - * - * @since 2.7.2 - * - * @param bool true Whether to allow admins to invite new users to create a WordPress.com account. - */ - apply_filters( 'jetpack_sso_invite_new_users_wpcom', true ) - ) { - new User_Admin(); - } - } - - /** - * Returns the single instance of the Automattic\Jetpack\Connection\SSO object - * - * @since jetpack-2.8 - * @return \Automattic\Jetpack\Connection\SSO - */ - public static function get_instance() { - if ( self::$instance !== null ) { - return self::$instance; - } - - self::$instance = new SSO(); - return self::$instance; - } - - /** - * Add SSO callables to the sync whitelist. - * - * @since 2.8.1 - * - * @param array $callables list of callables. - * - * @return array list of callables. - */ - public function sync_sso_callables( $callables ) { - $sso_callables = array( - 'sso_is_two_step_required' => array( Helpers::class, 'is_two_step_required' ), - 'sso_should_hide_login_form' => array( Helpers::class, 'should_hide_login_form' ), - 'sso_match_by_email' => array( Helpers::class, 'match_by_email' ), - 'sso_new_user_override' => array( Helpers::class, 'new_user_override' ), - 'sso_bypass_default_login_form' => array( Helpers::class, 'bypass_login_forward_wpcom' ), - ); - - return array_merge( $callables, $sso_callables ); - } - - /** - * Safety heads-up added to the logout messages when SSO is enabled. - * Some folks on a shared computer don't know that they need to log out of WordPress.com as well. - * - * @param WP_Error $errors WP_Error object. - */ - public function sso_reminder_logout_wpcom( $errors ) { - if ( ( new Host() )->is_wpcom_platform() ) { - return $errors; - } - - if ( ! empty( $errors->errors['loggedout'] ) ) { - $logout_message = wp_kses( - sprintf( - /* translators: %1$s is a link to the WordPress.com account settings page. */ - __( 'If you are on a shared computer, remember to also log out of WordPress.com.', 'jetpack-connection' ), - 'https://wordpress.com/me' - ), - array( - 'a' => array( - 'href' => array(), - ), - ) - ); - $errors->add( 'jetpack-sso-show-logout', $logout_message, 'message' ); - } - return $errors; - } - - /** - * If jetpack_force_logout == 1 in current user meta the user will be forced - * to logout and reauthenticate with the site. - **/ - public function maybe_logout_user() { - global $current_user; - - if ( 1 === (int) $current_user->jetpack_force_logout ) { - delete_user_meta( $current_user->ID, 'jetpack_force_logout' ); - Helpers::delete_connection_for_user( $current_user->ID ); - wp_logout(); - wp_safe_redirect( wp_login_url() ); - exit( 0 ); - } - } - - /** - * Adds additional methods the WordPress xmlrpc API for handling SSO specific features - * - * @param array $methods API methods. - * @return array - **/ - public function xmlrpc_methods( $methods ) { - $methods['jetpack.userDisconnect'] = array( $this, 'xmlrpc_user_disconnect' ); - return $methods; - } - - /** - * Marks a user's profile for disconnect from WordPress.com and forces a logout - * the next time the user visits the site. - * - * @param int $user_id User to disconnect from the site. - **/ - public function xmlrpc_user_disconnect( $user_id ) { - $user_query = new WP_User_Query( - array( - 'meta_key' => 'wpcom_user_id', - 'meta_value' => $user_id, - ) - ); - $user = $user_query->get_results(); - $user = $user[0]; - - if ( $user instanceof WP_User ) { - $user = wp_set_current_user( $user->ID ); - update_user_meta( $user->ID, 'jetpack_force_logout', '1' ); - Helpers::delete_connection_for_user( $user->ID ); - return true; - } - return false; - } - - /** - * Enqueues scripts and styles necessary for SSO login. - */ - public function login_enqueue_scripts() { - global $action; - - if ( ! Helpers::display_sso_form_for_action( $action ) ) { - return; - } - - Assets::register_script( - 'jetpack-sso-login', - '../../dist/jetpack-sso-login.js', - __FILE__, - array( - 'enqueue' => true, - 'version' => Package_Version::PACKAGE_VERSION, - ) - ); - } - - /** - * Adds Jetpack SSO classes to login body - * - * @param array $classes Array of classes to add to body tag. - * @return array Array of classes to add to body tag. - */ - public function login_body_class( $classes ) { - global $action; - - if ( ! Helpers::display_sso_form_for_action( $action ) ) { - return $classes; - } - - // Always add the jetpack-sso class so that we can add SSO specific styling even when the SSO form isn't being displayed. - $classes[] = 'jetpack-sso'; - - if ( ! ( new Status() )->in_safe_mode() ) { - /** - * Should we show the SSO login form? - * - * $_GET['jetpack-sso-default-form'] is used to provide a fallback in case JavaScript is not enabled. - * - * The default_to_sso_login() method allows us to dynamically decide whether we show the SSO login form or not. - * The SSO module uses the method to display the default login form if we can not find a user to log in via SSO. - * But, the method could be filtered by a site admin to always show the default login form if that is preferred. - */ - if ( empty( $_GET['jetpack-sso-show-default-form'] ) && Helpers::show_sso_login() ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended - $classes[] = 'jetpack-sso-form-display'; - } - } - - return $classes; - } - - /** - * Inlined admin styles for SSO. - */ - public function print_inline_admin_css() { - ?> - - General > Secure Sign On that allows users to - * turn off the login form on wp-login.php - * - * @since jetpack-2.7 - **/ - public function register_settings() { - - add_settings_section( - 'jetpack_sso_settings', - __( 'Secure Sign On', 'jetpack-connection' ), - '__return_false', - 'jetpack-sso' - ); - - /* - * Settings > General > Secure Sign On - * Require two step authentication - */ - register_setting( - 'jetpack-sso', - 'jetpack_sso_require_two_step', - array( $this, 'validate_jetpack_sso_require_two_step' ) - ); - - add_settings_field( - 'jetpack_sso_require_two_step', - '', // Output done in render $callback: __( 'Require Two-Step Authentication' , 'jetpack-connection' ). - array( $this, 'render_require_two_step' ), - 'jetpack-sso', - 'jetpack_sso_settings' - ); - - /* - * Settings > General > Secure Sign On - */ - register_setting( - 'jetpack-sso', - 'jetpack_sso_match_by_email', - array( $this, 'validate_jetpack_sso_match_by_email' ) - ); - - add_settings_field( - 'jetpack_sso_match_by_email', - '', // Output done in render $callback: __( 'Match by Email' , 'jetpack-connection' ). - array( $this, 'render_match_by_email' ), - 'jetpack-sso', - 'jetpack_sso_settings' - ); - } - - /** - * Builds the display for the checkbox allowing user to require two step - * auth be enabled on WordPress.com accounts before login. Displays in Settings > General - * - * @since jetpack-2.7 - **/ - public function render_require_two_step() { - ?> - - General. - * - * @param bool $input The jetpack_sso_require_two_step option setting. - * - * @since jetpack-2.7 - * @return int - **/ - public function validate_jetpack_sso_require_two_step( $input ) { - return ( ! empty( $input ) ) ? 1 : 0; - } - - /** - * Builds the display for the checkbox allowing the user to allow matching logins by email - * Displays in Settings > General - * - * @since jetpack-2.9 - **/ - public function render_match_by_email() { - ?> - - General. - * - * @param bool $input The jetpack_sso_match_by_email option setting. - * - * @since jetpack-2.9 - * @return int - **/ - public function validate_jetpack_sso_match_by_email( $input ) { - return ( ! empty( $input ) ) ? 1 : 0; - } - - /** - * Checks to determine if the user wants to login on wp-login - * - * This function mostly exists to cover the exceptions to login - * that may exist as other parameters to $_GET[action] as $_GET[action] - * does not have to exist. By default WordPress assumes login if an action - * is not set, however this may not be true, as in the case of logout - * where $_GET[loggedout] is instead set - * - * @return boolean - **/ - private function wants_to_login() { - $wants_to_login = false; - - // Cover default WordPress behavior. - $action = isset( $_REQUEST['action'] ) ? filter_var( wp_unslash( $_REQUEST['action'] ) ) : 'login'; // phpcs:ignore WordPress.Security.NonceVerification.Recommended - - // And now the exceptions. - $action = isset( $_GET['loggedout'] ) ? 'loggedout' : $action; // phpcs:ignore WordPress.Security.NonceVerification.Recommended - - if ( Helpers::display_sso_form_for_action( $action ) ) { - $wants_to_login = true; - } - - return $wants_to_login; - } - - /** - * Initialization for a SSO request. - */ - public function login_init() { - global $action; - - $tracking = new Tracking(); - - if ( Helpers::should_hide_login_form() ) { - /** - * Since the default authenticate filters fire at priority 20 for checking username and password, - * let's fire at priority 30. wp_authenticate_spam_check is fired at priority 99, but since we return a - * WP_Error in disable_default_login_form, then we won't trigger spam processing logic. - */ - add_filter( 'authenticate', array( Notices::class, 'disable_default_login_form' ), 30 ); - - /** - * Filter the display of the disclaimer message appearing when default WordPress login form is disabled. - * - * @module sso - * - * @since jetpack-2.8.0 - * - * @param bool true Should the disclaimer be displayed. Default to true. - */ - $display_sso_disclaimer = apply_filters( 'jetpack_sso_display_disclaimer', true ); - if ( $display_sso_disclaimer ) { - add_filter( 'login_message', array( Notices::class, 'msg_login_by_jetpack' ) ); - } - } - - if ( 'jetpack-sso' === $action ) { - if ( isset( $_GET['result'] ) && isset( $_GET['user_id'] ) && isset( $_GET['sso_nonce'] ) && 'success' === $_GET['result'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended - $this->handle_login(); - $this->display_sso_login_form(); - } elseif ( ( new Status() )->in_safe_mode() ) { - add_filter( 'login_message', array( Notices::class, 'sso_not_allowed_in_safe_mode' ) ); - } else { - // Is it wiser to just use wp_redirect than do this runaround to wp_safe_redirect? - add_filter( 'allowed_redirect_hosts', array( Helpers::class, 'allowed_redirect_hosts' ) ); - $reauth = ! empty( $_GET['force_reauth'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended - $sso_url = $this->get_sso_url_or_die( $reauth ); - - $tracking->record_user_event( 'sso_login_redirect_success' ); - wp_safe_redirect( $sso_url ); - exit( 0 ); - } - } elseif ( Helpers::display_sso_form_for_action( $action ) ) { - - // Save cookies so we can handle redirects after SSO. - static::save_cookies(); - - /** - * Check to see if the site admin wants to automagically forward the user - * to the WordPress.com login page AND that the request to wp-login.php - * is not something other than login (Like logout!) - */ - if ( Helpers::bypass_login_forward_wpcom() && $this->wants_to_login() ) { - add_filter( 'allowed_redirect_hosts', array( Helpers::class, 'allowed_redirect_hosts' ) ); - $reauth = ! empty( $_GET['force_reauth'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended - $sso_url = $this->get_sso_url_or_die( $reauth ); - $tracking->record_user_event( 'sso_login_redirect_bypass_success' ); - wp_safe_redirect( $sso_url ); - exit( 0 ); - } - - $this->display_sso_login_form(); - } - } - - /** - * Ensures that we can get a nonce from WordPress.com via XML-RPC before setting - * up the hooks required to display the SSO form. - */ - public function display_sso_login_form() { - add_filter( 'login_body_class', array( $this, 'login_body_class' ) ); - add_action( 'login_head', array( $this, 'print_inline_admin_css' ) ); - - if ( ( new Status() )->in_safe_mode() ) { - add_filter( 'login_message', array( Notices::class, 'sso_not_allowed_in_safe_mode' ) ); - return; - } - - $sso_nonce = self::request_initial_nonce(); - if ( is_wp_error( $sso_nonce ) ) { - return; - } - - add_action( 'login_form', array( $this, 'login_form' ) ); - add_action( 'login_enqueue_scripts', array( $this, 'login_enqueue_scripts' ) ); - } - - /** - * Conditionally save the redirect_to url as a cookie. - * - * @since jetpack-4.6.0 Renamed to save_cookies from maybe_save_redirect_cookies - */ - public static function save_cookies() { - if ( headers_sent() ) { - return new WP_Error( 'headers_sent', __( 'Cannot deal with cookie redirects, as headers are already sent.', 'jetpack-connection' ) ); - } - - setcookie( - 'jetpack_sso_original_request', - // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Sniff misses the wrapping esc_url_raw(). - esc_url_raw( set_url_scheme( ( isset( $_SERVER['HTTP_HOST'] ) ? wp_unslash( $_SERVER['HTTP_HOST'] ) : '' ) . ( isset( $_SERVER['REQUEST_URI'] ) ? wp_unslash( $_SERVER['REQUEST_URI'] ) : '' ) ) ), - time() + HOUR_IN_SECONDS, - COOKIEPATH, - COOKIE_DOMAIN, - is_ssl(), - true - ); - - if ( ! empty( $_GET['redirect_to'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended - // If we have something to redirect to. - $url = esc_url_raw( wp_unslash( $_GET['redirect_to'] ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended - setcookie( 'jetpack_sso_redirect_to', $url, time() + HOUR_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN, is_ssl(), true ); - } elseif ( ! empty( $_COOKIE['jetpack_sso_redirect_to'] ) ) { - // Otherwise, if it's already set, purge it. - setcookie( 'jetpack_sso_redirect_to', ' ', time() - YEAR_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN, is_ssl(), true ); - } - } - - /** - * Outputs the Jetpack SSO button and description as well as the toggle link - * for switching between Jetpack SSO and default login. - */ - public function login_form() { - $site_name = get_bloginfo( 'name' ); - if ( ! $site_name ) { - $site_name = get_bloginfo( 'url' ); - } - - $display_name = ! empty( $_COOKIE[ 'jetpack_sso_wpcom_name_' . COOKIEHASH ] ) - ? sanitize_text_field( wp_unslash( $_COOKIE[ 'jetpack_sso_wpcom_name_' . COOKIEHASH ] ) ) - : false; - $gravatar = ! empty( $_COOKIE[ 'jetpack_sso_wpcom_gravatar_' . COOKIEHASH ] ) - ? esc_url_raw( wp_unslash( $_COOKIE[ 'jetpack_sso_wpcom_gravatar_' . COOKIEHASH ] ) ) - : false; - - ?> -
            - -
            - - -

            - %s', 'jetpack-connection' ), esc_html( $display_name ) ), - array( 'span' => true ) - ); - ?> -

            -
            - - - - -
            - build_sso_button( array(), true ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Escaping done in build_sso_button() ?> - - - - - - -

            - -

            - -
            - - -
            - -
            - - - - - - - - - -
            - is_user_connected() ) { - Helpers::delete_connection_for_user( get_current_user_id() ); - } - } - - /** - * Retrieves nonce used for SSO form. - * - * @return string|WP_Error - */ - public static function request_initial_nonce() { - $nonce = ! empty( $_COOKIE['jetpack_sso_nonce'] ) - ? sanitize_key( wp_unslash( $_COOKIE['jetpack_sso_nonce'] ) ) - : false; - - if ( ! $nonce ) { - $xml = new Jetpack_IXR_Client(); - $xml->query( 'jetpack.sso.requestNonce' ); - - if ( $xml->isError() ) { - return new WP_Error( $xml->getErrorCode(), $xml->getErrorMessage() ); - } - - $nonce = sanitize_key( $xml->getResponse() ); - - setcookie( - 'jetpack_sso_nonce', - $nonce, - time() + ( 10 * MINUTE_IN_SECONDS ), - COOKIEPATH, - COOKIE_DOMAIN, - is_ssl(), - true - ); - } - - return $nonce; - } - - /** - * The function that actually handles the login! - */ - public function handle_login() { - $wpcom_nonce = isset( $_GET['sso_nonce'] ) ? sanitize_key( $_GET['sso_nonce'] ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended - $wpcom_user_id = isset( $_GET['user_id'] ) ? (int) $_GET['user_id'] : 0; // phpcs:ignore WordPress.Security.NonceVerification.Recommended - - $xml = new Jetpack_IXR_Client(); - $xml->query( 'jetpack.sso.validateResult', $wpcom_nonce, $wpcom_user_id ); - - $user_data = $xml->isError() ? false : $xml->getResponse(); - if ( empty( $user_data ) ) { - add_filter( 'jetpack_sso_default_to_sso_login', '__return_false' ); - add_filter( 'login_message', array( Notices::class, 'error_invalid_response_data' ) ); - return; - } - - $user_data = (object) $user_data; - $user = null; - - /** - * Fires before Jetpack's SSO modifies the log in form. - * - * @module sso - * - * @since jetpack-2.6.0 - * - * @param object $user_data WordPress.com User information. - */ - do_action( 'jetpack_sso_pre_handle_login', $user_data ); - - $tracking = new Tracking(); - - if ( Helpers::is_two_step_required() && 0 === (int) $user_data->two_step_enabled ) { - $this->user_data = $user_data; - - $tracking->record_user_event( - 'sso_login_failed', - array( - 'error_message' => 'error_msg_enable_two_step', - ) - ); - - $error = new WP_Error( 'two_step_required', __( 'You must have Two-Step Authentication enabled on your WordPress.com account.', 'jetpack-connection' ) ); - - /** This filter is documented in core/src/wp-includes/pluggable.php */ - do_action( 'wp_login_failed', $user_data->login, $error ); - add_filter( 'login_message', array( Notices::class, 'error_msg_enable_two_step' ) ); - return; - } - - $user_found_with = ''; - if ( empty( $user ) && isset( $user_data->external_user_id ) ) { - $user_found_with = 'external_user_id'; - $user = get_user_by( 'id', (int) $user_data->external_user_id ); - if ( $user ) { - $expected_id = get_user_meta( $user->ID, 'wpcom_user_id', true ); - if ( $expected_id && $expected_id != $user_data->ID ) { // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison, Universal.Operators.StrictComparisons.LooseNotEqual - $error = new WP_Error( 'expected_wpcom_user', __( 'Something got a little mixed up and an unexpected WordPress.com user logged in.', 'jetpack-connection' ) ); - - $tracking->record_user_event( - 'sso_login_failed', - array( - 'error_message' => 'error_unexpected_wpcom_user', - ) - ); - - /** This filter is documented in core/src/wp-includes/pluggable.php */ - do_action( 'wp_login_failed', $user_data->login, $error ); - add_filter( 'login_message', array( Notices::class, 'error_invalid_response_data' ) ); // @todo Need to have a better notice. This is only for the sake of testing the validation. - return; - } - update_user_meta( $user->ID, 'wpcom_user_id', $user_data->ID ); - } - } - - // If we don't have one by wpcom_user_id, try by the email? - if ( empty( $user ) && Helpers::match_by_email() ) { - $user_found_with = 'match_by_email'; - $user = get_user_by( 'email', $user_data->email ); - if ( $user ) { - update_user_meta( $user->ID, 'wpcom_user_id', $user_data->ID ); - } - } - - // If we've still got nothing, create the user. - $new_user_override_role = Helpers::new_user_override( $user_data ); - if ( empty( $user ) && ( get_option( 'users_can_register' ) || $new_user_override_role ) ) { - /** - * If not matching by email we still need to verify the email does not exist - * or this blows up - * - * If match_by_email is true, we know the email doesn't exist, as it would have - * been found in the first pass. If get_user_by( 'email' ) doesn't find the - * user, then we know that email is unused, so it's safe to add. - */ - if ( Helpers::match_by_email() || ! get_user_by( 'email', $user_data->email ) ) { - - if ( $new_user_override_role ) { - $user_data->role = $new_user_override_role; - } - - $user = Utils::generate_user( $user_data ); - if ( ! $user ) { - $tracking->record_user_event( - 'sso_login_failed', - array( - 'error_message' => 'could_not_create_username', - ) - ); - add_filter( 'login_message', array( Notices::class, 'error_unable_to_create_user' ) ); - return; - } - - $user_found_with = $new_user_override_role - ? 'user_created_new_user_override' - : 'user_created_users_can_register'; - } else { - $tracking->record_user_event( - 'sso_login_failed', - array( - 'error_message' => 'error_msg_email_already_exists', - ) - ); - - $this->user_data = $user_data; - add_action( 'login_message', array( Notices::class, 'error_msg_email_already_exists' ) ); - return; - } - } - - /** - * Fires after we got login information from WordPress.com. - * - * @module sso - * - * @since jetpack-2.6.0 - * - * @param WP_User|false|null $user Local User information. - * @param object $user_data WordPress.com User Login information. - */ - do_action( 'jetpack_sso_handle_login', $user, $user_data ); - - if ( $user ) { - // Cache the user's details, so we can present it back to them on their user screen. - update_user_meta( $user->ID, 'wpcom_user_data', $user_data ); - - add_filter( 'auth_cookie_expiration', array( Helpers::class, 'extend_auth_cookie_expiration_for_sso' ) ); - wp_set_auth_cookie( $user->ID, true ); - remove_filter( 'auth_cookie_expiration', array( Helpers::class, 'extend_auth_cookie_expiration_for_sso' ) ); - - /** This filter is documented in core/src/wp-includes/user.php */ - do_action( 'wp_login', $user->user_login, $user ); - - wp_set_current_user( $user->ID ); - - $_request_redirect_to = isset( $_REQUEST['redirect_to'] ) ? esc_url_raw( wp_unslash( $_REQUEST['redirect_to'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended - $redirect_to = user_can( $user, 'edit_posts' ) ? admin_url() : self::profile_page_url(); - - // If we have a saved redirect to request in a cookie. - if ( ! empty( $_COOKIE['jetpack_sso_redirect_to'] ) ) { - // Set that as the requested redirect to. - $redirect_to = esc_url_raw( wp_unslash( $_COOKIE['jetpack_sso_redirect_to'] ) ); - $_request_redirect_to = $redirect_to; - } - - $json_api_auth_environment = Helpers::get_json_api_auth_environment(); - - $is_json_api_auth = ! empty( $json_api_auth_environment ); - $is_user_connected = ( new Manager() )->is_user_connected( $user->ID ); - $roles = new Roles(); - $tracking->record_user_event( - 'sso_user_logged_in', - array( - 'user_found_with' => $user_found_with, - 'user_connected' => (bool) $is_user_connected, - 'user_role' => $roles->translate_current_user_to_role(), - 'is_json_api_auth' => $is_json_api_auth, - ) - ); - - if ( $is_json_api_auth ) { - $authorize_json_api = new Authorize_Json_Api(); - $authorize_json_api->verify_json_api_authorization_request( $json_api_auth_environment ); - $authorize_json_api->store_json_api_authorization_token( $user->user_login, $user ); - - } elseif ( ! $is_user_connected ) { - wp_safe_redirect( - add_query_arg( - array( - 'redirect_to' => $redirect_to, - 'request_redirect_to' => $_request_redirect_to, - 'calypso_env' => ( new Host() )->get_calypso_env(), - 'jetpack-sso-auth-redirect' => '1', - ), - admin_url() - ) - ); - exit( 0 ); - } - - add_filter( 'allowed_redirect_hosts', array( Helpers::class, 'allowed_redirect_hosts' ) ); - wp_safe_redirect( - /** This filter is documented in core/src/wp-login.php */ - apply_filters( 'login_redirect', $redirect_to, $_request_redirect_to, $user ) - ); - exit( 0 ); - } - - add_filter( 'jetpack_sso_default_to_sso_login', '__return_false' ); - - $tracking->record_user_event( - 'sso_login_failed', - array( - 'error_message' => 'cant_find_user', - ) - ); - - $this->user_data = $user_data; - - $error = new WP_Error( 'account_not_found', __( 'Account not found. If you already have an account, make sure you have connected to WordPress.com.', 'jetpack-connection' ) ); - - /** This filter is documented in core/src/wp-includes/pluggable.php */ - do_action( 'wp_login_failed', $user_data->login, $error ); - add_filter( 'login_message', array( Notices::class, 'cant_find_user' ) ); - } - - /** - * Retrieve the admin profile page URL. - */ - public static function profile_page_url() { - return admin_url( 'profile.php' ); - } - - /** - * Builds the "Login to WordPress.com" button that is displayed on the login page as well as user profile page. - * - * @param array $args An array of arguments to add to the SSO URL. - * @param boolean $is_primary If the button have the `button-primary` class. - * @return string Returns the HTML markup for the button. - */ - public function build_sso_button( $args = array(), $is_primary = false ) { - $url = $this->build_sso_button_url( $args ); - $classes = $is_primary - ? 'jetpack-sso button button-primary' - : 'jetpack-sso button'; - - return sprintf( - '%3$s %4$s', - esc_url( $url ), - $classes, - '', - esc_html__( 'Log in with WordPress.com', 'jetpack-connection' ) - ); - } - - /** - * Builds a URL with `jetpack-sso` action and option args which is used to setup SSO. - * - * @param array $args An array of arguments to add to the SSO URL. - * @return string The URL used for SSO. - */ - public function build_sso_button_url( $args = array() ) { - $defaults = array( - 'action' => 'jetpack-sso', - ); - - $args = wp_parse_args( $args, $defaults ); - - if ( ! empty( $_GET['redirect_to'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended - $args['redirect_to'] = rawurlencode( esc_url_raw( wp_unslash( $_GET['redirect_to'] ) ) ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended - } - - return add_query_arg( $args, wp_login_url() ); - } - - /** - * Retrieves a WordPress.com SSO URL with appropriate query parameters or dies. - * - * @param boolean $reauth If the user be forced to reauthenticate on WordPress.com. - * @param array $args Optional query parameters. - * @return string The WordPress.com SSO URL. - */ - public function get_sso_url_or_die( $reauth = false, $args = array() ) { - $custom_login_url = Helpers::get_custom_login_url(); - if ( $custom_login_url ) { - $args['login_url'] = rawurlencode( $custom_login_url ); - } - - if ( empty( $reauth ) ) { - $sso_redirect = $this->build_sso_url( $args ); - } else { - Helpers::clear_wpcom_profile_cookies(); - $sso_redirect = $this->build_reauth_and_sso_url( $args ); - } - - // If there was an error retrieving the SSO URL, then error. - if ( is_wp_error( $sso_redirect ) ) { - $error_message = sanitize_text_field( - sprintf( '%s: %s', $sso_redirect->get_error_code(), $sso_redirect->get_error_message() ) - ); - $tracking = new Tracking(); - $tracking->record_user_event( - 'sso_login_redirect_failed', - array( - 'error_message' => $error_message, - ) - ); - wp_die( esc_html( $error_message ) ); - } - - return $sso_redirect; - } - - /** - * Build WordPress.com SSO URL with appropriate query parameters. - * - * @param array $args Optional query parameters. - * @return string|WP_Error WordPress.com SSO URL - */ - public function build_sso_url( $args = array() ) { - $sso_nonce = ! empty( $args['sso_nonce'] ) ? $args['sso_nonce'] : self::request_initial_nonce(); - $defaults = array( - 'action' => 'jetpack-sso', - 'site_id' => Manager::get_site_id( true ), - 'sso_nonce' => $sso_nonce, - 'calypso_auth' => '1', - ); - - $args = wp_parse_args( $args, $defaults ); - - if ( is_wp_error( $sso_nonce ) ) { - return $sso_nonce; - } - - return add_query_arg( $args, 'https://wordpress.com/wp-login.php' ); - } - - /** - * Build WordPress.com SSO URL with appropriate query parameters, - * including the parameters necessary to force the user to reauthenticate - * on WordPress.com. - * - * @param array $args Optional query parameters. - * @return string|WP_Error WordPress.com SSO URL - */ - public function build_reauth_and_sso_url( $args = array() ) { - $sso_nonce = ! empty( $args['sso_nonce'] ) ? $args['sso_nonce'] : self::request_initial_nonce(); - $redirect = $this->build_sso_url( - array( - 'force_auth' => '1', - 'sso_nonce' => $sso_nonce, - ) - ); - - if ( is_wp_error( $redirect ) ) { - return $redirect; - } - - $defaults = array( - 'action' => 'jetpack-sso', - 'site_id' => Manager::get_site_id( true ), - 'sso_nonce' => $sso_nonce, - 'reauth' => '1', - 'redirect_to' => rawurlencode( $redirect ), - 'calypso_auth' => '1', - ); - - $args = wp_parse_args( $args, $defaults ); - - if ( is_wp_error( $args['sso_nonce'] ) ) { - return $args['sso_nonce']; - } - - return add_query_arg( $args, 'https://wordpress.com/wp-login.php' ); - } - - /** - * Determines local user associated with a given WordPress.com user ID. - * - * @since jetpack-2.6.0 - * - * @param int $wpcom_user_id User ID from WordPress.com. - * @return null|object Local user object if found, null if not. - */ - public static function get_user_by_wpcom_id( $wpcom_user_id ) { - $user_query = new WP_User_Query( - array( - 'meta_key' => 'wpcom_user_id', - 'meta_value' => (int) $wpcom_user_id, - 'number' => 1, - ) - ); - - $users = $user_query->get_results(); - return $users ? array_shift( $users ) : null; - } - - /** - * When jetpack-sso-auth-redirect query parameter is set, will redirect user to - * WordPress.com authorization flow. - * - * We redirect here instead of in handle_login() because Jetpack::init()->build_connect_url - * calls menu_page_url() which doesn't work properly until admin menus are registered. - */ - public function maybe_authorize_user_after_sso() { - if ( empty( $_GET['jetpack-sso-auth-redirect'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended - return; - } - - $redirect_to = ! empty( $_GET['redirect_to'] ) ? esc_url_raw( wp_unslash( $_GET['redirect_to'] ) ) : admin_url(); // phpcs:ignore WordPress.Security.NonceVerification.Recommended - $request_redirect_to = ! empty( $_GET['request_redirect_to'] ) ? esc_url_raw( wp_unslash( $_GET['request_redirect_to'] ) ) : $redirect_to; // phpcs:ignore WordPress.Security.NonceVerification.Recommended - - /** This filter is documented in core/src/wp-login.php */ - $redirect_after_auth = apply_filters( 'login_redirect', $redirect_to, $request_redirect_to, wp_get_current_user() ); - - /** - * Since we are passing this redirect to WordPress.com and therefore can not use wp_safe_redirect(), - * let's sanitize it here to make sure it's safe. If the redirect is not safe, then use admin_url(). - */ - $redirect_after_auth = wp_sanitize_redirect( $redirect_after_auth ); - $redirect_after_auth = wp_validate_redirect( $redirect_after_auth, admin_url() ); - - /** - * Return the raw connect URL with our redirect and attribute connection to SSO. - * We remove any other filters that may be turning on the in-place connection - * since we will be redirecting the user as opposed to iFraming. - */ - remove_all_filters( 'jetpack_use_iframe_authorization_flow' ); - add_filter( 'jetpack_use_iframe_authorization_flow', '__return_false' ); - - $connection = new Manager( 'jetpack-connection' ); - $connect_url = ( new Authorize_Redirect( $connection ) )->build_authorize_url( $redirect_after_auth, 'sso', true ); - - add_filter( 'allowed_redirect_hosts', array( Helpers::class, 'allowed_redirect_hosts' ) ); - wp_safe_redirect( $connect_url ); - exit( 0 ); - } - - /** - * Cache user's display name and Gravatar so it can be displayed on the login screen. These cookies are - * stored when the user logs out, and then deleted when the user logs in. - */ - public function store_wpcom_profile_cookies_on_logout() { - $user_id = get_current_user_id(); - if ( ! ( new Manager() )->is_user_connected( $user_id ) ) { - return; - } - - $user_data = $this->get_user_data( $user_id ); - if ( ! $user_data ) { - return; - } - - setcookie( - 'jetpack_sso_wpcom_name_' . COOKIEHASH, - $user_data->display_name, - time() + WEEK_IN_SECONDS, - COOKIEPATH, - COOKIE_DOMAIN, - is_ssl(), - true - ); - - setcookie( - 'jetpack_sso_wpcom_gravatar_' . COOKIEHASH, - get_avatar_url( - $user_data->email, - array( - 'size' => 144, - 'default' => 'mystery', - ) - ), - time() + WEEK_IN_SECONDS, - COOKIEPATH, - COOKIE_DOMAIN, - is_ssl(), - true - ); - } - - /** - * Determines if a local user is connected to WordPress.com - * - * @since jetpack-2.8 - * @param integer $user_id - Local user id. - * @return boolean - **/ - public function is_user_connected( $user_id ) { - return $this->get_user_data( $user_id ); - } - - /** - * Retrieves a user's WordPress.com data - * - * @since jetpack-2.8 - * @param integer $user_id - Local user id. - * @return mixed null or stdClass - **/ - public function get_user_data( $user_id ) { - return get_user_meta( $user_id, 'wpcom_user_data', true ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/class-user-admin.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/class-user-admin.php deleted file mode 100644 index 06977da2..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/class-user-admin.php +++ /dev/null @@ -1,1322 +0,0 @@ - 'defer', - 'in_footer' => true, - 'enqueue' => true, - ) - ); - } - - /** - * Intercept the arguments for building the table, and create WP_User_Query instance - * - * @param array $args The search arguments. - * - * @return array - */ - public function set_user_query( $args ) { - self::$user_search = new WP_User_Query( $args ); - return $args; - } - - /** - * Revokes WordPress.com invitation. - * - * @param int $user_id The user ID. - * @return mixed Response from the API call or false on failure. - */ - public function revoke_user_invite( $user_id ) { - try { - $has_pending_invite = self::has_pending_wpcom_invite( $user_id ); - - if ( $has_pending_invite ) { - $response = self::send_revoke_wpcom_invite( $has_pending_invite ); - $event = 'sso_user_invite_revoked'; - - if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { - $body = json_decode( wp_remote_retrieve_body( $response ) ); - $tracking_event_data = array( - 'success' => 'false', - 'error_code' => 'invalid-revoke-api-error', - ); - - if ( ! empty( $body ) && ! empty( $body->message ) ) { - $tracking_event_data['error_message'] = $body->message; - } - self::$tracking->record_user_event( - $event, - $tracking_event_data - ); - return $response; - } - - $body = json_decode( $response['body'] ); - - if ( ! $body->deleted ) { - self::$tracking->record_user_event( - $event, - array( - 'success' => 'false', - 'error_message' => 'invalid-invite-revoke', - ) - ); - } else { - self::$tracking->record_user_event( $event, array( 'success' => 'true' ) ); - } - - return $response; - } else { - // Delete external contributor if it exists. - $wpcom_user_data = ( new Manager() )->get_connected_user_data( $user_id ); - if ( isset( $wpcom_user_data['ID'] ) ) { - return self::delete_external_contributor( $wpcom_user_data['ID'] ); - } - } - } catch ( \Exception $e ) { - return false; - } - } - - /** - * Renders invitations errors/success messages in users.php. - */ - public function handle_invitation_results() { - $valid_nonce = isset( $_GET['_wpnonce'] ) - ? wp_verify_nonce( sanitize_key( $_GET['_wpnonce'] ), 'jetpack-sso-invite-user' ) - : false; - - if ( ! $valid_nonce || ! isset( $_GET['jetpack-sso-invite-user'] ) ) { - return; - } - if ( $_GET['jetpack-sso-invite-user'] === 'success' ) { - return wp_admin_notice( __( 'User was invited successfully!', 'jetpack-connection' ), array( 'type' => 'success' ) ); - } - if ( $_GET['jetpack-sso-invite-user'] === 'reinvited-success' ) { - return wp_admin_notice( __( 'User was re-invited successfully!', 'jetpack-connection' ), array( 'type' => 'success' ) ); - } - - if ( $_GET['jetpack-sso-invite-user'] === 'successful-revoke' ) { - return wp_admin_notice( __( 'User invite revoked successfully.', 'jetpack-connection' ), array( 'type' => 'success' ) ); - } - - if ( $_GET['jetpack-sso-invite-user'] === 'failed' && isset( $_GET['jetpack-sso-api-error-message'] ) ) { - return wp_admin_notice( wp_kses( wp_unslash( $_GET['jetpack-sso-api-error-message'] ), array() ), array( 'type' => 'error' ) ); - } - - if ( $_GET['jetpack-sso-invite-user'] === 'failed' && isset( $_GET['jetpack-sso-invite-error'] ) ) { - switch ( $_GET['jetpack-sso-invite-error'] ) { - case 'invalid-user': - return wp_admin_notice( __( 'Tried to invite a user that doesn’t exist.', 'jetpack-connection' ), array( 'type' => 'error' ) ); - case 'invalid-email': - return wp_admin_notice( __( 'Tried to invite a user that doesn’t have an email address.', 'jetpack-connection' ), array( 'type' => 'error' ) ); - case 'invalid-user-permissions': - return wp_admin_notice( __( 'You don’t have permission to invite users.', 'jetpack-connection' ), array( 'type' => 'error' ) ); - case 'invalid-user-revoke': - return wp_admin_notice( __( 'Tried to revoke an invite for a user that doesn’t exist.', 'jetpack-connection' ), array( 'type' => 'error' ) ); - case 'invalid-invite-revoke': - return wp_admin_notice( __( 'Tried to revoke an invite that doesn’t exist.', 'jetpack-connection' ), array( 'type' => 'error' ) ); - case 'invalid-revoke-permissions': - return wp_admin_notice( __( 'You don’t have permission to revoke invites.', 'jetpack-connection' ), array( 'type' => 'error' ) ); - case 'empty-invite': - return wp_admin_notice( __( 'There is no previous invite for this user', 'jetpack-connection' ), array( 'type' => 'error' ) ); - case 'invalid-invite': - return wp_admin_notice( __( 'Attempted to send a new invitation to a user using an invite that doesn’t exist.', 'jetpack-connection' ), array( 'type' => 'error' ) ); - case 'error-revoke': - return wp_admin_notice( __( 'An error has occurred when revoking the invite for the user.', 'jetpack-connection' ), array( 'type' => 'error' ) ); - case 'invalid-revoke-api-error': - return wp_admin_notice( __( 'An error has occurred when revoking the user invite.', 'jetpack-connection' ), array( 'type' => 'error' ) ); - default: - return wp_admin_notice( __( 'An error has occurred when inviting the user to the site.', 'jetpack-connection' ), array( 'type' => 'error' ) ); - } - } - } - - /** - * Invites a user to connect to WordPress.com to allow them to log in via SSO. - */ - public function invite_user_to_wpcom() { - check_admin_referer( 'jetpack-sso-invite-user', 'invite_nonce' ); - $nonce = wp_create_nonce( 'jetpack-sso-invite-user' ); - $event = 'sso_user_invite_sent'; - - if ( ! current_user_can( 'create_users' ) ) { - $error = 'invalid-user-permissions'; - $query_params = array( - 'jetpack-sso-invite-user' => 'failed', - 'jetpack-sso-invite-error' => $error, - '_wpnonce' => $nonce, - ); - return self::create_error_notice_and_redirect( $query_params ); - } elseif ( isset( $_GET['user_id'] ) ) { - $user_id = intval( wp_unslash( $_GET['user_id'] ) ); - $user = get_user_by( 'id', $user_id ); - $user_email = $user->user_email; - - if ( ! $user || ! $user_email ) { - $reason = ! $user ? 'invalid-user' : 'invalid-email'; - $query_params = array( - 'jetpack-sso-invite-user' => 'failed', - 'jetpack-sso-invite-error' => $reason, - '_wpnonce' => $nonce, - ); - - self::$tracking->record_user_event( - $event, - array( - 'success' => 'false', - 'error_message' => $reason, - ) - ); - return self::create_error_notice_and_redirect( $query_params ); - } - - $blog_id = Manager::get_site_id( true ); - $roles = new Roles(); - $user_role = $roles->translate_user_to_role( $user ); - - $url = '/sites/' . $blog_id . '/invites/new'; - $response = Client::wpcom_json_api_request_as_user( - $url, - 'v2', - array( - 'method' => 'POST', - ), - array( - 'invitees' => array( - array( - 'email_or_username' => $user_email, - 'role' => $user_role, - ), - ), - ), - 'wpcom' - ); - - if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { - $error_code = 'invalid-invite-api-error'; - $query_params = array( - 'jetpack-sso-invite-user' => 'failed', - 'jetpack-sso-invite-error' => $error_code, - '_wpnonce' => $nonce, - ); - - $tracking_event_data = array( - 'success' => 'false', - 'error_code' => $error_code, - ); - - $body = json_decode( wp_remote_retrieve_body( $response ) ); - if ( ! empty( $body ) && ! empty( $body->message ) ) { - $query_params['jetpack-sso-api-error-message'] = $body->message; - $tracking_event_data['error_message'] = $body->message; - } - - self::$tracking->record_user_event( - $event, - $tracking_event_data - ); - return self::create_error_notice_and_redirect( $query_params ); - } - - $body = json_decode( wp_remote_retrieve_body( $response ) ); - - // access the first item since we're inviting one user. - if ( is_array( $body ) && ! empty( $body ) ) { - $body = $body[0]; - } - - $query_params = array( - 'jetpack-sso-invite-user' => $body->success ? 'success' : 'failed', - '_wpnonce' => $nonce, - ); - - if ( ! $body->success && $body->errors ) { - $response_error = array_keys( (array) $body->errors ); - $query_params['jetpack-sso-invite-error'] = $response_error[0]; - self::$tracking->record_user_event( - $event, - array( - 'success' => 'false', - 'error_message' => $response_error[0], - ) - ); - } else { - self::$tracking->record_user_event( $event, array( 'success' => 'true' ) ); - } - - return self::create_error_notice_and_redirect( $query_params ); - } else { - $error = 'invalid-user'; - $query_params = array( - 'jetpack-sso-invite-user' => 'failed', - 'jetpack-sso-invite-error' => $error, - '_wpnonce' => $nonce, - ); - self::$tracking->record_user_event( - $event, - array( - 'success' => 'false', - 'error_message' => $error, - ) - ); - return self::create_error_notice_and_redirect( $query_params ); - } - wp_die(); - } - - /** - * Revokes a user's invitation to connect to WordPress.com. - * - * @param string $invite_id The ID of the invite to revoke. - */ - public function send_revoke_wpcom_invite( $invite_id ) { - $blog_id = Manager::get_site_id( true ); - - $url = '/sites/' . $blog_id . '/invites/delete'; - return Client::wpcom_json_api_request_as_user( - $url, - 'v2', - array( - 'method' => 'POST', - ), - array( - 'invite_ids' => array( $invite_id ), - ), - 'wpcom' - ); - } - - /** - * Handles logic to revoke user invite. - */ - public function handle_request_revoke_invite() { - check_admin_referer( 'jetpack-sso-revoke-user-invite', 'revoke_invite_nonce' ); - $nonce = wp_create_nonce( 'jetpack-sso-invite-user' ); - $event = 'sso_user_invite_revoked'; - if ( ! current_user_can( 'promote_users' ) ) { - $error = 'invalid-revoke-permissions'; - $query_params = array( - 'jetpack-sso-invite-user' => 'failed', - 'jetpack-sso-invite-error' => $error, - '_wpnonce' => $nonce, - ); - - return self::create_error_notice_and_redirect( $query_params ); - } elseif ( isset( $_GET['user_id'] ) ) { - $user_id = intval( wp_unslash( $_GET['user_id'] ) ); - $user = get_user_by( 'id', $user_id ); - if ( ! $user ) { - $error = 'invalid-user-revoke'; - $query_params = array( - 'jetpack-sso-invite-user' => 'failed', - 'jetpack-sso-invite-error' => $error, - '_wpnonce' => $nonce, - ); - - self::$tracking->record_user_event( - $event, - array( - 'success' => 'false', - 'error_message' => $error, - ) - ); - return self::create_error_notice_and_redirect( $query_params ); - } - - if ( ! isset( $_GET['invite_id'] ) ) { - $error = 'invalid-invite-revoke'; - $query_params = array( - 'jetpack-sso-invite-user' => 'failed', - 'jetpack-sso-invite-error' => $error, - '_wpnonce' => $nonce, - ); - self::$tracking->record_user_event( - $event, - array( - 'success' => 'false', - 'error_message' => $error, - ) - ); - return self::create_error_notice_and_redirect( $query_params ); - } - - $invite_id = sanitize_text_field( wp_unslash( $_GET['invite_id'] ) ); - $response = self::send_revoke_wpcom_invite( $invite_id ); - - if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { - $error = 'invalid-revoke-api-error'; - $query_params = array( - 'jetpack-sso-invite-user' => 'failed', - 'jetpack-sso-invite-error' => $error, // general error message - '_wpnonce' => $nonce, - ); - - $tracking_event_data = array( - 'success' => 'false', - 'error_code' => $error, - ); - - $body = json_decode( wp_remote_retrieve_body( $response ) ); - if ( ! empty( $body ) && ! empty( $body->message ) ) { - $query_params['jetpack-sso-api-error-message'] = $body->message; - $tracking_event_data['error_message'] = $body->message; - } - - self::$tracking->record_user_event( - $event, - $tracking_event_data - ); - return self::create_error_notice_and_redirect( $query_params ); - } - - $body = json_decode( $response['body'] ); - $query_params = array( - 'jetpack-sso-invite-user' => $body->deleted ? 'successful-revoke' : 'failed', - '_wpnonce' => $nonce, - ); - if ( ! $body->deleted ) { // no invite was deleted, probably it does not exist - $error = 'invalid-invite-revoke'; - $query_params['jetpack-sso-invite-error'] = $error; - self::$tracking->record_user_event( - $event, - array( - 'success' => 'false', - 'error_message' => $error, - ) - ); - } else { - self::$tracking->record_user_event( $event, array( 'success' => 'true' ) ); - } - return self::create_error_notice_and_redirect( $query_params ); - } else { - $error = 'invalid-user-revoke'; - $query_params = array( - 'jetpack-sso-invite-user' => 'failed', - 'jetpack-sso-invite-error' => $error, - '_wpnonce' => $nonce, - ); - self::$tracking->record_user_event( - $event, - array( - 'success' => 'false', - 'error_message' => $error, - ) - ); - return self::create_error_notice_and_redirect( $query_params ); - } - - wp_die(); - } - - /** - * Handles resend user invite. - */ - public function handle_request_resend_invite() { - check_admin_referer( 'jetpack-sso-resend-user-invite', 'resend_invite_nonce' ); - $nonce = wp_create_nonce( 'jetpack-sso-invite-user' ); - $event = 'sso_user_invite_resend'; - if ( ! current_user_can( 'create_users' ) ) { - $query_params = array( - 'jetpack-sso-invite-user' => 'failed', - 'jetpack-sso-invite-error' => 'invalid-user-permissions', - '_wpnonce' => $nonce, - ); - return self::create_error_notice_and_redirect( $query_params ); - } elseif ( isset( $_GET['invite_id'] ) ) { - $invite_slug = sanitize_text_field( wp_unslash( $_GET['invite_id'] ) ); - $blog_id = Manager::get_site_id( true ); - $url = '/sites/' . $blog_id . '/invites/resend'; - $response = Client::wpcom_json_api_request_as_user( - $url, - 'v2', - array( - 'method' => 'POST', - ), - array( - 'invite_slug' => $invite_slug, - ), - 'wpcom' - ); - - $status_code = wp_remote_retrieve_response_code( $response ); - - if ( 200 !== $status_code ) { - $message_type = $status_code === 404 ? 'invalid-invite' : ''; // empty is the general error message - $query_params = array( - 'jetpack-sso-invite-user' => 'failed', - 'jetpack-sso-invite-error' => $message_type, - '_wpnonce' => $nonce, - ); - self::$tracking->record_user_event( - $event, - array( - 'success' => 'false', - 'error_message' => $message_type, - ) - ); - return self::create_error_notice_and_redirect( $query_params ); - } - - $body = json_decode( $response['body'] ); - $invite_response_message = $body->success ? 'reinvited-success' : 'failed'; - $query_params = array( - 'jetpack-sso-invite-user' => $invite_response_message, - '_wpnonce' => $nonce, - ); - - if ( ! $body->success ) { - self::$tracking->record_user_event( - $event, - array( - 'success' => 'false', - 'error_message' => $invite_response_message, - ) - ); - } else { - self::$tracking->record_user_event( $event, array( 'success' => 'true' ) ); - } - - return self::create_error_notice_and_redirect( $query_params ); - } else { - $error = 'empty-invite'; - $query_params = array( - 'jetpack-sso-invite-user' => 'failed', - 'jetpack-sso-invite-error' => 'empty-invite', - '_wpnonce' => $nonce, - ); - self::$tracking->record_user_event( - $event, - array( - 'success' => 'false', - 'error_message' => $error, - ) - ); - return self::create_error_notice_and_redirect( $query_params ); - } - } - - /** - * Adds 'Revoke invite' and 'Resend invite' link to user table row actions. - * Removes 'Reset password' link. - * - * @param array $actions - User row actions. - * @param WP_User $user_object - User object. - */ - public function jetpack_user_table_row_actions( $actions, $user_object ) { - $user_id = $user_object->ID; - $has_pending_invite = self::has_pending_wpcom_invite( $user_id ); - - if ( current_user_can( 'promote_users' ) && $has_pending_invite ) { - $nonce = wp_create_nonce( 'jetpack-sso-revoke-user-invite' ); - $actions['sso_revoke_invite'] = sprintf( - '%s', - add_query_arg( - array( - 'action' => 'jetpack_revoke_invite_user_to_wpcom', - 'user_id' => $user_id, - 'revoke_invite_nonce' => $nonce, - 'invite_id' => $has_pending_invite, - ), - admin_url( 'admin-post.php' ) - ), - esc_html__( 'Revoke invite', 'jetpack-connection' ) - ); - } - if ( current_user_can( 'promote_users' ) && $has_pending_invite ) { - $nonce = wp_create_nonce( 'jetpack-sso-resend-user-invite' ); - $actions['sso_resend_invite'] = sprintf( - '%s', - add_query_arg( - array( - 'action' => 'jetpack_resend_invite_user_to_wpcom', - 'user_id' => $user_id, - 'resend_invite_nonce' => $nonce, - 'invite_id' => $has_pending_invite, - ), - admin_url( 'admin-post.php' ) - ), - esc_html__( 'Resend invite', 'jetpack-connection' ) - ); - } - - if ( - current_user_can( 'promote_users' ) - && ( - $has_pending_invite - || ( new Manager() )->is_user_connected( $user_id ) - ) - ) { - unset( $actions['resetpassword'] ); - } - - return $actions; - } - - /** - * Render the invitation email message. - */ - public function render_invitation_email_message() { - $message = wp_kses( - __( - 'We highly recommend inviting users to join WordPress.com and log in securely using Secure Sign On to ensure maximum security and efficiency.', - 'jetpack-connection' - ), - array( - 'a' => array( - 'class' => array(), - 'href' => array(), - 'rel' => array(), - 'target' => array(), - ), - ) - ); - wp_admin_notice( - $message, - array( - 'id' => 'invitation_message', - 'type' => 'info', - 'dismissible' => false, - 'additional_classes' => array( 'jetpack-sso-admin-create-user-invite-message' ), - ) - ); - } - - /** - * Render a note that wp.com invites will be automatically revoked. - */ - public function render_invitations_notices_for_deleted_users() { - check_admin_referer( 'bulk-users' ); - - // When one user is deleted, the param is `user`, when multiple users are deleted, the param is `users`. - // We start with `users` and fallback to `user`. - $user_id = isset( $_GET['user'] ) ? intval( wp_unslash( $_GET['user'] ) ) : null; - $user_ids = isset( $_GET['users'] ) ? array_map( 'intval', wp_unslash( $_GET['users'] ) ) : array( $user_id ); - - $users_with_invites = array_filter( - $user_ids, - function ( $user_id ) { - return $user_id !== null && self::has_pending_wpcom_invite( $user_id ); - } - ); - - $users_with_invites = array_map( - function ( $user_id ) { - $user = get_user_by( 'id', $user_id ); - return $user->user_login; - }, - $users_with_invites - ); - - $invites_count = count( $users_with_invites ); - if ( $invites_count > 0 ) { - $users_with_invites = implode( ', ', $users_with_invites ); - $message = wp_kses( - sprintf( - /* translators: %s is a comma-separated list of user logins. */ - _n( - 'WordPress.com invitation will be automatically revoked for user: %s.', - 'WordPress.com invitations will be automatically revoked for users: %s.', - $invites_count, - 'jetpack-connection' - ), - $users_with_invites - ), - array( 'strong' => true ) - ); - wp_admin_notice( - $message, - array( - 'id' => 'invitation_message', - 'type' => 'info', - 'dismissible' => false, - 'additional_classes' => array( 'jetpack-sso-admin-create-user-invite-message' ), - ) - ); - } - } - - /** - * Render WordPress.com invite checkbox for new user registration. - * - * @param string $type The type of new user form the hook follows. - */ - public function render_wpcom_invite_checkbox( $type ) { - /* - * Only check this box by default on WordPress.com sites - * that do not use the WooCommerce plugin. - */ - $is_checked = ( new Host() )->is_wpcom_platform() && ! class_exists( 'WooCommerce' ); - - if ( $type === 'add-new-user' ) { - ?> - - - - - -
            - - -
            - - - - -
            -
            - is_wpcom_platform() ) { - return; - } - - if ( $type === 'add-new-user' ) { - ?> - - - - - -
            - - -
            - - - - -
            -
            - - - - - - -
            - - -
            - 500 - ) { - $errors->add( - 'custom_email_message', - wp_kses( - __( 'Error: The custom message is too long. Please keep it under 500 characters.', 'jetpack-connection' ), - array( - 'strong' => array(), - ) - ) - ); - } - - $site_id = Manager::get_site_id( true ); - if ( ! $site_id ) { - $errors->add( - 'invalid_site_id', - wp_kses( - __( 'Error: Invalid site ID.', 'jetpack-connection' ), - array( - 'strong' => array(), - ) - ) - ); - } - - // Bail if there are any errors. - if ( $errors->has_errors() ) { - return $errors; - } - - $new_user_request = array( - 'email_or_username' => sanitize_email( $user->user_email ), - 'role' => sanitize_key( $user->role ), - ); - - if ( - isset( $_POST['custom_email_message'] ) - && strlen( sanitize_text_field( wp_unslash( $_POST['custom_email_message'] ) ) ) > 0 - ) { - $new_user_request['message'] = sanitize_text_field( wp_unslash( $_POST['custom_email_message'] ) ); - } - - if ( isset( $_POST['user_external_contractor'] ) ) { - $new_user_request['is_external'] = true; - } - - $response = Client::wpcom_json_api_request_as_user( - sprintf( - '/sites/%d/invites/new', - (int) $site_id - ), - '2', // Api version - array( - 'method' => 'POST', - ), - array( - 'invitees' => array( $new_user_request ), - ) - ); - - $event_name = 'sso_new_user_invite_sent'; - $custom_message_sent = isset( $new_user_request['message'] ) ? 'true' : 'false'; - - if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { - $errors->add( - 'invitation_not_sent', - wp_kses( - __( 'Error: The user invitation email could not be sent, the user account was not created.', 'jetpack-connection' ), - array( - 'strong' => array(), - ) - ) - ); - self::$tracking->record_user_event( - $event_name, - array( - 'success' => 'false', - 'error' => wp_remote_retrieve_body( $response ), // Get as much information as possible. - ) - ); - } else { - self::$tracking->record_user_event( - $event_name, - array( - 'success' => 'true', - 'custom_message_sent' => $custom_message_sent, - ) - ); - } - - return $errors; - } - - /** - * Deprecated method. Adds a column in the user admin table to display user connection status and actions. - * - * @param array $columns User list table columns. - * @return array - * @deprecated 6.5.0 - */ - public function jetpack_user_connected_th( $columns ) { - _deprecated_function( __METHOD__, 'package-6.5.0' ); - return $columns; - } - - /** - * Executed when our WP_User_Query instance is set, and we don't have cached invites. - * This function uses the user emails and the 'are-users-invited' endpoint to build the cache. - * - * @return void - */ - private static function rebuild_invite_cache() { - $blog_id = Manager::get_site_id( true ); - - if ( self::$cached_invites === null && self::$user_search !== null ) { - - self::$cached_invites = array(); - - $results = self::$user_search->get_results(); - - $user_emails = array_reduce( - $results, - function ( $current, $item ) { - if ( ! ( new Manager() )->is_user_connected( $item->ID ) ) { - $current[] = rawurlencode( $item->user_email ); - } else { - self::$cached_invites[] = array( - 'email_or_username' => $item->user_email, - 'invited' => false, - 'invite_code' => '', - ); - } - return $current; - }, - array() - ); - - if ( ! empty( $user_emails ) ) { - $url = '/sites/' . $blog_id . '/invites/are-users-invited'; - - $response = Client::wpcom_json_api_request_as_user( - $url, - 'v2', - array( - 'method' => 'POST', - ), - array( 'users' => $user_emails ), - 'wpcom' - ); - - if ( 200 === wp_remote_retrieve_response_code( $response ) ) { - $body = json_decode( $response['body'], true ); - - // ensure array_merge happens with the right parameters - if ( empty( $body ) ) { - $body = array(); - } - - self::$cached_invites = array_merge( self::$cached_invites, $body ); - } - } - } - } - - /** - * Check if there is cached invite for a user email. - * - * @access private - * @static - * - * @param string $email The user email. - * - * @return array|void Returns the cached invite if found. - */ - public static function get_pending_cached_wpcom_invite( $email ) { - if ( self::$cached_invites === null ) { - self::rebuild_invite_cache(); - } - - if ( ! empty( self::$cached_invites ) && is_array( self::$cached_invites ) ) { - $index = array_search( $email, array_column( self::$cached_invites, 'email_or_username' ), true ); - if ( $index !== false ) { - return self::$cached_invites[ $index ]; - } - } - } - - /** - * Check if a given user is invited to the site. - * - * @access private - * @static - * @param int $user_id The user ID. - * - * @return false|string returns the user invite code if the user is invited, false otherwise. - */ - private static function has_pending_wpcom_invite( $user_id ) { - $blog_id = Manager::get_site_id( true ); - $user = get_user_by( 'id', $user_id ); - $cached_invite = self::get_pending_cached_wpcom_invite( $user->user_email ); - - if ( $cached_invite ) { - return $cached_invite['invite_code']; - } - - $url = '/sites/' . $blog_id . '/invites/is-invited'; - $url = add_query_arg( - array( - 'email_or_username' => rawurlencode( $user->user_email ), - ), - $url - ); - $response = Client::wpcom_json_api_request_as_user( - $url, - 'v2', - array(), - null, - 'wpcom' - ); - - if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { - return false; - } - - $body_response = wp_remote_retrieve_body( $response ); - if ( empty( $body_response ) ) { - return false; - } - - $body = json_decode( $body_response, true ); - if ( ! empty( $body['invite_code'] ) ) { - return $body['invite_code']; - } - - return false; - } - - /** - * Delete an external contributor from the site. - * - * @access private - * @static - * @param int $user_id The user ID. - * - * @return bool Returns true if the user was successfully deleted, false otherwise. - */ - private static function delete_external_contributor( $user_id ) { - $blog_id = Manager::get_site_id( true ); - $url = '/sites/' . $blog_id . '/external-contributors/remove'; - $response = Client::wpcom_json_api_request_as_user( - $url, - 'v2', - array( - 'method' => 'POST', - ), - array( - 'user_id' => $user_id, - ), - 'wpcom' - ); - - if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { - return false; - } - - return true; - } - - /** - * Show Jetpack SSO user connection status. - * - * @param string $val HTML for the column. - * @param string $col User list table column. - * @param int $user_id User ID. - * @return string Modified column content. - */ - public function jetpack_show_connection_status( $val, $col, $user_id ) { - if ( 'user_jetpack' !== $col ) { - return $val; - } - - // Get base connection status from parent - $connection_status = parent::render_connection_column( '', $col, $user_id ); - - // If user is not connected, check for pending invite - if ( ! $connection_status ) { - $has_pending_invite = self::has_pending_wpcom_invite( $user_id ); - if ( $has_pending_invite ) { - return sprintf( - '%2$s', - esc_attr__( 'This user didn’t accept the invitation to join this site yet.', 'jetpack-connection' ), - esc_html__( 'Pending invite', 'jetpack-connection' ) - ); - } - - // Show invite button for non-connected users - $nonce = wp_create_nonce( 'jetpack-sso-invite-user' ); - return sprintf( - ' - %2$s - - %3$s - - ', - add_query_arg( - array( - 'user_id' => $user_id, - 'invite_nonce' => $nonce, - 'action' => 'jetpack_invite_user_to_wpcom', - ), - admin_url( 'admin-post.php' ) - ), - esc_html__( 'Send invite', 'jetpack-connection' ), - esc_attr__( 'This user doesn’t have a Jetpack SSO connection to WordPress.com. Invite them to the site to increase security and improve their experience.', 'jetpack-connection' ), - esc_attr__( 'Tooltip', 'jetpack-connection' ) - ); - } - - return $connection_status; - } - - /** - * Creates error notices and redirects the user to the previous page. - * - * @param array $query_params - query parameters added to redirection URL. - * @phan-suppress PhanPluginNeverReturnMethod - */ - public function create_error_notice_and_redirect( $query_params ) { - $ref = wp_get_referer(); - if ( empty( $ref ) ) { - $ref = network_admin_url( 'users.php' ); - } - - $url = add_query_arg( - $query_params, - $ref - ); - wp_safe_redirect( $url ); - exit; - } - - /** - * Style the Jetpack user rows and columns. - */ - public function jetpack_user_table_styles() { - ?> - - 'defer', - 'in_footer' => true, - 'enqueue' => true, - 'version' => Package_Version::PACKAGE_VERSION, - ) - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.css b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.css deleted file mode 100644 index 176fb8ec..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.css +++ /dev/null @@ -1,21 +0,0 @@ -.jetpack-sso-admin-create-user-invite-message { - width: 550px; -} - -.jetpack-sso-admin-create-user-invite-message-link-sso { - text-decoration: none; -} - -#createuser .form-field textarea { - width: 25em; -} - -#createuser .form-field [type=checkbox] { - width: 1rem; -} - -#custom_email_message_description { - max-width: 25rem; - color: #646970; - font-size: 12px; -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.js b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.js deleted file mode 100644 index 0c8449c7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-admin-create-user.js +++ /dev/null @@ -1,45 +0,0 @@ -document.addEventListener( 'DOMContentLoaded', function () { - const sendUserNotificationCheckbox = document.getElementById( 'send_user_notification' ); - const userExternalContractorCheckbox = document.getElementById( 'user_external_contractor' ); - const inviteUserWpcomCheckbox = document.getElementById( 'invite_user_wpcom' ); - const customEmailMessageBlock = document.getElementById( 'custom_email_message_block' ); - - if ( inviteUserWpcomCheckbox && sendUserNotificationCheckbox && customEmailMessageBlock ) { - // Toggle Send User Notification checkbox enabled/disabled based on Invite User checkbox - // Enable External Contractor checkbox if Invite User checkbox is checked - // Show/hide the external email message field. - inviteUserWpcomCheckbox.addEventListener( 'change', function () { - sendUserNotificationCheckbox.disabled = inviteUserWpcomCheckbox.checked; - if ( inviteUserWpcomCheckbox.checked ) { - sendUserNotificationCheckbox.checked = false; - if ( userExternalContractorCheckbox ) { - userExternalContractorCheckbox.disabled = false; - } - customEmailMessageBlock.style.display = 'table'; - } else { - if ( userExternalContractorCheckbox ) { - userExternalContractorCheckbox.disabled = true; - userExternalContractorCheckbox.checked = false; - } - customEmailMessageBlock.style.display = 'none'; - } - } ); - - // On load, disable Send User Notification checkbox - // and show the custom email message if Invite User checkbox is checked - if ( inviteUserWpcomCheckbox.checked ) { - sendUserNotificationCheckbox.disabled = true; - sendUserNotificationCheckbox.checked = false; - customEmailMessageBlock.style.display = 'table'; - } - - // On load, disable External Contractor checkbox - // and hide the custom email message if Invite User checkbox is unchecked - if ( ! inviteUserWpcomCheckbox.checked ) { - if ( userExternalContractorCheckbox ) { - userExternalContractorCheckbox.disabled = true; - } - customEmailMessageBlock.style.display = 'none'; - } - } -} ); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.css b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.css deleted file mode 100644 index db2b261e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.css +++ /dev/null @@ -1,164 +0,0 @@ -#loginform { - /* We set !important because sometimes static is added inline */ - position: relative !important; - padding-bottom: 92px; -} - -.jetpack-sso-repositioned #loginform { - padding-bottom: 26px; -} - -#loginform #jetpack-sso-wrap, -#loginform #jetpack-sso-wrap * { - box-sizing: border-box; -} - - -#jetpack-sso-wrap__action, -#jetpack-sso-wrap__user { - display: none; -} - -.jetpack-sso-form-display #jetpack-sso-wrap__action, -.jetpack-sso-form-display #jetpack-sso-wrap__user { - display: block; -} - -#jetpack-sso-wrap { - position: absolute; - bottom: 20px; - padding: 0 24px; - margin-left: -24px; - margin-right: -24px; - width: 100%; -} - -.jetpack-sso-repositioned #jetpack-sso-wrap { - position: relative; - bottom: auto; - padding: 0; - margin-top: 16px; - margin-left: 0; - margin-right: 0; -} - -.jetpack-sso-form-display #jetpack-sso-wrap { - position: relative; - bottom: auto; - padding: 0; - margin-top: 0; - margin-left: 0; - margin-right: 0; -} - -#loginform #jetpack-sso-wrap p { - color: #777777; - margin-bottom: 16px; -} - -#jetpack-sso-wrap a { - display: block; - width: 100%; - text-align: center; - text-decoration: none; -} - -#jetpack-sso-wrap .jetpack-sso-toggle.wpcom { - display: none; -} - -.jetpack-sso-form-display #jetpack-sso-wrap .jetpack-sso-toggle.wpcom { - display: block; -} - - -.jetpack-sso-form-display #jetpack-sso-wrap .jetpack-sso-toggle.default { - display: none; -} - - -.jetpack-sso-form-display #loginform>p, -.jetpack-sso-form-display #loginform>div { - display: none; -} - -.jetpack-sso-form-display #loginform #jetpack-sso-wrap { - display: block; -} - -.jetpack-sso-form-display #loginform { - padding: 26px 24px; -} - -.jetpack-sso-or { - margin-bottom: 16px; - position: relative; - text-align: center; -} - -.jetpack-sso-or:before { - background: #dcdcde; - content: ''; - height: 1px; - position: absolute; - left: 0; - top: 50%; - width: 100%; -} - -.jetpack-sso-or span { - background: #fff; - color: #777; - position: relative; - padding: 0 8px; - text-transform: uppercase -} - -#jetpack-sso-wrap .button { - display: flex; - justify-content: center; - align-items: center; - height: 36px; - margin-bottom: 16px; - width: 100%; -} - -#jetpack-sso-wrap .button .genericon-wordpress { - font-size: 24px; - margin-right: 4px; -} - -#jetpack-sso-wrap__user img { - border-radius: 50%; - display: block; - margin: 0 auto 16px; -} - -#jetpack-sso-wrap__user h2 { - font-size: 21px; - font-weight: 300; - margin-bottom: 16px; - text-align: center; -} - -#jetpack-sso-wrap__user h2 span { - font-weight: bold; -} - -.jetpack-sso-wrap__reauth { - margin-bottom: 16px; -} - -.jetpack-sso-form-display #nav { - display: none; -} - -.jetpack-sso-form-display #backtoblog { - margin: 24px 0 0; -} - -.jetpack-sso-clear:after { - content: ""; - display: table; - clear: both; -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.js b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.js deleted file mode 100644 index 980741be..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-login.js +++ /dev/null @@ -1,27 +0,0 @@ -document.addEventListener( 'DOMContentLoaded', () => { - const body = document.querySelector( 'body' ), - toggleSSO = document.querySelector( '.jetpack-sso-toggle' ), - userLogin = document.getElementById( 'user_login' ), - userPassword = document.getElementById( 'user_pass' ), - ssoWrap = document.getElementById( 'jetpack-sso-wrap' ), - loginForm = document.getElementById( 'loginform' ), - overflow = document.createElement( 'div' ); - - overflow.className = 'jetpack-sso-clear'; - - loginForm.appendChild( overflow ); - overflow.appendChild( document.querySelector( 'p.forgetmenot' ) ); - overflow.appendChild( document.querySelector( 'p.submit' ) ); - - loginForm.appendChild( ssoWrap ); - body.classList.add( 'jetpack-sso-repositioned' ); - - toggleSSO.addEventListener( 'click', e => { - e.preventDefault(); - body.classList.toggle( 'jetpack-sso-form-display' ); - if ( ! body.classList.contains( 'jetpack-sso-form-display' ) ) { - userLogin.focus(); - userPassword.disabled = false; - } - } ); -} ); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-users.js b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-users.js deleted file mode 100644 index 778eab06..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/sso/jetpack-sso-users.js +++ /dev/null @@ -1,64 +0,0 @@ -document.addEventListener( 'DOMContentLoaded', function () { - document - .querySelectorAll( '.jetpack-sso-invitation-tooltip-icon:not(.sso-disconnected-user)' ) - .forEach( function ( tooltip ) { - tooltip.innerHTML += ' [?]'; - - const tooltipTextbox = document.createElement( 'span' ); - tooltipTextbox.classList.add( 'jetpack-sso-invitation-tooltip' ); - - const tooltipString = window.Jetpack_SSOTooltip.tooltipString; - tooltipTextbox.innerHTML += tooltipString; - - tooltip.addEventListener( 'mouseenter', appendTooltip ); - tooltip.addEventListener( 'focus', appendTooltip ); - tooltip.addEventListener( 'mouseleave', removeTooltip ); - tooltip.addEventListener( 'blur', removeTooltip ); - - /** - * Display the tooltip textbox. - */ - function appendTooltip() { - tooltip.appendChild( tooltipTextbox ); - tooltipTextbox.style.display = 'block'; - } - - /** - * Remove the tooltip textbox. - */ - function removeTooltip() { - // Only remove tooltip if the element isn't currently active. - if ( tooltip.ownerDocument.activeElement === tooltip ) { - return; - } - tooltip.removeChild( tooltipTextbox ); - } - } ); - document - .querySelectorAll( '.jetpack-sso-invitation-tooltip-icon:not(.jetpack-sso-status-column)' ) - .forEach( function ( tooltip ) { - tooltip.addEventListener( 'mouseenter', appendSSOInvitationTooltip ); - tooltip.addEventListener( 'focus', appendSSOInvitationTooltip ); - tooltip.addEventListener( 'mouseleave', removeSSOInvitationTooltip ); - tooltip.addEventListener( 'blur', removeSSOInvitationTooltip ); - } ); - - /** - * Display the SSO invitation tooltip textbox. - */ - function appendSSOInvitationTooltip() { - this.querySelector( '.jetpack-sso-invitation-tooltip' ).style.display = 'block'; - } - - /** - * Remove the SSO invitation tooltip textbox. - * - * @param {Event} event - Triggering event. - */ - function removeSSOInvitationTooltip( event ) { - if ( event.target.ownerDocument.activeElement === event.target ) { - return; - } - this.querySelector( '.jetpack-sso-invitation-tooltip' ).style.display = 'none'; - } -} ); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/traits/trait-wpcom-rest-api-proxy-request.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/traits/trait-wpcom-rest-api-proxy-request.php deleted file mode 100644 index f6b38cf8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/traits/trait-wpcom-rest-api-proxy-request.php +++ /dev/null @@ -1,151 +0,0 @@ -rest_base, '/' ) ) . ( $path ? '/' . rawurldecode( ltrim( $path, '/' ) ) : '' ); - $query_params = $request->get_query_params(); - $manager = new Manager(); - - /* - * A rest_route parameter can be added when using plain permalinks. - * It is not necessary to pass them to WordPress.com, - * and may even cause issues with some endpoints. - * Let's remove it. - */ - if ( isset( $query_params['rest_route'] ) ) { - unset( $query_params['rest_route'] ); - } - $api_url = add_query_arg( $query_params, $path ); - - $request_options = array_replace_recursive( - array( - 'headers' => array( - 'Content-Type' => 'application/json', - 'X-Forwarded-For' => ( new Visitor() )->get_ip( true ), - ), - 'method' => $request->get_method(), - ), - $request_options - ); - - // If no body is present, passing it as $request->get_body() will cause an error. - $body = $request->get_body() ? $request->get_body() : null; - - $response = new WP_Error( - 'rest_unauthorized', - __( 'Please connect your user account to WordPress.com', 'jetpack-connection' ), - array( 'status' => rest_authorization_required_code() ) - ); - - if ( 'user' === $context ) { - if ( ! $manager->is_user_connected() ) { - if ( false === $allow_fallback_to_blog ) { - return $response; - } - - $context = 'blog'; - } else { - $response = Client::wpcom_json_api_request_as_user( $api_url, $this->version, $request_options, $body, $this->base_api_path ); - } - } - - if ( 'blog' === $context ) { - if ( ! $manager->is_connected() ) { - return $response; - } - - $response = Client::wpcom_json_api_request_as_blog( $api_url, $this->version, $request_options, $body, $this->base_api_path ); - } - - if ( is_wp_error( $response ) ) { - return $response; - } - - $response_status = wp_remote_retrieve_response_code( $response ); - $response_body = json_decode( wp_remote_retrieve_body( $response ), true ); - - if ( $response_status >= 400 ) { - $code = $response_body['code'] ?? 'unknown_error'; - $message = $response_body['message'] ?? __( 'An unknown error occurred.', 'jetpack-connection' ); - - return new WP_Error( $code, $message, array( 'status' => $response_status ) ); - } - - return $response_body; - } - - /** - * Proxy request to wpcom servers on behalf of a user. - * - * @param WP_REST_Request $request Request to proxy. - * @param string $path Path to append to the rest base. - * @param array $request_options Request options to pass to wp_remote_request. - * - * @return mixed|WP_Error Response from wpcom servers or an error. - */ - public function proxy_request_to_wpcom_as_user( $request, $path = '', $request_options = array() ) { - return $this->proxy_request_to_wpcom( $request, $path, 'user', false, $request_options ); - } - - /** - * Proxy request to wpcom servers using the Site-level Connection (blog token). - * - * @param WP_REST_Request $request Request to proxy. - * @param string $path Path to append to the rest base. - * @param array $request_options Request options to pass to wp_remote_request. - * - * @return mixed|WP_Error Response from wpcom servers or an error. - */ - public function proxy_request_to_wpcom_as_blog( $request, $path = '', $request_options = array() ) { - return $this->proxy_request_to_wpcom( $request, $path, 'blog', false, $request_options ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/webhooks/class-authorize-redirect.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/webhooks/class-authorize-redirect.php deleted file mode 100644 index ddd24e4b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-connection/src/webhooks/class-authorize-redirect.php +++ /dev/null @@ -1,251 +0,0 @@ -connection = $connection; - } - - /** - * Handle the webhook - * - * This method implements what's in Jetpack::admin_page_load when the Jetpack plugin is not present - * - * @return never - */ - public function handle() { - - add_filter( - 'allowed_redirect_hosts', - function ( $domains ) { - $domains[] = 'jetpack.com'; - $domains[] = 'jetpack.wordpress.com'; - $domains[] = 'wordpress.com'; - // Calypso envs. - $domains[] = 'calypso.localhost'; - $domains[] = 'wpcalypso.wordpress.com'; - $domains[] = 'horizon.wordpress.com'; - return array_unique( $domains ); - } - ); - - // phpcs:ignore WordPress.Security.NonceVerification.Recommended - $dest_url = empty( $_GET['dest_url'] ) ? null : esc_url_raw( wp_unslash( $_GET['dest_url'] ) ); - - if ( ! $dest_url || ( 0 === stripos( $dest_url, 'https://jetpack.com/' ) && 0 === stripos( $dest_url, 'https://wordpress.com/' ) ) ) { - // The destination URL is missing or invalid, nothing to do here. - exit( 0 ); - } - - // The user is either already connected, or finished the connection process. - if ( $this->connection->is_connected() && $this->connection->is_user_connected() ) { - if ( class_exists( '\Automattic\Jetpack\Licensing' ) && method_exists( '\Automattic\Jetpack\Licensing', 'handle_user_connected_redirect' ) ) { - Licensing::instance()->handle_user_connected_redirect( $dest_url ); - } - - wp_safe_redirect( $dest_url ); - exit( 0 ); - } elseif ( ! empty( $_GET['done'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended - // The user decided not to proceed with setting up the connection. - - wp_safe_redirect( Admin_Menu::get_top_level_menu_item_url() ); - exit( 0 ); - } - - $redirect_args = array( - 'page' => 'jetpack', - 'action' => 'authorize_redirect', - 'dest_url' => rawurlencode( $dest_url ), - 'done' => '1', - ); - - // phpcs:ignore WordPress.Security.NonceVerification.Recommended - if ( ! empty( $_GET['from'] ) && 'jetpack_site_only_checkout' === $_GET['from'] ) { - $redirect_args['from'] = 'jetpack_site_only_checkout'; - } - - wp_safe_redirect( $this->build_authorize_url( add_query_arg( $redirect_args, admin_url( 'admin.php' ) ) ) ); - exit( 0 ); - } - - /** - * Create the Jetpack authorization URL. - * - * @since 2.7.6 Added optional $from and $raw parameters. - * @since 6.8.0 Added optional $provider and $provider_args parameters. - * - * @param bool|string $redirect URL to redirect to. - * @param bool|string $from If not false, adds 'from=$from' param to the connect URL. - * @param bool $raw If true, URL will not be escaped. - * @param string|null $provider The authentication provider (google, github, apple, link). - * @param array|null $provider_args Additional provider-specific arguments. - * - * @todo Update default value for redirect since the called function expects a string. - * - * @return mixed|void - */ - public function build_authorize_url( $redirect = false, $from = false, $raw = false, $provider = null, $provider_args = null ) { - - add_filter( 'jetpack_connect_request_body', array( __CLASS__, 'filter_connect_request_body' ) ); - add_filter( 'jetpack_connect_redirect_url', array( __CLASS__, 'filter_connect_redirect_url' ) ); - - $url = $this->connection->get_authorization_url( wp_get_current_user(), $redirect, $from, $raw ); - - // If a provider is specified, modify the URL to use the provider-specific endpoint - if ( $provider && in_array( $provider, array( 'google', 'github', 'apple', 'link' ), true ) ) { - // Parse the URL to modify it safely - $url_parts = wp_parse_url( $url ); - - if ( ! empty( $url_parts['host'] ) && ! empty( $url_parts['path'] ) ) { - // Build the new URL using wordpress.com as the host - $url_parts['host'] = 'wordpress.com'; - $url_parts['path'] = '/log-in/jetpack/' . $provider; - - // Preserve the query parameters - $query_params = array(); - if ( ! empty( $url_parts['query'] ) ) { - parse_str( $url_parts['query'], $query_params ); - } - - // Add magic link specific parameters if provider is 'link' - if ( 'link' === $provider && is_array( $provider_args ) && ! empty( $provider_args['email_address'] ) ) { - $query_params['email_address'] = $provider_args['email_address']; - // Add flag to trigger magic link flow - $query_params['auto_trigger'] = '1'; - } - - // URL encode all parameter values - $query_params = array_map( 'rawurlencode', $query_params ); - - // Rebuild the URL - $url = 'https://' . $url_parts['host'] . $url_parts['path']; - if ( ! empty( $query_params ) ) { - $url = add_query_arg( $query_params, $url ); - } - } - } - - remove_filter( 'jetpack_connect_request_body', array( __CLASS__, 'filter_connect_request_body' ) ); - remove_filter( 'jetpack_connect_redirect_url', array( __CLASS__, 'filter_connect_redirect_url' ) ); - - /** - * Filter the URL used when authorizing a user to a WordPress.com account. - * - * @since jetpack-8.9.0 - * @since 2.7.6 Added $raw parameter. - * @since 6.8.0 Added $provider and $provider_args parameters. - * - * @param string $url Connection URL. - * @param bool $raw If true, URL will not be escaped. - * @param string|null $provider The authentication provider if specified. - * @param array|null $provider_args Additional provider-specific arguments. - */ - return apply_filters( 'jetpack_build_authorize_url', $url, $raw, $provider, $provider_args ); - } - - /** - * Filters the redirection URL that is used for connect requests. The redirect - * URL should return the user back to the My Jetpack page. - * - * @param string $redirect the default redirect URL used by the package. - * @return string the modified URL. - */ - public static function filter_connect_redirect_url( $redirect ) { - $jetpack_admin_page = esc_url_raw( admin_url( 'admin.php?page=my-jetpack' ) ); - $redirect = $redirect - ? wp_validate_redirect( esc_url_raw( $redirect ), $jetpack_admin_page ) - : $jetpack_admin_page; - - if ( - class_exists( 'Jetpack_Network' ) - && isset( $_REQUEST['is_multisite'] ) // phpcs:ignore WordPress.Security.NonceVerification.Recommended - ) { - $redirect = Jetpack_Network::init()->get_url( 'network_admin_page' ); - } - - return $redirect; - } - - /** - * Filters the connection URL parameter array. - * - * @param array $args default URL parameters used by the package. - * @return array the modified URL arguments array. - */ - public static function filter_connect_request_body( $args ) { - if ( - Constants::is_defined( 'JETPACK__GLOTPRESS_LOCALES_PATH' ) - && include_once Constants::get_constant( 'JETPACK__GLOTPRESS_LOCALES_PATH' ) - ) { - $gp_locale = GP_Locales::by_field( 'wp_locale', get_locale() ); - $args['locale'] = isset( $gp_locale ) && isset( $gp_locale->slug ) - ? $gp_locale->slug - : ''; - } - - $tracking = new Tracking(); - $tracks_identity = $tracking->tracks_get_identity( $args['state'] ); - - $args = array_merge( - $args, - array( - '_ui' => $tracks_identity['_ui'], - '_ut' => $tracks_identity['_ut'], - ) - ); - - $calypso_env = ( new Host() )->get_calypso_env(); - - if ( ! empty( $calypso_env ) ) { - $args['calypso_env'] = $calypso_env; - } - - return $args; - } - - /** - * Return Calypso environment value; used for developing Jetpack and pairing - * it with different Calypso enrionments, such as localhost. - * Copied from Jetpack class. - * - * @deprecated 2.7.6 - * - * @since 1.37.1 - * - * @return string Calypso environment - */ - public static function get_calypso_env() { - _deprecated_function( __METHOD__, '2.7.6', 'Automattic\\Jetpack\\Status\\Host::get_calypso_env' ); - - return ( new Host() )->get_calypso_env(); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/CHANGELOG.md deleted file mode 100644 index a80b9126..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/CHANGELOG.md +++ /dev/null @@ -1,249 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [3.0.5] - 2025-03-21 -### Changed -- Internal updates. - -## [3.0.4] - 2025-03-12 -### Changed -- Internal updates. - -## [3.0.3] - 2025-03-05 -### Changed -- Internal updates. - -## [3.0.2] - 2025-02-24 -### Changed -- Update dependencies. - -## [3.0.1] - 2024-11-25 -### Changed -- Updated package dependencies. [#40258] - -## [3.0.0] - 2024-11-14 -### Removed -- General: Update minimum PHP version to 7.2. [#40147] - -## [2.0.5] - 2024-11-04 -### Added -- Enable test coverage. [#39961] - -## [2.0.4] - 2024-08-23 -### Changed -- Updated package dependencies. [#39004] - -## [2.0.3] - 2024-05-29 -### Fixed -- Fix phpdoc type on `Constants::set_constant()` value parameter. [#37606] - -## [2.0.2] - 2024-04-30 -### Changed -- Internal updates. - -## [2.0.1] - 2024-03-12 -### Changed -- Internal updates. - -## [2.0.0] - 2023-11-20 -### Changed -- Updated required PHP version to >= 7.0. [#34192] - -## [1.6.23] - 2023-08-23 -### Changed -- Updated package dependencies. [#32605] - -## [1.6.22] - 2023-04-10 -### Added -- Add Jetpack Autoloader package suggestion. [#29988] - -## [1.6.21] - 2023-02-20 -### Changed -- Minor internal updates. - -## [1.6.20] - 2022-12-02 -### Changed -- Updated package dependencies. [#27688] - -## [1.6.19] - 2022-11-22 -### Changed -- Updated package dependencies. [#27043] - -## [1.6.18] - 2022-07-26 -### Changed -- Updated package dependencies. [#25158] - -## [1.6.17] - 2022-06-21 -### Changed -- Renaming master to trunk. - -## [1.6.16] - 2022-04-26 -### Changed -- Updated package dependencies. - -## [1.6.15] - 2022-01-25 -### Changed -- Updated package dependencies. - -## [1.6.14] - 2022-01-04 -### Changed -- Switch to pcov for code coverage. -- Updated package dependencies - -## [1.6.13] - 2021-12-14 -### Changed -- Updated package dependencies. - -## [1.6.12] - 2021-11-22 -### Changed -- Updated package dependencies - -## [1.6.11] - 2021-11-02 -### Changed -- Set `convertDeprecationsToExceptions` true in PHPUnit config. -- Update PHPUnit configs to include just what needs coverage rather than include everything then try to exclude stuff that doesn't. - -## [1.6.10] - 2021-10-26 -### Fixed -- Updated is_true docblock to be more accurate. - -## [1.6.9] - 2021-10-13 -### Changed -- Updated package dependencies. - -## [1.6.8] - 2021-10-06 -### Changed -- Updated package dependencies - -## [1.6.7] - 2021-09-28 -### Changed -- Updated package dependencies. - -## [1.6.6] - 2021-08-30 -### Changed -- Run composer update on test-php command instead of phpunit -- Tests: update PHPUnit polyfills dependency (yoast/phpunit-polyfills). -- Updated versions in annotations - -## [1.6.5] - 2021-05-25 -### Changed -- Updated package dependencies. - -## [1.6.4] - 2021-04-08 -### Changed -- Packaging and build changes, no change to the package itself. - -## [1.6.3] - 2021-03-30 -### Added -- Composer alias for dev-master, to improve dependencies - -### Changed -- Update package dependencies. - -### Fixed -- Use `composer update` rather than `install` in scripts, as composer.lock isn't checked in. - -## [1.6.2] - 2021-02-05 - -- CI: Make tests more generic - -## [1.6.1] - 2021-01-19 - -- Add mirror-repo information to all current composer packages -- Monorepo: Reorganize all projects - -## [1.6.0] - 2020-12-14 - -- Update dependency brain/monkey to v2.6.0 -- Pin dependencies -- Packages: Update for PHP 8 testing - -## [1.5.1] - 2020-10-28 - -- Updated PHPCS: Packages and Debugger - -## [1.5.0] - 2020-08-13 - -- CI: Try collect js coverage -- Docker: Add package testing shortcut - -## [1.4.0] - 2020-07-01 - -- Package Unit tests: update test file names to make sure they runs in Travis - -## [1.3.0] - 2020-06-22 - -- PHPCS: Clean up the packages - -## [1.2.0] - 2020-04-15 - -- Use jp.com redirect in all links -- Connection: add a filter for setting Jetpack api constants - -## [1.1.3] - 2019-11-08 - -- Packages: Use classmap instead of PSR-4 - -## [1.1.2] - 2019-10-28 - -- Packages: Add gitattributes files to all packages that need th… - -## [1.1.1] - 2019-09-20 - -- Docs: Unify usage of @package phpdoc tags - -## [1.1.0] - 2019-09-14 - -## 1.0.0 - 2019-07-09 - -- Packages: Finish the constants package - -[3.0.5]: https://github.com/Automattic/jetpack-constants/compare/v3.0.4...v3.0.5 -[3.0.4]: https://github.com/Automattic/jetpack-constants/compare/v3.0.3...v3.0.4 -[3.0.3]: https://github.com/Automattic/jetpack-constants/compare/v3.0.2...v3.0.3 -[3.0.2]: https://github.com/Automattic/jetpack-constants/compare/v3.0.1...v3.0.2 -[3.0.1]: https://github.com/Automattic/jetpack-constants/compare/v3.0.0...v3.0.1 -[3.0.0]: https://github.com/Automattic/jetpack-constants/compare/v2.0.5...v3.0.0 -[2.0.5]: https://github.com/Automattic/jetpack-constants/compare/v2.0.4...v2.0.5 -[2.0.4]: https://github.com/Automattic/jetpack-constants/compare/v2.0.3...v2.0.4 -[2.0.3]: https://github.com/Automattic/jetpack-constants/compare/v2.0.2...v2.0.3 -[2.0.2]: https://github.com/Automattic/jetpack-constants/compare/v2.0.1...v2.0.2 -[2.0.1]: https://github.com/Automattic/jetpack-constants/compare/v2.0.0...v2.0.1 -[2.0.0]: https://github.com/Automattic/jetpack-constants/compare/v1.6.23...v2.0.0 -[1.6.23]: https://github.com/Automattic/jetpack-constants/compare/v1.6.22...v1.6.23 -[1.6.22]: https://github.com/Automattic/jetpack-constants/compare/v1.6.21...v1.6.22 -[1.6.21]: https://github.com/Automattic/jetpack-constants/compare/v1.6.20...v1.6.21 -[1.6.20]: https://github.com/Automattic/jetpack-constants/compare/v1.6.19...v1.6.20 -[1.6.19]: https://github.com/Automattic/jetpack-constants/compare/v1.6.18...v1.6.19 -[1.6.18]: https://github.com/Automattic/jetpack-constants/compare/v1.6.17...v1.6.18 -[1.6.17]: https://github.com/Automattic/jetpack-constants/compare/v1.6.16...v1.6.17 -[1.6.16]: https://github.com/Automattic/jetpack-constants/compare/v1.6.15...v1.6.16 -[1.6.15]: https://github.com/Automattic/jetpack-constants/compare/v1.6.14...v1.6.15 -[1.6.14]: https://github.com/Automattic/jetpack-constants/compare/v1.6.13...v1.6.14 -[1.6.13]: https://github.com/Automattic/jetpack-constants/compare/v1.6.12...v1.6.13 -[1.6.12]: https://github.com/Automattic/jetpack-constants/compare/v1.6.11...v1.6.12 -[1.6.11]: https://github.com/Automattic/jetpack-constants/compare/v1.6.10...v1.6.11 -[1.6.10]: https://github.com/Automattic/jetpack-constants/compare/v1.6.9...v1.6.10 -[1.6.9]: https://github.com/Automattic/jetpack-constants/compare/v1.6.8...v1.6.9 -[1.6.8]: https://github.com/Automattic/jetpack-constants/compare/v1.6.7...v1.6.8 -[1.6.7]: https://github.com/Automattic/jetpack-constants/compare/v1.6.6...v1.6.7 -[1.6.6]: https://github.com/Automattic/jetpack-constants/compare/v1.6.5...v1.6.6 -[1.6.5]: https://github.com/Automattic/jetpack-constants/compare/v1.6.4...v1.6.5 -[1.6.4]: https://github.com/Automattic/jetpack-constants/compare/v1.6.3...v1.6.4 -[1.6.3]: https://github.com/Automattic/jetpack-constants/compare/v1.6.2...v1.6.3 -[1.6.2]: https://github.com/Automattic/jetpack-constants/compare/v1.6.1...v1.6.2 -[1.6.1]: https://github.com/Automattic/jetpack-constants/compare/v1.6.0...v1.6.1 -[1.6.0]: https://github.com/Automattic/jetpack-constants/compare/v1.5.1...v1.6.0 -[1.5.1]: https://github.com/Automattic/jetpack-constants/compare/v1.5.0...v1.5.1 -[1.5.0]: https://github.com/Automattic/jetpack-constants/compare/v1.4.0...v1.5.0 -[1.4.0]: https://github.com/Automattic/jetpack-constants/compare/v1.3.0...v1.4.0 -[1.3.0]: https://github.com/Automattic/jetpack-constants/compare/v1.2.0...v1.3.0 -[1.2.0]: https://github.com/Automattic/jetpack-constants/compare/v1.1.3...v1.2.0 -[1.1.3]: https://github.com/Automattic/jetpack-constants/compare/v1.1.2...v1.1.3 -[1.1.2]: https://github.com/Automattic/jetpack-constants/compare/v1.1.1...v1.1.2 -[1.1.1]: https://github.com/Automattic/jetpack-constants/compare/v1.1.0...v1.1.1 -[1.1.0]: https://github.com/Automattic/jetpack-constants/compare/v1.0.0...v1.1.0 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/composer.json deleted file mode 100644 index 278c4369..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/composer.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "automattic/jetpack-constants", - "description": "A wrapper for defining constants in a more testable way.", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2" - }, - "require-dev": { - "brain/monkey": "^2.6.2", - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "scripts": { - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" - ], - "test-php": [ - "@composer phpunit" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-constants", - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-constants/compare/v${old}...v${new}" - }, - "branch-alias": { - "dev-trunk": "3.0.x-dev" - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/src/class-constants.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/src/class-constants.php deleted file mode 100644 index 45768a94..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-constants/src/class-constants.php +++ /dev/null @@ -1,124 +0,0 @@ -= 7.0. [#34192] - -## [1.5.1] - 2023-11-14 - -## [1.5.0] - 2023-11-13 -### Added -- Added 'cookieinformationscanner' and 'facebookexternalhit' to the bot user agent list. [#34026] - -## [1.4.27] - 2023-08-23 -### Changed -- Updated package dependencies. [#32605] - -## [1.4.26] - 2023-06-12 -### Fixed -- Catch PHP notice if User Agent is not available [#31279] - -## [1.4.25] - 2023-04-10 -### Added -- Add Jetpack Autoloader package suggestion. [#29988] - -## [1.4.24] - 2023-02-20 -### Changed -- Minor internal updates. - -## [1.4.23] - 2023-01-11 -### Changed -- Updated package dependencies. - -## [1.4.22] - 2022-12-02 -### Changed -- Updated package dependencies. [#27688] - -## [1.4.21] - 2022-11-22 -### Added -- Add a guard in `functions.php` against being loaded twice from different copies of the package. [#27475] - -### Changed -- Updated package dependencies. [#27043] - -## [1.4.20] - 2022-11-07 -### Fixed -- Ensure that User_Agent is loaded in environments without autoload enabled. (e.g.: WordPress.com and Super Cache) [#27223] - -## [1.4.19] - 2022-10-25 -### Changed -- Update `wp_unslash` wrapper to possibly run on wpcom before WordPress is loaded. [#26971] - -## [1.4.18] - 2022-07-26 -### Changed -- Updated package dependencies. [#25158] - -## [1.4.17] - 2022-06-21 -### Changed -- Renaming master to trunk. - -## [1.4.16] - 2022-04-26 -### Changed -- Updated package dependencies. - -## [1.4.15] - 2022-04-19 -### Changed -- PHPCS: Fix `WordPress.Security.ValidatedSanitizedInput` - -## [1.4.14] - 2022-03-29 -### Changed -- Microperformance: Use === null instead of is_null - -## [1.4.13] - 2022-02-09 -### Fixed -- Fixed some new PHPCS warnings. - -## [1.4.12] - 2022-01-25 -### Changed -- Updated package dependencies. - -## [1.4.11] - 2022-01-04 -### Changed -- Switch to pcov for code coverage. -- Updated package dependencies - -## [1.4.10] - 2021-12-14 -### Changed -- Updated package dependencies. - -## [1.4.9] - 2021-11-16 -### Fixed -- Verify $_SERVER['HTTP_USER_AGENT'] exists before use. - -## [1.4.8] - 2021-11-02 -### Changed -- Set `convertDeprecationsToExceptions` true in PHPUnit config. -- Update PHPUnit configs to include just what needs coverage rather than include everything then try to exclude stuff that doesn't. - -## [1.4.7] - 2021-10-19 -### Deprecated -- General: remove numerous long-deprecated functions. - -## [1.4.6] - 2021-10-13 -### Changed -- Updated package dependencies. - -## [1.4.5] - 2021-10-12 -### Changed -- Updated package dependencies - -## [1.4.4] - 2021-09-28 -### Changed -- Updated package dependencies. - -## [1.4.3] - 2021-08-31 -### Changed -- Run composer update on test-php command instead of phpunit. -- Tests: update PHPUnit polyfills dependency (yoast/phpunit-polyfills). -- Updated versions in annotations. - -## [1.4.2] - 2021-05-25 -### Changed -- Updated package dependencies. - -## [1.4.1] - 2021-04-27 -### Changed -- Updated package dependencies. - -## [1.4.0] - 2021-03-30 -### Added -- Added Opera Desktop detection -- Composer alias for dev-master, to improve dependencies - -### Changed -- Update package dependencies. - -### Fixed -- Use `composer update` rather than `install` in scripts, as composer.lock isn't checked in. - -## [1.3.2] - 2021-02-05 - -- CI: Make tests more generic - -## [1.3.1] - 2021-01-19 - -- Add mirror-repo information to all current composer packages -- Monorepo: Reorganize all projects - -## [1.3.0] - 2020-12-09 - -- Codesniffer: Update mediawiki/mediawiki-codesniffer dependency -- Pin dependencies -- Packages: Update for PHP 8 testing - -## [1.2.1] - 2020-11-10 - -- Improve PHP 8 compatibility -- Updated PHPCS: Packages and Debugger - -## [1.2.0] - 2020-10-19 - -- Replaced intval() with (int) as part of issue #17432. - -## [1.1.0] - 2020-08-13 - -- CI: Try collect js coverage - -## 1.0.0 - 2020-06-25 - -- Moving jetpack_is_mobile into a package - -[3.0.5]: https://github.com/Automattic/jetpack-device-detection/compare/v3.0.4...v3.0.5 -[3.0.4]: https://github.com/Automattic/jetpack-device-detection/compare/v3.0.3...v3.0.4 -[3.0.3]: https://github.com/Automattic/jetpack-device-detection/compare/v3.0.2...v3.0.3 -[3.0.2]: https://github.com/Automattic/jetpack-device-detection/compare/v3.0.1...v3.0.2 -[3.0.1]: https://github.com/Automattic/jetpack-device-detection/compare/v3.0.0...v3.0.1 -[3.0.0]: https://github.com/Automattic/jetpack-device-detection/compare/v2.1.6...v3.0.0 -[2.1.6]: https://github.com/Automattic/jetpack-device-detection/compare/v2.1.5...v2.1.6 -[2.1.5]: https://github.com/Automattic/jetpack-device-detection/compare/v2.1.4...v2.1.5 -[2.1.4]: https://github.com/Automattic/jetpack-device-detection/compare/v2.1.3...v2.1.4 -[2.1.3]: https://github.com/Automattic/jetpack-device-detection/compare/v2.1.2...v2.1.3 -[2.1.2]: https://github.com/Automattic/jetpack-device-detection/compare/v2.1.1...v2.1.2 -[2.1.1]: https://github.com/Automattic/jetpack-device-detection/compare/v2.1.0...v2.1.1 -[2.1.0]: https://github.com/Automattic/jetpack-device-detection/compare/v2.0.1...v2.1.0 -[2.0.1]: https://github.com/Automattic/jetpack-device-detection/compare/v2.0.0...v2.0.1 -[2.0.0]: https://github.com/Automattic/jetpack-device-detection/compare/v1.5.1...v2.0.0 -[1.5.1]: https://github.com/Automattic/jetpack-device-detection/compare/v1.5.0...v1.5.1 -[1.5.0]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.27...v1.5.0 -[1.4.27]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.26...v1.4.27 -[1.4.26]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.25...v1.4.26 -[1.4.25]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.24...v1.4.25 -[1.4.24]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.23...v1.4.24 -[1.4.23]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.22...v1.4.23 -[1.4.22]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.21...v1.4.22 -[1.4.21]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.20...v1.4.21 -[1.4.20]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.19...v1.4.20 -[1.4.19]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.18...v1.4.19 -[1.4.18]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.17...v1.4.18 -[1.4.17]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.16...v1.4.17 -[1.4.16]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.15...v1.4.16 -[1.4.15]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.14...v1.4.15 -[1.4.14]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.13...v1.4.14 -[1.4.13]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.12...v1.4.13 -[1.4.12]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.11...v1.4.12 -[1.4.11]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.10...v1.4.11 -[1.4.10]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.9...v1.4.10 -[1.4.9]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.8...v1.4.9 -[1.4.8]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.7...v1.4.8 -[1.4.7]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.6...v1.4.7 -[1.4.6]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.5...v1.4.6 -[1.4.5]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.4...v1.4.5 -[1.4.4]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.3...v1.4.4 -[1.4.3]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.2...v1.4.3 -[1.4.2]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.1...v1.4.2 -[1.4.1]: https://github.com/Automattic/jetpack-device-detection/compare/v1.4.0...v1.4.1 -[1.4.0]: https://github.com/Automattic/jetpack-device-detection/compare/v1.3.2...v1.4.0 -[1.3.2]: https://github.com/Automattic/jetpack-device-detection/compare/v1.3.1...v1.3.2 -[1.3.1]: https://github.com/Automattic/jetpack-device-detection/compare/v1.3.0...v1.3.1 -[1.3.0]: https://github.com/Automattic/jetpack-device-detection/compare/v1.2.1...v1.3.0 -[1.2.1]: https://github.com/Automattic/jetpack-device-detection/compare/v1.2.0...v1.2.1 -[1.2.0]: https://github.com/Automattic/jetpack-device-detection/compare/v1.1.0...v1.2.0 -[1.1.0]: https://github.com/Automattic/jetpack-device-detection/compare/v1.0.0...v1.1.0 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/composer.json deleted file mode 100644 index 96803d29..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/composer.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "automattic/jetpack-device-detection", - "description": "A way to detect device types based on User-Agent header.", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2" - }, - "require-dev": { - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "scripts": { - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" - ], - "test-php": [ - "@composer phpunit" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-device-detection", - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-device-detection/compare/v${old}...v${new}" - }, - "branch-alias": { - "dev-trunk": "3.0.x-dev" - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/src/class-device-detection.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/src/class-device-detection.php deleted file mode 100644 index 62361d7e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/src/class-device-detection.php +++ /dev/null @@ -1,255 +0,0 @@ - (bool) Whether the current device is a mobile phone. - * 'is_smartphone' => (bool) Whether the current device is a smartphone. - * 'is_tablet' => (bool) Whether the current device is a tablet device. - * 'is_handheld' => (bool) Whether the current device is a handheld device. - * 'is_desktop' => (bool) Whether the current device is a laptop / desktop device. - * 'platform' => (string) Detected platform. - * 'is_phone_matched_ua' => (string) Matched UA. - * ); - */ - public static function get_info( $ua = '' ) { - // Return memoized result if available. - // phpcs:disable WordPress.Security.ValidatedSanitizedInput - $memo_key = ! empty( $ua ) ? $ua : ( $_SERVER['HTTP_USER_AGENT'] ?? '' ); - // Note: UA string used raw for compatibility reasons. - // No sanitization is needed as the value is never output or persisted, and is only used for memoization. - // phpcs:enable WordPress.Security.ValidatedSanitizedInput - if ( isset( self::$get_info_memo[ $memo_key ] ) ) { - return self::$get_info_memo[ $memo_key ]; - } - - $ua_info = new User_Agent_Info( $ua ); - - $info = array( - 'is_phone' => self::is_mobile( 'any', false, $ua_info ), - 'is_phone_matched_ua' => self::is_mobile( 'any', true, $ua_info ), - 'is_smartphone' => self::is_mobile( 'smart', false, $ua_info ), - 'is_tablet' => $ua_info->is_tablet(), - 'platform' => $ua_info->get_platform(), - 'desktop_platform' => $ua_info->get_desktop_platform(), - 'browser' => $ua_info->get_browser(), - ); - - $info['is_handheld'] = $info['is_phone'] || $info['is_tablet']; - $info['is_desktop'] = ! $info['is_handheld']; - - if ( function_exists( 'apply_filters' ) ) { - /** - * Filter the value of Device_Detection::get_info. - * - * @since 1.0.0 - * - * @param array $info Array of device information. - * @param string $ua User agent string passed to Device_Detection::get_info. - * @param User_Agent_Info $ua_info Instance of Automattic\Jetpack\Device_Detection\User_Agent_Info. - */ - $info = apply_filters( 'jetpack_device_detection_get_info', $info, $ua, $ua_info ); - } - - // Memoize the result. - self::$get_info_memo[ $memo_key ] = $info; - if ( count( self::$get_info_memo ) > self::$max_memo_size ) { - array_shift( self::$get_info_memo ); - } - - return $info; - } - - /** - * Detects phone devices. - * - * @param string $ua User-Agent string. - * - * @return bool - */ - public static function is_phone( $ua = '' ) { - $device_info = self::get_info( $ua ); - return true === $device_info['is_phone']; - } - - /** - * Detects smartphone devices. - * - * @param string $ua User-Agent string. - * - * @return bool - */ - public static function is_smartphone( $ua = '' ) { - $device_info = self::get_info( $ua ); - return true === $device_info['is_smartphone']; - } - - /** - * Detects tablet devices. - * - * @param string $ua User-Agent string. - * - * @return bool - */ - public static function is_tablet( $ua = '' ) { - $device_info = self::get_info( $ua ); - return true === $device_info['is_tablet']; - } - - /** - * Detects desktop devices. - * - * @param string $ua User-Agent string. - * - * @return bool - */ - public static function is_desktop( $ua = '' ) { - $device_info = self::get_info( $ua ); - return true === $device_info['is_desktop']; - } - - /** - * Detects handheld (i.e. phone + tablet) devices. - * - * @param string $ua User-Agent string. - * - * @return bool - */ - public static function is_handheld( $ua = '' ) { - $device_info = self::get_info( $ua ); - return true === $device_info['is_handheld']; - } - - /** - * Determine if the current User Agent matches the passed $kind. - * - * @param string $kind Category of mobile device to check for. Either: any, dumb, smart. - * @param bool $return_matched_agent Boolean indicating if the UA should be returned. - * @param User_Agent_Info $ua_info Boolean indicating if the UA should be returned. - * - * @return bool|string Boolean indicating if current UA matches $kind. If `$return_matched_agent` is true, returns the UA string. - */ - private static function is_mobile( $kind, $return_matched_agent, $ua_info ) { - $kinds = array( - 'smart' => false, - 'dumb' => false, - 'any' => false, - ); - $first_run = true; - $matched_agent = ''; - - // If an invalid kind is passed in, reset it to default. - if ( ! isset( $kinds[ $kind ] ) ) { - $kind = 'any'; - } - - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $agent = strtolower( filter_var( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ) ); - if ( strpos( $agent, 'ipad' ) ) { - return false; - } - - // Remove Samsung Galaxy tablets (SCH-I800) from being mobile devices. - if ( strpos( $agent, 'sch-i800' ) ) { - return false; - } - - if ( $ua_info->is_android_tablet() && false === $ua_info->is_kindle_touch() ) { - return false; - } - - if ( $ua_info->is_blackberry_tablet() ) { - return false; - } - - if ( $first_run ) { - $first_run = false; - - // checks for iPhoneTier devices & RichCSS devices. - if ( $ua_info->isTierIphone() || $ua_info->isTierRichCSS() ) { - $kinds['smart'] = true; - $matched_agent = $ua_info->matched_agent; - } - - if ( ! $kinds['smart'] ) { - // if smart, we are not dumb so no need to check. - $dumb_agents = $ua_info->dumb_agents; - - foreach ( $dumb_agents as $dumb_agent ) { - if ( false !== strpos( $agent, $dumb_agent ) ) { - $kinds['dumb'] = true; - $matched_agent = $dumb_agent; - - break; - } - } - - if ( ! $kinds['dumb'] ) { - if ( isset( $_SERVER['HTTP_X_WAP_PROFILE'] ) ) { - $kinds['dumb'] = true; - $matched_agent = 'http_x_wap_profile'; - } elseif ( isset( $_SERVER['HTTP_ACCEPT'] ) && ( preg_match( '/wap\.|\.wap/i', $_SERVER['HTTP_ACCEPT'] ) || false !== strpos( strtolower( $_SERVER['HTTP_ACCEPT'] ), 'application/vnd.wap.xhtml+xml' ) ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput -- This is doing the validating. - $kinds['dumb'] = true; - $matched_agent = 'vnd.wap.xhtml+xml'; - } - } - } - - if ( $kinds['dumb'] || $kinds['smart'] ) { - $kinds['any'] = true; - } - } - - $value = $kinds[ $kind ]; - - if ( $return_matched_agent ) { - $value = $matched_agent; - } - return $value; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/src/class-user-agent-info.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/src/class-user-agent-info.php deleted file mode 100644 index 96fb68cd..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/src/class-user-agent-info.php +++ /dev/null @@ -1,1755 +0,0 @@ -useragent = $ua; - } elseif ( ! empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - $this->useragent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This class is all about validating. - } - } - - /** - * This method detects the mobile User Agent name. - * - * @return string The matched User Agent name, false otherwise. - */ - public function get_mobile_user_agent_name() { - if ( static::is_chrome_for_iOS() ) { // Keep this check before the safari rule. - return 'chrome-for-ios'; - } elseif ( static::is_iphone_or_ipod( 'iphone-safari' ) ) { - return 'iphone'; - } elseif ( static::is_ipad( 'ipad-safari' ) ) { - return 'ipad'; - } elseif ( static::is_android_tablet() ) { // Keep this check before the android rule. - return 'android_tablet'; - } elseif ( static::is_android() ) { - return 'android'; - } elseif ( static::is_blackberry_10() ) { - return 'blackberry_10'; - } elseif ( static::is_blackbeberry() ) { - return 'blackberry'; - } elseif ( static::is_WindowsPhone7() ) { - return 'win7'; - } elseif ( static::is_windows_phone_8() ) { - return 'winphone8'; - } elseif ( static::is_opera_mini() ) { - return 'opera-mini'; - } elseif ( static::is_opera_mini_dumb() ) { - return 'opera-mini-dumb'; - } elseif ( static::is_opera_mobile() ) { - return 'opera-mobi'; - } elseif ( static::is_blackberry_tablet() ) { - return 'blackberry_tablet'; - } elseif ( static::is_kindle_fire() ) { - return 'kindle-fire'; - } elseif ( static::is_PalmWebOS() ) { - return 'webos'; - } elseif ( static::is_S60_OSSBrowser() ) { - return 'series60'; - } elseif ( static::is_firefox_os() ) { - return 'firefoxOS'; - } elseif ( static::is_firefox_mobile() ) { - return 'firefox_mobile'; - } elseif ( static::is_MaemoTablet() ) { - return 'maemo'; - } elseif ( static::is_MeeGo() ) { - return 'meego'; - } elseif ( static::is_TouchPad() ) { - return 'hp_tablet'; - } elseif ( static::is_facebook_for_iphone() ) { - return 'facebook-for-iphone'; - } elseif ( static::is_facebook_for_ipad() ) { - return 'facebook-for-ipad'; - } elseif ( static::is_twitter_for_iphone() ) { - return 'twitter-for-iphone'; - } elseif ( static::is_twitter_for_ipad() ) { - return 'twitter-for-ipad'; - } elseif ( static::is_wordpress_for_ios() ) { - return 'ios-app'; - } elseif ( static::is_iphone_or_ipod( 'iphone-not-safari' ) ) { - return 'iphone-unknown'; - } elseif ( static::is_ipad( 'ipad-not-safari' ) ) { - return 'ipad-unknown'; - } elseif ( static::is_Nintendo_3DS() ) { - return 'nintendo-3ds'; - } else { - $agent = $this->useragent; - $dumb_agents = $this->dumb_agents; - foreach ( $dumb_agents as $dumb_agent ) { - if ( false !== strpos( $agent, $dumb_agent ) ) { - return $dumb_agent; - } - } - } - - return false; - } - - /** - * This method detects the mobile device's platform. All return strings are from the class constants. - * Note that this function returns the platform name, not the UA name/type. You should use a different function - * if you need to test the UA capabilites. - * - * @return string|bool Name of the platform, false otherwise. - */ - public function get_platform() { - if ( isset( $this->platform ) ) { - return $this->platform; - } - - if ( empty( $this->useragent ) ) { - return false; - } - - if ( strpos( $this->useragent, 'windows phone' ) !== false ) { - $this->platform = self::PLATFORM_WINDOWS; - } elseif ( strpos( $this->useragent, 'windows ce' ) !== false ) { - $this->platform = self::PLATFORM_WINDOWS; - } elseif ( strpos( $this->useragent, 'ipad' ) !== false ) { - $this->platform = self::PLATFORM_IPAD; - } elseif ( strpos( $this->useragent, 'ipod' ) !== false ) { - $this->platform = self::PLATFORM_IPOD; - } elseif ( strpos( $this->useragent, 'iphone' ) !== false ) { - $this->platform = self::PLATFORM_IPHONE; - } elseif ( strpos( $this->useragent, 'android' ) !== false ) { - if ( static::is_android_tablet() ) { - $this->platform = self::PLATFORM_ANDROID_TABLET; - } else { - $this->platform = self::PLATFORM_ANDROID; - } - } elseif ( static::is_kindle_fire() ) { - $this->platform = self::PLATFORM_ANDROID_TABLET; - } elseif ( static::is_blackberry_10() ) { - $this->platform = self::PLATFORM_BLACKBERRY_10; - } elseif ( strpos( $this->useragent, 'blackberry' ) !== false ) { - $this->platform = self::PLATFORM_BLACKBERRY; - } elseif ( static::is_blackberry_tablet() ) { - $this->platform = self::PLATFORM_BLACKBERRY; - } elseif ( static::is_symbian_platform() ) { - $this->platform = self::PLATFORM_SYMBIAN; - } elseif ( static::is_symbian_s40_platform() ) { - $this->platform = self::PLATFORM_SYMBIAN_S40; - } elseif ( static::is_J2ME_platform() ) { - $this->platform = self::PLATFORM_J2ME_MIDP; - } elseif ( static::is_firefox_os() ) { - $this->platform = self::PLATFORM_FIREFOX_OS; - } else { - $this->platform = false; - } - - return $this->platform; - } - - /** - * Returns the platform for desktops - * - * @return string - */ - public function get_desktop_platform() { - $ua = $this->useragent; - if ( empty( $ua ) ) { - return false; - } - $platform = self::OTHER; - - if ( static::is_linux_desktop() ) { - $platform = self::PLATFORM_DESKTOP_LINUX; - } elseif ( static::is_mac_desktop() ) { - $platform = self::PLATFORM_DESKTOP_MAC; - } elseif ( static::is_windows_desktop() ) { - $platform = self::PLATFORM_DESKTOP_WINDOWS; - } elseif ( static::is_chrome_desktop() ) { - $platform = self::PLATFORM_DESKTOP_CHROME; - } - return $platform; - } - - /** - * A simple pattern matching method for extracting the browser from the user agent. - * - * @return string - */ - public function get_browser() { - $ua = $this->useragent; - if ( empty( $ua ) ) { - return self::OTHER; - } - - if ( static::is_opera_mini() || static::is_opera_mobile() || static::is_opera_desktop() || static::is_opera_mini_dumb() ) { - return self::BROWSER_OPERA; - } elseif ( static::is_edge_browser() ) { - return self::BROWSER_EDGE; - } elseif ( static::is_chrome_desktop() || self::is_chrome_for_iOS() ) { - return self::BROWSER_CHROME; - } elseif ( static::is_safari_browser() ) { - return self::BROWSER_SAFARI; - } elseif ( static::is_firefox_mobile() || static::is_firefox_desktop() ) { - return self::BROWSER_FIREFOX; - } elseif ( static::is_ie_browser() ) { - return self::BROWSER_IE; - } - return self::OTHER; - } - - /** - * This method detects for UA which can display iPhone-optimized web content. - * Includes iPhone, iPod Touch, Android, WebOS, Fennec (Firefox mobile), etc. - */ - public function isTierIphone() { - if ( isset( $this->isTierIphone ) ) { - return $this->isTierIphone; - } - if ( $this->is_iphoneOrIpod() ) { - $this->matched_agent = 'iphone'; - $this->isTierIphone = true; - $this->isTierRichCss = false; - $this->isTierGenericMobile = false; - } elseif ( static::is_android() ) { - $this->matched_agent = 'android'; - $this->isTierIphone = true; - $this->isTierRichCss = false; - $this->isTierGenericMobile = false; - } elseif ( static::is_windows_phone_8() ) { - $this->matched_agent = 'winphone8'; - $this->isTierIphone = true; - $this->isTierRichCss = false; - $this->isTierGenericMobile = false; - } elseif ( static::is_WindowsPhone7() ) { - $this->matched_agent = 'win7'; - $this->isTierIphone = true; - $this->isTierRichCss = false; - $this->isTierGenericMobile = false; - } elseif ( static::is_blackberry_10() ) { - $this->matched_agent = 'blackberry-10'; - $this->isTierIphone = true; - $this->isTierRichCss = false; - $this->isTierGenericMobile = false; - } elseif ( static::is_blackbeberry() && 'blackberry-webkit' === static::detect_blackberry_browser_version() ) { - $this->matched_agent = 'blackberry-webkit'; - $this->isTierIphone = true; - $this->isTierRichCss = false; - $this->isTierGenericMobile = false; - } elseif ( static::is_blackberry_tablet() ) { - $this->matched_agent = 'blackberry_tablet'; - $this->isTierIphone = true; - $this->isTierRichCss = false; - $this->isTierGenericMobile = false; - } elseif ( static::is_PalmWebOS() ) { - $this->matched_agent = 'webos'; - $this->isTierIphone = true; - $this->isTierRichCss = false; - $this->isTierGenericMobile = false; - } elseif ( static::is_TouchPad() ) { - $this->matched_agent = 'hp_tablet'; - $this->isTierIphone = true; - $this->isTierRichCss = false; - $this->isTierGenericMobile = false; - } elseif ( static::is_firefox_os() ) { - $this->matched_agent = 'firefoxOS'; - $this->isTierIphone = true; - $this->isTierRichCss = false; - $this->isTierGenericMobile = false; - } elseif ( static::is_firefox_mobile() ) { - $this->matched_agent = 'fennec'; - $this->isTierIphone = true; - $this->isTierRichCss = false; - $this->isTierGenericMobile = false; - } elseif ( static::is_opera_mobile() ) { - $this->matched_agent = 'opera-mobi'; - $this->isTierIphone = true; - $this->isTierRichCss = false; - $this->isTierGenericMobile = false; - } elseif ( static::is_MaemoTablet() ) { - $this->matched_agent = 'maemo'; - $this->isTierIphone = true; - $this->isTierRichCss = false; - $this->isTierGenericMobile = false; - } elseif ( static::is_MeeGo() ) { - $this->matched_agent = 'meego'; - $this->isTierIphone = true; - $this->isTierRichCss = false; - $this->isTierGenericMobile = false; - } elseif ( static::is_kindle_touch() ) { - $this->matched_agent = 'kindle-touch'; - $this->isTierIphone = true; - $this->isTierRichCss = false; - $this->isTierGenericMobile = false; - } elseif ( static::is_Nintendo_3DS() ) { - $this->matched_agent = 'nintendo-3ds'; - $this->isTierIphone = true; - $this->isTierRichCss = false; - $this->isTierGenericMobile = false; - } else { - $this->isTierIphone = false; - } - return $this->isTierIphone; - } - - /** - * This method detects for UA which are likely to be capable - * but may not necessarily support JavaScript. - * Excludes all iPhone Tier UA. - */ - public function isTierRichCss() { - if ( isset( $this->isTierRichCss ) ) { - return $this->isTierRichCss; - } - if ( $this->isTierIphone() ) { - return false; - } - - // The following devices are explicitly ok. - if ( static::is_S60_OSSBrowser() ) { - $this->matched_agent = 'series60'; - $this->isTierIphone = false; - $this->isTierRichCss = true; - $this->isTierGenericMobile = false; - } elseif ( static::is_opera_mini() ) { - $this->matched_agent = 'opera-mini'; - $this->isTierIphone = false; - $this->isTierRichCss = true; - $this->isTierGenericMobile = false; - } elseif ( static::is_blackbeberry() ) { - $detectedDevice = static::detect_blackberry_browser_version(); - if ( - 'blackberry-5' === $detectedDevice - || 'blackberry-4.7' === $detectedDevice - || 'blackberry-4.6' === $detectedDevice - ) { - $this->matched_agent = $detectedDevice; - $this->isTierIphone = false; - $this->isTierRichCss = true; - $this->isTierGenericMobile = false; - } - } else { - $this->isTierRichCss = false; - } - - return $this->isTierRichCss; - } - - /** - * Detects if the user is using a tablet. - * props Corey Gilmore, BGR.com - * - * @return bool - */ - public function is_tablet() { - return ( 0 // Never true, but makes it easier to manage our list of tablet conditions. - || self::is_ipad() - || self::is_android_tablet() - || self::is_blackberry_tablet() - || self::is_kindle_fire() - || self::is_MaemoTablet() - || self::is_TouchPad() - ); - } - - /** - * Detects if the current UA is the default iPhone or iPod Touch Browser. - * - * DEPRECATED: use is_iphone_or_ipod - */ - public function is_iphoneOrIpod() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - if ( ( strpos( $ua, 'iphone' ) !== false ) || ( strpos( $ua, 'ipod' ) !== false ) ) { - if ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() ) { - return false; - } else { - return true; - } - } else { - return false; - } - } - - /** - * Detects if the current UA is iPhone Mobile Safari or another iPhone or iPod Touch Browser. - * - * They type can check for any iPhone, an iPhone using Safari, or an iPhone using something other than Safari. - * - * Note: If you want to check for Opera mini, Opera mobile or Firefox mobile (or any 3rd party iPhone browser), - * you should put the check condition before the check for 'iphone-any' or 'iphone-not-safari'. - * Otherwise those browsers will be 'catched' by the iphone string. - * - * @param string $type Type of iPhone detection. - */ - public static function is_iphone_or_ipod( $type = 'iphone-any' ) { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - $is_iphone = ( strpos( $ua, 'iphone' ) !== false ) || ( strpos( $ua, 'ipod' ) !== false ); - $is_safari = ( false !== strpos( $ua, 'safari' ) ); - - if ( 'iphone-safari' === $type ) { - return $is_iphone && $is_safari; - } elseif ( 'iphone-not-safari' === $type ) { - return $is_iphone && ! $is_safari; - } else { - return $is_iphone; - } - } - - /** - * Detects if the current UA is Chrome for iOS - * - * The User-Agent string in Chrome for iOS is the same as the Mobile Safari User-Agent, with CriOS/ instead of Version/. - * - Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3 - */ - public static function is_chrome_for_iOS() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - if ( self::is_iphone_or_ipod( 'iphone-safari' ) === false ) { - return false; - } - - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - if ( strpos( $ua, 'crios/' ) !== false ) { - return true; - } else { - return false; - } - } - - /** - * Detects if the current UA is Twitter for iPhone - * - * Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_5 like Mac OS X; nb-no) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8L1 Twitter for iPhone - * Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B206 Twitter for iPhone - */ - public static function is_twitter_for_iphone() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - if ( strpos( $ua, 'ipad' ) !== false ) { - return false; - } - - if ( strpos( $ua, 'twitter for iphone' ) !== false ) { - return true; - } else { - return false; - } - } - - /** - * Detects if the current UA is Twitter for iPad - * - * Old version 4.X - Mozilla/5.0 (iPad; U; CPU OS 4_3_5 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8L1 Twitter for iPad - * Ver 5.0 or Higher - Mozilla/5.0 (iPad; CPU OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B206 Twitter for iPhone - */ - public static function is_twitter_for_ipad() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - if ( strpos( $ua, 'twitter for ipad' ) !== false ) { - return true; - } elseif ( strpos( $ua, 'ipad' ) !== false && strpos( $ua, 'twitter for iphone' ) !== false ) { - return true; - } else { - return false; - } - } - - /** - * Detects if the current UA is Facebook for iPhone - * - Facebook 4020.0 (iPhone; iPhone OS 5.0.1; fr_FR) - * - Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_0 like Mac OS X; en_US) AppleWebKit (KHTML, like Gecko) Mobile [FBAN/FBForIPhone;FBAV/4.0.2;FBBV/4020.0;FBDV/iPhone3,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/5.0;FBSS/2; FBCR/O2;FBID/phone;FBLC/en_US;FBSF/2.0] - * - Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B206 [FBAN/FBIOS;FBAV/5.0;FBBV/47423;FBDV/iPhone3,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/5.1.1;FBSS/2; FBCR/3ITA;FBID/phone;FBLC/en_US] - */ - public static function is_facebook_for_iphone() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - if ( false === strpos( $ua, 'iphone' ) ) { - return false; - } - - if ( false !== strpos( $ua, 'facebook' ) && false === strpos( $ua, 'ipad' ) ) { - return true; - } elseif ( false !== strpos( $ua, 'fbforiphone' ) && false === strpos( $ua, 'tablet' ) ) { - return true; - } elseif ( false !== strpos( $ua, 'fban/fbios;' ) && false === strpos( $ua, 'tablet' ) ) { // FB app v5.0 or higher. - return true; - } else { - return false; - } - } - - /** - * Detects if the current UA is Facebook for iPad - * - Facebook 4020.0 (iPad; iPhone OS 5.0.1; en_US) - * - Mozilla/5.0 (iPad; U; CPU iPhone OS 5_0 like Mac OS X; en_US) AppleWebKit (KHTML, like Gecko) Mobile [FBAN/FBForIPhone;FBAV/4.0.2;FBBV/4020.0;FBDV/iPad2,1;FBMD/iPad;FBSN/iPhone OS;FBSV/5.0;FBSS/1; FBCR/;FBID/tablet;FBLC/en_US;FBSF/1.0] - * - Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10A403 [FBAN/FBIOS;FBAV/5.0;FBBV/47423;FBDV/iPad2,1;FBMD/iPad;FBSN/iPhone OS;FBSV/6.0;FBSS/1; FBCR/;FBID/tablet;FBLC/en_US] - */ - public static function is_facebook_for_ipad() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - if ( false === strpos( $ua, 'ipad' ) ) { - return false; - } - - if ( false !== strpos( $ua, 'facebook' ) || false !== strpos( $ua, 'fbforiphone' ) || false !== strpos( $ua, 'fban/fbios;' ) ) { - return true; - } else { - return false; - } - } - - /** - * Detects if the current UA is WordPress for iOS - */ - public static function is_wordpress_for_ios() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - if ( false !== strpos( $ua, 'wp-iphone' ) ) { - return true; - } else { - return false; - } - } - - /** - * Detects if the current device is an iPad. - * They type can check for any iPad, an iPad using Safari, or an iPad using something other than Safari. - * - * Note: If you want to check for Opera mini, Opera mobile or Firefox mobile (or any 3rd party iPad browser), - * you should put the check condition before the check for 'iphone-any' or 'iphone-not-safari'. - * Otherwise those browsers will be 'catched' by the ipad string. - * - * @param string $type iPad type. - */ - public static function is_ipad( $type = 'ipad-any' ) { - - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - $is_ipad = ( false !== strpos( $ua, 'ipad' ) ); - $is_safari = ( false !== strpos( $ua, 'safari' ) ); - - if ( 'ipad-safari' === $type ) { - return $is_ipad && $is_safari; - } elseif ( 'ipad-not-safari' === $type ) { - return $is_ipad && ! $is_safari; - } else { - return $is_ipad; - } - } - - /** - * Detects if the current browser is Firefox Mobile (Fennec) - * - * See http://www.useragentstring.com/pages/Fennec/ - * Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.1.1) Gecko/20110415 Firefox/4.0.2pre Fennec/4.0.1 - * Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b2pre) Gecko/20081015 Fennec/1.0a1 - */ - public static function is_firefox_mobile() { - - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - if ( strpos( $ua, 'fennec' ) !== false ) { - return true; - } else { - return false; - } - } - - /** - * Detects if the current browser is Firefox for desktop - * - * See https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox - * Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion - * The platform section will include 'Mobile' for phones and 'Tablet' for tablets. - */ - public static function is_firefox_desktop() { - - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - if ( false !== strpos( $ua, 'firefox' ) && false === strpos( $ua, 'mobile' ) && false === strpos( $ua, 'tablet' ) ) { - return true; - } else { - return false; - } - } - - /** - * Detects if the current browser is FirefoxOS Native browser - * - * Mozilla/5.0 (Mobile; rv:14.0) Gecko/14.0 Firefox/14.0 - */ - public static function is_firefox_os() { - - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - if ( strpos( $ua, 'mozilla' ) !== false && strpos( $ua, 'mobile' ) !== false && strpos( $ua, 'gecko' ) !== false && strpos( $ua, 'firefox' ) !== false ) { - return true; - } else { - return false; - } - } - - /** - * Detect Safari browser - */ - public static function is_safari_browser() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - if ( false === strpos( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ), 'Safari' ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - return false; - } - return true; - } - - /** - * Detect Edge browser - */ - public static function is_edge_browser() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - if ( false === strpos( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ), 'Edge' ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - return false; - } - return true; - } - - /** - * Detect Edge browser - */ - public static function is_ie_browser() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - $ua = wp_unslash( $_SERVER['HTTP_USER_AGENT'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - if ( false === ( strpos( $ua, 'MSIE' ) || strpos( $ua, 'Trident/7' ) ) ) { - return false; - } - return true; - } - - /** - * Detect modern Opera desktop - * - * Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36 OPR/74.0.3911.203 - * - * Looking for "OPR/" specifically. - */ - public static function is_opera_desktop() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - if ( false === strpos( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ), 'OPR/' ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - return false; - } - - return true; - } - - /** - * Detects if the current browser is Opera Mobile - * - * What is the difference between Opera Mobile and Opera Mini? - * - Opera Mobile is a full Internet browser for mobile devices. - * - Opera Mini always uses a transcoder to convert the page for a small display. - * (it uses Opera advanced server compression technology to compress web content before it gets to a device. - * The rendering engine is on Opera's server.) - * - * Opera/9.80 (Windows NT 6.1; Opera Mobi/14316; U; en) Presto/2.7.81 Version/11.00" - * Opera/9.50 (Nintendo DSi; Opera/507; U; en-US) - */ - public static function is_opera_mobile() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - if ( strpos( $ua, 'opera' ) !== false && strpos( $ua, 'mobi' ) !== false ) { - return true; - } elseif ( strpos( $ua, 'opera' ) !== false && strpos( $ua, 'nintendo dsi' ) !== false ) { - return true; - } else { - return false; - } - } - - /** - * Detects if the current browser is Opera Mini - * - * Opera/8.01 (J2ME/MIDP; Opera Mini/3.0.6306/1528; en; U; ssr) - * Opera/9.80 (Android;Opera Mini/6.0.24212/24.746 U;en) Presto/2.5.25 Version/10.5454 - * Opera/9.80 (iPhone; Opera Mini/5.0.019802/18.738; U; en) Presto/2.4.15 - * Opera/9.80 (J2ME/iPhone;Opera Mini/5.0.019802/886; U; ja) Presto/2.4.15 - * Opera/9.80 (J2ME/iPhone;Opera Mini/5.0.019802/886; U; ja) Presto/2.4.15 - * Opera/9.80 (Series 60; Opera Mini/5.1.22783/23.334; U; en) Presto/2.5.25 Version/10.54 - * Opera/9.80 (BlackBerry; Opera Mini/5.1.22303/22.387; U; en) Presto/2.5.25 Version/10.54 - */ - public static function is_opera_mini() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - if ( strpos( $ua, 'opera' ) !== false && strpos( $ua, 'mini' ) !== false ) { - return true; - } else { - return false; - } - } - - /** - * Detects if the current browser is Opera Mini, but not on a smart device OS(Android, iOS, etc) - * Used to send users on dumb devices to m.wor - */ - public static function is_opera_mini_dumb() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - if ( self::is_opera_mini() ) { - if ( strpos( $ua, 'android' ) !== false || strpos( $ua, 'iphone' ) !== false || strpos( $ua, 'ipod' ) !== false - || strpos( $ua, 'ipad' ) !== false || strpos( $ua, 'blackberry' ) !== false ) { - return false; - } else { - return true; - } - } else { - return false; - } - } - - /** - * Detects if the current browser is a Windows Phone 7 device. - * ex: Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; LG; GW910) - */ - public static function is_WindowsPhone7() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - if ( false === strpos( $ua, 'windows phone os 7' ) ) { - return false; - } elseif ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() ) { - return false; - } else { - return true; - } - } - - /** - * Detects if the current browser is a Windows Phone 8 device. - * ex: Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; ARM; Touch; IEMobile/10.0; ; [;]) - */ - public static function is_windows_phone_8() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - if ( strpos( $ua, 'windows phone 8' ) === false ) { - return false; - } else { - return true; - } - } - - /** - * Detects if the current browser is on a Palm device running the new WebOS. This EXCLUDES TouchPad. - * - * Ex1: Mozilla/5.0 (webOS/1.4.0; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.1 - * Ex2: Mozilla/5.0 (webOS/1.4.0; U; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1 - */ - public static function is_PalmWebOS() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - if ( false === strpos( $ua, 'webos' ) ) { - return false; - } elseif ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() ) { - return false; - } else { - return true; - } - } - - /** - * Detects if the current browser is the HP TouchPad default browser. This excludes phones wt WebOS. - * - * TouchPad Emulator: Mozilla/5.0 (hp-desktop; Linux; hpwOS/2.0; U; it-IT) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 Desktop/1.0 - * TouchPad: Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.0; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/233.70 Safari/534.6 TouchPad/1.0 - */ - public static function is_TouchPad() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $http_user_agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - if ( false !== strpos( $http_user_agent, 'hp-tablet' ) || false !== strpos( $http_user_agent, 'hpwos' ) || false !== strpos( $http_user_agent, 'touchpad' ) ) { - if ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() ) { - return false; - } else { - return true; - } - } else { - return false; - } - } - - /** - * Detects if the current browser is the Series 60 Open Source Browser. - * - * OSS Browser 3.2 on E75: Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaE75-1/110.48.125 Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413 - * - * 7.0 Browser (Nokia 5800 XpressMusic (v21.0.025)) : Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5800d-1/21.0.025; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413 - * - * Browser 7.1 (Nokia N97 (v12.0.024)) : Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/12.0.024; Profile/MIDP-2.1 Configuration/CLDC-1.1; en-us) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.12344 - */ - public static function is_S60_OSSBrowser() { - - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - if ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() ) { - return false; - } - - $pos_webkit = strpos( $agent, 'webkit' ); - if ( false !== $pos_webkit ) { - // First, test for WebKit, then make sure it's either Symbian or S60. - if ( strpos( $agent, 'symbian' ) !== false || strpos( $agent, 'series60' ) !== false ) { - return true; - } else { - return false; - } - } elseif ( strpos( $agent, 'symbianos' ) !== false && strpos( $agent, 'series60' ) !== false ) { - return true; - } elseif ( strpos( $agent, 'nokia' ) !== false && strpos( $agent, 'series60' ) !== false ) { - return true; - } - - return false; - } - - /** - * Detects if the device platform is the Symbian Series 60. - */ - public static function is_symbian_platform() { - - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - $pos_webkit = strpos( $agent, 'webkit' ); - if ( false !== $pos_webkit ) { - // First, test for WebKit, then make sure it's either Symbian or S60. - if ( strpos( $agent, 'symbian' ) !== false || strpos( $agent, 'series60' ) !== false ) { - return true; - } else { - return false; - } - } elseif ( strpos( $agent, 'symbianos' ) !== false && strpos( $agent, 'series60' ) !== false ) { - return true; - } elseif ( strpos( $agent, 'nokia' ) !== false && strpos( $agent, 'series60' ) !== false ) { - return true; - } elseif ( strpos( $agent, 'opera mini' ) !== false ) { - if ( strpos( $agent, 'symbianos' ) !== false || strpos( $agent, 'symbos' ) !== false || strpos( $agent, 'series 60' ) !== false ) { - return true; - } - } - - return false; - } - - /** - * Detects if the device platform is the Symbian Series 40. - * Nokia Browser for Series 40 is a proxy based browser, previously known as Ovi Browser. - * This browser will report 'NokiaBrowser' in the header, however some older version will also report 'OviBrowser'. - */ - public static function is_symbian_s40_platform() { - - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - if ( strpos( $agent, 'series40' ) !== false ) { - if ( strpos( $agent, 'nokia' ) !== false || strpos( $agent, 'ovibrowser' ) !== false || strpos( $agent, 'nokiabrowser' ) !== false ) { - return true; - } - } - - return false; - } - - /** - * Returns if the device belongs to J2ME capable family. - * - * @return bool - */ - public static function is_J2ME_platform() { - - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - if ( strpos( $agent, 'j2me/midp' ) !== false ) { - return true; - } elseif ( strpos( $agent, 'midp' ) !== false && strpos( $agent, 'cldc' ) ) { - return true; - } - return false; - } - - /** - * Detects if the current UA is on one of the Maemo-based Nokia Internet Tablets. - */ - public static function is_MaemoTablet() { - - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - $pos_maemo = strpos( $agent, 'maemo' ); - if ( false === $pos_maemo ) { - return false; - } - - // Must be Linux + Tablet, or else it could be something else. - if ( strpos( $agent, 'tablet' ) !== false && strpos( $agent, 'linux' ) !== false ) { - if ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() ) { - return false; - } else { - return true; - } - } else { - return false; - } - } - - /** - * Detects if the current UA is a MeeGo device (Nokia Smartphone). - */ - public static function is_MeeGo() { - - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - if ( false === strpos( $ua, 'meego' ) ) { - return false; - } elseif ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() ) { - return false; - } else { - return true; - } - } - - /** - * The is_webkit() method can be used to check the User Agent for an webkit generic browser. - */ - public static function is_webkit() { - - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - $pos_webkit = strpos( $agent, 'webkit' ); - - if ( false !== $pos_webkit ) { - return true; - } else { - return false; - } - } - - /** - * Detects if the current browser is the Native Android browser. - * - * @return boolean true if the browser is Android otherwise false - */ - public static function is_android() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - $pos_android = strpos( $agent, 'android' ); - if ( false !== $pos_android ) { - if ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() ) { - return false; - } else { - return true; - } - } else { - return false; - } - } - - /** - * Detects if the current browser is the Native Android Tablet browser. - * Assumes 'Android' should be in the user agent, but not 'mobile' - * - * @return boolean true if the browser is Android and not 'mobile' otherwise false - */ - public static function is_android_tablet() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - $pos_android = strpos( $agent, 'android' ); - $pos_mobile = strpos( $agent, 'mobile' ); - $post_android_app = strpos( $agent, 'wp-android' ); - - if ( false !== $pos_android && false === $pos_mobile && false === $post_android_app ) { - if ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() ) { - return false; - } else { - return true; - } - } else { - return false; - } - } - - /** - * Detects if the current browser is the Kindle Fire Native browser. - * - * Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-84) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true - * Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-84) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=false - * - * @return boolean true if the browser is Kindle Fire Native browser otherwise false - */ - public static function is_kindle_fire() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - $pos_silk = strpos( $agent, 'silk/' ); - $pos_silk_acc = strpos( $agent, 'silk-accelerated=' ); - if ( false !== $pos_silk && false !== $pos_silk_acc ) { - return true; - } else { - return false; - } - } - - /** - * Detects if the current browser is the Kindle Touch Native browser - * - * Mozilla/5.0 (X11; U; Linux armv7l like Android; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/533.2+ Kindle/3.0+ - * - * @return boolean true if the browser is Kindle monochrome Native browser otherwise false - */ - public static function is_kindle_touch() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - $agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - $pos_kindle_touch = strpos( $agent, 'kindle/3.0+' ); - if ( false !== $pos_kindle_touch && false === self::is_kindle_fire() ) { - return true; - } else { - return false; - } - } - - /** - * Detect if user agent is the WordPress.com Windows 8 app (used ONLY on the custom oauth stylesheet) - */ - public static function is_windows8_auth() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - $pos = strpos( $agent, 'msauthhost' ); - if ( false !== $pos ) { - return true; - } else { - return false; - } - } - - /** - * Detect if user agent is the WordPress.com Windows 8 app. - */ - public static function is_wordpress_for_win8() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - $pos = strpos( $agent, 'wp-windows8' ); - if ( false !== $pos ) { - return true; - } else { - return false; - } - } - - /** - * Detect if user agent is the WordPress.com Desktop app. - */ - public static function is_wordpress_desktop_app() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - $pos = strpos( $agent, 'WordPressDesktop' ); - if ( false !== $pos ) { - return true; - } else { - return false; - } - } - - /** - * The is_blackberry_tablet() method can be used to check the User Agent for a RIM blackberry tablet. - * The user agent of the BlackBerry® Tablet OS follows a format similar to the following: - * Mozilla/5.0 (PlayBook; U; RIM Tablet OS 1.0.0; en-US) AppleWebKit/534.8+ (KHTML, like Gecko) Version/0.0.1 Safari/534.8+ - */ - public static function is_blackberry_tablet() { - - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - $pos_playbook = stripos( $agent, 'PlayBook' ); - $pos_rim_tablet = stripos( $agent, 'RIM Tablet' ); - - if ( ( false === $pos_playbook ) || ( false === $pos_rim_tablet ) ) { - return false; - } else { - return true; - } - } - - /** - * The is_blackbeberry() method can be used to check the User Agent for a blackberry device. - * Note that opera mini on BB matches this rule. - */ - public static function is_blackbeberry() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - $pos_blackberry = strpos( $agent, 'blackberry' ); - if ( false !== $pos_blackberry ) { - if ( self::is_opera_mini() || self::is_opera_mobile() || self::is_firefox_mobile() ) { - return false; - } else { - return true; - } - } else { - return false; - } - } - - /** - * The is_blackberry_10() method can be used to check the User Agent for a BlackBerry 10 device. - */ - public static function is_blackberry_10() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - $agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - return ( strpos( $agent, 'bb10' ) !== false ) && ( strpos( $agent, 'mobile' ) !== false ); - } - - /** - * Determines whether a desktop platform is Linux OS - * - * @return bool - */ - public static function is_linux_desktop() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - if ( ! preg_match( '/linux/i', wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - return false; - } - return true; - } - - /** - * Determines whether a desktop platform is Mac OS - * - * @return bool - */ - public static function is_mac_desktop() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - if ( ! preg_match( '/macintosh|mac os x/i', wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - return false; - } - return true; - } - - /** - * Determines whether a desktop platform is Windows OS - * - * @return bool - */ - public static function is_windows_desktop() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - if ( ! preg_match( '/windows|win32/i', wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - return false; - } - return true; - } - - /** - * Determines whether a desktop platform is Chrome OS - * - * @return bool - */ - public static function is_chrome_desktop() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - if ( ! preg_match( '/chrome/i', wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - return false; - } - return true; - } - - /** - * Retrieve the blackberry OS version. - * - * Return strings are from the following list: - * - blackberry-10 - * - blackberry-7 - * - blackberry-6 - * - blackberry-torch //only the first edition. The 2nd edition has the OS7 onboard and doesn't need any special rule. - * - blackberry-5 - * - blackberry-4.7 - * - blackberry-4.6 - * - blackberry-4.5 - * - * @return string Version of the BB OS. - * If version is not found, get_blackbeberry_OS_version will return boolean false. - */ - public static function get_blackbeberry_OS_version() { - - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - if ( self::is_blackberry_10() ) { - return 'blackberry-10'; - } - - $agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - $pos_blackberry = stripos( $agent, 'blackberry' ); - if ( false === $pos_blackberry ) { - // Not a blackberry device. - return false; - } - - // Blackberry devices OS 6.0 or higher. - // Mozilla/5.0 (BlackBerry; U; BlackBerry 9670; en) AppleWebKit/534.3+ (KHTML, like Gecko) Version/6.0.0.286 Mobile Safari/534.3+. - // Mozilla/5.0 (BlackBerry; U; BlackBerry 9800; en) AppleWebKit/534.1+ (KHTML, Like Gecko) Version/6.0.0.141 Mobile Safari/534.1+. - // Mozilla/5.0 (BlackBerry; U; BlackBerry 9900; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0 Mobile Safari/534.11+. - $pos_webkit = stripos( $agent, 'webkit' ); - if ( false !== $pos_webkit ) { - // Detected blackberry webkit browser. - $pos_torch = stripos( $agent, 'BlackBerry 9800' ); - if ( false !== $pos_torch ) { - return 'blackberry-torch'; // Match the torch first edition. the 2nd edition should use the OS7 and doesn't need any special rule. - } elseif ( preg_match( '#Version\/([\d\.]+)#i', $agent, $matches ) ) { // Detecting the BB OS version for devices running OS 6.0 or higher. - $version = $matches[1]; - $version_num = explode( '.', $version ); - if ( false === is_array( $version_num ) || count( $version_num ) <= 1 ) { - return 'blackberry-6'; // not a BB device that match our rule. - } else { - return 'blackberry-' . $version_num[0]; - } - } else { - // if doesn't match returns the minimun version with a webkit browser. we should never fall here. - return 'blackberry-6'; // not a BB device that match our rule. - } - } - - // Blackberry devices <= 5.XX. - // BlackBerry9000/5.0.0.93 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/179. - if ( preg_match( '#BlackBerry\w+\/([\d\.]+)#i', $agent, $matches ) ) { - $version = $matches[1]; - } else { - return false; // not a BB device that match our rule. - } - - $version_num = explode( '.', $version ); - - if ( is_array( $version_num ) === false || count( $version_num ) <= 1 ) { - return false; - } - - $version_num_major = (int) $version_num[0]; - $version_num_minor = (int) $version_num[1]; - - if ( 5 === $version_num_major ) { - return 'blackberry-5'; - } elseif ( 4 === $version_num_major && 7 === $version_num_minor ) { - return 'blackberry-4.7'; - } elseif ( 4 === $version_num_major && 6 === $version_num_minor ) { - return 'blackberry-4.6'; - } elseif ( 4 === $version_num_major && 5 === $version_num_minor ) { - return 'blackberry-4.5'; - } else { - return false; - } - } - - /** - * Retrieve the blackberry browser version. - * - * Return string are from the following list: - * - blackberry-10 - * - blackberry-webkit - * - blackberry-5 - * - blackberry-4.7 - * - blackberry-4.6 - * - * @return string Type of the BB browser. - * If browser's version is not found, detect_blackbeberry_browser_version will return boolean false. - */ - public static function detect_blackberry_browser_version() { - - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - if ( self::is_blackberry_10() ) { - return 'blackberry-10'; - } - - $pos_blackberry = strpos( $agent, 'blackberry' ); - if ( false === $pos_blackberry ) { - // Not a blackberry device. - return false; - } - - $pos_webkit = strpos( $agent, 'webkit' ); - - if ( ! ( false === $pos_webkit ) ) { - return 'blackberry-webkit'; - } else { - if ( ! preg_match( '#BlackBerry\w+\/([\d\.]+)#i', $agent, $matches ) ) { - return false; // not a BB device that match our rule. - } - - $version_num = explode( '.', $matches[1] ); - - if ( false === is_array( $version_num ) || count( $version_num ) <= 1 ) { - return false; - } - - $version_num_major = (int) $version_num[0]; - $version_num_minor = (int) $version_num[1]; - - if ( 5 === $version_num_major ) { - return 'blackberry-5'; - } elseif ( 4 === $version_num_major && 7 === $version_num_minor ) { - return 'blackberry-4.7'; - } elseif ( 4 === $version_num_major && 6 === $version_num_minor ) { - return 'blackberry-4.6'; - } else { - // A very old BB device is found or this is a BB device that doesn't match our rules. - return false; - } - } - } - - /** - * Checks if a visitor is coming from one of the WordPress mobile apps. - * - * @return bool - */ - public static function is_mobile_app() { - - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $agent = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - - if ( isset( $_SERVER['X_USER_AGENT'] ) && preg_match( '|wp-webos|', $_SERVER['X_USER_AGENT'] ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput -- This is validating. - return true; // Wp4webos 1.1 or higher. - } - - $app_agents = array( 'wp-android', 'wp-blackberry', 'wp-iphone', 'wp-nokia', 'wp-webos', 'wp-windowsphone' ); - // the mobile reader on iOS has an incorrect UA when loading the reader - // currently it is the default one provided by the iOS framework which - // causes problems with 2-step-auth - // User-Agent WordPress/3.1.4 CFNetwork/609 Darwin/13.0.0. - $app_agents[] = 'wordpress/3.1'; - - foreach ( $app_agents as $app_agent ) { - if ( false !== strpos( $agent, $app_agent ) ) { - return true; - } - } - return false; - } - - /** - * Detects if the current browser is Nintendo 3DS handheld. - * - * Example: Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1.7498.US - * can differ in language, version and region - */ - public static function is_Nintendo_3DS() { - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - $ua = strtolower( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - if ( strpos( $ua, 'nintendo 3ds' ) !== false ) { - return true; - } - return false; - } - - /** - * Was the current request made by a known bot? - * - * @return boolean - */ - public static function is_bot() { - static $is_bot = null; - - if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) { - return false; - } - - if ( $is_bot === null ) { - $is_bot = self::is_bot_user_agent( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- This is validating. - } - - return $is_bot; - } - - /** - * Is the given user-agent a known bot? - * If you want an is_bot check for the current request's UA, use is_bot() instead of passing a user-agent to this method. - * - * @param string $ua A user-agent string. - * - * @return boolean - */ - public static function is_bot_user_agent( $ua = null ) { - - if ( empty( $ua ) ) { - return false; - } - - $bot_agents = array( - 'alexa', - 'altavista', - 'ask jeeves', - 'attentio', - 'baiduspider', - 'bingbot', - 'chtml generic', - 'crawler', - 'fastmobilecrawl', - 'feedfetcher-google', - 'firefly', - 'froogle', - 'gigabot', - 'googlebot', - 'googlebot-mobile', - 'heritrix', - 'httrack', - 'ia_archiver', - 'irlbot', - 'iescholar', - 'infoseek', - 'jumpbot', - 'linkcheck', - 'lycos', - 'mediapartners', - 'mediobot', - 'motionbot', - 'msnbot', - 'mshots', - 'openbot', - 'pss-webkit-request', - 'pythumbnail', - 'scooter', - 'slurp', - 'snapbot', - 'spider', - 'taptubot', - 'technoratisnoop', - 'teoma', - 'twiceler', - 'yahooseeker', - 'yahooysmcm', - 'yammybot', - 'ahrefsbot', - 'pingdom.com_bot', - 'kraken', - 'yandexbot', - 'twitterbot', - 'tweetmemebot', - 'openhosebot', - 'queryseekerspider', - 'linkdexbot', - 'grokkit-crawler', - 'livelapbot', - 'germcrawler', - 'domaintunocrawler', - 'grapeshotcrawler', - 'cloudflare-alwaysonline', - 'cookieinformationscanner', // p1699315886066389-slack-C0438NHCLSY - 'facebookexternalhit', // https://www.facebook.com/externalhit_uatext.php - 'feedburner', - 'yacybot', // http://yacy.net/bot.html - 'trendictionbot', // http://www.trendiction.de/bot; - 'elisabot', - 'linkfluence', // http://linkfluence.com/ - 'semrushbot', // https://www.semrush.com/bot/ - 'archive.org_bot', // http://archive.org/details/archive.org_bot - 'ezlynxbot', // https://www.ezoic.com/bot - 'siteauditbot', // https://www.semrush.com/bot/ - 'snapchat', // https://developers.snap.com/robots - 'applebot', // https://support.apple.com/en-ca/HT204683 - 'bne.es_bot', // https://www.bne.es/es/colecciones/archivo-web-espanola/aviso-webmasters - 'google-safety;', // https://www.google.com/bot.html - 'mojeekbot', // https://www.mojeek.com/bot.html - 'linkwalker', // https://www.linkwalker.com/ - ); - - foreach ( $bot_agents as $bot_agent ) { - if ( false !== stripos( $ua, $bot_agent ) ) { - return true; - } - } - - return false; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/src/functions.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/src/functions.php deleted file mode 100644 index a530e7f9..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-device-detection/src/functions.php +++ /dev/null @@ -1,36 +0,0 @@ - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/build/index.asset.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/build/index.asset.php deleted file mode 100644 index 2aa2511d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/build/index.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('react', 'react-jsx-runtime', 'wp-api-fetch', 'wp-url'), 'version' => '37d1ea057f1a1470ad33'); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/build/index.js b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/build/index.js deleted file mode 100644 index 1b92d5f9..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/build/index.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e={792:(e,t,n)=>{n.d(t,{A:()=>s});var r=n(790),i=n(609);const o={isEligible:!0};function s(e){const t=(t,n={})=>{const r={...o,...n},[,s]=(0,i.useReducer)((e=>e+1),0),a=(0,i.useRef)(t);if((0,i.useEffect)((()=>{let n=!0;return r.isEligible&&e.loadExperimentAssignment(t).then((()=>{n&&s()})),()=>{n=!1}}),[t,r.isEligible]),t===a.current||a.current.startsWith("explat_test")||e.config.logError({message:"[ExPlat] useExperiment: experimentName should never change between renders!"}),!r.isEligible)return[!1,null];const m=e.dangerouslyGetMaybeLoadedExperimentAssignment(t);return[!m,m]};return{useExperiment:t,Experiment:({defaultExperience:e,treatmentExperience:n,loadingExperience:i,name:o,options:s})=>{const[a,m]=t(o,s);return a?(0,r.jsx)(r.Fragment,{children:i}):m?.variationName?(0,r.jsx)(r.Fragment,{children:n}):(0,r.jsx)(r.Fragment,{children:e})},ProvideExperimentData:({children:e,name:n,options:r})=>{const[i,o]=t(n,r);return e(i,o)}}}},517:(e,t,n)=>{n.d(t,{kU:()=>c,pg:()=>u});var r=n(689),i=n(808),o=n(738),s=n(762),a=n(626);const m=1e4;Error;function c(e){if("undefined"==typeof window)throw new Error("Running outside of a browser context.");const t={},n=(...t)=>{try{e.logError(...t)}catch(e){}};try{(0,r.bZ)()}catch(e){n({message:e.message,source:"removeExpiredExperimentAssignments-error"})}return{loadExperimentAssignment:async c=>{try{if(!a.Eo(c))throw new Error(`Invalid experimentName: "${c}"`);const n=(0,r.B1)(c);if(n&&i.H2(n))return n;void 0===t[c]&&(t[c]=(t=>s.MC((async()=>{const n=await o.FI(e,t);return(0,r.a2)(n),n})))(c));let u=m;Math.random()>.5&&(u=5e3);const l=await s.BK(t[c](),u);if(!l)throw new Error("Could not fetch ExperimentAssignment");return l}catch(e){n({message:e.message,experimentName:c,source:"loadExperimentAssignment-initialError"})}try{const e=(0,r.B1)(c);if(e)return e;const t=(0,i.fj)(c);return(0,r.a2)(t),t}catch(e){return n({message:e.message,experimentName:c,source:"loadExperimentAssignment-fallbackError"}),(0,i.fj)(c)}},dangerouslyGetExperimentAssignment:t=>{try{if(!a.Eo(t))throw new Error(`Invalid experimentName: ${t}`);const i=(0,r.B1)(t);if(!i)throw new Error("Trying to dangerously get an ExperimentAssignment that hasn't loaded.");return e.isDevelopmentMode&&i&&s.XZ()-i.retrievedTimestamp<1e3&&n({message:"Warning: Trying to dangerously get an ExperimentAssignment too soon after loading it.",experimentName:t,source:"dangerouslyGetExperimentAssignment"}),i}catch(r){return e.isDevelopmentMode&&n({message:r.message,experimentName:t,source:"dangerouslyGetExperimentAssignment-error"}),(0,i.fj)(t)}},dangerouslyGetMaybeLoadedExperimentAssignment:t=>{try{if(!a.Eo(t))throw new Error(`Invalid experimentName: ${t}`);const e=(0,r.B1)(t);return e||null}catch(r){return e.isDevelopmentMode&&n({message:r.message,experimentName:t,source:"dangerouslyGetMaybeLoadedExperimentAssignment-error"}),(0,i.fj)(t)}},config:e}}function u(e){return{loadExperimentAssignment:async t=>(e.logError({message:"Attempting to load ExperimentAssignment in SSR context",experimentName:t}),(0,i.fj)(t)),dangerouslyGetExperimentAssignment:t=>(e.logError({message:"Attempting to dangerously get ExperimentAssignment in SSR context",experimentName:t}),(0,i.fj)(t)),dangerouslyGetMaybeLoadedExperimentAssignment:t=>(e.logError({message:"Attempting to dangerously get ExperimentAssignment in SSR context",experimentName:t}),(0,i.fj)(t)),config:e}}},226:(e,t,n)=>{n.d(t,{k:()=>i});var r=n(517);const i="undefined"==typeof window?r.pg:r.kU},689:(e,t,n)=>{n.d(t,{B1:()=>c,a2:()=>m,bZ:()=>p});var r=n(808),i=n(765),o=n(626);const s="explat-experiment-",a=e=>`${s}-${e}`;function m(e){o.zV(e);const t=c(e.experimentName);if(t&&e.retrievedTimestamp[...Array(e).keys()];function l(e){return e.startsWith(s)}function d(e){return e.slice(s.length+1)}function p(){u(i.A.length).map((e=>i.A.key(e))).filter(l).map(d).filter((e=>{try{if(r.H2(c(e)))return!1}catch(e){}return!0})).map(a).map((e=>i.A.removeItem(e)))}},808:(e,t,n)=>{n.d(t,{H2:()=>i,fj:()=>s,fn:()=>o});var r=n(762);function i(e){return r.XZ()({experimentName:e,variationName:null,retrievedTimestamp:r.XZ(),ttl:Math.max(o,t),isFallbackExperimentAssignment:!0})},765:(e,t,n)=>{n.d(t,{A:()=>i});let r={_data:{},setItem:function(e,t){this._data[e]=t},getItem:function(e){return this._data.hasOwnProperty(e)?this._data[e]:null},removeItem:function(e){delete this._data[e]},clear:function(){this._data={}},get length(){return Object.keys(this._data).length},key:function(e){const t=Object.keys(this._data);return e in t?t[e]:null}};try{window.localStorage&&(r=window.localStorage)}catch(e){}const i=r},738:(e,t,n)=>{n.d(t,{FI:()=>l});var r=n(808),i=n(765),o=n(762),s=n(626);function a(e){if(function(e){return(0,s.Gv)(e)&&(0,s.Gv)(e.variations)&&"number"==typeof e.ttl&&0{const t=await e();if(t)return i.A.setItem(m,t),i.A.setItem(c,String((0,o.XZ)())),t;const n=i.A.getItem(m),r=i.A.getItem(c);return n&&r&&(0,o.XZ)()-parseInt(r,10)<864e5?n:null};async function l(e,t){const n=(0,o.XZ)(),{variations:i,ttl:m}=a(await e.fetchExperimentAssignment({anonId:await u(e.getAnonId),experimentName:t})),c=Math.max(r.fn,m),l=Object.entries(i).map((([e,t])=>({experimentName:e,variationName:t,retrievedTimestamp:n,ttl:c}))).map(s.zV);if(l.length>1)throw new Error("Received multiple experiment assignments while trying to fetch exactly one.");if(0===l.length)return r.fj(t,c);const d=l[0];if(d.experimentName!==t)throw new Error("Newly fetched ExperimentAssignment's experiment name does not match request.");if(!r.H2(d))throw new Error("Newly fetched experiment isn't alive.");return d}},762:(e,t,n)=>{n.d(t,{BK:()=>s,If:()=>r,MC:()=>a,XZ:()=>o});const r=1e3;let i=Date.now();function o(){const e=Date.now();return i=isetTimeout((()=>n(new Error(`Promise has timed-out after ${t}ms.`))),t)))])}function a(e){let t=null;return()=>(t||(t=e().finally((()=>{t=null}))),t)}},626:(e,t,n)=>{function r(e){return"object"==typeof e&&null!==e}function i(e){return"string"==typeof e&&""!==e&&/^[a-z0-9_]*$/.test(e)}function o(e){if(!function(e){return r(e)&&i(e.experimentName)&&(i(e.variationName)||null===e.variationName)&&"number"==typeof e.retrievedTimestamp&&"number"==typeof e.ttl&&0!==e.ttl}(e))throw new Error("Invalid ExperimentAssignment");return e}n.d(t,{Eo:()=>i,Gv:()=>r,zV:()=>o})},172:(e,t)=>{t.qg=function(e,t){const n=new a,r=e.length;if(r<2)return n;const i=t?.decode||u;let o=0;do{const t=e.indexOf("=",o);if(-1===t)break;const s=e.indexOf(";",o),a=-1===s?r:s;if(t>a){o=e.lastIndexOf(";",t-1)+1;continue}const u=m(e,o,t),l=c(e,t,u),d=e.slice(u,l);if(void 0===n[d]){let r=m(e,t+1,a),o=c(e,a,r);const s=i(e.slice(r,o));n[d]=s}o=a+1}while(o{const e=function(){};return e.prototype=Object.create(null),e})();function m(e,t,n){do{const n=e.charCodeAt(t);if(32!==n&&9!==n)return t}while(++tn;){const n=e.charCodeAt(--t);if(32!==n&&9!==n)return t+1}return n}function u(e){if(-1===e.indexOf("%"))return e;try{return decodeURIComponent(e)}catch(t){return e}}},889:(e,t,n)=>{n.d(t,{Ck:()=>s,wf:()=>o});var r=n(172);let i=null;const o=async()=>{let e=0;return i=new Promise((t=>{const n=()=>{const i=(0,r.qg)(document.cookie).tk_ai||null;"string"!=typeof i||""===i?99<=e?t(null):(e+=1,setTimeout(n,50)):t(i)};n()})),i},s=async()=>await i},222:(e,t,n)=>{n.d(t,{V:()=>m,z:()=>a});var r=n(455),i=n.n(r),o=n(832);const s=(e=!1)=>async({experimentName:t,anonId:n})=>{if(!n)throw new Error("Tracking is disabled, can't fetch experimentAssignment");const r={experiment_name:t,anon_id:n??void 0,as_connected_user:e},s=(0,o.addQueryArgs)("jetpack/v4/explat/assignments",r);return await i()({path:s})},a=s(!1),m=s(!0)},69:(e,t,n)=>{n.d(t,{v:()=>i});var r=n(382);const i=e=>{const t=e=>{r.D&&console.error("[ExPlat] Unable to send error to server:",e)};try{const{message:n,...i}=e,o={message:n,properties:{...i,context:"explat",explat_client:"jetpack"}};if(r.D)console.error("[ExPlat] ",e.message,e);else{const e=new window.FormData;e.append("error",JSON.stringify(o)),window.fetch("https://public-api.wordpress.com/rest/v1.1/js-error",{method:"POST",body:e}).catch(t)}}catch(e){t(e)}}},382:(e,t,n)=>{n.d(t,{D:()=>r});const r=!1},609:e=>{e.exports=window.React},790:e=>{e.exports=window.ReactJSXRuntime},455:e=>{e.exports=window.wp.apiFetch},832:e=>{e.exports=window.wp.url}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={exports:{}};return e[r](o,o.exports,n),o.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var r=n(226),i=n(792),o=n(889),s=n(222),a=n(69),m=n(382);(0,o.wf)().catch((e=>(0,a.v)({message:e.message})));const c=(0,r.k)({fetchExperimentAssignment:s.z,getAnonId:o.Ck,logError:a.v,isDevelopmentMode:m.D}),{loadExperimentAssignment:u,dangerouslyGetExperimentAssignment:l}=c,{useExperiment:d,Experiment:p,ProvideExperimentData:g}=(0,i.A)(c),f=(0,r.k)({fetchExperimentAssignment:s.V,getAnonId:o.Ck,logError:a.v,isDevelopmentMode:m.D}),{loadExperimentAssignment:x,dangerouslyGetExperimentAssignment:E}=f,{useExperiment:h,Experiment:w,ProvideExperimentData:y}=(0,i.A)(f)})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/composer.json deleted file mode 100644 index 669b543b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/composer.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "name": "automattic/jetpack-explat", - "description": "A package for running A/B tests on the Experimentation Platform (ExPlat) in the plugin.", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2", - "automattic/jetpack-connection": "^6.7.7" - }, - "require-dev": { - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1" - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "scripts": { - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": "pnpm concurrently --names php,js 'php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"' 'pnpm:test-coverage'", - "test-php": [ - "@composer phpunit" - ], - "test-js": [ - "pnpm run test" - ], - "test-js-watch": [ - "Composer\\Config::disableProcessTimeout", - "pnpm run test --watch" - ], - "build-development": [ - "pnpm run build" - ], - "build-production": [ - "NODE_ENV=production pnpm run build" - ], - "watch": [ - "Composer\\Config::disableProcessTimeout", - "pnpm run watch" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "autotagger": true, - "branch-alias": { - "dev-trunk": "0.2.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-explat/compare/v${old}...v${new}" - }, - "mirror-repo": "Automattic/jetpack-explat", - "textdomain": "jetpack-explat", - "version-constants": { - "::PACKAGE_VERSION": "src/class-explat.php" - } - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/global.d.ts b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/global.d.ts deleted file mode 100644 index 9eed072d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/global.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export declare global { - namespace NodeJS { - interface ProcessEnv { - NODE_ENV: 'development' | 'production' | 'test'; - } - } -} - -export {}; diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/class-explat.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/class-explat.php deleted file mode 100644 index 757ff58a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/class-explat.php +++ /dev/null @@ -1,44 +0,0 @@ - WP_REST_Server::READABLE, - 'callback' => array( $this, 'get_assignments' ), - 'permission_callback' => '__return_true', - 'args' => array( - 'experiment_name' => array( - 'type' => 'string', - ), - 'anon_id' => array( - 'type' => 'string', - ), - 'as_connected_user' => array( - 'type' => 'boolean', - ), - ), - ) - ); - } - - /** - * Get the assignments for a given experiment and anon_id - * - * @param WP_REST_Request $request The REST request object. - * @return WP_REST_Response|WP_Error - */ - public function get_assignments( $request ) { - $response = null; - $is_user_connected = ( new Jetpack_Connection() )->is_user_connected(); - $request_path = '/experiments/' . self::EXPLAT_API_VERSION . '/assignments/jetpack'; - $args = array( - 'experiment_name' => $request['experiment_name'], - 'anon_id' => $request['anon_id'], - ); - - if ( $request['as_connected_user'] && $is_user_connected ) { - $response = Client::wpcom_json_api_request_as_user( - add_query_arg( $args, $request_path ), - 'v2' - ); - } else { - $response = wp_remote_get( - add_query_arg( $args, self::WPCOM_API_BASE_URL . $request_path ) - ); - } - - if ( is_wp_error( $response ) ) { - return new WP_Error( - 'wp_error_fetching_assignment', - $response->get_error_message(), - array( 'status' => 500 ) - ); - } - - $response_code = wp_remote_retrieve_response_code( $response ); - - if ( 200 !== $response_code ) { - return new WP_Error( - 'http_error_fetching_assignment', - wp_remote_retrieve_response_message( $response ), - array( 'status' => $response_code ) - ); - } - - return rest_ensure_response( - json_decode( wp_remote_retrieve_body( $response ), true ) - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/anon.ts b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/anon.ts deleted file mode 100644 index 488dc8ea..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/anon.ts +++ /dev/null @@ -1,61 +0,0 @@ -/** - * External dependencies - */ -import { parse as cookieParse } from 'cookie'; - -let initializeAnonIdPromise: Promise< string | null > | null = null; -const anonIdPollingIntervalMilliseconds = 50; -const anonIdPollingIntervalMaxAttempts = 100; // 50 * 100 = 5000 = 5 seconds - -/** - * Gather w.js anonymous cookie, tk_ai - * - * @return {?string} The anonymous cookie value, or null if it doesn't exist - */ -export const readAnonCookie = (): string | null => { - return cookieParse( document.cookie ).tk_ai || null; -}; - -/** - * Initializes the anonId: - * - Polls for AnonId receival - * - Should only be called once at startup - * - Happens to be safe to call multiple times if it is necessary to reset the anonId - something like this was necessary for testing. - * - * This purely for boot-time initialization, in usual circumstances it will be retrieved within 100-300ms, it happens in parallel booting - * so should only delay experiment loading that much for boot-time experiments. In some circumstances such as a very slow connection this - * can take a lot longer. - * - * The state of initializeAnonIdPromise should be used rather than the return of this function. - * The return is only avaliable to make this easier to test. - * - * Throws on error. - * - * @return {Promise} The anonymous cookie value, or null if it doesn't exist - */ -export const initializeAnonId = async (): Promise< string | null > => { - let attempt = 0; - initializeAnonIdPromise = new Promise( res => { - const poll = () => { - const anonId = readAnonCookie(); - if ( typeof anonId === 'string' && anonId !== '' ) { - res( anonId ); - return; - } - - if ( anonIdPollingIntervalMaxAttempts - 1 <= attempt ) { - res( null ); - return; - } - attempt += 1; - setTimeout( poll, anonIdPollingIntervalMilliseconds ); - }; - poll(); - } ); - - return initializeAnonIdPromise; -}; - -export const getAnonId = async (): Promise< string | null > => { - return await initializeAnonIdPromise; -}; diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/assignment.ts b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/assignment.ts deleted file mode 100644 index 80bd7d8f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/assignment.ts +++ /dev/null @@ -1,29 +0,0 @@ -import apiFetch from '@wordpress/api-fetch'; -import { addQueryArgs } from '@wordpress/url'; - -const fetchExperimentAssignment = - ( asConnectedUser = false ) => - async ( { - experimentName, - anonId, - }: { - experimentName: string; - anonId: string | null; - } ): Promise< unknown > => { - if ( ! anonId ) { - throw new Error( `Tracking is disabled, can't fetch experimentAssignment` ); - } - - const params = { - experiment_name: experimentName, - anon_id: anonId ?? undefined, - as_connected_user: asConnectedUser, - }; - - const assignmentsRequestUrl = addQueryArgs( 'jetpack/v4/explat/assignments', params ); - - return await apiFetch( { path: assignmentsRequestUrl } ); - }; - -export const fetchExperimentAssignmentAnonymously = fetchExperimentAssignment( false ); -export const fetchExperimentAssignmentWithAuth = fetchExperimentAssignment( true ); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/error.ts b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/error.ts deleted file mode 100644 index 84c19118..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/error.ts +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Internal dependencies - */ -import { isDevelopmentMode } from './utils'; - -export const logError = ( error: Record< string, string > & { message: string } ): void => { - const onLoggingError = ( e: unknown ) => { - if ( isDevelopmentMode ) { - console.error( '[ExPlat] Unable to send error to server:', e ); // eslint-disable-line no-console - } - }; - - try { - const { message, ...properties } = error; - const logStashError = { - message, - properties: { - ...properties, - context: 'explat', - explat_client: 'jetpack', - }, - }; - - if ( isDevelopmentMode ) { - console.error( '[ExPlat] ', error.message, error ); // eslint-disable-line no-console - } else { - const body = new window.FormData(); - body.append( 'error', JSON.stringify( logStashError ) ); - window - .fetch( 'https://public-api.wordpress.com/rest/v1.1/js-error', { - method: 'POST', - body, - } ) - .catch( onLoggingError ); - } - } catch ( e ) { - onLoggingError( e ); - } -}; diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/index.ts b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/index.ts deleted file mode 100644 index b21c993f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/index.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * External dependencies - */ -import { createExPlatClient } from '@automattic/explat-client'; -import createExPlatClientReactHelpers from '@automattic/explat-client-react-helpers'; -/** - * Internal dependencies - */ -import { getAnonId, initializeAnonId } from './anon'; -import { - fetchExperimentAssignmentAnonymously, - fetchExperimentAssignmentWithAuth, -} from './assignment'; -import { logError } from './error'; -import { isDevelopmentMode } from './utils'; - -export const initializeExPlat = (): void => { - initializeAnonId().catch( e => logError( { message: e.message } ) ); -}; - -initializeExPlat(); - -const exPlatClient = createExPlatClient( { - fetchExperimentAssignment: fetchExperimentAssignmentAnonymously, - getAnonId, - logError, - isDevelopmentMode, -} ); - -export const { loadExperimentAssignment, dangerouslyGetExperimentAssignment } = exPlatClient; - -export const { useExperiment, Experiment, ProvideExperimentData } = - createExPlatClientReactHelpers( exPlatClient ); - -const exPlatClientWithAuth = createExPlatClient( { - fetchExperimentAssignment: fetchExperimentAssignmentWithAuth, - getAnonId, - logError, - isDevelopmentMode, -} ); - -export const { - loadExperimentAssignment: loadExperimentAssignmentWithAuth, - dangerouslyGetExperimentAssignment: dangerouslyGetExperimentAssignmentWithAuth, -} = exPlatClientWithAuth; - -export const { - useExperiment: useExperimentWithAuth, - Experiment: ExperimentWithAuth, - ProvideExperimentData: ProvideExperimentDataWithAuth, -} = createExPlatClientReactHelpers( exPlatClientWithAuth ); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/utils.ts b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/utils.ts deleted file mode 100644 index 75694463..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-explat/src/client/utils.ts +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Boolean determining if environment is development. - */ -export const isDevelopmentMode = process.env.NODE_ENV === 'development'; diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/CHANGELOG.md deleted file mode 100644 index 19fe45eb..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/CHANGELOG.md +++ /dev/null @@ -1,111 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [0.4.6] - 2025-03-21 -### Changed -- Internal updates. - -## [0.4.5] - 2025-03-17 -### Changed -- Internal updates. - -## [0.4.4] - 2025-03-12 -### Changed -- Internal updates. - -## [0.4.3] - 2025-03-05 -### Changed -- Internal updates. - -## [0.4.2] - 2025-02-24 -### Changed -- Update dependencies. - -## [0.4.1] - 2024-11-25 -### Changed -- Update package dependencies. [#40258] - -## [0.4.0] - 2024-11-14 -### Removed -- General: Update minimum PHP version to 7.2. [#40147] - -## [0.3.1] - 2024-11-04 -### Added -- Enable test coverage. [#39961] - -### Fixed -- Fix PHPUnit coverage warnings. [#39989] - -## [0.3.0] - 2024-09-23 -### Added -- IP Utils: added support for CIDR ranges. [#39425] - -## [0.2.3] - 2024-08-23 -### Changed -- Updated package dependencies. [#39004] - -## [0.2.2] - 2024-03-12 -### Changed -- Internal updates. - -## [0.2.1] - 2023-11-21 -### Changed -- Added a note of non-usage of PHP8+ functions yet. [#34137] - -## [0.2.0] - 2023-11-20 -### Changed -- Updated required PHP version to >= 7.0. [#34192] - -## [0.1.6] - 2023-09-19 - -- Minor internal updates. - -## [0.1.5] - 2023-08-23 -### Changed -- Updated package dependencies. [#32605] - -## [0.1.4] - 2023-05-29 -### Changed -- Internal updates. - -## [0.1.3] - 2023-05-11 - -- Updated package dependencies - -## [0.1.2] - 2023-04-10 -### Added -- Add Jetpack Autoloader package suggestion. [#29988] - -## [0.1.1] - 2023-03-28 -### Changed -- Update README.md [#28401] - -## 0.1.0 - 2023-02-28 -### Added -- Added a utility function to extract an array of IP addresses from a given string. [#29131] -- Add jetpack-ip package functionality [#28846] -- Initialized the package. [#28765] - -[0.4.6]: https://github.com/automattic/jetpack-ip/compare/v0.4.5...v0.4.6 -[0.4.5]: https://github.com/automattic/jetpack-ip/compare/v0.4.4...v0.4.5 -[0.4.4]: https://github.com/automattic/jetpack-ip/compare/v0.4.3...v0.4.4 -[0.4.3]: https://github.com/automattic/jetpack-ip/compare/v0.4.2...v0.4.3 -[0.4.2]: https://github.com/automattic/jetpack-ip/compare/v0.4.1...v0.4.2 -[0.4.1]: https://github.com/automattic/jetpack-ip/compare/v0.4.0...v0.4.1 -[0.4.0]: https://github.com/automattic/jetpack-ip/compare/v0.3.1...v0.4.0 -[0.3.1]: https://github.com/automattic/jetpack-ip/compare/v0.3.0...v0.3.1 -[0.3.0]: https://github.com/automattic/jetpack-ip/compare/v0.2.3...v0.3.0 -[0.2.3]: https://github.com/automattic/jetpack-ip/compare/v0.2.2...v0.2.3 -[0.2.2]: https://github.com/automattic/jetpack-ip/compare/v0.2.1...v0.2.2 -[0.2.1]: https://github.com/automattic/jetpack-ip/compare/v0.2.0...v0.2.1 -[0.2.0]: https://github.com/automattic/jetpack-ip/compare/v0.1.6...v0.2.0 -[0.1.6]: https://github.com/automattic/jetpack-ip/compare/v0.1.5...v0.1.6 -[0.1.5]: https://github.com/automattic/jetpack-ip/compare/v0.1.4...v0.1.5 -[0.1.4]: https://github.com/automattic/jetpack-ip/compare/v0.1.3...v0.1.4 -[0.1.3]: https://github.com/automattic/jetpack-ip/compare/v0.1.2...v0.1.3 -[0.1.2]: https://github.com/automattic/jetpack-ip/compare/v0.1.1...v0.1.2 -[0.1.1]: https://github.com/automattic/jetpack-ip/compare/v0.1.0...v0.1.1 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/composer.json deleted file mode 100644 index 733cc629..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/composer.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "automattic/jetpack-ip", - "description": "Utilities for working with IP addresses.", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2" - }, - "require-dev": { - "brain/monkey": "^2.6.2", - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "scripts": { - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" - ], - "test-php": [ - "@composer phpunit" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-ip", - "changelogger": { - "link-template": "https://github.com/automattic/jetpack-ip/compare/v${old}...v${new}" - }, - "branch-alias": { - "dev-trunk": "0.4.x-dev" - }, - "textdomain": "jetpack-ip", - "version-constants": { - "::PACKAGE_VERSION": "src/class-utils.php" - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/src/class-utils.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/src/class-utils.php deleted file mode 100644 index 0b2318aa..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-ip/src/class-utils.php +++ /dev/null @@ -1,543 +0,0 @@ -trusted_header ) && isset( $_SERVER[ $trusted_header_data->trusted_header ] ) ) { - $ip = wp_unslash( $_SERVER[ $trusted_header_data->trusted_header ] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- clean_ip does it below. - $segments = $trusted_header_data->segments; - $reverse_order = $trusted_header_data->reverse; - } else { - $ip = isset( $_SERVER['REMOTE_ADDR'] ) ? wp_unslash( $_SERVER['REMOTE_ADDR'] ) : null; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- clean_ip does it below. - } - - if ( ! $ip ) { - return false; - } - - $ips = explode( ',', $ip ); - if ( ! isset( $segments ) || ! $segments ) { - $segments = 1; - } - if ( isset( $reverse_order ) && $reverse_order ) { - $ips = array_reverse( $ips ); - } - $ip_count = count( $ips ); - if ( 1 === $ip_count ) { - return self::clean_ip( $ips[0] ); - } elseif ( $ip_count >= $segments ) { - $the_one = $ip_count - $segments; - return self::clean_ip( $ips[ $the_one ] ); - } else { - return self::clean_ip( isset( $_SERVER['REMOTE_ADDR'] ) ? wp_unslash( $_SERVER['REMOTE_ADDR'] ) : null ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- clean_ip does it. - } - } - - /** - * Clean IP address. - * - * @param string $ip The IP address to clean. - * @return string|false The cleaned IP address. - */ - public static function clean_ip( $ip ) { - - // Some misconfigured servers give back extra info, which comes after "unless". - $ips = explode( ' unless ', $ip ); - $ip = $ips[0]; - - $ip = strtolower( trim( $ip ) ); - - // Check for IPv4 with port. - if ( preg_match( '/^(\d+\.\d+\.\d+\.\d+):\d+$/', $ip, $matches ) ) { - $ip = $matches[1]; - } - - // Check for IPv6 (or IPvFuture) with brackets and optional port. - if ( preg_match( '/^\[([a-z0-9\-._~!$&\'()*+,;=:]+)\](?::\d+)?$/', $ip, $matches ) ) { - $ip = $matches[1]; - } - - // Check for IPv4 IP cast as IPv6. - if ( preg_match( '/^::ffff:(\d+\.\d+\.\d+\.\d+)$/', $ip, $matches ) ) { - $ip = $matches[1]; - } - - // Validate and return. - return filter_var( $ip, FILTER_VALIDATE_IP ) ? $ip : false; - } - - /** - * Checks an IP to see if it is within a private range. - * - * @param int $ip IP address. - * @return bool True if IP address is private, false otherwise. - */ - public static function ip_is_private( $ip ) { - // We are dealing with ipv6, so we can simply rely on filter_var. - // Note: str_contains() is not used here, as wp-includes/compat.php may not be loaded in this file. - if ( false === strpos( $ip, '.' ) ) { - return ! filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ); - } - // We are dealing with ipv4. - $private_ip4_addresses = array( - '10.0.0.0|10.255.255.255', // Single class A network. - '172.16.0.0|172.31.255.255', // 16 contiguous class B network. - '192.168.0.0|192.168.255.255', // 256 contiguous class C network. - '169.254.0.0|169.254.255.255', // Link-local address also referred to as Automatic Private IP Addressing. - '127.0.0.0|127.255.255.255', // localhost. - ); - $long_ip = ip2long( $ip ); - if ( -1 !== $long_ip ) { - foreach ( $private_ip4_addresses as $pri_addr ) { - list ( $start, $end ) = explode( '|', $pri_addr ); - if ( $long_ip >= ip2long( $start ) && $long_ip <= ip2long( $end ) ) { - return true; - } - } - } - return false; - } - - /** - * Validate an IP address. - * - * @param string $ip IP address. - * @return bool True if valid, false otherwise. - */ - private static function validate_ip_address( string $ip ) { - return filter_var( $ip, FILTER_VALIDATE_IP ); - } - - /** - * Validate an array of IP addresses. - * - * @param array $ips List of IP addresses. - * @return bool True if all IPs are valid, false otherwise. - */ - private static function validate_ip_addresses( array $ips ) { - foreach ( $ips as $ip ) { - if ( ! self::validate_ip_address( $ip ) ) { - return false; - } - } - return true; - } - - /** - * Uses inet_pton if available to convert an IP address to a binary string. - * Returns false if an invalid IP address is given. - * - * @param mixed $ip IP address. - * @return int|string|bool - */ - public static function convert_ip_address( $ip ) { - return inet_pton( $ip ); - } - - /** - * Determines the IP version of the given IP address. - * - * @param string $ip IP address. - * @return string|false 'ipv4', 'ipv6', or false if invalid. - */ - public static function get_ip_version( $ip ) { - if ( filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 ) ) { - return 'ipv4'; - } elseif ( filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 ) ) { - return 'ipv6'; - } else { - return false; - } - } - - /** - * Extracts IP addresses from a given string. - * - * Supports IPv4 and IPv6 ranges in both hyphen and CIDR notation. - * - * @param string $ips List of IPs. - * @return array List of valid IP addresses or ranges. - */ - public static function get_ip_addresses_from_string( $ips ) { - // Split the string by spaces, commas, and semicolons. - $ips = preg_split( '/[\s,;]/', (string) $ips ); - - $result = array(); - - foreach ( $ips as $ip ) { - $ip = trim( $ip ); - - // Check for CIDR notation - if ( strpos( $ip, '/' ) !== false ) { - if ( self::validate_cidr( $ip ) ) { - $result[] = $ip; - } - continue; - } - - // Validate both IP values from the hyphen range. - $range = explode( '-', $ip ); - if ( count( $range ) === 2 ) { - if ( self::validate_ip_range( $range[0], $range[1] ) ) { - $result[] = $ip; - } - continue; - } - - // Validate the single IP value. - if ( filter_var( $ip, FILTER_VALIDATE_IP ) !== false ) { - $result[] = $ip; - } - } - - return $result; - } - - /** - * Validates CIDR notation for IPv4 and IPv6 addresses. - * - * @param string $cidr CIDR notation IP address. - * @return bool True if valid, false otherwise. - */ - public static function validate_cidr( $cidr ) { - // Split the CIDR notation into IP address and prefix length using the '/' separator. - $parts = explode( '/', $cidr ); - if ( count( $parts ) !== 2 ) { - return false; // Invalid CIDR notation if it doesn't contain exactly one '/'. - } - - list( $ip, $netmask ) = $parts; - - // Validate the IP address. - if ( ! filter_var( $ip, FILTER_VALIDATE_IP ) ) { - return false; - } - - $ip_version = self::get_ip_version( $ip ); - if ( ! $ip_version ) { - return false; // Invalid IP address. - } - - // Validate the netmask based on the IP version. - if ( ! self::validate_netmask( $netmask, $ip_version ) ) { - return false; - } - - return true; - } - - /** - * Checks if an IP address is within a CIDR range. - * Supports both IPv4 and IPv6. - * - * @param string $ip IP address. - * @param string $cidr CIDR notation IP range. - * @return bool True if IP is within the range, false otherwise. - */ - public static function ip_in_cidr( $ip, $cidr ) { - // Parse the CIDR notation to extract the base IP address and netmask prefix length. - $parsed_cidr = self::parse_cidr( $cidr ); - if ( ! $parsed_cidr ) { - return false; - } - list( $range, $netmask ) = $parsed_cidr; - - // Determine the IP version (IPv4 or IPv6) of both the input IP and the CIDR range IP. - $ip_version = self::get_ip_version( $ip ); - $range_version = self::get_ip_version( $range ); - - // Ensure both IP addresses are valid and of the same IP version. - if ( ! $ip_version || ! $range_version || $ip_version !== $range_version ) { - return false; - } - - // Validate the netmask based on the IP version. - if ( ! self::validate_netmask( $netmask, $ip_version ) ) { - return false; - } - - if ( $ip_version === 'ipv4' ) { - return self::ip_in_ipv4_cidr( $ip, $range, $netmask ); - } else { - return self::ip_in_ipv6_cidr( $ip, $range, $netmask ); - } - } - - /** - * Parses the CIDR notation into network address and netmask. - * - * @param string $cidr CIDR notation IP range. - * @return array|false Array containing network address and netmask, or false on failure. - */ - public static function parse_cidr( $cidr ) { - $cidr_parts = explode( '/', $cidr, 2 ); - if ( count( $cidr_parts ) !== 2 ) { - return false; // Invalid CIDR notation - } - list( $range, $netmask ) = $cidr_parts; - - // Determine IP version - $ip_version = self::get_ip_version( $range ); - if ( ! $ip_version ) { - return false; // Invalid IP address - } - - // Validate netmask range - if ( ! self::validate_netmask( $netmask, $ip_version ) ) { - return false; // Netmask out of range - } - - return array( $range, (int) $netmask ); - } - - /** - * Validates the netmask based on IP version. - * - * @param string|int $netmask Netmask value. - * @param string $ip_version 'ipv4' or 'ipv6'. - * @return bool True if valid, false otherwise. - */ - public static function validate_netmask( $netmask, $ip_version ) { - // Ensure that $netmask is an integer - if ( ! ctype_digit( (string) $netmask ) ) { - return false; - } - $netmask = (int) $netmask; - - // Validate the netmask based on the IP version. - if ( $ip_version === 'ipv4' ) { - return ( $netmask >= 0 && $netmask <= 32 ); - } elseif ( $ip_version === 'ipv6' ) { - return ( $netmask >= 0 && $netmask <= 128 ); - } else { - return false; - } - } - - /** - * Checks if an IPv4 address is within a CIDR range. - * - * @param string $ip IPv4 address to check. - * @param string $range IPv4 network address. - * @param int $netmask Netmask value. - * @return bool True if IP is within the range, false otherwise. - */ - public static function ip_in_ipv4_cidr( $ip, $range, $netmask ) { - // Validate arguments. - if ( ! self::validate_ip_addresses( array( $ip, $range ) ) || ! self::validate_netmask( $netmask, 'ipv4' ) ) { - return false; // Invalid IP address or netmask. - } - - // Convert IP addresses from their dotted representation to 32-bit unsigned integers. - $ip_long = ip2long( $ip ); - $range_long = ip2long( $range ); - - // Check if the conversion was successful. - if ( $ip_long === false || $range_long === false ) { - return false; // One of the IP addresses is invalid. - } - - /** - * Create the subnet mask as a 32-bit unsigned integer. - * - * Explanation: - * - (32 - $netmask) calculates the number of host bits (the bits not used for the network address). - * - (1 << (32 - $netmask)) shifts the number 1 left by the number of host bits. - * This results in a number where there is a single 1 followed by zeros equal to the number of host bits. - * - Subtracting 1 gives us a number where the host bits are all 1s. - * - Applying the bitwise NOT operator (~) inverts the bits, turning all host bits to 0 and network bits to 1. - * This results in the subnet mask having 1s in the network portion and 0s in the host portion. - * - * Example for netmask = 24: - * - (32 - 24) = 8 - * - (1 << 8) = 256 (binary: 00000000 00000000 00000001 00000000) - * - 256 - 1 = 255 (binary: 00000000 00000000 00000000 11111111) - * - ~255 = 4294967040 (binary: 11111111 11111111 11111111 00000000) - */ - $mask = ~ ( ( 1 << ( 32 - $netmask ) ) - 1 ); - - /** - * Use bitwise AND to apply the subnet mask to both the IP address and the network address. - * - ($ip_long & $mask) isolates the network portion of the IP address. - * - ($range_long & $mask) isolates the network portion of the CIDR range. - * - If both network portions are equal, the IP address belongs to the same subnet and is within the CIDR range. - */ - return ( $ip_long & $mask ) === ( $range_long & $mask ); - } - - /** - * Checks if an IPv6 address is within a CIDR range. - * - * @param string $ip IPv6 address to check. - * @param string $range IPv6 network address. - * @param int $netmask Netmask value. - * @return bool True if IP is within the range, false otherwise. - */ - public static function ip_in_ipv6_cidr( $ip, $range, $netmask ) { - // Validate arguments. - if ( ! self::validate_ip_addresses( array( $ip, $range ) ) || ! self::validate_netmask( $netmask, 'ipv6' ) ) { - return false; // Invalid IP address or netmask. - } - - // Convert IP addresses from their textual representation to binary strings. - $ip_bin = inet_pton( $ip ); - $range_bin = inet_pton( $range ); - - // Check if the conversion was successful. - if ( $ip_bin === false || $range_bin === false ) { - return false; // One of the IP addresses is invalid. - } - - /** - * Calculate the subnet mask in binary form. - * - * IPv6 addresses are 128 bits long. - * The netmask defines how many bits are set to 1 in the subnet mask. - * - * - $netmask_full_bytes: Number of full bytes (each 8 bits) that are all 1s. - * - $netmask_remainder_bits: Remaining bits (less than 8) that need to be set to 1. - * - * For example, if $netmask = 65: - * - $netmask_full_bytes = floor(65 / 8) = 8 (since 8 * 8 = 64 bits) - * - $netmask_remainder_bits = 65 % 8 = 1 (1 bit remaining) - * - * We'll construct the subnet mask by: - * - Starting with $netmask_full_bytes of 0xff (11111111 in binary). - * - Adding a byte where the first $netmask_remainder_bits bits are 1, rest are 0. - * - Padding the rest with zeros to make it 16 bytes (128 bits) long. - */ - - // Number of full bytes (each full byte is 8 bits) in the netmask. - $netmask_full_bytes = (int) ( $netmask / 8 ); - - // Number of remaining bits in the last byte of the netmask. - $netmask_remainder_bits = $netmask % 8; - - // Start with a string of $netmask_full_bytes of 0xff bytes (each byte is 8 bits set to 1). - $netmask_bin = str_repeat( "\xff", $netmask_full_bytes ); - - if ( $netmask_remainder_bits > 0 ) { - // Create the last byte with $netmask_remainder_bits bits set to 1 from the left. - // - str_repeat('1', $netmask_remainder_bits): creates a string with the required number of '1's. - // - str_pad(...): pads the string on the right with '0's to make it 8 bits. - // - bindec(...): converts the binary string to a decimal number. - // - chr(...): gets the character corresponding to the byte value. - $last_byte = chr( bindec( str_pad( str_repeat( '1', $netmask_remainder_bits ), 8, '0', STR_PAD_RIGHT ) ) ); - // Append the last byte to the netmask binary string. - $netmask_bin .= $last_byte; - } - - // Pad the netmask binary string to 16 bytes (128 bits) with zeros (\x00). - $netmask_bin = str_pad( $netmask_bin, 16, "\x00" ); - - /** - * Use bitwise AND to apply the subnet mask to both the IP address and the network address. - * - ($ip_bin & $netmask_bin) isolates the network portion of the IP address. - * - ($range_bin & $netmask_bin) isolates the network portion of the CIDR range. - * - If both network portions are equal, the IP address belongs to the same subnet and is within the CIDR range. - */ - return ( $ip_bin & $netmask_bin ) === ( $range_bin & $netmask_bin ); - } - - /** - * Validates the low and high IP addresses of a range. - * - * Now supports IPv6 addresses. - * - * @param string $range_low Low IP address. - * @param string $range_high High IP address. - * @return bool True if the range is valid, false otherwise. - */ - public static function validate_ip_range( $range_low, $range_high ) { - // Validate that both IP addresses are valid. - if ( self::validate_ip_addresses( array( $range_low, $range_high ) ) === false ) { - return false; - } - - // Ensure both IPs are of the same version - $range_low_ip_version = self::get_ip_version( $range_low ); - $range_high_ip_version = self::get_ip_version( $range_high ); - - if ( $range_low_ip_version !== $range_high_ip_version || ! $range_low_ip_version || ! $range_high_ip_version ) { - return false; // Invalid or mixed IP versions. - } - - // Convert IP addresses to their packed binary representation. - $ip_low = inet_pton( $range_low ); - $ip_high = inet_pton( $range_high ); - - // Check if the conversion was successful. - if ( false === $ip_low || false === $ip_high ) { - return false; - } - - // Compare the binary representations to ensure the low IP is not greater than the high IP. - if ( strcmp( $ip_low, $ip_high ) > 0 ) { - return false; - } - - return true; - } - - /** - * Checks that a given IP address is within a given range. - * - * Supports CIDR notation and hyphenated ranges for both IPv4 and IPv6. - * - * @param string $ip IP address. - * @param string $range_low Range low or CIDR notation. - * @param null|string $range_high Optional. Range high. Not used if $range_low is CIDR notation. - * @return bool - */ - public static function ip_address_is_in_range( $ip, $range_low, $range_high = null ) { - // Validate that all provided IP addresses are valid. - if ( $range_high !== null && ! self::validate_ip_addresses( array( $ip, $range_low, $range_high ) ) ) { - return false; - } else { - $range_low_parsed = self::parse_cidr( $range_low ); - if ( $range_low_parsed && ! self::validate_ip_addresses( array( $ip, $range_low_parsed[0] ) ) ) { - return false; - } - } - - if ( strpos( $range_low, '/' ) !== false ) { - // CIDR notation - if ( $range_high !== null ) { - // Invalid usage: CIDR notation with range high parameter - return false; - } - return self::ip_in_cidr( $ip, $range_low ); - } - - // Hyphenated range - if ( $range_high === null ) { - return false; // Invalid parameters - } - - $ip_num = inet_pton( $ip ); - $ip_low = inet_pton( $range_low ); - $ip_high = inet_pton( $range_high ); - if ( $ip_num && $ip_low && $ip_high && strcmp( $ip_num, $ip_low ) >= 0 && strcmp( $ip_num, $ip_high ) <= 0 ) { - return true; - } - return false; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/CHANGELOG.md deleted file mode 100644 index 52cf2f9f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/CHANGELOG.md +++ /dev/null @@ -1,1060 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [4.2.7] - 2025-03-24 -### Changed -- Allow JITM functionality to be enabled on Simple sites. [#41252] - -## [4.2.6] - 2025-03-21 -### Changed -- Internal updates. - -## [4.2.5] - 2025-03-18 -### Changed -- Update dependencies. [#42545] - -## [4.2.4] - 2025-03-17 -### Changed -- Internal updates. - -## [4.2.3] - 2025-03-17 -### Changed -- Internal updates. - -## [4.2.2] - 2025-03-12 -### Changed -- Internal updates. - -## [4.2.1] - 2025-03-05 -### Changed -- Internal updates. - -## [4.2.0] - 2025-03-03 -### Changed -- Replace more JITM jQuery Ajax calls with `@wordpress/api-fetch`. [#41990] -- Update package dependencies. [#42163] - -## [4.1.1] - 2025-02-24 -### Changed -- Refactor handling of JITM-approved screens. [#41748] - -## [4.1.0] - 2025-02-17 -### Changed -- Update AJAX calls to utilise @wordpress/api-fetch. [#41745] - -## [4.0.7] - 2025-02-12 -### Fixed -- Fix the query parameter used for JITM query strings. [#41542] - -## [4.0.6] - 2025-02-10 -### Changed -- Update package dependencies. [#41491] - -## [4.0.5] - 2025-02-03 -### Changed -- Update package dependencies. [#41286] -- Update the WooCommerce logo in Woo JITMs. [#41322] - -## [4.0.4] - 2025-01-20 -### Changed -- Updated package dependencies. [#41099] - -## [4.0.3] - 2024-12-16 -### Changed -- Updated package dependencies. [#40564] - -## [4.0.2] - 2024-12-04 -### Changed -- Updated package dependencies. [#40363] - -## [4.0.1] - 2024-11-25 -### Changed -- Updated package dependencies. [#40258] [#40288] - -## [4.0.0] - 2024-11-14 -### Removed -- General: Update minimum PHP version to 7.2. [#40147] - -## [3.1.29] - 2024-11-11 -### Changed -- Updated package dependencies. [#39999] - -## [3.1.28] - 2024-11-04 -### Added -- Enable test coverage. [#39961] - -## [3.1.27] - 2024-10-29 -### Changed -- Internal updates. - -## [3.1.26] - 2024-10-14 -### Changed -- Only include `wp-polyfill` as a script dependency when needed. [#39629] - -## [3.1.25] - 2024-10-10 -### Changed -- Updated package dependencies. [#39707] - -## [3.1.24] - 2024-10-07 -### Changed -- Updated package dependencies. [#39594] - -## [3.1.23] - 2024-09-23 -### Changed -- Update dependencies. - -## [3.1.22] - 2024-09-10 -### Changed -- Updated package dependencies. [#39302] - -## [3.1.21] - 2024-09-05 -### Changed -- Update dependencies. - -## [3.1.20] - 2024-09-05 -### Changed -- Updated package dependencies. [#39176] - -## [3.1.19] - 2024-08-29 -### Changed -- Updated package dependencies. [#39111] - -## [3.1.18] - 2024-08-23 -### Changed -- Updated package dependencies. [#39004] - -## [3.1.17] - 2024-08-19 -### Fixed -- Lossless image optimization for images (should improve performance with no visible changes). [#38750] - -## [3.1.16] - 2024-08-15 -### Changed -- Updated package dependencies. [#38662] - -## [3.1.15] - 2024-08-08 -### Fixed -- JITM: Fix background for RTL languages. [#38706] - -## [3.1.14] - 2024-07-18 -### Changed -- Update margins on jitms in my jetpack [#38283] - -## [3.1.13] - 2024-07-03 -### Changed -- Updated package dependencies. [#38132] - -## [3.1.12] - 2024-06-05 -### Changed -- Updated package dependencies. [#37669] - -## [3.1.11] - 2024-05-16 -### Changed -- Updated package dependencies. [#37379] - -## [3.1.10] - 2024-05-06 -### Changed -- Updated package dependencies. [#37147] - -## [3.1.9] - 2024-04-26 -### Changed -- Internal updates. - -## [3.1.8] - 2024-04-25 -### Changed -- Internal updates. - -## [3.1.7] - 2024-04-22 -### Changed -- Internal updates. - -## [3.1.6] - 2024-04-15 -### Changed -- Internal updates. - -## [3.1.5] - 2024-04-11 -### Changed -- Internal updates. - -## [3.1.4] - 2024-04-08 -### Changed -- Updated package dependencies. [#36760] - -## [3.1.3] - 2024-03-27 -### Changed -- Updated package dependencies. [#36585] - -## [3.1.2] - 2024-03-25 -### Changed -- Update Phan baselines [#36441] - -## [3.1.1] - 2024-03-14 -### Changed -- Internal updates. - -## [3.1.0] - 2024-03-12 -### Changed -- Performance: only enqueue the JITM JavaScript on pages where it will be used. [#35997] -- Updated package dependencies. [#36325] - -## [3.0.5] - 2024-03-04 -### Changed -- Updated package dependencies. [#36095] - -## [3.0.4] - 2024-02-13 -### Changed -- Updated package dependencies. [#35608] - -## [3.0.3] - 2024-02-05 -### Changed -- Updated package dependencies. [#35384] - -## [3.0.2] - 2024-01-04 -### Changed -- Updated package dependencies. [#34815] - -## [3.0.1] - 2023-12-03 -### Changed -- Updated package dependencies. [#34411] - -## [3.0.0] - 2023-11-20 -### Changed -- Updated required PHP version to >= 7.0. [#34192] - -### Removed -- Removed the Partner package requirement. Relying on the Connection package instead. [#33832] - -## [2.5.3] - 2023-11-14 -### Changed -- Updated package dependencies. [#34093] - -## [2.5.2] - 2023-11-03 - -## [2.5.1] - 2023-10-19 -### Changed -- Updated package dependencies. [#33687] - -## [2.5.0] - 2023-10-10 -### Added -- JITMs can now redirect to a specific Jetpack settings page. [#32826] - -### Changed -- Update color of WooCommerce logo. [#33491] -- Updated package dependencies. [#33428] - -## [2.4.0] - 2023-09-28 -### Changed -- Moved tracking for JITM buttons into JITM script, added message_path property [#33252] - -## [2.3.19] - 2023-09-19 - -- Minor internal updates. - -## [2.3.18] - 2023-09-04 -### Changed -- Updated package dependencies. [#32803] - -## [2.3.17] - 2023-08-23 -### Changed -- Updated package dependencies. [#32605] - -## [2.3.16] - 2023-08-21 -### Fixed -- Update secondary button styling [#32503] - -## [2.3.15] - 2023-08-09 -### Changed -- Updated package dependencies. [#32166] - -## [2.3.14] - 2023-07-25 -### Changed -- Updated package dependencies. [#32040] - -## [2.3.13] - 2023-07-17 -### Changed -- Generate query string when using the WPCOM API to fetch JITMs [#31809] - -## [2.3.12] - 2023-07-11 -### Changed -- Updated package dependencies. [#31785] - -## [2.3.11] - 2023-07-05 -### Changed -- Updated package dependencies. [#31659] - -## [2.3.10] - 2023-06-23 -### Changed -- Updated package dependencies. [#31468] - -## [2.3.9] - 2023-06-06 -### Changed -- Updated package dependencies. [#31129] - -## [2.3.8] - 2023-05-08 -### Added -- JITM: Add jetpack-videopress to JITM refetch on hashchange list [#30465] - -## [2.3.7] - 2023-05-02 -### Changed -- Updated package dependencies. [#30375] - -## [2.3.6] - 2023-04-10 -### Added -- Add Jetpack Autoloader package suggestion. [#29988] - -## [2.3.5] - 2023-04-04 -### Added -- Add external link icons in JITM [#29654] - -### Changed -- Updated package dependencies. [#29854] - -## [2.3.4] - 2023-03-28 -### Fixed -- JITM: Fix button overflow when text length is too big [#29749] - -## [2.3.3] - 2023-03-27 -### Changed -- JITM: Update styles [#29709] - -## [2.3.2] - 2023-03-20 -### Changed -- Updated package dependencies. [#29471] - -## [2.3.1] - 2023-03-08 -### Changed -- Updated package dependencies. [#29216] - -## [2.3.0] - 2023-02-20 -### Changed -- Moving deleting connection owner notice from JITM to Connection package. [#28516] - -## [2.2.42] - 2023-02-15 -### Changed -- Update to React 18. [#28710] - -## [2.2.41] - 2023-02-06 -### Fixed -- JITM: minor fix for styles on Safari browser. - -## [2.2.40] - 2023-01-30 -### Changed -- Updated styles for Just in Time Messages (notices) [#27515] - -## [2.2.39] - 2023-01-25 -### Changed -- Minor internal updates. - -## [2.2.38] - 2023-01-23 -### Fixed -- Prevent the activation page from displaying the JP License Activation JITM. [#27959] - -## [2.2.37] - 2023-01-11 -### Changed -- Updated package dependencies. - -## [2.2.36] - 2022-12-27 -### Removed -- Remove src/js files from final bundle [#27930] - -## [2.2.35] - 2022-12-02 -### Changed -- Updated package dependencies. [#27696] - -## [2.2.34] - 2022-11-22 -### Changed -- Updated package dependencies. [#27043] - -## [2.2.33] - 2022-11-08 -### Changed -- Updated package dependencies. [#27289] - -## [2.2.32] - 2022-11-07 -### Changed -- Updated package dependencies. [#27278] - -## [2.2.31] - 2022-11-01 -### Changed -- Updated package dependencies. [#27196] - -## [2.2.30] - 2022-10-25 -### Changed -- Updated package dependencies. [#26705] - -## [2.2.29] - 2022-10-13 -### Changed -- Updated package dependencies. [#26791] - -## [2.2.28] - 2022-10-05 -### Changed -- Updated package dependencies. [#26568] - -## [2.2.27] - 2022-09-08 -### Changed -- Updated package dependencies. - -## [2.2.26] - 2022-08-29 -### Changed -- Updated package dependencies. - -## [2.2.25] - 2022-08-25 -### Changed -- Updated package dependencies. [#25814] - -## [2.2.24] - 2022-08-23 -### Added -- Add custom styling rules for the JITMs displayed in My Jetpack. [#22452] -- Updated JITM readme. [#25739] - -### Changed -- Updated package dependencies. [#25628] - -## [2.2.23] - 2022-08-03 -### Changed -- Updated package dependencies. [#25300, #25315] - -## [2.2.22] - 2022-07-26 -### Changed -- Updated package dependencies. [#25158] - -## [2.2.21] - 2022-07-12 -### Changed -- Updated package dependencies. - -## [2.2.20] - 2022-06-21 -### Changed -- Renaming master to trunk. [#24661] - -## [2.2.19] - 2022-06-14 -### Changed -- Updated package dependencies. [#24529] - -## [2.2.18] - 2022-06-08 -### Changed -- Reorder JS imports for `import/order` eslint rule. [#24601] - -## [2.2.17] - 2022-05-18 -### Changed -- Updated package dependencies [#24372] - -## [2.2.16] - 2022-05-10 -### Changed -- Updated package dependencies. [#24302] - -## [2.2.15] - 2022-05-04 -### Changed -- Remove use of `pnpx` in preparation for pnpm 7.0. [#24210] -- Updated package dependencies. [#24095] - -### Deprecated -- Moved the options class into Connection. [#24095] - -## [2.2.14] - 2022-04-26 -### Changed -- Updated package dependencies. -- Update package.json metadata. - -## [2.2.13] - 2022-04-19 -### Changed -- PHPCS: Fix `WordPress.Security.ValidatedSanitizedInput` - -## [2.2.12] - 2022-04-12 -### Changed -- Updated package dependencies. - -## [2.2.11] - 2022-04-06 -### Changed -- Updated package dependencies - -### Removed -- Removed tracking dependency. - -## [2.2.10] - 2022-03-29 -### Changed -- Updated package dependencies. - -## [2.2.9] - 2022-03-23 -### Changed -- Updated package dependencies. - -## [2.2.8] - 2022-03-02 -### Changed -- Updated package dependencies - -## [2.2.7] - 2022-02-22 -### Changed -- Updated package dependencies. - -## [2.2.6] - 2022-02-16 -### Changed -- Updated package dependencies. - -## [2.2.5] - 2022-02-09 -### Changed -- Updated package dependencies. - -## [2.2.4] - 2022-02-02 -### Changed -- Build: remove unneeded files from production build. -- Update use of old jQuery interfaces - -## [2.2.3] - 2022-01-25 -### Changed -- Updated package dependencies. - -## [2.2.2] - 2022-01-18 -### Changed -- General: update required node version to v16.13.2 - -## [2.2.1] - 2022-01-11 -### Changed -- Updated package dependencies. - -## [2.2.0] - 2022-01-04 -### Changed -- Switch to pcov for code coverage. -- Updated package dependencies. -- Updated package textdomain from `jetpack` to `jetpack-jitm`. - -## [2.1.1] - 2021-12-14 -### Changed -- Updated package dependencies. - -## [2.1.0] - 2021-11-30 -### Added -- Add proper JS and CSS builder. -- Adds filters to allow sideloading of the Jetpack Backup plugin through JITMs. -- JITM: Added ability to sideload Jetpack Boost plugin. - -### Changed -- Add `output.filename` in Webpack config to override changed default. -- Colors: update Jetpack Primary color to match latest brand book. - -### Fixed -- JITM: wrap CTA below text on small viewports - -## [2.0.8] - 2021-11-23 -### Changed -- Updated package dependencies. - -## [2.0.7] - 2021-11-16 -### Added -- Use monorepo `validate-es` script to validate Webpack builds. - -### Changed -- Updated package dependencies. - -## [2.0.6] - 2021-11-09 -### Changed -- Update webpack build config. - -## [2.0.5] - 2021-11-02 -### Changed -- Set `convertDeprecationsToExceptions` true in PHPUnit config. -- Update PHPUnit configs to include just what needs coverage rather than include everything then try to exclude stuff that doesn't. - -## [2.0.4] - 2021-10-26 -### Changed -- Updated package dependencies. - -## [2.0.3] - 2021-10-19 -### Changed -- Updated package dependencies. - -## [2.0.2] - 2021-10-12 -### Changed -- Updated package dependencies - -## [2.0.1] - 2021-09-28 -### Changed -- Allow Node ^14.17.6 to be used in this project. This shouldn't change the behavior of the code itself. -- Updated package dependencies. - -## [2.0.0] - 2021-08-31 -### Changed -- Run composer update on test-php command instead of phpunit. -- Tests: update PHPUnit polyfills dependency (yoast/phpunit-polyfills). -- Update annotations versions. -- Updated package dependencies. -- Update to latest webpack, webpack-cli and calypso-build. -- Upgrade to Webpack 5. -- Use Node 16.7.0 in tooling. - -### Removed -- Removed IE11 support. - -## [1.16.2] - 2021-07-27 -### Changed -- Updated package dependencies. - -## [1.16.1] - 2021-06-29 -### Changed -- Update package dependencies. -- Update node version requirement to 14.16.1 -- Update the usage of Redirect lib and passes the unlinked param as a query argument. - -## [1.16.0] - 2021-05-25 -### Added -- JITM: allow the plugin to set the icon for pre-connection JITMs. -- JITM: move sync updated option hook to the JITM package. - -### Changed -- JITM: prevent JITMs from being registered more than once. -- JITM: remove jetpack-constants dependency from composer.json -- JITM: set the default values of the jetpack_just_in_time_msgs and jetpack_just_in_time_msg_cache filters to true. -- JITM: Use an action instead of a property to prevent JITMs from being registered multiple times -- JITM: Use the Device_Detection package to determine if the device is mobile. -- Updated package dependencies -- update jetpack-redirect dependency - -## [1.15.1] - 2021-05-03 -### Changed -- JITM: Use manager::get_authorization_url to obtain the authorization url in the user deletion notice. - -## [1.15.0] - 2021-04-27 -### Added -- Move JITM's REST API endpoints into the package - -### Changed -- Always display pre-connection JITMs, without the need to set a filter. -- Avoid wrapping text in the main CTA button. -- Bump JITM package version requirement. -- JITM: Update CTA redirect url with unlinked query arg to indicate current user is not connected. -- Update package dependencies. -- Use the a8c-mc-stats package to generate stats. - -## [1.14.1] - 2021-03-30 -### Added -- Composer alias for dev-master, to improve dependencies - -### Changed -- Use is_connected instead of is_active to instantiate Pre/Post_Connection_JITM -- Add a jetpack_pre_connection_jitms filter. -- Update colors to match upcoming WP 5.7 color changes -- Update Node to match latest LTS 12 -- Update package dependencies. - -### Fixed -- Use `composer update` rather than `install` in scripts, as composer.lock isn't checked in. - -## [1.14.0] - 2021-02-23 - -- Recommendations: Hide JITMs when banner is displaying -- Setup Wizard: Remove setup wizard -- JITM: move jetpack-jitm.js to the JITM package -- CI: Make tests more generic - -## [1.13.5] - 2021-02-08 - -- Update dependencies to latest stable - -## [1.13.4] - 2021-01-28 - -- Update dependencies to latest stable - -## [1.13.3] - 2021-01-26 - -- Update dependencies to latest stable - -## [1.13.2] - 2021-01-26 - -- Update dependencies to latest stable - -## [1.13.1] - 2021-01-26 - -- Add mirror-repo information to all current composer packages -- Monorepo: Reorganize all projects - -## [1.13.0] - 2021-01-05 - -- Update dependency brain/monkey to v2.6.0 -- Pin dependencies -- Packages: Update for PHP 8 testing - -## [1.12.2] - 2020-12-09 - -- Update dependencies to latest stable - -## [1.12.1] - 2020-11-24 - -- Version packages for release - -## [1.12.0] - 2020-11-24 - -- Status: Introduce get_site_suffix method -- General: update minimum required version to WordPress 5.5 -- Updated PHPCS: Packages and Debugger - -## [1.11.2] - 2020-11-05 - -- Update dependencies to latest stable - -## [1.11.1] - 2020-10-29 - -- Update dependencies to latest stable - -## [1.11.0] - 2020-10-27 - -- JITM: add a Pre_Connection_JITM::generate_admin_url method -- JITM: use is_active from the connection package -- JITM: regenerate assets - -## [1.10.4] - 2020-10-14 - -- Update dependencies to latest stable - -## [1.10.3] - 2020-10-09 - -- Update dependencies to latest stable - -## [1.10.2] - 2020-10-06 - -- Update dependencies to latest stable - -## [1.10.1] - 2020-10-01 - -- Update dependencies to latest stable - -## [1.10.0] - 2020-09-29 - -- Update dependencies to latest stable - -## [1.9.1] - 2020-09-09 - -- Update dependencies to latest stable - -## [1.9.0] - 2020-08-26 - -- Compat: add new Creative Mail compat file -- Packages: Update filenames after #16810 -- CI: Try collect js coverage -- Docker: Add package testing shortcut - -## [1.8.2] - 2020-08-10 - -- Update dependencies to latest stable - -## [1.8.1] - 2020-08-10 - -- Update dependencies to latest stable - -## [1.8.0] - 2020-07-28 - -- Core Compat: Site Environment -- Core REST API: Add permission callback to delete_jitm_message endpoint - -## [1.7.2] - 2020-07-06 - -- Update dependencies to latest stable - -## [1.7.1] - 2020-07-01 - -- Update dependencies to latest stable - -## [1.7.0] - 2020-06-30 - -- PHPCS: Clean up the packages -- Hide pre-connection JITM on the posts page when few posts are published -- Jetpack Setup Wizard: Do not show pre-connection JITMs to non admins -- JITM: change 'setup' to 'set up' in pre-connection JITMs -- Pre-connection JITMS: Link to connect-in-place flow -- JITM: add Redirect use statement - -## [1.6.5] - 2020-06-01 - -- Hide pre-connection JITM on the posts page when few posts are published - -## [1.6.4] - 2020-06-01 - -- Update dependencies to latest stable - -## [1.6.3] - 2020-05-29 - -- Jetpack Setup Wizard: Do not show pre-connection JITMs to non admins - -## [1.6.2] - 2020-05-29 - -- JITM: change 'setup' to 'set up' in pre-connection JITMs -- Pre-connection JITMS: Link to connect-in-place flow - -## [1.6.1] - 2020-05-28 - -- JITM: add Redirect use statement - -## [1.6.0] - 2020-05-26 - -- JITM: expand docs and tests to account for pre-connection messages -- Improve responsiveness of JITMs -- JITM: fix the use statements -- Implement pre-connection JITMs -- JITM: Allow JITM on stats pages - -## [1.5.1] - 2020-04-30 - -- JITM: Allow JITM on stats pages - -## [1.5.0] - 2020-04-28 - -- Use jp.com redirect in all links - -## [1.4.0] - 2020-03-31 - -- Update dependencies to latest stable - -## [1.3.0] - 2020-03-31 - -- Use dynamic Jetpack logos on JITMs - -## [1.2.0] - 2020-02-25 - -- JITM: Show ToS update notice - -## [1.1.2] - 2020-02-14 - -- SSO: do not display JITM when not in wp-admin - -## [1.1.1] - 2020-01-23 - -- Moved JITM initialization to plugins_loaded. - -## [1.1.0] - 2020-01-07 - -- Add partner subsidiary id to upgrade URLs. - -## [1.0.10] - 2019-11-25 - -- Connection Owner Deletion Notice: Fix display bug and sanitize… - -## [1.0.9] - 2019-11-19 - -- Don't show JITMs on Gutenberg editor pages (for now) - -## [1.0.8] - 2019-11-08 - -- Packages: Use classmap instead of PSR-4 - -## [1.0.7] - 2019-11-08 - -- Remove unused get_emblem method - -## [1.0.6] - 2019-10-31 - -- Inherit 400 weight for button fonts - -## [1.0.5] - 2019-10-28 - -- PHPCS: JITM and Assets packages - -## [1.0.4] - 2019-10-24 - -- Update Jetpack button and card styles to match WordPress 5.3 - -## [1.0.3] - 2019-10-23 - -- Use spread operator instead of func_get_args - -## [1.0.2] - 2019-10-17 - -- Change the class in the add_filter() calls to $this. Also fix some - -## [1.0.1] - 2019-09-27 - -- Initial trial of prefer-dist -- JITM: Send the user's role in the request for JITM messages - -## 1.0.0 - 2019-09-14 - -- Update Jetpack to use new JITM package - -[4.2.7]: https://github.com/Automattic/jetpack-jitm/compare/v4.2.6...v4.2.7 -[4.2.6]: https://github.com/Automattic/jetpack-jitm/compare/v4.2.5...v4.2.6 -[4.2.5]: https://github.com/Automattic/jetpack-jitm/compare/v4.2.4...v4.2.5 -[4.2.4]: https://github.com/Automattic/jetpack-jitm/compare/v4.2.3...v4.2.4 -[4.2.3]: https://github.com/Automattic/jetpack-jitm/compare/v4.2.2...v4.2.3 -[4.2.2]: https://github.com/Automattic/jetpack-jitm/compare/v4.2.1...v4.2.2 -[4.2.1]: https://github.com/Automattic/jetpack-jitm/compare/v4.2.0...v4.2.1 -[4.2.0]: https://github.com/Automattic/jetpack-jitm/compare/v4.1.1...v4.2.0 -[4.1.1]: https://github.com/Automattic/jetpack-jitm/compare/v4.1.0...v4.1.1 -[4.1.0]: https://github.com/Automattic/jetpack-jitm/compare/v4.0.7...v4.1.0 -[4.0.7]: https://github.com/Automattic/jetpack-jitm/compare/v4.0.6...v4.0.7 -[4.0.6]: https://github.com/Automattic/jetpack-jitm/compare/v4.0.5...v4.0.6 -[4.0.5]: https://github.com/Automattic/jetpack-jitm/compare/v4.0.4...v4.0.5 -[4.0.4]: https://github.com/Automattic/jetpack-jitm/compare/v4.0.3...v4.0.4 -[4.0.3]: https://github.com/Automattic/jetpack-jitm/compare/v4.0.2...v4.0.3 -[4.0.2]: https://github.com/Automattic/jetpack-jitm/compare/v4.0.1...v4.0.2 -[4.0.1]: https://github.com/Automattic/jetpack-jitm/compare/v4.0.0...v4.0.1 -[4.0.0]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.29...v4.0.0 -[3.1.29]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.28...v3.1.29 -[3.1.28]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.27...v3.1.28 -[3.1.27]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.26...v3.1.27 -[3.1.26]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.25...v3.1.26 -[3.1.25]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.24...v3.1.25 -[3.1.24]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.23...v3.1.24 -[3.1.23]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.22...v3.1.23 -[3.1.22]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.21...v3.1.22 -[3.1.21]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.20...v3.1.21 -[3.1.20]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.19...v3.1.20 -[3.1.19]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.18...v3.1.19 -[3.1.18]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.17...v3.1.18 -[3.1.17]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.16...v3.1.17 -[3.1.16]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.15...v3.1.16 -[3.1.15]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.14...v3.1.15 -[3.1.14]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.13...v3.1.14 -[3.1.13]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.12...v3.1.13 -[3.1.12]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.11...v3.1.12 -[3.1.11]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.10...v3.1.11 -[3.1.10]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.9...v3.1.10 -[3.1.9]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.8...v3.1.9 -[3.1.8]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.7...v3.1.8 -[3.1.7]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.6...v3.1.7 -[3.1.6]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.5...v3.1.6 -[3.1.5]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.4...v3.1.5 -[3.1.4]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.3...v3.1.4 -[3.1.3]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.2...v3.1.3 -[3.1.2]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.1...v3.1.2 -[3.1.1]: https://github.com/Automattic/jetpack-jitm/compare/v3.1.0...v3.1.1 -[3.1.0]: https://github.com/Automattic/jetpack-jitm/compare/v3.0.5...v3.1.0 -[3.0.5]: https://github.com/Automattic/jetpack-jitm/compare/v3.0.4...v3.0.5 -[3.0.4]: https://github.com/Automattic/jetpack-jitm/compare/v3.0.3...v3.0.4 -[3.0.3]: https://github.com/Automattic/jetpack-jitm/compare/v3.0.2...v3.0.3 -[3.0.2]: https://github.com/Automattic/jetpack-jitm/compare/v3.0.1...v3.0.2 -[3.0.1]: https://github.com/Automattic/jetpack-jitm/compare/v3.0.0...v3.0.1 -[3.0.0]: https://github.com/Automattic/jetpack-jitm/compare/v2.5.3...v3.0.0 -[2.5.3]: https://github.com/Automattic/jetpack-jitm/compare/v2.5.2...v2.5.3 -[2.5.2]: https://github.com/Automattic/jetpack-jitm/compare/v2.5.1...v2.5.2 -[2.5.1]: https://github.com/Automattic/jetpack-jitm/compare/v2.5.0...v2.5.1 -[2.5.0]: https://github.com/Automattic/jetpack-jitm/compare/v2.4.0...v2.5.0 -[2.4.0]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.19...v2.4.0 -[2.3.19]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.18...v2.3.19 -[2.3.18]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.17...v2.3.18 -[2.3.17]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.16...v2.3.17 -[2.3.16]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.15...v2.3.16 -[2.3.15]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.14...v2.3.15 -[2.3.14]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.13...v2.3.14 -[2.3.13]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.12...v2.3.13 -[2.3.12]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.11...v2.3.12 -[2.3.11]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.10...v2.3.11 -[2.3.10]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.9...v2.3.10 -[2.3.9]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.8...v2.3.9 -[2.3.8]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.7...v2.3.8 -[2.3.7]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.6...v2.3.7 -[2.3.6]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.5...v2.3.6 -[2.3.5]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.4...v2.3.5 -[2.3.4]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.3...v2.3.4 -[2.3.3]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.2...v2.3.3 -[2.3.2]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.1...v2.3.2 -[2.3.1]: https://github.com/Automattic/jetpack-jitm/compare/v2.3.0...v2.3.1 -[2.3.0]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.42...v2.3.0 -[2.2.42]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.41...v2.2.42 -[2.2.41]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.40...v2.2.41 -[2.2.40]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.39...v2.2.40 -[2.2.39]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.38...v2.2.39 -[2.2.38]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.37...v2.2.38 -[2.2.37]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.36...v2.2.37 -[2.2.36]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.35...v2.2.36 -[2.2.35]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.34...v2.2.35 -[2.2.34]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.33...v2.2.34 -[2.2.33]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.32...v2.2.33 -[2.2.32]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.31...v2.2.32 -[2.2.31]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.30...v2.2.31 -[2.2.30]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.29...v2.2.30 -[2.2.29]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.28...v2.2.29 -[2.2.28]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.27...v2.2.28 -[2.2.27]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.26...v2.2.27 -[2.2.26]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.25...v2.2.26 -[2.2.25]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.24...v2.2.25 -[2.2.24]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.23...v2.2.24 -[2.2.23]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.22...v2.2.23 -[2.2.22]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.21...v2.2.22 -[2.2.21]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.20...v2.2.21 -[2.2.20]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.19...v2.2.20 -[2.2.19]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.18...v2.2.19 -[2.2.18]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.17...v2.2.18 -[2.2.17]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.16...v2.2.17 -[2.2.16]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.15...v2.2.16 -[2.2.15]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.14...v2.2.15 -[2.2.14]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.13...v2.2.14 -[2.2.13]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.12...v2.2.13 -[2.2.12]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.11...v2.2.12 -[2.2.11]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.10...v2.2.11 -[2.2.10]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.9...v2.2.10 -[2.2.9]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.8...v2.2.9 -[2.2.8]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.7...v2.2.8 -[2.2.7]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.6...v2.2.7 -[2.2.6]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.5...v2.2.6 -[2.2.5]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.4...v2.2.5 -[2.2.4]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.3...v2.2.4 -[2.2.3]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.2...v2.2.3 -[2.2.2]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.1...v2.2.2 -[2.2.1]: https://github.com/Automattic/jetpack-jitm/compare/v2.2.0...v2.2.1 -[2.2.0]: https://github.com/Automattic/jetpack-jitm/compare/v2.1.1...v2.2.0 -[2.1.1]: https://github.com/Automattic/jetpack-jitm/compare/v2.1.0...v2.1.1 -[2.1.0]: https://github.com/Automattic/jetpack-jitm/compare/v2.0.8...v2.1.0 -[2.0.8]: https://github.com/Automattic/jetpack-jitm/compare/v2.0.7...v2.0.8 -[2.0.7]: https://github.com/Automattic/jetpack-jitm/compare/v2.0.6...v2.0.7 -[2.0.6]: https://github.com/Automattic/jetpack-jitm/compare/v2.0.5...v2.0.6 -[2.0.5]: https://github.com/Automattic/jetpack-jitm/compare/v2.0.4...v2.0.5 -[2.0.4]: https://github.com/Automattic/jetpack-jitm/compare/v2.0.3...v2.0.4 -[2.0.3]: https://github.com/Automattic/jetpack-jitm/compare/v2.0.2...v2.0.3 -[2.0.2]: https://github.com/Automattic/jetpack-jitm/compare/v2.0.1...v2.0.2 -[2.0.1]: https://github.com/Automattic/jetpack-jitm/compare/v2.0.0...v2.0.1 -[2.0.0]: https://github.com/Automattic/jetpack-jitm/compare/v1.16.2...v2.0.0 -[1.16.2]: https://github.com/Automattic/jetpack-jitm/compare/v1.16.1...v1.16.2 -[1.16.1]: https://github.com/Automattic/jetpack-jitm/compare/v1.16.0...v1.16.1 -[1.16.0]: https://github.com/Automattic/jetpack-jitm/compare/v1.15.1...v1.16.0 -[1.15.1]: https://github.com/Automattic/jetpack-jitm/compare/v1.15.0...v1.15.1 -[1.15.0]: https://github.com/Automattic/jetpack-jitm/compare/v1.14.1...v1.15.0 -[1.14.1]: https://github.com/Automattic/jetpack-jitm/compare/v1.14.0...v1.14.1 -[1.14.0]: https://github.com/Automattic/jetpack-jitm/compare/v1.13.5...v1.14.0 -[1.13.5]: https://github.com/Automattic/jetpack-jitm/compare/v1.13.4...v1.13.5 -[1.13.4]: https://github.com/Automattic/jetpack-jitm/compare/v1.13.3...v1.13.4 -[1.13.3]: https://github.com/Automattic/jetpack-jitm/compare/v1.13.2...v1.13.3 -[1.13.2]: https://github.com/Automattic/jetpack-jitm/compare/v1.13.1...v1.13.2 -[1.13.1]: https://github.com/Automattic/jetpack-jitm/compare/v1.13.0...v1.13.1 -[1.13.0]: https://github.com/Automattic/jetpack-jitm/compare/v1.12.2...v1.13.0 -[1.12.2]: https://github.com/Automattic/jetpack-jitm/compare/v1.12.1...v1.12.2 -[1.12.1]: https://github.com/Automattic/jetpack-jitm/compare/v1.12.0...v1.12.1 -[1.12.0]: https://github.com/Automattic/jetpack-jitm/compare/v1.11.2...v1.12.0 -[1.11.2]: https://github.com/Automattic/jetpack-jitm/compare/v1.11.1...v1.11.2 -[1.11.1]: https://github.com/Automattic/jetpack-jitm/compare/v1.11.0...v1.11.1 -[1.11.0]: https://github.com/Automattic/jetpack-jitm/compare/v1.10.4...v1.11.0 -[1.10.4]: https://github.com/Automattic/jetpack-jitm/compare/v1.10.3...v1.10.4 -[1.10.3]: https://github.com/Automattic/jetpack-jitm/compare/v1.10.2...v1.10.3 -[1.10.2]: https://github.com/Automattic/jetpack-jitm/compare/v1.10.1...v1.10.2 -[1.10.1]: https://github.com/Automattic/jetpack-jitm/compare/v1.10.0...v1.10.1 -[1.10.0]: https://github.com/Automattic/jetpack-jitm/compare/v1.9.1...v1.10.0 -[1.9.1]: https://github.com/Automattic/jetpack-jitm/compare/v1.9.0...v1.9.1 -[1.9.0]: https://github.com/Automattic/jetpack-jitm/compare/v1.8.2...v1.9.0 -[1.8.2]: https://github.com/Automattic/jetpack-jitm/compare/v1.8.1...v1.8.2 -[1.8.1]: https://github.com/Automattic/jetpack-jitm/compare/v1.8.0...v1.8.1 -[1.8.0]: https://github.com/Automattic/jetpack-jitm/compare/v1.7.2...v1.8.0 -[1.7.2]: https://github.com/Automattic/jetpack-jitm/compare/v1.7.1...v1.7.2 -[1.7.1]: https://github.com/Automattic/jetpack-jitm/compare/v1.7.0...v1.7.1 -[1.7.0]: https://github.com/Automattic/jetpack-jitm/compare/v1.6.5...v1.7.0 -[1.6.5]: https://github.com/Automattic/jetpack-jitm/compare/v1.6.4...v1.6.5 -[1.6.4]: https://github.com/Automattic/jetpack-jitm/compare/v1.6.3...v1.6.4 -[1.6.3]: https://github.com/Automattic/jetpack-jitm/compare/v1.6.2...v1.6.3 -[1.6.2]: https://github.com/Automattic/jetpack-jitm/compare/v1.6.1...v1.6.2 -[1.6.1]: https://github.com/Automattic/jetpack-jitm/compare/v1.6.0...v1.6.1 -[1.6.0]: https://github.com/Automattic/jetpack-jitm/compare/v1.5.1...v1.6.0 -[1.5.1]: https://github.com/Automattic/jetpack-jitm/compare/v1.5.0...v1.5.1 -[1.5.0]: https://github.com/Automattic/jetpack-jitm/compare/v1.4.0...v1.5.0 -[1.4.0]: https://github.com/Automattic/jetpack-jitm/compare/v1.3.0...v1.4.0 -[1.3.0]: https://github.com/Automattic/jetpack-jitm/compare/v1.2.0...v1.3.0 -[1.2.0]: https://github.com/Automattic/jetpack-jitm/compare/v1.1.2...v1.2.0 -[1.1.2]: https://github.com/Automattic/jetpack-jitm/compare/v1.1.1...v1.1.2 -[1.1.1]: https://github.com/Automattic/jetpack-jitm/compare/v1.1.0...v1.1.1 -[1.1.0]: https://github.com/Automattic/jetpack-jitm/compare/v1.0.10...v1.1.0 -[1.0.10]: https://github.com/Automattic/jetpack-jitm/compare/v1.0.9...v1.0.10 -[1.0.9]: https://github.com/Automattic/jetpack-jitm/compare/v1.0.8...v1.0.9 -[1.0.8]: https://github.com/Automattic/jetpack-jitm/compare/v1.0.7...v1.0.8 -[1.0.7]: https://github.com/Automattic/jetpack-jitm/compare/v1.0.6...v1.0.7 -[1.0.6]: https://github.com/Automattic/jetpack-jitm/compare/v1.0.5...v1.0.6 -[1.0.5]: https://github.com/Automattic/jetpack-jitm/compare/v1.0.4...v1.0.5 -[1.0.4]: https://github.com/Automattic/jetpack-jitm/compare/v1.0.3...v1.0.4 -[1.0.3]: https://github.com/Automattic/jetpack-jitm/compare/v1.0.2...v1.0.3 -[1.0.2]: https://github.com/Automattic/jetpack-jitm/compare/v1.0.1...v1.0.2 -[1.0.1]: https://github.com/Automattic/jetpack-jitm/compare/v1.0.0...v1.0.1 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/images/background-f9c9ff650c08ee46f153.png b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/images/background-f9c9ff650c08ee46f153.png deleted file mode 100644 index 07ae0ef447c602a4c9a98f9d85a19d1c606e0646..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23766 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 A7ytkO diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.asset.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.asset.php deleted file mode 100644 index 93377922..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('jquery', 'wp-api-fetch', 'wp-polyfill', 'wp-url'), 'version' => '0997a33b24034e958e27'); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.css b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.css deleted file mode 100644 index f8d6f089..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.css +++ /dev/null @@ -1 +0,0 @@ -.jitm-button{-webkit-appearance:none;appearance:none;background:#fff;border:1px solid #000;border-radius:4px;box-sizing:border-box;color:#000;cursor:pointer;display:inline-block;font-size:14px;font-weight:600;margin:0;min-width:90px;outline:0;overflow:hidden;padding:7px 14px 9px;text-align:center;text-decoration:none;text-overflow:ellipsis;vertical-align:top;width:100%}.jitm-button.is-primary{background:#000;color:#fff}.jitm-button.is-primary .gridicons-external-link{fill:#fff}.jitm-button.is-secondary .gridicons-external-link{fill:#000}.jitm-button.is-secondary:hover{background:#f6f7f7;color:#000}.jitm-button.is-secondary:hover .gridicons-external-link{fill:#000}.jitm-button:focus,.jitm-button:hover{background:#414141;border-color:#414141;color:#fff}.jitm-button:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #2271b1}.jitm-button:disabled,.jitm-button[disabled]{background:#dcdcde;border-color:#dcdcde;color:#a7aaad;cursor:default}.jitm-button.is-compact{font-size:14px;height:32px;line-height:1;white-space:nowrap}.jitm-button.is-compact .gridicon{margin-top:-8px;top:4px}.jitm-button.is-compact .gridicons-plus-small{margin-left:-4px}.jitm-button.is-compact .gridicons-plus-small:last-of-type{margin-left:0}.jitm-button.is-compact .gridicons-plus-small+.gridicon{margin-left:-4px}.jitm-button.is-compact .gridicons-external-link{margin:-3px 0 -3px 2px}.jitm-button.hidden{display:none}.jitm-card{background-color:#fff;border:1px solid #fff;border-radius:2px;box-shadow:0 1px 4px #00000029;box-sizing:border-box;clear:both;display:block;margin:3rem 1.25rem 0 auto;padding:1rem 1rem 1rem 1.25rem;position:relative}.jitm-card:after{clear:both;content:".";display:block;height:0;visibility:hidden}.jitm-card.is-compact{margin-bottom:.0625rem}@media(min-width:481px){.jitm-card.is-compact{margin-bottom:1px;padding:1rem 1.5rem}}.jitm-card.is-card-link{padding-right:3rem}.my-jetpack-jitm-card .jitm-card{margin-bottom:1.5rem;margin-right:0;margin-top:1.5rem}#screen-meta-links+.jitm-card{margin:2.5rem 1.5385em 0 auto}.post-php .jitm-card{margin-right:0}.jp-lower .jitm-card{margin:0 0 1.5rem}.jitm-banner.jitm-card{display:flex;position:relative;z-index:2}.jitm-banner.jitm-card:before{border-bottom-left-radius:1px;border-top-left-radius:1px;content:"";height:100%;left:0;position:absolute;top:0;width:4px}@media(max-width:480px){.jitm-banner.jitm-card{display:flex;flex-direction:column}}.jitm-banner.jitm-card.is-card-link{padding:.75rem 3rem .75rem 1rem}.jitm-banner.jitm-card.is-dismissible{padding-right:3rem}.jitm-banner.jitm-card:before{background-color:#4ab866}.jitm-banner.jitm-card .jitm-banner__icon{color:#4ab866}.jitm-banner.jitm-card .jitm-banner__icon-circle{background-color:#4ab866}.jitm-banner.jitm-card.is-upgrade-personal:before{background-color:#f0b849}.jitm-banner.jitm-card.is-upgrade-personal .jitm-banner__icon{color:#f0b849}.jitm-banner.jitm-card.is-upgrade-personal .jitm-banner__icon-circle{background-color:#f0b849}.jitm-banner.jitm-card.is-upgrade-premium:before{background-color:#069e08}.jitm-banner.jitm-card.is-upgrade-premium .jitm-banner__icon{color:#069e08}.jitm-banner.jitm-card.is-upgrade-premium .jitm-banner__icon-circle{background-color:#069e08}.jitm-banner.jitm-card.is-upgrade-business:before,.jitm-banner.jitm-card.woo-jitm:before{background-color:#855da6}.jitm-banner.jitm-card.is-upgrade-business .jitm-banner__icon,.jitm-banner.jitm-card.woo-jitm .jitm-banner__icon{color:#855da6}.jitm-banner.jitm-card.is-upgrade-business .jitm-banner__icon-circle,.jitm-banner.jitm-card.woo-jitm .jitm-banner__icon-circle{background-color:#855da6}.jitm-banner.jitm-card .jitm-card__link-indicator{align-items:center;color:#0087be;display:flex}.jitm-banner.jitm-card:hover{transition:all .1s ease-in-out}.jitm-banner.jitm-card:hover.is-card-link{box-shadow:0 0 0 1px #a2a2a2,0 2px 4px #d5d5d5}.jitm-banner.jitm-card:hover .jitm-card__link-indicator{color:#005082}@media(min-width:481px){.jitm-banner.jitm-card{padding:1rem 1rem 1rem 1.25rem}.jitm-banner.jitm-card.is-dismissible{padding-right:1rem}}.jitm-banner__buttons_container{display:flex;gap:1rem;height:50%;margin:auto 1rem auto 0;overflow:hidden}@media(min-width:481px){.jitm-banner__buttons_container{margin-left:1rem}}.jitm-banner__icons{display:flex}.jitm-banner__icons .jitm-banner__icon,.jitm-banner__icons .jitm-banner__icon-circle{border-radius:50%;flex-shrink:0;height:1.5rem;margin-right:1rem;margin-top:-.125rem;text-align:center;top:.25rem;width:1.5rem}.jitm-banner__icons .jitm-banner__icon{align-self:center;color:#fff;display:block}.jitm-banner__icons .jitm-banner__icon-circle{color:#fff;display:none;padding:.1875rem .25rem .25rem .1875rem}@media(min-width:481px){.jitm-banner__icons{align-items:center}.jitm-banner__icons .jitm-banner__icon{display:none}.jitm-banner__icons .jitm-banner__icon-circle{display:block}}.jitm-banner__icon-plan{display:flex;margin-right:1rem}.jitm-banner__icon-plan .dops-plan-icon{height:2rem;width:2rem}.jitm-banner__icon-plan .jp-emblem{position:relative;top:.125rem}@media(max-width:480px){.jitm-banner__icon-plan .jp-emblem{margin-bottom:1rem}}.jitm-banner__icon-plan .jp-emblem svg{height:2rem;width:2rem;fill:#069e08}.jitm-banner__icon-plan .jp-emblem .jitm-jp-logo{height:inherit;width:2.5rem;fill:inherit}@media(min-width:481px){.jitm-banner__icon-plan{align-items:center}}.jitm-banner__background{background-image:url(images/background-f9c9ff650c08ee46f153.png);background-position:100%;background-repeat:no-repeat;height:100%;left:0;position:absolute;top:0;width:100%;z-index:-1}.rtl .jitm-banner__background{background-position:0;transform:scaleX(-1)}.jitm-banner__content{align-items:center;display:flex;flex-grow:1;flex-shrink:100000;flex-wrap:wrap}@media(max-width:480px){.jitm-banner__content{margin-right:0}}@media(min-width:481px){.jitm-banner__content{flex-wrap:nowrap}}@media(max-width:960px){.jitm-banner__content{margin-right:5px}}.jitm-banner__info{flex-grow:1;line-height:1.4}@media(min-width:481px){.jitm-banner__info{flex-basis:50%}}@media(min-width:961px){.jitm-banner__info{flex-basis:70%}}.jitm-banner__info .jitm-banner__description,.jitm-banner__info .jitm-banner__description a,.jitm-banner__info .jitm-banner__title{color:#000}.jitm-banner__info .jitm-banner__title{font-size:.9375rem;font-weight:700;line-height:136%}.jitm-banner__info .jitm-banner__description{font-size:.8125rem;line-height:150%;margin-top:.125rem}.jitm-banner__info .banner__list{font-size:12px;list-style:none;margin:10px 0}.jitm-banner__info .banner__list li{margin:6px 0}.jitm-banner__info .banner__list li .gridicon{fill:#a2a2a2;display:inline;margin-right:12px;vertical-align:bottom}.jitm-banner__action{align-self:center;font-size:.75rem;overflow:hidden;text-align:left}.jitm-banner__action .jitm-banner__prices{display:flex;justify-content:flex-start}.jitm-banner__action .jitm-banner__prices .dops-plan-price{margin-bottom:0}.jitm-banner__action .jitm-banner__prices .dops-plan-price.is-discounted,.jitm-banner__action .jitm-banner__prices .dops-plan-price.is-discounted .dops-plan-price__currency-symbol{color:#414141}.has-call-to-action .jitm-banner__action .jitm-banner__prices .dops-plan-price{margin-bottom:.5rem}@media(max-width:480px){.jitm-banner__action{margin-top:1rem}}@media(min-width:481px){.jitm-banner__action{text-align:center;width:auto}.jitm-banner__action .is-dismissible{margin-top:2.5rem}.jitm-banner__action .jitm-banner__prices{justify-content:flex-end;text-align:right}}.jitm-banner__dismiss{display:block;line-height:.5;margin-bottom:auto;margin-top:auto;text-decoration:none}.jitm-banner__dismiss:before{color:#6f6f6f;content:"";font:400 20px/1 dashicons}@media(min-width:661px){.jitm-banner__dismiss{margin-right:-.5rem}}@media(max-width:480px){.jitm-banner__dismiss{align-items:center;display:flex;height:48px;justify-content:center;margin:0;position:absolute;right:0;top:0;width:48px}}.jitm-banner__action+.jitm-banner__dismiss{margin-left:.625rem}#dolly+.jitm-card{margin:3rem 1rem 0 auto} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.js b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.js deleted file mode 100644 index b5a112bc..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var t={428:t=>{t.exports=window.jQuery},455:t=>{t.exports=window.wp.apiFetch},832:t=>{t.exports=window.wp.url}},a={};function e(i){var n=a[i];if(void 0!==n)return n.exports;var c=a[i]={exports:{}};return t[i](c,c.exports,e),c.exports}e.n=t=>{var a=t&&t.__esModule?()=>t.default:()=>t;return e.d(a,{a:a}),a},e.d=(t,a)=>{for(var i in a)e.o(a,i)&&!e.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:a[i]})},e.o=(t,a)=>Object.prototype.hasOwnProperty.call(t,a);var i=e(428),n=e.n(i),c=e(455),s=e.n(c),r=e(832);n()(document).ready((function(t){const a="/wpcom/v3/jitm";var e={default:function(a){const e='\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t';var i='
            ';if(i+='
            ',i+='
            ',i+='
            '+a.content.icon+"
            ",i+='
            ',i+='
            '+a.content.message+"
            ",a.content.description&&""!==a.content.description){if(i+='
            '+a.content.description,a.content.list.length>0){i+='
            "}if(i+="
            ",i+="
            ",i+='
            ',a.activate_module&&(i+='",a.module_settings_link&&(i+='")),a.CTA.message){var s="jitm-button is-compact";a.CTA.primary&&null===a.activate_module?s+=" is-primary":s+=" is-secondary";var r=a.CTA.ajax_action,o=a.CTA.newWindow&&!r;i+='"}return i+="
            ",a.is_dismissible&&(i+=''),t(i+="
            ")}},i=function(){t(".jetpack-jitm-message").each((function(){var i=t(this),n=i.data("message-path"),c=i.data("query"),o=i.data("redirect"),d=location.hash;d=d.replace(/#\//,"_"),n.includes("jetpack_page_my-jetpack")?n=n.replace("jetpack_page_my-jetpack","jetpack_page_my-jetpack"+d):"_dashboard"!==d&&(n=n.replace("toplevel_page_jetpack","toplevel_page_jetpack"+d));var l=!!t(".jetpack-logo__masthead").length;s()({path:(0,r.addQueryArgs)(a,{message_path:n,query:c,full_jp_logo_exists:l}),method:"GET"}).then((function(n){const c=n?.[0];c?.content&&function(i,n,c){var r;(r=n.template)&&e[r]||(r="default"),n.url=n.url+"&redirect="+c;var o,d=e[r](n);d.find(".jitm-banner__dismiss").on("click",(o=d,function(t){t.preventDefault(),o.hide(),s()({path:a,method:"POST",data:{id:n.id,feature_class:n.feature_class}})})),t("#jp-admin-notices").length>0?(i.innerHTML=d,t("#jp-admin-notices").find(".jitm-card")&&t(".jitm-card").replaceWith(d),d.prependTo(t("#jp-admin-notices"))):i.replaceWith(d),d.find("#jitm-banner__activate a").on("click",(function(){var a=t(this);if(a.attr("disabled"))return!1;t.ajax({url:window.jitm_config.api_root+"jetpack/v4/module/"+a.data("module")+"/active",method:"POST",beforeSend:function(a){a.setRequestHeader("X-WP-Nonce",i.data("nonce")),t("#jitm-banner__activate a").text(window.jitm_config.activating_module_text),t("#jitm-banner__activate a").attr("disabled",!0)}}).done((function(){if(t("#jitm-banner__activate a").text(window.jitm_config.activated_module_text),t("#jitm-banner__activate a").attr("disabled",!0),a.data("settings_link"))return t("#jitm-banner__settings").show(),void t("#jitm-banner__activate").hide();setTimeout((function(){d.fadeOut("slow")}),2e3)}))})),d.find(".jitm-button[data-ajax-action]").on("click",(function(a){a.preventDefault();var e=t(this);return e.attr("disabled",!0),t.post(window.ajaxurl,{action:e.data("ajax-action"),_nonce:i.data("ajax-nonce")}).done((function(){d.fadeOut("slow")})).fail((function(){e.attr("disabled",!1)})),!1})),d.find(".jitm-button").on("click",(function(a){var e=t(this),i=e.attr("data-jptracks-name");if(void 0!==i){var n={clicked:e.attr("data-jptracks-prop")||!1,jitm_message_path:e.attr("data-jitm-path")||!1};window.jpTracksAJAX&&window.jpTracksAJAX.record_ajax_event(i,"click",n)}}))}(i,c,o)}))}))};i(),t(window).on("hashchange",(function(t){const a=t.originalEvent.newURL;if(["jetpack","my-jetpack","jetpack-backup","jetpack-boost","jetpack-protect","jetpack-search","jetpack-social","jetpack-videopress"].some((t=>a.includes(`admin.php?page=${t}`)))){var e=document.querySelector(".jitm-card");e&&e.remove(),i()}}))}))})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.rtl.css b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.rtl.css deleted file mode 100644 index b87e4632..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/build/index.rtl.css +++ /dev/null @@ -1 +0,0 @@ -.jitm-button{-webkit-appearance:none;appearance:none;background:#fff;border:1px solid #000;border-radius:4px;box-sizing:border-box;color:#000;cursor:pointer;display:inline-block;font-size:14px;font-weight:600;margin:0;min-width:90px;outline:0;overflow:hidden;padding:7px 14px 9px;text-align:center;text-decoration:none;text-overflow:ellipsis;vertical-align:top;width:100%}.jitm-button.is-primary{background:#000;color:#fff}.jitm-button.is-primary .gridicons-external-link{fill:#fff}.jitm-button.is-secondary .gridicons-external-link{fill:#000}.jitm-button.is-secondary:hover{background:#f6f7f7;color:#000}.jitm-button.is-secondary:hover .gridicons-external-link{fill:#000}.jitm-button:focus,.jitm-button:hover{background:#414141;border-color:#414141;color:#fff}.jitm-button:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #2271b1}.jitm-button:disabled,.jitm-button[disabled]{background:#dcdcde;border-color:#dcdcde;color:#a7aaad;cursor:default}.jitm-button.is-compact{font-size:14px;height:32px;line-height:1;white-space:nowrap}.jitm-button.is-compact .gridicon{margin-top:-8px;top:4px}.jitm-button.is-compact .gridicons-plus-small{margin-right:-4px}.jitm-button.is-compact .gridicons-plus-small:last-of-type{margin-right:0}.jitm-button.is-compact .gridicons-plus-small+.gridicon{margin-right:-4px}.jitm-button.is-compact .gridicons-external-link{margin:-3px 2px -3px 0}.jitm-button.hidden{display:none}.jitm-card{background-color:#fff;border:1px solid #fff;border-radius:2px;box-shadow:0 1px 4px #00000029;box-sizing:border-box;clear:both;display:block;margin:3rem auto 0 1.25rem;padding:1rem 1.25rem 1rem 1rem;position:relative}.jitm-card:after{clear:both;content:".";display:block;height:0;visibility:hidden}.jitm-card.is-compact{margin-bottom:.0625rem}@media(min-width:481px){.jitm-card.is-compact{margin-bottom:1px;padding:1rem 1.5rem}}.jitm-card.is-card-link{padding-left:3rem}.my-jetpack-jitm-card .jitm-card{margin-bottom:1.5rem;margin-left:0;margin-top:1.5rem}#screen-meta-links+.jitm-card{margin:2.5rem auto 0 1.5385em}.post-php .jitm-card{margin-left:0}.jp-lower .jitm-card{margin:0 0 1.5rem}.jitm-banner.jitm-card{display:flex;position:relative;z-index:2}.jitm-banner.jitm-card:before{border-bottom-right-radius:1px;border-top-right-radius:1px;content:"";height:100%;position:absolute;right:0;top:0;width:4px}@media(max-width:480px){.jitm-banner.jitm-card{display:flex;flex-direction:column}}.jitm-banner.jitm-card.is-card-link{padding:.75rem 1rem .75rem 3rem}.jitm-banner.jitm-card.is-dismissible{padding-left:3rem}.jitm-banner.jitm-card:before{background-color:#4ab866}.jitm-banner.jitm-card .jitm-banner__icon{color:#4ab866}.jitm-banner.jitm-card .jitm-banner__icon-circle{background-color:#4ab866}.jitm-banner.jitm-card.is-upgrade-personal:before{background-color:#f0b849}.jitm-banner.jitm-card.is-upgrade-personal .jitm-banner__icon{color:#f0b849}.jitm-banner.jitm-card.is-upgrade-personal .jitm-banner__icon-circle{background-color:#f0b849}.jitm-banner.jitm-card.is-upgrade-premium:before{background-color:#069e08}.jitm-banner.jitm-card.is-upgrade-premium .jitm-banner__icon{color:#069e08}.jitm-banner.jitm-card.is-upgrade-premium .jitm-banner__icon-circle{background-color:#069e08}.jitm-banner.jitm-card.is-upgrade-business:before,.jitm-banner.jitm-card.woo-jitm:before{background-color:#855da6}.jitm-banner.jitm-card.is-upgrade-business .jitm-banner__icon,.jitm-banner.jitm-card.woo-jitm .jitm-banner__icon{color:#855da6}.jitm-banner.jitm-card.is-upgrade-business .jitm-banner__icon-circle,.jitm-banner.jitm-card.woo-jitm .jitm-banner__icon-circle{background-color:#855da6}.jitm-banner.jitm-card .jitm-card__link-indicator{align-items:center;color:#0087be;display:flex}.jitm-banner.jitm-card:hover{transition:all .1s ease-in-out}.jitm-banner.jitm-card:hover.is-card-link{box-shadow:0 0 0 1px #a2a2a2,0 2px 4px #d5d5d5}.jitm-banner.jitm-card:hover .jitm-card__link-indicator{color:#005082}@media(min-width:481px){.jitm-banner.jitm-card{padding:1rem 1.25rem 1rem 1rem}.jitm-banner.jitm-card.is-dismissible{padding-left:1rem}}.jitm-banner__buttons_container{display:flex;gap:1rem;height:50%;margin:auto 0 auto 1rem;overflow:hidden}@media(min-width:481px){.jitm-banner__buttons_container{margin-right:1rem}}.jitm-banner__icons{display:flex}.jitm-banner__icons .jitm-banner__icon,.jitm-banner__icons .jitm-banner__icon-circle{border-radius:50%;flex-shrink:0;height:1.5rem;margin-left:1rem;margin-top:-.125rem;text-align:center;top:.25rem;width:1.5rem}.jitm-banner__icons .jitm-banner__icon{align-self:center;color:#fff;display:block}.jitm-banner__icons .jitm-banner__icon-circle{color:#fff;display:none;padding:.1875rem .1875rem .25rem .25rem}@media(min-width:481px){.jitm-banner__icons{align-items:center}.jitm-banner__icons .jitm-banner__icon{display:none}.jitm-banner__icons .jitm-banner__icon-circle{display:block}}.jitm-banner__icon-plan{display:flex;margin-left:1rem}.jitm-banner__icon-plan .dops-plan-icon{height:2rem;width:2rem}.jitm-banner__icon-plan .jp-emblem{position:relative;top:.125rem}@media(max-width:480px){.jitm-banner__icon-plan .jp-emblem{margin-bottom:1rem}}.jitm-banner__icon-plan .jp-emblem svg{height:2rem;width:2rem;fill:#069e08}.jitm-banner__icon-plan .jp-emblem .jitm-jp-logo{height:inherit;width:2.5rem;fill:inherit}@media(min-width:481px){.jitm-banner__icon-plan{align-items:center}}.jitm-banner__background{background-image:url(images/background-f9c9ff650c08ee46f153.png);background-position:0;background-repeat:no-repeat;height:100%;position:absolute;right:0;top:0;width:100%;z-index:-1}.rtl .jitm-banner__background{background-position:100%;transform:scaleX(-1)}.jitm-banner__content{align-items:center;display:flex;flex-grow:1;flex-shrink:100000;flex-wrap:wrap}@media(max-width:480px){.jitm-banner__content{margin-left:0}}@media(min-width:481px){.jitm-banner__content{flex-wrap:nowrap}}@media(max-width:960px){.jitm-banner__content{margin-left:5px}}.jitm-banner__info{flex-grow:1;line-height:1.4}@media(min-width:481px){.jitm-banner__info{flex-basis:50%}}@media(min-width:961px){.jitm-banner__info{flex-basis:70%}}.jitm-banner__info .jitm-banner__description,.jitm-banner__info .jitm-banner__description a,.jitm-banner__info .jitm-banner__title{color:#000}.jitm-banner__info .jitm-banner__title{font-size:.9375rem;font-weight:700;line-height:136%}.jitm-banner__info .jitm-banner__description{font-size:.8125rem;line-height:150%;margin-top:.125rem}.jitm-banner__info .banner__list{font-size:12px;list-style:none;margin:10px 0}.jitm-banner__info .banner__list li{margin:6px 0}.jitm-banner__info .banner__list li .gridicon{fill:#a2a2a2;display:inline;margin-left:12px;vertical-align:bottom}.jitm-banner__action{align-self:center;font-size:.75rem;overflow:hidden;text-align:right}.jitm-banner__action .jitm-banner__prices{display:flex;justify-content:flex-start}.jitm-banner__action .jitm-banner__prices .dops-plan-price{margin-bottom:0}.jitm-banner__action .jitm-banner__prices .dops-plan-price.is-discounted,.jitm-banner__action .jitm-banner__prices .dops-plan-price.is-discounted .dops-plan-price__currency-symbol{color:#414141}.has-call-to-action .jitm-banner__action .jitm-banner__prices .dops-plan-price{margin-bottom:.5rem}@media(max-width:480px){.jitm-banner__action{margin-top:1rem}}@media(min-width:481px){.jitm-banner__action{text-align:center;width:auto}.jitm-banner__action .is-dismissible{margin-top:2.5rem}.jitm-banner__action .jitm-banner__prices{justify-content:flex-end;text-align:left}}.jitm-banner__dismiss{display:block;line-height:.5;margin-bottom:auto;margin-top:auto;text-decoration:none}.jitm-banner__dismiss:before{color:#6f6f6f;content:"";font:400 20px/1 dashicons}@media(min-width:661px){.jitm-banner__dismiss{margin-left:-.5rem}}@media(max-width:480px){.jitm-banner__dismiss{align-items:center;display:flex;height:48px;justify-content:center;left:0;margin:0;position:absolute;top:0;width:48px}}.jitm-banner__action+.jitm-banner__dismiss{margin-right:.625rem}#dolly+.jitm-card{margin:3rem auto 0 1rem} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/composer.json deleted file mode 100644 index 25f8e365..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/composer.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "name": "automattic/jetpack-jitm", - "description": "Just in time messages for Jetpack", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2", - "automattic/jetpack-a8c-mc-stats": "^3.0.4", - "automattic/jetpack-assets": "^4.0.14", - "automattic/jetpack-connection": "^6.8.0", - "automattic/jetpack-device-detection": "^3.0.5", - "automattic/jetpack-logo": "^3.0.4", - "automattic/jetpack-redirect": "^3.0.5", - "automattic/jetpack-status": "^5.0.10" - }, - "require-dev": { - "brain/monkey": "^2.6.2", - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "scripts": { - "build-production": [ - "pnpm run build-production" - ], - "build-development": [ - "pnpm run build" - ], - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" - ], - "test-php": [ - "@composer phpunit" - ], - "watch": [ - "Composer\\Config::disableProcessTimeout", - "pnpm run watch" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-jitm", - "textdomain": "jetpack-jitm", - "version-constants": { - "::PACKAGE_VERSION": "src/class-jitm.php" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-jitm/compare/v${old}...v${new}" - }, - "branch-alias": { - "dev-trunk": "4.2.x-dev" - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-jitm.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-jitm.php deleted file mode 100644 index 616a4971..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-jitm.php +++ /dev/null @@ -1,413 +0,0 @@ -register(); - } - - /** - * Pre/Post Connection JITM factory metod - * - * @return Post_Connection_JITM|Pre_Connection_JITM JITM instance. - */ - public static function get_instance() { - if ( self::is_connected() ) { - $jitm = new Post_Connection_JITM(); - } else { - $jitm = new Pre_Connection_JITM(); - } - return $jitm; - } - - /** - * Sets up JITM action callbacks if needed. - */ - public function register() { - if ( did_action( 'jetpack_registered_jitms' ) ) { - // JITMs have already been registered. - return; - } - - if ( ! $this->jitms_enabled() ) { - // Do nothing. - return; - } - - add_action( 'rest_api_init', array( __NAMESPACE__ . '\\Rest_Api_Endpoints', 'register_endpoints' ) ); - - add_action( 'current_screen', array( $this, 'prepare_jitms' ) ); - - /** - * These are sync actions that we need to keep track of for jitms. - */ - add_filter( 'jetpack_sync_before_send_updated_option', array( $this, 'jetpack_track_last_sync_callback' ), 99 ); - - /** - * Fires when the JITMs are registered. This action is used to ensure that - * JITMs are registered only once. - * - * @since 1.16.0 - */ - do_action( 'jetpack_registered_jitms' ); - } - - /** - * Checks the jetpack_just_in_time_msgs filters and whether the site - * is offline to determine whether JITMs are enabled. - * - * @return bool True if JITMs are enabled, else false. - */ - public function jitms_enabled() { - /** - * Filter to turn off all just in time messages - * - * @since 1.1.0 - * @since-jetpack 3.7.0 - * @since-jetpack 5.4.0 Correct docblock to reflect default arg value - * - * @param bool true Whether to show just in time messages. - */ - if ( ! apply_filters( 'jetpack_just_in_time_msgs', true ) ) { - return false; - } - - // Folks cannot connect to WordPress.com and won't really be able to act on the pre-connection messages. So bail. - if ( ( new Status() )->is_offline_mode() ) { - return false; - } - - return true; - } - - /** - * Prepare actions according to screen and post type. - * - * @since 1.1.0 - * @since-jetpack 3.8.2 - * - * @uses Jetpack_Autoupdate::get_possible_failures() - * - * @param \WP_Screen $screen WP Core's screen object. - */ - public function prepare_jitms( $screen ) { - /** - * Filter to hide JITMs on certain screens. - * - * @since 1.14.0 - * - * @param bool true Whether to show just in time messages. - * @param string $string->id The ID of the current screen. - */ - if ( apply_filters( 'jetpack_display_jitms_on_screen', true, $screen->id ) ) { - add_action( 'admin_enqueue_scripts', array( $this, 'jitm_enqueue_files' ) ); - add_action( 'admin_notices', array( $this, 'ajax_message' ) ); - add_action( 'edit_form_top', array( $this, 'ajax_message' ) ); - } - } - - /** - * Check if the current page is a Jetpack or WooCommerce admin page. - * Noting that this is a very basic check, and pages from other plugins may also match. - * - * @since 3.1.0 - * - * @return bool True if the current page is a Jetpack or WooCommerce admin page, else false. - */ - public function is_a8c_admin_page() { - if ( ! function_exists( 'get_current_screen' ) ) { - return false; - } - - $current_screen = get_current_screen(); - - // We never want to show JITMs on the block editor. - if ( - method_exists( $current_screen, 'is_block_editor' ) - && $current_screen->is_block_editor() - ) { - return false; - } - - return ( - $current_screen - && $current_screen->id - && (bool) preg_match( - '/' . implode( '|', self::APPROVED_SCREEN_IDS ) . '/', - $current_screen->id - ) - ); - } - - /** - * Function to enqueue jitm css and js - */ - public function jitm_enqueue_files() { - // Only load those files on the Jetpack or Woo admin pages. - if ( ! $this->is_a8c_admin_page() ) { - return; - } - - Assets::register_script( - 'jetpack-jitm', - '../build/index.js', - __FILE__, - array( - 'in_footer' => true, - 'dependencies' => array( 'jquery' ), - 'enqueue' => true, - ) - ); - wp_localize_script( - 'jetpack-jitm', - 'jitm_config', - array( - 'api_root' => esc_url_raw( rest_url() ), - 'activate_module_text' => esc_html__( 'Activate', 'jetpack-jitm' ), - 'activated_module_text' => esc_html__( 'Activated', 'jetpack-jitm' ), - 'activating_module_text' => esc_html__( 'Activating', 'jetpack-jitm' ), - 'settings_module_text' => esc_html__( 'Settings', 'jetpack-jitm' ), - 'nonce' => wp_create_nonce( 'wp_rest' ), - ) - ); - } - - /** - * Is the current page a block editor page? - * - * @since 1.1.0 - * @since-jetpack 8.0.0 - * - * @deprecated 3.1.0 - */ - public function is_gutenberg_page() { - _deprecated_function( __METHOD__, '3.1.0' ); - $current_screen = get_current_screen(); - return ( method_exists( $current_screen, 'is_block_editor' ) && $current_screen->is_block_editor() ); - } - - /** - * Get's the current message path for display of a JITM - * - * @return string The message path - */ - public function get_message_path() { - $screen = get_current_screen(); - - return 'wp:' . $screen->id . ':' . current_filter(); - } - - /** - * Injects the dom to show a JITM inside of wp-admin. - */ - public function ajax_message() { - if ( ! is_admin() ) { - return; - } - - // Only add this to specifically allowed pages. - if ( ! $this->is_a8c_admin_page() ) { - return; - } - - $message_path = $this->get_message_path(); - $query_string = _http_build_query( $_GET, '', ',' ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended - $current_screen = isset( $_SERVER['REQUEST_URI'] ) ? wp_unslash( $_SERVER['REQUEST_URI'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput -- Escaped below - ?> -
            - = $feb_4_date; - - switch ( $content_icon ) { - case 'jetpack': - $jetpack_logo = new Jetpack_Logo(); - $content_icon = ''; - break; - case 'woocommerce': - // After Feb 4th 2025, we can remove this date condition check ( & filter) and the old svg logo. - /** - * Filter to force display the new Woo logo in Woo JITM's, or not. - * - * @since 4.0.5 - * - * @param bool $show_woo_logo Whether to show the new Woo logo or not. - */ - $content_icon = apply_filters( 'jetpack_jitm_use_new_woo_logo', $show_new_logo ) - // New Woo logo - ? '' - // Old Woo logo - : ''; - break; - default: - $content_icon = ''; - break; - } - return $content_icon; - } - - /** - * Returns an array containing the supported icons for JITMs. - * - * The list includes an empty string, which is used when no icon should be displayed. - * - * @return array The list of supported icons. - */ - public function get_supported_icons() { - return array( - 'jetpack', - 'woocommerce', - '', - ); - } - - /** - * Stores dismiss data into an option - * - * @param string $key Dismiss key. - */ - public function save_dismiss( $key ) { - $hide_jitm = \Jetpack_Options::get_option( 'hide_jitm' ); - if ( ! is_array( $hide_jitm ) ) { - $hide_jitm = array(); - } - - if ( ! isset( $hide_jitm[ $key ] ) || ! is_array( $hide_jitm[ $key ] ) ) { - $hide_jitm[ $key ] = array( - 'last_dismissal' => 0, - 'number' => 0, - ); - } - - $hide_jitm[ $key ] = array( - 'last_dismissal' => time(), - 'number' => $hide_jitm[ $key ]['number'] + 1, - ); - - \Jetpack_Options::update_option( 'hide_jitm', $hide_jitm ); - } - - /** - * Sets the 'jetpack_last_plugin_sync' transient when the active_plugins option is synced. - * - * @param array $params The action parameters. - * - * @return array Returns the action parameters unchanged. - */ - public function jetpack_track_last_sync_callback( $params ) { - /** - * This filter is documented in the Automattic\Jetpack\JITMS\Post_Connection_JITM class. - */ - if ( ! apply_filters( 'jetpack_just_in_time_msg_cache', true ) ) { - return $params; - } - - if ( is_array( $params ) && isset( $params[0] ) ) { - $option = $params[0]; - if ( 'active_plugins' === $option ) { - // Use the cache if we can, but not terribly important if it gets evicted. - set_transient( 'jetpack_last_plugin_sync', time(), HOUR_IN_SECONDS ); - } - } - - return $params; - } - - /** - * Check if the current site is connected. - * On WordPress.com Simple, it is always connected. - * - * @return bool true if the site is connected, false otherwise. - */ - private static function is_connected() { - if ( ( new Host() )->is_wpcom_simple() ) { - return true; - } - - $connection = new Connection_Manager(); - return $connection->is_connected(); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-post-connection-jitm.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-post-connection-jitm.php deleted file mode 100644 index 3b5fd3da..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-post-connection-jitm.php +++ /dev/null @@ -1,421 +0,0 @@ -tracking = new Tracking(); - } - - /** - * A special filter for WooCommerce, to set a message based on local state. - * - * @param object $content The current message. - * - * @return object The new message. - */ - public static function jitm_woocommerce_services_msg( $content ) { - if ( ! function_exists( 'wc_get_base_location' ) ) { - return $content; - } - - $base_location = wc_get_base_location(); - - switch ( $base_location['country'] ) { - case 'US': - $content->message = esc_html__( 'New free service: Show USPS shipping rates on your store! Added bonus: print shipping labels without leaving WooCommerce.', 'jetpack-jitm' ); - break; - case 'CA': - $content->message = esc_html__( 'New free service: Show Canada Post shipping rates on your store!', 'jetpack-jitm' ); - break; - default: - $content->message = ''; - } - - return $content; - } - - /** - * A special filter for WooCommerce Call To Action button - * - * @return string The new CTA - */ - public static function jitm_jetpack_woo_services_install() { - return wp_nonce_url( - add_query_arg( - array( - 'wc-services-action' => 'install', - ), - admin_url( 'admin.php?page=wc-settings' ) - ), - 'wc-services-install' - ); - } - - /** - * A special filter for WooCommerce Call To Action button. - * - * @return string The new CTA - */ - public static function jitm_jetpack_woo_services_activate() { - return wp_nonce_url( - add_query_arg( - array( - 'wc-services-action' => 'activate', - ), - admin_url( 'admin.php?page=wc-settings' ) - ), - 'wc-services-install' - ); - } - - /** - * A special filter used in the CTA of a JITM offering to install the Creative Mail plugin. - * - * @return string The new CTA - */ - public static function jitm_jetpack_creative_mail_install() { - return wp_nonce_url( - add_query_arg( - array( - 'creative-mail-action' => 'install', - ), - admin_url( 'edit.php?post_type=feedback' ) - ), - 'creative-mail-install' - ); - } - - /** - * A special filter used in the CTA of a JITM offering to activate the Creative Mail plugin. - * - * @return string The new CTA - */ - public static function jitm_jetpack_creative_mail_activate() { - return wp_nonce_url( - add_query_arg( - array( - 'creative-mail-action' => 'activate', - ), - admin_url( 'edit.php?post_type=feedback' ) - ), - 'creative-mail-install' - ); - } - - /** - * A special filter used in the CTA of a JITM offering to install the Jetpack Backup plugin. - * - * @return string The new CTA - */ - public static function jitm_jetpack_backup_install() { - return wp_nonce_url( - add_query_arg( - array( - 'jetpack-backup-action' => 'install', - ), - admin_url( 'admin.php?page=jetpack' ) - ), - 'jetpack-backup-install' - ); - } - - /** - * A special filter used in the CTA of a JITM offering to activate the Jetpack Backup plugin. - * - * @return string The new CTA - */ - public static function jitm_jetpack_backup_activate() { - return wp_nonce_url( - add_query_arg( - array( - 'jetpack-backup-action' => 'activate', - ), - admin_url( 'admin.php?page=jetpack' ) - ), - 'jetpack-backup-install' - ); - } - - /** - * A special filter used in the CTA of a JITM offering to install the Jetpack Boost plugin. - * - * @return string The new CTA - */ - public static function jitm_jetpack_boost_install() { - return wp_nonce_url( - add_query_arg( - array( - 'jetpack-boost-action' => 'install', - ), - admin_url( 'admin.php?page=jetpack' ) - ), - 'jetpack-boost-install' - ); - } - - /** - * A special filter used in the CTA of a JITM offering to activate the Jetpack Boost plugin. - * - * @return string The new CTA - */ - public static function jitm_jetpack_boost_activate() { - return wp_nonce_url( - add_query_arg( - array( - 'jetpack-boost-action' => 'activate', - ), - admin_url( 'admin.php?page=jetpack' ) - ), - 'jetpack-boost-install' - ); - } - - /** - * Dismisses a JITM feature class so that it will no longer be shown. - * - * @param string $id The id of the JITM that was dismissed. - * @param string $feature_class The feature class of the JITM that was dismissed. - * - * @return bool Always true. - */ - public function dismiss( $id, $feature_class ) { - $this->tracking->record_user_event( - 'jitm_dismiss_client', - array( - 'jitm_id' => $id, - 'feature_class' => $feature_class, - ) - ); - $this->save_dismiss( $feature_class ); - return true; - } - - /** - * Asks the wpcom API for the current message to display keyed on query string and message path. - * - * For sites running on the Dotcom Simple codebase, the network request is bypassed - * via Client::wpcom_json_api_request_as_blog allowing for the JITM\Engine to be called - * directly. - * - * @param string $message_path The message path to ask for. - * @param string $query The query string originally from the front end. - * @param bool $full_jp_logo_exists If there is a full Jetpack logo already on the page. - * - * @return array The JITM's to show, or an empty array if there is nothing to show - */ - public function get_messages( $message_path, $query, $full_jp_logo_exists ) { - // WooCommerce Services. - add_filter( 'jitm_woocommerce_services_msg', array( $this, 'jitm_woocommerce_services_msg' ) ); - add_filter( 'jitm_jetpack_woo_services_install', array( $this, 'jitm_jetpack_woo_services_install' ) ); - add_filter( 'jitm_jetpack_woo_services_activate', array( $this, 'jitm_jetpack_woo_services_activate' ) ); - - // Creative Mail. - add_filter( 'jitm_jetpack_creative_mail_install', array( $this, 'jitm_jetpack_creative_mail_install' ) ); - add_filter( 'jitm_jetpack_creative_mail_activate', array( $this, 'jitm_jetpack_creative_mail_activate' ) ); - - // Jetpack Backup. - add_filter( 'jitm_jetpack_backup_install', array( $this, 'jitm_jetpack_backup_install' ) ); - add_filter( 'jitm_jetpack_backup_activate', array( $this, 'jitm_jetpack_backup_activate' ) ); - - // Jetpack Boost. - add_filter( 'jitm_jetpack_boost_install', array( $this, 'jitm_jetpack_boost_install' ) ); - add_filter( 'jitm_jetpack_boost_activate', array( $this, 'jitm_jetpack_boost_activate' ) ); - - $user = wp_get_current_user(); - - // Unauthenticated or invalid requests just bail. - if ( ! $user ) { - return array(); - } - - $user_roles = implode( ',', $user->roles ); - $site_id = \Jetpack_Options::get_option( 'id' ); - - // Build our jitm request. - $path = add_query_arg( - array( - 'external_user_id' => urlencode_deep( $user->ID ), - 'user_roles' => urlencode_deep( $user_roles ), - 'query_string' => urlencode_deep( build_query( $query ) ), - 'mobile_browser' => Device_Detection::is_smartphone() ? 1 : 0, - '_locale' => get_user_locale(), - ), - sprintf( '/sites/%d/jitm/%s', $site_id, $message_path ) - ); - - // Attempt to get from cache. - $envelopes = get_transient( 'jetpack_jitm_' . substr( md5( $path ), 0, 31 ) ); - - // If something is in the cache and it was put in the cache after the last sync we care about, use it. - $use_cache = false; - - /** - * Filter to turn off jitm caching - * - * @since 1.1.0 - * @since-jetpack 5.4.0 - * - * @param bool true Whether to cache just in time messages - */ - if ( apply_filters( 'jetpack_just_in_time_msg_cache', true ) ) { - $use_cache = true; - } - - if ( $use_cache ) { - $last_sync = (int) get_transient( 'jetpack_last_plugin_sync' ); - $from_cache = $envelopes && $last_sync > 0 && $last_sync < $envelopes['last_response_time']; - } else { - $from_cache = false; - } - - // Otherwise, ask again. - if ( ! $from_cache ) { - $wpcom_response = Client::wpcom_json_api_request_as_blog( - $path, - '2', - array( - 'user_id' => $user->ID, - 'user_roles' => implode( ',', $user->roles ), - ), - null, - 'wpcom' - ); - - // silently fail...might be helpful to track it? - if ( is_wp_error( $wpcom_response ) ) { - return array(); - } - - $envelopes = json_decode( $wpcom_response['body'] ); - - if ( ! is_array( $envelopes ) ) { - return array(); - } - - $expiration = isset( $envelopes[0] ) ? $envelopes[0]->ttl : 300; - - // Do not cache if expiration is 0 or we're not using the cache. - if ( 0 !== $expiration && $use_cache ) { - $envelopes['last_response_time'] = time(); - - set_transient( 'jetpack_jitm_' . substr( md5( $path ), 0, 31 ), $envelopes, $expiration ); - } - } - - $hidden_jitms = \Jetpack_Options::get_option( 'hide_jitm' ); - unset( $envelopes['last_response_time'] ); - - /** - * Allow adding your own custom JITMs after a set of JITMs has been received. - * - * @since 1.1.0 - * @since-jetpack 6.9.0 - * @since-jetpack 8.3.0 - Added Message path. - * - * @param array $envelopes array of existing JITMs. - * @param string $message_path The message path to ask for. - */ - $envelopes = apply_filters( 'jetpack_jitm_received_envelopes', $envelopes, $message_path ); - - foreach ( $envelopes as $idx => &$envelope ) { - - $dismissed_feature = isset( $hidden_jitms[ $envelope->feature_class ] ) && is_array( $hidden_jitms[ $envelope->feature_class ] ) ? $hidden_jitms[ $envelope->feature_class ] : null; - - // If the this feature class has been dismissed and the request has not passed the ttl, skip it as it's been dismissed. - if ( is_array( $dismissed_feature ) && ( time() - $dismissed_feature['last_dismissal'] < $envelope->expires || $dismissed_feature['number'] >= $envelope->max_dismissal ) ) { - unset( $envelopes[ $idx ] ); - continue; - } - - $this->tracking->record_user_event( - 'jitm_view_client', - array( - 'jitm_id' => $envelope->id, - 'jitm_message_path' => $message_path, - ) - ); - - $url_params = array( - 'u' => $user->ID, - ); - - // Get affiliate code and add it to the array of URL parameters. - $aff = Partner::init()->get_partner_code( Partner::AFFILIATE_CODE ); - if ( '' !== $aff ) { - $url_params['aff'] = $aff; - } - - // Check if the current user has connected their WP.com account - // and if not add this information to the the array of URL parameters. - if ( ! ( new Manager() )->is_user_connected( $user->ID ) ) { - $url_params['query'] = 'unlinked=1'; - } - $envelope->url = esc_url( Redirect::get_url( "jitm-$envelope->id", $url_params ) ); - - $stats = new A8c_Mc_Stats(); - - $envelope->jitm_stats_url = $stats->build_stats_url( array( 'x_jetpack-jitm' => $envelope->id ) ); - - // phpcs:disable WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase - // $CTA is not valid per PHPCS, but it is part of the return from WordPress.com, so allowing. - if ( $envelope->CTA->hook ) { - $envelope->url = apply_filters( 'jitm_' . $envelope->CTA->hook, $envelope->url ); - unset( $envelope->CTA->hook ); - } - // phpcs:enable - - if ( isset( $envelope->content->hook ) ) { - $envelope->content = apply_filters( 'jitm_' . $envelope->content->hook, $envelope->content ); - unset( $envelope->content->hook ); - } - - // No point in showing an empty message. - if ( empty( $envelope->content->message ) ) { - unset( $envelopes[ $idx ] ); - continue; - } - - $envelope->content->icon = $this->generate_icon( $envelope->content->icon, $full_jp_logo_exists ); - $envelope->message_path = esc_attr( $message_path ); - - $stats->add( 'jitm', $envelope->id . '-viewed' ); - $stats->do_server_side_stats(); - } - - return $envelopes; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-pre-connection-jitm.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-pre-connection-jitm.php deleted file mode 100644 index 89cd030d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-pre-connection-jitm.php +++ /dev/null @@ -1,173 +0,0 @@ -validate_messages( $messages ); - - $formatted_messages = array(); - - foreach ( $messages as $message ) { - if ( ! preg_match( $message['message_path'], $message_path ) ) { - continue; - } - - $obj = new \stdClass(); - $obj->CTA = array( // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase - 'message' => $message['button_caption'], - 'newWindow' => false, - ); - $obj->url = $message['button_link']; - $obj->id = $message['id']; - $obj->is_dismissible = true; - $obj->content = array( - 'message' => $message['message'], - 'description' => $message['description'], - 'list' => array(), - 'icon' => $this->get_message_icon( $message ), - ); - - $formatted_messages[] = $obj; - } - - return $formatted_messages; - } - - /** - * Validates that each of the messages contains all of the required keys: - * - id - * - message_path - * - message - * - description - * - button_link - * - button_caption - * - * @param array $messages An array of JITM messages. - * - * @return array An array of JITM messages that contain all of the required keys. - */ - private function validate_messages( $messages ) { - if ( ! is_array( $messages ) ) { - return array(); - } - - $expected_keys = array_flip( array( 'id', 'message_path', 'message', 'description', 'button_link', 'button_caption' ) ); - - foreach ( $messages as $index => $message ) { - if ( count( array_intersect_key( $expected_keys, $message ) ) !== count( $expected_keys ) ) { - // Remove any messages that are missing expected keys. - unset( $messages[ $index ] ); - } - } - - return $messages; - } - - /** - * Get the icon for the message. - * - * The message may contain an 'icon' key. If the value of the 'icon' key matches a supported icon (or empty string), the value is used. - * If the message does not contain an icon key or if the value does not match a supported icon, the Jetpack icon is used by default. - * - * @param array $message A pre-connection JITM. - * - * @return string The icon to use in the JITM. - */ - private function get_message_icon( $message ) { - // Default to the Jetpack icon. - $icon = 'jetpack'; - - if ( ! isset( $message['icon'] ) ) { - return $icon; - } - - $supported_icons = $this->get_supported_icons(); - - if ( in_array( $message['icon'], $supported_icons, true ) ) { - // Only use the message icon if it's a supported icon or an empty string (for no icon). - $icon = $message['icon']; - } - - return $icon; - } - - /** - * Retrieve the current message to display keyed on query string and message path - * - * @param string $message_path The message path to ask for. - * @param string $query The query string originally from the front end. Unused in this subclass. - * @param bool $full_jp_logo_exists If there is a full Jetpack logo already on the page. - * - * @return array The JITMs to show, or an empty array if there is nothing to show - */ - public function get_messages( $message_path, $query, $full_jp_logo_exists ) { - // Ensure only admins see pre-connection JITMs since only they can connect to WordPress.com - // and enable modules. - if ( ! current_user_can( 'install_plugins' ) ) { - return array(); - } - - $messages = $this->filter_messages( $message_path ); - - if ( empty( $messages ) ) { - return array(); - } - - $hidden_jitms = \Jetpack_Options::get_option( 'hide_jitm' ); - - foreach ( $messages as $idx => &$envelope ) { - $dismissed_feature = isset( $hidden_jitms[ 'pre-connection-' . $envelope->id ] ) && - is_array( $hidden_jitms[ 'pre-connection-' . $envelope->id ] ) ? $hidden_jitms[ 'pre-connection-' . $envelope->id ] : null; - - if ( is_array( $dismissed_feature ) ) { - unset( $messages[ $idx ] ); - continue; - } - - $envelope->content['icon'] = $this->generate_icon( $envelope->content['icon'], $full_jp_logo_exists ); - } - - return $messages; - } - - /** - * Dismisses a JITM ID so that it will no longer be shown. - * - * @param string $id The id of the JITM that was dismissed. - * - * @return bool Always true - */ - public function dismiss( $id ) { - $this->save_dismiss( 'pre-connection-' . $id ); - return true; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-rest-api-endpoints.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-rest-api-endpoints.php deleted file mode 100644 index 5a8e62c4..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/class-rest-api-endpoints.php +++ /dev/null @@ -1,95 +0,0 @@ - WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::get_jitm_message', - 'permission_callback' => '__return_true', - ) - ); - - register_rest_route( - 'jetpack/v4', - '/jitm', - array( - 'methods' => WP_REST_Server::CREATABLE, - 'callback' => __CLASS__ . '::delete_jitm_message', - 'permission_callback' => __CLASS__ . '::delete_jitm_message_permission_callback', - ) - ); - } - - /** - * Asks for a jitm, unless they've been disabled, in which case it returns an empty array - * - * @param WP_REST_Request $request The request object. - * - * @return array An array of jitms - */ - public static function get_jitm_message( $request ) { - $jitm = JITM::get_instance(); - - if ( ! $jitm->jitms_enabled() ) { - return array(); - } - - // add the search term to the query params if it exists - $query_param = $request['query'] ?? ''; - - return $jitm->get_messages( $request['message_path'], urldecode_deep( array( 'query' => $query_param ) ), 'true' === $request['full_jp_logo_exists'] ); - } - - /** - * Dismisses a jitm. - * - * @param WP_REST_Request $request The request object. - * - * @return bool Always True - */ - public static function delete_jitm_message( $request ) { - $jitm = JITM::get_instance(); - - if ( ! $jitm->jitms_enabled() ) { - return true; - } - - return $jitm->dismiss( $request['id'], $request['feature_class'] ); - } - - /** - * Verify that the user can dismiss JITM messages. - * - * @return bool|WP_Error True if user is able to dismiss JITM messages. - */ - public static function delete_jitm_message_permission_callback() { - if ( current_user_can( 'read' ) ) { - return true; - } - - return new WP_Error( 'invalid_user_permission_jetpack_delete_jitm_message', REST_Connector::get_user_permissions_error_msg(), array( 'status' => rest_authorization_required_code() ) ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/css/jetpack-admin-jitm.scss b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/css/jetpack-admin-jitm.scss deleted file mode 100644 index e054d763..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/css/jetpack-admin-jitm.scss +++ /dev/null @@ -1,516 +0,0 @@ -// Just in Time Messaging - message prompts - -// TODO: Switch to using the `@automattic/jetpack-base-styles` package when its ready. -@import '../../plugins/jetpack/_inc/client/scss/functions/rem'; -@import '../../plugins/jetpack/_inc/client/scss/variables/colors'; -@import '../../plugins/jetpack/_inc/client/scss/mixins/breakpoints'; -@import '../../plugins/jetpack/_inc/client/scss/calypso-colors'; - -@mixin clear-fix { - &::after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; - } -} - -@mixin jitm-banner-color( $color ) { - &::before { - background-color: $color; - } - - .jitm-banner__icon { - color: $color; - } - - .jitm-banner__icon-circle { - background-color: $color; - } -} - -// New JITMS - modified calypso banner styles -$blue-medium-dark: #2271b1; -$jp-gray: #dcdcde; -$jp-gray-0: #f6f7f7; -$jp-gray-20: #a7aaad; - -.jitm-button { - border-style: solid; - border-width: 1px; - cursor: pointer; - display: inline-block; - margin: 0; - outline: 0; - overflow: hidden; - text-overflow: ellipsis; - text-decoration: none; - vertical-align: top; - box-sizing: border-box; - font-size: 14px; - border-radius: 4px; - padding: 7px 14px 9px; - -webkit-appearance: none; - appearance: none; - text-align: center; - min-width: 90px; - font-weight: 600; - border-color: black; - background: $white; - color: black; - width: 100%; - - // Primary buttons - &.is-primary { - background: black; - color: $white; - .gridicons-external-link { - fill: $white; - } - } - - // Secondary buttons - &.is-secondary { - .gridicons-external-link { - fill: black; - } - &:hover{ - color: black; - background: $jp-gray-0; - .gridicons-external-link { - fill: black; - } - } - } - - &:hover, - &:focus { - border-color: $gray-dark; - background: $gray-dark; - color: $white; - } - &:focus { - box-shadow: - 0 0 0 1px $white, - 0 0 0 3px $blue-medium-dark; - } - - &[disabled], - &:disabled { - color: $jp-gray-20; - background: $jp-gray; - border-color: $jp-gray; - cursor: default; - } - &.is-compact { - height: 32px; - font-size: 14px; - line-height: 1; - white-space: nowrap; - - .gridicon { - top: 4px; - margin-top: -8px; - } - // Make the left margin of the small plus icon visually less huge - .gridicons-plus-small { - margin-left: -4px; - } - // Reset the left margin if the button contains only the plus icon - .gridicons-plus-small:last-of-type { - margin-left: 0; - } - // Make plus icon nudged closer to adjacent icons for add-people and add-plugin type buttons - .gridicons-plus-small + .gridicon { - margin-left: -4px; - } - - // Properly align icon with the button text - .gridicons-external-link { - margin: -3px 0 -3px 2px; - } - } - &.hidden { - display: none; - } -} - -.jitm-card { - display: block; - clear: both; - position: relative; - margin: rem( 48px ) rem( 20px ) 0 auto; - padding: rem( 16px ); - padding-left: rem( 20px ); - box-sizing: border-box; - background-color: $white; - border: 1px solid $white; - border-radius: 2px; - box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.16); - - @include clear-fix; - - // Compact Card - &.is-compact { - margin-bottom: rem( 1px ); - - @include breakpoint( ">480px" ) { - margin-bottom: 1px; - padding: rem( 16px ) rem( 24px ); - } - } - - &.is-card-link { - padding-right: rem( 48px ); - } -} - -// Minor adjustments for the display in My Jetpack. -.my-jetpack-jitm-card { - .jitm-card { - margin-right: 0; - margin-bottom: 1.5rem; - margin-top: 1.5rem; - } -} - -// if JITM appears directly below WordPress "help" menu adjust margins -#screen-meta-links+.jitm-card { - margin: rem( 40px ) 1.5385em 0 auto; -} - -// if JITM appears directly below WordPress hello dolly adjust margins -#dolly+.jitm-card { - margin: 3rem 1rem 0 auto; -} - -// remove right margin for jitms in the editor -.post-php .jitm-card { - margin-right: 0; -} - - // if JITM appears inside of the jetpack dashboard adjust margins - .jp-lower .jitm-card { - margin: 0 0 rem( 24px ); - } - -.jitm-banner.jitm-card { - display: flex; - position: relative; - z-index: 2; - - &::before { - content: ''; - width: 4px; - position: absolute; - top: 0; - left: 0; - height: 100%; - border-top-left-radius: 1px; - border-bottom-left-radius: 1px; - } - - @include breakpoint( "<480px" ) { - display: flex; - flex-direction: column; - } - - &.is-card-link { - padding: rem( 12px ) rem( 48px ) rem( 12px ) rem( 16px ); - } - &.is-dismissible { - padding-right: rem( 48px ); - } - - @include jitm-banner-color( $alert-green ); - - &.is-upgrade-personal { - @include jitm-banner-color( $alert-yellow ); - } - &.is-upgrade-premium { - @include jitm-banner-color( #069e08 ); - } - &.is-upgrade-business, - &.woo-jitm { - @include jitm-banner-color( $alert-purple ); - } - - .jitm-card__link-indicator { - align-items: center; - color: $blue-wordpress; - display: flex; - } - - &:hover { - transition: all 100ms ease-in-out; - &.is-card-link { - box-shadow: 0 0 0 1px $gray, 0 2px 4px lighten( $gray, 20% ); - } - .jitm-card__link-indicator { - color: $blue-dark; - } - } - - @include breakpoint( ">480px" ) { - padding: rem( 16px ); - padding-left: rem( 20px ); - - &.is-dismissible { - padding-right: rem( 16px ); - } - } -} - -.jitm-banner__buttons_container { - display: flex; - height: 50%; - margin: auto rem( 16px ) auto 0; - gap: rem( 16px ); - overflow: hidden; - - @include breakpoint( ">480px" ) { - margin-left: rem( 16px ); - } -} - -.jitm-banner__icons { - display: flex; - - .jitm-banner__icon, - .jitm-banner__icon-circle { - border-radius: 50%; - flex-shrink: 0; - height: rem( 24px ); - width: rem( 24px ); - margin-right: rem( 16px ); - margin-top: rem( -2px ); - text-align: center; - top: rem( 4px ); - } - - .jitm-banner__icon { - align-self: center; - color: $white; - display: block; - } - - .jitm-banner__icon-circle { - color: white; - display: none; - padding: rem( 3px ) rem( 4px ) rem( 4px ) rem( 3px ); - } - - @include breakpoint( ">480px" ) { - align-items: center; - - .jitm-banner__icon { - display: none; - } - .jitm-banner__icon-circle { - display: block; - } - } -} - -.jitm-banner__icon-plan { - display: flex; - margin-right: rem( 16px ); - - .dops-plan-icon { - height: rem( 32px ); - width: rem( 32px ); - } - - .jp-emblem { - position: relative; - top: rem( 2px ); - - @include breakpoint( "<480px" ) { - margin-bottom: rem( 16px ); - } - - svg { - height: rem( 32px ); - width: rem( 32px ); - fill: $green-primary; - } - - .jitm-jp-logo { - height: inherit; - width: rem( 40px ); - fill: inherit; - } - } - - @include breakpoint( ">480px" ) { - align-items: center; - } -} - -.jitm-banner__background { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-image: url( "../images/background.png" ); - background-repeat: no-repeat; - background-position: right center; - z-index: -1; - - .rtl & { - background-position: left center; - transform: scaleX(-1); - } -} - -.jitm-banner__content { - align-items: center; - display: flex; - flex-grow: 1; - flex-wrap: wrap; - flex-shrink: 100000; - - @include breakpoint( "<480px" ) { - margin-right: 0; - } - - @include breakpoint( ">480px" ) { - flex-wrap: nowrap; - } - - @include breakpoint( "<960px" ) { - margin-right: 5px; - } -} - -.jitm-banner__info { - flex-grow: 1; - line-height: 1.4; - - @include breakpoint( ">480px" ) { - flex-basis: 50%; - } - - @include breakpoint( ">960px" ) { - flex-basis: 70%; - } - - .jitm-banner__title, - .jitm-banner__description, - .jitm-banner__description a { - color: black; - } - - .jitm-banner__title { - font-size: rem( 15px ); - font-weight: 700; - line-height: 136%; - } - - .jitm-banner__description { - font-size: rem( 13px ); - line-height: 150%; - margin-top: rem( 2px ); - } - - .banner__list { - font-size: 12px; - list-style: none; - margin: 10px 0; - li { - margin: 6px 0; - .gridicon { - fill: $gray; - display: inline; - margin-right: 12px; - vertical-align: bottom; - } - } - } -} - -.jitm-banner__action { - align-self: center; - font-size: rem( 12px ); - text-align: left; - overflow: hidden; - - .jitm-banner__prices { - display: flex; - justify-content: flex-start; - - .dops-plan-price { - margin-bottom: 0; - } - - .dops-plan-price.is-discounted, - .dops-plan-price.is-discounted .dops-plan-price__currency-symbol { - color: $gray-dark; - } - - .has-call-to-action & .dops-plan-price { - margin-bottom: rem( 8px ); - } - } - - @include breakpoint( "<480px" ) { - margin-top: 1rem; - } - - @include breakpoint( ">480px" ) { - text-align: center; - width: auto; - - .is-dismissible { - margin-top: rem( 40px ); - } - - .jitm-banner__prices { - justify-content: flex-end; - text-align: right; - } - } -} - -.jitm-banner__dismiss { - display: block; - text-decoration: none; - line-height: .5; - margin-top: auto; - margin-bottom: auto; - - &::before { - color: darken($gray, 20%); - font: 400 20px/1 dashicons; - content: '\f335'; - } - - @include breakpoint( ">660px" ) { - margin-right: rem( -8px ); - } - - @include breakpoint( "<480px" ) { - position: absolute; - top: 0; - right: 0; - - display: flex; - justify-content: center; - align-items: center; - margin: 0; - - // Minimum touch area - width: 48px; - height: 48px; - } -} - -.jitm-banner__action + .jitm-banner__dismiss { - margin-left: rem( 10px ); -} - -#dolly + .jitm-card { - margin: 3rem 1rem 0 auto; -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/images/background.png b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-jitm/src/images/background.png deleted file mode 100644 index 07ae0ef447c602a4c9a98f9d85a19d1c606e0646..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23766 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 A7ytkO diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/CHANGELOG.md deleted file mode 100644 index a83d63df..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/CHANGELOG.md +++ /dev/null @@ -1,415 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [3.0.8] - 2025-03-21 -### Changed -- Internal updates. - -## [3.0.7] - 2025-03-12 -### Changed -- Internal updates. - -## [3.0.6] - 2025-03-05 -### Changed -- Internal updates. - -## [3.0.5] - 2025-02-24 -### Changed -- Update dependencies. - -## [3.0.4] - 2025-02-03 -### Changed -- Internal updates. - -## [3.0.3] - 2025-01-20 -### Changed -- Code: Use function-style exit() and die() with a default status code of 0. [#41167] - -## [3.0.2] - 2024-12-02 -### Changed -- Exclude revoked licenses from results when filtering unattached licenses in `Licensing::get_user_licenses()`. Only unattached and valid licenses are now returned. [#40215] - -## [3.0.1] - 2024-11-25 -### Changed -- Updated dependencies. [#40286] - -## [3.0.0] - 2024-11-14 -### Removed -- General: Update minimum PHP version to 7.2. [#40147] - -## [2.0.12] - 2024-11-04 -### Added -- Enable test coverage. [#39961] - -## [2.0.11] - 2024-10-29 -### Changed -- Internal updates. - -## [2.0.10] - 2024-09-23 -### Changed -- Update dependencies. - -## [2.0.9] - 2024-09-05 -### Changed -- Update dependencies. - -## [2.0.8] - 2024-09-05 -### Changed -- Update dependencies. - -## [2.0.7] - 2024-08-26 -### Changed -- Updated package dependencies. [#39004] - -## [2.0.6] - 2024-08-19 -### Changed -- Internal updates. - -## [2.0.5] - 2024-04-22 -### Changed -- Internal updates. - -## [2.0.4] - 2024-04-08 -### Changed -- Internal updates. - -## [2.0.3] - 2024-03-25 -### Changed -- Internal updates. - -## [2.0.2] - 2024-03-14 -### Changed -- Internal updates. - -## [2.0.1] - 2023-11-21 - -## [2.0.0] - 2023-11-20 -### Changed -- Updated required PHP version to >= 7.0. [#34192] - -## [1.8.4] - 2023-09-19 - -- Minor internal updates. - -## [1.8.3] - 2023-08-23 -### Changed -- Updated package dependencies. [#32605] - -## [1.8.2] - 2023-04-10 -### Added -- Add Jetpack Autoloader package suggestion. [#29988] - -## [1.8.1] - 2023-02-20 -### Changed -- Minor internal updates. - -## [1.8.0] - 2023-02-08 -### Added -- After connection flow, load unattached licenses. If any of them match the product that's being connected, redirect users to the license activation page. [#28509] - -## [1.7.14] - 2023-01-11 -### Changed -- Updated package dependencies. - -## [1.7.13] - 2022-12-02 -### Changed -- Updated package dependencies. [#27688] - -## [1.7.12] - 2022-11-22 -### Changed -- Updated package dependencies. [#27043] - -## [1.7.11] - 2022-10-25 -### Changed -- Updated package dependencies. [#26705] - -## [1.7.10] - 2022-09-20 -### Changed -- Updated package dependencies. - -## [1.7.9] - 2022-09-08 -### Changed -- Updated package dependencies. - -## [1.7.8] - 2022-08-29 -### Changed -- Updated package dependencies. - -## [1.7.7] - 2022-08-23 -### Changed -- Updated package dependencies. [#25628] - -## [1.7.6] - 2022-08-03 -### Changed -- Updated package dependencies. [#25300, #25315] - -## [1.7.5] - 2022-07-26 -### Changed -- Updated package dependencies. [#25158] - -## [1.7.4] - 2022-06-21 -### Changed -- Renaming master to trunk. - -## [1.7.3] - 2022-06-14 -### Changed -- Updated package dependencies. [#24529] - -## [1.7.2] - 2022-05-04 -### Changed -- Updated package dependencies. [#24095] - -### Deprecated -- Moved the options class into Connection. [#24095] - -## [1.7.1] - 2022-04-26 -### Changed -- Updated package dependencies. - -## [1.7.0] - 2022-04-19 -### Changed -- Moved licensing endpoints from the Jetpack plugin to the Licensing package - -## [1.6.4] - 2022-04-12 -### Changed -- Updated package dependencies. - -## [1.6.3] - 2022-03-02 -### Changed -- Updated package dependencies. - -## [1.6.2] - 2022-01-25 -### Changed -- Updated package dependencies. - -## [1.6.1] - 2022-01-18 -### Changed -- Updated package dependencies. - -## [1.6.0] - 2022-01-04 -### Changed -- Switch to pcov for code coverage. -- Updated package dependencies -- Updated package textdomain from `jetpack` to `jetpack-licensing`. - -## [1.5.4] - 2021-12-14 -### Changed -- Updated package dependencies. - -## [1.5.3] - 2021-12-03 -### Changed -- Increases the timeout of the license activation request from 10 to 30 seconds. - -## [1.5.2] - 2021-11-30 -### Changed -- Updated package dependencies. - -## [1.5.1] - 2021-11-23 -### Changed -- Updated package dependencies. - -## [1.5.0] - 2021-11-16 -### Added -- Add a test for update to WPCOM return change. -- Added get_license_activation_notice_dismiss() function. - -## [1.4.9] - 2021-11-02 -### Changed -- Set `convertDeprecationsToExceptions` true in PHPUnit config. -- Update PHPUnit configs to include just what needs coverage rather than include everything then try to exclude stuff that doesn't. - -## [1.4.8] - 2021-10-19 -### Changed -- Updated package dependencies. - -## [1.4.7] - 2021-10-12 -### Changed -- Updated package dependencies - -## [1.4.6] - 2021-09-28 -### Changed -- Updated package dependencies. - -## [1.4.5] - 2021-08-31 -### Changed -- Run composer update on test-php command instead of phpunit. -- Tests: update PHPUnit polyfills dependency (yoast/phpunit-polyfills). -- Updated versions in annotations. - -## [1.4.4] - 2021-07-27 -### Changed -- Updated package dependencies. - -## [1.4.3] - 2021-06-29 -### Changed -- Updated package dependencies. - -## [1.4.2] - 2021-05-25 -### Changed -- Updated package dependencies. - -## [1.4.1] - 2021-04-27 -### Changed -- Updated package dependencies. - -## [1.4.0] - 2021-03-30 -### Added -- Composer alias for dev-master, to improve dependencies -- Dashboard: add new option to input license key. - -### Changed -- Replace usage of deprecated is_active method -- Update package dependencies. - -### Fixed -- Fix stored licenses not being attached on option creation -- Use `composer update` rather than `install` in scripts, as composer.lock isn't checked in. - -## [1.3.4] - 2021-02-23 - -- CI: Make tests more generic -- codesniffer: Hack around mediawiki-codesniffer bug - -## [1.3.3] - 2021-02-08 - -- Update dependencies to latest stable - -## [1.3.2] - 2021-01-28 - -- Update dependencies to latest stable - -## [1.3.1] - 2021-01-26 - -- Add mirror-repo information to all current composer packages -- Monorepo: Reorganize all projects - -## [1.3.0] - 2021-01-05 - -- Pin dependencies -- Packages: Update for PHP 8 testing - -## [1.2.4] - 2020-11-24 - -- Version packages for release - -## [1.2.3] - 2020-11-24 - -- Updated PHPCS: Packages and Debugger - -## [1.2.2] - 2020-11-05 - -- Update dependencies to latest stable - -## [1.2.1] - 2020-10-29 - -- Update dependencies to latest stable - -## [1.2.0] - 2020-10-27 - -- Licensing: use Oxford comma in error message - -## [1.1.4] - 2020-10-14 - -- Update dependencies to latest stable - -## [1.1.3] - 2020-10-09 - -- Update dependencies to latest stable - -## [1.1.2] - 2020-10-06 - -- Update dependencies to latest stable - -## [1.1.1] - 2020-10-01 - -- Update dependencies to latest stable - -## [1.1.0] - 2020-09-29 - -- Update dependencies to latest stable - -## 1.0.0 - 2020-09-24 - -- Licensing: Add support for Jetpack licenses - -[3.0.8]: https://github.com/Automattic/jetpack-licensing/compare/v3.0.7...v3.0.8 -[3.0.7]: https://github.com/Automattic/jetpack-licensing/compare/v3.0.6...v3.0.7 -[3.0.6]: https://github.com/Automattic/jetpack-licensing/compare/v3.0.5...v3.0.6 -[3.0.5]: https://github.com/Automattic/jetpack-licensing/compare/v3.0.4...v3.0.5 -[3.0.4]: https://github.com/Automattic/jetpack-licensing/compare/v3.0.3...v3.0.4 -[3.0.3]: https://github.com/Automattic/jetpack-licensing/compare/v3.0.2...v3.0.3 -[3.0.2]: https://github.com/Automattic/jetpack-licensing/compare/v3.0.1...v3.0.2 -[3.0.1]: https://github.com/Automattic/jetpack-licensing/compare/v3.0.0...v3.0.1 -[3.0.0]: https://github.com/Automattic/jetpack-licensing/compare/v2.0.12...v3.0.0 -[2.0.12]: https://github.com/Automattic/jetpack-licensing/compare/v2.0.11...v2.0.12 -[2.0.11]: https://github.com/Automattic/jetpack-licensing/compare/v2.0.10...v2.0.11 -[2.0.10]: https://github.com/Automattic/jetpack-licensing/compare/v2.0.9...v2.0.10 -[2.0.9]: https://github.com/Automattic/jetpack-licensing/compare/v2.0.8...v2.0.9 -[2.0.8]: https://github.com/Automattic/jetpack-licensing/compare/v2.0.7...v2.0.8 -[2.0.7]: https://github.com/Automattic/jetpack-licensing/compare/v2.0.6...v2.0.7 -[2.0.6]: https://github.com/Automattic/jetpack-licensing/compare/v2.0.5...v2.0.6 -[2.0.5]: https://github.com/Automattic/jetpack-licensing/compare/v2.0.4...v2.0.5 -[2.0.4]: https://github.com/Automattic/jetpack-licensing/compare/v2.0.3...v2.0.4 -[2.0.3]: https://github.com/Automattic/jetpack-licensing/compare/v2.0.2...v2.0.3 -[2.0.2]: https://github.com/Automattic/jetpack-licensing/compare/v2.0.1...v2.0.2 -[2.0.1]: https://github.com/Automattic/jetpack-licensing/compare/v2.0.0...v2.0.1 -[2.0.0]: https://github.com/Automattic/jetpack-licensing/compare/v1.8.4...v2.0.0 -[1.8.4]: https://github.com/Automattic/jetpack-licensing/compare/v1.8.3...v1.8.4 -[1.8.3]: https://github.com/Automattic/jetpack-licensing/compare/v1.8.2...v1.8.3 -[1.8.2]: https://github.com/Automattic/jetpack-licensing/compare/v1.8.1...v1.8.2 -[1.8.1]: https://github.com/Automattic/jetpack-licensing/compare/v1.8.0...v1.8.1 -[1.8.0]: https://github.com/Automattic/jetpack-licensing/compare/v1.7.14...v1.8.0 -[1.7.14]: https://github.com/Automattic/jetpack-licensing/compare/v1.7.13...v1.7.14 -[1.7.13]: https://github.com/Automattic/jetpack-licensing/compare/v1.7.12...v1.7.13 -[1.7.12]: https://github.com/Automattic/jetpack-licensing/compare/v1.7.11...v1.7.12 -[1.7.11]: https://github.com/Automattic/jetpack-licensing/compare/v1.7.10...v1.7.11 -[1.7.10]: https://github.com/Automattic/jetpack-licensing/compare/v1.7.9...v1.7.10 -[1.7.9]: https://github.com/Automattic/jetpack-licensing/compare/v1.7.8...v1.7.9 -[1.7.8]: https://github.com/Automattic/jetpack-licensing/compare/v1.7.7...v1.7.8 -[1.7.7]: https://github.com/Automattic/jetpack-licensing/compare/v1.7.6...v1.7.7 -[1.7.6]: https://github.com/Automattic/jetpack-licensing/compare/v1.7.5...v1.7.6 -[1.7.5]: https://github.com/Automattic/jetpack-licensing/compare/v1.7.4...v1.7.5 -[1.7.4]: https://github.com/Automattic/jetpack-licensing/compare/v1.7.3...v1.7.4 -[1.7.3]: https://github.com/Automattic/jetpack-licensing/compare/v1.7.2...v1.7.3 -[1.7.2]: https://github.com/Automattic/jetpack-licensing/compare/v1.7.1...v1.7.2 -[1.7.1]: https://github.com/Automattic/jetpack-licensing/compare/v1.7.0...v1.7.1 -[1.7.0]: https://github.com/Automattic/jetpack-licensing/compare/v1.6.4...v1.7.0 -[1.6.4]: https://github.com/Automattic/jetpack-licensing/compare/v1.6.3...v1.6.4 -[1.6.3]: https://github.com/Automattic/jetpack-licensing/compare/v1.6.2...v1.6.3 -[1.6.2]: https://github.com/Automattic/jetpack-licensing/compare/v1.6.1...v1.6.2 -[1.6.1]: https://github.com/Automattic/jetpack-licensing/compare/v1.6.0...v1.6.1 -[1.6.0]: https://github.com/Automattic/jetpack-licensing/compare/v1.5.4...v1.6.0 -[1.5.4]: https://github.com/Automattic/jetpack-licensing/compare/v1.5.3...v1.5.4 -[1.5.3]: https://github.com/Automattic/jetpack-licensing/compare/v1.5.2...v1.5.3 -[1.5.2]: https://github.com/Automattic/jetpack-licensing/compare/v1.5.1...v1.5.2 -[1.5.1]: https://github.com/Automattic/jetpack-licensing/compare/v1.5.0...v1.5.1 -[1.5.0]: https://github.com/Automattic/jetpack-licensing/compare/v1.4.9...v1.5.0 -[1.4.9]: https://github.com/Automattic/jetpack-licensing/compare/v1.4.8...v1.4.9 -[1.4.8]: https://github.com/Automattic/jetpack-licensing/compare/v1.4.7...v1.4.8 -[1.4.7]: https://github.com/Automattic/jetpack-licensing/compare/v1.4.6...v1.4.7 -[1.4.6]: https://github.com/Automattic/jetpack-licensing/compare/v1.4.5...v1.4.6 -[1.4.5]: https://github.com/Automattic/jetpack-licensing/compare/v1.4.4...v1.4.5 -[1.4.4]: https://github.com/Automattic/jetpack-licensing/compare/v1.4.3...v1.4.4 -[1.4.3]: https://github.com/Automattic/jetpack-licensing/compare/v1.4.2...v1.4.3 -[1.4.2]: https://github.com/Automattic/jetpack-licensing/compare/v1.4.1...v1.4.2 -[1.4.1]: https://github.com/Automattic/jetpack-licensing/compare/v1.4.0...v1.4.1 -[1.4.0]: https://github.com/Automattic/jetpack-licensing/compare/v1.3.4...v1.4.0 -[1.3.4]: https://github.com/Automattic/jetpack-licensing/compare/v1.3.3...v1.3.4 -[1.3.3]: https://github.com/Automattic/jetpack-licensing/compare/v1.3.2...v1.3.3 -[1.3.2]: https://github.com/Automattic/jetpack-licensing/compare/v1.3.1...v1.3.2 -[1.3.1]: https://github.com/Automattic/jetpack-licensing/compare/v1.3.0...v1.3.1 -[1.3.0]: https://github.com/Automattic/jetpack-licensing/compare/v1.2.4...v1.3.0 -[1.2.4]: https://github.com/Automattic/jetpack-licensing/compare/v1.2.3...v1.2.4 -[1.2.3]: https://github.com/Automattic/jetpack-licensing/compare/v1.2.2...v1.2.3 -[1.2.2]: https://github.com/Automattic/jetpack-licensing/compare/v1.2.1...v1.2.2 -[1.2.1]: https://github.com/Automattic/jetpack-licensing/compare/v1.2.0...v1.2.1 -[1.2.0]: https://github.com/Automattic/jetpack-licensing/compare/v1.1.4...v1.2.0 -[1.1.4]: https://github.com/Automattic/jetpack-licensing/compare/v1.1.3...v1.1.4 -[1.1.3]: https://github.com/Automattic/jetpack-licensing/compare/v1.1.2...v1.1.3 -[1.1.2]: https://github.com/Automattic/jetpack-licensing/compare/v1.1.1...v1.1.2 -[1.1.1]: https://github.com/Automattic/jetpack-licensing/compare/v1.1.0...v1.1.1 -[1.1.0]: https://github.com/Automattic/jetpack-licensing/compare/v1.0.0...v1.1.0 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/composer.json deleted file mode 100644 index 9f6194fa..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/composer.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "automattic/jetpack-licensing", - "description": "Everything needed to manage Jetpack licenses client-side.", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2", - "automattic/jetpack-connection": "^6.7.7" - }, - "require-dev": { - "automattic/jetpack-test-environment": "@dev", - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "scripts": { - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" - ], - "test-php": [ - "@composer phpunit" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-licensing", - "textdomain": "jetpack-licensing", - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-licensing/compare/v${old}...v${new}" - }, - "branch-alias": { - "dev-trunk": "3.0.x-dev" - } - }, - "config": { - "allow-plugins": { - "roots/wordpress-core-installer": true - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/src/class-endpoints.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/src/class-endpoints.php deleted file mode 100644 index 0972505a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/src/class-endpoints.php +++ /dev/null @@ -1,449 +0,0 @@ - \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::get_licensing_error', - 'permission_callback' => __CLASS__ . '::can_manage_options_check', - ), - array( - 'methods' => \WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::update_licensing_error', - 'permission_callback' => __CLASS__ . '::can_manage_options_check', - 'args' => array( - 'error' => array( - 'required' => true, - 'type' => 'string', - 'validate_callback' => __CLASS__ . '::validate_string', - 'sanitize_callback' => 'sanitize_text_field', - ), - ), - ), - ) - ); - - /** - * Sets a license. This is still used as part of the first pass at licensing done for partners. - * - * See https://github.com/Automattic/jetpack/pull/23687 for more details. - */ - register_rest_route( - 'jetpack/v4', - '/licensing/set-license', - array( - 'methods' => \WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::set_jetpack_license', - 'permission_callback' => __CLASS__ . '::set_jetpack_license_key_permission_check', - 'args' => array( - 'license' => array( - 'required' => true, - 'type' => 'string', - 'validate_callback' => __CLASS__ . '::validate_string', - 'sanitize_callback' => 'sanitize_text_field', - ), - ), - ) - ); - - /** - * Get Jetpack user licenses. - */ - register_rest_route( - 'jetpack/v4', - 'licensing/user/licenses', - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::get_user_licenses', - 'permission_callback' => __CLASS__ . '::user_licensing_permission_check', - ) - ); - - /** - * Get Jetpack user license counts. - */ - register_rest_route( - 'jetpack/v4', - 'licensing/user/counts', - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::get_user_license_counts', - 'permission_callback' => __CLASS__ . '::user_licensing_permission_check', - ) - ); - - /** - * Update user-licensing activation notice dismiss info. - */ - register_rest_route( - 'jetpack/v4', - 'licensing/user/activation-notice-dismiss', - array( - 'methods' => \WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::update_licensing_activation_notice_dismiss', - 'permission_callback' => __CLASS__ . '::user_licensing_permission_check', - 'args' => array( - 'last_detached_count' => array( - 'required' => true, - 'type' => 'integer', - 'validate_callback' => __CLASS__ . '::validate_non_neg_int', - ), - ), - ) - ); - - /** - * Attach licenses to user account - */ - register_rest_route( - 'jetpack/v4', - '/licensing/attach-licenses', - array( - 'methods' => \WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::attach_jetpack_licenses', - 'permission_callback' => __CLASS__ . '::user_licensing_permission_check', - 'args' => array( - 'licenses' => array( - 'required' => true, - 'type' => 'array', - 'items' => array( - 'type' => 'string', - ), - ), - ), - ) - ); - } - - /** - * Verify that the user can set a Jetpack license key - * - * @since 1.7.0 - * - * @since-jetpack 9.5.0 - * - * @return bool|WP_Error True if user is able to set a Jetpack license key - */ - public static function set_jetpack_license_key_permission_check() { - if ( Licensing::instance()->is_licensing_input_enabled() ) { - return true; - } - - return new WP_Error( 'invalid_user_permission_set_jetpack_license_key', self::$user_permissions_error_msg, array( 'status' => rest_authorization_required_code() ) ); - } - - /** - * Verify that user can view and update user-licensing data. - * - * @since 1.7.0 - * - * @return bool Whether the user is currently connected and they are the connection owner. - */ - public static function user_licensing_permission_check() { - $connection_manager = new Connection_Manager( 'jetpack' ); - - if ( $connection_manager->is_user_connected() && $connection_manager->is_connection_owner() ) { - return true; - } - - return new WP_Error( 'invalid_permission_manage_user_licenses', self::$user_permissions_error_msg, array( 'status' => rest_authorization_required_code() ) ); - } - - /** - * Verify that user can manage_options - * - * @since 1.7.0 - * - * @return bool Whether user has the capability 'manage_options'. - */ - public static function can_manage_options_check() { - if ( current_user_can( 'manage_options' ) ) { - return true; - } - - return new WP_Error( 'invalid_user_permission_view_admin', self::$user_permissions_error_msg, array( 'status' => rest_authorization_required_code() ) ); - } - - /** - * Validates that the parameter is a string. - * - * @since 1.7.0 - * - * @since-jetpack 4.3.0 - * - * @param string $value Value to check. - * @param WP_REST_Request $request The request sent to the WP REST API. - * @param string $param Name of the parameter passed to endpoint holding $value. - * - * @return bool|WP_Error - */ - public static function validate_string( $value, $request, $param ) { - if ( ! is_string( $value ) ) { - /* translators: %s: The literal parameter name. Should not be translated. */ - return new WP_Error( 'invalid_param', sprintf( esc_html__( '%s must be a string.', 'jetpack-licensing' ), $param ) ); - } - return true; - } - - /** - * Validates that the parameter is a non-negative integer (includes 0). - * - * @since 1.7.0 - * - * @since-jetpack 10.4.0 - * - * @param int $value Value to check. - * @param WP_REST_Request $request The request sent to the WP REST API. - * @param string $param Name of the parameter passed to endpoint holding $value. - * - * @return bool|WP_Error - */ - public static function validate_non_neg_int( $value, $request, $param ) { - if ( ! is_numeric( $value ) || $value < 0 ) { - return new WP_Error( - 'invalid_param', - /* translators: %s: The literal parameter name. Should not be translated. */ - sprintf( esc_html__( '%s must be a non-negative integer.', 'jetpack-licensing' ), $param ) - ); - } - return true; - } - - /** - * Update the last licensing error message. - * - * @since 1.7.0 - * - * @since-jetpack 9.0.0 - * - * @param WP_REST_Request $request The request. - * - * @return bool true. - */ - public static function update_licensing_error( $request ) { - Licensing::instance()->log_error( $request['error'] ); - - return true; - } - - /** - * Get the last licensing error message, if any. - * - * @since 1.7.0 - * - * @since-jetpack 9.0.0 - * - * @return string Licensing error message or empty string. - */ - public static function get_licensing_error() { - return Licensing::instance()->last_error(); - } - - /** - * Set a Jetpack license - * - * @since 1.7.0 - * - * @since-jetpack 9.6.0 - * - * @param WP_REST_Request $request The request. - * - * @return WP_REST_Response|WP_Error A response object if the option was successfully updated, or a WP_Error if it failed. - */ - public static function set_jetpack_license( $request ) { - $license = trim( sanitize_text_field( $request['license'] ) ); - - if ( Licensing::instance()->append_license( $license ) ) { - return rest_ensure_response( array( 'code' => 'success' ) ); - } - - return new WP_Error( - 'setting_license_key_failed', - esc_html__( 'Could not set this license key. Please try again.', 'jetpack-licensing' ), - array( 'status' => 500 ) - ); - } - - /** - * Gets the users licenses. - * - * @since 1.7.0 - * - * @since-jetpack 10.4.0 - * - * @return string|WP_Error A JSON object of user licenses if the request was successful, or a WP_Error otherwise. - */ - public static function get_user_licenses() { - $wpcom_request = Client::wpcom_json_api_request_as_user( - '/jetpack-licensing/user/licenses', - '2', - array( - 'method' => 'GET', - 'headers' => array( - 'Content-Type' => 'application/json', - 'X-Forwarded-For' => ( new Visitor() )->get_ip( true ), - ), - ) - ); - - $response_code = wp_remote_retrieve_response_code( $wpcom_request ); - if ( 200 === $response_code ) { - $licenses = json_decode( wp_remote_retrieve_body( $wpcom_request ) ); - return $licenses; - } else { - return new WP_Error( - 'failed_to_fetch_data', - esc_html__( 'Unable to fetch the requested data.', 'jetpack-licensing' ), - array( 'status' => $response_code ) - ); - } - } - - /** - * Gets the users licenses counts. - * - * @since 1.7.0 - * - * @since-jetpack 10.4.0 - * - * @return string|WP_Error A JSON object of user license counts if the request was successful, or a WP_Error otherwise. - */ - public static function get_user_license_counts() { - $wpcom_request = Client::wpcom_json_api_request_as_user( - '/jetpack-licensing/user/licenses/counts', - '2', - array( - 'method' => 'GET', - 'headers' => array( - 'Content-Type' => 'application/json', - 'X-Forwarded-For' => ( new Visitor() )->get_ip( true ), - ), - ) - ); - - $response_code = wp_remote_retrieve_response_code( $wpcom_request ); - if ( 200 === $response_code ) { - $license_counts = json_decode( wp_remote_retrieve_body( $wpcom_request ) ); - return $license_counts; - } else { - return new WP_Error( - 'failed_to_fetch_data', - esc_html__( 'Unable to fetch the requested data.', 'jetpack-licensing' ), - array( 'status' => $response_code ) - ); - } - } - - /** - * Update the user-licenses activation notice dismissal data. - * - * @since 1.7.0 - * - * @since-jetpack 10.4.0 - * - * @param WP_REST_Request $request The request sent to the WP REST API. - * - * @return array|WP_Error - */ - public static function update_licensing_activation_notice_dismiss( $request ) { - - if ( ! isset( $request['last_detached_count'] ) ) { - return new WP_Error( 'invalid_param', esc_html__( 'Missing parameter "last_detached_count".', 'jetpack-licensing' ), array( 'status' => 404 ) ); - } - - $default = array( - 'last_detached_count' => null, - 'last_dismissed_time' => null, - ); - $last_detached_count = ( '' === $request['last_detached_count'] ) - ? $default['last_detached_count'] - : $request['last_detached_count']; - $last_dismissed_time = ( '' === $request['last_detached_count'] ) - ? $default['last_dismissed_time'] - // Use UTC timezone and convert to ISO8601 format(DateTime::W3C) for best compatibility with JavaScript Date in all browsers. - : ( new \DateTime( 'NOW', new \DateTimeZone( 'UTC' ) ) )->format( \DateTime::W3C ); - - $notice_data = array( - 'last_detached_count' => $last_detached_count, - 'last_dismissed_time' => $last_dismissed_time, - ); - - Jetpack_Options::update_option( 'licensing_activation_notice_dismiss', $notice_data, true ); - return rest_ensure_response( $notice_data ); - } - - /** - * Attach Jetpack licenses - * - * @since 1.7.0 - * - * @since-jetpack 10.4.0 - * - * @param WP_REST_Request $request The request. - * - * @return WP_REST_Response|WP_Error A response object - */ - public static function attach_jetpack_licenses( $request ) { - $licenses = array_map( - function ( $license ) { - return trim( sanitize_text_field( $license ) ); - }, - $request['licenses'] - ); - return rest_ensure_response( Licensing::instance()->attach_licenses( $licenses ) ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/src/class-licensing.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/src/class-licensing.php deleted file mode 100644 index 1cdaa4a8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-licensing/src/class-licensing.php +++ /dev/null @@ -1,359 +0,0 @@ -register_endpoints(); - } - - /** - * Get Jetpack connection manager instance. - * - * @return Connection_Manager - */ - protected function connection() { - static $connection; - - if ( null === $connection ) { - $connection = new Connection_Manager(); - } - - return $connection; - } - - /** - * Get the last license attach request error that has occurred, if any. - * - * @return string Human-readable error message or an empty string. - */ - public function last_error() { - return Jetpack_Options::get_option( 'licensing_error', '' ); - } - - /** - * Log an error to be surfaced to the user at a later time. - * - * @param string $error Human-readable error message. - * @return void - */ - public function log_error( $error ) { - $substr = function_exists( 'mb_substr' ) ? 'mb_substr' : 'substr'; - Jetpack_Options::update_option( 'licensing_error', $substr( $error, 0, 1024 ) ); - } - - /** - * Get all stored licenses. - * - * @return string[] License keys. - */ - public function stored_licenses() { - $licenses = (array) get_option( self::LICENSES_OPTION_NAME, array() ); - $licenses = array_filter( $licenses, 'is_scalar' ); - $licenses = array_map( 'strval', $licenses ); - $licenses = array_filter( $licenses ); - - return $licenses; - } - - /** - * Append a license - * - * @param string $license A jetpack license key. - * @return bool True if the option was updated with the new license, false otherwise. - */ - public function append_license( $license ) { - $licenses = $this->stored_licenses(); - - array_push( $licenses, $license ); - - return update_option( self::LICENSES_OPTION_NAME, $licenses ); - } - - /** - * Make an authenticated WP.com XMLRPC multicall request to attach the provided license keys. - * - * @param string[] $licenses License keys to attach. - * @return Jetpack_IXR_ClientMulticall - */ - protected function attach_licenses_request( array $licenses ) { - $xml = new Jetpack_IXR_ClientMulticall( array( 'timeout' => 30 ) ); - - foreach ( $licenses as $license ) { - $xml->addCall( 'jetpack.attachLicense', $license ); - } - - $xml->query(); - - return $xml; - } - - /** - * Attach the given licenses. - * - * @param string[] $licenses Licenses to attach. - * @return array|WP_Error Results for each license (which may include WP_Error instances) or a WP_Error instance. - */ - public function attach_licenses( array $licenses ) { - if ( ! $this->connection()->has_connected_owner() ) { - return new WP_Error( 'not_connected', __( 'Jetpack doesn\'t have a connected owner.', 'jetpack-licensing' ) ); - } - - if ( empty( $licenses ) ) { - return array(); - } - - $xml = $this->attach_licenses_request( $licenses ); - - if ( $xml->isError() ) { - $error = new WP_Error( 'request_failed', __( 'License attach request failed.', 'jetpack-licensing' ) ); - $error->add( $xml->getErrorCode(), $xml->getErrorMessage() ); - return $error; - } - - $results = array_map( - function ( $response ) { - if ( isset( $response['faultCode'] ) || isset( $response['faultString'] ) ) { - return new WP_Error( $response['faultCode'], $response['faultString'] ); - } - - return $response; - }, - (array) $xml->getResponse() - ); - - return $results; - } - - /** - * Attach all stored licenses. - * - * @return array|WP_Error Results for each license (which may include WP_Error instances) or a WP_Error instance. - */ - public function attach_stored_licenses() { - $licenses = $this->stored_licenses(); - $results = $this->attach_licenses( $licenses ); - - if ( is_wp_error( $results ) ) { - if ( 'request_failed' === $results->get_error_code() ) { - $this->log_error( - __( 'Failed to attach your Jetpack license(s). Please try reconnecting Jetpack.', 'jetpack-licensing' ) - ); - } - - return $results; - } - - $failed = array(); - - foreach ( $results as $index => $result ) { - if ( isset( $licenses[ $index ] ) && is_wp_error( $result ) ) { - $failed[] = $licenses[ $index ]; - } - } - - if ( ! empty( $failed ) ) { - $this->log_error( - sprintf( - /* translators: %s is a comma-separated list of license keys. */ - __( 'The following Jetpack licenses are invalid, already in use, or revoked: %s', 'jetpack-licensing' ), - implode( ', ', $failed ) - ) - ); - } - - return $results; - } - - /** - * Attach all stored licenses during connection flow for the connection owner. - * - * @return void - */ - public function attach_stored_licenses_on_connection() { - if ( $this->connection()->is_connection_owner() ) { - $this->attach_stored_licenses(); - } - } - - /** - * Is the current user allowed to use the Licensing Input UI? - * - * @since 1.4.0 - * @return bool - */ - public static function is_licensing_input_enabled() { - /** - * Filter that checks if the user is allowed to see the Licensing UI. `true` enables it. - * - * @since 1.4.0 - * - * @param bool False by default. - */ - return apply_filters( 'jetpack_licensing_ui_enabled', false ) && current_user_can( 'jetpack_connect_user' ); - } - - /** - * Gets the user-licensing activation notice dismissal info. - * - * @since 10.4.0 - * @return array - */ - public function get_license_activation_notice_dismiss() { - - $default = array( - 'last_detached_count' => null, - 'last_dismissed_time' => null, - ); - - if ( $this->connection()->is_user_connected() && $this->connection()->is_connection_owner() ) { - return Jetpack_Options::get_option( 'licensing_activation_notice_dismiss', $default ); - } - - return $default; - } - - /** - * Load current user's licenses. - * - * @param bool $unattached_only Only return unattached and not revoked licenses. - * - * @return array - */ - public function get_user_licenses( $unattached_only = false ) { - $licenses = Endpoints::get_user_licenses(); - - if ( empty( $licenses->items ) ) { - return array(); - } - - $items = $licenses->items; - - if ( $unattached_only ) { - $items = array_filter( - $items, - static function ( $item ) { - return $item->attached_at === null && $item->revoked_at === null; - } - ); - } - - return $items; - } - - /** - * If the destination URL is checkout page, - * see if there are unattached licenses they could use instead of getting a new one. - * If found, redirect the user to license activation. - * - * @param string $dest_url User's destination URL. - * - * @return void - */ - public function handle_user_connected_redirect( $dest_url ) { - if ( ! preg_match( '#^https://[^/]+/checkout/#i', $dest_url ) ) { - return; - } - - $licenses = $this->get_user_licenses( true ); - $plugin_slug = null; - - $query_string = wp_parse_url( $dest_url, PHP_URL_QUERY ); - if ( $query_string ) { - parse_str( $query_string, $query_args ); - - if ( $query_args['redirect_to'] - && preg_match( '/^admin\.php\?page=(jetpack-\w+)/i', $query_args['redirect_to'], $matches ) - ) { - $plugin_slug = $matches[1]; - } - } - - /** - * Check for the user's unattached licenses. - * - * @since 3.8.2 - * - * @param bool $has_license Whether a license was already found. - * @param array $licenses Unattached licenses belonging to the user. - * @param string $plugin_slug Slug of the plugin that initiated the flow. - */ - if ( $plugin_slug && count( $licenses ) - && apply_filters( 'jetpack_connection_user_has_license', false, $licenses, $plugin_slug ) - ) { - wp_safe_redirect( '/wp-admin/admin.php?page=my-jetpack#/add-license' ); - exit( 0 ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/CHANGELOG.md deleted file mode 100644 index 89fcd8e2..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/CHANGELOG.md +++ /dev/null @@ -1,253 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [3.0.4] - 2025-03-21 -### Changed -- Internal updates. - -## [3.0.3] - 2025-03-12 -### Changed -- Internal updates. - -## [3.0.2] - 2025-03-05 -### Changed -- Internal updates. - -## [3.0.1] - 2025-02-24 -### Changed -- Update dependencies. - -## [3.0.0] - 2024-11-14 -### Removed -- General: Update minimum PHP version to 7.2. [#40147] - -## [2.0.5] - 2024-11-04 -### Added -- Enable test coverage. [#39961] - -## [2.0.4] - 2024-08-23 -### Changed -- Updated package dependencies. [#39004] - -## [2.0.3] - 2024-05-20 -### Changed -- Replaced heredoc syntax with strings. [#37396] - -## [2.0.2] - 2024-03-18 -### Changed -- Internal updates. - -## [2.0.1] - 2024-03-12 -### Changed -- Internal updates. - -## [2.0.0] - 2023-11-20 -### Changed -- Updated required PHP version to >= 7.0. [#34192] - -## [1.6.3] - 2023-09-19 - -- Minor internal updates. - -## [1.6.2] - 2023-08-23 -### Changed -- Updated package dependencies. [#32605] - -## [1.6.1] - 2023-04-10 -### Added -- Add Jetpack Autoloader package suggestion. [#29988] - -## [1.6.0] - 2023-04-04 -### Added -- Add new method to get a base64 encoded SVG of the Jetpack logo. [#29418] - -## [1.5.22] - 2023-02-20 -### Changed -- Minor internal updates. - -## [1.5.21] - 2023-01-30 -### Changed -- Updated styles for Just in Time Messages (notices) [#27515] - -## [1.5.20] - 2022-12-02 -### Changed -- Updated package dependencies. [#27688] - -## [1.5.19] - 2022-11-22 -### Changed -- Updated package dependencies. [#27043] - -## [1.5.18] - 2022-11-07 -### Changed -- Updated package dependencies. - -## [1.5.17] - 2022-07-26 -### Changed -- Updated package dependencies. [#25158] - -## [1.5.16] - 2022-06-21 -### Changed -- Renaming master to trunk. [#24661] - -## [1.5.15] - 2022-04-26 -### Changed -- Updated package dependencies. - -## [1.5.14] - 2022-01-25 -### Changed -- Updated package dependencies. - -## [1.5.13] - 2022-01-04 -### Changed -- Switch to pcov for code coverage. -- Updated package dependencies - -## [1.5.12] - 2021-12-14 -### Changed -- Updated package dependencies. - -## [1.5.11] - 2021-11-30 -### Changed -- Colors: update Jetpack Primary color to match latest brand book. - -## [1.5.10] - 2021-11-02 -### Changed -- Set `convertDeprecationsToExceptions` true in PHPUnit config. -- Update PHPUnit configs to include just what needs coverage rather than include everything then try to exclude stuff that doesn't. - -## [1.5.9] - 2021-10-13 -### Changed -- Updated package dependencies. - -## [1.5.8] - 2021-10-07 -### Changed -- Updated package dependencies - -## [1.5.7] - 2021-09-28 -### Changed -- Updated package dependencies. - -## [1.5.6] - 2021-08-30 -### Changed -- Run composer update on test-php command instead of phpunit -- Tests: update PHPUnit polyfills dependency (yoast/phpunit-polyfills). -- update annotations versions - -## [1.5.5] - 2021-05-25 -### Changed -- Updated package dependencies. - -## [1.5.4] - 2021-04-27 -### Changed -- Updated package dependencies. - -## [1.5.3] - 2021-03-30 -### Added -- Composer alias for dev-master, to improve dependencies - -### Changed -- Update package dependencies. - -### Fixed -- Use `composer update` rather than `install` in scripts, as composer.lock isn't checked in. - -## [1.5.2] - 2021-02-05 - -- CI: Make tests more generic - -## [1.5.1] - 2021-01-19 - -- Add mirror-repo information to all current composer packages -- Monorepo: Reorganize all projects - -## [1.5.0] - 2020-12-07 - -- Pin dependencies -- Packages: Update for PHP 8 testing - -## [1.4.0] - 2020-08-13 - -- CI: Try collect js coverage - -## [1.3.0] - 2020-06-22 - -- PHPCS: Clean up the packages -- PHPCS Updates after WPCS 2.3 - -## [1.2.0] - 2020-03-27 - -- Use dynamic Jetpack logos on JITMs - -## [1.1.4] - 2019-11-08 - -- Packages: Use classmap instead of PSR-4 - -## [1.1.2] - 2019-10-28 - -- Packages: Add gitattributes files to all packages that need th… - -## [1.1.1] - 2019-09-20 - -- Docs: Unify usage of @package phpdoc tags - -## [1.1.0] - 2019-06-11 - -- Feature/jetpack packages pt 1. (May 31 - June 6) -- Update/package logo add gray -- Packages: Move JITM tests to package and fix deps -- Update Jetpack to use new JITM package -- Packages: Make logo package tests independent - -## 1.0.0 - 2019-05-29 - -- Packages: Add a basic Jetpack Logo package - -[3.0.4]: https://github.com/Automattic/jetpack-logo/compare/v3.0.3...v3.0.4 -[3.0.3]: https://github.com/Automattic/jetpack-logo/compare/v3.0.2...v3.0.3 -[3.0.2]: https://github.com/Automattic/jetpack-logo/compare/v3.0.1...v3.0.2 -[3.0.1]: https://github.com/Automattic/jetpack-logo/compare/v3.0.0...v3.0.1 -[3.0.0]: https://github.com/Automattic/jetpack-logo/compare/v2.0.5...v3.0.0 -[2.0.5]: https://github.com/Automattic/jetpack-logo/compare/v2.0.4...v2.0.5 -[2.0.4]: https://github.com/Automattic/jetpack-logo/compare/v2.0.3...v2.0.4 -[2.0.3]: https://github.com/Automattic/jetpack-logo/compare/v2.0.2...v2.0.3 -[2.0.2]: https://github.com/Automattic/jetpack-logo/compare/v2.0.1...v2.0.2 -[2.0.1]: https://github.com/Automattic/jetpack-logo/compare/v2.0.0...v2.0.1 -[2.0.0]: https://github.com/Automattic/jetpack-logo/compare/v1.6.3...v2.0.0 -[1.6.3]: https://github.com/Automattic/jetpack-logo/compare/v1.6.2...v1.6.3 -[1.6.2]: https://github.com/Automattic/jetpack-logo/compare/v1.6.1...v1.6.2 -[1.6.1]: https://github.com/Automattic/jetpack-logo/compare/v1.6.0...v1.6.1 -[1.6.0]: https://github.com/Automattic/jetpack-logo/compare/v1.5.22...v1.6.0 -[1.5.22]: https://github.com/Automattic/jetpack-logo/compare/v1.5.21...v1.5.22 -[1.5.21]: https://github.com/Automattic/jetpack-logo/compare/v1.5.20...v1.5.21 -[1.5.20]: https://github.com/Automattic/jetpack-logo/compare/v1.5.19...v1.5.20 -[1.5.19]: https://github.com/Automattic/jetpack-logo/compare/v1.5.18...v1.5.19 -[1.5.18]: https://github.com/Automattic/jetpack-logo/compare/v1.5.17...v1.5.18 -[1.5.17]: https://github.com/Automattic/jetpack-logo/compare/v1.5.16...v1.5.17 -[1.5.16]: https://github.com/Automattic/jetpack-logo/compare/v1.5.15...v1.5.16 -[1.5.15]: https://github.com/Automattic/jetpack-logo/compare/v1.5.14...v1.5.15 -[1.5.14]: https://github.com/Automattic/jetpack-logo/compare/v1.5.13...v1.5.14 -[1.5.13]: https://github.com/Automattic/jetpack-logo/compare/v1.5.12...v1.5.13 -[1.5.12]: https://github.com/Automattic/jetpack-logo/compare/v1.5.11...v1.5.12 -[1.5.11]: https://github.com/Automattic/jetpack-logo/compare/v1.5.10...v1.5.11 -[1.5.10]: https://github.com/Automattic/jetpack-logo/compare/v1.5.9...v1.5.10 -[1.5.9]: https://github.com/Automattic/jetpack-logo/compare/v1.5.8...v1.5.9 -[1.5.8]: https://github.com/Automattic/jetpack-logo/compare/v1.5.7...v1.5.8 -[1.5.7]: https://github.com/Automattic/jetpack-logo/compare/v1.5.6...v1.5.7 -[1.5.6]: https://github.com/Automattic/jetpack-logo/compare/v1.5.5...v1.5.6 -[1.5.5]: https://github.com/Automattic/jetpack-logo/compare/v1.5.4...v1.5.5 -[1.5.4]: https://github.com/Automattic/jetpack-logo/compare/v1.5.3...v1.5.4 -[1.5.3]: https://github.com/Automattic/jetpack-logo/compare/v1.5.2...v1.5.3 -[1.5.2]: https://github.com/Automattic/jetpack-logo/compare/v1.5.1...v1.5.2 -[1.5.1]: https://github.com/Automattic/jetpack-logo/compare/v1.5.0...v1.5.1 -[1.5.0]: https://github.com/Automattic/jetpack-logo/compare/v1.4.0...v1.5.0 -[1.4.0]: https://github.com/Automattic/jetpack-logo/compare/v1.3.0...v1.4.0 -[1.3.0]: https://github.com/Automattic/jetpack-logo/compare/v1.2.0...v1.3.0 -[1.2.0]: https://github.com/Automattic/jetpack-logo/compare/v1.1.4...v1.2.0 -[1.1.4]: https://github.com/Automattic/jetpack-logo/compare/v1.1.2...v1.1.4 -[1.1.2]: https://github.com/Automattic/jetpack-logo/compare/v1.1.1...v1.1.2 -[1.1.1]: https://github.com/Automattic/jetpack-logo/compare/v1.1.0...v1.1.1 -[1.1.0]: https://github.com/Automattic/jetpack-logo/compare/v1.0.0...v1.1.0 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/composer.json deleted file mode 100644 index 6c957c4d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/composer.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "name": "automattic/jetpack-logo", - "description": "A logo for Jetpack", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2" - }, - "require-dev": { - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "scripts": { - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" - ], - "test-php": [ - "@composer phpunit" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-logo", - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-logo/compare/v${old}...v${new}" - }, - "branch-alias": { - "dev-trunk": "3.0.x-dev" - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/src/class-logo.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/src/class-logo.php deleted file mode 100644 index 31b5b501..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-logo/src/class-logo.php +++ /dev/null @@ -1,122 +0,0 @@ - tag. - * - jetpack-logo__icon-circle: the circle of the Jetpack mark. - * - jetpack-logo__icon-triangle: two shapes that correspond to each triangle in the Jetpack mark. - * - jetpack-logo__icon-text: the Jetpack lettering. - * - * @var string - */ -const JETPACK_LOGO_SVG = ' - -'; - -/** - * Create and render a Jetpack logo. - */ -class Logo { - - /** - * Return the Jetpack logo. - * - * @return string The Jetpack logo. - */ - public function render() { - return JETPACK_LOGO_SVG; - } - - /** - * Return string containing the Jetpack logo. - * - * @since 1.1.4 - * @since-jetpack 7.5.0 - * - * @param bool $logotype Should we use the full logotype (logo + text). Default to false. - * - * @return string - */ - public function get_jp_emblem( $logotype = false ) { - $logo_text = $this->get_jp_logo_parts(); - return sprintf( - '%2$s', - ( true === $logotype ? '118' : '32' ), - ( true === $logotype ? $logo_text['logo'] . $logo_text['text'] : $logo_text['logo'] ) - ); - } - - /** - * Return string containing the Jetpack logo in a slightly larger format than get_jp_emblem(). - * - * @since 1.1.4 - * @param bool $logotype Should we use the full logotype (logo + text). Default to false. - * @return string - */ - public function get_jp_emblem_larger( $logotype = false ) { - $logo_text = $this->get_jp_logo_parts(); - return sprintf( - '', - ( true === $logotype ? '118' : '32' ), - ( true === $logotype ? $logo_text['logo'] . $logo_text['text'] : $logo_text['logo'] ) - ); - } - - /** - * Return array containing the Jetpack logo and text - * - * @since 1.6.0 - Added $color parameter. - * - * @param string $color The color of the logo. - * - * @return array - */ - private function get_jp_logo_parts( $color = '#069e08' ) { - return array( - 'logo' => '', - 'text' => ' - - - - - - ', - ); - } - - /** - * Return a base64 encoded SVG of the Jetpack logo. - * Can be used as a data URI to use the logo inline in CSS. - * - * @since 1.6.0 - * - * @param string $color The color of the logo. - * - * @return string - */ - public function get_base64_logo( $color = '#ffffff' ) { - $logo_text = $this->get_jp_logo_parts( $color ); - $base_logo = sprintf( - '%1$s', - $logo_text['logo'] - ); - $encoded_logo = base64_encode( $base_logo ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode -- The encoded version is used as data URI to use the logo in CSS. - - return 'data:image/svg+xml;base64,' . $encoded_logo; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/CHANGELOG.md deleted file mode 100644 index 352b1d6b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/CHANGELOG.md +++ /dev/null @@ -1,2314 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [5.9.1] - 2025-03-24 -### Changed -- Update dependencies. [#38910] - -## [5.9.0] - 2025-03-24 -### Added -- Add an email input to the social login form, allowing users to log into Jetpack seamlessly through a magic link. [#42600] -- Add a new social login form to the onboarding screen for first-time Jetpack connections. [#42561] - -## [5.8.0] - 2025-03-21 -### Added -- Introduce a new onboarding screen to provide clear, step-by-step instructions for new users connecting to Jetpack. [#42523] - -### Fixed -- Enable screen readers to read Boost score. [#42306] - -## [5.7.3] - 2025-03-19 -### Changed -- Update dependencies. [#38910] - -## [5.7.2] - 2025-03-18 -### Changed -- Update package dependencies. [#42509] [#42511] - -### Fixed -- My Jetpack: Add legacy properties back to `get_info()` function. [#42542] -- Product Interstitial Modal: Fix not running custom onClick events if a customModalTrigger was used. [#42527] - -## [5.7.1] - 2025-03-17 -### Fixed -- Allow screen readers to read stats. [#42275] - -## [5.7.0] - 2025-03-17 -### Changed -- Call Protect and VideoPress product data on the frontend and remove from window state. [#42411] -- My Jetpack: Move Red Bubble notifications out of myJetpackInitialState. [#42271] -- UI: Upgrade CTAs on the Jetpack Boost admin now opens a modal instead of navigating to the upgrade page. [#42309] - -### Fixed -- My Jetpack: Fix interstitial modal that was displaying the discounted price when user had already used up the discount. [#42349] - -## [5.6.0] - 2025-03-12 -### Added -- Add QueryProvider to ProductInterstitialModal for extendability. [#42307] -- Provide connection data to footer component. [#42000] -- Stats: Add highlights heading level as prop. [#42165] - -### Changed -- Load agency data from frontend instead of backend. [#42330] - -## [5.5.3] - 2025-03-10 -### Changed -- Persist cookies for dismissable banners longer than session. [#42305] - -## [5.5.2] - 2025-03-05 -### Changed -- Remove purchases from window state and query entirely using state query on front end. [#42154] -- Update package dependencies. [#42162] - -## [5.5.1] - 2025-03-03 -### Added -- Update interstitial modal to accept custom trigger. [#41621] - -### Changed -- Load product data requiring an http request async on the frontend. [#41965] -- Move the getting of product ownership data entirely to the frontend. [#42080] -- Move update to historically active modules to frontend. [#42133] -- Update package dependencies. [#42081] [#42163] - -### Fixed -- Fix skip to main content feature [#42042] - -## [5.5.0] - 2025-02-24 -### Changed -- Allow users to manage user connection in My Jetpack. [#41398] -- Move backup endpoint to product class. [#41730] -- Update package dependencies. [#41955] - -### Removed -- Script data: Remove unused property. [#41890] - -### Fixed -- Code: Prevent dynamic class properties. [#41857] -- Fix My Jetpack display for non-admin users. [#41398] -- Improve accessibility for product card actions with ARIA labelling. [#41896] -- Increase product card status contrast ratio. [#41896] -- Move product card status before action for screen readers. [#41896] - -## [5.4.5] - 2025-02-17 -### Changed -- Social: Update manage module link to point to the new Social admin page. [#41741] - -## [5.4.4] - 2025-02-12 -### Changed -- Performance: Cache scan calls if no threats are found. [#41614] - -## [5.4.3] - 2025-02-11 -### Added -- My Jetpack: Allow product notices to be closed with persistence. [#41617] - -### Changed -- Make entire row of dataview clickable when on mobile [#41643] - -## [5.4.2] - 2025-02-10 -### Added -- Add filter to unowned list of products. [#41312] -- Add mobile CTA to DataViews table. [#41554] - -### Changed -- Cache calls to backup API in My Jetpack. [#41608] -- Update package dependencies. [#41491] [#41577] -- Update the unowned section from a product grid to a product list. [#41312] - -### Fixed -- Fix bug where firewall was displayed as active if automatic rules were enabled but firewall was off. [#41560] - -## [5.4.1] - 2025-02-03 -### Added -- My Jetpack: Add red bubble and notice when pain plan is missing plugin. [#41013] - -### Changed -- Make Action Button component more reusable. [#41361] -- Replace Jetpack AI upgrade page with a modal. [#41301] -- Update package dependencies. [#41286] -- Update My Jetpack interstitial modal with new styles and layout. [#41300] - -### Fixed -- AI: Avoid using relative URLs in admin URLs to support sites where WordPress is installed in a subdirectory. [#41459] -- Code: Remove extra params on function calls. [#41263] -- My Jetpack: Fix secondary action of Protect card when plugin is not installed. [#41347] - -## [5.4.0] - 2025-01-23 -### Added -- Adding new modal based interstitial component. [#40945] - -### Fixed -- Fix bug where My Jetpack would throw critical error if only a standalone plugin is not installed. [#41192] - -## [5.3.3] - 2025-01-20 -### Added -- Add caching for the red bubble alerts for My Jetpack. [#41131] -- Add option for devs to reset jetpack options from My Jetpack footer. [#40943] -- Add sandboxed tag to My Jetpack. [#40971] - -### Changed -- Updated package dependencies. [#41099] - -## [5.3.2] - 2025-01-14 -### Fixed -- Fix bug where description doesn't show up on backup card in specific scenarios. [#40904] - -## [5.3.1] - 2025-01-10 -### Added -- Add new WAF status on Protect card for when WAF is unsupported. [#40880] - -### Changed -- Show an upgrade CTA anytime a product has an available upgrade. [#40900] - -## [5.3.0] - 2025-01-06 -### Added -- My Jetpack: Added a new status for when Protect detects threats on the site. [#40628] -- My Jetpack: Adds a red bubble and notice when Protect threats are detected. [#40719] -- My Jetpack: introduce feature cards for recommendations in My Jetpack. [#40639] - -### Changed -- Updated package dependencies. [#40705] [#40798] [#40810] [#40841] - -### Fixed -- Tests: Fix failure on 31 December. [#40781] - -## [5.2.0] - 2024-12-23 -### Added -- My Jetpack: add features as possible modules to the recommendations list. [#40492] - -### Changed -- My Jetpack: Add 'Needs attention' status to Backup product card when Backups are failing. [#40454] -- My Jetpack: Add red bubble and notice/banner when Backup has 'needs-attention' status. [#40512] -- My Jetpack: Plans section: Improvements to how we display plan expiration date. [#40575] -- My Jetpack: Protect card- Fixed Tooltip placement & content issues. [#40691] -- Unify connection flows in My Jetpack. [#40632] - -### Fixed -- Fix an issue where high posts counts would cause backend issues for the get_raw_post_type_breakdown function used in My Jetpack. Sites with over 100,000 posts can now have this query managed remotely. [#40635] -- Fix issue where backup card was not updating after site connection in some situations. [#40653] - -## [5.1.2] - 2024-12-16 -### Added -- Add AI to Complete feature copy. [#40577] - -### Changed -- Remove purchase related elements when Complete is on site. [#40554] -- Updated package dependencies. [#40564] - -### Fixed -- Fixed lints following ESLint rule changes for TS. [#40584] -- My Jetpack: fix animation flick on connection screen in My Jetpack. [#40533] - -## [5.1.1] - 2024-12-04 -### Changed -- Updated package dependencies. [#40363] - -## [5.1.0] - 2024-12-02 -### Added -- Add animation during site connection. [#40343] -- Add "loading" animation to recommendations step. [#40405] - -### Changed -- Fix usage of random() in animation to prevent build step from generating a different CSS file every time. [#40413] - -### Removed -- Remove experiment code. [#40406] - -### Fixed -- Fix My Jetpack recommendation card styling on mobile [#40370] - -## [5.0.4] - 2024-11-28 -### Added -- Added "Expired" & "Expires soon" statuses to My Jetpack product cards. [#39816] - -### Changed -- Social | Changed My Jetpack CTA for Social from "Learn more" to "Activate" [#40359] - -### Fixed -- Fix stats not showing sale discount [#40348] - -## [5.0.3] - 2024-11-26 -### Changed -- Update dependencies. [#38910] - -## [5.0.2] - 2024-11-25 -### Added -- Add bundles to recommendations and add interstitials for them [#40281] -- Add growth upsell to Stats and Social interstitials [#40236] - -### Changed -- Notices: do not display the Jetpack Manage banners for accounts enrolled into our agency program. [#40251] -- Remove creator card and update paid plan checks to account for growth [#40192] -- Updated dependencies. [#40286] -- Updated feature for stats in growth to 10K instead of 100K [#40312] -- Updated package dependencies. [#40288] - -## [5.0.1] - 2024-11-18 -### Changed -- Update dependencies. [#38910] - -## [5.0.0] - 2024-11-14 -### Removed -- General: Update minimum PHP version to 7.2. [#40147] - -## [4.37.0] - 2024-11-11 -### Added -- My Jetpack: update the recommendations section in My Jetpack to include a slider interaction for the cards. [#39850] - -### Changed -- Admin: Updating deprecation notices. [#39567] -- Updated package dependencies. [#39999] [#40000] [#40060] - -## [4.36.0] - 2024-11-04 -### Added -- Enable test coverage. [#39961] - -### Changed -- My Jetpack: Add experiment to the post-connection flow in My Jetpack. [#39902] -- Skip pricing page when connecting via block editor. [#39865] - -### Removed -- My Jetpack: Remove A/B test code in My Jetpack. [#39928] - -## [4.35.16] - 2024-10-29 -### Changed -- Components: Add __nextHasNoMarginBottom to BaseControl-based components, preventing deprecation notices. [#39877] - -## [4.35.15] - 2024-10-17 -### Fixed -- Fix the "Missing site connection" notice. [#39809] - -## [4.35.14] - 2024-10-15 -### Changed -- Update dependencies. [#38910] - -## [4.35.13] - 2024-10-14 -### Changed -- Only include `wp-polyfill` as a script dependency when needed. [#39629] - -## [4.35.12] - 2024-10-10 -### Changed -- Update Boost's pricing table to include latest feature list. [#39130] -- Updated package dependencies. [#39669] [#39707] - -### Fixed -- Fixed My Jetpack recommendations VideoPress product card not showing Purchase and Learn more buttons. [#39612] - -## [4.35.11] - 2024-10-07 -### Changed -- Updated package dependencies. [#39594] - -## [4.35.10] - 2024-10-02 -### Changed -- Internal updates. - -## [4.35.9] - 2024-09-30 -### Changed -- Fix parameters to allow for connectAfterCheckout flow from recommendation card [#39578] -- My Jetpack Welcome Flow: Display default recommendations upfront first, then offer optional survey for customized recommendations. [#39485] - -### Fixed -- Fixed a bug where the purchases and highlights APIs were being called without a valid Jetpack connection [#39522] -- My Jetpack: visual update to make the GlobalNotice component look better on mobile. [#39537] - -## [4.35.8] - 2024-09-25 -### Changed -- Update dependencies. [#38910] - -## [4.35.7] - 2024-09-23 -### Changed -- Get active element from tooltip button's document rather than the global `document`. [#39364] -- My Jetpack product interstitial: Don't show intro offer price if user is not eligible for the offer. [#39403] -- Send non-connected users to a "connect after checkout" flow [#39444] - -### Fixed -- Fix issue on interstitials show both buttons loading when only one is pressed [#39356] -- Fix issue where recommendations are showing slightly before the welcome banner dismisses [#39383] - -## [4.35.6] - 2024-09-16 -### Added -- Add new action myjetpack_enqueue_scripts [#39380] - -### Changed -- My Jetpack: Always show the purchase link regardless of the number of plans owned. [#39299] -- Updated package dependencies. [#39332] - -## [4.35.5] - 2024-09-10 -### Changed -- Updated package dependencies. [#39302] - -## [4.35.4] - 2024-09-09 -### Added -- Jetpack AI: add fair usage policy link to the Jetpack AI product interstitial. [#39281] - -### Changed -- Updated package dependencies. [#39278] - -### Fixed -- Jetpack AI: fix default_content filter so it doesn't enforce parameter type [#39276] - -## [4.35.3] - 2024-09-06 -### Fixed -- Optimize repeated requests for unavailable WPCOM. [#39218] - -## [4.35.2] - 2024-09-06 -### Changed -- Internal updates. - -## [4.35.1] - 2024-09-05 -### Changed -- Internal updates. - -## [4.35.0] - 2024-09-05 -### Added -- My Jetpack: add support for feature-specific handling to product interstitials. [#38661] - -### Changed -- Jetpack AI product page: add fair usage link on over quota notice [#39192] -- Updated package dependencies. [#39176] - -### Fixed -- Gracefully fail when user data fetch failed. [#39179] - -## [4.34.0] - 2024-09-02 -### Changed -- My Jetpack: show over quota notice and period usage counter for unlimited plans [#39129] -- We update Welcome Flow A/B experiment to test other things [#39154] - -### Fixed -- My Jetpack: change Jetpack AI post checkout URL so the redirect works [#39166] - -## [4.33.1] - 2024-08-29 -### Changed -- Admin menu: change order of Jetpack sub-menu items [#39095] -- My Jetpack: reflect tier filters properly on product class and UI. Fix little nuances with date constructor [#39074] -- Updated package dependencies. [#39111] - -### Fixed -- Don't consider user lifecycle status when repeating evaluation [#39069] -- My Jetpack: Fix the popover and active button of the Bboost card are overlapping [#39067] - -## [4.33.0] - 2024-08-26 -### Added -- Add context switching to videopress card from yearly views to monthly views [#38979] - -### Changed -- My Jetpack: AI product class to handle better disabling tiers [#38989] -- Updated package dependencies. [#39004] - -### Fixed -- allow user currency in My Jetpack pricing [#38977] -- Fix tooltip title for videopress card [#39030] - -## [4.32.4] - 2024-08-21 -### Changed -- Removed unnecessary WAF dependency in My Jetpack. [#38942] - -### Fixed -- Notification bubbles: avoid PHP warning when information is missing. [#38963] -- Revert recent SVG image optimizations. [#38981] - -## [4.32.3] - 2024-08-19 -### Added -- Add stat trends for videopress card. [#38868] -- Add tooltip to VideoPress card. [#38842] -- Add value to active card state on VideoPress My Jetpack card. [#38812] - -### Changed -- Updated package dependencies. [#38893] - -### Fixed -- Lossless image optimization for images (should improve performance with no visible changes). [#38750] -- My Jetpack: ensure product screens redirect to the correct post-checkout URLs. [#38704] - -## [4.32.2] - 2024-08-15 -### Changed -- Updated package dependencies. [#38665] - -### Fixed -- fix empty hrefs causing page reload [#38845] - -## [4.32.1] - 2024-08-09 -### Added -- Add value to the inactive state on the VideoPress card in My Jetpack [#38748] - -### Changed -- Update uses of useConnection to useMyJetpackConnection and improve typing in a few places [#38721] - -### Removed -- Tests: Removed react-test-renderer. [#38755] - -### Fixed -- My Jetpack: fix a bug where a user would see and infinite loading spinner when trying to connect Jetpack with one click in the Welcome flow. [#38813] - -## [4.32.0] - 2024-08-05 -### Added -- Add Tracks events for Welcome Flow [#38641] - -### Changed -- change Jetpack AI product page link redirect [#38691] -- copy updates [#38648] -- Modify the Google Analytics notice to notify of the feature removal. [#38701] - -## [4.31.0] - 2024-08-01 -### Added -- Update Welcome Banner and set async site-only connection [#38534] - -### Changed -- Fixup versions [#38612] -- My Jetpack: modify Jetpack AI product class and interstitial links [#38602] -- React: Changing global JSX namespace to React.JSX [#38585] - -## [4.30.0] - 2024-07-29 -### Added -- Async card update after async site connection [#38549] -- My Jetpack: add A/A experiment to test for correct random assignment and prevent bias in metric performance. [#38327] -- Show View button on product card along with upgrade cta [#38550] - -### Changed -- Final minor enhancements to the Protect product card in My Jetpack. [#38420] - -### Removed -- Remove functionality that hid 1 value on the backup card for mid-sized screens [#38441] - -### Fixed -- Include Jetpack Legacy plans when checking if user has social included with plan [#38516] -- Update all tracks to snake case, camel case is not supported [#38576] - -## [4.29.0] - 2024-07-22 -### Added -- Added the auto-firewall status to the Protect product card in My Jetpack. [#38332] -- Added the number of logins blocked to the Protect card in My Jetpack. [#38396] - -### Changed -- Connection Screen: Removed mention of Stats from the list of available free features. [#38328] -- Display My Jetpack products segemented by ownership. [#38283] -- My Jetpack: Updated social icons in the connection screen. [#38334] -- Updated statuses to make more sense in relation to ownership. [#38390] - -## [4.28.0] - 2024-07-15 -### Added -- Add scan/threat info to the Protect card in My Jetpack. [#38165] - -### Changed -- Protect card: Add the Last scan time (with tooltip) based on product state. [#38091] -- Updated package dependencies. [#38091] - -### Fixed -- Fix Learn More link destination when the site was never connected. [#38225] - -## [4.27.2] - 2024-07-10 -### Fixed -- Social: Fixed plan slug [#38222] - -## [4.27.1] - 2024-07-03 -### Changed -- Updated package dependencies. [#38132] - -## [4.27.0] - 2024-07-01 -### Added -- Add the Google Analytics deprecation notice. [#38078] - -### Changed -- Reduce amount of historically active modules updates by only triggering on activation of plugin is a jetpack plugin [#38065] - -### Fixed -- Fix an issue where the connection error hook was always resetting the notice [#38120] - -## [4.26.0] - 2024-06-27 -### Changed -- Jetpack AI: Add Title Optimization section on the product page. [#38072] - -## [4.25.4] - 2024-06-26 -### Fixed -- Move historically active modules sync to admin_init [#38041] - -## [4.25.3] - 2024-06-24 -### Added -- Add more default args for tracks events [#37974] - -## [4.25.2] - 2024-06-21 -### Fixed -- Remove the need for api requests in broken modules check [#37908] - -## [4.25.1] - 2024-06-17 -### Fixed -- Remove check for broken modules from red bubble connection check [#37911] - -## [4.25.0] - 2024-06-17 -### Changed -- Show tooltip on card hover instead of letter hover [#37858] -- Update connection footer to conditionally render warnings or errors [#37802] -- Update connection status card tests to TS [#37829] - -## [4.24.7] - 2024-06-13 -### Changed -- Updated package dependencies. [#37796] - -## [4.24.6] - 2024-06-11 -### Changed -- Conditionally show connection banner as error or info [#37707] -- Updated package dependencies. [#37779] - -## [4.24.5] - 2024-06-10 -### Changed -- Change codebase to use clsx instead of classnames. [#37708] - -## [4.24.4] - 2024-06-10 -### Added -- Add mechanism to track previously working plugins [#37537] - -### Changed -- Move PRODUCT_STATUSES to constants file [#37748] -- Send user to siteless pricing page if site is not connected [#37667] - -## [4.24.3] - 2024-06-05 -### Changed -- Updated package dependencies. [#37669] - -## [4.24.2] - 2024-06-03 -### Changed -- Update ToS wording. [#37536] -- Update CTA on A4A banner in My Jetpack. [#37628] - -## [4.24.1] - 2024-05-24 -### Changed -- Update Search to require user connection. [#37496] - -## [4.24.0] - 2024-05-23 -### Changed -- Improve the active/inactive statuses on My Jetpack. [#37217] - -## [4.23.3] - 2024-05-20 -### Added -- Add tracks events for dropdown on action buttons. [#37292] - -### Changed -- Updated package dependencies. [#37379] [#37380] [#37382] - -## [4.23.2] - 2024-05-09 -### Changed -- My Jetpack Agency banner copy change. [#37248] - -### Fixed -- Fix typo [#37303] - -## [4.23.1] - 2024-05-08 -### Changed -- Update dependencies. - -## [4.23.0] - 2024-05-06 -### Added -- Add a has_free_offering boolean on My Jetpack products. [#36710] -- Add copy for AI features on connection screen. [#37218] -- Define `$module_name` static property on `Hybrid_Product` (defaulting to null). [#37201] -- Jetpack AI: Add new badge to Featured Image video on the product page. [#37197] -- My Jetpack: Add errors from the connection package to the new notice component. [#36840] - -### Changed -- Change "go back" in My Jetpack interstitials to always return to the My Jetpack page. [#36685] -- Fix z-index issue and close action button dropdown when clicked outside. [#37169] -- Jetpack AI: Add featured image generation as a feature on the product interstitial. [#37199] -- Jetpack AI: Include video about featured image generation on the product page. [#37192] -- Updated package dependencies. [#37147] [#37148] [#37160] - -## [4.22.3] - 2024-04-29 -### Changed -- Internal updates. - -## [4.22.2] - 2024-04-25 -### Fixed -- My Jetpack: Fix issue where the TOS component was being called inside of a

            , throwing a warning that

            can't be a descendant of

            . This also fixes the font size of the TOS text. [#37034] - -## [4.22.1] - 2024-04-22 -### Changed -- Internal updates. - -## [4.22.0] - 2024-04-11 -### Added -- Add new tracking event for product activations made through My Jetpack [#36745] -- My Jetpack: add a way to connect a Jetpack site to WordPress.com asynchronously and update the message in the notice to reflect that. [#36771] - -### Fixed -- Ensure page_view gets loaded before product_card_loaded [#36790] - -## [4.21.0] - 2024-04-08 -### Added -- Add 'from' property to connection call to WP.com. [#36741] -- My Jetpack: Update Notice component to allow adding a loading text when an action is in a loading state. Add a new resetNotice action to NoticeContext. [#36614] - -### Changed -- My Jetpack: Show Boost score increase in Boost product card. [#36072] -- Updated package dependencies. [#36756] [#36760] [#36761] -- Update My Jetpack to use the Notice component from @automattic/jetpack-components and be more consistent with the other notices in Jetpack. [#36711] - -### Removed -- My Jetpack: Removed custom Notice component from My Jetpack. [#36772] -- My Jetpack: Remove red bubble from connection notice in favor of using the status of the Notice component. [#36773] - -### Fixed -- Fix cache on front end request for boost speed scores [#36700] -- fix tier upgrades in my Jetpack [#36705] - -## [4.20.2] - 2024-04-02 -### Fixed -- Fix Boost score inconsistency [#36679] - -## [4.20.1] - 2024-04-01 -### Added -- Change Phan baselines. [#36627] - -## [4.20.0] - 2024-03-29 -### Added -- Track active red bubble slugs on My Jetpack page view [#36611] - -### Fixed -- Better handling on product interstitial pages if the site already has a paid product [#36570] -- Shows Jetpack CRM card as active on My Jetpack if the plugin is installed and active [#36594] - -## [4.19.0] - 2024-03-27 -### Added -- Add red bubble to notices tied to red bubble notifications [#36543] -- My Jetpack: add a version of WordPress' Notice component to My Jetpack considering the context of how we use notices on that screen [#36551] - -### Changed -- Updated package dependencies. [#36539, #36585] - -### Fixed -- Fixed Jetpack Creator going to the wrong screen when the free version is selected" [#36547] -- Fixes some pricing showing twice by connecting sites that select a free option [#36533] - -## [4.18.0] - 2024-03-25 -### Added -- Hook into red bubble notification when bad installation is detected [#36449] -- Jetpack AI: add notices on product page for exhausted requests [#35910] -- Jetpack AI: add plans/tier information on product page and corresponding CTAs [#35910] -- Jetpack AI: add support and create post links on product page [#35910] -- My Jetpack: add AI product page view event [#36488] -- My Jetpack: add feedback link on Jetpack AI product page [#35910] -- My Jetpack: AI pricing table is skipped once the user has opted for the free version [#35910] -- My Jetpack: change AI product for tiered pricing table display [#35910] - -### Changed -- Add notice priorities to My Jetpack [#36438] -- Jetpack AI: address responsive issues on the styles [#35910] -- My Jetpack: AI product page styles update and responsive fixes [#35910] -- My Jetpack: change AI card action button target for upgraded users, point to product page [#35910] - -### Removed -- My Jetpack: remove Jetpack AI code added throughout the new product page project [#35910] -- Removed reference to Creator Network, which is being deprecated. [#36168] - -### Fixed -- Boost tooltips: fix typo in string. [#36520] -- My Jetpack: fix AI interstitial "remain free" flow [#35910] -- My Jetpack: fix interstitial event property malformed name productSlug -> product_slug [#36486] -- My Jetpack: fix spacing issues on the new product page [#35910] -- My Jetpack: new AI interstitial margin on admin page was messing with correct top spacing [#35910] - -## [4.17.1] - 2024-03-18 -### Added -- Add a loaded event for My Jetpack product cards [#36397] - -## [4.17.0] - 2024-03-14 -### Changed -- Rewrite My Jetpack hooks to Typescript [#36288] - -## [4.16.0] - 2024-03-12 -### Added -- Add a red bubble notification that shows if the site is disconnected [#36263] -- Add README to data directory [#36301] -- Add whitelist to show errors only for certain queries [#36261] - -### Changed -- Migrate Stats counts out of redux and into tanstack queries [#36195] -- Replace window state calls with util function [#36271] -- Rewrite My Jetpack utils to typescript [#36296] -- Show small stats card in table if large stats card isn't showing [#36136] -- Updated package dependencies. [#36325] -- Update query hooks for my-jetpack data" [#36257] -- Update useMyJetpackConnection hook to TypeScript [#36300] - -### Removed -- Removing redux store [#36256] - -## [4.15.0] - 2024-03-07 -### Added -- Refactor My Jetpack's backup related redux state to react query. [#35982] - -### Changed -- Migrate dismiss welcome banner to tanstack [#36199] -- Migrate global notices to context [#36201] -- Migrate My Jetpack's licenses query and state to react-query [#36029] -- Moved lifecycle stats function out of redux [#36205] -- Updating purchase related redux data to tanstack/react [#35994] - -### Removed -- Connected Product offer is not being used, removing it to clean up a bit [#36203] - -### Fixed -- fix a few My Jetpack bugs when main plugin is not installed [#36139] -- Intersitital tables were not visibly loading when pressed [#36236] - -## [4.14.0] - 2024-03-04 -### Changed -- Migrate My Jetpack zendesk state to react-query [#36028] -- Updated package dependencies. - -### Fixed -- Add registration nonce to connect screen in My Jetpack [#36133] - -## [4.13.0] - 2024-03-01 -### Added -- Add site lifecycle status guess to My Jetpack [#35815] - -### Changed -- Changed product plan checks on My Jetpack cards [#36046] -- Display different Boost card tooltip content based on score letter grade. [#35863] -- Improve consistency and fix bugs in product start and checkout flows [#35908] -- Instanciate the Boost Score API (new Speed_Score()) in My Jetpack. [#36080] -- My Jetpack: add Tracks events to connection section [#35804] -- Refactor react-query to reduce code repetition [#35990] - -### Fixed -- fixed the purchase query for the boost card [#36004] - -## [4.12.1] - 2024-02-27 -### Added -- My Jetpack: Add an info popover in the Boost product card. [#35731] - -## [4.12.0] - 2024-02-26 -### Changed -- My Jetpack: decouple Jetpack AI insterstitial component [#35836] -- Remove translation of product names [#35830] -- Updating purchases state to use data query instead of redux [#35697] - -### Removed -- Remove kebab menu on My Jetpack cards [#35829] - -## [4.11.0] - 2024-02-22 -### Added -- Adding accesible text for external links on connection page and footer [#35733] - -### Changed -- change status and action of My Jetpack cards when plugin is missing [#35718] -- ESlint: disabled redundant role rule [#35800] -- My Jetpack: add product slugs to click events on interstitials [#35740] -- My Jetpack: let tier data pass on quantity data to checkout process for proper checkout URL crafting [#35817] -- Updated package dependencies. [#35793] - -### Fixed -- Backup Card: made stats readable by screen readers [#35786] -- Connection Screen: make VoiceOver announce lists as such [#35736] -- Do not initialize My Jetpack when in Offline mode. [#35807] -- Fix wrong prop type passed to ConnectedProductCard [#35789] - -## [4.10.0] - 2024-02-19 -### Added -- Add Boost Speed Score into My Jetpack Boost product card [#35606] -- Add connection indicator for screen readers [#35714] - -### Fixed -- Improved accessibility of Dismiss button in Connection Banner [#35694] -- My Jeptack Connection: Make footer logos a list for better screen readers interpretation. [#35667] -- My Jetpack: add label for screen readers to connect page close button [#35712] - -## [4.9.2] - 2024-02-13 -### Changed -- My Jetpack: various improvements to the Stats card. [#35355] -- Updated package dependencies. [#35608] - -## [4.9.1] - 2024-02-12 -### Added -- Add My Jetpack link to standalone plugins missing it [#35523] - -## [4.9.0] - 2024-02-07 -### Changed -- Add pricing info for AI and CRM on My Jetpack [#35457] -- Update the description of some cards to better describe the product on My Jetpack page [#35428] - -### Fixed -- Fixes issue on My Jetpack interstitials where some prices are 1 cent off [#35492] - -## [4.8.0] - 2024-02-05 -### Added -- Add tracking info to the Jetpack Manage Banner CTA [#35378] -- My Jetpack: support redirect_to parameter on the product interstitial. [#35263] - -### Changed -- Update CTA copy on the connection banner to make it clear which type of connection we are going to request [#35401] -- Updated package dependencies. -- Update product cards on My Jetpack to always display the status indidicator. [#35377] - -### Fixed -- Fix issue where most products are not installing their standalone product upon purchase [#35399] - -## [4.7.0] - 2024-01-29 -### Changed -- Update the UpsellBanner to use the Card component from WP components. [#35223] - -### Removed -- UpsellBanner component moved to js-packages/components [#35228] - -## [4.6.2] - 2024-01-22 -### Added -- My Jetpack: add contact us event for Jetpack AI [#35136] - -## [4.6.1] - 2024-01-22 -### Changed -- Display Jetpack Protect product card for all users. [#35142] -- Ensure that interstitial tables go straight to checkout just like insterstitial cards [#35049] - -## [4.6.0] - 2024-01-18 -### Added -- Add hosting provider check. [#34864] -- Add Jetpack Manage banner. [#35078] - -## [4.5.0] - 2024-01-18 -### Changed -- Use blog ID instead of site slug in checkout URL. [#34976] - -## [4.4.0] - 2024-01-15 -### Changed -- add plan check to My Jetpack Akismet product card [#34905] -- Prevent new users from seeing JITMs [#34927] -- To avoid displaying the Welcome banner to every user, now we only display it to new users. [#34883] - -## [4.3.0] - 2024-01-08 -### Added -- Add a check to determine if a user is "new" to Jetpack. [#34821] -- Add a button that links to the connection screen to the Welcome Banner in My Jetpack. [#34858] - -### Changed -- Add a product interstitial in My Jetpack for stats. [#34772] -- Added an image to Social interstitial. [#34814] -- Update Akismet card on My Jetpack to go to interstitial screen when there is no API key. [#34817] - -## [4.2.1] - 2024-01-04 -### Changed -- Updated package dependencies. [#34815] [#34816] - -### Fixed -- My Jetpack: Jetpack footer links are now consistent with footers in rest of Jetpack screens. [#34787] - -## [4.2.0] - 2024-01-02 -### Fixed -- Show JP Creator as active when JP Complete is purchased. [#34806] - -## [4.1.4] - 2023-12-20 -### Changed -- Updated package dependencies. [#34694] - -## [4.1.3] - 2023-12-11 -### Changed -- Updated Jetpack AI interstitial to repeat the feature's list on all the tiers. [#34541] - -## [4.1.2] - 2023-12-06 -### Changed -- Updated package dependencies. [#34416] - -### Fixed -- Creator Card: fix typo. [#34478] - -## [4.1.1] - 2023-12-05 -### Fixed -- My Jetpack: Fix outdated product cache issue when enabling tiers. [#34428] - -## [4.1.0] - 2023-12-03 -### Added -- Added Jetpack Creator to My Jetpack. [#34307] -- Added the welcome banner to My Jetpack. [#34384] -- Display a "Jetpack Manage" menu item to connected users. [#34353] -- Updated connection message to only display if the welcome banner has been dismissed. [#34420] - -### Changed -- Updated package dependencies. [#34411] [#34427] -- Updated the API calls used for My Jetpack backup card. [#34197] -- Updated the CTAs in My Jetpack for more clarity and to avoid inconsistencies. [#34300] - -### Fixed -- Dashboard: Prevented display of any notices from third-party services. [#34364] -- Fixed checkout error while selling the unlimited Jetpack AI plan. [#34339] -- Fixed Jetpack AI bi-yearly plan on product card. [#34276] -- Fixed product card menus. [#34285] - -## [4.0.3] - 2023-11-24 -### Changed -- Changed Jetpack AI insterstitial contact link to Jetpack Redirect. [#34252] -- Link Jetpack AI Contact Us button to support email on interstitial page. [#34240] -- Removed hardcoded tiers from Jetpack AI interstitial. [#34259] -- Trust next tier provided by the Jetpack AI feature endpoint. [#34239] - -## [4.0.2] - 2023-11-21 -### Changed -- Replace usage of strpos() with str_contains(). [#34137] - -## [4.0.1] - 2023-11-21 -### Added -- Marked Jetpack AI as upgradable in the interstitial page. [#34215] - -## [4.0.0] - 2023-11-20 -### Added -- Display an "Activity Log" menu item to connected users. [#34174] -- Added direct checkout support for products with quantity-based plans. [#34177] -- Added Jetpack AI prices by tier to the interstitial page. [#34196] - -### Changed -- Replaced usage of strpos() with str_starts_with(). [#34135] -- Updated required PHP version to >= 7.0. [#34126] -- Removed condition from the backup undoable event call, this datapoint will be removed. [#33997] - -## [3.12.2] - 2023-11-14 -### Changed -- My Jetpack: Fix a bug causing PHP fatal errors when the Jetpack AI feature information is not available. [#34095] -- Updated package dependencies. [#34093] - -## [3.12.1] - 2023-11-13 -### Changed -- AI Assistant: Updated the text and image for the interstitial based on AI plan tiers. [#33981] -- AI Assistant: Removed the ToS notice from the interstitial page. [#34076] - -## [3.12.0] - 2023-11-08 -### Added -- Updated purchased state for VaultPress backup card on My Jetpack. [#33927] - -## [3.11.1] - 2023-11-03 - -## [3.11.0] - 2023-10-30 -### Added -- Add site data to unpurchased state of VaultPress Backup card to My Jetpack. [#33607] - -## [3.10.0] - 2023-10-23 -### Added -- Add jetpack-plans dependency. It will be use to restore the reverted change on #33410. [#33706] - -### Changed -- Update checkout flow to connect "After" checkout vs before (if not connected). [#33257] - -### Fixed -- Use Current_Plan to check/return from has_required_plan on VP product class. [#33708] - -## [3.9.1] - 2023-10-19 -### Changed -- Make has_required_plan return true (as it was before #33410) as a way to revert the change. [#33697] -- Updated package dependencies. [#33687] - -## [3.9.0] - 2023-10-17 -### Added -- Add has_required_plan method for VideoPress product class, check plan purchase exists for site [#33410] - -### Changed -- Updated package dependencies. [#33646] - -## [3.8.2] - 2023-10-16 -### Changed -- Updated package dependencies. [#33429, #33584] - -## [3.8.1] - 2023-10-10 -### Changed -- Changes title of the my-jetpack page to "My Jetpack" [#33486] -- Updated package dependencies. [#33428] - -### Fixed -- My Jetpack: fix fatal error [#33523] -- My Jetpack: fix Stats card status when not connected [#33521] - -## [3.8.0] - 2023-10-03 -### Added -- Display a new section on My Jetpack to display the stats of the site. [#33283] - -## [3.7.0] - 2023-09-28 -### Added -- Add a section to display stats from Jetpack Stats in My Jetpack [#33160] - -### Changed -- Redirect to a proper upgrade page for free license owners [#33297] - -## [3.6.0] - 2023-09-25 -### Added -- Add barebones infrastructure for querying jetpack product data. [#33095] - -### Changed -- Stats: link to purchase page within WP Admin. [#33227] - -## [3.5.0] - 2023-09-19 -### Changed -- Added support for upgradable products. Updated the Stats card to handle upgradeable products. [#33058] -- Updated Jetpack submenu sort order so individual features are alpha-sorted. [#32958] - -### Fixed -- My Jetpack: Add AI Assistant Monthly to required plan check [#33078] - -## [3.4.5] - 2023-09-13 -### Changed -- Updated package dependencies. [#33001] - -## [3.4.4] - 2023-09-11 -### Changed -- General: remove WP 6.1 backwards compatibility checks [#32772] - -### Fixed -- Stats: stop showing upgrade button for sites with Complete plan [#32870] - -## [3.4.3] - 2023-09-04 -### Changed -- Updated package dependencies. [#32803] [#32804] - -## [3.4.2] - 2023-08-23 -### Changed -- Updated package dependencies. [#32605] - -## [3.4.1] - 2023-08-22 -### Changed -- Connection: allow dismissing the IDC modal. [#32594] - -## [3.4.0] - 2023-08-21 -### Added -- Support Jetpack AI Yearly offering [#32130] - -### Changed -- Use the new method to render Connection initial state. [#32499] - -## [3.3.3] - 2023-08-14 -### Added -- Make My Jetpack the default WP-Admin page for Jetpack. [#32385] - -### Changed -- Start showing My Jetpack for authors, editors, and contributors [#32420] - -## [3.3.2] - 2023-08-09 -### Fixed -- Revert My Jetpack as first menu item. [#32384] - -## [3.3.1] - 2023-08-09 -### Changed -- Updated package dependencies. [#32166] - -## [3.3.0] - 2023-08-07 -### Added -- Add Identity Crisis screen modal. [#32249] - -### Changed -- Move 'My Jetpack' sub-menu item to first position. [#32240] - -### Fixed -- Fix IDC modal height issue. [#32316] - -## [3.2.1] - 2023-08-01 -### Added -- Add transient caching for zendesk jwt auth token. [#32140] - -### Changed -- My Jetpack: Rename the namespace of the JWT endpoint, and register it only when it isn't already registered [#32081] - -## [3.2.0] - 2023-07-25 -### Added -- My Jetpack: register jetpack-ai-jwt endpoint [#31965] -- My Jetpack: release Paid Stats to the public [#32020] - -### Changed -- My Jetpack: changed Stats features wording [#32046] -- Updated package dependencies. [#31999] [#32040] - -### Fixed -- Make Jetpack logo in footer smaller [#31627] -- My Jetpack: enabled Stats purchase flow returning to Stats Dashboard [#31959] - -## [3.1.3] - 2023-07-17 -### Changed -- Updated package dependencies. [#31872] - -### Fixed -- Hide connection owner information if the data is invalid -- Don't suggest user connection if user is already connected, but connection owner is invalid [#31618] - -## [3.1.2] - 2023-07-11 -### Changed -- Updated package dependencies. [#31785] - -## [3.1.1] - 2023-07-10 -### Fixed -- Make product card primary buttons links when applicable [#31611] - -## [3.1.0] - 2023-07-05 -### Added -- Added Jetpack Stats card to My Jetpack [#31589] - -### Changed -- Jetpack Stats: Enable skipping interstitial page [#31629] -- Updated package dependencies. [#31659] - -### Fixed -- My Jetpack: hide Stats card for standalone plugins [#31689] -- Organize product cards in list [#31606] - -## [3.0.0] - 2023-06-26 -### Added -- Add authentication to Zendesk chat. [#31339] -- Stats: add stats card to my Jetpack. [#31531] - -## [2.15.0] - 2023-06-23 -### Added -- My Jetpack: add Stats product [#31368] - -### Changed -- Updated package dependencies. [#31468] - -## [2.14.3] - 2023-06-12 -### Added -- My Jetpack: populate the Jetpack AI product with feature data [#31238] - -## [2.14.2] - 2023-06-06 -### Changed -- Filter out revoked licenses from the license activation options. [#31088] -- Updated package dependencies. [#31129] - -## [2.14.1] - 2023-05-29 -### Added -- My Jetpack: Add new Jetpack AI card [#30904] - -### Changed -- My Jetpack: Enable Jetpack AI card [#30988] -- My Jetpack: Update AI class to be product and not module [#30905] -- My Jetpack: Update AI interstitial background [#30992] - -## [2.14.0] - 2023-05-22 -### Added -- Added ability to purchase Jetpack AI monthly product [#30793] -- Added tier data to the Boost product to support a pricing table interstitial page. [#29931] - -## [2.13.0] - 2023-05-15 -### Added -- Added My Jetpack interstitial for Jetpack AI [#30543] - -## [2.12.2] - 2023-05-11 -### Changed -- PHP 8.1 compatibility updates [#30517] - -## [2.12.1] - 2023-05-08 -### Added -- My Jetpack: Add deactivate plugin menu action on product card [#30489] - -### Changed -- My Jetpack: Remove icon from plugin activation action in product card [#30458] -- My Jetpack: Remove manage option from menu [#30440] -- My Jetpack: Remove product card icon [#30441] -- My Jetpack: Set a post-checkout redirect destination on the "Purchase a plan" link. [#27693] - -### Fixed -- My Jetpack: Add check for product status before requesting stats [#30430] -- My Jetpack: Reload page after successful license activation [#30364] -- My Jetpack: Use a single column for the page title section [#30406] - -## [2.12.0] - 2023-05-02 -### Added -- Add API to query Zendesk chat availability and use it to conditionally display zendesk chat. [#29942] -- Add pricing table interstitial view for Jetpack Protect. [#29930] -- My Jetpack: Add product detail table component for comparing product tiers. [#29759] - -### Changed -- My Jetpack: Move logic out of Product Card component. [#30274] -- Updated package dependencies. - -### Fixed -- Fix activation and layout on Protect interstatial page. [#29525] -- My Jetpack: Keep product card action button disabled while installing standalone plugin. [#30346] - -## [2.11.0] - 2023-05-01 -### Added -- Added Jetpack Starter bundle post-activation screen and plan header [#30368] - -## [2.10.3] - 2023-04-25 -### Added -- My Jetpack: Add flags field in initial state [#30241] -- My Jetpack: Add Install/Activate menu actions based on the standalone plugin status. [#30153] -- My Jetpack: Add neutral color in contextual card [#30250] -- My Jetpack: Add side-effect action to request the standalone plugin installation on the backend. [#30143] -- My Jetpack: Add stats to VideoPress card [#30197] -- My Jetpack: Enable menu for all hybrid products [#30247] -- My Jetpack: Reload page after standalone action [#30221] - -### Changed -- My Jetpack: Connect the standalone plugin menu options so they trigger the installation and activation when clicked. [#30168] -- MyJetpack: set the Social standalone page as the default admin one [#30193] -- MyJetpack: Try to activate the product module after installing the standalone plugin [#30215] -- Updated package dependencies. [#30015] - -## [2.10.2] - 2023-04-17 -### Added -- Ad missing TOS in Jetpack interstitial. [#29683] -- My Jetpack: Add endpoint to install the standalone plugin for hybrid products. [#30045] -- My Jetpack: Expose information about standalone plugin status on My Jetpack product initial state. [#29977] - -### Changed -- Backup and Scan: redirect after checkout to Jetpack recommendations page if Jetpack plugin is active. Otherwise, redirect back to plugin admin page. [#29708] -- My Jetpack: Adjustments in Product Card [#30014] -- Updated package dependencies. [#30019] - -## [2.10.1] - 2023-04-10 -### Added -- Add Jetpack Autoloader package suggestion. [#29988] -- My Jetpack: Introduce absent_with_plan status [#29920] - -### Changed -- My Jetpack: Turn Search into a hybrid product to handle it as module and as standalone plugin. [#29946] -- My Jetpack: Turn Social into a hybrid product to handle it as module and as standalone plugin. [#29935] -- My Jetpack: Turn VaultPress Backup into a Hybrid product to handle it as module and as standalone plugin. [#29928] -- My Jetpack: Turn VideoPress into a Hybrid product to handle it as module and as standalone plugin. [#29918] - -## [2.10.0] - 2023-04-04 -### Added -- My Jetpack: Adds a selector, reducer and resolver machinery to fetch product stats. [#29764] -- My Jetpack: Enhance Product Card [#29787] -- My Jetpack: Introduce menu in Product Card [#29815] - -### Changed -- * Updated add-anti-spam path to add-akismet to match the product key - * Updated product interstitial component to accept an existingLicenseKeyUrl - * Updated product interstitial component to display a product name instead of a title where preferProductName is set - * Make is_plugin_active available from the API [#29598] -- My Jetpack: Change the bottom of My Jetpack screen to use single-column rows on small viewports. [#29844] -- Updated package dependencies. [#29854] - -## [2.9.2] - 2023-04-03 -### Changed -- Internal updates. - -## [2.9.1] - 2023-03-28 -### Changed -- Move GoldenTokenModal component to licensing package. [#29748] - -## [2.9.0] - 2023-03-27 -### Added -- Adds new route for Golden Token. Also the experience of redeeming one [#29644] -- Clarified when license activation fails that a user connection is required, added a link to complete the connection, and added functionality to redirect back to license activation when the connection is done. [#29443] - -## [2.8.1] - 2023-03-20 -### Changed -- Product Interstitial: Use browser history to go back, in case they're coming from somewhere outside of the app. [#29138] -- Updated My Jetpack wpwrap color to --jp-white-off [#29568] -- Updated package dependencies. [#29471] - -## [2.8.0] - 2023-03-13 -### Added -- Add Zendesk chat module to My Jetpack page [#28712] - -## [2.7.13] - 2023-03-08 -### Changed -- Updated package dependencies. [#29216] - -## [2.7.12] - 2023-02-28 -### Changed -- Update billing language [#29126] - -## [2.7.11] - 2023-02-20 -### Fixed -- My Jetpack: Fix button to add bundle in product interstitial component [#28984] - -## [2.7.10] - 2023-02-15 -### Changed -- Update to React 18. [#28710] - -## [2.7.9] - 2023-02-08 -### Changed -- Updated package dependencies. [#28682, #28700] - -## [2.7.8] - 2023-02-06 -### Changed -- Updated package dependencies. - -## [2.7.7] - 2023-01-26 -### Changed -- Use `flex-start` instead of `start` for better browser compatibility. [#28530] - -## [2.7.6] - 2023-01-25 -### Changed -- Minor internal updates. - -## [2.7.5] - 2023-01-23 -### Fixed -- Components: Fix usage of box-sizing across the elements [#28489] -- Fixes the price display for products with intro offers for the first month. [#28424] - -## [2.7.4] - 2023-01-16 -### Changed -- Updated package dependencies. [#28303] - -## [2.7.3] - 2023-01-11 -### Changed -- Updated package dependencies. - -## [2.7.2] - 2023-01-02 -### Added -- My Jetpack: Move VideoPress from Hybrid [#28097] - -### Changed -- My Jetpack: Move Search out of hybrid and deprecate Hybrid_Product class [#28113] - -## [2.7.1] - 2022-12-27 -### Changed -- Fix layout visual issues [#28055] -- My Jetpack: Move Backup out of hybrid product [#28022] -- My Jetpack: Move Social out of hybrid product [#28074] - -## [2.7.0] - 2022-12-19 -### Added -- Implement detached licenses redux store. [#27609] - -### Changed -- Updated package dependencies. [#27916] - -### Fixed -- Add translation context to Security product name. [#27920] - -## [2.6.1] - 2022-12-12 -### Changed -- Updated package dependencies. [#27888] - -## [2.6.0] - 2022-12-05 -### Changed -- Improve design of the error notice. [#27340] -- Updated package dependencies. [#27340] - -## [2.5.2] - 2022-12-02 -### Changed -- My Jetpack: Requires connection only if needed [#27615] -- Updated package dependencies. [#27697] - -## [2.5.1] - 2022-11-30 - -## [2.5.0] - 2022-11-28 -### Changed -- My Jetpack: rename Backup and Anti-Spam to new product names [#27377] -- Show My Jetpack even if site is disconnected [#26967] -- Updated package dependencies. [#27576] - -## [2.4.1] - 2022-11-22 -### Changed -- Updated package dependencies. [#27043] - -## [2.4.0] - 2022-11-17 -### Added -- Added Jetpack Protect to My Jetpack. [#26069] - -### Changed -- Updated package dependencies. [#26736] - -## [2.3.5] - 2022-11-10 -### Changed -- Updated package dependencies. [#27319] - -## [2.3.4] - 2022-11-08 -### Changed -- Updated package dependencies. [#27289] - -## [2.3.3] - 2022-11-01 -### Changed -- Updated package dependencies. [#27196] - -## [2.3.2] - 2022-10-25 -### Changed -- Updated package dependencies. [#26705] - -## [2.3.1] - 2022-10-25 -### Added -- Add a flag to indicate if the pricing is introductory with product price [#26982] -- My Jetpack: Support trial [#27033] - -### Changed -- Search: now support 38 languages [#27025] - -### Fixed -- Don't show old price when it's the same as new one [#27015] -- Search: check if free plan and new pricing is active using wpcom API [#27016] - -## [2.3.0] - 2022-10-19 -### Added -- Added support for free product and added free product for Search [#26808] - -### Changed -- Updated package dependencies. [#26883] - -## [2.2.3] - 2022-10-17 -### Changed -- Updated package dependencies. [#26851] - -## [2.2.2] - 2022-10-13 -### Changed -- Updated package dependencies. [#26790] - -## [2.2.1] - 2022-10-11 -### Changed -- Updated package dependencies. [#25973] - -## [2.2.0] - 2022-10-05 -### Added -- Integrate the new connection error message React component into My Jetpack. [#26485] -- Search: add post type breakdown endpoint [#26463] -- Trigger restore connection flow. [#26489] - -### Changed -- Updated package dependencies. [#26457] - -## [2.1.1] - 2022-09-27 -### Changed -- Updated package dependencies. - -## [2.1.0] - 2022-09-20 -### Added -- Added the ConnectionErrorNotice React component. [#26259] - -### Changed -- Updated package dependencies. - -### Fixed -- Fixed the tests for the Module_Product class by creating and using a sample, test-only module product class as the test subject instead of relying on Videopress or other concrete products. [#26227] - -## [2.0.5] - 2022-09-08 -### Changed -- Change VideoPress into a Hybrid product in My Jetpack [#25954] -- Updated package dependencies. - -## [2.0.4] - 2022-08-31 -### Added -- Allow plugins to override a product class. [#25891] - -### Changed -- Updated package dependencies. [#25856] - -## [2.0.3] - 2022-08-29 -### Changed -- Updated package dependencies. - -## [2.0.2] - 2022-08-25 -### Changed -- Activate plugins in normal mode to trigger plugin_activated hooks [#25727] -- Updated package dependencies. [#25814] - -### Fixed -- Licensing: do not enable the Licensing UI if My Jetpack cannot be enabled. [#25667] -- Search: increased search plan/pricing API timeouts to 5s [#25775] - -## [2.0.1] - 2022-08-23 -### Added -- My Jetpack: Add container for JITMs [#22452] - -### Changed -- Updated package dependencies. [#25338, #25339, #25377, #25422, #25628, #25762, #25764] - -## [2.0.0] - 2022-08-09 -### Added -- Make product cards compatible with disclaimers and add disclaimer for backup card [#25265] - -### Changed -- Search: changed to only require site level connection [#24477] - -## [1.8.3] - 2022-08-03 -### Changed -- Updated package dependencies. [#25300, #25315] - -## [1.8.2] - 2022-07-27 -### Changed -- My Jetpack: changed link used in ProductCard component to a button when the plugin is absent - -## [1.8.1] - 2022-07-26 -### Changed -- My Jetpack: changed button used in ProductCard component from WordPress to Jetpack default [#25146] -- Updated package dependencies. [#25147] - -## [1.8.0] - 2022-07-19 -### Added -- My Jetpack: scroll window to top on route change [#25086] - -### Changed -- Updated package dependencies. [#24710] - -## [1.7.4] - 2022-07-12 -### Changed -- Updated package dependencies. [#25048, #25055] - -## [1.7.3] - 2022-07-06 -### Added -- Display alert when we cant automatically install the plugin [#24884] - -### Changed -- Updated package dependencies. [#24923] - -## [1.7.2] - 2022-06-28 -### Changed -- Disambiguate redirectUrls vars [#24839] -- Search: use centralized search pricing API [#24795] -- Updated package dependencies. [#24826] - -### Fixed -- Search Pricing: fix pricing fetch issue before site is connected [#24826] - -## [1.7.1] - 2022-06-21 -### Fixed -- My Jetpack: Replace wordpress from PNG to SVG at Connection [#24793] - -## [1.7.0] - 2022-06-21 -### Changed -- My Jetpack: set products grid to 3x3 for large viewport size -- Renaming master to trunk. -- Renaming `master` references to `trunk` - -## [1.6.2] - 2022-06-14 -### Changed -- Updated package dependencies. [#24529] - -## [1.6.1] - 2022-06-08 -### Changed -- Reorder JS imports for `import/order` eslint rule. [#24601] -- Updated package dependencies. [#24510] - -## [1.6.0] - 2022-05-30 -### Added -- Added Social to My Jetpack. - -### Changed -- Make My Jetpack use the new Modules class -- Replace deprecated external-link variation by using isExternalLink prop -- Updated package dependencies - -## [1.5.0] - 2022-05-24 -### Changed -- Default licensing UI in My Jetpack to be enabled [#24396] -- Updated package dependencies. [#24449] - -## [1.4.1] - 2022-05-19 -### Changed -- Updated package dependencies. [#24395] - -## [1.4.0] - 2022-05-18 -### Added -- Added a filter to allow stand-alone plugins to add product specific activation routines [#24334] -- My Jetpack: Add Protect class [#24347] -- My Jetpack: compute Search plugin price based on price tier [#24337] - -### Changed -- Add tiered pricing copy and update titles for Jetpack Search [#24357] -- Hide Activate a license link if there is no user connection since user connection is required [#24251] -- My Jetpack Hybrid products: Install Jetpack if stand-alone plugin installation fails [#24335] -- Updated Jetpack Scan feature list. [#23863] [#23795] [#24361] [#24372] - -## [1.3.0] - 2022-05-10 -### Changed -- Adds from arg to connection screen in My Jetpack so that we can begin tracking connections originating from My Jetpack [#24283] -- Updated package dependencies. [#24189] -- Updated references to old licensing activation UI to licensing activation UI in My Jetpack [#24189] - -## [1.2.1] - 2022-05-04 -### Added -- Add missing JavaScript dependencies. [#24096] - -### Changed -- My Jetpack: remove duplicated site suffix stored on rawUrl. Use siteSuffix instead. [#24094] -- Updated package dependencies. [#24095] [#24198] - -### Deprecated -- Moved the options class into Connection. [#24095] - -## [1.2.0] - 2022-04-26 -### Added -- Added activation screen component to My Jetpack licensing page - -### Changed -- Updated package dependencies. -- Update package.json metadata. - -## [1.1.0] - 2022-04-19 -### Added -- Adds a skeleton for the licensing UI along with a feature flag -- Better error handling for when the WPCOM server is unreachable -- Introduced ConnectedProductOffer component - -### Changed -- Turn Search into a Hybrid Product -- Updated package dependencies -- use connected plugin list from the connection store and ask for an update after activating a product - -## [1.0.2] - 2022-04-12 -### Changed -- Updated package dependencies. - -### Fixed -- Fixed bug in checkout URLs for sites installed in subdirs. - -## [1.0.1] - 2022-04-06 -### Removed -- Removed tracking dependency. - -## [1.0.0] - 2022-04-05 -### Added -- My Jetpack: improve Product and Interstitial components. - -### Changed -- Bump My Jetpack package to major version 1.0.0. -- My Jetpack: align price boxes in the interstitial product page. -- Updated package dependencies. - -## [0.6.13] - 2022-03-31 -### Added -- Added tracking events to Plans section external links - -### Changed -- My Jetpack: tweak plans section typography and descriptive text - -## [0.6.12] - 2022-03-29 -### Added -- Add missing JS peer dependencies. - -### Changed -- Microperformance: Use === null instead of is_null -- My Jetpack: Moved in product icon components -- My Jetpack: Tweak plan sections styles/sizes -- My Jetpack: Update ProductDetailCard to use components and theme variables -- My Jetpack: Use components to render headers elements -- Use different URLs for manage and purchase links in plans section - -### Fixed -- My Jetpack: Connect Screen logos quality - -## [0.6.11] - 2022-03-23 -### Added -- My Jetpack: add error styles to the whole Product card component -- My Jetpack: Make whole Product card clickable - -### Changed -- Changed opacity of product icons to 40% -- Changed title -- Improved should_initialize method -- My Jetpack: remove dropdown from CTA button in Product cards -- My Jetpack: Use Text and CSS vars on ProductCard -- Updated Boost product icon for clarity -- Updated package dependencies. -- Updated package dependencies. -- Updated styles for each product card status -- Update organization and copy of the Plans section - -### Removed -- My Jetpack: Remove client code that allows to deactivate a product - -### Fixed -- Fix Plans section top margin for plan list -- My Jetpack: jetpack_my_jetpack_should_initialize filter now respected when set to true. - -## [0.6.10] - 2022-03-15 -### Changed -- Make Backup go through the purchase flow after activation -- My Jetpack: Use ThemeProvider instead base-styles -- Updated package dependencies - -### Removed -- Removed Beta badge from menu item - -## [0.6.9] - 2022-03-09 -### Changed -- Updated package dependencies. - -## [0.6.8] - 2022-03-08 -### Added -- Added connected plugins slugs to My Jetpack tracking events -- Add link to jetpack.com in the footer -- My Jetpack: Add jetpack features link on connection screen -- My Jetpack: tidy Product card component -- My Jetpack: update Spinner in checkout button - -### Changed -- Components: update attributes used within the Button component to match recent deprecations and changes. -- My Jetpack: Add Connected Product Card stories -- My Jetpack: Add connection screen footer -- My Jetpack: clean/tidy Product data -- My Jetpack: Remove Layout component -- Only consider Backup product active when the plan is purchased - -### Fixed -- Fixed Backup flow when Jetpack plugin is active -- My Jetpack: align CTA buttons of My Jetpack overview -- My Jetpack: Fix button height in the Interstitial pages - -## [0.6.7] - 2022-03-02 -### Added -- Add My Jetpack action link to all Jetpack plugins -- My Jetpack: Handle cosmetic tweaks -- My Jetpack: Pass requiresUserConnection to ConnectionStatusCard - -### Changed -- Refactor and simplify Products class -- Updated package dependencies. - -### Fixed -- Disable browser cache for My Jetpack -- My Jetpack: fix products card section story -- My Jetpack: fix stories for the Interstitial pages - -## [0.6.6] - 2022-02-28 -### Fixed -- Re-doing 0.6.5 to fixup bad release. - -## [0.6.5] - 2022-02-28 -### Changed -- Tweak product card box model. - -### Fixed -- Use namespace in My Jetpack REST Products class to prevent fatal - -## [0.6.4] - 2022-02-25 -### Added -- Activate Jetpack plugin from Extras product card -- Added list of connected plugins to Disconnect dialog in My Jetpack -- Add Extras interstitial page -- My Jetpack: Handle cosmetic tweaks -- My Jetpack: Remove global notices when in my jetpack page -- My Jetpack: set height of Jetpack logo in the footer -- My Jetpack: tweak height of Jetpack Logo -- My Jetpack: update Product logos - -### Changed -- Disable My Jetpack on MS -- My Jetpack: compress extras product image -- Updated package dependencies. -- Update My Jetpack dashboard headline - -### Removed -- Remove unnecessary line from My Jetpack Initial state - -### Fixed -- Fix beta badge for RTL languages -- Handle plugin activating from Hybrid class -- Memoized RecordEvent from usAnalytics hook -- My Jetpack: Fix post activation url redirect -- My Jetpack: Move product list that requires user connection to selector -- Products::get_products_names should not load all product information -- Update automattic logo href in the footer - -## [0.6.3] - 2022-02-22 -### Changed -- Updated inline documentation - -### Fixed -- Use Jetpack namespace to fix fatal error - -## [0.6.2] - 2022-02-22 -### Added -- Add Beta badge -- Add Extras class -- Apply coupon discount to Product price when it exists -- Filesystem write access to the initial state -- Improve Product detail layout -- Implement close link on layout nav -- Prevent calling activation hook when activating backup - -### Changed -- Bump package versions. -- Improve My Jetpack link styles -- Improve redirect process after installing Product -- Fix interstitial CTA buttons layout -- Move from isPressed to CSS vars -- Redirect connect user to connection interstitial -- Point the link of the Manage button of CRM to its dashboard -- Redirect to post_activation_url after product activation from iterstitial screen -- Remove conditional loading depending on constant -- Send My Jetpack version with fired events -- Update the layout of interstitial page when it has an upgradable bundle - -### Fixed -- Check if product is active before checking if requires plan -- Fix check for plugin installation for hybrid products -- Fix click on security and add click on My Jetpack interstitial -- Fix clicks on VideoPress and CRM cards -- Fix Product prices -- Make Scan and Search interstitials install the plugin -- Purchases: ensure we retrieve translated version of active purchases -- Return needs purchase status for products module - -## [0.6.1] - 2022-02-16 -### Added -- Add Anti-Spam Product detail card -- Add CRM interstitial page -- Added wpcom plan slug to product info -- add manage and post activation urls -- Add Scan product: interstitial, route, data, etc... -- Add Security Product Bundle -- Add VideoPress data -- Add VideoPress interstitial cmp. Story. -- Add `#/add-videopress` route -- Change the discount value for all Products to 50 -- checks and activation for Security Bundle -- consume prices dynamically -- Do not show Porduct price when plan has required plan -- Finish Backup, Anti-Spam and Scan interstitial pages -- Fire Tracks Event when user clicks on Product Interstitial Back link -- Install proudcts from interstitial pages -- Make click on Fix connection show connection route -- package version to main class -- Pull product discount from wpcom -- Refactoring -> add icons component -> tweak icons for interstitial pages -- Register `#/add-anti-spam` route. Connect with interstitial page -- Restore Security bundle card in the UI -- Set default values for product data in the client (custom hook) -- set product status as error if active and requiring a missing user connection -- Set properly the checkout link for Products -- Set unlink=1 in the checkout URL when the user is not connected -- Tidy Product stories -- Update Backup product data. Tweak Icon. -- Update mock data for Search product. useMyJetpackNavigate() hook - -### Changed -- Adapt Scan actiavtion behavior as it is not a module -- Add global notices for activate/deactivate failures -- Add manage redirect -- Apply correct style for CTA buttons on Interstitial -- Avoid usage of 100vh on layout -- Fix setting height of the Product title in the detail component -- Implement is fulfilled handler for product resolver -- Improve global notice layout -- Reduce size of boost and search interstitial images -- Update structure with Layout component -- Only pass a productUrl if the product is not free on interstitial pages -- Only show the deactivate action when it makes sense -- Pass slug prop to event firing on product card button actions instead of name -- Remove unnecessary payload from request to activate or deactivate a product -- Replace renderActionButton function for ActionButton component -- Updated package dependencies. -- Use useMyJetpackNavigate when it's worth it - -### Fixed -- Fixed connection check labels and error message -- Fix upgradability for anti-spam and backup products -- Remove duplicted Icon in Product Card story -- Use key when looping through product detail icons - -## [0.6.0] - 2022-02-09 -### Added -- Add Boost interstitial cmp. -- Add has_required_plan to product info and implement method in Search -- Add Product princign harcoded data -- Add search product data -- Add title and features to products data -- anti spam product class -- Connect Boost card with the interstitial page via /add-boost root -- Fire Tracks event when clicking CTA button on product Interstitial page -- Fire Tracks event when clicking Manage button on product card -- Fire Tracks event when clickn Add link on My Jetpack product card -- Fire Tracks event when showing the Interstitial page -- Implement Free price for Boost product -- Implement Search product interstitial -- Introduce basic Layout component. Add GoBackLink component -- Introduce ProductDetailCard component -- My Jetpack: Add Connection screen -- Pass slug prop to ProductCard' -- Plan verification for Backup and Scan -- Restore getProduct() resolver -- Set the checkout URL for the Product detail component -- useCallback for functions that are bound to onEvents - -### Changed -- My Jetpack: Implement handler of connection notices -- My Jetpack: Update notice style and implements redirect for connection route -- Support multiple possible folder for each plugin -- Updated package dependencies - -### Removed -- dependency from search package - -### Fixed -- Fix My Jetpack's reducer for SET_PRODUCT_STATUS -- Fix the redirect URL value -- Show discounted price in Product Detail card -- typo - -## [0.5.0] - 2022-02-02 -### Added -- Added plugin installation functionality -- Adds Tracks events for activating and deactivating products from the product cards -- Fixes stories for ProductCard component -- Handle when site is not connected -- Initial approach to handle global notice -- Module Products -- My Jetpack: Add route handling -- My Jetpack: connect all product cards with data provider -- My Jetpack: connect Backup product class with Product class. Add long description and features fields. -- My Jetpack: handle redirect when no connection #22549 -- My Jetpack: reorganize stores by project/name -- Remove getProduct() resolver -- Support to Hybrid products -- Tweak dimms of the Product card status -- Update data handling - Implement request status in Product Card -- User connection requirement to product info -- uses the Plugin Installer package to safely checks plugins statuses - -### Changed -- Added filter for disabling the initialization of the My Jetpack package -- Build: remove unneeded files from production build. -- Do not initialize My Jetpack id site is not connected -- My Jetpack: Refactor styles to use layout components and theme provider -- My Jetpack: Update gap between product cards section -- Pick API root and nonce values from a new window var myJetpackRest -- Updated package dependencies. -- Update plugin absent status consistently - -### Fixed -- added unit test mock for new global variable myJetpackRest -- Fix tests -- Fix unsafe optional chaining. -- my-jetpack: fix tracking event when activating product -- Resolved minor code standard violation after implementing a stricter rule. - -## [0.4.0] - 2022-01-25 -### Added -- add API endpoints to manipulate products -- Added css module for My Jetpack Plans Section -- Added useAnalytics hook -- Added Visitor class for status regarding the site visitor. -- Add first data approach -- Add Products and REST_Products basic classes -- Adds very basic product cards section component to my jetpack -- My Jetpack: Add Product Card component -- My Jetpack: check user connectivity before to hit wpcom side -- My Jetpack: Implement data handling for enable/disable products -- Removed endpoint plans superseded by purchases - -### Changed -- Add Connections Section wrapping the Connection Status Card to My Jetpack -- Build: do not ship raw files in production bundle. - -### Removed -- Remove unused usePlans() custom react hook - -### Fixed -- Fixed svg attribute strokeWidth for Boost Card - -## [0.3.3] - 2022-01-18 -### Added -- Added redux store specific to my-jetpack -- Implement plans list properly in the PlansSection -- My Jetpack: Add scripts for JS tests -- My Jetpack: Include wordpress components as dep -- Reduxify purchases data - -### Changed -- General: update required node version to v16.13.2 -- Properly style the Plans Section according to proposed design -- Updated package dependencies. - -## [0.3.2] - 2022-01-13 -### Added -- My Jetpack: add story to `` component -- My Jetpack: first PlanSection implementation - -### Fixed -- Rename method enqueue_scritps to enqueue_scripts - -## [0.3.1] - 2022-01-11 -### Added -- Add devvelopment testing instructions to doc. - -### Changed -- Updated package dependencies. - -### Removed -- Remove use of deprecated `~` in sass-loader imports. - -## [0.3.0] - 2022-01-04 -### Changed -- Drop isRegistered and isUserConnected params from ConnectionStatusCard component -- Switch to pcov for code coverage. -- Updated package dependencies. -- Updated package textdomain from `jetpack` to `jetpack-my-jetpack`. - -## [0.2.0] - 2021-12-14 -### Added -- Added Connection Status Card to the page. -- Janitorial: add watch command to the plugin. - -### Changed -- Adapt to new layout components. -- Build: do not ship scss and jsx files in production build. - -### Fixed -- Build minimized JS for the production build. -- Fix JavaScript i18n strings. - -## [0.1.3] - 2021-12-07 -### Changed -- Updated package dependencies. - -## [0.1.2] - 2021-11-30 -### Added -- Janitorial: create mirror repo for the package. - -### Changed -- Remove now-redundant `output.filename` from Webpack config. - -## 0.1.1 - 2021-11-23 -### Changed -- Updated package dependencies. - -## 0.1.0 - 2021-11-17 -### Added -- Created package - -[5.9.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.9.0...5.9.1 -[5.9.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.8.0...5.9.0 -[5.8.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.7.3...5.8.0 -[5.7.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.7.2...5.7.3 -[5.7.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.7.1...5.7.2 -[5.7.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.7.0...5.7.1 -[5.7.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.6.0...5.7.0 -[5.6.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.5.3...5.6.0 -[5.5.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.5.2...5.5.3 -[5.5.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.5.1...5.5.2 -[5.5.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.5.0...5.5.1 -[5.5.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.4.5...5.5.0 -[5.4.5]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.4.4...5.4.5 -[5.4.4]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.4.3...5.4.4 -[5.4.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.4.2...5.4.3 -[5.4.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.4.1...5.4.2 -[5.4.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.4.0...5.4.1 -[5.4.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.3.3...5.4.0 -[5.3.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.3.2...5.3.3 -[5.3.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.3.1...5.3.2 -[5.3.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.3.0...5.3.1 -[5.3.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.2.0...5.3.0 -[5.2.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.1.2...5.2.0 -[5.1.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.1.1...5.1.2 -[5.1.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.1.0...5.1.1 -[5.1.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.0.4...5.1.0 -[5.0.4]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.0.3...5.0.4 -[5.0.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.0.2...5.0.3 -[5.0.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.0.1...5.0.2 -[5.0.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/5.0.0...5.0.1 -[5.0.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.37.0...5.0.0 -[4.37.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.36.0...4.37.0 -[4.36.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.35.16...4.36.0 -[4.35.16]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.35.15...4.35.16 -[4.35.15]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.35.14...4.35.15 -[4.35.14]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.35.13...4.35.14 -[4.35.13]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.35.12...4.35.13 -[4.35.12]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.35.11...4.35.12 -[4.35.11]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.35.10...4.35.11 -[4.35.10]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.35.9...4.35.10 -[4.35.9]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.35.8...4.35.9 -[4.35.8]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.35.7...4.35.8 -[4.35.7]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.35.6...4.35.7 -[4.35.6]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.35.5...4.35.6 -[4.35.5]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.35.4...4.35.5 -[4.35.4]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.35.3...4.35.4 -[4.35.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.35.2...4.35.3 -[4.35.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.35.1...4.35.2 -[4.35.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.35.0...4.35.1 -[4.35.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.34.0...4.35.0 -[4.34.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.33.1...4.34.0 -[4.33.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.33.0...4.33.1 -[4.33.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.32.4...4.33.0 -[4.32.4]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.32.3...4.32.4 -[4.32.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.32.2...4.32.3 -[4.32.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.32.1...4.32.2 -[4.32.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.32.0...4.32.1 -[4.32.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.31.0...4.32.0 -[4.31.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.30.0...4.31.0 -[4.30.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.29.0...4.30.0 -[4.29.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.28.0...4.29.0 -[4.28.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.27.2...4.28.0 -[4.27.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.27.1...4.27.2 -[4.27.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.27.0...4.27.1 -[4.27.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.26.0...4.27.0 -[4.26.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.25.4...4.26.0 -[4.25.4]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.25.3...4.25.4 -[4.25.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.25.2...4.25.3 -[4.25.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.25.1...4.25.2 -[4.25.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.25.0...4.25.1 -[4.25.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.24.7...4.25.0 -[4.24.7]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.24.6...4.24.7 -[4.24.6]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.24.5...4.24.6 -[4.24.5]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.24.4...4.24.5 -[4.24.4]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.24.3...4.24.4 -[4.24.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.24.2...4.24.3 -[4.24.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.24.1...4.24.2 -[4.24.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.24.0...4.24.1 -[4.24.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.23.3...4.24.0 -[4.23.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.23.2...4.23.3 -[4.23.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.23.1...4.23.2 -[4.23.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.23.0...4.23.1 -[4.23.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.22.3...4.23.0 -[4.22.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.22.2...4.22.3 -[4.22.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.22.1...4.22.2 -[4.22.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.22.0...4.22.1 -[4.22.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.21.0...4.22.0 -[4.21.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.20.2...4.21.0 -[4.20.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.20.1...4.20.2 -[4.20.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.20.0...4.20.1 -[4.20.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.19.0...4.20.0 -[4.19.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.18.0...4.19.0 -[4.18.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.17.1...4.18.0 -[4.17.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.17.0...4.17.1 -[4.17.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.16.0...4.17.0 -[4.16.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.15.0...4.16.0 -[4.15.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.14.0...4.15.0 -[4.14.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.13.0...4.14.0 -[4.13.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.12.1...4.13.0 -[4.12.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.12.0...4.12.1 -[4.12.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.11.0...4.12.0 -[4.11.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.10.0...4.11.0 -[4.10.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.9.2...4.10.0 -[4.9.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.9.1...4.9.2 -[4.9.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.9.0...4.9.1 -[4.9.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.8.0...4.9.0 -[4.8.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.7.0...4.8.0 -[4.7.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.6.2...4.7.0 -[4.6.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.6.1...4.6.2 -[4.6.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.6.0...4.6.1 -[4.6.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.5.0...4.6.0 -[4.5.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.4.0...4.5.0 -[4.4.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.3.0...4.4.0 -[4.3.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.2.1...4.3.0 -[4.2.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.2.0...4.2.1 -[4.2.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.1.4...4.2.0 -[4.1.4]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.1.3...4.1.4 -[4.1.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.1.2...4.1.3 -[4.1.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.1.1...4.1.2 -[4.1.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.1.0...4.1.1 -[4.1.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.0.3...4.1.0 -[4.0.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.0.2...4.0.3 -[4.0.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.0.1...4.0.2 -[4.0.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/4.0.0...4.0.1 -[4.0.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.12.2...4.0.0 -[3.12.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.12.1...3.12.2 -[3.12.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.12.0...3.12.1 -[3.12.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.11.1...3.12.0 -[3.11.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.11.0...3.11.1 -[3.11.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.10.0...3.11.0 -[3.10.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.9.1...3.10.0 -[3.9.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.9.0...3.9.1 -[3.9.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.8.2...3.9.0 -[3.8.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.8.1...3.8.2 -[3.8.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.8.0...3.8.1 -[3.8.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.7.0...3.8.0 -[3.7.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.6.0...3.7.0 -[3.6.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.5.0...3.6.0 -[3.5.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.4.5...3.5.0 -[3.4.5]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.4.4...3.4.5 -[3.4.4]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.4.3...3.4.4 -[3.4.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.4.2...3.4.3 -[3.4.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.4.1...3.4.2 -[3.4.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.4.0...3.4.1 -[3.4.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.3.3...3.4.0 -[3.3.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.3.2...3.3.3 -[3.3.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.3.1...3.3.2 -[3.3.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.3.0...3.3.1 -[3.3.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.2.1...3.3.0 -[3.2.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.2.0...3.2.1 -[3.2.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.1.3...3.2.0 -[3.1.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.1.2...3.1.3 -[3.1.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.1.1...3.1.2 -[3.1.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.1.0...3.1.1 -[3.1.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/3.0.0...3.1.0 -[3.0.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.15.0...3.0.0 -[2.15.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.14.3...2.15.0 -[2.14.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.14.2...2.14.3 -[2.14.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.14.1...2.14.2 -[2.14.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.14.0...2.14.1 -[2.14.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.13.0...2.14.0 -[2.13.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.12.2...2.13.0 -[2.12.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.12.1...2.12.2 -[2.12.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.12.0...2.12.1 -[2.12.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.11.0...2.12.0 -[2.11.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.10.3...2.11.0 -[2.10.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.10.2...2.10.3 -[2.10.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.10.1...2.10.2 -[2.10.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.10.0...2.10.1 -[2.10.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.9.2...2.10.0 -[2.9.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.9.1...2.9.2 -[2.9.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.9.0...2.9.1 -[2.9.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.8.1...2.9.0 -[2.8.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.8.0...2.8.1 -[2.8.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.7.13...2.8.0 -[2.7.13]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.7.12...2.7.13 -[2.7.12]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.7.11...2.7.12 -[2.7.11]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.7.10...2.7.11 -[2.7.10]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.7.9...2.7.10 -[2.7.9]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.7.8...2.7.9 -[2.7.8]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.7.7...2.7.8 -[2.7.7]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.7.6...2.7.7 -[2.7.6]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.7.5...2.7.6 -[2.7.5]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.7.4...2.7.5 -[2.7.4]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.7.3...2.7.4 -[2.7.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.7.2...2.7.3 -[2.7.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.7.1...2.7.2 -[2.7.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.7.0...2.7.1 -[2.7.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.6.1...2.7.0 -[2.6.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.6.0...2.6.1 -[2.6.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.5.2...2.6.0 -[2.5.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.5.1...2.5.2 -[2.5.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.5.0...2.5.1 -[2.5.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.4.1...2.5.0 -[2.4.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.4.0...2.4.1 -[2.4.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.3.5...2.4.0 -[2.3.5]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.3.4...2.3.5 -[2.3.4]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.3.3...2.3.4 -[2.3.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.3.2...2.3.3 -[2.3.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.3.1...2.3.2 -[2.3.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.3.0...2.3.1 -[2.3.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.2.3...2.3.0 -[2.2.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.2.2...2.2.3 -[2.2.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.2.1...2.2.2 -[2.2.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.2.0...2.2.1 -[2.2.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.1.1...2.2.0 -[2.1.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.1.0...2.1.1 -[2.1.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.0.5...2.1.0 -[2.0.5]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.0.4...2.0.5 -[2.0.4]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.0.3...2.0.4 -[2.0.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.0.2...2.0.3 -[2.0.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.0.1...2.0.2 -[2.0.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/2.0.0...2.0.1 -[2.0.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.8.3...2.0.0 -[1.8.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.8.2...1.8.3 -[1.8.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.8.1...1.8.2 -[1.8.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.8.0...1.8.1 -[1.8.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.7.4...1.8.0 -[1.7.4]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.7.3...1.7.4 -[1.7.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.7.2...1.7.3 -[1.7.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.7.1...1.7.2 -[1.7.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.7.0...1.7.1 -[1.7.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.6.2...1.7.0 -[1.6.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.6.1...1.6.2 -[1.6.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.6.0...1.6.1 -[1.6.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.5.0...1.6.0 -[1.5.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.4.1...1.5.0 -[1.4.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.4.0...1.4.1 -[1.4.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.3.0...1.4.0 -[1.3.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.2.1...1.3.0 -[1.2.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.2.0...1.2.1 -[1.2.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.1.0...1.2.0 -[1.1.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.0.2...1.1.0 -[1.0.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.0.1...1.0.2 -[1.0.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/1.0.0...1.0.1 -[1.0.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.6.13...1.0.0 -[0.6.13]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.6.12...0.6.13 -[0.6.12]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.6.11...0.6.12 -[0.6.11]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.6.10...0.6.11 -[0.6.10]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.6.9...0.6.10 -[0.6.9]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.6.8...0.6.9 -[0.6.8]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.6.7...0.6.8 -[0.6.7]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.6.6...0.6.7 -[0.6.6]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.6.5...0.6.6 -[0.6.5]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.6.4...0.6.5 -[0.6.4]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.6.3...0.6.4 -[0.6.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.6.2...0.6.3 -[0.6.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.6.1...0.6.2 -[0.6.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.6.0...0.6.1 -[0.6.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.5.0...0.6.0 -[0.5.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.4.0...0.5.0 -[0.4.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.3.3...0.4.0 -[0.3.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.3.2...0.3.3 -[0.3.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.3.1...0.3.2 -[0.3.1]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.3.0...0.3.1 -[0.3.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.2.0...0.3.0 -[0.2.0]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.1.3...0.2.0 -[0.1.3]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.1.2...0.1.3 -[0.1.2]: https://github.com/Automattic/jetpack-my-jetpack/compare/0.1.1...0.1.2 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/apple-36e00ab02e6fed6f51dd.svg b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/apple-36e00ab02e6fed6f51dd.svg deleted file mode 100644 index 7b1aacc6..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/apple-36e00ab02e6fed6f51dd.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/apple-92dacafad84e79708a74.svg b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/apple-92dacafad84e79708a74.svg deleted file mode 100644 index 478fcfd9..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/apple-92dacafad84e79708a74.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/boost-9e9a227e7e7280d0aa85.png b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/boost-9e9a227e7e7280d0aa85.png deleted file mode 100644 index 4e7cb0cec7511dde82ee434bb247b66487f551b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146014 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%0A?7}vp3RFtqt^@0ufRxqvcpe8aoJ|zqm?Y{!*^=< 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�pW-;rCs9BjJ#kpgqxK!F=-Qrx;;P$)1M7Jwvj?Q2{)4#=x*UB)1`wi z)RXc^8aYBvkY|PDVdncW3MJ_9@~xnrr62k>dKg_Sc7ZR24;RDs`=Nm;&nrV-m!A<0 zYoL4_E-9n(VaEw%=A(^tP6PP7a3IlYB^jpSQ*!uR{Mg`g@xT54`k{F%{yZ<}5mWfQ z2KY1?d~OaR=rb06ssi0iTPXee$nAkoOcmH_V`Y0G~Hf@R@q#F&`+O z&h`MG5cIKic7sn@;nUTGwQ33eaej>}c4n!4f`y2d z0S5tg9vT>f!uv1DuwET!e(=puz?s%C$&ma>*)@Nv=63@StUhbJ>5cEt81rcWpJ9g& zOq9=ipI6s@rX6c}{q;8vSHq{PBoSvSpU1xz_^eOHqgT}J>Z^uN=T7)AlNmmjHn}xi zxFa{c3xg7FYQQ6bk0lT?O_31rIMRFEcy`h}+!37j5BfW)u=SHty%SW8%J#`51Qa%}|mv@k3wp znKPX0Zt*g1*w`N6^FrB^Z=ihgwcs;f6F$E^TY9}p`M@royLkR>!bi51fys6Qk1ltWi(1f!%BK|IQ|=1!o~WwOsHPU8A@>;U0X#qn zuqUZNf6xI+w24k)p=N-Ck!5waAZQABn1E5ZhKLT}McQDnfEHG_lEl3-hNxrvp-JYj z0jXyAG5DB|rC?F^c>OYq@UW+f$T#mdaWo@G=lJf5%$;EI^wTTq8uwHuwHMCGFqXTV2P&;NS7 zp~@!$e6ZF&Fhcl%JzVTE_zbaTp)YkYPQp!_m84RUpURy`py8V-3`Y?-VSoTyq9n28 zoP;PrzW_Wiq>O8VAP?KpD@Y?j+}WNam}$HbidiGj$5z#>P&C8Xlswf(?fBMNwX^-7bcByx|?7g@cUuJTH8_?;|e{J{za1AK2+a>6M+jVs~C-9jDd@Rin z^kK-SR0SVy>dHk-wTrlPWNHC{pBT>92?T+lesp1rp&U$OELf?OE5r%HIf&;3y2JrJ zaRGA+n4T0829*oumORo>~?7d?)Z3 zkxps2zoVmH;3LajeOo)>bK=5fh0j=@`CUV%ds6VxfDbP8SMYQF0Q6vi3&hCzZYuyI z7qgdBK|@DMRSfPLMV7A(D}};#cVBT=h?zcOhEIY~{5=@wW7z&3+u#M{V3Hb~K_e!U z5*0cmln%0XwA>v;JE}J`CY^x{XP9RoB~Xw;ll@egwKmPZaJT7>>WPpb@82}rKM##g6q`8 z^5(-$Ik;kVX`o!5SzlQi=$th8ls9%LpPm!D;N!x_GMvkufDcbAZ|9Eh7!975#U1KN zCC0KBbq;!PiM(Jc;D9C|gT5&ksvcVhBbySvCj^hqBW4nOlAKM)4tZS}^QAN}lPa=d7K9N^EG~dcyF7908Q?h8kFSRq|qu1YlwQpRl!bxALKBb1(40 zy^W2%uxD@Z`Lw3;`OpGBH%^v@5epIsuGQ@1U?D^g%3!yU^2b77EDo!*3=6KAzlMTl+LtK5m@i@WI6&r4BG<=jAwA4TMiV z-w-|xmf8{WfgR`sI=Xw8_1rGl!%dvpwS1*0Hc^}$0(`CjK0pub{>dJ|XMEHn&SK_u zx$?0phE~6jK8dZlQ$~P22A^DoYh2QlF^fEdJ4zQ&2Hq4^iLwKoklTYEbqt^b+^Abt zV3bGW%r+S7SEty62#|eRV#e_l2;(INZrix0RKFu5)rScKm0({2hd@jNV1;x6IJz~lpvGSy)0f)mJ z^zL=SSPuiT2g~DDFe72ihQ*i}T4r>Z+uM@@ITMHi{+zZqL6(H0%9#SQeG0cN>|?J8 zp>SuJd01?JI>#hOyCoQn&_?{wUZa!228&d<)h@=9m_a8K8z(ShPX zpRlJivOET7>e2?_qtfT=$M-7+pRn9jDs}A)`OM4!KECHN7X$-Sc^E*E7TBZfPq-mM z%p#|hLKZ1*HCh&1vW)`H6Ii!%jZx@Uhx}b_Iu2ispCU}9CR*f63 zhzuEgnEXTb@IpyseHKbH&PJ4a_T6X7r>5{BbEtQ+SXG1Md1m-{(jh-?;LNPUr$&Ie z_2n<7=hHbo2Wy`q=y^W%;qyBvpEP`ahL`4Zf9x*aoIEnCDbBO9!|lWmUXz*{O(#2t z`ud79(`!pzMPbSS;A6J6RSlm@1|N`zUYEhAILL!zq8Ps@qA;*UEW1m~mfE2@=m%L1 z4f;`#Ed>BV?r6w|ySH)*7w8#4LI*J*J-ai>FqW>OsG!M*I<9_v2aZHFKQ#lWS&-A+Dzv^x<(i&uC;$*x0^%&#Cul zHvA&&V2#8=G;6|#{?}Y%x2v=ZJ|E`u*T0(W@BQP#JI(V}LjGF5?cj+6dT3y!r?azf zdF|o)mC;i;etn(r`5N%a^^D)YPx$m$zGm>LagYUu@WM-i z4=n{BSpDNGZZv?8tahDwEe)SvwH$c!s{=jp;Jpq_a@KQ}UkUIz-qSHTw75Q6?wT4X z7mEW|cPO8Zr2roWeFz_5iuHVY!bT^ah!Y$yz{k8Bz(!cb_Ubf}+;L{s`huQo* z4m}q5wCq$qpTC}lPs^+n5^L$XEy_f>1!~FPI@t^p<#T7UYpEzM*ThUw;B#LC&R>H) zTbC<$F6@Ml(5IM&kMB6Jdwbvy7PTz9$MlOT3vwjp8OIFpM1@!ZM9D+o*nm#SK@p+H z5Sj|hc@S%DR?)NaX4f<;DbBHcV!;h$MNDeOZfPhJ7_O+ z6+Vv>F909ko^CZY4nX>xsDe-D4z~+-0IOZcdrr5z%G2N~$xLpFD%Y+Y>yNo+Klux;zha|&d+pa(aiRjVw>WVI^6D!;j zN)HP^d=LRvN^mb%p&(aqgmlt5n69MJ^{ya%^rED>4dH`fJTdPM({bltR=!x9>t5#T z83*MXfjhboN59J4G0*xTe{hMbk2)j0hBi9BU!TYg$D8Ve48(lQoI4qCy9ioXowY9f2%qX| z@C~Yq)v{e6A*nnx{ry`$F914NTDaTY+uOacuyA*AadCNdeGQq)5C8D+!GlMSo@~AM z>Dlt}5B`H3okRG@d8NNN2*J}l*l_|7x{i3W=&1a)U$nGH31@@PDU@lxR4fXDCJa7X zUkiM$7JIG;e5S`Qi1wL)_!*d)f!u+WN3bikSn6-$)`M_LO)kg!f!v2qX~B|Se$197 z>mcHS50DW8#X<7O6?`#n7(URtT_AVxiiEOm$G{Q95a#fUhxTFLcxV3=)=@yphihM8 ziW=b)emvk5ZFET)4?bHnGN*H2@9pw9Pqx;&96}9_OD23w#V9Ch<@eYCr#%OJW*Z%8 z`V#k92!0NpK6$+Pp#5V9rTlx-i5@xVxT`$UH#R!{*Z=j)_kMeJbp5|Ld|)5`K=n@R z4aSO0`1~M0{5Ifo95J7+VsT__bfhHkDUWSzne2J;c=YH2Y;$dG{r>Xu z{ngdg`}Z$P`p=c|rO}DLQw6Um~Re%gBDqR>*fs-5dECyyX z?$z$i%*yRx_R&P(CYmr0M5rfxBbb#3z4k`jH$~`4v)WRCz>#pb=Gsjg2g}7k1{akS|WRH#Cx6h6&yfMeyc zqm-?o%Y2y8F#aW@Bb@Z$joEa-l6lq*Vma%u6v@H`dUfLm~JaOFd~7b`x4VA?oM zrXKfko`gPAV~c?v)`;SID8py4YZhwEJ5qS$F{?jPc3F@?@rZzIaX{n!({N;+YRTg6AXjTJCX7^(7kg1{d)@`ubmj@6Q+%< zOY*6sM=qbeFf()e_Jw1nd*Z+se|h8#CF0AG^xJb0|0Bar&liPXoT+0Z3A3${M)siZ zz>cxT=G=&r#L(&KVMLIbsyTx3pJX7!ytra~L-06u&A@bPxZ zF?@bq%7;O0;xk|W`Ct3y&-~4wfAfuf6YW*-IeHHG*tmD1yYT+|A+5cDPbh*|JQc

            e&ZVqqS6l>=!HBV1I^c-cAGrLDmTO6^WIwcyy4C+`16-c`7BOcm^*U$ z#Gd5EBL@z=I6kpw`Xz%;!IcAZvsO_9_*@!axm3c3)Kakr_?YtPa{lNPM=uvS>H=yx z740x3;f?$tH_QCpjJ{DhLGk4H)8#`qi1aY=^!TJ%n&;fX#>|7gJTdt6V3_@w`P6kF z>(~w>RGCEYNb&5hysZlJ4C*AR*^a&J;Zp6y+3$3qM*@vvoKK7&j2^3`kLD&QAFw;j z<^wOPt7oh`BEkqctesn%&zT`(c?f*I6M_s^!RPIR5N3U@;Uo?DSZ|uURoH0kB0*3)CGKW>@x0zOQ4O8BE62sHwWEgw-x7;dyO71 zj=|~3RSa{2oky4nw^?D8F22Y;c{EHcxu54e3bp8;lUrDGPAO-9;aVetI#p{6rf}gD z#?-S$I#_+m*2-|m-rV4n$yzKL^%~9!FN8ylsHVX*q+c@pDQ(PKs@YPnd~{cgi4R}Z z@Ok=U8IaT;yH>#`j1RUUd|dh*yf*pv8>dh2KfeFKvnz8af{=M}e7=Ma$EleJK0A&@ z$1cIg*b_d2Pq)P%AMR>3rePZrN?UgFY9$`e-Y{wuNaIlUzkKF|E+rQh0h!m7ZZ-+Aol`2e5e$up|(vl;N2I)1CL&yCT^#8E7~Yj6Lm~ zBnIHq^Q?7TUW6W-F}Z8ZfHvfmngS9?95i;fle2E;J?SAVKBkE}_H2^N(UsdQLpC-e zGA%SK1RDZT>x24=X`9yZ*rr=;RxO>lV$!g;rzL|L;OzoFF@c&eB=*)VWmxONQqa$q z;W-x71$?A^Hnmsa7+WHH*5YS*IDC%p9DvW87q3M&A8*vYH<*<#zqGYCI~Qy|(-ZTd zS8^Xd2M%0%(1*_sxA`ofe5{7N9k_rG_U52`rp>I=YDHP?jvz9k%-v;&6*Zu6tFP}c zFLwZl-9fz&-;-oWm(s`8wkb>a5lbNLl+iwn!aLSs<<@7!lG(4pjr?Ay9}G~`2ZB3k zhbLNX?9j@NMa7jlruKFdJN@J1wt*w4d@7G!OpWTABhU^pI8VhYM({!7tQ|}0U$HnG zK1-VfAJxmyu4K_)3_gnU`S%W=4`^M1@(IGnEJe@!)}Q|Apa0g^-u~eH`IF+`%nG48Dq6EjGpELG4mPv-d7bFqiD%B<2$(4-B8I>>K#wbN54RjN;e&bS4K!$+;z zeZdWtJseT^tYuHEe3+VCNEP%jRvo!Oj+T#`U}}tsU)zp<4`ISC= ze*LwBf61`p!zz$1U)#OKVhq3W^FQ-5fA^nzX6c^k73efRE+1UpQ;< z2}ATL;iEEthM!go7j^-mG*L^Outjn7bId^i2P>T6zRpu4iCpOcE4e~;dM%G=PP|@W z=6rJFbmrglBZjdAJ2n3RAw*G29VZNrcN~qX?yM?5VUM{7w)ibuCg~2~BQ2D)Adk&E zr~x#>1>_lVz%RR|^{-%5S)9ugRt0K?!>6izyl!eAuUI~L8L_Fy^1JVTEck4T;q&!Z z7t72pJ8}ixGZxfR$gKG17Gt>0vb)^qb3CMX;q5wm*W2a*pNkG3l#h2UJztCiC49Q= z7S+Ve0TkteD@vwlA8J=HlGMSl=NZ9=HssR*ysUn z{7QKZ74r#`%r4Fy^0ktlO=WPhF(t97m-)s(#9_(>4Gwj`k7rD~0zl3!dsJU_aN?IH z=aPG+4a%_5PKu6%4AmG@_v9p{XDNfY0wK0+>!l(bqt>^pO8Qi!mNv!S{I~{Z`LWon zFL_FR!;V*_^5M}c`0zzNeV#n-aOy7rpEr*LL(kN~XP$XxR~XMsEiHy@)KHCM=eC{O zpM7?_p(jau-2k5#sZDtFNPO%PeBN=J&*iyT`51hxm{>P9`6&L*Hc1@ah0OvFt-t-;b_YTsT&cQ1|=A^ck*0H-S%sg-h5HTf8Bi_BDEaxLDNVD+6 zb(r$OepAa8jm26*MF%f^ITSv-H-6d@Rvrgw^z9l7pIxs-@OkyPDIa?e!e=tTXXmrK zV))4BGkfO&CZ7PGb_IMGefZ?byzD(bCp7OQSJRrb<6Tni47(_kT^9odaXhTyM`AYU zEQcmeo16t7J8$I<9{&b;WNU7c6V@XD(ZJ)#GW7T^aD}W2{=dqWg^A8wP81AQI%)Y* zW**cLzIc?;$iYYCsjj5zQ**Gx3i#G}yS5BWmdfD^Xwp?_s@{yOg!Ew&cc><;Ub|!O<)K8w~ zJOO;{2bDgi4i`$Yz~cpe`2R|L&{Z|z)Am!M_8cHv1%})nWNv!ok?r`MM?SIC-wo4nceP(C z;j_@HfRDd8ba~UjUVGl`Jk%CVlKH@%QYetnH9y};+Y0MRvZRQ&A)hn{59)fHcK`<2 z>+*Gh4=|&rx#aewJ%#uYiNeL#JXbV$_mM;`F?yxmVUc37vwEqB9xVoja5K1L)WB!+$E3aM;qx}fuJ6Rk$L!57 z`O|{WwHQ8IcLAS0y?pwn!N;VJ!RMV=`CI`$(Xq>(DY7f<=w2`f$o_v&LJvQihc;}upA4|K&K%WC!jC`pCmI(AYPww4X zvH?zkIk1RW9r~6UgJfJL+ED7HT-m@P?WZ+&#^;HB(Md84&oVI^a&l*nt#fovSTg&_ zJ4w&6$4Cr_o>gZvA}5fRUL;FbPmhAtVmz|yFtSJV_TWNuo!Ql?7uKp(FkzmZYRAHhe;ry|su z)ik5}>WZj!LkKyh* zW$=0QK=4UUFWeV=EUn#)J^?+Zew;oApI)#iQ%pngc6Na<%4Cl$%!=;=MS!OCOL5CS zxw*ZZUIZj&rKMS^rMcJB;Dp7DkvYwfMp%AqTgEy&PkL?ehqQ44*5*5oU4C)gFk#y% zP0Eg%)ShekiL9))ip6WxUF{M+aSw|I@n`+i(t69@R{NAjH07Q`uVmGv08e}jn{Iw64M z=_1+(F7`NUk?ujV7i4nSXptl(eSBq)k!1>X(z1zZGU^e|P8t!YNdwZ>pSq-cM46>w zGG}pk9}AyYfF4^t%`rKom{^7K`4vBP8GN3!`Ai`dV;Ov;}2;I6)Q`owjW0f=_{*GWMr6>aO-O ztu$&_%B8u|N9>8R}RRq;P|D$ozlNfg1g=2muaPn=}y2d;XaKB zGStya%jS@$4nNiKLCEOJqFU^*h~X29n=r~{bltiN51VC#Cd_AY7<^tnbN=n;Kl#=F z;zpmJe|7)W*yQv0@cH;bkUc;C(U0yP2R;j{;3MH9`1BhFliBWn$2ht0TZd&CUrd}2 z9I{bbn{jJ(ZL7?7In48%LSn9IkUE^Na_5lfBj1-jrhDk70zSDC%6h^f|9fHG?kSnV zzC^z2bIqh@M!~|5aA4bjvk$xJvVd3;S+)k zZ=Sz$e+_&PK8ye#Yf&LDR|i{Kji{mxJADqWI;+_ZH#< zhw!Z1mgAW-2mlo#N#Ca#V3YFUgeTuuSS!F8Ao;eV>e6l76M5)V0;9r>`o6bFE=B)X zx37^eqZ+4{`qY@AQX=aboa3>c^4U_aeE5DIXHH$*^~%o{@OgC?eJg5|5AfNucK|*|=4NltECl$tw<|s2@VRs;7@UDmY;g9? z>BKq%VtlnZabaLWA#-{XjU!=_muXtE_*g`0>MKId*fH05Kib}668+hv(uJ~)A$?xj{uOf7_ygrkbj@+4VoXY{E->=S#+E3ixpNVxMOLK3$#G^aEu_9UrCB-w@d=D@sEl+xWW7 z?=ti_Pc5O{ftu)U7*TSC6Duql0H3IVUW4t;)$m!ai85SXqkI;_y0U3|HGFt6SZ@-1 zs=JjA!pA#sZ5cbbZJ=$}%V*|JhGQ3TKL6_M4op7!k$U*N)K@-7XU_%rJaG72nLltv z>>;sq&e&t)L>PVz@F_Z3wZV>hK&0pfZxsl9)OfuUrFmM4mREgGoDoTGcfpH{J2r6~ zGlq0>XN`SqG0h>%ZrHZ70&##(2|3I?9JcI}Q(6NTyImAl=Hnjox(Ee{} z_vE&n4xe{XJ^?V$B`T5ukliEqbj?{|6(BlPHrFz;O-*4`DhrYPN$s~K4+^< zs-6&Tc6KW+$>TQjhtCX(5?O=MH^dBPdCplXD?$l7VXZ=|DN=}6X`41~+3bd%UOD(z z^FDF7sJfv{KdNQeDG)@ODPaOWKux=>I2NuwAOw8cJw+lmB(W6H(}1pB6~9|`IUnfb zh*_>6$Z{2sv}L(&npYHU`1Gk$2cInmWp9q)bLLlo&xIGRS1O;W5T|BeTPr!?K1zm0t{^gn@@t_)$95t-h{6w|CY`us>LI_k6m(aUXiH$vMC-bzl@c~ zWe&$HU!s0&Fz30j6IMK!*#fZ?mlP{^um^}Gz$Y!bwIj&D4Mpw+A3W`LVQC*5O2_cr z(j+Y$UL#jP9{kjF?J@$fXaIn8yp4xdEu+24oH%PPUIx5I}ryValqCp8YDUcw(cDOAMw=>)_e0m4sBNd|cs$QvH!u1lf3{65R_%ni-C zO&LD`oCLfAX8MPK4p)v`MjbM}$a_WisIHhF#VBiNh-GlFB&$NDomq`k0r~247w<-; zwmWWz8=OIp*s}z4s-m6QS2@|2Hw+&(TsBo6Mew<{7Cztp*2@N;Z##Vc;j4#Q>Rh2X zpBO%4+fhCh@Hsd0&@9ddA1NQXyDH$*#=z{e9PDK-JN*IiYUklYEmhV%^)|-53^R}_ zzT!6K8z{oJzGonSU{9ffxLw8%spLGfuG}QclsJICK|H10A@o#|SKDb+N*_-VY16+H z@?dEn`HrO$KEC#0+XnRvv}-MW93H^OmTRH2Sds+lY`pG9OrfWF@|vuM&w$P6lk@NH z!{Gc6Upc(>>S}LS1fQ*;XJD&@j~5dQ0nPzFGvSE!3P}?xbX{&H};li?u%KMa^1#!8%lh0p)x)d5~Lc8SXHSz?C$y1gytc4G!smP}# z5u}xHGEDhYJgny;ne(*JGc{@RaQK`Oe17Td3)etTY4ZU-O9gy_y?KIT*BbcD{y_ns ziBp5et`GnXdu#|kDzNTGA5R#^{3^-gU=*EYK+|0t#%Yk0?v_TnV?2t0gpBTx2I;PW zNJ@irj&A8Lfq|q9q?^&r=nWL#z5B3l`>=nUbD!(FuirfgDK{W%SDSbyXK4FM)oSOo zrmC?pW(N6fpY$=OFL04?R+HXExu}w%>lF!;7&-}}m6hG05hHUMBxCKkHkMoQOiv2g z@Rq3dZ{ASAAB6xBk-qT^>^|C32neQnOzAit*U z%e;tmi&C|}SXq5*%KqqSS2I4Qi;NM&f6tmO4g>~_*l+oIwX%{P7M%XG=9$0B;h1~R z$NX_pOl~MpIyyd6otK}P#4)PQ%Cb7UbA>d!cVq30!Ux1`0< z1+yXYr4;G)fBFdL+Yk@u*tbbkZK!Udn>#u z78IW(h@%`LX_Bm2K84b4C?XxkFgstWt)6aOD#;7O5m|l?(;xYB$f<0jX}r0w%pxC) zjuAs=Q{N3LH6(oRL{DPN(JBM~c9)p{t#;17Mk(@n5^^U!haNWG=l`WC!fs**5BF{y zfAnjp_M4Y0wwQP(->fQKM-z-5C0pwfVcxw};quYWgLvL%w|#;@9gRY^O; zoRq2=pFLzgV8c*)A8Bp*;na8O>pIBxAAhx)a|$UT1))|?GvV&IL{0G|6b4! zC+P^dK-8%0SkjwY2HXtQUG+WP{h%DG`*Fl3{!BpRyOh93 zcn$;p|BsfN^<5ng`NI1*^rA8K8(()oLo{K~w%0b~3loQCaK8cqIFcWgs+l#}7af&? zTlbh#$!G>;E4*Li*QL>MP5>DF=(~)W@Ojq34=VKQ?wg8DllFQq)n@l?zuINIy;(g# zM9yuj$y6e;uW~R&laIbGg81x4suO;TZi(W42qS!m>-{)j= z`nBJMMwsAI9B|b3MR)KhY>o_6A_c}!Xm8w)|Kz+MP5R95dOdM=f={<%7Pm<$e}b&q z7pBw=d0FYwA-dx2MJ?O)q5X9N6qG>;wZh?DDP=%X1XQ2(b_5t^moAN@DD@V2kA^wn z>=#-ST?MVEq+;>*yxBMUv2Y>uI~t32ViQs>JXE>5K#5Bm6hsYX75+83;8ZnvN}DTQ z7&?GjEI_B(k++1-P`(A^e4L*#jehU>6-w!;;)F z8L$gSm#+ue-o7XEmo%-YCgkiD?m>uaJhJ-_Wt(Z|y^e-q{z?l(4_p)a^GWDR(PYSf zhI_KP{<25ubf8||%-Uff5URkMNAmV7iB6)8ff1KyDiST*L()a&f>m_7y|Kn0Aw-w9 zP>*f1XMU~|d|y8R1f7{M3_wqADDoyafQu9;75i4hbvvcab3fvj!^O@GF<7+2qItBU zFm_up2pev^`Fw^zL}uKKS1Kwc+B|u-(SroAQN)o$t1xK!xe5cokZm9Gbz8Unfe=#v zDrQYH17m@zv9y50NwnYKxAdAs8Uy2CtMoF$Eh)tTT%|1EA;m^tyqlLN)9U^_= zkTC)(9|IjqYVkXZTQkIy3qf>d;EKA)YTqd=2n&*j~myu3B$fYZ1_Zg!JwFP_)M@joqHF70zC{@LcTIoNzr z*Rk$;3^)rE}v;ePBJiwj=KvAWbR3#S8&N)x5L~ST2T=E5p zq#?pau%g~le3;77%GO%ZSLii)!b}Y-IMoj3AnNs@S}_w{6#fdI_MR*vX-j9I?R+4` z)ZgfKTMNT6XhblV&T*l$&qkSfi{`7cC30+TBxR$r*npWIB^yshrN40f5;6{RX1D1g z0{~lqOSU5$MNyo5N#>^h7i*Gu;A6>6)Y6f-qG)>76e0UhC%YW<$DtRwymt}nImkt@ z@y!O&i>hNa!=Mfd{jIx0ebCRcI)G-R5IWcZxXE<(%1fvAuf@*i-fJp z(NMCk?ko+7ET5pVh}ddf_)C{u|!=F9LBO z)THjUhHaJRr#@&ad4}oP+-T7xYGgqdam(ifo)RF zdpYLX@u)>7?{4U8QGGO*4l(#sdotA(8ieg2KyP;HD%)7|^RA5>@sj0MA2mZr7v_Di zs1!_y(BlOoug;<8Utu@abs+mo90XP#6b&Ts(Zj;^#wj?TU|;8NgTV_bD=6D9*;|o{ zkJvCk2zf$j6s94~U(5{987<+}d7MJb(N*#n+<2fe9N1xMRAR$NrYWKYq17B!(7$V< z#T3n~&6jm+y5@CaQPBnzMPoF>YJy@=YQ9xDIUvCT8q>GpjEf=k6la zh4E5Jve4oW^qK{f`Lkx5Jjwir+>;UsVx9-QF^=$to(F`6CJ&(m{jVZEh?hs+)$*92 zl6y)C92dY%q3%j*;EKJ=G!^mOPwUhB4T~6szrPQ3K9N2e&DiKE+af!PQrSRLg>`xP zE8Tv4E)~IrreB`N1LHn_@n*nr0F-s?x~Yo?8F_!5CN>>SIeuj*Wi%rjNmJvTb@KI9 zSzGc);ij6~IL>1xBICu=JPrbYav}a6f4v&VKK=KdVpG$TZ3xB2zl@2{DS)pf;$U=mPs_rjj`_uE(ohqa+eD=OEqek_F z3OWy>c$;X$Fg~~+sypE&T9D)$jM#?WrC*&V_u z_I$1wg%(dl?^6L9cqMs#F4T8Rbg35B((B*D*mGYNtPS|I#(@YZf|kdky4bk#ptIQk z9Mpt%_leptO9!4W z(VL9~Oe5y5d*sq{B z!$?9bS`6?pYGF~OTLZBn%<$pJQuTB1aHuRc$Ut_DgyBKtRO0A*hErt_=a6Ej6DeNphuoHFJhEZVb5oP_)&4ws_h$G#SMWybDcuYE70A6W?sh>`Ar#Mk z)%n>Hy?9tPyT5h@65pS3_oesbotc5>OPBy_H89a9*mLc`AuTp-eK_>uc>B}Vtfr1m z&mu$5v^=VbaP8cG^WiowYI%*rxn)~%qJzIa_IEcwy4p&fWBmKus(z)d$2@Ij{Xu}a zriz`qfG@PER?{{xYmw6Lqc?&jLZ>u^XeY17&iI}E_HLF@ScZ}qP3W%=6n8@0Tqm3R zHRCyRPFYPEevraX%3Jj!2j#S5vnt!)Qvm~`UDk%kwNo0%_il%YAb^kx{HkfVWb^&a zo^(Z8kUckO^DC_7VbA~hPNA@`jSaDE2Z6uXom3%F=-KG*qXW#uup*}BI?*K!QD7L& z40ycr1I5<4z(+2uQ2mkbb#a(z_6D&W_DyW)n@|!gaB6z5|y4Xxq(<6^%cqS1q0^@jWKv;l;~{mTgqiG9K{CN`2{iQtQVjUad7D(0Ux6y7`pcIyF9kG)6BXR@R+}{-{JwXgAuj*=uIBD zJ9|oP^}o}weO-)AtUeN4_(4*#Q?nSoW~8ul2<4|>JgvzwNS_TpFm-7RRx^8nJNXRe z_K}6QUx;C#XtpA~?r7347$DziB}9q6J9WdRc%ei7L+*@BB|rD#%O2>*wm+Zpl7rd= zz2R{&o{?W62z_YjM9;wJmRWY8a=l^SVBj@v^Qx24i8u<;u=NBdsjQdvuCI@VmIU_v ze47t^=(>WJ5`*1dfJ;LV>jdyXuEcFoQF_{Z_B;|LSF(ko#y3HR(IbHt#`!5+o8_tu zfNbkBR`T!<(`!X!{SS&pOFsw`V%3}wCD|^MJcNh6d@K{VN-#yIFO=(N?K&TjNg)F% zFwr)v2aozW?a|BD;CU@}i6*U3_RCMnuFULE#=#8jl1jkz;i}g*s!FL52W}v1nE<8| z_}~qoy+0E^_?QgfUJUBLfvLd8egEHsKnQ9?>J2)uE`z8lsKZE5AsZP``XX^;_%&;< z<_bkUSy;RZO*Fe<_ClbZJ*CEYZ2DK=avH4_w$VIUO4+^JU~a;tM+i@`n8u#3uv9s1 z1)9$BImSCHTwK?MudR{i zS@-P`EP`)T4dw6Gn4On-cX)bU`G0kJ?+S+E;>~h%X_lu9cJ$Wvmub>x?6F1-y~Wly z)Igq?zhJb^37LIel(v#NPY`56Q%ER|SNkU3`vT)@B1ZFvNA6uQ&G&WUK7oXkh32Z!tN5ke8))bc%aMHMHD;VXZa8)riy^$ksT z+uo&2fR>IVqZzumkLTR}lV_eG_t$U>&vIVwQiogNy-`;149x*hRrbesG^op@IW9$QPDiLJL5OMP|h`FQecR2E<8}Uj{=J|^3E+8r|VP!raiiv zD|x~l)Xu-*hCzlyKSey(5e?xcM9$5%9Gv6=Xa}wyozdkT`kxjjRk|&MPp76}ugL&y zaA^yhn=UhMFhQ~J(r9G^D3lte+dAFUE{#i^ukiW#KjG=i%PDeG$LBjgt3ubx!p#wG zm#%3%o|pWxFm3C9L(!MIl`+@c>uxsojtquJterNJ!?o)(kfFv`r9RoZ4@q|Nlnm@L zxkpO3BrLq58cjkinxINsK|@Kqmnp9uKL8`slq501+Lvo>kLx2Jg>(04FV1VifMTye zuiTc0S1iqp7Py&Pp=8-ee4wdrMm1#yeC2rvrpO%PgMb$+#<*>C-@z_F|JxP1*!sb| zy0+ePjT#No@$Wu|oy#&9IrTlc-Z&EY8uSwbbf288JIyt4xI97zP{9Vbu+ALr-aG(; zZzG^g>wUrh`dN?erxHTE@0%0Zv%WXNkh?g{B0V~7bLu7=>v&}!x8HxPO5r(QU0{-4 zIOY?2Q|PBLX{`KF^k|Hq05jKTl~jVOKZe?^#7|mY?zu-=ti_Cc3{YhgH$VDW(me`nwf!m|OWR0MGHTzJt=fMh$2T#_X4zdKPOyo-hs&+Lr|lN#^HFl>pRJ@qOT=1B zhehY7^%s{W2#x>yH{Pr)2b(CKdqL;JN+tN&GC1byXf_M=JG=FVtE&fU`=pLa(fVsC`T1|nvq)5f?pUI%iGkDZISRar!j(~ncUod1x>`>Y>Or@l!=?B`6C{YVHJ z^6s{FJ_xP(>QqAJs;V7m44FI%`@PR3K_RW~gHt+I3>)`eR%e&pYvOSYuML3%n_sYF zXf0^r#yitFQ@n(eI=R%pZ=TUKk*AH!4_o#TSSY?tm-`J*26U*BL;>J=`DL7m+(4q{Ulax z3;X^aO^*uFfzplDe%R)ptDLLK1{ZYWfqt`1gRC&BqFY$;{0caEk>|Q%90^7M=0rr+Ax-k_XvOZ-nqwMj45EFpY$6r$mgUP9qT-Al ztG^2JSp00G;$F&@KP!g;+^t216&fMuAzTK4yI=gDqPKM!4_n?KG~CXlqOYrCk^@&6 z0WHi-79xo34TnELiPzErAUu$OC2{}#95=J11OWj5hIMXdU_?^{Y#mb$aVVMB5PwS@ z;w5{`B53PA&CPxJA38sG9^v~G1}o9*CIiZTwM2nz@9vyb-ecaA(F^G@mv)ulbVL&+ z{i7 zIv}AjTDmcYARb?_^`{BVc>j$L?gW=wL!(U=@x_P>+#ooh45lPo!y9I~4Pn z%+5{e!gK*&7v~9I9nj|zg~kerFX))sPMgj5DW8;K-{JbhVg(J1OWyQHES$yY#-&mI zHSb%KuGsjgy&(yObAO%WG8N7dNZrhV%@#JO#kk?5nV! zIr-l|+2=lmgmSv{7jyMZG{|Wp0PfPz;Rd;=WiLD{E~Z|<%bf90mjpbC!~Ey?GyDh^ zg}-0=^NYk#)2UG~0Je?}a-qd(imD+7mvw!2T^J|Bmccdhpwbnn{)8<0GBmnqL5j&) z9SK?@(I4Q-QsFyPa)Q9WdkJ*X`c=eag$E;kmJ9UtIsLFp@u5nZpOlJmY zvL3K}R+gNuEQyw@JwSB3)KS}3>1HWovBaODi=ZUq5K6!~kU3GmCFA37y1J1kHvh%j#eOv$cA=(m$A09 ze!B_VBg-7Vz4J1)f8o&3{27~f)IlYdb^LnC@CaDLu4m!#>QoKab4(;HdBqxdX5fo za%5fCyU=!;Ade^^F+4hecXXc|4U?HEb=#mQ;zpAi!sE<(y($J86VprvkUU9;w#TE) zkKZxS2ZcWGf1y#=sVgzVzinPGyez#cyp-8fdTT{H-cO8J8^|3CKO>IW%V&Hc-z=O@uDGD@BynuW-E)ze?^i(GhonMAMsRr5;v0y)L0#U1g?g zLhrT+7NJ%;0Oh8DtI<-T(d|+5xOiTz>7iLxM=b_GrIKXpaohk;|2qhaIUR`SVIduO zw*0)?bdB=U!JC0v?>!YO6Ila4gQtkUilb|SkDIKbIO$ z$O8u^ummP<_soBsqh?H z8?wr{*8VzWp!Zbz3h=#k<3g;+-SEtzLrE9GUff~v5QiZTFd|k1zv;z$Ter(JsnPv& z!l6Zt>UYylEX@0Q=DR|#A1X&8`3RQ|@GuNKJGsw*R->cJ{lHthFcRz#9HMEJL6V6W z3iX!o6r7|V=F%_hCgU1)(u=olT~m*8wB2x(BG@N?3EX@MlIE)IPS!1j6U_+xM2BDsL$y?LDZkYD+2VN{cDRyn5uaY*n&CU7^EtFg(TZnZqfItgOw5u6xVgNAS`g3RCU7zgNjsb;L=ZIa~C}42y#d` zaX3Rj3i2^00*8phQ?Hw*?r@WtHYq{;!_wi&Z}UGOUw%^YQ~;ehGTOe~G1jvt%CzGl z&gc|+k79FG)KZn_qz>1{bs=f`tQ%Ps=8tV2zN-Xx&~pZZI67X#n^Yo2$I|)4*_FP& zVJi?v?o0}tglDzE)9F7gRLv3(m8+&I1fG3e8X`* zRh{9vwoU#jB~h+U<9WGx%~bgBe7T_)PTSDUz02d;}4|? z%BJ;D@tNOcjNB{rq>SoBavxNiXcEfm(g1h=Pn4-$HV@{y>VF{;n2HaF?i@fIAQKKR z0l03AZkCL0H-Vv_vB1js3&qgMrp1X?JT|#}$QVl09 z5G(rVz4%vEL&uCdxdtXip4({ssv;IYJ(-0MfG;xj!6H2oE+x6WuMw9iqv%WTgemW| z8Eg?!8f9+zs(tPB(~N+6pVevwN%^G7QwgGI_~~*#J+Xrbj9Z z%8UY9%i^d?gCh@{U3j2$=c?ekOz+L3hx^ja(*rib$j#6{@s~rpl%IK!&*7KBN+17% zg)V|T5>%^pd*tg9H7QkD|Cy@S1_lA$V=4dLl+`Qw{DGy7Pq-8{M$nxW{<13VKl{np zP^RTq=y zEX80R&^7XdlQ>{#IiUSqO(aqF%rdr4fUd9jp<9MZ6e?~u!6mP_cWE()toSo_byo% zlN?ycgJBZG>#KTka8VQ^*?t;ip#=QvOVM6+Pzl%E7!=cK#1kH8#+DE0EGe|f?*>&1 z%yI@RLl1Ok``#||FhYOPyzgVBI@F)3uBu0WH=wHT7c8GV=Gb6QZ0V9o-H!oS`m}um zqh^- }r;g+`XEPqz!>$z@N{lV?XYjarhK;F9qqT>)STUkatg|heQ+ zi^FG)P}i(Pi^icLXzxgd0kA6M8Y!376GN9@X=DI#2%HohsPsX({Gn_PSq|V&ZFGQO zpyu!>YG5pE1)B%Ve&C$Ettc)G*L{cb2>fVa>gK{kLw0)I(o++k(76BP#1poUsl^kQ zP*SsYwx^#>hPUVyW#5oRwz>r0`B_1mRWI^~%s%f2lioMZfArYf0? zD_*%b>4)-kdS374n5b~?^Iqkd?-AeOsycJoskhtFhNau*26Y>DI6t}N`e)48`7tk- zHrtecS4sQx*HP3h;9r1WfrWvs1xhsTG+oY*cm8%XrG(w4j76(l2u{5$(9NA6Dda`G zdlOB$s!}Pm9dY6LNZ5wds{$uNDnsRjK?Xgm$)EtKA54rrC)+ouU{5awU>J!ty>5vM z@M_!AAn1v4!gNu{@3LiJ<%(1AEpM+(qT)eW^Cy{U6PgLXd5*NgM&*s|buOZ7$BXlf zmsiZ=q}F&XQ&VZze3n@Q5Gv$#O2a0TFAJ5w>%F#oJNtgZtMZkNGBz_u9|~DjP^roE z?RD-9YGrr$ICloffExpm!ucf~e-O_vP&%zdUA8hd$PJa|kZeXWJnoRV zyY-P48oS=a!dmXO2h+G7?ue#2KnH9HtjF~yv1q9DAnqd`z-}RcCK9q?DXowGRKb)- z6NeZq- z?%zKMSfT{Ux6`=Aw-#G*@d+G~$yKE<+6ixzJO zNwTNKM^?k|m0r9<;pZ!ph?YTzm~9lYqlLK-J_K}2w6ts}i^i66mk;zp*`rydHcP4M zs8=#TYrx?RJhi3oJ-@kAWjgu!j0p*=?UZUG@>Mu7Glk0L_|ueCN{G^HriHN4kA!bs z9HI~1x_8pY!zj=v*I_e1C*q!#Sx7SuCm}%vKk63-N7JFiwE32Fk;w%O7@+CRXDNoBiy)IH`F+E&jVQ>ZD?l&j z$Oknm{*~c-iyT&^Ol-cKTvw3~>>bp@$GKuTg%>ZRGKHQJBcG(!( zWm_q6ETHOaZ)2{(x4qSEsK`(3Sj1J%#?N%1(mw_R`pX6J3iW+OT~r`0IfDe=bvJT- zM~C1i0H7#HH!@)7RO&kJTsG>>u;*M{Z1(j=zVJ(7!UVzvvNlu)iR8 z!u$i1J)D{{|Iy~##0@rH+Ax^m8Udl2!-0kJ{~lu+@Ik+y@sD(Q2S<4XMiu_#(r)Im zvjbd?@abp)ds#w7VKAY)*E!+t;@zgvT5|P;-JCjdAGH$Qc@hOrc>FTE32{A9xagR< z;E$0|LK-q_dv#gTYezFt`=8PKySjbDUHLY8o6G@^7}Iw;VBVDsowHlbj$3p&f^;Cg z0_rPCUeEx*No3d~^rh*gLe@1Qyx5v;q87g5jvApgaJa9H39wxy!2)~p@g2HZ3c$O1 z?GR=?ncIp}hoy(%(D=)LyI24)I&*1^i=p9;EJ+=a(er61zbxOplB?8ETD$K!ym7E7 zm|aWcxZoV$#KmbDt{pSM-L!e!H!|Ohi+88Hmx$BjRvW*#d_^1};iNHDcwNDSH-?H5 zAir-Ar`jn{*6(K)Qw%pfQAz`(EoTj1W25?s=fU-S6U7Q$KN{f~cKvW_iqKu<_DQhX zEnIb608nX(?2I08Ma&-+&j-KOsrai?uX6E^R>HKY`_FumS>a16DrW#0KfnO z1PFzf+{*e(IiS)}+q0IscFoL2kh?Nj@6j?DkhIJ%EmM=iCbC?_6zF#syb)k<@b!~3 zI|Ndq92Q&n^hq|pTtGQUQ#?VX`x-MSza?OEyq<=d1EC+cI)tuq=<+eed+DZkS)Pg^ z6D?U;@yxTA_eImUbD28nolJr>?SoqBiI0abaC8)aHdp6j+W-EXTs?x{A{+bO>g!*l z=oeu}=_+}Dor2AAX5KT>>sN;~v`&WSCc`4WY>sn8lYQh()4buH_Y@e!=KJM%G_gGH z?!NW!65a*J2lZ2c3ZL5tRN7!^N2UMl2M^aLYM{x~AkG(nU`o)%-;W4T*0$pC%057l zh~Ggiy-#yQ+VhPp;gNQD@H}k`(Y;PKCY{Zj=2SBB8jW&cfLs&aNzw0@pEf;@^SzUS zhhZ&2%35OfSvJ$cuxxF^9rbd~o#9&16YkdUIT?9rrqgY;wb1|aiP$IPvufGhMU=d( zDAGo$<_>6wz_g@pj`>8LPZ zr+FXDyD}R3>oPQmvjb%t#d=4RoC$;WJUt3CKV1;*a3U{h4=2GNiP4#H?QD|-O)ojk zZx0v$%alvYJ~>y2eQW-n;lnK_Nukk?U9N>wnS0ap2)*%~CQ*ojXprq6`GI8S+oZtC z=wBAQNe{HCEFUNG`oFq2an*g3&p1)#AE-+QZiuKz&T+QXKC3256Kdeg^UL^7aRIvX zzA$%Gh0ie}RS5_;;q`uM-dRfaKvU#=XYnPMw{%sBjCgP^i~%6-+$h&3BFBReA^_Ps zAP@?+kx=pN8_!5kp>jomWVdCtm$?CeFC5AUIUL-tCL!;kgvYup^r184;&8sD#0)`TXU?OxoS33Pc!>8?cH#R z3Fh4<1cg52?EKo23qc-vgh5Lq(Dgl$AI@^8S0C^61jf3^K;6Ug+l1k!lB5QW7}tLI z#goxUIa!T{(3;Y2IwCoti&pUucZ%37!`jf-cMey(erjlHug86zSxh5miWA0zGF&$K zvkBZ>^}eygxX5>WXS4m_l^d;XTJ{!Cd|hilN#Mov-*Dk&X4Lmi0w3Erf&2b_wDP++ zg6Tls=wBlHhl5;is*b+}qPoGBP8*0B6`G&9Au4!@`q9*EOZ8be&$|kL)<%;gx4ziI;>Z^oVTS!XsF-T5|zT=k+C z5`xtSJ{cc+A5`8~aVyv+|x3loYTfV{b z*W?3+Au%739orb`(fyOgFNQyF$j+aag+4ggeZNmq0d87pmncL->mth}O=!#1TFR{G zGsbas_D#y^K=P?I?@Z6H^;?V6;)--3T;$wO=Cp6>fe+3-Cb!70iI@};B95+)`d3GM zzYoJS9g9G1Fx_hEM+woK#iosl&X@9q=AWgalkXcr@zMYwbgLqxet znInmFu-UI@IsYTlO$Y~;V-i*-&eu1lgBm?Vi$s2anw79-QOeF2HFpOFOP2u*S+!r8 z%ya2?-xuCOMV(}P&(O$-fJi?~CGR(sA5xqgYOw?5FU>H!A^)Oe=+e{}3F=FK2X-59 zx(X|q+s)Csg;(9*e%goFA&$H@hDcZs=Kh@woSdaBT|1D1zFimF-rKHzoR_M>R8Wvy z@O7&WEzcCPlU-|TzuSx=c%lMi)dgb!K6l!~ZhAJtpjYixR$<{YdLLw^cZcj)AjlJ<>qtDa!#(;!05La|9nogy(5j+T5?91#WmNqNn0}` zZZY4x%-b@68}k!f6G!^hgq%)G1XbcCI9zgS<#9ru7pU|?KCKq=jBWz zMC8>xCXbssstqa?HkXUd())dL7F<84<#2G6B#4}xO|u)<>nC39e*NTm@zkM}?C;Pi z;hgPRhaZUZT3$L%#!SEtDR;n<0u-r9QLM&k6q@s>X+F>EZa$J=`{j0espq2Zmyz3G z{Y$KCZ^^$)enTDAsU^J8W`sa1r33sIO_x@fhy$X^PyS!mW+5Psa1{@ko&{v_+T&VFMsPf71ah(|wjm6uLl9ksmC1 zV7{N-f1VWT0AGiR8FcPakitxpBwBxZpp6AN$c;9h&eO5S;17*N%~^^rhvBBZ>qMejI&iy61Y1VBPM9c;}pKlA!(aozgGUcOsE`I=*=K|Yu00E5LuiZ4hNr|xmFnF#`bQyR zO9YO`(^pV>3i>dt zP_PZ*nj1}QAeH+EY|m=XfR?yW9~tW)^>E;^d7EBHzlrWA%8v#nnz@x^ZEumFD?K<* z^}Tv@@3>E0QQ{*d1yOT+|H(Ouu!2&hQspH;v=|+iZ&h0G&3!)mXiL?)(R>1%s{d7e zT?kWh}DKK*&$C^P0g$Z0I~I5Il=KP%1~ zHid`}1;TowRXJS^A$=9jDt#=gsCc@Z6d~iP~?!^Cdsj9dD-Q1-}Aat8d6V z*7BnL#cM9#e;XlN+xgDnp0+k_v!6s^!`5*T_Li zD%vEAELcl-x8VLRcD>*t=xU(_11zO^rVFV|F9Cf;8toXt)AxV4sA`?+ z2jj&HF_qf)egVlpLJ)ds zN&9VLb#Mji1r0&ouPhoiUCA33xqWO|IvcAm8>-0*==3L_;;}v)#L(9p7#aIRxOTz7 zz(7MY$q*V^Bm%s5K>>0)$>mE%Ys=|t5M z5&WO}&eS8H==gi{pEw93RBqS#viIo}9k3L?Fv$= zLcg^(0eGCe)k_69WtTSl#r5UEU&Z>6wr5p-c7DgwpJhc3zoG_mZmpD`)o;Cx*Ov0l zHD&Ro{u8Dz$qringpPq&!(nnd!&0NA3H({GUJ8i}e(|B-<&^>-B#}u{p%a7M-$W2A z5Dkb8zAs_sFPq^R0@ke2^HY_r=1t&U%unEwwM7Dj4$pIy7hDFUe9UHs}%Q$_J(c ze93hG9AuA>!vyq>nA@Si@qrAce$Dlq)uQx3zFuA_qI{mF%)sNI^JZ^gMbdxP)I5Bg4It)QaQ^u04IrbFTzlP{Go$;MZ zB%-ADm}piOKl`zLkKOxsL@H~1Gh@h;_(8daP$vznHdA!%c-QASgF~6-zJ}s{bcX?Gv)`i1I9#8HgB}3^-PFto&IJq zKC|;hYoOs<8G8!V*YR{jzhp~(Rb&wgj}>Oh7Js$HDk7x$u{UoyLQdZv8#s73p6OqO zDWNX5dUZ7zGt6;QMK34xJ|zk|_JV(_-i6C;kG4PWOyK#c3-Lh+EE> z2QM6XMg4{PjhFZL0TuK^*&o`&hx^Gug#e$;Tb@r28x5{m1>4?>@UAY2NKo(43cM@S z5{?WBPhON#h%Z8kN?;=Ro5!M%Grx>EP{rn%*xYOK(WtVvhvJ+5UB?Jo;v1P7|3~>`Etg22C8g!&)MH$-EU3p_je5vh90W)`KXp4Gh}? z|7CHJ5%>80#)hGamHSvhe#)2)T}+j1L85LE5QLzbe<0X*@|vCI8PEJZ6xfMAK4yfy&K9?B(4-`7caB?qf8s za5Ww6+_~?H0_v{!4oK^qU-kwMuJLVtwmf?Q6O}EYk;?Nz0ht&P`Lf>j{|aF?`*U7B zb#8tNz5hlJp_qV7z-PMcv@(=lIm)yaCifM+q^+)&b>zJ7sFw#fmK=0svwSIQzw5{{ znkBU3up2V^g?=<~vR-?V#@LbVv+lp4^)Ncp-I`8AUVFM9UwAhJm}XvWYwHF;l0YgT z!n{F_n-oty5!;Kx|1c74H3GtzUIT@`U4`!ytC65(?B#RhzGBcXjRok}OuFu9ty2cx zUKOaf{jMZpHNjcau-ylcrdPN80f!e)-BS5)>t?(wj^Gc;g$v8P6qeva+CUy0 zUES=PAPKUZx&{E1BxId@^R@QWA$2h*Xb>0XT}L~HiQ48m8Hzv@Hz<_%Irj8lJn)m` zXg2UYz3cX)(fB>JVCw|(R15H<;m8J&@_6MX>t+6`N;iFY4<;Ul^Cp|Wl_wKzH{|qh zW38co7Apco1#S=yqFV8bP{qzWEMS>{_Rb>smWMJ`U zyu2R4v|`qNrG)qAM?%O0FI8h9rsBzWg@a@E5;VA?ci2fs2LAw-gVtCP+J+hM>LNuV zXAuuaZr_eg?vcMsS_nZ`0x*XS;JbW<7S3V3W)!$(|DJU6LJ~5`f^(CR0({omNzk*` ztxksqX#@O;z@->qEr6ZPv3ndmus0+f<{f&oeWUn*LOXIH>dv=%zFr^i2nny(leDba z?R%pDH)@ZdjBWBX#o<8r3G@;-f@q5mbjH#YTveT7_C#_yM*_^E;Vx9d_L~DqDvNhF zU5A9_N%9}9DsN7%(=QQn&V5kRw_1Er`;OnA{99v)c6QOPovOE_)b^aft~Dn=IH{jz z@M}Ht&)-LpohCbS;5wfZo-BqNtK{m~xo>ZjiD#UCbTS?#tdBCgWzN^cIKB#kR1h=626)RW;{09}3l70)FM4)7*+qlP0X5N7}2 zE&qQJSVQ^~L(Zj7Y!GLSF+M+$@-By~gNN2!StCh3kp{L#$}iuujGsN z?1wJ@1KmI(zlLZc3UoCpu;40+>qG>9ayRFz>HtwTJznRv604{(cIaf9QBp*jUd^dW z`S`A|lRNc!hPG41Bt1a&mWQP?DIw1S$7@;TQ^CjH7njIW!N;({Xu~JClhjTX*J;p( zQa`=P^D7Kc4h)~;0Y2wqozLa1`5!{~{3zkGcXVEtJ_CHNgwvJWE-Rma&+b}m?Yit# z`v4!ku=G{sqeC<9zIgt%rO&s|13p>$03Ul?8`d{0_8qrmauU0>jO_ z{jBoW9~^;24l5HbcF~yTC)?d@-c5RsOa-OFkS@A&86uMA`t1%GqydM7xOmn-)^cd- zb}F<5Xb@zfWptr|+*t9TeW;1|SnRnvT)I?{Y4;nmnPioNw)kgYzaDdB+9{2g4+VsP zpGJTuD%wUaK0Si@c9V#*bhZoVG{z{6lYM-nb3^jdK7UT^X`H88rP|%Ns$)8I z>DQ2=wlXRla<)#h8`G=!z@X zCtrm`a=VVaAEfNAI2VVBX?xZ!2b<+}-FP&tE_B3aKj35fm_3gk3O?&nK4(@}<#svX zJdJGEty`~wkJxi}*CA&~pYQ*qW1N%U1$?>^bDiaPbiTr?RZ_p~>3E%)tUa196h>am!n9YPd9!Q+1F%t~YJTyu?PW^94SehEK16 zkA%<5$B(xn3+A#f^ho-gIXKZh5%Dp6HqWfB9_$J}51eYBzfSqs>)P9kkhAF{_!Q|= z_O_P|7TS zB?CUEp_n{%dGj(u7X4H&b5CHQsrO$%p!E3LNFc;rQ~E5})s98C5s z0<@MID#Tg{_0B#6BYx=QJQmI3veFuYKuDix zYWU!GZ4B%=etb>b0X&pZ`8+HkAKb3BwS(Q*SL&G0?d`05J|5w76ZqWuD&S-Kg!F+v zPoC+lpBEqP-WgW(@cx)F&f_f={;-Fl96)H?AbbjX<^h#1u4oO5&_4a#&R37P3AM5v z5c0i^-ifZzfs%i0>F;c_@02XN1K(CQF=FO867Am9$0n+e z0*VpVB{C3cw!>0B_Xm?w_c8JmL$-&y9?OMS(=Pmno8PQ{Xayh8Qw4tNx0kA4oh~-C zT-BN$szjafDM~{n@%cY1nVx3tU%1Yv3j1XEG?Wip*hBD~7!W7Fv@~&N0en^*$+4n| zG725)fKLp2a?_S0Ljymj(s7`ka^g!zQs--P4T?)ePpp+%VJJG zdtu&4n&K_9iPd|OKN{X%IPb}Jh1>@|R;NU{F=RHeEs;DAeA0X9|5E(EtDAZU*$f%;Ocu@a@aWWy{3y>O5>u5QcozrtKqc#L z^!j=r73kBPI^%z*mf;V%Bh4m`tf~e+!Oj*uQ#&cCEE&xAKPEM?x{D2IG1Q`jAwP7m zrxVB_EyifKeWPbS?{m(T@>%b4)#3*w553OwNlo?r$^gMn>NkbYe9mWP$!mr^F4^W| zHKLv%G#hW>(zMH4cQIM6>#^RD2gTZTbpjwd3cEm$GS2#kDtq(ek(kRH44?1cu+{iE zMHt#+5JT9nQl=Xx`gv@M3*M)dT{cBP0oT((dSdsXA7T`tZ>O2aE^z( z>vUh3iWDxxh`Zshyc&ECLL=77jUm|M;Ay#mPy|!9X`xDs?B(33YXBK8RS}Vm_K3tD z7a29vf|KQWn}VQ4A1}#r*!FN(by@fqZTx>^y;%h#(L+ReIJIPA`vvBn+hctg#|_jA$f z68n650L2sud`SKnK^=XFxZFc9va)r4yajzgiypvY^icWb@ra8n*rR#CXM0w{p3lMV z+arEYvF9ECoAnlERQxWU%)rN<&%WT}u#8Zi6_#Nr0q5=>%c^>wPM1MDudMN^V;)K>4nqndTHjuF0?H^Vz!RiZFJm;^HR{f zSL*Yigr?tW&Sw@rvvJq8sEycuE^^`nk?64=#DJYnaCuyT9?vT8XA2*_PfoABdxYQf z-0XSJ|MVL-?D;?*S6lepFq6a{;ImjP?oRO0S8J27EAaXBEPPHref=8ONAxj#G~xFJ zpT{4c)b9;v^9$hd&K>tii1=bt_AnE6)v{F`B9(9*m?=)EZxbbTQq7_i3TJhd! zoT7Dof4#RVfQW)T?U+=vo6+<-d71$}qLh3B|3$wYc^K$EqG>ZFqclnRxby^~%)33k z9yf?y_(Nq2nwz}zk?+r{S5F=U9>00cXC6MzH+POtRd_!3bP$GT;bUqbL{pRJQ!j3f zI~{chwOr}l(NpwMv-8%exTD95T0+SYevi*p+`E48Btpzp@KK!RU<~s?2OpN&H=XCx zgk5)l&+U`PqL0YqGSMgS5qh?3Tz;D$`ct>gXmtlWjhb37UrYDaLBqnH2=0n8qRN!< z8oF%HY-iV@6vq6q<>3s49-hO|P#QM=8#Szy)xa8_$y}C-G)uLaY8~^`;l&gy zb26UKFUbt!i#~s4_yj*x;ZEEi%6#5=-rC)_S{?LK(83+G?~5dRb^b4wUfl7S2hhzK z$qIXy^vUl|xby(3*FZ^f85;#3$HjnY*s~)|7QeP=c=zBbHxvp!U)@}aJ^xOw`QBZn zmJGXqGR@LAjOrU9KQ9bL`gbGyoV@m4*@nn8bgu;Nks0g%afR=%F2Izr2t|D1& z2S7byX4O{CL|3%DE|WQ9R|}v%2bBo&O^;UuH?7QvUNd_P^#nMh^? z!C-At%w2Y;>K!x}WEwvZdki1R&5iw@in?BYvbZ);$FIfcQ4jdA26hU3obr);@iQl! z9d-@VjT#+%vebSe`kdUKd>@H?AJOMu1fSRc27DZ3apQ4Pu-q4>iffnESt9=KnlAn> zlUg^o4H8pFv6lY`X0Z;oG^z$O z&7@(e3%+G9G?F~D2$O4}N&EQm*>`@Ehbfj|Lrp-$gTxDoHFS_=4Z^( zdtZ#?!GzvXj6XAcAdg!$&FOX!lrqbod1JF`R2}Tt0-I8ze}5z=*e-mN;gf&R^Fd~F zJ|v*K6YR zv(W!`HaxeU&)yxvu4BVz#dSW0&%-(R*!8*phu5#=_^{+9-^cKY=L2z6DFh=i%lQgb z(~a)(YgC-c^(*1BWf921m5D>H7|56lYA}EZ8QdML5B6{D@d!7bFB{R9h_fjfWYHY| zk%mbRg+E3V3GJ-2S={v=pJ{8O&E>6G&5eu4m02F9-l1n(r|-7$a@0f;)Xc!3HMqhY zTl^>t&C_`=?Z?xn#jVQZ)<(A#Mhzdt)agSnztk6&V8#t?2vq$jlWz5@cNnIfWh)Fm z7e1$=%lV#9D>-4>-{jN7r>xfI;WH(AssJB2B&*?rgf_PAwEj-CovC}8yQf*_QhD{_ z7rUok=-T=`EqxX@3O@FH7-`|dO1p2==-~6&1fO5E@VWo^o6tv*S3Dm_T7Ec&X=lKy zD?OYWuQL)HZ&;c_$l4F#Pl*??%pS)=ZmTEf#nTY-H>Qx$GiX#*{Z#?SX4^-p8^edz zyx9g_(g&*}pXv(Cu>K{hI%>>D4;;Ih&cR#ZbQx=RCabinm&r@FU*dVmXw*x~|G)Ue zR*N11K9TvXb4#C#aR~NAhc!`ny4zTJukcWN%8Y!AIiKKXF5{!(r;~#&;xcklnguLD zr0`N2>*wxtvXiEV5bzO9)>&hJd2jz(?db`58d-SD^R(2Ju*>lI*_~UrzAX6seb49P zU)}i|e2$Kk_xZ;3k;wP?+MW+#myk1U_tmR*q7EmwrVI~j*AAhwO65jf^$j3}LPmq? zs$?a3>_K}pMT$W-8*MU+tZM#fa+xqPn58CoeAw+x@y6O>!eE)9*VmkvJhd;G#2#QGa>$ED#;JJ79q*)+Qo=;|Oei=N0o z%$(lZk;iWXor7l03z53p?QV9Hv*`Q#f=hdZ0*_|r?hd(SkTOB3WI@x*qJxiU^40ja zT=SiSn+~V~p8XOjw(ST$JohH`2581$sWVpqT1$sJ}2QkIX*|C&qGIE$k$u= z+t#vz8{sxRJmVnJ1ip8H2;`Qmh$laQ9Gu zFaQ|$#VEfrjh<~gb+rZ*J-bh}G_TiD6?r4I%W4Wg_HnFlpbnIr4#xXkPZRve!fLzZ z>HlaU<_dfwpr@5C^r8tz&O;BF=|i!eKj=UwRn)7vznO+!CzsmiV>tsKSDojRv!re< zZjgig05Sq|_KB=W@UWnTKeJo4CE#Je1>WfC1j9|Id~TfTOohl(he;m@G97#l{1AE- zd~Qr3S%Jy$5q)m``qr0U_ABjoKKVTGc|^{~EA6mHvU&u4YR&8QzXBg8dW;>lc-Vjz*vq>(O4VGdogszAzsdUWuJ)dMvB>EO?>jM zA1}VI9cOuj|AHJnI3|aWl`#HIPI;>{nk5^XmK*qE93={~3&%D|>nyVeu$Z6zK%@mv z(37+?g;(`O{=f1k|#mPccxp^(T*+wKZB-|0hr`Gcjiu210O zs=Gb@H1~+L_}Qh7u%M7 z4}n+UQ=ZRHA8hv+4jp`c_nUsTE3S{iv&Y{k?=#8k*MEBS@kw2vo)ea2dUUwd!b-Yd zHtlfR@@8X=U4AU7vn0jZ)S#=wOd4Ac%@(6(AlFP}H4v6*#GP@iSJUx$WF4)IH**w#A&!b|S;$fcA7?Z)aDVV;)G6zrrlyRxmth=6^JZC4869JdHtCh2{&Iv_4!x3S zmf6%2u&V2JSz5xZctA9iT8Rgxq@4|%&9jZw+^}e3+?crGVpkPWcUv<8TRJm63q4O{ z>NF6APq6M@+G&2nBj&X;T+(AEE#hvlgP_fE$1YENpvy_W1lDaV_R|sJJ6>!Djy-wa z#PjJKpY$z-9wh8>(i!ShZ;m}ij_G3sky38W&d#i}Gg%jT!Hg8D1%g%eNB5rpu|h7% zix>9~_7!m%Dt=*0#2hkwU{4&Mz~}wx64e>_d^QW8mEbdutH)mRLSDXl{P2O{L(sMS zfP>xBC4tq{*VKvu!#BKCXL5MhqB9x+_I6AeJrKwIFly|qtV#3O^D$avuwt*pe`E9L zA^-2V9%Kbt4bX9N=c zpY64U@_X)I6Jg~0^w`yswNidkkCneE#TnzxfRKeBQzb`iv{l z=V3#iuV4Pct6jNfLdDQg1$vO>bY9{a$s3X@G7t^pOBewS69;$4?b|LKB6gmIuU4{pHFQ{_|7#MS!+MQEm9(Dj7a-#s+dg zg{I9%8%X(1F94`Jba81(goWbgdy(|H%xc#>bkc`Ds@k;kDcniu1$?S1aRYi>(;#iw7EW-ObNsoq>kq` z#~upr-1UYHf-W!3suz#T6(Hz;wPg-G{BK`;sXZD`lk-8Wbw^4qD7ZZBuc}J|pGcys z&fAGmpfOw`?!%zo_j%{%A9{@)_NXP~SUBxfa~1y?KEJ%3Gwq`{ zI4A6SMA%jE>2f~6NAsICuNNnW{05huAD2qbuBSVDc=^KSa?^T{Q3R-vDhuX=9|5sw zQZW~{!k(ctvW1z|bUYr&TUV}!^bQZ&i!u!J2k=eR!5QhLUx`DZL z$F7caU}RQVrlqe$Hhx+OCU|@4%`InoJ54l{nNDj}NvCtY5Y%)#@=zo+{ne_}=1)DB z77#<@5)L6(aL;_R&~@ok?Z|B6Ioo_r_je zEVw_Ysr|n5LFId%KR0`hyrwllrr;Af10T-1OUOxk-U9f%4}8{tA3ob_R7Icr+l+I4 ztyjrt$r8z=6O5-#|tW2~isu*$=Hrcw!QAJTh&0X~az10}P)j1^rCp6JVE6 z>BfJLJiXY^<)uZ>+?Jo&8$GJqZdqr4fBLfl~4 z%JA{B`&ffU&B)ri2FnL388J8-vu`HAK_bsIdkQ!LpFfd5QnhBq%Y;E>aHZGM?hCS= zq*d*RTz{dtu%K<^2b(03S%msrFS(Ffw?izB(?BP#O59bM|?P2uGBf^^7#q^xh}{r zZV#(nkccC&_JuT=tM8Yd@I!^qkNQ=w0BC0QJxQR>J9u*f1wU8$(_W#@9D6SB`CyQ2 z@e}yuC%aM^J2VpNHstCq=^5#7-n6eSi;3Q1^Vl5Aw=6AHN*+Ugt9S&6GjOU0<@= z!x>oQUKs(>Tn%g4J-PD4tF?h*nF285$S5(A7+Q^{54j)*Sq6{nP>TwDQ7m{tBN=E0 z$Ulo4GWZ|s;(y}=MtmT5rnqZqZV^IG`?QykNplR@AF}5IfO5#RsyXk6&IBJTu3Rpg z1G>7bbCY>KH|_KPF5~(HK@)i5`kdA_pODAI!Sm5t`>sXpJ{J}?iRPX>E}%vVOqm0X zAGeV`S;qK1FJIhhm$wpbEzW}ve$UqPd2jFj{ht~>cs@s2?J|7G`8;aib35>v;x1$2 zlW$BPe4pB2c9$TqWS*uH`$FIhXv!a=aV=+?_1(pY-Vz6);)i2kYd2ldfJolMf zl0r+9*0X=Go(~eo$JJcgdFE#>&aA>;LPCHm`B9xje>32D1J5T~^Tfg?A2pPl3SI;q z%C!U7WB8akf)2^%HtYg6jTkv@^t|n&s!ZjG%*9#J{jS5F7q6b}?*={-b`~zs2T?Fa z*kw7$p;9~_!{-S2bgNzQeCBo;#`9s#yp6opoGH!e%WM!HRO3Qa)MJ%guS_l*+!E8p zY;YM@MIXEzO`R~KIclI17-DTp=6E-55xP}S{E-rZJK`~tKeil}k#Wwfaw20?C4(QX zbJa5_@iTY|-jNl-hrE!UA2xhIPkf(Q0XI#jk;|~h#Z?%D_MPGf2wrxztKm#*bxGVM zLGcxVa(tSf&T*LKSKIuu%x(rH-g3Q@LlIQ%>N)D$^!IRhTJX4!Qf;y4m13?}FJ64m ztgj=BRstWdh8aEyx@3yyb9)P)U!H}}=i9KWhfnr650cvdJ3Qo^7i(V2(>w?1+8`(&uKPn}B!MR~f71 z8HQzpNni<&EEg)W5=U?2>M$vD_8YoOv35A;`8?r0*BndQUY)hk<&)+|`@tx0m~e(Y zP3N3VhjW%UfDTWUxF2*~x%tk2G5PX8oip$G`0dVE2tMR{4l4LkT>^ddTKY5W9d=y% z>BXjZ1s~%_+Dydd4(uuTy!b=0XSa2GOq{))$$L7x-o8V+xrNUH_^jTa_k0Mu`rpnu z3m<>;B%6C}*11k}=~ZyT_B+UtY=BFEtwiC5?mY}>jVDM z%F~&{JWn&69EWXVH23___k6#Ed1jk2D23H{R^PV&%sQo-girzVP<=Oky;G?;wDg}l zQwj3}??c9u6Kv4Cc(~r)7L}vP(qgAHSXM{2jAH=-5D0pUmZ8?$I1q1@5?#^9Z zdCKPko=<2qOC$}J*P~i1M%-SQypIIuC;1*ulENOBovdvox;j@(op-CdzAYZA4oBK|6w4tMP&-E65p!Sgv8f68xH_)FUE^D%r9c737? zeI#*xCisLt&qJR-zmhvtcdSqMva4_sop*~K?_=isjWfd1dGWwHehceV_%~JC=E}oU zqPPZJ`Jot2w$X({BU9Jpn5C)0PW&Znu|)Q&Z8_XjbTyFRVPVW{0ZB{uoqkUC%4_eI z+Wgag;m^kp$}9t72rJS-x@mrB=Q!5Q>qjv3v(JgTQv0#MqJLDj7g9MS;I zo{CsBYMG0e>*XJQa`*bKgl#>*rzZJ9NIY*B;gfEbG>ct(Co4HVgk4_jnupKFg3qse z_)IBhf~tG3zX^SO!|3!od(#CKV5c;e)Y);vmL6%4Lsm{?5hCH?NEl+CsR2}^GQPq~ zazD-wVo13JK6;6-ARO~Y4u);WD|wPx;)zC%+M*6ys?p3PSd>Fz*13Lqx)yfbQKZW0 z4VBaS>Z1n|r?&OPaAB0$%*&rWaf9xfIT%{+g&}wS@DZ6o&D{KxVztGjInViN)$?7R zUa}P$xnSBS__>mtb9P&|?767tle^^S?69Z(kKSy3!ahG*zqsha$1HatB?80IaXS7($V)ZJS9~t?4 zP-3_oc^r&j6FX#Z-*yiXv{}hKx159Bkn!pEFEgxXIy!^sJ@j~(!9#`4LFCqIXK|3A zEAY{z_uiX<4>_OD+MJKq+JR5jyMTk~V>!F#H9W((Jk}_`)<<~4Z%yPN7CZc)ianvx zEvzvQ@Np2C(g8Vov!Ko({e~{E2j56F!_8-+QkNsP5{U@ISY_j)piP6AvDzZcB;bkP z;MpDvQ+dKS+LCX3N`MkW%cwLNLQemay>sbt+gRFgGy%f+@@?sya~9D?Tm5=&*%%@I zVV}s-gRa(;S{_PG#^d+lRdf&_0sNxw_2y4aa=a`dLjKOJkU$Q8=W~X)s^tR|`#iuq zCvmu`s_V~mHm!TOw=2~xpVKf``q1RXBGA9R<+GoHJ~_j_|76zBaQf%97vi;l81e0o zzy9-kcDcOGW9OP4SZ;QGY@Sa_&hzqzkND&Y!@*Y5n8gED*o^qt_`=g`|4f7sfBpAr z=V`gy6d7v7jz``!5A}_uHBxB#41|1UE)_qcG4-+=hr^$HH$}r%A%ESU`llm=_}}k7 z<{TJ0C{Rcdww zXh`EF+&msEb7Wh(aJN{G^Qo!!2qEDoAgs#?GZxi^Ly4E4p^Dh!udK5k^Z{V?gt>T~kiV?()S2sSI+EX3-5S2ljutn{&4 z>~$^L+m$#<-GS49=jA7{A1*`Vr)v_Q=6QA@#2-6{c|jc6FKXJ|MU3ge)j6qr5cYAt z7jxuOwtd)mKB1PRw5vUp&n!J};?N20G5I;z5}HrO(b8SL5MpKV zak9hf8jbCbZY)jy-Pu4$P>}5!=EHVinfRFHvy%7-A%d~0PJ#H;dYIVqc|I{|rtrWn zUy+^*M17cGc-&88Q~Tx!A#SYn;?c6RBJ0mn#m5wf$HfXld3$)(qz^rbO*EL^D&7LCeW1rGs=a{g3W~a;CF2rYA zWYY^FR(HGHNW)!Y{qbwVp6PbEY!^Dj7(=(d!Z=XsGjn#j&iSrR;v>WcZWm&Zt&)c1 zvC$!qWV=q@^dZxg65`|So-wP>{`mEb#7Bq?#0Qh7z3Jo14B-iukI%0oL|%O8t|%=Z zm@Ax*3OEa~f%s5z+<146@0yRNsKRLxGLVhiz^4@wT# zn&SMB_@pr1HN%^2OTG&FAV8(q5JpQakJ{d701M4~kE!1bu)}8UxK; zU>kJy`)vArmH4cUkob`1vZGm{VJT_57>u8HYmbjLGgfsl<+(h^!t|lY2lY{J*ZK&F z4-(`xs9ASumbfV7v#hZcSXRMd1wIrR67m@=;kC!|nfWU55n?;>DSNNDp2@D1pl9}W zVfw%+p*e|w^O*gvIn(akuKicJT|#UnK7@W+27OSS#UnLhiuC&Vw2PK5KS33&(8qgS zvV4TtP<(gGv&jx)Uw zo1vJGR~}wlM4VB(#p1(&W*$bG;mzEx`8kfhvCB1;n)IB{?zr!T5L=0lOSHGrpB?9K zPYF1K-`h2u@)#eVWp{}#uRg~~e>#be5F3dPIVgKHS=#P*f)QR?l4=ji3yq89u*-r> zmxY_>BWn*F=d0`FcCCUCFS`h&hpSy@>8;ML-J>xdMyFbVvmJzdhHUxl!JMv6F`tzX zV)qjJTwZ>j?RD+S2CoMzoFQ>9(p@G-7mw>irpqiJ7xOWW3OKKZ5HBzHOAK>#c)cp0 z>~<|3=wo+ao(63dF57i*(j)O%4@87x)>fM_E4WA|yV6{J3Ek%~x35s&Iz)**wndaX(CcsBreUc=K^D z%V&FpET8NWwV!49B=Jdh87aq|^E@Btc9CoMRn8Khtr3d({N@IVacjYj;}P*m{?*qv z`>mzJg+yz`d}nV?mLG|a5L>%le$q}WZ>u^#eo@RP6$5=z)*owWXPOTJw9l13*gg^; zAvR032dx&3S9irMiTRXeK4-9jTzduMH0BB)OLv+4NPIR$DCPqMg7Z@21`(gEY;l9d za?8h$Fr07Zb9wPG_Iu9kb#=WEVk5U}mYsI3rGRDiq>ZK7^s(1r7*HTG?d2db!<6SJ z@mUoiUd~inOXs6mYx^!&{5(ED-VOH2#f9fkSPQ;0t|>S&D|lBvqGaA2E9lbat(0`3NCy8a_x*)8;PxyJzic_m&T-E&@Lc z^MM0-cDhP4{YnTS@rmO;dAm&ucJ&GJxLtR3CbotU9-c!QM;oGA=nq-;Bdlln2%#dw zoAbncwyO!d%2bWVET5BaE%jYpNDq$J=u_;_H%AEZG7$!S5Qj$X6`Y~h^>RPkl@fXr znm&Y_(~S9BCPIFKb7c8+5}&mYYOjclADk|ZR?92wT;g__b#puBlO3;9UfAW=R}@`c z`;FZ$Arx>1+AG?&voCkMQXKL@fD*bhVgA;TSRFV5@>57pC-GSaA@QjvynLZg3+o5z zSt33p+PT?>a)|uQJhu4)eWi!6qrK~n5+5Pfi}?idlOr<7#I8Z2D<36u9Q;nU%cxjB z+z2?kaXzTe9*z>9wGk2@BQ$(ahL-Dd%)ENn_KJkD6CY=WG=mT&D=#$6@R=!=l|r{h z%tr`O(Vp{(Nbu5Vphhj|Q!#G>&?HXlY4`YPKH2hNetb7sKF59=gpl~4KBT;iT?664 z>3XmD)D0j0e6WfiOL7hAd=*tbqi^hbYQXvRl>YvFh4_-bzxG1FOGSNhB~Ifi!vzE6 z(;ZDRnBSbzI9jn!#s{0H>tgvFACCFFrZ1nx4ZcW!1iajgIMa01a%C67Q)%uhl33jC z89s^j3PyIsD{NQ$gV`>mr?ZFfpg^e?6(l|_M~Ut7lZ@J(I-m5ukWa$= z87|4LF{SY`%#bX*2@oJYk6AviU(Dv2>FnxsW-;ciZu|&|kDXa6TJ?9;w^u9-`M7oM zr(uHLu3X|{;&YgUhk$c8(=X(Ews|^khD@F-4f@`T8z|uHlTo{7RX(_Ol}evw$*x&^ zP$7%>446Hr&vfNg$rGs0GhMEZ+pqfqUYF&12`Zd#+dVDJ9zT;lHhx}irP>omU6Ww` zWLtBr$zr}3BX-EG6%;u?5c5gyuUh9WyZzcPoqMyJ)JNPdF|^B$hJ9Tq&y(tWE+9a5 zr>E3+Rv5TlzRc&?E%&)f`2p!q^nU6?go+HI>Aq4kub^uAq-(vYDiTp2dt+zUXyjD8 zi#Ve_ON$I&1Leu_)?fW4U;IHO>MT^@>|LbhgEii7`P2;`QymkYSbp~V>~=jte99~r z4_@`+g$R1#QNYYMjN>dp$87m@OT{O>3371n z^umpIDt=NgK&kdH+l5dx+MPo}ts*`#6~hPVaX}wz@G7eev*lCf+Lt+9coW{c5Y_)7 zy^#3CgH)O3)3DNKzN*_RYI;)-`J66~#00~vJ=3-KWzHBsOT}lnPOt}gFFSw5FU6bx zhf*(O`Ghm%O?nyzeUP=K+bixTyIgB&8Sxp3ITLMusJH7iNU+~1HSB)5FWe#&bC&po zySq#t8cGiWRJVK}1xGdJgXuHLj)j~{ziSV4l_EaJ#cB2^*2-)5tA5FJoIFC)N2tQt zZho*vi{>uOt3Y}TLO4HU`T&c&>@$1X$K2IEvM8C5&tqd$zm#cpUU@qB{;PcHILo{j zk1zTgs3OCccz;Dp(`V;V8}YI_&oGztr2i zxb);HTN_PUI$D(|p-s4^t@Gt8Lu41=vICD@GgJdo}B9*1`P#RGncFWr4H z{?-Qw#eAZKdyANJwXHpj=kTkhMG51_Ix8;MfZsJ{vnRJ#EF7tkN++wUnL%AXKlGO_ zh<|yTNI@U*a@+69w#jot&%3w9&5`X>v3z*HTjygEG?@H2?J=_D^I*2?OC0Hly{^p1 z{Sp~`VF{FiK8pFggRaL(yo%qRKQ(qSTTo5Y7*$=>pLKzzzf4g^+^ z|AUYFrIeUJioF)~;x^jb)l7c!w4nD`KD<>e9|X#84V>G%e5QRq5uZF!W10BGn#0du zrN+md}7O|X;*1(T;07t=EDKeKVlGY#`$tphQ6iU&Y4BxbDhiyLLwjE z@Cn}Hes)JMlZCpUN5x!mpYfAzwMNSy!r zSYLRQUqdU1vlp^_ZfTDLJ>Y#V!1Q5^>O+=K_qj5`2D*=) zT@P|xM#b~&g~TVGAm6&kkeph5fP4xppTP79l3nDxj1l~{WOy*(9GN~{Ekt7X5B7z- zkNw1du9%NtKUT%=L4R6q4g4)Od=^_iX&~BcN;C{qI3Mg*h>suWv&8cGI|#VO+2>fJ zKEM|=C8RQ3_RtH>^NF)vxyF#|nbJeFxt{G}3m2sF-5nlUx*)MG*^5uvT51Bcq{y)1 zWN>;q|JHqoFYcAoKkOca;)gy$XqXsB!+cj|mYDG-yv*B~JKYvTvQQ6E{L_nHmYis>ZfkETLUC(p)$&QamZU5@ zWyq(reCTUG?1PxkbSxRE0oA{G71xFLpYThq46(k~B91o;Z7e0()l7O2x9Tvl(A>G( z)t-p?nDWd<&-v~N`YRSsGE8x>*;@#_RDGA9^b3kotEJ?{|5j5wNPGY;c1cS}b=55& ze5tzW;^J`ksWct&(wA0p)yS9W)m=6;Ry5%u;8d$e-6u&t`< z6Q#J^YqijamQoX*`4LwcR_6IUYWjpJpqm@5x}Wb$Y5G7Mbie)|aOg#dmIhuP?K(?$ zxw*8OYQMI85__L zWTpk#xLRQOq>AO^Qe0kqhDdyjW9ErV11mGudHFDH6@lFo2^XJLKE{()>aXRpMyHY?&tdw%WSpBmX}_D z+A9EBg?)D1s{4|6k>$gC-ST02s!31s0cWPDjttevUF{v~EBXbzMpbk{&Ih`W(p4JE zY;C?O{L>3rKD+67qdU#|x*!jT4tl$GOD&%~#OHj>=R_$!JhS#J4>-f=+6I8~^X-Up z_p^Kn&9{8jr>o|-@4b-tgz7`bl{ZtK8)im;Du&Mj%g4lr747(4*J-XY=tEzZ**%EQ zLm97l!baw&Y~_kAn~Fgf)I4)m0zN_kXP<9x!meIsXdo~=@0&i5(l`Lgu40r}*;tC< zbH4Y>NI^yj`0QyM5Yyo$HjDhtk$MrLNrsp@`OSECgJ-K8txh)UBGX-u(XWd-1=x?)z3zzz6A( z*;697>m?ZHWBSvwsl7Hr{)a7}A*HNEEGZ?`HJxv3n=R9Ic)P6q0r7#?^rik+wc{4| zOvNj(Hv3Yaq7fN)u^!c>N67MtM;SJdp55KP_8*SgyMtOu{KGPXSoEtWGF|y+wd%L0l&yddKPkhGkG0P{R zJz=`*2+t88cy$La)q|IR<-yG#_x?NlyAZMX1o#@ChVsL6vE`E{_{3rBD$pMyKE?d_ z(Zzg9!>8+o5F3e)X+c(oRZ&%pg zwQCXYsg2b5@j4$L`{CC}fsfr>i8I^sKutnP&UDmd{}3 z4tM)XM?2}RVWi3sih#2T&-_?de1wqr#E^+U_`}cej@zQDHd0pgRVc zcJ#+=9(!ynK0>Iyg02U|q5+k?U1(3$@=5t44|`6KWjC%myYeKlcy~@O#1_cyiksSZ zEpzQlvRx)V$vrTHPU+%r83O@lyQ4n)qR5akXNnAk5Zg7D+R>KE@``%4t88-TLCR|u z9}^y0yAYo2ca7fiar1oSb_ubn_(TmBw05;}zOroaC@*<#S?MVY$%4zL8?*?gwi4T>DkJ%V3z85Mqs(PaJW^ z@@ZuE)EDPeV?OrcYn#y~zFOF4f>isJ;WMHaq3k0*}lRd5+^Ksa+Zs@{H}50I_$H*;+W}$5L-8vPG`H-6>wvm&+eU;kCEuGpwyX!m#;Fsu=l9K zS%@typLmRF1Dw-kXO!-$TRy;#WJlE8HO>sa%y3VoPp&kSt*fe~a7aON>2H0Qdp)N=&Q^ATd*#?qI_>dBs0)186yv$nA`-M4)BmV3KW9_o|E zsI?Ts$G4Ss>}nT6v=^Vdxpv0Lw@{uu&JbX^<>PD~R_EApRc2T$4V-V9WGKY;UG2HG zv@yFFGsu3>@2=Xp>PDy<6#Dc+Y>SEvciuc{vA2tL$&bf;{345@wG_+8 zL#AuKFnSD)Q59lK@j(zw8k(iLAReT8C+2g8!C}05iq_J+EgAOK*=37!rW5U%IQBw_ zt-IQD4@48NeZnHcy5&<7A7af#YpGAQ(^fj&j&^$W>4n%9)%mnuo5Op>@ro=Tq{psE zeAt^~_04ZuOAl<$nMBBJA7}cg&SztUW;nZaR~vkhVbEQ1+ww^j@d3IkPJ>H##T!e@ zGM|mbM+h~RPKOCY1FMH84P@0Zs$t9rVz=u=YiUZ(>%!?W@yUgT>`I1Shz*h3Wy%1% zW-Gf0Z9g~WLu)DGGuj<2)(poyPeZA8A=VY2xWR&>f%N2i*jH+;r4`F(s9HWIJkuTV z@%!3`(S{hh66gJ_JNsj&B10iI-PI1c$70o}&x@(g12G@U3yolm;do$_&qaMYdMlLe z+8m*IK4hYNV(O{J5AmMLFtK{fhbMq*X~*rF&%tNA?DRtn*A^ckWch?Rljqq5&Ty;3 z*;-wzF`ugV(AAy>SK&N8VL#&=OFL_5KW-;JLMYn>4f;wAV$BGUozJs;SQ zCO-u6$*SXSa7%lv!(tpwdvaIlA@56$rui7X5MtBbE~ICAG%$H`wyWON{tdzTHouzX z!*L61tr&-KdN=VIke=~iP~zj*UVMa*_?R-Zbh_+}n=66}XHIAOq+1jNHBzqh!S1n! zc4KSt5kle<;PhwLOn~mx`5-^v&PO8JTonL`Kz6?$`nm}ESdEVf&;c$D?KAdRJ>V>a z#HZd}0nZ%b%*DjAo2JjCIb^#`Z)%ngP+VyG<2u?8K#8GKpH49!A^xAeGsck>hQaWp zvLo5;QX$f$&FN_$XM1si{vDwKw%9Cd2J+c%{6fp3f-%4b&&+ynAq-cw3_kfag| zfv@2>j&s&U6&as#gqw_W2l-_Kg)Y2Z=6t?4wYQ6xW*_F1vJqoUQBsmRv@g60k*dqb zasEg?cS)ZSjpW1O1LxPLja|lu^fKgw>zviFsSi#KtT&r|^1{4tDsA%7C?zE^`3RAc zJ}w`}@qRu5<{44tx?6W)*##!-^FlaVaW&gi%sdv`9}DxsMyha%m7)?Q6_ScpNFSDu zmBU|Wi{dIwRIHyu#oB2o)QAt8%0#Y*h z%umY4alF)yZ+*hB3cJPgV%N_5#AiCKudkiW#?peZY&|r%(SxnGQc6*FR8>fc=6QZP z;p{j*^BGa=f_d(%U62phY&515`+$E-&e=Rv|L@+Z4+|V^R3w!`B%-2k%>DWGERN$1 zMnk@7ry zIT!Qxd?e2~)Ro8Gk3&)V~$HOiSoQ7Pb23=FMaC6}GV^qlnrRS#jT>RJHU%r6wq#=pC zL^Q!Az=wd(Xj!Q<+w=4D?RKjzZXre>$_w&FWf;cs#OKPWf;bhj?^Fp zHk2-myKa#lwwvO^b#`5ESM~Y+M-I6Hav7>d7=|oADMd;ObcT;e3fnD|1^RN{acTzz zz-g`{BJ}Fj^HwVw*RyYMPcg%WBdW-|{@$tiwpK^P<3SOL}`nGm^1!1lu+5iDwh*A?iS>Tk_Gn{3#b%BZ|U-!I!!3A^FASB=-nuv?^07XT?g9Z=uNpeaH zVAMKCUtD_(!_;R*d?-0IMJId~_m$rK&Ih`Kf|Q5u^71c#KRM?bc@#p%QGx`gmQ~nn z8kp4RsEn3gq=vc91oWvrZA)v9VVL@?Uzg0Hrs%AXvL-&7`KSP0KKbD#(;iYw>Cg?K zX(%yGs>7xZFq=k5t%InfCN;9~m4E|c+Lo2THx9k#F2kNn-PLFa5Nj^&=RO&MT^{KnF?yM#e z!CB2%`cR>uo~!ccfek>8M2SkEY1*clM94K?Kj`{=a17(&47|v1cM_lVNuP34&TLv& zuS-_)ir2;Wzn+{^O++?gy-{k6v0$Jk!kJpa#}pd=rm)lCp}TVq0oqDKm!ofUoAer ze>RK)JpTWk`aD`wpYppa=v0EP@#q%uVd``7=I1U>Gs$h+QZ-r?4{A!*nx<9Ir=Ac> z6V(Zo)Of6agoZSX$Z7SJeE4h_1^Dow#OI%f6rY=y8?$>*-C5YtP8P)H$^ZPc?ebKP zq5&g7qmM}*StYnkqfWiXG<;KO8yj_fHHMA5zCUQ@Gid|sVWmgVzrS>jAsU#3hwEJz zZ%($7!BA;bOc)^$Y7rIbqbM@rtdaOH$5_{8N5^4bEj~ro*$v~1GdMW2Zi1gpWPGVgrksWQI<_wS0xJga)vmNwYa;cqZ`s`Sm_By9x zP)vLb6Q8f=pkFwv_LMl-NB{83a+ji?H^aR7DaLuWN5@a%N!zBz!M3t%0)b<3a#( z%VWoG>)Gw8GgG6bS5DFG$G*QW@i7b=c74OL`i)_kb5tjJTg`kf0XMTh`T6;)SFg^< zw4ep);fi@`B*Ss7OR77rX(jt%+~OA)I2zR>{S6geRuLv;9FH~OY#27-tW3gFH1nYa zunXdY{iN^y@%a67h|d|z+4gBD6f}Qt`nyb{y~y z-9e+FJ=?+p5g;0hPI9PFoQ4KyfJF)S)kNlu&+;Cxlyc6~N^{<~r1xzPM0a5Pm@^!h z9YH`wf*v)f?8Z{Vun(Nq=X^9Lxqi#Uq4%@1{poedkAMC`XJEH1y!S7U!qDV|jZLZp zQy&LI=s4hFP9xJg*+61O7`T3S1+n38?6L7j)Z-qhVHkF#hNwcRq(|MK54$d(Jg3fV zDLGx-ZoB#nz>_-GA=HT%=Fmow9P}J)9)LO39JWbyc2FHyhGGc=$`pUF!^Dhx!VVL= z^{#em0x9@?GYtz_8h2ehIf2elYj|E^$5zMq$K}U4)q&VZAkd>n=RF5m(pbmdgMMN} z6*Lg>A$E+aac|f$stb7!jY>q(Yr9r8S=JxnC9<9vnezmYP}3%X;9Aid z@0062JhK`J$TW|$gWp{tqVZlwU1%EY2z3XQ-K#6qtIE{JxDV{=9I~J~jEbZ@8mO?X z&G|$QvQl#STJ?lNM;z*m_hMOx`O_U3I*5%tVA@0BVWjNXPzk(>kExGwPuQh_tV`Rw z%FQ`zU0v=ylTuwG(=_!|vZ4*v3+#62V#o)u09W$v8)GaUuEZBP=$G%`l`Pgdw-Y zk`jWLQVfJo6Q8nzGz|DRgO?O3CqTO94x?0e=JyXD|Bca?VSM`d;qk)}p6@RIF-gxs zC!D7{wThk}ullxdZ5M$^?Dqq3fI8y^$y;D_5=XNedQ@%f=#Ox{#61v04@7|k{TrNh zt_ouq#`;n_N}2U8{ZneFbIWr+ZcqHM@0svGh^Q8LGVHy=2SgO9-}fUMLKPLpES}Qi zReET3seK-ADJDLKaUZNFKGFz+LSHvadbP5*ON9nfLs=R3`%!_8NUAbV=di0GijY^_ z0pAjVqRD~;RGkP{+ciDfRfb_4OMFxh3VmVt%{8kT)?()4QK&m)8bHy~F(&h371`4; zB-6hW_>e|Zp4XHbs1CRy@T4k^VHhi?sLp%4v=tB`DXX_v^uqoILv|R2iPVr$c%3J1 z01Z2gbZtxi(CgRxJuN&@rxsn*syK#WtSz*w=CG8yt6lwy`t;LE)Ya3ctXHU_Dga{9 zkC2W2HPs2x%rIn&Iy@T$_EdMq9aIXQ5moBx4&X0?r=T*7V`7;PRj15_r8mY~s|U!d zqCi5>V4tBri)ciiP*(P=*{Hlsqp#N-Rn5aH(JyrP5Fv^}{-(Yvj$s(0J!}i|Lvvu| zxju;dvyTjiEHG3aHnl1=)EA7Xvb4Z308a_M^cbt?jPee*TYzb*=gXW22CXWNVHl6r z*4oudDZz9>#+vwC0S`q0&=44)=?f4Ip|tGYUhUq#?GfQOq%c=+uY{4mYF3lQMW`M9gDw`pj_{Vts4e z&s(-~xaUv|FAS6>2F?wDU6&vGtXLia-_Qx5{j`^KVp{mBienhYBs^@_`0~)5Qn`=L z_uQWPpc2n~$2%`_0ps_wk6jk4H1E+*59w*d5e7OML+f{tsbL5dAb5d7wf9b92baPS z5LSk96l`yoN&#IV)w$7KoAVK62m~&IXCZVUM17iukP?)G^5i9<5j~oqECE{W&Fk!p z704N3O5|K}RZ$GXSU*hc#-*a{l(@S>PYqiB&PQf*$e0cDAE~;#i%AOAq0w!(429q+FLUODGLs*np;m@r9PS6`d8QuLrV4*e=j&tUd2U=U@yyG42az82IKkWa|EHn`q zq0fIoF2qPeaG){_<48;Gx(WruR&3y<|IO-+rK2+6^5Ie`jAx#3@-;)qz~0hw;Jkf1UQ?L(hl zbcRa9ssSUyECvh$)FcU1mz>i8ip+FFAQ)xJ=k3*78G>=CUdbYbic%TIv9SZ>vqF^G z+eNSc)#BwjF$Nu8iDM9CX>$-O=^-h`q!Y>mXL}Gy*5g%c`m8n*WIU873=CMojeAX< z_F&0~HeVtrL3K0?!^B5NU3BGEx>Vo5@_Lu1E>I03=V36(kx6Ig&<2OfUe8KYaA-7Q z)j4Xfxco9lWUzz}U`7+4<73!$$z?W`PUwhh{S)UD1_04PQwEehwF1wa6E&h$@#&pY zsXeoGh_zr`~9BLYh22O zkV-?i&ILDoF_|OadB|cC)F;Y}Dv)ax*Y;!E`j$e~_TC{BO{$KFVc3nOI`X0f6%-x{ z-0G~)FcCBb+H;u;ZJ?s0ASKHSY7Q8|(l;RyN>2y@EdmKP%_eN{Q@z>HHLYt@l~Q$F z48y+jp*pCiDY4kja?3e}EE$(%l9_UWXmAO!bW%)I5;k_|Kwa0c@(yeg>rmTjjAufA&{g;9xEO}rSXxSZzR|jr_lWYKkpYA>P)EX$ zm(~+-ct$UhL?TKGDm&7E1gLJ{+b+)>1#TA8DIpp!SMuzKX>+NG&(SgLNDVQ??h8~| zTbXYroMLvIYZj3i0DaK>hELgvXbiICcu^I|iKm}LYmgfOz0#wi!S21|+Pz562zDku zN5!z!E+XPkN_mK8S1afFP!m|mFwmp{0Z5Kd)0FO@i{=;*KUroukQ&{>J|glGF;)eF z5jf;R@zrrL4BK9T2BWpqgfq>`oKM@fyD_gyx%Tvwwmof|w!w5U9@3&IcuW{Ie2c)g z{D-FsI#;}4r)MZn|NAWrK~HYSsE&$Z*i!pkNU5)!7kH%9b!bBjI*G%j^vx!PZd2D? zhmg|K)b-h!G<1OUYK8*Bwx`haZ6oUBC_rucL!>|p(53$Lt%;9e++*f*yZ)%~s4I1A z>FTsk*G1L{8$d*j=)-~l5T%4L1zm@y5%@datrV=lyQfUf_#l*+>U-r&lw~ZtTpXsxc-x znLqC)kbg}FBOZt^*}o_A`Sa=La}Zn*FHg7E$8vM?{qG-x z4wh1ZhD(p=o$bn&RY8$m?Ii_L+Ts$#4#nUZAwFLNyx5`#7*Oovp6dAN z_BKRx5bQYdxqS|Ti{)L(&&`ih&-u9ejHEl|bLAAPWLq*Eb;sC+Kpk`tB`Oh~ya3At z9n5%S^P&jAJrL*@9>wb;_~SVUE|~ueRi7g!ob?R7P~+FR&(&VpC85xqjk@$mNwiF* zUZyt!gBTEu@S}euJZ`rK#9$-u8BY+o&z0yX&&V^SzM3Y}U2ES?HfMksK#9<_sRtc| z0av%U4G~_h;fe#DQi&$jp=;Ma|M!Ubp64LAaBk17KK;`bs)vSOB_`7^ysVUB1}ls& zG(s&YfJ6W z5U2|g>dG*df!l>J2~zc?`wkx*-UEbQ-Ytd?TQKF}RP%#Aos6qFqUZ{u@Omq6Pkmf@ zI?G)&vV-!T*ESh4uSqEtVSo!>f?Wlpsd_%7K$=vk$%q9Hn>PEP`Gk@RGH6jGKEeMZ zFK14Du0&UQXa~~2%m=M9rx!;Cx}^}@u^Qwdzt{Lxf?U-1KV3`PY@2MPN7Yb5jbeboS-~ZAN+~}gh0P6(_}WK z$%;)CDvoM2quOY;8Vl3PR9!*TU2o=Jr(5mXtGQNZJJl|l_(*9a zDsuixBlPn5b8UR|qec?Nasg9u%;-`fMp;_Fk>?=zEx3LUH>WDQT2dlENO@Rtb*7tt zDL#slv_vDWK=P8F&lSEov(QvfwJ>xA51|BU(LTf{I1?d0t1hk+qZixzb=M57_=otg zr)-sD78_0Vz-$D>XWmPV_)A0;idb{;D;ynPT*{2K-M=6J=*AQw9^S=a{$=(Xx)hpG|y%Am)6o zI$!M?dWkBHo_*;-15gUz$JQ=T!rranwe+EV!TJUhC4k$j>EVMr4?(wrG^RjYZ9 zZsFgOQqfzX3V}FY5ybI|H?uzJQoHZM8F{j+f3Drd$6O^Q7)eA)!nH((c&3WXyT&WQRaivCQ*2haO8U>^F`5d@Rj7PR4DpU|WVn*9ggQP}mUX2w5 ziYPS8(#kg-sld#U4tbSoIMZAkE`ZMGx=btx;xe&L$t5%PCPUFbUQvpcx{6h!+v5vc zN`@|sxymq@OEs8I_MTFV=SR0c*9Ad-z_i$cXz`1Fcx&sKu2BtwxJI>mmsoA?-3%(g zepPj`Db<;a8I1IWAoAt+hQIQcq)jEOt7xnMLpSscx`WgR=u~?YUgsf*3*=Y(xa_D6 zVWoEX!(CFF;wg=ehB`CZ2D^En+88B`CE>!QT*)!CO5yE@Y&kxib1s7TbWVSvOGVeX z<6U|>r57+`KB6n(xg8J~k!*NWtbo=f#D0g!6_^^a;G+2!9}PScL3}iDwI@HWI&KDj zFt957av#z0=lye)<<$1@)KMjFYifvZjO;2 z(M^1sFf;~!!s5X33hIq(iWOl^XJ{G2dtRi0%zVf}4?RUkI+I;^s6B8D)<^T_Q|M1{ zQM^3e9xpsM-~WA-^oXAJ_(D{RPJgO>rGI)Ham9xUPFn6!9Uc3BSY6 zVe;T8CXC#zhZ6+B!NV2)Z^$&Wv+8k0d|FsufeI^ixGcFI38Ggi5?>ZUErQXfyBvzq z0=FJc5CjL0cKJ&9$a7r^JBKSO=44?zvSX4UcD2k$Ruz`S$A_dinrtR=;ymIL1i>Nc zp{dV+qwT9#kCwXpxQM`$+_c1zhWJ-VKYeR`KGG(0)JK64^5_Awk7p>mf*@EOpozn{ z#OL)ZH8QyOM8+|(4X8~LDE&@Y!H~}rd9-w(NQw2?34#!x{{79vB{o|L%hsVm@moFNiqyK^~SnpyK|62tAWABW08#jV54BSKTZLW0E zB&Ds!Y9m;UuMuEiU8)Nbzzkp+(3{Mo>{DDlq=C#o`%`PjBD)05oDQ$0z zjj_krc0mv{XYNH}wc~1ct-0!F=4ZRWrfSAY6dXNQ`_Jydfu2l7>iYvHfF%}pW~f6- zX_pFpvc%|JWTxl`6rw=SJ-2G3`I>e5TRrM=NB_^z)I-=_w?A9 zq?axTf|YKy(+=Dws)pJ><#WC5diX4$I^pg$LE(<6eOZl20JiDH3WOx23xZ&UYd-V= zVpRn8R==0L{5CNfXT~}NszKOHcJUR$S)DNUS4h32XuE=7t+tDu7roHnZ9es@{6AQH z&S&$HVh&b>^dH+T!gVgQt{)TWD}v*s3xc3I*VW^L`Z3zPRb%OQyQ+MuWu`W&Y6A7q=z(zz&30b0CrH_tYy~lU@)A3^QcaK@6V* zq*AINg?v^c2>DP5ANA0L>YhdUTx7zN7#maO`UVSdh#>eXor5(S0EG^Y$`!QcE(n5E z+b+b$=RWiAkDv4-m#e`Cwn=-s2)l@-LNA4$NQn*$)j{DN6{4y(#rilD6oTr4U>!m} z)jz!M(+XGIb-oelr-mrO6;hj}0`f=C44nEAq5@zY8v{@W^*Evv8!ag&BSIGhD-iOj zjaI{ks|KdoKd_JlYXC8_3JN1(ma|N}7su!TL0!&td@T=_!C-h85s-ncA#nk8%?W~F z@jYTxM5_~^+TAUj`s8e?P$NqgQJX4E10WxC@1m$Twzl~jU zf*_bRkAu|eX9KA-KJhdAppUCUfp<+gXLpVc8Pg&cB3gX3JNTIoKWFHq8kQHTdQMY% zdwV-~L9jM)=F|2~hV;(Wu4@9$af(C~pzwv9N^hl_1s^Q!Slao+J0SD3nLSs=f_hdh z@*(FE;hvCB5Uh5qy|!E&Z7AB|n6XdRoT&~28X2&m)cpAPC>c2kGJ7vgsZUeug&o0* z{QjON)E6iFyfMK&A)g>vsqJci=2Ojv0A}yCYc~8O1*l{=Bq?H+^#1;6(U5mYNT4cJ z0nidY#eeD1k7BoM3`J}8!q0h4`2<1S?eaiBG=-8|e8d^9P{?6A@iFqdW&`pOB#6eP z1a!I~#*56Of#lJaj?d3Oe*N>u0Ng-eEI>Wuit-79xaI>bG``u+{c6|s4WlqBdm}bm z1!TD9k?oWFY4Bhu7z*Qmd3kv`J|B-(9f#o;UXLypoKGjHXIx7@K@e?MJtYARUuMW} zUTV9hp6KWau!#biwcfU}NdBgETu0!a^XMGM*VFm@^7``fTEC2am+9wxI@#eh?sf%1 z$mjD<<*;Z3|EJ})YaE_U4X<<%d#Cy*TBtP-1-eApPK^T!U!#hY4zeBLa;QXdI(5wn zf?($H=Ba2&^&6O%&v6)z$0P4p`7_N)RX|EIkxSxzcjMBTA*#<{DJ=}oypH7Fq0e;k zP}iIw2(Dl5u|ZHZywO#+FI|^yU^ML<%|6fNN^_DlDF>yczUN3i=2bpO@|Xp4mFy^^ z8ax}qQEa?!gw!=B2!bo-skhqO-)wi$%{|{t`4}S<1U*n8xRaiedq$`t6<^5ShOz0w zVafIM$Fu%mhvq2w^vLu7?ab$2_RfGqk|T=a#=4bPJ1iPu&T+wTICHox1A+kiQRbtZZSwxF=B?Sx^&VW!5$`wE)790ry}-|Vue*8- z)QS!b}wwF|t6}JSeJ~k|EXJ`L(M$G7&e_>SI$9n|h=(M%8t#;& z8nsY5<_3!F7>4l)_h{OsUpd9|`PYeE4=d&^e^vv_q2KD$&03*(7`P~EA03ovNT&8M z4tRa{=1$N71FZuk;$R*}i(fgqiuJq_t>|BT=z~H_>?4N%SAsF*)a@bI_Jt?_?e+im7A5@9bJ2= zYr9xBY15Y+>H;lp*mebJfJjNW?dopqm{CSL{@WBn>8qP@5~oTYIx8|`7{=M;@04Q8 z%3gN&*qaOo1TN6UX1y4g6}HuIJq-Q+@d}`e^3Aqf_RDg+=*!J!1I3IZ?>;Wdv8pPB zHsx~J_si>^FTz)m$fvBJ9<~+R=UtH*!!S-KelbToIlY6Xodfl7OT4{jb>F+W!S?<= z?{9F($XH_aYPHg?AQkJqOYlrSmTRD!hA?F%U&HFVA~S|zJUK|Z)Ipgm&AOA%V~e}a ze?LDjtFo-BbEe{b`HH#5^FOa34)w~8bY~t45)0u3+F!{qH~%DcDcYBvbpGa z4CCp8yIk1sX(2B&tv7?|$Y&nrAp{>O%$Xp}n-H3Y2O7V2p2#yqBwrzrbKX1WFznXr z&3fb9n)9!U`33#a`Ssc{>ov}yzu`@g6O_B?V;IKCOqmc*em--%i$JU$c?wK3ZxRBTj5q!v?mI z`IrTWBzH^V3Z6nj%mau=iO`3Mekw9z7{>F1a`T>n6bxmKeja;`>TTP#zT0lEx~`3p z;EsTBC51jnw^H`C%ew;O%F;nXDyhJy(TFfvrc)Y02$Y1QS(=ZY_&9u1WWz9w)06$@ znpHUY*LEFh?UA&r>u%fFwypCq5;YJ9iF+=<3pNQiMy0~038Ion4GAgQVbH^$G-)0n zhzAXhq99FTrg=8|7>05B>_Nfj;1}9+ql$a{cf0DYt64ssi;);fuDs@39Qa^}N#$m@ zqbkR7+{q_M=p(>UFW@V5#YiF_5Bd1O$n}BuKYm+e#xTr1K;3hYbD?Ei+?D?EgnB@% z>&Wt9qon$|+?_9yO2dju`k%KkFm3UDx7wNv}pw{&9K5z0J03+q(7?$-CBh?;W?x z+KZz+A(+9Q&?S=k&V_tQ+9h@&kxz7y@kAn@WF?8BD9nE@zBq+nQ1B_^l5gmTJNM=2$f$gH zhR#YE-u$=XOJW$t*^`5N?6afZW>-`|j})A#u8|svP7vlqqSRM~h<&h^tPDLquXsx5 zn*Yj&0)bf9ZDgP;3Ogk5NtbTE|M2dt_yQP)ad!IT>B;N?8h~ggyKfZr9=1vO5J?Wz zBv&{enjmgqAQ|tfs&pi{msg(r{v*ta1T$ghpEMypkdN3#^D&um|3H!dmzy)-uw%>m zzPVrG{WJ%VQvl}+M5E9+hc0N4q8f)BRaXdfrr$(PAJL(jmPFpZ02yZ74-tUjf|+0d z@1uGCzyDs@*;DD9=e8R?p8Tu!+H3FHRq2cR-L==Qed1p_#KAv=h3MhovOPU*6q>D8 z+tqd}XFD#J-8fe5>wlgu7UKe?tsJ8owfCkCLsbpEtmKNmN_naiy0RAPrdO&?+P0-0 zhNu}}*3 z)vHu6G%sICFJHd8yu`D1FVA0|hhFNgm(i~wGE$hSqBoEJy<&8J-Y=KGAoSq_r^>e! zm;TQWqJRAk{q(P&B%8bIPwC9U-K%)(bHpPv!NWa7K2!Wm;iGrlK#-^RioINkKEaTu zdU>ktgS3(BV5xoqgF|7ExngFdD9H{yVLf0i9?ML%>I9p{6?kqLQ_4 zTj-&lz*YsJnx;8v<{Mc(1*<+76%QQ}%07e0SM0(xkaGfdppc4e5NORA8*W1&=sgTl zU9cyeKu1P?zy}FRS^2v7qvD<*3ZteRDn(aZ$1zHxSoqTI_%XJ=!jDEn7>f0)iaICo z`G4{D;@A(HJHt?AZ+b;XaTca<$_LysF5K{@r#oZJ=&>p$@9C=gUVHQ z?EP-*!t9BB9-vqJPG(vbWp!EeqPcOQmA9CX04);lnSm zM|JL@3b#ZVeB$Kb9%RmxDmzNbxSDF(v;Q*9X?x=AyH1tMo&J46>ovBTw3S#S|%SudBW>Z49G zpmV_ohNvt?&AGP09e`7-s%u?PMO)DiBKk35f<7TGEbQ>O%$5ea5a$Geas)*u1D=2> zW>%R~)Kok!0Hlkp=mUeQlb>5hKLH%*qk?+@Y~JW7r(Ob)kYg#jk&jFfDOhB=&x)XD zcm98Mj{!r8(C5;l^r+hb1aEAmjH0*_0zDzvQnWb2!4mX*z{dkWmjFkOs((P9f8e-^ zXkse5rkI%8{ZyC|&Gj9TGL4nOQl^jp7JBx~xJuOEa!}_>MUUrMcT^5OTo+)tC;V{k z|3RNbjWqL7fZ_Iix+$|148;mLnt8gmIW!?4lsILLKZaHq3UDx;X`Fi*1EJZFg$Ps>whGgn` zthq2s3r?gf10V{eP)Ewsv(y*8tpuesacYL4H@CVf6nILLD)56NVG!g|kqQ2YJ{421 zwqVaQ@Pj}PdY{9eV%oJU!XJt`a}8w@b?lEjU|UBHF8&YKYY#y=49;P-agj~ykM}L_GD>AeK$Gen9zV@kM3=2 zR|I>K!y6T8Cfp|fgg*?Z{%UVGUpCI)E9YRmP(OdpX@L5PU zA%`d~T%Rujo2uzFN%~;$sbkpgq-CW5@4D}6}33z@r??sk_A4fWr&P~MMI*` z&oo1f4)(~LUYz-O4Smpiop0>CmwWy`5l0pWMHTD`$-gv|P(iE7%nGRZR#&npfhiyO zaUtvPWrek1P4?t-gclPnYTQCxRuAWo444oDg&P%Kk~`(PE;jvO6=qsQH6U~>J;ni6buc7bD!wpymhfF zlNb1;4eSq2PrU!i@s7FkAXdR=$SE2pSNuypq<{~%@>AB>SYbFYam_4Fvo&Cnfa1_c z2Te8Te?X0tL~`wsq?kV*Esv!~`ri6rBMkII&stNbq_5c14*?&bgEZ5^4xQ1{_Z=95 zHZ>et#se}T8W{&O^K~mDOKs5fDGcfd%j10M@p}FE z>C+qxt-%o$6r(zciPy!MN`{XFez2cop9G(Gf{;)m8w{H2JTPQkYep7>OcPAhbVMVo z9Awu%#)yd)guyzzv0`8lDCrXTTwS`p`obQHl0_2++20SJzy0rq&rcjt+1w@o6ZQ93 z@srI_-!FPNrTwd24|u2o`VsA%S2)QDn#3I z9*J4j@l2FC^l&CyOtt!hqocaM>5h)Ne$%te)XeANPMQr>Lwok&)2Y}4P_hVVY6T+# zP6ukFh=R5%b3)kT_L}max+TA7t>j1bH%i-rF~PPyi^qQvj81lFHyHW>>+8_%^5{4E<%> zDWFmrGTEO>{gX=yc!Z}b)rFuB(20WZvi75gdd~>V9rd?Az_opM?)k7M?6;;|-&Z-> zDDo~P81556dw)v|X=)Nbt*q1t(TMTFv@5n_ak{A69jdYn90~Tw=G_#Ens^p29S}&P z+!2uwL{j%myXu`-ULK1G0@2a(Naw*(%ISfpki1b-^it0Py8a0hkEfIH9i+IbS>Nx2}O8YKmS^v7wO zq960di|N=k!Y5BguQSb3?sLO;wG3%O{MS9+L<{@f|ZjpL+aDzL0zLVwZH%;FOJwrQZ1*%;;=W}{fnD$Kfk7j(E&0G>%o;U%Gq4vy;66#rkpSLoC&|`7v z6emc8Ieqr*`NcD{2LuT@Zvs2=k|pvHk*G`_^XJ{pRv1As)5_eLsQBy<2|X%m$BgM3 zlP6dc_LS`yx4XPWzc|o=KRiS3)%6w1?8(fLd#f@Je7LrY#VOnvgdbiE$+t&46C-+J zfK7SiOL3*dQMx<@(B$F8KRV$Kg#+E5@!<&bUAcpuPPqaFJ|%o& za+POPHbgLFm1FCKrG^B0as_6*I2{EA`^5-y4;bSUyUGkko?AaRET&#JaaEkhHQ&?#M?7Uq2- z)wI1B4}`=I0g90|!BcPIbpz?2u0g^N5>@8>A@j8gt^p(hoeVNWTRodGj7j(dfvl&e zk5AFlXU|2RvuDqr6Zjxx{BXK@kHjE!j(L})T1McR#6Q=!<$|U-q7#nDM%G5Bl`8k# zA}^H1n8`QK=8SL?Jy$4CyaGA)tkf0#zy1n*inrWew8Dv+E4gH9#K4kNR@@$*RQhpy z8O-2jlU+37ARQ&C3KmUfTUeRfcS%riEvoOv9aL^yw--Luy@Ka|{xPwKhbcv~9gkCl9!TVU&8Bu{&tobqOro2u%jM@Pvc4+_2`T76|+FX zQ4!um2B=PQ_@lp=4k2m~c+k)rKEzL|74)>dHAL=dBknj3ng@S|6D*7xq}cA2^3Vi6 zzz6a?zqok*{Q0xz=8k7yNL55W=(UvSa}IaR9)&+b&$&DaxLlK9{t7Tr7=X!5{D2Pz zxxQ_S7r4PGls;OV=*lvFKDSk(EAuD2Hj@O9UhNE!IHJl>n8YX^FWH2fpHQNzBvtrQ z!4=Nv$yGs>;xe9Xc_p)wKf5eP~4GIJ{ zC~t&t!GIjcH9GJ}+k}o)oHgPBy0)a%_Q3me1TdHHekVND2-A(Z)5kS&kO{aG39d-73DjkGdJ_q zZ%n&nrr0UZ?F;Lgw~N8kYwGnLVRSXNbfm04SoNGex)U-KFfZ*4SUSJc@X zA|Hf6%~(qUi6bdRPO=O2MM~N58FX|5=&@>e!=F$`gtX9&8m(@|_T52OqfV~rWB#aa z=c+m)DE+16p^czC1$^vsHAg;~KJtVEmCPV6xrFRFGMc~#^TD$%`zYwbBdO@U znk;!CBA*{ZUwze#xi!;+;SBSg353;QbMMTV@+bb3Z|8g>XaOi72$6u+986$Yr5V++ z(ld%x9?X_ohATo6mA1!QQZ~oj?AaC{0ZB3|yCZTtePXOK3_xjhM3$#sdZB5kJI54S zpl%JGruFjDe4V6N;VElJS&-=L^{3x1oI>upl=uM~lHg|gtW;9=r=pvS{`{wtb%zcr zCTI*Zewh5pUCHl;1CXN!s`UN~{f!Y4V`K#sVj#0cm_Zu=gpYttrqDoXn5M0tK7INO z(!BWd#h*o);0|Y@7q3yKk9eaZql(%z%Jd=nd3%mbn@JA(+)6bjU%96GDzOZ7f*6wx zr$MUJ#uSl{EhPku5TQ<7)<{|i0%2ACnD9Zj&4cKewBgz{gqFY=is zV!$3&x`hVMzI@6Ph`i~GOC*cQ8qeq=wG5do?k96&@#1g&zK;uU`>gRiood=@p*dFf z@qiC_8fm^EmgxD6M*)R&!Wt5h4|$TbN~E?LI+5ZE=X^Bn@)puc@Tr|L?m)doD$yIpYUE!^bP|UhtCgv@1tHLQVueJD?=2WX|NNRTfMt;S+)< z)+I&HvJY0s;bdj_lpPlI3EJo=l|vs)4uDdRh5JKBKIP&TPN{MW#UD&7yHU1+GaeD% zlm_>|u^k-l$@y$O`v5*r2q zSM>vG76YqQe8%^2^Z&crud>$AB?h#FJx-CBK=YwWk%KHh?Um@G`;!uU0uc)cGA4Jq zG6S7-mRYLO1!)OsJih``b)I!as))wcDQ^ahBOb);B-ZUo8u8~rAF17JTG=G8b47N? zAr8EZb@q@t)U}>Jp1V)*dHR_2&snT?#Vo9Z&qXY_tH=mCTJs9{>>LQG-d*dE)R4Wp zGGU636Ek^i%igT=2Yjv#7#fouUO2gRr6b&!c?EpXB)=0?cCDym)Q<-r%#=G>0Ug`# zfS=rq_uPj>mHqplZk2z;zOAK-6&C(Y93qv~N~s(n1W*b}z93$UN^&Y}n#XXeKA}hOp@q`S z>&zv%elDB?dLbD;Z{C0& z1blQ5{Gc-O(IJj7@!APSI3KRA4Ig2u(2mpdEF1YS3(?S(P_g(v6_?5+GYva-UtM1Y zdFYz5$4)ujGK;99o!{QS+TOqZ`qyd4AA--fGR@zAeT#}CnlaUhqf}hDUzPhhrsUC? zG%N(4E`4ezlq7)}2@Vz8A}FR(tZw;r7j>kntH+N2?^ib>iFYGx=FOY{q16ki4%4V@ z{SK!oOfS>9TkmtWy*E9i;9Kq+E;j@ZWE6ecF!dI-`2Y+NV zC@R5hP?+Ta0TF8=Q zAG#vHvlVZY3`$vP*2GoP4_Dj_-6(!|PBIYhz>zxO^JLz%Y7_Dd#m`n$b?3e5+~<2b zx(SWEt178#Jl$%Cgd1m|$@b`MCDj=|BVkIcRjrmaspD19$Fo4pa#`yL2x*KVL!NnS zsi~7b$kV~6B@j{vjU>rDF*Y2!GI=;|OZJ4hg*JWwd2>^BXc!nF%P7@dC2lAh;$DAl z<6-h@USg|4J;NJjU0yD7?BJJpF1L#BiNE~9GCAkBz{iW~gfikpRcn%^)>40U#APJD z6&$U+t=&l}HB(l435+zrBK0%In!Hrw(3F4=kE}bxN4V)F4KihfScwT2Epp|dHRPls zYaYaj*_PS!%z{8#$kS;!k%oTe9FV444tqi-PNaNxY0{+=NAQW@2lnjVW%6*BZU8z~ z&ij}*+*E?-6`SF&%dHf2?Wp8Wf7=;FSQA^hLL%2C@X@WZR-SRmm5-ROOe+@_2sKzZ#7Nn$)u~D)ekWw?7)>v^iM;>vDgBjhzgyv{b z`Ms6kk4jg0Fg*(i_-LR!r<>E1#={*$Xe{}Y`0Xxsabh*=Dx!+@T7_ipYr$umQp=Lb zc2rACkTMfo6yj_x*0310HH$`zOtiI)31sA;Q>>FFT?P+L(8Yy;3{}4oaW+FwawoQW zDe_4PDj_HXh}CrzFp2;O!5#t~=%eY@DHn7Gp8R7Q5dfv=1=N)CWa}-uMlpNho##s+ zlp`O*hcf*&vT4JRu^|GoFNDNgtq|7&KI~uTWJg!hwZWqdkntuZ{Mc{+9gGXs6e?y~ z1#UPqH1d^9iQ?stUJg4b2A4zVr4*N9xSP=^pD>M-@Q7nxYO!ZUyeDA8jsD}uqmKjRaPZ>vOfUY_mANx~y!oh6 zU3Ej$Q)>oQOWqd<7b4U@W;5p zq##Ytq9p z3?ZsQS06sV(*d9oEi#k2n4GW~1%D|S5dEl(VWL-d5(ZJqaLJxa38FZQ+g#C%zd*`g z_NXouArBR1qDU2&&D*m&`BF53K+|t(a>?et^xx#2i;G;>wdR?B!hg%$+$)<`S_1<~ za|vJ`rr}mVKsB6ZGJfnd z6BXVDKEr9~;~W&^)>%xSo~DCmwb&PZ7EQWUx2A)4OPNKC0Uu!oR#l?Fcv?hvpx5^P zLN~XEwj~FLW(_i)>>|XBEucQMe-c#J7{QBkI-LA_R}OI+B|#|nm?pM20&*)!D+MhZ7B(xz;$KG0kPh|d3G zJwM_cAfq-bOhrMch9x?~bYJi}H(Sh+?&ry3$_A`;degT80k?3B6(|xa3!H)20(g=7PKxLbNgs1fSb;`-qMi zOMI&eg`HK1D}ZG*GJeJ~cOXq9(}%WB-iYPnjTO=~Q6Ahbewa)^95B0yGtGJFtqQIa z@R0*XKA+R@hVVGSaUnB1EV52X2d@j3y{^#43w?LHnLg?#H=gCGhMGJ6*4QQ>dx5aj$N~Mk)#{W#)?E(`-yrh@X^co zqzQhI07G_-cY_+0z=sW{^xn^|(@yQVUId~Yhu)DA3sSw~khHqmVj&KFZ%Omg%0g@% zNF%XH!=uckGm>qll#<}l%a>aGE*JI0;rJ^q@#&EG+$GKq4d>~c3FzdR4hzvo&e1H{Fqoj0wKFE=&U6?S z3mp!P47!Y(`RA!oqqg89F~`2pU8*sO*p4%NNvH8<#2q$uDe5!umY-ImLli92hw#qT z>mTB3AxIRjD{j{>PALVCu9tHYM@YdJEe9MS2q{iBSIZ$F8t%r$%4C?awAm7BY(iOQ zRppoQ`}Dilp^$zv@X?6GZV*$5l!bbFmqJ$ji6D!}Ira~JV}*ax@>YvAm*5A>2P;U2 zW!l65qIsR}UDh4my-r));kawD@UTJ1&2*yjrDFY*GQwmRQU$rxMX;yOg2-lza=LU> zJ8(KaJ~+6i*LURk!y)F+(L?bE%O|9%B|ten0D58xl?n&F)76t9j0swnS>kfZTk7Ap z>SAljJ}Po$B(3`DG*T4BDAFviOGO`Q&hdPgt4LC$36XrdnNb(Tn?6lp4Za8}ukg9g z?b@mwd?VbL{r#-U@pRX|X4IpBQ*oe)+^>Pw_WmGbOx1YGM;)kjyhpWWn$%ISWHCxU z3zbBct*K!&Q}|@AK=o+O-JD1HVd#WCiQDQhYgBNiO*B?IC(GyjKg(ZgNebn-2|NPe zHt>;yv=Ibh;n**OJxH!rwtz%Nt1Tq&s35P%7Ba*>W@Oe9%)7I89v7S8hS22CUo)53t;Ngr4HrZvWZkU5;rOHK7ZAIDvm-iBcKK%Pil;PXSnhb2ne zo(aczv+(6G*HEmTF@=<}KDEQW)bg+fKA1mNmw_zvTW&`^q+tfMDi zB)m*Y)yg(jWf%3KGDkXA6b|a<&#Oa8>bkD8g==gHCk|MpQMv6cz&SHw;QsaDQ*c_A`b5G>Xg3%G*E zv;}3JKBL=GB5#2p zodkRw<1v6BPhitB;4uBuhNPrn4}8oX5}+m)6Zl});Bn0pZ6@yHB6DCWK_#mSfe(j< zv$50^0v`m$LFRfM#S`H8AsVJ!X@)m;kww zh96ql<%QHL>I5)h4oVf#)yp;zY6xo4WQ?9p1s@8^QhJqpUMJmNAKmz1_ddFZ?IZZe z-4b_X{2a*Zdi3Zadg6Kdf(?YBo%7iUQmdIFePoArnJAqB(!-_Rq3ZmsI_s;uZ>SH{ z*$?-yE7jLkqd4`ySLRIR;G|L1Nm-s&c~vQU%ch|7{Y$HoQZG~JuR@;A?^}VWGq9k%ozShC8952 z4+Gxj1$|Uu>qL2112=YWNwR$I%kGh%^+?1qbM_984<9}ZeNNa8mK8q@H910@pr@8T zccC5*n*HtF+eT{V=p#g_i&UkaMs)J(Fru^nrW~E4)_oaAZ%5U$Dmssgvom};lLw%r zkxpK%-^X%N=jcVhALtr?T@0;^HU~f#{>)OE3o}KR(bI3gefsq2x89faXKh6naai*+ z)j8M|Q>j3ZCb>9=ky$g02-`%u@8&wa$T`em-?}Qb$pM(H7u%YphCcz1w5B(8NNx9M z3o+~drQw(4C(b~hkG}cloMJx2i@o=p=#ok_=G;V{`*N-imrw`3=!*4d9xkaGV;0rp zFV-&TH&5FFA12*x%Q%wbc+YkgD>?4NHG<4m0?i(@HO2$m^SBLLK1R=)UXVv>f1zIV zvg<;i#Em=PDxgIt>YC2TZS(OI9A?(aYP=im-exsLjigoTz7cy>usAeuK{oK=Zv^w8;SrnGurjH=%B+0cVl_+3jX&VZEVne?To59+sZaa8vOQ5Ss5 zpSd!DJPQl6#K$Jh7VrrNF8ul1ZyCDC8;UoNhN)0A9uE^TFi*5nXX3C5zLQ-yW}Kl9 z2ivr^E&`q{HXy(jI~; zG<@nYU5W8zcWK}=Z%!BMp6SljP@&ikc;HM9qD-~x97!^d*0jGlK! zLoajoV|fx})@7lRA&MV@X-a)o2Ah&DC z*I@xQ`rv;V9w5hIXnSexn=FmN7NqsdY$vT)bSK$8H}2oL^yZygm+l~`v6N4+}2_~^Pz+(9qc zT>EopyI5HWeiF^GW>3!%zj%tlBg9P3&LNGXI`X&1l!eaHh!^QnGf$>*y+|cV;A7J!xIq{`>4hh-Cq&63 z2qWgkL>@?B11RxoTRrVtlbOD4fr!fZDXDv7_s*L!d=7tqm^Fs~3;qZ|MW3T1#hszg zS2%HBO8LkACeO?Gn zMWHQ$W;_8g`-6cqjF@RB^0Uy%O{Rg<*aw{3-ex&d1$>wS%A#h22)BwG2*Wo10Sg24P9hfOq{CC(B;o#GnZ=PXM_NmDs##Uq?4D!E4U?g z=|fjl5n_jYLh4!f!$u3SM-7@EUJHDLA6zU?t#{s6(8EZqnM{01e(YdVJ_824D>c^w zpe8!G;$x-gsDN}6i=wj|zmGVR z)C`|z^!W?G=am-%KE2gb)Jd^on`pmchZ?OieM()hryG5dRDattddl%CgD2AdEcoKZ z%oDZMixwCc>Iyx9&!ElTihXc9dZ~`;4KHd@KdIeAZ7TvB=;>BJfoIUV817O{4mIi^!$x{H z3w|QE-q*c!`-e~vsU#5^91bcMi zh($Ji-pyVw**)e@n|3!tbnGDftuJ>lSUU8C9*9jBI&JsBuFSp15D9_Gk?Y|@U%b&( zzBrap9`ydftxInTKL-zgzbEv3{WWWS%pFNPyM!O&&W|4L9je6f@+w09Ehg7cjHtL@ zp^q;33p3!A|J!S*|B}$_X4#_^`ziYE=>1Zih+bbrsaJPi92GHFu_qEy_CXAbo2O#W zd?NJdrd5X+kE1>;?_uid+oyxq84kMr%q5b8Ni6J<=`y0jZETOqf#=#(q1x~frsfFA z=$SF$6)TBsfNv90_7WfD_=p>ZQ6#_X?q}~`06uRRKB5TV(HY~XlBXisM0)v{t5BsY zkgkIj^GF2ZYY6>#gH{Y51)IH$+1$`p3N({gt*vSIz{f6U_I-stBOsix`!r7$Th~XK zriV8AgLES0o^SA>hw!@`^O4|=9_)4PT7wV8UDbEd=R3cGLLyAOuNXW#E>V^~tFCm= z8HOamNO-3YSOT~=1Dwi@>t#S((~O<4hqZU4#Q{C&Ji;+!LEdM#ul)DNkKa$i zY0Xpt6ZivLqA|kIv5Q56O%xbFhR@k-Z;;5EFZ;zD%`ALpRmXD345+z1ws(0V$hU# zk@mFr0iec_yW!2Ju;n< z+8tx+@>W>=H+N3g>ZLv9W`!WD{VB$m=hk0TgJ&f!pC51*cMwq>X49n&nK#?)rqDU| z#Qc*b(e8NYY2`2APQWR>1pDwDtXM+d7C}#4`;=X3Otrb#6qw~H(?%! zHNyx1G608yoE)%6BO#9(S@9zq;5WeM4L^vv5@(E~gp(n`vzac&1fsEqyinlm&CRpU z=aXbWBb|_t&`hizyexbx0Ll#c`K;<;G;?1`P^6QJx3)K03RVb&$;9$R9L}k}8}z^) z!s{;Pm86`J3F96)w9iCu5^?V`e6wAVE-6F zy70@wPlL}#ZE}sTF@cCXf3hp`$nZIQaB%;3zx!GXoI@ULo!|$l_a~V?fzOk#Z2Ej* zrJ|vKI0#HmqIP$`!dXoZwjSe@Z7>Br+SOn%Reb{o>d6#*bYO|PW`0k#)B668;MILW zKgqS)>gnwssvagUg^E0@@ndDn=zO6z{k(#k_hZDD2bGtEIMoyN~PyKbGZr$mn&1`Que(1^bQMi z2!Dwu7funt)G1>PjL^9fsadddKENA;x>$F)FH&IZ`{5pk*`_|f;qTb1s!q7 z(9xk9@>~mTK1V8PBO%30oip2|1JPtW^ihkTPdydG-WTXGg;1+%s_dh?AGv|!mVKC-*VBG1@~z6||Bkle-nq48osXSPTk zKhmt>x~^KwMii|jz06Q$ezL*GYVkzF3EC5Wc07zF>`67^_ zDV#Etl|pg4Ok}Q9i2CBWM0kQAvK{JsRFHfg_+*Bwp+^lh4Id-~UB4Fils<0-K(YH3 zg*snSwdIDOX9x0V;UULo`pgc-M^m0Zh+O5#UmQ`JtpDWr{-rzj@7#az@ZjsO!yc38 zF$#PhIO;?1flQyrm_7+P*Y2*=h~c)Ns3=0CjGYb>#h~iZsKMShqNb>RyR15?s8hDH zH+u4_k*>@awX>kq$C)YnKy%+&{Y=r-{l6*lpxQRFl0KWl3>zgj#}gH2&xkl<-Ip?7@i!_Mo%-SrGWP4zJBsvHS!#I00 za*GO0x$W_?sJ$nC7B?*0D_G==Wc&PD@cC!p|DDdIw7xh6&w$P1Rm+s%Xb@1>3(dPRHY$Am-3H2bgju@0B^k{GI5%9tE zDcVTta8lBYiX$C8ibffxMqQ95jXok&V_nX*z z^>gQaExiP8Soh={wE9`?H<{sLS+F4Fy%Q6aVi8SPGofK?LSqwV!U+B37KR;~c(0Tb z?fL8C1_d~g&LxDK-R5K5x3L&!UNGI{r9M*lq(dK*1IC7rYJsejULbcJCh>hY)L;_Yf2gVc%GebI<{IOJ=^Y3 zM;JXD6c~S@)|5XwZ%ui6E9^mUuYs`H_PH!N)HakPR1J74%)?0s3K>2O2s;HJ;A7Dh zm@>iMW!}K_$toc#fydIIRP+HpoHV2s^x*?KL#-RyQF`yzt;2_h_skv<2lPBR^fI4^ zjXuCf^pW4C8o%qSMi~<)@R3xcM#YH&485uf6nW9=-)YSrDj6(~F5M0LY{$n zA=NFdA+2G$?U{1D${J7`%?c#OM=~P@KEMF@+@xkjpWrjr>G+5ahl)HmB#$cw2%Ax7 zcw5#lE}REGUj#mi`6L^>YTH09O$Pp#47lVKL*psp7Y?czThDv^O8HcY_24e5->f*^ z;|axegYr&KnWK*KkH}u7J@~!n2<8_P`NlI=s|*y zRu|rv*QGT+-#J~6j`p<4;{NWzaoj8d&ItlNWZ<#qvdXSqeLPHue5ne@WiyEui98zo9)v2c6dH6Z5R{yt+54@wcKPXkM$~ zGqG?`CKx*c&L9%u%GmUwJ$U8wT+8OP&2*~QfY{>X`FEXYgj`Qgm)foCJ9)}_9Q#6o zmxwkf^h3-j8O01AT&*_u4t#KeT88Azf;p9swqIPiBKTYhd>nI5a%KTV+C1f`6ti;R z0o-h;*}%xZrc%la?Hx=R2e)2-^_};QkK%$k;0%2B7njB=hT<`;xYa;ym5nrtJx_@xTr2 zfGw#E)k>my%PCZ6IRMG%^kOQ_VVMo7Nxou)w(~`fO0UK8NeWV&FOBgfi8x=8;&%N8 z_`Jbn`>8WtFqr)j>of>0%Q_pHWdbV1AN>Ke4Lj9I!~-SEt)JU_y@I16myRvE4#}XsESAGx)leN*>s+iayLe_3-)3 zF(2a8zkKJ`!NHw_N9?S)r>uptY%qcjcHjKLzkmJJ51!y`Ju3J-Iy@p4jpZYSG*to} zUaC-qc#1b2WmLP-Gl{ZuuzXS$S<-T&&f-YD+@t6x?@|4ddfUBXT`Mxu!>8NS)tNub zp4E!!_P<>WEl10j?H(V}WUki&LuX9TS+29AZrE@r=pylCY#Y5V?C=(wQzhU7cceA?`r}lb(>P|2 z1z%j1t}&7bPyhrlfDh3h8i*SB?8pGp)y#e2KG^}=Y3!k!z>hy1%LjdC<43Qudupc3 z#0q?l1)sflj)BjC;6rTZ2n^l&yPy2zN3Z|l_z}nne54LOqEBsQFEQ-BU0=OY3J3av zI_2_3RrjrYuDc>9syCwLe~7ccigtDT;V9}JP)fOKqATp7nfm2Z=XB**v9>Y zw|@HfKmLdR`7bw)K+gBzbNHy>BN;XwcX&{8)N`Y5eU9p-nWKt&yNV2Vr0K8Z)f)Y9 z_sPCU)qlKN-+L|ZXzzV3N*evML|>jm{3ox3+h~77QGLs~MM?q@ChkFjgqCF`&SxEsvEQhdQ%B9riROaTj+|aVM zGdurw;Df_OApsy}yH1^Y>nM7L>W&)rr2+S6X zIdADQ5TljsmD6CAe~{?1K4P+5ggBl%cRKkt{qEEq;;eUOtRdVoKVmF%c**T} z8LtbI$6~o*$DV6fufm?1hz~I+kss|v^f~moCbtY~K#?FPl^5%Lx7R`uq_|!FuG`Fk zkr>)xpG2!EqUfXJciuTZcuSVgAO1kvc*BRBK5xDD^S}Sek6wKb_&g4L+$zf_tU*0| zbfi_7SaO3XtZLRk*XtnBf7!B)RKvZ&)BRgZUsviZs$N~Nxyu#bWlQBK2BEZHCUu!X zXs?bqW7Ob4=@fVrY##RIOfk#;KlbMnX1{bajRB3<8xC1mqZ^tOhg{#lG`B``FvB_- z1W^?BO?Dfsl035yO6Wkz$-(p5t(LdB?X3uW-ldPOAOg;}y{FwDXO6q2usE$IGGt2A z2p~vdjDJs(zIqdTB?Uv{M6M*tDOdAH8$U@Y(iTzbM>~Xrv9s0+n8ZJ@sbA<1GcCv^ zxNn9J^f7ycDn*?y10RzI+b5n^Pauy8EuWXc6WQYuf=K%F`R789*aL`~0rQ#SKZXx> zPf4Z|R+d~iu_w|e?0&VV4@D~I_2tLM?+HFwKF~+-k&X^!1-#N#Pkx6wwW`5L;ItJuP@VwE11KI z*`dv+^V7~~llZQ8lJi(E3D3kq6+9f=5ayzdA5C(#?W8ju#Dj&SwzxU``OuaRE|&@6 z_!7?2C<1>rUB>C!*5W$;`Q-h|^9H8@kG(@KfH*u%Cl`@=%nSl1AWoIy?6_G{9#|n{ zB4;*4Q?+NO1HbJ0kYz?RS^_>)Tn&QGI~0^~GcS%0floZI)QEPP#A~iqphqu`B9RyS z5a+1{%Gz%VL>y|qE)?y+9tl$_+vO3htou=siL%25 zA7P*?x;K|Stem|Q*Qo}ck%x21=jt8>$oc<;dg?4cx$A6*bLtekxM-$?YbRTWg;|r_7@7E|9I#eKNMs3Do^9)DhL?(Y#2%9MT;+GgOgV)7 zJ{4gIXGlUT&1s_1P)07DtVd^7JjD+*xQagdlB}N87dk*KT~-N!B-d9FZ9~UB8Wr`y zbBYDTd7J8U*z=iodF}K`3K6;sV1SPrmcCX5ivwm5?NmaGn3wU zLjaO!Z~6^=030dStfm?k{@7&VrHHb9U_l-WILh-%ZR=2|()OviTP%{c3uf@(sFA0v z;G-Dy*7@Z2A)yAvRj+WCU6J{9od}pH3?9d68iU6?LSwh)O-ULLe)u%xsrQ;M$8Ty0 z#F&z@*zlEk_acr86x6YFNf)RycwR40#4vn9sTPa2+&6qKTb^=PJEjll(JRd9;3G_w z%pQyxtu)LmyA)@s443wBcROcd4-H9$Q$?$WLpt?o;1k^R`uMBkcQo6zYxrn=&s#rz z?X}nb^R3;3_g??WkL7mVc#_=~u*ZuG3qD!tWBi0a@JM5&o&$ZO4?HhHD(bIT5&5Cr zM~YXNSl!2#KC;3wLj@kr9y)#OC&bC|5>It?-q$MIM@%t%6uWhUKA5rjBT>=Q=qWWB zYYd91gjlf5gcpK5!+anYE1T8DjaV^i5OD=M8lu9C;NgPK@-teHLUG{P@QU7OvT1fM z@LBUryC%Q7m=BiEXY6vtNZDKmB9fQ*;3;9%(7|-EhOwi?g&rxH$O5k>WkLfYgEOIe z&w8wt84I`**BQZ2&!jQNpFyE>U6jEgV;9AA9TN+znLPuhmERyb6!-{i(1%g+CIpHN zw1)KqhvJS!k?o%EQRiCB9t(!xRuS#tjPoSjt>?LesU6CEz@C>(sH?ObZ~BZ6_{oC)(Ea%{TG768xbm_+a}aeVF=D zIbO^6eoo3&A(|c_Xcb46EuZCS_*BK2=UP5pNu%EFU9RPv@!f9Hm*4j)?5JKns_V#0+p(O&!$%#-Lw+e88vMV zo7hRETm+oh_S!avz{FwNB2gJ)88^Q|BhqZzmM9uO8`F}1Mc^Z;3w#))+~8|4o5HeL zvixBC0HfrU2R*iXIHGqm?Vbw7>1yPmPVfh1-A?Qt_;a@&>b{dXuI#M{gWSBv1Dc8Z z#IM8G6TB?u=|5t647vRHmnS!N_ins*B>4RP@SWHG?Z5upr$2aWckk%vz1LrV{nht? z&(RZ>9ya(qruw7dBitA>4L%%_+JVn9B6@73(Xl34IeV3QnMKQ!@KrB|uql>3!j<9g z1|MF%D%L~YCx3r=`O~FZT*V&n18!vaP(qimNEo70!;|V1G*z2FhRsb4Y)%&YY$lJl z1yP>nIfGly(Zjql5C6;xo+-0LnMe`_M4A!Hh>(~=LXV_Vv>lV3whQJpL=2dU1Dwjbo^Aa-yecDyq&K8B8$W9x$eS%d5j7r|MjCutavvQ? z6-D5aH1WVka-Ml5dZzRvOyiry>WR95_PZv~?VT^f9{e_Nl{qq=?e)o%E-aoc*VlneS=dh@gWVGjhIXy-(m}A}lar4{pdI z1c9Ii=$Q=Dh^-FE!aA#mUX|r@?!p&>4-c=f>2y;!|EA@y30ekbwuW$QTi{c301<(Y zPK{%R%r4GU@tT2+2wTkG6aKKPbX^G2VY)~uFn_$oEAAR!JFjQKtIt0dugi$RkOHce z0YGA0XmVP4N}!{I(?`;6AXz=N)`#?BQk*Vr-O^$35Z{UGMP60LlE)DEAUX*#OR{?0 z20e6JsQSyy&P#FGc)IZ3;HPL^Q%+ZThUTT+q4;tF@&<3XhZV7KaE*3 zhA3XM1FfiO!VE{k*}o20YL)bmZCshz(u*aGyzLHsy`5)jf?e)P+e4{n^C+&Bb2um9lh ze)`%^{||fT(;8QnruoG{e}$>;`7HLXq^*~=X<{*pT13E&jiEs@kt7C*P!hsZ$eAf8 zl8s3hGEOp~uos>J@BA4CF(zvi;FV->FKtCJ&+~iUqiaXYc*}6k1pQoyukA#edKMTUfFeB6nYwbo@d|1Jz6FBuz^ z_`H93L#7WNq>+jslE$2`mG`F;5o{A_Y-xkTi5hr-pE!fe9~W@}AIz-2JU<;7%b#rC z(7GpPPkN?uu`;8KyF~LRzKD2rW>2RYjriDs&s4C<+B|Ba+lK8PNzNX2U_0OTP37w> zFVAKAxRsbN0(in0@gndcyE!I~->CHux$rm>F{5TI`!0Mxx&$8!_6S|6ERD;^@vejO zH%D_NF`s??hns)+-+wrul>Oq{!RGy+Wbyp%>|%a!5c;IL^xbEc4?gD?A`f?~37=kH z>Y$o`tBjvzch>db344G~{K&-~8#Z`)6g9SYLN#7f86*P&HnVA`{g*F&{`WVqloX}6 zTgV_WjwHdSBsdKKdSo>b3Fm%SEmW8tsTWZm^0kq_`9GFeu*s zs^DXa$nqCo^yRS6Mwc$xL6c5*sUn3wpvl5OVl%XvK4wWRx^nV_BDDUos1o%iDXrpB zd8nb1*RJ*I%sbmYiM>;Jsu7e{YEYP^8x-(FCeVzWXJp?GN8HETEOW<(4^0h|O{kU{ zNXQW-1R2UA`g&0Ga|EXF_^=?Yry^W zwq0HPI2IxE#l%*JqEsJM<8|T;LhZ3S`G0O;BjKV>cq|!)5=lQ=>Ohtt)el|a{>2q}F=AHT5ze#fS{Pfc+?YhJv?Ys65_Kz;Axb*G2 zf=?@Lm#*N`Yo*}>Y;rNK&A#imJBmS{+XUIS=JWP}Jb9lUp9b5j@n|Kmmk!cHPp;Hz&H3`fR7O%E+uVfY)RQi9PyoYQE{lQSq&w zJ7LfLZ-I{t9~)3ZU6hyOCbk$;<55l_+&+0c8g-!*Ps{N`JJoOqhmjxCFbz~7ev$by zLG?%vh^6CKP7y1=G7It^t^Q|FiZYzvY#V1b^At-YpuxF}$egk9zq7wdNPsl7fI=SSyfqR)JOewN;;igKNu zy-n-pi}|5!pLt?lZ-LJRmQPO~;3KUGd>~JTaEEKvvC}V`xBW|}=WGcoNk~@wX)r!j z$rhNQ=NAXfm^pZ)g(Tpk&6&F=Yl&{KBI(Cg6D@zlF+r>Tw&S0bVh9N_3w%b7){hiM z^Y`G!#_-X{VGoh67(Aj6@BuxHz(+BEpSeDg%I--4MUS5j5EOiFQBdIoW=s{!AB@}- zwq(miFqsxMOJxsrS>~Prk8(H*{QTmx7WC17uRaWQP;IW{;0binNkbRv`^Xbm_ZsX3 zJ_NSJ3eAO_Tp^LU!@2H79~v=N-=Fk|R_y+&a^By4-|0S2d;)VzaF*1>Co2sYQIF1L z`n);E?el9%@R9M;$|~NT&yP%>Gy8o6ALs*ZV(kDQEmzd?xjxLr*uT~z$)`tc-_Y>7 zmSUazg}E}lI~}=dbm$aA^G6y5HF8129{ZFvIv4Rj$b&A0L)t~z>KQGB5!#KN+#XTj zFqLXA!{83|ix@tsjn^8N_QDAaZ923Fz2LOb}$(-mcNY} zdWW!toxXbFiVc-21UihbvV82krW(D%TFn>dsgMBv6V19wlJzMdbR%jikJcoQhI*%LR9-aIM(h~TMnl5vcIhPkg(pWN(J4Ka)7hWX&*1ctpp`D7 zU>#epp{)@*2rf7(S+^~#SuYI|pzw#P_IzAM&)&lD*{x954%9*1fBWkF|9g1DO1Jp@ zqI6NEpECQaastKU9QJtbcU-WCAF6wmd!#e0NYu^)vP>YjlO2`e<44|_`MI76gC`_e z>-UQ_w{%aY4{{+}JjvT)4q7Urpl6TfR?W`j-p$5OJIbQWA2w4!+o{O}1{j$(<~!pI$xIuItVGT-&VTPtTszbj=UHx%188 z`MbB0EuV_E8$Oa|tKb8KR^I0mkIyxGl2upO+mrV?S^vt!HS4G-in8!5mi?6Emy z_-M&SOaAGs;{pObG&3CPutCoBlHvj$3O*b^%%Ai$-dv7VE_VzTQ4gQAkl*X$>}s$M za&S2(&-uZt_wOG8AK}pOkvR3(2pI-GartqC!y)ZO9xr$F&-4L8t&QQI zm@30Z>RZT{ekftd6lJQ$f?M$6mEMiH^MK73pvkXJ`Fwq)in|gr3w)kv-8NbnJ)UA^ zSx-fu3uQ9T<@bpoPoYOQXXpDjZ+=FfcdsJ~Dp;+k<#TPC53kRh_A}Uk|kHdR`}w#*h)&m?V}`H;{62aU$pSZh62X ze>*P?F0n^@n;;JDY`D=fUK)+QX1X1xMzpe=m0y{dTls}{$8c_tZ-G^gr3X7wiYYu0 z;bH?8&ks{?5w(q2&3J&)g(nqWy>auS9n!j=bt>adFnu^h|ntrn$VBoqoh!c3(!6BsM_Xyqf`^cpKySiDZO=~^{MRf+nSFI`J z(1%13Q!Y_9z9|Q72^8BQj>ai9r~)LI%Q&rrN(asEk|h-LD`i~>-eJ`lViLaw>}ZfQ zS@&j__gE#rnW5$Xm?S7$F~%&wkcQNJiB3k;gQP?QAFY*{sU>EUVqwI~IHXjwBV;Lm zH)x7J0*(RX0uC`v)nUGW`0Dlf{QUf_TN%DlJ5>?L-1iaBl z!7qG1BsiZqu*T`9LztsPMlF+1*t)9fHOX?=GOyW(v6`AU9yiCjxJeT+Zxv$(xd*(T zVaq_MJ_4VESmka`#LK{|u8DCnC2h#RQlgGj6YV*4CqX1S&vPTjl64p#Q5(!CtF~k9 zKpo92CA*Yijv&E8)cOAYy%bV>_oF^j`>bc;3T|az)wYo0^&iZdCRL)g4$rL^9vD4( zeQ|E%M=hMs{?D7U|EuxWH*e0~fF4qw4{x&Z5`Cn=$13m7XN^?7TBX9$Wi@{f!}9v{R}o_kKsFtD;%j zYH2|QhRzxK@rnBv>J_gs6{j3!Va2(uR~-!)qld6MgLs2@gil))rjK6;Kj(7#oc*fT z8@+zb{tGFu`SCY`&!I{!&OW72-(4fUe2~^F?DJVZmNct1+j`ZW%kwq*y>?vxA@<1a z6WHj5C~8*>OsRh)97>vRbC9X>f((olxVt_p`-|X1fG~8@Cu?J7*R5(LwS{Sgn^c%< zRJNXp2GHV`D#A@HeS!-3sWCt!#O=@FqyM)4Kw0q*)f ziExK{4H6i28>dhl)-{MhpZ40|-7)TMh!ptLF04G%Ipy7Vws-0{Q$YoeRK=+Q6V6EV z73*_@cm{2>w{k|JMwXnZgMP5sgUL~KkZ_3Ta_90=I|luQ?1~_hg>4auPRA3Ii;|A66C4)QVF91T<^pp= z8xzhC(>m>s@6KlB2aeB2N3}b(`uJGL5l;rSM(g_NqSF=e8aItXaQA#P@sx6evqaBw!?@-0HbvqqPane|> zgwSPkN3$I!q{J8kt`h6if6Sg=B~=>*f|=l>HiqSf@yH&FcB5ViK4VJ0<^MHxcGB19 z{%b|M$S;)aZlZyyErzM2I}>A%vhs9x=WJ2ApB0y)IIBWXY5hL6_jlY}Jezy?TNLEi zx9SWrDX!+!T2uiS6dDe3?a&c=bVInIt+coUkf4u~k7UyIb){Z$z$pR$cz6ULe9q-t z&W_4AVo)7usv#9wE#3Jlyd~)_3*ckw^ze}cpK>Puh3!@SU_3g{0-NYNQLJvUb-12X zXL%y>n)UCwt)F-A&ZM`cv#SmoFH~i5XaDfvi1)w`RODT2j(~w8f@bKviJ8~dU^l1s{(ZSKa=`%lj z*VBi6m(|-oUaau8>#B_XlaYBXC{!$B_!54Eo&R;a z!$D^?LkEp$y3J%5`k7!jWjiFq=@I4(TQ9r5!7Q%{VKolI;7r7(8JB$LJPLgLyE!r^ zt(&1vwej(&8TIh7uzs@J@@z|nwVsfy^Jix|MHM>}cPv>vIHhel z>0g;XSLeR}@?4@v27)9%MK7Kn9vRxS;bDYQ6UNGINs>8aZ?@5yUY z1`UU^3qD)N!-YTCNiu_~2t&UO=oEVugh;#t71|Hv~Rf*E5ME9|BtNhrw4%6ZF;ByHn?0Sw7h?=~g6xK3>QI>W_23 zqKht#-xD1RZF=$$ly|6}Tpx@lRk~YPJcwBx4vCtvsWXC*C*5%W_)r_K19dh$zj%v! z`jpps)!~EH!?0cr#86Kj;KNJ09zH0$ExnYlH*&bh@KJjo!)AJVGI5`aj~}NK;4u|o z{BgBD&E`q+k?n-x@fvkg{;VBxc7>Pnc_v!X#>>uD`H_tvrvm!08ggp(AP*K(j;&xn z6r(|RxRTOGo^99j)Rp2!rblxEDd5uJth z_FzmyPm>6O272kMsgEVPHJFg;T=o1VHiX7bLRW*(YnCT7DP+<=t*hXxMtOUTp~TY> z@JXqK7M34*EQLamkRmX_94WvFdrGw`5sk-Pq(KX_ryYpFU_AjsboB6s3}q_%JcT}o z^Mk|rxx7JrdyP_&XO#*|zqsjQ=oeY9QGr+eV^~&Im1ft~X@k=7N9)!)jx^cGv5m9H z{-Lw8nJ`!9MCh*0w2*5^Q75gAx4Kr*uAg*xT7UWaeFhfBhOC0ln-cv>sxTIMf`e!h zSdD?t)p?#8Hjus8)>xBrb$_^c|Niw?$AOPLQluFUpa@^8g%G4KHxPuTQNrwAOUE|5 z{-{OOsB1JV%n`B2_7kUW;CR}=c?Eo6O}}l6T+%+eb;~vFC+^$>x;1I(sMbUS2WYgI z7V|(>Q|>}0*dq*~kZ9+s#A24VKL7|{&~mjYPd)f4Z(YU6%bCMuG2+f9n)Lwx4veZg zd8@1))@jtL8{wwB%@lz(OXwHGgjeYKPqutsy*ND78H4kqebJ}ic|o70+R|0tb`^4Z z@T_4|4dyQ$;N@mwk}MeixwJ}bk!MTr_@FJ+RyPnSwkm^$hK25|(Rm^G5SVwtmv4QZ z#clln(RrCn{8c-c4SP5eIgbQ2jH-z(7W3DXUVUUZ{ATfy$xkDlm%n=}vZ*&*%fK`+OZsb$an1pO4{q>q!e24~yE!9wd zFuDZQi5Q)a3Pc8xE_ju!X1;(K1bNOOr*TI!*hJdi8*2;3zN}7C)}Cx9?CHzhJpmH9 z!~l_c_&}ewxAJFuQaPp`kFv9Ya^PT^`WQZN#^Q0hlyR6K;-;pO>%<<3J%SIepvQ9i z?C;C%qb3|!K34NMx1+q=UTkIIvlRSUD^D{+7Cn45E=%0$wqTDOCA3c_x9!vi_#JOi z-LCGcLXE54tF^q>vV2B{5269R(IaCmwM!I%sSsmNcAjn_I31X8R ztAW|W=Tg)VZ?a0*^-cMH-TDoo08foXDQX?fUdMHj=X{cIyT;@df}UG^kL%3X&<#SH zBpzfHbWNxFo(P}zj5zB_>VZ8iFh#~OK@GxZ44`g+S}>y&_1*Qwvtcp8VQ@Ud0dJ_3u;l--%r0yUDa zcf3W~kB_|Z7OWi9T@r#+H=zf^cwX!8^_D>6bUjYa^8>}v)8}II^mKD^x>vic54F{@ zQv@#vw!l}^X-Ht^Zdz)%uGAqeI$RhN`h;N<_E;%3jsJSOjT1ZUqp^m)E;wOG@KY|N z{3~~zUBm9Dl%(RKk2J|{QUn2~gIHD4NiwLt<&wMygFkiD>A=EA9r);urTH?;3+~|R zkp#lsas>G{PN4Gqc+`s_W7?wTG%o?C@&u7?B~hvFtCPH~oM#ThQ(p>Z=)TI{D@X3| z(4PS=mKT*f%@PS$_?{o(_+j5Awj3(Y@XjGl=j^=t)`kv@nLRI7InO7w@nSs%e}3ca zF8vYc4{wme$!!gcZrgvOe(^e{Vr2OEa2+{?1RU~x+^SGcXZp%#zt-t8jshQTy7Us4 zG=UniW->joeWTLNv4)s8a>z1EA3i!_PamD}wxjoO#23&jr7qnyZ2DSatpId^U!(DnQypHF& zhl)p-pve|XvVdqjugMD!&%&5uO`TB@vDJbso^%O5J~%MJb}icHewKS0B+1=_wpeNGp{4Af%i(w%QJwZ{BjA%xIsBD6^i3dXK^~9P7~zbe zi5*OGaeIeGBcAE0grVcazN$@?eZzzMfzQYWNFd|cL8^jJJ61Fycqv61?7w`&Z>%Vq zvj-JcOQW#6k}aPdF0f-L89oU`rL_iR^S7fwDL!R zPV3a1ei~Ukv%IKkuv(XBW>1FroFC(KK3B*~g{T*w*Lej&o>n;2-cv_f zSBGV`=S@d z)g&V8rMo4Eiw&1Oabn}6qt7PEL=vv_r6*e>{~}};3Gk6j5`bclOgrK#@Tp#8dxi`i zD_5Xy`)6`GAGVzNhrJU75|O8~kf1Z$CZg^RWg0f`5gCP=r+b!j zsO=@vFUFkOu>F$^WHw?m)`-Qptz773j!3wcu>$Klma%rS1w&d!#)sbkOj;pLZN=WU1%8&hIQ0vSw6tW^Ptmxcf8Q=jG>`@)=W;_ zncy?@_DWzosnU6Ot%o|D#ANuK8a~s4&qw`eUlx@Xe>C>_{=yl~H1o*!XjBWc1+YOC z@TSM1mJBD!JiIl*eT~XF9RLU~J2TUO7f~ksJn{T+k9S6vl5S!IVRiu@FLbAi9iJyG zpA1#aY8ruH#4R?EL~PF|S>S52%pI&Ck0rc9b)q1GJ~`tw0zYAmUKER>f)7hDV?&3U zb%6-!wug@w?cCFL6sloUsfNhwf=@)q>k)eX`0>*hDs7kDbFNC$i}U&6Ma8^&`m8K` zdgORoQ_JT!4@@4pUl-^2b>f2mZYX?+7WBUuD6v_fITmk(mno>YYB2V4%N>4_YG?>q zC!GS?dn5+ipR0u&%HE=RU$s?5^c=v$4-fQ>+0H4k@ulX;>0tW7@Nv|ATU~)RW|x=2 zPsW`G@7}+E;XG>6ZDQ33msD+WGoZtuag#H>gdXm0>EC7xi+Sd7FnN9M%G%MfJT`kY zAUR<$eYW+51)sQlB)rcWXo#vS6WEdB>n43Ls)8=5j%U{$mXGiAsTpiFXA)@-e}GSp zQ7+jj{aq`uKwkH!n_jW!neGgqKJcD_QT`qFT$-Lev-K1Ba4@pOEeobrT){F6)=_P{ z^eR0{(J3XS&}WX<`RjfAo#k^bt@gGni9S}=%jj9Ve8X!*8&fJmU7JPcV@q41EBI&_ z5@@en67j;F}?%yuuso~S%N8o&_T+C|B6jAjzJso=h* z_?`_PkG1h)5&p38VnJ0!Z}}jZKAhZ@8SbF$x;T8$md`W2K^H?aNHZHQMhl!oc0hXy ze>{Iep}g}@AS#~^gXuHhKa|;XpfkO6rjD7@n?CO@Rt!ESPNwV5=~_qr^o9?2pXr2_ zghGSMLfwkbsm<5WJW7q+t>l7GnUrYYT`Q@ND~r9uBzggyWLOFkc7`M1UjdrJN4CLwfhhlZW`fVWt>eG+3tPi^q1 z3RG)Kv+4-G^a^y*>860=9O+ZT2)7OAr+0n@U_)>NeDn@A8$22sK7LQThQjKGl<8nJ!%pLXsKp{{P zcC_xRDgqxthz1zO5W?defu!;;3sFnZc~Bh+^;AwD_X?xWn7~8FX9`PoX@)7f0XlkW zHOf@y=fvGXQv`c-X?Uc`RbB@NPfZ`4wxb4P`}4U%U=&+GpjCm-zbu32YJt`?*u}tg zy~FwM4rIBy>vlT1-*yGM9VCu9b;#AD?i!!Goeuk9HfFn`zalEP7XFmBWmH?3HFo73 zv#Ao9wuTEEJe);{p>%zuG8K+x@hncsIW&BRTlSbN zlu#o?P?I&*sMhe_CeRm56j3>bKIh-z<{Z+H!me(F;p9(EJNu$5vIU56PkS*Gd=gF@ zuzPbE78x*ObXUEU_hJXxcVe?gy7$97!AC#m%FSu`lTf=bL_4zDbp;IukEX!q#KWeg zjB6$N;HOaoSc_~QJWE<>qO{!J-@ELA{KOkC(4!rjXOa`Zk9KmR5hygCaaR%M(%{df zialc6r8jc=G7fEhSq!Y!ys%I45o$Cdd^<`ql(gvzY>bnnIg`9B>DCK9>o;6U2?9kw z*+`wAA?551baF}b^_W4gG7DEgfF0x1#3kAOP?^Ffg)2S^Wdq=+7 z-4ho!F6D9|3Haki&a!wJ=kZXJs!J_{$45#SB|_6ky+pkalSD5Uepv~vplwlRJEf+z>vIltMc<`5b~K_;qWU3@zassId;rZBHVv!YDy*pI z%o+-IIF}`yOrS@+VeY$N^e2=CK0%LU_7rU-vxm|53`h$x2ljY+g2lsWrCM3fN*rOz z#;Z}q#q4HMm0Ji!x@U-!`7`*0K#8|s*+4o%@cc+N&z(D}w>aPbTHCL$?;J?`2P*=f z|8|YTXAOI(UQgP-t46L~f4?Dc$Xz_#5)9=2T{!Z!x68Q=o10&8QjMg2%166Zw8=Wr zW+{z)I&2+f6$V0-fDy>b_DZ>nLy?S{EhYKra?$DTpi5&`qGYyA?5AcsBIZ>^Me_5^ zn>d>T2KV+60>8cY^II$*_G)qcMw2X!DIIy5ny+@81viliN|KI$J3U%8f&ynYQ$=cw zAZ7lzs%!@oVa{ANeNB@M30D#fOtBW9D|YGkW~l5!{lKhJ(3!Q|ITtX_%CU48W()>+uVhPZ>mB>6v)sMSCvn=+5~* zboYq`q}CZKZJ(bz;qY+&=J4x-`TotDS|9A+S+QMLUq(=Wa%;WU%8=QY#K02M=f-X2 z7jF7kiAlF7EmTx44~UP7KwruB@hLIliF273!ixh}Hz+>k5`S3ShCPU*E@TLaI(8ws zV6^kt+4kv9$rKs^A4x#-IMqx+d&(VbZD`i8*LwV2lG>-;$uq;JwsH7X(ltY~RTb`d zS6b7Z)S~mQ1l=mha5gJbro!r?0HjHLOE++-0`4uzno8Hi)F>-Gi6>jP4R7EEZKQeF z-XNhZS#)Irr98u*b1rq2wYMFYR?G0A%st7?zJN;srnX$qH0xh)?&PI%3k}8&doB%< z<5{t1!k>1w7ng?ApkRY{Ijf9VK}?Wp)RDj_un_T*?`O;Ku>r*F-0FCY39t|3D>+qtyMWNj8#W@X z-BoNy|FrP~LO*NU^)OCyH>|+F69%P{JxBf_T+I5A_h0t=C=8V%`6T<$hb$#lNL_R^ zu(GIU&zqt{1Cz8{lO0C-k}90njceT}!5f9DzNQwzE_P|2W@P~(g9lf0fCG9GZ07-Y zDDSf=OFczIE+I6!D(aH2nf($d#bf@eO-{hVFQ*V~KAQBiGU!tg>_pJ3$cgG(@<4PAw5f$vl;_C}U{h zRou)9P|;F@zF+#N_F6VNE@!h#Idu7x*SRv6l711pCHa`abMbq$gnK#NV# zW8r3ECHU}mUtWRg5D6EWVuk<~v1VIOl!(~g=5VbBo$}hmzKM^VcsWm6F_d!Wkv3y>=)(Ok!sxUpA%Leip@AD&>Kl>{YXKx;#MjGg| z6(8ATs$LF@n-Z!Tn>#CZ!`|i9VJ#E}z)pJiIONWap(M!j6ja z$TVQnm2;DQBQ$wk`!e=hS0(cjfDs_TPxCFu+XFQ$3QhG&^a?MK*M2|yEHj47U;!8O zCu_cED~6NIoIh2oGFX*uo$1nCJ81-;s~kS;$ha@pv!>d7Y2d=^6BUfGdo-6=0v<$> zI*C1&RPrbv2iqAFpc$U&^>~jR^jYlC9EqZ#b#@09Enhl zw5!6?d##aPBfsaK8p-jcL&vFxGJ)hC?v!ghfJ1JtOgGbrfL0>jRYb9YM2q;$e(?C{ z=Sx7`-`P751Q|{)N^*w_cy)r(Rz6PG^eDhg-IJw2GDEE<5;*smLmy4(!1s zin#-b1RuG0oLZ=kVAO@Vyb1y+2U@oRj~0v~27j>Xy@QuTHyg-j^ysp@5@$Ym{KyUR zok?)l+pg!{xJ|{eM7)YRncF>KsCGII#*j3al*O|hT7&>zmCC=9gVH}m60Mw5Cjl%8 zqf-$3*E88X zmV7@e$Q}lZ>7V#nF7WTeT}7Y2Cun8%$em-x03S*I9*+W&=!6p68fGC4JLM*h7IE|Z zkqFje;gf83ow4)L2Uqx%t`EAr9O$84DU(e)qo!=!o2s<%==@*s$Mts|X1#p*Qgdl~ zy8Cf9djfnMx4-J!MZ{~vo}&_==_(M8{3NX{oKNU0|AEjaD5#qDY?d|{BCVCDWJaRc7O8@Y_=H~C|+okt~?Eh5ZXPH9R;0FK=w`yaRE*G|HhI(M~p#G#l34=(N zd;akGlM$ulU2S(LAsA1^9fj10eNXfx1(ptL?c8(x9B0cOP9cAzrkA=Tjx1!i_L5l- zD4C!A2z&+{;jF8{hIY{`B?bh008iXKdLcqlpy4W_6|qjp3mOU6a=A8L?XTx{BpI=QgqY1V4YjDftOF9}ELu3pNJKc?Fn%rrW1fTY|mpabN-LaglK7s3!EMNt-)Xtfx_t=a%eW}_E z*)teP8ek3W*9D=My4aG93qH`!m=l1?zUh%;^yMb1ZJ0D}^trp?d~Hs_cTiCP((u#o0SGyR2*f zrwIUoqL%QiOAC62)jj@YU9iWilzdsLuTXFd_7DP-QcLPZ$|a<-bNZcGc3!@qk1^H5 zNAyVuz8-*`te{TmdC{j_KaVfozB!l9-v0XQ**`9L{^fW7`v2KA1KqfFWD8c!`~QD_ z0DM!}1I)sicmv=HU7C>HY>Jtd4ryBQ|EaNmQYY>NysghXbOy!W<@JTH$bKNlp?;OW z2dcO1L#E)z^bK4&6P^M;jkt zG3#En3vPqJr@J3tzH)z#A2okI;$P)y`CtCYyPvP$fLSPt9mp*_LbW)Bs;KxKFPHyz zqy0Nd%6#uSk-Wk0y}@r=o|OOPKQjLil-v8f!>O%M#2?U&ej|<*j`hf2Z#DE5^+R1- zsnb-;baUbp+fm{v`CtD2DTwouOT^puECN=Fpf&%1|G2;UOLo4j{%TkM5v8fTz763% z^7EgzFx3=k$VOUSx`uguIr}D#GOaY@m+O~(`9C55A8dF;QT%p`bL^k_peX(^Nzv4% znl@hQ+~As0vcAlEX?jz&hkuT%y2Dl^+1fK-^S?JIY-X&Qn=RVxNZ%&%%l{Gie-8Zv zsWOK+1gpS4_#=8sm)(7RnGmd@Xw7vu!+xd~btSy2wC28$W)7oTw`Y#dbg;ZEbooCb z{~v$?Y7=acV-TUGSrHM%AF?;y*GFe=y}X|*8+kw4hPKCtp_r+5`9C24Pr+zDb-aJz zbBMeCpfFp=pYvW0KN#e1@N(VHr|0GWko$LSR^Ei%gK^3(LGzb!LxV5O*0_3tB$AKc~EHfhF%&>^V+3d9Uxy{dU{MLR4 zls$gomIqj|AQn`_HypID4y*e(8zJ@z$8j8@qKYW{7b^rH!{OF|vs{Y; zSUbjY9QU+mmmY!U&$1kD)n!8!MX`qCcs`250PaK5^*Fxa{SI+{^%4<9MNt)xt|`oP9P z=Sk@3TVgf}GJic@NL!Os@i?9Zib4jaf1Ed4f;m;l@eRJ;`Lz1jdc)olwJR_F z7Wh5%@88Jf|A73{zY3WCMbbYwuZSxGIljS4aU&hL7hI4UzSoM3g`a|=Y};A^+rDhK z?>q8g^Iln$nl+=M-M8Z>XD297M*r`rgqV#mIHKvDO5Vv}aK&@&$dVDlHX zw4110{*TIE%U{vm^N?!|#pKU8#4Pg!tH5+(9aZhjJ_zV8S+0!d(3HBjJh7&f+{WB( z8MTi!i8*tt(VZj|bn+6b9>J;P4|BORmpDu5^`+L5w8amTG zE3tu&L;&qSvcq*)cjd^O-@tX$Ro&`s4+@xaGgWZ%m&^ZQ`AhkOzUh~X96!QcVqpBY z%L`5y5l1#FASJWmtzU)>2THv8C2&p_efJ=OnHx^Bowb9H;@hmr1am z96!c2-A2SB1b38=PW>--d17nUJxPDw^;5_1_b>Uvb<_#2H7}{Ofo5|3CX?pxQ7D z1JS+z|LHLR%JOy-VVSAT9gGS&mbh_M6uCKs|CI?Jj`4f}DzM8pKOMtLJ8rTsdiy4E z{b&n^lVBAzUhLv%TCZia=0IGYRw@63`155rpIfcgp@l;s)YZNW!iz5M*`-;JoaDvZ zJO%ee!arcj_hsqO^94U#cq&l-oAQ_3z0;Xr9}l8nI)9I1m}1R)$hQ~io16zp&Br2k zTcbaZ2dp`E=3o9+wf_NJ{)&Yah_IB}U+GgeVT133L%16nbTUWI^i5XSoPYTb@|XKb z6fW&jqz)2BJusFqlHWGDN4^gtPfS86|FigqH0}&rfY!YBMO-zA!Xq@x+!6+VVj|IU z@hHzQq%8mQ`RAy`syZ|@uAWGHgO@Cbm`NFDVEsohIQ0cG!wvbDzdp8~(++R%G1uYpKZidZE`PQM z#{vKV004vht*5c0ngRd-0000000000000000000000000000000000000000fB**t VEHa@j$prua002ovPDHLkV1hiY>ofoW diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/cloud-81ac85ba680343200f54.svg b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/cloud-81ac85ba680343200f54.svg deleted file mode 100644 index a033545d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/cloud-81ac85ba680343200f54.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/complete-f4bd1db5fb786efbc9d5.png b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/complete-f4bd1db5fb786efbc9d5.png deleted file mode 100644 index 2bd5b6250d1e60aefd043cb9e190eac5a32c7a38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 497091 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≫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

            es*QcCwu$l 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

            R&V0UQY)oLN1F7}p5DBuF6}*OOTaMpVxv`rc$2 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 md&$G82384$uMffGSeR%?;;dkcln<#IqzK`Y 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 z zV#>dUZL5tAeB{#2+ql3!U&46k8B-c=2-Fp<>M;0=1J{suc%T=KIKSwWHv-X{my0s06`h^;YAfY(c-5SdRkrfmU4r1!6 z_QhxX%qP1I9ZSOD7_y^0f?Kt#&uC+|@GRwhMQhOXgYpK9D~Cp^W>m>IvKHw~pWeAe zpkDLCP2h4`$p$!ggx!;oQQWcAeP1onh#zzxrxE!rgLE?=!cPz}#kN zVYGaypgP!Kocp%$Z=7dxUMs~{u44SfC)pObO{e6BgNi$~;?2eCHwMhSGfD(>?>1r6$>9jhK6G8C#~ z0;MF+eZ4P~ty_DafrbM5Qi~OXHAS%6lk(kapY*8gTn_&{o=Dcaz5ZtW>~Y%IJ&pNP zKH4-BL80*vVJ2g|non=pWv)mYvYQb%*0tU~nM-@=MS=e_MoxoP{uWL5xuZZE-fkK8 z1*lvBrKKl-HC^^JT>@RNcAo2sWD|$y*3-wF8m~ZEQMx9H z*yXnNEzQELL`z9ex9f?{ZdfHm&C>kE>WRP4Dl9Fz$~P_ERnW4{Ye)%j&RKWvROD;wj4DjN+x(TZt0&Pw2F;Q&SB_o&i`2Uq>O#mlt3O55-3{jd zB95lId)?SP;hPT45SRMc;&Ylt@&7UPRbg#)UAH*J-MzR|yttH7iWhe;QoOi@6nA&m z@-}#JcP(CAg1dW=32A>^!pH9D~=hQEYG(1V0(e!*Y)aO}!zWPJu=Ig>zKsX;zXHrCMh{EFe zV!_Me{Z&li-p561YhCqz+zfh6)s1yy1b$kOe%)o2hG_ktKR~}PA?UV5`t=nId!>8) zJ^ojN9bzA{dfQ_#vrc zow;e+qT-B-vp}bdVtFREKR?A1qa`J-^z^OxhtyiN4!_RvvSie`mFBUak$Suol4ZtR zynEo$GK_k<5DKcUhb|IN7U@iHb;w)Lu>gKD#><0Ph}AAm4=>LkkLMuXbB^Z+0PF!a zL-_xH>6hMs2XDB+hJ*-kUUYl7mL*@bSjRBOesGPO56r;jfjz%wL?d&i&YY2Wkixt7 z(+XDod%dLQzn>l}Et`Dvl`bxh{Szhzmb(ztWCkv=CJ?hT(u@Kq!`F8u`fB@kQ^9m#Eh(z z&PE)zWXKw>0gZ@!ZG9AqDpdLw=@9L4uOEQmFj%>mVks`Q6fp{>Ar(t9T_0Ic-B28{ zA@$56$^Cr$qFuz63`AQG3}pndyjH8JQQ|(=ncsl8)$|lZ-}0Lar~cM!Ryd7(wCVQ&pXD~x?9#+Mh|y>)`N1zaMY!hB!QNwVBdaL_0i9AqKN zm8zcXX>LVUK#H~gK|RUFrFU!tiKNKvo9{`pEBVN_ayEZ_#u}= z((Fn>CE8licO1OszgrF(G@WS$cj3d&LHs#R}6CRP(WJ03Zp zgI&>eU!~Oq?CEf1{qMdn_~F}ry#T=WcwyJPFd={Fj72u;V(Ozfm9KG~hl`xCaQ$*JoQ+S zYhQmN`)Ri_aWVr$nL`gkzA5P^4HQX<$}WJH3n;;id$R>@mZ{HH8&X_b#w|fa&0sKd&2i6mqI^Mt_lU z8}|9y4^-%aRg|0x=eRP5hFjr{T&bC89)vLAjBo{MI#0%Lrp z*EP2`OF>A?sY%+L)fM9Yikx0rV!^v%S&7gqcBSA^msYO$hp^(KskNm_yS_hXG$Co4 z9&cfH(wz@OV0*KDk7BN~-cy>Dstl+3(wg#MjHL$f`H%$hB=~h5{Q7(ma3BubQ4hLK zftmmB=f=3eZ^3>!06-65DeZ$#y8QaQkXwD>wc4Nb5h4mVm!cl6)MKSS^!Kl6z!&Kw zVuU6~VVO1gBTX{>S?E*NyIw@8{$&9VuZb&X%TPv|H$xqt(Gf{76-#a1qECx_YZAHL zD|t97Ng6qOGe5s{CIhZY3umE!x}utlc?D@GGvRnEzP^{u3h~Q{ZDqFRt_d{BP<~;Pz;%#|7JW zf$n$1W;42OhXJ>WfLrz6pz&(QYm*FIzU|sv99N3Gz3-jzp`J*|F!a6Tb#uhac*m(} ztF~`kxTg$z1Ym#K1{fjB$mgvQ5M6-bLC*W~v&g5sjq&fb=Cq5cmAIGx0BiWRcanZY z)QW99_qi?2rwc)MXo99Nof7tmt63+T#5oF+S}U!-gN&r#%@7+rMrD^ z_Pf_O(*S|+7y#WfgYE&I`lVm`0c{yk7n{om3(9K2Aeif-1XqSA?8Ad$bi|g2Wu<(| z0T!`pGVB?#u$t_KiN|w<-Fh_WW)tb=YWI z0`>60d|~s^s9w7o_l_cdSE$Z%EL<;uO0A;PWxD+%m)+g3R=T(d)#e~PoYb)e3e1|1 zg5SOEed(q=GSvrX2BCOhHziO~{U{A3RlI$gjp!}9Ki}#+b6A>+Ef4H9MEWrV&;@|b z`Ewo=bioH84!P2OrM%yvgS7-a9sRufcXF~=65x5`q083n^;j?A;aR6RnlIv6u>ZN{ zWvnLEKdi~G<5|K#DBpDF@g`8e73L)Y#-mnz0X#+kGz29k2+q4BLu}Efrf#+$bIE2E zAr3(g$a)Y+0SqFNPZtpgdj{7;M?}EZre2LZ@i@&OV|srI-W%Vb;Xb%Mdk<>$cKZeZ z&~P=y2C4S=d9rQ$^RC37$`{m+{fGidrYf9OjH=NycAR3m2)2l}${>sz(Lu)OPF6$G zPh|~i50o=huPJjMZq2sJz`C#L_9dS4kIkWsbhpywj60-vCy`B&JFkCNwa525FmT)4 z0jBeD<2$vxu>UMTSOGKCdpc-n2gxVWZTm5`AY*2SAJ+J2LK~_wd`;71BQF6S{{eO8 zbcM_TOoTmsXZMEv4I0EvQ1QI1UEOriU}TJWYXZJa@liZHF0|FVdV&>=7DNgbeZ^3l;XWi{Pc7p9(goEUJZ6rXRJg@w-dEmV>jFlh1juCvU($h8Zd?X`~%$69+By z#AcIbuTi4i{KMTZr}~Q)`S%9_lpbrE!iz~PGZyYHXR`uZK0Y6%s16@3XSdt76Ltjh z*_vnI`lx#)F0L$@BS|cFb5azHakCRU=CfaAXj-^mB#Xm-hPg%v$A!LC(rV-)sg#wk z5*fY;=)nCD!$7-82Ojv$cRQDcwApR?(VuR%1OPmb<(wObfWutztQb@wW>>RM$OZpx zqcHD0n2{7R%%A-D@F=xGgo>h61%aP$zP83w^a>^ck35?g?S4Hdj`Nlier-6)!fQ)ovXSkY`mf|O9 zCw%FggGwk_7-3z0$GI+T;&0nUeHb38+RL^eyN9Tx{X(xer&y)8?s>;rFTpuWfSG6S z7}mXoSV)i1f-0Mjy37qfW$q-^>G)- zqA-G<;n@ih!c5a#3;RSTHo*2JTf@AkZcFIae;VQQdv&%q@{&5ALa$Xh69VT+!9JF| z0l{=e83r@MA8;%X8W<_b)l+j>UF{oejL{edZmzq2Nce6c$Afq#2=_qhmoXLR&OjUVnTl@RVYHa zeC!Ig+I|RgZ3;uZ-^0Z%nl@75efR~wgNaE%(_CE8LT(os)1O=$a{lf?x3 zcxmwXw2QIug8!b$R_F}c!_4mo`te=Yq&sQy*hBOD-r}QYE(X}|yLzW~@$1l_nOME` z@4>|VMber}_>=d-?jdJw_+uvQ6}En4`2`_+gqK-rZ!rarsv$dhf_J~3MVQ-vaiV_F z#naj&BvmzyGEW@W#(HTY*#u9ZBg*#P##f`ix@IEl+N=Pj!!E`=_T^eO7ivT;IDaOc z0CzUJ`h|*~2mL=h4uMX%kaepstIzS0u(*k};}cvYrWJT7ANM?t-wqPd%HOK4%Z`k# zfK3q0soz6?;l9L-YV|Mw0{Oa|5~#^acI0gY@3*lEk9mic%yLFYh@P$MyKXA+J79%= z18cm<7{TU!dcv;cH=vwy33)Se{lzWqU4w#eMTc02QVJ&Eti>LKtF5MkTf==l7gt{- zJ0r!w*?tP!At3O|qE}^*J;ybFRp>ElUuut^q68+P8V%wP)$^%^+hk?o-Ds-IqBm;u%Y-k^SutFk+>1sW zqAa6DxG%$rqyfp8QP`Zdf|Z9MQXhg8=`nuS;{C(ayQ>SNm<0(ue4$ROfdD9G*n zQ95L{jyBdZR45xg>rJhq=7kl6BDrk#^H|QLifs?o&?iOHiS?#-^G$y$S2zz;<`oZF zmr929MN*}o5sQ7(zkxCW=r07MFLEUJCMGU#2N*UDWp?Q6WJu?=?6O6-_IRk4Z%~2NymYD-w>tB2Z`hU7=BI5z}-p zYZ>AnL+_R9iz?|*tOa%Ful`U3fMP^V4lE@x-E?Wo_p(m=JB$L^dQCFZ)PBTqWtOHb zUTG~3B$(Y>bTutD_7-vp|Gu3u$o^t4>O~$bSFB}obxMQjZM|JccUGa{NaMPc0Bby$ zMCs^VDl&N2uT&Ta_qz#pXhePM!CCX`)^JY5=YuV=adc!09gIJyF)X+k?%7u|sHg{{Hm=XUkNT-I$1!k*CC z`kF!vECdc2hTMl*e%ed~`lSXxMnhgL)X)m9cw~upMS_SGc7`hPDgu*QcESU5^S%z_ z`J_mH{GE8K--xHNif`grgt!Ic|7db{`ubU(C*ewQqr>mdYwT){edLo2g5zs>urof~ zN}4Za-+a40i4oN|e~0Mx{@M>BUPJsX`@-Zw8V^kGk-YiiUi3IDa7k92%vqhFkONEW zYxzzOU$qEgMY4H~oEj=^A)~7bRQH#L;W^_IR(b+^hbb7ibw_IZyz*ZAYq*Dp8yLz5p~ zZJiv!P)#l|=KQh5)TL2h4jLi*`QCCnaoW^*PLhK?P50o0eDx>DEoo$!R52DDNNq-b zeM>c~cc^X95f8Z8&4PB+0B-^Sgp#@QO(50kK(BhWOR%MtYcosQ<-pNZMn#+0N(SQ4jv4$%a zmvim2ixD>04bmY5sY(^fYz18OIu+MgTe$Xy4p$R%`difyrOsw-<5iuy^aGeAg8K3Ar@g7 z&r?4eqOttkVEgw-PKLgL#RxPi_l3x|WB!GxbDN;u{ZAe4r4L|L3i<-N2VT0S0PgvNls=YwlRrm*Db5{CX)QQI@|nw z1x`O~N9LSP4DB(08u9Ab=T6yeN2G0ZTo_I(Z_kJd4TRwM3uG2+ZIk?<(m{4!`Jo( zO9jh8%2ppM`>;JN77c72T9=w?c(%l^ue??M76`|bQ6i(@@3-I&3?9}S-kI?iUBp3hVtV5y`AXxd%@B7&vW4{MQKx^+Z0M#a z`5xzZ{1vOE*C}t@w&+I~NjU>nnBi0fPeC;P)DJ%*yU)aAK9}M_y(yoF-VBIC>DG>c zSaWj)DXYo*?yRMS+p@vt z40v9tC^}SdvBJu3rwtAhbu(wH@v6BrAohFBCkVTvZTIi`PC>Eu)qyr1QzQzc!*5*6z9Ax1fS& zu3Vn~V-F-effFp=*?y$kMpaS372_{hLS%b~!poMUpVU|G$X4vP&D8@2m&}8N@x4K; zRqlFH|12<2?n;-Zp#H zYu7*<*Te5JWs|sid;g(!v7OQOIZpr6{wW8ol7sSeT%vGqrYghw?r;0M1V!rzSDqhK zw{j2jGDW+4NRlSH;#8?4g~;jqB~F#vriW@YD=xmFjU;J1%M?gck;78ExVvKhe8pho z(odJ4@yWAI?DLk7LYHwb;|_qKXi;PS!bUGU%~gUA0ZVPmXk%9N9|Exd>a*|gmEH&* zU(a5jU-|0bU%qt z3q~ZNc66uowS2U4H}S}0PJ+CGN7|+|_tMVD<#Dt4DNI$?xSo3$e{P-yMe&1C@}d?F zSuf^BJ;d0XyoQ>`NQtMHNA9Ba{G>a1+(TRbk?EU0wn|>4H*aXj+gQs#4&r$&{B>EC zPWH>lo52wr-Z@htJyTv7H>0=oqsW8a^vq&6dI+@ZNRo9JCrk`&CW2nrR6iDQ8~#uF zd?5xaaWZFidI8)Lj2IV~R>h>v`59+u{v%o0+HlXW-#YM~7P_&!8g!0sz?k5g#!aK$ zI?%*(KM*oFi-^f;Z1qZGaXxdv@2>T>HIql=*?XAIw$SJC__J(hHi~CNE&yZFI%*fz z)O^*0+@_$pIP$Ky(6OndQl?lf8{LRn$M-CHZ>(^*n-ZG3RXsAQfZ3r?pZf@_7q1c$ zaHmN)JBtGbTq)x$&b`+tv66Ql{A$v7@)#Dwb?@Rn+{c0b?C#GR#@pm2JNiO|G;n^V~Ad1Y~n&AFLj!3U~}>QcUvrJ$>)daXwk z61o5U{j=9RJ}Ou5W>fA*0C=_X&D;mw+Rsr@zqi1w4yHN-p}^6r!1tJIM#{MPNq2CL_I zB_cUxhOM7Qi%HV1viVgLm^Ju2cxV40;fGSG4E*=lDQHfB`$$1~T{Xn}m z;cIp+gIAs>?f?9puC$|e)>MXS8Zl5ERi>n?=4J3vj45(uqFz!xHmr z7UesHaHpE-H2z*!jQh?Clru9vdI1%QV%+Ge|LZ39ms1UUZqvemvl8i5Q!2o_wb zJOf+ITXR++qg6B|%=sWVPWA5|UA}AGwUmSCuetiV%LY9TqO4z1u~?a0&3UU#lK+K> z6Yo9P?`7x_3IVbU6MWA7eza(ZUpX)=UP&6pIq%{2Va$qk8rWHjeK);G0gddaWj7hC~1 zOMf^MrDx)y2klF}eUbK&3HG5!*VfhNv0%EofOByso{q1%?~UZn2dl6n z4=yIm1@t+ML^qV5H}DP|(MpO;xmL%e#?D`tZX;-ETf3S9Grf=H#-A`QmUs1H?($>} z_FqsUJ}I4z+3tRZQ+CHDSu?>dRfR!}-}XHou!J%<6b0C_GfosL0_T6EeL9`kRcrJE zLmX}ts+PD^6dCn4Wd8UI6!};ReO$MusihNmns1rh6g|$Opnev46%oT+p$)k0Z?ixk z6fyjUyy=R^isKlOJO&Biftnt?s z;*RhS*f_J*#rFElDJ05BZ>UWc;b6-{Iz0{!AY*oeFrqI4{_P^8?$g z%MlN0_pdiHaN=zT@kOK*g35laPsL`@?N^OnJ$u4Ckt0x`f{%`w^AycQNxg^k1m@(m zZGN=OQSBxy-}FI7q0f2%MjbKy<9{kNgLgDrunljom#LO|iE=>&3RR_D0r}d*`8maF z`tfvVj8CmveNo7s+9_yYD>a~kdHd$5mfIP|GDNORA0Z#Glvo1x0hcYr?5Uxq!u^N^B1w$Gj1KE6sp|F!YE9!QNH1hNRGM~ z0trppL9xH?wg*3YaN`Yk$_ChTs~s2j197SA0KZ#TRxl4uRbL0HNy2t~g6NvXMcoX! z^Nhb$z4U>0CEjngww}^jaGL-gTqeA`4u(e{-llmsw<8x;?nGY`mFS5jdpIoecDvL_#2p5v+?2)gQeDZs+H zZ6hN|s612NVXWnms6kcK^HQ^PHx-&vk;!)Bgkx98Uv<{dpYyFZK}WZFVe1L2_LGIo zUEd|n5B{(gvi^LiH!hMPHzE|RO7Gv(>gEuKcbAk^eXLHH4*!fXpErESU;2e= zL*&jH`_}2AjJ-#Q^t|SbC5!==D;>I4{Yte`zP_z7isPjrm_z0G@YT_c#ki35u(`a9 zCIL>dq5rEGkEh33W=LZIq1u*HWMBO5{3~wtO~gHyhmj(NT9ytYSSx}zkG^BB)*$Aq z^bTQ5k0qYXpns>SC;wjmQ44jGq2&cr@&;$(tN%DroZhNr_V6)kP+c~#gL+MFnfzXK zT-zqRokFTgeWJ|tut!4|J~%NaEv!Kt_LiD&x;D1!{wJVr}{95 z=JyQA6)cdZyPjr50@<*}4gJF&F93p5cEM@gwmo5=jpVnhw}snE3kXvG*zvrjfRCLF9{Kp+8yu1z{q&yE=0y4;mXB% zO+l6DXqM8@$4{3KGx1TNdF-as=hff=(ppJhN%u+Hk-4+Nu`8nd{|c#bXdk}qeuE>O z*WJkD9#vo@^r(%v|--G+2Tr*NEGH1RiX7?Eo z;5B@EByBKi?+*IXbd(;I_5!|(?ontwC~J$1>!^O28Z*22ZOJBp8Ik`58QF;Kx8hYn zNb+cC6l1Qjp5@m$rFxY^5a>EFh)=%RBZW>7`Fy}J>yD2t?UV)7tqQEX><*WUnuIrm zRM)vi%u8k>2%n^2IoVshekOtqlTO%mf3@mD8hq!TwKvzgS&UDEb5^)@idh6X<{)iX zt|cKVw0MCg>3@7L9W79KYwyQ{#nVQIqH8duIal8vkui1Nqk_JhpcKNgl27*2r1h-j z?IdfJ!d;Jm`Y*azz3tG2orE7HgFsHKJSeu`H|pQ^1Vz%wEnUXl6>;y+hk>A!1v(-m ztPT}hFZAuFOB9|xPec1>S8~AWoj{r7&S;~uU z>dzVV6&}_)0S$6ny=8rD$_qdSZj7+MlbQueP*~PJ3?D|KTHMBn{le?k15;QxGbqx| zN@{i$0$J~YK2VRmHc}}_7&k}OjdL|6$<|pf8(y@6xU#{4o+ zy^E0&hLtAquBHzFl1~>$rrDLH$=k!99dVj)kbZsRk|>OZg?HKvU*a#_ovkT5EB z{k5$mie24smUYpVn;2eiuvcoJBTPY8Y0g)RnnI%9WcPG|UO$Xl2;JeXyj;)3WmU0V zf^)vkhSF8Av0dL6YPF#m9&cVDu9rk1hU+zX@a=ndK1beYDrlpk=B45%= zIJyswv=yD;9r!T!f-CQG)Wta2Fg%i2ot8D#1vbX)-I6AKjOrCN!}y^scSZ(h#r_IB zKH6OLIUCkY_Iyy+$g3iR>%S8VcxrJ50q9A?d6$soy{=C|$X$N<5g{BoZ5M=kaXpua z6r^bQx!5u7+($t^Qz!AnlU;$ad)6bvzZ``h7C)cY%;@X88lK{Qu;*H$M1Pe@m0Q&p zOxst?JY-uh)UCnDXwy>G^8$-j#y?9GG<+F#%{9~^BMWpNpe&#q-!~nw0_@z||Gh>n zCbEx7efM&WQBS*n@c?*j!)Y7Zy`0na*4JTygc?jDgIKBI(^8_Avic~>*>hjT&u@Tl zF86y6- z7odrIeJ5s>-0STXa_ynwUEsK~!^8!FgVi?I-qTNvDY!O#-(wkEKDH2fpNq=pG zjScubpUG&ml0nsI#1%XXHD1-9fmx^y4zT!dfAOgGhR9gaeu0S9u>MM9#`mOk66Wsz z>%T_mu99KHF8@A$@*aX6&TRs=$xcBMuJ(7L8)>91rlB=$Hw{aA%f|w~omb*q85(RB z^jpY*)b#z^zohh7E^d6~BW|gA8ZPgxAQY?PZ@)3m`>u@L%iaj@@~umG6LVcl(-0df zL{WQWl5X4(4JvpNABt59^eSYe$xr%E*S!tXT(>hIsLJ`qTtIp2Z?BzVs=aMT&a4u% ziigJk1%D6(jiHenDX>nUcyU9 zOvrI!8EgNfyprC@`VW{>@B-txmfq#t^hAc~8LlaclkT21yaXGYKsX4Z=j_7;S7;-# zmS@2^D(^c)mI*&5@K|kM=Ig4Dbm-h0c(n-)HXPppc+dgUxTio?^VL4xRnkUAx~@*3 z^<%Y9^7c|EX^~yzi&>8Iv`evTFhg`znvf_rsRq0*Tv6;RvFOvjnG_!9#@E((q2Te) z^z|s@ZMCFZ%Rl@=qBaWvx*aK_F;^2Mz((3ck8@2buJ=Ofh$LzC?_xgPb8`e83D2-n zNxDB%i)nm^Mbgx`B1kRRm)_J*JJqP5lx9~YZZjvO2NYJ+d)qHQQTJ9sOy17XVcH`8 zR(m{aHxSwH%_auw>@_@ZTnz#HQFPON92p6{I&dLsN}fWi-TPipVj8+jzVW+H@;;D? zD$1q{t+s?+bLQS}uAnWy<5G&WUN^%$zo5u*o8O*Utc(L&^@*$pgPvAx{}e{Kw>qE3 z_ajj~5Pg%F@e2*|h0jmzZ+f7vhLRHlK2Vncq8M zKAL6;hroLrJ43+&9cgP?MH-{zzE|~Q0cs|K8HWFMuHa;tI;3FlU3px?#O_#h!we~B z+zo>XFVg!I6Vt2e#rO(|F{6%4T=^*ZhJs|g8wL z0(?5`iE2}drNLpm3c|BF^6jLGDXQ#}qKEe!`YuZhaqoE1%q(=Y2t1qLjT?0k3s;2ch=~YVa0zfcZNdNLT#9g!j@H!^|0jtJih9ZiL4)go zUnwPTxaO=$*he^OU5)eD%G9<{@XQgv7Wr8Hz-4`$XDV$`APNgwRMK1x{x zm`9(uNB5}Xt2rXz{UWHXWCvNSfSo?k-n=;`yQ3p{e6M;9%N72wyYl)TAX<8}#;I0p ziQod%{5L5Frr)H_r?JZ=|^cPK%0+I(x9UUN0c zFU*;d;g!KmcUm%5F3$wxOdSLkb6V*Z30N*^=njSWt9g=P7#%5#P~4ni$iLTOQ+EAw znkZX))xg8Uq#(6M{gX?PX&8vd`-6uHU?DAjVI~6inIO-&Y(cecwv@A} z(p7k{?&HttX!j^ATP&wko?d$sbd(5GRjRsok%zyCg`I9V(rDjWFY0_P(HbZxd6)mk zch-ghIOk?alI_E1jre1S&s9G)Vw+~yOh{6un^Q`xt|pYsbgxsPCnj`C=XKJqp2$>+ zTCakY!HPjNjB~`1T~UHZ+1^69&F&(2Jcf&$z)9+b&jXpxRlhM~d%$S`@?irpDY%8x zWxmUFUlP{6^|H)SW+PLfW2$M98AeLtY}D4HTsn4=Z^S#u4~Wv ze%Sb(^VrDa-(i;Y8pacwaS+Vnn+ev%wZ!-{nHae?P?8JJS{NNlES8$O9hyEW@QvyA zFF&nEoA%p+6!#+yuj(pj`_rUFWb@kw)M%zMfmODg(knc@oYWJ0RSV?4Vx?%Su=%;} z8xocb^C{+>Ge{RrXrK<#|GSgr@jJh5Bz=`o+*~$I^PRdWq-siP~EbYx~&oO@uq4 zli>7N==xCvqDn$tJj;Vi(08xZ$g%!0%I%}*bq8j(o4t9>EQ#ml`GMa#1G?b1y|ES| zSA0C2PvW^ICcl66NAw=Ex_+^6X?)vGG_8x|$YfV#hmYZGIF-kT-#8vE6&&W;h%+p3 z(CbEC9Q5NdjgMe&@ci7?C+|)GhZShkV{kJc_BI~mQ}bA`V@LaMbf*^i4-~Ws=&{`b zq_vx8F`euXT$siO^wYY7nZ|9#0j^PjG{$8=(QvvLfK_Q8I%am-ZuloQB5NNonTBH~ z)itdMX8%#NVuJnlM;P%;k zQ6U3)^cOxCRj$ApmZKgzWPjyvVo`pshf;14VW7=~w)NO&hk62K^!{ONJGY~oCo6Q? zu}Gr2|J*Y#!D#XK=B@W>5l%6*p}z7Pl|o-LCYg#lBQ&FW$8m}B8;_W*f7G%R2;VW*pshF(Z&?$ zZ)^q|vDh0rVLZd=cg6dKZU^S-$htsYb@qSix)9F#MT@PpG<-jcXxZq_Qf=5n^AGA`mEW z_I-s^+>fJn+G6`F@m*sD?Feh3thDb%jt5@#tjplfHp8wdgTEWq1!==oF^yX)2V!#eR986y2+f?&k1_t|DqRzE71pEIUk-Q{mdI%J6`yxoXX z{~$0u{^ndU;d`D9A#u{q+6NGGq`I;1r%;UFK~ z?vmk5+F9_-Be)0X-ZBNLIf#=mFn>&}h5-@eui{SdB=G6(6qm=;5Bs^hH_Rx5I^dFB z_$Y>a(tJ2qom;a<^D7NlAA^U!p?28ez3zYN-$Q!=`%=7s>$whhxH1DjJ>0#W+J$|4 z6;)S;7bQ0TO>_!QAZw3i{p3=NFtUBCzlhz?h?8?c^-?WrdaSnOiZSLDax`3Bo>v-L zPaj(a;s>K&Ygl`Aqpff{BX*V1%;O@W9)45pXWO41kb=}P5mgEuNCC-*E_5P2KEmuk zJlidwN8Rd0ep8}EaVLrzW(#@yitmjt4#bn)QwngF7wBfRYW1_bM91|*Sf8P9T5uPm zv;D6CS*)Hf%lWNan6~5wQaQYLNnNvD%DWMK=pLU;DJ-VN1!*1|I6ZU9#QmS5ae|}` zb4AAy#+it9D>;P98U&FR#?t!7Rw~xF77qlQ}eGC`3r|8VeY}_CC zXzx{iN%&rUI1lb6wvceUMi{*^tPA8TA4SA;vFMFPi9)6$W#jApD2Kx$o*EXFx}%v3 z)XiLbF$lxqA-brk`TW%5UC1!E0-KgPYn=;e6o%^J&pgER_cIL3d*R+2c`awV_?a7+-m6*i+Suz(euCC;bFiK~{g9(+-txp7 zyLYPn^kprmOEvG|tNVt+*q6ZaFH+2yfHBtt*xM5(&g>*4!-IBi*0=b??dS6-bC!dJ zl) zfLAvvTly&}9v!VMv#Exy(+;F0CDR~V7SZWb>xjG8C>SmXRhIiG`sT@n>M)_6;Ni|Q zY(?}u=48x1VR4L|X$1QR?$*rB4o1wluPWytTgj_ut}l`$1A5BQiQAns&80%^IX>cZ*^>dlzXMbP0<$B5NBR%o7o)%^lJ1=9|m1VQZ&24mS)uL*21~# zlN3QNgxn!KVgw$J0f)S+yc5{AgByEvvs!6V4ng3>8R(U4Ppea0ssaxH)8Haz3kk!n zI{8+&RH5M{3*O`h;2}&&yEns_wqUaCTWODQZwn|@f)-rE zfo*Sybm;J<^so(T($&`!%K_NLXWv`qJ;3D6V818hpK%iRuPL4kW?m4YDUG)l>}#W~ zs+wo+@5UD|Ul<|Ji9nO;?rES@Bq-v#b^`&P?CC&7R;-lT;wbAcO)Ic(Ukw$j>P}>- z*X_0v;v9tK()cMBDcN&>Wk}kviO02a-J6`}pIB-gbHvBRmEiDG?`v6`v2@~5xm@8u zm)^|z3%uv;q|>VAgG;r)rOagkQHA5tivW*qxv&thvG>20+rT_APcT_pr98ramXtn! zbXuOX*K9!oC{n_3)JUnud{r@PHeQc{fkGT+=z$40qpSsM|0IUFce4*W{}xZ!kGk~} zid{%RwZ5;+7nYeYy9P}?E)8PoOyCE%s2N9%O1buYk(^yK>Iv3 z$u4wSpSas<#=EaV&w6gBJ5qH)UDbCV%#abts*RWi_;8B7gjvdRe4IOlD4E0QYS}ujN=?E zR(jOVw@X^+8`2=#xU{wkxw`4z|fUykZ9yBQpNw8%sy za>F77dM(JBN)X4)FucZMxFUaP^j@{V0HWt7Xo_h%;UB|T0T$Iz!y z(}0HZBNd&+t#~Oa3W%Hpla(`rCD;Q*LQ%PS$y|pkI(;x7fbt!TG66ky{T)X20~r^s zuMqh`e?w#9DxmfT_+br{s5pgwj!(NV>lwoq^iH%_0h#D63!2v)>S6v&I$#QU%N5;0 z6z5q1_ng1}TRQ6RAw@aYwanPKuvfOL!wOP_z%rAgruK&4E^$KrV zlHZOu`wdzLAEG%wvU!R0VpzAp`3R9He_j@D6|_^898WDm*e07zl3=JWx$Wr#64CX- zi@uND9qsHDP#;C-#BO2`JMiWXNA4jSEn98w+WVGZGc2f|bKwx(SnuM7Hsc|Hop*~& z^ibpyb0;zg9eUtV5C%&U*-3qYwH>6vGj2FydBFwaoZ^FZ7guR=2VT(e(%nnnyD!_! zS6+0V-^qa;JdUrozP-~$(fxzuJB@g~$JzEU3o{PVX-&6T?m>D_UEy2wT^ZqwuOJAY z74W^aW4fuSZHclu1xBTg{T3Ol z6)qmc-pj7A7fuwb`ykHC(xuAHpyuQTRrXZT}juM3ivt7X3gm2#6cst2dx$=ymLiVj<|?RZfpySs`>w z@K$kt-0^F$bxt6h(F&UsF4Fy_r||!Z`s%1A|Mz{6loSyVkXE{+OS&78ZWRHM7}5x% zJ0(RL1f->H~U}QujI($CmR%welAC?|o;;bN&|Zka?XETanpT{oH&MJ_7sF zIQibLiCyij;hUo*v5>!v#5?OdZ{FPXNK1nLTit~tj6lVT-)fEGL(m%JiM&N8yG zy85vRTE*leQKrHH(*pc!ld1!>^R^U(epqitow*L=+C)F)M&hOYbbr~zEpkqZyZt1b zY`V-vPdG6PrO&|#rGZXOdYV(G;ytwnO+?Ap?xOLueKF6MeKAo?k;i4gd;Z_Gw*2@e z{VMx|wAnqqz2Ug^i;yfVA%>C+=KOS9${C_xVYV4as1y|`xY2>9aH3SuKE+8+x#?D4 zKOa#nuWQw!ZQc;S=)6QA{}f&yw-iHk+>5P_;{HG>D}B_eWA*YfGx}rFP4%ze(qf z`3P+ir%zp->{X3|9y}YK*-5(%KcGiUtm!jtRkUM`Qt4ZSD8T<)P;qS#*7QcwGBteR zIC|A+2roDlc=~w`(ecyDVza1_8}l~oDIKP(N)7h9kG~Z5c-rSjw>t$*?9l(Rg{~_wI|ox z*`3EU;Cyq_MES1kA}cMO%F@qvj_gKuy&q(|eBN!bonjxZ0=($kniXcU2c)~l9tShC(o9Mg;PBPO$-ARUsroQVIs89O{}-=X5e%wF#mFwB6N%h z+N<~n=B*g4C8%yGza8~%`5@9vMB1bFO2;y3Tc*2&#!y$;zue@of43wK=ZM3Mo9K{^ zVJHCQS7Q&CHPxn%F>`BStnRXwH&s2f>rD7KPsew}edYLe%b~Yy_;fR*cr8F0Be>%! zQ~s4CNtaX(Poa5?zNjYOa}*`))?()wNQ+}ZywTjzvAlCk7_7C_IOPl_I>ZXh8WBk# zx9iiS-(vxuHgT;3%uIp`Yk)RdVg29^0$|)Vnb?Nm`M7W7jJU#?Y^IXA($-_wUhm&^eQ= zqcAUe`q7ib52JU?UI`g2buUDb@*@NG;vW_9g*k#wN2pxfx*u3un#H@&r<^}Y5dF|) zmZgpw;v+wpS*9xKdT^0@S7xxvN;Cp(1VBUJ@8Bli%;|nDf9F%6>(D)Glmd~u_(ws* z1{5i6wcy=FLiH6Z%w%j?GowFDi3BkiuP=+^E~f#R0H1}+i#1{0pV_~s`%bspsq*iY zyz|MNfT+=~YwlRA*Q4HEOEW<@DC#ep99en!UKg5lmp0B>_JPd&-&zz|H8YI)7`-cP z-S(P;BV`)k&MUsbv3;O<8gO|`%v}iabqW=(lihQs*Z3rxkJ^VQyu)fLvb4pOySgm7=~Du4 z*O9E-k-xwr2|AgAz06zpIPDNf67SqFsi*2noziglB$>4wqv z0~tM@<8GPDgXzCx&!VVJCwa@k071lb=rmCj=~u2vk_lXyP}X|Vufm4%`8+;~<;@ZM zhdM^qU*9nIO4|sBDSpW3)Q-*yF=w+1qv)UN9f@e7IH}fh693G0Sc$pkMd~QDN8bx~TiyO|x(BuFECGFJIc}&+?b@1xT@Q5Jr>zZF*ANEQX^(i{hJTxSt zZD;S>$ZY@kR&K3IOor-de@Gq5);T3%Il+omRmC~-QFv6GsN{LRVYSbt3qqkl5)HZQ zMZ|D}1w@$Mz|O51%SbN7+BlgrZ34l}q-~ zf-g1KVWpE60iqNO!X}7Y*_K%V-zcC4Z|0sciJv6Rl9^DipKLUs`DK-1q<59!pe)m9 zSzsY1{XKl>vDINkV#ZWpW7|`td_fB}p5VfD#>!J|A13H#qgf9uJSc50yUtmiYy|JZ zv5CYx4eMCe*c8FGtn9a~w%)w*j5BjWfyN8Q#nw6$YuP;^fQ<((hAO83l zm26Yy{xMzn;JbJzaqANglgEdh(m)Fwp@=~WYFyt(#Q93B%O1y5m^*9jTU3H{yUZLH zu8Z8(NB<>%DgWTHqpf#e-P}JLL@)uAM4I8_q!<=|?LG04kZgN{hkQ}|VpmNC^!>Ym zk6trnsJF=9I??WRrYu+a6UCzy2BqiZj1mIXuH}KCCob_tPc0x8S^XfGVj; z_+#PhK#S|yd${#ltyP_9&GMl&L1S{Kk;44#Yy!$U*~K{IVLH8Yl+2f2VoSqo#Vh?6 z`Q}mvv?pk$tz&$`%c-|+Zenv^riu<>y{h9|tch0@BzbPn^Y-FoO5PN2q@8bd_`Uo& z9NuMXYcQ~XVGJgCGSJ7+F5FdO;!su^LO%rNIp2`TJr5zsH8$V!iUoKx2fL&YyL{5W zQuY)4s;ss;gl$aG6aF{T{ARRa)vBr=Nds^_SMV@}mo$r0ptwYQa^5z`ndt8(Ql4yo zNGjQ0@84SVAEdwG8Qv{&De}U53BuXNAc;8MyqY&~8;GmaC}83kH2=sw6|lg~$>?O4 zbWkOEK0}e>Ujoc#PPZEijy;EQ?!P$u=FkyX_D8R;W!1mY=u^5q-O=URNG`;NP7l#N z|5M!Tcpe=XNNu*jJ509#dV%oWQcl*FUz;|K3K|UWE)$^GTlf%3U$ymR89WLT3X>It zhlTPBzq?w36)ZCe_L1CMet2SIT7S7GQU7eeh_<$X-Xi~VL4Jr_EOHO#*cA9zkuM`S z^;2KR4wOCHtv1ElIf|xTLr^v+)n&`y(q>jHSI8MuJcnW2;C>P#kH4sR$05&q%lJ4z zt4^HCdgS!c9+xhQ;FU=O-9t+PBAeTg=cOitf=ye&y^>xU=^n*%M5i+yLWo-B!#)wO zVw0Dx(}>OQV%cY{*`=8(S8pd2URR9G&AB=A{Vuh-uv?N|15$}TxZ?tpq|rAUPV7xR zX5s`xzX?>-i0G5DXK56#9vOU%T&ALbv<7uD##0@(^GmbcSO5-uk?SU-l z-5>`2z;6adn6{_xvM3XpPE9)=QZutS$P(dwcQdTjbkWO@-Lfgd%CI>R_GkAdUaehR zx5?p120GN*An++h4tLCE6^pIh=*`sI@hF&%*l9KXwqx5WkDKg!xtzP+ZDNX`1A8Qf zymS9f%S?u!irXQ|Eed?96$4qC2?pS-;cj|;y&N!}@3D*yn=uUJK{+21;KKltWX3F;=TG0MnV+VeLHw0mBy$HHg`yOM|^C|#iUuU32+ zgpq^>_5R0n0NCoWLO^NEVX$8xKs|93J|Tck@y?F&itFJ-_a71g)##rJ@0WjW!UX|4 zLAoBw5W|N;&({Yf6KU9~&BVvot}#pbNv7W>*n#R>GOA?WMIkM>`7-pzs#Qy-naw>M z7?9_;hb^5WdGTkkW5H+*P>zDvy`i3%OHo(h<|6gA3FY<=^x{O0uWo=O+p zb@Dm;m9WslTy~#h+c;xtjI5|Yxt7zdV2!Wd@dD62%yo$-1)5Xlkmn;k37l^zcdrsf)O*R5k)z&ei>Zeq;}?NnnRj{5;3EEv3D);6Y0b| z3)uG9me1%e`RI%`rT^;3#$Vn!r6aX8|gvfZdyhDte$tWvi! zAR~w9gC;02zc)AY3)^6rcPRnu+@+eas=pW6TxFNpD9zSNXj{7V!CW}uS?jaL5ds?9 z+)#1(ifW$#61PX6-Ue-H;jP&#Nq2MnTt;+xIV4cbV%skmeWFHHSM&45rc1xKx&%`!9D5$Vb!gNcVnzPalETw0iUuN=0}-$mJSOzD7_^?xNZIV|J6})k*Vft5QkP8UgB%#(vXpn^ zM)UP%Dbhm6(ihFZVY>;+g8EFRS3hN zo_e*v6}a}h3>^mi=oj$e`&#H2Y|5^Xjy8b3E<+!kCu^dwpQZiw`lBA}U0*>m3^n6$!h31#(v0)I@Q0M874)nk?+6NusR8s60U$ouOaQH`Ruc^YTmR7LFrt_cL=7Ts4q7tY^6w7_o|ay7^;+ID`Xt zlnn*`X0)G;-NbK3iZC4byb3j@dg4!|jw-yO$9n6u)FNy)hX#`5guNfcGjz7R&c_GW z9jgqnLl&lF?|OCY-L;96O9Mzp0d*u;XrC5k2deYhq1Z4St_{ldb9{i3d`c$GKk2&n z_sTe`Ppx&?Kb8_a{MM#@F>C6bT&>}~FM0EUfiFGUbNftf&#Y_a00ed+02i{`OM6B~-H8QBpXRSu-jiYd5`B_2ZJlhkh@S>WZfFIN zyfb$e>I8SW>A*izm=+|2j|%y$&vbHxs*5*?5`bQFcM68;x>)^8U8pJ^i_>D1%9@YS~_BBkV~z)PAf%^rz#phD%-+5ndVjJ>AJ@7pq%Qp0O3665M1W#{!nZ2A0-&8@y1 z(9ESXFo(IfRVp_Tpc+)r%Cb(ONOcE5yF;~ zc8bVqM(YHyDh#RZe?Hy8n#f&rJJocmS*D9rG&78&Ks`qJX}(lo-T??-o#pD*`olU5 z^Lm8T-NU*q$<0AW_`=4HpP*G?i!QVRAt{h>JawpK%hnT5wA0tTfz_<#0((pWY`VuA zA{m^KFErl{Mr}M*AUnny&mJW$YD4KShvUZ?m@@*}bXcBfoOFg|`56I9ximJJS>IKR zAiw3m$=zFThTGL{$A=`GRQp;@v%}Sff`^x=l1_wf9@(76jrto#g<)9~-}56j>teS& zuAgVS9J)3|=I(j0Q^J4`t(3!aa{HE9lKRyX3?9etuqVyv{$;Z8xCT6H$7aUWl6;}j z4{T&n-B`%KtSyI$-kv**zffYf8l)tr%4Es>lrOj!n!zPXu>C|h9quGLpy$7&{<+4d zK+1Go9j{}`zAZQQ;#YWBV-$?wG;gmwV%goRVKCBBWVcXHo0e~2plNnp-=#fQ^&)?u zg{hfYJw05Xx%ES&z#Vq8YX=j%{Ll>BsZE9{Q?5u87O~t|Z)7XzJqed3wUWk>)hYcD zPgTV9TMfHG1*oj^z}@wrr`cPZLhbt3-ZPTrJuFifkw7WN=vD#$boqC{Pqx7S`&;a} z{NDiRhJn08jtdxnDn##|p1x~X%~x%qEe*$j9JLE$X4>ur^S@>&@KepD!YRqFY}P`y zx^jyQ@vVB8-?~viH8%6{jcku1e($SArZ)_F^QX(o@!pY}DcJx*ZaP+^73QdO0ALwsSuBP_UUCYdvTxHX8^EK>rAj zlh~olE$0q-T3<}*YS(aDW>>LjFy;YG_S4`%L3@3j;B}Tpa=Y z3Pl0f|B@*#AVnL_aRGUA0eiztNf_uEV%esqK>zYbCD=JvZSgZjqGWfIEKkpevMu4$ ztOtlsJ+B20z0P9%jaH-;1hb)*dlGydAY0N0oYz{%^UV{tOh;hKa(dLCnp_7Isvamm zexup+lb2pxQ0BONy}a4TR{RxfLcjjBE}mYHq?IVf>*>#yG=0mw`d=??@;T-E47eU7 zSGX~g@S)$ZTO%Z|=g=jAIyTA~aOB(qS42#|-G=bNi zx4T51{wUHdvVwS`vfET_&DZisVPS(7nU37COBC2S*#?T=|} zuV4EBf|Xsli~xkO&g>4dI;CpOrD8e}mKobs%fx0$S7mHfav>AMla0iD??}VM68nMXdp8?$pDN)E@% zdN7JetLc|d?8d(RgE@}=CFf8_G(wN-P9ID+GOtp%z&ywFQt+gJ)8kWIGr16=I1?AyY!ys&;}LCF^xIE!MTvGYBd)xUJX&3D)~pCvuWey*_k`1;)0&17|aE zu-kDFL@z)cc2u?ToxDDTq=+vz!*TEyIcdn}2fN=algr~|-rB8KF_ueO z@nt-laI{noJDRs(vq#ojMhX7F6mwxUAcb9UFD~}ENSlSDfYRSmrcq4S$Kvj5C&b}EM{+xh9JixWOc0yG< zaRHu7o@Op@zCCT#Tg?Dtw@pWy5$2hEAX0@%1XN)Sm{_8CdUWu9{k6K+lTZzrb~3$q z;wHsGQD6p|Anwuht12Ue%s^EQ3m{o~F9b5D2#xZ~(Qo=#?>SldjSp1fZTvcmQ2d57 zBT346w)1fm-$8_G12zBds4G{_OiG>ljbV?4FnycTOoyh0ADr`B8=M`=bN#{zgA7 z22t1i2juy_E$<(D%f!?14&xiGRudlN&;QnEp8oMF`uT%WG{;bLhq;pFbuE5eW!GG& zv#%hlDoRa?_s5&ZhHB|CB*v{da*qsVw2Zj)t#r#7G&cSs=42M1Pg_q3zs@#UQWu+T z{PWT)Ztv@!6K`VPdcDu;soHwdt_?v~Q`aqw#e6_iTWepuAe3?0u0+nP%ex<_*wP4o zSdxwm`rnCB1sr=7U{llEzcuNWc@);jl}s`xD@)TmEMp8UDDVN5iYP+Pn|D0oWie! zDP9eh_3(N~YqAw;a+|kM!ap7mur$35bI$}Uz{EQxpmO>4(jR{VqUwj@JXJe|Yt6(O z?E6<*mMj?g1d;NH^LPnK3=iOORCRj14gNH-Jp%j-U9~3;`kQU1SZ`tplUGRacVLl{ zWfU;o-|h!=P*SnO4ryq+*G0_&i+dFUKz19dG*G}NXU8fMZ+K>#i`?juJ67`yS4F{| zGFMm)E(GGYtL9I<>8o_|A1%~k9(%i1x$TdMLNn@ivc}H1 z1=@g|9}&hm6CBR2;yKOqc1vU-@ph`!MSs`r!ODksfJ%XIk^Vt4+HqaN#YzwS^n$Ev z<)JD&-Qex4+v3g<4TX!gp*vz$Ev^{`s(8O2Co!JJnb@@#r%*H}dA`UclHy)qgtWPc?pNbKJCjt26#!RWgZwC}^os%I+gq-n#UT zSf2Y5s60&wH4&{2WX_i z6wcPjVZ4iuD&1!Tsr$}30)+i)ANhJxNZO1hztCW0`sx>T_d9um)P_w87AwL->`CRC zf!fQ{tXG|vw`+A5m#~xNiKN(v#n&cv^B&Z#52*cuU&f?A0)%!;uD8nEO1!?m2Tq^- z%dx>TcJAbDLdk%e@%BUnptm1|i9vp69t7G(02Np{rrHr?C9jT2fp&kLs7J~t(9PvT z9@q32K9GyPUoA#l`X-YqS}MgQ^6a2l_aIeCzOzwZHf&H=OwV7L!x&9vFvgi1bxID; zWT2d_@TPS3TWfxsE?qo&;@-Db>ywJ@4O%cvSmAPqc*mT5`PKvX&mOb&70uPcgE~8n z+O9^y;%<>CgVgD@JNIX~Hj8cYe>@M<-*Beq3jQu}VE?|2!23((wclxCPwi#Z53~Zp zN%e)5?oT5|wF4;X>JVD1iz=x@0f`HyZlb5_xoDPX3nb7;rh~CNO=+-^#%^jJS!g?2 zx2_E^DcrL#@v``X9uk67)a3g6Hc=(gwcBCY@?^a-u@Uvka&^xmQ_|Cn*tw%@UC{b? z@>1T#U-uD<%E?aWkaUm&kDp1;6Hbp#kscRY3DNOq^4S)2WWV}ZJH^w zU0d(Je8?<%i&D5+Y|L{>SL!YogJx+Th~a@)U2Dv=?eWtGiG*c4HX8&7A*35I-dOI4 z6q3x;XJUtbZp>6nv4FIVg>=W6l%XDOknWoSt2&UlX5*cC%|FX?ok42^W9&zH%(+*$ z(#X{kQWwup+;VuKa{d{j7RxlM&P4-v*XkigNYGd?g-CeAdb*OtWvR)8*Uec`EA>-=rP%x;BaJx*2sXsA*jtbu%1qw4qP1Eu$)p6&R zFLW@p92;_#XRev^yeYw*s#Op|O1dywoou*uFgm;z8aKF{%JKXos{%=IzSkT@B@p;H z-mW-Y^4b~Bwl?x2EXnOjOTJA&sk*m1Q)RvAxQYT?w_MY8LP<;m!jEdaxi(FrHT zm{wAL3vaA0f!I}`{uT7xg zPgC=(Urb|3qsO4Zaf=g*v_QeB$knOkn)z502Vs4}dBwgzTI z1Vv>vHIZ5_%$R|eW~H^ zIG-GAZiBLe7e?LszUc0g-WZs3=yr4Fp82G&<}hBz??-rYZQw)3*$LhmtHp8>w>ze; zy$_u2J{y1PD-l^;rbtYfd{m_~{NXt5?C|>izM(qX!(3}A@Y=V7N@@!sMFfu$y+aU) z+1V8(uX|TpgM%&la!uICXf+u5`60K_va$n76zEfjsmn|t9`F{%_o~UB9svP8dGi~b z=*oww;Jph{U<4LiB}Rc8@41`dF%b>$9YH`A&or8k1<(^+GpITr`@fP77Pvr+ch(t8 z&xa&h^^$WeQ(dU~0==|YOzf_b(<92#9KwJt(?EIhh6<#XGZmG-37KiKUDn~p!i8Um zz~-aw()+|}C?+xFKzSd;$lfN`jyL#R@^V4Z1mBKea=c-7V`T+vo;cBB)$1n?e ze&UsnQ=!%HJv~V5Ck3@#P%`bkP`U+JWmjbiD7SdU#ZzLm+S*8PpiDL3j2|jRWu~3t zNh~(?(tOFU&Vy$mjx;!)tLZjZRUwr=f2FfR$_0eKAjsxu8Nq7}9{Oy{<(iIhd8T#p z=tSHmGXBEuio!~&DyhG;)o*x39b?7@s=7)-doW@oKccWn8hC`|;wJpGLPA{pZ=mLD zZxlGy>I0;bxn*AKXa%c6{RviTBL}iW0iBgGfOaw*M0)j;@b!~yfXK1oJ-a3Cr6!iX zMW|ibqp?0sL0y;YmvLwuqt#TOG8-?=WY#fn+|-~SN)>js_FU;}WGBxHB2dgbXrNlz zHj|!mo>`j7Tv0Mxa(v2~UHvFmSG5+C1S*>qBA-UuU6rL2vD~VV0U9I_>Q=a;KkzMi z)WYS5?n0Vt1eUKo!d0fHSXk_#?zRNi!%{Rf_J(~}dfw6`a!%nuw6`*{V#+1smo_vZ zAN&*dH4a#irAY_fo84;kc;n7?g4rPJsoAn|iSz4Kg%(>0eW@s~Q5^G^3z{ z<@mrG&vQ1hp}>)%(OY36D8p>~&?aZ(7Z4(!@WUXEp+vx22opXB)GvoDj!=%u0N-NL zTb9bJOT^$=o`z75J12dU3uWQ~5>MWLyLC716R=Q?)9c+(1Xgp@3(sfQa6CaqTvmCC zzoSGZM@|WoUji+c3q4QknEXbvFS+lMd!u;}K>T4vE7{HsrIY11(K|%Jzx4@3ApusE zd29qgw77Oeg--EM-vU7_vP?YE0S-)?+On5xyTGMf1zX?=vJ_M5QYvP|jLqd54K-U5 zD~OqPP1O8Ur8p*eF%}z|xh_$o&Z)_W*wv$&hzW8ZtH+mFAKdU{enN2;_j%ICgk#lD zg+wYqd7|x6xD$jpR-$`PV~O`9YwmJ9XrJBRI})Z>rA}O{lM?RnIg(rd-b}GLNZ4-_ zaFvl`LMW0;m}QL4GZg zppc_S-j}uwz$SM>1=E)9Ejb+L$@6iL@xZ`trL$%kWXM~jd zV-%mtdQlIbB(DaPVOli_!WTgp>g>tmLO1?|| z?J#1wD(^18@T`4H4oMy-b$>vAHqt@nC^6~$v%ADh(=@(O32w_gsD4PWuqgjdN(2W3 zg^#lI0vDoQo5E5p&P@fk7bRv=Mx%<%x4k$6J`AFN+|DGN`FRInG0YM$d;QR3 z>m@wx>^Ei5l?LgdLN?5slUB8>|-50DqDsA ztO$N#qHpM-J7SEYC1zpF%fjmmmw%E%Kq(L<{_+L8Dt<$*bF#-H+vNssJqzO7TQ9|% z9`P!HUj=g4>xL)H$BkWtqreMb72Mq{xmyozz|VAm&IgWd-s9Ba9DEx~yrY^B$^|;b z&msY{(?BvH=9E@Wdp3nz58RdmWJ}3~1EpyFB`Iy!vwC(c%h~*^5iEf5fnWPC(a;dR z+jrE}oG06Fo2t%whH#ZoxO6R7{$Z^b?(q(Hd||jvA*=k1E8|xW&7cZskAq@rp{&l{ zea{-tRsxTdIDFNc$JMRfyUXa+6(5I;Np4$+=*6hc_fECaXhnirl4opQW8jah|&7+X)G zF7c5yv+Bln4PPhpP9~+ky~rdE-NvP?qxK|2!p~nXV7fN|j7!)@f?&?P%D(D@V$CO2 z&D6(0x*{2f=M>KZu+{y*Xwl=pRdQIPe7#;^(SW_+{`BGE`PV)sh#|q(r`7tl zW~vDc(HphXY5}U`$Ppwbx>QMgWW$Ku>SbmEVMD)vjb{t!&Q3b)meZ!&G`$XEMvPMZ zHT}9N_h|fX_0;A>#BYm=6hcq8gi6f9CN)!hbI|7|MbTza17&u51pfU@*fAOBY%#!B z7YU)L$wb02^IWo9Jkc_*Y|Cnj^Q<@pn_Ny?o13@PF)YZ1ix&O&^m}d+XP-Zl)gF&- z8o&8NsuF_bGMu)*lIFRkA@;GDzW{qzm4Db03Pk`jICu-B{~j&0EATH*!Wyt7tOLl% z3m8`7ixqp2p7Q9?9YNFrh{SkLn?`|RFO>PDT>Ihj2ta!hw1fbfLhtM{IG>?AC>g_ZF)tIWcpm0Z(2Sa9fqKa)muPo{fsb!a=w{ya_R#`%nXVGnceln&vGQl1yP@6WWOzr+#UE%|W1!6xvvtZ`Sr>0< zEaKB?2Z7|h1>W}W8v-cEqqwD;GgWHTylx) zxnZ=+Tqia%0(Lzx>fOglS!fgp|*q?Vk9t&LB4Y}5|)Rx62M<&|ygaK>dZ1U8<{E>Fz)^(miRKSKiag z+A}Pf#QHO0Gz#BYVVrU~0kAJdp@+}ih~8TN{{XUog_S!_!vNJP4?uJh=-%*XuPW?x zsh0d1^KLoF6;pkj)c}Zz+T`R>z%=h)zf0ETW{i`erI74g#jw`LF7V9_38&)qaItX+pcV2`K|Mx4v)ISda;I=h8MjrA) zw(=NwJuMr@l9(0phnCC(f?!PDt~k@`1hTYY{YoI;YvHS}L$w@xpau*ro%_bJ zQx8<1vH@B*`l#VzDy8wg$U(V~jb&Fz4S647IhD3s)Xuu{Vo|N%butAia9Y>wMSt41 zQq<(ip~rH{l0m;-c^Y@&G5`>NB(z1fP-E%=C|aTG^-rt+VD^O$PGG{Pc@q#$*#y{9 zaIut~i6mga3#;2*$VCDoZ!$Gz>kFutSMIu~E!%AQ^iG}d4cR@OaQE!Set+l7R2(}N zmi6gWj?cqnoCL7x;bLkgOlTQ|jajDFMQa zhQousGJk@Ii!4H_BzO7|({~MH9CwvXy(inJ9`>h)Jj+6WV->owm-*kg$Mqk8lusEG zoQzi3;zBDN5di8Jt{+B$7d>srZR03og5#Q**K#59FYYA|lMUl9Y&Rvh>}43K6nbAe zYAlkMIYsz?`^i_njj(ZAB6p5IcekJF@MK_`G)s37Gps?{PK7}ZcG~DqUW-Zn^_*`Q zCPU`NkWq+V_CUFy9&=8n*TQ=#MvN|bCJ>I?#TPCPjG7phnSTg9>c170a+D4LCKrG% zM#xB>%jG?Qhp{`_ej8!TY1vnGyi?S`@GPTJCiMV&KKNqWA$IC_GM1G{8EIH={Sf2f zia2s#>r7iun)%}?r9-#QIAyO!Cm>1!>k~MAQi>7?KFE@9@85mwQrd-hr}N|>8g1G| zm-%I5!K%mg>woD+n+o<}DX1U;>%top-7g9No324_vHOZut$SynaIh~eHGS1OW&7~| E2Q*AU#f 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�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 ih601k_=qrlF4-XKRjE7IXG+F! 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 Z;bdecmE>}|I1(O!ijsyR>bY6S{|9NZ3Wfjx diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/crm-8a2b204e2c720730e928.png b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/crm-8a2b204e2c720730e928.png deleted file mode 100644 index 3984395b680470049362ec0bec3bbb8a568afafc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108447 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

            T-#s(AQ8>xIQ`vH?cPny+ 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 UU6KBGK7er<{bOcOt%r&JAA~iNC;$Ke diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/empty-avatar-fea23feddfa99b07c2e8.svg b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/empty-avatar-fea23feddfa99b07c2e8.svg deleted file mode 100644 index d648cc87..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/empty-avatar-fea23feddfa99b07c2e8.svg +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/evaluation-blank-fbbfbcd75b50ade0f092.png b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/evaluation-blank-fbbfbcd75b50ade0f092.png deleted file mode 100644 index 99ef267160cb689ca93e31cc9e2f58e0b1d5309a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262511 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 zyaⅇ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 Yxcp*>zIJ)`Z-Cw^YP_j>Z5Hu=003CdAOHXW diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/evaluation-selected-196d1790b76830f9b73a.png b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/evaluation-selected-196d1790b76830f9b73a.png deleted file mode 100644 index 1ff0ab37806ca9be08c57062a9909cf780a40479..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 117544 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

            R;YeMTJ(@UB7KoTrQT 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%0AC%AV)06*i`M1sO z$gg5pnYpW2`~N7cGWsb8ZTkk-D7qZTsm)wR;fr&LKu|YGK81#8-La`r+WfiC&5`*3 zy{0tYBW7hZF4u~IAw=U{C-Ms$#ODa~N9YzYUf4q0##NZM}~3=_@ehJz;xh z3jR&GQlS6zr$7Dv`2Xf_{^s`*+me{XDxqxL_O#5~J@t!oU(3y3*?X;Z)^9nlaK!P| zbJ`{nme<*SH~)e0y_fvrJbxd8?h||t+gnB3HVmap!mkgiA9D%R|9L2{qh)(c&TAb= z*bM_a%CrhvO3*57O&{iWeQEg*+>z;m{^FN(8y#!Jt$KtM#30#M=Uwx%hN~T+SIG@3 zyRJuiEtBv)tHc=RNDDmlzf}Ie<^R@}&o+C=zoTk5#W~ofg;hjXxp$h|{JA^2_8R$h z~MpGw(>bEco4!fw9RKo_^s zvpox|p6Sc-uLp^ru+Yp!{?``oSMSrf{-pLiR`8E7L;$)9pK0b#XivCns)NGz&(HS< z1y^jjU*-iqxAmik{4B%Xnsu>GwdIoV3Ge+U@4?1B+p98*+cGWJw65iub3Y=p_{O>MGrzIUhTf1hSMcH*2kNp=V zPtvyIw`b=r2Nf4o$TY$!{2;xih88L^zGoGZZ~6a;%71?9<8$~-K3m}}&vxlMC(l?9 zr<%id5O4qOuSU<3t$5}(Vqd%+!=NnhX(TtL?6v4WJBbTN*FRcA@T`uFv#T>er9!S`j-KVdD>OwvL1w0yIk#ZtFptI!rO!d>WtK4FPLRHsuY1 zbe&rM>&AnbLfv(5J6d-&6szAJzV^bFcV1?6KG_ZU;+TUMr)+2LTmF9-`7iw`|CMFA z>#hQ2T4hxS+tu=g9RuUsz~uVGaI@p7ynJO+#%WE@z<#YWJFZKp3TrK*@F&WZ@vcWR z-4U~e8Q%-q-qQvzRRh&+gX13 zPulIHwBgO~bCpl@o-ETk_#6_pQ(LZ|0Z+wDMMJCLjv6`Tup?&&J1XW>W+w-P;xlp4 z2>W*O^m|TbIM?q8*;#w$DA~g4k-`gm^Q&~_f0;s9xDembQQ_#13QY0e^8eG4|DMHk z!|(gQ@lr5VGFQ>}Te;Y2=G(@Jo3ggD!qJ7S6@QJ^zjtcJJ+5b0A5l;FYDTd9|E@DK zfl8T&cNSlsSEWj`jJx4j!s2%3)xyQa!f6%`Wqm4Rjw%!mxAk9NO${gjCoFMEFkRyS zvOrD0wT8WJ^M&HPF1I|zb)D(fYtziLa8m&E}S|)c=dQ+8w|7#-V{Xs+rsoENDV{=r!?K&c#wZd(*^wbQ??Gu zW4?}K+KmB)Q_l9@kF_XaIqBLfe_8Ag+m3~4_vIOR=*lsH_kQsEjaP2U`z`#+#yKUoGtcH z;oH$|!w>(8zdDYI#k$Yk-s@^vd=zLXD7UzvwnA!gX>0s;#W3vmvh$d8Z+^-GNFEy zKQ|cXwWNP-`QMu@RK6CQ$8vli?SmBVz|s6Qs)vt^}WE$s!%_5UM5hT?RuJL_&ld9aIoC(4*|`z`-Jr2Id_)M=rz?fbCZ zEmuXXYsD&L`Gv}vokVdxF+l|_s1GdPq%W*uwwxgEoVXoWN>{m!oayH}2dUmlog-$S zD`%z=rZT}wNtD|#;ilETl(G;p=6ZaIiwi^H)#4#T-PiQdb%g6C@VWo@|Nh@UN+O0g zzWk;c=RICz61=at<+DD8yJvCc|KK^V>BLQ0Z@<@U9_zH>uSn25K7ZJFA))$Ag++PS zk9#FdM{W-!%bKug*bnJH_q@zazzV z3WEbI$(u5G-l_NSA9uwjrvneSmBW|XTMvc*r+$FUixA&f7vpu35ZRDIRODbntPToqg+wT z|DIt@POit_8uR*-W)=o`%ic}&o5>7`~7X2mQO`oqt;>~ zHT_`?ABA2Kx26%+oFU0RdoP@spfUqN4>&{G_rrWKuB~RA3Enjj^nj=;T+{p5QPX+P z=7zJ5T9@KndtZjNeb#)IIkQnunvhLxE_*|;4)d_CUyGjD%e~BH+fPsK5xtH%6`pD? z>-zo6-g%unjvQfBUP@$@fg+GeWHth&un{Q*c`1OMr}f@jl4xMv)Wfgu*O_V-ZVR~N zz2d|9sv7{!a`u9U)z#fkP?qHPopb_HZ$|(w(-rWzK;68PC8O33ck!M$N2D|)Q)XWxz|9>6*h&A!J*I$0+l^47qR|UF(3r(*+D;v_J zFnM8r^qDbJ&Dl9g%O)9R!=~JOSJC0k-@hon{`%`bwt4yfZp?S5k?flGEUush>#nPh zvoEH5VeTALtT}z(o-toF$K6;IfuB!V6ba64z&sybf8~{zU+{7z_W=K4=uv**o}uV% zca>}>BkyM}q=;*DE_E)&#Mt`7l0?_zIzFCt9=7N(G;^<-)vkL^!;NtwRj zbbNw{Df0SC#OnUCUNmxH8-JZb`s&wM`+iDMEBkeO*-=PGglQQN!dkp|J+E=vAd<8A zA;em(6Js!0~Zn{5{uFI-W@stN(3zees;@V75$xHX>|a z9ZoN0i_mh$lnW0Rl+897W__68J%@YSQPBK(T?Q$Hfxkb$_aH;|+|n4YJj)#JDrJo_ zcD_GRoE#o2j~h6qcFhz>%q}ixE@KU1rr3h(k+SO*wIx5cH!-}KO+Zrg3>vfFUc*jV z%Y1 zacsSy*s+13xXmcDYU>|gvr@V?cu!>bv4fxe9kOz>!Ax+(^?a7>IV(84AS6OAM9&Q| z`iA4t);ZlYUC8{r`plGZEhEyKQOad`Sd<*46Z;HdQp^w`V?m2(w0mb_=FG_jtzB-Y zv$>QNGS(i$@Z|uMvs%zNjJXeQzWL^FIy1zXsZWPBh07Udf2+-9z|;=drZXYZo4R7A zb|GE37S~rh1h|;VOtYC1yeWE{!z7Y3#f`C>mb<_(g6rxY`8gwE_0r?OMJ@{CzN%&Et6Xw+X%I~ef( zqyG*@zwbmr{w`A1`o|~8T1c3pXhQv&ZJ=W#%#bt1V3w?1LdcvG+BunoHO752W`Ww| zxmwEGQX4rIw79OGG_b=kI?#B3oo*Yp_%;{wcfS#M^tMtGdO^K6!; zFB2hw;Z2g+G8Wu(W~A`d`?Do6bdL3C5p|w3LWSNFVYc4yH);!r*;h_R3Kq1wrZnAMbV%cWm#DrT)KWtLeO7`D8) z@C<(0^O|unxMztOmzu{xU02uUEW36$Is5qI&wnRr;SDm&pb6jHTzyIzGiBM{bvm!U zvSGSj_%a-JbLK+0zfjxj%0#wCVk}d!Yq7s*E@GsW^y|ndZzI_>NfX<(kkt%GSqn~m zNfWi4jSAZU#|KRHL7iK=EQUz-?i_;5VB=oCl7}MJQ>7Z(xLH@}5lC!{v6S&eY(}-OEh*Q-4!{@dQ+Ye)o z4_PYSxN%{MxBnbfde)3vGr5?Zp;*UE*FfsZ6=>~=)ULK#iniNjZ`!HkEZ~RZ zo0ap%$Ra<{o(aQ-G_51*T;2?$!VNF-+ZoAk^Xf59>n#hNphG1h?y_2azH z$kaptUFUsCpNkmLG8sW{t2amgt=oy2;#z7c+f&vkXVbWV?I&;z#r|8+#w3k23J#_0 z@eA5!8MEG&aSk(Pf;DFRVW;Sl=EIzX5=KGuz9BIyi~RF+99}??_<0T|a7gpqhUK(g zZWPQtFt=W(Y>ef`jfXO1D+%jn&KzdWm@#uH)88w9!74iyeP*rH7F=+a_YUr-DN%D+ zzsiXQ(RMjxjhUoOQU86mx8InUNy28M-Gz2RCbcDGshp{QznommL|>fx=W%?4>rBej zel&7c$XcE?Qyia_slP*I%{T#xk^5)*zP*AYeS%A8cpKg$(utGwsj9|o^}=b)mPMq9 z_4cB2I1?)yy3B?$Gh##3At^H2qZ5I5i{mZpAW|FTKkr}cf+J%|Aw5#9*03>Py zAzOLwSTZZJ{XnT}&&D%mo}6L*=i1>+qH-%rTBn|@=T569P3BuN6+%|jods$8+)PaM z)n=wFlQC@=d|S+Re2y)q7E#*e|?Q064mS9Yw*l9jU7t|VjDrxoY+&!(L$)=;F%bGghR zilbd~wAg1BICkBlb{LbhAwiRvee$Az|8pV$7o25uIpe*ClK@aRkEB%MK}B6zcCOgO zJgAHRaXwp6mRU1J+Ns}&`2jK&Njr8q8_Jl~*|K^?{u?(Q2ld{X+04y1-+AW`o-N}I zGMgx1S@O#N~VN(oaG|Jz=d7v;u{x88a0`@j7C z-`hX;%uMpql{3|tDSPDdk}jPA`Qajvk|^CExqOC(C0*1cbcgf`VqFcYjW?~^%Zh93fvohv$LbhsSKWP*PzBeb!pvL7B?TEhCs2$XvEOe3@X@0%w9G-Pn#i_oC{9=;HE~$$%>mW4q3^_ZN@+ z--FHw<$N8j_P%+^eud*V_0P}S0B8C<3Ba_i&zC+&+9x<0bjD_cG|kG4?zQCYEXT|M zlsRYGhh%=k)DD7~l|8^b%TH5jX!H3DX@*6W-sZZA{4r?fY;7dR3{WODLYei(n{OMa zQ%xPuFK!B$O@AEjUkD%zWzZ;Y8^+@HO@_2J*5@q4SE~$Q^)P6z)q1_%MMG)PHERd6 z=+s+Sx<}%Y8GH&r>Y9;dvKg9IBcM_3EC16GQkDj$yr#Q5$b^&FqTd>;*UXtnV~Eu_4fobm2n29V621eKW_dwd}00}OM;pAEtE!~ zqzGl)Hy6<*8w9w97hSehZWG#i>DaM9Y&`hj0~`0<_ajO5b{B1nU?y>9CZlXjrC>?} z9Wy?jiHZNMOJ-PTw_0aq=77fSY=!}CzjQWc{v>xkxSUWnGb<_*u@%9L8dL3$S8`}b zKxRPWjgMlUPb-)WD4)9>?qc7ORqiXb0Tzzk4xjzOX;kme{e1x}*I4ED#Pc?~W;vYU zv!+nlJQl3AV`d?|F!O_oOJ?AK=H6zxgW#2oH-$&7xc?0NF`w1f6R(kA7Q>hZQN3S< zGGq8MY;Oz9m{%sa)>z~^C4l?)_3Lb}^;Ma|*-diHbPdwBp==%XOzSKM)!MgF0KrwM zG8=T&Qaw%dUs?Ij1jO#R>v!GtgKqx~zBVckYi9L2m~nRa%!AFD zXU5ebVt!e4A=kn;I1EML*}xv$PE0Oj%Z-t`{X*Y7Jm_Nymeo9XYq$IVV>;LQj1>r10utQ<$KNz6-yL9c^^}GEYL`c&EV>%H)AS4-# zxLk(ej59F3Ujnf0B)Iu_{&C106X&-@Fk@~RbIc-u+A%Xk5y*OiS-M`?frC$Lf07UO znmz*kS#5}vvKF0cM8%}ZxWp| z)tUSs89<8R%=qJ~mSaXR<81EItV|kKrRQTB&fHdV(_De7G*`CbFbk8*WyF$TCi#z2 zTU^${I!U`Eg4sBQv*z$+)zxwmHJzRaW|}D{>9ra#o#Uf=Jg$Jmz@qvjxpxdO10cjY z+XZEMo#63kmt(Z_-UpNOtFHEy&%bhComa;fAn85vTJ?TsK*0mKO7-RS$LsR3bu1n8 zc(`d8BGh&&97AQ*72|uBa**P7(>{rS#qBbnv2T4p+j(wkTxfHcU4K)<*eDNc8q6Hh zR34++2U7&IS~4!DuuC!dmhKss% zbh9y+o(Jj;Kk34sj=bQ}G>Ps-QbLcj^jcUKvwFkIxcm~ixWspQ*L!VHm z2t#~*9j0>lqT2UcZ6QvH0PD|^>x47a^*Pq|a86kOv+DpeLs`R`W={BzrP{r8MjR;l zxFwGrG2uVvm2o>B&*#aO%Sa|3F_dXAi#cWlt=?efS(sD(%Z^z0Kip3jOb{l(VMx+& zrv7MCNc-d1SLbm4S`o|+Kl3c0tUs7d$I0Kjjr$CU)ZD?$%E8R#n&kFxGl)qI`)5JS zGdClc*(H-Brf{Vo4bGZfGxZaoA*87i0+3N^|MJTld!tKF$BZ&t7|dK+=8-toIN}$X zCX^EqzKUT?_5-LDpOuMri~Xy)W~56??R;=(6rKQ|O;b6N+IdgrS3GOnCJyHl|elrM|QBH}_{w*wb zq1OqzoKxoSX4+rm+2U>4$U9d{)Zhi0GUe&fF>zqDcE}I z(31wWqRyQ=Jpni8n_a!S+&-beK-S5yCNPUB6jF5QOEWX0vWZ5ervMnNTnB75<(Wk= z>y=|xcgXUGnY+$~WaBz!oC%TTmoYxffj;JX*fs0Q-7`RDxlRyc9dg*xfIgU%8-c)xeQQ^YVXFt@r0B3+FI7o2b;_)^3F*g8UpFqqLL@~?PpQ-qg#pZ@!D03z60d|mrFux<5+z%x@f)S+gBdTl8U^;al! za4_5a4(_tJmYKiLh92jZc?~g%&RHhI)~040GUk;@Tn{al65X;0Wl>l_cjiao+Sp(= zjAN#;N1zmxh9^fMkzaiTG)JC)Vba&IuJ%!I#f}Sl$}=(vW`;6@*C1e~YjYj4n|8~9 ztbK-O4rOC$p@EC=l_dT*f|*Lsx-^tENI)icO`*@mr8o>{Q3A8i_WJ%`T0_x_V-F&8 zJEa85tQ}IEndvr03d`U{wa?1rb^>U1(IMkf83wZmWl}asnr@kNTgda+Z7|EAtabKf zY3(wVmfZTmBzf;5+cDD9WrPd8p)yRU!JcSLx4=1A(M zDSYA^x!YnQzeAk{0=QiUGeAo2m;uZhz@-<6K?K$IeLT-#%0s8Exn~X)bFH#s&e_n? ztW3MsoB&XHj-A15Qd%*r5FeQYH!K@Scf<(;s|rv#g!#m!WRrOx-ezvoSes-C`J1ieMJi_Yq5m z6W!1RAdr(~OJIf^AUI~@PRKFijh;DX%>twe$UMNF{^$ABF@x-w$sJQ&*XjPw537bD z9sVW20L-io5D8}eMWAxM|1nziwbZyjFWX@)*YOjtJ3q-k4g_WTKh7P_u3o*ihieLQ zW@ahpgG*=F1#_uTrE@>r&Y78pHUgOYXslr_s}WLvQ}VtcXcX## zr_*xAf|KTBojyBlzp(uA)G_<>N%s?g33OQ6G4q4~!Q3n`S>s_HGl3r*GiY=RwZ<~l zI)!~ndCT(20B61Q)S-i&`}O^e%U3Q{CkIf1GS1L!eT&QgqST#@U&!JNGPmaJlX zU`AN841g-L{IXjKWT-;`Eo$-HGj3ZMtYOIv=(Epm2(l!tS*FB(X_9kxNKzf8*EKtN z@-NN#Wm)^m$~5`kV~@n>T6Df8aK_G{=$vVr%X_J$duDM>GcG<`T&TarF_UmGwwE7f z9-T2hfgSsbVazxvazR-p-byi?AZ^DfLxR6l`({-j17Pu!LhaJeaL7DwIjQR_sebjnLM3Y{Ht| zJxH#m{%86;Dg>QO2pAm9v|NS<$SmK33(ZCl z=$84K8IpxdKX)**1XfCGU8#!#pGI0O;gv)lOWP3Dw% z;z4QM#9EGPfY1TJY+afFnZJX~Z8hW^1%%nPKJesW0h$y4)ow5olu6xpc>;GHbJSm@ z!=akQk%F1PNTv2`EYKKZcp8lbc7OHtb;mm(=+ZUl_?y=-17^;HQz<7-p-c7WjLZN; z^?69+d7S_c4x<0fW$@(lyRSmHY9nB%&5x$i zFIo-e7cN~^=!^iVzkwVZ*Dc*RbPTrZ`t%w?4n?3D2(So74S==Ydi+$)*NL{?vp2`{ zmvhW^Oa4yAWO+iFoGFJgqYP*s7gWdEWDZvvu=s4uRO(|OGt_z9F&z53vZVjQ`elQM zG8LK>xaj+!(h|f7V3tfe$>D~7x*PvxM+|OX9^XWZltWsU=XU?AcFMH>i zEIE=KVYAiS{7-cu&Ouh3bN3q5T5C3t)kT?O^r63R1Hk}Z0-e=^HFL`Z>WO;OR=Exj z4-cwjGkMFfKMy2k`Msm~cpBKbiQF@cbc)s-EM+qEdCNZGrA%MhnMvDKM>fn{&$eUR=}0G3OONTDO1Qwmb@p}eZILgGNZ4M4Lf|0Fvp_!{)b}2k{{hT14kDBUNC}{$X7#x@3Wd$cRh|Hi` zM&thvM9h@x?|w5I?e>PC={~!v2+u>a$d1ro7G)+%IkVF3FvTn)V!W54Wk^Wb<4j^^ z`~QJdHIg=AZH&c8NLJ&1Bo^%FLrB()WVM)V;ra^oj04c?#Eh>C>dIs(Q=dM@lt*DH?=KytoKbE9oR;b{+DZEftIcm#{_DQnf6qlTsy%Caa4_82V}pNI;PG_n*LeVbfr!Ao%rd@K}UF`oOOgT z8KX*>Wo4}KT5C$ofJ@03(K|okU0bymF*DUndnsveu~wC|Hnmzdp1g^Kfta0#5yWf( z5_0x@+m-1y3VlZZzmahCm%(Pm2>{73b0}rl6HK~@iCJ|nCbP>x#sp`Q+DDRL)S^m{ z89OsMqs|AI_kS2DW|t7M7W#VzMm;3T&vC`4ZkFHw{>o%%_s`=#DK{Qf?||n3k~M^= zfrO<5H0j_RPtIWePoG@*^vXk0n7F>BNj{*s;0WWA?Xy z`xif>Viqa&B4<%

            q+IGCRp`4JH_Tz@XLtg4(X1$<6-kFJW$8!`nhnc$%m8DGQGU7H7H=-Q*T zBxWRNPI6?hkII<>Q~LWg%bUFB3|@xNI(Z`@)ARvw6v9|J0B$4Z`yuP;KvI)eLD%xn*$b~QO8NWe;^Og0@!HRCYzpy4R&%oHN8S(ITW za%SbsdLAsNE)~dF7@5KQ5ha*PUGX8JDqcAjLiBGf9Fmr*KXM70M;Vgt@ zOk^h_$WniAiI}Z1-jP!_L2lWkTJ zBRQ)pW>wNQzgjcH@4rzGpbatD{4YC!K9f2ev&ak)B9f#npBd*~%KzczO|5JWaQH|j z5yYs3>9AOyz8*IJuOUX~lufOaaovZ~JZ80F=EzwUwjwhauAg}EH!Zmp7dW^)`s3J@`88Z>L-_oD8tfYqpLu|7#8WWf370N%C{S6)%6l<1llT zE?uSf? z{p-3?%4{>1D;KOga9vpwSUPfomV3-t%1k>mJJ^{iGUj`67?Lqw1FSUq|5A?`%a~k= zD5C=;trnTV(n6LgggJZc%+wQlF)m|#+W!$>8SY`7K-GG257>=ZB}pBlijz{QZiPhhmoB!!?)!)2D%vN3>H~$~R zd`cPaPXQ7#Ugty%CCxTPS0=87eT0nr^E)#aASY)3@DG3eGxxR%l^jKmf{V_Wpm{OK zFpINYd7aD{M=7%qjX?>nLg1Lbtv!vmyk?e=4#%xfSdvG(=H&?86VzCs-{Yjr z)Ut349M7HidCc~t{J#t#1J?27%<&~ot!Y>0+I-zX)~*Ljn!I1fMWhVGjEb3F4@;RH z?rn8nYh?V7rVNRUk(Wfqf2~4sm^ru>*EsndfTBp!PcC8PnrUN5d5}lCm!-w=7<-2MJm1LtC^;MH4{Q ziXEHnY$BGwei)ajW(!u4G{6F8Iir`8M;uXP##YBR&KL2RudgHf7DX&7XPGsuteBCI zZOwraDCz0VMslDZmgvAj^1s14GF>&(!6?OSV`#b7VIV0xNYH@0q&c2|-N*^r7}bo5 znLeLX%S3jlmI)qT!Lp?YoA%xmVC#3BpkYR)h}oOp!%lE7c_3UiY&wcPW*}!HA~Liu zW7;lE?k6B;jz#3G?~RaAJxi1{twfum#HoANsb-&+0y$e!WF9l-Cwdt(nt`j&y!Z#R z%pxHPv0r^puza~m$nud)d?6udLZY61N2}f_{}`I-!cr#4Su_E_4Y-2Le`kiuas<<{ z?#p@OEzZaDCSKR0FiR6SsF<-UlUZgAm?beIIrD>3vB&?R*&f6Ud*IUivybt5G&X~)p$+ZK zTsl&(*<*v4@!T=n6P0>+%-}5p81+SkEFWebt7oCNU;C|cWtLawznpJoPiH3O!YC?( z#{Ui-@=?HS7MB5{c6|vG7*A-Pw?FG9c17e(01azBVD?YH^3P)j2MYUml)lQ-#KN-gecuh%>Cg=reuX;mYDvl4FJsW5D6n(DPzbiv&>jhpwEMcVnkgU*xLa7fI`+%5%*`x_Fl8 zHTXjOXOf(8F0V4o7);5|%pW@m?dJ|XW@U2bXuJjnH32N#7qDP`dDDM{2UiD47zi2e zH|$B$KEp6`u0!y^KE|?fFD_Yj>?LMwI-*+UD!n%u3OrAI?-f7oqhS3k`Cs?qgbNTe zAoiDW7$=CBU#srQd713Qq`!=vnKa(2I}@^`mlVGFhdIOWzXtpIxTRSV@^9P#DH}LP z^Y{Mn55Ee$9w8~CQpUIp&dc<2rMzS!UGkFAgU0eERWn#8`s$Gx;lz>9LV+B!m8HzX z<;>%1nbvhD=_2ZiTAiH5m{l>$)iQd}Vvx86Bu(q77*ERflQA{{7~#@uRj4cTpZ@lz z`v3p%+<~{%RdEh67o4L+1I)F?T!=zeM8fKrj>)Az?U`rBk|qyH zKC$XxkA{~k{WqDDsdWO6*=!{3d3(~nouRYCiJ21@loL?Oj00x95lHv?H8aa}U)g3l zTRJ#)N#F1OGLOyZkb0*QhgLlVYK3B!c4e-Y5;KBjNbdI%wEEZ7yD^1zQY`4wgjz6z{b-2fDu<<|hoN-OC>{jAd ztiqfnO+n<0#Ekn~J;Uoz&HVcF4KrVW(*kHo-k_LitpQz`H2!a@^ekn%S|%i8nL=`= z$PDnMFyVrGAyLfYP6FQxp5H;mjAcyUi;?O-1cPO@vb~-jGlLPcft{EnWLQ6s$L#s~ z^Ct&(rq&7X4TR60sF=kAg;`c0F;f|l|RXfNcM^)PT*hzfQVTi$z&awT3zKPkKnoE8D`=q9jy2Xk;kkf8p{-yEW_$!Ow6% zTt>$mD}s+>l3EoFGk0~XL&^PKsuUp;n9*y7_za>|R-hGf&?aaWD3QB5DZ@3%SshCLr@hH76!4nq zj0p#rvz!^_uSVpIRm2G7Ra_C50f6;!4}vDSE{)4@#>p`$EMc-kDmoy&hRl+Jld!X* zGTIawW_JU@fWPI&pxK!Un3am;u{Pea&b7mpEBBRkh*bG7a+WsTW9Ggy-OrkhI{ZCE z-QezRrCP7QcbH<1ph%rT3mjWEAVYu1fPe_5oO5t;cvZ1dbouJzaQCIAt# z_>km(Bq(N_Stl0U_em-9dD4eP(mUEc7 zcVKE|u&g%_D4L_MY(#){qOY6D|Hl=xqoj;$6Cs-xP|5@lH9}v5>r1ham}P`2c@1ba z|JiuO?Bl_v0b;2(5`dIx6~>h^JLoSHqG+D2&P*Ze$c*?+Hj+tu0{59?mJcoG*AZwJ z4G9^gz@RlX_n6_Sm8DFnWgVl{GGae5<9<9Tn?K%Se&Tf#v}|_f{^Wm^Gugh*r&g9Q zJ!IAil&fF;T!~7RKFpl6G->+h?~A%KgT()+ocW>SUzg>VXLV#QTn!**^Aa@?GALyg zpV@LfNh2xCCjo>?ShNzg95k)MdXC2|LaK^YN}UfNF#VIH9gWL~vdrF)vc5XEFhUll z{RidC4$o*6Dmi80HMv&d8*0PMMb7$~F-mr3@;?SinIKX|^FL>0%4c?NHzrG&B~nIA zLQ_c6z; zzwWa#J3!7bD|2L5W~P`CZE~yylGgVE$rslPN!la4Unf_MEAYs{5l`oP&g%ZN;?H3j zbC_brQfAbV*+C0M1b-N0ewkMA7|hBnHBhE88KL=~NL4hng!&+J&+{U|46GCGG}FuBxh?qT((}?BSd0pF78hnO0&`F^e&MNpmf{ZphR#0QW~KW+-2- zK-Jt&;C|ZK3AAeloa4G9-4i5cwm+?uDGoq_#&By6FXvb`J6A}|!YniJp^%K(o`_4C zG^Ww8#vh)QGnrwAVV{^^XNsA1M0gvk4r?!A(qBfON5@EFws!0*J!aw*_{!ujKAh8dK! z*w}_^%6u$k>Hwu`#)DXpYQ_W7{2uUmu$1|{-2A^^LHiPincsK`JjO(3tQMEyiWxhj zbgj=bl_{1nbvAUurF-rrlgCViO^6x*w7Nou-{m2*nw6=CK>Eu##C(YPpCB2_(Ov-S zK;){~_!8%Wb$=-{CRhdVXAPn=53=rMD0CPKEQn)$p;54dMTqBsk^X5uzn z$%&8$o0d7Xl9+80u1ZtDmieEhOa``*rLx{@Pu4Wz%KV=N%nm7K?jvTO_LnwaitIeU zl;3mXLB&j{ld}~gnP~pELy<<@Fvra2WYXZTaZG-Gbg)B{xkLTu>%KPzFkIH7J6z4{ z`+O9fh}rtf{iMwHjpXc0BW8R2WxP*Z-?d4Cb_kEcy=qyLILB|MbpVMQ<1Zur{-6H# zr+OIFs?VyhW&USG7a}t@J2S;^1eP#K$^;U%jF_d-7+S+%S>%^7`JY5BDk(5G#QkLs zMrL@|SMD(z8!mgi0f2;U{&L>+>HK$>=v2x7L@oIrhhyw7+ZrY;5+&amJ2Asy=Js_W zXm0S=YgFr{j&=CVPIiQM_%L%p4}&CT!!pdi*wQ7j&vUjG?vEp3drO%W;)OlYxYh|; zBZiQ+kK?~~1TjNgMq>Q`5d?wPx6@IUP#V#j|A$@37epy;6|p7)zP$K|A+sRW9G^K zMqZe}-SM?L)!_{QQn6T8U^!9*OGC>UnIUD3-|wrJGCOogtBl#Nqo|Ci`KW`$tgMs; z<;xw!4EyPkkTBjmM$*PL1uRA4w!aCWRNhQyY~q>(Y=RPJO31YTbkeNMWQh6J_%~mv zmWjJ?W~M{jr^usX!bZg`My#e$H6w#`7U{%n%Y;igk;Z?)+g_cVaftcp{<2ma$&}oi zpFlmoRpjXQm~mfJ%}~lz&?BE*J8&?jJ~JQ34kWkJv zTMuJVq522+ZlK&mFWRZ|Lz>`XTeW6&!%)Mru zm6^@RbSaP>nk;9!YDRyV4tRJy5HNd=$BZS*9G^5@`9D-|*tRQcz6mpS3Pl++_B~=s zLqxXhW6oGZw(LqtHAuD@StC*+23fLY%Q$B2vP8(p5+VCC@4WBl^PWH8{BWM<+{<-c z_jSvVVU2wUYPN&JS<;;Nb94%FNbCKve_HoVulk*Pfq!qG=k08^agYCs-j?{rNWFJ3 zwt_kydw-Q$ZSfZzczzp*W#2iE`Q4#_UgkqtUc}BLC_69VWnp8~=sSrEsMQi_Y_0eW zI{v^Z&US<3Aad#TNx{p2KNTe$cK@xmV2*CF2mIG2d>V_bvKGb=3eq4vXOkX@ebk9@ z*wnL-#iZQGtLynLQrG4(&YbTi^R;ROve4dpc*(>1Eql-H@j)FP=|x!JN6{m(i+;C% z{fl_}YG9tE(e&uV>;jFLMu@urCLI^yR#x^%<#+lL&dH@Ivj+hJeJ9r}bfoQrl8gQX z%46f^;8O;S_cIQ9SuO(8ZI>0bO=%OUi$zM1sk8K(cg?*Bo*nlXcLIN<)FNPrxp=m0 z$3_!zTzV&mz;tTdw$o?kOrXo7|K@!XdR8%Y>2NwT;$s|?%t%zgWO)G?)a#Vfi00&5 z_w#IRzFn)r+ZaC@Z5yNigrgGhIAS=2uz?oush&X_!>NbuEZm1Sg!G=3ZOuVz34jw0 z&P9nHCLTL%MSVz9m6h;pHzCB(Z1fWEgPOHz;nCD6?Xw!scj^TBh{GJ#qP^AoOk)X; z1Clo{oT2ot>emV1fXu^db8VI6w=}Bd13&KdF1LfSRv&UJOgHaOJ@~bIqbr1wk+_O` z<7J%p^!l08(4JH>SCcW5%$&6-aHR$}4L1%m|Cs!Zz)uW!Ft#Fz#AZGR=}GFq?2+;C zv+r5|Rn6~Xf|Kn+Xd`zJY~XU>`*YNo9JSXe5QAX`{f*N0ecqv?l`X`Q(%D!3c8;?1 z_}^-UOL^40bUIA~4N0BH!)Yu?eV_Fz`R%O)nf&ZUaw;eOLVmf{K zSldN4>*kFS(DFcM&R~&U8lkD3Hd-;Ba#1Bo46&Pj%|RA&WDPx(zwk# zf$hA@(tKyj|82uJH)Y0NC|&9XpFnf9aLXJ26fDUZeELSc;`YE8caXtv3Pr%Ks1`qKg!O*`1T;Zz$wQcFWC%Sm&t&$CKn|ziJz9W z*5$SQz>C0Y82qFZRiuXj$|oyj1Ivi;xA^o%_``*|{g@pP-n^rkPXQ}FJP@Ji^foH9 z&$6CFgo9tS>=(_Pn{cPiBqL|S*t?ZHFLd}N)cHVo5i`&zJNyhkjXo6&vr0t3hsdbM z$SSQNEd;Arl8_82NnQMv`9~Vt`tREE*E3VX=iOJv6K)8V??cn!`t;8xlGVx36_WwK zL*^QRkBew;=Sf!C8+|V-Tbc@ZQ@n}!g($2DZl^C7Loy-ZBO~zgKifTaN!yr8ujF`! z6lF(oW8=Eby+q42;`V*kKk7WgniM4fwa+J89$RWbK~$gHIN|ReGoN{VAQO zu-U0PvKM$h;LM{tT~-WAWp|_j7L^m4zy_ur9C0IA$#lc{NL8kTmKRJeDoCUgyi@hJ zCL3uIAN?Z!nngyX?oLFzH2!JR;+Z*Ie=CJsf_5i{0?YVoeQ=oJhF&2Ch1m?%y5{mG z#!iIjN|oe62)6F8e0uzdn_)VwHGwdFc1I-EZUzTlzH-#Pzj?=(>kR%$2(on2YG>Ir zIO(0zmIOBveuIwv$fp{DKj3joAOM_U{7@F~Y5{!_Kc3Qzku&#xkg4)~_7v9Aw*-dY zKBzkL5al%*?h(h2OI#}yd|v^!ytd}G>!>kpW@b!580278u-n_ULAHtG|tMa zsm;Wcb$T~%*!ZnI$McbycFK>B2uIj8I?bK7AeG;CrG54ZYaL5fDOpY}yB1nid@i0$ zSa#=7zDAKUUOR8R{PA}l8?m5#j+Q>mjus`;XfN=`hi#Li>$GCNeiUG@m z>6{z#Ji01c*`E0Qj>u_ClgaxDVLDN#x37-Z2BXPr{_C`3cBU_8Uu0R{HO<=ix&6cG zVwu|%G$?eUju~1m$cpJHL%|+Vdib+Vv%rIsw%GrU>^e2vb8m#c;HY~$P&EprAh{5J z8nl}VN16RqPC{3XT20fjE3H7#+o7f}-!e{1S6Y^y85q`~$V zmH4L|Jb-O+f$Ctk5zRhT?NkA78#9=;qDMDZP#tzr4WNzLi(S;p*RE1w0U1oLm*@l^ z<92oBl^O7x5uG}@hqH@Mt0D?cyl_rDupCa1DXofPpLaFeJ4cf?^ukkgoHRIDNZ0p+ zUs|-bC{JCwG2 zHbF+u9yevMssQGCc>3L5d9IhAdje$wHex1jg;Jg$$SQtK-rA#W)KG_h`tla_F)~{9 zMf})Hf6cwhv+CqG+mvP?$^)ca+Kylm>5R}R-Gi8alwDsGnf`DGDd-(edu-XlTd*3q z5miT-;v+gduKKd)-10)<2%7`Z0S%P#Z*2(r^0zYs)_9{U*V@6;ZmSdLS-b$5<0SRq zYkxh1Kb{juTor2Nnpl2BYce(NX(*f+`E55`y063P8og>A_FW?h(Kf#JpEU5B^pD-( zfo!f@k(1Y3r5{!q+Zzq!+nH{14p`H4&yAQcV;N}-i>f9K{TJK2@0>QFoH#MR&n(uOtQB}TT$}i-%N`3!%8|}u0q$*ndq+_F>z`0x z!Y`8bg)BV^(U6YyR8H0J6F)lT6|KmP5QG^kQwGH{_hmO-UlQTH)0n~BB<-1ECDdz1 zqTEy-=eKu(dQJKKGA=%Xy1-s|F5OqPWBbnyZ>Rg)$?k5x@{Mgd7mJ}ub8;FLFgGgF z{@FqtY0H)RHU(9rlZ2k5VXINWm{+QHU&3yfs}e}RK+OaE6JsRE;bJU7-)(wTwa}g^ zZO<_0ksT99WZ&29-h}UG@IpPav|DTGH`jAunhY7I-m&DREI*Wr3SnG0D!bcNwGmii z3Y~Ao`Hyk~|CAz_y5C%HzVRQ(FKJVxP_DE2Huy$6xL{e_P<2L_<+p3`ddZ>QA2>|$ zEFWT3i-CAMkx>0MiDq8;GsbV-8PD*h~zg3jD^m@RLMM@gC`&||P7Dn@r z=Iw$ORe=x0k6nxz3Qgt-bxBa-QzZO}wtZJ^a1zoY5u!?>mVu=@kLOKJErNHX|euo>QdnNk5zBt(s9h*Piia|hd1}<0b7ixX=KyPn1Y?~8H>qDTN5Jl zH+o!G$>jm2B0MrB`A8j79}nQrMQl4r+@G_o!Q2i$f42K{Q4T>&#ao5pdYPhS2WXjf zSx>T$4O^kUfbz#h_ut#^2e!(;?pVXDP##%I7zg%UEE~@n9 zc{jh__Rc}{QDFXm_@>{pau8ocml3$LRkJK&dVn98;cTf$&ScRMQ!3nQNs?4$I7K(@ zaxeMZEbHXQLAKpnSMgI27##|AgL(5I5{ynveWR+m7UwySAu2OPbJMiwpQ;ZbX^b{c zcP>WzT0(gNtC}v9CrXp{^ko`|c*G zWSV5?k)Hts%J7@Cg6998{;Xt_u@v>r6Bcnlbv(9m&oFv2F0?aT6!d6Rl6YiThkowM zgpx84Fer#b2AtT!I8XKFS31Yqs&ZtrBuv8?fqz#xCwY^1J}xf}Z&)(C>(DghLumSQ zy6^oW1r<-;=|6Thu}mM8$d`4dL1)b>6wmnRoVv}1FZ1p52D1=K0bIV9)B1E35t-kv~TxmOama;Ib^pI@y<}%{-|pK#^Lr z{-HOEG83UA0g~tBD5m7i1&{f1DB-%5i6;#QynAH@%;A$)82O0Sp}+PTO5gLmXLy&; zUq-EZ+%-O&M?#e_m~X||m3t*ZUeF*)^K2Jib2)0!CniMhB39C-e|0V85H$VXYHP@+ zCL*V~$w`0Bg~2q^R7J4c8vR&s+voy2P1wFxWm;NsQWfYDPRyNK74y-hZyj0AM!1bK z0#3$Pc@aEHPeYf{=R-V-a|jFwxYen#Xs2}&2xWTUJ|OH3&Rs{_J+nZB09Ddwg$s2b z2+Z>AC~*dSoN=gS^ts85z&%G8SVI@x*8W>6g689xQO4c-@8#84c?P@bHaoQ($LJE7 zLg2WQHl2PW)y{yR7dtSVHDq8bOQ9O0^8sH7;aRM4Iuedy`Q1H=L+Mo%!S{b<4HH}e zQ7+&@?D%R3q;nXE>A=OT9uCDZ$V`XgzZdD_h1{>)bXJPg9e?+3BmT2c`pEBJ;akt1 z5-O;y#OPGJSi1zY#rJb>Wycv1G#zXXA-}h+mkM;%Cv~fuz16Ajxn$C1mo1rht<~&` zF8_VXv$^@&u4k_ubx2S-NEFnpVXjs`f42E`(+ zu_3!rq0^)&b{AF0qvWR6u*aZ*91*?jEU?mL<}lXce%?}KgWFQ^tMG&9^z%#YdO7-x z?$w|N`TYyDe9lWjnmE_4(#mfzjV*SZ(d&cD1Jc2JDcGk;e;GN5HYoCGup*_@^zH4} z7L8U(@J;*`(l&jc?9k1+gcl1RU8?!o{fv@oAT z?9)%!9{%C-11{5W{6>NjYc?tRylxXmm+c;9>2J_afN|~HT#Ue>R?%h2^c(Xw`o@tl zTt7nYo-S5o47rZsiH9@ITyMmAFq}HmxE6>tSi+w-5{C56Q`8&EuiSL48pU0DWY_ZC zh=$7^a2b7Q)Ti+nL5oT{mA(wx^GrprrNE84L_ik5Y5t#vAVDVQJtFlJJ$BUmL3dq; zkP8x_J!||)HK*+V3%e>QVJLuELde#0M z>CDx_wz5ggr@g#jfJCBe;6B1_?+UyrRgh(HXQhG0UC_r+qCtSYCMcrZV@HrIf&~w= zx87JUKyQmFeC?De<-V_gS8|itZXbs=;#MQ%Uyc81eP_)uFnmO2Y(&8)fq5Sm0>p@4{;VR`*-c-IinG$1BLOn6ST! z7u4qs?|;clU>F_BstKY#=wG%G?dTfDE2Z}+0|}ipALaX%)z8~OLw6{1r8_<>ckui> z)2nv!orIA8e#_NtenNSMYYw@rDw)U%jW|_mk+k5pN8->Q1q2ES)d@v7VqH|Z$P64Q zgIwEV_Or*2!>$~YV80_g-R#eXNX{4F>^H*m*QefN6T)}^I}=MbA`ehfcOx8IoUic9 z5cDMQxec`ZBuRU$lH7A3-b3mcH@cr4RP`FSRmxksSjSg=IqkBO1m+xsiTt>Fu{^5Sl}C6~hb1brbNE9J=DN*d{dm!#8F82n@FPZ9Wt{i}RL)*`sl z&ePHxr0!#W$1Pq`3j8Xhz`fMGYj;M=Mbx~@{_`gPBTy54=N4vXENi=+o}+)bWaJEY zx8lla&oel4&x-?O@;#$IdP8YOD^o*P*sW>}md--q3eOoWUsb2A6Sm>(}e-8!N! znit3T9sigV+t@4i`iBb!Y}bW==1*+&E{>8GggIcAY=qaZpX&d2NDe@ywcDb@kOHR>MR`b{|^@evGqN7CtPOU$oQ66%E zMZfLOdG=0|(cEcw29&B*ylxY^8OLXpmcW;mgqfp@8|xI-x_ft#*NX3VD73y%5uAs9 z`a->j;_}b|vlo+vxvJiU1-dK7oP3Wku6RMa#o&=#E|2gi7-%}ysP2-PU)vmjkEI#~ z`ADWg$jxqNE>C8$F_tpI$ zm~=nV;n5@m`Afr}w4I$%my8->?>F9_bVD#@C_{d^cQkH1m9WKMs`aNXzyJ840CddB z(r6GOQENUZvk_Sbs?HqNzk_^;0^NeK#lj3z>CZ%zdi$T;C;i7TFKK^m(&9TAo}NK8OY@@DfBgRO~HcL*aN@_P#t(CUOk3!jAnu*_I|3xcGAqS@5g^TaeB;G=BK9EV&Rg6yvt z!1tD~SO09yu7MUCdUL!*BRPb41QO)J+^lgE8KURfm5l}kqi@uYst$Y63+4hL5*wl4 zmK!el{!y|+19B@!`#;t84l63mePXfv zwg6PQPjr0S`bWwCz$Pq*e=(Gp0{0XH%~p?Q7@%+DhX&w+Ka-ZhDajkqLE|coiS(xg z;i;-7<9Aummz*bo_NkQ4z!ERr+a0J9AF zKZ}wG1>~f?cH|fHQA`~nf+9eYnYhyAbcxzb7ms_980vn}&$!_v1>&;e~dlA+Q%&3Rsp? z__4yAEh35N@1uNjaQ@wF@@J;?wruIoASh`sOuv8dQH-NEH?W;GG5{}8^o42NpV|3r zeWEjYseSDzy;1K+M*OEp5dmnduzyBVf0ZAh=`8VcR$-)e3_LA`l%0Uj`SO>R#s?2} zFK!}_u+qw=nE~um;;p^iynniKhZXpip`kKn<92Q`eGS2_=D{Y~Z#z4qdh=XwH zSL153(mi2;8+w$pV_DDqY>5N9@=)P_S|lp%j-*P>5}b) zMNF~B_@*7@8BoSw)CKD^gj8^UfARZHSwWDt073zoAzmMn zL{U3b`-xR2QLozxZWrbzMu@(}?H*AQW-Pj!PYAbWZk?%>a_e&H{vZX6K1c{tDwx0e z5&2D@MPb1>pX=`FPq0^sDr1k*F#oYt?`a5p>Oyq$>8gqKmB4eFv*Rjz4GA?p$1xS> zPLr&T6k%HO*~cIJj>ak-ct}3ljrm%Ep-&vMOp8#9-mon(R{EbF^ZO((p9^Mr`p#(J z5TO=?J+^DL@h+G(&l>A;u(pzuuzW{BlxWK-(;jN84e^>VLgabBEx6RGr~sMQF{=0e z%DuV4$8BllS^izr-2NE0xsF9fzn&u>anlDE$Iv4)ZFyL@riLPNF@)2SP{5i2*>Wi^ zN0q>d>-hx=p$3|6#=b%l@l0JzZ@3(C^9VL-LJKs${#27I42FUGhxffyXJ2IXS~|e`}c!POt{-zjm?y!uV)|95G;Rjy9`5o6Yku zeoM`|dV0SF;u5V9XO}OTZ&=~S`u8WO=a^b62C~>c!ee6M_7hxNDF;uLTx338Ia#b( zi6@Nt8`~6j7yi;9s73_QTV)#m4&vUkz)pQv!QB!w6r`U6th!_TjtQ=J zHe3yz6{%;~U5YMkTMZG(KHX||5BA|opYbJY3&ERU zLROX&2yLkLraUZ6IKE;g?`w?U@l&_;1e-(GfFLhN;Vo`5dOoV6o7Nd$1FNBmibF5o5-UV!04_=unI&!_hPgZVN@oy4sZ2=z(JHqjFmNr%PV+8gy5@Ai+g zRatTcj=807e}A-Ywhmbr%zIs9<$&zdVH|XP>~prrC@pc<7y^>v;8Y4?AOBW4?=nJ+ zpC(;)2`;iwEW!Vm)jcfhx`}u5+(kwFk1(<#^)p4S!>XJ?y|9pRYb9!3Ty5R)C3X{B-7EnXyuR7x?(KR^d@B zs6pj&E|afmmJe+D6qhfdXWjmt-7|Ut=UMjjL*s1ztsgrB#Xo*W@*+jlH2*Dr+^0+% zPCWj4MLOncm1Df=T}vx3TdZ}k1Jxb@Ws)1dkk}JdxM9|6FP1GvFWdIYcFcpIM0Ui# z2QP5F$UaqZ@0c%p20K+t$x*Z7&H|Swd6Kd*^`0&|FFk#ShtpJ;!24?IkGMC9-A`!y zGcotBRUgLK-_%3wb?av+i#S|44Q2@nP1qt$8OqMce7KCDhuv3K9hNsuJW+}6aJ*x* zHC1Qj$-iI!D(~g+p_ol_}Cyc9d143W}Vu%ls@6!cu7bOV5sK4#TU`u4w==;5vbDO-z zGB?OQwxdf=T`wWVA|D_1rGI+M&QZZey!=O2vTX1z18!?fVd}`yIRpYj@GoiGFWQVU zzy5V77zB9f75r72XDnq$6G-md<1PXV{6#j%{v)5$F1xQXl%R$crl(z0oDjUmt1fj8QF$AiK z(mzRrbun&T3g1r$MXJ;jxmzWPyz1Wn0HN4dB$kuxRc$-24`Y%0_bOkrDQ5ic zzP4z#YR1C$Jynu)4p&?~dRXGwuM@wx@tQ3qR)?{Veao)Cro*clUDw!eoT1M9#%$OV zixGjs&&$ERU1U-72SlKa%w{Bt8S()tA}se>9B@iz`4ma{X}a%!XMpxw*jHrI=G(Sd zE%?bXz76CK-1wXk=wf1Rf&C4id)O{EKU>X?A0347Tbttlw26*~cga zi($HrVewSKGGyWw{tWt;dYut>KA;hQ)H5}waXgu3;8NM##8GLEW|GhFb6)_U6Q@{K*hA`uFt-acX*-*4v z)OnS%67f;kO_vu?jn3$q_dX?ODCQ#OmdANSEcFo^dE9B-JeET!IBM2#V}nuWXg&l+ z+baPle#3Xs4$XTri`L7%d0$DrF9(l4IPZ)Bu|DPGvVny*E^fyY>~q>_kc%70AqBNd zb{8r>ymCa@#!%#U4IGbk5AVkUeyWqah|h<5@L(oPZYE(+n4akI_0!C8;}>*+$-hS! zO?ZX)*HOWfybq~CYAK{u6(*IBuL>~}-Xme2D-FuL^wwZU$uL^|K=MXgR9T^c1Ft-V z^s_5C)XmN8H75;Cp@9BEdGZg(|JKi2_{+DgPADjO?N8W8Q9s9wa&lu^<}730#@DY4 z^r!&3p--6m*0maOV&Hu&Fkk3FF=$;Kd8yUr_=xqT27`(i;57EC(u9pT-45z~_s`J# zblmGhrY6b1?j6m5XiMl2lim^9e8foh;>6?2>Gig`$fbR}pk->tHQkw(dj`z0Lla-t zz9)=Fi-D`M?!7oJEk>i-o^SqCrWoOG#ySM?H>-?|Q=G72W-tC*{vRSF#9lm8;oD8?S8+qHx$ zQE^Q>DiPx$-DeIhE)8`X<{_-r7==Is5iCbAN1)4<7rOl2QqDii0#BUZZSxU( z+b2w;KH?u@Wp0mpy!jjRI+nP9#WZewqZE~lxiokhgDqYhU6}pKVACqFjjoiT!IN)= zjeN>zIklNM9ta=T`iiApi|!tAB!t?yo^K3WPd~nBWS^>$rRY%vO4N$d>wMh8%Ij(^ zzS#Xb@m}|BM?(5mi}dymyqDguj?539t~YrgP}c|-t*ZhZ8Y+#MzD}ar-TA&VP7ld-dLx*v#gXpJ( zcGM5pR_$NC8EyLyas<6PV<;CA-kBv=yZkK(Iz(?CO)i296Qjt!dktgK36-+h~Q7grO{w7^5&T>+nn<1shl2f^sPXB zvp{N|+A8;-jW!#{7$%}@otY+F4@fUKOy=cse+`~pxBK_wVse8bpHwl_0JTG2CF zdh3}-UWUW&!z=!gKgO+6+rJEywJGQc{ir3!4W77Ic&uv>63k5E1P7EPaLPcLMmpgk zc|O+`dC^qulKO4lv>HBQ)VJ<2Cv6%Qpe!sW7*mtBm?=#Aq$A6NOhb544O zC};aPRs4O+nvzVg;YNv+amZyAk;_D&4dn?QaJu@z4!u0>9VtCQ!(|I47G8m*EA2T1 zGmNIYP5sYS8_r+zalo#nwo*w|{f} z=(+Rm-Ra}x6Fr&@?PR=0t>y4zDCM}Dwy8I>ua|c~sO0TD4)_=)zSfhHTcu6* z4Ir=gQ4#~4PyU4_>@EgxOm8%Ht>Y;e^=B&^&}p@`#E4k@o<_j*`dK}M;rOk6yOzH> zc}G@}CywDdEq-ORLrXp4dc!KEWqLoGa;VKdz%wcX}h+ex}y!&TH=%s z6-wSeaocI;8FZsiPI^mcIqWl>SeigkKnxR3Kc?%XfviO%aJhzZ-MXu?9roINF@|?t z;RWrSk}%yuU@3W5!i`!R923a;o(0H0Y%PW}bIs}f<9m2oXm9=&BNch_IM3|8LV2Lb zF6++@T{0_!HbaK`;_m4O-z50;H{@rS-`0(-_tm$c)q7jFd1)8*Xl>qb^RBSy=w?}6 z+12)^YXWOs$GSsvsGL4*?b#R; zP)SRsZPRI8@gFT)(=#l#^MNts#TY)9g_?<*(WYaB@t}0GQ34}yt^5W$gpbGtq@NA7 zX1lzjPrzdD--_1hUo@EczNJC$Fwkb`|G2fw<%t&$TI`eI*6Yq9f4UaGK!<_06;v=V zseXU-b$@xLD_7sOJ}69HgeH!AWO&idT9c;bCE(^4!NvN<@zKZoGU6IzH zWv)%u*GjK*W5fXR*4I)L^LT#?XvyLZfBoV_3BRz#h}9pL$f>{L7IIYr?OWa=_xCM2 z2dlW>tno*t+*?oYTXxez#49rnv?ryqVD$lvNKXL3byOR%_@Ai=1hiLu{U@HVf>*)F zNY=5ogHMfUa6<4E8(rX(`c0#{_8_Krp&sHlp}0aDB(+pNMA=y%`wn>1){f@c8IVpdE&bGr*9pKtXJL3OX3%gNtwJ zV_4@lhZ)B37H2u4ZWhY#DzMp1qq-`AGH5n43P!E84M5=n!w z8ff3<1k?)~Iuc5r;kR9CHQlJcdEUfxe1pCfsLwofyTzg~+7E?!OGOI2{94KQd<^=P z+QxOt+x7B}A>YzmXm5?@j5?j2FRWAinY@czx#hein5XNaJ6J;3=9sd2RMQC;>vGP- zkrPb$_NjhSEu_`P?AB(VavWiDQm6UZh)aB187FOP`Yc119f4CDyuyY_%5Gx$sS@DK z?EU+}sY%bA3N7!U%rRK`Gi8|uY?RfdEjzWk-kkRyki+swCXKVdaX;VHwLk)vbX=&y z2jveJ`KwEteXi$JP@_Cx;FRym9VFnIsZ@6HE{m7o6T~2p@)bvWhqQ;iaf>CmUMS}a zkdoq;5HMxhfJ%5>#4~D}b|}Q2UwcOJcz2f@5LYSdoQaQ*rI%*DLP~))09!Fbz2A!# z?wGiQ|5OVz`}e*dR)!-Syg(UCLJ~e*^maU4pX&wgJM*0fX^ajdB3k77zs{G}D?-{q z-^|$qc;>BNbF}V<<0tTeDuHk6%|?9(*C)zCO71avFeHv>1`qofLcp@66jV~bbX{8p zq~86x2gLjOHfEZ$pUb)FY74={MfEW;;~$qtt|$g=m*{b+U^R^QMw<9Pv^a5F1(-Z> zqvur%y*o@?E)4GiZZS+X{@ie;l?*+))auLuMCLxoi5_+Sr4p%XwEwU9W?Pval3OH( zbGda6(M4n5Ul$ut)R);&!5_bOxFv8A+_O9VCbn(H`)5`HzHi#uaQsV;k6wp%)U*4S zX6+_kvcF|b8@ReOfRa>W{S~g9pBN;QlP4EJ;8O~`+a%2RZ`FF$&bOc{ODhV!Ll^-5mUvcv$r0krf3l24j zblJK!rN@1p3~pR6o;c1s9w-H?RsYtAfU)@4cL^azSZRiNw?lIW-d=VxBQzH2kgWMB zwyCBRHTHaiKtq;YdzwJ)T-nkoQk&n^p`Wpgrl5f2#_mr)p~XU~!rC){6Dic~QamGm zlj}`3gZ&gO%KzZjk+>J~Ynj-f%rAQ)x&i*DS@c8tiq7C(;n=5-3}4;WH{=lQAo_wP z(7IKI(q+G2H0}6P`)JXUV53_X>HSgZ-o?HbUW>u^?-kqZ4Bm%LvP~>lQJ<%v#*vk{ z?D|LpvG*16_xZ)@t=>R^dt!68PmVEkQZ++4H}alDub%qT?MpTeDYEeF`Yzm=`3EAY z;z>~(Ey===uhw+q;0NVhTrYbrel{(wuH*e~vg1H_^LDNOWl~+x4>Y7GeH- zO3fY^z@5NCIx{MUSd=mq>JGYVma{b@x1(|4CUl$+5gl!2GibZfOXLhsgY}}MoJi*IMypsdWaZli@1!uMGc#M{%SjwfzGm22V``fnE3($S z0EI_UecN&eUCURgy?@}wV!$C00_xT)c3D1&-w-plp%S86d9I$RshDq)hk$c=g=7&pmNRg()aD1m27DEiNhyE+!hWs zno?Qzl%VAXa3%u7Z+FX;41)u*M$NUrY-fqPfIF<$DytAE-<43C0(%^s(DAh|hcYeK zXikeRE6{5xkwMa`KLvNMeO_GlaQUJLG~8^%?RIe#CVo+Q{}U_aTR-PC9Np||+5t)v z9MDwyICBf5@@)b|B|Iqe!b<`Fa}g3e61_7Ip4DjtL%LUWWJoeZvF+HNk*Az=*5=WT{HC_8NA&^f7cMMXH@P$)4@3}s(2V-`W zgp-`#O99iFD!^?SZAL|*E^VJqz`%OB z8A8}Yp@=kS614$-$cM^AVFVU|;Gu(r@2k_xTB?UZ#bai|ABqB*s{ZhiX<5quy*F-a zvL@VZkqt;tKqxCBh^8ay&(udRC2=Iuas6A)qy5xR)1O8aVhW$!PXBt1SL|gi=s&4B zGuo>xv%*A20=|qzS5k#Jolr1Dq#eQ~MEOCwJ^pKU%pdJEQC`5~SF__tQc^xH=se#i z68c+8r59dfF>;#kAog0ae~;tre(3ye6a#QruSwi$70fDAo0JdV@o;Hu8~-tXJ0o$l zNNGU8T#XlaMZQZXcqEhK;?BAcoxSAU`@S4?ZRZxf(q4fABJ&QiafIZ7m#ar@4nkN7 zbWNMjs9d^TC^C^7Ae#NBWEd3$cH6v>MIu3|93dx1*9Pc`li6J;`1hDYui}9z{-c1u z;1Fk>?6lx1;YW5tZCz1&8Hv;FDsK4iT{Q`M>66e8F+?$Jo>nQCX^YYm3XL*n3$ zTE33swO^WjnyF<;xS9rR%d|@dmM5j^=qP}h0W}9jjP<3M-eiqq9sP!VyoDtTgXN*LmLw~g;wna4p>DQp2)KIU+|*^sJ!e1F z{&L-ax}udU^dwf^Yx)7NOW!)*L8B6jlb-Baj6=sNEZ{gB2KNEAM-cwIhrSWRk zuJ@wn{o{WwAr6iN%Ex4U)BfmgFeby9Bb^ikMUXLpcE9+GAE9znJSVxFd$mVO;N$=1 zI=6W@o^B~xKziek{DVUIBTkLoHzNd55BRAK36O@!pw*s%QdItnulo!|LP}P#cCCW_ z^J6R`Vby0}rX!J^^<2P4_zcCPBq3wrx2?#QSi!-f5I8!Pwm)^DD6d7=&G^z;9m=h5 z(uDhI+7u!S=$6Oj?p$dUpQjS!-*6W(O`(Xk6FTF5ygi#cG>HTwedHRyg#V@sG=$SG ztEOHid+Id*jxjBvsw#Sc0wr+Ay*%p}NcBogS#)h09XiTs{-;?5o=KzEKEKSfXZ$?~ zvnq?8j#%q)4E|oqmtO70HRV!NwX+I%^pBzTpvD9fE+$ihWkNU(c|WL#y@ITzmqX)u zt>@NHGXVaEU>h#r<~F5tcH_aRt>=-^Z`VrNP={!QnMb#P7l#U+A(5oyRZx#C(x$f>jLiZ-A2>`#;A&|G@%F z6z>psByO{(ZS-lT75My{>Is3w6Uj33n_l@oTj4i7#qRj2^4g@TLMG=1P~6#lL2gy{ zyQzFcHqhapvyPuR>03P`Lzs23 z13w5$Ptga(CvmY=+tey~6u@nEyrFWArZ!N)hsPwq!PEFIm#)@eubwx?pv#Up&HFk2 zLMKHQPE8=ZpoMmaqN}`ObYSrZ!wc$O)DbpfD}7-PFY-0W#?MzH^?o5d`9SEwd|icN zui=oW(me4mXkoJi%kdOP>~P~NouH(bv8V|yFSTvW<0+K0_hq_2*@VHJ&r}6m;;heA zn_^Pd(bNX9Bs=}0e#GA+*x08~nUp5-#T?Iz>En+_f^Id1w#BH?vmqU=4!ZFP`puTE zw&ckE7;-X0Uc-bmb<&a)-Zp%!>Qd0}sW?qXo#Ng^F*{GqLlNbSc3;@_#`@3ge%bhU z@N<#n=LW=PBxU~~y_DJH4TcHvEbts&GAt%t44|XdWmRCpyv=+1bR(2~ijf>qiQF-> zQl^+^a04rIF~g6>>kE8(522*~(bcA;;33U3-sKU#+Mqpg{9|&~c4_Z|3$+{-1p!g9 zor&I{HXGTI&`t(9$nOb+>`?RG&HaK&+PnT1VL;6LO8f@}gu&|ZQ@Jjs02Fkn6r6TZ zwXS9Ylb$Le`*c6K2;|@x5#P;(zHnU+Lh7!o#K<;W7}BYv?keFKA6tCCRm5XEuk%K% z&y;QIY|7`l#pEGIO;+IPKy!VF?|Y=;llN%rUxCB;`ev?rvh>(}%xfH-VzY9;@;5oq z%(a2-a!baroH-JTh!*o+BmH{#C&~XV@P*>C6TuA_3L(-QY5kjjHl2Xa@v#CEk@wy( zx=2^W$MX@nA>eXUg_U!y=xHEQvaGAEjdR>#)DU##e%<@3c37_XO5!t-3*J=BrF0F1 z^w7s#^EdA*%auOR>lZ|-m@#M`tu7Ue;UJr(ksRoLy9cbp=0Ut5%icAwfq_qTYN4)d z44qBGPxn%vgd&oBj?Y2$kU3& z7h+U9gL5D);-37^X_FQx8&2T&C?U*L1^Zsjn z=_()Vl{u#Up+i-DHYp^Zk4k&aVR=d2owQBGm9KsR;_6QsG}e3&4&K1izo?d_S-H4z z*$-`H5P)1iUXI#X@$PmqIsNWTcg|=D%!1Qm43npH{jPnyN}S!d8T&BvaO-0B7sUS- zp3kqk0`p$Zy*b(Cf>(#r3e?MQ6LM8wMOR>F`t^=xd1?90@&H3d2E{6*9$F(<-!E9L?(>ivTx%N7~!PWxpsB>4Xw~6Z;x-|eS05j_pz@_6XL0JW1<20tP0bd3+YaYs2=M82l zV;V&1^A|!O%r&iTXQl&ANLfR%Qk&*vRq=n4=?-;spG=9P&P>)SS~hb3&#mjRhD5@^ znP+867f5Gbsu|!GDf6{4#7VPhOxEW56|3pW-1nWCj+p7&Ygzp7s8s5T%zy@*jfR-N z!kSYKOagE^GtP4?-!!6gdM{y+4Ie1@6?rf9okrL^=4O;&YT}$UcBbO zp0$Rtt}}Ccux?AhjQz32{~E_+C>uq~VjUL#droH4nfb~H#JrzRWoobWxj$fJnSuNe zwaILbl%X6s%Oe%C$)me6<@|3bV?V8pb-%DHv)*%j!N~wO$g{TD!Q|KPWhNb*#^ksK zvk+aG)LW5CKn603|MS0bpa>X4_AH~mjAsbI<*2-y0Vw?EoZ95E>A=e@cZJ(IJlB{x zV%FD~0b&>H%0$gQjhcIJQ8MeKY0O={B7@n%+CBH&HU_gbaQ4WNOsX+^(0F7&Guvfk z7~@&s6lMiv9H*wo&i$YN^+U{SAVWSk1~xwMXqdTc%e3bqIc{H9okvb-KF478^p+WD zZ>@*68V2)Hsmx<*%>3L5 z3CLp2^`9;Zir$MgJTl|IluTIjiA}b=a9HPc!|2q2aPK za|~o_;LO9!Strw$6ZZ~Zdy9B2fHUhc^<{=B9bb9Wtd5v%ol+{(9hsVsIUI|^3Mi#0 z`uAgIrqh$fsFYXo!<5$oZW;DQrq;OshxnYMLFS}QNZt0S%nHUr*H&kC)8#EQ7VEG^ z+j<=jW=dri%{eldb!VnCbag6|=)3{#dBe;@U7^3(%N?AJYUax!`zl#H{Je6r{E4)0bLj-s1*p3m~nFlvxIyt+}pqR|936p{z+=`Z&NW ze@SwEnc)oC^*`279$wCx3;x}KX(LEv%M3qva(8Aq%s{bW33}**5xfT zeEz2OkaniXn2xnBgR%u+cK?`E=02q|U;p`4ZL5u~tHOT+S?t9n<$TN>6?5Ugo&J4( zR5r#s0x!c?S-j@!IgM!<&fG0E9Fd}whaZ%NGX#WrT?J=8M(djaN;P$2jUC6W_Dqp2 ztPRthM8*G7Q}lnG+HN`#sI3Js%TRW@bmj^uL;EA(EEK8C&Nq>@nv==uxw=HnvdlFO zMpaB?P&1er&dQUcT&TMX2J@gG$RU&=dzcYHbKM8Br%)zh`&!f@Aj78ZGVJ<~?ye5ZHXmOoVs@JVaCdr8Tc%CxWg=#KG>n*a zO-CVdh8qBEF6+)rLz;nXXv%LdSj#}xx%y}Mejg7lGwflO_T+cV*7Z29(juxeYryPO zO#rND63~tZIcWywtefq|ZhU@$3`MM+e811H05gV`A7briWDZiC)R+NhP9-2$XOme+%g`&RN@KFta3**ECg|0sF)c%zsgN~f zvV=T4Z=pPv1?iisyEB`JnYDO+=IOl6j*W(~Z{Y8i%A6V1v@Ha(LYL{rJgiM+;$wzV zWGPe{%m$Pp(wQ#2^$>D^3@ePNCj-o4AJ<)H=BOL#QiEB@{%WpowX-;76!omk+U@@u z3jgP?ZI9GV7qi7!A30kCWjgM`EVQ)|vuZA{yE1d(|ESJP%rYFs6f%sB%D^~33~Y_a zjlF@(_jV%(JSTGmXHY5v$VO=ehbW9rrCerpiuAx$e<(5-3p zQL?4teQhSoxh87nYwW-2o4)mvcsS+-IJ?2x5-{^MN4i=WzPz4LOW+JmM9BhYHan9Yo5LRG|U==@(n8LJIuO|d{(XZC0?>-A*00JP)5thskx z%Cmpnp#wqdW<Zy%!E zl^J`WEaV~Pd=Yfxk)vg?ckzD(XLnZ!X7l$P4`eqFvp$_^&}wx?0ApPXWT=UhAsrjc z$ey|EDMJ}+W(<^{A1b*D4dE=MI!Rl$Yw!GT5Nm*}c=I-uiK+*tqGiC@r~$y187{=_ z4Q5XdX6r#~HK-kqhdICY*0s4phw}&^^S*(ywgDieGOHPNC>Q@zZ11!JU?xkQ61JS) zWS@_7)GU-e6oJ8PFk40Iv%&1(3n5^p=-4%aS*LB{+{Jb4#ylW{-FhfPyA@Ezxf;f_ z?;~bav_3z3_%}_oj6JeNhQHLoFQZxDgD9D6%zTgc!x}T4M*_3P%gj+T+8#Wz8QR;?^&sdy0VWxLUyZD>*s5(@IqT}nK1;x`H0yV(7x$g zzx9*&H>f%f#J5!hpvC!T9%Hf3gUmB{#W5*Mk4y2`H(~8^;?s0JNM$X_> znZ1H%#skc?XKjLEZ7S3I_D$0VFqD;}nMR$Nu~tKc{q5E1k=y{#gV>3>Go|vnfyu|U z*27yLDVwcNyJ-T%nsaMYmeyfT+h}F4S($d-t_BH@=G6g9SsuZ}bHcS|agSll-+bd9 zk7weU1F*RPAg3`A0GcE)Ytxxm9VwfrPxCqHHri=WPd3(J0>t)SuPlw(Kv@rDz218J zt)E*(>O)RpCZ_Q4@>mHD znEBz@nLJWc#@^}7>~)x}Fo=}Vm6=lv_?Mx|+}a8Vn<@Ucd2R=0=!l->cdy%oaxF0BEuy8Kgjq};-%#k-D zb53oxaHbLp(ze4?=6H4{@RIgdA2G8GP(F7{UrJo>BV?D=wpb06DP5_3qu1Yh{pac5 zBF~>;`VtMM54nNJ(K6(Dnf1`}##q*HR@RsK#*PM^+VrS`3}m*>K$=YzDvf46qA8Ty z@kyiX?*(7?GhlYY2?3M$7^GSNn~TWleOMdy>CeYS(hjGJRMOTp{a4 zG0KAf)+QsJt6@y5uOpM6KUgNpQN0;dYP$^Oe?O{kuenWsLBwobYEx^cZQoq4)Bv4d z*V=ioAK%{$P1k-N&iegI9oB-`Jh1utyw}-O%~}-|n;2Z~^G;>v0(qq`Ss&DKxyH-@ z1z6=s8P60yL=o4y*Vl8plt@{uA!cQcIx`C>i?snWBry9x!=%PT^ zj$0bmhc()x^8wn%`ICUzp7l5&Q}O@6n#a$d((OM~eKE|>jj97Pb4}y>T1L)Bti@&o zUnK>a2>oIBpmFTU>s1qgU3S^KGn1%UHCWiAnfCXJl3k`5pilu(t42ZbUZd0_*L1(H zSsloKN1oZjDT?bLu3BcEzZjIBvwZk_V`2+V*or!ZObC?--1o{t&I`wU+c z`}@J^6hz$TxtgO0n&Hqz!c`N1nj1da8naN^??2$$LQ@0L=Nk!n@H;ht?TXj#YSr~+ zJ)m7)r%GRj`bZgR&H0Gg+i(8dJU2VmJR4K{Jhc4X)pACU=ZwM3b!IRRY}9vV_Fb7) zNpt#vKv`>+M97-jH>*yC-scrf zcXH}|eEtJxr-9A|XslZTGS*e5vW7CiOhdj6XQ2m1t|5DvJugzmzOu>S9v+$*;&^Sm zCePsvc~)=dqsZ^Wa|a2`8Yz|eLaB?Su`YPe3s`pyYsGx+FacuwD@tvy@GZOVv{$t3 zNIiKsmHBf$7n6*dnL&Y`S6%c!@G;B$;$RcUeIq~<_(Bzou^PO}aGdXpRpj_U_8Ic@ zcISItV-~BSteRg3ki~kqW;k2W@wv74vY*$!KVJY^18LU$eM)am=*;7s&^DX0JbJ2t zjt|FavwTg*C`K~nI*(Y99*$)JE|DstWytSIa@*%9TsIn3!1+-FK-HOvs)6R&I4;Xz#(rLXz1g`M1hy$q zL-T%XK0le#)T-2G4PQQ|<3~j+}W<<>R0_8Mj z@qqMxX52K>Ck3N-M-ZKO92|$XLN9P)krYrP_$v!+v?a{yMu++38* z=eqk(p@ZSf`z10^%|_4~2xD(WSLSzqVtzonw!{8G0beMkG0PMtt3k^khPPRUHpF}I z;2rsyF`~&|2;CK))3&jnNM+7P%x;>8x28#9cbNG(j)KMO*`rSTtA?`mY0Et;%I8yU z+40dbYRqzk-f(7?$dPfwSsc4=bytiI(>ovTEMGeY#*9{vwhoriB?6+*aK#K z8RVH`6|Vnz6lB?m=msOpO#n#8;wq_0W$HMsOgIob$nWr_2t$?UD{=2h-%WB{rNs!+Cf_jZfG9R0I`08pC?&^%;9iw zIp=h*)ebRt9hp|7AL8@M#qvw#lxBW7s@}|NMsCjIp)=roHb88Lk@j_cgGmeX9&y ztn76@>Ap|{V|(par7?+^Ia(I00nI+C9Q#XJ2u5Lb=C7NH$=>|rd-FYLW^g$g)|?sA zoW}ItGweJ8!0C))8&=nsA)pFKi>Q~q%|h`E$_BLD>xLta{WEjD zn;VY?2G_40W0!HKJv#La%^Q#j$__ri#mc!}`wp1U_DB%hn)gBTP}WHI3A!e=M+<-q z0cM6W+hin_UD>$?9@$kQ3*PZ@V>iaNAzw}9JzaB_*8TJ@_ z340EZ5lN#Q;z9kGJ!W#$3U9Kh=4i~IgM zmDxd7G9JEiF;eKFYlXfQLRSpWscD}m+(05QQ>^V%{x#`zDvwgJ3t+Osyg5-4i~ zm?=`9{&for{tafXzj8+uu)~TRG0V?^s-CQ} z%K5WvNUgC<8EVa@1=q74{3pbl-~tXIp!1^EwA(-cM@J zej${hx9{HmIl0LwH|$uhEAwnj_BraFpD~i7U?rG2g4TJOHEGOr+}D|nQlRZH^Q=+S zj6bOAK9Ike17>5X&J5*q^I$eL4E?1AxJ~QPI$PK0^@G|>y3^-<|0*!ExnmsLVV`ti zhB1G0&DZSaPniTj#&vs_xpcxmi=RQ1jMeiqT}oj)kQHF2E=>Rpod@)n@ReIx%H$I^PGuL-`FUReXhK~Mm-mUGqOA`wXIyOV;Su?CNqd8&Jcx3CIqwO-r z%>aG6j`jLsP4e$hskvTvR<^o(sh~{fCO{0WN?me(6_DjwnXW5Cxkf$91^*iT7IJMF zYsfxkUfH8QJDK*~jU9ABgT7uKdw!;8W;$ZVs?;WO{YR{?u^P%c%`^k7H>90z9{51R z-nQU%>(iUF*Deoc>+fCHmFb5gaHbT(sIClfdgkz78B_yVJ{Nn>%w#TRx_=m*%W~8# zjx%UFVh@-tl1yiTwR$he(Ydp!fhyfMp%Iwwnxg)@mmIWwz198NnljeuE=csR~0vIbYPl=btrD7`n_l-kW|0-8%I?NUsPH8$<>yC)gc!c<48q7wu zW>YYB7{S?sNde2f(0tEL3jr%a#EtmmcGNG-ZMe3q$3uFN7U_X{FGy!F#GV_1`i@J1wA#5Y`t}jEd4C`~6Buh@xxw7VL2xU5M{mKMo<+aXiHr5FOGnslP=;2U((2qq7w1c<*I$4AhuYN9|85Ovj#@c& zDX4PvEQ6Y%%~AOWX0xn}h2uE(7N6hIGfyCSd$;@7f~&PD&3vv_14*k>loJuL7RD3> z(=}-bT6g{V7Zu8m*Zo=v%+^QBq&L6k%^&0P0)LsZKWZ+S${pQ;vEktI3}0G9{@+wB z|IjW28M+Gi^6MSmdu0S>Zb5ZA({t>U7j{bFL9NHOzyDtbv0gHrMXSK8Kd<8(j2&Nl zcIrAb-*?k)fA|I$`~xsfCFC{BmKfgiJgI!mvPLcM+@GI08OYdE{9l(+)Dg4L|GT^U z-D@LehB4L-dKN&FG_E_F053rmnuu;yuXzd5mkpS)O1lez8JeyuW1ZBOeeIWhoXVL( z!#Y-gEHo_0Bi(lITYBL&Dz^6%iU6roW1eJTc0om zWYxax($x8BJ(*2&>YUeU@%ons(iW(%HM{A1o!h?{z(q zGVQ1IWL~@d?q6jfqx;)m2rGtg+S1cODj?&W*rqn!7ob%D7pjMtTLQ6e{uAf*0rWw~ z!^}mb4@NbyIt+<26;p`I|2cQt{ogtY%vev}6i{F5?>FGxqH5dZG=hb?0owidMa%xv zfBH`!TNT@qMhK142o&az9*o&4BZC+BRP|;BobmeM1OQe?%hVzMK7X^^mj98r-~Ki0 zB4&=3p}oa@^Xj8t))F{d30ikABcyeavHSBt*}geO~1ycliX!H4-dTp#XI9smo-S+?MQ$O`nKh{82r7zjL>l*tCgP8%%HD&Jd=GYS4 zAtG%2jA6H?pE-Ws*xM}N>?yQ-!@`ti+8fyBI~wO-r{e{hg($z~W_e-xn&8ZPbhvO` z8Jdrj{jY#B0x~wTMt=T~g)@NJvy5{*U+nnrXH9i(6yWmS%rpWsOE2sT{k``G&udk5 zXOcy(Gs~740GhppzU<4s_T#>HxBu1upR+T_O&A8E=&ow%0gw>O9)+9qMjRo{&DgL& z0vzLrUGr1FXgZx*EtQ`B%%8DM5sK0#!KIAd7k4SKh~x3z<=U6>_#u>Msq&BlVa>ql!jO;TUa`N!*% zCrwr9gCxj@p-)w*Gneg0nO88D^=%)y^&pqhEwMh^$|v%|STTN$@r6!4j>psPx6Oj3 z{zNR=pd9QaOKSFJeZ|q&Vo+CHp-%rY)+68lCrLAA9q~-Bt0AsZ^2izD`v^>CrXe_bUM`+Cz z<&V7v>am7v8kDEWx6q>)#UmFsXMX%tl-DtM^c2>rIRrVq-h*6nm&gBeE4TgWa@x6v zj6{6gG3xFqgXZ^^q0z&P{wkr(`T5JFR30i11w8u5eceM1 zq8jsot*zJVSAma$_o8)JgLPu!IX>CD6P3wQB?!PU`}@D}-LnZkBHEeDHh)t<;!*3k zmBtCvR99WIO{0x#oA_+q(=|TJZe1^IYjbbI$T`-?)=$zQ?6fM zKmT9Y@A_{%oa>nKE;?te8r^y=QX1eZ+L*1SN)MDh&`kRgvBvA2ZaMYelA5#wZR;aJ zJJZZemf0h4jiWu{6`HcS`YW(lEeEcu3_W#~DM)&&OJvZDr zyvcr>-_Dea&+qQ}^BbMJF3GL8Mu^)OkVHT3t)Rqg_>97p$cJyR!TPmS4Lwv>cD zY|toZCuHN2^AsCZfb?v$TwkvDY2GaXDM8E*EE6Pahsut4{)_h`nf?qHd|FrqRR+w7 z1OCzj0KSD=7RjdhXI!R}ZUytGpJlbq0*3A8$H;s$?bQaY-p`K zwhrL?Zr{rOnC{6DgChYFu^ca+Po{<}0gtblmk^IXD&$Z2QhaT;;9 znRoVflM3)=9_Oz8}7X~ zu_pbkujVAuS$P@ht?~z7J=(&7pLW{5s zzq>Z)j;Rzk0zB4`(?It(HEAh1tIba0bFz8?Ge3Um+Ho7GUbx`q03QTz4iG`txb~5E z;0c}$EhO62WgF#8->}r2sXaTg9AWo7 zN%qp5w*LDC$Ny*i(-z7i-^RU&vF$Yc;!NNX#0zCd;LANv@jIQEBq?(esIkA|l4Y9| zX8bs4e{rQZZ+f5n|7Lzog%{y_ITOP-RfJx0E_1~oxZP`2x3qiFxqq%7odZahGjC>V zN6TeSX9p)2mYp>_wHl2z!}VEl0Omlsu%_Kp^J2MPgHx@IdA>9`&96p?^s|ixAN*UR zU>(cMxu!>3O<;s@|2b`Hgh}FU1H=4(S&nS|wt^rt*Blp+GL|p_M`y0iR$X2^LiTSd z#{J)H$ug|q$+zc=cj;1~m81#U?$lbF0z5!hZJBnjC$_QwkCQ<~vZntv{_pwkH~v54 zzm@I8FuxO))%48g|HYX)NkCek&dJDyuQ72rv&dNc{pY&TkSNWPWHPeFk<6mpRP01cGE_Ny==-NZq8iuoU+)dS+T=q&8|J$631@b zlITwt21(Bke~Fk)wOwO} zs`=7IByN?Qja?LViPN1^=U!YhR{q`$_FScH9?*YcxFBk$ZqLa4tpjv@tS{Vhr5GkC z0T{0`2pl#27cq(F*>04j)=3wcON2g~r>*dh5HV-2p7j3>hcwR3cap5-CW1!Dt}M5Fd1X{CUcz>wL9!c@wAah_ zZ`ymsNg*WM{`B?7|7ZN$9%`;;eNEf^jR$AyJ4HcJ`|J4)Z>v_|QjQfBD<@8p=HyRK zF*Rm9%TYR4s?S>UnMuE%o8s=xbWheyc9AkW zA+uS-^4$rllD+l8cHo_*gIZFa~Wy>Qo+LCJ?pK;|~cYv~GzY?^C zIey3*-iS%r*VMX+OR#%yWlc z+uFT=IYHA7B_N(0a7yYVZ0R3>@l*{vz#Ty3XWV=i1bojKn;!z}IGzO@>oMOu(ci!z z%lFi9_BtuVGKlwi68W^tg#;$*#*uS;CltgIUE-4$QYZrN67A(=q-waKe zps4(`j?6IqwybK|yVibd?mb3C+q|`tQ^MBlVb7%>IQ~yQZUVO_^(vk+-qfC+J(PYm2Pb~e+$bQJ`k}n{1=BuAjOznca5n5c!28;NAAoN# z=e-(dx&o=;=RT#hOG{gj0#GKnz3sOw?~d~$RzU9AKU$wU@q?^QlR!Ag*e`nrg&vlTOa_zP%%Qb@QqrFe+Zrnn01X$}|0bcO8 zzUFJ)LnioXMDF|d?7@tVgSPwW1VF4JFiOf2C>_H|%5Fy{Bx@0|Im1=lab?=4Ez7H* zJosAEipK=;p67ws7&-qU*6ec_3(gSsSH}Ovf5!jcXZ*K1G{R&arfIvq%yq0sw)J~b z@Fr&Td6z3axxboAIQHBSxQ@w5k!z@hZ_Af*l?VCq8MnVL!|NIR`7_EYP{KGXaWh`f z6dcoittkf>3XIhb1TC7t__W87h@F4R-gxk`H}OL}f!ekGb}WMFn73gkz7K#r)!Rxl zcwVzET|sG+VavDc?z=u)EdcX2aF)!0_Lg5alH528&N3=VekZId_B51Z9*WOo| z{(Md%CRt0rn1uXvZXu&JhnS2-o&&2TZN-@(}lwl=c%^NatonYyec;)|FKAm+&CDVzoDdcfJBG$!(sT-g0Z}_Dhn{2^6;Fo1pzI=OJNm`G zU~9^X)Y)(ur#@w#)AYG!y6&T=8AT16z$iI$P(rJAT=woYPbdzB$-&R05U$w|Lc&ob36>ty!n05)f!I_#fT z0YVDWgrJX*p6^Hk=78>i zZ7|rk`ux_JytE1P`BmNw;CPZ{llx=}ly`n)ov+!Gt(ns2tQ>_+4iKJGyLcFgp5KW% zr|}T!|NpD}_xDpX+k3$e3rRKCknbZ1SBsP@a5t z#FMZ5|2X-Vp#9P1`@F}#yZ3svD%C=vI(7^_5wZ(^)*AocaVQl%H^J}CTfB&}Tj4d% z55~7E_BtAMjBn<{Ri{YI=)~GnvrQ-Xo-O8m`dGpdI?oF#0jL7X326UND3(B+HgsKT z`I9hPuRv%0wZd-(24s6I>r(K29{cLz_oTf%_6KF`->I#zoxTt1b|CecP6K!jpyfz@ zsz)*)5#ak55Ra>$)Q%~KI`OmP$3vuyDW-|?)#ipKZI-oO37gwNt<8=-@4&FOlsgSR z_`Iq`tI4A8clxT8KjByY|F`6yXKneX?1lW_DieG^YVLjZyq}Xj#!kNNNz7j5O0jUq z3DzlZS^YY)zvnmMihF&&S0?9ebd;w7@f$3(!fWKL^*van1H{@{zBWTQlCXo-bKVc! zkKSK}p#+vX6)*u~-A`esPTI??w%R_zD+na!`FvexJh#O4&w%ulFR(jE-8iK#bG6So zwG)Exes}Xd2N2h>6O`pMR>4*!9?Qu;Nf{f9pL{=#+bntR!KyctB^tPncjkua&ow8F z{W~7T!T`wX?pN{V!I*bK=DQp6??4#-JU>PLzw&<~&1J>2(d zb|6DpG^Hua%$C+Gf`Jsujtz4&hVu9f2WtT z+eb6^UPkTwJ5f7L4qY{FKd4!J$DWg$g<8z_MFgh};&0^tNk32izw%$^??K|$JLfyO zCuXP6F#aCK%9Be`PF~c^gFVw+$s$81U;2QpkX}XHEZgzSIL^8(c)v=sZz{8dVa|=t zy_cXZFt<+&Ggz3m$E77(c5ePl-u^5gCxd3rGVTR51YKblNEB?3PvnsPT5Zo&Hy(#} zpnzx3@_26BRc0Z7BkymA`saHHZI$=8%yBTX@5(`6?e5J=%H>omPzr*`pu|bHgtZr4 zt-efLy1=Uyc0)~`L2P}F*J;+hTr3<|2(j@xnK@l$ZkdvQ%Shb*f93xx|CTewq|ClO z-tScZ^0k&&tyqU;joO&x7`tN-ian2HI$l8_Y4ws69(^7QlC7(ll=m z8fo4FHP?T;G%5rW^c59I^@)yH{TxwB5?|U!HTNsT$-- zEb+QNhw1Y9<(%ym;B7Z6Lpw0Gvw!{bFm;M8E&nN_TmHeS|6%$6%D-dBC-TpA)J;D` zUDc2AUgy~9cPB2LocZg&@~6C8#&Zup@!VDz?M0GNruh){oGQr+tgzUk<%XFv?@QV2 zj-5U~9PT2cQ?Kv@2LYs2X7 z|5l?{{}rI~9JB7#2FxkcFF>|d%eFq}%{zf&$-&9|wzSVnv!slcOh=^u8SWzRN52vC z`u}jDU_ZTSj@7qi4K624vAi0F@{4`)m;68JEC2tW@^Am!)@WC@nLf+=y{E3{BiA1% zCACm5cl$ZG5zLLpE3P5=C$5tDw_93%90!(@v$Fd}n0hgQ0oQ6@DnT#en;pS*EoN!kQedW9}_ivQ^#A`NOQ+??%-3h>jtb%F2_%k zu9)SqnBuXdu5dv42cv$V{D0+tnF~*(XnY5Gtm5KE<8^wLr3E|5Ol#13{I3N7aEH@g z-=$nC|M}FOS80(q__M0DhSBEDNEYgFq4R)9kbAJv~o>mt`z#^16{fzjY(*1AtTZ z3K(xzN;b~43G+g`HtQBMe2$fWh<6rC`THHMpxIyf|H}XNcb5EiY|qnuikz=+)b}H4 zzgblDUN>6p_h03#$N!Mk+Sgl6n8!Df|99R_%g5~6Y`M$bH^$CFotS03U(H@mFU-MZ zFRN{G)}W~n?3rc>j34WsRrlcQOy2Ug$NMUHKCj0BA;c8mk2c>9T%$dLl4ZP~%7b=5uCK?bI z@_(Pdf2g{bEcRwggxw(>GwDR&YH98gtWy-?2zaXrm3ttlVWt?f4vynF5Yn2(r-tu- z(3xbmz`_2|q>+Hx?aTM2&~LEc?QPKMc3LI|!(TQDEbZ6L_o!c(L?oSM(T-96eg^rA z#4CtknLAza`3j%dtHD6LS(s!H-YGwE{wx1q`ES3{mj8=)c=b(LzKGWH75DorbETxL z#{VjF%XO6Zn|;D}*?XdPzdL&8H{tSzo!@56CSr4CW`Lt0ItLwvwS;?_M4x+{NS1Xg z_}<@-asgikz6?TH*O{u00uMpY^9@$^*9N)jgKE1V;(K(){gja;+jpxU{OxkL{uvJ9 zGnUUWPx+~sWBPgAkQ3#*S8ng5LqEqwzN$_BwrQe?RBFsDr~LaKkh!C?vN)p|=l7QX zul#F;p=_E6ZA;02VAf;ce|bS6mj)_ z1xOO%BGZ<)ZPCtY>Vq8bI(SCQRA1yX$KWGaLEin|CqXN+A@Q<|vZTDOm6wqqQ(!}^ zob1%~HVN#>px9R1O07jnwQxc*d?IX~|NZ3uEB`JukhF8%XPQ;&3DR~w{?LXUTP*NQ z*$Y{`j+wei+;zyWy%N)8z4rlTi(&3Ef>b<2)+5k)Zg*gJy1p(|W^L0j{LeBfIM=62 zSHY0^9=e^KC*VT^jsMY=h)pq}-N&%S(ppxg=d&ml`pNx|5O6nB5SlE)zWC=9-ZIEz`TcCV%Z? zcAu8RT&o5H%&3ogO?yN12ESzIZMJB(PhF*PQ1JZtt!vJX3s4a_fDHjxAUWqfPHhMf zIrfd$R6MNV+mwV;q4r)5a1InTcu-%O#MieV_?c{z&oB8eQzO^@k~zP@r2&TbZ%m-_ zF?}zW0b|YkJoPhQ*BRJoUlj(4a}F@pQyAsIEp`q0|Lboj|6lok**34K{`gd;9DBUC z{h@5!^yOL^$qpjdM;`n8CmlECEo_5bwT{su4t`n@9dL}YKwJ2C4$I##b|;5tceUgKa?WEwSm zYGVUPZC9^W+TYhv`}U9a?nFm&8wLU>;s5{WU~vu#!{@G!)5&DC0D)Pxtdm9Ykm>E^ z7g?hYOZEw1vZg_`R%Z&M)R-ObP2wSgad3lZQ9%1wTgjAc zFWd1q! zlAVS}HP=H5K@xFkzT@ZEhC;M|0pNn-C57c%o>3y(APUz_v3(c+*y}m?KloqppB}f> zVA~X_1^@gG<=6o-z{h+YW0I9LpZ`hnXgA)nqHNkXH76fxw7#ZO3E{$%w!OZpI`wA3 zZ9T9S^JA#AT(eERc<{BXJVbpxm7iGN6FFOnW){AU}z@@9|O`!4{fUJx$zyS}Y=feeR( z7apM1?>Ojgy@Ubg)!kd95aGPDoCg68B?w{M;q!PmD_na55D%4>+$#&~ywi{ZcBK5g z>M>p}0w)$67V(<9~|%W=fA_3@WhRNk9yXR;P9erKB!KV=6Z$l z1j>AkvR zVPJkqz%SvYSgYmGjlY2%CU6GNINy)G=N3-5=&uB@cz)vV^pK^}mv!sU%t3aPZRXHj;UULGV=(*IxXUzOHa`0_VN-g>I4(69zi}eD>3lO2ee{Cf zo6&&~C`02qVrye)?q zts1*k&3p!EZ#DX$wUwRo$TsL5z~?u%1HvDqrh7Zb+kDmo_itRDe5x@gKZuvLm-4!q z7dm6X);AO`C|?=IL|YlQocNuJmvLc5D>1U{(^ALyk8vLSAN+$)h<~2lW#aj%@E`4= z-jnD5AQJE>{?+c*Ui{c!{s;Nl@^>s!)WI_ll(K?nrXIVr{e?-`|02i;8r?fd0O+0} ztY3VEA?Ag-1m!bU-c9%3SA&kBJ-r>Y)XQ};P#p&H2YK)JzDWyFg|W0(D7%(R{tLz! z`fNO5-Jq$dM_^4*n1R+0KLbC*Qq|f3HiWm_2&_`|sYkdLIA& zB$IwK6L>PHCq<|`Oo~lk+M5lq$W=tpzsdx~+focU@NFfB3G~fVfV@(^anH}dLCz@i zqCGd+cB=@nJ$PSu@prMd$+t^V&223?_rgOk-k1BsQ#r;^K2f$kH~Bli4q!!$vc$jr zbNFYvj)VV$|K2k+AiwF2Yzcbt!uOjIUiQyUp0W->c451$19 ztBnFV&h5j_`A*E_qcV8>UUU~b)T(w{YfR5!PsATp7+-yP&CE}|l~&)e&;@CZ4|w6_ z>K^}0QQ`b#R@SoI32WV^Eb_u=?eUL#J^l~=5B?o49y=D0jM|}ThC^|-CY9&E74Md? z#-QFycgvvVZ?d$l1lD~RNUglvKAtF~Xq?&54A5ODDKZ@MBmCM@5=f}*FW zxaWhuB`B0jOd${+hK1o{dKmw{r($G>^p_%F2AdVx#oJz15-Sul<@b@z$(i@q_>iVQ;UUmt!c^3@ccRsx_< zk}ERr`PF;Ry|x0U|Mr_L?0#>(&rjmt>*A1Qp{QBWb6@@34*n1Re;EEB+UI$PPk+Gq zU-D9~8x)JN(g5JqV4hdx94qhVVIfesXm$V3f36Dk3m0-FSZy8jsXltD-vl!pPmeOx~{UXt5o=`41Nm#;PqdC|AYU7{~vw+qaWA9-|;{N2u`f63o=N0 zfnoqy+g9Daecw6JyzD-AzpRt(_Nh(``qJAes`kF|5Ik*Jf!gskmrJKNlKyr4UtKwp z)b@Q{2mc5E2mj~%{|x@U$GphsG7x~*w%7Jo)@eeIX8gV%0vzM#XQu}LJYM%}M(y{K z?ey){d-OotE$@2|KS+hp|2+PCe6|PP)m#4u{|EmE|L6RF82@PJFBOzF3ac{--~a#s M07*qoM6N<$f*o%c-v9sr diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/extras-c6bd0796750901faa7fd.png b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/extras-c6bd0796750901faa7fd.png deleted file mode 100644 index 934353751547e4884e718d14ddc6c778d9d03802..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24404 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 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/github-45c648158e3e86b560f5.svg b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/github-45c648158e3e86b560f5.svg deleted file mode 100644 index e7ae694e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/github-45c648158e3e86b560f5.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/github-523373a4447a46c189a1.svg b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/github-523373a4447a46c189a1.svg deleted file mode 100644 index 8a7617a8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/github-523373a4447a46c189a1.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/google-a444c8c0f0c0108836d8.svg b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/google-a444c8c0f0c0108836d8.svg deleted file mode 100644 index 4fff614a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/google-a444c8c0f0c0108836d8.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/google-dec2a429bf1d8e83f9ad.svg b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/google-dec2a429bf1d8e83f9ad.svg deleted file mode 100644 index 5794583d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/google-dec2a429bf1d8e83f9ad.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/grow-your-audience-ddf8016fd72419f4e80e.png b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/grow-your-audience-ddf8016fd72419f4e80e.png deleted file mode 100644 index 7d385bfff126d68736370b02a7cc68957e97032f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 257324 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

            Y^-rRoOsCknaiHX)s@>xt3w0*B>X`5CwdM?Z! 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

            D?OFHTCK%Cm#z9&5^FDSLdN}t*yB4 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�L*D2AVXR0dy(3*1qr(E(2QU~W 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 W_L}SCQR#nlF*CL@YB0E;{C@!dBY@%n diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-5e94ec9a207b87fe38d7.svg b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-5e94ec9a207b87fe38d7.svg deleted file mode 100644 index 1289f870..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-5e94ec9a207b87fe38d7.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-9de1caef5eb5c22da5d6.svg b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-9de1caef5eb5c22da5d6.svg deleted file mode 100644 index f8dbeb91..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-9de1caef5eb5c22da5d6.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-ai-d29bf65dcea46074d72f.png b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-ai-d29bf65dcea46074d72f.png deleted file mode 100644 index b77ec6b9a18cb2a3559217ba19643fec5e6c708f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145451 zcmbq)Ra6{7w>1nl_}~tMOVB`Y83-1f;E>=RB)H4qE&+nWpn(u1xFxs+cXu1y-7eqv z_`m#X-TP8|b=Nu7wW_Pm*=MirNHrBXYz%S?1Ox=^5AxC<5fG4}2nZ;iK&00@2mrC~ zug$%hlBUev-SrN9`|j@M=H}wH=kD%me;@vOd3kwuc6NMva(I4qcYFW%{QMFf6B`g1 zl$T#{baKKgPWx(1k5AS9w_|8zyu70Fy%a=UNdXTJ-@)E~d1ces#B^+JmUY;WUa zXXRvb?reME0={&(HgmSxvNKe-(^a(80_*6BtWNXINKa3TkLei5FYo@IoRa#xAg8^y zYN{%EVSefmzIk%Eb9^wrxjVJ6GSD$ymH8)VbfdX$E^`+?T{sgL+Vw4UBB*4nd~m%rBbRr<1F|L81gn+bnHtuw5b8mfiX?41^L)pd;*GdHc z)%=T%rByP?@$UTk=I+Ac>e%Siz`)4L#+*chzNWSwWwGl1*8J++)LxHQoG7qV4ePSf zvfC8DGZ3pcn_$JA$dH3f8@tGxY-z3-#qQ68wj!>qqibay!MX5??C5j_HZcz#gA_ie+Z*j9KKnZ3 z_;%OaLdAe+rLUTVf)=>%2g547(G_Dcb<@$wit%h~X#F~*GO1I|-Cj2_(DkE=#>-0p z7(wRc3z~4qF#>>Z?t`?XrYGWIHm1vB^N9P^vgDs1H|{5gi+3*)7Y7D3IF{Hk3_pdO z3Vv-*B}#wb*Vw>A$KPV2J3oJnf4OUWzVYD4OKdrn&;sK%l_A^H(RpmVEGa{!rJqlp z2<4@>UhHn9UR(SBv;huubZiL`C6NC$TKb=2yFf$$5OomIWs;gbyepEiwT_vQz+q^vPdJxq<#C4YOg zcuwrkyexq@|Eh@l1JV0cs#)HyVr8km;v{8+gy1LD^f{GlO!wy<*W%OBnXU%3Z~;QQ zU+L{IH4&;GfD}`ySR!qPq)f);PBYX`z(f$gD=`%C$=>LC*NAqd8L%f3r(ewU)jR7n)EU;h_^ZIkGz9068b2kRz{R>jfNPyQ;n0E3YQ}>CA-K+ zAp!-V>N}nU+ zvE5(=fD#|2HTbnOrlE&aD#GXTy`N2jU^%U);qF(*(b8hOXD{)Pnxz`H9WON~`BTZ5 z)qwJM8}TWeN_7@H(H20;iDtuX$6~-!*fOuJUI6#r3IfSxc)jE25dLQ(HMaygs}An=xc&nmjg1 za}<72OI^79GL@XkUi~A1nuw)wu}LJo_w9^Z8?yU;a0-9N*8U}s(4_DqU(3o``pTiK zQ2eg67}@m@pK#EyL<*^wsw4+RQ!E8DAuSPHQz1D#7f}7VTT8`EJsO8$6Gkay+|9Q-jcAtH{i{9`J+?#- zmu9wtmt_hcu?MMrPIz#SMk0w(WuPX#jN$J|!7mh(d@sYR(9r0}x_JevjYM9Sgz_qQ zc(3}WppV_Q{EGU&vtR{*l}Z(%$!=FHL>PwelW^>2z8O9-sq$&1Rfqx+E@5OeKL~=n$Y*Z*?3x1p6(UuiNZ;jvXzi-t(wNuyX^HjehasE-eqoiH^ z$>0eKJO%IDv<*(O~ij-&17hq$mi1_~Rp10G-Af3Md^?BpNRIu_t_>3Fs+fvCG9u`1`X z4t_*dz#c~5VsBjd7 zey^>)lb?^dlPs|qaw!w5^21k(8ln~VE(T9O?z(;E2dj)xS*wbC;O9?LgZh)fz{)j3 zxB2uX{54gJu76cD`jcGfE4;+kkjr<^2I8u-8V1PqlP?-HWpmWt(D0?$rrPk-`fmj= z{h5EP!B?u(QRkPZY~f{5(2Ba0ZW~dXvSgwugm^jg{-YPAyV*^g(1ieof^U=tyCs*x z!p{!>IMg@p;i`29?{t0|df(__iS5Nslr50)^3#yjfom8AYlHKSfmDGhM_V{>CJ_NA;7@{^F=B z5^f+@0=c1IFmsdEJ$lI~O1suv#3-s|bO|pa>$9o+#eX_e%l9~P)Jo@!tBu?>kQ5#G z_D#Ck-}NP%P=--IpSw}6^V>IARqr=LJj6zbZxHp> zYHXhKxV6L-PmGFF(-PjUUN6}zv|zXf^ptW~GHi8Bk=TB8!rc-wKe*Zdy?L#B-S5t& zA(kLSDG z{r-u`Ff|YyP&6N;3A2u$72=ymmRoF1$&)%WwQJDCsfUaX(1rs~!fI^KB#vt~upb^X zU#z-TqJ@nR{@G+N|4zSoi7SB|8joW056nHAJ_%fv{ty7!&NX}c)=4;=VgCA2<7WDt zXD^qL)r!^JeVZaIXi%%ryI~huH9-bFJ?CWFWf3?Dl#jfZOv3u8DZ{D>BLO#_ z!R>yjeZQ1irNR^LZD5&d8mLq<9YrU+LRt>(7kEVO{uzB@+hT%GhS&ATWpYp$k*u#4 z`?d9C&YFnjA5Ku@_%j=CZ9*MK<=NvV5?bQdG`yR>$I9TEnyWXX+B9k<5Uvj`Va{%F zturCRC$dqY-a_@!JykKw_FB{DIQ2^EhI9uPnv1rQ#a|xEePKuza1IJYwlOg|I(|iv z_FcLU8fl$^xarUhG-RnGv2|c6>}VU$kncpo6MZ20e&9~#Lg4SA@46b(G?&h6W~^k} z!uIBC*e#1Y3BO-LH!ztk{%rp={+o)zMBbX2J)N(Z=bVsu*|db^aT<7zQy@=!SbE3b z_;*3)!a|lXDTI2+e5L(ycCmp^-AZ{+T94Bo_SGNOQi4k1k<#4&e+(;nWw zFh_?Cbq1|d9^jAKHrm6mb88by{ripJb3w%w4_(3VF_Z726`Gz;p)zW>#XEfu;oWMT5=5XavNVYv?} z7_*-e^ONioxoT}9oiq~p=KiG1(6IUfP%nbZN`+#uIxE-nL;63o_i4L0q^lk~WHmtu z51Hr}V&@ZlUj)6*!^XE(A5)`NVGSh(sYT8E`aeNieT`MAbP7v4Tb9P_lhyrG7s4&F z$JI@_qce#%^a0PAUWC}eqKTILs6#Fb7;K;ECn9Q;x`MbgAF_7oh*q7qBJYY!Ap~@E zTvYuMoIEdy9+m}mRTa}3R)QOEBP|}+>%M9c!Etc%CXCvPpdYv-2&wBasy#=$?=}kf zKNCx=BzXzO;!WS#0MzPhqxsP1K>SGj)aqI$$LpMk(Mmi6?m++HfX42}c+#N&3>N+1 zQbn|&hlBI-613qzBoLG+Ite)bn!;BYP7pJkZlsz|k?fx@)>{p==5)cE^@kyX8uNnK zz;C%eRkf{x=dnlWk1W^tXB1m*9YY)S^e3sSosSwA8ltQ)s$n}S5N!q5h}NlLHE|)c z@IR)^-V0`ZBDzD)Qn#D?%i&~EB5C4I)WWeic`+K*)mFiq$qSwj4~W*#7?{J=BcfWSZ@|!;L-2Tk{BF7LZMs^7HdH(fWw@I>d2GF84 zFabR;owRfcJ2Q|yib>>2`Xn{SQ$;=iHs|~P8m)L64)qVe{9f!$&Lzi?0*yx8s}9|b zlxcKo&nbem;{K(L>qjyoNlwD&1?hxD;)#>k+eR;Bsktmgw81F1N{1xlS+V zYxuLU{1}ox>-8Z1vXlG35n-?%A=AlyUnKaYf)4H5C$5qj z%^&Xy-HK2SYif@t7d&rG#k_z97c&=IcOsS9tD*J6T&hU_;xlgA3QwtRM((tV!9yYG zZ@C5tGG7y9YfphR*)K9G0|vK=KbkasNPm8vBJ=MB<(xDby^)Cc;`@y+mp#*rSug8{ z-`c6~h^3@5?^d~WaO-%e-ip;frEFF~vGOlWqYaP0Y>Va7`*Mfc?yTy7xaHc>wqP~H zp8Jn8zww8bLe)zkgQXfSF2c+EP>0JO(in+$d~15*@g$k;DjC|(nn(psDn3Ksas~cn zVv!n?D^DZj3|=^Aio_o6P;=D%NxB=2x)2wzj0D8Eo5{P%>0x?ey7nfhL1%OVxdCEp z@f9gKQmDkHQX#$0ny`h5 zo=Icv&?+Wfhw0K@GV%{<=rn!9vW0xZ)lySm)QHEVc#ZmqOQjK?(23xTTM_ul9M!07 zs?xP$rDfE!bV!SbrSxev*v8w##=g4fll=|T@JN-q(QHGn3{+C4?}(G1z2?1ydfznu zxHG!2cLqWtt49OSntST|J%km0mjO8J0#m#OK(Ht#U6UAHjwk|DU{Fb4FzXQEB=g)I z7n8Z^+F#!7w*Bx6z^7=xl}FF#;TI=`cO_Lae{JKkXspE!V}88EPVV7*2i6DtA@D+Z z{DLVZ=p?2LVDIan`Y98ma#SYq`?cepUHk`JwA`u4hwlO%ny?buGYgZc{@AE{`pOu4 zHn!oBy(&b75c>#0pu8c^i?^r}JG0%NL*xS9 z88bW4AH^|uj+5xFhL^JO#YdqmcN0c6q%pRMlBQg9bq zXQ1-Ev)3C?JohMt@*4n*P$GA3ZH=l?**_9 zAkL_!N^MM+Xylqw+g)c6#f~XTETF@7A7Z34#*RW*;CSg*$-Z+ppBT)7XpS%0u{7SF z{4b>k$s$PUOQhH@EvC~f7775d3O)xRs}7ZjA*vKWvUA^gJC*uti~anmtOmX&o+k7 z#h2f?!#*DSjP(R@M0)7tmoB2Sv!T5XwRn0f69JIEM9Ri`=#-UCR*(F^Hoi5Z!b8MT zHSn(5#k9D*5~=ic5jjJf8Vd$DObn)Y#`BoH{XW?ad5^u5wN1cqWxAB^^G(E>9I4oN zY(gZ8AdkB>nhL1L$0Ig-6%~nlL*?Li1!dmYh3YVt-&rTY-0rPagkQaZfGR<%c8%M9PiZ1~f4r3d&*b>r91&`kVy+B3IN{39n@Eb}{*_zb z9}mo#rk{<{Fc{hZxoruZvsUtB;!k5W27f=cZ0`1!&tbeTKX2k8yN7P+tSzQ8-?_uM z>_qnvH`;RLP@>A!%-&Y`1nsOv{w{+!8~Hz+GqlmbF$;Jz4#J$~tKRbIqX?^P88|>9 zfR;OrRc!=K%($xcoj6y$@n7}{)N*^w@a;oWyj1s>AO^gYPKPtltr6eHQFvj+_!L36RLfk9*N$^yVs> za-^r{qH~fFmd6K|KU=C_B;O?RToZzoCOS}ck1$=NH>&G(lZkZ&$nnhZSE<%dB)9x(x#bA9vF50867<@Mn=0RgKIyQ@u1#((w_E8R_6qe^~HT8wEvOM`Mfve@EO5 z^sgbI)xCc)s$VwRz4l^P1FNYK*Tac6JsSv#_r7VLR<^YvAI#b`}6GQ!jQS3;acI1}~jQ@8RF_iNGS@YMk)Xb&&`%~(6^Rx?Ggt&o0Bg8DznNWbsc(EJ`;35cl#7U18?}daefof8fhdkLcjV~T=@R(3HN5K zg(#wmC=3H6E8~JO9!h{jmj15^wMyH4k}Tj8R9tfx+h?1L{BqGl()*^@t2`b*AGUxb|HyvFLwayIRO2t_{+ufO;I`bZyafKa`pKj?9fGZ zs4mfdIFj2@l?P@!A0z_FN2psEBqpi+)%F>7MD#kO>9dkdE(Pn=ySL&85E1Xq+0&bc zLCs$@Q@N?qmO68VIFUR3*3!jcIq{|Szf1`F9hAU21_NK&rjYa_Q2l|4o#;XwN z_6#4Kx%yjm7^4Fn39NB>JtGT&-Pnp(jryZf|9lnWuY2UM!g|a8`)v36&iwAs4ldy` z(L-@%~(uN{@KL%YZ0}939}T+Ka+91 zO(7?fvZ=n6+Xb>!fv#!+LzHhdYWgO1*kL`H>kaZ^69j%)EXv$KwQ|H^A$*UAPL(i> zmKsLy1bC5D}3Rat%vV1mz+g$`Mm<1ETf9axS z@Tq_+7C)&&wWou~<@jb5wV+$xlj|C$G4)$V%d5QqG zm{==w-9=#Z1m=n8xB!T-pq|FA`%=aLO_=c>S}o%LH^^LKxZd6S?QCo~T8WcvJevgD zSW^`aU#SUMTE3l1$=_ekn;E5&%xYb}!th9O8a9xb2D<5HWhE62+ZcxyI4(A9mxGid zw*FSYrF3Qnw(;1BDk3F#q` z4Jog3F{851Ew8E|bN31#U;0S#N+Z4krW>ouGpVg-3H)9q(7yuW0uvdQ)#s26&)|Yijs}+ z#rMv4{8SBkmnYw7_GxZ!oZ!hdK$Q3hy_r`NmP^O|-u0MBB7q)XHOe1c-}Up+?k-MY z^yuEq(brD*u0+$1MQWZzLKAjjYUleYo8Gz}&sbQt_?caj?4OQB6;7>)#*>$mw5fLx zSVFflK@sa9(h!flx6LMT+TaTZKcbfkbA^=oX3#e9@;`*Kk$i~|2{OCjeAGXILiT0{?8*%2uU<|fb zE#E=6ltj5$%%TU9!7v)@p3c(6O*X>o-od+Br9Z9Sa-c4tUFZ}0+oz=`zu0FkZhfzylH)GB2)&_as^PX4BjK4?IP$LU zI6{k*kx8Uxu83sG;Mv%=^t3jzZ~82BwXd@vc4uFtv<_R>6I~|64DQULPwW!;(XFF~ zQcc9fe2sKvLPm)rZS)hvHG+lHMrlBu^f0bLz;L8X+^di`ro*JHv(qlr$#{DEDh3ww zGP>f`SeNqI;IZfq=|{$g?G&3xr&&IruB9i2dv9ZABqBOPQ=u0_I}8Kx$(Yp6m>Vc> zMQPW@ElB(4(aW*CynM4ImWy7Ztx`$v$BG#;mdlgbk>5xP6*R~1`a%nLu%>k@aP-t` zX0)YOQRCS@`a1bOX!PGMZJgGq*h^j-i*^4fN^3$a{~%$fx}8U&&*=r#m~xTL&`@4Gpu+ z4hR^8g^EKh>{{}{6@Df>M+u_p<^y4!MsZ;sFXH;`;T=i9DmPNwN%9Q2upa?vxb=?$ zQ&R83xof^%o%o%sN&0Jee)w`=@>9#uUw->en zE7<+->CuVAO(%upl#b)o%jU~(yCN=mmubU2zapv(?c`A%pJ47bW(_S)^R?4~boh@3 z34J25WPRE__Mk&2@c4LrfhNTl3N~3BZwrcM3^y!WvpS>$w6^m`O`_CG=huR6`E(<) zImwOjNZjpyNKebh=OI%kJ#+f_=^^s`6`bH7273b&2 z_4vP+o4Jp*byw%xGpf@9e0);{NP*;kagik*8NdDc`S}eaHWt=p>N}tlR_Mo4 zSK*X@-8E;QIPpez!o$w*eCsQ5R}rVEj)||PW~y;W&eNYkhFYdET8h@@=B|hPbzf#3 zmq^=q_?@U~4rVJ2|9BtS!^tZuRvMkm?CeZkU7Z=GCb0gtUVz?t3Qcc>93+0Qc6D_% z^|dp#W6$jom?k>T5cW7;!j*Ph5%syBDxLhHx{OblEh_XR+cgxoshVe1^!qW_P3d2p z8PQK=wz>hp!1D90+($R_J9B|&8v;nZ2W9nwH!oKA_{X36;4X0XK~Y{Jq%#?})n1fg z;?0p}E1uRlnsZYul4JcY0vO-Ax#D=Hl%5fxE?A=GsODs3gwf~hrj08-I!K}$7X=_g z_uJZPH&l^?>yz;L{(z1{8_x@??P7hp{o?7MOPB;Mx3y1~%hgq-z)@tk&x3GM5DXCj z$3Rb(B2&VSy7$V~mq$bD@D!&|Wtg}VMJPo6i5}f9K?fw~B#fSS#XxArZ=N^@hI~ad zRSJYeD-Ld&fl6FHgIu37@FRfa^g$tzVPmy)$Rl!lJV<^g3(qDH)SVhreDRwUG<8)| zibD%>t9d%K0Yv~aa>TvP-O(lc*jNr9NehD|%-LA=X-}5^JsFzusD|FngHx6R1xUT6 zsQs!b9MuXV!3_@U^i&jDMd|SLBVJy)><~f9SoDu^vD#5Nbb7@>n1#_%{TTCAd*nzOpa_3D4My zB|8pDB2bOk9f?UEh0rY(A(_K6oOmtk{zJqY7M0HEsm|`X+q$0h_0IF#^TlW>swm`- zl!?j&1XAFBJb6&zhO4=2p-ic)a!g!Ih^)4$x-P8Zrg>zQl^(9V0Hy_jE)8~rfauYf zj?)%2&zh#tQ(K8&WXPq2l83*B9626vBAan7FCaU730Dx+6zqF*uA$Ic0||WXVVo}a z9$X3pWZW$akVrhqMBE$7I$Nh+rOBcCi`!-#P89&`qlsa0r;2p}w4`f&x0=%;))sg-lAHlxTe`z!_A6u9- z#?6h<1p*?JBHTe4`+P}CGI6JLfqi{#L2 zH*c?Zf2i65>%RzGkjAt-&^;w7C5XQtpk>MaU@`Gk3WWuOR0ihBPTbOX1H9#xka#Ke zCI=_cjzubdo2I9E8YBltoPAG&eM8GX{>Y%_&C-V7o%+uzx<}Lw1PocwIb*E&PPFx2DSb2<>ZQ;gX5dXY~^noLey9h0BaD7%JCa0 z3&>j2{@X8=4U|$AmN}xMgMI%KD~;C>#M%POY)gO~&N#$lzD3{xRufL_{JfC7mZ`t* zGszsnE4xc5S4uzto}c!~d6UZXY|UMuLw~aApX=#VJsbw@ogiIOE{QPw#5{-f(aPrK zE5`9B7sT|j?0vhtkPAd=QVgfQE>7MC2w`y|6Ch~4;36Oc)Ef|BH2`p7t_a=j0|x*} zTYF-Uh({77w*6YxH1SXB^>NPgvS=trRW;&A|G_PjR*ZMG{1ty5%PZtf)$9_yVK)Ob zKQ7hyTkusYL6V_%q8wQG1jwj~QYddr#?YP-)Se=*^7vvj*ig1S;qRY8koWUnX2ZUu z*Bas@CyEv(#3*4TLJIbwz?=q!H1vAVJDssD0u?ss*I52<=~$s@1i=)C`^RDE-lu{5 z{j~63bR}7s3y5KM7(I4Z=-oMP2pW;24 z)FUm`v*v+FKm=1HSj*w-=~K%|l33ZVvNDQ!Q}Ms}Xzo#96@PhjWEqhUc^LpD5JK&5 z9=_zpZ}8>z1L6?L686J>8UTwUFa#0{#)Aq2)aO>0ec%T z#)o;d8~mxbGXx~;+X^his@F-;7!;4r)A@VLdV>LG3T7FWHfY+4Z<+WRtC%n$%XJu2 zU4i!JdsP2s$f9$&68CY*{oTorKM2Aa7#;F3^B2%Z4hA)1Jav9tBY;IvDb^`Lhl3Zx z`S~U0+zS8-f}Y{7fynw_)k)oonuOA% z+Dl*Rq`;w?AB;6IkbjmxSz_O8|78Q7H-o`&5(sES^GO@Thl_mo_WiE)bCb19R6JHM zmMOdam_#WW{1Kl-*2=y zR*raD)|f^Rep^qEGvz!@*P~0e(gmyq=7=~MyytdP_@oFp>Fh?Htff4&Wv ze-v^R3Ndc_({{J{==PJk?fe&DZ5UsslMqxPItcZ+iq*i#x`UHoSx|nRE1T%_4<=4%b!^GlY z4f-TYQjo)DpqVWr!rqw`qM8U|H~UzVISw)#CnqNd5yrZdl_=n}khjB_lYlnRG_l>0 zd{+|e3GJ*QmkMCn+LAs{waG*UxYzmJ#@9Y0Fa;>jGzGB zl)o7nrYoEsxK@Dw0W42i>rDdsSd>TGYYYNPLm~fY7(qpuCYVgXuCrWSdx2@Bzf-@y z>I~zRm_wz~Q^*C&xa&7t@@^tvrKLCwg&klzxMd5S^?e9ke>4aalhwQK%Kwok0N32d zEE;@CUa)ifCflf0UaRjpMpQSm{7^tL&7Q$FdnM)Z3 zVd8Hfha>cnyn-C#vr47Pe?!*q$))K=;;EhdDIqXN|7>gTH8ipO?*;&;8FlC==}gX1J6u5 zxd)hmi~2a$GkWulSmQsi~w?($TfZ^%t&eTZ#}Npz%=n`w4JPi@er z=(2c?x*0j@=v>K*$j;hV+LJZM7|wtOJ|bdKASZ4q9CKQ7db5yPB)G9Wf6a;s8@TAn(pTCE!XWLNuAEqiL)G{^Ha6FRa_R4%2UKhg4fyK)g%{q>KRuLzwV zx_JRGqXdb>rS=>s#Kq+&1QknevjagIH+c{kn2+ZMIR~cQ)A03+f{%1LCCbv%@4cIg zdk0fzGyYCZry>W#gfz#{ilk#Yxof2d>7Z$ES;&bnrN2v0Vmf~Z60@X6FwBYw7YD+G zrmzW>nG>y|z`nBBT`Y36eX!pHYA$+cnJ4t!(hkg6Xdy1rz6cCBx8Pcr0l1pAvu`9a zhKFp|^3Cx$a-t*^K#Ci#;w5)DRO$@Y_Q>y0lP=p1i|vk^ANI@z5A}Y^bkfX^Klprx z+i6GL|5qSkJFW=VXC{8p3mp8(b-{BFjqOQovcN^!bY5ZF0;ef}Jq01dBs-5SOm#cU zTfqjl+k_hVd@w4}bVNB;KFJ8E8yy~IyuVpWt?`niO#sNVgT8Uip+>(&CIE~hjKA2q zZxKF(&-G54VuQyHQuFHSJf1K1<3ozmmd6(JdU)DJ$rh1XCJyI7obq&}UkxDDf@JXp)R{ z0zF8?>#tvykBRTj0q9EmBIUW8?d_t*C`({fq&sfqr;f=I%mPeIFi2pB`NjX~$OP5I z1V4ffDvSq=mx}a9o)+AsQxa z?LWOO7CN_@daC8#;w1hfU1UKu8@hQ~4BV<0+xzRIMGG|7gMJ&J9=u7&j+2o<@cDiK)wjH{fFQu$+y<-R8_Rlc33GI%kB^AuNqM-omSf&w01ir z;Z#uRO~Ey!wA0DWXsq%=0HWy6N}Hp&iUpsWY9rO=eZZ6Uj{ z6ZI-k7V7@V?S0Ok7>wH(G{R8gHX`$k{&Nh-{q3H0NFwwdr){3N)(a&rok}VKGA0AE z6fyakqN6r7#0uV3C6BZ(hdF?z&{=VuX&H@#gx=@Y*g4Q@-xM8F+l6-b1 zV`k+J?Y#AKw%@B5q((D^{v2}=+V>bMN|M{4w$N(L2am%+v5k}ll#WXM#>QIPWzOy@ z!>V3ccqtzW2u-!;UUMOo z_!4ID%G; zNItJfX$AF#x$zrN_3G8c&UV^^XQazI#VJmF#d^sfRL{$XE7W%pdtuP|_vo3&%cm+$ z=mCNT1oK>C$__X=HANlVF%YeOr2^+9bQff*TXlA)ZL=w-KI^T1m`pcEQ)geqV>_53 z$&S7wkj|6@5pwdB1La}CtojOS0rRNjk)!lHmHufV1&dZ5tqkk%#TFZsbpEdyk1=V8 z{r>y?KX6IVl=#yzEiqRcpGx^bMBWk!0g6wuiQwzpD3To=h=D-A{2Pt==KO#4S%o<^IN2H7|a=xzMkIrx#f0S(qsB|#0mppEL{a;3ggQS z9#cUQsNlh14j8F7*^N`6#3pm4%0{JF_5cB-@wZUA^o9r;LXX2z0vJ>P85g5#!d9;d z_E(m_3&KHwpI6G~v;=~%Y3%~;QXB2w@6ikU?TL{>yhYe(X=A`4^0Xm#d^!?|Js)t` ze2#a7O3E%S>N$T0Ij{zHBk1R8>$J2W0vf+Ng(Rz%(eQf(y&RYRX^qq}layXO<$15> zH~^GJMTb`W6~K7|=K#ZNJn;JeE{x`~LGSA=Cr)P-N}o4375N&(2V!^dqriWvW0<$U zfMV;b!L!e2tkp6BF+^1GbzTn~H~tt)jZfI`vP3ug4EJVs}tNuw;B1%RuakHc0q=wd`Vd})Nu`qOx z$F|%SNi{D>-&$J{Y=+ON<4Kt7MWYjs#m(psb|FFBS;;uJA;3i#?_o8ZlBiR>e258|{;2gPul@m**#m zp{(%FE^4tbMP|coW%JnBC@^D!8S+(cCe?XG- zdz$wZ4*hItE?N>yInYZ0L_tC0Lx9EY%x3^V$TgE(m>7W&bla7=&NyuSMl2CdwX9f) zJ8<>8t;gySqE*ZqiaX!uuiGWu{sLD=l>U54Ni`|jLci@bxwg#~nd2k}>P>#E#Y)iC z1Vm9TXsTC-4LPlK$z)(=s$tyWyU2@pr15J`6-U@N%Haamh>>3ZP(ehn#YUJ~8qecb zBZ)U-#~JFIYz%r2bj2$YxYLbcQp76>AVw^GATI96nkt08yN&k+>Qh#noh8hf>{!Rg! z@-38e^Tk;s`6v}8s^p+-@nyHl(a76$ z?`$ITJNWQLt6ArrZc+vcKKxvbUK2teMlJ~}HL_b|qt*?2O*|@d1{OL)4pDuvW}D!# z^RKOyT-ev_+2K3iA+Yq&aNJoMsRQF-VJ09vaai~Y1$1d4fSswix`)fG8VK=`gi$Df zEgM$C@VY}jalOm_I2exftxOC8(-6Ih0!=@Uk0%m{lH(%UJ~iHWD{+z!OrV+RZ96*< zT1-3Ln*iUtDQbb(2%xZ_t*zYDw_O}tfzf#DvFLmo1(W>3M@7TU<6Nl|RX(|L z2{xN2y)K^4%eb><^OwlyUjpamKJSNw$Gwp}YP%tN*0X#g#%FW<*&Q{n`Zf=UCSjfP zuYG*Sq0^7|%i)qVws6{f-QB0R40_seQds}P&{+mV)kI;K4PckrC8T5NmhQR>OGrzD zfPyrrAKkG__fnF=5(-$f3W7>VBO$FwOGq~e`0?ldx_@To-Z^K^dEaN&{fUiV1wDAA zjvGIJGJ2=4D}F(FBs=Q_(y82LL}|CB007hg0i2hEu*cC>Hp_??n!ZMOAN>- z-xWXtew|2I$8A1u6glR;;@^CyrEub&x${$%lxQYzBFUezE$+?EDOQ@0f zLOA}WS#75p?j7btF?kC%E^p2^qJ{&i$ktag$npT@NcwgkE*#%#nT@0lMy%-{;fr8# zUz$3%T#cx^`>Mo|h)424^D67LR6aF1((ILX7g^*Xt4GnDd^!1|J&F&eB$Sai?!K17 zYsZFap*E&#o@s~oeIW`|D*_d)y?x-=Jy)qv2Q9WxpJ)~KxL1}v@*g=-IWwxa zZvxtXf)P$HZ|gV_)oU>&H#XB{z8OuV?5OxhF_}PAMGt#9%IK#Qf`o4FShw;*LpXE# zQ;aAov+g)`*ayHG50hvT-urCb{sGX#B%#4HCfbEvP$7K~S{h44utSZEKf%K_<_i{{ zv)EAZd`&1a)5je?VGp!e{-XJ$Z1({d|5@n+&>PYV-LTtV5)d6+Gzm79^pEQr*N#^9 zGw$XAbgarDfjr0*!s40upZJhUy;W95ORZ=mK~XdHm0wBwXDXJyriZR0O?Ut72 zTJL(qgN@(KwmX;S#gCB!@+F)u#ty@WC}Zjbv{+-T5weT66SUkm<(nx`{ySeR$^@KNNj zWG|2~KRB#Rb=irz$N8Z$T1~E}HFP)ZrQbrU`;Kb9Mz{FM!?daBctrDJy4k<9-1vm2 zpS-z|8v0tO76;cQZJ1c?~!aRRh-d~KF^al+tB2H%RvWl|| z-4B^PEh`)##64P=34EgL;TNM|Bco}6m6-FS`koB9P(rOQ1}H&-@%@+Wm{^}4i$5gn zrUKZa3y-8)Z#$`_ZlEi+W@N96^jb1T00}#~*tS3>6vUE~oB>cIoX3z6)b&{y?B?~_ z9xg5WlpniUbJN~Pfe7M6ScdOyHc3_q1P5E1ylbx9=v^)Sk=juL21$3>GH#V#Tt@-k zEe-;S7Nz=o*@=rBD>;lt4s$0j#XLdB_i)qs8Ya~QArou3o4I`2D zMFR-?Vx^GrzYbRL*Sp4aM%gPaR0pJj{;hYiFH(SU9;Ec0P`6i4DJUTdolpBoBdb<_ z>JSmU=+hWA&`6K+SfJ@fDpkpt%JrdhNn{NV4ep}n;}D#%0{9?l+qOj2_OE#Gz4|DM zbhUT2f8$N$t{BMY^3qlRTl@V>!v{C4#a;;6{J>{CL%|z)dBO3vo5R6a9@~+z(*OM1 zcZi0?r-VBSUHqA(4Tk-EUYaIDAFjTBWbmK_P{#3~UhfX8$|A!T#K6N8uwCLrdLkv1 z!%GK-fx4>}AGM34mJ{9Ubcq&$X(Sxee$^5h>bBl(2NpajR855*pGKoOIw%VAfE1`bIcu}Hflmg%NJP2^O!OT3h02|2c zJOf8nXl#FKXE02S?(-Mser^pWxcpsMTLf828)2=?1zu&6EuCqI@e>GAoOHu<{JR=PQ zeTzSm>=RK>cw=F#&eRIfy$A7cptv(4+V!ucN51CMcQb~bqr)CD4kr%w)x;}j{CXXR%C&}F9xqb>QqY=k0#StF9FnU_Q zcePpo7-uFUg z)Qj_Ao8!db`VGZDX3F75fL#^${Y(LCcn1~Jud&Y;aSYo(o=3P)j`&T(8 zsBb1kklt9fP;aNmgOy7GKh70B>-dVE~iud_;C zt@BrpXVj8%1zBH;M6Eoef=K-tx#Rwz$QUf-a(%S?+h3Y1&HxO7()*C8OeLmKnf_LB z%j4&nJ=!PR$$iei-~kKv7YIu=YaQhBC8`v(*Ha<4NFFWCjsX+PBwp6U)MkUEDby%V z*O!@RE+u^r=6uvsBqFnKj)DyK+Fr#+)KF{lVS3M7^ho}{Z5%J3lF{sAMUS`yH%{8r zEf?21Y{_y+a}AhD4-lVyaUUMm6szU19M|{T@qK%j*KBQH6urCJTs21)1yyCo3P3Up zixgg_niOX1Q0J=r6mb5qy5L1To>t=Wi%Hh_yLN2cEHfM`Bdx<|bMRm@rj*^L1K_9} zQwSq(YGxuT+w2aawlXG@?lOc?1HJKyDeAW6%(o;Hb3VAr!7F5kiAl-==NQWv0&<~A z&nIAI|8;Zv<0sIUlBGrF&V?N7Al=51;JDY;dDg7!8#|kMR~LW2nR6wCak@_ms4}LC zAIiKBQ!-W5rqyZu9P#<*Np$Udo=#O`@ZHy79O4DEAo?kaO9usY2vrt?f?qCe5ao6< z(lKGcqM~e_Ly6yg^nW3FA{Y-Hb{Q6j?>C=px3a8ZakD++NvnIf(BxlS$Y@<$i29l~t-Ot(}dwR%La(eDJC`_X*@qxwv+j zItw^{jc$(whn%LC*DW8}S8VP-1}tf|sW*xL)cM*65(K%I~)#SH7{ z66;(h+CT#W)CsHVhlg{ptv&oyzsFiv^tD2D$!%p;pGmf zjQ^@#clh8j>e^)U5vOn`-MWf=B1vdFeBdD2DGEsxWALlL>~9=(BE49)z46U7+)#3Zh7Ej_A7mZfoz^mH^#+;D}8f6&Qz zR3)eM;`4eiW3`a^7`HZ;^EbJVU#6=?iB`VNYj$nhjt zF*wN87qZRa=B3{Oh*0WQLhx!8WZsg@JC2?2ve8D>&ND}m#>bJu-i2| zxI0b_W!!y^P=xtqR{sl(0V?glqfki}m*0vbv9-{MrFhv&iXB(3>Kaz^98&OKK8EPBq zaAAt$h)(SjD9?g0_iRWW^wx?H#dABSmsjayxg3}$v70gLh5r??#&cd=B6A6N2Y%Bk}--fD+5zR3Mv)#AZc@__#xCE+F zUBqot2$Si^K-uQR+FB>8gj+G!+?)wN(dA4|vUrz{pS!a0B?^0L$F*?yirvmSyDuUq z3y>R`*2uZI?qeXv*TxUMX73=S$|EHRw4_PKz);*bS?{3c_jY=HP9G2Yt3#Fxfo$p< z9ZFEQNcz_AM9m#App3WqVfv=5?biRIs zUhEOpVw$~CUByOt;AG36j?_%RL``lfw@~9d_jO6k-SJ9@pktbJ+IA zWcDCVa`jMjs1zuqfn@ayOz*FYNsD23#L zr8<*gI3&`34skTT8@*XGb%^VsA(_w?(?2V>XEcl(g(=DsU|d)VbgOIuY|I#6j%0yV z*Kx%?D@Paw#J(D2)edtyb-Dy)B&i*lGI?DS+us}!9;=I05b02=Z~u0jfpH^BF17D@ zt$O`jWF=ExYtQ%UX4=a9zK1$|+y3kDm~rFb8Jr zoup9sV~9Du5fs6Y)rpD+N_5|=Xx~DCz2$#&7$opIO(d~uv0FR8T3GxRL`)&#`C1DMe#o!gc|{!#O_qt);vGZ)Di>g3O4Bz>h(`L6Naa22$|PE8Knvi*NM& zC?bozc8GXZ4(RE^k4ivTWYDkKDK+$U%B%X`>opEe3;z#~o~GsG$w@oSP6_~S&d#-O z9=bgDrDqCMAgjq4?n<@M7Y`>qQRR>P^mjS%;9}tTSnP9{vo+_xjU^uf&EKuLa7& zhhdI2vu8KI_+u7#PD#1J%FIB?PdJq=K2qf(`5)8D(1SN}Qn;|a>3ZzwLtBSKCy|2( z55?H-z}cp_7`Emvl`MVR#g(bmvd7|{EfqJ2PRyv2p?;j3j8usz(?#&ZK;wQNn?O(; z5o+Z#Ba}usfh#IVC`YrM1jU}HTRP1fU0Bw$d2lBez;~ibjh`1(77v|?9@4G2-Q!*9A3Sjq6y$GIDdDpXu>#ZJi z^Ym!>6vxnFma@RFWmtZM!}-pk3EbFTI$^d-&mMSW8fcGO@M5bg`Ak>v%ae^1!ObleXm z5div*Oc&LFC3A#i09BZ+k8ZNYPjhRF3pWZjz)>EvF)ZqYlX&?-t@~a9?=+C(eWq2y zuRz!bR1#7~58+v07*{M5pxYw!q-z-pL|q48F2&HSvqdDA4<};&l-9Cyk9dPdK83h( z5YfE~Rh|l8m=ra!c|vPEZ%#C>M8TWB!;3p;c9+!sR0Q%rb(3Z;MQM)go_c`-zAz}1 zl@`AE;ju8ETPX)b&! zm#R{f{I+k|Q1ScTqPjU4riTLe*or-xWh3#HRd{ET@bf1Vd&%N!Yf}&r4OphpTCi;8 zOALVKqKMRfe(lE`8EUrcr<_)K)CIjJbUUJq7wEW#qq2eZhLZQ+sXe2qV@xnH75NpU zfvC%(OKS$O1oVosmV1vgW<50nz>M_5%12&n6%{Fmo-{NxVt>hktKDt{Zz}2pUv)yb znF^7gv@99;Sj6P}jiyp(L3FJ%PQtb3K0oelI&bI%rP6-@Q$=i|BQ&3bp4YKadlah1 z$DsCP)+|-5`|)3KSnT%=8E!mF!X)nsGZ}H3l<$nb>vG8%S;q5ZF{ zWxrr1@o&YH(4*cMUKHM>((CfSx@Q_iu33btkgIg$`a3ArW9TN=s70zs+1Xi*lSad{ z^S<#ehJU&L#g%9o9ySx68L#1c-XaWJR2HPW2FW6k7?L|SgS75leL0_U?~7U8*0+aY z-?kQQ#S_N}VNg0owu`#t?C;z(W>&VQP{!vkI69uEqS~3vn_&g*YdQbyGK`OGl;WB_ zyC@?ww(jb|#=@p^)1RcJ6cOMR9L~;kI&cjB0}L$nEl?Qi2Hpp(DO4HFPR|g&b5UeS zKXRDv-90;Zf2O!L&eYK;Fq1W> zyH25qazh4Ddo6VO-j#~4VOzQ5^UJp_8rA_9W^I4%15L$S&li8b4BZXI9*PH}T=D`0 zQ+PxupBsiP76nr!Y6$ZDO_Uop%RXt_e~e3dBz~X5=~P0ETjJf3WK73f|J0$x#D9l& z?p)#H^3)_LDRBGwW<}a(RjNE%q?0=a+dSc;9=o1@`kvR@+<~|WxtnZGtOH{W>65}W z;tFO)Z`tclx8B%=KQ1W#6mqfNE|MbOzn+ksp{rMaX|dqZz9g| z{ow`D+bMjwS_6B>orn7qb($gGmNPaQJa#gl>Ha=4pY4pB<{xh&iub&7GcJcXYLU zQ}iLXyT~8FA@ok)bdW&|G&+Tce7@KbxQdfW}f)lI2lLYe`RMx zsBYub;R?5*I3P_AdwFfzTHkSwZngcXJsA$ghA^Sc$E(%T=Z+aCl*T{$zsiMShzwZt zQ#5v`m*>3zp`+5L!1%xU8HIaoWrM6pq}g^_$!FC-XhC5#ZHsvNeZvK_D`6BqX%vN| zK3ZJ63eb2JRitnL1j#y5V3FJksPMZf@pAT3j6o972X~Hbye!>%wCBas{$LN<)BKS% zp~XZIE3Pz=aX|!5l)7T7vcHkwf5B8t*{xhSMaF_|j;eXg$vp}@=dNJBqoIsA7c)EJ zm>F;S)$?&sy-htp1FG;xIA1SJQ!Vz8P**9*%xE6rQvePvliis?!tIQQ++_op1(%X@ z&F31mXmRux)Vo~FgLmZ>tGe#S%bG*EqJu1?`5eVK zTGJAzLm8-wt?lfmXFJX>TyU!G%KF>lMa*rx?k6i#FINE`s?pAmLDG9CR@E$gFIJvt zQ&KiF@a6p2zpijvfqd$IO#fm5zoJ!p9%GxX<%;BTrl3>+3n0tgcC|JHU1&k05Qzdu zVAw0^5~4s*09-T?H6t$S9i{ZM|(8MzN+I5Its!KI(|aj zA7$AhNiZf{Mx!9O>f6olFrxbM!6MZh(oHa+5{EL&!ye;zB2}B{A`%KL*=ISPXC!n? zhpx_O1hw!Yco>|JVC+J4ZwU(&sdE^rohE{x3mU$T=jJ@3J#Y=6hm%mFWy!O?5Y$9J zoszQCN*jS6nH`Fc<67yC{;6&bfZgwuiC4H%@t9f^Ki&|Gyr1HuVQ()0a?_De3_+!} z9yw6JRwhNW#~aMTB9;cJjh5ELpF#w6$3X(Z*A~|*kvTi6kngM%6dwJcQj!&Rw?-R3 zb)%V6Xy1i+W00~&kNTWuz3Y7+U=M(~;wzZ)9%t6YQ>~+maNg@=X!_P0IMH=vof~ zpw8Fz7kpNppYglcKi-I#drRpIS%))D+_%bZSxZF>2-7T|v(h)YW()o#OI;NaVN}eJ zk!$bYn*Li=`a02vO<=fNK7l$z+nIdj;dSAdC3CPlvlfXv)o&^okvbRt??ngN4}CkF zomkC8kG@Jbw$p&eMBiLuBv${@AwkWZ*+P!gl-GtL^J|@T?rNovbRXw zaX^KZk}S^j5zSTmg`S-CtvUlea18WngDW6m=)P?Xsp99D=s%q; znB&e#3@QW_k1XCY%?W;9%J4*a%%wI1ZdMTAbmfPtuGX2}2k6t>+0w1^ij~W3QWAH= z=8U@W!ips;I6pyCZ4u`e{k7`GM5Cr4H6L_46r}2ix5V=Br&Vn8%NSPH0P4*5T8h-7 z16=YY5>9%4BEaP$c#}&Bl0Jw(h%gS*J6l{MEr<=@q)K2=SkdYgMu*Xq1)(R?b`@{} zlCYB=1N2cBMuw@tXup%(0``H&*NJ4@dlkls8RlG z?Dg+qUUH|-N40C@n>){x8hDUU20FvHpPOTraSPaY4DaZl<_gmuC9>V>YB2G#cKl&$ zkQd(vsb+uHYoeDcP0SKZ_2MJR=caq^PdvJfAK=S-HlzahvzvYO$V;zQpU+P%xz_Ri zTiCm!;Uo5T_LBuxVl~^5y7%6`fo(gunl?_+cr406&?&3|%JZx7qF((X%|l{2O!OX# zB^VOi3Z*-5czVW7?!;cZD?jbuV@nWwemkxAR7A(5hRbQBV$RBJ* zs&v4ETywyTT%!vqxctpXmI&%cD8o-q_miOYcbVHL>`sg987zJl3UREIvX%roWByC3 z%t!Zu3@SbnmFjg0%LFRhf?|t;u|Q}}vSkf0UzURxy4q3&18U?GhrL#`(SgbCB1f|32xhe&jx-hV)$+p_+_o5sw<}Rl!Gy6%QbqeF;Ajg!61Ms5g^`WQ4e2M3`v(WIJT zN{vZBGcE18J=Pn;KSh);(-dlYD}l+?5sgD`aFZVO@{Xd??IZ!lmL;RyJv3ge#bM8o zX#;W$MU^DsT?dZhT|Yy*iT4o&^MO(-(hi-!EHvzzxn(R=Y}-1 z%W{pNQ1|#vS4aqfiHm=$Tbwle58zzulp0r(-;q_qO`YyGR73vVG++7QWa`?;>zPyu zD3=lLP9J$9y0eT#ib=LyjH18)yZEg#bLfEzQ$checwfjfYQdyq{RVzUwGyoh>|kxc z#_D*?ujz$9k!L*Ttb=6($wIHSS5`AYl4Q*-hD>OkKhzRu^=>6`AV6gevCujGjlzcT z>X^Oi3o6-zK#cp;>Iq#E)I%Zd@Hypggc`$XJ3JA&{{vklgvuk9^}Hfgky0cd zSd}puAr777gWMC?{M&jc}Wx^m-2yYc~yUuH-AX8K>2PK*buAAX5Y8jHGe!f z_~yK*+#E;qR(Hcr{8t4ZcLCw)8*MYDgvNx{eRMsS^vYlTq1`BSILiw5=()F!Z*3W5 z%(=9B3bhzdG$sJOTg_5(&q1Xmp_*)HfX|^(T^fxfrH`gi-|P-lFnRw$Vj0-#fv8EN zEh`tJ6F8bWvp*?lXw)Go!R^GH7!@ z$v|rwxFWhNrk{!J5N-whfIGQTJbU}A!_8Hj1=~wFr&Oxe;7drxrO}{2cinc76O&fg z;(7jEd-g96#nKnOUcniHg;x*5`SSB0HxPY!RcKOW{Veaszi@d0pK{$!o%vi(G+X$+ zLxytwE=emI@BW55pBD1^(!^0wd|-!L^u-%L$#_#({(h$$=j-!Wx=5R+ebD{kiWClY zZ3@X7abtR>2p*IWJuVzVFea6x#U!FVnzB@MSOg3{Zz-7?bz&i-kh|Y+MZMMTU9D-nX-R}C?QdMMgmbF|ae%5_oPin&1%V_q4Liiau&w;o= z{n~(1AoY7Rq2U&`>N{pcvE$c5w9gR<+)2!|>GY;X=|l%P>Nt0MCN4Gu@Vd2aqVmKv}@ zI;|(N_x5(05zp=j8G8n{DkJHLcu35JabD(*RnWV!O(TY!eHNGovK8o!i8?pI+H%Xz zqC62LLS`Z{o69=}^}n|jj|FC_jcmG_vmAHZ#M}8Fy77gNFl4BGeebNJ_*_JRP*)JU zZ?cjD7@4fLRkPV;NL;rUJ6b)pgyx(^ta@S?R^lO?ZR9SSf#XSmi17fT3BB;3{9;`; z<-l1s``_4Jj<_z(@z;+0ka0k;v+@B|#dxHV%=#TF_lK>i)~_KdBcIId&89Nhb*6*^ zP7N6cMsF7oAk9dp25}gXW10oYLDj*Dolp>}R|t*4=c9s9Nvi8t&%YjqB^wD4*Rge* zDn`s~9vXkZo>Y;1lv;{Ab!g%e(r|n6lYD?)XKzt-s%%+Ae|Wi;U7$VQ$eoO2)j8Uz zSi2ftqKs!x%8+b#)v3{csKBOX;yXoh*8*G*Y8Px(A~XiieXf9Hf=n1F0uR-?B{h(V zn1449fPMy)p|*oP%WLGjbV6X@8r}xd%PdOE`AbI9>P6Un$9`gW(>O{YDBF4>;O=VG zq;yQ8ep`oPEb+|@SRuSZ33&!#!cGo*+`)6M%f+FjS4J5$L}Ad2pljv(%bmHd>oVWo zp(kb?jPDJdLDTQPYhBammyBp7n-d6ZC)*{b#WDJ4iMtv*4qN#x6PGs9^?Kjq`dXZl z`e{ns)}77Ro^88YfL5zyfX{8kB~Na-upq9QRt$kT$cm|fLv+u|Kd6N zNu+>?1_#SEBNsYqr_-fLpuz6>6uVj_zBS7yY-+~6)S7QSZ>M2wY^wJm?(t*1G0l0# z@7LPucQta$d|ejRVYQQLnXRLFBvdl!u(7?hulTH!x`KL)JOJgW(7CC$${u>c}K?Wb66$($eJb{_a)1p0GehVRV)jYP+w> zS3dnM>FPt90nPO(4;u&T;QKE%H{R?A>vf;`EptneD=j4#F|tY0rb{3O*mWp`*lF3M zhTll~_zlccPMJ2-uo;q!HM2g(lF;|csI-(3b4BP+jKA8Ao`hbtL1r0Pkq?s?#*M{& zK>|_&{v9nc^i^xQ{eVTHmTrM7TyZm&^CkZ^Qp7l&PaueJ^#FhNki1+0q0#ay7(*?< z18=Oaca)N#))^}x9Q)Js((_*Lzkok^@Ui)e%vf$BVage2Uo{DBa>gb}y>V1_yyu~1 zl%Xp1RT2MkB$(d96t*ODlY1Q&Nl3Z%{uN@kq{`_Sd~Nz3Ch&rinCR=t1d=q{Qioye z{lhaH3Z%m&sgv0#81bbl6Iu2X++QTuq%jg_Kw#QbHFK zJf*MT!=jptZDn{0Hw$^>Yft?Ky{smIEntQK%j&52!2CccT!|RLL!R9cXLFjx@3=8g zAZT;P|Fav-@6Zm$a0S9sT@@aL2};+4lsu+FF^%&Sc=Kd3%0=X+Mj;h9y<7(6x&cz$ zdBOLfHH_-%hQ?(TlNgEneG;u_$TuO4!(AedYyvrDZOEHyg3Z<_{=8GKJ3g8=p(P8> zgS}}GX%Y&ZCMVvID#0W%EK&72^mZkG`!vlh;hq zCQMb2&?U6OqZ9@mgmxsuc=qQ#gAn@f%uYzYpAd|;RGBj)6k!k?CVV$Thmn> z7iiTFrK(;T<^`j&aq4VtpIaR0ClL*3WJu*(`0p+6M;Sma7KL2Tq)oWMQYXM(!lXYR z?e}nGspGfJ+QL@J^hatUjyvAMnb+-@qN(?@V04d-ht$`*@qBq|T96{26oXRkSXQ zNtvYeqi2wf=dozgL1NHN+64#nZ|lEKLVwppto+h0hs&&r7RJuq!d^RWS$_`L={ndT zL-UNBd}IkqT>N}J5V|WmG%Pms`7_84t+ZuQrO9#SH5L$G$En5@arT-s?z&2v+;guX z%GCIkizx}Wd07s4kL%*;hF2GE z+1$v=n8vk8$Qxfcpq^wa8xMHsU{ywmpRXqLGD-BF-IVXiiI#vpnC7iW!eglMQ=!pP zCi)}Pj$TvyA0R?qn3P14&>KPZ@`cY*`Yqgvr!ON@3{k{OUA%-&K0*_tYe+DdMwP^7 z0K=E_6Af#(?GyvHibU~Roa>07jKxc%`!6Cw9H?yy__2mXd72Uh&`fxX;zEd90U=|5 znfW5{Ky%QCw`%W`xFT*VLiz*5F=gf)Ff`B{r=7z~ggAV>iLB;PWU9Tp)`>=|Pp$Vk zR3SEQjH=Q<S+u z(Zm#>OS*AGdpj~FF)kZlUxOq9)arvGXqbjgPSuaRB1AURIIf5y9Z}rlVr_#kQ><03 zd{x^+F0r&D&Tq8ywUWzNp2?elisb?IQqYhpdEO*7l0XX-6?3*s)l1Y>Dxq;;e5983 z5?%O0c|0b!pS`M;MCmo1Xl?>eL_?pasB@D%GdqhsNe7??q z=dwWglFN7$l9L^w&%37OV5!w@v>)z}s5%3G{ybr*ZVwppia97w=>ZR8&f|S7?W^xF zip>^WxG=`E%2?YY*owmhfa(_%Z@3l2bqb<4*kV7-V$qpMy7w_nVG>B{nOh(@(X8jZT^$E}WA!rnm&!IBVrM*P#SI~0S!>LKjnrF78SbF-JVYc%cZZ(C2 zH3r0|*eN#=+tv>^#|1NYT%*i#Y_9!MhnrIRrvR*PvG&H>&jMwFDwK99RWhUYq&|r3 zcg`r-?+4j5}Pm;TsnM!_|#3=o7~pYW)sLmNeC#Q(q5|j z8uO6G_#qlg&`{1GGwHW;Iis@zVtdm9C)p}UY7Cfd-umC@{fPgbQo+c>KYfby3O?RS zq~$kiJD-gG;~SsO8b_*_Vp-+*r+Y@uh~~z*A<-%i;Y)xnb*xW%);Jg#!_mB5>+hwr zUGAqUZVG(fz!o?o=;*a7{Q=b!Ye7WsZ?nf=RC9xyXu-s@dD= z(o3N$CG}{%QVHWB!+92mH}BqckwUV~_5f<&qdDppmZ!FoO$51NS{nZlhqw*3Mbwlc z$9{xV%o$EYFt4F1y+h(1TBofvRpR93PT1nY>q`Y;%%LR2PeU}Y5GOGviJ7a?cuI1! z`P2NGwWVI~VkuehSFZUtT=Pr*eM8vNc1}+0d9?5A8#Du(!sSwXa;2rE<@^o1WYQrK zGg32?u_nE>o@(*8DT1R*0F+?)PL`N_CGxGIa*yKKcvzT!37y_(tXz+$X=NB5VRBd! zK|eWeS{y^ELc70zI*@y}Lcz*x$@ogpS)!r;w}9bH5|u!Ses@Z!iNEYC7L+yWwI;@J zQ5R~$2BR=x>n(8j@cbA60R#ledq7GE#7T{(tf0EBvfebPN*-E4y4eD86t}A|Y$F{j z!<4!ukaFQpga^SOv?TiJ3PL-Cu;BsxX7($N%_nV1=`1m_65jgB(o_6nF4=MX61EN)B;CGmTI3MU-3pP|$Tt3XQ z{F&ttF1{b1D}r3)-jLwbVb=*=o`de+4HtiL7Co?)E`p@l%O9n9-3{?33eSWWsM9Os zh3TWl@wpVde&{-y7=g|nCZ6s2&z}!~7x&}_VeVA2Z$|gHFS;lcyMzZjEL_ru*+0L# zW! zpCAe7*q{!99US8%*~cU_eL_2@9z_yVG2&4VtkIWhw%sgQoA_CC;1kdNOaJvtWqPg7 z%ge{d#vt|mQj!Z zZ+qFiVea-Gc%*=mQjuL(<-OkP*!?76Q`w--Mi~KcMN%AbM&h9(6gKWO`K)z~Yu<~IK6odV8UII0etyJTVFAlLZvAFR65!w`l`x4Tw}BQCSI;$e}XfVJ|LHd3(l6=B=QL-8ni1!IFLz# znrsz?C^?i&Mdcw?FL-0qgMz*4XUcF}kY@TiS~1$m*(`oC@%RS0eY4=FTeN~^ zM5vD!(b|claR^_pNesElS2iYR@OB&e{ySA?|9W_mK68MwvAXUIly}N3JK~Y#A>CkF z)l|edx-g2 zB9_Nusi0Nf*J4v?cQ2_3E-)?6Xe$+Gh<9 zhQH02rwBkx_fzKf9wX7a#j3uGmt4rBx?t4pI~0_`0V`@J-g&LpkME>Ln8vHh3bV?6r$QxlEQ%oy`=;)2BDTK^_ zg){Z5`bdKV`wLY@lAkAse3wkypQe@|$)-UMO zh0ct?V8Y)K%aK1d^PyLaKao(HHxS?t|ISYkPPRh$$CKj46bcHQ4ysBL?bVwFXxH># zq3oI$Wpt|USUD!iFhiM~PgI4-H-57x%&r>U^w|CMb{s_}Z#WRcx+FQTR5kc*Xy=PL zxjgEL$3$JKX>JxaMCfT!e~1vln)O&8$mv{BPQI$Lum z&#srHR=o^g(NkeYTCaQ57J9miRU4nWAAWUg`J@OEf%57l5QDK677Ky&3<`Glf==y< z&4-7olap_B6&Qvt(E~B%f0yJVk#e(-7JHr~Nx$j;6W#C8+Rv%PwXc00A1&pvH`KQ8 zf4leoySI#4kHdcDZ2DXSq0^3aYib3I2d1|nx47ys8fNy$3Wsb_hf&yb>%4%NnK<$7 z?mbz?^M|B~vDQozS{LNYa6&+j2379>K!y6&9>d|;6^;IQ*-m*m%1hgo5YkAh`$jyP z$^d`#vn&-P1zs5mj&jEInr z+McEKO*ah$?#$26s>@N3)1ZsbW4C!_yXg&X23Zj>tq0u578bQvP1pJ|xE_&|Zmjxq zaKz9@Q}3P!gyjQxP7ptHq70rIAFIiXibBp;PWP(a6nBb>w zOg6V<+75MAtB`oLQ*&JGQt|HV060Uf02|DZBGIIE@p_*}<7Zb%cp9pDcwH&RgdxQp zMCpXJiis#7I*>fl#;O^oTmFZB>+sdhp?B?p4_cMh^dea*iKcKRzYH#U&4?o+u>6IW z40|dYC!)a_9cSE$K<+f`-qqqJ)!@k1)!(z|!vzFAuYJ$Ev-8xie-@}+9R-Z;H*10G z*!XCVlvxfW<^08dVWs6gFBJyD5ZbDLQ}kEe7WrasVdce13vh|(X4&AL>r_x0giA;`XxgR@M!Ax8#UZUfeOUrPY4dmKW#w!+b2#x#TpkM64$L z{`|+OiTWee-Oz7=s&~8@0?zh}PK$h1lhyGdxshPCL_*9+3-|)VaI}Fg36}&|z{ZT6 z!<}@9g`NX9Sj0>Crtn%lYpO}DCgu1DSy)O*g%LPG-7ki|V+~r$n z8|(E?_l|0d5~ZbztG>m|`+bjtltoAOY#MW%QPMKh_a7Oa2xM!xI^+=lE6Hi>JM|WG zHz3KdP|4IyD}Pc!USM8!so$WFKVbrM_{r+0e|wBAX;&7pL%!Ju*dmnG-6ON#0U$#7 zZOC@CT1dbdC)Ibb>YdWEdU^{o^gA>)kl+VrhHfa>#*Kv40ngw`^fuFun)V-Q+S5bs zp%m?DH7FBcA|og77%NnZ<0UxUn z)a{g~@Xh0p7skFDQg0H}hB#$=-t}m_T1A8+eBmO@Pjrbet_BmG`_^%{-}~qTYyzMa z?M{x3bkXINAHUuk4_na3cK>q{Qqwm_-V&i42vI5nRVd%RO^lQIq+To@tL}ol4THpx z&dxWZesDBRf|`+YqX|>?Kl&Lb2>bfY#|?T#0sqXb?s*q?AOQ z`ECo#6N;LjVcw5G4_lZ#&padNgb2W$pwB|KFZ%-L zV}UT4PQG>Gd;)mQ`YQ(LN(x>>yv8T(dMPGb5YGLwIy&peKaA_`CiW z5s~CkXE`qB!?ejB%PR(-B6E~Ya^cRK7v+2&_kU1tOQglFx)6RMQpr2OAPy<5r`ojQ zo!W?r=%e1_+G*Jp8^0D*DhL^_h*De;%&WNV_j(!eNFyJ~JOG*ai~ao_a_cNl^$1hZ zwDDVY8X8%qM>4e{ewmXtbdzT%O3_D1qu+(QT>r4rT$SmtoQLsGG;i>c4ombap> z8<0nvv1~~|>8M|nKOCRl7swbp*jeLLDMK}-s z6EmJgjV@g_;0;Oo#wU;y`0=}bDSQUuq<=uTMSj%vpI3^jGZm-j_JViBRo)+u<7fx? z%Mfud#&8qv-PjketUsGg+ZuFRpYSIr)1*Tbg?Az0Wrry7#>d_p%0+$0;=LMrOzQOX zI`9Y#n<5!{fuG+I1Hf8RCKoTh7RysV%~{V=0&%uDC84rrl1k3R$RppyaC~LGhx=`X zqz$3q)YiG8A6=-FKwA+Ehac}&S@Nzw6aIW|1-n@LJpZe?_DwY-yUr>1O93Y+F}9I+ z{c-?-tWqjyXDF(BUG_gkXX428|Htv!#^&7IM{ILb?ko2;H;D;_BKHyBRHWRtIp)e7 zNeXilMI}WjSA>|eC{phGX5{$o_b+_T_v`t3J|9o3EzEjhlKt-?S{>2lRP1G%>M?A| z(P5HLFTm8jti#oP9nzz6wU;7|qPpyETv_a&R8Aw$UE0GmaP4dIgXdt&Nyk5sUEPnB zoc=vF*zx%!M;0Ofl^Zb!FAZyl+N~xs5S6eP=mLnyr6)MlxK)fvuE&^Ancx{YiL!}- zvJmAfOL*EX(NtpPplnryesQ;Mn^5JUVif}rE0*@7xJ1B{RgJVh*qVUjqI9W5$L8mW zIKdacj9&P}NjP2j7#;5MZ+^jv<0l9I?r#^pm+!)%9l~<;CIwHJ37D-zJ8qJqW{n~0 zI;Eb&XoLTOY)$=vfJE>uS*My}^ScKRjv z{6s&oc*Z0(Vzn;oSP%S4uD(GUkBEXVI3Tv3P_cOZTkFdxe z2G{b)YcOYR3Pg_#Ex9cUH?v`|5Q}Mgd z)S9T%!?AawzsfgI-thH``~RD2nl$dN1rTeo@B z)Ca|3@h>~hF6{Op=PsSfAS;hqFI=X|EydN&yQmD7|Ag>x-QmkCOUppVp#MA#AiNj? zX{C>gi`W`Tv;8MSN#lYtV|$D>?N+G9Ukkp8PfEyXf{8~ggNDu87ku2mX^pC3!+bXH za5~A~*OCF>=hNl3jX{P{XZnC@Zld$fI(aUU6Kq`gSI7Is&kk$zsYSnxH+Lu~O8jSEqQ)meIeB{*HgGTYB~l6!B2i{aZOgV2hp)0}GqBZiY3!-{NXz z-*I3p{z$Y8R4*P|2PfY$$|lH-wT~?5S|;{bb^MKnZ`!c(OK`Oo__hrc0hN{9Urf~O z)xGmw#soR=FB!*q*-CZOpYb1~>|#)Iu45*pk}_uQ|}*qm6J0DK3eZ7)+isUpqDJdxB_ zEaehbEmBGG$kaeRT%onR(KP{HlgonW52(O|{oAN{S79dAn39|%c^2*D54z>*^UFb87Ke~RRwbxqk2z$b35L{axfYrUSLY37eYcFG1C)X)jHqd>| z`Vl4UV>A>r8-s~1J664~3^Z0T5TkaYsIs%Xp||PZsSN|l10YreKefDeGdc@$e!6l7 zY&lT8&%Y++Cl-`geKAX~=VX>7$3J4-{XJ|s3S~*{zV1}sb%3cPGJs4fM}O^dQ~%s= z?E6$QYL7TwT4hNKQ`zfC!WujQzqlo1r?zVpkLE5bQ{emimL)g@%}aT^@`@pkH_E^V zPfo^mG>RSCMv&LiwlaB9!w{MPCXa$EH-@WiVrJie8RuEEpr&u4lN#70fnpk10#0Aq zK-ZN^C2m`hh`wcx)NX|U+~QU0b06Nm#1M*DeR+c=Im+~x&1YoEmb@jLmon^&p(F#z zoWUw(ZX$RI(Z!b@%Iw_NdYl|IDn$-@j4tR1rMa}=3nbO)o}Jk%yIGuSq(Tju{Gr+E zxVhEW3UOG99^#QAI5)K*CL8p^swOHZCIN}%pgmeCt$H!{H2D(9}!TFY# zk48>NT4H?#UmK7z-&>0$2|VVME`7e6&@2{xS1*oESNnHM64X{&>3!GwXE)ZC*A(=e zh83^wA+LYTPtX(ml&hcq$w5b%(w*{qP|fLZv;FaF4nL~XH+@~^UT!x(ych^0cqQ0{ z>n-F;J)4u*B-E?Z8oX;x(-hMYDHFMB(TbY$h1EIUuJU1FivC+^x@*C{R}rKfGyJ)H z&RXG%A#yG|?3Z;(uHkI@hz?PAxmtz&4f^X~k!-%)>}4|dO#tFDGo2DNXW^Q;=a5!a3SO;p86GsUO9r9S{h0lu;o zzw9@i!MV=EGU~&Z8&G8J4hgF>$McryT)>w!eqZkx ziUsA8>0a;SKh>4@QBDZxC5W1_WaD+H&Lzn(=fq(f_vn&uQ&P~3&uQiE-*hcgN0n4b zc4|QMYp6HVpd*8rB~FaAnIT{+*F{>xc)p5b#wOTu+FA@2E?7YiC8wjVFA*QYp6AxHR2$*P`3n&*n)#uG`{wDna&{B=}K=kVo@i?%spmn&1YJ{4%^L$u)-$Dhs~cmzO1@6JKxrH{Co{s1nsHEQdn)6PltseE11AFU)u zA-Hd9^z>K7?|(OL939?yaDdtLz1U&B4$#Z=)+Fh^Dp&5Kd;yIEm*l>*bNF%}Q<>3& zImw;#i*hE8qykR@J~3kNhd6B z^g+#RrK!dA8^{aVQnhsq^lUg3r6-Y^FJ7ykZhui5{1o&4aZ!I@jZ1=lVfaDdqN@qK zd($QwUk)u%^nD(2viIa>SUWf@Q=1ImRdnyoK~yY2rlb)esyL~V1jCI=UPxZ}#f`+P z=hkCd{sbExDPzNnR@h&TanEr11iT#gZ7`S?=1jgtakfL+;kSjmcqGI#qYvPnwgtAI(e-tiS=6&HP{foYa zw0Sq}&00cIA?M$$iD8VngH3X46xB1Mh;W(#8t=_b-Cvn%{&(=|cO!*;utEHY&@oP< z#SW~XBTgot&@0-&=7B8Ovr9KB5f#oSLQ*ndvaln=t@euLMtWyTwmf{yHD^LcdoeGw z7TL}BY8@gJ8M-sW4eb}U0It;!tGZ;GR_$XZ1Itc)qHMwBu~j^+^Scogg>|&&>jRJ#yd-IeHGj$dojxpgy#Mp6vO((DAfiflz zpGBt?#Dx2t-qXL{{~=>f+$$XvCdDT;7bYJhU_*=2bizsCI6<`c~O-A(45 zbfuf@Yr_J~onR`6Gw`@c=SA+ZIltW|C|Y8(SkvUvDJ95Imz+G991ouqKjhw4+=)kN zfYqmEj_Ptap&{T=Gg;K>Bj%5(u(KFi{UDU$)RS& z@2!HNNdQc+>@Vx9F)g(Mx@D~rD%5!*OP#-|i0P4x_=#aT(-X&YOC(!Q_ znXg@qRTclL)2ID|M8!`&`B@&oU@4atxf`~V(DF2RPDviuVhQT1r-;5WW6Q6Wu%pJ}(%xQU5=~v#)e-z{~NW+d5>=BDz#+8ue z;T)v8ArR-h^&W-^jv%d3#mH1pEDxPVv_8y$mjIc8-TC&nFMU_ILBvdDRgBiY-SZa= zy{MP?=*dRw`;n#W581j!lK&kGxIk1QyE)-SlBrbBh}UEeb?C$j`>tiG+$Koh5(V`T zc@SBV7w=5K_+_u&4-w>E!dpJo&Ecb?4ZC=a;i_~ugD*x^U z!!GVDth}w{#b~hmMMKpD-v?1S`@K1?>f&1a5bKaz%)53C??Ee>;B7Z0ZfGA5tZwWV zn(qvRR09izDzzAttN6Zn3A%juyo+Es-W@Tol_OCFiq<|307pGs@F_%SK*6#SjYha6 z!-^0L%M1jM!kQ7VBgNNYcD;i}e_$}wjT0S&eWIF!#haV)1YdX*_Z0J!-anRrH3J`=@QTaafCK*eHtiDh)}{gJ+dZz-m;zzqwn;>I6PCwmODa(} zfFfZ@$ZJ5GDZkS{A1P9LS%%(xH?y*10Wy)iDf!GX0#3L<+SO%7Tk`C2Wl5Q6mAz+gfU8w-H>!Pp< z!9ubdVwb5=DF-Y)a*O;G`~0vUzgZ1#AD3W(?Q=YpHTn z;X7R>q(%96$D&V(HYbS)JaUm+wwX(tuVJgl#GqRx)*uwawn{!^Nx0Hm$KVqXmzBtw z(3&M6F%r4Q0QLoAl zSjDJus^$5S8Z6kmwnb%b`q{5<0|k|hzgX2chIc_6;~%NixR)Ydgy>KysXurx^Z)7B zVvx3d%pUD34;4D6rTazev2qVc{cPy=C6sFU7KSApRlw@6OQmOZAIpv&dzR(CcQl@| z*`*pCvScXi;6D2OJFovBq7IKs%Mg~F!F*U-r z9Drb}VWpY!97^gJuw+Pvz6Ii0sPXuAlOFvR>QUR;wheUETu@>=irxD1Ce$A1ONERx zrq-Lq3EH))rp(&Z;xY_QMi0ji??ym@eq13ZUz#PTk#b~jw}OZyg?pFDfZZJ{ropER z1<@{G?UU7H#qFL+@)tsR5-J-M_Fs}Qui;Cnq$loz7l^G|{vZl*T!A)n^$ zNk?C*vX0{%JKK3z`@$*F#sBmW^o~m}4?(&chKk~7yT@U_f@yybNDU2y(7w_~y@Af1 z$87+zJXMPAiVP#-5Ov?0E{Zum_crc3$DN4{R+33;ox#WSXRN^{`ALvt8{6lZ?Atfw zc#pA51TMpII(n9F%i=SC?@EEs<8B(BG5B>q%*rG9h$Xu1VFvtA+cLUmVknOBFjS=> zc?EN^h6x`_k)ZngiPDE9V%%c1frp~vyRhiJ=7j=&{Hwz%J!SS4b~&8v(PthZ0gF=h zd(^q(WTdV>9_RSzfl^P&WfPGKS!49R-r#)a6tmjO8d_G)lB>JV94MQW3eldp!8)5+ zVNN-c_3??kdW_ORWnDCS%Wt;in4?Ely)kevro1Mdb%>>Owu(F4HxIGDn}TeIY*t)5 z>7v=pf-N~kGFXB1-)jg~sav7@YS(9Tm>s;%5>R;9EA-6;lMB94Ra|)&yZ(*gVi=I#4e#@QcafEDU^fy!Ku(zEO+5qd;5b zMV;YQMkfD+b%-de$>6-P7e<5C`yLJf_ zN13eqi=>lZy$n(GRPjLT(Z8d=X)0pz%NlIbNUmW^dVNzyCJQdMM%;tJ#c#($lE`DR z)y1uB$AV4X$3&qr6HG^+f98E#$sUdZfJ2L}+48?pPIAzAO5^P=el#4n&fn{P;=dKHOZf^=yj_+GKWaC%y^k%p5%Z6X}kb8HaFdi4P@dnhRq&;-C)1DL2kD0>;TX?W8Tez&3dd^enB%F}Gmi0KVzC~EQ4izY6pJ(&GCwqpn8 z$}E}v#=)pggJh;x%cFr@6{WATq9nq}dQ?3mOQs7uHxHXTTJ4wtQxJKy^mAe08AbtA zx{B|At`EZ3|BkSItE7)Q+t`a-eGK)==-SzUu8;`4|@6pi;7# zN#3qaKP+C=h4Yb0YjxAlgYQ3!+0)NH6p`g)!jQXc81 zB86VkxfALBZk-IGsug+DmOa;=J+pPwV*j}#k~qWd8xkLCN6Rk{Njm}`Lt$CvD#t;o z-hYwsyZJYUpUJfUHdFl-8L~7~x*z|>iT8Z+mR5d`xkK|aOO=>f%(IFbyAQyTjU9)0 z^h?%^Atr1g{CC@D;9WlTwqwCq#%O}kn3i~jIz7TE!WEmLS!Y(c%H%E?b-3xp;2X*T z_|^<_2kKaKgnM%==w>*r&&DY1J$G`T9OD0pb{53zCtZO|DB}&xDX!F);mj!RZZ-l2 z_Gh8SDiKqz1JvUNUlH|v^}gjiK|oE`mel{?^?X{Wdi;b)V$<26zgv5MoR&mBckp@f zwVyKutj|I|`2fccN>&rfGBHAB5Q9$8%Sywg1o*CdU0#~;uxaYR){j#oTaHa47rKLPm{0oa#_h>p@~R3vs2-$j zda!r{9xb&mJSJ>OV+JUfhauM;gcPd+g>CXG=ENs61?`dtvkK!1La$RWX+y9W?o=bT zd@Jz%(nYGlDr@8Kt%ZvP5!8S#En@zlHyT+dnX$xXeX{ z!R}Wpb4ml9Ph@|n8f%lHVXnGSI&x5!)rmi>of*#M!ENSq?=t-!j^ zT|b-S^ax%tb>Bhhb`CRkaHXLip{SI(an*oqkR}S$PyQyns!~evdQ_&+B^Thx6{CdN zNI3N>OrG0N+*zf0@Uo1vZFQUdSDC2SiX3Qt6p*O9gnv}RnjsKRGYQJ2{KV6xnUw=> zOhGruPxcfGZsuRvT*i?1fsq?2yJ;Yx-haU6cY*d6$C#Wy+Utm8O(1$t$Y@UBZSB~Z zOmZ$ec1uP1A3j50R~+{$Zp~(fULe}YDoneP7Oh#w(Gebo;`R;mT3h@KSj+dF-tKMv z^lJ+DMX~p=w(!-=`B)6&xTAWEk$73q4lg|bZchIMuX=lCGH+3ZG z`}R|v-=Qu;iKG4nXVZa9{E}ZH_qwj8Qe1Z2>^$NN5hN@sM4NWn299voSbARa{#2o+aZfvev8j>s)D$PFt&qU>Dyj28PUZ>ceU_A>%8k zQZ_T-5W3X=<%Z+;f9nxx3$u2NlkW}=^Hr~%a?-Hq>gG?1Q|X04J-65ITsRM?Yi8W? zM2YmZ^4D;LpB~<9zOz0TeKOv|IObB-dy|;0SbaLbI=&HkO*&YYsaZWrN8ViGZiZ!^ zf#iF9+n~qXYvgii7`Mz!*NZ%EJ#KpeBwHWlUy#Mh+0vO~tR*eeZ&UL|T%35%b93h> zU&_(PR>Ip}TUoD?`OD|KCnF*?2j4}H$ZVDt{!$jroGK>hZhf#05sU`Cm|=O*x=YvXU({6f@T zPx4uPV+20jp3b+Ub+E?=wp3}SK+j7DOZ>>uyp0Xd?Mw2J`0@{TVj2zeWVv5s7R;&P z|G;aOdsHm)p0xJAfi04kBRA{rA3Q0PjOI48>Qmh=@%QuqWU=FD3+bL>3V4HAD!k$4c(B+w1jwge=i z0|1Uj97{8(C;^X1o(m&);JLa!fpgx$)oq`Ve<7QkL?}w1Ma7IyCK>Qo*6RTa@%EL* zavz`Mg}bv%Z?90yC-SK+~T*K3Bx?ApEz zZ!R4pqq~?xt?`Mv@$ie@i^XUCcAo#;Y=VR)2H)2WVzPSi;KGFhZauJwp{Qq{1Wl=; zo3g2hV8L4o??|8gN%IU2>nVRb0dhN^!XXoi+L6w3y)3vEr?gyPn&dI}3-t!_cV#K2 zU^>Q=K=w|%Y2FI9X$AY$vTm0|*o*6ji~n~?q>{a^&?I=;n)UgN$D-y`L`*IL)ga2T zQi||jr5EKg9^X-l!6h-HOHYqXTl}KB5!#d&kVf`XGRF8pQY|VhVV7=)HsvDR{zZWh zsLKsoj^pRg`W^W^mGnoXg=xfZu>reG)^l-2p&wl*4qrLE_nSDV9R`r@8q1q~$i z1hn4XweWW>UFllqO@#a_^o3`H1!tG(THixgve20gIv0k^|9$HF4<%DW@}}h@K;8BN z?YH2kKvIr)Zi$UQ(WFbt{>NgBU~F9zNbZ^|&&{hj>84I4Fwv0?7iz^a@kVTFjzU|~ zBLPeZ+7))Q>#L9+%dz}X7BJO{^v=PUH61(l#}6jKVWWn57%C;V!iVD)2zNX9;WpoJMH_(t!Gr$5sBv%&D4dv^#6ifnT_1MZ$0}Unl7QO3M>^r*G`vPnTW+a&?2Fk;EJo`5=0|P)itZ8!^v-a7#%L>!6c|BfDy=m znM_k<_+p{5A_iuC*)0OyuuMIaB+`c$Ygq(rdQ;{~IiO6TrW- zBLVNM3Xf8s!z2E6{z9WK9hV@~=*3$|j=2kUg-?^FUU2*BD|e42I5PQ6J=p?qSNt3D z4yQCSDT0?l>IM>yC98OM6^SS>nCIbl&0U!<+w~)h_?D-=wKwTTYqav&NNgEyg=iA4 z&?(?eH9Js}20umPl94HrhvyQOvvk$nKYz2dPE2il0!;P9Z>qn>%vys^yHCvwQdHt* ze>0%wIXlAg&_V>}3>KmRd)ZSZuTqX-=3SldYxoW%Xc0CdrAOU(<=iZnC$n$L?eqTj zhCx*v#uL6lhTwldwsSkW&gLAvRP^0_`ac;X8rW2cr|!+p`=vtI$!l>9=_?oKzE}Tp zaQN~AB1YV2?2OFT%KQ(v4Dy1_!phLVq#~xi*isR}h+j;%l544uH+=~11?vc!e5VV! z{Us`g0zjQZsX{B4S<}|61wq6&%tBj!fP$e^J|au(^XyNf;5H|t?qlp5O3|TX*Jpuq zYW!(wmxOc`27CB9J&!uPao>P<&-dy1j=8P_w3g4?u47;sZXhFoc|{u)F(C_X4EwK( zKZODN@%@9J_lI(si|JnOd>uEK1TfVyTh1vj_-f=7zc(oB2_W)C^+~sA809m{$lf;7 z4RMl>k8~4mo1%SXz@Fsw-qAEJp(Wgi9nHn|IpyeDead6jX3R+BRj0-bN;$ z3F5Kbr?KY)uHc=6`F5vQ#LhBerQ1x4|3X!VOg+AV^qd6jEODW~7}_#tt?C5qWOx{M zy9_8g0P4cE&jlBL)?NZrrS3mtI}iPveW=2@|K;2OnqLpDQ7*+Q;iEdbvo-T_d-&s( zrx6j(x16Oi&bk*y-g`*FZtkNWhwRGj;+t~6T6|Qg{_|`$9CX1@=9;_ZS%y~DW%BR) z+_UAMI*>J_ddQI^Oxi;N%=;7@f@Rk)zf47(z|I1Z#Q?Q6d^V||^aE$g5xq%NQcnY$ z+*fMcF;w*Ed@{FtD!eY{EKyIqdo%G?o!H$v@-3yIuE}|>G2x&HAr3XoZPnZR*{{V-fyY*^e7uoULZlZ1>-;=VI2rVv&ECLb*ui+F9_F_Z%hT56fDMMf(#N zk0g+FX>29y4YlhYMMQ?7-rUFBJr-6Y?I4j~2L}wb%lV72U+I1Mm75pJ{&>vQoL;6J zJ~UE0oN;zzlbuQE_~QXquWoz8JW|$tot0SOar}ds6HQ*J z?fj8kPs)1eE0%yu-x3YuVAX%l{B|VH`&`(>SvO6_X){IS*wi|K;f6b09{zS19IBAd z6{Y!5RBW?7?SzG(dihA6JtTlBD*sq-r=PnM%SJcx#$Nxq49Dm=PqlHt z-IQNnN4_G(E?HKEC$)UynB(S3q^JoN2znlAYUUUoqX-`ia@lT;Foij=ISunxPzE}H z*wQ89h-a+#(u_bI{nh~Z(~dzKODaE`g;d3)gb6hzr-Xb0i@xr9*eQJ< z?}=ZH`LScO(PfwwTJj2RUkzu-y2fY^pRKGNB1y$|BeW>no}q!dX#g>N$nC+i>4&KN z{w-7B;wuIt;N-^#tbi+=QZVpKGWsPXY|j|J7`G4|wa-+OhV}ra{^r;%Ec|NvE*BeA zX7$kU6dtE$Czq~c81*U761Ue+OA#e@53u#cHN>R6b<u?y40+QI? zG|3E}O8aL@E$;jWgi2mzMTwF4NRmG|r2bx}xZ*z-T+d~`p3WGCJlZ-~!n;i9HD1a) zjMNd_zy2!8Dk1H%$fb?aBpavL^JiMS;lQ(ct$s;yow?PQn zpgAN@_Y{TqPacbgD?Lgl{lz~*`4R4kYS>h_31rN-j)2=7_+Ok?C%p2@odnaBO4Iu* zJzmQ_qc8mfY@g`wKK(Yi&lQ?WdHfwiIeWM@7gXJbK`CVB!|7v^aPQA%o>zUlcNRl1 zeQfy_g5J=(DF?h3J0d)PX9kB9Vf)U4q1H^u-bf0A^c~@*zy(Q!1^T=}jgw$PouZs$ zfj)ox0&>T)Ngm!F>1$%6FC?=gZP3kR#^XK&ZeZh%LAVgQDVLIP({Zj`%P3>)|fvvxyVHqL1B_Ff-~Um#H0$sX}7D_^-p1(K!7S^j~i_>ke-0n6bp+ zThe02!u;XGD^t?4LjW&WY_*b^KjByMBlru>?gWXyF&&phNyo}Dul|%6O=jPHd|$v4 z_cMVH|Ik|xY81Kob-*QRLobYyX0_98luIf0LFgC))q@5ByztBFguk;-#5Z5yx~+{1 z*;655`@>Yye!ZQ(Aex2PC9wVZKyJ0CyF4fdLxc|@ub-R^1~1W%f=5|ThI5a90uHl| zba}rx3x105odD^%!z9x69%^bAv;M6U2(mNS<%}82O=zV^_Da!*&IyWy_1EYRp0L?N zx|LARJ4x|X#Mte_E1_SR|Jw|zDeNfxjEwQLId-!sqXzCtr0eg~`BXCy3s$aFWVZ6ItkRcl)0=28wet-^E!Vr0lU?omVFl=0%B3r^L5)t*IddVK)h83#>beV zO1JxeP^)$#zCNs8a6}6lHbAR*Z;k^WciTI3SYOj2ZHM!%r@p@%G@^%VzONhcsCpuI zKc;&=;iexJCv?y9%|G8qrz~CKQn0LSBh~FNIt>CyI4@NpsP&oU2db7Rc3FkE4FCH{ zK}bBbtSnw{A zbkjk9#LCYB-Kcc1$}KS$RJ66}IC?%3-F<^UPavhL4=Gs+S6^>LBSErL^u22kr(>*tSZ!jUsl?_#`Xf*&p7DV~J* z_D=M{Haco+>5KK0+3#jWaVg$tBn}^{6t{hk5}}RT$9O-QMeYk{$k@$y2uT6J+#@6r z_!`>>ch)+3By;ppHfSh9fQL?|A}Y5jZJU#p(NEYI1va^pl@1F!XY2vk<9@ckGq&2Z zG3SHaNOdw3Qr#@)Z2f^z)RpnAI6Wp@Wh)eQA_@MF73<~G)DHm?aB*(?B4F*trek_z z@RtjUO~KpcP0Gc_)b~adP!K1E$@2E;=7mpRQ6ADZGGFB>i+D@=xTe5(?7Hbc?>)0q zw1^ie`17A{dnaw{i7b!lj&yrP#?`~{&vp^F48!%vTiklo;@6zc%9v2AYPalG1oX=A z4}=*&j403-sYeDFftBwG&L7sM-;TRBlkoLWG27LhjM#v@RZxLGHZJ?xE}D`;qHtZ! zPgBfv3)PIrfL9}grNj}F(#f-ahr-vozo`_@Lc}b5heps6Sj18 zEk*;IW;G^`Sa*d5OY|i+aM_|82XiS>IjGMPC|~3__%Mf~JDCtbP$FTUbBRX)5b{Q| z=RVPAM38|2H*1!3tI@fSNRA|ltuFo}UxR$N(I*l;j9WQZ{XcQ{Jd_Sn#=7>3Typk> zlYVwg6K*6pw;a!Z?3AB`j`?u~=y&abv0$Fu=B4eir?GCOYG+J)mk zVRjAd?<~e`*}Xxa=z#zeJWDXk8UC5rCDrZZe`pvir_xjZK!<`rKwnZW8Ibu+!z~bm zPR9$+WiJ(k#x~b=eKHgEcEjyrB7hNZAS|E2kPhX6c;%H#T+VU4u&m7)$w9{^o~ZC- zQ=|znRH!<@?u5t;<_=!pW)?MLUmeh&*%Q18U-a+owbo?@zUJJe_uPR+ob}KCFen?7 z3TcDmQTtEg6+w@>G}fXl^d$hwa^aMe0&}SYRnWh-AdhgF@N( zx_>{~OticiYWjm*Om{t`gsPGdG6ogFMaa>6Mk!P2jcM!zh)Rs+2e>$4%oA^vZmbmN zD(W5h;4;HB5y5H75(3i3TzTk@Wp^9Ck5r8p3iBU(CF6tXT~tPAw1cW&3f; z?KcF96gDA4;|X>ExI7L8k1Ar;ey~2ny|GS4gW;TNm2EQc#jm6GQ-v15Jnb-^lfs>| zJ18~$Dj^{1*k*%uG`*dwW8GffP`gODbv(GZN&d3~7>N7!{oJ5_rT+Wm6NJlsk<~rq z_wPp1UAB4b$qL=e$8(Cin4LdGY$VAXLKs+T@yR|$q1Avt_o#p+VVYo87|*GG`-{Ja z7=3-4#XOvVeeo-RQ1PzPAOPfOCo@~asPBe0$t6LEs0a8r0mO_)*1dcc>v)NsE+2{Y z;iM^GR7Hq|B~3X-3?G~@u)jaryD+8mATEDN8!(cKa+XqL(c9|aw$68w1v@!vy$f?Y zq+_3MO5&m16w@Bnb#-LcN3@A`hF~m7a6hhe2frP~_GvRKy}h~`^0(MEUP$giQNoIA zw2(;fyhd<6W>jSR5p8)QX&HH>LkYHKB5EjWqEIsRc(5q0dzabom`BskuLu$ME?$Bl z&`sv^mOj8YDL)?9zX9d4 zO@_B^quCaL$}{&+?+XQYF)?Z7Z8u_#pXwuCGCjQvKUBTF7%c!MgR3#ZVWOnG;zY>b zv6R<>Bh@c|9&Mf!9D`$>V0G($wejjX|EOQ+!9((=v6tt=k-$1s%DE;a3$`Ld=t%c6CO9X3fV!`S{S-Ra(xdtB3 z=*sH@(U8QPjKJ+!U9mdCA`u{bk!bM)^zwo(>%1Z7T+Ckuw!wI7Va3yHk&*6CIo>kA zSY@vgwnvw?Q7R%VE_Ar3AQlzUlIt1I^ItrNiNicGNA=~0il{@u;JnDa(P93pR#8KA zSqG}!cyGIO_;=|1OHO8$rg*sLv3(T9Ow?O@S&I@Lyh(wxb+no@zH529I89;sy=X4aRmU^CVpG42Z(-nRM4 zu(pCHaF~J{ICex6`(6MjA|TR*;*DuVdMhySwH%QR1&0n`=5x%o0dZ33VBy#wmrI)zRMipyacSwM#dig!aamQ-rvS!vKdM${|y}e-l?YiTQIY(PA9otA2L>+gwc3+CG;+Fvu0K4RnVF7}DK=W~2~aiQ1K?H6yh9@(cY1!Wvz zV;X?h)J{Pf4RXQj>~4_ZBisfzxOlFa3!q80xR9qCxn@ z^agTXj}qq^Y2gWdsvm}>>sa&Al{y7unl%?vbe@S7*)J-b!>^@h1zfMam?#sR6UXZp z;CRpSm?10v$0J=RE9Al{-FJpM%U@-Gvs| z!oA=c?Wf8TLFE3#MwuR`!-nlO-&KVShhAREU;u-&#D!KbU1^ zzni{jX|=0--B3$0<$9ko6ucay`(-iay$U~6XeXU=Or3ui&N*^mC?KpG=oSF;Y;O}t z*cXy%i64LS-@Gwht3RmCFlaVIaePx^-UWz3@2>F~lOu}o0ttMyS{~xDUmM-%-K4xI z{l*kMjJd-a+`t^g} z@Pal1J3F+r1m9myE;aG+Dt*1%`ET^rJC~PHyQCNKF|K(6%%0jL{Z5f`LXkwL!|CV4 z2nuJwHU9X4{(Y{%D5!SU5=*}{n0?GMU^Bp|0OpDQF@MkA%^`4FO5>`+wVb2+=D4R! z+Jf77t6G`99mqKdGNZqW0%=MZ3~Nllf<)tv)a-G)d}HVJDnLxFw`gs=Y*+oA6yU`e zp~Nz<*ln4JqK^)=Ch$-iP-alP+aEPAJ{0Wh_6P%4Q&KX!`B~eS3k-b>R$<(&CQ7}W zT;FNt0CUsJz`jKvuYY`^-|)~QJkI$j->TpKH%-p={aXnYHaRGPh7_WXjEsEN5x%@q zZCD_=`1S=!RWgRn_y?4gl#0UFkspQAuB7REgeRZIkJZr z_6;lIHPIRO2)EF6CD9Z?2xr9N00@3uHiGV2s>`cGONLkh{xGnsZ2p@!ZvtxU{q;^g zyuA&OGm8tVw;w=aH&4`tUtogp`Zom9FB(ndXoY#8D;73UcUYr4j@Zi5wO;g+g}uWZ z(OkY7*gI<+Yu^bvlJ{*8J`J)TfH|(}8i8#&hZcLB!l>gYrvbUSd+4MeDJJBmO!r!E zF+;m{u*WQC<8}RG^{NdEi z1=3mQG_W9Pie4&v@%Vs!h@PnX#i4-(Wp54fx=kR&AfM0~iKV{eBND(i@aVaR`2}6( z?}V2=J1*ID20t)BLg;78%2iYj-xYaV!L{lu(UoMe{E_1PL)7RyeG%N1zQS2MjDxsL z&qpERPfcAkCQRJ~WD7pBJUfp-Uok73+LX1t-jb0~=13SfM4!4w4&ZdedG|-n*ogx2 zlkitKP{`=_-uIKj7sLa^LE32;3wEhnhS^U-nOl7OeuSa*f9uqRn4X3ML;Wu686p^kzVENN`_8A(jL4{oO}Smz1I;m|mQMj5La@XP8;~9dAe&w+L)OGl zZSOwV*eHu7>E!--ufzVH)QA6JuhA_%@6D^vJJ~!8gx@Zy9j64r zC_E_9uaW|&5FgFjZhR&^%q4%mvWBcbh{+P&=)fsuH;E zYJ)!>D>ctZRQcZRG(j%nXR)Ld?XWWO>*V<7!x{hKsEd%}=PI{v8-8Ask9t0}m;kW@ z<4jrIAt+tic%E$@Nhf_w7!S1RKx(N*eNO+k&BM(1lm~YYzG&tm`s4iqg;$8|X9g3Y@%1LVb2d|ojE zPtjnnj%ugoAEOg1O`4@O_cZC_P436qeQ}qkz~9&#Y!9@-CVm29@a9|3A~b@|Q987_ z1wf~+OS^*n52%8Ytxd7)x?E1wim{&Y&kqiN zaJ-u@0P;(*fLpSF>P2y&>n_R8m>Fh%klbtHJ7&-+LCBlzeNwWz_`a?S`f_o3E z6R@cK$iskrc0(q;e}90-1Z{?4=r@WCre!DguC6Y`-Bc2!Aq%Tu=#$n@hlI_aT`tEW zJw3EpwP0$@WDA|&Of^}fZpYBbo1V~)+V>=L#F-dy?;qX5w9fy~ zBz`HnCZBoqIf6QEX_qr5!tXs7r9K1u*g*D<6KH6ZoqvO8Gv^EdXNnoUPbhWPsHBFF zV~M64Wj!IZBiBV7S{n>W*M735G}aeyLV}1h!1Y-d|vc*K^U6*5dZd_p%=s_+9GsJO` zCfUs|I!%sU0K1uCB5!ncwlTcu08?VgalkcNR)I;!@$r|&sg!lsa1D9{qM7(jn9Ho{ zEPf}qpIziezzd^e{V6sIw>EhPD6Qe$x`|}&WuFTvZ`Yd=O20+d4soNfO5A33r3z9D zd5CK`WwuVNEFysl`e+D{NEa?kvlBE7LS_b;-9aTDU)P>|ru=rVB^9ln*g9NdGbc9Y z)kjztMiaAl`YZ|sHG2MM9kHQ}l82RKkRHG5rvEHdx*Gy6QY(DS+^fAq z>2uE_(l7>Kt4iL4v`<2~n%FzG-j)mj1r1jy;3jzfE%&+!4Z%pK(!K}an;#dl0vo5Z zg#W#w#EHaK8Jo^OQ@?;_XvG0U;dlWeM#?unmZouRVc}QTLfeDG5vey$8Kk1n!wD0x zu77v?O8_G~b4sGp<=eUj%m#OF&(rpLqUP|c4zfN%ERi{s4nlY06I{h@T=d*!^xv-P0C1ZIqinuIfu0Q@&w}?hSx> zP5=Un$3p_mQqs68Y2w`;w)$#I-%}nFpcPGl(0j8}84C3HYchm$4j#Swa`^an(OKr^ zXvx=umyDRDza2{|OEfnhY?(|bZFYRw0@}3rWNI*l7VP@vuMD6Wad@wpnI7ryCk-0S z#w{5ih&VZ_>lbIt!dzizPA@o<8abEpCpN#$K$f4vi*0BI%Koh!-pFP$Q%-L@MB0g)@6lt#C0c|>#Lnjhbigoa*!-x1QZkBGL1jBK$xy8QKRG1{d|$*2GVND>$vq(3D`D9Fs9kEybgegQWQ~ zRvrIv;@raPX zO%kTA!uzHyUiddW%WAP5m2|%T2$2 zk*oFVB5|@}+09kD1a`nZG}j|WZBdH{AD~^(ItVRLw%RyE|6QPHne&$be{&8-;n*GK zyAA`3$NM_)FHv66v@Fmg(`pk zuHd94vOiT~(O`mW*SGsCvk&K9_VcCReO|Bwi3)ZxD#RO^i!Y5d$O2p$DH(|1N>c8k&c0b>BHn;*_Rv_e;8*>-H@^-vSbu zDn*4SDhKXJDr)M6XoEgB$nmis9isMILJ76H&I+*A7SG`_X7@LnKfZ-47;F#A zC6hlDcHctyDs%7t^ zS8u}m8Pz`s3>SmlYQ}T>Sl2fHJ7@agWYkZw1_EH zbCDOB=4AQQ8ZPaePhE(~qMYXo~F-ZGkSsdv+Of#g4A0i^)kbX5$X`k$e+VZQTo zg5fTp1tCZ(6GKvOS7XV&88(`GzHnE={R^{^`H)Ep%5n^lzmds>#z3gano zD0e9juGr!_Usy}kAn(vG(||=0+-VtPMapBmA=J~6n)td1`hmYTtIEtyA)S81I0sE~+DCx7IAeTukKTl-5MCh&>m)8HazP{if}0A8F@rJjx$DL9!Q zHTCk|w4%V|KQw-4v@y~_i{M~_J^+2;O%&H!45k|@=6a_fzw5J(+fkT`(x?mt^3@}5 zf)OOrt_Z?%B1+@-Rd++O`G&Se4weCJQv}R`_n+gzd=KkT*o_6Zeb>*`=XQnN9(QCe z*_-9KVU_Qpvalwa=~KhzDJT3s@REJN^?Lf=@YP~P@qsj!Qhd;v*<1FFf?kA$ClNh zNV&gGmCLk4=@qg*(5{e=RDRy-@;ww@-Efn^4KHrWvP%wI^(FR!>jiM5pio88udIZF zZe?^B!T&dotip~ixkFmy1b9mmJ=x8!I?Cyp{?Z2aJX9yqF$W8=8c`+$WBAQ-rjq+l zcFAJo5PsSau6Md7+go_cpcdYwyom3|J1-xUl#|DDn}R-oLP1`iBqihSX%`xAS?W5+ zErRKlBko4S5nA(Frp9fq)X#L~%UWKv%I#bcTgr+E#!cIIQ`V2Jm2Y#N0KqwPA)cfn zq|B#oN_+hrPVALuGo7_%bG$R+{eGdKH;gb+d4uhjXbYL~20uHLEA0vWco}Q2Ey$vKk{HOu_ zNnOP!vAdIWZDi<$@>w#y0q^*z&VV=E1!8F{j^9NJy!p#g`P~xc{J*xGwSErcw(ofG z%npt8G%Es#FysRjJ{e6nr8VW}QE-)9s&reh>Nn_F|XQ zLOB`FsDG=AQ+&YY+_&3=P&1pgmyjcg2TK!rY}Ln`$;|vHMXTu^@1CpL zbk{zVxrOR^)SNl@Jz*= zuX?%Pf|-u#?c29?V3yu-E@bo=qU3Uyp4(SBwhW58J>XgbQ2ClPE|~GyCee`hpp-Q- z^XMz%?e`TEp|$8v7geNKYI1L2+v|9w-W62tk-F~GXIX49)P<9h4FT!DkDGMso**H* zoNUkEisMU=TqnSTNd!QWTXOJ2M zDG(PWnyB{odpk=X`1nZm-wyb8v3`)&xHPG*IK$RSGIT#i|Tfg(Z+%@|L4t#6N1dSD`OVXP62fkqD+ zDSF#_TBs+W9G~SJbUxkHW7e(FGNu&VpZNTFb9&v8i~XUEi8rv+a~l@NM`nMG?EHOb zP*8QJS8`%K;0iY383pSzg=?@_D7zR#P3sMI(WU1!vC!B@_RTdLhlDIKUY?u* z5R*p+GX?M}ot^f*?c7vx3fdL-1LuT$pQ{#9Jdvv=BHtjwO?3zr^>nW|9^h91WM9_U zHv!X`W>W_Z2h4ZF+^$#mUiaYs`X)SDH_2D%-}d+)04=RIuL*^KerD-yC*!~eVa9(6|C@K@~W|@O=H`BRzJM81kj7ikU$Gm38 zR6Oat`1be>FiA5`Y=p!L0faCV42-JL4ii%oehoy_8+?9!!}00hzw20#;HV=gHpFJ4 zVj~%&fi@FTZ&jKXD8FTHORB!Q{=c;6?=Ah|qnAj92e(UT`WmKLd?GRuIL&EIu#awBa zA&(f2fu!~$?ax3nneGgdp7>Sj(dmp_{zR5Mxk#u9n!h`l%zK;t+BV_mbU*b9jt?YA znlw=E1q=}yAE)k0h=rzt!TicYSHq#`HVsJX`W8QnJyH$tV8s^{<+CEGF51rX(A4?3 z_>{ew-Z}b<$UfFT3*F`li$pQ#9qZ1QU#?=5wrUSNE;n<~A$8B!6ZiT(sx>A zCzX?@R>ybRQm;?tG3MuufsL_askE<{@uEiP@{|)2W>|>|pH2DC3QKFuuPLo&mEmK+s`6>2b3d*?-;P}DCFc6Qz3S&PC0ExFz+ohQwS zVxU<^9B{k{UY3BxFEz7UiGDNv3&hBomR6!3TUp|nDsgy~e%flI>K(zL(J<+PlUyqf1oNLVpzv!7R zJF*`mpSncoIKVe?oVd}dz9*8j0tKwRUOx~9`%ho*9x3^2Ryw!E-VU@mhbZc{v`X{G z@r0q((f3UUgqyCmE0dHlkU%}2y(9=I=19N;S(8rao%}qx%+G-(d{*q3y-zK0I{)tB ztm=H}>arM!UZoFdkNgqm-ht2lCl+LlD9PyYW!+$y%2f9xKGkI0uudd>u^BZa!&C)d z6wc>!fi!U}G8IpIF?;Az&H-4GaX5y3C*JR;C$k|=I5A;Mdd=e1S z6Zp7gt1o_*Y6B)g`o4iP^5H=_e}K1{=hEra=6RUh^$Eea@)(XLX4sLlCJ3hJw*Tbe zY`o_!8dtQt>ZH6GpWT3mmI3c$@-B~Wj~3pUkSXziF{GB}QUpa=8hX61{ymW}Zrfi`vXG#ExWw>yOHM5EQ0wyax%7hj$PGsJ5RZDj>?%mZ%cUe}(5Dyuw z$Gmar_s&liKSt`KomL5cWf`3hP3pWTdWQSc*O5l5Rj7{kn==IU>2mN4fYLjMO8a%2#;b<(W zgGZ7xGIny#CEdoe7sB1t@DzA|8ZFqok(~eT=ekpDbjA%{wzAlG_1JO-F0S9d7bQN? zncN`L4u62emS3#wOZ@u}t4oKuIymR)x(H;9*XQ;e5o!b`oSqZq)zo~rBhOPfcIUh= z-U;BXxFV7Fr#z$H$jBLr7W{K&iC*ia*JCV3xJ~%JJ|jL?rMgbT?wIi>lmL&}yqW-$ zo`GPqjyNAaInIU(wSnt_h=qbgNqeW1v&wM*SoXAa;W5AMxVEcw@d7!>`KO00F)$hE zb()-9Pn))60?~@%4A6LoN{6!%ueFL#-CSgGW5g-hA#GQZn~fK7#NUx6i&EJpi|5$m zO&DVE>!a~M;cQsVT7cIQ#iPHw(7Y2_d}&y(XE7D><56}j)c8pwgQ;%NgCI`Ke@=h= zi$X$HH1){($acCg=XwQ0y0G(q;gRhkM)VLeUWN|(!KeOTA(zSBgl9be`d7YbKxE&k zXbv3y&}VV$ucB|XFy=`^(@6hX1PvuQz2?+mkfXhIH+PFo`I_qiqbxx*@cjD#d7mZgu|yeR_G!*FWG%aE&q<#t8s z(V9+zx%wk5KLJ;^BjA6fRk)pawAK7~RyL}sOQeR?bF*KaZY=+mXsFWQ9Z`wyG^U)% zTQ&B3aX;CQfT?>mt6=g;D2OorX9@G)j}Hqrk@qg*7^UR$ zwgP8ne4uI*@Q9KxCM+y!@5t4V=Mh7%02Kph4DJzYq~ySH>Z;fG+5cW)9R94f1OZ7X zNZ6kqSAF)OZQpc^ZK|@?Z$g>hlG;L;{s;(uNSEnDy4EFMG;+hDXKNRqPfpV)n302~ zjEc1IWHp&yXgjoR5mof`3kDSC79^#3KvtyjuPSohb*5MsRNTZ}GaH6BhUhb%cs-`% z^I@k@6{HdRfkRK~eggPBa8=D@O_H!uMc}lDki?~Zbm~VR$+ej1{Pn9bnv%>bOX$ZL zoiv0J2mHvoGpJJaF$sqKOE-j?L5wg-7d?5q`H&1*B}6Rkyp)*C?v)}3*kj4DB@Q7v zqZ3d5V4|*E|47-NPxd|x5XN!F-r+m2t^P2k^`zna+Bj6KpR8CMx9iE;NX0O;iz>~81q}&Q z7NrW|8btV|Ae94OJ#pf=L|3YPNe^mdT>0+7wN=t&%pT|wS0O`TOg8Uoevj?6Fzmfji}X`uu|q6c zLr?GiMTkd|=WX32RVJ)=?9H+!L1~C{ZXw~;lI?<2_k7d-P$IvSvlvpHG;8hIcs4gw zoIdy__2epIe<7a~$qdW8Yrw_p+C0H}HfAf46EbfdB^Ldkg?oqtX5XCwIm6)UeeKper`k8GKY^>Y_&5{fzpn3>0T84ba;`cS zTVG9O*_02gO>}uD@#fmrdW$g+8k|9%NW*(U+(dfRP~AOMTun(Vce0S4l4YwJ38)o> zJ(7EC1f|;N-hdUP!>^TqG)yimIVUOJh~l$j28~nvKVJq%F+!`%Y*ZxA_70PH9K?SL z?OK0yoib7Bhrme~%O=5wWQ<21AdP*sOQOp0%q9ATc*PNPTg+O#4vXdAEXrPO{e9za z-(KY^V?8*L$1i>i))}gJSC>wHBp?n3jt!CmRyv*5%ZiO<<@&p@rKj(t}mm`9x-m)>ebBGw8oHfad-;=&*hD(R5i^()s%#yDV_I#Hhpbp zG(MGEub3*~^fYiqfX6&ZQA=x9tZ%gm6f0Q>OHc6};n9HIQt{8B_Wt}cSYGq<;^NEM z&`G`gS4)D=S1PPNzj~DCJox$-2EDC%H+Any(D;Ehn}8YHIPCVfTZ^UOy-;k+*_r&$ zyOMaM=hma~@SyO_&=uSU4iKY85527F9xKaIj@ChR(LtQ|p^h+WsZ8C$kYjld>r4<_<&hN(a@q~vk{6dAezMj-e1Y_F)|BPagXba&yniRa#b0lDWSR^ijfCrI5fix%l%4RjL-gQ+AVl^3uSZz}`-h9cLggbGa|MP4@gGwx`fP41B1ZS;7A8yPNY@<~MEo~*+z@(% z=lhAvS18LSulJ_4OM}^K*wbBT2Lr2{rrNq3HL{QaU zD2)+2pgrrPq2m-e8&w-TW#H_Gj6|?Vb9IOuOMS3DyaS- zWN!_BD2ZUofP!XY(AKNuW%u_0HbU|#j>-n@h{ny(n6*vWnX&GH+ss)(GW1`t3~p?4 zcW8MtzqB#p9fT+(E^4VhcsC_+g-Imsr=)SVzwRjQtg#=M4#ulhP1>S7IbcUnGp3jz zhFjRlqRjE}>e~gF&!69%6nV^@9M}JBvkG3fS!#AaOO5=?{k^?wm3zK|hU{zS7ZeHL ze4s7k_ZG$%dM<$1HZC%BcT%=q)xPyOlQ^=Uug>c5%dF6LA>fqMEEsLTLcDdpmZw*Y zs4!59i(bdo41-G%V4pgK^)mM+GvKlFuAoz{&{w; z^Nu_L(9jU!iq7WAc+zl>TjVux-T-O0pm#IIf1nQSeLl)N`SHgfTJNj&8)o&~gcDL6 zE?%KQLx>d|as%(ew(g;_kWq{eq`YCPQ#l9 zsmXc`LgYvRrsi1!JVuYOs5?OKX`F+xVOc8Ra>Ucpm7D7kU!=5b|^=1e6cAOEiJ)4U!L^pVZ*p#qWNPZD` z&-3W{8&-OlH&;SafN6&|T0r?iP6{T*Y$QmNCQC3`tq{5HUD?2RSzr|_o!5_mL*Nl0 zFQRh;GN7PN4=MUFkM34;$L`H@;fCo+NM*iLHc-Y^ho^4ul^}vu&T^eX@qD6SuDBb!E zRg;RLRJRggFDOzdQ20xu>pZO?%sfq6u^H+aSMG&}Hl+ml;CkM*P%gE-`M5t=H4dRM zg*D%8OeB8$Kzvs?J@7&0P4t9&kz^Vg6EK zmbW0W<3DqW6z$hsG+PXVK8pm;yd|_-uIzFa9@4a|d69+_1?0RU)N-xEWOT5^WV1q) zUQG_sima81pZX~IPS;rr{96vaGMlOJM4>M*U_8aLG?Dp;)MGlBl@+1WxncGcz)ED5 zsMcdBd*=Od`V{d95uOAI)4$Dxofuz;wF;H1&zs*6Okf4W=eUyHB)`92>j;1H$+`{! zq{03GSTs5pSb7S#W2E<_0LjcEasiWN;0#*e`)QTx)inlB@_AP_H&IKE$+&M#1OD)M z$^2u?$p?~}ipN|Ztv8fEtsoU)2OdwI_(?|Q1U3k^I^R+Z0HpMqeD~93L>Qcn@dR1@# zo1CpeHDa_7N-Gf;H&fR`%w5UZ*sLjvy}=s<>K|DO2sB+tiW815R-Nx8mh1a_I>}Dj zBQqR!8%M_p2&R*nBOs?gF0K0^T;IZecSc^b-nrd)QEvSQ>!U}Q9m(f~y$e@?w}k9x zpz*q&{`5CN!kr2T)2_Q?;}$oVQm3RI?M)S)*KHYUg)(gN_Rl)|nwRA)5eE z`aBFi^Spr$m0WaKHsMV8g{ciCy2{{UcxK;(RDNmv+tp^$ssU?ZhHss{(L*LaSu2qE zg#>AveF+vceZ!A$#ZqE-`5xTZyI)Bg9>M7TN4VEG!Ni|Ve4>!D$n%Y1<$P_Fm`jj0 zQ_l5)=#rX$r(|JS|lgOO5{bi?WbNxc?gT`iHpP}6Es6G zsXi^D&1B!S?px_73z_QQO1!s!i=OP<@E+^lhX+NlM{5ZAITbCCy#TI3?V6Qucs!(s z*C`<)0mBc!Nq2s|-PhtQa^B&@1g%ssRx+#mpc z(tVQrshWgZSyRw&xpb$p-TGj3m|SOLFt#_pZ6sQHQ}IX12RB)-ad+-MX9u`3duc%c zCI9Y_NL{u>u309Q^<3wSX3mL*a-F^S7$HS7Zs418xvm1yJ-tm1%8M>UM_28?E&E;O z!%f^~_tcZb`y%&x10w=nw>`HJ&zCKDD-hRHc|M9#Ry-!(q+>sM#UqnU?{hqpEO^UBrgTE<;%v6u_Hnde?QaGpaucDFu^7xF z*rQpeCF6fm4>niqKIfJ0=l=Q6P(>yymY&(HO`x5;=myyOg`Ss)6Z(NUYChlPqk@IB zZvNfdu4*sqonbc^y0)L8l$M9NKlk7H#w1@Ubf-vh-Pwzi`y+aoe^f-!=%eG*?{6bM zK3w%rem=hrstTy@m}r}V2&qOz`1~3?I{i`LPK%46U^ zzy)WAObezT-5>lDYpEiWiQy_zHQsZnA zj?*D+?Nq*0-=QjnflAiVCv(TImNt6!!Q8(7FeCw9vaxXo_;7Lla?ehG5F{Y~2@@whbHRQB4U(Mnv9?VytiZej|vuswIL>NUD zP4UrewVWpvu`po@o7Sh|8W|7}M(!8gWIR8Tu9s^N3|ZGEB*IAQr4%gJTk{ne5_Z&i zgbULneBysLlJf&WPLiE|T7z0&cb-kC=918E^9n=!dggzDg9hg09QbC;MVmAZAD1PF zSesi@yof?~2~RCCEa?4&2KejL;E21wDXFQ~BZ` z=P~j&CJ45f=<|V$PhWCvgknw*%SLs`U^Cqmv>*~m+QOiX+>d+Z zeR26Q$I+h_vb`J_aW;@4t3I!K?VDsbLY9M1BGFkGWSrVjLbKR>ib-3rXSuC zOcVNLX^MW~E^}qEG3l}-8%vWKzOIKp0y$$@>ucBo)2t%zo4@5e1vY+z(4)2146gUo z`i#^j#~%Z0DGvd$;7YaVLR1rn%om=u-6Js@P4hzrA^l^F@=M3xRQG?07$XtS9Kblz z)+{h?_s)kXG%smx8v?>CK_VLv-*99E2{pCBLDR(JKgWLaJ*XFNJeG7>-m+d5BZ&n! za!h2RH>6<00BL5t@j&xorQpJ5*oE2@x6se$v6014P2r#E zg^QH72Q~2FdAPSV=p%v}{Uga)N+iylo0yeGg+3SzLC5i^W+#gjqwit)J|OZ6r3S7= zxhvI9GuLqKh0>4$FT3nykzYR&LWJbMfo+eR4i1h#Bl0oP)7&iv3L4MJ`J$OQ*0LnJ zZ`jU)qJrmwSEeYa;JC%GpC~_54kQF*-+BL;O0M%$SR5^1%uxAWB#&>3Isp3hdp_$I z;Og3O`|tT*vpBAup9|qw7-R~(Z<;8K+~OxY;PUzw@;XN$Ry9Jv#pORP2ldaciu^16 z5(!(aM-_PNa3LZXE!AM(RZ-@??8Kkm<~O*KS4Sm`g`xk zh=L?n#U{aHWA6Wk-o*HR8hoC>TthMW!E{z2cn+wL%y&Kl{EmQ45XmQ$Fg^J9WMMv> z9M;59DdWH&Q$`UP0wpb?5faLb100XA|NfCpn@(K%^WqgM8wKs)xwc86990>f(2ALd zMGLRBHgSX?`us?7E1_?3?!;GPlPSR}C>c&%AoDGy^Kmf*t52-&e+Nu9QI~Sh{*s(M zGVh_W6it!n+wpAoD9SW15V^rvUr05w4|$H(o=&=qdxLqN>r`dRvd7PzoK1<`dSX== z0H}=JkW5KsA0@^Fm++0gd3@I?c+FWI6oZ#A{R)!t-UH-SKUgA(o*W!l@jgA0r?-bG z>ETN)2t4L3MCbCysydnJjhse`zX;)hVb>f64}cJ-Imqj;dm$#7(2*s!GiI2jhSTHO z2Rhl@N`Ou}&EdU4vwxXd(b%E_zl%Pel4lI{qd|^-QM>>Zt?9=S7M0KoqT#>boZs5v zmqbJVe-qjKy2XzvK+(nh;JcEE6qj;4IJ|WqLUy>Nl0ior_y8Ug+E3IP6|4WCfmdS{ z@3u(_z0{+(28)AYkSk6z<8Gqw5cavE6a?lJ?dWTfk%%gtlneS4c%6)VRS5-I1senb zfnY!90@MPe>hgQ|LeV@qQrIqrf-idS?(Cr=mQasI(pBf{4oH_P-G6!~>V{lUSqZL_ z>RFFXyt60`=`4}heo2JiHSp}+Fb_0@4y^5XEB8Q-A?Y0k7eBo(OW zg3D`ZOW`2%*-iKc>rufxIx>5Yo7f?x7CmiMxI}a0p~(~ZRb#Xjm;b2xE@^8!H*9NN z0&ng73H$lkb)=;>O8qfk6j|jt7y9qEe}X%CB98Ho=4==B&@%K0>$IVH+FP|{mhk3h zvg9%Fd3-@xI1-J5kts(+c@noTnwKysuoW>@vZE!k$>{H@=?X}goIYqlBx_&E_A+E| z)zv2TN*bldyt?$*M^^SUTbDBSyGx;r=IbMauCEXO^lRYo!_l%dO|)K_#*NGy%xfQQ z!!0`g2prtmyn7b=1{j-9e^j1PKd@x(42#CAJ4`;8#2l@J{o4l6dypH44 znU*v`y6dYe4%Tqxk6Vo!JaJLvg9&V!PbE|0f^9%45!da^$=7;ricv5ob@n}^z++8= zd4^u!_bVvKGX772yVsGS9^$Q4cJr)ck{d&DJBaPn?L|V{&6duNTo%p8L2?`njKL6i z^!LQR*}ni4p@mvDJhqRb+NXi-K=?y$G9`*29Q9&S{RLlCI<&4WPr5&AiM9&SMZ@!K zhqOq~-jsUU(kVkceyd0ZfJvFh!lR^dYA~|`Q`jl)M;KoW5x2W=E%JTWpYF?wBv;o# zo^i}y%J67r^vm8H;BX=7BM%vAnpdVTgL$T_S22~j{2{XD16qxVlI-8ePaCTH<_rQq zK5F6h55M_qjjrT&zFI?E{|27t!fy4od{Dy^bcJXrOc!t4-8ZeltGiBh)6>4Oe3fl* zv#ok2`*U6f`Un?fxDvhyK67Pj=Yqjp_=iOOV)2GL6*SLBN&6_>lCQ8pgtYcAQECAN zJ@nc;V1Rr}xe$4GjI>t1RVX4}T9Mb8@)&GiMwOO;0n`fr7U@ zxaxI%c*T(LW!=LjI$9&)LBrYEwZG%P2X7Jqg2N(he0}ozl!fBW0z?M)Hs*T2(xGvaFW8x3+c>y(E6HG+~ba1-|R>o7e7T4<7#$!Uhrb2PG=#3xDOJ8`;s)Ot?es zkgyX;+QAY|Pp zMyQcIfHJXOhF5j8s&S409Ll~hF|)XTP&!Txeff|-q`&j90ZWR+o7hJtM_qr(3yuTf zo<0>4Rxf8)Qd5$_^`9LsIC{|!=*Yp32Hwm=%qg8isMi#=RT$O^x_2=8(G8|UaiZVI ziX0||l=GZRZZQL$48J1uqSn1!J;KnNF?VS5pF@035(;nA++F}n@O78Bz*7yKX`UTD z)q>BaA3foZDMr!116bWA#Dx;@YN(Shb_B_U$vWYlx^^bLr|lzq4%e(#9;U%lDQnjA znDd>uF=ZHH;k8dJ^5oq1SdnHe^)FoFEa>p-+9_i@VJv$t~>77 z8FswA;EG5(7yc0!7A`C#^sJjOVV1tk^CPe?ixc-H`2^yE#K^Kyw&~!*zqEAiV5Um8 z|2>m^|9uQ7+0M6q!>h-MlnqE}m5f1Mt*V)Bn5%vQC1)>Dhz8$~xp?YHfnU#h-gEIW zWS0U(4574TaI>4b9?Jtt)*Na0Td2=f72k>VLdf|U<9GC4oGZvlnD*Zrj1YOk9jUcu zQk^U?>ZVwUbfdqibGnj;E0^Z(r!tz1<7JS~(1HtH;GW*h1I7Ax^v|B6QX6ts|3Q=X z0|QR`PS>G`Wb|~>r%$1LTT8ze)vP5yL66JMK#mfs;rR=MluoeXJ+vk%^wJ?__2p;1 z{wH6CPvK~vc-0u2q%$ECg;y+QD!C$5{PzRw*s>&r(|`A^?M z?=+`|0u)J%!MlsT@a`(`mN2ziNcYi91Go1TnIHsy;*8i5O%ZFSt7{hsQLW7CeMZCW2o_9AC4mK%s0E{ zq^B$%F0jzx93p@5!CO2C{!EE-+{yIxRXO3U&OC{l{_^U^=npp|3QH#s+Lbz45@#r_ z+v!`Baa3o2bl*KJ`uPs6%dwO&?hpFNp|gk@jaRLNqB!DFqm0hu;G#HZceTZj$2ju` zUugJ>$RqIG`0Xgrd5lIoACG=+GKE1USVN~8V_A3rfC%0v>o4>Ucdc>-qU-MQzNop& zxF2Ws22Q*4_B?GzR9$QiDPcA4=5gym`_s9kl_EtXY}D4~?U&RC4X+h!c#xi)@-}cX zcAhIHm_QyY^2qY&M<4uxf<`Rs*d${A+fwec5XH%%ipzh0NxzmBvSR+_wU8Y;@we7} zDszbQmo$_Gq1GZ<2_hOzs_9o_maD>+B^6Ykq`6`AaLXZQ_c;jPQsc($=Bu1xbG_;7 zLvg~o6#18akV{Ygp#XzBGxk&dCUWF`fU+%_J}k=ZC7L$cCTU@i27=9!;hzNw!WQVN zvJVon_W&QN+4 z?woObWJ>rOR0$#Qc%S}ybpd-%_VdnSdsc+N#Xbk>AJg5}47tWUOBo8Kgd#UD%2@a` zmC?XITY%U(G~*0so5{4-OeMXpak0^QQn9}>$yUVsEl>I zM8pNT9LB_8`4#fJxrfK*$**TRy1K&_<$sP#**HW^j*hu@FNv|@13vuh%*2d6~c?B%c>0Xpx?ta&Sm5m&X%^vL$qmTw2R_By@OA$MFd|u8u-GAzfSle@@cZ=R| zOn){lUnr}mij1QP>rcyn!+r48rr4k^vWuP<4vh* zNz_!n7sY}<;w-oj0=vSOO-^-ug=9zp3qyL!L`{KB@%O$6nDes58sX?tZmK19ZJDH; z59O+bJG?v1<%U_Yl5+fwtWR#zl&hZQicx?T!b+4M`moRkc^{q32+S;Xt#5GgBGVcg zn3+{4GgFUnjG7PNRWNU(SmEI&eK+f#?}=JnJVWB5Y<@dxQvLWYU&U@eR`QoQ-1&Cea)Yp^!cj%<#H)Q_Ry5AE&!qC=!;pEkh=LAx5sj?) z^i5>aF_13SHTRZZ`iTvHY>jRog0wpAJG9FDVx|y;X7XtWuJ1xSPtIqW-{$!I;bdq2 z{=Q4CF+3hbQxdDZ&ya;828`b5 zW{gIpJ2yhQJ47i-MG=sOFioWOKKC6G z@v1P)9S(j93n(dvj^n59X<^UCrfrqe?tk7|2h(MTNm#t;aS1qcqxCC^DXxZlKlJgq zzvZbR`^}DglhI5tANGYIb~u8@qAY+vz-!e;GP9uDs(ZNj2;&xRpKeDU54G*B|~q z;-Fh_B$)FA12vhUx$voO&Q#W(`knF{X3YAmdZ2-+crsGq0wgA=-5H46$dH1@$C zjn0?M!OB{Iw)wWn`|*VMq~0c#1TFP5vPeFlWamjCt^1#FIIfsH>aYe>0*0;e=cTw> zXPZ?J)!^q+NZ8E9R9f5;CwWN?j~XdR5QSM<{e~#AY9`yH%bo*}(MGom1$edtO7Rfe zN{PpQ*X$5*$J}7@l%pO5Ty{eW*zGSOjE)zQDo*XDJd0G_Ks}f=bW}WpELN3D*p1#BMQ3hX96<@Q@yaoES#v|^`<8uxH13spt2}@sW^Kf z6`bcD@gJr-y!Q9BBEdb0n(dl3Uezj(9{h~s1+oM=`k}c1dkO( zi(2fU0I(V&(mS(E83-R@_&kCQ4Uw?mHRZJ~4`ZPkKGaf51Ar60m*~I(F-IvWDX&(4 zu~jHI;#r-A>VRmT@Zq9Yx9cB`Dpgd`FON|O&hU$3wj^qh6RZ1>{sLvQ@J-zqCX{1X z@V_|q0t5yBQ$ia+UXa--YT3#9w!nt`{lgO{pgiHMu=-@ouP>FaAB*078}kp)e9iI- z5penNK7<<{pZA0AzI3iMvX!3w0~}pmHy^kecIli@XuQoZma(DE0!P%52*Cj``EOKb0F`Ht znm3J1qDU>$;q^U2(UX2OfM^2cCqk&+uu~rtVmVz-ZdCfc*+F5+kHsHBS^Mp;PB@rn zNv~k#z>xEAcwbwAQMcSo+v$JniYth;Kg7YOL9DoBFVZo*?(gwlFYF88iOyDc?k-^K z)dTLd30H4>V0DOI2yBIR1!6Sc6z>W)zq<&zdR%jgV6gDN$m}B`B-Aia}9$nr`JErK0Z&)6#cA$|8UzAsRK*>^O4+SXk9vdAn&pnQX$b3GHqC z>9RxW?HcBBVj*mjA;4hdB{FsYpUVnMNo=<*2Wdo%vB2CF@e=K0PxndH#>p8USq`a5 zsH2IU|3KyS$uB~-$Xv`L<%92G9e0~X&tpmQRmCF$*0%72>D@zn`W|Hz-|lPT40Kgn0qZcqT|OHld-nXcX(ATay3q zuYK+))s9B0tlFZDIJnqy z{)NdxY#UPGEu9NA_am~AWVb_&tXwH=z!BUFjIhVsAk(hfyzk#TT2IW{ptKz>YLmc4 zZhmW0N}Ca*Qb#hKNy5Om%RIu=eWO7ErT)R5IC=@E+so?+D#GZEX*)XR{-)86z$k1;!k446C~nsXL`{4GTzZpaj<3a;9=O)1dgf zfD}vj>FU68N7+=rL0RIV+p6q&kC{pnET;E?bt8{qu z_bMy6@7Iixkx1QVV!-F{?UTz75x>WLBJMu(i?h2&BO;ES*zF?;g?ik8<-G zXiK@?HyIq988U=ScDg5PJR00W1*n{LD_9M0lkL^s9v^OPxlr+p7^ty8zV~%LNzCMS zepLI(k-8%@(CyD3OU)Fp_ zfm5LR&6g&8R~J`TS0sT7g~5L#CM=FGN9{#hUcCIA;bpaVU!uz4LmMz6z9_h5WiUkj z%6l!A7;IjzUcZJ4pQ~B#_H^ytH?raY*X%6)UVht#{CJF*ZUL%3eETrRCEPkPMdeoQ zy#z9)`LOa@0=aY1_BXp@h}!PQ3o7N?t3*kp!H+jPvTI{z9PZ@~>k*?bpEbJKm29$o z0XE1d`h2k5&4V)W-h5)JOF+Y1pS_#>Z1VO(10W9!0y*YLl58HRzBsCHn}|ZVO}v$F zCk8%5%`X`5zdzcYUGnn6y;b;k{O!xxpO-w?c#>Z0n?BLQ##w6kuU|>lig4o-Os-Cm zzUcI*uB)i!0d?z(Cs&3JoWm~SF2RN;DN%LWnP{V~$-g>q4K5XB6X97`d@v%BO)lzufIQC=zO|nh&HcWMf^~-kWg#fL4pBjv zu(@f<8I0QvvRtT~(V#u~(G9TDz%{C-d{STMep3Hmp{m_50PW)i42pE&cxN=abW^EePZu;o#YNc8}>X#)Uk2VV7oqPEMoOfqi z&Hu-B8Fbs+8>V9bD*3NyJwkGOeljM;enKAiIEUxJrl)EPbz;TlX)yS ziHnH`XmWk-EVMB|{#s9u9RKT;e|dHC%M6<>yzY-rmY@)ig0AJYFbyWuGYE>_+cH%b z>ep@%uR1vfXUT9mmGEZ{U>ej$+~&t}`Kiw5{#4AcS?CDiO3sr9?Iy$ct7=x$Qrf&g z`Y9JESOPdjC=X;8+56Xpl}N{J_ZpDW{hK(($IMT-9158UunG~GnvS`2&z-9hm5d|) z4kj~x&dA|Uj!RpBxJmIDIHf_XN~5H^LEs zS82IMxI|5Zm)5&9l!ZQM#x_Y#v7|Bv&pzqVk}p;a%bw3g+VThQ{D_kc0`OkiPp~}@ zH-Hfc2vS#2B185!c_0am_fcCY-y0mp`@cM9;IQ*k>9zp`ZbL4PmMagIKv7mk0<7`0sZ+K`cE5ay zq6dfqV~kkd8O4Hkr$Nl9VSJ-(+IMI7!MXTbR?Uw)Kb8=m{S`ZLV0}Zh(JPv3@*NEf z%cElscX@2p3~XNr4gvU~g?P88AxJ!z92Y+7U92lbYr^0TF6QfP*d{a>d~BI}*Qgc* z%yU?}qXD0cXI3&!q7juz2#}#JF|6>#PL&?1TsXa)`79A|Gu&xX+7P#50fakRF}tn| zoTPNVK8S8x=D(QOU8&`Cbt!SCHYX0C%H(^Q0)G<*9(-N)T%ap`k_Y=1J)d&@fJ!bG|bqoEiDanzirR4EJt0VCG{Dn zy`W8!X3PG}`@P5J^r-*xed}AM^VbSU!sd~kCatmP@-S)ulYXGDt_%kSve8XA?0 zTCE_Hm#R+(6k)Z{$P`h>JlY(q|OpdcaiSF?AH{I4hEy&LlSSpu!L^ z`a{y<+vcm^BLxR02+LtO7Gd?oyMhq4VAZ6MPn~s)fRA;1zK3u4Qi3t-*BTgtyC>&0)w@V%5S)6dbRyl1o-%6SCY|a+kf=~q zX_)iFYXAgtl5viB3kCu2I~;)&!Zb~+iDM0m9QutHzWoThuC(V&7tiI#_KC77p7lmp zGwZ0u&Fq{Y>YM>t>@hYb90DO?`Zn$cwb1y0Icp}ppJc9W{0}r(ezQ;z=Ye|nf(i#p zEui3s&FDH)o8Fw8{5|29Tvbwce^amb_3mz8Y@X7P`W?@1Oka|p z$V$n*#>7-7R?df__sCs0EAZx6*dNk{$Bg%QRskGc%nfF1MrhdGo#Yf{2?ub&k4 zC3VGy^YOPb)%+Y(VwwDMZS)m1LRd`qps&G0u9n-J^}~B-r5}><6P5bFQy;{?be)6( zb>JM`EBPtVQw@*=ZM53$ji+;89!w!C{1pym`|!i!pBGE-{QX3jQ6eu$sZVt4e;Qi= zBLPla;&Mcd$;(C|%vRxLwR~OuqnVQGK+37vEq>frFpQ+FhC8j`esj{#S@{pyjEwKam!MCyVQV{UJtUv0f*Y^bdd%Dm-`Rjr z-9JgU3SXZi7b4`(ZW>k1AQk4#8B@+BV)J%-pd-oRgm3&~4jkG93%Ocm2O2=lyjm~< z2^>w4GRR+sqsXAB`BTEdKn$`00lE9L4skHhII`5h=o8zF4u!z(Lr;vz`a&TO@`!?8 z%JHVJPe_2x-M|u8p`otY7zy!BKAus~92|(mP>~<0Q#Us@HhC=A{Cf4h2_b=`ZyJWi zZ#s=DDEzMQqf~cdf9rvMY`NUH44!|&d{eBu2=ev#6(up%C@&-wo@-WUl~}=1S#f+3Swy}!moIsXpRzfCJ5tonE?$TM-EX&mm?l3mIBKHk5zI%z z|B&p#-U~@UbWb1zcfc7(p7{JH2cFAvYy_ziKFIDAq^lK)~~oPsinSC>L_ItiR52pwjH4I3qJ z2vBUc-Eb51BQIMEvT%~fph0PvamxAvPQtaG3q?bbCeFpqW5fgOp$!6|kbGMB*dz%4 z+$D;vKN+k6+8$1-*iwSZ6A*4GV|7=j6~_b|e!l=svl}qP)xE^AJyknEdy3E+e3@3O z>`Ru9@(mpV_xGn}F`?>Q>@csgVsBs0$E$iTBW{#O)kWXhC`8)Z2c} z_smfYI_1As!%?g_p`e}Xa;Wkv~@x>4~~X#jdJ>Pu`#q&*?NljLpQ?x`T`nN^)*hSWFw(;MkG{7-2-z}dK7$b zFH9}Um(F%&kg$HILN$Gw!#$KEe)Y{U!b}ioa44CV>aul8?nJ#suvGyXr$9GsKx>Xi zC_C?Bx4`|m&T!jW=_8QmXK+}nW&so>V^0u%HRr1%OTcySAEhd1JYWNPs80jJ1p!T5 z9_aF<)t~M%nV*9)NQIJ)%YPW2=@!veB5I9WFv4vu1pmRvPKSs8g3qWl^4WJ5fqK~=xiQ4!-@QEx&gjBi z2`yHR;z=G%eJB8)yO12{phTA?;TNGzf3X?9LY;inTlC!8jtdXl{xJzv5)f@$`lw+> zaGVi2Bx;KZBrHZSgSRQ!qlCpRVqZxdIhj!Zab!ip#$R)!A%GBbAS(Rm608A5SoEdN z?w(s+g_&ZumD8jP5%>;GmOrf$!b44mr-JRqa#lyGuHnfQ58+Ws2x4h76lf#Eea;(* zls!ctgJBlrz72<{q(gxkE^Q8NGnC=l3$uzG50o5B1WP0rDjJrMha>7fAU!GjE`Dob z3&Xox1;CjUs@|p?0%lH=Ss#GL2*|Y{>lT3&OPs6Dy46|V(W?Nu!5TQN)H4(Io>2Jp*wPN0xPPe2-rn+r=^n|qn%8}GZ8UUkHnl!td$rBgY!OI!-OOHt9$kR zf?nfL$0}sBXa_bfV~>}wm#X!pJm(tBddqOWo$us;CWVMFLWm}CT&jzbLL{i)CO%{oW(IyKdQO7K*Ftg#i zqq7BSrf63iSWZ%s-_ou1>9Qkjx$BwZC(mxom=$NW2D(h# zCD4f4&{8FeX);B8`iwRRMwzJ7P61r3EACk?7NBLHB=L=L%#9LDY%iuhD6!|W9m{(0 z%xR8b*vH=b6$luWm0>BfR3?z*U;6W_Nj;~;)G=a|kU83(LmT9zR^^>_oN>OsPKGQ? zh;?{}z*r_2*GBtPv7k=Og^(>A}CE=dgYJsv+9I6%s#}eH3zTTry7gTI6jOYM!m+X-UKWXNir0lIn-8KB1n) zmaZj3ZV@U)i7r@}CXCSF_H3wkItV6UWZgh3#ZId|oHxQko=M`gj<9t?E=V!zoY2zL zzFMR~LZg=ZF(%ZrRG=&A-bS8~9^3-qQ3=_}jb|3(otEK=#Rn9)Y<_`l`^}*pbIio6`A-a`@ zkRgN)bNL0zJ>0rxyDtg+)ffnJq?QCL4i1bo@q&{jkq_AC^&x^+O(DOZ!^5TvPM7_v z-KD0m(<0X87EtHl&cgkv3sIM|L7miy-#WBa`)(>Bcbf(b-BVyq`s3sg$h#qBDw|#PzEbu0kh8v&t|N6zA z8sm!Znt4OD*5~~gP*P9s?0)d4BbpGQeWQ_%OqG1^X%Sf=YNziz&zPd3ZlW=RqH*97 zqGM1^i4`wOt$6w`$~LJ7z-bx(h9~VDQJ%vUU#|6sE<~Lg)c#-H*8fiiPv1UDC)}q= zvF|0E&4@x#hH;&DQmBh;gSd*&bDGC49Pw+CJpbCqDN4SM*t-@hq29-8iD}?%Q!^5( zpV)F@pRh4BAqrL9RVqlY7671%Pr@fbu@6aJ1f9)D7f?4h2mYiup6-XR6fPo_w|{br zeC};Q$uSPw!QNAVfS--`NN{PYo*(sR zK6;^$Gdo?)oriR-L%(xTEi`{sIaG4QSK7q9xz9_W@!%RsdS$05&))$B3#ie2j^AlB z#t_R>XGd0irm*|l-Yc7si36U`9MCOg2-ED*41=4fymj4X>eg2xqQ!*{KG}Iaaa77H z^lr!uNP>8dogx8K;gx~FsQO6I&Lj7?m_QbXbpBeX6dRuK2fCBhnt zYK%f^U{6y&aDpPg&IAG;DqR5ZU7sypYm!gSC?Z@Uf_#n3Wnf$(={|1#h)CURylBw) zN8W(&SI%bH94czf%N+*jau};!3E)$R zwJ^!!bhj}2tmQ*N!E;;j>-SH>@ykiq)R^*P1h&}2?(Fb*c2=Ws&(8%qte+ZcD#akP zi@H@@?YZW>wM5`M4Vz+8-_%N9u@2`KOr5eUzk|O#`jE3091FTS?N@IQkm=-$SJc0jE(UCAq9uE>5j_#pO00)Qg*Be#_8O zvt0KUGKA%{CEcKTrq#U>nDGp3Yj8QGbklP5154kDnD^;qx>|S<*w@+lzzqKnO@0HW z`#bbgZRQq4PR9fy+#=||YW$1fK|9Ry%jiOq+bULuA-`_a=?(w!phyYubGhFZ6 zy>GGfot@%#Do;y%qMg$$4BBKJC3JiS$E5Aa&w(*6(;{prmnaoM4B@T*A>1Pdrk^kH zJ6o4_?!Px=q9bhal4w&>2PKf8z4;GY@2fo>eA%QYSZ)S@|+*PN= z-8#1!F$DHbJFVz;pjUZ5yX zmPzQ;=i7O2uF~9(n5Rvp-GS}XAC6*DEBktGdkV6b1I#BCZLH+4Rb<0e(zxOoD_lgb ztCQ5HM29_uzw%J`r~WnUW`Vdodi37Brj_Bb>!+vIt}X<#MI`vcyw%pY^kIFg9!Rfg zoz%s!va#KU)gh}^`ju6PnF&*c*2{OjWnWwP&rM(UPuB4p`{dZVt*&J9M|ivIXM7>m z?-# zdLJcr@Ya0XPs12{u8vF8>}y!r_NcW}(4U4Yohji>{j}H~C*V^Xo^%6-ux9GBnBCH1|5-c-wZVbAB&DgRzOI6(mK8w#(jBncUyC10`Jv%}1*N86zR^`8{163fq z+Dtie=Q6sOxqyqUWUff1sH@-6qS>EJOOzny$v-t^nb3kz4U2K84y7uKQ98oEm~gOk z!$}MehJ-mVNBL2MCHC~nfR`GhYzM@^)5j^=G9Sva`LO%KM}5MytK^>cFIOR!HL<)| z_-n55pW1bI?UR)ty3OiBaXm~i>s#fHV!O@^ZwX+BL*=2}NBbZDQa>KYU7tljCvb^i zzwjfefqrUD76NrDgr1M`->-j-p0_G0; zKvUgSAi5wfd6=$@fZ5_0usT9ZmGwhU*Sk7%QAC-mUPUl)U#D2G5-{%3kgv=cf8Xn* zy)g*(tLTP98J>1n$|jwyN;giDh!zWJRguRp0|sIvWC+b7`I>#0P9yA2gZJL(KNurS zN7j#Xp>**|%m?3TPU>#&K41cDMwlLX z1b$M6Ou!+D7jqu|W}tjmUVL6Q_SMhSM-sq?YNTU*!MvJInkKpGkkNVlX5qAfM_Wd8 zs1aa$HKL9)f&!4P$`%)~o%g|sa4zKFa~w#4oVuUU<5iB_;U5jU_S+KI3dYr|c}XKx zBH+KZgZtpkfFpbMqqlA;A1uoRS6w<`B|}4x`%^}lsH17h=xJKywB~hB>x9?qVEZXy zG7dPMDXk0Sc&kcV*~sYQ;NXt81>6y3bM3k!Z|pc#@@xl{vvq!?5;R+cyjbA2tV2(Z zM^A=r#V%d^R5=kz4aCUXdkHmXZKLF72V{@m{rWXQK|4)*abi9g3d@P;4Qa;r?$U4W z$+E=P%(uKK=18({{a=}73*};(5|jBeo{=XlG0)0v>+?x!wteMK zf(HnGcyGN{-nI2%Ai3)-CUR;gW;I{i$vmdGRCihPKOT^bPku3+2<|ua>ikf-S-t7S zZ-2IywLCHZ0Ff{>4xJ(6AUvN*!t(KK5~S#?dFB2h1%WYPPycgl^u*mTjX+y* zxJ?dFLHV}y>DCN9{4HhToEvkEY>Ag8RuW+1&Ra_J6jBh$mdL49^scEOzDm|${+kyu z%#!2H6N5Jx5mtV2Fi-)U`RcKE6u6)^7UM@1f5H`!L%=yJKrBf@rv&+kn2jQYl-87! z|GjQ}Q3J(M_CHDbn)_ z#5D6L(vIXuC7iIokHrSg@qjZAV>}JsC{zwH{=v4=)gGCEtbZJJlhvnQ?jlqHp$<1-0kT7Iqfa*7~(ZU z=J#KD*_(parzZp;E48#8>Pca%-~K_cc#2*v!cgnjJa_ESMc-dR&ZrlB5MiuQ_;F^4 zFd4d!E0+xwYswQaC{4Z^#77aM{B;DeT*nNmIal@%o(HRD=wkyxOAQQ z^5u96qL{D-;KlkxC!YDboKR^$ZpmhZQPxWTS=NE^|G87iM)8!)Du&J zgwzAEJu?%Z)4H{>>3>a(_!lwFP^V;=`K;k%N4K8|`X^PJb_%dZ|Gf4af^WRVk*X@k zo5}*nF}BEO`b?4GHeplaq+}o(bQAty6);sz>FFSbO>*wq3T&mN^NS6CVM$8c8f^64 z3o!9MOk{lc$Y$0*Ea!1VU~ZCf)lXEcN_@78d!F8Pq(JN67>LwY;zmY!*d{f*aTZa> zd!FWPJn54R5KR943`TB1eNrhJ_Wi!)psY5gd?sVeRA8!XjgJ8nw9K)x5-eB&rwc0`MgCnFwq(Pq&N+eTT(!#-gku`3uBw0+BXg4$cO zJ17y_Pvg}mq(_VfacSbyb4tb|Z>>Kb<%tMn{cv$AeTcRXf4pL!ns^^l%l<>VI9~Nc zB})t9*$*2<4sQ{P$2bKfUZQuKg-Kj=+$G{Sgkdp{)AY`mB6DLaNP>THhM&B-+uP5# z6G?B!@ycT)L8*!lk*T1oi5VkDU8zcL6{%(fbskZZhOu|thD)=k#|UBlG*S8M=G5$+ zI%%45;K0daxe(a=x$x>Zc}SjX$;xK%Z&wgs2swBCopUJz;`!)Bv&J@NV$!f5>+j|PPJKi zqpY8e6M7&hR)hhKr2Xk2_yKCe{6t3a%;ir;PjFmn3@JvC;&&v+#^8Nz4X9u1^$&02 z#$A06Mz@(Y->>W(C8-Ki!dFTVa6f~CsKvS1-#u6kuaL5y0Qy(dE(^Z zL+4`~cbTl02t7tH4CKf}cKurQ-&raS75}cBmj+i)B^Xi*TEH)_TuB^%NkKeaqQcSBoo5AwP%Vnl9Gv>)(MPB5zF$h{ypbQRyEMv{)*pEx zBSbcI#GKL7<`6#cQxoui)(=Q}jkzQd_|YPbG7z6NzpGM2GbxVkeg3FMpCUwQ@-QLB z&Bj}(G*(1_;h1U6^fm39T$+r2kr&qXrMi$;N=#y{Lz2#fDfa{ro5F&YC@rAZT)f>)tkzfS z0*%lkn^GeG_-x^;H7{7ClV*E^1B$$3^)eOA?~#IBqTS?5u=Oh1vzIk92Sc9D-YbkB z@^i|1@YFGaXKOu#BoU)QLG;KNwTON)D`zg-8mvuxMFKDp;mo?9lKrw$09Z_6K>R!6 z=4&X8Kt}W3&GPZ_AmiBBTPixLD{Ri2N8#e5h#+{_souiQqzEMFd6x2jD#j0jvJcJmL=5)L5bWH12b5#J8BqQUn&pwcIb>G`ngCF z$QFd^*a>g%deQl9Z{^2-&-=yFz;uaab=UBT@(1@EcCjWzQR(tF@$cR7iSY#3nih_m zr)ha_wSbuA4IUT3{=FepPO5P+}9tphPal%6G^FkVz)8Sq8QDu_z91oU= zUQ$MXVd9I2X=4tx2mZ`>)Qdz_p`50YkgKifh`d-zN$6hmxet+ltTp>FiKqf019LW0 zB9Wk!FqL|pL_G9hX5V!;$2L70Sp@*i z4H9q&RZ#$;>WdGa8t`})@cctc02iq z=Z_0((>ReHEuO(QeA26bg};96&nI3=m^HC*Zp=v>f09O))`Eks(SugFC5A6b1$;kB zK-B748OXE)cry?ac=Umw`3E2=dXR!1;|RLYzFfWvAvnsehsO$9-N-zEH9~3d2;|kQM8SQaFBp#>7UKIP6&0eufhd zdYZX@B>Xi~tW$iB*iXN&n!^8Ja5YSR^QU~y(gHI@0y7&jlxew(om#JFlLb8XwGA}> zT+evEL=&G!n5J@O`3bKIqj$INig>*hS%RXK0&iTAe`x@z9Y#ZdE6G}_QOGT$G;Isx zN0(?oB?ZgF>iipV0=#VlXv3-RE7q&!{d?5+LmR|{2@+i!@^fcrRhbpkJE8vP&7W~1 z)Y*V`h;?QH7wMh~E69n)@~65g=ilPHdH~qLlKA6eBTd37Kw*hr|9{+hu=@{)#}}d{ zfWvJXddy3R=$#NfSf^r3PRz>hC)S-0zSr>v0l9t;8aY7<8T{SbDp>CK=<`529Yvz> zzF*!nzdn6J9fl{@&=JlS$LH}E2~0?Hs&}!kZpX!h0f`6eVwTpA{!@>m+VCZe*5Vxdv5;jT6V0;}LNA@v?y4RjgvWPDY`EQqFWw+=igQKG?ctB9W~wY#8UB?Sk?IoL za0xuTR6lQLOU^#I2ce@Del9^#5r4~kpV$$qc5BY0!5p2<#{^FRDL)4VZt$}snKURg zjS4SN6l#k5%||<762tVy7wgg3Rc`m?LRh34h`w*G+D)CH93=Etetv`VSHO$p1>F1- z9w(Ub`PK&=%;zk`7gEv_i_CB?%Uwi3f~P0!!-GB@E^+y$tMlt}Gr}WpPglh>HXZgN z!?VwY#(euz7_+4)@hxOk0%7 z3~U0j;i__o&*Awh*v|qfe2${L<^2SptE2e`&qzyM%SV)4n2Gn*GRV+CFv z$A$g)iGMSK;3eBE%}D-ac`4_}QO zH}{1349T*%TZQb;Cdyf62CS_;y!HXVxOiSoE8ii-SbGp1KomW&RzYD3DhGQm9X09` z{=2i4-2YCBmUpVA{Dq8*S5M5PQ#zK&EQ$p~j1I+Uk@>Ml<@|^Aigapes?b?u$i}ZE z#eWwwvxvi4MDpu$fDcq6AEzKi955KzkMTP^19 z=eEl@wsO7tT9VmS0&8@}p+`FFjybY5?uP6#${Eoh>qr(|o&F$8@<5QuiusfZ2@N^$g?2((iPC=G^p{{T|X|k)bX8Uh>qcB&);= zK3t0^K_#j2Xad19IidCE%zTS!6K@Xr(N6KE0&S+(Ba&(Yc;xX-F|opZIM{dNJ z!Y}5{UYKy%9tooOJYga;2w(qPa<0Up(94*bKVaHF$wST+-(>cFB?*3#w16LR3xPqN zK8jpZBG<>lU!}31AQ>_LS-VYntNhkQT)f|LJXglEF>g>%ME5;gP2*Y#$f;3KCe7D! z1t)}2^y%%Njf?kY;8Zc~Y4MT%VN4y7CQk^H1hqO+o7Y%w$&pUYgjDT53mMKN5hfvE zf1e04h6fGji@O(pS7&LBbW@?j>RS7}MTjkr_kDQu_L1H1L1g1=#?F<@?N&7iuIFRMNY(pKkarAPTlMRkKo)ILR9kW28*nDK! zgtyr4!QhZW&QgQ$C`O#LpO=*RQ2n59gcCpP2E)>kJw=bPsm|qOWMqziKU(2)%5~<5 zhCXLa*vIw-2qhtUqot{##D*zlkUuieL+AuTrtY;eH9lV zJ6moU`MSO8_wRbERz~e?dmNV%*&@g;{xKRK1*(n5SWB^u%27hI78&hHL5eqO!Ym)f z>eUNCyOXDui{u4b)~IyEE3zp7*7kCclRETdijex|Fpl3rG2(8dXej$=NWA2>$IFCB zfqt|2`kg@|$jIiGQ-DO0+j=sR4qL=GWNYs!n|nPVh6~VX^tGpW_`DHTAGGfr=<}W1eFI#s?58PO1Uuk zW?P18l#~@2p^W6<-I|1sJ;=h-j85^SKK|98|4tHh;AgJ!u%C|leNA-cU>6o`S#HBB zV7s!+H^r&2a-{LW#&FIcxH*96BXq2YpFuJ zfSt||8vVgBFsIbRGF|3=|6iBGe6row6lC<~LQ^i-Qcc2l#C|Rud0~{z)G~h+ov3~G(*AN-=>z;g7A;A|#r=~dkUjTwX z)ScOOAk)d~ttt>RPvfpwBbVIFI7rQERb&^n5$MU58X>Wq`b1mRK?7^)ufB1g6{6g) zP6CajB7t1=(nv+BPg382Sb<1QaJ?C25S$MHPuC!zZ2Uy|-9WNYLRR6gm?sPY)>^Z; zac5^?5#WX76b(T-SM~<|k3P@=>(`{L<$8H}u}jfYO&rP#IaI{Li#L3KX&wJ(L zVW=*q3P{=4$nS1{J&d&Io7{5fI*Kb2BT7RLpKJ8-=khtyRP4N`P^v&7Rzd=VUu>2B z^K)0tcHHR=)h&6|*G0Bvw(E9}Wq84?9yAW4R7@1Y>i>RT6AvT6&cBmL^MDaRpc<98 zjvNfBR*|sK|JZGy7rJb`(fUM!=tFJWoVYz%9nO9N1_K$s=?BiGMiI<&IO~NBFr}ZQ zG{pWAEhWs0b(}+hQoa>;T6M@8zKtj+L7$;afYRS$KDU1ITi@NYB9C%%f*;Ysai6J+ z9I4KRp)$R(|4=%x1}zn#Y}kEmtM?O+zaG`wOLbq4ajYBJZrkV5mq0J_bL6L#V3uuIY$$Q)(gqo;%I$?}r`0S7WD4DDb|HJ;?NItX*ROTWzr>ckrD)=3)71x>+IS6|!XjK6n z?-`Huyk}nzy;>cW8 zbbTw?W3*{@GwtNaE7itvKO4Vb;5TO%@TYWn@^Vy;|HaRaM3|@qv zRS!B@-Bu#Tamy5wH8UBAKyWVmdTbULg2H=JKzDJ#$yG7FI_Ja3vjx<@1bJqm*%f;) zPtZLIU@7Ax^&2tY%W8^fmIz^LXUHw=P+cnRkYp*YxQVl>cq;2%a+?lbc4YxGmH*I) z-mIc3vQcIAxi}hOyPx7>ypnq_xsJ!>CSA?g9mBlkSf{?~l@0rbz?%~CW09c6^oFOr zkUDiMqAVczM`-sLyaOJCI8o5X5h0e$YJL z|NnZ4*<0bp!fmo0uUAC7afR08+3KAQKnl$sW}IMaKoBng1p3_F)a)myJC%iKWIU<| zU|T*Dz${T$+`y-!;TnxwsjP>Ysgmx;39GQ|Et zZV_iI|7Ms@%_&mz#z{(E22stYsBI+{Bnzrn&6Zja7ISfShe>{Y1$yfEGzR~Uo{r1s z>R+IVtVltOV;oBFauylIHJCMMiF=Zft$OiszvNxCCpX+4$W+rsKTRn5*(@=OQUkq9 zQPN*CTY9XJOCf}>)w|g}-JD%Z+tfOruLGHyn;K6B%8k_`vDpLL$!UmYa@PQ5aJ1n~ zoY6-xodxV!+#ha|@B2K@uR`m{lHI01Sw4_`gPcVG*+DiLF^iEJox$O;4 zJwF&e$dcC0K5N0*B$Nb|QAn8(CD7FrjRFjoyf6&vQBM+&p4U8mog&@MEwG0$Nic-E zjEgCz)c|xk1j2ep*r$+ExFUEggcYhm47KgErU&)N=z)U4T)9acOHXZ>evdVz-(F_f z(QNi)D_NIB`Q3B!7cyS@mK(7^d5E~cTKUpoIUgSocs>R*>}()mooL4|UQIB6fsRMVQ?2>Ak4#GO$9J z7HFLSO^1M1MK)2Ck@PMHyPi!7@fZsfH@w!1K{6s>Oh2mBWWlz-a-Jyx=(ILWK*3@F zzdHT6LBnc-OtA;95Dwu|$Yr0^J7i%Z?@OkOr=P{vsh8LL+8pL3*)w#R(E5JVK{hmefjAIp5i_$M69%ocx+M+xg=Ma0S)}Um}(C z0sUmgO3+N@IUeu#Qr{EsE)fA4!g~A9wvgr*(g9p4HP{bY$>7P+5n5M%Y{4=q{z|nF zR=nAnSQrq;?U`H`X5JU9oF>szVR^zjNIsk(cRq}ozf*DEg>N# zA+=GX8)-%ghzf!TC@3K%9SR5^q@=t1x9@L%@7jCUxz2f?bDsOTU-ysY26_PyUW}*K zxJ)D^`E=3G8vPmwqhCJgqpBoMc5|0yFc6G#uM;3{H5f7yp^$T#WYG>7k#hj2R`hw zMem1-)JJ%IeG3x;EO&|jc6r8)p3?*#6~n}tn~8rGI7l2~xuX0N4&VrBb1jfD5HGyj z6qhi14IY`6C##TQh}HYM@9#>_`C|tXbk($-r&kaw1he zUPU3W*}}6a0@UAB)}LKbuo@VNy{+Ss+UOsHXAgr` z`+aR<(F6qI1IPl?O|%a=9&7KwvBxTX(RE0ZC}B5;Tn^&iO1L^m?=rkLwd~+*&@2NH z^vc4~{2&NO}AbU2kQBTvM) zVz@wuZVb8HT(08rupx*zy6efi5_B68_ME4bj|0SuGPzZU-qy@19X0d(O3Z*GF>bFM zSo%E{;FsqIW1X+0)S;Z?c>nAL)qDPJl)gF`ft23!`87mR>(FtHD-^3@?2Ud!wY=4M zzWwQLf+X}6sU$a&N;^MRYGzZHQSj|}TeTo@)05rOt96IHtaqXLZ=N=v6DBk!JNq%H zElL`7kVxu)=E7sU`R@EtV15elNW%_4>ekKbpTjiVK7Efs7q5BG8D`Ew1d~mva+59V z8Gt;qBR9ikV}4$R3`YNVQ~_hiPxXw&M}aB6&`)>a-jB;=C%-2eFm3qog%c{#IC~f7 zlEKquVHb8}7>SRRw%2=|YoW{5-gxzTwBxGDwH(}QW70^=>({W90dM>co2@Ri%R|=O zAUy(MJn3d-^x4`vFg^`K7W1)n!rAPARri>h!}z|CcM6?=;d(M|1f+~(^T-zwP&#Vd zH4dp`=T!-lZ=NDBCPo-13A^W6mVbhtl1?^YTdpzhgcwsc->ewm%0&%-yk$zwDWyUj z{x#?Ydoen$K~M>p0194<$1H{h_!_Jv3}~TXskgwkdz>hsyaS1C(GM_i`7`6jSgBpO z)HxV0BKL*R_PmFW^39QhNJqeaK4b|60wQ6^2ueAtNF_q5xG4u!%#jE5*P|WyReZ5Q z)kz@ptueq|s7AibT!z6AiJy6L>!++n4)TB28tm>x&DSexQ%gISZ?*xklj5-8HyunR zD&K}qJ`NC+>~YkL_rU6w5MqRUo%v%2`1t3e*=Mj1z=W#|(RDIvsCy4ofO*&9ES~kH zrYDNj=rnnDwCyk= z;+)b&&>7FbTR)j+%s#Yd;NhcmfqQxk{-U+Qz}U*RD|bH~=R3?ms+0>2Vevr-|z z)9|p(o>0?aQ@AOD8x^3A#Ti8N2rjQ$R!&A0jTzwB;zZIkwtxQcU+SQ0T4? z%pZrgl+aB4?L6>x%!aAUV@Ci15g4DDQvqoP^fHavH@OdRNJ{ExQxjurrv|RW%R2;iu^=rBC%8x*WuG|c!<2( zVNaSbU?yoIOd$3+R+gE8ciD+YqM6Q2#iwy~WRkGlTKSl3fluThHXpyvHp}6)Lo3*i zO?{QenQFJD*nsp4OU@?!6#OGkhV`tBXMc|s*aXl9%3Opyz7$k`lJYJ%L+Msee+WSu zwtZ_omfnBd!MW!uF-t;u9RpAmy@?!T6;Y4uX7b!0Vg?BH7pPnw;;?UuL!0N-?&v}7 zX5bhL`rS{AZx=0Byn7_R-R&H$YN6l&sGq1djKjzS)0w;tCUp*U6Tst&^Qe}&1}HlW zl~7>yGp+K`jVK!i?n~cY{iz5HKIWyo)MtG2&Bl{uxR4ApTb>PvzMZ#DUh;e7LXmoe zq$mE4G8Po6)uRrYt5T}RjlD;z;ZS1{YTA~!yfII3-5H0I1Kl)52^x)62}{S!aDB}S z9qZ|>wT303Zvq+^rODW;?Vkt&HEK!-{)97ra<$S2Jtl(yl*0bPMQeh5<;=#9i8d=h zLkfkzyDe5(AND%Gv2-aNiRG?_?8iw1$>G!Rgz`qd1R$GE*GIOo-<SiK-ccI>TW+5wS z^wAKDDzCq2+gExZ_${Y{q$>Jt9kQX0f!8aFE8(?81z(sMju=4pNHgZ$Zz`krd+O;P z7;e%eLBWzKAO@3Ki!mlUZ{y&V5H*Xk?{Fk0V2KEOh+yYUM7;K;n*pm6HurVTb$6wy zbe_Y!-IdR$Yt!L3L0Rxrj4~`HenJM%oxSg}IC<-}{8bO{6f#pKpoh#>PjyPXwzD8P zf9rfRR3dyM<;L38td5m9K!G)K%$aIyvs5P#GhZXVo_5wPD1af040QxM>HFSAyg*ue$eVt5RyTg6vEIT^1WE_m^E0T(#No ztR_*Clu_9Thcs+g$ES!qZYS&L>RU0=N*S6^juN(|`CldN%n3TfPl(FaAe4gRY2j)zqDy3_j`UP1-y=BgahQ4?OQ^qWMT9{kF|SIC-VqlS8}6jDr?Vuv zHqXIFORq~{Y$Pi$UzIOXX`QJW!O&``Fg2q`d^gqEsFwRUCVi=NJ=h=8O76WHgy5fS zw;Sx+cHNcRv5f<*N0-IwVO{@-ASTSPTog^YLmY!;U&m4ignm(Eu|+B!@qz#({O zk-HZ-W_o>nJ0p}WxDIU1a(OsDB)@4`Tv71{XK)>lom`85z{YyART3~$bx6$-(L5c@*iQy8`0d8S1^#Hb z&@;w}eL?^)y*iK@g?ZGA2_Fdw*xZy8fR=tk3x0usD+Qf}j?3TTPY!(lPz9?j-9^U;j>50sct`370Lq*o4t+;%jKc^;B6>7G6AMtR?*ZdbhTgb z#`8tQw$GU1JZm-L(`BKm^8>VK6svbb1gPoPZhcQGysuo!Ii$>|HGEler--Jxuk<4I-fdDQ+I6Gh zd)B^AV~NxLnsZhB7JF7^B++pc5$_x+zzcH7q3TQb24SqeC31z8Jyq(jj7 zike7Y+Y!kF%lf#kMb0_c8dFxBCk#E9DU|#!BJvM~$v;KbqIg=vF-ye(h>(z)ZUA zTmE*UTwea!^Rw#?`9P7WJN@&OryUmW%SMhBp5WpNK#FA*WLv$nw&p)Q@1NjJKJ04` z+-Wer+D(|+(9|8C)K5vy<__s(Z;Vd?h1y_Omm3leLr;l%n2PA97psiWIa|*7XEitW zce{WM&9FyoNy1*r+Vd}WW+X%`=xPEsm^O(?!XI*Kn+?>HkTuCT1_D4EBymcVc((|V z{L@QHdH0{@A;o8W1KEh_EM_JJ1FIMoR$_~lT>NC@6QqTV;J)hTI2acB&O*EfvFqdq zhYzZrW1w=ia+&%OPjHar2=zp;iF4q&c6qukW}Khqm;MLOIpAvKH1t#u+I-Q*4!X0$ zRCkK{+=>nii(rPwqM-J8gp!86oPb6N=AP1^5uFgA7+rWJ5!B2U5aV%c;Q-bJsiv@J z%MT?efx96#+&7i@%L)p|mpD;R<&PwAYLWnsui|gFfKjPDfMQVqTZp1YN_H}wRsT_m z)*9Ldql1}z!OCsNZHVW!&4COcjIYLOUeU_DgMi*QuF0A3p6DAdW_`eG-GpH+c95+7D zjc?(`(tze&p1RS7n#D+M4zf|>lB=#RW&RQN$vf%@28v*co92GLQ zH-=8*l|qI2uh3wM5UcTU^OASw{|0FhX#5%zT>4?0#kZq{gVx!$0u%t#1T;HTz#akt;SOGt$g7?be;jf3r+2(tbgzGKpxX85ey01x#V zcTf+f-dpPQkjBOd5?$&bQ)Yrlh!q7tTTeEW0XTkbMlz{^CvXSx*KNn2K{p2)7Zcz% z9{`9{)&a2DTPQ;USI`DLEtcpq3t;wPbcs4_7S=IuV3$3R_1$^4vBVBRA5~|;mMT_Q zr!7^Zk5q3O#AB0>9KWn|8tqYM#XlEJ#mK*LkWvpD1WY3U%tP1-1@7S3?oFHN)3g0yS0dU^PVL0WP;okd zK%(J0SVk2Y%nUIgly06G-?3T2Pp}4dbXS2;2^n?8)UWR`t)zv%NeiO7acQBc{(JM~ z(;SSKowuE_WiyKIYtYr3D-l&Ew}03?*`K6TKZ%!PNygvGFMcLA0Qup;_~?Sc>@=Oz z3&~Q6r$%q|b7FR`EDlA2bU>d6{qzx&=dF3q##ROhrJ zY7i<4RU*8C%U`|fAfv{G%S%`%&C3`LL+&5+a||vhK{x)mg8K2-YvZqZ$rXB2z9E4L zGQAK@??fxQS?Ww}uC;PG!2u10xbLj!lZJ}^Up|YvATj1UMf&Vzg1V(bS__jFS2i4k z4wl-@Cg76C=J=h84I2m&n|H`ZO1Oo zdKq%JFdp_88}e|M8EI%&6~J1!ZQSp^j>6ne*WZaDl1p)cjka!Q=l^J zJpxJs1+0PiGdE%<3+R&CPpdyp)+2-r(i5k6TCvBJDpV>E;fGK)T7h7JArVsK(YFpn z+W2TtCSExWwNyuDEjcPvY0|ZRYlg`HO72X7IwT75wg7K28fr9|fX0w<1jiv(PBi~O zp)k(po6vNC?}vXSsegJ^e%Ti)IrA6kc*Ouv zrH(9s_L@i%azrz!Pm7P?wxzA|eo_V1;wx~9i(LwAr2Gf{T5e4dq3E9t{P75uN!ad? zbLDlTXi>DoF(8V?|8a=!t(M+g1ZA@4*m=lm8 z;Ecc7(2!1(lS#lo1)N~u!->f_Rv;}II5fIOhg5KOf}-f=#Ej_Z!}+P-#}DGPk=0}o zq6)~@ST?(G)u2nw&6C6N0+uXKLS8&1G?n0?2vEc*g3#sI#pje!5xFLCkdZqPhR)$S ze(Jq)WwsN=$rwS?x8R285`bsGz z#@%|JA=_c1Xq{(JZV2PZz(?vvmQHu@N(AO;xv`NLo}3MnoL+iZIXz9f6FD#KPnlT! zgCpQ?8Pwcft8Y{kmrvmLP+>fP>k9*{^HTl%ZLIiu$fT93`cv=$dG7C$O-HH_`Nv95 z`r5=Q7BEd2O{VKt#+2Jeph8%XdI^o=1|J(&wR_w!Fau#l^(V*cA4XAg@Gf{MAoodO z>~w6K7076Tf|KjIAprsXIH84x38N7kx(ZBTGFr3CQB&ZrC@2z1*{6k7YdTd&Ly8UZ>KnjlQ zu%U&q7K_JU$beB#2_her;zkK`JoqzQBHQs`L(5acFh()1#jFs_`=hevX2Pf@#3Y<%!?= zXKrS0a)=&Sa1mGyKT}GRVkvkNTwrIU+pm}!BcMZi zk(}mxk^G~wR_-)xowt4&`4^S>uKoU)qy@+^e?x9_T);{2 zPTdP)6V&Rmaong)5l^ycQNOxz2@!|T3j=#R7tr=N5`Bet=z7AGk`4gz+1XP2*RiLs z7f$6e3)^zppbn;9n;a@JOsBGZIosg){R6g<797o=fQW;U^Ohz{1IzTls0fo1md&Lg zFbO-V8OEKVl85RT(-2i!Ux}W~KGBl+P}B*Z!=E?~cthRjrKE%pTSvCIg4z}3y}_!n z?H79rf!otxZpb2Ky+U^t7(X8dWxn)xm(y?C6eT`+PElnDL|Gksq{-Z>c~PMGL!VkL zP`~@mE@TI!F0~;2BFrVWNsbejA$6>+Awq3?te#q2d024h@VYW0rMwDdMgNNz={B)U z$wy_)IdSDyrSC6>1J>{ZiUpHttMwb!(MNx0oz~=c`}}d@RoY_tJqg75xsF=_TLv5s zB{ai#`M2-qpH^*_Z}RMFUl9`O8`-3z_4!n)RzOBlAgAg68&g{#HpP?*$~iY{n=Z{G zA3aWjfJz`{$(oO0bk19wfddEy>=u-F&Q{&On@p0Vf>e$n6*xTk(IO(+tJ=Ya-p(K> z$NOkQq239`?%CFtMT*d8w&v4wteq;feCxn`r;$)@zXuPn&&AyUm|g8x!v9I-{f(?3pp zA;fHyYB8VzycT$3J}0IUuX|T0-$(7 zhUq$k8-V$LcXz_pQMoK|d3KBUN-dMnfbHqQJ2g*9d%T%?DNNZ)owxBkTphG+ z+&PpFqv{A)C*(d3M(;Q+FW^5HW_>rMSjSJFGoMlII*J92vyJ|sV~;W7KozOfztp6b z&jp`e&TohjfBAGlvzSIXu&7J$7%!h~f3}tmiK*f;Xvu5Lo!qUnsDQ>-2E3#pvM)_w%9M`x4%%v%G!sT zby~uSio&R@yE*`k$_S42D3Y+bjEcL37w~xs=EXD=4{BEAw`(G5gFIlUe!sNtA%kg&cM-p1uXGZfa^G0e?&v)bkLT`@* zisJVcUzJia2uZZz=w{d0_~8XO{A=^jP33DGaxm??-M1pewTv&7Hn6K6cnyMfavEZ0 zDDGP!t8e09nObihMqygehj@bzPf77RTGNEVr&mlu>zK&%>m7IcdvPHsKvGUz+|Rql z62Hc^a3?L%g02CyBqJ5*@JfU*y9wU271wLb!Eg{4QMfVuUs%=~nCKA=fJW@+B0VokZK$JHuG#>K5wjk_A1&3Hm3X6kwv?Ut zP5;!GN9h>S-VT7O+Dl%e;iR8pj9Ts4o*+gkwkUaghUglf>GloGt^PbED~o~IWXb@Q zeDQ?cF8;HzX*?B@ zXnI?$z>tsEy}_QIJvrf=?t{fzA;b|)5>0UE=(BM=(g?D56%oo{K!+hgrQECtx7O28 z!ky!uQ~2=S_YEsP8k2Da%{MQh2&^OcpFIeg>hOgBh%a^x(#c4+NfEfu`RjjUfCR9I z(`70fJa<@2bG$E6=jW_2mP2QPbA5(!coh+>t|oI?^db2xmiwgIml)zfKu zvDOW@=$5B#A8$D9qvV*LJqshEp`Pt75hn{2tymyoq6tEbIM=?xrPjNU%IRsTXgBN( z>(e;E`?(&WE6jTWSA}o_@`>wC_M7_g|JLQD{TFoXzr7&|=lNc`7WLmh|J?YDynW@Q z;v}9&0WZ(e#g!6dhL16;JD4`V4gUpx^kYUT-OkYBD_!n} zVNoP@Q`Kl2I~gsjEYp0-gt(4Iwaosr!+aRavYnuYRmK=qhY1fH!{xc@nEeXz=y6$ir_{`yAKKQPoZrbK(O{2zL&K)*ylJp26Hd@(Yh z^XS2C{B#I6Q>M1PT?=+`Bk#^$FJm*3l`q{OeJ&9&tvdPGd9cGTz7nRPMMc>A2+SUx zO{Tk{<{Voj1%7|Xf6ZzEk{S|QqiP@Fz3#Qnqd*J`P=&zqF=z}=42CDzWEZ(y`)4cQe#1@F}0Wf;k4ni{MX~KZGmXf0&fS9FOhuw#&wZN6 zk-U^#6C$wj8wr#B1?Xub^mP9D!_^vLBH5LmbBGNmgW0 zHzEYKIdHZ`=7k#oAXmzj{?%EWy-gljVCAgBcz$X`2BW<+wk^;DIZon#+(R^B`)c1W zu0Glbo%5XiNu1N~{Fwwn2K(4wshAFy?C`r@opFXr<9Ec7PQKw=BD|Y4a^(R8jL?B- zL6mDH{kDeDN>O7YW11n$+paz-Pu0a4Fch)cFc*|I>t8fGwgg$WhcPQX(gLX>!K|7W zaKZX6T#b8K)MFo=%EzOFC~Ff#2-W@u?^izgO3iUjQkJ-xOEi17=)>_N5ydX29$B^M zZgo;ePoeUD_TKbc2zU`uI3XbC8jz78Qc3IrYEV*y@F|+ z#44=Lw*a^ZxU%oW^80m{iypkjL;iFDZ3@9qM#na z%zJ?HQ@tRPPljw8Mxn9W*Q#`xy%@u!V|cwVLAo7X3_nQen^YRcNh|GXDGf-HO>cN& ze_fmpC#2h2*8WBRYJ+dA85G@TZRIEUzsy;q<**Ngrp_d6=07yGJf8JwJ3r`Xjo)4U z2)UIL9ylTX#3yFmf^%ah^Wrbyc!Ho&i5|d!Bv2(|kZ5>H2mAYGg8`3rdU5gR)IrDK zX>yXHI^^$(W;bLu2O8k-=?a4?VUsU*(-+A{3d`bOo--iZ89>LM8VsWe90ktd4zA58 zs`rG)mO@JDt|jkkD_FQ9ta|R?+nf(Or$(;j9B3v6yf|$kAeevHbO$%>T-iy0r+0;L zD;bNnJ^6KU+e9)y$F+7y9tAB@-X-3Dk_`4E!WK?a(TyF)X)m>@`z2yv5(ts6QTcRy zFnct-z4ntJ(Ac3|qpA^A&iN(#RWxX2K?hV$leae*>D2a&#*MJ;t3@_Xf9_wOEyVf5chP{JQ3Wz=uq5|Uj3x6L_#GloS>^*bqU1Pt1|D;r|?qV1|s-!Dh4HI z_2syfx0R=TWic{6#H25CofAdb;PVH&$TF~fM8O3D?9tw zdl`N4D}pKnA&^MQoAjxD52$`jicCEkApGY2Wi0Ghbj@RG3w2 z4ga!UFqOSy5_(@d44DZAY`X>^XdR*{kgW_N5a*9PXP7Shj&Dse8QZCam~N#Bv*!@b z^HyB`mx$V6+6JnPrz})T5Kd}aqw4o=_~+2k?(%Q`e``VyWfGUy{`!8@P?+w<58>uz z+hqN?IFSG+g-}gKfijGyGZn>EM_2}qvVQeEIeHSe#LJxOa+$&mghDId$^%g)4-*+X ztP!%`zb$b>A67UD@K%U*L6f^b31jLq@H?p=>v=q?o%7527YFtz+8@_==bg1J^&&R! zaY5l{=jM-VF2ZB3;P(DME&|$~(F$|rU%y+>AZu^~5Wz%jB@y!ZCU9vSjwo0!i*t17 zmoEfCD`9+rR|bNu2ff|7vsp*|CAewi?*8tAdnx!FB?!vyQh77^jqVzKNSzE8^LFR^)*CbRxVbPzB7M{DjZ;9th?Y~ zeeV|ItP`$NQee*&eQTLGl#bQXKjD_OYRy;eC=|AU+R&_u;cRQ=KUgHQmZrOk6Iclm z1!!OH^NNSl39a960vXeO)$l?Gg48Ivx#d_oFd&{(COC>%^IXhdHqs8uLcG<~4ktcV z&5L!P8lO~54JGFpf@EmjGT6K;blOF6)N(9vKc{m&g-uh`bI9la_4FM*R z|4&X`>zC-3tzogN+e;dPEirs5C4>lr&K+TO_3F%g-dmbX@JzM!5S7m!g3(4!RcR zMQkDro^zXpaYjdktZ5HvC&2^Y1u?OvySh!H@<_??2B&8ZI4Z^B^K^jcQ6#S?M?gw7 zneagTo0spuCcw=p(An&9`@g#=!?S~9UlSru;Q(VzOy2|vIr`_(9l`b3D*a(4K@bk< z{W2shnC&w9S_uZm*_KQ7JRPSKF<1+HyRbVf_3kHYHpQ#MiY(ayA|%}B&p9j87)BeW zRGz+DCY%Ky(mauKQ264h67$b~AG@Ox^WMg`e4?>1r#d?Gt{)jtG=Ky%$Db?4DLrP9rPDkS})KRlX+mIpftZJE%x&Lrjy?t^CRZZh+^+mhx6}3T`du1k16%BTtX~4e7&HwEo zT4v0#T)CRQkLIX4*+_wNs73D_4m@*-`p$X+C;6TF;9z?({$lHxw+%%JcwenUS5R#))B+-e7sYdd_Wo;U1Yeg(Yps$qh}>d3 zSXllFCXXAl&-YOobGSUWlMiMH!r|L`@~)D=2}9o>jIK8+=0Uy?t&jLNq@;4K57PYt z+gb3+qtI;O(H2eum%D%Ln8<0wk+38H+J9)U< zZO{I)MZ%H}o~Vg47$zB-HC8-@4cR!+zJas;IZT%KW0`8hB_PZ0V?(*R7Sy-lwHFbB zGNa0tM-|ec>LL6C)BIR1GF{h~yQa2In}H+L$lWa09;qrUU-N(m@yUK;e49#8C3Q6xxX;*|ERh%{SO0HU~;7I<^i_#p`_c~bT zSCnBxDHy8UNzOU755*5&c(V?bC~5;Tuql`^TXbjlP=IIl^XgC#Ih1wNnat&qDrj8D5y56_7BKGZ#gOb8$E zg|LJ_Tggvg)mL1-riuPGfAUTV{HkOQ_uZ_&(~lBte~QJzKr^?$CJ+*gbfB@!v|^CF^WD%cJw(-|nd+iAt|ud+V!o($9B8HtID-st#^09)y%YIRYk1 z%}RzUXVX(ke@a4+b#AF&9cS=7a13P`DxdAxJrtzYXmtyBH*rM7kTwCt3b=7W5JR#8Ja!d9ZJBlXg>TcF2wU4jf7qi=g35c zhIMV-r2bMNl4Ft%m#oG+(j5&uUb@t}WOcvSyX!B1sNeclVtN~YeV|>H*>X-qAN3?5 zj>kvaM|_6BjvPs}{mD$l(3$4cc-!srM)+~JP%PrEPx|UlFJ|c>SUv!q<5nKl;&LFe z;<4ZQwO3+-`jqOGbox$M35xBDUgsx|QV+#~%|}Cr7()*}7_5Xi%fG_Va<)CJL{c~~BUT95#0OCqici|S z_|B?*AqPG!PH8w9I4s$s;W<5ljhDSH`(AomzPZvL`uH)yP<}MLwEF9bT2VZPaVtAH ziVVmc$_CQ?#`qux@P&oNlL60iLpDG$+9#BV7&rlvtb>RgcqeFyY`M!Cv?BwCQ$~k6 z&Zwq;UY#rQg>H`PjgM5hmE5H{Ra6%`i^w-M92gNq9UJ24Jo-)&Gb%q`X36%lS|0CD ziPpkJHN^wyfvDKp3gvUCEGX(l`E1Pt)jT-^4Besw|` z4ZH^vsuLhP71{hv`yL5`xB%_UAo){yF(XeY;Hx24(j+>!R|Yqh|5-;m!jwllbZ_Up z<2rOn0yf7(59BU-j{2hIH z^Qg7&oI|nF0rIcyZefF%2L@EbGg?-3bh6#3u$#b!9g^9hxcy#~@4 zhJ_crR(B?o1*4q}RL0VO-z?B_-=pF21%$w_d;Du=YRT{L4oofBYp5tIvzNIILV3Dm}xH~gC>}WOC ze!Pt~w$qOw6%^tmsgX0RPdeo!I@9|jLkn+vTv%dTc6$CRsvcVo9mI6_!6TKPm!=Wjw!(Ibtm{8%N@=zmBvJcJENKn=C~`T?(vmz#j6 zv|x0?vvSwM#=ca=!SAU;Mu9W7rgjz5o@IUY9q)XtTexa#`o#2Dvl^%g7TaZhEU;VP zWXSj&mLJn5l_>?ibaB3|^^SWNb($$K;RPZ8`1vinAwFL|!=RQ!i&osavXKWjpO%4iIsOu(3WzBaw?b>88;> zn$;d1dBWP#95>^dSt=2viscex8u9MEj0K^j*=VAZcwKXurIFN^Iq>?Ln$QdKC5#$7niHk;<4F3zSu@$favcy%KiNmU38 z{)-M4_MIT52&-&ydDF+IuF9-lhMgmPVDYmw*#!05W&bW73Y#`b;#L41{qw_@y1wso z3bhyoXf;~8Yhnw&Gbz)hCiiFJ0W&6ZI^>n~OLQM9V0H?eM7w(E;7A6-*ks&v4KnYS z=5Gk1cNG3HovO!bS`g#DeFFJgz8@UcyN(+6jL!>9!wMi@0ne1-N;5wkeE%3 zA=9#}Hd5KtoJ_q4^VG>|d>2kL$syRiL@_?noqO}Lt>A^g6A!^Zz*SW}FqJPnPFOx?Vi$vfxFmO1w0~lJgFFzeJEo=3@xW) z`q{voFfKW(E$vS;O}$nOWYW<$9#w#f8~70rir?@MPL~~C{ZRR`Pmi>+It9nd$h^TjF4J=Ir>>Q38;d%`qfPOPM6xDKh-`4H**7mK*i{)P}w_ z$4cVgG8KEc$juK35j}7{2l6$J!oWjN1kbqtWe9>dUP_)Z%I%@P2+Gyk{UUkg?dUse zaW6JY507|7JiA1y-*^OlDMfKKmPgvg75SdDl|QnjdGwk@J8cfOsLrckT!dc{-euG= z_A}3^2eEtIvFSQX#|*Z`Mds`!&KmN#7YB#+NKfjfi9cZ5bQ~_OPAHjc#qmMS)y}KO z-I}a9&KvxG>rRujnR>I}_oHyzV|0=1^sdBf(u|`Nx=6ic%cRHedre!l%-L&SC#F#l z#+}>yF+YUHTP3_KE>j>*Qg=MF_AuzELc@(;SlWx+tF!;zy%T+iT7e{h1B&Sepgba^ zrlN5X8$s{L#HD#AB;rT&9bq}&qrGe7jJb^BJzkE!#P{oYGjRci5b+TBlkeJYeQH zHF4HKfAuY3Xs~sfV!6b&$2^%4-Rav|cfYea4%xwc3?GH;m9; zCxrdDv+tq0_XALlZK`K-krjL-uV6|p_jAT={EeN9ot2*I&(DD`#20C386?u0D$_EO zMhLcfIg%LJQe`WYE-SfiM0bA=FMDnd3XOMf&?Z(xc~&{1auR!hT{5E)i2DFOg%TVD$Tg?Tm^}M4>Brr;_aR>})VF z(fYb0%s0=JYJQ8Re^35E8x;L@gqaLrMAr~Ai*JP4Fmynr;i$k}qm(k_-KoRw7h?{U=d(d7lJ8;M9bgetT!tKmDw ziYydPo~Gk7#tYOq3VF2bBEI(a8_)cwYkb{FTbX(?g=UklzXXtp0*&!S}08mi@)Q954{yBEZpEL|85|p*5sI2vLfxA95Q556< zCzl8VxA#&e2<4@%lKzsysmNKeSiS^HkUR5Yh~DeyGK=xeoDS2e6Td|QpDd*&5NL1b zYO6iYAVuEuELgcJMF?A^e#=?aD()8n8NXptaUn}MGUd?y4+-0Fe6JIY_&d551K02R z&VC|wpQrbsx^+P}fT131VaiJ(ba&E=ma}*&zjU8&^XHBHOoQ!< zsaN9K_pNMY#s)Wq`yWDOl)X~MzTwW5bQZ3j4~ZGgACFXshRg&w8+xow>sWB~8;|o+ z1%_uh?3fv}L@9^QoQK^$`=)X)Sa*GTN$J_)qRR$V4NYNB10$8QzR0G$*JPDW9JHct zpC2`&?SXc1l@8GHcCa7a0S!4nQX+Z0P9-bngZir3Yy=vu1xnP0C>ijg!s7a-GVCu7 zHxk$J+VT(XbJR^=LfkEUBYxxOof`)>C@bwotgu7@sAo$T#sp z`qMW}^tbAO4G!@^bJxM?G+yRhn}z^m

            8Zl5O{=Y-`%B?A#5{Z{|9z8U1~c`POeN z(c&>WPX{KeVp)Su6DR>FXhIw?5mrLAjZ~w6uK_(Y79d|11W733$YV>c znOz?BKBW#^5WRmz@~eatI2o!bOV4CUti^eTE;kofUBhq&f$iSN3o)KcPQw3 zTJ|;@`+SY+rQW**dG2h|e^>mXJs^F)2+o+gNefFk7Oq?9lD0#GOQ(KnM4k3xWo+YUsy}LU4oN>6*k8RFVM+BWBan%W<7o=YL@6e?YHl|5E+$tiCNL4)_ zwf-j$RijCo%KAS5kU($0QxfZI`GKGp1Rj{XFq-%i9Ff3abCBd>7G{5LWK$5pX?7CE zx)o)AVKq0~-Iv1I!p1#a7++SFspRAeU8F&s&)l;A+3|zZz`Sv?Hs07Ir$hVM0g3Si57(%m&KrExP>{4*(?U zV-6{le_;H4CY!Zrc*mbfZ*QCdL4iL;LOvce@n)w$AHt#!plHXS2H#)d+AnlBo@r=0 zHezZ2L16w%zLK6K;-3fG@n`ULD!9!5)_i_VHnn5@|Gz7!`jE|ruSFiu6ug$3hSS`+ zmZv5f(mF0q+vI~}XUVikc~tKYJ+*tPCK3XPL+_HCHUK0jWbTknQCgwUWKvUz^`{Z(#`kZ}h+Hok4cn zNYZXGszVnDni@1U(9zKbJkT;!=03QZe=)2#&{jN=M)X1+l?K9>x*aS?226Ll0x$t2 z2oO+r-uf~kGP7yfeDD}U9=3xbq5hm`PS#WYo!3CGhUchJ0dX#ip(FaV%XBw-*N;!~ z+cUn|49m%XFW$wV_D4B1{1-f%eAPp@)~|u^!eznU`MEM`>=zdN31JaKc}=s-LZ){; zz>KeRNz9xp?$_}WsMV_DH(R?vgDe|Hy6#w5LLVds1(MYO>(@oKvo>?K;Mgl;=>5XW zul69n?jH!xSd6=-&s;Y6Qst9A9k9LrR+u3)LIr(bI#7KCYB>FS3}BqMbjteXGj^{e z%jnvj{^$rHq+9r7n#Q3Eeky^%8Bv=Qq6t;+kY+r{Y19_XwA|tP!w_l~3W!BzBZSI9 zr38}2dvmT?N5Y1|Im%jRD-6?%4&xe|Ew92VgoaksXGNnvz>^Z#w?h==(8iMy8J$ahlU`t`QXf%&62& z)E^5+LIzLrf?}3i5*fO?9|5<}_PAuTp5}%nK{r%2y|F88n19zIq7=)la zBG6C+wQC?S2UGQ&^8;a&=!)}!$|t5R9ZXIf%L*0ReN9yHGF_O%!g9<{fjh>&eaLwu zjBtQ@7$K{SyVIA$oy#FF)&~!MC_)yc#N$86pB5eC%=oE(d>{>vs6i5I?i-KE2|2%CR4I}{o*3W) z-$GUQ5pm$uU5g4g*5Z~bp&m0Q-KkQ~v)s%(WVBOE`>o@XbslXFgvU1jXK&RyHSk{^PGnqW>ek`Ky~ zNPIHp9Gc3N5b&nfr}LpiPC2ZOHa6w^tSdSW#wws!UBa6FlsGg&R34$|sy)$iLZ5ce z2!B|T7G2+*sbbJ^Y3}Z}+vB>uy1Hs#Regt591(J?+zNyxRufu_8DwsOskz~*9v5Yy zE} zjv#0KG{GYLo76rOqbKNSn#;I80u|J#^%Z{y8^`>QIRdI{g_UIJ=C0tU*j3R$!j41` z*%7;vKx%98%dW=01lugACOF8)BHGd1`jWHQ5IlW-l>p7Utr#tcI?njUanOXw5y3D> zAn|8f2x&U8hzZGR?Ug~z$1d_VI)Q3yg~evsHFqyo_;Xygt*fp@kl<5_vPPP!h6k`w zqr|@>x#cjHb&GJ9_bd}B1s$@%ibqAA@0D;ut}*`s<+0C`f~ZiVR3;ELc0G$t6PP=Q zVdUicbD}Bs%96oHb7j;*AVH{E-h~3{V_|N!NU(?=?iLlst1>3I`xrK;VXm#X-swW4 zB#&0sCRhz@&U;5;e)0Sw z)n>B_;%H=mkQ_u4h#>b5t6u{NutA~3Bi&~%V5I2UM&~G9F^UF?R@k6{Bta~J%nu6? zD=E=UfN-9(9jd&oueS0L3eyo{C4&4K`Sbe$Sf1cnQ9F5~#z(=N$1RyC16LaIC^pk8 zqO5~z<$fSGz7P@1-OvMt>T88HWep7^0;L*A>O+2HDHUrK@k7)~enc>&S%PHlb6-f4 z9`er#NQtMJ<$h1m#`o7gb&<4@`}M!A^;JH^Ae2pJL!4PTK^8*QdZJH5^N9`9&eqyD zKDxyB00M#BxN_>AovE(P)+(l$HITA{MKIkLSD8MBO*-7QG>{%IQ&cH6o%^k@S*C&H z(T+Qgn}$}Y3%M!u-ckZhYmFR1oJKWJR1<+1c_)U@Gd}ASwg~8iS2w8-DHX#mxvw45>SZsa@yMzq`BgK|dCfFqQp2h8#PBJNUIy3x$>cpGHRF6*Z7uKX#S6sbTkps1hG}H&=@Y z$K2gI6d6qqqf^+!#yvCaLlzrED4sV@eP{obc&9Fdk4mk$#*Gsl0;oahv=;CQdo2&@ zZ-rq@pt8vj#GJ&6JkgLqO}E$SS}JI!yy!t0)IMXOCoL3%6pgQ@SB66Ieb>}BI>tvn5NnEe zC2C~ud+tIU$#gn*4B2&)jQ^8hDW!=;l6WH=>FJdUE&8D>8Ro+dsZm3=l6vE;^*%N; zM8gJSa0vgZ%t%~dGc4(psRh&(jt|seXrN`&wUj`GKt_OTN$zV-_EjtgZ9*m=`atFr z#u0urCqa%y-&*FfoU7_qE2fUfOH{88y|&C==a$j1nH)j(L{kJUDj%gaXaoSO2^J8l ztY4S{Vod}5FdrzZC5huVWra{S;>eg2E0QNn6h~sZ%;o;QNSrbDrr1WSsRV?X zN!PewO#I!*9smB4Iy#?tqU1PAf?xR}Zaa?n5lp}R2+h;FL9HV5O|WT7Ypj7tpG9SUAQ^Dm16V3Z;rJRgQ1flmA|0_1D5=k;iua8oTP~=C zq}&7t9eAA5^H@r@Z+i?ou=Qdx@lDwd_M3}3I#go&*i;}y<)wXQ&PiNUK3fl4njDxT zONy>m14S5Y8Tmi~ph6&}RU_GQR~Zp9lG&qAON>=st@Tp6Ga_7>7Wl0e7^sxc?J z&q`dJ(?DH)HT>88!7gp6aWitPviR!Tl}~J&_?X!KbhnI?o*9eUGZHyEnS)_ro;39* zpkcmcxorBST{dNHo2G5=J|FF`u)8-U>|Ln#cRHBF8Hudb6 z3KE0f=KE0x)mFuGd!o@Tqb#*~qV1FRSoJc^)-!Lvuo>wi0Kr6{{lmTj0##tjnnY6! z`)MN3xEaG_4L5W~x3duFgIv*ziu;ABd%XI^Hx7g;Bk_NkKh!=z&}RVXXcZ8sHZ7zE znH$*2WEpw)kfhO7{y7*nj|K_^HN7{wPEWMBgSBkjIo=2w=53yzKXc2UWm!%M^w)7I z06PAwfIt;lG7y_Uhv_6;?HpJot|nteTcpM%`0_q{D${5S!4B)v1`=Km|m#<^w53`ur%-KV_u)=2W80 zy!7iSgpRE+G{Y*5g;n5?*0_sl*Z90U#{Tg2_9>2N|5>e88%-NOU(eJ+ASNXuI#j(M zh+?QYH%>Ie@$fq|M*Q zCwx#obXgycrvf=e1AX0pf32&67HS|!pWYeW&f|%GC4pjvLa1?!M9-m`<7aTy&*lee zi$!#N*v|B^qz8xqVl3=^(fI#-Jlf3>K8Kf`zn4E|y#RVV91b@c zh`>?d0e?g!SO8wds2zS_Q zmuCq?-Y`pOY63+w%(1XqN9S~3F(wEyi0WM`0O80(j=Cy+9tsex!Yfi!W(Tzyl?9|z-W?wPuP4ibdK zpgA>A+qTNlSz?`J@AN~-i0!vn*mnu^aA^YV3xKvKMUSpT^%E!`wcg`%i$I~0ftvoFawVEm~oPL6;@a%AV)t z=7mbz-m5P$d9&HP9AEA3SNGR;8*Q#%%Aa|Y;}tK* z&&MvavPWdzSuXVjC1p|QqoU7BnaXY&PipWr{Inip2 z!5f6p62%}9XgUc5WDp_~Xd%HYz*G)l+vDndpcx1>UTz#*7f(vJ>mgcy_>P2KsX*Hm zl89h&1w&hyBn+f;bnBEQjW``6}36U)4asr z^@Pk(eBi0W@H*@A=Yp-}iC$jmZ#;u18nLj35UOm9M8gN8B&t_NHd)4>Q}+ui{4qSd z#wmd6d|7{NlmSJ+5c`E)Tm#**9sof{3+-@wT6sXAJx<*N1~;suTN0>TF%YO6;MN&| z_6Jt%eVWsxgeDURj~4ECz2xKdGVBwd=Zl|^8Hw*Dkp9Nuo}QdQN=OubYRpKC?E>4p zZ@fk*n@9qI36eZ6U{mdUSq`)QpF~jc1BG3ZKzn(7WY3SKQr;dO0}4T)!%J-+l88#R z1z3hFZnhxMpqcjkUjN1Ggh27Ve!E@TuD_w<=5S*KkwCZQTYNHdkM9BiJ$_uR4pHtW z?3O>Ef!h3UJf$%k$OA&?{l)j6`-!-Ctdf zKu^)!vH>Tz#ewp?>MP+upqpbF(e`@)e+yl8JQ2M;?!VXaY0~zU1SVc$e@P7jS$le<+W8w`45LQ}xgj zO#)?}X#S0__&1)~l#m#H5YeZyXne4T+q_c-M9^`akU#_q+EP+8mNBM|3cczkFV?zO z#-%b6Q4KzwcN9@8tOri?b@TC=0sQOlU%K5>L2aNj)}#is%3-*H2(duMA7O6nljD_>W z!rE5phsuo3oH=>?-bFrP9Yg|MIvT%11(6vO%lr8L?lg$D4sEi%EsZQTj}B28iM!3= zaCl->EjKWMvis3ihXedWACKQDcQ%1mIF38*;Ttb+5WoMzyWq?A_#}(0T>i4gzH9`ftz#Kwbn01IqX1ClunBnLweHZM?jsiVb^_gifx68I0vR}zI-dq%r>}0l zJImQAgRQVQB#Yimp!{zS!LsI(z&ctzC61ReYR@jJWqS_A@_Uf=Iy z=Cyj>JngR6A2R|$oS}VZarS9=fWN;5=|ArNKAAps&_JHGnHs1YN1*I)+)hlOm@mx3 zw3bbcu`niFVm&i&{AuU-2?>;hsnl4)F~4bSrNYUMB3RoKhzPo*2D(2@C0yP1RtVHr zC)qkDPzglY4hey-)`v(WObE13?kC&aE5FeM;-5Oihac?v#Nj?r=waZBG!S&qoBcq^ z-*}E#*n$!$5G43i=ZQY$Y|y8%8>s&a%|W0X8kRBAK-uYBIGs%k!hB)KiN1(sg5vOQ z0&T_<=<|I!ISGNDDc^DeElr?chMRFi8W6f=bSDHltATzQ0(p!?hT~(cccl780_e;@ z(R4-^n>ZM6_i-X?as=tf9X+rk1@u}2<*l$ejj1zB+YJbGdw6BLj6iY6*H?TJfrcL` zslYdf)#_79pyYl^+%62eJ$ziPKE9nm)<9o|gNN&0sD5ZhnYK;0WO zkh4N(AdrIbvDDuy!!w2fM4BsOzE+rWdz|2GXLY_BUA|KJK)nWn2)ZPJ4g+EYi019>R>w`U~!Z#>WN93g-- zXCcGYbrHye)N?7;7(lb+L@!&mn3AL&enV0wTXXjkQ8ZXP^o?i7)Sui6GZs7|>#DDt zMS(nyCQ$5bQvykWqy&<5k%<^`B&V>&&oF6{FY~~H4gP%dNvLcx0#tGVoW~V?`7kmIUs}noR&aPI3|diTQ1Glq}Wu0F&6eN4Yd0>&UPbi<;cs` zZTNE34eNTfTJ2K;1xlbOo{m>Mi$HRJtUw?@44o%%zo)YV+UKz_f@VE%Mvr_meDUea zm-XKTEOCd2@B@88hm3wvcu@q}nLyd!xSfSSlt3P%wa#7{z-+kSlZd>gjh`$h8fX!M z?9buO`E}IE&nJ^M-@T57UH#yUg}Hqh;|W52#rR_To<@%+XP<%-34zf20Z!t*34|W( z;g-I|!QtcqZ??LhI@kiBIe{LZ@%!-xxAADvx&I;95JKpoJYuxM4xkTQL8V=r<^z2a zf%rF8kGpy23*$r?)y`PxA)?c6VZ$=V_&@_svUZaIH3l&Gd8s6ZGV|ZVJKnTNq>~DO}e4uh~h@eOG9p3~jG_?LTzLB=V zzCP|Srs6HGAD(6V>1)K|x1~G(wvUJ1_T}C8C+wUO^bnT^f$*n%d=i0@zwr!ypk$21 znl+H~68~}9)UbIp5H@B_qJ7@b26J&7YLwO(p5uZ9;t+(Z_3rwUGGX_^bSDS4r3=WFZt&C{p^^&DdqRO-TmRXU8e-v zJeC(NH=+yv%eO~fulpqJ6`%2T^|X1qKE$gWQFHfLj{4C$;0KClK@!xOocnrHl6^=Z z|BXM*5DRm!u<}`Jzc90hixCt-LIP+)0xjErh@!izJU*t;Kxl=*6MdOzyb+{~Tp&op zlBNVglS%_SEA3{*Ut}ySesTp4Xn5!B6(09_G`^gQFFu3men}4#UD{>^H}Oa-O&Yd* z@+hr*VUH7?{*9+JCL{tv>@{Ac24c=75o88MK6Kc$1WE`Y2M`PGkRHJwgAEjFt${?K z3)q?rD&v^acHht5KAn$+83>Q-yi@xcL&FDw;tamNKj41)bMYGmcxMPSJer2Q-{6sV zOTT;!JjGgfs$Y*HV(h9Q%s>LcGkg*dRBmk8UFC!t;a&JBesTF1k zRCO#Y5X&KHjURVSjbQwQGZxCxoYBZUik*=Z(#)wEAIN^7imU z>dwwhm{2J39wo&o#lqUQ#KJgfa|Hyd(-R$^Y*tbDz!%N4nKMW#rwPWiWxte|J5v%! zt*}Maejqk9%clQ8P|O&bHX~74i5^MbomO)+p)e(uuE(BoqV0*UfIt-x$oR462hQkW zqiYlPv_5EY5Sw}Xg`rATHfO3{hrLrx9y)@iZH1{FRyZJ5(5EwUj52$RQom9X3-d_z z|JuB^+3lQ7G!jB=hp_}Wl27O#tc4H)c$#5<9s(`w2C9F)Fv3UuQk#5upvei;dFtkT zh*s@kHK%e{kO9OwQ}-3b!s@dDHz18#S(vfeEwA&juvR2e>GWFYrAjR{T^PM16=x&{ zcmyD6pumqb&?IL0lXcP1=_EepD|y1B*0-3gNAt#4U{%mZ2GCFios@QlmhUC-v?^*X zgQgv!EUfW#Jr#SRnU~mqE<8lpY&p?Fkj0Bpl&K?oj_l-S0d3p+f&QwX6;?lr)TW97 zS-ns=@k0jgv;fb{S38seEycTgVHNq;^K$ zFaapCp{pg(LWfX({iS^NZhI5UP^ zK!XYrx@;{zL;kcVnJ*)eZXhJ+RqcsJ01TUcm0_G{jSn=f3|e|_ux!u`jh$#nSxFgS zG!kfE0fDO0KQ0QoC?GEojmwE{Gt{*6Wktgc6!9QAfoh&Jm7_uC@HuW6kDr`Cnncz9 zW8sAm88t3Petr-^FR?JBMOWYls=)n>Ba(y~2xVSUn&qZ&SZrqZLAEk9c{ICI5 z7V;-XNDThWNFYt*oHU=Tfvl6>o|IT^E35*yPu3(edARG-Ifn?EmV&48SLX8rHB1Jo zJ|75DkHd5%!voEf50pEl1q-bpN=~Y@01yI!IAd4^1gZfPFOBjGad-}$moJ(5JAQW^mxv=U1h)9`SHMp#4sG^Y%z zd3+#1D3*Yb0F>kdRc1{g&{hO`V-4%PH-nn#X8Ed7bHVo)kvtMvl%&zH6D^fe$P%bg zDv%u0(^$i~dK`wYJsQu}COf2fy0G(erdH7$JFbO5cR`@5H&vDH%~f01SYLFx@|B_n>2rk%lfey@^JZ1RYt-H68=2Gw9>3fWJ2}V)q<`*A{mvv)WV@e8|!TNOQ z4-UqgK2>_6!P~PGS|}P{8-98X1V_;Js>T1w)f&K2CS^v!MK_R%LE|YQ=8V!w7A*6> zzs_n9G8P17$e&yXjQ~%Qf7tr;tQ}KXD{E|pIUzAb-#Pp&k{JtYV^DiX1UVRH>vBB! zOD=OOgC+czdT8=$?n|_zZ|Z(O_x)vl#?ISdkr_f9W{va7h^r=(>dE(T3 zbPgp1RmGkrT44o1cj1aoWP+-<4z%0(vhmu)XY`w6FCRgLBzisn`?JwBthiPfvBSpz zlFv&flLTsK8!WmVvVmZfKNZgxHZTWU^T(~QBYJA}1C>@-F*<_m1BJoGFF5E)^#kUQ`-SO@ z-+1geWn~xmX=iPOd3@H&N9Ta}fiDRB(fDMQ5~%4v8%m%T+p7AF#EB{^PK{SVIX^t= z&G;y}wNZYJUS`twKPTZjL5f_7gP@Th#C^u@$G5*&+|0tDrU0lgh?DhEC)DeSMnW`a z3`^b7$_J{?8Z5tMG z>+6)-l66~1G1D1nKCN5w$~oR&l!!g+zOpC?#yFT4+%1pEdqg0Br^UayhG=D{47x~a z>=)*Q#Jo#JK5cU?1X46?XoVe@K?7}BGdkC22Woi2tp?Xi7xMaC0pUkAV1Cg=rq=s0X8VDFtLXh}F{8XNiSQr!y zu~u3nca~ZT=qm2BYU+Gv5}7Rml6pekc@m<*AccvlCJ+)5&yNw!aD0`~_@>`3zt7+tDkv(T{=eKggGF1O&s$7nh55q* z9wpeaXmc1Fr{Y?@jJP$&`|IHeJ)w?E+#eh55NzDb`QzPIa%frr*$-5GEKCeSht#xF zMx_L@AE;P1NKjNKWh@IQrc0N`vP>K8@-lmYoipRM(s^ZKI{AmDeSaQ|=<|irGy-o3 zxe=HfXUU*XXxX56LIy>j_>e#XP;CTSV9%4|!xhwcnASzrv9QoUVS%8uZ)6@T_m1kH zbM7Qp#1VT~j0&+*sz`cD7bcOZ8Q#BhpHU&irG!$_OFjxL2G1uX@^IO>0oF_^fhdAF zS7E);c+HPdK0G9c{Xhzab@f@(Eut01QG%>7H2S%k8=aMi(4up>26E)v^MNW9jgK(B zgx|$}Utc-R`-=^6WDSIuQgbX{cv&8iH-}mumHl?o4jJ+TF;AxcR+y84hCLAo6skBU zI=ZGZ9Cn0I>%3ggUT*J&>Yv+Bs_Z#`T>I7Jff)w&tf;!995q&t-c9xX1R!pOJLxBQ z*+0g^!hP-Aj~u7oMKcZ%eKZabU9l%RT3r;H|gJCr~qPyjS z{0Ro#X~<7&080QjBQhZqTQ08M_HSe&NG{x^?~*!rrAG9Fe$KbQzen#8hwRGX{(1f5 zje%=3Xy$5(xd}!!P;)EH@~3QK!QVvqQ7f!IYbAoNiYv$p#1g@3HrNS-CvSmk(@pOTZs{ zf9{CPazAGy0Obp?huyIzL^Tr*3q<_%wa;U-*54}wX+es}O9W|@*2*)2PKS){SfQl= zAL7dIeMvq#zaQD9)fzVIf7P zUFMuS)xo$huaQKFBja|`>PkJfGIJ!r-v0i4CDKSEZsgt_9^^@jYA)vJku~^2JCOn! z_yY!o{`qZ2C?kI`XHPazeWf!N3PQ`}9c|0BAdTr~cMDG8G>%0FQU+zB6mD&yp*k;o z;6MX?Su{A`NDVmMdi?tf+>XiPN%Xte2stk1wWCx}t5spKAGDA^b^=iY)gKE3exQP~ zVWJfb>*}o#Ep1~Xf2*pt5~oqX^P+;EC`sxQW)ik^>I^2FjD3F| zioxy@lCx!OAgq{nHty#I3DgoKOsCyRrnVu%u-z?VKe^yEuL^})Hr8z++vUUh(UrH zOCW~HCYU4D8Yn7Z^%_X}Cl+fUSfoU|6;|VL_4Ebx&Y+mWQ1$+wG=L{`(D#iq1&|fL z$0~}r?IjMO!1>7XJSBt_1mE`lX~WOr^4vIx$&#qYk@`ocnhE&R1c1OGM1*YhkIr%0 zS3bc{^?o3=!=Qp7f{G04-_hOFUc+K};&z%FLL`A==5dAYWbg0W z-XCA_U3HKn2VZr$f?^}$U|Jh~W!m2G@O}_OzsXz~oF|N{tWdk&QCc-~s(sN2%Wsv| zi``SNuDN8*l2!HW0#`W*Bzc78aFYK;$v_zlSmv)x@&02x%Om6O_Fau~1t|p91ehim zByn5tGayL#F@5TvE5j@bYx21=swR+~(E*@njNP@%)Z@y^pH>*2F$=OQ+;5e!ERZKU zgy-0TJRq_h7Ly#ps)ru={sSqKOiAqO!qH3K8q2NK03D#tkMrk`|NCGGMD|qd2NHcW zZz@uvo2+MiSj9QfM_V!{hgk8Rg=0&rWK7ez(1da0 z$C^bAvsm)?H+3=dmmU}^m$5+NO~<%`9QpEqt#7yX|Ni*nkC+zY)xe0#M*M9&(Hbf` znqjt@=Z&|ui5kau z@9#;K!E>C-kuqvgjsf@1Tbpm*VRu)5yx5;b|D;u zK{SbaSDoPls)_>Rpc%d?h@E-6MDPQyz6;iif5-#GK=pekD6Nuvw2p|*ZzK-zP!On& zqsbYU^PVr1^DfRwp3j!#z(isoNGa1VtaQCy(F%t0I=YJ8O$Q5g2YFT4m4-09g=41C z9nTMKi-QU;vyzAVgZV4HmA*^WwQS1wwTsY8DUI+lb^ef;MaXbQI{oJaK2Pg<`drt~ zbr+jz-9j7=hxM>+hjlw3)?Kx+6U`xVKqUdOf?8)lc^wY63zLS-@^EJZHdj&5_1E7E z{|EUt2|++IkT{bywRKr(SG_>9P-kS+Q~F(HMY%GUu2{T}VNH^Dotl3Gr6LM}s7yyKt@<;d{{@_}sRwx9LYi z-A1pEp1xO0qkrv#w`fmaQ6Yk#(`o$-aSHx{g&?ED79_MrfpAoPl%%6&1O%G@FNTjp zi-Fz?6HWG+`tM~7unQ|G=wF$E5F%~GP<@=u+Wi%A?hn#mMU8<~t?tGUeF}J#CY`92 z{`|{+kFj_?O>0_rj12LtpOJRG5(AmSgmXe{A=(J8K~PXy640?pK4l6Fv0&?@0scO+ixU6^~Vh23F<+<=Kv^D zY`o&==OctnR7X7_inxbT;VJ=@m@KjWEXq;NfutR>2~pyR*yRAfR4;riNdBqb606}) z2!#PB-M9GcKM=lu{^!SrIh{`18oRJ?gje9n4 z7eq+Q9qZ3Fb^rQXj(hH__bKMjDNtm$U!=pf!98JhzViwd+#~x`B&6BmpE3YaP1eTR zg;7k9PcH~Mk|m(y7!2e)Vl7BNH{hlWeAP+h{_3}r0$06?bnCQ_japu*+O>lg{jE8q z9(&v7jqPMF?c$=i)f3ErCH~n?n_I7g2S5$xi4?*EpOSQpcyj0i0lhYMV2u;#k#=EX zF6~H)RtQudM32Kjgh34!x}{fYACJ_31 zb1$UXfu$22wjp)oI{;gf>Kj>ARF}DaJHuyX_Y4W_ zx#oY`10c932SMozFtNJtD)(FnaV3S=CG>;cJ^-4`t~!Mn=6N8c927Ftt>1|rZWlJC zH<|j!L6M8|ps4G37_WEre#=bq|Ho^;pKxp5da1Cpd}xQ ze4{SEeNX&@fe5_FKLz9-_Z^x*J;v_?Ir~{<9E51?!HPqmNP{qtSSZu<*2AUsJz1F6 z9)+ZKH!t`E_xCW(+e4rH8RqXRV0;1g_0(ag4>w)`zi~&@xF%s36#B+5v0`K%Dv_(B zycd?W1k^o@J|e_eG0;>}(KLM>3eCt4%5?${k#?Xc{q?C+8tbmb+*DnoVJ9nST_``9 zZ4_k=?{2VxJ&U%dntxDFeh1z#=nEeFU^U^cD$OqUO-{B$h8>^W zapFoojHX_O@;>&rI-&B#TKM8twj$G%pJx95hDBhHe|GtD-3#K%UvmVB1wirlYTB3@ zj>wV7T5XK>UYO_;kSJb_HwGFDa*l~*5ZojyP02YS)584~3a296`sq38w*O*RjMSoy zq}wuC#Y$dX=_X#f*w=v7F>`0{>AkF@N;BGs+U#c1kr%CoOBsh3dn2vXEO%)>%lzFvCCEPT4-`Z({@H>2 zBb2L2_DN~@7-(*=5ULpi8FP;ML}HDp;2)Qh!IA4?A!in%;##QxWv`c*afgi|5qWhP zv$(KAI!GQvZlqSM*le*FX`)Jn8jAb!F%XLvJC^*T3++dre(?OAd)y`Q&kKSLnDm2` zerAM-dUNlk;cB83EMyVdqcM;$6wC%@gM&;4Kwwb%(NZm_BE&C=X~EQGGcH$U_%W@7 zw3EwSnRkD#{`?ts>Du3wJtIjkUgYI|u1pI${LsN;WTok{BAIboO3b4_6I}*E@^|yy__^^s(8yS-pvZsDwI&VMq07>2 zKiYGDJLcAVbhQ$AKWs40+YDk5Yk;C=Aq6xmpT8 zl^m6-AqN?TtyeNaxWdyDKQe9!~CZDw+=|}grA?R7!^maiM>>-bczMRHApBw(Md&@ zZVd6PGXM??xR;dmXQ&w8`T2RcnuYbkS5t?de_xSKjW|^WW$=5p076=Rp3u9!AIR%r zF%U!~sFw-e8i6$RNPdw`q$}z^-2s`+n`(v#?k+C{SYdqM5#(Ux_H7Pf^cXv4WFza;Tv5{W)=X;7yY0vPBs zQ^>)lY{bdpjT1@nWTqL;J%IbVU%vDBUeAvfl2PDuV;4|6K$TCoI}<%sU|FG7abUl- z542J1i)zB3#-RMw=7Weg1j7in;W7@BO%9hL-NW+~WbTf|iywTKY`yN;V|Iz)+djYI z<~MBuVh3VJ9=1q0KMtcZ?V^s!EjSAQVqYu-h4OCb6bJgyj>LnKy=DyxY{AKWa~L+? zBlLsl3uWw~Gwlo>F;LWrp!D~7e%~3|w*ggFA?U9&VE+Htj*k}J$#w%;fG}@$G8Hh& z%VA8xj#=0vIFyYrkCYo(=Aca;3*~?K17J-lfB53#Z5o<6o51k&483xo_TErR0w z>p-BeDxU!eIv;zY4|+*DHw5YIyWj_6pJ5{o_>v7PNDl-8kX7#2?2Cm50v+^9^l{#I zLf;dMVEHYpomY{48@0D2IuJ;-`P#nnydUVfUo0Ho@%o*LPQTNMi!5Js__r%D=B;r3 zC42w*n*Lp4BUyNj@dO0wb+GdX=#vPeAZi*`+#|?{dmzx}R|9!B=NG^S0DA75>c{2h z(KR&T!EP=xcvhV>=qM&PC-HLw#@?11gTy}sMcpL~x8V7cT7+BTvD)1c27RrS&I*4+SQ6y<985RE6T&`o+2ytJSVRLea(D_vFFg zdyFQTd4>5wZcI&h(VGRZS7d(F#mAK7mH3IQMpp7^Xld$l;oo&9mC&SZ$ zK&H(LhdvvBava(&P|L!h>iX^}Vw6^ z2D_D^1qm0)s<;Z-tVtSI3~Q1F?<9g+#xMUh)^xf)`24!7VQ?V?>7_vJ0p)M*a6Pcy z@IauniyYT-OL1tuD4KcLLI5Hp@Exy8Zjnh&BZowk+*ZG2hJh8wHH(^>AxjWq&`HQ) zO{YhnUr;BYTo{cO{Pc0KKe|D{4*{S9fgU&%&n_UYMEm@hS=ed>B6#uWI?PzFK2S@D z6YNmE(*NQK58!8fu`EN7MHw^Qj-v!@MOinP_3n;IVeuh(u@B@A5{3y_@PW3+ z{GcNa)Y*xHzKL*xSO_ax20;FoS2-6MfnO>xy6^x|OFXyog_;ASz)Qju&BX#BSr`4O zotmE!gCtq-iD)^6u>vcMAKf zK&FHsLlN}|MRYVoWbB#D(coL0XL}M+gxdtJN3|T$<%tLsgV6*lu$DLUfpB!-xD6LY zN(jW!CuhSHjHR&tsP=7L9B7Y2N7IJk2#K(TB5eu&Oo0}IjqV&Kda`N56=Vq_x_ZEH z!@S6y&99{tc^N#Sr|~OK5c8yur%8OPd!P(9G~H1=_#SmUWk1ly+kvnN3dK-gd=>`U zz(^=VP1w94)?1*#aW&&NGWc4vkHr_=ZjZfU69h`wQUoWVgd1p@M>DrK!;5(aeltYOQ)ptCzyI5RGQ3 z7;^%HUd{*FR98({vvqFRkq^{_w#AJ>nK*`VUo61;xo6XF8vsY*ibk+Xw+t8=AgrH7 ziAKK34AElbJNJWUfx|O7D5YW^h(pK{dzuf_froS` zqpByaSDb}`GXaC3@Il7D@D9baHeX!xBsY8?WAoct&+>uz61Xu(JP1C%Q-+Q?VQ4cK z2@b^^SW>riH&~LwVStEGF?uvCBasDR40V&`eip*W^7)^_AW4l{WKn&x50nuI5ZZDu zTL0@~hc6lj@=N4ZC<_aOun0<49H@&u}*%0hRw7aBRfM%E?md%R^=N1Nj`PW&ji-&lz~~7&Nozm7Tuv zq*ECgedPaW67do~&~(iz#dc^nH4}`6(E#2oxs@iZfmMw;*!ko3EA0>jkR(@Ug!xzc zB5$zPDP5?}!^Ma)cgz*$qz;)GLqM=yLDWfENQ@QnAh|o@&Me-E%%~F=xF#WKn)8RG z(yq1oPXuAqXl2+RFXuNc3+i znCZ{=-s^lnyf~eY)&Pxm;YkSeI26q_a;Inh5%cI%%mQM-{7WBb%ukf65u-x6dtGxM zi1g<$)_e;$w;WG6nYslZ$l+)&?!44~Ab^ENjQ0Q}JBECBqAUi~Z6?otW z@cBiRu@=_ABM|z1-LoN=XqPpw(r(6>a=*pA3K&9jPy@v zWjK-%nAUMR^oXv{ntLA+qs};cY^L;(>jfPUNszHZXVI+Dy!4Z-%;xl zjem_Ba>**67tjqPo8S6E-UC@WC$tSdm^?qHxepZQKk|SkA?XYqxnpM;k4O|VA58V6 zPHU`wQ@vKhwnUhhSDPt*G6HSs0~Vc>A@t145L7=aH5AQ>Hx%4y`zR1%A%3SX%o%L( z834=uS4xA)SZj{EpswhN1hcH6WANvk42jtv%C8in%qf`iJfcHp zsk;BUV}v6ow>0G6!Rz{kFwMezFe9By)oK{_`T{=C=8D(AggN1rkyO#FCW=+Sno*%o z<>$&iz7AvDIt)}ab|7guX~(8{#cj+X5=3fQ8=gFoOrL)=Y-VS<iK*8W@* z{Fx$B3JqspXnuxOjEH1PVdSiu;fyw%`2ZHrp3RE?yBvW+7&?%g1LCni6M-^<5;+D@ z;yeopVKOVyc`u7GB?Y3vpMst};R7|a)YW*@6D)$!#fH%VAc91bfD01Z6rVy6ph{RH ze940|igltca$1=cZf@MnU(O<%S~bZ?kT=sr{Kzbt5wPa^d2H(;oBKdZV?gYQK5I3s z{~s0+{LpOV1>TX!vxE&mdo_K|od(N=Kq^!BGvIb$lMOrtzwd8TQmh^?LeR#xe+QZY%Eg}S z*n0OHnA|nmGz+0CdfuM^ee3&y7PYsuwh4+j|1QjR4@&r;nE#7pZ|m(FR7Iak|FH%8 z>z8z^ax6SKz!AU%4FNtKDDeldC@!Qv?*ET;9FJ1sIbGE8;~U=2kx8(hGVO*P0)F~6 z&{)jmK|B(r(?3Qh|J_-G{yh(%`|eBhxkVO~fGSxFJrqo=hNkY)2eb+ZiAlvUPMv<} zE0HB&fib$mQgUKgRcSRFpgVlD*z6d`p^H}dU=`u;O4}cHWTO?)mTD$DX!OkWRb?8Y(lX0kzMFkbjIm?0=yEPrHX$R6+>4-G0?f6?)Kwok#i| zK#sCgP}0P;QX1PKE?DX%nE8Ym90%j2Goxq>2b1C{XOzSk;9%2dfaVWzmu}-O1CI+D z^8hrP{aOe|1)<*$I2Y~SRNt3CE&`mD{hc^xKL;91L*M)j_wON~htr?r6tTxUh~ZKY z=ytF$V5(;FF)>8|kO<3xAHX7*DVlCT5)umr<~YrSi>Rr_6eo`LImD)L{a^(tV*xuf ziG{wyJT}}#@}hU|!aNIl{zp@txaZx44JEn{DE=s4 zfRoor-0{}4t55zj0D1W89V+d{3aID+2Urx8h(wsq0S$ZuQ3pWTn+ft~)>Y0i8O zG?Zhp;wi6D2Wx6QMrH;05s3#MF`{dv*6P|y zm~|wnIjl`#jte8{2l}We{ZJa@;*x!T@%de(rOJ7f_Y|UfW%C_$kpR?AqT%fp%;qOj zr`&}NmBz%|7hne%86zDT7)f6edDk~A zwFW<@-h~OMBdlF{-jbLDifDym!a>L^pcD-Ban}_d@&~9ukg^~s^y9~at?Brb_L$N2 zFZZE!@9oH?`t@=2k)c0({sm5alL!}op1oZAqVKs61aRkAo{}3V za0qmPsNhi(cK{>M2VN2cN;QD<;8O;7syuiyAOr%rDA-N0mjR^jc~s>n`%WCOH_=4x zWom0DSf{T)zfRlv-J927Hp4RmJWfXi*Q0So+z{9vrkS!yT#3W+m=+xWaAFyKib-&4!tp zozU}LBtAKcnE2ijPAi?CJ9_Q(qXR9$xt4yWTGNdG8vCRgjy7-RoINVG`;|*FY4W zE^om@SCwUy&a2wbW@%`zin+KxfJt?=0ncR5{P`!_umKdB-(Fp8VN)0T&Td$ z_FWiRT;1Z2J1o)$S9X?W=R5X*4+czJ`xiPlXL zAo@fVHa4Im*R%%(JRNyR0*aApRvghlrJ1sSeter1+1i_VseHY=)@Sb{7WnB$+?@`A?NbKuBc!B3%Vv7b{=RXfBc4K~q4J3wQ zINBUf`P|NVYKSSv>aEAClZUm3=Fk}~+|TG}e2g@12uN;NhMoRtVcI^w9{uZ#Nb;I> zWnZIoVbQw~Xig1iblO}ABA<8{Hr#^&t(`oR2bLlCP?B%(5tp>M$`N<)+t8!ukgwlh z^@9wxBcSk)n%m>IIUGF-HRrXc^NFn@2pPeQR0=B;g9)4Zr?Z*>I0F$pejf~Fl%zfu z^bGwt2Od7oSYgADkosT@%(DUUQR#(;69yd<=9#u<>FmEMMY-rr2*mUmK+sH`Tr&6) z_LS2h(4Z72k&7hn4nmONkplY~vFhQK&l>`Gwg*6gp9c?pFue!LoO+*P2^i!oADP)q z&wI*%SE(4{A_ovKs*~_)OZT+0o5<1}3^(z!>Fjna)cCYn^|0`?j6l;Mgr0n$$OUkG zY!c5;|D}mfKv26CS(2*n-sa8Q7kw+S5rDv+b`-t)bt>hwzf9eq|17-$58}_Mz3sUQ z>Y{b=C)y&>hXjqx(#lajBA9WAF)}L?cOT5`imY}OfM?7WY4S-`7$`^Df)?>JX7%%t z7QfASkSP(g=R<)72@>HFFk$6$gdQ#)OYHQs#6oM*V5A5Day|d}H+$!T+e(UsVe}?} zBk8Wd+eweNHjBv;CxsFD?ms@lr8X{*>rkOy_Eo2)eEK;rKqcs~>Zzs{LYof@CwpET z3xhenXm;k%?NZ|k1d1dlG7-fz@h8TVXE*yj8Rl%iV>{%`Az$GW{Og8ud&d_v<0U84 zuh{*s8DAJre8ZQ#Qo{?^nm_vX|L61ty<`;zPmnKxfS=e-tL8*Q|M(HGGRKgouv8A$ z1PhHILKrPjuS}LmAY{)?bXDB!}F=`WP~~;=o0l91SE`Yq#}6U?Cq>HB%?~ zn0^Tl#Z3PLJX6v+r1sy{kXY41cB-J4XrLy6O8nU|lus#%7K_Hq{)1&!3B;w>{33{d zSBe=9VT<5}Tv1}^3to!}Ra~5OzGZyo}d&U4$(|poUD{$z2`LF&|?AJi=Y*i6GGk-XM=;Ddqcw z6)hc~ui>?;a&WI_MUDsC9cGw$p=R(!x5UI3mp-NX>AD}qcl zkm(RvOb?s+SdeRzv*ND@5VbzzoUasxAzL zCHHcn^Klm18PTvEWf^ec;KDFulDHU|WDh3vScgeHp!Iz|wr3I6cVPFCihUc;e$j^z zh!_&>gB!4C4GjcxmP2-CuF`Lc#g~epP%pcyFky)zh#*ql^aX`J?Q_T%Nx19+NeIaI zJCMV#`#>#I2vr5Ot>j;WpEDomQ`&Q=F$+4%X?g-lFkWKuH~feXXbKjkHih0=Or#Il zqX3c*m5GP-lZUMfn7#rs%sb5F)M4>XLBtOBIYR@D=g`@q3>#t52qAF;t+`_%ebDqn zrwOQ&m<7$4m}h?E*%U&2>QsdG`R0Gaf25bb?-=hnW7=&y{}Zp*>z|*W%jI&7VS9l! z*a!%n_5oM4Q<@sUA4Ia5W3x&=P%NXKqlln9g-I4-Iq=*!)1efS$q9xvQ!1!gH^;`W z*Vvap?SJ(7_UF&FSfNnL+(GrU7x{q%L4XjKFbK=ft$_rQepl!@R$pLE&=1IcC+y>i zAg3WuwhlYwu4{Ya_5C*{|K12e^rL_(gf<;i0W>fz@ig5kBUbZ-kjCKke*PYbWDvS> zgyW@87WC|?ju+P8PN()l1NQ=?@p@xFipJZYCW0=T2x2V$gwV@kVfXP9>fn}Pi&bSr zM+7kw=x_*;I6*)0fSESu&_RXd6i49V&1~}mRSI2xtZmyf3O=WONH&mzA0Wsn3tLA6 z#WITon#2E7X3c}{%OLUZ=t@iUk>o_n=l4qx?1(u+e0K1|oq9c19)z zou(<#Ehoq+%V-*c3DN6lAoQo7BNjVmNgZ^Z3sV=Q7=hvo)ak?YF0pWy=;~)X`6peZ*L)w?GvpTi9#ZJfhd3$>JJ3|Km+9&jQU4aP+tOR zNta>>eClf;>)eh91k46}(*5Fh15km`rCA|R8Sid+aAoR;w_8}5D1cz|`+=B_2&*ZW z(|CWF1q~!UhM_wRfMn=CVW#Or1I>6jt$qCxsA(XvQwWWSg~6gis2+6+{EJ?1x1Ojf zh#O-ZY7BY>O^lXOF_^QfpVN~=o>L$>b)iF52X6P9jgUs)K+w++_~de&2+9NZ%5W=F z8-JWu(en~00zPG?mESneW?G2RH$Mc=;gp*`p%eW?D#>{DZ!{2BVd-)j6kr~=Us&{0 zg1BKJ8MI7QMr;F4pyL-|V2+cFNGT-d2js;E1Tsk@MQIo`z`eVU34y-0n0&EoMNoeC z@$`k5rbPRm=rUN~xmGlu&DH+0Nfu$`OOl^D@9;(2y%vdntjmssjO`Dp4>Mhb)wG~g zj(kGsR|X9uP*es{`b3R|HH)(o$ccoNUwEoLnUgX|=H9x4TP@3QGlZNq&~Pl-am4Wn z1O)vM=yDZDP|laPG|>0C>#+ac>QX;DC1C|X${{u=o0mYbU9c{UJH+QXEGTK9jC40c zR|4r8Olc#lErM%6ILww?pnd-ZpiKi+A5fWrp|?9Ag9?NO^+?o=Xqq;tU#ClJq$f!F zlFgEiC~^luu{~y*87=6+nOs^05hiy-2n4$kNJYSVA4LT|kwDs~zRntsM_3*jD6X_y z4}Dn8X3{{i@Zx69i4WAUn;1RpV&;<4HCG1$LkY;xeodhzcmz>8%-bn^JnR z25P3wfdVcegE-Bufg)I9mmES03;t={=& zK#$KLM(afb;mOqfS8cQgLV0}EKvzVCN69lVG=&R;LGb8Z~hSl>R4HR8h5I5^li;Kj<%0v}3nFjJi zQ0k;d10mw<5e#j28W7W#h)#my%d(bjKzZxqY1i-q{j*i3UVjE-VNC;^E3u~&=+j{j z!tiBCa^Kt;iIMaPEu(TaPqYxG9PMUDXAa!D>CoD!Rr}S`OfT(a3nM!$8vm`au*)?i z%?Nte)mWRJtbq!C+>Au=N7E5B`6^5|Yra>L@tLPFEWa2H>r=?;3B$ROC7OQ!IKPiQ zwR)`c(stwnNkZbAYoO+e&w13o@dZDm5FJ2O3JHJW+;w4$g9(E^Hk+{}2SiZNJ;WZ; zKn{nT+6~Dh!o9t+KhFd@>icgIbiFhL<AbmwR;puhPu zj~^&0fA9>?J0{d2f9_rUi;g<>N<^4k+2~jpDpOgS3O~?$N5RUK4OxZxvG@RQkbq}q z0wEW%jHxwH4jneRMxt1oO?41&H*>|29i>d{XsJ}vfxfW{YYocUpWf*ND&y(hIX)|Y zZbL2Tj)fIN?Q-r_m?k66>xt&(7|DT=Ye;qOFT$)--(?D;0p(!_V9xe=qFZfzIyDeo zLHTI}`Y8Bm;dqZe@C2#fXO$j_cOvn{KBw{m={*iupFi5KRWHPGz2AepezClHp6JFP ziN>GB@%b0RPu?#~nk2e$Fee~CErGZIQv?;kx4}10WiD|1wHU>XaRnyO!Bl3is0^=c zpQ>2DSoMn{sO3a+8FpqvLjgTIBQf5|iVnEKkRI^s>{uAf&&Lfx^AITA=Ag~V+Tr5| zS6Y%v`slSLOFyC~Y-ixyo}gAFM5nXf30eKrMZJOs(pZ@IqTg8qK>>~OL^u9;%P`eK zt8^&)AA4_*-KO(=eQT)vLnA!+qJa*tH=u!+LBc**ANGK)Fp)=SAup7)qpiyLhlm3%dxqY!+{W*@~G7@XL z-9q;A_L@EGwOH}JmInbiPr@zT8olwDvrrmgKQ%M;e^~?RHu~rDh5ewAM3X^C%0S~w z*P#=L@@T0Y*5l_B1j_5WK1Bb-9?JNXUF%buyn;C5l2+~G?~r$-fw0W{aTt(|BHFj5 ziBIyR*XuQo#M*ARlD(|ktBV_W@X9ehaI-n(Y%Nq(G-qmo#IXNy4Me*u&6!Hm^%x2W zKLb4b`_MqZC^@44Z#jYft2-oxZxGn{vmd#&1K3UXH<7f8&q};tCBMb zRLE;T`)}=khy_gR#BHqy4Fn1m@bwwNeS;Y@zj}N4=&`3=sKXmx-UZIlInH4J5B$Fh(tu5I&cI z%0D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 - - - - - - - - - - - - - - - - - diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-license-activation-with-lock-cef570e11997f185e23d.png b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/jetpack-license-activation-with-lock-cef570e11997f185e23d.png deleted file mode 100644 index bc30500273cdb89860d66efc9bca2296eb81a305..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125665 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

            @}2u*xGp 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 j00000000000000$f - - - - - - - - - diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/search-d177a31292d96d5ccbc2.png b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/search-d177a31292d96d5ccbc2.png deleted file mode 100644 index a5d1e8d71d33e317391fd93dad1b4f29608b47f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93081 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 z zO6kAtxVJvL`K|zc0k)Z71>1DS&hwk~Ykd0#<`LG|>dJ;~S0>eb#sMh|@?qzHc^rD` zN6)^YMQZl~Y>|J>jMLCQavOw#Q(Na~AMGhbrKjKbhPVUJRd9})&?C(=AztmvbDVkW z3_Ko7H3)tVQE#QqG-dp>-O)Sg+^-(SaoLsaD=XRIt*x6P$4gHrwnUbez8qDvPw5vQ z_WEH;Eor5NV!!&%s2(}0QU&uDUHO-~(`Xeib?mB>U&yq6IYsd{z6&U34G;=a%ps)c zW(}5_3Cc0zF~5BI9$h3Lzg0S0rcj`b3;wc$Pz;3*O+u4d!=Sj# zuUjJ? zCqQ&*3vBew(a*2d+7>gEa-69BE-KZuX*yt%M$Ew@uRUQPPGL@IWu{&TtOHlTYjL|E zJ9#<)!GX}_50lFBUJI7PLyVh&EkVFKGTrBj#{=BD#2^=`qBpzR0?`f2+{&KDa0J1k z+ar2^_-@7`KyS%wVr7{SEDa^MDM02shPbm6;gq%0MV#gULvv^d#)=7Vn#du$A#Y;v zsE%5eIssC7yemgv8`;(qjU1oq>lUllEOPlAXtda>zw_VFpe^7>*-9pF%uHTHokk3X zD7H|6?>*(A2P#7l0Z^h{)nrI~__ZcHY?W`AIt-d*Pg|_}u3&M5`P}mP`MHjtsj*T1 z25Bi^Wh6;b>_!u9SUL~)Up(?^J)sQveYx@Ka_99z9q~;lwtPeSK*k!G&w7N6_dI|| z1ZOmOBrlxvqQixcFwkh%_$}G4{K4950qYN5+aD)o=07;(>?CU6J^bana=%9EPucU@ z2mC&45d%vlT*!oA0r7J)e*@tWukBb(eJQ~%GS@ipk|ycH>re0jj?7tFsj?smg&FfS z;&VY^$-Aj3tu3%sfuT;Iq#y{WjPW@5K2fsNalShCeVzRS*lFU?K}D~y8ONP=#NLPO z5zB+{!sRJMs*XZr{u9;#i%wx_4&kG7z3?g^xn1_wm+ad65j+>e`rPdCPq&5_u6xE! zVvoQ=ULHHip+IZ!gef(sQ3l91VQX{?<%|O=tMf#FXhE8Lx}`eLKTdY1Yu1iB%nH$b zB+7C0X+BOJ8Oy)G3HXBU3e#kVC3874dd`404ui8i6@hULgQ6-Y)=dFJwV}_Zw$|$ zN8)X2SIj!3$?VwL?A#1u`A!@&U+;OY8RPovoYi&697l9v@bWxB zfByTID@@kB2Ke!MpSSDP6IDpiUst%t;KkvQ0=JuTx4S&)E@kDFg5yTna0;C8X3bnk zWM8|o?MqlXxWwS5Pv3t;aK-h};PrbVed+mtXOl{sN}0gej6Mh6b;ZjV!2ylHF zf7W3~T*Eo~e@xi4%bXXU5O#F}LOP~hB-1fZSYOTr(YP_h-X|?&MH{T5AE0Yi*mfvJAPaTV z0b_&Gx*-ba(pi#l-NCW3aT8-PF{AiaAWwQDLH%2CeGdp@h=^*e02{htKH_n(2#7 zWDeRYqMJBLQNJvh2JYvI1YKBMW!zmC2-n%2vowboTf>Gi6B*J_y24ZK|2_viAEr(* z4}~UKr^cF$^KoSxQFjR@A^dzYprzIsP!aI%+#~>w$n|rHedpyQcGyu@oeWeQe`Kzb z2>?^Ms6Xv*H*@!%b3W@N#aSeiUsXyNOGLXC;i>&Tqj~~Y63LOiy6=7QXx9j=l+N6R z#A+R=aB=YE-|mQo5b?0xOfhTlZ~f>>e{2blk|3!47*O^x!jQ;ifrc-0_1}1KH}AwB z{|y2T*2el&wEn#IN10WnHC8-vsQy<_RPZ7|2<&m@-(=(*$bC9p86rh73cz)m6IQN= zU$efzLoC}!NZ7VN9HV+Wo$dG!a7NAT$@iKwM0Jfvu1-(q8QmX#QsURk{oD3A0 z_Uo3l%}wbEr=EEWraSxIuj3+I&S8kleCjT?5n0u)q2s5p!f_IuFN3W-$-WaXK`j>E z4f|4rcfTwctymekSZ-ALe2~u2XU1$k4YDzGPB_9+y69+q_8-`L;cly*yxq+`5b99< z&KkVsL)t}Xi;Dxp&xgj;8TY{dVKt-^UJ^lwFyxq;{ zni8zoC5X1K(-8WMWmj5P0_~_1$uyi$BSOyZ^Fj zrB}iFOHA`;n)*ZQCA(OZMtHz_L`^Qtr&^d!V1lEtI|f%eRy1c6EX$h^!Am5u4p~D= z;v^$TUofs+31SK#t(-+j%yrD!=JKf(ILii)Fmm_@D2(A1H35&mX>hFrwy%7OYAVl$i zzImK|Z>mQQ%ve;aa%DtEgod{xr4)llA%^dE&WrK+ws+Zg5jJUQ`CCe-wo!vDsNi1M z@GzVu3OemczY~$xZgtl7t%xIw z1po*JNSCoLT%#m<8HAcQC(eU`7h^l}S;Hxh%Z4>o(&6#(bh#C0g4B1Rj8=&#x)s<` z*va4%*L)H&m`nzYgGSVzMNhNiP{>Q!=8?Tkp`nREPnQ{FKiSwFCj!xv#8gSrNN6|4 zUJHC@xvD!`j|m|(m-5Ae5BAC2y*-mGR0EF>VoW|y10MGGHcKFI&vDU>9CnM71Gum) ze7yoBLi`Er^NYCp%Hz_0=_%zSp~Nu!Ww zf9N-=X__7l@28pGc2=a{{DxHRZ%A|A6Qi#He@&dB%TdL1?y z^!|k3NpfK`0-3;WfGNo%@SQdZA^ha;-Lc=6l=%;-1(f^pig|LEpa)nT-Q1MBo(b~7 zpsmnC@@G9ackJwI7rtx1$p5>X1r;zZ+RCh7-QGQQUXSXu7r~~<2{OU@%^4}DcGHO) zmvt}SGMr)!3Z!EBbmQC-39^<#5q|3}!U{FxA^_H(A_b{AbHtMQG%tb~-rRFs%vcrT zUV02}=&*u61;5pEK>tzQA#BiRH%|cdfHLo7vY^&f@Cg4$r0gf3fQL;8Nb=_8DxsKU z<%1Ssz#OMv+73c?gRslpllE{=K{j8Kg7X@uymA@HIdE3T*BHYWGJz;3dLV6)v2i#Eq1)`Fg>05Kn zOQ8Z!pJ0OG0u&2CnU_7WE)2d8ZTp|g>L5A6WoCPzD(+)X&BN7 zygP0@=?Dy+BAqXohO{09EV}+qf|Aad(I9>z9(q=8`8?2xz{0Kf(yaZ6#_CbG`vKEsSvgf% zFM{>o2&dE*+f^9Z6hTsd3J1|sl*kUzocQ$9e3REt^eaL~z2XF${ddMUWM8ckba%0! zAdt#idMGt}%XEcY1B@+Hl<&MI;7qSGATKg8z+R%#1oit#-5t4=i0&!1ShRsmE z0Y|>{yVya|uYcLjyQxlJs*dd%>10lfL%KmEGOTQFw$dHwM{I(>|K?J?t++uPs2JP(tt4ZY02gMO1rah z<;u!YT()9COqEq^WcSzb`M5hV;q`bRcL`cWLJP%Gz^?U1WmSL!G#A+%uc~^7i4MW@;wswv~GIW^A-7H$BjBk>IVqb;M*QS9^t5PK_}J;!N*A7 zVu4;GH*eE|d0XI#=M@$F^oxYf{T~irzunHQC&k7{Uoj4gaGt(-`19-XjulvXh08}o zVygPLt`N*qd!l6K<$cUHk_(7}itO7utSXqZ+$%G&nTk-n!(%YqGBvqtbGLo&WzL;D zLNTICif`sw4M&r0DCGknj*Sm9-@XPkJ{10KUs+^6J=e7a5IHcSm@hl8^QMiBUtJJ9 zXz?-=3X*B-zul#Wy>|)`Ee2rtl!R4nn6JtvKF$i6vST<52;u@cbkT+SsNzT}&`2kY zefCy=N|}WpGx*dz={!02frbAlEC3dz-nOX**%hyV`S9eS!U+g+~*r2OdATn?_KjD z`1W@0ImU+7l&}YW33j|%8arO?4?OPl?eM$08lm)WI$b_M?e7Xy%*Vukr3BN#a$OBDE(je0+4bt-)bWlqizgM2e;34u7-DZ z)~UzFYy<`C@Yikip7ne0E9|r91EzR(bM#1|l_3_l>$xcUUYNSv1cGNbgaX5au$?HM zryg#n(?FS$E}zD#uZQPNhu-kN>zh-X<{$lHU74>>ot=oP=!&-S?jh7#mq{OTevWId zOID}{!VcCt5ZzO52R0)Nt2)@bvx#-7;q2Ejo@O4i=}wX{Un5RuA)f)Vm)U)>w|D_I zj7O3gH2(gSvJsBs}d-an(SueIfZwB<_z3(NGaB$C%8LTB3)c4g{=pm#@e_pAM@ z;{@ODDgxE%BWBL!zI$1jwjYE9n+hK|I(8hrTcOw=5F+E9$(|qtFH4886lM?z#wgZw zKP&DImdMDxz#TKJKXb|*1B{ZH z8l*9^y6f%Izyr$TG0+ilo=`n9d3#Xz%3(&U#@o|3=V0C9UbPE$%3gnC9#k-WP)!t0 zKyMRgy~e}A^CGj>)=;SFmRTok^KyKARo#nlqXc`+C$s7~E6Uw*G!8i2-kHltG;1SL zD+}p%>q#WJeo9NmQ*XhCuO^is6+Q0G+aF7!xX#6>M!a8Ap)>sAuA5f|`bKoB^eVYu z;o@#^yBco{G34j@2s60Nq-)C%J4Y@5>G58LNRunzL8ER}DZL|S4utZ7hN^%5{_M%( z&+$tC01RQ#B`+D=cwZ^jXV<@$iWGEb3shw z%;<4%Mi&zmmN=1p#AD?3Hkm2&vEL#cxR}zHxKQ4=tvx|DSJ}3GVKavzOeghv>RxKE z%h!v~Q{bP9;!}!|Iy!5wkQRB7nY0Z&?301eyutJ-?HrL(C&EvF^-YI)-89=~8i0r+ z_MU=v!e#FcudBxcQ9m#*BZueLy+0w;Ku!`O1YSRispA#%Y{k2j*`Ly~nCER~lvyUd z`kJA0t`(pwJan6Pbk3&thLg5{t|GK)=mj>>KH+xtGmw3651>zIk0pM{J_fH1*tVr@ zqtQ(&yrs>jO!5-MKdT`R)RMGYj0%NqrHV-tGs}K@HZvc)9P?ZfQRlTIhy&806L$sQ zGo5Ao9HY{e?%>JKaW3+bf7y1!b|yo{juk_O%@&Zc^CTy?&8ygf1gI9t_wf*Mi``fZ zU;Qt>|CE9^nXiAGANr=K{lLq`q9|y)FA9~y_waX^CjR{9i8UUZ9Y~{UNtpo@6fbck)qtcPGnt?t zc?@{os%fqH8QJkbm)FU#yuE~CH5x&_9H#Uj`Zn)Bm$o<%qV>nBe-eqT8EpT9wmeuT zTrXKUx_=dmi0i*;2XrxPnT-e`!Sre8{JpRy%f*m*M4ar$?>GY_-JQg8YvhV=UaPnB z6;gUHc3~q78$EPq-ww=oLaE*-P2y!3JoL~=Z1$EIZ4c?YtpX<8_cr2Eq(N~|_ckCg zRTQ7na}d=El|Cq0En;2W;{y}*YLpC)bj=JP*WFDjf`P8?qTBCS=vr2OElObd+He%M zW;llR1x;#}ff$GVr1TF(ou{MjUA!sa2xAGO+fJB^w~&A5=_59F0rzP7DSD5L0M`K4 z2|KO%>iccI=j5fRa(jY*9`auG>xPHw8VTJ%(9I+s_ysFP2z6YCZH81!anGSX^h%)Tz|5=jgDV-SPxG z*L#S@Py#^=41Mt^I^xGliFcZ;u%Bvb5{k}bJGWEJ*B}_B{8QKYI8(hjf_D^xfA1lY z3B52IuaYH$zpbpjFe<1BJ);yo7O3C*^OEPT+|Gi!2(7qGr1`O({G7&asMVc8_}5o0 zI|nU`9^cj8@w;}tA%TM4vfx^>_4iVn>wc3?#(Kj>3^g}-z0JZGist0cE(6jD`0Tzd z`5e`y^xCj6pg0p&y`I`zJ6pQ{n42*y-(m+m{+@!*5R-&2^0Yf6tN^P5V4Jn^?OHpu zp|`Mp1{@7=x2;=V>egTO&G&AThs#YXUcH-7PndNh+@m&5Vq8 ztgpn*sx$`LyG|Dl!psKFdWvxuv8244)dH>F1-!eckZzEe4o15Q(f0$0@W|!WA{3rZ z5o#7w#tM*p_Fn<00Nbd#VF%9ghh08~s{)_Q^{|STo)o!WZ8g#l<9z_{%06j^6C&!j zxQrTUtIysEzLY?8M-V!D^_xMvRpdn%O3#zWcHEjQMFr(98(u^VtaYQ|7d}Ln@*5?j zKbzUgfzLXg0B)6j{!M-8$&8GGSt>y~;QR>(x#BR6^k_j$v zfhnq?VR^@BY^0@cj-}z2#6i`zQ7F(xAkK}q|AML<2NW&47(rECNOGdDF!#NAO9PL| z)kICxod;aZqP$AT%X~dUx<>7C&(%8!L%dQXOm$_o9l za=8a!4i?{Yathr(T@K^OoHu7tfbw?~2qt(ncAvr#cY#IA2b=@r!W2^IvlZ|w^qyzL z9nbT)71JNbGX5>Sh<4vi>_V9Lwl~G%=9AjDYu_JejbPnaH;C%06DjwAH30qmq$G@w z?lmJt)hEholv6`i;-47jWFY1_jr?@r{jTvIg?g zU>%+eF#e9qO=J+-XNI1k(?{_TT({&)cJGvk5`2c1`FlPUg_6sp8GyM$^gFtrAUA`g zK7o!0nXaFr)x0iPBA*$h(TmyG`TU__KA^o0<SFk%J6!$xoGP_iIaSpcR73f!$UW)4d133Lv@%_CY5JBVu9Ry9La;!o0JB$jkS;Gv?rBJ>B!?b)^4H-pg%7G-8l52m1f{c@JpRTc!5GkbB7WQDmc3}o5e8+;Qs)oLa2x9w&~HGDK@dUA@p1duO{&7!=HkjGe^a95F> zh6LgT2uw(^_dHKL#a#UbUr5FxF2OV3iBNSY^iUvB7EKnB;uoNd#t!stObf)tniU@y zY@hIIqVgWtd~(`P(w%s4_6PW(Lzd>@xq-zX>1mFw(S%Zb)h&gL`eeOsh|C>hG+S|y z6t#oT9FbHi6|aAvlem9Cl32RR{h&zJ2B?J6+DxP*ZFPImPm5`Uv+WTZTFq)JIUTb) z9c$~eWbx~}WrCOlvXJEmjC-s$xwTD9$(L}M66nu9pNXs^+4SLu_SMfbhpUC1_uS=< za!(?daF8;cct6h1e?v~IE>%|AXMd2~KnFk<77|wx0i%8^#zwC(+*it&b$+SiSicD= z$y#v#W+(d`-aQ0#?;J^#>#A6_MklHl>B0TNaIn21u_~ghED2SR@yCY4NS7Uxdl_~( z!V#53Q@&ck{KZ-P*&@O%8u-htEpcOqZ7y!;SOc>}uwDOAy`$H5aYFygKKsV_MINvH zv^yC_zIW)8vd#G$ocFNSa?QoQQ{3Z7VI2Kd1a_{3z<;#8u%FAW4eI&Khh?E6fCzS z9HaAJX-S#$;3_5+3ZkB3$GhZVTTT9!Z{@)S1tb6BE8k5l=#t$r-Jo3xYH41z@JFAs zHO4|8oHvxP%053_IX5b4y<7S4uyik>*h(!$V`_0B_I}O938h4k7(QAu-7%VSGH>ETX5~| zhuRqE*7%1oRa>$7HP$mM$=}V>Wx$6q0W6PKmoWBgi724x^ZD20D)XCfns8B1g=Yc2 zygNg2;n?)pUOU9vWFRTB;*u6|qcw}W&Y1oUIV_?bKm||_;}!~aUMS)gaiv?)C!zc; zxk_h~Y;A^avcE&Z=#EVEK=O14iTD91`IGBb>4ds&ad>zT?)?Odr11sQ6kVZ41n6&{ z_6|zeGRy0|-#)$(>im(s&7yQ37$q{;#(lZov;az%{zs4gXN~Uq1)VwmR{LqG%=&$; zFN(@aj*<#V|;qVLR%!U-xID~0<@GQ&rKa)WakH@bd5>(v|Wz_O7hoIHB6^7Jz$*~I#_{rlsHN5PeD*nF?Yhy1cY0{L!qm7qp!*tPP zHlMzm6`yPJJPSi;KySpUK=Qzpjli>4vVgu~@qMY*qD3B1eBzrJhp+fYi7QMy2VIxC3)`dtnD z2o>?};rCa?lU#}SQooO+KQS3;ot9ixtC?m>nAQHk{;_5d317F|K!hzWcZLv}RX65Y zX`;jwHxL6a`bmgUcYwEO7qrZ=^#*%;YqAxZ^L27-GdFU2sGSjPaJD`074M?C`I;R` zh($Zjb$zS-J+%!e7ml7(Iq;Z)P(kum=<9@8AL)d7RTVcTKXWrEq3FwquJt)ykW5w} zhOo5wB;bnp)mTgWq!exj9*s1hCWadQ3vb{9hST`kV(5&cXC?{LnC=?O47TvPaxn6%^*XBgs-K`;(9st)yl44Wq32DR znH60Cr1Sjen#&`%anQN;2d7F3uxAiZ`;OH;HI8<+{nK|S;~_dP$Yr1ty2R&SY;gRJ zdu00-CFWAlJK{#hRJyIE8<%(!H4x0OPPq4i7Ji=eEd6yb(1_&O55TiXRYGQ&T?VqC z*S8UP6mj$+r>dJf^l@1a#qB8fEo@eS!4C9n4`fB%{2OGMucikS^R}dyp>YP1>iMr) zT>f%f=gwu&f>q2Sk+38RNGdfqpL#!g-)R09bLux=y=Gu6N`N5De#ISi%R*+G(k52r zu8&1d#>%&Ei=Vifw{>vyB^p_$6^#Bjn1s%JA?j{}hkc)b!bBPI0{oe2{N*U5i1KhZiP{%qfCr^Ybbgox4LbM0g|>#WNwH-e(2uLp`Q@+x zf-zG9`Z6HbUx9akAFhNlyP{#!GtxG6C(u_JJpwr>kjdYUdXKBdSSe86@5G%Ro)DL`lZ)#bK}Kz^*_4^;GZt%fn)XQu!K(H?tyL1 z^R{azkP`!$+xvrSnnHV3dpVh?=R9*L9YT;t4O&q6Ke7MB(hYelbKO0TSYiznI%RJt zLjaGlPHKnzu{}rlEBJC~$5Yd#q+9=+m$3eCY>@Fm5$ZIG`2Eg6;7_$BZ`2>n>UqiE zzNyaYLs_EoXmGG&ewH2Uc>DM+mg}MUnYqRL3v?=^}KYf)3!IM zd{ID$o9=ZV+V_gBrn$)PbE!-q4~FZuk25luE6MYLKYQKpm)C3(yt38sFX}68!BYUq z$nu=O2NSp0E|F5PZ)2s_$qN9c3&+9F=)eL2&VUp?(Te(t*IZ&Ct8WmEP3d#@GCnL-xy!P2@lHd3gDqX3GuUwL0KJ?w#X42|6L;fky-x59 z(tg8Fe4+bPTD?DxGN9?dizgJJN_Z`+f__y`FcTp)&qjVkyvg$Ii zrSpg1F}qc3**oH6qi``EGa9u9hA=)%teUFoFVRi*T{Rr4uK_I-u@kjD2PTLT=@#%EeR@tWnS*XMmjjSlLt0{#~=lPWXr#DAf4X*l(KLxkDORr;EYC) zKk&j#qzBgcHQIWMBnH~tm4^&SWo6fTN_sEdV_#sivn@>#wwiSMLc>rs3 z5&HE34^OdQl$+P%aczuNHtqpS?n_His&A9kPAI|OD(>z}K)0=k)%Cre>f5g0Jw%S8|rt7v|Y^kcxKLf29!LJF}F;8tV3=aVh;gs4!a(adS16PR_pv}C^JLN>ix3^KF<_c2^Mb#Aj3|hITKU)4O z25|V}+Z{f}H;=kB+%kmSFz{X_bO!#xToNTGPcZ`#N7kr^iX2XiZN(h4P|Qi3zY0h^ zb4~F#d^w-o8B%S3Mf@9Uq z)NydPIkGfM{ZY8*H}c0b!)fZEh(n-IW2mVY`FfaKiN3_#ki{ByZT^@SH$UYkQfUq@?hy6g+U zXp3^E5>l)|Z1C@eSzQTk5#pHu{35CVor^`Vj%W_&R+2cMTPGB9yxJ;#5xfHz;AN(m zECDp@+t6p5;v0benQDO+%n66|U0Jk^*b%m5`v@|$;33cgb6Rf{*FQ5cqhsp${@K`) z-C*5tR=yEBksR+0vW#1MA0J3-2`&2hvmV9xdg5bBDAR4UQ+SE}CC1;I_9FOPwI^rN zj^w6|P6XjHgAx8}YFtw>X1Vtf<$%lf>iRsJ!3__yU}IKQ4y-vJaX4~W^Cj^1M)eE< zmwYV8k(LA=@h?j%Lc)qd)h|$Ne^f9gqGnuQw#OOj$)>6yDOyU`%gvV2(Bl+cDp1sD zOY>m~7Uqy=l^L_8=aAV;U{eu~4YIVwbOI&`!>&00O~l^J%m^T-XBzUX&T`ks{KFjQWJW`E$u*w&^ah$umsIVPLflu*}%2sg#rEuMSX4?2{Q`cFlZs0%F z0X(;&5@4~8x>7e0j0=&#q>jY~d-4M4w8@iG39YiN)d@h?feF$48jO((J%7F{&C=hQ z9nfQ*)$Xx=0iX?ssJSwGZxrqQohYDDG7p2#em3l%`cXIJy|W2Vdlk-Kv|m|T%q0AM zUC9Eisnf2hNE=RQ7_f;9VZaaDqf!fT|EPpDOwP-i?KAe`r#YeYYblT~6 zSx2!DG03rHN())lZ?&$Z7Yx*$-uk_$((#N6v_0$ctosp)jSOErrq%xjGyk5h{9*bW7 zllgK91Ho4;6A^L=_5|P8&;9qHw|_n^Wh&ho>oe#_i|!i|f-l7|&EhTtBzmrY(ftY{ zAex$um+nvU-2O~OrpgK^q*hz;|NNl;Aqq8hV3|HZ5n|xJd+I&m20!KDiYsf85T9|d zU!-t?<`w73+|`$VHMQ7RvUgZd{ATB%lT?bXdNV_)SBy=UAxuT@S0xnr7d6LokRa&C01D93QmWEz*ns{U1=`HS{S8F;@F^jpPn?F* z>-fUC`nABTgO~3exs6qewT9aJ=zl|H$;<4%4n~67hiv)AZG|^$*dWkcDqe>HWeS(VB|5FFb3D7+!NQ~Ev zzFBh4>7DW0YKzf7WwX|5nT7=6v_f_)#nKNPz901{TPp0!xb1%@4MnP@`E$A&Y7&9? z0=tpFScE*d=`8AU;8Ks>zw>Co$P*^;uliric&F#RY#^LSr&e)jS2+@*5@BlN8M$08 z{Ee)u74~gW3iI>DxA9y4%n-=kFfc7pR11{9%YQ02Uxf}nk@(Misp{^o=L5Wfi(P7L zJ1B_`StpNXx)*B21fNd(>_V6NE67Pf|Ab1R*?p|5wGCRuLQ*mt5pT@R0B_8NzJi-q zoUlNGm5SwyS-Kb7+plNWzMC3PFU`0)a16GSnPLZ8{c4gg$SO>myujZpP!=%0s!IUy zgmyEjt`Uv)T+2{|`rEZi_lP6UK`$`4n5Nf(PWuWt-ww+)VC$(*UJ0EAs#dSvO{_wi zM$-MtbH*S={>zOyeZ|@)PT}-8p!l6T4{Xbo1;Sv*bQNB*1oXePs>2g#)7jo;awkAp zt9Ku2EbM)6(ljwC^*Z84U%#flS*x6yWKTA0MuVrJF`cWTu<=6?YWDP0<|#;(6uup0jwEm;VUNcsQ{b>pft&Ce8)V@5LOY-F(KQ4$ za0hY&_|AN!l-&_>gKgc|YuDyEfQhCWeH;YcH$e{RzAA^YK(4dhf8-f7+H$vn%;Klh zOPebld-Tu}j=;l_z9v4 z$Ob1>>%=4Lyex-?|JIMhN3Bmv&EcPJ_Jk?MXJ1__{_DJUe{$vhP=)q0s?X{BrKB1zFM4)i-p5<{ z6Rk1h4nCZPL;}ANdfp$u4y}Mqui8xb^2sgi$>u_Own%&7-Syyw^_op&cB8q({Vsg% zM4zNj!-AeY7>Il<^w1&hdyAgtP+};l7mt7BQM=y9hDX$M0zqJH^E3JB%IpihmY`)v ze=;=Fk)Q}10;EYQzSpdbLbnRO-&y_919p5}$0%&o|x4aKRNMcbR!NV1K<*I#!3#X#Bp z5ba+*pZxSEewE#l=1Y9^ip~!YXA+e9YUD|4OwLz5$q=ddI60OaE9B!}%1X(hUe>3qI~xaV~|5SJx z^h^w!%tFi$3@Bp~9zkN>X7s_7D;3@6nT9!)KV;*I^G6eICg;-T7C#=n-vg$8IL^Ys z43fkGmvz|6(nhq*d_E>`{*D+r>%2qk3F})OlP5{ z3Z|ACY_HND(|ln zbKDCNXUNTA*G#gc%Nt_GWe zMOM^wj{To{n^&ulj=67KgU$5@xWqIJWT|Xs1g7LHyj)YXPCzVTwcqEY^-Jo{Xx7=? zsQ20FF1zkUAw`j0lS7krh_GT(rCDBVc?suU&<`Gr3eD~F>yo!%CmOMz5Xnsh-zs3< z!GYoU&#$xiB(<~ctedXu-n40+z+an$GJjy4IVVaOR2y*sc)|}_n1o^OvlPO{Q9U3S7V(O zpXXCDa?s|T=_e?D3zdbRV^QcyL*mudp^|~|{c)l@5MmNd>qwre?6d!zL%eS`lydVp zz`l!!|K67D;6BOIoJqWZV_jVTOLx5WPdu#Yg{-_UA$(2`);x(&NS72r%abWw1s^4+ z^R(Y0hu8l4QK406RIVw&(a<6yke^?Sfx0r<(8x&W)ZH>}jxJ5Wn0jBN$Q8t;!`1Vv z=R?b<{Ya>5B=9MS0aUf>c`H+HY6^bX>~G&`xV-iK{?hDILHi#(jLy)ly(7soqe9|4 zlDX?51zowfESu2-*4b}whdy3^ezs4zNO(lkg`d?355dU%72g4>tKW=gE5T^s13veC z$-Uu18$gS-4HfREOs_w%h|%B8NI2bJx2ES@if(n1cZkRMdDI;IShBq?Jvmj6Fu2~R z<5iM0m$0E&)&g!&$!U`-Tpf)Tef$JUH^Xqw02pO?)cN}uzO6KUceHnA&lEaMu1D4d z8@`It`sx_-h%8NhI|2Q#)p%LiR(u07=KA=J+yMlB6PNF{P-Y>RX1xGJm*g3kK_cj; zRBuV`H}u_apzfsQClERHg63dgn(hnGVPP?^C`0mQ(rDVQ#RA+30WMeLT-Dyl-R!10Ot#T(-CFH8gNR3Lo;K zb*`9EJ&Qcw5^q$FR;0O)ic|r+b4yEBcYGKfl1L}GpcZKNy_)S)12>U-hLQFJH}WLZ z=BaPHoEX~u#OnmMDu=*Fx;K(wbkeEU3AY|IsUrhIkaWCkhv1_`XMZR3w>tgFI>6Ka zuPE?|v(~mGRjz}dH#{AVH2kyoWLMBPO{@Btr-Y~Sp+@_?M&Xo<#6S0;CnoA(2M{s2 zl5;y`I?i)|$%+zvC=uiI`Jr*zTRjz#RqnNee9S7N6i7T}5MvxCEHu9eSLG zf&T9qx;OBz_jYgVK#a}>jsl09(~6+K?QiHzC0jT!LuM4$s5hgB3|^vDgT!?y@=D$_ z^2NQ#^t){zan?FkKz9v*L`2R{mApVrp4DRFA2&+w?g_m#@f>w+Q(wRd!@TGn15=6@ z^naf6XGfpdFP_xHboorEpVIR+_a|lSs6L|3?{~~N!ybd$D z;t2FdMtDhqU8?_eT!C+oL$*B|KBQK^Q?Nzba}9HUFst9qoPp%OOAIJYO5}YdV5DAp z96tm**B2J1Vbxio;q%~*wb3?!$unKFK5VD1Kjty%<2CVK=~x%D&QhG)VuLh(;|s>! zm(C)lH>KI{P-ClA!x0}lp8SuZ^A1buZ^L+LWu-}`=13*8a_6rs&3QCSEmJGEIWkRi zmlrL`5trve<=_8=?Y4)wa{G3k#>NqNW3;JyM`b$1x$GJTtGh68l ztGDk7=%kE+~RAP3}Q zW4gR-qM{XTQ5_5(f%#Y~>Fm~oIQdtcEKX)9cpM7MH5Jg=+Iy5)my_fDd&IajP+BVR zz$(>Px%<@vv!C}q%Jehc&rG1hj+)ZM?|5HoLD&AIGi@^XWd?$hf1vDa?~Uc-sV26> z3^ys5o#D~I-tkuk3gQpXwL2pp6{^3g{5c6I_3THpm!^f79tTa43nWi-=c!(FEed7_ z(@HA}Vt-K`u$A+uhBre0?E$~3i=yl>;_eP+E<>s#72{}8u(uF>9Je<8Q73>V`Bp=%)8P$K%tCeG$>&0 z0`=VyZehAyWPBraWTXw+A9RYcr^NhP&~lK2XKIOUH2ltne*LwUAyxr@{38*5ZWZKp zm@(S6wH4YP@q0J?u&p9$S9$el{tQBt0O6$ zE>*uXs-i1?Qmw_mZ-#Wwt#GROv@hg?(#ZqCs^!EPGEng(QVCX|P+wl4{=zFDLEhu( zvBX1S8?V7@fL2{;WCWmV-=T-!SQLSc?x0Wt<|WT^yDG>OVLcBo+DxoLggF+McC~PW zg87N|jd1-A^mgMD~?wW_Sw&=zKPH+_d%IXF#*(80RaQwd0WOknH^tSFFRYW z)uE*tp2;TFF2OMvFC}MpU#ic1uPt*t1gzk+(NJ+7bxF=}R{oO!rP6=a*kkGrKnoKu zxGwP)^5=V+zgdHOcwN|S3rlfjLX&qG5lGDdq(?6BM3;}yPeV_p)gLpld>Bu(Dh zFnO|K0pNS^M(Z1fmd(5SUY{{He^8!5n}?exeQFSd;hMU-%tNOSW<}fyQW4gFw>*Qv zPi6#KbY}zZ9)_rQVePC0Yj^RWzi2x`U@$>wJt75xWTv&tz8RJ}&Lsqt)T0cB5tc;*F!@FWYPf#Ek@m7gqp91q3TO%Ek-pi59%K(9qE6*l;&A z)bGs}gTzA4W_c>Hzn!FVY^0nY?24a*{qZeG?zY)ILR!zhHg>-ZwJ2$qd0!FJ*R0^7 zR|sy08Kalp_!1iD64Ls#c~yl<>;*9{4*AzFo^R_e_+rmJG8@{>C?pzJU{C`8c~#>P zjac~DX4NstK~bpSTh}+9T7LHruZTiLTx8X=5TolS?@o}@KwuSoZ(|hAGG(PPJO63+ z0JBUpo+V-w3C_)jm}I{s(2&FGhWI*0eR_c!!oM((aQNq>rWbTM?MbG;*)`gp)4mhu z;@pGhiA_S=&h!TecG#1Nwfo>gI0wK5;^LmciXdC}3u0kWN9>j`T+*2N#)jJjyClL% zLc2d0>@HP}=EqZFd&XxkfwPbL%bmlB5QZ-cB!jkYH_U(9MS-e!CAk#`eLSAqqKq%J zlb_*jW-mPXn&RWn#@-YHPx(MxdQD8>u?Pi@GyQQOHA}U&wq`ZiFNFb<2~xdnIw;<2 zh2J<0*$TUdoh#NSTg}nPQ7p6sTNoGt%`>57NLMQ@ZRDUxZ_uNW@%|)gwb6| zVrH{3x`50!+}5< zhW#tMKN?h?Y54c60%u=^D(|xIymTV3uk;E{6!~qzi*T*_$|D>G(lz+i2F^tN3vejP& z9+15h?e(>{-ks$BXLecOqdYsYd-&ccBCN4eh_P_-gs)6MvMn2ALPa(=DoJjdoL82v zlIECAAPZ7?8C2>Dp|ka)L2ZV>SOmo8sG6s|Xv`Vk2v=8I(nVEUn@=`(^o`puG)vNu z<7%|W0k{9^&W{=Dx?vjFiq9tLBQY!9a>$jD$ZEb9HIQ&7%G2dfminaF?asi!LXO)&QZL8|ND9#}qOQG@=Th>TGDHqTjCB8b$&draaF5Xm(Td zI%)gLBdmqDm%Iq1LA*lV;puwew%vgXmXR$g{;%O1j&Ydfpyxl^HD9y+V~$82CiOvo z6GMT4*`+olekKcRw^tUq5jWVS{|SH!*_=Cbbqk;bVy$lG;773Xw`&&0?Vu~ zSWsGLm6=>^W_90tnLOgZJGLg14y{(y-at=H6zyPon}VE@&FKh-0cwo*Sj?nVm+mzn zW~O)QT*;8C0WWNiSf$@ z1^H%+y5ct$g4f$=g47q{G@{|1a!>!fyJSE0?V5PJYkShJ7eSa6n!ZvvPJKd@zJu_& zU@xyPi4N4h+yBF4w9S)0RhfNh5Ui zX!|EshF>Oh?U4!k3bUz&q&q@=-a~=R!}FRLn?$)7I2Ukh5qE8vZi{FUCCAv3 zbMjD|F^1RihN~Wu{R*j5Z?WTrKH>I<3|RcySL+j-zq%3DmuM`$vSM&i+D&MF{sqEk za60Z@3#{c=_;psM*6JI)Uy7Jo^U+|Iu)fdPDZaoHaJF8J=}*bMZw}A5c&7)PdmCE# zpO~^eZ#O2lbz@cxT40_^y?@6K^FM6nSpGz0LsOxH0KxRX9p{LQz?yrIN0^-Bk3G%4 zrV$AmiQjC`J>o+7PVGQHqc3jCt$<*K*_kLuj#;WqR9YISadxD5ME_aO(83+6dqVFD zJME^w@AVdR=I@x%_H&WW?PCG8iIGS3YJTWsba=f2yxZk(*@W=$w&Gz&b5ToCi~sC# zS;-V}Xq~T+z4P`J_6@m3W+t^m#(Xv+lfB9wb6~3#>*tEdXoYtT$H&93-zS}b2Uu6X zmuIbPbA6k5ux65&*=B%JtdefFE)m#BD1*yGo!>o~-wYaGU#5>siDg)fzPHOC%G^6+ z5}K<4_+#^Y+N$kH4pI{aVk9VjDul<%z6KP3Xv{sy&J>2+f>NH+IKa!z4@AV`i-O^2 z5$v>IB0iF@KIj&-z}5qmzbNy8U-q)H9;(WvY!S~ z`Z9E)`ab31vb4|_f$KDG)T^hDfQVLAkD33jWORa0N;V9TU`EQach$Ey&wpD?e=C{s zODe;eEmC0(4amNXj2fwx!JB(LH`1=3f7ss_u5sDY-TKvc$$9m&Ch)*XE5r>)LqOYQ zKkm*PjA9HAtf}{ya#E6&RB)Q6`spph0)3y-Mn=(((!uVCCvH{5o0i`U{_67XFRi;? z@tyTWi~hD`?lV1e2c?g*;s-cThCOBOZpFqT?fh;@t-5?n|60h@&dZz;< zjvU|O7wLKXCbQLVCaKY6aO{lFZ)#6+gRDXn}62*RfyK{?s;Nl(S@Ubg-!Ig&SXYg z+c9H4YTe7nP$`H7BJh0ln9b|3LJ;jF)soQiR_*xBQKcPfv%Hp2&{63pP<-Y#JfHmw z!ew>iA>P4E{!=2L7^(E&U=)ik#^Uar$qt?iB=w_;laf6N4I@=YS+68KeG<JDAJ>8 zt`s{e+L3PwS}T`m?SA;r{lz8atAac?WLff?_xxt}B0?8jf2^t<#M}|)sa83@>GxuK zFrtS`8li5$I0=%~~6bC?z5hQ*opz#)K+# z$vEdbn3B~p98sKpMB%1gtp}*ZKcGdKc6j-CuN&2hhZr}J8Xv74>xkJy5;Jb>lNnO1 zt*7B|yvBJm?=4q5jD(}b9LoHZ`YX*4wC=|R+EbhR0_>o?G28gq5u>%~Uu{MWTuy53_rl%fU)LXK#$Wht7ue!QVX$WOVD%M*fY z-Q9i9L<2nQ+w%Q*pb>HkV8TmMf0c~*@x^tbhrO2{^d<*Ex*MYMY&|mmhB{w$=!CwSGL?6cK?B&qaK8S33g8eMoBEtkL|kB_5Fg1r?E5Q9+TN`wwNscf02I0MEbUg&ax5mf!4~(5%=r>I=cN82E#~Un zYKaA{{Y9O(4fpk&w^= ztCPX*uFjtUGFX|&Ze8aAe!m*uQ4_17^T>f!}Yx01xQq z_mRK5my}t;15-s;d>QefvY*~5B{i~om^_44!ts6stKYF8bAWqjm`rLY@5<%)@yh~Z z{gmJ%8rULm7p2*HRRzHecu$Oxo`vRb{d$knE%*)EpfBgm0L!k?j6%-9x^XF#FC7 zoeBDO6nYrPMi8E7df zbKpIuJ7N4|u=LEgT~1qhm?U1-QQZ3jVqU zk={Za&L#YAB8B#1yYRmy$3!Z7{o#?*2|2afF$qjzkL@SR1=$Irsn8z#7Tvr>chp&^ zaqR*JL1RQ$eIbI4tVbIu1*@aBUy*si{2A?ztT(+|t$;D<4d}x*mMBJ!kq^_^0>Lk! zq5(&3yiu8O9UZ6!*23r}zH*)bj=pz!oW)yEQ#p;%kw>w9`8zdkq zrmZUvh+H3;dLtzdv&k3W*edW|~N7{|-8d`m5%3R15f36Zk}r{21G?KwqK z79^6VSKJqse7skAf|4Yh)}62%G}?ZKf-jogJa=4;E$HtQl<4cHHQbB;6tMoE z$)YxV=eoz?p>U>*q$od>UE)m;dEpAQ9BQ-J%)HP3zJOaym``8)Q8M`fcm0oq8(3kE z9s9~}YRr9(yxQMZ|IelTV?S?_2HxuL)1JropJ+HvKkr@k`ui>Td2tU}=98(G$MZZx z$Bs9*Ev~pt-{#ia@$RzO4A*2aJR{2U_Lp`%YWJK*O_t5t-Ixldn-y0Q5eKBe?5ibN z2^U@!PtGqeVP}@Nb3HOW20TPiPXtSwjWV}f-Tw0;Z<<`Wcz^HZQQqPPy{y1CWds;A z6W*RS_-iE=%U49tc5dD=uzUgiQbqa@UPIb14p!)gV`ItruyNQiOCf1gKwNDI8!5jofd{bJm^JzgvoonyLG!jYg(#$T>==+zU zTpypLL4RIWQM6q}vd?9}RDM4MoCiqBp4=WXu_CgQ!(tFWh;b_Gs;*-*ph=LqRPD=L zr^b05rk`%!^GhO6?1}6!4Qq{vg;$Z=TQ6Gm6hl?+wHLgP`%)L%EKHJje-ve$u7WUsRJ^k=ic5a%%6J4Q}U;!yhw;8PS^6US@kJvk5KU8=@CL0ThIaTy#OQ?Aeb01*)P-Aqrx;CIn!Eo zZ>3rF-ulkXU$`qBb!c_>IO%cDD^Wk+x&i5to6Q(yq6^l>Nf& zB;YkWDEBBWg<_+!9L2O6sda?75s+R(lqQ$+61ILlm0DaL=CXva6~<&|T98!SZcgb^ zbCswb!wwc65rYNjP23Y^fbf%sRNKw{fN}W~!&m=_{ovcb`VD06fNxa`T7YcA0DQKq zL-pd`EDhaHK?_C8)K02}Dp5!2VhAiK!6W<&$-I5dgMbUOMIstHYn_zXpK8c8IU zb*c`2l0+6U&KXvh**CjwSdc&Z7R_q@$^G8W@gKkJ#3hQ4WcYOQf#W-B!dMK$ELOo% zxK46!XU89(){ed3)pXW!!e(OH@ZtVumbNC4SgtkU-5_8YCzqn%%yP2C8 zCCN(&dK)Byw|i#plX;`A>@V1K+fwAH;mO)REGILdc3I2c+09n7z9g4?>zpiOBeQY3C!e^lGd91YO#6*i%>abHl z#vhkBmm*e4ut(%va}3B?qU^te=xr8gd!~s%%n6H{e{JiOudvRT<kcT_5pm}!ygPss11}m2?Gfnc4qoaL=*kdmdrPU8eSYOcAQFsG(u6(?oMymZS zWy|74^7NS|+64r(xD<>I{HC2~rA;fljXjrncmx{6w4>SiR*_dL(o}qM4TActYNITMs`s&4C_tAJF-_!af)@SI3*WL1-XgNiM3yU`Os~DdF*CSs^Ao&Cn&0CzG|oVbUtQz0Coc!MmI25wVoHA+cc5?l?^@hf zSk8sV9A1ZrG>>8Fzk!z=ySH=!(DOb_?uOoE&5&AD?)Tmb;wLD-+3C29%>7R8Th`^T z1Dh|T5HAC4#3cqG?tnA^ISI6nL=dLQN6~{l9bP%SYJQ0W=_twAh$j-xBjCugrX7`% z7yOBX_lzHBYEhMAa&cCxQVpNb-0eI`R$JLFyC4&7O(o zx)I`HlcfcZqZv=aI2qAU=>CgC$GW{R!5NGYsD%tUI(+;q&&GuoB5*)O$eEbzX03dy7cN zc<)8qh=|N*h{%AQK07$y2pVd;7LG z7>wx0*EVeG+@QisGRDsue_R6n4!MC#VDM9=yw9cvq)9M^g0u}wTqE3^~F zIhKHl3*bVSaq>#pJs&3bmm+DQa*lJj&P=}&Klp08yP{{>faz5Jj~&Ku3M;n_PV;;-1AXx zO3`PqdR7a1K5C_FW&gbZ<+H$)MbGE!{aAD<`j7EbO2aRPO*N#UBz`io<%Vz&4jMg=%8WXO#T|NR)1t8zV)#j(v%pKyaxH!%iDcRL}2N6W44! z)8kUQ^r*I`qfE4ei=0jPz+p%9Sm|Ukva^TY_x|_+Fl6Bagu61o1sf~FHS?$HmM!bt z@0V+FZRP2qEH>(g%8-=5ur<=XXIzQJB7l%1mT60F@f>h36fD64=bihitV?iQ=#_Z4 zX%+I3Smju4haXHXl~2C_=%mHuNyR8BY}#&x+#z4l3xtezqP-UEDE`-<3IDcGn9^Nz zRuoV>TCh5++?E}s@>7W0oncY>Y{7dQKoArMa0`5)!-jfAbt~>NW!arJ8A~MA?S@Mp zpqx30zJ~J|5atD@gYwNh>ULu#ZQ*YhYiYSR%GCI##r_%|t|%O|J4@}`JyQc8-){O7 z0^SPTU-AAJ2KRyfk@4AjD+*wl$k+!#>XR^W?j3nK%L*pw8Zs2#jDX=?@wy8U)e(Vq zEnfi#NDH{BDdBkHA0)jM)@D!iAi6IpNg|7PI==DGKvi_#QQ}l&QaVjTm%oH#M4~u* zp#Q#Ba#+^My3D=&_a%Wb^ws4BIbMY@<>=!u?m+e6gYqp4acYkPQk*K9#3SD)q^Re! zqKZyh17yoe9vrllQ8y)ig8;vH8f`(=(D=S@Ta5EtTM~;uu^i(m3p8mVTKbMX-wGV; z`Cm{z#^MT=?Y4N;(T-RBqko$|D#D7oDkfL&|gQlb*QiM*U8$nYaZ2@@AfZ1pGiUZACCUrzxb$@oL zw5W{*cfJ@;esFzn=i>$1kE_qwUKl!Ns}veqZ)#Mbi@--I^qja6iWnET%C&KzmWw^2 zBo$gz*0dN|B2(=mcs2HNEY;YMWJqsfP7DwUn6q{B`*GYB2W?Sn_nN;tBkV@N4gH6~ zaNAu*C^@xBMwS(-{@OX6ElK=i)Z?T?@BVh_DUy;hOs=ZR@nhJf$sO-m7n)Ix_teLW zz}$>7Ih%4Vkk9*k!nhWq5*|Y!(ARM3tc>G8QRgDQFP|8?`SO6#r_we5#kKh7!ijRn zWwBXJKK5T?PvZw6#EX}c-e_nPja2C;Zx*EQ9`$@xR(SMsumZ2_vOTI)sMnCC-)Z!=a4Gkzjp7@2v(7i#dZF_DhZcC4yrm)pi{qcN_z5NR zro2s4DBbL$e^%TZ!r`Czc{p6RMK`j^4w_Mhlu*|GLj9Q%lrbwo5^Gy$qz82sj2 zE^I-?IcPQU*|l~PpHD{ITSrAsnOuD{(g9pgt-ldhSxqNFb{7gZE6qMF*qt^j&*cYT?dp+t{H~awIL>xHLk@2Iur0%<60RblD&~2(ZK?T{<3pp&L#b6^ zoTmq!X@Abq_T;^Xy8S4%RD7o8reS7;$4913Pw39xLj{|a9QxJ0>@=+zC*T`lH)B%IsAM>Y`|zkdvsd`P3qE_ZS@_RrgXPNd;j^#ikMPr3bM zI>skO-?9Tzq9_y>bPnTpxY|cr(dX1SD$EajY$K?JTX`vw_PlaWM^=D#`#!@1cGWzm zTGO7+)<>`iEw0Z6Aq*M**KHRV@H`Zn@eIS0aM}yiW}oY*-J=AryO|4Ucnk))mOHFv zi7g;3ZfHj-0aC$pv=wb7pV|tRTNeVia;QC7%3o5CANH2bO;x=CTO2zf#g7`kELYh& zAZBVBW{TKq@1_rAd80zG^fWWrZbm?>Zu8Epa}_T;^m?^d%^7^(=pg z4WOQJX2@YLB_ux%R3~Yz>y~b&NF_!otaLp?{eVV-Qsm6gxbEQP`U+p`SRDGL()_EH z^H5tq^IMd5^o{FhpxeGnxb47wWHqLFd(?+vZ`oT#;y!D2jJbU3LG?>WDTW3eI7fQ|UE7w0UC%6WY-J9*#Wm~-~!V!40ZudXc7>=|K;-=k|y0S*HB z&?njD!hFh#dq=i^bz(b>8tTIrY5)DnF+OEDIg=%xPobFAB;oyI&-Fve4Qm)M6nZ=j zS1KXzqod$+%$BnrK*pM7$hHpj%k+`M6(!Q1g&$WSMFbU3i>`K%TCj8CqtWiIy~jB^ zIEZmyqR18XwJ#{;0sdf@r3we%YT*dn1@h#lg^2Uz-`L`g)4ec{*`et~CYrC%O*$LU zeyL#67nB?&@78EO>Xx@ovl`tL0pF>ZF&??v=p0;U44&J3&c+M4%MizK0ain(H zL6tc#`+aPp+6L}T<01Boa+b!T%Xr96;`WTGtocYI{#H)a1v)a=ZL#@}bg0Y8Sfu4s zW&t08|UvRiEvyE{8G zgvC(u0r<3x2w5gK?Mr z#5gVU6iM2XOaTu`RR)>eL2**c_@-Pr$Mp!Bh8kdL_WIhnV3yC-ZvL@{e^hp@JEY2Y zoIO)iHGG6htITD5X`VMed7}BfpQFQ4{I=~@^jk@(!*Ds?ZB4)h=We|;@GWch+krGs z^kd$Vdcq}TUU~W<0hXHKv(PosFP?b)I-efZbE}yeTcw(mLc7#BgYAO6W9iza6@|mm zVc=1V;KvmAe6J<(o;Xgw_dHW(LlTP~BHc7yjupSEry=@_$biR>wl1LyeklhmA1>t{ zhzThHbBk4GA|*kgi|GY;=Xh`@wC`IBQ03+DJ1zh*cFkzr?8xNEV-R z%0k(=CHL01uGc;fM%Uf12jN6gJ)^U64upR1yFDLrWDx{(bDt;u&f{&AChwekBdU9+Z%{A;@k46m zsJd`s$4Z(&tv3F#PWrJf4!6AhaPQ?oZX`2}_>6lcq5ygG! z+OYY19hffuTQ4B0k+l!>T>fM9?0j7MzMk#Z(P(vm;lrIOL0Vu<_NGQRXbLn8Qbu<_ zWuQHsZ2l@`RI?k-&|c*83%oyj-}G28RjEWkK#ZDl*cahIBGn8APAu){zsYPZ;Pqd< z1BbhewZK9?=-mNYVLKD=)?8md|B($N=5qXNg@wa|!BcFU^6}ii@K#A=%n`TYL0hq; z>Y>cce{sMma#HM(Q57j~YGZ1O{B{Y8d--FrxAR+u$G|_i1)OLp;txZXQnClQ376NH z`i>ql6TH~VH$C~x{{Rk)UQutZg&-s^ex7lDG)M{Wle`TT zwr&HL+Eqb|+ooqffn)&Yz`ph2e=ZU`p?R zKExc?ra9f9Z!1RfjwNm?QhkoGU0U;f0qSJ8YciB=9a-{Dj*`Y-G*U8XDR(0(o7yfbJ)RWTojXkG&$Zbq*S8wYk1gCEg+-#!_3-9gwoQ3gNs`l z+oVX zqa^L5?^7&?M6A)h!8RrF5LW1S2lDUtZrp}joT>Sz=OIrhDwOPl_oK4~UKj>LK;P1j zmq3mw+RIrsHE&kcBxi3tVus$c2!z9+ovieB{%2+YW8t)ylZtr3EaTH=1;XhkSB*r4 zj6-JzFD(GFU}y6y6z=HQpy#rp-lcI0>G?kT#jz)7&em~+FfZF-bOTsN>cJjGNm*C5 z42W7jWe3>W!Ic6^Em>*FUkmrcCrSKRYa(ONt4#KnHy)6jh@rde+A}X5aJR&1HaXv3 zVgE~%R65P})c?)5`#W3_gTYv_$hO{ARR-_v^nYAnUWq`{WIK4S&+!}$MX<6!pC8ru z@2`tV1FjK+!pkYmzV-*XK^FeC`K+ZiQKuU7#Trczl`{_zV;YFP0;$bv0cF$6uV4vM zZJE$WgyB}+biVa?SxlyUe;=v75^QJFN~oJopKg+*iL5ov3;)Or2S1wQ@xBgSHzk`o zyo~w2(%I}x^iU_O2CILrl{2qBz6+JP3Y8}}JP%UJe6~3huFC(Q|DJGCg;BpgX43aj zD$A>Y1gP%`(pz(cRea%9k95q8wB=dV51^)P>2)v8D3s(+IK!r2GMZUw#QXvfZ}BG6 zW$5V5E+gdLz%9k%gIh;u={5SpCv%pmjg+-FnM`u~7;`9FD1Cpps%y8B(={BP60nUM zNOF)O=6*oL);KQNt}Jqp-KvQmwI^%!-{615sP_dTYyc4Xe30k*lkJFCg=eAb?78%s z5j{TL2fd{eDJ6^=l1bEQZiVp@9-^MY@wz`n(3jSP@OIJz@40G>_E#S`qw(iXxtj#a zI=^QErweQU@wL6qL>Wy;YxmBw-xH$v_IyB{STo`63Rr?a1}Oa^7#JtbW}A4Aql#=Z zYW7dgO8yta2h~)`jslyv6S{t*N{ZSR%;dHf2i_e@Hj2qx2;=f{%kng z0nQ6utE|`7TM5OKYxEt*f<_J3hWTqxoRe)_t%5LWvBE~e&qMBQKT(8q}CM zay?LsqXl~6A&x5}*D@ojNY6aI=&|xTp#6r>#_c}4azj!n!6>(hP*#e7R@3KwrD?wp zl#7hF%3f% z71D7y9;#cW4;ei*K$t5a(*dPZE$EOIkQGZ%wWsRA65VZOy_CDO^e1X_+Ub-P>V(`H zxcDf!5< zQg?<9Q&Y0HcaL^o(gqJ6G;N=sD`||QNtE?CMPH5{-uMy>+BudT*?*yG!Bd3&9R}k(1V}yQj(FaLA?^~aiM zRf6Bk<3i!p6_+;p`UH!)oSM|Y)i~o@JqCww*8Iu;Nu0@h6H%levngzL@@F$+*5&PC3Qjga zZ~kSStioyR^B1?Cy$%%ikj@twk#dMuWxV~J|JGI6?;>?quOyuB`TdKfq3qYt%?DTO zKO5Y9%PBB)HdxY0N<#A;Hk^IJlMcjA<0U!(^Yd~K)M5&C=p>GAKTUx*nX1m01Bnn6 zI?eFd=KA%!(%}_-y+;yWh#Wf5$6Gkf5)tb?sRZ;ib3_Nk1|CnnK;3K2f=`ea(ku&R zT$i2>uy`9G`J8C@1RpPw23&aoWBwU%pG`jdBbMHI;Iy|N{X-U^6+~!*UfhW7T&U>{ zsrK~HZ-+54wVf|TkvC|C#PIE*9E0ff_Hw!v@v;3+sZjW9gE_|FW%_qpuR2LmlXx0a zG~7J#)5qN>og{OT1%w_Hf_v!)T1AePpP!=(%d>Dlf)N!-q&S`tbll?0?8J;B`)=+l z=tm6$8|^(ZXP!_?{_>B&YBrAwekyZGEz(y(n(#}|m+9_pSA=&+mQH(XMoH#NC1=(% zy$RVt6q(Geh@6Oh7U)O$WegMaDo}v%|JOWsz{(m>d%-QUg>DdDhdw9AlI4idn>tOU zjR9V#MXjx%X;!VC=36_0uu`bI9A-D}y}`q)J(A~lGF69@l7SbfFnEzdua9!Lavy!M z0i?}1zRp9K=cBw&kun{U8RL!!xKv4Yz(@I!Fe59dwi=hpS25%4{|4&qL!Y51x15e& zSD^aKi|~&}+*+msC#qZYKKR&!FYciM2reUP4IZ>Ay--haYcl}etJZBfLHI1|-J;3( z(;mFlWqeZ_U>*|zF+f4l16R;zJS-VQSpu*4A79FQtz|Vj+?HDiCVTwn9!a*Ux?tvT z7JSeAzrf#+8=p$rD*44&g z-_t7JWxm3I?7X>U!j-X1JB*OqLHZ}D$*!ZY8^Y4=QxI#DKm0G+CFq{~m&e^3^@ zswwyo(7*c|nbg0qL`ABx&)N;%$6F*n@o%pbfA$DMO=DkQwyaDWJ!JgsM0>UIb6-tt zOn+AV$;s&N%YXoJiT~gECt3}jH{)NZ3izSVX7b8kK~^%&g~LC{P+do&Al6g&gK&D{ z`%^1mfd>v1KST$&as>~YYm$(^f|Cz<)9yvb`o0c|cybg7ZHk>8K$na=?oS;Y2u8YR5nH<@Adei$Z_ynQ1ZfJS4^BJa=K{f+b{E3cFO@oDnYD?RBO>JZuu1s z9R)3FG>j*r5i{aRkzv*gJ=b1}z9xq#hY{5ZhYBQ@164J-fSxA56ovEr3_q2 z@u&Qksy|=MImm;mDNCpHP4qp~Mt20>hkvM}v6ksJzbXn}G*z4%3bs{9~tO}xBm3NCGsRP`5huleQpEB0HK$+}JQl)ZUSjD^5! z|2CR$sGu_pHKz2Lkg#P!f<4ZpxYKVx9}Zqr27EtuQEC<=CVd-PB@n(M@RDmS_8AAb zqY!Yp8P3>Rpy@SKy+WQTeI&W;ztpCKYnw&<+k0Kek8V4=^V3--(qM-W(up&l-@K%Q z|8RNR`&DqN#!aC4y!LEEwwe>O@+V)Zh?$5aP;MMnjk9mIkHLG_2ztA+o@sw zB2~7la}(VEGvbZxrF*>po(;u`QlnnrzS6~yGk?R)-z%&JpmA@GnoqBS634$RYJrGQ z=IEywhhsTTvW(*dzmf1-7abJOV-OgCdTcIM_+$<0X!%U=Aw?Y(=ci??vlw`I4L+-B}+|B3sfH70f+Hn_}rC!JbvA= zXf!AI9hLF(^Q{E5HK8*s!R50;3BxJCym^BQ^U+p80?#7vXVzoDR7}D<*A{)g9Y(Gf ze$&Nu2_C5iUR^?2fz}srg(o&tppJf9z&K)Xn*wi)M|{ZzGVM>x-Q>m(WzK%mhWxz8 z0&Ja%Q^>w6wfS>Q2mh~`_xjwIcicsUMHM=w{3bndFi4~hHE!*5T5YgU$V3tFqRCQ% z6g2%sdTIE^U*c34_bHNI;uiy|$~hhhuGrdN5@)}6P=3sfMmAmCm6kj8vgvw4c+qgtq<^qNgXlVA1&$jc^5_!>s}(H+O@ zz$CCwKBRPT_M9#3s&QJulL@#rHoMUk?CDtQrtV@c+lE}|Iw-&H^CXcHwwEk4{zseY z0^g}F%G%Hf>G!To`aAvQW#jA?nvytswNwqe8*=q=60WeZG+!;f9-9HEfj=vTU4t4h zLFxXDuDQ1mruQvPSF`ON(!m)Ax0S3@GVZS4+l0jE(UP6LPrtWaTx>tQ2erAd{Zy8p zcs%k^{^vDo+)tb`E)WV!;%Ynnrhe`I4AD5f;$R^Q%>xSbR;*wcd^qH&H0GjuIZSklf_nF+dlo6s&n0Y+EN}M}gNxmWroxe$ zT-?YC8=N-|uXqQ{C-k|~C{@oS1T6N=3R{X{xXjB!EP|fk63)%w5|Ju{{X7~ z)zQ|Y=}mL`7T|dMvBI7Jkvcd_`+gm&EBD}1?pOiKTN~y_hO4w>*SYDVy8xTmQ=Hen zJO&n*=r^)#VhlF<+>UI8Hy~=?9-3cEBT~p?WGtlw+97?MQ9c^`hZR$eZ)0TO+(vw6 zZxD=|5!pu!hx27YfV!y1Qd{8ATC=PU59^tC=D7BYAfVn#Wevqyr{CxwfVlCAlJu_O z)ufN4*y-n9{Ea)y^`U_>8*u2IB&)Xi4SD`pd9v@5@ac?nS~Ey%Pa7?L`TSQfM-!3^_nSk z%ELXzpKi0SrgHDzJi2aOi+>%U{@mXR^Uot3$PdvFTKb{=v5PByay&p%=hPL9eVbm^ z9AYFTZohtgFiH&bsk5^h~KzvHWTgMq~G>s%wJ)25#s^Yr>J7me(N@G=D!d@2%5izg4}g} zx$sXjJfVbR>Owe;F9;CMbL?Dn3~~9aL_{dQU|M02*IOIKB`R=MXqQHA$phH@9RgXm zp~FP;6}&ua_*qVZVx=`AiT19SCfY|FpD&%C3w1%Gz;M>MG`|_;*16)eRF?GBTZR!~ zVc|S`$%Gibjlw?gv;)v|Q%C+b+Ff%@2=e7pNq6QE#5)Q|va_rgiaRux4CGjV=b4@G z+gu9Qy~OJE@DfN9lr7?kM75<%X+825()8L&;kr(aCGZVOzR zOkp1?!!&ON|5J(xc@pCIAMCv-y5`gM9}?hTYhoB@lC&EHqqfFPsm`gGMEy(Ncqi`k zi3L7%wJ*+E13{BKbc&dSAO8ggwn?@tetX^n?*gx@Taz6LCv>8D;{84s7Wh;tgg2*D znN_#^0dL+ow1QW;p0VHieq9_+JJ%PN0VSPaNM9c3#;sXCn6=r+jJ%9|ta#>4QvXY+BW=A+95k~!4JRf@*h zr43^rCl4ocr|TP}Pa;L@2-44Q%*Mf2vKomlX;tZglg}o2Rn^*0HHnzzSloL5^^Pg` zZ7ai#K1OMgS|+2xyJkXP_H3z6ET(w#=1>7oe&54$gIn*@neXaDysA0m3a8T9W_T2! z`KW(@4B79H0a_o_gG%{c7^Ct=VZc+l{%RYue~7aWSE>qZ#7U>NDxMnNx-)TjR^!mm zjEvWI-m%h7su(lz5VmbFHK;53bQ8XfAp`~4l3XSz%Xd;xzsO{~+T{09UxhnwV-k}; zzHNrdWI$z*miF$(uM1G35;9^}Tk}Ke<~DprYyM`hN!|W6F~s=Cq)Bx_x70>}5wNCW z-&AJkU<+!ujyxx1khi_hyG}?TG_D4Bxt6^~?oUh$3J90_>N-5-S9n=Ls_1-K>{qG; zb(7gy&TKdv-9!lwC0$S2%p%Ln3`gVO$y0q5^U7{B86zr5rE0;43msl}?CnK}`${b8P0>po`U(nu6);@7Xo?Iai4;iVh2ah!)CFl-+L9E&D6) znKZKBuUrCawh(O9;BX+~U-PI*YQjj6|G2xGE(_E4mrEUb z?c~}Y)aFw>3xCv-9K0%6l;%!(GB$<6pm;v zaK-Omu8n@gJCSCccWGc;o_y)7AczUXjJ#swhSN`hT>{7*`T@E|)cWH)j04?Scj2cm$<~`+)zX)Ezo9$PRFH|Y?;kyt{vs2E8$Z4MocjoK8L9m<;(6$J>%B&%yN}5*dRhGiMiLk z9@T)c4fUFhH5fwnMbjXOfzzLy+h09MH4sq4n1KKnl5$z@$^fGq{RKqFHC4dU)IeSIA+m{lT0Hvq7Cs+;5VX>`X?$fe}q`?jl(O3ynUxw}9KeiE@Ko69l~1LbJbYc)@N0k+AiSp8}NX;nb0;TByj^9#lz}#*Yp65r1}(QY5C@ z+fXl-l^ch83kpRwd{(=Ol}-!;6oTGGwKCLU^cuTH-GW~C(t)en>lj4h&c5P-^As| z{Vgz-Q6$Jyl;!UFj^u=85Nu=wE*GFz<;?xDYn#$LqMq)yocQ7HbF_^XPHelM{$kXa z{2BZ0kGF+cN4==>bif;82qxN?7&LD6^zzAL?w73VHXSE`nlt3h#`*cwlFjuF%S!5y zZ4jN>w(GaP-@+Lb8L2_QG{@Be+A>zpY|Y9aMDOT;z4sr7)2X!mZO#Rn$Z{wah$f-X zKe&zdvE^-s-j2t^0R8}C|LnLZfOtk<+!$`RRcb>+Kg@2wJGgy;I(1XW&aL`0k0aGT zTu=1a0pw`C#lX0C{D}@D|775c_Gf`erVZdgvZ%AU1c<67tBwlv@RwHxOh0zfEGvg; zgZoX!5E+qNq&Hh?EYZ|u2CXMTlA)Jq=vJZj8$Ql^ol(nj)Wso!&ktB|{p z)KBxffr*n|T#f@mGOS!0E{*y@`ic9?fk#+VhDr-vqacwd>a#tdWEqMF`m`h!ne2d@ zOL*CFCYXk^<;^#UMqW)f!E2%M)~y?PC5<@!t4UF0!IL5DX@3BU{^IrbV{;k*H*9Em zN)h$+Bo_S*A~YqAlH}gtoOG*Ls!oMPj8*heD*cvtFNRx5 zV{l@rgGs>=!aclo5QlH%FJIXP(~1+!zW@mZu>P*C*gYhJN$@EcyCOh=Tz3mza$0YD3ih5F$fVT*s{pq@?E zubQH>6FN0#!^)jbln(c_K&OSUAKDt)4vu6k40jyQaz1h==5NPu{{Hb(t5m%I*P>$q z_&hUxa9}}4A#|za8Q{u0l{N$@8wQ7Q&3@zc{%^bJ(~c;+Msk zl8IdR1hBJ%yUjeqI;oZfbf(2dZL^!1p`tyV<`r_G$YBPR5l_T$;SyG<%>3tV5@8BC3&H_PY%_v^9inM!@u?bLzn0$g*dBhjBB-E zVgy%+M7Tx)q%HptoaNgfU7L}bVFiUhsezBC3M-65d+b|M!esW5>k5r(;hK3lJKdPN z*vDnF^_2m(;+W)T+K#5&Z^y{+cMoH##}G?lNW|!qq>FW)MQGeF@3Wdr8=F&P2;fd! zoV=IfeqCu*33KtH3CDKj&j=L$wAy@9VS4-(a`DBF#^37hLi=XHg2>!Sx!vS-Dqi3xdsedVmT>d}<$>F`Uu zhoy9CzIe)n59&55g254k(SFP6=`S@kg*3NI z&8)dmDs6FcDXdWQWR-i}q93_wjcax!)5f!8lqqJopl2dS*M)b&iBX;F#YKyPK!yn2 zKLvEC$Te)J7CVROg|4X#mJ`JTUv8Ds$;!y!qfxGB5bk9Q7=@?szfz|bo?*FZstCC$ zC6wbdCnEqTs;jhS!_nV&<>J5pUDD^iYzn%nJU9~buQB-Vv}m>ecig+v@#erwBn7{< zZ$HQ%FcWjhf)WxyK>6D;$67rsl`7%CmMf)%>bf%m z2r+*n^8b$^u;6%Sb{O>y=&JkmKQxH`!Z!x>IQHSB#3d66XwOziSL-u)aVPbbVStPb zU0;@U_iBO&S4fG9%8Zdint`)F7p_- z30QRS#QOp#ZuIWPn6=wCU&q&F zxs}{L-Oa^~9^{Yy$HMXz^c|=L$}SW*=||jhDZ8px?=`;I;LcF5nR8Q)06z33!Z?VD z1LOe58OM55pkbR(OX__EYX_qbPvG{Xj!px*oQ)0kkS{+r+0IO^>E*j`DYE97_5$zP54nXmga z^J4qEeLNu=$p}(pnDFFHuC*$aL~gvQsbnF+SF7{Vx3H#E0a1`jtJBJJ@1k)^G%?N; zR_6dC=)MUNCvKX093_XvP;8xVJNL%5l`ADtyh`)>I&H3Wd%@o#C3?oc`xU6P1@6*> z37eKbC{CQoaf_^B$lK&*uzM^c7VrTy)gks~`?7cQ%Jc^Dem5b)0^u!_LCAQw_2fjC z{}~g#ijLOaTYkKMxpcq*d1>`)i(jo{Iq~#Oc%ZvU9BJYZ+~!v=?PJ|E_xyWseDD*= z?ctRnVfx)}AZ$T$o_48nmmqWBg6uz`RN6rzyhv&Pw{cxo;0EAH%c`BbZc8e%YNhVs z1i{G-hqiz?1l9Tp1m%oJHqNfkUq4CnK52B$TlBTwDiOF$cnYbZX0HT9ak5YUF>tfJ z9i=2f3m&)K=x>^88ci+9ow>XeeX+_dNX>BNt*H3(*AGh6`cJ6@bmQvJs{jC^Dctoz_e$;1Ag1O>hS78XQGnP2g<;$Y=<}IABU;}2 z$*(CqZ7{^J;7JXW?o-yE<;KrbN#Mu!@4u@1QQD~W-BLjm|APS0{$I+5>tMt5gep37 ze}1SBj1Aa;t%Xu=_6F2tn|pL$RPmmN17AAJ;xO2RtDaH9eef9cd;EW6N)Tiipk(}J zQHt!c(kMVOoC1Ig2g`vNBl+UBftK`)Ojj%!5 zT|A0`CFN2>l0v1D_qR34?*VrUwyTBHi1I_3shUSp67OUI&%DODM_V4ve0&7?D4ut~ zo&W6Z8Rb&~kosq05Q8K$*EK^6no0(gA)YBI9Frpr1eTpeUM|M?R=&-U#aP{Gf)y!< zCI7X&aH2Z!-IO7H$J=*K<%@@V?}R|10LU;^rue02stnOXHivz>!_&1%#J}RjGh_g~ z%@+ZN4otS+V07bFpRO?8fjhiZ(rO&F#1aIo0VEGQnqT6J#^-yjZU|E zYy1vg->Y5=Z*V_*AB~!eZ>Z^c2PpH~R&Fk;)BCrQ^dP6lA$l2}qii?x(mx3H^rJyn z!BxOTK@WU?Y3eKZVgL~|Ombmo)we^MFqyj7rSGZ4{%i&u!#1CsA2*gKkd=fAk|x=8 zmqS&qxv#s~z^doi5jW?4fQ8AUSx_4UYx#u62X*nwztQ0a-gE7`bs-p%0Xn^_*L8a1 zk0|Meb<5EPQyf6NFGFAtFAUQDirFL#7}$@52N)^ocriEF*0E?`vR%Hz$g@4Zl+?cH zT9w5(#Dr$YHCn4K^U7A140QM#?-w%g_ga%d-mydagfs##d>V%xC(lKsGU(a=;xHl} zEV#}IeQWf8n>3Rzy|!ae>p6{A&&Hw7uK!ADjKtU0bKoOLak$~B1e`Tf{DKOCYPwi~ z2STtD&{@{F8~>%ptp9p7+t)V`DTB?(bX|&KKmdSQgLz>*JuXXTCMLBws_kdF{0kJ> zLZN87x_y7ju4N4z&`ELjV6(7kerINFk_$WfEDET$_xvb~8Z`JfcRX<)yr){zRDM*F z_gYBe=;6x&G^=7#I8i73lMe~nNrT4eB;*0Z`qeFjII6uNJ{1r;?l?caaID=4z z0wCb;LGd2H3Lv0|Wh3Je;4xtGIFDYSA+P0N0$$$k_xM_A0Sfo9f?pZ|_Ic>`V8)mX z2Y=Jq7%K8B4AbD|U7$wG!Ta6$+p$qb3}#IV$7Q!*5+M}$x%V%mZjF5r=d}8GI$m=d zf)&Ve67*kKu_3jH;L#>rlE@#HPL8XhUCa}x1%^Xyn{qV3e;l% zyX}NeuWI}Xtd|6p1)Pbd{>#sA zvtagT+M~VgMt^~x)$8AH^2{;TH!|V^lnDOszz!uNG6ClO>(}<%6cc=t2+Mo1)p}Hc zK>fiObMu?XHo#go(aDpAt8VCSz*f!uR!M?4k8d$xoanwW&IBF~oc_4mouAC#(#9%(1vfBJ?$}w7BgsJRd(!?)s4_NB7KF5E-HLsf*oloV= zS@L-Pw|#-$4>T}HTi*Rk0O*{%%6L*P58E=eMFjyp2e5H#{SBi>S39%+&>YocV2M43m(Lk(1H+hvDA;$!jotTKMH(qxU@$f>Pq0$(RVS;9?HTBBt|-f}$Qx zJ`n~L{zpH@i^OV=;fnvZ4IQW8j2I3mR_;!qaAacV*Xojfv5^5SiLzc|WkA)zJYm?C zV}+HF;JVWI8d=E;pZUYaZ>YxXVA|bvBTj+o7I{EestaxK8rh?3wG^P|O7CWpPsj5g zN^wTV|BCH#;Kj?~+kcF-neUMrCz8_AU;iLf$V}#*Yh7%_QBJM?+jHOnqLa7U44jDr z#2&&xhR?jhm(tT6UF7#`+X3f)HnP4$C-TyYicod_d1u51`Wd}{?8q;Bit8pBL>N0g zoa)j=@Ybd6fAlLeU@&&*1<{``#X@8O!kV&z7quF#GR;UUf0J5%yoV|O`7_LXE6$0# zYnxYT9Rm*Q?*_;wf0YM-AFkz0pH`iQY_N93m|S;-=^hPj8P^|r&zdxh>ot&y`^Gc} zlFBj@Up~rZzteVRK9P}HmtHLIUL^M$gtf2U+UeY%2PWL68=mFGaRy|)gC!lm0A+6# zv>O$~L#=p|Em9TVR8c_OqK!gxr@sg%W!DNK0FjEtP4!_JTE76V3_we-qM`Yaq~C%8 z42$=^w^uRg9C~=RCKrvmpVnp41AArw9_Ui>niU&`4%Utj0R=fdLsgjvzI5oKU5G;5 z;~olUhK$Gd)hQ6;raS&F=x`KNOK@uJ-txpBvhZf|P1(woR`LBO{94v$b14t`$xsR; zCSo$7rAZGz1nU&bZE3t5qJ8>0_CxKZSo-_OIxWcs+eg#EDv89-BMqp6-QLXV z)>YNXSX_C#R>AU##}Xz9A8rvQ$MI)Rkc-!iE)g9R*yz3(g^S0THzeTN$@30(WSXp` znWJqJ-1# zXS^Bt~dgC;tTu( z=_+guZd_X zu{{2ZC}1f%SQZGbYbJHI=~c+h>>HiT2FOF0CckdHPL2YM$ez%S7lN*|$&d0qw<}#I z$6kxIS?wwg5W4Grmf-m-gacqvN4)0RC0LPu@nbw$8S>+TRZ2<~L;vi8KJU>n9_3ib zBA`@N;N@jbqMzI`rB?*dis+(~*B^Y2eL*lY%z`#uD|a6sHTuK-0UP@EqxNW2tk^o# zg?&YKUn#|TqEt1~|n z9K53IlNhS|XdX?=JQ2=30rU<%?~J;qHUZ~}k8Wm*f~B`b#XOxR3MpVO;b-oT4ZKjs zMb0dmA;30P0NWVA=(Q&cH{bad+Y($khWz>8L1yjesN~a<&qtrTN;^uJ~SLuHmOa`5$2M` z?6w@b6#w{opG8?CFZ}=#8gm{wDi7$=%v(d4C6il?(XNe7J(X4THni$m%&mVD38aFs zk?LKCNa0Cu#Hca7ik05HDfk1>S2HgE*3?Z1QNE=N=;BymUdYy7yXcg!%++ntdmAIX zF=DUV_-(9uesLZ*hctrtRhOo1H`k=YnaMe-_|FPKL7wF|@`|#`|AzW1dDMB0vhq?5 zyup#T?zNBXbahJ334rCP_|lYbqX!&%>a^ACc=g_^zG z9N$Dxj~s$GB_;kbQh%T1Yn02OpI?N`#f<@5R^oTNwU2?m{4t&Vs(A$gOg~`Z z>0uQ49p0TeFMMbMqfVa~7~vN1d^Zb&+{q*C(=EHj-=yY2VW0*^dr!RQOeb01s~6d> zp;tU#(sX~bTK=||u>U;7ytMk~dgkB;{AX+alk%U|Lf%*=^pr7=@38` zeO&4{UHW7ChAkjktp1eH^1qV()95dB;n)oPHyDd=6x%IXK}A3_!+zp!|@ci-lqSW#;|RPV5*Hy5&jJa&MEy|5OkjW_h-i$ti5 z8@FR8S4#Wjj|6|MWO{N(<|0SSSfJ^9E@zX%V+cuxt&e=0<80PLt~lP+549c7Df;3+ zJK+ViwP_A|1y))~F2b3(x-*Pcr6)iYkFqeX&1zCoRtso+>oQAfnF&Y#uo*_>e3vuM z04B)8qRhq$9tXl^=jNVPa*`3aJ+%997cD}EPpqiK&WxKmRdq!G{2W5wE+h9lQko^y zN*Cu)?v|iF=CnfC#M}ZTq8x40ND>cJAbt*)>-)n!BkV2I9(XgE!+JY2^hGRG zy`}K0*U_~##c2Yw^y?T`==Z!IsK|8ic(=tnvZ`IE@iAJ%k#MouO?W^YZu;pc|0TYJ zO8SyOI_r+MAD3|c$|cnrcR`3~HbuM~!LA2T>#kF_xtEMY3U(j837xe0kK#nA_qAwP z{_LE>v2TGuzJRfE$g6ypwl{0!EN7B6tAWh82boD?{{9oe4$+hP6BxSqOxi9BRuMm_ z#DvL@>);$}S(f?K-~8g0v236HWDV2EkOj&g*j_Jga({aMi&t*;cIRSck{JnN0#&FC>vHy! zeujRd80+qqLNOJBwI677pM8E%h&WK5 zwEM?7)O9u?25|KKyUwxkP$1~-*QKCmq?Gc5 z1986*ewv)#Ko)b3ax+=XQ<;O0P8zLPYj3VX3-|NtS<*i*^&AJ1pzdN^LyL++sXt-! zJQYy4gXX?SL1Cw3zU2Fgf(UQTLq+=YGD zTm6vvUF3j&DUMLS zW%FdiCM-13E?l;?E+Ru+uT9RGb41b}!Tph-Rsa~k}-|}+I%~~|KrZYBE zBqtvgPT6oIxZFssz`ihRPNwDDijLYr8gJiy2FzY zyKedbc(`5NgBaT6q~X~F#wFgqD5MYvpUKg#+NfRx{h=rFo`9$zXTPrHEG2&cX^T9F zxHG{#uFf)Y{Gl+K{9JDH3+K0$^WD=LW30&gMO&~3Rf{bm^Q=0Tr*hfk9sE22dMz%- z;s`Rno2AzR)&>MeGoL=#-a2Ar_X?+MvIg?IP4_9_)TMf&<#S3Thb!nZkRhJpA zf~1U?w8v!JmKy#F_c~r#2|CfyK2lZSDv#1}SR+yr`t`1#$Fig(`eOh^um2V`JrN~8 zv&JkLT@A(C&?1VkOeI!GU;JfmVl&+VM(U+|IHnW7BECEnUGcMfzVllRJaW_`39wCn zf%G`(rqI)KUcOb{Mej!mw59m6E65@qCESz^WOjC3{#SjyHYCt~lJT$KVJ>X z;RS(iM&Nr|V~9W$`M2Eh)7su>$J|T=8L38$T$_or z{i}MEwc1U}LKR$LN#)g( zU4E8aPfxGB`#cEZb+Q7TEi+O3v4Slvc(N-2MWgMpNd;BOSVQ=dar-`lMDbZ!P?g^7yd z-!kmG(p~z*PMkhal4n7antg|;Gk^@yD{+`a`aiC49#)FON)e+li)g^SWkr zI|1Z)x!J@1GU*#d;z%%%%N=9B+wl8H@B{|LUf-k9)y_a4g3!gmUUcm?KuKb;z4$d?j zZozN;rTSUu_mMDBo#t*+Hl?M5eZlFa)M~cmGftD$oIIp^Hhi+-8{MN|h-Q19R&CZ` znp3gJT6f}l#pm{Ux(0H~42t@IJ~|7Th&yiwXsVz;pRss;8R%c&WlPy?Yr?UiS5r1T zhLP<+gTDNDke9dX@?D@$E__(T05r8CK_UfLhmUS6K`}o%ZCvl^i>PuCyux~HfuwBc z__8j_G|9(ydq1^rqE`bn`iK(dYZGc972}d@XZ)=KE+JTmOPrY-0S%E|YgqE2N05J; zAU%jHdUJ?$4nz+l;jMRf?lys8=n2*B9ro9>cON-_jR@9{G5i<9=l(u#{Dou&(qy!r z`K9>hPY1_7cLcEAki~Gi zM^vxXWlv|!h95@c)WJx6IIzi$A;jHMV;mq;kzYOxTvG47W~xDoHr61+u5CH9ZhvZN z9gpvE*tBehJv}+N?Tb_QXQl;}2!NX(vCgq~0q5NfLgw2tN!6O0IRO{0>V3@CbazD8 zx7`~6VDbH;4IFqc!cYptmXzOJCd6Fb-Lbzkijfvz@6OCNu3HagJv6ot9rj{^vHFkv zTRq2hPhkZ-`SzWa4~~U`Ws2|!e0=Se{Et_H&O%=8*EF&HSyos=Jb32!J_ML}N$qMA z8o+PdlmghUB$mlBycK10 z+Z`zFo%8(#@Q7YvdN@!)>+aZ@v>0QlacFb<3M7cx>6gYFQ-|#;do3z-Jt@*4S;; zI}7+40U#mrxH`YlKxo!ciFE>)L?JalW3iOv`PT*hTu<(Q;C-j}VBH_%fKY$AR_C?; zC$v-^Sqk%;oh7NKdE~D(KV@XVG2hMPkkXmG=Cb4Bf9V)9Yc!(Ue7V-PdJur#t3r;? zng(7`y2AEHuvqMu>W}1yiJf%i;%Y~p{F|@4?Zk-4870mCg)c5W@*d7gwjOS7@8)Yd zuU1zPs98MqHTf=6SU>jlKXaS$?RaB>KNq>jqg&ps{`!ZauMDFV*xw77W@VbNH4)cr zAuTqATQQuZrQcS;#CWUs)12m$2GbHJs1RqY+}Tj1_y!Cu#T zSO2%zS!C(Tj;_eOJ#sWt4jsQ4Rs>fo|Cb@v2z~&f49hGZ9vuzl&LgjQchL#le=8VX zQO55${SKXHs|c~GJU|@rhMYiWMi!=M8PIBAcattYfrWtlPoIDFdY6#SMc^-_ zXq__jitsWhv)7pzBQgZs6?VyRv29w5JFrAZ$*ubq$cz=HANzvgU5o6PC8~=^!lP1o zYKiM)3dFv;rCeYoZcBT<@9zq^o4`n?g0`HF@CBZaudo=%1&gwe5#16K4+^Y*d(_F8 z_kk(^ruxYcJyR`t$ktezoYs6_eUT$hh5i@IsKnLA_Fl|tp5~MlO-G;Lx;ii)hDIwE zxAmELjVq80uWh^io%_}c^WiEI zS!8lrjE@G;=5En@$=KLH74QM1Dqf^|0lr|0qdwn=x9k_u@yHoxiWr#FCp+|n+DV&y zEbY3D;eWFdEyvQN7cEVRt5MPELB1Pk)KP)zpI>Dc`o>bE#xsO$LwopzNHb!(6BNqS-R-v zk4gc#;~jwUjze(ooir|p8IHB(Y*UUX86lXC`Gk69Dc#qFNC`&?~cm>d9I6m>GY zW&jFiyQ342Z!n3fkhS=A=hIi9u14fR3Ht+TN8G}A@>MDt=K8XcfOF>L11G}@9ZEeM zz(bFv0&FVKPF(wLpin;FcN2ncEOxw$x8@3bE5LlUvm|99fPI(VU|oU>I|t&$Lc_l+ zzw752P`~Zib`u8D_)9Z-wZ@#1zoh;rF7$1BtOELp4|EZr(UyGDLF@j(&sFasWP)^P z$~uI2%hA^^%}Exyl=mg-uiPe%8Y3aF8`1%{hlaGig{jf^Mr7EScdrf+Qo;Y*N6saeE zmL8QvxoA%SNmzDh>`1R--gN0NS%5suSV{~ZM!)IJ&=6)ayjY#Zi)-qih%zn34NHF!E@OS@C8Hj z5q>-ciH8t|7{%&&LucK*28vU6r1hhm%xrxoy69B;MNupRq9CR=TPzfiv|VfcO26hr zDkMG_&L0fqdkCRhb;Vwo$Q6Mcx5}g+ zLv)#UKJu8y#U^=@Luh^woA!7ys#VMi({PNyP)4SJN$ii_H5(h-YmeHy{+;?=;a;gv z5WsLyt6H)Yy#W+A#}y;nZkA^05=nU);RK^Z1=*iSqxmdT4f7Uu8gK8OeSo4M98sw5`)+fu`KX*4CgzLh=I~Wh_yAPSNM%w z*=#yek7tv=l!fH>Z5QSKS|JtiELdnONnxuK_g}pKRvtzHk@hgQv%@yl(8_$+*!oeZ z&-oc^RveQx-BCSpb{e_4L4@%c+^PVR*fZkq%F%l*-QWj2a4LV4t@&5W$oUiHJuA8c z*<=#NJM$&6(XN`wJtLd$)VKN57l*{E-;E864jq@li_aw2u{j5*L{0a`I8!v8n`*)% zS=gf{rwHTbuqY7e)X|5YOm@uw0u?9f*wAPTxL&VBf#;XcpP!zY5&fOvdWo#pd~~sp zfFoV6J)E%14-p2!mXEwHY5I`pYkvazXlcb>I#lbvuqgmZDCI7LKk=!r$>Afrt&aCv zl@eta6W|B>@n0JCLZQ7;E*9&7y;dl#Q4-zG*|_l2sx_PC7BcRQDCvbF3#8vS8jS&v z#SHHHrQJaR$@+S&6=Vz^1%BFv(jXiRkq-lQ@bn$m0e<=naUYK@fIc`--9_&%H8@P; zMaUVp4`M$bcUR~k`oQ&~?yA!fej?9nn(iB3zC?AVBC<@BfuaMB9h|Vldk|SZQIe|@ zou%h>FbbcVN={lj^QF2$<7uj66Da=APq5jlL=QH4V=CSyg2V+x(v+5#*5e30$48z| zV$21-O2$ikp2(apykeKl#^Sv%Iqc%J@S~-rov;6=o)z|BPwM8gBoXZ=ZvBvAE*(nz z$moy8kCxWygq|gI#7DB3F9|Va#vtvaxZ7BU9U5W`2+eqF8pX|X~n0#1prKO!Ob3iYwp|*asv`!a4 zve}Ph&&2nB6!a*m{F7_8dS*QObCd-{8zg6aY5ZtuofdwilmylHj)`fUJV}S1rRPQL zkqC;JbSg)ko)Uhvv~=QKvS)nEa$?*Wvw)Jn_d`0Pl)OXn){i>tRO3fW>lCaX8T6sk znA0RRS>!oB@SGfe)Q&$g^))7mA2IApJ6~E_j}t#CfFu!QIfQ%?_q?#j)m;22LFW{{cme#3SKUm6j!=#!X{xG4Y2AotS zmHCpi8Owk@`NPx~ttT~pw6snWKg0sn`jKzK?dIbXUqT5azN8l>tsk7mTW*MoQ(*#4 zorbiubj_E1)d|a!cN~-0`QO!CBy;Oo880X?bd>jnhwwx6c?|f`($b1|y(DnPXCqHu zY$}NsAAC-z;$1RGytL>!()_^_AxPs#OY79|BcULkWG8*8?wqV}J(19}-0m%cbvxzAesH5_x~<_w6y-4z4K7A8wR1M*{XC+^Z)z7%LT= zcF%h*DZA4dxPr?cge_SvXHRf@#<R6n=!bg41!Y zaT#Jn%w7_5AmlyyeLtN|hrNaDXWwDD>d{BxM~Dju$qxkK5OxwU_B)Ro!J5)E5v6fII_-T|lI&)R+xX1<(`*WPjRjuPz4rqd>bC}+{{?3syW zi$8Xl_A0a+^OB2a@3j5dRwiLmW(xoR-cY}H>mbhd)SU5am$wdA+8{Q=0pH=h#I;@v{8u6w>nmp(C9{TrNo4zWf zpLq0z)}I%e5TcrgsQXx$%1Xt?g-6ZISM)k`vI!A6!Ye+^r8{rmXAfdRg$}Cr*&pOQUBSgK&$$?03mMUcAcs3 zxk7m6g2Au0JzGNY#kJLXMAerN)!Z*PTo?yT@l0bKdv0E@-0WuxIpcYVKu7(j z2_Z^(Yh<&j>?#w0Y<&D{RYMmYIndO3c-DH@mHr5ECGU>r&Ss1a6>!TJB2cdMjI?L^ z8xKKjJ|t3qgt+$99cNNVQ&Qp5=C$%{nSDQfHFUbPoNq#iDjwc)-1Kwu6P$i3g`e>` z?RZW&`C{qiz`*?MP1L_v$GXi%~OA-@-t!&yARp=qxd64 zZSLdaR-XA#8n#4_RbX_Q4{LT(v!Bi+h?5tKtrxHKCWJ`m-ECOuJ}&nB)b#$?X1K2n ze^Rp_h|j+CbZxsjuHJ+YnLNIWC+?p8p!%|{2&3IbVfaD16aD5n`^C}saqqneAyRmJ zxW9X5?~HaMw_zxnq!07NMPH;J>i_>!eSL8XmMg`WwG|{7Ur8h>%GMGq6ST&5{u&1# zA_6gJ*`6~qSzMj{5PfnOa;@2qngL>~f@s^SfiS~ktB;2oRJ>V{6%oz+;U8%Is(Ix0Wp=bd?NeK4Q&f!!FP8fETq;7_u97jL47C zAbJ=8u%P6MF&_g*W-M)R!hxUAALak!W&EGT9aDfb#Csy|B5q*sehz8tH*fktR()y= zLRtC4J0Rz=ggW@}p=d^^5PO{c>^x(>_Gp9A7-7ahK!w#Y$m7*K8doL8PwWH7ObQ1- zz<=-}{Zh_n?^pGZ62<^6bYAi2wuz{MqFMvLEpv3u+;9%>vp4~nB0UkteB5VV7B|&s9p)4@)0qm z5Ovo5@RjB=GgSf1jZa1HyV}*m;|8ML6^ogIXs#Wmo7VIkIx6CPJmj_`*1bQ!WPJ5PTKZGD89z9eU zJOCsnA;I@xVp5z2@xvJF(%aNh)OLnqn<#2B!ss`PKrQ;EI|z7TCFrx*J+D;H$7=NHqFZ3X zpqqQie0``!x4=|^vWMT~(lYhyM4m|294CzYcgI|6}Yw=bUc)z{|T6 zgrV!xA838Y%hhE0hgO+#{%20FeCG=$Vg@Dc8GL@M^AWOo`-No6ZV(I3%&V1kWT|_Q z2)0IthQWy*TmkUFE>VmzJ4NP1g4Dm8SHJu7IxmbIi%~ABIsw5f+bpIls1$sJ?se+F z$%XzC4_?E6m*T&ao&P`ZKxbRdCw80PKC`({2b<02Nx2$KhCKP+;m7Li2TJTg&hf|C z#6yHCi#)7Kb|1Ym&=C^dVJ4MBIL^e3*u|l{NXeDaq2euaCP~N0X0}s$ggiGgHQbfG z5z<&@x5*9vMP~k^sFm4I_%HDl{6`u4A5k(N7jmESN*C?ogeRvOT>EAMqSfUIkV+1O zzhTkd4-&M#c~Jw<#sJa)5k#Fm<0l`2Vh{4C;8Kw2)>xToWQju>**TO0>9BR9taTyH z)~tCTn^ttW>=H-A7$CcVnC2G8e+$X~7CzB||5l3s(r^Ed{l_}>zlNVVc&FmjBR#66 z4_5xfx``WXA(+)57JkuF&n}jBmMtPX2i@U^YBEI_tTh(+UTuWY)v>EI!W6?Tvh<>N z#+$O)N*IntV9U9%L-UCV{T;OLEk zo#BGH2bc3%_Nv6_hStr}b>Xu!h!IjSNaD=qT%+lqDV-Tn&-o8q2%ky>jjnkK9d}*FnRzH$R~l4;2p-q zYx;zK&KZT?<$zl90gw)-g@wD|u((eLoAI(3Pzllyyw?8G$NP)=fEdUjoZxy&Ieh$c za_6fYWGZs+i}B~qgW-&^zfTJb_p*MnwCZnHD&*u&3zE4;+=9u&5n7l43elq!xZ0l6 z`N|SN94{ale1eEO>aEG=AI6+ZfA+IT$4lnV*SI59nX{p8)+@Q+8xlmG!#xzrOxxKr zUnQVSz8}AUexobVzox?=qx-)a7krYX|4G)5?H=K`qdZ45rit!((b+NKhz0l^^tjIP z{Nf=`9C{vXcS_ugYu=Fq{Gt-ocdQY?|Jb$T0W)BQSTupC;9mMK{h#EMy#(2-0t8)- zOCcl#t>4_`b@(F@Y9eBe!xzsX4TRH%o@)moxZBk+Afb+79Ir68k(Ul4=liTn5D7f7 z`)KACPSK=k$O@5|9x8QDlny`1_4Qx+zv-uz&+90{I=G4Yc*ea2`ZJh7J!}ir210zC zZTa{)=InIgFQ4gqVf`@m?k?E24eX!)oT<$Iv)kA^*8MgT$-@#uuWJeQ!)vNH<&&;9 z9`M#tC;ehjtStnDolAH&o@l!M`>*szUi#Dd`i9X;hH{gLe2if@p=Q%V}GwWv%*fAApkKxJF?cCF6NrC@5#``z;>qbTZ}vUQnGu@eavEUk98XZs zD@12(Vd2i`+J-Ey5o9T5&zD0Soz;5F*-|S66sjRK1A1tf@(6Y~+fIYc9=n8@fou{j zEZi5Yt;%dyr@Rc!3=!g;MK}hN6vlC%Y-+a)@HB*e!laq6*h5%9aL~udXVKo$|L-6Z zUuB<6a>?w`i8!YbK~%b3V@&wk2T3N|**jeXS@4kHONM{;ehR&?a8v6C;A>H2MZ%Y0 z%Bhn&L(C+RtP8?mnQotM{`@@cKF|8uIPjmPnr<8%>d;wx(b$@{<lN16IUb4#E2W<%o;3>w zfqh#Nh@3>uuUB^^fTjO@q~rBx+s8iPnZe42q#1LDc@P}`**SLzsJ*Ywyw6}Btej5D zD{?=M_u!yW-waa7To4;Tbx66+eLkLsm}FNzvQkPeO@0dV$-hhg%j=KzlbzfHIZb#E zKwCZt?Q+HD>FAG7AMiHKlYeODE9MWUgYT)*@q?FF2B&WaxuGZyK5e9kUTk*{lDTfT zK;=s*w(Ce&Ru!Q_AXqLWURN<3e*^uO{(Hard6am>J@Mok^sC&NA(>3Yup8%=N(kIf#){#q` zLQPZS_Rf_**G}ET?~rY9)nGjZ4@?ofRK6AZbC8ex%Knt^qyN$$`f1k-%8ARxBktkd zm!f<`*trZPeGZg8d7rPb9Rv|2#B><24A1Deqa|;bg23v@^hFCqaL{ax@uE5;@Lqf zi|~Z%8|l>Yj3jVS8J*y6hf44>xWPv)a{E<5`=$R?^&fSvbD^G}dLl z(D&PFH*CmD|BLItAGf!N?W3NT7f}uC5K&eMh#s@S1j3O7&~W~GKf&&^;X0^(8j@1f z6?gsS{B7J(3Dj%XT{mmK6BW-tTtgktL%P9DBTcbnM+8VxG)}Z`T}t}-6q2Qt5`qeDU_SRLxQdhZfL2js*gx2i?C}JRTaY|HM2og5%^)bj$# zlkS}{YiRSeq~zit_u|r^1%ReBs?UKq=yxJrUH_&3XiHOjSJ?b9VU&u-rq314q62r@ z`Y8i#laQJT#}J=vi@0Ynw$C?&ZX%a78SJR)ia(8FzbrAmVndEUbDl)5f z+P!mM+hwp19OXH+DXcR`xvkY*?N~XG%M^jk0f>lQ*R9S78Gg2QJua&M(jWZj<<2(l z-P5bP0wNS7UmG#&?0DL_uk9L$ZJf4%a8hzTErz`j=^k{uh6;3{(y|7i*geK3DWU=-}4)=$h? zewxl1xgGnR6vq(Rwz&=;&EA<2N9TPieUh))^6h1N5C3NGj&>V2VlWDyBX4Zg+4q0m zUUaK!2o_1!8MGMvp8-X;x(LCcMDqXp{CWQVi^Ez15fMPvB~94}!O{0LT|`75ez0H2 zE+R{@Fa8YOU-JFgPeg2X0Bn8-L6C(A)UOQizo`90B>VA*Io8_GYJ@)f5huNPkBH3{ zfOUH*vMdp6-C5=}T|`9J?u94$2HCuQ)6GM1-3y1QExXVX_)a@EIT3Y2ha# zEKseLpW!67C~F}IR79B(ej>sS>R1I?lH;A{KO!dkiI~YsQ9;3WSD-A(<}7AP&k^(3 zK*ahDFtQ$NyVr5aXNM89ZFbO_=XhLJ<#8$fwh2E|MA$l4K&aV|tf-Ds168ISz9PZ_ zilBm6f{q-#MAwBVDhWRmL|CDS0wAv1Zc#Liwd2555`H4SnP;e2n@;~GvLK=I_^Fe! zpNMdTDoSlS9jyEgtakU$Dm_O;8+~eLX$eNlE7P76ex``95)nmDwVw+a+uczh;b(#f z3x~>YAj2nvxPf)>T z-1^FKN6su^NN~#GDsw)Zjb#n5pi>XqRosSxsW<>%q9hT-(M0DZ>p%Oh;`EXVA)7yKlaDdtvGn@ zFNuh!zfdNvcI^jC#vVWDz7Wq@5Z{yjM8vy?vAtbt0wia$vKo8am4mnY9udFo?iorm zU`%9fQVj)oP}KSb(DS$BPek0GYX8dJF${?pEIZeafNBls=WoWJh`9e83qPP2YOg5d zOa!dkrd9FV@}G$0J}9C>tpG_OAeUfm0vpCbs(O3hzbqo&ZytvBZtP!j$yM0Qd=}fe zhtIeDD_tWl_LJeSK6aXf~hit2E4`|);v>=E$^kNew?n+H%u1k0G8hFnRr z<4goUV>_Dz%_CbEFDnXuAqs5~>++wgZkr!MIqs}|rUD`t ztD2FU;C`xxoo-Vn5t}v?f_>dbKcdXjQ&mK*#9j1 z!Sd_ikDFqx@iLgAONHQ23>ke1e?Dp3ZbrJa`(zIgRXTg+dJ-a zeBFXr+t47}jylo#&)YxtQ@-YVWLt;8xToZ|!KXwtoL(~;wQOF-WSni|qSXWf*OhjTvj#*%yKL-#jQ!Wc9>xE2?*op9(wpEV z!`Mfr7*8v?j896%x+7asr8P0SXmqfo#As33rKG!zqwkm%P0)2z>_7V<`~4aFA7KAY zbg;vS$2iol*8y%g7N(7I+v$03`XFS0ea%mbRT2?*dMxi_kNtq?dJf;i-Jb$n(){5a8RNvT@h`>a+gu*|$Nv2v zzw)>3?qiVgPf2yc_D?`g?O-tAazS-NQ39Bu>RpJ1X*_zYGH2b*U@+i=4UzC%_uhm( zkhu?}%^%$lX)qWlH+}NpCOa!N3vi#0m0z?`H#qgM5n^I35s1%Y(tdM#z)f zs1xa|R!715K!9#yb2-)_(CkMKX7$x8EN9fiyNdzR>*0;_(eC$g5n;+Z$nU^lAV{+7 zmCG%ulfc01(knD@K(>ru!(&5;_?k=7^_tAy$JqaC_TP6qa@{22yd4V&q#lQ}!YJAP z8(1#DEI!Hq3(zG>eSe%||6gmrtaIP(NlmBHW^WlqvIbjl`-g8Mk2<+Edwk_?AeZ#D z^&kw?*#9*9c?X!cMLL_@c!oS~CKN6$iug9VQn`bmWRi5An>xED(76tEnwHy(T)Vpd zud>GeN7yfVG)Z(klu^jl0z;rvm@h!Dg2gQ$Q;}0y{8|--sH)Q&5dvlZtE#S&RH2G- zr7T*ctd|)3pJG3L!G)rpkxP~~K4><4HZWy+Y$!|@ZdtL=wN(j~E2sKHOyvgXN>DBo zLGA4voXYGi!LDL=OJ|~hvHwZ-W7vJ0z$8^QdLAwxct;KP;CicavO{gI!}7t z!h1-Y$x&cGqFs{H$SH0Y^hJ=?+RX0z8*8DZqOY<4DfY7ya=vBBoAs69b$A-=;K=1W z=;LSso*z7m6r_>d^{Y627A7Bd&Dm0$U>c+7(E(*uS1GZpajY~?=G2xIZ0?Yi+7GaQ z?3c|Q2=aefY(Wg?Gn>y>e2zn9l;pb{eo2V3ldXrYrVf&|%UB%@i2j?;JxDr3Tn7Ws z=YLniRzCDn=RkaMI2oX~L3{(o{-3v>BL}ftC@G>JIIhINd)@kwNEF2?Ok_wiGFHhE zGRY(;XT2UoiJ(?fUu0slg%{z3%C>BFFt&9;WrTDbmQ5XR$-X*`8vB3Ve(_L9Oi_R> zpe+X8Da;(+*$_Bmfk{^I3)JE)MdF!LQIjC3#X9C^PWCgQ7CL^50Hh*KyMb6jBeCGf z{vT%l*pFQZNMht4TRp8v44fHA?z3}yZT-wqWXWb9?yiFuIahGP$N(K}BXA#{Jnt4sq4DmRHDHIp&q7%#HoOYyWmd70ato4ela*kLl2Zn5@8JvNO~n zgD0pN9j*EtL}$fpBbsP|W}T z^h0|Pz@w}}_-;|axmCrMW-(@ylTxZ!un;}Sw($IA^iw<(k*Ap(c8XL^hx7kUS5x1m zw3OKT!#``FWCUf@Cu1Ym@W>AT+xhQ&a7-J*V?<6iI2&SnG&)NnMUN;^7qU9ntkvMm z(xum!iMOIHf-g(E+v14VD2^;l+r1%vGymaVLOJXw5zbo0XDK!p1~JgVN12-KUKz3` zshGD1{AF0LTH-6Dw#F@cvZb=yb!GK*Bmhw4;+uI+~a;38ieK zA7WWth)$=(UH^x};w2zFfT4xtIU&XP)}kdU}8(21Kj}_-Ry7 z{3I6<_3G{{N*1S9Js7rd4Wr7kb5^GiO4Y-MC}o7bu8myJfB0uz7A#D#zzqyuM2kfS zej>h}Z_=Z1Eo#>YSmX=Q}FZ zv2z=Mmf0wYy5#CL^rqgRdm{Blzh(QBOiBLN7B~xH-zEXMo&WIP-%?mFb!^ZMfCySc z`K^dY-x2D7tb?LZ`f9LfVS(qQT1w@Czc8tUfhL*J9N*1<`1=U}YUAudINZm;#JQwr z7O%9M3>ZXcO#8>2u!!46?Isf5bEG{wCLYj_U4034e+ps#i zz36`S)jJfdK7!u1%Kw^S0x)sJ3Wwl;_V?fgO7UV6|# zI)eat(o&W=m@r0I#GL$1S%ePN&c8kwARokk_^)Or#Q9EmioTFe&K9R+e>eeDF5Bn^ z=20?V$<^g@q8(;_2>;>#p6+uV8uXAur=H=crZkdfMx2Ot+J^GXGso{JiFX_R_w)Zf z4D$20NWZhUVoniypF%#J|L{Ldi?`Ae4jvH@A(Tze{@rwPAl3vTa>mkT|Lts1Xo+Nu$KsULznY zXxGtDdmKo(+YYaJq2tZT7_?ty262pKG3JlUCsmHHzrn?to5k4Z@;=LE>Y(_=eXr6O zs$2=Gd0|#$sp!23zDo+LpUVazsH_cxZYA*-EBD1UsN%C#AAE>S+tN}-Uv?ZPjGS#? z9r6c{!c2Ziw|!Tb58F`^FjC>+<&|1XPrL0w=RN97Ge5BMq%&m_$vWv}6^`;XK0t&$ zu?T7$UcMtRjDoXW7V7RCBE5P7S5WlelE&nPfa`K4{u-VsnENLlD_W%7cYK5|6`UK- zBN1a&&!>%Q^sG@`$TNM)`SnsC&sQk=f{z72uT%gYfkmJevCwCx)71sQ-%BV8u(rpa z%7-lW`ns#Tf$@#2p#q-o=s`XU#+US~%DkSI$4Wd0#@LA_`sarpBy*<9^k8E=d6V%u z{aR|SR3u_;tclV=(y*n&$CI(aR!08)$RpzEa!##FBpiJAz%|DB8;@d|rwoe?I8AaX znOJYC-NPW5jj4e*GH-Qq6i@=tIB4s$zo$-%eXQA8BJ`CZxIocIr7jFer18gA5w1-4t->+bmK6GYl*G;~ zl8!pi(&`5K$aBGo?q@MY2qYmdUbcy}b;72?Sb)F4Q#Bd6So}7=LsP=t;9*H!6O#G( z?t*gu;D2)YDzM$X%1`Yd=~ zSE*iGQnS;jEL*rc;F9m!?GW_nM~8badA85_b4s#_3n!cSg;iUQEa+$Ij>1Q^v^K0X zBqj9|HZsFLG?rz^d0qHP3tmv3)gS7CAh~t)vhmv7C#jON0-y=I>qc?UE@&!sO$J4EyJN)o7rmOR3^GEK`CW71>Fd4J?J!iL~iuDNOQsp3f*va4^P+3Wabcm_3F z!S;Y4Es`BMYBXI@ZymE=j8*~wbqrA6W(w77KI+V0%)WXRufI?FM}dDOMZeprjT85H zVtyC@*wKrHGtHxnv_D>_aaoIaK!`McIP6)^p_}}7OIG4_{#RvPpM9^_@SZJ4k2fJv ze>z6Hyj~VDIkQfdH0D&Q00~2bZ(twOe4JS~UesMb2WQsg74g1P2vA)N=KP+5T!>Jj zSP_2d^LT%51lUMFYOT8-ad*+>5Slpr1FC?d4aI}cp!X}30FS0aD)Rt*&i~px>>G~r z&YW=zJ-A~Dm(vSu-4HE=1DNa>lPDwV+xh*_kODP+x8^OQEOyD=9V&i$OH^Zkh7*eB zdPmzMHxBCZeTBXa#xEg19hi6HNPyPb;?ydY;EeDP14X5wgRN*fx*5rrk0iMGd!GOC z%kN>v=ty{B&x0T=Jj zrqxa&08X%P8&vnNi(Gj!|J6g$IC1C()_SxHHI@ND)7JsI*_tju0DI_0QN>L!S)lH2 zHqPo_WW>whVFkJ07JeXqe_bGVg7#LPL?=zUYj>JsEJXL4$$&y24bp~^0dfIeQB^F@ zA*(P^Sgm|&91=y?${I*UeE3o#K%e6Ly6w?{M!kT{gR&$3sGG`ILg+N2!_C=^u+-J1 za0N5^e&_1pd4Zl`PwEZ=K8GX$79pS5^Y_{CXeZ|iQB-t2H&^ncmM6B6cGETqVK0m) zVMAd6#+0jg^!H!Y9YMlC^H@Ok5YSmTyN-i}6>feD4a31AF=H!GTBGB=s@GRaA^&xk zPgQ@K3*j`nHg(^bhxDG6ndWbFnc{Hw+%{qu#VjEx{Aj6`H=(6vmpkA2OB-Ko%;Bh~ z7KjPj`)y`|n#xi|?njP+zQK&IL`gCmRqV>T+R0Hw&j_D;Z94rgLPsiyk=W#^(Qm?d z*cPo!R%7lB=gpvNaVHjWtYmVNFSJ;}5!E*9cprJ4?sd@WR6`UQ(gfO!c}PQQ#<3Ju zSl*$cGnYE+UW|Bi^Zs}MENyWV9TWwGu_}w1f-mkKK;a?$KndW`1&kQ&Et(+#ccPpr z9OnjokTibme|`H(&trMO)LR^^*n4u07m(gtd_D-I<6w>32G%f~xJA8WBsa3jv+ak6 z7yygjYK$@LKBiVY;h>Aqh{|(xN^=r}rGt5V$LyuZxp)lM;GA?C#e~DO>yIDrV{8fT zSujKT?B5C)6+R})*RcwrGPce;4w6{+#}dLP*NX}a5+@A( zJ7n__g{{@;9H(sJ-Rt~yNLg4npuSP7mas!iHFO9aZ6}ym=x$~kFY&aHJ3~-5m7O7S z5DiL5D8-re(gz-uLii}L-i6sZaQqGj>(s;>{S}eX$=<&5zpu)HLHr%UJr@ah6rrDaE0Hw+>6fJXkafJ7|odnZVBp zq;{myArm|@mw8pRGosYq>jh}e_v#FmHrd$;Cy(D&Vj*|!LQ=Tix0f-`auTz)cSz{7 z$&~nX_DBAwy~ak zoJ1H&lU@e1yF1xbZ_(~+Yt0oBK-!gEnSp8qxEFlTyn@--S%D_>69Fm9|0kPr#=))u z0_pBX+dBu)c&)kRxfOuzpeZmA+K=O0`GXPy;xK44TyQU(pqrml^ZpDVk(DyjEudkoI-OEABD~z{v-|Q1erqvR!@Sf`L+gt29 z=9_$Cv2ml_hYhLUCsB9I*;LZ|b*IV1`a}4eYwntE8U?~uI?ub`H{@aYPBZX%7$`_S zG%r2XnPY4TMo+EB)r^(oc}d*eFEcFvt9XYVeP*379BhCuD>uMfAI|=T5oQ17Aj;Xr z9za+=lyx}*xCi!_AzspyzevP!&gL!avg!q zW`Z!N{%6B0GUr(8AadEU!NPqdOAww#Tch{N3b$Iso5h1(?;oJN;$`Xg5-ZXc-?aR4 z$E?VDcRIRDfA?$4aXG+^$p9a5Fy6qbB6p1LCBb;ZFPovsBj}r4AZ8n0y_eoKgafZa z#iUmOI`@RDe6bGI3w{GAwf==T(D{EeV2ch!7(ZtH3h>cg zgm;}wbO7tEvC1crX?Tm~eRnr4PGgba?b(!S9Q{zTwTtGdFi0oBYu!YIK@dR|N|s+Hzuyl3k00 zMRlv(KT&K|gYp4-xXr31kz3j%WdlLQIy|Dp(o;dj;n!-`i=LqlAg7Bv2apA{7c7vC zhr@z`k`MrGdW--fs&@-Ri1BD-`u_r*0w8XylN5j2Y;+~VM;wBg8Zd@wp~t_q@g8mW z&gNI4X=s{J=`+A@1Io?j>o&58fzFKzid{>D#aCh+%aFgrMJ$+^Lkm)upT0$P1zX%Z zv^gg&tDmjL$|=NnN8h@FcPfw^PRR??mSZ+QM%q~Yz(Vfpgcs*dTuz|puls4^^)(7t z6slnBm+RA*<~Fy7>#|S!XH>;p+T!)53<|?l)2#@$MeJoZZ@*X|cf6%)|5o1OVoLSQ zYj3StFzhs6h@MoHr3iG{AS<=U{7TBIRmGFosRTyQS=DZ8mG`*W@(%Ael>I@|tDIqv zgCqMM1JBDZ3f=q0?_20um!1oT86w-H9Y9thRK zbux&wBu7|JWNRek0@4$sFMBvM=T>MocxV?4&l1l%qn?ef0sBf*$N$zUokyL!IN{47@X6|zG8YgGo zp&aS%Tlzmut*hYT8si-3`O>3ASCS?=b;aCE8wbQZ%lAW`9X0W9uVMtYX=v5HnX5W` zJ_&ofz_Fqg`TCQXJ5%p;DN2orxN=7r@#0XX%Xh_zTT+bK(FxQf*P@B-V42?7@|x{sO2gS^a~es`6_RfNzevO~o!B7w6W2 z-Ls)1XxtoOO2Ar_@YLMhRp=r2_Wb^CgQ*OByehG zLc~i@?_8~>VSxJSkda`us2lR*84Xi8=;T6?JdQ&kVUboohTlndP@?HLd~*1)nm?#{ zW-M%4#F`3r=>^z%I^qH@U!-^G`A2TYXZT4r3h zsTfLDpBK*<=)JWmd6FS0^#b9KWWF40b_})1>pn`Dv`^e2NhbtQ`k=gHA|G#gYYJgg zvbo;N0&pRzyyXgSX(lO-^S6)u{xjQnP5P7MsO;DrBcdw;*M{5LMv z3EYlc0N#kHt(Ds@WkKoDsiL(F_?ss`M$6JTh&x;QW{qc=(IT1+%3QEntHr+#4Ar{y26?5_v4#oIoxu-6)dL z^y+Ofj#^8oG1~qePO8Zvs}=@+)JFhzA`tuBNqqxn5WI5xgTaoHHEiI~N5n2a&3=Zb z&2V?L9)cNYxK}_oC^0A{S=7v%C8QIs3 z-|1~-z{S51xl`qoy7T((SbZH|(cR)1*FgFKpsH}1GT2Jq>CyoEK+I$=h4NRxTGH;Y zQ8l$TJo1shU&|8L|90x5n$Z!mhlJsS5TbaLz;;-wNNP&DjlFk#eW8JjDiPxi#@Zdg zEz^!cv7Rhj0`63g^EuJ;)CA!+D9o(}aMuCymI2RMVWf8ufq~3x-x0X8tj(ThSM$*2 z`t8T0w5zM<2}hNc&S3M>a4Aao@fa0+X2wKLa4NuE@3uw*p<)-SqKFr#mm-v;N502SuNTdtf|2T*;B={RU%~r-jn; zQT@hdqHXFK>_TbkD~X#&*rtt*q5+pd z;}tY^77RxLi{AlTC3e8^d<}1pN2}_!*X1N+zbR>H999c%UG>iw2Bd3b7k<=;1GI3B zgT{ay39;+b8`~qEl5Eb(D<3j@GA8P3#+vWGlabmWHe)4!i?C=ZPvrko z{VU?tEhV34+P$@l5j`N+-`(QZKv8*1uggI!<+ldxn>6Hg6aZX75*#0s;`9YU;|E#6ai?xt)tlQeECs_a%7hc&G;{wzc>UK|;Ww zT`*VWvd}2%@T7dho#mu7PN>K6vHSSwjfSbR-ml%a2}eO!<*gR0^Y*|o@?IVJwx>qHlq0yI&D}!^)S!-VPCIIPP<)+kT3HPt$O|4lRWS2P2>FR~#Q_8Fr8E_o5oZ?j zgywB@Q)dyi#YPsc4_1NPrtrE^%9;f&t}F+7&cUH7Zqupc*~Z^IOnz>U8?PCa2K}N* zP|Q?{q6mDv{OO!Ga@G5pV^Aa`Aj)%Ri;VQJlhuuuS?TkmNS)rWq{f9;Qtv9&RzcsqS8Eu6uStlS54Ajg7W2pRZLKf z;f+o{f8A;#^&f=y644^BGUJ|hB?th6g-v4r&@9@>zgDyOUY3CLL4f z#SJ^Z7Bg;rPZNbaB9gVfavu1hL*Y5)_6<&^u+9cs$_X_xYI^U_u8FKXJJU7VWwk-8 zzap!6?TzTPdDjU2WVUoOHRI_Vl)q?as(45^j$SgP7FlwNv$}0<-)n=lZS>jSTnTxM z*!*?+JR)h7XBRLxU-)cosGrOh_e#0W(|!8u_BW?hC7(CfFC;MhfrK%(%rgx!W93yH z5H=B_d@P>rBw+ftwr6sYmDT<4t~HcPEb#%|>v_)hp~SnFS2 z#-e#13kkRkG35NG=yuxx$OkMxx>UG+*t7Ay6pF&rWT}RKwB}6nzQ6900mPkmnYPfk zl{C6%Nq!a>W<@%d2mEUF{M=o0F@QbXg^qnnLxQe=0Ou_4T6fXcU=oMQ+>PWv{u_fm zxnSGMZDeq9Q1t(07&s?R|3w0TSsI`v4>x?j(6guD z<(SDn)T}F)627~r`^O&#c}QgDJLt((;K1CV#}jxN&~xIlqei9mxCY7*reth|aadZQ zyX(q}Z%E%8eyxU!k2l-+DK2N5^~X;UMv=1^A8c4J8kw`EEKLp1oV#U1%(D|N7oBPw z=51%^yQSfznlh;o1z9agm;&6pl%KU1mYUl?uVW7bDcR1iJ&(SicQ-;FR{F#H*9ROt zo)}!N?=MJ1Rte9QC6SDlBY5>H`g#n1#***H3ygkWD;oP~%o*}i(=FcVcnR|HYrH8D z9&K~zpyB5^Z-E;F|D)_qE*$J{)B|ed0l0!2Qe`=E?M8}Em|9y-(jzPQaK-T-;T!VG zIjpnrPWqH_v;qcNZVxM75xsJ@RhgyiCZ1%L))Uc}xN?2ii|G~Pr5264o19<|NnH%!GPv+c!8?`+LhvAL@TsxOePR;XMd9o(~H4?$#YwGpNQ_4%hm_=8K zO`GqQh?d)81fLH0Z7kz#d45%A)t~!&4!Ptx@4IA+zZNN5y-t60nb1s~Yud?iTB7o^ z*pHD2JgO;AwW%V4ehg_B!z+&wdN>|H2VDxwl$FnAXns5Q0UZW^)eQX%`HwY$K>)4# zjfMI3nTXM7XNoQ2{2@lsi&M3CgBA12T7E5P3k;zBJBJ)!j_bboXc*~8a_W{FyQYaQ zoBVZ7$L&7dEQru#_Wpb?5~HNPw3!=!%Pc#Uoc|LEXJa=?4O{nuTugvx!8Db%tu-)x zN_R_$ht{(#(n03d{8t!PAlHDZFx6Mi2!$Gws9X`N;;aa+L;Hmlr;36lu|6&JSdSVK zq9hVfa$HQO*F1ftWh_%9PUCy$ehmdThkykryN@WQCM0nPt=S(l6Y1_g4S)r{$RPdPh zq}xfaAi9dGW@=C{^+MeUiec!{`0u)4b`DBXZ^EV0PPirtZo!HQt& zRF?fbYo@1iu#Tn3JXi{e~wRCaF8pUx;jUVx1Krux(==W2U7iK z8g~J$Hsw{I98n^B(YPkQ8Sqg~VdD3Al0w&^DP$!;4}Xe{nL^nFxu}Q&B~;dk2XjbY zn*FPG-X1yrw$o0wwCH^a_#&Ml7ti*w?Y*!#nn_sc9&Nn)%!I5B|~9zDPIjlqy=`k=Jy_!9#SzFVAliLFL`s}onoM-#szVbqCzwZrm#sGoqpn~RkigQIFLg$ahX zR2-KKS&^z|HS1{P*GlQKBIk{+=Mf>fj4-ulZ5m3(7xzK~gAZh6ws{fa9Lo`;>Y?|2 z>tZSh4L+8Gjifs)`@28M7%#FZN1tfPfF_E|^wN^(X_S9x26brSVau6-a+Sx#KiuL! zEer8GfEMn?0hHzYQNS25BF({(;IP?ui5egaVXXFe&_5fpxj97a@Mbb$aGd$rWF6|i zul=}CTsl%(+vlO=HA|HrpF+ieD(Z|hZJiY>0vJM%t%IAxS!Q(A%sKS!)9m)Lry3Px zK@7?zmTFe;u|CGfS>Q=yQjlP8e)=_s>ZEe7GyGp{{C0u6^E9M$z*GF@*w#rNo+v!C zHo*m4VoHgT0 zlM9&*e;c0*@%9guw2$04K3%xHOH^?`ud?SgocE=EMHd+cTOTnumDcbn>jzkCEa7l? z>zFBs8R!61?+xlT>vciS2(XX(+Ukxw(ZaF4fH%|=N*@||{xhX{OtO$@kR3l^B zwr`8*=MBuQ4g*4e;1I~xzg+M6Rn7A^ivL4=7&Pu~Qq*O;Xcc=aDbRDp`!4VF)p~{Z z&gh!nf150qp`>)a+QGj>P&gujnjbqi<{~Z`xi&J(XqzjT(K zCL{Y*VB!g4+i3M&wb{yqKR&s=sjfoZxBKxP-(>HbsZS4!p8uMaxSyii&LebY7(dJ= zFin30{KcL(Ge1O6BZTy5-Umb882T1|+gzHSQ2N$F#&~!2@@#EPxKfX`fq6NZ#%OXG zAkiC1D5)JW5olA|-C;m(b0=h=Z%Xp@hO=8QS0rK2_MfQgTAOZ9r#7L_&p4+-ru9$_igGr$R@YBnF=9!^^(1Puqs z>ny3nev;{;s5-BV6f2tw&P=t61C&J=4G*EG|K*j_jjOCXvvKMcoOfou=pPAK^aWt*OHl&EWWy|f3AsyS4%kAn#}7GUFnra)RqIp_m6fXNfS-z+9u=9 zH#D&G0rFXKG6^@kQlx%n+@W6~<{wi%J6Z0mH-E9<>Xw6tbCF0UA;WNyjY|?&e6sqyOH39??I*O|?5ea7NSgHKoj;Ga$jcu=R zu+aIc2M?bXFbH>~-jLr6ZLQxUSe*XWc*Csa`-&8q6x z*;CpDB>(v&6N_A#j;qd$e55E_E=q=4Zs7$@u6e!w#VkKlpY6jVd6}p5NQz6%9!)v! z0}_;gSY*RQ*52jTB%#sMQCyh%Q(|F{6P??>2kS|#q0QGxXr@sl1zBB{o}-9w-e+&G zNq^63fN04O;R0D!&(ckRVG1+LeiLzDZ^(N3P1eAYV9bc#4^XM+$V&5fpxQ0LnfXM@ z@Rd;-6ZIz9D!|}zAj7d*ue+EW^|v1HT==(X1?9)lcCfFcZxNl@;T_4Yl{q-Pv9&K9 zhi9f2J7Yed(G5=SO_`uww{BPo00FI$82~TZE~DGno(rH1vj|eyW4DtRew#k@sJ=}S+@({2s@=2Y;dJ|&{)1^=s&WoO(XgpsRNo#)!X!$2}lAlPrg-6HN&veV&22y*b{~m!-==M-XOI z8q!7NEV5FKR;8@+PZ{O&6<`90=t$j>1fU^-QI?b;vV%qYjLJ4yc_LssfLfd_tGiw;lKQlL%sm7oN z%3&UVksueOlt)||HU_VI!ilog3u;fQ6u!qu>+$A3o+$}EsSx(ThbssR^DQRjX}GlH ztDCAiTU0<>wH!OZMQMd#U&I21!@qh?;zSQZ>=O=x+GC0h*fPs_*{1J#tr`&O{V8mI z#Ig^w>`nx;w0*PwP~dO+x%X7~DeV|2!dlD2c|jaFv|^q9u{`o9%1%bo>I7s`*Zt*d z=Ed=X=7)5UtxU5P@q5m*CxOKd0@P_#Y4R1#V>>xyEfkeel(ivx<-LzwE+V}IFs@3-; z!^saab4f!v&)N#J6WpUaLvTT@Hr#iMuN@aKos~HDn7DAxaP#7GxHQ6WwWpbb@v_zb z(UPyV{PCSnXLywWC_4_ZDYy#IyIHq$0~dJ5rLR=ZhOw!sbTwlorFG%+vO=B)Vr8fN ztQVpVrH4W~>m=$5b%C7Nc_`-)P+5DIPpY63chgPBk_k1$S~#FRrtO&jDr31vIX6dz z2Nn3-IXrC6%_`BdCE4e7*%No(9W|?2y_)#$fI{t1-5VgI>z02isZinbt~qfD)3-FL zGD3MQjvf%@n8^$=go1MqE?yRu%A0pKCu!G&k8f7h5L|$!GF4$*TRAqEN6&bFQ zv{L;tWKun->$BS}Wz zkX=Uj>gUnPHzS(Gf5~MwVFnNEwP!C}_kKKXf`M6gEjbQ)J?X+(3Rk`pgo=zf1?_GT zv_C+6LGnDd>X$y$59y!$EbKT#27Rgc$Hu&~A>l`ZWYj?QY@~0=eIseJ+k!q8nmF`U z;e`?s=ui3=oi>1&DI59Mcr16xPHANSaOe*=k-1*8}znJ{nfbg`)L_f^)SWov#Rz# zrevAI?h!w_Rdmg)*7>NXybrw0d=rI9#dN16iKRs)=MPAlD_%X^5_L0fW)Un8_f$LY z3jX_FQW&D@(0e2L_;l`^u7bu(Hlb*)9TXG0Q{eqx&Lh}CY&hw!;Z=vqQZCxz?A8Foum%yn#o>N`g=B#CGX!Q(E>f3E13 zxrFn+^ZemW{yWoa0?*dTMx5fB32u#ZTo>jZo=Ko+Dxt1u$~&&)e9G>+bw6kslSI%x zyb3ZZAHBYPjTSN6XKHR{^!A3Wa{u~>MBQt0?(bAAzt-c?BDe$t*K$yh%KmBaU0WJ# zI3@!Y*h-M%$S9caz}92jAY8{3TStyqLDnpxpHr zKZi4TB&`1g8@?Kd+&WyFdC#o`T(w-!8jpbMe+mG0S0y08uY&?`90S&|ZgulFgOn$% zn5>8Gf?If)(^(0FCYumw1TL^PI&V?a+s8sGFI!qiF-ZBL`WEXxRn{w94R)bHLtq`6 zeeyMF2a~t_=ImGZYaOqY(JW_YdQ`_ok&2fad9Rz92t95^siL8mk3L8&y??bmrppD% z=B={AT^b0zbJOE^FMC|mFPJE!;q+^FSc7@SLJee)Y|EyAc^5houDW`>uZ>E5GS4!Q z2wSlU#s#*oXOdB%ji+%cv^_Ij#ic824mIkIpJqJLzaL9J0dvxd)ZnQ723JpZCpEW- zZ<)}bIJi%ph%9#Px#MBV!uAT0SeSB}TqXXT)%@H78v#f@ zdCOclxF*$Od%Ir4iV`+^3YjD*qv<#3cpj>NM@Kt;WQuh88ux?vZ3#wZysJqu)6OO0lvsdFob7$(BW!VFvQ4)%|2yr7`FG_F zqCOo7Wamy&%Xh?I9tmyO-Fw0rt}wS(PQf7)c@f3LM2&S0H zwncU$+KV<~FnGXDVIqf+zr^*?-v?mE0E3M%8DjyJ68 zHp#XKvYp2T#IRq+sNBmtRDL&YEO)Lm^*)8=Ou6os7UHnR8mHBG|mA`e9&)Z|DcPZBTUf+_uppF_Xd<%z5^RhonNVA76Yo z*i?4=y5Br`U*)A8=S_xzdSjrvmv78WRi%aA8%)6W2_EXDA=rc>oZG3>3PRqOq)qWJ zSmll#XD-JQXvDA_X+Mgc6l{0-*;xWkzmH9_Y%kE7{O%LBySI-1we>)qB!j8R-^FF_ z3}i|lUG@C!B?5+9Ex zhlNo4%;KaA>o*GVIvGvBvxJMowT2CaI|z%pCl4l&qTMWQGfaCc3Gf`&m8hwwECu7H z8CA{5oNqzRTJlF>(co&)7_*;I$j`b{msa2@C9{Y4zC_j0d*iGUY7VlU?f6Cq&(uVaYJA?LaFCQ`&2d)J_%++)cG7pj{h+V$h$Nj+>@uz*mYoYN$ zD2l=G^5Og+_6?%!Y0mwr8AP!Et5T!KyboV@eoYjd5LoQW%jT+WJ1`z)IT)Fx!`+GU zj7j%)<`{azp}TaGy&&v9*&&ztxqsWKc1toThj^cjMAZEhGV8{7-0emsoy&JVstG*l zLW;b)_AEE~=fbeVxpkv&&*Y$~UTp8AUj}8_O5++WM{F9?jzyUzZJYTUcjfaz`ooQukWoB*cRaV0}4xo#)gU$Ci>cjV-EfteIg_r(XiqVv&n!3zzH7^=6M|(LRxVeEq7$Z7tFaQag=!I|0q}u?6mT|q zJcucNV)z3Y=~VZtQ^jUwsvq9R%@Enb_B?0!q|-)pwyTHnm51yeei(lu)S^$7d_Ec_ zCGustZfoT$MOD-$)JAbwYbBTt@sPXwi8j= zpHeiapVekvmZbUF3gRT>Q=GHtw$BGgTrissrxa!95*bH$Y=Sa%;fv-J{fiFtgVd(x zkkCL&$bLJ>;KAu7GAQ`pl>N^}nHxUfus}d@6&M(`sOU!jurHO-1-y`iFBXEO4mgeo zP0Y+LPc%5E-k8&bn-mUz|4R&iOmCWcb~;yu*Sp;ATljKU3S|S7=A2sJ!+V^(j;ffl z2vwPsdxx4H0t_I!mnVF0f&~^n7y2mYcqB3T4727vZs!?VzJI~~5}7Hcbi3YAcjuAa zx0I%!`TB3I2>wW7cGwP!N7pjg%hjX^l^U;>S^FA!z&TA3Yty8%%0YIj_$r7)+$`Q# zel6qtbz$1Ixxh}N$tUwqpSWV}zSDP;ZitOq5Yr31NI4?TqDi$E+UF-1hUZK@$({d9 zxl? zIYe1;lEItuUsGSvFvco#-}esOh<<>*mI+PO&26M`_WN=>NrrTUsn`G%bZg-sKAi1u zDQ|6u7ni8j|9#fkt%IwPFidkgArj8%1Ae`|<#h4ASuY0!X&3=nq}z+Ut)S^Ziv+IquWbL*gE?m@CA z{l;Ps?QmiTR+iXQ4B;e+Rl$VqVk!%@3KO+PhdCO?dKqV`UbR#65?&Fem$Y~!E&s7W zpHbPlfbP+UQ#(I|W_{6N;h$Tx<@@w*TpBW8{vu$U+rQ3L<9yZa+qfI)5f_)|(5dBK za~Ga$^*gy*N=-4!FHm-1;BfL++ZW5mAdz2L&}R#cyXiTq@4N>Jb>D2HNo4~KsRMFqSj1312-Na z;yJ(ZcKz~jd@t>Cm;cKM<74x0t`d4O+>Mk)RZF8hgT#Cm$R+P=62kbZB-byqQpZY0 zVy1Dbo|8Jc0vs+{*tJ%L+N^O4CT7`QFObuNGFt5<^x1um0yY9lex?r-m=bU0rCdwg z?R_sQT;R&XPOXz#)mKt7>~mv>5pO%Yy@xh>}x%?aLHYoOj_jm_GbkpGa>A)Qimi7OC2RstYfS8FcN$;*fTv@=$&P&RMEjZJzS zy_MyBWgtJQ)?DbwuJCb(3BedAv`r<3(YX>FI?BKJA{EGW7q^Ky9^RW;pLumQ>YN@6 z;|9K#O-`af7zjt5nV4wxVxDvG1BRx)8Q%hiF{}k&dq=vt98UpX5X$015_c64zL=#) zJwANTPNmc~ZFRkm<#$nGHb0q55w9L`H|p8a6Z^vs>xn{Lk$@j-4&9=(1Jcr67Ffx> zEPIbK_}s7O>u3c#%`os!&``F_Q}sySf|>CkCcTVfnAT{W3-KF64Uom#OYt5-tEi^O z_vmbF<6~Zn3Wv#X9j%vj9wDo|6e5#i=&HpTMw(s4;8_)CKd301Ul@k7|x=#2)taW z|G24fa6aJg-Kn}rznKd^s{i3BUC8;Z-NcgPw1z5jaz0<|hCX?$Z{j|2e)gBlm4$7y zYQ$7))38qv72+>w^Z9Rs5-N)uBW2JX5TGdQx`(j;p7u+{F?x_V@i>j+#BAO2TENLF z>$(NhoDZh7nlp}RlukWTS3+2D4jnBY_61@7gpc@)W+#l69$rZG&SV&05s+RPqyi(u zqO?=lW|O>kPX$E%7J_e}hh5pXIVG9?Ou4PM``5n@nq_Z&#wRS z9=pVY+d7cIg5EclHg zqjBVO1yPf6L^KhVMU~!QR4vq&;3^Rd`!j2miCX#2RWo*5-@Y0q+W&5O`>BDAh^NzH z5KoVs;d8ewoAsf2_2P5Zj`>x%dQsfm+S-KO4>9ZmriFgcwKd(Tpro=!wH2*!$i#Nv z@t{cgJ5J9c5sdcjSlVo#eQ1bBNS2Lp8kn7J>BEBO$36Spk;#r>S`XsxE?5Rr#Hu8N*2&3Uoc<;e`fSF9cb67y^ z1L$g^Yigptr|AeNVQBdq+y2QlFgUW66emu9HFzxulW->l{i&{#%kJEP+;+@1@iL!3 z=mQtEK|t3xo-64vEgSg1K7f&;zUWWXSqSEc07og;&s_q>bilP5?yl4Q<)>3BM7OCO(U#-IO#_nhnaK4c|M>Qra3GPUplQ#A!(o zJX$en_trRL-G2sT-fZ0txs^eQyqc8cFrz z(}>`UC0%bmb>`M{mDgs?Q*vrQ5BjF|lk%o4GC23$eJj^msCu>)WW}Q38nmNY%U)X*r;mN-+RF@ zpkMbIwwwBYJe^fQThY3$akt{`#jSYJ;_k(@Efgqj#ofKQyB96)?(R@51b0G!0wILU z-sjx&lJ{h0t~u8D$M~icbaIlA62dTbHj&0K&6=jBr0VFz#9m@nb%{CobY6tlqYAxGQ*h~9v)#^7~uU%?*8N~$2_!`7frsS zqVC(0i@(X%->aOkB=SVa9j5SeFC(3TYE?$rs;x9qsNfmM?6+6*hU;vlfrou$8 z=9r-H>hoFXe$|4$!ONJYg(?L3M%&}4!I?3aAn+S_!iCJsS|l-SG)k}s&)UJ!icf-0 z@y{>C$MY~{=3PM%OBhmb5-~ysL93A@&+IzEzhQ4)O^L_#2h8yQ_(N~1@4r)=xA%fq zLoLg!c*yVFC>tK{TyMEsbnh?G3SqOyHnyzhdp&EK{Pz@71)tMpefb4It_HfqZ+e4~ zc#?@yh(qPMCvzcR)k~OeKZp8P9u%PNx#H#di~0C+$4U$C(prmpfx9`I;2r&<(?@ra z&+MCHs4-tF432Jb@H^A!ZZ-hK9WFjvz=oak~91A|7_{o z+iVsqmUtdi_5yAIB_i#duJZr4i2zT1`ZXOKu%jm`9%t(GzxiUP58n9kM7b9AOukS< z`7NI@zUwK!i!1%W#;wn^dgjcpzl%R+d>G)vcp?LYiG^#@zQAVKJ;5BPo}-gL`pP4c zV82>3+RC*)Dh^dMn~F0aH*|qZpBsRGR6}o_7daokmh-jjifNPHBq*F_v_zcxZ$+zL zbD&l-yo-3Er8zkM{TM{OL)qN|SR8xCo`9ZfgvfbaaP=Mzc@L*5Jm(k317T>6*!EdI zgdB%JD5ZVSIBEWF?Uvv0Od$LDxI&LysT?66dq-sW6U%p|c5eDX%X=v!md^j^41I1lIL7GM2m= z&t`Y}!Gz|Y8yp$$9g?g(1-{{fEqfCPxVvP6b}*2ad^zqPR7Z4vF?W^t-})qecRlS6 zhs#@Y*b*>kr}R^S#z%+TKG`WkPd}R##qB)JD$k)sb&=BXx{mP7!a}JX}cmI*f_xBJo5Njl;3gmPgKum$X@u@hnkmn?Y=! z4CJ%|{PGw7b5H*`Na1Ay5UgKP8-lx=b#v%KgzjTDe&e9f)xy#2$(S0-fAy6_(|6Lz@5dBkftMVMg<*V^K$^z06$y5ke%nb-+M@Z%pw|v3vQ^2&9-)sdbHmG zSG(M9wE{<8L-K^m*BevB>!OAJsXXW~O9X&3_?zXn+iLegSYncgy8tj&&CG-vQ!pUp zt1yqZafce*9xr`01Cu$9;1~4WeRPaN5E7y4plO#C8zH8AJ5g2nWm8DGZ3NHU8}Sg*F@GZe-rP{!p2X65DoF zP1Pa`$fZ3w6hqz(=03^PYbfhG+A7rN!F{~cX>8=gY)SR44DqR(n)sg&{dQGap=<2W z5%n}D=Z5r9#IFbm>B_m340d?~bX6_~>krO(JE;q@zM@%hi0AUu1EUy6%*_wr6bqW8 zD3`~&LQa)Lwj>`CvQ)Lezg(z&V!&s>^>zK?qYW9BbSWuBYSlQv`)hQ~N)p_DIMOJe zanuWAvWBG$z?BM(kO4;R@4~lz1MV zREVNJai6FZf-{CM2O4)7ZV7)JL%$?GlUSb1_CXaM_xw|*0qDkk?DD}ssuRr`NXqwv zW~ijkEb7ML1_9^(SXnVTprfvTcgg#QSWlribuZt|=Hd$rXq?9(ci@!@=Rap{LBW4M z0c`{?x0sW!dC8N_gop3}zm5rxJ6Z!c96(?iUopd~dll;vUH7D#v&HZo6`Jnpn&5}; zMqRv9JNg6IxW6v{Jn)LBAp0OXCC0uL%dCL4&40?AWImYYk@`9+hVr>McDYu4i6I=j zQ2%w0t@M(wg7pL1Q>Nq?@7CC#-FxVir|^WI)@HZwu0Gc)(|# z`k`4p!TfWQNIXL(kRC<5{FY<^#cpY8+qk_i>QD4XIdN^owRX-~qnP-U0efh~3!Kt<1QbM2$W{mb z^FXZs{4>&6tfYrBv3Ixk?h(A|%PF&|(ta7H5<)RrhLzcmsMWVCItf3+yAzc2E;kBw z8(u%XzDdv66kAgH_QV>u;MmF$cP+75i$cot?dY=Zf1OzSUqaM1G!Z)fj5+!$4dotw zrE)Bm0NvT1=8PFmE%9?8B2++O!|LP_u218p=U{&k&P*b;_IcmV3zx zX|m(v1NY1`Nud-(&T~gHU>hG~f*p=wnT|WKB)gyYehj{0dUGRe&?S2D=ij8&+Tpv? z2<0z?1t;YRvTO3%ruDToux^`UW^U}$8*-%|f7RqW>bIDJ<4$2KSEOxF$E>x{RT4|-b~pX{e2gRg4lRUUG7_@jK^2}QZ_u-iv!?yU;1NVwCd zsMCa9m0fW_;0DgjkjF_Ai7UMEFv%`^Kb|*T0Cb9Q+_5Y4e`yLym5ThU2 zKD-)3($?~cyxBS_RNx|UzgOB^OF|YPLDkIe8f*bB9={?K+>a|waZ{j+hCW=VddaF= zsS0WFFGT(j74MpP*B>UWpWA1$9);QzHeL~;1uzQjx_(k%$os0Ow3k-}->&BcZuD$mO9$O2C zX_+{S+oLm)#)fA;BLHr$Hl1FUfgkbr+SL|>xQvl;M%jmW+WZkXHuC$I7Ql8!=6w~2 z{`yn=8MpJ^wwglw8X>K8Jllx>SU8X2rwa}59w-54iC(gOeDPlJ(`|^sw!dzsoS%9T za4aUQDSfh~s5ZFDO}%8>x#nIs-uQR_o4Cn)6?$Wh00VEKKY5>IjJz#Q`O*Ms@PB{B zzy7+p@C^}KvJ|QN&6%=d9yo*BU3PUwQ?qPml}U+pJQ0ICvyjZ;V60o&SDMO1t%LU( zN&~gn>q#HCo@2+YKnbi6cSi|iW|9;g%V=neU1S6^fz4axvfq=PE0)Uq>0M&YD;19L zQ7v8HIhwy5Pz}|Im%mz1ZN1LL+SBSac*;$OxAD|7>LeOmf;8ki<_YABV=;I>GdtF{ zp#;95aR-(WSTvcd;7rA#bV{NDCb>UYG4SYc=`<^C($v=h6+%-s8cga({|~UF!`bNmYtbFvUsni1Ztu=nj-Q1YMkp$H4WKV9Oe)GeKNq@ z7PEj)@6SWYQp7F^bR5w=@k&3`&Vb08GoT-DZ;ANQ;`-hxC1vto$M5rx?46!F z8#x!SY4wCY*S9*KMfl<=)qBut=Ye{hnmg%yVXnF%)u}RlZgX!ehcVXeV+}>>pT((z z^hifsrq`nzD$Yv{MVT?7DH_52$+>dUpD9!Ue;7%uvW~U=#24$`)RUy6odtyHR@t*4 z)iLi=RggFW53T;x*#FQRNlsHSaCU|%`}0u=DRC@$VVPVe*Xba)kRCa2+B*F#uk(6jEb}6 zR6%7enS&dFj1UU}HO5vY4MA92LNSh-2JvM&@#R31+M=o1Y~lpw)8CjM-UJ)=1lnY! z{OT@~fhQWvz}|24YLDfIH?FJ%A{0Hp%6gZp`mmY?=38QI8i7H`GK1FA6nLoJZ>t4= zGMb;FF?Jn9@D`k~IJ(;kNI=962?+ANBiN^urnZq%W%-&(%|)FIR`VvX?WR?9CK9oR zk3x1&v`d|Hu%e6d!fW^=gqY9EZE*?J`11e7{j0#Eq+3^q#NgZyfkBz$?SH}IJ^xU* z+91@cRvj}bPv}&%Wqqw!;@zD%>Np}4rIZ}#)@b><=~nej2zt;{?$jxk22`D;fX3dA zq88?401;Q9K=cpCd0c!d$Pl%vUz=4^oDtdf-DGq-N`_ z01bW#nBJt!ZUhpJPzoSK;Y;JOr*udvv1%F8FO#iSA10=^?vWbx^=a3VWf2)0z;{n& zMX?Q}M0;!|g*?p*;-MmKap>S~Th&vh8X8m$Ya6_TgR7=TW8SBCvn_3~HUPid{xg8| zPf6QL6En0XCS1bAYI zSQ??>7M#*lNXn}2ERo0(sdS@=)PjOIAkWm;-aWs{>#^pVSfGL_M=7t#8~!Aj30}bE zl{O)q8L59%_|xAl$HYK1ukktmVgJe-At51l_|*lMAt6b`2m7RmUx*N9krQx8Is-hp zEh$a`$>o=UEM$W#Pc#cvp%VgPy-#akQ~1hCP6md5a!(7On!B{sz<)@v|e+plg5MjM$kCE6fs3*; zJoqkLT1ZR_Bs-V#M%1M7zta->OG{0VlRhAg$i#;wk*Ug16aqYso*39dR)rf6g>EEVcbP!x%!9a?-+C|mbr{2Z+B-OnBrOs) z=DZgE!7|0TzBV5(@x_sIadXQABVWIp-qJG@j5MDeJ2j|`bgp$ir+td%pM$qxB6g44+BB#+ud#d>jeI1JpsYJx3Ajr>=f*1nu0)t{P|fsEariS z>7m*D^KoY>Gq*q=cct?@^6ot4G&Pna$dqT{kka6k^%J>x&B0KSRtJw5_^T;}w~W8}#2f@WhO~e$?uQ3S zLmE4cAfs&Ou-q*G>X0voVeIi&5q6fo3NNSf$Rcqzx&iQ~FoZqyo^*R;I(=UT;g>_H z{sO}4I0U9(Y1=Cpc-j-?$v12Z|1W;P!4>_UFj7s?7~h`c6QjgOJYp5G*UW$VVx|6U zfb)m#W+<*LcL<6k=!_O}T2b&_GS~+m;q;~^CG8gJr7j8k zZ{PvYq^-iBkTjgJVjuOIDqnse8S}fk;sAw!=CNDKhoS#Wz5a__x=zV^<&K;Tspznw zVPP%f=!0*Y;AC~IUY3A@hDt;^4O>I{&It#mYRH$prPWg+zU8ta9Hv|^4l7Ic!jSS+ z$G3hd-2b)wIlf&@6j9=zX+Y(z>l8Kqh#aTL@X~v-G9U??CS?=7VW_=0aI?~T3y>WH zoO5&0oI(fDky;{dd^73V^TY5al)7g36aKXS6J31tX5b8YC$Avp2f&U(TT3&@U%h0oK%wIzo@27)vC2gswHXa=0jV-m%Uv1oR@ z)tDt|X|dM?YWI=@%IHD5?F6to7Y1pQ`-@UUC=B z;upPw_LmN{8p{Cb$mb|bcXOZETkF8xyg6Jc5bEoviDoyo$;V*vY`@m%E^fCnKl1LO zE?$9O&^{5g&!NWjo2LxHYrG%J@ZJ%f+8&a|rcS9x%Ykq@g$yNpHwTAvZzUAj+q&eDFb-ry)pJo2TbI*Na#yse{Ey!= zppniCa5auT1qo9LdpNHRBr#jIE`FWAOLqwk{$lU`E%c}NS~H#|Ptr$HzC+efJ`|_$ zNK_~4^|z8RD;Bxapf7ZNRpHFbF)sJv`Hg zQ4jXeaICvvwe`P~r;7%@IW4)9?^0s}24vBowBjd0$kKH*JjI-~nF@-7ch;GOR0tcQ7Ty}P){|2E#aWf4P5aJk~V$(F9?H-3D zKJQ?Jd%h%a>NWTAJ-Lb9;R?Om{gD#s9>lnJ0-D&Xwfv}$i1TMyR4ntcr6+R&z<_Iw zQ-^%eANfN2C=-|qH9y-cYb5s~DjjcpkGqx)`mOX5c~>9{09&kB(U-YYk~ZRJpU%@9 z-1uaM?yp8PrH_kbIF$MeRY%Y1ONdzh?c%QReON__-~Sf!7XyB-v`oc*BB-%ycvOKx z20rweO7C6!nbh=pX3dnv02U?G*3iBzx;wRdD~RJ$bRtV)jav5_ut+pvo4X)tbq95I zmso;+irg68J9$4kwAQ5rRMliqkg_@^N35j&%xdV_SG%}el?+p3pmHX64<(Gw=ht^io`*px}3PCbRplM#H81r@Zg$DR*NqFk#8V$#1 zD3AvBC1LW$VcEU+TBv4!yNi2sAM4tff7nXiA>o9>ClQ<#lp@cgaA$uL&(wA%MG-ud z_bTbYL;t_DIlFbgEpC=qhPV2kQyjjr)b5hz-|7`x$*X!=<&q)xlA+r5sR@eSVqE~nU?#05gr@h>*iuFg32UGV0I2Bs2j7X{eh{J7tu-*Jnw5H{wVC0*y=q7O@ z1qy1k{+y1mL<`vLk|hSFf^C&)X|~UkhO$4>9J4dStGpzyv3s_?e}^K{_)Lw=iTZHy zXr~y`lWuCpkuu_H5VjjIMVQxJc0T`y&gjd%EwmBI>TCh5ze6~SI3eTtK$;HwIu}2h zvQkeVt=RsK-BZBgc{klHwcREp54D8BnCHVnNq$GX4nO)W-w<$Lvy}u3uUOETDxg@~ zOH+^kuL8liXYXyEV822N!7ZUlaTntLhtzJo0s_`y#*=##K}NJ7 zCTX{Kpnwcv+83Y@zi4$Z04Mh8@l*$U6E~Xg^FUqr7H`F3RWJD1r8t}9&H9(HL+fet zk~a`fq+fnTt24WY>gnG9?FUbo`INjO4OzV3^Ou^WV7KFv9i@hiF-p#+mp@%jsfWr* zhjltEX>7)4)avm=dD%xD_Ph=a8hqb;N%I7ad!Ivty_}eGMHc*TDQz^4&g7$P0?W#ZUW2Jj7xW@8@sAviAzTi`XDIV%iDkXH_&O4wEVRxNe~qEo3oYpi1^$90Om z)qLBqUH(VzJe*C=K&$gmbI;lV8gR+Lbz8F&Iz`0aoT>psZE20~?tg0Z`2}Pn?{nQW z6BEbW_=9Xf`ICtu;;e#Rt>TPdi9bjRI~vly&|aeI=7XR}y!fP#q9_je!V**l7#~4} zG-~5|y#XZ4`)4c!?=>vPMF-*4awitQb19q?;B$axGCttP{8F%&zG){rv}(_z9dK@a zOk9=zB2Au%_);#s%yTvr55dIBrV(xpz%!?L$f%F)LzY$=%D5J_rc}x;cpkm~B4MQq zh@rSoBH>c7{YZWJUAUuG^_Haolx7+zR73*e$!E|=i4@vzLw&r=~FI2p52-^_;=(zPv-Tu9K{R8W)g%_p)3rG`o7oI={aoa8)!d z42aLTO8avCq2c@R4MaV)5Zyr8=E26{%j)gTA(qTY2YCY~D(p;+4wr{Yef-B}5TY?Mwuc{fxjeKdsV8jbQD zlNoFq8*;o4uRz-3xY)5L&Z*dGOI{K~i)3Bh3UqZ8Q; zxD~!}C~p?)k8Pg-WLyG~D0f6S5eG5E2)|_Il;&$FLBo`t$)==rcEb7amB;ZlzTge>vIok zy{jbWo2hn(Ad}-#*4}V#rImHyJjh!XZ2F3NdK~$D-){)pjyn3X>Dj>wO!w)8QcwN< zA?B*42xt0YM?PyudLV9)q{&C96UARYsxuduA)G8>;nIhPkRy({Fj(B!KQf2xY- zCk=EzSwVA)8hAv+D`i(=wjHz`9F2Jri5e*z+nVyHWkZp+Fu0e)2@-u=8%VLAT8C|es6Bc#sH=byYceJpsS0Pl^KUG zkD5F6(8>B5o8d5uo5A&`nxiPmcH0hX#)a^oe(z)l z5_b4TfqJCoQ2)uM?GNVpKrK_Ackc#%Hah?=}gRv{&RaXDQR1^yx-k@Ay+JxMVU z?@-Ia*@qA|ZMw5+qcBEe*B_v6Ol-`-d^BQjdq*~9%Oj97ueYrgp4q2jp+2x1u{z@Vr)5) z{TF3Lzuv6YCI;0qf7%wDw0~nTImUfvH2^QQWWgKE(?5u&;YTg+v~nQQE3;!T`~`sw zU4sSFSpft=Uk*G*=f>z4$4p#aMe;kL!F0@wBGW5f65FEoAG7=|^_(!B`}* z8xoH8BA>HM@At_9!Ja(w=ZAP&IGU|Bz-bQ>)poIIQ0PtV z{WSl_4`#xWOGuI>lx5bA=F1g$zu-{YumNPa5Gp`FcMy&6zDRdJl0jAiJ?!D-f03VW z6PuqGPyhuv{YY9o&dz*4d}H=o9U^kc`3n@tt4h7>P6lQ`*bQEcmSMclbL3&cs0awv zClI3Dl{LDSmD<(yJDTCRA{}z~t}9v(R%p=R72pZVoJdsg*l&e6pjuBVCUAgHzKNld`+xq#`WiglwST z`s>1Dc>ZUGZ^%4Nu4gj46Bl4@s%>q9YNyhak+kjPU-V^*LNPlxR2Zc^gIk@u<7r#A z*LOW>3Rbo1?vw8LI_``gXb!%mCrrD*Aw9F-d&9)FA+i*4#*p~?y|dA=n<<3E_jOb^ zs>cty^3zyye30+yY+huWr(YMM>kI0HwuPY21K<)EZOjaO)~$=tECrgl1Mf!mx;OYX zT`eM1dQT}~iH=j_A57F@DF`Y-rIEnMf!;R6zNz?)p#BjWkbLa-4(f=1#^lay-`vTc z_e-;17{R`BZa+Jmcr=MSX9*NWgDy_3UPVy#xa%@~zfd~cK-b&s^ci)D5=rw4Ga@UT zt!nj#$kc0N7a}gMT@W4lfo=1lY)B<~KfsEV-iwrGiyEM@%Sp`WPtncu7UBH=mcy$p z?D(gvDML8Fb_i>ojx1fDe={W{3}%ow_!ix&1zIWo`#M+!pOx|;6tjTuBzKF7aAT(W z?+17WgBQ(!D>jFsS;EL;y|wD*hisr`h42$igJUi|CUSXb_=AP^ZcF{dIs4x{Miq8p z{TnUPj}ZCJzYf@}xL2khiyR)p@1piF6-3K;6E(j7m_yUQnpMFIksL-PclgAEE%q|T z9jzM@vUqycf1%#FXU!2gk|)73MKcq(yH@0jtTT(X!xwFCW?lcK)WpbSllGOWjc{m8 z4l%#Y@(dHVc)>#1TYoU3z(k8Wd^%-FQFDI+Iha|2i{un1Ql_)LeO#+Yz48o6R5HuO zUksivE{O;A9HO`mdW<`B&rhuLPuj&-yE4&OhE{vc7LYbL6L4wk8cgLs8 zFExU*dQj%(PK4dL*fSsr1jV_$e{2676`nrv8?a<3*U+kahUmsFSuk5zdGXw5n7%+` zJx(V-HwT!WoE#IGeGzE%Prb~_P+++|=jQevfhi+hObzgj(D_@V%aT(y+h}sF^7va< zmt&`5Q)A_dfWCfe6+3)$#rZI0|I@t*Qe$)ok{6ql?po4wjL(dOdY3mPd zFL#}^VCJwxbH~s=5(votsf)LGf_ToR2`LzvtU0mI#Yi=P`hkPc*`M4 zGanbz-OBy_{jdW$dPc5%<+VQzA~6xy&8(MnPZFru|6uA5bOJr2-#h`L6*_p0lu@TX z9|@!5r1^;YjQ1xu2!`xyuvH63@unb$(h@J0%%cm{bP0du>I>7=l_Yt zz7uHub+4J>8=e|w-N9yPww!0sv24zgyIPSaHFn*@A1QNdzn4?~EMufR_59H#A+oo6 zPZ1Tl#Rr5{PxsI6OhSz%&AIWHYt|cD>d^M*?5+{Ptyy}%ilv%7x5M7^hf64t7b68# zl|;WM;Fef)qb*uS)^IEsw#eC*c1Gm@NsOww>SKICKAyFFZq;V|=vd0{BYx?CMgX64 z@u}e72N4kShUH|;UVp8z=WO}UagAuEunfsd_xR$*N$ZzL@yvgmzVDN9?pVXhk&x-< zh2N|0_@aN+rC+s{7?=#$EMQHs;^T#7(z$zcI63P@4AP*AW>tUt+&5~LMWM&Yp|Klu zh|6W}>dUtYHxNUwp1Qx=lP1>x?H3V=SI~P*t3lZ-X0O>XM2S9z#FaG^9~?+RbSN@P z|6oe-YeeI+4?5`wEu(BgHA?EAsbv8EzQJk)T#oZ`Nj&vVC0vKBz6uKj6X2(PEoQK* zX=d{yLzwS?{J#OrptNJuqn`bA~Pplzq(cWx$RJ(jnLiRm<9r&zkMgE#fx1(LF^OEVRm z42Z_=pD^A`?TucvW!8*CR0>m5R7N&^#fgip`HQMyR?VofF4#?@0qn44wV_6K>dOow z#xVjoYZJjx$@+@kcrB;At*1>vtX2wn5(o8z@njEM6b z{TBG3HV<5jJ{FhA9J^jx=KJ^&xff0z}{a^`WewMDiOU~;&kw|%`#w;Qw*@`{SR3Bg>IQOitI(Wxtvb!H`T6F);7&6UMdVN!8? ziBLOrYy5Bpv3T)iab^!N>+xARxp=y@c0C5qPTSQV39@#RgwJ_g^mMmxPD;#DfxoIh z&x&3zbLCEnq`SDX-8~%_NTykHo252;UVqMB^fBx9D^htl0%W+pZsQ&YWNwz<)tFQ_ z*EUT4*#$o}S!+LafkRfy8f?1U$c9{j3;Okr7&s#~kd^z`#kn$bqARk*NxPW+kk?W% ze+J2y(_=6&@_I(No#pW{R`NA=G4SCUz9_qH`$uvebR=$#&W4`{3$$d%u;BT+e;nw@BjFfl=Kmr7GXW>gUJN?K&PQ zt>O8-o9KtqC;^`tP4{gfC~i>eDD0_E)D6Ju_i!wsW3u{G_%C|zbv94546D{0$a1gT zSmc`Y#nJIhIOiBrFz4+_@>aGKHkaUYr`R$zPN zdQ}oTRdu5_GNbmi60is+{Eoe$kT%L*%a)&N-hxvWE>fqvAtl=4=)ioCkwdmB8s1um z`SN3P($B%I75r9rYqHkByawbvb5qz)ie|W(pL&&gu=bq0*WM`ic^>;^yuZGkEYeAH zNKLq&@y~In(IW5ZuDsJ4gC9Rn6KuR68X4h@u%)=(?$9|Tr69q$RP`_sN#2s^dv#ZT ztv|+p?du4H6#!meBp)RU#GZf}-ht&4L&DWap0>mv$s?gQ{U4cs)+vo@8@`lZ|0LBE zg^p3mzUTJkt({GSUeDT1ppc}_|BHR!bQO~vQLx()qfxp>>t!0F=S_dGRbaZb$013t ze)g@6lX1-%4%gBn-sL)NKjW8@_g!+Wq+!*R=$T@5)5t>hsd`m2!P`}n>W@<2aVwt2(#E~}nl%0q$J*DepTqGVP+yLmBw$ylG=BS@T-?{t)vXw( zR4F1XE)J{;UB9!idFs)vFcXX-uxn{$S?@urT)kqs9x+l|Z-N}zyXeY1GUuw1vv8iH z@JtRhI4imiJG-F7RzkX*WEH?vo5>$I1Fmwp_399Vtb&c%~zoSS@rsIQooJ$5XSl5i|G3+spXMiZ=0Z)Bsjbm0RqH!2hoDB<7;oSkz6N?FP z|9sj>*c^3i&Tf8sd+Wm>+^;{BU>8%|hk)m+`iY0$=ju+FqHisl0^29G)h|_O2)9Un zVuXmYS#gO?aJ-oLD;B>fy5&H;`{D0m6m^zHZY<11LLn5R(cwJWINxt|O< zP~w{plve|Ec*@9RwABK|xF)~Q{}?Co)rFf><*B`(H^}6j{7ddlBGOSQz4nJqoDHO+ z^SNt>uzbWZfmE$1{lF%q&RuygJ=xG0&TOGKzx+`CJ*jd`u{eo8kDSbAp}*@j>?NcN zb03){Q+Itv#qc{ND@M^hGnSg%CkaXn$D@woQd6YvA5oekYMZM_8PaVThxH(HvZn9h zmta@25>=N)AJ}L;^o+xOhts+Iw2{Rqg*=SuPI5FoW+>qFHL0XLF0P7d3+9U0{L$+}>o>$+FxtefL8|GP+KOd{LdT)rgxrPoJxuIuU3=DF89 z=0LqvTA~9=qBPbgDTw zXOPagzTc$37fo$I2DWO?g*dM(XkKn^HV(^$Zn?cQaSxw6+8a8q4yVrl!nqob3aHiY zcOCpN(HeQlBa;*;Nd05BS+6{QToA~5-SgmBbXx9}b5q@VV{jBQC8|6oWHrk<8vE5E z2g5((-S^)SM4;V2ES^g>CT1DEdcACu9pI9KuU?@*op|pJ`7$zHtd|fi#6nBB3 z*~@O|14h2YGc=YAm&6UQ#f@1hrB(`9H5!`{&V~DZdExrEy#dNf~+DXxd&T8nIh^6?x>Zi6%W2M1R8WlxW)nI@uHvyym!T$>pZ z7X9VA7qUMH4p>d|$dU21rh~^tDj!$NIpHGNHL~mgGjg+eB^!KJ;*imBX2NSO<>@1Q8q|&tqP8wPgQ;GVNF)vbzW-{kSn;qV>gitvHIhscc@)U@0RTZ zed&9}eLZdKy^(CwfMUtX3-8aY3zVoph3KDAPtpP`2zP4NZG0`!ZeXI!+9 zv@vM6)A#9*jM~Z*hh)>rG|Y*p2GJ~|%7Gu8kBUC(4PbfDSZU>2L?a`O@TJvI69{V_ z>|v{@vDoPzm9^ndw!#}Tuc;UDkKjH|GLfeKqh9k;oNeO8V11g!iNmR4WT77C&A@EtOWKzx>V=s~lIa+;HPO?i4?2H#b@ z>eUs%KAVX@+Y{HBO;6rWX|GC&XFSpV4c0jbQFUL31+{PSY2p(&UY7C6e`X7q=W301f6~t z5I%x=qVd@@MIPAqmZ=~ zO&6`(GdmtP#hdg4YAWwylOF!A3HWAAXyt3rZ3u zRw_p8I8~IM-Du%e7jMg_(py$XHY{2mQt4t16Dq$Pdzqv@P1sa><<(b{sD=NNbD5H} zsgFpPnW%_~^*O$K8ZjZ!L#)IvQ{MJ%+A|c-;KqQpz;Gq~`h0MYMS3%_O?lbJ9%#CC zEcBgP*!t?tX7by+9%3IFy*jwKW3>nNrw1&mM}KVqHXcs8SwIKYr5vdcs zCLxlUq?&ecw!&9d#zNoWHG)%4T69sIy562PEgb1mL!Mrksfz8HvT*dCOp%{*da2ss zGvcSBQ~O(0GKB=Wk8A(zvVY5(rb_75A6w3mFKY(rqW-=hrk;o@+09zK zB1_ogBqVj#R;r$?ATAn(1N|x2rKFy5u4va1PCnEkEwBZsjFhF{Tl|ZYXb-F})w%vQ zpl_(_noIO5dbq}T5-vE?VDQ}Tqsm<#Ggo|3@mU{#+G?kT7pJ_v&&$yE30%Cl=WL>9 zZGpw^FEXI1dsB)M`eVJb0aCGg{L8y=c(7l0l1)DN?xF9g)(HxGh0eh;0-3l#+gXr= zo@_Rq+g3hoVFMj24-u~>0-xy|L$lB5hq`g(cZRRd{?Vgy7)+wIpWFIPR3^&;>T+10 zy~|J45dU^!*L3W-*q#`lD`Z{uGy4D5;jJyMjlNn9v&D3-cUY@jk(f?SoxEuFJ<0xD z{;Q(NY7r+_^gim?av*&qgr##fD1DO48A;@KJ5q19Y&2dvE;fu;pC$QG#zT|w7)r3R zbk@H!)%WlKyS)y$TL3@;xw#gv#|?otgJ!%RR9)OIQcBIfd_%_6t2h!5hWl%sp+4TM znW5-oWJhoy}zlIO1$+_WeBD*oyk z5Fm(&(0O+j&gpMjv#85cEzH5|D^Z-)k{84Nd~T0q=!4uT=&S`UpUD2xT-Hq2uT}Dw zqcs=YpgcEdRbNR{J>MFF{UVD|$>@`gL2~~^Sw*stwHAQYt2|_UYvKBB`d@Cet1-na z?I8=H)Owf{sRYlg<(`L9&l-`KIne^cy}l#f>fsRHZ=K+Ko0tl8Gc|ZQm?2?vZ;~8c zsvI4=6;(zWfhx(!w_nw?k2|Q>D#oba%w~9reMB0|My#T31_qXw&Wj=B{*-p!jV$Rz z+*N1=x>{n*wiT-?-?(Ss3F6)d@gJ+dH6pzPj(tUZbC##dCk@HktaFLp&kXYWTD#?^ zRr}GkdKH!nT$i=(H5CNtIR|QWpXz#dzV4dchMalniSbANb{;@1=cx)o7@@`p^~w8l zaDRwZKu*(e@Y%Rz%HzHM^~%e$$44t&Jv)kW^!%pZjN<+fdp+fX98h3|mtTFoF0d!F z$C)OzwbEMknYdY#aI10nuAHS6!`gPU=I*4aRq0tejp-i53Prtbw1wsDzX>Xv+z4Kz zxeVCZ;*`DcyByR434gQH6W%Mr#8)+)--IMKPFnn`z;=#JRyNp~Fb49S#o-3jxn^n+ z;C(D*oNug0plCYy3Lc3y0szZ7UTSaM9c2E}7h+U$EvS1S$Fq50tWEvRjA}i-F7qbF zwPN+VM`+bW7eXy5$tmw-V0b7R=FRki4TQVBy==vO!0FaW@|yME}Dzi(Az**9}Kn+fN=L#Z;mw3 z=p0(!8)PRNs^{lffd)I)Q>p?D1S*5uYHfK?wZ2|69eAa`x_}bdGW;ev*fae^IR07g z;of-V2W|!(#x-Oe+?pY(eeW^aAy`Bf$q3B2NFPZq_Ng8slyfaHh!qUEn|#kep!{R+ zq1!8sLd$JTb4&I#A`I@UMQkX3N}GwzycbKx)%bpT0+BjLY?%kZ!C$!R=05BCC79^w zW*-3Cr15)1YDA&?_xs>@2ddetgk@4V9;!JBR8%ckizFLTq+ z^!Le3X+ICJM&9doUYrCGDnkXhW%wfQMLPOFnE0~M-uhvx^KxN0JIt0 zP;!6EW7&h{3`Tvw1NTXIVSb0ZM#ak*lv_dBgt*#>qy0iXC?23}IZ|$TtWC?dC)F#F z(%|XZV-KtpGo3b%KhrzY??xcA%t9a5X~!&0kTn&q(j2gr%}8cm{gQ85gk@eu(B?54 z6As5Z79b8~!JDSEbjWqTaxpTb+ywr{ht1GKdw^N-wX)xNZ}whZ-VNDO<7s+Y&I6DlBxo^Omzvedhm)u zYva-~wjPVHo^45dSp?Ty$O3(A>FKx+eWnCTnwJqvF0*;=3S(nk)Wvv%Qp~XJJ zXHTD&{eutYKmGRM2OpOCxpHpT%9~oRF4-*YJybf?GPK^ivl6P_wM+A~-Yt7Y z4@L3PZ48%Y&``nufo*xH#^~zJDqdPrVsu2V-mYUQU-uqrx%!KxvzHgkQhoKLUC$m) zc&ewVD$xq3D#698KV7u>_u4#ps`wn+YAKN~XK${0@QP7js)}jlhl+1qx~sUY+XzhI z*0!qRrJmN})l25-%yoJ4-MUQprg-x%N`Ikmbx)+?7go?D%TVka`ncSG3HRWeCW7Q_(Okn*|Lp6Fe24`-FFIo!a#;807maJ)S7%!@MBvb zN}HP8C(XD}*j)R4lJEZYZ+`n<{Pu7E*MD1=%FhTiQ$qT*D=(#`YqEh_5%ek&{;rmZoR^bM%pKlN zn$p0Vfi*ZcI|#WvY{pft*^owycN-^_st0`Yy{p!#enuJ%zG-7lH|cX;JR6{4FnDMf6GAGgg40Hf0E6 zJc!_Mm1FaOR^`4&*U=Qe^%ut3iv9XG>Y7Bx1uTtemRYphEZSIpw1-I8nyOQ%>b3IcwM;H3N9=Kj4uPsEoO%wP%=_EN?n zX1(nArTaoLP&`C>rq9csQ;|lGs&ELFIC?nD5K)AOX(FWnc$*qcQ1oJRA^;1WN%gWx zGuq%UQ4_f(xd~4oo+_kVNNVL(k3=)vqR^UJSmkZ)5@~$X4?7DSO{rUklh+Q36vCq! zz$)!Zi?4f$t5*(7{F1f%V#0p1rBB<^F#FcCJaq{%(mvzaY86+<+E^ImJp(!?1aWF$jO4aKm)p(#wBr$$#nfGVqN*i1DJGOnZ zwQ-m59-8uWai`X!W#~aPx?k;J-n?V+&b^SI&fZn^PU=$MJC}FMp+29_O0~8}m8{EI zF|PY~r+Sc4@t)d}^Hf*jK+(D`UaXt4H}_~>OB_^Jz2i=$%Qg>L4hWJ$WAEDj?aI&U;mX!7>@}?W^InxD!0*0uzn*Pytcq3HiAl%VqUjE{PZ@^ky4Ueg_9`B2l@VkO7y;VBd~;dv&R)>wSx$8fReUwYKh-|d zat`G{uez7=r5$+m;K74-a8*6n=A!fo4(3WWH%|te(yI24DvHaBfm{?q>^s#ox-3@r z^iE`u){nZ!R?92VPKezCr4BIs%JH0NqN?NsIO*^^2^0Qm9u$=bMtnq_qBSP zt7lu67FT}Z;L)I4(zG}}O_oNL;^D-BKZx}5zuhj;W{hZgti^Tb!PN0C zH>Fb_=_U(&U&*Ms2E@17D$zMNUSFd8EiIxFtuQ71=?!PVpI?|ru@q`}9%Z104uyaB zn^MK9bk=Fhq6(vxb;R0d{lJ%?+Vv&v-kBf%@P{oe+}`T_WD5nKD8>6OHGmMYG!`dU zVb7&mOaLfOzAEd+VPQc~X0eNC@4xrn`~Q~|<+5SRVQ&#RVen|yVhC})EZ%38jrT4< zje4DsTBU1+Vc3#nc9l=}R#C>oqLDz{f)Ty z2b<&tLKp}pJH0KLB2?*oIe`J6%+Ga? zjI;v@?!r=Ub?0Lh&X3q{lNZm6mT;hDQow5_+UmX6v9=xV%Yw0{U)ki?4c&`=vkukbK*BdoI(_Y?T+(vDlx*KLd4)_7Yll@WiA@t& zygAd9y3c^HGxUId49*TWtWjW{VO|PMJ#nF9vyw@be{%?2My+0C|ePL@f#&25c#&3jl+!WC2CYuT-ztZ$a3Y1IIbYWBk0npc&E zvO>XDSYRo7qXmK2{!lzt_$GGnPZe;b(W(CP-uoXkqeR8aWQy;y^erC_Ha1D42hb=R zCkzR#Z6)2bD1>c!Jma@9PfbCUgnxJG0VK_r@K{Qd8|CRW@?g(?IXF z{gYFgY-wgSIuv7=EzLdH@?C{XmnIga>CT<%O`J==YdfSR*{QO}V>=is zO;cOicvElzqg8H);Z+>vwm-4bnb`J`YM8lbt5)h#WGIO04ORs>O?oQt%kqnPrWhut zs?6vCPVYRpSI3R1D)Gr^4rvdEYP2Z^2T5gbVNr&$!bbPPPN^wHbsn$Y(BefD+hb`s z2GwIf<+p$7TQeN@N`Ju+ghROCWrb1?>b-z>Qx)T5-IohGfx-1?9@J{Ms<>0b!oiGC z+JATKV6LiH)|Ow;79YUz>iW8k10pcw)kBwxa*C}wxq7EHpVG*&)Gx~kw@GXn>}4~) zlzraw2N-I21sD!MOg3g>rHY0-cd93Mf=slC8b%Wb9I*A>Z-4mhfAJ6h;eS)kBf%a_ z+{A#pGBu74+7z67qN@w_`8R&!H;(E6QrR7jB7dHWm;Z5^tiD4}z-mW-!mKHNtvvH? zCZ3O=pN!sRQ793Ikq>%hJ1sT^+Y-x%e)T9nL($w4_-;igriV7Y24S8_`ywkWvY(wVAQ&cDS{p@ix8VJh*c%Uz$LP?`s`JgXuJqBILh z3w&&{iw8rr=h=HX>5Faj*AWf^REf8RXG6;L~xX2%8BA64lJyt zi3CDfl+{sYC@yxwC4`0wUj|1=Cu}6%4?soXWnl;Lo|D9$(XQX8PSIcsdsluo2IUWR zMrguQEiW|zdy%7)Yq|-ssXk)@Nf^XU*qZD_y*kjl#h3~BGS4DTf7SXsfvv)UWk_Oe zsE?UYVfl~1cv_*qo*Y^S?;|NMMTj-8Xv27yc@g-eD>Czon+<7?ttwNwV{!h+A&iZ3CLOc=hV_m+c%>pao)dI z56?))ycC(bg_|N=U!bry#93`KmQ2rB4$E0J%yb(J2}cyI?M$YqrMmQV1%rqQZO5fN z$*aAW*~dw;iUv)P6hRuOgZ-Xh&`eb(FN8gVx_1@)(iwncq1PnI(WOYIY|}UNsLf9G zuo|y?W?xHc_4wKmRA@gGuSmTjri=lpo{Xp`2xHG6NNgErpcI?hmCB_U)zDOg%$uc+ zCX6@R2ymHeKdE4skIT|)HZZZ0uR<}rsf#Y3%L%MnIA7CLV8!XxHozK)L!yNy`^H=g0vsZ7PtJ@w) z70Q<@FOJ14Hv2ZEbWPi~Fz443HEn#-G3(j07e(k*h2zGqj8QMqt5?tKvQfFIhpCuA zt~5|jO1)!>W4(@KDqfta?58Z(l+23e7oUG2_vZKKx=(LbqTZR6ouge5q5?#I-8nobqdq8OWE1I4WvAnx8b zL(^0gTlK(QVB8kl7jNe>yqc9fRkD;WFQ%y(LG)@0O?^{NCAD5}lW6tO;YDP@-t0X9(rhohzo2#FqSYw z_vQ3X^$wT4qjfJcj5oT^{?hh8qTb22ywpR0QoFuImn7?oRV|nR*w2XA{PnvU#w% zxGWLZQ>|wl)B~)im@`E{(>s8B9vi*5D-AS^tWNdoc+n`{s6iWY$cm4GWXX=H4CeKm)>PTPCqtB*H zhMmJ3Y&Ec3TY=D}vgZ0O*|5$Uu5esOf&e1qy_ia%IH`(*T1)1#%8-jYdo&pF>&3DO z*OC0@Z~oSIzxA#6|D}*%Kq@(5reSn>^0H5IzpFr!J1Ll1z`wm%nB4N$O0@OMA|&M= z0Nh>R+dzVQA5Zn6+7kblistbYrhU zC*Yc*NSoH1z?D#Nu4R^e5R4rX`0G3CBQ+!9nsLAq;Lby|H;XI^rZozO%=Co9LgezE z{O1Paf>$U5ckfi8M}-a*Ac~MRdjSqMsoxx~+j6ZYks1LOIPFk{99G0Ytoa~0MUDq) zcu8yjFXR8x;@mM*GQ^sCUwZ6Y-~1&N)#Y!zdq*Dr`nP7~^w|0Vhem{ymxf@}v z8Q1RhT=p&oo6))xl9-fZ?)1v_j!3EUT8dbbcGRraxCzmbgG`NA{^W5 z1GG;Cai#xqO@tn@lFbNacssVV@ID^PAyD^ipRx+9%UDxSkkorLRk4}O@TA@ZRcgv% z8nzVic*u7647?h+GN)dB0xw-MT;IF*j(q!<|3(|z%5S=;o~&tVr&Q~2J!GVM_>Lx! zroeE5c1^{DIhS`?_hMsZM^ON6?n$;6@73I1c)nD5&|=H-$7CK36;^HALG7Aa)^qjz zq`UId&%P|mq#h#k((Y5#WsG$XpYDHqRrhmU=-rpIP=4=z^Xe2O(&$fN(<>`f3A{9q zjC#j(iJg!>OGOntRt}ctc zG_PCjvwDz|;^QZO`ls@Z4?k#kB;F}Ybn6~WDaMgy*(0tismjw`TOM3xfQzZ_?X3F( ztCwoJnA)9?)w5hrPgS}rdq4|4*|N!$jMtaCUX_z=>-8%|88y!^_T^*Qr79?z?Yh8U z_b#@RdM__*S!^x``rzsiD0*r*(EXaabw!u69_^|oZNGYrl?U|z9fe;H4Jz==xPN8s ztV>aEO1iQ9d6it?EXjlciiyY*nIa{hoS*xB}^PUX-(EUCRI%Htvj;WSyTw_GcemN^)GUYCYr zZZkuG?t?X+toP$qyiX=?Y2Kgwg)6(Ihna4)fTlAL?2&zMHKM$wSXu2I1wJE%wgmtCY zEBNOeE`5Y=Oc2=H*+dczq}g|hrV%75>YaAq6htwF)J|~{tc6BLvn!O9OB_9n;4fT# zw45GW-n~1W1BhFdOStQC-=!U|To^$a3%}p|=DYu09TdiBOQy7~s9``JV8nAn>NE(I zv|zrr@-mlaN{7>KSMp`9lSxfGwYXj-U4+4u7EzF-)h(HOfu9u4v?0i|5ki{cajfu> zvV{FJr45!213wb+y_aHp7|PP1bRoElt|_OoD5Xccc0fL5R zxw!=wa2o8j?noJjcjRD8>o)1-Oj0U`J=nns5S;JY(j~U6!fa_Gb}K(0vuuy08$1%h z&x#Y#*Vq7&I$BR%r`V;_vz2y|x=hwj9}j(zTcJ;t--E(IzXG zTzHbEU)r8Qlw~}YT|0%$3(2lx;DTKLG}>A<4N6t+3guzHdM|q;)_S!{>hhlo=@hZ% zt@k|mwu~*{yW*uRhwDsjIcHlHVB<#F3!4`B(?rYVjX#PYuKTSnrY2a{1%$4`=(v5 zW8)4EB1>YP87mE^$KuMTZW*^37E`vvMrNV+ID2khJTIq)sxq&_s2aD*U4!c3IUb6# zRhBi*UYNsi7FsWJ+iR)g)Sb)f@vC>4-q@8cQaoaJ?U0$WRIn(TH|=gmUIGX~_`?tH z*LyE@&*ChkM}$a^2WSN5OQeTcQ+^qVRN>Pfo1FmIC7`wlfcd-kj@i!FC6zAF8tWmbjh zZaLv}O4YM?v?ZHmpP-#YTRg$qHoX(_&Sh)ADoJ0yd?pX>=>3z@=t5~vJ*{PVrY^xX zBbeUn_~EQ1E35}w{)zpGl9oAG;V<_|mb*N2^ITrusRo@(qjV^}^-7fM>Iqg4p(&uM zK$fMpNy_(f=+E5;#rX4F?<382vhA$6UQhMVoyo4yI9%IGoSbciQoZN#=Hfw|YNlSS4buLg?CsTq!Pjc&_ZRmpu?XeKXvadGeFi&sU#)bjNn zOc>$RST!A&tBCFz&0<-t8sh5JHP<9}RYRY)q3mtGn9N8tr$5+v6XnXAd3-Rs&4v>; z6qHkf^Km)-SC%_4aUi1hPxVsUox;X*x}4}phbQ6`?8OUO70ti)?O*zxS$_UUJocD! zSb8@XhA0pFBG3vlT&0=n-= zV@LFw2AuGa11MO=MBmW?EsI!VO1iac$z?bJT}GE$fUhD;a0{0iZSxFYZ1z3 ze`&|e<6bRHa5x%0k@8k1mBX?3Ube18ztM9C2P*YXP`+KHEy(s8QmLYH;F z+f)rYh9~sPWEOjU`^J0sCE4k-C7l z#cMr*7%Mm6#l60MDWIu($jPyI6q^8w{g?KBw07Z6%{nHf=CRQ<7t_?*VZ)2ue{kRK z>st=nS@v@(h>6;bw&%uME9H{0moOL9<#`x~O0H?Srl|H9E&nxKR3-e_;Nrcix|Cc; z(dRdMUBgYmrylU~$N%O}$^k9lTUAC>amqKkg!0|l%Y3hRyvlfMcR4OsLmZ3OSr0wI z-Fzw4WtG@N2&0YysLG4Nq{|HTKsQwYR1qjwjikC7rC!ys+>?pDq57xFK)JeUZu^&C zeqoBEUVo)t<;!xvW!=}73JvI?K3{zCv?>d;V*37v@7vv!Qa#PupL(#6DoNMonaZ{# z)|PgbrKPiyp`OTVQ!ceV&x^P2qA1k3ld@jrQO9yU9H+n`)f1((sLGluA}?RQD1EDn ztL`Pew7qymF|jeK9)47921R-})~h$3zo<%6D)&a#<;dkU-s_v@0mb~PhCLV~Zf=%w zOiU3y9G5$Qag|1uKWdNN91d*`EK5GkYp9X!Dv~+Rm$N5Q=|J&^pk=+Zek}^v+-7b6 zOT%GN9&Nv~D$|Q%w#@a(4hd@aoa%Tz<5boE>5lC;6={1fkxu(hmHFbmJ5(>RPBpr( zwivilHF{=@D>jK^&Mh<|xt$Ynu!G$S4;t>1%}0kDJCWMjeQnF9ak!NBSus@U(&5Vs z!2xk)95-Aphn1yn&Z#HDS01oQS&lbHyT{fJgR*P9V4TJ{Q};IKMhhC|xZnD_fA>H8 zrar4eX-Z`qkg#fyx2r+P)WX$nJ|MRvfmIzZ0Hj7US#aoysrN1|3mKNES>^!uQbFqS zQ39fsPFafJ$_#Vv1Wr?@L|%iB5-D}O#I@tkYzIdGRtQ6`ekglT953v0^Cn#7+>T;j znz#u2_+5mmI?3a&3ec%jzRnvoa`!_GI2qWxcq(PN0K4s_t9*I4oTgY_+tK&O%ru(q`ELy$aF#nd@(+T!mlUQ223UGqpZ3>D)yXkof=|WT?|C$Jm4i;b5T2WI z-^cs*iYq<0qO&Qvjb0{PMBn47840p10zHf($({U+`b=T+(F{f%29`GT7pGS&G9C0%ji3$G19>ElkKfrmTey!UBWQ681fc8H(X8&mnHir&&to2FAnnb z`OA{`VyY)re(RUMSv^_i?ZtHxckazf=j^?FIeP{5gjVcJE6UPEEgJ{#sA5(7yIwb; zCDzC*GXkHxc zAAP^89>_bj9YyiAH1ECtUJ=4^0F7x_?bOaMo<5ZiX3u8bM_H8*EL*)POCm4pl@)eq zPZ_uEii{h&15r;Ht$X6CVgUn1Sz>8RD=Wz+QZA0>6|KCWd-AYElMlj!%!d7Vng+|F z)#F=FWxr@kEP?-G5YPjRE~AMJIpSrb>LGaX6Cr+X}xL2kaGI)#bnD&?-V$6Dd`<}b&biJa%QKema+G;j(OU?dVtQc z^l7$hx$5epx(pRYD#k$>7m7#yPCK*<{8bfs+;e)Tct)WF7bB}3yrpp9F3V(I%5s`< zImAxdVNVLbUZ8pHy&}njG{h%PKMGAhOK;O5KO9nUxKCOi^i!fm z7B?>hY*{0Z^LW)fqjPLIEILczl14%%1Z>u|rLo!K6CX*e3aEK5lXsabG1^hb?Gjgi zun#};5?O3YR_~=Mn|Chm{)b+uN@=}7ZoyCLCU%n<7ZS^hcnK7)l?0ox&7@e%z}_^m zQ#B!mZwYnjWOS8T=$Z%#gx5Uaj~uPf0ABFn zpu`++UW(#ZHDTn?_I=o499_9JZ}oOA@N|MzUY41bINW)dm;P-19|RaB*57;Oz$>Yk zoDFg32ea_1n;S%=$=}dF9PQzwjGvY~w@5zDvN#V~BJHIh?rI>Dw50q|yl{ z{^h$+8w5yhdCO;SeQnA!4@xvVH9=$%G*Ll2{3S_GlldrK=j~<*>HC{kH2@cx2&>T) zH*^Iu!Je^V;iAD;@Ogo|TFvsV!j;i#5yIbnXR*eMEo5)JT&pby^x*oDlol@pz{%N8 z2)$_F6=UI)+CJLieX~15r5qFlC8{bnI8X)pqn7#p`yVVP%JNvBh3J*>jyc7bv*&aA-HduMao8>lClJ)J$3#nWkXg(@g@4`}r)WBIt2t#?o= zkKUi@N|h<{<`j>X?%7lv*8^OhH+sU7Ud{9Fd+(H`yGyy%AX*i>qMj6`zv( z)W+~~XXTCFTezHwP!+^$J3X~%UlqQT+A_x*^M)0r)(q9PteXZ$-D^4b+Hq?4U8(^f z+1!bF;+37;Dm$odnE+JQ?S`}@joucs0 zzYkRDnvDl#|8W*;=Y46$1gZOWFO9bN^i=gyD@?j1T9?Uw;~O8eF&ea{>EE0C^TPHY ztMQ^5j^N3wOM2Cyna$XwdV#`v_nuwvQI>5Q}(Z~?HZoL(ds%DMOJaFbUE3X3S~T-YCl7s!1XCd^H@Rw&E;UMqx7do+ZdX2 z+uIE#|8UH9EzI3I?H+62;|eb9{hs;xKbqy~|4n6Str+*pYk<71zp6~q{g~ae=F{)I zRMs8pS>%6z04VOl4D^cjE;g%N)f+3yyZtu0CB=~>_@)R7#wzGGln=^gr(2~HTNJ%s zCbvA)Z5?a(>`D&TK$7jrkFXC1LF)5STy{{|_Oc4G+9|RDS?Y&%ef?7G$ zdx>{gL;S{Kyer{@*p(S@HHj{lofVA#0H)bRjp>Ci2y?7d^xhh#O)L>ZiTx6`ZV6dt z!A~}Vr8fvk{E0JqLBp;v$OK^%>Nsud;sq1S^56w>X@W6VxfBLDIAxJ&X0 za*xPl`yW`4?wXJT!j=UuuM^<2)_p&W+sn&3Vc?@3@>-;raSWd%egj*H7ilGx5s6^*Kl!*D5iSweYPPANUK zYd;ju%Zue2l%pLWR8~(Mk9Mc$RQmJV-~Luv?hJ)g=>kkKndkRTIaJHW$>Y(M<1SlH z%92%6A}hZw3R!_OFZfhrfG(?k1v)A#oTjp0b%Mdx4vWG#F0D-$1wJUAVzjDzigD-W z!4%$lKW4InpXzD%*kZ95f9p66W8_`CyYpaI6xDG!wK<#R9FgU0iA=xntm1$pc*(V# zay`nSULON_sva1%Y?abIu}zjLa?i1iB{NU|ZI!37-Hb;aESJ?SYP57VL%D=k6MHgw zA10Q^j^uw0eE5$ByT*j0n$Bov!jyWj4-@!CAX$xdBH?GGL-|YA#FZxUbgn{P-{^6x z!)l#XTJ~Iq8T>c$c=~e64}@;~Y7s#PVJYnDrRG`Gx4LYt zRU~3dvKgF(?xDON8(ejXb}-gLkY0gpJS+W((TyF^SfAJNr8Q;{NT?TZw!NOIg9&iA zcBK^3WfC5fme{V1Jr}J?sG#_hQR{esrM!xR>zn2NKE{jbdy;thagxQzm3kcFp4$ss z;=HU@Fnnh_1+pxUm3k$E3d8fa3-hMtyzIRy0=)6zWaH_bi#z=Z*>jq2{k30e_tf(E zrtfQhsB;DOibAMNiN}o`V3WqEyiS#@{5lqa8y90p8~f~=I*UGkb}i3dTo-SkUd5q( z@_bf;G+j}YX2JU9^~)j{7X@I(QJ(IW{?aQ$4yMo?OhGFV@W@ z+##-B!Eil$Q45|gFPn0!1^``(s?XKHmWvXDgNN?gsi&X)^s~}W`hH>8LsUcDa=)oY zzAT5pTolh%J*+3$>D+a{qr$EGGwD9_J}rmXy!YO_wsmHqfAshBXD{UG(`U`wTb8TN_$}Ao z%$~|}59amFa!R=Mt@66wU#W^Y4r0^(P=!?uTw1{^qn!t{clm*NUJLER3uwwOl=Zq7 z`5;vnu1cwvr>EiGDW@{m<-ldBtSQ$R=h2^SER(ti6W(hZE@xhx+C91~FI7c1HIcHc zd^3d?BFn*+8<)e0a{exlIqbcp=(0u4oITisS?;PguVvehNpgJ)eh;QyQPO56q|@cH z?B&!ndXT8nVyOERAilW}^8Im89m7 z^pty#TlteknBYg$)eEm{pi=6W=#^~8yqRYy{!Mr#cXd}~^EfOE)=*YFu}ls3U$UhM z%f1@D=4$qBSDU2Ngv)x7a4#l9@N0WNYrzc{HEKD@bWsp$KlSZsVx(`BV98)dYpEV~ z1BJx@2Zb1;T)q3UPS}{3vu*6JN*yf^Y}l_yMctT}GwdCPDd(;=eko+6T&_X_zocFf zpnTqd1rL#8qF$h`%hIaoEhHcp!AGS1ofEQacUps6_kWtV`f!N$DCfq@IrUcNW$C1~ z!}1($sq&)SE(RAr_BNwL5E3b^iRr;+*&>e?RCj-9S6(Zi)DPtZO@r<)w5Yycy*}v9YT}8u|sLfUbb=#Ql<4&6tCGs zb?2VU4o`VL3+d%b4LiVQIsLnOj-Nh#T9zpm-b(eLHY{yEf;MFl>Qxyi%4xnS*IL}Q zdlj*KukIU@deUt<*r$48G-z7Ir3&rpeR}7ed(HE6QTDsNC|;wZ85(q-=hH8rmF1^u zEYLnw<3Q=-;@P@e6ozNdo|d~Yu{5zP@f0b`i0i(~i>837Lak}E>^sFn2-?a`$vzgv zVD_s0|J40iuXJ0MB?!&6&CWSre;fB386FXt>4gA^7Z4H;@PHH&4@mrgd@SGvQBRP9 zXXHNt@iX#gfK&*C3RPxx*;Pbjc{CaB;eMO1JLj0~ReQ`i#$0o4v-92SRVmf=eee0q zY`3f5bIfMU9`47F1cg$@DwWX9jhIX6u~LAUlk+@;JF7Fl9-|C$57k@FEyCOVQJ#_R z1t~(FB`<UR zJZxC30X{+072t493%uvv#JlS8?3Qm&k?yb*i?R_A|MESY?_a`wph6Ty1Tg)I1zv8$F}Ewj;my> zkzBpciOChnjXsdqv5$X^?y*gTo!I0e`;`1IZ^vISZ3(^uO9*6&<3;456@yd*80tuz zBCk%X2DNft&08q|sg*TP_2GIciGkS*?!kIvJ23Gn*uutJ2M` zv%2Ci>oI8%YKPZcHu%(lk(L6-HOOElhYvQi8{C)k@|wnj;L_b;WyORmtb&mNG%MJg z-^4}8YFhI5%&S+LqQ1MW3R|=aR11%_{IjY9=vQt!ZDr7xLzfmde(Q9Mq7Yj#($#vj zHi?IPz!!`9VeM+&kSNduKbw_^c^-&V9ru#yUF)y0jL{g&k*vd*01hYgm$XJq5F<%c3F3LeN_Z zhz&BAC`Mx(SI(Ps@sDyrNPGVLWr+ioVo=|QjYwtY1M+e=wVS#!!_GQc~?C@A+5nHpL=?EOiQN#w_8fZ9NfCQAFB=`)*0{l zH5WJRlWXX*SXzUXgEigw+wcT9(VD+-Ji9Bd^&B4>%PNmpPh~AdnNCc(;WN%hsVK6T z-vYTS6)P+AtOld*c&~+9Y)@r73zXzkJ~lX~6c^nNpJ;j6O9Zs#b}Fw0zU zP@SXl{_K6{^;v=Am1EYfSSx=YfacP7?6Eq~N3NDc&^uGFuA^+Hwy6?RZf$Q>z;AVM zZOtozw!W3LB$GK?pE#~`By^W;#Vno!ulQ!qHjXU6^~1ff3m4M;eH zi(D{yexIeh{8s{q;Kd9x=4TJsGAv$7HPSAnK-+J9x=Sznc7VWtt~+UYzP9&K+zZit z|L7|cZw#z`?fA`w9Nv8Awks`OO1|~p65fn0(q~4_)DJWXy?SyVAX+HFI++9GSpqey z1oS?S_gQEcSTmd7o~3^waN-4k3l^J&rb2mB!D4>4(%+ZeJnGboC3g*>QbO>fC!v-= zsXCRXB#?XR0kuT!>Upz;s+Vi7ZwYSN@4B|Gky~tg#^vw8KfREX^6N3T<-UDmZW zOlu?Fc@$^Nuih`Fb+3(63N@@Wq-0QyV_P!Ce8iI`5ZzsTwL!@ zMpn^tf{eB>WzZtPboBRB5E?c3=X=c#$H);Ju9gFcpx6*{KYsj>Y_m8X`S}KcjgJM! zxM4rQ>w#82XOs1uo1vIVV9Z#%l}wvbss*V~%lJl5|FMXSWyB5wXx} z@CN8@X?=_PM(Pb%tke&1i`87lc>uPGjXy9iqtfHZH5jMgktI6-uz*nj5V@tEPhstI zB}h>+s62Wl9hf2|;xz+g0-VZ<81p4uVsEy(z9NYc&eu6^SzL#!KP;nWQiPmysgc6v zjt!x;XWF1jyIV<+Bh?C9mWFUGhLC2R2@u7fb=m5 z007ag>jZ(a0FJhfysL0=ZEP$I-G$&2$3ZBB>()MGKC~r>gJA7fEa$>^MDzZ*aVs#M zKgQfKnTTCW1WN|aN^Q>q=Lpb}w^Vvp6939Nm2iuD=o z?JUQ}wV>Cvs3p)BVmJ~QD<)Lqx>_$cV@}H3m0cDFALYXY&=i=|CpLK=!fOGD`gT@cvsQdVEH~*%kF@uZzca_*C)>3r76kaT4@VPYLcm(VudP$$Isha zC~MxFYEtJta==uIWch{T6P8R&0BJigDQdl{CfF`uS(VKw81~X?ZGf4J25oH`fS33C z^!BvOE&=s-8>cB|wK`AsqIrCuwBwez%&dLiGln4ArsoyG*!m>&jdQNtPr_B46v87@ zAk?1f6c8JCH7=g)qTD2?Eez_f@gORntSQmY{j!GrTFhMBeSi9-(V|eiZ$p(aL2)lG z&{qH+_PHjUTIR^h7I9$8J7y~T1OR*9UxMAIJ2dS`(^#%br+s~^)%Egr-!pig*disu zCcNA%*89K1wRtx`lQGeH>5HiU(^kc@e|q)k`s?Lg*S-Vk*X}&P>%~@{71sTAC=!Zt zq$PN5lTu9kE=D&M5*Jf_Uw@v|3J7AMZCWvhrf1hSp_r>2*K<3B;1q%!EmcL()jW3A zOXSKkqYGC{5ZXz=VHB=iAX`Q~ZpjdNJ{Q(jcl*5EgsK2e>L0&17nfcVl3QaU^d_*UG1AeqNV1!DxZ9q2mCkL%6M;)+B&AGq0emRk&ujf35@)OO7vDErYx!>KU<^ zOSnTm54ThYUyKzU1XPwv0AJ^2p=A7_`VqgC+C+d<u(efa=F2`#C5j&BAwR#L=R?4g{)U$ZgqH&TPwk zmm0em+sM5t;wemh0BR^MP_IKF_X-B!aLrYGsat4CB7_ZA(J22hE%SWSx{G$oYh0AY ztXtn9Lk?|I-)W7PV#s4|A7k7JSc;s>`_vNv_f+=bJ}1trkDh~e$*~NXx`Ip@c4WC! zOr~6C_hg*fV9BiM2qEVaWcoh2%hr%OZTKz==ibQ0ILl7n7nk{kNh+{`g|o<9`CQ>B zo|~?){W3F$wV5T>_Q%Wb-wRjSeeTOoe!sG1ZWk^3He`yLcBIujmQw**t3kIiMf>kP zn`|{{>-<7F>;nfbu{Gf;J_RgEaokC7oEi_MA;I_R|E;Z>>}kgLqGMwG@BX*{hmUEA ziVB4=-_Miam7{GZjB_q00HWwVy%6g8Iv%ZD1h4`iTJe0&^UK|bBvHh_sn%C)seOO~ zaW0lSPT%X^mQQKr*zzug<8%1?NfbFc9PFX`W9^#sK5kwqb zX}fmWmSYU|=`{5RUg%0n?Jow;sdnoxkI3Ui23cJz!EXD0X8MUqO#K9K^Y&QOcWTQ3 z%ta!0L4F4j<{Rxm%BPyZO1Y7@?z2tk|6l*l|0j0nr+Lw?&!0whJ>KX3((8NK<^PH^ zFUoK=cV(;dLLjeCvnB7@hh;o|uWY~S;y8mz%G%R2%=RfypAO7rTLHyC_DtQ=jvrFb8)w`#syPjhG zWWkF?fgj5r^pPx*DAPePtj(CtFUXct%$ zWxW&O3kaEzLIiaRP#(<4uq=MQ%?DWMP`^7*Rk6^jC)eK?cX!WjeNLXcyt!HeZk&Mm zfc@{@zfH2B1KrU9@{xlPL`y-+bi1|lb8l~)i(I9MwG{!=cSt8g;ORL!LRL{-(T_JQBR1v7T)4)gU+$T=)Toe(lq(BaZCC$}xrcR3_v&3> zQ0wkG6ggU7v^4j~*ZW9$0OgD}J27UL*6tp8LZygFF90qqUS?Ok+<2L#X#L0k_}_o_ z^Pm5`ZTIpCi`0KG#bllN}lb4}kH`+kgDN<94v{cXEK^ixoEK%C(>oTrpye*QIZ zS%9PR%yh+V1{uw^`^8=QY!@^mYyPDe(JqB<=N{}!3Vo8_F6ZsRuj9h7?~MJfacxVIiBz^*-1AV9ZYKf5uDo64=yi85-?{gYKIP%)?B{CmIU7|i)PwBD(} zEwPYux3vUCic{B|eG**eV#)Yoo$2R|vK*4ABQ84Ay)J;0S*DsW^^aIRkLk8{Se7~O z?b<0QFWK*&+mebXSs^v&oTU@OKdJuL(*WF!=`tXkX`YE)(*e;EL^Z}S_0vE2%8qpX zl#*ew{X0N&Mc^`oaZOTLtpp~s59!L=X{oD9Q8DuReOI|I_gv3=FR7l`)^4Fa-rD>7 zuq-{meb1=4+AL4se)Fxnsp5Qro3KQ|U3Rm$9q&9|4B+NK=2P6@M8P^-QO}XfF~?OW zOYoAhi<$>+%>(Fc5o3rH74J3>^oo`v&0Rc3iZ%^TcMaup-Ks|A!9CnmmA=Fn+eWrb zxMC`H@55Hl8@gZ~jv?qPUD4UCV#@}UK02t4@n-h$@t*y1PAj6v)OoJfHT&`T2F_%G z#NRz!f9ZDZ?eh>RQ(QU7yo8>!knyWZE9CF6b9_gPVz?xSi!<67#Z{as%5y`jqq~37 zYG}q>i0eu+rbt}@pdFUBaL2s84a=acnW)ObddpSR%d~_t0e$`ssa9IcF^l7_m_W`< zS|uaS@-{7H-k#et0dyOItx^S@&tb7eyWl$mCk1Ik%7~C+5+TsdQEn?8UO*=)S)Y{6$GXP!+O6qlGhE zW|jI1WBui;m;QXkK4vNsmOJKC)archsr>TlEnx@{(`+-w(PrFo#0>X!@LwpN*OfLl zh>|3S$UWBEYin!B(SQEuf8NDy0&oeCDJv#6S~Htua)C?8>orFvwmqXPKEc8Ar;)NG zt(L$E%0QuXhvIs@g6#_T|3_Akj4GIuip5_ye;h$^tYw5 zt?nP*ud};btEQf^@w$9(;g5tq#^>n13aE8>uKmBblA;8k)n{5}Z^c<^K;b(E69!(* zn^S$avBB(KU1L>;>IV*sr8a0>wu#rusTYD_+wGf=WK*b-E(X*EOQtq6)c-`XdR)Vlw$J6%jPtMROsLc(-i8J9YT7f;uX3ne9uc3cbCu>?lT zNQB-;`I?o*<&#yLrF8-06soPIHrM(fYRNvV746q=ySJY0f4jDRJ!e4wfr84-F*M>Q z3XOWn1wQE}A30est+rwRbbofX({=6MsQcxSZvBUhm142D_Ka>}wf^#p&z$I|Dhbj{ z;8XR$Im>Wgj7N_6!=+VlWz%{4dI=;*NLL$%V7h<)&b7H&K3nDA-+M0hr{75lTou1h)p@KjyJzkx^_PdUAUyk4a*DKdAsi2{n@Rb z@4kEM^$q6cupGh4s6K)q4d&6X0>Q2C5GiEVm6o@2uE_z!&6Ne#RwvX^jzRpvg&5Bf zb7#IITJw0er7etSGmpD$bR%_vpM4T8uV*r9$M}Fn$ZN=C_iokmSkC)o{=}&QduToo z`rMN22cQl8_QxY&2N-7~HAy7pg-huJg?XjB@VHIRgCkjBkz-McO_BP9^>Oj? zM!61N27ns5{E7_5@6Y)h*3Ciif=%f;Fb>^|Z`feFyOkPg_uWT@ zx^$>U!N_g~tZDn)&6OO%@;%?y)sIjh|i+0m|ws z3+p9heaQ8c|9$_T7G~L}SY`2#vQq3VnO8VrTv*r}&91)tX3WDSvlo#v`EAC6&GUts z_PDJ59>iVNZTX?7xXmoG`ri9>iE#p)0;%{7#wBS2bSbQvVrwebdmfr=Zn4#*Eno?4 zgj`~^NsCeUYfx6xI!x{|yI0F4nPjJDV>0}l*2^&Kcaw$SciMJ>Q!KY55IaxPU$;q! ztJmg_Xl386fb6`vo=HNSPQh-!wf$|&{fh{1)k-;ztmVv446B$f^HU|{o8^KZ3*K6U zUM^~Sv6MKdR?6m%8Pl*Fv2Teb%nHc3R?Bc7#U?9X#KMFSxj4ZBUoL&*q{^kD+;k5d z^sUu0nI$t~j;U)~`(Z8^Pj5Yi`YM8sc#oFJko9u#vp8nd!@BaR(Xuad643Bw6^wmf zb-wR-6x&N|1FV`&mjBQI*z1?i%=Y863)nBahh2H_a%qVS0kv7q!BVoOc)co|x5+Wp z|CM`DeG&UnwZD~V(?${O=lsIHGaIpyRcMlu=;R!S@N^yg;_mQTNK8xKfJ(n$6rkAp_H{J>93>EB_^cFPp4e>Kml&+p#( zp6Kjvr6XE%O~d-OlxFDbtmtVRC(4r;<94xc-+gpH8$24Zhvq_jfWOEGc_blH2+9D4 z$J=My_y<7>ENB}*`S=ikAz3lQ1(HICyGLq_<38>tYnGuBil>7W7;cT~AC=$ZFBe(r zVr{-~4Jx>ta|^;U4PgR^0M^P9Ym05Mawe6NLREnP~|QJeF=d zA1fm5BG>N+P2V;qFSZo3uu?C=O6Bare?&@4Gr5Z)h1qef2&*@ZBf?uGm8nHL--Te;s6p(bq8!)gRb@dWam3 zr&G9=M!fDZ-_Kb4zxnpNoOb}~;c6Rg6bc8l2MLds@ZxbIBDTv)%VvOUy79KSmppb( zEN^}P!cA8IU;PkcgbFQZZ;iaKt~_Gg<3c61u*H!8J6u{BdO|s;ugZP7_3`Z?#ic6q zpsa9Db|NSc1U*EoFZQ`h^UWdGnFB48gO!+TW_p5+HBRLa06neew3I6@*vqrD5mHm+ z9UsT&%XN6RM9LrKUG;I{Ppt+VvB_51TU#{*iJVj5vbx7s4i;g68h0sg#7Yzjydi9% z3>JHksklu17IyJrSl+V)gWBJA$E@HV9joAReml-tJX-s7*y4|BTlUtugT zA;Ft*9I~xafRw=4R{|=zEwxeGbxq*0C@n$nnUFgeUi*jv?K|O~=QPEGWka?}E9d}t z89bQX#__d)v2L^bRY34KUlHY(gN|7gchBKaA9G_=Yc#J_z*KKbYp6h@K!=U_F#4xw*=tO%($5$H*fiby zdeIu4psnRPG&h|$L909C`F+3Q#LX-xlvS`>dpF8BjxKq+Lmnnr*W7eX|9YNY?&~P3 zbsJ-Q?z%!^8L<(SvHun}k@6J53FRCv0toI9I!I z#@JZTV*D%K&*L@0tl7qzal`ny1_s%iJ0Gub^^~Fw=K;70AS*8~V(SiMMLnN`J@kA! zncfM(gxPamg|#$DQxLbQ_Qtya7C>MBS`aK9>D3{(#OmdN`n=t&vL0*4cSaBfoidIz zV%fsw(t+yZnM1v$)etR^sYhB*kcIOiMs&&cJ<&B&7F4CHh;azuw@`6$h&W*fyU`Y? z8}ev6*z`DGOE3@uJ_&xBO`#olwu2J11HmQs0l0Yl;4-Z90DAA=eekQ!YzMJN5Baar zdK`fDtnuDrT;dc5mSmF+Pa(8_knluWkQlsj^YmCsf<=#qy`_?&GiKKsW1Bf<-OYOS z+>?z!JB~vE5N^K?So5_NAgQygu4sTe_hGnvhE?=vHEqse35%t>e>-42MC>`adyg4%?5*VeQRx&%O;>nE2hU| zO75?2v5LdQpA1IwOyqa}1n3me&pvdHnI`-@o>B2dE_?K-)K;*{l&+)_{-i>9q$JVr zyk|9H+Gw?_uCe_}=wkmph`rQyVZppsq1|r*&|1O$d1}zfq^pLj1*AfQNbh->y=N4s+q8B+io1x z$!ZgxDfhV)7$*tu2W|Dnz5JCkc3PE-vi>expP&7yJM{vZ$|bw9Op|Q1*Eq>4G?)uf z+&YRdRpszTH@cQuyup&$C2%C|`(Q0xNRqIUJw=r7m))G=zgZtb9JcEA8ZU}j%#LRb zFxl4`y!2Yt+Endw>^!wWJMIa;3FwtbI}nHWI7{Io z*Ac~wgb4U_HKZ zX4f@i8DR-j1>o}d>g6l8r7@;&N#K4KVG`U6&m>DZNBm-2R(m)-IAB_7oqYM?xry0U zakNfSLg70tUfVSQzesh2@_1fFFL$F`bthODZpHx|2;$dR&2UfbccxYcuK{k*KKGCJ z!;7VdORy8hEa6q+E}4vF%-H#LxR8dzFkHRW$8Z4!fKo~m4RVz+@*Tz+57%MzDadj} z@)l%20df_a>|ltKAzYTnRC4xQv+O&q2lyY#62xULZM@^%tyM97=dxz>*zYlx7!OFP z(FS4BxPQ#Ou%wNgrvb)Sj{)8fXp~O?dSSj(2UlDlm!&0fTPQ|`+p^q2!4BOSbG|ap zT6tpyFx~3jd*!bu%Ew7XI0?+;hAR>sFBdJ%WQy{}leGcAvgk3n#BU@8@*!;?Z`p`}!@rc(Tj zI8Kh4;}P<9uZ9~KbL1L}4Kg}D0Vu1tp^QX-%3PQ{Cp)~#|G)@#WvlU*{O#_t`#8+X z8?#sHGDXRL<*d(>JFI`-flmR;bdA;iHp_}#=k?zc3+D0K&empDqke_CXot`hPdV-5 z@7%$T$z7F|iE)+v7c--5elp(D&#!4onE!Iw2GWYpYQZdQu_+^wiC{CVUUnC0k>uM zyu3vLu~Fu0_1b^eea5XM+=L5`^-HVHg>2mID!8ulTcdE7V1o;v%4xQ116!=-1=Ka2 zLJT&syT;;2mo&F#Hj_nET5BzaXA0&=S|VDz9v_$1gLSoPF^M|Wc3(^d^OqABU$b3b zyRf$AUbV;6hWeU~W>0MXdd)u1*c;YUaWXTgr7%Kqsjd&Ihd+)&&*;NtVyn}bQcf_d zi|2(9&=bV9-llR~)JRI3R-d9~pu%7i2wrT0)-$+-Ju=Un0Q}XP+C>|#EVHilmwOqK zxZM&e;@yo(eM*@jn6{nEZQnh9?&evuEE#o!1;>;f4!=-@M(V^ca2DCq;ta_8hUSfBWliHw)&$ zp1pYHKFbe}0ZahEKD>XweShY_5IGXvh4~yQ6@LA{?`7%|KM|Pd&DFvHOr|- z0{ccwu&*14>!S50gxpAQpI~VX#>+E7T%@Im*uZ7!o-;Gjxvbm=cf=bKJRN{U0{}B` zAuN?)DceBGBiKyec?>4pTG4MWU%qsUH9!p5LX98;&v7f}How6Z+u4SlDOFI$cbnA@ zDJsye7(XB0ehhGOjC`RF+p`a6g%vCbdH_srk2j1bCMc(}v+m}fr$ItK+QYP(}>QCv7@z345A<1 zI(^9ZUhiVe4hB+x2XVfHk~b_~$0UL}4bPh1GxqREfF;F;n01{fYB^*MQpNpxJoDi| zVxCB00}?J-LAAbQZs;~*T=A?E<1SI&utburnwIk8@z%#O+68@$^+$>wjN9A0V3ftU zNiP_t9gEzQ3%Le0Q#)O?qkNt#71l@+0*>}L`o9+EzSGm|Kqgx6qeCzZheb79Z`ULSizUOoFN{{-Mh_1X{E7HZ7E5f9t0iL-@O7mK zR7qvc+@~v%i>%~*G0GAT_@V`nDZ>+4WIJOo3o7JoWV;1b^zSAg#T+0DqxgVs^kkp{!Z@&3vsp&~D3G@le zCBP-LE~;o19>=%UuE}Asuf&U8oTNJrZGTJ0FiW9gtPWLhwIZ|40$ddkM_IxWILbBd zrX!c&vI=PP8FGc_7XsiXgvYYL)$?d%GwwmenU8X9pY_jx?it!6OaHkRETDc6x$TVqyzWM)(Stqtpn2!eVbFtZsE z+n^1wrwV?(P7-`IPm=m&DSwE!Irw<^{Q1%I@zL9AYBFi|FDF5K8N|nY<@Y%zkHm=L zLE;OxXAZSiAKK;iwOp-gNLpq!6jH3c0#*~``4r&H`0)9hPraFj`_=di0slI&kXHN= zWlL>#8vy7@%etQs;HG@lNcF#1{aOOU1iKa&v{Yh@xurhA7Q`Q9_|?2i|Jc!omNL{a|E< z^@Mq|_r`8jA9JxQYwkMtK^dn*p)i2;#2qb{0qD*{NxBSAA77?CKK6#` zYAoKJau=n=3g4A}B+{IWF(k#v`7}u9%*GT!+oKKKmA4!F@X^bvT%xc(A}tA?|G=~z z>-m(x3+odAJ+7CP`pj~pye13k8fkXiB8`~L`-ka$?N-O*G2j2NgbSd@I0+lSLEA_kgA2NQin-TbOZJ~0?K_ht(1e6=Cmxp6Z*W9q8NBe?cN^zF{+TG?5 z#u!>$`C4TFh<7(VnCL};RV@gMM z>P1E@Mw})qCS~vZuJAO-=`j4z>#)h|u*P3X-iPe3EE0c8`5*rPSPCnMC=|Ft;da;u z{ue8o&>lVnJW>8@)=c4<0ubw;&goV_s?9hmaZ!K5Qu+I0#ay1)U#*mBb?ntVIoxEM z&Q}A~`&fX+&TD+9ezOyr%*(icjk#p!H>D%dAONsroTi^kt7ZC8*SO0%&@k{Y5CJM> zTE{2iENQt+H(B_9FL#Vj`HBBsab?0=*<5iB21ZlhRj7Phc0ZCIfq zRmosIvwaE1`z2jrSEeio;X#BOl?`&|LRae2s(@xAzHKe6pp8OR-#62huK6UmD0OH> zSiRv(IbJd$uw*iGYQ~2!*+^)lF*criX_c}RcP~H)ntoB%iGLceDPv&Y*9l;Mz!11-s$J32+SSIfrM7dw?9&1CdJ2E_?~~iKJY3ex%BUy@ ztXfdBiTXH}RuRt6v%CnF+48)PnU%|-lDg~ML4*njMOKbbR4kK%iwz&2r9G!P)fHcgb1E^J&0W%rih(7; zr7KOOaH6oTH_mq(;QH&o`P)qZ{OAHdTu1{b9Jq!B5JO!&-f|i4bs!75efi3sz4`*J zPf&H^=ewZ2EJ@fD0435^02BZ~!O{m|-($!K9Pt}*XdV~&aLV-t&xREV=RyFFJdeXN zFJU{Cg#ZVe1xl%7BHlAxbv^gw%}oL;2-*NYU{00Wrh`_354mx|`V=Wk0^BOed|0E0 zM~Sa1YvEB?BbOoS42#^z#k!2aWP{8`F0G0w4NFu2!~~X4H_JK($U5-%k<7d;JuWC81uGqL`+26c=#qk+)9u`QY3c>h7yCdrZVOim7#%@W*hg1|XHvVyru{Xu;C>989}?yx-cgFb?xP&C6I{Xq`O- zIh2%0Ifl36u&kdr=bRLY?{y!icfmlM#6etFdLOBL9@*zm#+*22>KfHJo{`&Egi!8r zRmQI7ky7Erx)p1d6c(xr`VWR0$kB+wguzB~Hp)n=Ws@AvbR{XTredNv&43`X?_+w*4pob z1@l@#3v%8w8?_x=Z{w0-!Bk`L`iqAO^;1a8jx3hWB=aFdtmnKe*C)wOWrvbw^G^#! zF~H}a4vXdm#qr+EE>a&3ZhiMpXjjVM@3k48($H6d=*jJO8YaHn$6v3{C(PXoc-9@4p`h5{2nZkOztVk<$X+5=wDJaAZcsl><{mJo_b^QUG3jq=m z_)^4+$X%%DE>80MPcN^ykxa{gxY@wx2>ke={z4a8f$30x5 zkDP7C&4T&*b;;RP$Ntmz@1yX%B)%sFyM?7-zGB}VErpVa-ML;>FKP7_F$UJ}18n)0U9G`Z%xFzaq; zVoc1lvTnI9_+@Lx?;#E;S0pYPnWwKSDLrq}%-ybI{tEauTCbO7m{75u-Jz< z#b@qr$?7*tz=qTz0wd{`zFKJqPOU;@mhqat#^`T1K8e!9dO7!RfbKQh4z8xr*Nc7o z_M_+LymLW0To1qf=Ig941W4RkLVpmn;9duJuWX0scJ2``oBi7qcQ}Y^xM-%3io4^O zgH7uhqlh8`d{p8dkE3*e@aRA|h?q{SkI2_9T z`}V!bdM)8v3M8~A;tm}&_ce1Qu7wp;tgVe82jx7|$_7`~a}W08SOX%TC)z9OXil6Y z24sM{N5&|^HTT5)ud5hP{ax7Uf*YXUp9AahI$T00B`EC$J;%ogv+-C%XKX!t-JFfK z57HUqymJK>bB@N8S$Tc9sYag8c&GNl;tZe@?HF#(xW}tkub58jkf~8t5_x^3#WBcx z7Ek$tGTz-D9c(If%t}|%RDwL7a&8`&%0}y*13t3X8p|H*Ku=|&I0`)G^Wl+warUtr zX=Bb~UBXyIzq$qgCV3AW3>T25xt!}&55`_G{?^%xdpn@qfb9eGpQ8U^g%-%w5)}P6 zLUQsEEtDWwdlW;i_tg{&YEncEMq=%gYrfi2`N=t*7|+Z$vlvf5|M|}yWO|!zvNgQ} zyF3OVdka)*1F)1KNS~17VLXx{iTj+~M|m)7eoVz&$G#0F^6Rd$nFmwA5!)Vo_8~p?Vl9$Y()QYHG0B!) zUHdDmECFMs3ZC-V;JZxS0-6{|mBdGy3TzmJJ3yJo6hw@{Tuk!*iNVe!uzqft2s^x8 zUGwx?!t{9LV3%ck+9x#rZP@iL&!`&ZG10C5@jTV`+GARh%*YM5T4aZtTFi`Ezqu?{ ztO63U;u~M$UeEIr*Hs`ffJpDbMm86m0w>R13%$N&Thvx-6r5WEx&&^NN*gt`9_P?n zf`)jphUggkX{q2n@`Y+Wtyb-PGhXPsrfhai z*%2?mLkkx?9F|33J@G}#*p#l+4ZX7r##oGLK&8-QQ(M~v7ww`H^Oi5teVOyEr#@YG zx10rbzVU3tv<^a&5bWUcwFw%u8py3O#zHT%mYmOeBc`&(@07xto}0=6>lH0>ghV zu_MT!dd2O#wuti1R^ePrOY4s@Z%@5qcJsg5vpAB+)`^jZ1T};l0lOk}PFnLTeLUTI zzu2fu1g!#?!4@5bL5@;6I(y%hHn@vs-3XOIB8t?L^Db`wt&8w;?`3UX!k$v^v9$ z^*Qq|;+^*4!+QtB0EQ3uAH2OGa3gjUjM6Alq?rh7pMV?MA}l|*Zau^I5AVNox7U?< z7Tv9umN;2&WGM|x_sL`WPE_JGt^qi9?>RgVsdVy~%~QDBTCxlWSU4=pNbk`iEy=K zPhZE*GuH#gn&+#e0(Z^0>qz~he4l6L<-~p{2!b%D`TXjXNrEMRkafj;UAe9eIYT5p z56BzZn2&a)yZPEPuc@ymOfeFX6Jve5b4AgukL|}(kP=BL=gJ|~*?PVnWwrHnSnKIh z(z|7z-?&G_qHgOY&vFK;garhR6P z^{vf;rU^JL#Rs$fHFXn`S401z>9@Qlt!JbGeHM*cZEA>AG{2r-F6Kw=Tf+Dj=5=xG8qU z#^fz^u@wHYAKYDTNsXKfHl2Aaxss0+X52@@cTmtTscr2%mQX9f??^wQxR-cdH(_R# zLF|JeAd|2`6!x|w6Z!#L1;8HHv03n*k=0Jxb}tv*UgRF^Wo|aoqpSlw4&2jA`?LS1 zeKrJY-A8AZ^UksYaV*WF^0G$x>~dyZ;8P>Z(+_kx#Eb9qmoGhTrJY+QwXVZ5?+lfn``Bs&%N~w_P0vsFfCZzYQyM-D%gizAv#Akf?QJf3tB* zrS{lgzu)&eZB4=rf9$q(x2ELtIF547<2X&W<*s|jeNSXL%zIGKlfD8%lhz7Xww%w* zLAm63RP61E=`s$tM}nHuCfGh_JBFZDjKAQvkCyD`YTdZ*TO`&CQ(y&G>$FOS7k?09bkqcV2giTpzvf0Wj0`&n#mQljsJd zDVv~->u&viQAg$CM2^nS-n_97PH3~Za`NotKH)v`AXm%2X1p2z^+I6pZj!LrZD0Xy z66rCH-o|>*>72F<5O5|jo3H2RUP2KDK!A%a0Hx;vZJ`XgcZ*xB`Hx<&0FHXYizLgf zuPs2Bv)?kb0-)r6>z{?nR{-(|Z=e$CG3J4+*?J!Yn`tP?&^J-`LwW`zv#-F7!1+V4 zvns6P&Fk0E)|7d|)%uY4!}y9cGtI$wYmIFYF}KgioO@(?nRquWnKlRw;~qZeK?dk^ zow5S1!#!Y0)w=4WU$&%G9sPRavAe62&BaaV!jEybaBN$+8N=fJKr5+aFn_l(O^<_B z=24YfF~E4_xJqF>yup3i-3nz5J)Tj_WOnZ;l?i6{LN znLU2&Te`?zLCL+CZubXre>vESmb(+7&tQn4a(Bb*6m1n`?%iXxX;4TzQNLGHIDh;8 znu+X^M8xuk%eFvLOR=*Krz^P{TJA#7$MqASWr%>=o!SB;!v-e?B z{qz{DfvAesU`+oO>%NA6UUAg>oOzfUu}4MyG= z%fodG`!g<&FMYj~63mwJghsRwB-pIMt2WANEo#eu^Yug)TjLASmVs(;SLLCr38V#% zg9TXW9(rwLo0JIUY5F(Xc;rP$aJjq3vKy;UMl!Pxc4+Ksee-(@D-fft!SYrwM^_Dg{Heb_AeVZ912|D9|Fpw+EiDThwF zcIWfN#G_u)TDth5X-1#kORsSB2(K;irS{vytrZu^g)dlOQ4#BO+!@`RB`IkRo3Z!t`Z)A>Yr41(Gt#)8pxFiIw z#R9VL>s)KB5umpe7td6P2n-#Yx z+QmFh^>EnMoSVCRKFWx=NC@b#q8tu~BxiB&9k=A&(~UGL0!tQRO7Lc4mL7 z-yR*O0CXXpae!)LST?aCZd2n>`7i-EwbtSb z;#6O}d=c@cw9+jck7)0(#vU0z7^FEX!#JeGaDtT=FTAhZ#S(FjbfXsVNz1A=GT}1j z+$>}9R+6>I0;V~3U>X;J3@All8N~Gt*tX*WCSkE91GxkB^Q72Bp~KC%Cy9*|S`HjF zua|{HLo31W!7YKFcNErL&L3E)-6AYtq8JdL+j)S8UD)Bwd7g}Rqqj2b7JPQOq@c4Q5?3T}olfxx7z@~XUo+Vk6 zL?oR1@#6y(XX_*f2-%7opz(KO{G`TWdP{}4J*5QE`#s40R>qG;UxBd7_}&jbhMumq z2hI`AH&?=}VfB<;bY|aL?-PlWug|8GOmfd<weH8q9Ey-3EWd1i+xjcbyaQn4`Id{iIvF z3Wl^#8hM>9D^-yaqLK1^2^u{e$aLj!yNiOhU99FclC zw1^WrGx_qdjXqk>!-YmxGqll(#6L>S)cEhx4pSdw|CyDxR|(jrt+dJL91g3V5KY3260>az&&y>wi&8{DsRd}d2Dqb}+T1qwM4Opbi2cLIY@F8e@!)*HEmDx|3*Vac zYyHsZVrgZBTq$Q~{jQFPHi}~f^sgDeV2i>D2d zH7RD&!$ZVj9T~HBX3C9~AbVvR1QC9@b)iQJ1ht_Hd24a0q&3RjEjPgw`6Cfu_Lw9t zW|P9Ce95_L!=+mDPpxPLP|tJ6hM?>BsEg$Q=x$Hh1n&1+dA|MdV88wPTl@3>@?URd zeC=QZ)-VX&QbIHlAHgzs+R6`0(+1YxzkL@L!$Yi#H_u+#!^g+;UV!zg-Q9Y5Q1=fX z?_F3|ZbXlp>_}Y^f_q~c+r~PeUvU2*-MO=O@7~kudv>dpH?uR2!krS$fSAUZS^%xcYsh@cEn}V(8#&>5#r4`ggLJ9BvyNo21?U2pJ`&hFnbBi_GFV3gP)5vPShtNt zPvKH7mtg@JJO};wu+_)-eB8$w&To!fcfkgId0MH!Y#q@Q~K;e#nB=Cfyq zU{BqK(YN1xJH@}QOHa#tC|Qrr`1))cKY{f_#)7pJF}EwNiH*cV9yiMO%b|_b9PV1p z_CSm$?tgR_;O9)i6UuT|5vgfdH{|Yv^#{w(J zIE8RJSu-n(EVg3By!gXbvS9Q*Ak4*-<=q`iiyeX0I54Lu5iYCvtnbhLv2Pb7KLs65 z(gQ1;joB~RV)t7wrsJAF#-AZyWu3V1K(WXcH(3XrVv*ej$65x2->ZU4Z2*=sm+u*5 zvDMg1Y%-AxT#7Z8S{6+Pw_=9BxB%bY(x%Ey#TlZ1v62kYpdyAMZC2r-Rp{0y5oB_O zo50Vf$6|YOUug4Yo~J8k_ECbT?sM(Ry7dc7PpSX3_X*oa8;pasoK=AKmnDTUohdhv zwfCJhssO~RsT z11%$Bk4wZ#z!diwperAncwq+&3KknZZW$Z;{&s>($uO%f&AA*|CiS+$7g@Xh^ zPLEi`CQDhYfzumoyJ7T6xMH3jPBtv+Mz0~}eC8S>VxEP}!JToJK9UJ`WZ`z84={ON z6YQh?5yzwcvm8Yd?wCt`cNrgf&AddrYYil|70X~NpQh+NolKMN=7h}#=t`+qT2isEm}0Oi>~)CMkXVSxw;pB5VrT$=Asi9t#RPk=r_+in$O(N>o~e zT~x#VL3kYxVLR(V;(=^`v4Mp@% zZaOP?Bp04!f^6A9d1F5aV2o)aq@@969Ehbe~V`;4rw08b$pk;D^&XlQdbG@ z%`UZk{i#Y^ZqqQ>6F${r@j}#h)ZwNb?W@<%?0@w?`yZOos^qa-W^60lm1|c39c#sU znEP6?Ne-~mv#q#Xjyv|ggJhQ1)Hi=zKeyM~`(^n?(ViS7(kk1o45MUizAXW6UOP{I z3dsk$uv^|~6rz{4pXKhV7}U%CaCgDz5M(E){|$vV#33sF%u`NK$P3|2>pI(& zpy5dOM+YC9(E0i2U)WE6`qPLjJB_$1DXo+$XJ%&}w|Z=X?bmPL+yDQc{wMZVfAiOyV7s;9d9g2l`j!2IO$hw$Z+^20c)`Ny z7Ch!KU8txFA{w|99_-cDp8xjW{*C?Q5B_jFhUDyF`2|RXH4pc>W%72o=_wIBj(>Rn zE>e=XW$YA|-sjIEm)=$vfQW@TEV2KiC%r$AyyfFot`jYwt6RiieSNpx6V@d>>x(bG z^fE|@hp_Kf)D65m-voJBmB0SxxAyk!Z?}6aZdrs&D8>l>e)HRJm~NywX#MWHw{8g) z2#U6DnUVzH8w5G8U%!eqcl+;~%`zN0I)km#S!Bec10it#fKCS0i5YcAPXPC+>v8mYY_5$ ze&=~u$9}o$%SsFY`~Lk0pBvy?SeA$>K9E#L(&>Tjx*ikSVx3>)*1bk*8LcPEy(w$6 zlM~S$yB9ZJxe9AtaZi9pdIBuQGRL^p`vG(B|N4LV-#^E9fJs#BU zD5?AHN4zcV3dv7nOeSkH0mk@xp-mS!Z8|WrNdutcin&w=<7D|qL(4!n z*z}#o23Of@m8-tk8fb8n)jk9UU-RLv<$={wT9jg@-?X~FRC8Dt&u5oV7W)N8DtMsE z&W5$gij3E7ILfvm0Om={MIkG+(+rnj8**I;{Fmd9+?jpWKI)#@*ZclhxKA=5#!|S< zuWeUCyC}0+#6;>`jg?U$tyD|+T(-vd7L%v<(oPZv3+QZZ5axu-YFIAe_JyVMjALy8 z#Q<|>3kvrWbB~dME=ybD2l(P`<>f1_yT*LHRBP)t$ z=h)b9Qk!rLay*8H*kT@)OZ;g*^?JVCOBCQJxqzv)>DVRc-ObG2r`kXDnyQvGOTatE z^E7X}&ET?5{<4J-6aq&8F^*ANr*h}e@O!t+6F9bIbZ6cAI_<3PxmpLT#KUI&*;m4} zs)I;t8r@=jKd)8l4;MV|?rii#{J}yQUH}KC6gcNv1K~aMrIvLo*E8+vo#}B}TGM>> zZ6R>Ie)HM^)k?CO#`St>W6YTqHfc@8jFy-iuvbvezV(oR(J;AAD30D0PurUJupRrW zU;Ul^zy9CL@yK-b5=}d0OklHzZ-SrnShD@PxAdqk-*-ao0SJIm#g~Iv?cg=X$FZSE7zfSK1 zxgLgM@8E8j018pYb6V&C43ttuV9MB@$u8c=?y2_=)0{-;!iXk*IG#_$)yQOjagR84siI2xT4tM8>1$`)KQo<_i^}+auwH+*}w>JrV zP+tGs+5?Yyq+6EP8m|Jb&r7P##afbO=vlv7c(e@;R@ zH(D(9jLBk&UfFkA4X#D!%9XYbG&~BH%vv^CF9AR?unKEzhxS4P4TL}Y9GDucaEnzC zaRrmRx@Q^UpFW@E+o!C9ZTdBiU6Zs@w&k(CaCRA`HR9NcP&VK3sR#TH+m-XL4)^}) ztE8b{N<5Ut4u!a0TuYl>sZ}5O1)tU&wOp`AGUpLbxvm2l$UQ~(T*Xwum-&$G;UcM46Da9V*e}P-tCw++C-9~qBFgn*CL(2g3&EEXegOQi z=2r5_elfh;bWARO-i{`DxHsaT4L!H_o^zloEd19ZEIwZ4{_SvMfBCCl+kf(({}=Y3{quj}$?0L;fj|t))XfII zKihz!lh!~;cWdD>E!hFW!r~;W7uHgoe}kNir|vHL0=j3$be-9b9;0_F;+&HU_9*Ku zS$lDE0-F{wgzkQOAFQIVdNyD*dXHOHy9Wg}xRLn<)FSJny75m5Wt&%Uxq z1@e)pI3nhC?Q424;JYgjNIC>-Xp}j|kps;`jD5GvabkJ@F~vx%4N-SkNDp*T#wI|1 zDon5AJxF$RxR@hG7Hr2zt+S4lNRI24;gNu{tRhFU7*n#O!rJX5O<>G@^{NmBj((J) zPivmu$D#VOBFjX%d>`9hTmjx!0Hu#->9(ge7`ti?PAR%_B`>o7*;$yy27K1iH{>ZT ziQ5UoP!rZmc?Mz=dn~@oYPl!*QSqwv60-hY{ujXy++*bqTis%JV6%(($L7uN$#B13 z!~F2Qr(l@%YqMt)-ynmu=VGDn%z1fjYdcxv_W@)k$xnYGrm|fRJZdzqH?jAk!163SiRD8UxG<*$=18sFwz$0)_dEPS;rfB*BmW z)lG4j@Dq>8BdtZMC$0#5t!TzooY)-rFdtgnq)iL+Jgj6j4J zlvaM~tht0&wyRUm61-g;Y(s{uogpitfTq9X7R7@sDVUYwK3R;V#6jh83P20p!E9hj zPnF;?EjzG~eOds5(s|%z(75<6Ec=o~3`XI?7{kVKv4qCHx53Uj7M{@}9v6Qe;KOXf zl2^8F^O_UmYoUu4eo7OKmmw@P(Bv!kXC&Z$9A%{DvS*&H7(W`*T|4vHO_M%ezKg8p z!@aQf!+x9M)W(TJcVM%ne}GWCIyk$E*W=zO)5}d5`0Vwa3!R(Z9vx$uSGCzlEHvJf zwzjgEv)n6%y&yR%HE79;llxTm7;bt?mkD6IN0w_7d^NS%ZwxZe;;kImU~uaxoa#L5@ifK*OcyBaVGG zS*KM4|IabjV7SJC00?CTxlLGzB7RfEH(-8+D=Vy*sDcyDxJzWzB!yjq6}eLeJ7(nM ze0T^;9$09da0S*X3H8g7*63&_#oxJNYU>A-3k`Ke%dkMUjPnyQ6rOdwi4+$gGxE=^ zY+xHjTO3I)<#o!jyJWoIqo=3X`Wcq6ZT%0xqdbQ#-B*3s9fAbUb7{8b{cSyzj&3PD zTb5Vuk)gcY+WGaZ11iiF#i}Op%sLo*{ryx}c2|1I9GP}TKpTDUpqcMofXL6kcw^sv z`<=V3KCTZW{eks&B8L*}J>fX^{>9$b6h6Ejpbdt&IS@-U}AHvsC^Pd7~A61T}5tazr<2x%RTJ`4-E0JPry@`!3I z3;F_W9QQri%9VJtV0ufCKvOHaDP@UPE^(q@lf16a%}_LXBFb=7Uu8+3M<{Ylu*)QrGlcjaEf5F4kH4cs_;8_=QZ__iY&C35;7Gks;!QS}UEt7d?`PQi>rH8_OT63nXHPd;$T+O-TN|V-i zbhbtlx9VHAw4I zj)Fdqg!&fo`@qt)^~Z1DpX^`#@>lk6e)X;W&2PW8zt}7ZVLgoZ0`et7sDHKz-vE_g zeEFq){16PUC=D!_&!4~GdKn6~0|`8Ql)B{%{c&p>YzRn9Mc0{NE@HuAEI7F7Qh1z$ z&}BK0kSqvQI@=U^C?V9sy7=raVqulu1n#i_JOFl3o`r=v)?lRakVOpbav;fBC<-ID z-aQu{F8@NZn;Y}38PvuyN6OF#{PrneYAARMx7$9&ZEaA;&_lOg|#f! z>=<(gkA0*7dyuR>K}Uowtb9M2 zKM$Y{a}S%R7uoKInAnHR(`h~?UCF~-s3?cWwXSQj-A3w`n9FeI_CBz%+@9%%i*zr_ zM;jLOXv%N}ZVBw%HM<9ZTd7cp@`RO6$_lyWBJVWnUx|qt$6kg*RN0w%aHV7qCCkan z@jymlC`x2;luQ0OUG_!p6KlW?*>@K`ZH;#5AZfz5c30oEh;l90T*>ru&sL6ZT(2Co zgM^N4lWYAsl|PF8cICPgPQ^GqGG3i=xg9w$AyYH=B`lX6fOC_y~o-`t$ae4DfONE-K@vHVHNpK;}-?1jOKd0<{a2<37q4W{2U!AtOj46h1-5P-?k<72in$b1H|O5|*`uCyoTbV~%= zsmInG0`z)*$G)bAjI3NZ-z}YRStU?(u*uw~h-Cwb&of$YSN8_Fb&IIlps_q>#?f|y zUOfZ%0t2W3pg@>EXS>dcrq+?p>XCUqJ+5&XR-ng+i2c+UYaA1&a{#d$hHNN?9ssr_ z<7fc&Bdv$g#^-D+%ok5B^7u&dp2xJY z9O+nWjAK{kJUkX)GeTZaf4KLeZQ<$~gfn7@HpYj>#Oea}J?5Yj9&v3@Iu)D>u(s0s z0Q=DIo_d3e5#}TSY=Wjf05Ozh-iNMqIOaT)5?ON*7WcRB-r2Wr-%=?NR%KVdP_|e} z_}6Ovr3M+X$9T&1> z7locHiWu9OghUgFqEX=7lhBDPRmdN7uSP*L^;#dX_%hgVY*6l2m{Rv;-7Mm(x&+U8xO!(&-iWm6YTQ6~~te13y zZRNWU2D!>g15wP|{;9zP3nmGD{Gk|h&~yN3ZUZOF2W`kc2WIvC-fts4$>lbIx=9eI zFZ@q$Daul=$_KTU#z~54<7sV{)TK#N0QuFjN;vMdkE}>`)si-K>67KY03p0)C4j*> zY1fj*hYy~tHMNj7>Rg{SPHASJ0A_V^r=)>2pyCA=0{0j3o8dQX>;5l=Ee ztU$jk3fwz{QDdtv*UNla)2BDJbG$eX2^1>M32O*bFPORORgE7U8s%CL{uLZK&M(#x zw(AAR`QGu)@z-p`%+)cNAYnfa`ZWl|u|H-=TTk}W&tHe|*@LCHsgHlacwWs0z>y@U z2kArPLuM1;tZjjpb4{<&3gDZcIoE5=x!IpAWw(9>U_3SHM;&^CI>i?EtEcNZxfs>> z$t(oc4wo=5H`f6Pfvvm)8sie>uKeb+&+Hk9VOSRd+9+1E!CLygmGPEy zd+phWS^Kec`#poSWD^j#NB`a1kM&GiRlZ__DZ8b6iRW2cC2R z_0%Z$AEHhLRLQjuPjI)$L%5WRR7UH$QoID%2urbuW6(I68swmOL(4i0g_&h6sYrG_ zCm}%LNmi`@Y+yZw)eH9pfe*?F5Rq0*DjxzghP$qlrflttdTLyV$@VM|DfZ2+jh)nm zz*QDh6cfTc+(=RX6In$^3~7KA2Yz&A4c5|dKSsNG9b3uG+>}mY&2SRQZ1)7-4n*%G zx1-;mWHbln!xR~g(yqvD6ktYqL*v~_0C+Q}#c^;o-WSL<>ESIU^PD;AzC=@ zJoXnB-@7}vc6zy)Q#O78W#YudIw{^pH2~roPw z1`~gfsl^}*izYsCWz9Wbt(R49uil7~@v$)_;S_`UrzI~YHsFX~lpL63k$vigo8&%a z*ZlV57!csB@8)8R3lJ4;6mR8X+$;O)^#uz2o~0@AFT3<4rltA`mRVk_-_{F~+Jng* zg7@Fj0ML&)wFEWxQr|1_k2VYpSTFx{Ci|J(V-@JTXOfbeY~3dp*&WGG<3RU~F0nrN zGfl~V@Q>e1^EH4=pX%B&wL%}0c${FD0%Wr)M2}8sHj89MFr0`VdJ+2TZHGy|-bGJ| zYev86{sK)GSF~Ns9iJV?Ty&Zi-IVJ}J@j7Zn)jrz9N?_DN%nm?`Xt`pXl#5bANV3(d3+7p{e|gED98!4NjttW4yf@Nd^cunquD5eyVaPbkXSQsxC`RC zA4S)<;mj$3X=8C;2U!Y^LJ*2n3kTPrds&-hGGquIkJ7%g&6J;AAW!|fNHA8rwgRB) zcvL%OY5Nu6(A-t0S#}#nD{sZ=o#~sfWJD z-Fam%W2@Y3EdoT2;7n1X=eG;juc!NPp4}7p+MSYZKOGt%j$d+K^gia66>u`&pji0O z4y7WKlE4P@qxMUvYo+YtzT-jXE?4RCKDg}GGQS1Nx)f2pJjKG3H=%#A>Mcw5z30M% zaLEMZ5Q1Yk%}BmeN<`}b7xaIIr3c$*f8K7=)$odcZLG2YAaZjr-Kq&AP6RRP33 z|N1X}XCidZy?`tFS7gE@i=m59e zU;o{&-12mDb4M@`Zi`y~1uTF2+i&fQFFyD7K#U#w<^B72J~liKZ#xgEIMD2`Hh}D; zK@F~;&phrGRx!j2e%SgFKm*Ufy|F)&k0KX|!8w({}AgDVHl?oJzZfBote zL10))J@pgaZ2>?bbU)udzd@UA?H+N4%O=14+AW}XHewe;hq+{orv!2Vgu`;o^#rk? zXMzws^T92A58gNKwn^~galK>_kMtw~^xPtRmWwYz9%G4NG1CU?=ZO|!fF;Zoj2HC% z`TUrm5%C&?Q$`4+|(`KN~?V#-ZwkGKe6|t%vK` z8ER2>u>fOE-IJkLYZcOUppUfTAQjA6gk4Buw1GrV_447P)l@7;#x0`FA8AQHdQ9#y z?~8KZ(VZ1jQvEGfS6TYp5_)%My$}q#J8ciy0sR>59b`LNJ0d44y(oMxM+~pG<;^jl zsdqefV5~_o0V}s$%dHQxBq?CvCM%b6DZQ0qXr=5Bd=M*1sulv^(>9jxvLDgDa&N|5 zmRqyeo#&vvKWs`YR}%G5zAYQU);gZN&_evr1L8is1B z5~U@?e#-xOPXWy8^|*79O>5?!gcSFwp?d+E%D1*7^r@Q~isxOuu^Lo@h3I^7Ig*cZpMa`cKXDE$mP~ePWOBN=HwQz4OIa{w zxhxD)KDc1Xto!OFU|GQ>26F|L*q~iOK(bh`@aX}{TquJYyI+DE7YaT>vZLJ>!=ySn zXry(kQ8n#CY|^0}2vs@S6#!>D(Ld$Yuz2-P3}1og0U~x4s~|9c2cnz=dfn^t0lZtk z0?PO0n6KXd?gU1@q^@Ffq!70(sa5qwRq+(Pr|`5UJ7mxHRXm9oje>WzEZDAx(n1G8 z6M4GU0C_WOYcGKN$sV5T%Fl)1GTfh{S5VJeQs2AnvRk_MNpaw=ONuewZv=iSg*4Pb zS1#aTR%7?(vJEglA3#qWltpLvK)W(0Wb;rA4k8La)K4E1#g3QLP2oJsvcw3*&6b28e5OK)chlNv*8fh|O-od@}kN&~W z6O4vieRJY4#ksL?Y^I^G6#KE(&|!rib@RJz0^PfhkM?)J`r7{Wzy5Pqj37M)j=}N+ z;OVjPhohGRz|jT1(<3cWn}uc*x{;RT?(Vs-9p8TYHWgRyUP$W-?xR?&sC#pOWl-mA z0P{?@LE&PpiLH>lc$=<~+Q2QG7M4_Z{bT$h+QZw578T7g?(R0;93AKw3V1Fo+epaHBT z=?}-G1bD?`IvJ0<3!d%cyN_vYe6}ezB5lUOiF;nYd>-$eo1^Dq1b~WHPLQ+#l**kn zfal`vCJ-~&)TNw>v2|oB6et>lPzwDy(xJ!-FV|ZDfdGJK0*hx}7FcR=zlVo4-D5H4 zzx(dpR=(%?F2;XoV;mQl2nAf{{R1>%Lr&7DXOv%rhbSkAZjLS5^7du}h7V!UMjM~W z-0SI6w$FF(-+N5unJ&ieLVY|W5tpT9&C+`MaP~IwpNb?-n#m@kgTW0I~2qDL@TcxF3`>Zt{yA9jCaKYE!0h*k}}KL zm?8!DV|=OJ?TY(V?7Q+*hIhb{c$cnZ;6?4%)7h%m zPUeEOmCAWb7h!zIdP+sNgG*X3y9hKPe=A){CHyJCG6^}cA7O9sOx)+ShXu0&%1ZEq zO~A5(OKkh!z$5Ua#Q8Fc0k;&M8J}<@`mw$BvV4C^%F=n0&ai!g;OF;YyRcyHEtwS5 zpQ6r92Bf`(^5Q|oy3|^cQm!|+m}2cI3nn(X$in;$zzL9v{TNU*iKn?78^ET1U$bD= zGRZ7o2fQ|DT*!X4Sup=k?_(h!?0y$p3S!G{cX4mJ*oyEl4b~@sR_oWUjB@4k=X1uB zi`y8_6@2JvRd}k5Huqox>|seM2Q7u83WB*nFSV}M1kyg*qgpNZpnfVLUlgtcAo-16 zybcNvaa{KdA(dL&wFJwPF>S&*k|ugjdUXewvP@DdsCq8LJeY1)4luLn#*2y&);yk*b|wGyaXHcAj_^x%*(qg=Y*Cn&}|LOn8te>-3L4HJFwq6q2OvUUy zzh77|IacJTsrHiq(|6TPdiFlZTm+taztUFIP;S$`(nXYiv(lrU%Q(?xPYkve@HV&O zY)S3A^3@WQ(v`Bh;IWn*umlNHoMr)iqkr4Q)SCLE_sMOvZbuPLG%#P@`}GfJ2y@D3 zxTbraH1!Z9kv`+w-~QI#Y?hA~n^nXG<0azs-o1V6$FV_xe-3v?2N3=3cW>>V z|Jk3}-~QciLV!d3n}t$M);V19YO|cY-T>swmoM$zb`31eAMQW;xcK-nEPr2q`IUX~ z*_YerPwl(S`UwV7fDXjLc}_~V%oyEG8`qu>#C{M%o-@IR8x_pLp? z^!mI5qwWSeV1@eC-~QU$1Y-i$Q775y;a(l@-__S&2eKPL`}*r|9eAL80P@K1h;e$# zlphBd^54G;Yc1mI(4S~?cVl%@s<6ys7y!^{>GO910MTu@f1=OO_ZW{aHt^~|gl+Q3 z7<>nGt*6p(rSikcd%P~uZ{KZW1^08y=IJqj569xjC}h6-E`hp_ z2fE&hX*ix?(`u)65X3}yrj%WB;diCU$A}dbcvbqDP}m%)7@>UK=~jGL81owU!13pI z&yqaI6)Joe#Vab_21(H z|M>s>@4whB=iU&A%LJ&z-=0wxoAP18FoaJq$;wlauCe)Do4{rTnA-L^F-r;)KezJ4 z$m3Gh%8G5Ykz1zsej!!NZ+2QNIrguDNLe`fjJp5wW%wi8(t^1Mm+gw5@6LRimtF&z z`%MikQlDzQ#6Gdh>U;(7%0HUE(XHmL;di%WDm_Wv>Oj-)Yrqnk5G8h1-Jm7GJ^)RC z%nCFGE@8#Y#IgTy>^0H7J6>`of_ow+5%0Y%*D#u z+8lqD!rQR zoyzY%J-;5 zuRDcD#D4{ONPvlB3Qu7fIWt{C#3s2FWEly{ok)YAFF>n+WOjy)H9izI0H~jB;8H?$ zuu?C%riC)6v~wHJ$lF@Wx51L@^aez>IsLEx%`fdg{}=yaTZ@jaKzi{!Kr3SXa2{L) z0g&Hrz{^1l`_$b99h65qy47d{*7$q%`ZJHwJkV_rpAQd_wj}^W~W18g>a9=Sn%{N@+v{h z-{YgZ@WP$&o3GznSW#{=o))bJ;ok*mw@$`*#lFY>;4!H;bjNfTQn+Bks=LrjVvTy9 zJzwXYKhJRfdE{Rd1L(^69G1upjBY>?7BGOXl`*7XhlMrq-P?CL$K-aXFov{D5h$ao z4j4B;dD9vRo-Ee`Pjhk(Fp4~p;hxzuBtWsA&i3BStz`f`$SmV!=91j$ii>_gTZM9E zC`3_T5G`r$;JH8f>6c7LvN&)7X_31VJG<=BJq0THj7Wz7sMO?TxRrb{{A9W$@z`*+daa@FiTTbODl9UIV67f%*=a zyn;(?_=H?v2|KavUm}s+X(WO4Z|(B@HsYN8j?2_gSD)kWras?K;52Yu&t@O}*LLN&VsXBJ2X>(ZFx{)Q z(YMWP52~|nPtBXIv*y-BrmdfS^-~u-W^~*0ky?`){Uh6z+s_pl<9sDspl-V*G zXI!>TveWjSRQP!~mk9y4ktlnu;4&>*R!7YghljQf3iq(SgR z_eSN@vSfKo`xra5CZl2vi3q{-t3UXAWN|bCY-8GzXcfWBPqhPQo4bmx8+dy6xZ1z^ z%fGSz&wu=%+Q0m>zp#&p(|WiMmq8}2m$hEjlV@%bi#WZNjHY4j2$xZ`5#qT(>;r&u zVws=6eC|Rx;t21U+M;`!j3w4eCwSR}XvEtc!V06A;UqtFnbumIG284^2dZZBxC#!(z%i=RLY7bqOtK_ zbEfj%Bc%$*!t-a({aCnTpHeejvF*b0 zzvikEp0zFARi&^}zEu1@I4Kg{ez`tH84H&H%e16>{P2R3HwU(bO1LZ+-@(5A_cdjr z)pHq*tPJoDta;{tP6H3NVg&N7%JBGJe+yhv?oT&ak$wUz2vFh^KodAaA$oO_H)Y9Y zF=f9%{bBs7Sf=)^?cSJ07HR~ky^e#5xpvnjR^|P_@AdiL`F5<9%U1GUUO6}3mZMRo z3f6|~!(1gazcLr50IXH&Uug>XJ@)}X?){^S-&mdTZpc_K1uE>QfU-}o;;xY)inooz9 zGVi4wp6mJp`}K+bm%!0DPI}#6=gMxJODJ!poDz~kFepHF{xVxdpITb>-CNFaaYh!_ zwa=Z&>)fKW1QCX7!Ywj9%KsypeO_cP6l|K~@;YElVDD?PP#&ZS=NLCB6I!?~!aWlE z0k{s-!aE_?X^;)c?Je13&*!UcF1LD)z;p}t>o$S;i$C~@gBiKau6@J+Uv1-SW5Q2G z$_%r=_~pN~U;g#q*j7}xfFT`ETL82kY+Yde(KxYW4-JOad%HaznP2jd@pYbH9%&gq znggg;uU-YXbk^0;A7QNuR#>>3dRh#)OK!sa-6oVbUu$l?u&@lCnKDKMDCn!WKGsXO zhMd-{vRv|T&R`ggu?t{zw+Yg4)BODN&rQ}Fv?WreIAFZJNkRUWX+##f+`2{k?wDf` zWr}npC$5EM z7sl1yvsY=c3{d=jqlCRx$gQ%2>+uBN0{-!1hFf8Hc}6SZw9SIKg*V5aD_XaEG#=sEBaT;fk6y z=ZVS`WIE>cI5J&`tb2%m4omT^yWvLO(wGyA$bW9bdi>x_uVmhBn+5y!K+AVne$h`W ziG*A+a15^oG0G|~(qle1UCWnWd=~MIo{A;b0$3Blxa>-p9xI*J{qc^cD>d5(eT}jr z))e<}@Mg+esaWE$WGWv?L@A!<+>8 zMQpEtveNZ9$bLAvHM_r3`BB~70C~d7x`a=pwp5{?BM6t9GLYS zxybG}d0YbP$OE&=rP^oNgg#bU1(BuCE`TXN>)Z49CN)XjmLF z6kkQ^Q*Wm)v{-s))Xo&p+;^}nn!1PbVAh1HVv@yx+xul>Aj)SO`(4@0@f(^KObpRjTM|p~#Xw<}lEExANU+HLi-Qoipc%DAZ4f#1op3w<)^x9;zV1WT z(`G4-7jZKG>b3KeqHMz)rfVqV>hFos({^8SSWxH{Ae-tV;gO|X>_Yux-9Eit18rT} zVp=f#+7&+CKDS|m6C#vEo}3tJ^^aN#i>~nP}_FRe)o7dgB;ZUX=6D*q<>GDT%ZYdQ)n>_yf zXqOwV6_&!fI`q*K?C@|Q@8PP|ZS;-Vh)K@pt!XV>L$c2`w436QW5Eict6Dz@D0$EY zdLL0*d+BPqj=Yle$=T*WSdZLFf_Of#ZXT7#(6YQM%ONJ|8(P5JMVlUq9Gy-apzu{g;1c|LmXtbNkIV z-#FMn-94tdn=_5-rrwqU=9Ef75(3vu#6KU7;VQhyz0=H@LBRt0Y_q&TfdBaMeS!?M z!N>O>lAPuiR+ARYuMS?&_REdW1(3G5du)=eJZ9>Q06ZLP=V&*$;X3HLRm@*lg$0gK zACF6Gkx%gU<~S@#9xwZymmOq2umAy|w8hfJ)&*Sv8tVx*1)R_{U_fn6v7a#(os|`Y zMLq80DHa@%o@seGM|>GcPfn+ZX9JK%?c7bWTQGXMP`!lJa0B^|1i@}~9 zErZX3J=WX21!+=@vy%m@vSoXCOzU(CVM;ak?g;Xva7hlu^XiPkvEF(Ab6#c~{QyOwI7@e5DsK5sKhOnQ zq=K^0;~D4PC*{1i~ zC>W<;xvc3)Xu-^}UvpsoVwVe37RRo0K~J02Sb2IDTLf*`r7 z(v)DpZO4;Us%SKPpG@k^t>bZ+_}kMYm%;89%s=|0KWcyVSASJ&Z_$4Gy$1))W<*0_ zsf?pOx8)F6Z60kBaK`shhS2n{gs9g=^-l@#SrP$9>(}ql_IrNVv#JFx8>@cqK-H(1 zWB2>|mFu->Fq75!ao}%6)f5^u|Kw{ zwdUe~YVDAljZN;DtpNE0U)~a4E`a>h4+0Y7$pc2{zCD3;CurJR{RCKRy{Z%7C%0~+ zKc1}hQ#&{xyigFFyS;h&EMCN=47r+j{ThEQf;CH7dYNn8D(+Mcwz!uRE(A#;(3y+& ziCWAjtR?xp&*omn;+663?2HS?TYUo0$5>voy6TJJnsa=i3w!VSE; zB~ZjhT|oOBfFMBp1~%?q1S_wD!ze$5{0HWT3^vtuD1lmIy9O{+tRBjCOD4_E@q1>@ zNw_q+Wm7Jk7HTfI&3^XT8#R>$ld1hz&h6RzLDAVt%^^ z%M#4103{KpA8V_-Y~F@jW`OiIt;LbvYVGrb<5b{M zW68n&U8Jdi5whUIm!ppBqs}Ey!4q~6o;E5bKEYBt3A1kw=Dd<3w&|S5c4zN?V-rfdSh8v2Up8N zx9Sn2eJfXIS*@Mi>TE*+Thv8P3H)JQ4F66Ma@aa5`CPS1NhOTyz#> zT93WF@+2VXV!CMeb$V`iLM`e2qIU;APwR;>>&hM6lBL!?KJ?$ZrpHMrEW*9Ef=hgt zjIErQ*Z?x|hwsYtpsWuy%LHV408M~Qc`*JdGe`gv$N(kJN0EZoT$uYXJZyWADV)N6 zE&HR$SSjb)^q#!{hP!w0MVw|e0QO5hobMOs|2y7%c29vOoMxySYzj{8MnEiJ3Sw#V0WyqeB9fgs~ndY>cC8^U$u3Z#^+J;NxU6k=m2@ z>h+%O@}}KpwZb(I1PO2YT?WJSsc|%&w|k@tvR^sQeI)DlISjYHP7*7Em&=hIZk`}O zffWowX&XDBh`e1gLMcFjq8HgGNV-U6LI`!fBeU8HIafw)+t#HYrAzTYZ!|Q zdF)|r_UmuJJo;OE_ubdQ?syIh7Cz7PNv-!7yk2}RMx8k+Z|SOfb9+qp*vLs} zjQd<%PzGzNygeS=@)T_xafb&7E$Evw0T`Zva((gT=kAsXpav#d2WNC=)w?G^lO@pc zxO$XzX^j0mgSe= zXf;;DN_9@gXY`2}IU~PdH(7SQP7F1;r6msA{l|L;W3D)9mP9(J+YR$LhIK6B7LSKW z@1fXKxm5c6ItTbOz8B8~3jhtM6XH)%7vp%2oSjiNl%p*z+dt;i!ITd?V)J5*tRmlQ zjo`6y&NR2GiLDv)`rB{6jeestX{CixF7)osjAtDWjGewo#aFb!t%FU)q8b6%Etzoz zvf_E?tkd%im`7~x+0(SB?-NWI+q#WVngLMPOh*z*h*&3<(jHomW8MZ3hAXS*?$TnnL;D`9UeaWU3U&Lx+|g3%=@hdVTOYMx};4 zYBU~{24|!y54Yfj*R~{9Y-v$Pw{5`E3tC)cbFqdTE~8HkVZ(R1#%fcm zl0NQzMO0-?_YmeX1O#Q**@^7(XuX zP@bnFy|At3zS>Y@Yx!>owkInkEDft9InnzGQrg-8yu49kD;qBJBpS^s}_H0Ars(ZKnTGVY1XZr4( z8AQd0ln+y#vO5JfFKePP(e=YD!B&omdhH&FnB{=Z@y&mwEw-hsxvixDlA8O{hP~Hn z)iG%{x6s^X`+3@Jkm{s`cXvW7^KO)T*Ep(QQPRZj`CW2Q3J?n+=GeB zd&h;i3r6Igv9d;m2Kw*R7yI?wd;7cJ{Cd0fqka4KEpuJ++-7OD%k-2P^sOK*>LHjO*djiiRnNlPF-jXRI#IB3a*PlOk;*_TNN($-# zGY7`qIdkUmkk-Pm{w(fh>`CWezGVKuC0*;*Vp($6%=79X(go|*(n^Ok5+CV$ihI1? z`nH!CM5H27T&KHNdMqn*5ECePDko3L3<7I8kFmX?tt#D`tUf$ z&+(XUpVlo?L7{%Ipke1df#b2{XN2(YuDNRnsK!vV1D@UF~-Vr zP6dQwW*5yj%tel`0Q&^|KA%q`^u(>Dd?&7qIX#R#q(~9-^3AiDzo!7gV7JAyK5T$i zgiM|aXKTMZrgQ;#z9G}C#sm5Zv9kc6FZ>?eV_>zX5 z7qIXAd-Ap_6Loks4TTvlopBtplx=ng0@-e6ImC z@m;@VwXA7NWL}qsqFOI8uq(L4_X;kt&2F-@;NK=hQw7*w+J*6UMxn1uY+D8>>ErG> zDqAaiB$(`I7LN$SiNS5?Pfm94&xsi243? zoU}_J_M!}C1zZjRbGoh@wQ{UYVSbg+=h+WSgf}z+Fb$l6x zVmb5@=(~FL5#&ErrdDA5`4c7Ru0_~y#(2+Gl3Q2sYnE2ko%8@wK&`(Y8vYQ9KxGdF z$zr=jvd3t-Lz{%*Uc(G6@J42m%ptyH^FQ81pPKWp{brCkEyrRCDf z{F2f^0!X&)z)V(mTPaEcQxnE2o)lJGf!4K*@2M)*OKOy4I##)-bwCear@G~IU`mS+ zjA9-hlvaYE$k|MHD;&-TAcA!TWklSVVnJm+vRnf@#|o`FQU-VdD^LJm{14wMP_ISU28VSQ16-Ucb`@)#_Gh)|8 zlCuy9i3rJKrFz6Q-aZSV9e^13L9RrQ=7<=`@8|g$pP4L;XS!&@rSZkf*IQ9n?#!-5#+Y)&*0pO5s1Ax$(Js%(4WmoH!;@8l2aC>~m^b$B8?*HB0Ur`4L z;&PA1^PB~gu8!_rx{V9;yN{V}rW}S^n|&Vkh-H=QULz1Pi!~8tlV#h%XG!k_q9|E# zVoWIxa=3ebgw_1+#?}&FA8wuxes08OKGL!n3GKa2K$>$pGcRN0Yg{SxXBr5)Am82| z`R?PJ`yBCw2U>wojOC2y2HUV$g0;@c)e|5cMb+UrS{rjw7{?TZ*}MI3q4Cc#n*Q zT?j@M!h+9R#&ha9@`Q>Ki-m$Qmt>Gdh z(j>l^@VpU*24H0Ra<2@{cp7#IP!Q{1V=~w)C3xcl9MSD~(Mx-``{P?UU;(DwKY5fBi&stL_$>KxT6vCtDsWiwmo@i}wo34$G$oq_(`MnZ z2$Yl-F9DHV2#RrDrWUUhH`w7gduKYZsE3&8@9E%|gCSFNoTrbu6YESqpd3-W6vRi{pWUnFqc1 z!5+C#09{JI=*6s;Z`*-GT{pGuB((Reb1QY2>U{w)I)ydWM~tXLTX@UZsq<-2^RMSY zMn%0FpQ-!nc}u$T)#grOpQ&u+Z=z+I`^26YD)XlC(Juaba_a^7Y|sDV^-BYhNiWKW ztUwz(roO6kqzwJ_li-pkJz1kV$6Wgmb7mdHI=v06V+guE-ECvsSQ$?(+hzc?*!<-$ zLX$;=5rcF}Zb`MA0)ivXvx3ip5^V;Tvb5^HLBt~0{!p6L4lh&QhLv{wo`I#LBAfOL zWUg$xNFyY`ad5EWNxbPoXQlt75P^X9aT6$?ZPphjWLbs^qQ=gq>uaCa4p{(|ZesNC z7%;Fn{gE>v-nbxKm0b&2Ld~v>8a9yn`{QY`51SDF?%i9DNeqE}C~EP{vopZXUN6C3 zJFGP>>>uc^&9Vn0X}H?S;sRnH+gLVqG&`1m*}p z6Y`m2tpc!k`RYZc=)ibanIH(G4KY3d_7L|80PJLE6sFyh#NKgoovnQ%bwf`Jrd#*6 z`ydY|Txi8&syX1}iXdN1%2H@R*gi42J@%o_a3Mxaq+1BLHcDZ=uZ+zcZjYw-Gl6Tw za59#W<8yUjKZtU44~=nL55SI5`SIfi);*MT06IZ*WZtd-w*V36wI^Ububrt|S}B*W zCTX?Qy9XtZW%3;CU%v10@nj-zTBzKSTP)fZ`(HS4xh1>lV_4HpXA(xmxP|2mOuACC zqA2hh0LyM`WPj#=viKdBAbaxu>>&Jkba1b=BS7FbUN!|~EI8rbi*`KZ{H2!x=j{0$ zX^l|s8?x3CmhzrG*GT|b%m{NvjUblu6+WR90V8EOIS7ODr<_v#3lQfhiNXp1~MQ zca@bnUK<9vteE&y{vNY_MQ-j@yvl#a-%jwiO4FVr_G&S*K30rkCez?Ypew00aWUEx}vW z01{z^1xxoV!ZjXuF0mh~8BQG<>?MVNYmr~i*)pvUH$au$s?c0VgJQwCb`cut!@OB-%@KV<6_7X-M_3}{y30L4aH#z<9( z)Vf|OK=!i?&%q1xl$HZo?tb#cYiG>t*-rx};rLRYQ&@Zb#m@50%9AVYa7BSJ%FkI$ z;vePW>^3aOkOX$zcOwExX$1>~!J3Mv&%XG46HZ^aYiw(S3AL3qc-P$JzRlfCKb$t} z<-2?P`2M?1fd1h9`u_bpT2ncu0GtjZkvcXBz^MeV!G4QJL#PYa&d4o!q~NDi39x29 zcrH!G*3pd>?G+51TpuV1KYR6N1M9CjyrT7jnKHl!EXxiCIxR-5rKjiE+ULX8A6S#% z;)tscjB|v53m_J8lcC_lChO3dWG$ZPol3CV+d=x9c7}=PBJpx9^BkRSrpK zLG1x70XF=PF3r&gopa~t*Jz$eu^9l11YESP$2jdw6LQFBN8Ia8#)uBZiFsbm)d5gX ziyxlr_2RhGyX?W^ZtwiQ3khT}cHz4F_U+pwL=ppVw9kXThA{rz#d>L(yYjhQUaff= zo&$kdSVWhMi9~+_SZS*YsarAwYokff0qauul--{0M+Fo|oV$5QGM2gV=n-8EhDnex;? zZ1EU_h5W~;um>?&U#BpGO7^qgs`XM?9$*}T%wBU}VuRdISJ_tN|0bY`joy!qF_;3G z8H4$YNRcSq(fPdgkN(j=S_CSq5lwjJ7mCVp`zlb9mcX&Qkk?J`D)+s z=KNT<31Ifwn%OI2*7pKJ^SsFtu-l~F*pvRCQ`AWnkc#Z*7bQ)JGziynV&V}Z_>uWr z1FPo0EY`{-`BB^@j_JGNE;sGTFYN28Ot1tI^9wUe7eno=0Y0(A%dFinsWj?jl?E;8901t;YQ=@qQ(LKJPXWqb?u=Uz*mD6*DLV*Cx~z(cYi4D~C{W{kEp>8D z^hyiXGR=`}L3ICl-Ho?C_n*LLZK=|^-E5kx_4ELzaV#vZc6DpnUW`wl=Kgr8_T3sZ zlos>;kR?M<_1G~_kH8gZDV_qo)7loAcnJ8g5ZxY*Ok8hl+MZ>IG8to#)(e0emcN#+ z@O>Q?MF5dM_??OIt2fILMMJFxf~j9oDLv3_S$fXtQG`y7$<&zB0FHBXGvOZ=6)cEfpNs zhqC?zkxoksWPqLS=_fpAbn6cO4(^H@E{7sR@&0=F=m6sFcki6I=Ez){o^FY*ot|iZ zYxhPVAW|52FC`1=iD^U!rmJa!nKJ%y z30#o1pd8uHxM#T9u9*uJws)o681-4QPi1YpC!6l+@iE_rA^_5m_I^@~-yu?oX#U50 zrI)!kT*lo}%y?9k8vs%3!!t76Vw1&Fisi84MSq6HEUe||Ph59%Jm%Vp=O1Ym#Q85b z0FORO4aZ`W~?7#KyD*lj66=# z@*P4^dKplin3i(c2AyquL_2`_8pHerqmc+vMmjgN=Zu^3UrN7E8$Fg(syInchF~ zyE4gE`5&K*!E}iUPyYqjqwhIepLCUIlugCV*&DJt`XqQP>!WqxYPaNDgxJ=6Rw>~SY?A}cl8?_LP z-+doIrqYpUaA89ru-s(vSv4O@+=@*alKr*~?wSzRCxlG<0~duvR0S;wDS2N0lkjU2 z_=d}#u4(f=Nf^DJW77h<6YVcS!v3Mx&${yM^0>5*wfyx@mY3FM;5EDbl`<4fzd&aj z)MWmr7s1ecwh6R$0_|`KESBHhm<$6Gqh9$!j6~D4$ec$!LI^gpY^_6(s{(!YO&$NE zKUS5e3=mzT7^VcIyKS%O$~NtmFZv2({hrh;W@>?azQ4N4pI$ZXV%%i^rnd9S)+|YJ zW@Sk>hwVY^wK|&hC(pSCKKSUeuiMK_Ab9ioB@0#VCFMiAEYH3!u8D7la`%hLVpGNP zucrX49FqB8?<0@dmAifKnm`G^0I9s``8iz7?RbGF!u~O03`Oo^ z7Rl+G(b^I7NGzzyfJp$2e#Hi1SAx1(XB;F+&bGBrKq_M(o29F5u)xl92#mM555|ed zZytuLU??mC#KL0b?w#xp#WX6NhCrHIAKjvOWLrdex*5reS_+u}k&5?2+W^!7?1pP< zcPl4=@nIS1C1h2S0t@Zr*BuYZ)EZzS;v50&#WQerCBiAkx0pZ0s_cM)47(2K=pyd< z6#JU_B{g2OKHNB{Y6Dd9UUGnTr9uk=p96sj+9q95*&bqI789zsH7sabzubR(@OnC! zd=_IYNQR<30JpHRiIw=}i%6$)pj$B7AmUv^$#C?3CxC(*?(MAu{PTJ67=)riF|UJ3 z+8JP(UI$iG?DjB~b6DKd3q*1v=dxQ(d(U@y=5AdUrsO%;QV6u*$}G3rvsU&s5vtrGhPUUAWSSdwl8S?rZqIj|WJ^)UCI~1#AyHY8E z#%Vtni|S82ZQS3h(1IWPhBr2B?W|wya?HqdU0r2SE)5E8a*r)UKY0wAjhg!so07E3 zpBo$9W3A@l!JwyA(?RB7kDUc50i6k9T2CP<{=F10+qGXMxp}`PO-nYhc@y}Wh4ahp z(-8F9`KrkeAJc88wO_7YT?Et8m|V-Ol^}ONyN%p)viFqn6{T$DR#iA`ZD^g9^Qn#W z1Occrtkk+aFsUr+7b1$8buoP zXE)H)x2q4P2tLLO(L}n75VoPqmk&KbU(liaKi8At5F z2eQiId=M|W74;Boy^6h-GQ!=zttGioXWmp<%urVV%QN5O?>>C+K9NNm&$uNcFdmMv za->Dns6)es2gL{>q8a^{GxMmduN{Zv~q*;1->&95y`GWVzIafy6-HUhmC8=ZRSXG)r)> zmv;k?P4O%MmI9ezwfYk$Z8*wxw##fE)h;>BT2J93OZ}9arxbuIbu(eVg{Ted+tm0?UDrS7_5hto}DHbgjH-8gp^EC2a}Vs2eF} zEeA@MP(4>-ZxO7RZo1yWbxS#!{QhgH$5McKBRl2eW6`er+kx1!r2t=rd=+I$8u9XU z3SbhZKea-*mQaGb1Z@619tI$<7SwQg>rP}4;INO_xU0&pZu62ShTH+z6I|{wW5E;x zCQ-^Vey1m8^)E}&7Gk*lNNZW_bfwH^MFAGN;K+sOtDkfyY)VV47qYI%e8T-_l0G78y60( ziwZpexeqocAq(=Ov)w&=75v!Ck#4C0Fx~kW$}qa9$=z+F6In;7gG*lm z=F#SV{P+LvVg&?$vQ$m22(he5to!0FU|S;Gq_R0z3wfo7|P)nmW0)U#4E;V zSPvnKdfeQB>uC?ST(@wZdx8jG+t$cS84R(^*=UQq_JZ&R!0m>yY5;d2fdSxjA(Fzl zwXKY|FVKptTN?@6@yy4~O7!w&%n#s?!9>6kruLJ_RpGcIR};Q zYP=@N8^AX#L?N7q@QnCTXS$`;3irBCvX&S-05`B)!8#_lQny;t>Ie6AkI_7xORmZQ z=+ADRIf;#k*#Lf#zQmPi+y3vqdm9$gHgZCS0$^C$F#gaE=>K$|?U8OqN|{g+NlDtK zbtht%gY3vtr}VJQY7$0%&j6x&rn9mLGiF ziHI(UrMd-xeLMwNd-M4Vw=BMW``+t-p%X6TtG^%b9FRZwSdbg9($t)2rNb@pOaMXj z(Pyt;dDuZ%3s1~jx|M5La~><7blU-{&N{(Diu!8q-@}rr_{SD`O&5?UrF_y;DdeuF zJU7}Ov9%BB!hUYycKY$-L$p8I+XDQ<71*t`XR<{5y0)fL$`v9D{S7ErBHr~#FfSz% zM1L^%%3Mt(PV8z#i<{CV3m*i=n60 zcylxa@Bj=#H6Lb8L8yI|K~^rZ!VSe$7TDqIIYAs@Dj zef(W*b$zd7u2#+Rj8BP>KZ-3`Wcx10Qd?~Z?c({<{_?#EnO8)w2CII{^|$<*^__nc zvy(cNgFvF7?Jb!M^z{eIEY7$~|6Z+_h`q$$_EKCisG%vrphhev2DaE^rA-mh&n5d+ zPvNSSf6LJwpy=Ooe6-sbY*k3z3*&b6e%Hje>s$Ne+1H+SVO`p3Yxa|*ap99Io3#N} zhf!n%!PnY^{Mz$HIAWT{IMhqvf^4LWVXe9*5xTNvG%djQ-KS}gzDSq7zLcd>KL z*ri@_+g+}Z^~bJ}+WhQZv>IE7@!h8HJ=@}H z+4-2^_EjvQUGIZl;-06Q>|U_*BVyfpVqkI1%k{DMHH8@m`-NZx`@tyr!G&yql0&AN z@aL>!&9+{xD8m}q(?yL;s0ox~e!Y3~nZ0`bCS2N@lqh3PvB+2YqYVWB{vgzDmcb7s z%?QGen748RRqIHRQRCK!g|!iUMxDYXb{&?r7Gy3*##6$z7Z#B7NimH}j> zGq>0s2;fe1HAMaH*;b0vbl}ojTB!7%uxUJ&Io%r5cbp?ORqvxFZ;&;~;H-smQdU?T ze>_F{2~T}t5!VQ|So}o}!}8u>xrWkibpapeq7NRJgHp_`OIpREZO#ou|_7Cnq0LdX1sTayMTB4G|mR-lx+!$9j74l))^f>rDOBW8X98-1NMQ z^agN{vyx$&?;gebMp?{c8Ad%dkM-=^<1x>_VQj3%1i-#nURUN@ZB!nKK|RXbQ;8g; zaN9eBz}YS9aHrj@-gplBS#uZ9igYJoLCoBY=iwZcU0^w^uOaUw=~55YS-BdE zSyppTR>xIygX356wb&O-#PQBY|KZsvGulSENV%BDn#quWeBW4AC~!=YKR`?WfpL;j z%7&t8N%vh}FEWO9sL$kC6Y=A5L;RQNn%HhofJugiJYBLhbOB5JVWV8`$8jFrWP1gd z+Gxr2?~?y3$&W0Tzzs53;X7StljsN7Ltc}>Gyt@6jjiso^2*dF&&dW!#bkW%+NVAc z80BMp_cb8de-C3YkL?qAFomkG2)$3`XvtRG-E;aWf*&R+y|8Mk;}myU&DYQ}C`ecF zm)JOHE(*F0kcIaGb8NcER$pzVC}~Vjl0Z`T5UAX5@E;%TBW=AV(3<;HFo~(xgr{LQ zQX^7u)|Ksd99#X`HT4O@z2ov&-P&|id$dSo{k0Oe;)a@SV#5lUf+g$L3y3SNG;YVX zlu%X4TiR&fSkR^kTiPJ5mEbD5S!Lp_@;<{oZU{&=wbgunx?bftXWJ5phEOcQ(^9rv z*M7CnnmrBdWL0sZhD|^@6QKD^$(clhK;ZNcNxZ`iMb^~O$FlN-CUpqseH}z8eZ5|W zr?y-GO8M2Jqv4EwsN=u;nkhh5^O54^cYC<8FFt!SK=;1*94|ovRfGfMT;t0&w5}EW z^b2)SkB4SHGr8=g!2gLpw4&_b00}alsjODUf+b+my0Fp`Ve4Ajeb+|&{e6t*zMJm& zNZGrtJG*-8g0+lw)hTOGFV*)p=9K1i$ivM>il+Tz%1zJ~6sQ)ayx4>WFNX+J6l*wK z`U2>{oe=2@!phlF@T!{RGf7Own#eV%wX|MZm%tPjJAkC0{qdhnK-pd4Y>XJ?a?BId z2sXwHetmdE{Nh7ea^U(IL}CYb6J6;tXav`CA#?%|lFmfBiJriu5ro64f*N`5Ppo+v zZ`a&P20`-iUBv65XgACqsFWs3vfg2}JZzQ=2=``b71F!TU1qno2I-EwDfVtk$^sDR z`7ZC}h8s+>(T)eEq6pSd5vl=T==rFZld`;gVc|6r*3so5#*fC3gNPn6nE*HdZZBWG zwD+5(ODSyNc6obq=i@@|yxyMMevf10*uZsYe-Xe5AnN@V%%kB3iFWtRlH=Rs1kW6k>jb9U{oMLI z^l?vs^qUdOSe1oxQ3pG($n;?BUX~!{`tbN+o6C`A2=gC+5bcVw^x4ZdUe0g7eQVEN zY!=|>N2aQYc^#=>MxF6YxE)8V?!n_ZBYrc0t}JGX_dF~CZW+$+|9~+SIVABP+AkCn zLunos;27rsdFb;@wR8U%02;HYhvM7gUr*;;C*^{T&E3TNV6b+};M%;L4-ZQ!f|k^D zS&prRsa?dlt^z8y+hZ`-u%5f}&RMV{rHjsu&LV=%pplDXkESeaw#G1vq)wMl-LccNX{Api3?NPoaA>-VKKQ~07O zBLxjti9HIzXxoM838(mZBK@fVl$$V-$$IHKXS}3+R;-y5!D@YOyW(y7W8IdgDpK~> ze3!jw&1cyq&Jng05}(*&wU3?A#k7Qd%6(b=oA+^-_zhsGL4pkfg$z)gS_=>8#TO-8 zWm=M^^d#77{v4Uv3q#ekVX(_bTx?g#AlpJ48J`x5Hb1S%xjnymv)d5GgJ?yfcB|*N z;ku$b>72%E*2(QoojUX>Awfsj;fpTvL1&h5Fu$aM%;jwn8v41YzE;wL;b+7gGYB zWyHBeU3-xodcI|&J@~9r2Ql~R+uUEqGPAuXNO$EI>pc=u-#rVhaU&CE-vhlR+oTa( zwl>sr9&szVe+{AC`eE*643H2$y>h{j(+X;o18JxInN7Djg~a@Qip2@xz=yR`a?byoG3 zyHVzBWDdhx$3C@g%Q?5IKLswc89D`xZX=qsm(OnUREW7d$8CnYs1?WP_)GZN=TY1* z`qT3Ki$5<~S*Hjx(dO^py$fMiZAJx&CrhV51_1|TGB-ERT);k3*#s?o^lS7N+~Oun zYpzv;d}ORPQ93;H@BhP}(>*%c<;=7bS_`~+)}f&FVa5JP>j#Q{ytNMxARD>&^T3{} z7^raH<$2aqiP;J0oyFB+Ovr-S$U+Jbu`Dg)ckjr=*(_qLAhZJzx!a*@=N3;N0T*H% zzxC7{h(Fu}#I20~HFf{8EK8PL31Yg<{hV{(5gGZ2d;q8fs=BIMIBB5>$ILI_uzrS< z9FPMF`6Zb5sD&cz0UyF1P^639UDc3AbrpaD5=dl5#C@LQZnoQ&>RP(h%>CSmOeCr@ z?1qQ?akuB*+qUV_rMmQR`-CUbQwXgxD>K6*y==^~qyUvd6k!X2eVZuK;^INHk8n?T z2^Ff|x*@(^7r^x>br53!fDPfhA&$bZ&Go~x6@0#U@ywY)4_8%AUjYW`5IhF3J(dt) z52v07YlPf6jHeL%G3Krf=iHIC52FCR*t|KPDN;N2JV4glbU;M*SdI+YrsE*^jL>*lFCeLotU^Eg@+6hH zUrA8?~)f&z%AGjDH9GarvTkG&@Q$o!Now!Y~}d>NOJ$kl1Od$ zCC|Y@ptMHIP)dI=F_$TfM*eP*=Q_5bf~@*?8cvQ4IC$)wAM2L38(SaS$Nox( z^Qzt=n}bemlnEH2pJB}4*1gUAmVBa`m8%K^v#O@D#@k{=@lJ;>5eVZ0Z-Fr$QUTa{ z=Ddmp?Ym3p+K0f!M;a&3Z>eFkL!~j-xrBuIZyfa6{IR6L6Zf1w`l@v=-GH!osXRzM z=XmEULF%p@vpvRn#{Vhd-(!qUMWr#qRHJ8*Gvy)oWQrQ|&~$JW_XeN=(=>5@5*yHX zE*{EvI*n+8KF(*1ufp#3h)jTD>_U{|SZ?eCgk@Y@ z=Hxk)5|r_?nU`(*_P!BFQKZB~BhT~Q6wbKto@v1t^&FGY4xab59v5>SLNyZ%FTLbr z0;t~jHp!GNRB=V5L^qyO~>0ri4;z~FWB_}TTuIL1Z16KTa1yw ze1um|35KF=CbCV(tUVckjDVklP5~kh3Fv3miF7fSDHyO@)*=n`!TV(ywP_PT2#|5= zjeOx@GbjzEWzK(yEIohz)Sp($3skP=vYd4%hDet?lOEU}lRE*hy)&xI9AU~I?$c>_ zWJ#JyYPIX{x6DoTv>mk39CJSaa^wgSobf(J8@q}zpYbXo)XTHQ_h-Y_kN}f8kUwR~ zk!2Y+1-6$kS1Y!Pt}UM7Q?k}z<-L8+;Ve{MHP%Dfl_y}vr(uMI=u;n&0CXH=s47*- z)2Yt$iT;~LADiX98uL@k|2H>>>?`EI`uUjoIxn6-i@8K)i#UHrIB>JiKmWYda(@Vq z#k*Kbh00d)N1tK8>pPVm1d#+bb8r7+L71%aFiT0pOtDj>q!wWkkzf1ISVWZJyK2AG zr7)9PXJ;hk9G2$4Rg_RFdDQRvw?Rc#p|1TKB#-VIt`kL9qk;4NSdVPwM;k&NM)uO< zmz9Hw?^UOUiMY8h(cE~~iy$+VWVK)b%A2t(&UyhT@s5Fw&lPY2SVB&Dqav#h7lzX} zTiPQn(`^e-KDNhx#gMK0$vt%$&8_Tnv8$lQ3ZRlbTo_LozZHayYifB;w%hv{8xiKT z&@9f$t#{kqU%NBA}5t=);`yT}blr95kg%^7@2wdP{)T`S#B8>ThWINoroQIO3 zGabh`-V(9aJeP@m--_rv1dFr#G4Fe0=c+l^nfxf)XaFox{5!^EVHJ7?T8 z!#FAX=Y47%uK|<>Gi$AEldryc36z(~4*%PZk>0I3Znn$*yh`Y={~4g2fj_aLQ>95s@Mad9_tXFUzhVCKf0tY2vo&c!W z9%zFzL72(#gMoK5L|}r^yfrzZB#?9<*tjjF9NKD(BTjLq8nw@nG{D86D1Y*hVn}hm z05peVg!Y|S)&k`nFrE%#h5%fkc53FJK+md}iN3WzSUc(`3ijw)-9Y0QS!!o zY?(7~2(fhFJO!wWQ0WL025^b~KX`~T`T~9KZNCE4SFc_s^SzY(LG?XO3EMbZ3-Kj> zA53?Ywh?pb%B-B1@teYc(FX51#`Ih`XUKTZI;=6JmFKHjD%zU$v|WaHPan=wiYc@JbJWs^Sbn}Mov3!)v6))8T?3rO;Yjl!0cR_}_sUfE zolcH@ieW>66pNB@6(U=e zpnk^kBv_;(TUku}EpS;wV;L6fET$BxM9af#f<@v!B>~wB!{VmEtM+!SEvQBtz^sIC z_C0vq2AEwgkNhGdy19SQyyj$vSq@M#_A(}%$M-$@jb^oNY9*F_wPK*wr59uH;8$Lt|Pg5gt4Jkqdd-GU>vjFR)o0- zTt-_jHTTZ^xtF~^Kyu4-$n#1Ax1ML)4asSDQk31B_%b@T*VHy5R03HF9*wowztaE{6;NnwXk6;jc$a1= z0xyca4CdSQi96ZUZV5>9wE>;mb`&180wA|+>O#O_d0tB&If!;~zr}0Zi{tl2@{K$HO5V zLfC24ksI}4WA2MN3HR*?QxE1Cw8Ia6_#+1pQbvpr#yKxyl;>DRejI`5e(bk)v=8&q z>+~7x#5o89(Bt|FJq)(Bm%`-~1|j<*BQn&F!_b`xCT|fg$h^lmZuI%h&7EJ}gR?jU zQ^zP_F>{W>JY$DD3kTpbgi=~4db%2I8sR;2tFWCjOdJSPi_$F%!|%Kf>G6;ur4hm! z>!2J&)ZUDF&O?2zWtchk3)Ne-Chq+oeE)kZd-L4H)(LcG>V|U_pdmio~`UmWlvublsTSM&i;V?>g3GCj{DS~stwzv+o+1t18 zVq6p;_H=E#^V;tZ_Xr<9C0O))-YJ|;X9D1EqrR%bJr^>~imU>gi2j!tlEQVtt}C)( zgs4V)A}sd?3dY9+`)493C*bnj)Ci5m4*>UYygYq!mwD46xD@4fVlJ92{c5s<7Bi*% z;N0h;o~(MD$`i#4z|&mK*+R{`jmQZ^11QBIYCD^sLA(?tC_7wB4UvVt4i>Z4 z!&H=_%9IEX2wc|CSpMyKnNp0cdM{XZtfmuRh_Y1VWvPbYZBlT}QgBf|ncH{>^zz;c zBRQ;*l9E`zvv1LI)CZpUCbqYrWqlW8X4?>bhtym7Y?U7V`K~Z&?zj&PUeV1pBo=_P zdJ`n}Q&pe$=h-{_b>wpGbkH2fV5-i(1Oc|B3tn{`Ge~o*z z<(e&5uH$Tn{YD!N&xh?z%d!XnS$|}mZ!k8Swtplvw|ZmNe}@vnHdg7IbFPa*-ZD3^ zX&cOPTX1l3_I<2BLb)h`U2ep^=V&RSJqa3&eKbdlwrQNVjAJ*@xz7lpqTqvX%&=Dr zgDbE>HJV#KFswgzE$xEE9Q~_a*#73Bfff(x2Nu%yexNse=7Vv+ZCw8-Z_@Yx36vRa zGMKYRPP&Zg{XFL(xY?KG`niOp`qz&?o%K>22Ff?#f!XIn%w?WW>p1N8(;t2hFnWDf zwr$9DkG@nWklMaYMSz7y-hswt3N?(IDjgh(7Z4Eguq_H0%-n9_19Tf(5D#G;U+j!u zv(gN$jH4Xm5@XW1Df`TMq4ON`bn`vBc*^sUTC#O9uyT%Exolo?;Q87LvZ^xY-(*Rta$GX0Q>2Sjj;F3T9zun$FarP1dDK1vhMp$G8 z{4oCFei?l{_b}u##I#(?57+ts<%?JBCjzc{$+=682^sh`j8zJa3R`sJd}S{mW-n}F zXBSwRnX9+>xr-gsz77ndY^pWT`(Of%j*!kv?9tB-8m9;$)cof;#0WiIjbbpR3q?0# zZ1d{0ALL#hgSn|=%$c>RF{cv7dH2!Sw#MsJuHQRoo+Iqm*&FsB7PPgO`)DDC;=mAqbcylQ z7`ll3P|xo)s@tyT__u%iclO=yentljL2?i9a6ZS}J8?b>XH(oW07GJ)8;|?y)l(18 zojsKF;EZL|i;S^~oVuk)nGrwVhf{_e1DNS%i9FsZ+rhyz^Ei>lrvZ>G z?nMA+fc~hT+g&sY=Y;Q_k;LR6b>=W#hFM&_DBINh1kY=jM@Mbe70oChXQdpkI*gxpeHi0 zxGvbxt6dF^leXI03m8h+-LSV6L5PYDHJVWNItU_Ffj~`rX|Nzn78eL%AAA8^K%nV= zD<2b|!DbRq_@h^!r6^0#>5W&*m0(*EXZmasE;S8_@hlZ?()z+ky{uQCj_sQ5%xx+d z{k>l@2Xn_n>Vo%InGM><%HCjg+r6j{*SGRrt0hUa{$52E3s}vnCcBT5E_8QijCF!b zmMf`1vsZ9wSC$$Q3vkK&OJ5gW72F6lW_&Eo_GqBEHZEFHAfgJ>)K#`j;daXlhHta) zegO~q=BST>hjFfXHeKglUfhjODg|7&D*!K9v2rFuwRITX`(<;@8<5^M`w_s9Ay>i= z__Aat;wHAtmD8~UAX;u$nTIxww#tI+Ei5dB&pA`I3?O+iG4#uiy#ipZpP+ZU@c{Xw zO+Ad~Fi~V61Ye}S*sH;u?KXP8@mh33fvb8x?4>IA*z7ePP`mH1d{Ng;Ao7u+w_o-S z8VM2g?7?`50$4n~nd~P&_{{pQTt>WetXNCqQX{jKV?}P}vV(*pJXS{1V0j04igTRk zQJ=DnmDd?Y#yQ!dzebNbsIt#Ii)d7@gU=j_q7DaKL5#2R;DYAUayDfKv(x#7+6E(s~3PD zzq_%_5KJt~${2h&AA*rtjp`E(>m!v$HI5hM!bLY0gE^L3zGml_a8~HR8}aTo*h-_b z0U@EDvq(ePECAemK4%!*0SqUfPc!eI>b%3>P?LQ7=56L9x)b0O<6O}eP#L{{xVNQ< z?zlm16gEll+P(fJ761(_u0}i0=?GDHVkma1^hNZ2ghd9}Mi?&s_VCcmu^f4qn(H+K zNUb(N?vXiYMM<~RKa^w0okfvMXKz;U2+#qipQ2u*Nb2WJ#t{r()HgguElYy4GsBYw z)D8^KoEhHgwM@l=H}!ju=aCI1*_eY4sYEJq8^4`gdHg0qPMKRMc2;u+#!!HTImcD7 zf#>X32Z98$;qZtyJTrIIOWw%YvyKm}@8z=42Xs<7Sm(s%Fot6X>@3RTSb3f+UoVDw zI1M291F;*9_?UBjTzp8U;hBO>$_2)Ci*dVUezBK8LFg;mtFt5!fnGQ-gC$h?FR`5v zlltsCpE_vF@Lf9aa9o56V?21staYA8=sUO?tl0>mHQ9URp5}8|O1vsN(s>;cq;hcl z>O*Q#e<{X~W%sQc`hf}tFmTlv`sC-YUQoA#O z4(NOqo?~7^6rc#32T0*ssK|2M^_UAHEEZ%?)lA`cS*ipilGJ1oE-U+Am_U(^HEb4( z0HyxcXOUb|kY%1_+Y9^%3svx07hxWf%CGex!hprtkS(^#W{O`_d#ee{(PPqcB<3xS>jvAD|}rsyvAjf$IWq zhz6|&u)<{Vt~!`nA2$R%E-A0vswJJ~UEavUgvHIj1T<{L0NDX3g(pN8#KUGNDN=|< z;L|EJl~lV81G4O2$>Ia7TsQWr0g=`a&neHZKXTq>5sO;E=JjLZJSUSw=E~i<`(l`G z`e|eIaIpt^)%X|-V+~EQ#IZOBauu5_oqqJ`&deFyK~VPsLS%P>)Wk7+z8`Z z#F|Ptz>WSMViwl>h7rx&OTn^bgk);3dO1+`Kcq-J!lEr7H2d?bBT3^`V^%<92tE8m z7LE2L<@(hgVI=B;5T_BgkFkbzKmXBBoVjc~ z_lyz{yP9+JG_JRs)jMQS9}_&UPD;SEZ zjp*$;11y<0?D6Kvu;E}QAm9Tq<)UF0fE{d5ut1Z~$?XOuOzvztPR!BLv%^y4#=#H@ zwzF(Oj~~-WMT4Z7p;?4>D4KbrhwLNL@3J}W4pkaDusBS2v-du=U9bCEl))_F* z3B9>Vk)`gSV_^-&g+gSZ@al@g1P;oJm4I93G`3)$@s7Mg4%TGDL)G(~>^A!3t7}D^NO~Bf%=79b9dAIa@wB!&?!;H&e^`V^O$nH!8Qb zyw4+rV`~?LkdGWH!-mm$MlS7auiw1$z5rK1sK3Lr9XYr7{o#QkJr?2JU|*xO%ED4C zD{xuQ|G=^G;XcG^&SyCs$PAKY1iOj;LT;zV-qWXd9`-s>WJfu!61wUHmN#CC=GN{U zu#UV}cQhQQp*+rOYloWeZ39SJNek(g&;00)k;a+hbm$FQzb5HV!*E3SdXemPYCs zz-F!5P?cnV`qQ7b8f^%Y2q|urECPXqbhv8&i)5;`Ftz+F1b@77MPLbg=)G35*x{Aj zUtunHHuUy8d@P_eb1gLxh^O@3rfNsuRr~lhfXqqAxRprNikA1Nxgu{G(bwqQ%@_T0 zg^P~Hq9j^{$kvVqnA~?f776=spjf5C0VpNzQ*$o?HsSfO>q}b)@@8O{`aJ$OZUTTz z`^a($y7akk!JBO#SYa9PQvoPxBe(H)J(iB(lT=}GWH4oEgAL%i+70FW3X{+aZ?p%K z{qlQ-2oL%H0&Fmm^)By5Ud&)w`p5A|zdT<}y5n4U4Q=ESc7idfsi_T>ZzD#dG2uNQ zvc0GGGD9!Bjj+2o;0Ex@Kq$pq64cBYI(O~TMmujtMjs*~%D2Ho2>D7klv=MI(Q(XT z?A8Hf+x{B0yA&S1Yyi}6y>zqR!CvGQC}X_>>D9UP{JGT<0d)k)t8X?8`GpTUahY51 zgSKlWTvG-qfk_`@+5yMBF#n2-3q9bIvk%9Og5tOrdI~D3_>X|=l4EsdnSfw3ynkTS zw6>c$Xh8Pu+@ND=e|;xPV0te3lJh}>LFGkQ{S{d$W<_0#5P~>;PpgZt49c|)uJ;>0Nd!$8vryL0C zKjd6KfAJ#w$elO@f4;xzkl;sc5baYW#0tLVC=P(>>b2o?SmtvIr$miQDibT5xwKW+ z2{(a)=3u6dD+edu21hq|!K|HAtu*!orWXdNN@+;I1^?Z69lKjI<#(pD#d3gQOuR*{ z#kIZ94l*X5)57^MM0No75XP>MR1e9WB)}5)R%Lgwd(@9a`v~+$9%c9acrGXJxlqow z%;&^!p=#Nk9e(@vjqeZl?18M$$YpCKXE6YqlsZT5;2{CsgR@(~atid~91&Xi-dS^o zNRpBC^IjI_H}b}r^qe8vMArR=EMbHoMomhI+N9B6#!-mQ9O+y*WGE&=K4rYey<(XP z&&*OVIXUQ5cohLv3C?6wdf&}o+WO6Ylq}r+t=Wzvs zHS{{hcRWugMx;b|eqYDthlmy;m+oX9H}UBKq5IubN8Dd}g0gJ?bumDWT z_Sbq9a7qxgEE|KiV2{50KGzebQQLtq(`NwBYfPp#<%-T|7TdWCPw_YZy8kY0u>XY1 zv0qV-?N@576r`P&2nUtc)o-AXC(_75>Uj+1Se6jk{H>HG@xg+Q2H;!=!vxw|>?IO& zm4B(EUFBeM;54boG9LS4QOz8AKa`7E2QR343~H!b;Re8W6!>YP^|wn)Ab0^9H*0Md z{n`TEm@vEwSQm_EyQaRrpZa~T>+g=+uYVW)sy!|x=Vt&o0j_KNa&Ttl?0VlA?y+Zi z&@Nk}ce@IH$1z56=Dv))F-^F!F7x&}^AYKlOXIf3IaFm(H$6VUj3&u*%q`LUVDHhbcJ2_&}QJ$?t^Xv-)Bzoa^hwvV-Qr0@Z(u%Yaz-ESF& z+3XvE!)BKSwf7gPFrnXc(byl>C$EY3nD+R3edzZ#)J|n63&g}V4d+GX%`(y~w=oI~ zwQLfLI+v5x){r5;EMf!3{n(4c#K#XF#=gTj`mA>G*dfQMF~n<^o5*(=)N%d;OfO8n z)2*iQyJ57mQ`HV}O#Pi>%`A-q&&@fp##)ZN9{cCPHfMP`E#>TUWg0Nui(|OPIn2|o zedqH(vJcC_e);#mvT5!V-8rR0U_J$4TD*qht$p$9FWtz+3&Z=60ysTE8IE;gURcwO zP2Zd56NxST;732Q7cX9B7^K-S`Z}FX0x9X7BG7cuJ2gvxy*Ewd&mrveVUF>DFxGeP z-lVY~eX$Hx=sp+*HIo=ucRC%SNc(g=Y(uyS^q#Dam)n(z4Di~Wh0}h|R7-YsM+aYH z{i;~co#GEQN$V*93eHM#{Ri+~A;>WvZ zd5jm&p5-WU0ILrX@<8XsouD;}hHAbBI%&O{JFNdJda>N{MJ4TgcXO`c({V4K&XMQsqCaIm)_sCJXgw=^jyq6ntd-DN3nziM^*TmSuk^_A zi#+yL=1cF#Hgd1snS!~eIOGVKI;UFRszBm9^A&0`U5Z4U&yl*46&}v%sZ33skC{3B3flJwj$hVJiWbe`k2C zN|Rtwh%CNmxe^~-h{+b%`}rK1-L?KDXnoZ1*<0W(uf7}Oz{@n{o*cg9SLr@2>)3Ic{=LFra=UoAs zPc|iMmfmrTK;k?HZQBKCWh_s5Za7{50)`GP%O(fT_?x$CuZC{yPpm~K*71R+hlO9m zIw7`Tza-_KC)N7^WPVyB&ug^H6#0kc8nb=tHRiPv)wuF)PoN$*MR#>ec|e;U(gI7$ zM>FLXHLEvMFtejLv%t4bOh&Mc?!E#DE|;;*0JqJg*4PSo`^^>|TOp7!X!At#+F&Fg zd@4gO1su5UU^YAR%VNt#JK%c0FT?m8<3WbbxYqGWqDl#RHvn{de|xS~?-YfJUov;4 zj~b84of%FZw(uf{Nr-^tJ)-lsUWQY%8YNp=l;0^>&JtYKrRNwF(-7NkfH488Lbf&o ztsbx09!IB>EV_y8Ev}iNlCM7dvE9D-9w-g_t3Ugn?aMD;+xI{J++KbEr}p99Yn$Kx ztt}tkMHvkbJG^zq3vKx1$E_*8TnP$3J$^ng&(x zWcYf{m63M9d8UN24yRW(dCXnRS-+nN@E%qsR2O^o@}-AGBB%8I`2$66X0r8E8EuvZzr=~~`GFyh7!Lq8IBzKWNVIX-C^8v0jSzxgidn;@Nyc=PxR6{ElR7n zIxg~qDcsZ6ZQCIxNR{A$S^DbLr>kA}*$SXf9Ngcrkc63pvq*j%PL5N)yed0_c+?MJEac5d&_h(4zY=7M#!;pDWF zK$VA*)^&bqPT%n=}-RLht^cP>J5;b`h<>#0PE2ppCw**r;98xuA< zz^0f?smQ7t1m+0X_S#PNKRzR>QR1H~j(~vA#uNu>rQ-^0GBnoL0}dhB^o6)ZRWTCB zkhv6sOi*9#Y7ujmJrlRwmG5)gw$(!Y&5f!5M9W@9wl03*g|!smtRU3N_7`B|%6Byh z7K%&)7w9O(HT$t71&jrQLF}c#CO;>jWLRu=u9Rc7F8}t=_?~Q~-jl(UVpR!|ZB;h8 zent(SO^cOVqnEF&w#7#*_DdUW`^^}61S_qN(b?NacD?_h^S^%Ow}0Tm{@xmu`>P5? z(eTjD>5WgLw~g(RWw2`Kk8{2lV|6=zm-~_s1-Cs=B*gRUBp9-6nNa0Rm>xiU7-X&p z+t9aCXqb%Rp=hwb(C1kU}vW%2#V@$a~0aP;AfA=1SHUx~OwED+cMre#B*y-#U98fQIiRum zxF6~{Jl4AP9`fCFjq~MVDCE7M^GpRIOQT|R!DbeG?C8cp>4wRR@BYY+PhZ(_H5mWZ zzxp5Ti!Z*ifA*jMa|ezvqV6A_*!$(y?hYT^jKM&MkqLtphI#mtf;p;1(%s?ZB_8f= z**%*MtSgE8>D4En+Gn4A7VR*P`hGEo+Xhg_waW!G#!?mD(RbOO4Y`*w*PN(+`(Xuk z04Yl^d4PuqSnfFWgBo++F>6T?y+Y{kIH97mXgs2zy>sSrgv z+RYO%hX)60*uTc1pBGtM?Cag@HxU{rhgF-hJj5{y(hlcAJ9<0Z5$K9>^pHZV`Ve`g zIRAHV-}0WJP|4cnUw-+Oy?pgNm|i0zlJ$UtF?#dnwTJC}_%PZ~`Eq81<-_7_H$B*i zIeGZsdpIe;RuLFX3^NVUoG`9&Z7LPw?BvZtMkaC}u@5Xa%z5?me)-(@qrUYTmg{*x zdHS5CD~<#^N7lETT_M>OTU&&4u1EHLqJ)P#1=jT-?xOYD1>ENY^Y&^$Qn>51Vhhx+MdI2T^q;hg#9S=n&I1ML#V;<&0N7y;1UFC^-*(H`@ zaX}-p<2eV@wzy#!F;sBT_V@F>U#seBM>Mi*D;@?;6x6!40K@Ja0EQ)W2-|~mXB*lD zIKBikOL>y6cal856uUg1NVNjQKIQG2{jcTE|NPGhCP- z>Yoc;pP#WXDY+mWGfU%D`CU8vOkl?zUq(akzE7YvmTJb1AwM>pE-L?Rf6x6sy7Vxl z+Vyq!4u#D+{nBvVtV@GsQ@md56eu0uyUYE2ljYI@qIMh;q}aS=mwzEPG*)6;x0WGm z%d$M$kv;$4ub$JU9j{!MK(b(<&Q(9U@zYx7nat-inN>ZQ%6Msld<32c{?$17vup-D zu>%?W7Hw@c1i0Dnav5SnOMoY`C%P(BjsdGD<8hon<<|MoR_HHVG>yI#Y*C2uHympt z_l~F6TE5gGy_|~xqH)~0fzwp)v5r@T^Sbno<%n8JUCVi>r!qP=L2`;Yl|0G)XiP|$ zo!00S;oQZ)H~ZjDYPp$u&R3V7yTAT}#k~ji|HY?2w7ch@dWnv|`^DdS9@7RI5 zoeXHON3T}^aXLJwV`w!H-@S9zH;2PNgp zQtlIvL=Z4B|5$lohhv0f!r%p~8F^9D$jL%mdufuW>u1e!PLaW`@JG+xWEmKNaGXFW z_C~H2K;N0y;|@g&)-=NOVjnp6`5daUFwDh*K6~~g4N|aW!O8?X>X9c0m0v;F--8R# zykExxaw2aSGJJkGXDFZE0RT?UGWKApqfrU;V&04zsb>ci$_1TWVKx+9y*}nVLVt}; zB3I63*fhqZKu=#rEQ)Hf!Vt%+bDq*%a2E4MrWF8MxePcT&%f(E6-;$^hY7M|&a}X+ zp0~qRXjDc$I@k=5G(sN3VG!@iyHg&!#E1Zd&QwyC!Y}}(98TyLEcX)Op+n3SOM5t8 zYYNbrIj;}*5uRM1li^UC?Ah}dV5CyaOMoVnYDf6G7&9z2+%rYY*v3fBC5I#W3FnUSr{&C0Q{5lBH}U!4RrVy`=irWE86cnl}r zl#2bz<0$r3UDa>UPm@M|c zF=bAFcLGZPTi8M2v51l^3bI!4i0#Em+2@_an72U{{HcquY47<^*o4a#d$oeo6#mgZ z>i+Eae3|;k^DXxmLE9q*fb{+5;?;-(ll-lANakYJyi0fq^gTP(f2+!|SgNeBl6CQp zfh9(>F37j6-VD&`68(|HF$b*I#Z=rk201(_RYkVuUalbX()wy*+6ZEzL9Ci#!-N+M zWymMjrKY2e1i6^-#nO0aWbSFo{dVn=4-_eGUYeK9>adDu9cL z4Ik>5c{;YWp2xW`XwZJwOFYnYk`rI?Fz#K9*=*l=`OL(i#c6gL=Cy>)7=vi9ss>t( z5G(7BOKg|d*n5IQtD)*;3~p|_RMBI|mYf?77>7tpw^1%7z)^v#eY_Uav{Ucfx?No7 zIj_%h4pHc<44qzcSB>>q{k}BQ{4rEyTaJ4-z}WIv$1=BnWQvI6tVZ3ZfLhrGFG(^*$e7BJ#C>6&liPS;7>MV2-Z}&< z!YvVA`lBEJ#Gb!+$?;;0WMD{hhDyhL8{x4n+iHU$&8#}mG&H=mAXH>WpEn#(@l-s& z4;y6dx|T-YFbXXd7{^??jJs3o^^v=V<-mMMwY5TqLq#{jfmJ`x=Q{_WhkTeEnBQ## z*2Zgf;6PI{1LuriU$Il@a3k_wizO)U8l*Kua39auVmlCQq{as{~x z;~Yk~hboe}_YlezU;ya6e}A9M+R^hWPtijHClr~1G5j2W!7Q00j1vG&0G3XJKG?vC zY!v4SFnEUu@r4t>>xv#2`YGWpj`IX*t)&93^`Yh&B_TRPTbZVTytVZ>4+Pez5t!SDI4>3}4Vt2IvZ2fhSEmD39+P2}z#7$zHih$sPf ze4N7xekira=Zw$_@gdFg%R=!hkBT}5hTWi;@bo+a2?E(TeJ)FlAW+H{w}qPNT8$#tEkG;NhFdPlN#q;Nl^S5Qv$= zkcaYQ3LYI+X728395=(~M*TWDsv>FvA}Udb(DTCXZnH*Z4BlmZ_P$GT5cG*yX4Ndb zVQD29>@ZZpKnB(ha47{;8LD3VehvW_fjC^>!zsjr?mZN-dnhzOFN|dXHD}w%z#@Ef zW?w6GJq+NU9Y6aK80&7Jd$FB|i7zI2i14^YGY=Xy7%R$Xe=F z3P(qzZ+OZ>i=0t7J_7VgId}H_%6SfU64!vf1VbiZto%QO#X69rvZx|;g2f;6zmK-2 zygQYRX@0GpO1oa_glwhqDWeW;^rMfTsW4rf8=^!^OE6(^H0F{{nSSEshFsM-?om%= z>P2km5IO@055_rsU=7saEIB&>js2XwZ*rf@Og1j+N9*|&0)1nC^m8@KnwB_Ev?1;r zjGq^)Q_FKl?;lbiZ#wAV*E6cbfg~M?@zm-Y`{8&DRq>d2d-hqDKIt*`&Z>Qj=e+XB z$quU)rXoyk$h>QQf}d{lFTWOs_RV^J99#NyC$9qa0wQZQHB1S?Dbkc1hzfMBC(cQVE>D~ z6#0a|tBS1f1g?s?n41MrloI*j-@1lY*AdVpnI?Fo?>7u(`JAlgj_4yMZHdp?x1{!E zUDAr|A5oL-TUxemzY+DRELB}^uN1pCwkpv4(?9)FAA$R%+PW}AwpH(fRH9T=74H~a z0G1K~5~##L#DD~~&RROx4znpwqP$CZSp+OyN>z3Or*#k8|zCGj07EqY!O~Ln@T4F16&xqt|fd zn#`2D8^#{OPC^kfR)ObO;jvPg^U0mL9c+MNxOP7D#VYmkkB5C^Eck=j`oOC#H@Lp^ z{W$yPmyJ!Qa&N@HsL8mPfMMkAL3i;xpL}8wmDl0{KL%$SV{Ygy!=S(J<}uqL?QD-6 zx7@4(u!~FI?I%L-qCKJ>rV5kT=AMxQME7=pLbH8ooqF8P_VBT?`StS5_{=NHrwc=O zgOQVytJb?Tos>9zr{&eq8svLctE z2Mz?B4z9?!xRH5K4%=Z1_|bM=CZMGgPh%&#rA0Vji`tCX2mlPmdu-pCOL+*UZ2j%& z^OyP5iZIkERa6z?Dpn$LJ#rVKEp--Pad76#B2t+#gyo=+m*91^8aXYn%gOe%p7>C%9rL)e%Kgk-Z*6E$A zlrklOB|h8`?+i`n{Gu@C$oZQ*FBqY_c%02k06 zXU@*wWFN*jkUA~|nJR;Xc8~HmkzKrP;5!MF#m%;!4CEdcP-XHN-k51vCA{eB*fXr`$w zWK;cqk}516MIO?9ckA~G{#H)-^JmWp{tr|Fo=suFIKh*m114iB5SClveJwT|3&O}3 zrnxN4>-VSt%>%LrIM*BJ4&R1~&={8wR6WKyp;l;&=?F>p`JWLTX+p66rSds7rqCv* za|lqqdi82$f?vAAthJGnf@3u@?pReZAFa4LDk;fh0OLk-gdTND5vR$ea31s?byMkDf3ob@_U1|g4bETB=UX^4OB8!DG!JEWeEEp7c z2gnrFt@vtqDGH!;FQJr-UTF_^#j#V>l=ECP>d zXjJ1>27p3gr+|}%ts#L%|ssu%yalAplsl&Uf$!g3WGb=YHHJAOzGNuyMqiany41Gc_M{fnq;dn?;$bw;!z)M_GV=Xw+^o5u zKG;=(rwwpvF~&v?;P&kNy_{O(F(1E{uV1#^%N!l6Ah5+f)nm*+$V8`bHyzzz@b7uw z`4y0{oXZ2Zw{l;M3(jq}jWNEz9DWQVHcO|(Zg+WMtqs-VEJogY_FL>I=7g*R%Y$~F zkC?};D?t0J=St+ey%qDT#?leqCcF-@2r^W1a`zJ+&Jh8aR<4cRm9OftFAX~W;KvzZ z&WES=C;#HVbY=pflxRn=I|x6t^S!*RVe`0}`|Wj^1;`hCjz zZ7q~aLo_7BLPGg-HPUZZurnQb-Z7)inVYeWj>E-oO-oy2_?>`xDo zl$EK5I~lB)G4=p7Z(P0ikN^?JJs8>3d`_SMN5hfpI7lIA2?Kvl zfgj)B?J>*ectp;0NXG(xk9^lNReg^>-j(mC{NT7AM^ zxt?ObdQNcuJIOI&jT%|u@Od-jufxgVH8zhozP+=`EQ92X z{qcrj&v$8Wy#KH|Nf16vVWD`AjC7R)$K?(0&rxFK$hxU<9M}NB1*%rH_M!v-xKPenfb+@=jwB4h*4p`Q4dvhrRfY}2|FCk>#@Fg>g&CI^Ns>i zQ9o5c8`q#*e%RAuE|r>w&q`5SZE)KOZ~6jzT~Ud!8AKYvl76pNLssMH%(tY?nb?aqw1iddYjD}OVwoO0X-!(y zBf3N0#UAUM-|OGnUZAoj$?o$o1yn1esZOjwvo2yTr3Qt+#bRP`70TS>v+=@U1kgmx zHoPBrJ%9e(?_wkp%WHyxt)j1Z;UlEZg zZ&h4q14xa9*&~M}mPJGuRlaobN6V`H}Of*kzp80II+3a(z56SJtC>lXzt{Z0>Gc)FY7HlHOPEi@C0w zsCoc}UPG9^<{F}t{iBBqL*0=^d*gV%7Kxy+K>v{Y7b%eRy9-So#rewDFr(pTobV&9n&b5(^P)Kwb zTIjdWfBYkR_35W00;JPmrcpVCs#gkKOw*XFvYjt)@$In%IN4`slmURl14jMBeQqa_ zkugT&B^ImmJT?&@y^{@_a!wfFSYSeI&rPsLhY0m_!I34zZ9>$9Oo+3WBOE{S665cC z3a^-1s!85@xM8r5XNn6s^9rTa`4r)?a|orxUKZwH^^%eh<5A*E_!avFP`RZ@Np*xR z^OAK1osp#Q4ocKGtN0M0%UMX~^2OL&R;K%j^+n9jNSE*$svcfx$xwkc3I;Sn7sY~N z-`FqOQ6;v{0+(h921f1DU;({O#5~`T+bE3jz`Dy1tZ5nJ z@sOY+%dQZ7=hM}jIsg>FK7_Jh)QhD=(?~E$^S7d-6vB*g;vtXL(^0YkFy%a@st)!m zasgwUNc^QS=P~BJaQtCNEll@7->JV8u8Q$g9{)?)XK2fO%yjF}(Tg zjtha}tVheblJ!~b_cKDZp|(6t8NMBJgP2Or?`AAv)W-D{J6z?xrbE%`=oAoIMykXE zL#*8ytCAuo%0+jiCWz+Rl`E5f8+VA)kj#F4j^Db1|&|O+TJOWwFjWh&Rer@}}&;rIvgE z%J`(=b`9|Ct&weWZGXFvy1%mKg?-b^_DqsITiT*My0>e~ZtZ@#?_NHSeU1C&V@7*= zF*TX#7_ywNol(0K?%5dG{SsuWUHUQ}zIs6GkPD3u39eW#>(EdXFi1c;OnLu%zt4-4 z++K)%^JP5Tv)&YIwVjn~(TW$ejcvxUE+(zG?qsbl8@!&P3|HCNzsc$E@Y40Ak9Eg( zmm9SW$cl&M%V$sW0qe%gtURM}{VoWRduSW-ZF3UYx4ZKw&xjoBb^iCSdICw?v@==D zG_IDFm6$_hNcVsVeCqmkhKJd>H~39AE5Kv`X&(m+2etyBb-Zx|8|*}1Hj1$VptTQ{ zzMDV#=(J6Ag6+mrXNa(VThHUwXFsqPuU^?#U;WC3KYah^5MDu!B0y!-l$#t}B0L%( z<+T0=@G{R3d0Bs3w>kAARYTjDdwYN(*66vJYc!T-e@Iuqwwx0!FVL=`6%zFJ8QedCB8x4VE>D)nZ|IQ75!U=~;hnCv#fdv9-U7{0jBX%jhvN3vipTIRwwXSS84p&ogWBZWgXI*sFHra~{; z0oSB?-_>uuAMOKWdL2j0bdWQ{AJt|jDv=BLk8tDL5LjBTtW6Ik0`J1RsvKa1JAv+snL&jU)*D@ZrJFG7_-_I{q>#C zJ_%<6^Q7asJZyy87V1;YQJO*r!w^U61l#KS$RS-k%?v~h zY-^D?688an30qv?vfAaE13(T5_`#-!eSgLN&-Dc?1vF8Lq_UR48MPE5qA2l>W7M2a zEW$P-#_%^lrnF`XR>j}3&&wn*WMFzfH@vOzKZN*?C;vsJ*kX;^;t zpUS@cy(r1{LLFbcOQ8v!_;aer(gV;cxWs!=j;*z96kqLhxI7pYWWvKyg?_5su}YL^ z(O||Pherjumw2y9$m@-{Q>W?qx`aUW_oaOH*0TY~Vm)~kyTJMV_pe`auQVa&266TVQgzWxLefs>_lLljFybk_ED5|t#9IL z0?+8d&RiH28%L{vQXl!O?Z3B`kNUXp{+kb4?uYYmn zzV8~gtDL~0sMmYn^lyv;b7SCm1UqzQ5$zsPg%$_BjL#T%ijJKPV+!%iGc((POP%DB zf;VOvsZhqQEAeKVZrN-1_H*-zVDOwJCe%r-gtyrMHfEy?iSjtJKRd@q7zT?Cwp=Q; z*#h)%3zU0*x1yHJ>xpZguJ&c_Z&9lW*A5tAfPDGI z7b}Z~k`N#4e)W(erw)b-!rs38>Wj?Taz)HD7_zq>eh7y8^+S((j5&@c7s7IO?F0iH zDzSfHKVA)&DEvNHnW*bGv)O5|!@L=!QMmW4x=b-qehB{{jpEAi8R=vwPjI6ZhtkMyw_pff$6-!C?U4 z7GbVO8t?D@{Jh)&$GXH+u;1I8V}^+0*hl~S=<7XO8F3HSq~qtq`+GmnGfRy~$SVFm zrqdCt&wj3lQuZjyK^%@#)+_bCbLGwG7v-aZNk6GX2y=hEt|Nq%2&!O!qZTAU{=(-E z>QVY}mS9xF@wa&Uy8sePN<`huP^Xm$PJJc=SRyZPlu@Bt?7ENlAMRPxGg!|6Mr7?9 z$1ROwF~9;M0GHk-$7qu&0geR_>Yep4WBsLf8)a>px1E?tzfOsW0r0bw3V=Dz4~_;G zr6P;hy|!ZHtf~&>VALXH)5FbI(1JG2yO%7Rv+>( zIkhgsxq+ELTRx$}eKLFt%nE!ERiI~lKA=02wd+K0WPaQlc3=<%HBMrJ%BBqXFI zM{4wO)VVzz$8%iHOpRBF{D8rPT`dwv3?@LO-f53_*y*Z;St1cPqMfq&i~aBGBeGE? z46z7kg1uDDODz>|h~)bDPLvc&P3fztfCcMR@=o86S+Lm96;A2zem!JX$M~kk{C~3L zq7G(zq%NjtTn>zEFm9vOvSIW>2V7Y%J43WGl4s>1s9pobKug$%buh(Rw(?owvQC57 zL59~}K~{{VmMZjv0bK`ot$~RfK$QMEi5JSsu6?x2Z?}MN4?24N)b{I-iE0aKccFwe zXNUQ8)xzJNpU$BIx%gg_LVeGDJc<||`#uj>KJ4y~0wU^nj{~#5+q_=@Vk`>R@pYI} z(@Ln1%Vu-p_RnYLJd}yK0#-jy%B2r5wl~VlbzVDtt-oD)v(#(peCoIdkW8x-{fuE% zdSLKICD$D6v9IptOs--65Jc$P>#uyjA?ZK%8b%t#VNUiI1;Njj zA~bHCog+sKpy;Rn^q<EK^k;sE(#+CEXP3)X96xw;gI>S4d+9IIkT-; zqQI7bnadQlCl}_K`u$7Mm8i$KP@y?aUZo@?B;vcAqkKXL-kdYka;88{)W95l=PZK_ z^-vjht}F|qkRYY4%;oKq7c};R!JLjPsi3)%?Ts3w=%>S^T(z5IOJYt%dthF=PZ1jB ze@4h(7^Vu>jj-O?!40}jfHRzYLo`UrlTp)fVINMJPw1hJVDM0~2Eh34mTZZbAxkz& zVY&b(9x8lu!+gf6fPv2OXgP;E(b#ogM|&zf@`g&aM>22`ZXJ;&K3^lG^DtOQv0DI* z5Vpd4V9da@O>C23f+N~N06*GucEetbo`Ad=&E}2s==F;s6zo(j6vd|+Za%PDU`G9f%d$}==ed8P; zA*87d1~f{M4F_`Pz25jPXOEcCbe#53rFCb_VM=z^_tIG@X&H4{y{#WkteMJi=N^6P zrJ-5?O?T!o)ID-Y$vn4+ga~%MN873{Di@Y0F+~W<)>b`wF_`PCi4-Cs)Rgk(<1}pg zji4t>7n;Il74fLlIxV##1u=$yR(Pz!UHP4fsnp*w?Y7Me3)k5g*e#ZN_`ZA3F}C|# zVDoE??BAc|Y7XYd=+_=gUL=jV4RYtpzpfpF)fuzA5%bZ0>)&EC@vhF^D?DM~!1M4k z3jJX4;PZa)aDQFJSS4wUmn4r%sglZGno5+=t5R$B*j`fEucKb9wH-X{11#iq*Y&qM zcnrjK>sPGpZnlGG{p$CulW31v*c&tM@?A#R$3l32lVyKH?hRPF=lN3xkqq#(+ZT6Y zd(V(Shf9m&;Y#JztaX`(UsB1?jmy5Rb>*JrW|{Y*&)fW;UV6I^kf}bcV<~=biHGshLrY_0$%kP%7c1ohHekrUerb<=-7dgm z+#@4|NblR*!5^vqAb+tM5th-+{o(+gE``X7b*oSv--%)hrv>GETd*QVSQ4-+2=PM#~P{xYpQ0uYJ zs1-Qb7w-Zj#P=(Ew1Un)H~YhtDfK+W^H6q^1 zWMB?%Sb!euDTEL628_=DXw9BH`^4N9_T0&HwvWbz`V!Z2PbF9ffXzm(p*6N$cLo|P zDXtM}o(D!ws0V-#zvS#0T-rWPk zzF9KlAoeZ72H{Kq*f`R-#@NHQ$kkky@!ZJJ?jBAc0HK#Fkhx)=CXNdO+j(=Aad5VC ziYN?ccxDO}5hP0C6``8Q9h@olqkBl|th&d+GTY?d#WXe4HMg5nPy)$}rD1ly9-$Gub^1Be9#v)4U;zt$LLMoW^-Xs4SSyXP)<+ z{fsDs`CM#>#s~t{kEANENr8Dv2gAG!HoThC_!MQ97PiOuO^!JS+7!>iImZ1mLgdqF z-g-Jh{F;&5Nb#$1Aa?@Vq07)UU+jSoodt3PkQbwE7jZ)hU&r5=qY(7lNJ$o2D!dmmJ+2IG#{(do zkb{ZOzzDz!z!M6S1&LKzOTB}EENOdw9H#r#vLs!(n8Z9AQmuY2OGb9aPu>fyKf+3W z9Rc|Jx+F@dwCl%CUg%p8ycisPx36q`?OS=6W!qlkm<2FZbB3i#yrU&4jNkFDu-N*J zMc`5%ixP|7RDiWIm>8t+jNpZJYBKTqp4UVcv&+jOfuF7`tp@UFi5-C4ih%6x)y~Pn z(y$xGYKDb!KZ98rplZ98POI(K(SV;4UGzSF8^3RtEy(H@fa&^D(ejeual1-SC0QAd z2?)7|JuedBsw^?mwiCJx;|eOZgd{t?bDT-y9h_I0He#2?IMq1OsWyygbR6I*j9rIs~xBe6u|kYRs_`z5u^Ws``}l5xSD zM=T6W(~MBtlE*urMom25F2QoyhCoMPQU=PV2Lv{&T6O2B?E1agcfS8e_MPwj$bln- zSw8*bQ+vA_*v>*B#A*d54-fAd_Gs&GZ`?q8aKrH?LjrZYC~vX2f&PBI9qzs97UtnD z_6L9TPweSxM9%cQV_BF3D{wv0kjwjWqn^}h_}gaQ@=?=hiuG~7kC7D&TeRbyJ)BvJ zgJMHcjtpnPHecV*=Qzq^L?oh0BMgBSfC|<4gJ4ex*c?jv2ME-NVI*4!cF=2M-o^m| z@SnYi{5*gkfVTscSKBC;;K$`W2w}j3Ea>(IDZ`X<`7D#M)2hTW(fxT zOkp1f-PW>vjGRUQE+NwyA%7}vFF+i?CrXMW8)}wevI>Xxa9WDfpsgGb)3G7ZEilB2 zbdaD5`r(dj{tfR7gsR3o7wln<)uwqMgn*F$%BjN%$qx%XDAhSK3^jAcg}l(+Gla!BJ!feJnZ4&7NN6~*V(m|!p!p(q=_2>fi)_kY)gxTq-)vw+83Wz2nDU{v5Tf9JkFYAy9|QC-Y@GWKhz!Y(gX z>*=k6Nv>ZEaohYRN?H4;pt3GitqGl46K?@7#bhdey3*S!SAs!>mr9j@y_Cq${y2!~ z-g`&1RFGL~Ve(yVvcXL~jmPW#zr&;DTfO()3d3l-T)xQ|yK=;~1wYr$D1RwH?Kd0I zx)vGp*VoX}?K-&q*m7>z`!`tUcd!V{ z2zV1v=NYuidnsn-s5twK9{h_Asw-Oo4raxJU-r!31?YPs&sKgPIVP$Frv2E?YnlCC zjFjk(5i+X=i2e;>lExZzs?(~RnH1sqx_e})tZJQ@%JuaU7N+}j-``i7QLLZsn${)g zI~5##{ui?u>pXq-sr~2=|JZXb?^na4QT6yiB`Q|t>pVX=IC-|R3tlU5HDX-BG~%}G z*o;QyApzIvKFahU$MKh6t=qR?6n?Zi1X1TwLM)*wJdZrq&M>e^`9UQ-xc0aHbj#5O z1JHYx1=%vjb*@8h*D=DDX@t8mMsXhqx){M+<{0{ZEl{NPlFnbtF4DQjxLcALQ^;Ew zni8Lh?Y&4m0M2cwpgwv2%8fnaSb?)5_B{lP?aaA-<=)?#RE7a}71o$w82ZE1nkz(3-wFvRV zdH_-0KX5Fq8$Wq^mq5rvApQQ3Sd(gPE-t2{5*IlSaNI7;O^xx^tkzmY>zs>XwQiF; z_NT_H@j3uHaV#;XV0U$IMVRlDwJ`C$=cm#kq!8sZ+2e)G_q>b}A98lV$?VP+j+aA8 zKbV=fitAF;gN~W^#vBen7aUq@RF$QIImQMeHQcIcbV|{25)5l20@-Ay#Or^E$)8DYj z{>Mvca#(6Q9hgh8m^OxX-B%N+tm32fU10L(r6y)c3vA`tP;paZdp3PX%#`Iw+O|ZA z+TVZUHXkJde_xiV?FxIgkJnz&x+)ghw#4N|2q*{K&r3a+-Dj(xD}yQUSJ$cPPFlol zUJHxGQcIPEG|PB_n$NoU3}j!kMr2FJ+H4ZZZ8gCX5a8W_-*f&3l>v{-JSP&UXp>6 zk!cB>du}XGn@_%EO2rOt%16%m8j!qt?iS}8(&o(#ia6cygnx~g-bA9<}ECIKd;LmWK^ooOc3hff2H`_Qs zw2q7wUzcH&T4$jVZk-`!>)ZE#{8JAXJ$-oRIhW5~JomCBFdSz9%lWi^|1N9dzJLGD z%U#@`ALw?ZV(w}q?>+BV0xvajw8#hrb3nA7-v<|Inb}?^zb4dh#S#jjhdic2@0@|0!jRLk z6sfRK$uYvs4lJo;IZrhju&@iAjr2UjTW4{ceL-j?fcAdhfXC4h38UlA^C7pB3Ja$Y~u;5HOkn!p@$X2+2E5fH?FQz&3|oTf z_wOPH7mU33J=!O$aeJrp8EUzY&N==-r%GIFP=vI@iLPC5v;R+__9|hYCA)1SgP0mu0~UB#ErqX_ww?)b`4-& zlLM~#nD`rjvWCUh&sqdHNr_|oJU0wRB?i~)5zs8M$Z^N4>lEqatceNl%m4ZR^nZKX zWpHjpd9UjKTr6YMwauF7jXJd2m3{3y=GylPJ&cu>M~?on6Kr2=?UMu8okzW%^uT-+ z2$Xp3&G#1_rM<^YYS&MDgyW0{Q9N)KPMGd(JDqcnzRt~o52c>x5}`fuXHJTJg!KAD zT9V|g-V-!C1wOv!`Y+j#q2T7Vu~@A6?dnxmc$}_&AvkjbgAWWoY4XA12Jj29h~s=g1Q7=h979MAiP?NSou`Q&{oqhYst z-?n9b@3B#1{KfCVcD1~OXydSR%Xkl~cykPuiolX%%j6`n-GJiprYOFRwtn&Q`}T+b z?0@5+;j3T&(%b0S^XK-}mtQy=bw1s@dgHJD{+DjB;J3e9KfiwaW@U4a>v~_g)eKRI z5BH~FS=hEH9q^s+e6}*AFP%Ah_2jAj7eD=>P0Iswr^qx~FnUr-bQYl)QzNE%j68Yq zTWw$&QO0q^u_T970Pcgo>~Lpayt(&w2bg+T0kk3yU?hI^)mI)CjBw2}m^&Dgr?ZD7 z!m#`G+CHIpOPtGNzNdlv1o?NXLHhE=3q0?F{ad$#ar@aP-*F{X7=O=Seqvwz`b$6e z+b6fqBJ{ShZZBU&jX*QbUBRNGot5JyL7lH&zj0u5vmP_VTj&sNmO><82mj`;|H|{* z4(mQ%fAu;*>ADh>f&~|zK)Y${r#`j{{J+=;Fs$@&<;;1-f~>Q^^29s#)0tNS6{txz#U>qvjbuP z0)!lE{(JZKy@Ml^wedFZJ%J|-{s*=h&fCkKka5Df-?8)uLXn-JHuFBmHVzgRfsP2r z1hX3T9ed=tEdgF}Jx`uKr9jFDXB%j=Prg3D6V4lLjDA1*y%lZY z;Fmxd_l)Py^(ff_mZ|eOhwH&}=5&h40OZ5IWe%vAEoW!feL@$KkwBxVW@eHsAVINnPUSDtC zMtK|0r3FJ~krNv^nE{M39#7sEM?VJcA*_#mYo0@Brz^pp&N;5U3<$>J`WsYwpRRp_ z^Ty3Nm)gNNx6{KpgrCj}S#3G*B0N-~!l7_G`SY$#TWjvjFmth#5~0c*TCl3L#`V1M zW1pmEd&9_&p-zo13g-oDpUU~tsh;1d{0jAMgfPo7K!B)vmor1c+abin-1%d{Rw^XA zGi3t~60}FRsGW;(6`|D;7X5$yzx*FxP)W9nxT#^XY7vFZmeAQ=D?k7rl$!S$D!Ve2 z3)N%&djU-X%x=XxMwl!WWiQGi;%`;B0M^-S$XGz2`gf9R0-hy8trsSEa_)Jx)JTb7AU@?&#ELAEERt#W(OI;g3djhgTWCbpr!L*T6d2RXT z#`%_KxdtwO>!p`HWxmig$a-zt-_02QI&k$(mI^nvHthg#`Bm|7YRSa)HbUcCVF!k> zT*ojyx>@F=<;3piLl0;@p&=4s1L*a_Q1`-secd(lp&r6R6TRy*J&#txd3nC#pZNW< zY{Px8`NL=%|6VNHF|uu+{a@kjp0fX9iHD-dr!igvq%HA36ELVi%)#OQeB>aw0tR`) zrC-ZS<4(WRfD6z&J=)$OqH+0qYj)-SsRz{IN_i6N#o-a)GRJ#sW5y{)1PA7}1@&xaG_maZsuPp){v2uj1HT9dn z){~l!c0V^8lS;Jjne_$}sInGfovTzTDV2{~k_^=ohUGg`$pd>H=Iu?2u<4$U5aJVa{`$ti_Yxhv zK0o(mae#+?dc8)TmlS=)4u+zq<+C7)+%LhzVthFu3KklDCdSa`OsM~|W@F^^MP8mW zsnaN>qWeLin>YsA9XY)-+2EnD+J-YX@0?&O@#kDM1A2EwV5OBH$^c+lC0fK(D(BW2 zKK6qjlOd~KfAQ{y^)|;m1xK8V#x!jUMpi3V^A!ukJm#>K`qUOVvF_edD4gI$0&2NFmkJ94z-JFO~F3T3<*C= zy`NJe9FV{G#V`CI0G9xnwbs1CVU>f4cYsNS$HI=s@3P&gx8hnW0GoKp{s*8GxRe+u z043g$VyC=I;17MqLPoRKG9?0+JA$lTv^}>kY-P1aTiaFR$l+lZ{n+bo?OP=DGqo$p zqKfYogNz}y*_VUWShU~J%HNun z+dXYQZhRoUp0)kMmT?A(^MCAI`l#u#{k47lHK!S%F}62yTg%^fJKwC|vh)B8-k*nZ zro#NDeAx7S=wMOU-y|clUTr;Y8xL0jP(FdS>+qO$`^Nyd!jy2HuH+~H*_FS=^`-%q zF9(_0!uCzXU;pu!ZpDeh^KJtVn@;cAd5(Q>-1cAyKZT;>VX7{HvUX#>SWop;DRYLZ zro;wDSlzXy*$9bNgXEdfBgi-H#aG6{15^y zD|-p!`^%NB!##GS& za^#_nr!d|n!lAYSWA^NKlnDJnp zA`};4x!At|m$PoCbE*qF^9+Xx=eC7HWtzXRKG;hmn67i#fdEzk_h?(Nr7`YD$)9MG z5cE-~DcDSBBu`OaG)iK0<~&-8e|3sJiP<}|?qx7+a?T%y+*zqSA3dCV z&T~h!K-MDdmN~g{(goW|^;c8b7CD6`en(NG+dBek%XvjWa$*S)EE0Ue#-7uRew>%$ zw2Zo-+xn6N)Yj*&B3EWG$Sn@# zX$v8x^IZIwb%qVrQns}gg~@hP7uh% zXW<6n2oP3^lB~D`+cJFCi7>1KT%!_;6?nE{i`G~DP8VMYy}cdWgslq3szB4e4eTYB zO_`DkHrqDg^xC#+pv`lb+xv?Rr^ay*sxl?`ZVxCGBCAfWNw#7y;cfU?)Wh`e#b#o` z;GuV7)A&sCb=I=b=)EQfW2vfDSk`s@4*w~Ieu~IXvX}$B*zkhYowm05J4V)MPc_!~ z^|GyFowkFjt$@1yt6yxreHr&?_S-{?UOx5BBxalI*C}5Y=p##@AlX9ka;Xqua2SZ_Z7>JkYLy`9d1f)V}WqV|YwhfBgP?xCq1 zM__R{TJ-()xZ~W)x!5pRdYwr&0M~qccY%J378=ZijSI;`T;B6KpJy*Vv(J9;LkE{1 z-oJH$pC>DGh8)a=LJ<+pcV;+Y^f&S^djcscz-FyTOJLdPcmY5|d6U2X5C7iYy!*;N ztos9t*`_1G-=wRJ{6gi7a!%EK-stTpO`Gj&Y==6}`m8Y;#biV-9B(s$m6s!7$peKc zhWJPY`kdc%doZl`;0)MlGrc=NQ`jDzE5XoCE>7e1>1d3*N+}qLNebDkA^+@!hsI7D zCcRS}CBRV6^C--A4@Nl$u36ky3(J$xKnGX|V|7kppS;@|MS#}x1UU4P8#gzp^y}p} znmN-Q>a#I_FFe0+49+9}w>55StSQ&(j8vGg?T^Ir3PN<4^+IQl@&8!5z|dA~*8W%N_B_?(Be z(4OwKOo{4XVj+9ksFSj(TQ58QlTSWbVBc5W6)Y0@*{9LzZ$&}^Xx7|IMN_G^h)$D4e+Ps)1GQA{%sm7el$p z=hRN{n?hx)@)GM^HkByB?=|mI-UN9Ypa4}_OfB$EC`7iDDDlr=F!3%~s@Aky{#ApCTdK6?Xr&CjS;zwTstw%dcO0?q__{9sxR+fA@=h zb-UIMvZUMQ`Ztie50y1i4p;XXL1MbXekq=F#rSXKLDr_xqMbPj^;`rxGW5$D72Lwh zKdEKOKxl$@aRNR#MkvHo4AVTD&GlcIbT;4RJ-95ny&I+d@>;{VQM-(5sU1>5PJQ`9 zyW$UpN8q6!BF>bqSE18Oo!A+ zjm{J=NivPH3dlWc95+u1dO~>S9N+_?jcBtKbRTYRlS!3ePB0t#d(;elpm870ip7md z>%k&^_0{XRj=B4_zIpSN8|`RI2Sx~abmKE>-+9PqU&!d48Ri*fR=}Qx!uMc>RCh3H zTt>^mh=sbSq6wnSB9G4*okJrCZYiE3qnJ;-D+ZQ>P;dF@S2y!+x7I2mh zOsHD=&J~#B=0mtMUM^@uN2rH#5^$&;v28G1Jh0Ti$*^jI z3Wt*=5JcW?2n0VWiF;l7&?5)F?F+CvxT(QKZSlvNsOYI1Xki;`%;34>!uNjAz`4 zI_Mn#aO_}-u-=w+SFK6BXd2NlJts=f7gvOZfGOG;VeoE;xX_WAqAXm|_~s_dsi<~y z%yA*^Q%e7}8X{XG3I#Ovcdc8m1-89j`nyImB7F|;2$%gC%Nqh*N+=W}qQDt?{hT#0 z^{Q+oKPQgCLPoRe^Tv5#X%8k8;%QZ&ng({Y3;S;%{`32`_|vR_$^?|XNab?5W{C`Q zuwOSU_uq?J#%Fa54pfDG@cmxFNwLuw5cD`?d6G(ZW6_|JHv@6m)uW+B1zNE%X?Rnv z1c0*E-oc{!mwLZoK)6)fBUV_ht|4~j>qbi}|NkaS|HxkAQw56~Z^>hu6ay(9%wK;# z3ISbq*I%}4GS)t_ueSfa<@r8(rETO4XkCrPW!bYmv401QeT2;}%o$KQ02zJ$C|Q=# zUNnHaz@Hwxw!eKi*|+QYsC#dw9tsM#ijcCl0ifADWyCdAa%=(t%ViVR(|V*CFW3Jj z_!I?uf^XF5lh6^`B%uFW6BCV}<#odr?G$6D}R^S>w{qE=X;?<{qt`Dvp`;O&EP7X98%*~4veK3oIMEu>A>_HA>kA9p-}tp?n#ycQ7*c2EwPs~87BPZ#q7_K7l;1o zEVS-pXWj3sm(N|@cZCPO?%Ox-2nNG24-jTEQ zbIpgk>+Eg(>8GEh;ET%mV86}=T2FOd2jmpM(Y&wxPV5iPji@sjVT(9di0ecj&Tcq6 zQ0!3y6AYt5EqlF3EP$}`1ksORY2*6`AGZtJb1Bab>;sG#{zhA%My!W}G8fWCgs3#D z+(>~n0Wpa7#B(J;ozHtVN@pE8&NQw<9e9MjIxys18RN;arl*%$AwY{#AUA&P5|BBw zE@&fb>f@K7zp_+P;I;BRj_ZAJFgANQ?bDo7aJ=Wwo&`X^yLG3D14Rldx!}^_kYU;H z-hIe>8fv`|kixm$B%97sA7Cy${Q8`Zrcko&-cGFw=h4xk+*dg!A~bYK^;$WmeJCuE zPa0tVkhzo|;Z%U0JE*ZSOOLhf)autZBpFtEX(ag z3#-m7 z2wU&r2KCqqEUVs$7HOkY`y7~n>29_wKe(xf2|R$vM*Lm%SpYIs_E6xmF7Uy{vX#ArCeWqe9@-h*3UW;&=NNFB@8^?P{=aNu=FJEU>k0eU`eOgGkBr z)`L|Pi}#;@qy{ED0TTA9-;=`j&tfn4)VG#>E~cn-yklVMdw4=Xx$ld)VlY2eAG2Il z`F}5;_iJ1?0S717H!BzOcDLnNA&taKZsZX&|C+y`m6z&Q$ zTRS$H%*(SH9>LAFZ3Bkg;FIxZmTYNuzqTvj+($x-Fh`c2GqaDkYqKC{rnW!R+Ph1B z`@2~d+ZWe(Y%Em>x&`H{LC{(%@-3NTx##5Sm282V_w!PLJu{DF9&~gvjTIb zX@Fd>-8YRKx2VS#Kr`-{o=%w2ZY#+Ao4>SQ{Q67#>tBA!`A1sU+qrT)-OAUxJm%!J z{msEYL$8AQxeRx6P`FIKlVHARc)J1KB{Vg$6vdp5%GN{d1)n{n@_3WA_`DXSho}Z?DQ6)7gM$o$4SeVC z-B?RACcexK^<~L$OPn*n?SbLhvCo?fCkz$P2ZF(~0~i_hp*$R82EQT17t5J>w0eFF zMmWI1G!3I)H5wf}f^}t^Dy-C%Xc-O~PRqEr#pXtR*prVJd>5*(w;67E;CS*9IqUuv z@);#trp&E7GtBj%{65o^&=cU(SYut!?o+nPZ@A(sLmm}+uQDBaGNn_NH%x?83SdpV z?os{=00r%SLt!F091j}byzhKW@|uk8pm68dXE=2*mQ@BM7}@|lk$*qxb#AU*;oO{4 z^el$+K+Xx>du|gDoJVJIz1=)M)XIm2c$iAgVmb~NA4gbg?g88nM+qoJ8-YzdkU2cF z#E+O)0a?x2VkH%_I@3X3Z6D29-sfbtGoR8FP0-TT#Qi7M8^H1AHXIR3aR|^FW5WfB zc&?epYh+1#E#DF$vZcvv1(VKRu0XTL_zeYFgvpAzlnpPUsFFymdB1sRD|HTdp#sgC zZz)W%uVnGqqG(KlNhi<5UTWE~kQe)Rgd^v`S0&fiQOZdH%EiX=|_sn-` z1^n?x``DuWP4sN?SuvCWm&MXI(v&-rXiwgW`_>r#8z z#>m^Vm`8XBTZF1L85{&7Ee+w3=NEY?-I}$Jv`Y!sZkK@f@~kKO?U#L@pX$+9TS>$PMBbU%W=dfP(BDAr~ z+Bb{(CydrH4s=}Q{Ye?Lr{TKrU0>C0^`Or=)yj!jVS+c~j`K(x$2IkL(>tz@44NB> zX9`u!<5;cl_TOzBel!Mt`u>mq*j|159XI6X^SvAFx6HHq@Zmj;qGoSizqOO+cEy#T z0D2g0C>0cj$YDB+anPbqk8Ib8Y^F>1gZVm+us{g^{N-Q#FPg6kYcC+rQPa7vt zj_alt=GY-{YZS^D?YSMHDH>M7*q3!6ocjt=Rv?YDO%V_a(BtzMnH0=R4<6cSoOhe4 zM9(1_I*iF~8PbY8JU^%PTESi%Xso+v$dlU?u|oM02_*S8E7N=T?3JIFGk-Txw^8AF zy0WE+UA;$nj3-gXfoY8nek1HKN)Nn$|KNg6F6Ofuna`g;i(GLqgUE%uIhtxo;yaup zz*&Uv&i3Zb8{Y;yhk9#_zr{t5-oJnAOv>p5Ko|@s*s0Gx`^@)=I(`vS8hN2nQ}yh1 zMx|P6jVhMRK?Mu*1T5}4W^jHFHxC}ZjoPZ=*l0O^Zf;tJHv{wlz(nba2+NM}dxkDg zEQ2NHuGvt@J>UDhj2uzTz1i+QtOM-Jcn|TQC0RzShf*bIlk;3^qfP-R1i-N^YEr6< z$}|lp6c#Yfuh;e#cvHW0f&$f5jC;ULbsiO(d0vLl-9pDwlx_*oKQEzFEVcHyH#DDh zmJOPdX-5xvnUH1naS5eg2X1WFoS!UIc~dy);pEpm(*Xj;5Mc8zn$ZF0vlaY%X_WbF zmVh?)Cy=f3BPZ6)RL*ULagMqFK&RfUbQyv<-PJys^?{zY-w7REYluW(F%b)d2o^7Wctr7)M1Z6qxg;H#c+Mr*C|CM~Qe}_p2Y`c7DKEJf;+})yTKZ5+^`(* zBLq4=`|7is#LRa)C+Kj2E|vv2yBg^!ugSQtiG}9xSsM`fjT$=>86vb3>Oca}ftlrYOg1Lhu70*&k}UMfB)VAJkAaMAvSbk-(sA+di9dP_?aIM z=P*+^OQk$iGDV@W5X-@M@pGF(1$LUm{>Q)$cChC*ogg$qgij;vlHsMYU346c!Ksay z2#tSdypK0Ir@EtoxrENR`u(A@CozwDUB;CqS3a!QXJziBGrbH~jk%(G?b25-UU|EG zvbIrGz&&}$?2Xr&jasORz95T9;GALO>$%^O9n~T>ac9$J{-TGm^FE3YT0R3xDH8Ov zJI4;k2t}QS8m!Jq_k3T5<1gCTV(#NJ#oLcep*w+=p5sg*_X;6bm~WOFVHkPjP)B&b zr1We7Z2l)c6e6m@paM-UiDFXbruvt4`>IF%Hs0^8K~#E70k|V%Th#=A>OYjy>{s z{eIgT6KS$rj6aMEX0k66*?O?FW1|l95X_0;(C`pN>-F3l}~JwzWu##S9^5n zAL*UTWx03->#mTV-61d9N%PJ$9-iy__da>Kw#%t*Xo7%N?w{@c0%UK1=!pEtD=(?IyDTs0phNnUd+OlC4c%@s|#G^LAGrt zLuVXc#*4-uk1a8aMZMB$!;EpC`?6erK6U$}KmO-b3Ix+|Z*O0J=_;t<6^{bl;qVFN z%q7E`DXMWkjk=>SoLT?X`-Jy^jOg&xhas!nw_yxMdp?}s+h6_VpWDCt>%X^Oz3Hwj zYs>}fIj+nd1HCKX)q;^$xOEvGGJbts8fDQPyq0ylxzA~ctNFcb#4^6{zp1R4ObGKm zJtUAdDq&2<98@AmFe9%9UVxGV8O9jXU?DUfJ>L&y2iB81+&u9-P!Gv%%99IV;h}78 zN+6|CLJXUMQfm13eeWShd747ZEkhxXthXppmFTmW*Ky5QKb4ewr=cF_b0!c|Xl>*D z26lO7VS9`N04~)O4fcovLN-z?<`VK7dBZ)AXS|O9xL&^rk(_y!U|jcEQ}sr%(<1@O zfptak-pc#}=L4=c&Y_d3JhRUP%vd84rCE+Q*@gnZabHC~UpNa{{$mcnJCz!;$T{{h zJ$_y-%TejB@qH33M^0n_Cm&a+xyrIR3iltSKE}K{oVwK(U^w$Kb1rJ76iTdneW=?k)SiKBIZ7YBBKqWERCOO&i$Ixs&FQBPekhAb6sGUulD)I zI6#?_UHQSZ`-}ZAOyIy$5sq32HakCi<%%lwQ-w#hNbpBE25lznQbbIJrF_v`Q^t`n zSLb*A8kVvv%eMt&PJ4i;g*STJ{m%I#EFCeQt>k0w7ks~$^!@oLN-E&GsexHPE2&nX z5*~(Y$H5?BBCoGcZ-w4{8!5+v!K_Ka%E81^m8}`ZJ*X8!+&JAdZ zjvQSmWJ;;^$dQ{eL}}As2}q5F-H)07vvDT0X!)6rl1@hk_OZm%IJe2G=$3tNnlJj; z*BI-{uN$q?$}z_nEurCkSJy4?&o<_*URqRRmgD+6pM7qhe&+{KF5rZaw>K{Cqmlv; z^I4V?>*oyyPxVNbWiZGx8fWG(MjqQtW!8|(pVAwzQPnrO#8P@b-M_ZK_=`Wczxw5u z_Um^m$W`-CQ@NIMiq^;$!erzMl% zL)DqAlW*%egp=xBE?Le*^IMAj+y?UkwbV{UNAG2or#K8j7tE4AKOJu!&^hCCnp4=L zwU&LV@e=oCun}NMotc}1-H%+i0HOzucV{wJR$9zALYCw9YFTC>hT&kBZwX=pxIIa* zj(VHUg0g0)LJSqb@!`XV0*qS%P%uVMp4_s(C+0y$eqQGIwU+FnGoClM1oCI!ukwhM z?{`N*s&`&{vn8N(rPtPn>Z+MvvjC7!!}G!jnaRV9eO$~7^Buz&M}0^|zc@hm{L4c+ z5}nn&yGy1hLEE~ImoHyLE-nRwRCf{Vo~xe9Nnlh14NBcv@p!&XSx2%9w8(iwfcf_A z`vAxX&eVNGWBBuu*)JiyGbPyQ=^TnPkf4~xnSg9{(7F)Mx??Zl!m=6oNp(8)%mo0I z^Xa^tb9)D*$X#8>z-c~Z&U9r1C)R58epc8f=TVGD0M8@yjU6CT%*e<6?M=>=nlBx2 zo#zDejmS`?&OFDJb9Vw{$5h>wVF9%9iiiR}?>p;I@_Eqc6mZd};~}FTG#}o1i5;@N zJ?#Z7{T&k3vN@qQcH|JZC>Z*r*xX zE!rR307QHEG;7+1vpm{==+`hug^|E z0ch6LI($|RX03&Z1>cLo1Qyw;$mXj$9QI1G1uw-YYL^jit?1vhk*c`)z3u8?ej7mM z)ONKm^fz%GJfBzU(l*d!(QEC zV=ue+dc+DPiwWNL`;O0#IS8^S-Zx(Q?q&8(5KC*n!7=1n-yHVhhV`S)yYFSh$2gXU zx|2}|=qC@Gyw}-u#e3P)0v+J!>#nptdO2mk1z70ewai_>%w_L9xc~18*LQCyYm{)Ww}-~k05(No z7RJaj47chi**~Dht=5M@H@@PlXULVl9~*O~p^;*Jt8AD|R+9>0Phjds?h0al{73&Z zMT=1L^4*&+Jk$>c&3QHa-oJb6OpeZPJTq)#$oS!=DxlTLP98EGF+w*N2k{}ywIuLn z6kC>Vz%Jf@_`?3;FaIa|%fEkZU%tb=a?EiO;jKN{n%dUxC^%5;M>Q_9?8pcubY336 z+s$BkECgV@FuAp&5KDoPWf?3Q!$E^tnnwF{%Un6n*;;`P4BmygSP>c;?dc5SYJ@{9 zB@|~L;@l56aqqY8xo*K=7C_G-AdsZR?*3 zJq|}2bHNy=BL=|ZdtO0nz8^F`d_kl6-;>C+ByY-zy z)o5Gg6Nbufr|8nj#CUu8A^t8AKM5>F>7OAABycqmyy5y))+C)ZbSOk5KrrTJWBwF~ zdq%;g)&?+j2gN*ULh3g$^Z~}_6n{b+sJu%$_c+HM#TJ{!UkG*SS>b&?)w+;#hRrI9 zNujb;EUG>`G+)&+G|IYn#G>KyCKslx}XDOzJ8bE&$!x32vB;Lkp>>+#zm zLutiAZ){BFlX@gX8-0M#Sdcfet?^zfI6&A(ds%IDs|##)T?uS_*!2pPt@b}K0rN5a zx1W_7m_MVM>|??{VlWwD>EBgwiG>(u!&Fw=rf)-DH<-$Zp9*NKf~vi2Kdie;G1lM9 zWy4_Z-&@J8BdB8S9l_Y%oF9fWJHwj?~Ss+*fKe;YN zeI)YGFAgW}8XHYTMCmb5&g-{-$nu-_)V3wc_r<`!7}G6;UvAfj)N>l1dKfA!dOD8q zRXo^XB&tYx7<~u#czYeWV|+eN6foeuDNi?y=@0iSSbG1?-mYv0N($hG?_fx~Awq{o zR%)fOE3pdYTRKyR-cSfzlex#^S_wfdjWoU+hV8Zm6P@lJT@hY(;fpDT&)8Md;G=On zjkN`&mR=0AFdm}R#AHAG@gLa}=7WLdfw<1Y!@H39Zx&45+O8-}j|GPBi6stBDTZ<` zxzED@G_ssnCW`)qP|Xc1w1m^ajp`;AuaRkse#XhZ{_2=M~aBUETdj8_6=h==DLCfk)cpo9OImePISuLErP{=ldMTNfB~OlrsFUi9 z8Rm=IU}SI%Ux!X3<>}!X<(O3a;d^%~^biNaIf;dgdX$Tg{|7J8aq{aHXpi~+KGn=| zy(pV9dp`5K%y|p3tYD~b8J6rKD&4ZCrpl=?%Sbw9RMn>&7CO(X!zz#AR5jhIWm?6vS&H9C#7UeIXAn&62}jX@wAcr z`7y~>>?I_)o7mWJtd8`Tg+hROMj7YM)-F?V{5xJ7O#c@v^A2FCvOZpx<#fuqP$A&6 za#EQFqDYHj28DAFWl9hU2%EZ=CaD!11S)GqhnkBivZzKSVk!2&Zzr7aGpfj{2BylC zNJvz;gE}z22uxxf>TV)Yx|f4(hI($#_J)RI)2`BYYrgHHfW03~a+AnPV>&w0s)DFA`l_l9N`)_i*>Ajv`?~fn3JnR#Y6>!#zfrJ&k zM29~V;~_Xxy)I36fz$-%ECsTh^OUsi@<{2HY}@VISmY5cZRW@ALqWHvw|um2m+@BG zL&kZuMYL6zx676Gitopj{l{6x_`JTf-S`>a+XxT$g73#0HwGt)ym)RT8LmTN4h8Jx zDUZ<1Fg9T9`givyH#TGl;@youdT8Av+$DlQWx;6*IJvoR1Xh;xE<2ldK5_fLF%AF_ zj%4NpGAX-O+JY@s?}G%RqeXLmXeHEKJ==Q%5hB*yRRTz^AMC@l@r6uzjWT{(=G#rq zFukzvfBxeD2PiPUUhfyb{w2jUg4z1;{%wZ)0%%2RAv|~qp(Le~jzp{V-mw#q|{x`q0|M2D7@BNrUP1rWVK%-AW zD96${FxPPGKIR9tbDM4)aCu&EQ!X9CVDByG{5Dux>!T*GJHuF-M90H2Wu3g{fY$}C zFvbBYdEQ>u#KW+sWL1L1TY=%-D*~4(joIjDi+KWo!BssO`bKs|qBcHGT|H6?vt)F7 z2;QKe{la|R5DGf;eB%B)lli#4;r&XdSj@eeK;u0O_)z{7zu zQSd_P9d|kuwcU9+Cm{5YR|lyv7cFY%Wy@R%sAgF3`a9}#!fD`PsI-NA|6*3h)L`N4 znlf*dk8_Lg(h;hwxjE)%GP)e=0C7N$zX}CbxVc{F``F*&O6-U*ady2kTBHS7oZSf% zcA}4|KKt`C=9DNiG@3lde-Uq0C$XAfGb>5850Pc*l2$<`7W`c?4|6aR*YLXv3hU+-NNv_> zmv-C*L)pKDB}=?aNh|TcdthnNDD4rDiKWM?-a!6&ZQx}^^cxi~CB`my?Ter? zg?`w<#?Q50jsLDVY5+@oCJmmR3#rEvNVYlv^%;hx>gj-rhqr{(d>4bc8l%(t{i4`# zg~r1BQhWLev?xDz=6u<1i|hH5eEwgck@{6VUTy0%2isP}rM3MY2>yC|#N5BeY<(RN z`MTfR?i{q);`04l_UdDYxdJ?G3oNlr=~W!Yw$?k+?e}ZCc+MZZk3l3>VzY2OKgBJulChx^{UK9_yfA`PE&|%4V(_7qVxZU zE+3oo`erO9(0X+3zUf!p3keq1_vfpD2@#||pLmHXVYBd|#-i?L7QH9C(w8M!GBMM= z9PUhUC$llcQfi-PXEs8AD&y!zP_w}X^73JgvReXc5aQrsIeXcP zhn3NSMSDDi;L$>s4{|104~A!Y<)<+2<9erb*4(TBsZVk*M6Jn&P~|pd{@)? zKpLRb6;P3rcXv#u(Jk}4BWyAvH*m`-0z=`N5?et$OYbU6GU`;y=_9sSjvla85-7sw zb&X(QS<_UtMkme>_b4HPFwsVpT?hIL)qE{-hdF0~`J5^8gZ@Mb8fRhWa5gv)b7x)S zF=vjQ$OndsuKLx(Y^OQG@yS2~3`G>eXwP7(k8w`xO@iFPBfrP7FovS+P0MG3J4~iS zhNgNn!0D9bjBqDO-S>P}4s48RF`9DvNc2cb%`qzln{Fm2&#*C!^WIXPL5g-TQS5ZQLgWD0EhXZ)}2)MWX&mG9Izts44ueTK`ns=)N~q9UvHB<}Nb zDmv-2j4IjI@ z$l{?Fhc(?cKSy&}TDVtsA)rvL|NZD{_HomGY}|K=_B%i$xyO3` z-w0UdS@nUktc1cgO{=jiix?eE=EX=?0bm*bhoLIywqVMiQ@xMdUDlcON2jHbO+_rj zqNi~h=P*42u>9D}_X-AJP7myG3v3++>dG(_$6ispaA|wC@S@dopZ}Ok+y|Zaf{xn> zmWIJwHxPJ>Q0D-aQVo3ZHKF2AyW z_wW9V{Wt&b|EK*o|LuQkfBx6Mu&+L>;{+hI55>;fo@3r_qf0p!W{ME`@mZ`s3zaVc zAXO(&3}v+QTZnlaZ<2KaU_kgJ*rl09YbfcC@H~Ze z3TV3_&2x-CpK`1S=mVI6y`1N`&n3(=vBb!WmoHsd<~#6h3fDgn+%60)Jv&gMG$#$yi;Pz7@OyXj@&fy?k&dF=hU8Xqy69;y>Gh~rWlHiG4b(0)!*f^nO1E0 zU*k-2gsT5+JC@Ww{@}v*>x1j_@4j$@1`j_E6FUXKJh3)cgt?v~&+mL<`19gnPhrF@ zRC^Rl*f$T*JU2d^d%cDP$Wm&Z5|rf%x;MFaD0T%USYIMhy!NSp(#U(!aT=MUo)7JG zq)byPBt~x7u^eNZhSW7J=aUgWtn)sw3`@Qgaym`rz6c=TbsQhg_Sxq@^0tvdx-1`7 z5b%}Xb1*DCjPT*!4V|GhNr9Q@^aPLxii#|GudxgX?+e}Iaqfpc9T4?Z5iJ|3B>i|7ZW!e!YU31&rzO z&e{mX{5e6pp75!lF#$9)$@ zveaW;e1v1cnYg!aoq0lEf!#wG?19^(t>3G2?r$V|j=ibK`UK-OA2RRKmvc@DL#J8AXuNf zxkrSHQc2y}Qok`3Q84ajJXbt#mSOT}2hW=X!^M&o3QaZ}xxP|ez4sC!Ek&_#fT+uQ z>+5+)XE%m3AAFtY-*bfdnw%Z+tW}$M?&H)(UU3U&6x!qo93|^{;5i{s1ZRLpHyuLZ zS)ef(zs^!JF{H%aHaUK#a9$YiG4wUYDb5k~S|x;|$G<;&rt-|-e5iT4FCzj*ktWtz zi`DWL_BPFD7w1*5{}7^!F?6zcR>k^qaLpVqvpW*vo{PEvkoO^8!7__gTYT(F85a=( zpT2r!FP=Y(l%6Sam))^L)myYLwuNKm?Db3)WffPk7t2(rtQLjG79z;?QV=E!8ywgNUQ2(2Qi`_HZ7 zv$C)DZ2+0azDpwQSCoo&;IbF$Rt=^Gy`X=!9u|hg0&J!s@bhghrZ0@IZYpxBPKS44 zUmFvHL&{KiuY-!;i7Ly^<@~0^;lORfJ zm|(0_)+pEbF`%2FgXO!F`sM>O))W33;IN)+CcZCe>1BBVh3Yz^xv2d^UfWx0iC&Lm z4DXaeoctUKnx<0EOwdJRM%Ntkc=v~~i;HlQhPU25_iaA_V*6#|H@Gg+G$kw$bD>aK zzF!WPZ?udS_~z@6bJa-eyLIg9$z(hCa4y`~*?#c7&s^HSFDeerx`Z<79UB&j{Ki~2 z0W_Tbp=FLzy_W!L)SB{m$1W&R(OQNXZkTf!1F{tk2O8_69vkGriVQ;ntu55=xsS#V zQG-l%)(!-|-Nj;hA9HM$XUPYf@+#xR4t+ST+z?TSY>OIpQHZ^7m?ZatFLC0*@WeTP z?}vY|GE}epxGE>|;r+YtR-Xd+KLKO&)oWML6ywoo8 zHvzPn59@hQ%N7Vldy74YW85%z&BN1fZ$q4kA#S$V@aVgW>I#ZJyt9A(KmVEi+5hry zeT+lh6d{lA-o4of&cN9J-e=#l&%X0L`~G*I8=4N0!Pse}M~~dJ=&PRdO)vAiSSEye zDz~oOEEd3u%*r(7ekB@mV9uzAilWTtc{MLrVCMa;aMfPsD9uAu-d!6v1!K@JPu96- zUWUSLjQMd&F3j?9?_=%hvlV<#i+%CyUn6qJ!Di&MpM7isfMQGuC(iK*iWlYz?;N z-Mba|A{X)$VT(AgyTdIFemsGq<|o9Gjtm`)97~2f_bB}k!Z&0eS0MF-^*kNGVy?Q4 zl01EhI+_m;3mqF1^B|+{ryL?rpFDN&bi>+_QY2P+q{jLn(f>z2Pvv-uXN}n52phiR zJ|Z*{3xs{7T#Ipdm>MG?h6C%&yzx{5?Nr)j|2I0za6EwUGxK&8V(DP|eCB=0+`gkg zZRb2=n`_r2Ozc0}5CUS~|Ni&<{1?rEE!ZzO03swZu%s2UqI7wYTryTQ&M4 zWkQbeJ`_%mljj(o7=55fkth?kWYmP}p(?MrO;d*MYH57*o>`6r;|0Hae{k&fZkgjR zaU@PkS&LH6J)G$+OQr;x8PC!L?zBNp3_vV+ z1l4kaia^wN3YD$-m|!kfjL?V!e19xU;#w{Mnqn-4GXOL}fMFj5j!kKMBFFZ)rH0Cu zzc*N@d>*l|(J!6fUBzNMkhwRif3KH~E#F5Sma8i#(%k;83s$3DG%O#Y+T2QMlBU1$ zUcCfL;+1DXi$Y`-H(fmuq`8bDF0W=xgl4up zveh>|QZFs7OQ_1O0%Ck7#~CzD{EaGvBh*X}CFNgw-bfn{3eTrv(PJ6mR*s#haSxoj zn9(*?v(dM?KZZu(;p^d^%un(y`*z>G>}U&3Y;%n5r)k%Izs*8p{2wsI_1$a#+r?5E z3=iVxC|AJHy2x$mW!07}z<~_M;pUhCCTdt7P4f1&cAy&p$74Qd6^^SAyh#S0DMao- zktnKsa-VII(1ImsQHT{U!?uvJ>ilm1xp2xd@}_Q%$IL4h(A&5kXkf_OoZyCH6av!` ztUSu9Xj^A{6^=*t4M1%R`~hY@u^<1@ACnPm6btG0<(Iz>^<5fX?^nPHVCG?lEcq~i zGxtj)Ym~4UESuWZ!x~leo#*Pt?_{Z_9OF{=ZiI>Xi_C$yC{$5V*q%-TF#}?BVKCje zA&ib)?8C!b`_&hJZ-4Pu|K5JJUfWl1zOr}sZ|%#KrTv><{=)wCpZy#A@BaIL6%tDf zNpp{X8sHL7=_&LSm@%#+3e7WQk>wmz3T1>(j$F%dK2BuAr_4Kz(hMu$?kMN+!tPeU zHP0tktxZvl*2?_Qe4bG>hK?J#o;}ymcy;!M%9y?v54}6vo7H)MeA`w$c{#cxK6@K2%pq3fLNJ-k<>hnW!15+KXE9ay4WYj=wmAQs1&|_y8|Mm!73-;PsLw$V zyh-LK!fzwzEyhIv(<$d1T*r;VF%K-mG_?#ZKT?Fr#gmYmNyS&aqt2!?sVgvd_Kr{7 zQ0kp>OlpjwA3W!FJr+vYKouB_`S~1Tc3ygh?3S1GD6EX0TN9nM%1c$-$6VSx@xNU-!_N~;hEqv7k`V?QY^Nl< zQhl7_N19_)qGl-$8q|ca9)J?-o`yUg+Lwd zalGV&!u{)^v(CszyM_Am{R&E-ry@0Kc&fgrsxqibgT#HzE^1#kg~)0t1QEVpVB42; zxK^u4fPeyC_!-NR)OO$hUD!)Mk0Ly(-|M=)iu~lsUI&+>6D)1R3M`G^Uj>_19{2s* zq$0bcTgNahY^4p9y^js<1(`QZEVUGg-mxFWE$bLnSr)+Z=S312tR;REeN8XJreTqD zS<90!MAp}->amr<#H$WesZ(JtUU@eb<_xj*+au^VD2~lGU!MD^kFdNewQM;Q$ec*DEjn!pId~7`WHSH-@Sj$k`dWRe6}gakz64xR2aP@)jGei3X(&fuX}*sLi7k@mca7Q1yR9BWrN|dN! zgaXwwXJ=F+8sYuBD7|w65W;U_j2yt8(~0%+#VZGSVA#NZJDgFla=GU3Ki*oijqO$+@T>Bf@ByA?#z-cG3A^k=h&kBY=TSO zOYQ(Dd9yyxxdXwXmTQ|*E!f+f+esx_j=xmao?^Zh^PFL_Y}1_Q+Xx4CGrlqRa*mp{ zQI?I*iEe4@cw0?J&!G$^*0RqqpFzayFonYnpO3Bz9AZIl-+gfQ6U?yjJmb8E0|8&% zy5k~3WYMl~S4RQP^Xz4JKB)hFYowpS#+JAbY;g(x;BQ0~RzQgbA+ma@MHnKRl_Rh) zveExm)d_{mDiTtQaE3spYG8`=s^PKO(KgDJJW{gc!t50xSBbf;y~royApWjlwcqRI zs*3FX0@{^C(_Yk$cI)PMg-WjPsl24`^tpDLM1Cr5twpqU9T;LVB}2TgfyoeA(dVt! z!K^ep77Xm_L8<#eh^#*A#>h6Q?O?yzvR_{V?Hc&(SGMV0G5VGUX<7*%J78j?Z#HJH z@2!8$xBa8*<$ibPu$150Zf&(gvW{k#UUb>{c6nYBToBWcf*#YzbBu>d9?2CmUGZ-o z`3&Qf_<&I9*v=4_iz92lqi+_o1SWd8MsaqdXT9a7f(3rsecAxHaZc@<4ZwEM-<{+zB)_jp31&R;S~W<0PCZD_xnHak{r&m2NJP&Z{LKN5)H#p(+w8t%?dDYZi6{Q zh?a7Tb$<9P^~wM^ONPD0DpLY1eHRCbx^i)%t^GWT99u`^^> z_i|$`N#tan?QR7J56mTNwf$)XHmz?_ErVe(rbPqo9Y0u9Ri8)Vay(C4E0$tqq-N|5S$KU4rECP zg$0H~BN(#}AKrPJDohdQ1&{>h=1c*tn8TVqzkB9@5)!fy8Uol9YtO zee?RQee&ri4n%SN-cHM<3Uk!aY|aoy{;h>S;?PHaTLJbE!ofAU>gV%tMhKXSol$*5 zcXCiUH%g!cXu$8M5BGWh{jb#h>ALL3ktGVcJ0kWz^Wh+pnHuUURaIGi`wl<4UqDZx z=h5@jL+NMVuDYp8iR2mf4glU*W^0)n5U~$QWp;g{llw#j0s%ODv}MCG+z0g+m=>F; z<@Mag!oU3Y|J(X!It>Dw9LFrz*v588zdL!6JR}yni5C)-Ar;5T&XWamVhl3c-&t^5 z|*ifonXuXkJXEP?cO@4P`o(H>Ro_7S$@&oo=?^-=GG?jWyA<_{8-3= ze~9N@HP))HJL)Ho=k@(I?$J0#i=V3)+J$kMvCsCQ6srlOyCv3{ZZ&t1a;nF2G4gRb z+wh&mESohO@v&SKMfj)mH9qfsU9s^~m@32tj{uAA4J8t})f6d4a)Y@VL|a3mkrL0R zS&y}=ld0VL=`_d##)NPy{&1 zj}qGxj8J%g%!MhhMHPk0DV-ro!Vp0uilW?@xGt|>bU$Gfd130i?Q@Jp#$@(>h^M5S zu!}pqVZpqzR@NJ#i{)ohf<+b|`fau%P2}jXp4^8^C}87rEZ(VccLEeUL4Uh@9(|hy zEVn^XrC{c^duQvVgO5Pg29dVaEsmE_pE8bdrgi} zdiwh@W1t`2yLGVdgbP-@WK6iXggFp#3upYklwlnx<#4@zs73#A)x9e92R@Jb_VVd6 zp1zEXpEYXdn^vt?*R|Jr4F&SzJNjhE>T-+G*CB|r?`$(+{-z#YJZrSo9uOpf@DmT} zc^ropGS|Davy6tF1PEe#ygo1X*|M9Ofk*Oa(F3mj=Ww<>UB`5xfA7+tv}N7^m--v) zh-mSj!x~}QS*N*|M%iLn_~-FngMQwG)nz67-E4nisFdrXr@mN2z|Yn^BdkaO(y!<7 zSX$roCuT)`9`3B1m-)Iow@+RV#29@|R`$Bf@1~;o$+6Z_Xep)arVBxKEp_y7TB44l z#g0)p6xh`Bpw9pJ>;ENKT>-!lk2fz520)~tFH{Ct!gRVEE)-fMK>Cful<3x2w;&~} zDfbUA?`U#SPwBp29VLAB?{|PeNqd zp6z}Ul-_I>+L>Mt4v+?sh8kC{YO=Nt@YDlP<#k2ExYoGHA4zxLiSfM{{{SQ-JX%K$(fi*&P7n(*{5z5b$4&&{FQRj_c&iO@QkofS=y`a&!lmU zSVMP9eF&z|N(NY50mt3qxI|ktvV*P!T4+CW1+H#w6>v20D&W`0z9&U4`U&Y{Rw|OT zhM6*e@qPe*W`)(-O3>@z+!Z_bWHcVGr$gC@HC~=9!45o4qyNc}Ee2j!s;m~@3zzKE z`4n-CU0TITE9u!oFzl}>joEB&>DVibh-q@yV_5yZfA>DtG==1pBKF!6uD@=D9YjB3 zH`YR;IT@ZBY2iMzT^fahnF>1#{QxN$jSyZ>cX!p;E@_(|EZXZY_?qD_4gzV)k*T2RGLJ_WEz+yQR$TzW@W)M6I_<`UAbY53voW-s{oP* zneV2+_H(dg28-;iFH@sr5Gh2RA6yMukD8?nAcgGl)gKS6OnRRICd|^(ENp{d#d`rw zlx)4+jy1W*LR$f#2{4K8&bPqeEm1Ze8H_0UW7iazWf{(%zoqP zO~7oPczGQyo&|gSdQHELdKnX@^3ACYoo2^+x4J7N&bORtaEqewbT^T;Zymp~ckE7c z?JYgJ_z1Lf>zk^zH(shAJ94z~q0Rp-rSDqu*3EFA13Pj}qnd4KI_~Y~cWA4vk>9?0 zGX(gqQP=4TE7VknaMs7|9DMnA(ce@g#2613(E+Mj(U=)y&-2wyF`r|{;FyxTw%nl< z9~f@C6b79jGbW@9N+}kur1qc$J{qgIz@zK8s(8K0EK_aw>cGI-7$Ar0N0bk}yC1J;Niq>E%wdCa@GJDC6lc$>lnX^CzOyY7Et`&^J_LTTQ+B-!VA-NV6K5M#(>1*W4JTJ z0x7`p?)|$UqcO0()#Lg7v(2*oA>!Ch%Gt;i6aZv!MK;S5Sv#d9a%<6I4}HFOVj9GX zA#H^T!NrByiKI|UQ-KHaR2s7j`?ww$TGfqRdt;@ih%7ZEPg{KME47P(c!0{S4sdxz z`&?wXk2&jZ$O6kN!K5iH&L>mC7_gdMfnjc})TBmi;OS%*NdP-zE3M7ir7`y_&Vjop z039s3=o1L`rZ8JaM73L|3RyuX1ECYia8CCA%(&7{=I2fT0Kj_ZuCP>giDXCwU2gfC zP0`S*yDt|i4lQPsX**^q9x$$8RSR-2)^g=MDGt2dy_X&Y#&GKF-(Htavb7S7**1nJ zwAaEl!`)dmwmq%N8VVGxV|otU)06~#D0pm4FYdl-46JRUs6eoV^DHILUHSG~4+k)| z4&U5^0%`a52 zxDvvdier8h$%gc{nSFio=dT8)ac!*Co{opE#7f^7mG*g0%Q>E_)pwlIC4Km~XjzQlNZp5t`2du;>(AAQSuK{Fl-c5L|`^A*U;0 zzM8OJ@_oc%q5x=agT|)2hB{?MUVISw-sr+)?GcWER#ujQ38zC z9cav~jmO_aKGLKBQNKkhkyJ)3h_~+`_#sA1pl%0n`ES-L?<|kKUp<=%@6<#u>l){! zwde*$Qy-Vz>+K>C^tbg_{fR&8SIUW>b^+_s)E{n1+uCTe!oGd`GV;dBmC1qAxW}+Q zl8i}z`Yw?esILa=tp7C%{z`mq@l^zeqyO^wDx6bJhA}{BD|^c|l_Mt#KT}KYaefhj z4hdt004z77ny0m6-1V)tuDkDJJeK`)bZRdmS79Hk3*^>cZr~Ean}DJHaz$F0k1mXI zezl|^ctk>Uo-Yl(1RXttGxd^vxvvRB*C1pO^QK*Yau8goIl8AsD8?GwTNdVQ?e$aw zgLtblma9;ZH6d6qRa%i@ZFCmY zuvAvJ*uL7VOAEadWVM0S)C6kwi`YFyOjOhl>k^>K0j;X2h1E|v zJVkKUxd!<9;Dj=kyYeE-u&2$L2-Y4MlPC}JygBX)H)7t99-W3<4dpq>~DmbQdSVFS+7DaN_4 zW+lKG6e7x(s=ZukM6~vVA`xu?ka=ok!d>EmZWUcN%h#U`*qi0I_xSCJc~%#u@^O!v zkz3LqbP&Q>%(Gd4xd)X|dDky7=XM>SvecoZ)I3&-lC=yu4zb6tU%#~RW9hlrZwtr8 z{WIoarNT_hE!>GcpRc!t6cL5%2J(4E%9-u>`8;tNNY0i^lre?00{5{(+1dM~%X9)2}+$AGm{_8)NG$r__?`d#%Cmc{R6@NR+ z=B}jg^m}{ZaW$s>?!d&9U#+njTw9YB)BL6Jnq6bJL1VK(`7c$N8`HEIOjQ!!EA|p4 z(Hz?=ESUh7I#+R+(6GRo32;fRi_lKI%|dG_{S#t!4b5e=RXH|jx<#CGOi7}n`(I02 zm3aeuKVG)qyvMPg{B>NpT)q1drS2Z$i7)%^Bv}V{?L2z+k>weEJ#@A z4wyj7u@J=nv|dZkcRja%#IN`|p0o7pQGP5YT=som`mPG?@+OR(H^E_c0;Epmh|(U| z<~T2d#c*ZIg|@aIz%oI4AB>6_xaW<0r(~f3Au!-4)M#PFCh6Ke?p;g7h4wLyRt@h` zY31o5Xebf72@hm*HzBQ#>$fykqV_4zrZnW71L0#J$X;#s9fbV^4{x$yayUmLNB zaw;0gm>79566j2L z-h`pGnI%UonfduV_gyO@zo3)i+Mx1K)zgNx+_j(@AUdBukyNFLeTY?yk@TFtq!5G)0Gg#`^8ya0j3eFrBo>p z_}{;KUn&85Q(BEu0yu(g_Os7FFW-LmSBn#M50qwUKt96y&FKfQD+X4y{e_lIW7qz8 zu^f}HUcYjy({_DJhqGCuP*5kF=N6ga&WU`EvP_=OPLk6MNIG!BJ)UjWR*S8q1rBbm zZjGB6L)*f|-umY<(-qX)2iKqOw|+TSbM3_SLGGg5mNVR9tM`?20*EMzn#h4x>C7^%4=M9&VO@zxA!a8TgB`Sx7mBMP){~?kh`%^F>9RiR+;DQO~U^7h=eoE7SaV>|&EA!ZOFY z=Ho?5q#my1h0h<}SgeT@>5c0%2)QsOO{sA5u`7jwu?TPD0AmWz*%-$iYw60^-R-zzikt>_Y_Yc(Vy}t|H@RLv z9WdxhaRvUn#$S%2?D=!w{qRQ@f70Q2T)VV%S&6a#O@PXzsW%qB+TG=-jg6+qeDp2&~jXQfb4qDxqpHQhH^ zPwnE3Alc6imeNvpR!_xFHpcqkls3_#N(;=+`l+@IZ8uw>_te@w_37vv-B_H!$Kr9iTks4#!6gynlXDD0Mx_P?&1JDVnwE`eHcE{=rUuA*4bqWN zoYfMV{*}z9%c}WV+=6jx16N%uSQex004>Yc zR)-hQUzh^GKy+hF*D~^^!cE_;%VP%jvc|+VVH?&hjA;t1^Nx_jEgQ8e7vXGx4(`J% zNs^H75<_sBJiUi8z;1s4S`JVhoQUX0*jz;kt}XxM1}>$qb!(;rNf9v3%m-*z#k)c3WY%!T z?uF8^`*;LMP~K1ccIG+(AXAEB?L016ZuuB520FIq0KkHP-r0`}nRMM!S2qjQD+i0p zu}f?Ci6lOa3LebKoYxj@=WNeCa!ASwi?tNb{r&gfkvaBc%7A7py&Q)e2gPw=#B46h zU?~;@YN?)!vQ62G!`CY)8w3h1y@e4PxrGd_zzY=@C;-kA*F0Uv?lXD)I@jG8JK@R1 zHDz66os>nxglM^##vmxhMmabKOP?5{%R;ayu_8UGXh%@;V5zugHf9&?(~-U%OHv!kC2vGH59^ zNoJ4DuWDO;mi1EKNxlxRhNNib=OcdFm0RGke}XUP@3GjZt2bDR`i;CRhxa|BY8~Sj z<_b$U*f^#JPkAuyM@mhC^2d>?Bsx}ZvM8`#<_7?WABlL2BF1b~%g-;j5u6C{f2!I*Bcoc#bUev%-aZxfx!UAF@jJA92p7 zN@}`)m-1x4R)Mp=J5dS)Sa1IE%g^?6qIYUknZl#Ah`T9uw6FoDmO)e9RcIV z2^eY#M$O%9>1DX<(&a7By>adU_`^bU1mk(!rQcV%cKSV(N<(QJGp!=kQ>_f3h$(3d2eW z-zYo@_zQ5$Rr=NImu6wC21;f=Uye5`1LXG}g1Npg1oNd-g3MFN3FT2P##lOr>zUTH zi&;)K0d9iO=y^Unfw};q0jRV0VV*WCW91C^TrM$QW6+nFJ{}Xv)Fx{0b(td$Q+XGC z96ZoENOym+)*8rtG@xb{D7D3IeeA>q-%@QD zkar8DF^jUF0sbxSa-L&7LlHBmQlP8^D;77py7C5n2+Og@F&AqC%zY;rnrO-NG#RpV zsXapI-|Fz3BwCjLbvyX&ci+Y4cXz(G{ymF`s>pqFO({ESw1bp?gGre#;q2>1H{XYc zORO;%_sSD0h0dEdudEJA-=#4rx7`@u(;!09O+3c(j;_3eG)nsn&UJ=e#fpwNaP)`f ziuzuC4%SsDb>6;tJ=Ud`JX*L$NU0ckPs1IW$NK<(V*EBG$mAAFrCgC*bK-jBb$9k_ zC#~ap%Kamh+gu=Ve~g7!NilnwJw|(CJgq5#PL1GxgcB&u&l)*}{d@pNDA>OH{+)x_ zd5Lfp%?r$bkbdF)!-HS9_Ms#+LMu~BxRFL7XENgCT$m*HvGX<=eJ4HuOhR@)guZpk z`yu}m8<+u#md#FL&;XSJp1EXflJ04)vkAut2Xwt>tR~0oO^L_MkHk*3KSAzu%Tif? zMrlf7+p0HmtWYrNN6U?@mHBm|zXM`{u~ zmVBvAQ-MK77ujHv705(&juui3WchhZV*;RwK`+25A8{Phq>#{YECbBdokV&q?Dr5a z%i+7Q#-(!|kSrxw0$k^MfMh=~2D>bQpFHXCdc3}#rQi5X8NVSDn%OezQ|IaW8I%sN zD(hd5EBW!3K#0{O1oHtC+`7X&m-PT$>p0hQf>B7L;HM!h?cvV)RTF#&Y$@O!SIrMd zD_DxhD#ch9v1$26?Hl3%nX*`_oe7xxy1Vbwa9oo3j-R)bC(gfpjUOCMSLKOC^~pOs z!){6QsHTVWjS=yezy9h=0td;$zU)ZJU~Xc)k4&vKjRbC*CarT!=!R<_@pq97-tfHA zQPj}N@8`7xG6P8*4}Bd>y>h43wFNZ79kMEqW5Cd|XQr%4+djwmQoQnrSL^|-T-Nfw z7V%FxfXHm!7YT-}dQ+|slivU1FMmtH(gD)KxH|v_Vsqt>toXy zX%FLq^xXak9;0Q%GIZ_386u>~xiIq(^Arh;cWrKEgiCMP0fI4C6(iPZHT8I|0s0h= zIGsge;#z(Qb6AdEy?kW^KjEbTu(2|2&LS4mWL<7EByJz>$Z45y~QJd--M%clz=8T%oifJ)cWY5I6Q%e1^lI>AzrDC#_|IonB z>h78kmaozQlvq7+T?n8vt*B0Pa*5oIkB^T=0e+&mb^N`5|K7mjU{kG(WxTUzmWO~+GK6b;DP!GVd>p{Sc@Ou#;-F0yJ`<*= z#^-sobsP0|i}tCExP2)Pin*`CYKeJ**N;qjB3JQPYibX2sfA3jrnq6+CB>7PP``TI zCV;Ukm+tM_>q<9NBjh@Tas@&@0J6t~ULp-lqorA~kQOIO@Q*x&uV1|m%Vx>@vDOj; zpy!xZsC%Pl!impjF@OYjS|8kczwTU=aUA3QLhG|%v)i$3z0?|pT9_rR4_9`%(k{!0 zQB}TBJi~75=DLISz^i!?X{xps054nAy^g2d@obrGjOP|Jt?uK@t;0<{n4Aj@0~Y%^ zM-yvr>vRk5We}5v>`)y@3w+Dl0rhrLHMc098S6SP3u7w%cOM@kAu>UwTl z6S`aDJLj;wHJ|7$P-!V$LiPf&(n_U^$b6K>2gfEVMGdU3<`N!T^_tTD$yIg(l<|j> z4L$TgtRn0bfv1{}@_)o%$^a$2Ad966@Ixl|kryRAEQJ+h0LxZKk^NL2kP!{<1vGET zLmWRt;-N=qHrVx_kvr_ILIT5`#ZsWMXVY#5pod0~z+I1;@MLMIX<^u*e;hmdHS3uC zp>wBaI$@P;@|LCouXL3?4n6~!uw2SQO83~PD}iQalHC;m%WbkXkHdUIU^h&Jug9Vs zX(~#xK=rZ{F5{q5jvR#90m5oPybO|V0=z8jN^qAD!i_D(82jJhUi<5fYdr;Qb`6nS zIpf%_zSn^J>b+LZ;>@e=dD=!2X=_sYMPz;V>Qj{7nYEi{vR%kTg(Qi2vf4)p{Ym#fICLfPQw1yK;wOvr^z3Mx~S zOJFIvo&>0M3b3g*)R>BKRnzY@0U#WAdJxnS;|`}9S!j=Cfa?O48U#LYUwr$;mtzWc zzXpVoLIzp6lglO8EoLrocx7uaCU&lc9zVI7i=lzqsZqe|blZgB+9FTmcs!qLs~#`r z6`!e$f!io(*92x_FVcEZR0txaV)+0v z;ab=@rroV_vjlHIMqps3bs25-+(4cmfByX51Xh5$d6!ni^RYg=cNg20Y{RHC&PV%N z{HTB*(tF%9?FJb$J$GPlV+Ng4FoGdlR$-s>~PF9l0XboHzPq_nSz_YF1 zm4rnON?qW$xlceNc2@wwQ*%~aw5KVyCc44)!n7E)4$n)Z#~EvzuXYcNv6J-}&jwfO z92(M^E2HF!jWUGu#g_8$1j}q)GU9D=M^V`m*HLp=RZi}R&GUDx5Y zgZ4$dCzyrJ9h+;V=Z-A4H+#Axuh+^HG-j!9KXxCGm~K3pF|7j44g+GS#QN>DqTqil=yw7 z3C{7CDw*6T(GXX$M~T81ML-kovC4yq0&NIlFQq9_Q65YcXjYUEHnCsbD82wndo$qF z-s&g!i&Dx>sFp|E9{BC=wU?TYSF=^=iSPV#borCl=evG=?CFv~YZiEKRpI6{?5enb z?d8DcnXc5Y$&=h_v9~Hp$TNX9$Iz6LfM*%tN6%AJuNvUCrRwOS(f&vE@q%gqw*X}R0o zGRf!TCSS;ur?dc#v30U=SU$N)DMbh@B1UO2)T-TsTt=cWcDgnWg@9X~n~eS8YKQh8=eVFGH!qQ> zD32ec*T#H#g=>M`b36aDFTQZnkIkay%%rrkuEQdUpP{{E8FvfSh+$idOy>ER2kbvf zxzc;YrQte_0;GLUm)>X3Us_){(awqZb)`>MdFD#xRN#x{|-$*qZ{j{K3ZI=TC| z_uc&H>zT(!o+3ulpzrF6En{ou7`vnUu#x{15{$(fVWSc~$GqAe#{CNYm;!Ihin%(&RgJcp$VV@y^!0CIp_w1*Q8`Mg1@ z7XWmNzbz%$S68}<%KPGhvBGn*UWP2dbwUJLo%NPCzyRoCmX(Wdi_cn#1&s54tTiet zvqYk$SD)XFd+a#h*T+Vy|GN8qKG*7&+~-@}djYue&gZ=tYymD^kux^0g^DrVU)JpE zi%|5b_AOl8_pV0eo+}jQZM=Yy)&MD$AY-%XAy0aK(@Uf=TGqYC9l1^HfPkioWbzz` znKM6RIbO29ESHMC#4!TRxOOsDRRYfNl+=inP5~;V<1UW3Aom&!L=ZioeWe*rP?Wl#+dld$L-_@7ZulHX4n`MuXMTE)8(W zPN`W7Ab)2uGZAP;dJ-|pVqhHor2#y_45iNs?&Wpu72p!@#Wp3=I;@$@e_5GtC!RfP zOsH)!k{_7%H6f10-HrwobA4hs)G~mK1c6&;)r|epLZd+)xFxP?7c9H++p~*Hxt8{0 z5iU>FG@bTi0Ed2~dK^m6=j{&MKA(pJkN5G5exvQO>!4sur!dg!l+KfzVhbQ-noS19 zyXJDAdSGX@Wu5930_LYGT&drdcnD`)ET+)|&3>()ST{x&Tzw%ewOohgYPXj4sxJP} z<#tKO!wGq(P^gE~hag|d06=Nsh&C-xU&an7)kfCKjq$yjK>F){_|ib!WghW8Zb2IJ zK=oauIiEzA-*@9B?$Jj6LeITOkRa4HFmMQ0vO0AQMD~B9%dH7JzS}#Pr9#5)5lFk2 zteKWSLJa~c2YpT|QR5&v)^q(aw1dsHsh@ox7#ANSX}u3aDCdwu(I8fX^?! z`b~NJFfYs@IPok7k{_>Z9EnjSwW_S6cwUHp#88b`FM=_r|avjd|ZMV?)x}sRE(=;&- zay#R)TAw-ia4-R|31tIb(ML+iZh0DKC0Xz0)+u0W1Uay@-8)H)y9D1eHgOKCi@YIV zt%N)7n>VkGG4}rcF6I)1*Z13ZXg63%5u1o>iRISZxi6k>1u=zaf`xIQr}HV+gXO}y zatg`a8BDasx_WmPijv-sLZka9VU2qE;yJw*wtHXRM_irUL`^xiIDlCqp6_Hs5wULo zo-dv`gR91syJ|CUqbX+4eq?{ecticfe!Jc4gSpUpT;IG?5cvJj=Ej_Bpz>_jzu&C8 zUw-+8=O$&|PUR#O3+%)+E}BzPT$mz*b+q-jD*n~4^U~%F^J!idTgxo|Z|j>cK7Uh0 z-lYB4_vT@FM6Brjox9OutSNPiyKnZGTkZ;4wjIvBLiH6=c3Upd|Jx^JZhK-KqfGmztgzy2Mku8`tI+! zw5KXs_b#wUa9Qh+j&yu?o?8*IM>x>~YHxEVc2}H_B6phtE+` zl}ZiQmSEtF^Y|Blt`^1HjbzJp2ZHD$&dEywy^bf9);97;?EZSx3+~YNS4sd|YZLTA z_01;~1%)xGeKn@I*<4nZ0IH)-v*Yr+yr@-e1l|H{U>1nZiXOI`Nfx?Z=3THo1b^t5JdPUEN6-#!Joy3 zm}?I!QF~~v^*c?d+Uk=Nt2M>)?imeBP06nbPSrnStjRj1@mQ$&AFRM)IW*uz*Ganu zso~qs%1KM6CDT47q6?1kCL*87?yVReg`rxT%i7L1fA#up`PFa!sr>W*p5ynO`$6>gVaS@OeI4lGbc&eVY*xWcXsd&?5<@pQAQ!Gx>;<2g$&@)^TSI=`N ztIEp_WEx1RB~mjeZH>s33g?9^w{nY)`9a`gv6Fp`wRL53bF?K6Tpk@Hn5(ZTHryHk z*JXgth1NK8uVb8`dpL_^i0Ovqvcd6_SN@r8i} zi{taIwSK_~0GA*w0r&u*`~d6n%(OJkK@nJB@jP%TZuF2qk!2DBHr!t+1={m<0t1UX zWlm0fFKd`9vYZ7L0`x@oRs*ixEs>V56a*>vaG9OL%IxcAkL&f~Kn?TC`ho&G&O^OW z-501|b2m!^_|;v7S1JT7wF}yi%2b<6-N%D0_;>?Mqb+Xf{`lb`EayfL50g#c;^A?k-)lCi8xstfzX0%5}w3*yvg@vP-n}c=a{e z(%a1LkzsjYsQ~v_bDwV$*BoD8xz=$Ex(GMq8z~t?kf!ydaIG^XS9L3P<+@U7F~2AI zk$G%DVF!|_O@RnEf45kkov4ZHhbdrA({2{SB94V?qW8e#40^&{Ab;huwWn*9+kb4bRsf+b}(MG|bd;pXFx*on(QsfdlOXwGzsIY3FW(#E5?In&U9_ zJ`YYYRmtx=15ONjyyigU>t`-ceN}eN_$lfBRtv=<=qH#UDs5V+Pj*o0a??6iIlGGL z+PiW8Z!Wzbuam(Cg?S$Tu|)!Tyzfc)6mp6Cb5mW1n_+yX7>Z@MkjC20%~Kc2LU1WP zz@xxOxe2p#f0dFgOSvyjbfI+3Bm@Bk;P=RLrY7ncZ9Z89K>OjyC<6fht>wBB*L^+C zmC$k9I@?8KUCIH(?#N;`!R^ae&o@E8u|HP>?xqr{4%BA?0}1+@^ z+xjNF1Spo3!UeIzKq@7K=_XQ+QYf%bxub_Zq>p~^z8lwE_1Wq(TtkDnC4j4#9@98% zLx~ZV<0khU-afg!UN0zAeDHb@c0c>yqdS1SMMQgIR<%uq{vLcSWvED|Og<)C7_-#($bEhQiwUAZwFwwg)x#zGf;`bnk!YkqwHCD{p3HQp21BCDzftBg; z(OhW7Y^(K1xg$HluSld8DmpQNEOwXR(%L$#`_;jJ_gG<{GYpU5-n9~xVQ+)WvjJd+ z8ki;Z2SHwYVG57qNjkyoXxkDBvFzNsskar593Ase2yz? z4_Rd0!%5a@#c!*wlDpJag?ob(n*xNPP--LJxdAQ4F`u}X;0FuhQPxzFm^e7{; zuWtQp3J2p_qGfnlBx|kVuDsF;Zi*OYVmKBNY~mHN_;2Z5i0@<&LV?i;SRuK_R;4IG zf!q%l*__G{MFc-Q)^+U2`y$KbQ}LL$Lj5$yZpnSwJ+@1etZt3A+jHWiYgV54?<1uD zPbjBkk-RA=-ayXv@PJ1^+S4&Vfei<@Say^h$iB=Z{mJgEp*_%GAh5KH!eS|tw_Z`0 zrsT>+7O^2pSAsz(%O$R#e7Ga`4z(sxeoM1G-YW)Euh9_os@=-IP*@ZIQ6lqFZ=Qbz z9jQ)=zT(dtg*kznaV=e6KOZ2^zoBlc_oPX!yW8zSVN@bP)E^q_`(d$znY%G}EeMyJ z&+qr<`Z~Vq{pt!asna*E73{k^N<-{Sv#b{xWo3=&?6+YlE4#it0x#FrWeaQBExslo zbK5=QPXf>W16{1E9mj9<5kb<;`zf}) zmYp_PkB&`j+s?{A{pKG?q~x)MmNT@{&8RPfY=VHKhg+T35HVa6H}r)hJefJO)=>wM zXh@mig2Eu0X|%whcs|TAo+Q}yQlszu{;Wsoqb>Tlx5k#bM+%LY^F`x6y)XOgtZTo~ zE3V!5%lP~IZ7qbQ^404%+j{si(njbSy}RbzXlEc4ZI&Qdkjtcec}SJ;;Fe9Z<~R!_ z+65^MdKs}vrpbn&bWx0xgAT@%%N@D|r3o zs%Ap!Ivc=U(;8(0cga@n!@Aj>$m4DUBqo5KC+3&D_-N}3L0_{}IFAqA_EiYVuqwGl z$bo^y9#7}ZBK5(o+Ra&gE88;SF=6%m@P2!?R~C!fnh1B?WmBNh`drsNG5P%VTg2Qw zfBs^7{oeZI&;Rm2>~*HH2;=hA%lqw_?nu1T!V2sbvdI-yUG97}Tm#LDHcbI^WwkS_ z^T$pw;sP@~M~qFi(o(vPeF1%lyoojsgCJ%Z*8c5&AKrg(233$3iD0f4Ygbqn;jaGu z2H;`Uw7i&}>gZAf506yDOmuUenzxNT3v>8N;bHyPJm&J@VWGwPQeNFZ zb9T~F2^dZ`uk0Fhfwc8?)!N!Q-)hV!8)G(}sCZaC@2uxEUW|!4k@ti8(QSkJH+3il%i*`}YW~=*e~5*DY7hxB}LJGUo0?QXP?pJwD84#m03W zISo&0?m-)aV!!3#CA;5&&3xpH#Ilbw1~w3YQzU{izTQw3TL3=)7#4MJ!^V9CT_=HQLz%=s|IXvLUIyC)`w za`=q$1CqEm2>%Er_`Yz_7^z1RILUY6qBI6x&iTlb>kuHq4Yr5KXTM)1rdBzxX6xMk zi3T+6ag8-oxzJy;CimWB#n&PboB(XUB@p-PI@DoRh?;aY#js3CVDc*rmrXraSf|Kf zh9aT`t7D40*}1Z*M!9`zeg*=JHY_IE1T5CA^l%l>`KSl9)2_*O3y$=Vp)Kz`YMV}{ z%VmpQt}^wCx%lxrJJyFg@^Lk)qd~5}RGUU!2T0Uki9DP&U9;X$rto-z#{Q0VEY5=G z>~lTZcK|I41Y4iH*fy+R{^A$KU;)RONLb|Bz0%_A@gcmszSioAe(%Y`<`$pMvBl?ZL*byzGcjM;AvU|M z4<`Gw{FLo%!o$Q|mw^{*2`e711Ay`T`J3|D=f5bw{PjPT|M;K(xAMRK@Bc4*{ra0< zZI*>sHfG>l#*FGl{UcY-3tk)PBDH>dByysZjGaLkM+sUOBjF7 zkh^+5PVOnVuTqY{{qX&}cMcG1CGhaJg~f3taKrBb7Qw12F9P%%o)6%0GP0%1um&$q zob+r1Hf9OoN^FEd+j(dki$g2b2!HVUdV2+6RcxlaFzWf-%^bkRz}$tdipAS`rDY9P zRk%PJ_y^-BU5D}H0EKxj$nD(c$!uUl=}#QAbyF%RZHCf<$nAGn4V#@e(s=keNL5m} z9%4=+R{zoJO^f`tzCCQ$3AbI6jG-Q$CzXJ`dvBV>me$!bnL^P%cc&@hljSz7R5k8` z?N)NPBzk^O+zLtnT-)MmalJBJ{%vjb?KVKrqk+a|a|M>$WpTFLvndefO&Rdglm?2w zeQqqaw0J9Jhi`|Tmy>hf$fDqBu_(T=MoKWP(eC9i+3$MV2Nx+PS?g(v-MWY|*4GBI z)@sY=S}wVv7b@s@sh;Gt>^Y$IPHS7Gn{B7Jm3s;d7GB-U6#$ji_avY2o*Ik(8_!R? z#B&YLEP+MKz4|y?+o0`Dp~H}k=l7mB)rGcB04YW866-}M1-0HX&c$P$OMu`!?iX6a zrT9O($SUvrF=P#wQ_gx6;RDI>xyVIU1zwFXKEax)I83}|ewW`fCuT0RUfOYaQOcsJ z6eNi^#+KdWDjU~HF0)4gw;$YMhi-_!uOq8RWt8P#J;CXPKR%jwsou8L!HLiB83P=Aj91yiPR6=*VGCeLx0uvq4_ zB&xp#G_)id;9!x3Rt1BeS{6J1XuUiZ0gT(FA6|X4J)WQ4R;BIQRr(XdtAFa=;a)qg z)<;lZ={G>${_IlfCjmyDM_2Qy{BSw6Ln#r<=$maR0_L@jdmJ@Db|nhL-hMSej{XL0 zZsBSpcRXqTjlr<4as9Lc?5Y}Wm~Alb1&BBh?ubpzw6p=*N(gs{o-Wt0KffFGxYfF$ z{nYoJK(5qJo_j3EI^F)XKh8ygzqc*eR1J;7Zzu?OURapuy}GJ&u^LlgE+VZJVSqLo)Vi-wJiFP>J{cG@eT2G~8ixD|7K}exe)CWNrTp%n z|M&7A|I7bTe*2&PxqS1>|4`n%{oHcpNf_&)WZBP8u*go-KwCT<@~4pz)|igTcI-*w z=OB+!`@jEiGGZ~uVDa`b!k5~@qKJFik~N*8?>)|NRx<}s6aY98 z7zS|$n_p{z*VWY=69sw{U9%GKAwI0o8e{dfi*~b+K}cOK&)Z{wLs>DsUJf#y0n^ir z-~wR{;}|n=N!MdBGzJLY&H*6Pdb|?6!?JlkKO;C-qWco=YA%SoMMuK3lsyi-81OkEJUt{2=y;D||u`l3!xtOCq-WEOb7-|hen>uh# zF`KJ%1Sqyy$DnX>a5u<(?n!)v_fP=TB8y-tIlYtZx{Sv>6V#f*>f$*RBkIme#y$vjlN~769>vr*2WO)y0QC0rZ%6$oShO(igz0qURCsSlzNKB>m z%~So2&@;S3-iEhe_9ldzEPy19L3Vdw1H1>PN+$Bm1@b>If#NWg6B918%svsDGK^LX zy9<$q;dx>7;x!`{vkt*GfancisbhjoM`2l@vFkU@R~T_``L>y6mU{dIrLHH99;Qdw^G z_D`tYzoqC?)K z8>L^L9d1uOQI*S@bh!8PXLsd4{_dZ)jU2IN?rOLCUg|Dt%r$p9JCJnt&k-XjFd?9) zdpj6)K^w6pclYNYl(1A5VrAVmMl@c2K>kOCM0b02hsAL^o0SQ5hXu95@`&d^eB<`{ zv;o8OJzN7{Z5FAw<>l+o%ImjZl+V8SrhNYSH|5J;{L;YTFMsp9@|*wVKb7D7_Mgjt z_}%|nez#d5|KkQA@%p=e-v0jc|Fiu1x4$c2|HCis_xI0UY|n9Lbula8DwbTe!HCPQ z6pB{H(p4o#XFQx~oGr)Ty_4V=$xSu$F zakT{V;n!b%9r1!Tt{^-;USe%-NmH*qu%$E)F8oeof0R3ZAMSuS+)f@RYS!qJ6Y-$k z?l$0aXI8zL?s*PsN31HX8Ei|r_e$X_S5K?!PJz;yWykNQ*t~@R>SQT9CL0F;WdGm) z>;Iy4!sp$K&H4mj*2q-q0T`NXIy_9Dubjy-VG>tF8o$W<3iK>;N*a8J2srWPzV?ne9Z7LJNB70Txf; zBHKn{dx0Fdo-!Aqf37iBP-J1YF}Ml(P)f*E)hv~hlMA69ii0dw1gg-B5kvUE*mPG!^iX=@KCq-Oi(5!72WN;5Ys8*b&ZR};SuUp}&ygnzo)v&p z%ciCF+3x)wXy3{SYiBC^dhGuUHRvT+aJ7aiCugh&={dF6*!-jwHUq_GuH)zMJW(9z6fC+Pd#spY zDPe0F#9e;eUFAoLCA69U*&0Ydt84h&M!FzZo*6+>AF-wDlHx|$#;#!Cn!mk&x6O6! zkc*U_Y2iVyeH`@w2P!Q>2^Of_Wh2iCmcYoaKL|Dgm$rK7chd zlYy!*^sdW@1*;|R5qJf_7C1&Bf6R5+^@{Uu#AZ6|AF`|5YXvHI;NfW4>x|2!HM9I& z%IScPuWDZRY_j&k^RAeZj%d9OGv3uXc*_o{0-ZRR{G9C~ip509RKft7Vvf!3u^2Sc zP~h6KXr?5rRa%Y=GF2E*9G^v-ET9Pu3xMTz94@n^_dz&MP80<0*{y- zS!-&^zt5oHI5%z!{e1^euIq6VsMfLrDz+G|S($K*`&-ks`|W#`TlYGa;il4eS4v>m z>NRrdh0wIC^8jM5Su8=$>ze-V?c2wBEl7O0IhsbXFhM#_tfBD@;1SlwHE7YrGI@UavCD*?K+9*w6gtaEN-uU5F2=1bS|2_Rn7^|aRX@tg9) z3t9#Vp=i1BGl4u`Z5zj$6CcRiGpwtdb>_{R&&u1h>*O)i}1RXDMamR2_neba9}cKW#t`!u~zz^PfGpes8B% zhEuex1bge0ddpW`T5UZi4oO8uU)Ts+U6~*Yl?ndE31|w0tE9}+#*Q&Jta#qC5`-kQ z*lkHB14h#Gy{CvUfpl?#AH}^Hdt(LD<9jDgDkAl9EqlZqmO?ka5}@#W68T6UmO`uR z)?(cUW~Dph=!0;ccEJg+v_hO=4Vve$%=k{@;8p^-*God8a?x$$ucwE*CqiWE~q(2}B< zH51rR&hi_va|VDzKxnTsl`WVjIC&>;cXI zY_68(DvKD)#S{R@qj%aYj-Joc6RrRCuYcW?BAc+dSswu^@69@QaY7f~4?;2k0j@bx zS#03(@y)$qGa0iPfAiLb~aBXMZoXhK1uicV&a+ge4#{uT>JAkAn%M`70 zxOcd~nv3o8aGm!x-SaNG6>S5*b++|;SqA7fcVrOr%qLoX+`>CObD)T}$Fpi&BIXX3 z%FBc2`onv3X>F5PAMLu6_v81Qr57<_D0gSKYC_OA;51(bur;EnDcIu$)R%P)(k=Am z^G%^-Aer%S7ZTx!*hOr@vOs$O`tw~buB2J%mGI$%lM7w8&o4G0U~K}xbDjt!UHPOm zH;va)TQ}~5Vuo&QkUQCZw__g|N4j!;I@9g2kb_C~<*OIw9&D+8$Q4SPri7Jt89)Hcek}X%#(YJJkZ@8i{K-bi7ORI=qk5{E1uH56zthckCY-z(oNPHN5&~K%38s9 zIsOuu1K5G?v34E+C$NoNW0`(2#+Q&`*_XPPFDO9{%#^{Uiv~}`TlP;1aerUsmfo*~zPO4&pfKft7Imd}5IDq!+RSBSF4v&nU$ps-$LK%Ui2VkjyehFwK6MRM z<0(bKCw^OQkD`3bdQh3Dzglw1(Q}yKvAR^)&iA(Q6#^}5URVSH@a|?4_5nNrd`wtc zI^Bg_Ie^X4+l2EdG_ADsnx&&Kfp`Y*v~pU^(w)cfSbB)FfdE;e3c&&Z%WO&s#%Vet zH5c#P4kq%^VkN-cr7*Dp*+NqsfLv`?1%w7!PDz?_*N}S~jZ`e&wg3S=cUXe-6H`4v zC;`~`_~>m4;ox#{7er(KTb*tnJQl_jO93{=Pnyb!n)KcVbE5Lp+vNNA@0>v6)I!l`);ANVCKHNgvVnHi zw^N9g<>1cZ{kj1NTmzOZ%lG*1d$JHyk=07n-(8oh<MQ zq;Lrfi>wHE7E6mF*3XsuhJF`<-4NJmmUK%PN19tA~! z+r=eczVK8Ya4UWO^11!~Tr0tQ4dsJ?jNEob_Ve68>uj-yAh`jVQLWBW>A6n5QD<6a zFOLr1E|+G*`@3(yWxmF9d0##hv7DNl-pBXe&rQle7m(k7_+ajwv$0HH%rfuR+S$gG zyU@Ba1%f-;2{E9u23uQfTCVpWHtbXJ9`iMGXUbbYRFK+RzYjc7sjOBB&IA$pz zY;F)h4M5j}P;H&DzI6gaf;H5Etjv|(Mvd#N#R#9;So5RQUCePTg|;sFdA`njo3%FN zi$cqvc|WvPB#lV%Tho&27HOYr4lb)PcEdH>*Jz)UoqL7)yahXR-|d<5shLY9S z?jDS;h5LzdHuReI`pRu{7za=%^x3n?)As1N6Ot!HMnp+ zDRhaQT`6N}p(eYAdl@_yEmTL6AMl(Y*SutH$l=UQ@8f8b$zQ&FxdIbFW+%Z<^rNhp zndB2UV}=RDS=xPs85oCI6Q4_!Tdaymdu03q*gTN zXGrREETrEbfqvcvog)mc3n{f%W^3e*@NY> z%lxf-C#z-DPiAusKx#PRei>v&<8WYSMk@hJSTUcXSWa#9iQ|E_Q~ObftXWL&Wi;y$ zGLOFKaNNtkFA>wJMAeE-=>b4T z*Gq8T0keaXK`rU|3*)eU2tj_TrFX+A^;pkKqO(z{J)&*R(12vcJKEX@xWjsvBgm_mqBJLb~!IO7MgtNQ$P(D!_^ zejrr^|*xZG3YOqW_-}+$oepv-t zNmPQ@=JQGGxvfC|dtv4lHBM$A9Qg#egEt z(v(dnroCXQ3$e>$JfJR?w-dkH-oM+F5qJ(GL<0HF#X%u{i)X*D_oM%+r*BZ2nr8%I za+US@?-s3o^1gkfH^I~#oZI@i`nu-stc%qjeS$HMR40G=%U=y>S56ScKc3fxdG0g zmh1HI0Fp@Hx(#MK2Ll?evC7EAC}+;K1@$Xpb}ur zw=l}g1KioyLma$nq?-Vu$JOH7gLIZ4!V}k`q$ff4*7rBdt@?b*o%hF-!*h2HtU?X# zwA-ZYtF#datb_r_R=*m3;^2{huM!MUsx_@#b74>}9?}YG;rDy=-95EDWMdZ zeF#lmuD)H$ffC9D0kn)$k08Hawd(--5*&1RG}CTCK2g$j(|8zCvHE1xp#R{t>Wypf zN1942V{`oGt6!KfwycQras`9upxb_Rc5Bf5IGLNMfvCxa`qOC>`tSUhv0!$+cZNM} z{=SOSt~2@r*GRLm4I zT8a1BSu@p^>3Cnnc1RklI>v3RJ>BC*&9#@n8bat~R)~*VJG)lN7r*$@iH~MiWLyk1 zi15W-mp!kiyW0W40&G7%dhD2pK1A@M*sw;6&zQe1Y{Q*b#{htzKYwe)PQ82T4ilO= zku=s$Q)9XfCzyG7oVB9FSaN}q9uKB?5m0sS2|x%_9uR=KFz#c_*klWZWV4vLOX-Kr zI`jICyL`gsRTd(pmhipP!I9N{bwv<>4l0Img|Q<>RQwJWA1sgIzRI-$7VuZEUj=9q zK>y;)&&#{--akfneB2obIe8kJ#|Il@7uM^$Z@)7)+?f_z%Qs0&U{;#QnkkYQ zSn3cLYU5aWEjgCa-*~LYM~?#qFon`Xtf095<2uvTkN~86p2rt==LF0LVUq(ecWs6> z?DFnIkkhQm5+Cz%`@zNBhBsjR{zG^e0MyDNS(%1I$`4uW6yLhg{d77hMpU^Y{gc){ zvC(S(f@?ECzJLoC9J;rXK#G9bU0kW4!8|5-H0I&i6=ZmIk|YliKt9;ghf+tDepr0Z zbh|btaVobw=JaA9m%?a?eZA0Ke8qg3IM!;+1#1^t>o7A-Im2-;J(s5d;o4$bI^_vI z{FyP$ZdGslWxpjpf;#q{?3#%k)r zpb{ZyvStcUqB8_Ck?jG;lB=wdcETG`%Nvw3ngx>o$r`)Mg_*6G8?cP{OIa_0UBm?= z@=+XrD!YZOlF2%mzsvZj^Rw_&;HrFF-~F5|nYUPEqhxfQj#(qgqS+59B7;u6D84e~ zz_cQ!SiXS)~u0|kQt8iyRLs{te{W;T_}MHU(exW?kzNgHCXPsC-~ zcQD(-d=HJwpjNKwZl5RGUOe*AHuCk!7JiQ7gZZ zED@gKL49>Rt58!)A#+`#_f)lGYiD5LE>7*x6S?03MoeBD<%dfT0D1L|@6It4 z_oMYzsY8&hPmHPE5UQFHWmA`y-+cYLy!+SxPr1DRbE)h5O*ntIee*~QBonD4k@%*q zZs*O~xCx#UT%5MQ)A^nxBX{P82cZ{nMIa-Admbzx*o+{oO0(_H*y---l`}S3k);Ir zkH%Aej3KZDsLB7OIUM7(YRo82itfR+p{Dx@T-HjLOj>#;XLK~uk7cFhY`Aw{x471w z)qZR31)&9r%{So_0yzGV~lVchAu{Ge%EO-)fD|ia#nQyt&2C>O_(t z2OD=}dtFU%`|RyoQ&w1hND9mDGU#KmD{ovK>&yVlPS7%ueR8EMy%P!X7%fRXlp#LS zT5;<-*n+{hncJnc7V(8|kVQz2T z1WmJ6nmg%7>+{H|*vV8}T-o65*J-_T>yuK+7;~$o+4$(7jjX9i_&CSJmRy@( zl~zx*YoSu5Ix!X8k_A@ey4z^=T$vJO4aR7a{LsqU*B+KN^{aqnNziKtp9THZzQ175+}E3%_z-Tt=E3lO0lCw zeGq$FD?KNI$zC8)`^EUpR7dI|DKErYD}b*1VGO@{`^MUJuu3}!yj)!Qg=c{4w~sA< zE`atRw5x+)Ou$w9Hpa&a*5~F#T_wg2*PnHywb`Y3i?zKl1(LfN!&O{_PB|k3Pr3c0Hy5IvTRQ}Uk*u}vqq%$VpY zLt0oOY1C8rVBpgj7d#dh*mL6iRDt_{dWjg!Bbr8$c{a4)Qd=c3c|h1bp>UlmFd41K z-(QjYB!VA-O8ZXMOMy)c3ThwfpZ@eG5&B3YVZR}BY|(oW{NOWvwyh4LJf@~ZR?MP7 zEjHOh@UdxH05bcP1uaS5wS>U4hYR`hIJ*0xJ~^B(!#0`cU%&DD3?{~+^<&FZ=kBf6 zM{(tEEqjr-e&VcXJzLa7Dx|g^!n%q!C11I9uoR_YslKA~u!Q&$;Avq>fB=^i>PwGG z#G)Mii#ej^k%fm((6#y0I^0L}d{KY?HrF|w<1=$uG@dTC3@4X;6FqTyde*+L)2B}V zk)`IoN=J)t|3%g?9i5uHiGBU%MR{?L&Fwpj!I{^4)7)aeU5xSYY+CB&QQF^1;c0eo zVnV=b)=mhbtE;2~?5ns2c48L}A-z!<;O$}mvik`j3B+5iN!dYgSWC(N1YybK*l;je z(wMEg7w-h*k7RHFxSGZO^^or)pD&KTSLP|8JVqm9CJ{$kZBWEWfzJ+=)84ky=%#Bu7u|$gtIoSgB7xQ%$0Ih zIw*5cC&pyOo5_+2_dCVhy5*X`Wt^ddGj9`9Ce@P(=)HPkaJj=l;QZq4=j9$QneX56 zIVhw<==$ifq5^G7vmn4F;mzFVi(BMQ(uuxFtOdPH>d88o zQd?Mgizl!rAP*(`8(_rv{L?#T|= z+)DZ3{d))A)vcze1Hh468J38RHsFG~mZ3O6y8>)&zp#4aH|O(vkHy^j7C;lnKUfNn zbCDb0O9tQl_MK3lAw$Ax;VaCS#79R0GAXK*x4 zE#iJXuG-gPDLX!X+{OjmPC4#zHKp@#1(sI!9$=FlN7~UFgEuUi@2$xullk>!MQM0W9;iXjN`66rk8v9D;x(2sd)YC18 zVzLEmc4MC75_PqAbtoxOKkFB^r6z|z7cG?Xp-(YLX6vU~c?N#||FgO4%H8}8D152iHxyRyrXgB0P%~(t`wJTUy zG{_jdc(2$?4)$QS61dEommRn)zHEuGLPz$mH%b7ZYY@4&N8Sdh+VBPd`KjQt9-vFl zUq1ECPcHpOoiS=slMo*685DO)S)aT^CEyr`{kM%SA4TA>=3n*@D05tr-@RUe_aV58 ze5UWadarLVL3_BZ=&y&yu#`^$xPDcizHcgiy_ReH^$&f{rGDb>x@Y~N)BUR|;)NqH z*4WHZqg*fOy85es{MvwxZ)_)8=)mAO!{4&ZAHOe;@BUmK-~Zp`1NS$aB=lg%ZhOHizzD+*j8aOU-7nUaNPqGcO#X!c!eL6W3#sd+F2 z`5G25v#M_vQk-Kk z{>VBh#cQ5V_Uw$8TI$Cz19^VDLj+?`IW(-Ic!P8V=nQ)kZu+z4!QQT(OX=d{a950I%G znEH-ZO!G#>dGb)iEB++^D}+vX0q5eq(j3y78Qd;ME2cvAZh=b@n3|;$&qY9K*HJ9y z0Y42XU#LEfJD(;)COMW{hQPn)Vmpk$WWAA#C4t3$IPT(64>#E`^YVP1yK7x^6w!TX z1ke%5TG_KTQ@|2M13>RFFhDzu&xiLnrDs?$vx_W_B?~47vHcFOn-*lTqloh*~HmQ>KIuB zbPriMT{d;W(Kd6sLX9fAn6(NBR$X!kllwaD+n^-@ZwGqSCe>TL(4x>vZg;v-GWAJV zvTKU0s^#jLa%+sz(ox1B_7Hz}^%+mYXDlW9SVCtj*WFGCVc>%q*^21V$MjGgdyF(` zJCPgW?X$b`Prv-8$kGhiq@EF24ITuH$biL^@(0YmJjO>N6@>4ZbWHMW$JV3%*uCnkqS z8P@L}0Knf<{OU>2^~yM53tcV!b9dKROT*#UT__MjFqkhNxB6dfe3;;Cpkg&J3oGYB z`uc@zuZlJ5)`4m_kJ*96IoO|TCD?Q@>xt7D>qepT)D&kV!Km#vXc1*Cj4@Tr*btnl ztXUajO*cWSQ&>(Lt=#UmDMf*D1`g|wxBZDZ`o8|^D-!>dAQnL^+)Ti>DvngllXC52 zT(1ai%*w0DqxJn#z=5nIJcNff+tyQ(KcWee)00T z-xqBNH@%M!VKt95Ivi_IMT*KWR&yVl|x#HS5V|!stE4H+74R3TgmV(Q68_q4QfsO2> zZWXO&X@2|W^YYEt-;6bOS($fr3Q+IX>Jt4cQYN@++ZxIK*H)d^aCc4b7H@1hHcJa2 zX3tg%U26-K9WBNo-XmUkqKiFlFGgfB(8hf0LqWZ;O{?|>TE&x2Irc>{FWbIIfTp(U zR0I?PRZ|#H5d;_UckkXi!0bbjw$LJsbKbmpZTX(%I3xFOfp_c$BGRk0`f4s(PF2SE zF4hkxg6WfiOw=25tkIRca-2HA^=o0CN^bCLo=k=&u(acFk%i2yur$5iDl!hiMHX_s z*kozRyb?x*5on02in+vh0F`>r)FeH7PUh<{9b*!n~Zq&Qqnyfsp3x@KqAFs^_N!m!^ZJcnWJGxlm94fVt1=uIj-RELEW>@1+H!NRKzD#c><(K~Phy?gQ6 zz#D`QZ2S+KaCWxbfDfC%_z+rrw~jrA;Oan>46-D082UBV%cn!cMY`LZTY8q+-C0A} zObOnr&m3?G$jA>!ulItESKFC`gYk(_9 z&SBxUHd;h5b~1~PS@5@KhU=%3%shmfwA^u}7_j)w&KS*S&uzVXw^=rw6s4Q1Fw&gh z=I&*2j&;kJug{FbrgFw}L=F!PSkQvuwD^9bdW)3B$d<}F(&A`sX(Mc8;W*R0ySqDC zUFXH)ptWWVaNmopXi_3KuI0|`?lG7+_SIKkTiO}K2|C+sCzzqtzEcsxwGaSC7DxkC z9H5Q+iCoxyyt}2;V~>||mW8p^k#>b+yV9b+CPlE~SDzVE^4aq~b`b>*`DCo;wPeOu zxgN_+oEph8au)mA*yx6;yxhyO#@y>vm}$(}yls_hY>6DiDpD{^sRMA-`04zvKk=g-HY5A5jWoHp0|O+ zQ)Rf0?&H8pi2EVq-MZToe^1;z1G0YOB#uStLNwg85yUlW37FHk`Gt0{ddx&vM%G?L zx-pu$2hobvxb8>68c4Q8+LKxbJ^A5rM*km5%$EAp*hzh#fXeaA0m`l}Pr}0W zp6h0;(jPAs(D?fNU5#%YE&?ZLonL+Z3unV*yxqdY&xDMIn9vtJj;=pvCNTcG%gp@$>v>e+vQODi_y2>aob}w${+@ z4_92TaA)063kPi3is{0u`k#l=!GY*rhoR|G!H z!e}mJ&en?aUc7j1LgHvE0^~AMK?nfJHPr`pO>3`PNW{{scJ!1X9&g%{CEU|$IH>8p zhoz^puS3i3A`#tRALyp)ah1COi+nHJAe3b$3WZq;sp!oWKPZzZc2*zwpe zfUfV$XPlpe6PgRlcgCRk%#|~6-D5fgcTZhI5s0EV$465bXl>Sdu*M#Uct^Of zf^8V2U=I(E;f9OjzCR3w=`s(ubks*6$c6hcr}CHwpaPhMB@?37iS-UkbLnI$E&(1D zBkgVEY|2KyQfo@HGS&@|QaPwc_mEpwxO1h{-O0E2TErEHPqclEX3nS2unu8O^M z!X_!SoKd-j@~O*1sE+l%5(utR$gr;laZj4Jn&*pLihZC&ocL}p-1mi8qkTVHsC()| z&M5wQH(pB*P_}Z;&142vKgpW!Yc$>E>qzC)`xxIMU|OYMv$-(GXYaG&hHM@a^CdvM z7B{VZcs{W{cY2MOmr#=oFf8e7nkO1x$|;Y`44L2uF0k+*v~`@u9`K~dO;$2HOU)ot z*&+~&DWg*kr4vq25tdN43YAPWidSW}kbz8CMg*n_Xl4)?^I=!vx)a(u=US3t$`u~# zKSL(jaFKlq4fg|OZW*#`ST*|rIpjvwdj-43k66?>=sclzxXI#G8Uz)+XYQI9F!-!Q zsVFHgrnDFaE;R^YQqRm&C>XF9#Q0Nz^)hQvP_mosH{X0yk7GfL!DuEmS-uRdc;WJT z0A@X1YmctVz9ay<8=6||`}ls3KyMtE;3|Qu6$xIq0l|Jlk&uy2xc=qUp{M3cO}D9e zG7eBd0)bJF5_RtxaHKZVX-YK_F%sNVBC+z?`TS(}BtZ0PRd!oX1Rnd^OYkvQ8{D4m zIp*55isf_EX@JK8QRP|^ZK2zjW!FXnzK^GU3J`U5@6O_@d+%M0wc(X?w*lyQWK{dA zYh|@7dOSXCUO@aRBs`Ev-oZT9%bQm(2q*^&qNPeGwT%3ymB79j%7p-K?uTunQ0(Ve z`Vq#t?br3HY6Z};)?{oHe|;d(IhN!6?Bm&))}&F$sV%ih8TMTzh>x)wR?s1+82C)9 zO^jXLxeuX#*n`tLTs+3~eiM?7z^E3Im3TZEEGn=Vp)~<4l!`#sGzno4$o1F|{+1wm zup7DSD(8iO%*qx?GR*Q95Jndyo zYaZfk>%_RUrDSgd3EG{Ot5^>>2j$WxVG3z13PG8t#kBlKj9#ixUp3AK4<}%$3I4b5$){Hxn+H_hh z=Zh=woGo-J??LcF7h)8%hMARd_IifdtfM5R56z;|4`;d zDM5Txx^>E})E_@S4niKT|57R_J{kE}M|^A@z@o275vDoO!UegDXR8mT)=GeKqBU0@ zL$W|Fbh}+5?$={$&3fC*@NQr+w^05@eKputOUMN$<_4{&Vc{L?3ZJ3qzT=pus#(XH z*R@Z#q%f%Q`&A0T>aNBSpRNhl$NI1FW1lAxka-(SQ;W4LVr9#atsT5|^FTqGmFd)C z%_+1#7qRP>YVoP=ZBQ9`HGr?U3C?5|x4CX1Lxmu>#Q2hDjp9$W2Ps98@*&HEMRLgi z5dJE!Kv^&4H3(T8R!hZV=5RK>(ml4*E!GNC5!z>gNx8I8vT2^(P(nlJ8%itVz8w z6zUUa-oD4v$G8k$fsm)$WgM5lz59GPJK8W7+;;W7+*N85OWbfzty<8jnfB!I+z2~K z2+FWR=7rtsH0t~mxI5*|tPB^A6+quvV}hJK&rj zE23zx9=POaVQH~#qn3b8vWBpBv!Be;0-?L?g(ylxxt34dSMP=}=Ppg_aQ`MSgHU!l z-EXhY!j%s|4z8V@v1I^$tEJ$03h>!Qu=X$oN{$DnGy$s(+{N%gzu4s>8&34&s7mm10i z#5;cZ#g}14hs&_yI^~Kec1NYL=yVrtN;$%qD7j*yolC7dYs*Z)v8*EzeWRDe%a?Ds zes&Z1klen}tq=7Qi)y8k!hqx^Bzjwqm0vFZu1pb;O$&EI{22)kWB%}qh4Gn<<9A^i zj+ta0a;=*<{)&NZPo42_d9dFCXyM1R#U(ls%JY}ci!9oWWISkZ0K0Rytl`d7>wAy^YbqPy9&53kT$k5GoF#%Nf#ikO zQH_67@UXvNQ9Y5+%fa$o|QDi^46WM$km7q%5r%H#R3r-s8D`Qv0)}aVuqptq)wAY+aesI@|}FyXK1I0-MiW zBsXCqe@#E){D@v7ONr3r|<5T?;in^k0 zRi8?XYy4Pbneqx0gDhe%v+PZo-15}pxIm_iMt}Y5UmIk7cq#&H!k~03RbjSX$|wcT zNV&=~Wl3})Fi6USSwuc6;vW%};+g;GsY>kiC?6eVv%2TK;VBBos$tR0#=ir;>OTjd z*|O>N@G#LLsc~){(}UN1Oz+hRxg+E*n}H@uPFa#;FBNPnErEQda{;haew(8S90QH4 zv36X860Wk+iU?eaMOKfd!;3tQmOrBJ!Q?YF^i7QuCRsKHBDp zX3{*;ll39^qO_#E=ufig{#%MaOOLkg@wpR`asMsHQ6>$v1pMPO?e3D|QBC03p7R%< zzbXj%sHB^(b!g&IqzQ&~=R7GP`bs=iL&z<9t)q5w7t-^298gK~V6d*1-IK4Mn29~E z<-$t~U>5=re=TAJ6Flc7*b5~X`Q;Q#*~*hZzN|5(eZH@898EgWYCBCM58~bZv&h{D zf#~t^qvy4}xJAmWnREm5@j6?-8OUQClv{ZAZv4W;B0UQC*2-~Dp*knlo*&&sQMv9U zoVa3O0L&9ffZVlsSTHqS^f}_q!ouMFVgmETTy}WA5OP`onA3@tqcQ}`iEfGjmv7&^ z-7JW2DcsK%!&e!DXfCk?^Xf}iQmrAJ?hVjA)21&>!A^^gNi8DnE z9v_VFw(%eU2cT&nr@7Ttv9?*(P<-%EPBywI%Zlp@Q>XjwX&RPlt#PJ0OyDxs;uL2( z=2A5Uf|g{ZI;sIa=~7#UOSF3z3`NDnbw^e}t&xpDQf(!WtY;Q+oJgLm-c*FRDr1!AWgclpy5t`JjdIL7;gc&Y zClZADwbzgbwFj!*Gp`AXKxQ`hKqhA@!7G^@1*uAov6m<`IvEC#$D=HnB>9P4m^cRT zn6O8c1g8S&IOlrfkd;bI` zO%R~oIHCKr&k)TY<(NtX=lFg5uA=oCAnmTEYt|ce`qUh$ey=`0jcbxIw~w~d_riGY zW;lML&KhJEzS%=?(?(;~09iuHU{q|01$2}oko7*8SZU2spN|-qQwY)fr#v1|+YvNY z{;56ucJVwJTgUywbvi0o_Aanbl`*y??%YxyT=y=I2A;Fl9n7Wm+KpJh(evm*Fv@=O z4`2DlMF1h!Ro&P&r%5>mi{DEzm$mLJmL??bTxR{b94wcju`}%JEi8^@Hv{r-(|f~{ zldJBa@-Pk6}k)a+C78aezWC67%dv}&6)gyK*$A{$=omt z`?SzS)m`h{Rq)YMaCEn{n57QxQ6;-SU9sEw`{q%gEv<#hwWheASb}Q_Ws|#``TL1( z#4D|xN?`9a_-x2N#@Jwkm1}9^vv&6FNE0QuQvqvPT}l_B$!3W&;IKwM#vt0*uJ`uM zXAvLSx$bz(+he#6i-i|fLvwwsjd84n*Q0P>D#5GBqeLjAoTtUk6+1ma7h09kzQ%r8hs8>O9mn7X`HaLoD`PQ}n$*&gOpzba zEzn{owNxADbGVOM%8l(kQiPnD{-V)!9Dqj(k6o(jhqz+0@rvhtY~OGuM!A zggB_rX32>8u&&-u4$AKB>dIp%OQNN0p`{t|n`$TYivz96;$$BmE|!)@(^GMU98|Hk z4@-LIT)%Kl@iZC^+#3mJ2#mJR@4oxq8GBEjKh&+cHRhStGEYs@LIGh`B}*ORiddzm zY18oPK*fx(Xzlj=MeNG!N`U9>W&PY8%qwT4ERDF=1KOaasayxc?MUO%1K?x*Z*(CY zgkas;LC@u&*GXhB*F$MghJ|qFHeN@ZI*JimwMyc#HMYK%)~SUSRm;n(HLH*Wh)N6* z=vev}D43=ATzy{1-L-LT8zNN=QAYJuUwPk_0Fh(AmTbcHyrz9UJTS%@srwcI&qT@< zF0FT-CdSsJGL$^Fs%*c9%Q|9xSGI*KPdsK-z&l9KsK_%f2(shW5QeyJk@*~Zo}~@q zm~R@71wi<2URF>^c4t*&t{lf;_oxP%T_JOw^``pp$K`?-Ki z6jK2S5%)tf&r(Xg^^j^TebjrQZ=JKVV3Yuz8SMvKP;!m6pVNvN_oNk57Yha`e2~== zuCZc}#XwTp5?D87y+nZt9VT^XJ5`uZ$F8j$nDPk+*u-a9FZDR(2aCWAHC;){u3DuJ zm#I5J_;{(7P+*BgzVJ$WFs7qzcm6nD(=pYf7Pr2QI%bE|v2gyl@m)W8q(Aw)>pM{L zdEzG$7%PFh7CJqfU9S&eK3hV>pyxE>Jp{?PP9iapaJvgdPJP-_9Eu6re3BDcOxN{t z^>nhJ-hQrhDgoEwmVBQSJEO(^rZTMUKYWG#WY{ZN2I0#XM_Jpu|Fzr!TY0$&Dqns1 zdHPMh$zTkWhB;eaItA)nEA^=au>E@Eb5rN4TQh0L6`93JFD+d z%4%-F>#URvckWhZLT^|Hd~D8FDjd9DAROaf0KQiLZA^Ul_`$3&=v#mm03=w7)u*+%fDiXv5cI(E2M`0|9@GVb zE{-kCQ8@%}pP!HB3hm<`DKKR9lx6IJ$4-{IWR5ttVUe%2I!*xuR=NW_bLwQzhx*}} zQ3O!MHjeguF9uk1xAmCRg-W;k?HT~rQcCzZa3DT$ZB)7&k8>oERvY6^N+)zTte6)Y z)3Oc@;AHEVjbEe_I=O48u?EkU9!dbM$Ypvum0*<30A^~#lPFp4^!#!=MO&RVMaW7J zh-;vom8(|-NWoYN#mRZ(#a+{!v-o{6fs;5&>4ZE5${^j52ZB96Eq|fNGB;_uwJY8> z?JLnY2|P-nI8Enpsqb{FRjj2*t+e;Zd&TE^3D7OlE4O;jR514P;?5OYr`eTGk+5FRpF4jGy+d#+?9MiXajFIH*_7Q|?}z8_uwN zfzhVRO*UID0WSI8en$q`7$}n0X(XzU<>|^AF0p!rk%?HqelJj|w1;wwl_4tuO8b1Y zV#@Hvbc?Ezz+uUz$+}Y#JuNpMFjc7sg4KRtkNvrT%+v8eANeh>03=F&@EVd-44fm< zj`vJRdL^~iL#rQ|X4UbTLOAEcL;<)|0@dF$2d3O)q0s=KRE{Ja!@$Hq!XQm7vhh58 zZquGflY#*cO6B1in@^9Q900=*NOQY9J=hX>$yb)T=jwN|#0dSv$>@!hAcKwy@^c-3!J$3q*{Apn)G*hyWZjYIXq-QK@e`1= z-ahB}i&});xf^DsM5<_-0plK0U{OQ+%@=RV^EoTVke8>+C%ehms;1Wd7M+`s9kcuj-|6F;dP=Q zHw{4E*YtZIljluHMQo08xrdw9ll{rN{CX+5}j`Buql3X*Zyd9{OUd8CR?E1pe zn=Eb#*!0*==m8hV=EN;#O=}}8N2C+clhQ3z?P_tQ-D6lya1YWCcXM@6LSiPg z@lr@E=HuMjarK;uA3wGL-Xa@=OXqoe-oE(S4YHly=TPD(9f^%Rj#;H%aF@R79u?IE z;?_qTp!z(lO&qFhF1NNecc1QQd6Ua3id(kag%iN&-3B6k$opKdd(ATe8!f-{Lb9hC z#5cC0FYd0Yu?2Dww?kg-2LJZ{#b_m+R~ zfegD`+#@a*{e)*!D2ITIxxKO-T@iFP1yH30^P-d;oUU#y+JyVFD@6rXmBPe;J>63A z`Ht?!=r(}v6D{JJTmIY0h=e@8Z?+YLj6rM!d>;270un*DzllAn=TMRobH-*fU1Qf$0?>Bl&n?`4I6w8A+AE-Ju+$=} zyfb|6LQ#T#1F00|0I0nz6arKl;n*De!C3pX zUz@V9pUe`hecT?G^RLyhU&=jJ#v6f4b_8NB>n4Lo*jn~DL{UZvxX9u)ll?%>&m1hk z1exGRo{s{InNXCa|M8IJB7aulXD;tyG#g`}3}BrNmWdy!ajz>!4yyMu|^w;b->V7b)s9E*7bmLUAexox1O$nlqQl~oKT zgMe*N;tv`LvB{PI?a=Q1}49#^+BraZyeGByb{MiNC z#MClW2ickwRf+CTZ_}N0w{cx}d-T8keRHL5b+RD)2;z@lbJG}Ov}@%EL6|zel2*}@ z;U@&QfBfc4dnQ)iP?`k4TNZ)0wm zD;fnSs~b8J%cE2VoLPPo;cJqA`xuC^Y_{kAo> z(b#`{iqSn*^M~`Q)smF0OQGH^*4`G%HO>hsYzje99Wkj`|J=G?#)#j(hc)`lIy+b; zu%f4dd0b4VSUcQ;{a6%h8*{wYlz-LtHtWyo7JVu76f%Ljn;SCS-~%*vcYXKxWcQ%3 zbVZ6yl&fz^-eoRmasCY+ie5&3?P8)VA^>?borE zJ8+r5FMsDH(v;+be8}U2)O0+f@d1bGHT=LKg2^EIQ4FR!21PEh0;2MT#`~jYLH^UU zY{sC`K$71zG#5#O0V^i18EHxcH1Q<|Z&g4s3I;h|k&j0plNuMRmrag%+M%uBlNaB} z_pXDfjrFS?G8j#G03oFwT6Wy`hfBZl+ayevWY0=qa`$_aZqmoA?|*8^g4Xfx`ucKz zJzV1WrW`HB{_5{N=)C!cOz^T&<2-XwwXq%7BCsX6Q8TuPvD>?_1Xk#ZohTsytqBSC zL%4weSiS0|^hqFu!nyAIR2lnVEqj}DFIl^m`?^2XkNLq4Z7mQT3uzf`uKpZjU1I(C zz3PZBUvGltum0idU{{oK4;$1Sgt?Svq_#00B*lf-*_kpa9Jt(3HOpj6gVZ5hb9^Y42|~1` zn9;B;)SkB%{iSxAX~nFJNz^zBtKiuIrdznq!6e%=xlU^#bfPTtT*eyQBkv{3MBpTW z3FT~LFPE^qod_K8tY?e=TbWDK!2>{n6ewYBm>0$?`d4zzc7fIt%GcJC8(fLFQ{M*s zmn*GoxE2z-cPhg)JMrm6#?E2k>8^^ZgKP=HvSJ(;S_;HF#%2ErP*{R8*d2Y|Wima<6sLhwToRRG>LHMzX9pNcavE5D`zvhe0u!lv9?A%q+G##&|U7T!X;5> zV3dquc&z6=J!68JG<;A^&9xpzYZgTDdX#+1_JNfba){2H+9{>Gvr`3I3$f$T65G zIWcR>t7G>S$iyILEaqN9FAgrZNy&)CJxPz3L8`Kgzd4q};hqHR|9_TV%2R{-3b=Hw z7AmP~x4`qiOZgOfx<0v-um~JtU8@+>rucr11ok6&_#$_u!@boXIY{4K=DfcvwbL1x zht06L#U`|>b>FtJ2-WoW#1l#Y|0%6#f4k6_f zc`28j1rS#hAx0=N64=fPn6S$OU>UlNGzHH|{5Fkl-Gk`p~Wki+*8#ArZVsaYVd$zZ7St{3_?|m!X2fcpg zx=HZ5&{b?AV6(oEMJU`_$v#5vbkHUkrv4kR$Mq=gY?FUycGM{X^}0QW5&{n^dyfC zo=;Ln8llrd*Fz`KaaK={t9)dRP>?Y#;d)HwRDvet8 z{Vr8l65b@M#k8iN-vq$44ww~_O0*^B5l0x;n6Z{|5vDRw zV_na)MvN(QbFvw=clZ|L&!B$A-(p@N?&i%U$}O7q-NlqDmE#m|9FWgpy<}H$pY{cP zq7^#J?A}E^`ee3tDO_Jmtg+gQXO2nrwXYc~bJ6-fE*IvKR1YeOzvTN4nOg*#kiC`F z0qIHf8^vA%R5HxXz$F2vxyefY&v`JjccYkOQ4*lE`zkCik&NzACZY(lR2Eq>@tnXl zEHP9v?n$Mx?Qdc)@3WmO`m+L;D5shTe)1Qb5cxr}JfsKZsaFqf=Lp^B#iAs6>gdy) z-)Dj!08Ri&xWwj;=XuJDX)d!k27s9Yd<}4lX-dEngHnSO8W9X)la|f95qt#QIJKLu zZKnH(G=X@A#RaEuU+X>EP>a5fYZJDz^4Jl4cXx%GqKfd#9ct$9g5>bTJQ`AN*YtSc~d-b7-PfzcL}#Ix7too7YV#qg@TupMKlx0;o2na zy@**XA0e#(0$G;(a&bWdac>jn4P4c78lRQ!S#I%Pd|svXL5cxW!od1eJ%M_cyWXjJ z%ohaVOZEB9U)Pn)k>;j14ZxMqt${D595KLVR)fT%I?+A3r}!r}96-NWZQ;_H_9IJV zesXub5D1HddI)qcU%hg0)d%3H7NhtWil!LbQP*a%QXnRBoCj&s#|M1VGl@UtCP`M8IGXc!p^ZD%RtCMdO3e=;I86(9y zh9>~})#TmPEaU)903E21#mH^|4sGH?vD!E?vK|1$1RPVjLmUrvF&p!LC{N*oywd*TZ4fD`)YQj2=>vVTL?8c6Hw(de4 z<9VAalIa{!PZqbTHC9S4i+e;q$@@E3PWENA5BDo`FD%0%R92s}&)+;V*HBYt&Ys3W zc|QSc*S6XiMJgAx?O(tB*4vhGv#1KjhNapeVGTgO3Gp__dW<0l2R`>;`PJIhV;%7E z?=HhD0h-4_0u>Xo zIs?oB#KI!_xLxzrtI1;wlQJb-KcPIp^AoJds{&Sazs@=8H!HOc7_6z>H&DEG0-lvb zL7Yz@_?y?Fyvi@0-@6il`<}uxFn%T~8nm>mw9s)@6WlEUWD9@Wi{?=a<&Ni7Wn6o* zmiy0o8L3o;w-M^)N}y_E5N!go9#fDL+@2Hrv)5(fedizvvNfQKLDy^Fw0}@pQOtdR z8-I7_NRy&xR!q4F)MSLfIOtW%sf)+eE_3X&wq{jtD?A#~{Q+2_2IM%AQKuZzkyH}> z?6^`A0gq&RBlHxjtmJWRII1PtI^Zg$;OJ^eR7p&oUwG#U5cCRhS$>?+X909(g;u}KRc#b=+tPHin0)_hg| z*Y{Rx3H612y@T;|Pu|^Gg3FC*xC57IOqC?;cwEa8JEsqq zG$jomfML%td#JR%$a0|grdifM-b-3`6O`$$>hUy)t9uxlX10MyjAS8@0B5NZPG?$T z{b{5P*BT;5S6d0&$$$m`q3193oNEF(E{x0plGym8rM&rRHKZkA9qDVPoFXB)PCFat z@Gfz7SGOn%s5dGo7Fv!>a3(9{Dt9kFM;AchbKCg=^2XSxCip%COQ_<2N8U>(A(LRQ z2ZZ35t+H=F`@%>@?A~;t>$H4m;;7H^GG8Nkdx^fQ9FH2;-L-k4Ky<6!?8*+NZ?XO& z>6t9tBD66ERZFFE7r7(_!th(}h<@a}zBmry?u=UBY}fF2$qC58+CPJV=QK+cn0 zicv6*j1l&H$J8SZZ~;1b# z$(hKAkh0@^8o5g~ui2mujF&aq&#a(niYiw!s6D5W4K3ND#>Y;J zIihn6)TKR7?836T3apx2ZY{~JwwLeU4dN{W@$?)SN=xqpU+-!t<09uMl}+ZUP~;NZ zVwZ0m(*q3kAZx3fr|!Wbudo`5z;KoIzCrkz{fR|Z?y=c5R^Em943McmTZ>Yt8{~b( zULrhBo{KU#{hnMcc#kkU5&b9+CW;JL4BHD<*<&tDw5`JZ1Ui9J)PFUNVU&XvQ(!SG zRC>O4%&I4>mHp@7B8z|eL2#+p!KCHTXdxk|hwS;h!!>Ir^*R0tbawtITQO<9G=K_F zsez!uLCa?O-S2+4V&G)|YOzR(+(!lG^i1v}^E+OV2NQ!?AQSPI$3|1$9yjd|ON3Y( zKPlZO!D+O2DPfI!vgFu?tFM0W*s!#YBga#vh1y?dz=QFV1d!4K^S6~6f2|HJpe~ts zrgZ2~zuN~~v&{PUHDWDB`i5cATsnE+Y7dYmK`+Mf;W7Qv1U~(`J}%6Z5YXalyXbn= z20vz{a6xi_tGd6$RjKvIT=l2a;CO9sN3N8`Y@I@k<$7FXpqWQxHFvE``R1!HcL0%c zUJ>TeePvN`Eoy!8IRb3gA$T|rIMgXm$phfih93ffgtn+K zmJl4=D(6HA8MG>f_j-oyHlZL3sqJLKuvs{mL(THUEi-|#3qVTl?Xj4}K&FJ6(tD7A z==s&&ziM8ieA0-`^ zi z0=)n)+DV{$N+}`w>P)V_h4dXDvAEY(gJF50i=x&}clB&;HEm9`qqt3xqv6^BUm6zz z#Q^7bcc*Y=H$uFN$B1IAo*C0D<%__u#@@<4RhlSSAf1i)Qic+Dq=+dT-xHNIo+?KQ z7Izn}b;u;)GM^Msl|*Rx6Nwj;OLrm)scWuTO9;=E9MjOX)p8}DJHftMiU>Fg

              @RP|n!*r=7-NAU2rlc-)zBr3k||2QJ!HN>qgBij0RaET*Vq?fFh#dNC%+I_DEJOWOASFDwiwDen(N%;UUdpUo1sKaT& z^g{$c1!(&Bc*nqE4ov?J?=q`P^HDVtaE+}L$jZedavw|tSuyb$6w7;{a_b6wJlgK_ zOJhWWD238{*AhsmZz{m)W-r{imDfwZ*HYZUK3}<7XY9`DeSf#67(5+xVJZUIO(Ax7 z9~+}UmaIF9xp=8ux}98hv~Z514yy2ccLy|zk3+wZqoE8S7ClK`H+$^PtO zqm1umDQdO+Hn5()`-vfWr(D!JwvuZvD@qMMgxPI#`~Uo(|0g%!HOWWTq^4K>JIg+- zl6gBd)6{O22W_}ZMtwtLsxnS@W>8&^L{^YMq&!saWPH3H7n`IL7EE?b7cy;|_4)0) zAnihxkjE0j0Osl%43rf>golFMt~gI+Wg}x~Cj+6$T^!CY(TI(JG}-t{oR_XAE=ncQH@-nvrr zFIO$qZ|82!@zeY0Uz2bIA@UMw8zi_0FjIb|3vEw}7akq%XK|0Y$;%{M>MH5Qd_EKS z_Oi0k?YB)y(XVmlf*h?>&8m>mQee;T$~98VM3YB-WqBK~DJ=maBnyF$>!3(&On|jJ zBkQM6A5u{fR_Dzkc7A01ZV=~OmrJ-*b_v>Rx+xpS+V|go?`;IOOedD2l?QG6v{@`A z2)oq`<1dvz1hi0+a4vXyjEpZ0aFlsNTL{xwV{qR9Qmcc_0C{KrK6#9y-{Z=d&lY1} zme(h`s;aHrg|M)ddhW?{SS`D>#?%aP>jZy5?Re&Vc}^;dW=Cl3;h-htCk@DN=4PeHRwc(VvaEzYoqp* zVL=gyuynQ7EERLGE3a4%t!18)hT{&`pHCyFqKIEQ+fr70Uw`Q?tj$TFQ*&eF0gZGa ziV@Cuz&6sFh=o{nv(lbc>Zynok1Z{r-j|>PO#L?-*64VSWvUO4gLcn`tNrP_@9g{U z{uD}{R?@Ph(kt52*?LdmmhL238>n2^esblWm`^v@nWvnKp^R8e=}u(nRNZG0hq0eU z_%l0E)q^WgTxmCrIQLBBm0b|)S}KDra@@+RY!{}&_ElLh9u)fz%RO>>4$J3YYo0uw z`%A<+TL56l(K6P6K~~mFcn?<6O&o>TC%=RIju=eEUrN>oxP;p*fu?^4UKW8&;0Aa- z)=)cy*;T$5xyj;Po|Q+EAH6h>lqF**LvviUVS~$RC6MgJnprTGa8_cj_6ti{ayJIE z-7*zrg{|NiPEg6#Lf@uy@v1;k9Z)(ZKa23^TQbO2KWKDpHCb~&^uiu%jKB0*QbDF3 zjR9Bdif0gPW^$M>GqoAyR=H*HKL`kUE6?*4*>;%aZ@aj z$cN${0qAhSn3E2eP7e{gM_{R(mFTY-OtDBq5`}lG<+52TSEeLcmPjw+z^AmC--9na zNjb~p#wKDAxm!*1NJ!qMIq&6nrS(crfRF;ATj^ic%w@KwfQ=2`UDp;W04#(Sx#U%A z+)`pkAq;pr18XiIU^HY>bQ@$AMr(pxp<;bwA8{g!`8Gk6F|j*^vcAL`DOcSDZJG~0 z?kw9PmWdF+fYGE<;*vW(uTEa@J{w=N?cfV+a8 zX&GGyp$mrl#Js2ixmxGFeW#Z3iV7Q8ip4_Ux-+iUGBuNkf1*96T&sFn&?x{Z8F_tt(ajdm2RL(!^ESR=2?2qRr{)0Rl3U~? z%*OLQ&TN_z5U!;j&V-75gnjH-5Y{6m^}!-%Mp!626;U5)ope_2Iox&8W^e-pk&wrN zGVT=bn1h~L2=lCy`5D6f6Ipbb=-#buoF7VGA}g5#sQHxpm|I3ER5ZFBD+eX|78X>T zc`1NT7WuOS6tUS3a-?v{9?BwXZD&RIWvZ`KvT(VbMp#b7^tO!2UHPnt>5OrEU6)iA zo)JReO1_zMJI4C6TZ6+5S^LExm}+dllauINmvzkXF}z2tW~UXCtfpGOq$IjrzQmeH z`NLxyxpv5d#C+_DRX5z4wcaiSfLOT}Djp=iUEJjrvB7Wb^)@D8i9B%)@Oj?l&K%@7 zQg;0KT{KKh;>W*Mkl#YPvG6TXK2izozy4JZqNRAf;QG4mQ%cD&MoVf-b8B^ zCc50U=UlU9lFL0lMqIJRjTn95zAeR7$Y4vvTd&syR;M}QM4{Nj@0D)=&yXA~;!IgE zA#*E4?H~W~AN{q-={w;{IWb|qWX?+eo*=W=JeVZ?%pn9YNwDcLn0DuoAq!Z9K(h<0 zRKu7MBkEg8Opn&fVsI1NPb)^dR*ZDATK?hyaxAL;X=ljsWUbz3=xpKIomnVFsoG%{jXZ=Ji#s2xb zzxz$;#_#RL2Y88_!1_8K(OKOJ4}>+eYz!{FndTY5n850qPV-6W`em z@K{J34*Z6{9fv#aL z_;X4`9L%{*Mea3Ax6+UIDiXcKptY7Hls7@F6JrGg zJaWH7z2RE=>eZ8{e*$oW%W43RX9t6*i^pv`tE`!O0lb)8a>k%X$!{`Ri}T+;Ph%9n7T?j_`- zrxMbMZ`^xe_84Wis&noKnCrO)rNV9sMY33A9~8GqSM=&}FwY~rVWc{;+|I0Y;NcF_#62zm>2(=-moW}LZORx5e$h8{(+?N)AksQ9ep&}pl?ZJ5 zXJ&BlJIO^B9)baP9T|FZu9ZZil3v?Ka70uV&lwyB)2Z zyx##x#38079MyV>+hSngv#gYd!!J6dEb$J9CSn^HyYrx#P&_8J7;Y}dMhKJnHXtWh zFAKGCmi=hK#9+rj$M+cguwqguYnT{X2nHcTw;Lefrh-Pcw_c#YZrrd^eN?1ee%l%o zf9Sg>#sYHZnsRB4xp?WQBmD*j_7Pk2(nD%_g6Htg1KRk|Y-spb0-NJA1}x^J^}j6a z7aDmJFXMXoyjcr3!MR@vGKK=e@0T0;a9dgl0`UEE4S@{tntdGvFORhJM6svxIS71K zYNF8w5Y`~DPo#y1mCEB@`*5N1c$-tCNdOhTmw^Nwx_=kQ>6QYQaU+cUaU{9uY;gzg zYr1OUYghy>cFjJKVkB2G33`pz54uH)eN$z*Fs5{2ERi!k_d$8Tk{p663X>~9#JXKP zH*1Wdnd{(4RIkI`yDi9|R#NLLp}btw!iuh(tCoUUCr}vUv$NkL&hgwHbG}4*hal@h z_u5im7Bi&Aq_;yitFgPCf?Bfna;)Y$F-k&ky9sp95x?g``u5$&A3pf+^9;~#Ifew3 zdR9fTz(Ep%G4)8{8({72yLUl^Du`FdSjNG&+>y@4h*yrRnDz@HvYJ=r> zESTH^d*pwm+!ACwT>Ggo(b}3yx^?CJUELj4meiSR#hhd_J*W#T;-LX{LG1MYo0E;a zolzhM`OENraRq{fTQ>SIy_4z!(}&QmO(A&$SkEi1zQc1W>XU%YEEN((_@`yO1*2ct&$D*GXY60lHvOO z;OmGhp? ziLZvTQ}Ao=VfvR2GJ|8|rx}ZGDsm4+v-bMl?lh1e-!dPjVlL5nHCR^X=nH{Lxy@n_ zP}?BpC≫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

              es*QcCwu$l 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

              R&V0UQY)oLN1F7}p5DBuF6}*OOTaMpVxv`rc$2 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 md&$G82384$uMffGSeR%?;;dkcln<#IqzK`Y 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 PB_ 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 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/shield-inactive-cba3b43d918377b506e5.svg b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/shield-inactive-cba3b43d918377b506e5.svg deleted file mode 100644 index 5afa85d0..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/shield-inactive-cba3b43d918377b506e5.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/shield-off-47426e7b562ef20ae513.svg b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/shield-off-47426e7b562ef20ae513.svg deleted file mode 100644 index e1f7f232..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/shield-off-47426e7b562ef20ae513.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/shield-partial-48b279219c6389a129b9.svg b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/shield-partial-48b279219c6389a129b9.svg deleted file mode 100644 index 03b09674..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/shield-partial-48b279219c6389a129b9.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/shield-success-e64a26c3a6d0888fba06.svg b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/shield-success-e64a26c3a6d0888fba06.svg deleted file mode 100644 index 0f3ebeca..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/shield-success-e64a26c3a6d0888fba06.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/site-cards-29522f090d5422fd7afd.png b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/site-cards-29522f090d5422fd7afd.png deleted file mode 100644 index 83e562ede663c0bd77cd92602acfc4488f2e832c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 179712 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 YZ%B=!PGCsM$LC)N6({gqUF?hq~d&W?#_V zg{*Ao<|1DCkd)xk75k9#B15OHs>pq#qc{`V3p1dlAPrgzkl5k6v=HB;5^NroUz1=- z&i`ZYE5PDBx2^fTDH7rd5U=-~rq|u?FLjMWNJTBlW6fWRUlHZh9wQR2}S-M-w7w?p^ zg*&9Ee7l>In_Id`<`jd-sl^H+Hy!hGv-Gj@t!l9%{ICLKu0d{?U57MlyUqHyGf_$9B9~;; zH{4cu5_buJ+n(s*F@@f5i;YdW&PT5O8?Gmf+yTTfas_RT;5i~DbAjHi@VYN97xu79 z9QV%!surT1fX*uv4p>DA3fpRL_fDQWckVB`%Wn1XM2_(J_P3t)yGncUt4;UK)xVjp z;?k5V*CHtVbAh|#c*m*|I(>`@949_)Kq%TOJcT`}@vNu?&&~OS9$TsmvZv1bS!~@} zQb`JTXI882vgEExug-C(NXeX2Ko)0A&aTRu)>e_3Cd+^&v!=?@*?N1LRAi>h(hLwh z1SJ+gshdB2A_$#Ys_nCJB_MMp(fhHlB5(^rVE!`PJ<4h_&Bpn4mRvKU_w5G~1^13BY|xF>I1M-egKH}G zyj;0#w=4sc%q?89OG*}Q7X%+9uWXA`<>o+Q(!#yo>UR-Zp6V$Q7=ik!s7CPx&xBtzsp zl&B2_yrrs->3xMKcKW^e8L^6#77)a7`hv8Bs;peN7XSq!tde0*eD(z9PXr7aye3fS zfxebcI{X5r+aA1(pDRnKVj;Y9(%Y?FnV;+Cbzi;nbHMw}k3Qw+;(XIQKc~Gqs~?{H zbAh)W@LD`OJng@R384Qsf1B5Qg~%Px(lL3nYMM{0hPFIJnVsVT;m-_B*m@O)C3W^g zQc&fl4@F$ey(nW+U3JcMsmMx~%4{6x=3SdS^6ZIH+>TR9f}_gB z;z(#IJ}{(e(UykV%6(E*u}9&^-16F%c2#b{Rw;lgr(|w!>1JoO=HdQKD0HgKrA0PB z=*(Pt$p+su7pW$xl^9(0q6a|)jXUJr;|j0FdGbcyesC_1=ehi+Sv~S<9H+*)su7PQ zkgz1L%0(17L)uJ|)qjss?EpvOBra~a#K#SPH$FC{P9qeBw zv8C$OIHXmhs&W1{-^U5W-RJ$k7C!Awq)>kbe{WR9E)e(uf{Jx`b}m5Vn8306VL=}> zqmL|5X*qu|Qm{hDdyw^V&mI4BT*aL9mYUp|Qj^vM zrBBKGou-L=JyfMO(INs-KKgcjC)B9g=%~w!~<3V#p==G#v ztBi@Qotra==M53&gJL4kUkP1Z!JM|*!Yq)vOsSeX8$@oFROMu-QU^kpDoa4-7OP5! zfJ9mP1hrFvh(ZT@bpZ%mAqZX8-M50!!EVKU4NK%tx?Sd=r>-m`74vfsel6|RzdiLo zF2elW$F3Y$@&3mbwqXCm4?lEuBfL+Q$8Y>Nf`8uJaKjDfjSqx-55v_Xv}2Xi+*Xyd zl_Qth4-#ytM%1{$IvdwevFl*d@&i&2B3DzjS1Kb!ZYhY|Le!5e0Ff&#-zLRC{=9ZY z&LvrkH=rz7ZPs-z05Kg_tCG4&Ijh^PR-K!J%^HKN9zZX+^jAcpR*rB|mD4qBe{dg_ z!jd>cni3V5WlII|GAUI<#;)Jj+#K ziK;yjaS^JY`}x(cewE60Yj>wxqbqb&SMthRYPbHo2sminNVI^1S6n^WiX6Fn&?|8M zzMEau+m`TK;=@ljnMf1F@q=!BjS*4qcx!G?Rf+?DEoroT~+d=MbbNzFr_oVh{UCG^N$M?wmoW7_0GtiZ!ss&g=( z+Z)Ga@~p;jV26{c1g;*5)}6?`acrsbDy{*36<6A%%->yCcTk#Yo29-6iX4bswc4w& zRx6h6k|m3k%kuM!{J&>YvYha<;G`>8HdqjO>ogp}N*>SWak4!0 zx>Z1%C8%Ee(q~yw_bto z+xgSo@?~Fim7xtd_;Ua&+@9QX-3V`BU{Yt*I2J_c!v<|jF-jcGn=9sBGD8*3A<&h2D;JWX`B_L(KeK#5#4yVG<7_7Y|ZriCnyrxcK4HFK#3-LJ|SJ zJuq>!BXY@uuauEPuaQy1u4x-S1`RVE?49fU1Ig}r^=JSkgGynj+*``TF1@B`x^b%PK*L3%RBgpSvIvGvNTAHP<4 z29=ZIme6^H&XQfWTzP(O`t3JfUt5sfQdgLxgf2qn)OO9p3|)pSo|&o}BS7dT%lsJ* zO5^|~b`xAxNh!!&0f=4ZT{lY>LJ@jf`{)WVKR0*$EixCkkGJgW$#q{BMCkhM9Vmx? z*2*ilx^&hfm<1LZn+8Vtbnrj0>L7o3h^&^3#YFLTmHH|<#kHZ*C)seVO z)w}a{Hr^{+RveP`4F|Btw?$SiZ;=(SSnGkhs{K*{GPg8B=E_x>E8pSBTrt89Mf0{{ zZmvBDkrh$rv};c7)(jk{X?ZXRT@0?iWb}gfs9I2GoFj31n-w`u*l^F8owc!ZShja5 zHa2k_?9(l{%lS@+zIN)*S3f-PW?$nMPJqmC%7io$RK%lHU2bK;1~R<=qOKrsI-p zPvS!JZ=SfZEvR_zx#zBX@4fey;rDzJIPm)GuV)Z3aYrI9{%2W2X9E%(k_e{2c~+F| zQIAlWF!ykAADstpqVQlc7fR;ZB#1as?MX*}S9if{Dz;e}41eCfGN9eS!WW1Z3%XA7I2;G#sH5j35z+l1NB4xAE z<>^Pxe68l^WJ#Ahz22_4vl~%(jU7LS0#zf1z?u8>T;>2A zrONy81_!f-%hrtyj71GZ%j(vbTh>1y+nbKaCJ?y|^#^5r{UKQuA#)AY&4Nl2sRovS z%q?BA%h{|8kYt?)GB+P8T`7oN8H$7Rq0(sxB1?;di!}(b-p$RWE0M$1mxx|4f%6KS zO{sb!$2BAVHv9ge-G<)7=V44M0VCkh;%DAyTZ37WKg_|}t|L;ekzqrxh^TRjB&)(< z9xg)Q6u8|F=pV0Y+$b3~;4(=WtV9lq9LU_LAyDOTOc{8&Bn=!Z!}^VCNlZ+(btN67 zjw0wCCoArs;{=~4Plix+);;%`3Y|qXlE<|r+@HmR?tV_n|II9+DFKVzpuUBs{2%}8mG3ZC2^|6`R5>YAqH*LC^K%Kss=iK{P;Ea{r@Jgf3o@H$&=so z#DqzmRqRYs-6IsR;AE>+!+0ElcR6>ywu=!aa~`au1ZPk~U5-G<`=0#}OO|Vbg7>%j z@s5g|**Q(~@*Sb8E6A4W{5etug{}gjh^2F2x6Yi3z{7Y~G`v6wom#F?=ak45rrr&J z(4|e3Ty)RPzRRg`?(sa#(-j~Pk%a~QD;AZ>8?X1={M_#z|NYNRRu3OZ&$a`6$eLl0Y%%cJJ{n~aKvI5Lx&VbcnfB(GqYy0};;$Q2OST%0<^5zxI zt6OF7s{3T;%6nyV!y(z&a1h7Cvbpi7Q|9VnvDN_%HO&Y>sLhHbD~Q}e2iUE+KM%Kc zcCHkmhNgUg%9^TVu37AW2{Sz+KhHmOc z#(DAog?)Og|A!(_zrMda2?A)+7H%izfn-`Ms32+=?Fx4;=*AF zt6cGm-d2^+{M>(IaK{!aaa_$1+Sh8n=QEe`D|lBQchK4SC~Gm;O&ki_Tck547jb^B z%XKAR>-jmV8?kB}?|rmtoPGY;=OLdAENLeK)}b2Vclm&Ha{1_^k2an@efm28^}Inv z;fWlB)3njnf7$0Of6%d{j!BwbJkHiDCtSn5b~NHZ1e4RPG>;luVjfR~&f`3FE_31? z;~I+RwltOHOMOu;0ufN?@}1=xQRrsCa-HI4=oZhK8d2w_fY42Lp$AR17J}I2L6K8+ zZVnQz`Iwz60On2rnS(l)dFM^Cd)-QT^YyRx{M=2aZb*iv)kv^eHy^e7<)x8JL?tV;8?|MXzY&a?VSKlYQpu+7~ zaa49S9fQq!P}bJ9z+!EdCMa`_P~_?=_bEW;_DBWDTDv;u6Rqv4TnW17iUFOQ^JK07 z_hWF?&FBR$!}r9^Kh9}Ywp8`Vd*H~%`&4%spB(h)-{3F3ba1v3wmv?Us_Glnj(CC> z2Y4cG#aRd9R$~Ib(p}36zksA>qa-)^R zL7hv6rK;p@5J;RObA3l?FhY~BT0#sYx52)>#m`SDxPy)>OK6o#P?irB3bPFwAa%jp zp-K`?#xmiHR#!sG9M>%PW4tG@Y?=FYU-~H*luvqtj!0iS0uRboV`_4j{J186K zK& zmw;ZdmCCA|or??ZQ#EQFDRGwoOafwg6_@q#`}7&sc8L-=53j!2ovIPUIdCFXiCnuX zciEWhWykhCl04)JwNfKU#!MW-4Shl4BE(EB(-9hQFt)0axfG~$Ndv}!$c>g^{c-F+ zTEE8?2*JLq~Qbfh@iPuaFz|2(@j@F^Y$lR37NItxM&>0<rg0aM1L(!p_D;NvX#2>>LMK zxS;#}_usGWg2K_<+S+=ZC39@KS`unWjU}Cw4)h2rbe!&v+T+FKjqdYfoPae1FqjTk zM6+CN#~#lmvfaulaYapjPF+)3L0dyN@C3 z09EO9hR$Qo_}e547VBKy;R-vp&~?(?COJsB?peP|-h8cR?A9N?{X=Q`_Ig?R{Bk+@ z%g4x4jgAkoOSLO?BYqdRRgLw?vvF3DQ{aXEmalDR!is?Nb?tpk|@k=us*>uL|mO0`*$ zWL0HOiJVjCmPESdV6Un&R|X+JXEjiAzxe7a?!MB@Xwo<_rH@ zV`X&8b#m?4->pa5b(AM_{{J7Js6uO9Y`QgC>pc%xb9&D%0uR-c@S3ks2Oa;LKZY9Z zxsS}w&+(fJ+eCJeIIsKa(fzHw!xihkK8O6Bk~&#bCVi;oo;H-~ez6o1GM|zS%N(uDTJu;9!GI zs4{uOzlAN;unf$@m>s)4xi`)R98`_FG!ka;M}@UhJ>rfAMEG zNYaqYWe^D5=;7axKl%N?k?XJiL%9;FT?&ZYl_ST2$bHk1xRFrslA*p0O9Uc{oZ7HT z*g8mDoMJeVu$Zw!+VzT&*UN8T^~Z9}nBRsidu3bFfRWj3c`=#e^pnD$R5{Ad>VsLs z6>T;sNZdlz386{_!g&Oe8|^s=!DNoeyT`?xpNk4h<~mQfe!b@BUR<%~Hr}Ud)lZvL zRd}*($+xv-bS8~!Ww`hm$A0|x>1rDAl~-PIbEdpSMPclDiw<=zG?u{Q38BzXNRw+9pNq)7i)xY!ts61V#{?j_PnAbv`2CmX<2oa9dQJ^J56Ly*(4c=E zuo~xQayU#a2_VTkJa!TeN+jUmXY$lMVSxr3`(W&g_iWOpOx z{ z=!Kt?Q`o=*lel2{FQ>nFal5w->;N@esyM<@9n#V#qQY^#i0_5#DEwst7u)`C3HEWd zSaoI&xcP?h(!B4G9KY{`v>rbxM-JU5n>TEijqA2aD;`@=xft4_BA4 zwWSDlG?JPf`ryOX7ZWokcnnU$^7k^axorvJ3AK)L--SUbzye)>IFq@ zP4kMRp`<{T7q%;O%jV7oX3CP;(?IA_p~_8_@>%I1bkiKMn+JkdoIb(L(dAE3;&!Lx zO`V9xK=MHJw7$dzBw)cV!h-+*{p(-#7@HNXZAj{<=Y3($x8>Gkms8pm#6kV z3NrVwoNIne9t5Fl-EczgTlat*0}igaA7t*ho0r=QQn#({up@L^k!sxpQnwZ)P6=Hj zY}WdUy|NsrjF36SVqiYz<;o(PAYyRUP3Q$%s5}?v$(!D`Yq;!fpX};v_nU1t_isM@ z2{QJ-Xx+##Z>ItpB8ZT<*bWQT5V^>{R72|6as`yg0UZUvutu?tOK0N}oV5y~Hdg-V zxBp6x96Tm}^QSjrE)G>AgHS^P6)p+TaD#q*LR^Hv0r9SXZnz8q$s3JXx^GXM zWG_%e%oY*N`j`ZjA@Bx#LgM*3cj0wk-2k>gNxw~S_Gw7D?ok+Fr zM(5o6>r_8A$hpS$61862Lh6r7#_&2D?ae_-> zNgO9?tet3=(u2f(9}o{~t$MXB4#3gO!r^EXJB6K@Qzfo%M}J(3tsHSPazjDHQn1Bg z6zWOxvx=m=WC^N9#!3nZ+_3(mBX;U=or&`#4nJ#z42aZ^XsY$9QR7fia+Uj@LHOE! zuG$2M98ol^8zXSkHDD?4g51^lC_9eaOXT3+psk9m`9%N!tj)^vrtaur$r{7gix@lh3w6%< zpHDM%oDc`X;|qGUiYk*i4+<4oOFS_*b>g_D1w}2Z%1fmY3f*!Lx*8MO>AxH{H;SO{(B;k8--EyX7Uo%HdT|<{FPVGPk?oi0o=mW$vJC)y_He%rz;I!%o&Fkh+FS*sMA) z2WzzgSd8#PIiSj146b_7O%M@M;aH6e&&Mh3GGCs z!C5$Z+|JD%svbOV$?vsxDZU+5 zvLOdEQ))LjC&%7i*JNdl)^nvFbnfuP6bMkjBPqdS{y&!YIBOr4R!(u(X zMboUO5vb#CrJ6D(E`xn@|bdmE0*o)xGlfkL-Ut4XS%##QbGncD~Kms$|H8dQ>0 zBKS}NEY%GVAagOey2$8-wNd#tFUj`=j=`%#I@_ljT0vv?al%S%14QArHF!H!VM7h> zKBrTC_<<`(k{l8gwg4EaS(2+18S5|x3DwIGe3*P!y8QK@{4YG_N!&>NdPltC9RY+L z3+U{drdr1)U9EF;Aa*HEh3lv48%SJ#M-)N$9Ek&IQ}PDrQOk%uq15I4Ik!zdSvm0z zwOj4}K2Gc@;?3}Suuzy*7ln7Y68Y*(jq`+#*L?APQZqWWU9CcA|NBXuvt-{rPuMQ# zqTPDY_O}9`R_9)Mt6S~X-)uRaqX|_zOXi8M&bV167k@+hX3xdH{(h`}Ux)x0HLRac z6!*jhzuS}E>QZ=8Vn-9W8iHRZ=6TnL)oku%w3|`v$!4n$7XxfonsWb}eoZ~6Nia&Siv4mgmPZf zy?ppLwJ%P$H>eVaI+9V2h`9n`oo@qF!5b9W{BXsHZ_3EQm&p*Qbp!AK$e#gHBRZC`_tDkkE0umF-q0 zU`*!t1Y=b?`dT7!rrXY_a-H?hDg2z)IF3lTcDT0Od@e@@jn zeUtVCtFz)?{vER_=SiNex8QmhPn^0d;BX<9ml8Vv_opIZe~f1}n|~iR4AF@-cHYoB zTc*)Uf-P8y3z5N4>%V*4M;`!VX`B1j?CfqtN-u+@@qi}oxWDS!i0|M zMyUVODshe|8%vemUoFAszrPYUOWqj4=Yo9>@CRZ4x3%X~pHlU+aWAw!y7<@Uz9YYU z>?Qf-*%##(54|8iJ@LH!`1mvOV-ULU9C`v|?g@ErKf(`t9+7i^1|S|qS@3C9uI>N58U* z6+2I${5mcGL~D?nZPPUB7(vgQvqr~4UBhi9cG@ZDl{mmzvO3!a1@Ch0nS*)<6>b1j zIH$f11CnGQey&HqcxSKTe|IRpcPMTHaS;-yh-{S@J9vy7EY6a%%L?V;rHTS2bZz&R zWoPp;ekODZ|0eBEQmoGTlN2Ld!{8BK^+k_=%6bi{b-Xsoo`k5CKViT`VF8;$P>;K8G7TY{0>;QR9$<{~BHcjSEVo9;6PpF+&FwK^%LKgUp@AB@{2Ps$j?tcCqKLYSx4r60A)^X)|ZsbA-(!6)VZf& zvz`N)JL^h=Pigo8^KvKT7y=N7V6(O;nbUc>x+Aiq7Bh1ob6aW-I6}7;GjmNKb1SRc zXXjQS6tR5i9*MzKFD?>Hy$CCCL1M>ARr^Hbej8s<=-*)Y#B6t|MxYxUTG~^pNdc1P z>O&O9Ms);FVZJtchny;LO5{{w8wi4?8ySWG*rlpzQ|*jHP~lot+9D)wgeP%8`%K(m zC4IW83q)>k0tj1N5|9kymJC%6J_LtV*X6~=Xb>fRrJNeJiIg+J=quJfrKW!dQXjl} zbzUz`ZpyFV+#nknu_6c?W6Rmffs?i|rd1Z~b8`RIh@mitTYZ=)s7APfR5T^b+Qf$Z zjW-kiiu321W;ept912!x`554$25&kYt9szb8Lh56+*9{_yc>3BJOW6-y>_ z+)*Wxl5lmp5SZPRZJowexccxdg=W3d9W5;K{j1sf#}jt%#mC_|e;!R5(&xV)9yh86 zWDZ0Q;Z|VgaLuC|90;A}&`s?9f2z=-(iKWwFAzG6vk;p7?BkCwoJ$II?nf|x&ibjg zQ+Ok4-)lIQZ%Gk~Z|tXP)u~*$8VR>^F7kO~Jr+{60tXAL0$q2NuFdFzdo{*_5|Rs+Gt=nXAfGB8M>R%PXMFt&l>Hx%`kb zS13y!drKC=mSo;TXtbZR7#1Z9ne=g$^ z!HAopF&!M3%yDuiH^t|&Xfpmav{PJr?e)K#45k6x*}|P6Rbs)$f*){r?%jNkuRRtmR+v0Ri{H?gRZMqB!RGX27&9W?*nvc zb0Y{`lDxHV0i=kVLI1uHI#mXB`qoaj$rP0A7Y7nIG~nIINg`J=WkeuytEP{Z@>vt) z-6^By&gk|pKhH_++@F#w_k1!g->kl=k1HDkGchAl7bSLVU&3UOi5(jXGx=ab=fh@v z6VeB@`)U@24lp9uctc?qZauN6^60lGa%D$Ujr%4NXQ63N)Y$x&L#Ya{*l^kdUfUtQ zEq}Cbz&_k+-+|K+IP}cU{2pA@%G2B(!r;#XQrHM-yGuj~0iRF&W5{6Vl8tsP@MMmE z6tU^Eh191E9Wda*@uO-U7&A%tFR!5c!^;?7fHL>obaaB4HdmgUHYZ8y zKY$U(1F0EIyi)0rGOE(EQ~j#NSrRy zX(M`BVV+eu?)K0I7Flr!iEfigKxdMOx1{wcP|0t!?Mo0TiJk*}X3L^ZrV(&TI zUg=a!4x7=mJ5T7`AVS8$9brhKbJFh_}qua zk4Ct41c=-)_|JjN4bl9$0b1pXf{1&yP@*w?jDKVaogO=;?2;O1k&d)>BYbW2``(-7 zdl7{Dk{h^i&_}mSAfci`J7298S0^+7ty#ab^21Ggqs-Vo3LXleu0=HaMIT!}N1+(C#kH0C4f%y-i z_yJ_@4fxBwmOVd7=z!O97RpPQe+DG(+3E8Fp-bSO%eX{{C~%3W3g@QTd73X)zM}xC zDlOR^-hS<=-AEvBrn*_7LJBR7$mulTTXdOP$0V+mL)+FV64wd{xp7*ldYh6mC~V&e zL{6(uySl;#g|4g6o~pN@5TXl0t(`&gjKpbJRP*CN-0h7Pw1G;#S}V!b0U?bls) z+qJWYZMz?BH7mDX^KhXR+ zI%bwGUHbE}P9hvq^|_QD6kg~39m1$Y=nPTI5$cX~or2r7Q7&t!R0TS}xfGcz+bH`HX59xew|BW(l7Pr9DVJ>vOHG-B&m5Gw z*Gr`0)nX|}zT8SEbMLAx3CP@=PrND1K;)KcZ&rj@=b`Z74Uo6jvq9*T$Ym$<=U&nL zxf%22c_4v*F5?n_$XmiIb4J>1WXlon8E4>M4(xHnzEpP5wY;j`&w-fLAY|&u8Y^q2 z!uejSWcW)2PN!R&8V4fR9;7Q&s$$IQa9gknQAJLPoaV%Jh2qvZRbkpe30!JaqhB=$ z&VpfZ*EUMtZUK;E*ZKwvpXvzcsL@h@f+c> z8$DNDaV`+6bFs?SSRn+5lQ`V!#~4Xu)q^Wsb>7HF8bjf<-dUFCr5EZZkP=e~E{UNq zZdA1(a9tI6bioBTAb05fzj$nRNkx>%%_~21@P%c4xVS<0Dd&4}VFRmk+;26Scjzo$ zjvYJpocx$RbYE+3pKo2}x1ojSIeZo~6lTA$xQZPQxyGtn{g_U%V?yWO&#iB2ceD?( z!AOXWrf_pJezq)8;Qh`c3sZ&<81Tr%(KXqs&W#uj;F>gV4xbZE_F^>Xdo<^R`>EQs z)L;bPpI=PuZC}Jpq`5Mcl{hYLh($f@Z>8%|uCV=L9USy}qSu$tw;!nee8)lgbn8C( z7^>Wd8#KhaQw|}-S_2%c*c`~*zT&mX;)kL&Aaj+neX)|ca@m|$3StMZxp}1;YK7Mv zLai9f)SBdlLMeJCU*3M=EqM!MZW+kjk`$rK1EHIf1BFhB+$>e;7JQ!o3GHstR$Cx(cW5Jg4X1{JhY(WLkZa2GtrMWOBwEy<1TG7&>k1_=6f-Ds z!{5+R5r|s@d9#s#uEWR6XUsZ#{28EM0=oIl6voWb9OxPL3q9_Y}-{JBO|wq8h~d->&;e>p|o zI@^fvqBa4Fj_MD0d|uhUlk>_>p3JK_j_I0RPv-p#6S!Eumv7$|s|2=@Lu(wOQ5f;P zw4E9h*k(XoYMWvH2WD5IN;ZdEIS-1%tVZVI%3OL<$40QMrqS|%3z!RkUm|?${i1%6 z5z7)!3}X3`tah`RuwvH8A=wX%9a)n-YJ?pA>dW-!MV!nTe(3pgW;f#1I6Jqvg9HEI ziAXp# zJ&7Zm5nm?FHWS>6i!0$s{tb2`$yQe(WQx%P#Lk|#aH>_WdU#ToB7ChewoQ>Ys}5Bw zkS+*^UJo@+iQLUy?gG^8_tp?H?bJ$18qfxSItP^wz;Y#VSl$K8G>obR4FQ@Co*D+O{`Y*rnJF?^1`(?|MlcoB>F;X!Tgbg9p;`_9?VHngoC2_+-j-25=KnYyY zu?O-onZ z$|3hyYcGJ;VPbc!jjYab-kgy--$0yiL|&DF+I-uQBS*4@AI;eE3;B9^M&9&-Yp|yG zI+_x;WYWVwSC;eAuTJ>){x?&R3-3cFao^XmfkV^W=hhQmr(Siq6m}!^z}dQUXqR+a zzW(kB`SR#-`TWTDfbRx;f%z|w9hW1=PoW>?nXqniJ#>HDd7|GD$5TTkxIaf?>YPtW zP;irUMeN*&6E?ONVG@_#T$sJd{B!(c$>57N4DK9iAP8J7u85fmdjg^PbMMTbH@C6& zJ&nzu;|f=--)w}gva<4bDWbtWd|LwC5rnOmqINUXPnFDo=~$pHI~-EA^O%JZz}t;< zc`oOXU;b)O?a{*^a$oK`6o}kss>*FvRc;r^910)a-wrZ|@M`5I4X*}&ImO-;D16AT z3}Mz?%PM5o;!4>GGI!v;jdHMfGeWNAQk|>eR)kvNF{fm1IVxF;;4@eFbUuLAUQZQ3 zp?g~vp{>_k5IXqGA%|`WtV$M30{>jbMdDjjs(SLq{ZtL6tk^-vYFq<}!WH!&X$`3XBH&B->Sh#T<~wh2-1Zxs8*>$RRcLgNVT)J-O{3kTZ2NUBrA|P zkTxZIs@B~A!lwi-ONpHt{Ni(U#CvtZG+?=Lq`IB2$mwz=eVwuHuibu+teQDG5V`e_ zjFU=`xK&f3#7!C~%O?($Vl8$6mQNa-#N?qEhe*-HAqb-?c^fS6D4Y_fSTeG|%pcZA z77XhP^iy@N=DBZbV0Nb8~-DFSe?{F^Mx6kusv8u+Pr~jzg+H`?EjWGFJ7g zP~%^|QPVc^YD=j4m5X?&>ZZg@iQ8v~zuQ=V*nLlqoj9ehZ#MNszngte??=d1C9%*N zd-27Jb=b(4t58E5ap1rAYAF++gAkFuG5ETrl^<9wwm+Zb6 z`#+Sg_bQP)C|~S2AfIpBFQ0A+s$3v*wMyoyw*@k%%H004K<1DyR}C_^T9rB2l7P&; z2`sA&xpO-)y$!0|MifG#!*Sp({lZM6nV&khvAlAmj=ZJgH$B6a8 zo!Y{YxYkOnLMZk6fc8K~gfkT&Y#?w!iPHx7s>ERgS;LssK1t}ZQtR9pNL(_E+NtFY zfD*W%z!8Cq0n1$RgRXy1)*Z6up|P_4>HB2kqvK>vHb~qQkT?*yqVWTyXadHGgD?(~ z{BZ-N0LaI5fzAi=HYgA{!`ovA$+A%cWbyERvS4VRpvEo1{Gt*4C2vS?$sO2BUhCUq zOaH(8lb`o(jC>UuSMG5`{xn9ZY$nXUS^??0J_$$Vsgp0Dx`CKo44ReDfk13=b|vj%mOj2M6W`p~(uaR+n4czFmiQ`E zs%rhF>Q>IXVg-l8d2Aijkow|Do&Vf??0C|z;0Q}BI{tx8qeYNuS?nClb zAancWvu*nVnfqkRe)(`c$lTiPQmbTc&DMr6>pmrOC2K+EQ2bC>C3^}$=<-*m$Q(kh z2)Ay_E0c|LP}Q0XG6zCeg+hp`*GgpN^UGxg6uBax0FCzZpU9VYfP5%)Z(&^W=sS{u ze-cf9Tz>rHu)kKKCU}G~0}p*3#4Q8R1@;`b?#jTy7bZ}iow0uX`mhWKTgJY9`w}?V zGH^m>-~`P;rC0(7eF7(@62Am)UKu#>0+Bp?_;3bJ^o+A-TW!J{+=7pg$N=;&B|lPq z!=Dv>KFnnTI$xg}?U9_z&^0ibX&+kz)0u#-f@PVRi7PO3#T8d1PM%;4({r4Xw{^*y!lc+mW zmpFCubmH{svxyTJ&*A;+!^#=Sw-oo?@cFrOnusJ(FX6R<#k#9>y?XpDIfv)*o$Bf^ zEn&;x`<$D%<&%$d-Y8#Fd-Uj00Y}i+gg=9Qk-&b@P@m2UF3z@0AG+P-v(G*gT*NZ2 zy6UR>4?p}ctcQJ_ICSVxBDMbo``@M$dJJ57<(1(%o!1AZ1sA5ojvYJB-*I^8^Y*ai zsdY2-_4-;{AM-jk{0*B{;IoDGaNIR)G#rNw)3_jq=`X(cLdS4C>O;RfE{6J?SE}{z z|7TWK)@W>lTM~_Yh=^`KKX1?3bS?hYFWPe3)==Q|oD!SYeWd#e>xO-#&+ESMuhDr0 zzI!IVo32;yKg%`OTvLx5V5XgmxZ&vs3!}acqiqk}78$8?Q@2IKcG$ajZ$G^Ej6@S2 zM~|OMoT;m$Q>E#TtFOEw(YnR8;XH1R2drS`tyr-lr+fGAwYH6Q#5VEYK+hLFW(3>C zp4V-t=SbKmxW}pWM@H(L3D05L&JpqFz;)MMC%CTae1^?~tYoCl3&G7kq08x! zf#<_|?mQBE51qCPiMw8lj{Z&XoL=AcGwL}Nmf5u&-!;=8GwwV}=rzM%-xUa5hjsKi zUsF>v2FLf9H0O&O8~+?H!?sj}^Qs>yhtGX8=EHp`q5s$GJ)+?r7Ut{Eg%PjN{jJM!PsDE4`TDbU_(xKsu7mqb-8o!z zu~6?dnAX?p`<<=R_ss~?b$Fk;dLTR}0ivVckt7rI_=NdS7G6dZkv=cZ`^8a#1Np|W z{A<55z4@;%aIgwhFaN^)cbxZtYXMkJoIMXvPF(t82hEAIqK2S`wN4f`bOO4dKq0FG z)VGeeYD0TnhUabxDqI)s!~k?{tA!0v;o4xn6)Z(k)upP$VH&V54Wz^otU9&LbzNXW z+!@ndq}w0-o>W7P+xXZ7S(7tL%BK%SUff`)Zv&(-V4y4=ajz^I-b)q@!w4+Yad>Z_ zk1QV1TNYznI^*D9(!@GntQyEwFWiVxnEA!ZLLp`M~Rk&4E3ZMVR&F2B7tj2LGuC7}vs|O#g`B;t~{74#9x&2V(_S6Jb?#mqqQp((3 zD06!dX5Af>xewNB0mSxD&3dpZgjz#2YlCU9R<*)7c;E812)9C^)BdcBpw7)l0mMAm zl*}%b^+5F-q3J$y=Za<33osFeLRa$QyYlX{MaZ2i3`pRg%V;8eORkvtuX~;?N4O0a z7deEJ-^cK+qQ=VBeLq#T8(~6bZMKZSg%B&?^WYRMsGllYZ&@fc719hH7OcPk9&n-B zG#L)n=P?}$98wjiY9*ria5{F<9Jm%(CloUz$y`VEepC3+DG(!ZZ9v=Q_?Ls_O1Trg1-ng~%3;4AP+2;+m9rITh0zx?c<^&AuJg;RV}s?SrKT||X;U>$ zNt`Nf!RHOjwCJI$*@%GTX~X*)pv-k{WqEK}zzs&?6xOkUNgNY65Vy|KS`nr@$xR(@ zmN~WFAP|%f0?xUhVzgGG{<{nLVJJ z%pD9;2Qn83-EgRKBl|(2>kCrXC#Y|8uzdC)ycPs*E-+_sPss&|3*@c${~18yy2*>Z zK;nA-5AeV8^#A>rJn(P-lHcREfBWaSA-_4918MtGdXiu_D}^a_X}sr{aItL(gLCYn z1kk^4Ixo7232I9Pt0_9o3YE^|JsNIA7t`)bEj;vn_z_d!3_jP-yYVw=BX6*@b|d~f zQ_+W>qZe&Aa{S~OC0osoua2D%gn^{FA0V^&swUaKqAGB^>4$yB3LSS*v5^QtG{@A4 z94kFc-q@Ce`?}ibJ3|;^YPXHCjxWB4tM3lsjmFKdk_nwZwwjbbM}&?MBXxLQ-|vEi z-Tk0F@4Bbo!Jk`xJFtf)6F4Sv_8iaqk`Uj`&U+CYZ8z*|bL2@|0I4@i`2gr#QBVI#ZtSqy)!1g5fgyZp8UL#(v zHbn^4fE?iN)2LkK8L0-~82r5I(&nZ}fyJ#uSlWH#vYXUX?*QcT8^aNIR;{uul z(9$8@=|C#li;UyS)Sk3;Sa;euv@2~G(iJXTPZTxuqSb>q9GV0dtrIOsiKX1cXnhPA%NrNf#+C4G`T=PeOM4S>GhNm$v1WB08iUJrGt)k0_il$)Gj zKyFTa3{8#*qw(QkG$}HiCPYP*B)$0JcQnjNsMCcI+M$!PDP7&md)2E#~mb_P8?MfW;vt16I)A5zRTlnu2xoO!A2)EW*7$Jr0K30K) zf^yX}&e{A|!nCe3{zu(B->w4i^lM~~%@4I$QVsPb96t&9Msdx{$oS!JuHU9dR{?UD zZ+sZ!Dr>{5cQ4c^m_vU#gjuhboi{MY)vQ-f)HV&S0nk;y3z$QT5(9IGAT$p)Qy_Mq zK&Z9Ugjp-LBHRjH*l-j;cMQGf4x``PL5%nU%#|FZ6UF;$RdfJgw+{`4_fsQ$sfQj* zf}56};Go-#u&f2F|Ite4!@2>wE4aLIO}mjN0uD$pv*A-0yt#AY0_amdfD3{+AI?A= zK+UWiQpE_aR&r21pJxZo%Zo!OmDi?02H;xwoH(pdbJIekr3j_g9!m$#xNatV3Nge% zyvKF;^8;vNTm&7Rh881fg8_2=O(=Ekpk!JDu?x3$aCce<&|BIc5C(`_*fk!mSsZ0` zjH0=n+EH#&tvi?3y(0q}3*gon*CtW{?|VboFUGn29-RPd3~F%*pC;h@bbt~lCn?@& z0gmT(js?Jl&{&KG8{M`wO$-mE>9Oqra}hK?BCKX;n>M}V8@UfM)Gs($u_m2|I`V?t zZ&Ye1zYI^uj2V%(c>Q z`dT)0%F-aG-5y@GbOo<&$s%WIa)_pZ?M6g~6aH&n|J*O)GyFQ;YC3)fCJ6L#KP@&lOq8Rdruol@ibcc$kc>*`jWKd0pa zy85_uEI#JfXgKFTU&6R-HKVJ)wHv1;D~WlvFsGXVyMSA#D(U&S;=Yv-XYNvjvVtRv;f;gEI=k@{JmY!OewW$YhjUnIq zuRegIR?VKJ-fz5WrZemujXrOKyV8pOoofMZPztRZ%=vD~C}>DQ$P}(x4?tIPETtzz z(Cqkdni(5PbK=4%yK^+o$1&W&RZD>4c?H~cFpk|K0A3ydj^T~3oeO0r#$X>q^O9n5 z9D@)lAIAa?;lf3R&=>&RXlPWM)-*jXn$p@uP+I#4N^KuW<3mGeYD{#^sIZU(3v_rm zo22S6k{)5Cb4sLKMGE4V*FXD{F7ekR!kqa&LMlx3Z&o^iTRB$#+=XT`M`g#39pB>o zH-FtNZrr%hRW>D-lN59goP@8soHuz+I&c*4SI z@QIB3s;sO`u!TcdSr!I#|2YkGI^?QDt+L6iPDjw-;OskRSN~w=E{KpoAy*A`I_xUa zYJ9Vh)o3$0zgNnBfT*)wiO!!>@(*-MxW-NqdEl?zh;-xB?=b_jI;>jPC@v*u4x{{g z)*);Sa*%E}(wre~-?p7$zqx*wSdRd59A34q+=Ci+dA|A84lg06AW`_O{kS+fbL*ft@fY7M2Hhqwd+08EVyF(2>>0!uTaJ2QV;5mLhqt= z3ACmZqrZ+(BYb(Rk0Dvipc??&a|~>L8vx7XOwr@W;dc1?#;N9_AL{%K5UcTpPI>j4 z7pEaEKtLRvIH4yYIjo-DI0n3?cCIPhI)EKlr+RsDL0pCEg;G74lA%GrQ8}GCmIgYO?m_3Tx>Zkz&>-g; zE#`7TSUQ(X!j|02H)&Pr+Z62>y5mjaBHknnU0}Tir(w3g;suuM|Hi;3Ay!S*eR->PuuZsJ zhVJzLOIp-M*?WK_VBw`g+8wKK=kW{7Tp?rM6j9Zne)uoD~@O5u6)X#LRS30Kkq_ohBh+eP4!R6y?h?YS zHKh!5sBqoqX)m-3+Ig~e-Eq=D-9>ilHkAVAN~wI+yVM9@9_wSs z!kS$r%tyS<3#(`-FiK?noId%)@v>Rsujs@7Vg$!6_Q3F;3 za3%+?DULbp$$4=m#OgsD3#sD(E=U3#UuPs;xE2=TJb;5tA;Z%gM#XBLH-!-F>b3MB zZhCi2V;DaiMF|L*_C*M^dmQDbL{om(XcRDX1ju!wBCLfyjf@jFCq5iN6-ravhtlM5 zggnDqV||mRwhLk5xiFfEYi7Z*o8ti+16_KDNE}D->pewK2A<38)E@gt20R0ClOo=P z+x8}4tqqNS^9=?!d_RCAgJMEEO2zR0^iHvq(aAs@&PAhDNfKI`^r8(ThD}*GYLt1S z(!~%~vKWF_={hKPPKS>))akv-ofD3m2(R*9kNxsfzVDn6p=VA?pi>T(0XgM3+f}OR zsZ*z(M^CQcnKNewF{o)*M&}pWy+3Hv63Jv-p|RY59C-k z0CQZy3XrR2U7@>xxw{7Dq%#Nc7_T#xPzA#r3*lA#V-UB$eZ2&h5Z!A9kckdehJ}o?mdlnEkCLtcP=r+;b^f{;=?Si6(_LS2( zk`^Yn2hgDs72vj{PiIt{CZkv(2^Fdce|C%nz_q1G;lVTk05?ALbs87)8jTNm9ml~e zghbz@DRAhfMRQJDC_8sp!)S)5nK-r}$MD9Q4M<}*ZW6xdxDb3_Xd*x^y#pW*@HRa< z4A2*i*W)^N@Bna`(3}p@$kpqF+`WFZck(#8x@sle-L|9V!s-pZtm~jdt~#7#p+yhl zXKA-V=LAXlD~52*Wpz1pu2v>?71FtUMy~c9dZ4&+>3pkh#US$vwF}3&ZxZ6rY+PFZngV5h5t`ItP3bVjOrpT9a0tVfpt!Aux^|NJn5#& z-&MNhh<4*-`!0UiDpjb({JC>~aR1t!OOF`hZUW}6-=PNpITpj*1AyFv%h&0F7h=6v zbp^T%kh3s{^T)8tB0df~iRqJ&C-8FXTKB%Ot40UknssVExX03S_ z4jrJ*=*VfRIgBY0hs&wvU^&9BfH|mU?`gWc?+jhqjpJP(PzBt%M)*>P9!rCpmJ8x^ z-#C?At1VzPGDNf+QRUHSF;e2nchjL&J15nw3}uZGCKWA3q#GyCK?r%a^qe?A9KebT z8UjsqY7pnZdEjMp;UI>wC%ljHdIMWc;L4|-?fXu4RG zM>p25q5Io+(xYAb>EW(@bYt_5noYAae`Vbp)g0BCEG$DS0$60uiF3%f-s{lnN4W)7 z`ujMCh^q=$oye^}8QajYTy^-!u6nO~!08+}4RYF%k)xh?)so*!x^WufWYW3Ji)(1R z5q>;sK=WUQH3m0cH||7Bg3?pGXRtHp-#c^RV}CCU+ShF+K2f0Cw{PFC8R$&7RrhJE zqer7G9MYjy;eNT?Y}c4C31RMm{X!b>B&_Iblso54Td>mqCS5ImTu!kJxz^pTq;4_9 zp*U%y>=&mBjvBLc!*iDW0O<#g|52`bzN$PgAz7Lu3gUd`h)su(WAkiCwQ=Ld0X64q zavlKU9^Ql#htTSS8(6O~%-wfuaPA;rkKMU_zSOP9(rrh~D&dVCJ6)+NrE?}!va59C48*D22hncC&QX=KQsrv)R-&y4 zD@Z`wvoqgbs0bZuV6bFTx)-Y`Hn z0ZNTxm}}!Xba3RLSqyVt*fkyNIDEfx#?@<$kZLdrBH~f~%9X3N5H}0q+H62vPGYPn zj^HZSHA4qdd44WkUbTd7ZdgnAw{4>bJ9p8&9lPk}=IwNI({{SCX$MuU-(9kBRGKf` zDrZwV`_Czu(IHpuI4BoRJ9H|fjXL-j@8bbaJ}>}akH0iyb|QpCu!Nd*SELs zi*(|w1IO|QY}Tps_nd`f=^|>7Qz;Lsz@cG}`@i{pgWNcF;mRv68-Uw+;9Uc7W#_8Q zamnh z&U#*s9zSm!x{B@Zp*_hlszlyg^-h2szPR;Ry1=2%mLnG8 zWW}oPIPFS$6>n_PGH6uQHTs`^52i zThzef=eVeWL#fX^$q@If0XM0qS?s=9c`#=jH~Q#n)V{drUAcvc!6O`k;D#}1u(>E5>O99E?p8#V*tw!o3Ye(PSky6rGs+O(fa7q3mT%{?u&%e)}f zlgZ`M>Hc%h96H?vUk~N~2>nZNaIkXVoCErm{5C=TkXt65I<-0{D(HTDwva&rnhuw0 zF~DhuPC}e^J~)J{T0!{U5G2HLNRaUOi-4R6qw;>|{#t;$c1IJ zNFdJB`)hnKc-WjK*?&&LguF*|D;k|=sw=@INXb=0nBDtZtu*}E*J`kn&Y!EVD6g&@ zR9RguU2Q3yXU%*2p2AwUZr!*2=g;{EJiMk@hH>TZB$?MIb9!AB!+xB~f0WX0oc|m~ zw;N~wE>v{OPH^xQI9#f{w3I>aE+FpS4S<^kIXH3m0C0CN-=u2@otBlJqyxx9JqZ{) zdF*|vICYjP;j|q;R7$(I@1>3Fw$kA}hpC`oC5=nVqKl}VPTLrhSiY_zEu`_q#oPoJ3?_V@9cZEUj7`td<4^A_k}tOBOw-oH!j;{YU+&Ouq5SWL7`baLtSu;yx8<+Kos7)}SCyrWvql zC(;zMvr<(ERf3!qV9P6N@a4n>nf4+<++L*VGrs(_0LUJ*qsCCis|~R}<+*O`!Wn>r zyyvmj0-On@vak=txgUJ`%TzLS0G-WGr?YwKbS`fWotZzKK7ccKI(G)nXHa<_E0fOT zWzh!WWDEFV{i`$N zs$4pkd!(yV>*_hDR^32Y<VA3%6<^tXjivoP;=4ZEx;d zU6`e#0BX*-3*clkV0Z60Re7&N(5m}GGnP$hk-2fjOIG(i4WK%M`=|7H8J$3S!nxB3 zfx=}wh7^UI{N?mE9JMZQjiYv5-=etQBPem;IO^DU6eaW;PRRquQm4KnD8AP)?8i}u z-oq)f%UcwYGKj(x`(Zzb!jcA1NK$`l%S!A|6Q^WxSk>qn#JO`2psoU;)=Ii`@}dE` z8tBT23&xGR`aZWYsW7^H43LMMx$~RQegt3KdMq14mCl?2I_<=1kdu=3x&G9ktNR>1 z<2)NY@Uwul8qa~V00&rW#R9lt&kh`eTN4P!PqJ)VktS}Kvo2gSmUZZw)K;ekJ@sjN zhTDwbwJo6l!*dyTTYb)y~W3ut$C5pA3{mr6#b(%|SM3i(-E8WqwO zm9A}(gV)JGTz=PhfLl8Qjk$?2P&AcbGQ^Qtlc}O;Ayt*+0pbej+G-A`uA*C;*3+HM zo3LL`SJ$io#I2*NYuC|rgjKI?JxDbh_8EvfU9yQzc|grL7i&=zq5^r`m>x}?HwVmf0KJX8q7M_`n6IFV)l*0 zAIP!8sA0}Rp>A8kf43G0bQL-FzGkBA7||d3xK|HHPP=V2=t5swc8?|fdVrnk+jdVUiG|I^?D;c z_De&Ya_XF^0REZ^OQ5q*ck|}W9t?E0Ai}Ov+!{z0Hduhuf3Lc5!}0sVN*6Qu&4=T? zE=G~5Bf7v!%|UJ^N1I7EE~4w;OOXJy&VaD^zN0C=&nWE2Q>Xr;CGV zc$>mH_o3I@B~m=jC*V4Ux+pyVdTbYZt$h+j0or1E4x_N-0p>LkSlf2&O`(bXA;27t zS#OP=N|(!!E5`s=4kzwRC7{kHJO@|<%(1FV&zcbHRRG>Kqbj=cF7EX`r|9zGv(yM* z9?Oq(7*)3$@grx6v>ubBn~}<%ak{_(;FiX)*2D-?7MeZ>U~2{F!rte+nPLV8IVcFO znuWP%z3WtX)wC92kTc>IBj!9qT&w1vp=XgBXW$LTfz1rWG1M6uhpvf{b>`TOW0>RT z`C7Pb06+_JHl+F~Rtsv?G>}qWd7VzfVY^tIi%{eOsw`OmAj$=>WdYbS=|bT=6bdZB z^9$($)(eFT=v={kz}|dZlZza*`FMRUeXwXg9na07EfXiw{BDV;Tx~V~*j<}wDq3HsSsmhN{p1<6H@DcV%SMf(IbFKYsOV^V{^Fl7)YpdL{pncx6!Y^{Ey<&5K-}e(MRaY=QaEm_SpYad+q$)MWz|ZY zUtJ4x8xU6Aet@bs>_vXu9x7Y1mG~+xjMtG3^S_hymKJGyUJC8pmOf?oL1f6PItN2Z=&vj{cd+ryB2yZ zk_I^)QgwuYjU#6PPUpqxMxrcL;Lz|#J$lI9xc3O5RIXG#;X8K-&{nu&1G{hr@_4;+ z>%M*dZ#GA+zWH+^lHu%YW~I{-#HxT!6-Fp`PD-9r;a26ixyOFVy_637>WWrbFo)NR zf+A;bXA{{}TZ8Y688e>4hmutJ@4!MFs$P%iHX~SBa&(%NZ(g)^;p`sLPMd5q!qSBf z&W6jn7po07%LteFJ!(R#cAjcN&yl0z`@v}ge6^GV^4;V{t#&x4;4wZHp%;z~|YC@+G*hh99Oi^8jQ2Xvf*_Ffh?8}ZEzTZF! zO&$cu8)#g+i^tEvg{wqZwMvS^tAM!*2*3uQtKr^r99lgExWoQBp07EK!Uwb`xl($b z8sUpWkEH=lhf<|vfdlVlBSYN`QdY**;l>#Ym59=H^k=(mbkK zwixSTfL=bYI4+>7uNvHkc1|2g2WL*ElM6EN^XB1aU1S`%>ZNeu@H1XsQAih7ETsdvi)eP=!8Evi z2TD!uPBVM-ru-qpX>-~PIyOHK&fj9%I%hHM&RIb#QuAni)_N+Lww#vDT1`vSH&D^6 z^|Uzs9m<`#m(r)~qiK_N)(q*NKa4>^4;q)1t}=hl1#?y^H0kUIr^2UoPKnTk6EYN~ z&$0Yf!#W%hd0sn<5(ND^jT-2r@zTT&zl^Z$CT5mUwd)WOgV4M!O-nw;bxDAlrVmMto33lk`_s!q^?swT3n!gPIxBJ?) zYYBb&^l8Db)8T6Qcc(+u8h))Tq{(Vk9b%QRr~giM=Lhj;>)Fq;vfSoaHs=C|7eZow zm^?V`Qu2^AE-z}K4zJ?QnA6nX>aS_9tRz&;#~+RKq0>5aH9 z6bEN6ao_|>?2nKt;ICufG1RgDSODKx9FKvEHw;ks7QSD918`v}Z($u|V6Py5CEYl~ zAXkaCnjy|W+KqDTp=&s1ca8y$d(N>tSK}2yuq$`%eGao$QX_nMEFn2|OURcer(sTq zQ?(VWs%qp7_-}GRvU1`eubn~TRwWE_CS2OYfLtw{SwQnW7i0jhc~ic|UTdxqd2t@Z zS%5S7aS+x(6g9MZ`ZEAH18)Z6Sb-kEwKQu0yKvfNGv@-#c~gxl3K{~;+7jmi(Lng+ zZ~l;$k9r&KS`M9ud>|(wEM#j^0R<#%`(^)UT+go(>^% zwPa5%mi)ynLk%oF0AD9|WA$6vs^LuR{pHu`5QtCyUaMU`S9pn~flfoF3`J?_hM_V) zPJY1B_ooZwPM$m&LJfZC@m&Aip!Oqcx9*~4>$YQc0SsXb0zeD+@bugYFVLwQF8wKcD4Os>9!^ISmwIPqAG^B z;lqaqaQ`*!YRc~`oqv}49U&!)8g$DM+k4d~YmD&s;pcRG3qjG8g&~ngHqn+{S;miS{*^HJNBYiqdL(qf+Ogqh)xt7*A-#ZM3X1i z1Fz}v_EhRVWC|q>oXGG7jRg>nG!VzGUNB%V7_MF@+&Na5(OZ-_U<_5fcZP0ok;7TQ z8^jQ2bhd`Bl>_A9*cn$2Ajc3_ef%ueb9k=W=sEzf5xyurmUQCk)BIP@Q}r{!;a|j! z)mWE`%jTj@o(O7#q6Oi^eHw1tbLQ9poB+J$pThGVya|W{r1|>8F}O(=&Z}AtGA%}) z^TMftUTE|g4yOXn5F*9O3KUM9ap4TO1=#a^EGklYHBMZUmh`#ittk2B*XX^RIdm3o z+xY?pxm<)M=R;T_E@miSlnJ2A;q&Z#u@fiVIEFc_EbGX@2`hmshn01HX$hTQz6?ND zVxaEqvQ>0`#X34wvWkuuETfH6rqTFVH1P%4%|_+v$jDIY{rW4E{K7A((=UEboqzQU z`q8JqNUwh9c{-810O8v_Xd!;)h4^_F(Z!N{^K%)HW58Uog!arUqyeD)u5`OVAwR`?0O6@U{vWHEF=Ft2xIkW^2w>)}HxYW-|?cYb6cpQ%v1c=9NT;54B^A_@Tl`{@po|2>pc2 zKVyBw3|BqBm8D_J=%Xt6bTd@F*Y^nTwRG~gZWAH*8UXFePMiig1~(0KdYXg0KV|y{ ztp3}LG#EzykHeb{g0L&M@6+|W4|(5U{Q;95{?;FGM~iK^RYDy<k{b|WE?Nk8l}CX0HHN~c~U=TP^NGpXzF=?rpa z-*eO~>OFckG|S}6wN2Zf!;vfrgCYV-_rST3^$cyMPNJMSC-&N_9b!S83D3Zh?q?Yp#k>=-(=AQQz2Sq9`R%vo_U z!h|KVDdmMgI7?W?)lUuDZAvw7rU7^Dp!T8eY4WD zDV0NK&4QLq(Mppn9c{&_rgboU0u$eo=xiN=cwLm zoQ=7~{jWc?m{m_+am{^}?!FH1x}0|V->eH6T-B<2JQr41zM&6X<$ss`xgA6CpYjId z8;~10C9iDwltnaTQZ5aekV6B;XH&ninbdb|2K60dgyVF`tkfI87Sm%Wg>>p;iXOTS zNrfXf5o;Q9<|eRnXL8{XLN%Zki(?c`Adl{C&YLsg)F?P~;efX=2-g_J;hN1GcQVLX zh=Z^_p1FDEH_yVS^!uaVg_A3DXLe@yo_pRo^PW2z^bzj77;Ua&$Bq#O z9;qCPW#E00gh6K@bX)piqB9X8WMI${qJT_HG6s@*0kMgR$1p?D?Z_~ftD~Cu$M_cx zhe#*G5Im_)P(C<}Kg{~H!}yEs%qU?WHe`SFm;Ww^pia{yuiHf&M!!&qOv5GnGlwDn zAJT@^=P;_KVKu3KhLz*5+Nic0BvLdgnp)JUNev!~r!vK%Pn=I~mkXbPBD1xh^;zLC z+D&qMeB|a3L@t^2YS~{J)c%H6iX5+T6kX%!F{H_&ZD^Q626o@H8K3^0C zqGKpfs5H3?m82l%xiA})htJE*%%ZgP%jClOyWC!kjeL=ej7yXk%tM=pqM`~Dcq%ye zT*}GIQP-ZFo_1mO+wUz&QsV~XWI|%x2N)=aRR!P!*JkpC3l|86ic~*B!gwQ0cwsz- zQaK@Kj7>g%{5T;eo!o9WW8A9oOFFkFv@tSgk~U1d^!ewXD;+Qbfq+^CUVc1hS@(gS z$S_uAeIVUO<$53IG3gM)1RT+G?jwz9U4kU zbzS8zyzoM$goK2B_>L>me=cE6geWaDNA%;*Oi?~B#RRiY#^IAuA z{W?kX!+9K?V_!qtDn0g9uI-IFPc^pnSXX6z9Xi(ubu}Mo9Z>UvWir;(hJzW+32WXRix*gw<)NT6C>R33g&8EsV$##HE1HZX}IZmt> z=0nk8CF$wu20l}j&H4!)+unT3or}+&J4Jc9xm2;@%~YgtVG8C4DLX40zoCzOelMA9 z6j+!%Y&&=1Ea3)0#&EzNCH=xIHkL9nGw3{yXL`Kk!?vO^g~fJcW@jn8f&Kx?RdaYS zXxACBWzpEy_|fWA>)yM_<91oPFE&neg^@Gt603u{-bKnpJM&<`387Z(iI44_^{EcuDa7ZN+Ep;LkVh=Kb?l^RoWK zc~r|b-0$he+@ktJ+yMJEiLcJhs@32j3C(!+vpso!Z@A6-jOAs+X7fukU*fIHU*&CU z4)ewphxvItPF=qYe7I?^@a&1ZdF~W&;l}UfsbhBYs6j7szwXPpd#5=(xX)T1G594O z)Mq_+@4T41bePLMx-Q{P$P*gFmEUaoiI%M=H?gm&{!{{2e#|Cr}OBUt9jJ) zl{{;ClE}2hn|SKNO*~=F1|B(MH4mAxocoVo#J%xIwFf+MJr&1p*mUvAwe2^aTOeY! zabiDs<3>t*7X(6d8#)c!@OTv-y5`v44ARu{&Nc6)+D7uY=}S081wZ_JLO63LkHO=n zIC9^?D~CmbPv}L0QP!NfWC-EUUtS_SN+o9gCwOs@xp6AjO72`OUO&Tk3^<8YO-oB# zxn=WqzW<(wb#$uAMT%L#4!PApJY(QQ?fLu99 zd8wBxin0K@SZN2q6Mmf3i^if)EcPjfT-8;385SUiJPtg#Ry7~vt&^tn*Dr47?>24* zh{GeuO?b??`6Ym%jq(^&3pj27Z|bq-28ld9j;PO+y#Q+ac5&+dJ&@g4u46BY98|Io zvS0Gl11P_$mhyO;&%X680NiVweDGENZSMi$#l5p|4kwN5$6H4Y;4#e_a(8gx+C5kU z0Io4lXxWGdJ@XiMuK6gpd>~!`T(^34xK)kn{Pf-TaMSo|vII%h*h<{7?o$AS8~BG! zn;~2Hljpbct{LFB4I9f7+O+49&0BH%M{Dyl_s4U?`{EHSQHuvQYRpUf4&r&ehVXnS zwR)7gasC0`vE~qOgS@cx9e}taymrz1Jb%hQo;P_9&zZEFCy(69lOQ7o0I+qK!QI+V z<)M97^N4{PxL=PI+^yqmZr5@WCw836-McK}4sGXhV&|pYqx(AU)n_C3=(BN4!-j*Z z>PLRp;?G4gRN6>siA3_Y10P4^sL1ueoD+maGGw|v5ymCN4~&!uj=o6Fr*m2Z2nHsAGVJ-#2n zu3kbbPTIZihCgn#^Gu!5ty)JS0XjR7b4It?%aK5x^D${8VCKAmv4fpRk7u37int7r zW62U{Zs-49>s`gp?M@Kq)>I0C3~yZLomdV&T3Gp0a|6Our>_2XMJ;-NYeVNZdPQP-H&%gCH zUwrovUpewApM3Ro{zG}=4j$xRcJAb_;r;ty=^|d=zZ)lw=)(&V+i=f%HMw>52LR@3 z@uXHwz>|9hOO4bK4_))BRk@=8xw_muKAu}vufdJ)tI7{mtin&+eLu&Si{nOBALPwr zC-b3IFUZ>;)(jrSv%B@=Veq>3e)4JYz%|4^9c$I)0Z#+O^&27}ZXw96>n5+|q@{22 zmKE=cytM3HesSetUODd#o;zs=fZQ&gHGVr!8nKbb4}Fmb^<2!)wx0}{$^&~X;bHw& zbKhs-g=-7`MayvjaPzo(;v#;w^FjnZtmfyyo9ojD9J+p+0p_-F-vK+gSKp1Z>eWk( z(}oIpLFAqt%sJl_swaZk5}?Tcl$-4Vu$4=Ojow zmn_g?kKD7ripvt`aw9h^A@JbO0CM8}`&SYk6LAu5p6WJh!}m341hCeS@2>SY-&^|$ zuG-)kzO!b1E)jPt7q5I97mBUOffA+JTcRZUk^5A+WNG%7EXz@4Ft4GX0(lQ$zlWY` z%2VboR*xrd=D;OR*Le+>OXv2!P5`XIVnn+dfg7in2hzN_ zD!0d1f4D(oe)x%I{K(@8T(?Pki9&7M;W=*5tb=&ax(%Je9S2O{Uf{sB!V)1p0QUL= zv~?Ufi3b6|jh(#?pl=nAfXA-yxcTtP&E-K87bEClA@_$Q4xYlD&{uKk5&_NzDX@n= z-3CqJA>iAMn6iq80~ijQvI57R1yDDQI}Dg80)VGEcd~rR@JWk!0f61Mtp|Di`fdEl zd!O>RN5AH8j(o*m9{Pfhy!9df`spz?@Q42D>E`Np8f0;?m|1d_?EE;Z&Q{rQaDobe z9|oPBzawo>0LsnHHSOFR{S2Rw6!+%x<;#R*V&7$czrQ`%Qc7|P&7QT0wk7Sfcx47L zg>5_#A)gSFY7db?rj$esmprF06y+mgru@7-GE5WQL#j$Hm!WngwYN*PTi4BD)ZH%O zj|tZ<6s9mMVcBjPrdm~zIwv%v#~yx&{2q@w6Z8uTAI^Z7M!_*qHVQa#hMY6b({z*D z?GbL9VVD*djwHtp(kA<=e!eI|0q5wUU@)7~&YzNV^7?(?EM!o24tQp1m+92$6v{|X zQ#=*=_LpRWSA(*$bErzWGUPUy7{|PlktGreGX?xU^!0$>mPKA%!?{aow8KCnu9mojFBp7<3ApnzW1zDg`c@57$xc{%RB=7rFg6QFMvQ zAb(zS$bGtOXoQ z&8cCcahJkt*?Iv>8{1{b6W<)rap}07jGo<-54(=UkUR+dER2X%e_g(luri~M%IW}6~ zr3{fiy6wjwe{5f-Oqpf$C!~z5T*}T1(hW+Y^F?CyC=@~-7F|YF+Bh7x<{U%Xm`sX}iJ{mEm1KUYU-My_Ies)n z1pZw2s@jaqO_AhCVMX7XOtskJdUb$s^fR0B|**$*}<9 zOg!B(w0#DUqdTkDTQKja z7Mq$E%#}U{Vc%dLj_V?WluyscJ-lOTSo;I(T zVc0;N1GA9?IViD$8FX+1*#jKVW~#wvCs$hoOq2ry*TjS&h7&;!rZS?MK#fU5kuvFr zAAV2QR3{2Av@aFNLm1Ho7asI>%Lve-DFJB-x_I068 zRu+I!W~M05ufP9H=>S&IQ2{!2{u2F`f&he^Tyh&k6=O>PgyqQR<>ckl#Vc3k+Pxk( z`JfyCL~`vH(ymgmn~G5CnG2%i-P&}-cj%%k_{?BX0jo1Yh`kIzmIm?pd{i30-OX{g zkuRngd14UE5LJ?VfoOosJTlz421t-ybn*OYoI@7*{ZTSoUA}xp4B3TCXDKT)QwXeq zKn!_2J^;(B=$lPhFo;pnMev>Y$>s7%PGkxo&BnEvILA>DhR+Ld$T|KD?}Z-bQo!#gmE5M-Qu2Acl$D!J@X{mLt*9E)61W!1 z&!=E0UvAX%f1^cUSJ934Y>=%0?c-yl=YDTKP%Vw{sgWP7=45i4J@WfbPu(_K`!>TQ={YnKKs%pfjz>&#*L-W@3c>M+fkiz*{%IX0q<|=QT6_sXzL=Gblp&f&j zS^6=B1x$H703Lq7e2&}YB^S=q6z?5TJ_dX^FI&zf7vPInDNK-Zv$OCWXQHo126k3v zx_GT}@^b0q=~Hy!;svEVVhD~MPo>l6uSkSYu_7@P46gaDKB4qqvVf@p%4?LCjTnq$sdRoFr1F#uwl?ec;V91uTXSMH2J)K^<7BxQ%-g^ zKI;k$oE~BLGc98(15VlXhIUp*?YykvHv;sz3kyb8i@qY4j&1W)iPlW=`IJ z2Fw{4mtHr;_`Ndz|Jn58Z@<%!3DfA@#Y;L;U2@#u$UJm9`FA>ZDn;qGY~)Z#azn%= zdd*ByM<443G9+W!fG!%=tX2YJKe|w1c;&`W%O(x!Mkm}5CcW{-8?zOlQ(#WtV5_q3 zpy*Q!;E*Q{A%*dt2q zpZAX>eV!WF*^i^o+0s?n9zllY5tNI?lmVx%Q@8H(=r%vAl80IYRjD zOxRSVzb?&pzvrR)pTRy=FyuDcl$&hv#=$<3VcMof!y43L!>k*AAH|lB6E9oYGO={( zR4T#44;z$0rAo!h4f=W9sNZ#WH44J!7y{n%6c`knn5RG;>Y@CQ*sd_MfV_ORB2t;9 zuOH`x7SRn4%A%jl3P7TNQ0y^7Lg4}kDnO8$cOU+j7iWa3gDYnu7qN5VY>_q**R*o* zaD<3yf6b2)`97g|h9FH`fF?~J)8}!>9$_i($q~f?0kK?#fRk%u-o4HbnIN`R% zm8`^7O2_dnrQ-P3GL^Y$7@IV_$!Av`PIXm`oBzTy`RF%% z>FAey@zAGy8A96ADdpD(}n7GHYnRX+b3UNXOL zJ70X`0H1qx4_-8{qF1*dAYz?Fxcam${wq^f8Q6mXODH9*mV{6=&_!=c3Z<;5?6D_&MUdS$O>-PdDWG_ zwO=sHPV!b`(8-^(zlYJjj+8yB^I9*fcMzRLuE&FOMyF{Kv~3?L+aukaV2xR`0sxwNmS{@^sIk-t+;=8(ch6%XLD5* z%z!|KYEL#nlxkB1HZ(#M>eE~md5O3xT)0Rf_C`ms5fxxFCWg&uC8$S7v(yU}LN0B{ z3$d$EVK$?%-S5Lb(d;f#RJe4vf;ab6%l7=s@4xe(kzgpVAc>yXBU~{St{Dsw>2+21 zC{O*q(MTLqd$g-fUm^uVMB&}z;4j zRZEGS?>V+&-{k66RabY{wCmK}cb{|i31jJ!nWxGA$1=%-gaxzFWFdT>vp4&tRHLE%^3F3)a>k-P4e_ev7PI~n)(3Q34i{ka#(d$eEqI_Yx!iq~qw!&@ae;+^u| zk4iklRU-60hu-s~dz2hYa##k=o{ z_QJj)Xpxilwzs{Fu2t&^RxS#W!CO|aT0{i`g9#om1GbDvwXVZ(-R{NK21 z2DWMZ+=ua%FW!qxO4+T5@g?x_Y!RHrsF7)tfoPuYRoABLlyt8$caZ&N8!$b(i0?yR zsT@d1xVmSF8Kxjr!3rEQ2GK?+Lruz=2Dc9!tv3+-|p)?-2Dr(gc%h+sI z0nZH9l)5e!dA_o7wMs>fRrI$+zN5(NE|({`qMw|cAVc-oz*cHi#SW-8ns{jQ4vbG# zbQMJAVNPE+#>OVax;x4E%~a}S-*Orsr>ipRT*cIvo7LNkRjbyan9E>vbQrl@L07u` z&8B8%uzPrruGzlsZX9&r8uZOy1(z=HIuK{kL@d|ZMxj(9eLgVoD1W2wo>_ElkBN)6 zSnR_1FN|S(=+JrpMzSpM#fKdiPG5u-K}voIE@s zt6yiaEXlYaV;+=gNUZv8TbuJPSKE#}yB0ES&R+B9F~%m)mfs!R2eM;`gOeD22Nb0cW9rN4BmHCm8TUaEJ<)%?C%!Ib!kbxd(jBwcVm9Cd=k;w=_e6I2s$LgU(Tr5r1To0naW+_V#uQ+(>75KYJ5E zPQ6Ts(Am?&xaN+IlHMEi6gfm_s2dbcnLV;|E{b&DyHUwhQ_nS<$)eS6a1LqmnXcal zUJq?UMqZ+yzav3(cs8~#-}8=WFQUKDZ3AzKW&qClIJwAE!ge#;WMMa5ATmm~l-_Ky z8oqyBgTeGHm(dx*yoQXX7!qW2=aa4Mo3DLCVC z#=AHIF<5NNa}QpRi_SV1v-@WuosN;oq>+gn!5BRF)g%GN!9W3#iTSqqy^-F4dcJFV z_b=n^5b;<;y6(2<22AODK{qGCPelMud1{>d`Fs%!7@Ztv?3_GgNndZ4zgOLdV(<(& zeR$h0Y~49Z7fnTg;H;i5xxN_HN*%?HthzD?s1(@5vAR)n$fO*aO^5DM5yu^Uf`Uo; z{2h$rQTKC4v4lbSzNyNLxI#zi;#_{v8q8g~9<^!%E|q2SL9-omlFjA{Vt^Iw+O>^I z7~MVnjL)l7s&egF8s?6jJLJ4HCIme7_RU7A*v*(ZM2;@*uC9I^nY@sZ&zr7P30xx| zyO_y#=x@TwvPlpefkCr~=^CzkK;DA6u+m7$cO#8v3H}U;^=>SEqp%Q{@xGa-~Ro-<$HAzX0B0PC~#4SOdO#yIDoO? zL9Ck7Bll7d@|`7o?`IEUbf%`UuZENi$8m)7Go)W|w(50GmKuD%bk#b(_O;J{3M&p= zhNrM;h|K?d``h1swfwgquw)2n&SK|$tQ_M_!>|NzCzdp1!rOZPwZlaZTf$z{b*b@l z;ld{r4^Aff{3$_U17HT)LXqLbV#k1^5)lf9+V*{RuI-1PlXRP!Er&J=-wfy}h*MiL zw`=eo#>QH*MhGk|Hcq#Fm{Q~ym1?uG+NnOD)TQdbH`ZrEu~mT?IVSEQlgpu6nNjk=V)5)*qtAQ-IVBd_jtLVC;c+BpV2%59zk2(NUi7-R;Mv-i z_Yu>!1++y7n(fQz5*l;P0G-{4!KwsFX3ob+C=+K{sz~_pBhfTka?wQ>-G?WseMK@` zKl=WUVut`61`(5u18-2?INIr7kC^Sql|Zw}W0vp`BVsn^swFFM+1VFR@j8ydY?;_K z3F7E;j>+U96-!U~MGNENXl?{+3gomo0y%I(;c*6*GA@9hlPlyju8*t~;AE_zJUu1n zrx;fTIAv;>%{eTS1hYzq28G$00)dJHrfW?+JTQo%(Me>pX$FBVnA3}?@(cl4shC5l zqo6DSS+g{&S~LYTl@PTftY3Es;}XUs)^4U&Lr-@PnYg-aH)R~yv4gC_5zjdl9i@J< zB2g-fC|87%tM!)i$r}(r{V1lVC)Jo`oTmM2>_nlXh{tzs*Uy#x8UgUUd5f7@tABg7 zRz<0^51CAspQXtS6H}V$I*nSrN)Xx6!AcSGej2$w5YY19Z`C05J5)(LmoE@N$}WLi z8xdnVD%EM}-x4!q+Kl}VPfPN$bHUn}&pf`^tGxkj7-Pi_W8iL8g>;}dl_?Bec zk})%U4S+FpIsvpdZ{8f+w%L@vXD}EXxMW$Ydn zzb*{Ru}HN21=un~v8P(axBusU>>QtDmO7%C?=xk4cIUkT7CYBy@Yu4|htY1Xd-;p-nyX*&l(BNj z__^7qv&YykQUSNq_$w-?*y7-qSey;w3tP)$X<9&=&rTzDTFfJ-I- z_;bRO#ZuDN>^0j?GU-X6mP~BeoBiA8g$YZ0tK#5+acl_= z=HUurTFLT}jhnsj7aBiI0wIod^xzDL(phsZ=)Fjw#>uQ%2lU)H?K4Q7f1RMtv&UQ< z`8e~)9|u35=aYGkbR_6Y#W5H4J-xFy7vu^BWO5y51IViqftiBS-sS?y!6|qp$a6}> zzatNo zRsd(I(FWplvN-qLb2s5hY?p4l1YiF8mvGhfS21f94*n)+`3zL&r7F^3z-7I`2800!pQD@fhC;{U*Hd_raF(gHXj;}M5iobJR-_KQJb*8ql)U)^-C!T%ttCX1&Hi{XV!2?n6 zSpzvbFgxT46@x>Q^UEJ%}tDUHQsGaDu z+)6-+oshZqu2+JLz-GuIDFduFW2Ldoc07nP_o3c%YC~klJo~0288{Dcj69${=rOZ} zpgFTSdw(+F$ifq3jHJ`f>^vRK{&bYTBPj`F=cyg)Xtr!NYmA%=?b`3Vr2Ts!NVlp# zPcuPdul!)yiU#45&S$2;!1Sgnd1;ZsZOLg|;a(SSd^1w+<;Da~krK&61gm zDR-5D)wI-Sr5CX$OxG6U+1uShi#t-I(=iRa}6>l;F?|OEEO{-7BCY zP~&GcTY95PZ*Y~aF28nLk2e*#Xhxe!oA{cdX$2VEW(IAurJzN#fE2h;=vbLcAOl}WSYBLX|>R?)3X zc@*@Nis$PdXHThd-Qe6Hm zZa1TMu6gb?_bpy=@kX7f4AcZngWl7|EbHW?4^w@3a>0^}0n$my$BS~bxEph!gshyc z$Ypd0noStmZ9)m%H@0u_a>h)^2t8lEkKiqoQ!v{NfvK^NHX+-}9)QK-+~l`Iz?K~M z3G9;R{k63}Ji0~WdT2x1$Ow1|hINZ(RjWbz!`@ z{&s#58QE`Zo&+hG=cFqWr}h;ecFZXoB%I`OQ+0qd@D>@{W(*ixWU=FoD#tjJ0s)|l z$*7UllaZ{RK6l#<{XFk(_1){C8ko~_BR$6NiU4~+gui$RyqbtEQ7SKt5ADK^ZI9p& zzx_3K@7zW&)~?65V2_0NH0m=pPZG!#3LQE}D9EGiNj{U~80$aJwjL%oB;-X5xFxsE zx6hl@Rxi>*=D`|e4U|IH$xaPex-oHP@SHS6IQ3@y1=~UabRYQm`|+VoAHo5P4}b~% zHVL>qHOm$$;-`+yx|Qp3{)S7?+tVv-Q8&6}?Ch4_)kC*l95ZDb^;%s(PX(2kY0S(_ z$yi3c>KQmqm9AI7WQAH)wQ#%24xa{O5%1Wu`T$1o{&ha6tAV|TTu8^nFygt0ghJJSy1a>9v3_QQa0V+_nCLwOX_bF?Dh{r&v}b5c;F$6=yJ_m<~ z@H969I@SB!v17+3jh*xhA9i)KN(=XCE5gp%f}ZwbKc0%(8at-|E?5W=xacU|?qvfy z&R914oP@oFtX4vwji9b=0^othTj z*$xwvxJWeHmCv-_HdLEXZ-QPk_eFR;5-rcW=<+nbPar%Gi|^F7IyZf;1u|J?zDeGsc9Z+YY0{<-tfGh0^J zbLOH?dQblx#&i`rO4K!rEPf!)(Ep#yvm=`?P_Q<`b2O;bk)>0xr$DX^Xp#W+<&;et zRW)^|%u@q9A0MEt433Oo%j3HUPBcEPT&ZG8fZFib6e~4o)@g<-m$Zr?vtq*(8M};t zpbW2Vrcwhzni_+=zH-HK+U3m5G{F(|tMq~E_2ks;yzrnyk?-i%@0Br!D4oMh-Facg zCZ@~d(nqm-*A@j-)EBDGD2T1_GnE-rP&QSbP>@A;v1YC+&?3kDri$iF=9+^ ziy$(UV*H+dt%5Y};&&$86ubZ|E`&H0L;K_upmTqc&**tTs_{k!1{t#rcJ9RqML{_kaKQi^Ohk z{4<%hB*5FJJ2hEN##*JOBBFKd2aWg7Os!7ProH9w{kC+yFYn(uj!%5%v)C$u>blqw z(H6RhG^9gqYkYVY8kI8U^_8${VIPiOz7Wq_HV+5Q?m<3s%z*bOF8B=`C)%N119~s> zdmnym3-*&ncdN!X%k%zSQhRr)x%ixOeBS$g$Ts7+4AANQrrDO}BGkFUyIVPjSeIto zHs6>YVl3OCo7L%dkWp%{!CIn0r;MIB6CnX`MibOU};uZ~z>VKE`ImexPdFD(v!j#Qhj?F30w}_b_tZvr+1qg>1fr zIMQkhIYji!XDE-6EtHTemgJmXbaeM2FJqy*A0^o?cJ(5wu01t^$lvf$%!j{%hjMw6 zuD+QH6A`$=P!P0x$99a5jH1}xqu_^9BMK--C&3F)!Hd7AT_jSSV6xE9RU%=eF>VP zI5HJ*>2)s?QPALOvTd{aXEU=_o3e#*4CD%VGI*ri)3H~_k4#ij7c6v%r-I5HbyeAS zj^`E%S$!W}*&656+^*<-&lLt#w!inD60&x@&2|rAf1#n?#wb- zWjj`Tu;A@P7MihgIw{yh()Qp@w_$FVU?MO!JO*Izv&?Y@Hj7P~ixr_u%9;st%ijzU{usk&fR4a>rp8c#r=P52c_F=rc`s?W z0n5T^@HHpCHZr*^G>xXws$r^H7h9EBpzS;H$Rm&8v4eX2!VzRP%IMID|c8^qJ%151p?}V{9Dl zwp1!bn>KAa;J{@|Zy-pc%{q2X($i+y(eOzMaW-f2BHrEa890J7X7unpXy{6#4l;NK z`g9vGw=FRn-|yLFyMH6S7I}ZfRP`jAqMoepk66sYII2E$gSAD zdpljR&02-$lG}ThbbCnJXwAS{P@ietXix=U;n?8)6Jn$2oc+v^7`Z*S7pMN#=Zn^|~tv&n%WD5n!dVQ2-c&g1v zK$Wm@a~Gg{_5u`pW=o%oe6bsGIuAq{G}{r{&TA!WR-}ultEQM%OGeRsSgBxIK-u)v z1Y_oS-*c6n=H#HOjv?u3jg2dnFtmF&>5M8)mC7q zAWNAzR%^)T(ln~+nYuD`EK{cL)=I64TsFnpbaVUr1<1|E*!Y;bXq8=K?j41#s z6lWoo?Si?4J3713Xs5`MC?lxs+K9x%m9=cx)EEdz^Lb^(G?7BtDVENfq>H$r4@vzl zx?a=%^=vNdHU7A6AQ05mWo3Gb>?J9CDErs;F?*!uO&3r>qnCd$Z6q=#3g$R6eVu@L zn%7%zsQbGH#yaVBWC$X`&+~wy?N^PG2%~PV#fUPSmM*{W{&@$UcAUimDYLBiwl$rU ze7s!jCnu-C$=HOj4r4;wDhe1lZ7u=mxb1B)T*cc&z|q*a@Vml92l!?y`Y^#k7FfDX zC3u^3|L*VpZi!s$6(P{N`RBLbw0}7R<$8G^Zqa=LyL|$>v8k%=Qui&2@U*vFHp}n} z>Ju`#CPq4!Lka|2SkRims-^SLuMAr*g~8Er3=Zwl-&SnC3{IG=L)k=UM*-{B93%?) zvruxUkC=(xb$3ZE3g z1%onk3Pxmvxm&d>L#OwncDvtAq9g!y=595uQXMTWPDhIuB|~RP5C-ggNP-KK5qwiS zV)%lN3dW4(_6w&d0BIItM0-pyaUAWK*{_cFUEcMYj5RlRtJ*NH)jV9<d>~`^hp-+dfm(jH^ZVSH@ZpS?Itl(PkZ%sY*7F z%p2biX1#i8A3I;S^|K;hPuwv^+W@7$&lW2LkL-~>E1ET)L)Oo`ZVj)5V5T-*7Q$l) zJGVb3vEz>;)_Vp+^ft!KefHkZ;jRzfC1pj{(bcG#WE}$Lo^#9waiK0I>c9WDzsJN(1CDGO1%y$n zH&JgeL4u%-H#SRrfuOBYsc9Cgx(!)FbVkP7Oa=8SWicorqCiHoTt|m@iR*MTY82@0 z#MG3!6RXru8x_{=_u@(!9vx#jl}Y*BNuS*C$hINbt`R6!YFY{1taBZwpW zluIj{rmjadGS^C+`jCx%f1!@ ztIt371^n&r{|@PhY!rcoNe}EJ4vy`K#L`)-*6FUKR8L1PgZ-fuaybGiusQzSmh7Nc z*dCd{Pk#0=e)an;D2aV#(`ihXr>S3A$YoH>rYT6=Rmvk@Dqv!A8e6yQL{{(TS`&S0 z7r884Oy1@FJ1@pB?AwOH>db^RH0q<}7Tw}!5K%Lcc_ zkdL2>LPpt01G6d15H~?zb6HA{%w1{O+=1(~9q2RKoMzgnFuSu*25)m@>f~=DORoC{ z+_d{b|B=ZC$vL{8WYwL0M?%WP0H-mFI2(S6fd^`B=1l6SM}IX-@lAWm$BY03*){N{h1}v}!$;EniKh={LWVbZK#wRI7D@wU{wnpes(38Kx(v zP@bH`^wcD#WLsj~q|cBJ79(Ulm&$)+@_B+QJ#YKg%^27s0It!L<}TQ?i>jET3%;PK`#HBao@FDjJs3!a@xCI)#aO` zYn!nobn#lSc@%5a4h7yZCvN9(Wmn(A`tsbif&pD6DkY!~ zY3bpE+qA5rq>UQLGr(qXHa6OOj3rOHZ}mGZSXy1Zc6{f~ow3P|XxwTD<}~Z=zWeUm zs0j`s$a>cU??OJ6$Bl>FfKsO9?Igvn?N22#g!}t)x3;C1D|Oy8#e6n#?$g#7aEq>!xLk*jiPJdod57W1 zb<5FiG_iGT0z1XlQ`rT>l` zBotn^I6Cjv1zoXxul6WSKxfGorXpb=Q_nITMRNy71`v_R8}Yh#P4!$Ib@GO1MK{DQ z-B#h&W9wF1HK?hY4(q{%HQ<7pc{*zSH`Z#Do0#=fgPMHZJ-*2*?bU8SZc~$0_mh8r z)P40+KXYG}I-y_O^gZ{<_kG=c{LX)LpSbJO?$hu5ocpKuf6?9h{?EC4-}7nrosWIl zeeZ9-;(j3g`}cg&egEU1b>I8wC*8k&_!I75KX{M(-Um0ie|!Ij+&{nPUG5uix!v7+ z^XuJLZh5`?|L(lOefynvx$nN~9q!-W{Z99<@43tUi}Zhz*Z%SPm%8^{alU)I)JuKG zrRTUiFFMn`{`3>wZ5N#7-n8K~cj*yQL-o+Z-1+Mcai^_V=}tXxxztoW%)RWG=ez4q zJwa-wp5!iCzh3$w?p3n?hBHrcuRZMq_xdwVbhn;&n)||=Ug^I3_M6@3Z@AvwbM1@V z-B-WReelH>yZ68368Fj1U+3<<^G5fzx4+wc_1&A?w?Fzx`5QmuzH`sL?yDca*L~pw zUvi&#`={Kyr54_8uXvNY^%Z~Pt~&2Zcg+Pab~nE4b?)YuztO$n%2&HrU2=`PQ|jUU z%}ZYIUUc?Gcg>~Ox~ng~+Ff_qtKFMkal3oN%WieAeaUU^)i1imz3!!V$o8G?jaS{} z-f-31-3!luy?e!FH@T}Wztvs$;=A1IuKu9A>V@xcS6+OlyYA)hcUQmkeeM-6dB1zv z3*YOmy!>5mqx2VCbeG$B#rxcqFZ__(c;$!P9y{et?(pYd>y9|`8h6A|*UI)) z?zu-@?bbi%#qN+JUgQpyam~8R-HO#OaBJ3I?v@{X;kMQ5F1$XhKbfe@%F%4a>Yi%1 zI*(R2)w>1>-m`5AY}NoTr4PB_i2J?=EO>^Vodl}8@umaIF}9l7=(cl~)syBn@J$z6Ts zbKEtj9_Fq)^9c9qbEL-chUd9go_@G{$+4^5h0j^xj##$9-FV?C?#-8;>8?NddG1iz z@9rtOj-HZBmpWXwyW1VGdcB*!VzpcK{NvrhN1osgKI%lb_UIGc_y6O+-CtYN`n>w= z7ckZr);b2zZMI{hpF6aNwOfm3Pg-MC?`IqRz0UhQtc_};ZJT|BHC#iROWK!p0c^?6 z<2IU&+P-buzIFTjaNDjYS?4vZh3xng{1 zji+5GugiGyxpEFidGCep7(IT9e1`Ni(cv?+{rCspjFN(!VTFc}i4$R97fG{YR*uV9 zIVu06!PKx-jwUz+H5;Qa{>GYBaM0s#eB&FtC5GZA?8mLtnZuDM9)!ws7vaDE`S+ME zSLr%!HD?gFn`E{S$8^obaM&T)q;aH-4rK(;s8<>5)oN7GZq>Qc5lSD~e1@@SJ)QmN z?wzHp4Z8NGCr2?=9;f&(_opWr>y^)C7`rt(Ci|{USLp6N6PTFRgaqoLQ7g?MMqgJ6 zr9z&uM6T6h5=1%`$#)e|>d0!0mvo1&jsj-&bfaJTWLYy*y?&mHKzRfH{hi=`wi^uS zR#opz2dZt&{A7JrjE@hBOLb5gD%G9i-_lj;;<-SCbXHlK0-OUA7D^@kOs86YOu#S= zRI*>N`nM@EZ)4-*`nmqQGjuO&oFH9Fr6OIRu_l{DkurmJ8#4_(ic`w&k-eZK3AC!i zjC3Ci8^wHomeMNxd+1tKH!{3(xH51iSK?x3*i-t1<(If(1!~P2M>$zpy~Pf=XYC=E z+%h@7^PJJqA8qv|=gfTx*;YFVW7b%HD6FOE*@AXLEZ77?ok@-O?Xa2yM~e;e8d$}#)QBErNg*5W#eA^+SgtuEZZVuzy_uV@cGSOz});?Y&!OC?5#!25@xI? z6GxII|Mu1FJb63WxClTgpAA1JWbO98{}i-C*R00K;0}xq?WXHp-R}A~cZ$89c;p&n zQxS6M7~Q3U*mQ*qe!W#Q%^HkPRxnj~m<127 zf2ci`Qg&rN)*iePe`SsC)&&a|+$~B4H+|z9-?-pqFMAoQLjW*cQC5dAL1EK3wAfQG zD6DL^+Nt))Vo(8uHIBooCRVP_fp;*W=Hm;*1OV_6Y$$7JS(9_j{w&VHodLDCn zdvMT_MRe6R)CF3r5JWk&z${k*i`p{zUcCkao>V4}dRsI0v_w~npmT8WaV9cMOpGyh zE}zY6Emnf0Mze+~x$ds+9=M2=Di}|tWwJVooyZpozWhoI%lv}_K`WCj>NVNU62$35 zR&P*nnZLJAX6DkaDNu_d7_rO(%nHI(lEg8#O7@#*OP?Gc#`M%E0J?AyBl1!sG2ORT z=Ecd#(q4@DXrZNv4qjw9LYpxgTGfMYU>|s{f3tW0EY21BA6&fn)Z2jBB>)6-7At2} z6-=C0{wDT7a=_d-rW~IvlJCs*V;QQ~UVE+SSlMT2x0bB^iZI#1+q(fwdoIKu|Ml3xZ(!i@VJ^CMk51z8ktxZ3AI0X~bW*=sm41@-A#R;E;pm`{&HYUuh$tyYRvbf9>Pv zmH;p@VJq8c$qs5$jHxz2r^kJDh;Uva*h$EhaG_)wt+EX(Y;V<14791Otz5a%k|2^| z-AK-b79VH(!ASd+&V^T~1mRt>uojlmljF4AFcc!l($(jOxl}F5!Mti*fCb>wNm9+5 zbODBaHM(2p;PyAY7GM4J-{G7yPSbmsqyr1kr!v%&Lj+hRD;nOF>MTAvLKGCSCpd$4 z=k302BJ^zB@a44>yfF?`-)~JmlQDcAfU2>VP*~BJL&*CIK@pi;Ytzjy3o!Hck^9C^zy~)(%+KixbXX ziIsoZ!wT8T2 zRS5(Fs-9v2vwOPGUCg7qvjdq-ic%w48E1=^qL9y^rkSNPRn}3Z=&t}$ZPS$*O;+&9 z56+b3RStyASSHu4$ptJ_-$E?sHwhreMu#vk@Q7S@TI-WC{tt)*Oms6=P~+ota_gTp zTVn*3-2qF9O--qhQOq|^F+M`sF&<0lcAR3I#B`Z;Wqqt(j)^5eOopv3+Zh>St^~nt z#@zWDxlzQ)jsQ(rIlZ=NxrTn)Wiv`Ps{2Md>|1U zF>cSA{ymWu;b)vLQ7KsYLf+SoaBIFecY{qnY8M(SXYq1Ylhw0xVGIu}xxr#~EH*A= z&Xe^bwT7|9+UY2r_GxTfs2it}BOx1Siu}55U1FNJq7T`)FKqrI)^xAIwFh5|C)!dz z#!-LQKP3Ph_F98UJN!+H`OFj5pJRWDn$}zvM&opto|e@`ovKvu9}jK84kvDf*Mmj#`f$M9Ud-t#pjV}Vw2WLF^LfzK z+pneN?C;|D@ZNI36_;FyKeN$}rmGD~6zxy(a{}o8L*|KFRIbGC@c_`pGAej6@onpn zrt%~jJ4R+Ml<2V07u^pTy09**6~|{*s(fc#w-tbeI&(=dXW&ftjfo4JzF&Lzo@Bz3 z#o~q6q4sZf8)lh%){$(SX|X1%uh{R#1P7U4ufU(#=Fe3?_Zr+Gpl*RIIGNbs3*j^N ztx@BCl*usJjWKOrXU^$41aw+NyTW6dkOxcF;gi)Wm3X-mvS=xjD)D8#8vIP>Jumtl zdJHY;u=m9r__)=oJZ--2MUJx^N%%bz`;Wi>ttbKB5VXA&$!Bn8u*$G(9`+zO+mzyy z!I&1f%C0U|TS1(5+G#i8ue4>dDJ)+rwU#4zYv>{bDKuR~Vc*R=hw#Y2 zAS6ym#eh}&O$*A?HK_nbU8$Xg97=@@db>-MBN-YVB~#R+piV|jv`|n}Qg>>1Ck|S? zkYH!3Tn0;qRci!0&Wrx4Ag=zl~Vn)8R-f9Xc8^Plu$KqU5Su(A=O6H|s z+#oy`#+IeXBGy@!tce=sPVxfwdO+%J zcuk1a1J62j^CEeVGC*1Hf>OhGARFhDfyWisK!`T!PJkg;->y-Gl51;MqTJ^o0u z2fk(4X}1F0+P#g^MP#xjI_hUzl7;EUS;&KqCdi%W@lSs8lMRwhd_@SZHvY$z$j5oS zaorn?jeDZaYTxqSN&>p%wzkRXDz`PkA&!tdZ{HcOPf>frYhQzd4qRsCw0s6&3L~oX zD1hzpu`&k6XE0K!tNjpwm9i-u)Zc}J=J#MuU$@#K|K1&wRXn(73Xe_IFR+tg|^f%rg-7-hqq;e$!SXk~$ z7ySn40&T-6bhlbFxe{ZoEW_0^(8|EY0m~I7!D zQq1N~4FpD&Ww4vgGWFQh0QH8mqWJgUfBy!_hP)Dg{$$rSIeT1FTw$Op6nCYAx(BCLoGSyS}N;8aG;=(!mM#j;2M!}oJP&du>g*4 zT{zPEWDMyRZ7O~5l+`0(tNB{ECSt7T>fc1h&u2>!gvMzC!L*F59KizWHO;8ydElfQ z9q4rvSrajA#$tz6Q3${SoyKIdiVjx6!2q320&+aoZSP9bZtR~i7FHPFwv*+!Ol0-# z!J~pq+yi3|;`y_mhnK8;@&9JRCg@jCr`vl2bd{O{;TA!4E|Ush+m~xKJoc0@bhG;U z@v@Cq0`w+1#)j&B=n#SNTVgY9W!$3(OS=m=WOf&p^>u1VE|#>re_#an{`_J5%R>Xg z)J>q;QVAoKyJ@g=+~AIFXv;SB6;l~5l)6eKyzI)$Q4||`qOI-JRbA(^z?w4alQVUU zPF1<^*`M_1#8y7{$xnWAi2*uak2?qC>$xx<6M!VkFj?11p$PQ0MEl#vPq-dY%VWu)G7WEr+y%u?(|U z`8lo)o|Deh<a{k)BwzP;ThBxNCE8AUvwJg zubqvb{QL*_@sGYQwc&n-0g)4-xUMoq8mM1TX08Y6Ob3IW2M34n=w?xP-})FH-ts7Z z`{-l%ji|mqvUP`u{qDw&!C{PQDtTFx9x9wC(lKkH5@>1N)UM7BN~BComa%7S97Wk) zAb_o}s{^@AtTkSF-kO6J;dyJ9qo>q?^2`h$=6gm*7~3-~fXi7Sedy>oX=F2^FmK*`0-s8?iiW(Gb$#eqJi&H^V{VZkjBAPGb)p(7Jr;9=P5E^;A zrC`gmd6BtsO@P=xXPmmVOcXc>>;PQ@&3c32E}Kos2*yRVJTqyv|582(I09=1J}982 z85Gv%qQ}?*V+q2#t7=>3N)3fatp&PMkp)MGadF;04J_*SxsbU~w~UW5iY>@IWaJ)r z;DIaRI1cNnirmP%QA`(c!}=TWBs8m$NCsG&#mgzUC|7ELB{=N6V#L$V&|QDsbvXar zb9|Ca1B~A!P>q3zj4`_M8O$pcv9P}f4o%`Kzjzq`@!KufGgUz@XKBXUW8R(y>S3&uMM`Hh>LudVnV_QOWf(c*~BxjD7Oj@zM=-MxZ;XW;mK=sx88As#Ls=^AFyiGDnv2a zFy5P7)XEs8S=E8Zqg;VZ8&WtfBajwYcF!VhZB@)LLTgL$ed2Q6nR3fa1S%qi#MnbdytgKq^{sfiZE#RWA~&7GQT zmQ7)#`WXU#f_5~tSB z+MuOk3Ar50MG<6ajGT%Lk7xk?^dv#Y^i&0LI`V4qjQ2vsSOG_%5;1VUMc1B+_v+2u z)7^zxy+suBIiwh0!_r)um8#;Snp8k{tadH(Ju_1wVA4r+d}2~XfjO}%C@Xc8SO>Py zwHO_py=bNc{52wB8;9`tjxEY`5%laH+{K!w`JBe~b?J3dGj66*;RLO(DeXTrGAs;S zuf9&VXOFOP&8AbWIoHi zc_06YruVj1gkfCbe$w=s2V}wWUI8^<5{8cKv33t;Ot;Z#0)X0?f;kWB+CK5lnILx< z4rK48-2}062@OXAJ9DpEM(UsVnZwLf_s8^FEmPG4MYCOkI0c)glc#p8bE?{`|1E4@ zjTOWNj9f}QJXb7Uy!fN|3%2k6;6L$?pZk({k48YZY1>)pE~+FT<#i8RP3nz0T@=rh z!RMw{32Ibei4FvC%?9m&i3&dHLCJ$$sT(zUA84;ZH^PAsXqT;{I zRDFiG>B$-V`ad4P=HL7dlj9?3&P=gPR@8Q=Ga#R|Fk|L2GE(j%hSvY2v`MWzK^LZG zuTBcU8y}zX>E1D2e(Ju{*5A{GIlWz&+uw~2jZu>^OSy~`U7G0>OQt6$z%Dl!`^(8$I3K=thsYohG^H|F0Bl~#D=y5nY)5)Hyf;k;VUq-JS!6ulqpC}XY$DA z^*suznlh5u_vKw8%?`C}UH*myaSkd$!tY1Sgab}ml}edogIT6^xt?BvK?S^e+`eBk zWM^i|+;++i0X)`hYF2WJz}vMQ0h+~oF`=Wa*Fw=_?jv%Z`Kn8Aez7|9(DhoH&c}@E z$jQamV6`IlPF*Qhc_FL`X(hPAnv5m@Y;2sJZ?=(fhs$!oS~awhv@_GZkSfjI)FgzZ^& zxHXdoF%aiLT3g0gj~NS>1awaj#E~2^5N9snFu_3?Mgwym#L?X>`zaIt_2tTb!PvN` zpndWSU%@B8^cA!lHO9xOixr+VL*(ctjVSDEWx7&mSIT7FoR=bPr#IKdxVoT7&$UFzlhRg<~ZA!5z*lqSTy zYQ}}}ak6hK281cm2@t20wi;Dz*+rpS_0&^Oz4=)H;@FB^9XRg1qj2WN^YGl`&cOPk z&cs1$o`?Pgi_~?b>Oh=+^bt7wxaZ>N!&hU)(uJ5ir;jYv;IM$Mox8c(snnYo8J#2(hbSVL z8y*>Df&i-=NGFJCG_0}#voiCg*+^wFs5WDajExDP+(9O<4aoKo3dIiAqV1nOPu-~m zL*?l*DeXl|mZ2;lZggT?Sb>=T6DE~UoPX~H12J>QuX>+)Qh96ORH&a z(3E%EW(d&g%?4xq^mx;|T~$Iw|2}04Yt<^*xJIMuGo&0T`dPE}@5-tT_!_NRwZTfq zZ~|pUtd*8&diGJzi5ysMBJyUU=Q)7M4PbLtz7UixNu>r_n0`+H9Gu0En%gIglM5#j zW7z@_7rJB2?HUDjS|jc7&6slgd}GQ(5SL&a7-Mty-FGi$d`(!vL6|sAaJc&5tNx-O z&cM||xsT`cb|dY9b|NnB2^Hplni>K0C;s6duzKw}U(zUIV761&k}_)f0%93i(yLlQ zy*$bL6geL}PWQgaJUCdZ%eiys&B2G>{?`9X5XVMP*56g&xUXjMbK}$X{VINL$&w|X z-@SYH-5NhG=VDHK*c6CrsFHKevdt|_No`hbS6!<5H{bXafjG8Tyzo--KHV+l zzRvI=1dKC*NrHd?FGUwC0hm6=HFO}KCwrC>TcDJV9JBBhXTMxV>yA z2Ij}N6@vv&2W(sYxHKOD6YF_WXx*PG2TtV&w{!A@<8iX0LB`v zapX{t&xVYnV-sBEXbhab7R3>3%ECF!p4Bf5Uk?hM^AP1`!DTzKeRv$ZhIRmO>PjVJ zRVb_$}xSt&GRE)l)2S%1gh0$oyifp!lT=n4~Z1(!|J}eQ7dBTQ`3{Y zCIzU@MaUKyL+7(i!QYHow7DEzsw^i~t@;eqNdMcA8M0ce4xn4y>T9y#d85iQV^Pdl zIP%fXyLExqty2^C|E&TzW#l{?rw`_~X9v`NoUsBrp;*X*0yG72f2@T-&)VMHGa(xn z+Gi+PV488-B_8QB^4(_{FnUmu8;g z*g0iN@vis27azO(ZvSw#tUaG~U^OKP*kbTi2XN#*{Nxoef-evt^I^SU@4#B!e;+y%<_Kk4}S22FG(oCHUT&m>uo~9PPYZ%(B?eZ&^DK4Fn_hZ z?d(+?*v4e6s)0p2uKOWN7nZaPfuON*@XhAcM5q!aiVVL7qp@*N+m+A~9{cpCKfU;+ zFMa7R@HDlDH*djhZ+o|RVD=EO88G85pUHEetBAZy)VUS`TWq?LaL9Jg zV#aE9bWm#<`VfN*lPpZ;CsXQ1vsMM@CGuKxdS14`XK<{P;4`Hgh;zcj;{2po$aJI8&Y~R`G1E+8vXQ|=qXT`gV1sj9@fJ8dq$PL(&`MXpSNdpLRl;(7HDi8t0FK{wTq+v32L(Kp;?e_ZGJr#7k3x#06dg2}H0U@uYEgH=-m^!R=Y?xx2f&A(a%G zpm+c0oORDy-?~4K%Cqnu!#bJy^nMAMd^3CY+1q0riyHF`=XwL`e82zeadUFyZOH;X zcKmPV0(G{lCSPN&yY41)^)=UWA_SwclFYz^(A#diQw;Qvy+zOB=5B7h;TGdQei9G* zWJwj^1OkU-cWN?%hsdvp=PGwX=Eeys$sJshM5KrbGY`-NiMw#_yfMZmNTS@!A?Tvf z!aO+9i*pk*e!8EBaQ+O0x90Q&waF5(ySqG#AZ{wXLJc+TmjRs(BBjD@IZx5N^B4G8 z_-E+E=%kh<946=f;qAA+*Gn88UGlNYB?wo?Ifyg5w4+*ADza_fy;x;{ICMExDG%bO zs)INUMKHAJppN`hV|Wl}EG6~}s|1b9pOg3R9>nR-$xL+eH{S~a_a65B8 zo6QiRb5kCAQ1k|coXNabV~mZr-6)(gEP`a{kk6tQH*4lhQ&(AKhI;#C5cf|kf_UC^ z%|ziL^6&F|S(bhC)M=Sqjg`V$q+wxUAEiOsN`2=jFI!iIxX-B=xAq5>iyeNxR`Tc;|ve;r|ukYBp?X+y72jJ>$kv zt-g-#9P0h19+4K`H}OJ7LjuGvb^GQ7w5?f=lJG!eFZM^}iXdt)!Lvb6qd0sK z>S9CD5+8xxnd|UcRUSUq(SeuSwqs{yH?~*yq9wN;nXy}t5tD+#q+HadRiT=qhP+iP zHkYD&a~aA~O3_i=N$pB(T(K2f;xbUYsSM>?t5KWLh_2EBv={ZFv$UVSj}9~y_Mkki z3AMT1sC~8v1)Ca>O`fX7sjVo@=tkbA4rFg^L(Zm7WN+$1&emR}Z|p)!ax0QolYeS- z8CI{XMf}QotX|cKRk00-j;g})=xRhnRw7_gCY}mN$C71v6!{1VFGFBZJ^~i!lFw=Z z0+$uSkNi~^F3P6Jfqy^-JpH!7%YQ4peYaqNR|*z*Z@}a8lQ4H)9A?jr#jH88m`yS7 zv3QC&%$gm8DO1Do;KRXqcuFYM%W(fgi*f&hfw=F1MY#K3|4rHtIMgT7#dp<%Vxsy& za;<$#{T4a2t-;6j9Q9JQ_%iCfG$wIaJyrR+v~Q{}BfSuAVLw%RnTQ`MwK4dUA@NfU zcxlmC@#mE1qCu_(Z(rKS_2T}m8vi!$)|Xy>8L{zkcxc9SjGsK2*ZER zx!J|%)MKJMxh!98t|5f&c3R#&d2X^f%6wGVC?Vnv*1VJD%n2Uy*^J7u!d3pXX+i z_5v( z;5O_Y9{&Djq7;DnEWEr!h?0Z*0@suz;c&_#7^-<$Rh=DRLE2zlHdT27XBMlCx2-Zj zR+kkT+}L&7ipH@hvHCJ<(93`YMcsb=>tAQnu^elH!?I5Wn=`buKj7PM7T*dacT8U82y zIY!->ugv@9k1d5rMcD||JHzMmbvmkXhC>iNOT$hSX;kBEfS$lDrmRgP#|& z1O3sT5|8fnD^VO8h;%~h(w^}_al}&O5(<|^s2ta2kxNj&G6Y?T(ReXE37@L3z)Q`& zc)n&k`b)Q=IkN`k8w%(-s?b%^M~GTCn)5mcb*n;YN;$RL(Nj5ywxS+Xr8l4=wH`Hu z7}jOCp)#G?nayY~=|@l14zw2!ptXqZQA+2R45F2yv2YM2sqHA(*eG>X&H$=%2T_>X zgTnMa6aaldg1@8>ATO;SSzCIsbzM8w5)!vMrV5F1by%Cwf;DlCSQFojl`##7Szd?8 zhzbM;6=Er&a3SHPSQcD_C4{~$rFe#rxIjYY2#q6D?pZ8ann&9Oc)}}%kh^R=O{m=C z3pQW@p>h6CrxPN_Xk0QLe=?EKw>1)vQTvGnNtpL&9Hvf>#+-REm^LF4GiOH;G8ck} z9$tzE9$bRE?)Jkix6GVvMFhBCC@Mg;6^Wb3eTn;&6^*loD-x$DoE4Sh>p84woT3ek zK=9}CGbl<<@&wmg(KzDQJVq}+D;kH=ZHRy%2w_mfuAb@@}#s;@mf^{ZRXl_A3`u ze4Hyf$H%m-XqzH(F7Hq`4Zg;*--ixKq#D`a@6+Z;}mw*?7Ex-fGI64)fodgtU`*`ELEiap2ElKUI2B#F|T%E5&EAuSqFNHS-sGa@G|g zTGtVhb(J7qB5Hf)48;f${D;l2fBhr#```S~{O;H=*>?SfGDFF~)Xgpez*8u5bqWdp z4iBHAtkt8W)_#f!Tb#@wG9xEXQbGZvYc%umaHq^rw{c?Gbv0?lIoxkD$4`$VH0+F# z8TU=ZC%Jo?x$%~J%y}?cWfQcGIdnJQdZ)Si+8fPVZ=WR8j*a{$NrHlqv;n96*tN`G z6DbhMI(3t_WTXn}M$aR@rA|(qO^`J?*GNXFQy7+B%8Vj1n!#D86#O^O&KwI#j*#p> z{^wA^U_s1`%_*MD+v1So$Gwu$LJH$_Q3>KAtQU2T|MT5Cq zq&=qWzAnvC``|Jo!|$9G_mlTq*rWOH@#iMFyNy*e&XtFjNB#8&l;Ik~`f|!|(=1j- z#MNBiy250&x8sa)eHW^miWbdiRc*Q7{N^`yix;vKt22bIY|*wRH)w{cvGQ3tt6lr6 zX5%udPlGr{&uyCEKn@P~&^0+`j2GVpPnv@}`%GbWnz^00qilq)#`u7PGEhfYio}@! z1kqEZ*_MP&tiJ4$h-POw6V8I=qz7I-p;}gDct4-V+&f0$$q7g}ciu}PFY9n2MQYoM z)M-fQnm*S$``}Q7Kx>`tbFF*>Mj9w&wy#LsbaRqVYf`v1;&UXRQ z7WpG1a3LXeo=En35}W)zQ4qQa6;aEC7dM!)3J3DG;I)qJc)n@?-G!alQTsgh5NB_o zZa+FopGRXsKOt*_w7r{R4?4?sqPb`Q<>{?x%Xa}J=HHr z^wzw9ZIwIGRyu@^^5@Z9{2Z#Xdg%HtRAu*}u3!gh@^+v+X9#84Lmv@I;6 z3`>KHD2fS*D<%|9xN(qe+W*uuIfTY#Vc|1bjKUFTE)AYOn=qfyI1c8>dHJSL&_2&~ zm^F75@#JDKWA<`PpAm&=Gb4#Jw*phA2IIc_pTeDY`QVN_J%4}m&2#7S%vt$yRz!}2 z`;03hXF=sOto%2vIb^?b;jElh4!xIhSNXH(xS-`6ijq4yHaGIDp3yi(;uMWb_*@dM z*?AqBf6#&tT4;G%cvLj_r<&tmi*7N>X5r6q`%?Tlj`z)2o+nsF@W-8-C{u zC|mmj^XE0HCwpIy0e99ASw(R+QTDjLUQI*J<^MQ0Tw8kjcXGAn;QdJL6K?aYT`1di%R3PRTi zts}IJ>QH#oG2hS_Lg8YWM@Rd@sm&-JMeuS#>3o9}IeK%Gl&cgRl-8hbm2^L4$89p;f_-ErM(f^&@U1Uw{PV-~V z?qu#By$BholT1?0|8@X^eods$V$LfDXB3W6EN**!qZR!*FvdU`LO*{g`CRSt-1yG3$@ zYd1nFK1GPuOhu#EPc`Lhn~d+RzUIY+FTCeWRn00s&5|;r>!(PT>hp0JMvo~N(P7_Q z`@cl4gya24lYDS7;jvc$L*C41L{sr%g#~^mO&BN7|36kvkxYp_Mas{#YJ zm8+_KPLVmQ90?VyU%%eo-{0?0l#R}X<+x3+pZI6Op6h z>~6M1bjm=9Y>7ylI3-OColEPkmwmV*avX}jF)F9Xoa-9CuKl}asp_mjxp6vk&~<#B z@#{K1L)!R<%9V2TFMq|67xrQe%{pRf%|F!hDfmsBgC`!C0?$WgAi_T!#aru<8nX#Y zpYX#I_dSHDIdc#;YbHXcPes^_nMi)>X=H{*p=M(?s@7$pC8q)X6@BO_8^X4V7tvL9 z5S>+r(N57+x(}`82PB$G_MoBQ1w!O@qP^?|Y;QP#f%^UEEPoN56}zylY8PF*2Lp|V zDUP7O;V_|ZdkKZxi+(z9u;~!`>h__RVmlpgFX#L1KwbV28jA>-E8UIiyysAny91?J zLnz7^Bu-o(vNms{4Ao9-N+#rOWi>V?wqV_wCgR975hB->#U`;pz~#vWc=(Yls_H zNr+qp!otcSh+G&)3Gw905gb;AAc|l*9!$rV1eYRkX(93C@|}@Kkt-RjK9sTQ>z@iQ zpA`7`ZKl{HT)8=d#KmIDbmGEIi@@|*(RgHPDDmQgDNFSk+;g8VZoku$T0-%v8xV^v8O@V6pTme8qj_F@pCCF$sGXrNmt|P8(UcEo4cBE=HzjAf5HY!S zl{64Crd4i42XWSA8~vsG=gN&-DS!L(Ur_aIAs)N;ASEm1a* zoJT*3HdP=!HU$X_gOIr*2`yQ*=q~P}B!v!2OlUzzQMV)?^wm6%u8JYl=MSJVr=MZ~ z^~JkUU$R#Qa!qCX(M-`)M1wpUu=UsO!eGO08p!R%K*K@w)*hsR+lR5E_2byl_7a9# zK2C$W1K3u*U-t8WuCM+Oop*qaf1Cz!AE80qZZwy?h^FEf&{n<|4Rr6S+?_Irt9>B(Npi!~X`I*)jfbWLW7_mkJn(QJ?!M0-x81RT5*%n*^^PY( z{*S$@0B+=3wml=+mc7YBnCXRK;lb7q=X02u9y2pDGc)7<4Ks5#ObdYxXPLn$%d)3` zpHsK1Zq4)RX<2sMsarD|jYi5^SNF{6?sFizKGwoPoTpZ8#6{Lj<#;;B!C1VAcnWo} z<_8@2^eeVLH+?~}=i9u&A)cGw<3@(u@Z>pnVqdN&rJ z8&s|YV;$427!42TkOHj*GkrwFhmU`H z9HmwBH)5qQTBDR|T&m=2>bQ_r<-C3Q<(EI8!z_OP*Qt8Og>N$;c2WRkNSU6llq@k| zcBpL$=8#G?z=m^}Vm&c5K|rF!UJGD{6fB-kA!0Yw#{D-?as;7?#h1VQ<-A=;+}IF{ z8Y&*UQLqgc8I@RWB(^qjVbi?$FN!fStVsKlvcX~`wl|aP&wlG`^26W%Mh-pf2-$Dn zgJqB14v;tH0?q1(8cF2nId+~SO;0+OQ?Lbom_6KWpsG~`uZjabT ziBYZ1XjZ68YGipwnN1Oy?GN)9c>M9lXXFneof$PACEk1x$`|6aDCI+fdjkgD9I$R; zKMH^B#`}tEMX6Nm#?2K-sUn>kHzc|#KG#!hky6DL!{+(NWSGTUE<9U)`n|8qasT_D zB0+#%Gn(gzY8j;;vAZ6HA_?xJ*#Yt+X-g}&oa<`Gjj9`Zb#b@Q7(X9zU7W^E59m;J zFo(yHiLYx`rEc@%IeeUljvD0fZQlpFR8weX*%oy=pMu)9Y_u4O*-y-tNA7;iEWTFK z1RjR%bTJs!YT&5@gsZtZjJ0mnQ2<5;D3;mrb~-wYGb3WFKR000MAriVD$x{91gI6m zaoY;(#S%fSfgNLQ98r`#LbqTMz=#Vk>fmD4ea#5SY*d5)H@jT{NNiN`9&S9(+Bg6- zK!N@M;OwLE+6LvqXY+d%cBI<1`k>k7fD5)|coTQ2;6AQFLwr@%3}!Y&CFs>DyixHP z`J8LSsZwztHE=cnDgbN?_L+Okr?#7)S8OEkqP6-iT8F6$T_pOtCoWz3#9U*(GB`Qp zKpbo1Y|g;E8y$05m`{A(!B`0OAA4-Q1`gI;@xEJdVKHzJh<$h-+m-;%ft-C7fXD*& zy*BQrKmFD(OM+5!-=G3~zM z+PJkbPD@x0f@;Rftnd)<#^7>6}P z$fwNi>qT=XQUEh}5vv5(hBR1wRoV4Q2MMkL1sgEpci(K4#HhLc^dl z!$3rWzu0F>wu==4#Km7Y_f(DUAh6IC+^WPD39rEe%adGj#TC1scG_tp4Gx#EP{RD)uBEifQpKDuI@q*k5L$T=tQ9EZ zG7uK>3VsCmSh>I{J~sq_ZP>X@_F96uGQnPVcL!c?BX!`1Em%D4Ljd^O-JQ>T+hhS0 zUXL~p0G?pWrB-?%!C#fb3#%Q(1v?%Ga~j{Z$6F5vbH0z8EN2q{;)4B_i-=0x;9#E* zclBvt=6(ued1(&wZ5ulnP7PG;V0 z6gL*(abU~Ui4O?;dREJUT-YYLwN#v8$GnZ2l46w!UsD~#fsw=KFW~X7fBoy-&N=6t zE6Jn}|1crpJLC_4ohpkKFXl~j+T6^WcX+OfYG``kdO&gjkwRL^GA3LFAmK4oVw$-) zSmY^w!7&GM(a5uL8VLhS+^rgp#irZ1Ye*I@T$tM8E7$-@c+QzxArVsWj@)iX+BS<5-u^l)f@Vfn>i>Q#09kc6WYhWb!tm1mO zt`a1Y{gWhUzcFxsOEzb2+?A)w><@-t)BitB(8xK{3BB=1Pj6e3+V{ePuIQXgFzVLSW;h{f}x9t07SyPy-g)ux8+1P=O)-i3RjcU%W zs#sLMEv&fSpOO>D~>FnN{5AO12$e)qSj_-(gQWH+m-1cE_nq;IJT+?ey2x}ULiOUO`) zY1d6na@HVuHqMX7vLi{pRT^7gC_Js|wQ;^sI2)JuaDC{ZhYp!MdGb9n5}PGvPk&af z{M#k6Y{_zy0Ut-0=%;B zvwX%9TI!hT+!O$g*Cxm#qvk*|4c89F%1Us`+CQXAxesthX%f=!1ZBOwJ$M`#AXtXA zbMb=UFHH53#^pjxOR~hk9j;fU1B@2>-&gK<{vQBwcyVM0lp#&xwQ)${jtBxVGMU>%_!Q(?}A?_bL8s10e4)+|dsvH*(wYx71)YRF<2dw5V*7 zXf*)6WoyeOwfm|qO;Y<QY6+XF?4FG`u1ZXlU z8jKe~6#*64r>cRs(P&Vie<>I`MSWR+22WIgo4}AU)k(_BftQfWR&Lz^QJh^P zK=HC?}%&eb2sMg2&rE-f#WOa60eO+VEY9c)n9q|OcFwrHi++{O;- z1(Kbv*3gx!E8RLQ>*tVe1+Yd9-B62buDNEyDW{wQ&sB{*SHt5hfU6Ai$bFA7=OVAw z#6g{>R1x`fYS`DDUL4Qyd7Z!c!v0`>sz|ANgG0Dp!8}#}WG*bn%BwtHc+pHhq$v&t=!FNW*tlg@1~3B zEL^5!^nA)=~Dtj5gO(bbOC&UHN)_fu?9nX)qbQ=*>s^= zCD^Od8~^|`Pozw0#Q4z8B@b#>FnP|6b9QZmZn`ialwM8V8zASI5)-*jJ1T| z<4_;RyM1p=u&pl`4&GuQr_R7dsZ|dLdESTw0q0`q8c$uATUA+KWAili1_!UNaS(?t zRg81@JV*X~%%5aUQL*n&yLG5;>L^(e^XO5vS-DMBKUZ%<#86`AR28*zOt~V4S^XUB z{r<7jPCLB^a}#M*ySY;A=gsp0;PQ5s&Wh)lakXvY%$%>gUN7h8JNS!%92y+*AkID; z&P^ln-^A@LF<`}Isnm4VtXa7RhmpA9mOJE+f1fG~EIkc{gTyjW>Z~zT2+&w(Ru7He z+;H<1iA#;-(yAD7V}r(z<4#q8xO@)Z7l%Oq`t7iHz@?ZFF)jBHYEmykO6$*m@_Q6418)u)V94==hY4N&W>xSk0N_#z^og7t9VZ|L?Go% z00~zM)yxL@$?Mr@lpqZT(fM0IgV*pJh#oR=|6 zx6eNNi2b;yar2RPs>UoF76DrfC^z!ri!XlMKI6xI0iV+~M-IQ?NGTOc^6;q-t+~O$ zMrTiNTwAqCS-Gu8x8)ljHhH>r-2ol9aoTo>)Xxq5bgQbi+uC&0o8I)MIUpVUurqRK zbg=pAl0ZH`xsA&mEYxeqqh<#l&l4ebKF^H-UF54AJ0tOUoKp4d7QPZDEDjKdeE>Q9 zzC0Q=IE+Np-FnFtSIebWUC;F=Z7%UfodIUuocV`Fr|R{dpO^fP0U5YF8y7V>;4z2a zc{no=vvIN9NT@5omoaXQ#`xrj+(=``^oO64$EH0g-5q6T<_MN5lwwH0P=z`$A&66f ztOfy@caow*$Tkk#ie%XEv^@cEXak+FLWiRWD4IC`(Wbm2do6QtQ^+{i2I5Vtq|4H*(3#m&hk4e4?h@2>w>9 zx_UhYSHE2sJA>6~Gn?^Rd_LYhtZl%wz0@4Pu5kce?fSXeY+NIzTOkM3QD(Ze?mEU% zEyaceboSltFx6`_S=I9f=3; zoGy>tGn1)Fc9aG!IHX=7oC=WDTdBIwsIzaL{tR1axlyQ53IuRX99hEG*z-)Y;yno5 z7zKhiGI7v&Qyj8=V_E_u$AzAgkTq!D)#_VlzV#F2Vc)Jztv4`hVBo-%!Q<6ax(?!O zYfKV4QK=aR0LOGG*h##e#|lglr<@^GT)VH2pA*-q+J2G>SvXb2zYkvj?YVQOecPEf zn-ADZu8^9GgQsmGhFc{>+@%^F<2D9$I4|mU^Db8`LI`Dw=z~!@J4&vgqI1nUhXmFsHYRsm)pQls{Oyb)nVI z&71t3DJOsaKxyQd_f@Z%sm;d404~SIVbMsV8UQXBe&>KYeoITCE!wYzK)C$OrKz3v;!hq~@d3^ell5cU{Vf*c5 z{P=@pZJ^aRkE9<%@0JabNjs}H}VgZ zIXD~V&xHmgpPNa(W7X5Dt|8}54}MP2jY}d>hrm`Nb}ldB<(hG7+a#_x&#kF0{L7T8 zo&S?{mK$;Q-P_Z|zq7+Xet+%Xu+O)HAUPO&llBy=w0e8agyYK!t8Hpho%NDJaYyR(US-ql@nsG|y>@>7? z7r2kirX3Cdu0UW1DHDbK2LVqaY@@K}un!<)8`R*r_FB-1%YufSqG13G9sw9aL&{Vn zBT&nfU7|t&SM3WxE;K8!uT^**u`v*u6mSqg4*@2wx6%VP4HqZ-=75nbUPfk)KoStI z+*_t_u(FFbw7?2${G2J|HADre-1l{KJWaU~Z*cI%A#QMR%{T{fj%f1rZw}a;iOT~z zUm(JHuIb2|EN?)g|f0L~NR+6N;{c-;-!yqsgM&3Z#__n!0pQKIaRUs~uv_S}6}8Gpz@veS+`@ZbBvhaa=wlNC~DgidB@kRWIWNC$fpJD99-o8R~0kw4yG z{;gozAPj5+r59-(Y1w}Gw-Wqqj=1i+>)wYs8Vhoxb~SPiL8ofWl9P$^IT@!(ZGeGu zhR!Xzd`JxPVph)A)xe;G904Q8dUJp{BSw(j!gDc*!@Ly?96SH~^RHM}5QpE<7dl^* z3+}p5&b;j`dCNU-l{0QXOAfvEaCyGN)_U#ddBZg>dFc}G&}__T{zFMI;vetW3|}pB zQX`4i#Np}CVZ&kj&IEW6%z6Iam8S89v%%JA4CL}>&z^nW@aR$7wSebm} z!9ssiP3^}xqvQkuTyv`dqE-WM!sdu>TdaGb1qT3!<^Y8(2h)`SyjATgsBf#t>W)>i zeC1NBSy(9To$bc#RAIA4P}knR+(5^&&@CIvPBe5ICAL8goei>iQ7S7FwW4`iZUOMw z;57-@MA?GDlxPZI3iiZ?;whynIG94d2F#rb&Gha6v6%pljUE6byMGWPpN92p^J_)uy4cneQuI15AR1^N0%Fs5MF14JNuvg z>}R{}yz|ZlsYwjt@LcXQ_)Qu?VjN+vLWdRW zDViJN-;*S2a5!gOyHp|hRLLsx%cp-SH_yK%25d5G3d5rwuxE{LcJ%k6iMDjBr@*>W$gKXXX293hVA)#G&uO(j9-%) zH)wD$9i3s+r8*L0$8911bK>jegP%H04w|^9v2U%?(l$oKq$$v|(9vZ~SH%DmQmh8< zG)RwNQ6`wG^uQs(fZIx0zG8{YSujUlnfsC~F|XGZt5%>MjVVk-6In8aAw7@xlsm1K zt%o{r5`=`&1&PUCr4Sgj+~-iuBSLU0zYqZ9&W^8`hJ zaWDxBa*AyM=N9?7@EKc5Ej%Z+VXvLi)%EfmXX1jFs!uwVD6l~I;^5-HVAN~~Mm!G# z8z(_p#C04w?6LUPhT>XolLuD8BJt0FeU~rr&vf$1Cx6^tC-JMXlk0nu&N3dpHSBL@DR`CS1+hkZmX z&=xU+rJ(CZDND_n89X~gU?Oe zXob2|GHG$ikrN)yw0U6Px1M74l&Y6ZU`>r#bliAF%stYoTu;HE53sxUjz}6T!%(|v9nlbFlhLsAVWM8_7W2n6r^{gC<4+1q}aP+FW6&`-4xT$8;yBW)z}hajlK8Y z3$aE;qFAs4ioWl;zvr2Y$8R!ciLPQ?h;vKRhy}ts32K@?U4)(k=A&z`S!mn&TeM2~9P!DcQ9HaJ zg6qDC;K+dpsW%LDV&6hw#2|#m4M$k~NQB0ZLU_U$L?pkB*v20qrs2DYNE(MIdK}a6 zJ=Aad5fYkzjHG5Cp?;GON$(@B;dsQ-*P|21AUa_b>eBZOjU0qJk#C|--TtJ02(8-} zbx6Urd%!=iGyDQO!NOS*t`JxRhoIsJv|rx=uS_X{ zF?+|tnsF`rHZESfWtBGV+>dELEyB!sOR;3lCj9jCN_;>2XDnO01sNBwTJ^my-^f8x z8FcdiYC;Qw0VTd>@!!9Q|2;(VZ$y8N#h?yT1Sl|ND}#!haOEbyKXM*QH*)eog-du6 zgIunmvPbcLMS6wT2tnLSEZ)<24apjnb;|3E08FjB{P{m*rZufg_Rjy1*XUp4$1GXv zvZr$TUA|t-|2Wa1DVj^?s~o}Jhj_$6?+y^eAtNUP9`n37diOw8pY4cm zj(&?f|I7o0WKq-y0WAJ|@(b$!&87g3h9oj;@Mam}0s zlMslLH{QH?^E~lv{AI?5jVCa6{7MWMwg`O*;(863rvR=)x9`xP(c6fuH-G>x6)s*a z;90W+{Oj~2kQ;!Yhyes^?;s*^6e5$x5UhqmsR#34Z_0-wRo zAC!VOs)nIVMSr|bvwe*?xDhP**6NO05&aMnHIP7U1Y#S#gJ^;{f;9p-a^D&#F~pI` zVI!~$j~{`s*x{tNP?w&IB4~?k@GfGK-d5L<@uNs15f(EPVbMcKgAp1vSh;c`VSQ0M zv^Q!ipzDEvpe_V)9mtVOQL}H&_VD&^%g!7<*M@+u6?}YK!rQwAfn8$-bRIOjyAjAa zC&1Muk>+^i$W^Ucmzw(qrsv-=moV@2d5!RT;f;bf30^?T&p0NVfjyrenSq)!j&R@pz_1my<$3C1mn~4KQ zf5pP(>u}^$1}9bn$5MVJLuZyf`T}bTC=7b$Lp3sj#3eR zz+;ZP|GbMUc~`Oj>H*YR6v9AbmD+7+U!;LTaCcC@99?1JA}28GILYft(UbM#a9Y{kWcY9kwz{6HG#V?ffGShV0a(Ik#iT{bUZ;F!5P6^L;^c- zqY=R%7dMG)$(eKGFlz$r>>^Qx z0QHSGYNwjv8U`rYAo6c~UJy4QUVeT)LjkQ1w_kpLLyQt96?|vM3Mw`xB6}1al&*fX>##trS9iXrQ~5 zd-t($fm40NjT6V*T%!V1vOY!PjGNMd&ICC#l*-qd(=O{)Ku*>zJLo#dmE<)m4mzjt z?bxxS0SaMI9x$@+W#a<5a+LIs_YRCl)gSDvf;kDd=25tnzF(07y7_13+b+nFBuCB! zIuq)Y8%Mcuk{5SBoT^*DdX9i`*Ki-?#G;msg6(TO(s(v*-@A>2R}X@!h_La(CY-)? z8h7cAXUl~x=(oK;YW(Dkm!`aem#4mpiZd(0Z$V9T*w_gNuN+i&Shh6g%v%kgn#m|x z#tkpMYLAy*sfL$IRL2W1S5wbbsTK}bFLJpEmI6Y$AvAgrqAA2$uYrO%L{X?UI+;SM zWt0&cm@*6X&U^Bhf z9(CNvkvzFSR}@w)w45r29cpQV+?;G=-@1Y8*RJ5^jcZEOvWEY@o=X1QV}x668tUlu zmxm3v60ARZZWgEeNZJGG70of%+&Gf9=dp~uI0a;8SXE{{oGP!CS^pk7BpUmwq$;T! zF9tc1N`+vEV>gcejnATx2Isov+#}cXP8QO$&*CUKY`wPjX1K8$=zcmiN9{rMu0v56 zdoJ(6i&I{<9gs7jjh~P_H~{x$x^UXH33Bqrl{cKYagu+dL!1IQ2`N!!&3ITno{fvQ zFQVVJ{&1P&rrubbg!%mB7h(Tnbu?Pt7$v?hC5f2@s>zzBICb+hY;C;#_9rM`!4=QH zSOulZIHPnqH&lGxk5m({RjCa-#~4(pUJp(LNnQad6ecBbiyy84E-GP^a^D!x_*xt{ z7K0r>&oIYx1ie0z#INDUbz=zlV%U)zOd3e8TwemZ{#^7xP}dtFp}j~1cEO#MY6f;> zu{%dV*OuHk3bFbqn4_YHMsRjXCa7xyH}?i`qVQ^Uhgejr&M@cgnP1@Wsu@z1+&Eb~ zvX=A$2LtLX6*A~IR+gMN*$kAVz(GLH-rin;T;AxPw>61rs>clVjmBjN&zCL+GDgDezT)KE3 zbT01`3%45ia|X;6PX3&XqLM$CO|IOd3<^blp}TRUg50?Kxp6FWT{4h8OjuQ3BLFAj z=X58IXDJ$#eO25z8WK`vsgNqQ8|jTg9t?9F>A80II_1n|;?%8ESbc5{8q&UFEzqSD zp>XQ~GC#^pD{EVh97CGsy0Lhe5ce+vZ+fMw4sqtDAsdetR((k}DWk}t#G*xuJn6&1 z%2?mCvE$MXL@bRGP#jj+BGu8{7pUTx}XXgxxn5f!SO6A=BYJ=W7I%=(*_n3i3!J5Y2Nui(X3w z50U)mqXv-%A}msY9O{JiCiP+|S1ur^GpQ2+T_*~+QY9;aoQD?!Tw_v00=TB|P~p{v z1aXN3aIp&H?5jn}1|fMjDr6%dC6%MHNfZ=P)kCTJIy7_SqGu$^a64xubouy9lIawRoMP<2c5V2r$QW6t3DQ#P-_}wUCczrnO_Omj)(}@2;68^ z0H;7M4JVGX4nxhy4ioGh!NtsT{5_s%{+tjZS?Z=c7>nt*jBdM-tE-XGpYJpyRZpnhOJM2jmQRD=0V4 zq8le~J{{zA>(|JSdrSgNYBA$__8n55*y+V`WMpTs>n01JP!#lY zE!_EsZ6AJF*{#c5lRiookV{ ze;ZDu?Ze5Vhj8*3e~onXFs@y>3~F-y)WfaCDu3>Jt^zoosmI(S7dV)1oL1bxdQsM< zfSguMZZWKCF$GeZ2KWD4$N`~(qE+A)dPr5TR5dpV9pYq@5I3%{7Vza8 zxfUyz?$Jr@#cecQ)3i__j`d%YpU2PXi)`B3p83N9_yyD_M=lWMUh{*ULntb|9zfRt zaCE5;2iJyh^J#-14u2ASg+&h}4N@Ueb*<*XYG#E-DpAOkd&bf0BL<)jiyo^&hp;}V z722EB2f-n!oFB)<4g_$Wwd&Ora^$Fjm8(`6D@;Zf-O?$E8Y0 zRfjm<9P}zU385Gp#P2o={aPNIRjXQ+Yk?JS;>6KwWPPe3$?XWc@qoAWJ} zPW}kf-+vPm2DQfMPD%K1SZ6Gn{WXpr+KJ=893UMcuuH>*a~YshLjJV;In$vlZa_z; z#vuF7J>-z+*Lvi3BSvnVtWl#KkmX8p9n=KsSn`}Xi}cqB1j=WCRL2U)8GGxiM&CH) z#^FyK^v>yR@SKn|TR0bLNBJ(J0uYf5SkKMJ)nh=q{2u`h#~YV;dH%6}Xp z3h$?$3!|@x6X5aJLL*c&VBBvATqhN^NR%H(px29Ft`q!J>V!iYPA@1s}+()bqr98e188~zDsDidr$MVJ3?7pS##@=-c zu<)z*FmKX(nE&}W%oyJXAEhRvPjVnyg?k|>*bU7ie9^601g8D{UF_Yy4#y4?&>cCX zLbU%BnEUg>trkPBM(&)hhw48kKd-2cBS((ZmvtZ!Bw44D_P}e?Y|vd$UY!0|Qj$!7 zlh>N5N|G8O(%N|GO}nM#h+4A}R<*9(Na2TDuW`8bG4kj5Glu)Nab>G5joTEt3RoC~ z=jcCAO=d;v1H!6$%MpgS0^K;xF|gEbgr!&2l;CzFg%wi0bp7E<(K+;5)W`5$BOZP+ zOtuc>N=+++?H9MBD2(*WvR9zwZd4v5ggi!K&_XmPF3RYsd~PrdY%C;n5$K5cUP*-P)FZ8fI_Pr zR`sT^s;5^A2041HppNEN%AIp3fO937b9QY2yXtil%*LWpZILh_`yR!L|)caV%}W3bkI${7nGpi2@zN8l|*YU)^fGJ6GgJc6Rnmam=;cGnU0Q zD(lKvmlkv0q&igtI(e*QUJK00_t%_s1(UL;%9_>t#+d~UPYdXB{*i+#cdvquw!-ln zCom!HbF0Fwu0MI=x0{z>YvZFsALBXt&r_2DZvRL5;Zyw>E|z|RgObrX-h4yrCpgGr zkmkRI+HQoMwo5m1t#1@rL`S{laSycsI&AESar@rkP1h=z8@q2TiqhD!Z7+p46H&6P z7ddl2C|j{6Dpn3bm1;3?bS8(6;L5vZ2L?2THg?|_;uNUWVW^Ybw=kOdc~(B$)lz`h zlR=Jq$kE(`A&$h?40T<&*n!lU9J&th6Sow1$zAue~=YM6h#-{e|tlL?5j{fshqyd}&x>0+MJQ`biF6pVw~XK3=c5n>k!a@yJkdFYgY{a!~`ja7XqLyzN&2ckJk1 z9NfDRQ$HSrp{--_X45zfYu^;__3c6s*BhS=>V~%|FD^CKAMt+GQOCm${seJ8ByY#6 zaIf|T+^bhcWS|EojvtAw>sP4UxwP%8a5wMvpL*Pv33G*=KUZ{4nYsGDp1&#u4(55P zrW2>HOVe31!Ht1Vf6jcpnNw$>$l(R^EM%!vm9Xmh^XG@d#s-H+Ie+fPy&K$2SoJzx z^AO?I(%+ZE{_`hs{^~88+qa*4nlc;y>bY^I81BrTab_%E-eg9R!;3~)^s54MD^{%V zL?Ms6_o$c9b?afSsO8VGUEOt4w}%3<$Ys$gPoeetHU)-U-R64WrK!Kqw;Q-)Ad2cZ zd-gm=jr|*5dm|8~*r6-$hu5owqncwpTs@n@t7Zy=nF_fEg{IO>z*dJrjsT9pO|=vu zcnc2cs*dC0q6U9*+>{93Q{9=Bz>ac1LR-I3Eza4^@Wq(11manf#ttH}!hIUVMnIM7L- zx$D`tp~9^Xu56{(k@J2tmy+J^Jr+p(FKs?oF8qd5NA}{^!#i5lb->y$H#4;$+q(5U0IG zQ)mon#X-w9Jf@zQ`cNQOnwl1--%7{G-J`hIoGOqASQv=To4R8D=><4+^)RmHT|>>E zgY-X#&wrVOqCU=~|Ay3F!|7NrKLvH=DBN1vt}bf0Cc=Y4pI+R!H=rYY8P0+_(cFO^ zQ{e*1n_!QfHeZ?<+F0IHo$AG>HYl~B>(=DHwNWicyw!CpxG8{ZOfH-%aFCWGG$*9L zTE2!If6&TWkPSkwR27Ib!Zl`rgT-EPX0@uNln2SJ(F+{R2HoPuZQQsqR5o~BW(yMi zyj7a{>rWgwIJ`n(Qg-SH)^e1tkhqB92Ekr#-ral$t`Gn+HwR~qll!)NC3epL4AV!o z#?VGJ(IeUuNuhoi+$IVAn?+-A%la7Gtu=*K8)JA%V~k8mz{uux(KW^gtwP)o=Sz-U zKFE1FybdqN%J3vt&a-+IxRd;xt7819LHOk$xqQ2}V*A>~$hmprshr9u2PvKUlIW8zWtsE-PvPYlIgK+%fZ#aA9DlXXIzWtmnNbezM0G!22 zRXv_Bn~PE4Aa6AN$dLOW#~azsojdE`36I=6_e`KGR{3*R?p#6n85JK2=B6BLFPiym|=5Wz3kl0G__FC{e~8B}#js z%xi(DQau{goa&>7TO;MtIlHSWSGcjGMnI-ohY+B7c(;NlUo*V1n7*A)zUaKAXp zg>$FbHQ$AEB{^|EoKqqkYSbqsP>44oRazPF5O6X>s(;k{SFUw8j;}2}uZL63c0hW5 zoIs@Rnu{B!<*!nHZ}E}uJvqg&@;<-|Ui&@Bdi;{1_R(-DCL zWUZoWqpIC9|Z zUV~HBN^l}4&Y?;rRDGio>|U=3A7?u(nLA6tT-t#>$owq>mPhf)pCj3f8z*TGJfr~0 z$X_jRjT()9^`3D5Zsx<8jvUVxd&n7SOR{z)tZLqXvE%RI;ZctMJ@%n!3?qLoiwYvn zsgP^hwKV*abpppP{l;z_hgEHI-+r3mRQ+0HhEfaa8)v>re|Ki1zCmbJswFf@frHH* ztZeF9wrz)7-=-plSEmYq6|BZ&~yIYN3hhI4>T4zjX=x6IhmZg25{!n7(ALND05@5qnRF)ni8xvC$;3q^g0qb zZ*JW5S3PbFC%1<5wMKN^kc%4N;FO@kx%Sm!q}>S12-jF_{%cmMiY%Voptm70q0eZ_ zEo<`yX7iATej~=SUTH2yiN1C#RH#sv{w;n*5gXhqj$3*# z(6Q0L;_IBd6oMs}{ems-+qRG!SCAVgj|JrPN>%fY!K{MQ+l@#_Rd?geb|Zfl&|SNA zhyRg_UH;sF9RnW-a%IS(t~B!vyfFDCs|p_8+4rt;?~2n%KYI?n`iw@Y^4`=yI8ar# zR<@6VJvnF9$w6~;5ujrjYoMUb$+aOtS|g&yK!15sU$b(=KLBHWyJdLeVnZ3(!#7WW^C)Pd9(g8kn=SkSnM9NJv#=R;ubwoLS(&G7rMn z-8dcC1n^j917H&d_4EkIn>8IdJ+vx0ayM?=n2aJg=pDcg9YY<9izE0st>OP|+uFBn z0pb9#EEYLPC{-Lez1@hJgQHieng{sm6*YXv!)~1I9IRaQ!>xSB^5xO5;5^6mi8Ke^ zkhuZHad7@zaGgd3bUrBmdI;XIkAxkcf6Adyr$kZ`sw*WEq%}YdrG}_MP$$qzvk~S$3r-Cqyn8e5x=G=jcXalFtJwxIz;isnL-7*q11+?IFA{#ex^#*=BVNjO<`6Bxi}RTRn8j0m_Qr5a?YIp zMxj$asexw~cY4lExp#cc4T$prFCLCg33Q!!-OjGIrXW|gW5b9`+U z9hnV8&Ad1Z$NJoFH-bMH1y`^>9L({?PmhaCxb+k@`Tbk3MwpPAj1kR4(6FWxqC6eY zD8vU{6T&dOMO_R@3_xmKPrTD07{5%LfDN<0z@F(J;NXv+V)n?+__kkLZ1{34_D>s+ z{ojtj_DTJ*@uO~7Ij$WRywwbI2RFi;fsHYp!m&e|h9a&`Al9#3MsAz}Io!B*6*e}E z{5k8xt+o_$m3AX?o~po+c`!c9EJV`bi)OPr)eNC3xRb~7HS?G*v#pSx@2Z2Gp4)0~ zZ-3vBlM@}j_~Hw1I@Mtois9h*1?}TDux~%*P^#HG&OB39?;U3;q$+P@OXoGRByMk< zr)ql#D;KkH>y`^!C?~E-p#fd|iu(8~jE_Ed`6=LDMh4A@B6le<@=M*Mh&BfYUGOFzLu?)K$wTMwxk?L>a30(0d^ zCd3)}ab|9uezZ@ihp8qPhRg3-Xw5wR2+ zZ5-l-Udf?&r)?ZQY7>c1+ePDxwh`F!#oJi+`A8g^@d1v_pMbR4ALGcJ&v0tR6r5Nz z5otfZiv!c&#`?eY!@|++FlTTJ%@ZRb*@7R*n$y8a4Vl@*344?*36+JnQbau`chQ++Y?m=#u?Z?*bvO)e8xEmbI-H z6Y4i){Cmn?Yq)Y{xgjvk<7Ek_vS%mN3N-kVCC zIP)&S><}*-gbfYrnI~t#e__C5gBTwz8JT!<(1(=Q7Q2aDt5oG~-%>$? z+5MeoO~32us3%CX%r$BhI9TP%nLuZuHHk%-quHjzt-GlO$frZP;pfTU;M0Ds&^0zl z9kJD@mKP=t?10GwTHyx@k4`7hn>VC6Hh=dKR(&=MCl`N-)64#j)62g?#+vC!Up*Bk z=6!(mA9cavF>NumS3~rP@k6h;Kz!3J9y59;VaAXYESvTvmi#aUY5Vs;LaSFUUxJJx z0CajN-R2MDmv$pkDF zG7NJszW8E!QU$uMaN@*?zQq;j?%w++@8j0*+eIw2$`EHMq)Ov~AZM{}oY9}^dF_p5 z9N=4c=czu+pR+#PIw5VsW983rxc09$G6?7bYBfits^NIOYJ@uGt7^4+1b1;HhP8Nt zI4X`{w@##o`ce5#5c`K~4{;>W6L{kfvXYJ7*~;M_#ML-2EzYk@3N=AWjdf zT9d!}pyCG;=*;2=v#muAJ9Kw#Zw=kfrOMko|3qeHI)=ATM7z3vXb|L%Py43e@Um}l zfLymN-wY*(tuI!;+YwtnAB;Uy#^CIRS;*Kl6X!PmfZsO$g!DC2aAf8<%p2AeqZmgMZ zJ6w7Zl72A09#XZ`21wvcH$coBIbHg>tLF1&F1qfnn`siH|5LdtAV(@EF!#a>FI1d3 zabf_Ss5BdeGoIzoJ;fpiLj|`SkvAF3%*_!8K;GnfgFZ^#@($4I$I349=(1H zE!VZOI^6o=l$SC0^j!Q^$J}|V5E_v}`EiK~)*PMd({&Py^WT*7R)eHYZJ@7JV>gbW z&M{^&hbbB4By_2VRV}p}VVMADhEq+5Gn)kKjYG|rBNB#@u&VrC;>KlVWev42es-@E%I8Tmd zR(Vo|d{rc%du`IBNrBnf*~^P-xb;?Uo>luct#jKCt&%L|$f>Uhz{zYLl&_x^XNGn3 zJRCFkM$W0DMA9KeGw%K@e=c=PPyE%#jhoq+@cB&T!r42;pQchC+ytE4Gy~_h{7CamoL%=l&aC_zC+2*J1Cs_|<9nU)Wye?y zsOOK734!=~`)CYr8Hdlt4#%p6v#@>LG778i#xVvt(upH!$Rhx3hO|A ztKTaGF*8laoTZ0U#f>vt0vSaPy8d04StzLI#hKw$Jq&9WH|guzY`QN+OR}EDUDwZC zjm^5_yH>0N1&=hGy@xf zTQsUxkAfY^-Z2{0NcIkq_csXhELFYTh~(WAbb^B!J~dr96XIC<_tV0u+K0WC_MnAS zA2WZ|BFI_OYwr5ZY|<@(IFU`XE8!3J915>q$vlbay<)I$@^GBrxd2&**W&V_Rmj-# z15Pad6uZA2fbF06!I2+7AP4R{(qx=n^9{}{{{p`*`~<&DAB{Z|dt)`_$Nku+AtrZ@ z$E@zj_@RF*d^hnE0=T8vM)`Pqwr<4HL;D%xlrqkoG9jhN0UiAt3(%P`_f(Gi;yo$f zjVr-JAkJ*iZJyv@=Ems|CqQONdbO$^PBq;)vx?Pp;B}{+ug&$%>)JdknZC{-Cxs99 zL##T?kzS|tr;i!v{^H?Q*|%*FNwyN1XPVNl!JAD={+8MCf@hpGt z^R!9up6^S?bCtq>O@5vsPBjjGZ~u68J}dBSm}AAt%?Ju3}BJX1ftfg%A4aDguiVCNfT1kpc(R{I{?+?1u@rnn0JG zdmGnpWz(E%wkgr|RAJ^H^!s1Gbe2Fa8rweWh4i)G;oQ!7NZ&XO#}|Hty;BBb^JhJ< z>2E!->#G4cvEXBzT=XdwH@r`Iabs{`%24c_*avIJwZWpn4e0cTdicIWJl2j)#me{I z#I6l1uyyq!>{z#4<;ES+KrZWY@wl0i{5k6jBCKy!V$KB=IQ*Y#a`Vh%vjMQ4qbeX* z(0QtQm{n#o#46W1@QKX!BRuQ9xJWVE%wqX#=3=#mR@P4sqsz z+h$nR45>b-$ib{4mr7NZk~>>!Zamk)BR z1Gt-)hesKC)H5sZ9zhTN^0t;gXS%M1-B9>JZX83LUQI5=KW0ePywQ>yC)177T{hl3 zO_=nWLHYIs+a3I~;x%ZZ-F9 z8wjlm#1&M*sylL0I;}&TSiO3@-mHex^W$hCZh{r#S^nI!Q54&i^zQdI%2f16=?cF0 z+l`o;gMgge^hlMeo*QQ#zHKQlPJiBX^5pwj>g%W{L~Ex@JkjIw9t3l&9NNfl5un|< zlUGpwoJF8}8pnNI&OD8&0~=v_pZZw!VJB?;vLAMQI}jVlgAHm0V;wzhMAcuf0_f$%*>og{$^&#?{J(nLpp8_ z+cAonr6&ga&ONoXwT?dDtA0;UdM-V`T5G3DvTVst)vbN^IcM)0iI@?$$=O9SJdc?+ZcELC+uPgEc9W`xl--EoUd&Xb-H4q<;@A`CKSvW_D0I5^@7g4pV|c!v zb#2y=^l*mjnNz=<1|VchqP{tmS_^eR#=e^`?8H=i1qm7OCjMD<_{irytn(mFm zkOOiUMGk3A;1_t6R5jVQZT+h#Z>0#GS&hujFBtOub9sfX;r(-yBfa5MFZ#Fe(Wn1a zxa`&c9lrjq^CF3}(&&@Jo;REm_Pp`Q;o3JmDO~Z&e~&2*{}8T@i4A+B5_kPupBDDK z^xwknnA&j3dH)>V^GAOW-t)JA7QXu7{|Vp!(xu^RmwY_j{^Refq$-3X2lp3$$6Al+ zxurTL^BPa+^63zpA#{0CrvV3hMn&X|==hQC-OJlQ*E;GC+;#~L20!HB&3}_6Rfgm1Sz{cYt_hfx%KSH3QkDCA z?1g!2Xv~o$a`OvIk;EF57jxay7P#xm=Z!wr$}ee;b^3152k+2QhN z8vL0j{%yGW4Q~pEetdnnJ=uvjY%0m(N`YIZ`6TPv>$B5@>UByYNABC`Rc>t^mtA(*!#Lnza4!f$I&|A5GNh~rINZQ~IzP##=4aotDriAhT%HAm z2ObSl=N6Y&%+kYDxvDKo%FsWzG(QtAd-F5H$DZ*w(ZKf~BK|JsqyBv)ZvPlQ8m~Y8 z!n4EouZRY~2X74{J?-JP>pmU6b>TC^-giAK_Q*XceC8Q{7p{2wD?;18ABVQvZw&oi zZK1!XBXqYPjy59&p)1hS)gCr^U>z#|L_PcG^5xbV`{zLBqEF)6jKp~&7oVSEQq`a- zRe@@pp3hVXls$0<_P%-5jsp)m)9%X$@cSVsJ@ekjRX?}ymoq?#zn_#jm04FoGUrRK zM&`~kGH2)AyLbQj`f_W_uH;VfKidsY;B=ie12*{POy0P9sdz=sPpw{e-F3U-Lo*ht zI$CviqB6I%!w6mLFlEcvLj>^=~4f`|Ic}_c!5#@%ke#dvf^vg|7}hhi(g_ zeVt*Xw<8R+9|$*J_u25}H=iG_eDQyV%U=7O(7ykc&~@~VFwor|M*6$MKqP#9okv4& z$I;N!ek2U__u9Wh9qN|Wpz>A(>gb;nswHzm*XKU>xkseRs_G#Xk;_Hqu{X{@A_imM zyKs_KWQ}PL{#~0QiyV4TPb^EU4Al2Tj%iC;3*1zzO0DXh^JLEO5Gi!c-aogzQk(7A zo#KDC9W1MIz+r=QhZBgLpPc#4-~7#c(S9V3b^k|b%A;jh(mL{fRG!577%rdH$g(O4 znJ053ao&a?XUOgCMpRNwl~=616dHK2>D<(~g{5U%EK?=d9HA2!!tc?r{MO3YP`K`* zSA>s50(bFK|1!Mu+s`}^PB(Ehm+?N>=m-lELHuV|reGNFAPV-->ag6vOA)^{+XAkbksm5vX_6DI`ytM;2@_ABU z&P&Ti=Bi4E5H=!nLZi#A^Oec)gDXBBUiTlr7vBBsv%_cJ_OkH*-}|QUqi^gfNZe4j zk+`Fwuj61Ch$O8)qUY%T(ARz_DsKmkycOs=vOo03&rMH`HNHZyGy3Q1u`99bE+Z%+ zaw@AztrFo8k@LNAegKJr2Gbm9Eg}-9v(Hu)@asDJmL`(8yZPsz{&EK2@}#wZ%Dh1H zV39d1w>ovsaKbQzw<|G1*NpvhdWP&hUJ6AH1dbD|#G3sGWnVT|i^%E5`S!QJ{Tp%N zoC!^G*gL?;l)+vIt^T>zK|dj=Gv>ed6p15Jy>cGDPlkR{+J(!8Ktm2@ zgnF_|7DnXEU^hwRs!-@^Aaf#g_I2Av=sNb_94>v&o5L6X=XK$V55FsX=i1$2pzClX zaz`S8I~a-Ffr7mCM)KBucwa&0dfE;Y=st2s80zf|iwpCmn#`MBC}+7fPw4W~tzY}v z*Z$DR2^Bf2ae_Us@twE!ta?LU^su7*iD^~5KRuC4neD@Zgyq}fW05)Z$+E>Fsn8qr z_tm<<0Vt?*Dz`pJr4HpaCyfO27ZiKqyzRDBT(>nI<-TQk!aN8UIasm#d%d6V!JmYlDUL5~x9CDzS z6g{O>N_poy-}%!gdz$?Cs?S+1RwZ@z&o!*vIvfev{vX{CzWbG{Lhq4%VX*U1=x;Z| zc1J;|(sY8dAd!x+a+uq0>#o`aCloJ((LB8F^ZK=sI_< z+H%|sHS6eMYx4fNmfZ;RR1Iq}KL(XlY5r^QgbtHw1z1*PbQf$9?nUo7E!JL*quof! zkE#e=jpbIs{*3MUnav+>AwHus(_uE2N~b4A!ek_DlcR&7GCmUKrl-R4(xQE3=_m6n z#iqn@Usd_fec}_Jc$ATl_-qu4oF{UcSQU};>bZgbae6NKtoptMcrhg~F~gE)9d-BG3EfF5x3&)XQE3ND&p3lO z6lLQyW4N?fdjiL4wd|xS6ggz7iddd$_9$Ve9W^L)jqjgp{>i*_^`UfjB_wqEe{TJ& z?=ZsQ6uAe;dW1pwK9;pXq3YuSzHWx(k-Pvmlaah!t7G*SBMek#I#av$V3M6@rn;xs5Vf%iKSwN!M;G{l#aZP>)FDSXvd4 zvtb84vqEa%h#qnxXdZr;!3Z8noStu9v;U4Q7gXdp-JVkBWEAep$11tnx}`Nk?HG*m z^Zj$OD=|XnCtSTcCqk!EYrJmia%;nq9dhCMhJ1KF)HtXF==Cx9X&JrHP8SXzKK$1^ zCGlZmW}%@aPuAUQft7$8yL)a8I7Cp5JB<-PH2p>SgXI}MV}f6}IV7>pa=`b%`2Ls9 z&d$HuHi8v`&=4cxTGTnA%5tmy-W^45$EO#zbVF&RaC~~c_;Z$4j_pXoum8UX4<3Au z5xJBiCp9irT9t}UMGh$o$sRecxJiYhS#a)S-xG&n3JyCYNgX$b+&KF6!na|t-0F#( zZ_Utzt1q`Yb&eCR-mYX#p%bAqyOQ|4PPK^KCP7t>6RZZ1Ih_r6^I(Zc^JnE*f z999v!GS|O1S@P8GxC#5`T8B-2io~t%R!?{3i4z*81(rs+>*kK!;6J9LJBJ-aN>aBY)VaCE<(5jHFSky8tRr#{B9T*%oINMI zcI{d#t@=aN>}~h08CuUk z=nTHxx^5UkWX|9fI!?D5n$51Hp;@aNMs+2^^W#k^B9}D=Hh5)#^?23c$?~n-8tdlo zFLT)<*~3=;a;s%6w#u#B^Mbfd0}c`EN~#7;zA1uBM2kus%BBXEYLe5cTA2M}Y^L0H zO(G{X&NfY3ph6n*1P)j#u(E3S+X$tu{^{18)jyY7n_8PX9&zBV=#jJXs>mE;^z__5 z^q~(eNL3=${jm z5TkOdrdwHV6`{-7m7Ha;fe4gaTSTs&@O;6D8_KPB5pwnX6qystrx~FS?>59puZK21 zE~xyLA^P5vGYci^pKA>`h{TD=DLp}@8Im}LZTpvjTj1A~Q52S+upsei4h85T=hGba z?Ah}hP~&PPOQx^^)si`3#eUD06F6MgZ6=&6x!Tw7+=@ZVRNP2HS6A1wq{zwlQKEt` zt&+%jP(}B|i%MN8YKzai`#4!HWlIGIpP2mO{~UgvmSK$bGx(@YRnr*2@5LCFTUSw( zTSe%6cB?lOruW?D{O4MwRhua{0Ma;x_5 z-57JvmfeVNlx7r{)Hnls;|wWJC@$Q5IS9;L<)%rCuUEilXJ_A6PZ@RPm{2R3BcZeF zmF-ZtYEFm9D|9=ke@=rAHB<~*<<{lfW7zv6d}%dJK$ zRjNxufm>HrB@raibL&Tz(0Oxl!5ImQ(4FyfKlgKM{&OO8>Ys~PHw)f;ZO;n(W% zP&BLnVo4R5t5oP{Bjl4I^js&&msir*2geY9UqvxWU%X^jm{^>sdtVm+pI#n`+Wj@PDxyL~ z4n)q7>~Y=5F2q0QAa(3BFRt;u^f5n|RNJE1l2+n`)SnG9=il436w~^`UR;nl-#>SM zkvSO(i_oRQ_zgznMCiWtt#AD+%B?LT2QYgTy>n@UV3`Da37Ib+-4rwnCc`JA7m@SX zZ&zM<{(W6)zoZzhRjD!M9vTMiST%W zMtcwvJOkS$l9Q$&S^_6fLB6Qm>F3CmUirO?v#$N$(XT6dhgV})V$d3CP~4ZTpGM?- zAir1Vq|muiYeDEV6cPL9o*$pho)(d-qF+u59Elu#P&IV1VFeA8-N z6@;$da_h0ilDT>nI+3{@L+EUBy;)THiN(o6jl1W^?;T$H!}FN=moqfqNSx9ge2;5tSc$!G=z&WTD^J`=+Nk6+4Tj2DDl{M8KbaHDGORD% zrZSw>H^&%2P02%@^9tQs#JvAu{0&ghFQmfAX#h~xS76$E-h$9s4Hsg+JW$N8z&0+V?EuuIn1xj*K$vEUUk(~za}DQWmSge({x)T2mWnYs}F%{8e1cfhpNxvoFrDs zK003w@Lyv-cpQijJozK25c(i~!9F%0KCL}I)k#AoUY(=&oD78{Jel)^&LBc(J#>X# ziIrPhL@wJP)N6$s02 z*^OxNp&EA|5hy?8keNVBMfr%tk;wUL2SoJ1?uRxcviYgTOYXSgxUe0BE>Gk{c^XOR zws;^y`JN(kP0>GB7E|#T|KKIz9kG<^4^!nnb>vgU^;{%ykG|rup=Y)?RC`n^mA5F> zfr^|xM^<8$%I>|_45^7xs$vYU7pQRQx%GglzMVbEE0Bx+BVi=rq%!AKIriZ3*O~F` zhr4Jf?AuPX4vEa!+167{w;Dw1JegCumD#OS=wh$qYenczQ6k3@YZ|m8;l~Ds>vII# zH(s*b%E?wKb9Sap3Dr3}O6)(UX|h)T+zz%IkrJmxpLQc!SQ+JGJ7AiD`Yc9me&_;k z&_EGOvhy=!Y*(VVuksq4 zmtUoS`rc=R4bHFw#fR?`7jO zRc@~i+RtaD4&<($e$ho2{gkN@K}Q{gZfR*bEJh+TzhFdW$w*oagsy?*)f&{gdh=Uz z!w}`~pDVAa`1=ohAPzR18*~_9`?G8RJQBH?V8_(rRCvslkJZON@vx1*h#Uj+4UUYk zyqfi9BY_e~=DfN_+aR6w{$nqiu082cGEfON)SqdHd=TvSj2wmJjefN|kaz^5y&gl@zt45jQ00bslF)E#Cti)8S z_pLFU#tB!i(5aEqRFuZ|&z0XYq}4xHyWNP-RMoV$)Q{zPHEVaQ1osqju5xTOOes5QP zt9^Y54bDrg(jS;S5Ps>BUkQRS_SF82G$_s^L1N&frx)Pbj6TvF*dFbE%D@ zKF*3UutCyI-d|>>YPD#B`CW-#Nn(XM~*1&tNDps?Pb<{Y1J!o z9EQjQfv-8$V<3W)tvdUNuL54B^N#y=-Pzgs-z~e6^s%^9*Y|Gv{<(PXoUKV!Z5Bl0 zR-xT7o0I*HmjMrfLEd1*3Uk^VV{!!3S!}#KOc+<^q4v)R^ z@f-WeAuIW(e(I+RWA9zNcAaJrne!x$EfXmpIf3dIf1m#|{kzP=Kd1h4`n*4j)Y+Nk zSCTmqQTF&zox`th=x3KIvl_Vm2oz_~2QOhpo8>bF+Lf3(r-TTpbDqqpf6gaFSlm~9 zW~WXyA}4tACdDqxdi;Ix+NfSHhDt5<7j2aw|-N6S;|)c%%8Y{tkLxwCRyg zW3`0N$jnkfUJ6AjeoiEA*$ADT?bmBchbZ$wA}3@Nx~jwY)jwB$gY$BjihsWC^Wia9 zJg(@E`>m^fJ3R98M};ST`^lkyw!iA(B_jun<`QhcLCO{rT2ccK9;w6?PIv14#bg8z zJ*T?X$G$h0!vuOaqDSps{Ci|esEKzl{pL)u^Pl5jN2-6$d&hdx=}m?GP!>cPuh5Cm zsobjmIh9;F;aZeibyok}DXYjK@uBJ{FDP;%bb3i;!-YN5_YVZ??wZOIbQ6%&iO`va zM9Z#Zo4oI4nycJ;$t9OOoO!BJvb6A|0=2ooiFk2{LDy_ONDV#MwI_X2^CFTi@qPoO zsXK;WtDGb?+uH$To)b>Cu96nR8j&+td9@&K3yX_J&T5)&t^X*up|FTt`Rz)$$t&Nc zu4lHVP~avOCTePzFf~s1yM`PT&*g~_H$@y~5~xs7jpC4kFPHj$v72tX$#O+s7Vn3T zO-xL@>Kotq#;^JJnSM_FUR_hY6ItTW0TX9*_T-dhW9G36sR57Fq%Q1J4D0#8M&ej*6}&=cP!F9EI+a_Sp2+1x^*1JS_G>zeyphb&K$sCGDR*h!2y~a$ zjmL*N)Kl(fHmt5;+5>y+qXD}s-DalkrA=6&xz30VppPL2NJqXhw)RP zv#%-J26K9DvDOMfsfU;B*^bZanN;IMF4!NJBXd%r*cK!LMZzM&#RP;{F?wRWhekc; zG>^NXp`i=>bSGi~4SI$>$rJ9w0SU%!F+bK{lhiR_KcU7YtxY(cYiIwnB&S;qu4*8- zlI#6M=s@b$5+WR#Qy70S*{c3I^Pdx;Yic4VK$%1ToE_C6e&l(V$Iv3(;YZ-$bVTU&8oC9oUu0}diNB5_(E(SMTao4K2yDQ-@!+L_ORNFB?s zp3LbQ6S3>;NLb#0m4SBfRI>e|S(Gz!<<{fHzZVEyJgekdi~pQZ=A-uhx!U8tq|UYa z=eFnBUVZ7`&ks7Jh8(o<;Y7NBu1Mg#6^DUFx$Je*`{|qC{N}I6pRIkPpS!KC?XUgD z(wpnL=l3*{QcbPvx%YoR!ICRPv{XLM<*?EZ)^8@=uP6I<39L!Ny2vm68?kLlWKM)m zb|osgiqO%6PQ7#LpL^1ip7g8MKiAYmj-VRHk2wHAP@!WQgdr6UF8BvWET3k=UZG13 zL+IKQI#XauN$5&o8A2!cTEF+g(#npr8xeuAh0`1VQi=0r7nWC8E`@*GUGy=^tU{{9 zs`Fj^=S1ch$W0>XFBrxY# zWR<-setOLMi*nD&F_D;plxWLtyO%1+{!H8MVQ9~LTSDd0g9MC3ZX=5l zRwz8l)J&9w;=y~!MQpTTZmAioqk8VWP+%Mkk%pQ3VW^AoxJFoc0Uaw2xRrg?CZ z+_8+5@}J`bk!}ix@v|{hL{2vW{paE$ds`^uk+%$KNEo&ex_W!}%1r2Pyz$206_K-h zL8RZ8EVS@(VfRyB9N@7tm1in-?3d%UCxZe?uzE&B>NZ?B?F=h`tb(lTaOqvio!}MOGsnz zM27f% zcjCvK4OHgr%z=p5WO@qq&$asJWJzF9>4KADDoJRup&bGH;uw+-pE!EMCCQt&B}q@d zrenLXQ%(*Id3yp{8E^+o-#IOq>NBl39bzlr?aPq}jg5_lf&RYG(a|0bA3huo9JnJK zI&?5ZgV4~^(-UHu*vL~EBEM=0<5!le{TVye;Jo3<5MyIwZ?~7aNRRI^7zZ0tIjMZtFyq+Zb4BYG3a}B?8m7Oao>RXmWyuv&_?&RX z-z%LZO{)?TJAr-g8+q6&l%gOOfnUrb1<8ICOP(L~?e-5Y@NCQH?uPkh%k_gl^xyeUZ%F8cE!(;pUrfj)d;U zSW^G75xRmjZP!u1T}d{OUmkut#^Ag%yV%g-B~7YYZ=B_FOSv%;;5KN7Q#K?S zdmnGUt@nxu)>aDyy2mDMAW3SJdyk<6i5@zvah^DF!j)uBV46*;Uyko;`q2s4baD`a zQ^3joLt2)&-shs+>ImI~QEoLP37zapnuo}xORV@fJ>g11=PgRo6Rp`{h-7}NeLgkr z%>Fqt`;-A8o4tSd!yo=$tK3?@6MU|J?qm%(*lx|hJ`>~{-kYVCj2WgBv31uXXkLvY z^fkF82(Rd|G;3ggp3bRkRv~8xpqCNJ9EXMU@8x&Ed-v}Bz3R)Y^^v1xBQsNzVRm9X z4EFUFM6SELvp9Ejw1u`v=#0#nIwvA``|Y<0g+h1BEjL?#q^Wckq;90D;pJAL#&WB- zE3vOHeZ^p;P~wj@G%MMwak^L8F0l$9Yn3E&y5_HYqLE8bk%DalLtz^a_0Q?=uJ7x~ zocaT4CaixGnhN`v%+vq~NLeyVovIzduT7P%_5G_Hh@hFU428Wqr|DLbIh9*wD7;4K zIyyRDD?-;4L{30&9En@Dv|3GOtM}V7&|Aw-xF)Cf5cidvj&Wv+r=@!5>?~Hl6XL#F z{d2V$gz7-5*uEgYo+IaBEcQjL4Zv*W1%m218*(t<$X~jQf(I@RCirio`YKxc>U< ze_v$A)HqX;MPj@fCvrfwoz_AOhNs!K{w&{%?MZ~*Aq}eT*!^;YCDeG!72g^`bx!ZV zjnW}}$(3s%Bg#@qO&KyVYX(}AQcHIE=KnlM|G))_k5+QZYZ~~e0s)Ipgq$cj4v)^k? z=nZg!PfoTqq}*!L$$r=BlMZ|{a5}3ny%13a)8_<+=Q}c%9dgiF_kYf+gkEwi@p4$m zkPEv;uaF^WXv!Ws7FjNE8@U&)?Bq>|-U@9sdm5=LWEnWH+# z4Xy`2Pa?;)HBni+XQF>EIo*m4XVM=N-gC(?{@jG?MHgN4Tk(0^*HlCfeQ_+elDzTb zG}tqj$6cvJc<9FAuFBWpC5!t~5?)THvo9zeW3)4;$j^#GM&{Z=d)tv%Zao~@ zjvR`x9=fQ~#j@-ENa~6~h@yAyrh?GLyvtI=ebwPVSGsa*qwPlQ`6g*el~mdHM&t$@ zL}(CVf1180%6c4dXlM(`@bK`cgIGRF8XPPrO5#K<+u zD}PMUplV2Uj$X2!U~A&nO}0J|>YRb))`z%+2;VYUOcwtAPU1r6i+>KQ?b z0|KTot!l`TCy+N1JNCAT+<7oipTiKzp19P)2z8ES)||aU(s|wBckjL|?Vl5aBELF2 zJO8_$=j7PRa?uyJI9Cw4sK!l(k>Q~Nqa%Z1bZ8(>t`3LkiIGql9|>cT&<*zYhQU~J z9qNzh>yC(OU2kU?=;~hTI7~iG;zS;xRExyvC|V85V0v!tB))f$QH1Ibrd^2=A~+1ee-El>?2ogv|5zZo zqmi&amui>t!;D;`++=HU)~1s^@ID;#VnY4-ipznGaqBoe14 zXemo9DZopLi#ruxPoR<|P7*y5v5kf#QeVrDNdS4xuc0RtCtN-J^TB6?Q{YszoeIGG z)|%8fBXZUsXR6$6Wik@DkuW*7icuqRqhYQx5vJnDqr(NcD+t}hNF;fqgP{^J6|ct! zBf*P=uA?oIxq}Cd%*m!igwA~EaPOTwGvUmHYqeqg_Hk2}TlH*<#HlyVoBtZv8^@#; zmJF#@`{*u~^k_4p``s!xWqB`XBWo22DRjPvj%LDAG3h-g(5{5Ng5>5RgjK44w_9a(eYK@=whQdvKq-;vEpW{R;$lZn|RypYN z<(IN(@VhO$*3BsBMxdiKGh5w5+f;F1HhfTq-o3@;t!t9D5`#Uc>J@>{57BsXsOjnH_lFW5_H(UnYVS|4Jx}PoLgz};xu~z?;0V`GPu{q0dZK4Y zr9&io-buz&abL-S2!}I0p;Nh4WX>yeFcTJ$Gc^4nl`d;fB8be1z!^D9_0pldnjD63 zkzYcx`O-hMDQ_)1r`)>9>_rfa(8Wb`PblfJyh6(mU=o4*TTJLCrmOb8v-0d#+Ks3u z!j~0J+qG*K7pir>aU?mM#?r6*(xtyzi31TSJC~HgnYSfLPq~7?WjCL`a$xYJn+hE_ zoCfsH<5i+W7y3QssxZk5QNf-&8 z|2+b|=1B6GWt_@sWxiytht4+|)7wd9R{A@6LdS9|Uus6=jzxm9vbz?VTmkc* zGrN+m_BN5KvXMDKWUh|<*5(*+uwZ;L!4oNaWclQ433?AX>5y6=AXyT5Ngvu_#l#=^b@g@)-Yxr)qz0B6%7{Mt&A zr!&7MGbF)b2wEy7$y_QSf?@pXpOZ?L3gbWZNL+%*`2h(MIp(#x0DhrR?l=r#pVQe- z2d3Qb5j4J`Lgz=EJ)!eX+P+u9Y#7Q&=%kQY24ZDyDIzK!@#6;f?pdgRI!bJ2VaqHD z{BB)~lkbg7MfI>0z`l*tH3%5T?u#?jIy#;6&q?;*rPQ|6=Ly=QaN3qT-UOM=`a6lt zdH*?j(0M;A61voLay*ii+ZFhaMyIA35X!pPkGjHz;lN`a!(Iyz!%oRK?6 zl^YxCi^CAngU!3+-Sl zih{b#wpWP}lX9}H&+^Kq0 zo82m8$s7rtpfapCSf!egQs{jB9es26^63zKNl|ssje!2S){*F+GeTz=t;`#-+_D#p z^@6yCNhEHa8b>0>1&2f{x2U9s2iT}fC74k*EOWBl>Pxo?rEVjT^zoYgcga!*Z5de7 zNO?QyjE&D3>??A1B_c3J<{Y6j7@=D%)Vbw|rC4fRn2RsBsK`~OCXKKa<<{xSWGtml z*vFB`P1#vw&ITh2i;|J3$_@4P6rOWkg^_TP3Q>5^jYogFB~7oEgv^f%mk(uRQ^vN0~};o7uR}FD;X_0VH%=-^;A%LiLLA-_;K@ zdF7pbh*alT%FYGob4r!#5Y@b#qDL`?=`|E){NKTqlTWabF-Vo0wDU}XH4<*;+AO!Pblg|UwAvpEN zGL#I3StL#SnfCI^f zY%`o9#7!EXy{sC?0S6I9t?Qo1#i6Q~)%^e02-M8{M#QbrCtW9!#JPPnqVMh`la$CGBlBIlme!534N1NB+6e=eeRoIu(l{O6O(oX>4F zB~I7qt-DJu&(%jCq4_-d0!wA=kZIa!Q7Z*63pEV+)342R*N!7wsp z)+9rPP08?JU+C+N!w+4N%yo9ea%)eR8y~X-2?fKJh0xWS5Fs*G%Rq$v{vBgC!spwD z9JE=W=b67x> z3SIoqDq6_dl^BwW9h5l{K~A`e#Ay;%L=NZVWGid*ROm3>>Sgz2LWFOM-M+Z5)}e_k zEwpTa&P}s<^5jVrd)*j$l|!np%+6jN;NoT=IU>RIVEL8P+DL-P!tZwZJg|Jse;-|w z%q2EG$;mN2D_Shm&&hF5=nRg`8T?R$DRpzE$fn(CyySux>XbjPxiwfRCr5r@A4ntv)xu%NylDX|q{nSqto^f`F#G#~`EbZBu%DBL6 zZuZ8pjYe6jwdSdk$c;=TiCihlt@igaLZ|6gIW+j}R)d~tPv$smqV-n)zD(HAIzpt@ zUw+=e(kv?*ti1T42(C{sNOq*o849a^F8-$lfC^o%j}D)!DvV!*4n(dXd%grk=V_V= zL$c)q&lgp$HweC3tz!%AMp7k#ViD%FRW4UGLEuU1IOTal*?^=?*E)MekYyl}Jz9d0 z*s*Vp!w)RQ0$GKQJ*BxGKt3OIU`L;khY#dWmNf93WJ|6qs|ua<&sk~J%B)7_jGRnG za#oob3&p@g#Q5lNfsv@t4fOX%g3uc?TYJMyRO9AjzujUi)9!?$Rx(GGj%1E;UnL@R z_H*qq1%xF(Us9zS=Ql?-t(qC;(HY_R?w*B$?2`ek9U#@y%grRWOe-7(NvbUI~?EadSwS-Y|Dqk8USJyj-lqcPHTA!@e)&jr;h+0jB zg$&7KApZ%GUo>acHAkIkmg@br*gr?dd#Q9{_7<$XCFR!EVX;ep>%*eG-H4x5C5cOw zRZ}}bkvW!9Q(^SJ6winsouOFyMXop-c&`cmUewP=B8LHnWDgyQUan^jM%zg<;Y@C& zZ%ar|kEM;bh2o`YRtff;P@N;8(;$SYa*Gl3kWTXzq1!QbB}SNxOwhzu&o|9~`TV3dT)DI#D#=>I{XHo) zF8Zf&FtJwlE9o3SfVi=0l1#7xi98{} z=AjRL=m{CqKILhxyq-r3X(E>AE#QYPSzPg|eU1WW~<0R?1zpQ%&l3?g!7ARMu3Q&Nz*Ff(l>*2w~v z3SmhQ);DKl&Pd!`{JizXSy|Q0hj)S+hohc!2o6K&to&AdzlKLleO^i&)i@Ek)fex& z2r1te=UX09n=h(y{uyPmkET?O*wp|3(NsBk$ZaiV<`=g`8MU6kjM4ga^L$!q~h4WfB)%|_LO6*lHeJ7w0jPR0LJffh*IjF44nD9lM$AU*BsgZO>! zC2t72OA8yhN_#Tr%d9%gu4HrZF0I2B7xr>!F%e;6UmOiU>1{-t8kT0LLUC7@xd)2# zpPc)WpL*i!KK!Roe%q)2?vKtn{~_AN5**IpZjw{hT)?~n$3>53*(7~bqyYQ1Xta{EB{&F_WS}1dsF^lq=FcN1a z)p(u`E0Nsn#G`(7u6%YSM%u5u^2$euz_B+@&v%L-u-$>GkANn4+>^-^fcwL4r0&$6 zvGmYGY5V7t-^z4|l=qw?LRyD~bs4zaV3W+Hz+tS^5STtst0=DFOopH`D^UPu!mXp~ zm@f`H2s%LYNazSEbS%62{y7mlf%SRXGWe!SmXkQO$KE;ZZd(3xwR<3m!1#y0*t*;l6(@vHiO+w1RH+=Zgrk>vMCXnE7Um=x-hfqJ-1-QE|R#V*&>+V&V{j{ZcDiv(L#C?K;SBkx1thXEK8yI<8*y6(o*T~ei5xQ+Dx0*uk%dM_|j?=AN3)eQN zgw{CUN6d+NnyjaL=TLsdMxEioa#eFbzJ z=hEd!hQtoz&vsuN%*?zSj^h|!&=4{NOfo|ZVn&P1%!wUlrp?9v2a23X)}+rDH%hI0ooqEs`*%IN|%7RS517;V%|8@4*}|Ef$ zl)kZ9Yyo0H&6(o`4)o;439=E>P{hT2Lzq~$asPyhEi%4rlZ-FlEccWsm@8T@<23Hn zxMRh78M|!l{#)kOj`gMQ{P)-mi~*{@k+Gp~N`F}Ppko#;b=kJ}!PY$-287cb*nPne zB~3^3O#KZud!BG*Yqp~GODlvx9vni!o10f~f^B=7>vTN%cLx%n>l)0ZxBIf_OS$!f z4?ega01kE|3=YuD9lVRj~sXpF>;0mX`a+`6SHH@dF7r@3-LXxCd-k3|*`(52qpcbA$>& z{5j%TI&R93=r~XGh9a1(y4Bb@^O_5z0y_mIokBrLZ-EkSygsmQfJm(j=z7(RAKT$G zPiOHGSE>H>U;lL{hR5GfV+BlD?ureL<;M9uO**zNv;55H_toCj0CWRGZteSaUzR`T zfZQd%A-`80Y+rIta1794jCs!yFypQ}QFe|QJ-_UapS1gT4#@Q(s7r6oA7|*|UUYF_ zXN;WBpX0nE3r>#bX8c?b!6nWJ@22emonADb5Xnv4bI~`(XEx5Bs63GKW16`nQ||aI z269}P(?hYKPogxgDTR8M@5~1$CR{juHiP zDz}bRFgIq!TDf&m^NRm8t^?3Hpl{&ckrx+}d~T zzOeu7yf*M=01ibC-k*$*cLe6`+~tP{26HLb;!ZNY^&w?tgpUJ&xxN5LV9@#s&>d9f zuP@tu*?#n_DnFdsHQQfLDL0L~LqwH_$aUP7<3YZ2G#@EuqvK8gcbXy>1mdE(a$Rjh z{&V@hBZM(?7!AA`sI%}aosXy+zOUXRKtKkBo^9Z~Amq>8elE+cpz-Y~*?yPU6CR&< z3>vudDRv=91L6i0sUkUQoiVv;Tf@}aT{5M5hfJ#6EDu&~l?QYlfbQNZ4FJ0GZE{cf zR=K-;i-9?1=2U7eTqmQJt=@nA?AozjUg8TOSLd=v6F*I)nwRm^{$KgSpjeg!U zb6ow$RgW=xpG%&jec#Ag+TXCOjgel251nI;_75T9n4k1Wa_m-8^)@5i>kspOTQ;@j z#_)CnU2w!Bu6=2LjazTUz0W=T5_}FGIx)9xM zN32|wozwG)nG^5v)a5zC);^X$nLSTVkfE>w4veP?mI%y6|Dr{ULW!zXpIc6x9pgwkXSvPJZ;akd*19@iq}RPVR&**_A*lhk{}it~furLj-~>K7Owl!oq>NZXZ}<*EkEdYvKp`m~X6& z-xH9_v2(s^mGkA8vEzzX3tMKX)w6U4=uCQLFD^p-(f*YFpyV4Bvpqfu7ok2&=agLu zTEmQeg zY7;>6AF2ix)4&EJhG|-0*{0cAo8@Vh!>6 zq0IZmvE7YN)Cc&$HK(_r>*$x?FgW7e#WOO0?#r)FKcKUAUzFE;iFX@_6-0RdIe#to z?G3xE;HM%8R$hGgbzC$-*C<3kO*zYwt}0yfdD%rCz#0QOX6<~dFY};d`j(R_iFxqs zT!=^|=AT@ty;^fza-&2L%yPrtaN$-@W^S3oiIWjX${X!V9misj2y? znm9Lgb8de~c~lqq8+oLiU23`npYJ~G7_#GsfgH>8VE<3?cTVKikUy6OoKGo#ZlKAn z=0C^XI;gr8(Mf5D6?hr2;~YpfOJ}*1?MTwPNATFGNJ9UYi@uK@$*jb{tdzdlFlw z7|LLd3m<4ZzKBM_oDc4AO#1}$%+7f*NB(nt0qD+7xit#tNOo1gwhtf<01kn3LC32w zHZ?W;8RbQvMvk;^_u-I9^`GLzU$qvefFq9AC@0kd1q{TErMx&WrZoKi2At)HGY4 z19IPYbYWA{ZJ|W07=mI@JlK1VtQ*L-#11CP6EZMz0fG+XEReI&J=I(~fByWxKwglX zMH8xZJsZa$j@h_wl498}&cbd0sjYh$P$TT=-IzFi&y|nXZJRrH)zdPk{VAE%C}bCF=+q&XazSTjk7{dcn{!uq!Vw|0$R_{e7=C0O#Tg#4mpFi`z7pu2o~>kt0WD?b@~L zhjxrIfU}4(?3lNHs%b5_SoL5FC~gO5#|F;j*I$4AKb%f5Y=PXl&y}GAQ%Aq=sW5f; zJjksBvfY=@dFFOsZ1T)?Uoc zVcACR-D+~H1%o+$I8$ae!^!U1I6JvnQuWT@{`ceyJtxC* z{$f`$9!aW~S_N%#qq_3iyQckQ(VFLE{+efH?&_yQdd_6lHb%yLMrYgKApB_kHM%8hgD>$R8bHJ-6eGf75p zo=Mb)j^qWFO}V&%ff@t3)G?BN@NfRjzu{B_?vZK13>|y>U4-9+tHC*cuI~Ze0FYW~ z>M5W*eE4u47_c-i9XZ@!fyM>U^N*)ChxjqGak{hmJuz<9dlR?DAbKxgNy zzt<6vrv9DMnYb9}v*<}9es22(FvrdKnVpLjL~ykv zCEb$=Ej1aZmS1nZ_11sD$uf}bMl3t@sx*sa?jq=y8OZVbq5zKoWC)f)cwgDR$KS-PoIghpu?`W&!1Po8+!@ElodiQ?Y~22~ zwzeNL17|EX=RsnIVB+o&v0?~|v|#ia-Wceyd9VeubR4l_h%}atD`~ibGR>}pWh8_zqaTRMrO7?6965+T(BxJsWky}lMKu$J2$=}_|1Wt3!NbD1enXRb8BSOl6Ek2 z8VcwZuH65>9xWYfz}|y7&(L{;)d&#g#Nk-~))2AI53vUqV(@j=v{%Zov0%)#}vAIQ}h1G{(UB{5Kz*3uj}bQneE}L!>psk6knU zgBce%7-+Bp2ipI=m7p2CrN-x)J9qf=FBK3wKt~Y;bN!z`*QatT!Z+kc#Pa75+#SN- z6Kq7pel~r&7U&{itS2bEzP?74LMJayFXZW z2(DDcXu<2*@+8L6@eMmxp%??LZr)`90ghx8zRAYh+CpCjD`n6u!AfKJzcU!5AWB{{>39dglKuhyMd?d(Tl2uyf4ZV7qxSm_wcrgF4R~5kq%TOiCi(waY9oXaMw6&H4_pzZ7?HVDnp> zXW(WdR}Zsq9OuO`D8_d)NfjV&R@FLHJYSIF%`Z#QrkA7$fX+aj0=i`i<{n%3g0gil z$`TzF)FpuK8Cj&@u58XHx4-^zV)xf0x`C3xAqFY`=;m0kMF14eHB=%bJB@GKnXIK==Q7c`jnq3(CC zJd83Z{D8q7L$KbzKgO(E_y;rYr`nsm!S1Si*}laGwg>1s^w}|G=>niTDRvHHf921? zsJO4>RvcFb=sb{P+a;D=ZJ%@QG)7i#+~|Q@v>*ZnHW~fj85X(Vc3$x+S6mG?gVoosmieVML6E+(~3(ISXR)g4mneG29#mTy%+ zw?)P&J9k&Hf;lwZU$IVpra5zCA6qSBmZ(L^!dAI;VaT168|O7@cZlM#d@=M%#269G zj9^S_bH<>~g5^~Pb2RTOU>Ufv=Tnywc?{ICg$(z{Mc6#2CB)m}&@4 zz+p7t2GHgo8ekv7j4)Ro`oIG&1G!jbGoQ-{$HK<#Mozt&H`)=y&vP)a`|_)=iTcG1alN;ZM&}zKKS5zYxm`uInI4GFc)KenW6LGju|?ZTydSE>)b$?ax!bI@jl6` z%+Rs4%FFS*IS=Ycazex;SIz@5K*xP4yK}v_2@+<%->8UIr-au|AkLULU#-Nl3RC5r zxF2hm#{E?7H}p4mXEk!ASuHGV++JL?{y8b%`jS*Ah%4Xnl9X+IS<1G&qVckn7@*sj zFm;e!HMYO}p=^EWLs`5I`E$?6ytbzTn5*0My4jQ{sM{;kOlqy$1F6*<rF3rOe#O0Op$ICIxgiB!JGCPCGU{Yr?4t@SbU&*a~mOlrUobC<$;ENA^qHuQ#4f!q>N)v^wx**NEK8%h4hT7lYWg zgeBLAWkdAF6_W+I(Ks8WdWnz=BF-ea6(=hhMf$uh59Fd994zd{AM5Op){2W;L0Lky zXEH6R8h^yZEs#IxIZhKWKw!R`2+W_W5D4+vV_X+?VB1o^x zl%-p$QtOg6&&wi}TB~=wChsXjSJ3*TR<m0AJjeztT?VCF_G?xZ=Qk&ICB#Z`uR|_|u(01W ztqP3UHv)ED_Gz`x@Il*!aOXi<5ex5U`@6VkD9d6asDCTjm7LoXa>+akhe}jCj&SV6 zDpC!|d2117;kaTtEuYo1vkd+?Kg#wo%c;I6Z#MwFM@Gpp1`e-B7$yUA98pk*@w1}} z=oEPMCV$T6<8tf3%b$b)7VVDfA!?5i2`S zlT>3eD*H?^Bgf{y%*J^TXBDc6ta|mL#%)bY0pwOcCFPnUR|PP)?NyD}0;sFpuA$2S zbQNIf6x@|;(b%M*&PlGz)@uHog1N;C=H6FUZuy4iLsjeSmM6i^0n8=roB}%J&8gqq z6!dGYGN~1LbFe7c{9WGM3I%g2vjWV4okLaYttf&3pqsx^ZkgL8H_dL4>mDgD_}3#R z{eaqAUCeAs?53Mm0mhvny78FnQI`n6?B}BrFUjf_Y*%7n&Oh|{n}9z@JSz)8*JtO+ z0H`L%-)}_?W+}pXa9-Z>Y#d}%Z{%wc+kbvNGbCIL#(8lD;s7Fj#j>|&GN!ew+`#Vg z;aEmBkj5a6C%hNisW~#DD^O>0E9K9fS}_E*`|2}5cTfRnU$y(PzSbDMA7IQ(ICeeb z;x>B_=tAMiF>(Vm48&!)jTbR=em=j)9(2UYxyJk<=%zOm!IBfRO9*ep;1l;fJLj1g z%v(^quYS2fM0$uaJ??;9syV1Pvqi97LAEN6nM^XFyu?79&WGGM$f~mz*WXpvzE_G? z@0G&#eNw1ku4>DxQlp@)cE>AHvt7sSuS@mz*Q8RTDgk!o3g*fI=5$*tj99T=<_5b}!7PLPt^V`to>lrBkpi98qqYYXNpyCDF{5Woe%yt8{OZ`U@n{|{@B2Ia;~s( zkW@K0$^Tv~%QJ{$>B=H@?s7{dd`8Utmkpv3ESobB*Lf;%=qVeQE~gs9hSyHEG8pd# zp!1-vD~8VG)~*3v@ABscV!JN`bnHLJg>t^#7s4N_E`~8FLPWt?H07qec*I{bnH9lS zB{oJoL=Z#AGL?6v_If^o6ZyG+E9V3mc=A%xrcIlEfD2w<-ypnSkT?GI5)JnW<*GIV z3k+_%>fm5NjzKOr#76+YfsLE9v~g-t^(I+SwO$HqHc46Q<5C8Bb;C1Kx9ufq-1%CF zCXEJ-dW|{-aR79Pnr(rlQ!w{hD2OQCOx3OHpAXfnN5A}9eyP=K`+s#<^PCYwk5i?)qW5)wLJO8;@2|<#1wymCL<9fry8Gy5q^WCtnmlHk{ z04|lGv+#235e0L-u`B8Cc3)pA06on%Ifu~hE3t-RFT+kAnqB43xgbF2NCW*}E(U%W zP>WW&a(J^~%p3d0P5CK*E?VhotQ@)K`|@bEEQ!jl?0g@qY>nNh`btJZizMG)kMp$1 zdlt3mdl|C~nxHAa09-xec@99BSh79&(6J~U@qj&1$M45uyfDLGK2y) z6hbUi1L1jE1Tm+1uQWaWhP?a9?~pqez}&-;ZV>k;U~Xc`<{-7+1F3aIR%&%st&mz3 z%+2o%=5Cl(Bme8+;sP@h=DZUFbG&a@iXhkh;El*FaiT5k9C)MfU@r>hY~EKcbKYdM z-4`|Gk2U0XU=G0z`Fq|SU;wwvqo(E;#^hAH@d2Y~p2bd1>R5w>@jg@N$M z!>X@R4Q!kOp;u29$aTlWA+Y@^PWWt8?=zt5GJg*29QwDOX8*Z9ZTEHL*jM=X`^0~a zy$$)H6yYmdZ&CbcqC$IP6~b3p`G`dRp9@CY1$+`5L7 zy}5rY_ija;ZvQ#382DUf;`~j5TJ5AJ+xr^;J9TqqTbgBy1{XMlyto9&UHw?a+NP4G zT~e}gmlW1-Q!uw#3JuIP?UahuPfE2`u{LaeL7LT)q7s?@5?+#SwuZq&jSW#*a_skKP~U872^bqeTeW48$3b!)vFL zVZ!GF%vq!tMUdS3RWIyH`YV6#2y*B8pv8&)HhXc*dUnp|UR&^kskdM9Ii7TEpN&&) z;(~}6BWI(nGr&d>^PbB$;D*tH{pS!Qy?Uu4>VD5j{&paH%MWg2g!zJkg1J8;8i|#icNDv6};eD_V#1P1=K4|Kx5}s)&&zC;X(ia=nyPZR-wfH{rL0+3g|<|(OP|E#P8nA`HAg1MIim}^!r*KB}Jm+N;xYDK)BNUh4w zZPDC0c+bJ6#C3*Px>f;Q`!fJ@D1v~@s*>%iQlLO?226w-EpM*FqGW0U=mIlWzBK`J z8)clvJ!&3&SK>Dp3L&&d>zGBYDz&yKm{VphfVl>_rJzo3o>eP1&a9T}r&YZA&u<=g zjqjUj#|SfY4CJ^H%=U@jPi{V1)WgTP1s6bAejVqNaz34Z&|#*?zPBBBY*pgr8H_2` z7MJ2Yf!rele8RaNNg|Kt#QF0xq7ER)7my;7|7#-yaq^I34@g8OS=Dap2C#d}#xa0n zHtsYtO!({`<#i_@z*{VzZZN`bQd|UKxk3n^bj)(AcR^?8dt)2?v|+=BYxLq$e+qt71!+ms z?u5D^()c*m#espGXI(6Ri)Ga;6UTq2RjGQrk(P>^XQW}nbJDy~!JKw{XxXCdoK~&2D3EL2{idwk4L}EW4sz@3 zmOB@!TOqZUL2BIyBjF@(E`T{@=2kr$iXh(k__zAn3t;CI%u!oksD@I z$+eG^hWt6UD=~0mfQO!75#$pVw=6-h51sXH#e7;2d*io{7DsSJGc$A%K-bBxg!{L8 z$(2$Q25$Zw<*#xAx&02l=P_50b5rt|Esf1{As4@w(pe1rP`Wdh9{Rz|NRD-|mZBAFPD-oSOOXP(A^^FH^|HKriCvbEZ`b@g+yc(t-~uqe@L)_EGUn-$Eh zOu9itz+5m8R(9^bL~0#hydf}icdt-(4q#4;AZ~xGT>)L2j8QN*N^|CJ(*T&eMZsKP z=M>D{IHOu_m{z&}|4c0`;3n1vXkrGOPz#{e#tM@Q_A9Zxn! zdmFP|3BobD(bNR(a zeEwoD`lzOYIA561i>VLf)_DHhZx0>SF;#BuZM!dYo;V#qPC?=4lKxNjP5)N&E4AY~ zR^jUJ55B*59&YZr>D-w#pDakOd3kv;IW{}1uXFK4Mgd$1n}7J>hi$t&1$3E~mX`3E z&D;C*!kG8M3ol?+Fpn8M;j^Fr=9_QAQYB9>PGQ}LAAX1e4vhJFF_w=%{um%MPrrK> zi0T0xSVVoA4e!x|J)@G5=x87`OmDya_O*J@KaiiF|L2)*CjG3j`ne7E8|b|J`q#hC z!>I2Mf$w0igXtVRc(C}-u;usPe?Qp73>`XDlD`pPSM=}7!{2AWEB##={kO8;T~G3S zy@2Jbj0EGjyu*hN=PQWA-u`kjYnLT=jNY^T@YupO51-?!mAe2ed*Z^&f6#dpCg_zaCq2HWfV z@c!e+@xBn@J13uuZLuuJF-i#gH!>LQJsqEU;Ok?DXSd85*Ps_d9OwATI5skR9EdI3 z{!GpZ>=(iDhy7>AAMaD_OB}0u6VD#E$?+{1ag6Iji|pRLn@=vhCr`H*jKhWv6Korq z?0w;Uuw%%MCmcJmH|fnXAIFeh*u(4Uxfsq5W7_q1$-}v!i~d}}Jm~B^J-+hvW^(Nx z{^1|qXXnY8I-St{tKa{J`aMrz`QX8Wg36WABYesr%z_lMZF3P!?y zvDbC|39Q4h!}|lT+xd*^2(C@Zv1m$1p0c9L^mzC`U8KmQ&Ray5ajfDP|2|WBGWr|f znuSHazhF6pf9=b!kB4)4*wDe5L4)YKMm|GC=riJz;<=1g*Jo57&GdG{=U;j8@GyQK z)6t_x8#iv;ICtd8kq1;25^`5vOjIA#UstsUF`I)?KbH;!{Ka^Z_15|%C1o31Ol z)iZQf{D5V9&8$j%l`FUW;tH@7hxFlOlzX8sh+w}pZ^^J_%a*^b7uULOo{T>9Ie0$5 zN=J*~z8a0cE8AK`*vD8^qJL`l3DG9MAT9?R=NjW*{owtx=FOh9OqR|smFg8$(q7RZ z8*AF6xw2I%DppBZwX$-RYo$2E8d*`kMwXVZm8CVCv?yY?R4Y5zpcW;KZBIzER<^dQ zO-bAKm!(bR)mCNYT8y0wQtNAp|D4LLiPT!D2Er9u1W}^QTrsLzO=?Bn+^Xkfk#>Pt z(3VuSs?-X0ZdT*tGF_RuN0piL2Evo8w#%eMYQ0aHxrvZk!Oj(eom(q+D?4}B($#Xu zk~aC7O09vNGpTh>Ly%fW%&Jv(u3Fi-D!FlbrFMrXS#SAsKG)Ht$24y-w_oB?Ir-0} zwEE&0$|L*M@p=TaKEB$P!ylIju9D=oc=o$s9?aZ8kz0{0?%6mt=ti83q#84O=4CIh za;0i4UBXova&vq;r@@9Y8`tY9Rc7O`uD>RhTYFOBiXN*7yth}9Yaht1=>Bj*zW+%d z)(dfrFC6P)AWol#{wACKdP$W$s8Vkbh-eo92B(o+CvUytD|5|m1caT&)&KTC z{_meonzG>Vqth14?3v4C+594@TwWm!rS;OHK(4l|MXJhINoi@jlprcrOHsLkxw18~ zqxQSLRl7g5Yrb6j<8Mi;ms-t#4ram{H3sO^ zZ>~&>AOPr!*1u?APNmjoWwBPZEx_rCQ|FY zrJF(_#CQdB<1}yX?qzENn7dP@*4q~Y%r(ns1#_bm%-yC^>#YfxyJc350=i1MX-1{o zIIU9t_te6WKj#yP4b0fhpA(3^Ty8cM45VC=yaj=fMx7`~I3>i=|@PzmD_k`~k19V-t`-NjJDoW{8$E?m#5LCOvLMLgbbyEc94`v za?Rtu@O_i-j^dL%$i+@h&36SS8Iy|vj3KE) zUd8XEOkAE;JmrtQ`=KT0pFiw>oj*7~GgKwiA%liwhMhM!NEGJ{9hMn#-g%ip`T0Q( z{pwql9tRE5otPiw&~Nmg0INV$zm)vJVVj{tbj;T~R~}?f-9op^A37wHfBvw{pdmx_ z+nF?*>5x95jbhXgNUcF;g`{~rjK>ifT_3i^HY#;~i`NB9kYSVeChJ1vb*xV$)*zue z=@iS@&X!GT4HAxsz0ckgLN!?Y+iu>%{VOc9TG{|4RLqlfmxpbVltEW9JAMK zvan))ymAZDKpo)`z>cv0(K59 zztD{TRb}Qhl$oo9)VfgvQY%%p2C22>DVf*2FBk~JqGV>{9+_FcTc&GUuW2=Verg@YiTli6hloh6!@05*BQe+PKNs44^>;x8z5~7szMFklX5)OLaSOk1{AiK3 z4_NB<@1?FSzQBQ5P;QJL&SywxJ+&KQCXU%SDsbo(8~6DyKapR(@v?k*_@MN`6l?co z5v^`z|G9|d+AAYrD~LF#jsDZCRgc2bX85qoY#1|BPj^=(=<6tTB5o+UC#J_9d!g=xCMBg(Rh6Am9-Rx)_ce^1 z6B|c1LH8gIOwZL8jnK)&MZ;G|2ZzjD`rrNIC%+}upTTe1WG2ixhiW`RT~(NjYfL92 ztW0^VF&>ZM9dLBsq78tLbzKj%;58FW;`wns0sC`(58i^xRTzz8TB=bkuOf)z2q}p{ z%j_7?Lyizg>=^nEZ3wK-P7T>%Ld+WL!1F5SzSyQCqc@yqJ@Y+~+PUoP&{@`w`7XCh z-=~95_l4IDP83M}Fy-r;=J0JdeB|-3e8JO>$cR{ySGdqm&d*9>WobN57TGW`CF7&( zpuhbt4h~M|^qlLQ^14P$wIs87y51Ge5Mqaz-<846zr~B86B}=y!L*Qz62#6$b?ccI zU3Ag!$uR%naBztBLwXeXH{!i7oGEjx^Y>#fGQ0O4yzO6~j&`;UH?Hwn zU-vCI=e$dBGK9<=89J-cktkoXa}6~LMCkQsPfT1{U&{8p#jI)3_B~r;?axcCwkphFgUxk^PwpcnHl)&&dntjD(M zwl3)>{B)y>?@LQo-mt3p}kVSYBavMnw;)ZR0TG}l(*glEwzc4b{T6^Om662)IjdsL z3l6FB^<2AhY#6UffjJ+aK>=EMxAJ8n)xW#)$}7*j{PN4Mh@bJLc!=bdTWs@chztq@@3ZR7|04Fc{ z?0M*8AlS3w{P2zw^in-$emb3Eukwx;{Uh$V?qdL48YgYnVY+qzpL5~m_^hw`I-CsQ z+{Gk09zaLnMV04ta(sYJ+Jaq9XiMlN7$HpkYyM}uMYPC(~el|WsH`Eg8~ zEIlYaD%RB#OxM;hnoLsPT>@Ns7Tmyk^&MOon7J;8D+yhPp6yfEl8$w`J`CSIU$Z7y34RE|b_i)^(|EoBBlpiU3@vdy~PTZ1XIW(F;%>+1iZubN~9+ zhXv*osw6Vg3PV%c&so-oWjCEpd;5F{K$P}wTAUb$NFjOzD(LCm6X50ZD6c*3w9|Tm z50wQl#LP)FKA0EyP&qGdm`%Wg&tJAH(Du$i?96NAHwp1gD1^?j;RE1 zYv2fjGvNv+9A8 zrBf2HlZw@?o#Xr&{A1%$b-RHNGXUOcC| zotzwW4$&sWOQmY##u>F1#dC3G*f;_?_eX#JjNgu6>bIMDgEj-U!I_{1WjY#>jZ5X> ztV=+yj%j&$3G35os%`ono6Q_7OzH_n6#*T=+!(=mI6nZoDgmqxBeq#y#>(ox)Xrr# zF0o`;-x_#iz%~r0(2eKr^fjq=(=1NdO1aOV(;`hR!z%3 zObohQmjR^CfqAN7hvSiZ?zsMk-f;Li@1?5302vD$ET9t;w`1Hn^ZfNFwPKq7D35I`T>Af>^TeMsMev;{*fa`q$WHm z!Vn$b`JLZ+tw5aOMGC}a_N&joE7t&EpjwB%>*1V7)3s>Y z7UzE5H{y#fd(6oKbezLEHf^lAV*)xGf6jZiI~(^Y0O%Bd&PA#hdys`JM5@x=fL&lH z5&^nnF>VIjIU7h=$Ko2PV4YP{Sukh4NUhq{Ot!(=4=FFUVyC*&21+6zC*Wp1-mD7P zejnM<#5#{GV&jx&l5Je>ulkMO_@gsE|I5GjEw{#(?AC0CzG>6yxyx!ov?*Uhh2QW7p!RLNQ(;7=_tFe!z zG{FZ55J}Y;#IvG@fRa336Z4jB+jLDptcmpkYh@5%fi9^_a~%_mH)_Z8hQTASwcf1) zfe88zKxQ8R^(jC%T-VIE58rds)sO#QFL>H@WT6yfmPhLiO?6(jh3W~o$k6CHv0!c| z8_F_}aOtgzLM)IID6wpk0VL&k6POIvYg$LOk*6hX0Sy?DhpSV6nWc0BbrD!O)<>{) z)@7Gn_PYep8>GDSBrX|MX#p%7 zClFT#D%X9=0ln#|%KP;WF_?P*aV2Z1KKh!Mq;Wb70omsvjjOgD z%on`#!#uIJj?ezq3-S5qU-XdL&+P{6IE1%mRJS@ZbgKW9Wak)ujsqAAS;$_*4N@BC zmSIaukmvT`H46*uvUo8RrM*$1a)lTWfhjANy({gAB&^$sh0|{49wb?oK&ZrWMS;y!eHZKnYXqF`g}fQKqj!Jw!t_@2$abQLJS=e5bQFLL*Che zEd<`o_sD=Zu!=QZk4`pz_Q?JQK==5U{KKC=f$sk2o_j8Mw1AGnGJ%9bmE?tj+bQ&g zL~3};ESI)$R`pjt>#Eb|l;>2>qgY}sCJc-0tlb=?wA;*~cbs94gPv6zszjy$d}bpv z@TK4I4c~Buz{&$v9li9WFMaf*9`&drx<@8~K#upnu4~%Fxq^-3J?q81>E2rA(*ooY zz@2s0S?(n-c}cIjd>_5$0Rd#A{*`^4CzGj#nd}RBZ{iL!KVZX+l=4u98`-@3PQ2ln zPe8N1Wu{v#s`402z|O0FV9weGD+f-&mp$^a`0Q`^=96YW*EG$pK(4IkcO{@Bn465N zPg!-V?3@;|kP`xQ2B;lVjQ!kRz#JuHM+qB;%SlaA8i5-rRZYRHs8gL4Tc>;mV$4%D zq8Eb|t3oaNw*b&7rk8BvGQ;6y8<)M3JXh`nZ;BiDE5GxXkNAQw{E`=(dgvhTx%*xM z3f#4^fuoxUw zlGw+XfNubF)dYT2VO&+Ij^bi|d36cv`wygRLkWUx>^JWrU?qo$j%7JNNVUp(sYi3Y z`sv|pol%o!#!vOe1`Y^f00%IsbHj{p7`Py|FM&C>M(;Aym{qh01UEt|p!RcdL-AjXVC^vbmp8HO73HNW z5XXAO&to#%;stxZtSZ%flm&IJw57AiM|tE&m4&T7dg(HsR#-5K|{RSeY-N?PN{?oEw4MS3K&mSUq&g z!(%_UhwZ-hpmJRRxrHo1oz$u^g`J!u%1h+QdJJ`|q*S*CmZkO)perZu(&j}D2o{8~ zt~5?Bybe(?A-dMtkOYOA)s^0aRs~}xePj_6my=g4zu)`IXTD`p*Jm8se+o`LxDT5f zo7gzIfqOSM(R3g(O8cxfZHMjo4707R1a4fculxvY-z8Nm;4sck5S;v%CX-a2#p~u> zpMc;f2LbM5g0C7&`SSuqL2qKZn=JCeAoDbW+dS5GN4$?DKaSfbKx>sgGU^A}D>=zURiP zKk!3u{hwD}Pw-ambEq&F8Q>A<_5?!&8fBOg8$ec$GS;x(GR(#{D`0nV#!aA*N~ct}3Zy{KsGK2;?VP-nYOm=ZL=&zcT zLAoW`CJ_Y_XF+mrSWAI79$`gw1~6-pruzl4aWa+IVee-y0Dbf_eD-uY{lUGkarU?y zpgWOpBS-JL6aV8celL5bJF#4xD`eV0+qhvs`U(ilCU4d}hA`B@rLp@(7hHlbz4%fF z<~$h&{bc8kOWmsc(d|LqTIVn#dsDYAfZReBVm()T!@xNKJ0l^A(>1cWi>yK@ogsK_ z&X;N<>=43)ldh*%pS=Dgg)Nd83`OD>i(xk`mwnBSp(OO;we1BA^`bO!<4VJFYfIy$ zn$ivq`mIlS%0K-;U#~o47LXXVL;Kfp`Y8u+&#iaj{;i{!2ZyF_$TkfsZtpPL+`@c& zmerNLzzn-1&_LyUa)MZ?YphJiL?75_TFg5j_zG1u1|>M48j-~tC%{+N)8vTYor_>@ z1qb6x){mT6G9WW(EOeQPvy>CnuQv8vmrmriy#alB<HXa(d~>#?Giptd}6H zsE)^D#hYSZ#vYC@K~I&Hyi^6~2;^jcRBRjO6#SR>NP&NU@<)E|%=6E?;6HWM(isGD zoBd$Zb;hTiie(SnaqI1||2gKNPhmyU4;c;Y*=%ETSjqN0x0OJSug0jnLvSNZMjo{v zw)C3T6EpzY-p6Br^A!M(1pO+PCi5}l($z}?SaLu;9%0}58rIkM!Lv`uo7AOakm|JW z;1SR{{*S>{O#lmdo3GA#lgc(O13K25fWYX3z*;(|&?Ew^NmL*7Sz`FQlt%_;==i+-L zrn*wBD$#;Gin-2}iw+Ak1?URk;uIrIVz!_P3R|MFt}TSLV0-tw-~Fi1_>9l^yJM(Z z1-uT^!9n-U07bHJLFNf$J1w(mx8MR$s-f-p7Yhgd-K^SLb$0w0Y@7mm%K@a)-<-c+ zzgG*hc#p1#Aoh_DG8=b7;YL36#@FGs&-;h8C?u2TM;^|_1VHmP3p`kcor^+EzH$!o z&L_72zKv~c(g7;~pK<1yxcujT0cU>kmpm-ned#FSciPx$uy1*ya3y;LbPFK2kcEhG zD+lCmbxu?r^JOf$qP#2cE7Y*Q@JcHKeeM?4LCy^B80syz1DoecLud=)Se8v3Cw+nd zG8mfl0VE)|va;fT?@yoljMaMbed|-ka$CV@x`N5t5@|9_E025bx*Ho&h1F7}8q*eo z{dT~JF_xT5DpmrQdDCKJb1SiRbq+N$;Y98SySaKYPCGfckw@zY%6ww!y5NSDx_79O zN|uu$k0btublvLOY65eW_Xf-{f$$CJhVUqX=UtWK&_Un~$&#&?x>anL*fv-vhZHuY z%6aYJ(1widteUm&tg}RB_M|q=c0c?~!?qb#&oFh_@S8_t@a^(vf$`_I?tA>W1&~|F!gg*~Z`QJ`P570}b*ek2cWWtP@CcBMN`-YWtMibL zD8H+HIhKaglHCFo8}*b|w09Ydb1N>{#KoTgLFHL%_;X zjg{q9oO0*@R@PUs-Ss$n|0eE>KyGvMJ~S<__L%h@wwggz=m=1nInV-|?Ht?9jOb+u z`a7;Tp$(hd`U=j)JOLdicR$#}HSlZ>PaszfDpuOi)#F+_Nu(`p4n!x6)zzta=|F%8 zeV6U?$h^Vp@14OBGO+7eHh|86wSZJFdo`&@gV_b5<2Bh1ud^yu0W(u}slPs}Uu5&6 zl=}<rweRMKZ@A_|kAM414qvBjt@2h;y)Dbb6+jtKSfY?Qwq8y;7IdIA z+*h5IGA`NkUG-Hu9*2x6zAC|n7Y=ed`?>}6E9{(fY!zc=q` z+D7?cba42)FaPo{|L+#S>9>=Ovs-ZKJ8Aa@3*;nrYc4UA%-iuVMy>$2L5sj_HX%ol zQr)cIZtVq~7v};>$0+9QE?@!=`Sv`K@`!_B1JZ zAlrQ{fZReBju0$co4L}Ct{9k3EZq))h1DnXa-QJPf;s^*3-+X%Em@16M?1me7*bCD zMpY$7!`jBNolTTv2+fRa<8=Oa|KuqzoGdM0&XR}2I5{4Su)4gALy-YnJG2G|k2~+Y z2ix06BbeJpGw%=^r5JEWQ+Se=hS=!aE&;J7baC?Cq`eE94PL39$)iF@D|EIaSR-ib z;m`&LWY1M!(IzJc5OxE&bKYS(onZgLb;g*}FUw#|V6I1-K$A~pp}=%5t6Mv%T1!9& z)yWy6vAZ&))N}!`_H5~5hgM)NCV?-3HHu;2#J24eOxUy!CIM~USpouq?d%_JK63Rx z{@?%pqU)q`6+1`OV`h}d^4DVugWC>z3 z_1$O}XH6hrq>L3OMo#f4RWFchk9Pc*p1q}~s*SCubj>x_{C-@l{VsNqhjKsFdvCuD z|M-hPog5Y%94Z32v^`(UXYiIlU5*jiclyi#mjGU+z}X4x-M_h=!XLTHr}4eMwwe}f zWb9}2IkyT+^8~%>51xK{WaqvQXMg=S;$(=_t-I~tT9#=tF>5+h-q_EbI77Dpatm3o zbme}nyQp9V*xYUmoxET3k!8?v!iGJuz)qmfc)kj}l`D0rV_aclB(Z&a^{*F=Hpl16 zU2GhpWEB*h92ic7*QNbbdF@a9>~DWR_frk&rubz0rJ%l5EUzprVSROlD$cxW?$I@K zY;A92v+3cg)Lq&T|Gupa%r|FnRBJk*=^c*JNut?ChR*nuP1d1C>;1sGP_3LurVhiSY6fo>e9|nl#vhqq&$94deXX=k^Z*D&R zfBnnfyf}yC2u8)I_-B3g0PO`($~{~uQn!{)H|2)zI_?xGxOir589N2a)wwLY?h>Kz zS*l$H>MWp>SYT&7U%`BoAn+%3w1WMX;asxVof{wrhsbPu-7mw$g>w9BjPod_zGOEU zy2ZrYEBCAQc0p!R5pHA;Y}`oiPLJ_$4R`m zpih#$*GfP~aYe-U(v#Im1tVLUykG0C>X*#OQLS3#P4Q_P=YH*X{`xI|J0oQ6PUnW8 zx^6VV>Uf;gBK35V;>Xo~06rD%V-l;wTxsb_UmX z36$0JOl7J@iTPVznsPE$(B47ilEB*-A+vGycu>VorV}i!tR$wuxj-Q z__yozxAg-+bB;~r0FjS!oFH&>V#!Q!V59m(uqssZnQW4oH-Sm!0agn9$+oTpb@~kU zF6Re0WT0tc=m`+IK7&Ri(0Js&J8%2NmtFbvH(J%IREEf+eL@vRLk>Mdx3gEad7ka=5cbG=!#vwvRQO`|1Yz>%G`51sbtt7^;rh&aX<^i( zkbGYRa&62v8;39CajY`5?VlW<3KIznVDw#VD*vE_ z8@cwq@5b~0;J4IA0%##KZ5-nQIo>m|E|;splhx<(Nf5WWMRn=`mZsw|4jtHs?b&=_ zsAE01{PV6t+cQA#6rT}6{W&q1_WJq(EG@628cz{J3SjBnv*4GeCu_Se{nq2QpX1nG zu1Bc$Za=pGatm3gTFX6L4S?Gd5R{0SE7h@O&cc@3X{iH_Cz9)nC zYSZ=bNE3TZBXr(_GOos$#I}=ZY`-+6iVM?vgr49q+2M^)X`3$Xooc|GgV&Z@i4AOJ z7nfC`T`wjr2l)l^Jz>slztxG66A+Y>Lk4IT*k$`XwU;fP+9HEJ7ZmD55%1Zv+DT;_ z;8K3*+nGIKk(t1zZ4Tdl{l^~v`v3ZZBl6-DJ10P=;I_&W)ag0mM*Jq`Tj_9PK}@Q* z9<4=~4Oe=+md~-;7a&k9vvx|c&OAHX(8&=X+p=j3Fqj=pppE63moo^mC_bEJ;RFRnb5Nbi(dMQ{ zAvz}jmt)lh7?Fxq;EgFy_(3njVsmo6@La4*t9RP!*q592RJ9=ql+XR9J_zEz;%m=4 zV`JWa-_h;C+tj-u^aoMT$c1FX(xS&!*9;B~R5Q{$HLFW1pB)vd0U&j4&&i4G$iTXd zCm8WOXlE14^#sdH%UD}oPhhXdpr)MD&^g(*Ic~Pk?viay*K}y9%B3v~cz%wp*=9^L z%wuYrc?wEA_9GzM#_^Z>Ak~Ie{B)dPzE5$Us;rT&TsFRjgAXc;DPSKV-yW1nYGUX?XBbiNj8gYE`bBX*8s3!$=O(kR4EF4 zW#)cLRZ| zJWzF1TYC2L+L)Ir7Y4-jVkM3JAoQKBjhx1_#&JG!(L~j14}f8f_?y%H(Y@sFWwK1% zF7Hg$({U-yTTxu}xV`fKxAzy&l3eGtIKIy*Xzq)1hcq)nOQy(BO;t9I@0+k0dCv14#&QCvG6AODBH!Rp!5UrCmu6M}TB3AjzQ^+B zCD zK!t1N)KJOFb%ecifF6tQX|Iuu$9mn)EpL3)_q`PyupY53^IOZz6aWO^sgxPKbuvlW zQ>_#S7HsDT&9RGsxhseA8#~9Ds@GE5L7AyD%N1j`)IJ13`PA4q0yqP1p)%DX^R^1W zF9{q9`_9_qQZ{Y5^vvy+ry2@9^mA?1CSi+3aj~TONXk>~ET6~Qe&UC5?)XVC-DN@m z$D52IE8sl;);P0->Lcvkez?!5Ot9E_JS->PBn;yeM{W~YZt zg%h%&npSYdp+nfe{|Ypk4W0v{={8ScR3u=LH-muZwjybhnH!Hr==J)TIkX@9p7ul} z^~$H)e~#-TxoOP`Rv03G3F#2KKyG*Jg1N2pR!fgjer^l!S4Mp>U}vh=ElR85ds|7> z%1}PI!12(*1}lHwU(k?t)fw@v)3e2 z`M)ExMOzS-T+=w>l0?&4vl5+;_}pkbMsGBc4@2W$FRydJB$wAl0xkr|5x@atlw{)Z z*{DpvIgca(iqTlihY5s|3UgZ7gIAF4N&)Vd5X_~OluTZ&LUD%uGL?~25d-0qS$VK0 zO)m-_VNaX^x7^8NE(+RY9dLzHFgOOm9vkqq_YNASpMzk~gbszi79k)DO@X-|bGeXl z#j;(^lMaDh3Foj^F1Qf$vnp`3Ub{?6!N*SAcjt?>+$umWH~+QiI*gU}-g5z9{&VHt zIfA-UMsN|RE{$2jR)4o!0lYHElhlV>&)G2Zp4o8SIwr|hkA{G|*VE@4ba0SR#$5LWtc{T;$$=aDv0zN@h zoxyNSP>J=89ya?E^pRq}JwoP6|Z%HP$F5+b%} z5!wZEyJJ_~T4v(R&g2!Zc!g}->hHQJ*_f1t5#_dma&iRh{>Zq(?URCKX%s|T!LbyK8Cc`%VCHptOgKGM7zGyOx$-mE z^I=3-X28(wQNq4GQ5wJX!Zhydoo{;eF#rT~p?cGX0Xpr?GBaG64G_WRQr<60;rd0n zPp-sNVJj2eay(cG+=a|^5hNfWRBwks&4AoCJ$4rOZytIG`{BZ$4ZxOtfHKQA=|i-9 z=BLy#L-un@q>_h05fkt?cmizo9Iim!RFk}vy1%$0ov=JZkYdR^Y&)`HVr*L+?i<_n?4bQr2 z4oRhodZS5D*=o1gmQk%#fC4=Ku&*vjae8fpqbJYc{*%Yq64I zX2v(v@Oo<^Aa?S8vwQs#Q^`Bs3s4BVICF&MBA+Vz6voIZNr$BjW}YKd20qk9D2G1zUIw zTL4f>r)pXL4VZNaK_p+x!g85mQ?UbqSisf#{i(~;FCdq zs{z&Z$!PHUH~i$wUo`~;lFey$C1zQY%ioanlnIbiD-N-Bu7bPWMs8N7vH)WF+zmMi7#)DX~xCDl;m5Za9p#Fd7z zizegO7wJxzEFk zp78|swVL;wv3XJCm1&RA9eLbw@&f+hLm$F@CyruyZ5>q3JCAD)9AW%lr$4~8SKokx z2d_jFSFy0?016*tT%;JfItCMmes2I5W%%}&e;z8;7?*39T}c^qZ3pQ3!wJ3TlGyJM z(Cq@b-LY#?Qf$N0VGA*Y3xVB~vE%;b2(Xf|un8WR;abjZEj5h0pv>fg6Tby%%VTGe zMd3*wfVTt(xu8f{_4B{tfBh?5d`MCf8jTiv(uRYc2nRG#flc{n)&v;Uc_-{CZeUyv zqq#=BD`xQ(a1l$Xm9$FW#!z^I9>6KsswOGm$iC@5z~->eJL`Os5hOZKV_^2pZFD-w zDVhM8y)4Vgw0SA7x`+{8Dk{(zuLQMP6$^7Sv@%IkiUo*viby_^5~7X~UD7Y3K*@nk z*!)fLSA`-|nWC{~VIP~tdO2v4gKiIONE{isqLi5mmOL}vpAb!7@4?rpjYwwfpe0Hu zAhi?;1A?Yrbz}z-8X|KC1io|#z+-L+7{`Xg{w?o(?N7Z`7$0G9HKIxYL>_vq1>c9F zY$ROHO||VIzzY569y}p}V@m*6&TTETbOPMAV65{n0mXXk?DN^a_IQi3u9tFb}&|5nJZ(3#q*8zvMaTWh@`#rerj!)o|_uhr|ZWlBX zMuDrTSdK8v3*2!1Q)oq!q;Uc7KFwvO`Qb1rO%HjgPaJ>|Zd zrz#~?0dcbKrzKT<+5hXk*FW9g;Us$sU(M6*`aUO7*2BNrBeC<0OiIB)_I z33{loQ`Kt$huo}8Oh8~|OcfZg)M`e=1Yj};U@8aK5yWnhu^{sXF0j%m6!^-zm4FKc zb$q|fBENtz(kl=@SPYo~PWv1NFaz;~%>wA&f9#$+zFqp~4A22!iI6}-6C%9#VO$m0 z%N8AG=353v23kTv!xrpZIdGqVZ>zGT>?b{E<5AU`=b zZ#XNdmQq``H2T)pZsi$gH)Lku>`mYx{|*|AZ#QP{10VRnlRxXTKI?st6uXg=fAJ?6 zcRF@F_OVVz1aXLKGw5urV{QEc?!EgCeC+m*V}7Q|@6MT(4GcysyYjnzc4c$AZEea> z-hlt}jb96rV}-d%W?GhF?{m2kK)w1^EfdDyF~%U3NEx;IK1xw;_58w z%^B3|E!1jlRA-ie$^wu!sSq8FCRkow1~Z&1HQfBU*Wu>Rxei;7PrqFW=iYF_xyJsv zi}#-^y~nQo$nMy+FfkBUZVnC}+kRG3wRKydeo~wf3{$vG7hVJ`uTlYAIGlkv^UDG; zKrUq%-nnn_eJgJM;x9e4e{u2q_q3aEqPWb)R9J_?I!Rv^o>yw@Z?~IaZkMU zzklz~z3#a$`JYGRZ%0ab(vt<{(%;1W5=1 zT^X;c)_SimOd7qF$Boh~uOJxzCIJE`xvb_xAbU*tZ z^K;4^e%8QhL}p<)35ZJ|P5_+z?kRF0xDLj%p7pFZUo87`x$QrEdez9(neeFFACehcUO9`^?f`{n zS`2)gB8pOsT@CjyPjKhmcTQQoPhxp(mFFezfZ1jpvyB?Azw#=y+Ivv1&!E|yLu+;) zT1!{MHxFPE*W~=go5Z!XWidMEjcl#v@$_e2g@!z!GtB( zi?Jrz35eTeg>u9KE@h^<)Y98Rm-YgPWoC_mD$^@ z3b#nuxS#mm@BFnhS@Ww4AM--L-s!PSny7d|%9RsQiw*}YRi~Y=xNxbAMTdDP&>WO;O8cIAjPdNdO>N*JDkr z#A;xcuL=6^tT)h(rJr?D3gmYM-`jxfvGHi|y4SwqJKtbFWkJc+fCgt{=u{AqTmM;E z2tn4VWF}mW>k7Tt%5h&d$_Wu+AD(Rwl%%1lFl3Z_-O5p8<>$*RoV}NUw5@DLRITa( zAY=^%MA~<_+|#GuWiP#mq4L~P9JFuIX)r!+yY04@K2ξkHY$8_D{8od4kaG4Ayc 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 IM6N<$f+C%xg#Z8m diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/stats-95b42796ede4f632b642.png b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/stats-95b42796ede4f632b642.png deleted file mode 100644 index bd003303cb95433f2d6585b427ff2daf51d07f18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 283845 zcmd3L_dnb3_kLTes`hMai&3+vJ*)QK+6roGt&-X!t-VK3R8XqaD77~=V=GE*HDiwi zK}5d1-s|%xe9z;N{E$Z;&-=d5xz2U2`+7#}>#C97dwB2Gty`oT>dJ<0c9Y-ou-p1&JYR9DqDS=xizc@?VnA^cf#5fp2)&7I!ogP;{L`^Y3GEdb zd5PvW;eKII+m`Xf9Jo!Z1g563_d8X+{s<~`+I(tmv^TdEr}_9>s^QHSFCkSfJs1AW zTTgoq+h_jpQ=9Ca%m*3fMXF^>nV*-e@w%o3%%*&Zmm>WKG50p6K(W|qWGwdE^)oo( z5L@UNDu>RtH2b4$C_QIU<}#B*95?_chL`rw!wofqGV;uLxbEo`Iq7#OH)kU7yPTUc zZ;#|;3`R#bb=EHo?L-)g3@PzHO!Fd)G9qOj;$M&P^|L%5N^+~pzZ$MyjeDWCA0UG+ z)=RI0<~_5lT!MLaXnysZ<)jr($8bKqjU81eDe zCwIL?wIxDdhOd3hII%m*XtC&^#_7>6xZ^xna#?7(7s<^R}wR2BE1^?Qy{JOldw+7$-c~Hz3<)ivuc64#o={Pob zEjB7D3SgzI3=A>rb|Rp~y7J$7Gi2@gEMd$eotG-ICQiik+lly6xfrr$!F0tqnQK)( zrx}Z0&b<7%D(Ip8>sebXL7K|``BrptosRFg6qDA~PS=!_jsx+(c8$%@XQJ z6=mhLK=!T|hK)5HB~Q*j5`9;kHJkBclq8JCqg1}gStl!3DCtI)w0w+ha}`_*7^6F~ z@v8#1E+S$^9;5LfUW9PIY(3$u4`ITs5S^U*nuVsbZ!PM&2#{a)o1NX!^aF7EYINJb z*Xox0FocY$cOA?l7KK>)-!BL?(?5R!XxMb8A_DNfzW;y(+38_ppI&o&)#KT$uf^XN zu|?5b)W#T7&5B=DJI^kQ--m+9)jwnbL>oz9Wbg>Baxb@+EbL$1=Wvkb>qY)a+I(10 z2AziLF9!V|r>9p4)VUY3=K@JmYdWkfJkDTR$t9AI;Bo&nM?>|;d-H@bU%cY505aZt ziM(eHx_sx}X%SQ@nk7dE?K?Z<$G|TuI?B{gB9Q}Q;EZgdnVx?D3dyTa5>eUWQEpi6eYv_(o(rm(yM^o;sr&Ey*{1 zM#lVhP@+dQDG&&Wf4M)YdgnQVX?#3tb6P`YQ})Vy5#jYUga#mU2vTLSF>iRFw8e7+mRdD>xXJ=-frT&a&3N`U18$l$@1vIsd~AX zcmqokkR*q@6!-^|W54Aa?tA=7GJWOu<;(T2QKeE-Cdbc45&=^?Ir+kH;4n_yL;A%= zh;PL#4iBrcdQ&-)8@z{IhVVs&o_E!o)C{xt^7gAkl3FUIbjW^~__~W&XGgAOYH+38 zvn8YBMYzTX_;o8ytfiSsdb&JhS@%<m zj8cXV@CK716O&qA0!_VhQC@*dEi7xap2Vv$yP;m3v{C7MU>pu95#SiQ zDqfCnoq&!Dz?I4}kmI+o9Dn=FAmh!Y^5wO8{u#H|(=ub93ewTt`)7VWY!2Db{`tAP zM_eC&Pn|b!2=K(@^Ta>`RSamn|TjPXF9jW5p79YQ z$JsNEL#2f^=B0xRWgly0dmAW9K{^1MsM<)sdb1TKZO3ghF(wm%-<958ZbV-W)u# z@>z#A*(nPiA?ZGznDp7uC;6|Y;5RnYTrTGRg6|ca2ceU>d@D}mZaDG9_K~abHBO~z zJcF@hWfUlQ(c}BjV$Xc1PxhgkKif?X^8r@Z`}C+~YGlGS zohp#U9j!Jpc~@I!m-QZVBNu?^1BB;~k=P=^v*$eLoMAaZ^{2O{qTPx#dG4vd18`=a zJhvg<)957kaHlr}Bz^sepR!}G!@s}$#)g!`g#!>OgmAVIQX3zVsoc(=&7b*)cmg7Eax#Eq<_r?47HZ8oop4$%8|2&EVTEq7ver-eU?`qqx#+6W)wy>>93?O z08x4ql+82fR-bv_>(013AKT;^P%vpxlmBRO9WfBiI+!si=3^t&%rH@y7m|X>%>{AX z0Yk7PGxcF%;_xYZw;CjW6p1U~{=$`C_B7bv%p*wKV;@$!!FQ8QxQ`)?iUGk=>Keym z$8t*yv<@BLO}8QFkkwkyq7F*5J?$oD#v6&|HcR=YT|Zu!z}Y|`$fi>Rrh4}AXAFLB zGS?Y1kW+4qXf)Cb)s!>ekxOj$qbGoKbgp+rtSqb7og%Gbo~Y8%pyq+FdKiMASHmN| ztd%R5c*Y6bhLtJa2DDRpD9w}6`nBx?j;70}y9N76rFa;r`(KLP)Y+h=DfD`qO7q5Y zIkT?{3n^E$RtsldboL_O%6>kg$MO)b?I-VB(uu$d{iYfIgePh8bG>}hIfNP9&jJ{W z2&auUI~R{w*bWoZRR|lZYH)olrXaU4TyH}(gqHlGGF)Npz~2+4_&RoV@}R(iOTw%k z4BmIbLD9w7YVui_UKP#`?_!>~GOP2^=8+5c9n#XDZEtXVd=$}Ki@tLI?dfoyDUl=Y zlCYLW^spf2m9VIzH|4Nx2czg?2(5%FjjSzdAXr_bL21Z>%CEIpCREc6D%+7lVCSXx z>d}LA3L8IYbShLqRF^8{N$T{QmCh1xyCn-IzVeb!#SE*j3SVfQjygtS)y)Uz6B759 z;6_o~v+bN&k_KkYKh6Tw)MbDvd%5r#XcbmQ7@GF?rjZRG71zDuD{hD4ERk!vjcl=W z>?gFl-^O;LxNGb6V&JYzma5Xi3wvfMO2rX%!j}y?p1S3058P8l zixEewg0Kvr*u-b5xcUv{s*2jj>u1qN-F5M2QtGdTHF=UNP{9jV*@r`?2VP<7ajr5S zEimNxE7iNXa4r#{>Aw#QznOf`nOro_VjUza~Fj zN0rJNlM1*;OgU}&&KcNnm3sKXAdSb>a(J>gcj`}7kmbi93(BxM5AMesfWtl&2|jK6 z5!KzJX380(kPXFJhB+d(V*Iq>^ZGe(pObT)diWgQF3TSLD*4xX+G#uGF1Ypg6+9Y? zv%F5tziCb>veyQG++6K!Oy&E z8?1_14@U)#votidzVu$7*kFXuVhT~i;t z1ZgD!G`|xb`*R__vJXk*oGzHi^!JR5FjNb0@Z|@T#NEa+Qxm#G!UvmnE`F9*xH7L^ zE-J$}jIpb<^&oSvfo9uS3(e_JwjH7s^H_0zqyYBfjSq5Q57XH#}U-RI3pp}XV zM8ag>p}3&4pd$I6u)VTef82u<$%518-eaV(oaq)0Qv0%SQZt413~z5z3}cd&266oh zBIn2>l4sn48OngDC*_ygLn#nD8=?BahRpF182hfKUeZ!dvKLo8D;$+2dyrBZ59I7Rm@@TF8+3*MSMr++8CU&G zWS3D1Yh+GY7p>*8VCLsS4*lOCQJJsP8;u4kx2jXpTy))dGVSg3xVl6hXGA5s&w#I& zx5DTVt4-A`aJS>&0XH3ydUJf9A=>n}w@PDIr36`$qwbJj?Z3^pE>kdh^CjVg7WngW zVp6zmOQC;?M>ubTm#wS^IJt&T0gpowJq`H57cu_%%zbo!x8QDcT#)OFgG2sa276XI zM%Bg2gp^mhJOo)LA$iveS6~$;udoYyM{KZynikyAHTqNZ|I?H2=$U15qd&+Lw87du z>ATDL?+N22+Qd{IP~Y_sHW993GK$#zY-rIL|Gg$TD#I5i>A>L-SEg}`AVUVk?*ZA&*&Qs19%bH6VCEO^iAZvA?{G_v{SJUDR) zSNiS0vEJI#cPDn)*7d{FupLOLLev*V4=)XU(HC{fr+ek0R|}yh%~=I}d^K2Q{dfDB z)5$s|6|p1Xt_b0KzH)83bv`XG)5R<^r#)=uAl!EwQ*u3~%{3uOh`;Dq=UkUv*MAZK zzl#4^EwzaOcbNp_u9utNv|Vu3H3|iroAT5jX-?IX!me5jrRJ@(dfvEH75uFv1uQ?{ z6zkfU<$ZX}B;gKe`2e5(yin<>s(T>QqhIZk2JqzaX!g|R_emsyc|H;$N|fUoHL-+^ zAy!cl|Eza8H36-a+@*lh6D8#g$cY`wa|v`psxm zjtIlP%vq&ekiV7pB7y9v&4_%n_>o&JvT?OwlB^sKGegGZw7ukr`}_0!rCdUM0UoRj zUteFCso_p%tuavXh-vkC^Mys|QOXxes%{f2WI(>979i)8JIr)ji^hY`p^sVHvOZ8gGgGR@gx?S2OR- zPWvuyzY7v>?^%MpQ?hl;l#U1e1!04)Q3=1M2G#DF0E;~q^yOcy)rsXzUvMsQ=kdg_ z^Sn=xNZQWl%W5h;jp9SMMsLFs<_ag&37h5rtV@}E0@SN4x!8Nf+Y@-8}a7o;49aYsl%ebMVSsaTE&e;Z+0K)hf zHve}LwA_BzY<()ngWo{8jJBTtM%~j_r44N|@Lca$-CzKZFooG9p z&!yA9j}9!Qx)I?2h+JKRanhwDnNU~MG~h#!X^UhBcS)@BU8+KPL%7nGE%e*C0&4!L zQxhNf^h7wilL_%Q7MeMJ5%y?qoU|SAj`ea8(@LsLgjsTiP~mUNJ!KEGt!bJO^qhNC z<~W*Wo&Oez!69aGT|u{{s^_Gu!In5uOnd7MH(M2*=HAuIKRqbmh1s?5RsSa$M|gid zlA(d9IIyu0v^&~{t95M_7HlUNR{V5GC;ntQv6pi|xD4pJiel;^%bJ>#G(f(SW8VrF zYk2v|fLATVnQ;U=TT8Y2EK3+9b zxl=IQpgIVv8#;;WnEEzME9w%#AOA>|F^OV!i6xr6srqHWn-mT9m4wufDayAH`vqxK zIe>;*SH|}BuseX2_ksSwt8at8cZyI&cy%+o70Oq8P`5Rj8GeAz$F(fKda01O#?$|^ zv^MZ;50F5i3?-jy{#m4g1k5O4C^7Bq`a;B&vpDy9T!qo~O!NSNzG8`d?5Dwu64Ao- zV5_WDz(I`B{CyJ=k@#}vm;u*VJy7sozZ}I4s!Qqd&SMbr4*H zn<^ggG+(3v@}r!+_>FX(AS@+mB^`*&}AoCVH6naAGg_AfOh^ z#_@dR{?<|}DKndLx&7+NmBj-3{68==05)bmTqb0XhyNhOgfhab;|*H!6@8U$x&?*M8y&ZOJUXQ*|C zE*0C{$;^9(6TZULJeb-i^D-#tj1Tf~15Cy}Sr+{@tN_zJ$!NZ{-C!)xbAH&|vwP2L z^6Fc=){1?Xv026o=Vc>X#knDT@)mA}gssQ3qyXiNq|} z@3K_>xmp;$sA8h3{R!jaAKlyuV`8-=1oPjp`M;+7JGB1je#WGaMlJ008@UNf2!45LwB!>p z+DR)YAL5J;5)mWFJm;ExrZw7jqEa;se5kRRrw4ff1+`dBMc5~|>N8i7myz}g7D!{N zJ&qXqsUdP@2Vwct&8Pfx4^fOAjw~_2Ai?DiX(tla%9**T`js2_LUqQ){rjN$vtZSbjepL@NVag_K z4@Bigl2fAEyf+f007osZX7>fZ%c}q6@jI3@WwVR>^<+i0|9+j2pm$xRDZNUm78U;q z=UYMS2x5T7G37O`VZ#%e`8x)b+_WeGH=_xC#ApSa`evXG6YT1HZ_2rv*}9!$ zNlaIRl`XCoT>drr)y6|Xx29kn{l6M@{+#Tb31t-Tr5b6#3R_q`{)8SI^2pt@U6!@K zMCqUY6Lh1HbWsi6yH)Cpgp-Pf!rJ0&VXlShp05+ebAL@yuiD}kRRQdNSP><0cZcj_ zea=^`0Y8Hm9la+fgcZudDQ%=B-b`G~*o8ra%|Pp1{`Jd%kP1*Q`_)U&lg9n7l4Zd(TQ`k)SpaW`w~1cyf@X*j`AE8S$?(4g13W` zN#rB|nu^)MnI4q>5e^x_OV73IWwH~Fd&E96FbM*p%Ml3A;{;^Lf47`rHl4!?`?W?uo zaAghu>jtkZ54bsZU4eiRIYpgDe;8|TtcSVjoDpqEiq8yIg5v$kEB+Gl1CF}16$>yXYA1Pft==Yhy zMYKM5iSxPqae%AU`o}=~$D?A2s>p-53uAs<3SD%|`4B(`X&n1THr<{&3g# zR9*OD`VL||`+B3VX3Tm)8`y+-DDitkUIQ7S{K2*Nf+_pk)=Bk-v41AbPo zKo*74sYQjEm$~=BT9B#4>qTy7`q63#P?l?zGMpjG080IiOmhPuVw%%aGbK%4=TQ=P zjM+!SdM}?|tDp&!SzF}t1jO5SoY<`1gHiSD=%NiLAsZ~*eq;ajXgv~&$^Tu}m_WO7 z7F9Kb7c__agnAfaJGlMSJ=SaDh2g2Zkw(;8C3s4?x|7zb)QrQhMeqUvzl+1yN1W=n zAglq<{97PHMH*90!{`|927PI3CBu&(KryR^cIt~KNZw>gfSh+Olm(t+oBbUxTk<#n zcBLZ#bB=m0!d27LGeFwVY<~BPrG}{CUFgz`GCRq|z4>8ecfnD{$+q`22zU z>CplKefPx+m18Ii8M2a|dgs`|A{u)(gySdOH1m_o8rcQI&kX9FTIq7}=hz-ALmnsj zYo1+XRC&6;owxyuLiKZ0bMd9Pc8AWcxAwYt-{Odm(Go6huRfMKviqhh|1m{msh7bG zI4eV!M@@rC-)G^4{55e~U++agGfzeE*b?WwCWZo`qT3#Al{zJd4Z^DtoCLk?+p(_h zA0(fe!0ftq@F6Z?U*Bqr4+HwuKb^n8Ui{z%8Fok0vvu)5!=rt#$uRvw#ltZyq@1lB zFKkG$8AwzLvxQR6y(jou!Ivusar9=P&a{UcbgZL>T?q-kQtOj(Yh?4B@b~N8kp3!o zdOF}aY&mGxdA)U4d6Dq>Gaw)8;wrcF>~nbizYEY4n_ShWaVbaje5X5&Gs)s28>|TG z`gIWCf~jxZIBbp^v)R>|h2kqMtxnu8Ze|*ME6uihDkkhKH2ZV7_IqFcV0LkUIxvPx zt3P4)>T@)u15%rqabE0cvu+h>Viv;rwQDswC{I=+r}CM^Uuv@{Mei-2k??|h?Mt_* zOyF7@-<6Yo#Mi#5Th;7^@~h06QW?Uc#c0{lJ=d2~ShFI0s!y_Qb(+XSr5C%sfVx}W zv2=E|lu;uExV&MlS7g-z2p@M}TT9l{f$z0frcQuJ2yy2Is=L+TYiPeFxe zr^24-8;7rG%E&2}$-+_iG88eI$oIex7q2}qz#Ccn=uiA(LB@AElB=Cpdzr>&_Eaw) z)#4JXaWF50+}}zV8upFvT@1Dlv+MC1YjG~oip%bMKYG_=&-KlJ!cX_8`{5N)eZw|? zLv#!kYjgb>E+ar@*XQ&3rzP76IcAi?F5DJ;nM(R-(x>?fn&ja{IM?Bzr~a(ixtmg< zdMD34F!J`9nE5*3)5CV7ep{H4s;MPkiKM}X6lAcyD9_1Z$?6$bnj3qEQ%KBC=Y5v+pLe!>DU zj&VAtC-7@$Wa|KY=O|I@@V^$BY-^O3pn}kXy=*fR&@M^E-S1Qm+Xj8Dy?u+5bMJGq zQb&ckxX@hKtHYp$wE>4w@%AE(rwvCEDkERBa+3+eYWZvlp_{4VakBdODv1z5RrYUJ z)iDAUSt;`S4>M_O2BV9V3yNcTRwl7?XJ+Jv*DF71h??cq3ft$NRlF-4t$njs;;U5r8_ z5gvoqe`ApP-h%2{Jz-AUz~B1Bm;70W3abqxnEAgMjURso+pQ{YdN^m(5dIHoJPj@H4jC)+(M6uKbZy4&#a%_!T}}IVl0*K^6d%Y1 zOBKzWe2R~~J!teKVAzf49wloN!9!y9EIX=H%|CYOI#Zz9v=U8<%S9SB#?UxnK=U-} zr1AS_KF6+wrTB~_=dt>sxk)SChvygecM{OU^O6LQ`AWGxl1}6QWFBWn0fsesS67<+ z19IN2WS;6h+CT+gLqKgt;Sh+y;Vt2Id|GitaPj7SwB~;hU;#>-?mDN)QjJ!mcqR2I zp-W_|e;Nv`z5-Tmy7jvx=8C)XMqYaqH2KIriJqBSBMcR7B06Q&y%J1ypW2hV*j&n2bbT^5b~ule8~hgMUJEWplVZ{l36ciFg=pN>RRp>n?Q?ZSUQht> zfAmV>s>mfR_*$cw+`K_hcaRt^a0c^`XhbTky@aoxhc{_{KDr132Ah9s!}d!h-*1_5 z_~2^MxJ@z7x^mIbcp|AK_2g2Puef=0M%ZP#LOgZ%`K%XQZ>7@e6hs7jZes^Wa4khq z#@2cf?dXd37!HGo`qPcp9}pA7J&)#Iu3e6Ux1{L7QU0&Dhear*jI`%%clKdV9G8$0#(eDd;yQ_vGuq z;W5_zfp7R9yrUxce{V^csuiE)NUAonlmc3zI#6Rg316$;Sn z`Y#FYNhT>1a`3daJl^Js*yDQwut*LTd}@}Eb+6vdJiZhZhhbu+Sg1D^;x&`yZL%JVqpVux(qQSQ*ZjCEmC z-s$VSZ-vDYyqB_n`zGG?n#N+D=j3*h$10>CMQE)l@oThT^WUY2uBK(#XbA#3Dm<50p zjjZ`B(!T&Hjn6P&2{E&LX=h;tiPB-bqR_Kyaw$_Gd@0d7fSD&#$ zV%pom9=wWFDo-!ECaNadacJ6aoCmth?`62$71zN%D61LxD9-6X>~~;L{S&q8W38+} z0_m^A0Jv(av?USt_dWks{RrQKI@rrMiE`o!Mpf>JiiHwFU|5zAHza`MB@>lPlU3J| z(m^bGH9$MkzYhH=EM!e5Sq4H#zGis3Cry8>X{5^JPrK)7nJdn*w4i>duB0AJL%E#M zQm3=@o;>y^s-bo2b70nAFHpkJuE`4=-Oj}T>g_WT7{yqXJ?&WiLH3}$eTSbGxxTGHwC;~f!j9_uE?{1WXCuL)WfPzt-TpjtWATC@L z0{5(5I){Vy^C9YCEt<*XN@&K%<2p3jVy^@6M}A$0`}UdkxL6*2o=`C;(sg7|C5Uq= zft_J%fk+kNwv}1>XGFTNMSb8bf1~y+WP{`f0^_?*o~FeaV@dfSK`4ahZuXy2ohMZE z5CRgTx#ii3K{sw2uBv{N6ULT(#{t4Q3X=`CL>_*ep1-oiY`AHOG8Dyyjh{lll&bm0U>N+ zx7k+tyJvGu0qjqId6aecG>LzRXI1~Dt@O=OgFz#Uv-)nNuw8?zSTSK9C1S6bF6{k) z-zb3pRCrE|n=79OG1Af+*_^(RGAx1r$#u~YvyJY6R!a^V+pYg|Ox$CkwZk|br67qIS0kl0eD-Jb{q36*=D#(Uy9SH47fD~FsCqnJsw@?BM5cSuZ#hqDXS z^H^DkakA6J9cyFdsIw9>3cK!VAcU3T4aeu{!Bws-*4Zif-6%85aCZ&r{=ZUX4F~pE zxkX%S7EMan(?5nxR<*d)P}do6!KEkjC^)k##!^oN7HvJ>sdsTrn(gPbQe^pMB#B}4 zx#}Vne7mP0J#v|K8J8C!dqwg%&NF%cF`YGFop5^b<_p>lUh*!j3yc42_wNM{YA2{BR$dF|y6Il>cn(oUcdTCLv_E*)N}%PTJM{3F;a_?OeSZ zV9EAIN4+(Y*=k#T{8q>_5yiwuaxI-x8Huj(wE`QRS2J2~nPhP6mILNx{a?w>k6%IC zc`$>8=vM(c-FX~Wi`2I{XQV7*>);JjOV;V+IKu5Vt}S2W2T<@{fBN~QqOY8YJD5b_ z>ZbK*+09v82FwG`eDV8Ff!6g%WLnVv5<{>{)+mDI{L&rbHnLFE;z>)8XR$shmz+>P z{=eFlb1!vPqZfC>%{ansyh@>#HoowQ-6OFJ%lH)bGyUpBT zi-6IqF=d+_psxomh9@h@&M^s8ffM}Z9&d(*6Za#M420u-$eb6KFc@^(cb_Yt^Ytb0 z$X;u@OGE`;AL`%?s|9HVkI0(YEn1J5>}q=_-ff+LRRBtJ1o{!v?%Yi)>v;1ynF5{ z&E5OO-1Bh8Sv$X5nERk&ob4H_!30)E$+zX0A7Y>EIq(Lf%>RjdnS^~e86PU!v^lr; z6~s01M{ZcdQ`6=|nJxjH9FU>Rk3J@d_C21OgT)9X{a$B6v=?!%)&?yd6O|X7#q+t%^ZmSRPUhHD9=V(!h`*yO1V#MDdQ^?a5|L8-G!ok55_&E zs-IIDR(g@_K=O?yeNU8|PxIWuzIT1|!k!y=!<+q-E~j*D1OViRrbMB3PUMM3CuM|w zS_K?4bp?=61(^hPtxivP=X6mZ{cCD%(Pezur+VjOZNtOqeO%Hqmlby(YJ{@>QWc^< z@euI806aS(on>_45Tcw)N`?G=Hv$nD@;VOmzl%#%FV-L0P5GOp&WPZBaQZ1}LU-Z0 z20Z#N)j%O>xd}1>`@$upeMy-Rb3n(Qxub$utZ18T->}_$O9_Ic4V_DR}!$SU+Tp^OkxPoQixwkIv=hlPhx?*xek3h10)RRCsij@!MhFHxIu^94TlAH=>ty%6)n13by%~d z92Ud#hKLJmjV|hrSYW$NbbZ!g@I~OWDG-_|Tu820!{44j_4#O3r@ikh zSu?!aA9BMkLY|KEL>(XFh10X_`W~&UDE|Hy`HF&{+3f5qK7;b0_SzF%KlPK=gBIpd zBcCKGDg~mDF-+D4bWr(EzR?|?)}5MRtj_2VJ3rbMx7UIkw;l06qkT{}sJ^JV_6BsZ z@OH^L$xaZt5I_rlz8k!Uu0U8#qZXT4h?}DE8G~^Y{#o(y^C@Sg7aJ8+Xj^=*w7y6M%i$)P-JFZsCn8#28cD%}ta7~S{C0sc_>A(u-tM4w z-reNJy6cAI&mg;^MX|9uiA%?^>BQgoxUIq);@CuGtiN+FN(UQxnfk5!_J3|Y2>BK8 zl1&29e_rUGMIQu-)Pq4j_$RgqX(#p2a*@uy+8ATAyz43W1Jxq)8 zL5|j4VWED}=mY>2oB{0|XE(GqW|s4MF_FD)AglPU*a^+@<7W+aoKj<>OU!b8I|Pr} z3g@*yd2N=WtVjHnexB?z183`CK{UJI zKj>?`kmg>R7#t*>6cJ>`8yT*gJR8?rUDoU*DTvOQT6k z%BoA(0b8T&5y!i$sZI-C0_s2G(cnE!zcllUmID<4(Xt781hu*pz;4(Y`RrCM5bi9}8VilDv z9LZalBH%Wo!j1agWiaYu?hTb)?FN(Pg0w2oqWp8GT>BtvKB4xcwCOoHO{9uPzXoB6 zQPlxk(Vxu|DnO4B^720Fgdyk|<5(|q)$3Z?2OfX{fIOFBQJ=6zI#dF6_s%^$y(h-IX129 zpr3D{(yMI0f3B_NL`i7%rTZ5J*&V=G>bYS;dwAsU)yMWRVcCF1+X1=}9KiGD^7ZeO zTra^gLzca_+7*IawW(Xf$DR3Mxf^f6v@aly9Zaltrp6E;p*P@kqiqV94WE_h|D&9p)Ga`+_KtU3*x!Y&ct+ijJ_rR2eJx-v z)uygOJOfE|eyFimx3pN4;JPxhdN_}_jf7TKr!%jr_&t&zHW6x-@Rt*>F@xwJ-Pz<$ zWfSf&=SQiwE(8U~Zk>aX$cbiM*>%oO>O*1_sJGb`vN~06FmrN6FD-n_8&P%n>K}-7 z&Ibt2cdoi#m6%&KJbo>_{wL)H2D-*OuL?OFX5_<BF92G2oWAzpopv&? zLUt1Hb*0HWQ^k~wtww6peYNdbr;(f=DR76TSJrQIuMT~hu3RE5QsA4OjbonO+o@l` z>|E9yv^W@=uT+&zvZL*l+?!5=ax4em;&PU77q64>UnF_@PZm3t$X zR!c@0Z5r(8m!I%iN#(h8aR_w1Mjs`)yYp?yo95T($oTia_jRI>c;+h`Fxnbv_hQzX zY=A47!;e}yEnx5a>XTq=?lpi@0{-W)F&UxK)6W41lT&t^W}YIN87B5?c&b(JM%<^R zFJ$+TzbXacWpU-Yn2fT`jVR%L*cOZn7czFY&W3*xUIkc zvVD(b-38<-PUC^OfeG-^e?IGa{1}k5BGQr4uf4%@kte(y(2u+`l+=5>p$WhG1Lt7X3*7T6^F8u@-M z=%329i?P$76o*()fkP@`a&_DRe&y(lrkFEx*KK~}q3eiZKYjGqDurxkj832H&h`#5 z@_o(fiEo9RAk`#=+ulJF=fuYEZL++5Fue|t?)H!119~{}!d===Rz7KZ#tP2uXU^|fb@3hR`A(b`V$bKG$c)K~WkgpSou<~CsIq{Bez1JK>?>W~*_eU)ID`xe= zDc$el-PWu_N1%UsJyebIBeU7Q9OA8cQUD~ZJ>&4k3}|SOSYBCSM;6*KM1;+4gDq4N zJfcG{i#q+dWvHSpVTqy~hQfNKsc@Gwe-97cP)qmCd<#^9L zgaNCnw)Df1V{M=}RQrwoJ8M!;b4Kx(l-V`6zgKrTa=O0~uQ0o_B@7hX*poD%wcjHN zapMwgOn~H;`@~a2fV5=0m)saJQ>JDgCOFp?w`KU&K99|mUt~N3oZ0&ri^KRQvFxSS z@6uoU9yU~-6(d=HcMgH~>KVPrma8HDj{`pEt`+*{A{%=_{2v2ND-|f-f8&VNd3;c9 z^=P*Gp%DI3{a!6>!3@a)f90_3dQ>T_T@Uv%nO>#)dq#buOa77cBpTJW`?Pd%jjT|* zVw)08?mvxl0_Mr}qbdg>QfC(`fWBI8$Vi*|)AB(7?KGDebK5jDXCggfY|!>T$_BWe zKC#*p_$IH}%F`9$&u{8c#rfEHEtIX!-?{kt9jDx^usBzD&(2ov;m@}wa_}K`@j)sv zQDUmCLWmz_b=$LmR=WGbuIwUxwH3zJ%t~5mdU~x8fdGLez&_2QfJUJuEDfI5P820u z!A)#AX6HsZ0jV5q2ZOdBFq>O?UV+h*_u9zw>Y^nU182?Q8<))YBAmGS_Pp8R$3SkW z7W%=w;wGc&uJs7Zl((gOIt~2DtzsX@Uft9WXxQ@Fa5}Be*!fQMKmJK<0QI$oearUA z??5)EzZpTWwJ1O5WPDF0V-#US|6hzx2)%1T4@peq<$(|A#f zRRnH8TidDL*`!;K=qb+#W&yUu&7#`@uu?EmQ+A!PKn{!x!?56TOKI?J)yspj1Y<)} zxlg8YS>*6fkB!$Fo`=R7r+%25I}w*y5C8rAxAV{ZmhPoB&Vxm9K7u*I-uK*TDBo9+ zGj8f4;Jsk{VBC%cjjm6dNCU(PRy#4wW zj*{vTn>vm!%7y3>gz|M0@$6-n}QaDZk0Eo~c$%TxHj! z3{fwJT3GV?RnBP$RpPx_zj_q&ePUJr!6>IUr>GvTtwqApY+a6DPrU-n-dBsFu;H7< zP*qh2b6BQN!vc@cRs@k%uOm!KeDcW-R`_%Bbb57z{KfcIaVNL!o9vfX&F1VJ(^_hQb;xnKX)7`rnf4ctW|IKx{R3)$chW#-ezo%q};=#5HYX4G6khF zrWTaymr4}}ME1@0PV>ij9M5-*JWln#-~4sJ&Uf1>;JA(Npq6R#7N}fqF6MnK<{Qyx z}J1H=RSnA&S zJ1YXbRJ**QC#;Z)oox}^RH|;x$S!!+c#2o88edKqW+Bj6jxfZsZsXwu(K}QwPh_+=#lNd%r%O&G?~4` zizT=nD{SZnT=pj0DQK;UM^%D5+OYGD+KWB|8hujm381vH$0>i--E{UAz-Y`D16?XW zU)s>^hF)8~=VsZFdEZI4eV|}&1kg6!Wmv6BvqF7cw$6&`PrFLrvmt9D^@q7pLc|S^ zi*l8-VY56o)Y(!8)YfkUC^|H*J}Y=I;dYn6>jFSey#7K*i_sKNw8Dwz<>UGQoKz%l zsxd+4il65t&wEXkkL3y?oXTcZqw~QkD<*lR2SHa_Rhd+FaI1ps9X@+bA`8rSv{!=N z2tu~^;JM$yznqtUOqkOh;z&3y|`WBqd@7iDl!x|sLfS;>R**=!SOLv|2 z!g%kZv>kkOjFBL+qV(DhVrLtBJd-UwNUcxhK0LSGkrbgu-pYP)A10vWe!*~Jd`r`> zb(E7(4}T#s@JegSYdb|AoT=cRuGc!G5>j5WEANkK^j^FCza~|Cpe>ujT_F;Qqi6!| zwb%SkGo@P1zSM4jzaTMl;x=kiD}l?CKJy-N!2L`$E;>iIFq)%IsvJ^~N$-OJ5x1cw z`n5HNMXm=3hUj+cJRfc2QD3$#2ZJ~-*)2XQr2L?2|;k?z#a$#hKjfF4_S zk#Gv)ixgL=%a4KH3X*{q9Jb!)i>FYu65DOG)4|i=VJv}%ll{WwT|hAcb=&ia!s|vW zo&%JI+Q9NNmL5@;0NtJrf3{p4l-%+?N$yuPX{?V1z_PdU(= z`?q^{jiHkjXDDx*NyBbwiAxAUscp^hQF4Phf>I=FS&GE}>RA&L=t7bO?JszChh2Ki zKUbmy-oz~=zb-4!8CB7J+~%Ut-f$XQjM#V0>V2eJ8p&cS+q*9-kw>aQ(wYp|4pHyF z;&Oke7nU!bYGmnakuat;w)(ki9HUGoC`SU(hFEVex~e~&Y^8QTz+{0CPj~iz!qWi= zN$|-5`ZBY@&BmWSEw-k-WY|3zx9)Mt5sXVw`*K?H;x4E-*aaP#?oYVuS~tqZR~Zo!gX;FaUruc}J=%U7$pQx<9RDpYzFp@^l<)z3q=8^o-)z`1+>2O$yr zbRXeX@uYBHwJE>-POp1oKNtgwI%#(1!!H*LTTbuJ^rz#`<+P$^LFFl5+eeGJZ*NZ5 zL<_Ey;+?L0v_k(MQ|}$lb{qYVcTiPrl@?X2NT^!HW3L*mRkYRGqjp;*H6pfJMHLmh zR_&@iLyQ!)XRRQT)D8);gNS_f`TRc5=Xb9AkN01>a^2UNuh%)}HqgYVTpy9sk?R@E z7V-om0jK?B=l+dlrQ-Ltea%@DiFM=rVo}vQKW^Tf;aB^oU++HcjL%hxlroFeSth*$ zO&^bd3B6wTkNtjDet_(E#P2ezg7byf94Do2R@I(esdEM{rOcBM)OKntjVRlZf6{CA6bq?dr@#MU$Cp@{=dk#gUWH&Ge z!Z}n1|7VqK*`9hbNc(<4dL(aKt^SHr^|g4>w)XA6EKFB<#Tk;hT`Ejyqx`_Ly=E(J z5Ph}Ur?~aq$b_9`;+YzcZSL=Y$&Q#4deGItGl6}1(ZYSxo|5`ol!Sb5L_l4UUKGXKu z@E=?7_|%6?D+;@hnhpfh1&QoE*}XKL<1gK#c8vY+hMWrhhG~qIDHl62Kg&4K_yd@^ z=iY7F*Bo52D4@J}%4^d^Gb!yOS0vhc{m4QtmPcCv%rxL$v(R?Pq{xp1LG!xB3MXLb)DhC z2fNg#TP|EgQ^|aYRavm~T9%EGf&s6;4G0XJFIKcIP)7`)M?lw$K%wtEG zXiI3%*wi3Lo?aOV)Vs`gbMXR8(DR6Y?gw;>Z!ml4Jx-$g`8IW?0M+y(;V-lX!iweug4Mzlsksju|4E!oA`}TeBefeDGf#) z4dt&vPGV<~~u1_ZVEBoF8;jkBt>2XH~I z&Nt~yt*yb>p6&!}B$v47-QV{Un}KOGsh;6bfD_A+C)r*`7!@7m5v;R) zz&jCWm3bz)o8kY0xPJ-uLt%cUJ?P-gRyh}W&&sL~0WSkxe=HP0IK@#3rjL&ito3&580#`HX zjm6GW3rid3&npu(>&^)>A8+X1(V69H={5jZK;4;L*TvPHVEJP7xi`~SEHCY>CX`Ji zf&?pyw(Pw)bsoF}R^QJx_Dq&bzMJ@YZ?;v2xo@on|JS|df-s4S0zXAndr3h@3z!egi$L8N|e*^ z!yJ_A(GjtFP17<_t*qMm(=N5WmH=`s)k=)P5VpB$LQ@?S)N$69A+Z| z_&j$8W4ygut#5oJVaQ!Yl#j5(Wciy`TKmoN!PjeW;7SwB8Tj;WU#%C|j^L$Se&#=l48XnN@I#c@+vJtYloC{|$DUTQtro1tk6!FOu`_Cq;A5QDQ)dN? z0loli_ug7as&&`vx6Ui2d@-BulZ$@rs;A42xzAp})p`j?Jdl9q_p6IErG_WpNc>01 zkNFCHwWAhSbHx?=6}jk1E9`p&^kh**_l}^MrTtVjX@*=`*5GYu8=QfdC)%iQfrp3d zbFLiylRFckb)sq=?;4Nv%x$6Jyj;7XIWDpVonCw;b~S-Ph!^n9S>wRz7Nkq4~Nn=j?eloJ4@8 zxH7^{{PwWqt&!e21-l(w;^lxEGtKPPO^9i(Hy1fi(sw#5N?lndg%FzCI{U0ryl9{A ztd(U@qyxFL4A~hjeUH3?Lj8&HS?M#UtiYj}dzO`%d{+TJuB5IPQhAxg2Zf)vS?%sP^ z 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

              *<9h?gOoI{_OAj0~ReB#XgS<@8 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 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/videopress-9c064bc7b89c386e5e50.png b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/videopress-9c064bc7b89c386e5e50.png deleted file mode 100644 index f38227dcccf3ee34640e70af2291e1e1556e725f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226267 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

              %OrMxH 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

              !I%zCgvKAdsW3C4F>m;BPExbK_bT#i#bUNy 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 Jsg$z{`#-GozBK>< diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/wordpress-1fc3e0ba6c52e9707900.svg b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/wordpress-1fc3e0ba6c52e9707900.svg deleted file mode 100644 index b1cd75b6..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/images/wordpress-1fc3e0ba6c52e9707900.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.asset.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.asset.php deleted file mode 100644 index f2d8d8c9..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.asset.php +++ /dev/null @@ -1 +0,0 @@ - array('jetpack-connection', 'jetpack-script-data', 'lodash', 'react', 'react-dom', 'react-jsx-runtime', 'wp-api-fetch', 'wp-components', 'wp-compose', 'wp-data', 'wp-date', 'wp-dom-ready', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-notices', 'wp-plugins', 'wp-polyfill', 'wp-primitives', 'wp-private-apis', 'wp-url', 'wp-warning'), 'version' => 'd453c42f6395d98c7008'); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.css b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.css deleted file mode 100644 index 30f7d9e4..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.css +++ /dev/null @@ -1 +0,0 @@ -.activation-screen-error__message{align-items:flex-start;display:flex;flex-direction:row;margin-top:calc(var(--spacing-base)*.5);max-width:500px}.activation-screen-error__message svg{margin-left:-3px}.activation-screen-error__message span{font-size:13px;font-weight:500;letter-spacing:-.044em;line-height:20px}.activation-screen-error__message--error{color:var(--jp-red)}.activation-screen-error__message--error svg{fill:var(--jp-red)}.activation-screen-error__message--success{color:var(--jp-green)}.activation-screen-error__message--success svg{fill:var(--jp-green)}.activation-screen-error__info{background-color:var(--jp-gray-0);border:1px solid var(--jp-green-0);border-radius:var(--jp-border-radius);color:var(--jp-gray-80);font-size:var(--font-body-small);line-height:calc(var(--font-title-small) - 2px);margin:32px 0 8px;padding:var(--jp-modal-padding-small)}.activation-screen-error__info>p{font-size:var(--font-body-small);margin:0 0 1em}.activation-screen-error__info>p:last-child{margin-bottom:0}.activation-screen-error__info ol>li::marker{font-weight:700}.activation-screen-error__info a{color:var(--jp-green-50)}.activation-screen-error__info a:active,.activation-screen-error__info a:hover{color:var(--jp-green-70)}.jp-license-activation-screen-controls .activation-screen-error__info>p{font-size:var(--font-body-small);margin:0 0 1em}.jp-license-activation-screen-controls .activation-screen-error__info>p:last-child{margin-bottom:0}.jp-license-activation-screen-controls{background:var(--jp-white);display:flex;flex-direction:column;justify-content:space-between;padding:32px}.jp-license-activation-screen-controls h1{font-size:44px;font-weight:700;line-height:1.4;margin:.67em 0}.jp-license-activation-screen-controls p{font-size:var(--font-body);margin:1em 0}.jp-license-activation-screen-controls label{font-size:var(--font-body);font-weight:600}@media screen and (min-width:780px){.jp-license-activation-screen-controls{padding:64px}}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-error,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-success{margin-top:10px;max-width:500px}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field .components-input-control__label.components-input-control__label.components-input-control__label,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-error .components-input-control__label.components-input-control__label.components-input-control__label,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-success .components-input-control__label.components-input-control__label.components-input-control__label{font-size:var(--font-body);font-weight:600}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field input.components-text-control__input,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field select.components-select-control__input,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-error input.components-text-control__input,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-error select.components-select-control__input,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-success input.components-text-control__input,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-success select.components-select-control__input{border-radius:var(--jp-border-radius);font-size:18px;line-height:24px;margin:0;min-height:48px}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field input.components-text-control__input{border:1px solid var(--jp-gray-40)}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-error input.components-text-control__input,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-error select.components-select-control__input{border:1px solid var(--jp-red)}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-success input.components-text-control__input,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-success select.components-select-control__input{border:1px solid var(--jp-green)}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:active{background-color:var(--jp-black);border-radius:4px;color:var(--jp-white);display:flex;font-size:16px;font-size:var(--font-body);font-style:normal;font-weight:600;justify-content:center;line-height:24px;margin-top:24px;min-height:48px;min-width:158px;padding:13.5px 45px;width:100%}@media screen and (min-width:480px){.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:active{width:auto}}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:active:hover,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:hover{background-color:var(--jp-black-80);color:var(--jp-white)}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:active:focus,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:focus{background-color:var(--jp-black-80);border:1px solid var(--jp-white);color:var(--jp-white)}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:active:disabled,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:active[disabled],.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:disabled,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button[disabled]{background-color:var(--jp-gray);color:var(--jp-gray-20)}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button .jp-components-spinner,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:active .jp-components-spinner{width:100%}@keyframes rotate-spinner{to{transform:rotate(1turn)}}.jp-components-spinner{align-items:center;display:flex}.jp-components-spinner__inner,.jp-components-spinner__outer{animation:3s linear infinite;animation-name:rotate-spinner;border:.1em solid transparent;border-radius:50%;box-sizing:border-box;margin:auto}.jp-components-spinner__outer{border-top-color:#fff}.jp-components-spinner__inner{border-right-color:#fff;border-top-color:#fff;height:100%;opacity:.4;width:100%}.jp-license-activation-screen-illustration{align-items:center;background:var(--jp-white-off);display:flex;flex-direction:column;justify-content:space-between;padding:32px}.jp-license-activation-screen-illustration--wrapper{display:flex;flex:1}.jp-license-activation-screen-illustration--wrapper img{align-self:center;height:auto;max-width:100%}.jp-license-activation-screen-illustration--support-link{flex:0}.components-button.jp-license-activation-screen-success-info--button,.components-button.jp-license-activation-screen-success-info--button:active,.components-button.jp-license-activation-screen-success-info--button:visited{background-color:var(--jp-black);border-radius:4px;color:var(--jp-white);font-size:16px;font-size:var(--font-body);font-style:normal;font-weight:600;justify-content:center;line-height:24px;margin:0 40px 20px 0;min-height:48px;min-width:158px;padding:13.5px 45px;width:100%}@media screen and (min-width:480px){.components-button.jp-license-activation-screen-success-info--button,.components-button.jp-license-activation-screen-success-info--button:active,.components-button.jp-license-activation-screen-success-info--button:visited{width:auto}}.components-button.jp-license-activation-screen-success-info--button:active:hover,.components-button.jp-license-activation-screen-success-info--button:hover,.components-button.jp-license-activation-screen-success-info--button:visited:hover{background-color:var(--jp-black-80);color:var(--jp-white)}.components-button.jp-license-activation-screen-success-info--button:active:focus,.components-button.jp-license-activation-screen-success-info--button:focus,.components-button.jp-license-activation-screen-success-info--button:visited:focus{background-color:var(--jp-black-80);border:1px solid var(--jp-white);color:var(--jp-white)}.components-button.jp-license-activation-screen-success-info--button:active:disabled,.components-button.jp-license-activation-screen-success-info--button:active[disabled],.components-button.jp-license-activation-screen-success-info--button:disabled,.components-button.jp-license-activation-screen-success-info--button:visited:disabled,.components-button.jp-license-activation-screen-success-info--button:visited[disabled],.components-button.jp-license-activation-screen-success-info--button[disabled]{background-color:var(--jp-gray);color:var(--jp-gray-20)}.components-button.jp-license-activation-screen-success-info--button .jp-components-spinner,.components-button.jp-license-activation-screen-success-info--button:active .jp-components-spinner,.components-button.jp-license-activation-screen-success-info--button:visited .jp-components-spinner{width:100%}.jp-license-activation-screen-success-info--product-details h1{line-height:52px}.jp-license-activation-screen-success-info--product-details a{color:var(--jp-black);text-decoration:underline!important}.jp-license-activation-screen-success-info--external-link{color:var(--jp-black);font-size:16px;font-style:normal;font-weight:600;text-decoration:underline!important;white-space:nowrap}.jp-license-activation-screen-success-info{background:var(--jp-white);display:flex;flex-direction:column;justify-content:space-between;padding:32px}.jp-license-activation-screen-success-info h1{font-size:44px;font-weight:700;line-height:1.4;margin:.67em 0}.jp-license-activation-screen-success-info p{font-size:var(--font-body);margin:1em 0}.jp-license-activation-screen-success-info label{font-size:var(--font-body);font-weight:600}@media screen and (min-width:780px){.jp-license-activation-screen-success-info{padding:64px}}@media screen and (max-width:480px){.jp-license-activation-screen-success-info .jp-license-activation-screen-success-info--buttons{text-align:center}}.EiaNctK1_P9pPqOeiaSI{align-items:center;display:flex;flex-wrap:wrap;margin:0 auto;max-width:1128px}.ogHZg_sJCljylz3VJfsf{display:grid;grid-gap:24px;grid-template-columns:repeat(4,1fr);margin:0 16px;width:100%}@media(min-width:600px){.ogHZg_sJCljylz3VJfsf{grid-template-columns:repeat(8,1fr);margin:0 18px}}@media(min-width:960px){.ogHZg_sJCljylz3VJfsf{grid-template-columns:repeat(12,1fr);margin:0 24px;max-width:1128px}}.zv7eGvijKRkbPVakubHw{grid-column-end:span 1}.VoJNoiya_1ck3_kXS6_C{grid-column-end:span 2}.ecv0NO526NoTNbpALA1A{grid-column-end:span 3}.OfBdkceMzeHvRbzhqDlP{grid-column-end:span 4}@media(min-width:600px){.JLb3NpEKN8pOaWd7K1bu{grid-column-end:span 1}.fsMPGqPKE4mjMIPFwl77{grid-column-end:span 2}.DIK_zdaGAQ09eKspBJ4E{grid-column-end:span 3}.shXYpxPu3WCJsR8aOHtz{grid-column-end:span 4}.s7ElrOqG_yGd5SIfwqOR{grid-column-end:span 5}.Cxml9uzGvArAL8_RDs_p{grid-column-end:span 6}.aANxBKDGx72eDqU0iUPj{grid-column-end:span 7}.XxyzuTY3mnQcl9EGZadm{grid-column-end:span 8}}@media(min-width:960px){.Sfo4WaSNIWInJ93Abd3w{grid-column-end:span 1}.tQS7SKUGrU4THhWMysbo{grid-column-end:span 2}.I94U7mpY4h16pcOksZNF{grid-column-end:span 3}.uWMb9k77kQxBdS5MTt0s{grid-column-end:span 4}.rKwEEZQxK9s_POMg5Jss{grid-column-end:span 5}.UcPXX_s06IPCkF7ZjH3D{grid-column-end:span 6}.CrQdtiCFkRbzY6K2dFvt{grid-column-end:span 7}.rEUALOmOdUBXO0Us871z{grid-column-end:span 8}.NqXa9TlcTEviVsB53hBV{grid-column-end:span 9}.OnWVeiQiwgQ9lzdGPW66{grid-column-end:span 10}.D2PkTcy7b8u2K9QXY6VQ{grid-column-end:span 11}.EcqBhzAyxo5RDc2Y6m7K{grid-column-end:span 12}}@media(max-width:960px){.gB1mWzHOM38d80lrhBRX{display:none}}@media(max-width:600px){.KNQXLP78ejczOkour3zg{display:none}}.rBVbaVWBnBRtTMrUKZxm{border:2px solid var(--jp-green-primary);border-radius:var(--jp-border-radius);display:block;margin:32px 0;padding:16px 64px 16px 24px;position:relative;text-decoration:none}.rBVbaVWBnBRtTMrUKZxm span{display:block}.rBVbaVWBnBRtTMrUKZxm span:last-of-type{font-weight:600}.rBVbaVWBnBRtTMrUKZxm:focus span:last-of-type,.rBVbaVWBnBRtTMrUKZxm:hover span:last-of-type{text-decoration:underline;text-decoration-thickness:var(--jp-underline-thickness)}.rBVbaVWBnBRtTMrUKZxm:focus:after,.rBVbaVWBnBRtTMrUKZxm:hover:after{transform:translateY(-50%) translateX(8px)}.rBVbaVWBnBRtTMrUKZxm:after{color:var(--jp-green-primary);content:"→";font-size:24px;font-weight:600;position:absolute;right:24px;top:50%;transform:translateY(-50%);transition:transform .15s ease-out}.gfM_DIJrVbRhmKdAphIm{background:var(--jp-white);border-radius:var(--jp-modal-radius);box-shadow:0 12px 16px -.5px rgba(0,0,0,.15);height:max-content;margin:3rem auto;max-width:414px;overflow:hidden;position:relative;transition:height .25s cubic-bezier(.59,.37,.18,1.19) 0;width:90%;will-change:height}.gfM_DIJrVbRhmKdAphIm>div:first-child{padding:0}.gfM_DIJrVbRhmKdAphIm *{box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}.gfM_DIJrVbRhmKdAphIm p{color:var(--jp-black)}.gfM_DIJrVbRhmKdAphIm .zfJfONxRAw0fHjXUS7LN{display:none}.gfM_DIJrVbRhmKdAphIm.pnwbCuWbV0PNQr1LFpRh{height:614px;transition-delay:2.15s}.gfM_DIJrVbRhmKdAphIm.pnwbCuWbV0PNQr1LFpRh h2{margin-top:0}._j4GWTmW5psCHFYh6R0x{align-self:flex-start;margin-top:var(--jp-gap)!important;padding:8px var(--jp-modal-padding-small)!important;width:100%}.saSAjv8yulVXQDoqDJEI{font-weight:500;line-height:110%;margin-bottom:8px}.O_hcdbeMivIhBn7ApDnS{line-height:140%}@media(min-width:760px){.gfM_DIJrVbRhmKdAphIm{height:740px;max-width:1360px;position:relative;width:95%}.gfM_DIJrVbRhmKdAphIm .zfJfONxRAw0fHjXUS7LN{display:block;left:64px;position:absolute;top:64px;z-index:99}.gfM_DIJrVbRhmKdAphIm .zfJfONxRAw0fHjXUS7LN clipPath,.gfM_DIJrVbRhmKdAphIm .zfJfONxRAw0fHjXUS7LN path{fill:#000}.gfM_DIJrVbRhmKdAphIm .zfJfONxRAw0fHjXUS7LN path.FCnyb_xCK7DhJ63p6TEd{fill:#fff}.gfM_DIJrVbRhmKdAphIm.pnwbCuWbV0PNQr1LFpRh{height:740px;transition-delay:0}.gfM_DIJrVbRhmKdAphIm.pnwbCuWbV0PNQr1LFpRh .zfJfONxRAw0fHjXUS7LN clipPath,.gfM_DIJrVbRhmKdAphIm.pnwbCuWbV0PNQr1LFpRh .zfJfONxRAw0fHjXUS7LN path{transition:fill 2s ease .5s;fill:#fff}.gfM_DIJrVbRhmKdAphIm.pnwbCuWbV0PNQr1LFpRh .zfJfONxRAw0fHjXUS7LN path.FCnyb_xCK7DhJ63p6TEd{transition:fill 2s ease .5s;fill:#000}}@keyframes OmAVpCQ270MqI4IsT9Ky{20%{transform:translateY(0) scale(1)}65%{transform:translateY(16%) scale(1.4)}to{transform:translateY(0) scale(1)}}.Qn5xayjI_jH2m1d6BEoq{border-radius:var(--jp-button-radius);display:flex;height:50%;justify-content:center;min-height:400px;overflow:hidden;position:relative;transition:height .55s cubic-bezier(.59,.37,.18,1) 0s;will-change:height}.pnwbCuWbV0PNQr1LFpRh .Qn5xayjI_jH2m1d6BEoq{height:100%;transition-delay:.65s}.pnwbCuWbV0PNQr1LFpRh .Qn5xayjI_jH2m1d6BEoq video{animation:OmAVpCQ270MqI4IsT9Ky 1.5s ease-in-out forwards}.Qn5xayjI_jH2m1d6BEoq video{height:100%;left:0;object-fit:cover;position:absolute;top:0;transform:scale(1);transition:all .85s cubic-bezier(1,0,.39,1) 0s;width:100%;will-change:transform}@media(min-width:760px){@keyframes Axe8f2LgqEBZHVcsRgY5{0%{animation-timing-function:cubic-bezier(.86,0,.07,1);left:60%;top:32px}50%{animation-timing-function:cubic-bezier(.17,.84,.44,1);bottom:32px;left:32px;top:32px;width:100%}to{left:32px;width:40%}}.Qn5xayjI_jH2m1d6BEoq{border-radius:12px;bottom:32px;display:block;height:auto;left:60%;overflow:hidden;position:absolute;right:32px;top:32px;transition-delay:0;transition:width .55s ease 0s;z-index:3}.Qn5xayjI_jH2m1d6BEoq video{height:100%;left:0;object-fit:cover;position:absolute;top:0;width:100%}.pnwbCuWbV0PNQr1LFpRh .Qn5xayjI_jH2m1d6BEoq{animation-delay:.25s;animation-duration:2s;animation-fill-mode:forwards;animation-name:Axe8f2LgqEBZHVcsRgY5;height:auto}}.iBMDoShSmqpt72YfJb36{padding:var(--jp-modal-padding)}.iBMDoShSmqpt72YfJb36 h2{font-size:clamp(1.5rem,-.7353rem + 4.7059vw,3.5rem)}.iBMDoShSmqpt72YfJb36 p{font-size:clamp(1rem,.6974rem + 1.1696vw,1.75rem)}.iBMDoShSmqpt72YfJb36 p.eQG1KKK8jjKtQyzfv573{display:none;font-size:clamp(1.25rem,1.1491rem + .3899vw,1.5rem)}@media(min-width:760px){.iBMDoShSmqpt72YfJb36{bottom:15%;display:flex;flex-direction:column;gap:64px;left:64px;padding:0 var(--jp-modal-padding) 0 0;position:absolute;width:55%}.iBMDoShSmqpt72YfJb36 .l35bIyiqYJiZ6tVYvJtC{align-items:flex-start;display:flex;flex-direction:column;gap:16px;padding:0 32px 0 0}.iBMDoShSmqpt72YfJb36 .l35bIyiqYJiZ6tVYvJtC h2,.iBMDoShSmqpt72YfJb36 .l35bIyiqYJiZ6tVYvJtC p{margin:0}.iBMDoShSmqpt72YfJb36 p.eQG1KKK8jjKtQyzfv573{display:block}.iBMDoShSmqpt72YfJb36 ._j4GWTmW5psCHFYh6R0x{align-self:flex-start;padding:16px var(--jp-modal-padding-large)!important;width:auto}.pnwbCuWbV0PNQr1LFpRh .iBMDoShSmqpt72YfJb36{left:-20px;opacity:0;transition:all .55s cubic-bezier(.59,.37,.18,1) .3s}}.HQVDZ6J3x6SJNYFX5khS{background:var(--jp-white);left:0;opacity:0;position:absolute;top:100%;transition:transform .45s cubic-bezier(.59,.37,.18,1) 2s,opacity .45s linear;width:100%;will-change:transform,opacity;z-index:2}.pnwbCuWbV0PNQr1LFpRh .HQVDZ6J3x6SJNYFX5khS{opacity:1;transform:translateY(-100%);transition-delay:2s}@media(min-width:760px){.HQVDZ6J3x6SJNYFX5khS{align-items:flex-end;bottom:5%;container-type:inline-size;display:flex;flex-direction:column;gap:40px;left:45%;padding:0;right:32px;transform:translateY(0);transition-delay:0;transition:none;width:auto}.HQVDZ6J3x6SJNYFX5khS h2{width:100%}.HQVDZ6J3x6SJNYFX5khS ._j4GWTmW5psCHFYh6R0x{margin-right:var(--jp-modal-padding-large)}.pnwbCuWbV0PNQr1LFpRh .HQVDZ6J3x6SJNYFX5khS{bottom:12%;left:45%;opacity:1;right:32px;top:unset;transform:translateY(0);transition:all .45s cubic-bezier(.59,.37,.18,1) 2s,opacity .45s linear;transition-delay:2s;width:auto}.pnwbCuWbV0PNQr1LFpRh .HQVDZ6J3x6SJNYFX5khS .l35bIyiqYJiZ6tVYvJtC{padding-left:32px}.pnwbCuWbV0PNQr1LFpRh .HQVDZ6J3x6SJNYFX5khS ._j4GWTmW5psCHFYh6R0x{align-self:flex-end}}.KdvmPIjelQIFiPQGuIYf{background:var(--jp-gray-0);display:flex;flex-direction:column;gap:var(--jp-gap)}.KdvmPIjelQIFiPQGuIYf div{background-color:var(--jp-white);border:1px solid var(--jp-gray-10);border-radius:var(--jp-button-radius);box-shadow:0 0 40px 0 rgba(0,0,0,.08);flex:1;padding:var(--jp-modal-padding)}.KdvmPIjelQIFiPQGuIYf h3{font-size:24px;line-height:normal;margin:0}.KdvmPIjelQIFiPQGuIYf p{font-size:14px}@media(min-width:760px){.KdvmPIjelQIFiPQGuIYf{flex-direction:row;padding:var(--jp-modal-padding-large)}.KdvmPIjelQIFiPQGuIYf div{border:none;box-shadow:0 2px 16px rgba(0,0,0,.08),0 2px 2px rgba(0,0,0,.1)}.KdvmPIjelQIFiPQGuIYf div p{margin:8px 0}.KdvmPIjelQIFiPQGuIYf svg{margin-bottom:var(--jp-modal-padding-small)}}@container (max-width: 600px){.KdvmPIjelQIFiPQGuIYf div{padding:var(--jp-modal-padding-small)}}.cuoSlhSNrqf1dozY22Xb{fill:#000}.JLquNpQVlysAamuh5lJO,.lAIiifeLMmZAPlQ9n9ZR{fill:var(--jp-green-primary)}.cbOwD8Y4tFjwimmtchQI{fill:#757575}.cbOwD8Y4tFjwimmtchQI.aLWBKY0yRghEk7tNCgK3{fill:var(--color-bluesky)}.cbOwD8Y4tFjwimmtchQI.aHOlEBGD5EA8NKRw3xTw{fill:var(--color-facebook)}.cbOwD8Y4tFjwimmtchQI.aHOlEBGD5EA8NKRw3xTw.social-logo{border-radius:50%}.cbOwD8Y4tFjwimmtchQI.af4Y_zItXvLAOEoSDPSv{fill:var(--color-twitter)}.cbOwD8Y4tFjwimmtchQI.f68aqF3XSD1OBvXR1get{fill:var(--color-linkedin)}.cbOwD8Y4tFjwimmtchQI.xFI0dt3UiXRlRQdqPWkx{fill:var(--color-tumblr)}.cbOwD8Y4tFjwimmtchQI.q7JEoyymveP6kF747M43{fill:var(--color-gplus)}.cbOwD8Y4tFjwimmtchQI.DKOBOTVmTLbh26gUH_73{fill:var(--color-mastodon)}.cbOwD8Y4tFjwimmtchQI.n5XodNsuMfMAAvqHFmbw{fill:var(--color-nextdoor)}.cbOwD8Y4tFjwimmtchQI.n5XodNsuMfMAAvqHFmbw.social-logo{border-radius:50%}.cbOwD8Y4tFjwimmtchQI.cL3m0xBYTYhIKI7lCqDB{fill:var(--color-instagram)}.cbOwD8Y4tFjwimmtchQI.fftumuc_lJ6v0tq4UMVR{fill:var(--color-whatsapp)}.cbOwD8Y4tFjwimmtchQI.inzgC27qxdt7hSdhTWRI{fill:var(--color-threads)}.cbOwD8Y4tFjwimmtchQI.inzgC27qxdt7hSdhTWRI.social-logo{border-radius:40%}.SqdhUZkXCRuIpErj1B3z{--max-container-width:1128px;--vertical-gutter:24px;--horizontal-spacing:8px;column-gap:var(--vertical-gutter);display:grid;margin:0 auto;max-width:var(--max-container-width);width:100%}@media(max-width:599px){.SqdhUZkXCRuIpErj1B3z{grid-template-columns:repeat(4,minmax(0,1fr));padding:0 16px}}@media(min-width:600px)and (max-width:959px){.SqdhUZkXCRuIpErj1B3z{grid-template-columns:repeat(8,minmax(0,1fr));padding:0 18px}}@media(min-width:960px){.SqdhUZkXCRuIpErj1B3z{grid-template-columns:repeat(12,minmax(0,1fr));padding:0 24px}}.SqdhUZkXCRuIpErj1B3z.OZC_9a1LhpWF9dv15Gdh{max-width:none;padding:unset}@media(max-width:599px){.RuVLl3q4lxTQa3wbhBJB{grid-column-end:span 1}.f9LZTRG4MMK42rS89afW{grid-column-start:1}.bHe_zKxjjpUwHw_MdYE1{grid-column-end:2}.QZbNrOqE2aNSn50xVhpU{grid-column-end:span 2}.ev7W3z7zVYPeHAlYqZjf{grid-column-start:2}.NJWd1m_e7lOiPYru2ZMP{grid-column-end:3}.Xc6nt1Qc1DI0Z2A3gt1r{grid-column-end:span 3}.UIcN_GXiPRoIsin8Kohg{grid-column-start:3}.GRKCyqb5LufCSCgykKFc{grid-column-end:4}.i_qTq8gqhhC3vIUepVRB{grid-column-end:span 4}.G3qaZ3Jpbvam_1XvGxgc{grid-column-start:4}.VRCNYKZtO9zukEwmgP1y{grid-column-end:5}}@media(min-width:600px)and (max-width:959px){.tRm008K_WJL79WoNZTNL{grid-column-end:span 1}.l5T2P_bgKts4tdaRkS1d{grid-column-start:1}.zOCxfLZpF6BlgC7a_Yq1{grid-column-end:2}.F80DdgVn0m5OpvtSQWka{grid-column-end:span 2}.oI1c7JYfiJtMQHbhngtU{grid-column-start:2}.pMQtA_4jh1_1lVknqEP5{grid-column-end:3}.VenqMpdgyKQVUNNQcfqd{grid-column-end:span 3}.seNYL99uoczf9V4MxBxT{grid-column-start:3}.YKfF1HFhI9KygA5l3b2J{grid-column-end:4}.yAi0Cv1xDWkoqsaUhvhR{grid-column-end:span 4}.ubhnyZOnkgxNhh6XtVWv{grid-column-start:4}.RGOPGQbWMJ9Ei5oFxS7X{grid-column-end:5}.Sz1E2aWbX483ijdi6yge{grid-column-end:span 5}.tku6_bRYrX9tMbgYGmIl{grid-column-start:5}.b5JHttOhSEcI1WBlqAjk{grid-column-end:6}.FboSx5MoKTAWbxXyYlCw{grid-column-end:span 6}.Jhs8yEEmodG30edbJvag{grid-column-start:6}.IpzbbKVqEqPcfIGkXkwt{grid-column-end:7}.mhCPwfAZ4Kmm_empzJAq{grid-column-end:span 7}.x034ilrJF7rO9UJB2rI1{grid-column-start:7}.Wt8t2e16viRrOJ1lLA5v{grid-column-end:8}.S6pIrEy9AMLKx9bgh_Ae{grid-column-end:span 8}.kEfI4tGyuWfHTlRnvIab{grid-column-start:8}.PUzX4RRsKq1dnsz3gebS{grid-column-end:9}}@media(min-width:960px){.X_pdcLJikd8LS_YAdJlB{grid-column-end:span 1}.tl936d14Huby4khYp05X{grid-column-start:1}.hnge0LnR69d3NXEtEE1t{grid-column-end:2}.fj0NUMuyZQcPNgKcjp5Z{grid-column-end:span 2}.R2ncBX7a2NigdYCcV1OX{grid-column-start:2}.t8vMSDVYno9k9itRwnXb{grid-column-end:3}.wsDuEN2GqHx6qzo8dUdk{grid-column-end:span 3}.cIEVPUweWtLBy3xaXnMx{grid-column-start:3}.fajUWBwu1m2B479j3jmz{grid-column-end:4}.YR0c7fQTgMkDdWzwSyLp{grid-column-end:span 4}.xlwp8BmplxkKNMI7gamo{grid-column-start:4}._C4O1w9DUqx1m3gPf8aA{grid-column-end:5}.Z54F1hAErckAIrKlxnXW{grid-column-end:span 5}.ezSDWkRHmKSxDJXxuiOH{grid-column-start:5}.T0ChoeAjGJjkkNrYhD4g{grid-column-end:6}.qtMoMPF6yHvGJnWHSsde{grid-column-end:span 6}.gdoywN5VPiWERfIBqkph{grid-column-start:6}.wUev_VH5uf_pwFFlbnAU{grid-column-end:7}.egIPDFJsOpownTClq9XP{grid-column-end:span 7}.yGhp9yoAW7k0kQik9AB7{grid-column-start:7}.SJ43U9mR5wUg5V2qBeQA{grid-column-end:8}.cTuyHfMwSUJxN_HdIEgd{grid-column-end:span 8}.smCr8DaIagcumdvdldiK{grid-column-start:8}.T03NHzQJvzwL6wAfIiTL{grid-column-end:9}.pMvxM3RJGjqyNdf9qg1Y{grid-column-end:span 9}.iIVpNRwEnQ_JI5gpp9EN{grid-column-start:9}.ZbQ4u4vGSX5rJOje4uGL{grid-column-end:10}.gKb5wuIDAlKGbrjK2vxy{grid-column-end:span 10}.Z7pINdImE2WJiYnZBTqm{grid-column-start:10}.ZTxp6qpvwurMdOnLLSz1{grid-column-end:11}.NnQTlbfnxPDR6cQ7rygg{grid-column-end:span 11}.O137wZd6Yl0olSA9PsXR{grid-column-start:11}.zf2OJtQ2MPz6SDoh6CB0{grid-column-end:12}.U3H6UHW6HqRt9hdzVg3O{grid-column-end:span 12}.zynnNeS_ZBTxABcVpUQH{grid-column-start:12}.vI8tltFZtFUNAy9Iag9s{grid-column-end:13}}.zI5tJ_qhWE6Oe6Lk75GY{--wp-admin-theme-color:var(--jp-black);--wp-admin-theme-color-darker-10:var(--jp-black-80);--wp-admin-theme-color-darker-20:var(--jp-black-80);--wp-admin-border-width-focus:1.51px;border-radius:var(--jp-border-radius);font-weight:600;justify-content:center}.zI5tJ_qhWE6Oe6Lk75GY.tuBt2DLqimiImoqVzPqo{height:calc(var(--spacing-base)*5);padding:var(--spacing-base);width:calc(var(--spacing-base)*5)}.zI5tJ_qhWE6Oe6Lk75GY.tuBt2DLqimiImoqVzPqo>svg:first-child{margin:0;padding:0}.zI5tJ_qhWE6Oe6Lk75GY.tuBt2DLqimiImoqVzPqo.Na39I683LAaSA99REg14{height:calc(var(--spacing-base)*4);min-width:calc(var(--spacing-base)*4);padding:calc(var(--spacing-base)/2);width:calc(var(--spacing-base)*4)}.zI5tJ_qhWE6Oe6Lk75GY.ipS7tKy9GntCS4R3vekF:not(.tuBt2DLqimiImoqVzPqo){font-size:var(--font-body);height:auto;line-height:24px;padding:var(--spacing-base) calc(var(--spacing-base)*3)}.zI5tJ_qhWE6Oe6Lk75GY.ipS7tKy9GntCS4R3vekF:not(.tuBt2DLqimiImoqVzPqo).paGLQwtPEaJmtArCcmyK{padding:var(--spacing-base) calc(var(--spacing-base)*2)}.zI5tJ_qhWE6Oe6Lk75GY.Na39I683LAaSA99REg14:not(.tuBt2DLqimiImoqVzPqo){font-size:var(--font-body-extra-small);height:auto;line-height:20px;padding:calc(var(--spacing-base)/2) var(--spacing-base)}.zI5tJ_qhWE6Oe6Lk75GY.Na39I683LAaSA99REg14:not(.tuBt2DLqimiImoqVzPqo).paGLQwtPEaJmtArCcmyK>svg:first-child{margin-right:calc(var(--spacing-base)/2)}.zI5tJ_qhWE6Oe6Lk75GY.Na39I683LAaSA99REg14:not(.tuBt2DLqimiImoqVzPqo)>.components-spinner{height:20px}.zI5tJ_qhWE6Oe6Lk75GY.lZAo6_oGfclXOO9CC6Rd{font-weight:400}.zI5tJ_qhWE6Oe6Lk75GY.xJDOiJxTt0R_wSl8Ipz_{min-width:100%}.zI5tJ_qhWE6Oe6Lk75GY.is-primary:disabled,.zI5tJ_qhWE6Oe6Lk75GY.is-secondary:disabled{background:var(--jp-gray);color:var(--jp-gray-20)}.zI5tJ_qhWE6Oe6Lk75GY.is-secondary{background:var(--jp-white);box-shadow:inset 0 0 0 1.51px var(--jp-black)}.zI5tJ_qhWE6Oe6Lk75GY.is-secondary:active:not(:disabled),.zI5tJ_qhWE6Oe6Lk75GY.is-secondary:hover:not(:disabled){background:var(--jp-gray-0)}.zI5tJ_qhWE6Oe6Lk75GY.is-link.Na39I683LAaSA99REg14,.zI5tJ_qhWE6Oe6Lk75GY.is-link.ipS7tKy9GntCS4R3vekF{padding:0}.zI5tJ_qhWE6Oe6Lk75GY.is-link:hover:not(:disabled){text-decoration-thickness:3px}.zI5tJ_qhWE6Oe6Lk75GY.is-link:focus:not(:disabled){text-decoration-line:none}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary{box-shadow:none}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary:not(:disabled){background:var(--jp-red-50);box-shadow:inset 0 0 0 1px var(--jp-red-50);color:var(--jp-white)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary:hover:not(:disabled){background:var(--jp-red-60);box-shadow:inset 0 0 0 1px var(--jp-red-60)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary:focus:not(:disabled){background:var(--jp-red-70);box-shadow:inset 0 0 0 1px var(--jp-white),0 0 0 var(--wp-admin-border-width-focus) var(--jp-red-70);color:var(--jp-white)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary:active:not(:disabled){background:var(--jp-red-50)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary{box-shadow:none}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary:not(:disabled){background:var(--jp-white);box-shadow:inset 0 0 0 1.5px var(--jp-red-50);color:var(--jp-red-50)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary:hover:not(:disabled){background:var(--jp-red-0);box-shadow:inset 0 0 0 1.5px var(--jp-red-60);color:var(--jp-red-60)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary:focus:not(:disabled){box-shadow:inset 0 0 0 1px var(--jp-white),0 0 0 var(--wp-admin-border-width-focus) var(--jp-red-70);color:var(--jp-red-70)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary:active:not(:disabled){background:var(--jp-gray-0)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-link:not(:disabled){color:var(--jp-red-50)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-link:hover:not(:disabled){box-shadow:none;color:var(--jp-red-60)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-link:focus:not(:disabled){box-shadow:inset 0 0 0 1px var(--jp-white),0 0 0 var(--wp-admin-border-width-focus) var(--jp-red-70);color:var(--jp-red-70)}.zI5tJ_qhWE6Oe6Lk75GY.q_tVWqMjl39RcY6WtQA6{position:relative}.zI5tJ_qhWE6Oe6Lk75GY.q_tVWqMjl39RcY6WtQA6.has-icon{justify-content:center}.zI5tJ_qhWE6Oe6Lk75GY.q_tVWqMjl39RcY6WtQA6>:not(.components-spinner){visibility:hidden}.zI5tJ_qhWE6Oe6Lk75GY.q_tVWqMjl39RcY6WtQA6>.components-spinner{margin:0;position:absolute}.CDuBjJp_8jxzx5j6Nept{margin-left:calc(var(--spacing-base)/2)}.jp-license-activation-screen{border-radius:4px;box-shadow:0 4px 24px 0 rgba(0,0,0,.149);display:flex;flex-direction:column;min-height:540px;overflow:hidden}@media screen and (min-width:780px){.jp-license-activation-screen{flex-direction:row}}.block-editor-block-list__layout .block-editor-block-list__block.has-warning.is-interactive>*{pointer-events:auto;user-select:auto}.block-editor-block-list__layout .block-editor-block-list__block.has-warning.is-interactive:after{content:none}.hdasSNj9k3Sc5PwXK4uE{margin-right:4px;width:16px}.eWN8Hj0SBRDq1F48n_Fg{--gray-70:#3c434a;align-items:center;color:var(--gray-70);display:flex;font-size:14px;text-decoration:none}.jp-dashboard-footer{align-items:center;color:var(--jp-black);display:flex;flex-wrap:wrap;font-size:var(--font-body-extra-small);line-height:1.333;max-width:1128px;width:100%}.jp-dashboard-footer a{text-decoration:none}.jp-dashboard-footer a:any-link,.jp-dashboard-footer a[role=button]{color:inherit}.jp-dashboard-footer a:hover{text-decoration:underline;text-decoration-thickness:1.5px}.jp-dashboard-footer a:focus{box-shadow:none;outline-width:0}.jp-dashboard-footer a:focus-visible{border-radius:2px;box-shadow:none;outline:1.5px solid currentColor;outline-offset:3px}.jp-dashboard-footer.is-sm>ul{gap:.125rem}.jp-dashboard-footer.is-md,.jp-dashboard-footer.is-sm>ul{align-items:flex-start;flex-direction:column}.jp-dashboard-footer>ul{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;list-style:none;margin:0;padding:0;width:100%}.jp-dashboard-footer>ul>li{margin-bottom:0}.jp-dashboard-footer>ul>li>a{align-items:center;display:flex;gap:.25rem;min-height:44px}.jp-dashboard-footer__accessible-external-link{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;overflow-wrap:normal;padding:0;position:absolute;width:1px}.jp-dashboard-footer__jp-item{font-weight:600;padding-inline-end:1rem}.jp-dashboard-footer.is-sm .jp-dashboard-footer__jp-item{padding-bottom:1rem}.jp-dashboard-footer.is-lg .jp-dashboard-footer__a8c-item{margin-inline-start:auto}.jp-dashboard-footer.is-sm .jp-dashboard-footer__a8c-item{padding-top:1rem}.jp-dashboard-footer__a8c-item>a,.jp-dashboard-footer__jp-item>a{text-decoration:none}.sexr0jUxC1jVixdKiDnC{margin-left:-20px}@media(max-width:782px){.sexr0jUxC1jVixdKiDnC{margin-left:-10px}}.sexr0jUxC1jVixdKiDnC.vKQ11sLeAM45M04P1ccj{background-color:var(--jp-white)}.sexr0jUxC1jVixdKiDnC .iWGAhN9gOB48g0jEO1OQ{align-items:center;display:flex;gap:8px}.sexr0jUxC1jVixdKiDnC .JOYmuxQjG4FArIIUxJfA{background:#d63638;color:#fff;cursor:pointer;font-size:9px;font-weight:700;letter-spacing:.2em;text-shadow:none;text-transform:uppercase}.rV_5QyvhDnsVjCX4pb0h{--gray-90:#1e1e1e;fill:var(--gray-90);width:24px}.MO1jDNY8VPqeNS9xL8jE{align-items:center;display:flex;text-decoration:none}.zvd4dCB_bBDiXJKKDqXm{position:relative}.ly4o9lSswAGHFXqGUEIO{position:absolute;right:32px;top:32px;z-index:1}.u64Go3kwEZ7MD9eji0H1{color:var(--jp-gray-50);font-size:13px;margin-bottom:8px;width:60%}._RT41NE3LU4R0ubcij2y{align-items:center;display:flex;gap:8px}._RT41NE3LU4R0ubcij2y li{background:none!important;margin:0!important;padding:0!important}.cFGWJeRiGHjAr8D7CWJW{max-width:110px}.Iz3l7a05TP6HK9S92TIL{width:16px}.lmQ0wFmnk4kKkGVjokPA{height:18px}.ZSFTmY3zE3VP4w0QeaqV{width:16px}.AoIs8wD92wKR8RpQj6Uc{align-items:center;display:inline-flex}.WQVtrU6q0L1Igcj7wCrQ{margin:0;padding:0}.UujoBFTnQNY2cWU2SIsH{font-size:var(--font-headline-medium);font-weight:700;line-height:52px}.TeGO5V_thHw5lDAm1_2M{font-weight:700}.TeGO5V_thHw5lDAm1_2M,.WolQzb2MsSgiNmLtc7_j{font-size:var(--font-headline-small);line-height:40px}.WolQzb2MsSgiNmLtc7_j{font-weight:400}.hUB0JT8p1T2Hw28N6qC8{font-weight:500}.gKZWDv5chz3_O3Syp74H,.hUB0JT8p1T2Hw28N6qC8{font-size:var(--font-title-medium);line-height:32px}.gKZWDv5chz3_O3Syp74H{font-weight:600}.zY2No8Ga4b8shbOQGhnv{font-size:var(--font-title-small);font-weight:500;line-height:30px}.tIj0D1t8Cc892ikmgFPZ{font-size:var(--font-body);font-weight:400;line-height:24px}.KdcN0BnOaVeVhyLRKqhS{font-size:var(--font-body-small);font-weight:400;line-height:24px}.dso3Rh3tl3Xv1GumBktz{font-weight:400}.dso3Rh3tl3Xv1GumBktz,.mQ1UlbN9u4Mg9byO8m7v{font-size:var(--font-body-extra-small);line-height:20px}.mQ1UlbN9u4Mg9byO8m7v{font-weight:700}.PItlW5vRExLnTj4a8eLE{font-size:var(--font-body-extra-small);font-weight:600;line-height:16px}.TwRpPlktzxhmFVeua7P5{margin:calc(var( --spacing-base )*0)}.zVfqx7gyb3o9mxfGynn1{margin-left:calc(var( --spacing-base )*0);margin-right:calc(var( --spacing-base )*0)}.iSHVzNiB9iVleGljaQxy{margin-bottom:calc(var( --spacing-base )*0)}.iSHVzNiB9iVleGljaQxy,.xqDIp6cNVr_E6RXaiPyD{margin-top:calc(var( --spacing-base )*0)}.S8EwaXk1kyPizt6x4WH2{margin-right:calc(var( --spacing-base )*0)}.ODX5Vr1TARoLFkDDFooD{margin-bottom:calc(var( --spacing-base )*0)}.cphJ8dCpfimnky7P2FHg{margin-left:calc(var( --spacing-base )*0)}.PFgIhNxIyiSuNvQjAIYj{margin:calc(var( --spacing-base )*1)}.M2jKmUzDxvJjjVEPU3zn{margin-left:calc(var( --spacing-base )*1);margin-right:calc(var( --spacing-base )*1)}.io15gAh8tMTNbSEfwJKk{margin-bottom:calc(var( --spacing-base )*1)}.io15gAh8tMTNbSEfwJKk,.rcTN5uw9xIEeMEGL3Xi_{margin-top:calc(var( --spacing-base )*1)}.CQSkybjq2TcRM1Xo9COV{margin-right:calc(var( --spacing-base )*1)}.hfqOWgq6_MEGdFE82eOY{margin-bottom:calc(var( --spacing-base )*1)}.I8MxZQYTbuu595yfesWA{margin-left:calc(var( --spacing-base )*1)}.kQkc6rmdpvLKPkyoJtVQ{margin:calc(var( --spacing-base )*2)}.j6vFPxWuu4Jan2ldoxpp{margin-left:calc(var( --spacing-base )*2);margin-right:calc(var( --spacing-base )*2)}.hqr39dC4H_AbactPAkCG{margin-bottom:calc(var( --spacing-base )*2)}.c3dQnMi16C6J6Ecy4283,.hqr39dC4H_AbactPAkCG{margin-top:calc(var( --spacing-base )*2)}.YNZmHOuRo6hU7zzKfPdP{margin-right:calc(var( --spacing-base )*2)}.Db8lbak1_wunpPk8NwKU{margin-bottom:calc(var( --spacing-base )*2)}.ftsYE5J9hLzquQ0tA5dY{margin-left:calc(var( --spacing-base )*2)}.Det4MHzLUW7EeDnafPzq{margin:calc(var( --spacing-base )*3)}.h_8EEAztC29Vve1datb5{margin-left:calc(var( --spacing-base )*3);margin-right:calc(var( --spacing-base )*3)}.YXIXJ0h1k47u6hzK8KcM{margin-bottom:calc(var( --spacing-base )*3)}.YXIXJ0h1k47u6hzK8KcM,.soADBBkcIKCBXzCTuV9_{margin-top:calc(var( --spacing-base )*3)}.zSX59ziEaEWGjnpZa4uV{margin-right:calc(var( --spacing-base )*3)}.yrVTnq_WBMbejg89c2ZQ{margin-bottom:calc(var( --spacing-base )*3)}.UKtHPJnI2cXBWtPDm5hM{margin-left:calc(var( --spacing-base )*3)}.guexok_Tqd5Tf52hRlbT{margin:calc(var( --spacing-base )*4)}.oS1E2KfTBZkJ3F0tN7T6{margin-left:calc(var( --spacing-base )*4);margin-right:calc(var( --spacing-base )*4)}.DN1OhhXi6AoBgEdDSbGd{margin-bottom:calc(var( --spacing-base )*4)}.DN1OhhXi6AoBgEdDSbGd,.ot2kkMcYHv53hLZ4LSn0{margin-top:calc(var( --spacing-base )*4)}.A1krOZZhlQ6Sp8Cy4bly{margin-right:calc(var( --spacing-base )*4)}.pkDbXXXL32237M0hokEh{margin-bottom:calc(var( --spacing-base )*4)}.XXv4kDTGvEnQeuGKOPU3{margin-left:calc(var( --spacing-base )*4)}.yGqHk1a57gaISwkXwXe6{margin:calc(var( --spacing-base )*5)}.X8cghM358X3DkXLc9aNK{margin-left:calc(var( --spacing-base )*5);margin-right:calc(var( --spacing-base )*5)}.GdfSmGwHlFnN2S6xBn1f{margin-bottom:calc(var( --spacing-base )*5)}.GdfSmGwHlFnN2S6xBn1f,.yqeuzwyGQ7zG0avrGqi_{margin-top:calc(var( --spacing-base )*5)}.g9emeCkuHvYhveiJbfXO{margin-right:calc(var( --spacing-base )*5)}.Lvk3dqcyHbZ07QCRlrUQ{margin-bottom:calc(var( --spacing-base )*5)}.r3yQECDQ9qX0XZzXlVAg{margin-left:calc(var( --spacing-base )*5)}.aQhlPwht2Cz1X_63Miw0{margin:calc(var( --spacing-base )*6)}.JyHb0vK3wJgpblL9s5j8{margin-left:calc(var( --spacing-base )*6);margin-right:calc(var( --spacing-base )*6)}.cY2gULL1lAv6WPNIRuf3{margin-bottom:calc(var( --spacing-base )*6)}.NBWQ9Lwhh_fnry3lg_p7,.cY2gULL1lAv6WPNIRuf3{margin-top:calc(var( --spacing-base )*6)}.yIOniNe5E40C8fWvBm5V{margin-right:calc(var( --spacing-base )*6)}.t30usboNSyqfQWIwHvT3{margin-bottom:calc(var( --spacing-base )*6)}.Nm_TyFkYCMhOoghoToKJ{margin-left:calc(var( --spacing-base )*6)}.C4qJKoBXpgKtpmrqtEKB{margin:calc(var( --spacing-base )*7)}.S93Srbu6NQ_PBr7DmTiD{margin-left:calc(var( --spacing-base )*7);margin-right:calc(var( --spacing-base )*7)}.fJj8k6gGJDks3crUZxOS{margin-bottom:calc(var( --spacing-base )*7)}.cW6D6djs7Ppm7fD7TeoV,.fJj8k6gGJDks3crUZxOS{margin-top:calc(var( --spacing-base )*7)}.DuCnqNfcxcP3Z__Yo5Ro{margin-right:calc(var( --spacing-base )*7)}.im8407m2fw5vOg7O2zsw{margin-bottom:calc(var( --spacing-base )*7)}.G0fbeBgvz2sh3uTP9gNl{margin-left:calc(var( --spacing-base )*7)}.kvW3sBCxRxUqz1jrVMJl{margin:calc(var( --spacing-base )*8)}.tOjEqjLONQdkiYx_XRnw{margin-left:calc(var( --spacing-base )*8);margin-right:calc(var( --spacing-base )*8)}.op5hFSx318zgxsoZZNLN{margin-bottom:calc(var( --spacing-base )*8)}.c9WfNHP6TFKWIfLxv52J,.op5hFSx318zgxsoZZNLN{margin-top:calc(var( --spacing-base )*8)}.sBA75QqcqRwwYSHJh2wc{margin-right:calc(var( --spacing-base )*8)}.GpL6idrXmSOM6jB8Ohsf{margin-bottom:calc(var( --spacing-base )*8)}.HbtWJoQwpgGycz8dGzeT{margin-left:calc(var( --spacing-base )*8)}.uxX3khU88VQ_Ah49Ejsa{padding:calc(var( --spacing-base )*0)}.KX0FhpBKwKzs9fOUdbNz{padding-left:calc(var( --spacing-base )*0);padding-right:calc(var( --spacing-base )*0)}.PfK8vKDyN32dnimlzYjz{padding-bottom:calc(var( --spacing-base )*0)}.PfK8vKDyN32dnimlzYjz,.emxLHRjQuJsImnPbQIzE{padding-top:calc(var( --spacing-base )*0)}.kJ8WzlpTVgdViXt8ukP9{padding-right:calc(var( --spacing-base )*0)}.tg_UIUI11VBzrTAn2AzJ{padding-bottom:calc(var( --spacing-base )*0)}.uczvl8kaz84oPQJ2DB2R{padding-left:calc(var( --spacing-base )*0)}.o7UHPcdVK3lt7q3lqV4o{padding:calc(var( --spacing-base )*1)}.IDqEOxvDoYrFYxELPmtX{padding-left:calc(var( --spacing-base )*1);padding-right:calc(var( --spacing-base )*1)}.DdywPW2qSYlu2pt8tpO2{padding-bottom:calc(var( --spacing-base )*1)}.DdywPW2qSYlu2pt8tpO2,.npy3hw4A5QSkDicb2CJJ{padding-top:calc(var( --spacing-base )*1)}.LgbptTApNY5NwLQvEFAt{padding-right:calc(var( --spacing-base )*1)}.WZQy2SZuZso59bUsXXyl{padding-bottom:calc(var( --spacing-base )*1)}.o331apInxNunbYB3SfPE{padding-left:calc(var( --spacing-base )*1)}.fMPIyD9Vqki1Lrc_yJnG{padding:calc(var( --spacing-base )*2)}.i2pMcTcdrr10IQoiSm_L{padding-left:calc(var( --spacing-base )*2);padding-right:calc(var( --spacing-base )*2)}.eA702gn32kwptiI1obXH{padding-bottom:calc(var( --spacing-base )*2)}.eA702gn32kwptiI1obXH,.o9bGieUKcYc8o0Ij9oZX{padding-top:calc(var( --spacing-base )*2)}.SwZcFez1RDqWsOFjB5iG{padding-right:calc(var( --spacing-base )*2)}.eHpLc_idmuEqeqCTvqkN{padding-bottom:calc(var( --spacing-base )*2)}.vU39i2B4P1fUTMB2l6Vo{padding-left:calc(var( --spacing-base )*2)}.JHWNzBnE29awhdu5BEh1{padding:calc(var( --spacing-base )*3)}.X72lGbb56L3KFzC2xQ9N{padding-left:calc(var( --spacing-base )*3);padding-right:calc(var( --spacing-base )*3)}.BzfNhRG8wXdCEB5ocQ6e{padding-bottom:calc(var( --spacing-base )*3)}.BzfNhRG8wXdCEB5ocQ6e,.srV0KSDC83a2fiimSMMQ{padding-top:calc(var( --spacing-base )*3)}.lUWfkmbQjCskhcNwkyCm{padding-right:calc(var( --spacing-base )*3)}.Ts0dIlc3aTSL7V4cIHis{padding-bottom:calc(var( --spacing-base )*3)}.CzlqQXXhX6MvorArFZ8B{padding-left:calc(var( --spacing-base )*3)}.TqMPkQtR_DdZuKb5vBoV{padding:calc(var( --spacing-base )*4)}.a7UrjhI69Vetlcj9ZVzz{padding-left:calc(var( --spacing-base )*4);padding-right:calc(var( --spacing-base )*4)}.StEhBzGs2Gi5dDEkjhAv{padding-bottom:calc(var( --spacing-base )*4)}.FGneZfZyvYrt1dG0zcnm,.StEhBzGs2Gi5dDEkjhAv{padding-top:calc(var( --spacing-base )*4)}.APEH216rpdlJWgD2fHc8{padding-right:calc(var( --spacing-base )*4)}.oGwXC3ohCic9XnAj6x69{padding-bottom:calc(var( --spacing-base )*4)}.U6gnT9y42ViPNOcNzBwb{padding-left:calc(var( --spacing-base )*4)}.IpdRLBwnHqbqFrixgbYC{padding:calc(var( --spacing-base )*5)}.HgNeXvkBa9o3bQ5fvFZm{padding-left:calc(var( --spacing-base )*5);padding-right:calc(var( --spacing-base )*5)}.tJtFZM3XfPG9v9TSDfN1{padding-bottom:calc(var( --spacing-base )*5)}.PdifHW45QeXYfK568uD8,.tJtFZM3XfPG9v9TSDfN1{padding-top:calc(var( --spacing-base )*5)}.mbLkWTTZ0Za_BBbFZ5b2{padding-right:calc(var( --spacing-base )*5)}.vVWpZpLlWrkTt0hMk8XU{padding-bottom:calc(var( --spacing-base )*5)}.RxfaJj5a1Nt6IavEo5Zl{padding-left:calc(var( --spacing-base )*5)}.SppJULDGdnOGcjZNCYBy{padding:calc(var( --spacing-base )*6)}.palY2nLwdoyooPUm9Hhk{padding-left:calc(var( --spacing-base )*6);padding-right:calc(var( --spacing-base )*6)}.WYw1JvZC0ppLdvSAPhr_{padding-bottom:calc(var( --spacing-base )*6)}.WYw1JvZC0ppLdvSAPhr_,.YEEJ9b90ueQaPfiU8aeN{padding-top:calc(var( --spacing-base )*6)}.QE0ssnsKvWJMqlhPbY5u{padding-right:calc(var( --spacing-base )*6)}.n8yA3jHlMRyLd5UIfoND{padding-bottom:calc(var( --spacing-base )*6)}.tXHmxYnHzbwtfxEaG51n{padding-left:calc(var( --spacing-base )*6)}.kBTsPKkO_3g_tLkj77Um{padding:calc(var( --spacing-base )*7)}.RyhrFx6Y1FGDrGAAyaxm{padding-left:calc(var( --spacing-base )*7);padding-right:calc(var( --spacing-base )*7)}.CBwRpB0bDN3iEdQPPMJO{padding-bottom:calc(var( --spacing-base )*7)}.CBwRpB0bDN3iEdQPPMJO,.vQVSq6SvWKbOMu6r4H6b{padding-top:calc(var( --spacing-base )*7)}.oBy5__aEADMsH46mrgFX{padding-right:calc(var( --spacing-base )*7)}.KVEXoJqf1s92j0JMdNmN{padding-bottom:calc(var( --spacing-base )*7)}.ZMXGNrNaKW3k_3TLz0Fq{padding-left:calc(var( --spacing-base )*7)}.tuiR9PhkHXhGyEgzRZRI{padding:calc(var( --spacing-base )*8)}.U7454qyWkQNa2iaSJziu{padding-left:calc(var( --spacing-base )*8);padding-right:calc(var( --spacing-base )*8)}.VLYIv2GVocjuN93e8HC8{padding-bottom:calc(var( --spacing-base )*8)}.VLYIv2GVocjuN93e8HC8,.X1rm9DQ1zLGLfogja5Gn{padding-top:calc(var( --spacing-base )*8)}.JS7G6kAuqJo5GIuF8S5t{padding-right:calc(var( --spacing-base )*8)}.Y8F9ga1TDCMbM1lj4gUz{padding-bottom:calc(var( --spacing-base )*8)}.AJuyNGrI63BOWql719H8{padding-left:calc(var( --spacing-base )*8)}.terms-of-service{color:var(--jp-black);font-size:var(--font-body)}.terms-of-service .terms-of-service__link{color:var(--jp-green-50);text-decoration:underline;white-space:nowrap}.kezuOHNvu9vdvlJ86Fwg .qJizORs2q_CVCj9L6XLe{align-items:center;display:flex;gap:var(--spacing-base);margin-bottom:calc(var(--spacing-base)*3)}.kezuOHNvu9vdvlJ86Fwg .qJizORs2q_CVCj9L6XLe .VmtuLc2xRqmsO6cK8qjF{position:relative;width:54px}.kezuOHNvu9vdvlJ86Fwg .qJizORs2q_CVCj9L6XLe .MdTRfQ3eo5qZKChZlzNj,.kezuOHNvu9vdvlJ86Fwg .qJizORs2q_CVCj9L6XLe .PbEpL02SEH9VNAlbKCfV{width:32px}.kezuOHNvu9vdvlJ86Fwg .qJizORs2q_CVCj9L6XLe .TD4AUM9gcTVAB6JHB5ZR{border-radius:50%;margin-left:-10px;position:absolute;width:32px}.kezuOHNvu9vdvlJ86Fwg .qJizORs2q_CVCj9L6XLe .yjl73qv0VWoPP8IhGreh{border-top-style:solid;border-top:2px dashed var(--jp-black);height:0;width:67px}.kezuOHNvu9vdvlJ86Fwg .qJizORs2q_CVCj9L6XLe .J0GIu2rNR7rXocQTyd8p{border-color:var(--jp-red)}.kezuOHNvu9vdvlJ86Fwg .qJizORs2q_CVCj9L6XLe .rAV2E93SG8WpokuGk9jh{border-color:var(--jp-yellow-50)}.kezuOHNvu9vdvlJ86Fwg .YZ7FNKEm9qpvQ4ZkbAz5{transform:rotate(180deg)}.kezuOHNvu9vdvlJ86Fwg .TYNMsILey2vUwnyZSjJU{align-self:flex-end;margin-bottom:2px}.kezuOHNvu9vdvlJ86Fwg .oH9tzGE80LnB6Og69RFz{margin-bottom:var(--spacing-base)}.kezuOHNvu9vdvlJ86Fwg .oH9tzGE80LnB6Og69RFz,.kezuOHNvu9vdvlJ86Fwg .xXVEWvQllVsFGmJY8WEp{align-items:center;display:flex;gap:var(--spacing-base)}.kezuOHNvu9vdvlJ86Fwg .xXVEWvQllVsFGmJY8WEp.J0GIu2rNR7rXocQTyd8p{color:var(--jp-red);fill:var(--jp-red)}.kezuOHNvu9vdvlJ86Fwg .xXVEWvQllVsFGmJY8WEp.rAV2E93SG8WpokuGk9jh{color:var(--jp-yellow-50);fill:var(--jp-yellow-50)}.kezuOHNvu9vdvlJ86Fwg .xXVEWvQllVsFGmJY8WEp.q4_FOHifGawULuFBZke9 svg{fill:var(--jp-green-50)}.jUxY9oXwnEDQLadQBNQp{animation:odHEpyTWVIDgdJClTyHg 1s linear infinite alternate;border-radius:var(--jp-border-radius-rna);color:transparent}.Vzu6IGmwfFGn5RPCIWOY{margin-bottom:1rem}@keyframes odHEpyTWVIDgdJClTyHg{0%{background-color:#f5f5f5}to{background-color:#e2e2e2}}.IorMv97NU2iEXtcbbVoN{background:var(--jp-white);border-radius:calc(var(--jp-border-radius)/2);box-shadow:0 1px 1px 0 rgba(0,0,0,.1),0 1px 1.5px 0 rgba(0,0,0,.1),0 2px 3px -.5px rgba(0,0,0,.1);left:0;padding:var(--spacing-base);position:absolute;top:calc(100% + var(--spacing-base));z-index:1}.IorMv97NU2iEXtcbbVoN ._I09VyiyxzT6EKE6RwVF{align-items:center;background-color:var(--jp-white);border:none;cursor:pointer;display:flex;gap:calc(var(--spacing-base)*7);padding:var(--spacing-base);width:100%}.IorMv97NU2iEXtcbbVoN ._I09VyiyxzT6EKE6RwVF:hover{background-color:var(--jp-gray-0)}.IorMv97NU2iEXtcbbVoN .Gmum0UGKXz4YlMG9Fwgm{align-items:center;display:flex;font-size:var(--font-label);gap:calc(var(--spacing-base)*.5)}.IorMv97NU2iEXtcbbVoN .przPMe99k8Mad0jsxI1R{background-color:var(--jp-green-50);height:25px;width:25px}.vRIYDzW5yrfnUoDPdBAN{display:flex;position:relative}.vRIYDzW5yrfnUoDPdBAN .KIyEfIhAZ4TElM0K5kuH{align-items:center;border:.5px solid var(--jp-black);border-bottom-right-radius:var(--jp-border-radius);border-top-right-radius:var(--jp-border-radius);box-shadow:inset 0 0 0 1px var(--jp-black);cursor:pointer;display:flex;justify-content:center;padding:0}.vRIYDzW5yrfnUoDPdBAN .V4VpHqht9Rm42tiZfsxU{background-color:var(--jp-black);margin-left:.5px}.vRIYDzW5yrfnUoDPdBAN .vZfbVKYvaUjhpAuMD9jg{background-color:var(--jp-white);border-left-width:0;margin-left:-.5px}.SlMzf1xQ5c9GfEx2RQgv a,.SlMzf1xQ5c9GfEx2RQgv button{border-bottom-right-radius:0;border-top-right-radius:0}.OpMBda4vebhRbW8Fm6YC{background:var(--jp-white);border:1px solid var(--jp-gray-5);border-radius:var(--jp-border-radius-rna);box-shadow:0 4px 12px 0 rgba(0,0,0,.06);display:flex;flex-direction:column;height:100%;padding:calc(var(--spacing-base)*3)}.OpMBda4vebhRbW8Fm6YC.BghJAx9hSagUdHWOUaYE{background:none;background-color:var(--jp-white-off);color:var(--jp-black-80);text-decoration:none}.OpMBda4vebhRbW8Fm6YC.BghJAx9hSagUdHWOUaYE:focus{background-color:var(--jp-white);box-shadow:0 0 0 1.5px var(--jp-black);outline:3px solid transparent}.OpMBda4vebhRbW8Fm6YC.IWsEW5nnNWUqqcT3K5L1{box-shadow:0 0 0 1.5px var(--jp-red-60)}.r3UCwgwCthua6lDCvIBI{align-items:center;display:flex;gap:var(--spacing-base);justify-content:space-between;margin-bottom:var(--spacing-base);width:100%}.r3UCwgwCthua6lDCvIBI h3{font-weight:700}.vpluqUMgmwx9_f8wCVIn{align-items:center;display:flex;flex-wrap:wrap-reverse;gap:var(--spacing-base);height:100%}.pIsYsXFAJ9KX2VrS5rmY{min-height:200px;position:relative}.pIsYsXFAJ9KX2VrS5rmY.Pp9cMIaESLYelLOX3tkI{border-color:var(--jp-red-50);border-width:1px}.pIsYsXFAJ9KX2VrS5rmY.NhOH6VeEpSrNGAPQik0w{border-color:#deb100;border-width:1px}.gmPKCDKZcfQt9WieTyKS{flex-grow:1}.fDBaV7I4yUO6w5AWVEtr{align-items:center;display:flex;flex-direction:row-reverse;flex-wrap:wrap;justify-content:space-between;margin-top:auto;min-height:28px;padding-top:calc(var(--spacing-base)*3);width:100%}.SelsBZT7eIWRQyl1dasZ{display:flex;gap:var(--spacing-base);justify-content:flex-start}.LHYJUrOej3toDvOAiz4k{align-items:center;display:flex;gap:var(--spacing-base);justify-content:space-between;margin-bottom:calc(var(--spacing-base)*.5);width:100%}.LHYJUrOej3toDvOAiz4k h3{font-weight:700;line-height:28px}.aZvwqVNw6rvImSxn0DM9{align-items:baseline;display:flex;gap:calc(var(--spacing-base)*.5);margin-bottom:var(--spacing-base)}.R4OXFRkmlHAH8ScIgYXh{color:var(--jp-gray-100);font-size:var(--font-body);font-weight:600}.R4OXFRkmlHAH8ScIgYXh.g0_8bbVjnVh0D_pS264j{color:var(--jp-gray-30);text-decoration:line-through}.nqFgW_S2jbHPu9yPq9E_{color:var(--jp-gray-30);font-size:var(--font-body-extra-small)}.f5VJYwuJmjxH8PVxEbbv{align-items:center;display:flex;height:28px;white-space:nowrap}.f5VJYwuJmjxH8PVxEbbv:before{border-radius:50%;content:"";display:inline-block;height:8px;margin-right:var(--spacing-base);width:8px}.f5VJYwuJmjxH8PVxEbbv.ry3pxoGtmQ0ZeSwp7F_3{color:var(--jp-green-50)}.f5VJYwuJmjxH8PVxEbbv.ry3pxoGtmQ0ZeSwp7F_3:before{background:var(--jp-green-50)}.f5VJYwuJmjxH8PVxEbbv.LZzE3EG7m3CDR46wwwEr{color:var(--jp-gray-50)}.f5VJYwuJmjxH8PVxEbbv.LZzE3EG7m3CDR46wwwEr:before{background:var(--jp-gray-50)}.f5VJYwuJmjxH8PVxEbbv.TZUP7W6QYGajITiMNYas{color:var(--jp-yellow-50)}.f5VJYwuJmjxH8PVxEbbv.TZUP7W6QYGajITiMNYas:before{background:var(--jp-yellow-50)}.f5VJYwuJmjxH8PVxEbbv.Vx_jpT02r8W6NfsRSB02{color:var(--jp-red-60)}.f5VJYwuJmjxH8PVxEbbv.Vx_jpT02r8W6NfsRSB02:before{background:var(--jp-red-60)}.f5VJYwuJmjxH8PVxEbbv.PdsJCfyyjSgrNDheF2qi:before{animation:dWP7ypkVXudMbAa38W5Z .5s linear infinite}@keyframes dWP7ypkVXudMbAa38W5Z{0%{opacity:0}50%{opacity:.5}to{opacity:0}}.info-tooltip__button{align-items:center;background:transparent;border:none;color:var(--jp-gray-50);cursor:pointer;display:flex;padding:2px}.info-tooltip__button svg{margin:0 auto}.info-tooltip__content h3{color:var(--jp-black);font-size:var(--font-title-small);font-weight:500;line-height:calc(var(--font-title-small) + 6px);margin:0 0 calc(var(--spacing-base)*2)}.info-tooltip__content p{color:var(--jp-gray-70);font-size:var(--font-body);line-height:var(--font-title-small);margin-bottom:0}.info-tooltip__content p a{color:var(--jp-black);text-decoration:underline}.info-tooltip__content p a:focus,.info-tooltip__content p a:hover{text-decoration:none}.gridicon{fill:currentColor;display:inline-block}.gridicon.needs-offset g{transform:translate(1px,1px)}.gridicon.needs-offset-x g{transform:translate(1px)}.gridicon.needs-offset-y g{transform:translateY(1px)}.wI7QgVzPXvVVu6kfnTT8{align-items:center;color:var(--jp-black);display:flex;justify-content:space-between;margin-top:1rem}.wI7QgVzPXvVVu6kfnTT8 .eqyxcUmdF0s3gmmlZGyD{display:flex;gap:1.5rem}.wI7QgVzPXvVVu6kfnTT8 .gxY6D0PeVtGk9iSB5E_u{align-items:center;display:flex;font-size:var(--font-body-small);gap:2px;margin:0}.wI7QgVzPXvVVu6kfnTT8 .D_uE0LD5CvpfM2FNp55k{align-items:center;display:flex;gap:2px}.wI7QgVzPXvVVu6kfnTT8 .VTBUdi1D4DW34F0yixMk{font-size:var(--font-body-small);margin:0}.BXQQYCO_pEmYmzBBwYxR{align-items:center;color:var(--jp-black);display:flex;gap:.25rem;margin-top:1rem}.BXQQYCO_pEmYmzBBwYxR .qdvOzzbrd3KQK7DNg8eg{font-size:var(--font-body-small);margin:0}.PFbMp_gtGLBMWbbYtO0q{display:flex;flex-grow:1;flex-wrap:wrap;gap:.25rem;justify-content:space-between}.ZFCNMiywyFvaifoIQI5w{color:var(--jp-gray-40)}.eKy3yAPsoarwSQMou_kk{align-items:center;display:flex;font-weight:500;gap:.25rem}.eKy3yAPsoarwSQMou_kk svg.Bt6AOGkWP6xSfUbq2QBQ{fill:var(--jp-red-60)}.GA8m1YdHe3xODczqUUor{align-items:flex-start;color:var(--jp-gray-50);display:flex;font-size:var(--font-body-extra-small);gap:.25rem;line-height:var(--font-title-small)}.GA8m1YdHe3xODczqUUor .KixWjGbAhopt1dR0Hv9n{padding-top:calc(var(--jp-underline-thickness)*2)}.GA8m1YdHe3xODczqUUor .KixWjGbAhopt1dR0Hv9n>svg{fill:var(--jp-red)}.GA8m1YdHe3xODczqUUor .iGcRsZkwWJW_WJglA1oO{font-size:var(--font-label);font-weight:400;line-height:20px}.value-section__heading{color:var(--jp-gray-100);font-weight:500}.mj-boost-speed-score{margin:calc(var(--spacing-base)*-1);margin-bottom:0;padding:calc(var(--spacing-base))}.mj-boost-speed-score__grade{align-items:center;column-gap:1em;display:flex;font-size:var(--font-body-small);justify-content:space-between;line-height:24px;margin:8px 0}.mj-boost-speed-score__grade--letter{all:unset;border-radius:var(--jp-border-radius);color:var(--jp-green);cursor:pointer;font-size:var(--font-title-small);font-weight:700;line-height:24px;padding:0 5px}.mj-boost-speed-score__grade--letter:focus{outline:1px dotted var(--jp-black)}.boost-score-tooltip__heading{color:#000;font-size:var(--font-title-small);line-height:30px;margin:0}.boost-score-tooltip__content{font-size:var(--font-body);line-height:24px}.boost-score-tooltip__parent{max-width:340px;min-height:150px;padding:24px;width:calc(100vw - 64px)}@media(min-width:783px){.boost-score-tooltip__parent{width:100vw}}.boost-score-tooltip__parent p:last-child{margin-bottom:0}.mj-boost-speed-score__bar .jb-score-bar__label{display:none}.mj-boost-speed-score__bar .jb-score-bar__filler{border-radius:12px;min-width:49px}.mj-boost-speed-score__bar .jb-score-bar__bounds{border-radius:12px;height:24px;margin-left:0}.mj-boost-speed-score__bar .jb-score-bar__score{border-radius:12px;height:24px;width:30px}.mj-boost-speed-score__increase{align-items:center;color:var(--jp-green-50);display:flex;font-size:var(--font-body-small);line-height:28px;position:absolute;right:24px;top:26px;fill:var(--jp-green-50)}.jb-score-bar__label,.jb-score-bar__loading,.jb-score-bar__score{align-items:center;background-color:#fff;border:2px solid transparent;border-radius:42px;display:flex;height:42px}.jb-score-bar{color:var(--jp-gray-70);display:flex;width:100%}.jb-score-bar--mobile{margin-bottom:1.5rem}@media(max-width:767px){.jb-score-bar{flex-direction:column}.jb-score-bar__label{background-color:transparent}}.jb-score-bar__loading{align-items:center;display:flex;justify-content:center;width:42px}.jb-score-bar__label{display:grid;grid-template-columns:24px 1fr;grid-column-gap:10px;font-size:14px;justify-content:center;position:relative}@media(min-width:768px){.jb-score-bar__label{padding-left:15px;padding-right:15px;width:200px;z-index:50}}.jb-score-bar__score{border-radius:100%;font-weight:700;height:42px;justify-content:center;position:absolute;right:-1px;width:42px}.jb-score-bar__bounds{background-color:#f1f1f1;border-radius:21px;display:flex;height:42px;max-width:100%;position:relative;width:100%;z-index:40}@media(min-width:768px){.jb-score-bar__bounds{margin-left:-21px;width:calc(100% + 21px)}}.jb-score-bar__filler{border-radius:0 42px 42px 0;display:flex;justify-content:flex-end;min-width:85px;position:relative;transition:width .3s ease-in-out;width:0;will-change:width}@media(max-width:767px){.jb-score-bar__filler{border-radius:inherit;min-width:43px}}.jb-score-bar__no_boost_score{--clearance-space:74px;background:#fff;background-clip:padding-box;border:2px solid transparent;border-radius:50%;cursor:pointer;font-size:.7em;height:28px;line-height:1.625;padding:3px;position:absolute;text-align:center;top:6px;width:28px;z-index:2}.jb-score-bar__no_boost_score:hover{border:2px solid hsla(0,0%,100%,.5)}.jb-score-bar__no_boost_score:after{border-bottom:6px solid #fff;border-left:6px solid transparent;border-right:6px solid transparent;content:" ";height:0;left:6px;position:absolute;top:28px;width:0}.jb-score-bar__no_boost_score_tooltip{background:#fff;border-radius:4px;box-shadow:0 0 20px 0 hsla(0,0%,67%,.28);display:none;left:-10em;margin:0 16px;padding:16px;position:absolute;top:-62px;width:20em}.jb-score-bar__no_boost_score_tooltip:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;bottom:-6px;content:" ";height:0;left:10em;margin:0 -10px;position:absolute;width:0}.jb-score-bar__no_boost_score:hover .jb-score-bar__no_boost_score_tooltip{display:block}.jb-score-bar .fill-loading{background-color:var(--jp-white)}.jb-score-bar .fill-good{background-color:var(--jp-green)}.jb-score-bar .fill-mediocre{background-color:var(--jp-orange-20)}.jb-score-bar .fill-bad{background-color:var(--jp-red-50)}.g4lyov8aMDggdD4yOi1p{align-items:baseline;display:flex;margin-top:calc(var(--spacing-base)/2)}.g4lyov8aMDggdD4yOi1p .Ys5ScZ_dYn2O2AzDE5Yi{font-size:32px;font-weight:400;line-height:36px;margin-right:var(--spacing-base)}.sUNg_b7XteVXOrpHAkJg :last-child{margin-top:4px}.cF6QAJf1vXXAMuutXPcq{align-items:baseline;display:flex}.cF6QAJf1vXXAMuutXPcq.coY634LconQ7gzDDNJeu{color:var(--jp-gray-10);fill:var(--jp-gray-10)}.cF6QAJf1vXXAMuutXPcq.kyqpwKaL2FyQ8CtxJQ0f{color:var(--jp-green-50);fill:var(--jp-green-50)}.cF6QAJf1vXXAMuutXPcq.aXf37lEOcjpNV8ImLaYK{color:var(--jp-red-40);fill:var(--jp-red-40)}.cF6QAJf1vXXAMuutXPcq .OyGdoGzsQ48VaVVR99_H{left:2px;position:relative;top:2px}.cF6QAJf1vXXAMuutXPcq .cKLicfMCaDSGPlX222jF{font-size:14px;font-weight:600;line-height:24px}.ZaPXoMGC_e8NfFoBgA95,.gb2kSZHPauLu96D9HAIg{margin-bottom:1.5rem}.qpN923qyxjI06NCgFC8j>li{margin-bottom:0}.hpd1bQCLIZYXpZJa22qw{color:var(--jp-gray-100);font-size:var(--font-body-extra-small);font-weight:500;line-height:var(--font-title-small);margin-bottom:calc(var(--spacing-base) + 2px)}.info-tooltip__content{max-width:340px;min-height:150px;padding:24px;width:calc(100vw - 64px)}.components-popover.is-expanded .info-tooltip__content{max-width:unset;width:auto}@media screen and (min-width:599px)and (max-width:1290px){ul.qpN923qyxjI06NCgFC8j{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}ul.qpN923qyxjI06NCgFC8j>li{grid-column-end:auto}}.value-section{display:flex;justify-content:space-between;margin-top:calc(var(--spacing-base)/2)}.value-section>div{align-items:flex-start;display:flex;flex-direction:column}.value-section__heading{align-items:center;display:flex;text-wrap:nowrap}.value-section__last-scan{align-items:center;column-gap:1px;display:flex;justify-content:flex-end;margin-top:var(--spacing-base);position:absolute;right:calc(var(--spacing-base)*3);width:calc(57% - var(--spacing-base)*3)}.value-section__last-scan div{color:var(--jp-gray-50);font-size:var(--font-body-extra-small);line-height:var(--font-body);text-align:right}@media(max-width:480px){.value-section__last-scan{width:calc(53% - var(--spacing-base)*3)}}.value-section__data{align-items:center;color:var(--jp-gray-50);display:flex;flex:1;font-size:var(--font-body-extra-small);font-weight:500;justify-content:center;line-height:var(--font-title-small)}.value-section__status-icon{display:block;margin-right:calc(var(--spacing-base) - 2px)}.value-section__status-text{letter-spacing:-.24px;margin-right:1px}.scan-threats__threat-count{color:var(--jp-black);font-size:calc(var(--font-title-large) - 4px);font-weight:400;line-height:var(--font-title-large)}.scan-threats__critical-threats{align-items:center;display:flex}.scan-threats__critical-threat-container{margin-left:1px}.scan-threats__critical-threat-container>button>svg{fill:var(--jp-red-50)}.scan-threats__critical-threat-count{color:var(--jp-red-50);margin-left:calc(var(--spacing-base)/4)}.logins_blocked__count{color:var(--jp-black);font-size:calc(var(--font-headline-small) - 4px);font-weight:400;line-height:var(--font-title-large)}.videopress-card__video-count{color:var(--jp-gray-90);display:flex;font-size:calc(var(--font-headline-small) - 4px);line-height:1.125;margin-top:calc(var(--spacing-base)/2)}.videopress-card__video-count .videopress-card__tooltip{height:18px}p.description{color:var(--jp-gray-70);font-size:var(--font-body-small);margin:0 0 1rem}.videopress-card__value-section{display:flex;gap:.75rem;justify-content:space-between}.videopress-card__value-section__container{align-items:flex-start;display:flex;flex-direction:column}.videopress-card__value-section__value-container{align-items:flex-end;display:flex;flex-wrap:wrap}.videopress-card__value-section__value{color:var(--jp-gray-90);font-size:calc(var(--font-headline-small) - 4px);line-height:1}.videopress-card__value-section__previous-value{align-items:center;display:flex;font-size:var(--font-body-extra-small);font-weight:600;line-height:18px}.videopress-card__value-section__previous-value.increase *{color:var(--jp-green-50);fill:var(--jp-green-50)}.videopress-card__value-section__previous-value.decrease *{color:var(--jp-red-50);fill:var(--jp-red-50)}.videopress-card__value-section__heading{align-items:center;display:flex;text-wrap:nowrap}.videopress-card__no-video-tooltip .info-tooltip__button{display:inline;vertical-align:middle}.iG63b_J1HNfT8xEIq619{margin-bottom:.75rem}.T8UhA3lZQjpZsyaah9J6{width:200px}.Tobf3RFq_fT42YGp_h4g{font-size:var(--font-body)}ul.g69ZGQc9wey1u1beD0IP{grid-auto-flow:column;grid-template-columns:repeat(5,100%);overflow-x:auto;scroll-behavior:smooth;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}ul.g69ZGQc9wey1u1beD0IP::-webkit-scrollbar{display:none}ul.g69ZGQc9wey1u1beD0IP li{grid-column:unset;grid-column-end:unset;max-width:100%;scroll-snap-align:start;width:100%}@media screen and (min-width:601px){ul.g69ZGQc9wey1u1beD0IP{grid-template-columns:repeat(5,1fr)}ul.g69ZGQc9wey1u1beD0IP li{width:420px}}@media screen and (min-width:1025px){ul.g69ZGQc9wey1u1beD0IP li{width:320px}}.aWIwsRSR2EZlTGwFYt5J{transition:all .3s ease}.DzezAg6fdaIC26GPBCvD:not(:disabled):hover{transform:translateX(-4px)}.buuFW6iZyD5Nnljxcxj8:not(:disabled):hover{transform:translateX(4px)}.HeJe1crc9XaWWpLvIPit .components-modal__frame{border-bottom-left-radius:4px;border-left:4px solid #e68b28;border-top-left-radius:4px;max-height:100%}.HeJe1crc9XaWWpLvIPit .components-modal__content{margin-top:0;padding:0}.HeJe1crc9XaWWpLvIPit .components-modal__header{display:none}.HeJe1crc9XaWWpLvIPit .or0JUScxkJPmNsfrxkEK .jp-idc__idc-screen{border:0}.components-surface.components-card{border-radius:var(--jp-border-radius-rna)}.upsell-banner{background:#f9f9f6;background:linear-gradient(133deg,#ced9f2,#f9f9f6 10%,#f9f9f6 80%,#f5e6b3);display:flex;flex-direction:column}@media screen and (min-width:660px){.upsell-banner{flex-direction:row}}.upsell-banner.components-card__body.components-card-body{border-radius:var(--jp-border-radius-rna);padding:36px}.upsell-banner .upsell-banner--icon{align-items:flex-start;display:flex;margin-bottom:16px;margin-right:0;margin-top:16px}@media screen and (min-width:660px){.upsell-banner .upsell-banner--icon{align-items:center;margin-bottom:0;margin-right:28px;margin-top:0}}.upsell-banner .upsell-banner--content{display:flex;flex:1;flex-direction:column;justify-content:space-between}@media screen and (min-width:660px){.upsell-banner .upsell-banner--content{flex-direction:row}}.upsell-banner .upsell-banner--content .upsell-banner--content-info{display:flex;flex-direction:column}.upsell-banner .upsell-banner--content .upsell-banner--content-info h3{font-size:1.5rem;font-weight:500;line-height:32px;margin:0}.upsell-banner .upsell-banner--content .upsell-banner--content-info p{font-size:1rem;margin:8px 0 0}.upsell-banner .upsell-banner--content .upsell-banner--content-cta{align-items:center;display:flex;flex-direction:row;margin-left:0;margin-top:16px}@media screen and (min-width:660px){.upsell-banner .upsell-banner--content .upsell-banner--content-cta{margin-left:16px;margin-top:0}}.upsell-banner .upsell-banner--content .upsell-banner--content-cta .upsell-banner--content-cta-button{box-shadow:inset 0 0 0 1.5px #000;font-weight:400;padding:8px 16px;white-space:nowrap}.upsell-banner .upsell-banner--content .upsell-banner--content-cta .upsell-banner--content-cta-button.secondary{background-color:var(--jp-white);color:var(--jp-black)}.upsell-banner .upsell-banner--content .upsell-banner--content-cta .upsell-banner--content-cta-button.primary{margin-left:8px}.yWUvvF4WJLNDSpMgBMfm{align-items:center;display:flex;flex-wrap:wrap;margin:0 auto;max-width:1128px}.ka1fVHj2HOkHjhdoEFOZ{display:grid;grid-gap:24px;grid-template-columns:repeat(4,1fr);margin:0 16px;width:100%}@media(min-width:600px){.ka1fVHj2HOkHjhdoEFOZ{grid-template-columns:repeat(8,1fr);margin:0 18px}}@media(min-width:960px){.ka1fVHj2HOkHjhdoEFOZ{grid-template-columns:repeat(12,1fr);margin:0 24px;max-width:1128px}}.JMOO4Y_9yhTO9lwLnRUx{grid-column-end:span 1}.PFDPAqk51qox_ChLqJwm{grid-column-end:span 2}.ault0jHVfWpShqOGooIP{grid-column-end:span 3}.GqpvdRzmzPJELtSm4FEN{grid-column-end:span 4}@media(min-width:600px){.Ym4_YneEGD_iZD6W1C2o{grid-column-end:span 1}.NbvHnnDtWw8n9BEUQ0Oy{grid-column-end:span 2}.ElMT7rhxe5ZJKO41MnhW{grid-column-end:span 3}.yKjnqjibn_wW_1tWWt5Q{grid-column-end:span 4}.Pb30lOcQFpzUX57GwflS{grid-column-end:span 5}.pC1wxc_R8y4pNILHsiiY{grid-column-end:span 6}.pChscSCnudQoWGjMFKI_{grid-column-end:span 7}.qw1H2gAgF3lDCI2Tbkmb{grid-column-end:span 8}}@media(min-width:960px){.VzcA_rrxBK3g4ozA0oD9{grid-column-end:span 1}.pNAa7O2adRZD8Slgk9iR{grid-column-end:span 2}.tlIMLlipexblj8CeOx4B{grid-column-end:span 3}.Dvt0u5l2Rr1BhBmvYAzl{grid-column-end:span 4}.BiUsgNTc0tyc7tC5jnzE{grid-column-end:span 5}.ulJXAsj7G2ROJ1g3_s28{grid-column-end:span 6}.HsoVlyVLsXYClx9Atox0{grid-column-end:span 7}.oXxjRQNNj2cfIpFBqC1W{grid-column-end:span 8}.qXgUn4Adg9xE_JnbuDio{grid-column-end:span 9}.xMpqTLiLfYFEJiRPQQQq{grid-column-end:span 10}.IiGo3Sz2FDZN7_eGElwA{grid-column-end:span 11}.Om8BNCjfgqQ_wmPQjfOY{grid-column-end:span 12}}@media(max-width:960px){.t10ZWzP7ADjJnR4tqxRS{display:none}}@media(max-width:600px){.eOUlZG8Pelh_Xj0aSoHG{display:none}}.l546LrwBEePz434NFK5Q{border:2px solid var(--jp-green-primary);border-radius:var(--jp-border-radius);display:block;margin:32px 0;padding:16px 64px 16px 24px;position:relative;text-decoration:none}.l546LrwBEePz434NFK5Q span{display:block}.l546LrwBEePz434NFK5Q span:last-of-type{font-weight:600}.l546LrwBEePz434NFK5Q:focus span:last-of-type,.l546LrwBEePz434NFK5Q:hover span:last-of-type{text-decoration:underline;text-decoration-thickness:var(--jp-underline-thickness)}.l546LrwBEePz434NFK5Q:focus:after,.l546LrwBEePz434NFK5Q:hover:after{transform:translateY(-50%) translateX(8px)}.l546LrwBEePz434NFK5Q:after{color:var(--jp-green-primary);content:"→";font-size:24px;font-weight:600;position:absolute;right:24px;top:50%;transform:translateY(-50%);transition:transform .15s ease-out}.Q7w4fcEcemZ2nlwaYNog{fill:var(--jp-yellow-30)!important;display:inline-block!important;width:1.1em!important}.AoNQsOaTt6gSf0H6Yasz{display:inline-block;position:relative}.v13ZwGzUnecPA7Y3URAl{height:18px;left:-53px;pointer-events:none;position:absolute;top:0;width:124px}.EeDbu9pXFWTsCzfTpv2v{pointer-events:all}.BmSvoIi3rErkcrRiOi2W{color:var(--jp-black);font-size:16px;font-weight:600;line-height:19px}.BmSvoIi3rErkcrRiOi2W:not(:last-child){margin-bottom:8px}.mojRoVuWdDJo0E6LEjJw{font-size:14px;font-weight:400;line-height:24px}.golden-token-icon-tooltip .components-popover:not([data-y-axis=middle])[data-x-axis=left] .components-popover__content{margin-right:-62px}.golden-token-icon-tooltip .components-popover:not([data-y-axis=middle])[data-x-axis=right] .components-popover__content{margin-left:-62px}.golden-token-icon-tooltip .components-popover[data-y-axis=bottom] .components-popover__content{top:2px!important}.golden-token-icon-tooltip .components-popover:not(.is-without-arrow)[data-y-axis=bottom]:before{top:-6px!important}.golden-token-icon-tooltip .components-popover:not(.is-without-arrow)[data-y-axis=bottom]:after{top:-4px!important}.golden-token-icon-tooltip .components-popover[data-y-axis=top] .components-popover__content{bottom:10px!important}.golden-token-icon-tooltip .components-popover:not(.is-without-arrow)[data-y-axis=top]:before{bottom:3px}.golden-token-icon-tooltip .components-popover:not(.is-without-arrow)[data-y-axis=top]:after{bottom:4px}.golden-token-icon-tooltip .components-popover__content{border:1px solid var(--jp-gray);border-radius:4px;outline:none;padding:24px;white-space:normal;width:304px}.golden-token-icon-tooltip .components-button.is-link:focus:not(:disabled){box-shadow:none}.wiobThfXJCuhGNrbFIT6 a,.wiobThfXJCuhGNrbFIT6 a:active,.wiobThfXJCuhGNrbFIT6 a:hover{color:var(--jp-black)}.pm2EPQZx6p2VQSiiVCpX{margin-bottom:calc(var(--spacing-base)*3)}.VgAxgahF9bC2M__FiIgV{display:flex}.dbRwkMLqcMF67njPoAF7{margin-right:8px}.V8N_dXausMNmQUO_ROa1{color:var(--jp-red-60)}.jYhEGFLjpRv6QV1Ti7dQ{color:var(--jp-yellow-40)}.Doju0RxvvN9JS12mf489{line-height:calc(var(--spacing-base)*3);margin:0 0 var(--spacing-base) 0}:root{--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,161;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color)}.dataviews-wrapper{box-sizing:border-box;container:dataviews-wrapper/inline-size;display:flex;flex-direction:column;font-size:13px;height:100%;line-height:1.4;overflow:auto;scroll-padding-bottom:64px}.dataviews-filters__container,.dataviews__view-actions{box-sizing:border-box;flex-shrink:0;left:0;padding:16px 48px;position:sticky}@media not (prefers-reduced-motion){.dataviews-filters__container,.dataviews__view-actions{transition:padding .1s ease-out}}.dataviews-loading,.dataviews-no-results{align-items:center;display:flex;flex-grow:1;justify-content:center;padding:0 48px}@media not (prefers-reduced-motion){.dataviews-loading,.dataviews-no-results{transition:padding .1s ease-out}}@container (max-width: 430px){.dataviews-filters__container,.dataviews__view-actions{padding:12px 24px}.dataviews-loading,.dataviews-no-results{padding-left:24px;padding-right:24px}}.dataviews-title-field{font-size:13px;font-weight:500;width:100%}.dataviews-title-field,.dataviews-title-field a{color:#2f2f2f;text-overflow:ellipsis;white-space:nowrap}.dataviews-title-field a{display:block;flex-grow:0;overflow:hidden;text-decoration:none}.dataviews-title-field a:hover{color:var(--wp-admin-theme-color)}.dataviews-title-field a:focus{border-radius:2px;box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color,#007cba);color:var(--wp-admin-theme-color--rgb)}.dataviews-title-field button.components-button.is-link{color:#1e1e1e;display:block;font-weight:inherit;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;width:100%}.dataviews-title-field button.components-button.is-link:hover{color:var(--wp-admin-theme-color)}.dataviews-title-field--clickable{color:#2f2f2f;cursor:pointer}.dataviews-title-field--clickable:hover{color:var(--wp-admin-theme-color)}.dataviews-title-field--clickable:focus{border-radius:2px;box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color,#007cba);color:var(--wp-admin-theme-color--rgb)}.dataviews-bulk-actions-footer__item-count{color:#1e1e1e;font-size:11px;font-weight:500;text-transform:uppercase}.dataviews-bulk-actions-footer__container{margin-right:auto;min-height:32px}.dataviews-filters__button{position:relative}.dataviews-filters__container{padding-top:0}.dataviews-filters__reset-button.dataviews-filters__reset-button[aria-disabled=true],.dataviews-filters__reset-button.dataviews-filters__reset-button[aria-disabled=true]:hover{opacity:0}.dataviews-filters__reset-button.dataviews-filters__reset-button[aria-disabled=true]:focus{opacity:1}.dataviews-filters__summary-popover{font-size:13px;line-height:1.4}.dataviews-filters__summary-popover .components-popover__content{border-radius:4px;width:230px}.dataviews-filters__summary-popover.components-dropdown__content .components-popover__content{padding:0}.dataviews-filters__summary-operators-container{padding:8px 8px 0}.dataviews-filters__summary-operators-container:has(+.dataviews-filters__search-widget-listbox){border-bottom:1px solid #e0e0e0;padding-bottom:8px}.dataviews-filters__summary-operators-container:empty{display:none}.dataviews-filters__summary-operators-container .dataviews-filters__summary-operators-filter-name{color:#757575}.dataviews-filters__summary-chip-container{position:relative;white-space:pre-wrap}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip{align-items:center;background:#f0f0f0;border:1px solid transparent;border-radius:16px;box-sizing:border-box;color:#2f2f2f;cursor:pointer;display:flex;min-height:32px;padding:4px 12px;position:relative}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip.has-reset{padding-inline-end:28px}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip:focus-visible,.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip:hover,.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip[aria-expanded=true]{background:#e0e0e0;color:#1e1e1e}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip.has-values{background:rgba(var(--wp-admin-theme-color--rgb),.04);color:var(--wp-admin-theme-color)}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip.has-values:hover,.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip.has-values[aria-expanded=true]{background:rgba(var(--wp-admin-theme-color--rgb),.12)}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip:focus-visible{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:none}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip .dataviews-filters-__summary-filter-text-name{font-weight:500}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip-remove{align-items:center;background:transparent;border:0;border-radius:50%;cursor:pointer;display:flex;height:24px;justify-content:center;padding:0;position:absolute;right:4px;top:50%;transform:translateY(-50%);width:24px}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip-remove svg{fill:#757575}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip-remove:focus,.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip-remove:hover{background:#e0e0e0}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip-remove:focus svg,.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip-remove:hover svg{fill:#1e1e1e}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip-remove.has-values svg{fill:var(--wp-admin-theme-color)}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip-remove.has-values:hover{background:rgba(var(--wp-admin-theme-color--rgb),.08)}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip-remove:focus-visible{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:none}.dataviews-filters__search-widget-filter-combobox-list{border-top:1px solid #e0e0e0;max-height:184px;overflow:auto;padding:4px}.dataviews-filters__search-widget-filter-combobox-list .dataviews-filters__search-widget-filter-combobox-item-value [data-user-value]{font-weight:600}.dataviews-filters__search-widget-listbox{overflow:auto;padding:4px}.dataviews-filters__search-widget-listitem{align-items:center;border-radius:2px;box-sizing:border-box;cursor:default;display:flex;gap:8px;margin-block-end:2px;padding:8px 12px}.dataviews-filters__search-widget-listitem:last-child{margin-block-end:0}.dataviews-filters__search-widget-listitem:focus,.dataviews-filters__search-widget-listitem:hover,.dataviews-filters__search-widget-listitem[data-active-item]{background-color:var(--wp-admin-theme-color);color:#fff}.dataviews-filters__search-widget-listitem:focus .dataviews-filters__search-widget-listitem-check,.dataviews-filters__search-widget-listitem:hover .dataviews-filters__search-widget-listitem-check,.dataviews-filters__search-widget-listitem[data-active-item] .dataviews-filters__search-widget-listitem-check{fill:#fff}.dataviews-filters__search-widget-listitem:focus .dataviews-filters__search-widget-listitem-description,.dataviews-filters__search-widget-listitem:hover .dataviews-filters__search-widget-listitem-description,.dataviews-filters__search-widget-listitem[data-active-item] .dataviews-filters__search-widget-listitem-description{color:#fff}.dataviews-filters__search-widget-listitem .dataviews-filters__search-widget-listitem-check{flex-shrink:0;height:24px;width:24px}.dataviews-filters__search-widget-listitem .dataviews-filters__search-widget-listitem-description{color:#757575;display:block;font-size:12px;line-height:16px;overflow:hidden;text-overflow:ellipsis}.dataviews-filters__search-widget-filter-combobox__wrapper{padding:8px;position:relative}.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input{background:#f0f0f0;border:none;border-radius:2px;box-shadow:0 0 0 transparent;display:block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;height:32px;line-height:normal;margin-left:0;margin-right:0;padding:0 32px 0 8px;width:100%}@media not (prefers-reduced-motion){.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input{transition:box-shadow .1s linear}}@media(min-width:600px){.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input{font-size:13px;line-height:normal}}.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input:focus{border-color:var(--wp-admin-theme-color);box-shadow:0 0 0 .5px var(--wp-admin-theme-color);outline:2px solid transparent}.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input::-webkit-input-placeholder{color:rgba(30,30,30,.62)}.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input::-moz-placeholder{color:rgba(30,30,30,.62)}.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input:-ms-input-placeholder{color:rgba(30,30,30,.62)}@media(min-width:600px){.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input{font-size:13px}}.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input:focus{background:#fff;box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color)}.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input::placeholder{color:#757575}.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input::-webkit-search-cancel-button,.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input::-webkit-search-decoration,.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input::-webkit-search-results-button,.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input::-webkit-search-results-decoration{-webkit-appearance:none}.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__icon{align-items:center;display:flex;justify-content:center;position:absolute;right:12px;top:50%;transform:translateY(-50%);width:24px}.dataviews-filters__container-visibility-toggle{flex-shrink:0;position:relative}.dataviews-filters-toggle__count{background:var(--wp-admin-theme-color,#3858e9);border-radius:8px;box-sizing:border-box;color:#fff;font-size:11px;height:16px;line-height:16px;min-width:16px;outline:var(--wp-admin-border-width-focus) solid #fff;padding:0 4px;position:absolute;right:0;text-align:center;top:0;transform:translate(50%,-50%)}.dataviews-search{width:fit-content}.dataviews-footer{background-color:#fff;border-top:1px solid #f0f0f0;bottom:0;flex-shrink:0;left:0;padding:12px 48px;position:sticky;z-index:2}@media not (prefers-reduced-motion){.dataviews-footer{transition:padding .1s ease-out}}@container (max-width: 430px){.dataviews-footer{padding:12px 24px}}@container (max-width: 560px){.dataviews-footer{flex-direction:column!important}.dataviews-footer .dataviews-bulk-actions-footer__container{width:100%}.dataviews-footer .dataviews-bulk-actions-footer__item-count{flex-grow:1}.dataviews-footer .dataviews-pagination{justify-content:space-between;width:100%}}.dataviews-pagination__page-select{font-size:11px;font-weight:500;text-transform:uppercase}@media(min-width:600px){.dataviews-pagination__page-select .components-select-control__input{font-size:11px!important;font-weight:500}}.dataviews-action-modal{z-index:1000001}.dataviews-selection-checkbox{--checkbox-input-size:24px;flex-shrink:0;line-height:0}@media(min-width:600px){.dataviews-selection-checkbox{--checkbox-input-size:16px}}.dataviews-selection-checkbox .components-checkbox-control__input-container{margin:0}.dataviews-view-config{container-type:inline-size;font-size:13px;line-height:1.4;width:320px}.dataviews-config__popover.is-expanded .dataviews-config__popover-content-wrapper{height:100%;overflow-y:scroll}.dataviews-config__popover.is-expanded .dataviews-config__popover-content-wrapper .dataviews-view-config{width:auto}.dataviews-view-config__sort-direction .components-toggle-group-control-option-base{text-transform:uppercase}.dataviews-settings-section__title.dataviews-settings-section__title{font-size:15px;line-height:24px}.dataviews-settings-section__sidebar{grid-column:span 4}.dataviews-settings-section__content,.dataviews-settings-section__content>*{grid-column:span 8}.dataviews-settings-section__content .is-divided-in-two{display:contents}.dataviews-settings-section__content .is-divided-in-two>*{grid-column:span 4}.dataviews-settings-section:has(.dataviews-settings-section__content:empty){display:none}@container (max-width: 500px){.dataviews-settings-section.dataviews-settings-section{grid-template-columns:repeat(2,1fr)}.dataviews-settings-section.dataviews-settings-section .dataviews-settings-section__content,.dataviews-settings-section.dataviews-settings-section .dataviews-settings-section__sidebar{grid-column:span 2}}.dataviews-field-control__field{height:32px}.dataviews-field-control__actions{position:absolute;top:-9999em}.dataviews-field-control__actions.dataviews-field-control__actions{gap:4px}.dataviews-field-control__field.is-interacting .dataviews-field-control__actions,.dataviews-field-control__field:focus-within .dataviews-field-control__actions,.dataviews-field-control__field:hover .dataviews-field-control__actions{position:unset;top:unset}.dataviews-field-control__icon{display:flex;width:24px}.dataviews-field-control__label-sub-label-container{flex-grow:1}.dataviews-field-control__label{display:block}.dataviews-field-control__sub-label{color:#757575;font-size:11px;font-style:normal;margin-bottom:0;margin-top:8px}.dataviews-view-grid{container-type:inline-size;grid-template-rows:max-content;margin-bottom:auto;padding:0 48px 24px}@media not (prefers-reduced-motion){.dataviews-view-grid{transition:padding .1s ease-out}}.dataviews-view-grid .dataviews-view-grid__card{height:100%;justify-content:flex-start;position:relative}.dataviews-view-grid .dataviews-view-grid__card .dataviews-view-grid__title-actions{padding:8px 0 4px}.dataviews-view-grid .dataviews-view-grid__card .dataviews-view-grid__title-field{align-items:center;display:flex;min-height:24px}.dataviews-view-grid .dataviews-view-grid__card .dataviews-view-grid__title-field--clickable{width:fit-content}.dataviews-view-grid .dataviews-view-grid__card.is-selected .dataviews-view-grid__fields .dataviews-view-grid__field .dataviews-view-grid__field-value{color:#1e1e1e}.dataviews-view-grid .dataviews-view-grid__card .dataviews-view-grid__media:focus:after,.dataviews-view-grid .dataviews-view-grid__card.is-selected .dataviews-view-grid__media:after{background-color:rgba(var(--wp-admin-theme-color--rgb),.08)}.dataviews-view-grid .dataviews-view-grid__card.is-selected .dataviews-view-grid__media:after{box-shadow:inset 0 0 0 1px var(--wp-admin-theme-color)}.dataviews-view-grid .dataviews-view-grid__card .dataviews-view-grid__media:focus:after{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color)}.dataviews-view-grid .dataviews-view-grid__media{aspect-ratio:1/1;background-color:#f0f0f0;border-radius:4px;min-height:200px;position:relative;width:100%}.dataviews-view-grid .dataviews-view-grid__media img{height:100%;object-fit:cover;width:100%}.dataviews-view-grid .dataviews-view-grid__media:after{border-radius:4px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);content:"";height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.dataviews-view-grid .dataviews-view-grid__fields{font-size:12px;line-height:16px;position:relative}.dataviews-view-grid .dataviews-view-grid__fields:not(:empty){padding:0 0 12px}.dataviews-view-grid .dataviews-view-grid__fields .dataviews-view-grid__field-value:not(:empty){line-height:20px;min-height:24px;padding-top:2px}.dataviews-view-grid .dataviews-view-grid__fields .dataviews-view-grid__field{align-items:center;min-height:24px}.dataviews-view-grid .dataviews-view-grid__fields .dataviews-view-grid__field .dataviews-view-grid__field-name{color:#757575;width:35%}.dataviews-view-grid .dataviews-view-grid__fields .dataviews-view-grid__field .dataviews-view-grid__field-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:65%}.dataviews-view-grid .dataviews-view-grid__fields .dataviews-view-grid__field:not(:has(.dataviews-view-grid__field-value:not(:empty))){display:none}.dataviews-view-grid .dataviews-view-grid__badge-fields:not(:empty){padding-bottom:12px}@container (max-width: 480px){.dataviews-view-grid.dataviews-view-grid{grid-template-columns:repeat(1,minmax(0,1fr));padding-left:24px;padding-right:24px}}@container (min-width: 480px){.dataviews-view-grid.dataviews-view-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (min-width: 780px){.dataviews-view-grid.dataviews-view-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@container (min-width: 1140px){.dataviews-view-grid.dataviews-view-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@container (min-width: 1520px){.dataviews-view-grid.dataviews-view-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}.dataviews-view-grid__field-value:empty,.dataviews-view-grid__field:empty{display:none}.dataviews-view-grid__card .dataviews-selection-checkbox{left:8px;position:absolute;top:-9999em;z-index:1}.dataviews-view-grid__card.is-selected .dataviews-selection-checkbox,.dataviews-view-grid__card:focus-within .dataviews-selection-checkbox,.dataviews-view-grid__card:hover .dataviews-selection-checkbox{top:8px}.dataviews-view-grid__media--clickable{cursor:pointer}div.dataviews-view-list{list-style-type:none}.dataviews-view-list{margin:0 0 auto}.dataviews-view-list div[role=row]{border-top:1px solid #f0f0f0;margin:0}.dataviews-view-list div[role=row] .dataviews-view-list__item-wrapper{box-sizing:border-box;padding:16px 24px;position:relative}.dataviews-view-list div[role=row] .dataviews-view-list__item-actions{flex:0;overflow:hidden}.dataviews-view-list div[role=row] .dataviews-view-list__item-actions>div{height:24px}.dataviews-view-list div[role=row] .dataviews-view-list__item-actions .components-button{opacity:0;position:relative;z-index:1}.dataviews-view-list div[role=row]:where(.is-selected,.is-hovered,:focus-within) .dataviews-view-list__item-actions{flex-basis:min-content;overflow:unset;padding-inline-end:4px}.dataviews-view-list div[role=row]:where(.is-selected,.is-hovered,:focus-within) .dataviews-view-list__item-actions .components-button{opacity:1}.dataviews-view-list div[role=row].is-selected.is-selected,.dataviews-view-list div[role=row].is-selected.is-selected+div[role=row]{border-top:1px solid rgba(var(--wp-admin-theme-color--rgb),.12)}.dataviews-view-list div[role=row]:not(.is-selected) .dataviews-view-list__title-field{color:#1e1e1e}.dataviews-view-list div[role=row]:not(.is-selected).is-hovered,.dataviews-view-list div[role=row]:not(.is-selected):focus-within,.dataviews-view-list div[role=row]:not(.is-selected):hover{background-color:#f8f8f8;color:var(--wp-admin-theme-color)}.dataviews-view-list div[role=row]:not(.is-selected).is-hovered .dataviews-view-list__fields,.dataviews-view-list div[role=row]:not(.is-selected).is-hovered .dataviews-view-list__title-field,.dataviews-view-list div[role=row]:not(.is-selected):focus-within .dataviews-view-list__fields,.dataviews-view-list div[role=row]:not(.is-selected):focus-within .dataviews-view-list__title-field,.dataviews-view-list div[role=row]:not(.is-selected):hover .dataviews-view-list__fields,.dataviews-view-list div[role=row]:not(.is-selected):hover .dataviews-view-list__title-field{color:var(--wp-admin-theme-color)}.dataviews-view-list div[role=row].is-selected .dataviews-view-list__item-wrapper,.dataviews-view-list div[role=row].is-selected:focus-within .dataviews-view-list__item-wrapper{background-color:rgba(var(--wp-admin-theme-color--rgb),.04);color:#1e1e1e}.dataviews-view-list div[role=row].is-selected .dataviews-view-list__item-wrapper .dataviews-view-list__fields,.dataviews-view-list div[role=row].is-selected .dataviews-view-list__item-wrapper .dataviews-view-list__title-field,.dataviews-view-list div[role=row].is-selected:focus-within .dataviews-view-list__item-wrapper .dataviews-view-list__fields,.dataviews-view-list div[role=row].is-selected:focus-within .dataviews-view-list__item-wrapper .dataviews-view-list__title-field{color:var(--wp-admin-theme-color)}.dataviews-view-list .dataviews-view-list__item{appearance:none;background:none;border:none;cursor:pointer;inset:0;padding:0;position:absolute;scroll-margin:8px 0;z-index:1}.dataviews-view-list .dataviews-view-list__item:focus-visible{outline:none}.dataviews-view-list .dataviews-view-list__item:focus-visible:before{border-radius:2px;box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);content:"";inset:var(--wp-admin-border-width-focus);outline:2px solid transparent;position:absolute}.dataviews-view-list .dataviews-view-list__title-field{flex:1;line-height:24px;min-height:24px;overflow:hidden}.dataviews-view-list .dataviews-view-list__title-field:has(a,button){z-index:1}.dataviews-view-list .dataviews-view-list__media-wrapper{background-color:#f0f0f0;border-radius:4px;flex-shrink:0;height:52px;overflow:hidden;position:relative;width:52px}.dataviews-view-list .dataviews-view-list__media-wrapper img{height:100%;object-fit:cover;width:100%}.dataviews-view-list .dataviews-view-list__media-wrapper:after{border-radius:4px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);content:"";height:100%;left:0;position:absolute;top:0;width:100%}.dataviews-view-list .dataviews-view-list__field-wrapper{flex-grow:1;min-height:52px}.dataviews-view-list .dataviews-view-list__fields{color:#757575;display:flex;flex-wrap:wrap;font-size:12px;gap:12px;row-gap:4px}.dataviews-view-list .dataviews-view-list__fields:empty{display:none}.dataviews-view-list .dataviews-view-list__fields .dataviews-view-list__field:has(.dataviews-view-list__field-value:empty){display:none}.dataviews-view-list .dataviews-view-list__fields .dataviews-view-list__field-value{align-items:center;display:flex;line-height:20px;min-height:24px}.dataviews-view-list+.dataviews-pagination{justify-content:space-between}.dataviews-view-table{border-collapse:collapse;border-color:inherit;color:#757575;margin-bottom:auto;position:relative;text-indent:0;width:100%}.dataviews-view-table th{color:#1e1e1e;font-size:13px;font-weight:400;text-align:left}.dataviews-view-table td,.dataviews-view-table th{padding:12px;white-space:nowrap}.dataviews-view-table td.dataviews-view-table__actions-column,.dataviews-view-table th.dataviews-view-table__actions-column{text-align:right}.dataviews-view-table td.dataviews-view-table__checkbox-column,.dataviews-view-table th.dataviews-view-table__checkbox-column{padding-right:0;width:1%}.dataviews-view-table tr{border-top:1px solid #f0f0f0}.dataviews-view-table tr .dataviews-view-table-header-button{gap:4px}.dataviews-view-table tr td:first-child,.dataviews-view-table tr th:first-child{padding-left:48px}.dataviews-view-table tr td:first-child .dataviews-view-table-header-button,.dataviews-view-table tr th:first-child .dataviews-view-table-header-button{margin-left:-8px}.dataviews-view-table tr td:last-child,.dataviews-view-table tr th:last-child{padding-right:48px}.dataviews-view-table tr:last-child{border-bottom:0}.dataviews-view-table tr.is-hovered{background-color:#f8f8f8}.dataviews-view-table tr .components-checkbox-control__input.components-checkbox-control__input{opacity:0}.dataviews-view-table tr .components-checkbox-control__input.components-checkbox-control__input:checked,.dataviews-view-table tr .components-checkbox-control__input.components-checkbox-control__input:focus,.dataviews-view-table tr .components-checkbox-control__input.components-checkbox-control__input:indeterminate{opacity:1}.dataviews-view-table tr .dataviews-item-actions .components-button:not(.dataviews-all-actions-button){opacity:0}.dataviews-view-table tr.is-hovered .components-checkbox-control__input,.dataviews-view-table tr.is-hovered .dataviews-item-actions .components-button:not(.dataviews-all-actions-button),.dataviews-view-table tr:focus-within .components-checkbox-control__input,.dataviews-view-table tr:focus-within .dataviews-item-actions .components-button:not(.dataviews-all-actions-button),.dataviews-view-table tr:hover .components-checkbox-control__input,.dataviews-view-table tr:hover .dataviews-item-actions .components-button:not(.dataviews-all-actions-button){opacity:1}@media(hover:none){.dataviews-view-table tr .components-checkbox-control__input.components-checkbox-control__input,.dataviews-view-table tr .dataviews-item-actions .components-button:not(.dataviews-all-actions-button){opacity:1}}.dataviews-view-table tr.is-selected{background-color:rgba(var(--wp-admin-theme-color--rgb),.04);color:#757575}.dataviews-view-table tr.is-selected,.dataviews-view-table tr.is-selected+tr{border-top:1px solid rgba(var(--wp-admin-theme-color--rgb),.12)}.dataviews-view-table tr.is-selected:hover{background-color:rgba(var(--wp-admin-theme-color--rgb),.08)}.dataviews-view-table thead{inset-block-start:0;position:sticky;z-index:1}.dataviews-view-table thead tr{border:0}.dataviews-view-table thead th{background-color:#fff;font-size:11px;font-weight:500;padding-bottom:8px;padding-left:12px;padding-top:8px;text-transform:uppercase}.dataviews-view-table thead th:has(.dataviews-view-table-header-button):not(:first-child){padding-left:4px}.dataviews-view-table tbody td{vertical-align:top}.dataviews-view-table tbody .dataviews-view-table__cell-content-wrapper{align-items:center;display:flex;min-height:32px}.dataviews-view-table tbody .components-v-stack>.dataviews-view-table__cell-content-wrapper:not(:first-child){min-height:0}.dataviews-view-table .dataviews-view-table-header-button{font-size:11px;font-weight:500;padding:4px 8px;text-transform:uppercase}.dataviews-view-table .dataviews-view-table-header-button:not(:hover){color:#1e1e1e}.dataviews-view-table .dataviews-view-table-header-button span{speak:none}.dataviews-view-table .dataviews-view-table-header-button span:empty{display:none}.dataviews-view-table .dataviews-view-table-header{padding-left:4px}.dataviews-view-table .dataviews-view-table__actions-column{width:1%}.dataviews-view-table:has(tr.is-selected) .components-checkbox-control__input{opacity:1}.dataviews-view-table.has-compact-density thead th:has(.dataviews-view-table-header-button):not(:first-child){padding-left:0}.dataviews-view-table.has-compact-density td,.dataviews-view-table.has-compact-density th{padding:4px 8px}.dataviews-view-table.has-comfortable-density td,.dataviews-view-table.has-comfortable-density th{padding:16px 12px}.dataviews-view-table.has-comfortable-density td.dataviews-view-table__checkbox-column,.dataviews-view-table.has-comfortable-density th.dataviews-view-table__checkbox-column,.dataviews-view-table.has-compact-density td.dataviews-view-table__checkbox-column,.dataviews-view-table.has-compact-density th.dataviews-view-table__checkbox-column{padding-right:0}@container (max-width: 430px){.dataviews-view-table tr td:first-child,.dataviews-view-table tr th:first-child{padding-left:24px}.dataviews-view-table tr td:last-child,.dataviews-view-table tr th:last-child{padding-right:24px}}.dataviews-view-table-selection-checkbox{--checkbox-input-size:24px}@media(min-width:600px){.dataviews-view-table-selection-checkbox{--checkbox-input-size:16px}}.dataviews-column-primary__media{max-width:60px}.dataviews-controls__datetime{border:none;padding:0}.dataforms-layouts-panel__field{align-items:flex-start!important;justify-content:flex-start!important;min-height:32px;width:100%}.dataforms-layouts-panel__field-label{align-items:center;display:flex;flex-shrink:0;hyphens:auto;line-height:20px;min-height:32px;padding:6px 0;width:38%}.dataforms-layouts-panel__field-control{align-items:center;display:flex;flex-grow:1;min-height:32px}.dataforms-layouts-panel__field-control .components-button{max-width:100%;min-height:32px;text-align:left;text-wrap:balance;text-wrap:pretty;white-space:normal}.dataforms-layouts-panel__field-control .components-dropdown{max-width:100%}.dataforms-layouts-panel__field-dropdown .components-popover__content{min-width:320px;padding:16px}.dataforms-layouts-panel__dropdown-header{margin-bottom:16px}.components-popover.components-dropdown__content.dataforms-layouts-panel__field-dropdown{z-index:159990}.dataforms-layouts-regular__field{align-items:flex-start!important;justify-content:flex-start!important;min-height:32px;width:100%}.dataforms-layouts-regular__field .components-base-control__label{font-size:inherit;font-weight:400;text-transform:none}.dataforms-layouts-regular__field-label{align-items:center;display:flex;flex-shrink:0;hyphens:auto;line-height:20px;min-height:32px;padding:6px 0;width:38%}.dataforms-layouts-regular__field-control{align-items:center;display:flex;flex-grow:1;min-height:32px}:root{--wp-admin-theme-color:#3858e9;--wp-admin-theme-color--rgb:56,88,233;--wp-admin-theme-color-darker-10:#2145e6;--wp-admin-theme-color-darker-10--rgb:33,69,230;--wp-admin-theme-color-darker-20:#183ad6;--wp-admin-theme-color-darker-20--rgb:24,58,214;--wp-admin-border-width-focus:2px}@media(min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}@media not (prefers-reduced-motion){.components-animate__appear{animation:components-animate__appear-animation .1s cubic-bezier(0,0,.2,1) 0s;animation-fill-mode:forwards}}.components-animate__appear.is-from-top,.components-animate__appear.is-from-top.is-from-left{transform-origin:top left}.components-animate__appear.is-from-top.is-from-right{transform-origin:top right}.components-animate__appear.is-from-bottom,.components-animate__appear.is-from-bottom.is-from-left{transform-origin:bottom left}.components-animate__appear.is-from-bottom.is-from-right{transform-origin:bottom right}@keyframes components-animate__appear-animation{0%{transform:translateY(-2em) scaleY(0) scaleX(0)}to{transform:translateY(0) scaleY(1) scaleX(1)}}@media not (prefers-reduced-motion){.components-animate__slide-in{animation:components-animate__slide-in-animation .1s cubic-bezier(0,0,.2,1);animation-fill-mode:forwards}.components-animate__slide-in.is-from-left{transform:translateX(100%)}.components-animate__slide-in.is-from-right{transform:translateX(-100%)}}@keyframes components-animate__slide-in-animation{to{transform:translateX(0)}}@media not (prefers-reduced-motion){.components-animate__loading{animation:components-animate__loading 1.6s ease-in-out infinite}}@keyframes components-animate__loading{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}.components-autocomplete__popover .components-popover__content{min-width:200px;padding:8px}.components-autocomplete__result.components-button{display:flex;height:auto;min-height:36px;text-align:left;width:100%}.components-autocomplete__result.components-button:focus:not(:disabled){box-shadow:inset 0 0 0 1px #fff,0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid transparent}.components-badge{align-items:center;background-color:color-mix(in srgb,#fff 90%,var(--base-color));border-radius:2px;box-sizing:border-box;color:color-mix(in srgb,#000 50%,var(--base-color));display:inline-flex;font-size:12px;font-weight:400;gap:2px;line-height:20px;max-width:100%;min-height:24px;padding:0 8px}.components-badge *,.components-badge :after,.components-badge :before{box-sizing:inherit}.components-badge:where(.is-default){background-color:#f0f0f0;color:#2f2f2f}.components-badge.has-icon{padding-inline-start:4px}.components-badge.is-info{--base-color:#3858e9}.components-badge.is-warning{--base-color:#f0b849}.components-badge.is-error{--base-color:#cc1818}.components-badge.is-success{--base-color:#4ab866}.components-badge__icon{flex-shrink:0}.components-badge__content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.components-button-group{display:inline-block}.components-button-group .components-button{border-radius:0;box-shadow:inset 0 0 0 1px #1e1e1e;color:#1e1e1e;display:inline-flex}.components-button-group .components-button+.components-button{margin-left:-1px}.components-button-group .components-button:first-child{border-radius:2px 0 0 2px}.components-button-group .components-button:last-child{border-radius:0 2px 2px 0}.components-button-group .components-button.is-primary,.components-button-group .components-button:focus{position:relative;z-index:1}.components-button-group .components-button.is-primary{box-shadow:inset 0 0 0 1px #1e1e1e}.components-button{align-items:center;-webkit-appearance:none;background:none;border:0;border-radius:2px;box-sizing:border-box;color:var(--wp-components-color-foreground,#1e1e1e);cursor:pointer;display:inline-flex;font-family:inherit;font-size:13px;height:36px;margin:0;padding:6px 12px;text-decoration:none}@media not (prefers-reduced-motion){.components-button{transition:box-shadow .1s linear}}.components-button.is-next-40px-default-size{height:40px}.components-button:hover:not(:disabled,[aria-disabled=true]),.components-button[aria-expanded=true]{color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-button:focus:not(:disabled){box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));outline:3px solid transparent}.components-button.is-primary{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));color:var(--wp-components-color-accent-inverted,#fff);outline:1px solid transparent;text-decoration:none;text-shadow:none;white-space:nowrap}.components-button.is-primary:hover:not(:disabled){background:var(--wp-components-color-accent-darker-10,var(--wp-admin-theme-color-darker-10,#2145e6));color:var(--wp-components-color-accent-inverted,#fff)}.components-button.is-primary:active:not(:disabled){background:var(--wp-components-color-accent-darker-20,var(--wp-admin-theme-color-darker-20,#183ad6));border-color:var(--wp-components-color-accent-darker-20,var(--wp-admin-theme-color-darker-20,#183ad6));color:var(--wp-components-color-accent-inverted,#fff)}.components-button.is-primary:focus:not(:disabled){box-shadow:inset 0 0 0 1px var(--wp-components-color-background,#fff),0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-button.is-primary:disabled,.components-button.is-primary:disabled:active:enabled,.components-button.is-primary[aria-disabled=true],.components-button.is-primary[aria-disabled=true]:active:enabled,.components-button.is-primary[aria-disabled=true]:enabled{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));border-color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));color:hsla(0,0%,100%,.4);outline:none}.components-button.is-primary:disabled:active:enabled:focus:enabled,.components-button.is-primary:disabled:focus:enabled,.components-button.is-primary[aria-disabled=true]:active:enabled:focus:enabled,.components-button.is-primary[aria-disabled=true]:enabled:focus:enabled,.components-button.is-primary[aria-disabled=true]:focus:enabled{box-shadow:inset 0 0 0 1px var(--wp-components-color-background,#fff),0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-button.is-primary.is-busy,.components-button.is-primary.is-busy:disabled,.components-button.is-primary.is-busy[aria-disabled=true]{background-image:linear-gradient(-45deg,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)) 33%,var(--wp-components-color-accent-darker-20,var(--wp-admin-theme-color-darker-20,#183ad6)) 33%,var(--wp-components-color-accent-darker-20,var(--wp-admin-theme-color-darker-20,#183ad6)) 70%,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)) 70%);background-size:100px 100%;border-color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));color:var(--wp-components-color-accent-inverted,#fff)}.components-button.is-secondary,.components-button.is-tertiary{outline:1px solid transparent}.components-button.is-secondary:active:not(:disabled),.components-button.is-tertiary:active:not(:disabled){box-shadow:none}.components-button.is-secondary:disabled,.components-button.is-secondary[aria-disabled=true],.components-button.is-secondary[aria-disabled=true]:hover,.components-button.is-tertiary:disabled,.components-button.is-tertiary[aria-disabled=true],.components-button.is-tertiary[aria-disabled=true]:hover{background:transparent;color:#949494;transform:none}.components-button.is-secondary{background:transparent;box-shadow:inset 0 0 0 1px var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)),0 0 0 currentColor;color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));outline:1px solid transparent;white-space:nowrap}.components-button.is-secondary:hover:not(:disabled,[aria-disabled=true],.is-pressed){background:color-mix(in srgb,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)) 4%,transparent);box-shadow:inset 0 0 0 1px var(--wp-components-color-accent-darker-20,var(--wp-admin-theme-color-darker-20,#183ad6));color:var(--wp-components-color-accent-darker-20,var(--wp-admin-theme-color-darker-20,#183ad6))}.components-button.is-secondary:disabled:not(:focus),.components-button.is-secondary[aria-disabled=true]:hover:not(:focus),.components-button.is-secondary[aria-disabled=true]:not(:focus){box-shadow:inset 0 0 0 1px #ddd}.components-button.is-secondary:focus:not(:disabled){box-shadow:0 0 0 currentColor inset,0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-button.is-tertiary{background:transparent;color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));white-space:nowrap}.components-button.is-tertiary:hover:not(:disabled,[aria-disabled=true]){background:color-mix(in srgb,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)) 4%,transparent);color:var(--wp-components-color-accent-darker-20,var(--wp-admin-theme-color-darker-20,#183ad6))}.components-button.is-tertiary:active:not(:disabled,[aria-disabled=true]){background:color-mix(in srgb,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)) 8%,transparent)}p+.components-button.is-tertiary{margin-left:-6px}.components-button.is-tertiary:disabled:not(:focus),.components-button.is-tertiary[aria-disabled=true]:hover:not(:focus),.components-button.is-tertiary[aria-disabled=true]:not(:focus){box-shadow:none;outline:none}.components-button.is-destructive{--wp-components-color-accent:#cc1818;--wp-components-color-accent-darker-10:#9e1313;--wp-components-color-accent-darker-20:#710d0d}.components-button.is-destructive:not(.is-primary):not(.is-secondary):not(.is-tertiary):not(.is-link){color:#cc1818}.components-button.is-destructive:not(.is-primary):not(.is-secondary):not(.is-tertiary):not(.is-link):hover:not(:disabled,[aria-disabled=true]){color:#710d0d}.components-button.is-destructive:not(.is-primary):not(.is-secondary):not(.is-tertiary):not(.is-link):focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) #cc1818}.components-button.is-destructive:not(.is-primary):not(.is-secondary):not(.is-tertiary):not(.is-link):active:not(:disabled,[aria-disabled=true]){background:#ccc}.components-button.is-destructive:not(.is-primary):not(.is-secondary):not(.is-tertiary):not(.is-link):disabled,.components-button.is-destructive:not(.is-primary):not(.is-secondary):not(.is-tertiary):not(.is-link)[aria-disabled=true]{color:#949494}.components-button.is-destructive.is-secondary:hover:not(:disabled,[aria-disabled=true]),.components-button.is-destructive.is-tertiary:hover:not(:disabled,[aria-disabled=true]){background:rgba(204,24,24,.04)}.components-button.is-destructive.is-secondary:active:not(:disabled,[aria-disabled=true]),.components-button.is-destructive.is-tertiary:active:not(:disabled,[aria-disabled=true]){background:rgba(204,24,24,.08)}.components-button.is-link{background:none;border:0;border-radius:0;box-shadow:none;color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));height:auto;margin:0;outline:none;padding:0;text-align:left;text-decoration:underline}@media not (prefers-reduced-motion){.components-button.is-link{transition-duration:.05s;transition-property:border,background,color;transition-timing-function:ease-in-out}}.components-button.is-link:focus{border-radius:2px}.components-button.is-link:disabled,.components-button.is-link[aria-disabled=true]{color:#949494}.components-button:not(:disabled,[aria-disabled=true]):active{color:var(--wp-components-color-foreground,#1e1e1e)}.components-button:disabled,.components-button[aria-disabled=true]{color:#949494;cursor:default}.components-button.is-busy,.components-button.is-secondary.is-busy,.components-button.is-secondary.is-busy:disabled,.components-button.is-secondary.is-busy[aria-disabled=true]{background-image:linear-gradient(-45deg,#fafafa 33%,#e0e0e0 0,#e0e0e0 70%,#fafafa 0);background-size:100px 100%}@media not (prefers-reduced-motion){.components-button.is-busy,.components-button.is-secondary.is-busy,.components-button.is-secondary.is-busy:disabled,.components-button.is-secondary.is-busy[aria-disabled=true]{animation:components-button__busy-animation 2.5s linear infinite}}.components-button.is-compact{height:32px}.components-button.is-compact.has-icon:not(.has-text){min-width:32px;padding:0;width:32px}.components-button.is-small{font-size:11px;height:24px;line-height:22px;padding:0 8px}.components-button.is-small.has-icon:not(.has-text){min-width:24px;padding:0;width:24px}.components-button.has-icon{justify-content:center;min-width:36px;padding:6px}.components-button.has-icon.is-next-40px-default-size{min-width:40px}.components-button.has-icon .dashicon{align-items:center;box-sizing:content-box;display:inline-flex;justify-content:center;padding:2px}.components-button.has-icon.has-text{gap:4px;justify-content:start;padding-left:8px;padding-right:12px}.components-button.is-pressed,.components-button.is-pressed:hover{color:var(--wp-components-color-foreground-inverted,#fff)}.components-button.is-pressed:hover:not(:disabled,[aria-disabled=true]),.components-button.is-pressed:not(:disabled,[aria-disabled=true]){background:var(--wp-components-color-foreground,#1e1e1e)}.components-button.is-pressed:disabled,.components-button.is-pressed[aria-disabled=true]{color:#949494}.components-button.is-pressed:disabled:not(.is-primary):not(.is-secondary):not(.is-tertiary),.components-button.is-pressed[aria-disabled=true]:not(.is-primary):not(.is-secondary):not(.is-tertiary){background:#949494;color:var(--wp-components-color-foreground-inverted,#fff)}.components-button.is-pressed:focus:not(:disabled){box-shadow:inset 0 0 0 1px var(--wp-components-color-background,#fff),0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));outline:2px solid transparent}.components-button svg{fill:currentColor;outline:none}@media(forced-colors:active){.components-button svg{fill:CanvasText}}.components-button .components-visually-hidden{height:auto}@keyframes components-button__busy-animation{0%{background-position:200px 0}}.components-checkbox-control{--checkbox-input-size:24px;--checkbox-input-margin:8px}@media(min-width:600px){.components-checkbox-control{--checkbox-input-size:16px}}.components-checkbox-control__label{cursor:pointer;line-height:var(--checkbox-input-size)}.components-checkbox-control__input[type=checkbox]{appearance:none;background:#fff;border:1px solid #1e1e1e;border-radius:2px;box-shadow:0 0 0 transparent;clear:none;color:#1e1e1e;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;height:var(--checkbox-input-size);line-height:normal;line-height:0;margin:0 4px 0 0;outline:0;padding:6px 8px;padding:0!important;text-align:center;transition:none;vertical-align:top;width:var(--checkbox-input-size)}@media not (prefers-reduced-motion){.components-checkbox-control__input[type=checkbox]{transition:box-shadow .1s linear}}@media(min-width:600px){.components-checkbox-control__input[type=checkbox]{font-size:13px;line-height:normal}}.components-checkbox-control__input[type=checkbox]:focus{border-color:var(--wp-admin-theme-color);box-shadow:0 0 0 .5px var(--wp-admin-theme-color)}.components-checkbox-control__input[type=checkbox]::-webkit-input-placeholder{color:rgba(30,30,30,.62)}.components-checkbox-control__input[type=checkbox]::-moz-placeholder{color:rgba(30,30,30,.62)}.components-checkbox-control__input[type=checkbox]:-ms-input-placeholder{color:rgba(30,30,30,.62)}.components-checkbox-control__input[type=checkbox]:focus{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--wp-admin-theme-color)}.components-checkbox-control__input[type=checkbox]:checked{background:var(--wp-admin-theme-color);border-color:var(--wp-admin-theme-color)}.components-checkbox-control__input[type=checkbox]:checked::-ms-check{opacity:0}.components-checkbox-control__input[type=checkbox]:checked:before,.components-checkbox-control__input[type=checkbox][aria-checked=mixed]:before{color:#fff;margin:-3px -5px}@media(min-width:782px){.components-checkbox-control__input[type=checkbox]:checked:before,.components-checkbox-control__input[type=checkbox][aria-checked=mixed]:before{margin:-4px 0 0 -5px}}.components-checkbox-control__input[type=checkbox][aria-checked=mixed]{background:var(--wp-admin-theme-color);border-color:var(--wp-admin-theme-color)}.components-checkbox-control__input[type=checkbox][aria-checked=mixed]:before{content:"";display:inline-block;float:left;font:normal 30px/1 dashicons;vertical-align:middle;width:16px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(min-width:782px){.components-checkbox-control__input[type=checkbox][aria-checked=mixed]:before{float:none;font-size:21px}}.components-checkbox-control__input[type=checkbox]:disabled,.components-checkbox-control__input[type=checkbox][aria-disabled=true]{background:#f0f0f0;border-color:#ddd;cursor:default;opacity:1}@media not (prefers-reduced-motion){.components-checkbox-control__input[type=checkbox]{transition:border-color .1s ease-in-out}}.components-checkbox-control__input[type=checkbox]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) #fff,0 0 0 calc(var(--wp-admin-border-width-focus)*2) var(--wp-admin-theme-color);outline:2px solid transparent;outline-offset:2px}.components-checkbox-control__input[type=checkbox]:checked,.components-checkbox-control__input[type=checkbox]:indeterminate{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));border-color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-checkbox-control__input[type=checkbox]:checked::-ms-check,.components-checkbox-control__input[type=checkbox]:indeterminate::-ms-check{opacity:0}.components-checkbox-control__input[type=checkbox]:checked:before{content:none}.components-checkbox-control__input-container{aspect-ratio:1;display:inline-block;flex-shrink:0;line-height:1;margin-right:var(--checkbox-input-margin);position:relative;vertical-align:middle;width:var(--checkbox-input-size)}svg.components-checkbox-control__checked,svg.components-checkbox-control__indeterminate{--checkmark-size:var(--checkbox-input-size);fill:#fff;cursor:pointer;height:var(--checkmark-size);left:50%;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);-webkit-user-select:none;user-select:none;width:var(--checkmark-size)}@media(min-width:600px){svg.components-checkbox-control__checked,svg.components-checkbox-control__indeterminate{--checkmark-size:calc(var(--checkbox-input-size) + 4px)}}.components-checkbox-control__help{display:inline-block;margin-inline-start:calc(var(--checkbox-input-size) + var(--checkbox-input-margin))}.components-circular-option-picker{display:inline-block;min-width:188px;width:100%}.components-circular-option-picker .components-circular-option-picker__custom-clear-wrapper{display:flex;justify-content:flex-end;margin-top:12px}.components-circular-option-picker .components-circular-option-picker__swatches{display:flex;flex-wrap:wrap;gap:12px;position:relative;z-index:1}.components-circular-option-picker>:not(.components-circular-option-picker__swatches){position:relative;z-index:0}.components-circular-option-picker__option-wrapper{display:inline-block;height:28px;transform:scale(1);vertical-align:top;width:28px}@media not (prefers-reduced-motion){.components-circular-option-picker__option-wrapper{transition:transform .1s ease;will-change:transform}}.components-circular-option-picker__option-wrapper:hover{transform:scale(1.2)}.components-circular-option-picker__option-wrapper>div{height:100%;width:100%}.components-circular-option-picker__option-wrapper:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' fill='none'%3E%3Cpath fill='%23555D65' d='M6 8V6H4v2zm2 0V6h2v2zm2 8H8v-2h2zm2 0v-2h2v2zm0 2v-2h-2v2H8v2h2v-2zm2 0v2h-2v-2zm2 0h-2v-2h2z'/%3E%3Cpath fill='%23555D65' fill-rule='evenodd' d='M18 18h2v-2h-2v-2h2v-2h-2v-2h2V8h-2v2h-2V8h-2v2h2v2h-2v2h2v2h2zm-2-4v-2h2v2z' clip-rule='evenodd'/%3E%3Cpath fill='%23555D65' d='M18 18v2h-2v-2z'/%3E%3Cpath fill='%23555D65' fill-rule='evenodd' d='M8 10V8H6v2H4v2h2v2H4v2h2v2H4v2h2v2H4v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v-2h-2v-2h2v-2h-2v-2h2v-2h-2v-2h2V8h-2V6h2V4h-2v2h-2V4h-2v2h-2V4h-2v2h-2V4h-2v2h2v2h-2v2zm0 2v-2H6v2zm2 0v-2h2v2zm0 2v-2H8v2H6v2h2v2H6v2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h-2v-2h2v-2h-2v-2h2v-2h-2v-2h2V8h-2V6h-2v2h-2V6h-2v2h-2v2h2v2h-2v2z' clip-rule='evenodd'/%3E%3Cpath fill='%23555D65' fill-rule='evenodd' d='M4 0H2v2H0v2h2v2H0v2h2v2H0v2h2v2H0v2h2v2H0v2h2v2H0v2h2v2H0v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v-2h-2v-2h2v-2h-2v-2h2v-2h-2v-2h2v-2h-2v-2h2V8h-2V6h2V4h-2V2h2V0h-2v2h-2V0h-2v2h-2V0h-2v2h-2V0h-2v2h-2V0h-2v2H8V0H6v2H4zm0 4V2H2v2zm2 0V2h2v2zm0 2V4H4v2H2v2h2v2H2v2h2v2H2v2h2v2H2v2h2v2H2v2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h-2v-2h2v-2h-2v-2h2v-2h-2v-2h2v-2h-2v-2h2V8h-2V6h2V4h-2V2h-2v2h-2V2h-2v2h-2V2h-2v2h-2V2h-2v2H8v2z' clip-rule='evenodd'/%3E%3C/svg%3E");border-radius:50%;bottom:1px;content:"";left:1px;position:absolute;right:1px;top:1px;z-index:-1}.components-circular-option-picker__option{aspect-ratio:1;background:transparent;border:none;border-radius:50%;box-shadow:inset 0 0 0 14px;cursor:pointer;display:inline-block;height:100%!important;vertical-align:top}@media not (prefers-reduced-motion){.components-circular-option-picker__option{transition:box-shadow .1s ease}}.components-circular-option-picker__option:hover{box-shadow:inset 0 0 0 14px!important}.components-circular-option-picker__option[aria-pressed=true],.components-circular-option-picker__option[aria-selected=true]{box-shadow:inset 0 0 0 4px;overflow:visible;position:relative;z-index:1}.components-circular-option-picker__option[aria-pressed=true]+svg,.components-circular-option-picker__option[aria-selected=true]+svg{border-radius:50%;left:2px;pointer-events:none;position:absolute;top:2px;z-index:2}.components-circular-option-picker__option:after{border:1px solid transparent;border-radius:50%;bottom:-1px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.2);box-sizing:inherit;content:"";left:-1px;position:absolute;right:-1px;top:-1px}.components-circular-option-picker__option:focus:after{border:2px solid #757575;border-radius:50%;box-shadow:inset 0 0 0 2px #fff;content:"";height:calc(100% + 4px);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:calc(100% + 4px)}.components-circular-option-picker__option.components-button:focus{background-color:transparent;box-shadow:inset 0 0 0 14px;outline:none}.components-circular-option-picker__button-action .components-circular-option-picker__option{background:#fff;color:#fff}.components-circular-option-picker__dropdown-link-action{margin-right:16px}.components-circular-option-picker__dropdown-link-action .components-button{line-height:22px}.components-palette-edit__popover-gradient-picker{padding:8px;width:260px}.components-dropdown-menu__menu .components-palette-edit__menu-button{width:100%}.component-color-indicator{background:#fff linear-gradient(-45deg,transparent 48%,#ddd 0,#ddd 52%,transparent 0);border-radius:50%;box-shadow:inset 0 0 0 1px rgba(0,0,0,.2);display:inline-block;height:20px;padding:0;width:20px}.components-combobox-control{width:100%}input.components-combobox-control__input[type=text]{border:none;box-shadow:none;font-family:inherit;font-size:16px;line-height:inherit;margin:0;min-height:auto;padding:2px;width:100%}@media(min-width:600px){input.components-combobox-control__input[type=text]{font-size:13px}}input.components-combobox-control__input[type=text]:focus{box-shadow:none;outline:none}.components-combobox-control__suggestions-container{align-items:flex-start;border:1px solid #949494;border-radius:2px;box-shadow:0 0 0 transparent;display:flex;flex-wrap:wrap;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;line-height:normal;padding:0;width:100%}@media not (prefers-reduced-motion){.components-combobox-control__suggestions-container{transition:box-shadow .1s linear}}@media(min-width:600px){.components-combobox-control__suggestions-container{font-size:13px;line-height:normal}}.components-combobox-control__suggestions-container:focus{border-color:var(--wp-admin-theme-color);box-shadow:0 0 0 .5px var(--wp-admin-theme-color);outline:2px solid transparent}.components-combobox-control__suggestions-container::-webkit-input-placeholder{color:rgba(30,30,30,.62)}.components-combobox-control__suggestions-container::-moz-placeholder{color:rgba(30,30,30,.62)}.components-combobox-control__suggestions-container:-ms-input-placeholder{color:rgba(30,30,30,.62)}.components-combobox-control__suggestions-container:focus-within{border-color:var(--wp-admin-theme-color);box-shadow:0 0 0 .5px var(--wp-admin-theme-color);outline:2px solid transparent}.components-combobox-control__suggestions-container .components-spinner{margin:0}.components-color-palette__custom-color-wrapper{position:relative;z-index:0}.components-color-palette__custom-color-button{background:none;border:none;border-radius:4px 4px 0 0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.2);box-sizing:border-box;cursor:pointer;height:64px;outline:1px solid transparent;position:relative;width:100%}.components-color-palette__custom-color-button:focus{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));outline-width:2px}.components-color-palette__custom-color-button:after{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,transparent 0,transparent 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,transparent 0,transparent 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,24px 24px;background-size:48px 48px;border-radius:3px 3px 0 0;content:"";inset:1px;position:absolute;z-index:-1}.components-color-palette__custom-color-text-wrapper{border-radius:0 0 4px 4px;box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.2),inset 1px 0 0 0 rgba(0,0,0,.2),inset -1px 0 0 0 rgba(0,0,0,.2);font-size:13px;padding:12px 16px;position:relative}.components-color-palette__custom-color-name{color:var(--wp-components-color-foreground,#1e1e1e);margin:0 1px}.components-color-palette__custom-color-value{color:#757575}.components-color-palette__custom-color-value--is-hex{text-transform:uppercase}.components-color-palette__custom-color-value:empty:after{content:"​";visibility:hidden}.components-custom-gradient-picker__gradient-bar{border-radius:2px;height:48px;position:relative;width:100%;z-index:1}.components-custom-gradient-picker__gradient-bar.has-gradient{background-image:repeating-linear-gradient(45deg,#e0e0e0 25%,transparent 0,transparent 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(45deg,#e0e0e0 25%,transparent 0,transparent 75%,#e0e0e0 0,#e0e0e0);background-position:0 0,12px 12px;background-size:24px 24px}.components-custom-gradient-picker__gradient-bar .components-custom-gradient-picker__gradient-bar-background{inset:0;position:absolute}.components-custom-gradient-picker__gradient-bar .components-custom-gradient-picker__markers-container{margin-left:auto;margin-right:auto;position:relative;width:calc(100% - 48px)}.components-custom-gradient-picker__gradient-bar .components-custom-gradient-picker__control-point-dropdown{display:flex;height:16px;position:absolute;top:16px;width:16px}.components-custom-gradient-picker__gradient-bar .components-custom-gradient-picker__insert-point-dropdown{background:#fff;border-radius:50%;color:#1e1e1e;height:inherit;min-width:16px!important;padding:2px;position:relative;width:inherit}.components-custom-gradient-picker__gradient-bar .components-custom-gradient-picker__insert-point-dropdown svg{height:100%;width:100%}.components-custom-gradient-picker__gradient-bar .components-custom-gradient-picker__control-point-button{border-radius:50%;box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) #fff,0 0 2px 0 rgba(0,0,0,.25);height:inherit;outline:2px solid transparent;padding:0;width:inherit}.components-custom-gradient-picker__gradient-bar .components-custom-gradient-picker__control-point-button.is-active,.components-custom-gradient-picker__gradient-bar .components-custom-gradient-picker__control-point-button:focus{box-shadow:inset 0 0 0 calc(var(--wp-admin-border-width-focus)*2) #fff,0 0 2px 0 rgba(0,0,0,.25);outline:1.5px solid transparent}.components-custom-gradient-picker__remove-control-point-wrapper{padding-bottom:8px}.components-custom-gradient-picker__inserter{direction:ltr}.components-custom-gradient-picker__liner-gradient-indicator{display:inline-block;flex:0 auto;height:20px;width:20px}.components-custom-gradient-picker__ui-line{position:relative;z-index:0}.block-editor-dimension-control .components-base-control__field{align-items:center;display:flex}.block-editor-dimension-control .components-base-control__label{align-items:center;display:flex;margin-bottom:0;margin-right:1em}.block-editor-dimension-control .components-base-control__label .dashicon{margin-right:.5em}.block-editor-dimension-control.is-manual .components-base-control__label{width:10em}body.is-dragging-components-draggable{cursor:move;cursor:grabbing!important}.components-draggable__invisible-drag-image{height:50px;left:-1000px;position:fixed;width:50px}.components-draggable__clone{background:transparent;padding:0;pointer-events:none;position:fixed;z-index:1000000000}.components-drop-zone{border-radius:2px;bottom:0;left:0;opacity:0;position:absolute;right:0;top:0;visibility:hidden;z-index:40}.components-drop-zone.is-active{opacity:1;visibility:visible}.components-drop-zone .components-drop-zone__content{align-items:center;background-color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));bottom:0;color:#fff;display:flex;height:100%;justify-content:center;left:0;opacity:0;pointer-events:none;position:absolute;right:0;text-align:center;top:0;width:100%;z-index:50}.components-drop-zone .components-drop-zone__content-inner{opacity:0;transform:scale(.9)}.components-drop-zone.is-active.is-dragging-over-element .components-drop-zone__content{opacity:1}@media not (prefers-reduced-motion){.components-drop-zone.is-active.is-dragging-over-element .components-drop-zone__content{transition:opacity .2s ease-in-out}}.components-drop-zone.is-active.is-dragging-over-element .components-drop-zone__content-inner{opacity:1;transform:scale(1)}@media not (prefers-reduced-motion){.components-drop-zone.is-active.is-dragging-over-element .components-drop-zone__content-inner{transition:opacity .1s ease-in-out .1s,transform .1s ease-in-out .1s}}.components-drop-zone__content-icon,.components-drop-zone__content-text{display:block}.components-drop-zone__content-icon{line-height:0;margin:0 auto 8px;fill:currentColor;pointer-events:none}.components-drop-zone__content-text{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px}.components-dropdown{display:inline-block}.components-dropdown__content .components-popover__content{padding:8px}.components-dropdown__content .components-popover__content:has(.components-menu-group){padding:0}.components-dropdown__content .components-popover__content:has(.components-menu-group) .components-dropdown-menu__menu>.components-menu-item__button,.components-dropdown__content .components-popover__content:has(.components-menu-group)>.components-menu-item__button{margin:8px;width:auto}.components-dropdown__content [role=menuitem]{white-space:nowrap}.components-dropdown__content .components-menu-group{padding:8px}.components-dropdown__content .components-menu-group+.components-menu-group{border-top:1px solid #ccc;padding:8px}.components-dropdown__content.is-alternate .components-menu-group+.components-menu-group{border-color:#1e1e1e}.components-dropdown-menu__toggle{vertical-align:top}.components-dropdown-menu__menu{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;line-height:1.4;width:100%}.components-dropdown-menu__menu .components-dropdown-menu__menu-item,.components-dropdown-menu__menu .components-menu-item{cursor:pointer;outline:none;padding:6px;white-space:nowrap;width:100%}.components-dropdown-menu__menu .components-dropdown-menu__menu-item.has-separator,.components-dropdown-menu__menu .components-menu-item.has-separator{margin-top:6px;overflow:visible;position:relative}.components-dropdown-menu__menu .components-dropdown-menu__menu-item.has-separator:before,.components-dropdown-menu__menu .components-menu-item.has-separator:before{background-color:#ddd;box-sizing:content-box;content:"";display:block;height:1px;left:0;position:absolute;right:0;top:-3px}.components-dropdown-menu__menu .components-dropdown-menu__menu-item.is-active .dashicon,.components-dropdown-menu__menu .components-dropdown-menu__menu-item.is-active svg,.components-dropdown-menu__menu .components-menu-item.is-active .dashicon,.components-dropdown-menu__menu .components-menu-item.is-active svg{background:#1e1e1e;border-radius:1px;box-shadow:0 0 0 1px #1e1e1e;color:#fff}.components-dropdown-menu__menu .components-dropdown-menu__menu-item.is-icon-only,.components-dropdown-menu__menu .components-menu-item.is-icon-only{width:auto}.components-dropdown-menu__menu .components-menu-item__button,.components-dropdown-menu__menu .components-menu-item__button.components-button{height:auto;min-height:40px;padding-left:8px;padding-right:8px;text-align:left}.components-duotone-picker__color-indicator:before{background:transparent}.components-duotone-picker__color-indicator>.components-button,.components-duotone-picker__color-indicator>.components-button.is-pressed:hover:not(:disabled){background:linear-gradient(-45deg,transparent 48%,#ddd 0,#ddd 52%,transparent 0);color:transparent}.components-duotone-picker__color-indicator>.components-button:not([aria-disabled=true]):active{color:transparent}.components-color-list-picker,.components-color-list-picker__swatch-button{width:100%}.components-color-list-picker__color-picker{margin:8px 0}.components-color-list-picker__swatch-color{margin:2px}.components-external-link{text-decoration:none}.components-external-link__contents{text-decoration:underline}.components-external-link__icon{font-weight:400;margin-left:.5ch}.components-form-toggle{display:inline-block;height:16px;position:relative}.components-form-toggle .components-form-toggle__track{background-color:#fff;border:1px solid #949494;border-radius:8px;box-sizing:border-box;content:"";display:inline-block;height:16px;overflow:hidden;position:relative;vertical-align:top;width:32px}@media not (prefers-reduced-motion){.components-form-toggle .components-form-toggle__track{transition:background-color .2s ease,border-color .2s ease}}.components-form-toggle .components-form-toggle__track:after{border-top:16px solid transparent;box-sizing:border-box;content:"";inset:0;opacity:0;position:absolute}@media not (prefers-reduced-motion){.components-form-toggle .components-form-toggle__track:after{transition:opacity .2s ease}}.components-form-toggle .components-form-toggle__thumb{background-color:#1e1e1e;border:6px solid transparent;border-radius:50%;box-shadow:0 1px 1px rgba(0,0,0,.03),0 1px 2px rgba(0,0,0,.02),0 3px 3px rgba(0,0,0,.02),0 4px 4px rgba(0,0,0,.01);box-sizing:border-box;display:block;height:12px;left:2px;position:absolute;top:2px;width:12px}@media not (prefers-reduced-motion){.components-form-toggle .components-form-toggle__thumb{transition:transform .2s ease,background-color .2s ease-out}}.components-form-toggle.is-checked .components-form-toggle__track{background-color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));border-color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-form-toggle.is-checked .components-form-toggle__track:after{opacity:1}.components-form-toggle .components-form-toggle__input:focus+.components-form-toggle__track{box-shadow:0 0 0 var(--wp-admin-border-width-focus) #fff,0 0 0 calc(var(--wp-admin-border-width-focus)*2) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));outline:2px solid transparent;outline-offset:2px}.components-form-toggle.is-checked .components-form-toggle__thumb{background-color:#fff;border-width:0;transform:translateX(16px)}.components-disabled .components-form-toggle,.components-form-toggle.is-disabled{opacity:.3}.components-form-toggle input.components-form-toggle__input[type=checkbox]{border:none;height:100%;left:0;margin:0;opacity:0;padding:0;position:absolute;top:0;width:100%;z-index:1}.components-form-toggle input.components-form-toggle__input[type=checkbox]:checked{background:none}.components-form-toggle input.components-form-toggle__input[type=checkbox]:before{content:""}.components-form-toggle input.components-form-toggle__input[type=checkbox]:not(:disabled,[aria-disabled=true]){cursor:pointer}.components-form-token-field__input-container{border:1px solid #949494;border-radius:2px;box-shadow:0 0 0 transparent;cursor:text;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;line-height:normal;padding:0;width:100%}@media not (prefers-reduced-motion){.components-form-token-field__input-container{transition:box-shadow .1s linear}}@media(min-width:600px){.components-form-token-field__input-container{font-size:13px;line-height:normal}}.components-form-token-field__input-container:focus{border-color:var(--wp-admin-theme-color);box-shadow:0 0 0 .5px var(--wp-admin-theme-color);outline:2px solid transparent}.components-form-token-field__input-container::-webkit-input-placeholder{color:rgba(30,30,30,.62)}.components-form-token-field__input-container::-moz-placeholder{color:rgba(30,30,30,.62)}.components-form-token-field__input-container:-ms-input-placeholder{color:rgba(30,30,30,.62)}.components-form-token-field__input-container.is-disabled{background:#ddd;border-color:#ddd}.components-form-token-field__input-container.is-active{border-color:var(--wp-admin-theme-color);box-shadow:0 0 0 .5px var(--wp-admin-theme-color);outline:2px solid transparent}.components-form-token-field__input-container input[type=text].components-form-token-field__input{background:inherit;border:0;box-shadow:none;color:#1e1e1e;display:inline-block;flex:1;font-family:inherit;font-size:16px;margin-left:4px;max-width:100%;min-height:24px;min-width:50px;padding:0;width:100%}@media(min-width:600px){.components-form-token-field__input-container input[type=text].components-form-token-field__input{font-size:13px}}.components-form-token-field.is-active .components-form-token-field__input-container input[type=text].components-form-token-field__input,.components-form-token-field__input-container input[type=text].components-form-token-field__input:focus{box-shadow:none;outline:none}.components-form-token-field__input-container .components-form-token-field__token+input[type=text].components-form-token-field__input{width:auto}.components-form-token-field__token{color:#1e1e1e;display:flex;font-size:13px;max-width:100%}.components-form-token-field__token.is-success .components-form-token-field__remove-token,.components-form-token-field__token.is-success .components-form-token-field__token-text{background:#4ab866}.components-form-token-field__token.is-error .components-form-token-field__remove-token,.components-form-token-field__token.is-error .components-form-token-field__token-text{background:#cc1818}.components-form-token-field__token.is-validating .components-form-token-field__remove-token,.components-form-token-field__token.is-validating .components-form-token-field__token-text{color:#757575}.components-form-token-field__token.is-borderless{padding:0 24px 0 0;position:relative}.components-form-token-field__token.is-borderless .components-form-token-field__token-text{background:transparent}.components-form-token-field__token.is-borderless:not(.is-disabled) .components-form-token-field__token-text{color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-form-token-field__token.is-borderless .components-form-token-field__remove-token{background:transparent;color:#757575;position:absolute;right:0;top:1px}.components-form-token-field__token.is-borderless.is-success .components-form-token-field__token-text{color:#4ab866}.components-form-token-field__token.is-borderless.is-error .components-form-token-field__token-text{color:#cc1818;padding:0 4px 0 6px}.components-form-token-field__token.is-borderless.is-validating .components-form-token-field__token-text{color:#1e1e1e}.components-form-token-field__remove-token.components-button,.components-form-token-field__token-text{background:#ddd;display:inline-block;height:auto;min-width:unset}@media not (prefers-reduced-motion){.components-form-token-field__remove-token.components-button,.components-form-token-field__token-text{transition:all .2s cubic-bezier(.4,1,.4,1)}}.components-form-token-field__token-text{border-radius:1px 0 0 1px;line-height:24px;overflow:hidden;padding:0 0 0 8px;text-overflow:ellipsis;white-space:nowrap}.components-form-token-field__remove-token.components-button{border-radius:0 1px 1px 0;color:#1e1e1e;line-height:10px;overflow:initial}.components-form-token-field__remove-token.components-button:hover:not(:disabled){color:#1e1e1e}.components-form-token-field__suggestions-list{box-shadow:inset 0 1px 0 0 #949494;flex:1 0 100%;list-style:none;margin:0;max-height:128px;min-width:100%;overflow-y:auto;padding:0}@media not (prefers-reduced-motion){.components-form-token-field__suggestions-list{transition:all .15s ease-in-out}}.components-form-token-field__suggestion{box-sizing:border-box;color:#1e1e1e;display:block;font-size:13px;margin:0;min-height:32px;padding:8px 12px}.components-form-token-field__suggestion.is-selected{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));color:#fff}.components-form-token-field__suggestion[aria-disabled=true]{color:#949494;pointer-events:none}.components-form-token-field__suggestion[aria-disabled=true].is-selected{background-color:rgba(var(--wp-components-color-accent--rgb,var(--wp-admin-theme-color--rgb)),.04)}.components-form-token-field__suggestion:not(.is-empty){cursor:pointer}@media(min-width:600px){.components-guide{width:600px}}.components-guide .components-modal__content{margin-top:0;padding:0}.components-guide .components-modal__content:before{content:none}.components-guide .components-modal__header{border-bottom:none;height:60px;padding:0;position:sticky}.components-guide .components-modal__header .components-button{align-self:flex-start;margin:8px 8px 0 0;position:static}.components-guide .components-modal__header .components-button:hover svg{fill:#fff}.components-guide .components-guide__container{display:flex;flex-direction:column;justify-content:space-between;margin-top:-60px;min-height:100%}.components-guide .components-guide__page{display:flex;flex-direction:column;justify-content:center;position:relative}@media(min-width:600px){.components-guide .components-guide__page{min-height:300px}}.components-guide .components-guide__footer{align-content:center;display:flex;height:36px;justify-content:center;margin:0 0 24px;padding:0 32px;position:relative;width:100%}.components-guide .components-guide__page-control{margin:0;text-align:center}.components-guide .components-guide__page-control li{display:inline-block;margin:0}.components-guide .components-guide__page-control .components-button{color:#e0e0e0;margin:-6px 0}.components-guide .components-guide__page-control li[aria-current=step] .components-button{color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-modal__frame.components-guide{border:none;max-height:575px;min-width:312px}@media(max-width:600px){.components-modal__frame.components-guide{margin:auto;max-width:calc(100vw - 32px)}}.components-button.components-guide__back-button,.components-button.components-guide__finish-button,.components-button.components-guide__forward-button{position:absolute}.components-button.components-guide__back-button{left:32px}.components-button.components-guide__finish-button,.components-button.components-guide__forward-button{right:32px}[role=region]{position:relative}[role=region].interface-interface-skeleton__content:focus-visible:after{bottom:0;content:"";left:0;outline-color:var(--wp-admin-theme-color);outline-offset:calc(var(--wp-admin-border-width-focus)*-2/var(--wp-block-editor-iframe-zoom-out-scale, 1));outline-style:solid;outline-width:calc(var(--wp-admin-border-width-focus)*2/var(--wp-block-editor-iframe-zoom-out-scale, 1));pointer-events:none;position:absolute;right:0;top:0;z-index:1000000}.is-focusing-regions [role=region]:focus:after{bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:1000000}.is-focusing-regions .editor-post-publish-panel,.is-focusing-regions .interface-interface-skeleton__actions .editor-layout__toggle-entities-saved-states-panel,.is-focusing-regions .interface-interface-skeleton__actions .editor-layout__toggle-publish-panel,.is-focusing-regions .interface-interface-skeleton__sidebar .editor-layout__toggle-sidebar-panel,.is-focusing-regions [role=region]:focus:after,.is-focusing-regions.is-distraction-free .interface-interface-skeleton__header .edit-post-header{outline-color:var(--wp-admin-theme-color);outline-offset:calc(var(--wp-admin-border-width-focus)*-2/var(--wp-block-editor-iframe-zoom-out-scale, 1));outline-style:solid;outline-width:calc(var(--wp-admin-border-width-focus)*2/var(--wp-block-editor-iframe-zoom-out-scale, 1))}.components-menu-group+.components-menu-group{border-top:1px solid #1e1e1e;padding-top:8px}.components-menu-group+.components-menu-group.has-hidden-separator{border-top:none;margin-top:0;padding-top:0}.components-menu-group:has(>div:empty){display:none}.components-menu-group__label{color:#757575;font-size:11px;font-weight:500;margin-bottom:12px;margin-top:4px;padding:0 8px;text-transform:uppercase;white-space:nowrap}.components-menu-item__button,.components-menu-item__button.components-button{width:100%}.components-menu-item__button.components-button[role=menuitemcheckbox] .components-menu-item__item:only-child,.components-menu-item__button.components-button[role=menuitemradio] .components-menu-item__item:only-child,.components-menu-item__button[role=menuitemcheckbox] .components-menu-item__item:only-child,.components-menu-item__button[role=menuitemradio] .components-menu-item__item:only-child{box-sizing:initial;padding-right:48px}.components-menu-item__button .components-menu-items__item-icon,.components-menu-item__button.components-button .components-menu-items__item-icon{display:inline-block;flex:0 0 auto}.components-menu-item__button .components-menu-items__item-icon.has-icon-right,.components-menu-item__button.components-button .components-menu-items__item-icon.has-icon-right{margin-left:24px;margin-right:-2px}.components-menu-item__button .components-menu-item__shortcut+.components-menu-items__item-icon.has-icon-right,.components-menu-item__button.components-button .components-menu-item__shortcut+.components-menu-items__item-icon.has-icon-right{margin-left:8px}.components-menu-item__button .block-editor-block-icon,.components-menu-item__button.components-button .block-editor-block-icon{margin-left:-2px;margin-right:8px}.components-menu-item__button.components-button.is-primary,.components-menu-item__button.is-primary{justify-content:center}.components-menu-item__button.components-button.is-primary .components-menu-item__item,.components-menu-item__button.is-primary .components-menu-item__item{margin-right:0}.components-menu-item__button.components-button:disabled.is-tertiary,.components-menu-item__button.components-button[aria-disabled=true].is-tertiary,.components-menu-item__button:disabled.is-tertiary,.components-menu-item__button[aria-disabled=true].is-tertiary{background:none;color:var(--wp-components-color-accent-darker-10,var(--wp-admin-theme-color-darker-10,#2145e6));opacity:.3}.components-menu-item__info-wrapper{display:flex;flex-direction:column;margin-right:auto}.components-menu-item__info{color:#757575;font-size:12px;margin-top:4px;white-space:normal}.components-menu-item__item{align-items:center;display:inline-flex;margin-right:auto;min-width:160px;white-space:nowrap}.components-menu-item__shortcut{align-self:center;color:currentColor;display:none;margin-left:auto;margin-right:0;padding-left:24px}@media(min-width:480px){.components-menu-item__shortcut{display:inline}}.components-menu-items-choice,.components-menu-items-choice.components-button{height:auto;min-height:40px}.components-menu-items-choice svg,.components-menu-items-choice.components-button svg{margin-right:12px}.components-menu-items-choice.components-button.has-icon,.components-menu-items-choice.has-icon{padding-left:12px}.components-modal__screen-overlay{background-color:rgba(0,0,0,.35);bottom:0;display:flex;left:0;position:fixed;right:0;top:0;z-index:100000}@keyframes __wp-base-styles-fade-in{0%{opacity:0}to{opacity:1}}@media not (prefers-reduced-motion){.components-modal__screen-overlay{animation:__wp-base-styles-fade-in .08s linear 0s;animation-fill-mode:forwards}}@keyframes __wp-base-styles-fade-out{0%{opacity:1}to{opacity:0}}@media not (prefers-reduced-motion){.components-modal__screen-overlay.is-animating-out{animation:__wp-base-styles-fade-out .08s linear 80ms;animation-fill-mode:forwards}}.components-modal__frame{animation-fill-mode:forwards;animation-name:components-modal__appear-animation;animation-timing-function:cubic-bezier(.29,0,0,1);background:#fff;border-radius:8px 8px 0 0;box-shadow:0 5px 15px rgba(0,0,0,.08),0 15px 27px rgba(0,0,0,.07),0 30px 36px rgba(0,0,0,.04),0 50px 43px rgba(0,0,0,.02);box-sizing:border-box;display:flex;margin:40px 0 0;overflow:hidden;width:100%}.components-modal__frame *,.components-modal__frame :after,.components-modal__frame :before{box-sizing:inherit}@media not (prefers-reduced-motion){.components-modal__frame{animation-duration:var(--modal-frame-animation-duration)}}.components-modal__screen-overlay.is-animating-out .components-modal__frame{animation-name:components-modal__disappear-animation;animation-timing-function:cubic-bezier(1,0,.2,1)}@media(min-width:600px){.components-modal__frame{border-radius:8px;margin:auto;max-height:calc(100% - 120px);max-width:calc(100% - 32px);min-width:350px;width:auto}}@media(min-width:600px)and (min-width:600px){.components-modal__frame.is-full-screen{height:calc(100% - 32px);max-height:none;width:calc(100% - 32px)}}@media(min-width:600px)and (min-width:782px){.components-modal__frame.is-full-screen{height:calc(100% - 80px);max-width:none;width:calc(100% - 80px)}}@media(min-width:600px){.components-modal__frame.has-size-large,.components-modal__frame.has-size-medium,.components-modal__frame.has-size-small{width:100%}.components-modal__frame.has-size-small{max-width:384px}.components-modal__frame.has-size-medium{max-width:512px}.components-modal__frame.has-size-large{max-width:840px}}@media(min-width:960px){.components-modal__frame{max-height:70%}}@keyframes components-modal__appear-animation{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes components-modal__disappear-animation{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.components-modal__header{align-items:center;border-bottom:1px solid transparent;box-sizing:border-box;display:flex;flex-direction:row;height:72px;justify-content:space-between;left:0;padding:24px 32px 8px;position:absolute;top:0;width:100%;z-index:10}.components-modal__header .components-modal__header-heading{font-size:1.2rem;font-weight:600}.components-modal__header h1{line-height:1;margin:0}.components-modal__content.has-scrolled-content:not(.hide-header) .components-modal__header{border-bottom-color:#ddd}.components-modal__header+p{margin-top:0}.components-modal__header-heading-container{align-items:center;display:flex;flex-direction:row;flex-grow:1;justify-content:left}.components-modal__header-icon-container{display:inline-block}.components-modal__header-icon-container svg{max-height:36px;max-width:36px;padding:8px}.components-modal__content{flex:1;margin-top:72px;overflow:auto;padding:4px 32px 32px}.components-modal__content.hide-header{margin-top:0;padding-top:32px}.components-modal__content.is-scrollable:focus-visible{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));outline:2px solid transparent;outline-offset:-2px}.components-notice{align-items:center;background-color:#fff;border-left:4px solid var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));color:#1e1e1e;display:flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;padding:8px 12px}.components-notice.is-dismissible{position:relative}.components-notice.is-success{background-color:#eff9f1;border-left-color:#4ab866}.components-notice.is-warning{background-color:#fef8ee;border-left-color:#f0b849}.components-notice.is-error{background-color:#f4a2a2;border-left-color:#cc1818}.components-notice__content{flex-grow:1;margin:4px 25px 4px 0}.components-notice__actions{display:flex;flex-wrap:wrap}.components-notice__action.components-button{margin-right:8px}.components-notice__action.components-button,.components-notice__action.components-button.is-link{margin-left:12px}.components-notice__action.components-button.is-secondary{vertical-align:initial}.components-notice__dismiss{align-self:flex-start;color:#757575;flex-shrink:0}.components-notice__dismiss:not(:disabled):not([aria-disabled=true]):focus,.components-notice__dismiss:not(:disabled):not([aria-disabled=true]):not(.is-secondary):active,.components-notice__dismiss:not(:disabled):not([aria-disabled=true]):not(.is-secondary):hover{background-color:transparent;color:#1e1e1e}.components-notice__dismiss:not(:disabled):not([aria-disabled=true]):not(.is-secondary):hover{box-shadow:none}.components-notice-list{box-sizing:border-box;max-width:100vw}.components-notice-list .components-notice__content{line-height:2;margin-bottom:12px;margin-top:12px}.components-notice-list .components-notice__action.components-button{display:block;margin-left:0;margin-top:8px}.components-panel{background:#fff;border:1px solid #e0e0e0}.components-panel>.components-panel__body:first-child,.components-panel>.components-panel__header:first-child{margin-top:-1px}.components-panel>.components-panel__body:last-child,.components-panel>.components-panel__header:last-child{border-bottom-width:0}.components-panel+.components-panel{margin-top:-1px}.components-panel__body{border-bottom:1px solid #e0e0e0;border-top:1px solid #e0e0e0}.components-panel__body h3{margin:0 0 .5em}.components-panel__body.is-opened{padding:16px}.components-panel__header{align-items:center;border-bottom:1px solid #ddd;box-sizing:content-box;display:flex;flex-shrink:0;height:47px;justify-content:space-between;padding:0 16px}.components-panel__header h2{color:inherit;font-size:inherit;margin:0}.components-panel__body+.components-panel__body,.components-panel__body+.components-panel__header,.components-panel__header+.components-panel__body,.components-panel__header+.components-panel__header{margin-top:-1px}.components-panel__body>.components-panel__body-title{display:block;font-size:inherit;margin-bottom:0;margin-top:0;padding:0}@media not (prefers-reduced-motion){.components-panel__body>.components-panel__body-title{transition:background .1s ease-in-out}}.components-panel__body.is-opened>.components-panel__body-title{margin:-16px -16px 5px}.components-panel__body>.components-panel__body-title:hover{background:#f0f0f0;border:none}.components-panel__body-toggle.components-button{border:none;box-shadow:none;color:#1e1e1e;font-weight:500;height:auto;outline:none;padding:16px 48px 16px 16px;position:relative;text-align:left;width:100%}@media not (prefers-reduced-motion){.components-panel__body-toggle.components-button{transition:background .1s ease-in-out}}.components-panel__body-toggle.components-button:focus{border-radius:0;box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-panel__body-toggle.components-button .components-panel__arrow{color:#1e1e1e;position:absolute;right:16px;top:50%;transform:translateY(-50%);fill:currentColor}@media not (prefers-reduced-motion){.components-panel__body-toggle.components-button .components-panel__arrow{transition:color .1s ease-in-out}}body.rtl .components-panel__body-toggle.components-button .dashicons-arrow-right{-ms-filter:fliph;filter:FlipH;margin-top:-10px;transform:scaleX(-1)}.components-panel__icon{color:#757575;margin:-2px 0 -2px 6px}.components-panel__body-toggle-icon{margin-right:-5px}.components-panel__color-title{float:left;height:19px}.components-panel__row{align-items:center;display:flex;justify-content:space-between;margin-top:8px;min-height:36px}.components-panel__row select{min-width:0}.components-panel__row label{flex-shrink:0;margin-right:12px;max-width:75%}.components-panel__row:empty,.components-panel__row:first-of-type{margin-top:0}.components-panel .circle-picker{padding-bottom:20px}.components-placeholder.components-placeholder{align-items:flex-start;box-sizing:border-box;color:#1e1e1e;display:flex;flex-direction:column;font-size:13px;gap:16px;margin:0;padding:24px;position:relative;text-align:left;width:100%;-moz-font-smoothing:subpixel-antialiased;-webkit-font-smoothing:subpixel-antialiased;background-color:#fff;border-radius:2px;box-shadow:inset 0 0 0 1px #1e1e1e;outline:1px solid transparent}.components-placeholder__error,.components-placeholder__fieldset,.components-placeholder__instructions,.components-placeholder__label{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;font-weight:400;letter-spacing:normal;line-height:normal;text-transform:none}.components-placeholder__label{align-items:center;display:flex;font-weight:600}.components-placeholder__label .block-editor-block-icon,.components-placeholder__label .dashicon,.components-placeholder__label>svg{margin-right:4px;fill:currentColor}@media(forced-colors:active){.components-placeholder__label .block-editor-block-icon,.components-placeholder__label .dashicon,.components-placeholder__label>svg{fill:CanvasText}}.components-placeholder__label:empty{display:none}.components-placeholder__fieldset,.components-placeholder__fieldset form{display:flex;flex-direction:row;flex-wrap:wrap;gap:16px;justify-content:flex-start;width:100%}.components-placeholder__fieldset form p,.components-placeholder__fieldset p{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px}.components-placeholder__fieldset.is-column-layout,.components-placeholder__fieldset.is-column-layout form{flex-direction:column}.components-placeholder__input[type=url]{border:1px solid #949494;border-radius:2px;box-shadow:0 0 0 transparent;flex:1 1 auto;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;line-height:normal;padding:6px 8px}@media not (prefers-reduced-motion){.components-placeholder__input[type=url]{transition:box-shadow .1s linear}}@media(min-width:600px){.components-placeholder__input[type=url]{font-size:13px;line-height:normal}}.components-placeholder__input[type=url]:focus{border-color:var(--wp-admin-theme-color);box-shadow:0 0 0 .5px var(--wp-admin-theme-color);outline:2px solid transparent}.components-placeholder__input[type=url]::-webkit-input-placeholder{color:rgba(30,30,30,.62)}.components-placeholder__input[type=url]::-moz-placeholder{color:rgba(30,30,30,.62)}.components-placeholder__input[type=url]:-ms-input-placeholder{color:rgba(30,30,30,.62)}.components-placeholder__error{gap:8px;width:100%}.components-placeholder__fieldset .components-button:not(.is-link)~.components-button.is-link{margin-left:10px;margin-right:10px}.components-placeholder__fieldset .components-button:not(.is-link)~.components-button.is-link:last-child{margin-right:0}.components-placeholder.is-medium .components-placeholder__instructions,.components-placeholder.is-small .components-placeholder__instructions{display:none}.components-placeholder.is-medium .components-placeholder__fieldset,.components-placeholder.is-medium .components-placeholder__fieldset form,.components-placeholder.is-small .components-placeholder__fieldset,.components-placeholder.is-small .components-placeholder__fieldset form{flex-direction:column}.components-placeholder.is-medium .components-button,.components-placeholder.is-medium .components-placeholder__fieldset>*,.components-placeholder.is-small .components-button,.components-placeholder.is-small .components-placeholder__fieldset>*{justify-content:center;width:100%}.components-placeholder.is-small{padding:16px}.components-placeholder.has-illustration{-webkit-backdrop-filter:blur(100px);backdrop-filter:blur(100px);backface-visibility:hidden;background-color:transparent;border-radius:0;box-shadow:none;color:inherit;display:flex;overflow:hidden}.is-dark-theme .components-placeholder.has-illustration{background-color:rgba(0,0,0,.1)}.components-placeholder.has-illustration .components-placeholder__fieldset{margin-left:0;margin-right:0}.components-placeholder.has-illustration .components-button,.components-placeholder.has-illustration .components-placeholder__instructions,.components-placeholder.has-illustration .components-placeholder__label{opacity:0;pointer-events:none}@media not (prefers-reduced-motion){.components-placeholder.has-illustration .components-button,.components-placeholder.has-illustration .components-placeholder__instructions,.components-placeholder.has-illustration .components-placeholder__label{transition:opacity .1s linear}}.is-selected>.components-placeholder.has-illustration .components-button,.is-selected>.components-placeholder.has-illustration .components-placeholder__instructions,.is-selected>.components-placeholder.has-illustration .components-placeholder__label{opacity:1;pointer-events:auto}.components-placeholder.has-illustration:before{background:currentColor;bottom:0;content:"";left:0;opacity:.1;pointer-events:none;position:absolute;right:0;top:0}.is-selected .components-placeholder.has-illustration{overflow:auto}.components-placeholder__preview{display:flex;justify-content:center}.components-placeholder__illustration{box-sizing:content-box;height:100%;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:100%;stroke:currentColor;opacity:.25}.components-popover{box-sizing:border-box;will-change:transform;z-index:1000000}.components-popover *,.components-popover :after,.components-popover :before{box-sizing:inherit}.components-popover.is-expanded{bottom:0;left:0;position:fixed;right:0;top:0;z-index:1000000!important}.components-popover__content{background:#fff;border-radius:4px;box-shadow:0 0 0 1px #ccc,0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);box-sizing:border-box;width:min-content}.is-alternate .components-popover__content{border-radius:2px;box-shadow:0 0 0 1px #1e1e1e}.is-unstyled .components-popover__content{background:none;border-radius:0;box-shadow:none}.components-popover.is-expanded .components-popover__content{box-shadow:0 -1px 0 0 #ccc;height:calc(100% - 48px);overflow-y:visible;position:static;width:auto}.components-popover.is-expanded.is-alternate .components-popover__content{box-shadow:0 -1px 0 #1e1e1e}.components-popover__header{align-items:center;background:#fff;display:flex;height:48px;justify-content:space-between;padding:0 8px 0 16px}.components-popover__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.components-popover__close.components-button{z-index:5}.components-popover__arrow{display:flex;height:14px;pointer-events:none;position:absolute;width:14px}.components-popover__arrow:before{background-color:#fff;content:"";height:2px;left:1px;position:absolute;right:1px;top:-1px}.components-popover__arrow.is-top{bottom:-14px!important;transform:rotate(0)}.components-popover__arrow.is-right{left:-14px!important;transform:rotate(90deg)}.components-popover__arrow.is-bottom{top:-14px!important;transform:rotate(180deg)}.components-popover__arrow.is-left{right:-14px!important;transform:rotate(-90deg)}.components-popover__triangle{display:block;flex:1}.components-popover__triangle-bg{fill:#fff}.components-popover__triangle-border{fill:transparent;stroke-width:1px;stroke:#ccc}.is-alternate .components-popover__triangle-border{stroke:#1e1e1e}.components-radio-control{border:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;margin:0;padding:0}.components-radio-control__group-wrapper.has-help{margin-block-end:12px}.components-radio-control__option{align-items:center;column-gap:8px;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto minmax(0,max-content)}.components-radio-control__input[type=radio]{appearance:none;border:1px solid #1e1e1e;border-radius:2px;border-radius:50%;box-shadow:0 0 0 transparent;cursor:pointer;display:inline-flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;grid-column:1;grid-row:1;height:24px;line-height:normal;margin:0;max-width:24px;min-width:24px;padding:0;position:relative;transition:none;width:24px}@media not (prefers-reduced-motion){.components-radio-control__input[type=radio]{transition:box-shadow .1s linear}}@media(min-width:600px){.components-radio-control__input[type=radio]{font-size:13px;line-height:normal}}.components-radio-control__input[type=radio]:focus{border-color:var(--wp-admin-theme-color);box-shadow:0 0 0 .5px var(--wp-admin-theme-color)}.components-radio-control__input[type=radio]::-webkit-input-placeholder{color:rgba(30,30,30,.62)}.components-radio-control__input[type=radio]::-moz-placeholder{color:rgba(30,30,30,.62)}.components-radio-control__input[type=radio]:-ms-input-placeholder{color:rgba(30,30,30,.62)}@media(min-width:600px){.components-radio-control__input[type=radio]{height:16px;max-width:16px;min-width:16px;width:16px}}.components-radio-control__input[type=radio]:checked:before{background-color:#fff;border:4px solid #fff;box-sizing:inherit;height:12px;left:50%;margin:0;position:absolute;top:50%;transform:translate(-50%,-50%);width:12px}@media(min-width:600px){.components-radio-control__input[type=radio]:checked:before{height:8px;width:8px}}.components-radio-control__input[type=radio]:focus{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--wp-admin-theme-color)}.components-radio-control__input[type=radio]:checked{background:var(--wp-admin-theme-color);border:none}.components-radio-control__input[type=radio]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) #fff,0 0 0 calc(var(--wp-admin-border-width-focus)*2) var(--wp-admin-theme-color);outline:2px solid transparent;outline-offset:2px}.components-radio-control__input[type=radio]:checked{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));border-color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-radio-control__input[type=radio]:checked:before{border-radius:50%;content:""}.components-radio-control__label{cursor:pointer;grid-column:2;grid-row:1;line-height:24px}@media(min-width:600px){.components-radio-control__label{line-height:16px}}.components-radio-control__option-description{grid-column:2;grid-row:2;padding-block-start:4px}.components-radio-control__option-description.components-radio-control__option-description{margin-top:0}.components-resizable-box__handle{display:none;height:23px;width:23px;z-index:2}.components-resizable-box__container.has-show-handle .components-resizable-box__handle{display:block}.components-resizable-box__handle>div{height:100%;outline:none;position:relative;width:100%;z-index:2}.components-resizable-box__container>img{width:inherit}.components-resizable-box__handle:after{background:#fff;border-radius:50%;box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)),0 1px 1px rgba(0,0,0,.03),0 1px 2px rgba(0,0,0,.02),0 3px 3px rgba(0,0,0,.02),0 4px 4px rgba(0,0,0,.01);content:"";cursor:inherit;display:block;height:15px;outline:2px solid transparent;position:absolute;right:calc(50% - 8px);top:calc(50% - 8px);width:15px}.components-resizable-box__side-handle:before{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));border-radius:9999px;content:"";cursor:inherit;display:block;height:3px;opacity:0;position:absolute;right:calc(50% - 1px);top:calc(50% - 1px);width:3px}@media not (prefers-reduced-motion){.components-resizable-box__side-handle:before{transition:transform .1s ease-in;will-change:transform}}.components-resizable-box__corner-handle,.components-resizable-box__side-handle{z-index:2}.components-resizable-box__side-handle.components-resizable-box__handle-bottom,.components-resizable-box__side-handle.components-resizable-box__handle-bottom:before,.components-resizable-box__side-handle.components-resizable-box__handle-top,.components-resizable-box__side-handle.components-resizable-box__handle-top:before{border-left:0;border-right:0;left:0;width:100%}.components-resizable-box__side-handle.components-resizable-box__handle-left,.components-resizable-box__side-handle.components-resizable-box__handle-left:before,.components-resizable-box__side-handle.components-resizable-box__handle-right,.components-resizable-box__side-handle.components-resizable-box__handle-right:before{border-bottom:0;border-top:0;height:100%;top:0}@media not (prefers-reduced-motion){.components-resizable-box__side-handle.components-resizable-box__handle-bottom:active:before,.components-resizable-box__side-handle.components-resizable-box__handle-bottom:hover:before,.components-resizable-box__side-handle.components-resizable-box__handle-top:active:before,.components-resizable-box__side-handle.components-resizable-box__handle-top:hover:before{animation:components-resizable-box__top-bottom-animation .1s ease-out 0s;animation-fill-mode:forwards}.components-resizable-box__side-handle.components-resizable-box__handle-left:active:before,.components-resizable-box__side-handle.components-resizable-box__handle-left:hover:before,.components-resizable-box__side-handle.components-resizable-box__handle-right:active:before,.components-resizable-box__side-handle.components-resizable-box__handle-right:hover:before{animation:components-resizable-box__left-right-animation .1s ease-out 0s;animation-fill-mode:forwards}}@media not all and (min-resolution:0.001dpcm){@supports(-webkit-appearance:none){.components-resizable-box__side-handle.components-resizable-box__handle-bottom:active:before,.components-resizable-box__side-handle.components-resizable-box__handle-bottom:hover:before,.components-resizable-box__side-handle.components-resizable-box__handle-left:active:before,.components-resizable-box__side-handle.components-resizable-box__handle-left:hover:before,.components-resizable-box__side-handle.components-resizable-box__handle-right:active:before,.components-resizable-box__side-handle.components-resizable-box__handle-right:hover:before,.components-resizable-box__side-handle.components-resizable-box__handle-top:active:before,.components-resizable-box__side-handle.components-resizable-box__handle-top:hover:before{animation:none}}}@keyframes components-resizable-box__top-bottom-animation{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes components-resizable-box__left-right-animation{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}/*!rtl:begin:ignore*/.components-resizable-box__handle-right{right:-11.5px}.components-resizable-box__handle-left{left:-11.5px}.components-resizable-box__handle-top{top:-11.5px}.components-resizable-box__handle-bottom{bottom:-11.5px}/*!rtl:end:ignore*/.components-responsive-wrapper{align-items:center;display:flex;justify-content:center;max-width:100%;position:relative}.components-responsive-wrapper__content{display:block;max-width:100%;width:100%}.components-sandbox{overflow:hidden}iframe.components-sandbox{width:100%}body.lockscroll,html.lockscroll{overflow:hidden}.components-select-control__input{outline:0;-webkit-tap-highlight-color:rgba(0,0,0,0)!important}@media(max-width:782px){.components-base-control .components-base-control__field .components-select-control__input{font-size:16px}}.components-snackbar{-webkit-backdrop-filter:blur(16px) saturate(180%);backdrop-filter:blur(16px) saturate(180%);background:rgba(0,0,0,.85);border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.05),0 2px 3px rgba(0,0,0,.04),0 6px 6px rgba(0,0,0,.03),0 8px 8px rgba(0,0,0,.02);box-sizing:border-box;color:#fff;cursor:pointer;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;max-width:600px;padding:12px 20px;pointer-events:auto;width:100%}@media(min-width:600px){.components-snackbar{width:fit-content}}.components-snackbar:focus{box-shadow:inset 0 0 0 1px #fff,0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-snackbar.components-snackbar-explicit-dismiss{cursor:default}.components-snackbar .components-snackbar__content-with-icon{padding-left:24px;position:relative}.components-snackbar .components-snackbar__icon{left:-8px;position:absolute;top:-2.9px}.components-snackbar .components-snackbar__dismiss-button{cursor:pointer;margin-left:24px}.components-snackbar__action.components-button{color:#fff;flex-shrink:0;margin-left:32px}.components-snackbar__action.components-button:focus{box-shadow:none;outline:1px dotted #fff}.components-snackbar__action.components-button:hover{color:currentColor;text-decoration:none}.components-snackbar__content{align-items:baseline;display:flex;justify-content:space-between;line-height:1.4}.components-snackbar-list{box-sizing:border-box;pointer-events:none;position:absolute;width:100%;z-index:100000}.components-snackbar-list__notice-container{padding-top:8px;position:relative}.components-tab-panel__tabs{align-items:stretch;display:flex;flex-direction:row}.components-tab-panel__tabs[aria-orientation=vertical]{flex-direction:column}.components-tab-panel__tabs-item{background:transparent;border:none;border-radius:0;box-shadow:none;cursor:pointer;font-weight:500;height:48px!important;margin-left:0;padding:3px 16px;position:relative}.components-tab-panel__tabs-item:focus:not(:disabled){box-shadow:none;outline:none;position:relative}.components-tab-panel__tabs-item:after{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));border-radius:0;bottom:0;content:"";height:calc(var(--wp-admin-border-width-focus)*0);left:0;pointer-events:none;position:absolute;right:0}@media not (prefers-reduced-motion){.components-tab-panel__tabs-item:after{transition:all .1s linear}}.components-tab-panel__tabs-item.is-active:after{height:calc(var(--wp-admin-border-width-focus)*1);outline:2px solid transparent;outline-offset:-1px}.components-tab-panel__tabs-item:before{border-radius:2px;bottom:12px;box-shadow:0 0 0 0 transparent;content:"";left:12px;pointer-events:none;position:absolute;right:12px;top:12px}@media not (prefers-reduced-motion){.components-tab-panel__tabs-item:before{transition:all .1s linear}}.components-tab-panel__tabs-item:focus-visible:before{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));outline:2px solid transparent}.components-tab-panel__tab-content:focus{box-shadow:none;outline:none}.components-tab-panel__tab-content:focus-visible{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));outline:2px solid transparent;outline-offset:0}.components-text-control__input,.components-text-control__input[type=color],.components-text-control__input[type=date],.components-text-control__input[type=datetime-local],.components-text-control__input[type=datetime],.components-text-control__input[type=email],.components-text-control__input[type=month],.components-text-control__input[type=number],.components-text-control__input[type=password],.components-text-control__input[type=tel],.components-text-control__input[type=text],.components-text-control__input[type=time],.components-text-control__input[type=url],.components-text-control__input[type=week]{border:1px solid #949494;border-radius:2px;box-shadow:0 0 0 transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;height:32px;line-height:normal;margin:0;padding:6px 8px;width:100%}@media not (prefers-reduced-motion){.components-text-control__input,.components-text-control__input[type=color],.components-text-control__input[type=date],.components-text-control__input[type=datetime-local],.components-text-control__input[type=datetime],.components-text-control__input[type=email],.components-text-control__input[type=month],.components-text-control__input[type=number],.components-text-control__input[type=password],.components-text-control__input[type=tel],.components-text-control__input[type=text],.components-text-control__input[type=time],.components-text-control__input[type=url],.components-text-control__input[type=week]{transition:box-shadow .1s linear}}@media(min-width:600px){.components-text-control__input,.components-text-control__input[type=color],.components-text-control__input[type=date],.components-text-control__input[type=datetime-local],.components-text-control__input[type=datetime],.components-text-control__input[type=email],.components-text-control__input[type=month],.components-text-control__input[type=number],.components-text-control__input[type=password],.components-text-control__input[type=tel],.components-text-control__input[type=text],.components-text-control__input[type=time],.components-text-control__input[type=url],.components-text-control__input[type=week]{font-size:13px;line-height:normal}}.components-text-control__input:focus,.components-text-control__input[type=color]:focus,.components-text-control__input[type=date]:focus,.components-text-control__input[type=datetime-local]:focus,.components-text-control__input[type=datetime]:focus,.components-text-control__input[type=email]:focus,.components-text-control__input[type=month]:focus,.components-text-control__input[type=number]:focus,.components-text-control__input[type=password]:focus,.components-text-control__input[type=tel]:focus,.components-text-control__input[type=text]:focus,.components-text-control__input[type=time]:focus,.components-text-control__input[type=url]:focus,.components-text-control__input[type=week]:focus{border-color:var(--wp-admin-theme-color);box-shadow:0 0 0 .5px var(--wp-admin-theme-color);outline:2px solid transparent}.components-text-control__input::-webkit-input-placeholder,.components-text-control__input[type=color]::-webkit-input-placeholder,.components-text-control__input[type=date]::-webkit-input-placeholder,.components-text-control__input[type=datetime-local]::-webkit-input-placeholder,.components-text-control__input[type=datetime]::-webkit-input-placeholder,.components-text-control__input[type=email]::-webkit-input-placeholder,.components-text-control__input[type=month]::-webkit-input-placeholder,.components-text-control__input[type=number]::-webkit-input-placeholder,.components-text-control__input[type=password]::-webkit-input-placeholder,.components-text-control__input[type=tel]::-webkit-input-placeholder,.components-text-control__input[type=text]::-webkit-input-placeholder,.components-text-control__input[type=time]::-webkit-input-placeholder,.components-text-control__input[type=url]::-webkit-input-placeholder,.components-text-control__input[type=week]::-webkit-input-placeholder{color:rgba(30,30,30,.62)}.components-text-control__input::-moz-placeholder,.components-text-control__input[type=color]::-moz-placeholder,.components-text-control__input[type=date]::-moz-placeholder,.components-text-control__input[type=datetime-local]::-moz-placeholder,.components-text-control__input[type=datetime]::-moz-placeholder,.components-text-control__input[type=email]::-moz-placeholder,.components-text-control__input[type=month]::-moz-placeholder,.components-text-control__input[type=number]::-moz-placeholder,.components-text-control__input[type=password]::-moz-placeholder,.components-text-control__input[type=tel]::-moz-placeholder,.components-text-control__input[type=text]::-moz-placeholder,.components-text-control__input[type=time]::-moz-placeholder,.components-text-control__input[type=url]::-moz-placeholder,.components-text-control__input[type=week]::-moz-placeholder{color:rgba(30,30,30,.62)}.components-text-control__input:-ms-input-placeholder,.components-text-control__input[type=color]:-ms-input-placeholder,.components-text-control__input[type=date]:-ms-input-placeholder,.components-text-control__input[type=datetime-local]:-ms-input-placeholder,.components-text-control__input[type=datetime]:-ms-input-placeholder,.components-text-control__input[type=email]:-ms-input-placeholder,.components-text-control__input[type=month]:-ms-input-placeholder,.components-text-control__input[type=number]:-ms-input-placeholder,.components-text-control__input[type=password]:-ms-input-placeholder,.components-text-control__input[type=tel]:-ms-input-placeholder,.components-text-control__input[type=text]:-ms-input-placeholder,.components-text-control__input[type=time]:-ms-input-placeholder,.components-text-control__input[type=url]:-ms-input-placeholder,.components-text-control__input[type=week]:-ms-input-placeholder{color:rgba(30,30,30,.62)}.components-text-control__input.is-next-40px-default-size,.components-text-control__input[type=color].is-next-40px-default-size,.components-text-control__input[type=date].is-next-40px-default-size,.components-text-control__input[type=datetime-local].is-next-40px-default-size,.components-text-control__input[type=datetime].is-next-40px-default-size,.components-text-control__input[type=email].is-next-40px-default-size,.components-text-control__input[type=month].is-next-40px-default-size,.components-text-control__input[type=number].is-next-40px-default-size,.components-text-control__input[type=password].is-next-40px-default-size,.components-text-control__input[type=tel].is-next-40px-default-size,.components-text-control__input[type=text].is-next-40px-default-size,.components-text-control__input[type=time].is-next-40px-default-size,.components-text-control__input[type=url].is-next-40px-default-size,.components-text-control__input[type=week].is-next-40px-default-size{height:40px;padding-left:12px;padding-right:12px}.components-text-control__input[type=email],.components-text-control__input[type=url]{direction:ltr}.components-tip{color:#757575;display:flex}.components-tip svg{align-self:center;fill:#f0b849;flex-shrink:0;margin-right:16px}.components-tip p{margin:0}.components-toggle-control__label{line-height:16px}.components-toggle-control__label:not(.is-disabled){cursor:pointer}.components-toggle-control__help{display:inline-block;margin-inline-start:40px}.components-accessible-toolbar{border:1px solid #1e1e1e;border-radius:2px;display:inline-flex;flex-shrink:0}.components-accessible-toolbar>.components-toolbar-group:last-child{border-right:none}.components-accessible-toolbar.is-unstyled{border:none}.components-accessible-toolbar.is-unstyled>.components-toolbar-group{border-right:none}.components-accessible-toolbar[aria-orientation=vertical],.components-toolbar[aria-orientation=vertical]{align-items:center;display:flex;flex-direction:column}.components-accessible-toolbar .components-button,.components-toolbar .components-button{height:48px;padding-left:16px;padding-right:16px;position:relative;z-index:1}.components-accessible-toolbar .components-button:focus:not(:disabled),.components-toolbar .components-button:focus:not(:disabled){box-shadow:none;outline:none}.components-accessible-toolbar .components-button:before,.components-toolbar .components-button:before{border-radius:2px;content:"";display:block;height:32px;left:8px;position:absolute;right:8px;z-index:-1}@media not (prefers-reduced-motion){.components-accessible-toolbar .components-button:before,.components-toolbar .components-button:before{animation:components-button__appear-animation .1s ease;animation-fill-mode:forwards}}.components-accessible-toolbar .components-button svg,.components-toolbar .components-button svg{margin-left:auto;margin-right:auto;position:relative}.components-accessible-toolbar .components-button.is-pressed,.components-accessible-toolbar .components-button.is-pressed:hover,.components-toolbar .components-button.is-pressed,.components-toolbar .components-button.is-pressed:hover{background:transparent}.components-accessible-toolbar .components-button.is-pressed:before,.components-toolbar .components-button.is-pressed:before{background:#1e1e1e}.components-accessible-toolbar .components-button:focus:before,.components-toolbar .components-button:focus:before{box-shadow:inset 0 0 0 1px #fff,0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid transparent}.components-accessible-toolbar .components-button.has-icon.has-icon,.components-toolbar .components-button.has-icon.has-icon{min-width:48px;padding-left:8px;padding-right:8px}@keyframes components-button__appear-animation{0%{transform:scaleY(0)}to{transform:scaleY(1)}}.components-toolbar__control.components-button{position:relative}.components-toolbar__control.components-button[data-subscript] svg{padding:5px 10px 5px 0}.components-toolbar__control.components-button[data-subscript]:after{bottom:10px;content:attr(data-subscript);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;font-weight:600;line-height:12px;position:absolute;right:8px}.components-toolbar__control.components-button:not(:disabled).is-pressed[data-subscript]:after{color:#fff}.components-toolbar-group{background-color:#fff;border-right:1px solid #1e1e1e;display:inline-flex;flex-shrink:0;flex-wrap:wrap;line-height:0;min-height:48px;padding-left:6px;padding-right:6px}.components-toolbar-group .components-toolbar-group.components-toolbar-group{border-width:0;margin:0}.components-toolbar-group .components-button.components-button,.components-toolbar-group .components-button.has-icon.has-icon{justify-content:center;min-width:36px;padding-left:6px;padding-right:6px}.components-toolbar-group .components-button.components-button svg,.components-toolbar-group .components-button.has-icon.has-icon svg{min-width:24px}.components-toolbar-group .components-button.components-button:before,.components-toolbar-group .components-button.has-icon.has-icon:before{left:2px;right:2px}.components-toolbar{background-color:#fff;border:1px solid #1e1e1e;display:inline-flex;flex-shrink:0;flex-wrap:wrap;margin:0;min-height:48px}.components-toolbar .components-toolbar.components-toolbar{border-width:0;margin:0}div.components-toolbar>div{display:flex;margin:0}div.components-toolbar>div+div.has-left-divider{margin-left:6px;overflow:visible;position:relative}div.components-toolbar>div+div.has-left-divider:before{background-color:#ddd;box-sizing:content-box;content:"";display:inline-block;height:20px;left:-3px;position:absolute;top:8px;width:1px}.components-tooltip{background:#000;border-radius:2px;box-shadow:0 1px 2px rgba(0,0,0,.05),0 2px 3px rgba(0,0,0,.04),0 6px 6px rgba(0,0,0,.03),0 8px 8px rgba(0,0,0,.02);color:#f0f0f0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:12px;line-height:1.4;padding:4px 8px;text-align:center;z-index:1000002}.components-tooltip__shortcut{margin-left:8px}:root{--tag-color:#daffdc}div.dataviews-wrapper div.dataviews-filters__container{padding-left:24px}div.dataviews-wrapper svg.table-view-icon{height:52px;width:52px}div.dataviews-wrapper button[aria-controls=dataviews-view-config-dropdown-0]{display:none}div.dataviews-wrapper div.dataviews__view-actions{align-items:center;justify-content:flex-start;padding-left:24px;padding-right:24px}div.dataviews-wrapper button.components-button.is-secondary{font-weight:400;padding:calc(var(--spacing-base)/2) var(--spacing-base)}div.dataviews-wrapper div.components-base-control__field{margin-bottom:0}div.dataviews-wrapper div.components-toggle-group-control{min-height:32px;padding:0}div.dataviews-wrapper div.dataviews-title-field{font-size:var(--font-title-small)}div.dataviews-wrapper span.dataviews-view-list__field-value{font-size:var(--font-body-small)}div.dataviews-wrapper div.dataviews-view-list div[role=row]{border:none}div.dataviews-wrapper div.dataviews-view-list div[role=row] .dataviews-view-list__fields{flex-wrap:nowrap;justify-content:space-between;margin-right:30px}@media(min-width:783px){div.dataviews-wrapper div.dataviews-view-list div[role=row] .dataviews-view-list__fields{flex-wrap:wrap;margin-right:0}}div.dataviews-wrapper div.dataviews-view-list div[role=row]:not(.is-selected).is-hovered,div.dataviews-wrapper div.dataviews-view-list div[role=row]:not(.is-selected):hover{background-color:transparent}div.dataviews-wrapper div.dataviews-view-list div[role=row]:not(.is-selected).is-hovered .dataviews-view-list__fields,div.dataviews-wrapper div.dataviews-view-list div[role=row]:not(.is-selected):hover .dataviews-view-list__fields{color:#757575}@media(min-width:783px){div.dataviews-wrapper button.dataviews-view-list__item{display:none}}div.dataviews-filters__search-widget-listitem span,span.dataviews-filters__summary-filter-text-value{text-transform:capitalize}div.dataviews-filters__search-widget-listitem:hover,div.dataviews-filters__search-widget-listitem[data-active-item]{background-color:var(--tag-color);color:var(--jp-gray-70)}div.dataviews-filters__search-widget-listitem:hover span.dataviews-filters__search-widget-listitem-check{fill:var(--jp-gray-70)}div.dataviews-filters__summary-chip-container button.dataviews-filters__summary-chip-remove.has-values:hover,div.dataviews-filters__summary-chip-container div.dataviews-filters__summary-chip.has-values:hover,div.dataviews-filters__summary-chip-container div.dataviews-filters__summary-chip.has-values[aria-expanded=true]{background-color:var(--tag-color)}button.product-list-item-chevron{align-items:center;background:transparent;border:none;cursor:pointer;display:flex;justify-content:center;outline-color:var(--jp-green-40);padding:0;position:absolute;right:30px;top:calc(50% - 12px)}.Jvb1njqMy7ML1zikhbWn{margin-top:1rem}.mpr8_ygU8woV4bVR1xvw{align-items:center;display:flex;font-size:var(--font-title-small);font-weight:500;line-height:1.5;margin-bottom:.5rem;margin-top:0}.gwO_Q0L0jbwMARVlBezu{color:var(--jp-gray-60);font-family:SF Pro Text,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:var(--font-body-small);font-weight:400;letter-spacing:-.15px;line-height:20px;margin-left:.75rem}.qwy7CsLeEbXvaPwgC9WV{display:flex;flex-flow:row nowrap;max-width:100%;overflow-x:scroll;padding:1px;scrollbar-width:none}.qwy7CsLeEbXvaPwgC9WV::-webkit-scrollbar{display:none}.qwy7CsLeEbXvaPwgC9WV .Hrbg7DeSJs6gas9zdPDR{border-color:var(--jp-gray-5);border-radius:5px;margin-bottom:0;margin-right:1.5rem;min-width:180px;padding:1rem 1.5rem;width:100%}@media only screen and (min-width:960px){.qwy7CsLeEbXvaPwgC9WV .Hrbg7DeSJs6gas9zdPDR{min-width:220px}}.qwy7CsLeEbXvaPwgC9WV .Hrbg7DeSJs6gas9zdPDR:last-child{margin-right:0}.NFpbo5AINn6I6avKFGby{margin-bottom:1.5rem}.aoQZCG0JeyWmy2J6vVxF{font-weight:500;line-height:20px;margin-bottom:.25rem}.M6ApyXg79vuXo6GwDkbO{align-items:flex-end;display:flex;flex-wrap:wrap;font-size:36px;font-weight:400;line-height:40px}.M6ApyXg79vuXo6GwDkbO.DYHb5e6QhgXejWyo9s78{cursor:pointer}.OlInbY5YnDO06MEQHv98{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;line-height:1;margin-right:.5rem}.EtbKbd5m85w7oYT4stIs{color:var(--jp-gray-20);display:none;font-size:var(--font-body-small);font-weight:600;line-height:24px;fill:var(--jp-gray-20)}@media screen and (min-width:960px){.EtbKbd5m85w7oYT4stIs{align-items:center;display:flex}}.EtbKbd5m85w7oYT4stIs.Awr7zl75sfAsFPHK9kDG{color:var(--jp-red-50);fill:var(--jp-red-50)}.EtbKbd5m85w7oYT4stIs.QFSZbIKFdWO3HEPBZyhc{color:var(--jp-green-50);fill:var(--jp-green-50)}.GgJAnS4gaEEGmRCP5n8y{align-content:flex-end;display:flex}.mjiNtwdbKpfo9edGVes4{margin-right:2px}.pAt4v_KG9Ir19wNcEtEj{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;margin-top:calc(var(--spacing-base)*2.5);min-height:28px;width:100%}.vMa4i_Dza2t5Zi_Bw9Nf{background:var(--jp-white-off);padding-top:1px}.jrGNTKcgeXk9HKzolut9{position:relative}.jrGNTKcgeXk9HKzolut9>.wg3mZsoPekZWlBgOvdZ6{overflow:hidden;padding:0}.jrGNTKcgeXk9HKzolut9>.wg3mZsoPekZWlBgOvdZ6.aDxB89WgtARQqNWd4ZeK:before{background-color:var(--jp-red-50);border:2px solid var(--jp-white-off);border-radius:50%;content:"";height:18px;left:-11px;position:absolute;top:-11px;width:18px}.jrGNTKcgeXk9HKzolut9>.sGP8lxDpRSjt0Fh7wxoR{background-color:var(--jp-white);border-radius:50%;box-shadow:0 0 5px 1px rgba(0,0,0,.1);padding:8px;position:absolute;right:16px;top:16px;transform:scale(.75)}.jrGNTKcgeXk9HKzolut9>.sGP8lxDpRSjt0Fh7wxoR:focus,.jrGNTKcgeXk9HKzolut9>.sGP8lxDpRSjt0Fh7wxoR:hover{background-color:var(--jp-white)}.jrGNTKcgeXk9HKzolut9>.sGP8lxDpRSjt0Fh7wxoR:disabled{pointer-events:none}.z5EQSkU36nsjxHEBSfNN{padding:0}.MwBwVaEj6u_zRgfrFR9b{padding:24px 16px}@media screen and (min-width:600){.MwBwVaEj6u_zRgfrFR9b{padding:32px 24px}}@media screen and (min-width:960px){.MwBwVaEj6u_zRgfrFR9b{padding:48px 12px 48px 48px}}.UgPNtuFW7lTJ06k39EsK{background-image:url(images/evaluation-blank-fbbfbcd75b50ade0f092.png),radial-gradient(circle at 40% 70%,rgba(206,217,242,.75) 0,hsla(0,0%,100%,0) 40%),radial-gradient(circle at 80% 80%,rgba(6,158,8,.15) 5%,hsla(0,0%,100%,0) 50%),radial-gradient(circle at 80% 20%,hsla(46,77%,83%,.75) 0,hsla(0,0%,100%,0) 50%);background-position:75%;background-repeat:no-repeat;background-size:393px,cover,cover,cover}.UgPNtuFW7lTJ06k39EsK.ilVOud0_OCGK4HciazB_{background-image:url(images/evaluation-selected-196d1790b76830f9b73a.png),radial-gradient(circle at 40% 70%,rgba(206,217,242,.75) 0,hsla(0,0%,100%,0) 40%),radial-gradient(circle at 80% 80%,rgba(6,158,8,.15) 5%,hsla(0,0%,100%,0) 50%),radial-gradient(circle at 80% 20%,hsla(46,77%,83%,.75) 0,hsla(0,0%,100%,0) 50%)}.EtcggGK0Bk8POQD986Og{background-image:url(images/site-cards-29522f090d5422fd7afd.png),radial-gradient(circle at 90% 30%,rgba(6,158,8,.15) 0,hsla(0,0%,100%,0) 35%),radial-gradient(circle at 75% 65%,rgba(206,217,242,.5) 5%,hsla(0,0%,100%,0) 15%),radial-gradient(circle at 90% 90%,hsla(46,77%,83%,.5) 0,hsla(0,0%,100%,0) 25%);background-repeat:no-repeat;background-size:cover}@media screen and (max-width:960px){.EtcggGK0Bk8POQD986Og{background-image:url(images/site-cards-29522f090d5422fd7afd.png),radial-gradient(circle at 55% 30%,rgba(6,158,8,.15) 0,hsla(0,0%,100%,0) 100%),radial-gradient(circle at 25% 40%,rgba(206,217,242,.5) 5%,hsla(0,0%,100%,0) 50%),radial-gradient(circle at 50% 85%,hsla(46,77%,83%,.3) 0,hsla(0,0%,100%,0) 35%);min-height:160px;order:-1}}.TSiu5sC6MdANROjUkUJM{margin-top:24px}.iqJfpZM9IYXuFSXvuoEe{font-size:16px!important;margin-top:16px}.Vozbq8Inlk5SxoVnn2G5{column-gap:40px;display:flex;flex-direction:row;margin-top:64px}.s_V1BM1Wtt3He4eF2TCu{padding-left:calc(var(--spacing-base)*3);padding-right:calc(var(--spacing-base)*3);text-decoration:none!important}.FMZ2bZdjMxKFePbMwRi3{align-items:center;background-image:radial-gradient(circle at 80% 80%,rgba(6,158,8,.15) 5%,hsla(0,0%,100%,0) 50%);background-position:100% 80%;background-repeat:no-repeat;background-size:cover;display:flex;flex-direction:column;justify-content:center;padding:144px 32px}.eShkT8UhgFL0N__pJEA8{display:flex;justify-content:center;margin-bottom:24px}.eShkT8UhgFL0N__pJEA8 .GZ2uVyfGabA_66Y8nmuF{color:var(--jp-green-40);height:88px;transform:scale(1.3);transition:transform .3s ease-out;width:88px}.eShkT8UhgFL0N__pJEA8 .GZ2uVyfGabA_66Y8nmuF .Ktcwz9OsGT_3yNKZq6BA,.eShkT8UhgFL0N__pJEA8 .GZ2uVyfGabA_66Y8nmuF .WQpz4j3rH6uEqAXwDrR8,.eShkT8UhgFL0N__pJEA8 .GZ2uVyfGabA_66Y8nmuF .jkWzdt8A2twwREkaF2qX,.eShkT8UhgFL0N__pJEA8 .GZ2uVyfGabA_66Y8nmuF .lZq4cdGYKYAgiVEYCtXw{opacity:0}.eShkT8UhgFL0N__pJEA8 .GZ2uVyfGabA_66Y8nmuF .jkWzdt8A2twwREkaF2qX{stroke-dasharray:276;stroke-dashoffset:276;animation:w9IUcbm9vJHQeg2OXhtF 2s ease-out forwards}.eShkT8UhgFL0N__pJEA8 .GZ2uVyfGabA_66Y8nmuF .lZq4cdGYKYAgiVEYCtXw{animation:xAohbjzRzlC5o13repbp .5s ease-in-out 1.5s forwards}.eShkT8UhgFL0N__pJEA8.iOKKzf48kelOFS8vRBwR .GZ2uVyfGabA_66Y8nmuF{animation:OrGIdZzrmFu39hFSKNfg 1s ease-out .3s forwards;transform:scale(1.4)}.eShkT8UhgFL0N__pJEA8.iOKKzf48kelOFS8vRBwR .GZ2uVyfGabA_66Y8nmuF .Ktcwz9OsGT_3yNKZq6BA,.eShkT8UhgFL0N__pJEA8.iOKKzf48kelOFS8vRBwR .GZ2uVyfGabA_66Y8nmuF .WQpz4j3rH6uEqAXwDrR8{animation:xAohbjzRzlC5o13repbp .85s ease-out .3s forwards}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .GZ2uVyfGabA_66Y8nmuF{animation:none;transform:scale(1.4)}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .GZ2uVyfGabA_66Y8nmuF .Ktcwz9OsGT_3yNKZq6BA,.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .GZ2uVyfGabA_66Y8nmuF .WQpz4j3rH6uEqAXwDrR8{opacity:1}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z{position:absolute;top:0;transform:translateX(10px)}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z>g{opacity:0;transform:translateY(-200px)}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z>g:first-child{--duration:0.6s;animation:xAohbjzRzlC5o13repbp .6s ease-in-out .2s forwards,_brJ7gDgGneDqAzmDSZG var(--duration) linear forwards}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z>g:nth-child(2){--duration:0.8s;animation:xAohbjzRzlC5o13repbp .6s ease-in-out .2s forwards,_brJ7gDgGneDqAzmDSZG var(--duration) linear forwards}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z>g:nth-child(3){--duration:1s;animation:xAohbjzRzlC5o13repbp .6s ease-in-out .2s forwards,_brJ7gDgGneDqAzmDSZG var(--duration) linear forwards}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z>g:nth-child(4){--duration:0.7s;animation:xAohbjzRzlC5o13repbp .6s ease-in-out .2s forwards,_brJ7gDgGneDqAzmDSZG var(--duration) linear forwards}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z>g:nth-child(5){--duration:0.9s;animation:xAohbjzRzlC5o13repbp .6s ease-in-out .2s forwards,_brJ7gDgGneDqAzmDSZG var(--duration) linear forwards}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z>g:nth-child(6){--duration:1.1s;animation:xAohbjzRzlC5o13repbp .6s ease-in-out .2s forwards,_brJ7gDgGneDqAzmDSZG var(--duration) linear forwards}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z>g:nth-child(7){--duration:0.75s;animation:xAohbjzRzlC5o13repbp .6s ease-in-out .2s forwards,_brJ7gDgGneDqAzmDSZG var(--duration) linear forwards}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z>g:nth-child(8){--duration:1.1s;animation:xAohbjzRzlC5o13repbp .6s ease-in-out .2s forwards,_brJ7gDgGneDqAzmDSZG var(--duration) linear forwards}@keyframes w9IUcbm9vJHQeg2OXhtF{0%{opacity:1;stroke-dashoffset:276}to{opacity:1;stroke-dashoffset:0}}@keyframes xAohbjzRzlC5o13repbp{to{opacity:1}}@keyframes OrGIdZzrmFu39hFSKNfg{25%{transform:scale(1.25)}to{transform:scale(1.4)}}@keyframes _brJ7gDgGneDqAzmDSZG{0%{transform:translateY(-300px)}to{transform:translateY(0)}}.jErCC9oKHSM15BxzFyQK{margin-bottom:0}.oVoYbwbFB6U2o90Njusk>div{background-color:var(--jp-white);font-size:16px;line-height:24px;margin:0;position:relative}.oVoYbwbFB6U2o90Njusk>div .components-notice__content{align-items:flex-start;display:flex;flex-direction:column;margin:0;padding:12px 4px}@media screen and (min-width:960px){.oVoYbwbFB6U2o90Njusk>div .components-notice__content{gap:6rem}}.oVoYbwbFB6U2o90Njusk>div .is-link{color:var(--jp-black);font-size:16px;font-weight:600;padding:var(--spacing-base) calc(var(--spacing-base)*3)!important;white-space:nowrap}.oVoYbwbFB6U2o90Njusk>div .components-notice__dismiss{align-self:center}.oVoYbwbFB6U2o90Njusk>div .components-notice__action{align-items:center;background:#000;border-radius:var(--jp-border-radius);color:var(--jp-white);cursor:pointer;font-size:16px;font-weight:600;height:auto;justify-content:center;letter-spacing:-.01em;line-height:24px;margin-left:0;margin-top:24px;padding:8px 24px;text-decoration:none}@media screen and (min-width:960px){.oVoYbwbFB6U2o90Njusk>div .components-notice__action{margin-left:calc(var(--spacing-base)*2 + 24px)}}.oVoYbwbFB6U2o90Njusk>div.Snc8NEmDelsbhlH4285s .components-notice__action{margin-left:0;margin-top:0;white-space:nowrap}.oVoYbwbFB6U2o90Njusk>div.Snc8NEmDelsbhlH4285s .components-notice__content{align-items:center;flex-direction:row}@media screen and (max-width:600px){.oVoYbwbFB6U2o90Njusk>div{padding-top:24px}.oVoYbwbFB6U2o90Njusk>div>div:has(svg){position:static}}.oVoYbwbFB6U2o90Njusk .R5tvcsARTGN0A_z3DygA{min-width:auto}.wBVXH4OTNwLHPRpN4nsq{display:flex;flex-grow:1;margin-right:var(--spacing-base)}.wBVXH4OTNwLHPRpN4nsq a{color:var(--jp-black)}.wBVXH4OTNwLHPRpN4nsq a:focus,.wBVXH4OTNwLHPRpN4nsq a:hover{text-decoration:underline;text-decoration-thickness:2px}.wBVXH4OTNwLHPRpN4nsq .terms-of-service{color:var(--jp-gray-70);font-size:var(--font-body-small)}.wBVXH4OTNwLHPRpN4nsq>svg{fill:var(--jp-red-60);align-self:flex-start;flex-shrink:0;margin-right:calc(var(--spacing-base)*2)}.wBVXH4OTNwLHPRpN4nsq>svg.F1qvEnFfHs5nz3zFZUOV{fill:none}.wBVXH4OTNwLHPRpN4nsq .products-list{margin:10px 0}.wBVXH4OTNwLHPRpN4nsq .products-list .product-badge{background-color:#f1f1f1;border-radius:6px;display:inline-block;margin:4px 8px 4px 0;padding:2px 8px}.wBVXH4OTNwLHPRpN4nsq .plugins-list .plugin-item>span{font-size:calc(var(--font-body-extra-small) + 1px);margin-inline-start:5px}.SrQxAOBa5ZaSKP8wlut9{border-bottom:none;margin:0}.TcCZnGE6mad8Dvz9pCZi{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PHBhdGggc3Ryb2tlPSIjRDYzNjM5IiBzdHJva2Utd2lkdGg9IjEuNSIgZD0iTTEyIDIwYTggOCAwIDEgMCAwLTE2IDggOCAwIDAgMCAwIDE2WiIvPjxwYXRoIGZpbGw9IiNENjM2MzkiIGQ9Ik0xMyA3aC0ydjZoMnpNMTMgMTVoLTJ2MmgyeiIvPjwvc3ZnPg==) no-repeat 0 0;color:var(--jp-red);line-height:25px;padding-left:25px}._mn6o2Dtm5pfFWc8_A1K{--spacing-base:8px;min-width:264px}.VHYulMcpzbr10HWR0iSE{align-items:flex-start;border:1px solid var(--jp-black);border-color:var(--jp-gray-5);border-left-width:6px;border-radius:4px;display:flex;font-size:var(--font-body);padding:24px 31px 27px 18px}.FGpSkMCiIHQjszcV0dbn{height:calc(var(--spacing-base)*3);margin-right:20px;width:calc(var(--spacing-base)*3)}.KoWZcCwhW13xvkEb0QON{background-color:transparent;border:none;cursor:pointer;outline:none;padding:0}.KoWZcCwhW13xvkEb0QON svg{display:block}@media screen and (max-width:600px){.VHYulMcpzbr10HWR0iSE{box-shadow:0 4px 8px rgba(0,0,0,.03),0 1px 2px rgba(0,0,0,.06);padding-top:68px;position:relative}.FGpSkMCiIHQjszcV0dbn{left:24px;position:absolute;top:24px}.KoWZcCwhW13xvkEb0QON{position:absolute;right:24px;top:24px}}.smrfczkC53EaFM8OJUXs{flex-grow:1}.IKYRWoPwt9xOVEx1wzNS{font-weight:600;margin-bottom:8px}.qM0qY6mPYp1MPN54A3Kg{align-items:center;display:flex;flex-wrap:wrap;margin-top:20px;row-gap:20px}@media screen and (max-width:600px){.qM0qY6mPYp1MPN54A3Kg{justify-content:center}}.qM0qY6mPYp1MPN54A3Kg a,.qM0qY6mPYp1MPN54A3Kg a:active,.qM0qY6mPYp1MPN54A3Kg a:focus,.qM0qY6mPYp1MPN54A3Kg a:hover{color:var(--jp-black)}.qM0qY6mPYp1MPN54A3Kg>*{margin-right:24px}.A5YkDkkXuiYgavrY6Nux{border-left-color:var(--jp-red)}.A5YkDkkXuiYgavrY6Nux .y_IPyP1wIAOhyNaqvXJq{fill:var(--jp-red)}.cT5rwuPMZzWvi5o6shMl{border-left-color:var(--jp-yellow-20)}.cT5rwuPMZzWvi5o6shMl .y_IPyP1wIAOhyNaqvXJq{fill:var(--jp-yellow-20)}.yo0O3uvNomPsYUXFCpAS{border-left-color:var(--black)}.yo0O3uvNomPsYUXFCpAS .y_IPyP1wIAOhyNaqvXJq{fill:var(--black)}.oZdDFf1jBLkzn5ICCC6x{border-left-color:var(--jp-green)}.oZdDFf1jBLkzn5ICCC6x .y_IPyP1wIAOhyNaqvXJq{fill:var(--jp-green)}.jT9Kt2ZTvxPKDQ1pa7sN.components-snackbar-list{inset-block-end:0;inset-block-start:auto;inset-inline:0;position:fixed;z-index:100001}@media(min-width:600px){.jT9Kt2ZTvxPKDQ1pa7sN.components-snackbar-list{inset-block-start:4rem;inset-inline:unset;inset-inline-end:1rem;width:auto}}@media(min-width:782px){.jT9Kt2ZTvxPKDQ1pa7sN.components-snackbar-list{inset-block-start:3rem}}.cAbGtJDGgLubucBnz7vM{background-color:var(--jp-white)}.XsCIqtbkjCGvQuTEqP12{display:flex;flex-direction:column;gap:16px;max-width:450px;width:100%}.FuIWMXR9G82lNoOWSg7Z{font-size:32px;font-weight:500;line-height:40px}.VqV6BERV7qt2YRiC8ant{color:var(--jp-gray-100,#101517);font-size:16px;font-weight:400;line-height:24px;margin-bottom:29px}.H7h4wR1WKIziIFiwJpzN{align-items:center;align-self:stretch;background:transparent;border:1px solid #ccc;border-radius:var(--jp-button-radius);box-shadow:none;display:flex;justify-content:center;margin-bottom:0;padding:14px 16px;width:100%}.H7h4wR1WKIziIFiwJpzN:hover{cursor:pointer}.pSJyHDRGl_R9CF7J_wzX{color:var(--jp-gray-80,#2c3338);font-size:15px;font-style:normal;font-weight:500;line-height:20px;margin-left:-20px;text-align:center;width:100%}.TnFm4M8CVuTak6Vq2NsE{align-items:center;display:flex;margin:20px 0;text-transform:uppercase;width:100%}.TnFm4M8CVuTak6Vq2NsE span{color:var(--jp-gray-60,#50575e);margin:0 16px;white-space:nowrap}.TnFm4M8CVuTak6Vq2NsE .eKWjmNNdlY3uWjVgR8RI{background:rgba(0,0,0,.1);flex:1;height:1px}.Scnx4BQ8P2bIZ0YxBThk{display:flex;flex-direction:column;gap:16px}.Scnx4BQ8P2bIZ0YxBThk .Ps4m_56jJQ5YgQb25OW0{border:1px solid var(--jp-gray-60,#949494);border-radius:var(--jp-button-radius);box-sizing:border-box;color:var(--jp-gray-50,#646970);font-size:15px;line-height:20px;margin:0;padding:12px 16px;width:100%}.Scnx4BQ8P2bIZ0YxBThk .IIUH0pxUdd27eEyqfQFI{background:var(--jp-green-60,#007117);border:1px solid var(--jp-green-60,#007117);border-radius:var(--jp-button-radius);box-sizing:border-box;color:var(--jp-white,#fff);font-size:16px;font-weight:500;line-height:24px;padding:12px 16px;width:100%}.Scnx4BQ8P2bIZ0YxBThk .IIUH0pxUdd27eEyqfQFI:focus,.Scnx4BQ8P2bIZ0YxBThk .IIUH0pxUdd27eEyqfQFI:hover{background:var(--jp-green-70,#00801a);cursor:pointer}.Scnx4BQ8P2bIZ0YxBThk .IIUH0pxUdd27eEyqfQFI:focus{border-color:var(--jp-white,#fff);outline:2px solid var(--jp-green-60,#007117)}.Scnx4BQ8P2bIZ0YxBThk .IIUH0pxUdd27eEyqfQFI:disabled{background:var(--jp-gray,#dcdcde);border-color:var(--jp-gray,#dcdcde);color:var(--jp-gray-50,#646970);cursor:unset}.IySisqLBT5FBSpx8ksyG{color:var(--jp-gray-50,#646970);font-size:13px;line-height:20px;margin-top:8px}.IySisqLBT5FBSpx8ksyG .terms-of-service__link{color:var(--jp-gray-50,#646970);text-decoration:underline}body{font-family:SF Pro Text,-apple-system,BlinkMacSystemFont,Avenir Next,Avenir,Segoe UI,Helvetica Neue,Helvetica,Cantarell,Ubuntu,Roboto,Noto Sans,Arial,sans-serif}#wpwrap{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}.hs8vtMKdbmvStRLqOShe{position:absolute}.a2dTOxFWByKrVw1RIDQT{--max-container-width:100%;background-color:var(--jp-white,#fff);height:100vh;overflow-y:hidden;width:100%}.q0k48EMOblqQLxSxIKZa{overflow:hidden}.w9obJdf7GdvAmyMTJp12{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center}@media screen and (max-width:600px){.w9obJdf7GdvAmyMTJp12{justify-content:flex-start;padding-top:72px}}.Jqm3k3aZ4rGDtBCVeocD{border-radius:12px;max-height:100%}.Jqm3k3aZ4rGDtBCVeocD img{display:block;object-fit:cover;width:100%}@media screen and (max-width:600px){.PhMWEQDEAfUHteBMf1hM{display:none}}.q0T8YyQxRawhpDtvJjxI{background-color:var(--jp-white);height:100%;padding:calc(var(--spacing-base)*8);position:relative}.B7JDqI_vtKxSy5GjvqA1{display:flex;flex-direction:column;height:100%}.zj7xadmhIWeuf7ZwvVTS{align-items:center;background:var(--jp-black);border-radius:var(--jp-border-radius) var(--jp-border-radius) 0 0;color:var(--jp-white);display:flex;height:calc(var(--spacing-base)*4);left:0;padding:0 var(--spacing-base);position:absolute;top:0;width:100%}.GsioW6IsC8EMYE3U6788{fill:var(--jp-white);margin-right:var(--spacing-base)}.cfEO8udWbRGPFJzW8Jg5,.dbz07JqxOlivjKO4vBEF{align-items:center;display:flex;height:calc(var(--spacing-base)*4);margin-bottom:calc(var(--spacing-base)*4)}.zlh3zbjUe4Z8cBs7uVVe{fill:#8c8f94;height:24px;line-height:24px}.qoZuzG5EcDa231hC6t0P{align-items:center;display:flex;justify-content:center}.qoZuzG5EcDa231hC6t0P svg{margin-right:var(--spacing-base)}.Q6uUUQCPWS6_6nLxIn68{display:inline-block;min-height:42px;padding:.5em 2em;text-align:center;width:100%}.Q6uUUQCPWS6_6nLxIn68 .YU4iBCRze09ZP3iCsdcb{margin:0}.Q6uUUQCPWS6_6nLxIn68.components-button.is-primary{height:auto;white-space:normal}.Q6uUUQCPWS6_6nLxIn68.is-secondary:hover:not(:disabled){background-color:var(--jp-black);color:var(--jp-white)}.OrQG7DjDd9Ha2Xj1Mx3L{margin-top:calc(var(--spacing-base)*2)}.Q1jaYDpa2AVfJpA29wT0{flex-grow:1;margin:0;margin-bottom:calc(var(--spacing-base)*2);padding:0}.Q1jaYDpa2AVfJpA29wT0 li{align-items:flex-start;display:flex;list-style:none;margin-bottom:var(--spacing-base)}.Q1jaYDpa2AVfJpA29wT0 svg{fill:var(--jp-green-primary);flex-shrink:0;margin-right:var(--spacing-base)}.HL4gSxsF0skYGhGuqH90 li:last-of-type{font-weight:700}.sEcLfpWjo0GF7QrxD3Lt{margin-top:calc(var(--spacing-base)*2)}.xgv3jRkeF39aEQELCwru{align-items:flex-end;color:var(--jp-black);display:flex;flex-wrap:wrap;gap:calc(var(--spacing-base)*2)}.twlleZ5Ehq4bB7CvKVSW{position:relative}.twlleZ5Ehq4bB7CvKVSW.Qg4rPEvXsqmod1s_31d8{color:var(--jp-gray-20)}.twlleZ5Ehq4bB7CvKVSW.Qg4rPEvXsqmod1s_31d8:after{background:var(--jp-red);border-radius:var(--jp-border-radius);content:" ";display:block;height:3px;margin-top:-2px;pointer-events:none;position:absolute;top:50%;width:100%}.ApsgxIornVy_3KnciVeJ{color:var(--jp-gray-40);margin-bottom:calc(var(--spacing-base)*3)}.NMxcZL17aEP7v81uG3zD{margin-top:calc(var(--spacing-base)*5)}.gCTKfAPzJqZas7CaRbKN{margin-bottom:calc(var(--spacing-base)*4)}.demNsMJjhi7BLY7xhjU5{align-items:center;display:flex;font-size:var(--font-body);line-height:calc(var(--spacing-base)*3);margin:calc(var(--spacing-base)*2) 0;min-height:calc(var(--spacing-base)*3)}.QiUjdjJSkqh6nH7YMG5A{align-self:flex-start;height:calc(var(--spacing-base)*3);margin-right:calc(var(--spacing-base)/2);width:calc(var(--spacing-base)*3)}.Q080AHcq29J2fc68Hhk5{color:var(--jp-red)}.Q080AHcq29J2fc68Hhk5 .hYWbIwhppukXmGnsiT9H{fill:var(--jp-red)}.JjHuxWly0HI9C60gorbq{color:var(--jp-yellow-40)}.JjHuxWly0HI9C60gorbq .hYWbIwhppukXmGnsiT9H{fill:var(--jp-yellow-40)}.Cm8ZFHi3mngl4cj9Gatx{color:var(--jp-blue-40)}.Cm8ZFHi3mngl4cj9Gatx .hYWbIwhppukXmGnsiT9H{fill:var(--jp-blue-40)}.ytGBsU015p3LGwOPwFDx{color:var(--jp-green)}.ytGBsU015p3LGwOPwFDx .hYWbIwhppukXmGnsiT9H{fill:var(--jp-green)}.iSc4n8zVaElbs0TPAWH5{align-items:center;display:flex;gap:20px;height:700px;justify-content:center;margin-top:2rem}:root{--font-title-large:36px;--font-title-small:24px;--font-body:16px;--font-label:12px;--jp-black:#000;--jp-black-80:#2c3338;--jp-white:#fff;--jp-white-off:#f9f9f6;--jp-gray:#dcdcde;--jp-gray-0:#f6f7f7;--jp-gray-5:#dcdcde;--jp-gray-10:#c3c4c7;--jp-gray-20:#a7aaad;--jp-gray-30:#8c8f94;--jp-gray-40:#787c82;--jp-gray-50:#646970;--jp-gray-60:#50575e;--jp-gray-70:#3c434a;--jp-gray-80:#2c3338;--jp-gray-90:#1d2327;--jp-gray-100:#101517;--jp-gray-off:#e2e2df;--jp-yellow-5:#f5e6b3;--jp-yellow-10:#f2cf75;--jp-yellow-40:#c08c00;--jp-orange-20:#faa754;--jp-blue-5:#ced9f2;--jp-red-0:#f7ebec;--jp-red-50:#d63638;--jp-red-60:#b32d2e;--jp-red-80:#8a2424;--jp-red:#d63639;--jp-pink:#c9356e;--jp-green-0:#f0f2eb;--jp-green-5:#d0e6b8;--jp-green-10:#9dd977;--jp-green-20:#64ca43;--jp-green-30:#2fb41f;--jp-green-40:#069e08;--jp-green-50:#008710;--jp-green-60:#007117;--jp-green-70:#005b18;--jp-green-80:#004515;--jp-green-90:#003010;--jp-green-100:#001c09;--jp-green:#069e08;--jp-green-primary:var(--jp-green-40);--jp-green-secondary:var(--jp-green-30);--jp-border-radius:4px;--jp-border-radius-rna:8px;--jp-menu-border-height:1px;--jp-underline-thickness:2px;--jp-modal-padding-large:32px;--jp-modal-padding:24px;--jp-modal-padding-small:16px;--jp-modal-radius:8px;--jp-button-padding:8px;--jp-button-radius:4px;--jp-gap:16px;--jp-highlight:#3858e9}:where(body){font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;margin:0;min-height:100%;padding:0}.jp-wrap{align-items:center;display:flex;flex-wrap:wrap;margin:0 auto;max-width:1128px}.jp-row{display:grid;grid-gap:24px;grid-template-columns:repeat(4,1fr);margin:0 16px;width:100%}@media(min-width:600px){.jp-row{grid-template-columns:repeat(8,1fr);margin:0 18px}}@media(min-width:960px){.jp-row{grid-template-columns:repeat(12,1fr);margin:0 24px;max-width:1128px}}.sm-col-span-1{grid-column-end:span 1}.sm-col-span-2{grid-column-end:span 2}.sm-col-span-3{grid-column-end:span 3}.sm-col-span-4{grid-column-end:span 4}@media(min-width:600px){.md-col-span-1{grid-column-end:span 1}.md-col-span-2{grid-column-end:span 2}.md-col-span-3{grid-column-end:span 3}.md-col-span-4{grid-column-end:span 4}.md-col-span-5{grid-column-end:span 5}.md-col-span-6{grid-column-end:span 6}.md-col-span-7{grid-column-end:span 7}.md-col-span-8{grid-column-end:span 8}}@media(min-width:960px){.lg-col-span-1{grid-column-end:span 1}.lg-col-span-2{grid-column-end:span 2}.lg-col-span-3{grid-column-end:span 3}.lg-col-span-4{grid-column-end:span 4}.lg-col-span-5{grid-column-end:span 5}.lg-col-span-6{grid-column-end:span 6}.lg-col-span-7{grid-column-end:span 7}.lg-col-span-8{grid-column-end:span 8}.lg-col-span-9{grid-column-end:span 9}.lg-col-span-10{grid-column-end:span 10}.lg-col-span-11{grid-column-end:span 11}.lg-col-span-12{grid-column-end:span 12}}@media(max-width:960px){.md-col-span-0{display:none}}@media(max-width:600px){.sm-col-span-0{display:none}}.jp-cut{border:2px solid var(--jp-green-primary);border-radius:var(--jp-border-radius);margin:32px 0;padding:16px 64px 16px 24px;position:relative;text-decoration:none}.jp-cut,.jp-cut span{display:block}.jp-cut span:last-of-type{font-weight:600}.jp-cut:focus span:last-of-type,.jp-cut:hover span:last-of-type{text-decoration:underline;text-decoration-thickness:var(--jp-underline-thickness)}.jp-cut:focus:after,.jp-cut:hover:after{transform:translateY(-50%) translateX(8px)}.jp-cut:after{color:var(--jp-green-primary);content:"→";font-size:24px;font-weight:600;position:absolute;right:24px;top:50%;transform:translateY(-50%);transition:transform .15s ease-out}.components-popover:not(.is-without-arrow):before{border-color:var(--jp-gray)}.icon-tooltip-helper .components-popover:not([data-y-axis=middle])[data-x-axis=left] .components-popover__content{margin-right:-62px}.icon-tooltip-helper .components-popover:not([data-y-axis=middle])[data-x-axis=right] .components-popover__content{margin-left:-62px}.icon-tooltip-helper .components-popover[data-y-axis=bottom] .components-popover__content{top:2px!important}.icon-tooltip-helper .components-popover:not(.is-without-arrow)[data-y-axis=bottom]:before{top:-6px!important}.icon-tooltip-helper .components-popover:not(.is-without-arrow)[data-y-axis=bottom]:after{top:-4px!important}.icon-tooltip-helper .components-popover[data-y-axis=top] .components-popover__content{bottom:10px!important}.icon-tooltip-helper .components-popover:not(.is-without-arrow)[data-y-axis=top]:before{bottom:3px}.icon-tooltip-helper .components-popover:not(.is-without-arrow)[data-y-axis=top]:after{bottom:4px}.icon-tooltip-helper.is-wide .components-popover__content{width:440px}.icon-tooltip-wrapper{color:var(--jp-black);display:inline-block;position:relative}.icon-tooltip-wrapper .components-button.is-link:focus:not(:disabled){box-shadow:none}.icon-tooltip-helper{height:18px;left:-53px;pointer-events:none;position:absolute;top:0;width:124px}.icon-tooltip-container{pointer-events:all}.icon-tooltip-container .components-popover__content{border:1px solid var(--jp-gray);border-radius:4px;margin:0 10px;max-width:90vw;outline:none;padding:24px;white-space:normal;width:304px}.icon-tooltip-title{font-size:16px;font-weight:600;line-height:19px}.icon-tooltip-title:not(:last-child){margin-bottom:8px}.icon-tooltip-content{font-size:14px;font-weight:400;line-height:24px}.icon-tooltip-content ul{list-style-type:disc;margin:0 0 0 1rem}.icon-tooltip-content ul li:last-child{margin-bottom:0}.p4qz2tkq0p9hxucJ6Qk2{--padding:calc(var(--spacing-base)*4);color:var(--jp-black)}.lbNDyXioOwvyvbALtCBm{--gap:calc(var(--spacing-base)*3);padding:var(--padding) 0;position:relative}.s2Lsn4kbm6BrS3DSndRB .lbNDyXioOwvyvbALtCBm{column-gap:var(--gap);display:grid;grid-auto-flow:column;grid-template-columns:repeat(var(--columns),1fr);grid-template-rows:repeat(var(--rows),minmax(min-content,max-content))}.cLaNK_XcbTGlRQ4Tp43Q{margin-top:var(--padding)}.s2Lsn4kbm6BrS3DSndRB .cLaNK_XcbTGlRQ4Tp43Q{display:contents}.cLaNK_XcbTGlRQ4Tp43Q.CYt1X0eH1icRjhtJ28jx>*{background:var(--jp-white);position:relative}.cLaNK_XcbTGlRQ4Tp43Q.CYt1X0eH1icRjhtJ28jx>:after{bottom:0;box-shadow:0 4px 24px rgba(0,0,0,.05);content:"";left:0;position:absolute;right:0;top:0;z-index:-1}.cLaNK_XcbTGlRQ4Tp43Q>:first-child{border-top-left-radius:var(--jp-border-radius);border-top-right-radius:var(--jp-border-radius);border-width:1px 1px 0}.cLaNK_XcbTGlRQ4Tp43Q>:last-child{border-bottom-left-radius:var(--jp-border-radius);border-bottom-right-radius:var(--jp-border-radius);border-width:0 1px 1px}.DAkZc1P9A3K12fjEliMg{display:flex;flex-direction:column;justify-content:space-between;padding:var(--padding)}.WUBuYABl8nymjs9NnCEL{align-items:center;display:flex;padding-bottom:calc(var(--spacing-base)*2);position:relative}.WUBuYABl8nymjs9NnCEL:not(:nth-child(2)){padding-top:calc(var(--spacing-base)*2)}.WUBuYABl8nymjs9NnCEL:not(:nth-child(2)):before{background-color:var(--jp-gray);content:"";height:1px;left:var(--padding);position:absolute;right:var(--padding);top:0;z-index:5}.s2Lsn4kbm6BrS3DSndRB .WUBuYABl8nymjs9NnCEL:not(:nth-child(2)):before{left:0;right:unset;width:calc(100% + var(--gap))}.s2Lsn4kbm6BrS3DSndRB .lbNDyXioOwvyvbALtCBm>:last-child .WUBuYABl8nymjs9NnCEL:not(:nth-child(2)):before{width:100%}.ANtCFeb41NhA8PA3H7ZN,.WUBuYABl8nymjs9NnCEL:last-of-type{padding-bottom:var(--padding)}.Ql2gy_148yW8Vw5vhaKD{padding-left:var(--padding);padding-right:var(--padding)}.EAQrAnQEW1z1BfdY5gbC{margin:0 var(--spacing-base);fill:var(--jp-gray);flex-shrink:0}.EAQrAnQEW1z1BfdY5gbC.JDSTlLoOC_4aUoH2oNM2{fill:var(--jp-green-40)}.EAQrAnQEW1z1BfdY5gbC.zNdQRJ1w7BvaQOYyqzHK{fill:var(--jp-red-50)}.lr7vbX95SKtoe7DarJcZ{margin-left:auto}.s2Lsn4kbm6BrS3DSndRB .lr7vbX95SKtoe7DarJcZ{margin:0 var(--spacing-base);top:1px}.WUBuYABl8nymjs9NnCEL .KRrGp2xdkeBOxLZeuQ6X{fill:var(--jp-gray-20);flex-shrink:0}.H_ZJiRVJg0LiMXPGOcmt{text-align:center;width:fit-content}.H_ZJiRVJg0LiMXPGOcmt>a{color:#000}.s2Lsn4kbm6BrS3DSndRB .H_ZJiRVJg0LiMXPGOcmt{grid-column:2;overflow:hidden;padding-left:var(--padding);padding-right:var(--padding);white-space:nowrap}.x21z_DixObRDsDaWotP1{align-items:right;display:flex;justify-content:right;margin:0 calc(var(--spacing-base)*4)}.dovianZYLKhnbnh9I06o{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-end}.lljtQMhW7lq5tE5SDJEf{align-items:flex-start;display:flex;flex-basis:0;flex-grow:2}.lljtQMhW7lq5tE5SDJEf .NubApIV1vQCRUNprfm6b{margin-left:auto}.dhFQXpZfMwVI8vuYHnwC{align-items:flex-start;display:inline-flex;flex:0 0 auto;position:relative}.dhFQXpZfMwVI8vuYHnwC:first-child{margin-right:calc(var(--spacing-base)*2)}.dhFQXpZfMwVI8vuYHnwC.eD7hzxFmdtG_MgmBtl_k{color:var(--jp-gray-20)}.dhFQXpZfMwVI8vuYHnwC.eD7hzxFmdtG_MgmBtl_k:after{background:var(--jp-red);border-radius:var(--jp-border-radius);content:" ";display:block;height:3px;margin-top:-2px;pointer-events:none;position:absolute;top:50%;width:100%}.C64ZjjUAqJC1T2Sa7apS{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start;margin-bottom:calc(var(--spacing-base)*3)}.UpZDGew6Ay1hPoP6eI7b{color:var(--jp-gray-40);font-size:var(--font-body-small);line-height:20px}.UpZDGew6Ay1hPoP6eI7b:after{content:"​"}.NubApIV1vQCRUNprfm6b{background-color:var(--jp-yellow-10);border-radius:4px;font-size:13px;font-weight:600;margin-left:var(--spacing-base);padding-left:var(--spacing-base);padding-right:var(--spacing-base)}.TDiiPbuW1Z0_05u_pvcK{font-weight:400}.SWwV4Pw6OZ5vU3PqPXmr{--product-card-shadow:rgb(0 0 0/3%);background-color:var(--jp-white);border:1px solid var(--jp-gray);border-radius:var(--jp-border-radius);box-shadow:0 2px 6px var(--product-card-shadow),0 1px 2px var(--product-card-shadow)}.r7tUofa9Z3A5ziKVR1H7{align-items:center;display:flex}.r7tUofa9Z3A5ziKVR1H7 img{object-fit:cover;width:100%}.i_AnOR3MaQLraGvb2QU5{background-color:#f9f9f6}.YcYvLvdvWrb1EUZoVsE8{display:flex;flex-wrap:wrap;gap:calc(var(--horizontal-spacing)*2);justify-content:space-between}.uGTTsKoIOoZdYhk6uPnl{white-space:nowrap}.uGTTsKoIOoZdYhk6uPnl>span{font-size:var(--font-body-small)}.NzDTsxhX8D1mlckNpewR{font-weight:400!important}.svE2cJL5t2FarzcDQYNe{--product-card-shadow:rgb(0 0 0/3%);background-color:var(--jp-white);border:1px solid var(--jp-gray);border-radius:var(--jp-border-radius);box-shadow:0 2px 6px var(--product-card-shadow),0 1px 2px var(--product-card-shadow)}.dvEJEDNTnmVfVxtLa4uU{align-items:center;display:flex}.dvEJEDNTnmVfVxtLa4uU img{object-fit:cover;width:100%}.K1VY4DNP8PHMWAEVBC_h{background-color:#f9f9f6}.nk_COGPrkBNLp7lVt4sQ{display:flex;flex-wrap:wrap;gap:calc(var(--horizontal-spacing)*2);justify-content:space-between}.ukgQ5TmLablG3svUKjdw{white-space:nowrap}.ukgQ5TmLablG3svUKjdw>span{font-size:var(--font-body-small)}.Vofm70ADXSe43GamWEaF{font-weight:400!important}.EUcF2LKeC2GyhWD2FKCP{background-color:var(--jp-white);height:100%;padding:calc(var(--spacing-base)*8);position:relative}.Bm21LIBQtpRo3ZhOxXBG{display:flex;gap:calc(var(--spacing-base)*2)}.jwIGzADCnBI_ai9xYYiS{align-items:center;display:flex;flex-wrap:nowrap;font-size:22px;padding-bottom:calc(var(--spacing-base)*3);padding-top:calc(var(--spacing-base)*3)}.jwIGzADCnBI_ai9xYYiS .fTbxuhh_SfMgenyWvGN0{padding-bottom:calc(var(--spacing-base)/3);padding-left:var(--spacing-base)}.eR56lApoP14RIBAhO1UN{display:flex;flex-wrap:wrap;gap:calc(var(--spacing-base)*6);justify-content:space-between;margin:0 auto;max-width:1128px}@media only screen and (max-width:1366px){.eR56lApoP14RIBAhO1UN{padding-left:calc(var(--spacing-base)*3);padding-right:calc(var(--spacing-base)*3)}}.eR56lApoP14RIBAhO1UN .vHnITd5JOCOgxCgXTgoD{display:flex;flex:1;flex-direction:column;justify-content:center}@media screen and (min-width:960px){.eR56lApoP14RIBAhO1UN .vHnITd5JOCOgxCgXTgoD{max-width:70%}}.eR56lApoP14RIBAhO1UN .vHnITd5JOCOgxCgXTgoD .vAGLpjIGi6GA8ghbumN7{font-size:36px;font-weight:700;line-height:40px}.eR56lApoP14RIBAhO1UN .vHnITd5JOCOgxCgXTgoD .oag8YaslCEiUVu8GKKL3{font-weight:400;margin:calc(var(--spacing-base)*3) 0}.eR56lApoP14RIBAhO1UN .vHnITd5JOCOgxCgXTgoD .FhH03GPt9FK1VH9NZhYA{align-self:flex-start;font-size:16px;font-weight:500;letter-spacing:-.01em;line-height:24px;padding:var(--spacing-base) calc(var(--spacing-base)*3)}.eR56lApoP14RIBAhO1UN .VUXAtah2JvUCNc4cXjPp{align-items:center;display:flex;flex-wrap:wrap;gap:calc(var(--spacing-base)*3);justify-content:flex-end}@media only screen and (max-width:430px){.eR56lApoP14RIBAhO1UN .VUXAtah2JvUCNc4cXjPp{flex:1}}.eR56lApoP14RIBAhO1UN .dyPAjc3M4y3Q6gJfWnjw{border-color:var(--jp-gray-5);border-radius:5px;flex-grow:0;height:168px;margin-bottom:0;padding:calc(var(--spacing-base)*2) calc(var(--spacing-base)*3);width:168px}@media only screen and (max-width:960px){.eR56lApoP14RIBAhO1UN .dyPAjc3M4y3Q6gJfWnjw{width:30vw}}@media only screen and (max-width:430px){.eR56lApoP14RIBAhO1UN .dyPAjc3M4y3Q6gJfWnjw{min-width:168px;width:100%}}.eR56lApoP14RIBAhO1UN .dyPAjc3M4y3Q6gJfWnjw>div:first-child{display:flex;flex-direction:column;justify-content:space-between}.eR56lApoP14RIBAhO1UN .dyPAjc3M4y3Q6gJfWnjw .Ll1l9bEuf5G5oh3AENep{fill:var(--jp-green)}.eR56lApoP14RIBAhO1UN .dyPAjc3M4y3Q6gJfWnjw .WrzTysWiqUiuEPvpFqau{margin-bottom:var(--spacing-base)}.eR56lApoP14RIBAhO1UN .dyPAjc3M4y3Q6gJfWnjw .d4faYkf9yL7oW7pwcjmP{font-size:36px;font-weight:700}.acffvOSYc5S8x4P_AYnQ{font-size:16px;line-height:24px;padding-bottom:calc(var(--spacing-base)*6);padding-top:calc(var(--spacing-base)*6)}.acffvOSYc5S8x4P_AYnQ:first-child{padding-bottom:0;padding-top:0}.acffvOSYc5S8x4P_AYnQ:nth-child(2n){background-color:var(--jp-white-off);padding-bottom:calc(var(--spacing-base)*8);padding-top:calc(var(--spacing-base)*8)}@media only screen and (max-width:960px){.acffvOSYc5S8x4P_AYnQ:nth-child(2n){padding-bottom:calc(var(--spacing-base)*6);padding-top:calc(var(--spacing-base)*6)}}.acffvOSYc5S8x4P_AYnQ a{color:inherit}.acffvOSYc5S8x4P_AYnQ .M5YNmgy60Q_UtaxKgQcv{margin:0 auto;max-width:744px}@media only screen and (max-width:1366px){.acffvOSYc5S8x4P_AYnQ .M5YNmgy60Q_UtaxKgQcv{padding-left:calc(var(--spacing-base)*3);padding-right:calc(var(--spacing-base)*3)}}.acffvOSYc5S8x4P_AYnQ .HJiOvun8sHkiFpNL0sl6{margin:0 auto;max-width:1128px}@media only screen and (max-width:1366px){.acffvOSYc5S8x4P_AYnQ .HJiOvun8sHkiFpNL0sl6{padding-left:calc(var(--spacing-base)*3);padding-right:calc(var(--spacing-base)*3)}}.acffvOSYc5S8x4P_AYnQ .mXinUJfpSTS9EVB8M8K_{font-size:34px;font-weight:400;line-height:40px;margin:0}.acffvOSYc5S8x4P_AYnQ .QKjsnliPyLu4n08yVUUM{font-size:16px}.acffvOSYc5S8x4P_AYnQ .xQJJkJ4v7Jm8iSJ0z0Dj{font-size:48px;line-height:24px;margin-bottom:calc(var(--spacing-base)*6)}.VWIBGwuHqtAKg_5Hch92{flex-direction:column}.VWIBGwuHqtAKg_5Hch92,.VWIBGwuHqtAKg_5Hch92 .mnkNhprYIatxfziERMwM{display:flex;gap:calc(var(--spacing-base)*3);padding:calc(var(--spacing-base)*2) 0}.VWIBGwuHqtAKg_5Hch92 .mnkNhprYIatxfziERMwM{flex-wrap:wrap;min-height:190px}.VWIBGwuHqtAKg_5Hch92 .WEiaYLqJwV2IzC8LD9Fs{background-color:var(--jp-white-off);border-radius:calc(var(--spacing-base)/2);height:157.5px;width:280px}.VWIBGwuHqtAKg_5Hch92 .WEiaYLqJwV2IzC8LD9Fs iframe{border-radius:inherit}.VWIBGwuHqtAKg_5Hch92 .GJlowVsJybna1MFcIiIU{display:flex;flex:1;flex-direction:column;gap:var(--spacing-base);min-width:280px}.VWIBGwuHqtAKg_5Hch92 .GJlowVsJybna1MFcIiIU ._OeUvI9GrP00qh6Uk7Tg{font-size:20px;font-weight:500;line-height:22px}.VWIBGwuHqtAKg_5Hch92 .GJlowVsJybna1MFcIiIU .C6I5jYHW2IJSDBoKvhcB{color:var(--jp-gray-60);flex-grow:1;font-size:16px;font-weight:300;line-height:24px}.VWIBGwuHqtAKg_5Hch92 .GJlowVsJybna1MFcIiIU .XdnAdAwkxAW5yvUx3NRr{font-size:15px;padding-left:0;text-decoration:underline}.MCKgMfLVZtkgWu5m5u6L{margin-bottom:calc(var(--spacing-base)*8)}.c0SItK48SRkWfZUCECbZ{border:1px solid var(--jp-green-40);border-radius:4px;color:var(--jp-green-40);font-size:12px;font-weight:500;height:22px;margin-left:5px;padding:2px 8px;position:relative;text-transform:uppercase;top:-2px}.uPEKVw20OlWzA_8u7YAc{--font-headline-medium:48px;--font-headline-small:36px;--font-title-medium:24px;--font-body:16px;--font-body-small:14px;--font-body-extra-small:14px;--spacing-base:8px;max-height:calc(100% - 24px)}.uPEKVw20OlWzA_8u7YAc .components-modal__header+div{height:100%}.uPEKVw20OlWzA_8u7YAc .components-modal__content{margin:40px;padding:0}.uPEKVw20OlWzA_8u7YAc .components-modal__header{border-bottom:0;height:40px;padding:8px 8px 0}.uPEKVw20OlWzA_8u7YAc .dZO6FXcGE5vhcJ8Y_C9w{height:100%;padding:8px}@media(max-height:768px){.FmxgyZZvzjuwp3GbBNv1{overflow:scroll;padding-bottom:24px;padding-top:24px}.FmxgyZZvzjuwp3GbBNv1 .uPEKVw20OlWzA_8u7YAc{max-height:unset}}.EtaGFgAv0H3akflLBvof,.f6I4877w7XpHhEnooqks{display:flex;flex-direction:column;gap:1rem;justify-content:space-between}.EtaGFgAv0H3akflLBvof{flex:1}.KGwdaPYtQhRLcUVbDyy9 .product-price_container{align-items:center}.IwiPAQFH04pNmEH07X9N{display:flex;flex-direction:row;gap:8px 24px}.DKmru53sFgfEs9AgBdqM{justify-content:center}.DKmru53sFgfEs9AgBdqM,.DKmru53sFgfEs9AgBdqM img{align-items:center;display:flex;height:auto;max-width:100%;overflow:hidden}.DKmru53sFgfEs9AgBdqM img{max-height:100%;object-fit:contain}.anXLrcgHHsm2LnEfXUVk{padding-top:56.25%;position:relative;width:100%}.anXLrcgHHsm2LnEfXUVk iframe{border:none;height:100%;left:0;position:absolute;top:0;width:100%}.pbC573UpPZ3Z1WF6H0rZ{display:flex;flex-direction:column}.uQb9f6VHehuQfLoouBsQ{flex-grow:1;margin:0;margin-bottom:calc(var(--spacing-base)*2);padding:0}.uQb9f6VHehuQfLoouBsQ li{align-items:flex-start;display:flex;list-style:none;margin-bottom:var(--spacing-base)}.uQb9f6VHehuQfLoouBsQ svg{fill:var(--jp-green-primary);flex-shrink:0;margin-right:var(--spacing-base)}._fUXxnSp5pagKBp9gSN7 *{box-sizing:border-box}#my-jetpack-container{--wp-admin-theme-color:var(--jp-black);--wp-admin-theme-color-darker-10:var(--jp-black-80);--wp-admin-theme-color-darker-20:var(--jp-black-80);height:100%}#my-jetpack-container .jp-dashboard-footer__jetpack-symbol{height:16px}#my-jetpack-container:has(.my-jetpack-deprecate-notice-title) .jetpack-deprecation-notice-link{color:inherit;font-weight:600;padding-right:5px}#my-jetpack-container .my-jetpack-deprecate-notice-title{font-weight:600}#wpbody-content>.notice{display:none!important}#wpwrap{background-color:var(--jp-white-off)}.jetpack-admin-full-screen #wpwrap{top:0}.jetpack-admin-full-screen #wpadminbar{display:none}.jetpack-admin-full-screen #wpbody-content{min-height:100vh!important;padding-bottom:0}.jetpack-admin-full-screen #adminmenumain,.jetpack-admin-full-screen #wpcontent>*,.jetpack-admin-full-screen #wpfooter,.jetpack-admin-full-screen .error,.jetpack-admin-full-screen .notice,.jetpack-admin-full-screen .updated{display:none}.jetpack-admin-full-screen #wpcontent{margin-left:0!important;padding-left:0!important}.jetpack-admin-full-screen #wpcontent>#wpbody{display:block;margin-top:0!important;padding-top:0!important} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.js b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.js deleted file mode 100644 index ff82863f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.js +++ /dev/null @@ -1,186 +0,0 @@ -/*! For license information please see index.js.LICENSE.txt */ -(()=>{var e={79826:(e,t,a)=>{"use strict";a.d(t,{i:()=>o});const r={AED:{symbol:"د.إ.‏",grouping:",",decimal:".",precision:2},AFN:{symbol:"؋",grouping:",",decimal:".",precision:2},ALL:{symbol:"Lek",grouping:".",decimal:",",precision:2},AMD:{symbol:"֏",grouping:",",decimal:".",precision:2},ANG:{symbol:"ƒ",grouping:",",decimal:".",precision:2},AOA:{symbol:"Kz",grouping:",",decimal:".",precision:2},ARS:{symbol:"$",grouping:".",decimal:",",precision:2},AUD:{symbol:"A$",grouping:",",decimal:".",precision:2},AWG:{symbol:"ƒ",grouping:",",decimal:".",precision:2},AZN:{symbol:"₼",grouping:" ",decimal:",",precision:2},BAM:{symbol:"КМ",grouping:".",decimal:",",precision:2},BBD:{symbol:"Bds$",grouping:",",decimal:".",precision:2},BDT:{symbol:"৳",grouping:",",decimal:".",precision:0},BGN:{symbol:"лв.",grouping:" ",decimal:",",precision:2},BHD:{symbol:"د.ب.‏",grouping:",",decimal:".",precision:3},BIF:{symbol:"FBu",grouping:",",decimal:".",precision:0},BMD:{symbol:"$",grouping:",",decimal:".",precision:2},BND:{symbol:"$",grouping:".",decimal:",",precision:0},BOB:{symbol:"Bs",grouping:".",decimal:",",precision:2},BRL:{symbol:"R$",grouping:".",decimal:",",precision:2},BSD:{symbol:"$",grouping:",",decimal:".",precision:2},BTC:{symbol:"Ƀ",grouping:",",decimal:".",precision:2},BTN:{symbol:"Nu.",grouping:",",decimal:".",precision:1},BWP:{symbol:"P",grouping:",",decimal:".",precision:2},BYR:{symbol:"р.",grouping:" ",decimal:",",precision:2},BZD:{symbol:"BZ$",grouping:",",decimal:".",precision:2},CAD:{symbol:"C$",grouping:",",decimal:".",precision:2},CDF:{symbol:"FC",grouping:",",decimal:".",precision:2},CHF:{symbol:"CHF",grouping:"'",decimal:".",precision:2},CLP:{symbol:"$",grouping:".",decimal:",",precision:2},CNY:{symbol:"¥",grouping:",",decimal:".",precision:2},COP:{symbol:"$",grouping:".",decimal:",",precision:2},CRC:{symbol:"₡",grouping:".",decimal:",",precision:2},CUC:{symbol:"CUC",grouping:",",decimal:".",precision:2},CUP:{symbol:"$MN",grouping:",",decimal:".",precision:2},CVE:{symbol:"$",grouping:",",decimal:".",precision:2},CZK:{symbol:"Kč",grouping:" ",decimal:",",precision:2},DJF:{symbol:"Fdj",grouping:",",decimal:".",precision:0},DKK:{symbol:"kr.",grouping:"",decimal:",",precision:2},DOP:{symbol:"RD$",grouping:",",decimal:".",precision:2},DZD:{symbol:"د.ج.‏",grouping:",",decimal:".",precision:2},EGP:{symbol:"ج.م.‏",grouping:",",decimal:".",precision:2},ERN:{symbol:"Nfk",grouping:",",decimal:".",precision:2},ETB:{symbol:"ETB",grouping:",",decimal:".",precision:2},EUR:{symbol:"€",grouping:".",decimal:",",precision:2},FJD:{symbol:"FJ$",grouping:",",decimal:".",precision:2},FKP:{symbol:"£",grouping:",",decimal:".",precision:2},GBP:{symbol:"£",grouping:",",decimal:".",precision:2},GEL:{symbol:"Lari",grouping:" ",decimal:",",precision:2},GHS:{symbol:"₵",grouping:",",decimal:".",precision:2},GIP:{symbol:"£",grouping:",",decimal:".",precision:2},GMD:{symbol:"D",grouping:",",decimal:".",precision:2},GNF:{symbol:"FG",grouping:",",decimal:".",precision:0},GTQ:{symbol:"Q",grouping:",",decimal:".",precision:2},GYD:{symbol:"G$",grouping:",",decimal:".",precision:2},HKD:{symbol:"HK$",grouping:",",decimal:".",precision:2},HNL:{symbol:"L.",grouping:",",decimal:".",precision:2},HRK:{symbol:"kn",grouping:".",decimal:",",precision:2},HTG:{symbol:"G",grouping:",",decimal:".",precision:2},HUF:{symbol:"Ft",grouping:".",decimal:",",precision:0},IDR:{symbol:"Rp",grouping:".",decimal:",",precision:0},ILS:{symbol:"₪",grouping:",",decimal:".",precision:2},INR:{symbol:"₹",grouping:",",decimal:".",precision:2},IQD:{symbol:"د.ع.‏",grouping:",",decimal:".",precision:2},IRR:{symbol:"﷼",grouping:",",decimal:"/",precision:2},ISK:{symbol:"kr.",grouping:".",decimal:",",precision:0},JMD:{symbol:"J$",grouping:",",decimal:".",precision:2},JOD:{symbol:"د.ا.‏",grouping:",",decimal:".",precision:3},JPY:{symbol:"¥",grouping:",",decimal:".",precision:0},KES:{symbol:"S",grouping:",",decimal:".",precision:2},KGS:{symbol:"сом",grouping:" ",decimal:"-",precision:2},KHR:{symbol:"៛",grouping:",",decimal:".",precision:0},KMF:{symbol:"CF",grouping:",",decimal:".",precision:2},KPW:{symbol:"₩",grouping:",",decimal:".",precision:0},KRW:{symbol:"₩",grouping:",",decimal:".",precision:0},KWD:{symbol:"د.ك.‏",grouping:",",decimal:".",precision:3},KYD:{symbol:"$",grouping:",",decimal:".",precision:2},KZT:{symbol:"₸",grouping:" ",decimal:"-",precision:2},LAK:{symbol:"₭",grouping:",",decimal:".",precision:0},LBP:{symbol:"ل.ل.‏",grouping:",",decimal:".",precision:2},LKR:{symbol:"₨",grouping:",",decimal:".",precision:0},LRD:{symbol:"L$",grouping:",",decimal:".",precision:2},LSL:{symbol:"M",grouping:",",decimal:".",precision:2},LYD:{symbol:"د.ل.‏",grouping:",",decimal:".",precision:3},MAD:{symbol:"د.م.‏",grouping:",",decimal:".",precision:2},MDL:{symbol:"lei",grouping:",",decimal:".",precision:2},MGA:{symbol:"Ar",grouping:",",decimal:".",precision:0},MKD:{symbol:"ден.",grouping:".",decimal:",",precision:2},MMK:{symbol:"K",grouping:",",decimal:".",precision:2},MNT:{symbol:"₮",grouping:" ",decimal:",",precision:2},MOP:{symbol:"MOP$",grouping:",",decimal:".",precision:2},MRO:{symbol:"UM",grouping:",",decimal:".",precision:2},MTL:{symbol:"₤",grouping:",",decimal:".",precision:2},MUR:{symbol:"₨",grouping:",",decimal:".",precision:2},MVR:{symbol:"MVR",grouping:",",decimal:".",precision:1},MWK:{symbol:"MK",grouping:",",decimal:".",precision:2},MXN:{symbol:"MX$",grouping:",",decimal:".",precision:2},MYR:{symbol:"RM",grouping:",",decimal:".",precision:2},MZN:{symbol:"MT",grouping:",",decimal:".",precision:0},NAD:{symbol:"N$",grouping:",",decimal:".",precision:2},NGN:{symbol:"₦",grouping:",",decimal:".",precision:2},NIO:{symbol:"C$",grouping:",",decimal:".",precision:2},NOK:{symbol:"kr",grouping:" ",decimal:",",precision:2},NPR:{symbol:"₨",grouping:",",decimal:".",precision:2},NZD:{symbol:"NZ$",grouping:",",decimal:".",precision:2},OMR:{symbol:"﷼",grouping:",",decimal:".",precision:3},PAB:{symbol:"B/.",grouping:",",decimal:".",precision:2},PEN:{symbol:"S/.",grouping:",",decimal:".",precision:2},PGK:{symbol:"K",grouping:",",decimal:".",precision:2},PHP:{symbol:"₱",grouping:",",decimal:".",precision:2},PKR:{symbol:"₨",grouping:",",decimal:".",precision:2},PLN:{symbol:"zł",grouping:" ",decimal:",",precision:2},PYG:{symbol:"₲",grouping:".",decimal:",",precision:2},QAR:{symbol:"﷼",grouping:",",decimal:".",precision:2},RON:{symbol:"lei",grouping:".",decimal:",",precision:2},RSD:{symbol:"Дин.",grouping:".",decimal:",",precision:2},RUB:{symbol:"₽",grouping:" ",decimal:",",precision:2},RWF:{symbol:"RWF",grouping:" ",decimal:",",precision:2},SAR:{symbol:"﷼",grouping:",",decimal:".",precision:2},SBD:{symbol:"S$",grouping:",",decimal:".",precision:2},SCR:{symbol:"₨",grouping:",",decimal:".",precision:2},SDD:{symbol:"LSd",grouping:",",decimal:".",precision:2},SDG:{symbol:"£‏",grouping:",",decimal:".",precision:2},SEK:{symbol:"kr",grouping:",",decimal:".",precision:2},SGD:{symbol:"S$",grouping:",",decimal:".",precision:2},SHP:{symbol:"£",grouping:",",decimal:".",precision:2},SLL:{symbol:"Le",grouping:",",decimal:".",precision:2},SOS:{symbol:"S",grouping:",",decimal:".",precision:2},SRD:{symbol:"$",grouping:",",decimal:".",precision:2},STD:{symbol:"Db",grouping:",",decimal:".",precision:2},SVC:{symbol:"₡",grouping:",",decimal:".",precision:2},SYP:{symbol:"£",grouping:",",decimal:".",precision:2},SZL:{symbol:"E",grouping:",",decimal:".",precision:2},THB:{symbol:"฿",grouping:",",decimal:".",precision:2},TJS:{symbol:"TJS",grouping:" ",decimal:";",precision:2},TMT:{symbol:"m",grouping:" ",decimal:",",precision:0},TND:{symbol:"د.ت.‏",grouping:",",decimal:".",precision:3},TOP:{symbol:"T$",grouping:",",decimal:".",precision:2},TRY:{symbol:"TL",grouping:".",decimal:",",precision:2},TTD:{symbol:"TT$",grouping:",",decimal:".",precision:2},TVD:{symbol:"$T",grouping:",",decimal:".",precision:2},TWD:{symbol:"NT$",grouping:",",decimal:".",precision:2},TZS:{symbol:"TSh",grouping:",",decimal:".",precision:2},UAH:{symbol:"₴",grouping:" ",decimal:",",precision:2},UGX:{symbol:"USh",grouping:",",decimal:".",precision:2},USD:{symbol:"$",grouping:",",decimal:".",precision:2},UYU:{symbol:"$U",grouping:".",decimal:",",precision:2},UZS:{symbol:"сўм",grouping:" ",decimal:",",precision:2},VEB:{symbol:"Bs.",grouping:",",decimal:".",precision:2},VEF:{symbol:"Bs. F.",grouping:".",decimal:",",precision:2},VND:{symbol:"₫",grouping:".",decimal:",",precision:1},VUV:{symbol:"VT",grouping:",",decimal:".",precision:0},WST:{symbol:"WS$",grouping:",",decimal:".",precision:2},XAF:{symbol:"F",grouping:",",decimal:".",precision:2},XCD:{symbol:"$",grouping:",",decimal:".",precision:2},XOF:{symbol:"F",grouping:" ",decimal:",",precision:2},XPF:{symbol:"F",grouping:",",decimal:".",precision:2},YER:{symbol:"﷼",grouping:",",decimal:".",precision:2},ZAR:{symbol:"R",grouping:" ",decimal:",",precision:2},ZMW:{symbol:"ZK",grouping:",",decimal:".",precision:2},WON:{symbol:"₩",grouping:",",decimal:".",precision:2}};function o(e){return r[e]||{symbol:"$",grouping:",",decimal:".",precision:2}}},67397:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>n,vA:()=>l});var r=a(79826),o=a(88506);function n(e,t,a={}){const n=(0,r.i)(t);if(!n||isNaN(e))return null;const{decimal:l,grouping:s,precision:i,symbol:c}={...n,...a},u=e<0?"-":"";let d=(0,o.A)(Math.abs(e),i,l,s);return a.stripZeros&&(d=function(e,t){const a=new RegExp(`\\${t}0+$`);return e.replace(a,"")}(d,l)),`${u}${c}${d}`}function l(e,t,a={}){const n=(0,r.i)(t);if(!n||isNaN(e))return null;const{decimal:l,grouping:s,precision:i,symbol:c}={...n,...a},u=e<0?"-":"",d=Math.abs(e),v=Math.floor(d);return{sign:u,symbol:c,integer:(0,o.A)(d,i,l,s).split(l)[0],fraction:i>0?(0,o.A)(d-v,i,l,s).slice(1):""}}},88506:(e,t,a)=>{"use strict";function r(e,t=0,a=".",r=","){const o=(e+"").replace(/[^0-9+\-Ee.]/g,""),n=isFinite(+o)?+o:0,l=isFinite(+t)?Math.abs(t):0,s=(l?function(e,t){const a=Math.pow(10,t);return""+(Math.round(e*a)/a).toFixed(t)}(n,l):""+Math.round(n)).split(".");return s[0].length>3&&(s[0]=s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g,r)),(s[1]||"").lengthr})},64370:(e,t,a)=>{"use strict";a.r(t),a.d(t,{arrow:()=>R,autoPlacement:()=>C,autoUpdate:()=>_,computePosition:()=>z,detectOverflow:()=>k,flip:()=>A,getOverflowAncestors:()=>n.v9,hide:()=>P,inline:()=>M,limitShift:()=>V,offset:()=>E,platform:()=>y,shift:()=>j,size:()=>S});var r=a(39175),o=a(159),n=a(81289);function l(e){const t=(0,n.L9)(e);let a=parseFloat(t.width)||0,o=parseFloat(t.height)||0;const l=(0,n.sb)(e),s=l?e.offsetWidth:a,i=l?e.offsetHeight:o,c=(0,r.LI)(a)!==s||(0,r.LI)(o)!==i;return c&&(a=s,o=i),{width:a,height:o,$:c}}function s(e){return(0,n.vq)(e)?e:e.contextElement}function i(e){const t=s(e);if(!(0,n.sb)(t))return(0,r.Jx)(1);const a=t.getBoundingClientRect(),{width:o,height:i,$:c}=l(t);let u=(c?(0,r.LI)(a.width):a.width)/o,d=(c?(0,r.LI)(a.height):a.height)/i;return u&&Number.isFinite(u)||(u=1),d&&Number.isFinite(d)||(d=1),{x:u,y:d}}const c=(0,r.Jx)(0);function u(e){const t=(0,n.zk)(e);return(0,n.Tc)()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:c}function d(e,t,a,o){void 0===t&&(t=!1),void 0===a&&(a=!1);const l=e.getBoundingClientRect(),c=s(e);let d=(0,r.Jx)(1);t&&(o?(0,n.vq)(o)&&(d=i(o)):d=i(e));const v=function(e,t,a){return void 0===t&&(t=!1),!(!a||t&&a!==(0,n.zk)(e))&&t}(c,a,o)?u(c):(0,r.Jx)(0);let p=(l.left+v.x)/d.x,m=(l.top+v.y)/d.y,h=l.width/d.x,f=l.height/d.y;if(c){const e=(0,n.zk)(c),t=o&&(0,n.vq)(o)?(0,n.zk)(o):o;let a=e,r=(0,n._m)(a);for(;r&&o&&t!==a;){const e=i(r),t=r.getBoundingClientRect(),o=(0,n.L9)(r),l=t.left+(r.clientLeft+parseFloat(o.paddingLeft))*e.x,s=t.top+(r.clientTop+parseFloat(o.paddingTop))*e.y;p*=e.x,m*=e.y,h*=e.x,f*=e.y,p+=l,m+=s,a=(0,n.zk)(r),r=(0,n._m)(a)}}return(0,r.B1)({width:h,height:f,x:p,y:m})}function v(e,t){const a=(0,n.CP)(e).scrollLeft;return t?t.left+a:d((0,n.ep)(e)).left+a}function p(e,t,a){void 0===a&&(a=!1);const r=e.getBoundingClientRect();return{x:r.left+t.scrollLeft-(a?0:v(e,r)),y:r.top+t.scrollTop}}function m(e,t,a){let o;if("viewport"===t)o=function(e,t){const a=(0,n.zk)(e),r=(0,n.ep)(e),o=a.visualViewport;let l=r.clientWidth,s=r.clientHeight,i=0,c=0;if(o){l=o.width,s=o.height;const e=(0,n.Tc)();(!e||e&&"fixed"===t)&&(i=o.offsetLeft,c=o.offsetTop)}return{width:l,height:s,x:i,y:c}}(e,a);else if("document"===t)o=function(e){const t=(0,n.ep)(e),a=(0,n.CP)(e),o=e.ownerDocument.body,l=(0,r.T9)(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),s=(0,r.T9)(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight);let i=-a.scrollLeft+v(e);const c=-a.scrollTop;return"rtl"===(0,n.L9)(o).direction&&(i+=(0,r.T9)(t.clientWidth,o.clientWidth)-l),{width:l,height:s,x:i,y:c}}((0,n.ep)(e));else if((0,n.vq)(t))o=function(e,t){const a=d(e,!0,"fixed"===t),o=a.top+e.clientTop,l=a.left+e.clientLeft,s=(0,n.sb)(e)?i(e):(0,r.Jx)(1);return{width:e.clientWidth*s.x,height:e.clientHeight*s.y,x:l*s.x,y:o*s.y}}(t,a);else{const a=u(e);o={x:t.x-a.x,y:t.y-a.y,width:t.width,height:t.height}}return(0,r.B1)(o)}function h(e,t){const a=(0,n.$4)(e);return!(a===t||!(0,n.vq)(a)||(0,n.eu)(a))&&("fixed"===(0,n.L9)(a).position||h(a,t))}function f(e,t,a){const o=(0,n.sb)(t),l=(0,n.ep)(t),s="fixed"===a,i=d(e,!0,s,t);let c={scrollLeft:0,scrollTop:0};const u=(0,r.Jx)(0);if(o||!o&&!s)if(("body"!==(0,n.mq)(t)||(0,n.ZU)(l))&&(c=(0,n.CP)(t)),o){const e=d(t,!0,s,t);u.x=e.x+t.clientLeft,u.y=e.y+t.clientTop}else l&&(u.x=v(l));const m=!l||o||s?(0,r.Jx)(0):p(l,c);return{x:i.left+c.scrollLeft-u.x-m.x,y:i.top+c.scrollTop-u.y-m.y,width:i.width,height:i.height}}function g(e){return"static"===(0,n.L9)(e).position}function w(e,t){if(!(0,n.sb)(e)||"fixed"===(0,n.L9)(e).position)return null;if(t)return t(e);let a=e.offsetParent;return(0,n.ep)(e)===a&&(a=a.ownerDocument.body),a}function b(e,t){const a=(0,n.zk)(e);if((0,n.Tf)(e))return a;if(!(0,n.sb)(e)){let t=(0,n.$4)(e);for(;t&&!(0,n.eu)(t);){if((0,n.vq)(t)&&!g(t))return t;t=(0,n.$4)(t)}return a}let r=w(e,t);for(;r&&(0,n.Lv)(r)&&g(r);)r=w(r,t);return r&&(0,n.eu)(r)&&g(r)&&!(0,n.sQ)(r)?a:r||(0,n.gJ)(e)||a}const y={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:a,offsetParent:o,strategy:l}=e;const s="fixed"===l,c=(0,n.ep)(o),u=!!t&&(0,n.Tf)(t.floating);if(o===c||u&&s)return a;let v={scrollLeft:0,scrollTop:0},m=(0,r.Jx)(1);const h=(0,r.Jx)(0),f=(0,n.sb)(o);if((f||!f&&!s)&&(("body"!==(0,n.mq)(o)||(0,n.ZU)(c))&&(v=(0,n.CP)(o)),(0,n.sb)(o))){const e=d(o);m=i(o),h.x=e.x+o.clientLeft,h.y=e.y+o.clientTop}const g=!c||f||s?(0,r.Jx)(0):p(c,v,!0);return{width:a.width*m.x,height:a.height*m.y,x:a.x*m.x-v.scrollLeft*m.x+h.x+g.x,y:a.y*m.y-v.scrollTop*m.y+h.y+g.y}},getDocumentElement:n.ep,getClippingRect:function(e){let{element:t,boundary:a,rootBoundary:o,strategy:l}=e;const s=[..."clippingAncestors"===a?(0,n.Tf)(t)?[]:function(e,t){const a=t.get(e);if(a)return a;let r=(0,n.v9)(e,[],!1).filter((e=>(0,n.vq)(e)&&"body"!==(0,n.mq)(e))),o=null;const l="fixed"===(0,n.L9)(e).position;let s=l?(0,n.$4)(e):e;for(;(0,n.vq)(s)&&!(0,n.eu)(s);){const t=(0,n.L9)(s),a=(0,n.sQ)(s);a||"fixed"!==t.position||(o=null),(l?!a&&!o:!a&&"static"===t.position&&o&&["absolute","fixed"].includes(o.position)||(0,n.ZU)(s)&&!a&&h(e,s))?r=r.filter((e=>e!==s)):o=t,s=(0,n.$4)(s)}return t.set(e,r),r}(t,this._c):[].concat(a),o],i=s[0],c=s.reduce(((e,a)=>{const o=m(t,a,l);return e.top=(0,r.T9)(o.top,e.top),e.right=(0,r.jk)(o.right,e.right),e.bottom=(0,r.jk)(o.bottom,e.bottom),e.left=(0,r.T9)(o.left,e.left),e}),m(t,i,l));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}},getOffsetParent:b,getElementRects:async function(e){const t=this.getOffsetParent||b,a=this.getDimensions,r=await a(e.floating);return{reference:f(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}},getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){const{width:t,height:a}=l(e);return{width:t,height:a}},getScale:i,isElement:n.vq,isRTL:function(e){return"rtl"===(0,n.L9)(e).direction}};function x(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function _(e,t,a,o){void 0===o&&(o={});const{ancestorScroll:l=!0,ancestorResize:i=!0,elementResize:c="function"==typeof ResizeObserver,layoutShift:u="function"==typeof IntersectionObserver,animationFrame:v=!1}=o,p=s(e),m=l||i?[...p?(0,n.v9)(p):[],...(0,n.v9)(t)]:[];m.forEach((e=>{l&&e.addEventListener("scroll",a,{passive:!0}),i&&e.addEventListener("resize",a)}));const h=p&&u?function(e,t){let a,o=null;const l=(0,n.ep)(e);function s(){var e;clearTimeout(a),null==(e=o)||e.disconnect(),o=null}return function n(i,c){void 0===i&&(i=!1),void 0===c&&(c=1),s();const u=e.getBoundingClientRect(),{left:d,top:v,width:p,height:m}=u;if(i||t(),!p||!m)return;const h={rootMargin:-(0,r.RI)(v)+"px "+-(0,r.RI)(l.clientWidth-(d+p))+"px "+-(0,r.RI)(l.clientHeight-(v+m))+"px "+-(0,r.RI)(d)+"px",threshold:(0,r.T9)(0,(0,r.jk)(1,c))||1};let f=!0;function g(t){const r=t[0].intersectionRatio;if(r!==c){if(!f)return n();r?n(!1,r):a=setTimeout((()=>{n(!1,1e-7)}),1e3)}1!==r||x(u,e.getBoundingClientRect())||n(),f=!1}try{o=new IntersectionObserver(g,{...h,root:l.ownerDocument})}catch(e){o=new IntersectionObserver(g,h)}o.observe(e)}(!0),s}(p,a):null;let f,g=-1,w=null;c&&(w=new ResizeObserver((e=>{let[r]=e;r&&r.target===p&&w&&(w.unobserve(t),cancelAnimationFrame(g),g=requestAnimationFrame((()=>{var e;null==(e=w)||e.observe(t)}))),a()})),p&&!v&&w.observe(p),w.observe(t));let b=v?d(e):null;return v&&function t(){const r=d(e);b&&!x(b,r)&&a();b=r,f=requestAnimationFrame(t)}(),a(),()=>{var e;m.forEach((e=>{l&&e.removeEventListener("scroll",a),i&&e.removeEventListener("resize",a)})),null==h||h(),null==(e=w)||e.disconnect(),w=null,v&&cancelAnimationFrame(f)}}const k=o.HN,E=o.cY,C=o.RK,j=o.BN,A=o.UU,S=o.Ej,P=o.jD,R=o.UE,M=o.mG,V=o.ER,z=(e,t,a)=>{const r=new Map,n={platform:y,...a},l={...n.platform,_c:r};return(0,o.rD)(e,t,{...n,platform:l})}},36992:(e,t,a)=>{"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;td,Gh:()=>H,HS:()=>L,Oi:()=>s,Rr:()=>v,TM:()=>l,pX:()=>T,pb:()=>R,rc:()=>o,tH:()=>B,ue:()=>h,yD:()=>z}),function(e){e.Pop="POP",e.Push="PUSH",e.Replace="REPLACE"}(o||(o={}));const n="popstate";function l(e){return void 0===e&&(e={}),p((function(e,t){let{pathname:a="/",search:r="",hash:o=""}=v(e.location.hash.substr(1));return a.startsWith("/")||a.startsWith(".")||(a="/"+a),u("",{pathname:a,search:r,hash:o},t.state&&t.state.usr||null,t.state&&t.state.key||"default")}),(function(e,t){let a=e.document.querySelector("base"),r="";if(a&&a.getAttribute("href")){let t=e.location.href,a=t.indexOf("#");r=-1===a?t:t.slice(0,a)}return r+"#"+("string"==typeof t?t:d(t))}),(function(e,t){i("/"===e.pathname.charAt(0),"relative pathnames are not supported in hash history.push("+JSON.stringify(t)+")")}),e)}function s(e,t){if(!1===e||null==e)throw new Error(t)}function i(e,t){if(!e){"undefined"!=typeof console&&console.warn(t);try{throw new Error(t)}catch(e){}}}function c(e,t){return{usr:e.state,key:e.key,idx:t}}function u(e,t,a,o){return void 0===a&&(a=null),r({pathname:"string"==typeof e?e:e.pathname,search:"",hash:""},"string"==typeof t?v(t):t,{state:a,key:t&&t.key||o||Math.random().toString(36).substr(2,8)})}function d(e){let{pathname:t="/",search:a="",hash:r=""}=e;return a&&"?"!==a&&(t+="?"===a.charAt(0)?a:"?"+a),r&&"#"!==r&&(t+="#"===r.charAt(0)?r:"#"+r),t}function v(e){let t={};if(e){let a=e.indexOf("#");a>=0&&(t.hash=e.substr(a),e=e.substr(0,a));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function p(e,t,a,l){void 0===l&&(l={});let{window:i=document.defaultView,v5Compat:v=!1}=l,p=i.history,m=o.Pop,h=null,f=g();function g(){return(p.state||{idx:null}).idx}function w(){m=o.Pop;let e=g(),t=null==e?null:e-f;f=e,h&&h({action:m,location:y.location,delta:t})}function b(e){let t="null"!==i.location.origin?i.location.origin:i.location.href,a="string"==typeof e?e:d(e);return a=a.replace(/ $/,"%20"),s(t,"No window.location.(origin|href) available to create URL for href: "+a),new URL(a,t)}null==f&&(f=0,p.replaceState(r({},p.state,{idx:f}),""));let y={get action(){return m},get location(){return e(i,p)},listen(e){if(h)throw new Error("A history only accepts one active listener");return i.addEventListener(n,w),h=e,()=>{i.removeEventListener(n,w),h=null}},createHref:e=>t(i,e),createURL:b,encodeLocation(e){let t=b(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:function(e,t){m=o.Push;let r=u(y.location,e,t);a&&a(r,e),f=g()+1;let n=c(r,f),l=y.createHref(r);try{p.pushState(n,"",l)}catch(e){if(e instanceof DOMException&&"DataCloneError"===e.name)throw e;i.location.assign(l)}v&&h&&h({action:m,location:y.location,delta:1})},replace:function(e,t){m=o.Replace;let r=u(y.location,e,t);a&&a(r,e),f=g();let n=c(r,f),l=y.createHref(r);p.replaceState(n,"",l),v&&h&&h({action:m,location:y.location,delta:0})},go:e=>p.go(e)};return y}var m;!function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"}(m||(m={}));new Set(["lazy","caseSensitive","path","id","index","children"]);function h(e,t,a){return void 0===a&&(a="/"),f(e,t,a,!1)}function f(e,t,a,r){let o=R(("string"==typeof t?v(t):t).pathname||"/",a);if(null==o)return null;let n=g(e);!function(e){e.sort(((e,t)=>e.score!==t.score?t.score-e.score:function(e,t){let a=e.length===t.length&&e.slice(0,-1).every(((e,a)=>e===t[a]));return a?e[e.length-1]-t[t.length-1]:0}(e.routesMeta.map((e=>e.childrenIndex)),t.routesMeta.map((e=>e.childrenIndex)))))}(n);let l=null;for(let e=0;null==l&&e{let l={relativePath:void 0===n?e.path||"":n,caseSensitive:!0===e.caseSensitive,childrenIndex:o,route:e};l.relativePath.startsWith("/")&&(s(l.relativePath.startsWith(r),'Absolute route path "'+l.relativePath+'" nested under path "'+r+'" is not valid. An absolute child route path must start with the combined path of all its parent routes.'),l.relativePath=l.relativePath.slice(r.length));let i=L([r,l.relativePath]),c=a.concat(l);e.children&&e.children.length>0&&(s(!0!==e.index,'Index routes must not have child routes. Please remove all child routes from route path "'+i+'".'),g(e.children,t,c,i)),(null!=e.path||e.index)&&t.push({path:i,score:j(i,e.index),routesMeta:c})};return e.forEach(((e,t)=>{var a;if(""!==e.path&&null!=(a=e.path)&&a.includes("?"))for(let a of w(e.path))o(e,t,a);else o(e,t)})),t}function w(e){let t=e.split("/");if(0===t.length)return[];let[a,...r]=t,o=a.endsWith("?"),n=a.replace(/\?$/,"");if(0===r.length)return o?[n,""]:[n];let l=w(r.join("/")),s=[];return s.push(...l.map((e=>""===e?n:[n,e].join("/")))),o&&s.push(...l),s.map((t=>e.startsWith("/")&&""===t?"/":t))}const b=/^:[\w-]+$/,y=3,x=2,_=1,k=10,E=-2,C=e=>"*"===e;function j(e,t){let a=e.split("/"),r=a.length;return a.some(C)&&(r+=E),t&&(r+=x),a.filter((e=>!C(e))).reduce(((e,t)=>e+(b.test(t)?y:""===t?_:k)),r)}function A(e,t,a){void 0===a&&(a=!1);let{routesMeta:r}=e,o={},n="/",l=[];for(let e=0;e(r.push({paramName:t,isOptional:null!=a}),a?"/?([^\\/]+)?":"/([^\\/]+)")));e.endsWith("*")?(r.push({paramName:"*"}),o+="*"===e||"/*"===e?"(.*)$":"(?:\\/(.+)|\\/*)$"):a?o+="\\/*$":""!==e&&"/"!==e&&(o+="(?:(?=\\/|$))");let n=new RegExp(o,t?void 0:"i");return[n,r]}(e.path,e.caseSensitive,e.end),o=t.match(a);if(!o)return null;let n=o[0],l=n.replace(/(.)\/+$/,"$1"),s=o.slice(1);return{params:r.reduce(((e,t,a)=>{let{paramName:r,isOptional:o}=t;if("*"===r){let e=s[a]||"";l=n.slice(0,n.length-e.length).replace(/(.)\/+$/,"$1")}const i=s[a];return e[r]=o&&!i?void 0:(i||"").replace(/%2F/g,"/"),e}),{}),pathname:n,pathnameBase:l,pattern:e}}function P(e){try{return e.split("/").map((e=>decodeURIComponent(e).replace(/\//g,"%2F"))).join("/")}catch(t){return i(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent encoding ('+t+")."),e}}function R(e,t){if("/"===t)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let a=t.endsWith("/")?t.length-1:t.length,r=e.charAt(a);return r&&"/"!==r?null:e.slice(a)||"/"}function M(e,t,a,r){return"Cannot include a '"+e+"' character in a manually specified `to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the `to."+a+'` field. Alternatively you may provide the full path as a string in and the router will parse it for you.'}function V(e){return e.filter(((e,t)=>0===t||e.route.path&&e.route.path.length>0))}function z(e,t){let a=V(e);return t?a.map(((e,t)=>t===a.length-1?e.pathname:e.pathnameBase)):a.map((e=>e.pathnameBase))}function H(e,t,a,o){let n;void 0===o&&(o=!1),"string"==typeof e?n=v(e):(n=r({},e),s(!n.pathname||!n.pathname.includes("?"),M("?","pathname","search",n)),s(!n.pathname||!n.pathname.includes("#"),M("#","pathname","hash",n)),s(!n.search||!n.search.includes("#"),M("#","search","hash",n)));let l,i=""===e||""===n.pathname,c=i?"/":n.pathname;if(null==c)l=a;else{let e=t.length-1;if(!o&&c.startsWith("..")){let t=c.split("/");for(;".."===t[0];)t.shift(),e-=1;n.pathname=t.join("/")}l=e>=0?t[e]:"/"}let u=function(e,t){void 0===t&&(t="/");let{pathname:a,search:r="",hash:o=""}="string"==typeof e?v(e):e,n=a?a.startsWith("/")?a:function(e,t){let a=t.replace(/\/+$/,"").split("/");return e.split("/").forEach((e=>{".."===e?a.length>1&&a.pop():"."!==e&&a.push(e)})),a.length>1?a.join("/"):"/"}(a,t):t;return{pathname:n,search:N(r),hash:I(o)}}(n,l),d=c&&"/"!==c&&c.endsWith("/"),p=(i||"."===c)&&a.endsWith("/");return u.pathname.endsWith("/")||!d&&!p||(u.pathname+="/"),u}const L=e=>e.join("/").replace(/\/\/+/g,"/"),O=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),N=e=>e&&"?"!==e?e.startsWith("?")?e:"?"+e:"",I=e=>e&&"#"!==e?e.startsWith("#")?e:"#"+e:"";class B extends Error{}function T(e){return null!=e&&"number"==typeof e.status&&"string"==typeof e.statusText&&"boolean"==typeof e.internal&&"data"in e}const F=["post","put","patch","delete"],D=(new Set(F),["get",...F]);new Set(D),new Set([301,302,303,307,308]),new Set([307,308]);Symbol("deferred")},51113:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var r=a(86087);const o=(0,r.forwardRef)((function({icon:e,size:t=24,...a},o){return(0,r.cloneElement)(e,{width:t,height:t,...a,ref:o})}))},83203:(e,t,a)=>{"use strict";a.r(t),a.d(t,{Icon:()=>r.A,addCard:()=>o.A,addSubmenu:()=>n.A,addTemplate:()=>l.A,alignCenter:()=>s.A,alignJustify:()=>i.A,alignLeft:()=>c.A,alignNone:()=>u.A,alignRight:()=>d.A,archive:()=>v.A,arrowDown:()=>p.A,arrowDownRight:()=>m.A,arrowLeft:()=>h.A,arrowRight:()=>f.A,arrowUp:()=>g.A,arrowUpLeft:()=>w.A,aspectRatio:()=>y.A,atSymbol:()=>b.A,audio:()=>x.A,background:()=>_.A,backup:()=>k.A,bell:()=>E.A,bellUnread:()=>C.A,blockDefault:()=>j.A,blockMeta:()=>A.A,blockTable:()=>S.A,border:()=>P.A,box:()=>R.A,brush:()=>M.A,bug:()=>V.A,button:()=>z.A,buttons:()=>H.A,calendar:()=>L.A,cancelCircleFilled:()=>O.A,caption:()=>N.A,capturePhoto:()=>I.A,captureVideo:()=>B.A,category:()=>T.A,caution:()=>F.A,cautionFilled:()=>D.A,chartBar:()=>G.A,check:()=>U.A,chevronDown:()=>q.A,chevronDownSmall:()=>Z.A,chevronLeft:()=>W.A,chevronLeftSmall:()=>$.A,chevronRight:()=>J.A,chevronRightSmall:()=>K.A,chevronUp:()=>Q.A,chevronUpDown:()=>Y.A,classic:()=>X.A,close:()=>ee.A,closeSmall:()=>te.A,cloud:()=>oe.A,cloudDownload:()=>ae.A,cloudUpload:()=>re.A,code:()=>ne.A,cog:()=>le.A,color:()=>se.A,column:()=>ie.A,columns:()=>ce.A,comment:()=>ve.A,commentAuthorAvatar:()=>pe.A,commentAuthorName:()=>me.A,commentContent:()=>he.A,commentEditLink:()=>ge.A,commentReplyLink:()=>fe.A,connection:()=>we.A,copy:()=>ue.A,copySmall:()=>de.A,cover:()=>be.A,create:()=>ye.A,crop:()=>xe.A,currencyDollar:()=>_e.A,currencyEuro:()=>ke.A,currencyPound:()=>Ee.A,customLink:()=>_a.A,customPostType:()=>Ce.A,desktop:()=>je.A,details:()=>Ae.A,download:()=>Ve.A,drafts:()=>Se.A,dragHandle:()=>Pe.A,drawerLeft:()=>Re.A,drawerRight:()=>Me.A,edit:()=>ze.A,envelope:()=>He.A,error:()=>Oe.A,external:()=>Le.A,file:()=>Ne.A,filter:()=>Ie.A,flipHorizontal:()=>Be.A,flipVertical:()=>Te.A,footer:()=>co.A,formatBold:()=>Fe.A,formatCapitalize:()=>De.A,formatIndent:()=>Ge.A,formatIndentRTL:()=>Ue.A,formatItalic:()=>qe.A,formatListBullets:()=>Ze.A,formatListBulletsRTL:()=>We.A,formatListNumbered:()=>$e.A,formatListNumberedRTL:()=>Je.A,formatLowercase:()=>Qe.A,formatLtr:()=>Ke.A,formatOutdent:()=>Ye.A,formatOutdentRTL:()=>Xe.A,formatRtl:()=>et.A,formatStrikethrough:()=>tt.A,formatUnderline:()=>at.A,formatUppercase:()=>rt.A,fullscreen:()=>ot.A,funnel:()=>nt.A,gallery:()=>lt.A,globe:()=>st.A,grid:()=>it.A,group:()=>ct.A,handle:()=>ut.A,header:()=>uo.A,heading:()=>gt.A,headingLevel1:()=>dt.A,headingLevel2:()=>vt.A,headingLevel3:()=>pt.A,headingLevel4:()=>mt.A,headingLevel5:()=>ht.A,headingLevel6:()=>ft.A,help:()=>wt.A,helpFilled:()=>bt.A,home:()=>_t.A,homeButton:()=>kt.A,html:()=>Et.A,image:()=>Ct.A,inbox:()=>yt.A,info:()=>jt.A,insertAfter:()=>At.A,insertBefore:()=>St.A,institution:()=>xt.A,justifyBottom:()=>Pt.A,justifyCenter:()=>Mt.A,justifyCenterVertical:()=>Vt.A,justifyLeft:()=>Rt.A,justifyRight:()=>zt.A,justifySpaceBetween:()=>Ht.A,justifySpaceBetweenVertical:()=>Lt.A,justifyStretch:()=>Ot.A,justifyStretchVertical:()=>Nt.A,justifyTop:()=>It.A,key:()=>Bt.A,keyboard:()=>Tt.A,keyboardClose:()=>Ft.A,keyboardReturn:()=>Dt.A,language:()=>Gt.A,layout:()=>Ut.A,levelUp:()=>qt.A,lifesaver:()=>Zt.A,lineDashed:()=>Wt.A,lineDotted:()=>$t.A,lineSolid:()=>Jt.A,link:()=>Kt.A,linkOff:()=>Qt.A,list:()=>Yt.A,listItem:()=>Xt.A,listView:()=>ea.A,lock:()=>ta.A,lockOutline:()=>aa.A,lockSmall:()=>ra.A,login:()=>oa.A,loop:()=>na.A,mapMarker:()=>la.A,media:()=>sa.A,mediaAndText:()=>ia.A,megaphone:()=>ca.A,menu:()=>ua.A,mobile:()=>da.A,more:()=>va.A,moreHorizontal:()=>pa.A,moreHorizontalMobile:()=>ma.A,moreVertical:()=>ha.A,moveTo:()=>fa.A,navigation:()=>ga.A,next:()=>Xa.A,notAllowed:()=>wa.A,notFound:()=>ba.A,offline:()=>er.A,overlayText:()=>ya.A,page:()=>ka.A,pageBreak:()=>xa.A,pages:()=>Ea.A,paragraph:()=>Ca.A,payment:()=>ja.A,pencil:()=>Va.A,pending:()=>Aa.A,people:()=>za.A,percent:()=>Sa.A,pin:()=>Ha.A,pinSmall:()=>La.A,plugins:()=>Oa.A,plus:()=>Ba.A,plusCircle:()=>Ia.A,plusCircleFilled:()=>Na.A,positionCenter:()=>Pa.A,positionLeft:()=>Ra.A,positionRight:()=>Ma.A,post:()=>Ta.A,postAuthor:()=>Fa.A,postCategories:()=>Da.A,postComments:()=>Ua.A,postCommentsCount:()=>qa.A,postCommentsForm:()=>Za.A,postContent:()=>Ga.A,postDate:()=>Wa.A,postExcerpt:()=>$a.A,postFeaturedImage:()=>Ja.A,postList:()=>Ka.A,postTerms:()=>Qa.A,preformatted:()=>tr.A,previous:()=>Ya.A,published:()=>ar.A,pullLeft:()=>rr.A,pullRight:()=>or.A,pullquote:()=>nr.A,queryPagination:()=>lr.A,queryPaginationNext:()=>sr.A,queryPaginationNumbers:()=>ir.A,queryPaginationPrevious:()=>cr.A,quote:()=>ur.A,receipt:()=>dr.A,redo:()=>vr.A,removeBug:()=>pr.A,removeSubmenu:()=>mr.A,replace:()=>hr.A,reset:()=>fr.A,resizeCornerNE:()=>gr.A,reusableBlock:()=>wr.A,rotateLeft:()=>xr.A,rotateRight:()=>_r.A,row:()=>br.A,rss:()=>kr.A,scheduled:()=>Ar.A,search:()=>Er.A,seen:()=>Cr.A,send:()=>Sr.A,separator:()=>Pr.A,settings:()=>Rr.A,shadow:()=>Mr.A,share:()=>Vr.A,shield:()=>zr.A,shipping:()=>Ur.A,shortcode:()=>Hr.A,shuffle:()=>Lr.A,sidebar:()=>vo.A,sidesAll:()=>po.A,sidesAxial:()=>mo.A,sidesBottom:()=>ho.A,sidesHorizontal:()=>fo.A,sidesLeft:()=>go.A,sidesRight:()=>wo.A,sidesTop:()=>bo.A,sidesVertical:()=>yo.A,siteLogo:()=>Or.A,square:()=>qr.A,stack:()=>Nr.A,starEmpty:()=>Ir.A,starFilled:()=>Br.A,starHalf:()=>Tr.A,store:()=>Fr.A,stretchFullWidth:()=>Dr.A,stretchWide:()=>Zr.A,styles:()=>Gr.A,subscript:()=>Wr.A,superscript:()=>$r.A,swatch:()=>Jr.A,symbol:()=>yr.A,symbolFilled:()=>so.A,table:()=>ro.A,tableColumnAfter:()=>Kr.A,tableColumnBefore:()=>Qr.A,tableColumnDelete:()=>Yr.A,tableOfContents:()=>Xr.A,tableRowAfter:()=>eo.A,tableRowBefore:()=>to.A,tableRowDelete:()=>ao.A,tablet:()=>Eo.A,tag:()=>oo.A,termDescription:()=>io.A,textColor:()=>xo.A,textHorizontal:()=>_o.A,textVertical:()=>ko.A,thumbsDown:()=>no.A,thumbsUp:()=>lo.A,tip:()=>jo.A,title:()=>Co.A,tool:()=>Ao.A,trash:()=>So.A,trendingDown:()=>Po.A,trendingUp:()=>Ro.A,typography:()=>Mo.A,undo:()=>Vo.A,ungroup:()=>zo.A,unlock:()=>Ho.A,unseen:()=>jr.A,update:()=>Lo.A,upload:()=>Oo.A,verse:()=>No.A,video:()=>Io.A,warning:()=>D.A,widget:()=>Bo.A,wordpress:()=>To.A});var r=a(51113),o=a(13523),n=a(47920),l=a(74423),s=a(47894),i=a(56091),c=a(99710),u=a(5817),d=a(71241),v=a(46685),p=a(66955),m=a(4132),h=a(7474),f=a(71797),g=a(62510),w=a(2250),b=a(62599),y=a(1561),x=a(22593),_=a(29551),k=a(8701),E=a(4262),C=a(43804),j=a(96630),A=a(23726),S=a(57003),P=a(44525),R=a(23654),M=a(45955),V=a(53073),z=a(27375),H=a(4490),L=a(25877),O=a(28695),N=a(17913),I=a(92340),B=a(77711),T=a(67451),F=a(73718),D=a(23751),G=a(7267),U=a(83883),q=a(64969),Z=a(23823),W=a(68888),$=a(48690),J=a(29115),K=a(65437),Q=a(98248),Y=a(56469),X=a(69043),ee=a(10991),te=a(31249),ae=a(40199),re=a(48570),oe=a(67534),ne=a(44314),le=a(62800),se=a(12072),ie=a(92225),ce=a(37556),ue=a(56530),de=a(53496),ve=a(91338),pe=a(64092),me=a(26550),he=a(16994),fe=a(35432),ge=a(73800),we=a(84763),be=a(25780),ye=a(2751),xe=a(10637),_e=a(24995),ke=a(42004),Ee=a(93147),Ce=a(82268),je=a(93115),Ae=a(57189),Se=a(6291),Pe=a(69828),Re=a(86198),Me=a(37057),Ve=a(16307),ze=a(92687),He=a(42663),Le=a(53512),Oe=a(74117),Ne=a(18293),Ie=a(15433),Be=a(51517),Te=a(67448),Fe=a(7490),De=a(1135),Ge=a(3571),Ue=a(69992),qe=a(64125),Ze=a(89761),We=a(53730),$e=a(93346),Je=a(53117),Ke=a(34083),Qe=a(60996),Ye=a(70868),Xe=a(86707),et=a(89387),tt=a(60550),at=a(18701),rt=a(80145),ot=a(39662),nt=a(8679),lt=a(28541),st=a(84066),it=a(71651),ct=a(36844),ut=a(40693),dt=a(88576),vt=a(99577),pt=a(86794),mt=a(6835),ht=a(98732),ft=a(5429),gt=a(96925),wt=a(10748),bt=a(2453),yt=a(34259),xt=a(78329),_t=a(13400),kt=a(14365),Et=a(88074),Ct=a(95938),jt=a(19783),At=a(65545),St=a(53916),Pt=a(98339),Rt=a(51349),Mt=a(11177),Vt=a(35980),zt=a(96692),Ht=a(53057),Lt=a(99556),Ot=a(75911),Nt=a(59210),It=a(81037),Bt=a(72896),Tt=a(33602),Ft=a(95855),Dt=a(76277),Gt=a(65281),Ut=a(20757),qt=a(11871),Zt=a(41496),Wt=a(6055),$t=a(6002),Jt=a(10895),Kt=a(87603),Qt=a(35855),Yt=a(92011),Xt=a(62011),ea=a(19601),ta=a(84008),aa=a(7827),ra=a(47714),oa=a(23250),na=a(72525),la=a(50828),sa=a(21679),ia=a(83391),ca=a(8933),ua=a(78136),da=a(82065),va=a(57054),pa=a(28231),ma=a(42778),ha=a(31597),fa=a(22374),ga=a(81385),wa=a(18887),ba=a(11995),ya=a(43411),xa=a(78982),_a=a(77617),ka=a(59892),Ea=a(94299),Ca=a(70413),ja=a(95501),Aa=a(8436),Sa=a(13822),Pa=a(72816),Ra=a(96504),Ma=a(71643),Va=a(78938),za=a(15788),Ha=a(36304),La=a(83594),Oa=a(30435),Na=a(17809),Ia=a(73632),Ba=a(45459),Ta=a(69457),Fa=a(36037),Da=a(94706),Ga=a(41417),Ua=a(25816),qa=a(90754),Za=a(93803),Wa=a(76982),$a=a(88669),Ja=a(54424),Ka=a(30),Qa=a(5015),Ya=a(56026),Xa=a(64222),er=a(93512),tr=a(6584),ar=a(64609),rr=a(52812),or=a(78887),nr=a(31798),lr=a(13968),sr=a(58324),ir=a(79843),cr=a(57524),ur=a(91535),dr=a(49695),vr=a(86299),pr=a(81884),mr=a(5903),hr=a(36667),fr=a(84832),gr=a(32128),wr=a(40502),br=a(71743),yr=a(28687),xr=a(80828),_r=a(60503),kr=a(4335),Er=a(58535),Cr=a(58824),jr=a(52259),Ar=a(27268),Sr=a(67709),Pr=a(13976),Rr=a(20066),Mr=a(37759),Vr=a(80596),zr=a(65302),Hr=a(88944),Lr=a(77846),Or=a(11194),Nr=a(33371),Ir=a(61871),Br=a(77136),Tr=a(41137),Fr=a(45422),Dr=a(36111),Gr=a(29753),Ur=a(24233),qr=a(26992),Zr=a(46048),Wr=a(30838),$r=a(36935),Jr=a(30959),Kr=a(31181),Qr=a(13488),Yr=a(93664),Xr=a(27672),eo=a(51917),to=a(87504),ao=a(55104),ro=a(18495),oo=a(211),no=a(50347),lo=a(7598),so=a(97572),io=a(90254),co=a(96252),uo=a(4282),vo=a(37631),po=a(88305),mo=a(65483),ho=a(7731),fo=a(81808),go=a(25125),wo=a(94916),bo=a(88061),yo=a(37870),xo=a(43886),_o=a(90153),ko=a(7583),Eo=a(21955),Co=a(11269),jo=a(35170),Ao=a(71041),So=a(76673),Po=a(36707),Ro=a(92614),Mo=a(74426),Vo=a(95789),zo=a(68113),Ho=a(375),Lo=a(83822),Oo=a(7326),No=a(43610),Io=a(70396),Bo=a(5559),To=a(94648)},13523:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M18.5 5.5V8H20V5.5h2.5V4H20V1.5h-1.5V4H16v1.5h2.5zM12 4H6a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2v-6h-1.5v6a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5h6V4z"})})},47920:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M2 12c0 3.6 2.4 5.5 6 5.5h.5V19l3-2.5-3-2.5v2H8c-2.5 0-4.5-1.5-4.5-4s2-4.5 4.5-4.5h3.5V6H8c-3.6 0-6 2.4-6 6zm19.5-1h-8v1.5h8V11zm0 5h-8v1.5h8V16zm0-10h-8v1.5h8V6z"})})},74423:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M18.5 5.5V8H20V5.5H22.5V4H20V1.5H18.5V4H16V5.5H18.5ZM13.9624 4H6C4.89543 4 4 4.89543 4 6V18C4 19.1046 4.89543 20 6 20H18C19.1046 20 20 19.1046 20 18V10.0391H18.5V18C18.5 18.2761 18.2761 18.5 18 18.5H10L10 10.4917L16.4589 10.5139L16.4641 9.01389L5.5 8.97618V6C5.5 5.72386 5.72386 5.5 6 5.5H13.9624V4ZM5.5 10.4762V18C5.5 18.2761 5.72386 18.5 6 18.5H8.5L8.5 10.4865L5.5 10.4762Z"})})},47894:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M7.5 5.5h9V4h-9v1.5Zm-3.5 7h16V11H4v1.5Zm3.5 7h9V18h-9v1.5Z"})})},56091:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M4 12.8h16v-1.5H4v1.5zm0 7h12.4v-1.5H4v1.5zM4 4.3v1.5h16V4.3H4z"})})},99710:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M13 5.5H4V4h9v1.5Zm7 7H4V11h16v1.5Zm-7 7H4V18h9v1.5Z"})})},5817:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M19 5.5H5V4h14v1.5ZM19 20H5v-1.5h14V20ZM5 9h14v6H5V9Z"})})},71241:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M11.111 5.5H20V4h-8.889v1.5ZM4 12.5h16V11H4v1.5Zm7.111 7H20V18h-8.889v1.5Z"})})},46685:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M11.934 7.406a1 1 0 0 0 .914.594H19a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5h5.764a.5.5 0 0 1 .447.276l.723 1.63Zm1.064-1.216a.5.5 0 0 0 .462.31H19a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h5.764a2 2 0 0 1 1.789 1.106l.445 1.084ZM8.5 10.5h7V12h-7v-1.5Zm7 3.5h-7v1.5h7V14Z"})})},4132:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M10 18h8v-8h-1.5v5.5L7 6 6 7l9.5 9.5H10V18Z"})})},66955:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"m16.5 13.5-3.7 3.7V4h-1.5v13.2l-3.8-3.7-1 1 5.5 5.6 5.5-5.6z"})})},7474:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M20 11.2H6.8l3.7-3.7-1-1L3.9 12l5.6 5.5 1-1-3.7-3.7H20z"})})},71797:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"m14.5 6.5-1 1 3.7 3.7H4v1.6h13.2l-3.7 3.7 1 1 5.6-5.5z"})})},2250:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M14 6H6v8h1.5V8.5L17 18l1-1-9.5-9.5H14V6Z"})})},62510:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M12 3.9 6.5 9.5l1 1 3.8-3.7V20h1.5V6.8l3.7 3.7 1-1z"})})},1561:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M18.5 5.5h-13c-1.1 0-2 .9-2 2v9c0 1.1.9 2 2 2h13c1.1 0 2-.9 2-2v-9c0-1.1-.9-2-2-2zm.5 11c0 .3-.2.5-.5.5h-13c-.3 0-.5-.2-.5-.5v-9c0-.3.2-.5.5-.5h13c.3 0 .5.2.5.5v9zM6.5 12H8v-2h2V8.5H6.5V12zm9.5 2h-2v1.5h3.5V12H16v2z"})})},62599:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M12.5939 21C14.1472 21 16.1269 20.5701 17.0711 20.1975L16.6447 18.879C16.0964 19.051 14.3299 19.6242 12.6548 19.6242C7.4467 19.6242 4.67513 16.8726 4.67513 12C4.67513 7.21338 7.50762 4.34713 12.2893 4.34713C17.132 4.34713 19.4162 7.55732 19.4162 10.7675C19.4162 14.035 19.0508 15.4968 17.4975 15.4968C16.5838 15.4968 16.0964 14.7803 16.0964 13.9777V7.5H14.4822V8.30255H14.3909C14.1777 7.67198 12.9898 7.12739 11.467 7.2707C9.18274 7.5 7.4467 9.27707 7.4467 11.8567C7.4467 14.5796 8.81726 16.672 11.467 16.758C13.203 16.8153 14.1168 16.0127 14.4822 15.1815H14.5736C14.7563 16.414 16.401 16.8439 17.467 16.8439C20.6954 16.8439 21 13.5764 21 10.7962C21 6.86943 18.0761 3 12.3807 3C6.50254 3 3 6.3535 3 11.9427C3 17.7325 6.38071 21 12.5939 21ZM11.7107 15.2962C9.73096 15.2962 9.03046 13.6051 9.03046 11.7707C9.03046 10.1083 10.0355 8.67516 11.7716 8.67516C13.599 8.67516 14.5736 9.36306 14.5736 11.7707C14.5736 14.1497 13.7513 15.2962 11.7107 15.2962Z"})})},22593:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M17.7 4.3c-1.2 0-2.8 0-3.8 1-.6.6-.9 1.5-.9 2.6V14c-.6-.6-1.5-1-2.5-1C8.6 13 7 14.6 7 16.5S8.6 20 10.5 20c1.5 0 2.8-1 3.3-2.3.5-.8.7-1.8.7-2.5V7.9c0-.7.2-1.2.5-1.6.6-.6 1.8-.6 2.8-.6h.3V4.3h-.4z"})})},29551:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M11.53 4.47a.75.75 0 1 0-1.06 1.06l8 8a.75.75 0 1 0 1.06-1.06l-8-8Zm5 1a.75.75 0 1 0-1.06 1.06l2 2a.75.75 0 1 0 1.06-1.06l-2-2Zm-11.06 10a.75.75 0 0 1 1.06 0l2 2a.75.75 0 1 1-1.06 1.06l-2-2a.75.75 0 0 1 0-1.06Zm.06-5a.75.75 0 0 0-1.06 1.06l8 8a.75.75 0 1 0 1.06-1.06l-8-8Zm-.06-3a.75.75 0 0 1 1.06 0l10 10a.75.75 0 1 1-1.06 1.06l-10-10a.75.75 0 0 1 0-1.06Zm3.06-2a.75.75 0 0 0-1.06 1.06l10 10a.75.75 0 1 0 1.06-1.06l-10-10Z"})})},8701:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M5.5 12h1.75l-2.5 3-2.5-3H4a8 8 0 113.134 6.35l.907-1.194A6.5 6.5 0 105.5 12zm9.53 1.97l-2.28-2.28V8.5a.75.75 0 00-1.5 0V12a.747.747 0 00.218.529l1.282-.84-1.28.842 2.5 2.5a.75.75 0 101.06-1.061z"})})},43804:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsxs)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[(0,o.jsx)(r.Path,{d:"M13.969 4.39A5.088 5.088 0 0 0 12 4C9.2 4 7 6.2 7 9v2.5c0 1.353-.17 2.368-.976 3-.267.209-.602.376-1.024.5v1h14v-1c-.422-.124-.757-.291-1.024-.5-.806-.632-.976-1.647-.976-3V11c-.53 0-1.037-.103-1.5-.29v.79c0 .93.066 1.98.515 2.897l.053.103H7.932l.053-.103c.449-.917.515-1.967.515-2.897V9c0-1.972 1.528-3.5 3.5-3.5.43 0 .838.072 1.214.206.167-.488.425-.933.755-1.316Zm-3.961 13.618c0-.176.023-.346.065-.508h3.854A1.996 1.996 0 0 1 12 20a1.991 1.991 0 0 1-1.992-1.992Z"}),(0,o.jsx)(r.Circle,{cx:"17",cy:"7",r:"2.5"})]})},4262:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M17 11.5c0 1.353.17 2.368.976 3 .266.209.602.376 1.024.5v1H5v-1c.422-.124.757-.291 1.024-.5.806-.632.976-1.647.976-3V9c0-2.8 2.2-5 5-5s5 2.2 5 5v2.5ZM15.5 9v2.5c0 .93.066 1.98.515 2.897l.053.103H7.932a4.018 4.018 0 0 0 .053-.103c.449-.917.515-1.967.515-2.897V9c0-1.972 1.528-3.5 3.5-3.5s3.5 1.528 3.5 3.5Zm-5.492 9.008c0-.176.023-.346.065-.508h3.854A1.996 1.996 0 0 1 12 20c-1.1 0-1.992-.892-1.992-1.992Z"})})},96630:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M19 8h-1V6h-5v2h-2V6H6v2H5c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-8c0-1.1-.9-2-2-2zm.5 10c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5v-8c0-.3.2-.5.5-.5h14c.3 0 .5.2.5.5v8z"})})},23726:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",d:"M8.95 11.25H4v1.5h4.95v4.5H13V18c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2v-3c0-1.1-.9-2-2-2h-3c-1.1 0-2 .9-2 2v.75h-2.55v-7.5H13V9c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-3c-1.1 0-2 .9-2 2v.75H8.95v4.5ZM14.5 15v3c0 .3.2.5.5.5h3c.3 0 .5-.2.5-.5v-3c0-.3-.2-.5-.5-.5h-3c-.3 0-.5.2-.5.5Zm0-6V6c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v3c0 .3-.2.5-.5.5h-3c-.3 0-.5-.2-.5-.5Z",clipRule:"evenodd"})})},57003:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v3.5h-15V5c0-.3.2-.5.5-.5zm8 5.5h6.5v3.5H13V10zm-1.5 3.5h-7V10h7v3.5zm-7 5.5v-4h7v4.5H5c-.3 0-.5-.2-.5-.5zm14.5.5h-6V15h6.5v4c0 .3-.2.5-.5.5z"})})},44525:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"m6.6 15.6-1.2.8c.6.9 1.3 1.6 2.2 2.2l.8-1.2c-.7-.5-1.3-1.1-1.8-1.8zM5.5 12c0-.4 0-.9.1-1.3l-1.5-.3c0 .5-.1 1.1-.1 1.6s.1 1.1.2 1.6l1.5-.3c-.2-.4-.2-.9-.2-1.3zm11.9-3.6 1.2-.8c-.6-.9-1.3-1.6-2.2-2.2l-.8 1.2c.7.5 1.3 1.1 1.8 1.8zM5.3 7.6l1.2.8c.5-.7 1.1-1.3 1.8-1.8l-.7-1.3c-.9.6-1.7 1.4-2.3 2.3zm14.5 2.8-1.5.3c.1.4.1.8.1 1.3s0 .9-.1 1.3l1.5.3c.1-.5.2-1 .2-1.6s-.1-1.1-.2-1.6zM12 18.5c-.4 0-.9 0-1.3-.1l-.3 1.5c.5.1 1 .2 1.6.2s1.1-.1 1.6-.2l-.3-1.5c-.4.1-.9.1-1.3.1zm3.6-1.1.8 1.2c.9-.6 1.6-1.3 2.2-2.2l-1.2-.8c-.5.7-1.1 1.3-1.8 1.8zM10.4 4.2l.3 1.5c.4-.1.8-.1 1.3-.1s.9 0 1.3.1l.3-1.5c-.5-.1-1.1-.2-1.6-.2s-1.1.1-1.6.2z"})})},23654:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",d:"M5 5.5h14a.5.5 0 01.5.5v1.5a.5.5 0 01-.5.5H5a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 9.232A2 2 0 013 7.5V6a2 2 0 012-2h14a2 2 0 012 2v1.5a2 2 0 01-1 1.732V18a2 2 0 01-2 2H6a2 2 0 01-2-2V9.232zm1.5.268V18a.5.5 0 00.5.5h12a.5.5 0 00.5-.5V9.5h-13z",clipRule:"evenodd"})})},45955:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M4 20h8v-1.5H4V20zM18.9 3.5c-.6-.6-1.5-.6-2.1 0l-7.2 7.2c-.4-.1-.7 0-1.1.1-.5.2-1.5.7-1.9 2.2-.4 1.7-.8 2.2-1.1 2.7-.1.1-.2.3-.3.4l-.6 1.1H6c2 0 3.4-.4 4.7-1.4.8-.6 1.2-1.4 1.3-2.3 0-.3 0-.5-.1-.7L19 5.7c.5-.6.5-1.6-.1-2.2zM9.7 14.7c-.7.5-1.5.8-2.4 1 .2-.5.5-1.2.8-2.3.2-.6.4-1 .8-1.1.5-.1 1 .1 1.3.3.2.2.3.5.2.8 0 .3-.1.9-.7 1.3z"})})},53073:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M6.13 5.5l1.926 1.927A4.975 4.975 0 007.025 10H5v1.5h2V13H5v1.5h2.1a5.002 5.002 0 009.8 0H19V13h-2v-1.5h2V10h-2.025a4.979 4.979 0 00-1.167-2.74l1.76-1.76-1.061-1.06-1.834 1.834A4.977 4.977 0 0012 5.5c-1.062 0-2.046.33-2.855.895L7.19 4.44 6.13 5.5zm2.37 5v3a3.5 3.5 0 107 0v-3a3.5 3.5 0 10-7 0z",fillRule:"evenodd",clipRule:"evenodd"})})},27375:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M8 12.5h8V11H8v1.5Z M19 6.5H5a2 2 0 0 0-2 2V15a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V8.5a2 2 0 0 0-2-2ZM5 8h14a.5.5 0 0 1 .5.5V15a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V8.5A.5.5 0 0 1 5 8Z"})})},4490:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M14.5 17.5H9.5V16H14.5V17.5Z M14.5 8H9.5V6.5H14.5V8Z M7 3.5H17C18.1046 3.5 19 4.39543 19 5.5V9C19 10.1046 18.1046 11 17 11H7C5.89543 11 5 10.1046 5 9V5.5C5 4.39543 5.89543 3.5 7 3.5ZM17 5H7C6.72386 5 6.5 5.22386 6.5 5.5V9C6.5 9.27614 6.72386 9.5 7 9.5H17C17.2761 9.5 17.5 9.27614 17.5 9V5.5C17.5 5.22386 17.2761 5 17 5Z M7 13H17C18.1046 13 19 13.8954 19 15V18.5C19 19.6046 18.1046 20.5 17 20.5H7C5.89543 20.5 5 19.6046 5 18.5V15C5 13.8954 5.89543 13 7 13ZM17 14.5H7C6.72386 14.5 6.5 14.7239 6.5 15V18.5C6.5 18.7761 6.72386 19 7 19H17C17.2761 19 17.5 18.7761 17.5 18.5V15C17.5 14.7239 17.2761 14.5 17 14.5Z"})})},25877:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm.5 16c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V7h15v12zM9 10H7v2h2v-2zm0 4H7v2h2v-2zm4-4h-2v2h2v-2zm4 0h-2v2h2v-2zm-4 4h-2v2h2v-2zm4 0h-2v2h2v-2z"})})},28695:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M12 21C16.9706 21 21 16.9706 21 12C21 7.02944 16.9706 3 12 3C7.02944 3 3 7.02944 3 12C3 16.9706 7.02944 21 12 21ZM15.5303 8.46967C15.8232 8.76256 15.8232 9.23744 15.5303 9.53033L13.0607 12L15.5303 14.4697C15.8232 14.7626 15.8232 15.2374 15.5303 15.5303C15.2374 15.8232 14.7626 15.8232 14.4697 15.5303L12 13.0607L9.53033 15.5303C9.23744 15.8232 8.76256 15.8232 8.46967 15.5303C8.17678 15.2374 8.17678 14.7626 8.46967 14.4697L10.9393 12L8.46967 9.53033C8.17678 9.23744 8.17678 8.76256 8.46967 8.46967C8.76256 8.17678 9.23744 8.17678 9.53033 8.46967L12 10.9393L14.4697 8.46967C14.7626 8.17678 15.2374 8.17678 15.5303 8.46967Z"})})},17913:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M6 5.5h12a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H6a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5ZM4 6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6Zm4 10h2v-1.5H8V16Zm5 0h-2v-1.5h2V16Zm1 0h2v-1.5h-2V16Z"})})},92340:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M12 9.2c-2.2 0-3.9 1.8-3.9 4s1.8 4 3.9 4 4-1.8 4-4-1.8-4-4-4zm0 6.5c-1.4 0-2.4-1.1-2.4-2.5s1.1-2.5 2.4-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5zM20.2 8c-.1 0-.3 0-.5-.1l-2.5-.8c-.4-.1-.8-.4-1.1-.8l-1-1.5c-.4-.5-1-.9-1.7-.9h-2.9c-.6.1-1.2.4-1.6 1l-1 1.5c-.3.3-.6.6-1.1.7l-2.5.8c-.2.1-.4.1-.6.1-1 .2-1.7.9-1.7 1.9v8.3c0 1 .9 1.9 2 1.9h16c1.1 0 2-.8 2-1.9V9.9c0-1-.7-1.7-1.8-1.9zm.3 10.1c0 .2-.2.4-.5.4H4c-.3 0-.5-.2-.5-.4V9.9c0-.1.2-.3.5-.4.2 0 .5-.1.8-.2l2.5-.8c.7-.2 1.4-.6 1.8-1.3l1-1.5c.1-.1.2-.2.4-.2h2.9c.2 0 .3.1.4.2l1 1.5c.4.7 1.1 1.1 1.9 1.4l2.5.8c.3.1.6.1.8.2.3 0 .4.2.4.4v8.1z"})})},77711:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M14 5H4c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm.5 12c0 .3-.2.5-.5.5H4c-.3 0-.5-.2-.5-.5V7c0-.3.2-.5.5-.5h10c.3 0 .5.2.5.5v10zm2.5-7v4l5 3V7l-5 3zm3.5 4.4l-2-1.2v-2.3l2-1.2v4.7z"})})},67451:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M6 5.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM4 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2V6zm11-.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5h-3a.5.5 0 01-.5-.5V6a.5.5 0 01.5-.5zM13 6a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2h-3a2 2 0 01-2-2V6zm5 8.5h-3a.5.5 0 00-.5.5v3a.5.5 0 00.5.5h3a.5.5 0 00.5-.5v-3a.5.5 0 00-.5-.5zM15 13a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2v-3a2 2 0 00-2-2h-3zm-9 1.5h3a.5.5 0 01.5.5v3a.5.5 0 01-.5.5H6a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5zM4 15a2 2 0 012-2h3a2 2 0 012 2v3a2 2 0 01-2 2H6a2 2 0 01-2-2v-3z",fillRule:"evenodd",clipRule:"evenodd"})})},23751:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4ZM12.75 8V13H11.25V8H12.75ZM12.75 14.5V16H11.25V14.5H12.75Z"})})},73718:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm-.75 12v-1.5h1.5V16h-1.5Zm0-8v5h1.5V8h-1.5Z"})})},7267:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",d:"M11.25 5h1.5v15h-1.5V5zM6 10h1.5v10H6V10zm12 4h-1.5v6H18v-6z",clipRule:"evenodd"})})},83883:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z"})})},23823:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"m15.99 10.889-3.988 3.418-3.988-3.418.976-1.14 3.012 2.582 3.012-2.581.976 1.139Z"})})},64969:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M17.5 11.6L12 16l-5.5-4.4.9-1.2L12 14l4.5-3.6 1 1.2z"})})},48690:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"m13.1 16-3.4-4 3.4-4 1.1 1-2.6 3 2.6 3-1.1 1z"})})},68888:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M14.6 7l-1.2-1L8 12l5.4 6 1.2-1-4.6-5z"})})},65437:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M10.8622 8.04053L14.2805 12.0286L10.8622 16.0167L9.72327 15.0405L12.3049 12.0286L9.72327 9.01672L10.8622 8.04053Z"})})},29115:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M10.6 6L9.4 7l4.6 5-4.6 5 1.2 1 5.4-6z"})})},56469:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"m12 20-4.5-3.6-.9 1.2L12 22l5.5-4.4-.9-1.2L12 20zm0-16 4.5 3.6.9-1.2L12 2 6.5 6.4l.9 1.2L12 4z"})})},98248:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M6.5 12.4L12 8l5.5 4.4-.9 1.2L12 10l-4.5 3.6-1-1.2z"})})},69043:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M20 6H4c-1.1 0-2 .9-2 2v9c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm.5 11c0 .3-.2.5-.5.5H4c-.3 0-.5-.2-.5-.5V8c0-.3.2-.5.5-.5h16c.3 0 .5.2.5.5v9zM10 10H8v2h2v-2zm-5 2h2v-2H5v2zm8-2h-2v2h2v-2zm-5 6h8v-2H8v2zm6-4h2v-2h-2v2zm3 0h2v-2h-2v2zm0 4h2v-2h-2v2zM5 16h2v-2H5v2z"})})},31249:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z"})})},10991:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"m13.06 12 6.47-6.47-1.06-1.06L12 10.94 5.53 4.47 4.47 5.53 10.94 12l-6.47 6.47 1.06 1.06L12 13.06l6.47 6.47 1.06-1.06L13.06 12Z"})})},40199:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M17.3 10.1002C17.3 7.6002 15.2 5.7002 12.5 5.7002C10.3 5.7002 8.4 7.1002 7.9 9.0002H7.7C5.7 9.0002 4 10.7002 4 12.8002C4 14.9002 5.7 16.6002 7.7 16.6002V15.2002C6.5 15.2002 5.5 14.1002 5.5 12.9002C5.5 11.7002 6.5 10.5002 7.7 10.5002H9L9.3 9.4002C9.7 8.1002 11 7.2002 12.5 7.2002C14.3 7.2002 15.8 8.5002 15.8 10.1002V11.4002L17.1 11.6002C17.9 11.7002 18.5 12.5002 18.5 13.4002C18.5 14.4002 17.7 15.2002 16.8 15.2002H16.5V16.6002H16.7C18.5 16.6002 19.9 15.1002 19.9 13.3002C20 11.7002 18.8 10.4002 17.3 10.1002Z M9.8806 13.7576L8.81995 14.8182L12.0019 18.0002L15.1851 14.8171L14.1244 13.7564L12.7551 15.1257L12.7551 10.0002L11.2551 10.0002V15.1321L9.8806 13.7576Z"})})},48570:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M17.3 10.1C17.3 7.60001 15.2 5.70001 12.5 5.70001C10.3 5.70001 8.4 7.10001 7.9 9.00001H7.7C5.7 9.00001 4 10.7 4 12.8C4 14.9 5.7 16.6 7.7 16.6H9.5V15.2H7.7C6.5 15.2 5.5 14.1 5.5 12.9C5.5 11.7 6.5 10.5 7.7 10.5H9L9.3 9.40001C9.7 8.10001 11 7.20001 12.5 7.20001C14.3 7.20001 15.8 8.50001 15.8 10.1V11.4L17.1 11.6C17.9 11.7 18.5 12.5 18.5 13.4C18.5 14.4 17.7 15.2 16.8 15.2H14.5V16.6H16.7C18.5 16.6 19.9 15.1 19.9 13.3C20 11.7 18.8 10.4 17.3 10.1Z M14.1245 14.2426L15.1852 13.182L12.0032 10L8.82007 13.1831L9.88072 14.2438L11.25 12.8745V18H12.75V12.8681L14.1245 14.2426Z"})})},67534:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M17.3 10.1c0-2.5-2.1-4.4-4.8-4.4-2.2 0-4.1 1.4-4.6 3.3h-.2C5.7 9 4 10.7 4 12.8c0 2.1 1.7 3.8 3.7 3.8h9c1.8 0 3.2-1.5 3.2-3.3.1-1.6-1.1-2.9-2.6-3.2zm-.5 5.1h-9c-1.2 0-2.2-1.1-2.2-2.3s1-2.4 2.2-2.4h1.3l.3-1.1c.4-1.3 1.7-2.2 3.2-2.2 1.8 0 3.3 1.3 3.3 2.9v1.3l1.3.2c.8.1 1.4.9 1.4 1.8-.1 1-.9 1.8-1.8 1.8z"})})},44314:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M20.8 10.7l-4.3-4.3-1.1 1.1 4.3 4.3c.1.1.1.3 0 .4l-4.3 4.3 1.1 1.1 4.3-4.3c.7-.8.7-1.9 0-2.6zM4.2 11.8l4.3-4.3-1-1-4.3 4.3c-.7.7-.7 1.8 0 2.5l4.3 4.3 1.1-1.1-4.3-4.3c-.2-.1-.2-.3-.1-.4z"})})},62800:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",d:"M10.289 4.836A1 1 0 0111.275 4h1.306a1 1 0 01.987.836l.244 1.466c.787.26 1.503.679 2.108 1.218l1.393-.522a1 1 0 011.216.437l.653 1.13a1 1 0 01-.23 1.273l-1.148.944a6.025 6.025 0 010 2.435l1.149.946a1 1 0 01.23 1.272l-.653 1.13a1 1 0 01-1.216.437l-1.394-.522c-.605.54-1.32.958-2.108 1.218l-.244 1.466a1 1 0 01-.987.836h-1.306a1 1 0 01-.986-.836l-.244-1.466a5.995 5.995 0 01-2.108-1.218l-1.394.522a1 1 0 01-1.217-.436l-.653-1.131a1 1 0 01.23-1.272l1.149-.946a6.026 6.026 0 010-2.435l-1.148-.944a1 1 0 01-.23-1.272l.653-1.131a1 1 0 011.217-.437l1.393.522a5.994 5.994 0 012.108-1.218l.244-1.466zM14.929 12a3 3 0 11-6 0 3 3 0 016 0z",clipRule:"evenodd"})})},12072:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M17.2 10.9c-.5-1-1.2-2.1-2.1-3.2-.6-.9-1.3-1.7-2.1-2.6L12 4l-1 1.1c-.6.9-1.3 1.7-2 2.6-.8 1.2-1.5 2.3-2 3.2-.6 1.2-1 2.2-1 3 0 3.4 2.7 6.1 6.1 6.1s6.1-2.7 6.1-6.1c0-.8-.3-1.8-1-3zm-5.1 7.6c-2.5 0-4.6-2.1-4.6-4.6 0-.3.1-1 .8-2.3.5-.9 1.1-1.9 2-3.1.7-.9 1.3-1.7 1.8-2.3.7.8 1.3 1.6 1.8 2.3.8 1.1 1.5 2.2 2 3.1.7 1.3.8 2 .8 2.3 0 2.5-2.1 4.6-4.6 4.6z"})})},92225:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M19 6H6c-1.1 0-2 .9-2 2v9c0 1.1.9 2 2 2h13c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zM6 17.5c-.3 0-.5-.2-.5-.5V8c0-.3.2-.5.5-.5h3v10H6zm13.5-.5c0 .3-.2.5-.5.5h-3v-10h3c.3 0 .5.2.5.5v9z"})})},37556:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M15 7.5h-5v10h5v-10Zm1.5 0v10H19a.5.5 0 0 0 .5-.5V8a.5.5 0 0 0-.5-.5h-2.5ZM6 7.5h2.5v10H6a.5.5 0 0 1-.5-.5V8a.5.5 0 0 1 .5-.5ZM6 6h13a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2Z"})})},64092:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",d:"M7.25 16.437a6.5 6.5 0 1 1 9.5 0V16A2.75 2.75 0 0 0 14 13.25h-4A2.75 2.75 0 0 0 7.25 16v.437Zm1.5 1.193a6.47 6.47 0 0 0 3.25.87 6.47 6.47 0 0 0 3.25-.87V16c0-.69-.56-1.25-1.25-1.25h-4c-.69 0-1.25.56-1.25 1.25v1.63ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm10-2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z",clipRule:"evenodd"})})},26550:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsxs)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,o.jsx)(r.Path,{d:"M18 4H6c-1.1 0-2 .9-2 2v12.9c0 .6.5 1.1 1.1 1.1.3 0 .5-.1.8-.3L8.5 17H18c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 11c0 .3-.2.5-.5.5H7.9l-2.4 2.4V6c0-.3.2-.5.5-.5h12c.3 0 .5.2.5.5v9z",fillRule:"evenodd",clipRule:"evenodd"}),(0,o.jsx)(r.Path,{d:"M15 15V15C15 13.8954 14.1046 13 13 13L11 13C9.89543 13 9 13.8954 9 15V15",fillRule:"evenodd",clipRule:"evenodd"}),(0,o.jsx)(r.Circle,{cx:"12",cy:"9",r:"2",fillRule:"evenodd",clipRule:"evenodd"})]})},16994:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M6.68822 16.625L5.5 17.8145L5.5 5.5L18.5 5.5L18.5 16.625L6.68822 16.625ZM7.31 18.125L19 18.125C19.5523 18.125 20 17.6773 20 17.125L20 5C20 4.44772 19.5523 4 19 4H5C4.44772 4 4 4.44772 4 5V19.5247C4 19.8173 4.16123 20.086 4.41935 20.2237C4.72711 20.3878 5.10601 20.3313 5.35252 20.0845L7.31 18.125ZM16 9.99997H8V8.49997H16V9.99997ZM8 14H13V12.5H8V14Z"})})},73800:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"m6.249 11.065.44-.44h3.186l-1.5 1.5H7.31l-1.957 1.96A.792.792 0 0 1 4 13.524V5a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v1.5L12.5 8V5.5h-7v6.315l.749-.75ZM20 19.75H7v-1.5h13v1.5Zm0-12.653-8.967 9.064L8 17l.867-2.935L17.833 5 20 7.097Z"})})},35432:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M6.68822 10.625L6.24878 11.0649L5.5 11.8145L5.5 5.5L12.5 5.5V8L14 6.5V5C14 4.44772 13.5523 4 13 4H5C4.44772 4 4 4.44771 4 5V13.5247C4 13.8173 4.16123 14.086 4.41935 14.2237C4.72711 14.3878 5.10601 14.3313 5.35252 14.0845L7.31 12.125H8.375L9.875 10.625H7.31H6.68822ZM14.5605 10.4983L11.6701 13.75H16.9975C17.9963 13.75 18.7796 14.1104 19.3553 14.7048C19.9095 15.2771 20.2299 16.0224 20.4224 16.7443C20.7645 18.0276 20.7543 19.4618 20.7487 20.2544C20.7481 20.345 20.7475 20.4272 20.7475 20.4999L19.2475 20.5001C19.2475 20.4191 19.248 20.3319 19.2484 20.2394V20.2394C19.2526 19.4274 19.259 18.2035 18.973 17.1307C18.8156 16.5401 18.586 16.0666 18.2778 15.7483C17.9909 15.4521 17.5991 15.25 16.9975 15.25H11.8106L14.5303 17.9697L13.4696 19.0303L8.96956 14.5303L13.4394 9.50171L14.5605 10.4983Z"})})},91338:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M18 4H6c-1.1 0-2 .9-2 2v12.9c0 .6.5 1.1 1.1 1.1.3 0 .5-.1.8-.3L8.5 17H18c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 11c0 .3-.2.5-.5.5H7.9l-2.4 2.4V6c0-.3.2-.5.5-.5h12c.3 0 .5.2.5.5v9z"})})},84763:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",fillRule:"evenodd",children:(0,o.jsx)(r.Path,{d:"M19.53 4.47a.75.75 0 0 1 0 1.06L17.06 8l.77.769a3.155 3.155 0 0 1 .685 3.439 3.15 3.15 0 0 1-.685 1.022v.001L13.23 17.83v.001a3.15 3.15 0 0 1-4.462 0L8 17.06l-2.47 2.47a.75.75 0 0 1-1.06-1.06L6.94 16l-.77-.769a3.154 3.154 0 0 1-.685-3.439 3.15 3.15 0 0 1 .685-1.023l4.599-4.598a3.152 3.152 0 0 1 4.462 0l.769.768 2.47-2.47a.75.75 0 0 1 1.06 0Zm-2.76 7.7L15 13.94 10.06 9l1.771-1.77a1.65 1.65 0 0 1 2.338 0L16.77 9.83a1.649 1.649 0 0 1 0 2.338h-.001ZM13.94 15 9 10.06l-1.77 1.771a1.65 1.65 0 0 0 0 2.338l2.601 2.602a1.649 1.649 0 0 0 2.338 0v-.001L13.94 15Z"})})},53496:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.625 5.5h9.75c.069 0 .125.056.125.125v9.75a.125.125 0 0 1-.125.125h-9.75a.125.125 0 0 1-.125-.125v-9.75c0-.069.056-.125.125-.125ZM4 5.625C4 4.728 4.728 4 5.625 4h9.75C16.273 4 17 4.728 17 5.625v9.75c0 .898-.727 1.625-1.625 1.625h-9.75A1.625 1.625 0 0 1 4 15.375v-9.75Zm14.5 11.656v-9H20v9C20 18.8 18.77 20 17.251 20H6.25v-1.5h11.001c.69 0 1.249-.528 1.249-1.219Z"})})},56530:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5 4.5h11a.5.5 0 0 1 .5.5v11a.5.5 0 0 1-.5.5H5a.5.5 0 0 1-.5-.5V5a.5.5 0 0 1 .5-.5ZM3 5a2 2 0 0 1 2-2h11a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5Zm17 3v10.75c0 .69-.56 1.25-1.25 1.25H6v1.5h12.75a2.75 2.75 0 0 0 2.75-2.75V8H20Z"})})},25780:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M18.7 3H5.3C4 3 3 4 3 5.3v13.4C3 20 4 21 5.3 21h13.4c1.3 0 2.3-1 2.3-2.3V5.3C21 4 20 3 18.7 3zm.8 15.7c0 .4-.4.8-.8.8H5.3c-.4 0-.8-.4-.8-.8V5.3c0-.4.4-.8.8-.8h6.2v8.9l2.5-3.1 2.5 3.1V4.5h2.2c.4 0 .8.4.8.8v13.4z"})})},2751:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M16 11.2h-3.2V8h-1.6v3.2H8v1.6h3.2V16h1.6v-3.2H16z"})})},10637:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M18 20v-2h2v-1.5H7.75a.25.25 0 0 1-.25-.25V4H6v2H4v1.5h2v8.75c0 .966.784 1.75 1.75 1.75h8.75v2H18ZM9.273 7.5h6.977a.25.25 0 0 1 .25.25v6.977H18V7.75A1.75 1.75 0 0 0 16.25 6H9.273v1.5Z"})})},24995:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M3.25 12a8.75 8.75 0 1117.5 0 8.75 8.75 0 01-17.5 0zM12 4.75a7.25 7.25 0 100 14.5 7.25 7.25 0 000-14.5zm-1.338 4.877c-.314.22-.412.452-.412.623 0 .171.098.403.412.623.312.218.783.377 1.338.377.825 0 1.605.233 2.198.648.59.414 1.052 1.057 1.052 1.852 0 .795-.461 1.438-1.052 1.852-.41.286-.907.486-1.448.582v.316a.75.75 0 01-1.5 0v-.316a3.64 3.64 0 01-1.448-.582c-.59-.414-1.052-1.057-1.052-1.852a.75.75 0 011.5 0c0 .171.098.403.412.623.312.218.783.377 1.338.377s1.026-.159 1.338-.377c.314-.22.412-.452.412-.623 0-.171-.098-.403-.412-.623-.312-.218-.783-.377-1.338-.377-.825 0-1.605-.233-2.198-.648-.59-.414-1.052-1.057-1.052-1.852 0-.795.461-1.438 1.052-1.852a3.64 3.64 0 011.448-.582V7.5a.75.75 0 011.5 0v.316c.54.096 1.039.296 1.448.582.59.414 1.052 1.057 1.052 1.852a.75.75 0 01-1.5 0c0-.171-.098-.403-.412-.623-.312-.218-.783-.377-1.338-.377s-1.026.159-1.338.377z"})})},42004:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M12 3.25a8.75 8.75 0 100 17.5 8.75 8.75 0 000-17.5zM4.75 12a7.25 7.25 0 1114.5 0 7.25 7.25 0 01-14.5 0zm9.195 1.944a2.75 2.75 0 01-4.066-.194h.621a.75.75 0 000-1.5H9.262a2.767 2.767 0 010-.5H11.5a.75.75 0 000-1.5H9.88a2.75 2.75 0 014.066-.194.75.75 0 001.06-1.061 4.25 4.25 0 00-6.88 1.255H7.5a.75.75 0 000 1.5h.258c-.01.166-.01.334 0 .5H7.5a.75.75 0 000 1.5h.626a4.25 4.25 0 006.88 1.255.75.75 0 00-1.06-1.06z"})})},93147:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",d:"M3.25 12a8.75 8.75 0 1117.5 0 8.75 8.75 0 01-17.5 0zM12 4.75a7.25 7.25 0 100 14.5 7.25 7.25 0 000-14.5zm.25 4c-.787 0-1.425.638-1.425 1.425 0 .058.014.147.069.3.04.113.088.223.147.36a26.094 26.094 0 01.173.415H12.5a.75.75 0 010 1.5h-.953c.002.047.003.095.003.144 0 .617-.236 1.168-.511 1.606h3.386a.75.75 0 010 1.5H9.35a.75.75 0 01-.452-1.349l.007-.005a4.417 4.417 0 00.596-.581c.328-.39.549-.806.549-1.171 0-.05-.002-.097-.004-.144H9.5a.75.75 0 010-1.5h.088a5.875 5.875 0 01-.106-.27 2.382 2.382 0 01-.157-.805 2.925 2.925 0 015.637-1.097.75.75 0 01-1.39.563 1.426 1.426 0 00-1.322-.891zm-3.35 5.9l.45.6-.45-.6z"})})},77617:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M12.5 14.5h-1V16h1c2.2 0 4-1.8 4-4s-1.8-4-4-4h-1v1.5h1c1.4 0 2.5 1.1 2.5 2.5s-1.1 2.5-2.5 2.5zm-4 1.5v-1.5h-1C6.1 14.5 5 13.4 5 12s1.1-2.5 2.5-2.5h1V8h-1c-2.2 0-4 1.8-4 4s1.8 4 4 4h1zm-1-3.2h5v-1.5h-5v1.5zM18 4H9c-1.1 0-2 .9-2 2v.5h1.5V6c0-.3.2-.5.5-.5h9c.3 0 .5.2.5.5v12c0 .3-.2.5-.5.5H9c-.3 0-.5-.2-.5-.5v-.5H7v.5c0 1.1.9 2 2 2h9c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2z"})})},82268:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M4 20h9v-1.5H4V20zm0-5.5V16h16v-1.5H4zm.8-4l.7.7 2-2V12h1V9.2l2 2 .7-.7-2-2H12v-1H9.2l2-2-.7-.7-2 2V4h-1v2.8l-2-2-.7.7 2 2H4v1h2.8l-2 2z"})})},93115:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M20.5 16h-.7V8c0-1.1-.9-2-2-2H6.2c-1.1 0-2 .9-2 2v8h-.7c-.8 0-1.5.7-1.5 1.5h20c0-.8-.7-1.5-1.5-1.5zM5.7 8c0-.3.2-.5.5-.5h11.6c.3 0 .5.2.5.5v7.6H5.7V8z"})})},57189:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsxs)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,o.jsx)(r.Path,{d:"M4 16h10v1.5H4V16Zm0-4.5h16V13H4v-1.5ZM10 7h10v1.5H10V7Z",fillRule:"evenodd",clipRule:"evenodd"}),(0,o.jsx)(r.Path,{d:"m4 5.25 4 2.5-4 2.5v-5Z"})]})},16307:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M18 11.3l-1-1.1-4 4V3h-1.5v11.3L7 10.2l-1 1.1 6.2 5.8 5.8-5.8zm.5 3.7v3.5h-13V15H4v5h16v-5h-1.5z"})})},6291:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm8 4a4 4 0 0 0 4-4H8a4 4 0 0 0 4 4Z"})})},69828:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{width:"24",height:"24",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M8 7h2V5H8v2zm0 6h2v-2H8v2zm0 6h2v-2H8v2zm6-14v2h2V5h-2zm0 8h2v-2h-2v2zm0 6h2v-2h-2v2z"})})},86198:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{width:"24",height:"24",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M18 4H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zM8.5 18.5H6c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h2.5v13zm10-.5c0 .3-.2.5-.5.5h-8v-13h8c.3 0 .5.2.5.5v12z"})})},37057:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{width:"24",height:"24",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M18 4H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-4 14.5H6c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h8v13zm4.5-.5c0 .3-.2.5-.5.5h-2.5v-13H18c.3 0 .5.2.5.5v12z"})})},92687:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r=a(78938).A},42663:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M3 7c0-1.1.9-2 2-2h14a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7Zm2-.5h14c.3 0 .5.2.5.5v1L12 13.5 4.5 7.9V7c0-.3.2-.5.5-.5Zm-.5 3.3V17c0 .3.2.5.5.5h14c.3 0 .5-.2.5-.5V9.8L12 15.4 4.5 9.8Z"})})},74117:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12.218 5.377a.25.25 0 0 0-.436 0l-7.29 12.96a.25.25 0 0 0 .218.373h14.58a.25.25 0 0 0 .218-.372l-7.29-12.96Zm-1.743-.735c.669-1.19 2.381-1.19 3.05 0l7.29 12.96a1.75 1.75 0 0 1-1.525 2.608H4.71a1.75 1.75 0 0 1-1.525-2.608l7.29-12.96ZM12.75 17.46h-1.5v-1.5h1.5v1.5Zm-1.5-3h1.5v-5h-1.5v5Z"})})},53512:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M19.5 4.5h-7V6h4.44l-5.97 5.97 1.06 1.06L18 7.06v4.44h1.5v-7Zm-13 1a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-3H17v3a.5.5 0 0 1-.5.5h-10a.5.5 0 0 1-.5-.5v-10a.5.5 0 0 1 .5-.5h3V5.5h-3Z"})})},18293:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12.848 8a1 1 0 0 1-.914-.594l-.723-1.63a.5.5 0 0 0-.447-.276H5a.5.5 0 0 0-.5.5v11.5a.5.5 0 0 0 .5.5h14a.5.5 0 0 0 .5-.5v-9A.5.5 0 0 0 19 8h-6.152Zm.612-1.5a.5.5 0 0 1-.462-.31l-.445-1.084A2 2 0 0 0 10.763 4H5a2 2 0 0 0-2 2v11.5a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2h-5.54Z"})})},15433:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M12 4 4 19h16L12 4zm0 3.2 5.5 10.3H12V7.2z"})})},51517:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M4 6v12c0 1.1.9 2 2 2h3v-1.5H6c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h3V4H6c-1.1 0-2 .9-2 2zm7.2 16h1.5V2h-1.5v20zM15 5.5h1.5V4H15v1.5zm3.5.5H20c0-1.1-.9-2-2-2v1.5c.3 0 .5.2.5.5zm0 10.5H20v-2h-1.5v2zm0-3.5H20v-2h-1.5v2zm-.5 5.5V20c1.1 0 2-.9 2-2h-1.5c0 .3-.2.5-.5.5zM15 20h1.5v-1.5H15V20zm3.5-10.5H20v-2h-1.5v2z"})})},67448:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M2 11.2v1.5h20v-1.5H2zM5.5 6c0-.3.2-.5.5-.5h12c.3 0 .5.2.5.5v3H20V6c0-1.1-.9-2-2-2H6c-1.1 0-2 .9-2 2v3h1.5V6zm2 14h2v-1.5h-2V20zm3.5 0h2v-1.5h-2V20zm7-1.5V20c1.1 0 2-.9 2-2h-1.5c0 .3-.2.5-.5.5zm.5-2H20V15h-1.5v1.5zM5.5 18H4c0 1.1.9 2 2 2v-1.5c-.3 0-.5-.2-.5-.5zm0-3H4v1.5h1.5V15zm9 5h2v-1.5h-2V20z"})})},96252:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",d:"M18 5.5h-8v8h8.5V6a.5.5 0 00-.5-.5zm-9.5 8h-3V6a.5.5 0 01.5-.5h2.5v8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z"})})},7490:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M14.7 11.3c1-.6 1.5-1.6 1.5-3 0-2.3-1.3-3.4-4-3.4H7v14h5.8c1.4 0 2.5-.3 3.3-1 .8-.7 1.2-1.7 1.2-2.9.1-1.9-.8-3.1-2.6-3.7zm-5.1-4h2.3c.6 0 1.1.1 1.4.4.3.3.5.7.5 1.2s-.2 1-.5 1.2c-.3.3-.8.4-1.4.4H9.6V7.3zm4.6 9c-.4.3-1 .4-1.7.4H9.6v-3.9h2.9c.7 0 1.3.2 1.7.5.4.3.6.8.6 1.5s-.2 1.2-.6 1.5z"})})},1135:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M7.1 6.8L3.1 18h1.6l1.1-3h4.3l1.1 3h1.6l-4-11.2H7.1zm-.8 6.8L8 8.9l1.7 4.7H6.3zm14.5-1.5c-.3-.6-.7-1.1-1.2-1.5-.6-.4-1.2-.6-1.9-.6-.5 0-.9.1-1.4.3-.4.2-.8.5-1.1.8V6h-1.4v12h1.3l.2-1c.2.4.6.6 1 .8.4.2.9.3 1.4.3.7 0 1.2-.2 1.8-.5.5-.4 1-.9 1.3-1.5.3-.6.5-1.3.5-2.1-.1-.6-.2-1.3-.5-1.9zm-1.7 4c-.4.5-.9.8-1.6.8s-1.2-.2-1.7-.7c-.4-.5-.7-1.2-.7-2.1 0-.9.2-1.6.7-2.1.4-.5 1-.7 1.7-.7s1.2.3 1.6.8c.4.5.6 1.2.6 2 .1.8-.2 1.4-.6 2z"})})},69992:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M20 5.5H4V4H20V5.5ZM12 12.5H4V11H12V12.5ZM20 20V18.5H4V20H20ZM20.0303 9.03033L17.0607 12L20.0303 14.9697L18.9697 16.0303L15.4697 12.5303L14.9393 12L15.4697 11.4697L18.9697 7.96967L20.0303 9.03033Z"})})},3571:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M4 7.2v1.5h16V7.2H4zm8 8.6h8v-1.5h-8v1.5zm-8-3.5l3 3-3 3 1 1 4-4-4-4-1 1z"})})},64125:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M12.5 5L10 19h1.9l2.5-14z"})})},53730:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M4 8.8h8.9V7.2H4v1.6zm0 7h8.9v-1.5H4v1.5zM18 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z"})})},89761:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M11.1 15.8H20v-1.5h-8.9v1.5zm0-8.6v1.5H20V7.2h-8.9zM6 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"})})},53117:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M3.8 15.8h8.9v-1.5H3.8v1.5zm0-7h8.9V7.2H3.8v1.6zm14.7-2.1V10h1V5.3l-2.2.7.3 1 .9-.3zm1.2 6.1c-.5-.6-1.2-.5-1.7-.4-.3.1-.5.2-.7.3l.1 1.1c.2-.2.5-.4.8-.5.3-.1.6 0 .7.1.2.3 0 .8-.2 1.1-.5.8-.9 1.6-1.4 2.5H20v-1h-.9c.3-.6.8-1.4.9-2.1 0-.3 0-.8-.3-1.1z"})})},93346:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M11.1 15.8H20v-1.5h-8.9v1.5zm0-8.6v1.5H20V7.2h-8.9zM5 6.7V10h1V5.3L3.8 6l.4 1 .8-.3zm-.4 5.7c-.3.1-.5.2-.7.3l.1 1.1c.2-.2.5-.4.8-.5.3-.1.6 0 .7.1.2.3 0 .8-.2 1.1-.5.8-.9 1.6-1.4 2.5h2.7v-1h-1c.3-.6.8-1.4.9-2.1.1-.3 0-.8-.2-1.1-.5-.6-1.3-.5-1.7-.4z"})})},60996:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M11 16.8c-.1-.1-.2-.3-.3-.5v-2.6c0-.9-.1-1.7-.3-2.2-.2-.5-.5-.9-.9-1.2-.4-.2-.9-.3-1.6-.3-.5 0-1 .1-1.5.2s-.9.3-1.2.6l.2 1.2c.4-.3.7-.4 1.1-.5.3-.1.7-.2 1-.2.6 0 1 .1 1.3.4.3.2.4.7.4 1.4-1.2 0-2.3.2-3.3.7s-1.4 1.1-1.4 2.1c0 .7.2 1.2.7 1.6.4.4 1 .6 1.8.6.9 0 1.7-.4 2.4-1.2.1.3.2.5.4.7.1.2.3.3.6.4.3.1.6.1 1.1.1h.1l.2-1.2h-.1c-.4.1-.6 0-.7-.1zM9.2 16c-.2.3-.5.6-.9.8-.3.1-.7.2-1.1.2-.4 0-.7-.1-.9-.3-.2-.2-.3-.5-.3-.9 0-.6.2-1 .7-1.3.5-.3 1.3-.4 2.5-.5v2zm10.6-3.9c-.3-.6-.7-1.1-1.2-1.5-.6-.4-1.2-.6-1.9-.6-.5 0-.9.1-1.4.3-.4.2-.8.5-1.1.8V6h-1.4v12h1.3l.2-1c.2.4.6.6 1 .8.4.2.9.3 1.4.3.7 0 1.2-.2 1.8-.5.5-.4 1-.9 1.3-1.5.3-.6.5-1.3.5-2.1-.1-.6-.2-1.3-.5-1.9zm-1.7 4c-.4.5-.9.8-1.6.8s-1.2-.2-1.7-.7c-.4-.5-.7-1.2-.7-2.1 0-.9.2-1.6.7-2.1.4-.5 1-.7 1.7-.7s1.2.3 1.6.8c.4.5.6 1.2.6 2s-.2 1.4-.6 2z"})})},34083:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"-2 -2 24 24",children:(0,o.jsx)(r.Path,{d:"M5.52 2h7.43c.55 0 1 .45 1 1s-.45 1-1 1h-1v13c0 .55-.45 1-1 1s-1-.45-1-1V5c0-.55-.45-1-1-1s-1 .45-1 1v12c0 .55-.45 1-1 1s-1-.45-1-1v-5.96h-.43C3.02 11.04 1 9.02 1 6.52S3.02 2 5.52 2zM14 14l5-4-5-4v8z"})})},86707:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M20 5.5H4V4H20V5.5ZM12 12.5H4V11H12V12.5ZM20 20V18.5H4V20H20ZM15.4697 14.9697L18.4393 12L15.4697 9.03033L16.5303 7.96967L20.0303 11.4697L20.5607 12L20.0303 12.5303L16.5303 16.0303L15.4697 14.9697Z"})})},70868:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M4 7.2v1.5h16V7.2H4zm8 8.6h8v-1.5h-8v1.5zm-4-4.6l-4 4 4 4 1-1-3-3 3-3-1-1z"})})},89387:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"-2 -2 24 24",children:(0,o.jsx)(r.Path,{d:"M5.52 2h7.43c.55 0 1 .45 1 1s-.45 1-1 1h-1v13c0 .55-.45 1-1 1s-1-.45-1-1V5c0-.55-.45-1-1-1s-1 .45-1 1v12c0 .55-.45 1-1 1s-1-.45-1-1v-5.96h-.43C3.02 11.04 1 9.02 1 6.52S3.02 2 5.52 2zM19 6l-5 4 5 4V6zM5.52 2h7.43c.55 0 1 .45 1 1s-.45 1-1 1h-1v13c0 .55-.45 1-1 1s-1-.45-1-1V5c0-.55-.45-1-1-1s-1 .45-1 1v12c0 .55-.45 1-1 1s-1-.45-1-1v-5.96h-.43C3.02 11.04 1 9.02 1 6.52S3.02 2 5.52 2zM19 6l-5 4 5 4V6z"})})},60550:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M9.1 9v-.5c0-.6.2-1.1.7-1.4.5-.3 1.2-.5 2-.5.7 0 1.4.1 2.1.3.7.2 1.4.5 2.1.9l.2-1.9c-.6-.3-1.2-.5-1.9-.7-.8-.1-1.6-.2-2.4-.2-1.5 0-2.7.3-3.6 1-.8.7-1.2 1.5-1.2 2.6V9h2zM20 12H4v1h8.3c.3.1.6.2.8.3.5.2.9.5 1.1.8.3.3.4.7.4 1.2 0 .7-.2 1.1-.8 1.5-.5.3-1.2.5-2.1.5-.8 0-1.6-.1-2.4-.3-.8-.2-1.5-.5-2.2-.8L7 18.1c.5.2 1.2.4 2 .6.8.2 1.6.3 2.4.3 1.7 0 3-.3 3.9-1 .9-.7 1.3-1.6 1.3-2.8 0-.9-.2-1.7-.7-2.2H20v-1z"})})},18701:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M7 18v1h10v-1H7zm5-2c1.5 0 2.6-.4 3.4-1.2.8-.8 1.1-2 1.1-3.5V5H15v5.8c0 1.2-.2 2.1-.6 2.8-.4.7-1.2 1-2.4 1s-2-.3-2.4-1c-.4-.7-.6-1.6-.6-2.8V5H7.5v6.2c0 1.5.4 2.7 1.1 3.5.8.9 1.9 1.3 3.4 1.3z"})})},80145:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M6.1 6.8L2.1 18h1.6l1.1-3h4.3l1.1 3h1.6l-4-11.2H6.1zm-.8 6.8L7 8.9l1.7 4.7H5.3zm15.1-.7c-.4-.5-.9-.8-1.6-1 .4-.2.7-.5.8-.9.2-.4.3-.9.3-1.4 0-.9-.3-1.6-.8-2-.6-.5-1.3-.7-2.4-.7h-3.5V18h4.2c1.1 0 2-.3 2.6-.8.6-.6 1-1.4 1-2.4-.1-.8-.3-1.4-.6-1.9zm-5.7-4.7h1.8c.6 0 1.1.1 1.4.4.3.2.5.7.5 1.3 0 .6-.2 1.1-.5 1.3-.3.2-.8.4-1.4.4h-1.8V8.2zm4 8c-.4.3-.9.5-1.5.5h-2.6v-3.8h2.6c1.4 0 2 .6 2 1.9.1.6-.1 1-.5 1.4z"})})},39662:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M6 4a2 2 0 0 0-2 2v3h1.5V6a.5.5 0 0 1 .5-.5h3V4H6Zm3 14.5H6a.5.5 0 0 1-.5-.5v-3H4v3a2 2 0 0 0 2 2h3v-1.5Zm6 1.5v-1.5h3a.5.5 0 0 0 .5-.5v-3H20v3a2 2 0 0 1-2 2h-3Zm3-16a2 2 0 0 1 2 2v3h-1.5V6a.5.5 0 0 0-.5-.5h-3V4h3Z"})})},8679:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M10 17.5H14V16H10V17.5ZM6 6V7.5H18V6H6ZM8 12.5H16V11H8V12.5Z"})})},28541:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M16.375 4.5H4.625a.125.125 0 0 0-.125.125v8.254l2.859-1.54a.75.75 0 0 1 .68-.016l2.384 1.142 2.89-2.074a.75.75 0 0 1 .874 0l2.313 1.66V4.625a.125.125 0 0 0-.125-.125Zm.125 9.398-2.75-1.975-2.813 2.02a.75.75 0 0 1-.76.067l-2.444-1.17L4.5 14.583v1.792c0 .069.056.125.125.125h11.75a.125.125 0 0 0 .125-.125v-2.477ZM4.625 3C3.728 3 3 3.728 3 4.625v11.75C3 17.273 3.728 18 4.625 18h11.75c.898 0 1.625-.727 1.625-1.625V4.625C18 3.728 17.273 3 16.375 3H4.625ZM20 8v11c0 .69-.31 1-.999 1H6v1.5h13.001c1.52 0 2.499-.982 2.499-2.5V8H20Z",fillRule:"evenodd",clipRule:"evenodd"})})},84066:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M12 3.3c-4.8 0-8.8 3.9-8.8 8.8 0 4.8 3.9 8.8 8.8 8.8 4.8 0 8.8-3.9 8.8-8.8s-4-8.8-8.8-8.8zm6.5 5.5h-2.6C15.4 7.3 14.8 6 14 5c2 .6 3.6 2 4.5 3.8zm.7 3.2c0 .6-.1 1.2-.2 1.8h-2.9c.1-.6.1-1.2.1-1.8s-.1-1.2-.1-1.8H19c.2.6.2 1.2.2 1.8zM12 18.7c-1-.7-1.8-1.9-2.3-3.5h4.6c-.5 1.6-1.3 2.9-2.3 3.5zm-2.6-4.9c-.1-.6-.1-1.1-.1-1.8 0-.6.1-1.2.1-1.8h5.2c.1.6.1 1.1.1 1.8s-.1 1.2-.1 1.8H9.4zM4.8 12c0-.6.1-1.2.2-1.8h2.9c-.1.6-.1 1.2-.1 1.8 0 .6.1 1.2.1 1.8H5c-.2-.6-.2-1.2-.2-1.8zM12 5.3c1 .7 1.8 1.9 2.3 3.5H9.7c.5-1.6 1.3-2.9 2.3-3.5zM10 5c-.8 1-1.4 2.3-1.8 3.8H5.5C6.4 7 8 5.6 10 5zM5.5 15.3h2.6c.4 1.5 1 2.8 1.8 3.7-1.8-.6-3.5-2-4.4-3.7zM14 19c.8-1 1.4-2.2 1.8-3.7h2.6C17.6 17 16 18.4 14 19z"})})},71651:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"m3 5c0-1.10457.89543-2 2-2h13.5c1.1046 0 2 .89543 2 2v13.5c0 1.1046-.8954 2-2 2h-13.5c-1.10457 0-2-.8954-2-2zm2-.5h6v6.5h-6.5v-6c0-.27614.22386-.5.5-.5zm-.5 8v6c0 .2761.22386.5.5.5h6v-6.5zm8 0v6.5h6c.2761 0 .5-.2239.5-.5v-6zm0-8v6.5h6.5v-6c0-.27614-.2239-.5-.5-.5z",fillRule:"evenodd",clipRule:"evenodd"})})},36844:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M18 4h-7c-1.1 0-2 .9-2 2v3H6c-1.1 0-2 .9-2 2v7c0 1.1.9 2 2 2h7c1.1 0 2-.9 2-2v-3h3c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm-4.5 14c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5v-7c0-.3.2-.5.5-.5h3V13c0 1.1.9 2 2 2h2.5v3zm0-4.5H11c-.3 0-.5-.2-.5-.5v-2.5H13c.3 0 .5.2.5.5v2.5zm5-.5c0 .3-.2.5-.5.5h-3V11c0-1.1-.9-2-2-2h-2.5V6c0-.3.2-.5.5-.5h7c.3 0 .5.2.5.5v7z"})})},40693:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M7 16.5h10V15H7v1.5zm0-9V9h10V7.5H7z"})})},4282:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M18.5 10.5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z"})})},88576:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M17.6 7c-.6.9-1.5 1.7-2.6 2v1h2v7h2V7h-1.4zM11 11H7V7H5v10h2v-4h4v4h2V7h-2v4z"})})},99577:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M9 11.1H5v-4H3v10h2v-4h4v4h2v-10H9v4zm8 4c.5-.4.6-.6 1.1-1.1.4-.4.8-.8 1.2-1.3.3-.4.6-.8.9-1.3.2-.4.3-.8.3-1.3 0-.4-.1-.9-.3-1.3-.2-.4-.4-.7-.8-1-.3-.3-.7-.5-1.2-.6-.5-.2-1-.2-1.5-.2-.4 0-.7 0-1.1.1-.3.1-.7.2-1 .3-.3.1-.6.3-.9.5-.3.2-.6.4-.8.7l1.2 1.2c.3-.3.6-.5 1-.7.4-.2.7-.3 1.2-.3s.9.1 1.3.4c.3.3.5.7.5 1.1 0 .4-.1.8-.4 1.1-.3.5-.6.9-1 1.2-.4.4-1 .9-1.6 1.4-.6.5-1.4 1.1-2.2 1.6v1.5h8v-2H17z"})})},86794:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M9 11H5V7H3v10h2v-4h4v4h2V7H9v4zm11.3 1.7c-.4-.4-1-.7-1.6-.8v-.1c.6-.2 1.1-.5 1.5-.9.3-.4.5-.8.5-1.3 0-.4-.1-.8-.3-1.1-.2-.3-.5-.6-.8-.8-.4-.2-.8-.4-1.2-.5-.6-.1-1.1-.2-1.6-.2-.6 0-1.3.1-1.8.3s-1.1.5-1.6.9l1.2 1.4c.4-.2.7-.4 1.1-.6.3-.2.7-.3 1.1-.3.4 0 .8.1 1.1.3.3.2.4.5.4.8 0 .4-.2.7-.6.9-.7.3-1.5.5-2.2.4v1.6c.5 0 1 0 1.5.1.3.1.7.2 1 .3.2.1.4.2.5.4s.1.4.1.6c0 .3-.2.7-.5.8-.4.2-.9.3-1.4.3s-1-.1-1.4-.3c-.4-.2-.8-.4-1.2-.7L13 15.6c.5.4 1 .8 1.6 1 .7.3 1.5.4 2.3.4.6 0 1.1-.1 1.6-.2.4-.1.9-.2 1.3-.5.4-.2.7-.5.9-.9.2-.4.3-.8.3-1.2 0-.6-.3-1.1-.7-1.5z"})})},6835:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M20 13V7h-3l-4 6v2h5v2h2v-2h1v-2h-1zm-2 0h-2.8L18 9v4zm-9-2H5V7H3v10h2v-4h4v4h2V7H9v4z"})})},98732:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M9 11H5V7H3v10h2v-4h4v4h2V7H9v4zm11.7 1.2c-.2-.3-.5-.7-.8-.9-.3-.3-.7-.5-1.1-.6-.5-.1-.9-.2-1.4-.2-.2 0-.5.1-.7.1-.2.1-.5.1-.7.2l.1-1.9h4.3V7H14l-.3 5 1 .6.5-.2.4-.1c.1-.1.3-.1.4-.1h.5c.5 0 1 .1 1.4.4.4.2.6.7.6 1.1 0 .4-.2.8-.6 1.1-.4.3-.9.4-1.4.4-.4 0-.9-.1-1.3-.3-.4-.2-.7-.4-1.1-.7 0 0-1.1 1.4-1 1.5.5.4 1 .8 1.6 1 .7.3 1.5.4 2.3.4.5 0 1-.1 1.5-.3s.9-.4 1.3-.7c.4-.3.7-.7.9-1.1s.3-.9.3-1.4-.1-1-.3-1.4z"})})},5429:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M20.7 12.4c-.2-.3-.4-.6-.7-.9s-.6-.5-1-.6c-.4-.2-.8-.2-1.2-.2-.5 0-.9.1-1.3.3s-.8.5-1.2.8c0-.5 0-.9.2-1.4l.6-.9c.2-.2.5-.4.8-.5.6-.2 1.3-.2 1.9 0 .3.1.6.3.8.5 0 0 1.3-1.3 1.3-1.4-.4-.3-.9-.6-1.4-.8-.6-.2-1.3-.3-2-.3-.6 0-1.1.1-1.7.4-.5.2-1 .5-1.4.9-.4.4-.8 1-1 1.6-.3.7-.4 1.5-.4 2.3s.1 1.5.3 2.1c.2.6.6 1.1 1 1.5.4.4.9.7 1.4.9 1 .3 2 .3 3 0 .4-.1.8-.3 1.2-.6.3-.3.6-.6.8-1 .2-.5.3-.9.3-1.4s-.1-.9-.3-1.3zm-2 2.1c-.1.2-.3.4-.4.5-.1.1-.3.2-.5.2-.2.1-.4.1-.6.1-.2.1-.5 0-.7-.1-.2 0-.3-.2-.5-.3-.1-.2-.3-.4-.4-.6-.2-.3-.3-.7-.3-1 .3-.3.6-.5 1-.7.3-.1.7-.2 1-.2.4 0 .8.1 1.1.3.3.3.4.7.4 1.1 0 .2 0 .5-.1.7zM9 11H5V7H3v10h2v-4h4v4h2V7H9v4z"})})},96925:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M6 5V18.5911L12 13.8473L18 18.5911V5H6Z"})})},2453:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"24",height:"24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm-1 16v-2h2v2h-2zm2-3v-1.141A3.991 3.991 0 0016 10a4 4 0 00-8 0h2c0-1.103.897-2 2-2s2 .897 2 2-.897 2-2 2a1 1 0 00-1 1v2h2z"})})},10748:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M12 4.75a7.25 7.25 0 100 14.5 7.25 7.25 0 000-14.5zM3.25 12a8.75 8.75 0 1117.5 0 8.75 8.75 0 01-17.5 0zM12 8.75a1.5 1.5 0 01.167 2.99c-.465.052-.917.44-.917 1.01V14h1.5v-.845A3 3 0 109 10.25h1.5a1.5 1.5 0 011.5-1.5zM11.25 15v1.5h1.5V15h-1.5z"})})},14365:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M4.25 7A2.75 2.75 0 0 1 7 4.25h10A2.75 2.75 0 0 1 19.75 7v10A2.75 2.75 0 0 1 17 19.75H7A2.75 2.75 0 0 1 4.25 17V7ZM7 5.75c-.69 0-1.25.56-1.25 1.25v10c0 .69.56 1.25 1.25 1.25h10c.69 0 1.25-.56 1.25-1.25V7c0-.69-.56-1.25-1.25-1.25H7Z"})})},13400:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M12 4L4 7.9V20h16V7.9L12 4zm6.5 14.5H14V13h-4v5.5H5.5V8.8L12 5.7l6.5 3.1v9.7z"})})},88074:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M4.8 11.4H2.1V9H1v6h1.1v-2.6h2.7V15h1.1V9H4.8v2.4zm1.9-1.3h1.7V15h1.1v-4.9h1.7V9H6.7v1.1zM16.2 9l-1.5 2.7L13.3 9h-.9l-.8 6h1.1l.5-4 1.5 2.8 1.5-2.8.5 4h1.1L17 9h-.8zm3.8 5V9h-1.1v6h3.6v-1H20z"})})},95938:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM5 4.5h14c.3 0 .5.2.5.5v8.4l-3-2.9c-.3-.3-.8-.3-1 0L11.9 14 9 12c-.3-.2-.6-.2-.8 0l-3.6 2.6V5c-.1-.3.1-.5.4-.5zm14 15H5c-.3 0-.5-.2-.5-.5v-2.4l4.1-3 3 1.9c.3.2.7.2.9-.1L16 12l3.5 3.4V19c0 .3-.2.5-.5.5z"})})},34259:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",d:"M6 5.5h12a.5.5 0 01.5.5v7H14a2 2 0 11-4 0H5.5V6a.5.5 0 01.5-.5zm-.5 9V18a.5.5 0 00.5.5h12a.5.5 0 00.5-.5v-3.5h-3.337a3.5 3.5 0 01-6.326 0H5.5zM4 13V6a2 2 0 012-2h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2v-5z",clipRule:"evenodd"})})},19783:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M5.5 12a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0ZM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16Zm.75 4v1.5h-1.5V8h1.5Zm0 8v-5h-1.5v5h1.5Z"})})},65545:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"-2 -2 24 24",children:(0,o.jsx)(r.Path,{d:"M9 12h2v-2h2V8h-2V6H9v2H7v2h2v2zm1 4c3.9 0 7-3.1 7-7s-3.1-7-7-7-7 3.1-7 7 3.1 7 7 7zm0-12c2.8 0 5 2.2 5 5s-2.2 5-5 5-5-2.2-5-5 2.2-5 5-5zM3 19h14v-2H3v2z"})})},53916:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"-2 -2 24 24",children:(0,o.jsx)(r.Path,{d:"M11 8H9v2H7v2h2v2h2v-2h2v-2h-2V8zm-1-4c-3.9 0-7 3.1-7 7s3.1 7 7 7 7-3.1 7-7-3.1-7-7-7zm0 12c-2.8 0-5-2.2-5-5s2.2-5 5-5 5 2.2 5 5-2.2 5-5 5zM3 1v2h14V1H3z"})})},78329:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",d:"M18.646 9H20V8l-1-.5L12 4 5 7.5 4 8v1h14.646zm-3-1.5L12 5.677 8.354 7.5h7.292zm-7.897 9.44v-6.5h-1.5v6.5h1.5zm5-6.5v6.5h-1.5v-6.5h1.5zm5 0v6.5h-1.5v-6.5h1.5zm2.252 8.81c0 .414-.334.75-.748.75H4.752a.75.75 0 010-1.5h14.5a.75.75 0 01.749.75z",clipRule:"evenodd"})})},98339:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M15 4H9v11h6V4zM4 18.5V20h16v-1.5H4z"})})},35980:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M20 11h-5V4H9v7H4v1.5h5V20h6v-7.5h5z"})})},11177:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M12.5 15v5H11v-5H4V9h7V4h1.5v5h7v6h-7Z"})})},51349:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M9 9v6h11V9H9zM4 20h1.5V4H4v16z"})})},96692:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M4 15h11V9H4v6zM18.5 4v16H20V4h-1.5z"})})},99556:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M7 4H17V8L7 8V4ZM7 16L17 16V20L7 20V16ZM20 11.25H4V12.75H20V11.25Z"})})},53057:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M9 15h6V9H9v6zm-5 5h1.5V4H4v16zM18.5 4v16H20V4h-1.5z"})})},59210:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M4 4L20 4L20 5.5L4 5.5L4 4ZM10 7L14 7L14 17L10 17L10 7ZM20 18.5L4 18.5L4 20L20 20L20 18.5Z"})})},75911:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M4 4H5.5V20H4V4ZM7 10L17 10V14L7 14V10ZM20 4H18.5V20H20V4Z"})})},81037:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M9 20h6V9H9v11zM4 4v1.5h16V4H4z"})})},72896:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M9 13.5a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM9 16a4.002 4.002 0 003.8-2.75H15V16h2.5v-2.75H19v-2.5h-6.2A4.002 4.002 0 005 12a4 4 0 004 4z",fillRule:"evenodd",clipRule:"evenodd"})})},95855:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"-2 -2 24 24",children:(0,o.jsx)(r.Path,{d:"M18,0 L2,0 C0.9,0 0.01,0.9 0.01,2 L0,12 C0,13.1 0.9,14 2,14 L18,14 C19.1,14 20,13.1 20,12 L20,2 C20,0.9 19.1,0 18,0 Z M18,12 L2,12 L2,2 L18,2 L18,12 Z M9,3 L11,3 L11,5 L9,5 L9,3 Z M9,6 L11,6 L11,8 L9,8 L9,6 Z M6,3 L8,3 L8,5 L6,5 L6,3 Z M6,6 L8,6 L8,8 L6,8 L6,6 Z M3,6 L5,6 L5,8 L3,8 L3,6 Z M3,3 L5,3 L5,5 L3,5 L3,3 Z M6,9 L14,9 L14,11 L6,11 L6,9 Z M12,6 L14,6 L14,8 L12,8 L12,6 Z M12,3 L14,3 L14,5 L12,5 L12,3 Z M15,6 L17,6 L17,8 L15,8 L15,6 Z M15,3 L17,3 L17,5 L15,5 L15,3 Z M10,20 L14,16 L6,16 L10,20 Z"})})},76277:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"m6.734 16.106 2.176-2.38-1.093-1.028-3.846 4.158 3.846 4.158 1.093-1.028-2.176-2.38h2.811c1.125 0 2.25.03 3.374 0 1.428-.001 3.362-.25 4.963-1.277 1.66-1.065 2.868-2.906 2.868-5.859 0-2.479-1.327-4.896-3.65-5.93-1.82-.813-3.044-.8-4.806-.788l-.567.002v1.5c.184 0 .368 0 .553-.002 1.82-.007 2.704-.014 4.21.657 1.854.827 2.76 2.657 2.76 4.561 0 2.472-.973 3.824-2.178 4.596-1.258.807-2.864 1.04-4.163 1.04h-.02c-1.115.03-2.229 0-3.344 0H6.734Z"})})},33602:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsxs)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[(0,o.jsx)(r.Path,{d:"m16 15.5h-8v-1.5h8zm-7.5-2.5h-2v-2h2zm3 0h-2v-2h2zm3 0h-2v-2h2zm3 0h-2v-2h2zm-9-3h-2v-2h2zm3 0h-2v-2h2zm3 0h-2v-2h2zm3 0h-2v-2h2z"}),(0,o.jsx)(r.Path,{d:"m18.5 6.5h-13a.5.5 0 0 0 -.5.5v9.5a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-9.5a.5.5 0 0 0 -.5-.5zm-13-1.5h13a2 2 0 0 1 2 2v9.5a2 2 0 0 1 -2 2h-13a2 2 0 0 1 -2-2v-9.5a2 2 0 0 1 2-2z"})]})},65281:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M17.5 10h-1.7l-3.7 10.5h1.7l.9-2.6h3.9l.9 2.6h1.7L17.5 10zm-2.2 6.3 1.4-4 1.4 4h-2.8zm-4.8-3.8c1.6-1.8 2.9-3.6 3.7-5.7H16V5.2h-5.8V3H8.8v2.2H3v1.5h9.6c-.7 1.6-1.8 3.1-3.1 4.6C8.6 10.2 7.8 9 7.2 8H5.6c.6 1.4 1.7 2.9 2.9 4.4l-2.4 2.4c-.3.4-.7.8-1.1 1.2l1 1 1.2-1.2c.8-.8 1.6-1.5 2.3-2.3.8.9 1.7 1.7 2.5 2.5l.6-1.5c-.7-.6-1.4-1.3-2.1-2z"})})},20757:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z"})})},11871:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"m13.53 8.47-1.06 1.06-2.72-2.72V12h-1.5V6.81L5.53 9.53 4.47 8.47 9 3.94l4.53 4.53Zm-1.802 7.968c1.307.697 3.235.812 5.772.812v1.5c-2.463 0-4.785-.085-6.478-.988a4.721 4.721 0 0 1-2.07-2.13C8.48 14.67 8.25 13.471 8.25 12h1.5c0 1.328.208 2.28.548 2.969.332.675.81 1.138 1.43 1.47Z"})})},41496:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",d:"M17.375 15.656A6.47 6.47 0 0018.5 12a6.47 6.47 0 00-.943-3.374l-1.262.813c.448.749.705 1.625.705 2.561a4.977 4.977 0 01-.887 2.844l1.262.813zm-1.951 1.87l-.813-1.261A4.976 4.976 0 0112 17c-.958 0-1.852-.27-2.613-.736l-.812 1.261A6.47 6.47 0 0012 18.5a6.47 6.47 0 003.424-.974zm-8.8-1.87A6.47 6.47 0 015.5 12c0-1.235.344-2.39.943-3.373l1.261.812A4.977 4.977 0 007 12c0 1.056.328 2.036.887 2.843l-1.262.813zm2.581-7.803A4.977 4.977 0 0112 7c1.035 0 1.996.314 2.794.853l.812-1.262A6.47 6.47 0 0012 5.5a6.47 6.47 0 00-3.607 1.092l.812 1.261zM12 20a8 8 0 100-16 8 8 0 000 16zm0-4.5a3.5 3.5 0 100-7 3.5 3.5 0 000 7z",clipRule:"evenodd"})})},6055:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",d:"M5 11.25h3v1.5H5v-1.5zm5.5 0h3v1.5h-3v-1.5zm8.5 0h-3v1.5h3v-1.5z",clipRule:"evenodd"})})},6002:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",d:"M5.25 11.25h1.5v1.5h-1.5v-1.5zm3 0h1.5v1.5h-1.5v-1.5zm4.5 0h-1.5v1.5h1.5v-1.5zm1.5 0h1.5v1.5h-1.5v-1.5zm4.5 0h-1.5v1.5h1.5v-1.5z",clipRule:"evenodd"})})},10895:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M5 11.25h14v1.5H5z"})})},35855:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M17.031 4.703 15.576 4l-1.56 3H14v.03l-2.324 4.47H9.5V13h1.396l-1.502 2.889h-.95a3.694 3.694 0 0 1 0-7.389H10V7H8.444a5.194 5.194 0 1 0 0 10.389h.17L7.5 19.53l1.416.719L15.049 8.5h.507a3.694 3.694 0 0 1 0 7.39H14v1.5h1.556a5.194 5.194 0 0 0 .273-10.383l1.202-2.304Z"})})},87603:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M10 17.389H8.444A5.194 5.194 0 1 1 8.444 7H10v1.5H8.444a3.694 3.694 0 0 0 0 7.389H10v1.5ZM14 7h1.556a5.194 5.194 0 0 1 0 10.39H14v-1.5h1.556a3.694 3.694 0 0 0 0-7.39H14V7Zm-4.5 6h5v-1.5h-5V13Z"})})},62011:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M12 11v1.5h8V11h-8zm-6-1c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"})})},19601:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M3 6h11v1.5H3V6Zm3.5 5.5h11V13h-11v-1.5ZM21 17H10v1.5h11V17Z"})})},92011:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M4 4v1.5h16V4H4zm8 8.5h8V11h-8v1.5zM4 20h16v-1.5H4V20zm4-8c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2 2-.9 2-2z"})})},7827:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M17 10h-1.2V7c0-2.1-1.7-3.8-3.8-3.8-2.1 0-3.8 1.7-3.8 3.8v3H7c-.6 0-1 .4-1 1v8c0 .6.4 1 1 1h10c.6 0 1-.4 1-1v-8c0-.6-.4-1-1-1zM9.8 7c0-1.2 1-2.2 2.2-2.2 1.2 0 2.2 1 2.2 2.2v3H9.8V7zm6.7 11.5h-9v-7h9v7z"})})},47714:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M15 11h-.2V9c0-1.5-1.2-2.8-2.8-2.8S9.2 7.5 9.2 9v2H9c-.6 0-1 .4-1 1v4c0 .6.4 1 1 1h6c.6 0 1-.4 1-1v-4c0-.6-.4-1-1-1zm-1.8 0h-2.5V9c0-.7.6-1.2 1.2-1.2s1.2.6 1.2 1.2v2z"})})},84008:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M17 10h-1.2V7c0-2.1-1.7-3.8-3.8-3.8-2.1 0-3.8 1.7-3.8 3.8v3H7c-.6 0-1 .4-1 1v8c0 .6.4 1 1 1h10c.6 0 1-.4 1-1v-8c0-.6-.4-1-1-1zm-2.8 0H9.8V7c0-1.2 1-2.2 2.2-2.2s2.2 1 2.2 2.2v3z"})})},23250:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M11 14.5l1.1 1.1 3-3 .5-.5-.6-.6-3-3-1 1 1.7 1.7H5v1.5h7.7L11 14.5zM16.8 5h-7c-1.1 0-2 .9-2 2v1.5h1.5V7c0-.3.2-.5.5-.5h7c.3 0 .5.2.5.5v10c0 .3-.2.5-.5.5h-7c-.3 0-.5-.2-.5-.5v-1.5H7.8V17c0 1.1.9 2 2 2h7c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2z"})})},72525:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M18.1823 11.6392C18.1823 13.0804 17.0139 14.2487 15.5727 14.2487C14.3579 14.2487 13.335 13.4179 13.0453 12.2922L13.0377 12.2625L13.0278 12.2335L12.3985 10.377L12.3942 10.3785C11.8571 8.64997 10.246 7.39405 8.33961 7.39405C5.99509 7.39405 4.09448 9.29465 4.09448 11.6392C4.09448 13.9837 5.99509 15.8843 8.33961 15.8843C8.88499 15.8843 9.40822 15.781 9.88943 15.5923L9.29212 14.0697C8.99812 14.185 8.67729 14.2487 8.33961 14.2487C6.89838 14.2487 5.73003 13.0804 5.73003 11.6392C5.73003 10.1979 6.89838 9.02959 8.33961 9.02959C9.55444 9.02959 10.5773 9.86046 10.867 10.9862L10.8772 10.9836L11.4695 12.7311C11.9515 14.546 13.6048 15.8843 15.5727 15.8843C17.9172 15.8843 19.8178 13.9837 19.8178 11.6392C19.8178 9.29465 17.9172 7.39404 15.5727 7.39404C15.0287 7.39404 14.5066 7.4968 14.0264 7.6847L14.6223 9.20781C14.9158 9.093 15.2358 9.02959 15.5727 9.02959C17.0139 9.02959 18.1823 10.1979 18.1823 11.6392Z"})})},50828:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M12 9c-.8 0-1.5.7-1.5 1.5S11.2 12 12 12s1.5-.7 1.5-1.5S12.8 9 12 9zm0-5c-3.6 0-6.5 2.8-6.5 6.2 0 .8.3 1.8.9 3.1.5 1.1 1.2 2.3 2 3.6.7 1 3 3.8 3.2 3.9l.4.5.4-.5c.2-.2 2.6-2.9 3.2-3.9.8-1.2 1.5-2.5 2-3.6.6-1.3.9-2.3.9-3.1C18.5 6.8 15.6 4 12 4zm4.3 8.7c-.5 1-1.1 2.2-1.9 3.4-.5.7-1.7 2.2-2.4 3-.7-.8-1.9-2.3-2.4-3-.8-1.2-1.4-2.3-1.9-3.3-.6-1.4-.7-2.2-.7-2.5 0-2.6 2.2-4.7 5-4.7s5 2.1 5 4.7c0 .2-.1 1-.7 2.4z"})})},83391:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M3 6v11.5h8V6H3Zm11 3h7V7.5h-7V9Zm7 3.5h-7V11h7v1.5ZM14 16h7v-1.5h-7V16Z"})})},21679:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsxs)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[(0,o.jsx)(r.Path,{d:"m7 6.5 4 2.5-4 2.5z"}),(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"m5 3c-1.10457 0-2 .89543-2 2v14c0 1.1046.89543 2 2 2h14c1.1046 0 2-.8954 2-2v-14c0-1.10457-.8954-2-2-2zm14 1.5h-14c-.27614 0-.5.22386-.5.5v10.7072l3.62953-2.6465c.25108-.1831.58905-.1924.84981-.0234l2.92666 1.8969 3.5712-3.4719c.2911-.2831.7545-.2831 1.0456 0l2.9772 2.8945v-9.3568c0-.27614-.2239-.5-.5-.5zm-14.5 14.5v-1.4364l4.09643-2.987 2.99567 1.9417c.2936.1903.6798.1523.9307-.0917l3.4772-3.3806 3.4772 3.3806.0228-.0234v2.5968c0 .2761-.2239.5-.5.5h-14c-.27614 0-.5-.2239-.5-.5z"})]})},8933:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",d:"M6.863 13.644L5 13.25h-.5a.5.5 0 01-.5-.5v-3a.5.5 0 01.5-.5H5L18 6.5h2V16h-2l-3.854-.815.026.008a3.75 3.75 0 01-7.31-1.549zm1.477.313a2.251 2.251 0 004.356.921l-4.356-.921zm-2.84-3.28L18.157 8h.343v6.5h-.343L5.5 11.823v-1.146z",clipRule:"evenodd"})})},78136:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M5 5v1.5h14V5H5zm0 7.8h14v-1.5H5v1.5zM5 19h14v-1.5H5V19z"})})},82065:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M15 4H9c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h6c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H9c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h6c.3 0 .5.2.5.5v12zm-4.5-.5h2V16h-2v1.5z"})})},42778:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsxs)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:[(0,o.jsx)(r.Path,{d:"M7.5 12C7.5 11.1716 6.82843 10.5 6 10.5C5.17157 10.5 4.5 11.1716 4.5 12C4.5 12.8284 5.17157 13.5 6 13.5C6.82843 13.5 7.5 12.8284 7.5 12Z"}),(0,o.jsx)(r.Path,{d:"M13.5 12C13.5 11.1716 12.8284 10.5 12 10.5C11.1716 10.5 10.5 11.1716 10.5 12C10.5 12.8284 11.1716 13.5 12 13.5C12.8284 13.5 13.5 12.8284 13.5 12Z"}),(0,o.jsx)(r.Path,{d:"M19.5 12C19.5 11.1716 18.8284 10.5 18 10.5C17.1716 10.5 16.5 11.1716 16.5 12C16.5 12.8284 17.1716 13.5 18 13.5C18.8284 13.5 19.5 12.8284 19.5 12Z"})]})},28231:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M11 13h2v-2h-2v2zm-6 0h2v-2H5v2zm12-2v2h2v-2h-2z"})})},31597:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M13 19h-2v-2h2v2zm0-6h-2v-2h2v2zm0-6h-2V5h2v2z"})})},57054:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M4 9v1.5h16V9H4zm12 5.5h4V13h-4v1.5zm-6 0h4V13h-4v1.5zm-6 0h4V13H4v1.5z"})})},22374:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M19.75 9c0-1.257-.565-2.197-1.39-2.858-.797-.64-1.827-1.017-2.815-1.247-1.802-.42-3.703-.403-4.383-.396L11 4.5V6l.177-.001c.696-.006 2.416-.02 4.028.356.887.207 1.67.518 2.216.957.52.416.829.945.829 1.688 0 .592-.167.966-.407 1.23-.255.281-.656.508-1.236.674-1.19.34-2.82.346-4.607.346h-.077c-1.692 0-3.527 0-4.942.404-.732.209-1.424.545-1.935 1.108-.526.579-.796 1.33-.796 2.238 0 1.257.565 2.197 1.39 2.858.797.64 1.827 1.017 2.815 1.247 1.802.42 3.703.403 4.383.396L13 19.5h.714V22L18 18.5 13.714 15v3H13l-.177.001c-.696.006-2.416.02-4.028-.356-.887-.207-1.67-.518-2.216-.957-.52-.416-.829-.945-.829-1.688 0-.592.167-.966.407-1.23.255-.281.656-.508 1.237-.674 1.189-.34 2.819-.346 4.606-.346h.077c1.692 0 3.527 0 4.941-.404.732-.209 1.425-.545 1.936-1.108.526-.579.796-1.33.796-2.238z"})})},81385:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M12 4c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14.5c-3.6 0-6.5-2.9-6.5-6.5S8.4 5.5 12 5.5s6.5 2.9 6.5 6.5-2.9 6.5-6.5 6.5zM9 16l4.5-3L15 8.4l-4.5 3L9 16z"})})},64222:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M6.6 6L5.4 7l4.5 5-4.5 5 1.1 1 5.5-6-5.4-6zm6 0l-1.1 1 4.5 5-4.5 5 1.1 1 5.5-6-5.5-6z"})})},18887:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 18.5A6.5 6.5 0 0 1 6.93 7.931l9.139 9.138A6.473 6.473 0 0 1 12 18.5Zm5.123-2.498a6.5 6.5 0 0 0-9.124-9.124l9.124 9.124ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Z"})})},11995:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M19 5H5c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm.5 12c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5V7c0-.3.2-.5.5-.5h14c.3 0 .5.2.5.5v10zm-11-7.6h-.7l-3.1 4.3h2.8V15h1v-1.3h.7v-.8h-.7V9.4zm-.9 3.5H6.3l1.2-1.7v1.7zm5.6-3.2c-.4-.2-.8-.4-1.2-.4-.5 0-.9.1-1.2.4-.4.2-.6.6-.8 1-.2.4-.3.9-.3 1.5s.1 1.1.3 1.6c.2.4.5.8.8 1 .4.2.8.4 1.2.4.5 0 .9-.1 1.2-.4.4-.2.6-.6.8-1 .2-.4.3-1 .3-1.6 0-.6-.1-1.1-.3-1.5-.1-.5-.4-.8-.8-1zm0 3.6c-.1.3-.3.5-.5.7-.2.1-.4.2-.7.2-.3 0-.5-.1-.7-.2-.2-.1-.4-.4-.5-.7-.1-.3-.2-.7-.2-1.2 0-.7.1-1.2.4-1.5.3-.3.6-.5 1-.5s.7.2 1 .5c.3.3.4.8.4 1.5-.1.5-.1.9-.2 1.2zm5-3.9h-.7l-3.1 4.3h2.8V15h1v-1.3h.7v-.8h-.7V9.4zm-1 3.5H16l1.2-1.7v1.7z"})})},93512:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M1.36605 2.81332L2.30144 1.87332L13.5592 13.1867L12.6239 14.1267L7.92702 9.40666C6.74618 9.41999 5.57861 9.87999 4.68302 10.78L3.35623 9.44665C4.19874 8.60665 5.2071 8.03999 6.2818 7.75332L4.7958 6.25999C3.78744 6.67332 2.84542 7.29332 2.02944 8.11332L0.702656 6.77999C1.512 5.97332 2.42085 5.33332 3.3894 4.84665L1.36605 2.81332ZM15.2973 6.77999L13.9705 8.11332C12.3054 6.43999 10.1096 5.61332 7.92039 5.62666L6.20883 3.90665C9.41303 3.34665 12.8229 4.29332 15.2973 6.77999ZM10.1759 7.89332C11.0781 8.21332 11.9273 8.72665 12.6438 9.44665L12.1794 9.90665L10.1759 7.89332ZM6.00981 12.1133L8 14.1133L9.99018 12.1133C8.89558 11.0067 7.11105 11.0067 6.00981 12.1133Z"})})},43411:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M18 4H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12-9.8c.4 0 .8-.3.9-.7l1.1-3h3.6l.5 1.7h1.9L13 9h-2.2l-3.4 9.5H6c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h12c.3 0 .5.2.5.5v12H20V6c0-1.1-.9-2-2-2zm-6 7l1.4 3.9h-2.7L12 11z"})})},78982:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M17.5 9V6a2 2 0 0 0-2-2h-7a2 2 0 0 0-2 2v3H8V6a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v3h1.5Zm0 6.5V18a2 2 0 0 1-2 2h-7a2 2 0 0 1-2-2v-2.5H8V18a.5.5 0 0 0 .5.5h7a.5.5 0 0 0 .5-.5v-2.5h1.5ZM4 13h16v-1.5H4V13Z"})})},59892:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsxs)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[(0,o.jsx)(r.Path,{d:"M15.5 7.5h-7V9h7V7.5Zm-7 3.5h7v1.5h-7V11Zm7 3.5h-7V16h7v-1.5Z"}),(0,o.jsx)(r.Path,{d:"M17 4H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2ZM7 5.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H7a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5Z"})]})},94299:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsxs)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[(0,o.jsx)(r.Path,{d:"M14.5 5.5h-7V7h7V5.5ZM7.5 9h7v1.5h-7V9Zm7 3.5h-7V14h7v-1.5Z"}),(0,o.jsx)(r.Path,{d:"M16 2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2ZM6 3.5h10a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5H6a.5.5 0 0 1-.5-.5V4a.5.5 0 0 1 .5-.5Z"}),(0,o.jsx)(r.Path,{d:"M20 8v11c0 .69-.31 1-.999 1H6v1.5h13.001c1.52 0 2.499-.982 2.499-2.5V8H20Z"})]})},70413:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"m9.99609 14v-.2251l.00391.0001v6.225h1.5v-14.5h2.5v14.5h1.5v-14.5h3v-1.5h-8.50391c-2.76142 0-5 2.23858-5 5 0 2.7614 2.23858 5 5 5z"})})},95501:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",d:"M5.5 9.5v-2h13v2h-13zm0 3v4h13v-4h-13zM4 7a1 1 0 011-1h14a1 1 0 011 1v10a1 1 0 01-1 1H5a1 1 0 01-1-1V7z",clipRule:"evenodd"})})},78938:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"m19 7-3-3-8.5 8.5-1 4 4-1L19 7Zm-7 11.5H5V20h7v-1.5Z"})})},8436:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm8 4a4 4 0 0 1-4-4h4V8a4 4 0 0 1 0 8Z"})})},15788:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M15.5 9.5a1 1 0 100-2 1 1 0 000 2zm0 1.5a2.5 2.5 0 100-5 2.5 2.5 0 000 5zm-2.25 6v-2a2.75 2.75 0 00-2.75-2.75h-4A2.75 2.75 0 003.75 15v2h1.5v-2c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v2h1.5zm7-2v2h-1.5v-2c0-.69-.56-1.25-1.25-1.25H15v-1.5h2.5A2.75 2.75 0 0120.25 15zM9.5 8.5a1 1 0 11-2 0 1 1 0 012 0zm1.5 0a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0z",fillRule:"evenodd"})})},13822:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",d:"M6.5 8a1.5 1.5 0 103 0 1.5 1.5 0 00-3 0zM8 5a3 3 0 100 6 3 3 0 000-6zm6.5 11a1.5 1.5 0 103 0 1.5 1.5 0 00-3 0zm1.5-3a3 3 0 100 6 3 3 0 000-6zM5.47 17.41a.75.75 0 001.06 1.06L18.47 6.53a.75.75 0 10-1.06-1.06L5.47 17.41z",clipRule:"evenodd"})})},83594:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{width:"24",height:"24",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M10.97 10.159a3.382 3.382 0 0 0-2.857.955l1.724 1.723-2.836 2.913L7 17h1.25l2.913-2.837 1.723 1.723a3.38 3.38 0 0 0 .606-.825c.33-.63.446-1.343.35-2.032L17 10.695 13.305 7l-2.334 3.159Z"})})},36304:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"m21.5 9.1-6.6-6.6-4.2 5.6c-1.2-.1-2.4.1-3.6.7-.1 0-.1.1-.2.1-.5.3-.9.6-1.2.9l3.7 3.7-5.7 5.7v1.1h1.1l5.7-5.7 3.7 3.7c.4-.4.7-.8.9-1.2.1-.1.1-.2.2-.3.6-1.1.8-2.4.6-3.6l5.6-4.1zm-7.3 3.5.1.9c.1.9 0 1.8-.4 2.6l-6-6c.8-.4 1.7-.5 2.6-.4l.9.1L15 4.9 19.1 9l-4.9 3.6z"})})},30435:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M10.5 4v4h3V4H15v4h1.5a1 1 0 011 1v4l-3 4v2a1 1 0 01-1 1h-3a1 1 0 01-1-1v-2l-3-4V9a1 1 0 011-1H9V4h1.5zm.5 12.5v2h2v-2l3-4v-3H8v3l3 4z"})})},17809:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M2 12C2 6.44444 6.44444 2 12 2C17.5556 2 22 6.44444 22 12C22 17.5556 17.5556 22 12 22C6.44444 22 2 17.5556 2 12ZM13 11V7H11V11H7V13H11V17H13V13H17V11H13Z"})})},73632:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"-2 -2 24 24",children:(0,o.jsx)(r.Path,{d:"M10 1c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 16c-3.9 0-7-3.1-7-7s3.1-7 7-7 7 3.1 7 7-3.1 7-7 7zm1-11H9v3H6v2h3v3h2v-3h3V9h-3V6zM10 1c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 16c-3.9 0-7-3.1-7-7s3.1-7 7-7 7 3.1 7 7-3.1 7-7 7zm1-11H9v3H6v2h3v3h2v-3h3V9h-3V6z"})})},45459:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M11 12.5V17.5H12.5V12.5H17.5V11H12.5V6H11V11H6V12.5H11Z"})})},72816:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M19 5.5H5V4h14v1.5ZM19 20H5v-1.5h14V20ZM7 9h10v6H7V9Z"})})},96504:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M5 5.5h8V4H5v1.5ZM5 20h8v-1.5H5V20ZM19 9H5v6h14V9Z"})})},71643:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M19 5.5h-8V4h8v1.5ZM19 20h-8v-1.5h8V20ZM5 9h14v6H5V9Z"})})},36037:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M10 4.5a1 1 0 11-2 0 1 1 0 012 0zm1.5 0a2.5 2.5 0 11-5 0 2.5 2.5 0 015 0zm2.25 7.5v-1A2.75 2.75 0 0011 8.25H7A2.75 2.75 0 004.25 11v1h1.5v-1c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v1h1.5zM4 20h9v-1.5H4V20zm16-4H4v-1.5h16V16z",fillRule:"evenodd",clipRule:"evenodd"})})},94706:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M20 4H4v1.5h16V4zm-2 9h-3c-1.1 0-2 .9-2 2v3c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2v-3c0-1.1-.9-2-2-2zm.5 5c0 .3-.2.5-.5.5h-3c-.3 0-.5-.2-.5-.5v-3c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v3zM4 9.5h9V8H4v1.5zM9 13H6c-1.1 0-2 .9-2 2v3c0 1.1.9 2 2 2h3c1.1 0 2-.9 2-2v-3c0-1.1-.9-2-2-2zm.5 5c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5v-3c0-.3.2-.5.5-.5h3c.3 0 .5.2.5.5v3z",fillRule:"evenodd",clipRule:"evenodd"})})},90754:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M13 8H4v1.5h9V8zM4 4v1.5h16V4H4zm9 8H5c-.6 0-1 .4-1 1v8.3c0 .3.2.7.6.8.1.1.2.1.3.1.2 0 .5-.1.6-.3l1.8-1.8H13c.6 0 1-.4 1-1V13c0-.6-.4-1-1-1zm-2.2 6.6H7l1.6-2.2c.3-.4.5-.7.6-.9.1-.2.2-.4.2-.5 0-.2-.1-.3-.1-.4-.1-.1-.2-.1-.4-.1s-.4 0-.6.1c-.3.1-.5.3-.7.4l-.2.2-.2-1.2.1-.1c.3-.2.5-.3.8-.4.3-.1.6-.1.9-.1.3 0 .6.1.9.2.2.1.4.3.6.5.1.2.2.5.2.7 0 .3-.1.6-.2.9-.1.3-.4.7-.7 1.1l-.5.6h1.6v1.2z"})})},93803:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M13 8H4v1.5h9V8zM4 4v1.5h16V4H4zm9 8H5c-.6 0-1 .4-1 1v8.3c0 .3.2.7.6.8.1.1.2.1.3.1.2 0 .5-.1.6-.3l1.8-1.8H13c.6 0 1-.4 1-1V13c0-.6-.4-1-1-1zm-.5 6.6H6.7l-1.2 1.2v-6.3h7v5.1z"})})},25816:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M14 10.1V4c0-.6-.4-1-1-1H5c-.6 0-1 .4-1 1v8.3c0 .3.2.7.6.8.1.1.2.1.3.1.2 0 .5-.1.6-.3l1.8-1.8H13c.6 0 1-.4 1-1zm-1.5-.5H6.7l-1.2 1.2V4.5h7v5.1zM19 12h-8c-.6 0-1 .4-1 1v6.1c0 .6.4 1 1 1h5.7l1.8 1.8c.1.2.4.3.6.3.1 0 .2 0 .3-.1.4-.1.6-.5.6-.8V13c0-.6-.4-1-1-1zm-.5 7.8l-1.2-1.2h-5.8v-5.1h7v6.3z"})})},41417:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M4 6h12V4.5H4V6Zm16 4.5H4V9h16v1.5ZM4 15h16v-1.5H4V15Zm0 4.5h16V18H4v1.5Z"})})},76982:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsxs)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[(0,o.jsx)(r.Path,{d:"M11.696 13.972c.356-.546.599-.958.728-1.235a1.79 1.79 0 00.203-.783c0-.264-.077-.47-.23-.618-.148-.153-.354-.23-.618-.23-.295 0-.569.07-.82.212a3.413 3.413 0 00-.738.571l-.147-1.188c.289-.234.59-.41.903-.526.313-.117.66-.175 1.041-.175.375 0 .695.08.959.24.264.153.46.362.59.626.135.265.203.556.203.876 0 .362-.08.734-.24 1.115-.154.381-.427.87-.82 1.466l-.756 1.152H14v1.106h-4l1.696-2.609z"}),(0,o.jsx)(r.Path,{d:"M19.5 7h-15v12a.5.5 0 00.5.5h14a.5.5 0 00.5-.5V7zM3 7V5a2 2 0 012-2h14a2 2 0 012 2v14a2 2 0 01-2 2H5a2 2 0 01-2-2V7z"})]})},88669:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M8.001 3.984V9.47c0 1.518-.98 2.5-2.499 2.5h-.5v-1.5h.5c.69 0 1-.31 1-1V6.984H4v-3h4.001ZM4 20h9v-1.5H4V20Zm16-4H4v-1.5h16V16ZM13.001 3.984V9.47c0 1.518-.98 2.5-2.499 2.5h-.5v-1.5h.5c.69 0 1-.31 1-1V6.984H9v-3h4.001Z"})})},54424:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M19 3H5c-.6 0-1 .4-1 1v7c0 .5.4 1 1 1h14c.5 0 1-.4 1-1V4c0-.6-.4-1-1-1zM5.5 10.5v-.4l1.8-1.3 1.3.8c.3.2.7.2.9-.1L11 8.1l2.4 2.4H5.5zm13 0h-2.9l-4-4c-.3-.3-.8-.3-1.1 0L8.9 8l-1.2-.8c-.3-.2-.6-.2-.9 0l-1.3 1V4.5h13v6zM4 20h9v-1.5H4V20zm0-4h16v-1.5H4V16z"})})},30:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M18 5.5H6a.5.5 0 0 0-.5.5v12a.5.5 0 0 0 .5.5h12a.5.5 0 0 0 .5-.5V6a.5.5 0 0 0-.5-.5ZM6 4h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2Zm1 5h1.5v1.5H7V9Zm1.5 4.5H7V15h1.5v-1.5ZM10 9h7v1.5h-7V9Zm7 4.5h-7V15h7v-1.5Z"})})},5015:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M8.1 12.3c.1.1.3.3.5.3.2.1.4.1.6.1.2 0 .4 0 .6-.1.2-.1.4-.2.5-.3l3-3c.3-.3.5-.7.5-1.1 0-.4-.2-.8-.5-1.1L9.7 3.5c-.1-.2-.3-.3-.5-.3H5c-.4 0-.8.4-.8.8v4.2c0 .2.1.4.2.5l3.7 3.6zM5.8 4.8h3.1l3.4 3.4v.1l-3 3 .5.5-.7-.5-3.3-3.4V4.8zM4 20h9v-1.5H4V20zm0-5.5V16h16v-1.5H4z"})})},69457:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"m7.3 9.7 1.4 1.4c.2-.2.3-.3.4-.5 0 0 0-.1.1-.1.3-.5.4-1.1.3-1.6L12 7 9 4 7.2 6.5c-.6-.1-1.1 0-1.6.3 0 0-.1 0-.1.1-.3.1-.4.2-.6.4l1.4 1.4L4 11v1h1l2.3-2.3zM4 20h9v-1.5H4V20zm0-5.5V16h16v-1.5H4z"})})},6584:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M18 4H6c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h12c.3 0 .5.2.5.5v12zM7 16.5h6V15H7v1.5zm4-4h6V11h-6v1.5zM9 11H7v1.5h2V11zm6 5.5h2V15h-2v1.5z"})})},56026:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M11.6 7l-1.1-1L5 12l5.5 6 1.1-1L7 12l4.6-5zm6 0l-1.1-1-5.5 6 5.5 6 1.1-1-4.6-5 4.6-5z"})})},64609:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm11.53-1.47-1.06-1.06L11 12.94l-1.47-1.47-1.06 1.06L11 15.06l4.53-4.53Z"})})},52812:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M4 18h6V6H4v12zm9-9.5V10h7V8.5h-7zm0 7h7V14h-7v1.5z"})})},78887:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M14 6v12h6V6h-6zM4 10h7V8.5H4V10zm0 5.5h7V14H4v1.5z"})})},31798:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M18 8H6c-1.1 0-2 .9-2 2v4c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-4c0-1.1-.9-2-2-2zm.5 6c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5v-4c0-.3.2-.5.5-.5h12c.3 0 .5.2.5.5v4zM4 4v1.5h16V4H4zm0 16h16v-1.5H4V20z"})})},58324:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M5 13.5h3v-3H5v3zm5 0h3v-3h-3v3zM17 9l-1 1 2 2-2 2 1 1 3-3-3-3z"})})},79843:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M4 13.5h6v-3H4v3zm8.2-2.5.8-.3V14h1V9.3l-2.2.7.4 1zm7.1-1.2c-.5-.6-1.2-.5-1.7-.4-.3.1-.5.2-.7.3l.1 1.1c.2-.2.5-.4.8-.5.3-.1.6 0 .7.1.2.3 0 .8-.2 1.1-.5.8-.9 1.6-1.4 2.5h2.7v-1h-.9c.3-.6.8-1.4.9-2.1 0-.3-.1-.8-.3-1.1z"})})},57524:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M16 10.5v3h3v-3h-3zm-5 3h3v-3h-3v3zM7 9l-3 3 3 3 1-1-2-2 2-2-1-1z"})})},13968:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M4 13.5h6v-3H4v3zm8 0h3v-3h-3v3zm5-3v3h3v-3h-3z"})})},91535:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M13 6v6h5.2v4c0 .8-.2 1.4-.5 1.7-.6.6-1.6.6-2.5.5h-.3v1.5h.5c1 0 2.3-.1 3.3-1 .6-.6 1-1.6 1-2.8V6H13zm-9 6h5.2v4c0 .8-.2 1.4-.5 1.7-.6.6-1.6.6-2.5.5h-.3v1.5h.5c1 0 2.3-.1 3.3-1 .6-.6 1-1.6 1-2.8V6H4v6z"})})},49695:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",d:"M16.83 6.342l.602.3.625-.25.443-.176v12.569l-.443-.178-.625-.25-.603.301-1.444.723-2.41-.804-.475-.158-.474.158-2.41.803-1.445-.722-.603-.3-.625.25-.443.177V6.215l.443.178.625.25.603-.301 1.444-.722 2.41.803.475.158.474-.158 2.41-.803 1.445.722zM20 4l-1.5.6-1 .4-2-1-3 1-3-1-2 1-1-.4L5 4v17l1.5-.6 1-.4 2 1 3-1 3 1 2-1 1 .4 1.5.6V4zm-3.5 6.25v-1.5h-8v1.5h8zm0 3v-1.5h-8v1.5h8zm-8 3v-1.5h8v1.5h-8z",clipRule:"evenodd"})})},86299:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M15.6 6.5l-1.1 1 2.9 3.3H8c-.9 0-1.7.3-2.3.9-1.4 1.5-1.4 4.2-1.4 5.6v.2h1.5v-.3c0-1.1 0-3.5 1-4.5.3-.3.7-.5 1.3-.5h9.2L14.5 15l1.1 1.1 4.6-4.6-4.6-5z"})})},81884:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M8.45474 21.2069L16.4547 3.7069L15.5453 3.29114L14.2837 6.05081C13.5991 5.69873 12.8228 5.49999 12 5.49999C10.9385 5.49999 9.95431 5.83076 9.1448 6.39485L7.18994 4.44L6.12928 5.50066L8.05556 7.42694C7.49044 8.15127 7.12047 9.0353 7.02469 9.99999H5V11.5H7V13H5V14.5H7.10002C7.35089 15.7359 8.0576 16.8062 9.03703 17.5279L7.54526 20.7911L8.45474 21.2069ZM9.68024 16.1209C8.95633 15.4796 8.5 14.5431 8.5 13.5V10.5C8.5 8.567 10.067 6.99999 12 6.99999C12.6003 6.99999 13.1653 7.15111 13.659 7.41738L9.68024 16.1209ZM15.3555 9.50155L16.1645 7.73191C16.6053 8.39383 16.8926 9.16683 16.9753 9.99999H19V11.5H17V13H19V14.5H16.9C16.4367 16.7822 14.419 18.5 12 18.5C11.7508 18.5 11.5058 18.4818 11.2664 18.4466L11.928 16.9993C11.9519 16.9998 11.9759 17 12 17C13.933 17 15.5 15.433 15.5 13.5V10.5C15.5 10.1531 15.4495 9.81794 15.3555 9.50155Z"})})},5903:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"m13.955 20.748 8-17.5-.91-.416L19.597 6H13.5v1.5h5.411l-1.6 3.5H13.5v1.5h3.126l-1.6 3.5H13.5l.028 1.5h.812l-1.295 2.832.91.416ZM17.675 16l-.686 1.5h4.539L21.5 16h-3.825Zm2.286-5-.686 1.5H21.5V11h-1.54ZM2 12c0 3.58 2.42 5.5 6 5.5h.5V19l3-2.5-3-2.5v2H8c-2.48 0-4.5-1.52-4.5-4S5.52 7.5 8 7.5h3.5V6H8c-3.58 0-6 2.42-6 6Z"})})},36667:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M16 10h4c.6 0 1-.4 1-1V5c0-.6-.4-1-1-1h-4c-.6 0-1 .4-1 1v4c0 .6.4 1 1 1zm-8 4H4c-.6 0-1 .4-1 1v4c0 .6.4 1 1 1h4c.6 0 1-.4 1-1v-4c0-.6-.4-1-1-1zm10-2.6L14.5 15l1.1 1.1 1.7-1.7c-.1 1.1-.3 2.3-.9 2.9-.3.3-.7.5-1.3.5h-4.5v1.5H15c.9 0 1.7-.3 2.3-.9 1-1 1.3-2.7 1.4-4l1.8 1.8 1.1-1.1-3.6-3.7zM6.8 9.7c.1-1.1.3-2.3.9-2.9.4-.4.8-.6 1.3-.6h4.5V4.8H9c-.9 0-1.7.3-2.3.9-1 1-1.3 2.7-1.4 4L3.5 8l-1 1L6 12.6 9.5 9l-1-1-1.7 1.7z"})})},84832:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M7 11.5h10V13H7z"})})},32128:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M7 18h4.5v1.5h-7v-7H6V17L17 6h-4.5V4.5h7v7H18V7L7 18Z"})})},40502:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M7 7.2h8.2L13.5 9l1.1 1.1 3.6-3.6-3.5-4-1.1 1 1.9 2.3H7c-.9 0-1.7.3-2.3.9-1.4 1.5-1.4 4.2-1.4 5.6v.2h1.5v-.3c0-1.1 0-3.5 1-4.5.3-.3.7-.5 1.2-.5zm13.8 4V11h-1.5v.3c0 1.1 0 3.5-1 4.5-.3.3-.7.5-1.3.5H8.8l1.7-1.7-1.1-1.1L5.9 17l3.5 4 1.1-1-1.9-2.3H17c.9 0 1.7-.3 2.3-.9 1.5-1.4 1.5-4.2 1.5-5.6z"})})},80828:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M12 4V2.2L9 4.8l3 2.5V5.5c3.6 0 6.5 2.9 6.5 6.5 0 2.9-1.9 5.3-4.5 6.2v.2l-.1-.2c-.4.1-.7.2-1.1.2l.2 1.5c.3 0 .6-.1 1-.2 3.5-.9 6-4 6-7.7 0-4.4-3.6-8-8-8zm-7.9 7l1.5.2c.1-1.2.5-2.3 1.2-3.2l-1.1-.9C4.8 8.2 4.3 9.6 4.1 11zm1.5 1.8l-1.5.2c.1.7.3 1.4.5 2 .3.7.6 1.3 1 1.8l1.2-.8c-.3-.5-.6-1-.8-1.5s-.4-1.1-.4-1.7zm1.5 5.5c1.1.9 2.4 1.4 3.8 1.6l.2-1.5c-1.1-.1-2.2-.5-3.1-1.2l-.9 1.1z"})})},60503:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M15.1 4.8l-3-2.5V4c-4.4 0-8 3.6-8 8 0 3.7 2.5 6.9 6 7.7.3.1.6.1 1 .2l.2-1.5c-.4 0-.7-.1-1.1-.2l-.1.2v-.2c-2.6-.8-4.5-3.3-4.5-6.2 0-3.6 2.9-6.5 6.5-6.5v1.8l3-2.5zM20 11c-.2-1.4-.7-2.7-1.6-3.8l-1.2.8c.7.9 1.1 2 1.3 3.1L20 11zm-1.5 1.8c-.1.5-.2 1.1-.4 1.6s-.5 1-.8 1.5l1.2.9c.4-.5.8-1.1 1-1.8s.5-1.3.5-2l-1.5-.2zm-5.6 5.6l.2 1.5c1.4-.2 2.7-.7 3.8-1.6l-.9-1.1c-.9.7-2 1.1-3.1 1.2z"})})},71743:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M4 6.5h5a2 2 0 0 1 2 2v7a2 2 0 0 1-2 2H4V16h5a.5.5 0 0 0 .5-.5v-7A.5.5 0 0 0 9 8H4V6.5Zm16 0h-5a2 2 0 0 0-2 2v7a2 2 0 0 0 2 2h5V16h-5a.5.5 0 0 1-.5-.5v-7A.5.5 0 0 1 15 8h5V6.5Z"})})},4335:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M5 10.2h-.8v1.5H5c1.9 0 3.8.8 5.1 2.1 1.4 1.4 2.1 3.2 2.1 5.1v.8h1.5V19c0-2.3-.9-4.5-2.6-6.2-1.6-1.6-3.8-2.6-6.1-2.6zm10.4-1.6C12.6 5.8 8.9 4.2 5 4.2h-.8v1.5H5c3.5 0 6.9 1.4 9.4 3.9s3.9 5.8 3.9 9.4v.8h1.5V19c0-3.9-1.6-7.6-4.4-10.4zM4 20h3v-3H4v3z"})})},27268:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 18.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13ZM4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm9 1V8h-1.5v3.5h-2V13H13Z"})})},58535:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z"})})},58824:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M3.99961 13C4.67043 13.3354 4.6703 13.3357 4.67017 13.3359L4.67298 13.3305C4.67621 13.3242 4.68184 13.3135 4.68988 13.2985C4.70595 13.2686 4.7316 13.2218 4.76695 13.1608C4.8377 13.0385 4.94692 12.8592 5.09541 12.6419C5.39312 12.2062 5.84436 11.624 6.45435 11.0431C7.67308 9.88241 9.49719 8.75 11.9996 8.75C14.502 8.75 16.3261 9.88241 17.5449 11.0431C18.1549 11.624 18.6061 12.2062 18.9038 12.6419C19.0523 12.8592 19.1615 13.0385 19.2323 13.1608C19.2676 13.2218 19.2933 13.2686 19.3093 13.2985C19.3174 13.3135 19.323 13.3242 19.3262 13.3305L19.3291 13.3359C19.3289 13.3357 19.3288 13.3354 19.9996 13C20.6704 12.6646 20.6703 12.6643 20.6701 12.664L20.6697 12.6632L20.6688 12.6614L20.6662 12.6563L20.6583 12.6408C20.6517 12.6282 20.6427 12.6108 20.631 12.5892C20.6078 12.5459 20.5744 12.4852 20.5306 12.4096C20.4432 12.2584 20.3141 12.0471 20.1423 11.7956C19.7994 11.2938 19.2819 10.626 18.5794 9.9569C17.1731 8.61759 14.9972 7.25 11.9996 7.25C9.00203 7.25 6.82614 8.61759 5.41987 9.9569C4.71736 10.626 4.19984 11.2938 3.85694 11.7956C3.68511 12.0471 3.55605 12.2584 3.4686 12.4096C3.42484 12.4852 3.39142 12.5459 3.36818 12.5892C3.35656 12.6108 3.34748 12.6282 3.34092 12.6408L3.33297 12.6563L3.33041 12.6614L3.32948 12.6632L3.32911 12.664C3.32894 12.6643 3.32879 12.6646 3.99961 13ZM11.9996 16C13.9326 16 15.4996 14.433 15.4996 12.5C15.4996 10.567 13.9326 9 11.9996 9C10.0666 9 8.49961 10.567 8.49961 12.5C8.49961 14.433 10.0666 16 11.9996 16Z"})})},67709:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M6.332 5.748c-1.03-.426-2.06.607-1.632 1.636l1.702 3.93 7.481.575c.123.01.123.19 0 .2l-7.483.575-1.7 3.909c-.429 1.029.602 2.062 1.632 1.636l12.265-5.076c1.03-.426 1.03-1.884 0-2.31L6.332 5.748Z"})})},13976:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M4.5 12.5v4H3V7h1.5v3.987h15V7H21v9.5h-1.5v-4h-15Z"})})},20066:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsxs)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[(0,o.jsx)(r.Path,{d:"m19 7.5h-7.628c-.3089-.87389-1.1423-1.5-2.122-1.5-.97966 0-1.81309.62611-2.12197 1.5h-2.12803v1.5h2.12803c.30888.87389 1.14231 1.5 2.12197 1.5.9797 0 1.8131-.62611 2.122-1.5h7.628z"}),(0,o.jsx)(r.Path,{d:"m19 15h-2.128c-.3089-.8739-1.1423-1.5-2.122-1.5s-1.8131.6261-2.122 1.5h-7.628v1.5h7.628c.3089.8739 1.1423 1.5 2.122 1.5s1.8131-.6261 2.122-1.5h2.128z"})]})},37759:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M12 8c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zm0 6.5c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5zM12.8 3h-1.5v3h1.5V3zm-1.6 18h1.5v-3h-1.5v3zm6.8-9.8v1.5h3v-1.5h-3zm-12 0H3v1.5h3v-1.5zm9.7 5.6 2.1 2.1 1.1-1.1-2.1-2.1-1.1 1.1zM8.3 7.2 6.2 5.1 5.1 6.2l2.1 2.1 1.1-1.1zM5.1 17.8l1.1 1.1 2.1-2.1-1.1-1.1-2.1 2.1zM18.9 6.2l-1.1-1.1-2.1 2.1 1.1 1.1 2.1-2.1z"})})},80596:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M9 11.8l6.1-4.5c.1.4.4.7.9.7h2c.6 0 1-.4 1-1V5c0-.6-.4-1-1-1h-2c-.6 0-1 .4-1 1v.4l-6.4 4.8c-.2-.1-.4-.2-.6-.2H6c-.6 0-1 .4-1 1v2c0 .6.4 1 1 1h2c.2 0 .4-.1.6-.2l6.4 4.8v.4c0 .6.4 1 1 1h2c.6 0 1-.4 1-1v-2c0-.6-.4-1-1-1h-2c-.5 0-.8.3-.9.7L9 12.2v-.4z"})})},65302:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M12 3.176l6.75 3.068v4.574c0 3.9-2.504 7.59-6.035 8.755a2.283 2.283 0 01-1.43 0c-3.53-1.164-6.035-4.856-6.035-8.755V6.244L12 3.176zM6.75 7.21v3.608c0 3.313 2.145 6.388 5.005 7.33.159.053.331.053.49 0 2.86-.942 5.005-4.017 5.005-7.33V7.21L12 4.824 6.75 7.21z",fillRule:"evenodd",clipRule:"evenodd"})})},24233:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M3 6.75C3 5.784 3.784 5 4.75 5H15V7.313l.05.027 5.056 2.73.394.212v3.468a1.75 1.75 0 01-1.75 1.75h-.012a2.5 2.5 0 11-4.975 0H9.737a2.5 2.5 0 11-4.975 0H3V6.75zM13.5 14V6.5H4.75a.25.25 0 00-.25.25V14h.965a2.493 2.493 0 011.785-.75c.7 0 1.332.287 1.785.75H13.5zm4.535 0h.715a.25.25 0 00.25-.25v-2.573l-4-2.16v4.568a2.487 2.487 0 011.25-.335c.7 0 1.332.287 1.785.75zM6.282 15.5a1.002 1.002 0 00.968 1.25 1 1 0 10-.968-1.25zm9 0a1 1 0 101.937.498 1 1 0 00-1.938-.498z"})})},88944:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M16 4.2v1.5h2.5v12.5H16v1.5h4V4.2h-4zM4.2 19.8h4v-1.5H5.8V5.8h2.5V4.2h-4l-.1 15.6zm5.1-3.1l1.4.6 4-10-1.4-.6-4 10z"})})},77846:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/SVG",children:(0,o.jsx)(r.Path,{d:"M17.192 6.75L15.47 5.03l1.06-1.06 3.537 3.53-3.537 3.53-1.06-1.06 1.723-1.72h-3.19c-.602 0-.993.202-1.28.498-.309.319-.538.792-.695 1.383-.13.488-.222 1.023-.296 1.508-.034.664-.116 1.413-.303 2.117-.193.721-.513 1.467-1.068 2.04-.575.594-1.359.954-2.357.954H4v-1.5h4.003c.601 0 .993-.202 1.28-.498.308-.319.538-.792.695-1.383.149-.557.216-1.093.288-1.662l.039-.31a9.653 9.653 0 0 1 .272-1.653c.193-.722.513-1.467 1.067-2.04.576-.594 1.36-.954 2.358-.954h3.19zM8.004 6.75c.8 0 1.46.23 1.988.628a6.24 6.24 0 0 0-.684 1.396 1.725 1.725 0 0 0-.024-.026c-.287-.296-.679-.498-1.28-.498H4v-1.5h4.003zM12.699 14.726c-.161.459-.38.94-.684 1.396.527.397 1.188.628 1.988.628h3.19l-1.722 1.72 1.06 1.06L20.067 16l-3.537-3.53-1.06 1.06 1.723 1.72h-3.19c-.602 0-.993-.202-1.28-.498a1.96 1.96 0 0 1-.024-.026z"})})},37631:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z"})})},88305:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"m7.5 6h9v-1.5h-9zm0 13.5h9v-1.5h-9zm-3-3h1.5v-9h-1.5zm13.5-9v9h1.5v-9z"})})},65483:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M8.2 5.3h8V3.8h-8v1.5zm0 14.5h8v-1.5h-8v1.5zm3.5-6.5h1v-1h-1v1zm1-6.5h-1v.5h1v-.5zm-1 4.5h1v-1h-1v1zm0-2h1v-1h-1v1zm0 7.5h1v-.5h-1v.5zm1-2.5h-1v1h1v-1zm-8.5 1.5h1.5v-8H4.2v8zm14.5-8v8h1.5v-8h-1.5zm-5 4.5v-1h-1v1h1zm-6.5 0h.5v-1h-.5v1zm3.5-1v1h1v-1h-1zm6 1h.5v-1h-.5v1zm-8-1v1h1v-1h-1zm6 0v1h1v-1h-1z"})})},7731:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsxs)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[(0,o.jsx)(r.Path,{d:"m7.5 6h9v-1.5h-9zm0 13.5h9v-1.5h-9zm-3-3h1.5v-9h-1.5zm13.5-9v9h1.5v-9z",style:{opacity:.25}}),(0,o.jsx)(r.Path,{d:"m16.5 19.5h-9v-1.5h9z"})]})},81808:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsxs)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[(0,o.jsx)(r.Path,{d:"m7.5 6h9v-1.5h-9zm0 13.5h9v-1.5h-9zm-3-3h1.5v-9h-1.5zm13.5-9v9h1.5v-9z",style:{opacity:.25}}),(0,o.jsx)(r.Path,{d:"m4.5 7.5v9h1.5v-9z"}),(0,o.jsx)(r.Path,{d:"m18 7.5v9h1.5v-9z"})]})},25125:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsxs)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[(0,o.jsx)(r.Path,{d:"m7.5 6h9v-1.5h-9zm0 13.5h9v-1.5h-9zm-3-3h1.5v-9h-1.5zm13.5-9v9h1.5v-9z",style:{opacity:.25}}),(0,o.jsx)(r.Path,{d:"m4.5 16.5v-9h1.5v9z"})]})},94916:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsxs)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[(0,o.jsx)(r.Path,{d:"m7.5 6h9v-1.5h-9zm0 13.5h9v-1.5h-9zm-3-3h1.5v-9h-1.5zm13.5-9v9h1.5v-9z",style:{opacity:.25}}),(0,o.jsx)(r.Path,{d:"m18 16.5v-9h1.5v9z"})]})},88061:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsxs)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[(0,o.jsx)(r.Path,{d:"m7.5 6h9v-1.5h-9zm0 13.5h9v-1.5h-9zm-3-3h1.5v-9h-1.5zm13.5-9v9h1.5v-9z",style:{opacity:.25}}),(0,o.jsx)(r.Path,{d:"m16.5 6h-9v-1.5h9z"})]})},37870:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsxs)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[(0,o.jsx)(r.Path,{d:"m7.5 6h9v-1.5h-9zm0 13.5h9v-1.5h-9zm-3-3h1.5v-9h-1.5zm13.5-9v9h1.5v-9z",style:{opacity:.25}}),(0,o.jsx)(r.Path,{d:"m7.5 6h9v-1.5h-9z"}),(0,o.jsx)(r.Path,{d:"m7.5 19.5h9v-1.5h-9z"})]})},11194:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M12 3c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 1.5c4.1 0 7.5 3.4 7.5 7.5v.1c-1.4-.8-3.3-1.7-3.4-1.8-.2-.1-.5-.1-.8.1l-2.9 2.1L9 11.3c-.2-.1-.4 0-.6.1l-3.7 2.2c-.1-.5-.2-1-.2-1.5 0-4.2 3.4-7.6 7.5-7.6zm0 15c-3.1 0-5.7-1.9-6.9-4.5l3.7-2.2 3.5 1.2c.2.1.5 0 .7-.1l2.9-2.1c.8.4 2.5 1.2 3.5 1.9-.9 3.3-3.9 5.8-7.4 5.8z"})})},26992:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fill:"none",d:"M5.75 12.75V18.25H11.25M12.75 5.75H18.25V11.25",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"square"})})},33371:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M17.5 4v5a2 2 0 0 1-2 2h-7a2 2 0 0 1-2-2V4H8v5a.5.5 0 0 0 .5.5h7A.5.5 0 0 0 16 9V4h1.5Zm0 16v-5a2 2 0 0 0-2-2h-7a2 2 0 0 0-2 2v5H8v-5a.5.5 0 0 1 .5-.5h7a.5.5 0 0 1 .5.5v5h1.5Z"})})},61871:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",d:"M9.706 8.646a.25.25 0 01-.188.137l-4.626.672a.25.25 0 00-.139.427l3.348 3.262a.25.25 0 01.072.222l-.79 4.607a.25.25 0 00.362.264l4.138-2.176a.25.25 0 01.233 0l4.137 2.175a.25.25 0 00.363-.263l-.79-4.607a.25.25 0 01.072-.222l3.347-3.262a.25.25 0 00-.139-.427l-4.626-.672a.25.25 0 01-.188-.137l-2.069-4.192a.25.25 0 00-.448 0L9.706 8.646zM12 7.39l-.948 1.921a1.75 1.75 0 01-1.317.957l-2.12.308 1.534 1.495c.412.402.6.982.503 1.55l-.362 2.11 1.896-.997a1.75 1.75 0 011.629 0l1.895.997-.362-2.11a1.75 1.75 0 01.504-1.55l1.533-1.495-2.12-.308a1.75 1.75 0 01-1.317-.957L12 7.39z",clipRule:"evenodd"})})},77136:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M11.776 4.454a.25.25 0 01.448 0l2.069 4.192a.25.25 0 00.188.137l4.626.672a.25.25 0 01.139.426l-3.348 3.263a.25.25 0 00-.072.222l.79 4.607a.25.25 0 01-.362.263l-4.138-2.175a.25.25 0 00-.232 0l-4.138 2.175a.25.25 0 01-.363-.263l.79-4.607a.25.25 0 00-.071-.222L4.754 9.881a.25.25 0 01.139-.426l4.626-.672a.25.25 0 00.188-.137l2.069-4.192z"})})},41137:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M9.518 8.783a.25.25 0 00.188-.137l2.069-4.192a.25.25 0 01.448 0l2.07 4.192a.25.25 0 00.187.137l4.626.672a.25.25 0 01.139.427l-3.347 3.262a.25.25 0 00-.072.222l.79 4.607a.25.25 0 01-.363.264l-4.137-2.176a.25.25 0 00-.233 0l-4.138 2.175a.25.25 0 01-.362-.263l.79-4.607a.25.25 0 00-.072-.222L4.753 9.882a.25.25 0 01.14-.427l4.625-.672zM12 14.533c.28 0 .559.067.814.2l1.895.997-.362-2.11a1.75 1.75 0 01.504-1.55l1.533-1.495-2.12-.308a1.75 1.75 0 01-1.317-.957L12 7.39v7.143z"})})},45422:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",d:"M19.75 11H21V8.667L19.875 4H4.125L3 8.667V11h1.25v8.75h15.5V11zm-1.5 0H5.75v7.25H10V13h4v5.25h4.25V11zm-5.5-5.5h2.067l.486 3.24.028.76H12.75v-4zm-3.567 0h2.067v4H8.669l.028-.76.486-3.24zm7.615 3.1l-.464-3.1h2.36l.806 3.345V9.5h-2.668l-.034-.9zM7.666 5.5h-2.36L4.5 8.845V9.5h2.668l.034-.9.464-3.1z",clipRule:"evenodd"})})},36111:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M5 4h14v11H5V4Zm11 16H8v-1.5h8V20Z"})})},46048:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M16 5.5H8V4h8v1.5ZM16 20H8v-1.5h8V20ZM5 9h14v6H5V9Z"})})},29753:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M20 12a8 8 0 1 1-16 0 8 8 0 0 1 16 0Zm-1.5 0a6.5 6.5 0 0 1-6.5 6.5v-13a6.5 6.5 0 0 1 6.5 6.5Z"})})},30838:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M16.9 18.3l.8-1.2c.4-.6.7-1.2.9-1.6.2-.4.3-.8.3-1.2 0-.3-.1-.7-.2-1-.1-.3-.4-.5-.6-.7-.3-.2-.6-.3-1-.3s-.8.1-1.1.2c-.3.1-.7.3-1 .6l.2 1.3c.3-.3.5-.5.8-.6s.6-.2.9-.2c.3 0 .5.1.7.2.2.2.2.4.2.7 0 .3-.1.5-.2.8-.1.3-.4.7-.8 1.3L15 19.4h4.3v-1.2h-2.4zM14.1 7.2h-2L9.5 11 6.9 7.2h-2l3.6 5.3L4.7 18h2l2.7-4 2.7 4h2l-3.8-5.5 3.8-5.3z"})})},36935:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M16.9 10.3l.8-1.3c.4-.6.7-1.2.9-1.6.2-.4.3-.8.3-1.2 0-.3-.1-.7-.2-1-.2-.2-.4-.4-.7-.6-.3-.2-.6-.3-1-.3s-.8.1-1.1.2c-.3.1-.7.3-1 .6l.1 1.3c.3-.3.5-.5.8-.6s.6-.2.9-.2c.3 0 .5.1.7.2.2.2.2.4.2.7 0 .3-.1.5-.2.8-.1.3-.4.7-.8 1.3l-1.8 2.8h4.3v-1.2h-2.2zm-2.8-3.1h-2L9.5 11 6.9 7.2h-2l3.6 5.3L4.7 18h2l2.7-4 2.7 4h2l-3.8-5.5 3.8-5.3z"})})},30959:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M5 17.7c.4.5.8.9 1.2 1.2l1.1-1.4c-.4-.3-.7-.6-1-1L5 17.7zM5 6.3l1.4 1.1c.3-.4.6-.7 1-1L6.3 5c-.5.4-.9.8-1.3 1.3zm.1 7.8l-1.7.5c.2.6.4 1.1.7 1.6l1.5-.8c-.2-.4-.4-.8-.5-1.3zM4.8 12v-.7L3 11.1v1.8l1.7-.2c.1-.2.1-.5.1-.7zm3 7.9c.5.3 1.1.5 1.6.7l.5-1.7c-.5-.1-.9-.3-1.3-.5l-.8 1.5zM19 6.3c-.4-.5-.8-.9-1.2-1.2l-1.1 1.4c.4.3.7.6 1 1L19 6.3zm-.1 3.6l1.7-.5c-.2-.6-.4-1.1-.7-1.6l-1.5.8c.2.4.4.8.5 1.3zM5.6 8.6l-1.5-.8c-.3.5-.5 1-.7 1.6l1.7.5c.1-.5.3-.9.5-1.3zm2.2-4.5l.8 1.5c.4-.2.8-.4 1.3-.5l-.5-1.7c-.6.2-1.1.4-1.6.7zm8.8 13.5l1.1 1.4c.5-.4.9-.8 1.2-1.2l-1.4-1.1c-.2.3-.5.6-.9.9zm1.8-2.2l1.5.8c.3-.5.5-1.1.7-1.6l-1.7-.5c-.1.5-.3.9-.5 1.3zm2.6-4.3l-1.7.2v1.4l1.7.2V12v-.9zM11.1 3l.2 1.7h1.4l.2-1.7h-1.8zm3 2.1c.5.1.9.3 1.3.5l.8-1.5c-.5-.3-1.1-.5-1.6-.7l-.5 1.7zM12 19.2h-.7l-.2 1.8h1.8l-.2-1.7c-.2-.1-.5-.1-.7-.1zm2.1-.3l.5 1.7c.6-.2 1.1-.4 1.6-.7l-.8-1.5c-.4.2-.8.4-1.3.5z"})})},97572:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-17.6 1L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z"})})},28687:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-1 1.4l-5.6 5.6c-.1.1-.3.1-.4 0l-5.6-5.6c-.1-.1-.1-.3 0-.4l5.6-5.6s.1-.1.2-.1.1 0 .2.1l5.6 5.6c.1.1.1.3 0 .4zm-16.6-.4L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z"})})},31181:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"-2 -2 24 24",children:(0,o.jsx)(r.Path,{d:"M14.08 12.864V9.216h3.648V7.424H14.08V3.776h-1.728v3.648H8.64v1.792h3.712v3.648zM0 17.92V0h20.48v17.92H0zM6.4 1.28H1.28v3.84H6.4V1.28zm0 5.12H1.28v3.84H6.4V6.4zm0 5.12H1.28v3.84H6.4v-3.84zM19.2 1.28H7.68v14.08H19.2V1.28z"})})},13488:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"-2 -2 24 24",children:(0,o.jsx)(r.Path,{d:"M6.4 3.776v3.648H2.752v1.792H6.4v3.648h1.728V9.216h3.712V7.424H8.128V3.776zM0 17.92V0h20.48v17.92H0zM12.8 1.28H1.28v14.08H12.8V1.28zm6.4 0h-5.12v3.84h5.12V1.28zm0 5.12h-5.12v3.84h5.12V6.4zm0 5.12h-5.12v3.84h5.12v-3.84z"})})},93664:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"-2 -2 24 24",children:(0,o.jsx)(r.Path,{d:"M6.4 9.98L7.68 8.7v-.256L6.4 7.164V9.98zm6.4-1.532l1.28-1.28V9.92L12.8 8.64v-.192zm7.68 9.472V0H0v17.92h20.48zm-1.28-2.56h-5.12v-1.024l-.256.256-1.024-1.024v1.792H7.68v-1.792l-1.024 1.024-.256-.256v1.024H1.28V1.28H6.4v2.368l.704-.704.576.576V1.216h5.12V3.52l.96-.96.32.32V1.216h5.12V15.36zm-5.76-2.112l-3.136-3.136-3.264 3.264-1.536-1.536 3.264-3.264L5.632 5.44l1.536-1.536 3.136 3.136 3.2-3.2 1.536 1.536-3.2 3.2 3.136 3.136-1.536 1.536z"})})},27672:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsxs)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:[(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M20 9.484h-8.889v-1.5H20v1.5Zm0 7h-4.889v-1.5H20v1.5Zm-14 .032a1 1 0 1 0 0-2 1 1 0 0 0 0 2Zm0 1a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z"}),(0,o.jsx)(r.Path,{d:"M13 15.516a2 2 0 1 1-4 0 2 2 0 0 1 4 0ZM8 8.484a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"})]})},51917:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"-2 -2 24 24",children:(0,o.jsx)(r.Path,{d:"M13.824 10.176h-2.88v-2.88H9.536v2.88h-2.88v1.344h2.88v2.88h1.408v-2.88h2.88zM0 17.92V0h20.48v17.92H0zM6.4 1.28H1.28v3.84H6.4V1.28zm6.4 0H7.68v3.84h5.12V1.28zm6.4 0h-5.12v3.84h5.12V1.28zm0 5.056H1.28v9.024H19.2V6.336z"})})},87504:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"-2 -2 24 24",children:(0,o.jsx)(r.Path,{d:"M6.656 6.464h2.88v2.88h1.408v-2.88h2.88V5.12h-2.88V2.24H9.536v2.88h-2.88zM0 17.92V0h20.48v17.92H0zm7.68-2.56h5.12v-3.84H7.68v3.84zm-6.4 0H6.4v-3.84H1.28v3.84zM19.2 1.28H1.28v9.024H19.2V1.28zm0 10.24h-5.12v3.84h5.12v-3.84zM6.656 6.464h2.88v2.88h1.408v-2.88h2.88V5.12h-2.88V2.24H9.536v2.88h-2.88zM0 17.92V0h20.48v17.92H0zm7.68-2.56h5.12v-3.84H7.68v3.84zm-6.4 0H6.4v-3.84H1.28v3.84zM19.2 1.28H1.28v9.024H19.2V1.28zm0 10.24h-5.12v3.84h5.12v-3.84z"})})},55104:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"-2 -2 24 24",children:(0,o.jsx)(r.Path,{d:"M17.728 11.456L14.592 8.32l3.2-3.2-1.536-1.536-3.2 3.2L9.92 3.648 8.384 5.12l3.2 3.2-3.264 3.264 1.536 1.536 3.264-3.264 3.136 3.136 1.472-1.536zM0 17.92V0h20.48v17.92H0zm19.2-6.4h-.448l-1.28-1.28H19.2V6.4h-1.792l1.28-1.28h.512V1.28H1.28v3.84h6.208l1.28 1.28H1.28v3.84h7.424l-1.28 1.28H1.28v3.84H19.2v-3.84z"})})},18495:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M4 6v11.5h16V6H4zm1.5 1.5h6V11h-6V7.5zm0 8.5v-3.5h6V16h-6zm13 0H13v-3.5h5.5V16zM13 11V7.5h5.5V11H13z"})})},21955:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M17 4H7c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h10c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 14c0 .3-.2.5-.5.5H7c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h10c.3 0 .5.2.5.5v12zm-7.5-.5h4V16h-4v1.5z"})})},211:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M4.75 4a.75.75 0 0 0-.75.75v7.826c0 .2.08.39.22.53l6.72 6.716a2.313 2.313 0 0 0 3.276-.001l5.61-5.611-.531-.53.532.528a2.315 2.315 0 0 0 0-3.264L13.104 4.22a.75.75 0 0 0-.53-.22H4.75ZM19 12.576a.815.815 0 0 1-.236.574l-5.61 5.611a.814.814 0 0 1-1.153 0L5.5 12.264V5.5h6.763l6.5 6.502a.816.816 0 0 1 .237.574ZM8.75 9.75a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"})})},90254:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M6.08 10.103h2.914L9.657 12h1.417L8.23 4H6.846L4 12h1.417l.663-1.897Zm1.463-4.137.994 2.857h-2l1.006-2.857ZM11 16H4v-1.5h7V16Zm1 0h8v-1.5h-8V16Zm-4 4H4v-1.5h4V20Zm7-1.5V20H9v-1.5h6Z"})})},43886:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M12.9 6h-2l-4 11h1.9l1.1-3h4.2l1.1 3h1.9L12.9 6zm-2.5 6.5l1.5-4.9 1.7 4.9h-3.2z"})})},90153:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M8.2 14.4h3.9L13 17h1.7L11 6.5H9.3L5.6 17h1.7l.9-2.6zm2-5.5 1.4 4H8.8l1.4-4zm7.4 7.5-1.3.8.8 1.4H5.5V20h14.3l-2.2-3.6z"})})},7583:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M7 5.6v1.7l2.6.9v3.9L7 13v1.7L17.5 11V9.3L7 5.6zm4.2 6V8.8l4 1.4-4 1.4zm-5.7 5.6V5.5H4v14.3l3.6-2.2-.8-1.3-1.3.9z"})})},50347:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M19.8 4h-1.5l1 8h1.5l-1-8ZM17 5.8c-.1-1-1-1.8-2-1.8H6.8c-.9 0-1.7.6-1.9 1.4l-1.8 6C2.7 12.7 3.7 14 5 14h4.4l-.8 3.6c-.3 1.3.7 2.4 1.9 2.4h.2c.6 0 1.2-.3 1.6-.8l5-6.6c.3-.4.5-.9.4-1.5L17 5.7Zm-.9 5.9-5 6.6c0 .1-.2.2-.4.2h-.2c-.3 0-.6-.3-.5-.6l.8-3.6c.1-.4 0-.9-.3-1.3s-.7-.6-1.2-.6H4.9c-.3 0-.6-.3-.5-.6l1.8-6c0-.2.3-.4.5-.4h8.2c.3 0 .5.2.5.4l.7 5.4v.4Z"})})},7598:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"m3 12 1 8h1.5l-1-8H3Zm15.8-2h-4.4l.8-3.6c.3-1.3-.7-2.4-1.9-2.4h-.2c-.6 0-1.2.3-1.6.8l-5 6.6c-.3.4-.4.8-.4 1.2v.2l.7 5.4v.2c.2.9 1 1.5 1.9 1.5h8.2c.9 0 1.7-.6 1.9-1.4l1.8-6c.4-1.3-.6-2.6-1.9-2.6Zm.5 2.1-1.8 6c0 .2-.3.4-.5.4H8.8c-.3 0-.5-.2-.5-.4l-.7-5.4v-.4l5-6.6c0-.1.2-.2.4-.2h.2c.3 0 .6.3.5.6l-.8 3.6c-.1.4 0 .9.3 1.3s.7.6 1.2.6h4.4c.3 0 .6.3.5.6Z"})})},35170:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M12 15.8c-3.7 0-6.8-3-6.8-6.8s3-6.8 6.8-6.8c3.7 0 6.8 3 6.8 6.8s-3.1 6.8-6.8 6.8zm0-12C9.1 3.8 6.8 6.1 6.8 9s2.4 5.2 5.2 5.2c2.9 0 5.2-2.4 5.2-5.2S14.9 3.8 12 3.8zM8 17.5h8V19H8zM10 20.5h4V22h-4z"})})},11269:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"m4 5.5h2v6.5h1.5v-6.5h2v-1.5h-5.5zm16 10.5h-16v-1.5h16zm-7 4h-9v-1.5h9z"})})},71041:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M14.103 7.128l2.26-2.26a4 4 0 00-5.207 4.804L5.828 15a2 2 0 102.828 2.828l5.329-5.328a4 4 0 004.804-5.208l-2.261 2.26-1.912-.512-.513-1.912zm-7.214 9.64a.5.5 0 11.707-.707.5.5 0 01-.707.707z"})})},76673:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M12 5.5A2.25 2.25 0 0 0 9.878 7h4.244A2.251 2.251 0 0 0 12 5.5ZM12 4a3.751 3.751 0 0 0-3.675 3H5v1.5h1.27l.818 8.997a2.75 2.75 0 0 0 2.739 2.501h4.347a2.75 2.75 0 0 0 2.738-2.5L17.73 8.5H19V7h-3.325A3.751 3.751 0 0 0 12 4Zm4.224 4.5H7.776l.806 8.861a1.25 1.25 0 0 0 1.245 1.137h4.347a1.25 1.25 0 0 0 1.245-1.137l.805-8.861Z"})})},36707:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M4.195 8.245a.75.75 0 011.06-.05l5.004 4.55 4.025-3.521L19 13.939V10.75h1.5v5.75h-5.75V15h3.19l-3.724-3.723-3.975 3.478-5.995-5.45a.75.75 0 01-.051-1.06z"})})},92614:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M3.445 16.505a.75.75 0 001.06.05l5.005-4.55 4.024 3.521 4.716-4.715V14h1.5V8.25H14v1.5h3.19l-3.724 3.723L9.49 9.995l-5.995 5.45a.75.75 0 00-.05 1.06z"})})},74426:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M6.9 7L3 17.8h1.7l1-2.8h4.1l1 2.8h1.7L8.6 7H6.9zm-.7 6.6l1.5-4.3 1.5 4.3h-3zM21.6 17c-.1.1-.2.2-.3.2-.1.1-.2.1-.4.1s-.3-.1-.4-.2c-.1-.1-.1-.3-.1-.6V12c0-.5 0-1-.1-1.4-.1-.4-.3-.7-.5-1-.2-.2-.5-.4-.9-.5-.4 0-.8-.1-1.3-.1s-1 .1-1.4.2c-.4.1-.7.3-1 .4-.2.2-.4.3-.6.5-.1.2-.2.4-.2.7 0 .3.1.5.2.8.2.2.4.3.8.3.3 0 .6-.1.8-.3.2-.2.3-.4.3-.7 0-.3-.1-.5-.2-.7-.2-.2-.4-.3-.6-.4.2-.2.4-.3.7-.4.3-.1.6-.1.8-.1.3 0 .6 0 .8.1.2.1.4.3.5.5.1.2.2.5.2.9v1.1c0 .3-.1.5-.3.6-.2.2-.5.3-.9.4-.3.1-.7.3-1.1.4-.4.1-.8.3-1.1.5-.3.2-.6.4-.8.7-.2.3-.3.7-.3 1.2 0 .6.2 1.1.5 1.4.3.4.9.5 1.6.5.5 0 1-.1 1.4-.3.4-.2.8-.6 1.1-1.1 0 .4.1.7.3 1 .2.3.6.4 1.2.4.4 0 .7-.1.9-.2.2-.1.5-.3.7-.4h-.3zm-3-.9c-.2.4-.5.7-.8.8-.3.2-.6.2-.8.2-.4 0-.6-.1-.9-.3-.2-.2-.3-.6-.3-1.1 0-.5.1-.9.3-1.2s.5-.5.8-.7c.3-.2.7-.3 1-.5.3-.1.6-.3.7-.6v3.4z"})})},95789:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M18.3 11.7c-.6-.6-1.4-.9-2.3-.9H6.7l2.9-3.3-1.1-1-4.5 5L8.5 16l1-1-2.7-2.7H16c.5 0 .9.2 1.3.5 1 1 1 3.4 1 4.5v.3h1.5v-.2c0-1.5 0-4.3-1.5-5.7z"})})},68113:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M18 4h-7c-1.1 0-2 .9-2 2v7c0 1.1.9 2 2 2h7c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm.5 9c0 .3-.2.5-.5.5h-7c-.3 0-.5-.2-.5-.5V6c0-.3.2-.5.5-.5h7c.3 0 .5.2.5.5v7zm-5 5c0 .3-.2.5-.5.5H6c-.3 0-.5-.2-.5-.5v-7c0-.3.2-.5.5-.5h1V9H6c-1.1 0-2 .9-2 2v7c0 1.1.9 2 2 2h7c1.1 0 2-.9 2-2v-1h-1.5v1z"})})},375:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M17 10h-1.2V7c0-2.1-1.7-3.8-3.8-3.8-2.1 0-3.8 1.7-3.8 3.8h1.5c0-1.2 1-2.2 2.2-2.2s2.2 1 2.2 2.2v3H7c-.6 0-1 .4-1 1v8c0 .6.4 1 1 1h10c.6 0 1-.4 1-1v-8c0-.6-.4-1-1-1z"})})},52259:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M20.7 12.7s0-.1-.1-.2c0-.2-.2-.4-.4-.6-.3-.5-.9-1.2-1.6-1.8-.7-.6-1.5-1.3-2.6-1.8l-.6 1.4c.9.4 1.6 1 2.1 1.5.6.6 1.1 1.2 1.4 1.6.1.2.3.4.3.5v.1l.7-.3.7-.3Zm-5.2-9.3-1.8 4c-.5-.1-1.1-.2-1.7-.2-3 0-5.2 1.4-6.6 2.7-.7.7-1.2 1.3-1.6 1.8-.2.3-.3.5-.4.6 0 0 0 .1-.1.2s0 0 .7.3l.7.3V13c0-.1.2-.3.3-.5.3-.4.7-1 1.4-1.6 1.2-1.2 3-2.3 5.5-2.3H13v.3c-.4 0-.8-.1-1.1-.1-1.9 0-3.5 1.6-3.5 3.5s.6 2.3 1.6 2.9l-2 4.4.9.4 7.6-16.2-.9-.4Zm-3 12.6c1.7-.2 3-1.7 3-3.5s-.2-1.4-.6-1.9L12.4 16Z"})})},83822:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"m11.3 17.2-5-5c-.1-.1-.1-.3 0-.4l2.3-2.3-1.1-1-2.3 2.3c-.7.7-.7 1.8 0 2.5l5 5H7.5v1.5h5.3v-5.2h-1.5v2.6zm7.5-6.4-5-5h2.7V4.2h-5.2v5.2h1.5V6.8l5 5c.1.1.1.3 0 .4l-2.3 2.3 1.1 1.1 2.3-2.3c.6-.7.6-1.9-.1-2.5z"})})},7326:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M18.5 15v3.5H13V6.7l4.5 4.1 1-1.1-6.2-5.8-5.8 5.8 1 1.1 4-4v11.7h-6V15H4v5h16v-5z"})})},43610:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M17.8 2l-.9.3c-.1 0-3.6 1-5.2 2.1C10 5.5 9.3 6.5 8.9 7.1c-.6.9-1.7 4.7-1.7 6.3l-.9 2.3c-.2.4 0 .8.4 1 .1 0 .2.1.3.1.3 0 .6-.2.7-.5l.6-1.5c.3 0 .7-.1 1.2-.2.7-.1 1.4-.3 2.2-.5.8-.2 1.6-.5 2.4-.8.7-.3 1.4-.7 1.9-1.2s.8-1.2 1-1.9c.2-.7.3-1.6.4-2.4.1-.8.1-1.7.2-2.5 0-.8.1-1.5.2-2.1V2zm-1.9 5.6c-.1.8-.2 1.5-.3 2.1-.2.6-.4 1-.6 1.3-.3.3-.8.6-1.4.9-.7.3-1.4.5-2.2.8-.6.2-1.3.3-1.8.4L15 7.5c.3-.3.6-.7 1-1.1 0 .4 0 .8-.1 1.2zM6 20h8v-1.5H6V20z"})})},70396:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,o.jsx)(r.Path,{d:"M18.7 3H5.3C4 3 3 4 3 5.3v13.4C3 20 4 21 5.3 21h13.4c1.3 0 2.3-1 2.3-2.3V5.3C21 4 20 3 18.7 3zm.8 15.7c0 .4-.4.8-.8.8H5.3c-.4 0-.8-.4-.8-.8V5.3c0-.4.4-.8.8-.8h13.4c.4 0 .8.4.8.8v13.4zM10 15l5-3-5-3v6z"})})},5559:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,o.jsx)(r.Path,{d:"M6 3H8V5H16V3H18V5C19.1046 5 20 5.89543 20 7V19C20 20.1046 19.1046 21 18 21H6C4.89543 21 4 20.1046 4 19V7C4 5.89543 4.89543 5 6 5V3ZM18 6.5H6C5.72386 6.5 5.5 6.72386 5.5 7V8H18.5V7C18.5 6.72386 18.2761 6.5 18 6.5ZM18.5 9.5H5.5V19C5.5 19.2761 5.72386 19.5 6 19.5H18C18.2761 19.5 18.5 19.2761 18.5 19V9.5ZM11 11H13V13H11V11ZM7 11V13H9V11H7ZM15 13V11H17V13H15Z"})})},94648:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(5573),o=a(10790);const n=(0,o.jsx)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"-2 -2 24 24",children:(0,o.jsx)(r.Path,{d:"M20 10c0-5.51-4.49-10-10-10C4.48 0 0 4.49 0 10c0 5.52 4.48 10 10 10 5.51 0 10-4.48 10-10zM7.78 15.37L4.37 6.22c.55-.02 1.17-.08 1.17-.08.5-.06.44-1.13-.06-1.11 0 0-1.45.11-2.37.11-.18 0-.37 0-.58-.01C4.12 2.69 6.87 1.11 10 1.11c2.33 0 4.45.87 6.05 2.34-.68-.11-1.65.39-1.65 1.58 0 .74.45 1.36.9 2.1.35.61.55 1.36.55 2.46 0 1.49-1.4 5-1.4 5l-3.03-8.37c.54-.02.82-.17.82-.17.5-.05.44-1.25-.06-1.22 0 0-1.44.12-2.38.12-.87 0-2.33-.12-2.33-.12-.5-.03-.56 1.2-.06 1.22l.92.08 1.26 3.41zM17.41 10c.24-.64.74-1.87.43-4.25.7 1.29 1.05 2.71 1.05 4.25 0 3.29-1.73 6.24-4.4 7.78.97-2.59 1.94-5.2 2.92-7.78zM6.1 18.09C3.12 16.65 1.11 13.53 1.11 10c0-1.3.23-2.48.72-3.59C3.25 10.3 4.67 14.2 6.1 18.09zm4.03-6.63l2.58 6.98c-.86.29-1.76.45-2.71.45-.79 0-1.57-.11-2.29-.33.81-2.38 1.62-4.74 2.42-7.1z"})})},33752:e=>{function t(e){var a,r,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e)){var n=e.length;for(a=0;a{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const a="color: "+this.color;t.splice(1,0,a,"color: inherit");let r=0,o=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(r++,"%c"===e&&(o=r))})),t.splice(o,0,a)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=a(53212)(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},53212:(e,t,a)=>{e.exports=function(e){function t(e){let a,o,n,l=null;function s(...e){if(!s.enabled)return;const r=s,o=Number(new Date),n=o-(a||o);r.diff=n,r.prev=a,r.curr=o,a=o,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let l=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((a,o)=>{if("%%"===a)return"%";l++;const n=t.formatters[o];if("function"==typeof n){const t=e[l];a=n.call(r,t),e.splice(l,1),l--}return a})),t.formatArgs.call(r,e);(r.log||t.log).apply(r,e)}return s.namespace=e,s.useColors=t.useColors(),s.color=t.selectColor(e),s.extend=r,s.destroy=t.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==l?l:(o!==t.namespaces&&(o=t.namespaces,n=t.enabled(e)),n),set:e=>{l=e}}),"function"==typeof t.init&&t.init(s),s}function r(e,a){const r=t(this.namespace+(void 0===a?":":a)+e);return r.log=this.log,r}function o(e,t){let a=0,r=0,o=-1,n=0;for(;a"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){t.save(e),t.namespaces=e,t.names=[],t.skips=[];const a=("string"==typeof e?e:"").trim().replace(" ",",").split(",").filter(Boolean);for(const e of a)"-"===e[0]?t.skips.push(e.slice(1)):t.names.push(e)},t.enabled=function(e){for(const a of t.skips)if(o(e,a))return!1;for(const a of t.names)if(o(e,a))return!0;return!1},t.humanize=a(44997),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((a=>{t[a]=e[a]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let a=0;for(let t=0;t{"use strict";function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}t.A=void 0;var o,n=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!=typeof e)return{default:e};var a=i(t);if(a&&a.has(e))return a.get(e);var o={},n=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!=l&&Object.prototype.hasOwnProperty.call(e,l)){var s=n?Object.getOwnPropertyDescriptor(e,l):null;s&&(s.get||s.set)?Object.defineProperty(o,l,s):o[l]=e[l]}return o.default=e,a&&a.set(e,o),o}(a(51609)),l=(o=a(28120))&&o.__esModule?o:{default:o},s=["size","onClick","icon","className"];function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,a=new WeakMap;return(i=function(e){return e?a:t})(e)}function c(){return c=Object.assign||function(e){for(var t,a=1;a{"use strict";a.d(t,{A:()=>r});const r={error:"TcCZnGE6mad8Dvz9pCZi",button:"_mn6o2Dtm5pfFWc8_A1K"}},8902:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={"admin-page":"sexr0jUxC1jVixdKiDnC",background:"vKQ11sLeAM45M04P1ccj","admin-page-header":"iWGAhN9gOB48g0jEO1OQ","sandbox-domain-badge":"JOYmuxQjG4FArIIUxJfA"}},27507:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={section:"cAbGtJDGgLubucBnz7vM"}},48703:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={"section-hero":"vMa4i_Dza2t5Zi_Bw9Nf"}},8953:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={container:"demNsMJjhi7BLY7xhjU5","icon-wrapper":"QiUjdjJSkqh6nH7YMG5A","is-error":"Q080AHcq29J2fc68Hhk5",icon:"hYWbIwhppukXmGnsiT9H","is-warning":"JjHuxWly0HI9C60gorbq","is-info":"Cm8ZFHi3mngl4cj9Gatx","is-success":"ytGBsU015p3LGwOPwFDx"}},50315:()=>{},55369:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={button:"zI5tJ_qhWE6Oe6Lk75GY","is-icon-button":"tuBt2DLqimiImoqVzPqo",small:"Na39I683LAaSA99REg14",normal:"ipS7tKy9GntCS4R3vekF",icon:"paGLQwtPEaJmtArCcmyK",regular:"lZAo6_oGfclXOO9CC6Rd","full-width":"xJDOiJxTt0R_wSl8Ipz_",loading:"q_tVWqMjl39RcY6WtQA6","external-icon":"CDuBjJp_8jxzx5j6Nept"}},94347:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={"global-notices":"jT9Kt2ZTvxPKDQ1pa7sN"}},40500:()=>{},50626:()=>{},9969:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={"star-icon":"cuoSlhSNrqf1dozY22Xb",jetpack:"lAIiifeLMmZAPlQ9n9ZR","checkmark-icon":"JLquNpQVlysAamuh5lJO",socialIcon:"cbOwD8Y4tFjwimmtchQI",bluesky:"aLWBKY0yRghEk7tNCgK3",facebook:"aHOlEBGD5EA8NKRw3xTw",instagram:"cL3m0xBYTYhIKI7lCqDB",twitter:"af4Y_zItXvLAOEoSDPSv",linkedin:"f68aqF3XSD1OBvXR1get",tumblr:"xFI0dt3UiXRlRQdqPWkx",google:"q7JEoyymveP6kF747M43",mastodon:"DKOBOTVmTLbh26gUH_73",nextdoor:"n5XodNsuMfMAAvqHFmbw",whatsapp:"fftumuc_lJ6v0tq4UMVR",threads:"inzgC27qxdt7hSdhTWRI"}},68271:()=>{},15508:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={sm:"(max-width: 599px)",md:"(min-width: 600px) and (max-width: 959px)",lg:"(min-width: 960px)"}},11616:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={sm:"(max-width: 599px)",md:"(min-width: 600px) and (max-width: 959px)",lg:"(min-width: 960px)",smCols:"4",mdCols:"8",lgCols:"12","col-sm-1":"RuVLl3q4lxTQa3wbhBJB","col-sm-1-start":"f9LZTRG4MMK42rS89afW","col-sm-1-end":"bHe_zKxjjpUwHw_MdYE1","col-sm-2":"QZbNrOqE2aNSn50xVhpU","col-sm-2-start":"ev7W3z7zVYPeHAlYqZjf","col-sm-2-end":"NJWd1m_e7lOiPYru2ZMP","col-sm-3":"Xc6nt1Qc1DI0Z2A3gt1r","col-sm-3-start":"UIcN_GXiPRoIsin8Kohg","col-sm-3-end":"GRKCyqb5LufCSCgykKFc","col-sm-4":"i_qTq8gqhhC3vIUepVRB","col-sm-4-start":"G3qaZ3Jpbvam_1XvGxgc","col-sm-4-end":"VRCNYKZtO9zukEwmgP1y","col-md-1":"tRm008K_WJL79WoNZTNL","col-md-1-start":"l5T2P_bgKts4tdaRkS1d","col-md-1-end":"zOCxfLZpF6BlgC7a_Yq1","col-md-2":"F80DdgVn0m5OpvtSQWka","col-md-2-start":"oI1c7JYfiJtMQHbhngtU","col-md-2-end":"pMQtA_4jh1_1lVknqEP5","col-md-3":"VenqMpdgyKQVUNNQcfqd","col-md-3-start":"seNYL99uoczf9V4MxBxT","col-md-3-end":"YKfF1HFhI9KygA5l3b2J","col-md-4":"yAi0Cv1xDWkoqsaUhvhR","col-md-4-start":"ubhnyZOnkgxNhh6XtVWv","col-md-4-end":"RGOPGQbWMJ9Ei5oFxS7X","col-md-5":"Sz1E2aWbX483ijdi6yge","col-md-5-start":"tku6_bRYrX9tMbgYGmIl","col-md-5-end":"b5JHttOhSEcI1WBlqAjk","col-md-6":"FboSx5MoKTAWbxXyYlCw","col-md-6-start":"Jhs8yEEmodG30edbJvag","col-md-6-end":"IpzbbKVqEqPcfIGkXkwt","col-md-7":"mhCPwfAZ4Kmm_empzJAq","col-md-7-start":"x034ilrJF7rO9UJB2rI1","col-md-7-end":"Wt8t2e16viRrOJ1lLA5v","col-md-8":"S6pIrEy9AMLKx9bgh_Ae","col-md-8-start":"kEfI4tGyuWfHTlRnvIab","col-md-8-end":"PUzX4RRsKq1dnsz3gebS","col-lg-1":"X_pdcLJikd8LS_YAdJlB","col-lg-1-start":"tl936d14Huby4khYp05X","col-lg-1-end":"hnge0LnR69d3NXEtEE1t","col-lg-2":"fj0NUMuyZQcPNgKcjp5Z","col-lg-2-start":"R2ncBX7a2NigdYCcV1OX","col-lg-2-end":"t8vMSDVYno9k9itRwnXb","col-lg-3":"wsDuEN2GqHx6qzo8dUdk","col-lg-3-start":"cIEVPUweWtLBy3xaXnMx","col-lg-3-end":"fajUWBwu1m2B479j3jmz","col-lg-4":"YR0c7fQTgMkDdWzwSyLp","col-lg-4-start":"xlwp8BmplxkKNMI7gamo","col-lg-4-end":"_C4O1w9DUqx1m3gPf8aA","col-lg-5":"Z54F1hAErckAIrKlxnXW","col-lg-5-start":"ezSDWkRHmKSxDJXxuiOH","col-lg-5-end":"T0ChoeAjGJjkkNrYhD4g","col-lg-6":"qtMoMPF6yHvGJnWHSsde","col-lg-6-start":"gdoywN5VPiWERfIBqkph","col-lg-6-end":"wUev_VH5uf_pwFFlbnAU","col-lg-7":"egIPDFJsOpownTClq9XP","col-lg-7-start":"yGhp9yoAW7k0kQik9AB7","col-lg-7-end":"SJ43U9mR5wUg5V2qBeQA","col-lg-8":"cTuyHfMwSUJxN_HdIEgd","col-lg-8-start":"smCr8DaIagcumdvdldiK","col-lg-8-end":"T03NHzQJvzwL6wAfIiTL","col-lg-9":"pMvxM3RJGjqyNdf9qg1Y","col-lg-9-start":"iIVpNRwEnQ_JI5gpp9EN","col-lg-9-end":"ZbQ4u4vGSX5rJOje4uGL","col-lg-10":"gKb5wuIDAlKGbrjK2vxy","col-lg-10-start":"Z7pINdImE2WJiYnZBTqm","col-lg-10-end":"ZTxp6qpvwurMdOnLLSz1","col-lg-11":"NnQTlbfnxPDR6cQ7rygg","col-lg-11-start":"O137wZd6Yl0olSA9PsXR","col-lg-11-end":"zf2OJtQ2MPz6SDoh6CB0","col-lg-12":"U3H6UHW6HqRt9hdzVg3O","col-lg-12-start":"zynnNeS_ZBTxABcVpUQH","col-lg-12-end":"vI8tltFZtFUNAy9Iag9s"}},51519:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={sm:"(max-width: 599px)",md:"(min-width: 600px) and (max-width: 959px)",lg:"(min-width: 960px)",container:"SqdhUZkXCRuIpErj1B3z",fluid:"OZC_9a1LhpWF9dv15Gdh"}},4097:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={container:"VHYulMcpzbr10HWR0iSE","icon-wrapper":"FGpSkMCiIHQjszcV0dbn","close-button":"KoWZcCwhW13xvkEb0QON","main-content":"smrfczkC53EaFM8OJUXs",title:"IKYRWoPwt9xOVEx1wzNS","action-bar":"qM0qY6mPYp1MPN54A3Kg","is-error":"A5YkDkkXuiYgavrY6Nux",icon:"y_IPyP1wIAOhyNaqvXJq","is-warning":"cT5rwuPMZzWvi5o6shMl","is-info":"yo0O3uvNomPsYUXFCpAS","is-success":"oZdDFf1jBLkzn5ICCC6x"}},13149:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={container:"p4qz2tkq0p9hxucJ6Qk2",table:"lbNDyXioOwvyvbALtCBm","is-viewport-large":"s2Lsn4kbm6BrS3DSndRB",card:"cLaNK_XcbTGlRQ4Tp43Q","is-primary":"CYt1X0eH1icRjhtJ28jx",header:"DAkZc1P9A3K12fjEliMg",item:"WUBuYABl8nymjs9NnCEL","last-feature":"ANtCFeb41NhA8PA3H7ZN",value:"Ql2gy_148yW8Vw5vhaKD",icon:"EAQrAnQEW1z1BfdY5gbC","icon-check":"JDSTlLoOC_4aUoH2oNM2","icon-cross":"zNdQRJ1w7BvaQOYyqzHK",popover:"lr7vbX95SKtoe7DarJcZ","popover-icon":"KRrGp2xdkeBOxLZeuQ6X",tos:"H_ZJiRVJg0LiMXPGOcmt","tos-container":"x21z_DixObRDsDaWotP1"}},76066:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={container:"dovianZYLKhnbnh9I06o","price-container":"lljtQMhW7lq5tE5SDJEf","promo-label":"NubApIV1vQCRUNprfm6b",price:"dhFQXpZfMwVI8vuYHnwC","is-not-off-price":"eD7hzxFmdtG_MgmBtl_k",footer:"C64ZjjUAqJC1T2Sa7apS",legend:"UpZDGew6Ay1hPoP6eI7b",symbol:"TDiiPbuW1Z0_05u_pvcK"}},49986:()=>{},36001:()=>{},63132:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={reset:"WQVtrU6q0L1Igcj7wCrQ","headline-medium":"UujoBFTnQNY2cWU2SIsH","headline-small":"TeGO5V_thHw5lDAm1_2M","headline-small-regular":"WolQzb2MsSgiNmLtc7_j","title-medium":"hUB0JT8p1T2Hw28N6qC8","title-medium-semi-bold":"gKZWDv5chz3_O3Syp74H","title-small":"zY2No8Ga4b8shbOQGhnv",body:"tIj0D1t8Cc892ikmgFPZ","body-small":"KdcN0BnOaVeVhyLRKqhS","body-extra-small":"dso3Rh3tl3Xv1GumBktz","body-extra-small-bold":"mQ1UlbN9u4Mg9byO8m7v",label:"PItlW5vRExLnTj4a8eLE","m-0":"TwRpPlktzxhmFVeua7P5","mx-0":"zVfqx7gyb3o9mxfGynn1","my-0":"iSHVzNiB9iVleGljaQxy","mt-0":"xqDIp6cNVr_E6RXaiPyD","mr-0":"S8EwaXk1kyPizt6x4WH2","mb-0":"ODX5Vr1TARoLFkDDFooD","ml-0":"cphJ8dCpfimnky7P2FHg","m-1":"PFgIhNxIyiSuNvQjAIYj","mx-1":"M2jKmUzDxvJjjVEPU3zn","my-1":"io15gAh8tMTNbSEfwJKk","mt-1":"rcTN5uw9xIEeMEGL3Xi_","mr-1":"CQSkybjq2TcRM1Xo9COV","mb-1":"hfqOWgq6_MEGdFE82eOY","ml-1":"I8MxZQYTbuu595yfesWA","m-2":"kQkc6rmdpvLKPkyoJtVQ","mx-2":"j6vFPxWuu4Jan2ldoxpp","my-2":"hqr39dC4H_AbactPAkCG","mt-2":"c3dQnMi16C6J6Ecy4283","mr-2":"YNZmHOuRo6hU7zzKfPdP","mb-2":"Db8lbak1_wunpPk8NwKU","ml-2":"ftsYE5J9hLzquQ0tA5dY","m-3":"Det4MHzLUW7EeDnafPzq","mx-3":"h_8EEAztC29Vve1datb5","my-3":"YXIXJ0h1k47u6hzK8KcM","mt-3":"soADBBkcIKCBXzCTuV9_","mr-3":"zSX59ziEaEWGjnpZa4uV","mb-3":"yrVTnq_WBMbejg89c2ZQ","ml-3":"UKtHPJnI2cXBWtPDm5hM","m-4":"guexok_Tqd5Tf52hRlbT","mx-4":"oS1E2KfTBZkJ3F0tN7T6","my-4":"DN1OhhXi6AoBgEdDSbGd","mt-4":"ot2kkMcYHv53hLZ4LSn0","mr-4":"A1krOZZhlQ6Sp8Cy4bly","mb-4":"pkDbXXXL32237M0hokEh","ml-4":"XXv4kDTGvEnQeuGKOPU3","m-5":"yGqHk1a57gaISwkXwXe6","mx-5":"X8cghM358X3DkXLc9aNK","my-5":"GdfSmGwHlFnN2S6xBn1f","mt-5":"yqeuzwyGQ7zG0avrGqi_","mr-5":"g9emeCkuHvYhveiJbfXO","mb-5":"Lvk3dqcyHbZ07QCRlrUQ","ml-5":"r3yQECDQ9qX0XZzXlVAg","m-6":"aQhlPwht2Cz1X_63Miw0","mx-6":"JyHb0vK3wJgpblL9s5j8","my-6":"cY2gULL1lAv6WPNIRuf3","mt-6":"NBWQ9Lwhh_fnry3lg_p7","mr-6":"yIOniNe5E40C8fWvBm5V","mb-6":"t30usboNSyqfQWIwHvT3","ml-6":"Nm_TyFkYCMhOoghoToKJ","m-7":"C4qJKoBXpgKtpmrqtEKB","mx-7":"S93Srbu6NQ_PBr7DmTiD","my-7":"fJj8k6gGJDks3crUZxOS","mt-7":"cW6D6djs7Ppm7fD7TeoV","mr-7":"DuCnqNfcxcP3Z__Yo5Ro","mb-7":"im8407m2fw5vOg7O2zsw","ml-7":"G0fbeBgvz2sh3uTP9gNl","m-8":"kvW3sBCxRxUqz1jrVMJl","mx-8":"tOjEqjLONQdkiYx_XRnw","my-8":"op5hFSx318zgxsoZZNLN","mt-8":"c9WfNHP6TFKWIfLxv52J","mr-8":"sBA75QqcqRwwYSHJh2wc","mb-8":"GpL6idrXmSOM6jB8Ohsf","ml-8":"HbtWJoQwpgGycz8dGzeT","p-0":"uxX3khU88VQ_Ah49Ejsa","px-0":"KX0FhpBKwKzs9fOUdbNz","py-0":"PfK8vKDyN32dnimlzYjz","pt-0":"emxLHRjQuJsImnPbQIzE","pr-0":"kJ8WzlpTVgdViXt8ukP9","pb-0":"tg_UIUI11VBzrTAn2AzJ","pl-0":"uczvl8kaz84oPQJ2DB2R","p-1":"o7UHPcdVK3lt7q3lqV4o","px-1":"IDqEOxvDoYrFYxELPmtX","py-1":"DdywPW2qSYlu2pt8tpO2","pt-1":"npy3hw4A5QSkDicb2CJJ","pr-1":"LgbptTApNY5NwLQvEFAt","pb-1":"WZQy2SZuZso59bUsXXyl","pl-1":"o331apInxNunbYB3SfPE","p-2":"fMPIyD9Vqki1Lrc_yJnG","px-2":"i2pMcTcdrr10IQoiSm_L","py-2":"eA702gn32kwptiI1obXH","pt-2":"o9bGieUKcYc8o0Ij9oZX","pr-2":"SwZcFez1RDqWsOFjB5iG","pb-2":"eHpLc_idmuEqeqCTvqkN","pl-2":"vU39i2B4P1fUTMB2l6Vo","p-3":"JHWNzBnE29awhdu5BEh1","px-3":"X72lGbb56L3KFzC2xQ9N","py-3":"BzfNhRG8wXdCEB5ocQ6e","pt-3":"srV0KSDC83a2fiimSMMQ","pr-3":"lUWfkmbQjCskhcNwkyCm","pb-3":"Ts0dIlc3aTSL7V4cIHis","pl-3":"CzlqQXXhX6MvorArFZ8B","p-4":"TqMPkQtR_DdZuKb5vBoV","px-4":"a7UrjhI69Vetlcj9ZVzz","py-4":"StEhBzGs2Gi5dDEkjhAv","pt-4":"FGneZfZyvYrt1dG0zcnm","pr-4":"APEH216rpdlJWgD2fHc8","pb-4":"oGwXC3ohCic9XnAj6x69","pl-4":"U6gnT9y42ViPNOcNzBwb","p-5":"IpdRLBwnHqbqFrixgbYC","px-5":"HgNeXvkBa9o3bQ5fvFZm","py-5":"tJtFZM3XfPG9v9TSDfN1","pt-5":"PdifHW45QeXYfK568uD8","pr-5":"mbLkWTTZ0Za_BBbFZ5b2","pb-5":"vVWpZpLlWrkTt0hMk8XU","pl-5":"RxfaJj5a1Nt6IavEo5Zl","p-6":"SppJULDGdnOGcjZNCYBy","px-6":"palY2nLwdoyooPUm9Hhk","py-6":"WYw1JvZC0ppLdvSAPhr_","pt-6":"YEEJ9b90ueQaPfiU8aeN","pr-6":"QE0ssnsKvWJMqlhPbY5u","pb-6":"n8yA3jHlMRyLd5UIfoND","pl-6":"tXHmxYnHzbwtfxEaG51n","p-7":"kBTsPKkO_3g_tLkj77Um","px-7":"RyhrFx6Y1FGDrGAAyaxm","py-7":"CBwRpB0bDN3iEdQPPMJO","pt-7":"vQVSq6SvWKbOMu6r4H6b","pr-7":"oBy5__aEADMsH46mrgFX","pb-7":"KVEXoJqf1s92j0JMdNmN","pl-7":"ZMXGNrNaKW3k_3TLz0Fq","p-8":"tuiR9PhkHXhGyEgzRZRI","px-8":"U7454qyWkQNa2iaSJziu","py-8":"VLYIv2GVocjuN93e8HC8","pt-8":"X1rm9DQ1zLGLfogja5Gn","pr-8":"JS7G6kAuqJo5GIuF8S5t","pb-8":"Y8F9ga1TDCMbM1lj4gUz","pl-8":"AJuyNGrI63BOWql719H8"}},69973:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={global:"_fUXxnSp5pagKBp9gSN7"}},85157:()=>{},45067:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={"jp-wrap":"EiaNctK1_P9pPqOeiaSI","jp-row":"ogHZg_sJCljylz3VJfsf","sm-col-span-1":"zv7eGvijKRkbPVakubHw","sm-col-span-2":"VoJNoiya_1ck3_kXS6_C","sm-col-span-3":"ecv0NO526NoTNbpALA1A","sm-col-span-4":"OfBdkceMzeHvRbzhqDlP","md-col-span-1":"JLb3NpEKN8pOaWd7K1bu","md-col-span-2":"fsMPGqPKE4mjMIPFwl77","md-col-span-3":"DIK_zdaGAQ09eKspBJ4E","md-col-span-4":"shXYpxPu3WCJsR8aOHtz","md-col-span-5":"s7ElrOqG_yGd5SIfwqOR","md-col-span-6":"Cxml9uzGvArAL8_RDs_p","md-col-span-7":"aANxBKDGx72eDqU0iUPj","md-col-span-8":"XxyzuTY3mnQcl9EGZadm","lg-col-span-1":"Sfo4WaSNIWInJ93Abd3w","lg-col-span-2":"tQS7SKUGrU4THhWMysbo","lg-col-span-3":"I94U7mpY4h16pcOksZNF","lg-col-span-4":"uWMb9k77kQxBdS5MTt0s","lg-col-span-5":"rKwEEZQxK9s_POMg5Jss","lg-col-span-6":"UcPXX_s06IPCkF7ZjH3D","lg-col-span-7":"CrQdtiCFkRbzY6K2dFvt","lg-col-span-8":"rEUALOmOdUBXO0Us871z","lg-col-span-9":"NqXa9TlcTEviVsB53hBV","lg-col-span-10":"OnWVeiQiwgQ9lzdGPW66","lg-col-span-11":"D2PkTcy7b8u2K9QXY6VQ","lg-col-span-12":"EcqBhzAyxo5RDc2Y6m7K","md-col-span-0":"gB1mWzHOM38d80lrhBRX","sm-col-span-0":"KNQXLP78ejczOkour3zg","jp-cut":"rBVbaVWBnBRtTMrUKZxm",modal:"gfM_DIJrVbRhmKdAphIm","jetpack-logo":"zfJfONxRAw0fHjXUS7LN",animating:"pnwbCuWbV0PNQr1LFpRh",button:"_j4GWTmW5psCHFYh6R0x",headline:"saSAjv8yulVXQDoqDJEI",paragraph:"O_hcdbeMivIhBn7ApDnS","jetpack-logo-triangles":"FCnyb_xCK7DhJ63p6TEd","video-wrap":"Qn5xayjI_jH2m1d6BEoq",videoMove:"OmAVpCQ270MqI4IsT9Ky",slidein:"Axe8f2LgqEBZHVcsRgY5","content-wrap":"iBMDoShSmqpt72YfJb36","hi-user":"eQG1KKK8jjKtQyzfv573","content-wrap-text":"l35bIyiqYJiZ6tVYvJtC","powers-wrap":"HQVDZ6J3x6SJNYFX5khS","jetpack-products":"KdvmPIjelQIFiPQGuIYf"}},19686:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={"action-button-dropdown":"IorMv97NU2iEXtcbbVoN","dropdown-item":"_I09VyiyxzT6EKE6RwVF","dropdown-item-label":"Gmum0UGKXz4YlMG9Fwgm","active-action-checkmark":"przPMe99k8Mad0jsxI1R","action-button":"vRIYDzW5yrfnUoDPdBAN","dropdown-chevron":"KIyEfIhAZ4TElM0K5kuH",primary:"V4VpHqht9Rm42tiZfsxU",secondary:"vZfbVKYvaUjhpAuMD9jg","has-additional-actions":"SlMzf1xQ5c9GfEx2RQgv"}},8757:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={container:"OpMBda4vebhRbW8Fm6YC","is-link":"BghJAx9hSagUdHWOUaYE","has-error":"IWsEW5nnNWUqqcT3K5L1",title:"r3UCwgwCthua6lDCvIBI",name:"vpluqUMgmwx9_f8wCVIn"}},91469:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={icon:"rV_5QyvhDnsVjCX4pb0h",link:"MO1jDNY8VPqeNS9xL8jE"}},96007:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={"relative-col":"zvd4dCB_bBDiXJKKDqXm","close-link":"ly4o9lSswAGHFXqGUEIO","account-description":"u64Go3kwEZ7MD9eji0H1","account-images":"_RT41NE3LU4R0ubcij2y",wordpress:"cFGWJeRiGHjAr8D7CWJW",google:"Iz3l7a05TP6HK9S92TIL",apple:"lmQ0wFmnk4kKkGVjokPA",github:"ZSFTmY3zE3VP4w0QeaqV","all-features":"AoIs8wD92wKR8RpQj6Uc"}},15200:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={"connection-status-card":"kezuOHNvu9vdvlJ86Fwg",status:"qJizORs2q_CVCj9L6XLe","avatar-wrapper":"VmtuLc2xRqmsO6cK8qjF",cloud:"MdTRfQ3eo5qZKChZlzNj",jetpack:"PbEpL02SEH9VNAlbKCfV",avatar:"TD4AUM9gcTVAB6JHB5ZR",line:"yjl73qv0VWoPP8IhGreh",error:"J0GIu2rNR7rXocQTyd8p",warning:"rAV2E93SG8WpokuGk9jh",info:"YZ7FNKEm9qpvQ4ZkbAz5","connect-action":"TYNMsILey2vUwnyZSjJU","list-item":"oH9tzGE80LnB6Og69RFz","list-item-text":"xXVEWvQllVsFGmJY8WEp",success:"q4_FOHifGawULuFBZke9"}},66746:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={title:"iG63b_J1HNfT8xEIq619","dropdown-menu":"T8UhA3lZQjpZsyaah9J6","evaluation-footer-link":"Tobf3RFq_fT42YGp_h4g","recommendations-list":"g69ZGQc9wey1u1beD0IP","slider-button":"aWIwsRSR2EZlTGwFYt5J","prev-button":"DzezAg6fdaIC26GPBCvD","next-button":"buuFW6iZyD5Nnljxcxj8"}},21751:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={icon:"hdasSNj9k3Sc5PwXK4uE",link:"eWN8Hj0SBRDq1F48n_Fg"}},71587:()=>{},32976:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={"jp-wrap":"yWUvvF4WJLNDSpMgBMfm","jp-row":"ka1fVHj2HOkHjhdoEFOZ","sm-col-span-1":"JMOO4Y_9yhTO9lwLnRUx","sm-col-span-2":"PFDPAqk51qox_ChLqJwm","sm-col-span-3":"ault0jHVfWpShqOGooIP","sm-col-span-4":"GqpvdRzmzPJELtSm4FEN","md-col-span-1":"Ym4_YneEGD_iZD6W1C2o","md-col-span-2":"NbvHnnDtWw8n9BEUQ0Oy","md-col-span-3":"ElMT7rhxe5ZJKO41MnhW","md-col-span-4":"yKjnqjibn_wW_1tWWt5Q","md-col-span-5":"Pb30lOcQFpzUX57GwflS","md-col-span-6":"pC1wxc_R8y4pNILHsiiY","md-col-span-7":"pChscSCnudQoWGjMFKI_","md-col-span-8":"qw1H2gAgF3lDCI2Tbkmb","lg-col-span-1":"VzcA_rrxBK3g4ozA0oD9","lg-col-span-2":"pNAa7O2adRZD8Slgk9iR","lg-col-span-3":"tlIMLlipexblj8CeOx4B","lg-col-span-4":"Dvt0u5l2Rr1BhBmvYAzl","lg-col-span-5":"BiUsgNTc0tyc7tC5jnzE","lg-col-span-6":"ulJXAsj7G2ROJ1g3_s28","lg-col-span-7":"HsoVlyVLsXYClx9Atox0","lg-col-span-8":"oXxjRQNNj2cfIpFBqC1W","lg-col-span-9":"qXgUn4Adg9xE_JnbuDio","lg-col-span-10":"xMpqTLiLfYFEJiRPQQQq","lg-col-span-11":"IiGo3Sz2FDZN7_eGElwA","lg-col-span-12":"Om8BNCjfgqQ_wmPQjfOY","md-col-span-0":"t10ZWzP7ADjJnR4tqxRS","sm-col-span-0":"eOUlZG8Pelh_Xj0aSoHG","jp-cut":"l546LrwBEePz434NFK5Q",logo:"Q7w4fcEcemZ2nlwaYNog",wrapper:"AoNQsOaTt6gSf0H6Yasz",helper:"v13ZwGzUnecPA7Y3URAl",container:"EeDbu9pXFWTsCzfTpv2v",title:"BmSvoIi3rErkcrRiOi2W",content:"mojRoVuWdDJo0E6LEjJw"}},90530:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={modal:"HeJe1crc9XaWWpLvIPit",container:"or0JUScxkJPmNsfrxkEK"}},42997:()=>{},99633:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={skeleton:"jUxY9oXwnEDQLadQBNQp","skeleton-loading":"odHEpyTWVIDgdJClTyHg",spaceBelow:"Vzu6IGmwfFGn5RPCIWOY"}},67328:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={heading:"jErCC9oKHSM15BxzFyQK",notice:"oVoYbwbFB6U2o90Njusk","bigger-than-medium":"Snc8NEmDelsbhlH4285s",cta:"R5tvcsARTGN0A_z3DygA",message:"wBVXH4OTNwLHPRpN4nsq",nofill:"F1qvEnFfHs5nz3zFZUOV",separator:"SrQxAOBa5ZaSKP8wlut9"}},89675:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={"connection-form":"XsCIqtbkjCGvQuTEqP12",title:"FuIWMXR9G82lNoOWSg7Z",description:"VqV6BERV7qt2YRiC8ant","social-button":"H7h4wR1WKIziIFiwJpzN","social-button-text":"pSJyHDRGl_R9CF7J_wzX",separator:"TnFm4M8CVuTak6Vq2NsE",line:"eKWjmNNdlY3uWjVgR8RI","email-input-container":"Scnx4BQ8P2bIZ0YxBThk","email-input":"Ps4m_56jJQ5YgQb25OW0","submit-button":"IIUH0pxUdd27eEyqfQFI",tos:"IySisqLBT5FBSpx8ksyG"}},20260:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={"jetpack-logo":"hs8vtMKdbmvStRLqOShe","onboarding-screen":"a2dTOxFWByKrVw1RIDQT",column:"q0k48EMOblqQLxSxIKZa","primary-column":"w9obJdf7GdvAmyMTJp12","seconday-column":"Jqm3k3aZ4rGDtBCVeocD",testimonials:"PhMWEQDEAfUHteBMf1hM"}},5423:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={container:"wiobThfXJCuhGNrbFIT6","plan-container":"pm2EPQZx6p2VQSiiVCpX","expire-date":"VgAxgahF9bC2M__FiIgV","expire-date--with-icon":"dbRwkMLqcMF67njPoAF7","is-expired":"V8N_dXausMNmQUO_ROa1","is-expiring-soon":"jYhEGFLjpRv6QV1Ti7dQ","actions-list-item":"Doju0RxvvN9JS12mf489"}},76023:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={container:"pIsYsXFAJ9KX2VrS5rmY","has-error":"Pp9cMIaESLYelLOX3tkI","has-warning":"NhOH6VeEpSrNGAPQik0w",description:"gmPKCDKZcfQt9WieTyKS",actions:"fDBaV7I4yUO6w5AWVEtr",buttons:"SelsBZT7eIWRQyl1dasZ",title:"LHYJUrOej3toDvOAiz4k",priceContainer:"aZvwqVNw6rvImSxn0DM9",price:"R4OXFRkmlHAH8ScIgYXh",discounted:"g0_8bbVjnVh0D_pS264j",term:"nqFgW_S2jbHPu9yPq9E_",status:"f5VJYwuJmjxH8PVxEbbv",active:"ry3pxoGtmQ0ZeSwp7F_3",inactive:"LZzE3EG7m3CDR46wwwEr",warning:"TZUP7W6QYGajITiMNYas",error:"Vx_jpT02r8W6NfsRSB02","is-fetching":"PdsJCfyyjSgrNDheF2qi","blink-animation":"dWP7ypkVXudMbAa38W5Z"}},52232:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={"no-backup-stats":"wI7QgVzPXvVVu6kfnTT8","main-stats":"eqyxcUmdF0s3gmmlZGyD","main-stat":"gxY6D0PeVtGk9iSB5E_u","visual-stat":"D_uE0LD5CvpfM2FNp55k","more-stats":"VTBUdi1D4DW34F0yixMk",activity:"BXQQYCO_pEmYmzBBwYxR",summary:"qdvOzzbrd3KQK7DNg8eg",description:"PFbMp_gtGLBMWbbYtO0q",time:"ZFCNMiywyFvaifoIQI5w",backupWarning:"eKy3yAPsoarwSQMou_kk",iconError:"Bt6AOGkWP6xSfUbq2QBQ",backupErrorContainer:"GA8m1YdHe3xODczqUUor",iconContainer:"KixWjGbAhopt1dR0Hv9n",errorDescription:"iGcRsZkwWJW_WJglA1oO"}},14479:()=>{},6619:()=>{},10372:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={"single-contextual-info":"g4lyov8aMDggdD4yOi1p","main-value":"Ys5ScZ_dYn2O2AzDE5Yi","single-contextual-info-placeholder":"sUNg_b7XteVXOrpHAkJg","contextual-percentage-change":"cF6QAJf1vXXAMuutXPcq",neutral:"coY634LconQ7gzDDNJeu",positive:"kyqpwKaL2FyQ8CtxJQ0f",negative:"aXf37lEOcjpNV8ImLaYK","change-icon":"OyGdoGzsQ48VaVVR99_H","change-values":"cKLicfMCaDSGPlX222jF",cardListTitle:"ZaPXoMGC_e8NfFoBgA95",fullStatsCard:"gb2kSZHPauLu96D9HAIg",cardlist:"qpN923qyxjI06NCgFC8j",valueSectionHeading:"hpd1bQCLIZYXpZJa22qw"}},20906:()=>{},21557:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={card:"q0T8YyQxRawhpDtvJjxI",container:"B7JDqI_vtKxSy5GjvqA1","card-header":"zj7xadmhIWeuf7ZwvVTS","product-bundle-icon":"GsioW6IsC8EMYE3U6788","product-bundle-icons":"dbz07JqxOlivjKO4vBEF","product-icon":"cfEO8udWbRGPFJzW8Jg5","plus-icon":"zlh3zbjUe4Z8cBs7uVVe","product-has-required-plan":"qoZuzG5EcDa231hC6t0P","checkout-button":"Q6uUUQCPWS6_6nLxIn68","components-spinner":"YU4iBCRze09ZP3iCsdcb","free-product-checkout-button":"OrQG7DjDd9Ha2Xj1Mx3L",features:"Q1jaYDpa2AVfJpA29wT0","highlight-last-feature":"HL4gSxsF0skYGhGuqH90",disclaimers:"sEcLfpWjo0GF7QrxD3Lt","price-container":"xgv3jRkeF39aEQELCwru",price:"twlleZ5Ehq4bB7CvKVSW","is-old":"Qg4rPEvXsqmod1s_31d8","price-description":"ApsgxIornVy_3KnciVeJ","supporting-info":"NMxcZL17aEP7v81uG3zD","tos-container":"gCTKfAPzJqZas7CaRbKN"}},68957:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={loadingBlockContainer:"iSc4n8zVaElbs0TPAWH5"}},34291:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={"component-product-interstitial-modal":"uPEKVw20OlWzA_8u7YAc",wrapper:"dZO6FXcGE5vhcJ8Y_C9w","component-product-interstitial-modal__overlay":"FmxgyZZvzjuwp3GbBNv1",primary:"f6I4877w7XpHhEnooqks","primary-content":"EtaGFgAv0H3akflLBvof","price-container":"KGwdaPYtQhRLcUVbDyy9","primary-footer":"IwiPAQFH04pNmEH07X9N",secondary:"DKmru53sFgfEs9AgBdqM","modal-with-video":"anXLrcgHHsm2LnEfXUVk",additional:"pbC573UpPZ3Z1WF6H0rZ",features:"uQb9f6VHehuQfLoouBsQ"}},67691:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={container:"svE2cJL5t2FarzcDQYNe",imageContainer:"dvEJEDNTnmVfVxtLa4uU",aiImageContainer:"K1VY4DNP8PHMWAEVBC_h","product-interstitial__header":"nk_COGPrkBNLp7lVt4sQ","product-interstitial__license-activation-link":"ukgQ5TmLablG3svUKjdw","not-strong":"Vofm70ADXSe43GamWEaF",card:"EUcF2LKeC2GyhWD2FKCP","buttons-row":"Bm21LIBQtpRo3ZhOxXBG","product-interstitial__product-header":"jwIGzADCnBI_ai9xYYiS","product-interstitial__product-header-name":"fTbxuhh_SfMgenyWvGN0","product-interstitial__hero-section":"eR56lApoP14RIBAhO1UN","product-interstitial__hero-content":"vHnITd5JOCOgxCgXTgoD","product-interstitial__hero-heading":"vAGLpjIGi6GA8ghbumN7","product-interstitial__hero-sub-heading":"oag8YaslCEiUVu8GKKL3","product-interstitial__hero-cta":"FhH03GPt9FK1VH9NZhYA","product-interstitial__hero-side":"VUXAtah2JvUCNc4cXjPp","stats-card":"dyPAjc3M4y3Q6gJfWnjw","stats-card-icon-check":"Ll1l9bEuf5G5oh3AENep","product-interstitial__stats-card-text":"WrzTysWiqUiuEPvpFqau","product-interstitial__stats-card-value":"d4faYkf9yL7oW7pwcjmP","product-interstitial__section":"acffvOSYc5S8x4P_AYnQ","product-interstitial__section-wrapper":"M5YNmgy60Q_UtaxKgQcv","product-interstitial__section-wrapper-wide":"HJiOvun8sHkiFpNL0sl6","product-interstitial__section-heading":"mXinUJfpSTS9EVB8M8K_","product-interstitial__section-sub-heading":"QKjsnliPyLu4n08yVUUM","product-interstitial__section-emoji":"xQJJkJ4v7Jm8iSJ0z0Dj","product-interstitial__usage-videos":"VWIBGwuHqtAKg_5Hch92","product-interstitial__usage-videos-item":"mnkNhprYIatxfziERMwM","product-interstitial__usage-videos-video":"WEiaYLqJwV2IzC8LD9Fs","product-interstitial__usage-videos-content":"GJlowVsJybna1MFcIiIU","product-interstitial__usage-videos-heading":"_OeUvI9GrP00qh6Uk7Tg","product-interstitial__usage-videos-text":"C6I5jYHW2IJSDBoKvhcB","product-interstitial__usage-videos-link":"XdnAdAwkxAW5yvUx3NRr","product-interstitial__ai-notice":"MCKgMfLVZtkgWu5m5u6L","product-interstitial__new-badge":"c0SItK48SRkWfZUCECbZ"}},9851:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={container:"SWwV4Pw6OZ5vU3PqPXmr",imageContainer:"r7tUofa9Z3A5ziKVR1H7",aiImageContainer:"i_AnOR3MaQLraGvb2QU5","product-interstitial__header":"YcYvLvdvWrb1EUZoVsE8","product-interstitial__license-activation-link":"uGTTsKoIOoZdYhk6uPnl","not-strong":"NzDTsxhX8D1mlckNpewR"}},76812:()=>{},71070:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={"section-stats-highlights":"Jvb1njqMy7ML1zikhbWn","section-title":"mpr8_ygU8woV4bVR1xvw","section-description":"gwO_Q0L0jbwMARVlBezu","cards-list":"qwy7CsLeEbXvaPwgC9WV","stats-card":"Hrbg7DeSJs6gas9zdPDR","stats-card-icon":"NFpbo5AINn6I6avKFGby","stats-card-heading":"aoQZCG0JeyWmy2J6vVxF","stats-card-count":"M6ApyXg79vuXo6GwDkbO","is-pointer":"DYHb5e6QhgXejWyo9s78","stats-card-count-value":"OlInbY5YnDO06MEQHv98","stats-card-difference":"EtbKbd5m85w7oYT4stIs","stats-card-difference--positive":"Awr7zl75sfAsFPHK9kDG","stats-card-difference--negative":"QFSZbIKFdWO3HEPBZyhc","stats-card-difference-icon":"GgJAnS4gaEEGmRCP5n8y","stats-card-difference-absolute-value":"mjiNtwdbKpfo9edGVes4",actions:"pAt4v_KG9Ir19wNcEtEj"}},52290:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r={banner:"jrGNTKcgeXk9HKzolut9","banner-card":"wg3mZsoPekZWlBgOvdZ6","is-mandatory":"aDxB89WgtARQqNWd4ZeK",dismiss:"sGP8lxDpRSjt0Fh7wxoR","banner-content":"z5EQSkU36nsjxHEBSfNN","banner-description":"MwBwVaEj6u_zRgfrFR9b","banner-image-evaluation":"UgPNtuFW7lTJ06k39EsK","is-selected":"ilVOud0_OCGK4HciazB_","banner-image":"EtcggGK0Bk8POQD986Og",form:"TSiu5sC6MdANROjUkUJM","form-checkbox":"iqJfpZM9IYXuFSXvuoEe","form-actions":"Vozbq8Inlk5SxoVnn2G5","form-link-action":"s_V1BM1Wtt3He4eF2TCu","loading-banner":"FMZ2bZdjMxKFePbMwRi3","loader-container":"eShkT8UhgFL0N__pJEA8",logo:"GZ2uVyfGabA_66Y8nmuF","circle-outline":"jkWzdt8A2twwREkaF2qX","circle-fill":"Ktcwz9OsGT_3yNKZq6BA","triangles-outline":"lZq4cdGYKYAgiVEYCtXw","triangles-fill":"WQpz4j3rH6uEqAXwDrR8",drawCircle:"w9IUcbm9vJHQeg2OXhtF",fadeIn:"xAohbjzRzlC5o13repbp","connection-ready":"iOKKzf48kelOFS8vRBwR",popIn:"OrGIdZzrmFu39hFSKNfg",recommendations:"OqFqx9KLY3auyUaWh5tp","products-icons":"JdllqWQef8TBWPF5UT6Z",slideDown:"_brJ7gDgGneDqAzmDSZG"}},75001:()=>{},44997:e=>{var t=1e3,a=60*t,r=60*a,o=24*r,n=7*o,l=365.25*o;function s(e,t,a,r){var o=t>=1.5*a;return Math.round(e/a)+" "+r+(o?"s":"")}e.exports=function(e,i){i=i||{};var c=typeof e;if("string"===c&&e.length>0)return function(e){if((e=String(e)).length>100)return;var s=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!s)return;var i=parseFloat(s[1]);switch((s[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return i*l;case"weeks":case"week":case"w":return i*n;case"days":case"day":case"d":return i*o;case"hours":case"hour":case"hrs":case"hr":case"h":return i*r;case"minutes":case"minute":case"mins":case"min":case"m":return i*a;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}(e);if("number"===c&&isFinite(e))return i.long?function(e){var n=Math.abs(e);if(n>=o)return s(e,n,o,"day");if(n>=r)return s(e,n,r,"hour");if(n>=a)return s(e,n,a,"minute");if(n>=t)return s(e,n,t,"second");return e+" ms"}(e):function(e){var n=Math.abs(e);if(n>=o)return Math.round(e/o)+"d";if(n>=r)return Math.round(e/r)+"h";if(n>=a)return Math.round(e/a)+"m";if(n>=t)return Math.round(e/t)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},15762:(e,t,a)=>{"use strict";var r=a(53761);function o(){}function n(){}n.resetWarningCache=o,e.exports=function(){function e(e,t,a,o,n,l){if(l!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var a={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:n,resetWarningCache:o};return a.PropTypes=a,a}},28120:(e,t,a)=>{e.exports=a(15762)()},53761:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},70028:(e,t,a)=>{"use strict";a.d(t,{I9:()=>v,N_:()=>h,ok:()=>w});var r=a(51609),o=a(75795),n=a(29539),l=a(36992);function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[a]=e[a]);return o}function c(e){return void 0===e&&(e=""),new URLSearchParams("string"==typeof e||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce(((t,a)=>{let r=e[a];return t.concat(Array.isArray(r)?r.map((e=>[a,e])):[[a,r]])}),[]))}new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);const u=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"];try{window.__reactRouterVersion="6"}catch(e){}new Map;const d=r.startTransition;o.flushSync,r.useId;function v(e){let{basename:t,children:a,future:o,window:s}=e,i=r.useRef();null==i.current&&(i.current=(0,l.TM)({window:s,v5Compat:!0}));let c=i.current,[u,v]=r.useState({action:c.action,location:c.location}),{v7_startTransition:p}=o||{},m=r.useCallback((e=>{p&&d?d((()=>v(e))):v(e)}),[v,p]);return r.useLayoutEffect((()=>c.listen(m)),[c,m]),r.useEffect((()=>(0,n.V8)(o)),[o]),r.createElement(n.Ix,{basename:t,children:a,location:u.location,navigationType:u.action,navigator:c,future:o})}const p="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,m=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,h=r.forwardRef((function(e,t){let a,{onClick:o,relative:c,reloadDocument:d,replace:v,state:h,target:f,to:g,preventScrollReset:w,viewTransition:b}=e,y=i(e,u),{basename:x}=r.useContext(n.jb),_=!1;if("string"==typeof g&&m.test(g)&&(a=g,p))try{let e=new URL(window.location.href),t=g.startsWith("//")?new URL(e.protocol+g):new URL(g),a=(0,l.pb)(t.pathname,x);t.origin===e.origin&&null!=a?g=a+t.search+t.hash:_=!0}catch(e){}let k=(0,n.$P)(g,{relative:c}),E=function(e,t){let{target:a,replace:o,state:s,preventScrollReset:i,relative:c,viewTransition:u}=void 0===t?{}:t,d=(0,n.Zp)(),v=(0,n.zy)(),p=(0,n.x$)(e,{relative:c});return r.useCallback((t=>{if(function(e,t){return!(0!==e.button||t&&"_self"!==t||function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e))}(t,a)){t.preventDefault();let a=void 0!==o?o:(0,l.AO)(v)===(0,l.AO)(p);d(e,{replace:a,state:s,preventScrollReset:i,relative:c,viewTransition:u})}}),[v,d,p,o,s,a,e,i,c,u])}(g,{replace:v,state:h,target:f,preventScrollReset:w,relative:c,viewTransition:b});return r.createElement("a",s({},y,{href:a||k,onClick:_||d?o:function(e){o&&o(e),e.defaultPrevented||E(e)},ref:t,target:f}))}));var f,g;function w(e){let t=r.useRef(c(e)),a=r.useRef(!1),o=(0,n.zy)(),l=r.useMemo((()=>function(e,t){let a=c(e);return t&&t.forEach(((e,r)=>{a.has(r)||t.getAll(r).forEach((e=>{a.append(r,e)}))})),a}(o.search,a.current?null:t.current)),[o.search]),s=(0,n.Zp)(),i=r.useCallback(((e,t)=>{const r=c("function"==typeof e?e(l):e);a.current=!0,s("?"+r,t)}),[s,l]);return[l,i]}(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(f||(f={})),function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"}(g||(g={}))},29539:(e,t,a)=>{"use strict";a.d(t,{$P:()=>v,BV:()=>N,C5:()=>H,Ix:()=>O,V8:()=>z,Zp:()=>f,g:()=>g,jb:()=>i,qh:()=>L,x$:()=>w,zy:()=>m});var r=a(51609),o=a(36992);function n(){return n=Object.assign?Object.assign.bind():function(e){for(var t=1;t{a.current=!0})),r.useCallback((function(r,o){void 0===o&&(o={}),a.current&&("number"==typeof r?e.navigate(r):e.navigate(r,n({fromRouteId:t},o)))}),[e,t])}():function(){p()||(0,o.Oi)(!1);let e=r.useContext(l),{basename:t,future:a,navigator:n}=r.useContext(i),{matches:s}=r.useContext(u),{pathname:c}=m(),d=JSON.stringify((0,o.yD)(s,a.v7_relativeSplatPath)),v=r.useRef(!1);return h((()=>{v.current=!0})),r.useCallback((function(a,r){if(void 0===r&&(r={}),!v.current)return;if("number"==typeof a)return void n.go(a);let l=(0,o.Gh)(a,JSON.parse(d),c,"path"===r.relative);null==e&&"/"!==t&&(l.pathname="/"===l.pathname?t:(0,o.HS)([t,l.pathname])),(r.replace?n.replace:n.push)(l,r.state,r)}),[t,n,d,c,e])}()}function g(){let{matches:e}=r.useContext(u),t=e[e.length-1];return t?t.params:{}}function w(e,t){let{relative:a}=void 0===t?{}:t,{future:n}=r.useContext(i),{matches:l}=r.useContext(u),{pathname:s}=m(),c=JSON.stringify((0,o.yD)(l,n.v7_relativeSplatPath));return r.useMemo((()=>(0,o.Gh)(e,JSON.parse(c),s,"path"===a)),[e,c,s,a])}function b(e,t,a,l){p()||(0,o.Oi)(!1);let{navigator:s}=r.useContext(i),{matches:d}=r.useContext(u),v=d[d.length-1],h=v?v.params:{},f=(v&&v.pathname,v?v.pathnameBase:"/");v&&v.route;let g,w=m();if(t){var b;let e="string"==typeof t?(0,o.Rr)(t):t;"/"===f||(null==(b=e.pathname)?void 0:b.startsWith(f))||(0,o.Oi)(!1),g=e}else g=w;let y=g.pathname||"/",x=y;if("/"!==f){let e=f.replace(/^\//,"").split("/");x="/"+y.replace(/^\//,"").split("/").slice(e.length).join("/")}let _=(0,o.ue)(e,{pathname:x});let k=E(_&&_.map((e=>Object.assign({},e,{params:Object.assign({},h,e.params),pathname:(0,o.HS)([f,s.encodeLocation?s.encodeLocation(e.pathname).pathname:e.pathname]),pathnameBase:"/"===e.pathnameBase?f:(0,o.HS)([f,s.encodeLocation?s.encodeLocation(e.pathnameBase).pathname:e.pathnameBase])}))),d,a,l);return t&&k?r.createElement(c.Provider,{value:{location:n({pathname:"/",search:"",hash:"",state:null,key:"default"},g),navigationType:o.rc.Pop}},k):k}function y(){let e=function(){var e;let t=r.useContext(d),a=S(j.UseRouteError),o=P(j.UseRouteError);if(void 0!==t)return t;return null==(e=a.errors)?void 0:e[o]}(),t=(0,o.pX)(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),a=e instanceof Error?e.stack:null,n="rgba(200,200,200, 0.5)",l={padding:"0.5rem",backgroundColor:n};return r.createElement(r.Fragment,null,r.createElement("h2",null,"Unexpected Application Error!"),r.createElement("h3",{style:{fontStyle:"italic"}},t),a?r.createElement("pre",{style:l},a):null,null)}const x=r.createElement(y,null);class _ extends r.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||"idle"!==t.revalidation&&"idle"===e.revalidation?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:void 0!==e.error?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){console.error("React Router caught the following error during render",e,t)}render(){return void 0!==this.state.error?r.createElement(u.Provider,{value:this.props.routeContext},r.createElement(d.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function k(e){let{routeContext:t,match:a,children:o}=e,n=r.useContext(l);return n&&n.static&&n.staticContext&&(a.route.errorElement||a.route.ErrorBoundary)&&(n.staticContext._deepestRenderedBoundaryId=a.route.id),r.createElement(u.Provider,{value:t},o)}function E(e,t,a,n){var l;if(void 0===t&&(t=[]),void 0===a&&(a=null),void 0===n&&(n=null),null==e){var s;if(!a)return null;if(a.errors)e=a.matches;else{if(!(null!=(s=n)&&s.v7_partialHydration&&0===t.length&&!a.initialized&&a.matches.length>0))return null;e=a.matches}}let i=e,c=null==(l=a)?void 0:l.errors;if(null!=c){let e=i.findIndex((e=>e.route.id&&void 0!==(null==c?void 0:c[e.route.id])));e>=0||(0,o.Oi)(!1),i=i.slice(0,Math.min(i.length,e+1))}let u=!1,d=-1;if(a&&n&&n.v7_partialHydration)for(let e=0;e=0?i.slice(0,d+1):[i[0]];break}}}return i.reduceRight(((e,o,n)=>{let l,s=!1,v=null,p=null;var m;a&&(l=c&&o.route.id?c[o.route.id]:void 0,v=o.route.errorElement||x,u&&(d<0&&0===n?(m="route-fallback",!1||R[m]||(R[m]=!0),s=!0,p=null):d===n&&(s=!0,p=o.route.hydrateFallbackElement||null)));let h=t.concat(i.slice(0,n+1)),f=()=>{let t;return t=l?v:s?p:o.route.Component?r.createElement(o.route.Component,null):o.route.element?o.route.element:e,r.createElement(k,{match:o,routeContext:{outlet:e,matches:h,isDataRoute:null!=a},children:t})};return a&&(o.route.ErrorBoundary||o.route.errorElement||0===n)?r.createElement(_,{location:a.location,revalidation:a.revalidation,component:v,error:l,children:f(),routeContext:{outlet:null,matches:h,isDataRoute:!0}}):f()}),null)}var C=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(C||{}),j=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(j||{});function A(e){let t=r.useContext(l);return t||(0,o.Oi)(!1),t}function S(e){let t=r.useContext(s);return t||(0,o.Oi)(!1),t}function P(e){let t=function(){let e=r.useContext(u);return e||(0,o.Oi)(!1),e}(),a=t.matches[t.matches.length-1];return a.route.id||(0,o.Oi)(!1),a.route.id}const R={};const M={};const V=(e,t,a)=>{var r;M[r="⚠️ React Router Future Flag Warning: "+t+". You can use the `"+e+"` future flag to opt-in early. For more information, see "+a+"."]||(M[r]=!0,console.warn(r))};function z(e,t){void 0===(null==e?void 0:e.v7_startTransition)&&V("v7_startTransition","React Router will begin wrapping state updates in `React.startTransition` in v7","https://reactrouter.com/v6/upgrading/future#v7_starttransition"),void 0!==(null==e?void 0:e.v7_relativeSplatPath)||t&&t.v7_relativeSplatPath||V("v7_relativeSplatPath","Relative route resolution within Splat routes is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath"),t&&(void 0===t.v7_fetcherPersist&&V("v7_fetcherPersist","The persistence behavior of fetchers is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist"),void 0===t.v7_normalizeFormMethod&&V("v7_normalizeFormMethod","Casing of `formMethod` fields is being normalized to uppercase in v7","https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod"),void 0===t.v7_partialHydration&&V("v7_partialHydration","`RouterProvider` hydration behavior is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_partialhydration"),void 0===t.v7_skipActionErrorRevalidation&&V("v7_skipActionErrorRevalidation","The revalidation behavior after 4xx/5xx `action` responses is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation"))}r.startTransition;function H(e){let{to:t,replace:a,state:n,relative:l}=e;p()||(0,o.Oi)(!1);let{future:s,static:c}=r.useContext(i),{matches:d}=r.useContext(u),{pathname:v}=m(),h=f(),g=(0,o.Gh)(t,(0,o.yD)(d,s.v7_relativeSplatPath),v,"path"===l),w=JSON.stringify(g);return r.useEffect((()=>h(JSON.parse(w),{replace:a,state:n,relative:l})),[h,w,l,a,n]),null}function L(e){(0,o.Oi)(!1)}function O(e){let{basename:t="/",children:a=null,location:l,navigationType:s=o.rc.Pop,navigator:u,static:d=!1,future:v}=e;p()&&(0,o.Oi)(!1);let m=t.replace(/^\/*/,"/"),h=r.useMemo((()=>({basename:m,navigator:u,static:d,future:n({v7_relativeSplatPath:!1},v)})),[m,v,u,d]);"string"==typeof l&&(l=(0,o.Rr)(l));let{pathname:f="/",search:g="",hash:w="",state:b=null,key:y="default"}=l,x=r.useMemo((()=>{let e=(0,o.pb)(f,m);return null==e?null:{location:{pathname:e,search:g,hash:w,state:b,key:y},navigationType:s}}),[m,f,g,w,b,y,s]);return null==x?null:r.createElement(i.Provider,{value:h},r.createElement(c.Provider,{children:a,value:x}))}function N(e){let{children:t,location:a}=e;return b(I(t),a)}new Promise((()=>{}));r.Component;function I(e,t){void 0===t&&(t=[]);let a=[];return r.Children.forEach(e,((e,n)=>{if(!r.isValidElement(e))return;let l=[...t,n];if(e.type===r.Fragment)return void a.push.apply(a,I(e.props.children,l));e.type!==L&&(0,o.Oi)(!1),e.props.index&&e.props.children&&(0,o.Oi)(!1);let s={id:e.props.id||l.join("-"),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,loader:e.props.loader,action:e.props.action,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:null!=e.props.ErrorBoundary||null!=e.props.errorElement,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(s.children=I(e.props.children,l)),a.push(s)})),a}},44775:e=>{var t={"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","Ấ":"A","Ắ":"A","Ẳ":"A","Ẵ":"A","Ặ":"A","Æ":"AE","Ầ":"A","Ằ":"A","Ȃ":"A","Ả":"A","Ạ":"A","Ẩ":"A","Ẫ":"A","Ậ":"A","Ç":"C","Ḉ":"C","È":"E","É":"E","Ê":"E","Ë":"E","Ế":"E","Ḗ":"E","Ề":"E","Ḕ":"E","Ḝ":"E","Ȇ":"E","Ẻ":"E","Ẽ":"E","Ẹ":"E","Ể":"E","Ễ":"E","Ệ":"E","Ì":"I","Í":"I","Î":"I","Ï":"I","Ḯ":"I","Ȋ":"I","Ỉ":"I","Ị":"I","Ð":"D","Ñ":"N","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","Ố":"O","Ṍ":"O","Ṓ":"O","Ȏ":"O","Ỏ":"O","Ọ":"O","Ổ":"O","Ỗ":"O","Ộ":"O","Ờ":"O","Ở":"O","Ỡ":"O","Ớ":"O","Ợ":"O","Ù":"U","Ú":"U","Û":"U","Ü":"U","Ủ":"U","Ụ":"U","Ử":"U","Ữ":"U","Ự":"U","Ý":"Y","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","ấ":"a","ắ":"a","ẳ":"a","ẵ":"a","ặ":"a","æ":"ae","ầ":"a","ằ":"a","ȃ":"a","ả":"a","ạ":"a","ẩ":"a","ẫ":"a","ậ":"a","ç":"c","ḉ":"c","è":"e","é":"e","ê":"e","ë":"e","ế":"e","ḗ":"e","ề":"e","ḕ":"e","ḝ":"e","ȇ":"e","ẻ":"e","ẽ":"e","ẹ":"e","ể":"e","ễ":"e","ệ":"e","ì":"i","í":"i","î":"i","ï":"i","ḯ":"i","ȋ":"i","ỉ":"i","ị":"i","ð":"d","ñ":"n","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","ố":"o","ṍ":"o","ṓ":"o","ȏ":"o","ỏ":"o","ọ":"o","ổ":"o","ỗ":"o","ộ":"o","ờ":"o","ở":"o","ỡ":"o","ớ":"o","ợ":"o","ù":"u","ú":"u","û":"u","ü":"u","ủ":"u","ụ":"u","ử":"u","ữ":"u","ự":"u","ý":"y","ÿ":"y","Ā":"A","ā":"a","Ă":"A","ă":"a","Ą":"A","ą":"a","Ć":"C","ć":"c","Ĉ":"C","ĉ":"c","Ċ":"C","ċ":"c","Č":"C","č":"c","C̆":"C","c̆":"c","Ď":"D","ď":"d","Đ":"D","đ":"d","Ē":"E","ē":"e","Ĕ":"E","ĕ":"e","Ė":"E","ė":"e","Ę":"E","ę":"e","Ě":"E","ě":"e","Ĝ":"G","Ǵ":"G","ĝ":"g","ǵ":"g","Ğ":"G","ğ":"g","Ġ":"G","ġ":"g","Ģ":"G","ģ":"g","Ĥ":"H","ĥ":"h","Ħ":"H","ħ":"h","Ḫ":"H","ḫ":"h","Ĩ":"I","ĩ":"i","Ī":"I","ī":"i","Ĭ":"I","ĭ":"i","Į":"I","į":"i","İ":"I","ı":"i","IJ":"IJ","ij":"ij","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","Ḱ":"K","ḱ":"k","K̆":"K","k̆":"k","Ĺ":"L","ĺ":"l","Ļ":"L","ļ":"l","Ľ":"L","ľ":"l","Ŀ":"L","ŀ":"l","Ł":"l","ł":"l","Ḿ":"M","ḿ":"m","M̆":"M","m̆":"m","Ń":"N","ń":"n","Ņ":"N","ņ":"n","Ň":"N","ň":"n","ʼn":"n","N̆":"N","n̆":"n","Ō":"O","ō":"o","Ŏ":"O","ŏ":"o","Ő":"O","ő":"o","Œ":"OE","œ":"oe","P̆":"P","p̆":"p","Ŕ":"R","ŕ":"r","Ŗ":"R","ŗ":"r","Ř":"R","ř":"r","R̆":"R","r̆":"r","Ȓ":"R","ȓ":"r","Ś":"S","ś":"s","Ŝ":"S","ŝ":"s","Ş":"S","Ș":"S","ș":"s","ş":"s","Š":"S","š":"s","Ţ":"T","ţ":"t","ț":"t","Ț":"T","Ť":"T","ť":"t","Ŧ":"T","ŧ":"t","T̆":"T","t̆":"t","Ũ":"U","ũ":"u","Ū":"U","ū":"u","Ŭ":"U","ŭ":"u","Ů":"U","ů":"u","Ű":"U","ű":"u","Ų":"U","ų":"u","Ȗ":"U","ȗ":"u","V̆":"V","v̆":"v","Ŵ":"W","ŵ":"w","Ẃ":"W","ẃ":"w","X̆":"X","x̆":"x","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Y̆":"Y","y̆":"y","Ź":"Z","ź":"z","Ż":"Z","ż":"z","Ž":"Z","ž":"z","ſ":"s","ƒ":"f","Ơ":"O","ơ":"o","Ư":"U","ư":"u","Ǎ":"A","ǎ":"a","Ǐ":"I","ǐ":"i","Ǒ":"O","ǒ":"o","Ǔ":"U","ǔ":"u","Ǖ":"U","ǖ":"u","Ǘ":"U","ǘ":"u","Ǚ":"U","ǚ":"u","Ǜ":"U","ǜ":"u","Ứ":"U","ứ":"u","Ṹ":"U","ṹ":"u","Ǻ":"A","ǻ":"a","Ǽ":"AE","ǽ":"ae","Ǿ":"O","ǿ":"o","Þ":"TH","þ":"th","Ṕ":"P","ṕ":"p","Ṥ":"S","ṥ":"s","X́":"X","x́":"x","Ѓ":"Г","ѓ":"г","Ќ":"К","ќ":"к","A̋":"A","a̋":"a","E̋":"E","e̋":"e","I̋":"I","i̋":"i","Ǹ":"N","ǹ":"n","Ồ":"O","ồ":"o","Ṑ":"O","ṑ":"o","Ừ":"U","ừ":"u","Ẁ":"W","ẁ":"w","Ỳ":"Y","ỳ":"y","Ȁ":"A","ȁ":"a","Ȅ":"E","ȅ":"e","Ȉ":"I","ȉ":"i","Ȍ":"O","ȍ":"o","Ȑ":"R","ȑ":"r","Ȕ":"U","ȕ":"u","B̌":"B","b̌":"b","Č̣":"C","č̣":"c","Ê̌":"E","ê̌":"e","F̌":"F","f̌":"f","Ǧ":"G","ǧ":"g","Ȟ":"H","ȟ":"h","J̌":"J","ǰ":"j","Ǩ":"K","ǩ":"k","M̌":"M","m̌":"m","P̌":"P","p̌":"p","Q̌":"Q","q̌":"q","Ř̩":"R","ř̩":"r","Ṧ":"S","ṧ":"s","V̌":"V","v̌":"v","W̌":"W","w̌":"w","X̌":"X","x̌":"x","Y̌":"Y","y̌":"y","A̧":"A","a̧":"a","B̧":"B","b̧":"b","Ḑ":"D","ḑ":"d","Ȩ":"E","ȩ":"e","Ɛ̧":"E","ɛ̧":"e","Ḩ":"H","ḩ":"h","I̧":"I","i̧":"i","Ɨ̧":"I","ɨ̧":"i","M̧":"M","m̧":"m","O̧":"O","o̧":"o","Q̧":"Q","q̧":"q","U̧":"U","u̧":"u","X̧":"X","x̧":"x","Z̧":"Z","z̧":"z","й":"и","Й":"И","ё":"е","Ё":"Е"},a=Object.keys(t).join("|"),r=new RegExp(a,"g"),o=new RegExp(a,"");function n(e){return t[e]}var l=function(e){return e.replace(r,n)};e.exports=l,e.exports.has=function(e){return!!e.match(o)},e.exports.remove=l},90372:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var r=a(46941);const o=a.n(r)()("dops:analytics");let n,l;window._tkq=window._tkq||[],window.ga=window.ga||function(){(window.ga.q=window.ga.q||[]).push(arguments)},window.ga.l=+new Date;const s={initialize:function(e,t,a){s.setUser(e,t),s.setSuperProps(a),s.identifyUser()},setGoogleAnalyticsEnabled:function(e,t=null){this.googleAnalyticsEnabled=e,this.googleAnalyticsKey=t},setMcAnalyticsEnabled:function(e){this.mcAnalyticsEnabled=e},setUser:function(e,t){l={ID:e,username:t}},setSuperProps:function(e){n=e},assignSuperProps:function(e){n=Object.assign(n||{},e)},mc:{bumpStat:function(e,t){const a=function(e,t){let a="";if("object"==typeof e){for(const t in e)a+="&x_"+encodeURIComponent(t)+"="+encodeURIComponent(e[t]);o("Bumping stats %o",e)}else a="&x_"+encodeURIComponent(e)+"="+encodeURIComponent(t),o('Bumping stat "%s" in group "%s"',t,e);return a}(e,t);s.mcAnalyticsEnabled&&((new Image).src=document.location.protocol+"//pixel.wp.com/g.gif?v=wpcom-no-pv"+a+"&t="+Math.random())},bumpStatWithPageView:function(e,t){const a=function(e,t){let a="";if("object"==typeof e){for(const t in e)a+="&"+encodeURIComponent(t)+"="+encodeURIComponent(e[t]);o("Built stats %o",e)}else a="&"+encodeURIComponent(e)+"="+encodeURIComponent(t),o('Built stat "%s" in group "%s"',t,e);return a}(e,t);s.mcAnalyticsEnabled&&((new Image).src=document.location.protocol+"//pixel.wp.com/g.gif?v=wpcom"+a+"&t="+Math.random())}},pageView:{record:function(e,t){s.tracks.recordPageView(e),s.ga.recordPageView(e,t)}},purchase:{record:function(e,t,a,r,o,n,l){s.ga.recordPurchase(e,t,a,r,o,n,l)}},tracks:{recordEvent:function(e,t){t=t||{},0===e.indexOf("akismet_")||0===e.indexOf("jetpack_")?(n&&(o("- Super Props: %o",n),t=Object.assign(t,n)),o('Record event "%s" called with props %s',e,JSON.stringify(t)),window._tkq.push(["recordEvent",e,t])):o('- Event name must be prefixed by "akismet_" or "jetpack_"')},recordJetpackClick:function(e){const t="object"==typeof e?e:{target:e};s.tracks.recordEvent("jetpack_wpa_click",t)},recordPageView:function(e){s.tracks.recordEvent("akismet_page_view",{path:e})},setOptOut:function(e){o("Pushing setOptOut: %o",e),window._tkq.push(["setOptOut",e])}},ga:{initialized:!1,initialize:function(){let e={};s.ga.initialized||(l&&(e={userId:"u-"+l.ID}),window.ga("create",this.googleAnalyticsKey,"auto",e),s.ga.initialized=!0)},recordPageView:function(e,t){s.ga.initialize(),o("Recording Page View ~ [URL: "+e+"] [Title: "+t+"]"),this.googleAnalyticsEnabled&&(window.ga("set","page",e),window.ga("send",{hitType:"pageview",page:e,title:t}))},recordEvent:function(e,t,a,r){s.ga.initialize();let n="Recording Event ~ [Category: "+e+"] [Action: "+t+"]";void 0!==a&&(n+=" [Option Label: "+a+"]"),void 0!==r&&(n+=" [Option Value: "+r+"]"),o(n),this.googleAnalyticsEnabled&&window.ga("send","event",e,t,a,r)},recordPurchase:function(e,t,a,r,o,n,l){window.ga("require","ecommerce"),window.ga("ecommerce:addTransaction",{id:e,revenue:r,currency:l}),window.ga("ecommerce:addItem",{id:e,name:t,sku:a,price:o,quantity:n}),window.ga("ecommerce:send")}},identifyUser:function(){l&&window._tkq.push(["identifyUser",l.ID,l.username])},setProperties:function(e){window._tkq.push(["setProperties",e])},clearedIdentity:function(){window._tkq.push(["clearIdentity"])}},i=s},5932:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>d});var r=a(56439),o=a(93832);function n(e){class t extends Error{constructor(...t){super(...t),this.name=e}}return t}const l=n("JsonParseError"),s=n("JsonParseAfterRedirectError"),i=n("Api404Error"),c=n("Api404AfterRedirectError"),u=n("FetchNetworkError");const d=new function(e,t){let a=e,n=e,l={"X-WP-Nonce":t},s={credentials:"same-origin",headers:l},i={method:"post",credentials:"same-origin",headers:Object.assign({},l,{"Content-type":"application/json"})},c=function(e){const t=e.split("?"),a=t.length>1?t[1]:"",r=a.length?a.split("&"):[];return r.push("_cacheBuster="+(new Date).getTime()),t[0]+"?"+r.join("&")};const u={setApiRoot(e){a=e},setWpcomOriginApiUrl(e){n=e},setApiNonce(e){l={"X-WP-Nonce":e},s={credentials:"same-origin",headers:l},i={method:"post",credentials:"same-origin",headers:Object.assign({},l,{"Content-type":"application/json"})}},setCacheBusterCallback:e=>{c=e},registerSite:(e,t,o)=>{const n={};return(0,r.jetpackConfigHas)("consumer_slug")&&(n.plugin_slug=(0,r.jetpackConfigGet)("consumer_slug")),null!==t&&(n.redirect_uri=t),o&&(n.from=o),m(`${a}jetpack/v4/connection/register`,i,{body:JSON.stringify(n)}).then(v).then(p)},fetchAuthorizationUrl:e=>d((0,o.addQueryArgs)(`${a}jetpack/v4/connection/authorize_url`,{no_iframe:"1",redirect_uri:e}),s).then(v).then(p),fetchSiteConnectionData:()=>d(`${a}jetpack/v4/connection/data`,s).then(p),fetchSiteConnectionStatus:()=>d(`${a}jetpack/v4/connection`,s).then(p),fetchSiteConnectionTest:()=>d(`${a}jetpack/v4/connection/test`,s).then(v).then(p),fetchUserConnectionData:()=>d(`${a}jetpack/v4/connection/data`,s).then(p),fetchUserTrackingSettings:()=>d(`${a}jetpack/v4/tracking/settings`,s).then(v).then(p),updateUserTrackingSettings:e=>m(`${a}jetpack/v4/tracking/settings`,i,{body:JSON.stringify(e)}).then(v).then(p),disconnectSite:()=>m(`${a}jetpack/v4/connection`,i,{body:JSON.stringify({isActive:!1})}).then(v).then(p),fetchConnectUrl:()=>d(`${a}jetpack/v4/connection/url`,s).then(v).then(p),unlinkUser:(e=!1,t={})=>{const r={linked:!1,force:!!e};return t.disconnectAllUsers&&(r["disconnect-all-users"]=!0),m(`${a}jetpack/v4/connection/user`,i,{body:JSON.stringify(r)}).then(v).then(p)},reconnect:()=>m(`${a}jetpack/v4/connection/reconnect`,i).then(v).then(p),fetchConnectedPlugins:()=>d(`${a}jetpack/v4/connection/plugins`,s).then(v).then(p),setHasSeenWCConnectionModal:()=>m(`${a}jetpack/v4/seen-wc-connection-modal`,i).then(v).then(p),fetchModules:()=>d(`${a}jetpack/v4/module/all`,s).then(v).then(p),fetchModule:e=>d(`${a}jetpack/v4/module/${e}`,s).then(v).then(p),activateModule:e=>m(`${a}jetpack/v4/module/${e}/active`,i,{body:JSON.stringify({active:!0})}).then(v).then(p),deactivateModule:e=>m(`${a}jetpack/v4/module/${e}/active`,i,{body:JSON.stringify({active:!1})}),updateModuleOptions:(e,t)=>m(`${a}jetpack/v4/module/${e}`,i,{body:JSON.stringify(t)}).then(v).then(p),updateSettings:e=>m(`${a}jetpack/v4/settings`,i,{body:JSON.stringify(e)}).then(v).then(p),getProtectCount:()=>d(`${a}jetpack/v4/module/protect/data`,s).then(v).then(p),resetOptions:e=>m(`${a}jetpack/v4/options/${e}`,i,{body:JSON.stringify({reset:!0})}).then(v).then(p),activateVaultPress:()=>m(`${a}jetpack/v4/plugins`,i,{body:JSON.stringify({slug:"vaultpress",status:"active"})}).then(v).then(p),getVaultPressData:()=>d(`${a}jetpack/v4/module/vaultpress/data`,s).then(v).then(p),installPlugin:(e,t)=>{const r={slug:e,status:"active"};return t&&(r.source=t),m(`${a}jetpack/v4/plugins`,i,{body:JSON.stringify(r)}).then(v).then(p)},activateAkismet:()=>m(`${a}jetpack/v4/plugins`,i,{body:JSON.stringify({slug:"akismet",status:"active"})}).then(v).then(p),getAkismetData:()=>d(`${a}jetpack/v4/module/akismet/data`,s).then(v).then(p),checkAkismetKey:()=>d(`${a}jetpack/v4/module/akismet/key/check`,s).then(v).then(p),checkAkismetKeyTyped:e=>m(`${a}jetpack/v4/module/akismet/key/check`,i,{body:JSON.stringify({api_key:e})}).then(v).then(p),getFeatureTypeStatus:e=>d(`${a}jetpack/v4/feature/${e}`,s).then(v).then(p),fetchStatsData:e=>d(function(e){let t=`${a}jetpack/v4/module/stats/data`;-1!==t.indexOf("?")?t+=`&range=${encodeURIComponent(e)}`:t+=`?range=${encodeURIComponent(e)}`;return t}(e),s).then(v).then(p).then(f),getPluginUpdates:()=>d(`${a}jetpack/v4/updates/plugins`,s).then(v).then(p),getPlans:()=>d(`${a}jetpack/v4/plans`,s).then(v).then(p),fetchSettings:()=>d(`${a}jetpack/v4/settings`,s).then(v).then(p),updateSetting:e=>m(`${a}jetpack/v4/settings`,i,{body:JSON.stringify(e)}).then(v).then(p),fetchSiteData:()=>d(`${a}jetpack/v4/site`,s).then(v).then(p).then((e=>JSON.parse(e.data))),fetchSiteFeatures:()=>d(`${a}jetpack/v4/site/features`,s).then(v).then(p).then((e=>JSON.parse(e.data))),fetchSiteProducts:()=>d(`${a}jetpack/v4/site/products`,s).then(v).then(p),fetchSitePurchases:()=>d(`${a}jetpack/v4/site/purchases`,s).then(v).then(p).then((e=>JSON.parse(e.data))),fetchSiteBenefits:()=>d(`${a}jetpack/v4/site/benefits`,s).then(v).then(p).then((e=>JSON.parse(e.data))),fetchSiteDiscount:()=>d(`${a}jetpack/v4/site/discount`,s).then(v).then(p).then((e=>e.data)),fetchSetupQuestionnaire:()=>d(`${a}jetpack/v4/setup/questionnaire`,s).then(v).then(p),fetchRecommendationsData:()=>d(`${a}jetpack/v4/recommendations/data`,s).then(v).then(p),fetchRecommendationsProductSuggestions:()=>d(`${a}jetpack/v4/recommendations/product-suggestions`,s).then(v).then(p),fetchRecommendationsUpsell:()=>d(`${a}jetpack/v4/recommendations/upsell`,s).then(v).then(p),fetchRecommendationsConditional:()=>d(`${a}jetpack/v4/recommendations/conditional`,s).then(v).then(p),saveRecommendationsData:e=>m(`${a}jetpack/v4/recommendations/data`,i,{body:JSON.stringify({data:e})}).then(v),fetchProducts:()=>d(`${a}jetpack/v4/products`,s).then(v).then(p),fetchRewindStatus:()=>d(`${a}jetpack/v4/rewind`,s).then(v).then(p).then((e=>JSON.parse(e.data))),fetchScanStatus:()=>d(`${a}jetpack/v4/scan`,s).then(v).then(p).then((e=>JSON.parse(e.data))),dismissJetpackNotice:e=>m(`${a}jetpack/v4/notice/${e}`,i,{body:JSON.stringify({dismissed:!0})}).then(v).then(p),fetchPluginsData:()=>d(`${a}jetpack/v4/plugins`,s).then(v).then(p),fetchIntroOffers:()=>d(`${a}jetpack/v4/intro-offers`,s).then(v).then(p),fetchVerifySiteGoogleStatus:e=>d(null!==e?`${a}jetpack/v4/verify-site/google/${e}`:`${a}jetpack/v4/verify-site/google`,s).then(v).then(p),verifySiteGoogle:e=>m(`${a}jetpack/v4/verify-site/google`,i,{body:JSON.stringify({keyring_id:e})}).then(v).then(p),submitSurvey:e=>m(`${a}jetpack/v4/marketing/survey`,i,{body:JSON.stringify(e)}).then(v).then(p),saveSetupQuestionnaire:e=>m(`${a}jetpack/v4/setup/questionnaire`,i,{body:JSON.stringify(e)}).then(v).then(p),updateLicensingError:e=>m(`${a}jetpack/v4/licensing/error`,i,{body:JSON.stringify(e)}).then(v).then(p),updateLicenseKey:e=>m(`${a}jetpack/v4/licensing/set-license`,i,{body:JSON.stringify({license:e})}).then(v).then(p),getUserLicensesCounts:()=>d(`${a}jetpack/v4/licensing/user/counts`,s).then(v).then(p),getUserLicenses:()=>d(`${a}jetpack/v4/licensing/user/licenses`,s).then(v).then(p),updateLicensingActivationNoticeDismiss:e=>m(`${a}jetpack/v4/licensing/user/activation-notice-dismiss`,i,{body:JSON.stringify({last_detached_count:e})}).then(v).then(p),updateRecommendationsStep:e=>m(`${a}jetpack/v4/recommendations/step`,i,{body:JSON.stringify({step:e})}).then(v),confirmIDCSafeMode:()=>m(`${a}jetpack/v4/identity-crisis/confirm-safe-mode`,i).then(v),startIDCFresh:e=>m(`${a}jetpack/v4/identity-crisis/start-fresh`,i,{body:JSON.stringify({redirect_uri:e})}).then(v).then(p),migrateIDC:()=>m(`${a}jetpack/v4/identity-crisis/migrate`,i).then(v),attachLicenses:e=>m(`${a}jetpack/v4/licensing/attach-licenses`,i,{body:JSON.stringify({licenses:e})}).then(v).then(p),fetchSearchPlanInfo:()=>d(`${n}jetpack/v4/search/plan`,s).then(v).then(p),fetchSearchSettings:()=>d(`${n}jetpack/v4/search/settings`,s).then(v).then(p),updateSearchSettings:e=>m(`${n}jetpack/v4/search/settings`,i,{body:JSON.stringify(e)}).then(v).then(p),fetchSearchStats:()=>d(`${n}jetpack/v4/search/stats`,s).then(v).then(p),fetchWafSettings:()=>d(`${a}jetpack/v4/waf`,s).then(v).then(p),updateWafSettings:e=>m(`${a}jetpack/v4/waf`,i,{body:JSON.stringify(e)}).then(v).then(p),fetchWordAdsSettings:()=>d(`${a}jetpack/v4/wordads/settings`,s).then(v).then(p),updateWordAdsSettings:e=>m(`${a}jetpack/v4/wordads/settings`,i,{body:JSON.stringify(e)}),fetchSearchPricing:()=>d(`${n}jetpack/v4/search/pricing`,s).then(v).then(p),fetchMigrationStatus:()=>d(`${a}jetpack/v4/migration/status`,s).then(v).then(p),fetchBackupUndoEvent:()=>d(`${a}jetpack/v4/site/backup/undo-event`,s).then(v).then(p),fetchBackupPreflightStatus:()=>d(`${a}jetpack/v4/site/backup/preflight`,s).then(v).then(p)};function d(e,t){return fetch(c(e),t)}function m(e,t,a){return fetch(e,Object.assign({},t,a)).catch(h)}function f(e){return e.general&&void 0===e.general.response||e.week&&void 0===e.week.response||e.month&&void 0===e.month.response?e:{}}Object.assign(this,u)};function v(e){return e.status>=200&&e.status<300?e:404===e.status?new Promise((()=>{throw e.redirected?new c(e.redirected):new i})):e.json().catch((e=>m(e))).then((t=>{const a=new Error(`${t.message} (Status ${e.status})`);throw a.response=t,a.name="ApiError",a}))}function p(e){return e.json().catch((t=>m(t,e.redirected,e.url)))}function m(e,t,a){throw t?new s(a):new l}function h(){throw new u}},21197:(e,t,a)=>{"use strict";a.d(t,{h:()=>l});var r=a(27723),o=a(75289),n=a(34144);const __=r.__;class l extends Error{constructor(e,t,a){super(),this.httpCode=e,this.body=t,this.parseError=a}get message(){switch(this.httpCode){case 403:return this.getRestApiErrorMessage();case 200:if(this.parseError)return(0,r.sprintf)(/* Translators: %s refers to a browser-supplied error message (hopefully already in the right language) */ -__("Received invalid response while communicating with your WordPress site: %s","jetpack-my-jetpack"),this.parseError.message)}return(0,r.sprintf)(/* Translators: %d refers to numeric HTTP error code */ -__("HTTP %d error received while communicating with the server.","jetpack-my-jetpack"),this.httpCode)}getDisplayBody(){return(0,n.O)(this.body)?JSON.stringify(this.body,null," "):(0,o.w)(this.body,"").substring(0,1e3)}getRestApiErrorMessage(){return __("Your site's REST API does not seem to be accessible. Jetpack Boost requires access to your REST API in order to receive site performance scores. Please make sure that your site's REST API is active and accessible, and try again.","jetpack-my-jetpack")}}},15098:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var r=a(27723),o=a(21197),n=a(18882);const __=r.__;async function l(e,t,a,o=null,l){const s={method:e,mode:"cors",headers:{"X-WP-Nonce":l}};"post"!==e&&"delete"!==e||!o||(s.body=JSON.stringify(o),s.headers["Content-Type"]="application/json");const i=function(e,t){return t+n.K+n.L+e}(a,t);let c;try{c=await fetch(i,s)}catch(e){const t=s;delete t.body,delete t.headers["X-WP-Nonce"];const a={requestInitiator:window.location.href,requestUrl:i,requestArgs:t,originalErrorMessage:e.toString()};throw new Error((0,r.sprintf)(/* Translators: %s refers to a string representation of an error object containing useful debug information */ -__("An error occurred while trying to communicate with the site REST API. Extra debug info: %s","jetpack-my-jetpack"),JSON.stringify(a)))}return c}async function s(e,t,a,r=null,n){const s=await l(e,t,a,r,n);let i,c;try{i=await s.text()}catch(e){throw new o.h(s.status,null,e)}try{c=JSON.parse(i)}catch(e){throw new o.h(s.status,i,e)}if(!s.ok)throw new o.h(s.status,c,null);return c}const i={get:function(e,t,a){return s("get",e,t,null,a)},post:function(e,t,a=null,r){return s("post",e,t,a,r)}}},18882:(e,t,a)=>{"use strict";a.d(t,{K:()=>r,L:()=>o});const r="jetpack-boost/v1",o=""},58454:(e,t,a)=>{"use strict";a.d(t,{T:()=>m,US:()=>h,sE:()=>v});var r=a(27723),o=a(15098),n=a(4753),l=a(75289),s=a(34144),i=a(28991),c=a(93470);const __=r.__,u=12e4,d=5e3;async function v(e=!1,t,a,r){const n=p(await o.A.post(t,e?"/speed-scores/refresh":"/speed-scores",{url:a},r));return n.scores?n.scores:await async function(e,t,a){return(0,i.A)({timeout:u,interval:d,timeoutError:__("Timed out while waiting for speed-score.","jetpack-my-jetpack"),callback:async r=>{const n=p(await o.A.post(e,"/speed-scores",{url:t},a));n.scores&&r(n.scores)}})}(t,a,r)}function p(e){if(e.error){const t=__("An unknown error occurred while requesting metrics","jetpack-my-jetpack");throw(0,c.g)(e.error,t)}if((0,s.O)(e.scores))return{status:"success",scores:{current:(0,s.O)(e.scores.current)?{mobile:(0,n.G)(e.scores.current.mobile,0),desktop:(0,n.G)(e.scores.current.desktop,0)}:{mobile:0,desktop:0},noBoost:(0,s.O)(e.scores.noBoost)?{mobile:(0,n.G)(e.scores.noBoost.mobile,0),desktop:(0,n.G)(e.scores.noBoost.desktop,0)}:null,isStale:!!e.scores.isStale}};const t=(0,l.w)(e.status);if(!t)throw new Error(__("Invalid response while requesting metrics","jetpack-my-jetpack"));return{status:t}}function m(e,t){const a=(e+t)/2;return a>90?"A":a>75?"B":a>50?"C":a>35?"D":a>25?"E":"F"}function h(e){const t=new Date(e),a=(new Date).valueOf()-t.valueOf();return Math.floor(a/864e5)}},4753:(e,t,a)=>{"use strict";function r(e,t=void 0){if("number"==typeof e)return e;if("string"==typeof e){const t=parseFloat(e);if(!isNaN(t))return t}return t}a.d(t,{G:()=>r})},75289:(e,t,a)=>{"use strict";function r(e,t=void 0){return"string"==typeof e?e:e&&e.toString instanceof Function?e.toString():t}a.d(t,{w:()=>r})},34144:(e,t,a)=>{"use strict";function r(e){return!!e&&e instanceof Object&&!(e instanceof Array)}a.d(t,{O:()=>r})},28991:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var r=a(27723);const __=r.__;async function o({interval:e,callback:t,timeout:a,timeoutError:r}){let o,n;return new Promise(((l,s)=>{o=setTimeout((()=>{s(new Error(r||__("Timed out","jetpack-my-jetpack")))}),a||12e4),n=setInterval((async()=>{try{await Promise.resolve(t(l))}catch(e){s(e)}}),e)})).finally((()=>{clearTimeout(o),clearInterval(n)}))}},93470:(e,t,a)=>{"use strict";function r(e,t){return e instanceof Error?e:"string"==typeof e||e instanceof String?new Error(e.toString()):e.message?new Error(e.message):t?new Error(t):new Error(JSON.stringify(e))}a.d(t,{g:()=>r})},18089:(e,t,a)=>{"use strict";a.d(t,{A:()=>p});var r=a(56427),o=a(27723),n=a(13022),l=a(28120),s=a.n(l),i=a(51609),c=a.n(i),u=a(51112),d=a(29548);const __=o.__,v=e=>{const{label:t,onClick:a,isLoading:o=!1,loadingText:l,isDisabled:s,displayError:i=!1,errorMessage:v=__("An error occurred. Please try again.","jetpack-my-jetpack"),variant:p="primary",isExternalLink:m=!1,customClass:h}=e,f=l||c().createElement(r.Spinner,null);return c().createElement(c().Fragment,null,c().createElement(u.A,{className:(0,n.A)(d.A.button,"jp-action-button--button",h),label:t,onClick:a,variant:m?"link":p,isExternalLink:m,disabled:o||s},o?f:t),i&&c().createElement("p",{className:(0,n.A)(d.A.error,"jp-action-button__error")},v))};v.propTypes={label:s().string.isRequired,onClick:s().func,isLoading:s().bool,isDisabled:s().bool,displayError:s().bool,errorMessage:s().oneOfType([s().string,s().element]),variant:s().arrayOf(s().oneOf(["primary","secondary","link"])),isExternalLink:s().bool};const p=v},42947:(e,t,a)=>{"use strict";a.d(t,{A:()=>v});var r=a(5932),o=a(27723),n=a(13022),l=a(51609),s=a(38250),i=a(67142),c=a(28509),u=a(75918),d=a(8902);const __=o.__,v=({children:e,moduleName:t=__("Jetpack","jetpack-my-jetpack"),moduleNameHref:a,showHeader:v=!0,showFooter:p=!0,useInternalLinks:m=!1,showBackground:h=!0,sandboxedDomain:f="",apiRoot:g="",apiNonce:w="",optionalMenuItems:b,header:y})=>{(0,l.useEffect)((()=>{r.Ay.setApiRoot(g),r.Ay.setApiNonce(w)}),[g,w]);const x=(0,n.A)(d.A["admin-page"],{[d.A.background]:h}),_=(0,l.useCallback)((async()=>{try{const e=await r.Ay.fetchSiteConnectionTest();window.alert(e.message)}catch(e){window.alert((0,o.sprintf)(/* translators: placeholder is an error message. */ -__("There was an error testing Jetpack. Error: %s","jetpack-my-jetpack"),e.message))}}),[]);return React.createElement("div",{className:x},v&&React.createElement(u.A,{horizontalSpacing:5},React.createElement(c.A,{className:(0,n.A)(d.A["admin-page-header"],"jp-admin-page-header")},y||React.createElement(i.A,null),f&&React.createElement("code",{className:d.A["sandbox-domain-badge"],onClick:_,onKeyDown:_,role:"button",tabIndex:0,title:`Sandboxing via ${f}. Click to test connection.`},"API Sandboxed"))),React.createElement(u.A,{fluid:!0,horizontalSpacing:0},React.createElement(c.A,null,e)),p&&React.createElement(u.A,{horizontalSpacing:5},React.createElement(c.A,null,React.createElement(s.A,{moduleName:t,moduleNameHref:a,menu:b,useInternalLinks:m}))))}},95640:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var r=a(51609),o=a.n(r),n=a(27507);const l=({children:e})=>o().createElement("div",{className:n.A.section},e)},90766:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var r=a(51609),o=a.n(r),n=a(48703);const l=({children:e})=>o().createElement("div",{className:n.A["section-hero"]},e)},42266:(e,t,a)=>{"use strict";a.d(t,{A:()=>v});var r=a(23751),o=a(19783),n=a(83883),l=a(51113),s=a(13022),i=a(51609),c=a.n(i),u=a(8953);const d=e=>{switch(e){case"error":case"warning":default:return r.A;case"info":return o.A;case"success":return n.A}},v=({level:e="warning",children:t,showIcon:a=!0,className:r})=>{const o=(0,s.A)(u.A.container,u.A[`is-${e}`],r);return c().createElement("div",{className:o},a&&c().createElement("div",{className:u.A["icon-wrapper"]},c().createElement(l.A,{icon:d(e),className:u.A.icon})),c().createElement("div",null,t))}},48907:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var r=a(96072),o=a.n(r),n=a(27723),l=a(13022),s=a(51609),i=a.n(s);const __=n.__,c=({title:e=__("An Automattic Airline","jetpack-my-jetpack"),height:t=7,className:a,...r})=>i().createElement("svg",o()({role:"img",x:"0",y:"0",viewBox:"0 0 935 38.2",enableBackground:"new 0 0 935 38.2","aria-labelledby":"jp-automattic-byline-logo-title",height:t,className:(0,l.A)("jp-automattic-byline-logo",a)},r),i().createElement("desc",{id:"jp-automattic-byline-logo-title"},e),i().createElement("path",{d:"M317.1 38.2c-12.6 0-20.7-9.1-20.7-18.5v-1.2c0-9.6 8.2-18.5 20.7-18.5 12.6 0 20.8 8.9 20.8 18.5v1.2C337.9 29.1 329.7 38.2 317.1 38.2zM331.2 18.6c0-6.9-5-13-14.1-13s-14 6.1-14 13v0.9c0 6.9 5 13.1 14 13.1s14.1-6.2 14.1-13.1V18.6zM175 36.8l-4.7-8.8h-20.9l-4.5 8.8h-7L157 1.3h5.5L182 36.8H175zM159.7 8.2L152 23.1h15.7L159.7 8.2zM212.4 38.2c-12.7 0-18.7-6.9-18.7-16.2V1.3h6.6v20.9c0 6.6 4.3 10.5 12.5 10.5 8.4 0 11.9-3.9 11.9-10.5V1.3h6.7V22C231.4 30.8 225.8 38.2 212.4 38.2zM268.6 6.8v30h-6.7v-30h-15.5V1.3h37.7v5.5H268.6zM397.3 36.8V8.7l-1.8 3.1 -14.9 25h-3.3l-14.7-25 -1.8-3.1v28.1h-6.5V1.3h9.2l14 24.4 1.7 3 1.7-3 13.9-24.4h9.1v35.5H397.3zM454.4 36.8l-4.7-8.8h-20.9l-4.5 8.8h-7l19.2-35.5h5.5l19.5 35.5H454.4zM439.1 8.2l-7.7 14.9h15.7L439.1 8.2zM488.4 6.8v30h-6.7v-30h-15.5V1.3h37.7v5.5H488.4zM537.3 6.8v30h-6.7v-30h-15.5V1.3h37.7v5.5H537.3zM569.3 36.8V4.6c2.7 0 3.7-1.4 3.7-3.4h2.8v35.5L569.3 36.8 569.3 36.8zM628 11.3c-3.2-2.9-7.9-5.7-14.2-5.7 -9.5 0-14.8 6.5-14.8 13.3v0.7c0 6.7 5.4 13 15.3 13 5.9 0 10.8-2.8 13.9-5.7l4 4.2c-3.9 3.8-10.5 7.1-18.3 7.1 -13.4 0-21.6-8.7-21.6-18.3v-1.2c0-9.6 8.9-18.7 21.9-18.7 7.5 0 14.3 3.1 18 7.1L628 11.3zM321.5 12.4c1.2 0.8 1.5 2.4 0.8 3.6l-6.1 9.4c-0.8 1.2-2.4 1.6-3.6 0.8l0 0c-1.2-0.8-1.5-2.4-0.8-3.6l6.1-9.4C318.7 11.9 320.3 11.6 321.5 12.4L321.5 12.4z"}),i().createElement("path",{d:"M37.5 36.7l-4.7-8.9H11.7l-4.6 8.9H0L19.4 0.8H25l19.7 35.9H37.5zM22 7.8l-7.8 15.1h15.9L22 7.8zM82.8 36.7l-23.3-24 -2.3-2.5v26.6h-6.7v-36H57l22.6 24 2.3 2.6V0.8h6.7v35.9H82.8z"}),i().createElement("path",{d:"M719.9 37l-4.8-8.9H694l-4.6 8.9h-7.1l19.5-36h5.6l19.8 36H719.9zM704.4 8l-7.8 15.1h15.9L704.4 8zM733 37V1h6.8v36H733zM781 37c-1.8 0-2.6-2.5-2.9-5.8l-0.2-3.7c-0.2-3.6-1.7-5.1-8.4-5.1h-12.8V37H750V1h19.6c10.8 0 15.7 4.3 15.7 9.9 0 3.9-2 7.7-9 9 7 0.5 8.5 3.7 8.6 7.9l0.1 3c0.1 2.5 0.5 4.3 2.2 6.1V37H781zM778.5 11.8c0-2.6-2.1-5.1-7.9-5.1h-13.8v10.8h14.4c5 0 7.3-2.4 7.3-5.2V11.8zM794.8 37V1h6.8v30.4h28.2V37H794.8zM836.7 37V1h6.8v36H836.7zM886.2 37l-23.4-24.1 -2.3-2.5V37h-6.8V1h6.5l22.7 24.1 2.3 2.6V1h6.8v36H886.2zM902.3 37V1H935v5.6h-26v9.2h20v5.5h-20v10.1h26V37H902.3z"}))},10580:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var r=a(27723),o=a(13022),n=a(11883);a(50315);const __=r.__,l=({score:e,isLoading:t,showPrevScores:a,active:r,prevScore:l=0,scoreBarType:s,noBoostScoreTooltip:i})=>{if(!r)return null;const c=l/e*100,u=__("Desktop score","jetpack-my-jetpack"),d=__("Mobile score","jetpack-my-jetpack");return React.createElement("div",{className:(0,o.A)("jb-score-bar",`jb-score-bar--${s}`)},React.createElement("div",{className:"jb-score-bar__label"},"desktop"===s?React.createElement(n.A,{icon:"computer",size:24}):React.createElement(n.A,{icon:"phone",size:24}),React.createElement("div",null,"desktop"===s?u:d)),React.createElement("div",{className:"jb-score-bar__bounds"},React.createElement("div",{className:(0,o.A)("jb-score-bar__filler",t&&!e?"fill-loading":e>70?"fill-good":e>50?"fill-mediocre":"fill-bad"),style:{width:`${e}%`}},t?React.createElement("div",{className:"jb-score-bar__loading"},React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 128 128"},React.createElement("g",null,React.createElement("path",{d:"M64 0a7 7 0 11-7 7 7 7 0 017-7zm29.86 12.2a2.8 2.8 0 11-3.83 1.02 2.8 2.8 0 013.83-1.02zm22.16 21.68a3.15 3.15 0 11-4.3-1.15 3.15 3.15 0 014.3 1.15zm.87 60.53a4.2 4.2 0 11-1.57-5.7 4.2 4.2 0 011.54 5.73zm7.8-30.5a3.85 3.85 0 11-3.85-3.85 3.85 3.85 0 013.85 3.84zm-30 53.2a4.55 4.55 0 111.66-6.23 4.55 4.55 0 01-1.67 6.22zM64 125.9a4.9 4.9 0 114.9-4.9 4.9 4.9 0 01-4.9 4.9zm-31.06-8.22a5.25 5.25 0 117.17-1.93 5.25 5.25 0 01-7.14 1.93zM9.9 95.1a5.6 5.6 0 117.65 2.06A5.6 5.6 0 019.9 95.1zM1.18 63.9a5.95 5.95 0 115.95 5.94 5.95 5.95 0 01-5.96-5.94zm8.1-31.6a6.3 6.3 0 112.32 8.6 6.3 6.3 0 01-2.3-8.6zM32.25 8.87a6.65 6.65 0 11-2.44 9.1 6.65 6.65 0 012.46-9.1z"}),React.createElement("animateTransform",{attributeName:"transform",type:"rotate",values:"0 64 64;30 64 64;60 64 64;90 64 64;120 64 64;150 64 64;180 64 64;210 64 64;240 64 64;270 64 64;300 64 64;330 64 64",calcMode:"discrete",dur:"1080ms",repeatCount:"indefinite"})))):React.createElement("div",{className:"jb-score-bar__score"},e),a&&!!l&&l{"use strict";a.d(t,{A:()=>m});var r=a(96072),o=a.n(r),n=a(56427),l=a(27723),s=a(51113),i=a(53512),c=a(13022),u=a(51609),d=a.n(u),v=a(55369);const __=l.__,p=(0,u.forwardRef)(((e,t)=>{const{children:a,variant:r="primary",size:l="normal",weight:u="bold",icon:p,iconSize:m,disabled:h,isDestructive:f,isLoading:g,isExternalLink:w,className:b,text:y,fullWidth:x,..._}=e,k=(0,c.A)(v.A.button,b,{[v.A.normal]:"normal"===l,[v.A.small]:"small"===l,[v.A.icon]:Boolean(p),[v.A.loading]:g,[v.A.regular]:"regular"===u,[v.A["full-width"]]:x,[v.A["is-icon-button"]]:Boolean(p)&&!a});_.ref=t;const E="normal"===l?20:16,C=w&&d().createElement(d().Fragment,null,d().createElement(s.A,{size:E,icon:i.A,className:v.A["external-icon"]}),d().createElement(n.VisuallyHidden,{as:"span"},/* translators: accessibility text */ -__("(opens in a new tab)","jetpack-my-jetpack"))),j=w?"_blank":void 0,A=a?.[0]&&null!==a[0]&&"components-tooltip"!==a?.[0]?.props?.className;return d().createElement(n.Button,o()({target:j,variant:r,className:(0,c.A)(k,{"has-text":!!p&&A}),icon:w?void 0:p,iconSize:m,disabled:h,"aria-disabled":h,isDestructive:f,text:y},_),g&&d().createElement(n.Spinner,null),d().createElement("span",null,a),C)}));p.displayName="Button";const m=p},59244:(e,t,a)=>{"use strict";a.d(t,{D:()=>l});var r=a(56427),o=a(94347),n=a(63406);function l({maxVisibleNotices:e=3}){const{getNotices:t,removeNotice:a}=(0,n.I)(),l=t().filter((({type:e})=>"snackbar"===e)).slice(-e);return React.createElement(r.SnackbarList,{notices:l,className:o.A["global-notices"],onRemove:a})}},63406:(e,t,a)=>{"use strict";a.d(t,{I:()=>n});var r=a(47143),o=a(692);function n(){const e=(0,r.useDispatch)(o.store),t=(0,r.useSelect)((e=>e(o.store).getNotices()),[]);return{...e,createNotice:(t,a,r)=>e.createNotice(t,a,{type:"snackbar",...r}),createErrorNotice:(t,a)=>e.createErrorNotice(t,{type:"snackbar",...a}),createInfoNotice:(t,a)=>e.createInfoNotice(t,{type:"snackbar",...a}),createSuccessNotice:(t,a)=>e.createSuccessNotice(t,{type:"snackbar",...a}),createWarningNotice:(t,a)=>e.createWarningNotice(t,{type:"snackbar",...a}),getNotices:()=>t}}},11883:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});var r=a(27723),o=a(13022),n=a(51609);a(40500);const __=r.__;class l extends n.Component{static defaultProps={"aria-hidden":"false",focusable:"true"};needsOffset(e,t){return["gridicons-arrow-left","gridicons-arrow-right","gridicons-calendar","gridicons-cart","gridicons-folder","gridicons-help-outline","gridicons-info","gridicons-info-outline","gridicons-posts","gridicons-star-outline","gridicons-star"].indexOf(e)>=0&&t%18==0}getSVGDescription(e){if("description"in this.props)return this.props.description;switch(e){default:return"";case"gridicons-audio":return __("Has audio.","jetpack-my-jetpack");case"gridicons-arrow-left":return __("Arrow left","jetpack-my-jetpack");case"gridicons-arrow-right":return __("Arrow right","jetpack-my-jetpack");case"gridicons-calendar":return __("Is an event.","jetpack-my-jetpack");case"gridicons-cart":return __("Is a product.","jetpack-my-jetpack");case"chevron-down":return __("Show filters","jetpack-my-jetpack");case"gridicons-comment":return __("Matching comment.","jetpack-my-jetpack");case"gridicons-cross":return __("Close.","jetpack-my-jetpack");case"gridicons-filter":return __("Toggle search filters.","jetpack-my-jetpack");case"gridicons-folder":return __("Category","jetpack-my-jetpack");case"gridicons-help-outline":return __("Help","jetpack-my-jetpack");case"gridicons-info":case"gridicons-info-outline":return __("Information.","jetpack-my-jetpack");case"gridicons-image-multiple":return __("Has multiple images.","jetpack-my-jetpack");case"gridicons-image":return __("Has an image.","jetpack-my-jetpack");case"gridicons-page":return __("Page","jetpack-my-jetpack");case"gridicons-post":return __("Post","jetpack-my-jetpack");case"gridicons-jetpack-search":case"gridicons-search":return __("Magnifying Glass","jetpack-my-jetpack");case"gridicons-tag":return __("Tag","jetpack-my-jetpack");case"gridicons-video":return __("Has a video.","jetpack-my-jetpack")}}renderIcon(e){switch(e){default:return null;case"gridicons-audio":return React.createElement("g",null,React.createElement("path",{d:"M8 4v10.184C7.686 14.072 7.353 14 7 14c-1.657 0-3 1.343-3 3s1.343 3 3 3 3-1.343 3-3V7h7v4.184c-.314-.112-.647-.184-1-.184-1.657 0-3 1.343-3 3s1.343 3 3 3 3-1.343 3-3V4H8z"}));case"gridicons-arrow-left":return React.createElement("g",null,React.createElement("path",{d:"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z"}));case"gridicons-arrow-right":return React.createElement("g",null,React.createElement("path",{d:"M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8-8-8z"}));case"gridicons-block":return React.createElement("g",null,React.createElement("path",{d:"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zM4 12c0-4.418 3.582-8 8-8 1.848 0 3.545.633 4.9 1.686L5.686 16.9C4.633 15.545 4 13.848 4 12zm8 8c-1.848 0-3.546-.633-4.9-1.686L18.314 7.1C19.367 8.455 20 10.152 20 12c0 4.418-3.582 8-8 8z"}));case"gridicons-calendar":return React.createElement("g",null,React.createElement("path",{d:"M19 4h-1V2h-2v2H8V2H6v2H5c-1.105 0-2 .896-2 2v13c0 1.104.895 2 2 2h14c1.104 0 2-.896 2-2V6c0-1.104-.896-2-2-2zm0 15H5V8h14v11z"}));case"gridicons-cart":return React.createElement("g",null,React.createElement("path",{d:"M9 20c0 1.1-.9 2-2 2s-1.99-.9-1.99-2S5.9 18 7 18s2 .9 2 2zm8-2c-1.1 0-1.99.9-1.99 2s.89 2 1.99 2 2-.9 2-2-.9-2-2-2zm.396-5c.937 0 1.75-.65 1.952-1.566L21 5H7V4c0-1.105-.895-2-2-2H3v2h2v11c0 1.105.895 2 2 2h12c0-1.105-.895-2-2-2H7v-2h10.396z"}));case"gridicons-checkmark":return React.createElement("g",null,React.createElement("path",{d:"M11 17.768l-4.884-4.884 1.768-1.768L11 14.232l8.658-8.658C17.823 3.39 15.075 2 12 2 6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10c0-1.528-.353-2.97-.966-4.266L11 17.768z"}));case"gridicons-chevron-left":return React.createElement("g",null,React.createElement("path",{d:"M16.443 7.41L15.0399 6L9.06934 12L15.0399 18L16.443 16.59L11.8855 12L16.443 7.41Z"}));case"gridicons-chevron-right":return React.createElement("g",null,React.createElement("path",{d:"M10.2366 6L8.8335 7.41L13.391 12L8.8335 16.59L10.2366 18L16.2072 12L10.2366 6Z"}));case"gridicons-chevron-down":return React.createElement("g",null,React.createElement("path",{d:"M20 9l-8 8-8-8 1.414-1.414L12 14.172l6.586-6.586"}));case"gridicons-comment":return React.createElement("g",null,React.createElement("path",{d:"M3 6v9c0 1.105.895 2 2 2h9v5l5.325-3.804c1.05-.75 1.675-1.963 1.675-3.254V6c0-1.105-.895-2-2-2H5c-1.105 0-2 .895-2 2z"}));case"gridicons-computer":return React.createElement("g",null,React.createElement("path",{d:"M20 2H4c-1.104 0-2 .896-2 2v12c0 1.104.896 2 2 2h6v2H7v2h10v-2h-3v-2h6c1.104 0 2-.896 2-2V4c0-1.104-.896-2-2-2zm0 14H4V4h16v12z"}));case"gridicons-cross":return React.createElement("g",null,React.createElement("path",{d:"M18.36 19.78L12 13.41l-6.36 6.37-1.42-1.42L10.59 12 4.22 5.64l1.42-1.42L12 10.59l6.36-6.36 1.41 1.41L13.41 12l6.36 6.36z"}));case"gridicons-filter":return React.createElement("g",null,React.createElement("path",{d:"M10 19h4v-2h-4v2zm-4-6h12v-2H6v2zM3 5v2h18V5H3z"}));case"gridicons-folder":return React.createElement("g",null,React.createElement("path",{d:"M18 19H6c-1.1 0-2-.9-2-2V7c0-1.1.9-2 2-2h3c1.1 0 2 .9 2 2h7c1.1 0 2 .9 2 2v8c0 1.1-.9 2-2 2z"}));case"gridicons-help-outline":return React.createElement("g",null,React.createElement("path",{d:"M12 4c4.41 0 8 3.59 8 8s-3.59 8-8 8-8-3.59-8-8 3.59-8 8-8m0-2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm1 13h-2v2h2v-2zm-1.962-2v-.528c0-.4.082-.74.246-1.017.163-.276.454-.546.87-.808.333-.21.572-.397.717-.565.146-.168.22-.36.22-.577 0-.172-.078-.308-.234-.41-.156-.1-.358-.15-.608-.15-.62 0-1.34.22-2.168.658l-.854-1.67c1.02-.58 2.084-.872 3.194-.872.913 0 1.63.202 2.15.603.52.4.78.948.78 1.64 0 .495-.116.924-.347 1.287-.23.362-.6.705-1.11 1.03-.43.278-.7.48-.807.61-.108.13-.163.282-.163.458V13h-1.885z"}));case"gridicons-image":return React.createElement("g",null,React.createElement("path",{d:"M13 9.5c0-.828.672-1.5 1.5-1.5s1.5.672 1.5 1.5-.672 1.5-1.5 1.5-1.5-.672-1.5-1.5zM22 6v12c0 1.105-.895 2-2 2H4c-1.105 0-2-.895-2-2V6c0-1.105.895-2 2-2h16c1.105 0 2 .895 2 2zm-2 0H4v7.444L8 9l5.895 6.55 1.587-1.85c.798-.932 2.24-.932 3.037 0L20 15.426V6z"}));case"gridicons-image-multiple":return React.createElement("g",null,React.createElement("path",{d:"M15 7.5c0-.828.672-1.5 1.5-1.5s1.5.672 1.5 1.5S17.328 9 16.5 9 15 8.328 15 7.5zM4 20h14c0 1.105-.895 2-2 2H4c-1.1 0-2-.9-2-2V8c0-1.105.895-2 2-2v14zM22 4v12c0 1.105-.895 2-2 2H8c-1.105 0-2-.895-2-2V4c0-1.105.895-2 2-2h12c1.105 0 2 .895 2 2zM8 4v6.333L11 7l4.855 5.395.656-.73c.796-.886 2.183-.886 2.977 0l.513.57V4H8z"}));case"gridicons-info":return React.createElement("g",null,React.createElement("path",{d:"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"}));case"gridicons-info-outline":return React.createElement("g",null,React.createElement("path",{d:"M13 9h-2V7h2v2zm0 2h-2v6h2v-6zm-1-7c-4.411 0-8 3.589-8 8s3.589 8 8 8 8-3.589 8-8-3.589-8-8-8m0-2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2z"}));case"gridicons-jetpack-search":return React.createElement("g",null,React.createElement("path",{d:"M0 9.257C0 4.15 4.151 0 9.257 0c5.105 0 9.256 4.151 9.256 9.257a9.218 9.218 0 01-2.251 6.045l.034.033h1.053L24 22.01l-1.986 1.989-6.664-6.662v-1.055l-.033-.033a9.218 9.218 0 01-6.06 2.264C4.15 18.513 0 14.362 0 9.257zm4.169 1.537h4.61V1.82l-4.61 8.973zm5.547-3.092v8.974l4.61-8.974h-4.61z"}));case"gridicons-phone":return React.createElement("g",null,React.createElement("path",{d:"M16 2H8c-1.104 0-2 .896-2 2v16c0 1.104.896 2 2 2h8c1.104 0 2-.896 2-2V4c0-1.104-.896-2-2-2zm-3 19h-2v-1h2v1zm3-2H8V5h8v14z"}));case"gridicons-pages":return React.createElement("g",null,React.createElement("path",{d:"M16 8H8V6h8v2zm0 2H8v2h8v-2zm4-6v12l-6 6H6c-1.105 0-2-.895-2-2V4c0-1.105.895-2 2-2h12c1.105 0 2 .895 2 2zm-2 10V4H6v16h6v-4c0-1.105.895-2 2-2h4z"}));case"gridicons-posts":return React.createElement("g",null,React.createElement("path",{d:"M16 19H3v-2h13v2zm5-10H3v2h18V9zM3 5v2h11V5H3zm14 0v2h4V5h-4zm-6 8v2h10v-2H11zm-8 0v2h5v-2H3z"}));case"gridicons-search":return React.createElement("g",null,React.createElement("path",{d:"M21 19l-5.154-5.154C16.574 12.742 17 11.42 17 10c0-3.866-3.134-7-7-7s-7 3.134-7 7 3.134 7 7 7c1.42 0 2.742-.426 3.846-1.154L19 21l2-2zM5 10c0-2.757 2.243-5 5-5s5 2.243 5 5-2.243 5-5 5-5-2.243-5-5z"}));case"gridicons-star-outline":return React.createElement("g",null,React.createElement("path",{d:"M12 6.308l1.176 3.167.347.936.997.042 3.374.14-2.647 2.09-.784.62.27.963.91 3.25-2.813-1.872-.83-.553-.83.552-2.814 1.87.91-3.248.27-.962-.783-.62-2.648-2.092 3.374-.14.996-.04.347-.936L12 6.308M12 2L9.418 8.953 2 9.257l5.822 4.602L5.82 21 12 16.89 18.18 21l-2.002-7.14L22 9.256l-7.418-.305L12 2z"}));case"gridicons-star":return React.createElement("g",null,React.createElement("path",{d:"M12 2l2.582 6.953L22 9.257l-5.822 4.602L18.18 21 12 16.89 5.82 21l2.002-7.14L2 9.256l7.418-.304"}));case"gridicons-tag":return React.createElement("g",null,React.createElement("path",{d:"M20 2.007h-7.087c-.53 0-1.04.21-1.414.586L2.592 11.5c-.78.78-.78 2.046 0 2.827l7.086 7.086c.78.78 2.046.78 2.827 0l8.906-8.906c.376-.374.587-.883.587-1.413V4.007c0-1.105-.895-2-2-2zM17.007 9c-1.105 0-2-.895-2-2s.895-2 2-2 2 .895 2 2-.895 2-2 2z"}));case"gridicons-video":return React.createElement("g",null,React.createElement("path",{d:"M20 4v2h-2V4H6v2H4V4c-1.105 0-2 .895-2 2v12c0 1.105.895 2 2 2v-2h2v2h12v-2h2v2c1.105 0 2-.895 2-2V6c0-1.105-.895-2-2-2zM6 16H4v-3h2v3zm0-5H4V8h2v3zm4 4V9l4.5 3-4.5 3zm10 1h-2v-3h2v3zm0-5h-2V8h2v3z"}));case"gridicons-lock":return React.createElement(React.Fragment,null,React.createElement("g",{id:"lock"},React.createElement("path",{d:"M18,8h-1V7c0-2.757-2.243-5-5-5S7,4.243,7,7v1H6c-1.105,0-2,0.895-2,2v10c0,1.105,0.895,2,2,2h12c1.105,0,2-0.895,2-2V10 C20,8.895,19.105,8,18,8z M9,7c0-1.654,1.346-3,3-3s3,1.346,3,3v1H9V7z M13,15.723V18h-2v-2.277c-0.595-0.346-1-0.984-1-1.723 c0-1.105,0.895-2,2-2s2,0.895,2,2C14,14.738,13.595,15.376,13,15.723z"})),React.createElement("g",{id:"Layer_1"}));case"gridicons-external":return React.createElement("g",null,React.createElement("path",{d:"M19 13v6c0 1.105-.895 2-2 2H5c-1.105 0-2-.895-2-2V7c0-1.105.895-2 2-2h6v2H5v12h12v-6h2zM13 3v2h4.586l-7.793 7.793 1.414 1.414L19 6.414V11h2V3h-8z"}))}}render(){const{size:e=24,className:t=""}=this.props,a=this.props.height||e,r=this.props.width||e,n=this.props.style||{height:a,width:r},l="gridicons-"+this.props.icon,s=(0,o.A)("gridicon",l,t,{"needs-offset":this.needsOffset(l,e)}),i=this.getSVGDescription(l);return React.createElement("svg",{className:s,focusable:this.props.focusable,height:a,onClick:this.props.onClick,style:n,viewBox:"0 0 24 24",width:r,xmlns:"http://www.w3.org/2000/svg","aria-hidden":this.props["aria-hidden"]},i?React.createElement("desc",null,i):null,this.renderIcon(l))}}const s=l},40597:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var r=a(56427),o=a(13022),n=a(51609),l=a.n(n),s=a(51112),i=a(11883);a(50626);const c=e=>({"top-end":"top left",top:"top center","top-start":"top right","bottom-end":"bottom left",bottom:"bottom center","bottom-start":"bottom right"}[e]),u=({className:e="",iconClassName:t="",placement:a="bottom-end",animate:u=!0,iconCode:d="info-outline",iconSize:v=18,offset:p=10,title:m,children:h,popoverAnchorStyle:f="icon",forceShow:g=!1,hoverShow:w=!1,wide:b=!1,inline:y=!0,shift:x=!1})=>{const[_,k]=(0,n.useState)(!1),[E,C]=(0,n.useState)(null),j=(0,n.useCallback)((()=>k(!1)),[k]),A=(0,n.useCallback)((e=>{e.preventDefault(),k(!_)}),[_,k]),S={position:c(a),placement:a,animate:u,noArrow:!1,resize:!1,flip:!1,offset:p,focusOnMount:"container",onClose:j,className:"icon-tooltip-container",inline:y,shift:x},P="wrapper"===f,R=(0,o.A)("icon-tooltip-wrapper",e),M={left:P?0:-(62-v/2)+"px"},V=P&&g,z=(0,n.useCallback)((()=>{w&&(E&&(clearTimeout(E),C(null)),k(!0))}),[w,E]),H=(0,n.useCallback)((()=>{if(w){const e=setTimeout((()=>{k(!1),C(null)}),100);C(e)}}),[w]);return l().createElement("div",{className:R,"data-testid":"icon-tooltip_wrapper",onMouseEnter:z,onMouseLeave:H},!P&&l().createElement(s.A,{variant:"link",onMouseDown:A},l().createElement(i.A,{className:t,icon:d,size:v})),l().createElement("div",{className:(0,o.A)("icon-tooltip-helper",{"is-wide":b}),style:M},(V||_)&&l().createElement(r.Popover,S,l().createElement("div",null,m&&l().createElement("div",{className:"icon-tooltip-title"},m),l().createElement("div",{className:"icon-tooltip-content"},h)))))}},78478:(e,t,a)=>{"use strict";a.d(t,{Gg:()=>c,KH:()=>v,Nr:()=>u,Wy:()=>m,sT:()=>d});var r=a(96072),o=a.n(r),n=a(56427),l=a(13022),s=(a(84705),a(9969));const i=({className:e,size:t=24,viewBox:a="0 0 24 24",opacity:r=1,color:i="#2C3338",children:c})=>{const u={className:(0,l.A)(s.A.iconWrapper,e),width:t,height:t,viewBox:a,opacity:r,fill:void 0};return i&&(u.fill=i),React.createElement(n.SVG,o()({},u,{fillRule:"evenodd",clipRule:"evenodd",xmlns:"http://www.w3.org/2000/svg"}),React.createElement(n.G,{opacity:r},c))},c=({size:e,className:t=s.A["star-icon"],color:a})=>React.createElement(i,{className:t,size:e,color:a},React.createElement(n.Path,{d:"M12 2l2.582 6.953L22 9.257l-5.822 4.602L18.18 21 12 16.89 5.82 21l2.002-7.14L2 9.256l7.418-.304"})),u=({size:e,className:t=s.A["checkmark-icon"],color:a})=>React.createElement(i,{className:t,size:e,color:a},React.createElement(n.Path,{d:"M11 17.768l-4.884-4.884 1.768-1.768L11 14.232l8.658-8.658C17.823 3.39 15.075 2 12 2 6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10c0-1.528-.353-2.97-.966-4.266L11 17.768z"})),d=({size:e,className:t=s.A.jetpack,color:a})=>React.createElement(i,{className:t,size:e,color:a,viewBox:"0 0 32 32"},React.createElement(n.Path,{className:"jetpack-logo__icon-circle",d:"M16,0C7.2,0,0,7.2,0,16s7.2,16,16,16s16-7.2,16-16S24.8,0,16,0z"}),React.createElement(n.Polygon,{fill:"#fff",points:"15,19 7,19 15,3"}),React.createElement(n.Polygon,{fill:"#fff",points:"17,29 17,13 25,13"})),v=({size:e=24,color:t="#069e08"})=>React.createElement(i,{color:t,size:e,viewBox:"0 0 32 32"},React.createElement(n.Path,{className:"spark-first",d:"M9.33301 5.33325L10.4644 8.20188L13.333 9.33325L10.4644 10.4646L9.33301 13.3333L8.20164 10.4646L5.33301 9.33325L8.20164 8.20188L9.33301 5.33325Z"}),React.createElement(n.Path,{className:"spark-second",d:"M21.3333 5.33333L22.8418 9.15817L26.6667 10.6667L22.8418 12.1752L21.3333 16L19.8248 12.1752L16 10.6667L19.8248 9.15817L21.3333 5.33333Z"}),React.createElement(n.Path,{className:"spark-third",d:"M14.6667 13.3333L16.5523 18.1144L21.3333 20L16.5523 21.8856L14.6667 26.6667L12.781 21.8856L8 20L12.781 18.1144L14.6667 13.3333Z"})),p={...{"anti-spam":({opacity:e=1,size:t,color:a})=>React.createElement(i,{size:t,opacity:e,color:a},React.createElement(n.Path,{d:"M13.2,4.7l4.7,12.8c0.4,1.1,1,1.5,2.1,1.6c0.1,0,0.1,0,0.1,0l0.1,0.1l0.1,0.1c0,0.1,0,0.1,0,0.2c0,0.1,0,0.1,0,0.1 s0,0.1-0.1,0.1c-0.1,0-0.1,0.1-0.1,0.1s-0.1,0-0.2,0h-5.1c-0.1,0-0.1,0-0.2,0c-0.1,0-0.1-0.1-0.1-0.1l-0.1-0.1c0-0.1,0-0.1,0-0.1 c0-0.1,0-0.1,0-0.2s0-0.1,0.1-0.1l0.1-0.1c0,0,0.1,0,0.2,0c0.5,0,1.1-0.2,1.1-0.8c0-0.3-0.1-0.5-0.2-0.8l-1.1-3.1 c-0.1-0.2-0.1-0.2-0.2-0.2h-4.3c-0.7,0-1.5,0-1.9,0.9l-1.1,2.4C7.1,17.6,7,17.8,7,18.1c0,0.8,1,0.9,1.6,0.9c0.1,0,0.1,0,0.2,0 L8.8,19l0.1,0.1c0,0.1,0,0.1,0,0.2c0,0.1,0,0.1,0,0.1s-0.1,0.1-0.1,0.1l-0.1,0.1c-0.1,0-0.1,0-0.2,0H4.1c-0.1,0-0.1,0-0.1,0 c-0.1,0-0.1-0.1-0.1-0.1l-0.1-0.1c0-0.1,0-0.1,0-0.1c0-0.1,0-0.1,0-0.2s0-0.1,0.1-0.1L4,19c0,0,0.1,0,0.1,0C5.2,19,5.5,18.5,6,17.5 l5.4-12.4c0.2-0.5,0.8-1,1.3-1C13,4.2,13.1,4.4,13.2,4.7z M9.1,13.1c0,0.1-0.1,0.1-0.1,0.2c0,0.1,0.1,0.1,0.1,0.1h4.4 c0.3,0,0.4-0.1,0.4-0.3c0-0.1,0-0.2-0.1-0.3l-1.2-3.5c-0.3-0.8-0.8-1.9-0.8-2.7c0-0.1,0-0.1-0.1-0.1c0,0-0.1,0-0.1,0.1 c-0.1,0.6-0.4,1.2-0.7,1.7L9.1,13.1z"}),React.createElement(n.Path,{d:"M13.2,4.7l4.7,12.8c0.4,1.1,1,1.5,2.1,1.6c0.1,0,0.1,0,0.1,0l0.1,0.1l0.1,0.1c0,0.1,0,0.1,0,0.2c0,0.1,0,0.1,0,0.1 s0,0.1-0.1,0.1c-0.1,0-0.1,0.1-0.1,0.1s-0.1,0-0.2,0h-5.1c-0.1,0-0.1,0-0.2,0c-0.1,0-0.1-0.1-0.1-0.1l-0.1-0.1c0-0.1,0-0.1,0-0.1 c0-0.1,0-0.1,0-0.2s0-0.1,0.1-0.1l0.1-0.1c0,0,0.1,0,0.2,0c0.5,0,1.1-0.2,1.1-0.8c0-0.3-0.1-0.5-0.2-0.8l-1.1-3.1 c-0.1-0.2-0.1-0.2-0.2-0.2h-4.3c-0.7,0-1.5,0-1.9,0.9l-1.1,2.4C7.1,17.6,7,17.8,7,18.1c0,0.8,1,0.9,1.6,0.9c0.1,0,0.1,0,0.2,0 L8.8,19l0.1,0.1c0,0.1,0,0.1,0,0.2c0,0.1,0,0.1,0,0.1s-0.1,0.1-0.1,0.1l-0.1,0.1c-0.1,0-0.1,0-0.2,0H4.1c-0.1,0-0.1,0-0.1,0 c-0.1,0-0.1-0.1-0.1-0.1l-0.1-0.1c0-0.1,0-0.1,0-0.1c0-0.1,0-0.1,0-0.2s0-0.1,0.1-0.1L4,19c0,0,0.1,0,0.1,0C5.2,19,5.5,18.5,6,17.5 l5.4-12.4c0.2-0.5,0.8-1,1.3-1C13,4.2,13.1,4.4,13.2,4.7z M9.1,13.1c0,0.1-0.1,0.1-0.1,0.2c0,0.1,0.1,0.1,0.1,0.1h4.4 c0.3,0,0.4-0.1,0.4-0.3c0-0.1,0-0.2-0.1-0.3l-1.2-3.5c-0.3-0.8-0.8-1.9-0.8-2.7c0-0.1,0-0.1-0.1-0.1c0,0-0.1,0-0.1,0.1 c-0.1,0.6-0.4,1.2-0.7,1.7L9.1,13.1z"}),React.createElement(n.Path,{d:"M21.6,12.5c0,0.6-0.3,1-0.9,1c-0.6,0-0.8-0.3-0.8-0.8c0-0.6,0.4-1,0.9-1C21.3,11.7,21.6,12.1,21.6,12.5z"}),React.createElement(n.Path,{d:"M4.1,12.5c0,0.6-0.3,1-0.9,1s-0.8-0.3-0.8-0.8c0-0.6,0.4-1,0.9-1S4.1,12.1,4.1,12.5z"})),backup:({opacity:e=1,size:t,color:a})=>React.createElement(i,{size:t,opacity:e,color:a},React.createElement(n.Path,{d:"M2.1,5.8c0-0.1,0-0.1,0-0.2c0-0.2,0.1-0.5,0.1-0.7c0.1-0.4,0.4-0.6,0.7-0.8l8.3-2.9c0.1-0.1,0.3-0.1,0.4-0.1l0.5,0.1 l8.3,2.9c0.3,0.2,0.5,0.4,0.7,0.7c0.2,0.2,0.2,0.4,0.2,0.7c0,0.1,0,0.1,0,0.2v0.1c-0.1,0.5-0.2,0.9-0.3,1.4 c-0.2,0.4-0.3,1.2-0.7,2.2c-0.3,1-0.7,2.1-1.1,3.1c-0.5,1-1,2.1-1.6,3.3s-1.4,2.3-2.2,3.5c-0.9,1.1-1.8,2.2-2.8,3.1 c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4c-1.2-1.1-2.4-2.4-3.5-4c-1-1.6-1.9-3-2.5-4.3c-0.6-1.3-1.1-2.7-1.6-4 C2.8,8.7,2.5,7.6,2.3,7C2.3,6.5,2.1,6.1,2.1,5.8z M2.9,5.9c0,0.2,0.1,0.4,0.1,0.8C3.1,7,3.2,7.5,3.5,8.2C3.7,9,3.9,9.7,4.2,10.6 c0.3,0.7,0.7,1.7,1.1,2.7c0.4,1,1,2,1.5,2.9c0.5,1,1.2,1.9,1.9,2.9c0.8,1,1.6,1.9,2.4,2.6c0.2,0.2,0.4,0.2,0.5,0.2 c0.2,0,0.4-0.1,0.5-0.2c1.2-1,2.2-2.3,3.2-3.8c1-1.5,1.8-2.8,2.3-4c0.6-1.3,1.1-2.5,1.5-3.9c0.4-1.3,0.7-2.2,0.9-2.8 c0.1-0.5,0.2-1,0.3-1.3c0-0.1,0-0.1,0-0.1c0-0.2,0-0.3-0.1-0.4C20.3,5.2,20.2,5.1,20,5L12,2.1c0,0-0.1,0-0.2,0s-0.1,0-0.1,0h-0.2 l-8,2.8C3.2,5,3.1,5.2,3,5.3C2.9,5.5,2.9,5.6,2.9,5.8C2.9,5.8,2.9,5.8,2.9,5.9z M5.9,6.7h3l2.8,7l2.8-7h3c-0.1,0.1-0.2,0.5-0.3,0.8 C17,7.8,17,8.2,16.8,8.4c-0.1,0.3-0.2,0.5-0.4,0.8c0,0.1-0.1,0.1-0.1,0.1s-0.1,0.1-0.2,0.1c-0.1,0-0.1,0-0.1,0 c-0.1,0-0.2,0.1-0.2,0.2c0,0-0.1,0.1-0.1,0.1s-0.1,0.1-0.1,0.1c0,0,0,0.1-0.1,0.2c0,0.1-0.1,0.1-0.1,0.1l-0.4,1.1 c-1.3,3.3-2.1,5.2-2.3,5.8h-2.2l-1-2.4c-0.1-0.3-0.3-0.8-0.5-1.3c-0.1-0.3-0.3-0.8-0.5-1.3L8,10.8c-0.1-0.1-0.1-0.2-0.1-0.4 C7.8,10.2,7.7,10,7.7,9.8C7.6,9.7,7.5,9.5,7.4,9.4C7.3,9.3,7.3,9.3,7.3,9.3c-0.1,0-0.2,0-0.2,0s-0.1,0-0.1,0 C6.6,8.5,6.3,7.6,5.9,6.7z"})),boost:({opacity:e=1,size:t,color:a})=>React.createElement(i,{size:t,opacity:e,color:a},React.createElement(n.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M4.19505 16.2545C4.47368 16.561 4.94802 16.5836 5.25451 16.3049L10.2595 11.7549L14.2842 15.2765L19 10.5607V13.75H20.5V9.5V8.75239V8.7476V8H19.7529H19.7471H19H14.75V9.5H17.9393L14.2158 13.2235L10.2405 9.74507L4.2455 15.195C3.93901 15.4737 3.91642 15.948 4.19505 16.2545Z"})),crm:({opacity:e=1,size:t,color:a})=>React.createElement(i,{size:t,opacity:e,color:a},React.createElement(n.Path,{d:"M15.5 9.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2Zm0 1.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Zm-2.25 6v-2a2.75 2.75 0 0 0-2.75-2.75h-4A2.75 2.75 0 0 0 3.75 15v2h1.5v-2c0-.69.56-1.25 1.25-1.25h4c.69 0 1.25.56 1.25 1.25v2h1.5Zm7-2v2h-1.5v-2c0-.69-.56-1.25-1.25-1.25H15v-1.5h2.5A2.75 2.75 0 0 1 20.25 15ZM9.5 8.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Zm1.5 0a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0Z"})),extras:({opacity:e=1,size:t,color:a})=>React.createElement(i,{size:t,opacity:e,color:a},React.createElement(n.Path,{d:"M18.5 5.5V8H20V5.5h2.5V4H20V1.5h-1.5V4H16v1.5h2.5ZM12 4H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-6h-1.5v6a.5.5 0 0 1-.5.5H6a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5h6V4Z"})),protect:({opacity:e=1,size:t,className:a,color:r})=>React.createElement(i,{className:a,size:t,opacity:e,color:r},React.createElement(n.Path,{d:"M12 3.17627L18.75 6.24445V10.8183C18.75 14.7173 16.2458 18.4089 12.7147 19.5735C12.2507 19.7265 11.7493 19.7265 11.2853 19.5735C7.75416 18.4089 5.25 14.7173 5.25 10.8183V6.24445L12 3.17627ZM6.75 7.21032V10.8183C6.75 14.1312 8.89514 17.2057 11.7551 18.149C11.914 18.2014 12.086 18.2014 12.2449 18.149C15.1049 17.2057 17.25 14.1312 17.25 10.8183V7.21032L12 4.82396L6.75 7.21032Z"}),React.createElement(n.Path,{d:"M15.5291 10.0315L11.1818 14.358L8.47095 11.66L9.52907 10.5968L11.1818 12.2417L14.4709 8.96826L15.5291 10.0315Z"})),scan:({opacity:e=1,size:t,color:a})=>React.createElement(i,{size:t,opacity:e,color:a},React.createElement(n.Path,{d:"m12 3.176 6.75 3.068v4.574c0 3.9-2.504 7.59-6.035 8.755a2.283 2.283 0 0 1-1.43 0c-3.53-1.164-6.035-4.856-6.035-8.755V6.244L12 3.176ZM6.75 7.21v3.608c0 3.313 2.145 6.388 5.005 7.33.159.053.331.053.49 0 2.86-.942 5.005-4.017 5.005-7.33V7.21L12 4.824 6.75 7.21Z"})),search:({opacity:e=1,size:t,color:a})=>React.createElement(i,{size:t,opacity:e,color:a},React.createElement(n.Path,{d:"M17.5 11.5a4 4 0 1 1-8 0 4 4 0 0 1 8 0Zm1.5 0a5.5 5.5 0 0 1-9.142 4.121l-3.364 2.943-.988-1.128 3.373-2.952A5.5 5.5 0 1 1 19 11.5Z"})),social:({opacity:e=1,size:t,color:a})=>React.createElement(i,{size:t,opacity:e,color:a},React.createElement(n.Path,{d:"M15.5 3.97809V18.0219L7.5 15.5977V20H6V15.1431L3.27498 14.3173C2.22086 13.9979 1.5 13.0262 1.5 11.9248V10.0752C1.5 8.97375 2.22087 8.00207 3.27498 7.68264L15.5 3.97809ZM14 16L7.5 14.0303L7.5 7.96969L14 5.99999V16ZM6 8.42423L6 13.5757L3.70999 12.8818C3.28835 12.754 3 12.3654 3 11.9248V10.0752C3 9.63462 3.28835 9.24595 3.70999 9.11818L6 8.42423ZM17.5 11.75H21.5V10.25H17.5V11.75ZM21.5 16L17.5 15V13.5L21.5 14.5V16ZM17.5 8.5L21.5 7.5V6L17.5 7V8.5Z"})),star:c,videopress:({opacity:e=1,size:t,color:a})=>React.createElement(i,{size:t,opacity:e,color:a},React.createElement(n.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M4.3,6.2c0.8,0,1.6,0.6,1.8,1.4l2.3,7.9c0,0,0,0,0,0l2.7-9.3h1.5h4.2c2.9,0,4.9,1.9,4.9,4.7c0,2.9-2,4.7-5,4.7 h-2h-2.5l-0.5,1.5c-0.4,1.4-1.7,2.3-3.2,2.3c-1.4,0-2.7-0.9-3.2-2.3L2.5,8.7C2.1,7.4,3,6.2,4.3,6.2z M13,12.8h2.9c1.3,0,2-0.7,2-1.9 c0-1.2-0.8-1.8-2-1.8h-1.7L13,12.8z"})),jetpack:d,share:({size:e=16,className:t,color:a})=>React.createElement(i,{className:t,size:e,color:a,viewBox:"0 0 16 16"},React.createElement(n.Path,{fill:"#161722",fillRule:"evenodd",d:"M8.3 4.66C3.85 5.308.727 9.75.034 13.69l-.02.117c-.137.842.809 1.232 1.446.68 2.013-1.745 3.648-2.475 5.318-2.719a10.482 10.482 0 011.524-.103v2.792c0 .694.82 1.041 1.3.55l6.176-6.307a.79.79 0 00.012-1.088L9.614 1.004C9.14.496 8.301.84 8.301 1.542v3.117zm1.525-1.175v1.85a.773.773 0 01-.654.77l-.655.096c-2.133.311-3.987 1.732-5.295 3.672-.472.7-.854 1.44-1.143 2.18a12.32 12.32 0 011.675-.972c1.58-.75 3.048-.972 4.548-.972h.762a.77.77 0 01.762.779v1.69l4.347-4.44-4.347-4.653z",clipRule:"evenodd"})),ai:v,stats:({opacity:e=1,size:t,color:a})=>React.createElement(i,{size:t,opacity:e,color:a},React.createElement(n.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M11.25 5H12.75V20H11.25V5ZM6 10H7.5V20H6V10ZM18 14H16.5V20H18V14Z"}))}};function m(e){return p[e]?p[e]:null}},38250:(e,t,a)=>{"use strict";a.d(t,{A:()=>w});var r=a(96072),o=a.n(r),n=a(27723),l=a(51113),s=a(53512),i=a(13022),c=a(51609),u=a.n(c),d=a(3924),v=a(61069),p=a(48907),m=(a(68271),a(67142)),h=a(60442);const __=n.__,_x=n._x,f=()=>u().createElement(m.A,{logoColor:"#000",showText:!1,height:16,"aria-hidden":"true"}),g=()=>u().createElement(u().Fragment,null,u().createElement(l.A,{icon:s.A,size:16}),u().createElement("span",{className:"jp-dashboard-footer__accessible-external-link"},/* translators: accessibility text */ -__("(opens in a new tab)","jetpack-my-jetpack"))),w=({moduleName:e=__("Jetpack","jetpack-my-jetpack"),className:t,moduleNameHref:a="https://jetpack.com",menu:r,useInternalLinks:n,onAboutClick:l,onPrivacyClick:s,onTermsClick:c,...m})=>{const[w]=(0,h.A)("sm","<="),[b]=(0,h.A)("md","<="),[y]=(0,h.A)("lg",">"),x=(0,v.A)();let _=[{label:_x("About","Link to learn more about Jetpack.","jetpack-my-jetpack"),title:__("About Jetpack","jetpack-my-jetpack"),href:n?new URL("admin.php?page=jetpack_about",x).href:(0,d.A)("jetpack-about"),target:n?"_self":"_blank",onClick:l},{label:_x("Privacy","Shorthand for Privacy Policy.","jetpack-my-jetpack"),title:__("Automattic's Privacy Policy","jetpack-my-jetpack"),href:n?new URL("admin.php?page=jetpack#/privacy",x).href:(0,d.A)("a8c-privacy"),target:n?"_self":"_blank",onClick:s},{label:_x("Terms","Shorthand for Terms of Service.","jetpack-my-jetpack"),title:__("WordPress.com Terms of Service","jetpack-my-jetpack"),href:(0,d.A)("wpcom-tos"),target:"_blank",onClick:c}];r&&(_=[..._,...r]);const k=u().createElement(u().Fragment,null,u().createElement(f,null),e);return u().createElement("footer",o()({className:(0,i.A)("jp-dashboard-footer",{"is-sm":w,"is-md":b,"is-lg":y},t),"aria-label":__("Jetpack","jetpack-my-jetpack"),role:"contentinfo"},m),u().createElement("ul",null,u().createElement("li",{className:"jp-dashboard-footer__jp-item"},a?u().createElement("a",{href:a},k):k),_.map((e=>{const t="button"===e.role,a=!t&&"_blank"===e.target;return u().createElement("li",{key:e.label},u().createElement("a",{href:e.href,title:e.title,target:e.target,onClick:e.onClick,onKeyDown:e.onKeyDown,className:(0,i.A)("jp-dashboard-footer__menu-item",{"is-external":a}),role:e.role,rel:a?"noopener noreferrer":void 0,tabIndex:t?0:void 0},e.label,a&&u().createElement(g,null)))})),u().createElement("li",{className:"jp-dashboard-footer__a8c-item"},u().createElement("a",{href:n?new URL("admin.php?page=jetpack_about",x).href:(0,d.A)("a8c-about"),"aria-label":__("An Automattic Airline","jetpack-my-jetpack")},u().createElement(p.A,{"aria-hidden":"true"})))))}},67142:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var r=a(96072),o=a.n(r),n=a(27723),l=a(13022),s=a(51609),i=a.n(s);const __=n.__,c=({logoColor:e="#069e08",showText:t=!0,className:a,height:r=32,...n})=>{const s=t?"0 0 118 32":"0 0 32 32";return i().createElement("svg",o()({xmlns:"http://www.w3.org/2000/svg",x:"0px",y:"0px",viewBox:s,className:(0,l.A)("jetpack-logo",a),"aria-labelledby":"jetpack-logo-title",height:r},n,{role:"img"}),i().createElement("title",{id:"jetpack-logo-title"},__("Jetpack Logo","jetpack-my-jetpack")),i().createElement("path",{fill:e,d:"M16,0C7.2,0,0,7.2,0,16s7.2,16,16,16s16-7.2,16-16S24.8,0,16,0z M15,19H7l8-16V19z M17,29V13h8L17,29z"}),t&&i().createElement(i().Fragment,null,i().createElement("path",{d:"M41.3,26.6c-0.5-0.7-0.9-1.4-1.3-2.1c2.3-1.4,3-2.5,3-4.6V8h-3V6h6v13.4C46,22.8,45,24.8,41.3,26.6z"}),i().createElement("path",{d:"M65,18.4c0,1.1,0.8,1.3,1.4,1.3c0.5,0,2-0.2,2.6-0.4v2.1c-0.9,0.3-2.5,0.5-3.7,0.5c-1.5,0-3.2-0.5-3.2-3.1V12H60v-2h2.1V7.1 H65V10h4v2h-4V18.4z"}),i().createElement("path",{d:"M71,10h3v1.3c1.1-0.8,1.9-1.3,3.3-1.3c2.5,0,4.5,1.8,4.5,5.6s-2.2,6.3-5.8,6.3c-0.9,0-1.3-0.1-2-0.3V28h-3V10z M76.5,12.3 c-0.8,0-1.6,0.4-2.5,1.2v5.9c0.6,0.1,0.9,0.2,1.8,0.2c2,0,3.2-1.3,3.2-3.9C79,13.4,78.1,12.3,76.5,12.3z"}),i().createElement("path",{d:"M93,22h-3v-1.5c-0.9,0.7-1.9,1.5-3.5,1.5c-1.5,0-3.1-1.1-3.1-3.2c0-2.9,2.5-3.4,4.2-3.7l2.4-0.3v-0.3c0-1.5-0.5-2.3-2-2.3 c-0.7,0-2.3,0.5-3.7,1.1L84,11c1.2-0.4,3-1,4.4-1c2.7,0,4.6,1.4,4.6,4.7L93,22z M90,16.4l-2.2,0.4c-0.7,0.1-1.4,0.5-1.4,1.6 c0,0.9,0.5,1.4,1.3,1.4s1.5-0.5,2.3-1V16.4z"}),i().createElement("path",{d:"M104.5,21.3c-1.1,0.4-2.2,0.6-3.5,0.6c-4.2,0-5.9-2.4-5.9-5.9c0-3.7,2.3-6,6.1-6c1.4,0,2.3,0.2,3.2,0.5V13 c-0.8-0.3-2-0.6-3.2-0.6c-1.7,0-3.2,0.9-3.2,3.6c0,2.9,1.5,3.8,3.3,3.8c0.9,0,1.9-0.2,3.2-0.7V21.3z"}),i().createElement("path",{d:"M110,15.2c0.2-0.3,0.2-0.8,3.8-5.2h3.7l-4.6,5.7l5,6.3h-3.7l-4.2-5.8V22h-3V6h3V15.2z"}),i().createElement("path",{d:"M58.5,21.3c-1.5,0.5-2.7,0.6-4.2,0.6c-3.6,0-5.8-1.8-5.8-6c0-3.1,1.9-5.9,5.5-5.9s4.9,2.5,4.9,4.9c0,0.8,0,1.5-0.1,2h-7.3 c0.1,2.5,1.5,2.8,3.6,2.8c1.1,0,2.2-0.3,3.4-0.7C58.5,19,58.5,21.3,58.5,21.3z M56,15c0-1.4-0.5-2.9-2-2.9c-1.4,0-2.3,1.3-2.4,2.9 C51.6,15,56,15,56,15z"})))}},28509:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var r=a(13022),o=a(51609),n=a(11616);const l=Number(n.A.smCols),s=Number(n.A.mdCols),i=Number(n.A.lgCols),c=e=>{const{children:t,tagName:a="div",className:c}=e,u=Math.min(l,"number"==typeof e.sm?e.sm:l),d=Math.min(l,"object"==typeof e.sm?e.sm.start:0),v=Math.min(l,"object"==typeof e.sm?e.sm.end:0),p=Math.min(s,"number"==typeof e.md?e.md:s),m=Math.min(s,"object"==typeof e.md?e.md.start:0),h=Math.min(s,"object"==typeof e.md?e.md.end:0),f=Math.min(i,"number"==typeof e.lg?e.lg:i),g=Math.min(i,"object"==typeof e.lg?e.lg.start:0),w=Math.min(i,"object"==typeof e.lg?e.lg.end:0),b=(0,r.A)(c,{[n.A[`col-sm-${u}`]]:!(d&&v),[n.A[`col-sm-${d}-start`]]:d>0,[n.A[`col-sm-${v}-end`]]:v>0,[n.A[`col-md-${p}`]]:!(m&&h),[n.A[`col-md-${m}-start`]]:m>0,[n.A[`col-md-${h}-end`]]:h>0,[n.A[`col-lg-${f}`]]:!(g&&w),[n.A[`col-lg-${g}-start`]]:g>0,[n.A[`col-lg-${w}-end`]]:w>0});return(0,o.createElement)(a,{className:b},t)}},75918:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});var r=a(13022),o=a(51609),n=a(51519);const l=({children:e,fluid:t=!1,tagName:a="div",className:l,horizontalGap:s=1,horizontalSpacing:i=1},c)=>{const u=(0,o.useMemo)((()=>{const e=`calc( var(--horizontal-spacing) * ${i} )`;return{paddingTop:e,paddingBottom:e,rowGap:`calc( var(--horizontal-spacing) * ${s} )`}}),[s,i]),d=(0,r.A)(l,n.A.container,{[n.A.fluid]:t});return(0,o.createElement)(a,{className:d,style:u,ref:c},e)},s=(0,o.forwardRef)(l)},60442:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var r=a(29491),o=a(15508);const n=["sm","md","lg"],l=(e,t)=>{const a=Array.isArray(e)?e:[e],l=Array.isArray(t)?t:[t],[s,i,c]=n,u={sm:(0,r.useMediaQuery)(o.A[s]),md:(0,r.useMediaQuery)(o.A[i]),lg:(0,r.useMediaQuery)(o.A[c])};return a.map(((e,t)=>{const a=l[t];return a?((e,t,a)=>{const r=n.indexOf(e),o=r+1,l=t.includes("=");let s=[];return t.startsWith("<")&&(s=n.slice(0,l?o:r)),t.startsWith(">")&&(s=n.slice(l?r:o)),s?.length?s.some((e=>a[e])):a[e]})(e,a,u):u[e]}))}},47656:(e,t,a)=>{"use strict";a.d(t,{A:()=>p});var r=a(23751),o=a(19783),n=a(83883),l=a(51113),s=a(10991),i=a(13022),c=a(51609),u=a.n(c),d=a(4097);const v=e=>{switch(e){case"error":case"warning":default:return r.A;case"info":return o.A;case"success":return n.A}},p=({level:e="info",title:t,children:a,actions:r,hideCloseButton:o=!1,onClose:n})=>{const c=(0,i.A)(d.A.container,d.A[`is-${e}`]);return u().createElement("div",{className:c},u().createElement("div",{className:d.A["icon-wrapper"]},u().createElement(l.A,{icon:v(e),className:d.A.icon})),u().createElement("div",{className:d.A["main-content"]},t&&u().createElement("div",{className:d.A.title},t),a,r&&r.length>0&&u().createElement("div",{className:d.A["action-bar"]},r.map(((e,t)=>u().createElement("div",{key:t,className:d.A.action},e))))),!o&&u().createElement("button",{"aria-label":"close",className:d.A["close-button"],onClick:n},u().createElement(l.A,{icon:s.A})))}},37975:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var r=a(51437);const o=(e,t={})=>{const a=(0,r.Y)();return new Intl.NumberFormat(a,t).format(e)}},79245:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>_,N0:()=>x,eY:()=>b,i7:()=>y});var r=a(27723),o=a(51113),n=a(83883),l=a(31249),s=a(13022),i=a(51609),c=a.n(i),u=a(40597),d=a(60442),v=a(85879),p=a(47425),m=a(13149);const __=r.__,h=__("Included","jetpack-my-jetpack"),f=__("Not included","jetpack-my-jetpack"),g=__("Coming soon","jetpack-my-jetpack"),w=(0,i.createContext)(void 0),b=({isIncluded:e=!1,isComingSoon:t=!1,index:a=0,label:v=null,tooltipInfo:b,tooltipTitle:y,tooltipClassName:x=""})=>{const[_]=(0,d.A)("lg"),k=(0,i.useContext)(w)[a],E=t||e,C=k.name,j=k.tooltipInfo,A=k.tooltipTitle,S=b||!_&&j,P=((e,t,a)=>e?{lg:g, -// translators: Name of the current feature -default:(0,r.sprintf)(__("%s coming soon","jetpack-my-jetpack"),a)}:{lg:t?h:f,default:t?a:(0,r.sprintf)(/* translators: Name of the current feature */ -__("%s not included","jetpack-my-jetpack"),a)})(t,e,C),R=_?P.lg:P.default;return c().createElement("div",{className:(0,s.A)(m.A.item,m.A.value)},c().createElement(o.A,{className:(0,s.A)(m.A.icon,E?m.A["icon-check"]:m.A["icon-cross"]),size:32,icon:E?n.A:l.A}),c().createElement(p.Ay,{variant:"body-small"},v||R),S&&c().createElement(u.A,{title:y||A,iconClassName:m.A["popover-icon"],className:(0,s.A)(m.A.popover,x),placement:"bottom-end",iconSize:14,offset:4,wide:Boolean(y&&b)},c().createElement(p.Ay,{variant:"body-small",component:"div"},b||j)))},y=({children:e})=>c().createElement("div",{className:m.A.header},e),x=({primary:e=!1,children:t})=>{let a=0;return c().createElement("div",{className:(0,s.A)(m.A.card,{[m.A["is-primary"]]:e})},i.Children.map(t,(e=>{const t=e;return t.type===b?(a++,(0,i.cloneElement)(t,{index:a-1})):t})))},_=({title:e,items:t,children:a,showIntroOfferDisclaimer:r=!1})=>{const[o]=(0,d.A)("lg");return c().createElement(w.Provider,{value:t},c().createElement("div",{className:(0,s.A)(m.A.container,{[m.A["is-viewport-large"]]:o}),style:{"--rows":t.length+1,"--columns":i.Children.toArray(a).length+1}},c().createElement("div",{className:m.A.table},c().createElement(p.Ay,{variant:"headline-small"},e),o&&t.map(((e,a)=>c().createElement("div",{className:(0,s.A)(m.A.item,{[m.A["last-feature"]]:a===t.length-1}),key:a},c().createElement(p.Ay,{variant:"body-small"},c().createElement("strong",null,e.name)),e.tooltipInfo&&c().createElement(u.A,{title:e.tooltipTitle,iconClassName:m.A["popover-icon"],className:m.A.popover,placement:e.tooltipPlacement?e.tooltipPlacement:"bottom-end",iconSize:14,offset:4,wide:Boolean(e.tooltipTitle&&e.tooltipInfo)},c().createElement(p.Ay,{variant:"body-small"},e.tooltipInfo))))),a)),c().createElement("div",{className:m.A["tos-container"]},c().createElement("div",{className:m.A.tos},r&&c().createElement(p.Ay,{variant:"body-small"},__("Reduced pricing is a limited offer for the first year and renews at regular price.","jetpack-my-jetpack")),c().createElement(v.A,{multipleButtons:!0}))))}},489:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var r=a(27723),o=a(13022),n=a(47425),l=a(72746),s=a(76066);const __=r.__,i=({price:e,offPrice:t,currency:a="",showNotOffPrice:r=!0,hideDiscountLabel:i=!0,promoLabel:c="",legend:u=__("/month, paid yearly","jetpack-my-jetpack"),isNotConvenientPrice:d=!1,hidePriceFraction:v=!1,children:p})=>{if(null==e&&null==t||!a)return null;r=r&&null!=t;const m="number"==typeof e&&"number"==typeof t?Math.floor((e-t)/e*100):0,h=!i&&m&&m>0?m+__("% off","jetpack-my-jetpack"):null;return React.createElement(React.Fragment,null,React.createElement("div",{className:s.A.container},React.createElement("div",{className:(0,o.A)(s.A["price-container"],"product-price_container")},React.createElement(l.g,{value:t??e,currency:a,isOff:!d,hidePriceFraction:v}),r&&React.createElement(l.g,{value:e,currency:a,isOff:!1,hidePriceFraction:v}),h&&React.createElement(n.Ay,{className:(0,o.A)(s.A["promo-label"],"product-price_promo_label")},h))),React.createElement("div",{className:s.A.footer},p||React.createElement(n.Ay,{className:(0,o.A)(s.A.legend,"product-price_legend")},u),c&&React.createElement(n.Ay,{className:(0,o.A)(s.A["promo-label"],"product-price_promo_label")},c)))}},72746:(e,t,a)=>{"use strict";a.d(t,{g:()=>s});var r=a(67397),o=a(13022),n=a(47425),l=a(76066);const s=({value:e,currency:t,isOff:a,hidePriceFraction:s})=>{const i=(0,o.A)(l.A.price,"product-price_price",{[l.A["is-not-off-price"]]:!a}),{symbol:c,integer:u,fraction:d}=(0,r.vA)(e,t),v=!s||!d.endsWith("00");return React.createElement(n.Ay,{className:i,variant:"headline-medium",component:"p"},React.createElement(n.Ay,{className:l.A.symbol,component:"sup",variant:"title-medium"},c),u,v&&React.createElement(n.Ay,{component:"sup",variant:"body-small","data-testid":"PriceFraction"},React.createElement("strong",null,d)))}},56461:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var r=a(28120),o=a.n(r),n=a(51609),l=a.n(n);a(49986);const s=({color:e="#FFFFFF",className:t="",size:a=20})=>{const r=t+" jp-components-spinner",o={width:a,height:a,fontSize:a,borderTopColor:e},n={borderTopColor:e,borderRightColor:e};return l().createElement("div",{className:r},l().createElement("div",{className:"jp-components-spinner__outer",style:o},l().createElement("div",{className:"jp-components-spinner__inner",style:n})))};s.propTypes={color:o().string,className:o().string,size:o().number};const i=s},85879:(e,t,a)=>{"use strict";a.d(t,{A:()=>m});var r=a(96072),o=a.n(r),n=a(86087),l=a(27723),s=a(13022),i=a(3924),c=a(47425);a(36001);const __=l.__,u=({multipleButtonsLabels:e})=>Array.isArray(e)&&e.length>1?(0,n.createInterpolateElement)((0,l.sprintf)(/* translators: %1$s is button label 1 and %2$s is button label 2 */ -__("By clicking %1$s or %2$s, you agree to our Terms of Service and to sync your site‘s data with us.","jetpack-my-jetpack"),e[0],e[1]),{strong:React.createElement("strong",null),tosLink:React.createElement(p,{slug:"wpcom-tos"}),shareDetailsLink:React.createElement(p,{slug:"jetpack-support-what-data-does-jetpack-sync"})}):(0,n.createInterpolateElement)(__("By clicking the buttons above, you agree to our Terms of Service and to sync your site‘s data with us.","jetpack-my-jetpack"),{tosLink:React.createElement(p,{slug:"wpcom-tos"}),shareDetailsLink:React.createElement(p,{slug:"jetpack-support-what-data-does-jetpack-sync"})}),d=({agreeButtonLabel:e})=>(0,n.createInterpolateElement)((0,l.sprintf)(/* translators: %s is a button label */ -__("By clicking %s, you agree to our Terms of Service and to sync your site‘s data with us.","jetpack-my-jetpack"),e),{strong:React.createElement("strong",null),tosLink:React.createElement(p,{slug:"wpcom-tos"}),shareDetailsLink:React.createElement(p,{slug:"jetpack-support-what-data-does-jetpack-sync"})}),v=()=>(0,n.createInterpolateElement)(__("By continuing you agree to our Terms of Service and to sync your site’s data with us. We’ll check if that email is linked to an existing WordPress.com account or create a new one instantly.","jetpack-my-jetpack"),{tosLink:React.createElement(p,{slug:"wpcom-tos"}),shareDetailsLink:React.createElement(p,{slug:"jetpack-support-what-data-does-jetpack-sync"})}),p=({slug:e,children:t})=>React.createElement("a",{className:"terms-of-service__link",href:(0,i.A)(e),rel:"noopener noreferrer",target:"_blank"},t),m=({className:e,multipleButtons:t,agreeButtonLabel:a,isTextOnly:r,...n})=>React.createElement(c.Ay,o()({className:(0,s.A)(e,"terms-of-service")},n),r?React.createElement(v,null):t?React.createElement(u,{multipleButtonsLabels:t}):React.createElement(d,{agreeButtonLabel:a}))},10110:(e,t,a)=>{"use strict";a.d(t,{Q:()=>r,Z:()=>o});const r={"headline-medium":"h1","headline-small":"h2","headline-small-regular":"h2","title-medium":"h3","title-medium-semi-bold":"h3","title-small":"h4",body:"p","body-small":"p","body-extra-small":"p","body-extra-small-bold":"p",label:"p"},o=["mt","mr","mb","ml","mx","my","m","pt","pr","pb","pl","px","py","p"]},47425:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>d,H3:()=>v,hE:()=>p});var r=a(96072),o=a.n(r),n=a(13022),l=a(51609),s=a.n(l),i=a(10110),c=a(63132);const u=(0,l.forwardRef)((({variant:e="body",children:t,component:a,className:r,...u},d)=>{const v=a||i.Q[e]||"span",p=(0,l.useMemo)((()=>i.Z.reduce(((e,t)=>(void 0!==u[t]&&(e+=c.A[`${t}-${u[t]}`]+" ",delete u[t]),e)),"")),[u]);return s().createElement(v,o()({className:(0,n.A)(c.A.reset,c.A[e],r,p)},u,{ref:d}),t)}));u.displayName="Text";const d=u,v=({children:e,weight:t="bold",...a})=>{const r="headline-small"+("bold"===t?"":`-${t}`);return s().createElement(u,o()({variant:r,mb:3},a),e)},p=({children:e,size:t="medium",...a})=>s().createElement(u,o()({variant:`title-${t}`,mb:1},a),e)},50723:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>v});var r=a(51609),o=a.n(r),n=a(69973);const l={"--font-headline-medium":"48px","--font-headline-small":"36px","--font-title-medium":"24px","--font-title-small":"20px","--font-body":"16px","--font-body-small":"14px","--font-body-extra-small":"12px","--font-title-large":"var(--font-headline-small)","--font-label":"var(--font-body-extra-small)"},s={"--jp-black":"#000000","--jp-black-80":"#2c3338","--jp-white":"#ffffff","--jp-white-off":"#f9f9f6","--jp-gray":"#dcdcde","--jp-gray-0":"#F6F7F7","--jp-gray-5":"var(--jp-gray)","--jp-gray-10":"#C3C4C7","--jp-gray-20":"#A7AAAD","--jp-gray-40":"#787C82","--jp-gray-50":"#646970","--jp-gray-60":"#50575E","--jp-gray-70":"#3C434A","--jp-gray-80":"#2C3338","--jp-gray-90":"#1d2327","--jp-gray-off":"#e2e2df","--jp-red-0":"#F7EBEC","--jp-red-5":"#FACFD2","--jp-red-40":"#E65054","--jp-red-50":"#D63638","--jp-red-60":"#B32D2E","--jp-red-70":"#8A2424","--jp-red-80":"#691C1C","--jp-red":"#d63639","--jp-yellow-5":"#F5E6B3","--jp-yellow-10":"#F2CF75","--jp-yellow-20":"#F0C930","--jp-yellow-30":"#DEB100","--jp-yellow-40":"#C08C00","--jp-yellow-50":"#9D6E00","--jp-yellow-60":"#7D5600","--jp-blue-20":"#68B3E8","--jp-blue-40":"#1689DB","--jp-pink":"#C9356E","--jp-green-0":"#f0f2eb","--jp-green-5":"#d0e6b8","--jp-green-10":"#9dd977","--jp-green-20":"#64ca43","--jp-green-30":"#2fb41f","--jp-green-40":"#069e08","--jp-green-50":"#008710","--jp-green-60":"#007117","--jp-green-70":"#005b18","--jp-green-80":"#004515","--jp-green-90":"#003010","--jp-green-100":"#001c09","--jp-green":"#069e08","--jp-green-primary":"var( --jp-green-40 )","--jp-green-secondary":"var( --jp-green-30 )"},i={"--jp-border-radius":"4px","--jp-menu-border-height":"1px","--jp-underline-thickness":"2px"},c={"--spacing-base":"8px"},u={},d=(e,t,a)=>{const r={...l,...s,...i,...c};for(const t in r)e.style.setProperty(t,r[t]);a&&e.classList.add(n.A.global),t&&(u[t]={provided:!0,root:e})},v=({children:e=null,targetDom:t,id:a,withGlobalStyles:n=!0})=>{const l=(0,r.useRef)(),s=u?.[a]?.provided;return(0,r.useLayoutEffect)((()=>{if(!s)return t?d(t,a,n):void(l?.current&&d(l.current,a,n))}),[t,l,s,a,n]),t?o().createElement(o().Fragment,null,e):o().createElement("div",{ref:l},e)}},67506:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var r=a(56427),o=a(86087),n=a(51609),l=a.n(n),s=a(51112);a(85157);const i=e=>{const{icon:t,title:a,description:n,primaryCtaLabel:i,primaryCtaURL:c,primaryCtaIsExternalLink:u,primaryCtaOnClick:d,secondaryCtaLabel:v,secondaryCtaURL:p,secondaryCtaIsExternalLink:m,secondaryCtaOnClick:h}=e;return l().createElement(r.Card,{isRounded:!0,size:"large"},l().createElement(r.CardBody,{className:"upsell-banner",size:"large"},t&&l().createElement("div",{className:"upsell-banner--icon"},l().createElement("img",{src:t,alt:""})),l().createElement("div",{className:"upsell-banner--content"},l().createElement("div",{className:"upsell-banner--content-info"},l().createElement("h3",null,a),l().createElement("p",null,(0,o.createInterpolateElement)(n,{br:l().createElement("br",null)}))),l().createElement("div",{className:"upsell-banner--content-cta"},v&&p&&l().createElement(s.A,{className:"upsell-banner--content-cta-button secondary",href:p,onClick:h??void 0,isExternalLink:m},v),i&&c&&l().createElement(s.A,{className:"upsell-banner--content-cta-button primary",href:c,onClick:d??void 0,isExternalLink:u},i)))))}},31984:(e,t,a)=>{"use strict";a.d(t,{o:()=>r});const r="d729d42c-b547-4750-a6f6-8b30534a5f12"},18587:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(51609),o=a(31984);const n=({jwt_token:e})=>{const t=(0,r.useCallback)((()=>{"undefined"!=typeof window&&"function"==typeof window.zE&&window.zE("messenger","loginUser",(function(t){t(e)}))}),[e]);return(0,r.useEffect)((()=>{const e=document.createElement("script"),a=document.getElementById("zendesk-chat-container");e.src="https://static.zdassets.com/ekr/snippet.js?key="+encodeURIComponent(o.o),e.type="text/javascript",e.id="ze-snippet",e.onload=()=>{t()},a&&a.appendChild(e)}),[t]),React.createElement("div",{"data-testid":"zendesk-chat-container",id:"zendesk-chat-container"})}},51437:(e,t,a)=>{"use strict";a.d(t,{Y:()=>o});var r=a(38443);const o=()=>{const{l10n:{locale:e}}=(0,r.getSettings)();if(e)return(e=>{const t=e.match(/^([a-z]{2,3})(_[a-z]{2}|_[a-z][a-z0-9]{4,7})?(?:_.*)?$/i);return t?`${t[1]}${t[2]?t[2]:""}`.replace("_","-"):"en-US"})(e);return window?.window?.navigator?.language??"en-US"}},61069:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var r=a(97999);function o(){return(0,r.getScriptData)()?.site?.admin_url||window.Initial_State?.adminUrl||window.Jetpack_Editor_Initial_State?.adminUrl||window?.myJetpackInitialState?.adminUrl||null}},3924:(e,t,a)=>{"use strict";function r(e,t={}){const a={};let r;if("undefined"!=typeof window&&(r=window?.JP_CONNECTION_INITIAL_STATE?.calypsoEnv),0===e.search("https://")){const t=new URL(e);e=`https://${t.host}${t.pathname}`,a.url=encodeURIComponent(e)}else a.source=encodeURIComponent(e);for(const e in t)a[e]=encodeURIComponent(t[e]);!Object.keys(a).includes("site")&&"undefined"!=typeof jetpack_redirects&&Object.hasOwn(jetpack_redirects,"currentSiteRawUrl")&&(a.site=jetpack_redirects.currentBlogID??jetpack_redirects.currentSiteRawUrl),r&&(a.calypso_env=r);return"https://jetpack.com/redirect/?"+Object.keys(a).map((e=>e+"="+a[e])).join("&")}a.d(t,{A:()=>r})},56439:(e,t,a)=>{let r={};try{r=a(25990)}catch{console.error("jetpackConfig is missing in your webpack config file. See @automattic/jetpack-config"),r={missingConfig:!0}}const o=e=>Object.hasOwn(r,e);e.exports={jetpackConfigHas:o,jetpackConfigGet:e=>{if(!o(e))throw'This app requires the "'+e+'" Jetpack Config to be defined in your webpack configuration file. See details in @automattic/jetpack-config package docs.';return r[e]}}},59534:(e,t,a)=>{"use strict";a.d(t,{A:()=>w});var r=a(90372),o=a(67142),n=a(56461),l=a(56427),s=a(86087),i=a(27723),c=a(28120),u=a.n(c),d=a(51609),v=a.n(d),p=a(9144),m=a(18269);const __=i.__,h=e=>{const{className:t,disabled:a,onChange:r,value:o}=e;return v().createElement(l.TextControl,{__nextHasNoMarginBottom:!0,__next40pxDefaultSize:!0,className:t,label:__("License key","jetpack-my-jetpack"),value:o,onChange:r,disabled:a})},f=e=>{const{className:t,availableLicenses:a,disabled:r,onChange:o,value:n}=e,[s,c]=(0,d.useState)(""),u=null===a,p=(0,d.useMemo)((()=>u?[{label:__("Fetching available licenses…","jetpack-my-jetpack"),value:""}]:[...a.map((({product:e,license_key:t})=>({label:(0,i.sprintf)(/* translators: placeholder is the product name and license key */ -__("%1$s - %2$s","jetpack-my-jetpack"),e,t),value:t}))),{label:__("I want to add a license key manually","jetpack-my-jetpack"),value:""}]),[a,u]);(0,d.useEffect)((()=>{c(p?.length?p[0].value:"")}),[p]);const m=(0,d.useCallback)((e=>{c(e),o(e)}),[o]);return v().createElement(v().Fragment,null,v().createElement(l.SelectControl,{__nextHasNoMarginBottom:!0,__next40pxDefaultSize:!0,className:t,disabled:r,label:__("Select a license key","jetpack-my-jetpack"),value:s,options:p,onChange:m}),!u&&!s&&v().createElement(l.TextControl,{__nextHasNoMarginBottom:!0,__next40pxDefaultSize:!0,className:t,label:__("Input a license key","jetpack-my-jetpack"),value:n,onChange:o,disabled:r}))},g=e=>{const{activateLicense:t,availableLicenses:a,fetchingAvailableLicenses:i,isActivating:c,license:u,licenseError:g,onLicenseChange:w}=e;(0,d.useEffect)((()=>{r.A.tracks.recordEvent("jetpack_wpa_license_key_activation_view")}),[]);const b=g?.match(/\[[a-z_]+\]/),y=b&&b[0],{ACTIVE_ON_SAME_SITE:x}=m.a,_=x===y,k=(0,d.useMemo)((()=>g?_?"jp-license-activation-screen-controls--license-field-with-success":"jp-license-activation-screen-controls--license-field-with-error":"jp-license-activation-screen-controls--license-field"),[g,_]),E=a&&a.length;return v().createElement("div",{className:"jp-license-activation-screen-controls"},v().createElement("div",{className:"jp-license-activation-screen-controls--content"},v().createElement(o.A,{showText:!1,height:48}),v().createElement("h1",null,__("Add a license key","jetpack-my-jetpack")),v().createElement("p",null,(0,s.createInterpolateElement)(__("Check your email for your license key. You should have received it after making your purchase.","jetpack-my-jetpack"),{strong:v().createElement("strong",null)})),i||E?v().createElement(f,{className:k,disabled:i||c,onChange:w,availableLicenses:i?null:a,value:u}):v().createElement(h,{className:k,disabled:c,onChange:w,value:u}),g&&v().createElement(p.A,{licenseError:g,errorType:y})),v().createElement("div",null,v().createElement(l.Button,{className:"jp-license-activation-screen-controls--button",onClick:t,disabled:!u},c?v().createElement(n.A,null):__("Activate","jetpack-my-jetpack"))))};g.propTypes={activateLicense:u().func.isRequired,availableLicenses:u().array,fetchingAvailableLicenses:u().bool,isActivating:u().bool.isRequired,license:u().string.isRequired,licenseError:u().string,onLicenseChange:u().func.isRequired,siteUrl:u().string.isRequired};const w=g},18269:(e,t,a)=>{"use strict";a.d(t,{a:()=>r});const r={NOT_SAME_OWNER:"[not_same_owner]",ACTIVE_ON_SAME_SITE:"[active_on_same_site]",ATTACHED_LICENSE:"[attached_license]",PRODUCT_INCOMPATIBILITY:"[product_incompatibility]",REVOKED_LICENSE:"[revoked_license]",INVALID_INPUT:"[invalid_input]",MULTISITE_INCOMPATIBILITY:"[multisite_incompatibility]"}},9144:(e,t,a)=>{"use strict";a.d(t,{A:()=>d});var r=a(90372),o=a(51113),n=a(83883),l=a(23751),s=a(51609),i=a.n(s),c=a(18269),u=a(40635);const d=({licenseError:e,errorType:t})=>{(0,s.useEffect)((()=>{e&&r.A.tracks.recordEvent("jetpack_wpa_license_activation_error_view",{error:e,error_type:t})}),[e,t]);const{errorMessage:a,errorInfo:d}=(0,u.d)(e,t);if(!e)return null;const{ACTIVE_ON_SAME_SITE:v}=c.a,p=v===t,m=p?"activation-screen-error__message--success":"activation-screen-error__message--error";return i().createElement(i().Fragment,null,i().createElement("div",{className:`activation-screen-error__message ${m}`},i().createElement(o.A,{icon:p?n.A:l.A,size:20}),i().createElement("span",null,a)),d&&i().createElement("div",{className:"activation-screen-error__info"},d))}},40635:(e,t,a)=>{"use strict";a.d(t,{d:()=>u});var r=a(3924),o=a(56427),n=a(86087),l=a(27723),s=a(51609),i=a.n(s),c=a(18269);const __=l.__,u=(e,t)=>{if(!e)return{errorMessage:null,errorInfo:null};const a=(0,n.createInterpolateElement)(__("Need help? Get in touch.","jetpack-my-jetpack"),{a:i().createElement(o.ExternalLink,{href:(0,r.A)("jetpack-support-license-activation"),rel:"noopener noreferrer"})});switch(t){case c.a.NOT_SAME_OWNER:return{errorMessage:__("The account that purchased the plan and the account managing this site are different.","jetpack-my-jetpack"),errorInfo:i().createElement(i().Fragment,null,i().createElement("p",null,(0,n.createInterpolateElement)(__("Follow these steps to resolve it.","jetpack-my-jetpack"),{a:i().createElement(o.ExternalLink,{rel:"noopener noreferrer",href:(0,r.A)("jetpack-support-activate-license",{anchor:"different-user"})})})),i().createElement("ol",null,i().createElement("li",null,__("Disconnect Jetpack from your site.","jetpack-my-jetpack")),i().createElement("li",null,__("Log in to the WordPress.com account that purchased the plan.","jetpack-my-jetpack")),i().createElement("li",null,__("Reconnect Jetpack.","jetpack-my-jetpack"))),i().createElement("p",null,a))};case c.a.ACTIVE_ON_SAME_SITE:return{errorMessage:__("This license is already active on your site.","jetpack-my-jetpack"),errorInfo:null};case c.a.ATTACHED_LICENSE:return{errorMessage:__("This license is already active on another website","jetpack-my-jetpack"),errorInfo:i().createElement("ul",null,i().createElement("li",null,(0,n.createInterpolateElement)(__("If you would like to transfer it, please get in touch.","jetpack-my-jetpack"),{a:i().createElement(o.ExternalLink,{rel:"noopener noreferrer",href:(0,r.A)("jetpack-support-license-activation")})})),i().createElement("li",null,(0,n.createInterpolateElement)(__("To use Jetpack on both sites, please buy another license.","jetpack-my-jetpack"),{a:i().createElement(o.ExternalLink,{rel:"noopener noreferrer",href:(0,r.A)("my-jetpack-my-plans-purchase-no-site")})})))};case c.a.PRODUCT_INCOMPATIBILITY:return{errorMessage:__("Your site already has an active Jetpack plan of equal or higher value.","jetpack-my-jetpack"),errorInfo:i().createElement(i().Fragment,null,i().createElement("p",null,__("It looks like your website already has a Jetpack plan that’s equal to or better than the one you’re trying to activate.","jetpack-my-jetpack")),i().createElement("p",null,__("You can either use this license on a different site or cancel your current plan for a refund.","jetpack-my-jetpack")),i().createElement("p",null,a))};case c.a.REVOKED_LICENSE:return{errorMessage:__("The subscription is no longer active or has expired. Please purchase a new license.","jetpack-my-jetpack"),errorInfo:i().createElement("p",null,a)};case c.a.INVALID_INPUT:return{errorMessage:__("Unable to validate this license key.","jetpack-my-jetpack"),errorInfo:i().createElement(i().Fragment,null,i().createElement("p",null,__("Please take a moment to check the license key from your purchase confirmation email—it might have a small typo.","jetpack-my-jetpack")),i().createElement("p",null,a))};case c.a.MULTISITE_INCOMPATIBILITY:{const t=e.match(/We.re sorry, (.*) is not compatible/),r=t&&t[1];return{errorMessage:(0,l.sprintf)(/* translators: %s is the Jetpack product name, i.e.- Jetpack Backup, Jetpack Boost, etc., which the product name should not be translated. */ -__("We’re sorry, %s is not compatible with multisite WordPress installations at this time.","jetpack-my-jetpack"),r),errorInfo:i().createElement(i().Fragment,null,i().createElement("p",null,__("This Jetpack plan doesn’t work with Multisite WordPress setups. Please use it on a single-site installation or consider canceling for a refund.","jetpack-my-jetpack")),i().createElement("p",null,a))}}default:return{errorMessage:e,errorInfo:i().createElement("p",null,a)}}}},5986:(e,t,a)=>{"use strict";a.d(t,{A:()=>d});var r=a(3924),o=a(86087),n=a(27723),l=a(28120),s=a.n(l),i=a(51609),c=a.n(i);const __=n.__,u=e=>{const{imageUrl:t,showSupportLink:a=!1}=e;return c().createElement("div",{className:"jp-license-activation-screen-illustration"},c().createElement("div",{className:"jp-license-activation-screen-illustration--wrapper"},c().createElement("img",{className:"jp-license-activation-screen-illustration--img",src:t,alt:""})),a&&c().createElement("p",{className:"jp-license-activation-screen-illustration--support-link"},(0,o.createInterpolateElement)(__("Do you need help? Contact us.","jetpack-my-jetpack"),{a:c().createElement("a",{href:(0,r.A)("jetpack-support-license-activation")})})))};u.propTypes={imageUrl:s().string.isRequired,showSupportLink:s().bool};const d=u},23806:(e,t,a)=>{"use strict";a.d(t,{A:()=>v});var r=a(67142),o=a(28120),n=a.n(o),l=a(51609),s=a.n(l),i=a(48354),c=a(88560),u=a(28547);const d=e=>{const{productId:t,siteRawUrl:a,siteAdminUrl:o,currentRecommendationsStep:n}=e;return s().createElement("div",{className:"jp-license-activation-screen-success-info"},s().createElement("div",{className:"jp-license-activation-screen-success-info--content"},s().createElement(r.A,{showText:!1,height:48})),s().createElement(c.A,{siteRawUrl:a,productId:t}),s().createElement("div",{className:"jp-license-activation-screen-success-info--buttons"},s().createElement(i.F,{currentRecommendationsStep:n,siteAdminUrl:o,siteRawUrl:a,productId:t}),s().createElement(u.m,{siteRawUrl:a,productId:t})))};d.propTypes={siteRawUrl:n().string,productId:n().number,siteAdminUrl:n().string,currentRecommendationsStep:n().string};const v=d},48354:(e,t,a)=>{"use strict";a.d(t,{F:()=>p});var r=a(56461),o=a(3924),n=a(56427),l=a(27723),s=a(28120),i=a.n(s),c=a(51609),u=a.n(c),d=a(73010),v=a(21183);const __=l.__,p=e=>{const{currentRecommendationsStep:t,siteAdminUrl:a,siteRawUrl:l,productId:s}=e,[i,c]=(0,d.A)(),p=e=>i.map((e=>e.name)).includes(e),m=(0,v.p)(s),h=p("Jetpack"),f=p("Jetpack Social"),g="jetpack_social_advanced"===m||"jetpack_social_basic"===m,w=p("Jetpack Protect");if(c)return u().createElement(n.Button,{className:"jp-license-activation-screen-success-info--button"},u().createElement(r.A,null));if(g&&(h||f))return u().createElement(n.Button,{className:"jp-license-activation-screen-success-info--button",href:a+(h?"admin.php?page=jetpack#/recommendations/"+("jetpack_social_advanced"===m?"welcome-social-advanced":"welcome-social-basic"):"admin.php?page=jetpack-social")},__("Configure my site","jetpack-my-jetpack"));if("jetpack_scan"===m){const e=w?a+"admin.php?page=jetpack-protect":(0,o.A)("jetpack-license-activation-success-scan",{site:l});return u().createElement(n.Button,{className:"jp-license-activation-screen-success-info--button",href:e},__("View scan results","jetpack-my-jetpack"))}return"not-started"===t?u().createElement(n.Button,{className:"jp-license-activation-screen-success-info--button",href:a+"admin.php?page=jetpack#/recommendations"},__("Configure my site","jetpack-my-jetpack")):u().createElement(n.Button,{className:"jp-license-activation-screen-success-info--button",href:(0,o.A)("license-activation-view-my-plans",{site:l})},__("View my plans","jetpack-my-jetpack"))};p.propTypes={siteAdminUrl:i().string.isRequired,currentRecommendationsStep:i().string,siteRawUrl:i().string.isRequired}},28547:(e,t,a)=>{"use strict";a.d(t,{m:()=>d});var r=a(3924),o=a(56427),n=a(27723),l=a(28120),s=a.n(l),i=a(51609),c=a.n(i),u=a(21183);const __=n.__,d=e=>{const{productId:t,siteRawUrl:a}=e,n={jetpack_backup:{text:__("View latest backup","jetpack-my-jetpack"),redirectSource:"jetpack-license-activation-success-backup"},jetpack_complete:{text:__("View latest backup","jetpack-my-jetpack"),redirectSource:"jetpack-license-activation-success-backup"},jetpack_scan:{text:__("View my plans","jetpack-my-jetpack"),redirectSource:"license-activation-view-my-plans"},jetpack_search:{text:__("Configure search","jetpack-my-jetpack"),redirectSource:"jetpack-license-activation-success-search"},jetpack_security:{text:__("View latest backup","jetpack-my-jetpack"),redirectSource:"jetpack-license-activation-success-backup"},default:null}[(0,u.p)(t)];return c().createElement(c().Fragment,null,n&&c().createElement(o.ExternalLink,{className:"jp-license-activation-screen-success-info--external-link",href:(0,r.A)(n.redirectSource,{site:a})},n.text))};d.propTypes={siteRawUrl:s().string,productId:s().number}},49051:(e,t,a)=>{"use strict";a.d(t,{A:()=>w});var r=a(90372),o=a(5932),n=a(86087),l=a(27723),s=a(28120),i=a.n(s),c=a(51609),u=a.n(c),d=a(59534),v=a(5986),p=a(23806),m=a(47129),h=a(96309),f=a(97139);const __=l.__,g=e=>{const{availableLicenses:t=[],currentRecommendationsStep:a,fetchingAvailableLicenses:l=!1,onActivationSuccess:s=()=>null,siteAdminUrl:i,siteRawUrl:g,startingLicense:w,displayName:b=""}=e,[y,x]=(0,c.useState)(w??""),[_,k]=(0,c.useState)(null),[E,C]=(0,c.useState)(!1),[j,A]=(0,c.useState)(null);(0,c.useEffect)((()=>{t&&t[0]&&x(t[0].license_key)}),[t]);const S=(0,c.useCallback)((()=>E?Promise.resolve():y.length<1?(k(__("This is not a valid license key. Please try again.","jetpack-my-jetpack")),Promise.resolve()):(k(null),C(!0),r.A.tracks.recordJetpackClick({target:"license_activation_button"}),o.Ay.attachLicenses([y]).then((e=>{const t=(e=>{let t=e;for(;Array.isArray(t)&&t.length>0;)t=t[0];if(t?.activatedProductId)return t.activatedProductId;if(t?.errors)for(const e in t.errors)if(t.errors[e].length>0)throw new Error(t.errors[e][0]);throw new Error(__("An unknown error occurred during license activation. Please try again.","jetpack-my-jetpack"))})(e);A(t),s(t),r.A.tracks.recordEvent("jetpack_wpa_license_activation_success")})).catch((e=>{r.A.tracks.recordEvent("jetpack_wpa_license_activation_error");"invalid_permission_manage_user_licenses"===e.response?.code?k((0,n.createInterpolateElement)(__("You either do not have permissions to perform this action or a user account needs to be connected. Click here to connect your user account or contact your administrator.","jetpack-my-jetpack"),{connectLink:u().createElement("a",{href:"admin.php?page=my-jetpack#/connection?returnTo=add-license"})})):k(e.message)})).finally((()=>{C(!1)})))),[E,y,s]);return null!==j&&y.startsWith("jetpack-golden-token")?u().createElement(m.A,{tokenRedeemed:!0,displayName:b}):null!==j?u().createElement("div",{className:"jp-license-activation-screen"},u().createElement(p.A,{siteRawUrl:g,productId:j,siteAdminUrl:i,currentRecommendationsStep:a}),u().createElement(v.A,{imageUrl:f,showSupportLink:!1})):u().createElement("div",{className:"jp-license-activation-screen"},u().createElement(d.A,{availableLicenses:t,activateLicense:S,fetchingAvailableLicenses:l,isActivating:E,license:y,licenseError:_,onLicenseChange:x,siteUrl:g}),u().createElement(v.A,{imageUrl:h,showSupportLink:!0}))};g.propTypes={availableLicenses:i().array,currentRecommendationsStep:i().string,fetchingAvailableLicenses:i().bool,onActivationSuccess:i().func,siteAdminUrl:i().string.isRequired,siteRawUrl:i().string.isRequired,startingLicense:i().string,displayName:i().string};const w=g},47129:(e,t,a)=>{"use strict";a.d(t,{A:()=>w});var r=a(78478),o=a(75918),n=a(28509),l=a(67142),s=a(51112),i=a(56427),c=a(27723),u=a(13022),d=a(28120),v=a.n(d),p=a(51609),m=a.n(p),h=a(45067);const __=c.__,_x=c._x,f=e=>{document.referrer.includes(window.location.host)?(e.preventDefault(),history.back()):(e.preventDefault(),window.location.href=window?.myJetpackInitialState?.myJetpackUrl)};function g({redeemClick:e,displayName:t,onModalClose:a=f,tokenRedeemed:d=!1}){const[v,g]=(0,p.useState)(!1),w=(0,p.useRef)(null);(0,p.useEffect)((()=>{setTimeout((()=>{w?.current?.play()}),500)}),[w]);const b=(0,r.Wy)("scan"),y=(0,r.Wy)("backup"),x=(0,p.useCallback)((t=>{e?.(t),g(!0),w.current.play()}),[w,e]),_=(0,p.useCallback)((()=>{v&&w.current.play()}),[v]),k=(0,u.A)(h.A.modal,{[h.A.animating]:v});return m().createElement("div",null,m().createElement(i.Modal,{className:k,onRequestClose:a,isDismissible:!1,__experimentalHideHeader:!0},m().createElement(o.A,{horizontalSpacing:3,horizontalGap:3},m().createElement(n.A,null,m().createElement(l.A,{className:h.A["jetpack-logo"]}),m().createElement("div",{className:h.A["video-wrap"],onClick:_,role:"presentation"},m().createElement("video",{ref:w,src:"https://videos.files.wordpress.com/oSlNIBQO/jetpack-golden-token.mp4",muted:"muted"})),m().createElement("div",{className:h.A["content-wrap"]},m().createElement("div",{className:h.A["content-wrap-text"]},t.length>0&&m().createElement("p",{className:h.A["hi-user"]},(0,c.sprintf)(/* Translators: %s is the user's display name. */ -__("Hey, %s","jetpack-my-jetpack"),t)),m().createElement("h2",{className:h.A.headline},__("You have been gifted a Jetpack Golden Token.","jetpack-my-jetpack")),m().createElement("p",null,d&&__("This unlocked a lifetime of Jetpack powers for your website. Your exclusive Jetpack Experience is already active.","jetpack-my-jetpack"),!d&&__("This unlocks a lifetime of Jetpack powers for your website. Your exclusive Jetpack Experience awaits.","jetpack-my-jetpack"))),m().createElement(s.A,{variant:"primary",weight:"regular",onClick:x,className:h.A.button},d&&__("Awesome!","jetpack-my-jetpack"),!d&&__("Redeem your token","jetpack-my-jetpack"))),m().createElement("div",{className:`${h.A["powers-wrap"]} ${h.A["content-wrap"]}`},m().createElement("div",{className:h.A["content-wrap-text"]},m().createElement("h2",{className:h.A.headline},__("Super powers are ready!","jetpack-my-jetpack")),m().createElement("p",{className:h.A.paragraph},__("Your Jetpack Golden Token provides a lifetime license for this website and includes the following products:","jetpack-my-jetpack"))),m().createElement("div",{className:h.A["jetpack-products"]},m().createElement("div",null,m().createElement(y,null),m().createElement("h3",null,__("VaultPress Backup","jetpack-my-jetpack")),m().createElement("p",null,__("Save every change and get back online quickly with one‑click restores.","jetpack-my-jetpack"))),m().createElement("div",null,m().createElement(b,null),m().createElement("h3",null,_x("Scan","Plugin name (noun).","jetpack-my-jetpack")),m().createElement("p",null,__("Automated scanning and one‑click fixes to keep your site ahead of security threats.","jetpack-my-jetpack")))),m().createElement(s.A,{variant:"primary",weight:"regular",onClick:x,href:window?.myJetpackInitialState?.myJetpackUrl,className:h.A.button},__("Explore your new powers","jetpack-my-jetpack")))))))}g.propTypes={redeemClick:v().func,tokenRedeemed:v().bool,displayName:v().string,onModalClose:v().func};const w=g},41040:(e,t,a)=>{"use strict";a.d(t,{_:()=>o.A,b:()=>r.A});var r=a(49051),o=a(47129)},85985:(e,t,a)=>{"use strict";a.d(t,{pg:()=>r.A});a(52810),a(54815);var r=a(41409);a(82034),a(65595),a(53265),a(73489),a(47119),a(58406),a(76923),a(30335),a(88290),a(9061),a(25929),a(5765)},5765:(e,t,a)=>{"use strict";a(98490)},52810:(e,t,a)=>{"use strict";a(38377).T["Jetpack Green 40"]},30335:(e,t,a)=>{"use strict";a(86087)},54815:(e,t,a)=>{"use strict";a(97999)},73489:(e,t,a)=>{"use strict";var r=a(90372);a(39384),a(86087);const{tracks:o}=r.A,{recordEvent:n}=o},47119:(e,t,a)=>{"use strict";a(47143),a(86087),a(66087)},76923:(e,t,a)=>{"use strict";a(47143),a(86087),a(88290)},58406:(e,t,a)=>{"use strict";a(86087)},25929:(e,t,a)=>{"use strict";a(47143),a(52619),a(53265),a(47119)},9520:(e,t,a)=>{"use strict";var r=a(46941),o=a.n(r);window,o()("shared-extension-utils:connection")},9061:(e,t,a)=>{"use strict";a(9520)},27105:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>d,E9:()=>u});var r=a(47143),o=a(62634),n=a(94478),l=a(88290);const s="SET_JETPACK_MODULES";function i(e){return u({isLoading:e})}function c(e,t){return{type:"SET_MODULE_UPDATING",name:e,isUpdating:t}}function u(e){return{type:s,options:e}}const d={updateJetpackModuleStatus:function*(e){try{yield c(e.name,!0),yield(0,n.sB)(e);const t=yield(0,n.wz)();return yield u({data:t}),!0}catch{const e=(0,r.select)(l.F).getJetpackModules();return yield u(e),!1}finally{yield c(e.name,!1)}},setJetpackModules:u,fetchModules:function*(){if((0,o.Sy)())return!0;try{yield i(!0);const e=yield(0,n.wz)();return yield u({data:e}),!0}catch{const e=(0,r.select)(l.F).getJetpackModules();return yield u(e),!1}finally{yield i(!1)}}}},94478:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>c,sB:()=>i,wz:()=>s});var r=a(1455),o=a.n(r);const n="FETCH_JETPACK_MODULES",l="UPDATE_JETPACK_MODULE_STATUS",s=()=>({type:n}),i=e=>({type:l,settings:e}),c={[n]:function(){return o()({path:"/jetpack/v4/module/all",method:"GET"})},[l]:function({settings:e}){return o()({path:`/jetpack/v4/module/${e.name}/active`,method:"POST",data:{active:e.active}})}}},88290:(e,t,a)=>{"use strict";a.d(t,{F:()=>c});var r=a(47143),o=a(27105),n=a(94478),l=a(38862),s=a(62701),i=a(31640);const c="jetpack-modules",u=(0,r.createReduxStore)(c,{reducer:l.A,actions:o.Ay,controls:n.Ay,resolvers:s.A,selectors:i.A});(0,r.register)(u);const d=window?.Initial_State?.getModules||window?.Jetpack_Editor_Initial_State?.modules||null;null!==d&&(0,r.dispatch)(c).setJetpackModules({data:{...d}})},38862:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});const r={isLoading:!1,isUpdating:{},data:{}},o=(e=r,t)=>{switch(t.type){case"SET_JETPACK_MODULES":return{...e,...t.options};case"SET_MODULE_UPDATING":return{...e,isUpdating:{...e.isUpdating,[t.name]:t.isUpdating}}}return e}},62701:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(27105),o=a(94478);const n={getJetpackModules:function*(){try{const e=yield(0,o.wz)();if(e)return(0,r.E9)({data:e})}catch(e){console.error(e)}}}},31640:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var r=a(62634);const o={getJetpackModules:e=>e.data,isModuleActive:(e,t)=>(0,r.Sy)()||(e?.data?.[t]?.activated??!1),areModulesLoading:e=>e.isLoading??!1,isModuleUpdating:(e,t)=>e?.isUpdating?.[t]??!1}},53265:(e,t,a)=>{"use strict";var r=a(27723);a(93832),a(66087),a(54815);const __=r.__;__("Upgrade your plan to use video covers","jetpack-my-jetpack"),__("Upgrade your plan to upload audio","jetpack-my-jetpack")},82034:(e,t,a)=>{"use strict";a(92279)},41409:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var r=a(97999);function o(){const{connectedPlugins:e,connectionStatus:t}=(0,r.getScriptData)()?.connection??{};return t?.isActive&&e?.some((({slug:e})=>"jetpack"===e))}},62634:(e,t,a)=>{"use strict";function r(){return"object"==typeof window&&"string"==typeof window._currentSiteType?window._currentSiteType:null}function o(){return"simple"===r()}a.d(t,{Sy:()=>o})},65595:(e,t,a)=>{"use strict";a(96072),a(29491)},84705:(e,t,a)=>{"use strict";a(58992),a(91135)},91135:(e,t,a)=>{"use strict";a.d(t,{$:()=>r});const r=[{name:"amazon",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M13.582 8.182c-1.648.185-3.802.308-5.344.984-1.781.769-3.03 2.337-3.03 4.644 0 2.953 1.86 4.429 4.253 4.429 2.02 0 3.125-.477 4.685-2.065.516.747.685 1.109 1.629 1.894a.59.59 0 0 0 .672-.066l.006.006c.567-.505 1.599-1.401 2.18-1.888.231-.188.19-.496.009-.754-.52-.718-1.072-1.303-1.072-2.634V8.305c0-1.876.133-3.599-1.249-4.891C15.23 2.369 13.422 2 12.04 2 9.336 2 6.318 3.01 5.686 6.351c-.068.355.191.542.423.594l2.754.298c.258-.013.445-.266.494-.523.236-1.151 1.2-1.706 2.284-1.706.584 0 1.249.215 1.595.738.398.584.346 1.384.346 2.061zm-.533 5.906c-.451.8-1.169 1.291-1.967 1.291-1.09 0-1.728-.83-1.728-2.061 0-2.42 2.171-2.86 4.227-2.86v.615c.001 1.108.027 2.031-.532 3.015m7.634 5.251C18.329 21.076 14.917 22 11.979 22c-4.118 0-7.826-1.522-10.632-4.057-.22-.199-.024-.471.241-.317 3.027 1.762 6.771 2.823 10.639 2.823 2.608 0 5.476-.541 8.115-1.66.397-.169.73.262.341.55m.653 1.704c-.194.163-.379.076-.293-.139.284-.71.92-2.298.619-2.684s-1.99-.183-2.749-.092c-.23.027-.266-.173-.059-.319 1.348-.946 3.555-.673 3.811-.356.26.32-.066 2.533-1.329 3.59"})))},{name:"behance",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M7.799 5.698c.589 0 1.12.051 1.606.156q.722.155 1.241.507.516.351.804.938c.188.387.281.871.281 1.443q0 .93-.421 1.551-.424.62-1.255 1.014 1.133.328 1.689 1.146.559.822.557 1.975 0 .935-.359 1.612a3.14 3.14 0 0 1-.973 1.114q-.613.432-1.399.637A6.1 6.1 0 0 1 7.963 18H2V5.698zm-.35 4.97q.721 0 1.192-.345.465-.344.463-1.119 0-.43-.152-.707a1.1 1.1 0 0 0-.416-.427 1.7 1.7 0 0 0-.596-.216 3.6 3.6 0 0 0-.697-.06H4.709v2.874zm.151 5.237q.401.001.759-.077c.243-.053.457-.137.637-.261.182-.12.332-.283.441-.491q.164-.31.163-.798-.002-.948-.533-1.357c-.356-.27-.83-.404-1.413-.404H4.709v3.388zm8.562-.041q.552.538 1.583.538.74 0 1.277-.374c.354-.248.571-.514.654-.79h2.155c-.347 1.072-.872 1.838-1.589 2.299-.708.463-1.572.693-2.58.693q-1.05 0-1.899-.337a4 4 0 0 1-1.439-.958 4.4 4.4 0 0 1-.904-1.484 5.4 5.4 0 0 1-.32-1.899q0-1 .329-1.863a4.4 4.4 0 0 1 .933-1.492q.607-.63 1.444-.994a4.6 4.6 0 0 1 1.857-.363q1.131-.001 1.98.44a3.94 3.94 0 0 1 1.389 1.181 4.8 4.8 0 0 1 .783 1.69q.24.947.171 1.983h-6.428c-.001.706.237 1.372.604 1.73m2.811-4.68c-.291-.321-.783-.496-1.384-.496q-.585 0-.973.2a2 2 0 0 0-.621.491 1.8 1.8 0 0 0-.328.628 2.7 2.7 0 0 0-.111.587h3.98c-.058-.625-.271-1.085-.563-1.41m-3.916-3.446h4.985V6.524h-4.985z"})))},{name:"blogger-alt",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M19.779 9.904h-.981l-.021.001a1.163 1.163 0 0 1-1.16-1.079l-.001-.013A5.813 5.813 0 0 0 11.803 3H8.871a5.813 5.813 0 0 0-5.813 5.813v6.375a5.813 5.813 0 0 0 5.813 5.813h6.257a5.814 5.814 0 0 0 5.813-5.813l.002-4.121a1.164 1.164 0 0 0-1.164-1.163M8.726 7.713h3.291a1.117 1.117 0 1 1 0 2.234H8.726a1.117 1.117 0 1 1 0-2.234m6.601 8.657H8.72a1.057 1.057 0 1 1 0-2.114h6.607a1.057 1.057 0 1 1 0 2.114"})))},{name:"blogger",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M14.722 14.019a.654.654 0 0 1-.654.654H9.977a.654.654 0 0 1 0-1.308h4.091c.361 0 .654.293.654.654m-4.741-3.321h2.038a.692.692 0 0 0 0-1.384H9.981a.692.692 0 0 0 0 1.384M21 5v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2m-3.456 6.39a.72.72 0 0 0-.72-.72h-.607l-.013.001a.72.72 0 0 1-.718-.668l-.001-.008a3.6 3.6 0 0 0-3.599-3.599H10.07a3.6 3.6 0 0 0-3.599 3.599v3.947a3.6 3.6 0 0 0 3.599 3.599h3.874a3.6 3.6 0 0 0 3.599-3.599z"})))},{name:"bluesky",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M21.2 3.3c-.5-.2-1.4-.5-3.6 1C15.4 6 12.9 9.2 12 11c-.9-1.8-3.4-5-5.7-6.7-2.2-1.6-3-1.3-3.6-1S2 4.6 2 5.1s.3 4.7.5 5.4c.7 2.3 3.1 3.1 5.3 2.8-3.3.5-6.2 1.7-2.4 5.9 4.2 4.3 5.7-.9 6.5-3.6.8 2.7 1.7 7.7 6.4 3.6 3.6-3.6 1-5.4-2.3-5.9 2.2.2 4.6-.5 5.3-2.8.4-.7.7-4.8.7-5.4 0-.5-.1-1.5-.8-1.8"})))},{name:"codepen",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"m22.016 8.84-.007-.037q-.006-.037-.015-.072-.007-.022-.013-.042l-.023-.062-.02-.042a.4.4 0 0 0-.03-.057l-.025-.038-.035-.052-.03-.037q-.021-.026-.043-.045-.015-.018-.035-.035a.4.4 0 0 0-.048-.04l-.037-.03-.015-.012-9.161-6.096a.86.86 0 0 0-.955 0L2.359 8.237l-.015.012-.038.028-.048.04a.638.638 0 0 0-.078.082q-.018.018-.03.037-.018.026-.035.052l-.025.038q-.016.031-.03.059l-.02.041a1 1 0 0 0-.034.106q-.01.034-.016.071-.003.02-.006.037a1 1 0 0 0-.009.114v6.093q0 .056.008.112l.007.038q.006.035.015.072a.2.2 0 0 0 .013.04q.01.032.022.063l.02.04a.4.4 0 0 0 .055.096l.035.052.03.037.042.045.035.035q.023.02.048.04l.038.03.013.01 9.163 6.095a.858.858 0 0 0 .959.004l9.163-6.095.015-.01q.02-.015.037-.03l.048-.04q.02-.017.035-.035.025-.024.043-.045l.03-.037.035-.052.025-.038a.4.4 0 0 0 .03-.058l.02-.04.023-.063c.003-.013.01-.027.013-.04q.009-.037.015-.072l.007-.037q.006-.062.007-.117V8.954a1 1 0 0 0-.008-.114m-9.154-4.376 6.751 4.49-3.016 2.013-3.735-2.492zm-1.724 0v4.009l-3.735 2.494-3.014-2.013zm-7.439 6.098L5.853 12l-2.155 1.438zm7.439 8.974-6.749-4.491 3.015-2.011 3.735 2.492zM12 14.035 8.953 12 12 9.966 15.047 12zm.862 5.501v-4.009l3.735-2.492 3.016 2.011zm7.441-6.098L18.147 12l2.156-1.438z"})))},{name:"deezer",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M20.129 3.662c.222-1.287.548-2.096.909-2.098h.001c.673.002 1.219 2.809 1.219 6.274s-.546 6.274-1.22 6.274c-.276 0-.531-.477-.736-1.276-.324 2.926-.997 4.937-1.776 4.937-.603 0-1.144-1.208-1.507-3.114-.248 3.624-.872 6.195-1.602 6.195-.458 0-.875-1.019-1.184-2.678C13.861 21.6 13.003 24 12.002 24s-1.861-2.399-2.231-5.824c-.307 1.659-.724 2.678-1.184 2.678-.73 0-1.352-2.571-1.602-6.195-.363 1.905-.903 3.114-1.507 3.114-.778 0-1.452-2.011-1.776-4.937-.204.802-.46 1.276-.736 1.276-.674 0-1.22-2.809-1.22-6.274s.546-6.274 1.22-6.274c.362 0 .685.812.91 2.098.357-2.22.94-3.662 1.6-3.662.784 0 1.463 2.04 1.784 5.002.314-2.156.791-3.53 1.325-3.53.749 0 1.385 2.703 1.621 6.474.443-1.933 1.085-3.146 1.795-3.146s1.352 1.214 1.795 3.146c.237-3.771.872-6.474 1.621-6.474.533 0 1.009 1.374 1.325 3.53.321-2.962 1-5.002 1.784-5.002.658 0 1.244 1.443 1.603 3.662M0 7.221c0-1.549.31-2.805.692-2.805s.692 1.256.692 2.805-.31 2.805-.692 2.805S0 8.77 0 7.221m22.616 0c0-1.549.31-2.805.692-2.805S24 5.672 24 7.221s-.31 2.805-.692 2.805-.692-1.256-.692-2.805"})))},{name:"discord",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M20.33 4.523A20 20 0 0 0 15.379 3a14 14 0 0 0-.634 1.289 18.4 18.4 0 0 0-5.495 0A14 14 0 0 0 8.615 3 20 20 0 0 0 3.66 4.527C.527 9.163-.323 13.684.102 18.141a20 20 0 0 0 6.073 3.049 14.7 14.7 0 0 0 1.301-2.097 13 13 0 0 1-2.048-.978q.258-.189.502-.378a14.27 14.27 0 0 0 12.142 0q.247.202.502.378a13 13 0 0 1-2.052.98 14.5 14.5 0 0 0 1.301 2.095 19.9 19.9 0 0 0 6.076-3.047c.498-5.168-.851-9.648-3.568-13.62M8.013 15.4c-1.183 0-2.161-1.074-2.161-2.395S6.796 10.6 8.01 10.6s2.183 1.083 2.163 2.405S9.22 15.4 8.013 15.4m7.974 0c-1.186 0-2.16-1.074-2.16-2.395s.944-2.405 2.16-2.405 2.178 1.083 2.157 2.405-.951 2.395-2.158 2.395"})))},{name:"dribbble",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10m8.434-8.631c-.292-.092-2.644-.794-5.32-.365 1.117 3.07 1.572 5.57 1.659 6.09a8.56 8.56 0 0 0 3.661-5.725m-5.098 6.507c-.127-.749-.623-3.361-1.822-6.477l-.056.019c-4.818 1.679-6.547 5.02-6.701 5.334A8.5 8.5 0 0 0 12 20.555a8.5 8.5 0 0 0 3.336-.679m-9.682-2.152c.193-.331 2.538-4.213 6.943-5.637q.167-.054.337-.102a29 29 0 0 0-.692-1.45c-4.266 1.277-8.405 1.223-8.778 1.216a8.497 8.497 0 0 0 2.19 5.973m-2.015-7.46c.382.005 3.901.02 7.897-1.041a55 55 0 0 0-3.167-4.94 8.57 8.57 0 0 0-4.73 5.981m6.359-6.555a46 46 0 0 1 3.187 5c3.037-1.138 4.323-2.867 4.477-3.085a8.51 8.51 0 0 0-7.664-1.915m8.614 2.903c-.18.243-1.612 2.078-4.77 3.367a27 27 0 0 1 .751 1.678c2.842-.357 5.666.215 5.948.275a8.5 8.5 0 0 0-1.929-5.32"})))},{name:"dropbox",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 6.134 6.069 9.797 2 6.54l5.883-3.843zm-10 6.92 5.883 3.843L12 13.459 6.069 9.797zm10 .405 4.116 3.439L22 13.054l-4.069-3.257zM22 6.54l-5.884-3.843L12 6.134l5.931 3.663zm-9.989 7.66-4.129 3.426-1.767-1.153v1.291l5.896 3.539 5.897-3.539v-1.291l-1.769 1.153z"})))},{name:"eventbrite",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M18.041 3.931 5.959 3A2.96 2.96 0 0 0 3 5.959v12.083A2.96 2.96 0 0 0 5.959 21l12.083-.931C19.699 19.983 21 18.744 21 17.11V6.89c0-1.634-1.259-2.863-2.959-2.959M16.933 8.17c-.082.215-.192.432-.378.551-.188.122-.489.132-.799.132-1.521 0-3.062-.048-4.607-.048q-.23 1.061-.451 2.128c.932-.004 1.873.005 2.81.005.726 0 1.462-.069 1.586.525.04.189-.001.426-.052.615-.105.38-.258.676-.625.783-.185.054-.408.058-.646.058-1.145 0-2.345.017-3.493.02-.169.772-.328 1.553-.489 2.333 1.57-.005 3.067-.041 4.633-.058.627-.007 1.085.194 1.009.85a2.2 2.2 0 0 1-.211.725c-.102.208-.248.376-.488.452-.237.075-.541.064-.862.078-.304.014-.614.008-.924.016-.309.009-.619.022-.919.022-1.253 0-2.429.08-3.683.073-.603-.004-1.014-.249-1.124-.757-.059-.273-.018-.58.036-.841a3543 3543 0 0 1 1.629-7.763c.056-.265.114-.511.225-.714a1.24 1.24 0 0 1 .79-.62c.368-.099.883-.047 1.344-.047.305 0 .612.008.914.016.925.026 1.817.03 2.747.053.304.007.615.016.915.016.621 0 1.17.073 1.245.614.039.288-.051.567-.132.783"})))},{name:"facebook",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10"})))},{name:"fediverse",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 743 743"},React.createElement("g",null,React.createElement("path",{d:"M181.131 275.137a68.9 68.9 0 0 1-29.465 29.328l161.758 162.389 38.998-19.764zm213.363 214.187-38.998 19.764 81.963 82.283a68.9 68.9 0 0 1 29.471-29.332zM581.646 339.391l-91.576 46.41 6.752 43.189 103.616-52.513a68.9 68.9 0 0 1-18.792-37.086m-144.738 73.351L220.383 522.477a68.9 68.9 0 0 1 18.795 37.089L443.66 455.934zM367.275 142.438l-104.48 203.97 30.848 30.967 110.623-215.957a68.9 68.9 0 0 1-36.991-18.98M235.621 399.459l-52.922 103.314a68.9 68.9 0 0 1 36.987 18.979l46.781-91.328zM150.768 304.918a68.9 68.9 0 0 1-34.416 7.195 69 69 0 0 1-6.651-.695l30.903 197.662a68.9 68.9 0 0 1 34.416-7.195 69 69 0 0 1 6.646.695zM239.342 560.545c.707 4.589.949 9.239.72 13.877a68.9 68.9 0 0 1-7.267 27.18l197.629 31.712c-.708-4.59-.95-9.24-.723-13.878a68.9 68.9 0 0 1 7.27-27.178zM601.133 377.199l-91.219 178.082a68.9 68.9 0 0 1 36.994 18.983l91.217-178.08a68.9 68.9 0 0 1-36.992-18.985M476.723 125.33a68.9 68.9 0 0 1-29.471 29.332l141.266 141.811a68.9 68.9 0 0 1 29.468-29.332zM347.787 104.631l-178.576 90.498a68.9 68.9 0 0 1 18.793 37.086l178.574-90.502a68.9 68.9 0 0 1-18.791-37.082M446.926 154.826a68.9 68.9 0 0 1-34.983 7.483 69 69 0 0 1-6.029-.633l15.818 101.291 43.163 6.926zm-16 167.028 37.4 239.482a68.9 68.9 0 0 1 33.914-6.943q3.625.206 7.207.791L474.09 328.777zM188.131 232.975c.734 4.66.988 9.383.758 14.095a68.9 68.9 0 0 1-7.16 26.983l101.369 16.281 19.923-38.908zm173.736 27.9-19.926 38.912 239.514 38.467a69 69 0 0 1-.695-13.719 68.9 68.9 0 0 1 7.349-27.324z"}),React.createElement("path",{fillOpacity:".996",d:"M412.284 156.054c34.538 1.882 64.061-24.592 65.943-59.13s-24.592-64.062-59.131-65.943c-34.538-1.882-64.061 24.592-65.943 59.13s24.593 64.062 59.131 65.943M646.144 390.82c34.538 1.881 64.062-24.593 65.943-59.131s-24.592-64.061-59.13-65.943-64.062 24.593-65.943 59.131 24.592 64.061 59.13 65.943M495.086 685.719c34.538 1.881 64.062-24.592 65.943-59.13s-24.592-64.062-59.13-65.943-64.062 24.592-65.943 59.13 24.592 64.062 59.13 65.943M167.866 633.211c34.538 1.882 64.062-24.592 65.943-59.13s-24.592-64.062-59.13-65.943-64.062 24.592-65.943 59.13 24.592 64.062 59.13 65.943M116.692 305.86c34.538 1.882 64.062-24.592 65.943-59.13s-24.592-64.062-59.131-65.943c-34.538-1.881-64.061 24.592-65.943 59.13s24.593 64.062 59.131 65.943"})))},{name:"feed",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M2 8.667V12c5.515 0 10 4.485 10 10h3.333c0-7.363-5.97-13.333-13.333-13.333M2 2v3.333c9.19 0 16.667 7.477 16.667 16.667H22C22 10.955 13.045 2 2 2m2.5 15a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5"})))},{name:"flickr",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M6.5 7c-2.75 0-5 2.25-5 5s2.25 5 5 5 5-2.25 5-5-2.25-5-5-5m11 0c-2.75 0-5 2.25-5 5s2.25 5 5 5 5-2.25 5-5-2.25-5-5-5"})))},{name:"foursquare",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M17.573 2H6.905C5.434 2 5 3.107 5 3.805v16.948c0 .785.422 1.077.66 1.172.238.097.892.177 1.285-.275 0 0 5.035-5.843 5.122-5.93.132-.132.132-.132.262-.132h3.26c1.368 0 1.588-.977 1.732-1.552.078-.318.692-3.428 1.225-6.122l.675-3.368C19.56 2.893 19.14 2 17.573 2m-1.078 5.22c-.053.252-.372.518-.665.518h-4.157c-.467 0-.802.318-.802.787v.508c0 .467.337.798.805.798h3.528c.331 0 .655.362.583.715s-.407 2.102-.448 2.295c-.04.193-.262.523-.655.523h-2.88c-.523 0-.683.068-1.033.503-.35.437-3.505 4.223-3.505 4.223-.032.035-.063.027-.063-.015V4.852c0-.298.26-.648.648-.648h8.562c.315 0 .61.297.528.683z"})))},{name:"ghost",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M10.203 20.997H3.005v-3.599h7.198zm10.792-3.599h-7.193v3.599h7.193zm.003-7.198H3v3.599h17.998zm-7.195-7.197H3.005v3.599h10.798zm7.197 0h-3.599v3.599H21z"})))},{name:"git",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M23.519 10.947 13.053.482a1.543 1.543 0 0 0-2.183 0L8.696 2.656l2.756 2.756a1.83 1.83 0 0 1 1.886.439 1.84 1.84 0 0 1 .436 1.898l2.656 2.657a1.83 1.83 0 0 1 1.899.436 1.837 1.837 0 0 1 0 2.597 1.84 1.84 0 0 1-2.599 0 1.84 1.84 0 0 1-.4-1.998l-2.478-2.477v6.521a1.837 1.837 0 0 1 .485 2.945 1.837 1.837 0 0 1-2.597 0 1.837 1.837 0 0 1 0-2.598 1.8 1.8 0 0 1 .602-.401V8.85a1.8 1.8 0 0 1-.602-.4 1.84 1.84 0 0 1-.395-2.009L7.628 3.723.452 10.898a1.544 1.544 0 0 0 0 2.184l10.467 10.467a1.544 1.544 0 0 0 2.183 0l10.417-10.418a1.546 1.546 0 0 0 0-2.184"})))},{name:"github",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 2C6.477 2 2 6.477 2 12c0 4.419 2.865 8.166 6.839 9.489.5.09.682-.218.682-.484 0-.236-.009-.866-.014-1.699-2.782.602-3.369-1.34-3.369-1.34-.455-1.157-1.11-1.465-1.11-1.465-.909-.62.069-.608.069-.608 1.004.071 1.532 1.03 1.532 1.03.891 1.529 2.341 1.089 2.91.833.091-.647.349-1.086.635-1.337-2.22-.251-4.555-1.111-4.555-4.943 0-1.091.39-1.984 1.03-2.682-.103-.254-.447-1.27.097-2.646 0 0 .84-.269 2.75 1.025A9.6 9.6 0 0 1 12 6.836c.85.004 1.705.114 2.504.336 1.909-1.294 2.748-1.025 2.748-1.025.546 1.376.202 2.394.1 2.646.64.699 1.026 1.591 1.026 2.682 0 3.841-2.337 4.687-4.565 4.935.359.307.679.917.679 1.852 0 1.335-.012 2.415-.012 2.741 0 .269.18.579.688.481A10 10 0 0 0 22 12c0-5.523-4.477-10-10-10"})))},{name:"google-alt",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m-.05 16c-3.312 0-6-2.688-6-6s2.688-6 6-6c1.62 0 2.976.594 4.014 1.566L14.26 9.222c-.432-.408-1.188-.888-2.31-.888-1.986 0-3.606 1.65-3.606 3.672s1.62 3.672 3.606 3.672c2.298 0 3.144-1.59 3.3-2.532h-3.306v-2.238h5.616c.084.378.15.732.15 1.23 0 3.426-2.298 5.862-5.76 5.862"})))},{name:"google-plus-alt",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M8 11h6.61c.06.35.11.7.11 1.16 0 4-2.68 6.84-6.72 6.84-3.87 0-7-3.13-7-7s3.13-7 7-7c1.89 0 3.47.69 4.69 1.83l-1.9 1.83c-.52-.5-1.43-1.08-2.79-1.08-2.39 0-4.34 1.98-4.34 4.42S5.61 16.42 8 16.42c2.77 0 3.81-1.99 3.97-3.02H8zm15 0h-2V9h-2v2h-2v2h2v2h2v-2h2"})))},{name:"google-plus",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m-1.919 14.05a4.051 4.051 0 0 1 0-8.1c1.094 0 2.009.401 2.709 1.057l-1.15 1.118a2.23 2.23 0 0 0-1.559-.599c-1.341 0-2.434 1.114-2.434 2.479s1.094 2.479 2.434 2.479c1.551 0 2.122-1.073 2.227-1.709h-2.232v-1.511h3.791c.057.255.101.494.101.83.001 2.312-1.55 3.956-3.887 3.956M19 12.75h-1.25V14h-1.5v-1.25H15v-1.5h1.25V10h1.5v1.25H19z"})))},{name:"google",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12.02 10.18v3.73h5.51c-.26 1.57-1.67 4.22-5.5 4.22-3.31 0-6.01-2.75-6.01-6.12s2.7-6.12 6.01-6.12c1.87 0 3.13.8 3.85 1.48l2.84-2.76C16.99 2.99 14.73 2 12.03 2c-5.52 0-10 4.48-10 10s4.48 10 10 10c5.77 0 9.6-4.06 9.6-9.77 0-.83-.11-1.42-.25-2.05z"})))},{name:"instagram",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 4.622c2.403 0 2.688.009 3.637.052.877.04 1.354.187 1.671.31.42.163.72.358 1.035.673s.51.615.673 1.035c.123.317.27.794.31 1.671.043.949.052 1.234.052 3.637s-.009 2.688-.052 3.637c-.04.877-.187 1.354-.31 1.671-.163.42-.358.72-.673 1.035s-.615.51-1.035.673c-.317.123-.794.27-1.671.31-.949.043-1.233.052-3.637.052s-2.688-.009-3.637-.052c-.877-.04-1.354-.187-1.671-.31a2.8 2.8 0 0 1-1.035-.673 2.8 2.8 0 0 1-.673-1.035c-.123-.317-.27-.794-.31-1.671-.043-.949-.052-1.234-.052-3.637s.009-2.688.052-3.637c.04-.877.187-1.354.31-1.671.163-.42.358-.72.673-1.035s.615-.51 1.035-.673c.317-.123.794-.27 1.671-.31.949-.043 1.234-.052 3.637-.052M12 3c-2.444 0-2.751.01-3.711.054-.958.044-1.612.196-2.184.418a4.4 4.4 0 0 0-1.594 1.039c-.5.5-.808 1.002-1.038 1.594-.223.572-.375 1.226-.419 2.184C3.01 9.249 3 9.556 3 12s.01 2.751.054 3.711c.044.958.196 1.612.418 2.185.23.592.538 1.094 1.038 1.594s1.002.808 1.594 1.038c.572.222 1.227.375 2.185.418.96.044 1.267.054 3.711.054s2.751-.01 3.711-.054c.958-.044 1.612-.196 2.185-.418a4.4 4.4 0 0 0 1.594-1.038c.5-.5.808-1.002 1.038-1.594.222-.572.375-1.227.418-2.185.044-.96.054-1.267.054-3.711s-.01-2.751-.054-3.711c-.044-.958-.196-1.612-.418-2.185A4.4 4.4 0 0 0 19.49 4.51c-.5-.5-1.002-.808-1.594-1.038-.572-.222-1.227-.375-2.185-.418C14.751 3.01 14.444 3 12 3m0 4.378a4.622 4.622 0 1 0 0 9.244 4.622 4.622 0 0 0 0-9.244M12 15a3 3 0 1 1 0-6 3 3 0 0 1 0 6m4.804-8.884a1.08 1.08 0 1 0 .001 2.161 1.08 1.08 0 0 0-.001-2.161"})))},{name:"json-feed",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"m8.522 17.424.027.027c1.076-1.076 1.854-.993 3.154.306l2.053 2.053c2.136 2.136 4.131 2.028 6.515-.356l.729-.728-1.548-1.548-.373.373c-1.349 1.349-2.293 1.366-3.585.075l-2.409-2.409c-1.242-1.242-2.475-1.366-3.659-.381l-.232-.232c1.01-1.225.911-2.368-.29-3.568l-2.16-2.162c-1.317-1.317-1.308-2.236.058-3.602l.372-.372-1.54-1.54-.728.729c-2.393 2.393-2.525 4.346-.439 6.433l1.78 1.78c1.3 1.3 1.383 2.095.315 3.163l.008.008a1.384 1.384 0 0 0 1.952 1.951"}),React.createElement("circle",{cx:"13.089",cy:"10.905",r:"1.383"}),React.createElement("circle",{cx:"16.349",cy:"7.644",r:"1.383"}),React.createElement("circle",{cx:"19.61",cy:"4.383",r:"1.383"})))},{name:"line",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M14.255 9.572v3.333c0 .084-.066.15-.15.15h-.534a.16.16 0 0 1-.122-.061l-1.528-2.063v1.978c0 .084-.066.15-.15.15h-.534a.15.15 0 0 1-.15-.15V9.576c0-.084.066-.15.15-.15h.529a.14.14 0 0 1 .122.066l1.528 2.063V9.577c0-.084.066-.15.15-.15h.534a.15.15 0 0 1 .155.145m-3.844-.15h-.534a.15.15 0 0 0-.15.15v3.333c0 .084.066.15.15.15h.534c.084 0 .15-.066.15-.15V9.572c0-.08-.066-.15-.15-.15m-1.289 2.794H7.664V9.572a.15.15 0 0 0-.15-.15H6.98a.15.15 0 0 0-.15.15v3.333q0 .062.042.103a.16.16 0 0 0 .103.042h2.142c.084 0 .15-.066.15-.15v-.534a.15.15 0 0 0-.145-.15m7.945-2.794h-2.142c-.08 0-.15.066-.15.15v3.333c0 .08.066.15.15.15h2.142c.084 0 .15-.066.15-.15v-.534a.15.15 0 0 0-.15-.15h-1.458v-.563h1.458c.084 0 .15-.066.15-.15v-.539a.15.15 0 0 0-.15-.15h-1.458v-.563h1.458c.084 0 .15-.066.15-.15v-.534c-.005-.08-.07-.15-.15-.15M22.5 5.33v13.373c-.005 2.1-1.725 3.802-3.83 3.797H5.297c-2.1-.005-3.802-1.73-3.797-3.83V5.297c.005-2.1 1.73-3.802 3.83-3.797h13.373c2.1.005 3.802 1.725 3.797 3.83m-2.888 5.747c0-3.422-3.431-6.206-7.645-6.206s-7.645 2.784-7.645 6.206c0 3.066 2.719 5.634 6.394 6.122.895.192.792.52.591 1.725-.033.192-.155.755.661.413s4.402-2.592 6.009-4.439c1.106-1.219 1.636-2.452 1.636-3.82"})))},{name:"link",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M17 13H7v-2h10zm1-6h-1c-1.631 0-3.065.792-3.977 2H18c1.103 0 2 .897 2 2v2c0 1.103-.897 2-2 2h-4.977c.913 1.208 2.347 2 3.977 2h1a4 4 0 0 0 4-4v-2a4 4 0 0 0-4-4M2 11v2a4 4 0 0 0 4 4h1c1.63 0 3.065-.792 3.977-2H6c-1.103 0-2-.897-2-2v-2c0-1.103.897-2 2-2h4.977C10.065 7.792 8.631 7 7 7H6a4 4 0 0 0-4 4"})))},{name:"linkedin",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M19.7 3H4.3A1.3 1.3 0 0 0 3 4.3v15.4A1.3 1.3 0 0 0 4.3 21h15.4a1.3 1.3 0 0 0 1.3-1.3V4.3A1.3 1.3 0 0 0 19.7 3M8.339 18.338H5.667v-8.59h2.672zM7.004 8.574a1.548 1.548 0 1 1-.002-3.096 1.548 1.548 0 0 1 .002 3.096m11.335 9.764H15.67v-4.177c0-.996-.017-2.278-1.387-2.278-1.389 0-1.601 1.086-1.601 2.206v4.249h-2.667v-8.59h2.559v1.174h.037c.356-.675 1.227-1.387 2.526-1.387 2.703 0 3.203 1.779 3.203 4.092v4.711z"})))},{name:"mail",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M20 4H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2m0 4.236-8 4.882-8-4.882V6h16z"})))},{name:"mastodon",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M11.973 2.352c-2.468.02-4.842.286-6.225.921 0 0-2.742 1.229-2.742 5.415 0 .958-.018 2.105.012 3.32.1 4.094.75 8.128 4.535 9.129 1.745.462 3.244.56 4.45.494 2.19-.122 3.417-.781 3.417-.781l-.072-1.588s-1.565.491-3.32.431c-1.74-.06-3.576-.188-3.858-2.324a4 4 0 0 1-.04-.598s1.709.416 3.874.516c1.324.06 2.563-.076 3.824-.226 2.418-.29 4.524-1.78 4.79-3.141.416-2.144.38-5.232.38-5.232 0-4.186-2.74-5.415-2.74-5.415-1.383-.635-3.76-.9-6.227-.921zM9.18 5.622c1.028 0 1.804.395 2.318 1.185l.502.84.5-.84c.514-.79 1.292-1.186 2.32-1.186.888 0 1.605.313 2.15.922q.795.915.794 2.469v5.068h-2.008V9.16c0-1.037-.438-1.562-1.31-1.562-.966 0-1.448.622-1.448 1.857v2.693h-1.996V9.455c0-1.235-.484-1.857-1.45-1.857-.872 0-1.308.525-1.308 1.562v4.92H6.236V9.012q-.001-1.554.793-2.469c.547-.609 1.263-.922 2.15-.922"})))},{name:"medium-alt",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{fillRule:"nonzero",d:"M7.423 6c3.27 0 5.922 2.686 5.922 6s-2.651 6-5.922 6S1.5 15.313 1.5 12s2.652-6 5.923-6m9.458.351c1.635 0 2.961 2.53 2.961 5.65 0 3.118-1.325 5.648-2.96 5.648S13.92 15.119 13.92 12s1.325-5.649 2.96-5.649m4.577.589c.576 0 1.042 2.265 1.042 5.06s-.466 5.06-1.042 5.06c-.575 0-1.04-2.265-1.04-5.06s.465-5.06 1.04-5.06"})))},{name:"medium",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M3 3v18h18V3zm15 4.26-1 .93a.28.28 0 0 0-.11.27v6.8a.27.27 0 0 0 .11.27l.94.93v.2h-4.75v-.2l1-1c.09-.1.09-.12.09-.27V9.74l-2.71 6.9h-.37L8 9.74v4.62a.67.67 0 0 0 .17.54l1.27 1.54v.2H5.86v-.2l1.27-1.54a.64.64 0 0 0 .17-.54V9a.5.5 0 0 0-.16-.4L6 7.26v-.2h3.52L12.23 13l2.38-5.94H18z"})))},{name:"messenger",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12.026.375C5.462.375.375 5.172.375 11.652c0 3.389 1.393 6.318 3.66 8.341.391.352.311.556.377 2.73a.934.934 0 0 0 1.307.823c2.48-1.092 2.512-1.178 2.933-1.064 7.185 1.977 14.973-2.621 14.973-10.83 0-6.48-5.035-11.277-11.599-11.277m6.996 8.678L15.6 14.47a1.75 1.75 0 0 1-2.527.465l-2.723-2.038a.7.7 0 0 0-.844 0l-3.674 2.786c-.49.372-1.133-.216-.802-.735l3.422-5.417a1.75 1.75 0 0 1 2.527-.465l2.722 2.037a.7.7 0 0 0 .844 0L18.22 8.32c.489-.374 1.132.213.801.732"})))},{name:"microblog",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M19.641 17.086c1.294-1.522 2.067-3.438 2.067-5.521 0-4.957-4.371-8.972-9.763-8.972s-9.763 4.015-9.763 8.972 4.371 8.972 9.763 8.972a10.5 10.5 0 0 0 3.486-.59.315.315 0 0 1 .356.112c.816 1.101 2.09 1.876 3.506 2.191a.194.194 0 0 0 .192-.309 3.82 3.82 0 0 1 .162-4.858zm-3.065-6.575-2.514 1.909.912 3.022a.286.286 0 0 1-.437.317l-2.592-1.802-2.592 1.802a.285.285 0 0 1-.436-.317l.912-3.022-2.515-1.909a.285.285 0 0 1 .167-.513l3.155-.066 1.038-2.981a.285.285 0 0 1 .539 0l1.038 2.981 3.155.066a.285.285 0 0 1 .17.513"})))},{name:"nextdoor",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",strokeMiterlimit:"10",viewBox:"0 0 130 130"},React.createElement("g",null,React.createElement("path",{d:"M64.25 3.531c-31.144.337-57.596 24.22-60.469 55.907-3.064 33.799 21.857 63.685 55.657 66.75s63.685-21.857 66.75-55.657-21.857-63.686-55.657-66.75a62 62 0 0 0-6.281-.25m3.938 34.907C82.468 38.438 93.5 48.58 93.5 61.5v27c0 .685-.565 1.25-1.25 1.25H80.906a1.267 1.267 0 0 1-1.25-1.25V63.375c0-5.58-4.309-11.937-11.469-11.937-7.47 0-11.468 6.357-11.468 11.937V88.5c0 .685-.565 1.25-1.25 1.25H44.125c-.68 0-1.219-.57-1.219-1.25V64.156c0-.74-.529-1.364-1.25-1.531-13.13-2.93-15.115-10.285-15.375-21.125-.005-.332.142-.67.375-.906.233-.237.543-.375.875-.375l11.688.062c.66.01 1.187.529 1.218 1.188.13 4.44.438 9.406 4.438 9.406.83 0 1.443-1.179 1.813-1.719 4.41-6.48 12.28-10.718 21.5-10.718"})))},{name:"patreon",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M20 7.408c-.003-2.299-1.746-4.182-3.79-4.862-2.54-.844-5.888-.722-8.312.453-2.939 1.425-3.862 4.545-3.896 7.656-.028 2.559.22 9.297 3.92 9.345 2.75.036 3.159-3.603 4.43-5.356.906-1.247 2.071-1.599 3.506-1.963 2.465-.627 4.146-2.626 4.142-5.273"})))},{name:"pinterest-alt",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12.289 2C6.617 2 3.606 5.648 3.606 9.622c0 1.846 1.025 4.146 2.666 4.878.25.111.381.063.439-.169.044-.175.267-1.029.365-1.428a.37.37 0 0 0-.091-.362c-.54-.63-.975-1.791-.975-2.873 0-2.777 2.194-5.464 5.933-5.464 3.23 0 5.49 2.108 5.49 5.122 0 3.407-1.794 5.768-4.13 5.768-1.291 0-2.257-1.021-1.948-2.277.372-1.495 1.089-3.112 1.089-4.191 0-.967-.542-1.775-1.663-1.775-1.319 0-2.379 1.309-2.379 3.059 0 1.115.394 1.869.394 1.869s-1.302 5.279-1.54 6.261c-.405 1.666.053 4.368.094 4.604.021.126.167.169.25.063.129-.165 1.699-2.419 2.142-4.051.158-.59.817-2.995.817-2.995.43.784 1.681 1.446 3.013 1.446 3.963 0 6.822-3.494 6.822-7.833C20.394 5.112 16.849 2 12.289 2"})))},{name:"pinterest",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 2C6.477 2 2 6.477 2 12c0 4.236 2.636 7.855 6.356 9.312-.087-.791-.166-2.005.035-2.869.182-.78 1.173-4.971 1.173-4.971s-.299-.599-.299-1.484c0-1.39.806-2.429 1.809-2.429.853 0 1.265.641 1.265 1.409 0 .858-.546 2.141-.828 3.329-.236.996.499 1.807 1.481 1.807 1.777 0 3.144-1.874 3.144-4.579 0-2.394-1.72-4.068-4.177-4.068-2.845 0-4.515 2.134-4.515 4.34 0 .859.331 1.781.744 2.282a.3.3 0 0 1 .069.287c-.077.316-.246.995-.279 1.134-.044.183-.145.222-.334.134-1.249-.581-2.03-2.407-2.03-3.874 0-3.154 2.292-6.051 6.607-6.051 3.469 0 6.165 2.472 6.165 5.775 0 3.446-2.173 6.22-5.189 6.22-1.013 0-1.966-.526-2.292-1.148l-.623 2.377c-.226.869-.835 1.957-1.243 2.622.936.289 1.93.445 2.961.445 5.523 0 10-4.477 10-10S17.523 2 12 2"})))},{name:"pocket",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M21.927 4.194A1.82 1.82 0 0 0 20.222 3H3.839a1.823 1.823 0 0 0-1.813 1.814v6.035l.069 1.2c.29 2.73 1.707 5.115 3.899 6.778l.119.089.025.018a9.9 9.9 0 0 0 3.91 1.727 10.06 10.06 0 0 0 4.049-.014.3.3 0 0 0 .064-.023 9.9 9.9 0 0 0 3.753-1.691l.025-.018q.06-.043.119-.089c2.192-1.664 3.609-4.049 3.898-6.778l.069-1.2V4.814a1.8 1.8 0 0 0-.098-.62m-4.235 6.287-4.704 4.512a1.37 1.37 0 0 1-1.898 0l-4.705-4.512a1.371 1.371 0 1 1 1.898-1.979l3.756 3.601 3.755-3.601a1.372 1.372 0 0 1 1.898 1.979"})))},{name:"polldaddy",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 2C6.487 2 2 6.487 2 12c0 5.514 4.487 10 10 10 5.514 0 10-4.486 10-10 0-5.513-4.486-10-10-10m.991 1.68c2.361.084 4.657 1.251 6.197 3.136.283.334.541.693.774 1.067a7.78 7.78 0 0 0-6.094-2.94 7.76 7.76 0 0 0-5.896 2.703q-.008.006-.016.014l-.152.159-.031.032a6.12 6.12 0 0 0-1.633 4.165 6.15 6.15 0 0 0 6.143 6.143c.57 0 1.123-.081 1.649-.227-1.849.839-4.131.747-5.926-.324-1.841-1.089-3.171-3.111-3.433-5.313A7.39 7.39 0 0 1 6.69 6.137C8.294 4.5 10.634 3.563 12.991 3.68m3.373 8.519c-.049-2.024-1.587-3.889-3.544-4.174-1.927-.343-3.917.857-4.451 2.661a3.67 3.67 0 0 0 .2 2.653c.39.8 1.067 1.451 1.894 1.759 1.664.654 3.63-.27 4.173-1.863.593-1.58-.396-3.423-1.94-3.776-1.52-.407-3.161.757-3.204 2.243a2.36 2.36 0 0 0 .753 1.879c.501.476 1.23.667 1.871.529a2.07 2.07 0 0 0 1.469-1.134 1.91 1.91 0 0 0-.087-1.767c-.297-.513-.859-.863-1.429-.881a1.7 1.7 0 0 0-1.437.679 1.53 1.53 0 0 0-.18 1.489q.006.016.016.03c.193.634.774 1.1 1.467 1.117a1.6 1.6 0 0 1-.97-.183c-.466-.244-.809-.747-.893-1.29a1.8 1.8 0 0 1 .499-1.539 2.02 2.02 0 0 1 1.58-.606c.593.04 1.159.35 1.517.859.364.496.51 1.156.383 1.773-.116.62-.529 1.174-1.093 1.514a2.52 2.52 0 0 1-1.914.286c-.65-.161-1.226-.606-1.584-1.206a2.83 2.83 0 0 1-.341-2.031c.143-.7.573-1.321 1.176-1.753 1.193-.883 3.056-.751 4.106.411 1.106 1.1 1.327 3.027.406 4.371-.877 1.376-2.74 2.086-4.374 1.594-1.639-.449-2.913-2.079-3.031-3.853-.07-.884.13-1.797.583-2.577.445-.777 1.155-1.432 1.972-1.862 1.64-.88 3.816-.743 5.349.424 1.251.924 2.083 2.42 2.236 4.009l.001.03c0 2.9-2.359 5.26-5.26 5.26a5.2 5.2 0 0 1-1.947-.376 5 5 0 0 0 2.613-.079 4.96 4.96 0 0 0 2.514-1.751c.618-.828.95-1.861.901-2.869M12 21.113c-5.024 0-9.111-4.087-9.111-9.113 0-4.789 3.713-8.723 8.411-9.081a7 7 0 0 0-.397.06c-2.644.453-5.017 2.106-6.32 4.409-1.309 2.301-1.391 5.19-.3 7.527 1.056 2.34 3.253 4.156 5.776 4.553 2.497.44 5.133-.483 6.787-2.301 1.719-1.797 2.269-4.529 1.486-6.796-.583-1.81-1.976-3.331-3.7-4.046 3.417.594 6.174 3.221 6.174 6.781 0 1.004-.241 2.02-.657 2.966-1.498 2.984-4.586 5.041-8.149 5.041"})))},{name:"print",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M9 16h6v2H9zm13 1h-3v3a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-3H2V9a2 2 0 0 1 2-2h1V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v2h1a2 2 0 0 1 2 2zM7 7h10V5H7zm10 7H7v6h10zm3-3.5a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 20 10.5"})))},{name:"quora",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M47.736 16.521c-.41-.81-.898-1.631-1.846-1.631a1 1 0 0 0-.527.107l-.322-.644a2.93 2.93 0 0 1 1.836-.595c1.26 0 1.914.605 2.431 1.397a6.8 6.8 0 0 0 .449-2.675c0-2.773-.869-4.199-2.929-4.199-1.992 0-2.851 1.465-2.851 4.199s.859 4.17 2.851 4.17a4 4 0 0 0 .869-.107zm.498.966a6 6 0 0 1-1.367.185 5.27 5.27 0 0 1-5.263-5.204c0-3.114 2.558-5.233 5.263-5.233s5.282 2.109 5.282 5.233a5.08 5.08 0 0 1-1.992 4.072c.381.566.781.956 1.319.956.595 0 .839-.459.878-.82h.781c.049.488-.195 2.48-2.373 2.48-1.319 0-2.012-.761-2.529-1.66zm5.624-2.646v-3.563c0-.371-.146-.586-.615-.586h-.498v-.956h3.251v5.048c0 .849.459 1.231 1.161 1.231a1.56 1.56 0 0 0 1.465-.839V11.28c0-.371-.146-.586-.615-.586h-.527v-.957h3.28v5.302c0 .527.195.732.8.732h.107v.976l-2.929.468V16.21h-.057a3.12 3.12 0 0 1-2.509 1.152c-1.28 0-2.304-.644-2.304-2.558zm12.059 1.611c1.152 0 1.592-1.005 1.611-3.027.02-1.982-.459-2.929-1.611-2.929-1.005 0-1.641.956-1.641 2.929 0 2.021.625 3.027 1.641 3.027m0 .956a3.906 3.906 0 0 1-3.974-3.974c0-2.334 1.836-3.886 3.974-3.886 2.226 0 4.004 1.582 4.004 3.886a3.867 3.867 0 0 1-4.004 3.974m4.072-.146v-.956h.312c.781 0 .859-.224.859-.908v-4.121c0-.371-.215-.586-.732-.586h-.42v-.955h2.968l.146 1.553h.108c.371-1.113 1.221-1.699 2.051-1.699.693 0 1.221.39 1.221 1.181 0 .547-.264 1.093-1.005 1.093-.664 0-.8-.449-1.358-.449-.488 0-.869.468-.869 1.152v2.783c0 .673.166.908.937.908h.439v.956h-4.658zm9.901-1.093c.956 0 1.338-.898 1.338-1.797v-1.211c-.732.722-2.304.742-2.304 2.021 0 .625.371.986.966.986m1.387 0c-.39.752-1.191 1.26-2.314 1.26-1.309 0-2.148-.732-2.148-1.914 0-2.451 3.417-1.797 4.423-3.427v-.185c0-1.25-.488-1.445-1.035-1.445-1.524 0-.83 1.631-2.226 1.631-.673 0-.937-.371-.937-.859 0-.927 1.093-1.67 3.173-1.67 1.963 0 3.163.537 3.163 2.49v3.114q-.02.742.595.742a1 1 0 0 0 .449-.127l.254.615c-.205.312-.752.869-1.836.869-.908 0-1.465-.42-1.543-1.113h-.01zm-68.554 2.558c-.83-1.641-1.807-3.3-3.711-3.3a2.9 2.9 0 0 0-1.093.215l-.644-1.299a5.66 5.66 0 0 1 3.662-1.211c2.548 0 3.857 1.231 4.892 2.792q.917-2.012.908-5.38c0-5.585-1.748-8.417-5.829-8.417-4.033 0-5.76 2.87-5.76 8.417s1.738 8.397 5.76 8.397a5.9 5.9 0 0 0 1.748-.224zm.996 1.953a9.8 9.8 0 0 1-2.744.371C5.614 21.041.371 16.764.371 10.545.371 4.277 5.614 0 10.965 0c5.448 0 10.642 4.248 10.642 10.545a10.25 10.25 0 0 1-4.013 8.201c.732 1.152 1.563 1.914 2.665 1.914 1.201 0 1.689-.927 1.768-1.66h1.572c.088.966-.4 4.999-4.775 4.999-2.646 0-4.052-1.543-5.106-3.339z"})))},{name:"reddit",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M22 11.816a2.28 2.28 0 0 0-2.277-2.277c-.593 0-1.122.24-1.526.614-1.481-.965-3.455-1.594-5.647-1.69l1.171-3.702 3.18.748a1.88 1.88 0 0 0 1.876 1.862 1.88 1.88 0 0 0 1.877-1.878 1.88 1.88 0 0 0-1.877-1.877c-.769 0-1.431.466-1.72 1.13l-3.508-.826a.386.386 0 0 0-.46.261l-1.35 4.268c-2.316.038-4.411.67-5.97 1.671a2.24 2.24 0 0 0-1.492-.581A2.28 2.28 0 0 0 2 11.816c0 .814.433 1.523 1.078 1.925a4 4 0 0 0-.061.672c0 3.292 4.011 5.97 8.941 5.97s8.941-2.678 8.941-5.97q-.002-.32-.053-.632A2.26 2.26 0 0 0 22 11.816m-3.224-7.422a1.1 1.1 0 1 1-.001 2.199 1.1 1.1 0 0 1 .001-2.199M2.777 11.816c0-.827.672-1.5 1.499-1.5.313 0 .598.103.838.269-.851.676-1.477 1.479-1.812 2.36a1.48 1.48 0 0 1-.525-1.129m9.182 7.79c-4.501 0-8.164-2.329-8.164-5.193S7.457 9.22 11.959 9.22s8.164 2.329 8.164 5.193-3.663 5.193-8.164 5.193m8.677-6.605c-.326-.89-.948-1.701-1.797-2.384.248-.186.55-.301.883-.301.827 0 1.5.673 1.5 1.5.001.483-.23.911-.586 1.185m-11.64 1.703c-.76 0-1.397-.616-1.397-1.376s.637-1.397 1.397-1.397 1.376.637 1.376 1.397-.616 1.376-1.376 1.376m7.405-1.376c0 .76-.616 1.376-1.376 1.376s-1.399-.616-1.399-1.376.639-1.397 1.399-1.397 1.376.637 1.376 1.397m-1.172 3.38a.39.39 0 0 1 0 .55c-.674.674-1.727 1.002-3.219 1.002l-.011-.002-.011.002c-1.492 0-2.544-.328-3.218-1.002a.389.389 0 1 1 .55-.55c.521.521 1.394.775 2.669.775l.011.002.011-.002c1.275 0 2.148-.253 2.669-.775a.387.387 0 0 1 .549 0"})))},{name:"share",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M18 16c-.788 0-1.499.31-2.034.807L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.048 4.118A3 3 0 0 0 15 19a3 3 0 1 0 3-3"})))},{name:"skype",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"m10.113 2.699.1-.02q.05.025.098.051zM2.72 10.223l-.017.103q.025.048.051.095zm18.555 3.548q.009-.053.018-.106-.025-.047-.052-.095zm-7.712 7.428q.049.027.096.053l.105-.017zM22 16.386a5.55 5.55 0 0 1-1.637 3.953 5.55 5.55 0 0 1-3.953 1.637 5.6 5.6 0 0 1-2.75-.725l.105-.017-.202-.035q.049.027.096.053a9.5 9.5 0 0 1-1.654.147 9.4 9.4 0 0 1-3.676-.743 9.4 9.4 0 0 1-3.002-2.023 9.4 9.4 0 0 1-2.023-3.002 9.4 9.4 0 0 1-.743-3.676c0-.546.049-1.093.142-1.628q.025.048.051.095l-.034-.199-.017.103A5.6 5.6 0 0 1 2 7.615c0-1.493.582-2.898 1.637-3.953A5.56 5.56 0 0 1 7.59 2.024c.915 0 1.818.228 2.622.655l-.1.02.199.031q-.049-.026-.098-.051l.004-.001a9.5 9.5 0 0 1 1.788-.169 9.41 9.41 0 0 1 6.678 2.766 9.4 9.4 0 0 1 2.024 3.002 9.4 9.4 0 0 1 .743 3.676c0 .575-.054 1.15-.157 1.712q-.025-.047-.052-.095l.034.201q.009-.053.018-.106c.461.829.707 1.767.707 2.721m-5.183-2.248c0-1.331-.613-2.743-3.033-3.282l-2.209-.49c-.84-.192-1.807-.444-1.807-1.237s.679-1.348 1.903-1.348c2.468 0 2.243 1.696 3.468 1.696.645 0 1.209-.379 1.209-1.031 0-1.521-2.435-2.663-4.5-2.663-2.242 0-4.63.952-4.63 3.488 0 1.221.436 2.521 2.839 3.123l2.984.745c.903.223 1.129.731 1.129 1.189 0 .762-.758 1.507-2.129 1.507-2.679 0-2.307-2.062-3.743-2.062-.645 0-1.113.444-1.113 1.078 0 1.236 1.501 2.886 4.856 2.886 3.195 0 4.776-1.538 4.776-3.599"})))},{name:"sms",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M17.696 4C20.069 4 22 5.973 22 8.398v4.357c0 2.04-1.368 3.783-3.261 4.266v4.427l-5.234-4.295h-7.2C3.93 17.153 2 15.18 2 12.755V8.398C2 5.973 3.931 4 6.304 4zM7.028 8.515c-.98 0-1.66.562-1.66 1.349-.009.497.322.91.985 1.178l.39.142c.242.097.305.171.305.297 0 .162-.131.251-.442.251s-.76-.135-1.004-.284l-.112.046-.215.868c.359.258.832.364 1.33.364 1.104 0 1.764-.523 1.764-1.333-.008-.574-.305-.956-.954-1.216l-.393-.146c-.266-.108-.341-.181-.341-.287 0-.152.131-.243.387-.243.274 0 .587.093.808.214l.109-.047.214-.837c-.315-.224-.741-.316-1.171-.316m10.302 0c-.98 0-1.66.562-1.66 1.349-.008.497.322.91.985 1.178l.39.142c.243.097.305.171.305.297 0 .162-.13.251-.442.251-.311 0-.76-.135-1.004-.284l-.112.046-.215.868c.359.258.832.364 1.33.364 1.104 0 1.764-.523 1.764-1.333-.008-.574-.305-.956-.954-1.216l-.393-.146c-.266-.108-.341-.181-.341-.287 0-.152.131-.243.387-.243.274 0 .587.093.808.214l.109-.047.214-.837c-.316-.224-.741-.316-1.171-.316m-3.733 0c-.297 0-.55.066-.78.202l-.144.098a2 2 0 0 0-.264.247l-.078.095-.027-.077c-.15-.34-.55-.565-1.033-.565l-.169.007a1.36 1.36 0 0 0-.896.42l-.08.09-.038-.363-.075-.067H8.994l-.075.079.024.634c.005.2.008.397.008.604v2.652l.075.075h1.178l.075-.075v-2.269q-.002-.168.042-.274c.083-.23.262-.392.496-.392.314 0 .483.267.483.753v2.182l.075.075h1.179l.075-.075v-2.277c0-.097.016-.213.043-.285.077-.224.26-.373.486-.373.33 0 .5.272.5.817v2.118l.074.075h1.179l.075-.075v-2.293c0-1.131-.537-1.763-1.39-1.763Z"})))},{name:"snapchat",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M11.989 1.728c3.221.001 5.904 2.683 5.908 5.912q.002 1.133.067 2.094a.737.737 0 0 0 .902.669l1.009-.237a.6.6 0 0 1 .129-.015c.256 0 .492.175.55.434a.74.74 0 0 1-.479.861l-1.532.618a.823.823 0 0 0-.485.98c1.229 4.543 4.661 4.071 4.661 4.662 0 .743-2.587.848-2.821 1.082s-.01 1.368-.532 1.588a1.1 1.1 0 0 1-.409.056c-.393 0-.95-.077-1.536-.077-.509 0-1.04.058-1.507.273-1.239.572-2.433 1.641-3.914 1.641S9.325 21.2 8.086 20.628c-.467-.216-.998-.273-1.507-.273-.586 0-1.143.077-1.536.077-.17 0-.31-.014-.409-.056-.522-.22-.299-1.354-.532-1.588s-2.821-.337-2.821-1.08c0-.592 3.432-.119 4.661-4.662a.824.824 0 0 0-.486-.98l-1.532-.618a.74.74 0 0 1-.479-.861.56.56 0 0 1 .679-.419l1.009.237q.086.02.169.02a.737.737 0 0 0 .733-.689q.065-.961.067-2.094c.004-3.229 2.666-5.91 5.887-5.912m0-1.281c-.961 0-1.898.194-2.784.574A7.2 7.2 0 0 0 6.93 2.572a7.2 7.2 0 0 0-1.539 2.282A7.1 7.1 0 0 0 4.82 7.64a33 33 0 0 1-.029 1.369l-.375-.088a2 2 0 0 0-.421-.049 1.86 1.86 0 0 0-1.135.389 1.84 1.84 0 0 0-.666 1.049 2.024 2.024 0 0 0 1.271 2.335l1.124.454c-.744 2.285-2.117 2.723-3.041 3.018a5 5 0 0 0-.659.246C.087 16.76 0 17.436 0 17.708c0 .521.247.996.694 1.339.223.17.499.311.844.43.47.162 1.016.265 1.459.347.021.164.053.341.106.518.22.738.684 1.069 1.034 1.217.332.14.676.156.905.156.224 0 .462-.018.713-.036.269-.02.548-.041.823-.041.426 0 .743.051.97.155.311.144.64.337.989.542.972.571 2.073 1.217 3.462 1.217s2.49-.647 3.462-1.217c.349-.205.679-.399.989-.542.226-.105.544-.155.97-.155.275 0 .554.021.823.041.251.019.488.036.713.036.229 0 .573-.016.905-.156.35-.147.814-.478 1.034-1.217.053-.178.084-.354.106-.518.443-.082.989-.185 1.459-.347.345-.119.621-.259.844-.43.448-.342.694-.818.694-1.339 0-.272-.087-.948-.891-1.347a5 5 0 0 0-.659-.246c-.924-.295-2.297-.733-3.041-3.018l1.124-.454a2.025 2.025 0 0 0 1.271-2.335 1.83 1.83 0 0 0-.666-1.049 1.86 1.86 0 0 0-1.556-.34l-.375.088a33 33 0 0 1-.029-1.369 7.1 7.1 0 0 0-.575-2.789c-.365-.853-.886-1.62-1.547-2.282s-1.428-1.182-2.28-1.547a7.1 7.1 0 0 0-2.786-.574"})))},{name:"soundcloud",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M23.587 13.923a3.303 3.303 0 0 1-3.344 3.117h-8.037a.674.674 0 0 1-.667-.67V7.717a.74.74 0 0 1 .444-.705s.739-.512 2.296-.512a5.27 5.27 0 0 1 2.702.742 5.35 5.35 0 0 1 2.516 3.485 3.1 3.1 0 0 1 .852-.116 3.217 3.217 0 0 1 3.237 3.312m-13.05-5.659c.242 2.935.419 5.612 0 8.538a.261.261 0 0 1-.519 0c-.39-2.901-.221-5.628 0-8.538a.26.26 0 0 1 .398-.25.26.26 0 0 1 .12.25zm-1.627 8.541a.273.273 0 0 1-.541 0 32.7 32.7 0 0 1 0-7.533.274.274 0 0 1 .544 0 29.4 29.4 0 0 1-.003 7.533m-1.63-7.788c.264 2.69.384 5.099-.003 7.782a.262.262 0 0 1-.522 0c-.374-2.649-.249-5.127 0-7.782a.264.264 0 0 1 .525 0m-1.631 7.792a.268.268 0 0 1-.532 0 27.6 27.6 0 0 1 0-7.034.27.27 0 1 1 .541 0 25.8 25.8 0 0 1-.01 7.034zm-1.63-5.276c.412 1.824.227 3.435-.015 5.294a.255.255 0 0 1-.504 0c-.22-1.834-.402-3.482-.015-5.295a.268.268 0 0 1 .535 0m-1.626-.277c.378 1.869.254 3.451-.01 5.325-.031.277-.506.28-.531 0-.239-1.846-.352-3.476-.01-5.325a.277.277 0 0 1 .551 0m-1.643.907c.396 1.239.261 2.246-.016 3.517a.258.258 0 0 1-.514 0c-.239-1.246-.336-2.274-.021-3.517a.276.276 0 0 1 .55 0z"})))},{name:"spotify",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m4.586 14.424a.62.62 0 0 1-.857.207c-2.348-1.435-5.304-1.76-8.785-.964a.622.622 0 1 1-.277-1.215c3.809-.871 7.077-.496 9.713 1.115a.623.623 0 0 1 .206.857M17.81 13.7a.78.78 0 0 1-1.072.257c-2.687-1.652-6.785-2.131-9.965-1.166A.779.779 0 1 1 6.32 11.3c3.632-1.102 8.147-.568 11.234 1.328a.78.78 0 0 1 .256 1.072m.105-2.835c-3.223-1.914-8.54-2.09-11.618-1.156a.935.935 0 1 1-.542-1.79c3.532-1.072 9.404-.865 13.115 1.338a.936.936 0 1 1-.955 1.608"})))},{name:"squarespace",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M20.87 9.271a3.86 3.86 0 0 0-5.458 0l-6.141 6.141a.964.964 0 1 0 1.365 1.364l6.14-6.14a1.929 1.929 0 1 1 2.729 2.729l-6.022 6.022a1.93 1.93 0 0 0 2.729 0l4.658-4.658a3.86 3.86 0 0 0 0-5.458m-2.047 2.047a.965.965 0 0 0-1.365 0l-6.14 6.14a1.93 1.93 0 0 1-2.729 0 .964.964 0 1 0-1.364 1.364 3.86 3.86 0 0 0 5.458 0l6.14-6.14a.966.966 0 0 0 0-1.364m-2.047-6.141a3.86 3.86 0 0 0-5.458 0l-6.14 6.14a.964.964 0 1 0 1.364 1.364l6.141-6.14a1.93 1.93 0 0 1 2.729 0 .965.965 0 1 0 1.364-1.364m-2.047 2.047a.964.964 0 0 0-1.364 0l-6.14 6.141a1.929 1.929 0 1 1-2.729-2.729l6.022-6.022a1.93 1.93 0 0 0-2.729 0L3.13 9.271a3.86 3.86 0 0 0 5.458 5.458l6.14-6.141a.963.963 0 0 0 .001-1.364"})))},{name:"stackexchange",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M4 11.606h16v3.272H4zM4 7.377h16v3.272H4zM17.514 3H6.55C5.147 3 4 4.169 4 5.614v.848h16v-.85C20 4.167 18.895 3 17.514 3M4 15.813v.85c0 1.445 1.147 2.614 2.55 2.614h6.799v3.463l3.357-3.463h.744c1.402 0 2.55-1.169 2.55-2.614v-.85z"})))},{name:"stackoverflow",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M18.18 20.103V14.78h1.767v7.09H4v-7.09h1.767v5.323z"}),React.createElement("path",{d:"m7.717 14.275 8.673 1.813.367-1.744-8.673-1.813zm1.147-4.13 8.031 3.74.734-1.606-8.031-3.763zm2.226-3.946 6.815 5.667 1.124-1.354-6.815-5.667zM15.495 2l-1.423 1.055 5.277 7.113 1.423-1.055zM7.533 18.314h8.857v-1.767H7.533z"})))},{name:"stumbleupon",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 4.294a4.47 4.47 0 0 0-4.471 4.471v6.353a1.059 1.059 0 1 1-2.118 0v-2.824H2v2.941a4.471 4.471 0 0 0 8.942 0v-6.47a1.059 1.059 0 1 1 2.118 0v1.294l1.412.647 2-.647V8.765A4.473 4.473 0 0 0 12 4.294m1.059 8.059v2.882a4.471 4.471 0 0 0 8.941 0v-2.824h-3.412v2.824a1.059 1.059 0 1 1-2.118 0v-2.882l-2 .647z"})))},{name:"substack",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M19.904 9.182H4.095V7.054h15.81v2.127M4.095 11.109V21L12 16.583 19.905 21v-9.891zM19.905 3H4.095v2.127h15.81z"})))},{name:"telegram",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12 2C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2m3.08 14.757s-.25.625-.936.325l-2.541-1.949-1.63 1.486s-.127.096-.266.036c0 0-.12-.011-.27-.486s-.911-2.972-.911-2.972L6 12.349s-.387-.137-.425-.438c-.037-.3.437-.462.437-.462l10.03-3.934s.824-.362.824.238z"})))},{name:"threads",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 192 192"},React.createElement("g",null,React.createElement("path",{d:"M141.537 88.988a67 67 0 0 0-2.518-1.143c-1.482-27.307-16.403-42.94-41.457-43.1h-.34c-14.986 0-27.449 6.396-35.12 18.036l13.779 9.452c5.73-8.695 14.724-10.548 21.348-10.548h.229c8.249.053 14.474 2.452 18.503 7.129 2.932 3.405 4.893 8.111 5.864 14.05-7.314-1.243-15.224-1.626-23.68-1.14-23.82 1.371-39.134 15.264-38.105 34.568.522 9.792 5.4 18.216 13.735 23.719 7.047 4.652 16.124 6.927 25.557 6.412 12.458-.683 22.231-5.436 29.049-14.127 5.178-6.6 8.453-15.153 9.899-25.93 5.937 3.583 10.337 8.298 12.767 13.966 4.132 9.635 4.373 25.468-8.546 38.376-11.319 11.308-24.925 16.2-45.488 16.351-22.809-.169-40.06-7.484-51.275-21.742C35.236 139.966 29.808 120.682 29.605 96c.203-24.682 5.63-43.966 16.133-57.317C56.954 24.425 74.204 17.11 97.013 16.94c22.975.17 40.526 7.52 52.171 21.847 5.71 7.026 10.015 15.86 12.853 26.162l16.147-4.308c-3.44-12.68-8.853-23.606-16.219-32.668C147.036 9.607 125.202.195 97.07 0h-.113C68.882.194 47.292 9.642 32.788 28.08 19.882 44.485 13.224 67.315 13.001 95.932L13 96v.067c.224 28.617 6.882 51.447 19.788 67.854C47.292 182.358 68.882 191.806 96.957 192h.113c24.96-.173 42.554-6.708 57.048-21.189 18.963-18.945 18.392-42.692 12.142-57.27-4.484-10.454-13.033-18.945-24.723-24.553M98.44 129.507c-10.44.588-21.286-4.098-21.82-14.135-.397-7.442 5.296-15.746 22.461-16.735q2.948-.17 5.79-.169c6.235 0 12.068.606 17.371 1.765-1.978 24.702-13.58 28.713-23.802 29.274"})))},{name:"tiktok-alt",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M5 3a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2zm7.531 3h2.053s-.114 2.635 2.85 2.82v2.04s-1.582.099-2.85-.87l.021 4.207a3.804 3.804 0 1 1-3.802-3.802h.533v2.082a1.73 1.73 0 0 0-1.922.648 1.727 1.727 0 0 0 1.947 2.646 1.73 1.73 0 0 0 1.19-1.642z"})))},{name:"tiktok",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12.22 2h3.42s-.19 4.394 4.75 4.702v3.396s-2.636.166-4.75-1.448l.037 7.012a6.338 6.338 0 1 1-6.34-6.339h.89v3.472a2.882 2.882 0 1 0 2.024 2.752z"})))},{name:"tripadvisor",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M21.01 9.859c.236-1.002.985-2.003.985-2.003l-3.341-.002C16.779 6.643 14.502 6 11.979 6 9.363 6 7 6.659 5.135 7.877L2 7.88s.74.988.98 1.983a4.98 4.98 0 0 0-.977 2.961 5.01 5.01 0 0 0 5.009 5.003 5 5 0 0 0 3.904-1.875l1.065 1.592 1.076-1.606a4.96 4.96 0 0 0 1.838 1.448 4.98 4.98 0 0 0 3.831.151 5.01 5.01 0 0 0 2.963-6.431 5 5 0 0 0-.679-1.247m-13.998 6.96a4 4 0 0 1-3.998-3.995 4 4 0 0 1 3.998-3.997 4 4 0 0 1 3.996 3.997 4 4 0 0 1-3.996 3.995m4.987-4.36A5.007 5.007 0 0 0 7.11 7.821c1.434-.613 3.081-.947 4.867-.947 1.798 0 3.421.324 4.853.966a4.984 4.984 0 0 0-4.831 4.619m6.288 4.134a3.97 3.97 0 0 1-3.058-.122 3.96 3.96 0 0 1-2.075-2.245v-.001a3.97 3.97 0 0 1 .118-3.056 3.97 3.97 0 0 1 2.246-2.077 4.005 4.005 0 0 1 5.135 2.366 4.006 4.006 0 0 1-2.366 5.135"}),React.createElement("path",{d:"M6.949 10.307a2.477 2.477 0 0 0-2.475 2.472 2.48 2.48 0 0 0 2.475 2.474 2.474 2.474 0 0 0 0-4.946m0 4.094a1.626 1.626 0 0 1-1.624-1.623 1.621 1.621 0 1 1 1.624 1.623M16.981 10.307a2.477 2.477 0 0 0-2.474 2.472 2.48 2.48 0 0 0 2.474 2.474 2.476 2.476 0 0 0 2.472-2.474 2.475 2.475 0 0 0-2.472-2.472m0 4.094a1.625 1.625 0 0 1-1.622-1.623 1.622 1.622 0 1 1 1.622 1.623"}),React.createElement("path",{d:"M7.778 12.778a.832.832 0 1 1-1.664.002.832.832 0 0 1 1.664-.002M16.981 11.947a.832.832 0 1 0 .002 1.666.832.832 0 0 0-.002-1.666"})))},{name:"tumblr-alt",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M16.749 17.396c-.357.17-1.041.319-1.551.332-1.539.041-1.837-1.081-1.85-1.896V9.847h3.861v-2.91h-3.847V2.039h-2.817c-.046 0-.127.041-.138.144-.165 1.499-.867 4.13-3.783 5.181v2.484h1.945v6.282c0 2.151 1.587 5.206 5.775 5.135 1.413-.024 2.982-.616 3.329-1.126z"})))},{name:"tumblr",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2m-5.569 14.265c-2.446.042-3.372-1.742-3.372-2.998v-3.668H8.923v-1.45c1.703-.614 2.113-2.15 2.209-3.025.007-.06.054-.084.081-.084h1.645V8.9h2.246v1.7H12.85v3.495c.008.476.182 1.131 1.081 1.107.298-.008.697-.094.906-.194l.54 1.601c-.205.296-1.121.641-1.946.656"})))},{name:"twitch",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M16.499 8.089h-1.636v4.91h1.636zm-4.499 0h-1.637v4.91H12zM4.228 3.178 3 6.451v13.092h4.499V22h2.456l2.454-2.456h3.681L21 14.636V3.178zm15.136 10.638L16.5 16.681H12l-2.453 2.453V16.68H5.863V4.814h13.501z"})))},{name:"twitter-alt",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M22.23 5.924a8.2 8.2 0 0 1-2.357.646 4.12 4.12 0 0 0 1.804-2.27 8.2 8.2 0 0 1-2.606.996 4.103 4.103 0 0 0-6.991 3.742 11.65 11.65 0 0 1-8.457-4.287 4.1 4.1 0 0 0-.556 2.063 4.1 4.1 0 0 0 1.825 3.415 4.1 4.1 0 0 1-1.859-.513v.052a4.104 4.104 0 0 0 3.292 4.023 4.1 4.1 0 0 1-1.853.07 4.11 4.11 0 0 0 3.833 2.85 8.24 8.24 0 0 1-5.096 1.756 8 8 0 0 1-.979-.057 11.6 11.6 0 0 0 6.29 1.843c7.547 0 11.675-6.252 11.675-11.675q0-.267-.012-.531a8.3 8.3 0 0 0 2.047-2.123"})))},{name:"twitter",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2m-2.534 6.71q.007.148.007.298c0 3.045-2.318 6.556-6.556 6.556a6.5 6.5 0 0 1-3.532-1.035q.27.032.55.032a4.63 4.63 0 0 0 2.862-.986 2.31 2.31 0 0 1-2.152-1.6 2.3 2.3 0 0 0 1.04-.04 2.306 2.306 0 0 1-1.848-2.259v-.029c.311.173.666.276 1.044.288a2.303 2.303 0 0 1-.713-3.076 6.54 6.54 0 0 0 4.749 2.407 2.305 2.305 0 0 1 3.926-2.101 4.6 4.6 0 0 0 1.463-.559 2.3 2.3 0 0 1-1.013 1.275c.466-.056.91-.18 1.323-.363-.31.461-.7.867-1.15 1.192"})))},{name:"untappd",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"m11 13.299-5.824 8.133c-.298.416-.8.635-1.308.572-.578-.072-1.374-.289-2.195-.879S.392 19.849.139 19.323a1.4 1.4 0 0 1 .122-1.425l5.824-8.133a3.1 3.1 0 0 1 1.062-.927l1.146-.604c.23-.121.436-.283.608-.478.556-.631 2.049-2.284 4.696-4.957l.046-.212a.13.13 0 0 1 .096-.1l.146-.037a.135.135 0 0 0 .101-.141l-.015-.18a.13.13 0 0 1 .125-.142c.176-.005.518.046 1.001.393s.64.656.692.824a.13.13 0 0 1-.095.164l-.175.044a.13.13 0 0 0-.101.141l.012.15a.13.13 0 0 1-.063.123l-.186.112c-1.679 3.369-2.764 5.316-3.183 6.046a2.2 2.2 0 0 0-.257.73l-.205 1.281A3.1 3.1 0 0 1 11 13.3zm12.739 4.598-5.824-8.133a3.1 3.1 0 0 0-1.062-.927l-1.146-.605a2.1 2.1 0 0 1-.608-.478 51 51 0 0 0-.587-.654.09.09 0 0 0-.142.018 97 97 0 0 1-1.745 3.223 1.4 1.4 0 0 0-.171.485 3.5 3.5 0 0 0 0 1.103l.01.064c.075.471.259.918.536 1.305l5.824 8.133c.296.413.79.635 1.294.574a4.76 4.76 0 0 0 2.209-.881 4.76 4.76 0 0 0 1.533-1.802 1.4 1.4 0 0 0-.122-1.425zM8.306 3.366l.175.044a.134.134 0 0 1 .101.141l-.012.15a.13.13 0 0 0 .063.123l.186.112q.465.933.869 1.721c.026.051.091.06.129.019q.655-.703 1.585-1.668a.137.137 0 0 0 .003-.19c-.315-.322-.645-.659-1.002-1.02l-.046-.212a.13.13 0 0 0-.096-.099l-.146-.037a.135.135 0 0 1-.101-.141l.015-.18a.13.13 0 0 0-.123-.142c-.175-.005-.518.045-1.002.393-.483.347-.64.656-.692.824a.13.13 0 0 0 .095.164z"})))},{name:"vimeo",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M22.396 7.164q-.139 3.039-4.245 8.32Q13.907 21 10.97 21q-1.82 0-3.079-3.359l-1.68-6.159q-.934-3.36-2.005-3.36-.234.001-1.634.98l-.978-1.261q1.541-1.353 3.037-2.708 2.056-1.774 3.084-1.869 2.429-.234 2.99 3.321.607 3.836.841 4.769.7 3.181 1.542 3.181.653 0 1.963-2.065 1.307-2.063 1.401-3.142.187-1.781-1.401-1.782-.747.001-1.541.341 1.534-5.024 5.862-4.884 3.21.095 3.024 4.161"})))},{name:"vk",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{fillRule:"evenodd",d:"M1.687 1.687C0 3.374 0 6.09 0 11.52v.96c0 5.431 0 8.146 1.687 9.833S6.09 24 11.52 24h.96c5.431 0 8.146 0 9.833-1.687S24 17.91 24 12.48v-.96c0-5.431 0-8.146-1.687-9.833S17.91 0 12.48 0h-.96C6.09 0 3.374 0 1.687 1.687M4.05 7.3c.13 6.24 3.25 9.99 8.72 9.99h.31v-3.57c2.01.2 3.53 1.67 4.14 3.57h2.84c-.78-2.84-2.83-4.41-4.11-5.01 1.28-.74 3.08-2.54 3.51-4.98h-2.58c-.56 1.98-2.22 3.78-3.8 3.95V7.3H10.5v6.92c-1.6-.4-3.62-2.34-3.71-6.92z"})))},{name:"whatsapp",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"m2.048 22 1.406-5.136a9.9 9.9 0 0 1-1.323-4.955C2.133 6.446 6.579 2 12.042 2a9.85 9.85 0 0 1 7.011 2.906 9.85 9.85 0 0 1 2.9 7.011c-.002 5.464-4.448 9.91-9.91 9.91h-.004a9.9 9.9 0 0 1-4.736-1.206zm5.497-3.172.301.179a8.2 8.2 0 0 0 4.193 1.148h.003c4.54 0 8.235-3.695 8.237-8.237a8.2 8.2 0 0 0-2.41-5.828 8.18 8.18 0 0 0-5.824-2.416c-4.544 0-8.239 3.695-8.241 8.237a8.2 8.2 0 0 0 1.259 4.384l.196.312-.832 3.04zm9.49-4.554c-.062-.103-.227-.165-.475-.289s-1.465-.723-1.692-.806-.392-.124-.557.124-.64.806-.784.971-.289.186-.536.062-1.046-.385-1.991-1.229c-.736-.657-1.233-1.468-1.378-1.715s-.015-.382.109-.505c.111-.111.248-.289.371-.434.124-.145.165-.248.248-.413s.041-.31-.021-.434-.557-1.343-.763-1.839c-.202-.483-.407-.417-.559-.425-.144-.007-.31-.009-.475-.009a.9.9 0 0 0-.66.31c-.226.248-.866.847-.866 2.066s.887 2.396 1.011 2.562 1.746 2.666 4.23 3.739c.591.255 1.052.408 1.412.522.593.189 1.133.162 1.56.098.476-.071 1.465-.599 1.671-1.177.206-.58.206-1.075.145-1.179"})))},{name:"woocommerce",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M19 2H5C3.3 2 2 3.3 2 5v11c0 1.7 1.3 3 3 3h4l6 3-1-3h5c1.7 0 3-1.3 3-3V5c0-1.7-1.3-3-3-3m-1.6 4.5c-.4.8-.8 2.1-1 3.9-.3 1.8-.4 3.1-.3 4.1 0 .3 0 .5-.1.7s-.3.4-.6.4-.6-.1-.9-.4c-1-1-1.8-2.6-2.4-4.6-.7 1.4-1.2 2.4-1.6 3.1-.6 1.2-1.2 1.8-1.6 1.9-.3 0-.5-.2-.8-.7-.5-1.4-1.1-4.2-1.7-8.2 0-.3 0-.5.2-.7.1-.2.4-.3.7-.4.5 0 .9.2.9.8.3 2.3.7 4.2 1.1 5.7l2.4-4.5c.2-.4.4-.6.8-.6q.75 0 .9.9c.3 1.4.6 2.6 1 3.7.3-2.7.8-4.7 1.4-5.9.2-.3.4-.5.7-.5.2 0 .5.1.7.2q.3.3.3.6c0 .3 0 .4-.1.5"})))},{name:"wordpress",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M12.158 12.786 9.46 20.625a9 9 0 0 0 5.526-.144 1 1 0 0 1-.065-.124zM3.009 12a8.99 8.99 0 0 0 5.067 8.092L3.788 8.341A8.95 8.95 0 0 0 3.009 12m15.06-.454c0-1.112-.399-1.881-.741-2.48-.456-.741-.883-1.368-.883-2.109 0-.826.627-1.596 1.51-1.596q.06.002.116.007A8.96 8.96 0 0 0 12 3.009a8.98 8.98 0 0 0-7.512 4.052c.211.007.41.011.579.011.94 0 2.396-.114 2.396-.114.484-.028.541.684.057.741 0 0-.487.057-1.029.085l3.274 9.739 1.968-5.901-1.401-3.838c-.484-.028-.943-.085-.943-.085-.485-.029-.428-.769.057-.741 0 0 1.484.114 2.368.114.94 0 2.397-.114 2.397-.114.485-.028.542.684.057.741 0 0-.488.057-1.029.085l3.249 9.665.897-2.996q.684-1.753.684-2.907m1.82-3.86q.06.428.06.924c0 .912-.171 1.938-.684 3.22l-2.746 7.94a8.98 8.98 0 0 0 4.47-7.771 8.9 8.9 0 0 0-1.1-4.313M12 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10"})))},{name:"x",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387z"})))},{name:"xanga",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M9 9h6v6H9zM3 9h6V3H3zm12 0h6V3h-6zm0 12h6v-6h-6zM3 21h6v-6H3z"})))},{name:"youtube",svg:React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement("g",null,React.createElement("path",{d:"M21.8 8.001s-.195-1.378-.795-1.985c-.76-.797-1.613-.801-2.004-.847-2.799-.202-6.997-.202-6.997-.202h-.009s-4.198 0-6.997.202c-.39.047-1.242.051-2.003.847-.6.607-.795 1.985-.795 1.985S2 9.62 2 11.238v1.517c0 1.618.2 3.237.2 3.237s.195 1.378.795 1.985c.761.797 1.76.771 2.205.855 1.6.153 6.8.201 6.8.201s4.203-.006 7.001-.209c.391-.047 1.243-.051 2.004-.847.6-.607.795-1.985.795-1.985s.2-1.618.2-3.237v-1.517c0-1.618-.2-3.237-.2-3.237M9.935 14.594l-.001-5.62 5.404 2.82z"})))}]},58992:(e,t,a)=>{"use strict";a(96072);var r=a(28120),o=a.n(r),n=a(51609);a(91135);n.PureComponent,o().string.isRequired,o().number,o().func,o().string},17885:(e,t,a)=>{"use strict";a.d(t,{A:()=>E});var r=a(96072),o=a.n(r),n=a(51112),l=a(27723),s=a(51113),i=a(53512),c=a(83883),u=a(64969),d=a(13022),v=a(51609),p=a(38837),m=a(41526),h=a(55394),f=a(74923),g=a(65350),w=a(64526),b=a(51870),y=a(33981),x=a(51413),_=a(19686);const __=l.__,k=e=>`action-button-label-${e}`,E=({slug:e,additionalActions:t,primaryActionOverride:a,fixSiteConnectionHandler:r,setIsActionLoading:l,className:E,tracksIdentifier:C,labelSuffixId:j})=>{const{data:{ownedProducts:A}}=(0,g.A)(),[S,P]=(0,v.useState)(!1),[R,M]=(0,v.useState)({}),{detail:V,isLoading:z}=(0,f.A)(e),{manageUrl:H,purchaseUrl:L,managePaidPlanPurchaseUrl:O,renewPaidPlanPurchaseUrl:N,status:I,requiresUserConnection:B}=V,{siteIsRegistering:T,isRegistered:F,isUserConnected:D}=(0,b.A)(),G=!H,U=(0,v.useRef)(null),q=(0,v.useRef)(null),{recordEvent:Z}=(0,w.A)(),W=(0,y.A)(p.NM.ConnectionSkipPricing),{activate:$,isPending:J}=(0,m.A)(e),{install:K,isPending:Q}=(0,h.A)(e),Y=J||z||Q||T&&I===p.hp.SITE_CONNECTION_ERROR,X=t?.length>0,ee=A?.includes(e),te=`${k(e)} ${j||""}`.trim(),ae=(0,v.useMemo)((()=>({variant:Y?void 0:"primary",disabled:Y,size:"small",weight:"regular",className:E})),[Y,E]),re=(0,v.useCallback)((()=>{F&&D||!B?(Z(`jetpack_myjetpack_${C}_activate_click`,{product:e}),$()):W()}),[$,F,D,B,W,Z,e,C]),oe=(0,v.useCallback)((()=>{Z(`jetpack_myjetpack_${C}_learnmore_click`,{product:e})}),[e,Z,C]),ne=(0,v.useCallback)((()=>{Z(`jetpack_myjetpack_${C}_fixconnection_click`,{product:e})}),[e,Z,C]),le=(0,v.useCallback)((()=>{Z(`jetpack_myjetpack_${C}_add_click`,{product:e})}),[e,Z,C]),se=(0,v.useCallback)((()=>{Z(`jetpack_myjetpack_${C}_manage_click`,{product:e})}),[e,Z,C]),ie=(0,v.useCallback)((()=>{Z(`jetpack_myjetpack_${C}_install_standalone_plugin_click`,{product:e}),K()}),[e,K,Z,C]),ce=(0,v.useMemo)((()=>{switch(I){case p.hp.ABSENT:{const t=__("Learn more","jetpack-my-jetpack");return{...ae,href:`#/add-${e}`,variant:"primary",label:t,onClick:oe,"aria-labelledby":te,...a?.[p.hp.ABSENT]??{}}}case p.hp.ABSENT_WITH_PLAN:{const e=__("Install Plugin","jetpack-my-jetpack");return{...ae,variant:"primary",label:e,onClick:ie,"aria-labelledby":te,...a?.[p.hp.ABSENT_WITH_PLAN]??{}}}case p.hp.NEEDS_FIRST_SITE_CONNECTION:return{...ae,href:L||`#/add-${e}`,variant:"primary",label:__("Learn more","jetpack-my-jetpack"),onClick:le,"aria-labelledby":te,...a?.[p.hp.NEEDS_FIRST_SITE_CONNECTION]??{}};case p.hp.NEEDS_PLAN:{const t=__("Get plan","jetpack-my-jetpack"),r=__("Learn more","jetpack-my-jetpack"),o=ee?t:r;return{...ae,href:L||`#/add-${e}`,variant:"primary",label:o,onClick:le,"aria-labelledby":te,...a?.[p.hp.NEEDS_PLAN]??{}}}case p.hp.CAN_UPGRADE:return{...ae,href:L||`#/add-${e}`,variant:"primary",label:__("Upgrade","jetpack-my-jetpack"),onClick:le,"aria-labelledby":te,...a?.[p.hp.CAN_UPGRADE]??{}};case p.hp.ACTIVE:{const e=__("View","jetpack-my-jetpack");return{...ae,disabled:G||ae?.disabled,href:H,variant:"secondary",label:e,onClick:se,"aria-labelledby":te,...a?.[p.hp.ACTIVE]??{}}}case p.hp.SITE_CONNECTION_ERROR:return{...ae,variant:"primary",label:__("Connect","jetpack-my-jetpack"),onClick:r,"aria-labelledby":te,...a?.[p.hp.SITE_CONNECTION_ERROR]??{}};case p.hp.USER_CONNECTION_ERROR:return{href:"#/connection?skip_pricing=true",variant:"primary",label:__("Connect","jetpack-my-jetpack"),onClick:ne,"aria-labelledby":te,...a?.[p.hp.USER_CONNECTION_ERROR]??{}};case p.hp.INACTIVE:case p.hp.MODULE_DISABLED:case p.hp.NEEDS_ACTIVATION:return{...ae,variant:"secondary",label:__("Activate","jetpack-my-jetpack"),onClick:re,"aria-labelledby":te,...a?.[p.hp.INACTIVE]??{}};case p.hp.EXPIRING_SOON:return{...ae,href:N,variant:"primary",label:__("Renew my plan","jetpack-my-jetpack"),"aria-labelledby":te,...a?.[p.hp.EXPIRING_SOON]??{}};case p.hp.EXPIRED:return{...ae,href:O,variant:"primary",label:__("Resume my plan","jetpack-my-jetpack"),"aria-labelledby":te,...a?.[p.hp.EXPIRED]??{}};case p.hp.NEEDS_ATTENTION__ERROR:{const t={...ae,href:H,variant:"primary",label:__("Troubleshoot","jetpack-my-jetpack"),"aria-labelledby":te,...a?.[p.hp.NEEDS_ATTENTION__ERROR]??{}};switch(e){case"backup":return{...t,href:"https://jetpack.com/support/backup/troubleshooting-jetpack-backup/"};case"protect":return{...t,label:__("Fix threats","jetpack-my-jetpack")};default:return t}}case p.hp.NEEDS_ATTENTION__WARNING:{const t={...ae,href:H,variant:"primary",label:__("Troubleshoot","jetpack-my-jetpack"),"aria-labelledby":te,...a?.[p.hp.NEEDS_ATTENTION__WARNING]??{}};return"protect"===e?{...t,label:__("Fix threats","jetpack-my-jetpack")}:{...t}}default:return{...ae,href:L||`#/add-${e}`,label:__("Learn more","jetpack-my-jetpack"),onClick:le,"aria-labelledby":te}}}),[I,ae,e,L,G,H,a,ee,O,N,le,r,ne,re,ie,oe,se,te]),ue=(0,v.useMemo)((()=>X?[...t,ce]:[ce]),[t,ce,X]),de=(0,v.useCallback)((()=>{Z(`jetpack_myjetpack_${C}_dropdown_toggle`,{product:e,state:S?"closed":"open"})}),[S,Z,e,C]),ve=(0,v.useCallback)((()=>{P(!S),de()}),[S,de]);(0,v.useEffect)((()=>{M(ue[0])}),[ue]),(0,v.useEffect)((()=>{l&&l(Y)}),[Y,l]),(0,x.A)(U,(e=>{q.current.contains(e.target)||(P(!1),de())}));const pe=X&&React.createElement("div",{ref:U,className:_.A["action-button-dropdown"]},React.createElement("ul",{className:_.A["dropdown-menu"]},[...t,ce].map((({label:t,isExternalLink:a},r)=>React.createElement("li",{key:r},React.createElement("button",{onClick:()=>{M(ue[r]),P(!1),Z(`jetpack_myjetpack_${C}_dropdown_action_click`,{product:e,action:t})},className:_.A["dropdown-item"]},React.createElement("div",{className:_.A["dropdown-item-label"]},t,a&&React.createElement(s.A,{icon:i.A,size:16})),t===R.label&&React.createElement("div",{className:_.A["active-action-checkmark"]},React.createElement(s.A,{icon:c.A,size:24,fill:"white"}))))))));return React.createElement(React.Fragment,null,React.createElement("div",{className:(0,d.A)(_.A["action-button"],X?_.A["has-additional-actions"]:null)},React.createElement(n.A,o()({},ae,R,{id:k(e)}),R.label),X&&React.createElement("button",{className:(0,d.A)(_.A["dropdown-chevron"],"primary"===R.variant?_.A.primary:_.A.secondary),onClick:ve,ref:q},React.createElement(s.A,{icon:u.A,size:24,fill:"primary"===R.variant?"white":"black"})),S&&pe))}},96214:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(51112),o=a(27723);const __=o.__,n=e=>{const{shouldShowButton:t=()=>!0,...a}={size:"small",variant:"secondary",weight:"regular",label:__("Learn more","jetpack-my-jetpack"),...e};return!!t()&&React.createElement(r.A,a,a.label)}},48848:(e,t,a)=>{"use strict";a.d(t,{A:()=>f});var r=a(42947),o=a(75918),n=a(28509),l=a(41040),s=a(85985),i=a(51609),c=a.n(i),u=a(31504),d=a(40357),v=a(68242),p=a(64526),m=a(51870),h=a(11617);function f(){const{recordEvent:e}=(0,p.A)(),{data:t=[],isLoading:a}=(0,d.A)({name:u.Md,queryFn:async e=>(await e.getUserLicenses())?.items}),{userConnectionData:f}=(0,m.A)(),[g,w]=(0,i.useState)(!1),b=f?.currentUser?.wpcomUser?.display_name||f?.currentUser?.wpcomUser?.login||f?.currentUser?.username,y=(0,i.useCallback)((()=>{e("jetpack_myjetpack_license_activation_back_link_click")}),[e]),x=(0,i.useCallback)((()=>{w(!0)}),[]),_=(0,i.useMemo)((()=>t.filter((({attached_at:e,revoked_at:t})=>null===e&&null===t))),[t]),{siteSuffix:k="",adminUrl:E=""}=(0,v.A$)();return c().createElement(r.A,{showHeader:!1,showBackground:!1,useInternalLinks:(0,s.pg)()},c().createElement(o.A,{horizontalSpacing:3,horizontalGap:3},c().createElement(n.A,null,c().createElement(h.A,{onClick:y,reload:g})),c().createElement(n.A,null,c().createElement(l.b,{currentRecommendationsStep:null,availableLicenses:_,fetchingAvailableLicenses:a,onActivationSuccess:x,siteAdminUrl:E,siteRawUrl:k,displayName:b}))))}},62450:(e,t,a)=>{"use strict";a.d(t,{A:()=>u,O:()=>i});var r=a(47425),o=a(13022),n=a(28120),l=a.n(n),s=a(8757);const i=e=>{const{children:t,className:a,onMouseEnter:r,onMouseLeave:n}=e,l=(0,o.A)(s.A.container,a);return React.createElement("div",{onMouseEnter:r,onMouseLeave:n,onFocus:r,onBlur:n,className:l},t)},c=e=>{const{title:t,headerRightContent:a,className:o,children:n,onMouseEnter:l,onMouseLeave:c,titleId:u}=e;return React.createElement(i,{className:o,onMouseEnter:l,onMouseLeave:c},React.createElement("div",{className:s.A.title},React.createElement("div",{className:s.A.name},React.createElement(r.Ay,{variant:"title-medium",id:u||null},t)),a),n)};c.propTypes={children:l().node,title:l().string.isRequired,className:l().string,headerRightContent:l().node,onMouseEnter:l().func,onMouseLeave:l().func,titleId:l().string};const u=c},72191:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var r=a(51113),o=a(10991),n=a(13022),l=a(51609),s=a.n(l),i=a(70028),c=a(91469);const u=({className:e,accessibleName:t})=>s().createElement(i.N_,{to:"/",className:(0,n.A)(c.A.link,e),"aria-label":t||null},s().createElement(r.A,{icon:o.A,className:c.A.icon}))},6176:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var r=a(47425),o=a(51609),n=a(74923),l=a(51870),s=a(72434),i=a(5410);const c=({admin:e,recommendation:t,slug:a,children:c,isDataLoading:u,Description:d=null,additionalActions:v=null,secondaryAction:p=null,upgradeInInterstitial:m=!1,primaryActionOverride:h,onMouseEnter:f,onMouseLeave:g,customLoadTracks:w})=>{const{isRegistered:b}=(0,l.A)(),{detail:y,refetch:x}=(0,n.A)(a),{name:_,description:k,status:E,manageUrl:C}=y;return(0,o.useEffect)((()=>{b&&x()}),[b,E,x]),React.createElement(i.Ay,{name:_,Description:d||(()=>{const e=(0,s.A)(k);return React.createElement(r.Ay,{variant:"body-small",style:{flexGrow:1,marginBottom:"1rem"}},e)}),status:E,admin:e,recommendation:t,isDataLoading:u,additionalActions:v,primaryActionOverride:h,secondaryAction:p,slug:a,upgradeInInterstitial:m,onMouseEnter:f,onMouseLeave:g,customLoadTracks:w,manageUrl:C},c)}},15403:(e,t,a)=>{"use strict";a.d(t,{A:()=>p});var r=a(96072),o=a.n(r),n=a(3924),l=a(39384),s=a(56427),i=a(27723),c=a(51113),u=a(53512),d=a(18395),v=a(96007);const __=i.__,p=e=>{const{title:t}=e;return React.createElement(l.ConnectScreen,o()({buttonLabel:__("Connect your user account","jetpack-my-jetpack"),loadingLabel:__("Connecting your account…","jetpack-my-jetpack"),images:[d],from:"my-jetpack"},e,{title:t||__("Unlock all the amazing features of Jetpack by connecting now","jetpack-my-jetpack")}),React.createElement("ul",{role:"list"},React.createElement("li",null,__("Receive instant downtime alerts","jetpack-my-jetpack")),React.createElement("li",null,__("Automatically share your content on social media","jetpack-my-jetpack")),React.createElement("li",null,__("Let your subscribers know when you post","jetpack-my-jetpack")),React.createElement("li",null,__("Receive notifications about new likes and comments","jetpack-my-jetpack")),React.createElement("li",null,__("Let visitors share your content on social media","jetpack-my-jetpack")),React.createElement("li",null,__("Create better content with powerful AI tools","jetpack-my-jetpack")),React.createElement("li",null,__("And more!","jetpack-my-jetpack")," ",React.createElement("a",{href:(0,n.A)("jetpack-features"),target:"_blank",className:v.A["all-features"],rel:"noreferrer"},__("See all Jetpack features","jetpack-my-jetpack"),React.createElement(c.A,{icon:u.A}),React.createElement(s.VisuallyHidden,{as:"span"},/* translators: accessibility text */ -__("(opens in a new tab)","jetpack-my-jetpack"))))))}},85242:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var r=a(27723),o=a(42822),n=a(35975),l=a(35519),s=a(96007),i=a(6579);const __=r.__,c=()=>React.createElement(React.Fragment,null,React.createElement("div",{className:s.A["account-description"]},__("On the next screen, you can connect with an existing account from any of these services or create a new one.","jetpack-my-jetpack")),React.createElement("ul",{className:s.A["account-images"],role:"list"},React.createElement("li",null,React.createElement("img",{src:i,className:s.A.wordpress,alt:"WordPress.com"})),React.createElement("li",null,React.createElement("img",{src:l,className:s.A.google,alt:"Google"})),React.createElement("li",null,React.createElement("img",{src:o,className:s.A.apple,alt:"Apple"})),React.createElement("li",null,React.createElement("img",{src:n,className:s.A.github,alt:"GitHub"}))))},91499:(e,t,a)=>{"use strict";a.d(t,{A:()=>h});var r=a(42947),o=a(75918),n=a(28509),l=a(85985),s=a(27723),i=a(70028),c=a(51870),u=a(25994),d=a(72191),v=a(15403),p=a(85242),m=a(96007);const __=s.__,h=()=>{const[e]=(0,i.ok)(),t="true"===e.get("skip_pricing"),a=(0,u.A)(),{apiRoot:s,apiNonce:h,registrationNonce:f}=(0,c.A)();return React.createElement(r.A,{showHeader:!1,showBackground:!1,useInternalLinks:(0,l.pg)()},React.createElement(o.A,{horizontalSpacing:8,horizontalGap:0},React.createElement(n.A,{className:m.A["relative-col"]},React.createElement(d.A,{className:m.A["close-link"],accessibleName:__("Go back to previous screen","jetpack-my-jetpack")})),React.createElement(n.A,null,React.createElement(v.A,{from:"my-jetpack",redirectUri:a,apiRoot:s,apiNonce:h,registrationNonce:f,skipPricingPage:t,footer:React.createElement(p.A,null)}))))}},84596:(e,t,a)=>{"use strict";a.d(t,{A:()=>S});var r=a(47425),o=a(51112),n=a(3924),l=a(39384),s=a(47143),i=a(27723),c=a(83883),u=a(19783),d=a(7827),v=a(51113),p=a(13022),m=a(51609),h=a(488),f=a(68242),g=a(18117),w=a(64526),b=a(36312),y=a(51870),x=a(95042),_=a(33168),k=a(17757),E=a(87319),C=a(15200);const __=i.__,j=({text:e,actionText:t,onClick:a,status:o="success"})=>{let n=c.A,l="";return"info"===o&&(n=null,l=""),"success"===o&&(n=c.A,l=C.A.success),"error"===o&&(n=u.A,l=C.A.error),"warning"===o&&(n=u.A,l=C.A.warning),"unlock"===o&&(n=d.A,l=""),React.createElement("div",{className:C.A["list-item"]},React.createElement(r.Ay,{className:(0,p.A)(C.A["list-item-text"],l)},n&&React.createElement(v.A,{icon:n}),React.createElement("span",null,e)),t&&"success"!==o&&React.createElement(A,{actionText:t,onClick:a}))},A=({actionText:e,onClick:t})=>React.createElement(o.A,{variant:"link",weight:"regular",onClick:t},e),S=({apiRoot:e,apiNonce:t,redirectUri:a=null,title:c=__("Connection","jetpack-my-jetpack"),connectionInfoText:u=__("Jetpack connects your site and user account to the WordPress.com cloud to provide more powerful features.","jetpack-my-jetpack"),onDisconnected:d,connectedPlugins:v,connectedSiteId:S,context:P,onConnectUser:R=null})=>{const{isRegistered:M,isUserConnected:V,userConnectionData:z,hasConnectedOwner:H}=(0,y.A)({redirectUri:a}),{siteIsRegistering:L}=(0,y.A)({skipUserConnection:!0,redirectUri:a}),{lifecycleStats:O}=(0,f.A$)(),{recordEvent:N}=(0,w.A)(),[I,B]=(0,m.useState)(!1),{setConnectionStatus:T,setUserIsConnecting:F}=(0,s.useDispatch)(l.CONNECTION_STORE_ID),D=R||F,G=z.currentUser?.wpcomUser?.avatar,U=z.currentUser?.permissions?.manage_options,{brokenModules:q}=O||{},{data:Z,isLoading:W,isError:$}=(0,h.V)(),J=(0,m.useMemo)((()=>!W&&!$&&(0,g.A)(Z).length>0),[W,$,Z]),K=q?.needs_user_connection.length>0,Q=q?.needs_site_connection.length>0,Y=(0,m.useMemo)((()=>({user_connection_broken_modules:q?.needs_user_connection.join(", "),site_connection_broken_modules:q?.needs_site_connection.join(", ")})),[q]),X=(0,m.useCallback)((e=>t=>{t&&t.preventDefault(),N("jetpack_myjetpack_connection_manage_dialog_click",{...Y,connection_type:e}),B(!0)}),[N,B,Y]),ee=X("user"),te=X("site"),ae=(0,m.useCallback)((e=>{e&&e.preventDefault(),B(!1)}),[B]),re=(0,m.useCallback)((e=>{e&&e.preventDefault(),T({isActive:!1,isRegistered:!1,isUserConnected:!1}),d?.()}),[d,T]),oe=(0,m.useCallback)((e=>{e&&e.preventDefault(),T({isUserConnected:!1}),d?.()}),[d,T]),ne=(0,m.useCallback)((()=>{N("jetpack_myjetpack_connection_learnmore_link_click",Y)}),[N,Y]),le=(0,m.useCallback)((e=>{e&&e.preventDefault(),N("jetpack_myjetpack_connection_connect_user_click",Y),D()}),[D,N,Y]),{connectSite:se}=(0,b.A)({tracksInfo:{event:"jetpack_myjetpack_connection_connect_site",properties:Y}}),ie=(({isRegistered:e,hasSiteConnectionBrokenModules:t,handleConnectSite:a,siteIsRegistering:r,openManageSiteConnectionDialog:o})=>r?{text:__("Connecting your site…","jetpack-my-jetpack"),status:"info"}:e?{onClick:o,text:__("Site connected.","jetpack-my-jetpack"),actionText:__("Manage","jetpack-my-jetpack"),status:"success"}:t?{onClick:a,text:__("Missing site connection to enable some features.","jetpack-my-jetpack"),actionText:__("Connect","jetpack-my-jetpack"),status:"error"}:{onClick:a,text:__("Start with Jetpack.","jetpack-my-jetpack"),actionText:__("Connect your site with one click","jetpack-my-jetpack"),status:"warning"})({isRegistered:M,hasSiteConnectionBrokenModules:Q,handleConnectSite:se,siteIsRegistering:L,openManageSiteConnectionDialog:te}),ce=(({hasProductsThatRequireUserConnection:e,hasUserConnectionBrokenModules:t,isUserConnected:a,hasConnectedOwner:r,userConnectionData:o,openManageUserConnectionDialog:n,handleConnectUser:l})=>{if(!o.currentUser?.permissions?.manage_options&&!a&&!r)return{text:__("A site admin will need to connect before you are able to sign in","jetpack-my-jetpack"),status:"warning"};if(!e&&!t&&!a)return{onClick:l,text:__("Unlock more of Jetpack","jetpack-my-jetpack"),actionText:__("Sign in","jetpack-my-jetpack"),status:"unlock"};if(e&&!a&&!t){let e=__("Some features require authentication.","jetpack-my-jetpack");return o.currentUser?.permissions?.manage_options||(e=__("Unlock more of Jetpack","jetpack-my-jetpack")),{onClick:l,text:e,actionText:__("Sign in","jetpack-my-jetpack"),status:"warning"}}if(t)return{onClick:l,text:__("Missing authentication to enable all features.","jetpack-my-jetpack"),actionText:__("Sign in","jetpack-my-jetpack"),status:"error"};let s=null;return s=o.currentUser?.isMaster?o.currentUser?.wpcomUser?.display_name?(0,i.sprintf)(/* translators: %1$s is user name, %2$s is the user email */ -__("Connected as %1$s (Owner) (%2$s).","jetpack-my-jetpack"),o.currentUser?.wpcomUser?.display_name,o.currentUser?.wpcomUser?.email):__("User connected (Owner).","jetpack-my-jetpack"):o.currentUser?.wpcomUser?.display_name?(0,i.sprintf)(/* translators: %1$s is user name, %2$s is the user email */ -__("Connected as %1$s (%2$s).","jetpack-my-jetpack"),o.currentUser?.wpcomUser?.display_name,o.currentUser?.wpcomUser?.email):__("User connected.","jetpack-my-jetpack"),{onClick:n,actionText:__("Manage","jetpack-my-jetpack"),text:s,status:"success"}})({hasProductsThatRequireUserConnection:J,hasUserConnectionBrokenModules:K,isUserConnected:V,hasConnectedOwner:H,userConnectionData:z,openManageUserConnectionDialog:ee,handleConnectUser:le});return React.createElement("div",{className:C.A["connection-status-card"]},React.createElement(r.H3,null,c),React.createElement(r.Ay,{variant:"body",mb:3},`${u} `,React.createElement(o.A,{href:(0,n.A)("why-the-wordpress-com-connection-is-important-for-jetpack"),variant:"link",weight:"regular",isExternalLink:!0,onClick:ne},__("Learn more about connections","jetpack-my-jetpack"))),React.createElement("div",{className:C.A.status},React.createElement("img",{src:x,alt:"",className:C.A.cloud}),React.createElement("div",{className:(0,p.A)(C.A.line,M?"":Q?C.A.error:C.A.warning)}),React.createElement("div",{className:C.A["avatar-wrapper"]},React.createElement("img",{src:M?E:k,alt:"",className:C.A.jetpack}),(J||K)&&React.createElement("img",{src:V&&G?G:_,alt:"",className:C.A.avatar})),(M&&U||V)&&React.createElement("div",{className:C.A["connect-action"]},React.createElement(A,{onClick:te,actionText:__("Manage","jetpack-my-jetpack")}))),React.createElement("div",null,React.createElement(j,ie),z?.connectionOwner&&!z.currentUser?.isMaster&&React.createElement(j,{text:(0,i.sprintf)(/* translators: placeholder is the username of the Jetpack connection owner */ -__("Also connected: %s (Owner).","jetpack-my-jetpack"),z.connectionOwner)}),M&&React.createElement(j,ce)),React.createElement(l.ManageConnectionDialog,{apiRoot:e,apiNonce:t,onDisconnected:re,onUnlinked:oe,connectedPlugins:v,connectedSiteId:S,connectedUser:z,isOpen:I,onClose:ae,context:P}))}},43593:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var r=a(51609),o=a(38837),n=a(488),l=a(18117),s=a(51870),i=a(33981),c=a(84596);function u(){const{apiRoot:e,apiNonce:t,topJetpackMenuItemUrl:a,connectedPlugins:u}=(0,s.A)(),d=(0,i.A)(o.NM.ConnectionSkipPricing),{data:v,isLoading:p,isError:m}=(0,n.V)(),h=(0,r.useMemo)((()=>p||m?[]:(0,l.A)(v)),[v,p,m]);return React.createElement(c.A,{apiRoot:e,apiNonce:t,redirectUri:a,onConnectUser:d,connectedPlugins:u,requiresUserConnection:h.length>0,onDisconnected:()=>document?.location?.reload(!0)})}},35167:(e,t,a)=>{"use strict";a.d(t,{A:()=>w});var r=a(75918),o=a(28509),n=a(47425),l=a(56427),s=a(27723),i=a(42778),c=a(68888),u=a(29115),d=a(13022),v=a(51609),p=a(83804),m=a(64526),h=a(81434),f=a(89674),g=a(66746);const __=s.__,_n=s._n,w=()=>{const e=(0,v.useRef)(null),{recordEvent:t}=(0,m.A)(),{recommendedModules:a,redoEvaluation:s,removeEvaluationResult:w,isProductOwnershipLoading:b}=(0,p.A)(),[y,x]=(0,v.useState)(!0),[_,k]=(0,v.useState)(!1),E=(0,v.useCallback)((()=>{if(e.current){const{scrollLeft:t,scrollWidth:a,clientWidth:r}=e.current;x(0===t),k(t+r>=a)}}),[e]),C=(e,t,a=24)=>{if(e.current){const r=e.current.querySelector("li").clientWidth;e.current.scrollBy({left:t*(r+a),behavior:"smooth"})}},j=(0,v.useCallback)((()=>{C(e,1),t("jetpack_myjetpack_recommendations_slide_arrow_click",{direction:"next"})}),[t,e]),A=(0,v.useCallback)((()=>{C(e,-1),t("jetpack_myjetpack_recommendations_slide_arrow_click",{direction:"previous"})}),[t,e]),S=_n("Our recommendation for you","Our recommendations for you",a.length,"jetpack-my-jetpack"),P=__("Redo","jetpack-my-jetpack"),R=__("Dismiss","jetpack-my-jetpack");return(0,v.useEffect)((()=>{const t=e.current;if(t)return t.addEventListener("scroll",E),E(),()=>{t.removeEventListener("scroll",E)}}),[E]),(0,v.useEffect)((()=>{t("jetpack_myjetpack_evaluation_recommendations_view",{modules:a})}),[a,t]),React.createElement(r.A,{horizontalGap:2,horizontalSpacing:6},React.createElement(o.A,null,React.createElement(l.Flex,null,React.createElement(l.FlexItem,null,React.createElement(n.Ay,{variant:"headline-small",className:g.A.title},S),React.createElement(n.Ay,null,__("Here are the tools that we think will help you reach your website goals:","jetpack-my-jetpack"))),React.createElement(l.FlexItem,null,React.createElement(l.DropdownMenu,{menuProps:{className:g.A["dropdown-menu"]},popoverProps:{position:"bottom left"},icon:i.A,label:__("Recommendations menu","jetpack-my-jetpack"),controls:[{title:P,onClick:s},{title:R,onClick:w}]})))),React.createElement(o.A,null,React.createElement(r.A,{ref:e,tagName:"ul",className:g.A["recommendations-list"],horizontalGap:4,horizontalSpacing:2,fluid:!0},a.map((e=>{const t=e.replace("feature_",""),a=f.z[t];return b?React.createElement(o.A,{tagName:"li",key:e,lg:4},React.createElement(h.A,{width:"100%",height:"200px"})):a&&React.createElement(o.A,{tagName:"li",key:e,lg:4},React.createElement(a,{recommendation:!0}))}))),React.createElement(l.Flex,{align:"center",justify:"center"},React.createElement(l.FlexItem,null,React.createElement(l.Button,{className:(0,d.A)(g.A["slider-button"],g.A["prev-button"]),onClick:A,disabled:y,"aria-disabled":y,"aria-label":__("Previous","jetpack-my-jetpack")},React.createElement(l.Icon,{icon:c.A}))),React.createElement(l.FlexItem,null,React.createElement(l.Button,{className:(0,d.A)(g.A["slider-button"],g.A["next-button"]),onClick:j,disabled:_,"aria-disabled":_,"aria-label":__("Next","jetpack-my-jetpack")},React.createElement(l.Icon,{icon:u.A}))))))}},11617:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var r=a(27723),o=a(51113),n=a(7474),l=a(51609),s=a.n(l),i=a(70028),c=a(21751);const __=r.__;const u=function({onClick:e=()=>{},reload:t}){const a=t?"/?reload=true":"/";return s().createElement(i.N_,{to:a,className:c.A.link,onClick:e},s().createElement(o.A,{icon:n.A,className:c.A.icon}),__("Go back","jetpack-my-jetpack"))}},1651:(e,t,a)=>{"use strict";a.d(t,{k:()=>d});var r=a(51112),o=a(78478),n=a(56427),l=a(38443),s=a(27723),i=a(13022),c=a(51609),u=a(32976);a(71587);const __=s.__;function d({productName:e,giftedDate:t}){const[a,d]=(0,c.useState)(!1),v=(0,c.useCallback)((()=>d(!0)),[d]),p={position:"top center",placement:"top",animate:!0,noArrow:!1,resize:!1,flip:!1,offset:6,focusOnMount:"container",onClose:(0,c.useCallback)((()=>d(!1)),[d]),className:u.A.container},m=(0,i.A)(u.A.wrapper,"golden-token-icon-tooltip");return React.createElement("div",{className:m},React.createElement(r.A,{variant:"link",onClick:v},React.createElement(o.sT,{className:u.A.logo})),React.createElement("div",{className:u.A.helper},a&&React.createElement(n.Popover,p,React.createElement("div",null,React.createElement("div",{className:u.A.title},e),React.createElement("div",{className:u.A.content},(0,s.sprintf)( -// translators: %1$s is a product name, %2$s is the date the product was gifted. -__("%1$s was gifted on %2$s. It gives you access to a lifetime subscription of Jetpack VaultPress Backup and Jetpack Scan.","jetpack-my-jetpack"),e,(0,l.dateI18n)("F j, Y",t)))))))}},56894:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});var r=a(56427),o=a(51609),n=a.n(o),l=a(90530);const s=function(){const[e,t]=(0,o.useState)(!0),a=(0,o.useCallback)((()=>t(!1)),[]);if(!e)return null;if(!Object.hasOwn(window,"JP_IDENTITY_CRISIS__INITIAL_STATE"))return null;const{containerID:s,isSafeModeConfirmed:i}=window.JP_IDENTITY_CRISIS__INITIAL_STATE;return!s||i?null:n().createElement(r.Modal,{onRequestClose:a,overlayClassName:l.A.modal},n().createElement("div",{id:s,className:l.A.container}))}},12660:(e,t,a)=>{"use strict";a.d(t,{I:()=>u});var r=a(96072),o=a.n(r),n=a(11883),l=a(56427),s=a(29491),i=a(51609),c=a(64526);a(42997);const u=({children:e,className:t,icon:a="info-outline",iconSize:r=14,tracksEventName:u,tracksEventProps:d={},...v})=>{const{recordEvent:p}=(0,c.A)(),m=(0,i.useRef)(),h=(0,s.useViewportMatch)("medium","<"),[f,g]=(0,i.useState)(!1),w=(0,i.useCallback)((()=>g((e=>(!0==!e&&u&&p(`jetpack_${u}`,{page:"my-jetpack",...d}),!e)))),[p,u,d]),b=(0,i.useCallback)((()=>{m.current&&!m.current.contains(m.current.ownerDocument.activeElement)&&g(!1)}),[g,m]);return React.createElement("span",{className:t},React.createElement("button",{className:"info-tooltip__button",onClick:w,ref:m},React.createElement(n.A,{icon:a,size:r})),f&&React.createElement(l.Popover,o()({placement:h?"top-end":"right",noArrow:!1,offset:10,focusOnMount:"container",onClose:b},v),React.createElement("div",{className:"info-tooltip__content"},e)))}},23449:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var r=a(67506),o=a(3924),n=a(27723),l=a(51609),s=a.n(l),i=a(64526),c=a(64576);const __=n.__,u=e=>{const{isAgencyAccount:t=!1}=e,{recordEvent:a}=(0,i.A)();(0,l.useEffect)((()=>{a("jetpack_myjetpack_manage_banner_view",{})}),[a]);const n=(0,l.useCallback)((e=>{a("jetpack_myjetpack_manage_banner_click",{target:e,feature:"manage"})}),[a]),u=(0,l.useCallback)((()=>{n("jp-agencies-register-interest")}),[n]);return t?null:s().createElement(r.A,{icon:c,title:__("Manage client sites and grow your business","jetpack-my-jetpack"),description:__("Are you an agency or freelancer? We’re working on a new partnership program bringing together the best of Jetpack, Woo, WordPress.com, and Pressable. Get bulk discounts, referral commissions, and more.","jetpack-my-jetpack"),primaryCtaLabel:__("Sign up now","jetpack-my-jetpack"),primaryCtaURL:(0,o.A)("jetpack-for-agencies-register-interest"),primaryCtaIsExternalLink:!0,primaryCtaOnClick:u})}},81434:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(13022),o=a(99633);const n=({height:e,width:t,spaceBelow:a=!1})=>React.createElement("div",{className:(0,r.A)(o.A.skeleton,a&&o.A.spaceBelow),style:{height:e,width:t}})},52912:(e,t,a)=>{"use strict";a.d(t,{A:()=>G});var r=a(96072),o=a.n(r),n=a(60442),l=a(18089),s=a(47656),i=a(42947),c=a(59244),u=a(75918),d=a(28509),v=a(95640),p=a(18587),m=a(85985),h=a(27723),f=a(13022),g=a(51609),w=a(76007),b=a(41521),y=a(31504),x=a(83804),_=a(58402),k=a(62902),E=a(280),C=a(68242),j=a(16700),A=a(13244),S=a(89812),P=a(64526),R=a(31368),M=a(51870),V=a(7436),z=a(43593),H=a(35167),L=a(56894),O=a(23449),N=a(81434),I=a(78932),B=a(25487),T=a(36007),F=a(67328);const __=h.__,_x=h._x,D=({message:e,title:t,options:a})=>{const{recordEvent:r}=(0,P.A)();(0,g.useEffect)((()=>{const e=a?.tracksArgs||{};r("jetpack_myjetpack_global_notice_view",{notice_id:a.id,...e})}),[a.id,r,a?.tracksArgs]);const[i]=(0,n.A)(["md"],[">"]),c=a.actions?.map((e=>React.createElement(l.A,o()({key:e.key||e.label,customClass:F.A.cta},e))));return React.createElement("div",{className:(0,f.A)(F.A.notice,{[F.A["bigger-than-medium"]]:i})},React.createElement(s.A,o()({hideCloseButton:!0},a,{title:t,actions:c}),React.createElement("div",{className:F.A.message},e)))};function G(){const[e,t]=(0,g.useState)({isLoading:!1,variation:"control"});(0,V.A)();const{isAtomic:a=!1,adminUrl:r,sandboxedDomain:o,isDevVersion:n,userIsAdmin:l}=(0,C.A$)(),{isWelcomeBannerVisible:s}=(0,S.A)(),{isSectionVisible:h}=(0,x.A)(),{siteIsRegistered:f,apiRoot:G,apiNonce:U}=(0,M.A)(),{currentNotice:q}=(0,g.useContext)(w.g),{message:Z,title:W,options:$}=q||{},{data:J,isLoading:K}=(0,E.A)({name:y._,query:{path:y.rR}}),{data:Q,isLoading:Y}=(0,E.A)({name:y.nw,query:{path:y.O2}}),{data:X,isLoading:ee,isError:te}=(0,E.A)({name:y.uh,query:{path:y.jr}}),{data:ae,isLoading:re,isError:oe}=(0,k.A)(),ne=(0,_.A)();(0,g.useEffect)((()=>{ne()}),[ne]);const le=J?.is_available,se=Q?.user?.jwt,ie=!Y&&!K&&le&&se,ce=(0,R.A)(),{recordEvent:ue}=(0,P.A)(),[de,ve]=(0,g.useState)(!1);if((0,g.useLayoutEffect)((()=>{let e={};!oe&&Object.keys(ae)?.length&&(e={red_bubble_alerts:Object.keys(ae).join(",")}),re||ue("jetpack_myjetpack_page_view",{...e})}),[ue,ae,oe,re]),window.location.hash.includes("?reload=true")&&(window.history.replaceState(null,"",window.location.href.replace("?reload=true","")),window.location.reload(),ve(!0)),de)return null;const pe={label:_x("Reset Options (dev only)","Button for option to reset Jetpack Options","jetpack-my-jetpack"),title:__("Reset Options","jetpack-my-jetpack"),role:"button",onClick:()=>(0,A.A)(),onKeyDown:e=>(0,j.A)(e,(()=>(0,A.A)()))};return React.createElement(i.A,{siteAdminUrl:r,sandboxedDomain:o,apiRoot:G,apiNonce:U,optionalMenuItems:n&&l?[pe]:[],useInternalLinks:(0,m.pg)()},React.createElement("h1",{className:"screen-reader-text"},__("My Jetpack","jetpack-my-jetpack")),React.createElement("hr",{className:F.A.separator}),React.createElement(L.A,null),React.createElement(c.D,null),!ce&&React.createElement(u.A,{horizontalSpacing:0},React.createElement(d.A,null,React.createElement("div",{id:"jp-admin-notices",className:"my-jetpack-jitm-card"}))),s&&l?React.createElement(T.A,{welcomeFlowExperiment:e,setWelcomeFlowExperiment:t},Z&&(f||$?.id===b.l.options.id)&&React.createElement(D,{message:Z,title:W,options:$})):Z&&React.createElement(u.A,{horizontalSpacing:3,horizontalGap:3},React.createElement(d.A,null,React.createElement(D,{message:Z,title:W,options:$}))),!s&&h&&l&&React.createElement(H.A,null),React.createElement(B.A,null),l&&React.createElement(u.A,{horizontalSpacing:6,horizontalGap:Z?3:6},React.createElement(d.A,null,ee?React.createElement(N.A,{height:"200px",width:"100%"}):!te&&X.isEnabled&&React.createElement(O.A,{isAgencyAccount:X.isAgencyAccount}))),React.createElement(v.A,null,React.createElement(u.A,{horizontalSpacing:8},React.createElement(d.A,{sm:4,md:4,lg:6},React.createElement(I.A,null)),React.createElement(d.A,{sm:4,md:4,lg:6},!a&&React.createElement(z.A,null)))),ie&&React.createElement(p.A,{jwt_token:se}))}},63291:(e,t,a)=>{"use strict";a.d(t,{A:()=>d});var r=a(47425),o=a(85879),n=a(27723),l=a(72434),s=a(89675),i=a(3775),c=a(42162);const __=n.__,u=()=>React.createElement("div",{className:s.A.separator},React.createElement("div",{className:s.A.line}),React.createElement("span",null,__("or","jetpack-my-jetpack")),React.createElement("div",{className:s.A.line})),d=()=>{const e=__("Start with Jetpack for free","jetpack-my-jetpack"),t=__("Log in with your WordPress.com account to supercharge your site with powerful growth, performance, and security tools.","jetpack-my-jetpack");return React.createElement("div",{className:s.A["connection-form"]},React.createElement(r.Ay,{variant:"headline-medium",className:s.A.title},(0,l.A)(e)),React.createElement(r.Ay,{variant:"body",className:s.A.description},(0,l.A)(t)),React.createElement(c.A,{service:"google"}),React.createElement(c.A,{service:"apple"}),React.createElement(c.A,{service:"github"}),React.createElement(c.A,{service:"jetpack"}),React.createElement(u,null),React.createElement(i.A,{isDisabled:!1}),React.createElement(o.A,{isTextOnly:!0,className:s.A.tos}))}},3775:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var r=a(27723),o=a(51609),n=a(89675);const __=r.__,l=({isDisabled:e})=>{const[t,a]=(0,o.useState)(""),r=(0,o.useCallback)((e=>{a(e.target.value)}),[a]),l=(0,o.useCallback)((e=>{e.preventDefault()}),[]);return React.createElement("form",{onSubmit:l,className:n.A["email-input-container"]},React.createElement("input",{className:n.A["email-input"],type:"email",autoComplete:"email",spellCheck:!1,autoCorrect:"off",name:"user-email",placeholder:__("Enter your email address","jetpack-my-jetpack"),value:t,disabled:e,onInput:r}),React.createElement("button",{className:n.A["submit-button"],disabled:e||!t},__("Start with email","jetpack-my-jetpack")))}},42162:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var r=a(27723),o=a(33320),n=a(70261),l=a(71909),s=a(38846),i=a(89675);const __=r.__,c=({service:e})=>{const t={google:{label:__("Start with Google","jetpack-my-jetpack"),icon:l},apple:{label:__("Start with Apple","jetpack-my-jetpack"),icon:o},github:{label:__("Start with GitHub","jetpack-my-jetpack"),icon:n},jetpack:{label:__("Start with Jetpack app","jetpack-my-jetpack"),icon:s}};return React.createElement("button",{className:i.A["social-button"]},React.createElement("img",{src:t[e].icon,alt:t[e].label}),React.createElement("span",{className:i.A["social-button-text"]},t[e].label))}},87494:(e,t,a)=>{"use strict";a.d(t,{A:()=>d});var r=a(75918),o=a(67142),n=a(28509),l=a(13022),s=a(65049),i=a(63291),c=a(91912),u=a(20260);const d=()=>((0,s.x)(),React.createElement(r.A,{horizontalSpacing:3,horizontalGap:0,className:u.A["onboarding-screen"]},React.createElement(o.A,{height:24,showText:!1,className:u.A["jetpack-logo"]}),React.createElement(n.A,{sm:4,md:4,lg:6,className:(0,l.A)(u.A.column,u.A["primary-column"])},React.createElement(i.A,null)),React.createElement(n.A,{sm:4,md:4,lg:6,className:(0,l.A)(u.A.column,u.A["seconday-column"],u.A.testimonials)},React.createElement("img",{src:c,alt:"Onboarding Screen"}))))},78932:(e,t,a)=>{"use strict";a.d(t,{A:()=>j});var r=a(47425),o=a(51112),n=a(38443),l=a(27723),s=a(13022),i=a(51609),c=a(38837),u=a(31504),d=a(74923),v=a(280),p=a(68242),m=a(64526),h=a(51870),f=a(33981),g=a(46256),w=a(93542),b=a(28252),y=a(1651),x=a(5423);const __=l.__,_n=l._n,_=({purchase:e})=>{const{product_name:t}=e;return React.createElement("div",{className:x.A["plan-container"]},React.createElement(r.hE,null,t),React.createElement(k,{purchase:e}))},k=({purchase:e})=>{const{ID:t,expiry_date:a,expiry_status:u,partner_name:d,product_name:v,product_slug:p,subscribed_date:m,domain:h}=e,f=`https://wordpress.com/me/purchases/${h}/${t}`,g=`https://wordpress.com/checkout/${p}/renew/${t}/${h}`,w=c.hp.EXPIRED===u,_=c.hp.EXPIRING_SOON===u,k=w||_,E=(0,s.A)({[x.A["is-expired"]]:w,[x.A["is-expiring-soon"]]:_}),C=(0,i.useCallback)((()=>{const e=(0,n.getDate)(m);e.setFullYear(e.getFullYear()+100);const t=(0,n.dateI18n)("F jS, Y",a??e);return k?_?(0,l.sprintf)( -// translators: %1$s is the formatted date to display, i.e.- November 24th, 2024 -__("Expiring soon on %1$s","jetpack-my-jetpack"),t):(0,l.sprintf)( -// translators: %1$s is the formatted date to display, i.e.- November 24th, 2024 -__("Expired on %1$s","jetpack-my-jetpack"),t):!a&&d?(0,l.sprintf)( -// translators: %1$s is the name of the hosting partner. i.e.- Bluehost, InMotion, Pressable, Jurassic Ninja, etc.. -__("Managed by: %1$s","jetpack-my-jetpack"),d):(0,l.sprintf)( -// translators: %1$s is the formatted date to display, i.e.- November 24th, 2024 -__("Expires on %1$s","jetpack-my-jetpack"),t)}),[a,k,_,d,m]),j=(0,i.useCallback)((()=>k?_?React.createElement(o.A,{href:g,isExternalLink:!0,variant:"link",weight:"regular"},__("Renew subscription","jetpack-my-jetpack")):React.createElement(o.A,{href:f,isExternalLink:!0,variant:"link",weight:"regular"},__("Resume subscription","jetpack-my-jetpack")):null),[k,_,f,g]);return(0,b.b)(e)?React.createElement(r.Ay,{variant:"body",className:x.A["expire-date"]},React.createElement("span",{className:x.A["expire-date--with-icon"]},__("Never Expires","jetpack-my-jetpack")),React.createElement(y.k,{productName:v,giftedDate:m})):React.createElement(React.Fragment,null,React.createElement(r.Ay,{variant:"body",className:(0,s.A)(x.A["expire-date"],E)},C()),k&&React.createElement(r.Ay,null,j()))},E=({numberOfPurchases:e=0})=>React.createElement(React.Fragment,null,React.createElement(r.H3,null,_n("Your plan","Your plans",e,"jetpack-my-jetpack")),0===e&&React.createElement(r.Ay,{variant:"body"},__("Want to power up your Jetpack?","jetpack-my-jetpack"))),C=({numberOfPurchases:e})=>{const{recordEvent:t}=(0,m.A)(),{isUserConnected:a}=(0,h.A)(),{detail:r}=(0,d.A)("complete"),n=r.hasPaidPlanForProduct,l=_n("Manage your plan","Manage your plans",e,"jetpack-my-jetpack"),s=__("Purchase a plan","jetpack-my-jetpack"),u=(0,i.useCallback)((()=>{t("jetpack_myjetpack_plans_manage_click")}),[t]),v=(0,i.useCallback)((()=>{t("jetpack_myjetpack_plans_purchase_click")}),[t]),b=(0,f.A)(c.NM.ConnectionSkipPricing),y=(0,i.useCallback)((()=>{t("jetpack_myjetpack_activate_license_click"),a||b()}),[b,a,t]);let _=__("Activate a license","jetpack-my-jetpack");a||(_=__("Activate a license (requires a user connection)","jetpack-my-jetpack"));const{loadAddLicenseScreen:k="",adminUrl:E=""}=(0,p.A$)();return React.createElement("ul",null,e>0&&React.createElement("li",{className:x.A["actions-list-item"]},React.createElement(o.A,{onClick:u,href:(0,g.A)(),weight:"regular",variant:"link",isExternalLink:!0},l)),!n&&React.createElement("li",{className:x.A["actions-list-item"]},React.createElement(o.A,{onClick:v,href:(0,w.A)(),weight:"regular",variant:"link",isExternalLink:!0},s)),!n&&k&&React.createElement("li",{className:x.A["actions-list-item"]},React.createElement(o.A,{onClick:y,href:a?`${E}admin.php?page=my-jetpack#/add-license`:void 0,variant:"link",weight:"regular"},_)))},j=()=>{const e=!!(0,p.A$)("userIsAdmin"),{isSiteConnected:t}=(0,h.A)(),a=(0,v.A)({name:u.Ck,query:{path:u.tb},options:{enabled:t}}),{isLoading:r,isError:o}=a,n=a.data,l=n&&!r&&!o,s=l?n.length:0;return React.createElement("div",{className:x.A.container},React.createElement(E,{numberOfPurchases:s}),React.createElement("div",{className:x.A.purchasesSection},l&&n.map((e=>React.createElement(_,{key:`purchase-${e.product_name}`,purchase:e})))),e&&React.createElement(C,{numberOfPurchases:s}))}},5410:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>x});var r=a(27723),o=a(13022),n=a(51609),l=a(38837),s=a(488),i=a(65350),c=a(64526),u=a(36312),d=a(51870),v=a(17885),p=a(96214),m=a(62450),h=a(81434),f=a(56710),g=a(27879),w=a(12854),b=a(76023);const __=r.__,y=e=>`product-card-title-${e}`,x=e=>{const{name:t,Description:a,status:r,admin:x,isDataLoading:_,slug:k,additionalActions:E,primaryActionOverride:C,children:j,onMouseEnter:A,onMouseLeave:S,recommendation:P,customLoadTracks:R,manageUrl:M}=e;let{secondaryAction:V}=e;const[z,H]=(0,n.useState)(!1),{data:{ownedProducts:L}}=(0,i.A)(),O=L?.includes(k),N=r===l.hp.EXPIRED||r===l.hp.NEEDS_ATTENTION__ERROR,I=r===l.hp.EXPIRING_SOON||r===l.hp.NEEDS_ATTENTION__WARNING,B=r===l.hp.ABSENT||r===l.hp.ABSENT_WITH_PLAN,T=r===l.hp.NEEDS_PLAN,F=(0,o.A)({[b.A.plugin_absent]:B,[b.A["is-purchase-required"]]:T,[b.A["is-link"]]:B,[b.A["has-error"]]:N,[b.A["has-warning"]]:I}),{isLoading:D}=(0,s.V)(),[G,U]=(0,n.useState)(!1),{recordEvent:q}=(0,c.A)(),{siteIsRegistering:Z,isUserConnected:W}=(0,d.A)(),{connectSite:$}=(0,u.A)({tracksInfo:{event:"jetpack_myjetpack_product_card_fix_site_connection",properties:{}}}),J=G||Z&&r===l.hp.SITE_CONNECTION_ERROR,K=(0,n.useCallback)((()=>{q("jetpack_myjetpack_product_card_manage_click",{product:k})}),[k,q]);V||r!==l.hp.CAN_UPGRADE||"protect"===k&&!W||(V={href:M,label:__("View","jetpack-my-jetpack"),onClick:K});const Q=(0,n.useCallback)((({e:e})=>{$(e)}),[$]);return(0,n.useEffect)((()=>{!_&&!D&&!z&&(H(!0),q("jetpack_myjetpack_product_card_load",{product:k,status:r,...R}))}),[q,k,r,R,_,D,z,H]),React.createElement(m.A,{title:t||k,className:(0,o.A)(b.A.container,F),headerRightContent:null,onMouseEnter:A,onMouseLeave:S,titleId:y(k)},P&&React.createElement(f.A,{slug:k}),D?React.createElement(h.A,{height:"25px",width:"100%",spaceBelow:!0}):React.createElement(a,null),_?React.createElement("span",{className:b.A.loading},__("Loading…","jetpack-my-jetpack")):j,P?React.createElement(g.A,{slug:k}):React.createElement("div",{className:b.A.actions},React.createElement(w.A,{status:r,isFetching:J,isInstallingStandalone:!1,isOwned:O,suppressNeedsAttention:"protect"===k}),x&&React.createElement("div",{className:b.A.buttons},V&&V?.positionFirst&&React.createElement(p.A,V),React.createElement(v.A,{slug:k,additionalActions:E,primaryActionOverride:C,fixSiteConnectionHandler:Q,setIsActionLoading:U,tracksIdentifier:"product_card",labelSuffixId:y(k)}),V&&!V?.positionFirst&&x&&React.createElement(p.A,V))))}},56710:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var r=a(67397),o=a(27723),n=a(13022),l=a(74923),s=a(81434),i=a(76023),c=a(56147);const __=o.__,u=({slug:e})=>{const{isLoading:t}=(0,l.A)(e),{discountPrice:a,fullPrice:o,currencyCode:u,isFeature:d,hasFreeOffering:v}=(0,c.A)(e),p=d&&v&&!o;return t?React.createElement("div",{className:i.A.priceContainer},React.createElement(s.A,{width:"100%",height:"20px"})):React.createElement("div",{className:i.A.priceContainer},a&&React.createElement("span",{className:i.A.price},(0,r.Ay)(a,u)),React.createElement("span",{className:(0,n.A)(i.A.price,{[i.A.discounted]:a})},!p&&(0,r.Ay)(o,u),p&&__("Free","jetpack-my-jetpack")),!p&&React.createElement("span",{className:i.A.term},__("/month, billed yearly","jetpack-my-jetpack")))}},27879:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var r=a(96072),o=a.n(r),n=a(51112),l=a(13022),s=a(76023),i=a(56147);const c=({slug:e})=>{const{secondaryAction:t,primaryAction:a,isFeature:r,isActivating:c,isInstalling:u}=(0,i.A)(e);return React.createElement("div",{className:s.A.actions},React.createElement("div",{className:(0,l.A)(s.A.buttons,s.A.upsell)},a&&React.createElement(n.A,o()({size:"small",disabled:r&&(c||u)},a),a.label),t&&React.createElement(n.A,o()({size:"small",variant:"secondary",disabled:c},t),t.label)))}},12854:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var r=a(47425),o=a(27723),n=a(13022),l=a(38837),s=a(76023);const __=o.__,i=({status:e,isFetching:t,isInstallingStandalone:a,isOwned:o,suppressNeedsAttention:i=!1})=>{const c=((e,t,a)=>{switch(e){case l.hp.ACTIVE:case l.hp.CAN_UPGRADE:return __("Active","jetpack-my-jetpack");case l.hp.EXPIRING_SOON:return __("Expires soon","jetpack-my-jetpack");case l.hp.EXPIRED:return __("Expired plan","jetpack-my-jetpack");case l.hp.INACTIVE:case l.hp.MODULE_DISABLED:case l.hp.NEEDS_ACTIVATION:case l.hp.NEEDS_FIRST_SITE_CONNECTION:case l.hp.ABSENT:return __("Inactive","jetpack-my-jetpack");case l.hp.ABSENT_WITH_PLAN:return __("Needs Plugin","jetpack-my-jetpack");case l.hp.USER_CONNECTION_ERROR:return __("Needs user account","jetpack-my-jetpack");case l.hp.SITE_CONNECTION_ERROR:return __("Needs connection","jetpack-my-jetpack");case l.hp.NEEDS_PLAN:{const e=__("Needs plan","jetpack-my-jetpack"),a=__("Inactive","jetpack-my-jetpack");return t?e:a}case l.hp.NEEDS_ATTENTION__WARNING:case l.hp.NEEDS_ATTENTION__ERROR:{const e=__("Active","jetpack-my-jetpack"),t=__("Needs attention","jetpack-my-jetpack");return a?e:t}default:return __("Inactive","jetpack-my-jetpack")}})(e,o,i),u=(0,n.A)(s.A.status,((e,t,a)=>{switch(e){case l.hp.ACTIVE:case l.hp.CAN_UPGRADE:return s.A.active;case l.hp.ABSENT_WITH_PLAN:case l.hp.SITE_CONNECTION_ERROR:case l.hp.USER_CONNECTION_ERROR:case l.hp.EXPIRING_SOON:return s.A.warning;case l.hp.INACTIVE:case l.hp.NEEDS_FIRST_SITE_CONNECTION:case l.hp.NEEDS_ACTIVATION:return s.A.inactive;case l.hp.NEEDS_PLAN:return t?s.A.warning:s.A.inactive;case l.hp.EXPIRED:case l.hp.NEEDS_ATTENTION__WARNING:return a?s.A.active:s.A.warning;case l.hp.NEEDS_ATTENTION__ERROR:return a?s.A.active:s.A.error;default:return s.A.inactive}})(e,o,i),{[s.A["is-fetching"]]:t||a});return React.createElement(r.Ay,{variant:"label",className:u},c)}},56147:(e,t,a)=>{"use strict";a.d(t,{A:()=>h});var r=a(39384),o=a(27723),n=a(51609),l=a(38837),s=a(41526),i=a(55394),c=a(74923),u=a(68242),d=a(64526),v=a(51870);const __=o.__,p=(e,{onCheckout:t,onActivate:a,onInstall:r,onManage:o})=>{const n=e.status===l.hp.ACTIVE&&(e.isUpgradableByBundle.length||e.isUpgradable),s=e?.pricingForUi?.fullPrice||e?.pricingForUi?.tiers?.upgraded?.fullPrice;return e.status===l.hp.CAN_UPGRADE||n?s?{label:__("Upgrade","jetpack-my-jetpack"),onClick:t}:null:e.isFeature?((e,{onActivate:t,onInstall:a,onManage:r})=>{switch(e.status){case l.hp.MODULE_DISABLED:return{label:__("Activate","jetpack-my-jetpack"),onClick:t};case l.hp.ABSENT:return{label:__("Install","jetpack-my-jetpack"),onClick:a};case l.hp.USER_CONNECTION_ERROR:return{label:__("Connect","jetpack-my-jetpack"),href:"#/connection"};default:return{label:__("Manage","jetpack-my-jetpack"),href:e.manageUrl,onClick:r}}})(e,{onActivate:a,onInstall:r,onManage:o}):{label:__("Purchase","jetpack-my-jetpack"),onClick:t}},m=(e,t)=>{if(e.isFeature)return null;!e.isPluginActive||e.status===l.hp.NEEDS_ACTIVATION||(e.status,l.hp.NEEDS_PLAN);return{label:__("Learn more","jetpack-my-jetpack"),href:`#/add-${e.slug}`}},h=e=>{const{recordEvent:t}=(0,d.A)(),{detail:a}=(0,c.A)(e),{wpcomProductSlug:o,wpcomFreeProductSlug:l,...h}=(e=>{const{tiers:t,wpcomFreeProductSlug:a,introductoryOffer:r}=e||{};if(t){const{discountPrice:e,fullPrice:r,currencyCode:o,wpcomProductSlug:n,quantity:l,introductoryOffer:s}=t.upgraded;return{wpcomFreeProductSlug:a,wpcomProductSlug:l?`${n}:-q-${l}`:n,discountPrice:e&&e!==r&&!s?.reason?e/12:null,fullPrice:r?r/12:0,currencyCode:o??"USD"}}const{discountPrice:o,discountPricePerMonth:n,fullPrice:l,fullPricePerMonth:s,currencyCode:i,wpcomProductSlug:c}=e||{};return{wpcomFreeProductSlug:a,wpcomProductSlug:c,discountPrice:o&&o!==l&&!r?.reason?n:null,fullPrice:s??0,currencyCode:i??"USD"}})(a.pricingForUi),{install:f,isPending:g}=(0,i.A)(e),{isUserConnected:w}=(0,v.A)(),{myJetpackUrl:b,siteSuffix:y}=(0,u.A$)(),{activate:x,isPending:_}=(0,s.A)(e),{run:k}=(0,r.useProductCheckoutWorkflow)({from:"my-jetpack",productSlug:o,redirectUrl:b,connectAfterCheckout:!w,siteSuffix:y}),{run:E}=(0,r.useProductCheckoutWorkflow)({from:"my-jetpack",productSlug:l,redirectUrl:b,connectAfterCheckout:!w,siteSuffix:y}),C=(0,n.useCallback)((()=>{l?E():x()}),[x,E,l]),j=(0,n.useCallback)((()=>{if(t("jetpack_myjetpack_evaluation_recommendations_checkout_click",{slug:e}),"crm"===e)return x(),void window.open("https://jetpackcrm.com/pricing/","_blank");k()}),[x,t,k,e]),A=(0,n.useCallback)((()=>{t("jetpack_myjetpack_evaluation_recommendations_install_plugin_click",{product:e}),f()}),[e,f,t]),S=(0,n.useCallback)((()=>{t("jetpack_myjetpack_evaluation_recommendations_manage_click",{product:e})}),[e,t]);return{secondaryAction:m(a),primaryAction:p(a,{onCheckout:j,onActivate:C,onInstall:A,onManage:S}),isFeature:a.isFeature,hasFreeOffering:a.hasFreeOffering,isActivating:_,isInstalling:g,...h}}},48412:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});var r=a(96072),o=a.n(r),n=a(31504),l=a(6176);const s=e=>React.createElement(l.A,o()({slug:n.D_.JETPACK_AI,upgradeInInterstitial:!0},e))},89674:(e,t,a)=>{"use strict";a.d(t,{z:()=>b});var r=a(48412),o=a(36724),n=a(30161),l=a(59838),s=a(15375),i=a(91686),c=a(95383),u=a(55243),d=a(74274),v=a(32917),p=a(30414),m=a(37014),h=a(44169),f=a(57769),g=a(4073),w=a(7631);const b={backup:n.A,protect:d.A,"anti-spam":o.A,boost:l.A,search:p.A,videopress:w.A,stats:g.A,crm:i.A,social:f.A,ai:r.A,"jetpack-ai":r.A,security:m.A,growth:c.A,complete:s.A,extras:null,scan:null,creator:null,"brute-force":null,newsletter:u.A,"related-posts":v.A,"site-accelerator":h.A}},36724:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var r=a(96072),o=a.n(r),n=a(28120),l=a.n(n),s=a(31504),i=a(6176);const c=e=>React.createElement(i.A,o()({slug:s.D_.ANTI_SPAM},e));c.propTypes={admin:l().bool};const u=c},30161:(e,t,a)=>{"use strict";a.d(t,{A:()=>C});var r=a(96072),o=a.n(r),n=a(47425),l=a(3924),s=a(27723),i=a(82290),c=a(28120),u=a.n(c),d=a(38837),v=a(31504),p=a(74923),m=a(280),h=a(68242),f=a(64526),g=a(40271),w=a(6176),b=a(12660),y=a(81434),x=a(52232);const __=s.__,_n=s._n,_=v.D_.BACKUP,k=e=>{const{detail:t}=(0,p.A)(_),{status:a,doesModuleNeedAttention:r}=t,l=!!r,{status:s}=r||{},c=a===d.hp.ACTIVE||a===d.hp.CAN_UPGRADE,{reasonContent:u,isLoading:v}=(0,g.A)()||{},{title:m,text:h}=u||{};if(c)return React.createElement(E,o()({slug:_},e));const f=a===d.hp.NEEDS_ATTENTION__ERROR&&l;return React.createElement(w.A,o()({slug:_,Description:f&&(()=>null)},e),v&&React.createElement(y.A,{height:"75px",width:"100%"}),f&&!v&&React.createElement("div",{className:x.A.backupErrorContainer},React.createElement("div",{className:x.A.iconContainer},React.createElement(i.A,{icon:"notice",size:16,className:x.A.iconError})),React.createElement("div",{className:x.A.contentContainer},React.createElement(n.Ay,{variant:"body-small",className:"value-section__heading"},__("The last backup attempt failed.","jetpack-my-jetpack"),React.createElement(b.I,{tracksEventName:"backup_card_tooltip_open",tracksEventProps:{location:"backup-error",status:a,backup_status:s,feature:"jetpack-backup"},expandOnMobile:!0},React.createElement(React.Fragment,null,React.createElement("h3",null,m),React.createElement("p",null,h),React.createElement("p",null,__("Check out our troubleshooting guide or contact your hosting provider to resolve the issue.","jetpack-my-jetpack"))))),React.createElement(n.Ay,{variant:"body-small",className:x.A.error_description},__("Check out our troubleshooting guide.","jetpack-my-jetpack")))))},E=e=>{const{data:t,isLoading:a}=(0,m.A)({name:v.Dz,query:{path:v.DB}}),r=t?.last_rewindable_event,c=r?.published,u=t?.undo_backup_id,{recordEvent:d}=(0,f.A)(),{siteSuffix:p=""}=(0,h.A$)(),g={href:(0,l.A)("jetpack-backup-undo-cta",{path:u,site:p}),size:"small",variant:"primary",weight:"regular",label:__("Undo","jetpack-my-jetpack"),onClick:()=>{d("jetpack_myjetpack_backup_card_undo_click",{product:e.slug,undo_backup_id:u})},isExternalLink:!0};return React.createElement(w.A,o()({},e,{showMenu:!0,isDataLoading:a,Description:r?()=>React.createElement(n.Ay,{variant:"body-small",className:x.A.description},React.createElement("span",null,__("Activity Detected","jetpack-my-jetpack")),React.createElement("span",{className:x.A.time},(e=>{if(!e)return"";const t=new Date-new Date(e);if(t>0){const e=Math.floor(t/864e5),a=Math.floor(t%864e5/36e5),r=Math.floor(t%36e5/6e4),o=Math.floor(t%6e4/1e3);return e>0?(0,s.sprintf)( -// translators: %s is the number of days since the last backup -_n("%s day ago","%s days ago",e,"jetpack-my-jetpack"),e):a>0?(0,s.sprintf)( -// translators: %s is the number of hours since the last backup -_n("%s hour ago","%s hours ago",a,"jetpack-my-jetpack"),a):r>0?(0,s.sprintf)( -// translators: %s is the number of minutes since the last backup -_n("%s minute ago","%s minutes ago",r,"jetpack-my-jetpack"),r):(0,s.sprintf)( -// translators: %s is the number of seconds since the last backup -_n("%s second ago","%s seconds ago",o,"jetpack-my-jetpack"),o)}})(c))):null,additionalActions:r?[g]:[]}),r?React.createElement("div",{className:x.A.activity},React.createElement(i.A,{icon:r.gridicon,size:24}),React.createElement("p",{className:x.A.summary},r.summary)):null)};k.propTypes={admin:u().bool};const C=k},79520:(e,t,a)=>{"use strict";a.d(t,{A:()=>w});var r=a(58454),o=a(56461),n=a(10580),l=a(56427),s=a(29491),i=a(27723),c=a(51113),u=a(62510),d=a(51609),v=a(38837),p=a(74923),m=a(68242),h=a(64526),f=a(51870),g=a(76683);a(14479);const __=i.__,w=()=>{const{recordEvent:e}=(0,h.A)(),[t,a]=(0,d.useState)(!1),[w,b]=(0,d.useState)(""),[y,x]=(0,d.useState)(null),[_,k]=(0,d.useState)(null),[E,C]=(0,d.useState)(!1),[j,A]=(0,d.useState)(!1),[S,P]=(0,d.useState)(!1),R=(0,s.useViewportMatch)("medium","<"),{siteUrl:M="",latestBoostSpeedScores:V}=(0,m.A$)(),{apiRoot:z,apiNonce:H,isSiteConnected:L}=(0,f.A)(),{detail:O}=(0,p.A)("boost"),{status:N}=O,I=N===v.hp.ACTIVE||N===v.hp.CAN_UPGRADE,B=(e,t)=>{const{mobile:a,desktop:r}=t||{};var o,n;a&&r&&e((o=a,n=r,Math.round((o+n)/2)))},T=e=>{const{scores:t,previousScores:a}=e||{};B(x,t),B(k,a),(e=>{const{mobile:t,desktop:a}=e||{};t&&a&&b((0,r.T)(t,a))})(t)},F=async()=>{L?(a(!0),(0,r.sE)(!0,z,M,H).then((e=>{const t=(0,r.T)(e.current.mobile,e.current.desktop);b(t),B(x,e.current),B(k,V.scores),a(!1)})).catch((t=>{e("jetpack_boost_speed_score_error",{feature:"jetpack-boost",position:"my-jetpack",error:t}),V&&V.scores?T(V):C(!0),a(!1)}))):C(!0)},D=(0,d.useMemo)((()=>_&&y?y<_?null:y-_:null),[y,_]),G=(0,g.R)({speedLetterGrade:w,boostScoreIncrease:D}),U=(0,d.useCallback)((()=>{A(!0)}),[A]),q=(0,d.useCallback)((()=>{A(!1)}),[A]);return(0,d.useEffect)((()=>{V?I?(0,r.US)(1e3*V.timestamp)<1?T(V):F():(0,r.US)(1e3*V.timestamp)<14?T(V):F():F()}),[]),(0,d.useEffect)((()=>{t||!j||S||(e("jetpack_boost_card_tooltip_viewed",{feature:"jetpack-boost",position:"my-jetpack"}),P(!0))}),[t,j,e,S]),!E&&React.createElement("div",{className:"mj-boost-speed-score",role:"presentation",onMouseEnter:U,onMouseLeave:q,onClick:j?q:U,onFocus:U,onBlur:q},t?React.createElement(o.A,{color:"#23282d",size:16}):React.createElement(React.Fragment,null,React.createElement("div",{className:"screen-reader-text"},((e,t,a,r)=>{if(!e||"number"!=typeof t)return"";const o=[];return o.push((0,i.sprintf)( -// translators: %1$s: speed grade (e.g. 'A'), %2$s: numerical speed score (e.g. '95'). -__("Your website’s overall speed score is %1$s, or %2$s out of 100.","jetpack-my-jetpack"),e,t)),"number"==typeof a&&o.push(a>0?(0,i.sprintf)( -// translators: %s: score increase (e.g. '10') -__("Your website’s overall speed score increased by %s.","jetpack-my-jetpack"),a):(0,i.sprintf)( -// translators: %s: score increase (e.g. '10') -__("Your website’s overall speed score decreased by %s.","jetpack-my-jetpack"),a)),r&&o.push(r),o.join(" ")})(w,y,D,G)),React.createElement("div",{"aria-hidden":"true"},React.createElement("div",{className:"mj-boost-speed-score__grade"},React.createElement("span",null,__("Your website’s overall speed score:","jetpack-my-jetpack")),React.createElement("span",{className:"mj-boost-speed-score__grade--letter"},w,!t&&j&&React.createElement(l.Popover,{placement:R?"top-end":"top-start",noArrow:!1,offset:10},React.createElement("div",{className:"boost-score-tooltip__parent"},React.createElement("p",{className:"boost-score-tooltip__heading"},__("Site speed performance:","jetpack-my-jetpack")," ",w),React.createElement("p",{className:"boost-score-tooltip__content"},G))))),React.createElement("div",{className:"mj-boost-speed-score__bar"},React.createElement(n.A,{score:y,active:y>0,isLoading:t,showPrevScores:!1,scoreBarType:"desktop",noBoostScoreTooltip:null})),!!D&&React.createElement("div",{className:"mj-boost-speed-score__increase"},React.createElement(c.A,{size:18,icon:u.A}),React.createElement("span",null,D)))))}},59838:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var r=a(96072),o=a.n(r),n=a(27723),l=a(38837),s=a(31504),i=a(6176),c=a(79520);const __=n.__,u=e=>{const t={[l.hp.ABSENT]:{label:__("Boost your site","jetpack-my-jetpack")}};return React.createElement(i.A,o()({slug:s.D_.BOOST,primaryActionOverride:t},e),React.createElement(c.A,null))}},76683:(e,t,a)=>{"use strict";a.d(t,{R:()=>n});var r=a(27723),o=a(74923);const __=r.__;function n({speedLetterGrade:e,boostScoreIncrease:t}){const{detail:a}=(0,o.A)("boost"),{isPluginActive:n,hasPaidPlanForProduct:l}=a;if(n){if(l){if(t)return(0,r.sprintf)(/* translators: %d is the number (positive integer) of points the speed has increased */ -__("Your speed has improved by %d points! Boost is working to enhance your performance with automated tools.","jetpack-my-jetpack"),t);switch(e){case"A":return __("Your site is fast! Boost is working to enhance your performance with automated tools.","jetpack-my-jetpack");case"B":case"C":case"D":case"E":case"F":return __("Visit the Boost dashboard to view your historical speed scores and manage your product settings.","jetpack-my-jetpack");default:return __("Visit the Boost dashboard to view your site’s speed scores and manage your product settings.","jetpack-my-jetpack")}}if(t)return(0,r.sprintf)(/* translators: %d is the number (integer) of points the speed has increased */ -__("Your speed has improved by %d points! Upgrade Boost to unlock automated CSS and image optimization tools to maintain your high score.","jetpack-my-jetpack"),t);switch(e){case"A":return __("Your site is fast! But maintaining a high speed isn’t easy. Upgrade Boost to use automated CSS and image optimization tools to improve your performance on the go.","jetpack-my-jetpack");case"B":return __("You are one step away from making your site blazing fast. Upgrade Boost to use automated CSS and image optimization tools to improve your performance.","jetpack-my-jetpack");default:return __("Improve your performance with automated CSS and image optimization tools by upgrading Boost.","jetpack-my-jetpack")}}switch(e){case"A":return __("Your site is fast! But maintaining a high speed isn’t easy. Use Boost’s automated acceleration tools to optimize your performance on the go.","jetpack-my-jetpack");case"B":return __("You are one step away from making your site blazing fast. Install Boost to enhance your site’s performance like top websites, no developer needed.","jetpack-my-jetpack");default:return __("Your site needs performance improvements. Make your site blazing fast with Boost’s simple dashboard and acceleration tools.","jetpack-my-jetpack")}}},15375:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(31504),o=a(6176);const n=({admin:e,recommendation:t})=>React.createElement(o.A,{slug:r.D_.COMPLETE,showMenu:!0,admin:e,recommendation:t})},91686:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var r=a(96072),o=a.n(r),n=a(28120),l=a.n(n),s=a(31504),i=a(6176);const c=e=>React.createElement(i.A,o()({slug:s.D_.CRM},e));c.propTypes={admin:l().bool};const u=c},95383:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(31504),o=a(6176);const n=({admin:e,recommendation:t})=>React.createElement(o.A,{slug:r.D_.GROWTH,showMenu:!0,admin:e,recommendation:t})},25487:(e,t,a)=>{"use strict";a.d(t,{A:()=>A});var r=a(28509),o=a(75918),n=a(90766),l=a(47425),s=a(27723),i=a(51609),c=a(31504),u=a(65350),d=a(68242),v=a(81434),p=a(31421),m=a(1035),h=a(48412),f=a(36724),g=a(30161),w=a(59838),b=a(91686),y=a(74274),x=a(30414),_=a(57769),k=a(4073),E=a(10372),C=a(7631);const __=s.__,j=({slugs:e,isLoading:t})=>{const a=[...Array(9).keys()],{showFullJetpackStatsCard:n=!1}=(0,d.A$)("myJetpackFlags"),{userIsAdmin:l=!1}=(0,d.A$)(),s={backup:g.A,protect:y.A,"anti-spam":f.A,boost:w.A,search:x.A,videopress:C.A,stats:k.A,crm:b.A,social:_.A,"jetpack-ai":h.A},i=e.filter((e=>(e!==c.D_.STATS||!n)&&!!s[e]));return React.createElement(React.Fragment,null,t&&React.createElement(r.A,{className:E.A.fullStatsCard},React.createElement(v.A,{width:"100%",height:"350px"})),!t&&e.includes("stats")&&n&&React.createElement(r.A,{className:E.A.fullStatsCard},React.createElement(m.A,null)),React.createElement(o.A,{className:E.A.cardlist,tagName:"ul",fluid:!0,horizontalSpacing:0,horizontalGap:3},t?a.map(((e,t)=>React.createElement(r.A,{tagName:"li",sm:4,md:4,lg:4,key:t},React.createElement(v.A,{width:"100%",height:"200px"})))):i.map((e=>{const t=s[e];return React.createElement(r.A,{tagName:"li",sm:4,md:4,lg:4,key:e},React.createElement(t,{admin:"1"===l}))}))))},A=({noticeMessage:e})=>{const{data:{ownedProducts:t,unownedProducts:a},isLoading:s}=(0,u.A)(),[c,v]=(0,i.useState)(!0);(0,i.useEffect)((()=>{s||requestAnimationFrame((()=>v(!1)))}));const{canUserViewStats:m,userIsAdmin:h}=(0,d.A$)(),f=(0,i.useMemo)((()=>t.length>0?__("Discover more","jetpack-my-jetpack"):__("Discover all Jetpack Products","jetpack-my-jetpack")),[t.length]),g=(0,i.useCallback)((e=>{const t=["extras","scan","security","ai","creator","growth","complete","site-accelerator","newsletter","related-posts","brute-force"];return m||t.push("stats"),e.filter((e=>!t.includes(e)))}),[m]),w=g(t),b=g(a);return React.createElement(React.Fragment,null,(c||w.length>0)&&React.createElement(n.A,null,React.createElement(o.A,{horizontalSpacing:6,horizontalGap:e?3:6},React.createElement(r.A,null,React.createElement(r.A,{sm:4,md:8,lg:12,className:E.A.cardListTitle},React.createElement(l.Ay,{variant:"headline-small"},__("My products","jetpack-my-jetpack"))),React.createElement(j,{isLoading:c,slugs:w})))),h&&b.length>0&&React.createElement(o.A,{horizontalSpacing:6,horizontalGap:e?3:6},React.createElement(r.A,null,React.createElement(r.A,{sm:4,md:8,lg:12,className:E.A.cardListTitle},React.createElement(l.Ay,{variant:"headline-small"},f)),React.createElement(p.A,{products:b}))))}},55243:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(31504),o=a(6176);const n=({admin:e,recommendation:t})=>React.createElement(o.A,{slug:r.D_.NEWSLETTER,admin:e,recommendation:t})},23293:(e,t,a)=>{"use strict";a.d(t,{Q:()=>m});var r=a(29491),o=a(27723),n=a(13022),l=a(74923),s=a(51870),i=a(12660),c=a(10372),u=a(96068),d=a(90850),v=a(24516),p=a(57915);const __=o.__,m=({data:e})=>{const{detail:t}=(0,l.A)("protect"),{isPluginActive:a=!1}=t||{},{isSiteConnected:r}=(0,s.A)(),{jetpack_waf_automatic_rules:o,waf_enabled:n}=e?.wafConfig||{};return a&&r?o&&n?React.createElement(h,{data:e,status:"active"}):React.createElement(h,{data:e,status:"inactive"}):React.createElement(h,{data:e,status:"off"})},h=({status:e,data:t})=>{const a=(0,r.useViewportMatch)("medium","<"),{detail:o}=(0,l.A)("protect"),{hasPaidPlanForProduct:s=!1}=o||{},m=(0,p.T)(t),{autoFirewallTooltip:h}=m;return"active"===e?React.createElement(React.Fragment,null,React.createElement("div",{className:c.A.valueSectionHeading},__("Auto-Firewall","jetpack-my-jetpack")),React.createElement("div",{className:"value-section__data"},React.createElement("div",null,React.createElement("img",{className:"value-section__status-icon",src:v,alt:__("Shield icon - Auto-Firewall Status: On","jetpack-my-jetpack")})),React.createElement("div",{className:"value-section__status-text"},__("On","jetpack-my-jetpack")))):"inactive"===e?React.createElement(React.Fragment,null,React.createElement("div",{className:(0,n.A)(c.A.valueSectionHeading,"value-section__heading")},__("Auto-Firewall","jetpack-my-jetpack"),React.createElement(i.I,{tracksEventName:"protect_card_tooltip_open",tracksEventProps:{location:"auto-firewall",status:e,feature:"jetpack-protect",has_paid_plan:s},placement:a?"top":"right"},React.createElement("h3",null,h.title),React.createElement("p",null,h.text))),React.createElement("div",{className:"value-section__data"},React.createElement("div",null,React.createElement("img",{className:"value-section__status-icon",src:u,alt:__("Shield icon - Auto-Firewall Status: Inactive","jetpack-my-jetpack")})),React.createElement("div",{className:"value-section__status-text"},__("Inactive","jetpack-my-jetpack")))):React.createElement(React.Fragment,null,React.createElement("div",{className:c.A.valueSectionHeading},__("Auto-Firewall","jetpack-my-jetpack")),React.createElement("div",{className:"value-section__data"},React.createElement("div",null,React.createElement("img",{className:"value-section__status-icon",src:d,alt:__("Shield icon - Auto-Firewall Status: Off","jetpack-my-jetpack")})),React.createElement("div",{className:"value-section__status-text"},__("Off","jetpack-my-jetpack"))))}},74274:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var r=a(96072),o=a.n(r),n=a(31504),l=a(6176),s=a(57765);const i=e=>React.createElement(l.A,o()({},e,{slug:n.D_.PROTECT,upgradeInInterstitial:!0}),React.createElement(s.A,null))},66:(e,t,a)=>{"use strict";a.d(t,{f:()=>m});var r=a(27723),o=a(13022),n=a(74923),l=a(51870),s=a(56581),i=a(23658),c=a(12660),u=a(10372),d=a(90850),v=a(64538),p=a(57915);const __=r.__,m=({data:e})=>{const{detail:t}=(0,n.A)("protect"),{isPluginActive:a=!1}=t||{},{isSiteConnected:r}=(0,l.A)(),{blocked_logins:o,brute_force_protection:s}=e?.wafConfig||{};return(a||(0,i.w)())&&r?s?React.createElement(h,{data:e,status:"active"}):React.createElement(h,{data:e,status:"inactive"}):r&&o>0?React.createElement(h,{data:e,status:"inactive"}):React.createElement(h,{data:e,status:"off"})},h=({status:e,data:t})=>{const{blocked_logins:a}=t?.wafConfig||{},r=(0,p.T)(t),{blockedLoginsTooltip:n}=r;return"active"===e?a>0?React.createElement(React.Fragment,null,React.createElement("div",{className:u.A.valueSectionHeading},__("Logins Blocked","jetpack-my-jetpack")),React.createElement("div",{className:"value-section__data"},React.createElement("div",{className:"logins_blocked__count"},(0,s.A)(a)))):React.createElement(React.Fragment,null,React.createElement("div",{className:(0,o.A)(u.A.valueSectionHeading,"value-section__heading")},__("Logins Blocked","jetpack-my-jetpack"),React.createElement(c.I,{tracksEventName:"protect_card_tooltip_open",tracksEventProps:{location:"blocked-logins",status:e,feature:"jetpack-protect",message:"no data yet"}},React.createElement("h3",null,n.title),React.createElement("p",null,n.text))),React.createElement("div",{className:"value-section__data"},React.createElement("div",null,React.createElement("img",{className:"value-section__status-icon",src:v,alt:__("Shield icon - Brute Force Protection Status: Active","jetpack-my-jetpack")})))):"inactive"===e?React.createElement(React.Fragment,null,React.createElement("div",{className:(0,o.A)(u.A.valueSectionHeading,"value-section__heading")},__("Logins Blocked","jetpack-my-jetpack"),React.createElement(c.I,{tracksEventName:"protect_card_tooltip_open",tracksEventProps:{location:"blocked-logins",feature:"jetpack-protect",status:e}},React.createElement("h3",null,n.title),React.createElement("p",null,n.text))),React.createElement("div",{className:"value-section__data"},a>0?React.createElement(React.Fragment,null,React.createElement("div",null,React.createElement("img",{className:"value-section__status-icon",src:d,alt:__("Shield icon - Brute Force Protection Status: Inactive","jetpack-my-jetpack")})),React.createElement("div",{className:"logins_blocked__count"},(0,s.A)(a))):React.createElement("div",null,React.createElement("img",{className:"value-section__status-icon",src:d,alt:__("Shield icon - Brute Force Protection Status: Inactive","jetpack-my-jetpack")})))):React.createElement(React.Fragment,null,React.createElement("div",{className:u.A.valueSectionHeading},__("Logins Blocked","jetpack-my-jetpack")),React.createElement("div",{className:"value-section__data"},React.createElement("div",null,React.createElement("img",{className:"value-section__status-icon",src:d,alt:__("Shield icon - Brute Force Protection Status: Off","jetpack-my-jetpack")})),React.createElement("div",{className:"value-section__status-text"},__("Off","jetpack-my-jetpack"))))}},57765:(e,t,a)=>{"use strict";a.d(t,{A:()=>p});var r=a(31504),o=a(74923),n=a(280),l=a(12660),s=a(81434),i=a(23293),c=a(66),u=a(61512),d=a(52584),v=a(57915);a(6619);const p=()=>{const{detail:e,isLoading:t}=(0,o.A)("protect"),{isPluginActive:a=!1}=e||{},{data:p,isLoading:m}=(0,n.A)({name:r.Re,query:{path:r.es}}),h=(0,d.A)(p),f=(0,v.T)(p),{pluginsThemesTooltip:g}=f,w=t||m;return React.createElement(React.Fragment,null,React.createElement("div",{className:"value-section__last-scan"},w?React.createElement(s.A,{width:"150px",height:"16px"}):h&&React.createElement("div",null,h),!a&&React.createElement(l.I,{tracksEventName:"protect_card_tooltip_open",tracksEventProps:{location:"plugins&themes",feature:"jetpack-protect",status:"inactive"}},React.createElement("h3",null,g.title),React.createElement("p",null,g.text))),React.createElement("div",{className:"value-section"},React.createElement("div",{className:"value-section__scan-threats"},w?React.createElement(s.A,{width:"75px",height:"50px"}):React.createElement(u.v,{data:p})),React.createElement("div",{className:"value-section__auto-firewall"},w?React.createElement(s.A,{width:"75px",height:"50px"}):React.createElement(i.Q,{data:p})),React.createElement("div",{className:"value-section__logins-blocked"},w?React.createElement(s.A,{width:"75px",height:"50px"}):React.createElement(c.f,{data:p}))))}},61512:(e,t,a)=>{"use strict";a.d(t,{v:()=>w});var r=a(11883),o=a(56427),n=a(29491),l=a(27723),s=a(13022),i=a(51609),c=a(74923),u=a(64526),d=a(51870),v=a(12660),p=a(10372),m=a(90850),h=a(64538),f=a(24516),g=a(57915);const __=l.__,w=({data:e})=>{const{detail:t}=(0,c.A)("protect"),{isPluginActive:a=!1,hasPaidPlanForProduct:r}=t||{},{isSiteConnected:o}=(0,d.A)(),{plugins:n,themes:l,num_threats:s=0}=e?.scanData||{},u=(0,i.useMemo)((()=>{const{core:t,database:a,files:r,num_plugins_threats:o,num_themes_threats:s}=e?.scanData||{};return[...o?n.reduce(((e,t)=>e.concat(t.threats)),[]):[],...s?l.reduce(((e,t)=>e.concat(t.threats)),[]):[],...t?.threats??[],...a??[],...r??[]].reduce(((e,t)=>t.severity>=5?e+=1:e),0)}),[n,l,e?.scanData]);return a&&o?r?s?React.createElement(b,{data:e,numThreats:s,criticalThreatCount:u}):React.createElement(y,{data:e,status:"success"}):s?React.createElement(b,{data:e,numThreats:s}):React.createElement(y,{data:e,status:"partial"}):React.createElement(y,{data:e,status:"off"})},b=({data:e,numThreats:t,criticalThreatCount:a})=>{const{recordEvent:l}=(0,u.A)(),c=(0,i.useRef)(),d=(0,n.useViewportMatch)("medium","<"),[m,h]=(0,i.useState)(!1),f=(0,g.T)(e),{scanThreatsTooltip:w}=f,b=(0,i.useCallback)((()=>h((e=>(!0==!e&&l("jetpack_protect_card_tooltip_open",{page:"my-jetpack",feature:"jetpack-protect",location:"scan",has_paid_plan:!0,threats:t}),!e)))),[t,l]),y=(0,i.useCallback)((()=>{c.current&&!c.current.contains(c.current.ownerDocument.activeElement)&&h(!1)}),[h,c]);return a?React.createElement(React.Fragment,null,React.createElement("div",{className:(0,s.A)(p.A.valueSectionHeading,"value-section__heading")},__("Threats","jetpack-my-jetpack"),React.createElement("div",{className:"scan-threats__critical-threat-container"},React.createElement("button",{className:"info-tooltip__button",onClick:b,ref:c},React.createElement(r.A,{className:"scan_threats__icon-critical",icon:"info",size:14}),React.createElement("span",{className:"scan-threats__critical-threat-count"},a)),m&&React.createElement(o.Popover,{placement:d?"top-end":"right",noArrow:!1,offset:10,focusOnMount:"container",onClose:y},React.createElement("div",{className:"info-tooltip__content"},React.createElement("h3",null,w.title),React.createElement("p",null,w.text))))),React.createElement("div",{className:"value-section__data"},React.createElement("div",{className:"scan-threats__critical-threats"},React.createElement("div",{className:"scan-threats__threat-count"},t)))):React.createElement(React.Fragment,null,React.createElement("div",{className:(0,s.A)(p.A.valueSectionHeading,"value-section__heading")},__("Threats","jetpack-my-jetpack"),React.createElement(v.I,{tracksEventName:"protect_card_tooltip_open",tracksEventProps:{location:"threats",feature:"jetpack-protect",has_paid_plan:!0,threats:t}},React.createElement("h3",null,w.title),React.createElement("p",null,w.text))),React.createElement("div",{className:"value-section__data"},React.createElement("div",{className:"scan-threats__threat-count"},t)))},y=({data:e,status:t})=>{const a=(0,g.T)(e),{scanThreatsTooltip:r}=a;return"success"===t?React.createElement(React.Fragment,null,React.createElement("div",{className:p.A.valueSectionHeading},__("Scan","jetpack-my-jetpack")),React.createElement("div",{className:"value-section__data"},React.createElement("div",null,React.createElement("img",{className:"value-section__status-icon",src:f,alt:__("Shield icon - Scan Status: Secure","jetpack-my-jetpack")})),React.createElement("div",{className:"value-section__status-text"},__("Secure","jetpack-my-jetpack")))):"partial"===t?React.createElement(React.Fragment,null,React.createElement("div",{className:(0,s.A)(p.A.valueSectionHeading,"value-section__heading")},__("Scan","jetpack-my-jetpack"),React.createElement(v.I,{tracksEventName:"protect_card_tooltip_open",tracksEventProps:{location:"scan",status:t,feature:"jetpack-protect",has_paid_plan:!1,threats:0}},React.createElement("h3",null,r.title),React.createElement("p",null,r.text))),React.createElement("div",{className:"value-section__data"},React.createElement("div",null,React.createElement("img",{className:"value-section__status-icon",src:h,alt:__("Shield icon - Scan Status: Partial","jetpack-my-jetpack")})),React.createElement("div",{className:"value-section__status-text"},__("Partial","jetpack-my-jetpack")))):React.createElement(React.Fragment,null,React.createElement("div",{className:p.A.valueSectionHeading},__("Scan","jetpack-my-jetpack")),React.createElement("div",{className:"value-section__data"},React.createElement("div",null,React.createElement("img",{className:"value-section__status-icon",src:m,alt:__("Shield icon - Scan Status: Off","jetpack-my-jetpack")})),React.createElement("div",{className:"value-section__status-text"},__("Off","jetpack-my-jetpack"))))}},52584:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var r=a(27723),o=a(51609),n=a(74923),l=a(68242),s=a(14542);const __=r.__,_n=r._n,i=e=>{const{detail:t}=(0,n.A)("protect"),{isPluginActive:a=!1}=t||{},{plugins:i,themes:c}=(0,l.A$)(),{plugins:u,themes:d,last_checked:v=null}=e?.scanData||{},p=u?.length||Object.keys(i).length,m=d?.length||Object.keys(c).length,h=!!v&&(0,s._)(Date.parse(v));return(0,o.useMemo)((()=>a?h?(0,r.sprintf)(/* translators: %s is how long ago since the last scan took place, i.e.- "17 hours ago" */ -__("Last scan: %s","jetpack-my-jetpack"),h):null:(0,r.sprintf)(/* translators: %d is the number of plugins installed on the site. */ -_n("%d plugin","%d plugins",p,"jetpack-my-jetpack"),p)+" "+/* translators: The ampersand symbol here (&) is meaning "and". */ -__("&","jetpack-my-jetpack")+" "+(0,r.sprintf)(/* translators: %d is the number of themes installed on the site. */ -_n("%d theme","%d themes",m,"jetpack-my-jetpack").replace(" "," "),m)),[a,h,p,m])}},57915:(e,t,a)=>{"use strict";a.d(t,{T:()=>d});var r=a(86087),o=a(27723),n=a(51609),l=a(31504),s=a(74923),i=a(68242),c=a(64526),u=a(23658);const __=o.__,_n=o._n,d=e=>{const t=l.D_.PROTECT,{detail:a}=(0,s.A)(t),{standalonePluginInfo:d,hasPaidPlanForProduct:v,manageUrl:p}=a||{},{isStandaloneActive:m}=d||{},{recordEvent:h}=(0,c.A)(),{plugins:f,themes:g}=(0,i.A$)(),{plugins:w,themes:b,num_threats:y=0,threats:x=[]}=e?.scanData||{},{jetpack_waf_automatic_rules:_,blocked_logins:k,brute_force_protection:E,waf_supported:C,waf_enabled:j}=e?.wafConfig||{},A=w?.length||Object.keys(f).length,S=b?.length||Object.keys(g).length,P=(0,n.useMemo)((()=>x.length?x.reduce(((e,t)=>t.severity>=5?e+=1:e),0):0),[x]),R=(0,n.useMemo)((()=>m?"admin.php?page=jetpack-protect#/firewall":(0,u.w)()?"admin.php?page=jetpack#/settings":null),[m]),M=(0,n.useCallback)((()=>{h("jetpack_protect_card_tooltip_content_link_click",{page:"my-jetpack",feature:"jetpack-protect",location:"auto-firewall-tooltip",path:R})}),[h,R]),V=(0,n.useCallback)((()=>{h("jetpack_protect_card_tooltip_content_link_click",{page:"my-jetpack",feature:"jetpack-protect",location:"scan-threats-tooltip",path:p})}),[h,p]),z=m||(0,u.w)(),H=(0,n.useMemo)((()=>0===k?E?{title:__("Brute Force Protection: Active","jetpack-my-jetpack"),text:__("Brute Force Protection is actively blocking malicious login attempts. The number of blocked login attempts will display here soon!","jetpack-my-jetpack")}:{title:__("Brute Force Protection: Inactive","jetpack-my-jetpack"),text:R?(0,r.createInterpolateElement)((0,o.sprintf)(/* translators: %s is the location/page where the settings are located. Either "firewall settings" or "Jetpack settings". */ -__("Brute Force Protection is disabled and not actively blocking malicious login attempts. Go to %s to activate it.","jetpack-my-jetpack"),m?"firewall settings":"Jetpack settings"),{a:(0,n.createElement)("a",{href:R,onClick:M})}):__("Brute Force Protection is disabled and not actively blocking malicious login attempts.","jetpack-my-jetpack")}:E?void 0:z?{title:__("Brute Force Protection: Inactive","jetpack-my-jetpack"),text:R?(0,r.createInterpolateElement)((0,o.sprintf)(/* translators: %s is the location/page where the settings are located. Either "firewall settings" or "Jetpack settings". */ -__("Brute Force Protection is disabled and not actively blocking malicious login attempts. Go to %s to activate it.","jetpack-my-jetpack"),m?"firewall settings":"Jetpack settings"),{a:(0,n.createElement)("a",{href:R,onClick:M})}):__("Brute Force Protection is disabled and not actively blocking malicious login attempts.","jetpack-my-jetpack")}:{title:__("Brute Force Protection: Inactive","jetpack-my-jetpack"),text:__("For Brute Force Protection, activate the Jetpack or Protect plugin and enable it in settings.","jetpack-my-jetpack")}),[k,E,z,m,R,M]);return{pluginsThemesTooltip:{title:__("Improve site safety: secure plugins & themes","jetpack-my-jetpack"),text:(0,o.sprintf)(/* translators: %1$s the singular or plural of number of plugin(s), and %2$s is the singular or plural of the number of theme(s). */ -__("Your site has %1$s and %2$s lacking security measures. Improve your site’s safety by adding protection at no cost.","jetpack-my-jetpack"),(0,o.sprintf)(/* translators: %d is the number of plugins installed on the site. */ -_n("%d plugin","%d plugins",A,"jetpack-my-jetpack"),A),(0,o.sprintf)(/* translators: %d is the number of themes installed on the site. */ -_n("%d theme","%d themes",S,"jetpack-my-jetpack"),S))},scanThreatsTooltip:v&&y?{title:__("Auto-fix threats","jetpack-my-jetpack"),text:P?(0,r.createInterpolateElement)((0,o.sprintf)(/* translators: %1$s is the number of threats, %2$s is the numner of critical threats on the site, and %3$s is either "Scan" or "Protect" (the type of dashboard). */ -__("The last scan identified %1$s (%2$d critical). But don’t worry, Protect is usually able to “Auto-fix” threats, in most cases. Visit the %3$s dashboard to view more details.","jetpack-my-jetpack"),(0,o.sprintf)(/* translators: %d is the number of detected scan threats on the site. */ -_n("%d threat","%d threats",y,"jetpack-my-jetpack"),y),P,m?"Protect":"Scan"),{a:(0,n.createElement)("a",{href:p,onClick:V})}):(0,r.createInterpolateElement)((0,o.sprintf)(/* translators: %1$s is the singular or plural of number of detected threats on the site, and %2$s is either "Scan" or "Protect" (the type of dashboard). */ -__("The last scan identified %1$s. But don’t worry, Protect is usually able to “Auto-fix” threats, in most cases. Visit the %2$s dashboard to view more details.","jetpack-my-jetpack"),(0,o.sprintf)(/* translators: %d is the number of detected scan threats on the site. */ -_n("%d threat","%d threats",y,"jetpack-my-jetpack"),y),m?"Protect":"Scan"),{a:(0,n.createElement)("a",{href:p,onClick:V})})}:{title:__("Elevate your malware protection","jetpack-my-jetpack"),text:__("We’ve checked items against our database, and all appears well. For a more detailed, line-by-line malware scan, consider upgrading your plan.","jetpack-my-jetpack")},autoFirewallTooltip:(!v||_&&j)&&C?{title:__("Auto-Firewall: Inactive","jetpack-my-jetpack"),text:__("Upgrade required for activation. Manual rules available.","jetpack-my-jetpack")}:{title:__("Auto-Firewall: Inactive","jetpack-my-jetpack"),text:C?(0,r.createInterpolateElement)(__("You have Auto-Firewall disabled, visit your Protect firewall settings to activate.","jetpack-my-jetpack"),{a:(0,n.createElement)("a",{href:R,onClick:M})}):__("Auto-Firewall is disabled as your hosting provider already includes a built-in firewall with similar rules for your site.","jetpack-my-jetpack")},blockedLoginsTooltip:H}}},32917:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(31504),o=a(6176);const n=({admin:e,recommendation:t})=>React.createElement(o.A,{slug:r.D_.RELATED_POSTS,admin:e,recommendation:t})},30414:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var r=a(96072),o=a.n(r),n=a(28120),l=a.n(n),s=a(31504),i=a(6176);const c=e=>React.createElement(i.A,o()({slug:s.D_.SEARCH,showMenu:!0},e));c.propTypes={admin:l().bool};const u=c},37014:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(31504),o=a(6176);const n=({admin:e,recommendation:t})=>React.createElement(o.A,{slug:r.D_.SECURITY,showMenu:!0,admin:e,recommendation:t})},44169:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(31504),o=a(6176);const n=({admin:e,recommendation:t})=>React.createElement(o.A,{slug:r.D_.SITE_ACCELERATOR,admin:e,recommendation:t})},57769:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var r=a(96072),o=a.n(r),n=a(28120),l=a.n(n),s=a(31504),i=a(6176);const c=e=>React.createElement(i.A,o()({slug:s.D_.SOCIAL,showMenu:!0},e));c.propTypes={admin:l().bool};const u=c},4073:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var r=a(96072),o=a.n(r),n=a(28120),l=a.n(n),s=a(31504),i=a(6176);const c=e=>React.createElement(i.A,o()({slug:s.D_.STATS,showMenu:!0},e));c.propTypes={admin:l().bool};const u=c},7631:(e,t,a)=>{"use strict";a.d(t,{A:()=>g});var r=a(96072),o=a.n(r),n=a(47425),l=a(51609),s=a(38837),i=a(31504),c=a(74923),u=a(280),d=a(6176),v=a(12660),p=a(56544),m=a(83554),h=a(77167);a(20906);const f=i.D_.VIDEOPRESS,g=e=>{const{detail:t,isLoading:a}=(0,c.A)(f),{data:r,isLoading:g}=(0,u.A)({name:i.Yr,query:{path:i.PM}}),w=a||g,{status:b}=t||{},{activeAndNoVideos:y}=(0,p.A)(r),{videoCount:x=0,featuredStats:_}=r||{},k=b===s.hp.ACTIVE||b===s.hp.CAN_UPGRADE,E=(0,m.A)({isPluginActive:k,videoCount:x}),C=(0,l.useMemo)((()=>({stats_period:_?.period,video_count:x})),[_,x]),j=(0,l.useCallback)((()=>React.createElement(n.Ay,{variant:"body-small",className:"description"},E||t.description,k&&!x&&React.createElement(v.I,{className:"videopress-card__no-video-tooltip",tracksEventName:"videopress_card_tooltip_open",tracksEventProps:{location:"description",feature:"jetpack-videopress",status:b,video_count:x}},React.createElement("h3",null,y.title),React.createElement("p",null,y.text)))),[E,t.description,x,b,y,k]);return React.createElement(d.A,o()({},e,{slug:f,showMenu:!0,Description:j,customLoadTracks:C}),React.createElement(h.A,{isPluginActive:k,data:r,isLoading:w}))}},56544:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var r=a(3924),o=a(86087),n=a(27723),l=a(51609),s=a(64526);const __=n.__,_n=n._n,i=e=>{const{recordEvent:t}=(0,s.A)(),{featuredStats:a,videoCount:i=0}=e||{},{period:c}=a||{},u=(0,r.A)("jetpack-videopress-my-jetpack-tooltip"),d=(0,l.useCallback)((()=>{t("jetpack_videopress_card_tooltip_content_link_click",{location:"video_count",feature:"jetpack-videopress",page:"my-jetpack",path:u})}),[t,u]),v={title:__("The finest video for WordPress","jetpack-my-jetpack"),text:(0,o.createInterpolateElement)((0,n.sprintf)( -// translators: %d is the number of videos in the Media Library that could benefit from VideoPress. -_n("You have %d video in your Media Library that could benefit from VideoPress. Start hosting it today to unlock multiple benefits: enhanced quality add-free streaming, faster load times, customizable player controls.","You have %d videos in your Media Library that could benefit from VideoPress. Start hosting them today to unlock multiple benefits: enhanced quality add-free streaming, faster load times, customizable player controls.",i,"jetpack-my-jetpack"),i),{a:(0,l.createElement)("a",{href:u,target:"_blank",rel:"noreferrer noopener",onClick:d})})},p={title:__("The finest video for WordPress","jetpack-my-jetpack"),text:__("Give your videos a boost! 🚀 Try hosting with VideoPress for superior quality and performance.","jetpack-my-jetpack")},m={title:__("High-quality video, wherever your audience is","jetpack-my-jetpack"),text:__("Success! 🌟 Your video is live and gathering views.","jetpack-my-jetpack")},h=__("30-Day views","jetpack-my-jetpack"),f=__("Yearly views","jetpack-my-jetpack"),g=__("This metric shows your total video views over the past 30 days, compared to the previous 30 days.","jetpack-my-jetpack"),w=__("This metric shows your total video views over the past year.","jetpack-my-jetpack"),b={title:"day"===c?h:f,text:"day"===c?g:w},y=__("This metric shows your total video viewing time over the past 30 days, compared to the previous 30 days.","jetpack-my-jetpack"),x=__("This metric shows total video viewing time for the last year.","jetpack-my-jetpack");return{inactiveWithVideos:v,activeAndNoVideos:p,viewsWithoutPlan:m,viewsWithPlan:b,watchTime:{title:__("Total time watched","jetpack-my-jetpack"),text:"day"===c?y:x}}}},83554:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(27723),o=a(72434);const __=r.__,n=({isPluginActive:e,videoCount:t})=>!e&&t?(0,o.A)(__("Load your existing videos faster and without ads.","jetpack-my-jetpack")):e&&!t?(0,o.A)(__("Stunning-quality, ad-free video in the WordPress Editor. Begin by uploading your first video.","jetpack-my-jetpack")):""},77167:(e,t,a)=>{"use strict";a.d(t,{A:()=>g});var r=a(27723),o=a(51113),n=a(62510),l=a(66955),s=a(13022),i=a(31504),c=a(74923),u=a(56581),d=a(32753),v=a(12660),p=a(81434),m=a(10372),h=a(56544);a(20906);const __=r.__,f=({value:e,previousValue:t,formattedValue:a,formattedDifference:r,period:i})=>{const c=e>t;return React.createElement("div",{className:"videopress-card__value-section__value-container"},React.createElement("span",{className:"videopress-card__value-section__value"},a),e!==t&&"day"===i&&React.createElement("div",{className:(0,s.A)("videopress-card__value-section__previous-value",c?"increase":"decrease")},React.createElement(o.A,{size:18,icon:c?n.A:l.A}),React.createElement("span",null,r)))},g=({isPluginActive:e,data:t,isLoading:a})=>{const{detail:r}=(0,c.A)(i.D_.VIDEOPRESS),{status:o,hasPaidPlanForProduct:n}=r||{},{videoCount:l,featuredStats:g}=t||{},{inactiveWithVideos:w,viewsWithoutPlan:b,viewsWithPlan:y,watchTime:x}=(0,h.A)(t);if(!l&&!a)return null;const _={feature:"jetpack-videopress",has_paid_plan:n,status:o};if(!e)return React.createElement("div",{className:"videopress-card__value-section"},React.createElement("div",{className:"videopress-card__value-section__container"},React.createElement("span",{className:m.A.valueSectionHeading},__("Existing videos","jetpack-my-jetpack"),a?React.createElement(p.A,{height:"32px",width:"100%"}):React.createElement(React.Fragment,null,React.createElement(v.I,{className:"videopress-card__no-video-tooltip",tracksEventName:"videopress_card_tooltip_open",tracksEventProps:{location:"existing_videos",feature:"jetpack-videopress",status:o,video_count:l}},React.createElement("h3",null,w.title),React.createElement("p",null,w.text)))),React.createElement("span",{className:"videopress-card__video-count"},l)));const k=g?.data?.views?.current,E=g?.data?.watch_time?.current,C=g?.data?.views?.previous,j=g?.data?.watch_time?.previous,A=g?.period,S=Math.abs(k-C),P=Math.abs(E-j);if(!a&&(void 0===k||void 0===E))return null;const R=__("30-Day views","jetpack-my-jetpack"),M=__("Yearly views","jetpack-my-jetpack");return React.createElement("div",{className:"videopress-card__value-section"},React.createElement("div",{className:"videopress-card__value-section__container"},React.createElement("span",{className:(0,s.A)(m.A.valueSectionHeading,"videopress-card__value-section__heading")},"day"===A?R:M,React.createElement(v.I,{tracksEventName:"videopress_card_tooltip_open",tracksEventProps:{location:"views",current_views:k,previous_views:C,period:A,..._}},n||0===k?React.createElement(React.Fragment,null,React.createElement("h3",null,y.title),React.createElement("p",null,y.text)):React.createElement(React.Fragment,null,React.createElement("h3",null,b.title),React.createElement("p",null,b.text)))),a?React.createElement(p.A,{height:"32px",width:"100%"}):React.createElement(f,{value:k,previousValue:C,formattedValue:(0,u.A)(k),formattedDifference:(0,u.A)(S),period:A})),React.createElement("div",{className:"videopress-card__value-section__container"},React.createElement("span",{className:(0,s.A)(m.A.valueSectionHeading,"videopress-card__value-section__heading")},__("Total time watched","jetpack-my-jetpack"),React.createElement(v.I,{tracksEventName:"videopress_card_tooltip_open",tracksEventProps:{location:"watch_time",current_watch_time:E,previous_watch_time:j,period:A,..._}},React.createElement("h3",null,x.title),React.createElement("p",null,x.text))),a?React.createElement(p.A,{height:"32px",width:"100%"}):React.createElement(f,{value:E,previousValue:j,formattedValue:(0,d.A)(E),formattedDifference:(0,d.A)(P),period:A})))}},73614:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var r=a(56427),o=a(28120),n=a.n(o),l=a(51609),s=a.n(l);const i=({children:e,className:t,href:a,isLoading:o=!1,onClick:n,isPrimary:l=!0,disabled:i=!1})=>s().createElement(r.Button,{onClick:n,className:t,href:a,variant:l?"primary":"secondary",disabled:o||i},o?s().createElement(r.Spinner,null):e);i.propTypes={className:n().string,isLoading:n().bool,isPrimary:n().bool,disabled:n().bool};const c=i},14720:(e,t,a)=>{"use strict";a.d(t,{A:()=>j});var r=a(67397),o=a(47425),n=a(78478),l=a(42266),s=a(85879),i=a(39384),c=a(56427),u=a(27723),d=a(51113),v=a(45459),p=a(83883),m=a(13022),h=a(51609),f=a.n(h),g=a(74923),w=a(68242),b=a(64526),y=a(1524),x=a(81434),_=a(73614),k=a(21557);const __=u.__;function E({value:e,currency:t,isOld:a}){if(!e||!t)return null;const n=(0,r.vA)(e,t),l=(0,m.A)(k.A.price,{[k.A["is-old"]]:a});return f().createElement(o.Ay,{className:l,variant:"headline-medium",component:"p"},f().createElement(o.Ay,{component:"sup",variant:"title-medium"},n.symbol),n.integer,f().createElement(o.Ay,{component:"sup",variant:"title-medium"},n.fraction))}const C=({component:e,onClick:t,hasMainCheckoutStarted:a,isFetching:r,isFetchingSuccess:n,cantInstallPlugin:l,isPrimary:s,className:i,label:c})=>{const[u,d]=(0,h.useState)(!1);(0,h.useEffect)((()=>{r||n||d(!1)}),[r,n]);const v=a||u,p=a||l||r||n;return f().createElement(o.Ay,{component:e,onClick:()=>{d(!0),t()},isLoading:v,disabled:p,isPrimary:s,className:i,variant:"body"},c)},j=({slug:e,onClick:t,trackButtonClick:a=()=>{},className:r,preferProductName:j,supportingInfo:A,ctaButtonLabel:S=null,hideTOS:P=!1,quantity:R=null,highlightLastFeature:M=!1,isFetching:V=!1,isFetchingSuccess:z=!1,isUpsell:H=!1})=>{const{fileSystemWriteAccess:L="no",siteSuffix:O="",adminUrl:N="",myJetpackCheckoutUri:I=""}=(0,w.A$)(),{detail:B,isLoading:T}=(0,g.A)(e),{name:F,title:D,longDescription:G,features:U,disclaimers:q,pricingForUi:Z,isBundle:W,supportedProducts:$,hasPaidPlanForProduct:J,status:K,pluginSlug:Q,postCheckoutUrl:Y}=B,X=W&&H,ee="plugin_absent"===K&&"no"===L,{isFree:te,trialAvailable:ae,fullPricePerMonth:re,currencyCode:oe,discountPricePerMonth:ne,wpcomProductSlug:le,wpcomFreeProductSlug:se,introductoryOffer:ie,productTerm:ce}=Z||{},{recordEvent:ue}=(0,b.A)(),de=!te&&!J||null!=R,ve=(0,y.y)(),pe=(0,h.useCallback)((()=>Y||(ve||I)),[Y,ve,I])(),{run:me,hasCheckoutStarted:he}=(0,i.useProductCheckoutWorkflow)({productSlug:le,redirectUrl:pe,siteSuffix:O,adminUrl:N,connectAfterCheckout:!0,from:"my-jetpack",quantity:R,useBlogIdSuffix:!0}),{run:fe,hasCheckoutStarted:ge}=(0,i.useProductCheckoutWorkflow)({productSlug:se,redirectUrl:pe,siteSuffix:O,adminUrl:N,connectAfterCheckout:!0,from:"my-jetpack",quantity:R,useBlogIdSuffix:!0}),we=X?$.join("_plus_").split("_").map(((e,t)=>{if("plus"===e)return f().createElement(d.A,{className:k.A["plus-icon"],key:`icon-plugs${t}`,icon:v.A,size:14});const a=(0,n.Wy)(e);return f().createElement(a,{key:e,size:24})})):null;let be;be="month"===ie?.intervalUnit&&1===ie?.intervalCount?(0,u.sprintf)( -// translators: %s is the monthly price for a product -__("trial for the first month, then $%s /month, billed yearly","jetpack-my-jetpack"),re):"year"===ce?__("/month, paid yearly","jetpack-my-jetpack"):__("/month","jetpack-my-jetpack",0);const ye=(0,h.useCallback)((t=>{ue("jetpack_myjetpack_product_card_disclaimer_click",{id:t,product:e})}),[e,ue]);function xe({slug:e}){const t=(0,n.Wy)(e);return t?f().createElement("div",{className:k.A["product-icon"]},f().createElement(t,null)):null}const _e=(!X||X&&!J)&&ae,ke=F&&j?F:D,Ee=!X&&J?(0,u.sprintf)(/* translators: placeholder is product name. */ -__("Install %s","jetpack-my-jetpack"),ke):(0,u.sprintf)(/* translators: placeholder is product name. */ -__("Get %s","jetpack-my-jetpack"),ke),Ce=S||Ee,je=(0,h.useCallback)((()=>{a({cta_text:Ce}),t?.(me,B)}),[t,a,me,B,Ce]),Ae=(0,h.useCallback)((()=>{a({custom_slug:se,cta_text:"Start for free"}),t?.(fe,B)}),[t,a,fe,se,B]),Se=ie?.reason?re:ne;return f().createElement("div",{className:(0,m.A)(k.A.card,r,{[k.A["is-bundle-card"]]:X})},X&&f().createElement("div",{className:k.A["card-header"]},f().createElement(n.Gg,{className:k.A["product-bundle-icon"],size:16}),f().createElement(o.Ay,{variant:"label"},__("Popular upgrade","jetpack-my-jetpack"))),f().createElement("div",{className:k.A.container},X&&f().createElement("div",{className:k.A["product-bundle-icons"]},we),f().createElement(xe,{slug:e}),f().createElement(o.H3,null,ke),T?f().createElement(x.A,{width:"100%",height:"75px",spaceBelow:!0}):f().createElement(o.Ay,{mb:3},G),T?f().createElement(x.A,{width:"100%",height:"250px",spaceBelow:!0}):f().createElement("ul",{className:(0,m.A)(k.A.features,{[k.A["highlight-last-feature"]]:M})},U.map(((e,t)=>f().createElement(o.Ay,{component:"li",key:`feature-${t}`,variant:"body"},f().createElement(d.A,{icon:p.A,size:24}),e)))),T&&f().createElement(x.A,{width:"100%",height:"70px",spaceBelow:!0}),de&&Se&&f().createElement(f().Fragment,null,f().createElement("div",{className:k.A["price-container"]},f().createElement(E,{value:Se,currency:oe,isOld:!1}),Se0&&f().createElement("div",{className:k.A.disclaimers},q.map(((e,t)=>{const{text:a,link_text:r=null,url:n=null}=e;return f().createElement(o.Ay,{key:`disclaimer-${t}`,component:"p",variant:"body-small"},`${a} `,n&&r&&f().createElement(c.ExternalLink,{onClick:()=>ye(t),href:n,target:"_blank",rel:"noopener noreferrer"},r))}))),X&&J&&f().createElement("div",{className:k.A["product-has-required-plan"]},f().createElement(n.Nr,{size:36}),f().createElement(o.Ay,null,__("Active on your site","jetpack-my-jetpack"))),A&&f().createElement(o.Ay,{className:k.A["supporting-info"],variant:"body-extra-small"},A)))}},33574:(e,t,a)=>{"use strict";a.d(t,{A:()=>x});var r=a(79245),o=a(489),n=a(51112),l=a(47656),s=a(47425),i=a(39384),c=a(27723),u=a(28120),d=a.n(u),v=a(51609),p=a(488),m=a(74923),h=a(68242),f=a(1524),g=a(81434),w=a(68957);const __=c.__,b=({cantInstallPlugin:e,onProductButtonClick:t,detail:a,isFetching:l,isFetchingSuccess:s,tier:u,trackProductButtonClick:d,preferProductName:m,feature:w})=>{const[b,y]=(0,v.useState)(!1),{isLoading:x}=(0,p.V)(),{siteSuffix:_="",myJetpackCheckoutUri:k="",adminUrl:E=""}=(0,h.A$)(),{name:C,featuresByTier:j=[],title:A,postCheckoutUrl:S,postCheckoutUrlsByFeature:P,isBundle:R,hasPaidPlanForProduct:M}=a,V=a?.pricingForUi?.tiers||{},{callToAction:z,currencyCode:H,fullPrice:L,introductoryOffer:O,isFree:N,wpcomProductSlug:I,quantity:B=null}=V[u]||{};(0,v.useEffect)((()=>{l||s||y(!1)}),[l,s]);const T=(0,f.y)(),F=(0,v.useCallback)((()=>w&&P?.[w]?P[w]:S||(T||k)),[w,P,S,T,k])(),{run:D,hasCheckoutStarted:G}=(0,i.useProductCheckoutWorkflow)({from:"my-jetpack",productSlug:I,redirectUrl:F,connectAfterCheckout:!0,siteSuffix:_,useBlogIdSuffix:!0,quantity:B,adminUrl:E}),U=L?Math.round(L/12*100)/100:null,q=O?.costPerInterval?Math.round(O.costPerInterval/12*100)/100:null,Z="month"===O?.intervalUnit&&1===O?.intervalCount,W=Z?(0,c.sprintf)( -// translators: %s is the monthly price for a product -__("trial for the first month, then $%s /month, billed yearly","jetpack-my-jetpack"),U):__("/month, paid yearly","jetpack-my-jetpack",0),$=C&&m?C:A,J=!R&&M?(0,c.sprintf)(/* translators: placeholder is product name. */ -__("Install %s","jetpack-my-jetpack"),$):(0,c.sprintf)(/* translators: placeholder is product name. */ -__("Get %s","jetpack-my-jetpack"),$),K=z||(N?__("Start for Free","jetpack-my-jetpack"):J),Q=(0,v.useCallback)((()=>{y(!0),d({is_free_plan:N,cta_text:K}),t?.(D,a,u)}),[d,t,D,a,u,N,K]),Y=G||b,X=G||e||l||s,ee=!O?.reason;return React.createElement(r.N0,{primary:!N},React.createElement(r.i7,null,x&&React.createElement(g.A,{width:"100%",height:"70px",spaceBelow:!0}),N?React.createElement(o.A,{price:0,legend:"",currency:"USD",hidePriceFraction:!0}):!M&&React.createElement(o.A,{price:U,offPrice:ee?q:U,legend:W,currency:H,hideDiscountLabel:Z,showNotOffPrice:ee,hidePriceFraction:!0}),React.createElement(n.A,{fullWidth:!0,variant:N?"secondary":"primary",onClick:Q,isLoading:Y,disabled:X},K)),j.map(((e,t)=>{const{included:a,description:o,struck_description:n,info:l}=e.tiers[u],s=n||o?React.createElement(React.Fragment,null,n?React.createElement(React.Fragment,null,React.createElement("del",null,n)," "):null,o?React.createElement("strong",null,o):null):null;return React.createElement(r.eY,{key:t,isIncluded:a,label:s,tooltipTitle:l?.title,tooltipInfo:l?.content?React.createElement("div",{dangerouslySetInnerHTML:{__html:l?.content}}):null,tooltipClassName:l?.class})})))};b.propTypes={cantInstallPlugin:d().bool.isRequired,onProductButtonClick:d().func.isRequired,detail:d().object.isRequired,tier:d().string.isRequired,trackProductButtonClick:d().func.isRequired,preferProductName:d().bool.isRequired};const y=({slug:e,onProductButtonClick:t,trackProductButtonClick:a,isFetching:o,isFetchingSuccess:i,preferProductName:u,feature:d})=>{const{fileSystemWriteAccess:p="no"}=(0,h.A$)(),{detail:f,isLoading:y}=(0,m.A)(e),{description:x,featuresByTier:_=[],pluginSlug:k,status:E,tiers:C=[],hasPaidPlanForProduct:j,title:A}=f,S=f?.pricingForUi||{},P=[...Array(3).keys()],R="plugin_absent"===E&&"no"===p,M=R&&React.createElement(l.A,{level:"error",hideCloseButton:!0,title:React.createElement(s.Ay,null,(0,c.sprintf)( -// translators: %s is the plugin name. -__("Due to your server settings, we can't automatically install the plugin for you. Please manually install the %s plugin.","jetpack-my-jetpack"),A)),actions:[React.createElement(n.A,{key:"get",variant:"secondary",href:`https://wordpress.org/plugins/${k}`,isExternalLink:!0},__("Get plugin","jetpack-my-jetpack"))]}),V=(0,v.useMemo)((()=>_.map((e=>({name:e?.name,tooltipTitle:e?.info?.title,tooltipInfo:e?.info?.content?React.createElement("div",{dangerouslySetInnerHTML:{__html:e?.info?.content}}):null})))),[_]);return React.createElement(React.Fragment,null,M,y?React.createElement("div",{className:w.A.loadingBlockContainer},P.map(((e,t)=>React.createElement(g.A,{key:t,width:"100%",height:"700px"})))):React.createElement(r.Ay,{title:x,items:V},C.map(((e,r)=>j&&(e=>{if(y)return!1;const{isFree:t}=S?.[e]||{};return t})(e)?null:React.createElement(b,{key:r,tier:e,feature:d,detail:f,isFetching:o,isFetchingSuccess:i,onProductButtonClick:t,trackProductButtonClick:a,primary:0===r,cantInstallPlugin:R,preferProductName:u})))))};y.propTypes={slug:d().string.isRequired,onProductButtonClick:d().func.isRequired,trackProductButtonClick:d().func.isRequired,isFetching:d().bool.isRequired,preferProductName:d().bool.isRequired};const x=y},21022:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var r=a(47425),o=a(51113),n=a(83883),l=a(13022),s=a(81434),i=a(34291);const c=({features:e,isLoading:t,className:a})=>{if(!t&&!e?.length)return null;const c=[...Array(8).keys()];return React.createElement("ul",{className:(0,l.A)(i.A.features,a)},t?c.map(((e,t)=>React.createElement(s.A,{key:t,height:"25px",width:"100%",spaceBelow:!0}))):e.map(((e,t)=>React.createElement(r.Ay,{component:"li",key:`feature-${t}`,variant:"body"},React.createElement(o.A,{icon:n.A,size:24}),e))))}},46397:(e,t,a)=>{"use strict";a.d(t,{A:()=>d});var r=a(51112),o=a(39384),n=a(27723),l=a(51609),s=a(74923),i=a(68242),c=a(1524),u=a(34291);const __=n.__,d=({slug:e,buttonLabel:t,disabled:a,isExternalLink:n,href:d})=>{const{siteSuffix:v="",adminUrl:p="",myJetpackCheckoutUri:m=""}=(0,i.A$)(),{detail:h,isLoading:f}=(0,s.A)(e),{pricingForUi:g,postCheckoutUrl:w}=h,{wpcomProductSlug:b,tiers:y}=g||{},x="boost"!==e?b:y?.upgraded?.wpcomProductSlug,_=(0,c.y)(),k=(0,l.useCallback)((()=>w||(_||m)),[w,_,m])(),{run:E,hasCheckoutStarted:C}=(0,o.useProductCheckoutWorkflow)({productSlug:x,redirectUrl:k,siteSuffix:v,adminUrl:p,connectAfterCheckout:!0,from:"my-jetpack",quantity:null,useBlogIdSuffix:!0});return React.createElement(r.A,{variant:"primary",className:u.A["action-button"],isLoading:f||C,onClick:E,isExternalLink:n,href:d,disabled:a||f},t||__("Upgrade","jetpack-my-jetpack"))}},39368:(e,t,a)=>{"use strict";a.d(t,{A:()=>m});var r=a(51112),o=a(50723),n=a(75918),l=a(28509),s=a(47425),i=a(56427),c=a(27723),u=a(13022),d=a(51609),v=a(81434),p=a(34291);const __=c.__,m=e=>{const{title:t,description:a,className:c,children:m,customModalTrigger:h,modalTriggerButtonLabel:f,modalTriggerButtonVariant:g="primary",onOpen:w,onClose:b,onModalMainButtonClick:y,modalMainButton:x,isButtonDisabled:_,buttonHasExternalLink:k=!1,buttonHref:E,buttonLabel:C,secondaryButtonHasExternalLink:j=!0,secondaryButtonHref:A,secondaryColumn:S,isWithVideo:P=!0,additionalColumn:R=!1,priceComponent:M,isLoading:V}=e,[z,H]=(0,d.useState)(!1),L=(0,d.useCallback)((()=>{w?.(),H(!0)}),[w]),O=(0,d.useCallback)((()=>{b?.(),H(!1)}),[b]);if(!t||!f&&!h)return null;const N=h?(0,d.cloneElement)(h,{onClick:()=>{h.props.onClick?.(),L()}}):React.createElement(r.A,{variant:g,onClick:L},f),I=x&&(0,d.cloneElement)(x,{onClick:y,buttonLabel:C,disabled:_,isExternalLink:k,href:E});return React.createElement(React.Fragment,null,React.createElement(o.Ay,null,N,z&&React.createElement(i.Modal,{onRequestClose:O,className:(0,u.A)(p.A["component-product-interstitial-modal"],c),overlayClassName:p.A["component-product-interstitial-modal__overlay"]},React.createElement(n.A,{className:p.A.wrapper,horizontalSpacing:1,horizontalGap:2,fluid:!1},React.createElement(l.A,{sm:4,md:8,lg:4,className:p.A.primary},React.createElement("div",{className:p.A["primary-content"]},React.createElement("div",{className:p.A.header},React.createElement(s.Ay,{variant:"headline-small",className:p.A.title},t)),V?React.createElement(v.A,{height:"50px",width:"100%"}):a&&React.createElement(s.Ay,{variant:"body",className:p.A.description},a),m,V?React.createElement(v.A,{height:"100px",width:"100%"}):M&&React.createElement("div",{className:p.A["price-container"]},M)),React.createElement("div",{className:p.A["primary-footer"]},I,React.createElement(r.A,{variant:"link",isExternalLink:j,href:A},__("Learn more","jetpack-my-jetpack")))),React.createElement(l.A,{sm:4,md:R?4:8,lg:R?4:8,className:(0,u.A)(p.A.secondary,{[p.A["modal-with-video"]]:P})},S),R&&React.createElement(l.A,{sm:4,md:4,lg:4,className:p.A.additional},R)))))}},23116:(e,t,a)=>{"use strict";a.d(t,{A:()=>y});var r=a(96072),o=a.n(r),n=a(489),l=a(51112),s=a(3924),i=a(70116),c=a(77115),u=a(86087),d=a(27723),v=a(51609),p=a(74923),m=a(64526),h=a(81434),f=a(39368),g=a(46397),w=a(21022);const __=d.__,b=({slug:e,children:t,onOpen:a,onClose:r,description:i,features:c,...b})=>{const{recordEvent:y}=(0,m.A)(),{detail:x,isLoading:_}=(0,p.A)(e),{title:k,longDescription:E,features:C,pricingForUi:j}=x,A=i||E,S=c||C,P="boost"===e?j?.tiers?.upgraded:j;let R,M;"boost"===e?(R=P?.fullPrice/12,M=P?.discountPrice/12):(R=P?.fullPricePerMonth,M=P?.discountPricePerMonth);const{currencyCode:V,introductoryOffer:z,productTerm:H}=P||{};let L;L="month"===z?.intervalUnit&&1===z?.intervalCount?(0,d.sprintf)( -// translators: %s is the monthly price for a product -__("trial for the first month, then $%s /month, billed yearly","jetpack-my-jetpack"),R):"year"===H?__("/month, paid yearly","jetpack-my-jetpack"):__("/month","jetpack-my-jetpack",0);const O=z?.reason?R:M,N=_?React.createElement(h.A,{width:"100%",height:"100px"}):React.createElement(n.A,{currency:V,price:R,offPrice:O,showNotOffPrice:R>O,isNotConvenientPrice:!1,hidePriceFraction:!1,hideDiscountLabel:O>=R,legend:L}),I=(0,v.useCallback)((()=>{y("jetpack_modal_interstitial_open",{placement:"product-page",context:"my-jetpack",product_slug:e}),a?.()}),[y,e,a]),B=(0,v.useCallback)((()=>{y("jetpack_modal_interstitial_close",{placement:"product-page",context:"my-jetpack",product_slug:e}),r?.()}),[y,e,r]);let T=null;return"jetpack-ai"===e&&(T=React.createElement("p",null,(0,u.createInterpolateElement)(__("* Limits apply for high request capacity. Learn more about it here.","jetpack-my-jetpack"),{link:React.createElement(l.A,{href:(0,s.A)("ai-assistant-fair-usage-policy"),variant:"link",weight:"regular",size:"small",target:"_blank"})}))),React.createElement(f.A,o()({title:k,description:A,priceComponent:N,modalMainButton:React.createElement(g.A,{slug:e}),onOpen:I,onClose:B,isLoading:_},b),React.createElement(React.Fragment,null,(_||S)&&React.createElement(w.A,{isLoading:_,features:S}),T,t))},y=e=>{const t=new i.E;return React.createElement(c.Ht,{client:t},React.createElement(b,e))}},36092:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>O,C:()=>U,Gf:()=>Z,JM:()=>W,Ml:()=>J,NC:()=>$,QX:()=>F,Qt:()=>K,X7:()=>T,og:()=>G,qT:()=>D,t7:()=>q,wU:()=>N,xE:()=>I,yX:()=>B});var r=a(42947),o=a(75918),n=a(28509),l=a(47425),s=a(51112),i=a(85879),c=a(85985),u=a(86087),d=a(27723),v=a(13022),p=a(51609),m=a.n(p),h=a(29539),f=a(38837),g=a(41526),w=a(74923),b=a(68242),y=a(64526),x=a(13588),_=a(51870),k=a(33981),E=a(11617),C=a(14720),j=a(33574),A=a(58769),S=a(98019),P=a(25296),R=a(72279),M=a(17642),V=a(35148),z=a(59409),H=a(9851),L=a(5044);const __=d.__;function O({bundle:e,existingLicenseKeyUrl:t="admin.php?page=my-jetpack#/add-license",installsPlugin:a=!1,slug:h,supportingInfo:A,preferProductName:S=!1,children:P=null,imageContainerClassName:R="",ctaButtonLabel:M=null,hideTOS:V=!1,quantity:z=null,directCheckout:L=!1,highlightLastFeature:O=!1,ctaCallback:N=null,feature:I=null}){const{detail:B}=(0,w.A)(h),{detail:T}=(0,w.A)(e),{activate:F,isPending:D,isSuccess:G}=(0,g.A)(h);let U=B?.postActivationUrl||null;I&&B?.postActivationUrlsByFeature?.[I]&&(U=B.postActivationUrlsByFeature[I]);const{isUpgradableByBundle:q,pricingForUi:Z,isTieredPricing:W}=B,{recordEvent:$}=(0,y.A)(),{onClickGoBack:J}=(0,x.L)({slug:h}),{myJetpackCheckoutUri:K=""}=(0,b.A$)(),{siteIsRegistering:Q,handleRegisterSite:Y}=(0,_.A)({skipUserConnection:!0,redirectUri:U}),X=!V&&!!e,ee=B?.title,te=T?.title,ae=[/* translators: %s is the product name */ /* translators: %s is the product name */ -(0,d.sprintf)(__("Get %s","jetpack-my-jetpack"),ee),/* translators: %s is the bundled product name */ /* translators: %s is the bundled product name */ -(0,d.sprintf)(__("Get %s","jetpack-my-jetpack"),te)];(0,p.useEffect)((()=>{$("jetpack_myjetpack_product_interstitial_view",{product:h})}),[$,h]);const re=(0,p.useCallback)(((e=!1)=>e?"":"crm"===h?"jetpack-crm":Z?.tiers?.upgraded?.wpcomProductSlug?Z.tiers.upgraded.wpcomProductSlug:Z?.wpcomProductSlug),[h,Z]),oe=(0,p.useCallback)((t=>{const{customSlug:a=null,isFreePlan:r=!1,ctaText:o=null}=t||{};$("jetpack_myjetpack_product_interstitial_add_link_click",{product:a||(e??h),product_slug:re(r),cta_text:o})}),[$,h,re,e]),ne=(0,k.A)(f.NM.Home),le=(0,p.useCallback)(((e,t,a)=>{N?.({slug:h,product:t,tier:a}),t?.isBundle||L?e?.():F({productId:h},{onSettled:r=>{let o=r?.post_checkout_url||K;I&&r?.post_checkout_urls_by_feature?.[I]&&(o=r.post_checkout_urls_by_feature[I]);const n=t?.hasPaidPlanForProduct,l=a?t?.pricingForUi?.tiers?.[a]?.isFree:t?.pricingForUi?.isFree,s=!l&&!n||a&&t?.pricingForUi?.tiers?.[a]&&!l&&t?.isUpgradable;"zero-bs-crm"!==t.pluginSlug||n?s?e?.(null,o):Y().then((e=>{if(!e)return ne()})):window.location.href="https://jetpackcrm.com/pricing/"}})}),[K,I,N,h,L,F,Y,ne]);return m().createElement(r.A,{showHeader:!1,showBackground:!1,useInternalLinks:(0,c.pg)()},m().createElement(o.A,{horizontalSpacing:3,horizontalGap:3},m().createElement(n.A,{className:H.A["product-interstitial__header"]},m().createElement(E.A,{onClick:J}),t&&m().createElement(l.Ay,{variant:"body-small"},(0,u.createInterpolateElement)(__("Already have an existing plan or license key? Get started.","jetpack-my-jetpack"),{a:m().createElement(s.A,{className:H.A["product-interstitial__license-activation-link"],href:t,variant:"link"})}))),m().createElement(n.A,null,W?m().createElement(j.A,{slug:h,clickHandler:le,onProductButtonClick:le,trackProductButtonClick:oe,preferProductName:S,isFetching:D||Q,isFetchingSuccess:G,feature:I}):m().createElement(o.A,{className:q?null:H.A.container,horizontalSpacing:0,horizontalGap:0,fluid:!0},m().createElement(n.A,{sm:4,md:4,lg:7},m().createElement(C.A,{slug:h,trackButtonClick:oe,onClick:a?le:void 0,className:q?H.A.container:null,supportingInfo:A,preferProductName:S,ctaButtonLabel:M,hideTOS:V||X,quantity:z,highlightLastFeature:O,isFetching:D||Q,isFetchingSuccess:G})),m().createElement(n.A,{sm:4,md:4,lg:5,className:(0,v.A)(H.A.imageContainer,R)},e?m().createElement(C.A,{slug:e,trackButtonClick:oe,onClick:le,className:q?H.A.container:null,hideTOS:V||X,quantity:z,highlightLastFeature:O,isFetching:D,isFetchingSuccess:G,isUpsell:!0}):P))),m().createElement(n.A,null,X&&m().createElement("div",{className:H.A["tos-container"]},m().createElement(i.A,{multipleButtons:ae})))))}function N(){const e="anti-spam",{detail:t}=(0,w.A)(e),{isPluginActive:a}=t;return m().createElement(O,{slug:e,installsPlugin:!0,bundle:"security",existingLicenseKeyUrl:a?"admin.php?page=akismet-key-config":null,preferProductName:!0})}function I(){return m().createElement(O,{slug:"backup",installsPlugin:!0,bundle:"security"})}function B(){return m().createElement(O,{slug:"boost",installsPlugin:!0},m().createElement("img",{src:A,alt:"Boost"}))}function T(){return m().createElement(O,{slug:"crm",installsPlugin:!0},m().createElement("img",{src:P,alt:"CRM"}))}function F(){return m().createElement(O,{slug:"extras",installsPlugin:!0},m().createElement("img",{src:R,alt:"Extras"}))}function D(){const{feature:e}=(0,h.g)();return m().createElement(O,{slug:"protect",feature:e,installsPlugin:!0})}function G(){return m().createElement(O,{slug:"scan",installsPlugin:!0,bundle:"security"})}function U(){return m().createElement(O,{slug:"social",installsPlugin:!0,bundle:"growth"})}function q(){const{detail:e}=(0,w.A)("search");return m().createElement(O,{slug:"search",installsPlugin:!0,supportingInfo:(e?.pricingForUi?.trialAvailable?__("Jetpack Search Free supports up to 5,000 records and 500 search requests per month for free. You will be asked to upgrade to a paid plan if you exceed these limits for three continuous months.","jetpack-my-jetpack"):"")+__("For the paid plan, pricing will automatically adjust based on the number of records in your search index. If you grow into a new pricing tier, we'll let you know before your next billing cycle.","jetpack-my-jetpack")},m().createElement("img",{src:M,alt:"Search"}))}function Z(){return m().createElement(O,{slug:"stats",directCheckout:!0,installsPlugin:!0,ctaButtonLabel:__("Get Stats","jetpack-my-jetpack"),bundle:"growth"})}function W(){return m().createElement(O,{slug:"videopress",installsPlugin:!0},m().createElement("img",{src:L,alt:"VideoPress"}))}function $(){return m().createElement(O,{slug:"security",installsPlugin:!0},m().createElement("img",{src:V,alt:"Security"}))}function J(){return m().createElement(O,{slug:"growth",installsPlugin:!0},m().createElement("img",{src:z,alt:"Growth"}))}function K(){return m().createElement(O,{slug:"complete",installsPlugin:!0},m().createElement("img",{src:S,alt:"Complete"}))}},93418:(e,t,a)=>{"use strict";a.d(t,{A:()=>h});var r=a(51112),o=a(86087),n=a(27723),l=a(46941),s=a.n(l),i=a(51609),c=a(36092),u=a(74923),d=a(51870),v=a(19923),p=a(67691);const __=n.__,m=s()("my-jetpack:product-interstitial:jetpack-ai");function h(){const{detail:e}=(0,u.A)("jetpack-ai");m(e);const t=e?.aiAssistantFeature?.tierPlansEnabled||!1,{userConnectionData:a}=(0,d.A)(),{currentUser:n}=a,{wpcomUser:l}=n,s=`jetpack_ai_optfree_${n?.id||0}_${n?.blogId||0}_${l?.ID||0}`,h=(0,i.useCallback)((({tier:e})=>{"free"===e&&localStorage.setItem(s,!0)}),[s]),f=(0,o.createInterpolateElement)(__("* Limits apply for high request capacity. Learn more about it here.","jetpack-my-jetpack"),{link:React.createElement(r.A,{href:"https://jetpack.com/redirect/?source=ai-assistant-fair-usage-policy",variant:"link",weight:"regular",size:"small",target:"_blank"})});return React.createElement(c.Ay,{slug:"jetpack-ai",installsPlugin:!0,imageContainerClassName:p.A.aiImageContainer,hideTOS:!0,directCheckout:!1,ctaCallback:h,ctaButtonLabel:__("Upgrade","jetpack-my-jetpack"),supportingInfo:t?null:f},React.createElement("img",{src:v,alt:"Jetpack AI"}))}},8823:(e,t,a)=>{"use strict";a.d(t,{A:()=>V});var r=a(3924),o=a(42947),n=a(75918),l=a(28509),s=a(67142),i=a(78478),c=a(47656),u=a(85985),d=a(56427),v=a(86087),p=a(27723),m=a(51113),h=a(83883),f=a(10748),g=a(45459),w=a(13022),b=a(46941),y=a.n(b),x=a(51609),_=a(74923),k=a(64526),E=a(13588),C=a(51870),j=a(33981),A=a(11617),S=a(81434),P=a(23116),R=a(67691);const __=p.__,M=y()("my-jetpack:product-interstitial:jetpack-ai-product-page");function V(){const{onClickGoBack:e}=(0,E.L)("jetpack-ai"),{detail:t,isLoading:a}=(0,_.A)("jetpack-ai"),{description:b,aiAssistantFeature:y}=t,[V,z]=(0,x.useState)(!1),{isRegistered:H}=(0,C.A)(),L=__("Generate and edit content faster with Jetpack AI Assistant","jetpack-my-jetpack"),O=__("Create featured images with one click","jetpack-my-jetpack"),N=__("Optimize your titles effortlessly","jetpack-my-jetpack"),I=__("Build forms using prompts","jetpack-my-jetpack"),B=__("Get feedback on posts","jetpack-my-jetpack"),T=__("Make your writing easy to read","jetpack-my-jetpack");M(y);const{requestsCount:F=0,currentTier:D,nextTier:G,usagePeriod:U,isOverLimit:q,tierPlansEnabled:Z}=y||{},W=0===D?.value,$=1===D?.value,J=!W&&!$||$&&!Z,K=!$&&J&&!G&&D,Q=W&&20-F>=0?20-F:0,Y=J&&!W&&U,X=J||$,ee=(0,r.A)("jetpack-ai-tiers-more-requests-contact"),te=(0,r.A)("jetpack-ai-feedback"),ae=(0,r.A)("jetpack-ai-product-page-featured-image-link"),re=(0,r.A)("jetpack-ai-product-page-title-optimization-link"),oe=(0,r.A)("jetpack-ai-product-page-form-link"),ne=(0,r.A)("jetpack-ai-product-page-content-feedback-link"),le=(0,r.A)("jetpack-ai-product-page-breve"),se=H?"post-new.php?use_ai_block=1&_wpnonce="+window?.jetpackAi?.nonce:"#/connection",ie=__("Create new post","jetpack-my-jetpack"),ce=__("Connect to Jetpack to start using the AI Assistant","jetpack-my-jetpack"),ue=q&&J,de=q&&W,ve=D?.limit||0,pe=U?.requestsCount||0,me=Z?ve-pe>=0?ve-pe:0:pe,he=__("Requests this month","jetpack-my-jetpack"),fe=__("Requests for this month","jetpack-my-jetpack"),ge=__("You've reached your request limit for this month","jetpack-my-jetpack"),we=__("You've used all your free requests","jetpack-my-jetpack"),be=(0,p.sprintf)( -// translators: %d is the number of days left in the month. -__("Wait for %d days to reset your limit, or upgrade now to a higher tier for additional requests and keep your work moving forward.","jetpack-my-jetpack"),Math.floor((new Date(U?.nextStart||null)-new Date)/864e5)),ye=(0,v.createInterpolateElement)((0,p.sprintf)( -// translators: %d is the number of days left in the month. -__("Wait for %d days to reset your limit, per our fair usage policy.","jetpack-my-jetpack"),Math.floor((new Date(U?.nextStart||null)-new Date)/864e5)),{link:React.createElement("a",{href:(0,r.A)("ai-product-page-fair-usage-policy"),target:"_blank",rel:"noreferrer"})}),xe=Z?be:ye,_e=__("Reach for More with Jetpack AI! Upgrade now for additional requests and keep your momentum going.","jetpack-my-jetpack"),ke=(0,p.sprintf)( -// translators: %s is the next upgrade value -__("Get %s requests","jetpack-my-jetpack"),G?.value||"more"),Ee=__("Upgrade now","jetpack-my-jetpack"),Ce=(0,j.A)("/add-jetpack-ai"),{recordEvent:je}=(0,k.A)(),Ae=(0,x.useCallback)((()=>{je("jetpack_ai_upgrade_contact_us",{placement:"product-page"})}),[je]),Se=(0,x.useCallback)((()=>{je("jetpack_ai_upgrade_button",{placement:"product-page",context:"my-jetpack",current_tier_slug:D?.slug||"",requests_count:F}),Ce()}),[je,F,D,Ce]),Pe=(0,x.useCallback)((()=>{je("jetpack_ai_upgrade_button",{placement:"product-page",context:"my-jetpack",current_tier_slug:D?.slug||"",requests_count:F})}),[je,F,D]),Re=(0,x.useCallback)((()=>z(!1)),[]);(0,x.useEffect)((()=>{je("jetpack_ai_myjetpack_product_page_view",{current_tier_slug:D?.slug||"",requests_count:F})}),[F,D?.slug,je]),(0,x.useEffect)((()=>{z(ue||de)}),[ue,de]);const Me=React.createElement("span",{className:R.A["product-interstitial__new-badge"]},__("New","jetpack-my-jetpack")," ");return React.createElement(o.A,{showHeader:!1,showBackground:!0,useInternalLinks:(0,u.pg)()},React.createElement(n.A,{fluid:!0,horizontalSpacing:3,horizontalGap:2},React.createElement(l.A,{className:(0,w.A)(R.A["product-interstitial__section"])},React.createElement("div",{className:R.A["product-interstitial__section-wrapper-wide"]},React.createElement(A.A,{onClick:e})),React.createElement("div",{className:(0,w.A)(R.A["product-interstitial__section-wrapper-wide"],R.A["product-interstitial__product-header"])},React.createElement(s.A,null),React.createElement("div",{className:R.A["product-interstitial__product-header-name"]},__("AI Assistant","jetpack-my-jetpack")))),React.createElement(l.A,{className:(0,w.A)(R.A["product-interstitial__section"])},React.createElement("div",{className:R.A["product-interstitial__hero-section"]},React.createElement("div",{className:R.A["product-interstitial__hero-content"]},a?React.createElement(S.A,{height:"80px",width:"100%"}):React.createElement("h1",{className:R.A["product-interstitial__hero-heading"]},b),React.createElement("div",{className:R.A["product-interstitial__hero-sub-heading"]},__("Draft, transform, translate, and alter both new and existing content leveraging the capabilities of AI, inside the block editor.","jetpack-my-jetpack")),!K&&!$&&React.createElement(React.Fragment,null,React.createElement(P.A,{slug:"jetpack-ai",onOpen:Pe,modalTriggerButtonLabel:__("Get more requests","jetpack-my-jetpack"),buttonLabel:__("Upgrade","jetpack-my-jetpack"),isWithVideo:!0,secondaryColumn:React.createElement("div",null,React.createElement("iframe",{width:"621",height:"447",src:"https://video.wordpress.com/embed/whyeZF1t?cover=1&autoPlay=0&controls=0&loop=1&muted=0&persistVolume=1&playsinline=0&preloadContent=metadata&useAverageColor=1&posterUrl=https%3A%2F%2Fjetpack.com%2Fwp-content%2Fuploads%2F2024%2F09%2Fthumbnail-1.png&hd=1",allowFullScreen:!0,allow:"clipboard-write",title:__("Discover Jetpack AI","jetpack-my-jetpack")}),React.createElement("script",{src:"https://videopress.com/videopress-iframe.js"})),secondaryButtonHref:"https://jetpack.com/ai/"})),K&&React.createElement(d.Button,{variant:"primary",onClick:Ae,href:ee,className:R.A["product-interstitial__hero-cta"]},__("Contact Us","jetpack-my-jetpack"))),React.createElement("div",{className:R.A["product-interstitial__hero-side"]},Y&&React.createElement(d.Card,{className:R.A["stats-card"]},React.createElement(i.KH,null),React.createElement("div",null,React.createElement("div",{className:R.A["product-interstitial__stats-card-text"]},Z?fe:he),React.createElement("div",{className:R.A["product-interstitial__stats-card-value"]},me))),X&&React.createElement(d.Card,{className:R.A["stats-card"]},React.createElement(m.A,{icon:h.A,className:R.A["stats-card-icon-check"]}),React.createElement("div",null,React.createElement("div",{className:R.A["product-interstitial__stats-card-text"]},__("All-time requests used","jetpack-my-jetpack")),React.createElement("div",{className:R.A["product-interstitial__stats-card-value"]},F))),W&&React.createElement(d.Card,{className:R.A["stats-card"]},React.createElement(m.A,{icon:h.A,className:R.A["stats-card-icon-check"]}),React.createElement("div",null,React.createElement("div",{className:R.A["product-interstitial__stats-card-text"]},__("Free requests available","jetpack-my-jetpack")),React.createElement("div",{className:R.A["product-interstitial__stats-card-value"]},Q)))))),React.createElement(l.A,{className:R.A["product-interstitial__section"]},React.createElement("div",{className:R.A["product-interstitial__section-wrapper"]},V&&React.createElement("div",{className:R.A["product-interstitial__ai-notice"]},React.createElement(c.A,{actions:Z?[React.createElement(d.Button,{key:"upgrade",isPrimary:!0,onClick:Se},ue?ke:Ee)]:{},onClose:Re,level:ue?"warning":"error",title:ue?ge:we},ue?xe:_e)),React.createElement("h2",{className:R.A["product-interstitial__section-heading"]},__("AI Features","jetpack-my-jetpack")),React.createElement("p",{className:R.A["product-interstitial__section-sub-heading"]},__("Discover all the Jetpack features powered by AI","jetpack-my-jetpack")),React.createElement("div",{className:R.A["product-interstitial__usage-videos"]},React.createElement("div",{className:R.A["product-interstitial__usage-videos-item"]},React.createElement("div",{className:R.A["product-interstitial__usage-videos-video"]},React.createElement("iframe",{width:"280",height:"157",src:"https://videopress.com/embed/2OU6GCMs?posterUrl=https%3A%2F%2Fjetpackme.files.wordpress.com%2F2024%2F07%2Fjetpack-ai-breve-poster.png%3Fw%3D560",allowFullScreen:!0,allow:"clipboard-write",title:T}),React.createElement("script",{src:"https://videopress.com/videopress-iframe.js"})),React.createElement("div",{className:R.A["product-interstitial__usage-videos-content"]},React.createElement("div",{className:R.A["product-interstitial__usage-videos-heading"]},T,Me),React.createElement("div",{className:R.A["product-interstitial__usage-videos-text"]},__("Simplify your writing with AI suggestions to fix long sentences and complex words and sound more confident. As you type, check your Reading grade score to make sure it suits your audience.","jetpack-my-jetpack")),React.createElement(d.Button,{className:R.A["product-interstitial__usage-videos-link"],icon:f.A,target:"_blank",href:le},__("Learn more","jetpack-my-jetpack")))),React.createElement("div",{className:R.A["product-interstitial__usage-videos-item"]},React.createElement("div",{className:R.A["product-interstitial__usage-videos-video"]},React.createElement("iframe",{width:"280",height:"157",src:"https://videopress.com/embed/GdXmtVtW?posterUrl=https%3A%2F%2Fjetpackme.files.wordpress.com%2F2024%2F02%2Fimage-37.png%3Fw%3D560",allowFullScreen:!0,allow:"clipboard-write",title:L}),React.createElement("script",{src:"https://videopress.com/videopress-iframe.js"})),React.createElement("div",{className:R.A["product-interstitial__usage-videos-content"]},React.createElement("div",{className:R.A["product-interstitial__usage-videos-heading"]},L),React.createElement("div",{className:R.A["product-interstitial__usage-videos-text"]},__("Use the AI block to generate content, or use our AI edit options in existing blocks. Use prompts or any of our recommended actions.","jetpack-my-jetpack")),React.createElement(d.Button,{className:R.A["product-interstitial__usage-videos-link"],icon:g.A,href:se},H?ie:ce))),React.createElement("div",{className:R.A["product-interstitial__usage-videos-item"]},React.createElement("div",{className:R.A["product-interstitial__usage-videos-video"]},React.createElement("iframe",{width:"280",height:"157",src:"https://videopress.com/embed/HJCf8cXc?posterUrl=https%3A%2F%2Fjetpackme.files.wordpress.com%2F2024%2F02%2Fone-click-featured-images.png%3Fw%3D560",allowFullScreen:!0,allow:"clipboard-write",title:O}),React.createElement("script",{src:"https://videopress.com/videopress-iframe.js"})),React.createElement("div",{className:R.A["product-interstitial__usage-videos-content"]},React.createElement("div",{className:R.A["product-interstitial__usage-videos-heading"]},O),React.createElement("div",{className:R.A["product-interstitial__usage-videos-text"]},__("Create featured images to illustrate your content and make it more engaging with just one click. Use prompts to generate adjusted new featured images.","jetpack-my-jetpack")),React.createElement(d.Button,{className:R.A["product-interstitial__usage-videos-link"],icon:f.A,target:"_blank",href:ae},__("Learn about featured images","jetpack-my-jetpack")))),React.createElement("div",{className:R.A["product-interstitial__usage-videos-item"]},React.createElement("div",{className:R.A["product-interstitial__usage-videos-video"]},React.createElement("iframe",{width:"280",height:"157",src:"https://videopress.com/embed/xjy2weWj?posterUrl=https%3A%2F%2Fjetpackme.files.wordpress.com%2F2024%2F06%2Fjetpack-ai-title-optimization.png%3Fw%3D560",allowFullScreen:!0,allow:"clipboard-write",title:N}),React.createElement("script",{src:"https://videopress.com/videopress-iframe.js"})),React.createElement("div",{className:R.A["product-interstitial__usage-videos-content"]},React.createElement("div",{className:R.A["product-interstitial__usage-videos-heading"]},N),React.createElement("div",{className:R.A["product-interstitial__usage-videos-text"]},__("Use AI to generate title suggestions based on your content, each with an explanation of why it works better. Save time and create engaging, SEO-friendly titles.","jetpack-my-jetpack")),React.createElement(d.Button,{className:R.A["product-interstitial__usage-videos-link"],icon:f.A,target:"_blank",href:re},__("Learn about Jetpack SEO tools","jetpack-my-jetpack")))),React.createElement("div",{className:R.A["product-interstitial__usage-videos-item"]},React.createElement("div",{className:R.A["product-interstitial__usage-videos-video"]},React.createElement("iframe",{width:"280",height:"157",src:"https://videopress.com/embed/OMI3zqid?posterUrl=https%3A%2F%2Fjetpackme.files.wordpress.com%2F2024%2F02%2Fimage-38.png%3Fw%3D560",allowFullScreen:!0,allow:"clipboard-write",title:I}),React.createElement("script",{src:"https://videopress.com/videopress-iframe.js"})),React.createElement("div",{className:R.A["product-interstitial__usage-videos-content"]},React.createElement("div",{className:R.A["product-interstitial__usage-videos-heading"]},I),React.createElement("div",{className:R.A["product-interstitial__usage-videos-text"]},__("Quickly build forms using the Jetpack Forms block and AI. Use prompts to describe your form and AI will generate the elements in a few seconds.","jetpack-my-jetpack")),React.createElement(d.Button,{className:R.A["product-interstitial__usage-videos-link"],icon:f.A,target:"_blank",href:oe},__("Learn about forms","jetpack-my-jetpack")))),React.createElement("div",{className:R.A["product-interstitial__usage-videos-item"]},React.createElement("div",{className:R.A["product-interstitial__usage-videos-video"]},React.createElement("iframe",{width:"280",height:"157",src:"https://videopress.com/embed/0vb0OJm7?posterUrl=https%3A%2F%2Fjetpackme.files.wordpress.com%2F2024%2F02%2Fimage-39.png%3Fw%3D560",allowFullScreen:!0,allow:"clipboard-write",title:B}),React.createElement("script",{src:"https://videopress.com/videopress-iframe.js"})),React.createElement("div",{className:R.A["product-interstitial__usage-videos-content"]},React.createElement("div",{className:R.A["product-interstitial__usage-videos-heading"]},B),React.createElement("div",{className:R.A["product-interstitial__usage-videos-text"]},__("Get instant feedback on your post before publishing. AI will read your post and highlight opportunities to improve your publication.","jetpack-my-jetpack")),React.createElement(d.Button,{className:R.A["product-interstitial__usage-videos-link"],icon:f.A,target:"_blank",href:ne},__("Learn more","jetpack-my-jetpack"))))))),React.createElement(l.A,{className:R.A["product-interstitial__section"]},React.createElement("div",{className:R.A["product-interstitial__section-wrapper"]},React.createElement("div",{className:R.A["product-interstitial__section-emoji"]},"👋"),React.createElement("h2",{className:R.A["product-interstitial__section-heading"]},__("Do you have any feedback?","jetpack-my-jetpack")),React.createElement("p",{className:R.A["product-interstitial__section-sub-heading"]},__("Help us improving the accuracy of our results and feel free to give us ideas for future implementations and improvements.","jetpack-my-jetpack")," ",React.createElement(d.ExternalLink,{href:te},__("Share your feedback!","jetpack-my-jetpack")))))))}},38802:(e,t,a)=>{"use strict";a.d(t,{Ay:()=>l,SF:()=>r,p4:()=>s,su:()=>o,wT:()=>n});const r="title",o="status",n="category",l="description",s="icon"},54972:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r=()=>React.createElement("svg",{className:"table-view-icon",width:"64",height:"64",viewBox:"0 0 64 64",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement("rect",{width:"64",height:"64",rx:"8",fill:"#003010"}),React.createElement("g",{clipPath:"url(#clip0_4668_7926)"},React.createElement("path",{d:"M34.214 21.6924L40.7619 38.9784C41.3267 40.4574 42.1943 40.9935 43.6778 41.1189C43.732 41.1213 43.7851 41.1349 43.8339 41.1588C43.8827 41.1828 43.926 41.2164 43.9613 41.2578C43.9966 41.2992 44.023 41.3474 44.039 41.3995C44.055 41.4516 44.0602 41.5063 44.0543 41.5605C44.0565 41.6164 44.0476 41.6722 44.0282 41.7247C44.0087 41.7771 43.9791 41.8252 43.9411 41.866C43.903 41.9069 43.8572 41.9398 43.8064 41.9628C43.7556 41.9858 43.7008 41.9985 43.6451 42.0001H36.473C36.415 42.0015 36.3574 41.9911 36.3035 41.9695C36.2496 41.948 36.2007 41.9157 36.1596 41.8746C36.1185 41.8335 36.0861 41.7845 36.0643 41.7305C36.0426 41.6765 36.032 41.6187 36.0331 41.5605C36.0288 41.504 36.0363 41.4473 36.055 41.3938C36.0736 41.3403 36.1031 41.2913 36.1415 41.2499C36.18 41.2084 36.2265 41.1753 36.2783 41.1528C36.33 41.1302 36.3859 41.1187 36.4423 41.1189C37.1626 41.1189 37.979 40.9299 37.979 40.0486C37.9727 39.6811 37.8977 39.3181 37.758 38.9784L36.1865 34.7899C36.1231 34.6009 36.0924 34.5372 35.9042 34.5372H29.9189C28.9777 34.5372 27.8175 34.5372 27.2834 35.7348L25.851 38.9784C25.7054 39.2727 25.6198 39.5933 25.5994 39.9213C25.5994 41.0552 27.0747 41.1189 27.8502 41.1189C27.9066 41.1187 27.9625 41.1302 28.0142 41.1528C28.066 41.1753 28.1126 41.2084 28.151 41.2499C28.1894 41.2913 28.2189 41.3403 28.2376 41.3938C28.2562 41.4473 28.2637 41.504 28.2595 41.5605C28.2606 41.6188 28.2499 41.6767 28.228 41.7307C28.2061 41.7847 28.1735 41.8337 28.1322 41.8747C28.0908 41.9156 28.0416 41.9477 27.9875 41.9689C27.9334 41.9901 27.8755 42 27.8175 41.998H21.4537C21.3958 41.9995 21.3382 41.989 21.2845 41.9674C21.2307 41.9459 21.1819 41.9135 21.1409 41.8724C21.1 41.8313 21.0678 41.7823 21.0463 41.7283C21.0248 41.6744 21.0144 41.6166 21.0158 41.5584C21.0116 41.502 21.019 41.4452 21.0377 41.3917C21.0563 41.3383 21.0858 41.2893 21.1242 41.2478C21.1627 41.2063 21.2092 41.1733 21.261 41.1507C21.3128 41.1282 21.3686 41.1166 21.425 41.1168C22.9618 41.0223 23.4713 40.2951 24.0585 38.9763L31.6173 22.3518C31.9631 21.6266 32.7161 20.998 33.4057 20.998C33.9009 21.0001 34.0585 21.2836 34.214 21.6924ZM28.4845 32.9637C28.4466 33.0197 28.4247 33.0851 28.4211 33.1527C28.4211 33.2164 28.4845 33.2472 28.6094 33.2472H34.8197C35.2576 33.2472 35.4458 33.1527 35.4458 32.8692C35.4452 32.727 35.4131 32.5866 35.3517 32.4584L33.6267 27.7974C33.2175 26.7272 32.6241 25.3118 32.4358 24.1451C32.4358 24.0834 32.4031 24.0506 32.3724 24.0506C32.3417 24.0506 32.311 24.0834 32.311 24.1451C32.0755 24.9473 31.7708 25.7274 31.4004 26.4766L28.4845 32.9637Z",fill:"#0CED57"}),React.createElement("path",{d:"M34.214 21.6924L40.7619 38.9784C41.3267 40.4574 42.1943 40.9935 43.6778 41.1189C43.732 41.1213 43.7851 41.1349 43.8339 41.1589C43.8827 41.1828 43.926 41.2164 43.9613 41.2578C43.9966 41.2992 44.023 41.3474 44.039 41.3995C44.055 41.4516 44.0602 41.5063 44.0543 41.5605C44.0565 41.6164 44.0476 41.6722 44.0282 41.7247C44.0087 41.7771 43.9791 41.8252 43.9411 41.866C43.903 41.9069 43.8572 41.9398 43.8064 41.9628C43.7556 41.9858 43.7008 41.9985 43.6451 42.0001H36.473C36.415 42.0015 36.3574 41.9911 36.3035 41.9695C36.2496 41.948 36.2007 41.9157 36.1596 41.8746C36.1185 41.8335 36.0861 41.7845 36.0643 41.7305C36.0426 41.6766 36.032 41.6187 36.0331 41.5605C36.0288 41.504 36.0363 41.4473 36.055 41.3938C36.0736 41.3403 36.1031 41.2913 36.1415 41.2499C36.18 41.2084 36.2265 41.1753 36.2783 41.1528C36.33 41.1302 36.3859 41.1187 36.4423 41.1189C37.1626 41.1189 37.979 40.9299 37.979 40.0486C37.9727 39.6811 37.8977 39.3181 37.758 38.9784L36.1865 34.7899C36.1231 34.6009 36.0924 34.5372 35.9042 34.5372H29.9189C28.9777 34.5372 27.8175 34.5372 27.2834 35.7348L25.851 38.9784C25.7054 39.2727 25.6198 39.5933 25.5994 39.9213C25.5994 41.0552 27.0747 41.1189 27.8502 41.1189C27.9066 41.1187 27.9625 41.1302 28.0142 41.1528C28.066 41.1753 28.1126 41.2084 28.151 41.2499C28.1894 41.2913 28.2189 41.3403 28.2376 41.3938C28.2562 41.4473 28.2637 41.504 28.2595 41.5605C28.2606 41.6188 28.2499 41.6767 28.228 41.7307C28.2061 41.7847 28.1735 41.8337 28.1322 41.8747C28.0908 41.9156 28.0416 41.9477 27.9875 41.9689C27.9334 41.9901 27.8755 42 27.8175 41.998H21.4537C21.3958 41.9995 21.3382 41.989 21.2845 41.9675C21.2307 41.9459 21.1819 41.9135 21.1409 41.8724C21.1 41.8313 21.0678 41.7823 21.0463 41.7283C21.0248 41.6744 21.0144 41.6166 21.0158 41.5584C21.0116 41.502 21.019 41.4452 21.0377 41.3918C21.0563 41.3383 21.0858 41.2893 21.1242 41.2478C21.1627 41.2063 21.2092 41.1733 21.261 41.1507C21.3128 41.1282 21.3686 41.1166 21.425 41.1168C22.9618 41.0223 23.4713 40.2951 24.0585 38.9763L31.6173 22.3518C31.9631 21.6266 32.7161 20.998 33.4057 20.998C33.9009 21.0001 34.0585 21.2836 34.214 21.6924ZM28.4845 32.9637C28.4466 33.0197 28.4247 33.0851 28.4211 33.1527C28.4211 33.2164 28.4845 33.2472 28.6094 33.2472H34.8197C35.2576 33.2472 35.4458 33.1527 35.4458 32.8692C35.4452 32.727 35.4131 32.5866 35.3517 32.4584L33.6267 27.7974C33.2175 26.7272 32.6241 25.3118 32.4358 24.1451C32.4358 24.0834 32.4031 24.0506 32.3724 24.0506C32.3417 24.0506 32.311 24.0834 32.311 24.1451C32.0755 24.9473 31.7708 25.7274 31.4004 26.4766L28.4845 32.9637Z",fill:"#0CED57"}),React.createElement("path",{d:"M46.0082 32.2219C46.0082 33.0312 45.5519 33.4893 44.7272 33.4893C43.9026 33.4893 43.5752 33.0682 43.5752 32.4252C43.5752 31.6159 44.052 31.1578 44.8561 31.1578C45.6603 31.1578 46.0082 31.5974 46.0082 32.2219Z",fill:"#0CED57"}),React.createElement("path",{d:"M21.4351 32.2487C21.4351 33.056 20.9768 33.5162 20.1542 33.5162C19.3316 33.5162 18.998 33.093 18.998 32.4501C18.998 31.6428 19.4748 31.1826 20.279 31.1826C21.0832 31.1826 21.4351 31.6243 21.4351 32.2487Z",fill:"#0CED57"})),React.createElement("defs",null,React.createElement("clipPath",{id:"clip0_4668_7926"},React.createElement("rect",{width:"27",height:"21",fill:"white",transform:"translate(19 21)"}))))},56222:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r=()=>React.createElement("svg",{className:"table-view-icon",width:"64",height:"64",viewBox:"0 0 64 64",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement("rect",{width:"64",height:"64",rx:"8",fill:"#003010"}),React.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M26.5118 27.9597C26.4453 27.957 26.3784 27.9556 26.3113 27.9556C23.5621 27.9556 21.3335 30.2539 21.3335 33.0889C21.3335 35.924 23.5621 38.2223 26.3113 38.2223L26.3409 38.2221H38.376L38.3996 38.2223C40.756 38.2223 42.6663 36.2523 42.6663 33.8223C42.6663 31.6421 41.1288 29.8323 39.111 29.4831L39.1112 29.4223C39.1112 26.1823 36.2459 23.5557 32.7112 23.5557C29.7275 23.5557 27.2207 25.4273 26.5118 27.9597C26.5118 27.9597 26.5118 27.9597 26.5118 27.9597ZM37.0923 31.1635L37.1111 29.4609L37.1112 29.4223C37.1112 27.4471 35.3087 25.5557 32.7112 25.5557C30.5416 25.5557 28.8833 26.9074 28.4377 28.4989L28.0111 30.0227L26.4301 29.958C26.3908 29.9564 26.3512 29.9556 26.3113 29.9556C24.7243 29.9556 23.3335 31.3 23.3335 33.0889C23.3335 34.876 24.7213 36.2194 26.3063 36.2223L26.3349 36.2221H38.3874L38.3996 36.2223C39.5939 36.2223 40.6663 35.2061 40.6663 33.8223C40.6663 32.5872 39.8018 31.6324 38.7699 31.4539L37.0923 31.1635Z",fill:"#0CED57"}))},66155:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r=()=>React.createElement("svg",{className:"table-view-icon",width:"64",height:"64",viewBox:"0 0 64 64",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement("rect",{width:"64",height:"64",rx:"8",fill:"#003010"}),React.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M37.3154 32L31.2603 25.3393L32.7401 23.994L40.0183 32L32.7401 40.006L31.2603 38.6606L37.3154 32ZM29.3154 32L23.2603 25.3393L24.7401 23.994L32.0183 32L24.7401 40.006L23.2603 38.6606L29.3154 32Z",fill:"#0CED57"}))},90638:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r=()=>React.createElement("svg",{className:"table-view-icon",width:"64",height:"64",viewBox:"0 0 64 64",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement("rect",{width:"64",height:"64",rx:"8",fill:"#003010"}),React.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M36.6667 30.6667C38.5076 30.6667 40 29.1743 40 27.3333C40 25.4924 38.5076 24 36.6667 24C34.8257 24 33.3333 25.4924 33.3333 27.3333C33.3333 29.1743 34.8257 30.6667 36.6667 30.6667ZM36.6667 28.6667C37.403 28.6667 38 28.0697 38 27.3333C38 26.597 37.403 26 36.6667 26C35.9303 26 35.3333 26.597 35.3333 27.3333C35.3333 28.0697 35.9303 28.6667 36.6667 28.6667Z",fill:"#0CED57"}),React.createElement("path",{d:"M33.6667 38.6667V36C33.6667 33.975 32.025 32.3333 30 32.3333H24.6667C22.6416 32.3333 21 33.975 21 36V38.6667H23V36C23 35.0795 23.7462 34.3333 24.6667 34.3333H30C30.9205 34.3333 31.6667 35.0795 31.6667 36V38.6667H33.6667Z",fill:"#0CED57"}),React.createElement("path",{d:"M43 36V38.6667H41V36C41 35.0795 40.2538 34.3333 39.3333 34.3333H36V32.3333H39.3333C41.3584 32.3333 43 33.975 43 36Z",fill:"#0CED57"}),React.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M30.6667 27.3333C30.6667 29.1743 29.1743 30.6667 27.3333 30.6667C25.4924 30.6667 24 29.1743 24 27.3333C24 25.4924 25.4924 24 27.3333 24C29.1743 24 30.6667 25.4924 30.6667 27.3333ZM28.6667 27.3333C28.6667 28.0697 28.0697 28.6667 27.3333 28.6667C26.597 28.6667 26 28.0697 26 27.3333C26 26.597 26.597 26 27.3333 26C28.0697 26 28.6667 26.597 28.6667 27.3333Z",fill:"#0CED57"}))},41081:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r=()=>React.createElement("svg",{className:"table-view-icon",width:"64",height:"64",viewBox:"0 0 64 64",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement("rect",{width:"64",height:"64",rx:"8",fill:"#003010"}),React.createElement("path",{d:"M24.5 20L25.7728 23.2272L29 24.5L25.7728 25.7728L24.5 29L23.2272 25.7728L20 24.5L23.2272 23.2272L24.5 20Z",fill:"#0CED57"}),React.createElement("path",{d:"M38 20L39.6971 24.3029L44 26L39.6971 27.6971L38 32L36.3029 27.6971L32 26L36.3029 24.3029L38 20Z",fill:"#0CED57"}),React.createElement("path",{d:"M30.5 29L32.6213 34.3787L38 36.5L32.6213 38.6213L30.5 44L28.3787 38.6213L23 36.5L28.3787 34.3787L30.5 29Z",fill:"#0CED57"}))},38579:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r=()=>React.createElement("svg",{className:"table-view-icon",width:"64",height:"64",viewBox:"0 0 64 64",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement("rect",{width:"64",height:"64",rx:"8",fill:"#003010"}),React.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M32 20.2349L41 24.3258V30.4242C41 35.6229 37.6611 40.545 32.9529 42.0978C32.3343 42.3019 31.6657 42.3019 31.0471 42.0978C26.3389 40.545 23 35.6229 23 30.4242V24.3258L32 20.2349ZM25 25.6136V30.4242C25 34.8415 27.8602 38.9408 31.6735 40.1985C31.8853 40.2683 32.1147 40.2683 32.3265 40.1985C36.1398 38.9408 39 34.8415 39 30.4242V25.6136L32 22.4318L25 25.6136Z",fill:"#0CED57"}))},49932:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r=()=>React.createElement("svg",{className:"table-view-icon",width:"64",height:"64",viewBox:"0 0 64 64",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement("rect",{width:"64",height:"64",rx:"8",fill:"#003010"}),React.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M42 30.2586C42 34.8196 38.3025 38.5171 33.7414 38.5171C31.833 38.5171 30.0757 37.8698 28.6772 36.7827L23.4599 42L22 40.5401L27.2173 35.3228C26.1302 33.9243 25.4828 32.167 25.4828 30.2586C25.4828 25.6975 29.1803 22 33.7414 22C38.3025 22 42 25.6975 42 30.2586ZM39.9354 30.2586C39.9354 33.6794 37.1622 36.4525 33.7414 36.4525C30.3206 36.4525 27.5475 33.6794 27.5475 30.2586C27.5475 26.8377 30.3206 24.0646 33.7414 24.0646C37.1622 24.0646 39.9354 26.8377 39.9354 30.2586Z",fill:"#0CED57"}))},11733:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r=()=>React.createElement("svg",{className:"table-view-icon",width:"64",height:"64",viewBox:"0 0 64 64",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement("rect",{width:"64",height:"64",rx:"8",fill:"#003010"}),React.createElement("g",null,React.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M35.9287 23.8145V37.553L27.832 35.1813V39.4872H26.314V34.7366L23.557 33.929C22.4903 33.6165 21.7607 32.666 21.7607 31.5884V29.7791C21.7607 28.7015 22.4903 27.751 23.557 27.4385L35.9287 23.8145ZM34.4107 35.5751L27.832 33.648L27.832 27.7195L34.4107 25.7924V35.5751ZM26.314 28.1642L26.314 33.2033L23.9973 32.5247C23.5705 32.3997 23.2787 32.0194 23.2787 31.5884V29.7791C23.2787 29.348 23.5705 28.9678 23.9973 28.8428L26.314 28.1642ZM37.9529 31.4183H42.0009V29.9509H37.9529V31.4183ZM42.0009 35.575L37.9529 34.5967V33.1293L42.0009 34.1076V35.575ZM37.9529 28.2384L42.0009 27.2601V25.7927L37.9529 26.771V28.2384Z",fill:"#0CED57"})))},47587:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r=()=>React.createElement("svg",{className:"table-view-icon",width:"64",height:"64",viewBox:"0 0 64 64",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement("rect",{width:"64",height:"64",rx:"8",fill:"#003010"}),React.createElement("path",{d:"M31 22.6667H33V42.6667H31V22.6667Z",fill:"#0CED57"}),React.createElement("path",{d:"M24 29.3333H26V42.6667H24V29.3333Z",fill:"#0CED57"}),React.createElement("path",{d:"M40 34.6667H38V42.6667H40V34.6667Z",fill:"#0CED57"}))},17946:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r=()=>React.createElement("svg",{className:"table-view-icon",width:"64",height:"64",viewBox:"0 0 64 64",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement("rect",{width:"64",height:"64",rx:"8",fill:"#003010"}),React.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M21.545 23C22.6814 23 23.6798 23.7522 23.991 24.8427L27.0674 35.6252C27.0705 35.6361 27.0755 35.6461 27.0821 35.6548L30.7267 23H32.7655H38.4016C42.352 23 45 25.5644 45 29.4466C45 33.3733 42.2825 35.8219 38.228 35.8219H35.5539H32.1081L31.4387 37.8894C30.8383 39.7436 29.1082 41 27.1553 41C25.2024 41 23.4722 39.7436 22.8719 37.8894L19.125 26.3175C18.5944 24.6788 19.8191 23 21.545 23ZM33.3536 31.9753H37.2556C38.9486 31.9753 39.9644 31.0048 39.9644 29.4466C39.9644 27.8795 38.9486 26.9534 37.2556 26.9534H34.9796L33.3536 31.9753Z",fill:"#0CED57"}))},31421:(e,t,a)=>{"use strict";a.d(t,{A:()=>j});var r=a(29491),o=a(3613),n=a(27723),l=a(51113),s=a(29115),i=a(51609),c=a(29539),u=a(488),d=a(64526),v=a(17885),p=a(38802),m=a(54972),h=a(56222),f=a(66155),g=a(90638),w=a(41081),b=a(38579),y=a(49932),x=a(11733),_=a(47587),k=a(17946);a(76812);const __=n.__,E={backup:h.A,protect:b.A,"anti-spam":m.A,"jetpack-ai":w.A,boost:f.A,search:y.A,videopress:k.A,stats:_.A,crm:g.A,social:x.A},C=e=>`product-title-${e}`,j=({products:e})=>{const t=(0,i.useCallback)((e=>e.product.slug),[]),a=(0,i.useCallback)((e=>{S(e)}),[]),{data:n,isLoading:m,isError:h}=(0,u.V)(),f=(0,r.useViewportMatch)("medium","<"),g=(0,c.Zp)(),{recordEvent:w}=(0,d.A)(),[b,y]=(0,i.useState)([]),x={list:{...{sort:{field:p.SF,direction:"asc"},type:"list",filters:[],page:1,perPage:10},fields:[p.Ay,p.su],titleField:p.SF,mediaField:p.p4,showMedia:!0}};(0,i.useEffect)((()=>{h||m||b.length||y(((e,t)=>[...new Set(e.map((e=>t[e].category)))].map((e=>({value:e,label:e}))))(e,n))}),[h,m,b,n,e]);const _=(0,i.useCallback)((e=>{w(`jetpack_myjetpack_product_list_item_${e}_learnmore_mobile_click`),g(`add-${e}`)}),[g,w]),k=(0,i.useCallback)((e=>{if(f){const t=e[0];_(t)}}),[_,f]),j=(0,i.useMemo)((()=>[{id:p.SF,label:__("Title","jetpack-my-jetpack"),enableGlobalSearch:!0,enableHiding:!1,getValue:({item:e})=>e.product.name,render:({item:e})=>{const{product:t}=e;return React.createElement("div",{id:C(t.slug)},t.name)}},{id:p.Ay,label:__("Description","jetpack-my-jetpack"),enableGlobalSearch:!0,enableHiding:!1,getValue:({item:e})=>e.product.description,render:({item:e})=>{const{product:t}=e;return React.createElement("div",null,t.description)}},{id:p.wT,label:__("Category","jetpack-my-jetpack"),enableGlobalSearch:!0,enableHiding:!0,filterBy:{isPrimary:!0,operators:["is"]},elements:b.length>1?b:[],isVisible:()=>!1,getValue:({item:e})=>e.product.category},{id:p.p4,label:__("Icon","jetpack-my-jetpack"),enableGlobalSearch:!1,enableHiding:!1,render({item:e}){const{product:t}=e,a=E[t.slug];return React.createElement(a,null)}},{id:p.su,label:"Status",enableGlobalSearch:!1,enableHiding:!1,getValue:({item:e})=>e.status,render:({item:e})=>{const{product:t}=e,{slug:a}=t;return f?React.createElement("button",{className:"product-list-item-chevron"},React.createElement(l.A,{icon:s.A,size:24})):React.createElement(v.A,{className:"product-list-item-cta",slug:a,tracksIdentifier:"product_list_item",labelSuffixId:C(a)})}}]),[f,_,b]),[A,S]=(0,i.useState)({type:"list",...x.list}),P=(0,i.useMemo)((()=>((e,t)=>e.map((e=>{const a=t[e],{description:r,name:o,status:n,slug:l,category:s}=a;return{product:{description:r,name:o,slug:l,category:s},status:n}})))(e,n)),[n,e]),{data:R,paginationInfo:M}=(0,i.useMemo)((()=>(0,o.Pp)(P,A,j)),[P,j,A]);return React.createElement(o.Vw,{actions:[],data:R,fields:j,view:A,getItemId:t,paginationInfo:M,onChangeView:a,defaultLayouts:x,onChangeSelection:k})}},48931:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var r=a(41040),o=a(27723),n=a(31504),l=a(280),s=a(51870),i=a(28252);const __=o.__,c=()=>{const{userConnectionData:e,isSiteConnected:t}=(0,s.A)(),a=e?.currentUser?.wpcomUser?.display_name||e?.currentUser?.wpcomUser?.login||e?.currentUser?.username,{isLoading:o,data:c}=(0,l.A)({name:n.Ck,query:{path:n.tb},options:{enabled:t}});if(o)return React.createElement(React.Fragment,null,__("Checking gold status…","jetpack-my-jetpack"));const u=(0,i.M)(c);return React.createElement(React.Fragment,null,React.createElement(r._,{tokenRedeemed:u,displayName:a}))}},49654:(e,t,a)=>{"use strict";a.d(t,{A:()=>f});var r=a(27723),o=a(51113),n=a(15788),l=a(61871),s=a(16994),i=a(51609),c=a.n(i),u=a(56581),d=a(90003),v=a(0),p=a(93336),m=a(71070);const __=r.__,_n=r._n,h=(e,t,a)=>{if("number"!=typeof t)return"";const o=[],n=(0,r.sprintf)(e(t),(0,u.A)(t));return o.push(n.endsWith(".")?n:`${n}.`),o.push((0,v.A)(e,t,a)),o.filter(Boolean).join(" ")},f=({counts:e,previousCounts:t,headingLevel:a})=>{const r=`h${a>=1&&a<=6?a:3}`;return c().createElement("div",{className:m.A["section-stats-highlights"]},c().createElement(r,{className:m.A["section-title"]},c().createElement("span",null,__("7-day highlights","jetpack-my-jetpack")),c().createElement("small",{className:m.A["section-description"]},__("Compared to previous period","jetpack-my-jetpack"))),c().createElement("ul",{className:m.A["cards-list"]},c().createElement(d.A,{heading:__("Views","jetpack-my-jetpack"),srText:h(( -// translators: %s: number of views -e=>_n("%s view","%s views",e,"jetpack-my-jetpack")),e?.views,t?.views),icon:c().createElement(o.A,{icon:p.A}),count:e?.views,previousCount:t?.views,as:"li"}),c().createElement(d.A,{heading:__("Visitors","jetpack-my-jetpack"),srText:h(( -// translators: %s: number of visitors -e=>_n("%s visitor","%s visitors",e,"jetpack-my-jetpack")),e?.visitors,t?.visitors),icon:c().createElement(o.A,{icon:n.A}),count:e?.visitors,previousCount:t?.visitors,as:"li"}),c().createElement(d.A,{heading:__("Likes","jetpack-my-jetpack"),srText:h(( -// translators: %s: number of likes -e=>_n("%s like","%s likes",e,"jetpack-my-jetpack")),e?.likes,t?.likes),icon:c().createElement(o.A,{icon:l.A}),count:e?.likes,previousCount:t?.likes,as:"li"}),c().createElement(d.A,{heading:__("Comments","jetpack-my-jetpack"),srText:h(( -// translators: %s: number of comments -e=>_n("%s comment","%s comments",e,"jetpack-my-jetpack")),e?.comments,t?.comments),icon:c().createElement(o.A,{icon:s.A}),count:e?.comments,previousCount:t?.comments,as:"li"})))}},90003:(e,t,a)=>{"use strict";a.d(t,{A:()=>h});var r=a(56427),o=a(51113),n=a(66955),l=a(62510),s=a(13022),i=a(28120),c=a.n(i),u=a(51609),d=a.n(u),v=a(56581),p=a(71070);const m=({count:e=0,previousCount:t=0,as:a="div",icon:i,heading:c,srText:u})=>{const m=(f=t,"number"!=typeof(h=e)||"number"!=typeof f?null:h-f);var h,f;const g=Math.abs(m),w=Number.isFinite(m)?((e,t)=>{if("number"!=typeof e||"number"!=typeof t)return null;if(0===e&&0===t)return 0;const a=e/t*100;return Math.abs(a)===1/0?100:Math.round(a)})(g,t):null;return d().createElement(r.Card,{className:p.A["stats-card"],as:a},d().createElement("span",{className:"screen-reader-text"},u),d().createElement("div",{"aria-hidden":"true"},i&&d().createElement("div",{className:p.A["stats-card-icon"]},i),c&&d().createElement("div",{className:p.A["stats-card-heading"]},c),d().createElement("div",{className:p.A["stats-card-count"]},d().createElement("span",{className:p.A["stats-card-count-value"],title:Number.isFinite(e)?String(e):void 0},(0,v.A)(e)),null!==m?d().createElement("span",{className:(0,s.A)(p.A["stats-card-difference"],{[p.A["stats-card-difference--positive"]]:m<0,[p.A["stats-card-difference--negative"]]:m>0})},d().createElement("span",{className:p.A["stats-card-difference-icon"],title:String(m)},m<0&&d().createElement(o.A,{size:18,icon:n.A}),m>0&&d().createElement(o.A,{size:18,icon:l.A})),d().createElement("span",{className:p.A["stats-card-difference-absolute-value"]},g>9999?(0,v.A)(g):(0,v.A)(g,{})),null!==w&&d().createElement("span",{className:p.A["stats-card-difference-absolute-percentage"]},"(",w,"%)")):null)))};m.propTypes={count:c().number,heading:c().node,icon:c().node,previousCount:c().number,srText:c().string};const h=m},0:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var r=a(27723),o=a(56581),n=a(88496);const __=r.__,l=(e,t,a)=>{if("number"!=typeof t||"number"!=typeof a)return"";const l=t-a;if(0===l)return __("No change since the previous period.","jetpack-my-jetpack");const s=e(Math.abs(l)),i=(0,r.sprintf)(s,(0,o.A)(Math.abs(l))),c=0!==a?Math.abs(l/a):null;return c?l>0?(0,r.sprintf)( -// translators: %1$s: stat difference (e.g. `5 views`), %2$s: stat difference percentage (e.g. `10%`) -__("An increase of %1$s or %2$s since the previous period.","jetpack-my-jetpack"),i,(0,n.A)(c)):(0,r.sprintf)( -// translators: %1$s: stat difference (e.g. `5 views`), %2$s: stat difference percentage (e.g. `10%`) -__("A decrease of %1$s or %2$s since the previous period.","jetpack-my-jetpack"),i,(0,n.A)(c)):l>0?(0,r.sprintf)( -// translators: %s: stat difference (e.g. `5 views`) -__("An increase of %s since the previous period.","jetpack-my-jetpack"),i):(0,r.sprintf)( -// translators: %s: stat difference (e.g. `5 views`) -__("A decrease of %s since the previous period.","jetpack-my-jetpack"),i)}},93336:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var r=a(56427);const o=React.createElement(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},React.createElement(r.Path,{d:"m4 13 .67.336.003-.005a2.42 2.42 0 0 1 .094-.17c.071-.122.18-.302.329-.52.298-.435.749-1.017 1.359-1.598C7.673 9.883 9.498 8.75 12 8.75s4.326 1.132 5.545 2.293c.61.581 1.061 1.163 1.36 1.599a8.29 8.29 0 0 1 .422.689l.002.005L20 13l.67-.336v-.003l-.003-.005-.008-.015-.028-.052a9.752 9.752 0 0 0-.489-.794 11.6 11.6 0 0 0-1.562-1.838C17.174 8.617 14.998 7.25 12 7.25S6.827 8.618 5.42 9.957c-.702.669-1.22 1.337-1.563 1.839a9.77 9.77 0 0 0-.516.845l-.008.015-.002.005-.001.002v.001L4 13Zm8 3a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7Z"}))},1035:(e,t,a)=>{"use strict";a.d(t,{A:()=>m});var r=a(27723),o=a(51609),n=a(38837),l=a(31504),s=a(74923),i=a(280),c=a(68242),u=a(64526),d=a(51870),v=a(6176),p=a(49654);const __=r.__,m=()=>{const e="stats",{blogID:t,isSiteConnected:a}=(0,d.A)(),{detail:r}=(0,s.A)(e),{status:m}=r,h=!!(0,c.A$)("userIsAdmin"),{data:f}=(0,i.A)({name:l.MB,query:{path:(0,l.IM)(t)},options:{enabled:a}}),g=f?.past_seven_days||{},w=f?.between_past_eight_and_fifteen_days||{},{recordEvent:b}=(0,u.A)(),y=(0,o.useCallback)((()=>{b("jetpack_myjetpack_stats_card_seedetailedstats_click",{product:e})}),[b]),x=(0,o.useCallback)((()=>!(m!==n.hp.CAN_UPGRADE)),[m]),_={href:"admin.php?page=stats",label:__("View detailed stats","jetpack-my-jetpack"),onClick:y,shouldShowButton:x},k={[n.hp.ACTIVE]:{label:__("View detailed stats","jetpack-my-jetpack")},[n.hp.SITE_CONNECTION_ERROR]:{label:__("Connect Jetpack to use Stats","jetpack-my-jetpack")},[n.hp.NEEDS_FIRST_SITE_CONNECTION]:{href:`#/add-${e}`}};return React.createElement(v.A,{admin:h,slug:e,primaryActionOverride:k,secondaryAction:_,showMenu:!0},React.createElement(p.A,{counts:g,previousCounts:w,headingLevel:4}))}},7881:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var r=a(28509),o=a(47425),n=a(85879),l=a(51112),s=a(27723),i=a(36312),c=a(52290);const __=s.__,u=({isActivating:e})=>{const t=__("Activate Jetpack in one click","jetpack-my-jetpack"),{connectSite:a}=(0,i.A)({tracksInfo:{event:"jetpack_myjetpack_welcome_banner_connect_site",properties:{}}});return React.createElement(React.Fragment,null,React.createElement(r.A,{sm:6,md:8,lg:6,className:c.A["banner-description"]},React.createElement(o.Ay,{variant:"headline-small",mb:3},__("Welcome to Jetpack!","jetpack-my-jetpack")),React.createElement(o.Ay,{variant:"body",mb:2},__("Unlock the power of your WordPress site with Jetpack, the complete toolkit for enhancing your site’s security, speed, and growth.","jetpack-my-jetpack")),React.createElement(o.Ay,{variant:"body",mb:2},__("Jetpack works behind the scenes to keep your site safe, make it lightning-fast, and to help you get more traffic.","jetpack-my-jetpack")),React.createElement(n.A,{agreeButtonLabel:t,mb:4}),React.createElement(l.A,{variant:"primary",disabled:e,isLoading:e,onClick:a},e?__("Activating…","jetpack-my-jetpack"):t)),React.createElement(r.A,{sm:6,md:8,lg:6,className:c.A["banner-image"]}))}},36259:(e,t,a)=>{"use strict";a.d(t,{A:()=>p});var r=a(28509),o=a(47425),n=a(51112),l=a(56427),s=a(27723),i=a(13022),c=a(51609),u=a(52290);const __=s.__,d={protect:__("Protect my site","jetpack-my-jetpack"),performance:__("Improve my site‘s performance","jetpack-my-jetpack"),audience:__("Grow my audience","jetpack-my-jetpack"),content:__("Create quality content","jetpack-my-jetpack"),unsure:__("I don‘t know","jetpack-my-jetpack")},v={protect:!1,performance:!1,audience:!1,content:!1,unsure:!1},p=({onSkipOnboarding:e,onSubmitEvaluation:t})=>{const[a,s]=(0,c.useState)(v),p=(0,c.useCallback)((e=>t=>{s((a=>({...a,[e]:t})))}),[s]),m=(0,c.useCallback)((()=>t(a)),[t,a]),h=Object.values(a).some((e=>e));return React.createElement(React.Fragment,null,React.createElement(r.A,{sm:6,md:8,lg:6,className:u.A["banner-description"]},React.createElement(o.Ay,{variant:"headline-small",mb:3},__("What would you like Jetpack to do?","jetpack-my-jetpack")),React.createElement(o.Ay,{variant:"body",mb:2},__("Jetpack does a lot. Select the items that are most important to you and we‘ll find the Jetpack tools that are the best match for your site.","jetpack-my-jetpack")),React.createElement("form",{className:u.A.form},Object.entries(d).map((([e,t])=>React.createElement(l.CheckboxControl,{key:e,className:u.A["form-checkbox"],label:t,checked:a[e],onChange:p(e),__nextHasNoMarginBottom:!0}))),React.createElement("div",{className:u.A["form-actions"]},React.createElement(n.A,{variant:"primary",text:__("See solutions","jetpack-my-jetpack"),onClick:m,disabled:!h}),React.createElement(n.A,{variant:"link",className:u.A["form-link-action"],text:__("Skip onboarding","jetpack-my-jetpack"),onClick:e})))),React.createElement(r.A,{sm:6,md:8,lg:6,className:(0,i.A)(u.A["banner-image-evaluation"],{[u.A["is-selected"]]:h})}))}},75157:(e,t,a)=>{"use strict";a.d(t,{A:()=>d});var r=a(28509),o=a(47425),n=a(56427),l=a(27723),s=a(13022),i=a(30369),c=a(52290);const __=l.__,u=()=>React.createElement(n.SVG,{className:c.A.logo,viewBox:"0 0 88 88",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement(n.Path,{className:c.A["circle-outline"],d:"M44 86C67.196 86 86 67.196 86 44C86 20.804 67.196 2 44 2C20.804 2 2 20.804 2 44C2 67.196 20.804 86 44 86Z",stroke:"#003010",strokeWidth:"1"}),React.createElement(n.Path,{className:c.A["triangles-outline"],d:"M41.7319 8.73633V51.3088H19.8159L41.7319 8.73633ZM46.1835 79.2694V36.6129H68.1835L46.1835 79.2694Z",stroke:"#003010",strokeWidth:"1"}),React.createElement(n.Path,{className:c.A["circle-fill"],d:"M44 88C68.3005 88 88 68.3005 88 44C88 19.6995 68.3005 0 44 0C19.6995 0 0 19.6995 0 44C0 68.3005 19.6995 88 44 88Z",fill:"#003010"}),React.createElement(n.Path,{className:c.A["triangles-fill"],fillRule:"evenodd",clipRule:"evenodd",d:"M41.7319 8.73633V51.3088H19.8159L41.7319 8.73633ZM46.1835 79.2694V36.6129H68.1835L46.1835 79.2694Z",fill:"#48FF50"})),d=({type:e,isReady:t})=>{if("connecting"===e){const e=__("Connecting Jetpack","jetpack-my-jetpack"),a=__("Getting things ready in the background — almost there!","jetpack-my-jetpack"),n=(0,l.sprintf)(/* translators: %s: is an emoji */ -__("Jetpack is connected %s","jetpack-my-jetpack"),"🎉"),i=__("You’re connected and ready to fly!","jetpack-my-jetpack");return React.createElement(r.A,{className:c.A["loading-banner"]},React.createElement("div",{className:(0,s.A)(c.A["loader-container"],{[c.A["connection-ready"]]:t})},React.createElement(u,null)),React.createElement(o.Ay,{variant:"headline-small",mb:1},t?n:e),React.createElement(o.Ay,{variant:"body"},t?i:a))}return"recommendations"===e?React.createElement(r.A,{className:c.A["loading-banner"]},React.createElement("div",{className:(0,s.A)(c.A["loader-container"],c.A.recommendations)},React.createElement(i.A,null),React.createElement(u,null)),React.createElement(o.Ay,{variant:"headline-small",mb:1},__("Crafting your unique journey","jetpack-my-jetpack")),React.createElement(o.Ay,{variant:"body"},__("Hang tight while we personalize recommendations to suit your style.","jetpack-my-jetpack"))):React.createElement(React.Fragment,null)}},30369:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(56427),o=a(52290);const n=()=>React.createElement(r.SVG,{className:o.A["products-icons"],width:"379",height:"157",viewBox:"0 0 379 157",fill:"none",xmlns:"http://www.w3.org/2000/svg"},React.createElement(r.G,{className:o.A.people},React.createElement(r.Rect,{x:"334.012",y:"49.7305",width:"44.4222",height:"44.4222",rx:"22.2111",fill:"#003010"}),React.createElement(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M359.516 70.8799C360.852 70.8799 361.935 69.7967 361.935 68.4604C361.935 67.1242 360.852 66.041 359.516 66.041C358.179 66.041 357.096 67.1242 357.096 68.4604C357.096 69.7967 358.179 70.8799 359.516 70.8799ZM359.516 69.4282C360.05 69.4282 360.483 68.9949 360.483 68.4604C360.483 67.926 360.05 67.4927 359.516 67.4927C358.981 67.4927 358.548 67.926 358.548 68.4604C358.548 68.9949 358.981 69.4282 359.516 69.4282Z",fill:"#0CED57"}),React.createElement(r.Path,{d:"M357.338 76.6865V74.7509C357.338 73.2811 356.147 72.0896 354.677 72.0896H350.806C349.336 72.0896 348.144 73.2811 348.144 74.7509V76.6865H349.596V74.7509C349.596 74.0828 350.138 73.5412 350.806 73.5412H354.677C355.345 73.5412 355.886 74.0828 355.886 74.7509V76.6865H357.338Z",fill:"#0CED57"}),React.createElement(r.Path,{d:"M364.112 74.7509V76.6865H362.661V74.7509C362.661 74.0828 362.119 73.5412 361.451 73.5412H359.032V72.0896H361.451C362.921 72.0896 364.112 73.2811 364.112 74.7509Z",fill:"#0CED57"}),React.createElement(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M355.161 68.4604C355.161 69.7967 354.077 70.8799 352.741 70.8799C351.405 70.8799 350.322 69.7967 350.322 68.4604C350.322 67.1242 351.405 66.041 352.741 66.041C354.077 66.041 355.161 67.1242 355.161 68.4604ZM353.709 68.4604C353.709 68.9949 353.276 69.4282 352.741 69.4282C352.207 69.4282 351.773 68.9949 351.773 68.4604C351.773 67.926 352.207 67.4927 352.741 67.4927C353.276 67.4927 353.709 67.926 353.709 68.4604Z",fill:"#0CED57"})),React.createElement(r.G,{className:o.A.videopress},React.createElement(r.Rect,{x:"280",y:"10",width:"44.4222",height:"44.4222",rx:"22.2111",fill:"#003010"}),React.createElement(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M294.5269 25.5844C295.3517 25.5844 296.0764 26.1303 296.3023 26.9219L298.5352 34.7481C298.5375 34.756 298.5411 34.7632 298.5459 34.7696L301.1912 25.5844H302.6711H306.7619C309.6292 25.5844 311.5512 27.4457 311.5512 30.2635C311.5512 33.1136 309.5788 34.8909 306.6359 34.8909H304.695H302.1939L301.708 36.3915C301.2723 37.7373 300.0165 38.6493 298.599 38.6493C297.1815 38.6493 295.9258 37.7373 295.49 36.3915L292.7704 27.9923C292.3853 26.8029 293.2742 25.5844 294.5269 25.5844ZM303.0979 32.0989H305.9301C307.1589 32.0989 307.8962 31.3945 307.8962 30.2635C307.8962 29.126 307.1589 28.4539 305.9301 28.4539H304.2781L303.0979 32.0989Z",fill:"#0CED57"})),React.createElement(r.G,{className:o.A.shield},React.createElement(r.Rect,{x:"14.0122",y:"80.7305",width:"76.212",height:"76.212",rx:"38.106",fill:"#003010"}),React.createElement(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M51.9558 104.023L63.163 109.118V116.712C63.163 123.185 59.0053 129.315 53.1424 131.248C52.372 131.502 51.5396 131.502 50.7692 131.248C44.9063 129.315 40.7485 123.185 40.7485 116.712V109.118L51.9558 104.023ZM43.239 110.721V116.712C43.239 122.212 46.8007 127.317 51.5492 128.883C51.813 128.97 52.0986 128.97 52.3624 128.883C57.1109 127.317 60.6725 122.212 60.6725 116.712V110.721L51.9558 106.759L43.239 110.721Z",fill:"#0CED57"})),React.createElement(r.G,{className:o.A.akismet},React.createElement(r.Rect,{x:"69.0122",y:"20.7305",width:"54.212",height:"54.212",rx:"27.106",fill:"#003010"}),React.createElement(r.Path,{d:"M97.9649 38.592L103.765 53.9038C104.265 55.2138 105.034 55.6888 106.348 55.7997C106.396 55.8019 106.443 55.814 106.486 55.8352C106.529 55.8564 106.568 55.8862 106.599 55.9229C106.63 55.9595 106.654 56.0022 106.668 56.0483C106.682 56.0944 106.687 56.143 106.681 56.191C106.683 56.2405 106.675 56.2899 106.658 56.3364C106.641 56.3828 106.615 56.4254 106.581 56.4616C106.547 56.4978 106.507 56.527 106.462 56.5473C106.417 56.5677 106.368 56.5789 106.319 56.5803H99.9659C99.9145 56.5816 99.8634 56.5724 99.8157 56.5533C99.768 56.5342 99.7246 56.5055 99.6882 56.4692C99.6518 56.4328 99.6231 56.3894 99.6039 56.3416C99.5846 56.2937 99.5752 56.2425 99.5762 56.191C99.5724 56.1409 99.579 56.0906 99.5956 56.0433C99.6121 55.9959 99.6382 55.9525 99.6722 55.9158C99.7063 55.8791 99.7475 55.8498 99.7934 55.8298C99.8392 55.8098 99.8887 55.7996 99.9387 55.7997C100.577 55.7997 101.3 55.6323 101.3 54.8517C101.294 54.5262 101.228 54.2047 101.104 53.9038L99.7121 50.1936C99.6559 50.0262 99.6287 49.9698 99.462 49.9698H94.1604C93.3266 49.9698 92.2989 49.9698 91.8258 51.0306L90.5571 53.9038C90.4281 54.1644 90.3523 54.4484 90.3341 54.7389C90.3341 55.7433 91.641 55.7997 92.3279 55.7997C92.3779 55.7996 92.4274 55.8098 92.4732 55.8298C92.5191 55.8498 92.5603 55.8791 92.5944 55.9158C92.6284 55.9525 92.6545 55.9959 92.671 56.0433C92.6876 56.0906 92.6942 56.1409 92.6904 56.191C92.6914 56.2426 92.682 56.2939 92.6626 56.3417C92.6432 56.3896 92.6143 56.433 92.5777 56.4692C92.541 56.5055 92.4974 56.5339 92.4495 56.5527C92.4016 56.5715 92.3503 56.5803 92.2989 56.5785H86.662C86.6107 56.5798 86.5597 56.5706 86.5121 56.5514C86.4645 56.5323 86.4212 56.5037 86.3849 56.4673C86.3487 56.4308 86.3201 56.3874 86.3011 56.3396C86.282 56.2918 86.2729 56.2406 86.2741 56.1891C86.2703 56.1391 86.2769 56.0888 86.2935 56.0415C86.31 55.9941 86.3361 55.9507 86.3702 55.914C86.4042 55.8772 86.4454 55.848 86.4913 55.828C86.5371 55.808 86.5866 55.7978 86.6366 55.7979C87.9978 55.7142 88.4491 55.0701 88.9693 53.9019L95.6648 39.1761C95.9711 38.5338 96.6381 37.977 97.2489 37.977C97.6875 37.9788 97.8271 38.2299 97.9649 38.592ZM92.8898 48.576C92.8562 48.6257 92.8368 48.6835 92.8336 48.7434C92.8336 48.7998 92.8898 48.8271 93.0004 48.8271H98.5014C98.8892 48.8271 99.056 48.7434 99.056 48.4923C99.0555 48.3663 99.027 48.242 98.9726 48.1284L97.4447 43.9998C97.0822 43.0518 96.5565 41.7981 96.3898 40.7646C96.3898 40.71 96.3608 40.6809 96.3336 40.6809C96.3064 40.6809 96.2792 40.71 96.2792 40.7646C96.0706 41.4752 95.8007 42.1662 95.4726 42.8298L92.8898 48.576Z",fill:"#0CED57"}),React.createElement(r.Path,{d:"M97.9649 38.592L103.765 53.9038C104.265 55.2138 105.034 55.6888 106.348 55.7997C106.396 55.8019 106.443 55.814 106.486 55.8352C106.529 55.8564 106.568 55.8862 106.599 55.9229C106.63 55.9595 106.654 56.0022 106.668 56.0483C106.682 56.0944 106.687 56.143 106.681 56.191C106.683 56.2405 106.675 56.2899 106.658 56.3364C106.641 56.3828 106.615 56.4254 106.581 56.4616C106.547 56.4978 106.507 56.527 106.462 56.5473C106.417 56.5677 106.368 56.5789 106.319 56.5803H99.9659C99.9145 56.5816 99.8634 56.5724 99.8157 56.5533C99.768 56.5342 99.7246 56.5055 99.6882 56.4692C99.6518 56.4328 99.6231 56.3894 99.6039 56.3416C99.5846 56.2938 99.5752 56.2425 99.5762 56.191C99.5724 56.1409 99.579 56.0906 99.5956 56.0433C99.6121 55.9959 99.6382 55.9525 99.6722 55.9158C99.7063 55.8791 99.7475 55.8498 99.7934 55.8298C99.8392 55.8098 99.8887 55.7996 99.9387 55.7997C100.577 55.7997 101.3 55.6323 101.3 54.8517C101.294 54.5262 101.228 54.2047 101.104 53.9038L99.7121 50.1936C99.6559 50.0262 99.6287 49.9698 99.462 49.9698H94.1604C93.3266 49.9698 92.2989 49.9698 91.8258 51.0306L90.5571 53.9038C90.4281 54.1644 90.3523 54.4484 90.3341 54.7389C90.3341 55.7433 91.641 55.7997 92.3279 55.7997C92.3779 55.7996 92.4274 55.8098 92.4732 55.8298C92.5191 55.8498 92.5603 55.8791 92.5944 55.9158C92.6284 55.9525 92.6545 55.9959 92.671 56.0433C92.6876 56.0906 92.6942 56.1409 92.6904 56.191C92.6914 56.2426 92.682 56.2939 92.6626 56.3417C92.6432 56.3896 92.6143 56.433 92.5777 56.4692C92.541 56.5055 92.4974 56.5339 92.4495 56.5527C92.4016 56.5715 92.3503 56.5803 92.2989 56.5785H86.662C86.6107 56.5798 86.5597 56.5706 86.5121 56.5514C86.4645 56.5323 86.4212 56.5037 86.3849 56.4673C86.3487 56.4308 86.3201 56.3874 86.3011 56.3396C86.282 56.2918 86.2729 56.2406 86.2741 56.1891C86.2703 56.1391 86.2769 56.0888 86.2935 56.0415C86.31 55.9941 86.3361 55.9507 86.3702 55.914C86.4042 55.8772 86.4454 55.848 86.4913 55.828C86.5371 55.808 86.5866 55.7978 86.6366 55.7979C87.9978 55.7142 88.4491 55.0701 88.9693 53.9019L95.6648 39.1761C95.9711 38.5338 96.6381 37.977 97.2489 37.977C97.6875 37.9788 97.8271 38.2299 97.9649 38.592ZM92.8898 48.576C92.8562 48.6257 92.8368 48.6835 92.8336 48.7434C92.8336 48.7998 92.8898 48.8271 93.0004 48.8271H98.5014C98.8892 48.8271 99.056 48.7434 99.056 48.4923C99.0555 48.3663 99.027 48.242 98.9726 48.1284L97.4447 43.9998C97.0822 43.0518 96.5565 41.7981 96.3898 40.7646C96.3898 40.71 96.3608 40.6809 96.3336 40.6809C96.3064 40.6809 96.2792 40.71 96.2792 40.7646C96.0706 41.4752 95.8007 42.1662 95.4726 42.8298L92.8898 48.576Z",fill:"#0CED57"}),React.createElement(r.Path,{d:"M108.413 47.9182C108.413 48.6351 108.008 49.0409 107.278 49.0409C106.547 49.0409 106.257 48.6679 106.257 48.0983C106.257 47.3814 106.68 46.9756 107.392 46.9756C108.104 46.9756 108.413 47.365 108.413 47.9182Z",fill:"#0CED57"}),React.createElement(r.Path,{d:"M86.6465 47.9408C86.6465 48.6559 86.2405 49.0635 85.5119 49.0635C84.7832 49.0635 84.4878 48.6887 84.4878 48.1191C84.4878 47.404 84.9101 46.9965 85.6224 46.9965C86.3348 46.9965 86.6465 47.3877 86.6465 47.9408Z",fill:"#0CED57"})),React.createElement(r.G,{className:o.A.stars},React.createElement(r.Rect,{x:"168.012",y:"0.730469",width:"76.212",height:"76.212",rx:"38.106",fill:"#003010"}),React.createElement(r.Path,{d:"M197.184 24.5478L198.7 28.3908L202.543 29.9064L198.7 31.4221L197.184 35.2651L195.668 31.4221L191.825 29.9064L195.668 28.3908L197.184 24.5478Z",fill:"#0CED57"}),React.createElement(r.Path,{d:"M213.26 24.5477L215.281 29.6717L220.405 31.6925L215.281 33.7134L213.26 38.8374L211.239 33.7134L206.115 31.6925L211.239 29.6717L213.26 24.5477Z",fill:"#0CED57"}),React.createElement(r.Path,{d:"M204.329 35.2649L206.855 41.6699L213.26 44.196L206.855 46.7221L204.329 53.1271L201.803 46.7221L195.398 44.196L201.803 41.6699L204.329 35.2649Z",fill:"#0CED57"})),React.createElement(r.G,{className:o.A.search},React.createElement(r.Rect,{x:"250.012",y:"76.7305",width:"56.212",height:"56.212",rx:"28.106",fill:"#003010"}),React.createElement(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M287.184 103.116C287.184 107.306 283.788 110.702 279.599 110.702C277.846 110.702 276.232 110.107 274.948 109.109L270.156 113.9L268.815 112.56L273.607 107.768C272.608 106.483 272.014 104.869 272.014 103.116C272.014 98.9272 275.41 95.5312 279.599 95.5312C283.788 95.5312 287.184 98.9272 287.184 103.116ZM285.288 103.116C285.288 106.258 282.741 108.805 279.599 108.805C276.457 108.805 273.91 106.258 273.91 103.116C273.91 99.9745 276.457 97.4275 279.599 97.4275C282.741 97.4275 285.288 99.9745 285.288 103.116Z",fill:"#0CED57"})),React.createElement(r.G,{className:o.A.social},React.createElement(r.Rect,{x:"0.012207",y:"21.7305",width:"44.4222",height:"44.4222",rx:"22.2111",fill:"#003010"}),React.createElement(r.Path,{fillRule:"evenodd",clipRule:"evenodd",d:"M25.3608 37.4654V48.3956L18.9181 46.5084V49.9341H17.7104L17.7104 46.1546L15.518 45.5124C14.6693 45.2638 14.0889 44.5075 14.0889 43.6503V42.2107C14.0889 41.3535 14.6693 40.5972 15.518 40.3486L25.3608 37.4654ZM24.1531 46.822L18.9181 45.2885L18.9181 40.5725L24.1531 39.039V46.822ZM17.7104 40.9263L17.7104 44.9347L15.8682 44.3951C15.5287 44.2957 15.2966 43.9932 15.2966 43.6503V42.2107C15.2966 41.8678 15.5287 41.5653 15.8682 41.4659L17.7104 40.9263ZM26.9733 43.5155H30.1939V42.3481H26.9733V43.5155ZM30.1939 46.8212L26.9733 46.0429V44.8754L30.1939 45.6537V46.8212ZM26.9733 40.9856L30.1939 40.2073V39.0398L26.9733 39.8181V40.9856Z",fill:"#0CED57"})),React.createElement(r.G,{className:o.A["empty-circle"]},React.createElement(r.Rect,{x:"110",y:"-30.2695",width:"44.4222",height:"44.4222",rx:"22.2111",fill:"#003010"})))},36007:(e,t,a)=>{"use strict";a.d(t,{A:()=>y});var r=a(75918),o=a(28509),n=a(51112),l=a(27723),s=a(10991),i=a(13022),c=a(51609),u=a(83804),d=a(89812),v=a(64526),p=a(31368),m=a(51870),h=a(62450),f=a(7881),g=a(36259),w=a(75157),b=a(52290);const __=l.__,y=({welcomeFlowExperiment:e,setWelcomeFlowExperiment:t,children:a})=>{const{recordEvent:l}=(0,v.A)(),{dismissWelcomeBanner:y}=(0,d.A)(),{recommendedModules:x,submitEvaluation:_,saveEvaluationResult:k}=(0,u.A)(),{siteIsRegistered:E,siteIsRegistering:C,isUserConnected:j,isSiteConnected:A}=(0,m.A)({skipUserConnection:!0}),[S,P]=(0,c.useState)(!1),[R,M]=(0,c.useState)(""),[V,z]=(0,c.useState)(null),H=(0,p.A)();(0,c.useEffect)((()=>{if("site-connecting"===R&&!C&&E){z(!0);const e=setTimeout((()=>z(!1)),3e3);return()=>clearTimeout(e)}}),[S,R,x,E,C]);const L=(0,c.useMemo)((()=>C||V||E&&"site-connecting"===R&&null===V?"site-connecting":!E||e.isLoading?"connection":S?"evaluation-processing":x||H?"evaluation":null),[E,V,C,R,e.isLoading,S,x,H]);(0,c.useEffect)((()=>{R!==L&&(l("jetpack_myjetpack_welcome_banner_step_view",{current_step:L}),M(L))}),[L,R,l]);const O=(0,c.useCallback)((()=>{l("jetpack_myjetpack_welcome_banner_dismiss_click",{current_step:L,is_user_connected:j,is_site_connected:A}),y()}),[l,L,j,A,y]),N=(0,c.useCallback)((()=>{l("jetpack_myjetpack_welcome_banner_skip_recommendations_click"),y()}),[y,l]),I=(0,c.useCallback)((async e=>{const t=Object.keys(e).filter((t=>e[t]));P(!0),l("jetpack_myjetpack_welcome_banner_evaluation_submit",{goals:t});try{const e=await _(t);await k(e),y()}catch{P(!1)}}),[y,l,k,_]);return(0,c.useEffect)((()=>{L||y()}),[L,y]),L?React.createElement(r.A,{horizontalSpacing:6,horizontalGap:2},a&&React.createElement(o.A,null,a),React.createElement(o.A,{lg:12,className:b.A.banner},React.createElement(h.O,{className:(0,i.A)(b.A["banner-card"],"connection"===L&&b.A["is-mandatory"])},React.createElement(r.A,{horizontalSpacing:0,horizontalGap:0,className:b.A["banner-content"]},"connection"===L&&React.createElement(f.A,{onUpdateWelcomeFlowExperiment:t,isActivating:C||e.isLoading}),"evaluation"===L&&React.createElement(g.A,{onSkipOnboarding:N,onSubmitEvaluation:I}),"evaluation-processing"===L&&React.createElement(w.A,{type:"recommendations"}),"site-connecting"===L&&React.createElement(w.A,{type:"connecting",isReady:A}))),React.createElement(n.A,{className:b.A.dismiss,variant:"secondary","aria-label":__("Don’t show the welcome message again","jetpack-my-jetpack"),size:"small",icon:s.A,disabled:C,onClick:O}))):null}},38837:(e,t,a)=>{"use strict";a.d(t,{ED:()=>o,NM:()=>l,OM:()=>r,hp:()=>s,mk:()=>n});const r="my-jetpack-my-plans-manage",o="my-jetpack-my-plans-purchase",n="my-jetpack-my-plans-purchase-no-site",l={Home:"/",Connection:"/connection",ConnectionSkipPricing:"/connection?skip_pricing=true",AddAkismet:"/add-akismet",AddAntiSpam:"/add-anti-spam",AddBackup:"/add-backup",AddBoost:"/add-boost",AddComplete:"/add-complete",AddCRM:"/add-crm",AddJetpackAI:"/add-jetpack-ai",AddExtras:"/add-extras",AddGrowth:"/add-growth",AddProtect:"/add-protect/:feature?",AddScan:"/add-scan",AddSocial:"/add-social",AddSearch:"/add-search",AddSecurity:"/add-security",AddVideoPress:"/add-videopress",AddStats:"/add-stats",AddLicense:"/add-license",JetpackAi:"/jetpack-ai",Onboarding:"/onboarding",RedeemToken:"/redeem-token"},s={ACTIVE:"active",INACTIVE:"inactive",MODULE_DISABLED:"module_disabled",SITE_CONNECTION_ERROR:"site_connection_error",ABSENT:"plugin_absent",ABSENT_WITH_PLAN:"plugin_absent_with_plan",NEEDS_PLAN:"needs_plan",NEEDS_ACTIVATION:"needs_activation",NEEDS_FIRST_SITE_CONNECTION:"needs_first_site_connection",USER_CONNECTION_ERROR:"user_connection_error",CAN_UPGRADE:"can_upgrade",EXPIRING_SOON:"expiring",EXPIRED:"expired",NEEDS_ATTENTION__ERROR:"needs_attention_error",NEEDS_ATTENTION__WARNING:"needs_attention_warning"}},73537:(e,t,a)=>{"use strict";a.d(t,{EX:()=>o,PG:()=>r,pv:()=>n});const r=100,o=200,n=300},76007:(e,t,a)=>{"use strict";a.d(t,{A:()=>l,g:()=>n});var r=a(51609);const o={message:"",title:null,options:{level:"info",priority:0}},n=(0,r.createContext)({currentNotice:o,setNotice:null,resetNotice:null}),l=({children:e})=>{const[t,a]=(0,r.useState)(o),l=(0,r.useCallback)((()=>{a(o)}),[]),s=(0,r.useCallback)(((e,r)=>{if(!t.message||e.options.priority>t.options.priority){const t={...e.options,onClose:e.options?.onClose||(e.options?.hideCloseButton?void 0:r)};l(),a({...e,options:t})}}),[t.message,t.options.priority,l]);return React.createElement(n.Provider,{value:{currentNotice:t,setNotice:s,resetNotice:l}},e)}},41521:(e,t,a)=>{"use strict";a.d(t,{l:()=>n});var r=a(27723),o=a(73537);const n={message:(0,r.__)("Site connection failed. Please try again.","jetpack-my-jetpack"),options:{id:"site-connection-error-notice",level:"error",actions:[],priority:o.pv,hideCloseButton:!1}}},56077:(e,t,a)=>{"use strict";a.d(t,{A:()=>l,_:()=>n});var r=a(51609);const o=(0,r.createContext)({state:{},setState:()=>{}}),n=(e,t)=>{const{state:a,setState:n}=(0,r.useContext)(o),{[e]:l=t}=a;(0,r.useEffect)((()=>{void 0===a[e]&&n((a=>({...a,[e]:t})))}),[t,e,n,a]);return[l,(0,r.useCallback)((t=>{n((a=>({...a,[e]:t})))}),[e,n])]},l=({children:e})=>{const[t,a]=(0,r.useState)({});return React.createElement(o.Provider,{value:{state:t,setState:a}},e)}},31504:(e,t,a)=>{"use strict";a.d(t,{AD:()=>u,Ck:()=>P,DB:()=>n,D_:()=>I,Dz:()=>j,E4:()=>z,FW:()=>x,Hm:()=>p,IM:()=>w,L6:()=>d,MB:()=>A,MD:()=>M,MX:()=>L,Md:()=>k,O2:()=>s,PM:()=>g,QO:()=>S,Re:()=>O,Rx:()=>y,Yr:()=>N,_:()=>E,dB:()=>R,dL:()=>h,es:()=>f,g_:()=>c,jE:()=>_,jf:()=>i,jr:()=>m,no:()=>v,nw:()=>C,pN:()=>V,rR:()=>l,tb:()=>o,uh:()=>H,xF:()=>b});const r="my-jetpack/v1",o=`${r}/site/purchases`,n=`${r}/site/backup/undo-event`,l=`${r}/chat/availability`,s=`${r}/chat/authentication`,i=`${r}/site/products`,c=`${r}/site/products-ownership`,u=`${r}/site/dismiss-welcome-banner`,d=`${r}/site/recommendations/evaluation`,v=`${r}/site/recommendations/evaluation/result`,p=`${r}/site/update-historically-active-modules`,m=`${r}/jetpack-manage/data`,h=`${r}/red-bubble-notifications`,f=`${r}/site/protect/data`,g=`${r}/site/videopress/data`,w=e=>`jetpack/v4/stats-app/sites/${e}/stats/highlights`,b="product",y="product ownership",x="activate product",_="install product",k="available licenses",E="chat availability",C="chat authentication",j="backup history",A="stats counts",S="dismiss welcome banner",P="purchases",R="evaluate site recommendations",M="save site evaluation result",V="remove site evaluation result",z="update historically active modules",H="get jetpack manage data",L="red bubble alerts",O="get protect data",N="get videopress data",I={ANTI_SPAM:"anti-spam",BACKUP:"backup",BOOST:"boost",BRUTE_FORCE:"brute-force",CRM:"crm",CREATOR:"creator",EXTRAS:"extras",JETPACK_AI:"jetpack-ai",NEWSLETTER:"newsletter",PROTECT:"protect",RELATED_POSTS:"related-posts",SCAN:"scan",SEARCH:"search",SITE_ACCELERATOR:"site-accelerator",SOCIAL:"social",STATS:"stats",VIDEOPRESS:"videopress",SECURITY:"security",GROWTH:"growth",COMPLETE:"complete"}},83804:(e,t,a)=>{"use strict";a.d(t,{A:()=>p});var r=a(27723),o=a(51609),n=a(56077),l=a(64526),s=a(31368),i=a(31504),c=a(65350),u=a(10929),d=a(68242),v=a(89812);const __=r.__,p=()=>{const{recordEvent:e}=(0,l.A)(),{isWelcomeBannerVisible:t,showWelcomeBanner:a}=(0,v.A)(),[r,p]=(0,n._)("recommendedModules",(0,d.A$)("recommendedModules").modules),[m,h]=(0,n._)("isFirstRun",(0,d.A$)("recommendedModules").isFirstRun),{data:{ownedProducts:f},isLoading:g}=(0,c.A)(),w=(0,s.A)(),b=(0,o.useMemo)((()=>{const e=f||[];return r?.filter((t=>!e.includes(t))).slice(0,5)}),[r,f]),y=(0,o.useMemo)((()=>{const{dismissed:e}=(0,d.A$)("recommendedModules");return!e&&!t&&w}),[t,w]),[x,_]=(0,n._)("recommendedModulesVisible",y&&!!b?.length),{mutate:k}=(0,u.A)({name:i.dB,query:{path:i.L6,method:"GET"},errorMessage:__("Failed to evaluate site recommendations","jetpack-my-jetpack")}),{mutate:E}=(0,u.A)({name:i.MD,query:{path:i.no,method:"POST"},errorMessage:__("Failed to save evaluation results. Please try again","jetpack-my-jetpack")}),{mutate:C}=(0,u.A)({name:i.pN,query:{path:i.no,method:"DELETE"},errorMessage:__("Failed to hide evaluation results. Please try again","jetpack-my-jetpack")});return{submitEvaluation:(0,o.useCallback)((e=>new Promise(((t,a)=>{k({queryParams:{goals:e}},{onSuccess:t,onError:a})}))),[k]),saveEvaluationResult:(0,o.useCallback)((e=>new Promise(((t,a)=>{E({data:{recommendations:e}},{onSuccess:e=>{p(e),_(!0),t()},onError:a})}))),[E,_,p]),removeEvaluationResult:(0,o.useCallback)((()=>{_(!1),C({},{onSuccess:()=>{h(!1),e("jetpack_myjetpack_evaluation_recommendations_dismiss_click")}})}),[C,e,h,_]),redoEvaluation:(0,o.useCallback)((()=>{_(!1),h(!1),a(),e("jetpack_myjetpack_evaluation_recommendations_redo_click")}),[e,h,_,a]),recommendedModules:b,isSectionVisible:x,isFirstRun:m,isProductOwnershipLoading:g}}},72447:(e,t,a)=>{"use strict";a.d(t,{M:()=>c});var r=a(27723),o=a(51609),n=a(73537),l=a(76007),s=a(31504);const __=r.__,i=[s.Ck,s.FW,s.jE,s.Re,s.Yr],c=({infoName:e,isError:t,overrideMessage:a})=>{const{setNotice:s}=(0,o.useContext)(l.g),c=a??(0,r.sprintf)( -// translators: %s is the name of the information being fetched, e.g. "site purchases". -__("There was an error fetching your %s information. Check your site connectivity and try again.","jetpack-my-jetpack"),e);(0,o.useEffect)((()=>{t&&i.includes(e)&&s({message:c,options:{id:"fetching-error-notice",level:"error",priority:n.PG}})}),[c,s,t,e])}},41526:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var r=a(63406),o=a(27723),n=a(64526),l=a(31504),s=a(10929),i=a(68242),c=a(4682);const __=o.__,u=e=>{const t=Array.isArray(e)?e:[e],{products:a,refetch:u}=(0,c.A)(t),{recordEvent:d}=(0,n.A)(),{createSuccessNotice:v}=(0,r.I)(),{mutate:p,isPending:m,isSuccess:h}=(0,s.A)({name:l.FW,query:{path:`${l.jf}/activate`,method:"POST",data:{products:t}},options:{onSuccess:()=>{a?.forEach((e=>{(e=>{const{standalonePluginInfo:t,isPluginActive:a}=e;return t?.hasStandalonePlugin?t?.isStandaloneActive:a})(e)||(d("jetpack_myjetpack_product_activated",{product:e.slug}),(e=>{const{items:t}=(0,i.A$)("products");"jetpack"!==t[e]?.plugin_slug&&t[e]?.standalone_plugin_info.has_standalone_plugin&&(window.myJetpackInitialState.products.items[e].standalone_plugin_info.is_standalone_active=!0,window.myJetpackInitialState.products.items[e].standalone_plugin_info.is_standalone_installed=!0)})(e.slug))})),u().then((()=>{v((0,o.sprintf)(/* translators: %s is either the product name, i.e.- "Jetpack Backup" or the word "Plugins". */ -__("%s activated successfully!","jetpack-my-jetpack"),1===a?.length?a[0].title:__("Plugins","jetpack-my-jetpack")))}))}},errorMessage:(0,o.sprintf)( -// translators: %s is the Jetpack product name or comma seperated list of multiple Jetpack product names. -__("There was a problem activating %s.","jetpack-my-jetpack"),a?.map((e=>e?.name)).join(", "))});return{activate:p,isPending:m,isSuccess:h}}},488:(e,t,a)=>{"use strict";a.d(t,{V:()=>s});var r=a(31504),o=a(280),n=a(68242),l=a(87451);const s=()=>{const{items:e}=(0,n.A$)("products"),{data:t,isLoading:a,isError:s}=(0,o.A)({name:`${r.xF}`,query:{path:`${r.jf}`},options:{enabled:!0}});if(!a&&!s)for(const[a,r]of Object.entries(e))t&&t[a]&&(e[a]={...r,...t[a]});return e?{data:Object.entries(e).reduce(((e,[t,a])=>({...e,[t]:(0,l.l)(a)})),{}),isLoading:a,isError:s}:{data:{},isLoading:!1,isError:!1}}},55394:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var r=a(63406),o=a(27723),n=a(31504),l=a(10929),s=a(4682);const __=o.__,i=e=>{const t=Array.isArray(e)?e:[e],{products:a,refetch:i}=(0,s.A)(t),{createSuccessNotice:c}=(0,r.I)(),u=(0,o.sprintf)(/* translators: %s is the name of a Jetpack plugin, i.e.- "VaultPress Backup" or "Boost" or "Social" or "Search" or "VideoPress", etc. */ -__("%s installed successfully!","jetpack-my-jetpack"),a[0]?.title),d=__("Plugins installed successfully!","jetpack-my-jetpack"),v=1===a?.length?u:d,{mutate:p,isPending:m}=(0,l.A)({name:n.jE,query:{path:`${n.jf}/install`,method:"POST",data:{products:t}},options:{onSuccess:()=>{i().then((()=>{c(v)}))}},errorMessage:(0,o.sprintf)( -// translators: %s is the Jetpack plugin name or comma seperated list of multiple Jetpack plugin names. -__("There was a problem installing and activating %s.","jetpack-my-jetpack"),a?.map((e=>e?.name)).join(", "))});return{install:p,isPending:m}}},74923:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var r=a(4682);const o=e=>{const{products:t,refetch:a,isLoading:o}=(0,r.A)([e]);return{detail:t[0],refetch:a,isLoading:o}}},65350:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});var r=a(51609),o=a(56077),n=a(31504),l=a(280);const s=()=>{const[e,t]=(0,o._)("productsOwnership",{ownedProducts:[],unownedProducts:[]}),{data:a,refetch:s,isLoading:i}=(0,l.A)({name:`${n.Rx}`,query:{path:n.g_}});return(0,r.useEffect)((()=>{if(!i&&a){const{ownedProducts:e=[],unownedProducts:r=[]}=a;t({ownedProducts:e,unownedProducts:r})}}),[a,i,t]),{refetch:s,data:e,isLoading:i}}},4682:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});var r=a(51609),o=a(31504),n=a(280),l=a(488);const s=e=>{const t=Array.isArray(e)?e:[e],{data:a,isLoading:s}=(0,l.V)(),i=t?.map((e=>a?.[e])),{refetch:c,isLoading:u}=(e=>{const t=e&&e?.length?`?products=${e?.join(",")}`:"";return(0,n.A)({name:`${o.xF}`,query:{path:`${o.jf}${t}`},options:{enabled:!1}})})(t);return{products:i,refetch:(0,r.useCallback)((()=>(async e=>{const{data:t,isError:a,isLoading:r}=await e(),o=window.myJetpackInitialState.products.items;a||r||Object.keys(t).forEach((e=>{window.myJetpackInitialState.products.items[e]={...o[e],...t[e]}}))})(c)),[c]),isLoading:u||s}}},58402:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(31504),o=a(10929);const n=()=>{const{mutate:e}=(0,o.A)({name:r.E4,query:{path:r.Hm,method:"POST"},options:{onSuccess:e=>{e.length>0&&(window.myJetpackInitialState.lifecycleStats.historicallyActiveModules=e)}}});return e}},40357:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});var r=a(5932),o=a(35104),n=a(72447),l=a(68242);const s=({name:e,queryFn:t,errorMessage:a})=>{const s=(0,o.I)({queryKey:[e],queryFn:()=>{const{apiRoot:e,apiNonce:a}=(0,l.qG)();return r.Ay.setApiRoot(e),r.Ay.setApiNonce(a),t(r.Ay)},refetchOnWindowFocus:!1,refetchIntervalInBackground:!1}),{isError:i,isLoading:c}=s;return(0,n.M)({infoName:e,isError:!c&&i,overrideMessage:a}),s}},62902:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(31504),o=a(280);const n=()=>{const e=document.cookie.split(";").map((e=>e.trim())).filter((e=>e.includes("_dismissed"))),{data:t={},isLoading:a,isError:n,refetch:l}=(0,o.A)({name:r.MX,query:{path:r.dL,method:"POST",data:{dismissal_cookies:e}}});return{data:t,isLoading:a,isError:n,refetch:l}}},10929:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var r=a(34613),o=a(1455),n=a.n(o),l=a(93832),s=a(72447);const i=({name:e,query:t,options:a,errorMessage:o})=>{const i=(0,r.n)({mutationKey:[e],mutationFn:e=>{const a=Object.assign({},t);return e&&"queryParams"in e&&(a.path=(0,l.addQueryArgs)(a.path,e.queryParams),delete e.queryParams),n()({...a,...e})},...a}),{isError:c,isPending:u}=i;return(0,s.M)({infoName:e,isError:!u&&c,overrideMessage:o}),i}},280:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});var r=a(35104),o=a(1455),n=a.n(o),l=a(72447);const s=({name:e,query:t,options:a,errorMessage:o})=>{const s=(0,r.I)({queryKey:[e],queryFn:()=>n()(t),refetchOnWindowFocus:!1,refetchIntervalInBackground:!1,...a}),{error:i,isError:c,isLoading:u}=s;return(0,l.M)({infoName:e,isError:!u&&c&&"not_connected"!==i.code,overrideMessage:o}),s}},68242:(e,t,a)=>{"use strict";a.d(t,{A$:()=>r,SF:()=>n,qG:()=>o});const r=e=>e?window?.myJetpackInitialState?.[e]??{}:window?.myJetpackInitialState,o=()=>window?.myJetpackRest??{},n=e=>e?window?.JP_CONNECTION_INITIAL_STATE?.[e]??{}:window?.JP_CONNECTION_INITIAL_STATE},18117:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var r=a(38837);const o=e=>Object.values(e).filter((({requiresUserConnection:e,status:t})=>e&&(t===r.hp.ACTIVE||r.hp.USER_CONNECTION_ERROR))).map((({name:e})=>e))},16700:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r=(e,t)=>{"Enter"!==e.key&&" "!==e.key||t()}},87451:(e,t,a)=>{"use strict";a.d(t,{l:()=>o});var r=a(68405);const o=e=>{const t=(0,r.A)(e);return t.features=t.features||[],t.supportedProducts=t.supportedProducts||[],t.pricingForUi&&(t.pricingForUi.fullPricePerMonth=(e=>"year"===e.pricingForUi.productTerm?Math.round(e.pricingForUi.fullPrice/12*100)/100:e.pricingForUi.fullPrice)(t),t.pricingForUi.discountPricePerMonth=(e=>"year"===e.pricingForUi.productTerm?Math.round(e.pricingForUi.discountPrice/12*100)/100:e.pricingForUi.discountPrice)(t)),t}},13244:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var r=a(5932),o=a(27723),n=a(68242);const __=o.__,l=async()=>{const{apiRoot:e,apiNonce:t}=(0,n.qG)();if(r.Ay.setApiRoot(e),r.Ay.setApiNonce(t),window.confirm(__("This will reset all Jetpack options, are you sure?","jetpack-my-jetpack")))try{"success"===(await r.Ay.resetOptions("options")).code&&window.alert(__("Options reset! Have fun messing them up again :-)","jetpack-my-jetpack"))}catch{window.alert(__("Options failed to reset.","jetpack-my-jetpack"))}}},68405:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});const r=e=>Array.isArray(e)?e.map((e=>r(e))):"object"==typeof e&&null!==e?Object.fromEntries(Object.entries(e).map((([e,t])=>[e.replace(/([-_][a-z])/gi,(e=>e.toUpperCase().replace(/[-_]/g,""))),r(t)]))):e,o=r},89812:(e,t,a)=>{"use strict";a.d(t,{A:()=>c});var r=a(27723),o=a(51609),n=a(56077),l=a(31504),s=a(62902),i=a(10929);const __=r.__,c=()=>{const{data:e,isLoading:t,isError:a,refetch:r}=(0,s.A)(),c=(0,o.useMemo)((()=>a||t?[]:Object.keys(e)),[a,t,e]),[u,d]=(0,n._)("isDismissingWelcomeBanner",!1),[v,p]=(0,n._)("isWelcomeBannerVisible",c.includes("welcome-banner-active"));(0,o.useEffect)((()=>{u?p(!1):c.includes("welcome-banner-active")&&p(!0)}),[u,c,p]);const{mutate:m}=(0,i.A)({name:l.QO,query:{path:l.AD,method:"POST"},errorMessage:__("Failed to dismiss the welcome banner. Please try again","jetpack-my-jetpack")});return{dismissWelcomeBanner:(0,o.useCallback)((()=>{d(!0),m(null,{onSuccess:async()=>{await r(),d(!1)}})}),[m,r,d]),showWelcomeBanner:(0,o.useCallback)((()=>{d(!1),p(!0)}),[p,d]),isWelcomeBannerVisible:v}}},64526:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});var r=a(90372),o=a(51609),n=a(68242),l=a(51870);const s=()=>{const{isUserConnected:e,isSiteConnected:t,connectedPlugins:a,userConnectionData:s={}}=(0,l.A)(),{login:i,ID:c}=s.currentUser?.wpcomUser||{},{myJetpackVersion:u=""}=(0,n.A$)();(0,o.useEffect)((()=>{e&&c&&i&&r.A.initialize(c,i)}),[c,e,i]);const d=Object.keys(a||{}).sort().join(",").replaceAll("jetpack-","");return{recordEvent:(0,o.useCallback)(((a,o)=>{r.A.tracks.recordEvent(a,{...o,version:u,is_site_connected:t,is_user_connected:e,referring_plugins:d})}),[])}}},36312:(e,t,a)=>{"use strict";a.d(t,{A:()=>d});var r=a(3924),o=a(51609),n=a(76007),l=a(41521),s=a(65350),i=a(68242),c=a(51870),u=a(64526);const d=({tracksInfo:e})=>{const{event:t,properties:a}=e,{setNotice:d,resetNotice:v}=(0,o.useContext)(n.g),{recordEvent:p}=(0,u.A)(),{refetch:m}=(0,s.A)(),{siteSuffix:h,adminUrl:f,myJetpackCheckoutUri:g}=(0,i.A$)(),w=`&redirect_to=${g}`,b=`${`?connect_after_checkout=true&admin_url=${encodeURIComponent(f)}&from_site_slug=${h}&source=my-jetpack`}${w}&unlinked=1`,y=(0,r.A)("jetpack-my-jetpack-site-only-plans",{query:b}),{handleRegisterSite:x}=(0,c.A)({skipUserConnection:!0,redirectUri:w});return{connectSite:(0,o.useCallback)((async e=>{e&&e.preventDefault(),setTimeout((()=>{window.scrollTo({top:0,left:0,behavior:"smooth"})}),100),p(`${t}_click`,a);try{await x(),p(`${t}_success`,a),window.location.href=y}catch{d(l.l,v)}finally{m()}}),[x,y,p,m,v,d,a,t])}}},65049:(e,t,a)=>{"use strict";a.d(t,{x:()=>o});var r=a(51609);const o=()=>{(0,r.useEffect)((()=>{const e=document.documentElement.classList.contains("wp-toolbar");return document.body.classList.add("jetpack-admin-full-screen"),e&&document.documentElement.classList.remove("wp-toolbar"),()=>{document.body.classList.remove("jetpack-admin-full-screen"),e&&document.documentElement.classList.add("wp-toolbar")}}))}},13588:(e,t,a)=>{"use strict";a.d(t,{L:()=>s});var r=a(51609),o=a(38837),n=a(64526),l=a(33981);function s({slug:e}){const{recordEvent:t}=(0,n.A)(),a=(0,l.A)(o.NM.Home);return{onClickGoBack:(0,r.useCallback)((r=>{e&&t("jetpack_myjetpack_product_interstitial_back_link_click",{product:e}),document.referrer.includes(window.location.host)&&(r.preventDefault(),a())}),[t,e,a])}}},34847:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r=(e,t,a)=>{if(!e||a)return"unknown";const{modules:r,jetpackPlugins:o,isSiteConnected:n,isUserConnected:l}=e;return 0===t.length&&r.length<3?l&&n||0!==r.length||1!==o.length?"new":"brand-new":1===t.length&&r.length<10?"settling-in":"established"}},31368:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var r=a(31504),o=a(280),n=a(68242),l=a(51870),s=a(34847);const i=()=>{const e=(0,n.A$)("lifecycleStats"),{isSiteConnected:t}=(0,l.A)(),{data:a,isLoading:i,isError:c}=(0,o.A)({name:r.Ck,query:{path:r.tb},options:{enabled:t}}),u=!a||c||i?[]:a;return["unknown","brand-new","new"].includes((0,s.A)(e,u,i))}},51870:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(39384),o=a(68242);const n=({skipUserConnection:e=!1,redirectUri:t=""}={})=>{const{apiRoot:a,apiNonce:n}=(0,o.qG)(),{topJetpackMenuItemUrl:l,blogID:s}=(0,o.A$)(),{registrationNonce:i}=(0,o.SF)(),c=(0,r.useConnection)({apiRoot:a,apiNonce:n,registrationNonce:i,skipUserConnection:e,from:"my-jetpack",redirectUri:t,autoTrigger:!1}),u=c.isRegistered,d=c.isRegistered,v=c.hasConnectedOwner;return{apiNonce:n,apiRoot:a,blogID:s,registrationNonce:i,...c,isSiteConnected:u,siteIsRegistered:d,topJetpackMenuItemUrl:l,hasConnectedOwner:v}}},33981:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(51609),o=a(29539);const n=e=>{const t=(0,o.Zp)();return(0,r.useCallback)((a=>t(e,a)),[t,e])}},25994:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var r=a(70028);const o=()=>{const[e]=(0,r.ok)(),t=e.get("returnTo");return t?`admin.php?page=my-jetpack#/${t}`:"admin.php?page=my-jetpack"}},38318:(e,t,a)=>{"use strict";a.d(t,{n:()=>c});var r=a(3924),o=a(56427),n=a(86087),l=a(27723),s=a(51609),i=a(68242);const __=l.__,_n=l._n,c=({alert:e,planName:t,planPurchaseId:a})=>{const{needs_installed:c,needs_activated_only:u}=e||{},d=(c?.length??0)+(u?.length??0),{siteSuffix:v}=(0,i.A$)(),p=(0,s.useMemo)((()=>c&&u?"install_activate":c?"install":"activate"),[u,c]),m={install_activate:__("Plugin installation and activation needed","jetpack-my-jetpack"),install:__("Plugin installation needed","jetpack-my-jetpack"),activate:__("Plugin activation needed","jetpack-my-jetpack")},h={install_activate:__("Some plugins need to be installed and/or activated","jetpack-my-jetpack"),install:__("Some plugins need to be installed","jetpack-my-jetpack"),activate:__("Some plugins need to be activated","jetpack-my-jetpack")},f={install_activate:(0,n.createInterpolateElement)((0,l.sprintf)( -// translators: %1$s is the name of the Jetpack paid plan, i.e.- "Jetpack Security", and %2$s word "plugin" as singular, or plural ("plugins"). -__("To get the most out of your %1$s paid subscription and have access to all it’s features, we recommend you install and/or activate the following %2$s:","jetpack-my-jetpack"),t,_n("plugin","plugins",d,"jetpack-my-jetpack")),{link:React.createElement(o.ExternalLink,{href:(0,r.A)("jetpack-subscription-renew",{site:v,path:a})})}),install:(0,n.createInterpolateElement)((0,l.sprintf)( -// translators: %1$s is the name of the Jetpack paid plan, i.e.- "Jetpack Security", and %2$s word "plugin" as singular, or plural ("plugins"). -__("To get the most out of your %1$s paid subscription and have access to all it’s features, we recommend you install and activate the following %2$s:","jetpack-my-jetpack"),t,_n("plugin","plugins",d,"jetpack-my-jetpack")),{link:React.createElement(o.ExternalLink,{href:(0,r.A)("jetpack-subscription-renew",{site:v,path:a})})}),activate:(0,n.createInterpolateElement)((0,l.sprintf)( -// translators: %1$s is the name of the Jetpack paid plan, i.e.- "Jetpack Security", and %2$s word "plugin" as singular, or plural ("plugins"). -__("To get the most out of your %1$s paid subscription and have access to all it’s features, we recommend you activate the following %2$s:","jetpack-my-jetpack"),t,_n("plugin","plugins",d,"jetpack-my-jetpack")),{link:React.createElement(o.ExternalLink,{href:(0,r.A)("jetpack-subscription-renew",{site:v,path:a})})})},g={install_activate:(0,l.sprintf)(/* translators: %1$s is "plugin" or "plugins" (singular/plural) */ -__("Install and/or activate %1$s in one click","jetpack-my-jetpack"),_n("plugin","plugins",d,"jetpack-my-jetpack")),install:(0,l.sprintf)(/* translators: %1$s is "plugin" or "plugins" (singular/plural) */ -__("Install and activate %1$s in one click","jetpack-my-jetpack"),_n("plugin","plugins",d,"jetpack-my-jetpack")),activate:(0,l.sprintf)(/* translators: %1$s is "plugin" or "plugins" (singular/plural) */ -__("Activate %1$s in one click","jetpack-my-jetpack"),_n("plugin","plugins",d,"jetpack-my-jetpack"))};return{noticeTitle:1===d?m[p]:h[p],noticeMessage:f[p],buttonLabel:g[p]}}},7436:(e,t,a)=>{"use strict";a.d(t,{A:()=>d});var r=a(62902),o=a(37898),n=a(15048),l=a(68245),s=a(75782),i=a(53866),c=a(247),u=a(52963);const d=()=>{const{isLoading:e,data:t}=(0,r.A)();(0,i.A)(t,e),(0,c.A)(t,e),(0,s.A)(t,e),(0,o.A)(t,e),(0,l.A)(),(0,u.A)(t,e),(0,n.A)(t,e)}},50977:(e,t,a)=>{"use strict";a.d(t,{j:()=>r});const r=({products:e})=>e?React.createElement("ul",{className:"products-list"},e.map(((e,t)=>React.createElement("li",{key:t,className:"product-badge"},e)))):null},37898:(e,t,a)=>{"use strict";a.d(t,{A:()=>f});var r=a(3924),o=a(28509),n=a(47425),l=a(38443),s=a(27723),i=a(51609),c=a(73537),u=a(76007),d=a(88220),v=a(79131),p=a(72434),m=a(64526),h=a(40271);const __=s.__,f=(e,t)=>{const{recordEvent:a}=(0,m.A)(),{setNotice:f,resetNotice:g}=(0,i.useContext)(u.g),{type:w,data:{status:b,last_updated:y}}=e?.backup_failure||{type:"error",data:{}},{reasonContent:x}=(0,h.A)()||{},{text:_}=x||{},{timezone:{offset:k}}=(0,l.getSettings)()||{offset:"0"},E=(0,l.dateI18n)("F jS, Y g:ia",(0,d.w)(y,parseInt(k))),C=(0,r.A)("jetpack-support-troubleshooting-backup"),j=(0,r.A)("jetpack-support"),A=__("Oops! We couldn’t back up your site","jetpack-my-jetpack"),S=(0,i.useCallback)((()=>{(0,v.A)("backup_failure_dismissed",7),delete e?.backup_failure,g()}),[e?.backup_failure,g]),P=(0,i.useCallback)((()=>{window.open(C),a("jetpack_my_jetpack_backup_needs_attention_notice_primary_cta_click",{backup_status:b})}),[a,b,C]),R=(0,i.useCallback)((()=>{window.open(j),a("jetpack_my_jetpack_backup_needs_attention_notice_secondary_cta_click",{backup_status:b})}),[a,b,j]);(0,i.useEffect)((()=>{if(!e?.backup_failure)return;const a=React.createElement(o.A,null,React.createElement(n.Ay,{mb:1},(0,p.A)((0,s.sprintf)( -// Translators: %1$s is the date the last backup took place, i.e.- "Dec 7, 2024" -__("The last backup attempted on %1$s was unsuccessful.","jetpack-my-jetpack"),E))),!t&&_&&React.createElement(n.Ay,{mb:1},(0,p.A)(_)),React.createElement(n.Ay,{mb:1},(0,p.A)(__("Check out our troubleshooting guide or contact your hosting provider to resolve the issue.","jetpack-my-jetpack")))),r={id:"backup-needs-attention-notice",level:w,actions:[{label:__("Read troubleshooting guide","jetpack-my-jetpack"),onClick:P,noDefaultClasses:!0},{label:__("Contact support","jetpack-my-jetpack"),onClick:R,isExternalLink:!0}],onClose:S,hideCloseButton:!1,priority:c.pv};t||f({title:A,message:a,options:r})}),[e,f,a,S,P,R,A,E,w,_,t])}},15048:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var r=a(27723),o=a(51609),n=a(73537),l=a(76007),s=a(64526);const __=r.__,i=(e,t)=>{const{setNotice:a}=(0,o.useContext)(l.g),{recordEvent:i}=(0,s.A)();(0,o.useEffect)((()=>{const o=t?[]:Object.keys(e).filter((e=>e.endsWith("-bad-installation")));if(0===o.length)return;const l=e[o[0]],{plugin:s}=l.data,c=(0,r.sprintf)( -// translators: %s is the name of the plugin that has a bad installation. -__("Your installation of %1$s is incomplete. If you installed %1$s from GitHub, please refer to the developer documentation to set up your development environment.","jetpack-my-jetpack"),s),u={id:"bad-installation-notice",level:"error",actions:[{label:__("See documentation","jetpack-my-jetpack"),onClick:()=>{window.open("https://github.com/Automattic/jetpack/blob/trunk/docs/development-environment.md"),i("jetpack_my_jetpack_bad_installation_notice_cta_click",{plugin:s})},noDefaultClasses:!0}],priority:n.EX};t||a({message:c,options:u})}),[e,a,i,t])}},68245:(e,t,a)=>{"use strict";a.d(t,{A:()=>d});var r=a(28509),o=a(47425),n=a(39384),l=a(27723),s=a(51609),i=a(73537),c=a(76007),u=a(64526);const __=l.__,d=()=>{const{setNotice:e,currentNotice:t}=(0,s.useContext)(c.g),{hasConnectionError:a,connectionErrorMessage:d}=(0,n.useConnectionErrorNotice)(),{restoreConnection:v,isRestoringConnection:p,restoreConnectionError:m}=(0,n.useRestoreConnection)(),{recordEvent:h}=(0,u.A)();(0,s.useEffect)((()=>{if(!a)return;let t=d;m&&(t=React.createElement(r.A,null,React.createElement(o.Ay,{mb:2},(0,l.sprintf)(/* translators: placeholder is the error. */ -__("There was an error reconnecting Jetpack. Error: %s","jetpack-my-jetpack"),m)),React.createElement(o.Ay,{mb:2},d)));const n=__("Reconnecting Jetpack…","jetpack-my-jetpack"),s={id:"connection-error-notice",level:"error",actions:[{label:__("Restore Connection","jetpack-my-jetpack"),onClick:()=>{v(),h("jetpack_my_jetpack_connection_error_notice_reconnect_cta_click")},isLoading:p,loadingText:n,noDefaultClasses:!0}],priority:i.pv+(p?1:0)};e({message:t,options:s})}),[e,h,a,d,v,p,m,t.options.priority])}},75782:(e,t,a)=>{"use strict";a.d(t,{A:()=>u});var r=a(27723),o=a(51609),n=a(73537),l=a(76007),s=a(79131),i=a(64526),c=a(77068);const __=r.__,u=(e,t)=>{const{setNotice:a,resetNotice:r}=(0,o.useContext)(l.g),{recordEvent:u}=(0,i.A)(),d=t?[]:Object.keys(e).filter((e=>e.endsWith("--plan_expiring_soon")||e.endsWith("--plan_expired"))),v=d.length&&d.filter((e=>e.endsWith("--plan_expired"))),p=d.length&&d.filter((e=>e.endsWith("--plan_expiring_soon"))),m=v.length?v[0]:p[0],h=m&&m.endsWith("--plan_expired"),f=h?"expired":"expiring-soon",{product_slug:g,product_name:w,expiry_date:b,manage_url:y,products_effected:x}=e?.[m]||{},{noticeTitle:_,noticeMessage:k,learnMoreUrl:E}=(0,c.t)({productSlug:g,expiredAlertType:f,productName:w,expiryDate:b,productsEffected:x})||{},C=(0,o.useMemo)((()=>h?`${g}--plan_expired`:`${g}--plan_expiring_soon`),[h,g]),j=(0,o.useCallback)((()=>{(0,s.A)(`${C}_dismissed`,7),delete e[m],r()}),[m,e,r,C]),A=(0,o.useCallback)((()=>{window.location.href=y,u(h?"jetpack_my_jetpack_plan_expired_notice_primary_cta_click":"jetpack_my_jetpack_plan_expiring_soon_notice_primary_cta_click",{product_slug:g})}),[h,y,g,u]),S=(0,o.useCallback)((()=>{window.open(E),u(h?"jetpack_my_jetpack_plan_expired_notice_secondary_cta_click":"jetpack_my_jetpack_plan_expiring_soon_notice_secondary_cta_click",{product_slug:g})}),[E,h,g,u]);(0,o.useEffect)((()=>{if(!m)return;const e=__("Resume my plan","jetpack-my-jetpack"),r=__("Renew my plan","jetpack-my-jetpack"),o={id:h?"plan-expired-notice":"plan-expiring-soon-notice",level:h?"error":"warning",actions:[{label:h?e:r,onClick:A,noDefaultClasses:!0},{label:__("Learn more","jetpack-my-jetpack"),onClick:S,isExternalLink:!0}],onClose:j,hideCloseButton:!1,priority:n.EX};t||a({title:_,message:k,options:o})}),[e,a,u,m,j,A,S,_,k,h,g,C,t])}},77068:(e,t,a)=>{"use strict";a.d(t,{t:()=>i});var r=a(28509),o=a(47425),n=a(38443),l=a(27723),s=a(50977);const __=l.__,i=({productSlug:e,expiredAlertType:t,productName:a,expiryDate:i,productsEffected:c})=>{if(!e)return null;const u=e.replace(/(?:_t1|_t2|_bi)?(?:_yearly|_monthly)/,""),d=(0,n.gmdateI18n)("M j, Y",i),v="expired"===t?(0,l.sprintf)( -// translators: %s is the Jetpack product name, i.e.- Jetpack Backup, Jetpack Security, etc.. -__("Your %1$s plan has expired","jetpack-my-jetpack"),a):(0,l.sprintf)( -// translators: %1$s is the Jetpack product name, i.e.- Jetpack Backup, Jetpack Security, etc.. -__("Heads up! Your %1$s plan is about to expire","jetpack-my-jetpack"),a);switch(u){case"jetpack_videopress":return{noticeTitle:v,noticeMessage:"expired"===t?React.createElement(React.Fragment,null,React.createElement(r.A,null,React.createElement(o.Ay,{mt:2,mb:2},__("Your videos are no longer visible to your viewers, and you won’t be able to upload new content.","jetpack-my-jetpack")),React.createElement(o.Ay,{mb:2},__("Don’t worry—you can resume your plan anytime to restore your video library and continue uploading.","jetpack-my-jetpack")))):React.createElement(React.Fragment,null,React.createElement(r.A,null,React.createElement(o.Ay,{mt:2,mb:2},__("Your videos will soon stop showing for your viewers, and you won’t be able to upload new content.","jetpack-my-jetpack")),React.createElement(o.Ay,{mb:2},(0,l.sprintf)( -// translators: %1$s is the product's expiration date, i.e.- "Nov 11, 2024" -__("To keep everything running smoothly, renew your plan by %1$s!","jetpack-my-jetpack"),d)))),learnMoreUrl:"https://jetpack.com/support/jetpack-videopress/#canceled-or-expired-videopress-plan"};case"jetpack_complete":case"jetpack_security":case"jetpack_growth":return{noticeTitle:v,noticeMessage:"expired"===t?React.createElement(React.Fragment,null,React.createElement(r.A,null,React.createElement(o.Ay,{mt:2},(0,l.sprintf)( -// translators: %1$s is the Jetpack product name, i.e.- Jetpack Backup, Jetpack Security, etc.. -__("%1$s provides paid features for the following products:","jetpack-my-jetpack"),a)),React.createElement(s.j,{products:c}),React.createElement(o.Ay,{mb:2},(0,l.sprintf)( -// translators: %1$s is the Jetpack product name, i.e.- Jetpack Backup, Jetpack Security, etc.. -__("Since your %1$s plan is expired, the paid features for these products are no longer available for your site.","jetpack-my-jetpack"),a)),React.createElement(o.Ay,{mb:2},__("But don’t worry—you can resume your plan to restore your access to your plan’s paid features.","jetpack-my-jetpack")))):React.createElement(React.Fragment,null,React.createElement(r.A,null,React.createElement(o.Ay,{mt:2},(0,l.sprintf)( -// translators: %1$s is the Jetpack product name, i.e.- Jetpack Backup, Jetpack Security, etc.. -__("%1$s provides paid features for the following products:","jetpack-my-jetpack"),a)),React.createElement(s.j,{products:c}),React.createElement(o.Ay,{mb:2},(0,l.sprintf)( -// translators: %1$s is the product's expiration date, i.e.- "Nov 11, 2024" -__("Renew your plan by %1$s to continue to have access to the paid features of these products.","jetpack-my-jetpack"),d)))),learnMoreUrl:"https://jetpack.com/support/jetpack-billing-payments/"};default:return{noticeTitle:v,noticeMessage:"expired"===t?React.createElement(React.Fragment,null,React.createElement(r.A,null,React.createElement(o.Ay,{mt:2,mb:2},(0,l.sprintf)( -// translators: %1$s is the Jetpack product name, i.e.- Jetpack Backup, Jetpack Security, etc.. -__("Your %1$s subcription has expired. The paid features are no longer available.","jetpack-my-jetpack"),a)),React.createElement(o.Ay,{mb:2},__("Don’t worry—you can resume your plan anytime to restore your access to the upgraded features.","jetpack-my-jetpack")))):React.createElement(React.Fragment,null,React.createElement(r.A,null,React.createElement(o.Ay,{mt:2,mb:2},(0,l.sprintf)( -// translators: %1$s is the Jetpack product name, i.e.- Jetpack Backup, Jetpack Security, etc.., %2$s is the product's expiration date, i.e.- "Nov 11, 2024". -__("Your %1$s subcription will be expiring soon on %2$s, and the paid features for this product will no longer be available.","jetpack-my-jetpack"),a,d)),React.createElement(o.Ay,{mb:2},__("To keep everything running smoothly, renew your plan today!","jetpack-my-jetpack")))),learnMoreUrl:"https://jetpack.com/support/jetpack-billing-payments/"}}}},40271:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var r=a(27723),o=a(51609),n=a(62902);const __=r.__,l=()=>{const{data:e,isLoading:t}=(0,n.A)(),{backup_failure:a}=e,l=a?.data?.status;return{isLoading:t,reasonContent:(0,o.useMemo)((()=>{switch(l){case"missing_plan":return{title:__("Missing Backup plan","jetpack-my-jetpack"),text:__("The site does not appear to have a valid Backup plan. Please purchase a Backup plan in order activate the features of Jetpack Backup.","jetpack-my-jetpack")};case"no_connected_jetpack":return{title:__("Not connected","jetpack-my-jetpack"),text:__("The site doesn’t appear to be connected. Backup requires an active Jetpack connection in order to function properly.","jetpack-my-jetpack")};case"no_connected_jetpack_with_credentials":return{title:__("Not connected","jetpack-my-jetpack"),text:__("The site doesn’t appear to be connected. Backup requires an active Jetpack connection in order to function properly, although successful Backups may still appear in the logs.","jetpack-my-jetpack")};case"vp_active_on_site":return{title:__("Backup plugin conflict","jetpack-my-jetpack"),text:__("We’ve detected VaultPress is currently active on the site. VaultPress and Jetpack Backup cannot run simultaneously. In order to activate Jetpack Backup, you will first need to deactivate VaultPress.","jetpack-my-jetpack")};case"vp_can_transfer":return{title:__("Transfer VaultPress","jetpack-my-jetpack"),text:__("We’ve detected VaultPress is currently active on the site, and we can automatically transfer it over to Jetpack Backup (Rewind), but you will need to trigger the transfer manually.","jetpack-my-jetpack")};case"host_not_supported":return{title:__("Host not supported","jetpack-my-jetpack"),text:__("Backup doesn’t currently support the host that the site is hosted on.","jetpack-my-jetpack")};case"multisite_not_supported":return{title:__("Multi-site not supported","jetpack-my-jetpack"),text:__("Backup can’t be activated on multi-site installations, neither the network site or its sub-sites.","jetpack-my-jetpack")};case"no_site_found":return{title:__("No site record","jetpack-my-jetpack"),text:__("The VaultPress API could not recognize the site ID associated with your site, or multiple site ID’s are associated with the same site domain.","jetpack-my-jetpack")};case"no-credentials":return{title:__("No credentials found","jetpack-my-jetpack"),text:__("No remote server credentials were found. Please add your website’s server credentials in Backup settings so Backup can fully function properly.","jetpack-my-jetpack")};case"no-credentials-atomic":return{title:__("No credentials (Atomic)","jetpack-my-jetpack"),text:__("There appears to be some issue with the Atomic API or a networking type issue. Please try again shortly to see if the issue has resolved.","jetpack-my-jetpack")};case"credential-error":return{title:__("Backup error","jetpack-my-jetpack"),text:__("Although the site appears to be up and accessible, and remote server credentials are set, Backup still encountered an error during the last backup attempt.","jetpack-my-jetpack")};case"http-only-error":return{title:__("Backup error","jetpack-my-jetpack"),text:__("Although the site appears to be up and accessible, Backup still encountered an error during the last backup attempt.","jetpack-my-jetpack")};case"not-accessible":return{title:__("Site unavailable","jetpack-my-jetpack"),text:__("Backup was unable to access your site during the last backup attempt. This could be due to networking issues, a block from your host, or other server issues.","jetpack-my-jetpack")};case"Kill switch active":case"backup-deactivated":return{title:__("Backup is deactivated","jetpack-my-jetpack"),text:__("It appear Backup has been manually deactivated, either by a site attribute or a general kill switch.","jetpack-my-jetpack")};case"error":return{title:__("Backup system error","jetpack-my-jetpack"),text:__("Backup has encountered a general system error and was unable to complete the last backup attempt.","jetpack-my-jetpack")};default:{if(!l)return{title:null,text:null};const e=l.split(/[_\s-]/);e[0]=e[0].charAt(0).toUpperCase()+e[0].slice(1);const t=e.join(" ");return{title:(0,r.sprintf)( -// translators: %s is the error code coming from the server (formatted, i.e.- first word capitalized, hypen's removed, etc. ) i.e.- 'Invalid credentials', 'File not found', etc. -__("%s error","jetpack-my-jetpack"),t),text:(0,r.sprintf)( -// translators: %s is the error code coming from the server. i.e.- 'invalid-credentials', 'file-not-found', etc. -__("Error code: %s","jetpack-my-jetpack"),l)}}}}),[l])}}},53866:(e,t,a)=>{"use strict";a.d(t,{A:()=>b});var r=a(28509),o=a(47425),n=a(56427),l=a(27723),s=a(51609),i=a(73537),c=a(76007),u=a(31504),d=a(41526),v=a(55394),p=a(280),m=a(68242),h=a(51870),f=a(79131),g=a(64526),w=a(38318);const __=l.__,_n=l._n,b=(e,t)=>{const{setNotice:a,resetNotice:b}=(0,s.useContext)(c.g),{recordEvent:y}=(0,g.A)(),{isSiteConnected:x}=(0,h.A)(),_=(0,p.A)({name:u.Ck,query:{path:u.tb},options:{enabled:x}}),{isLoading:k,isError:E}=_,C=_.data,j=C&&!k&&!E,A="object"==typeof e?Object.keys(e).length:0,S=(0,s.useMemo)((()=>t||0===A?[]:Object.keys(e).filter((e=>e.endsWith("--plugins_needing_installed_activated")))),[t,A,e]),P=e?.[S[0]],R=S[0],M=R?.split("--")[0],V=(0,s.useMemo)((()=>j&&C.find((e=>e.product_slug===M))),[j,M,C]),z=V&&V.product_name,{needs_installed:H,needs_activated_only:L}=P||{},O=(H?.length??0)+(L?.length??0),{products:{items:N}}=(0,m.A$)(),I=(0,s.useMemo)((()=>H&&L?"install_activate":H?"install":"activate"),[L,H]),B=(0,s.useCallback)(((e,t)=>({productSlug:e,pluginSlug:N[e].plugin_slug,pluginName:"jetpack"===N[e].plugin_slug?"Jetpack":N[e].title,action:t,pluginUri:`https://wordpress.org/plugins/${N[e].plugin_slug}/`})),[N]),T=(0,s.useMemo)((()=>{if(H&&L){const e=new Set;return[...[...H].map((e=>B(e,"install"))),...[...L].map((e=>B(e,"activate")))].filter((({pluginSlug:t})=>!e.has(t)&&e.add(t)))}if(H){const e=new Set;return H.map((e=>B(e,"install"))).filter((({pluginSlug:t})=>!e.has(t)&&e.add(t)))}const e=new Set;return L?.map((e=>B(e,"activate"))).filter((({pluginSlug:t})=>!e.has(t)&&e.add(t)))}),[B,L,H]),{noticeTitle:F,noticeMessage:D,buttonLabel:G}=(0,w.n)({alert:P,planName:z,planPurchaseId:V?.ID}),U=(0,s.useCallback)((e=>{if(!e)return[];return[...e].map((e=>({productSlug:e,pluginSlug:N[e].plugin_slug}))).sort(((e,t)=>"jetpack"===e.pluginSlug?1:"jetpack"===t.pluginSlug?-1:e.productSlug-t.productSlug)).map((({productSlug:e})=>e))}),[N]),q=U(H),Z=U(L),W=q.find((e=>"jetpack"===N[e].plugin_slug)),$=(0,s.useCallback)((()=>{(0,f.A)(`${M}--plugins_needing_installed_dismissed`,14),delete e[S[0]],b()}),[M,S,e,b]),{install:J,isPending:K}=(0,v.A)(q),{activate:Q,isPending:Y}=(0,d.A)(Z),X=(0,s.useCallback)((()=>{if(y("jetpack_my_jetpack_plugin_needs_installed_notice_cta_click"),q.length&&Z.length)return W?void Q(null,{onSuccess:()=>{J(null,{onSuccess:()=>{delete e[S[0]],b()}})}}):void J(null,{onSuccess:()=>{Q(null,{onSuccess:()=>{delete e[S[0]],b()}})}});q.length?J(null,{onSuccess:()=>{delete e[S[0]],b()}}):Z.length&&Q(null,{onSuccess:()=>{delete e[S[0]],b()}})}),[y,q,Z,W,J,Q,e,S,b]);(0,s.useEffect)((()=>{if(0===S.length||!j)return;const e={install:__("Needs installation and activation","jetpack-my-jetpack"),activate:__("Needs activation","jetpack-my-jetpack")},s=React.createElement(React.Fragment,null,React.createElement(r.A,null,React.createElement(o.Ay,{mt:2,mb:2},D),React.createElement("ul",{className:"plugins-list"},T?.length>0&&T.map(((t,a)=>React.createElement("li",{key:a,className:"plugin-item"},"activate"===t.action?React.createElement("a",{href:"/wp-admin/plugins.php"},t.pluginName):React.createElement(n.ExternalLink,{href:t.pluginUri},t.pluginName),React.createElement("span",null,"(",e[t.action],")"))))))),c=Y||K,u={id:"plugin_needs_installed_activated",level:"warning",actions:[{label:G,onClick:X,isLoading:c,loadingText:"activate"===I?(0,l.sprintf)(/* translators: %s is the singular or plural "plugin" or "plugins". */ -__("Activating %s…","jetpack-my-jetpack"),_n("plugin","plugins",O,"jetpack-my-jetpack")):(0,l.sprintf)(/* translators: %s is the singular or plural "plugin" or "plugins". */ -__("Installing and activating %s…","jetpack-my-jetpack"),_n("plugin","plugins",O,"jetpack-my-jetpack")),noDefaultClasses:!0}],onClose:$,hideCloseButton:!1,priority:i.EX+(c?1:0)};t||a({title:F,message:s,options:u})}),[I,F,D,G,j,O,$,X,z,V,T,S.length,a,K,Y,M,t])}},247:(e,t,a)=>{"use strict";a.d(t,{A:()=>m});var r=a(3924),o=a(28509),n=a(47425),l=a(27723),s=a(51609),i=a(73537),c=a(76007),u=a(74923),d=a(79131),v=a(72434),p=a(64526);const __=l.__,m=(e,t)=>{const{recordEvent:a}=(0,p.A)(),{setNotice:m,resetNotice:h}=(0,s.useContext)(c.g),{detail:f}=(0,u.A)("protect"),{hasPaidPlanForProduct:g,standalonePluginInfo:w,manageUrl:b}=f||{},{isStandaloneActive:y}=w||{},{type:x,data:{threat_count:_,critical_threat_count:k,fixable_threat_ids:E}}=e?.protect_has_threats||{type:"warning",data:{}},C=(0,r.A)("protect-footer-learn-more-scan",{anchor:"how-do-i-fix-threats"}),j=(0,l.sprintf)( -// translators: %s is the product name. Can be either "Scan" or "Protect". -__("%s found threats on your site","jetpack-my-jetpack"),g&&y?"Protect":"Scan"),A=(0,s.useCallback)((()=>{(0,d.A)("protect_threats_detected_dismissed",7),delete e?.protect_has_threats,h()}),[e?.protect_has_threats,h]),S=(0,s.useCallback)((()=>{window.open(b),a("jetpack_my_jetpack_protect_threats_detected_notice_primary_cta_click",{threat_count:_,critical_threat_count:k,fixable_threat_ids:E})}),[k,E,b,a,_]),P=(0,s.useCallback)((()=>{window.open(C),a("jetpack_my_jetpack_protect_threats_detected_notice_secondary_cta_click",{threat_count:_,critical_threat_count:k,fixable_threat_ids:E})}),[k,C,E,a,_]);(0,s.useEffect)((()=>{if(!e?.protect_has_threats)return;const a=React.createElement(o.A,null,React.createElement(n.Ay,{mb:1},(0,v.A)(__("We’ve detected some security threats that need your attention.","jetpack-my-jetpack"))),React.createElement(n.Ay,{mb:1},(0,v.A)((0,l.sprintf)( -// translators: %s is the product name. Can be either "Scan" or "Protect". -__("Visit the %s dashboard to view threat details, auto-fix threats, and keep your site safe.","jetpack-my-jetpack"),g&&y?"Protect":"Scan")))),r={id:"protect-threats-detected-notice",level:x,actions:[{label:__("Fix threats","jetpack-my-jetpack"),onClick:S,noDefaultClasses:!0},{label:__("Learn more","jetpack-my-jetpack"),onClick:P,isExternalLink:!0}],onClose:A,hideCloseButton:!1,priority:i.EX};t||m({title:j,message:a,options:r})}),[g,y,j,A,S,P,e?.protect_has_threats,m,x,t])}},52963:(e,t,a)=>{"use strict";a.d(t,{A:()=>w});var r=a(28509),o=a(47425),n=a(85879),l=a(27723),s=a(51609),i=a(38837),c=a(73537),u=a(76007),d=a(488),v=a(65350),p=a(18117),m=a(64526),h=a(36312),f=a(51870),g=a(33981);const __=l.__,w=(e,t)=>{const{recordEvent:a}=(0,m.A)(),{setNotice:w,resetNotice:b}=(0,s.useContext)(u.g),{siteIsRegistering:y,isSiteConnected:x}=(0,f.A)({skipUserConnection:!0}),{data:_,isLoading:k,isError:E}=(0,d.V)(),C=(0,g.A)(i.NM.ConnectionSkipPricing),j="missing-connection",A=e?.[j],{connectSite:S}=(0,h.A)({tracksInfo:{event:"jetpack_my_jetpack_site_connection_notice_cta",properties:{}}}),{refetch:P}=(0,v.A)(),R=(0,s.useMemo)((()=>t||k||E?[]:(0,p.A)(_)),[t,E,k,_]);(0,s.useEffect)((()=>{if(!A)return;const e="user"===A.type,s=(0,l.sprintf)(/* translators: placeholder is product name. */ -__("Jetpack %s needs a user connection to WordPress.com to be able to work.","jetpack-my-jetpack"),R[0]),i={message:1===R.length?s:__("Some products need a user connection to WordPress.com to be able to work.","jetpack-my-jetpack"),buttonLabel:__("Connect your user account","jetpack-my-jetpack"),title:__("Missing user connection","jetpack-my-jetpack")},u={message:__("Some products need a connection to WordPress.com to be able to work.","jetpack-my-jetpack"),buttonLabel:__("Connect your site","jetpack-my-jetpack"),title:__("Missing site connection","jetpack-my-jetpack")},d={id:j,level:A.is_error?"error":"info",actions:[{label:e?i.buttonLabel:u.buttonLabel,isLoading:y,loadingText:__("Connecting…","jetpack-my-jetpack"),onClick:({e:t})=>{e?(a("jetpack_my_jetpack_user_connection_notice_cta_click"),C()):S(t)},noDefaultClasses:!0}],priority:c.pv+(y?1:0),isRedBubble:!0,tracksArgs:{type:A.type,is_error:A.is_error}},v=e?i.message:React.createElement(r.A,null,React.createElement(o.Ay,{mb:2},u.message),React.createElement(n.A,{agreeButtonLabel:u.buttonLabel}));t||w({message:v,title:e?i.title:u.title,options:d})}),[x,S,C,_,a,e,b,w,y,A,P,R,t])}},51413:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});var r=a(51609);const o=(e,t)=>{(0,r.useEffect)((()=>{const a=a=>{a.target instanceof Element&&e.current&&!e.current.contains(a.target)&&t(a)};return document.addEventListener("mousedown",a),()=>{document.removeEventListener("mousedown",a)}}),[e,t])}},1524:(e,t,a)=>{"use strict";function r(){const e=window.location.search;return new URLSearchParams(e).has("redirect_to_referrer","1")&&""!==document.referrer?document.referrer:null}a.d(t,{y:()=>r})},90926:(e,t,a)=>{"use strict";a.d(t,{A:()=>i});var r=a(50723),o=a(70116),n=a(77115),l=a(76007),s=a(56077);const i=({children:e})=>{const t=new o.E;return React.createElement(r.Ay,null,React.createElement(l.A,null,React.createElement(s.A,null,React.createElement(n.Ht,{client:t},e))))}},88220:(e,t,a)=>{"use strict";a.d(t,{w:()=>o});var r=a(38443);function o(e,t){const a=(0,r.getDate)(e);return a.setHours(a.getHours()+t),a}},79131:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r=(e,t)=>{const a=new Date(Date.now()+864e5*t);document.cookie=`${e}=1; expires=${a.toString()}; SameSite=None; Secure`}},56581:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(37975);const o={maximumFractionDigits:1,notation:"compact"},n=(e,t=o)=>null!==e&&Number.isFinite(e)?(0,r.A)(e,t):"-"},88496:(e,t,a)=>{"use strict";a.d(t,{A:()=>n});var r=a(37975);const o={style:"percent"},n=(e,t=o)=>null!==e&&Number.isFinite(e)?(t.style="percent",(0,r.A)(e,t)):"-"},32753:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});const r=e=>{e=Math.floor(e);const t=Math.floor(e/24),a=Math.floor(t/365);if(a>0)return`${a}y ${t%365}d`;if(t>0)return`${t}d ${e%24}h`;const r=Math.floor(3600*e),o=Math.floor(r/60);return e>0?`${e}h ${o%60}m`:o>0?`${o}m ${r%60}s`:`${Math.floor(r)}s`}},46256:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var r=a(3924),o=a(38837),n=a(68242);const l=()=>{const{siteSuffix:e="",blogID:t}=(0,n.A$)();return(0,r.A)(o.OM,{site:t??e})}},93542:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var r=a(3924),o=a(38837),n=a(68242);const l=()=>{const{siteSuffix:e="",blogID:t,myJetpackCheckoutUri:a,lifecycleStats:l,siteSuffix:s,adminUrl:i}=(0,n.A$)(),{isSiteConnected:c,isUserConnected:u}=l,d=c&&u,v=d?o.ED:o.mk;return(0,r.A)(v,(()=>{const r=`${`redirect_to=${a}`}${d?"":`&connect_after_checkout=true&from_site_slug=${s}&admin_url=${i}&unlinked=1`}`;return d?{site:t??e,query:r}:{query:r}})())}},23658:(e,t,a)=>{"use strict";a.d(t,{w:()=>o});var r=a(68242);const o=()=>{const{plugins:e}=(0,r.A$)()||{},t=Object.values(e).find((e=>"Jetpack"===e?.Name));return t&&t.active}},28252:(e,t,a)=>{"use strict";a.d(t,{M:()=>o,b:()=>r});const r=({partner_slug:e})=>!!e&&"goldenticket"===e;function o(e){return!!Array.isArray(e)&&e.filter((e=>r(e))).length>0}},72434:(e,t,a)=>{"use strict";a.d(t,{A:()=>o});const r=/\s+(\S*)$/,o=(e,t=2)=>((e,t)=>{let a=0;if(e&&e.length>0){let o=e,n="";for(;a{"use strict";a.d(t,{_:()=>o});var r=a(27723);const _n=r._n,__=r.__;function o(e){const t=new Date,a=6e4*t.getTimezoneOffset(),o=Math.floor((new Date(t.getTime()+a).getTime()-e)/1e3);let n=o/31536e3;return n>1?(0,r.sprintf)( -// translators: placeholder is a number amount of years i.e. "5 years ago". -_n("%s year ago","%s years ago",Math.floor(n),"jetpack-my-jetpack"),Math.floor(n)):(n=o/2592e3,n>1?(0,r.sprintf)( -// translators: placeholder is a number amount of months i.e. "5 months ago". -_n("%s month ago","%s months ago",Math.floor(n),"jetpack-my-jetpack"),Math.floor(n)):(n=o/86400,n>1?(0,r.sprintf)( -// translators: placeholder is a number amount of days i.e. "5 days ago". -_n("%s day ago","%s days ago",Math.floor(n),"jetpack-my-jetpack"),Math.floor(n)):(n=o/3600,n>1?(0,r.sprintf)( -// translators: placeholder is a number amount of hours i.e. "5 hours ago". -_n("%s hour ago","%s hours ago",Math.floor(n),"jetpack-my-jetpack"),Math.floor(n)):(n=o/60,n>1?(0,r.sprintf)( -// translators: placeholder is a number amount of minutes i.e. "5 minutes ago". -_n("%s minute ago","%s minutes ago",Math.floor(n),"jetpack-my-jetpack"),Math.floor(n)):__("a few seconds ago","jetpack-my-jetpack")))))}},72423:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DataFormProvider=function({fields:e,children:t}){return(0,o.jsx)(n.Provider,{value:{fields:e},children:t})},t.default=void 0;var r=a(86087),o=a(10790);const n=(0,r.createContext)({fields:[]});t.default=n},44117:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function({data:e,form:t,fields:a,onChange:i}){const c=(0,r.useMemo)((()=>(0,n.normalizeFields)(a)),[a]);if(!t.fields)return null;return(0,s.jsx)(o.DataFormProvider,{fields:c,children:(0,s.jsx)(l.DataFormLayout,{data:e,form:t,onChange:i})})};var r=a(86087),o=a(72423),n=a(53582),l=a(49901),s=a(10790)},10192:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.BulkActionsFooter=function(){const{data:e,selection:t,actions:a=h,onChangeSelection:r,getItemId:o}=(0,l.useContext)(c.default);return(0,d.jsx)(w,{selection:t,onChangeSelection:r,data:e,actions:a,getItemId:o})},t.BulkSelectionCheckbox=p,t.useHasAPossibleBulkAction=function(e,t){return(0,l.useMemo)((()=>e.some((e=>e.supportsBulk&&(!e.isEligible||e.isEligible(t))))),[e,t])},t.useSomeItemHasAPossibleBulkAction=function(e,t){return(0,l.useMemo)((()=>t.some((t=>e.some((e=>e.supportsBulk&&(!e.isEligible||e.isEligible(t))))))),[e,t])};var o=a(56427),n=a(27723),l=a(86087),s=a(47143),i=a(83203),c=r(a(60789)),u=a(97867),d=a(10790);function v({action:e,items:t,ActionTriggerComponent:a}){const[r,o]=(0,l.useState)(!1),n={action:e,onClick:()=>{o(!0)},items:t};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(a,{...n}),r&&(0,d.jsx)(u.ActionModal,{action:e,items:t,closeModal:()=>o(!1)})]})}function p({selection:e,onChangeSelection:t,data:a,actions:r,getItemId:s}){const i=(0,l.useMemo)((()=>a.filter((e=>r.some((t=>t.supportsBulk&&(!t.isEligible||t.isEligible(e))))))),[a,r]),c=a.filter((t=>e.includes(s(t))&&i.includes(t))),u=c.length===i.length;return(0,d.jsx)(o.CheckboxControl,{className:"dataviews-view-table-selection-checkbox",__nextHasNoMarginBottom:!0,checked:u,indeterminate:!u&&!!c.length,onChange:()=>{t(u?[]:i.map((e=>s(e))))},"aria-label":u?(0,n.__)("Deselect all","jetpack-my-jetpack"):(0,n.__)("Select all","jetpack-my-jetpack")})}function m({action:e,onClick:t,isBusy:a,items:r}){const n="string"==typeof e.label?e.label:e.label(r);return(0,d.jsx)(o.Button,{disabled:a,accessibleWhenDisabled:!0,label:n,icon:e.icon,isDestructive:e.isDestructive,size:"compact",onClick:t,isBusy:a,tooltipPosition:"top"})}const h=[];function f({action:e,selectedItems:t,actionInProgress:a,setActionInProgress:r}){const o=(0,s.useRegistry)(),n=(0,l.useMemo)((()=>t.filter((t=>!e.isEligible||e.isEligible(t)))),[e,t]);return"RenderModal"in e?(0,d.jsx)(v,{action:e,items:n,ActionTriggerComponent:m},e.id):(0,d.jsx)(m,{action:e,onClick:async()=>{r(e.id),await e.callback(t,{registry:o}),r(null)},items:n,isBusy:a===e.id},e.id)}function g(e,t,a,r,l,s,c,u,v){const m=s.length>0?(0,n.sprintf)(/* translators: %d: number of items. */ /* translators: %d: number of items. */ -(0,n._n)("%d Item selected","%d Items selected",s.length,"jetpack-my-jetpack"),s.length):(0,n.sprintf)(/* translators: %d: number of items. */ /* translators: %d: number of items. */ -(0,n._n)("%d Item","%d Items",e.length,"jetpack-my-jetpack"),e.length);return(0,d.jsxs)(o.__experimentalHStack,{expanded:!1,className:"dataviews-bulk-actions-footer__container",spacing:3,children:[(0,d.jsx)(p,{selection:r,onChangeSelection:v,data:e,actions:t,getItemId:a}),(0,d.jsx)("span",{className:"dataviews-bulk-actions-footer__item-count",children:m}),(0,d.jsxs)(o.__experimentalHStack,{className:"dataviews-bulk-actions-footer__action-buttons",expanded:!1,spacing:1,children:[l.map((e=>(0,d.jsx)(f,{action:e,selectedItems:s,actionInProgress:c,setActionInProgress:u},e.id))),s.length>0&&(0,d.jsx)(o.Button,{icon:i.closeSmall,showTooltip:!0,tooltipPosition:"top",size:"compact",label:(0,n.__)("Cancel","jetpack-my-jetpack"),disabled:!!c,accessibleWhenDisabled:!1,onClick:()=>{v(h)}})]})]})}function w({selection:e,actions:t,onChangeSelection:a,data:r,getItemId:o}){const[n,s]=(0,l.useState)(null),i=(0,l.useRef)(null),c=(0,l.useMemo)((()=>t.filter((e=>e.supportsBulk))),[t]),u=(0,l.useMemo)((()=>r.filter((e=>c.some((t=>!t.isEligible||t.isEligible(e)))))),[r,c]),d=(0,l.useMemo)((()=>r.filter((t=>e.includes(o(t))&&u.includes(t)))),[e,r,o,u]),v=(0,l.useMemo)((()=>t.filter((e=>e.supportsBulk&&e.icon&&d.some((t=>!e.isEligible||e.isEligible(t)))))),[t,d]);return n?(i.current||(i.current=g(r,t,o,e,v,d,n,s,a)),i.current):(i.current&&(i.current=null),g(r,t,o,e,v,d,n,s,a))}},60789:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(86087),o=a(64116);const n=(0,r.createContext)({view:{type:o.LAYOUT_TABLE},onChangeView:()=>{},fields:[],data:[],paginationInfo:{totalItems:0,totalPages:0},selection:[],onChangeSelection:()=>{},setOpenedFilter:()=>{},openedFilter:null,getItemId:e=>e.id,isItemClickable:()=>!0,containerWidth:0});t.default=n},18645:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AddFilterMenu=c,t.default=void 0;var r=a(56427),o=a(27723),n=a(86087),l=a(40191),s=a(10790);const{Menu:i}=(0,l.unlock)(r.privateApis);function c({filters:e,view:t,onChangeView:a,setOpenedFilter:r,triggerProps:o}){const n=e.filter((e=>!e.isVisible));return(0,s.jsxs)(i,{children:[(0,s.jsx)(i.TriggerButton,{...o}),(0,s.jsx)(i.Popover,{children:n.map((e=>(0,s.jsx)(i.Item,{onClick:()=>{r(e.field),a({...t,page:1,filters:[...t.filters||[],{field:e.field,value:void 0,operator:e.operators[0]}]})},children:(0,s.jsx)(i.ItemLabel,{children:e.name})},e.field)))})]})}t.default=(0,n.forwardRef)((function({filters:e,view:t,onChangeView:a,setOpenedFilter:n},l){if(!e.length||e.every((({isPrimary:e})=>e)))return null;const i=e.filter((e=>!e.isVisible));return(0,s.jsx)(c,{triggerProps:{render:(0,s.jsx)(r.Button,{accessibleWhenDisabled:!0,size:"compact",className:"dataviews-filters-button",variant:"tertiary",disabled:!i.length,ref:l}),children:(0,o.__)("Add filter","jetpack-my-jetpack")},filters:e,view:t,onChangeView:a,setOpenedFilter:n})}))},33162:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function({addFilterRef:e,openedFilter:t,...a}){const r=(0,s.useRef)(null),{filter:u,view:f,onChangeView:g}=a,w=f.filters?.find((e=>e.field===u.field)),b=u.elements.filter((e=>u.singleSelection?e.value===w?.value:w?.value?.includes(e.value))),y=u.isPrimary,x=void 0!==w?.value,_=!y||x;return(0,d.jsx)(n.Dropdown,{defaultOpen:t===u.field,contentClassName:"dataviews-filters__summary-popover",popoverProps:{placement:"bottom-start",role:"dialog"},onClose:()=>{r.current?.focus()},renderToggle:({isOpen:t,onToggle:a})=>(0,d.jsxs)("div",{className:"dataviews-filters__summary-chip-container",children:[(0,d.jsx)(n.Tooltip,{text:(0,l.sprintf)(/* translators: 1: Filter name. */ /* translators: 1: Filter name. */ -(0,l.__)("Filter by: %1$s","jetpack-my-jetpack"),u.name.toLowerCase()),placement:"top",children:(0,d.jsx)("div",{className:(0,o.default)("dataviews-filters__summary-chip",{"has-reset":_,"has-values":x}),role:"button",tabIndex:0,onClick:a,onKeyDown:e=>{[v,p].includes(e.key)&&(a(),e.preventDefault())},"aria-pressed":t,"aria-expanded":t,ref:r,children:(0,d.jsx)(m,{activeElements:b,filterInView:w,filter:u})})}),_&&(0,d.jsx)(n.Tooltip,{text:y?(0,l.__)("Reset","jetpack-my-jetpack"):(0,l.__)("Remove","jetpack-my-jetpack"),placement:"top",children:(0,d.jsx)("button",{className:(0,o.default)("dataviews-filters__summary-chip-remove",{"has-values":x}),onClick:()=>{g({...f,page:1,filters:f.filters?.filter((e=>e.field!==u.field))}),y?r.current?.focus():e.current?.focus()},children:(0,d.jsx)(n.Icon,{icon:i.closeSmall})})})]}),renderContent:()=>(0,d.jsxs)(n.__experimentalVStack,{spacing:0,justify:"flex-start",children:[(0,d.jsx)(h,{...a}),(0,d.jsx)(c.default,{...a})]})})};var o=r(a(33752)),n=a(56427),l=a(27723),s=a(86087),i=a(83203),c=r(a(33170)),u=a(64116),d=a(10790);const v="Enter",p=" ",m=({activeElements:e,filterInView:t,filter:a})=>{if(void 0===e||0===e.length)return a.name;const r={Name:(0,d.jsx)("span",{className:"dataviews-filters__summary-filter-text-name"}),Value:(0,d.jsx)("span",{className:"dataviews-filters__summary-filter-text-value"})};return t?.operator===u.OPERATOR_IS_ANY?(0,s.createInterpolateElement)((0,l.sprintf)(/* translators: 1: Filter name. 3: Filter value. e.g.: "Author is any: Admin, Editor". */ /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is any: Admin, Editor". */ -(0,l.__)("%1$s is any: %2$s","jetpack-my-jetpack"),a.name,e.map((e=>e.label)).join(", ")),r):t?.operator===u.OPERATOR_IS_NONE?(0,s.createInterpolateElement)((0,l.sprintf)(/* translators: 1: Filter name. 3: Filter value. e.g.: "Author is none: Admin, Editor". */ /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is none: Admin, Editor". */ -(0,l.__)("%1$s is none: %2$s","jetpack-my-jetpack"),a.name,e.map((e=>e.label)).join(", ")),r):t?.operator===u.OPERATOR_IS_ALL?(0,s.createInterpolateElement)((0,l.sprintf)(/* translators: 1: Filter name. 3: Filter value. e.g.: "Author is all: Admin, Editor". */ /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is all: Admin, Editor". */ -(0,l.__)("%1$s is all: %2$s","jetpack-my-jetpack"),a.name,e.map((e=>e.label)).join(", ")),r):t?.operator===u.OPERATOR_IS_NOT_ALL?(0,s.createInterpolateElement)((0,l.sprintf)(/* translators: 1: Filter name. 3: Filter value. e.g.: "Author is not all: Admin, Editor". */ /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is not all: Admin, Editor". */ -(0,l.__)("%1$s is not all: %2$s","jetpack-my-jetpack"),a.name,e.map((e=>e.label)).join(", ")),r):t?.operator===u.OPERATOR_IS?(0,s.createInterpolateElement)((0,l.sprintf)(/* translators: 1: Filter name. 3: Filter value. e.g.: "Author is: Admin". */ /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is: Admin". */ -(0,l.__)("%1$s is: %2$s","jetpack-my-jetpack"),a.name,e[0].label),r):t?.operator===u.OPERATOR_IS_NOT?(0,s.createInterpolateElement)((0,l.sprintf)(/* translators: 1: Filter name. 3: Filter value. e.g.: "Author is not: Admin". */ /* translators: 1: Filter name. 3: Filter value. e.g.: "Author is not: Admin". */ -(0,l.__)("%1$s is not: %2$s","jetpack-my-jetpack"),a.name,e[0].label),r):(0,l.sprintf)(/* translators: 1: Filter name e.g.: "Unknown status for Author". */ /* translators: 1: Filter name e.g.: "Unknown status for Author". */ -(0,l.__)("Unknown status for %1$s","jetpack-my-jetpack"),a.name)};function h({filter:e,view:t,onChangeView:a}){const r=e.operators?.map((e=>({value:e,label:u.OPERATORS[e]?.label}))),o=t.filters?.find((t=>t.field===e.field)),s=o?.operator||e.operators[0];return r.length>1&&(0,d.jsxs)(n.__experimentalHStack,{spacing:2,justify:"flex-start",className:"dataviews-filters__summary-operators-container",children:[(0,d.jsx)(n.FlexItem,{className:"dataviews-filters__summary-operators-filter-name",children:e.name}),(0,d.jsx)(n.SelectControl,{label:(0,l.__)("Conditions","jetpack-my-jetpack"),value:s,options:r,onChange:r=>{var n,l;const s=r,i=o?[...(null!==(n=t.filters)&&void 0!==n?n:[]).map((t=>t.field===e.field?{...t,operator:s}:t))]:[...null!==(l=t.filters)&&void 0!==l?l:[],{field:e.field,operator:s,value:void 0}];a({...t,page:1,filters:i})},size:"small",__nextHasNoMarginBottom:!0,hideLabelFromVision:!0})]})}},2957:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.FiltersToggle=function({filters:e,view:t,onChangeView:a,setOpenedFilter:r,isShowingFilter:i,setIsShowingFilter:u}){const d=(0,o.useRef)(null),v=(0,o.useCallback)((e=>{a(e),u(!0)}),[a,u]),p=!!e.filter((e=>e.isVisible)).length;if(0===e.length)return null;const h={label:(0,s.__)("Add filter","jetpack-my-jetpack"),"aria-expanded":!1,isPressed:!1},f={label:(0,s._x)("Filter","verb","jetpack-my-jetpack"),"aria-expanded":i,isPressed:i,onClick:()=>{i||r(null),u(!i)}},w=(0,m.jsx)(n.Button,{ref:d,className:"dataviews-filters__visibility-toggle",size:"compact",icon:l.funnel,...p?f:h});return(0,m.jsx)("div",{className:"dataviews-filters__container-visibility-toggle",children:p?(0,m.jsx)(g,{buttonRef:d,filtersCount:t.filters?.length,children:w}):(0,m.jsx)(c.AddFilterMenu,{filters:e,view:t,onChangeView:v,setOpenedFilter:r,triggerProps:{render:w}})})},t.default=void 0,t.useFilters=f;var o=a(86087),n=a(56427),l=a(83203),s=a(27723),i=r(a(33162)),c=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var a=h(t);if(a&&a.has(e))return a.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&{}.hasOwnProperty.call(e,n)){var l=o?Object.getOwnPropertyDescriptor(e,n):null;l&&(l.get||l.set)?Object.defineProperty(r,n,l):r[n]=e[n]}return r.default=e,a&&a.set(e,r),r}(a(18645)),u=r(a(53196)),d=r(a(60789)),v=a(7912),p=a(64116),m=a(10790);function h(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,a=new WeakMap;return(h=function(e){return e?a:t})(e)}function f(e,t){return(0,o.useMemo)((()=>{const a=[];return e.forEach((e=>{if(!e.elements?.length)return;const r=(0,v.sanitizeOperators)(e);if(0===r.length)return;const o=!!e.filterBy?.isPrimary;a.push({field:e.id,name:e.label,elements:e.elements,singleSelection:r.some((e=>[p.OPERATOR_IS,p.OPERATOR_IS_NOT].includes(e))),operators:r,isVisible:o||!!t.filters?.some((t=>t.field===e.id&&p.ALL_OPERATORS.includes(t.operator))),isPrimary:o})})),a.sort(((e,t)=>e.isPrimary&&!t.isPrimary?-1:!e.isPrimary&&t.isPrimary?1:e.name.localeCompare(t.name))),a}),[e,t])}function g({buttonRef:e,filtersCount:t,children:a}){return(0,o.useEffect)((()=>()=>{e.current?.focus()}),[e]),(0,m.jsxs)(m.Fragment,{children:[a,!!t&&(0,m.jsx)("span",{className:"dataviews-filters-toggle__count",children:t})]})}t.default=(0,o.memo)((function(){const{fields:e,view:t,onChangeView:a,openedFilter:r,setOpenedFilter:l}=(0,o.useContext)(d.default),s=(0,o.useRef)(null),v=f(e,t),p=(0,m.jsx)(c.default,{filters:v,view:t,onChangeView:a,ref:s,setOpenedFilter:l},"add-filter"),h=v.filter((e=>e.isVisible));if(0===h.length)return null;const g=[...h.map((e=>(0,m.jsx)(i.default,{filter:e,view:t,onChangeView:a,addFilterRef:s,openedFilter:r},e.field))),p];return g.push((0,m.jsx)(u.default,{filters:v,view:t,onChangeView:a},"reset-filters")),(0,m.jsx)(n.__experimentalHStack,{justify:"flex-start",style:{width:"fit-content"},className:"dataviews-filters__container",wrap:!0,children:g})}))},53196:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function({filters:e,view:t,onChangeView:a}){const l=!t.search&&!t.filters?.some((t=>{return void 0!==t.value||(a=t.field,!e.some((e=>e.field===a&&e.isPrimary)));var a}));return(0,n.jsx)(r.Button,{disabled:l,accessibleWhenDisabled:!0,size:"compact",variant:"tertiary",className:"dataviews-filters__reset-button",onClick:()=>{a({...t,page:1,search:"",filters:[]})},children:(0,o.__)("Reset","jetpack-my-jetpack")})};var r=a(56427),o=a(27723),n=a(10790)},33170:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){const t=e.filter.elements.length>10?x:y;return(0,v.jsx)(t,{...e})};var o=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var a=p(t);if(a&&a.has(e))return a.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&{}.hasOwnProperty.call(e,n)){var l=o?Object.getOwnPropertyDescriptor(e,n):null;l&&(l.get||l.set)?Object.defineProperty(r,n,l):r[n]=e[n]}return r.default=e,a&&a.set(e,r),r}(a(94083)),n=r(a(44775)),l=a(29491),s=a(27723),i=a(86087),c=a(56427),u=a(83203),d=a(5573),v=a(10790);function p(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,a=new WeakMap;return(p=function(e){return e?a:t})(e)}const m=(0,v.jsx)(d.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",children:(0,v.jsx)(d.Circle,{cx:12,cy:12,r:3})});function h(e=""){return(0,n.default)(e.trim().toLowerCase())}const f=[],g=(e,t)=>e.singleSelection?t?.value:Array.isArray(t?.value)?t.value:!Array.isArray(t?.value)&&t?.value?[t.value]:f,w=(e,t,a)=>e.singleSelection?a:Array.isArray(t?.value)?t.value.includes(a)?t.value.filter((e=>e!==a)):[...t.value,a]:[a];function b(e,t){return`${e}-${t}`}function y({view:e,filter:t,onChangeView:a}){const r=(0,l.useInstanceId)(y,"dataviews-filter-list-box"),[o,n]=(0,i.useState)(1===t.operators?.length?void 0:null),d=e.filters?.find((e=>e.field===t.field)),p=g(t,d);return(0,v.jsx)(c.Composite,{virtualFocus:!0,focusLoop:!0,activeId:o,setActiveId:n,role:"listbox",className:"dataviews-filters__search-widget-listbox","aria-label":(0,s.sprintf)(/* translators: List of items for a filter. 1: Filter name. e.g.: "List of: Author". */ /* translators: List of items for a filter. 1: Filter name. e.g.: "List of: Author". */ -(0,s.__)("List of: %1$s","jetpack-my-jetpack"),t.name),onFocusVisible:()=>{!o&&t.elements.length&&n(b(r,t.elements[0].value))},render:(0,v.jsx)(c.Composite.Typeahead,{}),children:t.elements.map((o=>(0,v.jsxs)(c.Composite.Hover,{render:(0,v.jsx)(c.Composite.Item,{id:b(r,o.value),render:(0,v.jsx)("div",{"aria-label":o.label,role:"option",className:"dataviews-filters__search-widget-listitem"}),onClick:()=>{var r,n;const l=d?[...(null!==(r=e.filters)&&void 0!==r?r:[]).map((e=>e.field===t.field?{...e,operator:d.operator||t.operators[0],value:w(t,d,o.value)}:e))]:[...null!==(n=e.filters)&&void 0!==n?n:[],{field:t.field,operator:t.operators[0],value:w(t,d,o.value)}];a({...e,page:1,filters:l})}}),children:[(0,v.jsxs)("span",{className:"dataviews-filters__search-widget-listitem-check",children:[t.singleSelection&&p===o.value&&(0,v.jsx)(c.Icon,{icon:m}),!t.singleSelection&&p.includes(o.value)&&(0,v.jsx)(c.Icon,{icon:u.check})]}),(0,v.jsx)("span",{children:o.label})]},o.value)))})}function x({view:e,filter:t,onChangeView:a}){const[r,n]=(0,i.useState)(""),l=(0,i.useDeferredValue)(r),d=e.filters?.find((e=>e.field===t.field)),p=g(t,d),f=(0,i.useMemo)((()=>{const e=h(l);return t.elements.filter((t=>h(t.label).includes(e)))}),[t.elements,l]);return(0,v.jsxs)(o.ComboboxProvider,{selectedValue:p,setSelectedValue:r=>{var o,n;const l=d?[...(null!==(o=e.filters)&&void 0!==o?o:[]).map((e=>e.field===t.field?{...e,operator:d.operator||t.operators[0],value:r}:e))]:[...null!==(n=e.filters)&&void 0!==n?n:[],{field:t.field,operator:t.operators[0],value:r}];a({...e,page:1,filters:l})},setValue:n,children:[(0,v.jsxs)("div",{className:"dataviews-filters__search-widget-filter-combobox__wrapper",children:[(0,v.jsx)(o.ComboboxLabel,{render:(0,v.jsx)(c.VisuallyHidden,{children:(0,s.__)("Search items","jetpack-my-jetpack")}),children:(0,s.__)("Search items","jetpack-my-jetpack")}),(0,v.jsx)(o.Combobox,{autoSelect:"always",placeholder:(0,s.__)("Search","jetpack-my-jetpack"),className:"dataviews-filters__search-widget-filter-combobox__input"}),(0,v.jsx)("div",{className:"dataviews-filters__search-widget-filter-combobox__icon",children:(0,v.jsx)(c.Icon,{icon:u.search})})]}),(0,v.jsxs)(o.ComboboxList,{className:"dataviews-filters__search-widget-filter-combobox-list",alwaysVisible:!0,children:[f.map((e=>(0,v.jsxs)(o.ComboboxItem,{resetValueOnSelect:!1,value:e.value,className:"dataviews-filters__search-widget-listitem",hideOnClick:!1,setValueOnClick:!1,focusOnHover:!0,children:[(0,v.jsxs)("span",{className:"dataviews-filters__search-widget-listitem-check",children:[t.singleSelection&&p===e.value&&(0,v.jsx)(c.Icon,{icon:m}),!t.singleSelection&&p.includes(e.value)&&(0,v.jsx)(c.Icon,{icon:u.check})]}),(0,v.jsxs)("span",{children:[(0,v.jsx)(o.ComboboxItemValue,{className:"dataviews-filters__search-widget-filter-combobox-item-value",value:e.label}),!!e.description&&(0,v.jsx)("span",{className:"dataviews-filters__search-widget-listitem-description",children:e.description})]})]},e.value))),!f.length&&(0,v.jsx)("p",{children:(0,s.__)("No results found","jetpack-my-jetpack")})]})]})}},77493:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){const{view:e,paginationInfo:{totalItems:t=0,totalPages:a},data:r,actions:v=d}=(0,n.useContext)(l.default),p=(0,i.useSomeItemHasAPossibleBulkAction)(v,r)&&[c.LAYOUT_TABLE,c.LAYOUT_GRID].includes(e.type);if(!t||!a||a<=1&&!p)return null;return!!t&&(0,u.jsxs)(o.__experimentalHStack,{expanded:!1,justify:"end",className:"dataviews-footer",children:[p&&(0,u.jsx)(i.BulkActionsFooter,{}),(0,u.jsx)(s.default,{})]})};var o=a(56427),n=a(86087),l=r(a(60789)),s=r(a(80382)),i=a(10192),c=a(64116),u=a(10790);const d=[]},97867:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActionModal=m,t.ActionsMenuGroup=h,t.default=function({item:e,actions:t,isCompact:a}){const o=(0,s.useRegistry)(),{primaryActions:l,eligibleActions:i}=(0,n.useMemo)((()=>{const a=t.filter((t=>!t.isEligible||t.isEligible(e)));return{primaryActions:a.filter((e=>e.isPrimary&&!!e.icon)),eligibleActions:a}}),[t,e]);if(a)return(0,c.jsx)(f,{item:e,actions:i,isSmall:!0,registry:o});if(l.length===i.length)return(0,c.jsx)(g,{item:e,actions:l,registry:o});return(0,c.jsxs)(r.__experimentalHStack,{spacing:1,justify:"flex-end",className:"dataviews-item-actions",style:{flexShrink:"0",width:"auto"},children:[(0,c.jsx)(g,{item:e,actions:l,registry:o}),(0,c.jsx)(f,{item:e,actions:i,registry:o})]})};var r=a(56427),o=a(27723),n=a(86087),l=a(83203),s=a(47143),i=a(40191),c=a(10790);const{Menu:u,kebabCase:d}=(0,i.unlock)(r.privateApis);function v({action:e,onClick:t,items:a}){const o="string"==typeof e.label?e.label:e.label(a);return(0,c.jsx)(r.Button,{label:o,icon:e.icon,disabled:!!e.disabled,accessibleWhenDisabled:!0,isDestructive:e.isDestructive,size:"compact",onClick:t})}function p({action:e,onClick:t,items:a}){const r="string"==typeof e.label?e.label:e.label(a);return(0,c.jsx)(u.Item,{disabled:e.disabled,onClick:t,children:(0,c.jsx)(u.ItemLabel,{children:r})})}function m({action:e,items:t,closeModal:a}){const o="string"==typeof e.label?e.label:e.label(t);return(0,c.jsx)(r.Modal,{title:e.modalHeader||o,__experimentalHideHeader:!!e.hideModalHeader,onRequestClose:a,focusOnMount:"firstContentElement",size:"medium",overlayClassName:`dataviews-action-modal dataviews-action-modal__${d(e.id)}`,children:(0,c.jsx)(e.RenderModal,{items:t,closeModal:a})})}function h({actions:e,item:t,registry:a,setActiveModalAction:r}){return(0,c.jsx)(u.Group,{children:e.map((e=>(0,c.jsx)(p,{action:e,onClick:()=>{"RenderModal"in e?r(e):e.callback([t],{registry:a})},items:[t]},e.id)))})}function f({item:e,actions:t,isSmall:a,registry:s}){const[i,d]=(0,n.useState)(null);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(u,{placement:"bottom-end",children:[(0,c.jsx)(u.TriggerButton,{render:(0,c.jsx)(r.Button,{size:a?"small":"compact",icon:l.moreVertical,label:(0,o.__)("Actions","jetpack-my-jetpack"),accessibleWhenDisabled:!0,disabled:!t.length,className:"dataviews-all-actions-button"})}),(0,c.jsx)(u.Popover,{children:(0,c.jsx)(h,{actions:t,item:e,registry:s,setActiveModalAction:d})})]}),!!i&&(0,c.jsx)(m,{action:i,items:[e],closeModal:()=>d(null)})]})}function g({item:e,actions:t,registry:a}){const[r,o]=(0,n.useState)(null);return Array.isArray(t)&&0!==t.length?(0,c.jsxs)(c.Fragment,{children:[t.map((t=>(0,c.jsx)(v,{action:t,onClick:()=>{"RenderModal"in t?o(t):t.callback([e],{registry:a})},items:[e]},t.id))),!!r&&(0,c.jsx)(m,{action:r,items:[e],closeModal:()=>o(null)})]}):null}},95284:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){const{actions:e=[],data:t,fields:a,getItemId:r,getItemLevel:i,isLoading:c,view:u,onChangeView:d,selection:v,onChangeSelection:p,setOpenedFilter:m,onClickItem:h,isItemClickable:f}=(0,o.useContext)(n.default),g=l.VIEW_LAYOUTS.find((e=>e.type===u.type))?.component;return(0,s.jsx)(g,{actions:e,data:t,fields:a,getItemId:r,getItemLevel:i,isLoading:c,onChangeView:d,onChangeSelection:p,selection:v,setOpenedFilter:m,onClickItem:h,isItemClickable:f,view:u})};var o=a(86087),n=r(a(60789)),l=a(9322),s=a(10790)},80382:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=a(56427),n=a(86087),l=a(27723),s=a(83203),i=r(a(60789)),c=a(10790);t.default=(0,n.memo)((function(){var e;const{view:t,onChangeView:a,paginationInfo:{totalItems:r=0,totalPages:u}}=(0,n.useContext)(i.default);if(!r||!u)return null;const d=null!==(e=t.page)&&void 0!==e?e:1,v=Array.from(Array(u)).map(((e,t)=>{const a=t+1;return{value:a.toString(),label:a.toString(),"aria-label":d===a?(0,l.sprintf)( -// translators: Current page number in total number of pages -// translators: Current page number in total number of pages -(0,l.__)("Page %1$s of %2$s","jetpack-my-jetpack"),d,u):a.toString()}}));return!!r&&1!==u&&(0,c.jsxs)(o.__experimentalHStack,{expanded:!1,className:"dataviews-pagination",justify:"end",spacing:6,children:[(0,c.jsx)(o.__experimentalHStack,{justify:"flex-start",expanded:!1,spacing:1,className:"dataviews-pagination__page-select",children:(0,n.createInterpolateElement)((0,l.sprintf)( -// translators: 1: Current page number, 2: Total number of pages. -// translators: 1: Current page number, 2: Total number of pages. -(0,l._x)("

              Page
              %1$s
              of %2$s
              ","paging","jetpack-my-jetpack"),"",u),{div:(0,c.jsx)("div",{"aria-hidden":!0}),CurrentPage:(0,c.jsx)(o.SelectControl,{"aria-label":(0,l.__)("Current page","jetpack-my-jetpack"),value:d.toString(),options:v,onChange:e=>{a({...t,page:+e})},size:"small",__nextHasNoMarginBottom:!0,variant:"minimal"})})}),(0,c.jsxs)(o.__experimentalHStack,{expanded:!1,spacing:1,children:[(0,c.jsx)(o.Button,{onClick:()=>a({...t,page:d-1}),disabled:1===d,accessibleWhenDisabled:!0,label:(0,l.__)("Previous page","jetpack-my-jetpack"),icon:(0,l.isRTL)()?s.next:s.previous,showTooltip:!0,size:"compact",tooltipPosition:"top"}),(0,c.jsx)(o.Button,{onClick:()=>a({...t,page:d+1}),disabled:d>=u,accessibleWhenDisabled:!0,label:(0,l.__)("Next page","jetpack-my-jetpack"),icon:(0,l.isRTL)()?s.previous:s.next,showTooltip:!0,size:"compact",tooltipPosition:"top"})]})]})}))},36310:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=a(27723),n=a(86087),l=a(56427),s=a(29491),i=r(a(60789)),c=a(10790);const u=(0,n.memo)((function({label:e}){const{view:t,onChangeView:a}=(0,n.useContext)(i.default),[r,u,d]=(0,s.useDebouncedInput)(t.search);(0,n.useEffect)((()=>{var e;u(null!==(e=t.search)&&void 0!==e?e:"")}),[t.search,u]);const v=(0,n.useRef)(a),p=(0,n.useRef)(t);(0,n.useEffect)((()=>{v.current=a,p.current=t}),[a,t]),(0,n.useEffect)((()=>{d!==p.current?.search&&v.current({...p.current,page:1,search:d})}),[d]);const m=e||(0,o.__)("Search","jetpack-my-jetpack");return(0,c.jsx)(l.SearchControl,{className:"dataviews-search",__nextHasNoMarginBottom:!0,onChange:u,value:r,label:m,placeholder:m,size:"compact"})}));t.default=u},10086:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function({selection:e,onChangeSelection:t,item:a,getItemId:l,titleField:s,disabled:i}){const c=l(a),u=!i&&e.includes(c),d=s?.getValue?.({item:a})||(0,o.__)("(no title)","jetpack-my-jetpack");return(0,n.jsx)(r.CheckboxControl,{className:"dataviews-selection-checkbox",__nextHasNoMarginBottom:!0,"aria-label":d,"aria-disabled":i,checked:u,onChange:()=>{i||t(e.includes(c)?e.filter((e=>c!==e)):[...e,c])}})};var r=a(56427),o=a(27723),n=a(10790)},67724:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(a(33752)),n=a(56427),l=a(27723),s=a(86087),i=a(83203),c=r(a(10979)),u=a(29491),d=a(64116),v=a(9322),p=r(a(60789)),m=a(40191),h=a(10790);const{Menu:f}=(0,m.unlock)(n.privateApis),g={className:"dataviews-config__popover",placement:"bottom-end",offset:9};function w({defaultLayouts:e={list:{},grid:{},table:{}}}){const{view:t,onChangeView:a}=(0,s.useContext)(p.default),r=Object.keys(e);if(r.length<=1)return null;const o=v.VIEW_LAYOUTS.find((e=>t.type===e.type));return(0,h.jsxs)(f,{children:[(0,h.jsx)(f.TriggerButton,{render:(0,h.jsx)(n.Button,{size:"compact",icon:o?.icon,label:(0,l.__)("Layout","jetpack-my-jetpack")})}),(0,h.jsx)(f.Popover,{children:r.map((r=>{const o=v.VIEW_LAYOUTS.find((e=>e.type===r));return o?(0,h.jsx)(f.RadioItem,{value:r,name:"view-actions-available-view",checked:r===t.type,hideOnClick:!0,onChange:r=>{switch(r.target.value){case"list":case"grid":case"table":const o={...t};return"layout"in o&&delete o.layout,a({...o,type:r.target.value,...e[r.target.value]})}!0===globalThis.SCRIPT_DEBUG&&(0,c.default)("Invalid dataview")},children:(0,h.jsx)(f.ItemLabel,{children:o.label})},r):null}))})]})}function b(){const{view:e,fields:t,onChangeView:a}=(0,s.useContext)(p.default),r=(0,s.useMemo)((()=>t.filter((e=>!1!==e.enableSorting)).map((e=>({label:e.label,value:e.id})))),[t]);return(0,h.jsx)(n.SelectControl,{__nextHasNoMarginBottom:!0,__next40pxDefaultSize:!0,label:(0,l.__)("Sort by","jetpack-my-jetpack"),value:e.sort?.field,options:r,onChange:t=>{a({...e,sort:{direction:e?.sort?.direction||"desc",field:t},showLevels:!1})}})}function y(){const{view:e,fields:t,onChangeView:a}=(0,s.useContext)(p.default);if(0===t.filter((e=>!1!==e.enableSorting)).length)return null;let r=e.sort?.direction;return!r&&e.sort?.field&&(r="desc"),(0,h.jsx)(n.__experimentalToggleGroupControl,{className:"dataviews-view-config__sort-direction",__nextHasNoMarginBottom:!0,__next40pxDefaultSize:!0,isBlock:!0,label:(0,l.__)("Order","jetpack-my-jetpack"),value:r,onChange:r=>{"asc"!==r&&"desc"!==r?!0===globalThis.SCRIPT_DEBUG&&(0,c.default)("Invalid direction"):a({...e,sort:{direction:r,field:e.sort?.field||t.find((e=>!1!==e.enableSorting))?.id||""},showLevels:!1})},children:d.SORTING_DIRECTIONS.map((e=>(0,h.jsx)(n.__experimentalToggleGroupControlOptionIcon,{value:e,icon:d.sortIcons[e],label:d.sortLabels[e]},e)))})}const x=[10,20,50,100];function _(){const{view:e,onChangeView:t}=(0,s.useContext)(p.default);return(0,h.jsx)(n.__experimentalToggleGroupControl,{__nextHasNoMarginBottom:!0,__next40pxDefaultSize:!0,isBlock:!0,label:(0,l.__)("Items per page","jetpack-my-jetpack"),value:e.perPage||10,disabled:!e?.sort?.field,onChange:a=>{const r="number"==typeof a||void 0===a?a:parseInt(a,10);t({...e,perPage:r,page:1})},children:x.map((e=>(0,h.jsx)(n.__experimentalToggleGroupControlOption,{value:e,label:e.toString()},e)))})}function k({previewOptions:e,onChangePreviewOption:t,onMenuOpenChange:a,activeOption:r}){return(0,h.jsxs)(f,{onOpenChange:a,children:[(0,h.jsx)(f.TriggerButton,{render:(0,h.jsx)(n.Button,{className:"dataviews-field-control__field-preview-options-button",size:"compact",icon:i.moreVertical,label:(0,l.__)("Preview","jetpack-my-jetpack")})}),(0,h.jsx)(f.Popover,{children:e?.map((({id:e,label:a})=>(0,h.jsx)(f.RadioItem,{value:e,checked:e===r,onChange:()=>{t?.(e),(e=>{setTimeout((()=>{const t=document.querySelector(`.dataviews-field-control__field-${e} .dataviews-field-control__field-preview-options-button`);t instanceof HTMLElement&&t.focus()}),50)})(e)},children:(0,h.jsx)(f.ItemLabel,{children:a})},e)))})]})}function E({field:e,label:t,description:a,isVisible:r,isFirst:c,isLast:u,canMove:d=!0,onToggleVisibility:v,onMoveUp:p,onMoveDown:m,previewOptions:f,onChangePreviewOption:g}){const[w,b]=(0,s.useState)(!1);return(0,h.jsx)(n.__experimentalItem,{children:(0,h.jsxs)(n.__experimentalHStack,{expanded:!0,className:(0,o.default)("dataviews-field-control__field",`dataviews-field-control__field-${e.id}`,{"is-interacting":w}),justify:"flex-start",children:[(0,h.jsx)("span",{className:"dataviews-field-control__icon",children:!d&&!e.enableHiding&&(0,h.jsx)(n.Icon,{icon:i.lock})}),(0,h.jsxs)("span",{className:"dataviews-field-control__label-sub-label-container",children:[(0,h.jsx)("span",{className:"dataviews-field-control__label",children:t||e.label}),a&&(0,h.jsx)("span",{className:"dataviews-field-control__sub-label",children:a})]}),(0,h.jsxs)(n.__experimentalHStack,{justify:"flex-end",expanded:!1,className:"dataviews-field-control__actions",children:[r&&(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(n.Button,{disabled:c||!d,accessibleWhenDisabled:!0,size:"compact",onClick:p,icon:i.chevronUp,label:c||!d?(0,l.__)("This field can't be moved up","jetpack-my-jetpack"):(0,l.sprintf)(/* translators: %s: field label */ /* translators: %s: field label */ -(0,l.__)("Move %s up","jetpack-my-jetpack"),e.label)}),(0,h.jsx)(n.Button,{disabled:u||!d,accessibleWhenDisabled:!0,size:"compact",onClick:m,icon:i.chevronDown,label:u||!d?(0,l.__)("This field can't be moved down","jetpack-my-jetpack"):(0,l.sprintf)(/* translators: %s: field label */ /* translators: %s: field label */ -(0,l.__)("Move %s down","jetpack-my-jetpack"),e.label)})]}),v&&(0,h.jsx)(n.Button,{className:"dataviews-field-control__field-visibility-button",disabled:!e.enableHiding,accessibleWhenDisabled:!0,size:"compact",onClick:()=>{v(),setTimeout((()=>{const t=document.querySelector(`.dataviews-field-control__field-${e.id} .dataviews-field-control__field-visibility-button`);t instanceof HTMLElement&&t.focus()}),50)},icon:r?i.unseen:i.seen,label:r?(0,l.sprintf)(/* translators: %s: field label */ /* translators: %s: field label */ -(0,l._x)("Hide %s","field","jetpack-my-jetpack"),e.label):(0,l.sprintf)(/* translators: %s: field label */ /* translators: %s: field label */ -(0,l._x)("Show %s","field","jetpack-my-jetpack"),e.label)}),f&&(0,h.jsx)(k,{previewOptions:f,onChangePreviewOption:g,onMenuOpenChange:b,activeOption:e.id})]})]})})}function C({index:e,field:t,view:a,onChangeView:r}){var o;const n=null!==(o=a.fields)&&void 0!==o?o:[],l=void 0!==e&&n.includes(t.id);return(0,h.jsx)(E,{field:t,isVisible:l,isFirst:void 0!==e&&e<1,isLast:void 0!==e&&e===n.length-1,onToggleVisibility:()=>{r({...a,fields:l?n.filter((e=>e!==t.id)):[...n,t.id]})},onMoveUp:void 0!==e?()=>{var o;r({...a,fields:[...null!==(o=n.slice(0,e-1))&&void 0!==o?o:[],t.id,n[e-1],...n.slice(e+1)]})}:void 0,onMoveDown:void 0!==e?()=>{var o;r({...a,fields:[...null!==(o=n.slice(0,e))&&void 0!==o?o:[],n[e+1],t.id,...n.slice(e+2)]})}:void 0})}function j(e){return!!e}function A(){var e;const{view:t,fields:a,onChangeView:r}=(0,s.useContext)(p.default),o=[t?.titleField,t?.mediaField,t?.descriptionField].filter(Boolean),i=null!==(e=t.fields)&&void 0!==e?e:[],c=a.filter((e=>!i.includes(e.id)&&!o.includes(e.id)&&"media"!==e.type)),u=i.map((e=>a.find((t=>t.id===e)))).filter(j);if(!u?.length&&!c?.length)return null;const d=a.find((e=>e.id===t.titleField)),v=a.find((e=>e.id===t.mediaField)),m=a.find((e=>e.id===t.descriptionField)),f=a.filter((e=>"media"===e.type));let g;if(f.length>1){var w;const e=j(v)&&(null===(w=t.showMedia)||void 0===w||w);g=j(v)&&(0,h.jsx)(E,{field:v,label:(0,l.__)("Preview","jetpack-my-jetpack"),description:v.label,isVisible:e,onToggleVisibility:()=>{r({...t,showMedia:!e})},canMove:!1,previewOptions:f.map((e=>({label:e.label,id:e.id}))),onChangePreviewOption:e=>r({...t,mediaField:e})},v.id)}const b=[{field:d,isVisibleFlag:"showTitle"},{field:v,isVisibleFlag:"showMedia",ui:g},{field:m,isVisibleFlag:"showDescription"}].filter((({field:e})=>j(e))),y=b.filter((({field:e,isVisibleFlag:a})=>{var r;return j(e)&&(null===(r=t[a])||void 0===r||r)})),x=b.filter((({field:e,isVisibleFlag:a})=>{var r;return j(e)&&!(null===(r=t[a])||void 0===r||r)}));return(0,h.jsxs)(n.__experimentalVStack,{className:"dataviews-field-control",spacing:6,children:[(0,h.jsx)(n.__experimentalVStack,{className:"dataviews-view-config__properties",spacing:0,children:(y.length>0||!!u?.length)&&(0,h.jsxs)(n.__experimentalItemGroup,{isBordered:!0,isSeparated:!0,children:[y.map((({field:e,isVisibleFlag:a,ui:o})=>null!=o?o:(0,h.jsx)(E,{field:e,isVisible:!0,onToggleVisibility:()=>{r({...t,[a]:!1})},canMove:!1},e.id))),u.map(((e,a)=>(0,h.jsx)(C,{field:e,view:t,onChangeView:r,index:a},e.id)))]})}),(!!c?.length||!!x.length)&&(0,h.jsxs)(n.__experimentalVStack,{spacing:4,children:[(0,h.jsx)(n.BaseControl.VisualLabel,{style:{margin:0},children:(0,l.__)("Hidden","jetpack-my-jetpack")}),(0,h.jsx)(n.__experimentalVStack,{className:"dataviews-view-config__properties",spacing:0,children:(0,h.jsxs)(n.__experimentalItemGroup,{isBordered:!0,isSeparated:!0,children:[x.length>0&&x.map((({field:e,isVisibleFlag:a,ui:o})=>null!=o?o:(0,h.jsx)(E,{field:e,isVisible:!1,onToggleVisibility:()=>{r({...t,[a]:!0})},canMove:!1},e.id))),c.map((e=>(0,h.jsx)(C,{field:e,view:t,onChangeView:r},e.id)))]})})]})]})}function S({title:e,description:t,children:a}){return(0,h.jsxs)(n.__experimentalGrid,{columns:12,className:"dataviews-settings-section",gap:4,children:[(0,h.jsxs)("div",{className:"dataviews-settings-section__sidebar",children:[(0,h.jsx)(n.__experimentalHeading,{level:2,className:"dataviews-settings-section__title",children:e}),t&&(0,h.jsx)(n.__experimentalText,{variant:"muted",className:"dataviews-settings-section__description",children:t})]}),(0,h.jsx)(n.__experimentalGrid,{columns:8,gap:4,className:"dataviews-settings-section__content",children:a})]})}function P(){const{view:e}=(0,s.useContext)(p.default),t=(0,u.useInstanceId)(R,"dataviews-view-config-dropdown"),a=v.VIEW_LAYOUTS.find((t=>t.type===e.type));return(0,h.jsx)(n.Dropdown,{expandOnMobile:!0,popoverProps:{...g,id:t},renderToggle:({onToggle:e,isOpen:a})=>(0,h.jsx)(n.Button,{size:"compact",icon:i.cog,label:(0,l._x)("View options","View is used as a noun","jetpack-my-jetpack"),onClick:e,"aria-expanded":a?"true":"false","aria-controls":t}),renderContent:()=>(0,h.jsx)(n.__experimentalDropdownContentWrapper,{paddingSize:"medium",className:"dataviews-config__popover-content-wrapper",children:(0,h.jsxs)(n.__experimentalVStack,{className:"dataviews-view-config",spacing:6,children:[(0,h.jsxs)(S,{title:(0,l.__)("Appearance","jetpack-my-jetpack"),children:[(0,h.jsxs)(n.__experimentalHStack,{expanded:!0,className:"is-divided-in-two",children:[(0,h.jsx)(b,{}),(0,h.jsx)(y,{})]}),!!a?.viewConfigOptions&&(0,h.jsx)(a.viewConfigOptions,{}),(0,h.jsx)(_,{})]}),(0,h.jsx)(S,{title:(0,l.__)("Properties","jetpack-my-jetpack"),children:(0,h.jsx)(A,{})})]})})})}function R({defaultLayouts:e={list:{},grid:{},table:{}}}){return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsx)(w,{defaultLayouts:e}),(0,h.jsx)(P,{})]})}const M=(0,s.memo)(R);t.default=M},67807:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function({view:e,onChangeView:t,fields:a,search:r=!0,searchLabel:h,actions:b=w,data:y,getItemId:x=f,getItemLevel:_,isLoading:k=!1,paginationInfo:E,defaultLayouts:C,selection:j,onChangeSelection:A,onClickItem:S,isItemClickable:P=g,header:R}){const[M,V]=(0,n.useState)(0),z=(0,l.useResizeObserver)((e=>{V(e[0].borderBoxSize[0].inlineSize)}),{box:"border-box"}),[H,L]=(0,n.useState)([]),O=void 0===j||void 0===A,N=O?H:j,[I,B]=(0,n.useState)(null);const T=(0,n.useMemo)((()=>(0,p.normalizeFields)(a)),[a]),F=(0,n.useMemo)((()=>N.filter((e=>y.some((t=>x(t)===e))))),[N,y,x]),D=(0,i.useFilters)(T,e),[G,U]=(0,n.useState)((()=>(D||[]).some((e=>e.isPrimary))));return(0,m.jsx)(s.default.Provider,{value:{view:e,onChangeView:t,fields:T,actions:b,data:y,isLoading:k,paginationInfo:E,selection:F,onChangeSelection:function(e){const t="function"==typeof e?e(N):e;O&&L(t),A&&A(t)},openedFilter:I,setOpenedFilter:B,getItemId:x,getItemLevel:_,isItemClickable:P,onClickItem:S,containerWidth:M},children:(0,m.jsxs)("div",{className:"dataviews-wrapper",ref:z,children:[(0,m.jsxs)(o.__experimentalHStack,{alignment:"top",justify:"space-between",className:"dataviews__view-actions",spacing:1,children:[(0,m.jsxs)(o.__experimentalHStack,{justify:"start",expanded:!1,className:"dataviews__search",children:[r&&(0,m.jsx)(d.default,{label:h}),(0,m.jsx)(i.FiltersToggle,{filters:D,view:e,onChangeView:t,setOpenedFilter:B,setIsShowingFilter:U,isShowingFilter:G})]}),(0,m.jsxs)(o.__experimentalHStack,{spacing:1,expanded:!1,style:{flexShrink:0},children:[(0,m.jsx)(v.default,{defaultLayouts:C}),R]})]}),G&&(0,m.jsx)(i.default,{}),(0,m.jsx)(c.default,{}),(0,m.jsx)(u.default,{})]})})};var o=a(56427),n=a(86087),l=a(29491),s=r(a(60789)),i=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var a=h(t);if(a&&a.has(e))return a.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var n in e)if("default"!==n&&{}.hasOwnProperty.call(e,n)){var l=o?Object.getOwnPropertyDescriptor(e,n):null;l&&(l.get||l.set)?Object.defineProperty(r,n,l):r[n]=e[n]}return r.default=e,a&&a.set(e,r),r}(a(2957)),c=r(a(95284)),u=r(a(77493)),d=r(a(36310)),v=r(a(67724)),p=a(53582),m=a(10790);function h(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,a=new WeakMap;return(h=function(e){return e?a:t})(e)}const f=e=>e.id,g=()=>!0,w=[]},64116:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.sortValues=t.sortLabels=t.sortIcons=t.sortArrows=t.SORTING_DIRECTIONS=t.OPERATOR_IS_NOT_ALL=t.OPERATOR_IS_NOT=t.OPERATOR_IS_NONE=t.OPERATOR_IS_ANY=t.OPERATOR_IS_ALL=t.OPERATOR_IS=t.OPERATORS=t.LAYOUT_TABLE=t.LAYOUT_LIST=t.LAYOUT_GRID=t.ALL_OPERATORS=void 0;var r=a(27723),o=a(83203);const n=t.OPERATOR_IS="is",l=t.OPERATOR_IS_NOT="isNot",s=t.OPERATOR_IS_ANY="isAny",i=t.OPERATOR_IS_NONE="isNone",c=t.OPERATOR_IS_ALL="isAll",u=t.OPERATOR_IS_NOT_ALL="isNotAll";t.ALL_OPERATORS=[n,l,s,i,c,u],t.OPERATORS={[n]:{key:"is-filter",label:(0,r.__)("Is","jetpack-my-jetpack")},[l]:{key:"is-not-filter",label:(0,r.__)("Is not","jetpack-my-jetpack")},[s]:{key:"is-any-filter",label:(0,r.__)("Is any","jetpack-my-jetpack")},[i]:{key:"is-none-filter",label:(0,r.__)("Is none","jetpack-my-jetpack")},[c]:{key:"is-all-filter",label:(0,r.__)("Is all","jetpack-my-jetpack")},[u]:{key:"is-not-all-filter",label:(0,r.__)("Is not all","jetpack-my-jetpack")}},t.SORTING_DIRECTIONS=["asc","desc"],t.sortArrows={asc:"↑",desc:"↓"},t.sortValues={asc:"ascending",desc:"descending"},t.sortLabels={asc:(0,r.__)("Sort ascending","jetpack-my-jetpack"),desc:(0,r.__)("Sort descending","jetpack-my-jetpack")},t.sortIcons={asc:o.arrowUp,desc:o.arrowDown},t.LAYOUT_TABLE="table",t.LAYOUT_GRID="grid",t.LAYOUT_LIST="list"},61428:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function({data:e,field:t,onChange:a,hideLabelFromVision:l}){const{id:s,label:i}=t,c=t.getValue({item:e}),u=(0,o.useCallback)((e=>a({[s]:e})),[s,a]);return(0,n.jsxs)("fieldset",{className:"dataviews-controls__datetime",children:[!l&&(0,n.jsx)(r.BaseControl.VisualLabel,{as:"legend",children:i}),l&&(0,n.jsx)(r.VisuallyHidden,{as:"legend",children:i}),(0,n.jsx)(r.TimePicker,{currentTime:c,onChange:u,hideLabelFromVision:!0})]})};var r=a(56427),o=a(86087),n=a(10790)},70105:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.getControl=function(e,t){if("function"==typeof e.Edit)return e.Edit;if("string"==typeof e.Edit)return u(e.Edit);if(e.elements)return u("select");if("string"==typeof t.Edit)return u(t.Edit);return t.Edit},t.getControlByType=u;var o=r(a(61428)),n=r(a(91179)),l=r(a(45434)),s=r(a(15381)),i=r(a(78466));const c={datetime:o.default,integer:n.default,radio:l.default,select:s.default,text:i.default};function u(e){if(Object.keys(c).includes(e))return c[e];throw"Control "+e+" not found"}},91179:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function({data:e,field:t,onChange:a,hideLabelFromVision:l}){var s;const{id:i,label:c,description:u}=t,d=null!==(s=t.getValue({item:e}))&&void 0!==s?s:"",v=(0,o.useCallback)((e=>a({[i]:Number(e)})),[i,a]);return(0,n.jsx)(r.__experimentalNumberControl,{label:c,help:u,value:d,onChange:v,__next40pxDefaultSize:!0,hideLabelFromVision:l})};var r=a(56427),o=a(86087),n=a(10790)},45434:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function({data:e,field:t,onChange:a,hideLabelFromVision:l}){const{id:s,label:i}=t,c=t.getValue({item:e}),u=(0,o.useCallback)((e=>a({[s]:e})),[s,a]);if(t.elements)return(0,n.jsx)(r.RadioControl,{label:i,onChange:u,options:t.elements,selected:c,hideLabelFromVision:l});return null};var r=a(56427),o=a(86087),n=a(10790)},15381:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function({data:e,field:t,onChange:a,hideLabelFromVision:s}){var i,c;const{id:u,label:d}=t,v=null!==(i=t.getValue({item:e}))&&void 0!==i?i:"",p=(0,o.useCallback)((e=>a({[u]:e})),[u,a]),m=[{label:(0,n.__)("Select item","jetpack-my-jetpack"),value:""},...null!==(c=t?.elements)&&void 0!==c?c:[]];return(0,l.jsx)(r.SelectControl,{label:d,value:v,options:m,onChange:p,__next40pxDefaultSize:!0,__nextHasNoMarginBottom:!0,hideLabelFromVision:s})};var r=a(56427),o=a(86087),n=a(27723),l=a(10790)},78466:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function({data:e,field:t,onChange:a,hideLabelFromVision:l}){const{id:s,label:i,placeholder:c}=t,u=t.getValue({item:e}),d=(0,o.useCallback)((e=>a({[s]:e})),[s,a]);return(0,n.jsx)(r.TextControl,{label:i,placeholder:c,value:null!=u?u:"",onChange:d,__next40pxDefaultSize:!0,__nextHasNoMarginBottom:!0,hideLabelFromVision:l})};var r=a(56427),o=a(86087),n=a(10790)},49901:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.DataFormLayout=function({data:e,form:t,onChange:a,children:r}){const{fields:d}=(0,n.useContext)(s.default);const v=(0,n.useMemo)((()=>(0,c.default)(t)),[t]);return(0,u.jsx)(o.__experimentalVStack,{spacing:2,children:v.map((t=>{const o=(0,l.getFormFieldLayout)(t.layout)?.component;if(!o)return null;const n=(0,i.isCombinedField)(t)?void 0:function(e){const t="string"==typeof e?e:e.id;return d.find((e=>e.id===t))}(t);return n&&n.isVisible&&!n.isVisible(e)?null:r?r(o,t):(0,u.jsx)(o,{data:e,field:t,onChange:a},t.id)}))})};var o=a(56427),n=a(86087),l=a(84551),s=r(a(72423)),i=a(98906),c=r(a(25087)),u=a(10790)},84551:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.getFormFieldLayout=function(e){return l.find((t=>t.type===e))};var o=r(a(36464)),n=r(a(52022));const l=[{type:"regular",component:o.default},{type:"panel",component:n.default}]},98906:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isCombinedField=function(e){return void 0!==e.children}},52022:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function({data:e,field:t,onChange:a}){var r;const{fields:n}=(0,l.useContext)(i.default),s=n.find((e=>{if((0,u.isCombinedField)(t)){const a=t.children.filter((e=>"string"==typeof e||!(0,u.isCombinedField)(e))),r="string"==typeof a[0]?a[0]:a[0].id;return e.id===r}return e.id===t.id})),c=null!==(r=t.labelPosition)&&void 0!==r?r:"side",[v,m]=(0,l.useState)(null);if(!s)return null;const h=(0,u.isCombinedField)(t)?t.label:s?.label;if("top"===c)return(0,d.jsxs)(o.__experimentalVStack,{className:"dataforms-layouts-panel__field",spacing:0,children:[(0,d.jsx)("div",{className:"dataforms-layouts-panel__field-label",style:{paddingBottom:0},children:h}),(0,d.jsx)("div",{className:"dataforms-layouts-panel__field-control",children:(0,d.jsx)(p,{field:t,popoverAnchor:v,fieldDefinition:s,data:e,onChange:a,labelPosition:c})})]});if("none"===c)return(0,d.jsx)("div",{className:"dataforms-layouts-panel__field",children:(0,d.jsx)(p,{field:t,popoverAnchor:v,fieldDefinition:s,data:e,onChange:a,labelPosition:c})});return(0,d.jsxs)(o.__experimentalHStack,{ref:m,className:"dataforms-layouts-panel__field",children:[(0,d.jsx)("div",{className:"dataforms-layouts-panel__field-label",children:h}),(0,d.jsx)("div",{className:"dataforms-layouts-panel__field-control",children:(0,d.jsx)(p,{field:t,popoverAnchor:v,fieldDefinition:s,data:e,onChange:a,labelPosition:c})})]})};var o=a(56427),n=a(27723),l=a(86087),s=a(83203),i=r(a(72423)),c=a(49901),u=a(98906),d=a(10790);function v({title:e,onClose:t}){return(0,d.jsx)(o.__experimentalVStack,{className:"dataforms-layouts-panel__dropdown-header",spacing:4,children:(0,d.jsxs)(o.__experimentalHStack,{alignment:"center",children:[e&&(0,d.jsx)(o.__experimentalHeading,{level:2,size:13,children:e}),(0,d.jsx)(o.__experimentalSpacer,{}),t&&(0,d.jsx)(o.Button,{label:(0,n.__)("Close","jetpack-my-jetpack"),icon:s.closeSmall,onClick:t,size:"small"})]})})}function p({fieldDefinition:e,popoverAnchor:t,labelPosition:a="side",data:r,onChange:s,field:i}){const p=(0,u.isCombinedField)(i)?i.label:e?.label,m=(0,l.useMemo)((()=>(0,u.isCombinedField)(i)?{type:"regular",fields:i.children.map((e=>"string"==typeof e?{id:e}:e))}:{type:"regular",fields:[{id:i.id}]}),[i]),h=(0,l.useMemo)((()=>({anchor:t,placement:"left-start",offset:36,shift:!0})),[t]);return(0,d.jsx)(o.Dropdown,{contentClassName:"dataforms-layouts-panel__field-dropdown",popoverProps:h,focusOnMount:!0,toggleProps:{size:"compact",variant:"tertiary",tooltipPosition:"middle left"},renderToggle:({isOpen:t,onToggle:l})=>(0,d.jsx)(o.Button,{className:"dataforms-layouts-panel__field-control",size:"compact",variant:["none","top"].includes(a)?"link":"tertiary","aria-expanded":t,"aria-label":(0,n.sprintf)( -// translators: %s: Field name. -// translators: %s: Field name. -(0,n._x)("Edit %s","field","jetpack-my-jetpack"),p),onClick:l,children:(0,d.jsx)(e.render,{item:r})}),renderContent:({onClose:e})=>(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(v,{title:p,onClose:e}),(0,d.jsx)(c.DataFormLayout,{data:r,form:m,onChange:s,children:(e,t)=>{var a;return(0,d.jsx)(e,{data:r,field:t,onChange:s,hideLabelFromVision:(null!==(a=m?.fields)&&void 0!==a?a:[]).length<2},t.id)}})]})})}},36464:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function({data:e,field:t,onChange:a,hideLabelFromVision:r}){var d;const{fields:v}=(0,o.useContext)(l.default),p=(0,o.useMemo)((()=>(0,i.isCombinedField)(t)?{fields:t.children.map((e=>"string"==typeof e?{id:e}:e)),type:"regular"}:{type:"regular",fields:[]}),[t]);if((0,i.isCombinedField)(t))return(0,c.jsxs)(c.Fragment,{children:[!r&&t.label&&(0,c.jsx)(u,{title:t.label}),(0,c.jsx)(s.DataFormLayout,{data:e,form:p,onChange:a})]});const m=null!==(d=t.labelPosition)&&void 0!==d?d:"top",h=v.find((e=>e.id===t.id));if(!h)return null;if("side"===m)return(0,c.jsxs)(n.__experimentalHStack,{className:"dataforms-layouts-regular__field",children:[(0,c.jsx)("div",{className:"dataforms-layouts-regular__field-label",children:h.label}),(0,c.jsx)("div",{className:"dataforms-layouts-regular__field-control",children:(0,c.jsx)(h.Edit,{data:e,field:h,onChange:a,hideLabelFromVision:!0},h.id)})]});return(0,c.jsx)("div",{className:"dataforms-layouts-regular__field",children:(0,c.jsx)(h.Edit,{data:e,field:h,onChange:a,hideLabelFromVision:"none"===m||r})})};var o=a(86087),n=a(56427),l=r(a(72423)),s=a(49901),i=a(98906),c=a(10790);function u({title:e}){return(0,c.jsx)(n.__experimentalVStack,{className:"dataforms-layouts-regular__header",spacing:4,children:(0,c.jsxs)(n.__experimentalHStack,{alignment:"center",children:[(0,c.jsx)(n.__experimentalHeading,{level:2,size:13,children:e}),(0,c.jsx)(n.__experimentalSpacer,{})]})})}},95187:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function({actions:e,data:t,fields:a,getItemId:r,isLoading:s,onChangeSelection:i,onClickItem:c,isItemClickable:u,selection:v,view:h}){var g;const w=a.find((e=>e.id===h?.titleField)),b=a.find((e=>e.id===h?.mediaField)),y=a.find((e=>e.id===h?.descriptionField)),x=null!==(g=h.fields)&&void 0!==g?g:[],{regularFields:_,badgeFields:k}=x.reduce(((e,t)=>{const r=a.find((e=>e.id===t));if(!r)return e;return e[h.layout?.badgeFields?.includes(t)?"badgeFields":"regularFields"].push(r),e}),{regularFields:[],badgeFields:[]}),E=!!t?.length,C=(0,p.useUpdatedPreviewSizeOnViewportChange)(),j=(0,d.useSomeItemHasAPossibleBulkAction)(e,t),A=C||h.layout?.previewSize,S=A?{gridTemplateColumns:`repeat(${A}, minmax(0, 1fr))`}:{};return(0,m.jsxs)(m.Fragment,{children:[E&&(0,m.jsx)(n.__experimentalGrid,{gap:8,columns:2,alignment:"top",className:"dataviews-view-grid",style:S,"aria-busy":s,children:t.map((t=>(0,m.jsx)(f,{view:h,selection:v,onChangeSelection:i,onClickItem:c,isItemClickable:u,getItemId:r,item:t,actions:e,mediaField:b,titleField:w,descriptionField:y,regularFields:_,badgeFields:k,hasBulkActions:j},r(t))))}),!E&&(0,m.jsx)("div",{className:(0,o.default)({"dataviews-loading":s,"dataviews-no-results":!s}),children:(0,m.jsx)("p",{children:s?(0,m.jsx)(n.Spinner,{}):(0,l.__)("No results","jetpack-my-jetpack")})})]})};var o=r(a(33752)),n=a(56427),l=a(27723),s=a(29491),i=a(40191),c=r(a(97867)),u=r(a(10086)),d=a(10192),v=r(a(69946)),p=a(9828),m=a(10790);const{Badge:h}=(0,i.unlock)(n.privateApis);function f({view:e,selection:t,onChangeSelection:a,onClickItem:r,isItemClickable:i,getItemId:p,item:g,actions:w,mediaField:b,titleField:y,descriptionField:x,regularFields:_,badgeFields:k,hasBulkActions:E}){const{showTitle:C=!0,showMedia:j=!0,showDescription:A=!0}=e,S=(0,d.useHasAPossibleBulkAction)(w,g),P=p(g),R=(0,s.useInstanceId)(f),M=t.includes(P),V=b?.render?(0,m.jsx)(b.render,{item:g}):null,z=C&&y?.render?(0,m.jsx)(y.render,{item:g}):null,H=(0,v.default)({item:g,isItemClickable:i,onClickItem:r,className:"dataviews-view-grid__media"}),L=(0,v.default)({item:g,isItemClickable:i,onClickItem:r,className:"dataviews-view-grid__title-field dataviews-title-field"});let O,N;return i(g)&&r&&(z?(O={"aria-labelledby":`dataviews-view-grid__title-field-${R}`},N={id:`dataviews-view-grid__title-field-${R}`}):O={"aria-label":(0,l.__)("Navigate to item","jetpack-my-jetpack")}),(0,m.jsxs)(n.__experimentalVStack,{spacing:0,className:(0,o.default)("dataviews-view-grid__card",{"is-selected":S&&M}),onClickCapture:e=>{if(e.ctrlKey||e.metaKey){if(e.stopPropagation(),e.preventDefault(),!S)return;a(t.includes(P)?t.filter((e=>P!==e)):[...t,P])}},children:[j&&V&&(0,m.jsx)("div",{...H,...O,children:V}),E&&j&&V&&(0,m.jsx)(u.default,{item:g,selection:t,onChangeSelection:a,getItemId:p,titleField:y,disabled:!S}),(0,m.jsxs)(n.__experimentalHStack,{justify:"space-between",className:"dataviews-view-grid__title-actions",children:[(0,m.jsx)("div",{...L,...N,children:z}),!!w?.length&&(0,m.jsx)(c.default,{item:g,actions:w,isCompact:!0})]}),(0,m.jsxs)(n.__experimentalVStack,{spacing:1,children:[A&&x?.render&&(0,m.jsx)(x.render,{item:g}),!!k?.length&&(0,m.jsx)(n.__experimentalHStack,{className:"dataviews-view-grid__badge-fields",spacing:2,wrap:!0,alignment:"top",justify:"flex-start",children:k.map((e=>(0,m.jsx)(h,{className:"dataviews-view-grid__field-value",children:(0,m.jsx)(e.render,{item:g})},e.id)))}),!!_?.length&&(0,m.jsx)(n.__experimentalVStack,{className:"dataviews-view-grid__fields",spacing:1,children:_.map((e=>(0,m.jsx)(n.Flex,{className:"dataviews-view-grid__field",gap:1,justify:"flex-start",expanded:!0,style:{height:"auto"},direction:"row",children:(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(n.FlexItem,{className:"dataviews-view-grid__field-name",children:e.header}),(0,m.jsx)(n.FlexItem,{className:"dataviews-view-grid__field-value",style:{maxHeight:"none"},children:(0,m.jsx)(e.render,{item:g})})]})},e.id)))})]})]},P)}},9828:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){const e=d(),t=(0,l.useContext)(s.default),a=t.view,r=c[e],u=a.layout?.previewSize||r.default,v=(0,l.useMemo)((()=>Array.from({length:r.max-r.min+1},((e,t)=>({value:r.min+t})))),[r]);if("mobile"===e)return null;return(0,i.jsx)(o.RangeControl,{__nextHasNoMarginBottom:!0,__next40pxDefaultSize:!0,showTooltip:!1,label:(0,n.__)("Preview size","jetpack-my-jetpack"),value:r.max+r.min-u,marks:v,min:r.min,max:r.max,withInputField:!1,onChange:(e=0)=>{t.onChangeView({...a,layout:{...a.layout,previewSize:r.max+r.min-e}})},step:1})},t.useUpdatedPreviewSizeOnViewportChange=function(){const e=(0,l.useContext)(s.default).view,t=d();return(0,l.useMemo)((()=>{const a=e.layout?.previewSize;let r;if(!a)return;const o=c[t];return ao.max&&(r=o.max),r}),[t,e])};var o=a(56427),n=a(27723),l=a(86087),s=r(a(60789)),i=a(10790);const c={xhuge:{min:3,max:6,default:5},huge:{min:2,max:4,default:4},xlarge:{min:2,max:3,default:3},large:{min:1,max:2,default:2},mobile:{min:1,max:2,default:2}},u={xhuge:1520,huge:1140,xlarge:780,large:480,mobile:0};function d(){const e=(0,l.useContext)(s.default).containerWidth;for(const[t,a]of Object.entries(u))if(e>=a)return t;return"mobile"}},9322:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.VIEW_LAYOUTS=void 0;var o=a(27723),n=a(83203),l=r(a(23517)),s=r(a(95187)),i=r(a(9247)),c=a(64116),u=r(a(9828)),d=r(a(26452));t.VIEW_LAYOUTS=[{type:c.LAYOUT_TABLE,label:(0,o.__)("Table","jetpack-my-jetpack"),component:l.default,icon:n.blockTable,viewConfigOptions:d.default},{type:c.LAYOUT_GRID,label:(0,o.__)("Grid","jetpack-my-jetpack"),component:s.default,icon:n.category,viewConfigOptions:u.default},{type:c.LAYOUT_LIST,label:(0,o.__)("List","jetpack-my-jetpack"),component:i.default,icon:(0,o.isRTL)()?n.formatListBulletsRTL:n.formatListBullets}]},9247:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function e(t){var a;const{actions:r,data:c,fields:u,getItemId:d,isLoading:v,onChangeSelection:m,selection:g,view:y}=t,x=(0,n.useInstanceId)(e,"view-list"),_=c?.findLast((e=>g.includes(d(e)))),k=u.find((e=>e.id===y.titleField)),E=u.find((e=>e.id===y.mediaField)),C=u.find((e=>e.id===y.descriptionField)),j=(null!==(a=y?.fields)&&void 0!==a?a:[]).map((e=>u.find((t=>e===t.id)))).filter(b),A=e=>m([d(e)]),S=(0,s.useCallback)((e=>`${x}-${d(e)}`),[x,d]),P=(0,s.useCallback)(((e,t)=>t.startsWith(S(e))),[S]),[R,M]=(0,s.useState)(void 0);(0,s.useEffect)((()=>{_&&M(h(S(_)))}),[_,S]);const V=c.findIndex((e=>P(e,null!=R?R:""))),z=(0,n.usePrevious)(V),H=-1!==V,L=(0,s.useCallback)(((e,t)=>{const a=Math.min(c.length-1,Math.max(0,e));if(!c[a])return;const r=t(S(c[a]));M(r),document.getElementById(r)?.focus()}),[c,S]);(0,s.useEffect)((()=>{!H&&(void 0!==z&&-1!==z)&&L(z,h)}),[H,L,z]);const O=(0,s.useCallback)((e=>{"ArrowDown"===e.key&&(e.preventDefault(),L(V+1,f)),"ArrowUp"===e.key&&(e.preventDefault(),L(V-1,f))}),[L,V]),N=c?.length;if(!N)return(0,p.jsx)("div",{className:(0,o.default)({"dataviews-loading":v,"dataviews-no-results":!N&&!v}),children:!N&&(0,p.jsx)("p",{children:v?(0,p.jsx)(l.Spinner,{}):(0,i.__)("No results","jetpack-my-jetpack")})});return(0,p.jsx)(l.Composite,{id:x,render:(0,p.jsx)("div",{}),className:"dataviews-view-list",role:"grid",activeId:R,setActiveId:M,children:c.map((e=>{const t=S(e);return(0,p.jsx)(w,{view:y,idPrefix:t,actions:r,item:e,isSelected:e===_,onSelect:A,mediaField:E,titleField:k,descriptionField:C,otherFields:j,onDropdownTriggerKeyDown:O},t)}))})};var o=r(a(33752)),n=a(29491),l=a(56427),s=a(86087),i=a(27723),c=a(83203),u=a(47143),d=a(40191),v=a(97867),p=a(10790);const{Menu:m}=(0,d.unlock)(l.privateApis);function h(e){return`${e}-item-wrapper`}function f(e){return`${e}-dropdown`}function g({idPrefix:e,primaryAction:t,item:a}){const r=(0,u.useRegistry)(),[o,n]=(0,s.useState)(!1),i=function(e,t){return`${e}-primary-action-${t}`}(e,t.id),c="string"==typeof t.label?t.label:t.label([a]);return"RenderModal"in t?(0,p.jsx)("div",{role:"gridcell",children:(0,p.jsx)(l.Composite.Item,{id:i,render:(0,p.jsx)(l.Button,{label:c,disabled:!!t.disabled,accessibleWhenDisabled:!0,icon:t.icon,isDestructive:t.isDestructive,size:"small",onClick:()=>n(!0)}),children:o&&(0,p.jsx)(v.ActionModal,{action:t,items:[a],closeModal:()=>n(!1)})})},t.id):(0,p.jsx)("div",{role:"gridcell",children:(0,p.jsx)(l.Composite.Item,{id:i,render:(0,p.jsx)(l.Button,{label:c,disabled:!!t.disabled,accessibleWhenDisabled:!0,icon:t.icon,isDestructive:t.isDestructive,size:"small",onClick:()=>{t.callback([a],{registry:r})}})})},t.id)}function w({view:e,actions:t,idPrefix:a,isSelected:r,item:n,titleField:d,mediaField:w,descriptionField:b,onSelect:y,otherFields:x,onDropdownTriggerKeyDown:_}){const{showTitle:k=!0,showMedia:E=!0,showDescription:C=!0}=e,j=(0,s.useRef)(null),A=`${a}-label`,S=`${a}-description`,P=(0,u.useRegistry)(),[R,M]=(0,s.useState)(!1),[V,z]=(0,s.useState)(null),H=({type:e})=>{M("mouseenter"===e)};(0,s.useEffect)((()=>{r&&j.current?.scrollIntoView({behavior:"auto",block:"nearest",inline:"nearest"})}),[r]);const{primaryAction:L,eligibleActions:O}=(0,s.useMemo)((()=>{const e=t.filter((e=>!e.isEligible||e.isEligible(n)));return{primaryAction:e.filter((e=>e.isPrimary&&!!e.icon))[0],eligibleActions:e}}),[t,n]),N=L&&1===t.length,I=E&&w?.render?(0,p.jsx)("div",{className:"dataviews-view-list__media-wrapper",children:(0,p.jsx)(w.render,{item:n})}):null,B=k&&d?.render?(0,p.jsx)(d.render,{item:n}):null,T=O?.length>0&&(0,p.jsxs)(l.__experimentalHStack,{spacing:3,className:"dataviews-view-list__item-actions",children:[L&&(0,p.jsx)(g,{idPrefix:a,primaryAction:L,item:n}),!N&&(0,p.jsxs)("div",{role:"gridcell",children:[(0,p.jsxs)(m,{placement:"bottom-end",children:[(0,p.jsx)(m.TriggerButton,{render:(0,p.jsx)(l.Composite.Item,{id:f(a),render:(0,p.jsx)(l.Button,{size:"small",icon:c.moreVertical,label:(0,i.__)("Actions","jetpack-my-jetpack"),accessibleWhenDisabled:!0,disabled:!t.length,onKeyDown:_})})}),(0,p.jsx)(m.Popover,{children:(0,p.jsx)(v.ActionsMenuGroup,{actions:O,item:n,registry:P,setActiveModalAction:z})})]}),!!V&&(0,p.jsx)(v.ActionModal,{action:V,items:[n],closeModal:()=>z(null)})]})]});return(0,p.jsx)(l.Composite.Row,{ref:j,render:(0,p.jsx)("div",{}),role:"row",className:(0,o.default)({"is-selected":r,"is-hovered":R}),onMouseEnter:H,onMouseLeave:H,children:(0,p.jsxs)(l.__experimentalHStack,{className:"dataviews-view-list__item-wrapper",spacing:0,children:[(0,p.jsx)("div",{role:"gridcell",children:(0,p.jsx)(l.Composite.Item,{id:h(a),"aria-pressed":r,"aria-labelledby":A,"aria-describedby":S,className:"dataviews-view-list__item",onClick:()=>y(n)})}),(0,p.jsxs)(l.__experimentalHStack,{spacing:3,justify:"start",alignment:"flex-start",children:[I,(0,p.jsxs)(l.__experimentalVStack,{spacing:1,className:"dataviews-view-list__field-wrapper",children:[(0,p.jsxs)(l.__experimentalHStack,{spacing:0,children:[(0,p.jsx)("div",{className:"dataviews-title-field",id:A,children:B}),T]}),C&&b?.render&&(0,p.jsx)("div",{className:"dataviews-view-list__field",children:(0,p.jsx)(b.render,{item:n})}),(0,p.jsx)("div",{className:"dataviews-view-list__fields",id:S,children:x.map((e=>(0,p.jsxs)("div",{className:"dataviews-view-list__field",children:[(0,p.jsx)(l.VisuallyHidden,{as:"span",className:"dataviews-view-list__field-label",children:e.label}),(0,p.jsx)("span",{className:"dataviews-view-list__field-value",children:(0,p.jsx)(e.render,{item:n})})]},e.id)))})]})]})]})})}function b(e){return!!e}},48277:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=a(27723),o=a(83203),n=a(56427),l=a(86087),s=a(40191),i=a(7912),c=a(64116),u=a(10790);const{Menu:d}=(0,s.unlock)(n.privateApis);function v({children:e}){return l.Children.toArray(e).filter(Boolean).map(((e,t)=>(0,u.jsxs)(l.Fragment,{children:[t>0&&(0,u.jsx)(d.Separator,{}),e]},t)))}const p=(0,l.forwardRef)((function({fieldId:e,view:t,fields:a,onChangeView:l,onHide:s,setOpenedFilter:p,canMove:m=!0},h){var f;const g=null!==(f=t.fields)&&void 0!==f?f:[],w=g?.indexOf(e),b=t.sort?.field===e;let y=!1,x=!1,_=!1,k=[];const E=a.find((t=>t.id===e));if(!E)return null;y=!1!==E.enableHiding,x=!1!==E.enableSorting;const C=E.header;return k=(0,i.sanitizeOperators)(E),_=!(t.filters?.some((t=>e===t.field))||!E.elements?.length||!k.length||E.filterBy?.isPrimary),(0,u.jsxs)(d,{children:[(0,u.jsxs)(d.TriggerButton,{render:(0,u.jsx)(n.Button,{size:"compact",className:"dataviews-view-table-header-button",ref:h,variant:"tertiary"}),children:[C,t.sort&&b&&(0,u.jsx)("span",{"aria-hidden":"true",children:c.sortArrows[t.sort.direction]})]}),(0,u.jsx)(d.Popover,{style:{minWidth:"240px"},children:(0,u.jsxs)(v,{children:[x&&(0,u.jsx)(d.Group,{children:c.SORTING_DIRECTIONS.map((a=>{const r=t.sort&&b&&t.sort.direction===a,o=`${e}-${a}`;return(0,u.jsx)(d.RadioItem,{name:"view-table-sorting",value:o,checked:r,onChange:()=>{l({...t,sort:{field:e,direction:a},showLevels:!1})},children:(0,u.jsx)(d.ItemLabel,{children:c.sortLabels[a]})},o)}))}),_&&(0,u.jsx)(d.Group,{children:(0,u.jsx)(d.Item,{prefix:(0,u.jsx)(n.Icon,{icon:o.funnel}),onClick:()=>{p(e),l({...t,page:1,filters:[...t.filters||[],{field:e,value:void 0,operator:k[0]}]})},children:(0,u.jsx)(d.ItemLabel,{children:(0,r.__)("Add filter","jetpack-my-jetpack")})})}),(m||y)&&E&&(0,u.jsxs)(d.Group,{children:[m&&(0,u.jsx)(d.Item,{prefix:(0,u.jsx)(n.Icon,{icon:o.arrowLeft}),disabled:w<1,onClick:()=>{var a;l({...t,fields:[...null!==(a=g.slice(0,w-1))&&void 0!==a?a:[],e,g[w-1],...g.slice(w+1)]})},children:(0,u.jsx)(d.ItemLabel,{children:(0,r.__)("Move left","jetpack-my-jetpack")})}),m&&(0,u.jsx)(d.Item,{prefix:(0,u.jsx)(n.Icon,{icon:o.arrowRight}),disabled:w>=g.length-1,onClick:()=>{var a;l({...t,fields:[...null!==(a=g.slice(0,w))&&void 0!==a?a:[],g[w+1],e,...g.slice(w+2)]})},children:(0,u.jsx)(d.ItemLabel,{children:(0,r.__)("Move right","jetpack-my-jetpack")})}),y&&E&&(0,u.jsx)(d.Item,{prefix:(0,u.jsx)(n.Icon,{icon:o.unseen}),onClick:()=>{s(E),l({...t,fields:g.filter((t=>t!==e))})},children:(0,u.jsx)(d.ItemLabel,{children:(0,r.__)("Hide column","jetpack-my-jetpack")})})]})]})})]})}));t.default=p},27040:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=a(56427),n=r(a(69946)),l=a(10790);t.default=function({item:e,level:t,titleField:a,mediaField:r,descriptionField:s,onClickItem:i,isItemClickable:c}){const u=(0,n.default)({item:e,isItemClickable:c,onClickItem:i,className:"dataviews-view-table__cell-content-wrapper dataviews-title-field"});return(0,l.jsxs)(o.__experimentalHStack,{spacing:3,justify:"flex-start",children:[r&&(0,l.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper dataviews-column-primary__media",children:(0,l.jsx)(r.render,{item:e})}),(0,l.jsxs)(o.__experimentalVStack,{spacing:0,children:[a&&(0,l.jsxs)("div",{...u,children:[void 0!==t&&(0,l.jsxs)("span",{className:"dataviews-view-table__level",children:["—".repeat(t)," "]}),(0,l.jsx)(a.render,{item:e})]}),s&&(0,l.jsx)(s.render,{item:e})]})]})}},26452:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){const e=(0,l.useContext)(s.default),t=e.view;return(0,i.jsxs)(o.__experimentalToggleGroupControl,{__nextHasNoMarginBottom:!0,size:"__unstable-large",label:(0,n.__)("Density","jetpack-my-jetpack"),value:t.layout?.density||"balanced",onChange:a=>{e.onChangeView({...t,layout:{...t.layout,density:a}})},isBlock:!0,children:[(0,i.jsx)(o.__experimentalToggleGroupControlOption,{value:"comfortable",label:(0,n._x)("Comfortable","Density option for DataView layout","jetpack-my-jetpack")},"comfortable"),(0,i.jsx)(o.__experimentalToggleGroupControlOption,{value:"balanced",label:(0,n._x)("Balanced","Density option for DataView layout","jetpack-my-jetpack")},"balanced"),(0,i.jsx)(o.__experimentalToggleGroupControlOption,{value:"compact",label:(0,n._x)("Compact","Density option for DataView layout","jetpack-my-jetpack")},"compact")]})};var o=a(56427),n=a(27723),l=a(86087),s=r(a(60789)),i=a(10790)},23517:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(a(33752)),n=a(27723),l=a(56427),s=a(86087),i=r(a(10086)),c=r(a(97867)),u=a(64116),d=a(10192),v=r(a(48277)),p=r(a(27040)),m=a(10790);function h({item:e,fields:t,column:a}){const r=t.find((e=>e.id===a));return r?(0,m.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,m.jsx)(r.render,{item:e})}):null}function f({hasBulkActions:e,item:t,level:a,actions:r,fields:n,id:l,view:u,titleField:v,mediaField:f,descriptionField:g,selection:w,getItemId:b,isItemClickable:y,onClickItem:x,onChangeSelection:_}){var k;const E=(0,d.useHasAPossibleBulkAction)(r,t),C=E&&w.includes(l),[j,A]=(0,s.useState)(!1),{showTitle:S=!0,showMedia:P=!0,showDescription:R=!0}=u,M=(0,s.useRef)(!1),V=null!==(k=u.fields)&&void 0!==k?k:[],z=v&&S||f&&P||g&&R;return(0,m.jsxs)("tr",{className:(0,o.default)("dataviews-view-table__row",{"is-selected":E&&C,"is-hovered":j,"has-bulk-actions":E}),onMouseEnter:()=>{A(!0)},onMouseLeave:()=>{A(!1)},onTouchStart:()=>{M.current=!0},onClick:()=>{E&&(M.current||"Range"===document.getSelection()?.type||_(w.includes(l)?w.filter((e=>l!==e)):[l]))},children:[e&&(0,m.jsx)("td",{className:"dataviews-view-table__checkbox-column",children:(0,m.jsx)("div",{className:"dataviews-view-table__cell-content-wrapper",children:(0,m.jsx)(i.default,{item:t,selection:w,onChangeSelection:_,getItemId:b,titleField:v,disabled:!E})})}),z&&(0,m.jsx)("td",{children:(0,m.jsx)(p.default,{item:t,level:a,titleField:S?v:void 0,mediaField:P?f:void 0,descriptionField:R?g:void 0,isItemClickable:y,onClickItem:x})}),V.map((e=>{var a;const{width:r,maxWidth:o,minWidth:l}=null!==(a=u.layout?.styles?.[e])&&void 0!==a?a:{};return(0,m.jsx)("td",{style:{width:r,maxWidth:o,minWidth:l},children:(0,m.jsx)(h,{fields:n,item:t,column:e})},e)})),!!r?.length&&(0,m.jsx)("td",{className:"dataviews-view-table__actions-column",onClick:e=>e.stopPropagation(),children:(0,m.jsx)(c.default,{item:t,actions:r})})]})}t.default=function({actions:e,data:t,fields:a,getItemId:r,getItemLevel:i,isLoading:c=!1,onChangeView:p,onChangeSelection:h,selection:g,setOpenedFilter:w,onClickItem:b,isItemClickable:y,view:x}){var _;const k=(0,s.useRef)(new Map),E=(0,s.useRef)(),[C,j]=(0,s.useState)(),A=(0,d.useSomeItemHasAPossibleBulkAction)(e,t);(0,s.useEffect)((()=>{E.current&&(E.current.focus(),E.current=void 0)}));const S=(0,s.useId)();if(C)return E.current=C,void j(void 0);const P=e=>{const t=k.current.get(e.id),a=t?k.current.get(t.fallback):void 0;j(a?.node)},R=!!t?.length,M=a.find((e=>e.id===x.titleField)),V=a.find((e=>e.id===x.mediaField)),z=a.find((e=>e.id===x.descriptionField)),{showTitle:H=!0,showMedia:L=!0,showDescription:O=!0}=x,N=M&&H||V&&L||z&&O,I=null!==(_=x.fields)&&void 0!==_?_:[],B=(e,t)=>a=>{a?k.current.set(e,{node:a,fallback:I[t>0?t-1:1]}):k.current.delete(e)};return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsxs)("table",{className:(0,o.default)("dataviews-view-table",{[`has-${x.layout?.density}-density`]:x.layout?.density&&["compact","comfortable"].includes(x.layout.density)}),"aria-busy":c,"aria-describedby":S,children:[(0,m.jsx)("thead",{children:(0,m.jsxs)("tr",{className:"dataviews-view-table__row",children:[A&&(0,m.jsx)("th",{className:"dataviews-view-table__checkbox-column",scope:"col",children:(0,m.jsx)(d.BulkSelectionCheckbox,{selection:g,onChangeSelection:h,data:t,actions:e,getItemId:r})}),N&&(0,m.jsx)("th",{scope:"col",children:M&&(0,m.jsx)(v.default,{ref:B(M.id,0),fieldId:M.id,view:x,fields:a,onChangeView:p,onHide:P,setOpenedFilter:w,canMove:!1})}),I.map(((e,t)=>{var r;const{width:o,maxWidth:n,minWidth:l}=null!==(r=x.layout?.styles?.[e])&&void 0!==r?r:{};return(0,m.jsx)("th",{style:{width:o,maxWidth:n,minWidth:l},"aria-sort":x.sort?.direction&&x.sort?.field===e?u.sortValues[x.sort.direction]:void 0,scope:"col",children:(0,m.jsx)(v.default,{ref:B(e,t),fieldId:e,view:x,fields:a,onChangeView:p,onHide:P,setOpenedFilter:w})},e)})),!!e?.length&&(0,m.jsx)("th",{className:"dataviews-view-table__actions-column",children:(0,m.jsx)("span",{className:"dataviews-view-table-header",children:(0,n.__)("Actions","jetpack-my-jetpack")})})]})}),(0,m.jsx)("tbody",{children:R&&t.map(((t,o)=>(0,m.jsx)(f,{item:t,level:x.showLevels&&"function"==typeof i?i(t):void 0,hasBulkActions:A,actions:e,fields:a,id:r(t)||o.toString(),view:x,titleField:M,mediaField:V,descriptionField:z,selection:g,getItemId:r,onChangeSelection:h,onClickItem:b,isItemClickable:y},r(t))))})]}),(0,m.jsx)("div",{className:(0,o.default)({"dataviews-loading":c,"dataviews-no-results":!R&&!c}),id:S,children:!R&&(0,m.jsx)("p",{children:c?(0,m.jsx)(l.Spinner,{}):(0,n.__)("No results","jetpack-my-jetpack")})})]})}},69946:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function({item:e,isItemClickable:t,onClickItem:a,className:r}){if(!t(e)||!a)return{className:r};return{className:r?`${r} ${r}--clickable`:void 0,role:"button",tabIndex:0,onClick:t=>{t.stopPropagation(),a(e)},onKeyDown:t=>{"Enter"!==t.key&&""!==t.key&&" "!==t.key||(t.stopPropagation(),a(e))}}}},8749:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default={sort:function(e,t,a){const r=new Date(e).getTime(),o=new Date(t).getTime();return"asc"===a?r-o:o-r},isValid:function(e,t){if(t?.elements){const a=t?.elements.map((e=>e.value));if(!a.includes(e))return!1}return!0},Edit:"datetime"}},62158:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if("integer"===e)return o.default;if("text"===e)return n.default;if("datetime"===e)return l.default;return{sort:(e,t,a)=>"number"==typeof e&&"number"==typeof t?"asc"===a?e-t:t-e:"asc"===a?e.localeCompare(t):t.localeCompare(e),isValid:(e,t)=>{if(t?.elements){const a=t?.elements?.map((e=>e.value));if(!a.includes(e))return!1}return!0},Edit:()=>null}};var o=r(a(98468)),n=r(a(807)),l=r(a(8749))},98468:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default={sort:function(e,t,a){return"asc"===a?e-t:t-e},isValid:function(e,t){if(""===e)return!1;if(!Number.isInteger(Number(e)))return!1;if(t?.elements){const a=t?.elements.map((e=>e.value));if(!a.includes(Number(e)))return!1}return!0},Edit:"integer"}},807:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default={sort:function(e,t,a){return"asc"===a?e.localeCompare(t):t.localeCompare(e)},isValid:function(e,t){if(t?.elements){const a=t?.elements?.map((e=>e.value));if(!a.includes(e))return!1}return!0},Edit:"text"}},66323:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.filterSortAndPaginate=function(e,t,a){if(!e)return{data:i,paginationInfo:{totalItems:0,totalPages:0}};const r=(0,l.normalizeFields)(a);let o=[...e];if(t.search){const e=s(t.search);o=o.filter((t=>r.filter((e=>e.enableGlobalSearch)).map((e=>s(e.getValue({item:t})))).some((t=>t.includes(e)))))}t.filters&&t.filters?.length>0&&t.filters.forEach((e=>{const t=r.find((t=>t.id===e.field));t&&(e.operator===n.OPERATOR_IS_ANY&&e?.value?.length>0?o=o.filter((a=>{const r=t.getValue({item:a});return Array.isArray(r)?e.value.some((e=>r.includes(e))):"string"==typeof r&&e.value.includes(r)})):e.operator===n.OPERATOR_IS_NONE&&e?.value?.length>0?o=o.filter((a=>{const r=t.getValue({item:a});return Array.isArray(r)?!e.value.some((e=>r.includes(e))):"string"==typeof r&&!e.value.includes(r)})):e.operator===n.OPERATOR_IS_ALL&&e?.value?.length>0?o=o.filter((a=>e.value.every((e=>t.getValue({item:a})?.includes(e))))):e.operator===n.OPERATOR_IS_NOT_ALL&&e?.value?.length>0?o=o.filter((a=>e.value.every((e=>!t.getValue({item:a})?.includes(e))))):e.operator===n.OPERATOR_IS?o=o.filter((a=>e.value===t.getValue({item:a}))):e.operator===n.OPERATOR_IS_NOT&&(o=o.filter((a=>e.value!==t.getValue({item:a})))))}));if(t.sort){const e=t.sort.field,a=r.find((t=>t.id===e));a&&o.sort(((e,r)=>{var o;return a.sort(e,r,null!==(o=t.sort?.direction)&&void 0!==o?o:"desc")}))}let c=o.length,u=1;if(void 0!==t.page&&void 0!==t.perPage){const e=(t.page-1)*t.perPage;c=o?.length||0,u=Math.ceil(c/t.perPage),o=o?.slice(e,e+t.perPage)}return{data:o,paginationInfo:{totalItems:c,totalPages:u}}};var o=r(a(44775)),n=a(64116),l=a(53582);function s(e=""){return(0,o.default)(e.trim().toLowerCase())}const i=[]},3613:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"Vw",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"Pp",{enumerable:!0,get:function(){return s.filterSortAndPaginate}});var o=r(a(67807)),n=r(a(44117)),l=a(9322),s=a(66323),i=a(61382)},40191:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.unlock=t.lock=void 0;var r=a(13053);const{lock:o,unlock:n}=(0,r.__dangerousOptInToUnstableAPIsOnlyForCoreModules)("I acknowledge private features are not for use in themes or plugins and doing so will break in the next version of WordPress.","@wordpress/dataviews");t.unlock=n,t.lock=o},53582:(e,t,a)=>{"use strict";var r=a(98504);Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeFields=function(e){return e.map((e=>{var t,a,r,s;const i=(0,o.default)(e.type),c=e.getValue||l(e.id),u=null!==(t=e.sort)&&void 0!==t?t:function(e,t,a){return i.sort(c({item:e}),c({item:t}),a)},d=null!==(a=e.isValid)&&void 0!==a?a:function(e,t){return i.isValid(c({item:e}),t)},v=(0,n.getControl)(e,i),p=e.render||(e.elements?({item:t})=>{const a=c({item:t});return e?.elements?.find((e=>e.value===a))?.label||c({item:t})}:c);return{...e,label:e.label||e.id,header:e.header||e.label||e.id,getValue:c,render:p,sort:u,isValid:d,Edit:v,enableHiding:null===(r=e.enableHiding)||void 0===r||r,enableSorting:null===(s=e.enableSorting)||void 0===s||s}}))};var o=r(a(62158)),n=a(70105);const l=e=>({item:t})=>{const a=e.split(".");let r=t;for(const e of a)r=r.hasOwnProperty(e)?r[e]:void 0;return r}},25087:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t,a,r;let o="regular";["regular","panel"].includes(null!==(t=e.type)&&void 0!==t?t:"")&&(o=e.type);const n=null!==(a=e.labelPosition)&&void 0!==a?a:"regular"===o?"top":"side";return(null!==(r=e.fields)&&void 0!==r?r:[]).map((e=>{var t,a;if("string"==typeof e)return{id:e,layout:o,labelPosition:n};const r=null!==(t=e.layout)&&void 0!==t?t:o,l=null!==(a=e.labelPosition)&&void 0!==a?a:"regular"===r?"top":"side";return{...e,layout:r,labelPosition:l}}))}},7912:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.sanitizeOperators=function(e){let t=e.filterBy?.operators;t&&Array.isArray(t)||(t=[r.OPERATOR_IS_ANY,r.OPERATOR_IS_NONE]);t=t.filter((e=>r.ALL_OPERATORS.includes(e))),(t.includes(r.OPERATOR_IS)||t.includes(r.OPERATOR_IS_NOT))&&(t=t.filter((e=>[r.OPERATOR_IS,r.OPERATOR_IS_NOT].includes(e))));return t};var r=a(64116)},61382:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isItemValid=function(e,t,a){return(0,r.normalizeFields)(t.filter((({id:e})=>!!a.fields?.includes(e)))).every((t=>t.isValid(e,{elements:t.elements})))};var r=a(53582)},61937:(e,t,a)=>{"use strict";var r=a(51609);var o="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},n=r.useState,l=r.useEffect,s=r.useLayoutEffect,i=r.useDebugValue;function c(e){var t=e.getSnapshot;e=e.value;try{var a=t();return!o(e,a)}catch(e){return!0}}var u="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var a=t(),r=n({inst:{value:a,getSnapshot:t}}),o=r[0].inst,u=r[1];return s((function(){o.value=a,o.getSnapshot=t,c(o)&&u({inst:o})}),[e,a,t]),l((function(){return c(o)&&u({inst:o}),e((function(){c(o)&&u({inst:o})}))}),[e]),i(a),a};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:u},22484:(e,t,a)=>{"use strict";e.exports=a(61937)},96309:(e,t,a)=>{"use strict";e.exports=a.p+"images/jetpack-license-activation-with-lock-cef570e11997f185e23d.png"},97139:(e,t,a)=>{"use strict";e.exports=a.p+"images/jetpack-license-activation-with-success-c5c132e713a79e05985f.png"},42822:(e,t,a)=>{"use strict";e.exports=a.p+"images/apple-92dacafad84e79708a74.svg"},18395:(e,t,a)=>{"use strict";e.exports=a.p+"images/connect-c399837fe1621b176d10.png"},35975:(e,t,a)=>{"use strict";e.exports=a.p+"images/github-45c648158e3e86b560f5.svg"},35519:(e,t,a)=>{"use strict";e.exports=a.p+"images/google-dec2a429bf1d8e83f9ad.svg"},6579:(e,t,a)=>{"use strict";e.exports=a.p+"images/wordpress-1fc3e0ba6c52e9707900.svg"},95042:(e,t,a)=>{"use strict";e.exports=a.p+"images/cloud-81ac85ba680343200f54.svg"},33168:(e,t,a)=>{"use strict";e.exports=a.p+"images/empty-avatar-fea23feddfa99b07c2e8.svg"},17757:(e,t,a)=>{"use strict";e.exports=a.p+"images/jetpack-gray-7eeb5eb060c8adea8622.svg"},87319:(e,t,a)=>{"use strict";e.exports=a.p+"images/jetpack-9de1caef5eb5c22da5d6.svg"},64576:(e,t,a)=>{"use strict";e.exports=a.p+"images/jetpack-manage-3a7ecaa604823c98c3cf.svg"},91912:(e,t,a)=>{"use strict";e.exports=a.p+"images/grow-your-audience-ddf8016fd72419f4e80e.png"},33320:(e,t,a)=>{"use strict";e.exports=a.p+"images/apple-36e00ab02e6fed6f51dd.svg"},70261:(e,t,a)=>{"use strict";e.exports=a.p+"images/github-523373a4447a46c189a1.svg"},71909:(e,t,a)=>{"use strict";e.exports=a.p+"images/google-a444c8c0f0c0108836d8.svg"},38846:(e,t,a)=>{"use strict";e.exports=a.p+"images/jetpack-5e94ec9a207b87fe38d7.svg"},96068:(e,t,a)=>{"use strict";e.exports=a.p+"images/shield-inactive-cba3b43d918377b506e5.svg"},90850:(e,t,a)=>{"use strict";e.exports=a.p+"images/shield-off-47426e7b562ef20ae513.svg"},64538:(e,t,a)=>{"use strict";e.exports=a.p+"images/shield-partial-48b279219c6389a129b9.svg"},24516:(e,t,a)=>{"use strict";e.exports=a.p+"images/shield-success-e64a26c3a6d0888fba06.svg"},58769:(e,t,a)=>{"use strict";e.exports=a.p+"images/boost-9e9a227e7e7280d0aa85.png"},98019:(e,t,a)=>{"use strict";e.exports=a.p+"images/complete-f4bd1db5fb786efbc9d5.png"},25296:(e,t,a)=>{"use strict";e.exports=a.p+"images/crm-8a2b204e2c720730e928.png"},72279:(e,t,a)=>{"use strict";e.exports=a.p+"images/extras-c6bd0796750901faa7fd.png"},19923:(e,t,a)=>{"use strict";e.exports=a.p+"images/jetpack-ai-d29bf65dcea46074d72f.png"},17642:(e,t,a)=>{"use strict";e.exports=a.p+"images/search-d177a31292d96d5ccbc2.png"},35148:(e,t,a)=>{"use strict";e.exports=a.p+"images/security-53b7f3ddc8dcbe17b0c1.png"},59409:(e,t,a)=>{"use strict";e.exports=a.p+"images/stats-95b42796ede4f632b642.png"},5044:(e,t,a)=>{"use strict";e.exports=a.p+"images/videopress-9c064bc7b89c386e5e50.png"},25990:e=>{"use strict";e.exports={consumer_slug:"my_jetpack"}},39384:e=>{"use strict";e.exports=window.JetpackConnection},97999:e=>{"use strict";e.exports=window.JetpackScriptDataModule},51609:e=>{"use strict";e.exports=window.React},75795:e=>{"use strict";e.exports=window.ReactDOM},10790:e=>{"use strict";e.exports=window.ReactJSXRuntime},66087:e=>{"use strict";e.exports=window.lodash},1455:e=>{"use strict";e.exports=window.wp.apiFetch},56427:e=>{"use strict";e.exports=window.wp.components},29491:e=>{"use strict";e.exports=window.wp.compose},47143:e=>{"use strict";e.exports=window.wp.data},38443:e=>{"use strict";e.exports=window.wp.date},98490:e=>{"use strict";e.exports=window.wp.domReady},86087:e=>{"use strict";e.exports=window.wp.element},52619:e=>{"use strict";e.exports=window.wp.hooks},27723:e=>{"use strict";e.exports=window.wp.i18n},692:e=>{"use strict";e.exports=window.wp.notices},92279:e=>{"use strict";e.exports=window.wp.plugins},5573:e=>{"use strict";e.exports=window.wp.primitives},13053:e=>{"use strict";e.exports=window.wp.privateApis},93832:e=>{"use strict";e.exports=window.wp.url},10979:e=>{"use strict";e.exports=window.wp.warning},44536:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a,r="undefined"!=typeof window&&!!(null==(a=window.document)?void 0:a.createElement);function o(e){return e?"self"in e?e.document:e.ownerDocument||document:document}function n(e,t){return e===t||e.contains(t)}function l(e){return"IFRAME"===e.tagName}var s=["button","color","file","image","reset","submit"];function i(e){try{const t=e instanceof HTMLInputElement&&null!==e.selectionStart,a="TEXTAREA"===e.tagName;return t||a||!1}catch(e){return!1}}function c(e,t){const a=null==e?void 0:e.getAttribute("role");return a&&-1!==["dialog","menu","listbox","tree","grid"].indexOf(a)?a:t}function u(e){if(!e)return null;const t=e=>"auto"===e||"scroll"===e;if(e.clientHeight&&e.scrollHeight>e.clientHeight){const{overflowY:a}=getComputedStyle(e);if(t(a))return e}else if(e.clientWidth&&e.scrollWidth>e.clientWidth){const{overflowX:a}=getComputedStyle(e);if(t(a))return e}return u(e.parentElement)||document.scrollingElement||document.body}function d(e){const t=e.getBoundingClientRect(),a=u(e);if(!a)return!1;const r=a.getBoundingClientRect(),o="HTML"===a.tagName,n=o?r.top+a.scrollTop:r.top,l=o?a.clientHeight:r.bottom,s=o?r.left+a.scrollLeft:r.left,i=o?a.clientWidth:r.right,c=t.topl,p=t.right>i;return c||d||v||p}t.canUseDOM=r,t.getDocument=o,t.getWindow=function(e){return e?"self"in e?e.self:o(e).defaultView||window:self},t.getActiveElement=function e(t,a=!1){const{activeElement:r}=o(t);if(!(null==r?void 0:r.nodeName))return null;if(l(r)&&r.contentDocument)return e(r.contentDocument.body,a);if(a){const e=r.getAttribute("aria-activedescendant");if(e){const t=o(r).getElementById(e);if(t)return t}}return r},t.contains=n,t.isFrame=l,t.isButton=function(e){const t=e.tagName.toLowerCase();return"button"===t||!("input"!==t||!e.type)&&-1!==s.indexOf(e.type)},t.isVisible=function(e){if("function"==typeof e.checkVisibility)return e.checkVisibility();const t=e;return t.offsetWidth>0||t.offsetHeight>0||e.getClientRects().length>0},t.isTextField=i,t.isTextbox=function(e){return e.isContentEditable||i(e)},t.getTextboxValue=function(e){if(i(e))return e.value;if(e.isContentEditable){const t=o(e).createRange();return t.selectNodeContents(e),t.toString()}return""},t.getTextboxSelection=function(e){let t=0,a=0;if(i(e))t=e.selectionStart||0,a=e.selectionEnd||0;else if(e.isContentEditable){const r=o(e).getSelection();if((null==r?void 0:r.rangeCount)&&r.anchorNode&&n(e,r.anchorNode)&&r.focusNode&&n(e,r.focusNode)){const o=r.getRangeAt(0),n=o.cloneRange();n.selectNodeContents(e),n.setEnd(o.startContainer,o.startOffset),t=n.toString().length,n.setEnd(o.endContainer,o.endOffset),a=n.toString().length}}return{start:t,end:a}},t.getPopupRole=c,t.getPopupItemRole=function(e,t){var a;const r=c(e);return r&&null!=(a={menu:"menuitem",listbox:"option",tree:"treeitem"}[r])?a:t},t.scrollIntoViewIfNeeded=function(e,t){d(e)&&"scrollIntoView"in e&&e.scrollIntoView(t)},t.getScrollingElement=u,t.isPartiallyHidden=d,t.setSelectionRange=function(e,...t){/text|search|password|tel|url/i.test(e.type)&&e.setSelectionRange(...t)},t.sortBasedOnDOMPosition=function(e,t){const a=e.map(((e,t)=>[t,e]));let r=!1;return a.sort((([e,a],[o,n])=>{const l=t(a),s=t(n);return l===s?0:l&&s?function(e,t){return Boolean(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_PRECEDING)}(l,s)?(e>o&&(r=!0),-1):(et)):e}},87230:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=Object.defineProperty,r=Object.defineProperties,o=Object.getOwnPropertyDescriptors,n=Object.getOwnPropertySymbols,l=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable,i=(e,t,r)=>t in e?a(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;t.__spreadValues=(e,t)=>{for(var a in t||(t={}))l.call(t,a)&&i(e,a,t[a]);if(n)for(var a of n(t))s.call(t,a)&&i(e,a,t[a]);return e},t.__spreadProps=(e,t)=>r(e,o(t)),t.__objRest=(e,t)=>{var a={};for(var r in e)l.call(e,r)&&t.indexOf(r)<0&&(a[r]=e[r]);if(null!=e&&n)for(var r of n(e))t.indexOf(r)<0&&s.call(e,r)&&(a[r]=e[r]);return a}},67641:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(2617),o=a(87230);function n(e,t){const a=e.__unstableInternals;return r.invariant.call(void 0,a,"Invalid store"),a[t]}function l(e,...t){let a=e,n=a,c=Symbol(),u=r.noop;const d=new Set,v=new Set,p=new Set,m=new Set,h=new Set,f=new WeakMap,g=new WeakMap,w=(e,t,a=m)=>(a.add(t),g.set(t,e),()=>{var e;null==(e=f.get(t))||e(),f.delete(t),g.delete(t),a.delete(t)}),b=(e,l,s=!1)=>{var i;if(!r.hasOwnProperty.call(void 0,a,e))return;const u=r.applyState.call(void 0,l,a[e]);if(u===a[e])return;if(!s)for(const a of t)null==(i=null==a?void 0:a.setState)||i.call(a,e,u);const d=a;a=o.__spreadProps.call(void 0,o.__spreadValues.call(void 0,{},a),{[e]:u});const p=Symbol();c=p,v.add(e);const w=(t,r,o)=>{var n;const l=g.get(t);l&&!l.some((t=>o?o.has(t):t===e))||(null==(n=f.get(t))||n(),f.set(t,t(a,r)))};for(const e of m)w(e,d);queueMicrotask((()=>{if(c!==p)return;const e=a;for(const e of h)w(e,n,v);n=e,v.clear()}))},y={getState:()=>a,setState:b,__unstableInternals:{setup:e=>(p.add(e),()=>p.delete(e)),init:()=>{const e=d.size,o=Symbol();d.add(o);const n=()=>{d.delete(o),d.size||u()};if(e)return n;const l=r.getKeys.call(void 0,a).map((e=>r.chain.call(void 0,...t.map((t=>{var a;const o=null==(a=null==t?void 0:t.getState)?void 0:a.call(t);if(o&&r.hasOwnProperty.call(void 0,o,e))return i(t,[e],(t=>{b(e,t[e],!0)}))}))))),c=[];for(const e of p)c.push(e());const v=t.map(s);return u=r.chain.call(void 0,...l,...c,...v),n},subscribe:(e,t)=>w(e,t),sync:(e,t)=>(f.set(t,t(a,a)),w(e,t)),batch:(e,t)=>(f.set(t,t(a,n)),w(e,t,h)),pick:e=>l(r.pick.call(void 0,a,e),y),omit:e=>l(r.omit.call(void 0,a,e),y)}};return y}function s(e,...t){if(e)return n(e,"init")(...t)}function i(e,...t){if(e)return n(e,"sync")(...t)}t.createStore=l,t.setup=function(e,...t){if(e)return n(e,"setup")(...t)},t.init=s,t.subscribe=function(e,...t){if(e)return n(e,"subscribe")(...t)},t.sync=i,t.batch=function(e,...t){if(e)return n(e,"batch")(...t)},t.omit=function(e,...t){if(e)return n(e,"omit")(...t)},t.pick=function(e,...t){if(e)return n(e,"pick")(...t)},t.mergeStore=function(...e){const t=l(e.reduce(((e,t)=>{var a;const r=null==(a=null==t?void 0:t.getState)?void 0:a.call(t);return r?Object.assign(e,r):e}),{}),...e);return Object.assign({},...e,t)},t.throwOnConflictingProps=function(e,t){}},88543:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(67641),o=a(2617),n=a(44536),l=a(87230);t.createCollectionStore=function(e={}){var t;r.throwOnConflictingProps.call(void 0,e,e.store);const a=null==(t=e.store)?void 0:t.getState(),s=o.defaultValue.call(void 0,e.items,null==a?void 0:a.items,e.defaultItems,[]),i=new Map(s.map((e=>[e.id,e]))),c={items:s,renderedItems:o.defaultValue.call(void 0,null==a?void 0:a.renderedItems,[])},u=null==(d=e.store)?void 0:d.__unstablePrivateStore;var d;const v=r.createStore.call(void 0,{items:s,renderedItems:c.renderedItems},u),p=r.createStore.call(void 0,c,e.store),m=e=>{const t=n.sortBasedOnDOMPosition.call(void 0,e,(e=>e.element));v.setState("renderedItems",t),p.setState("renderedItems",t)};r.setup.call(void 0,p,(()=>r.init.call(void 0,v))),r.setup.call(void 0,v,(()=>r.batch.call(void 0,v,["items"],(e=>{p.setState("items",e.items)})))),r.setup.call(void 0,v,(()=>r.batch.call(void 0,v,["renderedItems"],(e=>{let t=!0,a=requestAnimationFrame((()=>{const{renderedItems:t}=p.getState();e.renderedItems!==t&&m(e.renderedItems)}));if("function"!=typeof IntersectionObserver)return()=>cancelAnimationFrame(a);const r=function(e){var t;const a=e.find((e=>!!e.element)),r=[...e].reverse().find((e=>!!e.element));let o=null==(t=null==a?void 0:a.element)?void 0:t.parentElement;for(;o&&(null==r?void 0:r.element);){if(r&&o.contains(r.element))return o;o=o.parentElement}return n.getDocument.call(void 0,o).body}(e.renderedItems),o=new IntersectionObserver((()=>{t?t=!1:(cancelAnimationFrame(a),a=requestAnimationFrame((()=>m(e.renderedItems))))}),{root:r});for(const t of e.renderedItems)t.element&&o.observe(t.element);return()=>{cancelAnimationFrame(a),o.disconnect()}}))));const h=(e,t,a=!1)=>{let r;t((t=>{const a=t.findIndex((({id:t})=>t===e.id)),o=t.slice();if(-1!==a){r=t[a];const n=l.__spreadValues.call(void 0,l.__spreadValues.call(void 0,{},r),e);o[a]=n,i.set(e.id,n)}else o.push(e),i.set(e.id,e);return o}));return()=>{t((t=>{if(!r)return a&&i.delete(e.id),t.filter((({id:t})=>t!==e.id));const o=t.findIndex((({id:t})=>t===e.id));if(-1===o)return t;const n=t.slice();return n[o]=r,i.set(e.id,r),n}))}},f=e=>h(e,(e=>v.setState("items",e)),!0);return l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},p),{registerItem:f,renderItem:e=>o.chain.call(void 0,f(e),h(e,(e=>v.setState("renderedItems",e)))),item:e=>{if(!e)return null;let t=i.get(e);if(!t){const{items:a}=v.getState();t=a.find((t=>t.id===e)),t&&i.set(e,t)}return t||null},__unstablePrivateStore:v})}},92566:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(36321),o=a(67641),n=a(2617),l=a(87230);t.createPopoverStore=function(e={}){var t=e,{popover:a}=t,s=l.__objRest.call(void 0,t,["popover"]);const i=o.mergeStore.call(void 0,s.store,o.omit.call(void 0,a,["arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));o.throwOnConflictingProps.call(void 0,s,i);const c=null==i?void 0:i.getState(),u=r.createDialogStore.call(void 0,l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},s),{store:i})),d=n.defaultValue.call(void 0,s.placement,null==c?void 0:c.placement,"bottom"),v=l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},u.getState()),{placement:d,currentPlacement:d,anchorElement:n.defaultValue.call(void 0,null==c?void 0:c.anchorElement,null),popoverElement:n.defaultValue.call(void 0,null==c?void 0:c.popoverElement,null),arrowElement:n.defaultValue.call(void 0,null==c?void 0:c.arrowElement,null),rendered:Symbol("rendered")}),p=o.createStore.call(void 0,v,u,i);return l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,l.__spreadValues.call(void 0,{},u),p),{setAnchorElement:e=>p.setState("anchorElement",e),setPopoverElement:e=>p.setState("popoverElement",e),setArrowElement:e=>p.setState("arrowElement",e),render:()=>p.setState("rendered",Symbol("rendered"))})}},20329:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.toArray=function(e){return Array.isArray(e)?e:void 0!==e?[e]:[]},t.addItemToArray=function(e,t,a=-1){return a in e?[...e.slice(0,a),t,...e.slice(a)]:[...e,t]},t.flatten2DArray=function(e){const t=[];for(const a of e)t.push(...a);return t},t.reverseArray=function(e){return e.slice().reverse()}},39119:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(88543),o=a(20329),n=a(67641),l=a(2617),s=a(87230),i={id:null};function c(e,t){return e.find((e=>t?!e.disabled&&e.id!==t:!e.disabled))}function u(e,t){return e.filter((e=>e.rowId===t))}function d(e){const t=[];for(const a of e){const e=t.find((e=>{var t;return(null==(t=e[0])?void 0:t.rowId)===a.rowId}));e?e.push(a):t.push([a])}return t}function v(e){let t=0;for(const{length:a}of e)a>t&&(t=a);return t}t.createCompositeStore=function(e={}){var t;const a=null==(t=e.store)?void 0:t.getState(),p=r.createCollectionStore.call(void 0,e),m=l.defaultValue.call(void 0,e.activeId,null==a?void 0:a.activeId,e.defaultActiveId),h=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{},p.getState()),{id:l.defaultValue.call(void 0,e.id,null==a?void 0:a.id,`id-${Math.random().toString(36).slice(2,8)}`),activeId:m,baseElement:l.defaultValue.call(void 0,null==a?void 0:a.baseElement,null),includesBaseElement:l.defaultValue.call(void 0,e.includesBaseElement,null==a?void 0:a.includesBaseElement,null===m),moves:l.defaultValue.call(void 0,null==a?void 0:a.moves,0),orientation:l.defaultValue.call(void 0,e.orientation,null==a?void 0:a.orientation,"both"),rtl:l.defaultValue.call(void 0,e.rtl,null==a?void 0:a.rtl,!1),virtualFocus:l.defaultValue.call(void 0,e.virtualFocus,null==a?void 0:a.virtualFocus,!1),focusLoop:l.defaultValue.call(void 0,e.focusLoop,null==a?void 0:a.focusLoop,!1),focusWrap:l.defaultValue.call(void 0,e.focusWrap,null==a?void 0:a.focusWrap,!1),focusShift:l.defaultValue.call(void 0,e.focusShift,null==a?void 0:a.focusShift,!1)}),f=n.createStore.call(void 0,h,p,e.store);n.setup.call(void 0,f,(()=>n.sync.call(void 0,f,["renderedItems","activeId"],(e=>{f.setState("activeId",(t=>{var a;return void 0!==t?t:null==(a=c(e.renderedItems))?void 0:a.id}))}))));const g=(e="next",t={})=>{var a,r;const n=f.getState(),{skip:l=0,activeId:p=n.activeId,focusShift:m=n.focusShift,focusLoop:h=n.focusLoop,focusWrap:g=n.focusWrap,includesBaseElement:w=n.includesBaseElement,renderedItems:b=n.renderedItems,rtl:y=n.rtl}=t,x="up"===e||"down"===e,_="next"===e||"down"===e,k=_?y&&!x:!y||x,E=m&&!l;let C=x?o.flatten2DArray.call(void 0,function(e,t,a){const r=v(e);for(const o of e)for(let e=0;ee.id===p));if(!j)return null==(r=c(C))?void 0:r.id;const A=C.some((e=>e.rowId)),S=C.indexOf(j),P=C.slice(S+1),R=u(P,j.rowId);if(l){const e=function(e,t){return e.filter((e=>t?!e.disabled&&e.id!==t:!e.disabled))}(R,p),t=e.slice(l)[0]||e[e.length-1];return null==t?void 0:t.id}const M=h&&(x?"horizontal"!==h:"vertical"!==h),V=A&&g&&(x?"horizontal"!==g:"vertical"!==g),z=_?(!A||x)&&M&&w:!!x&&w;if(M){const e=function(e,t,a=!1){const r=e.findIndex((e=>e.id===t));return[...e.slice(r+1),...a?[i]:[],...e.slice(0,r)]}(V&&!z?C:u(C,j.rowId),p,z),t=c(e,p);return null==t?void 0:t.id}if(V){const e=c(z?R:P,p);return z?(null==e?void 0:e.id)||null:null==e?void 0:e.id}const H=c(R,p);return!H&&z?null:null==H?void 0:H.id};return s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,s.__spreadValues.call(void 0,{},p),f),{setBaseElement:e=>f.setState("baseElement",e),setActiveId:e=>f.setState("activeId",e),move:e=>{void 0!==e&&(f.setState("activeId",e),f.setState("moves",(e=>e+1)))},first:()=>{var e;return null==(e=c(f.getState().renderedItems))?void 0:e.id},last:()=>{var e;return null==(e=c(o.reverseArray.call(void 0,f.getState().renderedItems)))?void 0:e.id},next:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),g("next",e)),previous:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),g("previous",e)),down:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),g("down",e)),up:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),g("up",e))})}},2617:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(87230);function o(...e){}function n(e){return"object"==typeof e&&null!=e}function l(e,t){return"function"==typeof Object.hasOwn?Object.hasOwn(e,t):Object.prototype.hasOwnProperty.call(e,t)}t.noop=o,t.shallowEqual=function(e,t){if(e===t)return!0;if(!e)return!1;if(!t)return!1;if("object"!=typeof e)return!1;if("object"!=typeof t)return!1;const a=Object.keys(e),r=Object.keys(t),{length:o}=a;if(r.length!==o)return!1;for(const r of a)if(e[r]!==t[r])return!1;return!0},t.applyState=function(e,t){if(function(e){return"function"==typeof e}(e)){return e(function(e){return"function"==typeof e}(t)?t():t)}return e},t.isObject=n,t.isEmpty=function(e){return Array.isArray(e)?!e.length:n(e)?!Object.keys(e).length:null==e||""===e},t.isInteger=function(e){return"number"==typeof e?Math.floor(e)===e:String(Math.floor(Number(e)))===e},t.hasOwnProperty=l,t.chain=function(...e){return(...t)=>{for(const a of e)"function"==typeof a&&a(...t)}},t.cx=function(...e){return e.filter(Boolean).join(" ")||void 0},t.normalizeString=function(e){return e.normalize("NFD").replace(/[\u0300-\u036f]/g,"")},t.omit=function(e,t){const a=r.__spreadValues.call(void 0,{},e);for(const e of t)l(a,e)&&delete a[e];return a},t.pick=function(e,t){const a={};for(const r of t)l(e,r)&&(a[r]=e[r]);return a},t.identity=function(e){return e},t.beforePaint=function(e=o){const t=requestAnimationFrame(e);return()=>cancelAnimationFrame(t)},t.afterPaint=function(e=o){let t=requestAnimationFrame((()=>{t=requestAnimationFrame(e)}));return()=>cancelAnimationFrame(t)},t.invariant=function(e,t){if(!e){if("string"!=typeof t)throw new Error("Invariant failed");throw new Error(t)}},t.getKeys=function(e){return Object.keys(e)},t.isFalsyBooleanCallback=function(e,...t){const a="function"==typeof e?e(...t):e;return null!=a&&!a},t.disabledFromProps=function(e){return e.disabled||!0===e["aria-disabled"]||"true"===e["aria-disabled"]},t.removeUndefinedValues=function(e){const t={};for(const a in e)void 0!==e[a]&&(t[a]=e[a]);return t},t.defaultValue=function(...e){for(const t of e)if(void 0!==t)return t}},39653:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(92566),o=a(67641),n=a(2617),l=a(87230);t.createHovercardStore=function(e={}){var t;const a=null==(t=e.store)?void 0:t.getState(),s=r.createPopoverStore.call(void 0,l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},e),{placement:n.defaultValue.call(void 0,e.placement,null==a?void 0:a.placement,"bottom")})),i=n.defaultValue.call(void 0,e.timeout,null==a?void 0:a.timeout,500),c=l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},s.getState()),{timeout:i,showTimeout:n.defaultValue.call(void 0,e.showTimeout,null==a?void 0:a.showTimeout),hideTimeout:n.defaultValue.call(void 0,e.hideTimeout,null==a?void 0:a.hideTimeout),autoFocusOnShow:n.defaultValue.call(void 0,null==a?void 0:a.autoFocusOnShow,!1)}),u=o.createStore.call(void 0,c,s,e.store);return l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,l.__spreadValues.call(void 0,{},s),u),{setAutoFocusOnShow:e=>u.setState("autoFocusOnShow",e)})}},37164:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(39119),o=a(67641),n=a(2617),l=a(87230);t.createMenubarStore=function(e={}){var t;const a=null==(t=e.store)?void 0:t.getState(),s=r.createCompositeStore.call(void 0,l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},e),{orientation:n.defaultValue.call(void 0,e.orientation,null==a?void 0:a.orientation,"horizontal"),focusLoop:n.defaultValue.call(void 0,e.focusLoop,null==a?void 0:a.focusLoop,!0)})),i=l.__spreadValues.call(void 0,{},s.getState()),c=o.createStore.call(void 0,i,s,e.store);return l.__spreadValues.call(void 0,l.__spreadValues.call(void 0,{},s),c)}},18889:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(67641),o=a(2617),n=a(87230);t.createDisclosureStore=function(e={}){const t=r.mergeStore.call(void 0,e.store,r.omit.call(void 0,e.disclosure,["contentElement","disclosureElement"]));r.throwOnConflictingProps.call(void 0,e,t);const a=null==t?void 0:t.getState(),l=o.defaultValue.call(void 0,e.open,null==a?void 0:a.open,e.defaultOpen,!1),s=o.defaultValue.call(void 0,e.animated,null==a?void 0:a.animated,!1),i={open:l,animated:s,animating:!!s&&l,mounted:l,contentElement:o.defaultValue.call(void 0,null==a?void 0:a.contentElement,null),disclosureElement:o.defaultValue.call(void 0,null==a?void 0:a.disclosureElement,null)},c=r.createStore.call(void 0,i,t);return r.setup.call(void 0,c,(()=>r.sync.call(void 0,c,["animated","animating"],(e=>{e.animated||c.setState("animating",!1)})))),r.setup.call(void 0,c,(()=>r.subscribe.call(void 0,c,["open"],(()=>{c.getState().animated&&c.setState("animating",!0)})))),r.setup.call(void 0,c,(()=>r.sync.call(void 0,c,["open","animating"],(e=>{c.setState("mounted",e.open||e.animating)})))),n.__spreadProps.call(void 0,n.__spreadValues.call(void 0,{},c),{disclosure:e.disclosure,setOpen:e=>c.setState("open",e),show:()=>c.setState("open",!0),hide:()=>c.setState("open",!1),toggle:()=>c.setState("open",(e=>!e)),stopAnimation:()=>c.setState("animating",!1),setContentElement:e=>c.setState("contentElement",e),setDisclosureElement:e=>c.setState("disclosureElement",e)})}},21585:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(44536);function o(){return r.canUseDOM&&!!navigator.maxTouchPoints}function n(){return!!r.canUseDOM&&/mac|iphone|ipad|ipod/i.test(navigator.platform)}t.isTouchDevice=o,t.isApple=n,t.isSafari=function(){return r.canUseDOM&&n()&&/apple/i.test(navigator.vendor)},t.isFirefox=function(){return r.canUseDOM&&/firefox\//i.test(navigator.userAgent)},t.isMac=function(){return r.canUseDOM&&navigator.platform.startsWith("Mac")&&!o()}},36321:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(18889);t.createDialogStore=function(e={}){return r.createDisclosureStore.call(void 0,e)}},64054:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(67641),o=a(2617),n=a(87230);t.createCheckboxStore=function(e={}){var t;r.throwOnConflictingProps.call(void 0,e,e.store);const a=null==(t=e.store)?void 0:t.getState(),l={value:o.defaultValue.call(void 0,e.value,null==a?void 0:a.value,e.defaultValue,!1)},s=r.createStore.call(void 0,l,e.store);return n.__spreadProps.call(void 0,n.__spreadValues.call(void 0,{},s),{setValue:e=>s.setState("value",e)})}},75088:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(88543);a(67641),a(2617),a(44536),a(87230),t.createCollectionStore=r.createCollectionStore},45698:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(39119);a(88543),a(20329);var o=a(92566);a(36321),a(18889);var n=a(67641),l=a(2617),s=a(21585);a(44536);var i=a(87230),c=s.isSafari.call(void 0)&&s.isTouchDevice.call(void 0);t.createComboboxStore=function(e={}){var t=e,{tag:a}=t,s=i.__objRest.call(void 0,t,["tag"]);const u=n.mergeStore.call(void 0,s.store,n.pick.call(void 0,a,["value","rtl"]));n.throwOnConflictingProps.call(void 0,s,u);const d=null==a?void 0:a.getState(),v=null==u?void 0:u.getState(),p=l.defaultValue.call(void 0,s.activeId,null==v?void 0:v.activeId,s.defaultActiveId,null),m=r.createCompositeStore.call(void 0,i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},s),{activeId:p,includesBaseElement:l.defaultValue.call(void 0,s.includesBaseElement,null==v?void 0:v.includesBaseElement,!0),orientation:l.defaultValue.call(void 0,s.orientation,null==v?void 0:v.orientation,"vertical"),focusLoop:l.defaultValue.call(void 0,s.focusLoop,null==v?void 0:v.focusLoop,!0),focusWrap:l.defaultValue.call(void 0,s.focusWrap,null==v?void 0:v.focusWrap,!0),virtualFocus:l.defaultValue.call(void 0,s.virtualFocus,null==v?void 0:v.virtualFocus,!0)})),h=o.createPopoverStore.call(void 0,i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},s),{placement:l.defaultValue.call(void 0,s.placement,null==v?void 0:v.placement,"bottom-start")})),f=l.defaultValue.call(void 0,s.value,null==v?void 0:v.value,s.defaultValue,""),g=l.defaultValue.call(void 0,s.selectedValue,null==v?void 0:v.selectedValue,null==d?void 0:d.values,s.defaultSelectedValue,""),w=Array.isArray(g),b=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,i.__spreadValues.call(void 0,{},m.getState()),h.getState()),{value:f,selectedValue:g,resetValueOnSelect:l.defaultValue.call(void 0,s.resetValueOnSelect,null==v?void 0:v.resetValueOnSelect,w),resetValueOnHide:l.defaultValue.call(void 0,s.resetValueOnHide,null==v?void 0:v.resetValueOnHide,w&&!a),activeValue:null==v?void 0:v.activeValue}),y=n.createStore.call(void 0,b,m,h,u);return c&&n.setup.call(void 0,y,(()=>n.sync.call(void 0,y,["virtualFocus"],(()=>{y.setState("virtualFocus",!1)})))),n.setup.call(void 0,y,(()=>{if(a)return l.chain.call(void 0,n.sync.call(void 0,y,["selectedValue"],(e=>{Array.isArray(e.selectedValue)&&a.setValues(e.selectedValue)})),n.sync.call(void 0,a,["values"],(e=>{y.setState("selectedValue",e.values)})))})),n.setup.call(void 0,y,(()=>n.sync.call(void 0,y,["resetValueOnHide","mounted"],(e=>{e.resetValueOnHide&&(e.mounted||y.setState("value",f))})))),n.setup.call(void 0,y,(()=>n.sync.call(void 0,y,["open"],(e=>{e.open||(y.setState("activeId",p),y.setState("moves",0))})))),n.setup.call(void 0,y,(()=>n.sync.call(void 0,y,["moves","activeId"],((e,t)=>{e.moves===t.moves&&y.setState("activeValue",void 0)})))),n.setup.call(void 0,y,(()=>n.batch.call(void 0,y,["moves","renderedItems"],((e,t)=>{if(e.moves===t.moves)return;const{activeId:a}=y.getState(),r=m.item(a);y.setState("activeValue",null==r?void 0:r.value)})))),i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,i.__spreadValues.call(void 0,i.__spreadValues.call(void 0,{},h),m),y),{tag:a,setValue:e=>y.setState("value",e),resetValue:()=>y.setState("value",b.value),setSelectedValue:e=>y.setState("selectedValue",e)})}},68702:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(39119);a(88543),a(20329),a(67641),a(2617),a(44536),a(87230),t.createCompositeStore=r.createCompositeStore},8448:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(36321);a(18889),a(67641),a(2617),a(87230),t.createDialogStore=r.createDialogStore},97438:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(18889);a(67641),a(2617),a(87230),t.createDisclosureStore=r.createDisclosureStore},12028:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(88543),o=a(67641),n=a(2617);a(44536);var l=a(87230);function s(){return new Promise((e=>requestAnimationFrame((()=>e()))))}function i(e){return Object.keys(e).some((t=>n.isObject.call(void 0,e[t])?i(e[t]):!!e[t]))}function c(e,t,a){var r;const[o,...n]=Array.isArray(t)?t:`${t}`.split(".");return null!=o&&e?n.length?c(e[o],n,a):null!=(r=e[o])?r:a:a}function u(e,t,a){const[r,...o]=Array.isArray(t)?t:`${t}`.split(".");if(null==r)return e;const s=r,i=n.isInteger.call(void 0,s),c=(i?e||[]:e||{})[s],d=o.length&&(Array.isArray(c)||n.isObject.call(void 0,c))?u(c,o,a):a;if(i){const t=Number(s);if(e&&Array.isArray(e))return[...e.slice(0,t),d,...e.slice(t+1)];const a=[];return a[t]=d,a}return l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},e),{[s]:d})}function d(e,t){const a={},r=Object.keys(e);for(const o of r){const r=e[o];Array.isArray(r)?a[o]=r.map((e=>n.isObject.call(void 0,e)?d(e,t):t)):n.isObject.call(void 0,r)?a[o]=d(r,t):a[o]=t}return a}function v(e,t=[]){return{get(a,r){if(["toString","valueOf",Symbol.toPrimitive].includes(r))return()=>t.join(".");const o=[...t,r],n=o.join(".");if(e[n])return e[n];const l=new Proxy(a,v(e,o));return e[n]=l,l}}}function p(){const e=Object.create(null);return new Proxy(Object.create(null),v(e))}t.createFormStore=function(e={}){var t;o.throwOnConflictingProps.call(void 0,e,e.store);const a=null==(t=e.store)?void 0:t.getState(),v=r.createCollectionStore.call(void 0,e),m=n.defaultValue.call(void 0,e.values,null==a?void 0:a.values,e.defaultValues,{}),h=n.defaultValue.call(void 0,e.errors,null==a?void 0:a.errors,e.defaultErrors,{}),f=n.defaultValue.call(void 0,e.touched,null==a?void 0:a.touched,e.defaultTouched,{}),g=l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},v.getState()),{values:m,errors:h,touched:f,validating:n.defaultValue.call(void 0,null==a?void 0:a.validating,!1),submitting:n.defaultValue.call(void 0,null==a?void 0:a.submitting,!1),submitSucceed:n.defaultValue.call(void 0,null==a?void 0:a.submitSucceed,0),submitFailed:n.defaultValue.call(void 0,null==a?void 0:a.submitFailed,0),valid:!i(h)}),w=o.createStore.call(void 0,g,v,e.store),b=null==(y=e.store)?void 0:y.__unstableCallbacks;var y;const x=null==b?void 0:b.getState(),_={validate:(null==x?void 0:x.validate)||[],submit:(null==x?void 0:x.submit)||[]},k=o.createStore.call(void 0,_,b);o.setup.call(void 0,w,(()=>o.init.call(void 0,k)));const E=async()=>{w.setState("validating",!0),w.setState("errors",{});const e=k.getState().validate;try{for(const t of e)await t(w.getState());return await s(),!i(w.getState().errors)}finally{w.setState("validating",!1)}};return l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,l.__spreadValues.call(void 0,{},v),w),{names:p(),setValues:e=>w.setState("values",e),getValue:e=>c(w.getState().values,e),setValue:(e,t)=>w.setState("values",(a=>{const r=c(a,e),o=n.applyState.call(void 0,t,r);return o===r?a:u(a,e,o)})),pushValue:(e,t)=>w.setState("values",(a=>{const r=c(a,e,[]);return u(a,e,[...r,t])})),removeValue:(e,t)=>w.setState("values",(a=>{const r=c(a,e,[]);return u(a,e,[...r.slice(0,t),null,...r.slice(t+1)])})),setErrors:e=>w.setState("errors",e),getError:e=>c(w.getState().errors,e),setError:(e,t)=>w.setState("errors",(a=>{const r=c(a,e),o=n.applyState.call(void 0,t,r);return o===r?a:u(a,e,o)})),setTouched:e=>w.setState("touched",e),getFieldTouched:e=>!!c(w.getState().touched,e),setFieldTouched:(e,t)=>w.setState("touched",(a=>{const r=c(a,e),o=n.applyState.call(void 0,t,r);return o===r?a:u(a,e,o)})),onValidate:e=>(k.setState("validate",(t=>[...t,e])),()=>{k.setState("validate",(t=>t.filter((t=>t!==e))))}),validate:E,onSubmit:e=>(k.setState("submit",(t=>[...t,e])),()=>{k.setState("submit",(t=>t.filter((t=>t!==e))))}),submit:async()=>{w.setState("submitting",!0),w.setState("touched",d(w.getState().values,!0));try{if(await E()){const e=k.getState().submit;for(const t of e)await t(w.getState());if(await s(),!i(w.getState().errors))return w.setState("submitSucceed",(e=>e+1)),!0}return w.setState("submitFailed",(e=>e+1)),!1}catch(e){throw w.setState("submitFailed",(e=>e+1)),e}finally{w.setState("submitting",!1)}},reset:()=>{w.setState("values",m),w.setState("errors",h),w.setState("touched",f),w.setState("validating",!1),w.setState("submitting",!1),w.setState("submitSucceed",0),w.setState("submitFailed",0)},__unstableCallbacks:k})},t.get=c,t.hasMessages=i},58702:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(39653);a(92566),a(36321),a(18889),a(67641),a(2617),a(87230),t.createHovercardStore=r.createHovercardStore},81894:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(39653),o=a(39119);a(88543),a(20329),a(92566),a(36321),a(18889);var n=a(67641),l=a(2617);a(44536);var s=a(87230);t.createMenuStore=function(e={}){var t=e,{combobox:a,parent:i,menubar:c}=t,u=s.__objRest.call(void 0,t,["combobox","parent","menubar"]);const d=!!c&&!i,v=n.mergeStore.call(void 0,u.store,n.pick.call(void 0,i,["values"]),n.omit.call(void 0,a,["arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));n.throwOnConflictingProps.call(void 0,u,v);const p=v.getState(),m=o.createCompositeStore.call(void 0,s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{},u),{store:v,orientation:l.defaultValue.call(void 0,u.orientation,p.orientation,"vertical")})),h=r.createHovercardStore.call(void 0,s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{},u),{store:v,placement:l.defaultValue.call(void 0,u.placement,p.placement,"bottom-start"),timeout:l.defaultValue.call(void 0,u.timeout,p.timeout,d?0:150),hideTimeout:l.defaultValue.call(void 0,u.hideTimeout,p.hideTimeout,0)})),f=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,s.__spreadValues.call(void 0,{},m.getState()),h.getState()),{initialFocus:l.defaultValue.call(void 0,p.initialFocus,"container"),values:l.defaultValue.call(void 0,u.values,p.values,u.defaultValues,{})}),g=n.createStore.call(void 0,f,m,h,v);return n.setup.call(void 0,g,(()=>n.sync.call(void 0,g,["mounted"],(e=>{e.mounted||g.setState("activeId",null)})))),n.setup.call(void 0,g,(()=>n.sync.call(void 0,i,["orientation"],(e=>{g.setState("placement","vertical"===e.orientation?"right-start":"bottom-start")})))),s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,s.__spreadValues.call(void 0,s.__spreadValues.call(void 0,{},m),h),g),{combobox:a,parent:i,menubar:c,hideAll:()=>{h.hide(),null==i||i.hideAll()},setInitialFocus:e=>g.setState("initialFocus",e),setValues:e=>g.setState("values",e),setValue:(e,t)=>{"__proto__"!==e&&"constructor"!==e&&(Array.isArray(e)||g.setState("values",(a=>{const r=a[e],o=l.applyState.call(void 0,t,r);return o===r?a:s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{},a),{[e]:void 0!==o&&o})})))}})}},49586:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(37164);a(39119),a(88543),a(20329),a(67641),a(2617),a(44536),a(87230),t.createMenubarStore=r.createMenubarStore},69414:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(92566);a(36321),a(18889),a(67641),a(2617),a(87230),t.createPopoverStore=r.createPopoverStore},56286:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(39119);a(88543),a(20329);var o=a(67641),n=a(2617);a(44536);var l=a(87230);t.createRadioStore=function(e={}){var t,a=l.__objRest.call(void 0,e,[]);const s=null==(t=a.store)?void 0:t.getState(),i=r.createCompositeStore.call(void 0,l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},a),{focusLoop:n.defaultValue.call(void 0,a.focusLoop,null==s?void 0:s.focusLoop,!0)})),c=l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},i.getState()),{value:n.defaultValue.call(void 0,a.value,null==s?void 0:s.value,a.defaultValue,null)}),u=o.createStore.call(void 0,c,i,a.store);return l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,l.__spreadValues.call(void 0,{},i),u),{setValue:e=>u.setState("value",e)})}},11420:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(39119);a(88543);var o=a(20329),n=a(92566);a(36321),a(18889);var l=a(67641),s=a(2617);a(44536);var i=a(87230);t.createSelectStore=function(e={}){var t=e,{combobox:a}=t,c=i.__objRest.call(void 0,t,["combobox"]);const u=l.mergeStore.call(void 0,c.store,l.omit.call(void 0,a,["value","items","renderedItems","baseElement","arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));l.throwOnConflictingProps.call(void 0,c,u);const d=u.getState(),v=r.createCompositeStore.call(void 0,i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},c),{store:u,virtualFocus:s.defaultValue.call(void 0,c.virtualFocus,d.virtualFocus,!0),includesBaseElement:s.defaultValue.call(void 0,c.includesBaseElement,d.includesBaseElement,!1),activeId:s.defaultValue.call(void 0,c.activeId,d.activeId,c.defaultActiveId,null),orientation:s.defaultValue.call(void 0,c.orientation,d.orientation,"vertical")})),p=n.createPopoverStore.call(void 0,i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},c),{store:u,placement:s.defaultValue.call(void 0,c.placement,d.placement,"bottom-start")})),m=new String(""),h=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,i.__spreadValues.call(void 0,{},v.getState()),p.getState()),{value:s.defaultValue.call(void 0,c.value,d.value,c.defaultValue,m),setValueOnMove:s.defaultValue.call(void 0,c.setValueOnMove,d.setValueOnMove,!1),labelElement:s.defaultValue.call(void 0,d.labelElement,null),selectElement:s.defaultValue.call(void 0,d.selectElement,null),listElement:s.defaultValue.call(void 0,d.listElement,null)}),f=l.createStore.call(void 0,h,v,p,u);return l.setup.call(void 0,f,(()=>l.sync.call(void 0,f,["value","items"],(e=>{if(e.value!==m)return;if(!e.items.length)return;const t=e.items.find((e=>!e.disabled&&null!=e.value));null!=(null==t?void 0:t.value)&&f.setState("value",t.value)})))),l.setup.call(void 0,f,(()=>l.sync.call(void 0,f,["mounted"],(e=>{e.mounted||f.setState("activeId",h.activeId)})))),l.setup.call(void 0,f,(()=>l.sync.call(void 0,f,["mounted","items","value"],(e=>{if(a)return;if(e.mounted)return;const t=o.toArray.call(void 0,e.value),r=t[t.length-1];if(null==r)return;const n=e.items.find((e=>!e.disabled&&e.value===r));n&&f.setState("activeId",n.id)})))),l.setup.call(void 0,f,(()=>l.batch.call(void 0,f,["setValueOnMove","moves"],(e=>{const{mounted:t,value:a,activeId:r}=f.getState();if(!e.setValueOnMove&&t)return;if(Array.isArray(a))return;if(!e.moves)return;if(!r)return;const o=v.item(r);o&&!o.disabled&&null!=o.value&&f.setState("value",o.value)})))),i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,i.__spreadValues.call(void 0,i.__spreadValues.call(void 0,{},v),p),f),{combobox:a,setValue:e=>f.setState("value",e),setLabelElement:e=>f.setState("labelElement",e),setSelectElement:e=>f.setState("selectElement",e),setListElement:e=>f.setState("listElement",e)})}},95190:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(39119),o=a(88543);a(20329);var n=a(67641),l=a(2617);a(44536);var s=a(87230);t.createTabStore=function(e={}){var t=e,{composite:a,combobox:i}=t,c=s.__objRest.call(void 0,t,["composite","combobox"]);const u=["items","renderedItems","moves","orientation","virtualFocus","includesBaseElement","baseElement","focusLoop","focusShift","focusWrap"],d=n.mergeStore.call(void 0,c.store,n.omit.call(void 0,a,u),n.omit.call(void 0,i,u)),v=null==d?void 0:d.getState(),p=r.createCompositeStore.call(void 0,s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{},c),{store:d,includesBaseElement:l.defaultValue.call(void 0,c.includesBaseElement,null==v?void 0:v.includesBaseElement,!1),orientation:l.defaultValue.call(void 0,c.orientation,null==v?void 0:v.orientation,"horizontal"),focusLoop:l.defaultValue.call(void 0,c.focusLoop,null==v?void 0:v.focusLoop,!0)})),m=o.createCollectionStore.call(void 0),h=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{},p.getState()),{selectedId:l.defaultValue.call(void 0,c.selectedId,null==v?void 0:v.selectedId,c.defaultSelectedId),selectOnMove:l.defaultValue.call(void 0,c.selectOnMove,null==v?void 0:v.selectOnMove,!0)}),f=n.createStore.call(void 0,h,p,d);n.setup.call(void 0,f,(()=>n.sync.call(void 0,f,["moves"],(()=>{const{activeId:e,selectOnMove:t}=f.getState();if(!t)return;if(!e)return;const a=p.item(e);a&&(a.dimmed||a.disabled||f.setState("selectedId",a.id))}))));let g=!0;n.setup.call(void 0,f,(()=>n.batch.call(void 0,f,["selectedId"],((e,t)=>{g?a&&e.selectedId===t.selectedId||f.setState("activeId",e.selectedId):g=!0})))),n.setup.call(void 0,f,(()=>n.sync.call(void 0,f,["selectedId","renderedItems"],(e=>{if(void 0!==e.selectedId)return;const{activeId:t,renderedItems:a}=f.getState(),r=p.item(t);if(!r||r.disabled||r.dimmed){const e=a.find((e=>!e.disabled&&!e.dimmed));f.setState("selectedId",null==e?void 0:e.id)}else f.setState("selectedId",r.id)})))),n.setup.call(void 0,f,(()=>n.sync.call(void 0,f,["renderedItems"],(e=>{const t=e.renderedItems;if(t.length)return n.sync.call(void 0,m,["renderedItems"],(e=>{const a=e.renderedItems;a.some((e=>!e.tabId))&&a.forEach(((e,a)=>{if(e.tabId)return;const r=t[a];r&&m.renderItem(s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{},e),{tabId:r.id}))}))}))}))));let w=null;return n.setup.call(void 0,f,(()=>{const e=()=>{w=f.getState().selectedId},t=()=>{g=!1,f.setState("selectedId",w)};return a&&"setSelectElement"in a?l.chain.call(void 0,n.sync.call(void 0,a,["value"],e),n.sync.call(void 0,a,["mounted"],t)):i?l.chain.call(void 0,n.sync.call(void 0,i,["selectedValue"],e),n.sync.call(void 0,i,["mounted"],t)):void 0})),s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,s.__spreadValues.call(void 0,{},p),f),{panels:m,setSelectedId:e=>f.setState("selectedId",e),select:e=>{f.setState("selectedId",e),p.move(e)}})}},23902:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(39119);a(88543),a(20329),a(67641);var o=a(2617);a(44536);var n=a(87230);t.createToolbarStore=function(e={}){var t;const a=null==(t=e.store)?void 0:t.getState();return r.createCompositeStore.call(void 0,n.__spreadProps.call(void 0,n.__spreadValues.call(void 0,{},e),{orientation:o.defaultValue.call(void 0,e.orientation,null==a?void 0:a.orientation,"horizontal"),focusLoop:o.defaultValue.call(void 0,e.focusLoop,null==a?void 0:a.focusLoop,!0)}))}},30054:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(39653);a(92566),a(36321),a(18889);var o=a(67641),n=a(2617),l=a(87230);t.createTooltipStore=function(e={}){var t;const a=null==(t=e.store)?void 0:t.getState(),s=r.createHovercardStore.call(void 0,l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},e),{placement:n.defaultValue.call(void 0,e.placement,null==a?void 0:a.placement,"top"),hideTimeout:n.defaultValue.call(void 0,e.hideTimeout,null==a?void 0:a.hideTimeout,0)})),i=l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},s.getState()),{type:n.defaultValue.call(void 0,e.type,null==a?void 0:a.type,"description"),skipTimeout:n.defaultValue.call(void 0,e.skipTimeout,null==a?void 0:a.skipTimeout,300)}),c=o.createStore.call(void 0,i,s,e.store);return l.__spreadValues.call(void 0,l.__spreadValues.call(void 0,{},s),c)}},11790:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(20329);a(87230),t.addItemToArray=r.addItemToArray,t.flatten2DArray=r.flatten2DArray,t.reverseArray=r.reverseArray,t.toArray=r.toArray},92725:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(44536);a(87230),t.canUseDOM=r.canUseDOM,t.contains=r.contains,t.getActiveElement=r.getActiveElement,t.getDocument=r.getDocument,t.getPopupItemRole=r.getPopupItemRole,t.getPopupRole=r.getPopupRole,t.getScrollingElement=r.getScrollingElement,t.getTextboxSelection=r.getTextboxSelection,t.getTextboxValue=r.getTextboxValue,t.getWindow=r.getWindow,t.isButton=r.isButton,t.isFrame=r.isFrame,t.isPartiallyHidden=r.isPartiallyHidden,t.isTextField=r.isTextField,t.isTextbox=r.isTextbox,t.isVisible=r.isVisible,t.scrollIntoViewIfNeeded=r.scrollIntoViewIfNeeded,t.setSelectionRange=r.setSelectionRange,t.sortBasedOnDOMPosition=r.sortBasedOnDOMPosition},77328:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(21585),o=a(44536),n=a(87230);t.addGlobalEventListener=function e(t,a,r,o=window){const n=[];try{o.document.addEventListener(t,a,r);for(const l of Array.from(o.frames))n.push(e(t,a,r,l))}catch(e){}return()=>{try{o.document.removeEventListener(t,a,r)}catch(e){}for(const e of n)e()}},t.fireBlurEvent=function(e,t){const a=new FocusEvent("blur",t),r=e.dispatchEvent(a),o=n.__spreadProps.call(void 0,n.__spreadValues.call(void 0,{},t),{bubbles:!0});return e.dispatchEvent(new FocusEvent("focusout",o)),r},t.fireClickEvent=function(e,t){const a=new MouseEvent("click",t);return e.dispatchEvent(a)},t.fireEvent=function(e,t,a){const r=new Event(t,a);return e.dispatchEvent(r)},t.fireFocusEvent=function(e,t){const a=new FocusEvent("focus",t),r=e.dispatchEvent(a),o=n.__spreadProps.call(void 0,n.__spreadValues.call(void 0,{},t),{bubbles:!0});return e.dispatchEvent(new FocusEvent("focusin",o)),r},t.fireKeyboardEvent=function(e,t,a){const r=new KeyboardEvent(t,a);return e.dispatchEvent(r)},t.getInputType=function(e){const t="nativeEvent"in e?e.nativeEvent:e;if(t&&"inputType"in t&&"string"==typeof t.inputType)return t.inputType},t.isDownloading=function(e){const t=e.currentTarget;if(!t)return!1;const a=t.tagName.toLowerCase();return!!e.altKey&&("a"===a||("button"===a&&"submit"===t.type||"input"===a&&"submit"===t.type))},t.isFocusEventOutside=function(e,t){const a=t||e.currentTarget,r=e.relatedTarget;return!r||!o.contains.call(void 0,a,r)},t.isOpeningInNewTab=function(e){const t=e.currentTarget;if(!t)return!1;const a=r.isApple.call(void 0);if(a&&!e.metaKey)return!1;if(!a&&!e.ctrlKey)return!1;const o=t.tagName.toLowerCase();return"a"===o||("button"===o&&"submit"===t.type||"input"===o&&"submit"===t.type)},t.isPortalEvent=function(e){return Boolean(e.currentTarget&&!o.contains.call(void 0,e.currentTarget,e.target))},t.isSelfTarget=function(e){return e.target===e.currentTarget},t.queueBeforeEvent=function(e,t,a,r){const o=(e=>{if(r){const t=setTimeout(e,r);return()=>clearTimeout(t)}const t=requestAnimationFrame(e);return()=>cancelAnimationFrame(t)})((()=>{e.removeEventListener(t,n,!0),a()})),n=()=>{o(),a()};return e.addEventListener(t,n,{once:!0,capture:!0}),o}},60877:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(44536),o=a(87230),n="input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])";function l(e){return!!e.matches(n)&&(!!r.isVisible.call(void 0,e)&&!e.closest("[inert]"))}function s(e){if(!l(e))return!1;if(function(e){return Number.parseInt(e.getAttribute("tabindex")||"0",10)<0}(e))return!1;if(!("form"in e))return!0;if(!e.form)return!0;if(e.checked)return!0;if("radio"!==e.type)return!0;const t=e.form.elements.namedItem(e.name);if(!t)return!0;if(!("length"in t))return!0;const a=r.getActiveElement.call(void 0,e);return!a||(a===e||(!("form"in a)||(a.form!==e.form||a.name!==e.name)))}function i(e,t){const a=Array.from(e.querySelectorAll(n));t&&a.unshift(e);const o=a.filter(l);return o.forEach(((e,t)=>{if(r.isFrame.call(void 0,e)&&e.contentDocument){const a=e.contentDocument.body;o.splice(t,1,...i(a))}})),o}function c(e,t){const[a]=i(e,t);return a||null}function u(e,t,a){const o=Array.from(e.querySelectorAll(n)),l=o.filter(s);return t&&s(e)&&l.unshift(e),l.forEach(((e,t)=>{if(r.isFrame.call(void 0,e)&&e.contentDocument){const r=u(e.contentDocument.body,!1,a);l.splice(t,1,...r)}})),!l.length&&a?o:l}function d(e,t,a){const[r]=u(e,t,a);return r||null}function v(e,t,a){const r=u(e,t,a);return r[r.length-1]||null}function p(e,t,a,o){const n=r.getActiveElement.call(void 0,e),l=i(e,t),c=l.indexOf(n),u=l.slice(c+1);return u.find(s)||(a?l.find(s):null)||(o?u[0]:null)||null}function m(e,t,a,o){const n=r.getActiveElement.call(void 0,e),l=i(e,t).reverse(),c=l.indexOf(n),u=l.slice(c+1);return u.find(s)||(a?l.find(s):null)||(o?u[0]:null)||null}function h(e){const t=r.getActiveElement.call(void 0,e);if(!t)return!1;if(r.contains.call(void 0,e,t))return!0;const a=t.getAttribute("aria-activedescendant");return!!a&&("id"in e&&(a===e.id||!!e.querySelector(`#${CSS.escape(a)}`)))}function f(e){var t;const a=null!=(t=e.getAttribute("tabindex"))?t:"";e.setAttribute("data-tabindex",a),e.setAttribute("tabindex","-1")}t.disableFocus=f,t.disableFocusIn=function(e,t){const a=u(e,t);for(const e of a)f(e)},t.focusIfNeeded=function(e){!h(e)&&l(e)&&e.focus()},t.focusIntoView=function(e,t){"scrollIntoView"in e?(e.focus({preventScroll:!0}),e.scrollIntoView(o.__spreadValues.call(void 0,{block:"nearest",inline:"nearest"},t))):e.focus()},t.getAllFocusable=function(e){return i(document.body,e)},t.getAllFocusableIn=i,t.getAllTabbable=function(e){return u(document.body,!1,e)},t.getAllTabbableIn=u,t.getClosestFocusable=function(e){for(;e&&!l(e);)e=e.closest(n);return e||null},t.getFirstFocusable=function(e){return c(document.body,e)},t.getFirstFocusableIn=c,t.getFirstTabbable=function(e){return d(document.body,!1,e)},t.getFirstTabbableIn=d,t.getLastTabbable=function(e){return v(document.body,!1,e)},t.getLastTabbableIn=v,t.getNextTabbable=function(e,t){return p(document.body,!1,e,t)},t.getNextTabbableIn=p,t.getPreviousTabbable=function(e,t){return m(document.body,!1,e,t)},t.getPreviousTabbableIn=m,t.hasFocus=function(e){const t=r.getActiveElement.call(void 0,e);if(!t)return!1;if(t===e)return!0;const a=t.getAttribute("aria-activedescendant");return!!a&&a===e.id},t.hasFocusWithin=h,t.isFocusable=l,t.isTabbable=s,t.restoreFocusIn=function(e){const t=e.querySelectorAll("[data-tabindex]"),a=e=>{const t=e.getAttribute("data-tabindex");e.removeAttribute("data-tabindex"),t?e.setAttribute("tabindex",t):e.removeAttribute("tabindex")};e.hasAttribute("data-tabindex")&&a(e);for(const e of t)a(e)}},48959:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(2617);a(87230),t.afterPaint=r.afterPaint,t.applyState=r.applyState,t.beforePaint=r.beforePaint,t.chain=r.chain,t.cx=r.cx,t.defaultValue=r.defaultValue,t.disabledFromProps=r.disabledFromProps,t.getKeys=r.getKeys,t.hasOwnProperty=r.hasOwnProperty,t.identity=r.identity,t.invariant=r.invariant,t.isEmpty=r.isEmpty,t.isFalsyBooleanCallback=r.isFalsyBooleanCallback,t.isInteger=r.isInteger,t.isObject=r.isObject,t.noop=r.noop,t.normalizeString=r.normalizeString,t.omit=r.omit,t.pick=r.pick,t.removeUndefinedValues=r.removeUndefinedValues,t.shallowEqual=r.shallowEqual},32314:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(21585);a(44536),a(87230),t.isApple=r.isApple,t.isFirefox=r.isFirefox,t.isMac=r.isMac,t.isSafari=r.isSafari,t.isTouchDevice=r.isTouchDevice},8766:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(67641);a(2617),a(87230),t.batch=r.batch,t.createStore=r.createStore,t.init=r.init,t.mergeStore=r.mergeStore,t.omit=r.omit,t.pick=r.pick,t.setup=r.setup,t.subscribe=r.subscribe,t.sync=r.sync,t.throwOnConflictingProps=r.throwOnConflictingProps},28293:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(12204),o=a(19387),n=a(8549),l=a(68842),s=a(21676),i=a(85325),c=a(48960),u=a(94818),d=a(49464),v=a(82203),p=a(32146),m=a(9018),h=a(77723),f=a(53944),g=a(87121),w=a(19652),b=a(95691),y=a(87636),x=a(80987),_=a(28148),k=a(92725),E=a(77328),C=a(60877),j=a(48959),A=a(32314),S=a(51609),P=a(10790),R=A.isSafari.call(void 0);function M(e,t=!1){if(!e)return null;const a="current"in e?e.current:e;return a?t?C.isFocusable.call(void 0,a)?a:null:a:null}var V=w.createHook.call(void 0,(function(e){var t=e,{store:a,open:w,onClose:A,focusable:V=!0,modal:z=!0,portal:H=!!z,backdrop:L=!!z,hideOnEscape:O=!0,hideOnInteractOutside:N=!0,getPersistentElements:I,preventBodyScroll:B=!!z,autoFocusOnShow:T=!0,autoFocusOnHide:F=!0,initialFocus:D,finalFocus:G,unmountOnHide:U,unstable_treeSnapshotKey:q}=t,Z=_.__objRest.call(void 0,t,["store","open","onClose","focusable","modal","portal","backdrop","hideOnEscape","hideOnInteractOutside","getPersistentElements","preventBodyScroll","autoFocusOnShow","autoFocusOnHide","initialFocus","finalFocus","unmountOnHide","unstable_treeSnapshotKey"]);const W=f.useDialogProviderContext.call(void 0),$=S.useRef.call(void 0,null),J=b.useDialogStore.call(void 0,{store:a||W,open:w,setOpen(e){if(e)return;const t=$.current;if(!t)return;const a=new Event("close",{bubbles:!1,cancelable:!0});A&&t.addEventListener("close",A,{once:!0}),t.dispatchEvent(a),a.defaultPrevented&&J.setOpen(!0)}}),{portalRef:K,domReady:Q}=x.usePortalRef.call(void 0,H,Z.portalRef),Y=Z.preserveTabOrder,X=y.useStoreState.call(void 0,J,(e=>Y&&!z&&e.mounted)),ee=x.useId.call(void 0,Z.id),te=y.useStoreState.call(void 0,J,"open"),ae=y.useStoreState.call(void 0,J,"mounted"),re=y.useStoreState.call(void 0,J,"contentElement"),oe=h.isHidden.call(void 0,ae,Z.hidden,Z.alwaysVisible);n.usePreventBodyScroll.call(void 0,re,ee,B&&!oe),s.useHideOnInteractOutside.call(void 0,J,N,Q);const{wrapElement:ne,nestedDialogs:le}=l.useNestedDialogs.call(void 0,J);Z=x.useWrapElement.call(void 0,Z,ne,[ne]),x.useSafeLayoutEffect.call(void 0,(()=>{if(!te)return;const e=$.current,t=k.getActiveElement.call(void 0,e,!0);t&&"BODY"!==t.tagName&&(e&&k.contains.call(void 0,e,t)||J.setDisclosureElement(t))}),[J,te]),R&&S.useEffect.call(void 0,(()=>{if(!ae)return;const{disclosureElement:e}=J.getState();if(!e)return;if(!k.isButton.call(void 0,e))return;const t=()=>{let t=!1;const a=()=>{t=!0};e.addEventListener("focusin",a,{capture:!0,once:!0}),E.queueBeforeEvent.call(void 0,e,"mouseup",(()=>{e.removeEventListener("focusin",a,!0),t||C.focusIfNeeded.call(void 0,e)}))};return e.addEventListener("mousedown",t),()=>{e.removeEventListener("mousedown",t)}}),[J,ae]),S.useEffect.call(void 0,(()=>{if(!ae)return;if(!Q)return;const e=$.current;if(!e)return;const t=k.getWindow.call(void 0,e),a=t.visualViewport||t,r=()=>{var a,r;const o=null!=(r=null==(a=t.visualViewport)?void 0:a.height)?r:t.innerHeight;e.style.setProperty("--dialog-viewport-height",`${o}px`)};return r(),a.addEventListener("resize",r),()=>{a.removeEventListener("resize",r)}}),[ae,Q]),S.useEffect.call(void 0,(()=>{if(!z)return;if(!ae)return;if(!Q)return;const e=$.current;if(!e)return;return e.querySelector("[data-dialog-dismiss]")?void 0:u.prependHiddenDismiss.call(void 0,e,J.hide)}),[J,z,ae,Q]),x.useSafeLayoutEffect.call(void 0,(()=>{if(!c.supportsInert.call(void 0))return;if(te)return;if(!ae)return;if(!Q)return;const e=$.current;return e?o.disableTree.call(void 0,e):void 0}),[te,ae,Q]);const se=te&&Q;x.useSafeLayoutEffect.call(void 0,(()=>{if(!ee)return;if(!se)return;const e=$.current;return d.createWalkTreeSnapshot.call(void 0,ee,[e])}),[ee,se,q]);const ie=x.useEvent.call(void 0,I);x.useSafeLayoutEffect.call(void 0,(()=>{if(!ee)return;if(!se)return;const{disclosureElement:e}=J.getState(),t=[$.current,...ie()||[],...le.map((e=>e.getState().contentElement))];return z?j.chain.call(void 0,i.markTreeOutside.call(void 0,ee,t),o.disableTreeOutside.call(void 0,ee,t)):i.markTreeOutside.call(void 0,ee,[e,...t])}),[ee,J,se,ie,le,z,q]);const ce=!!T,ue=x.useBooleanEvent.call(void 0,T),[de,ve]=S.useState.call(void 0,!1);S.useEffect.call(void 0,(()=>{if(!te)return;if(!ce)return;if(!Q)return;if(!(null==re?void 0:re.isConnected))return;const e=M(D,!0)||re.querySelector("[data-autofocus=true],[autofocus]")||C.getFirstTabbableIn.call(void 0,re,!0,H&&X)||re,t=C.isFocusable.call(void 0,e);ue(t?e:null)&&(ve(!0),queueMicrotask((()=>{e.focus(),R&&e.scrollIntoView({block:"nearest",inline:"nearest"})})))}),[te,ce,Q,re,D,H,X,ue]);const pe=!!F,me=x.useBooleanEvent.call(void 0,F),[he,fe]=S.useState.call(void 0,!1);S.useEffect.call(void 0,(()=>{if(te)return fe(!0),()=>fe(!1)}),[te]);const ge=S.useCallback.call(void 0,((e,t=!0)=>{const{disclosureElement:a}=J.getState();if(function(e){const t=k.getActiveElement.call(void 0);return!(!t||e&&k.contains.call(void 0,e,t)||!C.isFocusable.call(void 0,t))}(e))return;let r=M(G)||a;if(null==r?void 0:r.id){const e=k.getDocument.call(void 0,r),t=`[aria-activedescendant="${r.id}"]`,a=e.querySelector(t);a&&(r=a)}if(r&&!C.isFocusable.call(void 0,r)){const e=r.closest("[data-dialog]");if(null==e?void 0:e.id){const t=k.getDocument.call(void 0,e),a=`[aria-controls~="${e.id}"]`,o=t.querySelector(a);o&&(r=o)}}const o=r&&C.isFocusable.call(void 0,r);o||!t?me(o?r:null)&&o&&(null==r||r.focus()):requestAnimationFrame((()=>ge(e,!1)))}),[J,G,me]),we=S.useRef.call(void 0,!1);x.useSafeLayoutEffect.call(void 0,(()=>{if(te)return;if(!he)return;if(!pe)return;const e=$.current;we.current=!0,ge(e)}),[te,he,Q,pe,ge]),S.useEffect.call(void 0,(()=>{if(!he)return;if(!pe)return;const e=$.current;return()=>{we.current?we.current=!1:ge(e)}}),[he,pe,ge]);const be=x.useBooleanEvent.call(void 0,O);S.useEffect.call(void 0,(()=>{if(!Q)return;if(!ae)return;return E.addGlobalEventListener.call(void 0,"keydown",(e=>{if("Escape"!==e.key)return;if(e.defaultPrevented)return;const t=$.current;if(!t)return;if(i.isElementMarked.call(void 0,t))return;const a=e.target;if(!a)return;const{disclosureElement:r}=J.getState();("BODY"===a.tagName||k.contains.call(void 0,t,a)||!r||k.contains.call(void 0,r,a))&&be(e)&&J.hide()}),!0)}),[J,Q,ae,be]);const ye=(Z=x.useWrapElement.call(void 0,Z,(e=>P.jsx.call(void 0,p.HeadingLevel,{level:z?1:void 0,children:e})),[z])).hidden,xe=Z.alwaysVisible;Z=x.useWrapElement.call(void 0,Z,(e=>L?P.jsxs.call(void 0,P.Fragment,{children:[P.jsx.call(void 0,r.DialogBackdrop,{store:J,backdrop:L,hidden:ye,alwaysVisible:xe}),e]}):e),[J,L,ye,xe]);const[_e,ke]=S.useState.call(void 0),[Ee,Ce]=S.useState.call(void 0);return Z=x.useWrapElement.call(void 0,Z,(e=>P.jsx.call(void 0,f.DialogScopedContextProvider,{value:J,children:P.jsx.call(void 0,f.DialogHeadingContext.Provider,{value:ke,children:P.jsx.call(void 0,f.DialogDescriptionContext.Provider,{value:Ce,children:e})})})),[J]),Z=_.__spreadProps.call(void 0,_.__spreadValues.call(void 0,{id:ee,"data-dialog":"",role:"dialog",tabIndex:V?-1:void 0,"aria-labelledby":_e,"aria-describedby":Ee},Z),{ref:x.useMergeRefs.call(void 0,$,Z.ref)}),Z=v.useFocusableContainer.call(void 0,_.__spreadProps.call(void 0,_.__spreadValues.call(void 0,{},Z),{autoFocusOnShow:de})),Z=h.useDisclosureContent.call(void 0,_.__spreadValues.call(void 0,{store:J},Z)),Z=g.useFocusable.call(void 0,_.__spreadProps.call(void 0,_.__spreadValues.call(void 0,{},Z),{focusable:V})),Z=m.usePortal.call(void 0,_.__spreadProps.call(void 0,_.__spreadValues.call(void 0,{portal:H},Z),{portalRef:K,preserveTabOrder:X}))}));function z(e,t=f.useDialogProviderContext){return w.forwardRef.call(void 0,(function(a){const r=t(),o=a.store||r;return y.useStoreState.call(void 0,o,(e=>!a.unmountOnHide||(null==e?void 0:e.mounted)||!!a.open))?P.jsx.call(void 0,e,_.__spreadValues.call(void 0,{},a)):null}))}var H=z(w.forwardRef.call(void 0,(function(e){const t=V(e);return w.createElement.call(void 0,"div",t)})),f.useDialogProviderContext);t.useDialog=V,t.createDialogComponent=z,t.Dialog=H},66342:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(49190),o=a(51500),n=a(77018),l=a(19652),s=a(80987),i=a(28148),c=a(48959),u=a(10790),d=l.createHook.call(void 0,(function(e){var t=e,{store:a}=t,l=i.__objRest.call(void 0,t,["store"]);const d=n.usePopoverProviderContext.call(void 0);a=a||d,c.invariant.call(void 0,a,!1);const v=l.onClick,p=s.useEvent.call(void 0,(e=>{null==a||a.setAnchorElement(e.currentTarget),null==v||v(e)}));return l=s.useWrapElement.call(void 0,l,(e=>u.jsx.call(void 0,n.PopoverScopedContextProvider,{value:a,children:e})),[a]),l=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},l),{onClick:p}),l=o.usePopoverAnchor.call(void 0,i.__spreadValues.call(void 0,{store:a},l)),l=r.useDialogDisclosure.call(void 0,i.__spreadValues.call(void 0,{store:a},l))})),v=l.forwardRef.call(void 0,(function(e){const t=d(e);return l.createElement.call(void 0,"button",t)}));t.usePopoverDisclosure=d,t.PopoverDisclosure=v},80032:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(46423),o=a(87636),n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(a(30054));function l(e,t,a){return o.useStoreProps.call(void 0,e,a,"type"),o.useStoreProps.call(void 0,e,a,"skipTimeout"),r.useHovercardStoreProps.call(void 0,e,t,a)}t.useTooltipStoreProps=l,t.useTooltipStore=function(e={}){const[t,a]=o.useStore.call(void 0,n.createTooltipStore,e);return l(t,a,e)}},9018:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(54844),o=a(67722),n=a(19652),l=a(80987),s=a(7219),i=a(28148),c=a(92725),u=a(77328),d=a(60877),v=a(51609),p=a(75795),m=a(10790);function h(e){queueMicrotask((()=>{null==e||e.focus()}))}var f=n.createHook.call(void 0,(function(e){var t=e,{preserveTabOrder:a,preserveTabOrderAnchor:n,portalElement:f,portalRef:g,portal:w=!0}=t,b=i.__objRest.call(void 0,t,["preserveTabOrder","preserveTabOrderAnchor","portalElement","portalRef","portal"]);const y=v.useRef.call(void 0,null),x=l.useMergeRefs.call(void 0,y,b.ref),_=v.useContext.call(void 0,o.PortalContext),[k,E]=v.useState.call(void 0,null),[C,j]=v.useState.call(void 0,null),A=v.useRef.call(void 0,null),S=v.useRef.call(void 0,null),P=v.useRef.call(void 0,null),R=v.useRef.call(void 0,null);return l.useSafeLayoutEffect.call(void 0,(()=>{const e=y.current;if(!e||!w)return void E(null);const t=function(e,t){return t?"function"==typeof t?t(e):t:c.getDocument.call(void 0,e).createElement("div")}(e,f);if(!t)return void E(null);const a=t.isConnected;if(!a){const a=_||function(e){return c.getDocument.call(void 0,e).body}(e);a.appendChild(t)}return t.id||(t.id=e.id?`portal/${e.id}`:function(e="id"){return`${e?`${e}-`:""}${Math.random().toString(36).slice(2,8)}`}()),E(t),s.setRef.call(void 0,g,t),a?void 0:()=>{t.remove(),s.setRef.call(void 0,g,null)}}),[w,f,_,g]),l.useSafeLayoutEffect.call(void 0,(()=>{if(!w)return;if(!a)return;if(!n)return;const e=c.getDocument.call(void 0,n).createElement("span");return e.style.position="fixed",n.insertAdjacentElement("afterend",e),j(e),()=>{e.remove(),j(null)}}),[w,a,n]),v.useEffect.call(void 0,(()=>{if(!k)return;if(!a)return;let e=0;const t=t=>{if(!u.isFocusEventOutside.call(void 0,t))return;const a="focusin"===t.type;if(cancelAnimationFrame(e),a)return d.restoreFocusIn.call(void 0,k);e=requestAnimationFrame((()=>{d.disableFocusIn.call(void 0,k,!0)}))};return k.addEventListener("focusin",t,!0),k.addEventListener("focusout",t,!0),()=>{cancelAnimationFrame(e),k.removeEventListener("focusin",t,!0),k.removeEventListener("focusout",t,!0)}}),[k,a]),b=l.useWrapElement.call(void 0,b,(e=>{if(e=m.jsx.call(void 0,o.PortalContext.Provider,{value:k||_,children:e}),!w)return e;if(!k)return m.jsx.call(void 0,"span",{ref:x,id:b.id,style:{position:"fixed"},hidden:!0});e=m.jsxs.call(void 0,m.Fragment,{children:[a&&k&&m.jsx.call(void 0,r.FocusTrap,{ref:S,"data-focus-trap":b.id,className:"__focus-trap-inner-before",onFocus:e=>{u.isFocusEventOutside.call(void 0,e,k)?h(d.getNextTabbable.call(void 0)):h(A.current)}}),e,a&&k&&m.jsx.call(void 0,r.FocusTrap,{ref:P,"data-focus-trap":b.id,className:"__focus-trap-inner-after",onFocus:e=>{u.isFocusEventOutside.call(void 0,e,k)?h(d.getPreviousTabbable.call(void 0)):h(R.current)}})]}),k&&(e=p.createPortal.call(void 0,e,k));let t=m.jsxs.call(void 0,m.Fragment,{children:[a&&k&&m.jsx.call(void 0,r.FocusTrap,{ref:A,"data-focus-trap":b.id,className:"__focus-trap-outer-before",onFocus:e=>{!(e.relatedTarget===R.current)&&u.isFocusEventOutside.call(void 0,e,k)?h(S.current):h(d.getPreviousTabbable.call(void 0))}}),a&&m.jsx.call(void 0,"span",{"aria-owns":null==k?void 0:k.id,style:{position:"fixed"}}),a&&k&&m.jsx.call(void 0,r.FocusTrap,{ref:R,"data-focus-trap":b.id,className:"__focus-trap-outer-after",onFocus:e=>{if(u.isFocusEventOutside.call(void 0,e,k))h(P.current);else{const e=d.getNextTabbable.call(void 0);if(e===S.current)return void requestAnimationFrame((()=>{var e;return null==(e=d.getNextTabbable.call(void 0))?void 0:e.focus()}));h(e)}}})]});return C&&a&&(t=p.createPortal.call(void 0,t,C)),m.jsxs.call(void 0,m.Fragment,{children:[t,e]})}),[k,_,w,b.id,a,C]),b=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},b),{ref:x})})),g=n.forwardRef.call(void 0,(function(e){const t=f(e);return n.createElement.call(void 0,"div",t)}));t.usePortal=f,t.Portal=g},39861:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(28293),o=a(77018),n=a(19652),l=a(80987),s=a(28148),i=a(48959),c=a(64370),u=a(51609),d=a(10790);function v(e=0,t=0,a=0,r=0){if("function"==typeof DOMRect)return new DOMRect(e,t,a,r);const o={x:e,y:t,width:a,height:r,top:t,right:e+a,bottom:t+r,left:e};return s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{},o),{toJSON:()=>o})}function p(e,t){return{contextElement:e||void 0,getBoundingClientRect:()=>{const a=e,r=null==t?void 0:t(a);return r||!a?function(e){if(!e)return v();const{x:t,y:a,width:r,height:o}=e;return v(t,a,r,o)}(r):a.getBoundingClientRect()}}}function m(e){return/^(?:top|bottom|left|right)(?:-(?:start|end))?$/.test(e)}function h(e){const t=window.devicePixelRatio||1;return Math.round(e*t)/t}function f(e,t){return c.offset.call(void 0,(({placement:a})=>{var r;const o=((null==e?void 0:e.clientHeight)||0)/2,n="number"==typeof t.gutter?t.gutter+o:null!=(r=t.gutter)?r:o;return{crossAxis:!!a.split("-")[1]?void 0:t.shift,mainAxis:n,alignmentAxis:t.shift}}))}function g(e){if(!1===e.flip)return;const t="string"==typeof e.flip?e.flip.split(" "):void 0;return i.invariant.call(void 0,!t||t.every(m),!1),c.flip.call(void 0,{padding:e.overflowPadding,fallbackPlacements:t})}function w(e){if(e.slide||e.overlap)return c.shift.call(void 0,{mainAxis:e.slide,crossAxis:e.overlap,padding:e.overflowPadding,limiter:c.limitShift.call(void 0)})}function b(e){return c.size.call(void 0,{padding:e.overflowPadding,apply({elements:t,availableWidth:a,availableHeight:r,rects:o}){const n=t.floating,l=Math.round(o.reference.width);a=Math.floor(a),r=Math.floor(r),n.style.setProperty("--popover-anchor-width",`${l}px`),n.style.setProperty("--popover-available-width",`${a}px`),n.style.setProperty("--popover-available-height",`${r}px`),e.sameWidth&&(n.style.width=`${l}px`),e.fitViewport&&(n.style.maxWidth=`${a}px`,n.style.maxHeight=`${r}px`)}})}function y(e,t){if(e)return c.arrow.call(void 0,{element:e,padding:t.arrowPadding})}var x=n.createHook.call(void 0,(function(e){var t=e,{store:a,modal:n=!1,portal:v=!!n,preserveTabOrder:m=!0,autoFocusOnShow:x=!0,wrapperProps:_,fixed:k=!1,flip:E=!0,shift:C=0,slide:j=!0,overlap:A=!1,sameWidth:S=!1,fitViewport:P=!1,gutter:R,arrowPadding:M=4,overflowPadding:V=8,getAnchorRect:z,updatePosition:H}=t,L=s.__objRest.call(void 0,t,["store","modal","portal","preserveTabOrder","autoFocusOnShow","wrapperProps","fixed","flip","shift","slide","overlap","sameWidth","fitViewport","gutter","arrowPadding","overflowPadding","getAnchorRect","updatePosition"]);const O=o.usePopoverProviderContext.call(void 0);a=a||O,i.invariant.call(void 0,a,!1);const N=a.useState("arrowElement"),I=a.useState("anchorElement"),B=a.useState("disclosureElement"),T=a.useState("popoverElement"),F=a.useState("contentElement"),D=a.useState("placement"),G=a.useState("mounted"),U=a.useState("rendered"),q=u.useRef.call(void 0,null),[Z,W]=u.useState.call(void 0,!1),{portalRef:$,domReady:J}=l.usePortalRef.call(void 0,v,L.portalRef),K=l.useEvent.call(void 0,z),Q=l.useEvent.call(void 0,H),Y=!!H;l.useSafeLayoutEffect.call(void 0,(()=>{if(!(null==T?void 0:T.isConnected))return;T.style.setProperty("--popover-overflow-padding",`${V}px`);const e=p(I,K),t=async()=>{if(!G)return;N||(q.current=q.current||document.createElement("div"));const t=N||q.current,r=[f(t,{gutter:R,shift:C}),g({flip:E,overflowPadding:V}),w({slide:j,shift:C,overlap:A,overflowPadding:V}),y(t,{arrowPadding:M}),b({sameWidth:S,fitViewport:P,overflowPadding:V})],o=await c.computePosition.call(void 0,e,T,{placement:D,strategy:k?"fixed":"absolute",middleware:r});null==a||a.setState("currentPlacement",o.placement),W(!0);const n=h(o.x),l=h(o.y);if(Object.assign(T.style,{top:"0",left:"0",transform:`translate3d(${n}px,${l}px,0)`}),t&&o.middlewareData.arrow){const{x:e,y:a}=o.middlewareData.arrow,r=o.placement.split("-")[0],n=t.clientWidth/2,l=t.clientHeight/2,s=null!=e?e+n:-n,i=null!=a?a+l:-l;T.style.setProperty("--popover-transform-origin",{top:`${s}px calc(100% + ${l}px)`,bottom:`${s}px ${-l}px`,left:`calc(100% + ${n}px) ${i}px`,right:`${-n}px ${i}px`}[r]),Object.assign(t.style,{left:null!=e?`${e}px`:"",top:null!=a?`${a}px`:"",[r]:"100%"})}},r=c.autoUpdate.call(void 0,e,T,(async()=>{Y?(await Q({updatePosition:t}),W(!0)):await t()}),{elementResize:"function"==typeof ResizeObserver});return()=>{W(!1),r()}}),[a,U,T,N,I,T,D,G,J,k,E,C,j,A,S,P,R,M,V,K,Y,Q]),l.useSafeLayoutEffect.call(void 0,(()=>{if(!G)return;if(!J)return;if(!(null==T?void 0:T.isConnected))return;if(!(null==F?void 0:F.isConnected))return;const e=()=>{T.style.zIndex=getComputedStyle(F).zIndex};e();let t=requestAnimationFrame((()=>{t=requestAnimationFrame(e)}));return()=>cancelAnimationFrame(t)}),[G,J,T,F]);const X=k?"fixed":"absolute";return L=l.useWrapElement.call(void 0,L,(e=>d.jsx.call(void 0,"div",s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{},_),{style:s.__spreadValues.call(void 0,{position:X,top:0,left:0,width:"max-content"},null==_?void 0:_.style),ref:null==a?void 0:a.setPopoverElement,children:e}))),[a,X,_]),L=l.useWrapElement.call(void 0,L,(e=>d.jsx.call(void 0,o.PopoverScopedContextProvider,{value:a,children:e})),[a]),L=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{"data-placing":!Z||void 0},L),{style:s.__spreadValues.call(void 0,{position:"relative"},L.style)}),L=r.useDialog.call(void 0,s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{store:a,modal:n,portal:v,preserveTabOrder:m,preserveTabOrderAnchor:B||I,autoFocusOnShow:Z&&x},L),{portalRef:$}))})),_=r.createDialogComponent.call(void 0,n.forwardRef.call(void 0,(function(e){const t=x(e);return n.createElement.call(void 0,"div",t)})),o.usePopoverProviderContext);t.usePopover=x,t.Popover=_},12707:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(19652),o=r.createHook.call(void 0,(function(e){return e})),n=r.forwardRef.call(void 0,(function(e){return r.createElement.call(void 0,"div",e)}));Object.assign(n,["a","button","details","dialog","div","form","h1","h2","h3","h4","h5","h6","header","img","input","label","li","nav","ol","p","section","select","span","summary","textarea","ul","svg"].reduce(((e,t)=>(e[t]=r.forwardRef.call(void 0,(function(e){return r.createElement.call(void 0,t,e)})),e)),{})),t.useRole=o,t.Role=n},9355:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(87636),o=a(80987),n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(a(75088));function l(e,t,a){return o.useUpdateEffect.call(void 0,t,[a.store]),r.useStoreProps.call(void 0,e,a,"items","setItems"),e}t.useCollectionStoreProps=l,t.useCollectionStore=function(e={}){const[t,a]=r.useStore.call(void 0,n.createCollectionStore,e);return l(t,a,e)}},45081:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.POPOVER_ARROW_PATH="M23,27.8c1.1,1.2,3.4,2.2,5,2.2h2H0h2c1.7,0,3.9-1,5-2.2l6.6-7.2c0.7-0.8,2-0.8,2.7,0L23,27.8L23,27.8z"},97322:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(90604),o=a(80231),n=a(19652),l=a(28148),s=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const s=o.useHovercardScopedContext.call(void 0);return a=a||s,n=r.usePopoverDismiss.call(void 0,l.__spreadValues.call(void 0,{store:a},n))})),i=n.forwardRef.call(void 0,(function(e){const t=s(e);return n.createElement.call(void 0,"button",t)}));t.useHovercardDismiss=s,t.HovercardDismiss=i},70419:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(29842),o=a(19652),n=a(80987),l=a(28148),s=a(92725),i=a(51609),c="button",u=o.createHook.call(void 0,(function(e){const t=i.useRef.call(void 0,null),a=n.useTagName.call(void 0,t,c),[o,u]=i.useState.call(void 0,(()=>!!a&&s.isButton.call(void 0,{tagName:a,type:e.type})));return i.useEffect.call(void 0,(()=>{t.current&&u(s.isButton.call(void 0,t.current))}),[]),e=l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{role:o||"a"===a?void 0:"button"},e),{ref:n.useMergeRefs.call(void 0,t,e.ref)}),e=r.useCommand.call(void 0,e)})),d=o.forwardRef.call(void 0,(function(e){const t=u(e);return o.createElement.call(void 0,c,t)}));t.useButton=u,t.Button=d},52954:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(19652),o=a(28148),n=r.createHook.call(void 0,(function(e){var t=e,{orientation:a="horizontal"}=t,r=o.__objRest.call(void 0,t,["orientation"]);return r=o.__spreadValues.call(void 0,{role:"separator","aria-orientation":a},r)})),l=r.forwardRef.call(void 0,(function(e){const t=n(e);return r.createElement.call(void 0,"hr",t)}));t.useSeparator=n,t.Separator=l},99471:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=new WeakMap;function r(e,t,r){a.has(e)||a.set(e,new Map);const o=a.get(e),n=o.get(t);if(!n)return o.set(t,r()),()=>{var e;null==(e=o.get(t))||e(),o.delete(t)};const l=r(),s=()=>{l(),n(),o.delete(t)};return o.set(t,s),()=>{o.get(t)===s&&(l(),o.set(t,n))}}t.orchestrate=r,t.setAttribute=function(e,t,a){return r(e,t,(()=>{const r=e.getAttribute(t);return e.setAttribute(t,a),()=>{null==r?e.removeAttribute(t):e.setAttribute(t,r)}}))},t.setProperty=function(e,t,a){return r(e,t,(()=>{const r=t in e,o=e[t];return e[t]=a,()=>{r?e[t]=o:delete e[t]}}))},t.assignStyle=function(e,t){return e?r(e,"style",(()=>{const a=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=a}})):()=>{}},t.setCSSProperty=function(e,t,a){return e?r(e,t,(()=>{const r=e.style.getPropertyValue(t);return e.style.setProperty(t,a),()=>{r?e.style.setProperty(t,r):e.style.removeProperty(t)}})):()=>{}}},77723:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(53944),o=a(16299),n=a(19652),l=a(87636),s=a(80987),i=a(28148),c=a(48959),u=a(51609),d=a(75795),v=a(10790);function p(e,t){const a=setTimeout(t,e);return()=>clearTimeout(a)}function m(...e){return e.join(", ").split(", ").reduce(((e,t)=>{const a=t.endsWith("ms")?1:1e3,r=Number.parseFloat(t||"0s")*a;return r>e?r:e}),0)}function h(e,t,a){return!(a||!1===t||e&&!t)}var f=n.createHook.call(void 0,(function(e){var t=e,{store:a,alwaysVisible:n}=t,f=i.__objRest.call(void 0,t,["store","alwaysVisible"]);const g=o.useDisclosureProviderContext.call(void 0);a=a||g,c.invariant.call(void 0,a,!1);const w=u.useRef.call(void 0,null),b=s.useId.call(void 0,f.id),[y,x]=u.useState.call(void 0,null),_=a.useState("open"),k=a.useState("mounted"),E=a.useState("animated"),C=a.useState("contentElement"),j=l.useStoreState.call(void 0,a.disclosure,"contentElement");s.useSafeLayoutEffect.call(void 0,(()=>{w.current&&(null==a||a.setContentElement(w.current))}),[a]),s.useSafeLayoutEffect.call(void 0,(()=>{let e;return null==a||a.setState("animated",(t=>(e=t,!0))),()=>{void 0!==e&&(null==a||a.setState("animated",e))}}),[a]),s.useSafeLayoutEffect.call(void 0,(()=>{if(E){if(null==C?void 0:C.isConnected)return function(e){let t=requestAnimationFrame((()=>{t=requestAnimationFrame(e)}));return()=>cancelAnimationFrame(t)}((()=>{x(_?"enter":k?"leave":null)}));x(null)}}),[E,C,_,k]),s.useSafeLayoutEffect.call(void 0,(()=>{if(!a)return;if(!E)return;if(!y)return;if(!C)return;const e=()=>null==a?void 0:a.setState("animating",!1),t=()=>d.flushSync.call(void 0,e);if("leave"===y&&_)return;if("enter"===y&&!_)return;if("number"==typeof E){return p(E,t)}const{transitionDuration:r,animationDuration:o,transitionDelay:n,animationDelay:l}=getComputedStyle(C),{transitionDuration:s="0",animationDuration:i="0",transitionDelay:c="0",animationDelay:u="0"}=j?getComputedStyle(j):{},v=m(n,l,c,u)+m(r,o,s,i);if(!v)return"enter"===y&&a.setState("animated",!1),void e();return p(Math.max(v-1e3/60,0),t)}),[a,E,C,j,_,y]),f=s.useWrapElement.call(void 0,f,(e=>v.jsx.call(void 0,r.DialogScopedContextProvider,{value:a,children:e})),[a]);const A=h(k,f.hidden,n),S=f.style,P=u.useMemo.call(void 0,(()=>A?i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},S),{display:"none"}):S),[A,S]);return f=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{id:b,"data-open":_||void 0,"data-enter":"enter"===y||void 0,"data-leave":"leave"===y||void 0,hidden:A},f),{ref:s.useMergeRefs.call(void 0,b?a.setContentElement:null,w,f.ref),style:P}),c.removeUndefinedValues.call(void 0,f)})),g=n.forwardRef.call(void 0,(function(e){const t=f(e);return n.createElement.call(void 0,"div",t)})),w=n.forwardRef.call(void 0,(function(e){var t=e,{unmountOnHide:a}=t,r=i.__objRest.call(void 0,t,["unmountOnHide"]);const n=o.useDisclosureProviderContext.call(void 0),s=r.store||n;return!1===l.useStoreState.call(void 0,s,(e=>!a||(null==e?void 0:e.mounted)))?null:v.jsx.call(void 0,g,i.__spreadValues.call(void 0,{},r))}));t.isHidden=h,t.useDisclosureContent=f,t.DisclosureContent=w},48960:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.supportsInert=function(){return"inert"in HTMLElement.prototype}},21676:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(85325),o=a(91605),n=a(87121),l=a(87636),s=a(80987),i=a(28148),c=a(92725),u=a(77328),d=a(51609);function v({store:e,type:t,listener:a,capture:o,domReady:i}){const v=s.useEvent.call(void 0,a),p=l.useStoreState.call(void 0,e,"open"),m=d.useRef.call(void 0,!1);s.useSafeLayoutEffect.call(void 0,(()=>{if(!p)return;if(!i)return;const{contentElement:t}=e.getState();if(!t)return;const a=()=>{m.current=!0};return t.addEventListener("focusin",a,!0),()=>t.removeEventListener("focusin",a,!0)}),[e,p,i]),d.useEffect.call(void 0,(()=>{if(!p)return;return u.addGlobalEventListener.call(void 0,t,(t=>{const{contentElement:a,disclosureElement:o}=e.getState(),l=t.target;if(!a)return;if(!l)return;if(!function(e){return"HTML"===e.tagName||c.contains.call(void 0,c.getDocument.call(void 0,e).body,e)}(l))return;if(c.contains.call(void 0,a,l))return;if(function(e,t){if(!e)return!1;if(c.contains.call(void 0,e,t))return!0;const a=t.getAttribute("aria-activedescendant");if(a){const t=c.getDocument.call(void 0,e).getElementById(a);if(t)return c.contains.call(void 0,e,t)}return!1}(o,l))return;if(l.hasAttribute("data-focus-trap"))return;if(function(e,t){if(!("clientY"in e))return!1;const a=t.getBoundingClientRect();return 0!==a.width&&0!==a.height&&a.top<=e.clientY&&e.clientY<=a.top+a.height&&a.left<=e.clientX&&e.clientX<=a.left+a.width}(t,a))return;m.current&&!r.isElementMarked.call(void 0,l,a.id)||n.isSafariFocusAncestor.call(void 0,l)||v(t)}),o)}),[p,o])}function p(e,t){return"function"==typeof e?e(t):!!e}t.useHideOnInteractOutside=function(e,t,a){const n=l.useStoreState.call(void 0,e,"open"),s=o.usePreviousMouseDownRef.call(void 0,n),u={store:e,domReady:a,capture:!0};v(i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},u),{type:"click",listener:a=>{const{contentElement:o}=e.getState(),n=s.current;n&&c.isVisible.call(void 0,n)&&r.isElementMarked.call(void 0,n,null==o?void 0:o.id)&&p(t,a)&&e.hide()}})),v(i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},u),{type:"focusin",listener:a=>{const{contentElement:r}=e.getState();r&&a.target!==c.getDocument.call(void 0,r)&&p(t,a)&&e.hide()}})),v(i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},u),{type:"contextmenu",listener:a=>{p(t,a)&&e.hide()}}))}},90604:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(60762),o=a(77018),n=a(19652),l=a(28148),s=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const s=o.usePopoverScopedContext.call(void 0);return a=a||s,n=r.useDialogDismiss.call(void 0,l.__spreadValues.call(void 0,{store:a},n))})),i=n.forwardRef.call(void 0,(function(e){const t=s(e);return n.createElement.call(void 0,"button",t)}));t.usePopoverDismiss=s,t.PopoverDismiss=i},22225:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(42076),o=a(19652),n=a(80987),l=a(28148),s=a(48959),i=a(51609),c=a(10790),u=o.createHook.call(void 0,(function(e){var t=e,{store:a,"aria-setsize":o,"aria-posinset":u}=t,d=l.__objRest.call(void 0,t,["store","aria-setsize","aria-posinset"]);const v=r.useCompositeContext.call(void 0);a=a||v,s.invariant.call(void 0,a,!1);const p=n.useId.call(void 0,d.id),m=a.useState((e=>e.baseElement||void 0)),h=i.useMemo.call(void 0,(()=>({id:p,baseElement:m,ariaSetSize:o,ariaPosInSet:u})),[p,m,o,u]);return d=n.useWrapElement.call(void 0,d,(e=>c.jsx.call(void 0,r.CompositeRowContext.Provider,{value:h,children:e})),[h]),d=l.__spreadValues.call(void 0,{id:p},d),s.removeUndefinedValues.call(void 0,d)})),d=o.forwardRef.call(void 0,(function(e){const t=u(e);return o.createElement.call(void 0,"div",t)}));t.useCompositeRow=u,t.CompositeRow=d},19652:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(80987),o=a(7219),n=a(28148),l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(a(51609)),s=a(10790);t.forwardRef=function(e){const t=l.forwardRef(((t,a)=>e(n.__spreadProps.call(void 0,n.__spreadValues.call(void 0,{},t),{ref:a}))));return t.displayName=e.displayName||e.name,t},t.memo=function(e,t){return l.memo(e,t)},t.createElement=function(e,t){const a=t,{wrapElement:i,render:c}=a,u=n.__objRest.call(void 0,a,["wrapElement","render"]),d=r.useMergeRefs.call(void 0,t.ref,o.getRefProperty.call(void 0,c));let v;if(l.isValidElement(c)){const e=n.__spreadProps.call(void 0,n.__spreadValues.call(void 0,{},c.props),{ref:d});v=l.cloneElement(c,o.mergeProps.call(void 0,u,e))}else v=c?c(u):s.jsx.call(void 0,e,n.__spreadValues.call(void 0,{},u));return i?i(v):v},t.createHook=function(e){const t=(t={})=>e(t);return t.displayName=e.name,t},t.createStoreContext=function(e=[],t=[]){const a=l.createContext(void 0),r=l.createContext(void 0),o=()=>l.useContext(a),i=t=>e.reduceRight(((e,a)=>s.jsx.call(void 0,a,n.__spreadProps.call(void 0,n.__spreadValues.call(void 0,{},t),{children:e}))),s.jsx.call(void 0,a.Provider,n.__spreadValues.call(void 0,{},t)));return{context:a,scopedContext:r,useContext:o,useScopedContext:(e=!1)=>{const t=l.useContext(r),a=o();return e?t:t||a},useProviderContext:()=>{const e=l.useContext(r),t=o();if(!e||e!==t)return t},ContextProvider:i,ScopedContextProvider:e=>s.jsx.call(void 0,i,n.__spreadProps.call(void 0,n.__spreadValues.call(void 0,{},e),{children:t.reduceRight(((t,a)=>s.jsx.call(void 0,a,n.__spreadProps.call(void 0,n.__spreadValues.call(void 0,{},e),{children:t}))),s.jsx.call(void 0,r.Provider,n.__spreadValues.call(void 0,{},e)))}))}}},87636:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r,o=a(80987),n=a(28148),l=a(48959),s=a(8766),i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(a(51609)),c=a(22484),u=(r=c)&&r.__esModule?r:{default:r},{useSyncExternalStore:d}=u.default;function v(e,t=l.identity){const a=i.useCallback((t=>e?s.subscribe.call(void 0,e,null,t):()=>{}),[e]),r=()=>{const a="string"==typeof t?t:null,r="function"==typeof t?t:null,o=null==e?void 0:e.getState();return r?r(o):o&&a&&l.hasOwnProperty.call(void 0,o,a)?o[a]:void 0};return d(a,r,r)}t.useStoreState=v,t.useStoreStateObject=function(e,t){const a=i.useRef({}),r=i.useCallback((t=>e?s.subscribe.call(void 0,e,null,t):()=>{}),[e]),o=()=>{const r=null==e?void 0:e.getState();let o=!1;const s=a.current;for(const e in t){const a=t[e];if("function"==typeof a){const t=a(r);t!==s[e]&&(s[e]=t,o=!0)}if("string"==typeof a){if(!r)continue;if(!l.hasOwnProperty.call(void 0,r,a))continue;const t=r[a];t!==s[e]&&(s[e]=t,o=!0)}}return o&&(a.current=n.__spreadValues.call(void 0,{},s)),a.current};return d(r,o,o)},t.useStoreProps=function(e,t,a,r){const n=l.hasOwnProperty.call(void 0,t,a)?t[a]:void 0,i=r?t[r]:void 0,c=o.useLiveRef.call(void 0,{value:n,setValue:i});o.useSafeLayoutEffect.call(void 0,(()=>s.sync.call(void 0,e,[a],((e,t)=>{const{value:r,setValue:o}=c.current;o&&e[a]!==t[a]&&e[a]!==r&&o(e[a])}))),[e,a]),o.useSafeLayoutEffect.call(void 0,(()=>{if(void 0!==n)return e.setState(a,n),s.batch.call(void 0,e,[a],(()=>{void 0!==n&&e.setState(a,n)}))}))},t.useStore=function(e,t){const[a,r]=i.useState((()=>e(t)));o.useSafeLayoutEffect.call(void 0,(()=>s.init.call(void 0,a)),[a]);const l=i.useCallback((e=>v(a,e)),[a]);return[i.useMemo((()=>n.__spreadProps.call(void 0,n.__spreadValues.call(void 0,{},a),{useState:l})),[a,l]),o.useEvent.call(void 0,(()=>{r((a=>e(n.__spreadValues.call(void 0,n.__spreadValues.call(void 0,{},t),a.getState()))))}))]}},30829:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(61150),o=a(96475),n=a(35973),l=a(19652),s=a(87636),i=a(80987),c=a(28148),u=a(92725),d=a(77328),v=a(60877),p=a(48959),m=a(51609),h=a(10790);function f(e){var t;return null!=(t={menu:"menuitem",listbox:"option",tree:"treeitem"}[e])?t:"option"}var g=l.createHook.call(void 0,(function(e){var t,a=e,{store:l,value:g,hideOnClick:w,setValueOnClick:b,selectValueOnClick:y=!0,resetValueOnSelect:x,focusOnHover:_=!1,moveOnKeyPress:k=!0,getItem:E}=a,C=c.__objRest.call(void 0,a,["store","value","hideOnClick","setValueOnClick","selectValueOnClick","resetValueOnSelect","focusOnHover","moveOnKeyPress","getItem"]);const j=o.useComboboxScopedContext.call(void 0);l=l||j,p.invariant.call(void 0,l,!1);const{resetValueOnSelectState:A,multiSelectable:S,selected:P}=s.useStoreStateObject.call(void 0,l,{resetValueOnSelectState:"resetValueOnSelect",multiSelectable:e=>Array.isArray(e.selectedValue),selected:e=>function(e,t){if(null!=t)return null!=e&&(Array.isArray(e)?e.includes(t):e===t)}(e.selectedValue,g)}),R=m.useCallback.call(void 0,(e=>{const t=c.__spreadProps.call(void 0,c.__spreadValues.call(void 0,{},e),{value:g});return E?E(t):t}),[g,E]);b=null!=b?b:!S,w=null!=w?w:null!=g&&!S;const M=C.onClick,V=i.useBooleanEvent.call(void 0,b),z=i.useBooleanEvent.call(void 0,y),H=i.useBooleanEvent.call(void 0,null!=(t=null!=x?x:A)?t:S),L=i.useBooleanEvent.call(void 0,w),O=i.useEvent.call(void 0,(e=>{null==M||M(e),e.defaultPrevented||d.isDownloading.call(void 0,e)||d.isOpeningInNewTab.call(void 0,e)||(null!=g&&(z(e)&&(H(e)&&(null==l||l.resetValue()),null==l||l.setSelectedValue((e=>Array.isArray(e)?e.includes(g)?e.filter((e=>e!==g)):[...e,g]:g))),V(e)&&(null==l||l.setValue(g))),L(e)&&(null==l||l.hide()))})),N=C.onKeyDown,I=i.useEvent.call(void 0,(e=>{if(null==N||N(e),e.defaultPrevented)return;const t=null==l?void 0:l.getState().baseElement;if(!t)return;if(v.hasFocus.call(void 0,t))return;(1===e.key.length||"Backspace"===e.key||"Delete"===e.key)&&(queueMicrotask((()=>t.focus())),u.isTextField.call(void 0,t)&&(null==l||l.setValue(t.value)))}));S&&null!=P&&(C=c.__spreadValues.call(void 0,{"aria-selected":P},C)),C=i.useWrapElement.call(void 0,C,(e=>h.jsx.call(void 0,o.ComboboxItemValueContext.Provider,{value:g,children:h.jsx.call(void 0,o.ComboboxItemCheckedContext.Provider,{value:null!=P&&P,children:e})})),[g,P]);const B=m.useContext.call(void 0,o.ComboboxListRoleContext);C=c.__spreadProps.call(void 0,c.__spreadValues.call(void 0,{role:f(B),children:g},C),{onClick:O,onKeyDown:I});const T=i.useBooleanEvent.call(void 0,k);return C=n.useCompositeItem.call(void 0,c.__spreadProps.call(void 0,c.__spreadValues.call(void 0,{store:l},C),{getItem:R,moveOnKeyPress:e=>{if(!T(e))return!1;const t=new Event("combobox-item-move"),a=null==l?void 0:l.getState().baseElement;return null==a||a.dispatchEvent(t),!0}})),C=r.useCompositeHover.call(void 0,c.__spreadValues.call(void 0,{store:l,focusOnHover:_},C))})),w=l.memo.call(void 0,l.forwardRef.call(void 0,(function(e){const t=g(e);return l.createElement.call(void 0,"div",t)})));t.useComboboxItem=g,t.ComboboxItem=w},28148:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var a=Object.defineProperty,r=Object.defineProperties,o=Object.getOwnPropertyDescriptors,n=Object.getOwnPropertySymbols,l=Object.prototype.hasOwnProperty,s=Object.prototype.propertyIsEnumerable,i=(e,t,r)=>t in e?a(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;t.__spreadValues=(e,t)=>{for(var a in t||(t={}))l.call(t,a)&&i(e,a,t[a]);if(n)for(var a of n(t))s.call(t,a)&&i(e,a,t[a]);return e},t.__spreadProps=(e,t)=>r(e,o(t)),t.__objRest=(e,t)=>{var a={};for(var r in e)l.call(e,r)&&t.indexOf(r)<0&&(a[r]=e[r]);if(null!=e&&n)for(var r of n(e))t.indexOf(r)<0&&s.call(e,r)&&(a[r]=e[r]);return a}},22510:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(35174),o=a(53944),n=a(19652),l=a(80987),s=a(28148),i=a(51609),c=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=s.__objRest.call(void 0,t,["store"]);const c=i.useContext.call(void 0,o.DialogHeadingContext),u=l.useId.call(void 0,n.id);return l.useSafeLayoutEffect.call(void 0,(()=>(null==c||c(u),()=>null==c?void 0:c(void 0))),[c,u]),n=s.__spreadValues.call(void 0,{id:u},n),n=r.useHeading.call(void 0,n)})),u=n.forwardRef.call(void 0,(function(e){const t=c(e);return n.createElement.call(void 0,"h1",t)}));t.useDialogHeading=c,t.DialogHeading=u},56203:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(70419),o=a(16299),n=a(19652),l=a(80987),s=a(28148),i=a(48959),c=a(51609),u=Symbol("disclosure"),d=n.createHook.call(void 0,(function(e){var t=e,{store:a,toggleOnClick:n=!0}=t,d=s.__objRest.call(void 0,t,["store","toggleOnClick"]);const v=o.useDisclosureProviderContext.call(void 0);a=a||v,i.invariant.call(void 0,a,!1);const p=c.useRef.call(void 0,null),[m,h]=c.useState.call(void 0,!1),f=a.useState("disclosureElement"),g=a.useState("open");c.useEffect.call(void 0,(()=>{let e=f===p.current;(null==f?void 0:f.isConnected)||(null==a||a.setDisclosureElement(p.current),e=!0),h(g&&e)}),[f,a,g]);const w=d.onClick,b=l.useBooleanEvent.call(void 0,n),[y,x]=l.useMetadataProps.call(void 0,d,u,!0),_=l.useEvent.call(void 0,(e=>{null==w||w(e),e.defaultPrevented||y||b(e)&&(null==a||a.setDisclosureElement(e.currentTarget),null==a||a.toggle())})),k=a.useState("contentElement");return d=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,s.__spreadValues.call(void 0,{"aria-expanded":m,"aria-controls":null==k?void 0:k.id},x),d),{ref:l.useMergeRefs.call(void 0,p,d.ref),onClick:_}),d=r.useButton.call(void 0,d)})),v=n.forwardRef.call(void 0,(function(e){const t=d(e);return n.createElement.call(void 0,"button",t)}));t.useDisclosure=d,t.Disclosure=v},26327:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isBackdrop=function(e,...t){if(!e)return!1;const a=e.getAttribute("data-backdrop");return null!=a&&(""===a||("true"===a||(!t.length||t.some((e=>a===e)))))}},77673:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(77018),o=a(19652),n=a(28148),l=a(48959),s=a(51609),i=a(10790),c={top:"4,10 8,6 12,10",right:"6,4 10,8 6,12",bottom:"4,6 8,10 12,6",left:"10,4 6,8 10,12"},u=o.createHook.call(void 0,(function(e){var t=e,{store:a,placement:o}=t,u=n.__objRest.call(void 0,t,["store","placement"]);const d=r.usePopoverContext.call(void 0);a=a||d,l.invariant.call(void 0,a,!1);const v=a.useState((e=>o||e.placement)).split("-")[0],p=c[v],m=s.useMemo.call(void 0,(()=>i.jsx.call(void 0,"svg",{display:"block",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,viewBox:"0 0 16 16",height:"1em",width:"1em",children:i.jsx.call(void 0,"polyline",{points:p})})),[p]);return u=n.__spreadProps.call(void 0,n.__spreadValues.call(void 0,{children:m,"aria-hidden":!0},u),{style:n.__spreadValues.call(void 0,{width:"1em",height:"1em",pointerEvents:"none"},u.style)}),l.removeUndefinedValues.call(void 0,u)})),d=o.forwardRef.call(void 0,(function(e){const t=u(e);return o.createElement.call(void 0,"span",t)}));t.usePopoverDisclosureArrow=u,t.PopoverDisclosureArrow=d},91907:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(9355),o=a(87636),n=a(80987),l=a(28148),s=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(a(12028)),i=a(51609);function c(e,t,a){e=r.useCollectionStoreProps.call(void 0,e,t,a),o.useStoreProps.call(void 0,e,a,"values","setValues"),o.useStoreProps.call(void 0,e,a,"errors","setErrors"),o.useStoreProps.call(void 0,e,a,"touched","setTouched");const s=i.useCallback.call(void 0,(t=>e.useState((()=>e.getValue(t)))),[e]),c=i.useCallback.call(void 0,(t=>{t=n.useEvent.call(void 0,t);const a=e.useState("items");i.useEffect.call(void 0,(()=>e.onValidate(t)),[a,t])}),[e]),u=i.useCallback.call(void 0,(t=>{t=n.useEvent.call(void 0,t);const a=e.useState("items");i.useEffect.call(void 0,(()=>e.onSubmit(t)),[a,t])}),[e]);return i.useMemo.call(void 0,(()=>l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},e),{useValue:s,useValidate:c,useSubmit:u})),[])}t.useFormStoreProps=c,t.useFormStore=function(e={}){const[t,a]=o.useStore.call(void 0,s.createFormStore,e);return c(t,a,e)}},42888:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(61150),o=a(72707),n=a(35973),l=a(19652),s=a(87636),i=a(80987),c=a(28148),u=a(92725),d=a(77328),v=a(48959),p=a(51609),m=a(10790);var h=l.createHook.call(void 0,(function(e){var t,a=e,{store:l,value:h,getItem:f,hideOnClick:g,setValueOnClick:w=null!=h,preventScrollOnKeyDown:b=!0,focusOnHover:y=!0}=a,x=c.__objRest.call(void 0,a,["store","value","getItem","hideOnClick","setValueOnClick","preventScrollOnKeyDown","focusOnHover"]);const _=o.useSelectScopedContext.call(void 0);l=l||_,v.invariant.call(void 0,l,!1);const k=i.useId.call(void 0,x.id),E=v.disabledFromProps.call(void 0,x),{listElement:C,multiSelectable:j,selected:A,autoFocus:S}=s.useStoreStateObject.call(void 0,l,{listElement:"listElement",multiSelectable:e=>Array.isArray(e.value),selected:e=>function(e,t){if(null!=t)return null!=e&&(Array.isArray(e)?e.includes(t):e===t)}(e.value,h),autoFocus:e=>null!=h&&(null!=e.value&&((e.activeId===k||!(null==l?void 0:l.item(e.activeId)))&&(Array.isArray(e.value)?e.value[e.value.length-1]===h:e.value===h)))}),P=p.useCallback.call(void 0,(e=>{const t=c.__spreadProps.call(void 0,c.__spreadValues.call(void 0,{},e),{value:E?void 0:h,children:h});return f?f(t):t}),[E,h,f]);g=null!=g?g:null!=h&&!j;const R=x.onClick,M=i.useBooleanEvent.call(void 0,w),V=i.useBooleanEvent.call(void 0,g),z=i.useEvent.call(void 0,(e=>{null==R||R(e),e.defaultPrevented||d.isDownloading.call(void 0,e)||d.isOpeningInNewTab.call(void 0,e)||(M(e)&&null!=h&&(null==l||l.setValue((e=>Array.isArray(e)?e.includes(h)?e.filter((e=>e!==h)):[...e,h]:h))),V(e)&&(null==l||l.hide()))}));x=i.useWrapElement.call(void 0,x,(e=>m.jsx.call(void 0,o.SelectItemCheckedContext.Provider,{value:null!=A&&A,children:e})),[A]),x=c.__spreadProps.call(void 0,c.__spreadValues.call(void 0,{id:k,role:u.getPopupItemRole.call(void 0,C),"aria-selected":A,children:h},x),{autoFocus:null!=(t=x.autoFocus)?t:S,onClick:z}),x=n.useCompositeItem.call(void 0,c.__spreadValues.call(void 0,{store:l,getItem:P,preventScrollOnKeyDown:b},x));const H=i.useBooleanEvent.call(void 0,y);return x=r.useCompositeHover.call(void 0,c.__spreadProps.call(void 0,c.__spreadValues.call(void 0,{store:l},x),{focusOnHover(e){if(!H(e))return!1;const t=null==l?void 0:l.getState();return!!(null==t?void 0:t.open)}}))})),f=l.memo.call(void 0,l.forwardRef.call(void 0,(function(e){const t=h(e);return l.createElement.call(void 0,"div",t)})));t.useSelectItem=h,t.SelectItem=f},71385:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(85826),o=a(67804),n=a(29842),l=a(19652),s=a(87636),i=a(80987),c=a(28148),u=a(48959),d=a(51609),v=a(10790),p="input";function m(e,t){t?e.indeterminate=!0:e.indeterminate&&(e.indeterminate=!1)}function h(e){return Array.isArray(e)?e.toString():e}var f=l.createHook.call(void 0,(function(e){var t=e,{store:a,name:l,value:f,checked:g,defaultChecked:w}=t,b=c.__objRest.call(void 0,t,["store","name","value","checked","defaultChecked"]);const y=r.useCheckboxContext.call(void 0);a=a||y;const[x,_]=d.useState.call(void 0,null!=w&&w),k=s.useStoreState.call(void 0,a,(e=>{if(void 0!==g)return g;if(void 0===(null==e?void 0:e.value))return x;if(null!=f){if(Array.isArray(e.value)){const t=h(f);return e.value.includes(t)}return e.value===f}return!Array.isArray(e.value)&&("boolean"==typeof e.value&&e.value)})),E=d.useRef.call(void 0,null),C=function(e,t){return"input"===e&&(!t||"checkbox"===t)}(i.useTagName.call(void 0,E,p),b.type),j=k?"mixed"===k:void 0,A="mixed"!==k&&k,S=u.disabledFromProps.call(void 0,b),[P,R]=i.useForceUpdate.call(void 0);d.useEffect.call(void 0,(()=>{const e=E.current;e&&(m(e,j),C||(e.checked=A,void 0!==l&&(e.name=l),void 0!==f&&(e.value=`${f}`)))}),[P,j,C,A,l,f]);const M=b.onChange,V=i.useEvent.call(void 0,(e=>{if(S)return e.stopPropagation(),void e.preventDefault();if(m(e.currentTarget,j),C||(e.currentTarget.checked=!e.currentTarget.checked,R()),null==M||M(e),e.defaultPrevented)return;const t=e.currentTarget.checked;_(t),null==a||a.setValue((e=>{if(null==f)return t;const a=h(f);return Array.isArray(e)?t?e.includes(a)?e:[...e,a]:e.filter((e=>e!==a)):e!==a&&a}))})),z=b.onClick,H=i.useEvent.call(void 0,(e=>{null==z||z(e),e.defaultPrevented||C||V(e)}));return b=i.useWrapElement.call(void 0,b,(e=>v.jsx.call(void 0,o.CheckboxCheckedContext.Provider,{value:A,children:e})),[A]),b=c.__spreadProps.call(void 0,c.__spreadValues.call(void 0,{role:C?void 0:"checkbox",type:C?"checkbox":void 0,"aria-checked":k},b),{ref:i.useMergeRefs.call(void 0,E,b.ref),onChange:V,onClick:H}),b=n.useCommand.call(void 0,c.__spreadValues.call(void 0,{clickOnEnter:!C},b)),u.removeUndefinedValues.call(void 0,c.__spreadValues.call(void 0,{name:C?l:void 0,value:C?f:void 0,checked:A},b))})),g=l.forwardRef.call(void 0,(function(e){const t=f(e);return l.createElement.call(void 0,p,t)}));t.useCheckbox=f,t.Checkbox=g},65320:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(96475),o=a(99366),n=a(44448),l=a(87636),s=a(80987),i=a(28148),c=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(a(11420));function u(e){const t=r.useComboboxProviderContext.call(void 0);return e=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},e),{combobox:void 0!==e.combobox?e.combobox:t}),o.useCompositeStoreOptions.call(void 0,e)}function d(e,t,a){return s.useUpdateEffect.call(void 0,t,[a.combobox]),l.useStoreProps.call(void 0,e,a,"value","setValue"),l.useStoreProps.call(void 0,e,a,"setValueOnMove"),Object.assign(n.usePopoverStoreProps.call(void 0,o.useCompositeStoreProps.call(void 0,e,t,a),t,a),{combobox:a.combobox})}t.useSelectStoreOptions=u,t.useSelectStoreProps=d,t.useSelectStore=function(e={}){e=u(e);const[t,a]=l.useStore.call(void 0,c.createSelectStore,e);return d(t,a,e)}},19387:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(70663),o=a(33043),n=a(26327),l=a(48960),s=a(49464),i=a(99471),c=a(92725),u=a(60877),d=a(48959);function v(e,t){if(!("style"in e))return d.noop;if(l.supportsInert.call(void 0))return i.setProperty.call(void 0,e,"inert",!0);const a=u.getAllTabbableIn.call(void 0,e,!0).map((e=>{if(null==t?void 0:t.some((t=>t&&c.contains.call(void 0,t,e))))return d.noop;const a=i.orchestrate.call(void 0,e,"focus",(()=>(e.focus=d.noop,()=>{delete e.focus})));return d.chain.call(void 0,i.setAttribute.call(void 0,e,"tabindex","-1"),a)}));return d.chain.call(void 0,...a,o.hideElementFromAccessibilityTree.call(void 0,e),i.assignStyle.call(void 0,e,{pointerEvents:"none",userSelect:"none",cursor:"default"}))}t.disableTree=v,t.disableTreeOutside=function(e,t){const a=[],o=t.map((e=>null==e?void 0:e.id));return s.walkTreeOutside.call(void 0,e,t,(e=>{n.isBackdrop.call(void 0,e,...o)||r.isFocusTrap.call(void 0,e,...o)||a.unshift(v(e,t))}),(e=>{e.hasAttribute("role")&&(t.some((t=>t&&c.contains.call(void 0,t,e)))||a.unshift(i.setAttribute.call(void 0,e,"role","none")))})),()=>{for(const e of a)e()}}},64494:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(42076),o=a(19652).createStoreContext.call(void 0,[r.CompositeContextProvider],[r.CompositeScopedContextProvider]),n=o.useContext,l=o.useScopedContext,s=o.useProviderContext,i=o.ContextProvider,c=o.ScopedContextProvider;t.useRadioContext=n,t.useRadioScopedContext=l,t.useRadioProviderContext=s,t.RadioContextProvider=i,t.RadioScopedContextProvider=c},42076:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(57870),o=a(19652),n=a(51609),l=o.createStoreContext.call(void 0,[r.CollectionContextProvider],[r.CollectionScopedContextProvider]),s=l.useContext,i=l.useScopedContext,c=l.useProviderContext,u=l.ContextProvider,d=l.ScopedContextProvider,v=n.createContext.call(void 0,void 0),p=n.createContext.call(void 0,void 0);t.useCompositeContext=s,t.useCompositeScopedContext=i,t.useCompositeProviderContext=c,t.CompositeContextProvider=u,t.CompositeScopedContextProvider=d,t.CompositeItemContext=v,t.CompositeRowContext=p},89930:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(54871),o=a(99366),n=a(44448),l=a(87636),s=a(80987),i=a(28148),c=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(a(45698));function u(e){const t=r.useTagContext.call(void 0);return e=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},e),{tag:void 0!==e.tag?e.tag:t}),o.useCompositeStoreOptions.call(void 0,e)}function d(e,t,a){return s.useUpdateEffect.call(void 0,t,[a.tag]),l.useStoreProps.call(void 0,e,a,"value","setValue"),l.useStoreProps.call(void 0,e,a,"selectedValue","setSelectedValue"),l.useStoreProps.call(void 0,e,a,"resetValueOnHide"),l.useStoreProps.call(void 0,e,a,"resetValueOnSelect"),Object.assign(o.useCompositeStoreProps.call(void 0,n.usePopoverStoreProps.call(void 0,e,t,a),t,a),{tag:a.tag})}t.useComboboxStoreOptions=u,t.useComboboxStoreProps=d,t.useComboboxStore=function(e={}){e=u(e);const[t,a]=l.useStore.call(void 0,c.createComboboxStore,e);return d(t,a,e)}},21236:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(57870),o=a(19652),n=a(80987),l=a(28148),s=a(48959),i=a(51609),c=o.createHook.call(void 0,(function(e){var t=e,{store:a,shouldRegisterItem:o=!0,getItem:c=s.identity,element:u}=t,d=l.__objRest.call(void 0,t,["store","shouldRegisterItem","getItem","element"]);const v=r.useCollectionContext.call(void 0);a=a||v;const p=n.useId.call(void 0,d.id),m=i.useRef.call(void 0,u);return i.useEffect.call(void 0,(()=>{const e=m.current;if(!p)return;if(!e)return;if(!o)return;const t=c({id:p,element:e});return null==a?void 0:a.renderItem(t)}),[p,o,c,a]),d=l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},d),{ref:n.useMergeRefs.call(void 0,m,d.ref)}),s.removeUndefinedValues.call(void 0,d)})),u=o.forwardRef.call(void 0,(function(e){const t=c(e);return o.createElement.call(void 0,"div",t)}));t.useCollectionItem=c,t.CollectionItem=u},68842:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(80987),o=a(48959),n=a(8766),l=a(51609),s=a(10790),i=l.createContext.call(void 0,{});t.useNestedDialogs=function(e){const t=l.useContext.call(void 0,i),[a,c]=l.useState.call(void 0,[]),u=l.useCallback.call(void 0,(e=>{var a;return c((t=>[...t,e])),o.chain.call(void 0,null==(a=t.add)?void 0:a.call(t,e),(()=>{c((t=>t.filter((t=>t!==e))))}))}),[t]);r.useSafeLayoutEffect.call(void 0,(()=>n.sync.call(void 0,e,["open","contentElement"],(a=>{var r;if(a.open&&a.contentElement)return null==(r=t.add)?void 0:r.call(t,e)}))),[e,t]);const d=l.useMemo.call(void 0,(()=>({store:e,add:u})),[e,u]);return{wrapElement:l.useCallback.call(void 0,(e=>s.jsx.call(void 0,i.Provider,{value:d,children:e})),[d]),nestedDialogs:a}}},16299:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(19652).createStoreContext.call(void 0),o=r.useContext,n=r.useScopedContext,l=r.useProviderContext,s=r.ContextProvider,i=r.ScopedContextProvider;t.useDisclosureContext=o,t.useDisclosureScopedContext=n,t.useDisclosureProviderContext=l,t.DisclosureContextProvider=s,t.DisclosureScopedContextProvider=i},91605:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(77328),o=a(51609);t.usePreviousMouseDownRef=function(e){const t=o.useRef.call(void 0);return o.useEffect.call(void 0,(()=>{if(!e)return void(t.current=null);return r.addGlobalEventListener.call(void 0,"mousedown",(e=>{t.current=e.target}),!0)}),[e]),t}},60762:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(70419),o=a(53944),n=a(19652),l=a(80987),s=a(28148),i=a(51609),c=a(10790),u=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=s.__objRest.call(void 0,t,["store"]);const u=o.useDialogScopedContext.call(void 0);a=a||u;const d=n.onClick,v=l.useEvent.call(void 0,(e=>{null==d||d(e),e.defaultPrevented||null==a||a.hide()})),p=i.useMemo.call(void 0,(()=>c.jsxs.call(void 0,"svg",{"aria-label":"Dismiss popup",display:"block",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,viewBox:"0 0 16 16",height:"1em",width:"1em",children:[c.jsx.call(void 0,"line",{x1:"4",y1:"4",x2:"12",y2:"12"}),c.jsx.call(void 0,"line",{x1:"4",y1:"12",x2:"12",y2:"4"})]})),[]);return n=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{"data-dialog-dismiss":"",children:p},n),{onClick:v}),n=r.useButton.call(void 0,n)})),d=n.forwardRef.call(void 0,(function(e){const t=u(e);return n.createElement.call(void 0,"button",t)}));t.useDialogDismiss=u,t.DialogDismiss=d},7219:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(28148),o=a(48959),n=a(51609);function l(e){return!!e&&(!!n.isValidElement.call(void 0,e)&&("ref"in e.props||"ref"in e))}t.setRef=function(e,t){"function"==typeof e?e(t):e&&(e.current=t)},t.isValidElementWithRef=l,t.getRefProperty=function(e){return l(e)?r.__spreadValues.call(void 0,{},e.props).ref||e.ref:null},t.mergeProps=function(e,t){const a=r.__spreadValues.call(void 0,{},e);for(const n in t){if(!o.hasOwnProperty.call(void 0,t,n))continue;if("className"===n){const r="className";a[r]=e[r]?`${e[r]} ${t[r]}`:t[r];continue}if("style"===n){const o="style";a[o]=e[o]?r.__spreadValues.call(void 0,r.__spreadValues.call(void 0,{},e[o]),t[o]):t[o];continue}const l=t[n];if("function"==typeof l&&n.startsWith("on")){const t=e[n];if("function"==typeof t){a[n]=(...e)=>{l(...e),t(...e)};continue}}a[n]=l}return a}},33043:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(26327),o=a(49464),n=a(99471);function l(e){return n.setAttribute.call(void 0,e,"aria-hidden","true")}t.hideElementFromAccessibilityTree=l,t.disableAccessibilityTreeOutside=function(e,t){const a=[],n=t.map((e=>null==e?void 0:e.id));return o.walkTreeOutside.call(void 0,e,t,(e=>{r.isBackdrop.call(void 0,e,...n)||a.unshift(l(e))})),()=>{for(const e of a)e()}}},29842:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(87121),o=a(19652),n=a(80987),l=a(28148),s=a(92725),i=a(77328),c=a(48959),u=a(32314),d=a(51609);function v(e){if(!e.isTrusted)return!1;const t=e.currentTarget;return"Enter"===e.key?s.isButton.call(void 0,t)||"SUMMARY"===t.tagName||"A"===t.tagName:" "===e.key&&(s.isButton.call(void 0,t)||"SUMMARY"===t.tagName||"INPUT"===t.tagName||"SELECT"===t.tagName)}var p=Symbol("command"),m=o.createHook.call(void 0,(function(e){var t=e,{clickOnEnter:a=!0,clickOnSpace:o=!0}=t,m=l.__objRest.call(void 0,t,["clickOnEnter","clickOnSpace"]);const h=d.useRef.call(void 0,null),[f,g]=d.useState.call(void 0,!1);d.useEffect.call(void 0,(()=>{h.current&&g(s.isButton.call(void 0,h.current))}),[]);const[w,b]=d.useState.call(void 0,!1),y=d.useRef.call(void 0,!1),x=c.disabledFromProps.call(void 0,m),[_,k]=n.useMetadataProps.call(void 0,m,p,!0),E=m.onKeyDown,C=n.useEvent.call(void 0,(e=>{null==E||E(e);const t=e.currentTarget;if(e.defaultPrevented)return;if(_)return;if(x)return;if(!i.isSelfTarget.call(void 0,e))return;if(s.isTextField.call(void 0,t))return;if(t.isContentEditable)return;const r=a&&"Enter"===e.key,n=o&&" "===e.key,c="Enter"===e.key&&!a,d=" "===e.key&&!o;if(c||d)e.preventDefault();else if(r||n){const a=v(e);if(r){if(!a){e.preventDefault();const a=e,{view:r}=a,o=l.__objRest.call(void 0,a,["view"]),n=()=>i.fireClickEvent.call(void 0,t,o);u.isFirefox.call(void 0)?i.queueBeforeEvent.call(void 0,t,"keyup",n):queueMicrotask(n)}}else n&&(y.current=!0,a||(e.preventDefault(),b(!0)))}})),j=m.onKeyUp,A=n.useEvent.call(void 0,(e=>{if(null==j||j(e),e.defaultPrevented)return;if(_)return;if(x)return;if(e.metaKey)return;const t=o&&" "===e.key;if(y.current&&t&&(y.current=!1,!v(e))){e.preventDefault(),b(!1);const t=e.currentTarget,a=e,{view:r}=a,o=l.__objRest.call(void 0,a,["view"]);queueMicrotask((()=>i.fireClickEvent.call(void 0,t,o)))}}));return m=l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,l.__spreadValues.call(void 0,{"data-active":w||void 0,type:f?"button":void 0},k),m),{ref:n.useMergeRefs.call(void 0,h,m.ref),onKeyDown:C,onKeyUp:A}),m=r.useFocusable.call(void 0,m)})),h=o.forwardRef.call(void 0,(function(e){const t=m(e);return o.createElement.call(void 0,"button",t)}));t.useCommand=m,t.Command=h},57870:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(19652).createStoreContext.call(void 0),o=r.useContext,n=r.useScopedContext,l=r.useProviderContext,s=r.ContextProvider,i=r.ScopedContextProvider;t.useCollectionContext=o,t.useCollectionScopedContext=n,t.useCollectionProviderContext=l,t.CollectionContextProvider=s,t.CollectionScopedContextProvider=i},12204:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(85325),o=a(77723),n=a(12707),l=a(38980),s=a(87636),i=a(80987),c=a(28148),u=a(51609),d=a(10790);t.DialogBackdrop=function({store:e,backdrop:t,alwaysVisible:a,hidden:v}){const p=u.useRef.call(void 0,null),m=l.useDisclosureStore.call(void 0,{disclosure:e}),h=s.useStoreState.call(void 0,e,"contentElement");u.useEffect.call(void 0,(()=>{const e=p.current,t=h;e&&t&&(e.style.zIndex=getComputedStyle(t).zIndex)}),[h]),i.useSafeLayoutEffect.call(void 0,(()=>{const e=null==h?void 0:h.id;if(!e)return;const t=p.current;return t?r.markAncestor.call(void 0,t,e):void 0}),[h]);const f=o.useDisclosureContent.call(void 0,{ref:p,store:m,role:"presentation","data-backdrop":(null==h?void 0:h.id)||"",alwaysVisible:a,hidden:null!=v?v:void 0,style:{position:"fixed",top:0,right:0,bottom:0,left:0}});if(!t)return null;if(u.isValidElement.call(void 0,t))return d.jsx.call(void 0,n.Role,c.__spreadProps.call(void 0,c.__spreadValues.call(void 0,{},f),{render:t}));const g="boolean"!=typeof t?t:"div";return d.jsx.call(void 0,n.Role,c.__spreadProps.call(void 0,c.__spreadValues.call(void 0,{},f),{render:d.jsx.call(void 0,g,{})}))}},49190:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(56203),o=a(53944),n=a(19652),l=a(28148),s=a(92725),i=a(48959),c=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const c=o.useDialogProviderContext.call(void 0);a=a||c,i.invariant.call(void 0,a,!1);const u=a.useState("contentElement");return n=l.__spreadValues.call(void 0,{"aria-haspopup":s.getPopupRole.call(void 0,u,"dialog")},n),n=r.useDisclosure.call(void 0,l.__spreadValues.call(void 0,{store:a},n))})),u=n.forwardRef.call(void 0,(function(e){const t=c(e);return n.createElement.call(void 0,"button",t)}));t.useDialogDisclosure=c,t.DialogDisclosure=u},50864:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(85171),o=a(19652),n=a(80987),l=a(28148),s=a(48959),i=a(51609),c=o.createHook.call(void 0,(function(e){const t=i.useContext.call(void 0,r.GroupLabelContext),a=n.useId.call(void 0,e.id);return n.useSafeLayoutEffect.call(void 0,(()=>(null==t||t(a),()=>null==t?void 0:t(void 0))),[t,a]),e=l.__spreadValues.call(void 0,{id:a,"aria-hidden":!0},e),s.removeUndefinedValues.call(void 0,e)})),u=o.forwardRef.call(void 0,(function(e){const t=c(e);return o.createElement.call(void 0,"div",t)}));t.useGroupLabel=c,t.GroupLabel=u},48427:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(42076),o=a(19652),n=a(51609),l=o.createStoreContext.call(void 0,[r.CompositeContextProvider],[r.CompositeScopedContextProvider]),s=l.useContext,i=l.useScopedContext,c=l.useProviderContext,u=l.ContextProvider,d=l.ScopedContextProvider,v=n.createContext.call(void 0,void 0);t.useMenubarContext=s,t.useMenubarScopedContext=i,t.useMenubarProviderContext=c,t.MenubarContextProvider=u,t.MenubarScopedContextProvider=d,t.MenuItemCheckedContext=v},59190:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(50864),o=a(19652),n=a(28148),l=o.createHook.call(void 0,(function(e){var t=e,{store:a}=t,o=n.__objRest.call(void 0,t,["store"]);return o=r.useGroupLabel.call(void 0,o)})),s=o.forwardRef.call(void 0,(function(e){const t=l(e);return o.createElement.call(void 0,"div",t)}));t.useCompositeGroupLabel=l,t.CompositeGroupLabel=s},35174:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(63215),o=a(19652),n=a(80987),l=a(28148),s=a(51609),i=a(10790),c=o.createHook.call(void 0,(function(e){const t=s.useRef.call(void 0,null),a=s.useContext.call(void 0,r.HeadingContext)||1,o=`h${a}`,c=n.useTagName.call(void 0,t,o),u=s.useMemo.call(void 0,(()=>!!c&&/^h\d$/.test(c)),[c]);return e=l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{render:i.jsx.call(void 0,o,{}),role:u?void 0:"heading","aria-level":u?void 0:a},e),{ref:n.useMergeRefs.call(void 0,t,e.ref)})})),u=o.forwardRef.call(void 0,(function(e){const t=c(e);return o.createElement.call(void 0,"h1",t)}));t.useHeading=c,t.Heading=u},58058:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(99992),o=a(19652),n=o.createHook.call(void 0,(function(e){return e=r.useDialogDescription.call(void 0,e)})),l=o.forwardRef.call(void 0,(function(e){const t=n(e);return o.createElement.call(void 0,"p",t)}));t.usePopoverDescription=n,t.PopoverDescription=l},67804:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(51609).createContext.call(void 0,!1);t.CheckboxCheckedContext=r},9229:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(40227),o=a(42076),n=a(87121),l=a(19652),s=a(80987),i=a(28148),c=a(11790),u=a(92725),d=a(77328),v=a(60877),p=a(48959),m=a(51609),h=a(10790);function f(e,t,a){return s.useEvent.call(void 0,(o=>{var n;if(null==t||t(o),o.defaultPrevented)return;if(o.isPropagationStopped())return;if(!d.isSelfTarget.call(void 0,o))return;if(function(e){return"Shift"===e.key||"Control"===e.key||"Alt"===e.key||"Meta"===e.key}(o))return;if(function(e){const t=e.target;return!(t&&!u.isTextField.call(void 0,t)||1!==e.key.length||e.ctrlKey||e.metaKey)}(o))return;const l=e.getState(),s=null==(n=r.getEnabledItem.call(void 0,e,l.activeId))?void 0:n.element;if(!s)return;const c=o,{view:v}=c,p=i.__objRest.call(void 0,c,["view"]);s!==(null==a?void 0:a.current)&&s.focus(),d.fireKeyboardEvent.call(void 0,s,o.type,p)||o.preventDefault(),o.currentTarget.contains(s)&&o.stopPropagation()}))}var g=l.createHook.call(void 0,(function(e){var t=e,{store:a,composite:l=!0,focusOnMove:g=l,moveOnKeyPress:w=!0}=t,b=i.__objRest.call(void 0,t,["store","composite","focusOnMove","moveOnKeyPress"]);const y=o.useCompositeProviderContext.call(void 0);a=a||y,p.invariant.call(void 0,a,!1);const x=m.useRef.call(void 0,null),_=m.useRef.call(void 0,null),k=function(e){const[t,a]=m.useState.call(void 0,!1),o=m.useCallback.call(void 0,(()=>a(!0)),[]),n=e.useState((t=>r.getEnabledItem.call(void 0,e,t.activeId)));return m.useEffect.call(void 0,(()=>{const e=null==n?void 0:n.element;t&&e&&(a(!1),e.focus({preventScroll:!0}))}),[n,t]),o}(a),E=a.useState("moves"),[,C]=s.useTransactionState.call(void 0,l?a.setBaseElement:null);m.useEffect.call(void 0,(()=>{var e;if(!a)return;if(!E)return;if(!l)return;if(!g)return;const{activeId:t}=a.getState(),o=null==(e=r.getEnabledItem.call(void 0,a,t))?void 0:e.element;o&&v.focusIntoView.call(void 0,o)}),[a,E,l,g]),s.useSafeLayoutEffect.call(void 0,(()=>{if(!a)return;if(!E)return;if(!l)return;const{baseElement:e,activeId:t}=a.getState();if(!(null===t))return;if(!e)return;const r=_.current;_.current=null,r&&d.fireBlurEvent.call(void 0,r,{relatedTarget:e}),v.hasFocus.call(void 0,e)||e.focus()}),[a,E,l]);const j=a.useState("activeId"),A=a.useState("virtualFocus");s.useSafeLayoutEffect.call(void 0,(()=>{var e;if(!a)return;if(!l)return;if(!A)return;const t=_.current;if(_.current=null,!t)return;const o=(null==(e=r.getEnabledItem.call(void 0,a,j))?void 0:e.element)||u.getActiveElement.call(void 0,t);o!==t&&d.fireBlurEvent.call(void 0,t,{relatedTarget:o})}),[a,j,A,l]);const S=f(a,b.onKeyDownCapture,_),P=f(a,b.onKeyUpCapture,_),R=b.onFocusCapture,M=s.useEvent.call(void 0,(e=>{if(null==R||R(e),e.defaultPrevented)return;if(!a)return;const{virtualFocus:t}=a.getState();if(!t)return;const o=e.relatedTarget,n=r.silentlyFocused.call(void 0,e.currentTarget);d.isSelfTarget.call(void 0,e)&&n&&(e.stopPropagation(),_.current=o)})),V=b.onFocus,z=s.useEvent.call(void 0,(e=>{if(null==V||V(e),e.defaultPrevented)return;if(!l)return;if(!a)return;const{relatedTarget:t}=e,{virtualFocus:o}=a.getState();o?d.isSelfTarget.call(void 0,e)&&!r.isItem.call(void 0,a,t)&&queueMicrotask(k):d.isSelfTarget.call(void 0,e)&&a.setActiveId(null)})),H=b.onBlurCapture,L=s.useEvent.call(void 0,(e=>{var t;if(null==H||H(e),e.defaultPrevented)return;if(!a)return;const{virtualFocus:o,activeId:n}=a.getState();if(!o)return;const l=null==(t=r.getEnabledItem.call(void 0,a,n))?void 0:t.element,s=e.relatedTarget,i=r.isItem.call(void 0,a,s),c=_.current;if(_.current=null,d.isSelfTarget.call(void 0,e)&&i)s===l?c&&c!==s&&d.fireBlurEvent.call(void 0,c,e):l?d.fireBlurEvent.call(void 0,l,e):c&&d.fireBlurEvent.call(void 0,c,e),e.stopPropagation();else{!r.isItem.call(void 0,a,e.target)&&l&&d.fireBlurEvent.call(void 0,l,e)}})),O=b.onKeyDown,N=s.useBooleanEvent.call(void 0,w),I=s.useEvent.call(void 0,(e=>{var t;if(null==O||O(e),e.defaultPrevented)return;if(!a)return;if(!d.isSelfTarget.call(void 0,e))return;const{orientation:o,renderedItems:n,activeId:l}=a.getState(),s=r.getEnabledItem.call(void 0,a,l);if(null==(t=null==s?void 0:s.element)?void 0:t.isConnected)return;const i="horizontal"!==o,v="vertical"!==o,p=n.some((e=>!!e.rowId));if(("ArrowLeft"===e.key||"ArrowRight"===e.key||"Home"===e.key||"End"===e.key)&&u.isTextField.call(void 0,e.currentTarget))return;const m={ArrowUp:(p||i)&&(()=>{if(p){const e=function(e){return r.findFirstEnabledItem.call(void 0,c.flatten2DArray.call(void 0,c.reverseArray.call(void 0,r.groupItemsByRows.call(void 0,e))))}(n);return null==e?void 0:e.id}return null==a?void 0:a.last()}),ArrowRight:(p||v)&&a.first,ArrowDown:(p||i)&&a.first,ArrowLeft:(p||v)&&a.last,Home:a.first,End:a.last,PageUp:a.first,PageDown:a.last},h=m[e.key];if(h){const t=h();if(void 0!==t){if(!N(e))return;e.preventDefault(),a.move(t)}}}));b=s.useWrapElement.call(void 0,b,(e=>h.jsx.call(void 0,o.CompositeContextProvider,{value:a,children:e})),[a]);const B=a.useState((e=>{var t;if(a&&l&&e.virtualFocus)return null==(t=r.getEnabledItem.call(void 0,a,e.activeId))?void 0:t.id}));b=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{"aria-activedescendant":B},b),{ref:s.useMergeRefs.call(void 0,x,C,b.ref),onKeyDownCapture:S,onKeyUpCapture:P,onFocusCapture:M,onFocus:z,onBlurCapture:L,onKeyDown:I});const T=a.useState((e=>l&&(e.virtualFocus||null===e.activeId)));return b=n.useFocusable.call(void 0,i.__spreadValues.call(void 0,{focusable:T},b))})),w=l.forwardRef.call(void 0,(function(e){const t=g(e);return l.createElement.call(void 0,"div",t)}));t.useComposite=g,t.Composite=w},25275:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(35973),o=a(66485),n=a(19652),l=a(28148),s=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const s=o.useToolbarContext.call(void 0);return a=a||s,n=r.useCompositeItem.call(void 0,l.__spreadValues.call(void 0,{store:a},n))})),i=n.memo.call(void 0,n.forwardRef.call(void 0,(function(e){const t=s(e);return n.createElement.call(void 0,"button",t)})));t.useToolbarItem=s,t.ToolbarItem=i},63215:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(51609).createContext.call(void 0,0);t.HeadingContext=r},7168:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(48427),o=a(42076),n=a(80231),l=a(19652),s=a(51609),i=l.createStoreContext.call(void 0,[o.CompositeContextProvider,n.HovercardContextProvider],[o.CompositeScopedContextProvider,n.HovercardScopedContextProvider]),c=i.useContext,u=i.useScopedContext,d=i.useProviderContext,v=i.ContextProvider,p=i.ScopedContextProvider,m=r.useMenubarContext,h=r.useMenubarScopedContext,f=r.useMenubarProviderContext,g=r.MenubarContextProvider,w=r.MenubarScopedContextProvider,b=s.createContext.call(void 0,void 0);t.useMenuContext=c,t.useMenuScopedContext=u,t.useMenuProviderContext=d,t.MenuContextProvider=v,t.MenuScopedContextProvider=p,t.useMenuBarContext=m,t.useMenuBarScopedContext=h,t.useMenuBarProviderContext=f,t.MenuBarContextProvider=g,t.MenuBarScopedContextProvider=w,t.MenuItemCheckedContext=b},54871:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(42076),o=a(19652),n=a(51609),l=n.createContext.call(void 0,null),s=n.createContext.call(void 0,null),i=o.createStoreContext.call(void 0,[r.CompositeContextProvider],[r.CompositeScopedContextProvider]),c=i.useContext,u=i.useScopedContext,d=i.useProviderContext,v=i.ContextProvider,p=i.ScopedContextProvider;t.TagValueContext=l,t.TagRemoveIdContext=s,t.useTagContext=c,t.useTagScopedContext=u,t.useTagProviderContext=d,t.TagContextProvider=v,t.TagScopedContextProvider=p},89169:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(80987),o=a(92725),n=a(51609),l=a(75795);t.useRootDialog=function({attribute:e,contentId:t,contentElement:a,enabled:s}){const[i,c]=r.useForceUpdate.call(void 0),u=n.useCallback.call(void 0,(()=>{if(!s)return!1;if(!a)return!1;const{body:r}=o.getDocument.call(void 0,a),n=r.getAttribute(e);return!n||n===t}),[i,s,a,e,t]);return n.useEffect.call(void 0,(()=>{if(!s)return;if(!t)return;if(!a)return;const{body:r}=o.getDocument.call(void 0,a);if(u())return r.setAttribute(e,t),()=>r.removeAttribute(e);const n=new MutationObserver((()=>l.flushSync.call(void 0,c)));return n.observe(r,{attributeFilter:[e]}),()=>n.disconnect()}),[i,s,t,a,u,e]),u}},80231:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(77018),o=a(19652).createStoreContext.call(void 0,[r.PopoverContextProvider],[r.PopoverScopedContextProvider]),n=o.useContext,l=o.useScopedContext,s=o.useProviderContext,i=o.ContextProvider,c=o.ScopedContextProvider;t.useHovercardContext=n,t.useHovercardScopedContext=l,t.useHovercardProviderContext=s,t.HovercardContextProvider=i,t.HovercardScopedContextProvider=c},61150:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(42076),o=a(19652),n=a(80987),l=a(28148),s=a(92725),i=a(60877),c=a(48959),u=a(51609);function d(e){const t=e.relatedTarget;return(null==t?void 0:t.nodeType)===Node.ELEMENT_NODE?t:null}var v=Symbol("composite-hover");var p=o.createHook.call(void 0,(function(e){var t=e,{store:a,focusOnHover:o=!0,blurOnHoverEnd:p=!!o}=t,m=l.__objRest.call(void 0,t,["store","focusOnHover","blurOnHoverEnd"]);const h=r.useCompositeContext.call(void 0);a=a||h,c.invariant.call(void 0,a,!1);const f=n.useIsMouseMoving.call(void 0),g=m.onMouseMove,w=n.useBooleanEvent.call(void 0,o),b=n.useEvent.call(void 0,(e=>{if(null==g||g(e),!e.defaultPrevented&&f()&&w(e)){if(!i.hasFocusWithin.call(void 0,e.currentTarget)){const e=null==a?void 0:a.getState().baseElement;e&&!i.hasFocus.call(void 0,e)&&e.focus()}null==a||a.setActiveId(e.currentTarget.id)}})),y=m.onMouseLeave,x=n.useBooleanEvent.call(void 0,p),_=n.useEvent.call(void 0,(e=>{var t;null==y||y(e),e.defaultPrevented||f()&&(function(e){const t=d(e);return!!t&&s.contains.call(void 0,e.currentTarget,t)}(e)||function(e){let t=d(e);if(!t)return!1;do{if(c.hasOwnProperty.call(void 0,t,v)&&t[v])return!0;t=t.parentElement}while(t);return!1}(e)||w(e)&&x(e)&&(null==a||a.setActiveId(null),null==(t=null==a?void 0:a.getState().baseElement)||t.focus()))})),k=u.useCallback.call(void 0,(e=>{e&&(e[v]=!0)}),[]);return m=l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},m),{ref:n.useMergeRefs.call(void 0,k,m.ref),onMouseMove:b,onMouseLeave:_}),c.removeUndefinedValues.call(void 0,m)})),m=o.memo.call(void 0,o.forwardRef.call(void 0,(function(e){const t=p(e);return o.createElement.call(void 0,"div",t)})));t.useCompositeHover=p,t.CompositeHover=m},87121:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(73579),o=a(19652),n=a(80987),l=a(28148),s=a(92725),i=a(77328),c=a(60877),u=a(48959),d=a(32314),v=a(51609),p=d.isSafari.call(void 0),m=["text","search","url","tel","email","password","number","date","month","week","time","datetime","datetime-local"],h=Symbol("safariFocusAncestor");function f(e,t){e&&(e[h]=t)}function g(e){return!("input"!==e.tagName.toLowerCase()||!e.type)&&("radio"===e.type||"checkbox"===e.type)}function w(e,t,a,r,o){return e?t?a&&!r?-1:void 0:a?o:o||0:o}function b(e,t){return n.useEvent.call(void 0,(a=>{null==e||e(a),a.defaultPrevented||t&&(a.stopPropagation(),a.preventDefault())}))}var y=!0;function x(e){const t=e.target;t&&"hasAttribute"in t&&(t.hasAttribute("data-focus-visible")||(y=!1))}function _(e){e.metaKey||e.ctrlKey||e.altKey||(y=!0)}var k=o.createHook.call(void 0,(function(e){var t=e,{focusable:a=!0,accessibleWhenDisabled:o,autoFocus:d,onFocusVisible:h}=t,k=l.__objRest.call(void 0,t,["focusable","accessibleWhenDisabled","autoFocus","onFocusVisible"]);const E=v.useRef.call(void 0,null);v.useEffect.call(void 0,(()=>{a&&(i.addGlobalEventListener.call(void 0,"mousedown",x,!0),i.addGlobalEventListener.call(void 0,"keydown",_,!0))}),[a]),p&&v.useEffect.call(void 0,(()=>{if(!a)return;const e=E.current;if(!e)return;if(!g(e))return;const t=function(e){return"labels"in e?e.labels:null}(e);if(!t)return;const r=()=>queueMicrotask((()=>e.focus()));for(const e of t)e.addEventListener("mouseup",r);return()=>{for(const e of t)e.removeEventListener("mouseup",r)}}),[a]);const C=a&&u.disabledFromProps.call(void 0,k),j=!!C&&!o,[A,S]=v.useState.call(void 0,!1);v.useEffect.call(void 0,(()=>{a&&j&&A&&S(!1)}),[a,j,A]),v.useEffect.call(void 0,(()=>{if(!a)return;if(!A)return;const e=E.current;if(!e)return;if("undefined"==typeof IntersectionObserver)return;const t=new IntersectionObserver((()=>{c.isFocusable.call(void 0,e)||S(!1)}));return t.observe(e),()=>t.disconnect()}),[a,A]);const P=b(k.onKeyPressCapture,C),R=b(k.onMouseDownCapture,C),M=b(k.onClickCapture,C),V=k.onMouseDown,z=n.useEvent.call(void 0,(e=>{if(null==V||V(e),e.defaultPrevented)return;if(!a)return;const t=e.currentTarget;if(!p)return;if(i.isPortalEvent.call(void 0,e))return;if(!s.isButton.call(void 0,t)&&!g(t))return;let r=!1;const o=()=>{r=!0};t.addEventListener("focusin",o,{capture:!0,once:!0});const n=c.getClosestFocusable.call(void 0,t.parentElement);f(n,!0),i.queueBeforeEvent.call(void 0,t,"mouseup",(()=>{t.removeEventListener("focusin",o,!0),f(n,!1),r||c.focusIfNeeded.call(void 0,t)}))})),H=(e,t)=>{if(t&&(e.currentTarget=t),!a)return;const r=e.currentTarget;r&&c.hasFocus.call(void 0,r)&&(null==h||h(e),e.defaultPrevented||(r.dataset.focusVisible="true",S(!0)))},L=k.onKeyDownCapture,O=n.useEvent.call(void 0,(e=>{if(null==L||L(e),e.defaultPrevented)return;if(!a)return;if(A)return;if(e.metaKey)return;if(e.altKey)return;if(e.ctrlKey)return;if(!i.isSelfTarget.call(void 0,e))return;const t=e.currentTarget;i.queueBeforeEvent.call(void 0,t,"focusout",(()=>H(e,t)))})),N=k.onFocusCapture,I=n.useEvent.call(void 0,(e=>{if(null==N||N(e),e.defaultPrevented)return;if(!a)return;if(!i.isSelfTarget.call(void 0,e))return void S(!1);const t=e.currentTarget,r=()=>H(e,t);y||function(e){const{tagName:t,readOnly:a,type:r}=e;return"TEXTAREA"===t&&!a||("SELECT"===t&&!a||("INPUT"!==t||a?!!e.isContentEditable||!("combobox"!==e.getAttribute("role")||!e.dataset.name):m.includes(r)))}(e.target)?i.queueBeforeEvent.call(void 0,e.target,"focusout",r):S(!1)})),B=k.onBlur,T=n.useEvent.call(void 0,(e=>{null==B||B(e),a&&i.isFocusEventOutside.call(void 0,e)&&S(!1)})),F=v.useContext.call(void 0,r.FocusableContext),D=n.useEvent.call(void 0,(e=>{a&&d&&e&&F&&queueMicrotask((()=>{c.hasFocus.call(void 0,e)||c.isFocusable.call(void 0,e)&&e.focus()}))})),G=n.useTagName.call(void 0,E),U=a&&function(e){return!e||"button"===e||"summary"===e||"input"===e||"select"===e||"textarea"===e||"a"===e}(G),q=a&&function(e){return!e||"button"===e||"input"===e||"select"===e||"textarea"===e}(G),Z=k.style,W=v.useMemo.call(void 0,(()=>j?l.__spreadValues.call(void 0,{pointerEvents:"none"},Z):Z),[j,Z]);return k=l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{"data-focus-visible":a&&A||void 0,"data-autofocus":d||void 0,"aria-disabled":C||void 0},k),{ref:n.useMergeRefs.call(void 0,E,D,k.ref),style:W,tabIndex:w(a,j,U,q,k.tabIndex),disabled:!(!q||!j)||void 0,contentEditable:C?void 0:k.contentEditable,onKeyPressCapture:P,onClickCapture:M,onMouseDownCapture:R,onMouseDown:z,onKeyDownCapture:O,onFocusCapture:I,onBlur:T}),u.removeUndefinedValues.call(void 0,k)})),E=o.forwardRef.call(void 0,(function(e){const t=k(e);return o.createElement.call(void 0,"div",t)}));t.isSafariFocusAncestor=function(e){return!!e&&!!e[h]},t.useFocusable=k,t.Focusable=E},80987:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(7219),o=a(28148),n=a(92725),l=a(77328),s=a(51609),i=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(s),c=o.__spreadValues.call(void 0,{},i),u=c.useId,d=c.useDeferredValue,v=c.useInsertionEffect,p=n.canUseDOM?s.useLayoutEffect:s.useEffect;function m(e){const[t]=s.useState.call(void 0,e);return t}function h(e){const t=s.useRef.call(void 0,(()=>{throw new Error("Cannot call an event handler while rendering.")}));return v?v((()=>{t.current=e})):t.current=e,s.useCallback.call(void 0,((...e)=>{var a;return null==(a=t.current)?void 0:a.call(t,...e)}),[])}function f(...e){return s.useMemo.call(void 0,(()=>{if(e.some(Boolean))return t=>{for(const a of e)r.setRef.call(void 0,a,t)}}),e)}var g=!1,w=0,b=0;function y(e){(function(e){const t=e.movementX||e.screenX-w,a=e.movementY||e.screenY-b;return w=e.screenX,b=e.screenY,t||a||!1})(e)&&(g=!0)}function x(){g=!1}t.useSafeLayoutEffect=p,t.useInitialValue=m,t.useLazyValue=function(e){const t=s.useRef.call(void 0);return void 0===t.current&&(t.current=e()),t.current},t.useLiveRef=function(e){const t=s.useRef.call(void 0,e);return p((()=>{t.current=e})),t},t.usePreviousValue=function(e){const[t,a]=s.useState.call(void 0,e);return e!==t&&a(e),t},t.useEvent=h,t.useTransactionState=function(e){const[t,a]=s.useState.call(void 0,null);return p((()=>{if(null==t)return;if(!e)return;let a=null;return e((e=>(a=e,t))),()=>{e(a)}}),[t,e]),[t,a]},t.useMergeRefs=f,t.useId=function(e){if(u){const t=u();return e||t}const[t,a]=s.useState.call(void 0,e);return p((()=>{if(e||t)return;const r=Math.random().toString(36).slice(2,8);a(`id-${r}`)}),[e,t]),e||t},t.useDeferredValue=function(e){if(d)return d(e);const[t,a]=s.useState.call(void 0,e);return s.useEffect.call(void 0,(()=>{const t=requestAnimationFrame((()=>a(e)));return()=>cancelAnimationFrame(t)}),[e]),t},t.useTagName=function(e,t){const a=e=>{if("string"==typeof e)return e},[r,o]=s.useState.call(void 0,(()=>a(t)));return p((()=>{const r=e&&"current"in e?e.current:e;o((null==r?void 0:r.tagName.toLowerCase())||a(t))}),[e,t]),r},t.useAttribute=function(e,t,a){const r=m(a),[o,n]=s.useState.call(void 0,r);return s.useEffect.call(void 0,(()=>{const a=e&&"current"in e?e.current:e;if(!a)return;const o=()=>{const e=a.getAttribute(t);n(null==e?r:e)},l=new MutationObserver(o);return l.observe(a,{attributeFilter:[t]}),o(),()=>l.disconnect()}),[e,t,r]),o},t.useUpdateEffect=function(e,t){const a=s.useRef.call(void 0,!1);s.useEffect.call(void 0,(()=>{if(a.current)return e();a.current=!0}),t),s.useEffect.call(void 0,(()=>()=>{a.current=!1}),[])},t.useUpdateLayoutEffect=function(e,t){const a=s.useRef.call(void 0,!1);p((()=>{if(a.current)return e();a.current=!0}),t),p((()=>()=>{a.current=!1}),[])},t.useForceUpdate=function(){return s.useReducer.call(void 0,(()=>[]),[])},t.useBooleanEvent=function(e){return h("function"==typeof e?e:()=>e)},t.useWrapElement=function(e,t,a=[]){const r=s.useCallback.call(void 0,(a=>(e.wrapElement&&(a=e.wrapElement(a)),t(a))),[...a,e.wrapElement]);return o.__spreadProps.call(void 0,o.__spreadValues.call(void 0,{},e),{wrapElement:r})},t.usePortalRef=function(e=!1,t){const[a,r]=s.useState.call(void 0,null);return{portalRef:f(r,t),portalNode:a,domReady:!e||a}},t.useMetadataProps=function(e,t,a){const r=e.onLoadedMetadataCapture,n=s.useMemo.call(void 0,(()=>Object.assign((()=>{}),o.__spreadProps.call(void 0,o.__spreadValues.call(void 0,{},r),{[t]:a}))),[r,t,a]);return[null==r?void 0:r[t],{onLoadedMetadataCapture:n}]},t.useIsMouseMoving=function(){return s.useEffect.call(void 0,(()=>{l.addGlobalEventListener.call(void 0,"mousemove",y,!0),l.addGlobalEventListener.call(void 0,"mousedown",x,!0),l.addGlobalEventListener.call(void 0,"mouseup",x,!0),l.addGlobalEventListener.call(void 0,"keydown",x,!0),l.addGlobalEventListener.call(void 0,"scroll",x,!0)}),[]),h((()=>g))}},32146:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(63215),o=a(51609),n=a(10790);t.HeadingLevel=function({level:e,children:t}){const a=o.useContext.call(void 0,r.HeadingContext),l=Math.max(Math.min(e||a+1,6),1);return n.jsx.call(void 0,r.HeadingContext.Provider,{value:l,children:t})}},68725:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getEventPoint=function(e){return[e.clientX,e.clientY]},t.isPointInPolygon=function(e,t){const[a,r]=e;let o=!1;for(let e=t.length,n=0,l=e-1;n=u&&r0&&(r===u?r>d&&(o=!o):o=!o)}}else if(ii&&r<=u){if(0===v)return!0;v<0&&(r===u?r=c&&a<=s||a>=s&&a<=c))return!0}return o},t.getElementPolygon=function(e,t){const a=e.getBoundingClientRect(),{top:r,right:o,bottom:n,left:l}=a,[s,i]=function(e,t){const{top:a,right:r,bottom:o,left:n}=t,[l,s]=e;return[lr?"right":null,so?"bottom":null]}(t,a),c=[t];return s?("top"!==i&&c.push(["left"===s?l:o,r]),c.push(["left"===s?o:l,r]),c.push(["left"===s?o:l,n]),"bottom"!==i&&c.push(["left"===s?l:o,n])):"top"===i?(c.push([l,r]),c.push([l,n]),c.push([o,n]),c.push([o,r])):(c.push([l,n]),c.push([l,r]),c.push([o,r]),c.push([o,n])),c}},46503:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(77673),o=a(72707),n=a(19652),l=a(28148),s=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const s=o.useSelectContext.call(void 0);return a=a||s,n=r.usePopoverDisclosureArrow.call(void 0,l.__spreadValues.call(void 0,{store:a},n))})),i=n.forwardRef.call(void 0,(function(e){const t=s(e);return n.createElement.call(void 0,"span",t)}));t.useSelectArrow=s,t.SelectArrow=i},92526:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(7168),o=a(48427),n=a(61150),l=a(35973),s=a(19652),i=a(87636),c=a(80987),u=a(28148),d=a(92725),v=a(77328),p=a(60877),m=a(48959);var h=s.createHook.call(void 0,(function(e){var t=e,{store:a,hideOnClick:s=!0,preventScrollOnKeyDown:h=!0,focusOnHover:f,blurOnHoverEnd:g}=t,w=u.__objRest.call(void 0,t,["store","hideOnClick","preventScrollOnKeyDown","focusOnHover","blurOnHoverEnd"]);const b=r.useMenuScopedContext.call(void 0,!0),y=o.useMenubarScopedContext.call(void 0);a=a||b||y,m.invariant.call(void 0,a,!1);const x=w.onClick,_=c.useBooleanEvent.call(void 0,s),k="hideAll"in a?a.hideAll:void 0,E=!!k,C=c.useEvent.call(void 0,(e=>{if(null==x||x(e),e.defaultPrevented)return;if(v.isDownloading.call(void 0,e))return;if(v.isOpeningInNewTab.call(void 0,e))return;if(!k)return;"menu"!==e.currentTarget.getAttribute("aria-haspopup")&&_(e)&&k()})),j=i.useStoreState.call(void 0,a,(e=>"contentElement"in e?e.contentElement:null)),A=d.getPopupItemRole.call(void 0,j,"menuitem");return w=u.__spreadProps.call(void 0,u.__spreadValues.call(void 0,{role:A},w),{onClick:C}),w=l.useCompositeItem.call(void 0,u.__spreadValues.call(void 0,{store:a,preventScrollOnKeyDown:h},w)),w=n.useCompositeHover.call(void 0,u.__spreadProps.call(void 0,u.__spreadValues.call(void 0,{store:a},w),{focusOnHover(e){if(!a)return!1;if(!("function"==typeof f?f(e):null==f||f))return!1;const{baseElement:t,items:r}=a.getState();return E?(e.currentTarget.hasAttribute("aria-expanded")&&e.currentTarget.focus(),!0):!!function(e,t,a){var r;if(!e)return!1;if(p.hasFocusWithin.call(void 0,e))return!0;const o=null==t?void 0:t.find((e=>{var t;return e.element!==a&&"true"===(null==(t=e.element)?void 0:t.getAttribute("aria-expanded"))})),n=null==(r=null==o?void 0:o.element)?void 0:r.getAttribute("aria-controls");if(!n)return!1;const l=d.getDocument.call(void 0,e).getElementById(n);return!(!l||!p.hasFocusWithin.call(void 0,l)&&!l.querySelector("[role=menuitem][aria-expanded=true]"))}(t,r,e.currentTarget)&&(e.currentTarget.focus(),!0)},blurOnHoverEnd:e=>"function"==typeof g?g(e):null!=g?g:E})),w})),f=s.memo.call(void 0,s.forwardRef.call(void 0,(function(e){const t=h(e);return s.createElement.call(void 0,"div",t)})));t.useMenuItem=h,t.MenuItem=f},33356:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(22510),o=a(19652),n=o.createHook.call(void 0,(function(e){return e=r.useDialogHeading.call(void 0,e)})),l=o.forwardRef.call(void 0,(function(e){const t=n(e);return o.createElement.call(void 0,"h1",t)}));t.usePopoverHeading=n,t.PopoverHeading=l},54844:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(3578),o=a(19652),n=a(28148),l=o.createHook.call(void 0,(function(e){return e=n.__spreadProps.call(void 0,n.__spreadValues.call(void 0,{"data-focus-trap":"",tabIndex:0,"aria-hidden":!0},e),{style:n.__spreadValues.call(void 0,{position:"fixed",top:0,left:0},e.style)}),e=r.useVisuallyHidden.call(void 0,e)})),s=o.forwardRef.call(void 0,(function(e){const t=l(e);return o.createElement.call(void 0,"span",t)}));t.useFocusTrap=l,t.FocusTrap=s},40227:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(92725),o={id:null};var n=Symbol("FOCUS_SILENTLY");t.flipItems=function(e,t,a=!1){const r=e.findIndex((e=>e.id===t));return[...e.slice(r+1),...a?[o]:[],...e.slice(0,r)]},t.findFirstEnabledItem=function(e,t){return e.find((e=>t?!e.disabled&&e.id!==t:!e.disabled))},t.getEnabledItem=function(e,t){return t&&e.item(t)||null},t.groupItemsByRows=function(e){const t=[];for(const a of e){const e=t.find((e=>{var t;return(null==(t=e[0])?void 0:t.rowId)===a.rowId}));e?e.push(a):t.push([a])}return t},t.selectTextField=function(e,t=!1){if(r.isTextField.call(void 0,e))e.setSelectionRange(t?e.value.length:0,e.value.length);else if(e.isContentEditable){const a=r.getDocument.call(void 0,e).getSelection();null==a||a.selectAllChildren(e),t&&(null==a||a.collapseToEnd())}},t.focusSilently=function(e){e[n]=!0,e.focus({preventScroll:!0})},t.silentlyFocused=function(e){const t=e[n];return delete e[n],t},t.isItem=function(e,t,a){if(!t)return!1;if(t===a)return!1;const r=e.item(t.id);return!!r&&(!a||r.element!==a)}},35973:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(21236),o=a(29842),n=a(40227),l=a(42076),s=a(19652),i=a(87636),c=a(80987),u=a(28148),d=a(92725),v=a(77328),p=a(48959),m=a(32314),h=a(51609),f=a(10790);function g(e,t=!1){const{top:a}=e.getBoundingClientRect();return t?a+e.clientHeight:a}function w(e,t,a,r=!1){var o;if(!t)return;if(!a)return;const{renderedItems:l}=t.getState(),s=d.getScrollingElement.call(void 0,e);if(!s)return;const i=function(e,t=!1){const a=e.clientHeight,{top:r}=e.getBoundingClientRect(),o=1.5*Math.max(.875*a,a-40),n=t?a-o+r:o+r;return"HTML"===e.tagName?n+e.scrollTop:n}(s,r);let c,u;for(let e=0;e=0){void 0!==u&&us||(e&&(null==S?void 0:S.baseElement)&&S.baseElement===e.baseElement?S.id:void 0),baseElement:e=>(null==e?void 0:e.baseElement)||void 0,isActiveItem:e=>!!e&&e.activeId===j,ariaSetSize:e=>null!=_?_:e&&(null==S?void 0:S.ariaSetSize)&&S.baseElement===e.baseElement?S.ariaSetSize:void 0,ariaPosInSet(e){if(null!=k)return k;if(!e)return;if(!(null==S?void 0:S.ariaPosInSet))return;if(S.baseElement!==e.baseElement)return;const t=e.renderedItems.filter((e=>e.rowId===R));return S.ariaPosInSet+t.findIndex((e=>e.id===j))},isTabbable(e){if(!(null==e?void 0:e.renderedItems.length))return!0;if(e.virtualFocus)return!1;if(y)return!0;if(null===e.activeId)return!1;const t=null==a?void 0:a.item(e.activeId);return!!(null==t?void 0:t.disabled)||(!(null==t?void 0:t.element)||e.activeId===j)}}),O=h.useCallback.call(void 0,(e=>{var t;const a=u.__spreadProps.call(void 0,u.__spreadValues.call(void 0,{},e),{id:j||e.id,rowId:R,disabled:!!P,children:null==(t=e.element)?void 0:t.textContent});return x?x(a):a}),[j,R,P,x]),N=E.onFocus,I=h.useRef.call(void 0,!1),B=c.useEvent.call(void 0,(e=>{if(null==N||N(e),e.defaultPrevented)return;if(v.isPortalEvent.call(void 0,e))return;if(!j)return;if(!a)return;if(function(e,t){return!v.isSelfTarget.call(void 0,e)&&n.isItem.call(void 0,t,e.target)}(e,a))return;const{virtualFocus:t,baseElement:r}=a.getState();if(a.setActiveId(j),d.isTextbox.call(void 0,e.currentTarget)&&n.selectTextField.call(void 0,e.currentTarget),!t)return;if(!v.isSelfTarget.call(void 0,e))return;if(o=e.currentTarget,d.isTextbox.call(void 0,o)||"INPUT"===o.tagName&&!d.isButton.call(void 0,o))return;var o;if(!(null==r?void 0:r.isConnected))return;m.isSafari.call(void 0)&&e.currentTarget.hasAttribute("data-autofocus")&&e.currentTarget.scrollIntoView({block:"nearest",inline:"nearest"}),I.current=!0;e.relatedTarget===r||n.isItem.call(void 0,a,e.relatedTarget)?n.focusSilently.call(void 0,r):r.focus()})),T=E.onBlurCapture,F=c.useEvent.call(void 0,(e=>{if(null==T||T(e),e.defaultPrevented)return;const t=null==a?void 0:a.getState();(null==t?void 0:t.virtualFocus)&&I.current&&(I.current=!1,e.preventDefault(),e.stopPropagation())})),D=E.onKeyDown,G=c.useBooleanEvent.call(void 0,g),U=c.useBooleanEvent.call(void 0,b),q=c.useEvent.call(void 0,(e=>{if(null==D||D(e),e.defaultPrevented)return;if(!v.isSelfTarget.call(void 0,e))return;if(!a)return;const{currentTarget:t}=e,r=a.getState(),o=a.item(j),n=!!(null==o?void 0:o.rowId),l="horizontal"!==r.orientation,s="vertical"!==r.orientation,i=()=>!!n||(!!s||(!r.baseElement||!d.isTextField.call(void 0,r.baseElement))),c={ArrowUp:(n||l)&&a.up,ArrowRight:(n||s)&&a.next,ArrowDown:(n||l)&&a.down,ArrowLeft:(n||s)&&a.previous,Home:()=>{if(i())return!n||e.ctrlKey?null==a?void 0:a.first():null==a?void 0:a.previous(-1)},End:()=>{if(i())return!n||e.ctrlKey?null==a?void 0:a.last():null==a?void 0:a.next(-1)},PageUp:()=>w(t,a,null==a?void 0:a.up,!0),PageDown:()=>w(t,a,null==a?void 0:a.down)}[e.key];if(c){if(d.isTextbox.call(void 0,t)){const a=d.getTextboxSelection.call(void 0,t),r=s&&"ArrowLeft"===e.key,o=s&&"ArrowRight"===e.key,n=l&&"ArrowUp"===e.key,i=l&&"ArrowDown"===e.key;if(o||i){const{length:e}=d.getTextboxValue.call(void 0,t);if(a.end!==e)return}else if((r||n)&&0!==a.start)return}const r=c();if(G(e)||void 0!==r){if(!U(e))return;e.preventDefault(),a.move(r)}}})),Z=h.useMemo.call(void 0,(()=>({id:j,baseElement:M})),[j,M]);return E=c.useWrapElement.call(void 0,E,(e=>f.jsx.call(void 0,l.CompositeItemContext.Provider,{value:Z,children:e})),[Z]),E=u.__spreadProps.call(void 0,u.__spreadValues.call(void 0,{id:j,"data-active-item":V||void 0},E),{ref:c.useMergeRefs.call(void 0,A,E.ref),tabIndex:L?E.tabIndex:-1,onFocus:B,onBlurCapture:F,onKeyDown:q}),E=o.useCommand.call(void 0,E),E=r.useCollectionItem.call(void 0,u.__spreadProps.call(void 0,u.__spreadValues.call(void 0,{store:a},E),{getItem:O,shouldRegisterItem:!!j&&E.shouldRegisterItem})),p.removeUndefinedValues.call(void 0,u.__spreadProps.call(void 0,u.__spreadValues.call(void 0,{},E),{"aria-setsize":z,"aria-posinset":H}))})),y=s.memo.call(void 0,s.forwardRef.call(void 0,(function(e){const t=b(e);return s.createElement.call(void 0,"button",t)})));t.useCompositeItem=b,t.CompositeItem=y},99103:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(96475),o=a(77723),n=a(19652),l=a(80987),s=a(28148),i=a(48959),c=a(51609),u=a(10790),d=n.createHook.call(void 0,(function(e){var t=e,{store:a,alwaysVisible:n}=t,d=s.__objRest.call(void 0,t,["store","alwaysVisible"]);const v=r.useComboboxScopedContext.call(void 0,!0),p=r.useComboboxContext.call(void 0),m=!!(a=a||p)&&a===v;i.invariant.call(void 0,a,!1);const h=c.useRef.call(void 0,null),f=l.useId.call(void 0,d.id),g=a.useState("mounted"),w=o.isHidden.call(void 0,g,d.hidden,n),b=w?s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{},d.style),{display:"none"}):d.style,y=a.useState((e=>Array.isArray(e.selectedValue))),x=l.useAttribute.call(void 0,h,"role",d.role),_=("listbox"===x||"tree"===x||"grid"===x)&&y||void 0,[k,E]=c.useState.call(void 0,!1),C=a.useState("contentElement");l.useSafeLayoutEffect.call(void 0,(()=>{if(!g)return;const e=h.current;if(!e)return;if(C!==e)return;const t=()=>{E(!!e.querySelector("[role='listbox']"))},a=new MutationObserver(t);return a.observe(e,{subtree:!0,childList:!0,attributeFilter:["role"]}),t(),()=>a.disconnect()}),[g,C]),k||(d=s.__spreadValues.call(void 0,{role:"listbox","aria-multiselectable":_},d)),d=l.useWrapElement.call(void 0,d,(e=>u.jsx.call(void 0,r.ComboboxScopedContextProvider,{value:a,children:u.jsx.call(void 0,r.ComboboxListRoleContext.Provider,{value:x,children:e})})),[a,x]);const j=!f||v&&m?null:a.setContentElement;return d=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{id:f,hidden:w},d),{ref:l.useMergeRefs.call(void 0,j,h,d.ref),style:b}),i.removeUndefinedValues.call(void 0,d)})),v=n.forwardRef.call(void 0,(function(e){const t=d(e);return n.createElement.call(void 0,"div",t)}));t.useComboboxList=d,t.ComboboxList=v},2627:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(74525),o=a(21236),n=a(19652),l=a(80987),s=a(28148),i=a(92725),c=a(48959),u=a(51609);function d(e,t,a){return e.useState((e=>e.items.find((e=>e.type===a&&e.name===t))))}var v=n.createHook.call(void 0,(function(e){var t=e,{store:a,name:n,getItem:v,touchOnBlur:p=!0}=t,m=s.__objRest.call(void 0,t,["store","name","getItem","touchOnBlur"]);const h=r.useFormContext.call(void 0);a=a||h,c.invariant.call(void 0,a,!1);const f=`${n}`,g=l.useId.call(void 0,m.id),w=u.useRef.call(void 0,null);a.useValidate((async()=>{const e=function(e,t){const a=e.current;return a?a.name===t?a:a.form?a.form.elements.namedItem(t):i.getDocument.call(void 0,a).getElementsByName(t)[0]:null}(w,f);e&&(await Promise.resolve(),"validity"in e&&!e.validity.valid&&(null==a||a.setError(f,e.validationMessage)))}));const b=u.useCallback.call(void 0,(e=>{const t=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{},e),{id:g||e.id,name:f,type:"field"});return v?v(t):t}),[g,f,v]),y=m.onBlur,x=l.useBooleanEvent.call(void 0,p),_=l.useEvent.call(void 0,(e=>{null==y||y(e),e.defaultPrevented||x(e)&&(null==a||a.setFieldTouched(f,!0))})),k=d(a,f,"label"),E=d(a,f,"error"),C=d(a,f,"description"),j=c.cx.call(void 0,null==E?void 0:E.id,null==C?void 0:C.id,m["aria-describedby"]),A=a.useState((()=>!!(null==a?void 0:a.getError(f))&&a.getFieldTouched(f)));return m=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{id:g,"aria-labelledby":null==k?void 0:k.id,"aria-invalid":A},m),{"aria-describedby":j||void 0,ref:l.useMergeRefs.call(void 0,w,m.ref),onBlur:_}),m=o.useCollectionItem.call(void 0,s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{store:a},m),{name:f,getItem:b}))})),p=n.memo.call(void 0,n.forwardRef.call(void 0,(function(e){const t=v(e);return n.createElement.call(void 0,"input",t)})));t.useFormControl=v,t.FormControl=p},86005:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(52954),o=a(42076),n=a(19652),l=a(28148),s=a(48959),i=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const i=o.useCompositeContext.call(void 0);a=a||i,s.invariant.call(void 0,a,!1);const c=a.useState((e=>"horizontal"===e.orientation?"vertical":"horizontal"));return n=r.useSeparator.call(void 0,l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},n),{orientation:c}))})),c=n.forwardRef.call(void 0,(function(e){const t=i(e);return n.createElement.call(void 0,"hr",t)}));t.useCompositeSeparator=i,t.CompositeSeparator=c},39490:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(33356),o=a(19652),n=o.createHook.call(void 0,(function(e){return e=r.usePopoverHeading.call(void 0,e)})),l=o.forwardRef.call(void 0,(function(e){const t=n(e);return o.createElement.call(void 0,"h1",t)}));t.useHovercardHeading=n,t.HovercardHeading=l},44448:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(95691),o=a(87636),n=a(80987),l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(a(69414));function s(e,t,a){return n.useUpdateEffect.call(void 0,t,[a.popover]),o.useStoreProps.call(void 0,e,a,"placement"),r.useDialogStoreProps.call(void 0,e,t,a)}t.usePopoverStoreProps=s,t.usePopoverStore=function(e={}){const[t,a]=o.useStore.call(void 0,l.createPopoverStore,e);return s(t,a,e)}},46423:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(44448),o=a(87636),n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(a(58702));function l(e,t,a){return o.useStoreProps.call(void 0,e,a,"timeout"),o.useStoreProps.call(void 0,e,a,"showTimeout"),o.useStoreProps.call(void 0,e,a,"hideTimeout"),r.usePopoverStoreProps.call(void 0,e,t,a)}t.useHovercardStoreProps=l,t.useHovercardStore=function(e={}){const[t,a]=o.useStore.call(void 0,n.createHovercardStore,e);return l(t,a,e)}},77864:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(58058),o=a(19652),n=o.createHook.call(void 0,(function(e){return e=r.usePopoverDescription.call(void 0,e)})),l=o.forwardRef.call(void 0,(function(e){const t=n(e);return o.createElement.call(void 0,"p",t)}));t.useHovercardDescription=n,t.HovercardDescription=l},51500:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(77018),o=a(19652),n=a(80987),l=a(28148),s=o.createHook.call(void 0,(function(e){var t=e,{store:a}=t,o=l.__objRest.call(void 0,t,["store"]);const s=r.usePopoverProviderContext.call(void 0);return a=a||s,o=l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},o),{ref:n.useMergeRefs.call(void 0,null==a?void 0:a.setAnchorElement,o.ref)})})),i=o.forwardRef.call(void 0,(function(e){const t=s(e);return o.createElement.call(void 0,"div",t)}));t.usePopoverAnchor=s,t.PopoverAnchor=i},72707:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(42076),o=a(77018),n=a(19652),l=a(51609),s=n.createStoreContext.call(void 0,[o.PopoverContextProvider,r.CompositeContextProvider],[o.PopoverScopedContextProvider,r.CompositeScopedContextProvider]),i=s.useContext,c=s.useScopedContext,u=s.useProviderContext,d=s.ContextProvider,v=s.ScopedContextProvider,p=l.createContext.call(void 0,!1),m=l.createContext.call(void 0,null);t.useSelectContext=i,t.useSelectScopedContext=c,t.useSelectProviderContext=u,t.SelectContextProvider=d,t.SelectScopedContextProvider=v,t.SelectItemCheckedContext=p,t.SelectHeadingContext=m},85826:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(19652).createStoreContext.call(void 0),o=r.useContext,n=r.useScopedContext,l=r.useProviderContext,s=r.ContextProvider,i=r.ScopedContextProvider;t.useCheckboxContext=o,t.useCheckboxScopedContext=n,t.useCheckboxProviderContext=l,t.CheckboxContextProvider=s,t.CheckboxScopedContextProvider=i},32087:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(40227),o=a(42076),n=a(19652),l=a(87636),s=a(80987),i=a(28148),c=a(92725),u=a(77328),d=a(60877),v=a(48959),p=a(51609);function m(e){d.restoreFocusIn.call(void 0,e);const t=d.getFirstTabbableIn.call(void 0,e);return d.disableFocusIn.call(void 0,e),t}var h=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=i.__objRest.call(void 0,t,["store"]);const h=o.useCompositeContext.call(void 0);a=a||h;const f=p.useRef.call(void 0,null),g=p.useRef.call(void 0,!1),w=(e=!1)=>{const t=f.current;if(!t)return;d.restoreFocusIn.call(void 0,t);const a=d.getFirstTabbableIn.call(void 0,t);a?(g.current=!0,queueMicrotask((()=>{a.focus(),(c.isTextField.call(void 0,a)||a.isContentEditable)&&r.selectTextField.call(void 0,a,e)}))):d.disableFocusIn.call(void 0,t)},b=l.useStoreState.call(void 0,a,"renderedItems");p.useEffect.call(void 0,(()=>{const e=f.current;if(!e)return;!g.current&&(null==b?void 0:b.length)&&d.disableFocusIn.call(void 0,e)}),[b]);const y=n.onFocus,x=s.useEvent.call(void 0,(e=>{if(null==y||y(e),e.defaultPrevented)return;if(!a)return;const t=g.current;if(u.isSelfTarget.call(void 0,e)){g.current=!1;const{baseElement:e}=a.getState(),t="[data-composite-container]",r=null==e?void 0:e.querySelectorAll(t);if(r)for(const e of r)d.disableFocusIn.call(void 0,e)}else t||(g.current=!0,d.restoreFocusIn.call(void 0,e.currentTarget),null==a||a.setState("moves",0))})),_=n.onBlur,k=s.useEvent.call(void 0,(e=>{null==_||_(e),e.defaultPrevented||u.isFocusEventOutside.call(void 0,e)&&(()=>{const e=f.current;e&&(g.current=!1,d.disableFocusIn.call(void 0,e))})()})),E=n.onKeyDown,C=s.useEvent.call(void 0,(e=>{if(null==E||E(e),e.defaultPrevented)return;if(e.altKey)return;if(e.ctrlKey)return;if(e.metaKey)return;if(e.shiftKey)return;const t=e.currentTarget;if(u.isSelfTarget.call(void 0,e)){if(1===e.key.length&&" "!==e.key){const a=m(t);if(!a)return;(c.isTextField.call(void 0,a)||a.isContentEditable)&&(e.stopPropagation(),w())}else if("Delete"===e.key||"Backspace"===e.key){const e=m(t);if(!e)return;if(c.isTextField.call(void 0,e)||e.isContentEditable){w();const e=()=>queueMicrotask((()=>t.focus()));t.addEventListener("input",e,{once:!0})}}}else if("Escape"===e.key)queueMicrotask((()=>t.focus()));else if("Enter"===e.key){const a=e.target;("INPUT"===a.tagName&&!c.isButton.call(void 0,a)||"TEXTAREA"===a.tagName||a.isContentEditable)&&(e.preventDefault(),queueMicrotask((()=>t.focus())))}})),j=n.onClick,A=s.useEvent.call(void 0,(e=>{null==j||j(e),e.defaultPrevented||u.isSelfTarget.call(void 0,e)&&!e.detail&&w(!0)}));return n=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{"data-composite-container":""},n),{ref:s.useMergeRefs.call(void 0,f,n.ref),onFocus:x,onBlur:k,onKeyDown:C,onClick:A}),v.removeUndefinedValues.call(void 0,n)})),f=n.forwardRef.call(void 0,(function(e){const t=h(e);return n.createElement.call(void 0,"div",t)}));t.useCompositeContainer=h,t.CompositeContainer=f},74581:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(80231),o=a(19652).createStoreContext.call(void 0,[r.HovercardContextProvider],[r.HovercardScopedContextProvider]),n=o.useContext,l=o.useScopedContext,s=o.useProviderContext,i=o.ContextProvider,c=o.ScopedContextProvider;t.useTooltipContext=n,t.useTooltipScopedContext=l,t.useTooltipProviderContext=s,t.TooltipContextProvider=i,t.TooltipScopedContextProvider=c},99366:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(9355),o=a(87636),n=a(80987),l=a(28148),s=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(a(68702));function i(e){const t=n.useId.call(void 0,e.id);return l.__spreadValues.call(void 0,{id:t},e)}function c(e,t,a){return e=r.useCollectionStoreProps.call(void 0,e,t,a),o.useStoreProps.call(void 0,e,a,"activeId","setActiveId"),o.useStoreProps.call(void 0,e,a,"includesBaseElement"),o.useStoreProps.call(void 0,e,a,"virtualFocus"),o.useStoreProps.call(void 0,e,a,"orientation"),o.useStoreProps.call(void 0,e,a,"rtl"),o.useStoreProps.call(void 0,e,a,"focusLoop"),o.useStoreProps.call(void 0,e,a,"focusWrap"),o.useStoreProps.call(void 0,e,a,"focusShift"),e}t.useCompositeStoreOptions=i,t.useCompositeStoreProps=c,t.useCompositeStore=function(e={}){e=i(e);const[t,a]=o.useStore.call(void 0,s.createCompositeStore,e);return c(t,a,e)}},91520:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(69349),o=a(19652),n=a(28148),l=o.createHook.call(void 0,(function(e){var t=e,{store:a}=t,o=n.__objRest.call(void 0,t,["store"]);return o=r.useGroup.call(void 0,o)})),s=o.forwardRef.call(void 0,(function(e){const t=l(e);return o.createElement.call(void 0,"div",t)}));t.useCompositeGroup=l,t.CompositeGroup=s},50858:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(48427),o=a(32413),n=a(10790);t.MenubarProvider=function(e={}){const t=o.useMenubarStore.call(void 0,e);return n.jsx.call(void 0,r.MenubarContextProvider,{value:t,children:e.children})}},79066:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(45081),o=a(77018),n=a(19652),l=a(80987),s=a(28148),i=a(92725),c=a(48959),u=a(51609),d=a(10790),v=30,p=v/2,m={top:`rotate(180 ${p} ${p})`,right:`rotate(-90 ${p} ${p})`,bottom:`rotate(0 ${p} ${p})`,left:`rotate(90 ${p} ${p})`};var h=n.createHook.call(void 0,(function(e){var t=e,{store:a,size:n=v}=t,p=s.__objRest.call(void 0,t,["store","size"]);const h=o.usePopoverContext.call(void 0);a=a||h,c.invariant.call(void 0,a,!1);const f=a.useState((e=>e.currentPlacement.split("-")[0])),g=function(e){const[t,a]=u.useState.call(void 0),r=e.useState("contentElement");return l.useSafeLayoutEffect.call(void 0,(()=>{if(!r)return;const e=i.getWindow.call(void 0,r).getComputedStyle(r);a(e)}),[r]),t}(a),w=(null==g?void 0:g.getPropertyValue("background-color"))||"none",b=(null==g?void 0:g.getPropertyValue(`border-${f}-color`))||"none",y=(null==g?void 0:g.getPropertyValue(`border-${f}-width`))||"0px",x=2*Number.parseInt(y)*(v/n),_=m[f],k=u.useMemo.call(void 0,(()=>d.jsx.call(void 0,"svg",{display:"block",viewBox:"0 0 30 30",children:d.jsxs.call(void 0,"g",{transform:_,children:[d.jsx.call(void 0,"path",{fill:"none",d:r.POPOVER_ARROW_PATH}),d.jsx.call(void 0,"path",{stroke:"none",d:r.POPOVER_ARROW_PATH})]})})),[_]);return p=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{children:k,"aria-hidden":!0},p),{ref:l.useMergeRefs.call(void 0,a.setArrowElement,p.ref),style:s.__spreadValues.call(void 0,{position:"absolute",fontSize:n,width:"1em",height:"1em",pointerEvents:"none",fill:w,stroke:b,strokeWidth:x},p.style)}),c.removeUndefinedValues.call(void 0,p)})),f=n.forwardRef.call(void 0,(function(e){const t=h(e);return n.createElement.call(void 0,"div",t)}));t.usePopoverArrow=h,t.PopoverArrow=f},96475:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(42076),o=a(77018),n=a(19652),l=a(51609),s=l.createContext.call(void 0,void 0),i=n.createStoreContext.call(void 0,[o.PopoverContextProvider,r.CompositeContextProvider],[o.PopoverScopedContextProvider,r.CompositeScopedContextProvider]),c=i.useContext,u=i.useScopedContext,d=i.useProviderContext,v=i.ContextProvider,p=i.ScopedContextProvider,m=l.createContext.call(void 0,void 0),h=l.createContext.call(void 0,!1);t.ComboboxListRoleContext=s,t.useComboboxContext=c,t.useComboboxScopedContext=u,t.useComboboxProviderContext=d,t.ComboboxContextProvider=v,t.ComboboxScopedContextProvider=p,t.ComboboxItemValueContext=m,t.ComboboxItemCheckedContext=h},95691:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(38980),o=a(87636),n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(a(8448));function l(e,t,a){return r.useDisclosureStoreProps.call(void 0,e,t,a)}t.useDialogStoreProps=l,t.useDialogStore=function(e={}){const[t,a]=o.useStore.call(void 0,n.createDialogStore,e);return l(t,a,e)}},73579:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(51609).createContext.call(void 0,!0);t.FocusableContext=r},41196:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(7168),o=a(68666),n=a(9229),l=a(77723),s=a(19652),i=a(87636),c=a(80987),u=a(28148),d=a(48959),v=a(51609),p=a(10790);var m=s.createHook.call(void 0,(function(e){var t=e,{store:a,alwaysVisible:s,composite:m}=t,h=u.__objRest.call(void 0,t,["store","alwaysVisible","composite"]);const f=r.useMenuProviderContext.call(void 0);a=a||f,d.invariant.call(void 0,a,!1);const g=a.parent,w=a.menubar,b=!!g,y=c.useId.call(void 0,h.id),x=h.onKeyDown,_=a.useState((e=>e.placement.split("-")[0])),k=a.useState((e=>"both"===e.orientation?void 0:e.orientation)),E="vertical"!==k,C=i.useStoreState.call(void 0,w,(e=>!!e&&"vertical"!==e.orientation)),j=c.useEvent.call(void 0,(e=>{if(null==x||x(e),!e.defaultPrevented){if(b||w&&!E){const t={ArrowRight:()=>"left"===_&&!E,ArrowLeft:()=>"right"===_&&!E,ArrowUp:()=>"bottom"===_&&E,ArrowDown:()=>"top"===_&&E}[e.key];if(null==t?void 0:t())return e.stopPropagation(),e.preventDefault(),null==a?void 0:a.hide()}if(w){const t={ArrowRight:()=>{if(C)return w.next()},ArrowLeft:()=>{if(C)return w.previous()},ArrowDown:()=>{if(!C)return w.next()},ArrowUp:()=>{if(!C)return w.previous()}}[e.key],a=null==t?void 0:t();void 0!==a&&(e.stopPropagation(),e.preventDefault(),w.move(a))}}}));h=c.useWrapElement.call(void 0,h,(e=>p.jsx.call(void 0,r.MenuScopedContextProvider,{value:a,children:e})),[a]);const A=function(e){var t=e,{store:a}=t,r=u.__objRest.call(void 0,t,["store"]);const[o,n]=v.useState.call(void 0,void 0),l=r["aria-label"],s=i.useStoreState.call(void 0,a,"disclosureElement"),c=i.useStoreState.call(void 0,a,"contentElement");return v.useEffect.call(void 0,(()=>{const e=s;e&&c&&(l||c.hasAttribute("aria-label")?n(void 0):e.id&&n(e.id))}),[l,s,c]),o}(u.__spreadValues.call(void 0,{store:a},h)),S=a.useState("mounted"),P=l.isHidden.call(void 0,S,h.hidden,s),R=P?u.__spreadProps.call(void 0,u.__spreadValues.call(void 0,{},h.style),{display:"none"}):h.style;h=u.__spreadProps.call(void 0,u.__spreadValues.call(void 0,{id:y,"aria-labelledby":A,hidden:P},h),{ref:c.useMergeRefs.call(void 0,y?a.setContentElement:null,h.ref),style:R,onKeyDown:j});const M=!!a.combobox;return(m=null!=m?m:!M)&&(h=u.__spreadValues.call(void 0,{role:"menu","aria-orientation":k},h)),h=n.useComposite.call(void 0,u.__spreadValues.call(void 0,{store:a,composite:m},h)),h=o.useCompositeTypeahead.call(void 0,u.__spreadValues.call(void 0,{store:a,typeahead:!M},h))})),h=s.forwardRef.call(void 0,(function(e){const t=m(e);return s.createElement.call(void 0,"div",t)}));t.useMenuList=m,t.MenuList=h},44110:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(99366),o=a(87636),n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(a(23902));function l(e,t,a){return r.useCompositeStoreProps.call(void 0,e,t,a)}t.useToolbarStoreProps=l,t.useToolbarStore=function(e={}){const[t,a]=o.useStore.call(void 0,n.createToolbarStore,e);return l(t,a,e)}},15892:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(42076),o=a(19652).createStoreContext.call(void 0,[r.CompositeContextProvider],[r.CompositeScopedContextProvider]),n=o.useContext,l=o.useScopedContext,s=o.useProviderContext,i=o.ContextProvider,c=o.ScopedContextProvider;t.useTabContext=n,t.useTabScopedContext=l,t.useTabProviderContext=s,t.TabContextProvider=i,t.TabScopedContextProvider=c},90041:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(64494),o=a(35973),n=a(19652),l=a(87636),s=a(80987),i=a(28148),c=a(48959),u=a(51609),d="input";var v=n.createHook.call(void 0,(function(e){var t=e,{store:a,name:n,value:v,checked:p}=t,m=i.__objRest.call(void 0,t,["store","name","value","checked"]);const h=r.useRadioContext.call(void 0);a=a||h;const f=s.useId.call(void 0,m.id),g=u.useRef.call(void 0,null),w=l.useStoreState.call(void 0,a,(e=>null!=p?p:function(e,t){if(void 0!==t)return null!=e&&null!=t?t===e:!!t}(v,null==e?void 0:e.value)));u.useEffect.call(void 0,(()=>{if(!f)return;if(!w)return;(null==a?void 0:a.getState().activeId)===f||null==a||a.setActiveId(f)}),[a,w,f]);const b=m.onChange,y=function(e,t){return"input"===e&&(!t||"radio"===t)}(s.useTagName.call(void 0,g,d),m.type),x=c.disabledFromProps.call(void 0,m),[_,k]=s.useForceUpdate.call(void 0);u.useEffect.call(void 0,(()=>{const e=g.current;e&&(y||(void 0!==w&&(e.checked=w),void 0!==n&&(e.name=n),void 0!==v&&(e.value=`${v}`)))}),[_,y,w,n,v]);const E=s.useEvent.call(void 0,(e=>{if(x)return e.preventDefault(),void e.stopPropagation();(null==a?void 0:a.getState().value)!==v&&(y||(e.currentTarget.checked=!0,k()),null==b||b(e),e.defaultPrevented||null==a||a.setValue(v))})),C=m.onClick,j=s.useEvent.call(void 0,(e=>{null==C||C(e),e.defaultPrevented||y||E(e)})),A=m.onFocus,S=s.useEvent.call(void 0,(e=>{if(null==A||A(e),e.defaultPrevented)return;if(!y)return;if(!a)return;const{moves:t,activeId:r}=a.getState();t&&(f&&r!==f||E(e))}));return m=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{id:f,role:y?void 0:"radio",type:y?"radio":void 0,"aria-checked":w},m),{ref:s.useMergeRefs.call(void 0,g,m.ref),onChange:E,onClick:j,onFocus:S}),m=o.useCompositeItem.call(void 0,i.__spreadValues.call(void 0,{store:a,clickOnEnter:!y},m)),c.removeUndefinedValues.call(void 0,i.__spreadValues.call(void 0,{name:y?n:void 0,value:y?v:void 0,checked:w},m))})),p=n.memo.call(void 0,n.forwardRef.call(void 0,(function(e){const t=v(e);return n.createElement.call(void 0,d,t)})));t.useRadio=v,t.Radio=p},32564:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(96475),o=a(72707),n=a(99366),l=a(87636),s=a(80987),i=a(28148),c=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(a(95190)),u=a(51609);function d(e,t,a){s.useUpdateEffect.call(void 0,t,[a.composite,a.combobox]),e=n.useCompositeStoreProps.call(void 0,e,t,a),l.useStoreProps.call(void 0,e,a,"selectedId","setSelectedId"),l.useStoreProps.call(void 0,e,a,"selectOnMove");const[r,o]=l.useStore.call(void 0,(()=>e.panels),{});return s.useUpdateEffect.call(void 0,o,[e,o]),Object.assign(u.useMemo.call(void 0,(()=>i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},e),{panels:r})),[e,r]),{composite:a.composite,combobox:a.combobox})}t.useTabStoreProps=d,t.useTabStore=function(e={}){const t=r.useComboboxContext.call(void 0),a=o.useSelectContext.call(void 0)||t;e=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},e),{composite:void 0!==e.composite?e.composite:a,combobox:void 0!==e.combobox?e.combobox:t});const[n,s]=l.useStore.call(void 0,c.createTabStore,e);return d(n,s,e)}},93704:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(7168),o=a(48427),n=a(96475),l=a(99366),s=a(46423),i=a(87636),c=a(80987),u=a(28148),d=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(a(81894));function v(e,t,a){return c.useUpdateEffect.call(void 0,t,[a.combobox,a.parent,a.menubar]),i.useStoreProps.call(void 0,e,a,"values","setValues"),Object.assign(s.useHovercardStoreProps.call(void 0,l.useCompositeStoreProps.call(void 0,e,t,a),t,a),{combobox:a.combobox,parent:a.parent,menubar:a.menubar})}t.useMenuStoreProps=v,t.useMenuStore=function(e={}){const t=r.useMenuContext.call(void 0),a=o.useMenubarContext.call(void 0),l=n.useComboboxProviderContext.call(void 0);e=u.__spreadProps.call(void 0,u.__spreadValues.call(void 0,{},e),{parent:void 0!==e.parent?e.parent:t,menubar:void 0!==e.menubar?e.menubar:a,combobox:void 0!==e.combobox?e.combobox:l});const[s,c]=i.useStore.call(void 0,d.createMenuStore,e);return v(s,c,e)}},32413:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(99366),o=a(87636),n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(a(49586));function l(e,t,a){return r.useCompositeStoreProps.call(void 0,e,t,a)}t.useMenubarStoreProps=l,t.useMenubarStore=function(e={}){const[t,a]=o.useStore.call(void 0,n.createMenubarStore,e);return l(t,a,e)}},67722:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(51609).createContext.call(void 0,null);t.PortalContext=r},21407:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(80231),o=a(87121),n=a(19652),l=a(80987),s=a(28148),i=a(77328),c=a(48959),u=a(51609),d=n.createHook.call(void 0,(function(e){var t=e,{store:a,showOnHover:n=!0}=t,d=s.__objRest.call(void 0,t,["store","showOnHover"]);const v=r.useHovercardProviderContext.call(void 0);a=a||v,c.invariant.call(void 0,a,!1);const p=c.disabledFromProps.call(void 0,d),m=u.useRef.call(void 0,0);u.useEffect.call(void 0,(()=>()=>window.clearTimeout(m.current)),[]),u.useEffect.call(void 0,(()=>i.addGlobalEventListener.call(void 0,"mouseleave",(e=>{if(!a)return;const{anchorElement:t}=a.getState();t&&e.target===t&&(window.clearTimeout(m.current),m.current=0)}),!0)),[a]);const h=d.onMouseMove,f=l.useBooleanEvent.call(void 0,n),g=l.useIsMouseMoving.call(void 0),w=l.useEvent.call(void 0,(e=>{if(null==h||h(e),p)return;if(!a)return;if(e.defaultPrevented)return;if(m.current)return;if(!g())return;if(!f(e))return;const t=e.currentTarget;a.setAnchorElement(t),a.setDisclosureElement(t);const{showTimeout:r,timeout:o}=a.getState(),n=()=>{m.current=0,g()&&(null==a||a.setAnchorElement(t),null==a||a.show(),queueMicrotask((()=>{null==a||a.setDisclosureElement(t)})))},l=null!=r?r:o;0===l?n():m.current=window.setTimeout(n,l)})),b=d.onClick,y=l.useEvent.call(void 0,(e=>{null==b||b(e),a&&(window.clearTimeout(m.current),m.current=0)})),x=u.useCallback.call(void 0,(e=>{if(!a)return;const{anchorElement:t}=a.getState();(null==t?void 0:t.isConnected)||a.setAnchorElement(e)}),[a]);return d=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{},d),{ref:l.useMergeRefs.call(void 0,x,d.ref),onMouseMove:w,onClick:y}),d=o.useFocusable.call(void 0,d)})),v=n.forwardRef.call(void 0,(function(e){const t=d(e);return n.createElement.call(void 0,"a",t)}));t.useHovercardAnchor=d,t.HovercardAnchor=v},8549:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(89169),o=a(99471),n=a(92725),l=a(48959),s=a(32314),i=a(51609);t.usePreventBodyScroll=function(e,t,a){const c=r.useRootDialog.call(void 0,{attribute:"data-dialog-prevent-body-scroll",contentElement:e,contentId:t,enabled:a});i.useEffect.call(void 0,(()=>{if(!c())return;if(!e)return;const t=n.getDocument.call(void 0,e),a=n.getWindow.call(void 0,e),{documentElement:r,body:i}=t,u=r.style.getPropertyValue("--scrollbar-width"),d=u?Number.parseInt(u):a.innerWidth-r.clientWidth,v=function(e){const t=e.getBoundingClientRect().left;return Math.round(t)+e.scrollLeft?"paddingLeft":"paddingRight"}(r),p=s.isApple.call(void 0)&&!s.isMac.call(void 0);return l.chain.call(void 0,o.setCSSProperty.call(void 0,r,"--scrollbar-width",`${d}px`),p?(()=>{var e,t;const{scrollX:r,scrollY:n,visualViewport:l}=a,s=null!=(e=null==l?void 0:l.offsetLeft)?e:0,c=null!=(t=null==l?void 0:l.offsetTop)?t:0,u=o.assignStyle.call(void 0,i,{position:"fixed",overflow:"hidden",top:-(n-Math.floor(c))+"px",left:-(r-Math.floor(s))+"px",right:"0",[v]:`${d}px`});return()=>{u(),a.scrollTo({left:r,top:n,behavior:"instant"})}})():o.assignStyle.call(void 0,i,{overflow:"hidden",[v]:`${d}px`}))}),[c,e])}},70663:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isFocusTrap=function(e,...t){if(!e)return!1;const a=e.getAttribute("data-focus-trap");return null!=a&&(!t.length||""!==a&&t.some((e=>a===e)))}},26621:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(87636),o=a(80987),n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(a(64054));function l(e,t,a){return o.useUpdateEffect.call(void 0,t,[a.store]),r.useStoreProps.call(void 0,e,a,"value","setValue"),e}t.useCheckboxStoreProps=l,t.useCheckboxStore=function(e={}){const[t,a]=r.useStore.call(void 0,n.createCheckboxStore,e);return l(t,a,e)}},53944:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(16299),o=a(19652),n=a(51609),l=o.createStoreContext.call(void 0,[r.DisclosureContextProvider],[r.DisclosureScopedContextProvider]),s=l.useContext,i=l.useScopedContext,c=l.useProviderContext,u=l.ContextProvider,d=l.ScopedContextProvider,v=n.createContext.call(void 0,void 0),p=n.createContext.call(void 0,void 0);t.useDialogContext=s,t.useDialogScopedContext=i,t.useDialogProviderContext=c,t.DialogContextProvider=u,t.DialogScopedContextProvider=d,t.DialogHeadingContext=v,t.DialogDescriptionContext=p},12019:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(99366),o=a(87636),n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(a(56286));function l(e,t,a){return e=r.useCompositeStoreProps.call(void 0,e,t,a),o.useStoreProps.call(void 0,e,a,"value","setValue"),e}t.useRadioStoreProps=l,t.useRadioStore=function(e={}){const[t,a]=o.useStore.call(void 0,n.createRadioStore,e);return l(t,a,e)}},66485:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(42076),o=a(19652).createStoreContext.call(void 0,[r.CompositeContextProvider],[r.CompositeScopedContextProvider]),n=o.useContext,l=o.useScopedContext,s=o.useProviderContext,i=o.ContextProvider,c=o.ScopedContextProvider;t.useToolbarContext=n,t.useToolbarScopedContext=l,t.useToolbarProviderContext=s,t.ToolbarContextProvider=i,t.ToolbarScopedContextProvider=c},95563:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(69349),o=a(19652),n=a(28148),l=o.createHook.call(void 0,(function(e){var t=e,{store:a}=t,o=n.__objRest.call(void 0,t,["store"]);return o=r.useGroup.call(void 0,o)})),s=o.forwardRef.call(void 0,(function(e){const t=l(e);return o.createElement.call(void 0,"div",t)}));t.useFormGroup=l,t.FormGroup=s},18874:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(48427),o=a(32413),n=a(9229),l=a(19652),s=a(80987),i=a(28148),c=a(10790),u=l.createHook.call(void 0,(function(e){var t=e,{store:a,composite:l=!0,orientation:u,virtualFocus:d,focusLoop:v,rtl:p}=t,m=i.__objRest.call(void 0,t,["store","composite","orientation","virtualFocus","focusLoop","rtl"]);const h=r.useMenubarProviderContext.call(void 0);a=a||h;const f=o.useMenubarStore.call(void 0,{store:a,orientation:u,virtualFocus:d,focusLoop:v,rtl:p}),g=f.useState((e=>l&&"both"!==e.orientation?e.orientation:void 0));return m=s.useWrapElement.call(void 0,m,(e=>c.jsx.call(void 0,r.MenubarScopedContextProvider,{value:f,children:e})),[f]),l&&(m=i.__spreadValues.call(void 0,{role:"menubar","aria-orientation":g},m)),m=n.useComposite.call(void 0,i.__spreadValues.call(void 0,{store:f,composite:l},m))})),d=l.forwardRef.call(void 0,(function(e){const t=u(e);return l.createElement.call(void 0,"div",t)}));t.useMenubar=u,t.Menubar=d},94818:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(92725);t.prependHiddenDismiss=function(e,t){const a=r.getDocument.call(void 0,e).createElement("button");return a.type="button",a.tabIndex=-1,a.textContent="Dismiss popup",Object.assign(a.style,{border:"0px",clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:"0px",position:"absolute",whiteSpace:"nowrap",width:"1px"}),a.addEventListener("click",t),e.prepend(a),()=>{a.removeEventListener("click",t),a.remove()}}},85325:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(26327),o=a(49464),n=a(99471),l=a(48959);function s(e="",t=!1){return`__ariakit-dialog-${t?"ancestor":"outside"}${e?`-${e}`:""}`}function i(e,t=""){return l.chain.call(void 0,n.setProperty.call(void 0,e,s(),!0),n.setProperty.call(void 0,e,s(t),!0))}function c(e,t=""){return l.chain.call(void 0,n.setProperty.call(void 0,e,s("",!0),!0),n.setProperty.call(void 0,e,s(t,!0),!0))}t.markElement=i,t.markAncestor=c,t.isElementMarked=function(e,t){if(e[s(t,!0)])return!0;const a=s(t);for(;;){if(e[a])return!0;if(!e.parentElement)return!1;e=e.parentElement}},t.markTreeOutside=function(e,t){const a=[],n=t.map((e=>null==e?void 0:e.id));return o.walkTreeOutside.call(void 0,e,t,(t=>{r.isBackdrop.call(void 0,t,...n)||a.unshift(i(t,e))}),((t,r)=>{r.hasAttribute("data-dialog")&&r.id!==e||a.unshift(c(t,e))})),()=>{for(const e of a)e()}}},53443:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(67804),o=a(19652),n=a(28148),l=a(48959),s=a(51609),i=a(10790),c=i.jsx.call(void 0,"svg",{display:"block",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,viewBox:"0 0 16 16",height:"1em",width:"1em",children:i.jsx.call(void 0,"polyline",{points:"4,8 7,12 12,4"})});var u=o.createHook.call(void 0,(function(e){var t=e,{store:a,checked:o}=t,i=n.__objRest.call(void 0,t,["store","checked"]);const u=s.useContext.call(void 0,r.CheckboxCheckedContext),d=function(e){return e.checked?e.children||c:"function"==typeof e.children?e.children:null}({checked:o=null!=o?o:u,children:i.children});return i=n.__spreadProps.call(void 0,n.__spreadValues.call(void 0,{"aria-hidden":!0},i),{children:d,style:n.__spreadValues.call(void 0,{width:"1em",height:"1em",pointerEvents:"none"},i.style)}),l.removeUndefinedValues.call(void 0,i)})),d=o.forwardRef.call(void 0,(function(e){const t=u(e);return o.createElement.call(void 0,"span",t)}));t.useCheckboxCheck=u,t.CheckboxCheck=d},82109:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(68725),o=a(39861),n=a(28293),l=a(80231),s=a(19652),i=a(80987),c=a(28148),u=a(92725),d=a(77328),v=a(60877),p=a(48959),m=a(8766),h=a(51609),f=a(10790);function g(e,t,a,r){return!!v.hasFocusWithin.call(void 0,t)||!!e&&(!!u.contains.call(void 0,t,e)||(!(!a||!u.contains.call(void 0,a,e))||!!(null==r?void 0:r.some((t=>g(e,t,a))))))}var w=h.createContext.call(void 0,null),b=s.createHook.call(void 0,(function(e){var t=e,{store:a,modal:n=!1,portal:s=!!n,hideOnEscape:v=!0,hideOnHoverOutside:b=!0,disablePointerEventsOnApproach:y=!!b}=t,x=c.__objRest.call(void 0,t,["store","modal","portal","hideOnEscape","hideOnHoverOutside","disablePointerEventsOnApproach"]);const _=l.useHovercardProviderContext.call(void 0);a=a||_,p.invariant.call(void 0,a,!1);const k=h.useRef.call(void 0,null),[E,C]=h.useState.call(void 0,[]),j=h.useRef.call(void 0,0),A=h.useRef.call(void 0,null),{portalRef:S,domReady:P}=i.usePortalRef.call(void 0,s,x.portalRef),R=i.useIsMouseMoving.call(void 0),M=!!b,V=i.useBooleanEvent.call(void 0,b),z=!!y,H=i.useBooleanEvent.call(void 0,y),L=a.useState("open"),O=a.useState("mounted");h.useEffect.call(void 0,(()=>{if(!P)return;if(!O)return;if(!M&&!z)return;const e=k.current;if(!e)return;return p.chain.call(void 0,d.addGlobalEventListener.call(void 0,"mousemove",(t=>{if(!a)return;if(!R())return;const{anchorElement:o,hideTimeout:n,timeout:l}=a.getState(),s=A.current,[i]=t.composedPath(),c=o;if(g(i,e,c,E))return A.current=i&&c&&u.contains.call(void 0,c,i)?r.getEventPoint.call(void 0,t):null,window.clearTimeout(j.current),void(j.current=0);if(!j.current){if(s){const a=r.getEventPoint.call(void 0,t),o=r.getElementPolygon.call(void 0,e,s);if(r.isPointInPolygon.call(void 0,a,o)){if(A.current=a,!H(t))return;return t.preventDefault(),void t.stopPropagation()}}V(t)&&(j.current=window.setTimeout((()=>{j.current=0,null==a||a.hide()}),null!=n?n:l))}}),!0),(()=>clearTimeout(j.current)))}),[a,R,P,O,M,z,E,H,V]),h.useEffect.call(void 0,(()=>{if(!P)return;if(!O)return;if(!z)return;const e=e=>{const t=k.current;if(!t)return;const a=A.current;if(!a)return;const o=r.getElementPolygon.call(void 0,t,a);if(r.isPointInPolygon.call(void 0,r.getEventPoint.call(void 0,e),o)){if(!H(e))return;e.preventDefault(),e.stopPropagation()}};return p.chain.call(void 0,d.addGlobalEventListener.call(void 0,"mouseenter",e,!0),d.addGlobalEventListener.call(void 0,"mouseover",e,!0),d.addGlobalEventListener.call(void 0,"mouseout",e,!0),d.addGlobalEventListener.call(void 0,"mouseleave",e,!0))}),[P,O,z,H]),h.useEffect.call(void 0,(()=>{P&&(L||null==a||a.setAutoFocusOnShow(!1))}),[a,P,L]);const N=i.useLiveRef.call(void 0,L);h.useEffect.call(void 0,(()=>{if(P)return()=>{N.current||null==a||a.setAutoFocusOnShow(!1)}}),[a,P]);const I=h.useContext.call(void 0,w);i.useSafeLayoutEffect.call(void 0,(()=>{if(n)return;if(!s)return;if(!O)return;if(!P)return;const e=k.current;return e?null==I?void 0:I(e):void 0}),[n,s,O,P]);const B=h.useCallback.call(void 0,(e=>{C((t=>[...t,e]));const t=null==I?void 0:I(e);return()=>{C((t=>t.filter((t=>t!==e)))),null==t||t()}}),[I]);x=i.useWrapElement.call(void 0,x,(e=>f.jsx.call(void 0,l.HovercardScopedContextProvider,{value:a,children:f.jsx.call(void 0,w.Provider,{value:B,children:e})})),[a,B]),x=c.__spreadProps.call(void 0,c.__spreadValues.call(void 0,{},x),{ref:i.useMergeRefs.call(void 0,k,x.ref)}),x=function(e){var t=e,{store:a}=t,r=c.__objRest.call(void 0,t,["store"]);const[o,n]=h.useState.call(void 0,!1),l=a.useState("mounted");h.useEffect.call(void 0,(()=>{l||n(!1)}),[l]);const s=r.onFocus,u=i.useEvent.call(void 0,(e=>{null==s||s(e),e.defaultPrevented||n(!0)})),d=h.useRef.call(void 0,null);return h.useEffect.call(void 0,(()=>m.sync.call(void 0,a,["anchorElement"],(e=>{d.current=e.anchorElement}))),[]),c.__spreadProps.call(void 0,c.__spreadValues.call(void 0,{autoFocusOnHide:o,finalFocus:d},r),{onFocus:u})}(c.__spreadValues.call(void 0,{store:a},x));const T=a.useState((e=>n||e.autoFocusOnShow));return x=o.usePopover.call(void 0,c.__spreadProps.call(void 0,c.__spreadValues.call(void 0,{store:a,modal:n,portal:s,autoFocusOnShow:T},x),{portalRef:S,hideOnEscape:e=>!p.isFalsyBooleanCallback.call(void 0,v,e)&&(requestAnimationFrame((()=>{requestAnimationFrame((()=>{null==a||a.hide()}))})),!0)}))})),y=n.createDialogComponent.call(void 0,s.forwardRef.call(void 0,(function(e){const t=b(e);return s.createElement.call(void 0,"div",t)})),l.useHovercardProviderContext);t.useHovercard=b,t.Hovercard=y},32816:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(68666),o=a(72707),n=a(9229),l=a(77723),s=a(19652),i=a(80987),c=a(28148),u=a(77328),d=a(48959),v=a(51609),p=a(10790),m=v.createContext.call(void 0,null),h=s.createHook.call(void 0,(function(e){var t=e,{store:a,resetOnEscape:s=!0,hideOnEnter:h=!0,focusOnMove:f=!0,composite:g,alwaysVisible:w}=t,b=c.__objRest.call(void 0,t,["store","resetOnEscape","hideOnEnter","focusOnMove","composite","alwaysVisible"]);const y=o.useSelectContext.call(void 0);a=a||y,d.invariant.call(void 0,a,!1);const x=i.useId.call(void 0,b.id),_=a.useState("value"),k=Array.isArray(_),[E,C]=v.useState.call(void 0,_),j=a.useState("mounted");v.useEffect.call(void 0,(()=>{j||C(_)}),[j,_]),s=s&&!k;const A=b.onKeyDown,S=i.useBooleanEvent.call(void 0,s),P=i.useBooleanEvent.call(void 0,h),R=i.useEvent.call(void 0,(e=>{null==A||A(e),e.defaultPrevented||("Escape"===e.key&&S(e)&&(null==a||a.setValue(E))," "!==e.key&&"Enter"!==e.key||u.isSelfTarget.call(void 0,e)&&P(e)&&(e.preventDefault(),null==a||a.hide()))})),M=v.useContext.call(void 0,o.SelectHeadingContext),V=v.useState.call(void 0),[z,H]=M||V,L=v.useMemo.call(void 0,(()=>[z,H]),[z]),[O,N]=v.useState.call(void 0,null),I=v.useContext.call(void 0,m);v.useEffect.call(void 0,(()=>{if(I)return I(a),()=>I(null)}),[I,a]),b=i.useWrapElement.call(void 0,b,(e=>p.jsx.call(void 0,o.SelectScopedContextProvider,{value:a,children:p.jsx.call(void 0,m.Provider,{value:N,children:p.jsx.call(void 0,o.SelectHeadingContext.Provider,{value:L,children:e})})})),[a,L]);const B=!!a.combobox;g=null!=g?g:!B&&O!==a;const[T,F]=i.useTransactionState.call(void 0,g?a.setListElement:null),D=i.useAttribute.call(void 0,T,"role",b.role),G=(g||("listbox"===D||"menu"===D||"tree"===D||"grid"===D))&&k||void 0,U=l.isHidden.call(void 0,j,b.hidden,w),q=U?c.__spreadProps.call(void 0,c.__spreadValues.call(void 0,{},b.style),{display:"none"}):b.style;g&&(b=c.__spreadValues.call(void 0,{role:"listbox","aria-multiselectable":G},b));const Z=a.useState((e=>{var t;return z||(null==(t=e.labelElement)?void 0:t.id)}));return b=c.__spreadProps.call(void 0,c.__spreadValues.call(void 0,{id:x,"aria-labelledby":Z,hidden:U},b),{ref:i.useMergeRefs.call(void 0,F,b.ref),style:q,onKeyDown:R}),b=n.useComposite.call(void 0,c.__spreadProps.call(void 0,c.__spreadValues.call(void 0,{store:a},b),{composite:g})),b=r.useCompositeTypeahead.call(void 0,c.__spreadValues.call(void 0,{store:a,typeahead:!B},b))})),f=s.forwardRef.call(void 0,(function(e){const t=h(e);return s.createElement.call(void 0,"div",t)}));t.useSelectList=h,t.SelectList=f},85171:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(51609).createContext.call(void 0,void 0);t.GroupLabelContext=r},3578:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(19652),o=a(28148),n=r.createHook.call(void 0,(function(e){return e=o.__spreadProps.call(void 0,o.__spreadValues.call(void 0,{},e),{style:o.__spreadValues.call(void 0,{border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:"1px"},e.style)})})),l=r.forwardRef.call(void 0,(function(e){const t=n(e);return r.createElement.call(void 0,"span",t)}));t.useVisuallyHidden=n,t.VisuallyHidden=l},49464:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(99471),o=a(92725),n=a(48959),l=["SCRIPT","STYLE"];function s(e){return`__ariakit-dialog-snapshot-${e}`}function i(e,t,a){return!l.includes(t.tagName)&&(!!function(e,t){const a=o.getDocument.call(void 0,t),r=s(e);if(!a.body[r])return!0;for(;;){if(t===a.body)return!1;if(t[r])return!0;if(!t.parentElement)return!1;t=t.parentElement}}(e,t)&&!a.some((e=>e&&o.contains.call(void 0,t,e))))}function c(e,t,a,r){for(let n of t){if(!(null==n?void 0:n.isConnected))continue;const l=t.some((e=>!!e&&(e!==n&&e.contains(n)))),s=o.getDocument.call(void 0,n),c=n;for(;n.parentElement&&n!==s.body;){if(null==r||r(n.parentElement,c),!l)for(const r of n.parentElement.children)i(e,r,t)&&a(r,c);n=n.parentElement}}}t.isValidElement=i,t.walkTreeOutside=c,t.createWalkTreeSnapshot=function(e,t){const{body:a}=o.getDocument.call(void 0,t[0]),l=[];return c(e,t,(t=>{l.push(r.setProperty.call(void 0,t,s(e),!0))})),n.chain.call(void 0,r.setProperty.call(void 0,a,s(e),!0),(()=>{for(const e of l)e()}))}},69349:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(85171),o=a(19652),n=a(80987),l=a(28148),s=a(48959),i=a(51609),c=a(10790),u=o.createHook.call(void 0,(function(e){const[t,a]=i.useState.call(void 0);return e=n.useWrapElement.call(void 0,e,(e=>c.jsx.call(void 0,r.GroupLabelContext.Provider,{value:a,children:e})),[]),e=l.__spreadValues.call(void 0,{role:"group","aria-labelledby":t},e),s.removeUndefinedValues.call(void 0,e)})),d=o.forwardRef.call(void 0,(function(e){const t=u(e);return o.createElement.call(void 0,"div",t)}));t.useGroup=u,t.Group=d},68666:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(40227),o=a(42076),n=a(19652),l=a(80987),s=a(28148),i=a(92725),c=a(77328),u=a(48959),d=a(51609),v="";function p(){v=""}function m(e,t){var a;const r=(null==(a=e.element)?void 0:a.textContent)||e.children||"value"in e&&e.value;return!!r&&u.normalizeString.call(void 0,r).trim().toLowerCase().startsWith(t.toLowerCase())}var h=n.createHook.call(void 0,(function(e){var t=e,{store:a,typeahead:n=!0}=t,h=s.__objRest.call(void 0,t,["store","typeahead"]);const f=o.useCompositeContext.call(void 0);a=a||f,u.invariant.call(void 0,a,!1);const g=h.onKeyDownCapture,w=d.useRef.call(void 0,0),b=l.useEvent.call(void 0,(e=>{if(null==g||g(e),e.defaultPrevented)return;if(!n)return;if(!a)return;if(!function(e){const t=e.target;return(!t||!i.isTextField.call(void 0,t))&&(!(" "!==e.key||!v.length)||1===e.key.length&&!e.ctrlKey&&!e.altKey&&!e.metaKey&&/^[\p{Letter}\p{Number}]$/u.test(e.key))}(e))return p();const{renderedItems:t,items:o,activeId:l,id:s}=a.getState();let u=function(e){return e.filter((e=>!e.disabled))}(o.length>t.length?o:t);const d=`[data-offscreen-id="${s}"]`,h=i.getDocument.call(void 0,e.currentTarget).querySelectorAll(d);for(const e of h){const t="true"===e.ariaDisabled||"disabled"in e&&!!e.disabled;u.push({id:e.id,element:e,disabled:t})}if(h.length&&(u=i.sortBasedOnDOMPosition.call(void 0,u,(e=>e.element))),!function(e,t){if(c.isSelfTarget.call(void 0,e))return!0;const a=e.target;return!!a&&t.some((e=>e.element===a))}(e,u))return p();e.preventDefault(),window.clearTimeout(w.current),w.current=window.setTimeout((()=>{v=""}),500);const f=e.key.toLowerCase();v+=f,u=function(e,t,a){if(!a)return e;const o=e.find((e=>e.id===a));return o&&m(o,t)?v!==t&&m(o,v)?e:(v=t,r.flipItems.call(void 0,e.filter((e=>m(e,v))),a).filter((e=>e.id!==a))):e}(u,f,l);const b=u.find((e=>m(e,v)));b?a.move(b.id):p()}));return h=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{},h),{onKeyDownCapture:b}),u.removeUndefinedValues.call(void 0,h)})),f=n.forwardRef.call(void 0,(function(e){const t=h(e);return n.createElement.call(void 0,"div",t)}));t.useCompositeTypeahead=h,t.CompositeTypeahead=f},74525:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(57870),o=a(19652).createStoreContext.call(void 0,[r.CollectionContextProvider],[r.CollectionScopedContextProvider]),n=o.useContext,l=o.useScopedContext,s=o.useProviderContext,i=o.ContextProvider,c=o.ScopedContextProvider;t.useFormContext=n,t.useFormScopedContext=l,t.useFormProviderContext=s,t.FormContextProvider=i,t.FormScopedContextProvider=c},82203:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(73579),o=a(19652),n=a(80987),l=a(28148),s=a(10790),i=o.createHook.call(void 0,(function(e){var t=e,{autoFocusOnShow:a=!0}=t,o=l.__objRest.call(void 0,t,["autoFocusOnShow"]);return o=n.useWrapElement.call(void 0,o,(e=>s.jsx.call(void 0,r.FocusableContext.Provider,{value:a,children:e})),[a])})),c=o.forwardRef.call(void 0,(function(e){const t=i(e);return o.createElement.call(void 0,"div",t)}));t.useFocusableContainer=i,t.FocusableContainer=c},38980:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(87636),o=a(80987),n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&(t[a]=e[a]);return t.default=e,t}(a(97438));function l(e,t,a){return o.useUpdateEffect.call(void 0,t,[a.store,a.disclosure]),r.useStoreProps.call(void 0,e,a,"open","setOpen"),r.useStoreProps.call(void 0,e,a,"mounted","setMounted"),r.useStoreProps.call(void 0,e,a,"animated"),Object.assign(e,{disclosure:a.disclosure})}t.useDisclosureStoreProps=l,t.useDisclosureStore=function(e={}){const[t,a]=r.useStore.call(void 0,n.createDisclosureStore,e);return l(t,a,e)}},99992:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(53944),o=a(19652),n=a(80987),l=a(28148),s=a(48959),i=a(51609),c=o.createHook.call(void 0,(function(e){var t=e,{store:a}=t,o=l.__objRest.call(void 0,t,["store"]);const c=i.useContext.call(void 0,r.DialogDescriptionContext),u=n.useId.call(void 0,o.id);return n.useSafeLayoutEffect.call(void 0,(()=>(null==c||c(u),()=>null==c?void 0:c(void 0))),[c,u]),o=l.__spreadValues.call(void 0,{id:u},o),s.removeUndefinedValues.call(void 0,o)})),u=o.forwardRef.call(void 0,(function(e){const t=c(e);return o.createElement.call(void 0,"p",t)}));t.useDialogDescription=c,t.DialogDescription=u},77018:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(53944),o=a(19652).createStoreContext.call(void 0,[r.DialogContextProvider],[r.DialogScopedContextProvider]),n=o.useContext,l=o.useScopedContext,s=o.useProviderContext,i=o.ContextProvider,c=o.ScopedContextProvider;t.usePopoverContext=n,t.usePopoverScopedContext=l,t.usePopoverProviderContext=s,t.PopoverContextProvider=i,t.PopoverScopedContextProvider=c},58430:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(70419);a(29842),a(87121),a(73579),a(19652),a(80987),a(7219),a(28148),t.Button=r.Button,t.useButton=r.useButton},44587:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(53443);a(67804),a(19652),a(80987),a(7219),a(28148),t.CheckboxCheck=r.CheckboxCheck,t.useCheckboxCheck=r.useCheckboxCheck},71986:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(85826);a(19652),a(80987),a(7219),a(28148),t.CheckboxContextProvider=r.CheckboxContextProvider,t.CheckboxScopedContextProvider=r.CheckboxScopedContextProvider,t.useCheckboxContext=r.useCheckboxContext,t.useCheckboxProviderContext=r.useCheckboxProviderContext,t.useCheckboxScopedContext=r.useCheckboxScopedContext},72714:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(26621),o=a(85826);a(19652),a(87636),a(80987),a(7219),a(28148);var n=a(10790);t.CheckboxProvider=function(e={}){const t=r.useCheckboxStore.call(void 0,e);return n.jsx.call(void 0,o.CheckboxContextProvider,{value:t,children:e.children})}},35048:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(26621);a(87636),a(80987),a(7219),a(28148),t.useCheckboxStore=r.useCheckboxStore,t.useCheckboxStoreProps=r.useCheckboxStoreProps},85848:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(71385);a(85826),a(67804),a(29842),a(87121),a(73579),a(19652),a(87636),a(80987),a(7219),a(28148),t.Checkbox=r.Checkbox,t.useCheckbox=r.useCheckbox},42668:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(57870);a(19652),a(80987),a(7219),a(28148),t.CollectionContextProvider=r.CollectionContextProvider,t.CollectionScopedContextProvider=r.CollectionScopedContextProvider,t.useCollectionContext=r.useCollectionContext,t.useCollectionProviderContext=r.useCollectionProviderContext,t.useCollectionScopedContext=r.useCollectionScopedContext},99378:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(21236);a(57870),a(19652),a(80987),a(7219),a(28148),t.CollectionItem=r.CollectionItem,t.useCollectionItem=r.useCollectionItem},60940:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(9355),o=a(57870);a(19652),a(87636),a(80987),a(7219),a(28148);var n=a(10790);t.CollectionProvider=function(e={}){const t=r.useCollectionStore.call(void 0,e);return n.jsx.call(void 0,o.CollectionContextProvider,{value:t,children:e.children})}},27498:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(9355);a(87636),a(80987),a(7219),a(28148),t.useCollectionStore=r.useCollectionStore,t.useCollectionStoreProps=r.useCollectionStoreProps},5238:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(57870),o=a(19652),n=a(80987);a(7219);var l=a(28148),s=a(48959),i=a(10790),c=o.createHook.call(void 0,(function(e){var t=e,{store:a}=t,o=l.__objRest.call(void 0,t,["store"]);const c=r.useCollectionProviderContext.call(void 0);return a=a||c,o=n.useWrapElement.call(void 0,o,(e=>i.jsx.call(void 0,r.CollectionScopedContextProvider,{value:a,children:e})),[a]),s.removeUndefinedValues.call(void 0,o)})),u=o.forwardRef.call(void 0,(function(e){const t=c(e);return o.createElement.call(void 0,"div",t)}));t.Collection=u,t.useCollection=c},67295:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(96475),o=a(70419);a(29842),a(42076),a(57870),a(77018),a(53944),a(16299),a(87121),a(73579);var n=a(19652),l=a(80987);a(7219);var s=a(28148),i=a(48959),c=a(51609),u=a(10790),d=u.jsxs.call(void 0,"svg",{"aria-hidden":"true",display:"block",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,width:"1em",height:"1em",pointerEvents:"none",children:[u.jsx.call(void 0,"line",{x1:"5",y1:"5",x2:"11",y2:"11"}),u.jsx.call(void 0,"line",{x1:"5",y1:"11",x2:"11",y2:"5"})]}),v=n.createHook.call(void 0,(function(e){var t=e,{store:a,hideWhenEmpty:n}=t,v=s.__objRest.call(void 0,t,["store","hideWhenEmpty"]);const p=r.useComboboxProviderContext.call(void 0);a=a||p,i.invariant.call(void 0,a,!1);const m=v.onClick,h=l.useEvent.call(void 0,(e=>{null==m||m(e),e.defaultPrevented||(null==a||a.setValue(""),null==a||a.move(null))})),f=a.useState((e=>{var t;return null==(t=e.baseElement)?void 0:t.id})),g=a.useState((e=>""===e.value));return v=l.useWrapElement.call(void 0,v,(e=>n&&g?u.jsx.call(void 0,c.Fragment,{}):e),[n,g]),v=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{children:d,"aria-label":"Clear input","aria-controls":f},v),{onClick:h}),v=o.useButton.call(void 0,v)})),p=n.forwardRef.call(void 0,(function(e){const t=v(e);return n.createElement.call(void 0,"button",t)}));t.ComboboxCancel=p,t.useComboboxCancel=v},18038:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(96475);a(42076),a(57870),a(77018),a(53944),a(16299),a(19652),a(80987),a(7219),a(28148),t.ComboboxContextProvider=r.ComboboxContextProvider,t.ComboboxItemCheckedContext=r.ComboboxItemCheckedContext,t.ComboboxItemValueContext=r.ComboboxItemValueContext,t.ComboboxListRoleContext=r.ComboboxListRoleContext,t.ComboboxScopedContextProvider=r.ComboboxScopedContextProvider,t.useComboboxContext=r.useComboboxContext,t.useComboboxProviderContext=r.useComboboxProviderContext,t.useComboboxScopedContext=r.useComboboxScopedContext},30030:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(96475),o=a(49190);a(56203),a(70419),a(29842),a(42076),a(57870),a(77018),a(53944),a(16299),a(87121),a(73579);var n=a(19652),l=a(80987);a(7219);var s=a(28148),i=a(48959),c=a(10790),u=c.jsx.call(void 0,"svg",{"aria-hidden":"true",display:"block",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,viewBox:"0 0 16 16",height:"1em",width:"1em",pointerEvents:"none",children:c.jsx.call(void 0,"polyline",{points:"4,6 8,10 12,6"})}),d=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=s.__objRest.call(void 0,t,["store"]);const c=r.useComboboxProviderContext.call(void 0);a=a||c,i.invariant.call(void 0,a,!1);const d=n.onMouseDown,v=l.useEvent.call(void 0,(e=>{null==d||d(e),e.preventDefault(),null==a||a.move(null)})),p=n.onClick,m=l.useEvent.call(void 0,(e=>{if(null==p||p(e),e.defaultPrevented)return;if(!a)return;const{baseElement:t}=a.getState();a.setDisclosureElement(t)})),h=a.useState("open");return n=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{children:u,tabIndex:-1,"aria-label":h?"Hide popup":"Show popup","aria-expanded":h},n),{onMouseDown:v,onClick:m}),n=o.useDialogDisclosure.call(void 0,s.__spreadValues.call(void 0,{store:a},n))})),v=n.forwardRef.call(void 0,(function(e){const t=d(e);return n.createElement.call(void 0,"button",t)}));t.ComboboxDisclosure=v,t.useComboboxDisclosure=d},98935:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(59190);a(50864),a(85171);var o=a(19652);a(80987),a(7219),a(28148);var n=o.createHook.call(void 0,(function(e){return e=r.useCompositeGroupLabel.call(void 0,e)})),l=o.forwardRef.call(void 0,(function(e){const t=n(e);return o.createElement.call(void 0,"div",t)}));t.ComboboxGroupLabel=l,t.useComboboxGroupLabel=n},79334:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(91520);a(69349),a(85171);var o=a(96475);a(42076),a(57870),a(77018),a(53944),a(16299);var n=a(19652);a(80987),a(7219);var l=a(28148),s=a(92725),i=a(48959),c=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const c=o.useComboboxScopedContext.call(void 0);a=a||c,i.invariant.call(void 0,a,!1);const u=a.useState("contentElement");return"grid"===s.getPopupRole.call(void 0,u)&&(n=l.__spreadValues.call(void 0,{role:"rowgroup"},n)),n=r.useCompositeGroup.call(void 0,l.__spreadValues.call(void 0,{store:a},n))})),u=n.forwardRef.call(void 0,(function(e){const t=c(e);return n.createElement.call(void 0,"div",t)}));t.ComboboxGroup=u,t.useComboboxGroup=c},6439:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(53443);a(67804);var o=a(96475);a(42076),a(57870),a(77018),a(53944),a(16299);var n=a(19652);a(80987),a(7219);var l=a(28148),s=a(51609),i=n.createHook.call(void 0,(function(e){var t=e,{store:a,checked:n}=t,i=l.__objRest.call(void 0,t,["store","checked"]);const c=s.useContext.call(void 0,o.ComboboxItemCheckedContext);return n=null!=n?n:c,i=r.useCheckboxCheck.call(void 0,l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},i),{checked:n}))})),c=n.forwardRef.call(void 0,(function(e){const t=i(e);return n.createElement.call(void 0,"span",t)}));t.ComboboxItemCheck=c,t.useComboboxItemCheck=i},82616:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(96475);a(42076),a(57870),a(77018),a(53944),a(16299);var o=a(19652),n=a(87636);a(80987),a(7219);var l=a(28148),s=a(11790),i=a(48959),c=a(51609),u=a(10790);function d(e){return i.normalizeString.call(void 0,e).toLowerCase()}var v=o.createHook.call(void 0,(function(e){var t=e,{store:a,value:o,userValue:v}=t,p=l.__objRest.call(void 0,t,["store","value","userValue"]);const m=r.useComboboxScopedContext.call(void 0);a=a||m;const h=c.useContext.call(void 0,r.ComboboxItemValueContext),f=null!=o?o:h,g=n.useStoreState.call(void 0,a,(e=>null!=v?v:null==e?void 0:e.value)),w=c.useMemo.call(void 0,(()=>{if(f)return g?function(e,t){if(!e)return e;if(!t)return e;const a=s.toArray.call(void 0,t).filter(Boolean).map(d),r=[],o=(e,t=!1)=>u.jsx.call(void 0,"span",{"data-autocomplete-value":t?"":void 0,"data-user-value":t?void 0:"",children:e},r.length),n=function(e){return e.sort((([e],[t])=>e-t))}(function(e){return e.filter((([e,t],a,r)=>!r.some((([r,o],n)=>n!==a&&r<=e&&r+o>=e+t))))}(function(e,t){const a=[];for(const r of t){let t=0;const o=r.length;for(;-1!==e.indexOf(r,t);){const n=e.indexOf(r,t);-1!==n&&a.push([n,o]),t=n+1}}return a}(d(e),new Set(a))));if(!n.length)return r.push(o(e,!0)),r;const[l]=n[0];return[e.slice(0,l),...n.flatMap((([t,a],r)=>{var o;const l=e.slice(t,t+a),s=null==(o=n[r+1])?void 0:o[0];return[l,e.slice(t+a,s)]}))].forEach(((e,t)=>{e&&r.push(o(e,t%2==0))})),r}(f,g):f}),[f,g]);return p=l.__spreadValues.call(void 0,{children:w},p),i.removeUndefinedValues.call(void 0,p)})),p=o.forwardRef.call(void 0,(function(e){const t=v(e);return o.createElement.call(void 0,"span",t)}));t.ComboboxItemValue=p,t.useComboboxItemValue=v},23140:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(30829);a(61150),a(96475),a(35973),a(21236),a(29842),a(40227),a(42076),a(57870),a(77018),a(53944),a(16299),a(87121),a(73579),a(19652),a(87636),a(80987),a(7219),a(28148),t.ComboboxItem=r.ComboboxItem,t.useComboboxItem=r.useComboboxItem},68529:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(96475);a(42076),a(57870),a(77018),a(53944),a(16299);var o=a(19652);a(80987),a(7219);var n=a(28148),l=a(48959),s=o.createHook.call(void 0,(function(e){var t=e,{store:a}=t,o=n.__objRest.call(void 0,t,["store"]);const s=r.useComboboxProviderContext.call(void 0);a=a||s,l.invariant.call(void 0,a,!1);const i=a.useState((e=>{var t;return null==(t=e.baseElement)?void 0:t.id}));return o=n.__spreadValues.call(void 0,{htmlFor:i},o),l.removeUndefinedValues.call(void 0,o)})),i=o.memo.call(void 0,o.forwardRef.call(void 0,(function(e){const t=s(e);return o.createElement.call(void 0,"label",t)})));t.ComboboxLabel=i,t.useComboboxLabel=s},72305:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(99103);a(96475),a(42076),a(57870),a(77723),a(77018),a(53944),a(16299),a(19652),a(87636),a(80987),a(7219),a(28148),t.ComboboxList=r.ComboboxList,t.useComboboxList=r.useComboboxList},87020:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(99103),o=a(96475);a(42076),a(57870);var n=a(39861),l=a(28293);a(12204),a(19387),a(70663),a(33043),a(8549),a(89169),a(68842),a(21676),a(85325),a(26327),a(91605),a(48960),a(94818),a(49464),a(99471),a(82203),a(32146),a(9018),a(54844),a(67722),a(63215),a(77723),a(12707),a(77018),a(53944),a(16299),a(87121),a(73579),a(3578);var s=a(19652);a(95691),a(38980);var i=a(87636);a(80987),a(7219);var c=a(28148),u=a(92725),d=a(48959),v=a(51609);var p=s.createHook.call(void 0,(function(e){var t=e,{store:a,modal:l,tabIndex:s,alwaysVisible:p,autoFocusOnHide:m=!0,hideOnInteractOutside:h=!0}=t,f=c.__objRest.call(void 0,t,["store","modal","tabIndex","alwaysVisible","autoFocusOnHide","hideOnInteractOutside"]);const g=o.useComboboxProviderContext.call(void 0);a=a||g,d.invariant.call(void 0,a,!1);const w=a.useState("baseElement"),b=v.useRef.call(void 0,!1),y=i.useStoreState.call(void 0,a.tag,(e=>null==e?void 0:e.renderedItems.length));return f=r.useComboboxList.call(void 0,c.__spreadValues.call(void 0,{store:a,alwaysVisible:p},f)),f=n.usePopover.call(void 0,c.__spreadProps.call(void 0,c.__spreadValues.call(void 0,{store:a,modal:l,alwaysVisible:p,backdrop:!1,autoFocusOnShow:!1,finalFocus:w,preserveTabOrderAnchor:null,unstable_treeSnapshotKey:y},f),{getPersistentElements(){var e;const t=(null==(e=f.getPersistentElements)?void 0:e.call(f))||[];if(!l)return t;if(!a)return t;const{contentElement:r,baseElement:o}=a.getState();if(!o)return t;const n=u.getDocument.call(void 0,o),s=[];if((null==r?void 0:r.id)&&s.push(`[aria-controls~="${r.id}"]`),(null==o?void 0:o.id)&&s.push(`[aria-controls~="${o.id}"]`),!s.length)return[...t,o];const i=s.join(","),c=n.querySelectorAll(i);return[...t,...c]},autoFocusOnHide:e=>!d.isFalsyBooleanCallback.call(void 0,m,e)&&(!b.current||(b.current=!1,!1)),hideOnInteractOutside(e){var t,r;const o=null==a?void 0:a.getState(),n=null==(t=null==o?void 0:o.contentElement)?void 0:t.id,l=null==(r=null==o?void 0:o.baseElement)?void 0:r.id;if(function(e,...t){if(!e)return!1;if("id"in e){const a=t.filter(Boolean).map((e=>`[aria-controls~="${e}"]`)).join(", ");return!!a&&e.matches(a)}return!1}(e.target,n,l))return!1;const s="function"==typeof h?h(e):h;return s&&(b.current="click"===e.type),s}}))})),m=l.createDialogComponent.call(void 0,s.forwardRef.call(void 0,(function(e){const t=p(e);return s.createElement.call(void 0,"div",t)})),o.useComboboxProviderContext);t.ComboboxPopover=m,t.useComboboxPopover=p},69198:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(89930),o=a(96475);a(54871),a(99366),a(9355),a(42076),a(57870),a(77018),a(53944),a(16299),a(19652),a(44448),a(95691),a(38980),a(87636),a(80987),a(7219),a(28148);var n=a(10790);t.ComboboxProvider=function(e={}){const t=r.useComboboxStore.call(void 0,e);return n.jsx.call(void 0,o.ComboboxContextProvider,{value:t,children:e.children})}},98739:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(22225),o=a(96475);a(42076),a(57870),a(77018),a(53944),a(16299);var n=a(19652);a(80987),a(7219);var l=a(28148),s=a(92725),i=a(48959),c=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const c=o.useComboboxScopedContext.call(void 0);a=a||c,i.invariant.call(void 0,a,!1);const u=a.useState("contentElement"),d="grid"===s.getPopupRole.call(void 0,u)?"row":"presentation";return n=l.__spreadValues.call(void 0,{role:d},n),n=r.useCompositeRow.call(void 0,l.__spreadValues.call(void 0,{store:a},n))})),u=n.forwardRef.call(void 0,(function(e){const t=c(e);return n.createElement.call(void 0,"div",t)}));t.ComboboxRow=u,t.useComboboxRow=c},15498:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(96475),o=a(86005);a(52954),a(42076),a(57870),a(77018),a(53944),a(16299);var n=a(19652);a(80987),a(7219);var l=a(28148),s=a(48959),i=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const i=r.useComboboxScopedContext.call(void 0);return a=a||i,s.invariant.call(void 0,a,!1),n=o.useCompositeSeparator.call(void 0,l.__spreadValues.call(void 0,{store:a},n))})),c=n.forwardRef.call(void 0,(function(e){const t=i(e);return n.createElement.call(void 0,"hr",t)}));t.ComboboxSeparator=c,t.useComboboxSeparator=i},52652:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(89930);a(54871),a(99366),a(9355),a(42076),a(57870),a(19652),a(44448),a(95691),a(38980),a(87636),a(80987),a(7219),a(28148),t.useComboboxStore=r.useComboboxStore,t.useComboboxStoreOptions=r.useComboboxStoreOptions,t.useComboboxStoreProps=r.useComboboxStoreProps},74592:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(96475);a(42076),a(57870),a(77018),a(53944),a(16299),a(19652),a(80987),a(7219),a(28148);var o=a(48959);t.ComboboxValue=function({store:e,children:t}={}){const a=r.useComboboxContext.call(void 0);e=e||a,o.invariant.call(void 0,e,!1);const n=e.useState("value");return t?t(n):n}},98348:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(96475),o=a(51500),n=a(9229);a(40227),a(42076),a(57870),a(77018),a(53944),a(16299),a(87121),a(73579);var l=a(19652),s=a(80987);a(7219);var i=a(28148),c=a(92725),u=a(77328),d=a(60877),v=a(48959),p=a(8766),m=a(51609);function h(e,t,a){if(!a)return!1;const r=e.find((e=>!e.disabled&&e.value));return(null==r?void 0:r.value)===t}function f(e,t){return!!t&&(null!=e&&(e=v.normalizeString.call(void 0,e),t.length>e.length&&0===t.toLowerCase().indexOf(e.toLowerCase())))}var g=l.createHook.call(void 0,(function(e){var t=e,{store:a,focusable:l=!0,autoSelect:g=!1,getAutoSelectId:w,setValueOnChange:b,showMinLength:y=0,showOnChange:x,showOnMouseDown:_,showOnClick:k=_,showOnKeyDown:E,showOnKeyPress:C=E,blurActiveItemOnClick:j,setValueOnClick:A=!0,moveOnKeyPress:S=!0,autoComplete:P="list"}=t,R=i.__objRest.call(void 0,t,["store","focusable","autoSelect","getAutoSelectId","setValueOnChange","showMinLength","showOnChange","showOnMouseDown","showOnClick","showOnKeyDown","showOnKeyPress","blurActiveItemOnClick","setValueOnClick","moveOnKeyPress","autoComplete"]);const M=r.useComboboxProviderContext.call(void 0);a=a||M,v.invariant.call(void 0,a,!1);const V=m.useRef.call(void 0,null),[z,H]=s.useForceUpdate.call(void 0),L=m.useRef.call(void 0,!1),O=m.useRef.call(void 0,!1),N=a.useState((e=>e.virtualFocus&&g)),I="inline"===P||"both"===P,[B,T]=m.useState.call(void 0,I);s.useUpdateLayoutEffect.call(void 0,(()=>{I&&T(!0)}),[I]);const F=a.useState("value"),D=m.useRef.call(void 0);m.useEffect.call(void 0,(()=>p.sync.call(void 0,a,["selectedValue","activeId"],((e,t)=>{D.current=t.selectedValue}))),[]);const G=a.useState((e=>{var t;if(I&&B){if(e.activeValue&&Array.isArray(e.selectedValue)){if(e.selectedValue.includes(e.activeValue))return;if(null==(t=D.current)?void 0:t.includes(e.activeValue))return}return e.activeValue}})),U=a.useState("renderedItems"),q=a.useState("open"),Z=a.useState("contentElement"),W=m.useMemo.call(void 0,(()=>{if(!I)return F;if(!B)return F;if(h(U,G,N)){if(f(F,G)){const e=(null==G?void 0:G.slice(F.length))||"";return F+e}return F}return G||F}),[I,B,U,G,N,F]);m.useEffect.call(void 0,(()=>{const e=V.current;if(!e)return;const t=()=>T(!0);return e.addEventListener("combobox-item-move",t),()=>{e.removeEventListener("combobox-item-move",t)}}),[]),m.useEffect.call(void 0,(()=>{if(!I)return;if(!B)return;if(!G)return;if(!h(U,G,N))return;if(!f(F,G))return;let e=v.noop;return queueMicrotask((()=>{const t=V.current;if(!t)return;const{start:a,end:r}=c.getTextboxSelection.call(void 0,t),o=F.length,n=G.length;c.setSelectionRange.call(void 0,t,o,n),e=()=>{if(!d.hasFocus.call(void 0,t))return;const{start:e,end:l}=c.getTextboxSelection.call(void 0,t);e===o&&l===n&&c.setSelectionRange.call(void 0,t,a,r)}})),()=>e()}),[z,I,B,G,U,N,F]);const $=m.useRef.call(void 0,null),J=s.useEvent.call(void 0,w),K=m.useRef.call(void 0,null);m.useEffect.call(void 0,(()=>{if(!q)return;if(!Z)return;const e=c.getScrollingElement.call(void 0,Z);if(!e)return;$.current=e;const t=()=>{L.current=!1},r=()=>{if(!a)return;if(!L.current)return;const{activeId:e}=a.getState();null!==e&&e!==K.current&&(L.current=!1)},o={passive:!0,capture:!0};return e.addEventListener("wheel",t,o),e.addEventListener("touchmove",t,o),e.addEventListener("scroll",r,o),()=>{e.removeEventListener("wheel",t,!0),e.removeEventListener("touchmove",t,!0),e.removeEventListener("scroll",r,!0)}}),[q,Z,a]),s.useSafeLayoutEffect.call(void 0,(()=>{F&&(O.current||(L.current=!0))}),[F]),s.useSafeLayoutEffect.call(void 0,(()=>{"always"!==N&&q||(L.current=q)}),[N,q]);const Q=a.useState("resetValueOnSelect");s.useUpdateEffect.call(void 0,(()=>{var e,t;const r=L.current;if(!a)return;if(!q)return;if(!r&&!Q)return;const{baseElement:o,contentElement:n,activeId:l}=a.getState();if(!o||d.hasFocus.call(void 0,o)){if(null==n?void 0:n.hasAttribute("data-placing")){const e=new MutationObserver(H);return e.observe(n,{attributeFilter:["data-placing"]}),()=>e.disconnect()}if(N&&r){const t=J(U),r=void 0!==t?t:null!=(e=function(e){const t=e.find((e=>{var t;return!e.disabled&&"tab"!==(null==(t=e.element)?void 0:t.getAttribute("role"))}));return null==t?void 0:t.id}(U))?e:a.first();K.current=r,a.move(null!=r?r:null)}else{const e=null==(t=a.item(l||a.first()))?void 0:t.element;e&&"scrollIntoView"in e&&e.scrollIntoView({block:"nearest",inline:"nearest"})}}}),[a,q,z,F,N,Q,J,U]),m.useEffect.call(void 0,(()=>{if(!I)return;const e=V.current;if(!e)return;const t=[e,Z].filter((e=>!!e)),r=e=>{t.every((t=>u.isFocusEventOutside.call(void 0,e,t)))&&(null==a||a.setValue(W))};for(const e of t)e.addEventListener("focusout",r);return()=>{for(const e of t)e.removeEventListener("focusout",r)}}),[I,Z,a,W]);const Y=e=>e.currentTarget.value.length>=y,X=R.onChange,ee=s.useBooleanEvent.call(void 0,null!=x?x:Y),te=s.useBooleanEvent.call(void 0,null!=b?b:!a.tag),ae=s.useEvent.call(void 0,(e=>{if(null==X||X(e),e.defaultPrevented)return;if(!a)return;const t=e.currentTarget,{value:r,selectionStart:o,selectionEnd:n}=t,l=e.nativeEvent;if(L.current=!0,function(e){return"input"===e.type}(l)&&(l.isComposing&&(L.current=!1,O.current=!0),I)){const e="insertText"===l.inputType||"insertCompositionText"===l.inputType,t=o===r.length;T(e&&t)}if(te(e)){const e=r===a.getState().value;a.setValue(r),queueMicrotask((()=>{c.setSelectionRange.call(void 0,t,o,n)})),I&&N&&e&&H()}ee(e)&&a.show(),N&&L.current||a.setActiveId(null)})),re=R.onCompositionEnd,oe=s.useEvent.call(void 0,(e=>{L.current=!0,O.current=!1,null==re||re(e),e.defaultPrevented||N&&H()})),ne=R.onMouseDown,le=s.useBooleanEvent.call(void 0,null!=j?j:()=>!!(null==a?void 0:a.getState().includesBaseElement)),se=s.useBooleanEvent.call(void 0,A),ie=s.useBooleanEvent.call(void 0,null!=k?k:Y),ce=s.useEvent.call(void 0,(e=>{null==ne||ne(e),e.defaultPrevented||e.button||e.ctrlKey||a&&(le(e)&&a.setActiveId(null),se(e)&&a.setValue(W),ie(e)&&u.queueBeforeEvent.call(void 0,e.currentTarget,"mouseup",a.show))})),ue=R.onKeyDown,de=s.useBooleanEvent.call(void 0,null!=C?C:Y),ve=s.useEvent.call(void 0,(e=>{if(null==ue||ue(e),e.repeat||(L.current=!1),e.defaultPrevented)return;if(e.ctrlKey)return;if(e.altKey)return;if(e.shiftKey)return;if(e.metaKey)return;if(!a)return;const{open:t}=a.getState();t||"ArrowUp"!==e.key&&"ArrowDown"!==e.key||de(e)&&(e.preventDefault(),a.show())})),pe=R.onBlur,me=s.useEvent.call(void 0,(e=>{L.current=!1,null==pe||pe(e),e.defaultPrevented})),he=s.useId.call(void 0,R.id),fe=function(e){return"inline"===e||"list"===e||"both"===e||"none"===e}(P)?P:void 0,ge=a.useState((e=>null===e.activeId));return R=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{id:he,role:"combobox","aria-autocomplete":fe,"aria-haspopup":c.getPopupRole.call(void 0,Z,"listbox"),"aria-expanded":q,"aria-controls":null==Z?void 0:Z.id,"data-active-item":ge||void 0,value:W},R),{ref:s.useMergeRefs.call(void 0,V,R.ref),onChange:ae,onCompositionEnd:oe,onMouseDown:ce,onKeyDown:ve,onBlur:me}),R=n.useComposite.call(void 0,i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{store:a,focusable:l},R),{moveOnKeyPress:e=>!v.isFalsyBooleanCallback.call(void 0,S,e)&&(I&&T(!0),!0)})),R=o.usePopoverAnchor.call(void 0,i.__spreadValues.call(void 0,{store:a},R)),i.__spreadValues.call(void 0,{autoComplete:"off"},R)})),w=l.forwardRef.call(void 0,(function(e){const t=g(e);return l.createElement.call(void 0,"input",t)}));t.Combobox=w,t.useCombobox=g},19188:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(29842);a(87121),a(73579),a(19652),a(80987),a(7219),a(28148),t.Command=r.Command,t.useCommand=r.useCommand},31258:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(42076);a(57870),a(19652),a(80987),a(7219),a(28148),t.CompositeContextProvider=r.CompositeContextProvider,t.CompositeItemContext=r.CompositeItemContext,t.CompositeRowContext=r.CompositeRowContext,t.CompositeScopedContextProvider=r.CompositeScopedContextProvider,t.useCompositeContext=r.useCompositeContext,t.useCompositeProviderContext=r.useCompositeProviderContext,t.useCompositeScopedContext=r.useCompositeScopedContext},827:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(59190);a(50864),a(85171),a(19652),a(80987),a(7219),a(28148),t.CompositeGroupLabel=r.CompositeGroupLabel,t.useCompositeGroupLabel=r.useCompositeGroupLabel},50682:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(91520);a(69349),a(85171),a(19652),a(80987),a(7219),a(28148),t.CompositeGroup=r.CompositeGroup,t.useCompositeGroup=r.useCompositeGroup},40973:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(61150);a(42076),a(57870),a(19652),a(80987),a(7219),a(28148),t.CompositeHover=r.CompositeHover,t.useCompositeHover=r.useCompositeHover},58736:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(35973);a(21236),a(29842),a(40227),a(42076),a(57870),a(87121),a(73579),a(19652),a(87636),a(80987),a(7219),a(28148),t.CompositeItem=r.CompositeItem,t.useCompositeItem=r.useCompositeItem},41810:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(99366);a(9355);var o=a(42076);a(57870),a(19652),a(87636),a(80987),a(7219),a(28148);var n=a(10790);t.CompositeProvider=function(e={}){const t=r.useCompositeStore.call(void 0,e);return n.jsx.call(void 0,o.CompositeContextProvider,{value:t,children:e.children})}},65631:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(22225);a(42076),a(57870),a(19652),a(80987),a(7219),a(28148),t.CompositeRow=r.CompositeRow,t.useCompositeRow=r.useCompositeRow},84334:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(86005);a(52954),a(42076),a(57870),a(19652),a(80987),a(7219),a(28148),t.CompositeSeparator=r.CompositeSeparator,t.useCompositeSeparator=r.useCompositeSeparator},87888:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(99366);a(9355),a(87636),a(80987),a(7219),a(28148),t.useCompositeStore=r.useCompositeStore,t.useCompositeStoreOptions=r.useCompositeStoreOptions,t.useCompositeStoreProps=r.useCompositeStoreProps},99684:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(68666);a(40227),a(42076),a(57870),a(19652),a(80987),a(7219),a(28148),t.CompositeTypeahead=r.CompositeTypeahead,t.useCompositeTypeahead=r.useCompositeTypeahead},55488:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(9229);a(40227),a(42076),a(57870),a(87121),a(73579),a(19652),a(80987),a(7219),a(28148),t.Composite=r.Composite,t.useComposite=r.useComposite},59988:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(53944);a(16299),a(19652),a(80987),a(7219),a(28148),t.DialogContextProvider=r.DialogContextProvider,t.DialogDescriptionContext=r.DialogDescriptionContext,t.DialogHeadingContext=r.DialogHeadingContext,t.DialogScopedContextProvider=r.DialogScopedContextProvider,t.useDialogContext=r.useDialogContext,t.useDialogProviderContext=r.useDialogProviderContext,t.useDialogScopedContext=r.useDialogScopedContext},13387:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(99992);a(53944),a(16299),a(19652),a(80987),a(7219),a(28148),t.DialogDescription=r.DialogDescription,t.useDialogDescription=r.useDialogDescription},78368:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(49190);a(56203),a(70419),a(29842),a(53944),a(16299),a(87121),a(73579),a(19652),a(80987),a(7219),a(28148),t.DialogDisclosure=r.DialogDisclosure,t.useDialogDisclosure=r.useDialogDisclosure},54513:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(60762);a(70419),a(29842),a(53944),a(16299),a(87121),a(73579),a(19652),a(80987),a(7219),a(28148),t.DialogDismiss=r.DialogDismiss,t.useDialogDismiss=r.useDialogDismiss},25111:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(22510);a(35174),a(63215),a(53944),a(16299),a(19652),a(80987),a(7219),a(28148),t.DialogHeading=r.DialogHeading,t.useDialogHeading=r.useDialogHeading},22292:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(53944);a(16299),a(19652);var o=a(95691);a(38980),a(87636),a(80987),a(7219),a(28148);var n=a(10790);t.DialogProvider=function(e={}){const t=o.useDialogStore.call(void 0,e);return n.jsx.call(void 0,r.DialogContextProvider,{value:t,children:e.children})}},80466:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(95691);a(38980),a(87636),a(80987),a(7219),a(28148),t.useDialogStore=r.useDialogStore,t.useDialogStoreProps=r.useDialogStoreProps},27742:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(28293);a(12204),a(19387),a(70663),a(33043),a(8549),a(89169),a(68842),a(21676),a(85325),a(26327),a(91605),a(48960),a(94818),a(49464),a(99471),a(82203),a(32146),a(9018),a(54844),a(67722),a(63215),a(77723),a(12707),a(53944),a(16299),a(87121),a(73579),a(3578),a(19652),a(95691),a(38980),a(87636),a(80987),a(7219),a(28148),t.Dialog=r.Dialog,t.createDialogComponent=r.createDialogComponent,t.useDialog=r.useDialog},48056:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(77723);a(53944),a(16299),a(19652),a(87636),a(80987),a(7219),a(28148),t.DisclosureContent=r.DisclosureContent,t.isHidden=r.isHidden,t.useDisclosureContent=r.useDisclosureContent},34130:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(16299);a(19652),a(80987),a(7219),a(28148),t.DisclosureContextProvider=r.DisclosureContextProvider,t.DisclosureScopedContextProvider=r.DisclosureScopedContextProvider,t.useDisclosureContext=r.useDisclosureContext,t.useDisclosureProviderContext=r.useDisclosureProviderContext,t.useDisclosureScopedContext=r.useDisclosureScopedContext},41706:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(16299);a(19652);var o=a(38980);a(87636),a(80987),a(7219),a(28148);var n=a(10790);t.DisclosureProvider=function(e={}){const t=o.useDisclosureStore.call(void 0,e);return n.jsx.call(void 0,r.DisclosureContextProvider,{value:t,children:e.children})}},93320:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(38980);a(87636),a(80987),a(7219),a(28148),t.useDisclosureStore=r.useDisclosureStore,t.useDisclosureStoreProps=r.useDisclosureStoreProps},50296:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(56203);a(70419),a(29842),a(16299),a(87121),a(73579),a(19652),a(80987),a(7219),a(28148),t.Disclosure=r.Disclosure,t.useDisclosure=r.useDisclosure},44571:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(54844);a(3578);var o=a(19652),n=a(80987);a(7219);var l=a(28148),s=a(60877),i=a(48959),c=a(51609),u=a(10790),d=o.createHook.call(void 0,(function(e){var t=e,{enabled:a=!1}=t,o=l.__objRest.call(void 0,t,["enabled"]);const d=c.useRef.call(void 0,null);return o=n.useWrapElement.call(void 0,o,(e=>{const t=()=>a?u.jsx.call(void 0,r.FocusTrap,{onFocus:e=>{const t=d.current;if(!t)return;const a=s.getAllTabbableIn.call(void 0,t,!0),r=a[0],o=a[a.length-1];a.length?e.relatedTarget===r?null==o||o.focus():null==r||r.focus():t.focus()}}):null;return u.jsxs.call(void 0,u.Fragment,{children:[t(),e,t()]})}),[a]),o=l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},o),{ref:n.useMergeRefs.call(void 0,d,o.ref)}),i.removeUndefinedValues.call(void 0,o)})),v=o.forwardRef.call(void 0,(function(e){const t=d(e);return o.createElement.call(void 0,"div",t)}));t.FocusTrapRegion=v,t.useFocusTrapRegion=d},46410:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(54844);a(3578),a(19652),a(80987),a(7219),a(28148),t.FocusTrap=r.FocusTrap,t.useFocusTrap=r.useFocusTrap},83056:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(87121);a(73579),a(19652),a(80987),a(7219),a(28148),t.Focusable=r.Focusable,t.isSafariFocusAncestor=r.isSafariFocusAncestor,t.useFocusable=r.useFocusable},18460:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(2627),o=a(74525),n=a(71385),l=a(26621);a(85826),a(67804),a(21236),a(29842),a(57870),a(87121),a(73579);var s=a(19652);a(87636),a(80987),a(7219);var i=a(28148),c=a(48959),u=s.createHook.call(void 0,(function(e){var t=e,{store:a,name:s,value:u,checked:d,defaultChecked:v}=t,p=i.__objRest.call(void 0,t,["store","name","value","checked","defaultChecked"]);const m=o.useFormContext.call(void 0);a=a||m,c.invariant.call(void 0,a,!1);const h=`${s}`,f=l.useCheckboxStore.call(void 0,{value:a.useValue(h),setValue:e=>null==a?void 0:a.setValue(h,e)});return p=n.useCheckbox.call(void 0,i.__spreadValues.call(void 0,{store:f,value:u,checked:d},p)),p=r.useFormControl.call(void 0,i.__spreadValues.call(void 0,{store:a,name:h,"aria-labelledby":void 0},p))})),d=s.memo.call(void 0,s.forwardRef.call(void 0,(function(e){const t=u(e);return s.createElement.call(void 0,"input",t)})));t.FormCheckbox=d,t.useFormCheckbox=u},49296:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(74525);a(57870),a(19652),a(80987),a(7219),a(28148),t.FormContextProvider=r.FormContextProvider,t.FormScopedContextProvider=r.FormScopedContextProvider,t.useFormContext=r.useFormContext,t.useFormProviderContext=r.useFormProviderContext,t.useFormScopedContext=r.useFormScopedContext},96254:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(2627);a(74525),a(21236),a(57870),a(19652),a(80987),a(7219),a(28148),t.FormControl=r.FormControl,t.useFormControl=r.useFormControl},74695:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(74525),o=a(21236);a(57870);var n=a(19652),l=a(80987);a(7219);var s=a(28148),i=a(48959),c=a(51609),u=n.createHook.call(void 0,(function(e){var t=e,{store:a,name:n,getItem:u}=t,d=s.__objRest.call(void 0,t,["store","name","getItem"]);const v=r.useFormContext.call(void 0);a=a||v,i.invariant.call(void 0,a,!1);const p=l.useId.call(void 0,d.id),m=c.useRef.call(void 0,null),h=`${n}`,f=c.useCallback.call(void 0,(e=>{const t=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{},e),{id:p||e.id,name:h,type:"description"});return u?u(t):t}),[p,h,u]);return d=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{id:p},d),{ref:l.useMergeRefs.call(void 0,m,d.ref)}),d=o.useCollectionItem.call(void 0,s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{store:a},d),{getItem:f}))})),d=n.memo.call(void 0,n.forwardRef.call(void 0,(function(e){const t=u(e);return n.createElement.call(void 0,"div",t)})));t.FormDescription=d,t.useFormDescription=u},40055:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(74525),o=a(21236);a(57870);var n=a(19652),l=a(80987);a(7219);var s=a(28148),i=a(48959),c=a(51609),u=n.createHook.call(void 0,(function(e){var t=e,{store:a,name:n,getItem:u}=t,d=s.__objRest.call(void 0,t,["store","name","getItem"]);const v=r.useFormContext.call(void 0);a=a||v,i.invariant.call(void 0,a,!1);const p=l.useId.call(void 0,d.id),m=c.useRef.call(void 0,null),h=`${n}`,f=c.useCallback.call(void 0,(e=>{const t=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{},e),{id:p||e.id,name:h,type:"error"});return u?u(t):t}),[p,h,u]),g=a.useState((()=>{const e=null==a?void 0:a.getError(h);if(null!=e&&(null==a?void 0:a.getFieldTouched(h)))return e}));return d=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{id:p,role:"alert",children:g},d),{ref:l.useMergeRefs.call(void 0,m,d.ref)}),d=o.useCollectionItem.call(void 0,s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{store:a},d),{getItem:f}))})),d=n.memo.call(void 0,n.forwardRef.call(void 0,(function(e){const t=u(e);return n.createElement.call(void 0,"div",t)})));t.FormError=d,t.useFormError=u},26169:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(2627);a(74525),a(21236),a(57870);var o=a(19652);a(80987),a(7219),a(28148);var n=o.createHook.call(void 0,(function(e){return r.useFormControl.call(void 0,e)})),l=o.memo.call(void 0,o.forwardRef.call(void 0,(function(e){const t=n(e);return o.createElement.call(void 0,"input",t)})));t.FormField=l,t.useFormField=n},3301:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(50864);a(85171);var o=a(19652);a(80987),a(7219);var n=a(28148),l=o.createHook.call(void 0,(function(e){var t=e,{store:a}=t,o=n.__objRest.call(void 0,t,["store"]);return o=r.useGroupLabel.call(void 0,o)})),s=o.forwardRef.call(void 0,(function(e){const t=l(e);return o.createElement.call(void 0,"div",t)}));t.FormGroupLabel=s,t.useFormGroupLabel=l},16448:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(95563);a(69349),a(85171),a(19652),a(80987),a(7219),a(28148),t.FormGroup=r.FormGroup,t.useFormGroup=r.useFormGroup},57509:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(2627),o=a(74525);a(21236),a(57870);var n=a(87121);a(73579);var l=a(19652),s=a(80987);a(7219);var i=a(28148),c=a(48959),u=l.createHook.call(void 0,(function(e){var t=e,{store:a,name:l}=t,u=i.__objRest.call(void 0,t,["store","name"]);const d=o.useFormContext.call(void 0);a=a||d,c.invariant.call(void 0,a,!1);const v=`${l}`,p=u.onChange,m=s.useEvent.call(void 0,(e=>{null==p||p(e),e.defaultPrevented||null==a||a.setValue(v,e.target.value)})),h=a.useValue(v);return u=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{value:h},u),{onChange:m}),u=n.useFocusable.call(void 0,u),u=r.useFormControl.call(void 0,i.__spreadValues.call(void 0,{store:a,name:v},u))})),d=l.memo.call(void 0,l.forwardRef.call(void 0,(function(e){const t=u(e);return l.createElement.call(void 0,"input",t)})));t.FormInput=d,t.useFormInput=u},30587:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(74525),o=a(21236);a(57870);var n=a(19652),l=a(80987);a(7219);var s=a(28148),i=a(60877),c=a(48959),u=a(51609),d=a(10790);var v=n.createHook.call(void 0,(function(e){var t=e,{store:a,name:n,getItem:v}=t,p=s.__objRest.call(void 0,t,["store","name","getItem"]);const m=r.useFormContext.call(void 0);a=a||m,c.invariant.call(void 0,a,!1);const h=l.useId.call(void 0,p.id),f=u.useRef.call(void 0,null),g=`${n}`,w=u.useCallback.call(void 0,(e=>{const t=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{},e),{id:h||e.id,name:g,type:"label"});return v?v(t):t}),[h,g,v]),b=a.useState((e=>e.items.find((e=>"field"===e.type&&e.name===g)))),y=l.useTagName.call(void 0,null==b?void 0:b.element,"input"),x="input"===(_=y)||"textarea"===_||"select"===_||"meter"===_||"progress"===_;var _;const k=p.onClick,E=l.useEvent.call(void 0,(e=>{if(null==k||k(e),e.defaultPrevented)return;if(x)return;const t=null==b?void 0:b.element;t&&queueMicrotask((()=>{const e=i.getFirstTabbableIn.call(void 0,t,!0,!0);null==e||e.focus();"combobox"!==(null==e?void 0:e.getAttribute("role"))&&(null==e||e.click())}))}));return p=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{id:h,render:x?d.jsx.call(void 0,"label",{}):d.jsx.call(void 0,"span",{}),htmlFor:x?null==b?void 0:b.id:void 0},p),{ref:l.useMergeRefs.call(void 0,f,p.ref),onClick:E}),x||(p=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{},p),{style:s.__spreadValues.call(void 0,{cursor:"default"},p.style)})),p=o.useCollectionItem.call(void 0,s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{store:a},p),{getItem:w}))})),p=n.memo.call(void 0,n.forwardRef.call(void 0,(function(e){const t=v(e);return n.createElement.call(void 0,"label",t)})));t.FormLabel=p,t.useFormLabel=v},23184:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(91907),o=a(74525);a(9355),a(57870),a(19652),a(87636),a(80987),a(7219),a(28148);var n=a(10790);t.FormProvider=function(e={}){const t=r.useFormStore.call(void 0,e);return n.jsx.call(void 0,o.FormContextProvider,{value:t,children:e.children})}},12563:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(74525),o=a(70419),n=a(21236);a(29842),a(57870),a(87121),a(73579);var l=a(19652),s=a(80987);a(7219);var i=a(28148),c=a(48959),u=a(51609);var d=l.createHook.call(void 0,(function(e){var t=e,{store:a,value:l,name:d,getItem:v,autoFocusOnClick:p=!0}=t,m=i.__objRest.call(void 0,t,["store","value","name","getItem","autoFocusOnClick"]);const h=r.useFormContext.call(void 0);a=a||h,c.invariant.call(void 0,a,!1);const f=`${d}`,[g,w]=u.useState.call(void 0,!1);u.useEffect.call(void 0,(()=>{var e;if(!g)return;const t=function(e,t){if(!e)return[];const a=[];for(const r of e){if("field"!==r.type)continue;if(!r.name.startsWith(t))continue;const e=r.name.replace(/(\.\d+)\..+$/,"$1"),o=new RegExp(`^${e}`);a.some((e=>o.test(e.name)))||a.push(r)}return a}(null==a?void 0:a.getState().items,f),r=null==(e=null==t?void 0:t[t.length-1])?void 0:e.element;r&&(r.focus(),w(!1))}),[a,g,f]);const b=u.useCallback.call(void 0,(e=>{const t=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},e),{type:"button",name:f});return v?v(t):t}),[f,v]),y=m.onClick,x=s.useEvent.call(void 0,(e=>{null==y||y(e),e.defaultPrevented||(null==a||a.pushValue(f,l),p&&w(!0))}));return m=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},m),{onClick:x}),m=o.useButton.call(void 0,m),m=n.useCollectionItem.call(void 0,i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{store:a},m),{getItem:b}))})),v=l.forwardRef.call(void 0,(function(e){const t=d(e);return l.createElement.call(void 0,"button",t)}));t.FormPush=v,t.useFormPush=d},61802:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(95563);a(69349),a(85171);var o=a(19652);a(80987),a(7219);var n=a(28148),l=o.createHook.call(void 0,(function(e){var t=e,{store:a}=t,o=n.__objRest.call(void 0,t,["store"]);return o=n.__spreadValues.call(void 0,{role:"radiogroup"},o),o=r.useFormGroup.call(void 0,o)})),s=o.forwardRef.call(void 0,(function(e){const t=l(e);return o.createElement.call(void 0,"div",t)}));t.FormRadioGroup=s,t.useFormRadioGroup=l},78864:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(2627),o=a(74525),n=a(90041);a(64494),a(35973),a(21236),a(29842),a(40227),a(42076),a(57870),a(87121),a(73579);var l=a(19652);a(87636);var s=a(80987);a(7219);var i=a(28148),c=a(48959),u=l.createHook.call(void 0,(function(e){var t=e,{store:a,name:l,value:u}=t,d=i.__objRest.call(void 0,t,["store","name","value"]);const v=o.useFormContext.call(void 0);a=a||v,c.invariant.call(void 0,a,!1);const p=`${l}`,m=d.onChange,h=s.useEvent.call(void 0,(e=>{null==m||m(e),e.defaultPrevented||null==a||a.setValue(p,u)})),f=d.checked,g=a.useState((()=>null!=f?f:(null==a?void 0:a.getValue(p))===u));return d=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},d),{checked:g,onChange:h}),d=n.useRadio.call(void 0,i.__spreadValues.call(void 0,{value:u},d)),d=r.useFormControl.call(void 0,i.__spreadValues.call(void 0,{store:a,name:p,"aria-labelledby":void 0},d))})),d=l.memo.call(void 0,l.forwardRef.call(void 0,(function(e){const t=u(e);return l.createElement.call(void 0,"input",t)})));t.FormRadio=d,t.useFormRadio=u},46595:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(74525),o=a(70419);a(29842),a(57870),a(87121),a(73579);var n=a(19652),l=a(80987);a(7219);var s=a(28148),i=a(92725),c=a(48959);var u=n.createHook.call(void 0,(function(e){var t=e,{store:a,name:n,index:u,autoFocusOnClick:d=!0}=t,v=s.__objRest.call(void 0,t,["store","name","index","autoFocusOnClick"]);const p=r.useFormContext.call(void 0);a=a||p,c.invariant.call(void 0,a,!1);const m=`${n}`,h=v.onClick,f=l.useEvent.call(void 0,(e=>{var t;if(null==h||h(e),e.defaultPrevented)return;if(!a)return;if(a.removeValue(m,u),!d)return;const{items:r}=a.getState(),o=function(e,t,a){const r=null==e?void 0:e.filter((e=>"field"===e.type&&e.name.startsWith(t))),o=new RegExp(`^${t}\\.(\\d+)`),n=null==r?void 0:r.find((e=>{const t=e.name.replace(o,"$1");return Number.parseInt(t)>a}));return n||(null==r?void 0:r.reverse().find((e=>{const t=e.name.replace(o,"$1");return Number.parseInt(t)"button"===e.type&&e.name===t))}(r,m);null==(t=null==e?void 0:e.element)||t.focus()}}));return v=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{},v),{onClick:f}),v=o.useButton.call(void 0,v)})),d=n.forwardRef.call(void 0,(function(e){const t=u(e);return n.createElement.call(void 0,"button",t)}));t.FormRemove=d,t.useFormRemove=u},46820:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(74525),o=a(70419);a(29842),a(57870),a(87121),a(73579);var n=a(19652);a(80987),a(7219);var l=a(28148),s=a(48959),i=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const i=r.useFormContext.call(void 0);return a=a||i,s.invariant.call(void 0,a,!1),n=l.__spreadValues.call(void 0,{type:"reset",disabled:a.useState("submitting")},n),n=o.useButton.call(void 0,n)})),c=n.forwardRef.call(void 0,(function(e){const t=i(e);return n.createElement.call(void 0,"button",t)}));t.FormReset=c,t.useFormReset=i},55166:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(91907);a(9355),a(87636),a(80987),a(7219),a(28148),t.useFormStore=r.useFormStore,t.useFormStoreProps=r.useFormStoreProps},71451:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(74525),o=a(70419);a(29842),a(57870),a(87121),a(73579);var n=a(19652);a(80987),a(7219);var l=a(28148),s=a(48959),i=n.createHook.call(void 0,(function(e){var t=e,{store:a,accessibleWhenDisabled:n=!0}=t,i=l.__objRest.call(void 0,t,["store","accessibleWhenDisabled"]);const c=r.useFormContext.call(void 0);return a=a||c,s.invariant.call(void 0,a,!1),i=l.__spreadValues.call(void 0,{type:"submit",disabled:a.useState("submitting")},i),i=o.useButton.call(void 0,l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},i),{accessibleWhenDisabled:n}))})),c=n.forwardRef.call(void 0,(function(e){const t=i(e);return n.createElement.call(void 0,"button",t)}));t.FormSubmit=c,t.useFormSubmit=i},18266:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(74525);a(57870);var o=a(19652),n=a(80987);a(7219);var l=a(28148),s=a(92725),i=a(48959),c=a(51609),u=a(10790),d="form";var v=o.createHook.call(void 0,(function(e){var t=e,{store:a,validateOnChange:o=!0,validateOnBlur:v=!0,resetOnUnmount:p=!1,resetOnSubmit:m=!0,autoFocusOnSubmit:h=!0}=t,f=l.__objRest.call(void 0,t,["store","validateOnChange","validateOnBlur","resetOnUnmount","resetOnSubmit","autoFocusOnSubmit"]);const g=r.useFormContext.call(void 0);a=a||g,i.invariant.call(void 0,a,!1);const w=c.useRef.call(void 0,null),b=a.useState("values"),y=a.useState("submitSucceed"),x=a.useState("submitFailed"),_=a.useState("items"),k=n.useInitialValue.call(void 0,b);c.useEffect.call(void 0,(()=>p?null==a?void 0:a.reset:void 0),[p,a]),n.useUpdateEffect.call(void 0,(()=>{o&&b!==k&&(null==a||a.validate())}),[o,b,k,a]),c.useEffect.call(void 0,(()=>{m&&y&&(null==a||a.reset())}),[m,y,a]);const[E,C]=c.useState.call(void 0,!1);c.useEffect.call(void 0,(()=>{if(!E)return;if(!x)return;const e=function(e){return e.find((e=>{var t;return"field"===e.type&&"true"===(null==(t=e.element)?void 0:t.getAttribute("aria-invalid"))}))}(_),t=null==e?void 0:e.element;t&&(C(!1),t.focus(),s.isTextField.call(void 0,t)&&t.select())}),[h,x,_]);const j=f.onSubmit,A=n.useEvent.call(void 0,(e=>{null==j||j(e),e.defaultPrevented||(e.preventDefault(),null==a||a.submit(),h&&C(!0))})),S=f.onBlur,P=n.useEvent.call(void 0,(e=>{null==S||S(e),e.defaultPrevented||v&&a&&function(e,t){return t.some((t=>"field"===t.type&&t.element===e))}(e.target,a.getState().items)&&a.validate()})),R=f.onReset,M=n.useEvent.call(void 0,(e=>{null==R||R(e),e.defaultPrevented||(e.preventDefault(),null==a||a.reset())}));f=n.useWrapElement.call(void 0,f,(e=>u.jsx.call(void 0,r.FormScopedContextProvider,{value:a,children:e})),[a]);const V=n.useTagName.call(void 0,w,d);return f=l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{role:"form"!==V?"form":void 0,noValidate:!0},f),{ref:n.useMergeRefs.call(void 0,w,f.ref),onSubmit:A,onBlur:P,onReset:M})})),p=o.forwardRef.call(void 0,(function(e){const t=v(e);return o.createElement.call(void 0,d,t)}));t.Form=p,t.useForm=v},30549:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(50864);a(85171),a(19652),a(80987),a(7219),a(28148),t.GroupLabel=r.GroupLabel,t.useGroupLabel=r.useGroupLabel},66128:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(69349);a(85171),a(19652),a(80987),a(7219),a(28148),t.Group=r.Group,t.useGroup=r.useGroup},94029:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(32146);a(63215),a(28148),t.HeadingLevel=r.HeadingLevel},2720:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(35174);a(63215),a(19652),a(80987),a(7219),a(28148),t.Heading=r.Heading,t.useHeading=r.useHeading},54522:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(21407);a(80231),a(77018),a(53944),a(16299),a(87121),a(73579),a(19652),a(80987),a(7219),a(28148),t.HovercardAnchor=r.HovercardAnchor,t.useHovercardAnchor=r.useHovercardAnchor},40804:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(79066);a(45081);var o=a(80231);a(77018),a(53944),a(16299);var n=a(19652);a(80987),a(7219);var l=a(28148),s=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const s=o.useHovercardContext.call(void 0);return a=a||s,n=r.usePopoverArrow.call(void 0,l.__spreadValues.call(void 0,{store:a},n))})),i=n.forwardRef.call(void 0,(function(e){const t=s(e);return n.createElement.call(void 0,"div",t)}));t.HovercardArrow=i,t.useHovercardArrow=s},41354:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(80231);a(77018),a(53944),a(16299),a(19652),a(80987),a(7219),a(28148),t.HovercardContextProvider=r.HovercardContextProvider,t.HovercardScopedContextProvider=r.HovercardScopedContextProvider,t.useHovercardContext=r.useHovercardContext,t.useHovercardProviderContext=r.useHovercardProviderContext,t.useHovercardScopedContext=r.useHovercardScopedContext},54929:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(77864);a(58058),a(99992),a(53944),a(16299),a(19652),a(80987),a(7219),a(28148),t.HovercardDescription=r.HovercardDescription,t.useHovercardDescription=r.useHovercardDescription},34650:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(49190);a(56203),a(70419),a(29842);var o=a(80231);a(77018),a(53944),a(16299),a(87121),a(73579);var n=a(3578),l=a(19652),s=a(80987);a(7219);var i=a(28148),c=a(92725),u=a(77328),d=a(48959),v=a(8766),p=a(51609),m=a(10790),h=l.createHook.call(void 0,(function(e){var t=e,{store:a}=t,l=i.__objRest.call(void 0,t,["store"]);const h=o.useHovercardProviderContext.call(void 0);a=a||h,d.invariant.call(void 0,a,!1);const[f,g]=p.useState.call(void 0,!1);p.useEffect.call(void 0,(()=>{if(!f)return;return u.addGlobalEventListener.call(void 0,"focusout",(e=>{if(!a)return;const t=e.relatedTarget;if(t){const{anchorElement:e,popoverElement:r,disclosureElement:o}=a.getState();if(e&&c.contains.call(void 0,e,t))return;if(r&&c.contains.call(void 0,r,t))return;if(o&&c.contains.call(void 0,o,t))return;if(t.hasAttribute("data-focus-trap"))return}g(!1)}),!0)}),[f,a]),p.useEffect.call(void 0,(()=>v.sync.call(void 0,a,["anchorElement"],(e=>{const t=e.anchorElement;if(!t)return;const a=new MutationObserver((()=>{t.hasAttribute("data-focus-visible")&&g(!0)}));return a.observe(t,{attributeFilter:["data-focus-visible"]}),()=>a.disconnect()}))),[a]);const w=l.onClick,b=s.useEvent.call(void 0,(e=>{null==w||w(e),e.defaultPrevented||null==a||a.setAutoFocusOnShow(!0)})),y=l.onFocus,x=s.useEvent.call(void 0,(e=>{null==y||y(e),e.defaultPrevented||g(!0)})),{style:_}=n.useVisuallyHidden.call(void 0);f||(l=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},l),{style:i.__spreadValues.call(void 0,i.__spreadValues.call(void 0,{},_),l.style)}));const k=m.jsx.call(void 0,"svg",{display:"block",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:1.5,viewBox:"0 0 16 16",height:"1em",width:"1em",children:m.jsx.call(void 0,"polyline",{points:"4,6 8,10 12,6"})});return l=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{children:k},l),{ref:s.useMergeRefs.call(void 0,a.setDisclosureElement,l.ref),onClick:b,onFocus:x}),l=r.useDialogDisclosure.call(void 0,i.__spreadValues.call(void 0,{store:a},l))})),f=l.forwardRef.call(void 0,(function(e){const t=h(e);return l.createElement.call(void 0,"button",t)}));t.HovercardDisclosure=f,t.useHovercardDisclosure=h},81439:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(97322);a(90604),a(60762),a(70419),a(29842),a(80231),a(77018),a(53944),a(16299),a(87121),a(73579),a(19652),a(80987),a(7219),a(28148),t.HovercardDismiss=r.HovercardDismiss,t.useHovercardDismiss=r.useHovercardDismiss},3129:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(39490);a(33356),a(22510),a(35174),a(63215),a(53944),a(16299),a(19652),a(80987),a(7219),a(28148),t.HovercardHeading=r.HovercardHeading,t.useHovercardHeading=r.useHovercardHeading},95522:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(80231);a(77018),a(53944),a(16299),a(19652);var o=a(46423);a(44448),a(95691),a(38980),a(87636),a(80987),a(7219),a(28148);var n=a(10790);t.HovercardProvider=function(e={}){const t=o.useHovercardStore.call(void 0,e);return n.jsx.call(void 0,r.HovercardContextProvider,{value:t,children:e.children})}},51776:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(46423);a(44448),a(95691),a(38980),a(87636),a(80987),a(7219),a(28148),t.useHovercardStore=r.useHovercardStore,t.useHovercardStoreProps=r.useHovercardStoreProps},32880:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(82109);a(68725),a(39861),a(28293),a(12204),a(19387),a(70663),a(33043),a(8549),a(89169),a(68842),a(21676),a(85325),a(26327),a(91605),a(48960),a(94818),a(49464),a(99471),a(82203),a(32146),a(9018),a(54844),a(67722),a(63215),a(77723),a(12707),a(80231),a(77018),a(53944),a(16299),a(87121),a(73579),a(3578),a(19652),a(95691),a(38980),a(87636),a(80987),a(7219),a(28148),t.Hovercard=r.Hovercard,t.useHovercard=r.useHovercard},79732:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(7168);a(48427);var o=a(79066);a(45081),a(42076),a(57870),a(80231),a(77018),a(53944),a(16299);var n=a(19652);a(80987),a(7219);var l=a(28148),s=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const s=r.useMenuContext.call(void 0);return a=a||s,o.usePopoverArrow.call(void 0,l.__spreadValues.call(void 0,{store:a},n))})),i=n.forwardRef.call(void 0,(function(e){const t=s(e);return n.createElement.call(void 0,"div",t)}));t.MenuArrow=i,t.useMenuArrow=s},97162:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(50858);a(48427),a(32413),a(99366),a(9355),a(42076),a(57870),a(19652),a(87636),a(80987),a(7219);var o=a(28148),n=a(51609),l=a(10790);t.MenuBarProvider=function(e={}){return n.useEffect.call(void 0,(()=>{0}),[]),l.jsx.call(void 0,r.MenubarProvider,o.__spreadValues.call(void 0,{},e))}},70856:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(32413);a(99366),a(9355),a(87636),a(80987),a(7219),a(28148);var o=a(51609);t.useMenuBarStore=function(e={}){return o.useEffect.call(void 0,(()=>{0}),[]),r.useMenubarStore.call(void 0,e)},t.useMenuBarStoreProps=function(e,t,a){return r.useMenubarStoreProps.call(void 0,e,t,a)}},17848:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(18874);a(48427),a(32413),a(9229),a(40227),a(99366),a(9355),a(42076),a(57870),a(87121),a(73579);var o=a(19652);a(87636),a(80987),a(7219),a(28148);var n=a(51609),l=o.createHook.call(void 0,(function(e){return n.useEffect.call(void 0,(()=>{0}),[]),r.useMenubar.call(void 0,e)})),s=o.forwardRef.call(void 0,(function(e){const t=l(e);return o.createElement.call(void 0,"div",t)}));t.MenuBar=s,t.useMenuBar=l},84281:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(7168);a(48427);var o=a(77673);a(42076),a(57870),a(80231),a(77018),a(53944),a(16299);var n=a(19652);a(80987),a(7219);var l=a(28148),s=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const s=r.useMenuContext.call(void 0);return a=a||s,n=o.usePopoverDisclosureArrow.call(void 0,l.__spreadValues.call(void 0,{store:a},n))})),i=n.forwardRef.call(void 0,(function(e){const t=s(e);return n.createElement.call(void 0,"span",t)}));t.MenuButtonArrow=i,t.useMenuButtonArrow=s},17517:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(7168);a(48427);var o=a(66342);a(49190),a(56203),a(51500),a(70419);var n=a(68666);a(29842);var l=a(21407);a(40227),a(42076),a(57870);var s=a(12707);a(80231),a(77018),a(53944),a(16299),a(87121),a(73579);var i=a(19652),c=a(87636),u=a(80987);a(7219);var d=a(28148),v=a(92725),p=a(48959),m=a(51609),h=a(10790);function f(e,t){return!!(null==e?void 0:e.some((e=>!!e.element&&(e.element!==t&&"true"===e.element.getAttribute("aria-expanded")))))}var g=i.createHook.call(void 0,(function(e){var t=e,{store:a,focusable:i,accessibleWhenDisabled:g,showOnHover:w}=t,b=d.__objRest.call(void 0,t,["store","focusable","accessibleWhenDisabled","showOnHover"]);const y=r.useMenuProviderContext.call(void 0);a=a||y,p.invariant.call(void 0,a,!1);const x=m.useRef.call(void 0,null),_=a.parent,k=a.menubar,E=!!_,C=!!k&&!E,j=p.disabledFromProps.call(void 0,b),A=()=>{const e=x.current;e&&(null==a||a.setDisclosureElement(e),null==a||a.setAnchorElement(e),null==a||a.show())},S=b.onFocus,P=u.useEvent.call(void 0,(e=>{if(null==S||S(e),j)return;if(e.defaultPrevented)return;if(null==a||a.setAutoFocusOnShow(!1),null==a||a.setActiveId(null),!k)return;if(!C)return;const{items:t}=k.getState();f(t,e.currentTarget)&&A()})),R=c.useStoreState.call(void 0,a,(e=>e.placement.split("-")[0])),M=b.onKeyDown,V=u.useEvent.call(void 0,(e=>{if(null==M||M(e),j)return;if(e.defaultPrevented)return;const t=function(e,t){return{ArrowDown:("bottom"===t||"top"===t)&&"first",ArrowUp:("bottom"===t||"top"===t)&&"last",ArrowRight:"right"===t&&"first",ArrowLeft:"left"===t&&"first"}[e.key]}(e,R);t&&(e.preventDefault(),A(),null==a||a.setAutoFocusOnShow(!0),null==a||a.setInitialFocus(t))})),z=b.onClick,H=u.useEvent.call(void 0,(e=>{if(null==z||z(e),e.defaultPrevented)return;if(!a)return;const t=!e.detail,{open:r}=a.getState();r&&!t||(E&&!t||a.setAutoFocusOnShow(!0),a.setInitialFocus(t?"first":"container")),E&&A()}));b=u.useWrapElement.call(void 0,b,(e=>h.jsx.call(void 0,r.MenuContextProvider,{value:a,children:e})),[a]),E&&(b=d.__spreadProps.call(void 0,d.__spreadValues.call(void 0,{},b),{render:h.jsx.call(void 0,s.Role.div,{render:b.render})}));const L=u.useId.call(void 0,b.id),O=c.useStoreState.call(void 0,(null==_?void 0:_.combobox)||_,"contentElement"),N=E||C?v.getPopupItemRole.call(void 0,O,"menuitem"):void 0,I=a.useState("contentElement");return b=d.__spreadProps.call(void 0,d.__spreadValues.call(void 0,{id:L,role:N,"aria-haspopup":v.getPopupRole.call(void 0,I,"menu")},b),{ref:u.useMergeRefs.call(void 0,x,b.ref),onFocus:P,onKeyDown:V,onClick:H}),b=l.useHovercardAnchor.call(void 0,d.__spreadProps.call(void 0,d.__spreadValues.call(void 0,{store:a,focusable:i,accessibleWhenDisabled:g},b),{showOnHover:e=>{if(!(()=>{if("function"==typeof w)return w(e);if(null!=w)return w;if(E)return!0;if(!k)return!1;const{items:t}=k.getState();return C&&f(t)})())return!1;const t=C?k:_;return!t||(t.setActiveId(e.currentTarget.id),!0)}})),b=o.usePopoverDisclosure.call(void 0,d.__spreadValues.call(void 0,{store:a,toggleOnClick:!E,focusable:i,accessibleWhenDisabled:g},b)),b=n.useCompositeTypeahead.call(void 0,d.__spreadValues.call(void 0,{store:a,typeahead:C},b))})),w=i.forwardRef.call(void 0,(function(e){const t=g(e);return i.createElement.call(void 0,"button",t)}));t.MenuButton=w,t.useMenuButton=g},66906:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(7168);a(48427),a(42076),a(57870),a(80231),a(77018),a(53944),a(16299),a(19652),a(80987),a(7219),a(28148),t.MenuBarContextProvider=r.MenuBarContextProvider,t.MenuBarScopedContextProvider=r.MenuBarScopedContextProvider,t.MenuContextProvider=r.MenuContextProvider,t.MenuItemCheckedContext=r.MenuItemCheckedContext,t.MenuScopedContextProvider=r.MenuScopedContextProvider,t.useMenuBarContext=r.useMenuBarContext,t.useMenuBarProviderContext=r.useMenuBarProviderContext,t.useMenuBarScopedContext=r.useMenuBarScopedContext,t.useMenuContext=r.useMenuContext,t.useMenuProviderContext=r.useMenuProviderContext,t.useMenuScopedContext=r.useMenuScopedContext},91425:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(77864);a(58058),a(99992),a(53944),a(16299);var o=a(19652);a(80987),a(7219),a(28148);var n=o.createHook.call(void 0,(function(e){return e=r.useHovercardDescription.call(void 0,e)})),l=o.forwardRef.call(void 0,(function(e){const t=n(e);return o.createElement.call(void 0,"p",t)}));t.MenuDescription=l,t.useMenuDescription=n},54415:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(97322),o=a(7168);a(48427),a(90604),a(60762),a(70419),a(29842),a(42076),a(57870),a(80231),a(77018),a(53944),a(16299),a(87121),a(73579);var n=a(19652);a(80987),a(7219);var l=a(28148),s=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const s=o.useMenuScopedContext.call(void 0);return a=a||s,n=r.useHovercardDismiss.call(void 0,l.__spreadValues.call(void 0,{store:a},n))})),i=n.forwardRef.call(void 0,(function(e){const t=s(e);return n.createElement.call(void 0,"button",t)}));t.MenuDismiss=i,t.useMenuDismiss=s},15995:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(59190);a(50864),a(85171);var o=a(19652);a(80987),a(7219),a(28148);var n=o.createHook.call(void 0,(function(e){return e=r.useCompositeGroupLabel.call(void 0,e)})),l=o.forwardRef.call(void 0,(function(e){const t=n(e);return o.createElement.call(void 0,"div",t)}));t.MenuGroupLabel=l,t.useMenuGroupLabel=n},45242:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(91520);a(69349),a(85171);var o=a(19652);a(80987),a(7219),a(28148);var n=o.createHook.call(void 0,(function(e){return e=r.useCompositeGroup.call(void 0,e)})),l=o.forwardRef.call(void 0,(function(e){const t=n(e);return o.createElement.call(void 0,"div",t)}));t.MenuGroup=l,t.useMenuGroup=n},87593:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(39490);a(33356),a(22510),a(35174),a(63215),a(53944),a(16299);var o=a(19652);a(80987),a(7219),a(28148);var n=o.createHook.call(void 0,(function(e){return e=r.useHovercardHeading.call(void 0,e)})),l=o.forwardRef.call(void 0,(function(e){const t=n(e);return o.createElement.call(void 0,"h1",t)}));t.MenuHeading=l,t.useMenuHeading=n},42259:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(7168);a(48427);var o=a(53443);a(67804),a(42076),a(57870),a(80231),a(77018),a(53944),a(16299);var n=a(19652);a(80987),a(7219);var l=a(28148),s=a(51609),i=n.createHook.call(void 0,(function(e){var t=e,{store:a,checked:n}=t,i=l.__objRest.call(void 0,t,["store","checked"]);const c=s.useContext.call(void 0,r.MenuItemCheckedContext);return n=null!=n?n:c,i=o.useCheckboxCheck.call(void 0,l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},i),{checked:n}))})),c=n.forwardRef.call(void 0,(function(e){const t=i(e);return n.createElement.call(void 0,"span",t)}));t.MenuItemCheck=c,t.useMenuItemCheck=i},2610:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(71385),o=a(26621);a(85826);var n=a(92526),l=a(7168);a(48427),a(61150),a(67804),a(35973),a(21236),a(29842),a(40227),a(42076),a(57870),a(80231),a(77018),a(53944),a(16299),a(87121),a(73579);var s=a(19652);a(87636);var i=a(80987);a(7219);var c=a(28148),u=a(48959),d=a(51609);function v(e,t,a){if(void 0===t)return Array.isArray(e)?e:!!a;const r=function(e){return Array.isArray(e)?e.toString():e}(t);return Array.isArray(e)?a?e.includes(r)?e:[...e,r]:e.filter((e=>e!==r)):a?r:e!==r&&e}var p=s.createHook.call(void 0,(function(e){var t=e,{store:a,name:s,value:p,checked:m,defaultChecked:h,hideOnClick:f=!1}=t,g=c.__objRest.call(void 0,t,["store","name","value","checked","defaultChecked","hideOnClick"]);const w=l.useMenuScopedContext.call(void 0);a=a||w,u.invariant.call(void 0,a,!1);const b=i.useInitialValue.call(void 0,h);d.useEffect.call(void 0,(()=>{null==a||a.setValue(s,((e=[])=>b?v(e,p,!0):e))}),[a,s,p,b]),d.useEffect.call(void 0,(()=>{void 0!==m&&(null==a||a.setValue(s,(e=>v(e,p,m))))}),[a,s,p,m]);const y=o.useCheckboxStore.call(void 0,{value:a.useState((e=>e.values[s])),setValue(e){null==a||a.setValue(s,(()=>{if(void 0===m)return e;const t=v(e,p,m);return Array.isArray(t)&&Array.isArray(e)&&u.shallowEqual.call(void 0,e,t)?e:t}))}});return g=c.__spreadValues.call(void 0,{role:"menuitemcheckbox"},g),g=r.useCheckbox.call(void 0,c.__spreadValues.call(void 0,{store:y,name:s,value:p,checked:m},g)),g=n.useMenuItem.call(void 0,c.__spreadValues.call(void 0,{store:a,hideOnClick:f},g))})),m=s.memo.call(void 0,s.forwardRef.call(void 0,(function(e){const t=p(e);return s.createElement.call(void 0,"div",t)})));t.MenuItemCheckbox=m,t.useMenuItemCheckbox=p},70334:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(92526),o=a(7168);a(48427);var n=a(90041);a(64494),a(61150),a(35973),a(21236),a(29842),a(40227),a(42076),a(57870),a(80231),a(77018),a(53944),a(16299),a(87121),a(73579);var l=a(19652);a(87636);var s=a(80987);a(7219);var i=a(28148),c=a(48959),u=a(51609),d=a(10790);function v(e,t,a){return void 0===a?e:a?t:e}var p=l.createHook.call(void 0,(function(e){var t=e,{store:a,name:l,value:p,checked:m,onChange:h,hideOnClick:f=!1}=t,g=i.__objRest.call(void 0,t,["store","name","value","checked","onChange","hideOnClick"]);const w=o.useMenuScopedContext.call(void 0);a=a||w,c.invariant.call(void 0,a,!1);const b=s.useInitialValue.call(void 0,g.defaultChecked);u.useEffect.call(void 0,(()=>{null==a||a.setValue(l,((e=!1)=>v(e,p,b)))}),[a,l,p,b]),u.useEffect.call(void 0,(()=>{void 0!==m&&(null==a||a.setValue(l,(e=>v(e,p,m))))}),[a,l,p,m]);const y=a.useState((e=>e.values[l]===p));return g=s.useWrapElement.call(void 0,g,(e=>d.jsx.call(void 0,o.MenuItemCheckedContext.Provider,{value:!!y,children:e})),[y]),g=i.__spreadValues.call(void 0,{role:"menuitemradio"},g),g=n.useRadio.call(void 0,i.__spreadValues.call(void 0,{name:l,value:p,checked:y,onChange(e){if(null==h||h(e),e.defaultPrevented)return;const t=e.currentTarget;null==a||a.setValue(l,(e=>v(e,p,null!=m?m:t.checked)))}},g)),g=r.useMenuItem.call(void 0,i.__spreadValues.call(void 0,{store:a,hideOnClick:f},g))})),m=l.memo.call(void 0,l.forwardRef.call(void 0,(function(e){const t=p(e);return l.createElement.call(void 0,"div",t)})));t.MenuItemRadio=m,t.useMenuItemRadio=p},28592:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(92526);a(7168),a(48427),a(61150),a(35973),a(21236),a(29842),a(40227),a(42076),a(57870),a(80231),a(77018),a(53944),a(16299),a(87121),a(73579),a(19652),a(87636),a(80987),a(7219),a(28148),t.MenuItem=r.MenuItem,t.useMenuItem=r.useMenuItem},78933:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(41196);a(7168),a(48427),a(68666),a(9229),a(40227),a(42076),a(57870),a(77723),a(80231),a(77018),a(53944),a(16299),a(87121),a(73579),a(19652),a(87636),a(80987),a(7219),a(28148),t.MenuList=r.MenuList,t.useMenuList=r.useMenuList},92466:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(93704),o=a(7168);a(48427),a(96475),a(99366),a(9355),a(42076),a(57870),a(80231),a(77018),a(53944),a(16299),a(19652),a(46423),a(44448),a(95691),a(38980),a(87636),a(80987),a(7219),a(28148);var n=a(10790);t.MenuProvider=function(e={}){const t=r.useMenuStore.call(void 0,e);return n.jsx.call(void 0,o.MenuContextProvider,{value:t,children:e.children})}},75854:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(7168);a(48427);var o=a(86005);a(52954),a(42076),a(57870),a(80231),a(77018),a(53944),a(16299);var n=a(19652);a(80987),a(7219);var l=a(28148),s=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const s=r.useMenuContext.call(void 0);return a=a||s,n=o.useCompositeSeparator.call(void 0,l.__spreadValues.call(void 0,{store:a},n))})),i=n.forwardRef.call(void 0,(function(e){const t=s(e);return n.createElement.call(void 0,"hr",t)}));t.MenuSeparator=i,t.useMenuSeparator=s},84592:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(93704);a(7168),a(48427),a(96475),a(99366),a(9355),a(42076),a(57870),a(80231),a(77018),a(53944),a(16299),a(19652),a(46423),a(44448),a(95691),a(38980),a(87636),a(80987),a(7219),a(28148),t.useMenuStore=r.useMenuStore,t.useMenuStoreProps=r.useMenuStoreProps},94112:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(41196),o=a(7168);a(48427),a(68666),a(9229),a(40227),a(42076),a(57870);var n=a(82109);a(68725),a(39861);var l=a(28293);a(12204),a(19387),a(70663),a(33043),a(8549),a(89169),a(68842),a(21676),a(85325),a(26327),a(91605),a(48960),a(94818),a(49464),a(99471),a(82203),a(32146),a(9018),a(54844),a(67722),a(63215),a(77723),a(12707),a(80231),a(77018),a(53944),a(16299),a(87121),a(73579),a(3578);var s=a(19652);a(95691),a(38980);var i=a(87636),c=a(80987);a(7219);var u=a(28148),d=a(77328),v=a(60877),p=a(48959),m=a(51609),h=s.createHook.call(void 0,(function(e){var t=e,{store:a,modal:l=!1,portal:s=!!l,hideOnEscape:h=!0,autoFocusOnShow:f=!0,hideOnHoverOutside:g,alwaysVisible:w}=t,b=u.__objRest.call(void 0,t,["store","modal","portal","hideOnEscape","autoFocusOnShow","hideOnHoverOutside","alwaysVisible"]);const y=o.useMenuProviderContext.call(void 0);a=a||y,p.invariant.call(void 0,a,!1);const x=m.useRef.call(void 0,null),_=a.parent,k=a.menubar,E=!!_,C=!!k&&!E;b=u.__spreadProps.call(void 0,u.__spreadValues.call(void 0,{},b),{ref:c.useMergeRefs.call(void 0,x,b.ref)});const j=r.useMenuList.call(void 0,u.__spreadValues.call(void 0,{store:a,alwaysVisible:w},b)),{"aria-labelledby":A}=j;b=u.__objRest.call(void 0,j,["aria-labelledby"]);const[S,P]=m.useState.call(void 0),R=a.useState("autoFocusOnShow"),M=a.useState("initialFocus"),V=a.useState("baseElement"),z=a.useState("renderedItems");m.useEffect.call(void 0,(()=>{let e=!1;return P((t=>{var a,r,o;if(e)return;if(!R)return;if(null==(a=null==t?void 0:t.current)?void 0:a.isConnected)return t;const n=m.createRef.call(void 0);switch(M){case"first":n.current=(null==(r=z.find((e=>!e.disabled&&e.element)))?void 0:r.element)||null;break;case"last":n.current=(null==(o=[...z].reverse().find((e=>!e.disabled&&e.element)))?void 0:o.element)||null;break;default:n.current=V}return n})),()=>{e=!0}}),[a,R,M,z,V]);const H=!E&&l,L=!!f,O=!!S||!!b.initialFocus||!!H,N=i.useStoreState.call(void 0,a.combobox||a,"contentElement"),I=i.useStoreState.call(void 0,(null==_?void 0:_.combobox)||_,"contentElement"),B=m.useMemo.call(void 0,(()=>{if(!I)return;if(!N)return;const e=N.getAttribute("role"),t=I.getAttribute("role");return"menu"!==t&&"menubar"!==t||"menu"!==e?I:void 0}),[N,I]);return void 0!==B&&(b=u.__spreadValues.call(void 0,{preserveTabOrderAnchor:B},b)),b=n.useHovercard.call(void 0,u.__spreadProps.call(void 0,u.__spreadValues.call(void 0,{store:a,alwaysVisible:w,initialFocus:S,autoFocusOnShow:L?O&&f:R||!!H},b),{hideOnEscape:e=>!p.isFalsyBooleanCallback.call(void 0,h,e)&&(null==a||a.hideAll(),!0),hideOnHoverOutside(e){const t=null==a?void 0:a.getState().disclosureElement;return!!("function"==typeof g?g(e):null!=g?g:E||C&&(!t||!v.hasFocusWithin.call(void 0,t)))&&(!!e.defaultPrevented||(!E||(!t||(d.fireEvent.call(void 0,t,"mouseout",e),!v.hasFocusWithin.call(void 0,t)||(requestAnimationFrame((()=>{v.hasFocusWithin.call(void 0,t)||null==a||a.hide()})),!1)))))},modal:H,portal:s,backdrop:!E&&b.backdrop})),b=u.__spreadValues.call(void 0,{"aria-labelledby":A},b)})),f=l.createDialogComponent.call(void 0,s.forwardRef.call(void 0,(function(e){const t=h(e);return s.createElement.call(void 0,"div",t)})),o.useMenuProviderContext);t.Menu=f,t.useMenu=h},21046:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(48427);a(42076),a(57870),a(19652),a(80987),a(7219),a(28148),t.MenuItemCheckedContext=r.MenuItemCheckedContext,t.MenubarContextProvider=r.MenubarContextProvider,t.MenubarScopedContextProvider=r.MenubarScopedContextProvider,t.useMenubarContext=r.useMenubarContext,t.useMenubarProviderContext=r.useMenubarProviderContext,t.useMenubarScopedContext=r.useMenubarScopedContext},76590:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(50858);a(48427),a(32413),a(99366),a(9355),a(42076),a(57870),a(19652),a(87636),a(80987),a(7219),a(28148),t.MenubarProvider=r.MenubarProvider},60876:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(32413);a(99366),a(9355),a(87636),a(80987),a(7219),a(28148),t.useMenubarStore=r.useMenubarStore,t.useMenubarStoreProps=r.useMenubarStoreProps},66732:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(18874);a(48427),a(32413),a(9229),a(40227),a(99366),a(9355),a(42076),a(57870),a(87121),a(73579),a(19652),a(87636),a(80987),a(7219),a(28148),t.Menubar=r.Menubar,t.useMenubar=r.useMenubar},77850:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(51500);a(77018),a(53944),a(16299),a(19652),a(80987),a(7219),a(28148),t.PopoverAnchor=r.PopoverAnchor,t.usePopoverAnchor=r.usePopoverAnchor},84612:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(79066);a(45081),a(77018),a(53944),a(16299),a(19652),a(80987),a(7219),a(28148),t.PopoverArrow=r.PopoverArrow,t.usePopoverArrow=r.usePopoverArrow},61930:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(77018);a(53944),a(16299),a(19652),a(80987),a(7219),a(28148),t.PopoverContextProvider=r.PopoverContextProvider,t.PopoverScopedContextProvider=r.PopoverScopedContextProvider,t.usePopoverContext=r.usePopoverContext,t.usePopoverProviderContext=r.usePopoverProviderContext,t.usePopoverScopedContext=r.usePopoverScopedContext},47729:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(58058);a(99992),a(53944),a(16299),a(19652),a(80987),a(7219),a(28148),t.PopoverDescription=r.PopoverDescription,t.usePopoverDescription=r.usePopoverDescription},36526:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(77673);a(77018),a(53944),a(16299),a(19652),a(80987),a(7219),a(28148),t.PopoverDisclosureArrow=r.PopoverDisclosureArrow,t.usePopoverDisclosureArrow=r.usePopoverDisclosureArrow},36634:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(66342);a(49190),a(56203),a(51500),a(70419),a(29842),a(77018),a(53944),a(16299),a(87121),a(73579),a(19652),a(80987),a(7219),a(28148),t.PopoverDisclosure=r.PopoverDisclosure,t.usePopoverDisclosure=r.usePopoverDisclosure},26111:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(90604);a(60762),a(70419),a(29842),a(77018),a(53944),a(16299),a(87121),a(73579),a(19652),a(80987),a(7219),a(28148),t.PopoverDismiss=r.PopoverDismiss,t.usePopoverDismiss=r.usePopoverDismiss},39257:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(33356);a(22510),a(35174),a(63215),a(53944),a(16299),a(19652),a(80987),a(7219),a(28148),t.PopoverHeading=r.PopoverHeading,t.usePopoverHeading=r.usePopoverHeading},25570:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(77018);a(53944),a(16299),a(19652);var o=a(44448);a(95691),a(38980),a(87636),a(80987),a(7219),a(28148);var n=a(10790);t.PopoverProvider=function(e={}){const t=o.usePopoverStore.call(void 0,e);return n.jsx.call(void 0,r.PopoverContextProvider,{value:t,children:e.children})}},40416:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(44448);a(95691),a(38980),a(87636),a(80987),a(7219),a(28148),t.usePopoverStore=r.usePopoverStore,t.usePopoverStoreProps=r.usePopoverStoreProps},58416:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(39861);a(28293),a(12204),a(19387),a(70663),a(33043),a(8549),a(89169),a(68842),a(21676),a(85325),a(26327),a(91605),a(48960),a(94818),a(49464),a(99471),a(82203),a(32146),a(9018),a(54844),a(67722),a(63215),a(77723),a(12707),a(77018),a(53944),a(16299),a(87121),a(73579),a(3578),a(19652),a(95691),a(38980),a(87636),a(80987),a(7219),a(28148),t.Popover=r.Popover,t.usePopover=r.usePopover},67548:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(67722);a(28148),t.PortalContext=r.PortalContext},58502:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(9018);a(54844),a(67722),a(3578),a(19652),a(80987),a(7219),a(28148),t.Portal=r.Portal,t.usePortal=r.usePortal},51298:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(64494);a(42076),a(57870),a(19652),a(80987),a(7219),a(28148),t.RadioContextProvider=r.RadioContextProvider,t.RadioScopedContextProvider=r.RadioScopedContextProvider,t.useRadioContext=r.useRadioContext,t.useRadioProviderContext=r.useRadioProviderContext,t.useRadioScopedContext=r.useRadioScopedContext},3970:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(64494),o=a(9229);a(40227),a(42076),a(57870),a(87121),a(73579);var n=a(19652),l=a(80987);a(7219);var s=a(28148),i=a(48959),c=a(10790),u=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=s.__objRest.call(void 0,t,["store"]);const u=r.useRadioProviderContext.call(void 0);return a=a||u,i.invariant.call(void 0,a,!1),n=l.useWrapElement.call(void 0,n,(e=>c.jsx.call(void 0,r.RadioScopedContextProvider,{value:a,children:e})),[a]),n=s.__spreadValues.call(void 0,{role:"radiogroup"},n),n=o.useComposite.call(void 0,s.__spreadValues.call(void 0,{store:a},n))})),d=n.forwardRef.call(void 0,(function(e){const t=u(e);return n.createElement.call(void 0,"div",t)}));t.RadioGroup=d,t.useRadioGroup=u},14490:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(12019),o=a(64494);a(99366),a(9355),a(42076),a(57870),a(19652),a(87636),a(80987),a(7219),a(28148);var n=a(10790);t.RadioProvider=function(e={}){const t=r.useRadioStore.call(void 0,e);return n.jsx.call(void 0,o.RadioContextProvider,{value:t,children:e.children})}},63512:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(12019);a(99366),a(9355),a(87636),a(80987),a(7219),a(28148),t.useRadioStore=r.useRadioStore,t.useRadioStoreProps=r.useRadioStoreProps},57672:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(90041);a(64494),a(35973),a(21236),a(29842),a(40227),a(42076),a(57870),a(87121),a(73579),a(19652),a(87636),a(80987),a(7219),a(28148),t.Radio=r.Radio,t.useRadio=r.useRadio},2462:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(12707);a(19652),a(80987),a(7219),a(28148),t.Role=r.Role,t.useRole=r.useRole},92622:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(46503);a(77673),a(72707),a(42076),a(57870),a(77018),a(53944),a(16299),a(19652),a(80987),a(7219),a(28148),t.SelectArrow=r.SelectArrow,t.useSelectArrow=r.useSelectArrow},40432:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(72707);a(42076),a(57870),a(77018),a(53944),a(16299),a(19652),a(80987),a(7219),a(28148),t.SelectContextProvider=r.SelectContextProvider,t.SelectHeadingContext=r.SelectHeadingContext,t.SelectItemCheckedContext=r.SelectItemCheckedContext,t.SelectScopedContextProvider=r.SelectScopedContextProvider,t.useSelectContext=r.useSelectContext,t.useSelectProviderContext=r.useSelectProviderContext,t.useSelectScopedContext=r.useSelectScopedContext},45045:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(90604);a(60762),a(70419);var o=a(72707);a(29842),a(42076),a(57870),a(77018),a(53944),a(16299),a(87121),a(73579);var n=a(19652);a(80987),a(7219);var l=a(28148),s=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const s=o.useSelectScopedContext.call(void 0);return a=a||s,n=r.usePopoverDismiss.call(void 0,l.__spreadValues.call(void 0,{store:a},n))})),i=n.forwardRef.call(void 0,(function(e){const t=s(e);return n.createElement.call(void 0,"button",t)}));t.SelectDismiss=i,t.useSelectDismiss=s},42149:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(59190);a(50864),a(85171);var o=a(19652);a(80987),a(7219),a(28148);var n=o.createHook.call(void 0,(function(e){return e=r.useCompositeGroupLabel.call(void 0,e)})),l=o.forwardRef.call(void 0,(function(e){const t=n(e);return o.createElement.call(void 0,"div",t)}));t.SelectGroupLabel=l,t.useSelectGroupLabel=n},18080:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(91520);a(69349),a(85171);var o=a(19652);a(80987),a(7219),a(28148);var n=o.createHook.call(void 0,(function(e){return e=r.useCompositeGroup.call(void 0,e)})),l=o.forwardRef.call(void 0,(function(e){const t=n(e);return o.createElement.call(void 0,"div",t)}));t.SelectGroup=l,t.useSelectGroup=n},26219:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(33356);a(22510),a(35174);var o=a(72707);a(42076),a(57870),a(63215),a(77018),a(53944),a(16299);var n=a(19652),l=a(80987);a(7219);var s=a(28148),i=a(51609),c=n.createHook.call(void 0,(function(e){const[,t]=i.useContext.call(void 0,o.SelectHeadingContext)||[],a=l.useId.call(void 0,e.id);return l.useSafeLayoutEffect.call(void 0,(()=>(null==t||t(a),()=>null==t?void 0:t(void 0))),[t,a]),e=s.__spreadValues.call(void 0,{id:a},e),e=r.usePopoverHeading.call(void 0,e)})),u=n.forwardRef.call(void 0,(function(e){const t=c(e);return n.createElement.call(void 0,"h1",t)}));t.SelectHeading=u,t.useSelectHeading=c},12933:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(53443);a(67804);var o=a(72707);a(42076),a(57870),a(77018),a(53944),a(16299);var n=a(19652);a(80987),a(7219);var l=a(28148),s=a(51609),i=n.createHook.call(void 0,(function(e){var t=e,{store:a,checked:n}=t,i=l.__objRest.call(void 0,t,["store","checked"]);const c=s.useContext.call(void 0,o.SelectItemCheckedContext);return n=null!=n?n:c,i=r.useCheckboxCheck.call(void 0,l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{},i),{checked:n}))})),c=n.forwardRef.call(void 0,(function(e){const t=i(e);return n.createElement.call(void 0,"span",t)}));t.SelectItemCheck=c,t.useSelectItemCheck=i},28670:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(42888);a(61150),a(72707),a(35973),a(21236),a(29842),a(40227),a(42076),a(57870),a(77018),a(53944),a(16299),a(87121),a(73579),a(19652),a(87636),a(80987),a(7219),a(28148),t.SelectItem=r.SelectItem,t.useSelectItem=r.useSelectItem},93019:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(72707);a(42076),a(57870),a(77018),a(53944),a(16299);var o=a(19652),n=a(80987);a(7219);var l=a(28148),s=a(48959),i=o.createHook.call(void 0,(function(e){var t=e,{store:a}=t,o=l.__objRest.call(void 0,t,["store"]);const i=r.useSelectProviderContext.call(void 0);a=a||i,s.invariant.call(void 0,a,!1);const c=n.useId.call(void 0,o.id),u=o.onClick,d=n.useEvent.call(void 0,(e=>{null==u||u(e),e.defaultPrevented||queueMicrotask((()=>{const e=null==a?void 0:a.getState().selectElement;null==e||e.focus()}))}));return o=l.__spreadProps.call(void 0,l.__spreadValues.call(void 0,{id:c},o),{ref:n.useMergeRefs.call(void 0,a.setLabelElement,o.ref),onClick:d,style:l.__spreadValues.call(void 0,{cursor:"default"},o.style)}),s.removeUndefinedValues.call(void 0,o)})),c=o.memo.call(void 0,o.forwardRef.call(void 0,(function(e){const t=i(e);return o.createElement.call(void 0,"div",t)})));t.SelectLabel=c,t.useSelectLabel=i},68175:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(32816);a(68666),a(72707),a(9229),a(40227),a(42076),a(57870),a(77723),a(77018),a(53944),a(16299),a(87121),a(73579),a(19652),a(87636),a(80987),a(7219),a(28148),t.SelectList=r.SelectList,t.useSelectList=r.useSelectList},21506:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(32816);a(68666);var o=a(72707);a(9229),a(40227),a(42076),a(57870);var n=a(39861),l=a(28293);a(12204),a(19387),a(70663),a(33043),a(8549),a(89169),a(68842),a(21676),a(85325),a(26327),a(91605),a(48960),a(94818),a(49464),a(99471),a(82203),a(32146),a(9018),a(54844),a(67722),a(63215),a(77723),a(12707),a(77018),a(53944),a(16299),a(87121),a(73579),a(3578);var s=a(19652);a(95691),a(38980),a(87636),a(80987),a(7219);var i=a(28148),c=s.createHook.call(void 0,(function(e){var t=e,{store:a,alwaysVisible:l}=t,s=i.__objRest.call(void 0,t,["store","alwaysVisible"]);const c=o.useSelectProviderContext.call(void 0);return a=a||c,s=r.useSelectList.call(void 0,i.__spreadValues.call(void 0,{store:a,alwaysVisible:l},s)),s=n.usePopover.call(void 0,i.__spreadValues.call(void 0,{store:a,alwaysVisible:l},s))})),u=l.createDialogComponent.call(void 0,s.forwardRef.call(void 0,(function(e){const t=c(e);return s.createElement.call(void 0,"div",t)})),o.useSelectProviderContext);t.SelectPopover=u,t.useSelectPopover=c},16016:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(65320);a(96475);var o=a(72707);a(99366),a(9355),a(42076),a(57870),a(77018),a(53944),a(16299),a(19652),a(44448),a(95691),a(38980),a(87636),a(80987),a(7219),a(28148);var n=a(10790);t.SelectProvider=function(e={}){const t=r.useSelectStore.call(void 0,e);return n.jsx.call(void 0,o.SelectContextProvider,{value:t,children:e.children})}},57197:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(22225),o=a(72707);a(42076),a(57870),a(77018),a(53944),a(16299);var n=a(19652);a(80987),a(7219);var l=a(28148),s=a(92725),i=a(48959),c=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const c=o.useSelectContext.call(void 0);a=a||c,i.invariant.call(void 0,a,!1);const u=a.useState("listElement"),d="grid"===s.getPopupRole.call(void 0,u)?"row":"presentation";return n=l.__spreadValues.call(void 0,{role:d},n),n=r.useCompositeRow.call(void 0,l.__spreadValues.call(void 0,{store:a},n))})),u=n.forwardRef.call(void 0,(function(e){const t=c(e);return n.createElement.call(void 0,"div",t)}));t.SelectRow=u,t.useSelectRow=c},67056:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(72707),o=a(86005);a(52954),a(42076),a(57870),a(77018),a(53944),a(16299);var n=a(19652);a(80987),a(7219);var l=a(28148),s=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const s=r.useSelectContext.call(void 0);return a=a||s,n=o.useCompositeSeparator.call(void 0,l.__spreadValues.call(void 0,{store:a},n))})),i=n.forwardRef.call(void 0,(function(e){const t=s(e);return n.createElement.call(void 0,"hr",t)}));t.SelectSeparator=i,t.useSelectSeparator=s},30494:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(65320);a(96475),a(99366),a(9355),a(42076),a(57870),a(77018),a(53944),a(16299),a(19652),a(44448),a(95691),a(38980),a(87636),a(80987),a(7219),a(28148),t.useSelectStore=r.useSelectStore,t.useSelectStoreOptions=r.useSelectStoreOptions,t.useSelectStoreProps=r.useSelectStoreProps},28226:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(72707);a(42076),a(57870),a(77018),a(53944),a(16299),a(19652);var o=a(87636);a(80987),a(7219),a(28148),t.SelectValue=function({store:e,fallback:t,children:a}={}){const n=r.useSelectContext.call(void 0);e=e||n;const l=o.useStoreState.call(void 0,e,(e=>(null==e?void 0:e.value.length)?e.value:t));return a?a(l||""):l}},75418:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(66342);a(49190),a(56203),a(51500);var o=a(46503);a(77673),a(70419);var n=a(68666),l=a(72707);a(29842),a(40227),a(42076),a(57870),a(77018),a(53944),a(16299),a(87121),a(73579);var s=a(19652),i=a(80987);a(7219);var c=a(28148),u=a(11790),d=a(92725),v=a(77328),p=a(48959),m=a(51609),h=a(10790);function f(e,t){return()=>{const a=t();if(!a)return;let r=0,o=e.item(a);const n=o;for(;o&&null==o.value;){const a=t(++r);if(!a)return;if(o=e.item(a),o===n)break}return null==o?void 0:o.id}}var g=s.createHook.call(void 0,(function(e){var t=e,{store:a,name:s,form:g,required:w,showOnKeyDown:b=!0,moveOnKeyDown:y=!0,toggleOnPress:x=!0,toggleOnClick:_=x}=t,k=c.__objRest.call(void 0,t,["store","name","form","required","showOnKeyDown","moveOnKeyDown","toggleOnPress","toggleOnClick"]);const E=l.useSelectProviderContext.call(void 0);a=a||E,p.invariant.call(void 0,a,!1);const C=k.onKeyDown,j=i.useBooleanEvent.call(void 0,b),A=i.useBooleanEvent.call(void 0,y),S=a.useState("placement").split("-")[0],P=a.useState("value"),R=Array.isArray(P),M=i.useEvent.call(void 0,(e=>{var t;if(null==C||C(e),e.defaultPrevented)return;if(!a)return;const{orientation:r,items:o,activeId:n}=a.getState(),l="horizontal"!==r,s="vertical"!==r,i=!!(null==(t=o.find((e=>!e.disabled&&null!=e.value)))?void 0:t.rowId),c={ArrowUp:(i||l)&&f(a,a.up),ArrowRight:(i||s)&&f(a,a.next),ArrowDown:(i||l)&&f(a,a.down),ArrowLeft:(i||s)&&f(a,a.previous)}[e.key];c&&A(e)&&(e.preventDefault(),a.move(c()));const u="top"===S||"bottom"===S;({ArrowDown:u,ArrowUp:u,ArrowLeft:"left"===S,ArrowRight:"right"===S})[e.key]&&j(e)&&(e.preventDefault(),a.move(n),v.queueBeforeEvent.call(void 0,e.currentTarget,"keyup",a.show))}));k=i.useWrapElement.call(void 0,k,(e=>h.jsx.call(void 0,l.SelectScopedContextProvider,{value:a,children:e})),[a]);const[V,z]=m.useState.call(void 0,!1),H=m.useRef.call(void 0,!1);m.useEffect.call(void 0,(()=>{const e=H.current;H.current=!1,e||z(!1)}),[P]);const L=a.useState((e=>{var t;return null==(t=e.labelElement)?void 0:t.id})),O=k["aria-label"],N=k["aria-labelledby"]||L,I=a.useState((e=>{if(s)return e.items})),B=m.useMemo.call(void 0,(()=>[...new Set(null==I?void 0:I.map((e=>e.value)).filter((e=>null!=e)))]),[I]);k=i.useWrapElement.call(void 0,k,(e=>s?h.jsxs.call(void 0,h.Fragment,{children:[h.jsxs.call(void 0,"select",{style:{border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:"1px"},tabIndex:-1,"aria-hidden":!0,"aria-label":O,"aria-labelledby":N,name:s,form:g,required:w,value:P,multiple:R,onFocus:()=>{var e;return null==(e=null==a?void 0:a.getState().selectElement)?void 0:e.focus()},onChange:e=>{var t;H.current=!0,z(!0),null==a||a.setValue(R?(t=e.target,Array.from(t.selectedOptions).map((e=>e.value))):e.target.value)},children:[u.toArray.call(void 0,P).map((e=>null==e||B.includes(e)?null:h.jsx.call(void 0,"option",{value:e,children:e},e))),B.map((e=>h.jsx.call(void 0,"option",{value:e,children:e},e)))]}),e]}):e),[a,O,N,s,g,w,P,R,B]);const T=h.jsxs.call(void 0,h.Fragment,{children:[P,h.jsx.call(void 0,o.SelectArrow,{})]}),F=a.useState("contentElement");return k=c.__spreadProps.call(void 0,c.__spreadValues.call(void 0,{role:"combobox","aria-autocomplete":"none","aria-labelledby":L,"aria-haspopup":d.getPopupRole.call(void 0,F,"listbox"),"data-autofill":V||void 0,"data-name":s,children:T},k),{ref:i.useMergeRefs.call(void 0,a.setSelectElement,k.ref),onKeyDown:M}),k=r.usePopoverDisclosure.call(void 0,c.__spreadValues.call(void 0,{store:a,toggleOnClick:_},k)),k=n.useCompositeTypeahead.call(void 0,c.__spreadValues.call(void 0,{store:a},k))})),w=s.forwardRef.call(void 0,(function(e){const t=g(e);return s.createElement.call(void 0,"button",t)}));t.Select=w,t.useSelect=g},47440:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(52954);a(19652),a(80987),a(7219),a(28148),t.Separator=r.Separator,t.useSeparator=r.useSeparator},45914:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(15892);a(42076),a(57870),a(19652),a(80987),a(7219),a(28148),t.TabContextProvider=r.TabContextProvider,t.TabScopedContextProvider=r.TabScopedContextProvider,t.useTabContext=r.useTabContext,t.useTabProviderContext=r.useTabProviderContext,t.useTabScopedContext=r.useTabScopedContext},2485:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(15892),o=a(9229);a(40227),a(42076),a(57870),a(87121),a(73579);var n=a(19652),l=a(80987);a(7219);var s=a(28148),i=a(48959),c=a(10790),u=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=s.__objRest.call(void 0,t,["store"]);const u=r.useTabProviderContext.call(void 0);a=a||u,i.invariant.call(void 0,a,!1);const d=a.useState((e=>"both"===e.orientation?void 0:e.orientation));return n=l.useWrapElement.call(void 0,n,(e=>c.jsx.call(void 0,r.TabScopedContextProvider,{value:a,children:e})),[a]),a.composite&&(n=s.__spreadValues.call(void 0,{focusable:!1},n)),n=s.__spreadValues.call(void 0,{role:"tablist","aria-orientation":d},n),n=o.useComposite.call(void 0,s.__spreadValues.call(void 0,{store:a},n))})),d=n.forwardRef.call(void 0,(function(e){const t=u(e);return n.createElement.call(void 0,"div",t)}));t.TabList=d,t.useTabList=u},61477:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(15892),o=a(21236);a(42076),a(57870);var n=a(77723);a(53944),a(16299);var l=a(87121);a(73579);var s=a(19652),i=a(38980),c=a(87636),u=a(80987);a(7219);var d=a(28148),v=a(60877),p=a(48959),m=a(51609),h=a(10790),f=s.createHook.call(void 0,(function(e){var t=e,{store:a,unmountOnHide:s,tabId:f,getItem:g,scrollRestoration:w,scrollElement:b}=t,y=d.__objRest.call(void 0,t,["store","unmountOnHide","tabId","getItem","scrollRestoration","scrollElement"]);const x=r.useTabProviderContext.call(void 0);a=a||x,p.invariant.call(void 0,a,!1);const _=m.useRef.call(void 0,null),k=u.useId.call(void 0,y.id),E=c.useStoreState.call(void 0,a.panels,(()=>{var e;return f||(null==(e=null==a?void 0:a.panels.item(k))?void 0:e.tabId)})),C=c.useStoreState.call(void 0,a,(e=>!!E&&e.selectedId===E)),j=i.useDisclosureStore.call(void 0,{open:C}),A=c.useStoreState.call(void 0,j,"mounted"),S=m.useRef.call(void 0,new Map),P=u.useEvent.call(void 0,(()=>{const e=_.current;return e?b?"function"==typeof b?b(e):"current"in b?b.current:b:e:null}));m.useEffect.call(void 0,(()=>{var e,t;if(!w)return;if(!A)return;const a=P();if(!a)return;if("reset"===w)return void a.scroll(0,0);if(!E)return;const r=S.current.get(E);a.scroll(null!=(e=null==r?void 0:r.x)?e:0,null!=(t=null==r?void 0:r.y)?t:0);const o=()=>{S.current.set(E,{x:a.scrollLeft,y:a.scrollTop})};return a.addEventListener("scroll",o),()=>{a.removeEventListener("scroll",o)}}),[w,A,E,P,a]);const[R,M]=m.useState.call(void 0,!1);m.useEffect.call(void 0,(()=>{const e=_.current;if(!e)return;const t=v.getAllTabbableIn.call(void 0,e);M(!!t.length)}),[]);const V=m.useCallback.call(void 0,(e=>{const t=d.__spreadProps.call(void 0,d.__spreadValues.call(void 0,{},e),{id:k||e.id,tabId:f});return g?g(t):t}),[k,f,g]),z=y.onKeyDown,H=u.useEvent.call(void 0,(e=>{if(null==z||z(e),e.defaultPrevented)return;if(!(null==a?void 0:a.composite))return;const t={ArrowLeft:a.previous,ArrowRight:a.next,Home:a.first,End:a.last}[e.key];if(!t)return;const{selectedId:r}=a.getState(),o=t({activeId:r});o&&(e.preventDefault(),a.move(o))}));return y=u.useWrapElement.call(void 0,y,(e=>h.jsx.call(void 0,r.TabScopedContextProvider,{value:a,children:e})),[a]),y=d.__spreadProps.call(void 0,d.__spreadValues.call(void 0,{id:k,role:"tabpanel","aria-labelledby":E||void 0},y),{children:s&&!A?null:y.children,ref:u.useMergeRefs.call(void 0,_,y.ref),onKeyDown:H}),y=l.useFocusable.call(void 0,d.__spreadValues.call(void 0,{focusable:!a.composite&&!R},y)),y=n.useDisclosureContent.call(void 0,d.__spreadValues.call(void 0,{store:j},y)),y=o.useCollectionItem.call(void 0,d.__spreadProps.call(void 0,d.__spreadValues.call(void 0,{store:a.panels},y),{getItem:V}))})),g=s.forwardRef.call(void 0,(function(e){const t=f(e);return s.createElement.call(void 0,"div",t)}));t.TabPanel=g,t.useTabPanel=f},65362:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(32564);a(96475),a(72707);var o=a(15892);a(99366),a(9355),a(42076),a(57870),a(77018),a(53944),a(16299),a(19652),a(87636),a(80987),a(7219),a(28148);var n=a(10790);t.TabProvider=function(e={}){const t=r.useTabStore.call(void 0,e);return n.jsx.call(void 0,o.TabContextProvider,{value:t,children:e.children})}},93648:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(32564);a(96475),a(72707),a(99366),a(9355),a(42076),a(57870),a(77018),a(53944),a(16299),a(19652),a(87636),a(80987),a(7219),a(28148),t.useTabStore=r.useTabStore,t.useTabStoreProps=r.useTabStoreProps},85248:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(15892),o=a(35973);a(21236),a(29842),a(40227),a(42076),a(57870),a(87121),a(73579);var n=a(19652),l=a(87636),s=a(80987);a(7219);var i=a(28148),c=a(48959),u=a(51609),d=a(10790),v=n.createHook.call(void 0,(function(e){var t,a=e,{store:n,getItem:v}=a,p=i.__objRest.call(void 0,a,["store","getItem"]);const m=r.useTabScopedContext.call(void 0);n=n||m,c.invariant.call(void 0,n,!1);const h=s.useId.call(void 0),f=p.id||h,g=c.disabledFromProps.call(void 0,p),w=u.useCallback.call(void 0,(e=>{const t=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},e),{dimmed:g});return v?v(t):t}),[g,v]),b=p.onClick,y=s.useEvent.call(void 0,(e=>{null==b||b(e),e.defaultPrevented||null==n||n.setSelectedId(f)})),x=n.panels.useState((e=>{var t;return null==(t=e.items.find((e=>e.tabId===f)))?void 0:t.id})),_=!!h&&p.shouldRegisterItem,k=n.useState((e=>!!f&&e.activeId===f)),E=n.useState((e=>!!f&&e.selectedId===f)),C=n.useState((e=>!!n.item(e.activeId))),j=k||E&&!C,A=E||null==(t=p.accessibleWhenDisabled)||t;if(l.useStoreState.call(void 0,n.combobox||n.composite,"virtualFocus")&&(p=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},p),{tabIndex:-1})),p=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{id:f,role:"tab","aria-selected":E,"aria-controls":x||void 0},p),{onClick:y}),n.composite){const e={id:f,accessibleWhenDisabled:A,store:n.composite,shouldRegisterItem:j&&_,rowId:p.rowId,render:p.render};p=i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},p),{render:d.jsx.call(void 0,o.CompositeItem,i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},e),{render:n.combobox&&n.composite!==n.combobox?d.jsx.call(void 0,o.CompositeItem,i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},e),{store:n.combobox})):e.render}))})}return p=o.useCompositeItem.call(void 0,i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{store:n},p),{accessibleWhenDisabled:A,getItem:w,shouldRegisterItem:_}))})),p=n.memo.call(void 0,n.forwardRef.call(void 0,(function(e){const t=v(e);return n.createElement.call(void 0,"button",t)})));t.Tab=p,t.useTab=v},27270:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(32087),o=a(25275);a(35973),a(21236),a(29842),a(40227);var n=a(66485);a(42076),a(57870),a(87121),a(73579);var l=a(19652);a(87636),a(80987),a(7219);var s=a(28148),i=l.createHook.call(void 0,(function(e){var t=e,{store:a}=t,l=s.__objRest.call(void 0,t,["store"]);const i=n.useToolbarContext.call(void 0);return a=a||i,l=r.useCompositeContainer.call(void 0,s.__spreadValues.call(void 0,{store:a},l)),l=o.useToolbarItem.call(void 0,s.__spreadValues.call(void 0,{store:a},l))})),c=l.memo.call(void 0,l.forwardRef.call(void 0,(function(e){const t=i(e);return l.createElement.call(void 0,"div",t)})));t.ToolbarContainer=c,t.useToolbarContainer=i},15634:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(66485);a(42076),a(57870),a(19652),a(80987),a(7219),a(28148),t.ToolbarContextProvider=r.ToolbarContextProvider,t.ToolbarScopedContextProvider=r.ToolbarScopedContextProvider,t.useToolbarContext=r.useToolbarContext,t.useToolbarProviderContext=r.useToolbarProviderContext,t.useToolbarScopedContext=r.useToolbarScopedContext},64759:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(25275);a(35973),a(21236),a(29842),a(40227);var o=a(66485);a(42076),a(57870),a(87121),a(73579);var n=a(19652);a(87636),a(80987),a(7219);var l=a(28148),s=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const s=o.useToolbarContext.call(void 0);return a=a||s,n=r.useToolbarItem.call(void 0,l.__spreadValues.call(void 0,{store:a},n))})),i=n.memo.call(void 0,n.forwardRef.call(void 0,(function(e){const t=s(e);return n.createElement.call(void 0,"input",t)})));t.ToolbarInput=i,t.useToolbarInput=s},72168:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(25275);a(35973),a(21236),a(29842),a(40227),a(66485),a(42076),a(57870),a(87121),a(73579),a(19652),a(87636),a(80987),a(7219),a(28148),t.ToolbarItem=r.ToolbarItem,t.useToolbarItem=r.useToolbarItem},47114:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(44110);a(99366),a(9355);var o=a(66485);a(42076),a(57870),a(19652),a(87636),a(80987),a(7219),a(28148);var n=a(10790);t.ToolbarProvider=function(e={}){const t=r.useToolbarStore.call(void 0,e);return n.jsx.call(void 0,o.ToolbarContextProvider,{value:t,children:e.children})}},92134:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(86005);a(52954);var o=a(66485);a(42076),a(57870);var n=a(19652);a(80987),a(7219);var l=a(28148),s=n.createHook.call(void 0,(function(e){var t=e,{store:a}=t,n=l.__objRest.call(void 0,t,["store"]);const s=o.useToolbarContext.call(void 0);return a=a||s,n=r.useCompositeSeparator.call(void 0,l.__spreadValues.call(void 0,{store:a},n))})),i=n.forwardRef.call(void 0,(function(e){const t=s(e);return n.createElement.call(void 0,"hr",t)}));t.ToolbarSeparator=i,t.useToolbarSeparator=s},65832:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(44110);a(99366),a(9355),a(87636),a(80987),a(7219),a(28148),t.useToolbarStore=r.useToolbarStore,t.useToolbarStoreProps=r.useToolbarStoreProps},17016:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(9229);a(40227);var o=a(44110);a(99366),a(9355);var n=a(66485);a(42076),a(57870),a(87121),a(73579);var l=a(19652);a(87636);var s=a(80987);a(7219);var i=a(28148),c=a(10790),u=l.createHook.call(void 0,(function(e){var t=e,{store:a,orientation:l,virtualFocus:u,focusLoop:d,rtl:v}=t,p=i.__objRest.call(void 0,t,["store","orientation","virtualFocus","focusLoop","rtl"]);const m=n.useToolbarProviderContext.call(void 0);a=a||m;const h=o.useToolbarStore.call(void 0,{store:a,orientation:l,virtualFocus:u,focusLoop:d,rtl:v}),f=h.useState((e=>"both"===e.orientation?void 0:e.orientation));return p=s.useWrapElement.call(void 0,p,(e=>c.jsx.call(void 0,n.ToolbarScopedContextProvider,{value:h,children:e})),[h]),p=i.__spreadValues.call(void 0,{role:"toolbar","aria-orientation":f},p),p=r.useComposite.call(void 0,i.__spreadValues.call(void 0,{store:h},p))})),d=l.forwardRef.call(void 0,(function(e){const t=u(e);return l.createElement.call(void 0,"div",t)}));t.Toolbar=d,t.useToolbar=u},73234:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(21407),o=a(74581);a(80231),a(77018),a(53944),a(16299),a(87121),a(73579);var n=a(19652),l=a(80987);a(7219);var s=a(28148),i=a(48959),c=a(8766),u=a(51609),d=c.createStore.call(void 0,{activeStore:null});function v(e){return()=>{const{activeStore:t}=d.getState();t===e&&d.setState("activeStore",null)}}var p=n.createHook.call(void 0,(function(e){var t=e,{store:a,showOnHover:n=!0}=t,p=s.__objRest.call(void 0,t,["store","showOnHover"]);const m=o.useTooltipProviderContext.call(void 0);a=a||m,i.invariant.call(void 0,a,!1);const h=u.useRef.call(void 0,!1);u.useEffect.call(void 0,(()=>c.sync.call(void 0,a,["mounted"],(e=>{e.mounted||(h.current=!1)}))),[a]),u.useEffect.call(void 0,(()=>{if(a)return i.chain.call(void 0,v(a),c.sync.call(void 0,a,["mounted","skipTimeout"],(e=>{if(!a)return;if(e.mounted){const{activeStore:e}=d.getState();return e!==a&&(null==e||e.hide()),d.setState("activeStore",a)}const t=setTimeout(v(a),e.skipTimeout);return()=>clearTimeout(t)})))}),[a]);const f=p.onMouseEnter,g=l.useEvent.call(void 0,(e=>{null==f||f(e),h.current=!0})),w=p.onFocusVisible,b=l.useEvent.call(void 0,(e=>{null==w||w(e),e.defaultPrevented||(null==a||a.setAnchorElement(e.currentTarget),null==a||a.show())})),y=p.onBlur,x=l.useEvent.call(void 0,(e=>{if(null==y||y(e),e.defaultPrevented)return;const{activeStore:t}=d.getState();h.current=!1,t===a&&d.setState("activeStore",null)})),_=a.useState("type"),k=a.useState((e=>{var t;return null==(t=e.contentElement)?void 0:t.id}));return p=s.__spreadProps.call(void 0,s.__spreadValues.call(void 0,{"aria-labelledby":"label"===_?k:void 0},p),{onMouseEnter:g,onFocusVisible:b,onBlur:x}),p=r.useHovercardAnchor.call(void 0,s.__spreadValues.call(void 0,{store:a,showOnHover(e){if(!h.current)return!1;if(i.isFalsyBooleanCallback.call(void 0,n,e))return!1;const{activeStore:t}=d.getState();return!t||(null==a||a.show(),!1)}},p))})),m=n.forwardRef.call(void 0,(function(e){const t=p(e);return n.createElement.call(void 0,"div",t)}));t.TooltipAnchor=m,t.useTooltipAnchor=p},99980:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(79066);a(45081);var o=a(74581);a(80231),a(77018),a(53944),a(16299);var n=a(19652);a(80987),a(7219);var l=a(28148),s=a(48959),i=n.createHook.call(void 0,(function(e){var t=e,{store:a,size:n=16}=t,i=l.__objRest.call(void 0,t,["store","size"]);const c=o.useTooltipContext.call(void 0);return a=a||c,s.invariant.call(void 0,a,!1),i=r.usePopoverArrow.call(void 0,l.__spreadValues.call(void 0,{store:a,size:n},i))})),c=n.forwardRef.call(void 0,(function(e){const t=i(e);return n.createElement.call(void 0,"div",t)}));t.TooltipArrow=c,t.useTooltipArrow=i},19122:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(74581);a(80231),a(77018),a(53944),a(16299),a(19652),a(80987),a(7219),a(28148),t.TooltipContextProvider=r.TooltipContextProvider,t.TooltipScopedContextProvider=r.TooltipScopedContextProvider,t.useTooltipContext=r.useTooltipContext,t.useTooltipProviderContext=r.useTooltipProviderContext,t.useTooltipScopedContext=r.useTooltipScopedContext},54858:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(74581);a(80231),a(77018),a(53944),a(16299),a(19652);var o=a(80032);a(46423),a(44448),a(95691),a(38980),a(87636),a(80987),a(7219),a(28148);var n=a(10790);t.TooltipProvider=function(e={}){const t=o.useTooltipStore.call(void 0,e);return n.jsx.call(void 0,r.TooltipContextProvider,{value:t,children:e.children})}},11208:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(80032);a(46423),a(44448),a(95691),a(38980),a(87636),a(80987),a(7219),a(28148),t.useTooltipStore=r.useTooltipStore,t.useTooltipStoreProps=r.useTooltipStoreProps},71128:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(82109);a(68725),a(39861);var o=a(28293);a(12204),a(19387),a(70663),a(33043),a(8549),a(89169),a(68842),a(21676),a(85325),a(26327),a(91605),a(48960),a(94818),a(49464),a(99471),a(82203),a(32146),a(9018),a(54844),a(67722),a(63215),a(77723),a(12707);var n=a(74581);a(80231),a(77018),a(53944),a(16299),a(87121),a(73579),a(3578);var l=a(19652);a(95691),a(38980),a(87636);var s=a(80987);a(7219);var i=a(28148),c=a(92725),u=a(48959),d=a(10790),v=l.createHook.call(void 0,(function(e){var t=e,{store:a,portal:o=!0,gutter:l=8,preserveTabOrder:v=!1,hideOnHoverOutside:p=!0,hideOnInteractOutside:m=!0}=t,h=i.__objRest.call(void 0,t,["store","portal","gutter","preserveTabOrder","hideOnHoverOutside","hideOnInteractOutside"]);const f=n.useTooltipProviderContext.call(void 0);a=a||f,u.invariant.call(void 0,a,!1),h=s.useWrapElement.call(void 0,h,(e=>d.jsx.call(void 0,n.TooltipScopedContextProvider,{value:a,children:e})),[a]);const g=a.useState((e=>"description"===e.type?"tooltip":"none"));return h=i.__spreadValues.call(void 0,{role:g},h),h=r.useHovercard.call(void 0,i.__spreadProps.call(void 0,i.__spreadValues.call(void 0,{},h),{store:a,portal:o,gutter:l,preserveTabOrder:v,hideOnHoverOutside(e){if(u.isFalsyBooleanCallback.call(void 0,p,e))return!1;const t=null==a?void 0:a.getState().anchorElement;return!t||!("focusVisible"in t.dataset)},hideOnInteractOutside:e=>{if(u.isFalsyBooleanCallback.call(void 0,m,e))return!1;const t=null==a?void 0:a.getState().anchorElement;return!t||!c.contains.call(void 0,t,e.target)}}))})),p=o.createDialogComponent.call(void 0,l.forwardRef.call(void 0,(function(e){const t=v(e);return l.createElement.call(void 0,"div",t)})),n.useTooltipProviderContext);t.Tooltip=p,t.useTooltip=v},45372:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(87636);a(80987),a(7219),a(28148),t.useStore=r.useStore,t.useStoreProps=r.useStoreProps,t.useStoreState=r.useStoreState,t.useStoreStateObject=r.useStoreStateObject},46636:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(3578);a(19652),a(80987),a(7219),a(28148),t.VisuallyHidden=r.VisuallyHidden,t.useVisuallyHidden=r.useVisuallyHidden},65786:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(47440);t.Separator=r.Separator},70170:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(40416),o=a(61930),n=a(58416),l=a(25570),s=a(77850),i=a(84612),c=a(47729),u=a(36526),d=a(36634),v=a(26111),p=a(39257);t.usePopoverStore=r.usePopoverStore,t.usePopoverContext=o.usePopoverContext,t.Popover=n.Popover,t.PopoverProvider=l.PopoverProvider,t.PopoverAnchor=s.PopoverAnchor,t.PopoverArrow=i.PopoverArrow,t.PopoverDescription=c.PopoverDescription,t.PopoverDisclosureArrow=u.PopoverDisclosureArrow,t.PopoverDisclosure=d.PopoverDisclosure,t.PopoverDismiss=v.PopoverDismiss,t.PopoverHeading=p.PopoverHeading},10938:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(46636);t.VisuallyHidden=r.VisuallyHidden},2761:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(2720),o=a(94029);t.Heading=r.Heading,t.HeadingLevel=o.HeadingLevel},15180:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(19188);t.Command=r.Command},66593:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(66128),o=a(30549);t.Group=r.Group,t.GroupLabel=o.GroupLabel},96493:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(87888),o=a(31258),n=a(55488),l=a(41810),s=a(827),i=a(50682),c=a(40973),u=a(58736),d=a(65631),v=a(84334),p=a(99684);t.useCompositeStore=r.useCompositeStore,t.useCompositeContext=o.useCompositeContext,t.Composite=n.Composite,t.CompositeProvider=l.CompositeProvider,t.CompositeGroupLabel=s.CompositeGroupLabel,t.CompositeGroup=i.CompositeGroup,t.CompositeHover=c.CompositeHover,t.CompositeItem=u.CompositeItem,t.CompositeRow=d.CompositeRow,t.CompositeSeparator=v.CompositeSeparator,t.CompositeTypeahead=p.CompositeTypeahead},69766:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(84592),o=a(66906),n=a(70856),l=a(94112),s=a(92466),i=a(17848),c=a(97162),u=a(79732),d=a(84281),v=a(17517),p=a(91425),m=a(54415),h=a(15995),f=a(45242),g=a(87593),w=a(42259),b=a(2610),y=a(70334),x=a(28592),_=a(78933),k=a(75854);t.useMenuStore=r.useMenuStore,t.useMenuContext=o.useMenuContext,t.useMenuBarContext=o.useMenuBarContext,t.useMenuBarStore=n.useMenuBarStore,t.Menu=l.Menu,t.MenuProvider=s.MenuProvider,t.MenuBar=i.MenuBar,t.MenuBarProvider=c.MenuBarProvider,t.MenuArrow=u.MenuArrow,t.MenuButtonArrow=d.MenuButtonArrow,t.MenuButton=v.MenuButton,t.MenuDescription=p.MenuDescription,t.MenuDismiss=m.MenuDismiss,t.MenuGroupLabel=h.MenuGroupLabel,t.MenuGroup=f.MenuGroup,t.MenuHeading=g.MenuHeading,t.MenuItemCheck=w.MenuItemCheck,t.MenuItemCheckbox=b.MenuItemCheckbox,t.MenuItemRadio=y.MenuItemRadio,t.MenuItem=x.MenuItem,t.MenuList=_.MenuList,t.MenuSeparator=k.MenuSeparator},25956:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(67548),o=a(58502);t.PortalContext=r.PortalContext,t.Portal=o.Portal},96098:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(21046),o=a(60876),n=a(66732),l=a(76590);t.useMenubarContext=r.useMenubarContext,t.useMenubarStore=o.useMenubarStore,t.Menubar=n.Menubar,t.MenubarProvider=l.MenubarProvider},48123:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(27498),o=a(42668),n=a(5238),l=a(60940),s=a(99378);t.useCollectionStore=r.useCollectionStore,t.useCollectionContext=o.useCollectionContext,t.Collection=n.Collection,t.CollectionProvider=l.CollectionProvider,t.CollectionItem=s.CollectionItem},56356:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(51776),o=a(41354),n=a(32880),l=a(95522),s=a(54522),i=a(40804),c=a(54929),u=a(34650),d=a(81439),v=a(3129);t.useHovercardStore=r.useHovercardStore,t.useHovercardContext=o.useHovercardContext,t.Hovercard=n.Hovercard,t.HovercardProvider=l.HovercardProvider,t.HovercardAnchor=s.HovercardAnchor,t.HovercardArrow=i.HovercardArrow,t.HovercardDescription=c.HovercardDescription,t.HovercardDisclosure=u.HovercardDisclosure,t.HovercardDismiss=d.HovercardDismiss,t.HovercardHeading=v.HovercardHeading},13561:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(63512),o=a(51298),n=a(57672),l=a(14490),s=a(3970);t.useRadioStore=r.useRadioStore,t.useRadioContext=o.useRadioContext,t.Radio=n.Radio,t.RadioProvider=l.RadioProvider,t.RadioGroup=s.RadioGroup},852:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(11208),o=a(19122),n=a(71128),l=a(54858),s=a(73234),i=a(99980);t.useTooltipStore=r.useTooltipStore,t.useTooltipContext=o.useTooltipContext,t.Tooltip=n.Tooltip,t.TooltipProvider=l.TooltipProvider,t.TooltipAnchor=s.TooltipAnchor,t.TooltipArrow=i.TooltipArrow},51043:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(93648),o=a(45914),n=a(85248),l=a(65362),s=a(2485),i=a(61477);t.useTabStore=r.useTabStore,t.useTabContext=o.useTabContext,t.Tab=n.Tab,t.TabProvider=l.TabProvider,t.TabList=s.TabList,t.TabPanel=i.TabPanel},82262:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(45372);t.useStoreState=r.useStoreState},54830:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(55166),o=a(49296),n=a(18266),l=a(23184),s=a(96254),i=a(18460),c=a(74695),u=a(40055),d=a(26169),v=a(3301),p=a(16448),m=a(57509),h=a(30587),f=a(12563),g=a(61802),w=a(78864),b=a(46595),y=a(46820),x=a(71451);t.useFormStore=r.useFormStore,t.useFormContext=o.useFormContext,t.Form=n.Form,t.FormProvider=l.FormProvider,t.FormControl=s.FormControl,t.FormCheckbox=i.FormCheckbox,t.FormDescription=c.FormDescription,t.FormError=u.FormError,t.FormField=d.FormField,t.FormGroupLabel=v.FormGroupLabel,t.FormGroup=p.FormGroup,t.FormInput=m.FormInput,t.FormLabel=h.FormLabel,t.FormPush=f.FormPush,t.FormRadioGroup=g.FormRadioGroup,t.FormRadio=w.FormRadio,t.FormRemove=b.FormRemove,t.FormReset=y.FormReset,t.FormSubmit=x.FormSubmit},94964:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(93320),o=a(34130),n=a(50296),l=a(41706),s=a(48056);t.useDisclosureStore=r.useDisclosureStore,t.useDisclosureContext=o.useDisclosureContext,t.Disclosure=n.Disclosure,t.DisclosureProvider=l.DisclosureProvider,t.DisclosureContent=s.DisclosureContent},25666:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(2462);t.Role=r.Role},95952:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(35048),o=a(71986),n=a(85848),l=a(72714),s=a(44587);t.useCheckboxStore=r.useCheckboxStore,t.useCheckboxContext=o.useCheckboxContext,t.Checkbox=n.Checkbox,t.CheckboxProvider=l.CheckboxProvider,t.CheckboxCheck=s.CheckboxCheck},99551:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(83056);t.Focusable=r.Focusable},7585:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(80466),o=a(59988),n=a(27742),l=a(22292),s=a(13387),i=a(78368),c=a(54513),u=a(25111);t.useDialogStore=r.useDialogStore,t.useDialogContext=o.useDialogContext,t.Dialog=n.Dialog,t.DialogProvider=l.DialogProvider,t.DialogDescription=s.DialogDescription,t.DialogDisclosure=i.DialogDisclosure,t.DialogDismiss=c.DialogDismiss,t.DialogHeading=u.DialogHeading},75601:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(30494),o=a(40432),n=a(75418),l=a(16016),s=a(92622),i=a(45045),c=a(42149),u=a(18080),d=a(26219),v=a(12933),p=a(28670),m=a(93019),h=a(68175),f=a(21506),g=a(57197),w=a(67056),b=a(28226);t.useSelectStore=r.useSelectStore,t.useSelectContext=o.useSelectContext,t.Select=n.Select,t.SelectProvider=l.SelectProvider,t.SelectArrow=s.SelectArrow,t.SelectDismiss=i.SelectDismiss,t.SelectGroupLabel=c.SelectGroupLabel,t.SelectGroup=u.SelectGroup,t.SelectHeading=d.SelectHeading,t.SelectItemCheck=v.SelectItemCheck,t.SelectItem=p.SelectItem,t.SelectLabel=m.SelectLabel,t.SelectList=h.SelectList,t.SelectPopover=f.SelectPopover,t.SelectRow=g.SelectRow,t.SelectSeparator=w.SelectSeparator,t.SelectValue=b.SelectValue},80160:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(52652),o=a(18038),n=a(98348),l=a(69198),s=a(67295),i=a(30030),c=a(98935),u=a(79334),d=a(6439),v=a(82616),p=a(23140),m=a(68529),h=a(72305),f=a(87020),g=a(98739),w=a(15498),b=a(74592);t.useComboboxStore=r.useComboboxStore,t.useComboboxContext=o.useComboboxContext,t.Combobox=n.Combobox,t.ComboboxProvider=l.ComboboxProvider,t.ComboboxCancel=s.ComboboxCancel,t.ComboboxDisclosure=i.ComboboxDisclosure,t.ComboboxGroupLabel=c.ComboboxGroupLabel,t.ComboboxGroup=u.ComboboxGroup,t.ComboboxItemCheck=d.ComboboxItemCheck,t.ComboboxItemValue=v.ComboboxItemValue,t.ComboboxItem=p.ComboboxItem,t.ComboboxLabel=m.ComboboxLabel,t.ComboboxList=h.ComboboxList,t.ComboboxPopover=f.ComboboxPopover,t.ComboboxRow=g.ComboboxRow,t.ComboboxSeparator=w.ComboboxSeparator,t.ComboboxValue=b.ComboboxValue},49311:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(44571),o=a(46410);t.FocusTrapRegion=r.FocusTrapRegion,t.FocusTrap=o.FocusTrap},17351:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(65832),o=a(15634),n=a(17016),l=a(47114),s=a(27270),i=a(64759),c=a(72168),u=a(92134);t.useToolbarStore=r.useToolbarStore,t.useToolbarContext=o.useToolbarContext,t.Toolbar=n.Toolbar,t.ToolbarProvider=l.ToolbarProvider,t.ToolbarContainer=s.ToolbarContainer,t.ToolbarInput=i.ToolbarInput,t.ToolbarItem=c.ToolbarItem,t.ToolbarSeparator=u.ToolbarSeparator},51355:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(58430);t.Button=r.Button},94083:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(80160),o=a(48123),n=a(95952),l=a(51355),s=a(66593),i=a(54830),c=a(99551),u=a(49311),d=a(94964),v=a(7585),p=a(96493),m=a(15180),h=a(13561),f=a(25956),g=a(70170),w=a(96098),b=a(69766),y=a(56356),x=a(2761),_=a(10938),k=a(852),E=a(17351),C=a(51043),j=a(82262),A=a(65786),S=a(75601),P=a(25666);t.Button=l.Button,t.Checkbox=n.Checkbox,t.CheckboxCheck=n.CheckboxCheck,t.CheckboxProvider=n.CheckboxProvider,t.Collection=o.Collection,t.CollectionItem=o.CollectionItem,t.CollectionProvider=o.CollectionProvider,t.Combobox=r.Combobox,t.ComboboxCancel=r.ComboboxCancel,t.ComboboxDisclosure=r.ComboboxDisclosure,t.ComboboxGroup=r.ComboboxGroup,t.ComboboxGroupLabel=r.ComboboxGroupLabel,t.ComboboxItem=r.ComboboxItem,t.ComboboxItemCheck=r.ComboboxItemCheck,t.ComboboxItemValue=r.ComboboxItemValue,t.ComboboxLabel=r.ComboboxLabel,t.ComboboxList=r.ComboboxList,t.ComboboxPopover=r.ComboboxPopover,t.ComboboxProvider=r.ComboboxProvider,t.ComboboxRow=r.ComboboxRow,t.ComboboxSeparator=r.ComboboxSeparator,t.ComboboxValue=r.ComboboxValue,t.Command=m.Command,t.Composite=p.Composite,t.CompositeGroup=p.CompositeGroup,t.CompositeGroupLabel=p.CompositeGroupLabel,t.CompositeHover=p.CompositeHover,t.CompositeItem=p.CompositeItem,t.CompositeProvider=p.CompositeProvider,t.CompositeRow=p.CompositeRow,t.CompositeSeparator=p.CompositeSeparator,t.CompositeTypeahead=p.CompositeTypeahead,t.Dialog=v.Dialog,t.DialogDescription=v.DialogDescription,t.DialogDisclosure=v.DialogDisclosure,t.DialogDismiss=v.DialogDismiss,t.DialogHeading=v.DialogHeading,t.DialogProvider=v.DialogProvider,t.Disclosure=d.Disclosure,t.DisclosureContent=d.DisclosureContent,t.DisclosureProvider=d.DisclosureProvider,t.FocusTrap=u.FocusTrap,t.FocusTrapRegion=u.FocusTrapRegion,t.Focusable=c.Focusable,t.Form=i.Form,t.FormCheckbox=i.FormCheckbox,t.FormControl=i.FormControl,t.FormDescription=i.FormDescription,t.FormError=i.FormError,t.FormField=i.FormField,t.FormGroup=i.FormGroup,t.FormGroupLabel=i.FormGroupLabel,t.FormInput=i.FormInput,t.FormLabel=i.FormLabel,t.FormProvider=i.FormProvider,t.FormPush=i.FormPush,t.FormRadio=i.FormRadio,t.FormRadioGroup=i.FormRadioGroup,t.FormRemove=i.FormRemove,t.FormReset=i.FormReset,t.FormSubmit=i.FormSubmit,t.Group=s.Group,t.GroupLabel=s.GroupLabel,t.Heading=x.Heading,t.HeadingLevel=x.HeadingLevel,t.Hovercard=y.Hovercard,t.HovercardAnchor=y.HovercardAnchor,t.HovercardArrow=y.HovercardArrow,t.HovercardDescription=y.HovercardDescription,t.HovercardDisclosure=y.HovercardDisclosure,t.HovercardDismiss=y.HovercardDismiss,t.HovercardHeading=y.HovercardHeading,t.HovercardProvider=y.HovercardProvider,t.Menu=b.Menu,t.MenuArrow=b.MenuArrow,t.MenuBar=b.MenuBar,t.MenuBarProvider=b.MenuBarProvider,t.MenuButton=b.MenuButton,t.MenuButtonArrow=b.MenuButtonArrow,t.MenuDescription=b.MenuDescription,t.MenuDismiss=b.MenuDismiss,t.MenuGroup=b.MenuGroup,t.MenuGroupLabel=b.MenuGroupLabel,t.MenuHeading=b.MenuHeading,t.MenuItem=b.MenuItem,t.MenuItemCheck=b.MenuItemCheck,t.MenuItemCheckbox=b.MenuItemCheckbox,t.MenuItemRadio=b.MenuItemRadio,t.MenuList=b.MenuList,t.MenuProvider=b.MenuProvider,t.MenuSeparator=b.MenuSeparator,t.Menubar=w.Menubar,t.MenubarProvider=w.MenubarProvider,t.Popover=g.Popover,t.PopoverAnchor=g.PopoverAnchor,t.PopoverArrow=g.PopoverArrow,t.PopoverDescription=g.PopoverDescription,t.PopoverDisclosure=g.PopoverDisclosure,t.PopoverDisclosureArrow=g.PopoverDisclosureArrow,t.PopoverDismiss=g.PopoverDismiss,t.PopoverHeading=g.PopoverHeading,t.PopoverProvider=g.PopoverProvider,t.Portal=f.Portal,t.PortalContext=f.PortalContext,t.Radio=h.Radio,t.RadioGroup=h.RadioGroup,t.RadioProvider=h.RadioProvider,t.Role=P.Role,t.Select=S.Select,t.SelectArrow=S.SelectArrow,t.SelectDismiss=S.SelectDismiss,t.SelectGroup=S.SelectGroup,t.SelectGroupLabel=S.SelectGroupLabel,t.SelectHeading=S.SelectHeading,t.SelectItem=S.SelectItem,t.SelectItemCheck=S.SelectItemCheck,t.SelectLabel=S.SelectLabel,t.SelectList=S.SelectList,t.SelectPopover=S.SelectPopover,t.SelectProvider=S.SelectProvider,t.SelectRow=S.SelectRow,t.SelectSeparator=S.SelectSeparator,t.SelectValue=S.SelectValue,t.Separator=A.Separator,t.Tab=C.Tab,t.TabList=C.TabList,t.TabPanel=C.TabPanel,t.TabProvider=C.TabProvider,t.Toolbar=E.Toolbar,t.ToolbarContainer=E.ToolbarContainer,t.ToolbarInput=E.ToolbarInput,t.ToolbarItem=E.ToolbarItem,t.ToolbarProvider=E.ToolbarProvider,t.ToolbarSeparator=E.ToolbarSeparator,t.Tooltip=k.Tooltip,t.TooltipAnchor=k.TooltipAnchor,t.TooltipArrow=k.TooltipArrow,t.TooltipProvider=k.TooltipProvider,t.VisuallyHidden=_.VisuallyHidden,t.useCheckboxContext=n.useCheckboxContext,t.useCheckboxStore=n.useCheckboxStore,t.useCollectionContext=o.useCollectionContext,t.useCollectionStore=o.useCollectionStore,t.useComboboxContext=r.useComboboxContext,t.useComboboxStore=r.useComboboxStore,t.useCompositeContext=p.useCompositeContext,t.useCompositeStore=p.useCompositeStore,t.useDialogContext=v.useDialogContext,t.useDialogStore=v.useDialogStore,t.useDisclosureContext=d.useDisclosureContext,t.useDisclosureStore=d.useDisclosureStore,t.useFormContext=i.useFormContext,t.useFormStore=i.useFormStore,t.useHovercardContext=y.useHovercardContext,t.useHovercardStore=y.useHovercardStore,t.useMenuBarContext=b.useMenuBarContext,t.useMenuBarStore=b.useMenuBarStore,t.useMenuContext=b.useMenuContext,t.useMenuStore=b.useMenuStore,t.useMenubarContext=w.useMenubarContext,t.useMenubarStore=w.useMenubarStore,t.usePopoverContext=g.usePopoverContext,t.usePopoverStore=g.usePopoverStore,t.useRadioContext=h.useRadioContext,t.useRadioStore=h.useRadioStore,t.useSelectContext=S.useSelectContext,t.useSelectStore=S.useSelectStore,t.useStoreState=j.useStoreState,t.useTabContext=C.useTabContext,t.useTabStore=C.useTabStore,t.useToolbarContext=E.useToolbarContext,t.useToolbarStore=E.useToolbarStore,t.useTooltipContext=k.useTooltipContext,t.useTooltipStore=k.useTooltipStore},96072:e=>{function t(){return e.exports=t=Object.assign?Object.assign.bind():function(e){for(var t=1;t{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},159:(e,t,a)=>{"use strict";a.d(t,{BN:()=>f,ER:()=>g,Ej:()=>w,HN:()=>l,RK:()=>i,UE:()=>s,UU:()=>c,cY:()=>h,jD:()=>v,mG:()=>m,rD:()=>n});var r=a(39175);function o(e,t,a){let{reference:o,floating:n}=e;const l=(0,r.TV)(t),s=(0,r.Dz)(t),i=(0,r.sq)(s),c=(0,r.C0)(t),u="y"===l,d=o.x+o.width/2-n.width/2,v=o.y+o.height/2-n.height/2,p=o[i]/2-n[i]/2;let m;switch(c){case"top":m={x:d,y:o.y-n.height};break;case"bottom":m={x:d,y:o.y+o.height};break;case"right":m={x:o.x+o.width,y:v};break;case"left":m={x:o.x-n.width,y:v};break;default:m={x:o.x,y:o.y}}switch((0,r.Sg)(t)){case"start":m[s]-=p*(a&&u?-1:1);break;case"end":m[s]+=p*(a&&u?-1:1)}return m}const n=async(e,t,a)=>{const{placement:r="bottom",strategy:n="absolute",middleware:l=[],platform:s}=a,i=l.filter(Boolean),c=await(null==s.isRTL?void 0:s.isRTL(t));let u=await s.getElementRects({reference:e,floating:t,strategy:n}),{x:d,y:v}=o(u,r,c),p=r,m={},h=0;for(let a=0;a({name:"arrow",options:e,async fn(t){const{x:a,y:o,placement:n,rects:l,platform:s,elements:i,middlewareData:c}=t,{element:u,padding:d=0}=(0,r._3)(e,t)||{};if(null==u)return{};const v=(0,r.nI)(d),p={x:a,y:o},m=(0,r.Dz)(n),h=(0,r.sq)(m),f=await s.getDimensions(u),g="y"===m,w=g?"top":"left",b=g?"bottom":"right",y=g?"clientHeight":"clientWidth",x=l.reference[h]+l.reference[m]-p[m]-l.floating[h],_=p[m]-l.reference[m],k=await(null==s.getOffsetParent?void 0:s.getOffsetParent(u));let E=k?k[y]:0;E&&await(null==s.isElement?void 0:s.isElement(k))||(E=i.floating[y]||l.floating[h]);const C=x/2-_/2,j=E/2-f[h]/2-1,A=(0,r.jk)(v[w],j),S=(0,r.jk)(v[b],j),P=A,R=E-f[h]-S,M=E/2-f[h]/2+C,V=(0,r.qE)(P,M,R),z=!c.arrow&&null!=(0,r.Sg)(n)&&M!==V&&l.reference[h]/2-(M(0,r.Sg)(t)===e)),...a.filter((t=>(0,r.Sg)(t)!==e))]:a.filter((e=>(0,r.C0)(e)===e))).filter((a=>!e||(0,r.Sg)(a)===e||!!t&&(0,r.aD)(a)!==a))}(p||null,h,m):m,w=await l(t,f),b=(null==(a=i.autoPlacement)?void 0:a.index)||0,y=g[b];if(null==y)return{};const x=(0,r.w7)(y,s,await(null==u.isRTL?void 0:u.isRTL(d.floating)));if(c!==y)return{reset:{placement:g[0]}};const _=[w[(0,r.C0)(y)],w[x[0]],w[x[1]]],k=[...(null==(o=i.autoPlacement)?void 0:o.overflows)||[],{placement:y,overflows:_}],E=g[b+1];if(E)return{data:{index:b+1,overflows:k},reset:{placement:E}};const C=k.map((e=>{const t=(0,r.Sg)(e.placement);return[e.placement,t&&v?e.overflows.slice(0,2).reduce(((e,t)=>e+t),0):e.overflows[0],e.overflows]})).sort(((e,t)=>e[1]-t[1])),j=(null==(n=C.filter((e=>e[2].slice(0,(0,r.Sg)(e[0])?2:3).every((e=>e<=0))))[0])?void 0:n[0])||C[0][0];return j!==c?{data:{index:b+1,overflows:k},reset:{placement:j}}:{}}}},c=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var a,o;const{placement:n,middlewareData:s,rects:i,initialPlacement:c,platform:u,elements:d}=t,{mainAxis:v=!0,crossAxis:p=!0,fallbackPlacements:m,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:f="none",flipAlignment:g=!0,...w}=(0,r._3)(e,t);if(null!=(a=s.arrow)&&a.alignmentOffset)return{};const b=(0,r.C0)(n),y=(0,r.TV)(c),x=(0,r.C0)(c)===c,_=await(null==u.isRTL?void 0:u.isRTL(d.floating)),k=m||(x||!g?[(0,r.bV)(c)]:(0,r.WJ)(c)),E="none"!==f;!m&&E&&k.push(...(0,r.lP)(c,g,f,_));const C=[c,...k],j=await l(t,w),A=[];let S=(null==(o=s.flip)?void 0:o.overflows)||[];if(v&&A.push(j[b]),p){const e=(0,r.w7)(n,i,_);A.push(j[e[0]],j[e[1]])}if(S=[...S,{placement:n,overflows:A}],!A.every((e=>e<=0))){var P,R;const e=((null==(P=s.flip)?void 0:P.index)||0)+1,t=C[e];if(t)return{data:{index:e,overflows:S},reset:{placement:t}};let a=null==(R=S.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:R.placement;if(!a)switch(h){case"bestFit":{var M;const e=null==(M=S.filter((e=>{if(E){const t=(0,r.TV)(e.placement);return t===y||"y"===t}return!0})).map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:M[0];e&&(a=e);break}case"initialPlacement":a=c}if(n!==a)return{reset:{placement:a}}}return{}}}};function u(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function d(e){return r.r_.some((t=>e[t]>=0))}const v=function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){const{rects:a}=t,{strategy:o="referenceHidden",...n}=(0,r._3)(e,t);switch(o){case"referenceHidden":{const e=u(await l(t,{...n,elementContext:"reference"}),a.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:d(e)}}}case"escaped":{const e=u(await l(t,{...n,altBoundary:!0}),a.floating);return{data:{escapedOffsets:e,escaped:d(e)}}}default:return{}}}}};function p(e){const t=(0,r.jk)(...e.map((e=>e.left))),a=(0,r.jk)(...e.map((e=>e.top)));return{x:t,y:a,width:(0,r.T9)(...e.map((e=>e.right)))-t,height:(0,r.T9)(...e.map((e=>e.bottom)))-a}}const m=function(e){return void 0===e&&(e={}),{name:"inline",options:e,async fn(t){const{placement:a,elements:o,rects:n,platform:l,strategy:s}=t,{padding:i=2,x:c,y:u}=(0,r._3)(e,t),d=Array.from(await(null==l.getClientRects?void 0:l.getClientRects(o.reference))||[]),v=function(e){const t=e.slice().sort(((e,t)=>e.y-t.y)),a=[];let o=null;for(let e=0;eo.height/2?a.push([r]):a[a.length-1].push(r),o=r}return a.map((e=>(0,r.B1)(p(e))))}(d),m=(0,r.B1)(p(d)),h=(0,r.nI)(i);const f=await l.getElementRects({reference:{getBoundingClientRect:function(){if(2===v.length&&v[0].left>v[1].right&&null!=c&&null!=u)return v.find((e=>c>e.left-h.left&&ce.top-h.top&&u=2){if("y"===(0,r.TV)(a)){const e=v[0],t=v[v.length-1],o="top"===(0,r.C0)(a),n=e.top,l=t.bottom,s=o?e.left:t.left,i=o?e.right:t.right;return{top:n,bottom:l,left:s,right:i,width:i-s,height:l-n,x:s,y:n}}const e="left"===(0,r.C0)(a),t=(0,r.T9)(...v.map((e=>e.right))),o=(0,r.jk)(...v.map((e=>e.left))),n=v.filter((a=>e?a.left===o:a.right===t)),l=n[0].top,s=n[n.length-1].bottom;return{top:l,bottom:s,left:o,right:t,width:t-o,height:s-l,x:o,y:l}}return m}},floating:o.floating,strategy:s});return n.reference.x!==f.reference.x||n.reference.y!==f.reference.y||n.reference.width!==f.reference.width||n.reference.height!==f.reference.height?{reset:{rects:f}}:{}}}};const h=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var a,o;const{x:n,y:l,placement:s,middlewareData:i}=t,c=await async function(e,t){const{placement:a,platform:o,elements:n}=e,l=await(null==o.isRTL?void 0:o.isRTL(n.floating)),s=(0,r.C0)(a),i=(0,r.Sg)(a),c="y"===(0,r.TV)(a),u=["left","top"].includes(s)?-1:1,d=l&&c?-1:1,v=(0,r._3)(t,e);let{mainAxis:p,crossAxis:m,alignmentAxis:h}="number"==typeof v?{mainAxis:v,crossAxis:0,alignmentAxis:null}:{mainAxis:v.mainAxis||0,crossAxis:v.crossAxis||0,alignmentAxis:v.alignmentAxis};return i&&"number"==typeof h&&(m="end"===i?-1*h:h),c?{x:m*d,y:p*u}:{x:p*u,y:m*d}}(t,e);return s===(null==(a=i.offset)?void 0:a.placement)&&null!=(o=i.arrow)&&o.alignmentOffset?{}:{x:n+c.x,y:l+c.y,data:{...c,placement:s}}}}},f=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:a,y:o,placement:n}=t,{mainAxis:s=!0,crossAxis:i=!1,limiter:c={fn:e=>{let{x:t,y:a}=e;return{x:t,y:a}}},...u}=(0,r._3)(e,t),d={x:a,y:o},v=await l(t,u),p=(0,r.TV)((0,r.C0)(n)),m=(0,r.PG)(p);let h=d[m],f=d[p];if(s){const e="y"===m?"bottom":"right",t=h+v["y"===m?"top":"left"],a=h-v[e];h=(0,r.qE)(t,h,a)}if(i){const e="y"===p?"bottom":"right",t=f+v["y"===p?"top":"left"],a=f-v[e];f=(0,r.qE)(t,f,a)}const g=c.fn({...t,[m]:h,[p]:f});return{...g,data:{x:g.x-a,y:g.y-o,enabled:{[m]:s,[p]:i}}}}}},g=function(e){return void 0===e&&(e={}),{options:e,fn(t){const{x:a,y:o,placement:n,rects:l,middlewareData:s}=t,{offset:i=0,mainAxis:c=!0,crossAxis:u=!0}=(0,r._3)(e,t),d={x:a,y:o},v=(0,r.TV)(n),p=(0,r.PG)(v);let m=d[p],h=d[v];const f=(0,r._3)(i,t),g="number"==typeof f?{mainAxis:f,crossAxis:0}:{mainAxis:0,crossAxis:0,...f};if(c){const e="y"===p?"height":"width",t=l.reference[p]-l.floating[e]+g.mainAxis,a=l.reference[p]+l.reference[e]-g.mainAxis;ma&&(m=a)}if(u){var w,b;const e="y"===p?"width":"height",t=["top","left"].includes((0,r.C0)(n)),a=l.reference[v]-l.floating[e]+(t&&(null==(w=s.offset)?void 0:w[v])||0)+(t?0:g.crossAxis),o=l.reference[v]+l.reference[e]+(t?0:(null==(b=s.offset)?void 0:b[v])||0)-(t?g.crossAxis:0);ho&&(h=o)}return{[p]:m,[v]:h}}}},w=function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){var a,o;const{placement:n,rects:s,platform:i,elements:c}=t,{apply:u=()=>{},...d}=(0,r._3)(e,t),v=await l(t,d),p=(0,r.C0)(n),m=(0,r.Sg)(n),h="y"===(0,r.TV)(n),{width:f,height:g}=s.floating;let w,b;"top"===p||"bottom"===p?(w=p,b=m===(await(null==i.isRTL?void 0:i.isRTL(c.floating))?"start":"end")?"left":"right"):(b=p,w="end"===m?"top":"bottom");const y=g-v.top-v.bottom,x=f-v.left-v.right,_=(0,r.jk)(g-v[w],y),k=(0,r.jk)(f-v[b],x),E=!t.middlewareData.shift;let C=_,j=k;if(null!=(a=t.middlewareData.shift)&&a.enabled.x&&(j=x),null!=(o=t.middlewareData.shift)&&o.enabled.y&&(C=y),E&&!m){const e=(0,r.T9)(v.left,0),t=(0,r.T9)(v.right,0),a=(0,r.T9)(v.top,0),o=(0,r.T9)(v.bottom,0);h?j=f-2*(0!==e||0!==t?e+t:(0,r.T9)(v.left,v.right)):C=g-2*(0!==a||0!==o?a+o:(0,r.T9)(v.top,v.bottom))}await u({...t,availableWidth:j,availableHeight:C});const A=await i.getDimensions(c.floating);return f!==A.width||g!==A.height?{reset:{rects:!0}}:{}}}}},81289:(e,t,a)=>{"use strict";function r(){return"undefined"!=typeof window}function o(e){return s(e)?(e.nodeName||"").toLowerCase():"#document"}function n(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function l(e){var t;return null==(t=(s(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function s(e){return!!r()&&(e instanceof Node||e instanceof n(e).Node)}function i(e){return!!r()&&(e instanceof Element||e instanceof n(e).Element)}function c(e){return!!r()&&(e instanceof HTMLElement||e instanceof n(e).HTMLElement)}function u(e){return!(!r()||"undefined"==typeof ShadowRoot)&&(e instanceof ShadowRoot||e instanceof n(e).ShadowRoot)}function d(e){const{overflow:t,overflowX:a,overflowY:r,display:o}=w(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+a)&&!["inline","contents"].includes(o)}function v(e){return["table","td","th"].includes(o(e))}function p(e){return[":popover-open",":modal"].some((t=>{try{return e.matches(t)}catch(e){return!1}}))}function m(e){const t=f(),a=i(e)?w(e):e;return["transform","translate","scale","rotate","perspective"].some((e=>!!a[e]&&"none"!==a[e]))||!!a.containerType&&"normal"!==a.containerType||!t&&!!a.backdropFilter&&"none"!==a.backdropFilter||!t&&!!a.filter&&"none"!==a.filter||["transform","translate","scale","rotate","perspective","filter"].some((e=>(a.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(a.contain||"").includes(e)))}function h(e){let t=y(e);for(;c(t)&&!g(t);){if(m(t))return t;if(p(t))return null;t=y(t)}return null}function f(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function g(e){return["html","body","#document"].includes(o(e))}function w(e){return n(e).getComputedStyle(e)}function b(e){return i(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function y(e){if("html"===o(e))return e;const t=e.assignedSlot||e.parentNode||u(e)&&e.host||l(e);return u(t)?t.host:t}function x(e){const t=y(e);return g(t)?e.ownerDocument?e.ownerDocument.body:e.body:c(t)&&d(t)?t:x(t)}function _(e,t,a){var r;void 0===t&&(t=[]),void 0===a&&(a=!0);const o=x(e),l=o===(null==(r=e.ownerDocument)?void 0:r.body),s=n(o);if(l){const e=k(s);return t.concat(s,s.visualViewport||[],d(o)?o:[],e&&a?_(e):[])}return t.concat(o,_(o,[],a))}function k(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}a.d(t,{$4:()=>y,CP:()=>b,L9:()=>w,Lv:()=>v,Tc:()=>f,Tf:()=>p,ZU:()=>d,_m:()=>k,ep:()=>l,eu:()=>g,gJ:()=>h,mq:()=>o,sQ:()=>m,sb:()=>c,v9:()=>_,vq:()=>i,zk:()=>n})},39175:(e,t,a)=>{"use strict";a.d(t,{B1:()=>A,C0:()=>h,DD:()=>n,Dz:()=>y,Jx:()=>u,LI:()=>i,PG:()=>g,RI:()=>c,Sg:()=>f,T9:()=>s,TV:()=>b,WJ:()=>_,_3:()=>m,aD:()=>k,bV:()=>C,jk:()=>l,lP:()=>E,nI:()=>j,qE:()=>p,r_:()=>r,sq:()=>w,w7:()=>x});const r=["top","right","bottom","left"],o=["start","end"],n=r.reduce(((e,t)=>e.concat(t,t+"-"+o[0],t+"-"+o[1])),[]),l=Math.min,s=Math.max,i=Math.round,c=Math.floor,u=e=>({x:e,y:e}),d={left:"right",right:"left",bottom:"top",top:"bottom"},v={start:"end",end:"start"};function p(e,t,a){return s(e,l(t,a))}function m(e,t){return"function"==typeof e?e(t):e}function h(e){return e.split("-")[0]}function f(e){return e.split("-")[1]}function g(e){return"x"===e?"y":"x"}function w(e){return"y"===e?"height":"width"}function b(e){return["top","bottom"].includes(h(e))?"y":"x"}function y(e){return g(b(e))}function x(e,t,a){void 0===a&&(a=!1);const r=f(e),o=y(e),n=w(o);let l="x"===o?r===(a?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[n]>t.floating[n]&&(l=C(l)),[l,C(l)]}function _(e){const t=C(e);return[k(e),t,k(t)]}function k(e){return e.replace(/start|end/g,(e=>v[e]))}function E(e,t,a,r){const o=f(e);let n=function(e,t,a){const r=["left","right"],o=["right","left"],n=["top","bottom"],l=["bottom","top"];switch(e){case"top":case"bottom":return a?t?o:r:t?r:o;case"left":case"right":return t?n:l;default:return[]}}(h(e),"start"===a,r);return o&&(n=n.map((e=>e+"-"+o)),t&&(n=n.concat(n.map(k)))),n}function C(e){return e.replace(/left|right|bottom|top/g,(e=>d[e]))}function j(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function A(e){const{x:t,y:a,width:r,height:o}=e;return{width:r,height:o,top:a,left:t,right:t+r,bottom:a+o,x:t,y:a}}},82464:(e,t,a)=>{"use strict";a.d(t,{m:()=>n});var r=a(5530),o=a(20698),n=new class extends r.Q{#e;#t;#a;constructor(){super(),this.#a=e=>{if(!o.S$&&window.addEventListener){const t=()=>e();return window.addEventListener("visibilitychange",t,!1),()=>{window.removeEventListener("visibilitychange",t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#a)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#a=e,this.#t?.(),this.#t=e((e=>{"boolean"==typeof e?this.setFocused(e):this.onFocus()}))}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){this.listeners.forEach((e=>{e()}))}isFocused(){return"boolean"==typeof this.#e?this.#e:"hidden"!==globalThis.document?.visibilityState}}},69101:(e,t,a)=>{"use strict";a.d(t,{PL:()=>o});var r=a(20698);function o(e){return{onFetch:(t,a)=>{const o=async()=>{const a=t.options,o=t.fetchOptions?.meta?.fetchMore?.direction,s=t.state.data?.pages||[],i=t.state.data?.pageParams||[],c={pages:[],pageParams:[]};let u=!1;const d=t.options.queryFn||(()=>Promise.reject(new Error(`Missing queryFn: '${t.options.queryHash}'`))),v=async(e,a,o)=>{if(u)return Promise.reject();if(null==a&&e.pages.length)return Promise.resolve(e);const n={queryKey:t.queryKey,pageParam:a,direction:o?"backward":"forward",meta:t.options.meta};var l;l=n,Object.defineProperty(l,"signal",{enumerable:!0,get:()=>(t.signal.aborted?u=!0:t.signal.addEventListener("abort",(()=>{u=!0})),t.signal)});const s=await d(n),{maxPages:i}=t.options,c=o?r.ZZ:r.y9;return{pages:c(e.pages,s,i),pageParams:c(e.pageParams,a,i)}};let p;if(o&&s.length){const e="backward"===o,t={pages:s,pageParams:i},r=(e?l:n)(a,t);p=await v(t,r,e)}else{p=await v(c,i[0]??a.initialPageParam);const t=e??s.length;for(let e=1;et.options.persister?.(o,{queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},a):t.fetchFn=o}}}function n(e,{pages:t,pageParams:a}){const r=t.length-1;return e.getNextPageParam(t[r],t,a[r],a)}function l(e,{pages:t,pageParams:a}){return e.getPreviousPageParam?.(t[0],t,a[0],a)}},4352:(e,t,a)=>{"use strict";a.d(t,{$:()=>s,s:()=>l});var r=a(31795),o=a(91450),n=a(14610),l=class extends o.k{#r;#o;#n;#l;constructor(e){super(),this.mutationId=e.mutationId,this.#o=e.defaultOptions,this.#n=e.mutationCache,this.#r=[],this.state=e.state||{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0},this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options={...this.#o,...e},this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#r.includes(e)||(this.#r.push(e),this.clearGcTimeout(),this.#n.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#r=this.#r.filter((t=>t!==e)),this.scheduleGc(),this.#n.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#r.length||("pending"===this.state.status?this.scheduleGc():this.#n.remove(this))}continue(){return this.#l?.continue()??this.execute(this.state.variables)}async execute(e){const t=()=>(this.#l=(0,n.II)({fn:()=>this.options.mutationFn?this.options.mutationFn(e):Promise.reject(new Error("No mutationFn found")),onFail:(e,t)=>{this.#s({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#s({type:"pause"})},onContinue:()=>{this.#s({type:"continue"})},retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode}),this.#l.promise),a="pending"===this.state.status;try{if(!a){this.#s({type:"pending",variables:e}),await(this.#n.config.onMutate?.(e,this));const t=await(this.options.onMutate?.(e));t!==this.state.context&&this.#s({type:"pending",context:t,variables:e})}const r=await t();return await(this.#n.config.onSuccess?.(r,e,this.state.context,this)),await(this.options.onSuccess?.(r,e,this.state.context)),await(this.#n.config.onSettled?.(r,null,this.state.variables,this.state.context,this)),await(this.options.onSettled?.(r,null,e,this.state.context)),this.#s({type:"success",data:r}),r}catch(t){try{throw await(this.#n.config.onError?.(t,e,this.state.context,this)),await(this.options.onError?.(t,e,this.state.context)),await(this.#n.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this)),await(this.options.onSettled?.(void 0,t,e,this.state.context)),t}finally{this.#s({type:"error",error:t})}}}#s(e){this.state=(t=>{switch(e.type){case"failed":return{...t,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...t,isPaused:!0};case"continue":return{...t,isPaused:!1};case"pending":return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:!(0,n.v_)(this.options.networkMode),status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}})(this.state),r.j.batch((()=>{this.#r.forEach((t=>{t.onMutationUpdate(e)})),this.#n.notify({mutation:this,type:"updated",action:e})}))}};function s(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}},17708:(e,t,a)=>{"use strict";a.d(t,{q:()=>s});var r=a(31795),o=a(4352),n=a(20698),l=a(5530),s=class extends l.Q{constructor(e={}){super(),this.config=e,this.#i=[],this.#c=0}#i;#c;#u;build(e,t,a){const r=new o.s({mutationCache:this,mutationId:++this.#c,options:e.defaultMutationOptions(t),state:a});return this.add(r),r}add(e){this.#i.push(e),this.notify({type:"added",mutation:e})}remove(e){this.#i=this.#i.filter((t=>t!==e)),this.notify({type:"removed",mutation:e})}clear(){r.j.batch((()=>{this.#i.forEach((e=>{this.remove(e)}))}))}getAll(){return this.#i}find(e){const t={exact:!0,...e};return this.#i.find((e=>(0,n.nJ)(t,e)))}findAll(e={}){return this.#i.filter((t=>(0,n.nJ)(e,t)))}notify(e){r.j.batch((()=>{this.listeners.forEach((t=>{t(e)}))}))}resumePausedMutations(){return this.#u=(this.#u??Promise.resolve()).then((()=>{const e=this.#i.filter((e=>e.state.isPaused));return r.j.batch((()=>e.reduce(((e,t)=>e.then((()=>t.continue().catch(n.lQ)))),Promise.resolve())))})).then((()=>{this.#u=void 0})),this.#u}}},44158:(e,t,a)=>{"use strict";a.d(t,{_:()=>s});var r=a(4352),o=a(31795),n=a(5530),l=a(20698),s=class extends n.Q{#d;#v=void 0;#p;#m;constructor(e,t){super(),this.#d=e,this.setOptions(t),this.bindMethods(),this.#h()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){const t=this.options;this.options=this.#d.defaultMutationOptions(e),(0,l.f8)(t,this.options)||this.#d.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.#p,observer:this}),t?.mutationKey&&this.options.mutationKey&&(0,l.EN)(t.mutationKey)!==(0,l.EN)(this.options.mutationKey)?this.reset():this.#p?.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#p?.removeObserver(this)}onMutationUpdate(e){this.#h(),this.#f(e)}getCurrentResult(){return this.#v}reset(){this.#p?.removeObserver(this),this.#p=void 0,this.#h(),this.#f()}mutate(e,t){return this.#m=t,this.#p?.removeObserver(this),this.#p=this.#d.getMutationCache().build(this.#d,this.options),this.#p.addObserver(this),this.#p.execute(e)}#h(){const e=this.#p?.state??(0,r.$)();this.#v={...e,isPending:"pending"===e.status,isSuccess:"success"===e.status,isError:"error"===e.status,isIdle:"idle"===e.status,mutate:this.mutate,reset:this.reset}}#f(e){o.j.batch((()=>{if(this.#m&&this.hasListeners()){const t=this.#v.variables,a=this.#v.context;"success"===e?.type?(this.#m.onSuccess?.(e.data,t,a),this.#m.onSettled?.(e.data,null,t,a)):"error"===e?.type&&(this.#m.onError?.(e.error,t,a),this.#m.onSettled?.(void 0,e.error,t,a))}this.listeners.forEach((e=>{e(this.#v)}))}))}}},31795:(e,t,a)=>{"use strict";a.d(t,{j:()=>r});var r=function(){let e=[],t=0,a=e=>{e()},r=e=>{e()},o=e=>setTimeout(e,0);const n=r=>{t?e.push(r):o((()=>{a(r)}))},l=()=>{const t=e;e=[],t.length&&o((()=>{r((()=>{t.forEach((e=>{a(e)}))}))}))};return{batch:e=>{let a;t++;try{a=e()}finally{t--,t||l()}return a},batchCalls:e=>(...t)=>{n((()=>{e(...t)}))},schedule:n,setNotifyFunction:e=>{a=e},setBatchNotifyFunction:e=>{r=e},setScheduler:e=>{o=e}}}()},95873:(e,t,a)=>{"use strict";a.d(t,{t:()=>n});var r=a(5530),o=a(20698),n=new class extends r.Q{#g=!0;#t;#a;constructor(){super(),this.#a=e=>{if(!o.S$&&window.addEventListener){const t=()=>e(!0),a=()=>e(!1);return window.addEventListener("online",t,!1),window.addEventListener("offline",a,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",a)}}}}onSubscribe(){this.#t||this.setEventListener(this.#a)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#a=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#g!==e&&(this.#g=e,this.listeners.forEach((t=>{t(e)})))}isOnline(){return this.#g}}},24135:(e,t,a)=>{"use strict";a.d(t,{X:()=>s});var r=a(20698),o=a(31795),n=a(14610),l=a(91450),s=class extends l.k{#w;#b;#y;#x;#l;#r;#o;#_;constructor(e){super(),this.#_=!1,this.#o=e.defaultOptions,this.#k(e.options),this.#r=[],this.#y=e.cache,this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#w=e.state||function(e){const t="function"==typeof e.initialData?e.initialData():e.initialData,a=void 0!==t,r=a?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:a?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:a?"success":"pending",fetchStatus:"idle"}}(this.options),this.state=this.#w,this.scheduleGc()}get meta(){return this.options.meta}#k(e){this.options={...this.#o,...e},this.updateGcTime(this.options.gcTime)}optionalRemove(){this.#r.length||"idle"!==this.state.fetchStatus||this.#y.remove(this)}setData(e,t){const a=(0,r.pl)(this.state.data,e,this.options);return this.#s({data:a,type:"success",dataUpdatedAt:t?.updatedAt,manual:t?.manual}),a}setState(e,t){this.#s({type:"setState",state:e,setStateOptions:t})}cancel(e){const t=this.#x;return this.#l?.cancel(e),t?t.then(r.lQ).catch(r.lQ):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#w)}isActive(){return this.#r.some((e=>!1!==e.options.enabled))}isDisabled(){return this.getObserversCount()>0&&!this.isActive()}isStale(){return this.state.isInvalidated||!this.state.dataUpdatedAt||this.#r.some((e=>e.getCurrentResult().isStale))}isStaleByTime(e=0){return this.state.isInvalidated||!this.state.dataUpdatedAt||!(0,r.j3)(this.state.dataUpdatedAt,e)}onFocus(){const e=this.#r.find((e=>e.shouldFetchOnWindowFocus()));e?.refetch({cancelRefetch:!1}),this.#l?.continue()}onOnline(){const e=this.#r.find((e=>e.shouldFetchOnReconnect()));e?.refetch({cancelRefetch:!1}),this.#l?.continue()}addObserver(e){this.#r.includes(e)||(this.#r.push(e),this.clearGcTimeout(),this.#y.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.#r.includes(e)&&(this.#r=this.#r.filter((t=>t!==e)),this.#r.length||(this.#l&&(this.#_?this.#l.cancel({revert:!0}):this.#l.cancelRetry()),this.scheduleGc()),this.#y.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.#r.length}invalidate(){this.state.isInvalidated||this.#s({type:"invalidate"})}fetch(e,t){if("idle"!==this.state.fetchStatus)if(this.state.dataUpdatedAt&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#x)return this.#l?.continueRetry(),this.#x;if(e&&this.#k(e),!this.options.queryFn){const e=this.#r.find((e=>e.options.queryFn));e&&this.#k(e.options)}const a=new AbortController,r={queryKey:this.queryKey,meta:this.meta},o=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(this.#_=!0,a.signal)})};o(r);const l={fetchOptions:t,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:()=>this.options.queryFn?(this.#_=!1,this.options.persister?this.options.persister(this.options.queryFn,r,this):this.options.queryFn(r)):Promise.reject(new Error(`Missing queryFn: '${this.options.queryHash}'`))};o(l),this.options.behavior?.onFetch(l,this),this.#b=this.state,"idle"!==this.state.fetchStatus&&this.state.fetchMeta===l.fetchOptions?.meta||this.#s({type:"fetch",meta:l.fetchOptions?.meta});const s=e=>{(0,n.wm)(e)&&e.silent||this.#s({type:"error",error:e}),(0,n.wm)(e)||(this.#y.config.onError?.(e,this),this.#y.config.onSettled?.(this.state.data,e,this)),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1};return this.#l=(0,n.II)({fn:l.fetchFn,abort:a.abort.bind(a),onSuccess:e=>{void 0!==e?(this.setData(e),this.#y.config.onSuccess?.(e,this),this.#y.config.onSettled?.(e,this.state.error,this),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1):s(new Error(`${this.queryHash} data is undefined`))},onError:s,onFail:(e,t)=>{this.#s({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#s({type:"pause"})},onContinue:()=>{this.#s({type:"continue"})},retry:l.options.retry,retryDelay:l.options.retryDelay,networkMode:l.options.networkMode}),this.#x=this.#l.promise,this.#x}#s(e){this.state=(t=>{switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":return{...t,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:e.meta??null,fetchStatus:(0,n.v_)(this.options.networkMode)?"fetching":"paused",...!t.dataUpdatedAt&&{error:null,status:"pending"}};case"success":return{...t,data:e.data,dataUpdateCount:t.dataUpdateCount+1,dataUpdatedAt:e.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":const a=e.error;return(0,n.wm)(a)&&a.revert&&this.#b?{...this.#b,fetchStatus:"idle"}:{...t,error:a,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:a,fetchStatus:"idle",status:"error"};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}})(this.state),o.j.batch((()=>{this.#r.forEach((e=>{e.onQueryUpdate()})),this.#y.notify({query:this,type:"updated",action:e})}))}}},3205:(e,t,a)=>{"use strict";a.d(t,{$:()=>s});var r=a(20698),o=a(24135),n=a(31795),l=a(5530),s=class extends l.Q{constructor(e={}){super(),this.config=e,this.#E=new Map}#E;build(e,t,a){const n=t.queryKey,l=t.queryHash??(0,r.F$)(n,t);let s=this.get(l);return s||(s=new o.X({cache:this,queryKey:n,queryHash:l,options:e.defaultQueryOptions(t),state:a,defaultOptions:e.getQueryDefaults(n)}),this.add(s)),s}add(e){this.#E.has(e.queryHash)||(this.#E.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){const t=this.#E.get(e.queryHash);t&&(e.destroy(),t===e&&this.#E.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){n.j.batch((()=>{this.getAll().forEach((e=>{this.remove(e)}))}))}get(e){return this.#E.get(e)}getAll(){return[...this.#E.values()]}find(e){const t={exact:!0,...e};return this.getAll().find((e=>(0,r.MK)(t,e)))}findAll(e={}){const t=this.getAll();return Object.keys(e).length>0?t.filter((t=>(0,r.MK)(e,t))):t}notify(e){n.j.batch((()=>{this.listeners.forEach((t=>{t(e)}))}))}onFocus(){n.j.batch((()=>{this.getAll().forEach((e=>{e.onFocus()}))}))}onOnline(){n.j.batch((()=>{this.getAll().forEach((e=>{e.onOnline()}))}))}}},70116:(e,t,a)=>{"use strict";a.d(t,{E:()=>u});var r=a(20698),o=a(3205),n=a(17708),l=a(82464),s=a(95873),i=a(31795),c=a(69101),u=class{#C;#n;#o;#j;#A;#S;#P;#R;constructor(e={}){this.#C=e.queryCache||new o.$,this.#n=e.mutationCache||new n.q,this.#o=e.defaultOptions||{},this.#j=new Map,this.#A=new Map,this.#S=0}mount(){this.#S++,1===this.#S&&(this.#P=l.m.subscribe((()=>{l.m.isFocused()&&(this.resumePausedMutations(),this.#C.onFocus())})),this.#R=s.t.subscribe((()=>{s.t.isOnline()&&(this.resumePausedMutations(),this.#C.onOnline())})))}unmount(){this.#S--,0===this.#S&&(this.#P?.(),this.#P=void 0,this.#R?.(),this.#R=void 0)}isFetching(e){return this.#C.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#n.findAll({...e,status:"pending"}).length}getQueryData(e){return this.#C.find({queryKey:e})?.state.data}ensureQueryData(e){const t=this.getQueryData(e.queryKey);return void 0!==t?Promise.resolve(t):this.fetchQuery(e)}getQueriesData(e){return this.getQueryCache().findAll(e).map((({queryKey:e,state:t})=>[e,t.data]))}setQueryData(e,t,a){const o=this.#C.find({queryKey:e}),n=o?.state.data,l=(0,r.Zw)(t,n);if(void 0===l)return;const s=this.defaultQueryOptions({queryKey:e});return this.#C.build(this,s).setData(l,{...a,manual:!0})}setQueriesData(e,t,a){return i.j.batch((()=>this.getQueryCache().findAll(e).map((({queryKey:e})=>[e,this.setQueryData(e,t,a)]))))}getQueryState(e){return this.#C.find({queryKey:e})?.state}removeQueries(e){const t=this.#C;i.j.batch((()=>{t.findAll(e).forEach((e=>{t.remove(e)}))}))}resetQueries(e,t){const a=this.#C,r={type:"active",...e};return i.j.batch((()=>(a.findAll(e).forEach((e=>{e.reset()})),this.refetchQueries(r,t))))}cancelQueries(e={},t={}){const a={revert:!0,...t},o=i.j.batch((()=>this.#C.findAll(e).map((e=>e.cancel(a)))));return Promise.all(o).then(r.lQ).catch(r.lQ)}invalidateQueries(e={},t={}){return i.j.batch((()=>{if(this.#C.findAll(e).forEach((e=>{e.invalidate()})),"none"===e.refetchType)return Promise.resolve();const a={...e,type:e.refetchType??e.type??"active"};return this.refetchQueries(a,t)}))}refetchQueries(e={},t){const a={...t,cancelRefetch:t?.cancelRefetch??!0},o=i.j.batch((()=>this.#C.findAll(e).filter((e=>!e.isDisabled())).map((e=>{let t=e.fetch(void 0,a);return a.throwOnError||(t=t.catch(r.lQ)),"paused"===e.state.fetchStatus?Promise.resolve():t}))));return Promise.all(o).then(r.lQ)}fetchQuery(e){const t=this.defaultQueryOptions(e);void 0===t.retry&&(t.retry=!1);const a=this.#C.build(this,t);return a.isStaleByTime(t.staleTime)?a.fetch(t):Promise.resolve(a.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(r.lQ).catch(r.lQ)}fetchInfiniteQuery(e){return e.behavior=(0,c.PL)(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(r.lQ).catch(r.lQ)}resumePausedMutations(){return this.#n.resumePausedMutations()}getQueryCache(){return this.#C}getMutationCache(){return this.#n}getDefaultOptions(){return this.#o}setDefaultOptions(e){this.#o=e}setQueryDefaults(e,t){this.#j.set((0,r.EN)(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){const t=[...this.#j.values()];let a={};return t.forEach((t=>{(0,r.Cp)(e,t.queryKey)&&(a={...a,...t.defaultOptions})})),a}setMutationDefaults(e,t){this.#A.set((0,r.EN)(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){const t=[...this.#A.values()];let a={};return t.forEach((t=>{(0,r.Cp)(e,t.mutationKey)&&(a={...a,...t.defaultOptions})})),a}defaultQueryOptions(e){if(e?._defaulted)return e;const t={...this.#o.queries,...e?.queryKey&&this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=(0,r.F$)(t.queryKey,t)),void 0===t.refetchOnReconnect&&(t.refetchOnReconnect="always"!==t.networkMode),void 0===t.throwOnError&&(t.throwOnError=!!t.suspense),void 0===t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#o.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#C.clear(),this.#n.clear()}}},93397:(e,t,a)=>{"use strict";a.d(t,{$:()=>i});var r=a(20698),o=a(31795),n=a(82464),l=a(5530),s=a(14610),i=class extends l.Q{constructor(e,t){super(),this.options=t,this.#d=e,this.#M=null,this.bindMethods(),this.setOptions(t)}#d;#V=void 0;#z=void 0;#v=void 0;#H;#L;#M;#O;#N;#I;#B;#T;#F;#D=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(this.#V.addObserver(this),c(this.#V,this.options)?this.#G():this.updateResult(),this.#U())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return u(this.#V,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return u(this.#V,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#q(),this.#Z(),this.#V.removeObserver(this)}setOptions(e,t){const a=this.options,o=this.#V;if(this.options=this.#d.defaultQueryOptions(e),(0,r.f8)(a,this.options)||this.#d.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#V,observer:this}),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled)throw new Error("Expected enabled to be a boolean");this.options.queryKey||(this.options.queryKey=a.queryKey),this.#W();const n=this.hasListeners();n&&d(this.#V,o,this.options,a)&&this.#G(),this.updateResult(t),!n||this.#V===o&&this.options.enabled===a.enabled&&this.options.staleTime===a.staleTime||this.#$();const l=this.#J();!n||this.#V===o&&this.options.enabled===a.enabled&&l===this.#F||this.#K(l)}getOptimisticResult(e){const t=this.#d.getQueryCache().build(this.#d,e),a=this.createResult(t,e);return function(e,t){if(!(0,r.f8)(e.getCurrentResult(),t))return!0;return!1}(this,a)&&(this.#v=a,this.#L=this.options,this.#H=this.#V.state),a}getCurrentResult(){return this.#v}trackResult(e){const t={};return Object.keys(e).forEach((a=>{Object.defineProperty(t,a,{configurable:!1,enumerable:!0,get:()=>(this.#D.add(a),e[a])})})),t}getCurrentQuery(){return this.#V}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){const t=this.#d.defaultQueryOptions(e),a=this.#d.getQueryCache().build(this.#d,t);return a.isFetchingOptimistic=!0,a.fetch().then((()=>this.createResult(a,t)))}fetch(e){return this.#G({...e,cancelRefetch:e.cancelRefetch??!0}).then((()=>(this.updateResult(),this.#v)))}#G(e){this.#W();let t=this.#V.fetch(this.options,e);return e?.throwOnError||(t=t.catch(r.lQ)),t}#$(){if(this.#q(),r.S$||this.#v.isStale||!(0,r.gn)(this.options.staleTime))return;const e=(0,r.j3)(this.#v.dataUpdatedAt,this.options.staleTime)+1;this.#B=setTimeout((()=>{this.#v.isStale||this.updateResult()}),e)}#J(){return("function"==typeof this.options.refetchInterval?this.options.refetchInterval(this.#V):this.options.refetchInterval)??!1}#K(e){this.#Z(),this.#F=e,!r.S$&&!1!==this.options.enabled&&(0,r.gn)(this.#F)&&0!==this.#F&&(this.#T=setInterval((()=>{(this.options.refetchIntervalInBackground||n.m.isFocused())&&this.#G()}),this.#F))}#U(){this.#$(),this.#K(this.#J())}#q(){this.#B&&(clearTimeout(this.#B),this.#B=void 0)}#Z(){this.#T&&(clearInterval(this.#T),this.#T=void 0)}createResult(e,t){const a=this.#V,o=this.options,n=this.#v,l=this.#H,i=this.#L,u=e!==a?e.state:this.#z,{state:p}=e;let m,{error:h,errorUpdatedAt:f,fetchStatus:g,status:w}=p,b=!1;if(t._optimisticResults){const r=this.hasListeners(),n=!r&&c(e,t),l=r&&d(e,a,t,o);(n||l)&&(g=(0,s.v_)(e.options.networkMode)?"fetching":"paused",p.dataUpdatedAt||(w="pending")),"isRestoring"===t._optimisticResults&&(g="idle")}if(t.select&&void 0!==p.data)if(n&&p.data===l?.data&&t.select===this.#O)m=this.#N;else try{this.#O=t.select,m=t.select(p.data),m=(0,r.pl)(n?.data,m,t),this.#N=m,this.#M=null}catch(e){this.#M=e}else m=p.data;if(void 0!==t.placeholderData&&void 0===m&&"pending"===w){let e;if(n?.isPlaceholderData&&t.placeholderData===i?.placeholderData)e=n.data;else if(e="function"==typeof t.placeholderData?t.placeholderData(this.#I?.state.data,this.#I):t.placeholderData,t.select&&void 0!==e)try{e=t.select(e),this.#M=null}catch(e){this.#M=e}void 0!==e&&(w="success",m=(0,r.pl)(n?.data,e,t),b=!0)}this.#M&&(h=this.#M,m=this.#N,f=Date.now(),w="error");const y="fetching"===g,x="pending"===w,_="error"===w,k=x&&y;return{status:w,fetchStatus:g,isPending:x,isSuccess:"success"===w,isError:_,isInitialLoading:k,isLoading:k,data:m,dataUpdatedAt:p.dataUpdatedAt,error:h,errorUpdatedAt:f,failureCount:p.fetchFailureCount,failureReason:p.fetchFailureReason,errorUpdateCount:p.errorUpdateCount,isFetched:p.dataUpdateCount>0||p.errorUpdateCount>0,isFetchedAfterMount:p.dataUpdateCount>u.dataUpdateCount||p.errorUpdateCount>u.errorUpdateCount,isFetching:y,isRefetching:y&&!x,isLoadingError:_&&0===p.dataUpdatedAt,isPaused:"paused"===g,isPlaceholderData:b,isRefetchError:_&&0!==p.dataUpdatedAt,isStale:v(e,t),refetch:this.refetch}}updateResult(e){const t=this.#v,a=this.createResult(this.#V,this.options);if(this.#H=this.#V.state,this.#L=this.options,void 0!==this.#H.data&&(this.#I=this.#V),(0,r.f8)(a,t))return;this.#v=a;const o={};!1!==e?.listeners&&(()=>{if(!t)return!0;const{notifyOnChangeProps:e}=this.options,a="function"==typeof e?e():e;if("all"===a||!a&&!this.#D.size)return!0;const r=new Set(a??this.#D);return this.options.throwOnError&&r.add("error"),Object.keys(this.#v).some((e=>{const a=e;return this.#v[a]!==t[a]&&r.has(a)}))})()&&(o.listeners=!0),this.#f({...o,...e})}#W(){const e=this.#d.getQueryCache().build(this.#d,this.options);if(e===this.#V)return;const t=this.#V;this.#V=e,this.#z=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#U()}#f(e){o.j.batch((()=>{e.listeners&&this.listeners.forEach((e=>{e(this.#v)})),this.#d.getQueryCache().notify({query:this.#V,type:"observerResultsUpdated"})}))}};function c(e,t){return function(e,t){return!(!1===t.enabled||e.state.dataUpdatedAt||"error"===e.state.status&&!1===t.retryOnMount)}(e,t)||e.state.dataUpdatedAt>0&&u(e,t,t.refetchOnMount)}function u(e,t,a){if(!1!==t.enabled){const r="function"==typeof a?a(e):a;return"always"===r||!1!==r&&v(e,t)}return!1}function d(e,t,a,r){return!1!==a.enabled&&(e!==t||!1===r.enabled)&&(!a.suspense||"error"!==e.state.status)&&v(e,a)}function v(e,t){return e.isStaleByTime(t.staleTime)}},91450:(e,t,a)=>{"use strict";a.d(t,{k:()=>o});var r=a(20698),o=class{#Q;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),(0,r.gn)(this.gcTime)&&(this.#Q=setTimeout((()=>{this.optionalRemove()}),this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(r.S$?1/0:3e5))}clearGcTimeout(){this.#Q&&(clearTimeout(this.#Q),this.#Q=void 0)}}},14610:(e,t,a)=>{"use strict";a.d(t,{II:()=>u,v_:()=>s,wm:()=>c});var r=a(82464),o=a(95873),n=a(20698);function l(e){return Math.min(1e3*2**e,3e4)}function s(e){return"online"!==(e??"online")||o.t.isOnline()}var i=class{constructor(e){this.revert=e?.revert,this.silent=e?.silent}};function c(e){return e instanceof i}function u(e){let t,a,c,u=!1,d=0,v=!1;const p=new Promise(((e,t)=>{a=e,c=t})),m=()=>!r.m.isFocused()||"always"!==e.networkMode&&!o.t.isOnline(),h=r=>{v||(v=!0,e.onSuccess?.(r),t?.(),a(r))},f=a=>{v||(v=!0,e.onError?.(a),t?.(),c(a))},g=()=>new Promise((a=>{t=e=>{const t=v||!m();return t&&a(e),t},e.onPause?.()})).then((()=>{t=void 0,v||e.onContinue?.()})),w=()=>{if(v)return;let t;try{t=e.fn()}catch(e){t=Promise.reject(e)}Promise.resolve(t).then(h).catch((t=>{if(v)return;const a=e.retry??(n.S$?0:3),r=e.retryDelay??l,o="function"==typeof r?r(d,t):r,s=!0===a||"number"==typeof a&&d{if(m())return g()})).then((()=>{u?f(t):w()}))):f(t)}))};return s(e.networkMode)?w():g().then(w),{promise:p,cancel:t=>{v||(f(new i(t)),e.abort?.())},continue:()=>{const e=t?.();return e?p:Promise.resolve()},cancelRetry:()=>{u=!0},continueRetry:()=>{u=!1}}}},5530:(e,t,a)=>{"use strict";a.d(t,{Q:()=>r});var r=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}}},20698:(e,t,a)=>{"use strict";a.d(t,{Cp:()=>v,EN:()=>d,F$:()=>u,MK:()=>i,S$:()=>r,ZZ:()=>x,Zw:()=>n,f8:()=>m,gn:()=>l,j3:()=>s,lQ:()=>o,nJ:()=>c,pl:()=>b,y9:()=>y,yy:()=>w});var r="undefined"==typeof window||"Deno"in window;function o(){}function n(e,t){return"function"==typeof e?e(t):e}function l(e){return"number"==typeof e&&e>=0&&e!==1/0}function s(e,t){return Math.max(e+(t||0)-Date.now(),0)}function i(e,t){const{type:a="all",exact:r,fetchStatus:o,predicate:n,queryKey:l,stale:s}=e;if(l)if(r){if(t.queryHash!==u(l,t.options))return!1}else if(!v(t.queryKey,l))return!1;if("all"!==a){const e=t.isActive();if("active"===a&&!e)return!1;if("inactive"===a&&e)return!1}return("boolean"!=typeof s||t.isStale()===s)&&((void 0===o||o===t.state.fetchStatus)&&!(n&&!n(t)))}function c(e,t){const{exact:a,status:r,predicate:o,mutationKey:n}=e;if(n){if(!t.options.mutationKey)return!1;if(a){if(d(t.options.mutationKey)!==d(n))return!1}else if(!v(t.options.mutationKey,n))return!1}return(!r||t.state.status===r)&&!(o&&!o(t))}function u(e,t){return(t?.queryKeyHashFn||d)(e)}function d(e){return JSON.stringify(e,((e,t)=>f(t)?Object.keys(t).sort().reduce(((e,a)=>(e[a]=t[a],e)),{}):t))}function v(e,t){return e===t||typeof e==typeof t&&(!(!e||!t||"object"!=typeof e||"object"!=typeof t)&&!Object.keys(t).some((a=>!v(e[a],t[a]))))}function p(e,t){if(e===t)return e;const a=h(e)&&h(t);if(a||f(e)&&f(t)){const r=a?e:Object.keys(e),o=r.length,n=a?t:Object.keys(t),l=n.length,s=a?[]:{};let i=0;for(let o=0;o{setTimeout(t,e)}))}function b(e,t,a){return"function"==typeof a.structuralSharing?a.structuralSharing(e,t):!1!==a.structuralSharing?p(e,t):t}function y(e,t,a=0){const r=[...e,t];return a&&r.length>a?r.slice(1):r}function x(e,t,a=0){const r=[t,...e];return a&&r.length>a?r.slice(0,-1):r}},77115:(e,t,a)=>{"use strict";a.d(t,{Ht:()=>s,jE:()=>l});var r=a(51609),o=a(10790),n=r.createContext(void 0),l=e=>{const t=r.useContext(n);if(e)return e;if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t},s=({client:e,children:t})=>(r.useEffect((()=>(e.mount(),()=>{e.unmount()})),[e]),(0,o.jsx)(n.Provider,{value:e,children:t}))},89690:(e,t,a)=>{"use strict";a.d(t,{h:()=>l});var r=a(51609);a(10790);function o(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var n=r.createContext(o()),l=()=>r.useContext(n)},34804:(e,t,a)=>{"use strict";a.d(t,{$1:()=>s,LJ:()=>n,wZ:()=>l});var r=a(51609),o=a(55492),n=(e,t)=>{(e.suspense||e.throwOnError)&&(t.isReset()||(e.retryOnMount=!1))},l=e=>{r.useEffect((()=>{e.clearReset()}),[e])},s=({result:e,errorResetBoundary:t,throwOnError:a,query:r})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&(0,o.G)(a,[e.error,r])},64796:(e,t,a)=>{"use strict";a.d(t,{w:()=>n});var r=a(51609),o=r.createContext(!1),n=()=>r.useContext(o);o.Provider},937:(e,t,a)=>{"use strict";a.d(t,{EU:()=>o,iL:()=>n,tu:()=>r});var r=e=>{e.suspense&&"number"!=typeof e.staleTime&&(e.staleTime=1e3)},o=(e,t)=>e?.suspense&&t.isPending,n=(e,t,a)=>t.fetchOptimistic(e).catch((()=>{a.clearReset()}))},4611:(e,t,a)=>{"use strict";a.d(t,{t:()=>u});var r=a(51609),o=a(31795),n=a(89690),l=a(77115),s=a(64796),i=a(34804),c=a(937);function u(e,t,a){const u=(0,l.jE)(a),d=(0,s.w)(),v=(0,n.h)(),p=u.defaultQueryOptions(e);p._optimisticResults=d?"isRestoring":"optimistic",(0,c.tu)(p),(0,i.LJ)(p,v),(0,i.wZ)(v);const[m]=r.useState((()=>new t(u,p))),h=m.getOptimisticResult(p);if(r.useSyncExternalStore(r.useCallback((e=>{const t=d?()=>{}:m.subscribe(o.j.batchCalls(e));return m.updateResult(),t}),[m,d]),(()=>m.getCurrentResult()),(()=>m.getCurrentResult())),r.useEffect((()=>{m.setOptions(p,{listeners:!1})}),[p,m]),(0,c.EU)(p,h))throw(0,c.iL)(p,m,v);if((0,i.$1)({result:h,errorResetBoundary:v,throwOnError:p.throwOnError,query:u.getQueryCache().get(p.queryHash)}))throw h.error;return p.notifyOnChangeProps?h:m.trackResult(h)}},34613:(e,t,a)=>{"use strict";a.d(t,{n:()=>i});var r=a(51609),o=a(44158),n=a(31795),l=a(77115),s=a(55492);function i(e,t){const a=(0,l.jE)(t),[i]=r.useState((()=>new o._(a,e)));r.useEffect((()=>{i.setOptions(e)}),[i,e]);const u=r.useSyncExternalStore(r.useCallback((e=>i.subscribe(n.j.batchCalls(e))),[i]),(()=>i.getCurrentResult()),(()=>i.getCurrentResult())),d=r.useCallback(((e,t)=>{i.mutate(e,t).catch(c)}),[i]);if(u.error&&(0,s.G)(i.options.throwOnError,[u.error]))throw u.error;return{...u,mutate:d,mutateAsync:u.mutate}}function c(){}},35104:(e,t,a)=>{"use strict";a.d(t,{I:()=>n});var r=a(93397),o=a(4611);function n(e,t){return(0,o.t)(e,r.$,t)}},55492:(e,t,a)=>{"use strict";function r(e,t){return"function"==typeof e?e(...t):!!e}a.d(t,{G:()=>r})},13022:(e,t,a)=>{"use strict";function r(e){var t,a,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e)){var n=e.length;for(t=0;to});const o=function(){for(var e,t,a=0,o="",n=arguments.length;a{"use strict";a.d(t,{A:()=>u});var r=a(3924),o=a(86087),n=a(27723),l=a(28120),s=a(51609),i=a(21183);const __=n.__,c=e=>{const{productId:t,siteRawUrl:a}=e,n=`https://cloud.jetpack.com/landing/${a}`,l=(0,i.p)(t),c={jetpack_anti_spam:{title:__("Jetpack Anti-spam is active!","jetpack-my-jetpack"),text:__("We'll take care of everything from here. Now you can enjoy a spam-free site!","jetpack-my-jetpack")},jetpack_backup:{title:__("Jetpack Backup is active!","jetpack-my-jetpack"),text:(0,o.createInterpolateElement)(__("You can see your backups and restore your site on cloud.jetpack.com. If you ever lose access to your site, you can restore it there.","jetpack-my-jetpack"),{a:s.createElement("a",{href:n})})},jetpack_complete:{title:__("Jetpack Complete is active!","jetpack-my-jetpack"),text:(0,o.createInterpolateElement)(__("You can see your backups, security scans, and restore your site on cloud.jetpack.com. If you ever lose access to your site, you can restore it there.","jetpack-my-jetpack"),{a:s.createElement("a",{href:n})})},jetpack_scan:{title:__("Jetpack Scan is active!","jetpack-my-jetpack"),text:(0,o.createInterpolateElement)(__("You can see your security scans on cloud.jetpack.com.","jetpack-my-jetpack"),{a:s.createElement("a",{href:n})})},jetpack_search:{title:__("Jetpack Search is active!","jetpack-my-jetpack"),text:__("Next, we'll help you customize the Search experience for your visitors.","jetpack-my-jetpack")},jetpack_security:{title:__("Jetpack Security is active!","jetpack-my-jetpack"),text:(0,o.createInterpolateElement)(__("You can see your backups, security scans, and restore your site on cloud.jetpack.com. If you ever lose access to your site, you can restore it there.","jetpack-my-jetpack"),{a:s.createElement("a",{href:n})})},jetpack_videopress:{title:__("Jetpack VideoPress is active!","jetpack-my-jetpack"),text:__("Experience high-quality, ad-free video built specifically for WordPress.","jetpack-my-jetpack")},jetpack_social_advanced:{title:__("Jetpack Social Advanced is active!","jetpack-my-jetpack"),text:(0,o.createInterpolateElement)(__("Create amazing link previews for your posts using Social Image Generator. Learn more here.

              Learn how to make the most out of Jetpack Social here.

              ","jetpack-my-jetpack"),{a:s.createElement("a",{href:(0,r.A)("jetpack-social-sig-support-page"),target:"_blank",rel:"noreferrer"}),br:s.createElement("br",null),link:s.createElement("a",{href:(0,r.A)("social-plugin-publicize-support-admin-page"),target:"_blank",rel:"noreferrer"})})},jetpack_social_basic:{title:__("Jetpack Social Basic is active!","jetpack-my-jetpack"),text:(0,o.createInterpolateElement)(__("Enjoy unlimited shares with Jetpack Social Basic. Learn how to make the most out of Jetpack Social here.","jetpack-my-jetpack"),{a:s.createElement("a",{href:(0,r.A)("social-plugin-publicize-support-admin-page"),target:"_blank",rel:"noreferrer"})})},default:{title:__("Your product is active!","jetpack-my-jetpack"),text:__("You're all set!","jetpack-my-jetpack")}};return s.createElement("div",{className:"jp-license-activation-screen-success-info--product-details"},s.createElement("h1",null,c[l].title," ",String.fromCodePoint(127881)),s.createElement("p",null,c[l].text))};c.propTypes={dashboardUrl:l.string,productId:l.number};const u=c},21183:(e,t,a)=>{"use strict";a.d(t,{p:()=>o});const r={jetpack_anti_spam:[2110,2111],jetpack_backup:[2100,2101,2102,2103,2112,2113,2114,2115],jetpack_complete:[2014,2015],jetpack_scan:[2106,2107,2108,2109],jetpack_search:[2104,2105],jetpack_security:[2010,2011,2012,2013,2016,2017,2019,2020],jetpack_videopress:[2116,2117],jetpack_social_advanced:[2602,2603,2604],jetpack_social_basic:[2503,2504,2037]};function o(e){return Object.keys(r).find((t=>r[t].includes(e)))||"default"}},73010:(e,t,a)=>{"use strict";a.d(t,{A:()=>l});var r=a(1455),o=a(86087);const n=async()=>(await r({path:"wp/v2/plugins"})).filter((e=>"active"===e.status));function l(){const[e,t]=(0,o.useState)([]),[a,r]=(0,o.useState)(!0),l=(0,o.useCallback)((async()=>{try{const e=await n();t(e)}catch{t([])}finally{r(!1)}}),[]);return(0,o.useEffect)((()=>{l()}),[l]),[e,a]}},38377:e=>{"use strict";e.exports=JSON.parse('{"T":{"White":"#fff","Black":"#000","Gray 0":"#f6f7f7","Gray 5":"#dcdcde","Gray 10":"#c3c4c7","Gray 20":"#a7aaad","Gray 30":"#8c8f94","Gray 40":"#787c82","Gray 50":"#646970","Gray 60":"#50575e","Gray 70":"#3c434a","Gray 80":"#2c3338","Gray 90":"#1d2327","Gray 100":"#101517","Gray":"#646970","Blue 0":"#fbfcfe","Blue 5":"#f7f8fe","Blue 10":"#d6ddf9","Blue 20":"#adbaf3","Blue 30":"#7b90ff","Blue 40":"#546ff3","Blue 50":"#3858e9","Blue 60":"#2a46ce","Blue 70":"#1d35b4","Blue 80":"#1f3286","Blue 90":"#14215a","Blue 100":"#0a112d","Blue":"#3858e9","WordPress Blue 0":"#fbfcfe","WordPress Blue 5":"#f7f8fe","WordPress Blue 10":"#d6ddf9","WordPress Blue 20":"#adbaf3","WordPress Blue 30":"#7b90ff","WordPress Blue 40":"#546ff3","WordPress Blue 50":"#3858e9","WordPress Blue 60":"#2a46ce","WordPress Blue 70":"#1d35b4","WordPress Blue 80":"#1f3286","WordPress Blue 90":"#14215a","WordPress Blue 100":"#0a112d","WordPress Blue":"#3858e9","Purple 0":"#f2e9ed","Purple 5":"#ebcee0","Purple 10":"#e3afd5","Purple 20":"#d48fc8","Purple 30":"#c475bd","Purple 40":"#b35eb1","Purple 50":"#984a9c","Purple 60":"#7c3982","Purple 70":"#662c6e","Purple 80":"#4d2054","Purple 90":"#35163b","Purple 100":"#1e0c21","Purple":"#984a9c","Pink 0":"#f5e9ed","Pink 5":"#f2ceda","Pink 10":"#f7a8c3","Pink 20":"#f283aa","Pink 30":"#eb6594","Pink 40":"#e34c84","Pink 50":"#c9356e","Pink 60":"#ab235a","Pink 70":"#8c1749","Pink 80":"#700f3b","Pink 90":"#4f092a","Pink 100":"#260415","Pink":"#c9356e","Red 0":"#f7ebec","Red 5":"#facfd2","Red 10":"#ffabaf","Red 20":"#ff8085","Red 30":"#f86368","Red 40":"#e65054","Red 50":"#d63638","Red 60":"#b32d2e","Red 70":"#8a2424","Red 80":"#691c1c","Red 90":"#451313","Red 100":"#240a0a","Red":"#d63638","Orange 0":"#f5ece6","Orange 5":"#f7dcc6","Orange 10":"#ffbf86","Orange 20":"#faa754","Orange 30":"#e68b28","Orange 40":"#d67709","Orange 50":"#b26200","Orange 60":"#8a4d00","Orange 70":"#704000","Orange 80":"#543100","Orange 90":"#361f00","Orange 100":"#1f1200","Orange":"#b26200","Yellow 0":"#f5f1e1","Yellow 5":"#f5e6b3","Yellow 10":"#f2d76b","Yellow 20":"#f0c930","Yellow 30":"#deb100","Yellow 40":"#c08c00","Yellow 50":"#9d6e00","Yellow 60":"#7d5600","Yellow 70":"#674600","Yellow 80":"#4f3500","Yellow 90":"#320","Yellow 100":"#1c1300","Yellow":"#9d6e00","Green 0":"#e6f2e8","Green 5":"#b8e6bf","Green 10":"#68de86","Green 20":"#1ed15a","Green 30":"#00ba37","Green 40":"#00a32a","Green 50":"#008a20","Green 60":"#007017","Green 70":"#005c12","Green 80":"#00450c","Green 90":"#003008","Green 100":"#001c05","Green":"#008a20","Celadon 0":"#e4f2ed","Celadon 5":"#a7e8d3","Celadon 10":"#66deb9","Celadon 20":"#31cc9f","Celadon 30":"#09b585","Celadon 40":"#009e73","Celadon 50":"#008763","Celadon 60":"#007053","Celadon 70":"#005c44","Celadon 80":"#004533","Celadon 90":"#003024","Celadon 100":"#001c15","Celadon":"#008763","Automattic Blue 0":"#ebf4fa","Automattic Blue 5":"#c4e2f5","Automattic Blue 10":"#88ccf2","Automattic Blue 20":"#5ab7e8","Automattic Blue 30":"#24a3e0","Automattic Blue 40":"#1490c7","Automattic Blue 50":"#0277a8","Automattic Blue 60":"#036085","Automattic Blue 70":"#02506e","Automattic Blue 80":"#02384d","Automattic Blue 90":"#022836","Automattic Blue 100":"#021b24","Automattic Blue":"#24a3e0","Simplenote Blue 0":"#e9ecf5","Simplenote Blue 5":"#ced9f2","Simplenote Blue 10":"#abc1f5","Simplenote Blue 20":"#84a4f0","Simplenote Blue 30":"#618df2","Simplenote Blue 40":"#4678eb","Simplenote Blue 50":"#3361cc","Simplenote Blue 60":"#1d4fc4","Simplenote Blue 70":"#113ead","Simplenote Blue 80":"#0d2f85","Simplenote Blue 90":"#09205c","Simplenote Blue 100":"#05102e","Simplenote Blue":"#3361cc","WooCommerce Purple 0":"#f2edff","WooCommerce Purple 5":"#e1d7ff","WooCommerce Purple 10":"#d1c1ff","WooCommerce Purple 20":"#b999ff","WooCommerce Purple 30":"#a77eff","WooCommerce Purple 40":"#873eff","WooCommerce Purple 50":"#720eec","WooCommerce Purple 60":"#6108ce","WooCommerce Purple 70":"#5007aa","WooCommerce Purple 80":"#3c087e","WooCommerce Purple 90":"#2c045d","WooCommerce Purple 100":"#1f0342","WooCommerce Purple":"#720eec","Jetpack Green 0":"#f0f2eb","Jetpack Green 5":"#d0e6b8","Jetpack Green 10":"#9dd977","Jetpack Green 20":"#64ca43","Jetpack Green 30":"#2fb41f","Jetpack Green 40":"#069e08","Jetpack Green 50":"#008710","Jetpack Green 60":"#007117","Jetpack Green 70":"#005b18","Jetpack Green 80":"#004515","Jetpack Green 90":"#003010","Jetpack Green 100":"#001c09","Jetpack Green":"#069e08"}}')}},t={};function a(r){var o=t[r];if(void 0!==o)return o.exports;var n=t[r]={exports:{}};return e[r](n,n.exports,a),n.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var o=r.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=r[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{"use strict";var e=a(86087),t=a(51609),r=a(29539),o=a(70028),n=a(48848),l=a(91499),s=a(52912),i=a(87494),c=a(36092),u=a(93418),d=a(8823),v=a(48931),p=a(38837),m=a(68242),h=(a(75001),a(90926));function f(){const e=(0,r.zy)();return(0,t.useEffect)((()=>window.scrollTo(0,0)),[e]),null}const g=()=>{const{loadAddLicenseScreen:e}=(0,m.A$)();return React.createElement(h.A,null,React.createElement(o.I9,null,React.createElement(f,null),React.createElement(r.BV,null,React.createElement(r.qh,{path:p.NM.Home,element:React.createElement(s.A,null)}),React.createElement(r.qh,{path:p.NM.Connection,element:React.createElement(l.A,null)}),React.createElement(r.qh,{path:p.NM.AddAkismet,element:React.createElement(c.wU,null)}),React.createElement(r.qh,{path:p.NM.AddAntiSpam,element:React.createElement(r.C5,{replace:!0,to:p.NM.AddAkismet})}),React.createElement(r.qh,{path:p.NM.AddBackup,element:React.createElement(c.xE,null)}),React.createElement(r.qh,{path:p.NM.AddBoost,element:React.createElement(c.yX,null)}),React.createElement(r.qh,{path:p.NM.AddCRM,element:React.createElement(c.X7,null)}),React.createElement(r.qh,{path:p.NM.AddJetpackAI,element:React.createElement(u.A,null)}),React.createElement(r.qh,{path:p.NM.AddExtras,element:React.createElement(c.QX,null)}),React.createElement(r.qh,{path:p.NM.AddProtect,element:React.createElement(c.qT,null)}),React.createElement(r.qh,{path:p.NM.AddScan,element:React.createElement(c.og,null)}),React.createElement(r.qh,{path:p.NM.AddSocial,element:React.createElement(c.C,null)}),React.createElement(r.qh,{path:p.NM.AddSearch,element:React.createElement(c.t7,null)}),React.createElement(r.qh,{path:p.NM.AddVideoPress,element:React.createElement(c.JM,null)}),React.createElement(r.qh,{path:p.NM.AddStats,element:React.createElement(c.Gf,null)}),e&&React.createElement(r.qh,{path:p.NM.AddLicense,element:React.createElement(n.A,null)}),React.createElement(r.qh,{path:p.NM.JetpackAi,element:React.createElement(d.A,null)}),React.createElement(r.qh,{path:p.NM.AddSecurity,element:React.createElement(c.NC,null)}),React.createElement(r.qh,{path:p.NM.AddGrowth,element:React.createElement(c.Ml,null)}),React.createElement(r.qh,{path:p.NM.AddComplete,element:React.createElement(c.Qt,null)}),React.createElement(r.qh,{path:p.NM.Onboarding,element:React.createElement(i.A,null)}),React.createElement(r.qh,{path:p.NM.RedeemToken,element:React.createElement(v.A,null)}),React.createElement(r.qh,{path:"*",element:React.createElement(s.A,null)}))))};!function(){const t=document.getElementById("my-jetpack-container");null!==t&&(0,e.createRoot)(t).render(React.createElement(g,null))}()})()})(); \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.js.LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.js.LICENSE.txt deleted file mode 100644 index 5676d7d3..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.js.LICENSE.txt +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Exposes number format capability - * - * @copyright Copyright (c) 2013 Kevin van Zonneveld (http://kvz.io) and Contributors (http://phpjs.org/authors). - * @license See CREDITS.md - * @see https://github.com/kvz/phpjs/blob/ffe1356af23a6f2512c84c954dd4e828e92579fa/functions/strings/number_format.js - */ - -/** - * @license React - * use-sync-external-store-shim.production.js - * - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -/** - * @remix-run/router v1.21.0 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */ - -/** - * React Router DOM v6.28.1 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */ - -/** - * React Router v6.28.1 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */ diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.rtl.css b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.rtl.css deleted file mode 100644 index 121d2393..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/build/index.rtl.css +++ /dev/null @@ -1 +0,0 @@ -.activation-screen-error__message{align-items:flex-start;display:flex;flex-direction:row;margin-top:calc(var(--spacing-base)*.5);max-width:500px}.activation-screen-error__message svg{margin-right:-3px}.activation-screen-error__message span{font-size:13px;font-weight:500;letter-spacing:-.044em;line-height:20px}.activation-screen-error__message--error{color:var(--jp-red)}.activation-screen-error__message--error svg{fill:var(--jp-red)}.activation-screen-error__message--success{color:var(--jp-green)}.activation-screen-error__message--success svg{fill:var(--jp-green)}.activation-screen-error__info{background-color:var(--jp-gray-0);border:1px solid var(--jp-green-0);border-radius:var(--jp-border-radius);color:var(--jp-gray-80);font-size:var(--font-body-small);line-height:calc(var(--font-title-small) - 2px);margin:32px 0 8px;padding:var(--jp-modal-padding-small)}.activation-screen-error__info>p{font-size:var(--font-body-small);margin:0 0 1em}.activation-screen-error__info>p:last-child{margin-bottom:0}.activation-screen-error__info ol>li::marker{font-weight:700}.activation-screen-error__info a{color:var(--jp-green-50)}.activation-screen-error__info a:active,.activation-screen-error__info a:hover{color:var(--jp-green-70)}.jp-license-activation-screen-controls .activation-screen-error__info>p{font-size:var(--font-body-small);margin:0 0 1em}.jp-license-activation-screen-controls .activation-screen-error__info>p:last-child{margin-bottom:0}.jp-license-activation-screen-controls{background:var(--jp-white);display:flex;flex-direction:column;justify-content:space-between;padding:32px}.jp-license-activation-screen-controls h1{font-size:44px;font-weight:700;line-height:1.4;margin:.67em 0}.jp-license-activation-screen-controls p{font-size:var(--font-body);margin:1em 0}.jp-license-activation-screen-controls label{font-size:var(--font-body);font-weight:600}@media screen and (min-width:780px){.jp-license-activation-screen-controls{padding:64px}}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-error,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-success{margin-top:10px;max-width:500px}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field .components-input-control__label.components-input-control__label.components-input-control__label,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-error .components-input-control__label.components-input-control__label.components-input-control__label,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-success .components-input-control__label.components-input-control__label.components-input-control__label{font-size:var(--font-body);font-weight:600}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field input.components-text-control__input,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field select.components-select-control__input,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-error input.components-text-control__input,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-error select.components-select-control__input,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-success input.components-text-control__input,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-success select.components-select-control__input{border-radius:var(--jp-border-radius);font-size:18px;line-height:24px;margin:0;min-height:48px}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field input.components-text-control__input{border:1px solid var(--jp-gray-40)}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-error input.components-text-control__input,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-error select.components-select-control__input{border:1px solid var(--jp-red)}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-success input.components-text-control__input,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--license-field-with-success select.components-select-control__input{border:1px solid var(--jp-green)}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:active{background-color:var(--jp-black);border-radius:4px;color:var(--jp-white);display:flex;font-size:16px;font-size:var(--font-body);font-style:normal;font-weight:600;justify-content:center;line-height:24px;margin-top:24px;min-height:48px;min-width:158px;padding:13.5px 45px;width:100%}@media screen and (min-width:480px){.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:active{width:auto}}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:active:hover,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:hover{background-color:var(--jp-black-80);color:var(--jp-white)}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:active:focus,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:focus{background-color:var(--jp-black-80);border:1px solid var(--jp-white);color:var(--jp-white)}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:active:disabled,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:active[disabled],.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:disabled,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button[disabled]{background-color:var(--jp-gray);color:var(--jp-gray-20)}.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button .jp-components-spinner,.jp-license-activation-screen-controls .jp-license-activation-screen-controls--button:active .jp-components-spinner{width:100%}@keyframes rotate-spinner{to{transform:rotate(-1turn)}}.jp-components-spinner{align-items:center;display:flex}.jp-components-spinner__inner,.jp-components-spinner__outer{animation:3s linear infinite;animation-name:rotate-spinner;border:.1em solid transparent;border-radius:50%;box-sizing:border-box;margin:auto}.jp-components-spinner__outer{border-top-color:#fff}.jp-components-spinner__inner{border-left-color:#fff;border-top-color:#fff;height:100%;opacity:.4;width:100%}.jp-license-activation-screen-illustration{align-items:center;background:var(--jp-white-off);display:flex;flex-direction:column;justify-content:space-between;padding:32px}.jp-license-activation-screen-illustration--wrapper{display:flex;flex:1}.jp-license-activation-screen-illustration--wrapper img{align-self:center;height:auto;max-width:100%}.jp-license-activation-screen-illustration--support-link{flex:0}.components-button.jp-license-activation-screen-success-info--button,.components-button.jp-license-activation-screen-success-info--button:active,.components-button.jp-license-activation-screen-success-info--button:visited{background-color:var(--jp-black);border-radius:4px;color:var(--jp-white);font-size:16px;font-size:var(--font-body);font-style:normal;font-weight:600;justify-content:center;line-height:24px;margin:0 0 20px 40px;min-height:48px;min-width:158px;padding:13.5px 45px;width:100%}@media screen and (min-width:480px){.components-button.jp-license-activation-screen-success-info--button,.components-button.jp-license-activation-screen-success-info--button:active,.components-button.jp-license-activation-screen-success-info--button:visited{width:auto}}.components-button.jp-license-activation-screen-success-info--button:active:hover,.components-button.jp-license-activation-screen-success-info--button:hover,.components-button.jp-license-activation-screen-success-info--button:visited:hover{background-color:var(--jp-black-80);color:var(--jp-white)}.components-button.jp-license-activation-screen-success-info--button:active:focus,.components-button.jp-license-activation-screen-success-info--button:focus,.components-button.jp-license-activation-screen-success-info--button:visited:focus{background-color:var(--jp-black-80);border:1px solid var(--jp-white);color:var(--jp-white)}.components-button.jp-license-activation-screen-success-info--button:active:disabled,.components-button.jp-license-activation-screen-success-info--button:active[disabled],.components-button.jp-license-activation-screen-success-info--button:disabled,.components-button.jp-license-activation-screen-success-info--button:visited:disabled,.components-button.jp-license-activation-screen-success-info--button:visited[disabled],.components-button.jp-license-activation-screen-success-info--button[disabled]{background-color:var(--jp-gray);color:var(--jp-gray-20)}.components-button.jp-license-activation-screen-success-info--button .jp-components-spinner,.components-button.jp-license-activation-screen-success-info--button:active .jp-components-spinner,.components-button.jp-license-activation-screen-success-info--button:visited .jp-components-spinner{width:100%}.jp-license-activation-screen-success-info--product-details h1{line-height:52px}.jp-license-activation-screen-success-info--product-details a{color:var(--jp-black);text-decoration:underline!important}.jp-license-activation-screen-success-info--external-link{color:var(--jp-black);font-size:16px;font-style:normal;font-weight:600;text-decoration:underline!important;white-space:nowrap}.jp-license-activation-screen-success-info{background:var(--jp-white);display:flex;flex-direction:column;justify-content:space-between;padding:32px}.jp-license-activation-screen-success-info h1{font-size:44px;font-weight:700;line-height:1.4;margin:.67em 0}.jp-license-activation-screen-success-info p{font-size:var(--font-body);margin:1em 0}.jp-license-activation-screen-success-info label{font-size:var(--font-body);font-weight:600}@media screen and (min-width:780px){.jp-license-activation-screen-success-info{padding:64px}}@media screen and (max-width:480px){.jp-license-activation-screen-success-info .jp-license-activation-screen-success-info--buttons{text-align:center}}.EiaNctK1_P9pPqOeiaSI{align-items:center;display:flex;flex-wrap:wrap;margin:0 auto;max-width:1128px}.ogHZg_sJCljylz3VJfsf{display:grid;grid-gap:24px;grid-template-columns:repeat(4,1fr);margin:0 16px;width:100%}@media(min-width:600px){.ogHZg_sJCljylz3VJfsf{grid-template-columns:repeat(8,1fr);margin:0 18px}}@media(min-width:960px){.ogHZg_sJCljylz3VJfsf{grid-template-columns:repeat(12,1fr);margin:0 24px;max-width:1128px}}.zv7eGvijKRkbPVakubHw{grid-column-end:span 1}.VoJNoiya_1ck3_kXS6_C{grid-column-end:span 2}.ecv0NO526NoTNbpALA1A{grid-column-end:span 3}.OfBdkceMzeHvRbzhqDlP{grid-column-end:span 4}@media(min-width:600px){.JLb3NpEKN8pOaWd7K1bu{grid-column-end:span 1}.fsMPGqPKE4mjMIPFwl77{grid-column-end:span 2}.DIK_zdaGAQ09eKspBJ4E{grid-column-end:span 3}.shXYpxPu3WCJsR8aOHtz{grid-column-end:span 4}.s7ElrOqG_yGd5SIfwqOR{grid-column-end:span 5}.Cxml9uzGvArAL8_RDs_p{grid-column-end:span 6}.aANxBKDGx72eDqU0iUPj{grid-column-end:span 7}.XxyzuTY3mnQcl9EGZadm{grid-column-end:span 8}}@media(min-width:960px){.Sfo4WaSNIWInJ93Abd3w{grid-column-end:span 1}.tQS7SKUGrU4THhWMysbo{grid-column-end:span 2}.I94U7mpY4h16pcOksZNF{grid-column-end:span 3}.uWMb9k77kQxBdS5MTt0s{grid-column-end:span 4}.rKwEEZQxK9s_POMg5Jss{grid-column-end:span 5}.UcPXX_s06IPCkF7ZjH3D{grid-column-end:span 6}.CrQdtiCFkRbzY6K2dFvt{grid-column-end:span 7}.rEUALOmOdUBXO0Us871z{grid-column-end:span 8}.NqXa9TlcTEviVsB53hBV{grid-column-end:span 9}.OnWVeiQiwgQ9lzdGPW66{grid-column-end:span 10}.D2PkTcy7b8u2K9QXY6VQ{grid-column-end:span 11}.EcqBhzAyxo5RDc2Y6m7K{grid-column-end:span 12}}@media(max-width:960px){.gB1mWzHOM38d80lrhBRX{display:none}}@media(max-width:600px){.KNQXLP78ejczOkour3zg{display:none}}.rBVbaVWBnBRtTMrUKZxm{border:2px solid var(--jp-green-primary);border-radius:var(--jp-border-radius);display:block;margin:32px 0;padding:16px 24px 16px 64px;position:relative;text-decoration:none}.rBVbaVWBnBRtTMrUKZxm span{display:block}.rBVbaVWBnBRtTMrUKZxm span:last-of-type{font-weight:600}.rBVbaVWBnBRtTMrUKZxm:focus span:last-of-type,.rBVbaVWBnBRtTMrUKZxm:hover span:last-of-type{text-decoration:underline;text-decoration-thickness:var(--jp-underline-thickness)}.rBVbaVWBnBRtTMrUKZxm:focus:after,.rBVbaVWBnBRtTMrUKZxm:hover:after{transform:translateY(-50%) translateX(-8px)}.rBVbaVWBnBRtTMrUKZxm:after{color:var(--jp-green-primary);content:"→";font-size:24px;font-weight:600;left:24px;position:absolute;top:50%;transform:translateY(-50%);transition:transform .15s ease-out}.gfM_DIJrVbRhmKdAphIm{background:var(--jp-white);border-radius:var(--jp-modal-radius);box-shadow:0 12px 16px -.5px rgba(0,0,0,.15);height:max-content;margin:3rem auto;max-width:414px;overflow:hidden;position:relative;transition:height .25s cubic-bezier(.59,.37,.18,1.19) 0;width:90%;will-change:height}.gfM_DIJrVbRhmKdAphIm>div:first-child{padding:0}.gfM_DIJrVbRhmKdAphIm *{box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}.gfM_DIJrVbRhmKdAphIm p{color:var(--jp-black)}.gfM_DIJrVbRhmKdAphIm .zfJfONxRAw0fHjXUS7LN{display:none}.gfM_DIJrVbRhmKdAphIm.pnwbCuWbV0PNQr1LFpRh{height:614px;transition-delay:2.15s}.gfM_DIJrVbRhmKdAphIm.pnwbCuWbV0PNQr1LFpRh h2{margin-top:0}._j4GWTmW5psCHFYh6R0x{align-self:flex-start;margin-top:var(--jp-gap)!important;padding:8px var(--jp-modal-padding-small)!important;width:100%}.saSAjv8yulVXQDoqDJEI{font-weight:500;line-height:110%;margin-bottom:8px}.O_hcdbeMivIhBn7ApDnS{line-height:140%}@media(min-width:760px){.gfM_DIJrVbRhmKdAphIm{height:740px;max-width:1360px;position:relative;width:95%}.gfM_DIJrVbRhmKdAphIm .zfJfONxRAw0fHjXUS7LN{display:block;position:absolute;right:64px;top:64px;z-index:99}.gfM_DIJrVbRhmKdAphIm .zfJfONxRAw0fHjXUS7LN clipPath,.gfM_DIJrVbRhmKdAphIm .zfJfONxRAw0fHjXUS7LN path{fill:#000}.gfM_DIJrVbRhmKdAphIm .zfJfONxRAw0fHjXUS7LN path.FCnyb_xCK7DhJ63p6TEd{fill:#fff}.gfM_DIJrVbRhmKdAphIm.pnwbCuWbV0PNQr1LFpRh{height:740px;transition-delay:0}.gfM_DIJrVbRhmKdAphIm.pnwbCuWbV0PNQr1LFpRh .zfJfONxRAw0fHjXUS7LN clipPath,.gfM_DIJrVbRhmKdAphIm.pnwbCuWbV0PNQr1LFpRh .zfJfONxRAw0fHjXUS7LN path{transition:fill 2s ease .5s;fill:#fff}.gfM_DIJrVbRhmKdAphIm.pnwbCuWbV0PNQr1LFpRh .zfJfONxRAw0fHjXUS7LN path.FCnyb_xCK7DhJ63p6TEd{transition:fill 2s ease .5s;fill:#000}}@keyframes OmAVpCQ270MqI4IsT9Ky{20%{transform:translateY(0) scale(1)}65%{transform:translateY(16%) scale(1.4)}to{transform:translateY(0) scale(1)}}.Qn5xayjI_jH2m1d6BEoq{border-radius:var(--jp-button-radius);display:flex;height:50%;justify-content:center;min-height:400px;overflow:hidden;position:relative;transition:height .55s cubic-bezier(.59,.37,.18,1) 0s;will-change:height}.pnwbCuWbV0PNQr1LFpRh .Qn5xayjI_jH2m1d6BEoq{height:100%;transition-delay:.65s}.pnwbCuWbV0PNQr1LFpRh .Qn5xayjI_jH2m1d6BEoq video{animation:OmAVpCQ270MqI4IsT9Ky 1.5s ease-in-out forwards}.Qn5xayjI_jH2m1d6BEoq video{height:100%;object-fit:cover;position:absolute;right:0;top:0;transform:scale(1);transition:all .85s cubic-bezier(1,0,.39,1) 0s;width:100%;will-change:transform}@media(min-width:760px){@keyframes Axe8f2LgqEBZHVcsRgY5{0%{animation-timing-function:cubic-bezier(.86,0,.07,1);right:60%;top:32px}50%{animation-timing-function:cubic-bezier(.17,.84,.44,1);bottom:32px;right:32px;top:32px;width:100%}to{right:32px;width:40%}}.Qn5xayjI_jH2m1d6BEoq{border-radius:12px;bottom:32px;display:block;height:auto;left:32px;overflow:hidden;position:absolute;right:60%;top:32px;transition-delay:0;transition:width .55s ease 0s;z-index:3}.Qn5xayjI_jH2m1d6BEoq video{height:100%;object-fit:cover;position:absolute;right:0;top:0;width:100%}.pnwbCuWbV0PNQr1LFpRh .Qn5xayjI_jH2m1d6BEoq{animation-delay:.25s;animation-duration:2s;animation-fill-mode:forwards;animation-name:Axe8f2LgqEBZHVcsRgY5;height:auto}}.iBMDoShSmqpt72YfJb36{padding:var(--jp-modal-padding)}.iBMDoShSmqpt72YfJb36 h2{font-size:clamp(1.5rem,-.7353rem + 4.7059vw,3.5rem)}.iBMDoShSmqpt72YfJb36 p{font-size:clamp(1rem,.6974rem + 1.1696vw,1.75rem)}.iBMDoShSmqpt72YfJb36 p.eQG1KKK8jjKtQyzfv573{display:none;font-size:clamp(1.25rem,1.1491rem + .3899vw,1.5rem)}@media(min-width:760px){.iBMDoShSmqpt72YfJb36{bottom:15%;display:flex;flex-direction:column;gap:64px;padding:0 0 0 var(--jp-modal-padding);position:absolute;right:64px;width:55%}.iBMDoShSmqpt72YfJb36 .l35bIyiqYJiZ6tVYvJtC{align-items:flex-start;display:flex;flex-direction:column;gap:16px;padding:0 0 0 32px}.iBMDoShSmqpt72YfJb36 .l35bIyiqYJiZ6tVYvJtC h2,.iBMDoShSmqpt72YfJb36 .l35bIyiqYJiZ6tVYvJtC p{margin:0}.iBMDoShSmqpt72YfJb36 p.eQG1KKK8jjKtQyzfv573{display:block}.iBMDoShSmqpt72YfJb36 ._j4GWTmW5psCHFYh6R0x{align-self:flex-start;padding:16px var(--jp-modal-padding-large)!important;width:auto}.pnwbCuWbV0PNQr1LFpRh .iBMDoShSmqpt72YfJb36{opacity:0;right:-20px;transition:all .55s cubic-bezier(.59,.37,.18,1) .3s}}.HQVDZ6J3x6SJNYFX5khS{background:var(--jp-white);opacity:0;position:absolute;right:0;top:100%;transition:transform .45s cubic-bezier(.59,.37,.18,1) 2s,opacity .45s linear;width:100%;will-change:transform,opacity;z-index:2}.pnwbCuWbV0PNQr1LFpRh .HQVDZ6J3x6SJNYFX5khS{opacity:1;transform:translateY(-100%);transition-delay:2s}@media(min-width:760px){.HQVDZ6J3x6SJNYFX5khS{align-items:flex-end;bottom:5%;container-type:inline-size;display:flex;flex-direction:column;gap:40px;left:32px;padding:0;right:45%;transform:translateY(0);transition-delay:0;transition:none;width:auto}.HQVDZ6J3x6SJNYFX5khS h2{width:100%}.HQVDZ6J3x6SJNYFX5khS ._j4GWTmW5psCHFYh6R0x{margin-left:var(--jp-modal-padding-large)}.pnwbCuWbV0PNQr1LFpRh .HQVDZ6J3x6SJNYFX5khS{bottom:12%;left:32px;opacity:1;right:45%;top:unset;transform:translateY(0);transition:all .45s cubic-bezier(.59,.37,.18,1) 2s,opacity .45s linear;transition-delay:2s;width:auto}.pnwbCuWbV0PNQr1LFpRh .HQVDZ6J3x6SJNYFX5khS .l35bIyiqYJiZ6tVYvJtC{padding-right:32px}.pnwbCuWbV0PNQr1LFpRh .HQVDZ6J3x6SJNYFX5khS ._j4GWTmW5psCHFYh6R0x{align-self:flex-end}}.KdvmPIjelQIFiPQGuIYf{background:var(--jp-gray-0);display:flex;flex-direction:column;gap:var(--jp-gap)}.KdvmPIjelQIFiPQGuIYf div{background-color:var(--jp-white);border:1px solid var(--jp-gray-10);border-radius:var(--jp-button-radius);box-shadow:0 0 40px 0 rgba(0,0,0,.08);flex:1;padding:var(--jp-modal-padding)}.KdvmPIjelQIFiPQGuIYf h3{font-size:24px;line-height:normal;margin:0}.KdvmPIjelQIFiPQGuIYf p{font-size:14px}@media(min-width:760px){.KdvmPIjelQIFiPQGuIYf{flex-direction:row;padding:var(--jp-modal-padding-large)}.KdvmPIjelQIFiPQGuIYf div{border:none;box-shadow:0 2px 16px rgba(0,0,0,.08),0 2px 2px rgba(0,0,0,.1)}.KdvmPIjelQIFiPQGuIYf div p{margin:8px 0}.KdvmPIjelQIFiPQGuIYf svg{margin-bottom:var(--jp-modal-padding-small)}}@container (max-width: 600px){.KdvmPIjelQIFiPQGuIYf div{padding:var(--jp-modal-padding-small)}}.cuoSlhSNrqf1dozY22Xb{fill:#000}.JLquNpQVlysAamuh5lJO,.lAIiifeLMmZAPlQ9n9ZR{fill:var(--jp-green-primary)}.cbOwD8Y4tFjwimmtchQI{fill:#757575}.cbOwD8Y4tFjwimmtchQI.aLWBKY0yRghEk7tNCgK3{fill:var(--color-bluesky)}.cbOwD8Y4tFjwimmtchQI.aHOlEBGD5EA8NKRw3xTw{fill:var(--color-facebook)}.cbOwD8Y4tFjwimmtchQI.aHOlEBGD5EA8NKRw3xTw.social-logo{border-radius:50%}.cbOwD8Y4tFjwimmtchQI.af4Y_zItXvLAOEoSDPSv{fill:var(--color-twitter)}.cbOwD8Y4tFjwimmtchQI.f68aqF3XSD1OBvXR1get{fill:var(--color-linkedin)}.cbOwD8Y4tFjwimmtchQI.xFI0dt3UiXRlRQdqPWkx{fill:var(--color-tumblr)}.cbOwD8Y4tFjwimmtchQI.q7JEoyymveP6kF747M43{fill:var(--color-gplus)}.cbOwD8Y4tFjwimmtchQI.DKOBOTVmTLbh26gUH_73{fill:var(--color-mastodon)}.cbOwD8Y4tFjwimmtchQI.n5XodNsuMfMAAvqHFmbw{fill:var(--color-nextdoor)}.cbOwD8Y4tFjwimmtchQI.n5XodNsuMfMAAvqHFmbw.social-logo{border-radius:50%}.cbOwD8Y4tFjwimmtchQI.cL3m0xBYTYhIKI7lCqDB{fill:var(--color-instagram)}.cbOwD8Y4tFjwimmtchQI.fftumuc_lJ6v0tq4UMVR{fill:var(--color-whatsapp)}.cbOwD8Y4tFjwimmtchQI.inzgC27qxdt7hSdhTWRI{fill:var(--color-threads)}.cbOwD8Y4tFjwimmtchQI.inzgC27qxdt7hSdhTWRI.social-logo{border-radius:40%}.SqdhUZkXCRuIpErj1B3z{--max-container-width:1128px;--vertical-gutter:24px;--horizontal-spacing:8px;column-gap:var(--vertical-gutter);display:grid;margin:0 auto;max-width:var(--max-container-width);width:100%}@media(max-width:599px){.SqdhUZkXCRuIpErj1B3z{grid-template-columns:repeat(4,minmax(0,1fr));padding:0 16px}}@media(min-width:600px)and (max-width:959px){.SqdhUZkXCRuIpErj1B3z{grid-template-columns:repeat(8,minmax(0,1fr));padding:0 18px}}@media(min-width:960px){.SqdhUZkXCRuIpErj1B3z{grid-template-columns:repeat(12,minmax(0,1fr));padding:0 24px}}.SqdhUZkXCRuIpErj1B3z.OZC_9a1LhpWF9dv15Gdh{max-width:none;padding:unset}@media(max-width:599px){.RuVLl3q4lxTQa3wbhBJB{grid-column-end:span 1}.f9LZTRG4MMK42rS89afW{grid-column-start:1}.bHe_zKxjjpUwHw_MdYE1{grid-column-end:2}.QZbNrOqE2aNSn50xVhpU{grid-column-end:span 2}.ev7W3z7zVYPeHAlYqZjf{grid-column-start:2}.NJWd1m_e7lOiPYru2ZMP{grid-column-end:3}.Xc6nt1Qc1DI0Z2A3gt1r{grid-column-end:span 3}.UIcN_GXiPRoIsin8Kohg{grid-column-start:3}.GRKCyqb5LufCSCgykKFc{grid-column-end:4}.i_qTq8gqhhC3vIUepVRB{grid-column-end:span 4}.G3qaZ3Jpbvam_1XvGxgc{grid-column-start:4}.VRCNYKZtO9zukEwmgP1y{grid-column-end:5}}@media(min-width:600px)and (max-width:959px){.tRm008K_WJL79WoNZTNL{grid-column-end:span 1}.l5T2P_bgKts4tdaRkS1d{grid-column-start:1}.zOCxfLZpF6BlgC7a_Yq1{grid-column-end:2}.F80DdgVn0m5OpvtSQWka{grid-column-end:span 2}.oI1c7JYfiJtMQHbhngtU{grid-column-start:2}.pMQtA_4jh1_1lVknqEP5{grid-column-end:3}.VenqMpdgyKQVUNNQcfqd{grid-column-end:span 3}.seNYL99uoczf9V4MxBxT{grid-column-start:3}.YKfF1HFhI9KygA5l3b2J{grid-column-end:4}.yAi0Cv1xDWkoqsaUhvhR{grid-column-end:span 4}.ubhnyZOnkgxNhh6XtVWv{grid-column-start:4}.RGOPGQbWMJ9Ei5oFxS7X{grid-column-end:5}.Sz1E2aWbX483ijdi6yge{grid-column-end:span 5}.tku6_bRYrX9tMbgYGmIl{grid-column-start:5}.b5JHttOhSEcI1WBlqAjk{grid-column-end:6}.FboSx5MoKTAWbxXyYlCw{grid-column-end:span 6}.Jhs8yEEmodG30edbJvag{grid-column-start:6}.IpzbbKVqEqPcfIGkXkwt{grid-column-end:7}.mhCPwfAZ4Kmm_empzJAq{grid-column-end:span 7}.x034ilrJF7rO9UJB2rI1{grid-column-start:7}.Wt8t2e16viRrOJ1lLA5v{grid-column-end:8}.S6pIrEy9AMLKx9bgh_Ae{grid-column-end:span 8}.kEfI4tGyuWfHTlRnvIab{grid-column-start:8}.PUzX4RRsKq1dnsz3gebS{grid-column-end:9}}@media(min-width:960px){.X_pdcLJikd8LS_YAdJlB{grid-column-end:span 1}.tl936d14Huby4khYp05X{grid-column-start:1}.hnge0LnR69d3NXEtEE1t{grid-column-end:2}.fj0NUMuyZQcPNgKcjp5Z{grid-column-end:span 2}.R2ncBX7a2NigdYCcV1OX{grid-column-start:2}.t8vMSDVYno9k9itRwnXb{grid-column-end:3}.wsDuEN2GqHx6qzo8dUdk{grid-column-end:span 3}.cIEVPUweWtLBy3xaXnMx{grid-column-start:3}.fajUWBwu1m2B479j3jmz{grid-column-end:4}.YR0c7fQTgMkDdWzwSyLp{grid-column-end:span 4}.xlwp8BmplxkKNMI7gamo{grid-column-start:4}._C4O1w9DUqx1m3gPf8aA{grid-column-end:5}.Z54F1hAErckAIrKlxnXW{grid-column-end:span 5}.ezSDWkRHmKSxDJXxuiOH{grid-column-start:5}.T0ChoeAjGJjkkNrYhD4g{grid-column-end:6}.qtMoMPF6yHvGJnWHSsde{grid-column-end:span 6}.gdoywN5VPiWERfIBqkph{grid-column-start:6}.wUev_VH5uf_pwFFlbnAU{grid-column-end:7}.egIPDFJsOpownTClq9XP{grid-column-end:span 7}.yGhp9yoAW7k0kQik9AB7{grid-column-start:7}.SJ43U9mR5wUg5V2qBeQA{grid-column-end:8}.cTuyHfMwSUJxN_HdIEgd{grid-column-end:span 8}.smCr8DaIagcumdvdldiK{grid-column-start:8}.T03NHzQJvzwL6wAfIiTL{grid-column-end:9}.pMvxM3RJGjqyNdf9qg1Y{grid-column-end:span 9}.iIVpNRwEnQ_JI5gpp9EN{grid-column-start:9}.ZbQ4u4vGSX5rJOje4uGL{grid-column-end:10}.gKb5wuIDAlKGbrjK2vxy{grid-column-end:span 10}.Z7pINdImE2WJiYnZBTqm{grid-column-start:10}.ZTxp6qpvwurMdOnLLSz1{grid-column-end:11}.NnQTlbfnxPDR6cQ7rygg{grid-column-end:span 11}.O137wZd6Yl0olSA9PsXR{grid-column-start:11}.zf2OJtQ2MPz6SDoh6CB0{grid-column-end:12}.U3H6UHW6HqRt9hdzVg3O{grid-column-end:span 12}.zynnNeS_ZBTxABcVpUQH{grid-column-start:12}.vI8tltFZtFUNAy9Iag9s{grid-column-end:13}}.zI5tJ_qhWE6Oe6Lk75GY{--wp-admin-theme-color:var(--jp-black);--wp-admin-theme-color-darker-10:var(--jp-black-80);--wp-admin-theme-color-darker-20:var(--jp-black-80);--wp-admin-border-width-focus:1.51px;border-radius:var(--jp-border-radius);font-weight:600;justify-content:center}.zI5tJ_qhWE6Oe6Lk75GY.tuBt2DLqimiImoqVzPqo{height:calc(var(--spacing-base)*5);padding:var(--spacing-base);width:calc(var(--spacing-base)*5)}.zI5tJ_qhWE6Oe6Lk75GY.tuBt2DLqimiImoqVzPqo>svg:first-child{margin:0;padding:0}.zI5tJ_qhWE6Oe6Lk75GY.tuBt2DLqimiImoqVzPqo.Na39I683LAaSA99REg14{height:calc(var(--spacing-base)*4);min-width:calc(var(--spacing-base)*4);padding:calc(var(--spacing-base)/2);width:calc(var(--spacing-base)*4)}.zI5tJ_qhWE6Oe6Lk75GY.ipS7tKy9GntCS4R3vekF:not(.tuBt2DLqimiImoqVzPqo){font-size:var(--font-body);height:auto;line-height:24px;padding:var(--spacing-base) calc(var(--spacing-base)*3)}.zI5tJ_qhWE6Oe6Lk75GY.ipS7tKy9GntCS4R3vekF:not(.tuBt2DLqimiImoqVzPqo).paGLQwtPEaJmtArCcmyK{padding:var(--spacing-base) calc(var(--spacing-base)*2)}.zI5tJ_qhWE6Oe6Lk75GY.Na39I683LAaSA99REg14:not(.tuBt2DLqimiImoqVzPqo){font-size:var(--font-body-extra-small);height:auto;line-height:20px;padding:calc(var(--spacing-base)/2) var(--spacing-base)}.zI5tJ_qhWE6Oe6Lk75GY.Na39I683LAaSA99REg14:not(.tuBt2DLqimiImoqVzPqo).paGLQwtPEaJmtArCcmyK>svg:first-child{margin-left:calc(var(--spacing-base)/2)}.zI5tJ_qhWE6Oe6Lk75GY.Na39I683LAaSA99REg14:not(.tuBt2DLqimiImoqVzPqo)>.components-spinner{height:20px}.zI5tJ_qhWE6Oe6Lk75GY.lZAo6_oGfclXOO9CC6Rd{font-weight:400}.zI5tJ_qhWE6Oe6Lk75GY.xJDOiJxTt0R_wSl8Ipz_{min-width:100%}.zI5tJ_qhWE6Oe6Lk75GY.is-primary:disabled,.zI5tJ_qhWE6Oe6Lk75GY.is-secondary:disabled{background:var(--jp-gray);color:var(--jp-gray-20)}.zI5tJ_qhWE6Oe6Lk75GY.is-secondary{background:var(--jp-white);box-shadow:inset 0 0 0 1.51px var(--jp-black)}.zI5tJ_qhWE6Oe6Lk75GY.is-secondary:active:not(:disabled),.zI5tJ_qhWE6Oe6Lk75GY.is-secondary:hover:not(:disabled){background:var(--jp-gray-0)}.zI5tJ_qhWE6Oe6Lk75GY.is-link.Na39I683LAaSA99REg14,.zI5tJ_qhWE6Oe6Lk75GY.is-link.ipS7tKy9GntCS4R3vekF{padding:0}.zI5tJ_qhWE6Oe6Lk75GY.is-link:hover:not(:disabled){text-decoration-thickness:3px}.zI5tJ_qhWE6Oe6Lk75GY.is-link:focus:not(:disabled){text-decoration-line:none}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary{box-shadow:none}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary:not(:disabled){background:var(--jp-red-50);box-shadow:inset 0 0 0 1px var(--jp-red-50);color:var(--jp-white)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary:hover:not(:disabled){background:var(--jp-red-60);box-shadow:inset 0 0 0 1px var(--jp-red-60)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary:focus:not(:disabled){background:var(--jp-red-70);box-shadow:inset 0 0 0 1px var(--jp-white),0 0 0 var(--wp-admin-border-width-focus) var(--jp-red-70);color:var(--jp-white)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-primary:active:not(:disabled){background:var(--jp-red-50)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary{box-shadow:none}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary:not(:disabled){background:var(--jp-white);box-shadow:inset 0 0 0 1.5px var(--jp-red-50);color:var(--jp-red-50)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary:hover:not(:disabled){background:var(--jp-red-0);box-shadow:inset 0 0 0 1.5px var(--jp-red-60);color:var(--jp-red-60)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary:focus:not(:disabled){box-shadow:inset 0 0 0 1px var(--jp-white),0 0 0 var(--wp-admin-border-width-focus) var(--jp-red-70);color:var(--jp-red-70)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-secondary:active:not(:disabled){background:var(--jp-gray-0)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-link:not(:disabled){color:var(--jp-red-50)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-link:hover:not(:disabled){box-shadow:none;color:var(--jp-red-60)}.zI5tJ_qhWE6Oe6Lk75GY.is-destructive.is-link:focus:not(:disabled){box-shadow:inset 0 0 0 1px var(--jp-white),0 0 0 var(--wp-admin-border-width-focus) var(--jp-red-70);color:var(--jp-red-70)}.zI5tJ_qhWE6Oe6Lk75GY.q_tVWqMjl39RcY6WtQA6{position:relative}.zI5tJ_qhWE6Oe6Lk75GY.q_tVWqMjl39RcY6WtQA6.has-icon{justify-content:center}.zI5tJ_qhWE6Oe6Lk75GY.q_tVWqMjl39RcY6WtQA6>:not(.components-spinner){visibility:hidden}.zI5tJ_qhWE6Oe6Lk75GY.q_tVWqMjl39RcY6WtQA6>.components-spinner{margin:0;position:absolute}.CDuBjJp_8jxzx5j6Nept{margin-right:calc(var(--spacing-base)/2)}.jp-license-activation-screen{border-radius:4px;box-shadow:0 4px 24px 0 rgba(0,0,0,.149);display:flex;flex-direction:column;min-height:540px;overflow:hidden}@media screen and (min-width:780px){.jp-license-activation-screen{flex-direction:row}}.block-editor-block-list__layout .block-editor-block-list__block.has-warning.is-interactive>*{pointer-events:auto;user-select:auto}.block-editor-block-list__layout .block-editor-block-list__block.has-warning.is-interactive:after{content:none}.hdasSNj9k3Sc5PwXK4uE{margin-left:4px;width:16px}.eWN8Hj0SBRDq1F48n_Fg{--gray-70:#3c434a;align-items:center;color:var(--gray-70);display:flex;font-size:14px;text-decoration:none}.jp-dashboard-footer{align-items:center;color:var(--jp-black);display:flex;flex-wrap:wrap;font-size:var(--font-body-extra-small);line-height:1.333;max-width:1128px;width:100%}.jp-dashboard-footer a{text-decoration:none}.jp-dashboard-footer a:any-link,.jp-dashboard-footer a[role=button]{color:inherit}.jp-dashboard-footer a:hover{text-decoration:underline;text-decoration-thickness:1.5px}.jp-dashboard-footer a:focus{box-shadow:none;outline-width:0}.jp-dashboard-footer a:focus-visible{border-radius:2px;box-shadow:none;outline:1.5px solid currentColor;outline-offset:3px}.jp-dashboard-footer.is-sm>ul{gap:.125rem}.jp-dashboard-footer.is-md,.jp-dashboard-footer.is-sm>ul{align-items:flex-start;flex-direction:column}.jp-dashboard-footer>ul{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;list-style:none;margin:0;padding:0;width:100%}.jp-dashboard-footer>ul>li{margin-bottom:0}.jp-dashboard-footer>ul>li>a{align-items:center;display:flex;gap:.25rem;min-height:44px}.jp-dashboard-footer__accessible-external-link{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;overflow-wrap:normal;padding:0;position:absolute;width:1px}.jp-dashboard-footer__jp-item{font-weight:600;padding-inline-end:1rem}.jp-dashboard-footer.is-sm .jp-dashboard-footer__jp-item{padding-bottom:1rem}.jp-dashboard-footer.is-lg .jp-dashboard-footer__a8c-item{margin-inline-start:auto}.jp-dashboard-footer.is-sm .jp-dashboard-footer__a8c-item{padding-top:1rem}.jp-dashboard-footer__a8c-item>a,.jp-dashboard-footer__jp-item>a{text-decoration:none}.sexr0jUxC1jVixdKiDnC{margin-right:-20px}@media(max-width:782px){.sexr0jUxC1jVixdKiDnC{margin-right:-10px}}.sexr0jUxC1jVixdKiDnC.vKQ11sLeAM45M04P1ccj{background-color:var(--jp-white)}.sexr0jUxC1jVixdKiDnC .iWGAhN9gOB48g0jEO1OQ{align-items:center;display:flex;gap:8px}.sexr0jUxC1jVixdKiDnC .JOYmuxQjG4FArIIUxJfA{background:#d63638;color:#fff;cursor:pointer;font-size:9px;font-weight:700;letter-spacing:.2em;text-shadow:none;text-transform:uppercase}.rV_5QyvhDnsVjCX4pb0h{--gray-90:#1e1e1e;fill:var(--gray-90);width:24px}.MO1jDNY8VPqeNS9xL8jE{align-items:center;display:flex;text-decoration:none}.zvd4dCB_bBDiXJKKDqXm{position:relative}.ly4o9lSswAGHFXqGUEIO{left:32px;position:absolute;top:32px;z-index:1}.u64Go3kwEZ7MD9eji0H1{color:var(--jp-gray-50);font-size:13px;margin-bottom:8px;width:60%}._RT41NE3LU4R0ubcij2y{align-items:center;display:flex;gap:8px}._RT41NE3LU4R0ubcij2y li{background:none!important;margin:0!important;padding:0!important}.cFGWJeRiGHjAr8D7CWJW{max-width:110px}.Iz3l7a05TP6HK9S92TIL{width:16px}.lmQ0wFmnk4kKkGVjokPA{height:18px}.ZSFTmY3zE3VP4w0QeaqV{width:16px}.AoIs8wD92wKR8RpQj6Uc{align-items:center;display:inline-flex}.WQVtrU6q0L1Igcj7wCrQ{margin:0;padding:0}.UujoBFTnQNY2cWU2SIsH{font-size:var(--font-headline-medium);font-weight:700;line-height:52px}.TeGO5V_thHw5lDAm1_2M{font-weight:700}.TeGO5V_thHw5lDAm1_2M,.WolQzb2MsSgiNmLtc7_j{font-size:var(--font-headline-small);line-height:40px}.WolQzb2MsSgiNmLtc7_j{font-weight:400}.hUB0JT8p1T2Hw28N6qC8{font-weight:500}.gKZWDv5chz3_O3Syp74H,.hUB0JT8p1T2Hw28N6qC8{font-size:var(--font-title-medium);line-height:32px}.gKZWDv5chz3_O3Syp74H{font-weight:600}.zY2No8Ga4b8shbOQGhnv{font-size:var(--font-title-small);font-weight:500;line-height:30px}.tIj0D1t8Cc892ikmgFPZ{font-size:var(--font-body);font-weight:400;line-height:24px}.KdcN0BnOaVeVhyLRKqhS{font-size:var(--font-body-small);font-weight:400;line-height:24px}.dso3Rh3tl3Xv1GumBktz{font-weight:400}.dso3Rh3tl3Xv1GumBktz,.mQ1UlbN9u4Mg9byO8m7v{font-size:var(--font-body-extra-small);line-height:20px}.mQ1UlbN9u4Mg9byO8m7v{font-weight:700}.PItlW5vRExLnTj4a8eLE{font-size:var(--font-body-extra-small);font-weight:600;line-height:16px}.TwRpPlktzxhmFVeua7P5{margin:calc(var( --spacing-base )*0)}.zVfqx7gyb3o9mxfGynn1{margin-left:calc(var( --spacing-base )*0);margin-right:calc(var( --spacing-base )*0)}.iSHVzNiB9iVleGljaQxy{margin-bottom:calc(var( --spacing-base )*0)}.iSHVzNiB9iVleGljaQxy,.xqDIp6cNVr_E6RXaiPyD{margin-top:calc(var( --spacing-base )*0)}.S8EwaXk1kyPizt6x4WH2{margin-left:calc(var( --spacing-base )*0)}.ODX5Vr1TARoLFkDDFooD{margin-bottom:calc(var( --spacing-base )*0)}.cphJ8dCpfimnky7P2FHg{margin-right:calc(var( --spacing-base )*0)}.PFgIhNxIyiSuNvQjAIYj{margin:calc(var( --spacing-base )*1)}.M2jKmUzDxvJjjVEPU3zn{margin-left:calc(var( --spacing-base )*1);margin-right:calc(var( --spacing-base )*1)}.io15gAh8tMTNbSEfwJKk{margin-bottom:calc(var( --spacing-base )*1)}.io15gAh8tMTNbSEfwJKk,.rcTN5uw9xIEeMEGL3Xi_{margin-top:calc(var( --spacing-base )*1)}.CQSkybjq2TcRM1Xo9COV{margin-left:calc(var( --spacing-base )*1)}.hfqOWgq6_MEGdFE82eOY{margin-bottom:calc(var( --spacing-base )*1)}.I8MxZQYTbuu595yfesWA{margin-right:calc(var( --spacing-base )*1)}.kQkc6rmdpvLKPkyoJtVQ{margin:calc(var( --spacing-base )*2)}.j6vFPxWuu4Jan2ldoxpp{margin-left:calc(var( --spacing-base )*2);margin-right:calc(var( --spacing-base )*2)}.hqr39dC4H_AbactPAkCG{margin-bottom:calc(var( --spacing-base )*2)}.c3dQnMi16C6J6Ecy4283,.hqr39dC4H_AbactPAkCG{margin-top:calc(var( --spacing-base )*2)}.YNZmHOuRo6hU7zzKfPdP{margin-left:calc(var( --spacing-base )*2)}.Db8lbak1_wunpPk8NwKU{margin-bottom:calc(var( --spacing-base )*2)}.ftsYE5J9hLzquQ0tA5dY{margin-right:calc(var( --spacing-base )*2)}.Det4MHzLUW7EeDnafPzq{margin:calc(var( --spacing-base )*3)}.h_8EEAztC29Vve1datb5{margin-left:calc(var( --spacing-base )*3);margin-right:calc(var( --spacing-base )*3)}.YXIXJ0h1k47u6hzK8KcM{margin-bottom:calc(var( --spacing-base )*3)}.YXIXJ0h1k47u6hzK8KcM,.soADBBkcIKCBXzCTuV9_{margin-top:calc(var( --spacing-base )*3)}.zSX59ziEaEWGjnpZa4uV{margin-left:calc(var( --spacing-base )*3)}.yrVTnq_WBMbejg89c2ZQ{margin-bottom:calc(var( --spacing-base )*3)}.UKtHPJnI2cXBWtPDm5hM{margin-right:calc(var( --spacing-base )*3)}.guexok_Tqd5Tf52hRlbT{margin:calc(var( --spacing-base )*4)}.oS1E2KfTBZkJ3F0tN7T6{margin-left:calc(var( --spacing-base )*4);margin-right:calc(var( --spacing-base )*4)}.DN1OhhXi6AoBgEdDSbGd{margin-bottom:calc(var( --spacing-base )*4)}.DN1OhhXi6AoBgEdDSbGd,.ot2kkMcYHv53hLZ4LSn0{margin-top:calc(var( --spacing-base )*4)}.A1krOZZhlQ6Sp8Cy4bly{margin-left:calc(var( --spacing-base )*4)}.pkDbXXXL32237M0hokEh{margin-bottom:calc(var( --spacing-base )*4)}.XXv4kDTGvEnQeuGKOPU3{margin-right:calc(var( --spacing-base )*4)}.yGqHk1a57gaISwkXwXe6{margin:calc(var( --spacing-base )*5)}.X8cghM358X3DkXLc9aNK{margin-left:calc(var( --spacing-base )*5);margin-right:calc(var( --spacing-base )*5)}.GdfSmGwHlFnN2S6xBn1f{margin-bottom:calc(var( --spacing-base )*5)}.GdfSmGwHlFnN2S6xBn1f,.yqeuzwyGQ7zG0avrGqi_{margin-top:calc(var( --spacing-base )*5)}.g9emeCkuHvYhveiJbfXO{margin-left:calc(var( --spacing-base )*5)}.Lvk3dqcyHbZ07QCRlrUQ{margin-bottom:calc(var( --spacing-base )*5)}.r3yQECDQ9qX0XZzXlVAg{margin-right:calc(var( --spacing-base )*5)}.aQhlPwht2Cz1X_63Miw0{margin:calc(var( --spacing-base )*6)}.JyHb0vK3wJgpblL9s5j8{margin-left:calc(var( --spacing-base )*6);margin-right:calc(var( --spacing-base )*6)}.cY2gULL1lAv6WPNIRuf3{margin-bottom:calc(var( --spacing-base )*6)}.NBWQ9Lwhh_fnry3lg_p7,.cY2gULL1lAv6WPNIRuf3{margin-top:calc(var( --spacing-base )*6)}.yIOniNe5E40C8fWvBm5V{margin-left:calc(var( --spacing-base )*6)}.t30usboNSyqfQWIwHvT3{margin-bottom:calc(var( --spacing-base )*6)}.Nm_TyFkYCMhOoghoToKJ{margin-right:calc(var( --spacing-base )*6)}.C4qJKoBXpgKtpmrqtEKB{margin:calc(var( --spacing-base )*7)}.S93Srbu6NQ_PBr7DmTiD{margin-left:calc(var( --spacing-base )*7);margin-right:calc(var( --spacing-base )*7)}.fJj8k6gGJDks3crUZxOS{margin-bottom:calc(var( --spacing-base )*7)}.cW6D6djs7Ppm7fD7TeoV,.fJj8k6gGJDks3crUZxOS{margin-top:calc(var( --spacing-base )*7)}.DuCnqNfcxcP3Z__Yo5Ro{margin-left:calc(var( --spacing-base )*7)}.im8407m2fw5vOg7O2zsw{margin-bottom:calc(var( --spacing-base )*7)}.G0fbeBgvz2sh3uTP9gNl{margin-right:calc(var( --spacing-base )*7)}.kvW3sBCxRxUqz1jrVMJl{margin:calc(var( --spacing-base )*8)}.tOjEqjLONQdkiYx_XRnw{margin-left:calc(var( --spacing-base )*8);margin-right:calc(var( --spacing-base )*8)}.op5hFSx318zgxsoZZNLN{margin-bottom:calc(var( --spacing-base )*8)}.c9WfNHP6TFKWIfLxv52J,.op5hFSx318zgxsoZZNLN{margin-top:calc(var( --spacing-base )*8)}.sBA75QqcqRwwYSHJh2wc{margin-left:calc(var( --spacing-base )*8)}.GpL6idrXmSOM6jB8Ohsf{margin-bottom:calc(var( --spacing-base )*8)}.HbtWJoQwpgGycz8dGzeT{margin-right:calc(var( --spacing-base )*8)}.uxX3khU88VQ_Ah49Ejsa{padding:calc(var( --spacing-base )*0)}.KX0FhpBKwKzs9fOUdbNz{padding-left:calc(var( --spacing-base )*0);padding-right:calc(var( --spacing-base )*0)}.PfK8vKDyN32dnimlzYjz{padding-bottom:calc(var( --spacing-base )*0)}.PfK8vKDyN32dnimlzYjz,.emxLHRjQuJsImnPbQIzE{padding-top:calc(var( --spacing-base )*0)}.kJ8WzlpTVgdViXt8ukP9{padding-left:calc(var( --spacing-base )*0)}.tg_UIUI11VBzrTAn2AzJ{padding-bottom:calc(var( --spacing-base )*0)}.uczvl8kaz84oPQJ2DB2R{padding-right:calc(var( --spacing-base )*0)}.o7UHPcdVK3lt7q3lqV4o{padding:calc(var( --spacing-base )*1)}.IDqEOxvDoYrFYxELPmtX{padding-left:calc(var( --spacing-base )*1);padding-right:calc(var( --spacing-base )*1)}.DdywPW2qSYlu2pt8tpO2{padding-bottom:calc(var( --spacing-base )*1)}.DdywPW2qSYlu2pt8tpO2,.npy3hw4A5QSkDicb2CJJ{padding-top:calc(var( --spacing-base )*1)}.LgbptTApNY5NwLQvEFAt{padding-left:calc(var( --spacing-base )*1)}.WZQy2SZuZso59bUsXXyl{padding-bottom:calc(var( --spacing-base )*1)}.o331apInxNunbYB3SfPE{padding-right:calc(var( --spacing-base )*1)}.fMPIyD9Vqki1Lrc_yJnG{padding:calc(var( --spacing-base )*2)}.i2pMcTcdrr10IQoiSm_L{padding-left:calc(var( --spacing-base )*2);padding-right:calc(var( --spacing-base )*2)}.eA702gn32kwptiI1obXH{padding-bottom:calc(var( --spacing-base )*2)}.eA702gn32kwptiI1obXH,.o9bGieUKcYc8o0Ij9oZX{padding-top:calc(var( --spacing-base )*2)}.SwZcFez1RDqWsOFjB5iG{padding-left:calc(var( --spacing-base )*2)}.eHpLc_idmuEqeqCTvqkN{padding-bottom:calc(var( --spacing-base )*2)}.vU39i2B4P1fUTMB2l6Vo{padding-right:calc(var( --spacing-base )*2)}.JHWNzBnE29awhdu5BEh1{padding:calc(var( --spacing-base )*3)}.X72lGbb56L3KFzC2xQ9N{padding-left:calc(var( --spacing-base )*3);padding-right:calc(var( --spacing-base )*3)}.BzfNhRG8wXdCEB5ocQ6e{padding-bottom:calc(var( --spacing-base )*3)}.BzfNhRG8wXdCEB5ocQ6e,.srV0KSDC83a2fiimSMMQ{padding-top:calc(var( --spacing-base )*3)}.lUWfkmbQjCskhcNwkyCm{padding-left:calc(var( --spacing-base )*3)}.Ts0dIlc3aTSL7V4cIHis{padding-bottom:calc(var( --spacing-base )*3)}.CzlqQXXhX6MvorArFZ8B{padding-right:calc(var( --spacing-base )*3)}.TqMPkQtR_DdZuKb5vBoV{padding:calc(var( --spacing-base )*4)}.a7UrjhI69Vetlcj9ZVzz{padding-left:calc(var( --spacing-base )*4);padding-right:calc(var( --spacing-base )*4)}.StEhBzGs2Gi5dDEkjhAv{padding-bottom:calc(var( --spacing-base )*4)}.FGneZfZyvYrt1dG0zcnm,.StEhBzGs2Gi5dDEkjhAv{padding-top:calc(var( --spacing-base )*4)}.APEH216rpdlJWgD2fHc8{padding-left:calc(var( --spacing-base )*4)}.oGwXC3ohCic9XnAj6x69{padding-bottom:calc(var( --spacing-base )*4)}.U6gnT9y42ViPNOcNzBwb{padding-right:calc(var( --spacing-base )*4)}.IpdRLBwnHqbqFrixgbYC{padding:calc(var( --spacing-base )*5)}.HgNeXvkBa9o3bQ5fvFZm{padding-left:calc(var( --spacing-base )*5);padding-right:calc(var( --spacing-base )*5)}.tJtFZM3XfPG9v9TSDfN1{padding-bottom:calc(var( --spacing-base )*5)}.PdifHW45QeXYfK568uD8,.tJtFZM3XfPG9v9TSDfN1{padding-top:calc(var( --spacing-base )*5)}.mbLkWTTZ0Za_BBbFZ5b2{padding-left:calc(var( --spacing-base )*5)}.vVWpZpLlWrkTt0hMk8XU{padding-bottom:calc(var( --spacing-base )*5)}.RxfaJj5a1Nt6IavEo5Zl{padding-right:calc(var( --spacing-base )*5)}.SppJULDGdnOGcjZNCYBy{padding:calc(var( --spacing-base )*6)}.palY2nLwdoyooPUm9Hhk{padding-left:calc(var( --spacing-base )*6);padding-right:calc(var( --spacing-base )*6)}.WYw1JvZC0ppLdvSAPhr_{padding-bottom:calc(var( --spacing-base )*6)}.WYw1JvZC0ppLdvSAPhr_,.YEEJ9b90ueQaPfiU8aeN{padding-top:calc(var( --spacing-base )*6)}.QE0ssnsKvWJMqlhPbY5u{padding-left:calc(var( --spacing-base )*6)}.n8yA3jHlMRyLd5UIfoND{padding-bottom:calc(var( --spacing-base )*6)}.tXHmxYnHzbwtfxEaG51n{padding-right:calc(var( --spacing-base )*6)}.kBTsPKkO_3g_tLkj77Um{padding:calc(var( --spacing-base )*7)}.RyhrFx6Y1FGDrGAAyaxm{padding-left:calc(var( --spacing-base )*7);padding-right:calc(var( --spacing-base )*7)}.CBwRpB0bDN3iEdQPPMJO{padding-bottom:calc(var( --spacing-base )*7)}.CBwRpB0bDN3iEdQPPMJO,.vQVSq6SvWKbOMu6r4H6b{padding-top:calc(var( --spacing-base )*7)}.oBy5__aEADMsH46mrgFX{padding-left:calc(var( --spacing-base )*7)}.KVEXoJqf1s92j0JMdNmN{padding-bottom:calc(var( --spacing-base )*7)}.ZMXGNrNaKW3k_3TLz0Fq{padding-right:calc(var( --spacing-base )*7)}.tuiR9PhkHXhGyEgzRZRI{padding:calc(var( --spacing-base )*8)}.U7454qyWkQNa2iaSJziu{padding-left:calc(var( --spacing-base )*8);padding-right:calc(var( --spacing-base )*8)}.VLYIv2GVocjuN93e8HC8{padding-bottom:calc(var( --spacing-base )*8)}.VLYIv2GVocjuN93e8HC8,.X1rm9DQ1zLGLfogja5Gn{padding-top:calc(var( --spacing-base )*8)}.JS7G6kAuqJo5GIuF8S5t{padding-left:calc(var( --spacing-base )*8)}.Y8F9ga1TDCMbM1lj4gUz{padding-bottom:calc(var( --spacing-base )*8)}.AJuyNGrI63BOWql719H8{padding-right:calc(var( --spacing-base )*8)}.terms-of-service{color:var(--jp-black);font-size:var(--font-body)}.terms-of-service .terms-of-service__link{color:var(--jp-green-50);text-decoration:underline;white-space:nowrap}.kezuOHNvu9vdvlJ86Fwg .qJizORs2q_CVCj9L6XLe{align-items:center;display:flex;gap:var(--spacing-base);margin-bottom:calc(var(--spacing-base)*3)}.kezuOHNvu9vdvlJ86Fwg .qJizORs2q_CVCj9L6XLe .VmtuLc2xRqmsO6cK8qjF{position:relative;width:54px}.kezuOHNvu9vdvlJ86Fwg .qJizORs2q_CVCj9L6XLe .MdTRfQ3eo5qZKChZlzNj,.kezuOHNvu9vdvlJ86Fwg .qJizORs2q_CVCj9L6XLe .PbEpL02SEH9VNAlbKCfV{width:32px}.kezuOHNvu9vdvlJ86Fwg .qJizORs2q_CVCj9L6XLe .TD4AUM9gcTVAB6JHB5ZR{border-radius:50%;margin-right:-10px;position:absolute;width:32px}.kezuOHNvu9vdvlJ86Fwg .qJizORs2q_CVCj9L6XLe .yjl73qv0VWoPP8IhGreh{border-top-style:solid;border-top:2px dashed var(--jp-black);height:0;width:67px}.kezuOHNvu9vdvlJ86Fwg .qJizORs2q_CVCj9L6XLe .J0GIu2rNR7rXocQTyd8p{border-color:var(--jp-red)}.kezuOHNvu9vdvlJ86Fwg .qJizORs2q_CVCj9L6XLe .rAV2E93SG8WpokuGk9jh{border-color:var(--jp-yellow-50)}.kezuOHNvu9vdvlJ86Fwg .YZ7FNKEm9qpvQ4ZkbAz5{transform:rotate(-180deg)}.kezuOHNvu9vdvlJ86Fwg .TYNMsILey2vUwnyZSjJU{align-self:flex-end;margin-bottom:2px}.kezuOHNvu9vdvlJ86Fwg .oH9tzGE80LnB6Og69RFz{margin-bottom:var(--spacing-base)}.kezuOHNvu9vdvlJ86Fwg .oH9tzGE80LnB6Og69RFz,.kezuOHNvu9vdvlJ86Fwg .xXVEWvQllVsFGmJY8WEp{align-items:center;display:flex;gap:var(--spacing-base)}.kezuOHNvu9vdvlJ86Fwg .xXVEWvQllVsFGmJY8WEp.J0GIu2rNR7rXocQTyd8p{color:var(--jp-red);fill:var(--jp-red)}.kezuOHNvu9vdvlJ86Fwg .xXVEWvQllVsFGmJY8WEp.rAV2E93SG8WpokuGk9jh{color:var(--jp-yellow-50);fill:var(--jp-yellow-50)}.kezuOHNvu9vdvlJ86Fwg .xXVEWvQllVsFGmJY8WEp.q4_FOHifGawULuFBZke9 svg{fill:var(--jp-green-50)}.jUxY9oXwnEDQLadQBNQp{animation:odHEpyTWVIDgdJClTyHg 1s linear infinite alternate;border-radius:var(--jp-border-radius-rna);color:transparent}.Vzu6IGmwfFGn5RPCIWOY{margin-bottom:1rem}@keyframes odHEpyTWVIDgdJClTyHg{0%{background-color:#f5f5f5}to{background-color:#e2e2e2}}.IorMv97NU2iEXtcbbVoN{background:var(--jp-white);border-radius:calc(var(--jp-border-radius)/2);box-shadow:0 1px 1px 0 rgba(0,0,0,.1),0 1px 1.5px 0 rgba(0,0,0,.1),0 2px 3px -.5px rgba(0,0,0,.1);padding:var(--spacing-base);position:absolute;right:0;top:calc(100% + var(--spacing-base));z-index:1}.IorMv97NU2iEXtcbbVoN ._I09VyiyxzT6EKE6RwVF{align-items:center;background-color:var(--jp-white);border:none;cursor:pointer;display:flex;gap:calc(var(--spacing-base)*7);padding:var(--spacing-base);width:100%}.IorMv97NU2iEXtcbbVoN ._I09VyiyxzT6EKE6RwVF:hover{background-color:var(--jp-gray-0)}.IorMv97NU2iEXtcbbVoN .Gmum0UGKXz4YlMG9Fwgm{align-items:center;display:flex;font-size:var(--font-label);gap:calc(var(--spacing-base)*.5)}.IorMv97NU2iEXtcbbVoN .przPMe99k8Mad0jsxI1R{background-color:var(--jp-green-50);height:25px;width:25px}.vRIYDzW5yrfnUoDPdBAN{display:flex;position:relative}.vRIYDzW5yrfnUoDPdBAN .KIyEfIhAZ4TElM0K5kuH{align-items:center;border:.5px solid var(--jp-black);border-bottom-left-radius:var(--jp-border-radius);border-top-left-radius:var(--jp-border-radius);box-shadow:inset 0 0 0 1px var(--jp-black);cursor:pointer;display:flex;justify-content:center;padding:0}.vRIYDzW5yrfnUoDPdBAN .V4VpHqht9Rm42tiZfsxU{background-color:var(--jp-black);margin-right:.5px}.vRIYDzW5yrfnUoDPdBAN .vZfbVKYvaUjhpAuMD9jg{background-color:var(--jp-white);border-right-width:0;margin-right:-.5px}.SlMzf1xQ5c9GfEx2RQgv a,.SlMzf1xQ5c9GfEx2RQgv button{border-bottom-left-radius:0;border-top-left-radius:0}.OpMBda4vebhRbW8Fm6YC{background:var(--jp-white);border:1px solid var(--jp-gray-5);border-radius:var(--jp-border-radius-rna);box-shadow:0 4px 12px 0 rgba(0,0,0,.06);display:flex;flex-direction:column;height:100%;padding:calc(var(--spacing-base)*3)}.OpMBda4vebhRbW8Fm6YC.BghJAx9hSagUdHWOUaYE{background:none;background-color:var(--jp-white-off);color:var(--jp-black-80);text-decoration:none}.OpMBda4vebhRbW8Fm6YC.BghJAx9hSagUdHWOUaYE:focus{background-color:var(--jp-white);box-shadow:0 0 0 1.5px var(--jp-black);outline:3px solid transparent}.OpMBda4vebhRbW8Fm6YC.IWsEW5nnNWUqqcT3K5L1{box-shadow:0 0 0 1.5px var(--jp-red-60)}.r3UCwgwCthua6lDCvIBI{align-items:center;display:flex;gap:var(--spacing-base);justify-content:space-between;margin-bottom:var(--spacing-base);width:100%}.r3UCwgwCthua6lDCvIBI h3{font-weight:700}.vpluqUMgmwx9_f8wCVIn{align-items:center;display:flex;flex-wrap:wrap-reverse;gap:var(--spacing-base);height:100%}.pIsYsXFAJ9KX2VrS5rmY{min-height:200px;position:relative}.pIsYsXFAJ9KX2VrS5rmY.Pp9cMIaESLYelLOX3tkI{border-color:var(--jp-red-50);border-width:1px}.pIsYsXFAJ9KX2VrS5rmY.NhOH6VeEpSrNGAPQik0w{border-color:#deb100;border-width:1px}.gmPKCDKZcfQt9WieTyKS{flex-grow:1}.fDBaV7I4yUO6w5AWVEtr{align-items:center;display:flex;flex-direction:row-reverse;flex-wrap:wrap;justify-content:space-between;margin-top:auto;min-height:28px;padding-top:calc(var(--spacing-base)*3);width:100%}.SelsBZT7eIWRQyl1dasZ{display:flex;gap:var(--spacing-base);justify-content:flex-start}.LHYJUrOej3toDvOAiz4k{align-items:center;display:flex;gap:var(--spacing-base);justify-content:space-between;margin-bottom:calc(var(--spacing-base)*.5);width:100%}.LHYJUrOej3toDvOAiz4k h3{font-weight:700;line-height:28px}.aZvwqVNw6rvImSxn0DM9{align-items:baseline;display:flex;gap:calc(var(--spacing-base)*.5);margin-bottom:var(--spacing-base)}.R4OXFRkmlHAH8ScIgYXh{color:var(--jp-gray-100);font-size:var(--font-body);font-weight:600}.R4OXFRkmlHAH8ScIgYXh.g0_8bbVjnVh0D_pS264j{color:var(--jp-gray-30);text-decoration:line-through}.nqFgW_S2jbHPu9yPq9E_{color:var(--jp-gray-30);font-size:var(--font-body-extra-small)}.f5VJYwuJmjxH8PVxEbbv{align-items:center;display:flex;height:28px;white-space:nowrap}.f5VJYwuJmjxH8PVxEbbv:before{border-radius:50%;content:"";display:inline-block;height:8px;margin-left:var(--spacing-base);width:8px}.f5VJYwuJmjxH8PVxEbbv.ry3pxoGtmQ0ZeSwp7F_3{color:var(--jp-green-50)}.f5VJYwuJmjxH8PVxEbbv.ry3pxoGtmQ0ZeSwp7F_3:before{background:var(--jp-green-50)}.f5VJYwuJmjxH8PVxEbbv.LZzE3EG7m3CDR46wwwEr{color:var(--jp-gray-50)}.f5VJYwuJmjxH8PVxEbbv.LZzE3EG7m3CDR46wwwEr:before{background:var(--jp-gray-50)}.f5VJYwuJmjxH8PVxEbbv.TZUP7W6QYGajITiMNYas{color:var(--jp-yellow-50)}.f5VJYwuJmjxH8PVxEbbv.TZUP7W6QYGajITiMNYas:before{background:var(--jp-yellow-50)}.f5VJYwuJmjxH8PVxEbbv.Vx_jpT02r8W6NfsRSB02{color:var(--jp-red-60)}.f5VJYwuJmjxH8PVxEbbv.Vx_jpT02r8W6NfsRSB02:before{background:var(--jp-red-60)}.f5VJYwuJmjxH8PVxEbbv.PdsJCfyyjSgrNDheF2qi:before{animation:dWP7ypkVXudMbAa38W5Z .5s linear infinite}@keyframes dWP7ypkVXudMbAa38W5Z{0%{opacity:0}50%{opacity:.5}to{opacity:0}}.info-tooltip__button{align-items:center;background:transparent;border:none;color:var(--jp-gray-50);cursor:pointer;display:flex;padding:2px}.info-tooltip__button svg{margin:0 auto}.info-tooltip__content h3{color:var(--jp-black);font-size:var(--font-title-small);font-weight:500;line-height:calc(var(--font-title-small) + 6px);margin:0 0 calc(var(--spacing-base)*2)}.info-tooltip__content p{color:var(--jp-gray-70);font-size:var(--font-body);line-height:var(--font-title-small);margin-bottom:0}.info-tooltip__content p a{color:var(--jp-black);text-decoration:underline}.info-tooltip__content p a:focus,.info-tooltip__content p a:hover{text-decoration:none}.gridicon{fill:currentColor;display:inline-block}.gridicon.needs-offset g{transform:translate(-1px,1px)}.gridicon.needs-offset-x g{transform:translate(-1px)}.gridicon.needs-offset-y g{transform:translateY(1px)}.wI7QgVzPXvVVu6kfnTT8{align-items:center;color:var(--jp-black);display:flex;justify-content:space-between;margin-top:1rem}.wI7QgVzPXvVVu6kfnTT8 .eqyxcUmdF0s3gmmlZGyD{display:flex;gap:1.5rem}.wI7QgVzPXvVVu6kfnTT8 .gxY6D0PeVtGk9iSB5E_u{align-items:center;display:flex;font-size:var(--font-body-small);gap:2px;margin:0}.wI7QgVzPXvVVu6kfnTT8 .D_uE0LD5CvpfM2FNp55k{align-items:center;display:flex;gap:2px}.wI7QgVzPXvVVu6kfnTT8 .VTBUdi1D4DW34F0yixMk{font-size:var(--font-body-small);margin:0}.BXQQYCO_pEmYmzBBwYxR{align-items:center;color:var(--jp-black);display:flex;gap:.25rem;margin-top:1rem}.BXQQYCO_pEmYmzBBwYxR .qdvOzzbrd3KQK7DNg8eg{font-size:var(--font-body-small);margin:0}.PFbMp_gtGLBMWbbYtO0q{display:flex;flex-grow:1;flex-wrap:wrap;gap:.25rem;justify-content:space-between}.ZFCNMiywyFvaifoIQI5w{color:var(--jp-gray-40)}.eKy3yAPsoarwSQMou_kk{align-items:center;display:flex;font-weight:500;gap:.25rem}.eKy3yAPsoarwSQMou_kk svg.Bt6AOGkWP6xSfUbq2QBQ{fill:var(--jp-red-60)}.GA8m1YdHe3xODczqUUor{align-items:flex-start;color:var(--jp-gray-50);display:flex;font-size:var(--font-body-extra-small);gap:.25rem;line-height:var(--font-title-small)}.GA8m1YdHe3xODczqUUor .KixWjGbAhopt1dR0Hv9n{padding-top:calc(var(--jp-underline-thickness)*2)}.GA8m1YdHe3xODczqUUor .KixWjGbAhopt1dR0Hv9n>svg{fill:var(--jp-red)}.GA8m1YdHe3xODczqUUor .iGcRsZkwWJW_WJglA1oO{font-size:var(--font-label);font-weight:400;line-height:20px}.value-section__heading{color:var(--jp-gray-100);font-weight:500}.mj-boost-speed-score{margin:calc(var(--spacing-base)*-1);margin-bottom:0;padding:calc(var(--spacing-base))}.mj-boost-speed-score__grade{align-items:center;column-gap:1em;display:flex;font-size:var(--font-body-small);justify-content:space-between;line-height:24px;margin:8px 0}.mj-boost-speed-score__grade--letter{all:unset;border-radius:var(--jp-border-radius);color:var(--jp-green);cursor:pointer;font-size:var(--font-title-small);font-weight:700;line-height:24px;padding:0 5px}.mj-boost-speed-score__grade--letter:focus{outline:1px dotted var(--jp-black)}.boost-score-tooltip__heading{color:#000;font-size:var(--font-title-small);line-height:30px;margin:0}.boost-score-tooltip__content{font-size:var(--font-body);line-height:24px}.boost-score-tooltip__parent{max-width:340px;min-height:150px;padding:24px;width:calc(100vw - 64px)}@media(min-width:783px){.boost-score-tooltip__parent{width:100vw}}.boost-score-tooltip__parent p:last-child{margin-bottom:0}.mj-boost-speed-score__bar .jb-score-bar__label{display:none}.mj-boost-speed-score__bar .jb-score-bar__filler{border-radius:12px;min-width:49px}.mj-boost-speed-score__bar .jb-score-bar__bounds{border-radius:12px;height:24px;margin-right:0}.mj-boost-speed-score__bar .jb-score-bar__score{border-radius:12px;height:24px;width:30px}.mj-boost-speed-score__increase{align-items:center;color:var(--jp-green-50);display:flex;font-size:var(--font-body-small);left:24px;line-height:28px;position:absolute;top:26px;fill:var(--jp-green-50)}.jb-score-bar__label,.jb-score-bar__loading,.jb-score-bar__score{align-items:center;background-color:#fff;border:2px solid transparent;border-radius:42px;display:flex;height:42px}.jb-score-bar{color:var(--jp-gray-70);display:flex;width:100%}.jb-score-bar--mobile{margin-bottom:1.5rem}@media(max-width:767px){.jb-score-bar{flex-direction:column}.jb-score-bar__label{background-color:transparent}}.jb-score-bar__loading{align-items:center;display:flex;justify-content:center;width:42px}.jb-score-bar__label{display:grid;grid-template-columns:24px 1fr;grid-column-gap:10px;font-size:14px;justify-content:center;position:relative}@media(min-width:768px){.jb-score-bar__label{padding-left:15px;padding-right:15px;width:200px;z-index:50}}.jb-score-bar__score{border-radius:100%;font-weight:700;height:42px;justify-content:center;left:-1px;position:absolute;width:42px}.jb-score-bar__bounds{background-color:#f1f1f1;border-radius:21px;display:flex;height:42px;max-width:100%;position:relative;width:100%;z-index:40}@media(min-width:768px){.jb-score-bar__bounds{margin-right:-21px;width:calc(100% + 21px)}}.jb-score-bar__filler{border-radius:42px 0 0 42px;display:flex;justify-content:flex-end;min-width:85px;position:relative;transition:width .3s ease-in-out;width:0;will-change:width}@media(max-width:767px){.jb-score-bar__filler{border-radius:inherit;min-width:43px}}.jb-score-bar__no_boost_score{--clearance-space:74px;background:#fff;background-clip:padding-box;border:2px solid transparent;border-radius:50%;cursor:pointer;font-size:.7em;height:28px;line-height:1.625;padding:3px;position:absolute;text-align:center;top:6px;width:28px;z-index:2}.jb-score-bar__no_boost_score:hover{border:2px solid hsla(0,0%,100%,.5)}.jb-score-bar__no_boost_score:after{border-bottom:6px solid #fff;border-left:6px solid transparent;border-right:6px solid transparent;content:" ";height:0;position:absolute;right:6px;top:28px;width:0}.jb-score-bar__no_boost_score_tooltip{background:#fff;border-radius:4px;box-shadow:0 0 20px 0 hsla(0,0%,67%,.28);display:none;margin:0 16px;padding:16px;position:absolute;right:-10em;top:-62px;width:20em}.jb-score-bar__no_boost_score_tooltip:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;bottom:-6px;content:" ";height:0;margin:0 -10px;position:absolute;right:10em;width:0}.jb-score-bar__no_boost_score:hover .jb-score-bar__no_boost_score_tooltip{display:block}.jb-score-bar .fill-loading{background-color:var(--jp-white)}.jb-score-bar .fill-good{background-color:var(--jp-green)}.jb-score-bar .fill-mediocre{background-color:var(--jp-orange-20)}.jb-score-bar .fill-bad{background-color:var(--jp-red-50)}.g4lyov8aMDggdD4yOi1p{align-items:baseline;display:flex;margin-top:calc(var(--spacing-base)/2)}.g4lyov8aMDggdD4yOi1p .Ys5ScZ_dYn2O2AzDE5Yi{font-size:32px;font-weight:400;line-height:36px;margin-left:var(--spacing-base)}.sUNg_b7XteVXOrpHAkJg :last-child{margin-top:4px}.cF6QAJf1vXXAMuutXPcq{align-items:baseline;display:flex}.cF6QAJf1vXXAMuutXPcq.coY634LconQ7gzDDNJeu{color:var(--jp-gray-10);fill:var(--jp-gray-10)}.cF6QAJf1vXXAMuutXPcq.kyqpwKaL2FyQ8CtxJQ0f{color:var(--jp-green-50);fill:var(--jp-green-50)}.cF6QAJf1vXXAMuutXPcq.aXf37lEOcjpNV8ImLaYK{color:var(--jp-red-40);fill:var(--jp-red-40)}.cF6QAJf1vXXAMuutXPcq .OyGdoGzsQ48VaVVR99_H{position:relative;right:2px;top:2px}.cF6QAJf1vXXAMuutXPcq .cKLicfMCaDSGPlX222jF{font-size:14px;font-weight:600;line-height:24px}.ZaPXoMGC_e8NfFoBgA95,.gb2kSZHPauLu96D9HAIg{margin-bottom:1.5rem}.qpN923qyxjI06NCgFC8j>li{margin-bottom:0}.hpd1bQCLIZYXpZJa22qw{color:var(--jp-gray-100);font-size:var(--font-body-extra-small);font-weight:500;line-height:var(--font-title-small);margin-bottom:calc(var(--spacing-base) + 2px)}.info-tooltip__content{max-width:340px;min-height:150px;padding:24px;width:calc(100vw - 64px)}.components-popover.is-expanded .info-tooltip__content{max-width:unset;width:auto}@media screen and (min-width:599px)and (max-width:1290px){ul.qpN923qyxjI06NCgFC8j{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}ul.qpN923qyxjI06NCgFC8j>li{grid-column-end:auto}}.value-section{display:flex;justify-content:space-between;margin-top:calc(var(--spacing-base)/2)}.value-section>div{align-items:flex-start;display:flex;flex-direction:column}.value-section__heading{align-items:center;display:flex;text-wrap:nowrap}.value-section__last-scan{align-items:center;column-gap:1px;display:flex;justify-content:flex-end;left:calc(var(--spacing-base)*3);margin-top:var(--spacing-base);position:absolute;width:calc(57% - var(--spacing-base)*3)}.value-section__last-scan div{color:var(--jp-gray-50);font-size:var(--font-body-extra-small);line-height:var(--font-body);text-align:left}@media(max-width:480px){.value-section__last-scan{width:calc(53% - var(--spacing-base)*3)}}.value-section__data{align-items:center;color:var(--jp-gray-50);display:flex;flex:1;font-size:var(--font-body-extra-small);font-weight:500;justify-content:center;line-height:var(--font-title-small)}.value-section__status-icon{display:block;margin-left:calc(var(--spacing-base) - 2px)}.value-section__status-text{letter-spacing:-.24px;margin-left:1px}.scan-threats__threat-count{color:var(--jp-black);font-size:calc(var(--font-title-large) - 4px);font-weight:400;line-height:var(--font-title-large)}.scan-threats__critical-threats{align-items:center;display:flex}.scan-threats__critical-threat-container{margin-right:1px}.scan-threats__critical-threat-container>button>svg{fill:var(--jp-red-50)}.scan-threats__critical-threat-count{color:var(--jp-red-50);margin-right:calc(var(--spacing-base)/4)}.logins_blocked__count{color:var(--jp-black);font-size:calc(var(--font-headline-small) - 4px);font-weight:400;line-height:var(--font-title-large)}.videopress-card__video-count{color:var(--jp-gray-90);display:flex;font-size:calc(var(--font-headline-small) - 4px);line-height:1.125;margin-top:calc(var(--spacing-base)/2)}.videopress-card__video-count .videopress-card__tooltip{height:18px}p.description{color:var(--jp-gray-70);font-size:var(--font-body-small);margin:0 0 1rem}.videopress-card__value-section{display:flex;gap:.75rem;justify-content:space-between}.videopress-card__value-section__container{align-items:flex-start;display:flex;flex-direction:column}.videopress-card__value-section__value-container{align-items:flex-end;display:flex;flex-wrap:wrap}.videopress-card__value-section__value{color:var(--jp-gray-90);font-size:calc(var(--font-headline-small) - 4px);line-height:1}.videopress-card__value-section__previous-value{align-items:center;display:flex;font-size:var(--font-body-extra-small);font-weight:600;line-height:18px}.videopress-card__value-section__previous-value.increase *{color:var(--jp-green-50);fill:var(--jp-green-50)}.videopress-card__value-section__previous-value.decrease *{color:var(--jp-red-50);fill:var(--jp-red-50)}.videopress-card__value-section__heading{align-items:center;display:flex;text-wrap:nowrap}.videopress-card__no-video-tooltip .info-tooltip__button{display:inline;vertical-align:middle}.iG63b_J1HNfT8xEIq619{margin-bottom:.75rem}.T8UhA3lZQjpZsyaah9J6{width:200px}.Tobf3RFq_fT42YGp_h4g{font-size:var(--font-body)}ul.g69ZGQc9wey1u1beD0IP{grid-auto-flow:column;grid-template-columns:repeat(5,100%);overflow-x:auto;scroll-behavior:smooth;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}ul.g69ZGQc9wey1u1beD0IP::-webkit-scrollbar{display:none}ul.g69ZGQc9wey1u1beD0IP li{grid-column:unset;grid-column-end:unset;max-width:100%;scroll-snap-align:start;width:100%}@media screen and (min-width:601px){ul.g69ZGQc9wey1u1beD0IP{grid-template-columns:repeat(5,1fr)}ul.g69ZGQc9wey1u1beD0IP li{width:420px}}@media screen and (min-width:1025px){ul.g69ZGQc9wey1u1beD0IP li{width:320px}}.aWIwsRSR2EZlTGwFYt5J{transition:all .3s ease}.DzezAg6fdaIC26GPBCvD:not(:disabled):hover{transform:translateX(4px)}.buuFW6iZyD5Nnljxcxj8:not(:disabled):hover{transform:translateX(-4px)}.HeJe1crc9XaWWpLvIPit .components-modal__frame{border-bottom-right-radius:4px;border-right:4px solid #e68b28;border-top-right-radius:4px;max-height:100%}.HeJe1crc9XaWWpLvIPit .components-modal__content{margin-top:0;padding:0}.HeJe1crc9XaWWpLvIPit .components-modal__header{display:none}.HeJe1crc9XaWWpLvIPit .or0JUScxkJPmNsfrxkEK .jp-idc__idc-screen{border:0}.components-surface.components-card{border-radius:var(--jp-border-radius-rna)}.upsell-banner{background:#f9f9f6;background:linear-gradient(-133deg,#ced9f2,#f9f9f6 10%,#f9f9f6 80%,#f5e6b3);display:flex;flex-direction:column}@media screen and (min-width:660px){.upsell-banner{flex-direction:row}}.upsell-banner.components-card__body.components-card-body{border-radius:var(--jp-border-radius-rna);padding:36px}.upsell-banner .upsell-banner--icon{align-items:flex-start;display:flex;margin-bottom:16px;margin-left:0;margin-top:16px}@media screen and (min-width:660px){.upsell-banner .upsell-banner--icon{align-items:center;margin-bottom:0;margin-left:28px;margin-top:0}}.upsell-banner .upsell-banner--content{display:flex;flex:1;flex-direction:column;justify-content:space-between}@media screen and (min-width:660px){.upsell-banner .upsell-banner--content{flex-direction:row}}.upsell-banner .upsell-banner--content .upsell-banner--content-info{display:flex;flex-direction:column}.upsell-banner .upsell-banner--content .upsell-banner--content-info h3{font-size:1.5rem;font-weight:500;line-height:32px;margin:0}.upsell-banner .upsell-banner--content .upsell-banner--content-info p{font-size:1rem;margin:8px 0 0}.upsell-banner .upsell-banner--content .upsell-banner--content-cta{align-items:center;display:flex;flex-direction:row;margin-right:0;margin-top:16px}@media screen and (min-width:660px){.upsell-banner .upsell-banner--content .upsell-banner--content-cta{margin-right:16px;margin-top:0}}.upsell-banner .upsell-banner--content .upsell-banner--content-cta .upsell-banner--content-cta-button{box-shadow:inset 0 0 0 1.5px #000;font-weight:400;padding:8px 16px;white-space:nowrap}.upsell-banner .upsell-banner--content .upsell-banner--content-cta .upsell-banner--content-cta-button.secondary{background-color:var(--jp-white);color:var(--jp-black)}.upsell-banner .upsell-banner--content .upsell-banner--content-cta .upsell-banner--content-cta-button.primary{margin-right:8px}.yWUvvF4WJLNDSpMgBMfm{align-items:center;display:flex;flex-wrap:wrap;margin:0 auto;max-width:1128px}.ka1fVHj2HOkHjhdoEFOZ{display:grid;grid-gap:24px;grid-template-columns:repeat(4,1fr);margin:0 16px;width:100%}@media(min-width:600px){.ka1fVHj2HOkHjhdoEFOZ{grid-template-columns:repeat(8,1fr);margin:0 18px}}@media(min-width:960px){.ka1fVHj2HOkHjhdoEFOZ{grid-template-columns:repeat(12,1fr);margin:0 24px;max-width:1128px}}.JMOO4Y_9yhTO9lwLnRUx{grid-column-end:span 1}.PFDPAqk51qox_ChLqJwm{grid-column-end:span 2}.ault0jHVfWpShqOGooIP{grid-column-end:span 3}.GqpvdRzmzPJELtSm4FEN{grid-column-end:span 4}@media(min-width:600px){.Ym4_YneEGD_iZD6W1C2o{grid-column-end:span 1}.NbvHnnDtWw8n9BEUQ0Oy{grid-column-end:span 2}.ElMT7rhxe5ZJKO41MnhW{grid-column-end:span 3}.yKjnqjibn_wW_1tWWt5Q{grid-column-end:span 4}.Pb30lOcQFpzUX57GwflS{grid-column-end:span 5}.pC1wxc_R8y4pNILHsiiY{grid-column-end:span 6}.pChscSCnudQoWGjMFKI_{grid-column-end:span 7}.qw1H2gAgF3lDCI2Tbkmb{grid-column-end:span 8}}@media(min-width:960px){.VzcA_rrxBK3g4ozA0oD9{grid-column-end:span 1}.pNAa7O2adRZD8Slgk9iR{grid-column-end:span 2}.tlIMLlipexblj8CeOx4B{grid-column-end:span 3}.Dvt0u5l2Rr1BhBmvYAzl{grid-column-end:span 4}.BiUsgNTc0tyc7tC5jnzE{grid-column-end:span 5}.ulJXAsj7G2ROJ1g3_s28{grid-column-end:span 6}.HsoVlyVLsXYClx9Atox0{grid-column-end:span 7}.oXxjRQNNj2cfIpFBqC1W{grid-column-end:span 8}.qXgUn4Adg9xE_JnbuDio{grid-column-end:span 9}.xMpqTLiLfYFEJiRPQQQq{grid-column-end:span 10}.IiGo3Sz2FDZN7_eGElwA{grid-column-end:span 11}.Om8BNCjfgqQ_wmPQjfOY{grid-column-end:span 12}}@media(max-width:960px){.t10ZWzP7ADjJnR4tqxRS{display:none}}@media(max-width:600px){.eOUlZG8Pelh_Xj0aSoHG{display:none}}.l546LrwBEePz434NFK5Q{border:2px solid var(--jp-green-primary);border-radius:var(--jp-border-radius);display:block;margin:32px 0;padding:16px 24px 16px 64px;position:relative;text-decoration:none}.l546LrwBEePz434NFK5Q span{display:block}.l546LrwBEePz434NFK5Q span:last-of-type{font-weight:600}.l546LrwBEePz434NFK5Q:focus span:last-of-type,.l546LrwBEePz434NFK5Q:hover span:last-of-type{text-decoration:underline;text-decoration-thickness:var(--jp-underline-thickness)}.l546LrwBEePz434NFK5Q:focus:after,.l546LrwBEePz434NFK5Q:hover:after{transform:translateY(-50%) translateX(-8px)}.l546LrwBEePz434NFK5Q:after{color:var(--jp-green-primary);content:"→";font-size:24px;font-weight:600;left:24px;position:absolute;top:50%;transform:translateY(-50%);transition:transform .15s ease-out}.Q7w4fcEcemZ2nlwaYNog{fill:var(--jp-yellow-30)!important;display:inline-block!important;width:1.1em!important}.AoNQsOaTt6gSf0H6Yasz{display:inline-block;position:relative}.v13ZwGzUnecPA7Y3URAl{height:18px;pointer-events:none;position:absolute;right:-53px;top:0;width:124px}.EeDbu9pXFWTsCzfTpv2v{pointer-events:all}.BmSvoIi3rErkcrRiOi2W{color:var(--jp-black);font-size:16px;font-weight:600;line-height:19px}.BmSvoIi3rErkcrRiOi2W:not(:last-child){margin-bottom:8px}.mojRoVuWdDJo0E6LEjJw{font-size:14px;font-weight:400;line-height:24px}.golden-token-icon-tooltip .components-popover:not([data-y-axis=middle])[data-x-axis=left] .components-popover__content{margin-left:-62px}.golden-token-icon-tooltip .components-popover:not([data-y-axis=middle])[data-x-axis=right] .components-popover__content{margin-right:-62px}.golden-token-icon-tooltip .components-popover[data-y-axis=bottom] .components-popover__content{top:2px!important}.golden-token-icon-tooltip .components-popover:not(.is-without-arrow)[data-y-axis=bottom]:before{top:-6px!important}.golden-token-icon-tooltip .components-popover:not(.is-without-arrow)[data-y-axis=bottom]:after{top:-4px!important}.golden-token-icon-tooltip .components-popover[data-y-axis=top] .components-popover__content{bottom:10px!important}.golden-token-icon-tooltip .components-popover:not(.is-without-arrow)[data-y-axis=top]:before{bottom:3px}.golden-token-icon-tooltip .components-popover:not(.is-without-arrow)[data-y-axis=top]:after{bottom:4px}.golden-token-icon-tooltip .components-popover__content{border:1px solid var(--jp-gray);border-radius:4px;outline:none;padding:24px;white-space:normal;width:304px}.golden-token-icon-tooltip .components-button.is-link:focus:not(:disabled){box-shadow:none}.wiobThfXJCuhGNrbFIT6 a,.wiobThfXJCuhGNrbFIT6 a:active,.wiobThfXJCuhGNrbFIT6 a:hover{color:var(--jp-black)}.pm2EPQZx6p2VQSiiVCpX{margin-bottom:calc(var(--spacing-base)*3)}.VgAxgahF9bC2M__FiIgV{display:flex}.dbRwkMLqcMF67njPoAF7{margin-left:8px}.V8N_dXausMNmQUO_ROa1{color:var(--jp-red-60)}.jYhEGFLjpRv6QV1Ti7dQ{color:var(--jp-yellow-40)}.Doju0RxvvN9JS12mf489{line-height:calc(var(--spacing-base)*3);margin:0 0 var(--spacing-base) 0}:root{--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,161;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color)}.dataviews-wrapper{box-sizing:border-box;container:dataviews-wrapper/inline-size;display:flex;flex-direction:column;font-size:13px;height:100%;line-height:1.4;overflow:auto;scroll-padding-bottom:64px}.dataviews-filters__container,.dataviews__view-actions{box-sizing:border-box;flex-shrink:0;padding:16px 48px;position:sticky;right:0}@media not (prefers-reduced-motion){.dataviews-filters__container,.dataviews__view-actions{transition:padding .1s ease-out}}.dataviews-loading,.dataviews-no-results{align-items:center;display:flex;flex-grow:1;justify-content:center;padding:0 48px}@media not (prefers-reduced-motion){.dataviews-loading,.dataviews-no-results{transition:padding .1s ease-out}}@container (max-width: 430px){.dataviews-filters__container,.dataviews__view-actions{padding:12px 24px}.dataviews-loading,.dataviews-no-results{padding-left:24px;padding-right:24px}}.dataviews-title-field{font-size:13px;font-weight:500;width:100%}.dataviews-title-field,.dataviews-title-field a{color:#2f2f2f;text-overflow:ellipsis;white-space:nowrap}.dataviews-title-field a{display:block;flex-grow:0;overflow:hidden;text-decoration:none}.dataviews-title-field a:hover{color:var(--wp-admin-theme-color)}.dataviews-title-field a:focus{border-radius:2px;box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color,#007cba);color:var(--wp-admin-theme-color--rgb)}.dataviews-title-field button.components-button.is-link{color:#1e1e1e;display:block;font-weight:inherit;overflow:hidden;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;width:100%}.dataviews-title-field button.components-button.is-link:hover{color:var(--wp-admin-theme-color)}.dataviews-title-field--clickable{color:#2f2f2f;cursor:pointer}.dataviews-title-field--clickable:hover{color:var(--wp-admin-theme-color)}.dataviews-title-field--clickable:focus{border-radius:2px;box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color,#007cba);color:var(--wp-admin-theme-color--rgb)}.dataviews-bulk-actions-footer__item-count{color:#1e1e1e;font-size:11px;font-weight:500;text-transform:uppercase}.dataviews-bulk-actions-footer__container{margin-left:auto;min-height:32px}.dataviews-filters__button{position:relative}.dataviews-filters__container{padding-top:0}.dataviews-filters__reset-button.dataviews-filters__reset-button[aria-disabled=true],.dataviews-filters__reset-button.dataviews-filters__reset-button[aria-disabled=true]:hover{opacity:0}.dataviews-filters__reset-button.dataviews-filters__reset-button[aria-disabled=true]:focus{opacity:1}.dataviews-filters__summary-popover{font-size:13px;line-height:1.4}.dataviews-filters__summary-popover .components-popover__content{border-radius:4px;width:230px}.dataviews-filters__summary-popover.components-dropdown__content .components-popover__content{padding:0}.dataviews-filters__summary-operators-container{padding:8px 8px 0}.dataviews-filters__summary-operators-container:has(+.dataviews-filters__search-widget-listbox){border-bottom:1px solid #e0e0e0;padding-bottom:8px}.dataviews-filters__summary-operators-container:empty{display:none}.dataviews-filters__summary-operators-container .dataviews-filters__summary-operators-filter-name{color:#757575}.dataviews-filters__summary-chip-container{position:relative;white-space:pre-wrap}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip{align-items:center;background:#f0f0f0;border:1px solid transparent;border-radius:16px;box-sizing:border-box;color:#2f2f2f;cursor:pointer;display:flex;min-height:32px;padding:4px 12px;position:relative}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip.has-reset{padding-inline-end:28px}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip:focus-visible,.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip:hover,.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip[aria-expanded=true]{background:#e0e0e0;color:#1e1e1e}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip.has-values{background:rgba(var(--wp-admin-theme-color--rgb),.04);color:var(--wp-admin-theme-color)}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip.has-values:hover,.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip.has-values[aria-expanded=true]{background:rgba(var(--wp-admin-theme-color--rgb),.12)}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip:focus-visible{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:none}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip .dataviews-filters-__summary-filter-text-name{font-weight:500}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip-remove{align-items:center;background:transparent;border:0;border-radius:50%;cursor:pointer;display:flex;height:24px;justify-content:center;left:4px;padding:0;position:absolute;top:50%;transform:translateY(-50%);width:24px}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip-remove svg{fill:#757575}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip-remove:focus,.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip-remove:hover{background:#e0e0e0}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip-remove:focus svg,.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip-remove:hover svg{fill:#1e1e1e}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip-remove.has-values svg{fill:var(--wp-admin-theme-color)}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip-remove.has-values:hover{background:rgba(var(--wp-admin-theme-color--rgb),.08)}.dataviews-filters__summary-chip-container .dataviews-filters__summary-chip-remove:focus-visible{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:none}.dataviews-filters__search-widget-filter-combobox-list{border-top:1px solid #e0e0e0;max-height:184px;overflow:auto;padding:4px}.dataviews-filters__search-widget-filter-combobox-list .dataviews-filters__search-widget-filter-combobox-item-value [data-user-value]{font-weight:600}.dataviews-filters__search-widget-listbox{overflow:auto;padding:4px}.dataviews-filters__search-widget-listitem{align-items:center;border-radius:2px;box-sizing:border-box;cursor:default;display:flex;gap:8px;margin-block-end:2px;padding:8px 12px}.dataviews-filters__search-widget-listitem:last-child{margin-block-end:0}.dataviews-filters__search-widget-listitem:focus,.dataviews-filters__search-widget-listitem:hover,.dataviews-filters__search-widget-listitem[data-active-item]{background-color:var(--wp-admin-theme-color);color:#fff}.dataviews-filters__search-widget-listitem:focus .dataviews-filters__search-widget-listitem-check,.dataviews-filters__search-widget-listitem:hover .dataviews-filters__search-widget-listitem-check,.dataviews-filters__search-widget-listitem[data-active-item] .dataviews-filters__search-widget-listitem-check{fill:#fff}.dataviews-filters__search-widget-listitem:focus .dataviews-filters__search-widget-listitem-description,.dataviews-filters__search-widget-listitem:hover .dataviews-filters__search-widget-listitem-description,.dataviews-filters__search-widget-listitem[data-active-item] .dataviews-filters__search-widget-listitem-description{color:#fff}.dataviews-filters__search-widget-listitem .dataviews-filters__search-widget-listitem-check{flex-shrink:0;height:24px;width:24px}.dataviews-filters__search-widget-listitem .dataviews-filters__search-widget-listitem-description{color:#757575;display:block;font-size:12px;line-height:16px;overflow:hidden;text-overflow:ellipsis}.dataviews-filters__search-widget-filter-combobox__wrapper{padding:8px;position:relative}.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input{background:#f0f0f0;border:none;border-radius:2px;box-shadow:0 0 0 transparent;display:block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;height:32px;line-height:normal;margin-left:0;margin-right:0;padding:0 8px 0 32px;width:100%}@media not (prefers-reduced-motion){.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input{transition:box-shadow .1s linear}}@media(min-width:600px){.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input{font-size:13px;line-height:normal}}.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input:focus{border-color:var(--wp-admin-theme-color);box-shadow:0 0 0 .5px var(--wp-admin-theme-color);outline:2px solid transparent}.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input::-webkit-input-placeholder{color:rgba(30,30,30,.62)}.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input::-moz-placeholder{color:rgba(30,30,30,.62)}.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input:-ms-input-placeholder{color:rgba(30,30,30,.62)}@media(min-width:600px){.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input{font-size:13px}}.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input:focus{background:#fff;box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color)}.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input::placeholder{color:#757575}.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input::-webkit-search-cancel-button,.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input::-webkit-search-decoration,.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input::-webkit-search-results-button,.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__input::-webkit-search-results-decoration{-webkit-appearance:none}.dataviews-filters__search-widget-filter-combobox__wrapper .dataviews-filters__search-widget-filter-combobox__icon{align-items:center;display:flex;justify-content:center;left:12px;position:absolute;top:50%;transform:translateY(-50%);width:24px}.dataviews-filters__container-visibility-toggle{flex-shrink:0;position:relative}.dataviews-filters-toggle__count{background:var(--wp-admin-theme-color,#3858e9);border-radius:8px;box-sizing:border-box;color:#fff;font-size:11px;height:16px;left:0;line-height:16px;min-width:16px;outline:var(--wp-admin-border-width-focus) solid #fff;padding:0 4px;position:absolute;text-align:center;top:0;transform:translate(-50%,-50%)}.dataviews-search{width:fit-content}.dataviews-footer{background-color:#fff;border-top:1px solid #f0f0f0;bottom:0;flex-shrink:0;padding:12px 48px;position:sticky;right:0;z-index:2}@media not (prefers-reduced-motion){.dataviews-footer{transition:padding .1s ease-out}}@container (max-width: 430px){.dataviews-footer{padding:12px 24px}}@container (max-width: 560px){.dataviews-footer{flex-direction:column!important}.dataviews-footer .dataviews-bulk-actions-footer__container{width:100%}.dataviews-footer .dataviews-bulk-actions-footer__item-count{flex-grow:1}.dataviews-footer .dataviews-pagination{justify-content:space-between;width:100%}}.dataviews-pagination__page-select{font-size:11px;font-weight:500;text-transform:uppercase}@media(min-width:600px){.dataviews-pagination__page-select .components-select-control__input{font-size:11px!important;font-weight:500}}.dataviews-action-modal{z-index:1000001}.dataviews-selection-checkbox{--checkbox-input-size:24px;flex-shrink:0;line-height:0}@media(min-width:600px){.dataviews-selection-checkbox{--checkbox-input-size:16px}}.dataviews-selection-checkbox .components-checkbox-control__input-container{margin:0}.dataviews-view-config{container-type:inline-size;font-size:13px;line-height:1.4;width:320px}.dataviews-config__popover.is-expanded .dataviews-config__popover-content-wrapper{height:100%;overflow-y:scroll}.dataviews-config__popover.is-expanded .dataviews-config__popover-content-wrapper .dataviews-view-config{width:auto}.dataviews-view-config__sort-direction .components-toggle-group-control-option-base{text-transform:uppercase}.dataviews-settings-section__title.dataviews-settings-section__title{font-size:15px;line-height:24px}.dataviews-settings-section__sidebar{grid-column:span 4}.dataviews-settings-section__content,.dataviews-settings-section__content>*{grid-column:span 8}.dataviews-settings-section__content .is-divided-in-two{display:contents}.dataviews-settings-section__content .is-divided-in-two>*{grid-column:span 4}.dataviews-settings-section:has(.dataviews-settings-section__content:empty){display:none}@container (max-width: 500px){.dataviews-settings-section.dataviews-settings-section{grid-template-columns:repeat(2,1fr)}.dataviews-settings-section.dataviews-settings-section .dataviews-settings-section__content,.dataviews-settings-section.dataviews-settings-section .dataviews-settings-section__sidebar{grid-column:span 2}}.dataviews-field-control__field{height:32px}.dataviews-field-control__actions{position:absolute;top:-9999em}.dataviews-field-control__actions.dataviews-field-control__actions{gap:4px}.dataviews-field-control__field.is-interacting .dataviews-field-control__actions,.dataviews-field-control__field:focus-within .dataviews-field-control__actions,.dataviews-field-control__field:hover .dataviews-field-control__actions{position:unset;top:unset}.dataviews-field-control__icon{display:flex;width:24px}.dataviews-field-control__label-sub-label-container{flex-grow:1}.dataviews-field-control__label{display:block}.dataviews-field-control__sub-label{color:#757575;font-size:11px;font-style:normal;margin-bottom:0;margin-top:8px}.dataviews-view-grid{container-type:inline-size;grid-template-rows:max-content;margin-bottom:auto;padding:0 48px 24px}@media not (prefers-reduced-motion){.dataviews-view-grid{transition:padding .1s ease-out}}.dataviews-view-grid .dataviews-view-grid__card{height:100%;justify-content:flex-start;position:relative}.dataviews-view-grid .dataviews-view-grid__card .dataviews-view-grid__title-actions{padding:8px 0 4px}.dataviews-view-grid .dataviews-view-grid__card .dataviews-view-grid__title-field{align-items:center;display:flex;min-height:24px}.dataviews-view-grid .dataviews-view-grid__card .dataviews-view-grid__title-field--clickable{width:fit-content}.dataviews-view-grid .dataviews-view-grid__card.is-selected .dataviews-view-grid__fields .dataviews-view-grid__field .dataviews-view-grid__field-value{color:#1e1e1e}.dataviews-view-grid .dataviews-view-grid__card .dataviews-view-grid__media:focus:after,.dataviews-view-grid .dataviews-view-grid__card.is-selected .dataviews-view-grid__media:after{background-color:rgba(var(--wp-admin-theme-color--rgb),.08)}.dataviews-view-grid .dataviews-view-grid__card.is-selected .dataviews-view-grid__media:after{box-shadow:inset 0 0 0 1px var(--wp-admin-theme-color)}.dataviews-view-grid .dataviews-view-grid__card .dataviews-view-grid__media:focus:after{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color)}.dataviews-view-grid .dataviews-view-grid__media{aspect-ratio:1/1;background-color:#f0f0f0;border-radius:4px;min-height:200px;position:relative;width:100%}.dataviews-view-grid .dataviews-view-grid__media img{height:100%;object-fit:cover;width:100%}.dataviews-view-grid .dataviews-view-grid__media:after{border-radius:4px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);content:"";height:100%;pointer-events:none;position:absolute;right:0;top:0;width:100%}.dataviews-view-grid .dataviews-view-grid__fields{font-size:12px;line-height:16px;position:relative}.dataviews-view-grid .dataviews-view-grid__fields:not(:empty){padding:0 0 12px}.dataviews-view-grid .dataviews-view-grid__fields .dataviews-view-grid__field-value:not(:empty){line-height:20px;min-height:24px;padding-top:2px}.dataviews-view-grid .dataviews-view-grid__fields .dataviews-view-grid__field{align-items:center;min-height:24px}.dataviews-view-grid .dataviews-view-grid__fields .dataviews-view-grid__field .dataviews-view-grid__field-name{color:#757575;width:35%}.dataviews-view-grid .dataviews-view-grid__fields .dataviews-view-grid__field .dataviews-view-grid__field-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:65%}.dataviews-view-grid .dataviews-view-grid__fields .dataviews-view-grid__field:not(:has(.dataviews-view-grid__field-value:not(:empty))){display:none}.dataviews-view-grid .dataviews-view-grid__badge-fields:not(:empty){padding-bottom:12px}@container (max-width: 480px){.dataviews-view-grid.dataviews-view-grid{grid-template-columns:repeat(1,minmax(0,1fr));padding-left:24px;padding-right:24px}}@container (min-width: 480px){.dataviews-view-grid.dataviews-view-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (min-width: 780px){.dataviews-view-grid.dataviews-view-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@container (min-width: 1140px){.dataviews-view-grid.dataviews-view-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@container (min-width: 1520px){.dataviews-view-grid.dataviews-view-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}.dataviews-view-grid__field-value:empty,.dataviews-view-grid__field:empty{display:none}.dataviews-view-grid__card .dataviews-selection-checkbox{position:absolute;right:8px;top:-9999em;z-index:1}.dataviews-view-grid__card.is-selected .dataviews-selection-checkbox,.dataviews-view-grid__card:focus-within .dataviews-selection-checkbox,.dataviews-view-grid__card:hover .dataviews-selection-checkbox{top:8px}.dataviews-view-grid__media--clickable{cursor:pointer}div.dataviews-view-list{list-style-type:none}.dataviews-view-list{margin:0 0 auto}.dataviews-view-list div[role=row]{border-top:1px solid #f0f0f0;margin:0}.dataviews-view-list div[role=row] .dataviews-view-list__item-wrapper{box-sizing:border-box;padding:16px 24px;position:relative}.dataviews-view-list div[role=row] .dataviews-view-list__item-actions{flex:0;overflow:hidden}.dataviews-view-list div[role=row] .dataviews-view-list__item-actions>div{height:24px}.dataviews-view-list div[role=row] .dataviews-view-list__item-actions .components-button{opacity:0;position:relative;z-index:1}.dataviews-view-list div[role=row]:where(.is-selected,.is-hovered,:focus-within) .dataviews-view-list__item-actions{flex-basis:min-content;overflow:unset;padding-inline-end:4px}.dataviews-view-list div[role=row]:where(.is-selected,.is-hovered,:focus-within) .dataviews-view-list__item-actions .components-button{opacity:1}.dataviews-view-list div[role=row].is-selected.is-selected,.dataviews-view-list div[role=row].is-selected.is-selected+div[role=row]{border-top:1px solid rgba(var(--wp-admin-theme-color--rgb),.12)}.dataviews-view-list div[role=row]:not(.is-selected) .dataviews-view-list__title-field{color:#1e1e1e}.dataviews-view-list div[role=row]:not(.is-selected).is-hovered,.dataviews-view-list div[role=row]:not(.is-selected):focus-within,.dataviews-view-list div[role=row]:not(.is-selected):hover{background-color:#f8f8f8;color:var(--wp-admin-theme-color)}.dataviews-view-list div[role=row]:not(.is-selected).is-hovered .dataviews-view-list__fields,.dataviews-view-list div[role=row]:not(.is-selected).is-hovered .dataviews-view-list__title-field,.dataviews-view-list div[role=row]:not(.is-selected):focus-within .dataviews-view-list__fields,.dataviews-view-list div[role=row]:not(.is-selected):focus-within .dataviews-view-list__title-field,.dataviews-view-list div[role=row]:not(.is-selected):hover .dataviews-view-list__fields,.dataviews-view-list div[role=row]:not(.is-selected):hover .dataviews-view-list__title-field{color:var(--wp-admin-theme-color)}.dataviews-view-list div[role=row].is-selected .dataviews-view-list__item-wrapper,.dataviews-view-list div[role=row].is-selected:focus-within .dataviews-view-list__item-wrapper{background-color:rgba(var(--wp-admin-theme-color--rgb),.04);color:#1e1e1e}.dataviews-view-list div[role=row].is-selected .dataviews-view-list__item-wrapper .dataviews-view-list__fields,.dataviews-view-list div[role=row].is-selected .dataviews-view-list__item-wrapper .dataviews-view-list__title-field,.dataviews-view-list div[role=row].is-selected:focus-within .dataviews-view-list__item-wrapper .dataviews-view-list__fields,.dataviews-view-list div[role=row].is-selected:focus-within .dataviews-view-list__item-wrapper .dataviews-view-list__title-field{color:var(--wp-admin-theme-color)}.dataviews-view-list .dataviews-view-list__item{appearance:none;background:none;border:none;cursor:pointer;inset:0;padding:0;position:absolute;scroll-margin:8px 0;z-index:1}.dataviews-view-list .dataviews-view-list__item:focus-visible{outline:none}.dataviews-view-list .dataviews-view-list__item:focus-visible:before{border-radius:2px;box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);content:"";inset:var(--wp-admin-border-width-focus);outline:2px solid transparent;position:absolute}.dataviews-view-list .dataviews-view-list__title-field{flex:1;line-height:24px;min-height:24px;overflow:hidden}.dataviews-view-list .dataviews-view-list__title-field:has(a,button){z-index:1}.dataviews-view-list .dataviews-view-list__media-wrapper{background-color:#f0f0f0;border-radius:4px;flex-shrink:0;height:52px;overflow:hidden;position:relative;width:52px}.dataviews-view-list .dataviews-view-list__media-wrapper img{height:100%;object-fit:cover;width:100%}.dataviews-view-list .dataviews-view-list__media-wrapper:after{border-radius:4px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);content:"";height:100%;position:absolute;right:0;top:0;width:100%}.dataviews-view-list .dataviews-view-list__field-wrapper{flex-grow:1;min-height:52px}.dataviews-view-list .dataviews-view-list__fields{color:#757575;display:flex;flex-wrap:wrap;font-size:12px;gap:12px;row-gap:4px}.dataviews-view-list .dataviews-view-list__fields:empty{display:none}.dataviews-view-list .dataviews-view-list__fields .dataviews-view-list__field:has(.dataviews-view-list__field-value:empty){display:none}.dataviews-view-list .dataviews-view-list__fields .dataviews-view-list__field-value{align-items:center;display:flex;line-height:20px;min-height:24px}.dataviews-view-list+.dataviews-pagination{justify-content:space-between}.dataviews-view-table{border-collapse:collapse;border-color:inherit;color:#757575;margin-bottom:auto;position:relative;text-indent:0;width:100%}.dataviews-view-table th{color:#1e1e1e;font-size:13px;font-weight:400;text-align:right}.dataviews-view-table td,.dataviews-view-table th{padding:12px;white-space:nowrap}.dataviews-view-table td.dataviews-view-table__actions-column,.dataviews-view-table th.dataviews-view-table__actions-column{text-align:left}.dataviews-view-table td.dataviews-view-table__checkbox-column,.dataviews-view-table th.dataviews-view-table__checkbox-column{padding-left:0;width:1%}.dataviews-view-table tr{border-top:1px solid #f0f0f0}.dataviews-view-table tr .dataviews-view-table-header-button{gap:4px}.dataviews-view-table tr td:first-child,.dataviews-view-table tr th:first-child{padding-right:48px}.dataviews-view-table tr td:first-child .dataviews-view-table-header-button,.dataviews-view-table tr th:first-child .dataviews-view-table-header-button{margin-right:-8px}.dataviews-view-table tr td:last-child,.dataviews-view-table tr th:last-child{padding-left:48px}.dataviews-view-table tr:last-child{border-bottom:0}.dataviews-view-table tr.is-hovered{background-color:#f8f8f8}.dataviews-view-table tr .components-checkbox-control__input.components-checkbox-control__input{opacity:0}.dataviews-view-table tr .components-checkbox-control__input.components-checkbox-control__input:checked,.dataviews-view-table tr .components-checkbox-control__input.components-checkbox-control__input:focus,.dataviews-view-table tr .components-checkbox-control__input.components-checkbox-control__input:indeterminate{opacity:1}.dataviews-view-table tr .dataviews-item-actions .components-button:not(.dataviews-all-actions-button){opacity:0}.dataviews-view-table tr.is-hovered .components-checkbox-control__input,.dataviews-view-table tr.is-hovered .dataviews-item-actions .components-button:not(.dataviews-all-actions-button),.dataviews-view-table tr:focus-within .components-checkbox-control__input,.dataviews-view-table tr:focus-within .dataviews-item-actions .components-button:not(.dataviews-all-actions-button),.dataviews-view-table tr:hover .components-checkbox-control__input,.dataviews-view-table tr:hover .dataviews-item-actions .components-button:not(.dataviews-all-actions-button){opacity:1}@media(hover:none){.dataviews-view-table tr .components-checkbox-control__input.components-checkbox-control__input,.dataviews-view-table tr .dataviews-item-actions .components-button:not(.dataviews-all-actions-button){opacity:1}}.dataviews-view-table tr.is-selected{background-color:rgba(var(--wp-admin-theme-color--rgb),.04);color:#757575}.dataviews-view-table tr.is-selected,.dataviews-view-table tr.is-selected+tr{border-top:1px solid rgba(var(--wp-admin-theme-color--rgb),.12)}.dataviews-view-table tr.is-selected:hover{background-color:rgba(var(--wp-admin-theme-color--rgb),.08)}.dataviews-view-table thead{inset-block-start:0;position:sticky;z-index:1}.dataviews-view-table thead tr{border:0}.dataviews-view-table thead th{background-color:#fff;font-size:11px;font-weight:500;padding-bottom:8px;padding-right:12px;padding-top:8px;text-transform:uppercase}.dataviews-view-table thead th:has(.dataviews-view-table-header-button):not(:first-child){padding-right:4px}.dataviews-view-table tbody td{vertical-align:top}.dataviews-view-table tbody .dataviews-view-table__cell-content-wrapper{align-items:center;display:flex;min-height:32px}.dataviews-view-table tbody .components-v-stack>.dataviews-view-table__cell-content-wrapper:not(:first-child){min-height:0}.dataviews-view-table .dataviews-view-table-header-button{font-size:11px;font-weight:500;padding:4px 8px;text-transform:uppercase}.dataviews-view-table .dataviews-view-table-header-button:not(:hover){color:#1e1e1e}.dataviews-view-table .dataviews-view-table-header-button span{speak:none}.dataviews-view-table .dataviews-view-table-header-button span:empty{display:none}.dataviews-view-table .dataviews-view-table-header{padding-right:4px}.dataviews-view-table .dataviews-view-table__actions-column{width:1%}.dataviews-view-table:has(tr.is-selected) .components-checkbox-control__input{opacity:1}.dataviews-view-table.has-compact-density thead th:has(.dataviews-view-table-header-button):not(:first-child){padding-right:0}.dataviews-view-table.has-compact-density td,.dataviews-view-table.has-compact-density th{padding:4px 8px}.dataviews-view-table.has-comfortable-density td,.dataviews-view-table.has-comfortable-density th{padding:16px 12px}.dataviews-view-table.has-comfortable-density td.dataviews-view-table__checkbox-column,.dataviews-view-table.has-comfortable-density th.dataviews-view-table__checkbox-column,.dataviews-view-table.has-compact-density td.dataviews-view-table__checkbox-column,.dataviews-view-table.has-compact-density th.dataviews-view-table__checkbox-column{padding-left:0}@container (max-width: 430px){.dataviews-view-table tr td:first-child,.dataviews-view-table tr th:first-child{padding-right:24px}.dataviews-view-table tr td:last-child,.dataviews-view-table tr th:last-child{padding-left:24px}}.dataviews-view-table-selection-checkbox{--checkbox-input-size:24px}@media(min-width:600px){.dataviews-view-table-selection-checkbox{--checkbox-input-size:16px}}.dataviews-column-primary__media{max-width:60px}.dataviews-controls__datetime{border:none;padding:0}.dataforms-layouts-panel__field{align-items:flex-start!important;justify-content:flex-start!important;min-height:32px;width:100%}.dataforms-layouts-panel__field-label{align-items:center;display:flex;flex-shrink:0;hyphens:auto;line-height:20px;min-height:32px;padding:6px 0;width:38%}.dataforms-layouts-panel__field-control{align-items:center;display:flex;flex-grow:1;min-height:32px}.dataforms-layouts-panel__field-control .components-button{max-width:100%;min-height:32px;text-align:right;text-wrap:balance;text-wrap:pretty;white-space:normal}.dataforms-layouts-panel__field-control .components-dropdown{max-width:100%}.dataforms-layouts-panel__field-dropdown .components-popover__content{min-width:320px;padding:16px}.dataforms-layouts-panel__dropdown-header{margin-bottom:16px}.components-popover.components-dropdown__content.dataforms-layouts-panel__field-dropdown{z-index:159990}.dataforms-layouts-regular__field{align-items:flex-start!important;justify-content:flex-start!important;min-height:32px;width:100%}.dataforms-layouts-regular__field .components-base-control__label{font-size:inherit;font-weight:400;text-transform:none}.dataforms-layouts-regular__field-label{align-items:center;display:flex;flex-shrink:0;hyphens:auto;line-height:20px;min-height:32px;padding:6px 0;width:38%}.dataforms-layouts-regular__field-control{align-items:center;display:flex;flex-grow:1;min-height:32px}:root{--wp-admin-theme-color:#3858e9;--wp-admin-theme-color--rgb:56,88,233;--wp-admin-theme-color-darker-10:#2145e6;--wp-admin-theme-color-darker-10--rgb:33,69,230;--wp-admin-theme-color-darker-20:#183ad6;--wp-admin-theme-color-darker-20--rgb:24,58,214;--wp-admin-border-width-focus:2px}@media(min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}@media not (prefers-reduced-motion){.components-animate__appear{animation:components-animate__appear-animation .1s cubic-bezier(0,0,.2,1) 0s;animation-fill-mode:forwards}}.components-animate__appear.is-from-top,.components-animate__appear.is-from-top.is-from-left{transform-origin:top right}.components-animate__appear.is-from-top.is-from-right{transform-origin:top left}.components-animate__appear.is-from-bottom,.components-animate__appear.is-from-bottom.is-from-left{transform-origin:bottom right}.components-animate__appear.is-from-bottom.is-from-right{transform-origin:bottom left}@keyframes components-animate__appear-animation{0%{transform:translateY(-2em) scaleY(0) scaleX(0)}to{transform:translateY(0) scaleY(1) scaleX(1)}}@media not (prefers-reduced-motion){.components-animate__slide-in{animation:components-animate__slide-in-animation .1s cubic-bezier(0,0,.2,1);animation-fill-mode:forwards}.components-animate__slide-in.is-from-left{transform:translateX(-100%)}.components-animate__slide-in.is-from-right{transform:translateX(100%)}}@keyframes components-animate__slide-in-animation{to{transform:translateX(0)}}@media not (prefers-reduced-motion){.components-animate__loading{animation:components-animate__loading 1.6s ease-in-out infinite}}@keyframes components-animate__loading{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}.components-autocomplete__popover .components-popover__content{min-width:200px;padding:8px}.components-autocomplete__result.components-button{display:flex;height:auto;min-height:36px;text-align:right;width:100%}.components-autocomplete__result.components-button:focus:not(:disabled){box-shadow:inset 0 0 0 1px #fff,0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid transparent}.components-badge{align-items:center;background-color:color-mix(in srgb,#fff 90%,var(--base-color));border-radius:2px;box-sizing:border-box;color:color-mix(in srgb,#000 50%,var(--base-color));display:inline-flex;font-size:12px;font-weight:400;gap:2px;line-height:20px;max-width:100%;min-height:24px;padding:0 8px}.components-badge *,.components-badge :after,.components-badge :before{box-sizing:inherit}.components-badge:where(.is-default){background-color:#f0f0f0;color:#2f2f2f}.components-badge.has-icon{padding-inline-start:4px}.components-badge.is-info{--base-color:#3858e9}.components-badge.is-warning{--base-color:#f0b849}.components-badge.is-error{--base-color:#cc1818}.components-badge.is-success{--base-color:#4ab866}.components-badge__icon{flex-shrink:0}.components-badge__content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.components-button-group{display:inline-block}.components-button-group .components-button{border-radius:0;box-shadow:inset 0 0 0 1px #1e1e1e;color:#1e1e1e;display:inline-flex}.components-button-group .components-button+.components-button{margin-right:-1px}.components-button-group .components-button:first-child{border-radius:0 2px 2px 0}.components-button-group .components-button:last-child{border-radius:2px 0 0 2px}.components-button-group .components-button.is-primary,.components-button-group .components-button:focus{position:relative;z-index:1}.components-button-group .components-button.is-primary{box-shadow:inset 0 0 0 1px #1e1e1e}.components-button{align-items:center;-webkit-appearance:none;background:none;border:0;border-radius:2px;box-sizing:border-box;color:var(--wp-components-color-foreground,#1e1e1e);cursor:pointer;display:inline-flex;font-family:inherit;font-size:13px;height:36px;margin:0;padding:6px 12px;text-decoration:none}@media not (prefers-reduced-motion){.components-button{transition:box-shadow .1s linear}}.components-button.is-next-40px-default-size{height:40px}.components-button:hover:not(:disabled,[aria-disabled=true]),.components-button[aria-expanded=true]{color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-button:focus:not(:disabled){box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));outline:3px solid transparent}.components-button.is-primary{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));color:var(--wp-components-color-accent-inverted,#fff);outline:1px solid transparent;text-decoration:none;text-shadow:none;white-space:nowrap}.components-button.is-primary:hover:not(:disabled){background:var(--wp-components-color-accent-darker-10,var(--wp-admin-theme-color-darker-10,#2145e6));color:var(--wp-components-color-accent-inverted,#fff)}.components-button.is-primary:active:not(:disabled){background:var(--wp-components-color-accent-darker-20,var(--wp-admin-theme-color-darker-20,#183ad6));border-color:var(--wp-components-color-accent-darker-20,var(--wp-admin-theme-color-darker-20,#183ad6));color:var(--wp-components-color-accent-inverted,#fff)}.components-button.is-primary:focus:not(:disabled){box-shadow:inset 0 0 0 1px var(--wp-components-color-background,#fff),0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-button.is-primary:disabled,.components-button.is-primary:disabled:active:enabled,.components-button.is-primary[aria-disabled=true],.components-button.is-primary[aria-disabled=true]:active:enabled,.components-button.is-primary[aria-disabled=true]:enabled{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));border-color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));color:hsla(0,0%,100%,.4);outline:none}.components-button.is-primary:disabled:active:enabled:focus:enabled,.components-button.is-primary:disabled:focus:enabled,.components-button.is-primary[aria-disabled=true]:active:enabled:focus:enabled,.components-button.is-primary[aria-disabled=true]:enabled:focus:enabled,.components-button.is-primary[aria-disabled=true]:focus:enabled{box-shadow:inset 0 0 0 1px var(--wp-components-color-background,#fff),0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-button.is-primary.is-busy,.components-button.is-primary.is-busy:disabled,.components-button.is-primary.is-busy[aria-disabled=true]{background-image:linear-gradient(45deg,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)) 33%,var(--wp-components-color-accent-darker-20,var(--wp-admin-theme-color-darker-20,#183ad6)) 33%,var(--wp-components-color-accent-darker-20,var(--wp-admin-theme-color-darker-20,#183ad6)) 70%,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)) 70%);background-size:100px 100%;border-color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));color:var(--wp-components-color-accent-inverted,#fff)}.components-button.is-secondary,.components-button.is-tertiary{outline:1px solid transparent}.components-button.is-secondary:active:not(:disabled),.components-button.is-tertiary:active:not(:disabled){box-shadow:none}.components-button.is-secondary:disabled,.components-button.is-secondary[aria-disabled=true],.components-button.is-secondary[aria-disabled=true]:hover,.components-button.is-tertiary:disabled,.components-button.is-tertiary[aria-disabled=true],.components-button.is-tertiary[aria-disabled=true]:hover{background:transparent;color:#949494;transform:none}.components-button.is-secondary{background:transparent;box-shadow:inset 0 0 0 1px var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)),0 0 0 currentColor;color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));outline:1px solid transparent;white-space:nowrap}.components-button.is-secondary:hover:not(:disabled,[aria-disabled=true],.is-pressed){background:color-mix(in srgb,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)) 4%,transparent);box-shadow:inset 0 0 0 1px var(--wp-components-color-accent-darker-20,var(--wp-admin-theme-color-darker-20,#183ad6));color:var(--wp-components-color-accent-darker-20,var(--wp-admin-theme-color-darker-20,#183ad6))}.components-button.is-secondary:disabled:not(:focus),.components-button.is-secondary[aria-disabled=true]:hover:not(:focus),.components-button.is-secondary[aria-disabled=true]:not(:focus){box-shadow:inset 0 0 0 1px #ddd}.components-button.is-secondary:focus:not(:disabled){box-shadow:0 0 0 currentColor inset,0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-button.is-tertiary{background:transparent;color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));white-space:nowrap}.components-button.is-tertiary:hover:not(:disabled,[aria-disabled=true]){background:color-mix(in srgb,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)) 4%,transparent);color:var(--wp-components-color-accent-darker-20,var(--wp-admin-theme-color-darker-20,#183ad6))}.components-button.is-tertiary:active:not(:disabled,[aria-disabled=true]){background:color-mix(in srgb,var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)) 8%,transparent)}p+.components-button.is-tertiary{margin-right:-6px}.components-button.is-tertiary:disabled:not(:focus),.components-button.is-tertiary[aria-disabled=true]:hover:not(:focus),.components-button.is-tertiary[aria-disabled=true]:not(:focus){box-shadow:none;outline:none}.components-button.is-destructive{--wp-components-color-accent:#cc1818;--wp-components-color-accent-darker-10:#9e1313;--wp-components-color-accent-darker-20:#710d0d}.components-button.is-destructive:not(.is-primary):not(.is-secondary):not(.is-tertiary):not(.is-link){color:#cc1818}.components-button.is-destructive:not(.is-primary):not(.is-secondary):not(.is-tertiary):not(.is-link):hover:not(:disabled,[aria-disabled=true]){color:#710d0d}.components-button.is-destructive:not(.is-primary):not(.is-secondary):not(.is-tertiary):not(.is-link):focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) #cc1818}.components-button.is-destructive:not(.is-primary):not(.is-secondary):not(.is-tertiary):not(.is-link):active:not(:disabled,[aria-disabled=true]){background:#ccc}.components-button.is-destructive:not(.is-primary):not(.is-secondary):not(.is-tertiary):not(.is-link):disabled,.components-button.is-destructive:not(.is-primary):not(.is-secondary):not(.is-tertiary):not(.is-link)[aria-disabled=true]{color:#949494}.components-button.is-destructive.is-secondary:hover:not(:disabled,[aria-disabled=true]),.components-button.is-destructive.is-tertiary:hover:not(:disabled,[aria-disabled=true]){background:rgba(204,24,24,.04)}.components-button.is-destructive.is-secondary:active:not(:disabled,[aria-disabled=true]),.components-button.is-destructive.is-tertiary:active:not(:disabled,[aria-disabled=true]){background:rgba(204,24,24,.08)}.components-button.is-link{background:none;border:0;border-radius:0;box-shadow:none;color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));height:auto;margin:0;outline:none;padding:0;text-align:right;text-decoration:underline}@media not (prefers-reduced-motion){.components-button.is-link{transition-duration:.05s;transition-property:border,background,color;transition-timing-function:ease-in-out}}.components-button.is-link:focus{border-radius:2px}.components-button.is-link:disabled,.components-button.is-link[aria-disabled=true]{color:#949494}.components-button:not(:disabled,[aria-disabled=true]):active{color:var(--wp-components-color-foreground,#1e1e1e)}.components-button:disabled,.components-button[aria-disabled=true]{color:#949494;cursor:default}.components-button.is-busy,.components-button.is-secondary.is-busy,.components-button.is-secondary.is-busy:disabled,.components-button.is-secondary.is-busy[aria-disabled=true]{background-image:linear-gradient(45deg,#fafafa 33%,#e0e0e0 0,#e0e0e0 70%,#fafafa 0);background-size:100px 100%}@media not (prefers-reduced-motion){.components-button.is-busy,.components-button.is-secondary.is-busy,.components-button.is-secondary.is-busy:disabled,.components-button.is-secondary.is-busy[aria-disabled=true]{animation:components-button__busy-animation 2.5s linear infinite}}.components-button.is-compact{height:32px}.components-button.is-compact.has-icon:not(.has-text){min-width:32px;padding:0;width:32px}.components-button.is-small{font-size:11px;height:24px;line-height:22px;padding:0 8px}.components-button.is-small.has-icon:not(.has-text){min-width:24px;padding:0;width:24px}.components-button.has-icon{justify-content:center;min-width:36px;padding:6px}.components-button.has-icon.is-next-40px-default-size{min-width:40px}.components-button.has-icon .dashicon{align-items:center;box-sizing:content-box;display:inline-flex;justify-content:center;padding:2px}.components-button.has-icon.has-text{gap:4px;justify-content:start;padding-left:12px;padding-right:8px}.components-button.is-pressed,.components-button.is-pressed:hover{color:var(--wp-components-color-foreground-inverted,#fff)}.components-button.is-pressed:hover:not(:disabled,[aria-disabled=true]),.components-button.is-pressed:not(:disabled,[aria-disabled=true]){background:var(--wp-components-color-foreground,#1e1e1e)}.components-button.is-pressed:disabled,.components-button.is-pressed[aria-disabled=true]{color:#949494}.components-button.is-pressed:disabled:not(.is-primary):not(.is-secondary):not(.is-tertiary),.components-button.is-pressed[aria-disabled=true]:not(.is-primary):not(.is-secondary):not(.is-tertiary){background:#949494;color:var(--wp-components-color-foreground-inverted,#fff)}.components-button.is-pressed:focus:not(:disabled){box-shadow:inset 0 0 0 1px var(--wp-components-color-background,#fff),0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));outline:2px solid transparent}.components-button svg{fill:currentColor;outline:none}@media(forced-colors:active){.components-button svg{fill:CanvasText}}.components-button .components-visually-hidden{height:auto}@keyframes components-button__busy-animation{0%{background-position:200px 0}}.components-checkbox-control{--checkbox-input-size:24px;--checkbox-input-margin:8px}@media(min-width:600px){.components-checkbox-control{--checkbox-input-size:16px}}.components-checkbox-control__label{cursor:pointer;line-height:var(--checkbox-input-size)}.components-checkbox-control__input[type=checkbox]{appearance:none;background:#fff;border:1px solid #1e1e1e;border-radius:2px;box-shadow:0 0 0 transparent;clear:none;color:#1e1e1e;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;height:var(--checkbox-input-size);line-height:normal;line-height:0;margin:0 0 0 4px;outline:0;padding:6px 8px;padding:0!important;text-align:center;transition:none;vertical-align:top;width:var(--checkbox-input-size)}@media not (prefers-reduced-motion){.components-checkbox-control__input[type=checkbox]{transition:box-shadow .1s linear}}@media(min-width:600px){.components-checkbox-control__input[type=checkbox]{font-size:13px;line-height:normal}}.components-checkbox-control__input[type=checkbox]:focus{border-color:var(--wp-admin-theme-color);box-shadow:0 0 0 .5px var(--wp-admin-theme-color)}.components-checkbox-control__input[type=checkbox]::-webkit-input-placeholder{color:rgba(30,30,30,.62)}.components-checkbox-control__input[type=checkbox]::-moz-placeholder{color:rgba(30,30,30,.62)}.components-checkbox-control__input[type=checkbox]:-ms-input-placeholder{color:rgba(30,30,30,.62)}.components-checkbox-control__input[type=checkbox]:focus{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--wp-admin-theme-color)}.components-checkbox-control__input[type=checkbox]:checked{background:var(--wp-admin-theme-color);border-color:var(--wp-admin-theme-color)}.components-checkbox-control__input[type=checkbox]:checked::-ms-check{opacity:0}.components-checkbox-control__input[type=checkbox]:checked:before,.components-checkbox-control__input[type=checkbox][aria-checked=mixed]:before{color:#fff;margin:-3px -5px}@media(min-width:782px){.components-checkbox-control__input[type=checkbox]:checked:before,.components-checkbox-control__input[type=checkbox][aria-checked=mixed]:before{margin:-4px -5px 0 0}}.components-checkbox-control__input[type=checkbox][aria-checked=mixed]{background:var(--wp-admin-theme-color);border-color:var(--wp-admin-theme-color)}.components-checkbox-control__input[type=checkbox][aria-checked=mixed]:before{content:"";display:inline-block;float:right;font:normal 30px/1 dashicons;vertical-align:middle;width:16px;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(min-width:782px){.components-checkbox-control__input[type=checkbox][aria-checked=mixed]:before{float:none;font-size:21px}}.components-checkbox-control__input[type=checkbox]:disabled,.components-checkbox-control__input[type=checkbox][aria-disabled=true]{background:#f0f0f0;border-color:#ddd;cursor:default;opacity:1}@media not (prefers-reduced-motion){.components-checkbox-control__input[type=checkbox]{transition:border-color .1s ease-in-out}}.components-checkbox-control__input[type=checkbox]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) #fff,0 0 0 calc(var(--wp-admin-border-width-focus)*2) var(--wp-admin-theme-color);outline:2px solid transparent;outline-offset:2px}.components-checkbox-control__input[type=checkbox]:checked,.components-checkbox-control__input[type=checkbox]:indeterminate{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));border-color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-checkbox-control__input[type=checkbox]:checked::-ms-check,.components-checkbox-control__input[type=checkbox]:indeterminate::-ms-check{opacity:0}.components-checkbox-control__input[type=checkbox]:checked:before{content:none}.components-checkbox-control__input-container{aspect-ratio:1;display:inline-block;flex-shrink:0;line-height:1;margin-left:var(--checkbox-input-margin);position:relative;vertical-align:middle;width:var(--checkbox-input-size)}svg.components-checkbox-control__checked,svg.components-checkbox-control__indeterminate{--checkmark-size:var(--checkbox-input-size);fill:#fff;cursor:pointer;height:var(--checkmark-size);pointer-events:none;position:absolute;right:50%;top:50%;transform:translate(50%,-50%);-webkit-user-select:none;user-select:none;width:var(--checkmark-size)}@media(min-width:600px){svg.components-checkbox-control__checked,svg.components-checkbox-control__indeterminate{--checkmark-size:calc(var(--checkbox-input-size) + 4px)}}.components-checkbox-control__help{display:inline-block;margin-inline-start:calc(var(--checkbox-input-size) + var(--checkbox-input-margin))}.components-circular-option-picker{display:inline-block;min-width:188px;width:100%}.components-circular-option-picker .components-circular-option-picker__custom-clear-wrapper{display:flex;justify-content:flex-end;margin-top:12px}.components-circular-option-picker .components-circular-option-picker__swatches{display:flex;flex-wrap:wrap;gap:12px;position:relative;z-index:1}.components-circular-option-picker>:not(.components-circular-option-picker__swatches){position:relative;z-index:0}.components-circular-option-picker__option-wrapper{display:inline-block;height:28px;transform:scale(1);vertical-align:top;width:28px}@media not (prefers-reduced-motion){.components-circular-option-picker__option-wrapper{transition:transform .1s ease;will-change:transform}}.components-circular-option-picker__option-wrapper:hover{transform:scale(1.2)}.components-circular-option-picker__option-wrapper>div{height:100%;width:100%}.components-circular-option-picker__option-wrapper:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' fill='none'%3E%3Cpath fill='%23555D65' d='M6 8V6H4v2zm2 0V6h2v2zm2 8H8v-2h2zm2 0v-2h2v2zm0 2v-2h-2v2H8v2h2v-2zm2 0v2h-2v-2zm2 0h-2v-2h2z'/%3E%3Cpath fill='%23555D65' fill-rule='evenodd' d='M18 18h2v-2h-2v-2h2v-2h-2v-2h2V8h-2v2h-2V8h-2v2h2v2h-2v2h2v2h2zm-2-4v-2h2v2z' clip-rule='evenodd'/%3E%3Cpath fill='%23555D65' d='M18 18v2h-2v-2z'/%3E%3Cpath fill='%23555D65' fill-rule='evenodd' d='M8 10V8H6v2H4v2h2v2H4v2h2v2H4v2h2v2H4v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v-2h-2v-2h2v-2h-2v-2h2v-2h-2v-2h2V8h-2V6h2V4h-2v2h-2V4h-2v2h-2V4h-2v2h-2V4h-2v2h2v2h-2v2zm0 2v-2H6v2zm2 0v-2h2v2zm0 2v-2H8v2H6v2h2v2H6v2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h-2v-2h2v-2h-2v-2h2v-2h-2v-2h2V8h-2V6h-2v2h-2V6h-2v2h-2v2h2v2h-2v2z' clip-rule='evenodd'/%3E%3Cpath fill='%23555D65' fill-rule='evenodd' d='M4 0H2v2H0v2h2v2H0v2h2v2H0v2h2v2H0v2h2v2H0v2h2v2H0v2h2v2H0v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v-2h-2v-2h2v-2h-2v-2h2v-2h-2v-2h2v-2h-2v-2h2V8h-2V6h2V4h-2V2h2V0h-2v2h-2V0h-2v2h-2V0h-2v2h-2V0h-2v2h-2V0h-2v2H8V0H6v2H4zm0 4V2H2v2zm2 0V2h2v2zm0 2V4H4v2H2v2h2v2H2v2h2v2H2v2h2v2H2v2h2v2H2v2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h2v2h2v-2h-2v-2h2v-2h-2v-2h2v-2h-2v-2h2v-2h-2v-2h2V8h-2V6h2V4h-2V2h-2v2h-2V2h-2v2h-2V2h-2v2h-2V2h-2v2H8v2z' clip-rule='evenodd'/%3E%3C/svg%3E");border-radius:50%;bottom:1px;content:"";left:1px;position:absolute;right:1px;top:1px;z-index:-1}.components-circular-option-picker__option{aspect-ratio:1;background:transparent;border:none;border-radius:50%;box-shadow:inset 0 0 0 14px;cursor:pointer;display:inline-block;height:100%!important;vertical-align:top}@media not (prefers-reduced-motion){.components-circular-option-picker__option{transition:box-shadow .1s ease}}.components-circular-option-picker__option:hover{box-shadow:inset 0 0 0 14px!important}.components-circular-option-picker__option[aria-pressed=true],.components-circular-option-picker__option[aria-selected=true]{box-shadow:inset 0 0 0 4px;overflow:visible;position:relative;z-index:1}.components-circular-option-picker__option[aria-pressed=true]+svg,.components-circular-option-picker__option[aria-selected=true]+svg{border-radius:50%;pointer-events:none;position:absolute;right:2px;top:2px;z-index:2}.components-circular-option-picker__option:after{border:1px solid transparent;border-radius:50%;bottom:-1px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.2);box-sizing:inherit;content:"";left:-1px;position:absolute;right:-1px;top:-1px}.components-circular-option-picker__option:focus:after{border:2px solid #757575;border-radius:50%;box-shadow:inset 0 0 0 2px #fff;content:"";height:calc(100% + 4px);position:absolute;right:50%;top:50%;transform:translate(50%,-50%);width:calc(100% + 4px)}.components-circular-option-picker__option.components-button:focus{background-color:transparent;box-shadow:inset 0 0 0 14px;outline:none}.components-circular-option-picker__button-action .components-circular-option-picker__option{background:#fff;color:#fff}.components-circular-option-picker__dropdown-link-action{margin-left:16px}.components-circular-option-picker__dropdown-link-action .components-button{line-height:22px}.components-palette-edit__popover-gradient-picker{padding:8px;width:260px}.components-dropdown-menu__menu .components-palette-edit__menu-button{width:100%}.component-color-indicator{background:#fff linear-gradient(45deg,transparent 48%,#ddd 0,#ddd 52%,transparent 0);border-radius:50%;box-shadow:inset 0 0 0 1px rgba(0,0,0,.2);display:inline-block;height:20px;padding:0;width:20px}.components-combobox-control{width:100%}input.components-combobox-control__input[type=text]{border:none;box-shadow:none;font-family:inherit;font-size:16px;line-height:inherit;margin:0;min-height:auto;padding:2px;width:100%}@media(min-width:600px){input.components-combobox-control__input[type=text]{font-size:13px}}input.components-combobox-control__input[type=text]:focus{box-shadow:none;outline:none}.components-combobox-control__suggestions-container{align-items:flex-start;border:1px solid #949494;border-radius:2px;box-shadow:0 0 0 transparent;display:flex;flex-wrap:wrap;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;line-height:normal;padding:0;width:100%}@media not (prefers-reduced-motion){.components-combobox-control__suggestions-container{transition:box-shadow .1s linear}}@media(min-width:600px){.components-combobox-control__suggestions-container{font-size:13px;line-height:normal}}.components-combobox-control__suggestions-container:focus{border-color:var(--wp-admin-theme-color);box-shadow:0 0 0 .5px var(--wp-admin-theme-color);outline:2px solid transparent}.components-combobox-control__suggestions-container::-webkit-input-placeholder{color:rgba(30,30,30,.62)}.components-combobox-control__suggestions-container::-moz-placeholder{color:rgba(30,30,30,.62)}.components-combobox-control__suggestions-container:-ms-input-placeholder{color:rgba(30,30,30,.62)}.components-combobox-control__suggestions-container:focus-within{border-color:var(--wp-admin-theme-color);box-shadow:0 0 0 .5px var(--wp-admin-theme-color);outline:2px solid transparent}.components-combobox-control__suggestions-container .components-spinner{margin:0}.components-color-palette__custom-color-wrapper{position:relative;z-index:0}.components-color-palette__custom-color-button{background:none;border:none;border-radius:4px 4px 0 0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.2);box-sizing:border-box;cursor:pointer;height:64px;outline:1px solid transparent;position:relative;width:100%}.components-color-palette__custom-color-button:focus{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));outline-width:2px}.components-color-palette__custom-color-button:after{background-image:repeating-linear-gradient(-45deg,#e0e0e0 25%,transparent 0,transparent 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(-45deg,#e0e0e0 25%,transparent 0,transparent 75%,#e0e0e0 0,#e0e0e0);background-position:100% 0,24px 24px;background-size:48px 48px;border-radius:3px 3px 0 0;content:"";inset:1px;position:absolute;z-index:-1}.components-color-palette__custom-color-text-wrapper{border-radius:0 0 4px 4px;box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.2),inset -1px 0 0 0 rgba(0,0,0,.2),inset 1px 0 0 0 rgba(0,0,0,.2);font-size:13px;padding:12px 16px;position:relative}.components-color-palette__custom-color-name{color:var(--wp-components-color-foreground,#1e1e1e);margin:0 1px}.components-color-palette__custom-color-value{color:#757575}.components-color-palette__custom-color-value--is-hex{text-transform:uppercase}.components-color-palette__custom-color-value:empty:after{content:"​";visibility:hidden}.components-custom-gradient-picker__gradient-bar{border-radius:2px;height:48px;position:relative;width:100%;z-index:1}.components-custom-gradient-picker__gradient-bar.has-gradient{background-image:repeating-linear-gradient(-45deg,#e0e0e0 25%,transparent 0,transparent 75%,#e0e0e0 0,#e0e0e0),repeating-linear-gradient(-45deg,#e0e0e0 25%,transparent 0,transparent 75%,#e0e0e0 0,#e0e0e0);background-position:100% 0,12px 12px;background-size:24px 24px}.components-custom-gradient-picker__gradient-bar .components-custom-gradient-picker__gradient-bar-background{inset:0;position:absolute}.components-custom-gradient-picker__gradient-bar .components-custom-gradient-picker__markers-container{margin-left:auto;margin-right:auto;position:relative;width:calc(100% - 48px)}.components-custom-gradient-picker__gradient-bar .components-custom-gradient-picker__control-point-dropdown{display:flex;height:16px;position:absolute;top:16px;width:16px}.components-custom-gradient-picker__gradient-bar .components-custom-gradient-picker__insert-point-dropdown{background:#fff;border-radius:50%;color:#1e1e1e;height:inherit;min-width:16px!important;padding:2px;position:relative;width:inherit}.components-custom-gradient-picker__gradient-bar .components-custom-gradient-picker__insert-point-dropdown svg{height:100%;width:100%}.components-custom-gradient-picker__gradient-bar .components-custom-gradient-picker__control-point-button{border-radius:50%;box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) #fff,0 0 2px 0 rgba(0,0,0,.25);height:inherit;outline:2px solid transparent;padding:0;width:inherit}.components-custom-gradient-picker__gradient-bar .components-custom-gradient-picker__control-point-button.is-active,.components-custom-gradient-picker__gradient-bar .components-custom-gradient-picker__control-point-button:focus{box-shadow:inset 0 0 0 calc(var(--wp-admin-border-width-focus)*2) #fff,0 0 2px 0 rgba(0,0,0,.25);outline:1.5px solid transparent}.components-custom-gradient-picker__remove-control-point-wrapper{padding-bottom:8px}.components-custom-gradient-picker__inserter{direction:rtl}.components-custom-gradient-picker__liner-gradient-indicator{display:inline-block;flex:0 auto;height:20px;width:20px}.components-custom-gradient-picker__ui-line{position:relative;z-index:0}.block-editor-dimension-control .components-base-control__field{align-items:center;display:flex}.block-editor-dimension-control .components-base-control__label{align-items:center;display:flex;margin-bottom:0;margin-left:1em}.block-editor-dimension-control .components-base-control__label .dashicon{margin-left:.5em}.block-editor-dimension-control.is-manual .components-base-control__label{width:10em}body.is-dragging-components-draggable{cursor:move;cursor:grabbing!important}.components-draggable__invisible-drag-image{height:50px;position:fixed;right:-1000px;width:50px}.components-draggable__clone{background:transparent;padding:0;pointer-events:none;position:fixed;z-index:1000000000}.components-drop-zone{border-radius:2px;bottom:0;left:0;opacity:0;position:absolute;right:0;top:0;visibility:hidden;z-index:40}.components-drop-zone.is-active{opacity:1;visibility:visible}.components-drop-zone .components-drop-zone__content{align-items:center;background-color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));bottom:0;color:#fff;display:flex;height:100%;justify-content:center;left:0;opacity:0;pointer-events:none;position:absolute;right:0;text-align:center;top:0;width:100%;z-index:50}.components-drop-zone .components-drop-zone__content-inner{opacity:0;transform:scale(.9)}.components-drop-zone.is-active.is-dragging-over-element .components-drop-zone__content{opacity:1}@media not (prefers-reduced-motion){.components-drop-zone.is-active.is-dragging-over-element .components-drop-zone__content{transition:opacity .2s ease-in-out}}.components-drop-zone.is-active.is-dragging-over-element .components-drop-zone__content-inner{opacity:1;transform:scale(1)}@media not (prefers-reduced-motion){.components-drop-zone.is-active.is-dragging-over-element .components-drop-zone__content-inner{transition:opacity .1s ease-in-out .1s,transform .1s ease-in-out .1s}}.components-drop-zone__content-icon,.components-drop-zone__content-text{display:block}.components-drop-zone__content-icon{line-height:0;margin:0 auto 8px;fill:currentColor;pointer-events:none}.components-drop-zone__content-text{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px}.components-dropdown{display:inline-block}.components-dropdown__content .components-popover__content{padding:8px}.components-dropdown__content .components-popover__content:has(.components-menu-group){padding:0}.components-dropdown__content .components-popover__content:has(.components-menu-group) .components-dropdown-menu__menu>.components-menu-item__button,.components-dropdown__content .components-popover__content:has(.components-menu-group)>.components-menu-item__button{margin:8px;width:auto}.components-dropdown__content [role=menuitem]{white-space:nowrap}.components-dropdown__content .components-menu-group{padding:8px}.components-dropdown__content .components-menu-group+.components-menu-group{border-top:1px solid #ccc;padding:8px}.components-dropdown__content.is-alternate .components-menu-group+.components-menu-group{border-color:#1e1e1e}.components-dropdown-menu__toggle{vertical-align:top}.components-dropdown-menu__menu{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;line-height:1.4;width:100%}.components-dropdown-menu__menu .components-dropdown-menu__menu-item,.components-dropdown-menu__menu .components-menu-item{cursor:pointer;outline:none;padding:6px;white-space:nowrap;width:100%}.components-dropdown-menu__menu .components-dropdown-menu__menu-item.has-separator,.components-dropdown-menu__menu .components-menu-item.has-separator{margin-top:6px;overflow:visible;position:relative}.components-dropdown-menu__menu .components-dropdown-menu__menu-item.has-separator:before,.components-dropdown-menu__menu .components-menu-item.has-separator:before{background-color:#ddd;box-sizing:content-box;content:"";display:block;height:1px;left:0;position:absolute;right:0;top:-3px}.components-dropdown-menu__menu .components-dropdown-menu__menu-item.is-active .dashicon,.components-dropdown-menu__menu .components-dropdown-menu__menu-item.is-active svg,.components-dropdown-menu__menu .components-menu-item.is-active .dashicon,.components-dropdown-menu__menu .components-menu-item.is-active svg{background:#1e1e1e;border-radius:1px;box-shadow:0 0 0 1px #1e1e1e;color:#fff}.components-dropdown-menu__menu .components-dropdown-menu__menu-item.is-icon-only,.components-dropdown-menu__menu .components-menu-item.is-icon-only{width:auto}.components-dropdown-menu__menu .components-menu-item__button,.components-dropdown-menu__menu .components-menu-item__button.components-button{height:auto;min-height:40px;padding-left:8px;padding-right:8px;text-align:right}.components-duotone-picker__color-indicator:before{background:transparent}.components-duotone-picker__color-indicator>.components-button,.components-duotone-picker__color-indicator>.components-button.is-pressed:hover:not(:disabled){background:linear-gradient(45deg,transparent 48%,#ddd 0,#ddd 52%,transparent 0);color:transparent}.components-duotone-picker__color-indicator>.components-button:not([aria-disabled=true]):active{color:transparent}.components-color-list-picker,.components-color-list-picker__swatch-button{width:100%}.components-color-list-picker__color-picker{margin:8px 0}.components-color-list-picker__swatch-color{margin:2px}.components-external-link{text-decoration:none}.components-external-link__contents{text-decoration:underline}.components-external-link__icon{font-weight:400;margin-right:.5ch}.components-form-toggle{display:inline-block;height:16px;position:relative}.components-form-toggle .components-form-toggle__track{background-color:#fff;border:1px solid #949494;border-radius:8px;box-sizing:border-box;content:"";display:inline-block;height:16px;overflow:hidden;position:relative;vertical-align:top;width:32px}@media not (prefers-reduced-motion){.components-form-toggle .components-form-toggle__track{transition:background-color .2s ease,border-color .2s ease}}.components-form-toggle .components-form-toggle__track:after{border-top:16px solid transparent;box-sizing:border-box;content:"";inset:0;opacity:0;position:absolute}@media not (prefers-reduced-motion){.components-form-toggle .components-form-toggle__track:after{transition:opacity .2s ease}}.components-form-toggle .components-form-toggle__thumb{background-color:#1e1e1e;border:6px solid transparent;border-radius:50%;box-shadow:0 1px 1px rgba(0,0,0,.03),0 1px 2px rgba(0,0,0,.02),0 3px 3px rgba(0,0,0,.02),0 4px 4px rgba(0,0,0,.01);box-sizing:border-box;display:block;height:12px;position:absolute;right:2px;top:2px;width:12px}@media not (prefers-reduced-motion){.components-form-toggle .components-form-toggle__thumb{transition:transform .2s ease,background-color .2s ease-out}}.components-form-toggle.is-checked .components-form-toggle__track{background-color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));border-color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-form-toggle.is-checked .components-form-toggle__track:after{opacity:1}.components-form-toggle .components-form-toggle__input:focus+.components-form-toggle__track{box-shadow:0 0 0 var(--wp-admin-border-width-focus) #fff,0 0 0 calc(var(--wp-admin-border-width-focus)*2) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));outline:2px solid transparent;outline-offset:2px}.components-form-toggle.is-checked .components-form-toggle__thumb{background-color:#fff;border-width:0;transform:translateX(-16px)}.components-disabled .components-form-toggle,.components-form-toggle.is-disabled{opacity:.3}.components-form-toggle input.components-form-toggle__input[type=checkbox]{border:none;height:100%;margin:0;opacity:0;padding:0;position:absolute;right:0;top:0;width:100%;z-index:1}.components-form-toggle input.components-form-toggle__input[type=checkbox]:checked{background:none}.components-form-toggle input.components-form-toggle__input[type=checkbox]:before{content:""}.components-form-toggle input.components-form-toggle__input[type=checkbox]:not(:disabled,[aria-disabled=true]){cursor:pointer}.components-form-token-field__input-container{border:1px solid #949494;border-radius:2px;box-shadow:0 0 0 transparent;cursor:text;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;line-height:normal;padding:0;width:100%}@media not (prefers-reduced-motion){.components-form-token-field__input-container{transition:box-shadow .1s linear}}@media(min-width:600px){.components-form-token-field__input-container{font-size:13px;line-height:normal}}.components-form-token-field__input-container:focus{border-color:var(--wp-admin-theme-color);box-shadow:0 0 0 .5px var(--wp-admin-theme-color);outline:2px solid transparent}.components-form-token-field__input-container::-webkit-input-placeholder{color:rgba(30,30,30,.62)}.components-form-token-field__input-container::-moz-placeholder{color:rgba(30,30,30,.62)}.components-form-token-field__input-container:-ms-input-placeholder{color:rgba(30,30,30,.62)}.components-form-token-field__input-container.is-disabled{background:#ddd;border-color:#ddd}.components-form-token-field__input-container.is-active{border-color:var(--wp-admin-theme-color);box-shadow:0 0 0 .5px var(--wp-admin-theme-color);outline:2px solid transparent}.components-form-token-field__input-container input[type=text].components-form-token-field__input{background:inherit;border:0;box-shadow:none;color:#1e1e1e;display:inline-block;flex:1;font-family:inherit;font-size:16px;margin-right:4px;max-width:100%;min-height:24px;min-width:50px;padding:0;width:100%}@media(min-width:600px){.components-form-token-field__input-container input[type=text].components-form-token-field__input{font-size:13px}}.components-form-token-field.is-active .components-form-token-field__input-container input[type=text].components-form-token-field__input,.components-form-token-field__input-container input[type=text].components-form-token-field__input:focus{box-shadow:none;outline:none}.components-form-token-field__input-container .components-form-token-field__token+input[type=text].components-form-token-field__input{width:auto}.components-form-token-field__token{color:#1e1e1e;display:flex;font-size:13px;max-width:100%}.components-form-token-field__token.is-success .components-form-token-field__remove-token,.components-form-token-field__token.is-success .components-form-token-field__token-text{background:#4ab866}.components-form-token-field__token.is-error .components-form-token-field__remove-token,.components-form-token-field__token.is-error .components-form-token-field__token-text{background:#cc1818}.components-form-token-field__token.is-validating .components-form-token-field__remove-token,.components-form-token-field__token.is-validating .components-form-token-field__token-text{color:#757575}.components-form-token-field__token.is-borderless{padding:0 0 0 24px;position:relative}.components-form-token-field__token.is-borderless .components-form-token-field__token-text{background:transparent}.components-form-token-field__token.is-borderless:not(.is-disabled) .components-form-token-field__token-text{color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-form-token-field__token.is-borderless .components-form-token-field__remove-token{background:transparent;color:#757575;left:0;position:absolute;top:1px}.components-form-token-field__token.is-borderless.is-success .components-form-token-field__token-text{color:#4ab866}.components-form-token-field__token.is-borderless.is-error .components-form-token-field__token-text{color:#cc1818;padding:0 6px 0 4px}.components-form-token-field__token.is-borderless.is-validating .components-form-token-field__token-text{color:#1e1e1e}.components-form-token-field__remove-token.components-button,.components-form-token-field__token-text{background:#ddd;display:inline-block;height:auto;min-width:unset}@media not (prefers-reduced-motion){.components-form-token-field__remove-token.components-button,.components-form-token-field__token-text{transition:all .2s cubic-bezier(.4,1,.4,1)}}.components-form-token-field__token-text{border-radius:0 1px 1px 0;line-height:24px;overflow:hidden;padding:0 8px 0 0;text-overflow:ellipsis;white-space:nowrap}.components-form-token-field__remove-token.components-button{border-radius:1px 0 0 1px;color:#1e1e1e;line-height:10px;overflow:initial}.components-form-token-field__remove-token.components-button:hover:not(:disabled){color:#1e1e1e}.components-form-token-field__suggestions-list{box-shadow:inset 0 1px 0 0 #949494;flex:1 0 100%;list-style:none;margin:0;max-height:128px;min-width:100%;overflow-y:auto;padding:0}@media not (prefers-reduced-motion){.components-form-token-field__suggestions-list{transition:all .15s ease-in-out}}.components-form-token-field__suggestion{box-sizing:border-box;color:#1e1e1e;display:block;font-size:13px;margin:0;min-height:32px;padding:8px 12px}.components-form-token-field__suggestion.is-selected{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));color:#fff}.components-form-token-field__suggestion[aria-disabled=true]{color:#949494;pointer-events:none}.components-form-token-field__suggestion[aria-disabled=true].is-selected{background-color:rgba(var(--wp-components-color-accent--rgb,var(--wp-admin-theme-color--rgb)),.04)}.components-form-token-field__suggestion:not(.is-empty){cursor:pointer}@media(min-width:600px){.components-guide{width:600px}}.components-guide .components-modal__content{margin-top:0;padding:0}.components-guide .components-modal__content:before{content:none}.components-guide .components-modal__header{border-bottom:none;height:60px;padding:0;position:sticky}.components-guide .components-modal__header .components-button{align-self:flex-start;margin:8px 0 0 8px;position:static}.components-guide .components-modal__header .components-button:hover svg{fill:#fff}.components-guide .components-guide__container{display:flex;flex-direction:column;justify-content:space-between;margin-top:-60px;min-height:100%}.components-guide .components-guide__page{display:flex;flex-direction:column;justify-content:center;position:relative}@media(min-width:600px){.components-guide .components-guide__page{min-height:300px}}.components-guide .components-guide__footer{align-content:center;display:flex;height:36px;justify-content:center;margin:0 0 24px;padding:0 32px;position:relative;width:100%}.components-guide .components-guide__page-control{margin:0;text-align:center}.components-guide .components-guide__page-control li{display:inline-block;margin:0}.components-guide .components-guide__page-control .components-button{color:#e0e0e0;margin:-6px 0}.components-guide .components-guide__page-control li[aria-current=step] .components-button{color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-modal__frame.components-guide{border:none;max-height:575px;min-width:312px}@media(max-width:600px){.components-modal__frame.components-guide{margin:auto;max-width:calc(100vw - 32px)}}.components-button.components-guide__back-button,.components-button.components-guide__finish-button,.components-button.components-guide__forward-button{position:absolute}.components-button.components-guide__back-button{right:32px}.components-button.components-guide__finish-button,.components-button.components-guide__forward-button{left:32px}[role=region]{position:relative}[role=region].interface-interface-skeleton__content:focus-visible:after{bottom:0;content:"";left:0;outline-color:var(--wp-admin-theme-color);outline-offset:calc(var(--wp-admin-border-width-focus)*-2/var(--wp-block-editor-iframe-zoom-out-scale, 1));outline-style:solid;outline-width:calc(var(--wp-admin-border-width-focus)*2/var(--wp-block-editor-iframe-zoom-out-scale, 1));pointer-events:none;position:absolute;right:0;top:0;z-index:1000000}.is-focusing-regions [role=region]:focus:after{bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:1000000}.is-focusing-regions .editor-post-publish-panel,.is-focusing-regions .interface-interface-skeleton__actions .editor-layout__toggle-entities-saved-states-panel,.is-focusing-regions .interface-interface-skeleton__actions .editor-layout__toggle-publish-panel,.is-focusing-regions .interface-interface-skeleton__sidebar .editor-layout__toggle-sidebar-panel,.is-focusing-regions [role=region]:focus:after,.is-focusing-regions.is-distraction-free .interface-interface-skeleton__header .edit-post-header{outline-color:var(--wp-admin-theme-color);outline-offset:calc(var(--wp-admin-border-width-focus)*-2/var(--wp-block-editor-iframe-zoom-out-scale, 1));outline-style:solid;outline-width:calc(var(--wp-admin-border-width-focus)*2/var(--wp-block-editor-iframe-zoom-out-scale, 1))}.components-menu-group+.components-menu-group{border-top:1px solid #1e1e1e;padding-top:8px}.components-menu-group+.components-menu-group.has-hidden-separator{border-top:none;margin-top:0;padding-top:0}.components-menu-group:has(>div:empty){display:none}.components-menu-group__label{color:#757575;font-size:11px;font-weight:500;margin-bottom:12px;margin-top:4px;padding:0 8px;text-transform:uppercase;white-space:nowrap}.components-menu-item__button,.components-menu-item__button.components-button{width:100%}.components-menu-item__button.components-button[role=menuitemcheckbox] .components-menu-item__item:only-child,.components-menu-item__button.components-button[role=menuitemradio] .components-menu-item__item:only-child,.components-menu-item__button[role=menuitemcheckbox] .components-menu-item__item:only-child,.components-menu-item__button[role=menuitemradio] .components-menu-item__item:only-child{box-sizing:initial;padding-left:48px}.components-menu-item__button .components-menu-items__item-icon,.components-menu-item__button.components-button .components-menu-items__item-icon{display:inline-block;flex:0 0 auto}.components-menu-item__button .components-menu-items__item-icon.has-icon-right,.components-menu-item__button.components-button .components-menu-items__item-icon.has-icon-right{margin-left:-2px;margin-right:24px}.components-menu-item__button .components-menu-item__shortcut+.components-menu-items__item-icon.has-icon-right,.components-menu-item__button.components-button .components-menu-item__shortcut+.components-menu-items__item-icon.has-icon-right{margin-right:8px}.components-menu-item__button .block-editor-block-icon,.components-menu-item__button.components-button .block-editor-block-icon{margin-left:8px;margin-right:-2px}.components-menu-item__button.components-button.is-primary,.components-menu-item__button.is-primary{justify-content:center}.components-menu-item__button.components-button.is-primary .components-menu-item__item,.components-menu-item__button.is-primary .components-menu-item__item{margin-left:0}.components-menu-item__button.components-button:disabled.is-tertiary,.components-menu-item__button.components-button[aria-disabled=true].is-tertiary,.components-menu-item__button:disabled.is-tertiary,.components-menu-item__button[aria-disabled=true].is-tertiary{background:none;color:var(--wp-components-color-accent-darker-10,var(--wp-admin-theme-color-darker-10,#2145e6));opacity:.3}.components-menu-item__info-wrapper{display:flex;flex-direction:column;margin-left:auto}.components-menu-item__info{color:#757575;font-size:12px;margin-top:4px;white-space:normal}.components-menu-item__item{align-items:center;display:inline-flex;margin-left:auto;min-width:160px;white-space:nowrap}.components-menu-item__shortcut{align-self:center;color:currentColor;display:none;margin-left:0;margin-right:auto;padding-right:24px}@media(min-width:480px){.components-menu-item__shortcut{display:inline}}.components-menu-items-choice,.components-menu-items-choice.components-button{height:auto;min-height:40px}.components-menu-items-choice svg,.components-menu-items-choice.components-button svg{margin-left:12px}.components-menu-items-choice.components-button.has-icon,.components-menu-items-choice.has-icon{padding-right:12px}.components-modal__screen-overlay{background-color:rgba(0,0,0,.35);bottom:0;display:flex;left:0;position:fixed;right:0;top:0;z-index:100000}@keyframes __wp-base-styles-fade-in{0%{opacity:0}to{opacity:1}}@media not (prefers-reduced-motion){.components-modal__screen-overlay{animation:__wp-base-styles-fade-in .08s linear 0s;animation-fill-mode:forwards}}@keyframes __wp-base-styles-fade-out{0%{opacity:1}to{opacity:0}}@media not (prefers-reduced-motion){.components-modal__screen-overlay.is-animating-out{animation:__wp-base-styles-fade-out .08s linear 80ms;animation-fill-mode:forwards}}.components-modal__frame{animation-fill-mode:forwards;animation-name:components-modal__appear-animation;animation-timing-function:cubic-bezier(.29,0,0,1);background:#fff;border-radius:8px 8px 0 0;box-shadow:0 5px 15px rgba(0,0,0,.08),0 15px 27px rgba(0,0,0,.07),0 30px 36px rgba(0,0,0,.04),0 50px 43px rgba(0,0,0,.02);box-sizing:border-box;display:flex;margin:40px 0 0;overflow:hidden;width:100%}.components-modal__frame *,.components-modal__frame :after,.components-modal__frame :before{box-sizing:inherit}@media not (prefers-reduced-motion){.components-modal__frame{animation-duration:var(--modal-frame-animation-duration)}}.components-modal__screen-overlay.is-animating-out .components-modal__frame{animation-name:components-modal__disappear-animation;animation-timing-function:cubic-bezier(1,0,.2,1)}@media(min-width:600px){.components-modal__frame{border-radius:8px;margin:auto;max-height:calc(100% - 120px);max-width:calc(100% - 32px);min-width:350px;width:auto}}@media(min-width:600px)and (min-width:600px){.components-modal__frame.is-full-screen{height:calc(100% - 32px);max-height:none;width:calc(100% - 32px)}}@media(min-width:600px)and (min-width:782px){.components-modal__frame.is-full-screen{height:calc(100% - 80px);max-width:none;width:calc(100% - 80px)}}@media(min-width:600px){.components-modal__frame.has-size-large,.components-modal__frame.has-size-medium,.components-modal__frame.has-size-small{width:100%}.components-modal__frame.has-size-small{max-width:384px}.components-modal__frame.has-size-medium{max-width:512px}.components-modal__frame.has-size-large{max-width:840px}}@media(min-width:960px){.components-modal__frame{max-height:70%}}@keyframes components-modal__appear-animation{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes components-modal__disappear-animation{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.components-modal__header{align-items:center;border-bottom:1px solid transparent;box-sizing:border-box;display:flex;flex-direction:row;height:72px;justify-content:space-between;padding:24px 32px 8px;position:absolute;right:0;top:0;width:100%;z-index:10}.components-modal__header .components-modal__header-heading{font-size:1.2rem;font-weight:600}.components-modal__header h1{line-height:1;margin:0}.components-modal__content.has-scrolled-content:not(.hide-header) .components-modal__header{border-bottom-color:#ddd}.components-modal__header+p{margin-top:0}.components-modal__header-heading-container{align-items:center;display:flex;flex-direction:row;flex-grow:1;justify-content:left}.components-modal__header-icon-container{display:inline-block}.components-modal__header-icon-container svg{max-height:36px;max-width:36px;padding:8px}.components-modal__content{flex:1;margin-top:72px;overflow:auto;padding:4px 32px 32px}.components-modal__content.hide-header{margin-top:0;padding-top:32px}.components-modal__content.is-scrollable:focus-visible{box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));outline:2px solid transparent;outline-offset:-2px}.components-notice{align-items:center;background-color:#fff;border-right:4px solid var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));color:#1e1e1e;display:flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;padding:8px 12px}.components-notice.is-dismissible{position:relative}.components-notice.is-success{background-color:#eff9f1;border-right-color:#4ab866}.components-notice.is-warning{background-color:#fef8ee;border-right-color:#f0b849}.components-notice.is-error{background-color:#f4a2a2;border-right-color:#cc1818}.components-notice__content{flex-grow:1;margin:4px 0 4px 25px}.components-notice__actions{display:flex;flex-wrap:wrap}.components-notice__action.components-button{margin-left:8px}.components-notice__action.components-button,.components-notice__action.components-button.is-link{margin-right:12px}.components-notice__action.components-button.is-secondary{vertical-align:initial}.components-notice__dismiss{align-self:flex-start;color:#757575;flex-shrink:0}.components-notice__dismiss:not(:disabled):not([aria-disabled=true]):focus,.components-notice__dismiss:not(:disabled):not([aria-disabled=true]):not(.is-secondary):active,.components-notice__dismiss:not(:disabled):not([aria-disabled=true]):not(.is-secondary):hover{background-color:transparent;color:#1e1e1e}.components-notice__dismiss:not(:disabled):not([aria-disabled=true]):not(.is-secondary):hover{box-shadow:none}.components-notice-list{box-sizing:border-box;max-width:100vw}.components-notice-list .components-notice__content{line-height:2;margin-bottom:12px;margin-top:12px}.components-notice-list .components-notice__action.components-button{display:block;margin-right:0;margin-top:8px}.components-panel{background:#fff;border:1px solid #e0e0e0}.components-panel>.components-panel__body:first-child,.components-panel>.components-panel__header:first-child{margin-top:-1px}.components-panel>.components-panel__body:last-child,.components-panel>.components-panel__header:last-child{border-bottom-width:0}.components-panel+.components-panel{margin-top:-1px}.components-panel__body{border-bottom:1px solid #e0e0e0;border-top:1px solid #e0e0e0}.components-panel__body h3{margin:0 0 .5em}.components-panel__body.is-opened{padding:16px}.components-panel__header{align-items:center;border-bottom:1px solid #ddd;box-sizing:content-box;display:flex;flex-shrink:0;height:47px;justify-content:space-between;padding:0 16px}.components-panel__header h2{color:inherit;font-size:inherit;margin:0}.components-panel__body+.components-panel__body,.components-panel__body+.components-panel__header,.components-panel__header+.components-panel__body,.components-panel__header+.components-panel__header{margin-top:-1px}.components-panel__body>.components-panel__body-title{display:block;font-size:inherit;margin-bottom:0;margin-top:0;padding:0}@media not (prefers-reduced-motion){.components-panel__body>.components-panel__body-title{transition:background .1s ease-in-out}}.components-panel__body.is-opened>.components-panel__body-title{margin:-16px -16px 5px}.components-panel__body>.components-panel__body-title:hover{background:#f0f0f0;border:none}.components-panel__body-toggle.components-button{border:none;box-shadow:none;color:#1e1e1e;font-weight:500;height:auto;outline:none;padding:16px 16px 16px 48px;position:relative;text-align:right;width:100%}@media not (prefers-reduced-motion){.components-panel__body-toggle.components-button{transition:background .1s ease-in-out}}.components-panel__body-toggle.components-button:focus{border-radius:0;box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-panel__body-toggle.components-button .components-panel__arrow{color:#1e1e1e;left:16px;position:absolute;top:50%;transform:translateY(-50%);fill:currentColor}@media not (prefers-reduced-motion){.components-panel__body-toggle.components-button .components-panel__arrow{transition:color .1s ease-in-out}}body.rtl .components-panel__body-toggle.components-button .dashicons-arrow-right{-ms-filter:fliph;filter:FlipH;margin-top:-10px;transform:scaleX(-1)}.components-panel__icon{color:#757575;margin:-2px 6px -2px 0}.components-panel__body-toggle-icon{margin-left:-5px}.components-panel__color-title{float:right;height:19px}.components-panel__row{align-items:center;display:flex;justify-content:space-between;margin-top:8px;min-height:36px}.components-panel__row select{min-width:0}.components-panel__row label{flex-shrink:0;margin-left:12px;max-width:75%}.components-panel__row:empty,.components-panel__row:first-of-type{margin-top:0}.components-panel .circle-picker{padding-bottom:20px}.components-placeholder.components-placeholder{align-items:flex-start;box-sizing:border-box;color:#1e1e1e;display:flex;flex-direction:column;font-size:13px;gap:16px;margin:0;padding:24px;position:relative;text-align:right;width:100%;-moz-font-smoothing:subpixel-antialiased;-webkit-font-smoothing:subpixel-antialiased;background-color:#fff;border-radius:2px;box-shadow:inset 0 0 0 1px #1e1e1e;outline:1px solid transparent}.components-placeholder__error,.components-placeholder__fieldset,.components-placeholder__instructions,.components-placeholder__label{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;font-weight:400;letter-spacing:normal;line-height:normal;text-transform:none}.components-placeholder__label{align-items:center;display:flex;font-weight:600}.components-placeholder__label .block-editor-block-icon,.components-placeholder__label .dashicon,.components-placeholder__label>svg{margin-left:4px;fill:currentColor}@media(forced-colors:active){.components-placeholder__label .block-editor-block-icon,.components-placeholder__label .dashicon,.components-placeholder__label>svg{fill:CanvasText}}.components-placeholder__label:empty{display:none}.components-placeholder__fieldset,.components-placeholder__fieldset form{display:flex;flex-direction:row;flex-wrap:wrap;gap:16px;justify-content:flex-start;width:100%}.components-placeholder__fieldset form p,.components-placeholder__fieldset p{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px}.components-placeholder__fieldset.is-column-layout,.components-placeholder__fieldset.is-column-layout form{flex-direction:column}.components-placeholder__input[type=url]{border:1px solid #949494;border-radius:2px;box-shadow:0 0 0 transparent;flex:1 1 auto;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;line-height:normal;padding:6px 8px}@media not (prefers-reduced-motion){.components-placeholder__input[type=url]{transition:box-shadow .1s linear}}@media(min-width:600px){.components-placeholder__input[type=url]{font-size:13px;line-height:normal}}.components-placeholder__input[type=url]:focus{border-color:var(--wp-admin-theme-color);box-shadow:0 0 0 .5px var(--wp-admin-theme-color);outline:2px solid transparent}.components-placeholder__input[type=url]::-webkit-input-placeholder{color:rgba(30,30,30,.62)}.components-placeholder__input[type=url]::-moz-placeholder{color:rgba(30,30,30,.62)}.components-placeholder__input[type=url]:-ms-input-placeholder{color:rgba(30,30,30,.62)}.components-placeholder__error{gap:8px;width:100%}.components-placeholder__fieldset .components-button:not(.is-link)~.components-button.is-link{margin-left:10px;margin-right:10px}.components-placeholder__fieldset .components-button:not(.is-link)~.components-button.is-link:last-child{margin-left:0}.components-placeholder.is-medium .components-placeholder__instructions,.components-placeholder.is-small .components-placeholder__instructions{display:none}.components-placeholder.is-medium .components-placeholder__fieldset,.components-placeholder.is-medium .components-placeholder__fieldset form,.components-placeholder.is-small .components-placeholder__fieldset,.components-placeholder.is-small .components-placeholder__fieldset form{flex-direction:column}.components-placeholder.is-medium .components-button,.components-placeholder.is-medium .components-placeholder__fieldset>*,.components-placeholder.is-small .components-button,.components-placeholder.is-small .components-placeholder__fieldset>*{justify-content:center;width:100%}.components-placeholder.is-small{padding:16px}.components-placeholder.has-illustration{-webkit-backdrop-filter:blur(100px);backdrop-filter:blur(100px);backface-visibility:hidden;background-color:transparent;border-radius:0;box-shadow:none;color:inherit;display:flex;overflow:hidden}.is-dark-theme .components-placeholder.has-illustration{background-color:rgba(0,0,0,.1)}.components-placeholder.has-illustration .components-placeholder__fieldset{margin-left:0;margin-right:0}.components-placeholder.has-illustration .components-button,.components-placeholder.has-illustration .components-placeholder__instructions,.components-placeholder.has-illustration .components-placeholder__label{opacity:0;pointer-events:none}@media not (prefers-reduced-motion){.components-placeholder.has-illustration .components-button,.components-placeholder.has-illustration .components-placeholder__instructions,.components-placeholder.has-illustration .components-placeholder__label{transition:opacity .1s linear}}.is-selected>.components-placeholder.has-illustration .components-button,.is-selected>.components-placeholder.has-illustration .components-placeholder__instructions,.is-selected>.components-placeholder.has-illustration .components-placeholder__label{opacity:1;pointer-events:auto}.components-placeholder.has-illustration:before{background:currentColor;bottom:0;content:"";left:0;opacity:.1;pointer-events:none;position:absolute;right:0;top:0}.is-selected .components-placeholder.has-illustration{overflow:auto}.components-placeholder__preview{display:flex;justify-content:center}.components-placeholder__illustration{box-sizing:content-box;height:100%;position:absolute;right:50%;top:50%;transform:translate(50%,-50%);width:100%;stroke:currentColor;opacity:.25}.components-popover{box-sizing:border-box;will-change:transform;z-index:1000000}.components-popover *,.components-popover :after,.components-popover :before{box-sizing:inherit}.components-popover.is-expanded{bottom:0;left:0;position:fixed;right:0;top:0;z-index:1000000!important}.components-popover__content{background:#fff;border-radius:4px;box-shadow:0 0 0 1px #ccc,0 2px 3px rgba(0,0,0,.05),0 4px 5px rgba(0,0,0,.04),0 12px 12px rgba(0,0,0,.03),0 16px 16px rgba(0,0,0,.02);box-sizing:border-box;width:min-content}.is-alternate .components-popover__content{border-radius:2px;box-shadow:0 0 0 1px #1e1e1e}.is-unstyled .components-popover__content{background:none;border-radius:0;box-shadow:none}.components-popover.is-expanded .components-popover__content{box-shadow:0 -1px 0 0 #ccc;height:calc(100% - 48px);overflow-y:visible;position:static;width:auto}.components-popover.is-expanded.is-alternate .components-popover__content{box-shadow:0 -1px 0 #1e1e1e}.components-popover__header{align-items:center;background:#fff;display:flex;height:48px;justify-content:space-between;padding:0 16px 0 8px}.components-popover__header-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.components-popover__close.components-button{z-index:5}.components-popover__arrow{display:flex;height:14px;pointer-events:none;position:absolute;width:14px}.components-popover__arrow:before{background-color:#fff;content:"";height:2px;left:1px;position:absolute;right:1px;top:-1px}.components-popover__arrow.is-top{bottom:-14px!important;transform:rotate(0)}.components-popover__arrow.is-right{right:-14px!important;transform:rotate(-90deg)}.components-popover__arrow.is-bottom{top:-14px!important;transform:rotate(-180deg)}.components-popover__arrow.is-left{left:-14px!important;transform:rotate(90deg)}.components-popover__triangle{display:block;flex:1}.components-popover__triangle-bg{fill:#fff}.components-popover__triangle-border{fill:transparent;stroke-width:1px;stroke:#ccc}.is-alternate .components-popover__triangle-border{stroke:#1e1e1e}.components-radio-control{border:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;margin:0;padding:0}.components-radio-control__group-wrapper.has-help{margin-block-end:12px}.components-radio-control__option{align-items:center;column-gap:8px;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto minmax(0,max-content)}.components-radio-control__input[type=radio]{appearance:none;border:1px solid #1e1e1e;border-radius:2px;border-radius:50%;box-shadow:0 0 0 transparent;cursor:pointer;display:inline-flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;grid-column:1;grid-row:1;height:24px;line-height:normal;margin:0;max-width:24px;min-width:24px;padding:0;position:relative;transition:none;width:24px}@media not (prefers-reduced-motion){.components-radio-control__input[type=radio]{transition:box-shadow .1s linear}}@media(min-width:600px){.components-radio-control__input[type=radio]{font-size:13px;line-height:normal}}.components-radio-control__input[type=radio]:focus{border-color:var(--wp-admin-theme-color);box-shadow:0 0 0 .5px var(--wp-admin-theme-color)}.components-radio-control__input[type=radio]::-webkit-input-placeholder{color:rgba(30,30,30,.62)}.components-radio-control__input[type=radio]::-moz-placeholder{color:rgba(30,30,30,.62)}.components-radio-control__input[type=radio]:-ms-input-placeholder{color:rgba(30,30,30,.62)}@media(min-width:600px){.components-radio-control__input[type=radio]{height:16px;max-width:16px;min-width:16px;width:16px}}.components-radio-control__input[type=radio]:checked:before{background-color:#fff;border:4px solid #fff;box-sizing:inherit;height:12px;margin:0;position:absolute;right:50%;top:50%;transform:translate(50%,-50%);width:12px}@media(min-width:600px){.components-radio-control__input[type=radio]:checked:before{height:8px;width:8px}}.components-radio-control__input[type=radio]:focus{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--wp-admin-theme-color)}.components-radio-control__input[type=radio]:checked{background:var(--wp-admin-theme-color);border:none}.components-radio-control__input[type=radio]:focus{box-shadow:0 0 0 var(--wp-admin-border-width-focus) #fff,0 0 0 calc(var(--wp-admin-border-width-focus)*2) var(--wp-admin-theme-color);outline:2px solid transparent;outline-offset:2px}.components-radio-control__input[type=radio]:checked{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));border-color:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-radio-control__input[type=radio]:checked:before{border-radius:50%;content:""}.components-radio-control__label{cursor:pointer;grid-column:2;grid-row:1;line-height:24px}@media(min-width:600px){.components-radio-control__label{line-height:16px}}.components-radio-control__option-description{grid-column:2;grid-row:2;padding-block-start:4px}.components-radio-control__option-description.components-radio-control__option-description{margin-top:0}.components-resizable-box__handle{display:none;height:23px;width:23px;z-index:2}.components-resizable-box__container.has-show-handle .components-resizable-box__handle{display:block}.components-resizable-box__handle>div{height:100%;outline:none;position:relative;width:100%;z-index:2}.components-resizable-box__container>img{width:inherit}.components-resizable-box__handle:after{background:#fff;border-radius:50%;box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9)),0 1px 1px rgba(0,0,0,.03),0 1px 2px rgba(0,0,0,.02),0 3px 3px rgba(0,0,0,.02),0 4px 4px rgba(0,0,0,.01);content:"";cursor:inherit;display:block;height:15px;left:calc(50% - 8px);outline:2px solid transparent;position:absolute;top:calc(50% - 8px);width:15px}.components-resizable-box__side-handle:before{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));border-radius:9999px;content:"";cursor:inherit;display:block;height:3px;left:calc(50% - 1px);opacity:0;position:absolute;top:calc(50% - 1px);width:3px}@media not (prefers-reduced-motion){.components-resizable-box__side-handle:before{transition:transform .1s ease-in;will-change:transform}}.components-resizable-box__corner-handle,.components-resizable-box__side-handle{z-index:2}.components-resizable-box__side-handle.components-resizable-box__handle-bottom,.components-resizable-box__side-handle.components-resizable-box__handle-bottom:before,.components-resizable-box__side-handle.components-resizable-box__handle-top,.components-resizable-box__side-handle.components-resizable-box__handle-top:before{border-left:0;border-right:0;right:0;width:100%}.components-resizable-box__side-handle.components-resizable-box__handle-left,.components-resizable-box__side-handle.components-resizable-box__handle-left:before,.components-resizable-box__side-handle.components-resizable-box__handle-right,.components-resizable-box__side-handle.components-resizable-box__handle-right:before{border-bottom:0;border-top:0;height:100%;top:0}@media not (prefers-reduced-motion){.components-resizable-box__side-handle.components-resizable-box__handle-bottom:active:before,.components-resizable-box__side-handle.components-resizable-box__handle-bottom:hover:before,.components-resizable-box__side-handle.components-resizable-box__handle-top:active:before,.components-resizable-box__side-handle.components-resizable-box__handle-top:hover:before{animation:components-resizable-box__top-bottom-animation .1s ease-out 0s;animation-fill-mode:forwards}.components-resizable-box__side-handle.components-resizable-box__handle-left:active:before,.components-resizable-box__side-handle.components-resizable-box__handle-left:hover:before,.components-resizable-box__side-handle.components-resizable-box__handle-right:active:before,.components-resizable-box__side-handle.components-resizable-box__handle-right:hover:before{animation:components-resizable-box__left-right-animation .1s ease-out 0s;animation-fill-mode:forwards}}@media not all and (min-resolution:0.001dpcm){@supports(-webkit-appearance:none){.components-resizable-box__side-handle.components-resizable-box__handle-bottom:active:before,.components-resizable-box__side-handle.components-resizable-box__handle-bottom:hover:before,.components-resizable-box__side-handle.components-resizable-box__handle-left:active:before,.components-resizable-box__side-handle.components-resizable-box__handle-left:hover:before,.components-resizable-box__side-handle.components-resizable-box__handle-right:active:before,.components-resizable-box__side-handle.components-resizable-box__handle-right:hover:before,.components-resizable-box__side-handle.components-resizable-box__handle-top:active:before,.components-resizable-box__side-handle.components-resizable-box__handle-top:hover:before{animation:none}}}@keyframes components-resizable-box__top-bottom-animation{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes components-resizable-box__left-right-animation{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}.components-resizable-box__handle-right{right:-11.5px}.components-resizable-box__handle-left{left:-11.5px}.components-resizable-box__handle-top{top:-11.5px}.components-resizable-box__handle-bottom{bottom:-11.5px}.components-responsive-wrapper{align-items:center;display:flex;justify-content:center;max-width:100%;position:relative}.components-responsive-wrapper__content{display:block;max-width:100%;width:100%}.components-sandbox{overflow:hidden}iframe.components-sandbox{width:100%}body.lockscroll,html.lockscroll{overflow:hidden}.components-select-control__input{outline:0;-webkit-tap-highlight-color:rgba(0,0,0,0)!important}@media(max-width:782px){.components-base-control .components-base-control__field .components-select-control__input{font-size:16px}}.components-snackbar{-webkit-backdrop-filter:blur(16px) saturate(180%);backdrop-filter:blur(16px) saturate(180%);background:rgba(0,0,0,.85);border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.05),0 2px 3px rgba(0,0,0,.04),0 6px 6px rgba(0,0,0,.03),0 8px 8px rgba(0,0,0,.02);box-sizing:border-box;color:#fff;cursor:pointer;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;max-width:600px;padding:12px 20px;pointer-events:auto;width:100%}@media(min-width:600px){.components-snackbar{width:fit-content}}.components-snackbar:focus{box-shadow:inset 0 0 0 1px #fff,0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9))}.components-snackbar.components-snackbar-explicit-dismiss{cursor:default}.components-snackbar .components-snackbar__content-with-icon{padding-right:24px;position:relative}.components-snackbar .components-snackbar__icon{position:absolute;right:-8px;top:-2.9px}.components-snackbar .components-snackbar__dismiss-button{cursor:pointer;margin-right:24px}.components-snackbar__action.components-button{color:#fff;flex-shrink:0;margin-right:32px}.components-snackbar__action.components-button:focus{box-shadow:none;outline:1px dotted #fff}.components-snackbar__action.components-button:hover{color:currentColor;text-decoration:none}.components-snackbar__content{align-items:baseline;display:flex;justify-content:space-between;line-height:1.4}.components-snackbar-list{box-sizing:border-box;pointer-events:none;position:absolute;width:100%;z-index:100000}.components-snackbar-list__notice-container{padding-top:8px;position:relative}.components-tab-panel__tabs{align-items:stretch;display:flex;flex-direction:row}.components-tab-panel__tabs[aria-orientation=vertical]{flex-direction:column}.components-tab-panel__tabs-item{background:transparent;border:none;border-radius:0;box-shadow:none;cursor:pointer;font-weight:500;height:48px!important;margin-right:0;padding:3px 16px;position:relative}.components-tab-panel__tabs-item:focus:not(:disabled){box-shadow:none;outline:none;position:relative}.components-tab-panel__tabs-item:after{background:var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));border-radius:0;bottom:0;content:"";height:calc(var(--wp-admin-border-width-focus)*0);left:0;pointer-events:none;position:absolute;right:0}@media not (prefers-reduced-motion){.components-tab-panel__tabs-item:after{transition:all .1s linear}}.components-tab-panel__tabs-item.is-active:after{height:calc(var(--wp-admin-border-width-focus)*1);outline:2px solid transparent;outline-offset:-1px}.components-tab-panel__tabs-item:before{border-radius:2px;bottom:12px;box-shadow:0 0 0 0 transparent;content:"";left:12px;pointer-events:none;position:absolute;right:12px;top:12px}@media not (prefers-reduced-motion){.components-tab-panel__tabs-item:before{transition:all .1s linear}}.components-tab-panel__tabs-item:focus-visible:before{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));outline:2px solid transparent}.components-tab-panel__tab-content:focus{box-shadow:none;outline:none}.components-tab-panel__tab-content:focus-visible{box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));outline:2px solid transparent;outline-offset:0}.components-text-control__input,.components-text-control__input[type=color],.components-text-control__input[type=date],.components-text-control__input[type=datetime-local],.components-text-control__input[type=datetime],.components-text-control__input[type=email],.components-text-control__input[type=month],.components-text-control__input[type=number],.components-text-control__input[type=password],.components-text-control__input[type=tel],.components-text-control__input[type=text],.components-text-control__input[type=time],.components-text-control__input[type=url],.components-text-control__input[type=week]{border:1px solid #949494;border-radius:2px;box-shadow:0 0 0 transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:16px;height:32px;line-height:normal;margin:0;padding:6px 8px;width:100%}@media not (prefers-reduced-motion){.components-text-control__input,.components-text-control__input[type=color],.components-text-control__input[type=date],.components-text-control__input[type=datetime-local],.components-text-control__input[type=datetime],.components-text-control__input[type=email],.components-text-control__input[type=month],.components-text-control__input[type=number],.components-text-control__input[type=password],.components-text-control__input[type=tel],.components-text-control__input[type=text],.components-text-control__input[type=time],.components-text-control__input[type=url],.components-text-control__input[type=week]{transition:box-shadow .1s linear}}@media(min-width:600px){.components-text-control__input,.components-text-control__input[type=color],.components-text-control__input[type=date],.components-text-control__input[type=datetime-local],.components-text-control__input[type=datetime],.components-text-control__input[type=email],.components-text-control__input[type=month],.components-text-control__input[type=number],.components-text-control__input[type=password],.components-text-control__input[type=tel],.components-text-control__input[type=text],.components-text-control__input[type=time],.components-text-control__input[type=url],.components-text-control__input[type=week]{font-size:13px;line-height:normal}}.components-text-control__input:focus,.components-text-control__input[type=color]:focus,.components-text-control__input[type=date]:focus,.components-text-control__input[type=datetime-local]:focus,.components-text-control__input[type=datetime]:focus,.components-text-control__input[type=email]:focus,.components-text-control__input[type=month]:focus,.components-text-control__input[type=number]:focus,.components-text-control__input[type=password]:focus,.components-text-control__input[type=tel]:focus,.components-text-control__input[type=text]:focus,.components-text-control__input[type=time]:focus,.components-text-control__input[type=url]:focus,.components-text-control__input[type=week]:focus{border-color:var(--wp-admin-theme-color);box-shadow:0 0 0 .5px var(--wp-admin-theme-color);outline:2px solid transparent}.components-text-control__input::-webkit-input-placeholder,.components-text-control__input[type=color]::-webkit-input-placeholder,.components-text-control__input[type=date]::-webkit-input-placeholder,.components-text-control__input[type=datetime-local]::-webkit-input-placeholder,.components-text-control__input[type=datetime]::-webkit-input-placeholder,.components-text-control__input[type=email]::-webkit-input-placeholder,.components-text-control__input[type=month]::-webkit-input-placeholder,.components-text-control__input[type=number]::-webkit-input-placeholder,.components-text-control__input[type=password]::-webkit-input-placeholder,.components-text-control__input[type=tel]::-webkit-input-placeholder,.components-text-control__input[type=text]::-webkit-input-placeholder,.components-text-control__input[type=time]::-webkit-input-placeholder,.components-text-control__input[type=url]::-webkit-input-placeholder,.components-text-control__input[type=week]::-webkit-input-placeholder{color:rgba(30,30,30,.62)}.components-text-control__input::-moz-placeholder,.components-text-control__input[type=color]::-moz-placeholder,.components-text-control__input[type=date]::-moz-placeholder,.components-text-control__input[type=datetime-local]::-moz-placeholder,.components-text-control__input[type=datetime]::-moz-placeholder,.components-text-control__input[type=email]::-moz-placeholder,.components-text-control__input[type=month]::-moz-placeholder,.components-text-control__input[type=number]::-moz-placeholder,.components-text-control__input[type=password]::-moz-placeholder,.components-text-control__input[type=tel]::-moz-placeholder,.components-text-control__input[type=text]::-moz-placeholder,.components-text-control__input[type=time]::-moz-placeholder,.components-text-control__input[type=url]::-moz-placeholder,.components-text-control__input[type=week]::-moz-placeholder{color:rgba(30,30,30,.62)}.components-text-control__input:-ms-input-placeholder,.components-text-control__input[type=color]:-ms-input-placeholder,.components-text-control__input[type=date]:-ms-input-placeholder,.components-text-control__input[type=datetime-local]:-ms-input-placeholder,.components-text-control__input[type=datetime]:-ms-input-placeholder,.components-text-control__input[type=email]:-ms-input-placeholder,.components-text-control__input[type=month]:-ms-input-placeholder,.components-text-control__input[type=number]:-ms-input-placeholder,.components-text-control__input[type=password]:-ms-input-placeholder,.components-text-control__input[type=tel]:-ms-input-placeholder,.components-text-control__input[type=text]:-ms-input-placeholder,.components-text-control__input[type=time]:-ms-input-placeholder,.components-text-control__input[type=url]:-ms-input-placeholder,.components-text-control__input[type=week]:-ms-input-placeholder{color:rgba(30,30,30,.62)}.components-text-control__input.is-next-40px-default-size,.components-text-control__input[type=color].is-next-40px-default-size,.components-text-control__input[type=date].is-next-40px-default-size,.components-text-control__input[type=datetime-local].is-next-40px-default-size,.components-text-control__input[type=datetime].is-next-40px-default-size,.components-text-control__input[type=email].is-next-40px-default-size,.components-text-control__input[type=month].is-next-40px-default-size,.components-text-control__input[type=number].is-next-40px-default-size,.components-text-control__input[type=password].is-next-40px-default-size,.components-text-control__input[type=tel].is-next-40px-default-size,.components-text-control__input[type=text].is-next-40px-default-size,.components-text-control__input[type=time].is-next-40px-default-size,.components-text-control__input[type=url].is-next-40px-default-size,.components-text-control__input[type=week].is-next-40px-default-size{height:40px;padding-left:12px;padding-right:12px}.components-text-control__input[type=email],.components-text-control__input[type=url]{direction:rtl}.components-tip{color:#757575;display:flex}.components-tip svg{align-self:center;fill:#f0b849;flex-shrink:0;margin-left:16px}.components-tip p{margin:0}.components-toggle-control__label{line-height:16px}.components-toggle-control__label:not(.is-disabled){cursor:pointer}.components-toggle-control__help{display:inline-block;margin-inline-start:40px}.components-accessible-toolbar{border:1px solid #1e1e1e;border-radius:2px;display:inline-flex;flex-shrink:0}.components-accessible-toolbar>.components-toolbar-group:last-child{border-left:none}.components-accessible-toolbar.is-unstyled{border:none}.components-accessible-toolbar.is-unstyled>.components-toolbar-group{border-left:none}.components-accessible-toolbar[aria-orientation=vertical],.components-toolbar[aria-orientation=vertical]{align-items:center;display:flex;flex-direction:column}.components-accessible-toolbar .components-button,.components-toolbar .components-button{height:48px;padding-left:16px;padding-right:16px;position:relative;z-index:1}.components-accessible-toolbar .components-button:focus:not(:disabled),.components-toolbar .components-button:focus:not(:disabled){box-shadow:none;outline:none}.components-accessible-toolbar .components-button:before,.components-toolbar .components-button:before{border-radius:2px;content:"";display:block;height:32px;left:8px;position:absolute;right:8px;z-index:-1}@media not (prefers-reduced-motion){.components-accessible-toolbar .components-button:before,.components-toolbar .components-button:before{animation:components-button__appear-animation .1s ease;animation-fill-mode:forwards}}.components-accessible-toolbar .components-button svg,.components-toolbar .components-button svg{margin-left:auto;margin-right:auto;position:relative}.components-accessible-toolbar .components-button.is-pressed,.components-accessible-toolbar .components-button.is-pressed:hover,.components-toolbar .components-button.is-pressed,.components-toolbar .components-button.is-pressed:hover{background:transparent}.components-accessible-toolbar .components-button.is-pressed:before,.components-toolbar .components-button.is-pressed:before{background:#1e1e1e}.components-accessible-toolbar .components-button:focus:before,.components-toolbar .components-button:focus:before{box-shadow:inset 0 0 0 1px #fff,0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);outline:2px solid transparent}.components-accessible-toolbar .components-button.has-icon.has-icon,.components-toolbar .components-button.has-icon.has-icon{min-width:48px;padding-left:8px;padding-right:8px}@keyframes components-button__appear-animation{0%{transform:scaleY(0)}to{transform:scaleY(1)}}.components-toolbar__control.components-button{position:relative}.components-toolbar__control.components-button[data-subscript] svg{padding:5px 0 5px 10px}.components-toolbar__control.components-button[data-subscript]:after{bottom:10px;content:attr(data-subscript);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:13px;font-weight:600;left:8px;line-height:12px;position:absolute}.components-toolbar__control.components-button:not(:disabled).is-pressed[data-subscript]:after{color:#fff}.components-toolbar-group{background-color:#fff;border-left:1px solid #1e1e1e;display:inline-flex;flex-shrink:0;flex-wrap:wrap;line-height:0;min-height:48px;padding-left:6px;padding-right:6px}.components-toolbar-group .components-toolbar-group.components-toolbar-group{border-width:0;margin:0}.components-toolbar-group .components-button.components-button,.components-toolbar-group .components-button.has-icon.has-icon{justify-content:center;min-width:36px;padding-left:6px;padding-right:6px}.components-toolbar-group .components-button.components-button svg,.components-toolbar-group .components-button.has-icon.has-icon svg{min-width:24px}.components-toolbar-group .components-button.components-button:before,.components-toolbar-group .components-button.has-icon.has-icon:before{left:2px;right:2px}.components-toolbar{background-color:#fff;border:1px solid #1e1e1e;display:inline-flex;flex-shrink:0;flex-wrap:wrap;margin:0;min-height:48px}.components-toolbar .components-toolbar.components-toolbar{border-width:0;margin:0}div.components-toolbar>div{display:flex;margin:0}div.components-toolbar>div+div.has-left-divider{margin-right:6px;overflow:visible;position:relative}div.components-toolbar>div+div.has-left-divider:before{background-color:#ddd;box-sizing:content-box;content:"";display:inline-block;height:20px;position:absolute;right:-3px;top:8px;width:1px}.components-tooltip{background:#000;border-radius:2px;box-shadow:0 1px 2px rgba(0,0,0,.05),0 2px 3px rgba(0,0,0,.04),0 6px 6px rgba(0,0,0,.03),0 8px 8px rgba(0,0,0,.02);color:#f0f0f0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:12px;line-height:1.4;padding:4px 8px;text-align:center;z-index:1000002}.components-tooltip__shortcut{margin-right:8px}:root{--tag-color:#daffdc}div.dataviews-wrapper div.dataviews-filters__container{padding-right:24px}div.dataviews-wrapper svg.table-view-icon{height:52px;width:52px}div.dataviews-wrapper button[aria-controls=dataviews-view-config-dropdown-0]{display:none}div.dataviews-wrapper div.dataviews__view-actions{align-items:center;justify-content:flex-start;padding-left:24px;padding-right:24px}div.dataviews-wrapper button.components-button.is-secondary{font-weight:400;padding:calc(var(--spacing-base)/2) var(--spacing-base)}div.dataviews-wrapper div.components-base-control__field{margin-bottom:0}div.dataviews-wrapper div.components-toggle-group-control{min-height:32px;padding:0}div.dataviews-wrapper div.dataviews-title-field{font-size:var(--font-title-small)}div.dataviews-wrapper span.dataviews-view-list__field-value{font-size:var(--font-body-small)}div.dataviews-wrapper div.dataviews-view-list div[role=row]{border:none}div.dataviews-wrapper div.dataviews-view-list div[role=row] .dataviews-view-list__fields{flex-wrap:nowrap;justify-content:space-between;margin-left:30px}@media(min-width:783px){div.dataviews-wrapper div.dataviews-view-list div[role=row] .dataviews-view-list__fields{flex-wrap:wrap;margin-left:0}}div.dataviews-wrapper div.dataviews-view-list div[role=row]:not(.is-selected).is-hovered,div.dataviews-wrapper div.dataviews-view-list div[role=row]:not(.is-selected):hover{background-color:transparent}div.dataviews-wrapper div.dataviews-view-list div[role=row]:not(.is-selected).is-hovered .dataviews-view-list__fields,div.dataviews-wrapper div.dataviews-view-list div[role=row]:not(.is-selected):hover .dataviews-view-list__fields{color:#757575}@media(min-width:783px){div.dataviews-wrapper button.dataviews-view-list__item{display:none}}div.dataviews-filters__search-widget-listitem span,span.dataviews-filters__summary-filter-text-value{text-transform:capitalize}div.dataviews-filters__search-widget-listitem:hover,div.dataviews-filters__search-widget-listitem[data-active-item]{background-color:var(--tag-color);color:var(--jp-gray-70)}div.dataviews-filters__search-widget-listitem:hover span.dataviews-filters__search-widget-listitem-check{fill:var(--jp-gray-70)}div.dataviews-filters__summary-chip-container button.dataviews-filters__summary-chip-remove.has-values:hover,div.dataviews-filters__summary-chip-container div.dataviews-filters__summary-chip.has-values:hover,div.dataviews-filters__summary-chip-container div.dataviews-filters__summary-chip.has-values[aria-expanded=true]{background-color:var(--tag-color)}button.product-list-item-chevron{align-items:center;background:transparent;border:none;cursor:pointer;display:flex;justify-content:center;left:30px;outline-color:var(--jp-green-40);padding:0;position:absolute;top:calc(50% - 12px)}.Jvb1njqMy7ML1zikhbWn{margin-top:1rem}.mpr8_ygU8woV4bVR1xvw{align-items:center;display:flex;font-size:var(--font-title-small);font-weight:500;line-height:1.5;margin-bottom:.5rem;margin-top:0}.gwO_Q0L0jbwMARVlBezu{color:var(--jp-gray-60);font-family:SF Pro Text,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:var(--font-body-small);font-weight:400;letter-spacing:-.15px;line-height:20px;margin-right:.75rem}.qwy7CsLeEbXvaPwgC9WV{display:flex;flex-flow:row nowrap;max-width:100%;overflow-x:scroll;padding:1px;scrollbar-width:none}.qwy7CsLeEbXvaPwgC9WV::-webkit-scrollbar{display:none}.qwy7CsLeEbXvaPwgC9WV .Hrbg7DeSJs6gas9zdPDR{border-color:var(--jp-gray-5);border-radius:5px;margin-bottom:0;margin-left:1.5rem;min-width:180px;padding:1rem 1.5rem;width:100%}@media only screen and (min-width:960px){.qwy7CsLeEbXvaPwgC9WV .Hrbg7DeSJs6gas9zdPDR{min-width:220px}}.qwy7CsLeEbXvaPwgC9WV .Hrbg7DeSJs6gas9zdPDR:last-child{margin-left:0}.NFpbo5AINn6I6avKFGby{margin-bottom:1.5rem}.aoQZCG0JeyWmy2J6vVxF{font-weight:500;line-height:20px;margin-bottom:.25rem}.M6ApyXg79vuXo6GwDkbO{align-items:flex-end;display:flex;flex-wrap:wrap;font-size:36px;font-weight:400;line-height:40px}.M6ApyXg79vuXo6GwDkbO.DYHb5e6QhgXejWyo9s78{cursor:pointer}.OlInbY5YnDO06MEQHv98{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;line-height:1;margin-left:.5rem}.EtbKbd5m85w7oYT4stIs{color:var(--jp-gray-20);display:none;font-size:var(--font-body-small);font-weight:600;line-height:24px;fill:var(--jp-gray-20)}@media screen and (min-width:960px){.EtbKbd5m85w7oYT4stIs{align-items:center;display:flex}}.EtbKbd5m85w7oYT4stIs.Awr7zl75sfAsFPHK9kDG{color:var(--jp-red-50);fill:var(--jp-red-50)}.EtbKbd5m85w7oYT4stIs.QFSZbIKFdWO3HEPBZyhc{color:var(--jp-green-50);fill:var(--jp-green-50)}.GgJAnS4gaEEGmRCP5n8y{align-content:flex-end;display:flex}.mjiNtwdbKpfo9edGVes4{margin-left:2px}.pAt4v_KG9Ir19wNcEtEj{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;margin-top:calc(var(--spacing-base)*2.5);min-height:28px;width:100%}.vMa4i_Dza2t5Zi_Bw9Nf{background:var(--jp-white-off);padding-top:1px}.jrGNTKcgeXk9HKzolut9{position:relative}.jrGNTKcgeXk9HKzolut9>.wg3mZsoPekZWlBgOvdZ6{overflow:hidden;padding:0}.jrGNTKcgeXk9HKzolut9>.wg3mZsoPekZWlBgOvdZ6.aDxB89WgtARQqNWd4ZeK:before{background-color:var(--jp-red-50);border:2px solid var(--jp-white-off);border-radius:50%;content:"";height:18px;position:absolute;right:-11px;top:-11px;width:18px}.jrGNTKcgeXk9HKzolut9>.sGP8lxDpRSjt0Fh7wxoR{background-color:var(--jp-white);border-radius:50%;box-shadow:0 0 5px 1px rgba(0,0,0,.1);left:16px;padding:8px;position:absolute;top:16px;transform:scale(.75)}.jrGNTKcgeXk9HKzolut9>.sGP8lxDpRSjt0Fh7wxoR:focus,.jrGNTKcgeXk9HKzolut9>.sGP8lxDpRSjt0Fh7wxoR:hover{background-color:var(--jp-white)}.jrGNTKcgeXk9HKzolut9>.sGP8lxDpRSjt0Fh7wxoR:disabled{pointer-events:none}.z5EQSkU36nsjxHEBSfNN{padding:0}.MwBwVaEj6u_zRgfrFR9b{padding:24px 16px}@media screen and (min-width:600){.MwBwVaEj6u_zRgfrFR9b{padding:32px 24px}}@media screen and (min-width:960px){.MwBwVaEj6u_zRgfrFR9b{padding:48px 48px 48px 12px}}.UgPNtuFW7lTJ06k39EsK{background-image:url(images/evaluation-blank-fbbfbcd75b50ade0f092.png),radial-gradient(circle at 40% 70%,rgba(206,217,242,.75) 0,hsla(0,0%,100%,0) 40%),radial-gradient(circle at 80% 80%,rgba(6,158,8,.15) 5%,hsla(0,0%,100%,0) 50%),radial-gradient(circle at 80% 20%,hsla(46,77%,83%,.75) 0,hsla(0,0%,100%,0) 50%);background-position:25%;background-repeat:no-repeat;background-size:393px,cover,cover,cover}.UgPNtuFW7lTJ06k39EsK.ilVOud0_OCGK4HciazB_{background-image:url(images/evaluation-selected-196d1790b76830f9b73a.png),radial-gradient(circle at 40% 70%,rgba(206,217,242,.75) 0,hsla(0,0%,100%,0) 40%),radial-gradient(circle at 80% 80%,rgba(6,158,8,.15) 5%,hsla(0,0%,100%,0) 50%),radial-gradient(circle at 80% 20%,hsla(46,77%,83%,.75) 0,hsla(0,0%,100%,0) 50%)}.EtcggGK0Bk8POQD986Og{background-image:url(images/site-cards-29522f090d5422fd7afd.png),radial-gradient(circle at 90% 30%,rgba(6,158,8,.15) 0,hsla(0,0%,100%,0) 35%),radial-gradient(circle at 75% 65%,rgba(206,217,242,.5) 5%,hsla(0,0%,100%,0) 15%),radial-gradient(circle at 90% 90%,hsla(46,77%,83%,.5) 0,hsla(0,0%,100%,0) 25%);background-repeat:no-repeat;background-size:cover}@media screen and (max-width:960px){.EtcggGK0Bk8POQD986Og{background-image:url(images/site-cards-29522f090d5422fd7afd.png),radial-gradient(circle at 55% 30%,rgba(6,158,8,.15) 0,hsla(0,0%,100%,0) 100%),radial-gradient(circle at 25% 40%,rgba(206,217,242,.5) 5%,hsla(0,0%,100%,0) 50%),radial-gradient(circle at 50% 85%,hsla(46,77%,83%,.3) 0,hsla(0,0%,100%,0) 35%);min-height:160px;order:-1}}.TSiu5sC6MdANROjUkUJM{margin-top:24px}.iqJfpZM9IYXuFSXvuoEe{font-size:16px!important;margin-top:16px}.Vozbq8Inlk5SxoVnn2G5{column-gap:40px;display:flex;flex-direction:row;margin-top:64px}.s_V1BM1Wtt3He4eF2TCu{padding-left:calc(var(--spacing-base)*3);padding-right:calc(var(--spacing-base)*3);text-decoration:none!important}.FMZ2bZdjMxKFePbMwRi3{align-items:center;background-image:radial-gradient(circle at 80% 80%,rgba(6,158,8,.15) 5%,hsla(0,0%,100%,0) 50%);background-position:0 80%;background-repeat:no-repeat;background-size:cover;display:flex;flex-direction:column;justify-content:center;padding:144px 32px}.eShkT8UhgFL0N__pJEA8{display:flex;justify-content:center;margin-bottom:24px}.eShkT8UhgFL0N__pJEA8 .GZ2uVyfGabA_66Y8nmuF{color:var(--jp-green-40);height:88px;transform:scale(1.3);transition:transform .3s ease-out;width:88px}.eShkT8UhgFL0N__pJEA8 .GZ2uVyfGabA_66Y8nmuF .Ktcwz9OsGT_3yNKZq6BA,.eShkT8UhgFL0N__pJEA8 .GZ2uVyfGabA_66Y8nmuF .WQpz4j3rH6uEqAXwDrR8,.eShkT8UhgFL0N__pJEA8 .GZ2uVyfGabA_66Y8nmuF .jkWzdt8A2twwREkaF2qX,.eShkT8UhgFL0N__pJEA8 .GZ2uVyfGabA_66Y8nmuF .lZq4cdGYKYAgiVEYCtXw{opacity:0}.eShkT8UhgFL0N__pJEA8 .GZ2uVyfGabA_66Y8nmuF .jkWzdt8A2twwREkaF2qX{stroke-dasharray:276;stroke-dashoffset:276;animation:w9IUcbm9vJHQeg2OXhtF 2s ease-out forwards}.eShkT8UhgFL0N__pJEA8 .GZ2uVyfGabA_66Y8nmuF .lZq4cdGYKYAgiVEYCtXw{animation:xAohbjzRzlC5o13repbp .5s ease-in-out 1.5s forwards}.eShkT8UhgFL0N__pJEA8.iOKKzf48kelOFS8vRBwR .GZ2uVyfGabA_66Y8nmuF{animation:OrGIdZzrmFu39hFSKNfg 1s ease-out .3s forwards;transform:scale(1.4)}.eShkT8UhgFL0N__pJEA8.iOKKzf48kelOFS8vRBwR .GZ2uVyfGabA_66Y8nmuF .Ktcwz9OsGT_3yNKZq6BA,.eShkT8UhgFL0N__pJEA8.iOKKzf48kelOFS8vRBwR .GZ2uVyfGabA_66Y8nmuF .WQpz4j3rH6uEqAXwDrR8{animation:xAohbjzRzlC5o13repbp .85s ease-out .3s forwards}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .GZ2uVyfGabA_66Y8nmuF{animation:none;transform:scale(1.4)}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .GZ2uVyfGabA_66Y8nmuF .Ktcwz9OsGT_3yNKZq6BA,.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .GZ2uVyfGabA_66Y8nmuF .WQpz4j3rH6uEqAXwDrR8{opacity:1}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z{position:absolute;top:0;transform:translateX(-10px)}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z>g{opacity:0;transform:translateY(-200px)}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z>g:first-child{--duration:0.6s;animation:xAohbjzRzlC5o13repbp .6s ease-in-out .2s forwards,_brJ7gDgGneDqAzmDSZG var(--duration) linear forwards}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z>g:nth-child(2){--duration:0.8s;animation:xAohbjzRzlC5o13repbp .6s ease-in-out .2s forwards,_brJ7gDgGneDqAzmDSZG var(--duration) linear forwards}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z>g:nth-child(3){--duration:1s;animation:xAohbjzRzlC5o13repbp .6s ease-in-out .2s forwards,_brJ7gDgGneDqAzmDSZG var(--duration) linear forwards}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z>g:nth-child(4){--duration:0.7s;animation:xAohbjzRzlC5o13repbp .6s ease-in-out .2s forwards,_brJ7gDgGneDqAzmDSZG var(--duration) linear forwards}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z>g:nth-child(5){--duration:0.9s;animation:xAohbjzRzlC5o13repbp .6s ease-in-out .2s forwards,_brJ7gDgGneDqAzmDSZG var(--duration) linear forwards}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z>g:nth-child(6){--duration:1.1s;animation:xAohbjzRzlC5o13repbp .6s ease-in-out .2s forwards,_brJ7gDgGneDqAzmDSZG var(--duration) linear forwards}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z>g:nth-child(7){--duration:0.75s;animation:xAohbjzRzlC5o13repbp .6s ease-in-out .2s forwards,_brJ7gDgGneDqAzmDSZG var(--duration) linear forwards}.eShkT8UhgFL0N__pJEA8.OqFqx9KLY3auyUaWh5tp .JdllqWQef8TBWPF5UT6Z>g:nth-child(8){--duration:1.1s;animation:xAohbjzRzlC5o13repbp .6s ease-in-out .2s forwards,_brJ7gDgGneDqAzmDSZG var(--duration) linear forwards}@keyframes w9IUcbm9vJHQeg2OXhtF{0%{opacity:1;stroke-dashoffset:276}to{opacity:1;stroke-dashoffset:0}}@keyframes xAohbjzRzlC5o13repbp{to{opacity:1}}@keyframes OrGIdZzrmFu39hFSKNfg{25%{transform:scale(1.25)}to{transform:scale(1.4)}}@keyframes _brJ7gDgGneDqAzmDSZG{0%{transform:translateY(-300px)}to{transform:translateY(0)}}.jErCC9oKHSM15BxzFyQK{margin-bottom:0}.oVoYbwbFB6U2o90Njusk>div{background-color:var(--jp-white);font-size:16px;line-height:24px;margin:0;position:relative}.oVoYbwbFB6U2o90Njusk>div .components-notice__content{align-items:flex-start;display:flex;flex-direction:column;margin:0;padding:12px 4px}@media screen and (min-width:960px){.oVoYbwbFB6U2o90Njusk>div .components-notice__content{gap:6rem}}.oVoYbwbFB6U2o90Njusk>div .is-link{color:var(--jp-black);font-size:16px;font-weight:600;padding:var(--spacing-base) calc(var(--spacing-base)*3)!important;white-space:nowrap}.oVoYbwbFB6U2o90Njusk>div .components-notice__dismiss{align-self:center}.oVoYbwbFB6U2o90Njusk>div .components-notice__action{align-items:center;background:#000;border-radius:var(--jp-border-radius);color:var(--jp-white);cursor:pointer;font-size:16px;font-weight:600;height:auto;justify-content:center;letter-spacing:-.01em;line-height:24px;margin-right:0;margin-top:24px;padding:8px 24px;text-decoration:none}@media screen and (min-width:960px){.oVoYbwbFB6U2o90Njusk>div .components-notice__action{margin-right:calc(var(--spacing-base)*2 + 24px)}}.oVoYbwbFB6U2o90Njusk>div.Snc8NEmDelsbhlH4285s .components-notice__action{margin-right:0;margin-top:0;white-space:nowrap}.oVoYbwbFB6U2o90Njusk>div.Snc8NEmDelsbhlH4285s .components-notice__content{align-items:center;flex-direction:row}@media screen and (max-width:600px){.oVoYbwbFB6U2o90Njusk>div{padding-top:24px}.oVoYbwbFB6U2o90Njusk>div>div:has(svg){position:static}}.oVoYbwbFB6U2o90Njusk .R5tvcsARTGN0A_z3DygA{min-width:auto}.wBVXH4OTNwLHPRpN4nsq{display:flex;flex-grow:1;margin-left:var(--spacing-base)}.wBVXH4OTNwLHPRpN4nsq a{color:var(--jp-black)}.wBVXH4OTNwLHPRpN4nsq a:focus,.wBVXH4OTNwLHPRpN4nsq a:hover{text-decoration:underline;text-decoration-thickness:2px}.wBVXH4OTNwLHPRpN4nsq .terms-of-service{color:var(--jp-gray-70);font-size:var(--font-body-small)}.wBVXH4OTNwLHPRpN4nsq>svg{fill:var(--jp-red-60);align-self:flex-start;flex-shrink:0;margin-left:calc(var(--spacing-base)*2)}.wBVXH4OTNwLHPRpN4nsq>svg.F1qvEnFfHs5nz3zFZUOV{fill:none}.wBVXH4OTNwLHPRpN4nsq .products-list{margin:10px 0}.wBVXH4OTNwLHPRpN4nsq .products-list .product-badge{background-color:#f1f1f1;border-radius:6px;display:inline-block;margin:4px 0 4px 8px;padding:2px 8px}.wBVXH4OTNwLHPRpN4nsq .plugins-list .plugin-item>span{font-size:calc(var(--font-body-extra-small) + 1px);margin-inline-start:5px}.SrQxAOBa5ZaSKP8wlut9{border-bottom:none;margin:0}.TcCZnGE6mad8Dvz9pCZi{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0ibm9uZSI+PHBhdGggc3Ryb2tlPSIjRDYzNjM5IiBzdHJva2Utd2lkdGg9IjEuNSIgZD0iTTEyIDIwYTggOCAwIDEgMCAwLTE2IDggOCAwIDAgMCAwIDE2WiIvPjxwYXRoIGZpbGw9IiNENjM2MzkiIGQ9Ik0xMyA3aC0ydjZoMnpNMTMgMTVoLTJ2MmgyeiIvPjwvc3ZnPg==) no-repeat 100% 0;color:var(--jp-red);line-height:25px;padding-right:25px}._mn6o2Dtm5pfFWc8_A1K{--spacing-base:8px;min-width:264px}.VHYulMcpzbr10HWR0iSE{align-items:flex-start;border:1px solid var(--jp-black);border-color:var(--jp-gray-5);border-radius:4px;border-right-width:6px;display:flex;font-size:var(--font-body);padding:24px 18px 27px 31px}.FGpSkMCiIHQjszcV0dbn{height:calc(var(--spacing-base)*3);margin-left:20px;width:calc(var(--spacing-base)*3)}.KoWZcCwhW13xvkEb0QON{background-color:transparent;border:none;cursor:pointer;outline:none;padding:0}.KoWZcCwhW13xvkEb0QON svg{display:block}@media screen and (max-width:600px){.VHYulMcpzbr10HWR0iSE{box-shadow:0 4px 8px rgba(0,0,0,.03),0 1px 2px rgba(0,0,0,.06);padding-top:68px;position:relative}.FGpSkMCiIHQjszcV0dbn{position:absolute;right:24px;top:24px}.KoWZcCwhW13xvkEb0QON{left:24px;position:absolute;top:24px}}.smrfczkC53EaFM8OJUXs{flex-grow:1}.IKYRWoPwt9xOVEx1wzNS{font-weight:600;margin-bottom:8px}.qM0qY6mPYp1MPN54A3Kg{align-items:center;display:flex;flex-wrap:wrap;margin-top:20px;row-gap:20px}@media screen and (max-width:600px){.qM0qY6mPYp1MPN54A3Kg{justify-content:center}}.qM0qY6mPYp1MPN54A3Kg a,.qM0qY6mPYp1MPN54A3Kg a:active,.qM0qY6mPYp1MPN54A3Kg a:focus,.qM0qY6mPYp1MPN54A3Kg a:hover{color:var(--jp-black)}.qM0qY6mPYp1MPN54A3Kg>*{margin-left:24px}.A5YkDkkXuiYgavrY6Nux{border-right-color:var(--jp-red)}.A5YkDkkXuiYgavrY6Nux .y_IPyP1wIAOhyNaqvXJq{fill:var(--jp-red)}.cT5rwuPMZzWvi5o6shMl{border-right-color:var(--jp-yellow-20)}.cT5rwuPMZzWvi5o6shMl .y_IPyP1wIAOhyNaqvXJq{fill:var(--jp-yellow-20)}.yo0O3uvNomPsYUXFCpAS{border-right-color:var(--black)}.yo0O3uvNomPsYUXFCpAS .y_IPyP1wIAOhyNaqvXJq{fill:var(--black)}.oZdDFf1jBLkzn5ICCC6x{border-right-color:var(--jp-green)}.oZdDFf1jBLkzn5ICCC6x .y_IPyP1wIAOhyNaqvXJq{fill:var(--jp-green)}.jT9Kt2ZTvxPKDQ1pa7sN.components-snackbar-list{inset-block-end:0;inset-block-start:auto;inset-inline:0;position:fixed;z-index:100001}@media(min-width:600px){.jT9Kt2ZTvxPKDQ1pa7sN.components-snackbar-list{inset-block-start:4rem;inset-inline:unset;inset-inline-end:1rem;width:auto}}@media(min-width:782px){.jT9Kt2ZTvxPKDQ1pa7sN.components-snackbar-list{inset-block-start:3rem}}.cAbGtJDGgLubucBnz7vM{background-color:var(--jp-white)}.XsCIqtbkjCGvQuTEqP12{display:flex;flex-direction:column;gap:16px;max-width:450px;width:100%}.FuIWMXR9G82lNoOWSg7Z{font-size:32px;font-weight:500;line-height:40px}.VqV6BERV7qt2YRiC8ant{color:var(--jp-gray-100,#101517);font-size:16px;font-weight:400;line-height:24px;margin-bottom:29px}.H7h4wR1WKIziIFiwJpzN{align-items:center;align-self:stretch;background:transparent;border:1px solid #ccc;border-radius:var(--jp-button-radius);box-shadow:none;display:flex;justify-content:center;margin-bottom:0;padding:14px 16px;width:100%}.H7h4wR1WKIziIFiwJpzN:hover{cursor:pointer}.pSJyHDRGl_R9CF7J_wzX{color:var(--jp-gray-80,#2c3338);font-size:15px;font-style:normal;font-weight:500;line-height:20px;margin-right:-20px;text-align:center;width:100%}.TnFm4M8CVuTak6Vq2NsE{align-items:center;display:flex;margin:20px 0;text-transform:uppercase;width:100%}.TnFm4M8CVuTak6Vq2NsE span{color:var(--jp-gray-60,#50575e);margin:0 16px;white-space:nowrap}.TnFm4M8CVuTak6Vq2NsE .eKWjmNNdlY3uWjVgR8RI{background:rgba(0,0,0,.1);flex:1;height:1px}.Scnx4BQ8P2bIZ0YxBThk{display:flex;flex-direction:column;gap:16px}.Scnx4BQ8P2bIZ0YxBThk .Ps4m_56jJQ5YgQb25OW0{border:1px solid var(--jp-gray-60,#949494);border-radius:var(--jp-button-radius);box-sizing:border-box;color:var(--jp-gray-50,#646970);font-size:15px;line-height:20px;margin:0;padding:12px 16px;width:100%}.Scnx4BQ8P2bIZ0YxBThk .IIUH0pxUdd27eEyqfQFI{background:var(--jp-green-60,#007117);border:1px solid var(--jp-green-60,#007117);border-radius:var(--jp-button-radius);box-sizing:border-box;color:var(--jp-white,#fff);font-size:16px;font-weight:500;line-height:24px;padding:12px 16px;width:100%}.Scnx4BQ8P2bIZ0YxBThk .IIUH0pxUdd27eEyqfQFI:focus,.Scnx4BQ8P2bIZ0YxBThk .IIUH0pxUdd27eEyqfQFI:hover{background:var(--jp-green-70,#00801a);cursor:pointer}.Scnx4BQ8P2bIZ0YxBThk .IIUH0pxUdd27eEyqfQFI:focus{border-color:var(--jp-white,#fff);outline:2px solid var(--jp-green-60,#007117)}.Scnx4BQ8P2bIZ0YxBThk .IIUH0pxUdd27eEyqfQFI:disabled{background:var(--jp-gray,#dcdcde);border-color:var(--jp-gray,#dcdcde);color:var(--jp-gray-50,#646970);cursor:unset}.IySisqLBT5FBSpx8ksyG{color:var(--jp-gray-50,#646970);font-size:13px;line-height:20px;margin-top:8px}.IySisqLBT5FBSpx8ksyG .terms-of-service__link{color:var(--jp-gray-50,#646970);text-decoration:underline}body{font-family:SF Pro Text,-apple-system,BlinkMacSystemFont,Avenir Next,Avenir,Segoe UI,Helvetica Neue,Helvetica,Cantarell,Ubuntu,Roboto,Noto Sans,Arial,sans-serif}#wpwrap{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}.hs8vtMKdbmvStRLqOShe{position:absolute}.a2dTOxFWByKrVw1RIDQT{--max-container-width:100%;background-color:var(--jp-white,#fff);height:100vh;overflow-y:hidden;width:100%}.q0k48EMOblqQLxSxIKZa{overflow:hidden}.w9obJdf7GdvAmyMTJp12{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center}@media screen and (max-width:600px){.w9obJdf7GdvAmyMTJp12{justify-content:flex-start;padding-top:72px}}.Jqm3k3aZ4rGDtBCVeocD{border-radius:12px;max-height:100%}.Jqm3k3aZ4rGDtBCVeocD img{display:block;object-fit:cover;width:100%}@media screen and (max-width:600px){.PhMWEQDEAfUHteBMf1hM{display:none}}.q0T8YyQxRawhpDtvJjxI{background-color:var(--jp-white);height:100%;padding:calc(var(--spacing-base)*8);position:relative}.B7JDqI_vtKxSy5GjvqA1{display:flex;flex-direction:column;height:100%}.zj7xadmhIWeuf7ZwvVTS{align-items:center;background:var(--jp-black);border-radius:var(--jp-border-radius) var(--jp-border-radius) 0 0;color:var(--jp-white);display:flex;height:calc(var(--spacing-base)*4);padding:0 var(--spacing-base);position:absolute;right:0;top:0;width:100%}.GsioW6IsC8EMYE3U6788{fill:var(--jp-white);margin-left:var(--spacing-base)}.cfEO8udWbRGPFJzW8Jg5,.dbz07JqxOlivjKO4vBEF{align-items:center;display:flex;height:calc(var(--spacing-base)*4);margin-bottom:calc(var(--spacing-base)*4)}.zlh3zbjUe4Z8cBs7uVVe{fill:#8c8f94;height:24px;line-height:24px}.qoZuzG5EcDa231hC6t0P{align-items:center;display:flex;justify-content:center}.qoZuzG5EcDa231hC6t0P svg{margin-left:var(--spacing-base)}.Q6uUUQCPWS6_6nLxIn68{display:inline-block;min-height:42px;padding:.5em 2em;text-align:center;width:100%}.Q6uUUQCPWS6_6nLxIn68 .YU4iBCRze09ZP3iCsdcb{margin:0}.Q6uUUQCPWS6_6nLxIn68.components-button.is-primary{height:auto;white-space:normal}.Q6uUUQCPWS6_6nLxIn68.is-secondary:hover:not(:disabled){background-color:var(--jp-black);color:var(--jp-white)}.OrQG7DjDd9Ha2Xj1Mx3L{margin-top:calc(var(--spacing-base)*2)}.Q1jaYDpa2AVfJpA29wT0{flex-grow:1;margin:0;margin-bottom:calc(var(--spacing-base)*2);padding:0}.Q1jaYDpa2AVfJpA29wT0 li{align-items:flex-start;display:flex;list-style:none;margin-bottom:var(--spacing-base)}.Q1jaYDpa2AVfJpA29wT0 svg{fill:var(--jp-green-primary);flex-shrink:0;margin-left:var(--spacing-base)}.HL4gSxsF0skYGhGuqH90 li:last-of-type{font-weight:700}.sEcLfpWjo0GF7QrxD3Lt{margin-top:calc(var(--spacing-base)*2)}.xgv3jRkeF39aEQELCwru{align-items:flex-end;color:var(--jp-black);display:flex;flex-wrap:wrap;gap:calc(var(--spacing-base)*2)}.twlleZ5Ehq4bB7CvKVSW{position:relative}.twlleZ5Ehq4bB7CvKVSW.Qg4rPEvXsqmod1s_31d8{color:var(--jp-gray-20)}.twlleZ5Ehq4bB7CvKVSW.Qg4rPEvXsqmod1s_31d8:after{background:var(--jp-red);border-radius:var(--jp-border-radius);content:" ";display:block;height:3px;margin-top:-2px;pointer-events:none;position:absolute;top:50%;width:100%}.ApsgxIornVy_3KnciVeJ{color:var(--jp-gray-40);margin-bottom:calc(var(--spacing-base)*3)}.NMxcZL17aEP7v81uG3zD{margin-top:calc(var(--spacing-base)*5)}.gCTKfAPzJqZas7CaRbKN{margin-bottom:calc(var(--spacing-base)*4)}.demNsMJjhi7BLY7xhjU5{align-items:center;display:flex;font-size:var(--font-body);line-height:calc(var(--spacing-base)*3);margin:calc(var(--spacing-base)*2) 0;min-height:calc(var(--spacing-base)*3)}.QiUjdjJSkqh6nH7YMG5A{align-self:flex-start;height:calc(var(--spacing-base)*3);margin-left:calc(var(--spacing-base)/2);width:calc(var(--spacing-base)*3)}.Q080AHcq29J2fc68Hhk5{color:var(--jp-red)}.Q080AHcq29J2fc68Hhk5 .hYWbIwhppukXmGnsiT9H{fill:var(--jp-red)}.JjHuxWly0HI9C60gorbq{color:var(--jp-yellow-40)}.JjHuxWly0HI9C60gorbq .hYWbIwhppukXmGnsiT9H{fill:var(--jp-yellow-40)}.Cm8ZFHi3mngl4cj9Gatx{color:var(--jp-blue-40)}.Cm8ZFHi3mngl4cj9Gatx .hYWbIwhppukXmGnsiT9H{fill:var(--jp-blue-40)}.ytGBsU015p3LGwOPwFDx{color:var(--jp-green)}.ytGBsU015p3LGwOPwFDx .hYWbIwhppukXmGnsiT9H{fill:var(--jp-green)}.iSc4n8zVaElbs0TPAWH5{align-items:center;display:flex;gap:20px;height:700px;justify-content:center;margin-top:2rem}:root{--font-title-large:36px;--font-title-small:24px;--font-body:16px;--font-label:12px;--jp-black:#000;--jp-black-80:#2c3338;--jp-white:#fff;--jp-white-off:#f9f9f6;--jp-gray:#dcdcde;--jp-gray-0:#f6f7f7;--jp-gray-5:#dcdcde;--jp-gray-10:#c3c4c7;--jp-gray-20:#a7aaad;--jp-gray-30:#8c8f94;--jp-gray-40:#787c82;--jp-gray-50:#646970;--jp-gray-60:#50575e;--jp-gray-70:#3c434a;--jp-gray-80:#2c3338;--jp-gray-90:#1d2327;--jp-gray-100:#101517;--jp-gray-off:#e2e2df;--jp-yellow-5:#f5e6b3;--jp-yellow-10:#f2cf75;--jp-yellow-40:#c08c00;--jp-orange-20:#faa754;--jp-blue-5:#ced9f2;--jp-red-0:#f7ebec;--jp-red-50:#d63638;--jp-red-60:#b32d2e;--jp-red-80:#8a2424;--jp-red:#d63639;--jp-pink:#c9356e;--jp-green-0:#f0f2eb;--jp-green-5:#d0e6b8;--jp-green-10:#9dd977;--jp-green-20:#64ca43;--jp-green-30:#2fb41f;--jp-green-40:#069e08;--jp-green-50:#008710;--jp-green-60:#007117;--jp-green-70:#005b18;--jp-green-80:#004515;--jp-green-90:#003010;--jp-green-100:#001c09;--jp-green:#069e08;--jp-green-primary:var(--jp-green-40);--jp-green-secondary:var(--jp-green-30);--jp-border-radius:4px;--jp-border-radius-rna:8px;--jp-menu-border-height:1px;--jp-underline-thickness:2px;--jp-modal-padding-large:32px;--jp-modal-padding:24px;--jp-modal-padding-small:16px;--jp-modal-radius:8px;--jp-button-padding:8px;--jp-button-radius:4px;--jp-gap:16px;--jp-highlight:#3858e9}:where(body){font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;margin:0;min-height:100%;padding:0}.jp-wrap{align-items:center;display:flex;flex-wrap:wrap;margin:0 auto;max-width:1128px}.jp-row{display:grid;grid-gap:24px;grid-template-columns:repeat(4,1fr);margin:0 16px;width:100%}@media(min-width:600px){.jp-row{grid-template-columns:repeat(8,1fr);margin:0 18px}}@media(min-width:960px){.jp-row{grid-template-columns:repeat(12,1fr);margin:0 24px;max-width:1128px}}.sm-col-span-1{grid-column-end:span 1}.sm-col-span-2{grid-column-end:span 2}.sm-col-span-3{grid-column-end:span 3}.sm-col-span-4{grid-column-end:span 4}@media(min-width:600px){.md-col-span-1{grid-column-end:span 1}.md-col-span-2{grid-column-end:span 2}.md-col-span-3{grid-column-end:span 3}.md-col-span-4{grid-column-end:span 4}.md-col-span-5{grid-column-end:span 5}.md-col-span-6{grid-column-end:span 6}.md-col-span-7{grid-column-end:span 7}.md-col-span-8{grid-column-end:span 8}}@media(min-width:960px){.lg-col-span-1{grid-column-end:span 1}.lg-col-span-2{grid-column-end:span 2}.lg-col-span-3{grid-column-end:span 3}.lg-col-span-4{grid-column-end:span 4}.lg-col-span-5{grid-column-end:span 5}.lg-col-span-6{grid-column-end:span 6}.lg-col-span-7{grid-column-end:span 7}.lg-col-span-8{grid-column-end:span 8}.lg-col-span-9{grid-column-end:span 9}.lg-col-span-10{grid-column-end:span 10}.lg-col-span-11{grid-column-end:span 11}.lg-col-span-12{grid-column-end:span 12}}@media(max-width:960px){.md-col-span-0{display:none}}@media(max-width:600px){.sm-col-span-0{display:none}}.jp-cut{border:2px solid var(--jp-green-primary);border-radius:var(--jp-border-radius);margin:32px 0;padding:16px 24px 16px 64px;position:relative;text-decoration:none}.jp-cut,.jp-cut span{display:block}.jp-cut span:last-of-type{font-weight:600}.jp-cut:focus span:last-of-type,.jp-cut:hover span:last-of-type{text-decoration:underline;text-decoration-thickness:var(--jp-underline-thickness)}.jp-cut:focus:after,.jp-cut:hover:after{transform:translateY(-50%) translateX(-8px)}.jp-cut:after{color:var(--jp-green-primary);content:"→";font-size:24px;font-weight:600;left:24px;position:absolute;top:50%;transform:translateY(-50%);transition:transform .15s ease-out}.components-popover:not(.is-without-arrow):before{border-color:var(--jp-gray)}.icon-tooltip-helper .components-popover:not([data-y-axis=middle])[data-x-axis=left] .components-popover__content{margin-left:-62px}.icon-tooltip-helper .components-popover:not([data-y-axis=middle])[data-x-axis=right] .components-popover__content{margin-right:-62px}.icon-tooltip-helper .components-popover[data-y-axis=bottom] .components-popover__content{top:2px!important}.icon-tooltip-helper .components-popover:not(.is-without-arrow)[data-y-axis=bottom]:before{top:-6px!important}.icon-tooltip-helper .components-popover:not(.is-without-arrow)[data-y-axis=bottom]:after{top:-4px!important}.icon-tooltip-helper .components-popover[data-y-axis=top] .components-popover__content{bottom:10px!important}.icon-tooltip-helper .components-popover:not(.is-without-arrow)[data-y-axis=top]:before{bottom:3px}.icon-tooltip-helper .components-popover:not(.is-without-arrow)[data-y-axis=top]:after{bottom:4px}.icon-tooltip-helper.is-wide .components-popover__content{width:440px}.icon-tooltip-wrapper{color:var(--jp-black);display:inline-block;position:relative}.icon-tooltip-wrapper .components-button.is-link:focus:not(:disabled){box-shadow:none}.icon-tooltip-helper{height:18px;pointer-events:none;position:absolute;right:-53px;top:0;width:124px}.icon-tooltip-container{pointer-events:all}.icon-tooltip-container .components-popover__content{border:1px solid var(--jp-gray);border-radius:4px;margin:0 10px;max-width:90vw;outline:none;padding:24px;white-space:normal;width:304px}.icon-tooltip-title{font-size:16px;font-weight:600;line-height:19px}.icon-tooltip-title:not(:last-child){margin-bottom:8px}.icon-tooltip-content{font-size:14px;font-weight:400;line-height:24px}.icon-tooltip-content ul{list-style-type:disc;margin:0 1rem 0 0}.icon-tooltip-content ul li:last-child{margin-bottom:0}.p4qz2tkq0p9hxucJ6Qk2{--padding:calc(var(--spacing-base)*4);color:var(--jp-black)}.lbNDyXioOwvyvbALtCBm{--gap:calc(var(--spacing-base)*3);padding:var(--padding) 0;position:relative}.s2Lsn4kbm6BrS3DSndRB .lbNDyXioOwvyvbALtCBm{column-gap:var(--gap);display:grid;grid-auto-flow:column;grid-template-columns:repeat(var(--columns),1fr);grid-template-rows:repeat(var(--rows),minmax(min-content,max-content))}.cLaNK_XcbTGlRQ4Tp43Q{margin-top:var(--padding)}.s2Lsn4kbm6BrS3DSndRB .cLaNK_XcbTGlRQ4Tp43Q{display:contents}.cLaNK_XcbTGlRQ4Tp43Q.CYt1X0eH1icRjhtJ28jx>*{background:var(--jp-white);position:relative}.cLaNK_XcbTGlRQ4Tp43Q.CYt1X0eH1icRjhtJ28jx>:after{bottom:0;box-shadow:0 4px 24px rgba(0,0,0,.05);content:"";left:0;position:absolute;right:0;top:0;z-index:-1}.cLaNK_XcbTGlRQ4Tp43Q>:first-child{border-top-left-radius:var(--jp-border-radius);border-top-right-radius:var(--jp-border-radius);border-width:1px 1px 0}.cLaNK_XcbTGlRQ4Tp43Q>:last-child{border-bottom-left-radius:var(--jp-border-radius);border-bottom-right-radius:var(--jp-border-radius);border-width:0 1px 1px}.DAkZc1P9A3K12fjEliMg{display:flex;flex-direction:column;justify-content:space-between;padding:var(--padding)}.WUBuYABl8nymjs9NnCEL{align-items:center;display:flex;padding-bottom:calc(var(--spacing-base)*2);position:relative}.WUBuYABl8nymjs9NnCEL:not(:nth-child(2)){padding-top:calc(var(--spacing-base)*2)}.WUBuYABl8nymjs9NnCEL:not(:nth-child(2)):before{background-color:var(--jp-gray);content:"";height:1px;left:var(--padding);position:absolute;right:var(--padding);top:0;z-index:5}.s2Lsn4kbm6BrS3DSndRB .WUBuYABl8nymjs9NnCEL:not(:nth-child(2)):before{left:unset;right:0;width:calc(100% + var(--gap))}.s2Lsn4kbm6BrS3DSndRB .lbNDyXioOwvyvbALtCBm>:last-child .WUBuYABl8nymjs9NnCEL:not(:nth-child(2)):before{width:100%}.ANtCFeb41NhA8PA3H7ZN,.WUBuYABl8nymjs9NnCEL:last-of-type{padding-bottom:var(--padding)}.Ql2gy_148yW8Vw5vhaKD{padding-left:var(--padding);padding-right:var(--padding)}.EAQrAnQEW1z1BfdY5gbC{margin:0 var(--spacing-base);fill:var(--jp-gray);flex-shrink:0}.EAQrAnQEW1z1BfdY5gbC.JDSTlLoOC_4aUoH2oNM2{fill:var(--jp-green-40)}.EAQrAnQEW1z1BfdY5gbC.zNdQRJ1w7BvaQOYyqzHK{fill:var(--jp-red-50)}.lr7vbX95SKtoe7DarJcZ{margin-right:auto}.s2Lsn4kbm6BrS3DSndRB .lr7vbX95SKtoe7DarJcZ{margin:0 var(--spacing-base);top:1px}.WUBuYABl8nymjs9NnCEL .KRrGp2xdkeBOxLZeuQ6X{fill:var(--jp-gray-20);flex-shrink:0}.H_ZJiRVJg0LiMXPGOcmt{text-align:center;width:fit-content}.H_ZJiRVJg0LiMXPGOcmt>a{color:#000}.s2Lsn4kbm6BrS3DSndRB .H_ZJiRVJg0LiMXPGOcmt{grid-column:2;overflow:hidden;padding-left:var(--padding);padding-right:var(--padding);white-space:nowrap}.x21z_DixObRDsDaWotP1{align-items:right;display:flex;justify-content:right;margin:0 calc(var(--spacing-base)*4)}.dovianZYLKhnbnh9I06o{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-end}.lljtQMhW7lq5tE5SDJEf{align-items:flex-start;display:flex;flex-basis:0;flex-grow:2}.lljtQMhW7lq5tE5SDJEf .NubApIV1vQCRUNprfm6b{margin-right:auto}.dhFQXpZfMwVI8vuYHnwC{align-items:flex-start;display:inline-flex;flex:0 0 auto;position:relative}.dhFQXpZfMwVI8vuYHnwC:first-child{margin-left:calc(var(--spacing-base)*2)}.dhFQXpZfMwVI8vuYHnwC.eD7hzxFmdtG_MgmBtl_k{color:var(--jp-gray-20)}.dhFQXpZfMwVI8vuYHnwC.eD7hzxFmdtG_MgmBtl_k:after{background:var(--jp-red);border-radius:var(--jp-border-radius);content:" ";display:block;height:3px;margin-top:-2px;pointer-events:none;position:absolute;top:50%;width:100%}.C64ZjjUAqJC1T2Sa7apS{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start;margin-bottom:calc(var(--spacing-base)*3)}.UpZDGew6Ay1hPoP6eI7b{color:var(--jp-gray-40);font-size:var(--font-body-small);line-height:20px}.UpZDGew6Ay1hPoP6eI7b:after{content:"​"}.NubApIV1vQCRUNprfm6b{background-color:var(--jp-yellow-10);border-radius:4px;font-size:13px;font-weight:600;margin-right:var(--spacing-base);padding-left:var(--spacing-base);padding-right:var(--spacing-base)}.TDiiPbuW1Z0_05u_pvcK{font-weight:400}.SWwV4Pw6OZ5vU3PqPXmr{--product-card-shadow:rgb(0 0 0/3%);background-color:var(--jp-white);border:1px solid var(--jp-gray);border-radius:var(--jp-border-radius);box-shadow:0 2px 6px var(--product-card-shadow),0 1px 2px var(--product-card-shadow)}.r7tUofa9Z3A5ziKVR1H7{align-items:center;display:flex}.r7tUofa9Z3A5ziKVR1H7 img{object-fit:cover;width:100%}.i_AnOR3MaQLraGvb2QU5{background-color:#f9f9f6}.YcYvLvdvWrb1EUZoVsE8{display:flex;flex-wrap:wrap;gap:calc(var(--horizontal-spacing)*2);justify-content:space-between}.uGTTsKoIOoZdYhk6uPnl{white-space:nowrap}.uGTTsKoIOoZdYhk6uPnl>span{font-size:var(--font-body-small)}.NzDTsxhX8D1mlckNpewR{font-weight:400!important}.svE2cJL5t2FarzcDQYNe{--product-card-shadow:rgb(0 0 0/3%);background-color:var(--jp-white);border:1px solid var(--jp-gray);border-radius:var(--jp-border-radius);box-shadow:0 2px 6px var(--product-card-shadow),0 1px 2px var(--product-card-shadow)}.dvEJEDNTnmVfVxtLa4uU{align-items:center;display:flex}.dvEJEDNTnmVfVxtLa4uU img{object-fit:cover;width:100%}.K1VY4DNP8PHMWAEVBC_h{background-color:#f9f9f6}.nk_COGPrkBNLp7lVt4sQ{display:flex;flex-wrap:wrap;gap:calc(var(--horizontal-spacing)*2);justify-content:space-between}.ukgQ5TmLablG3svUKjdw{white-space:nowrap}.ukgQ5TmLablG3svUKjdw>span{font-size:var(--font-body-small)}.Vofm70ADXSe43GamWEaF{font-weight:400!important}.EUcF2LKeC2GyhWD2FKCP{background-color:var(--jp-white);height:100%;padding:calc(var(--spacing-base)*8);position:relative}.Bm21LIBQtpRo3ZhOxXBG{display:flex;gap:calc(var(--spacing-base)*2)}.jwIGzADCnBI_ai9xYYiS{align-items:center;display:flex;flex-wrap:nowrap;font-size:22px;padding-bottom:calc(var(--spacing-base)*3);padding-top:calc(var(--spacing-base)*3)}.jwIGzADCnBI_ai9xYYiS .fTbxuhh_SfMgenyWvGN0{padding-bottom:calc(var(--spacing-base)/3);padding-right:var(--spacing-base)}.eR56lApoP14RIBAhO1UN{display:flex;flex-wrap:wrap;gap:calc(var(--spacing-base)*6);justify-content:space-between;margin:0 auto;max-width:1128px}@media only screen and (max-width:1366px){.eR56lApoP14RIBAhO1UN{padding-left:calc(var(--spacing-base)*3);padding-right:calc(var(--spacing-base)*3)}}.eR56lApoP14RIBAhO1UN .vHnITd5JOCOgxCgXTgoD{display:flex;flex:1;flex-direction:column;justify-content:center}@media screen and (min-width:960px){.eR56lApoP14RIBAhO1UN .vHnITd5JOCOgxCgXTgoD{max-width:70%}}.eR56lApoP14RIBAhO1UN .vHnITd5JOCOgxCgXTgoD .vAGLpjIGi6GA8ghbumN7{font-size:36px;font-weight:700;line-height:40px}.eR56lApoP14RIBAhO1UN .vHnITd5JOCOgxCgXTgoD .oag8YaslCEiUVu8GKKL3{font-weight:400;margin:calc(var(--spacing-base)*3) 0}.eR56lApoP14RIBAhO1UN .vHnITd5JOCOgxCgXTgoD .FhH03GPt9FK1VH9NZhYA{align-self:flex-start;font-size:16px;font-weight:500;letter-spacing:-.01em;line-height:24px;padding:var(--spacing-base) calc(var(--spacing-base)*3)}.eR56lApoP14RIBAhO1UN .VUXAtah2JvUCNc4cXjPp{align-items:center;display:flex;flex-wrap:wrap;gap:calc(var(--spacing-base)*3);justify-content:flex-end}@media only screen and (max-width:430px){.eR56lApoP14RIBAhO1UN .VUXAtah2JvUCNc4cXjPp{flex:1}}.eR56lApoP14RIBAhO1UN .dyPAjc3M4y3Q6gJfWnjw{border-color:var(--jp-gray-5);border-radius:5px;flex-grow:0;height:168px;margin-bottom:0;padding:calc(var(--spacing-base)*2) calc(var(--spacing-base)*3);width:168px}@media only screen and (max-width:960px){.eR56lApoP14RIBAhO1UN .dyPAjc3M4y3Q6gJfWnjw{width:30vw}}@media only screen and (max-width:430px){.eR56lApoP14RIBAhO1UN .dyPAjc3M4y3Q6gJfWnjw{min-width:168px;width:100%}}.eR56lApoP14RIBAhO1UN .dyPAjc3M4y3Q6gJfWnjw>div:first-child{display:flex;flex-direction:column;justify-content:space-between}.eR56lApoP14RIBAhO1UN .dyPAjc3M4y3Q6gJfWnjw .Ll1l9bEuf5G5oh3AENep{fill:var(--jp-green)}.eR56lApoP14RIBAhO1UN .dyPAjc3M4y3Q6gJfWnjw .WrzTysWiqUiuEPvpFqau{margin-bottom:var(--spacing-base)}.eR56lApoP14RIBAhO1UN .dyPAjc3M4y3Q6gJfWnjw .d4faYkf9yL7oW7pwcjmP{font-size:36px;font-weight:700}.acffvOSYc5S8x4P_AYnQ{font-size:16px;line-height:24px;padding-bottom:calc(var(--spacing-base)*6);padding-top:calc(var(--spacing-base)*6)}.acffvOSYc5S8x4P_AYnQ:first-child{padding-bottom:0;padding-top:0}.acffvOSYc5S8x4P_AYnQ:nth-child(2n){background-color:var(--jp-white-off);padding-bottom:calc(var(--spacing-base)*8);padding-top:calc(var(--spacing-base)*8)}@media only screen and (max-width:960px){.acffvOSYc5S8x4P_AYnQ:nth-child(2n){padding-bottom:calc(var(--spacing-base)*6);padding-top:calc(var(--spacing-base)*6)}}.acffvOSYc5S8x4P_AYnQ a{color:inherit}.acffvOSYc5S8x4P_AYnQ .M5YNmgy60Q_UtaxKgQcv{margin:0 auto;max-width:744px}@media only screen and (max-width:1366px){.acffvOSYc5S8x4P_AYnQ .M5YNmgy60Q_UtaxKgQcv{padding-left:calc(var(--spacing-base)*3);padding-right:calc(var(--spacing-base)*3)}}.acffvOSYc5S8x4P_AYnQ .HJiOvun8sHkiFpNL0sl6{margin:0 auto;max-width:1128px}@media only screen and (max-width:1366px){.acffvOSYc5S8x4P_AYnQ .HJiOvun8sHkiFpNL0sl6{padding-left:calc(var(--spacing-base)*3);padding-right:calc(var(--spacing-base)*3)}}.acffvOSYc5S8x4P_AYnQ .mXinUJfpSTS9EVB8M8K_{font-size:34px;font-weight:400;line-height:40px;margin:0}.acffvOSYc5S8x4P_AYnQ .QKjsnliPyLu4n08yVUUM{font-size:16px}.acffvOSYc5S8x4P_AYnQ .xQJJkJ4v7Jm8iSJ0z0Dj{font-size:48px;line-height:24px;margin-bottom:calc(var(--spacing-base)*6)}.VWIBGwuHqtAKg_5Hch92{flex-direction:column}.VWIBGwuHqtAKg_5Hch92,.VWIBGwuHqtAKg_5Hch92 .mnkNhprYIatxfziERMwM{display:flex;gap:calc(var(--spacing-base)*3);padding:calc(var(--spacing-base)*2) 0}.VWIBGwuHqtAKg_5Hch92 .mnkNhprYIatxfziERMwM{flex-wrap:wrap;min-height:190px}.VWIBGwuHqtAKg_5Hch92 .WEiaYLqJwV2IzC8LD9Fs{background-color:var(--jp-white-off);border-radius:calc(var(--spacing-base)/2);height:157.5px;width:280px}.VWIBGwuHqtAKg_5Hch92 .WEiaYLqJwV2IzC8LD9Fs iframe{border-radius:inherit}.VWIBGwuHqtAKg_5Hch92 .GJlowVsJybna1MFcIiIU{display:flex;flex:1;flex-direction:column;gap:var(--spacing-base);min-width:280px}.VWIBGwuHqtAKg_5Hch92 .GJlowVsJybna1MFcIiIU ._OeUvI9GrP00qh6Uk7Tg{font-size:20px;font-weight:500;line-height:22px}.VWIBGwuHqtAKg_5Hch92 .GJlowVsJybna1MFcIiIU .C6I5jYHW2IJSDBoKvhcB{color:var(--jp-gray-60);flex-grow:1;font-size:16px;font-weight:300;line-height:24px}.VWIBGwuHqtAKg_5Hch92 .GJlowVsJybna1MFcIiIU .XdnAdAwkxAW5yvUx3NRr{font-size:15px;padding-right:0;text-decoration:underline}.MCKgMfLVZtkgWu5m5u6L{margin-bottom:calc(var(--spacing-base)*8)}.c0SItK48SRkWfZUCECbZ{border:1px solid var(--jp-green-40);border-radius:4px;color:var(--jp-green-40);font-size:12px;font-weight:500;height:22px;margin-right:5px;padding:2px 8px;position:relative;text-transform:uppercase;top:-2px}.uPEKVw20OlWzA_8u7YAc{--font-headline-medium:48px;--font-headline-small:36px;--font-title-medium:24px;--font-body:16px;--font-body-small:14px;--font-body-extra-small:14px;--spacing-base:8px;max-height:calc(100% - 24px)}.uPEKVw20OlWzA_8u7YAc .components-modal__header+div{height:100%}.uPEKVw20OlWzA_8u7YAc .components-modal__content{margin:40px;padding:0}.uPEKVw20OlWzA_8u7YAc .components-modal__header{border-bottom:0;height:40px;padding:8px 8px 0}.uPEKVw20OlWzA_8u7YAc .dZO6FXcGE5vhcJ8Y_C9w{height:100%;padding:8px}@media(max-height:768px){.FmxgyZZvzjuwp3GbBNv1{overflow:scroll;padding-bottom:24px;padding-top:24px}.FmxgyZZvzjuwp3GbBNv1 .uPEKVw20OlWzA_8u7YAc{max-height:unset}}.EtaGFgAv0H3akflLBvof,.f6I4877w7XpHhEnooqks{display:flex;flex-direction:column;gap:1rem;justify-content:space-between}.EtaGFgAv0H3akflLBvof{flex:1}.KGwdaPYtQhRLcUVbDyy9 .product-price_container{align-items:center}.IwiPAQFH04pNmEH07X9N{display:flex;flex-direction:row;gap:8px 24px}.DKmru53sFgfEs9AgBdqM{justify-content:center}.DKmru53sFgfEs9AgBdqM,.DKmru53sFgfEs9AgBdqM img{align-items:center;display:flex;height:auto;max-width:100%;overflow:hidden}.DKmru53sFgfEs9AgBdqM img{max-height:100%;object-fit:contain}.anXLrcgHHsm2LnEfXUVk{padding-top:56.25%;position:relative;width:100%}.anXLrcgHHsm2LnEfXUVk iframe{border:none;height:100%;position:absolute;right:0;top:0;width:100%}.pbC573UpPZ3Z1WF6H0rZ{display:flex;flex-direction:column}.uQb9f6VHehuQfLoouBsQ{flex-grow:1;margin:0;margin-bottom:calc(var(--spacing-base)*2);padding:0}.uQb9f6VHehuQfLoouBsQ li{align-items:flex-start;display:flex;list-style:none;margin-bottom:var(--spacing-base)}.uQb9f6VHehuQfLoouBsQ svg{fill:var(--jp-green-primary);flex-shrink:0;margin-left:var(--spacing-base)}._fUXxnSp5pagKBp9gSN7 *{box-sizing:border-box}#my-jetpack-container{--wp-admin-theme-color:var(--jp-black);--wp-admin-theme-color-darker-10:var(--jp-black-80);--wp-admin-theme-color-darker-20:var(--jp-black-80);height:100%}#my-jetpack-container .jp-dashboard-footer__jetpack-symbol{height:16px}#my-jetpack-container:has(.my-jetpack-deprecate-notice-title) .jetpack-deprecation-notice-link{color:inherit;font-weight:600;padding-left:5px}#my-jetpack-container .my-jetpack-deprecate-notice-title{font-weight:600}#wpbody-content>.notice{display:none!important}#wpwrap{background-color:var(--jp-white-off)}.jetpack-admin-full-screen #wpwrap{top:0}.jetpack-admin-full-screen #wpadminbar{display:none}.jetpack-admin-full-screen #wpbody-content{min-height:100vh!important;padding-bottom:0}.jetpack-admin-full-screen #adminmenumain,.jetpack-admin-full-screen #wpcontent>*,.jetpack-admin-full-screen #wpfooter,.jetpack-admin-full-screen .error,.jetpack-admin-full-screen .notice,.jetpack-admin-full-screen .updated{display:none}.jetpack-admin-full-screen #wpcontent{margin-right:0!important;padding-right:0!important}.jetpack-admin-full-screen #wpcontent>#wpbody{display:block;margin-top:0!important;padding-top:0!important} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/composer.json deleted file mode 100644 index 731f21ec..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/composer.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "name": "automattic/jetpack-my-jetpack", - "description": "WP Admin page with information and configuration shared among all Jetpack stand-alone plugins", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2", - "automattic/jetpack-admin-ui": "^0.5.7", - "automattic/jetpack-assets": "^4.0.14", - "automattic/jetpack-boost-speed-score": "^0.4.6", - "automattic/jetpack-connection": "^6.8.1", - "automattic/jetpack-explat": "^0.2.13", - "automattic/jetpack-jitm": "^4.2.7", - "automattic/jetpack-licensing": "^3.0.8", - "automattic/jetpack-plugins-installer": "^0.5.4", - "automattic/jetpack-redirect": "^3.0.5", - "automattic/jetpack-constants": "^3.0.5", - "automattic/jetpack-plans": "^0.6.1", - "automattic/jetpack-status": "^5.0.10", - "automattic/jetpack-sync": "^4.9.2", - "automattic/jetpack-protect-status": "^0.5.8" - }, - "require-dev": { - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-test-environment": "@dev", - "automattic/phpunit-select-config": "^1.0.1" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "autoload": { - "classmap": [ - "src/", - "src/products" - ] - }, - "scripts": { - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": "pnpm concurrently --names php,js 'php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"' 'pnpm:test-coverage'", - "test-php": [ - "@composer phpunit" - ], - "test-js": [ - "pnpm run test" - ], - "test-js-watch": [ - "Composer\\Config::disableProcessTimeout", - "pnpm run test --watch" - ], - "build-development": [ - "pnpm run build" - ], - "build-production": [ - "NODE_ENV=production pnpm run build" - ], - "watch": [ - "Composer\\Config::disableProcessTimeout", - "pnpm run watch" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-my-jetpack", - "textdomain": "jetpack-my-jetpack", - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-my-jetpack/compare/${old}...${new}" - }, - "branch-alias": { - "dev-trunk": "5.9.x-dev" - }, - "version-constants": { - "::PACKAGE_VERSION": "src/class-initializer.php" - }, - "dependencies": { - "test-only": [ - "packages/search", - "packages/videopress" - ] - } - }, - "config": { - "allow-plugins": { - "roots/wordpress-core-installer": true - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/global.d.ts b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/global.d.ts deleted file mode 100644 index 55655e55..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/global.d.ts +++ /dev/null @@ -1,725 +0,0 @@ -declare module '*.png'; -declare module '*.svg'; -declare module '*.jpeg'; -declare module '*.jpg'; -declare module '*.scss'; - -// These libraries don't have types, this suppresses the TypeScript errors -declare module '@wordpress/components'; -declare module '@wordpress/compose'; -declare module '@wordpress/icons'; -declare module '@automattic/jetpack-connection'; -declare module '@wordpress/url'; -declare module '@wordpress/i18n'; -declare module '@wordpress/element'; - -type ProductStatus = - | 'active' - | 'inactive' - | 'module_disabled' - | 'site_connection_error' - | 'plugin_absent' - | 'plugin_absent_with_plan' - | 'needs_plan' - | 'needs_activation' - | 'needs_first_site_connection' - | 'user_connection_error' - | 'can_upgrade' - | 'needs_attention' - | 'expired' - | 'expiring'; - -type JetpackModule = - | 'anti-spam' - | 'backup' - | 'boost' - | 'crm' - | 'creator' - | 'extras' - | 'ai' - | 'jetpack-ai' - | 'protect' - | 'scan' - | 'search' - | 'social' - | 'stats' - | 'videopress' - | 'security' - | 'growth' - | 'complete' - | 'site-accelerator' - | 'newsletter' - | 'related-posts' - | 'brute-force'; - -type JetpackModuleWithCard = - | 'anti-spam' - | 'backup' - | 'boost' - | 'crm' - | 'jetpack-ai' - | 'protect' - | 'search' - | 'social' - | 'stats' - | 'videopress'; - -type ThreatItem = { - // Protect API properties (free plan) - id: string; - title: string; - fixed_in: string; - description: string | null; - source: string | null; - // Scan API properties (paid plan) - context: string | null; - filename: string | null; - first_detected: string | null; - fixable: boolean | null; - severity: number | null; - signature: string | null; - status: number | null; -}; - -type ScanItem = { - checked: boolean; - name: string; - slug: string; - threats: ThreatItem[]; - type: string; - version: string; -}; - -type RewindStatus = - | 'missing_plan' - | 'no_connected_jetpack' - | 'no_connected_jetpack_with_credentials' - | 'vp_active_on_site' - | 'vp_can_transfer' - | 'host_not_supported' - | 'multisite_not_supported' - | 'no_site_found'; - -type BackupStatus = - | 'started' - | 'finished' - | 'no-credentials' - | 'backups-deactivated' - | 'no-credentials-atomic' - | 'credential-error' - | 'http-only-error' - | 'not-accessible' - | 'backup-deactivated' - | 'Kill switch active' - | 'error' - | 'error-will-retry'; - -type JetpackPlanSlug = - | 'jetpack_premium' - | 'jetpack_business' - | 'jetpack_free' - | 'jetpack_premium_monthly' - | 'jetpack_business_monthly' - | 'jetpack_personal' - | 'jetpack_personal_monthly' - | 'jetpack_security_daily' - | 'jetpack_security_daily_monthly' - | 'jetpack_security_realtime' - | 'jetpack_security_realtime_monthly' - | 'jetpack_growth_bi_yearly' - | 'jetpack_growth_yearly' - | 'jetpack_growth_monthly' - | 'jetpack_complete_bi_yearly' - | 'jetpack_complete' - | 'jetpack_complete_monthly' - | 'jetpack_security_t1_bi_yearly' - | 'jetpack_security_t1_yearly' - | 'jetpack_security_t1_monthly' - | 'jetpack_security_t2_yearly' - | 'jetpack_security_t2_monthly' - | 'jetpack_starter_yearly' - | 'jetpack_starter_monthly' - | 'jetpack_backup_daily' - | 'jetpack_backup_daily_monthly' - | 'jetpack_backup_realtime' - | 'jetpack_backup_realtime_monthly' - | 'jetpack_search_bi_yearly' - | 'jetpack_search' - | 'jetpack_search_monthly' - | 'jetpack_scan_bi_yearly' - | 'jetpack_scan' - | 'jetpack_scan_monthly' - | 'jetpack_scan_realtime' - | 'jetpack_scan_realtime_monthly' - | 'jetpack_anti_spam_bi_yearly' - | 'jetpack_anti_spam' - | 'jetpack_anti_spam_monthly' - | 'jetpack_backup_t1_bi_yearly' - | 'jetpack_backup_t1_yearly' - | 'jetpack_backup_t1_monthly' - | 'jetpack_backup_t2_yearly' - | 'jetpack_backup_t2_monthly' - | 'jetpack_backup_addon_storage_10gb_monthly' - | 'jetpack_backup_addon_storage_100gb_monthly' - | 'jetpack_backup_addon_storage_1tb_monthly' - | 'jetpack_backup_addon_storage_3tb_monthly' - | 'jetpack_backup_addon_storage_5tb_monthly' - | 'jetpack_videopress_bi_yearly' - | 'jetpack_videopress' - | 'jetpack_videopress_monthly' - | 'jetpack_backup_t0_yearly' - | 'jetpack_backup_t0_monthly' - | 'jetpack_search_free' - | 'jetpack_backup_one_time' - | 'jetpack_stats_free_yearly' - | 'jetpack_stats_pwyw_yearly' - | 'jetpack_stats_monthly' - | 'jetpack_stats_yearly' - | 'jetpack_stats_bi_yearly' - | 'jetpack_monitor_monthly' - | 'jetpack_monitor_yearly' - | 'jetpack_boost_bi_yearly' - | 'jetpack_boost_yearly' - | 'jetpack_boost_monthly' - | 'jetpack_ai_monthly' - | 'jetpack_ai_yearly' - | 'jetpack_ai_bi_yearly' - | 'jetpack_social_monthly' - | 'jetpack_social_basic_bi_yearly' - | 'jetpack_social_basic_yearly' - | 'jetpack_social_basic_monthly' - | 'jetpack_social_advanced_bi_yearly' - | 'jetpack_social_advanced_yearly' - | 'jetpack_social_advanced_monthly' - | 'jetpack_golden_token_lifetime' - | 'jetpack_creator_monthly' - | 'jetpack_creator_yearly' - | 'jetpack_creator_bi_yearly' - | 'jetpack_social_v1_monthly' - | 'jetpack_social_v1_yearly' - | 'jetpack_social_v1_bi_yearly'; - -type BadInstallPluginSlug = - | 'jetpack-beta' - | 'jetpack-videopress' - | 'jetpack-boost' - | 'jetpack-protect' - | 'jetpack-crm' - | 'jetpack-search' - | 'vaultpress' - | 'jetpack-social' - | 'jetpack' - | 'jetpack-starter' - | 'jetpack-vaultpress-backup'; - -type JetpackPluginDisplayName = - | 'Jetpack Beta' - | 'Jetpack VideoPress' - | 'Jetpack Boost' - | 'Jetpack Protect' - | 'Jetpack CRM' - | 'Jetpack Search' - | 'VaultPress' - | 'Jetpack Social' - | 'Jetpack' - | 'Jetpack Starter' - | 'Jetpack VaultPress Backup'; - -type JetpackProductName = - | 'Security Bundle' - | 'CRM' - | 'Newsletter' - | 'Site Accelerator' - | 'Social' - | 'VideoPress' - | 'Related Posts' - | 'Starter' - | 'Stats' - | 'Akismet Anti-spam' - | 'Growth Bundle' - | 'Search' - | 'AI' - | 'VaultPress Backup' - | 'Boost' - | 'Extras' - | 'Complete Bundle' - | 'Protect' - | 'Creator' - | 'Scan'; - -type PurchaseProductName = - | 'Jetpack Premium' - | 'Jetpack Personal' - | 'Jetpack Free' - | 'Jetpack Professional' - | 'Jetpack Security Daily' - | 'Jetpack Security Real-time' - | 'Jetpack Complete' - | 'Jetpack Security (10GB)' - | 'Jetpack Security (1TB)' - | 'Jetpack Growth' - | 'Jetpack Starter' - | 'Jetpack Creator' - | 'Jetpack Search Free' - | 'Jetpack Search' - | 'Jetpack Scan Daily' - | 'Jetpack Scan Realtime' - | 'Jetpack Akismet Anti-spam' - | 'Jetpack VaultPress Backup (1GB)' - | 'Jetpack VaultPress Backup (10GB)' - | 'Jetpack VaultPress Backup (1TB)' - | 'Jetpack VaultPress Backup (One-time)' - | 'Jetpack VaultPress Backup Add-on Storage (10GB)' - | 'Jetpack VaultPress Backup Add-on Storage (100GB)' - | 'Jetpack Anti-spam' - | 'Jetpack Backup' - | 'Jetpack Security' - | 'Jetpack CRM' - | 'Jetpack Social' - | 'Jetpack Boost' - | 'Jetpack Stats' - | 'Jetpack Protect' - | 'Jetpack VideoPress'; - -type PlanExpirationAlert = { - product_slug: JetpackPlanSlug; - product_name?: PurchaseProductName; - expiry_date?: string; - expiry_message?: string; - manage_url?: string; - products_effected?: JetpackProductName[]; -}; - -type PlanExpiredAlerts = Record< `${ JetpackPlanSlug }--plan_expired`, PlanExpirationAlert >; - -type MissingConnectionAlertData = { - type: 'site' | 'user'; - is_error: boolean; -}; - -type MissingConnectionAlert = Record< 'missing-connection', MissingConnectionAlertData >; - -type WelcomeBannerActiveAlert = Record< 'welcome-banner-active', null >; - -type BackupFailureAlertData = { - type: 'warning' | 'error'; - data: BackupNeedsAttentionData; -}; - -type BackupFailureAlert = Record< 'backup_failure', BackupFailureAlertData >; - -type ProtectHasThreatsAlertData = { - type: 'warning' | 'error'; - data: ProtectNeedsAttentionData; -}; - -type ProtectHasThreatsAlert = Record< 'protect_has_threats', ProtectHasThreatsAlertData >; - -type PluginsNeedingInstallAlertData = { - needs_installed?: JetpackModule[]; - needs_activated_only?: JetpackModule[]; -}; - -type PluginsNeedingInstallAlert = Record< - `${ JetpackPlanSlug }--plugins_needing_installed_activated`, - PluginsNeedingInstallAlertData ->; - -type RedBubbleAlerts = MissingConnectionAlert & - WelcomeBannerActiveAlert & - PlanExpiredAlerts & - BackupFailureAlert & - ProtectHasThreatsAlert & - PluginsNeedingInstallAlert; - -type BackupNeedsAttentionData = { - source: 'rewind' | 'last_backup'; - status: RewindStatus | BackupStatus; - last_updated: string; -}; - -type ProtectNeedsAttentionData = { - threat_count: number; - critical_threat_count: number; - fixable_threat_ids: number[]; -}; - -type Purchase = { - ID: string; - user_id: string; - blog_id: string; - product_id: string; - subscribed_date: string; - renew: string; - auto_renew: string; - renew_date: string; - inactive_date: string | null; - active: string; - meta: string | object; - ownership_id: string; - most_recent_renew_date: string; - amount: number; - expiry_date: string; - expiry_message: string; - expiry_sub_message: string; - expiry_status: string; - partner_name: string | null; - partner_slug: string | null; - partner_key_id: string | null; - subscription_status: string; - product_name: string; - product_slug: string; - product_type: string; - blog_created_date: string; - blogname: string; - domain: string; - description: string; - attached_to_purchase_id: string | null; - included_domain: string; - included_domain_purchase_amount: number; - currency_code: string; - currency_symbol: string; - renewal_price_tier_slug: string | null; - renewal_price_tier_usage_quantity: number | null; - current_price_tier_slug: string | null; - current_price_tier_usage_quantity: number | null; - price_tier_list: Array< object >; - price_text: string; - bill_period_label: string; - bill_period_days: number; - regular_price_text: string; - regular_price_integer: number; - product_display_price: string; - price_integer: number; - is_cancelable: boolean; - can_explicit_renew: boolean; - can_disable_auto_renew: boolean; - can_reenable_auto_renewal: boolean; - iap_purchase_management_link: string | null; - is_iap_purchase: boolean; - is_locked: boolean; - is_refundable: boolean; - refund_period_in_days: number; - is_renewable: boolean; - is_renewal: boolean; - has_private_registration: boolean; - refund_amount: number; - refund_integer: number; - refund_currency_symbol: string; - refund_text: string; - refund_options: object | null; - total_refund_amount: number; - total_refund_integer: number; - total_refund_currency: string; - total_refund_text: string; - check_dns: boolean; -}; - -type ProtectData = { - scanData: { - core: ScanItem; - current_progress?: string; - data_source: string; - database: string[]; - error: boolean; - error_code?: string; - error_message?: string; - files: string[]; - has_unchecked_items: boolean; - last_checked: string; - num_plugins_threats: number; - num_themes_threats: number; - num_threats: number; - plugins: ScanItem[]; - status: string; - themes: ScanItem[]; - threats?: ThreatItem[]; - }; - wafConfig: { - automatic_rules_available: boolean; - blocked_logins: number; - bootstrap_path: string; - brute_force_protection: boolean; - jetpack_waf_automatic_rules: '1' | ''; - jetpack_waf_ip_allow_list: '1' | ''; - jetpack_waf_ip_block_list: boolean; - jetpack_waf_ip_list: boolean; - jetpack_waf_share_data: '1' | ''; - jetpack_waf_share_debug_data: boolean; - standalone_mode: boolean; - waf_supported: boolean; - waf_enabled: boolean; - }; -}; - -type VideopressData = { - featuredStats?: { - label: string; - period: 'day' | 'year'; - data: { - views: { - current: number; - previous: number; - }; - impressions: { - current: number; - previous: number; - }; - watch_time: { - current: number; - previous: number; - }; - }; - }; - videoCount: number; -}; - -interface Window { - myJetpackInitialState?: { - siteSuffix: string; - siteUrl: string; - latestBoostSpeedScores: { - previousScores: { - desktop: number; - mobile: number; - }; - scores: { - desktop: number; - mobile: number; - }; - theme: string; - timestamp: number; - }; - IDCContainerID: string; - adminUrl: string; - blogID: string; - fileSystemWriteAccess: 'yes' | 'no'; - isStatsModuleActive: string; - canUserViewStats: boolean; - isUserFromKnownHost: string; - loadAddLicenseScreen: string; - myJetpackCheckoutUri: string; - myJetpackFlags: { - showFullJetpackStatsCard: boolean; - videoPressStats: boolean; - }; - purchaseToken: string; - lifecycleStats: { - historicallyActiveModules: JetpackModule[]; - brokenModules: { - needs_site_connection: JetpackModule[]; - needs_user_connection: JetpackModule[]; - }; - isSiteConnected: boolean; - isUserConnected: boolean; - jetpackPlugins: Array< string >; - modules: Array< string >; - }; - myJetpackUrl: string; - myJetpackVersion: string; - plugins: { - [ key: string ]: { - Name: string; - PluginURI: string; - Version: string; - Title: string; - Description: string; - Author: string; - AuthorName: string; - AuthorURI: string; - DomainPath: string; - textDomain: string; - RequiresPHP: string; - RequiresWP: string; - UpdateURI: string; - Network: boolean; - active: boolean; - }; - }; - products: { - items: { - [ key: string ]: { - class: string; - description: string; - category: 'security' | 'performance' | 'growth' | 'create' | 'management'; - disclaimers: Array< string[] >; - features: string[]; - has_free_offering: boolean; - feature_identifying_paid_plan: string; - has_paid_plan_for_product: boolean; - features_by_tier: Array< string >; - is_bundle: boolean; - is_feature: boolean; - is_plugin_active: boolean; - is_tiered_pricing: boolean; - is_upgradable: boolean; - is_upgradable_by_bundle: string[]; - long_description: string; - manage_url: string; - name: string; - plugin_slug: string; - post_activation_url: string; - post_checkout_url?: string; - manage_paid_plan_purchase_url?: string; - renew_paid_plan_purchase_url?: string; - pricing_for_ui?: { - available: boolean; - wpcom_product_slug: string; - wpcom_free_product_slug?: string; - product_term: string; - currency_code: string; - full_price: number; - full_price_per_month?: number; - discount_price: number; - discount_price_per_month?: number; - coupon_discount: number; - is_introductory_offer: boolean; - introductory_offer?: { - cost_per_interval: number; - interval_count: number; - interval_unit: string; - should_prorate_when_offer_ends: boolean; - transition_after_renewal_count: number; - usage_limit?: number; - reason?: { - errors: { - introductoryOfferRemovedSubscriptionFound: string[]; - }; - }; - }; - tiers?: { - [ key: string ]: { - available: boolean; - currencyCode: string; - discountPrice: number; - discountPricePerMonth?: number; - fullPrice: number; - fullPricePerMonth?: number; - introductoryOffer?: { - costPerInterval: number; - intervalCount: number; - intervalUnit: string; - shouldProrateWhenOfferEnds: boolean; - transitionAfterRenewalCount: number; - usageLimit?: number; - reason?: { - errors: { - introductoryOfferRemovedSubscriptionFound: string[]; - }; - }; - }; - isIntroductoryOffer: boolean; - productTerm: string; - wpcomProductSlug: string; - quantity: number; - }; - }; - }; - purchase_url?: string; - requires_user_connection: boolean; - slug: JetpackModule; - standalone_plugin_info: { - has_standalone_plugin: boolean; - is_standalone_installed: boolean; - is_standalone_active: boolean; - }; - status: ProductStatus; - supported_products: string[]; - tiers: string[]; - title: string; - wpcom_product_slug: string; - doesModuleNeedAttention: - | false - | { - type: 'warning' | 'error'; - data: BackupNeedsAttentionData | ProtectNeedsAttentionData; - status?: BackupStatus | RewindStatus; - }; - }; - }; - }; - recommendedModules: { - modules: JetpackModule[] | null; - dismissed: boolean; - isFirstRun: boolean; - }; - themes: { - [ key: string ]: { - Author: string; - Name: string; - RequiresPHP: string; - RequiresWP: string; - Status: string; - Template: string; - TextDomain: string; - ThemeURI: string; - Version: string; - active: boolean; - is_block_theme: boolean; - }; - }; - topJetpackMenuItemUrl: string; - isAtomic: boolean; - sandboxedDomain: string; - isDevVersion: boolean; - userIsAdmin: string; - }; - JP_CONNECTION_INITIAL_STATE: { - apiRoot: string; - apiNonce: string; - registrationNonce: string; - connectionStatus: { - isActive: boolean; - isStaging: boolean; - isRegistered: boolean; - isUserConnected: boolean; - hasConnectedOwner: boolean; - offlineMode: { - isActive: boolean; - constant: boolean; - url: boolean; - filter: boolean; - wpLocalConstant: boolean; - }; - isPublic: boolean; - }; - userConnectionData: { - currentUser: { - isConnected: boolean; - isMaster: boolean; - username: string; - id: number; - blogId: number; - wpcomUser: { - avatar: boolean; - display_name: string; - email: string; - }; - gravatar: string; - permissions: { - admin_page?: boolean; - connect: boolean; - connect_user: boolean; - disconnect: boolean; - edit_posts?: boolean; - manage_modules?: boolean; - manage_options?: boolean; - manage_plugins?: boolean; - network_admin?: boolean; - network_sites_page?: boolean; - publish_posts?: boolean; - view_stats?: boolean; - }; - }; - connectionOwner: null; - }; - connectedPlugins: object; - wpVersion: string; - siteSuffix: string; - connectionErrors: Array< string | object >; - }; - myJetpackRest?: { - apiRoot: string; - apiNonce: string; - }; -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-activitylog.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-activitylog.php deleted file mode 100644 index 4de90c07..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-activitylog.php +++ /dev/null @@ -1,57 +0,0 @@ -is_user_connected() ) { - return; - } - - // Do not display the menu on Multisite. - if ( is_multisite() ) { - return; - } - - $args = array(); - - $blog_id = Connection_Manager::get_site_id( true ); - if ( $blog_id ) { - $args = array( 'site' => $blog_id ); - } - - return Admin_Menu::add_menu( - __( 'Activity Log', 'jetpack-my-jetpack' ), - _x( 'Activity Log', 'product name shown in menu', 'jetpack-my-jetpack' ) . ' ', - 'manage_options', - esc_url( Redirect::get_url( 'cloud-activity-log-wp-menu', $args ) ), - null, - 8 - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-historically-active-modules.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-historically-active-modules.php deleted file mode 100644 index d34ce482..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-historically-active-modules.php +++ /dev/null @@ -1,112 +0,0 @@ - \WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::rest_trigger_historically_active_modules_update', - 'permission_callback' => __CLASS__ . '::permissions_callback', - ) - ); - } - - /** - * Check user capabilities to access historically active modules. - * - * @access public - * @static - * - * @return true|WP_Error - */ - public static function permissions_callback() { - return current_user_can( 'edit_posts' ); - } - - /** - * Update historically active Jetpack plugins - * Historically active is defined as the Jetpack plugins that are installed and active with the required connections - * This array will consist of any plugins that were active at one point in time and are still enabled on the site - * - * @return void - */ - public static function update_historically_active_jetpack_modules() { - $historically_active_modules = \Jetpack_Options::get_option( 'historically_active_modules', array() ); - $products = Products::get_products(); - $product_classes = Products::get_products_classes(); - - foreach ( $products as $product ) { - $product_slug = $product['slug']; - $status = $product_classes[ $product_slug ]::get_status(); - // We want to leave modules in the array if they've been active in the past - // and were not manually disabled by the user. - if ( in_array( $status, Products::$broken_module_statuses, true ) ) { - continue; - } - - // If the module is active and not already in the array, add it - if ( - in_array( $status, Products::$active_module_statuses, true ) && - ! in_array( $product_slug, $historically_active_modules, true ) - ) { - $historically_active_modules[] = $product_slug; - } - - // If the module has been disabled due to a manual user action, - // or because of a missing plan error, remove it from the array - if ( in_array( $status, Products::$disabled_module_statuses, true ) ) { - $historically_active_modules = array_values( array_diff( $historically_active_modules, array( $product_slug ) ) ); - } - } - - \Jetpack_Options::update_option( 'historically_active_modules', array_unique( $historically_active_modules ) ); - } - - /** - * REST API endpoint to trigger an update to the historically active Jetpack modules - * - * @return WP_Error|\WP_REST_Response - */ - public static function rest_trigger_historically_active_modules_update() { - self::update_historically_active_jetpack_modules(); - $historically_active_modules = \Jetpack_Options::get_option( 'historically_active_modules', array() ); - return rest_ensure_response( $historically_active_modules ); - } - - /** - * Set transient to queue an update to the historically active Jetpack modules on the next wp-admin load - * - * @param string $plugin The plugin that triggered the update. This will be present if the function was queued by a plugin activation. - * - * @return void - */ - public static function queue_historically_active_jetpack_modules_update( $plugin = null ) { - $plugin_filenames = Products::get_all_plugin_filenames(); - - if ( ! $plugin || in_array( $plugin, $plugin_filenames, true ) ) { - set_transient( self::UPDATE_HISTORICALLY_ACTIVE_JETPACK_MODULES_KEY, true ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-initializer.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-initializer.php deleted file mode 100644 index 7d1a4a77..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-initializer.php +++ /dev/null @@ -1,698 +0,0 @@ -initialize(); - } - - // Initialize Boost Speed Score - new Speed_Score( array(), 'jetpack-my-jetpack' ); - - // Add custom WP REST API endoints. - add_action( 'rest_api_init', array( __CLASS__, 'register_rest_endpoints' ) ); - - add_action( 'admin_menu', array( __CLASS__, 'add_my_jetpack_menu_item' ) ); - - add_action( 'admin_init', array( __CLASS__, 'setup_historically_active_jetpack_modules_sync' ) ); - // This is later than the admin-ui package, which runs on 1000 - add_action( 'admin_init', array( __CLASS__, 'maybe_show_red_bubble' ), 1001 ); - - //  Set up the ExPlat package endpoints - ExPlat::init(); - - // Sets up JITMS. - JITM::configure(); - - // Add "Activity Log" menu item. - Activitylog::init(); - - // Add "Jetpack Manage" menu item. - Jetpack_Manage::init(); - - /** - * Fires after the My Jetpack package is initialized - * - * @since 0.1.0 - */ - do_action( 'my_jetpack_init' ); - } - - /** - * Acts as a feature flag, returning a boolean for whether we should show the licensing UI. - * - * @since 1.2.0 - * - * @return boolean - */ - public static function is_licensing_ui_enabled() { - // Default changed to true in 1.5.0. - $is_enabled = true; - - /* - * Bail if My Jetpack is not enabled, - * and thus the licensing UI shouldn't be enabled either. - */ - if ( ! self::should_initialize() ) { - $is_enabled = false; - } - - /** - * Acts as a feature flag, returning a boolean for whether we should show the licensing UI. - * - * @param bool $is_enabled Defaults to true. - * - * @since 1.2.0 - * @since 1.5.0 Update default value to true. - */ - return apply_filters( - 'jetpack_my_jetpack_should_enable_add_license_screen', - $is_enabled - ); - } - - /** - * Add My Jetpack menu item to the admin menu. - * - * @return void - */ - public static function add_my_jetpack_menu_item() { - $page_suffix = Admin_Menu::add_menu( - __( 'My Jetpack', 'jetpack-my-jetpack' ), - __( 'My Jetpack', 'jetpack-my-jetpack' ), - 'edit_posts', - 'my-jetpack', - array( __CLASS__, 'admin_page' ), - -1 - ); - add_action( 'load-' . $page_suffix, array( __CLASS__, 'admin_init' ) ); - } - - /** - * Callback for the load my jetpack page hook. - * - * @return void - */ - public static function admin_init() { - self::$site_info = self::get_site_info(); - add_filter( 'identity_crisis_container_id', array( static::class, 'get_idc_container_id' ) ); - add_action( 'admin_enqueue_scripts', array( __CLASS__, 'enqueue_scripts' ) ); - // Product statuses are constantly changing, so we never want to cache the page. - header( 'Cache-Control: no-cache, no-store, must-revalidate' ); - header( 'Pragma: no-cache' ); - header( 'Expires: 0' ); - } - - /** - * Returns whether we are in condition to track to use - * Analytics functionality like Tracks, MC, or GA. - */ - public static function can_use_analytics() { - $status = new Status(); - $connection = new Connection_Manager(); - $tracking = new Tracking( 'jetpack', $connection ); - - return $tracking->should_enable_tracking( new Terms_Of_Service(), $status ); - } - - /** - * Enqueue admin page assets. - * - * @return void - */ - public static function enqueue_scripts() { - /** - * Fires after the My Jetpack page is initialized. - * Allows for enqueuing additional scripts only on the My Jetpack page. - * - * @since 4.35.7 - */ - do_action( 'myjetpack_enqueue_scripts' ); - Assets::register_script( - 'my_jetpack_main_app', - '../build/index.js', - __FILE__, - array( - 'enqueue' => true, - 'in_footer' => true, - 'textdomain' => 'jetpack-my-jetpack', - ) - ); - $modules = new Modules(); - $connection = new Connection_Manager(); - $speed_score_history = new Speed_Score_History( get_site_url() ); - $latest_score = $speed_score_history->latest(); - $previous_score = array(); - if ( $speed_score_history->count() > 1 ) { - $previous_score = $speed_score_history->latest( 1 ); - } - $latest_score['previousScores'] = $previous_score['scores'] ?? array(); - - $sandboxed_domain = ''; - $is_dev_version = false; - if ( class_exists( 'Jetpack' ) ) { - $is_dev_version = Jetpack::is_development_version(); - $sandboxed_domain = defined( 'JETPACK__SANDBOX_DOMAIN' ) ? JETPACK__SANDBOX_DOMAIN : ''; - } - - wp_localize_script( - 'my_jetpack_main_app', - 'myJetpackInitialState', - array( - 'products' => array( - 'items' => Products::get_products(), - ), - 'plugins' => Plugins_Installer::get_plugins(), - 'themes' => Sync_Functions::get_themes(), - 'myJetpackUrl' => admin_url( 'admin.php?page=my-jetpack' ), - 'myJetpackCheckoutUri' => admin_url( 'admin.php?page=my-jetpack' ), - 'topJetpackMenuItemUrl' => Admin_Menu::get_top_level_menu_item_url(), - 'siteSuffix' => ( new Status() )->get_site_suffix(), - 'siteUrl' => esc_url( get_site_url() ), - 'blogID' => Connection_Manager::get_site_id( true ), - 'myJetpackVersion' => self::PACKAGE_VERSION, - 'myJetpackFlags' => self::get_my_jetpack_flags(), - 'fileSystemWriteAccess' => self::has_file_system_write_access(), - 'loadAddLicenseScreen' => self::is_licensing_ui_enabled(), - 'adminUrl' => esc_url( admin_url() ), - 'IDCContainerID' => static::get_idc_container_id(), - 'userIsAdmin' => current_user_can( 'manage_options' ), - 'lifecycleStats' => array( - 'jetpackPlugins' => self::get_installed_jetpack_plugins(), - 'historicallyActiveModules' => \Jetpack_Options::get_option( 'historically_active_modules', array() ), - 'brokenModules' => Red_Bubble_Notifications::check_for_broken_modules(), - 'isSiteConnected' => $connection->is_connected(), - 'isUserConnected' => $connection->is_user_connected(), - 'modules' => self::get_active_modules(), - ), - 'recommendedModules' => array( - 'modules' => self::get_recommended_modules(), - 'isFirstRun' => \Jetpack_Options::get_option( 'recommendations_first_run', true ), - 'dismissed' => \Jetpack_Options::get_option( 'dismissed_recommendations', false ), - ), - 'isStatsModuleActive' => $modules->is_active( 'stats' ), - 'canUserViewStats' => current_user_can( 'manage_options' ) || current_user_can( 'view_stats' ), - 'sandboxedDomain' => $sandboxed_domain, - 'isDevVersion' => $is_dev_version, - 'isAtomic' => ( new Status_Host() )->is_woa_site(), - 'latestBoostSpeedScores' => $latest_score, - ) - ); - - wp_localize_script( - 'my_jetpack_main_app', - 'myJetpackRest', - array( - 'apiRoot' => esc_url_raw( rest_url() ), - 'apiNonce' => wp_create_nonce( 'wp_rest' ), - ) - ); - - // Connection Initial State. - Connection_Initial_State::render_script( 'my_jetpack_main_app' ); - - // Required for Analytics. - if ( self::can_use_analytics() ) { - Tracking::register_tracks_functions_scripts( true ); - } - } - - /** - * Get installed Jetpack plugins - * - * @return array - */ - public static function get_installed_jetpack_plugins() { - $plugin_slugs = array_keys( Plugins_Installer::get_plugins() ); - $plugin_slugs = array_map( - static function ( $slug ) { - $parts = explode( '/', $slug ); - if ( empty( $parts ) ) { - return ''; - } - // Return the last segment of the filepath without the PHP extension - return str_replace( '.php', '', $parts[ count( $parts ) - 1 ] ); - }, - $plugin_slugs - ); - - return array_values( array_intersect( self::JETPACK_PLUGIN_SLUGS, $plugin_slugs ) ); - } - - /** - * Get active modules (except ones enabled by default) - * - * @return array - */ - public static function get_active_modules() { - $modules = new Modules(); - $active_modules = $modules->get_active(); - - // if the Jetpack plugin is active, filter out the modules that are active by default - if ( class_exists( 'Jetpack' ) && ! empty( $active_modules ) ) { - $active_modules = array_diff( $active_modules, Jetpack::get_default_modules() ); - } - return array_values( $active_modules ); - } - - /** - * Determine if the current user is "new" to Jetpack - * This is used to vary some messaging in My Jetpack - * - * On the front-end, purchases are also taken into account - * - * @return bool - */ - public static function is_jetpack_user_new() { - // is the user connected? - $connection = new Connection_Manager(); - if ( $connection->is_user_connected() ) { - return false; - } - - // TODO: add a data point for the last known connection/ disconnection time - - // are any modules active? - $active_modules = self::get_active_modules(); - if ( ! empty( $active_modules ) ) { - return false; - } - - // check for other Jetpack plugins that are installed on the site (active or not) - // If there's more than one Jetpack plugin active, this user is not "new" - $plugin_slugs = array_keys( Plugins_Installer::get_plugins() ); - $plugin_slugs = array_map( - static function ( $slug ) { - $parts = explode( '/', $slug ); - if ( empty( $parts ) ) { - return ''; - } - // Return the last segment of the filepath without the PHP extension - return str_replace( '.php', '', $parts[ count( $parts ) - 1 ] ); - }, - $plugin_slugs - ); - $installed_jetpack_plugins = array_intersect( self::JETPACK_PLUGIN_SLUGS, $plugin_slugs ); - if ( is_countable( $installed_jetpack_plugins ) && count( $installed_jetpack_plugins ) >= 2 ) { - return false; - } - - // Does the site have any purchases? - $purchases = Wpcom_Products::get_site_current_purchases(); - if ( ! empty( $purchases ) && ! is_wp_error( $purchases ) ) { - return false; - } - - return true; - } - - /** - * Build flags for My Jetpack UI - * - * @return array - */ - public static function get_my_jetpack_flags() { - $flags = array( - 'videoPressStats' => Jetpack_Constants::is_true( 'JETPACK_MY_JETPACK_VIDEOPRESS_STATS_ENABLED' ), - 'showFullJetpackStatsCard' => class_exists( 'Jetpack' ), - ); - - return $flags; - } - - /** - * Echoes the admin page content. - * - * @return void - */ - public static function admin_page() { - echo '
              '; - } - - /** - * Register the REST API routes. - * - * @return void - */ - public static function register_rest_endpoints() { - new REST_Products(); - new REST_Purchases(); - new REST_Zendesk_Chat(); - new REST_AI(); - new REST_Recommendations_Evaluation(); - - Products::register_product_endpoints(); - Historically_Active_Modules::register_rest_endpoints(); - Jetpack_Manage::register_rest_endpoints(); - Red_Bubble_Notifications::register_rest_endpoints(); - - register_rest_route( - 'my-jetpack/v1', - 'site', - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::get_site', - 'permission_callback' => __CLASS__ . '::permissions_callback', - ) - ); - - register_rest_route( - 'my-jetpack/v1', - 'site/dismiss-welcome-banner', - array( - 'methods' => \WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::dismiss_welcome_banner', - 'permission_callback' => __CLASS__ . '::permissions_callback', - ) - ); - } - - /** - * Check user capability to access the endpoint. - * - * @access public - * @static - * - * @return true|WP_Error - */ - public static function permissions_callback() { - return current_user_can( 'manage_options' ); - } - - /** - * Return true if we should initialize the My Jetpack admin page. - */ - public static function should_initialize() { - $should = true; - - if ( is_multisite() ) { - $should = false; - } - - // All options presented in My Jetpack require a connection to WordPress.com. - if ( ( new Status() )->is_offline_mode() ) { - $should = false; - } - - /** - * Allows filtering whether My Jetpack should be initialized. - * - * @since 0.5.0-alpha - * - * @param bool $shoud_initialize Should we initialize My Jetpack? - */ - return apply_filters( 'jetpack_my_jetpack_should_initialize', $should ); - } - - /** - * Hook into several connection-based actions to update the historically active Jetpack modules - * If the transient that indicates the list needs to be synced, update it and delete the transient - * - * @return void - */ - public static function setup_historically_active_jetpack_modules_sync() { - // yummmm. ham. - $ham = new Historically_Active_Modules(); - if ( get_transient( $ham::UPDATE_HISTORICALLY_ACTIVE_JETPACK_MODULES_KEY ) && ! wp_doing_ajax() ) { - $ham::update_historically_active_jetpack_modules(); - delete_transient( $ham::UPDATE_HISTORICALLY_ACTIVE_JETPACK_MODULES_KEY ); - } - - $actions = array( - 'jetpack_site_registered', - 'jetpack_user_authorized', - 'activated_plugin', - ); - - foreach ( $actions as $action ) { - add_action( $action, array( $ham, 'queue_historically_active_jetpack_modules_update' ), 5 ); - } - - // Modules are often updated async, so we need to update them right away as there will sometimes be no page reload. - add_action( 'jetpack_activate_module', array( $ham, 'update_historically_active_jetpack_modules' ), 5 ); - } - - /** - * Site full-data endpoint. - * - * @return object Site data. - */ - public static function get_site() { - $site_id = \Jetpack_Options::get_option( 'id' ); - $wpcom_endpoint = sprintf( '/sites/%d?force=wpcom', $site_id ); - $wpcom_api_version = '1.1'; - $response = Client::wpcom_json_api_request_as_blog( $wpcom_endpoint, $wpcom_api_version ); - $response_code = wp_remote_retrieve_response_code( $response ); - $body = json_decode( wp_remote_retrieve_body( $response ) ); - - if ( is_wp_error( $response ) || empty( $response['body'] ) ) { - return new WP_Error( 'site_data_fetch_failed', 'Site data fetch failed', array( 'status' => $response_code ) ); - } - - return rest_ensure_response( $body ); - } - - /** - * Populates the self::$site_info var with site data from the /sites/%d endpoint - * - * @return object|WP_Error - */ - public static function get_site_info() { - static $site_info = null; - - if ( $site_info !== null ) { - return $site_info; - } - - // Check for a cached value before doing lookup - $stored_site_info = get_transient( self::MY_JETPACK_SITE_INFO_TRANSIENT_KEY ); - if ( $stored_site_info !== false ) { - return $stored_site_info; - } - - $response = self::get_site(); - if ( is_wp_error( $response ) ) { - return $response; - } - $site_info = $response->data; - set_transient( self::MY_JETPACK_SITE_INFO_TRANSIENT_KEY, $site_info, DAY_IN_SECONDS ); - - return $site_info; - } - - /** - * Returns whether a site has been determined "commercial" or not. - * - * @return bool|null - */ - public static function is_commercial_site() { - if ( is_wp_error( self::$site_info ) ) { - return null; - } - - return empty( self::$site_info->options->is_commercial ) ? false : self::$site_info->options->is_commercial; - } - - /** - * Check if site is registered (has been connected before). - * - * @return bool - */ - public static function is_registered() { - return (bool) \Jetpack_Options::get_option( 'id' ); - } - - /** - * Dismiss the welcome banner. - * - * @return \WP_REST_Response - */ - public static function dismiss_welcome_banner() { - \Jetpack_Options::update_option( 'dismissed_welcome_banner', true ); - return rest_ensure_response( array( 'success' => true ) ); - } - - /** - * Returns true if the site has file write access to the plugins folder, false otherwise. - * - * @return string - **/ - public static function has_file_system_write_access() { - - $cache = get_transient( 'my_jetpack_write_access' ); - - if ( false !== $cache ) { - return $cache; - } - - if ( ! function_exists( 'get_filesystem_method' ) ) { - require_once ABSPATH . 'wp-admin/includes/file.php'; - } - - require_once ABSPATH . 'wp-admin/includes/template.php'; - - $write_access = 'no'; - - $filesystem_method = get_filesystem_method( array(), WP_PLUGIN_DIR ); - if ( 'direct' === $filesystem_method ) { - $write_access = 'yes'; - } - - if ( ! $write_access ) { - ob_start(); - $filesystem_credentials_are_stored = request_filesystem_credentials( self_admin_url() ); - ob_end_clean(); - - if ( $filesystem_credentials_are_stored ) { - $write_access = 'yes'; - } - } - - set_transient( 'my_jetpack_write_access', $write_access, 30 * MINUTE_IN_SECONDS ); - - return $write_access; - } - - /** - * Get container IDC for the IDC screen. - * - * @return string - */ - public static function get_idc_container_id() { - return static::IDC_CONTAINER_ID; - } - - /** - * Conditionally append the red bubble notification to the "Jetpack" menu item if there are alerts to show - * - * @return void - */ - public static function maybe_show_red_bubble() { - global $menu; - - // Don't show red bubble alerts for non-admin users - // These alerts are generally only actionable for admins - if ( ! current_user_can( 'manage_options' ) ) { - return; - } - $rbn = new Red_Bubble_Notifications(); - - // filters for the items in this file - add_filter( 'my_jetpack_red_bubble_notification_slugs', array( $rbn, 'add_red_bubble_alerts' ) ); - $red_bubble_alerts = array_filter( - $rbn::get_red_bubble_alerts(), - function ( $alert ) { - // We don't want to show the red bubble for silent alerts - return empty( $alert['is_silent'] ); - } - ); - - // The Jetpack menu item should be on index 3 - if ( - ! empty( $red_bubble_alerts ) && - is_countable( $red_bubble_alerts ) && - isset( $menu[3] ) && - $menu[3][0] === 'Jetpack' - ) { - // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited - $menu[3][0] .= sprintf( ' %d', count( $red_bubble_alerts ) ); - } - } - - /** - * Get list of module names sorted by their recommendation score - * - * @return array|null - */ - public static function get_recommended_modules() { - $recommendations_evaluation = \Jetpack_Options::get_option( 'recommendations_evaluation', null ); - - if ( ! $recommendations_evaluation ) { - return null; - } - - arsort( $recommendations_evaluation ); // Sort by scores in descending order - - return array_keys( $recommendations_evaluation ); // Get only module names - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-jetpack-manage.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-jetpack-manage.php deleted file mode 100644 index 81fc9acc..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-jetpack-manage.php +++ /dev/null @@ -1,172 +0,0 @@ - \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::get_jetpack_manage_data', - 'permission_callback' => __CLASS__ . '::permissions_callback', - ) - ); - } - - /** - * Check user capabilities to access historically active modules. - * - * @access public - * @static - * - * @return true|WP_Error - */ - public static function permissions_callback() { - return current_user_can( 'manage_options' ); - } - - /** - * The page to be added to submenu - * - * @return void|null|string The resulting page's hook_suffix - */ - public static function add_submenu_jetpack() { - // Do not display the menu if the user has < 2 sites. - if ( ! self::could_use_jp_manage( 2 ) ) { - return; - } - - $args = array(); - - $blog_id = Connection_Manager::get_site_id( true ); - if ( $blog_id ) { - $args = array( 'site' => $blog_id ); - } - - return Admin_Menu::add_menu( - __( 'Jetpack Manage', 'jetpack-my-jetpack' ), - _x( 'Jetpack Manage', 'product name shown in menu', 'jetpack-my-jetpack' ) . ' ', - 'manage_options', - esc_url( Redirect::get_url( 'cloud-manage-dashboard-wp-menu', $args ) ), - null, - 15 - ); - } - - /** - * Check if the user has enough sites to be able to use Jetpack Manage. - * - * @param int $min_sites Minimum number of sites to be able to use Jetpack Manage. - * - * @return bool Return true if the user has enough sites to be able to use Jetpack Manage. - */ - public static function could_use_jp_manage( $min_sites = 2 ) { - // Only proceed if the user is connected to WordPress.com. - if ( ! ( new Connection_Manager() )->is_user_connected() ) { - return false; - } - - // Do not display the menu if Jetpack plugin is not installed. - if ( ! class_exists( 'Jetpack' ) ) { - return false; - } - - // Do not display the menu on Multisite. - if ( is_multisite() ) { - return false; - } - - // Check if the user has the minimum number of sites. - $user_data = ( new Connection_Manager() )->get_connected_user_data( get_current_user_id() ); - if ( ! isset( $user_data['site_count'] ) || $user_data['site_count'] < $min_sites ) { - return false; - } - - return true; - } - - /** - * Check if the user is a partner/agency. - * - * @return bool Return true if the user is a partner/agency, otherwise false. - */ - public static function is_agency_account() { - // Only proceed if the user is connected to WordPress.com. - if ( ! ( new Connection_Manager() )->is_user_connected() ) { - return false; - } - - // Get the cached partner data. - $partner = get_transient( 'jetpack_partner_data' ); - - if ( $partner === false ) { - $wpcom_response = Client::wpcom_json_api_request_as_user( '/jetpack-partners' ); - - if ( 200 !== wp_remote_retrieve_response_code( $wpcom_response ) || is_wp_error( $wpcom_response ) ) { - return false; - } - - $partner_data = json_decode( wp_remote_retrieve_body( $wpcom_response ) ); - - // The jetpack-partners endpoint will return only one partner data into an array, it uses Jetpack_Partner::find_by_owner. - if ( ! is_array( $partner_data ) || count( $partner_data ) !== 1 || ! is_object( $partner_data[0] ) ) { - return false; - } - - $partner = $partner_data[0]; - - // Cache the partner data for 1 hour. - set_transient( 'jetpack_partner_data', $partner, HOUR_IN_SECONDS ); - } - - return $partner->partner_type === 'agency'; - } - - /** - * Get Jetpack Manage data for REST API. - * - * @return WP_Error|WP_REST_Response - */ - public static function get_jetpack_manage_data() { - $is_enabled = self::could_use_jp_manage(); - $is_agency_account = self::is_agency_account(); - - return rest_ensure_response( - array( - 'isEnabled' => $is_enabled, - 'isAgencyAccount' => $is_agency_account, - ) - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-products.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-products.php deleted file mode 100644 index 02e056d5..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-products.php +++ /dev/null @@ -1,465 +0,0 @@ - Products\Anti_Spam::class, - 'backup' => Products\Backup::class, - 'boost' => Products\Boost::class, - 'crm' => Products\Crm::class, - 'creator' => Products\Creator::class, - 'extras' => Products\Extras::class, - 'jetpack-ai' => Products\Jetpack_Ai::class, - // TODO: Remove this duplicate class ('ai')? See: https://github.com/Automattic/jetpack/pull/35910#pullrequestreview-2456462227 - 'ai' => Products\Jetpack_Ai::class, - 'scan' => Products\Scan::class, - 'search' => Products\Search::class, - 'social' => Products\Social::class, - 'security' => Products\Security::class, - 'protect' => Products\Protect::class, - 'videopress' => Products\Videopress::class, - 'stats' => Products\Stats::class, - 'growth' => Products\Growth::class, - 'complete' => Products\Complete::class, - // Features - 'newsletter' => Products\Newsletter::class, - 'site-accelerator' => Products\Site_Accelerator::class, - 'related-posts' => Products\Related_Posts::class, - ); - - /** - * This filter allows plugin to override the Product class of a given product. The new class must be a child class of the default one declared in My Jetpack - * - * For example, a stand-alone plugin could overwrite its product class to control specific behavior of the product in the My Jetpack page after it is active without having to commit changes to the My Jetpack package: - * - * add_filter( 'my_jetpack_products_classes', function( $classes ) { - * $classes['my_plugin'] = 'My_Plugin'; // a class that extends the original one declared in the My Jetpack package. - * return $classes - * } ); - * - * @param array $classes An array where the keys are the product slugs and the values are the class names. - */ - $final_classes = apply_filters( 'my_jetpack_products_classes', $classes ); - - // Check that the classes are still child of the same original classes. - foreach ( (array) $final_classes as $slug => $final_class ) { - if ( $final_class === $classes[ $slug ] ) { - continue; - } - if ( ! class_exists( $final_class ) || ! is_subclass_of( $final_class, $classes[ $slug ] ) ) { - throw new \Exception( 'You can only overwrite a Product class with a child of the original class.' ); - } - } - - return $final_classes; - } - - /** - * Register endpoints related to product classes - * - * @return void - */ - public static function register_product_endpoints() { - $classes = self::get_products_classes(); - - foreach ( $classes as $class ) { - $class::register_endpoints(); - } - } - - /** - * List of product slugs that are displayed on the main My Jetpack page - * - * @var array - */ - public static $shown_products = array( - 'anti-spam', - 'backup', - 'boost', - 'crm', - 'jetpack-ai', - 'search', - 'social', - 'protect', - 'videopress', - 'stats', - ); - - /** - * Gets the list of product slugs that are Not displayed on the main My Jetpack page - * - * @return array - */ - public static function get_not_shown_products() { - return array_diff( array_keys( static::get_products_classes() ), self::$shown_products ); - } - - /** - * Product data - * - * @param array $product_slugs (optional) An array of specified product slugs. - * @return array Jetpack products on the site and their availability. - */ - public static function get_products( $product_slugs = array() ) { - $all_classes = self::get_products_classes(); - $products = array(); - // If an array of $product_slugs are passed, return only the products specified in $product_slugs array - if ( $product_slugs ) { - foreach ( $product_slugs as $product_slug ) { - if ( isset( $all_classes[ $product_slug ] ) ) { - $class = $all_classes[ $product_slug ]; - $products[ $product_slug ] = $class::get_info(); - } - } - - return $products; - } - // Otherwise return All products. - foreach ( $all_classes as $slug => $class ) { - $products[ $slug ] = $class::get_info(); - } - - return $products; - } - - /** - * Get products data related to the wpcom api - * - * @param array $product_slugs - (optional) An array of specified product slugs. - * @return array - */ - public static function get_products_api_data( $product_slugs = array() ) { - $all_classes = self::get_products_classes(); - $products = array(); - // If an array of $product_slugs are passed, return only the products specified in $product_slugs array - if ( $product_slugs ) { - foreach ( $product_slugs as $product_slug ) { - if ( isset( $all_classes[ $product_slug ] ) ) { - $class = $all_classes[ $product_slug ]; - $products[ $product_slug ] = $class::get_wpcom_info(); - } - } - - return $products; - } - // Otherwise return All products. - foreach ( $all_classes as $slug => $class ) { - $products[ $slug ] = $class::get_wpcom_info(); - } - - return $products; - } - - /** - * Get a list of products sorted by whether or not the user owns them - * An owned product is defined as a product that is any of the following - * - Active - * - Has historically been active - * - The user has a plan that includes the product - * - The user has the standalone plugin for the product installed - * - * @param string $type The type of ownership to return ('owned' or 'unowned'). - * - * @return array - */ - public static function get_products_by_ownership( $type ) { - $owned_active_products = array(); - $owned_warning_products = array(); - $owned_inactive_products = array(); - $unowned_products = array(); - - foreach ( self::get_products_classes() as $class ) { - $product_slug = $class::$slug; - $status = $class::get_status(); - - if ( $class::is_owned() ) { - // This sorts the the products in the order of active -> warning -> inactive. - // This enables the frontend to display them in that order. - // This is not needed for unowned products as those will always have a status of 'inactive' - if ( in_array( $status, self::$active_module_statuses, true ) ) { - array_push( $owned_active_products, $product_slug ); - } elseif ( in_array( $status, self::$warning_module_statuses, true ) ) { - array_push( $owned_warning_products, $product_slug ); - } else { - array_push( $owned_inactive_products, $product_slug ); - } - continue; - } - - array_push( $unowned_products, $product_slug ); - } - - $data = array( - 'owned' => array_values( - array_unique( - array_merge( - $owned_active_products, - $owned_warning_products, - $owned_inactive_products - ) - ) - ), - 'unowned' => array_values( - array_unique( $unowned_products ) - ), - ); - - return $data[ $type ]; - } - - /** - * Get all plugin filenames associated with the products. - * - * @return array - */ - public static function get_all_plugin_filenames() { - $filenames = array(); - foreach ( self::get_products_classes() as $class ) { - if ( ! isset( $class::$plugin_filename ) ) { - continue; - } - - if ( is_array( $class::$plugin_filename ) ) { - $filenames = array_merge( $filenames, $class::$plugin_filename ); - } else { - $filenames[] = $class::$plugin_filename; - } - } - return $filenames; - } - - /** - * Get one product data by its slug - * - * @param string $product_slug The product slug. - * - * @return ?array - */ - public static function get_product( $product_slug ) { - $classes = self::get_products_classes(); - if ( isset( $classes[ $product_slug ] ) ) { - return $classes[ $product_slug ]::get_info(); - } - } - - /** - * Get one product Class name - * - * @param string $product_slug The product slug. - * - * @return ?string - */ - public static function get_product_class( $product_slug ) { - $classes = self::get_products_classes(); - if ( isset( $classes[ $product_slug ] ) ) { - return $classes[ $product_slug ]; - } - } - - /** - * Return product slugs list. - * - * @return array Product slugs array. - */ - public static function get_products_slugs() { - return array_keys( self::get_products_classes() ); - } - - /** - * Gets the json schema for the product data - * - * @return array - */ - public static function get_product_data_schema() { - return array( - 'title' => 'The requested product data', - 'type' => 'object', - 'properties' => array( - 'product' => array( - 'description' => __( 'Product slug', 'jetpack-my-jetpack' ), - 'type' => 'string', - 'enum' => __CLASS__ . '::get_product_slugs', - 'required' => false, - 'validate_callback' => __CLASS__ . '::check_product_argument', - ), - 'action' => array( - 'description' => __( 'Production action to execute', 'jetpack-my-jetpack' ), - 'type' => 'string', - 'enum' => array( 'activate', 'deactivate' ), - 'required' => false, - 'validate_callback' => __CLASS__ . '::check_product_argument', - ), - 'slug' => array( - 'title' => 'The product slug', - 'type' => 'string', - ), - 'name' => array( - 'title' => 'The product name', - 'type' => 'string', - ), - 'description' => array( - 'title' => 'The product description', - 'type' => 'string', - ), - 'status' => array( - 'title' => 'The product status', - 'type' => 'string', - 'enum' => self::$all_statuses, - ), - 'class' => array( - 'title' => 'The product class handler', - 'type' => 'string', - ), - ), - ); - } - - /** - * Extend actions links for plugins - * tied to the Products. - */ - public static function extend_plugins_action_links() { - $products = array( - 'backup', - 'boost', - 'crm', - 'videopress', - 'social', - 'protect', - 'crm', - 'search', - 'jetpack-ai', - ); - - // Add plugin action links for the core Jetpack plugin. - Product::extend_core_plugin_action_links(); - - // Add plugin action links to standalone products. - foreach ( $products as $product ) { - $class_name = self::get_product_class( $product ); - $class_name::extend_plugin_action_links(); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-red-bubble-notifications.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-red-bubble-notifications.php deleted file mode 100644 index 5d4302ae..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-red-bubble-notifications.php +++ /dev/null @@ -1,399 +0,0 @@ - \WP_REST_Server::CREATABLE, - 'callback' => __CLASS__ . '::rest_api_get_red_bubble_alerts', - 'permission_callback' => __CLASS__ . '::permissions_callback', - 'args' => array( - 'dismissal_cookies' => array( - 'type' => 'array', - 'description' => 'Array of dismissal cookies to set for the red bubble notifications.', - 'required' => false, - 'items' => array( - 'type' => 'string', - ), - 'sanitize_callback' => function ( $param ) { - return array_map( 'sanitize_text_field', $param ); - }, - ), - ), - ) - ); - } - - /** - * Check user capability to access the endpoint. - * - * @access public - * @static - * - * @return true|WP_Error - */ - public static function permissions_callback() { - return current_user_can( 'edit_posts' ); - } - - /** - * Gets the plugins that need installed or activated for each paid plan. - * - * @return array - */ - public static function get_paid_plans_plugins_requirements() { - $plugin_requirements = array(); - foreach ( Products::get_products_classes() as $slug => $product_class ) { - // Skip these- we don't show them in My Jetpack. - if ( in_array( $slug, Products::get_not_shown_products(), true ) ) { - continue; - } - if ( ! $product_class::has_paid_plan_for_product() ) { - continue; - } - $purchase = $product_class::get_paid_plan_purchase_for_product(); - if ( ! $purchase ) { - continue; - } - // Check if required plugin needs installed or activated. - if ( ! $product_class::is_plugin_installed() ) { - // Plugin needs installed (and activated) - $plugin_requirements[ $purchase->product_slug ]['needs_installed'][] = $product_class::$slug; - } elseif ( ! $product_class::is_plugin_active() ) { - // Plugin is installed, but not activated. - $plugin_requirements[ $purchase->product_slug ]['needs_activated_only'][] = $product_class::$slug; - } - } - - return $plugin_requirements; - } - - /** - * Check for features broken by a disconnected user or site - * - * @return array - */ - public static function check_for_broken_modules() { - $connection = new Connection_Manager(); - $is_user_connected = $connection->is_user_connected() || $connection->has_connected_owner(); - $is_site_connected = $connection->is_connected(); - $broken_modules = array( - 'needs_site_connection' => array(), - 'needs_user_connection' => array(), - ); - - if ( $is_user_connected && $is_site_connected ) { - return $broken_modules; - } - - $products = Products::get_products_classes(); - $historically_active_modules = Jetpack_Options::get_option( 'historically_active_modules', array() ); - - foreach ( $products as $product ) { - if ( ! in_array( $product::$slug, $historically_active_modules, true ) ) { - continue; - } - - if ( $product::$requires_user_connection && ! $is_user_connected ) { - if ( ! in_array( $product::$slug, $broken_modules['needs_user_connection'], true ) ) { - $broken_modules['needs_user_connection'][] = $product::$slug; - } - } elseif ( ! $is_site_connected ) { - if ( ! in_array( $product::$slug, $broken_modules['needs_site_connection'], true ) ) { - $broken_modules['needs_site_connection'][] = $product::$slug; - } - } - } - - return $broken_modules; - } - - /** - * Add an alert slug if the site is missing a site connection - * - * @param array $red_bubble_slugs - slugs that describe the reasons the red bubble is showing. - * @return array - */ - public static function alert_if_missing_connection( array $red_bubble_slugs ) { - $broken_modules = self::check_for_broken_modules(); - $connection = new Connection_Manager(); - - // Checking for site connection issues first. - if ( ! empty( $broken_modules['needs_site_connection'] ) ) { - $red_bubble_slugs[ self::MISSING_CONNECTION_NOTIFICATION_KEY ] = array( - 'type' => 'site', - 'is_error' => true, - ); - return $red_bubble_slugs; - } - - if ( ! empty( $broken_modules['needs_user_connection'] ) ) { - $red_bubble_slugs[ self::MISSING_CONNECTION_NOTIFICATION_KEY ] = array( - 'type' => 'user', - 'is_error' => true, - ); - return $red_bubble_slugs; - } - - if ( ! $connection->is_connected() ) { - $red_bubble_slugs[ self::MISSING_CONNECTION_NOTIFICATION_KEY ] = array( - 'type' => 'site', - 'is_error' => false, - ); - return $red_bubble_slugs; - } - - return $red_bubble_slugs; - } - - /** - * Add an alert slug if Backups are failing or having an issue. - * - * @param array $red_bubble_slugs - slugs that describe the reasons the red bubble is showing. - * @return array - */ - public static function alert_if_last_backup_failed( array $red_bubble_slugs ) { - // Make sure the Notice wasn't previously dismissed. - if ( ! empty( $_COOKIE['backup_failure_dismissed'] ) ) { - return $red_bubble_slugs; - } - // Make sure there's a Backup paid plan - if ( ! Products\Backup::is_plugin_active() || ! Products\Backup::has_paid_plan_for_product() ) { - return $red_bubble_slugs; - } - // Make sure the plan isn't just recently purchased in last 30min. - // Give some time to queue & run the first backup. - $purchase = Products\Backup::get_paid_plan_purchase_for_product(); - if ( $purchase ) { - $thirty_minutes_after_plan_purchase = strtotime( $purchase->subscribed_date . ' +30 minutes' ); - if ( strtotime( 'now' ) < $thirty_minutes_after_plan_purchase ) { - return $red_bubble_slugs; - } - } - - $backup_failed_status = Products\Backup::does_module_need_attention(); - if ( $backup_failed_status ) { - $red_bubble_slugs['backup_failure'] = $backup_failed_status; - } - - return $red_bubble_slugs; - } - - /** - * Add an alert slug if Protect has scan threats/vulnerabilities. - * - * @param array $red_bubble_slugs - slugs that describe the reasons the red bubble is showing. - * @return array - */ - public static function alert_if_protect_has_threats( array $red_bubble_slugs ) { - // Make sure the Notice hasn't been dismissed. - if ( ! empty( $_COOKIE['protect_threats_detected_dismissed'] ) ) { - return $red_bubble_slugs; - } - // Make sure we're dealing with the Protect product only - if ( ! Products\Protect::has_paid_plan_for_product() ) { - return $red_bubble_slugs; - } - - $protect_threats_status = Products\Protect::does_module_need_attention(); - - if ( $protect_threats_status ) { - $red_bubble_slugs['protect_has_threats'] = $protect_threats_status; - } - - return $red_bubble_slugs; - } - - /** - * Add an alert slug if any paid plan/products are expiring or expired. - * - * @param array $red_bubble_slugs - slugs that describe the reasons the red bubble is showing. - * @return array - */ - public static function alert_if_paid_plan_expiring( array $red_bubble_slugs ) { - $connection = new Connection_Manager(); - if ( ! $connection->is_connected() ) { - return $red_bubble_slugs; - } - $product_classes = Products::get_products_classes(); - - $products_included_in_expiring_plan = array(); - foreach ( $product_classes as $key => $product ) { - // Skip these- we don't show them in My Jetpack. - if ( in_array( $key, Products::get_not_shown_products(), true ) ) { - continue; - } - - if ( $product::has_paid_plan_for_product() ) { - $purchase = $product::get_paid_plan_purchase_for_product(); - if ( $purchase ) { - $redbubble_notice_data = array( - 'product_slug' => $purchase->product_slug, - 'product_name' => $purchase->product_name, - 'expiry_date' => $purchase->expiry_date, - 'expiry_message' => $purchase->expiry_message, - 'manage_url' => $product::get_manage_paid_plan_purchase_url(), - ); - - if ( $product::is_paid_plan_expired() && empty( $_COOKIE[ "$purchase->product_slug--plan_expired_dismissed" ] ) ) { - $red_bubble_slugs[ "$purchase->product_slug--plan_expired" ] = $redbubble_notice_data; - if ( ! $product::is_bundle_product() ) { - $products_included_in_expiring_plan[ "$purchase->product_slug--plan_expired" ][] = $product::get_name(); - } - } - if ( $product::is_paid_plan_expiring() && empty( $_COOKIE[ "$purchase->product_slug--plan_expiring_soon_dismissed" ] ) ) { - $red_bubble_slugs[ "$purchase->product_slug--plan_expiring_soon" ] = $redbubble_notice_data; - $red_bubble_slugs[ "$purchase->product_slug--plan_expiring_soon" ]['manage_url'] = $product::get_renew_paid_plan_purchase_url(); - if ( ! $product::is_bundle_product() ) { - $products_included_in_expiring_plan[ "$purchase->product_slug--plan_expiring_soon" ][] = $product::get_name(); - } - } - } - } - } - - foreach ( $products_included_in_expiring_plan as $expiring_plan => $products ) { - $red_bubble_slugs[ $expiring_plan ]['products_effected'] = $products; - } - - return $red_bubble_slugs; - } - - /** - * Add an alert slug if a site's paid plan requires a plugin install and/or activation. - * - * @param array $red_bubble_slugs - slugs that describe the reasons the red bubble is showing. - * @return array - */ - public static function alert_if_paid_plan_requires_plugin_install_or_activation( array $red_bubble_slugs ) { - $connection = new Connection_Manager(); - // Don't trigger red bubble (and show notice) when the site is not connected or if the - // user doesn't have plugin installation/activation permissions. - if ( ! $connection->is_connected() || ! current_user_can( 'activate_plugins' ) ) { - return $red_bubble_slugs; - } - - $plugins_needing_installed_activated = self::get_paid_plans_plugins_requirements(); - if ( empty( $plugins_needing_installed_activated ) ) { - return $red_bubble_slugs; - } - - foreach ( $plugins_needing_installed_activated as $plan_slug => $plugins_requirements ) { - if ( empty( $_COOKIE[ "$plan_slug--plugins_needing_installed_dismissed" ] ) ) { - $red_bubble_slugs[ "$plan_slug--plugins_needing_installed_activated" ] = $plugins_requirements; - } - } - - return $red_bubble_slugs; - } - - /** - * Add relevant red bubble notifications - * - * @param array $red_bubble_slugs - slugs that describe the reasons the red bubble is showing. - * @return array - */ - public static function add_red_bubble_alerts( array $red_bubble_slugs ) { - if ( wp_doing_ajax() ) { - return array(); - } - $connection = new Connection_Manager(); - $welcome_banner_dismissed = Jetpack_Options::get_option( 'dismissed_welcome_banner', false ); - if ( Initializer::is_jetpack_user_new() && ! $welcome_banner_dismissed ) { - $red_bubble_slugs['welcome-banner-active'] = array( - 'is_silent' => $connection->is_connected(), // we don't display the red bubble if the user is connected - ); - return $red_bubble_slugs; - } else { - return array_merge( - self::alert_if_missing_connection( $red_bubble_slugs ), - self::alert_if_last_backup_failed( $red_bubble_slugs ), - self::alert_if_paid_plan_expiring( $red_bubble_slugs ), - self::alert_if_protect_has_threats( $red_bubble_slugs ), - self::alert_if_paid_plan_requires_plugin_install_or_activation( $red_bubble_slugs ) - ); - } - } - - /** - * Collect all possible alerts that we might use a red bubble notification for - * - * @param bool $bypass_cache - whether to bypass the red bubble cache. - * @return array - */ - public static function get_red_bubble_alerts( bool $bypass_cache = false ) { - static $red_bubble_alerts = array(); - - // check for stored alerts - $stored_alerts = get_transient( self::MY_JETPACK_RED_BUBBLE_TRANSIENT_KEY ); - - // Cache bypass for red bubbles should only happen on the My Jetpack page - if ( $stored_alerts !== false && ! ( $bypass_cache ) ) { - return $stored_alerts; - } - - // go find the alerts - $red_bubble_alerts = apply_filters( 'my_jetpack_red_bubble_notification_slugs', $red_bubble_alerts ); - - // cache the alerts for one hour - set_transient( self::MY_JETPACK_RED_BUBBLE_TRANSIENT_KEY, $red_bubble_alerts, 3600 ); - - return $red_bubble_alerts; - } - - /** - * Get the red bubble alerts, bypassing cache when called via the REST API - * - * @param WP_REST_Request $request The REST API request object. - * - * @return WP_Error|WP_REST_Response - */ - public static function rest_api_get_red_bubble_alerts( $request ) { - add_filter( 'my_jetpack_red_bubble_notification_slugs', array( __CLASS__, 'add_red_bubble_alerts' ) ); - - $cookies = $request->get_param( 'dismissal_cookies' ); - - // Update $_COOKIE superglobal with the provided cookies - if ( ! empty( $cookies ) && is_array( $cookies ) ) { - foreach ( $cookies as $cookie_string ) { - // Parse cookie string in format "name=value" - $parts = explode( '=', $cookie_string, 2 ); - if ( count( $parts ) === 2 ) { - $name = trim( $parts[0] ); - $value = trim( $parts[1] ); - $_COOKIE[ $name ] = $value; - } - } - } - - $red_bubble_alerts = self::get_red_bubble_alerts( true ); - return rest_ensure_response( $red_bubble_alerts ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-ai.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-ai.php deleted file mode 100644 index 39698107..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-ai.php +++ /dev/null @@ -1,90 +0,0 @@ - \WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::get_openai_jwt', - 'permission_callback' => function () { - return ( new Connection_Manager( 'jetpack' ) )->is_user_connected() && current_user_can( 'edit_posts' ); - }, - ) - ); - } - } - - /** - * Check if a specific REST endpoint is registered. - * - * @param string $namespace - The namespace of the endpoint. - * @param string $route - The route of the endpoint. - * @return bool True if the endpoint is registered, false otherwise. - */ - public static function is_rest_endpoint_registered( $namespace, $route ) { - $server = rest_get_server(); - $routes = $server->get_routes(); - $full_endpoint = '/' . trim( $namespace, '/' ) . $route; - return isset( $routes[ $full_endpoint ] ); - } - - /** - * Ask WPCOM for a JWT token to use for OpenAI completion. - */ - public static function get_openai_jwt() { - $blog_id = Jetpack_Options::get_option( 'id' ); - - $response = Client::wpcom_json_api_request_as_user( - "/sites/$blog_id/jetpack-openai-query/jwt", - '2', - array( - 'method' => 'POST', - 'headers' => array( 'Content-Type' => 'application/json; charset=utf-8' ), - ), - wp_json_encode( array() ), - 'wpcom' - ); - - if ( is_wp_error( $response ) ) { - return $response; - } - - $json = json_decode( wp_remote_retrieve_body( $response ) ); - - if ( ! isset( $json->token ) ) { - return new WP_Error( 'no-token', 'No token returned from WPCOM' ); - } - - return array( - 'token' => $json->token, - 'blog_id' => $blog_id, - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-products.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-products.php deleted file mode 100644 index 18ee7975..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-products.php +++ /dev/null @@ -1,362 +0,0 @@ - \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::get_products_api_data', - 'permission_callback' => __CLASS__ . '::view_products_permissions_callback', - 'args' => array( - 'products' => array( - 'description' => __( 'Comma seperated list of product slugs that should be retrieved.', 'jetpack-my-jetpack' ), - 'type' => 'string', - 'required' => false, - 'validate_callback' => __CLASS__ . '::check_products_string', - ), - ), - ), - 'schema' => array( $this, 'get_products_schema' ), - ) - ); - - $products_arg = array( - 'description' => __( 'Array of Product slugs', 'jetpack-my-jetpack' ), - 'type' => 'array', - 'items' => array( - 'enum' => Products::get_products_slugs(), - 'type' => 'string', - ), - 'required' => true, - 'validate_callback' => __CLASS__ . '::check_products_argument', - ); - - register_rest_route( - 'my-jetpack/v1', - 'site/products/install', - array( - array( - 'methods' => \WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::install_plugins', - 'permission_callback' => __CLASS__ . '::edit_permissions_callback', - 'args' => array( - 'products' => $products_arg, - ), - ), - ) - ); - - register_rest_route( - 'my-jetpack/v1', - 'site/products/activate', - array( - array( - 'methods' => \WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::activate_products', - 'permission_callback' => __CLASS__ . '::edit_permissions_callback', - 'args' => array( - 'products' => $products_arg, - ), - ), - ) - ); - - register_rest_route( - 'my-jetpack/v1', - 'site/products/deactivate', - array( - array( - 'methods' => \WP_REST_Server::DELETABLE, - 'callback' => __CLASS__ . '::deactivate_products', - 'permission_callback' => __CLASS__ . '::edit_permissions_callback', - 'args' => array( - 'products' => $products_arg, - ), - ), - ) - ); - - register_rest_route( - 'my-jetpack/v1', - 'site/products-ownership', - array( - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::get_products_by_ownership', - 'permission_callback' => __CLASS__ . '::view_products_permissions_callback', - ), - ) - ); - } - - /** - * Get the schema for the products endpoint - * - * @return array - */ - public function get_products_schema() { - return array( - '$schema' => 'http://json-schema.org/draft-04/schema#', - 'title' => 'products', - 'type' => 'object', - 'properties' => Products::get_product_data_schema(), - ); - } - - /** - * Check user capability to access the endpoint. - * - * @access public - * @static - * - * @return true|WP_Error - */ - public static function permissions_callback() { - return current_user_can( 'manage_options' ); - } - - /** - * Check if the user is permitted to view the product and product info - * - * @return bool - */ - public static function view_products_permissions_callback() { - return current_user_can( 'edit_posts' ); - } - - /** - * Check Products string (comma separated string). - * - * @access public - * @static - * - * @param mixed $value - Value of the 'product' argument. - * @return true|WP_Error True if the value is valid, WP_Error otherwise. - */ - public static function check_products_string( $value ) { - if ( ! is_string( $value ) ) { - return new WP_Error( - 'rest_invalid_param', - esc_html__( 'The product argument must be a string.', 'jetpack-my-jetpack' ), - array( 'status' => 400 ) - ); - } - - $products_array = explode( ',', $value ); - $all_products = Products::get_products_slugs(); - - foreach ( $products_array as $product_slug ) { - if ( ! in_array( $product_slug, $all_products, true ) ) { - return new WP_Error( - 'rest_invalid_param', - esc_html( - sprintf( - /* translators: %s is the product_slug, it should Not be translated. */ - __( 'The specified product argument %s is an invalid product.', 'jetpack-my-jetpack' ), - $product_slug - ) - ), - array( 'status' => 400 ) - ); - } - } - - return true; - } - - /** - * Check Products argument. - * - * @access public - * @static - * - * @param mixed $value - Value of the 'product' argument. - * @return true|WP_Error True if the value is valid, WP_Error otherwise. - */ - public static function check_products_argument( $value ) { - if ( ! is_array( $value ) ) { - return new WP_Error( - 'rest_invalid_param', - esc_html__( 'The product argument must be an array.', 'jetpack-my-jetpack' ), - array( 'status' => 400 ) - ); - } - - return true; - } - - /** - * Site products endpoint. - * - * @param \WP_REST_Request $request The request object. - * @return WP_Error|\WP_REST_Response - */ - public static function get_products( $request ) { - $slugs = $request->get_param( 'products' ); - $product_slugs = ! empty( $slugs ) ? array_map( 'trim', explode( ',', $slugs ) ) : array(); - - $response = Products::get_products( $product_slugs ); - return rest_ensure_response( $response ); - } - - /** - * Site API product data endpoint - * - * @param \WP_REST_Request $request The request object. - * - * @return WP_Error|\WP_REST_Response - */ - public static function get_products_api_data( $request ) { - $slugs = $request->get_param( 'products' ); - $product_slugs = ! empty( $slugs ) ? array_map( 'trim', explode( ',', $slugs ) ) : array(); - - $response = Products::get_products_api_data( $product_slugs ); - return rest_ensure_response( $response ); - } - - /** - * Site products endpoint. - * - * @return \WP_REST_Response of site products list. - */ - public static function get_products_by_ownership() { - $response = array( - 'unownedProducts' => Products::get_products_by_ownership( 'unowned' ), - 'ownedProducts' => Products::get_products_by_ownership( 'owned' ), - ); - return rest_ensure_response( $response ); - } - - /** - * Check permission to edit product - * - * @return bool - */ - public static function edit_permissions_callback() { - if ( ! current_user_can( 'activate_plugins' ) ) { - return false; - } - if ( is_multisite() && ! current_user_can( 'manage_network' ) ) { - return false; - } - return true; - } - - /** - * Callback for activating products - * - * @param \WP_REST_Request $request The request object. - * @return \WP_REST_Response|\WP_Error - */ - public static function activate_products( $request ) { - $products_array = $request->get_param( 'products' ); - - foreach ( $products_array as $product_slug ) { - $product = Products::get_product( $product_slug ); - if ( ! isset( $product['class'] ) ) { - return new \WP_Error( - 'product_class_handler_not_found', - sprintf( - /* translators: %s is the product_slug */ - __( 'The product slug %s does not have an associated class handler.', 'jetpack-my-jetpack' ), - $product_slug - ), - array( 'status' => 501 ) - ); - } - - $activate_product_result = call_user_func( array( $product['class'], 'activate' ) ); - if ( is_wp_error( $activate_product_result ) ) { - $activate_product_result->add_data( array( 'status' => 400 ) ); - return $activate_product_result; - } - } - set_transient( 'my_jetpack_product_activated', implode( ',', $products_array ), 10 ); - - return rest_ensure_response( Products::get_products( $products_array ) ); - } - - /** - * Callback for deactivating products - * - * @param \WP_REST_Request $request The request object. - * @return \WP_REST_Response|\WP_Error - */ - public static function deactivate_products( $request ) { - $products_array = $request->get_param( 'products' ); - - foreach ( $products_array as $product_slug ) { - $product = Products::get_product( $product_slug ); - if ( ! isset( $product['class'] ) ) { - return new \WP_Error( - 'product_class_handler_not_found', - sprintf( - /* translators: %s is the product_slug */ - __( 'The product slug %s does not have an associated class handler.', 'jetpack-my-jetpack' ), - $product_slug - ), - array( 'status' => 501 ) - ); - } - - $deactivate_product_result = call_user_func( array( $product['class'], 'deactivate' ) ); - if ( is_wp_error( $deactivate_product_result ) ) { - $deactivate_product_result->add_data( array( 'status' => 400 ) ); - return $deactivate_product_result; - } - } - - return rest_ensure_response( Products::get_products( $products_array ) ); - } - - /** - * Callback for installing (and activating) multiple product plugins. - * - * @param \WP_REST_Request $request The request object. - * @return \WP_REST_Response|\WP_Error - */ - public static function install_plugins( $request ) { - $products_array = $request->get_param( 'products' ); - - foreach ( $products_array as $product_slug ) { - $product = Products::get_product( $product_slug ); - if ( ! isset( $product['class'] ) ) { - return new \WP_Error( - 'product_class_handler_not_found', - sprintf( - /* translators: %s is the product_slug */ - __( 'The product slug %s does not have an associated class handler.', 'jetpack-my-jetpack' ), - $product_slug - ), - array( 'status' => 501 ) - ); - } - - $install_product_result = call_user_func( array( $product['class'], 'install_and_activate_standalone' ) ); - if ( is_wp_error( $install_product_result ) ) { - $install_product_result->add_data( array( 'status' => 400 ) ); - return $install_product_result; - } - } - - return rest_ensure_response( Products::get_products( $products_array ) ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-purchases.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-purchases.php deleted file mode 100644 index aa1d146a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-purchases.php +++ /dev/null @@ -1,77 +0,0 @@ - \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::get_site_current_purchases', - 'permission_callback' => __CLASS__ . '::permissions_callback', - ) - ); - } - - /** - * Check user capability to access the endpoint. - * - * @access public - * @static - * - * @return true|WP_Error - */ - public static function permissions_callback() { - $connection = new Connection_Manager(); - $is_site_connected = $connection->is_connected(); - - if ( ! $is_site_connected ) { - return new WP_Error( - 'not_connected', - __( 'Your site is not connected to Jetpack.', 'jetpack-my-jetpack' ), - array( - 'status' => 400, - ) - ); - } - - return current_user_can( 'edit_posts' ); - } - - /** - * Site purchases endpoint. - * - * @return array|WP_Error of site purchases. - */ - public static function get_site_current_purchases() { - $site_id = \Jetpack_Options::get_option( 'id' ); - $wpcom_endpoint = sprintf( '/sites/%1$d/purchases?locale=%2$s', $site_id, get_user_locale() ); - $wpcom_api_version = '1.1'; - $response = Client::wpcom_json_api_request_as_blog( $wpcom_endpoint, $wpcom_api_version ); - $response_code = wp_remote_retrieve_response_code( $response ); - $body = json_decode( wp_remote_retrieve_body( $response ) ); - - if ( is_wp_error( $response ) || empty( $response['body'] ) || 200 !== $response_code ) { - return new WP_Error( 'site_data_fetch_failed', 'Site data fetch failed', array( 'status' => $response_code ? $response_code : 400 ) ); - } - - return rest_ensure_response( $body ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-recommendations-evaluation.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-recommendations-evaluation.php deleted file mode 100644 index 66f09642..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-recommendations-evaluation.php +++ /dev/null @@ -1,150 +0,0 @@ - \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::evaluate_site_recommendations', - 'permission_callback' => __CLASS__ . '::permissions_callback', - ), - ) - ); - - register_rest_route( - 'my-jetpack/v1', - '/site/recommendations/evaluation/result/', - array( - array( - 'methods' => \WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::save_evaluation_recommendations', - 'permission_callback' => __CLASS__ . '::permissions_callback', - ), - ) - ); - - register_rest_route( - 'my-jetpack/v1', - '/site/recommendations/evaluation/result/', - array( - array( - 'methods' => \WP_REST_Server::DELETABLE, - 'callback' => __CLASS__ . '::dismiss_evaluation_recommendations', - 'permission_callback' => __CLASS__ . '::permissions_callback', - ), - ) - ); - } - - /** - * Check user capability to access the endpoint. - * - * @access public - * @static - * - * @return true|WP_Error - */ - public static function permissions_callback() { - $connection = new Connection_Manager(); - $is_site_connected = $connection->is_connected(); - - if ( ! $is_site_connected ) { - return new WP_Error( - 'not_connected', - __( 'Your site is not connected to Jetpack.', 'jetpack-my-jetpack' ), - array( - 'status' => 400, - ) - ); - } - - return true; // We require site to be connected. - } - - /** - * Recommendations Evaluation endpoint. - * - * @param \WP_REST_Request $request Query request. - * - * @return \WP_REST_Response|WP_Error of 3 product slugs (recommendations). - */ - public static function evaluate_site_recommendations( $request ) { - $goals = $request->get_param( 'goals' ); - - if ( ! isset( $goals ) ) { - return new WP_Error( 'missing_goals', 'Goals are required', array( 'status' => 400 ) ); - } - - $site_id = \Jetpack_Options::get_option( 'id' ); - $wpcom_endpoint = sprintf( '/sites/%1$d/jetpack-recommendations/evaluation?goals=%2$s', $site_id, implode( ',', $goals ) ); - $response = Client::wpcom_json_api_request_as_blog( $wpcom_endpoint, '2', array(), null, 'wpcom' ); - $response_code = wp_remote_retrieve_response_code( $response ); - $body = json_decode( wp_remote_retrieve_body( $response ) ); - - if ( is_wp_error( $response ) || empty( $body ) || 200 !== $response_code ) { - return new WP_Error( 'recommendations_evaluation_fetch_failed', 'Evaluation processing failed', array( 'status' => $response_code ? $response_code : 400 ) ); - } - - return rest_ensure_response( $body ); - } - - /** - * Endpoint to save recommendations results. - * - * @param \WP_REST_Request $request Query request. - * - * @return \WP_REST_Response|WP_Error success response. - */ - public static function save_evaluation_recommendations( $request ) { - $json = $request->get_json_params(); - - if ( ! isset( $json['recommendations'] ) ) { - return new WP_Error( 'missing_recommendations', 'Recommendations are required', array( 'status' => 400 ) ); - } - - \Jetpack_Options::update_option( 'recommendations_evaluation', $json['recommendations'] ); - \Jetpack_Options::delete_option( 'dismissed_recommendations' ); - - return rest_ensure_response( Initializer::get_recommended_modules() ); - } - - /** - * Endpoint to dismiss the recommendation section - * - * @param \WP_REST_Request $request Query request. - * - * @return \WP_REST_Response|WP_Error success response. - */ - public static function dismiss_evaluation_recommendations( $request ) { - $show_welcome_banner = $request->get_param( 'showWelcomeBanner' ); - - \Jetpack_Options::update_option( 'dismissed_recommendations', true ); - - if ( isset( $show_welcome_banner ) && $show_welcome_banner === 'true' ) { - \Jetpack_Options::update_option( 'recommendations_first_run', false ); - \Jetpack_Options::delete_option( 'dismissed_welcome_banner' ); - } - - return rest_ensure_response( array() ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-zendesk-chat.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-zendesk-chat.php deleted file mode 100644 index 91c58ece..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-zendesk-chat.php +++ /dev/null @@ -1,122 +0,0 @@ - \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::get_chat_availability', - 'permission_callback' => __CLASS__ . '::chat_authentication_permissions_callback', - ) - ); - - register_rest_route( - 'my-jetpack/v1', - 'chat/authentication', - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::get_chat_authentication', - 'args' => array( - 'type' => array( - 'required' => false, - 'type' => 'string', - ), - 'test_mode' => array( - 'required' => false, - 'type' => 'boolean', - ), - ), - 'permission_callback' => __CLASS__ . '::chat_authentication_permissions_callback', - ) - ); - } - - /** - * Ensure user is logged in if making an authentication request - * - * @access public - * @static - * - * @return WP_Error|true - */ - public static function chat_authentication_permissions_callback() { - if ( ! get_current_user_id() ) { - return new WP_Error( 'unauthorized', 'You must be logged in to access this resource.', array( 'status' => 401 ) ); - } - - return true; - } - - /** - * Gets the chat authentication token. - * - * @return WP_Error|WP_REST_Response { token: string } - */ - public static function get_chat_authentication() { - $authentication = get_transient( self::ZENDESK_AUTH_TOKEN ); - if ( $authentication ) { - return rest_ensure_response( $authentication ); - } - - $proxied = function_exists( 'wpcom_is_proxied_request' ) ? wpcom_is_proxied_request() : false; - $wpcom_endpoint = 'help/authenticate/chat'; - $wpcom_api_version = '2'; - - $body = array( - 'type' => 'zendesk', - 'test_mode' => $proxied ? true : false, - ); - - $response = Client::wpcom_json_api_request_as_user( $wpcom_endpoint, $wpcom_api_version, array( 'method' => 'POST' ), $body ); - $response_code = wp_remote_retrieve_response_code( $response ); - $body = json_decode( wp_remote_retrieve_body( $response ) ); - - if ( is_wp_error( $response ) || empty( $response['body'] ) ) { - return new WP_Error( 'chat_authentication_failed', 'Chat authentication failed', array( 'status' => $response_code ) ); - } - - set_transient( self::ZENDESK_AUTH_TOKEN, $body, self::TRANSIENT_EXPIRY ); - return rest_ensure_response( $body ); - } - - /** - * Calls `wpcom/v2/presales/chat?group=jp_presales` endpoint. - * This endpoint returns whether or not the Jetpack presales chat group is available - * - * @return WP_Error|WP_REST_Response { is_available: bool } - */ - public static function get_chat_availability() { - $wpcom_endpoint = '/presales/chat?group=jp_presales'; - $wpcom_api_version = '2'; - $response = Client::wpcom_json_api_request_as_user( $wpcom_endpoint, $wpcom_api_version ); - $response_code = wp_remote_retrieve_response_code( $response ); - $body = json_decode( wp_remote_retrieve_body( $response ) ); - - if ( is_wp_error( $response ) || empty( $response['body'] ) ) { - return new WP_Error( 'chat_config_data_fetch_failed', 'Chat config data fetch failed', array( 'status' => $response_code ) ); - } - - return rest_ensure_response( $body ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-wpcom-products.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-wpcom-products.php deleted file mode 100644 index 941a3659..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-wpcom-products.php +++ /dev/null @@ -1,405 +0,0 @@ -get_ip( true ); - $headers = array( - 'X-Forwarded-For' => $ip, - ); - - if ( $blog_id ) { - $request_label = 'get_products_from_wpcom_blog_' . $blog_id; - $request_failure = static::get_request_failure( $request_label ); - if ( null !== $request_failure ) { - return $request_failure; - } - - // If has a blog id, use connected endpoint. - $endpoint = sprintf( '/sites/%d/products/?_locale=%s&type=jetpack', $blog_id, get_user_locale() ); - - // If available in the user data, set the user's currency as one of the params - if ( $connection->is_user_connected() ) { - $user_details = $connection->get_connected_user_data(); - if ( ! empty( $user_details['user_currency'] ) && $user_details['user_currency'] !== 'USD' ) { - $endpoint .= sprintf( '¤cy=%s', $user_details['user_currency'] ); - } - } - - $wpcom_request = Client::wpcom_json_api_request_as_blog( - $endpoint, - '1.1', - array( - 'method' => 'GET', - 'headers' => $headers, - ) - ); - } else { - $request_label = 'get_products_from_wpcom'; - $request_failure = static::get_request_failure( $request_label ); - if ( null !== $request_failure ) { - return $request_failure; - } - - $endpoint = 'https://public-api.wordpress.com/rest/v1.1/products?locale=' . get_user_locale() . '&type=jetpack'; - - $wpcom_request = wp_remote_get( - esc_url_raw( $endpoint ), - array( - 'headers' => $headers, - ) - ); - } - - $response_code = wp_remote_retrieve_response_code( $wpcom_request ); - - if ( 200 === $response_code ) { - return json_decode( wp_remote_retrieve_body( $wpcom_request ) ); - } else { - $error = new WP_Error( - 'failed_to_fetch_wpcom_products', - esc_html__( 'Unable to fetch the products list from WordPress.com', 'jetpack-my-jetpack' ), - array( 'status' => $response_code ) - ); - static::set_request_failure( $request_label, $error ); - return $error; - } - } - - /** - * Super unintelligent hash string that can help us reset the cache after connection changes - * This is important because the currency can change after a user connects depending on what is set in their profile - * - * @return string - */ - private static function build_check_hash() { - static $has_user_data_fetch_error = false; - - $hash_string = 'check_hash_'; - $connection = new Connection_Manager(); - - if ( $connection->is_connected() ) { - $hash_string .= 'site_connected_'; - } - - if ( $connection->is_user_connected() ) { - $hash_string .= 'user_connected'; - // Add the user's currency - $user_details = $has_user_data_fetch_error ? false : $connection->get_connected_user_data(); - - if ( $user_details === false ) { - $has_user_data_fetch_error = true; - } elseif ( ! empty( $user_details['user_currency'] ) ) { - $hash_string .= '_' . $user_details['user_currency']; - } - } - - return md5( $hash_string ); - } - - /** - * Update the cache with new information retrieved from WPCOM - * - * We store one cache for each user, as the information is internationalized based on user preferences - * Also, the currency is based on the user IP address - * - * @param Object $products_list The products list as received from WPCOM. - * @return bool - */ - private static function update_cache( $products_list ) { - update_user_meta( get_current_user_id(), self::CACHE_DATE_META_NAME, time() ); - update_user_meta( get_current_user_id(), self::CACHE_CHECK_HASH_NAME, self::build_check_hash() ); - return update_user_meta( get_current_user_id(), self::CACHE_META_NAME, $products_list ); - } - - /** - * Checks if the cache is old, meaning we need to fetch new data from WPCOM - */ - private static function is_cache_old() { - if ( empty( self::get_products_from_cache() ) ) { - return true; - } - - // This allows the cache to reset after the site or user connects/ disconnects - $check_hash = get_user_meta( get_current_user_id(), self::CACHE_CHECK_HASH_NAME, true ); - if ( $check_hash !== self::build_check_hash() ) { - return true; - } - - $cache_date = get_user_meta( get_current_user_id(), self::CACHE_DATE_META_NAME, true ); - return time() - (int) $cache_date > DAY_IN_SECONDS; - } - - /** - * Gets the product list from the user cache - */ - private static function get_products_from_cache() { - return get_user_meta( get_current_user_id(), self::CACHE_META_NAME, true ); - } - - /** - * Gets the product list - * - * Attempts to retrieve the products list from the user cache if cache is not too old. - * If cache is old, it will attempt to fetch information from WPCOM. If it fails, we return what we have in cache, if anything, otherwise we return an error. - * - * @param bool $skip_cache If true it will ignore the cache and attempt to fetch fresh information from WPCOM. - * - * @return Object|WP_Error - */ - public static function get_products( $skip_cache = false ) { - // This is only available for logged in users. - if ( ! get_current_user_id() ) { - return null; - } - if ( ! self::is_cache_old() && ! $skip_cache ) { - return self::get_products_from_cache(); - } - - $products = self::get_products_from_wpcom(); - if ( is_wp_error( $products ) ) { - // Let's see if we have it cached. - $cached = self::get_products_from_cache(); - if ( ! empty( $cached ) ) { - return $cached; - } else { - return $products; - } - } - - self::update_cache( $products ); - return $products; - } - - /** - * Get one product - * - * @param string $product_slug The product slug. - * @param bool $renew_cache A flag to force the cache to be renewed. - * - * @return ?Object The product details if found - */ - public static function get_product( $product_slug, $renew_cache = false ) { - $products = self::get_products( $renew_cache ); - if ( ! empty( $products->$product_slug ) ) { - return $products->$product_slug; - } - } - - /** - * Get only the product currency code and price in an array - * - * @param string $product_slug The product slug. - * - * @return array An array with currency_code and full_price. Empty array if product not found. - */ - public static function get_product_pricing( $product_slug ) { - $product = self::get_product( $product_slug ); - if ( empty( $product ) ) { - return array(); - } - - $cost = $product->cost; - $discount_price = $cost; - $is_introductory_offer = false; - $introductory_offer = null; - - // Get/compute the discounted price. - if ( isset( $product->introductory_offer->cost_per_interval ) ) { - $discount_price = $product->introductory_offer->cost_per_interval; - $is_introductory_offer = true; - $introductory_offer = $product->introductory_offer; - } - - $pricing = array( - 'currency_code' => $product->currency_code, - 'full_price' => $cost, - 'discount_price' => $discount_price, - 'is_introductory_offer' => $is_introductory_offer, - 'introductory_offer' => $introductory_offer, - 'product_term' => $product->product_term, - ); - - return self::populate_with_discount( $product, $pricing, $discount_price ); - } - - /** - * Populate the pricing array with the discount information. - * - * @param object $product - The product object. - * @param array $pricing - The pricing array. - * @param float $price - The price to be discounted. - * @return array The pricing array with the discount information. - */ - public static function populate_with_discount( $product, $pricing, $price ) { - // Check whether the product has a coupon. - if ( ! isset( $product->sale_coupon ) ) { - return $pricing; - } - - // Check whether it is still valid. - $coupon = $product->sale_coupon; - $coupon_start_date = strtotime( $coupon->start_date ); - $coupon_expires = strtotime( $coupon->expires ); - if ( $coupon_start_date > time() || $coupon_expires < time() ) { - return $pricing; - } - - $coupon_discount = intval( $coupon->discount ); - - // Populate response with coupon discount. - $pricing['coupon_discount'] = $coupon_discount; - - // Apply coupon discount to the price. - $pricing['discount_price'] = $price * ( 100 - $coupon_discount ) / 100; - - return $pricing; - } - - /** - * Gets the site purchases from WPCOM. - * - * @return Object|WP_Error - */ - public static function get_site_current_purchases() { - static $purchases = null; - - if ( $purchases !== null ) { - return $purchases; - } - - // Check for a cached value before doing lookup - $stored_purchases = get_transient( self::MY_JETPACK_PURCHASES_TRANSIENT_KEY ); - if ( $stored_purchases !== false ) { - return $stored_purchases; - } - - $request_failure = static::get_request_failure( 'get_site_current_purchases' ); - if ( null !== $request_failure ) { - return $request_failure; - } - - $site_id = Jetpack_Options::get_option( 'id' ); - - $response = Client::wpcom_json_api_request_as_blog( - sprintf( '/sites/%d/purchases', $site_id ), - '1.1', - array( - 'method' => 'GET', - ) - ); - if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { - $error = new WP_Error( 'purchases_state_fetch_failed' ); - static::set_request_failure( 'get_site_current_purchases', $error ); - return $error; - } - - $body = wp_remote_retrieve_body( $response ); - $purchases = json_decode( $body ); - // Set short transient to help with repeated lookups on the same page load - set_transient( self::MY_JETPACK_PURCHASES_TRANSIENT_KEY, $purchases, 5 ); - - return $purchases; - } - - /** - * Gets the site's currently active "plan" (bundle). - * - * @param bool $reload Whether to refresh data from wpcom or not. - * @return array - */ - public static function get_site_current_plan( $reload = false ) { - static $reloaded_already = false; - - if ( $reload && ! $reloaded_already ) { - Current_Plan::refresh_from_wpcom(); - $reloaded_already = true; - } - - return Current_Plan::get(); - } - - /** - * Reset the request failures to retry the API requests. - * - * @return void - */ - public static function reset_request_failures() { - static::$wpcom_request_failures = array(); - } - - /** - * Record the request failure to prevent repeated requests. - * - * @param string $request_label The request label. - * @param WP_Error $error The error. - * - * @return void - */ - private static function set_request_failure( $request_label, WP_Error $error ) { - static::$wpcom_request_failures[ $request_label ] = $error; - } - - /** - * Get the pre-saved request failure if exists. - * - * @param string $request_label The request label. - * - * @return null|WP_Error - */ - private static function get_request_failure( $request_label ) { - if ( array_key_exists( $request_label, static::$wpcom_request_failures ) ) { - return static::$wpcom_request_failures[ $request_label ]; - } - - return null; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-anti-spam.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-anti-spam.php deleted file mode 100644 index 1fa5b0a6..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-anti-spam.php +++ /dev/null @@ -1,194 +0,0 @@ - true, - 'wpcom_product_slug' => static::get_wpcom_product_slug(), - ), - Wpcom_Products::get_product_pricing( static::get_wpcom_product_slug() ) - ); - } - - /** - * Get the WPCOM product slug used to make the purchase - * - * @return ?string - */ - public static function get_wpcom_product_slug() { - return 'jetpack_anti_spam'; - } - - /** - * Return product bundles list - * that supports the product. - * - * @return boolean|array Products bundle list. - */ - public static function is_upgradable_by_bundle() { - return array( 'security', 'complete' ); - } - - /** - * Get the URL where the user manages the product - * - * @return ?string - */ - public static function get_manage_url() { - return admin_url( 'admin.php?page=akismet-key-config' ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-backup.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-backup.php deleted file mode 100644 index 302d1246..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-backup.php +++ /dev/null @@ -1,455 +0,0 @@ - \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::get_site_backup_undo_event', - 'permission_callback' => __CLASS__ . '::permissions_callback', - ) - ); - } - - /** - * Get the product name - * - * @return string - */ - public static function get_name() { - return 'VaultPress Backup'; - } - - /** - * Get the product title - * - * @return string - */ - public static function get_title() { - return 'Jetpack VaultPress Backup'; - } - - /** - * Get the internationalized product description - * - * @return string - */ - public static function get_description() { - if ( static::is_active() ) { - return __( 'Save every change', 'jetpack-my-jetpack' ); - } - - return __( 'Secure your site with automatic backups and one-click restores', 'jetpack-my-jetpack' ); - } - - /** - * Get the internationalized product long description - * - * @return string - */ - public static function get_long_description() { - return __( 'Never lose a word, image, page, or time worrying about your site with automated backups & one-click restores.', 'jetpack-my-jetpack' ); - } - - /** - * Get the internationalized features list - * - * @return array Backup features list - */ - public static function get_features() { - return array( - _x( 'Real-time cloud backups', 'Backup Product Feature', 'jetpack-my-jetpack' ), - _x( '10GB of backup storage', 'Backup Product Feature', 'jetpack-my-jetpack' ), - _x( '30-day archive & activity log*', 'Backup Product Feature', 'jetpack-my-jetpack' ), - _x( 'One-click restores', 'Backup Product Feature', 'jetpack-my-jetpack' ), - ); - } - - /** - * Get disclaimers corresponding to a feature - * - * @return array Backup disclaimers list - */ - public static function get_disclaimers() { - return array( - array( - 'text' => _x( '* Subject to your usage and storage limit.', 'Backup Product Disclaimer', 'jetpack-my-jetpack' ), - 'link_text' => _x( 'Learn more', 'Backup Product Disclaimer', 'jetpack-my-jetpack' ), - 'url' => Redirect::get_url( 'jetpack-faq-backup-disclaimer' ), - ), - ); - } - - /** - * Get the WPCOM product slug used to make the purchase - * - * @return ?string - */ - public static function get_wpcom_product_slug() { - return 'jetpack_backup_t1_yearly'; - } - - /** - * Get the URL where the user should be redirected after checkout - */ - public static function get_post_checkout_url() { - return self::get_manage_url(); - } - - /** - * Get the product princing details - * - * @return array Pricing details - */ - public static function get_pricing_for_ui() { - return array_merge( - array( - 'available' => true, - 'wpcom_product_slug' => static::get_wpcom_product_slug(), - ), - Wpcom_Products::get_product_pricing( static::get_wpcom_product_slug() ) - ); - } - - /** - * Checks if the user has the correct permissions - */ - public static function permissions_callback() { - return current_user_can( 'manage_options' ); - } - - /** - * This will fetch the last rewindable event from the Activity Log and - * the last rewind_id prior to that. - * - * @return array|WP_Error|null - */ - public static function get_site_backup_undo_event() { - $blog_id = \Jetpack_Options::get_option( 'id' ); - - $response = Client::wpcom_json_api_request_as_user( - '/sites/' . $blog_id . '/activity/rewindable?force=wpcom', - 'v2', - array(), - null, - 'wpcom' - ); - - if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { - return null; - } - - $body = json_decode( $response['body'], true ); - - if ( ! isset( $body['current'] ) ) { - return null; - } - - // Preparing the response structure - $undo_event = array( - 'last_rewindable_event' => null, - 'undo_backup_id' => null, - ); - - // List of events that will not be considered to be undo. - // Basically we should not `undo` a full backup event, but we could - // use them to undo any other action like plugin updates. - $last_event_exceptions = array( - 'rewind__backup_only_complete_full', - 'rewind__backup_only_complete_initial', - 'rewind__backup_only_complete', - 'rewind__backup_complete_full', - 'rewind__backup_complete_initial', - 'rewind__backup_complete', - ); - - // Looping through the events to find the last rewindable event and the last backup_id. - // The idea is to find the last rewindable event and then the last rewind_id before that. - $found_last_event = false; - foreach ( $body['current']['orderedItems'] as $event ) { - if ( $event['is_rewindable'] ) { - if ( ! $found_last_event && ! in_array( $event['name'], $last_event_exceptions, true ) ) { - $undo_event['last_rewindable_event'] = $event; - $found_last_event = true; - } elseif ( $found_last_event ) { - $undo_event['undo_backup_id'] = $event['rewind_id']; - break; - } - } - } - - return rest_ensure_response( $undo_event ); - } - - /** - * Hits the wpcom api to check rewind status. - * - * @todo Maybe add caching. - * - * @return object|WP_Error - */ - private static function get_state_from_wpcom() { - static $status = null; - - if ( $status !== null ) { - return $status; - } - - $site_id = \Jetpack_Options::get_option( 'id' ); - - $response = Client::wpcom_json_api_request_as_blog( - sprintf( '/sites/%d/rewind', $site_id ) . '?force=wpcom', - '2', - array( 'timeout' => 2 ), - null, - 'wpcom' - ); - - if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { - $status = new WP_Error( 'rewind_state_fetch_failed' ); - return $status; - } - - $body = wp_remote_retrieve_body( $response ); - $status = json_decode( $body ); - return $status; - } - - /** - * Hits the wpcom api to retrieve the last 10 backup records. - * - * @return object|WP_Error - */ - public static function get_latest_backups() { - static $backups = null; - - if ( $backups !== null ) { - return $backups; - } - - $site_id = \Jetpack_Options::get_option( 'id' ); - $response = Client::wpcom_json_api_request_as_blog( - sprintf( '/sites/%d/rewind/backups', $site_id ) . '?force=wpcom', - '2', - array( 'timeout' => 2 ), - null, - 'wpcom' - ); - - if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { - $backups = new WP_Error( 'rewind_backups_fetch_failed' ); - return $backups; - } - - $body = wp_remote_retrieve_body( $response ); - $backups = json_decode( $body ); - return $backups; - } - - /** - * Determines whether the module/plugin/product needs the users attention. - * Typically due to some sort of error where user troubleshooting is needed. - * - * @return boolean|array - */ - public static function does_module_need_attention() { - $previous_backup_status = get_transient( self::BACKUP_STATUS_TRANSIENT_KEY ); - - // If we have a previous backup status, show it. - if ( ! empty( $previous_backup_status ) ) { - return $previous_backup_status === 'no_errors' ? false : $previous_backup_status; - } - - $backup_failed_status = false; - // First check the status of Rewind for failure. - $rewind_state = self::get_state_from_wpcom(); - if ( ! is_wp_error( $rewind_state ) ) { - if ( $rewind_state->state !== 'active' && $rewind_state->state !== 'provisioning' && $rewind_state->state !== 'awaiting_credentials' ) { - $backup_failed_status = array( - 'type' => 'error', - 'data' => array( - 'source' => 'rewind', - 'status' => isset( $rewind_state->reason ) && ! empty( $rewind_state->reason ) ? $rewind_state->reason : $rewind_state->state, - 'last_updated' => $rewind_state->last_updated, - ), - ); - } - } - // Next check for a failed last backup. - $latest_backups = self::get_latest_backups(); - if ( ! is_wp_error( $latest_backups ) ) { - // Get the last/latest backup record. - $last_backup = null; - foreach ( $latest_backups as $backup ) { - if ( $backup->is_backup ) { - $last_backup = $backup; - break; - } - } - - if ( $last_backup && isset( $last_backup->status ) ) { - if ( $last_backup->status !== 'started' && ! preg_match( '/-will-retry$/', $last_backup->status ) && $last_backup->status !== 'finished' ) { - $backup_failed_status = array( - 'type' => 'error', - 'data' => array( - 'source' => 'last_backup', - 'status' => $last_backup->status, - 'last_updated' => $last_backup->last_updated, - ), - ); - } - } - } - - if ( is_array( $backup_failed_status ) && $backup_failed_status['type'] === 'error' ) { - set_transient( self::BACKUP_STATUS_TRANSIENT_KEY, $backup_failed_status, 5 * MINUTE_IN_SECONDS ); - } else { - set_transient( self::BACKUP_STATUS_TRANSIENT_KEY, 'no_errors', HOUR_IN_SECONDS ); - } - - return $backup_failed_status; - } - - /** - * Return product bundles list - * that supports the product. - * - * @return boolean|array Products bundle list. - */ - public static function is_upgradable_by_bundle() { - return array( 'security', 'complete' ); - } - - /** - * Get the URL the user is taken after activating the product - * - * @return ?string - */ - public static function get_post_activation_url() { - return ''; // stay in My Jetpack page or continue the purchase flow if needed. - } - - /** - * Get the URL where the user manages the product - * - * @return ?string - */ - public static function get_manage_url() { - // check standalone first - if ( static::is_standalone_plugin_active() ) { - return admin_url( 'admin.php?page=jetpack-backup' ); - // otherwise, check for the main Jetpack plugin - } elseif ( static::is_jetpack_plugin_active() ) { - return Redirect::get_url( 'my-jetpack-manage-backup' ); - } - } - - /** - * Get the product-slugs of the paid plans for this product. - * (Do not include bundle plans, unless it's a bundle plan itself). - * - * @return array - */ - public static function get_paid_plan_product_slugs() { - return array( - 'jetpack_backup_daily', - 'jetpack_backup_daily_monthly', - 'jetpack_backup_realtime', - 'jetpack_backup_realtime_monthly', - 'jetpack_backup_t1_yearly', - 'jetpack_backup_t1_monthly', - 'jetpack_backup_t1_bi_yearly', - 'jetpack_backup_t2_yearly', - 'jetpack_backup_t2_monthly', - 'jetpack_backup_t0_yearly', - 'jetpack_backup_t0_monthly', - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-boost.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-boost.php deleted file mode 100644 index 1c2d5afb..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-boost.php +++ /dev/null @@ -1,418 +0,0 @@ - __( 'Auto CSS Optimization', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - 'Move important styling information to the start of the page, which helps pages display your content sooner, so your users don’t have to wait for the entire page to load. Commonly referred to as Critical CSS.', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( - 'included' => false, - 'description' => __( 'Manual', 'jetpack-my-jetpack' ), - 'info' => array( - 'title' => __( 'Manual Critical CSS regeneration', 'jetpack-my-jetpack' ), - 'content' => __( - '

              To enhance the speed of your site, with this plan you will need to optimize CSS by using the Manual Critical CSS generation feature whenever you:

              -
                -
              • Make theme changes.
              • -
              • Write a new post/page.
              • -
              • Edit a post/page.
              • -
              • Activate, deactivate, or update plugins that impact your site layout or HTML structure.
              • -
              • Change settings of plugins that impact your site layout or HTML structure.
              • -
              • Upgrade your WordPress version if the new release includes core CSS changes.
              • -
              ', - 'jetpack-my-jetpack' - ), - ), - ), - self::UPGRADED_TIER_SLUG => array( - 'included' => true, - 'description' => __( 'Included', 'jetpack-my-jetpack' ), - 'info' => array( - 'title' => __( 'Automatic Critical CSS regeneration', 'jetpack-my-jetpack' ), - 'content' => __( - '

              It’s essential to regenerate Critical CSS to optimize your site speed whenever your HTML or CSS structure changes. Being on top of this can be tedious and time-consuming.

              -

              Boost’s cloud service can automatically detect when your site needs the Critical CSS regenerated, and perform this function behind the scenes without requiring you to monitor it manually.

              ', - 'jetpack-my-jetpack' - ), - ), - ), - ), - ), - array( - 'name' => __( 'Automatic image size analysis', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - 'Scan your site for images that aren’t properly sized for the device they’re being viewed on.', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => false ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Historical performance scores', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - 'Get access to your historical performance scores and see advanced Core Web Vitals data.', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => false ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Dedicated email support', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - '

              Paid customers get dedicated email support from our world-class Happiness Engineers to help with any issue.

              -

              All other questions are handled by our team as quickly as we are able to go through the WordPress support forum.

              ', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => false ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Page Cache', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - 'Page caching speeds up load times by storing a copy of each web page on the first visit, allowing subsequent visits to be served instantly. This reduces server load and improves user experience by delivering content faster, without waiting for the page to be generated again.', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => true ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Image CDN Quality Settings', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - 'Fine-tune image quality settings to your liking.', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => false ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Image CDN Auto-Resize Lazy Images', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - 'Optimizes lazy-loaded images by dynamically serving perfectly sized images for each device.', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => false ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Image CDN', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - 'Deliver images from Jetpack\'s Content Delivery Network. Automatically resizes your images to an appropriate size, converts them to modern efficient formats like WebP, and serves them from a worldwide network of servers.', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => true ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Image guide', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - 'Discover and fix images with a suboptimal resolution, aspect ratio, or file size, improving user experience and page speed.', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => true ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Defer non-essential JavaScript', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - 'Run non-essential JavaScript after the page has loaded so that styles and images can load more quickly.', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => true ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Concatenate JS and CSS', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - 'Boost your website performance by merging and compressing JavaScript and CSS files, reducing site loading time and number of requests.', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => true ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - ); - } - - /** - * Get the URL the user is taken after purchasing the product through the checkout - * - * @return ?string - */ - public static function get_post_checkout_url() { - return self::get_manage_url(); - } - - /** - * Get the product princing details - * - * @return array Pricing details - */ - public static function get_pricing_for_ui() { - return array( - 'tiers' => array( - self::FREE_TIER_SLUG => array( - 'available' => true, - 'is_free' => true, - ), - self::UPGRADED_TIER_SLUG => array_merge( - array( - 'available' => true, - 'wpcom_product_slug' => self::UPGRADED_TIER_PRODUCT_SLUG, - ), - Wpcom_Products::get_product_pricing( self::UPGRADED_TIER_PRODUCT_SLUG ) - ), - ), - ); - } - - /** - * Get the URL where the user manages the product - * - * @return ?string - */ - public static function get_manage_url() { - return admin_url( 'admin.php?page=jetpack-boost' ); - } - - /** - * Activates the product by installing and activating its plugin - * - * @param bool|WP_Error $current_result Is the result of the top level activation actions. You probably won't do anything if it is an WP_Error. - * @return boolean|WP_Error - */ - public static function do_product_specific_activation( $current_result ) { - - $product_activation = parent::do_product_specific_activation( $current_result ); - - if ( is_wp_error( $product_activation ) && 'module_activation_failed' === $product_activation->get_error_code() ) { - // A bundle is not a module. There's nothing in the plugin to be activated, so it's ok to fail to activate the module. - $product_activation = true; - } - - // We just "got started" in My Jetpack, so skip the in-plugin experience. - update_option( 'jb_get_started', false ); - - return $product_activation; - } - - /** - * Get the product-slugs of the paid plans for this product. - * (Do not include bundle plans, unless it's a bundle plan itself). - * - * @return array - */ - public static function get_paid_plan_product_slugs() { - return array( - 'jetpack_boost_yearly', - 'jetpack_boost_monthly', - 'jetpack_boost_bi_yearly', - ); - } - - /** - * Return product bundles list - * that supports the product. - * - * @return boolean|array Products bundle list. - */ - public static function is_upgradable_by_bundle() { - return array( 'complete' ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-complete.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-complete.php deleted file mode 100644 index 31be8bb4..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-complete.php +++ /dev/null @@ -1,271 +0,0 @@ - true, - 'wpcom_product_slug' => $product_slug, - ), - Wpcom_Products::get_product_pricing( $product_slug ) - ); - } - - /** - * Get the WPCOM product slug used to make the purchase - * - * @return string - */ - public static function get_wpcom_product_slug() { - return 'jetpack_complete'; - } - - /** - * Checks whether the Jetpack module is active - * - * This is a bundle and not a product. We should not use this information for anything - * - * @return bool - */ - public static function is_module_active() { - return false; - } - - /** - * Activates the product by installing and activating its plugin - * - * @param WP_Error|bool $current_result Is the result of the top level activation actions. You probably won't do anything if it is an WP_Error. - * @return bool|\WP_Error - */ - public static function do_product_specific_activation( $current_result ) { - $product_activation = parent::do_product_specific_activation( $current_result ); - - // A bundle is not a module. There's nothing in the plugin to be activated, so it's ok to fail to activate the module. - if ( is_wp_error( $product_activation ) && 'module_activation_failed' === $product_activation->get_error_code() ) { - return $product_activation; - } - - // At this point, Jetpack plugin is installed. Let's activate each individual product. - $activation = Social::activate(); - if ( is_wp_error( $activation ) ) { - return $activation; - } - - $activation = Stats::activate(); - if ( is_wp_error( $activation ) ) { - return $activation; - } - - $activation = Anti_Spam::activate(); - if ( is_wp_error( $activation ) ) { - return $activation; - } - - $activation = Backup::activate(); - if ( is_wp_error( $activation ) ) { - return $activation; - } - - $activation = Scan::activate(); - if ( is_wp_error( $activation ) ) { - return $activation; - } - - $activation = Boost::activate(); - if ( is_wp_error( $activation ) ) { - return $activation; - } - - $activation = CRM::activate(); - if ( is_wp_error( $activation ) ) { - return $activation; - } - - $activation = Search::activate(); - if ( is_wp_error( $activation ) ) { - return $activation; - } - - $activation = VideoPress::activate(); - if ( is_wp_error( $activation ) ) { - return $activation; - } - - return $activation; - } - - /** - * Checks whether the Product is active - * - * Security is a bundle and not a module. Activation takes place on WPCOM. So lets consider it active if jetpack is active and has the plan. - * - * @return boolean - */ - public static function is_active() { - return static::is_jetpack_plugin_active() && static::has_required_plan(); - } - - /** - * Checks whether the current plan (or purchases) of the site already supports the product - * - * @return boolean - */ - public static function has_required_plan() { - $purchases_data = Wpcom_Products::get_site_current_purchases(); - if ( is_wp_error( $purchases_data ) ) { - return false; - } - if ( is_array( $purchases_data ) && ! empty( $purchases_data ) ) { - foreach ( $purchases_data as $purchase ) { - if ( str_starts_with( $purchase->product_slug, 'jetpack_complete' ) ) { - return true; - } - } - } - return false; - } - - /** - * Get the product-slugs of the paid plans for this product. - * (Do not include bundle plans, unless it's a bundle plan itself). - * - * @return array - */ - public static function get_paid_plan_product_slugs() { - return array( - 'jetpack_complete', - 'jetpack_complete_monthly', - 'jetpack_complete_bi_yearly', - ); - } - - /** - * Checks whether product is a bundle. - * - * @return boolean True - */ - public static function is_bundle_product() { - return true; - } - - /** - * Return all the products it contains. - * - * @return array Product slugs - */ - public static function get_supported_products() { - return array( - 'anti-spam', - 'backup', - 'boost', - 'crm', - 'scan', - 'search', - 'social', - 'stats', - 'videopress', - ); - } - - /** - * Get the URL where the user manages the product - * - * @return ?string - */ - public static function get_manage_url() { - return ''; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-creator.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-creator.php deleted file mode 100644 index 39be46c7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-creator.php +++ /dev/null @@ -1,356 +0,0 @@ - __( 'Import subscribers', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - 'Import a CSV file of your existing subscribers to be sent your Newsletter.', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( - 'included' => true, - 'description' => __( '100 subscribers', 'jetpack-my-jetpack' ), - ), - self::UPGRADED_TIER_SLUG => array( - 'included' => true, - 'description' => __( 'Unlimited subscribers', 'jetpack-my-jetpack' ), - ), - ), - ), - array( - 'name' => __( 'Transaction fees', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - '

              Fees are only collected when you accept payments.

              -

              Fees are based on the Jetpack plan you have and are calculated as a percentage of your revenue from 10% on the Free plan to 2% on the Creator plan (plus Stripe fees).

              ', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( - 'included' => true, - 'description' => __( '10%', 'jetpack-my-jetpack' ), - ), - self::UPGRADED_TIER_SLUG => array( - 'included' => true, - 'description' => __( '2%', 'jetpack-my-jetpack' ), - ), - ), - ), - array( - 'name' => __( 'Jetpack Blocks', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - 'Jetpack has over 40 Gutenberg blocks to help you with your content creation, such as displaying your podcasts, showing different content to repeat visitors, creating contact forms and many more.', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => true ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Paid content gating', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - 'Lock your content behind a paid content block. To access the content, readers will need to pay a one-time fee or a recurring subscription.', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => true ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Paywall access', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - 'Add a Paywall to your content which lets your visitors read a section of your content before being asked to subscribe to continue reading.', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => true ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Newsletter', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - 'Start a Newsletter by sending your content as an email newsletter direct to your fans email inboxes.', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => true ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Pay with PayPal', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - 'Accept payment with PayPal for simple payments like eBooks, courses and more.', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => false ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'WordAds', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - '

              WordAds adds advertisements to your website. Start earning from your website traffic.

              -

              Over 50 internet advertisers — including Google AdSense & Adx, AppNexus, Amazon A9, AOL Marketplace, Yahoo, Criteo, and more — bid to display ads in WordAds spots.

              ', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => false ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Dedicated email support', 'jetpack-my-jetpack' ), - 'info' => array( - 'content' => __( - '

              Paid customers get dedicated email support from our world-class Happiness Engineers to help with any issue.

              -

              All other questions are handled by our team as quickly as we are able to go through the WordPress support forum.

              ', - 'jetpack-my-jetpack' - ), - ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => false ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - ); - } - - /** - * Get the product princing details - * - * @return array Pricing details - */ - public static function get_pricing_for_ui() { - return array( - 'tiers' => array( - self::FREE_TIER_SLUG => array( - 'available' => true, - 'is_free' => true, - ), - self::UPGRADED_TIER_SLUG => array_merge( - array( - 'available' => true, - 'wpcom_product_slug' => self::UPGRADED_TIER_PRODUCT_SLUG, - ), - Wpcom_Products::get_product_pricing( self::UPGRADED_TIER_PRODUCT_SLUG ) - ), - ), - ); - } - - /** - * Get the URL where the user manages the product - * - * @return ?string - */ - public static function get_manage_url() { - return admin_url( 'admin.php?page=jetpack#/settings?term=creator' ); - } - - /** - * Get the WPCOM product slug used to make the purchase - * - * @return ?string - */ - public static function get_wpcom_product_slug() { - return 'jetpack_creator_yearly'; - } - - /** - * Get the WPCOM product slug used to make the purchase - * - * @return ?string - */ - public static function get_wpcom_biyearly_product_slug() { - return 'jetpack_creator_bi_yearly'; - } - - /** - * Get the WPCOM monthly product slug used to make the purchase - * - * @return ?string - */ - public static function get_wpcom_monthly_product_slug() { - return 'jetpack_creator_monthly'; - } - - /** - * Get the product-slugs of the paid bundles/plans that this product/module is included in - * - * @return array - */ - public static function get_paid_bundles_that_include_product() { - return array( - 'jetpack_complete', - 'jetpack_complete_monthly', - 'jetpack_complete_bi-yearly', - ); - } - - /** - * Get the product-slugs of the paid plans for this product. - * (Do not include bundle plans, unless it's a bundle plan itself). - * - * @return array - */ - public static function get_paid_plan_product_slugs() { - return array( - 'jetpack_creator_yearly', - 'jetpack_creator_monthly', - 'jetpack_creator_bi_yearly', - ); - } - - /** - * Checks whether the product can be upgraded - i.e. this shows the /#add-creator interstitial - * - * @return boolean - */ - public static function is_upgradable() { - return ! self::has_paid_plan_for_product(); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-crm.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-crm.php deleted file mode 100644 index 71aa29a8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-crm.php +++ /dev/null @@ -1,205 +0,0 @@ - true, - 'is_free' => false, - 'full_price' => 132, - 'discount_price' => 132, - 'is_introductory_offer' => false, - 'product_term' => 'year', - 'introductory_offer' => null, - // CRM is only sold in USD - 'currency_code' => 'USD', - ); - } - - /** - * Get the URL the user is taken after activating the product - * - * @return ?string - */ - public static function get_post_activation_url() { - return admin_url( 'admin.php?page=zerobscrm-plugin' ); // Welcome page. - } - - /** - * Get the URL where the user manages the product - * - * @return ?string - */ - public static function get_manage_url() { - return admin_url( 'admin.php?page=zerobscrm-dash' ); - } - - /** - * Checks whether the current plan (or purchases) of the site already supports the product - * CRM is available as part of Jetpack Complete - * - * @return boolean - */ - public static function has_paid_plan_for_product() { - $purchases_data = Wpcom_Products::get_site_current_purchases(); - if ( is_wp_error( $purchases_data ) ) { - return false; - } - - // TODO: check if CRM has a separate plan - - if ( is_array( $purchases_data ) && ! empty( $purchases_data ) ) { - foreach ( $purchases_data as $purchase ) { - if ( str_starts_with( $purchase->product_slug, 'jetpack_complete' ) ) { - return true; - } - } - } - - return false; - } - - /** - * Get the product-slugs of the paid bundles/plans that this product/module is included in. - * - * @return array - */ - public static function get_paid_bundles_that_include_product() { - return array( - 'jetpack_complete', - 'jetpack_complete_monthly', - 'jetpack_complete_bi_yearly', - ); - } - - /** - * Return product bundles list - * that supports the product. - * - * @return boolean|array Products bundle list. - */ - public static function is_upgradable_by_bundle() { - return array( 'complete' ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-extras.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-extras.php deleted file mode 100644 index 51f02232..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-extras.php +++ /dev/null @@ -1,140 +0,0 @@ - true, - 'is_free' => true, - ); - } - - /** - * Checks whether the Product is active. - * If Jetpack plugin is active, then Extras will be inactive. - * - * @return boolean - */ - public static function is_active() { - return static::is_jetpack_plugin_active(); - } - - /** - * Checks whether the plugin is installed - * If Jetpack plugin is installed, then Extras will be inactive. - * - * @return boolean - */ - public static function is_plugin_installed() { - return static::is_jetpack_plugin_installed(); - } - - /** - * Get the URL where the user manages the product - * - * @return ?string - */ - public static function get_manage_url() { - return admin_url( 'admin.php?page=jetpack' ); - } - - /** - * Activates the Jetpack plugin - * - * @return null|WP_Error Null on success, WP_Error on invalid file. - */ - public static function activate_plugin() { - return activate_plugin( static::get_installed_plugin_filename( 'jetpack' ) ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-growth.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-growth.php deleted file mode 100644 index 1ec4351c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-growth.php +++ /dev/null @@ -1,223 +0,0 @@ - true, - 'wpcom_product_slug' => $product_slug, - ), - Wpcom_Products::get_product_pricing( $product_slug ) - ); - } - - /** - * Get the WPCOM product slug used to make the purchase - * - * @return string - */ - public static function get_wpcom_product_slug() { - return 'jetpack_growth_yearly'; - } - - /** - * Checks whether the Jetpack module is active - * - * This is a bundle and not a product. We should not use this information for anything - * - * @return bool - */ - public static function is_module_active() { - return false; - } - - /** - * Activates the product by installing and activating its plugin - * - * @param WP_Error|bool $current_result Is the result of the top level activation actions. You probably won't do anything if it is an WP_Error. - * @return bool|\WP_Error - */ - public static function do_product_specific_activation( $current_result ) { - $product_activation = parent::do_product_specific_activation( $current_result ); - - // A bundle is not a module. There's nothing in the plugin to be activated, so it's ok to fail to activate the module. - if ( is_wp_error( $product_activation ) && 'module_activation_failed' === $product_activation->get_error_code() ) { - return $product_activation; - } - - // At this point, Jetpack plugin is installed. Let's activate each individual product. - $activation = Social::activate(); - if ( is_wp_error( $activation ) ) { - return $activation; - } - - $activation = Stats::activate(); - if ( is_wp_error( $activation ) ) { - return $activation; - } - - return $activation; - } - - /** - * Checks whether the Product is active - * - * Growth is a bundle and not a module. Activation takes place on WPCOM. So lets consider it active if jetpack is active and has the plan. - * - * @return bool - */ - public static function is_active() { - return static::is_jetpack_plugin_active() && static::has_required_plan(); - } - - /** - * Checks whether the current plan (or purchase) of the site already supports the product - * - * @return bool - */ - public static function has_required_plan() { - $purchases_data = Wpcom_Products::get_site_current_purchases(); - if ( is_wp_error( $purchases_data ) ) { - return false; - } - if ( is_array( $purchases_data ) && ! empty( $purchases_data ) ) { - foreach ( $purchases_data as $purchase ) { - if ( - str_starts_with( $purchase->product_slug, 'jetpack_growth' ) || - str_starts_with( $purchase->product_slug, 'jetpack_complete' ) - ) { - return true; - } - } - } - return false; - } - - /** - * Get the product-slugs of the paid plans for this product. - * (Do not include bundle plans, unless it's a bundle plan itself). - * - * @return array - */ - public static function get_paid_plan_product_slugs() { - return array( - 'jetpack_growth_yearly', - 'jetpack_growth_monthly', - 'jetpack_growth_bi_yearly', - ); - } - - /** - * Checks whether the product is a bundle - * - * @return bool - */ - public static function is_bundle_product() { - return true; - } - - /** - * Returns all products it contains. - * - * @return array Product slugs - */ - public static function get_supported_products() { - return array( 'social', 'stats' ); - } - - /** - * Get the URL where the user manages the product - * - * @return string - */ - public static function get_manage_url() { - return ''; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-hybrid-product.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-hybrid-product.php deleted file mode 100644 index 0fb93d67..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-hybrid-product.php +++ /dev/null @@ -1,153 +0,0 @@ -get_error_code() ) { - $product_activation = Plugins_Installer::install_plugin( self::JETPACK_PLUGIN_SLUG ); - if ( ! is_wp_error( $product_activation ) ) { - $product_activation = static::activate_plugin(); - } - } - if ( is_wp_error( $product_activation ) ) { - return $product_activation; - } - } - - if ( ! empty( static::$module_name ) ) { - // Only activate the module if the plan supports it - // We don't want to throw an error for a missing plan here since we try activation before purchase - if ( static::$requires_plan && ! static::has_any_plan_for_product() ) { - return true; - } - - $module_activation = ( new Modules() )->activate( static::$module_name, false, false ); - - if ( ! $module_activation ) { - return new WP_Error( 'module_activation_failed', __( 'Error activating Jetpack module', 'jetpack-my-jetpack' ) ); - } - - return $module_activation; - } - - return true; - } - - /** - * Install and activate the standalone plugin in the case it's missing. - * - * @return boolean|WP_Error - */ - public static function install_and_activate_standalone() { - $result = parent::install_and_activate_standalone(); - - if ( is_wp_error( $result ) ) { - return $result; - } - - /** - * Activate the module as well, if the user has a plan - * or the product does not require a plan to work - */ - if ( static::has_any_plan_for_product() && isset( static::$module_name ) ) { - $module_activation = ( new Modules() )->activate( static::$module_name, false, false ); - - if ( ! $module_activation ) { - return new WP_Error( 'module_activation_failed', __( 'Error activating Jetpack module', 'jetpack-my-jetpack' ) ); - } - } - - return true; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-jetpack-ai.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-jetpack-ai.php deleted file mode 100644 index fd185631..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-jetpack-ai.php +++ /dev/null @@ -1,656 +0,0 @@ - __( 'Number of requests', 'jetpack-my-jetpack' ), - 'info' => array( - 'title' => __( 'Requests', 'jetpack-my-jetpack' ), - 'content' => __( 'Increase your monthly request limit. Upgrade now and have the option to further increase your requests with additional upgrades.', 'jetpack-my-jetpack' ), - ), - 'tiers' => array( - self::CURRENT_TIER_SLUG => array( - 'included' => true, - 'description' => $current_description, - ), - self::UPGRADED_TIER_SLUG => array( - 'included' => true, - 'description' => $next_description, - ), - ), - ), - array( - 'name' => __( 'Generate and edit content', 'jetpack-my-jetpack' ), - 'tiers' => array( - self::CURRENT_TIER_SLUG => array( 'included' => true ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Build forms from prompts', 'jetpack-my-jetpack' ), - 'tiers' => array( - self::CURRENT_TIER_SLUG => array( 'included' => true ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Get feedback on posts', 'jetpack-my-jetpack' ), - 'tiers' => array( - self::CURRENT_TIER_SLUG => array( 'included' => true ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Generate featured images', 'jetpack-my-jetpack' ), - 'tiers' => array( - self::CURRENT_TIER_SLUG => array( 'included' => true ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - ); - } - - /** - * Get the current usage tier - * - * @return int - */ - public static function get_current_usage_tier() { - if ( ! self::is_site_connected() ) { - return 0; - } - - $info = self::get_ai_assistant_feature(); - - // Bail early if it's not possible to fetch the feature data. - if ( is_wp_error( $info ) ) { - return 0; - } - - $current_tier = isset( $info['current-tier']['value'] ) ? $info['current-tier']['value'] : null; - - return $current_tier; - } - - /** - * Get the next usage tier - * - * @return int - */ - public static function get_next_usage_tier() { - if ( ! self::is_site_connected() || ! self::has_paid_plan_for_product() ) { - // without site connection we can't know if tiers are enabled or not, - // hence we can't know if the next tier is 100 or 1 (unlimited). - return 100; - } - - $info = self::get_ai_assistant_feature(); - - // Bail early if it's not possible to fetch the feature data or if it's included in a plan. - if ( is_wp_error( $info ) || empty( $info ) ) { - return null; - } - - // Trust the next tier provided by the feature data. - $next_tier = isset( $info['next-tier']['value'] ) ? $info['next-tier']['value'] : null; - - return $next_tier; - } - - /** - * Get the internationalized product description - * - * @return string - */ - public static function get_description() { - return __( 'Enhance your writing and productivity with our AI suite', 'jetpack-my-jetpack' ); - } - - /** - * Get the internationalized usage tier long description by tier - * - * @param int $tier The usage tier. - * @return string - */ - public static function get_long_description_by_usage_tier( $tier ) { - $long_descriptions = array( - 1 => __( 'Jetpack AI Assistant brings the power of AI right into your WordPress editor, letting your content creation soar to new heights.', 'jetpack-my-jetpack' ), - 100 => __( 'The most advanced AI technology Jetpack has to offer.', 'jetpack-my-jetpack' ), - ); - $tiered_description = __( 'Upgrade and increase the amount of your available monthly requests to continue using the most advanced AI technology Jetpack has to offer.', 'jetpack-my-jetpack' ); - - return isset( $long_descriptions[ $tier ] ) ? $long_descriptions[ $tier ] : $tiered_description; - } - - /** - * Get the internationalized product long description - * - * @return string - */ - public static function get_long_description() { - $next_tier = self::get_next_usage_tier(); - - return self::get_long_description_by_usage_tier( $next_tier ); - } - - /** - * Get the internationalized usage tier features by tier - * - * @param int $tier The usage tier. - * @return string - */ - public static function get_features_by_usage_tier( $tier ) { - $is_tier_plan = $tier && intval( $tier ) > 1; - - if ( $tier === 100 && ( ! self::is_site_connected() || ! self::has_paid_plan_for_product() ) ) { - // in these cases, get_next_usage_tier() will return 100 - // 100 is fine as default when tiered plans are enabled, but not otherwise - $is_tier_plan = false; - } - - $features = array( - __( 'High request capacity *', 'jetpack-my-jetpack' ), - __( 'Generate text, tables, lists, and forms', 'jetpack-my-jetpack' ), - __( 'Easily refine content to your liking', 'jetpack-my-jetpack' ), - __( 'Make your content easier to read', 'jetpack-my-jetpack' ), - __( 'Generate images with one-click', 'jetpack-my-jetpack' ), - __( 'Optimize your titles for better performance', 'jetpack-my-jetpack' ), - __( 'Priority support', 'jetpack-my-jetpack' ), - ); - - $tiered_features = array( - __( 'Prompt based content generation', 'jetpack-my-jetpack' ), - __( 'Generate text, tables, and lists', 'jetpack-my-jetpack' ), - __( 'Adaptive tone adjustment', 'jetpack-my-jetpack' ), - __( 'Superior spelling and grammar correction', 'jetpack-my-jetpack' ), - __( 'Title & summary generation', 'jetpack-my-jetpack' ), - __( 'Priority support', 'jetpack-my-jetpack' ), - /* translators: %d is the number of requests. */ - sprintf( __( 'Up to %d requests per month', 'jetpack-my-jetpack' ), $tier ), - ); - - return $is_tier_plan ? $tiered_features : $features; - } - - /** - * Get the internationalized features list - * - * @return array Jetpack AI features list - */ - public static function get_features() { - $next_tier = self::get_next_usage_tier(); - - return self::get_features_by_usage_tier( $next_tier ); - } - - /** - * Get the product pricing details by tier - * - * @param int|null $tier The usage tier. - * @return array Pricing details - */ - public static function get_pricing_for_ui_by_usage_tier( $tier ) { - if ( $tier === null ) { - return array(); - } - - $product = Wpcom_Products::get_product( static::get_wpcom_product_slug() ); - - if ( empty( $product ) ) { - return array(); - } - - $tier_plans_enabled = self::are_tier_plans_enabled(); - - /* - * when tiers are enabled and the price tier list is empty, - * we may need to renew the cache for the product data so - * we get the new price tier list. - * - * if the list is still empty after the fresh data, we will - * default to empty pricing (by returning an empty array). - */ - if ( empty( $product->price_tier_list ) && $tier_plans_enabled ) { - $product = Wpcom_Products::get_product( static::get_wpcom_product_slug(), true ); - } - - // get the base pricing for the unlimited plan, for compatibility - $base_pricing = Wpcom_Products::get_product_pricing( static::get_wpcom_product_slug() ); - - $price_tier_list = $product->price_tier_list; - $yearly_prices = array(); - - foreach ( $price_tier_list as $price_tier ) { - if ( isset( $price_tier->maximum_units ) && isset( $price_tier->maximum_price ) ) { - // The prices are in cents - $yearly_prices[ $price_tier->maximum_units ] = $price_tier->maximum_price / 100; - } - } - - // add the base pricing to the list - $prices = array( 1 => $base_pricing ); - - foreach ( $yearly_prices as $units => $price ) { - $prices[ $units ] = array_merge( - $base_pricing, - array( - 'full_price' => $price, - 'discount_price' => $price, - 'is_introductory_offer' => false, - 'introductory_offer' => null, - ) - ); - } - - return isset( $prices[ $tier ] ) ? $prices[ $tier ] : array(); - } - - /** - * Get the product pricing details - * - * @return array Pricing details - */ - public static function get_pricing_for_ui() { - // no tiers - if ( ! self::are_tier_plans_enabled() ) { - return array_merge( - array( - 'available' => true, - 'wpcom_product_slug' => static::get_wpcom_product_slug(), - ), - // hardcoding 1 as next tier if tiers are not enabled - self::get_pricing_for_ui_by_usage_tier( 1 ) - ); - } - - $next_tier = self::get_next_usage_tier(); - $current_tier = self::get_current_usage_tier(); - $current_call_to_action = $current_tier === 0 - ? __( 'Continue for free', 'jetpack-my-jetpack' ) - : __( 'I\'m fine with my plan, thanks', 'jetpack-my-jetpack' ); - $next_call_to_action = $next_tier === null - ? __( 'Contact Us', 'jetpack-my-jetpack' ) - : __( 'Upgrade', 'jetpack-my-jetpack' ); - - return array( - 'tiers' => array( - self::CURRENT_TIER_SLUG => array_merge( - self::get_pricing_for_ui_by_usage_tier( $current_tier ), - array( - 'available' => true, - 'is_free' => true, - 'call_to_action' => $current_call_to_action, - ) - ), - self::UPGRADED_TIER_SLUG => array_merge( - self::get_pricing_for_ui_by_usage_tier( $next_tier ), - array( - 'wpcom_product_slug' => static::get_wpcom_product_slug(), - 'quantity' => $next_tier, - 'call_to_action' => $next_call_to_action, - ) - ), - ), - ); - } - - /** - * Get the WPCOM product slug used to make the purchase - * - * @return string - */ - public static function get_wpcom_product_slug() { - return 'jetpack_ai_yearly'; - } - - /** - * Get the WPCOM monthly product slug used to make the purchase - * - * @return string - */ - public static function get_wpcom_monthly_product_slug() { - return 'jetpack_ai_monthly'; - } - - /** - * Get the WPCOM bi-yearly product slug used to make the purchase - * - * @return string - */ - public static function get_wpcom_bi_yearly_product_slug() { - return 'jetpack_ai_bi_yearly'; - } - - /** - * Get the product-slugs of the paid plans for this product. - * (Do not include bundle plans, unless it's a bundle plan itself). - * - * @return array - */ - public static function get_paid_plan_product_slugs() { - return array( - 'jetpack_ai_yearly', - 'jetpack_ai_monthly', - 'jetpack_ai_bi_yearly', - ); - } - - /** - * Checks whether the product can be upgraded to a different product. - * - * @return boolean - */ - public static function is_upgradable() { - $has_ai_feature = static::does_site_have_feature( 'ai-assistant' ); - $tier_plans_enabled = self::are_tier_plans_enabled(); - $current_tier = self::get_current_usage_tier(); - - if ( $has_ai_feature && ! $tier_plans_enabled && $current_tier >= 1 ) { - return false; - } - - $next_tier = self::get_next_usage_tier(); - - // The check below is debatable, not having the feature should not flag as not upgradable. - // If user is free (tier = 0), not unlimited (tier = 1) and has a next tier, then it's upgradable. - if ( $current_tier !== null && $current_tier !== 1 && $next_tier ) { - return true; - } - - // Mark as not upgradable if user is on unlimited tier or does not have any plan. - if ( ! $has_ai_feature || null === $current_tier || 1 === $current_tier ) { - return false; - } - - return true; - } - - /** - * Get the URL the user is taken after purchasing the product through the checkout - * - * @return ?string - */ - public static function get_post_checkout_url() { - return self::get_manage_url(); - } - - /** - * Get the URL the user is taken after activating the product through the checkout - * - * @return ?string - */ - public static function get_post_activation_url() { - return self::get_manage_url(); - } - - /** - * Get the URL where the user manages the product - * - * @return ?string - */ - public static function get_manage_url() { - return admin_url( 'admin.php?page=my-jetpack#/jetpack-ai' ); - } - - /** - * Checks whether the plugin is installed - * - * @return boolean - */ - public static function is_plugin_installed() { - return self::is_jetpack_plugin_installed(); - } - - /** - * Checks whether the plugin is active - * - * @return boolean - */ - public static function is_plugin_active() { - return (bool) static::is_jetpack_plugin_active(); - } - - /** - * Get data about the AI Assistant feature - * - * @return array - */ - public static function get_ai_assistant_feature() { - // Bail early if the plugin is not active. - if ( ! self::is_jetpack_plugin_installed() ) { - return array(); - } - - // Check if the global constant is defined. - if ( ! defined( 'JETPACK__PLUGIN_DIR' ) ) { - return array(); - } - - // Bail early if the site is not connected. - if ( ! self::is_site_connected() ) { - return array(); - } - - // Check if class exists. If not, try to require it once. - if ( ! class_exists( 'Jetpack_AI_Helper' ) ) { - $class_file_path = JETPACK__PLUGIN_DIR . '_inc/lib/class-jetpack-ai-helper.php'; - - // Check whether the file exists - if ( ! file_exists( $class_file_path ) ) { - return array(); - } - - require_once $class_file_path; - } - - return \Jetpack_AI_Helper::get_ai_assistance_feature(); - } - - /** - * Get the AI Assistant tiered plans status - * - * @return boolean - */ - public static function are_tier_plans_enabled() { - $info = self::get_ai_assistant_feature(); - if ( is_wp_error( $info ) ) { - // this is another faulty default value, we'll assume disabled while - // production is enabled - return false; - } - - if ( ! empty( $info ) && isset( $info['tier-plans-enabled'] ) ) { - return boolval( $info['tier-plans-enabled'] ); - } - return false; - } - - /** - * Checks whether the site is connected to WordPress.com. - * - * @return boolean - */ - private static function is_site_connected() { - return ( new Connection_Manager() )->is_connected(); - } - - /** - * Get the URL where the user manages the product - * - * NOTE: this method is the only thing that resembles an initialization for the product. - * - * @return void - */ - public static function extend_plugin_action_links() { - add_action( 'myjetpack_enqueue_scripts', array( static::class, 'admin_enqueue_scripts' ) ); - add_filter( 'default_content', array( static::class, 'add_ai_block' ), 10, 2 ); - } - - /** - * Enqueue the AI Assistant script - * - * The script is just a global variable used for the nonce, needed for the create post link. - * - * @return void - */ - public static function admin_enqueue_scripts() { - wp_register_script( - 'my_jetpack_ai_app', - false, - array(), - Initializer::PACKAGE_VERSION, - array( 'in_footer' => true ) - ); - wp_localize_script( - 'my_jetpack_ai_app', - 'jetpackAi', - array( - 'nonce' => wp_create_nonce( 'ai-assistant-content-nonce' ), - ) - ); - wp_enqueue_script( 'my_jetpack_ai_app' ); - } - - /** - * Add AI block to the post content - * - * Used only from the link on the product page, the filter will insert an AI Assistant block in the post content. - * - * @param string $content The post content. - * @param WP_Post $post The post object. - * @return string - */ - public static function add_ai_block( $content, $post ) { - if ( isset( $_GET['use_ai_block'] ) && isset( $_GET['_wpnonce'] ) - && wp_verify_nonce( sanitize_text_field( wp_unslash( $_GET['_wpnonce'] ) ), 'ai-assistant-content-nonce' ) - && ! empty( $post ) - && ! is_wp_error( $post ) - && current_user_can( 'edit_post', $post->ID ) - && '' === $content - ) { - return ''; - } - return $content; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-module-product.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-module-product.php deleted file mode 100644 index 40e4ef7f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-module-product.php +++ /dev/null @@ -1,164 +0,0 @@ -has_connected_owner() ) { - return Products::STATUS_USER_CONNECTION_ERROR; - } - - if ( ! static::is_module_active() ) { - return Products::STATUS_MODULE_DISABLED; - } - - return Products::STATUS_ACTIVE; - } - - /** - * Gets the current status of the product - * - * @return string - */ - public static function get_status() { - if ( static::$is_feature ) { - return static::get_feature_status(); - } - - $status = parent::get_status(); - if ( Products::STATUS_INACTIVE === $status && ! static::is_module_active() ) { - $status = Products::STATUS_MODULE_DISABLED; - } - return $status; - } - - /** - * Activates the product by installing and activating its plugin - * - * @param bool|WP_Error $plugin_activation Is the result of the top level activation actions. You probably won't do anything if it is an WP_Error. - * @return boolean|\WP_Error - */ - public static function do_product_specific_activation( $plugin_activation ) { - self::check_for_module_name(); - - if ( is_wp_error( $plugin_activation ) ) { - return $plugin_activation; - } - - if ( ! class_exists( 'Jetpack' ) ) { - return new WP_Error( 'plugin_activation_failed', __( 'Error activating Jetpack plugin', 'jetpack-my-jetpack' ) ); - } - - $module_activation = Jetpack::activate_module( static::$module_name, false, false ); - - if ( ! $module_activation ) { - return new WP_Error( 'module_activation_failed', __( 'Error activating Jetpack module', 'jetpack-my-jetpack' ) ); - } - - return $module_activation; - } - - /** - * Deactivate the module - * - * @return boolean - */ - public static function deactivate() { - self::check_for_module_name(); - if ( ! class_exists( 'Jetpack' ) ) { - return true; - } - return Jetpack::deactivate_module( static::$module_name ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-newsletter.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-newsletter.php deleted file mode 100644 index cd24c843..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-newsletter.php +++ /dev/null @@ -1,186 +0,0 @@ - true, - 'is_free' => true, - ); - } - - /** - * Checks whether the Product is active. - * - * @return boolean - */ - public static function is_active() { - return static::is_jetpack_plugin_active(); - } - - /** - * Checks whether the plugin is installed - * - * @return boolean - */ - public static function is_plugin_installed() { - return static::is_jetpack_plugin_installed(); - } - - /** - * Get the URL where the user manages the product - * - * @return ?string - */ - public static function get_manage_url() { - return admin_url( 'admin.php?page=jetpack#/settings?term=newsletter' ); - } - - /** - * Activates the Jetpack plugin - * - * @return null|WP_Error Null on success, WP_Error on invalid file. - */ - public static function activate_plugin(): ?WP_Error { - $plugin_filename = static::get_installed_plugin_filename( self::JETPACK_PLUGIN_SLUG ); - - if ( $plugin_filename ) { - return activate_plugin( $plugin_filename ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-product.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-product.php deleted file mode 100644 index 88b66bec..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-product.php +++ /dev/null @@ -1,1094 +0,0 @@ - static::$slug, - 'plugin_slug' => static::get_plugin_slug(), - 'name' => static::get_name(), - 'title' => static::get_title(), - 'category' => static::$category, - /* Maintain legacy compatibility with the old product info structure. See: #42271 */ - 'description' => static::get_description(), - 'long_description' => static::get_long_description(), - 'tiers' => static::get_tiers(), - 'features' => static::get_features(), - 'features_by_tier' => static::get_features_by_tier(), - /* End of legacy compatibility fields. */ - 'disclaimers' => static::get_disclaimers(), - 'is_bundle' => static::is_bundle_product(), - 'is_plugin_active' => static::is_plugin_active(), - 'is_tiered_pricing' => static::$is_tiered_pricing, - 'is_upgradable_by_bundle' => static::is_upgradable_by_bundle(), - 'is_feature' => static::$is_feature, - 'supported_products' => static::get_supported_products(), - 'wpcom_product_slug' => static::get_wpcom_product_slug(), - 'requires_user_connection' => static::$requires_user_connection, - 'feature_identifying_paid_plan' => static::$feature_identifying_paid_plan, - 'has_free_offering' => static::$has_free_offering, - 'manage_url' => static::get_manage_url(), - 'post_activation_url' => static::get_post_activation_url(), - 'post_activation_urls_by_feature' => static::get_manage_urls_by_feature(), - 'standalone_plugin_info' => static::get_standalone_info(), - 'class' => static::class, - 'post_checkout_url' => static::get_post_checkout_url(), - 'post_checkout_urls_by_feature' => static::get_post_checkout_urls_by_feature(), - ); - } - - /** - * Get the Product Info that requires http requests to get - * - * @throws \Exception If required attribute is not declared in the child class. - * @return array - */ - public static function get_wpcom_info() { - if ( static::$slug === null ) { - throw new \Exception( 'Product classes must declare the $slug attribute.' ); - } - - $product_data = array( - 'status' => static::get_status(), - 'pricing_for_ui' => static::get_pricing_for_ui(), - 'is_upgradable' => static::is_upgradable(), - 'description' => static::get_description(), - 'tiers' => static::get_tiers(), - 'features' => static::get_features(), - 'features_by_tier' => static::get_features_by_tier(), - 'long_description' => static::get_long_description(), - 'has_any_plan_for_product' => static::has_any_plan_for_product(), - 'has_free_plan_for_product' => static::has_free_plan_for_product(), - 'has_paid_plan_for_product' => static::has_paid_plan_for_product(), - 'purchase_url' => static::get_purchase_url(), - 'manage_paid_plan_purchase_url' => static::get_manage_paid_plan_purchase_url(), - 'renew_paid_plan_purchase_url' => static::get_renew_paid_plan_purchase_url(), - 'does_module_need_attention' => static::does_module_need_attention(), - ); - - if ( static::$slug === 'jetpack-ai' ) { - $product_data['ai-assistant-feature'] = static::get_ai_assistant_feature(); - } - - return $product_data; - } - - /** - * Collect the site's active features - * - * @return WP_Error|array - */ - public static function get_site_features_from_wpcom() { - static $features = null; - - if ( $features !== null ) { - return $features; - } - - // Check for a cached value before doing lookup - $stored_features = get_transient( self::MY_JETPACK_SITE_FEATURES_TRANSIENT_KEY ); - if ( $stored_features !== false ) { - return $stored_features; - } - - $site_id = Jetpack_Options::get_option( 'id' ); - $response = Client::wpcom_json_api_request_as_blog( sprintf( '/sites/%d/features', $site_id ), '1.1' ); - - if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { - $features = new WP_Error( 'site_features_fetch_failed' ); - return $features; - } - - $body = wp_remote_retrieve_body( $response ); - $feature_return = json_decode( $body ); - - $features = array( - 'active' => $feature_return->active, - 'available' => $feature_return->available, - ); - // set a short transient to help with multiple lookups on the same page load. - set_transient( self::MY_JETPACK_SITE_FEATURES_TRANSIENT_KEY, $features, 15 ); - - return $features; - } - - /** - * Check to see if the site has a feature - * This will check the features provided by the site plans and products (including free ones) - * - * @param string $feature - the feature to check for. - * @return bool - */ - public static function does_site_have_feature( $feature ) { - if ( ! $feature ) { - return false; - } - - $features = self::get_site_features_from_wpcom(); - if ( is_wp_error( $features ) ) { - return false; - } - - return in_array( $feature, $features['active'], true ); - } - - /** - * Get the product name - * - * @return string - */ - abstract public static function get_name(); - - /** - * Get the product title - * - * @return string - */ - abstract public static function get_title(); - - /** - * Get the internationalized product description - * - * @return string - */ - abstract public static function get_description(); - - /** - * Get the internationalized product long description - * - * @return string - */ - abstract public static function get_long_description(); - - /** - * Get the tiers for the product - * - * @return boolean|string[] The slugs of the tiers (i.e. [ "free", "basic", "advanced" ]), or False if the product has no tiers. - */ - public static function get_tiers() { - return array(); - } - - /** - * Get the internationalized features list - * - * @return array - */ - abstract public static function get_features(); - - /** - * Get the internationalized comparison of features grouped by each tier - * - * @return array - */ - public static function get_features_by_tier() { - return array(); - } - - /** - * Get the product pricing - * - * @return array - */ - abstract public static function get_pricing_for_ui(); - - /** - * Get the URL where the user can purchase the product iff it doesn't have an interstitial page in My Jetpack. - * - * @return ?string - */ - public static function get_purchase_url() { - // Declare as concrete method as most Jetpack products use an interstitial page within My Jetpack. - return null; - } - - /** - * Get the URL where the user manages the product - * - * @return ?string - */ - abstract public static function get_manage_url(); - - /** - * Get the URL where the user manages the product for each product feature - * - * @return ?array - */ - public static function get_manage_urls_by_feature() { - return null; - } - - /** - * Get the URL the user is taken after activating the product - * - * @return ?string - */ - public static function get_post_activation_url() { - return static::get_manage_url(); - } - - /** - * Get the URL the user is taken after purchasing the product through the checkout - * - * @return ?string - */ - public static function get_post_checkout_url() { - return null; - } - - /** - * Get the URL the user is taken after purchasing the product through the checkout for each product feature - * - * @return ?array - */ - public static function get_post_checkout_urls_by_feature() { - return null; - } - - /** - * Get the WPCOM product slug used to make the purchase - * - * @return ?string - */ - public static function get_wpcom_product_slug() { - return null; - } - - /** - * Get the disclaimers corresponding to a feature - * - * @return ?array - */ - public static function get_disclaimers() { - return array(); - } - - /** - * Get the standalone plugin related info - * - * @return array - */ - public static function get_standalone_info() { - $is_standalone_installed = static::$has_standalone_plugin && self::is_plugin_installed(); - $is_standalone_active = static::$has_standalone_plugin && self::is_plugin_active(); - - return array( - 'has_standalone_plugin' => static::$has_standalone_plugin, - 'is_standalone_installed' => $is_standalone_installed, - 'is_standalone_active' => $is_standalone_active, - ); - } - - /** - * Checks whether the site has a paid plan for the product. - * - * This function relies on the product's `$feature_identifying_paid_plan` and `get_paid_plan_product_slugs()` function. - * If the product does not define a `$feature_identifying_paid_plan`, be sure the product includes functions for both - * `get_paid_plan_product_slugs()` and `get_paid_bundles_that_include_product()` which return all the product slugs and - * bundle slugs that include the product, respectively. - * - * @return boolean - */ - public static function has_paid_plan_for_product() { - // First check site features (if there's a feature that identifies the paid plan) - if ( static::$feature_identifying_paid_plan ) { - if ( static::does_site_have_feature( static::$feature_identifying_paid_plan ) ) { - return true; - } - } - // Otherwise check site purchases - $plans_with_product = array_merge( - static::get_paid_bundles_that_include_product(), - static::get_paid_plan_product_slugs() - ); - - $purchases_data = Wpcom_Products::get_site_current_purchases(); - if ( is_wp_error( $purchases_data ) ) { - return false; - } - if ( is_array( $purchases_data ) && ! empty( $purchases_data ) ) { - foreach ( $purchases_data as $purchase ) { - foreach ( $plans_with_product as $plan ) { - if ( strpos( $purchase->product_slug, $plan ) !== false ) { - return true; - } - } - } - } - - return false; - } - - /** - * Checks whether the site has a free plan for the product - * Note, this should not return true if a product does not have a WPCOM plan (ex: search free, Akismet Free, stats free) - * - * @return false - */ - public static function has_free_plan_for_product() { - return false; - } - - /** - * Checks whether the site has any WPCOM plan for a product (paid or free) - * - * @return bool - */ - public static function has_any_plan_for_product() { - return static::has_paid_plan_for_product() || static::has_free_plan_for_product(); - } - - /** - * Get the product-slugs of the paid plans for this product. - * (Do not include bundle plans, unless it's a bundle plan itself). - * - * @return array - */ - public static function get_paid_plan_product_slugs() { - return array(); - } - - /** - * Get the product-slugs of the paid bundles/plans that this product/module is included in. - * - * This function relies on the product's `$feature_identifying_paid_plan` - * If the product does not define a `$feature_identifying_paid_plan`, be sure to include this - * function in the product's class and have it return all the paid bundle slugs that include - * the product. - * - * @return array - */ - public static function get_paid_bundles_that_include_product() { - if ( static::is_bundle_product() ) { - return array(); - } - $features = static::get_site_features_from_wpcom(); - if ( is_wp_error( $features ) ) { - return array(); - } - $idendifying_feature = static::$feature_identifying_paid_plan; - if ( empty( $features['available'] ) ) { - return array(); - } - $paid_bundles = $features['available']->$idendifying_feature ?? array(); - $current_bundle = Wpcom_Products::get_site_current_plan( true ); - - if ( in_array( static::$feature_identifying_paid_plan, $current_bundle['features']['active'], true ) ) { - $paid_bundles[] = $current_bundle['product_slug']; - } - - return $paid_bundles; - } - - /** - * Gets the paid plan's purchase/subsciption info, or null if no paid plan purchases. - * - * @return object|null - */ - public static function get_paid_plan_purchase_for_product() { - $paid_plans = array_merge( - static::get_paid_plan_product_slugs(), - static::get_paid_bundles_that_include_product() - ); - - $purchases_data = Wpcom_Products::get_site_current_purchases(); - if ( is_wp_error( $purchases_data ) ) { - return null; - } - - if ( is_array( $purchases_data ) && ! empty( $purchases_data ) ) { - foreach ( $purchases_data as $purchase ) { - foreach ( $paid_plans as $plan ) { - if ( strpos( $purchase->product_slug, $plan ) !== false ) { - return $purchase; - } - } - } - } - - return null; - } - - /** - * Gets the paid plan's expiry date. - * - * @return string - */ - public static function get_paid_plan_expiration_date() { - $purchase = static::get_paid_plan_purchase_for_product(); - if ( ! $purchase ) { - return 'paid-plan-does-not-exist'; - } - - return $purchase->expiry_date; - } - - /** - * Gets the paid plan's expiry status. - * - * @return string - */ - public static function get_paid_plan_expiration_status() { - $purchase = static::get_paid_plan_purchase_for_product(); - if ( ! $purchase ) { - return 'paid-plan-does-not-exist'; - } - - return $purchase->expiry_status; - } - - /** - * Checks if the paid plan is expired or not. - * - * @param bool $not_expired_after_cutoff - whether to not return the plan as expired if the plan has been expired for some duration of time. - * @return bool - */ - public static function is_paid_plan_expired( $not_expired_after_cutoff = false ) { - $expiry_status = static::get_paid_plan_expiration_status(); - $expiry_date = static::get_paid_plan_expiration_date(); - $expiry_cutoff = strtotime( $expiry_date . ' ' . self::EXPIRATION_CUTOFF_TIME ); - - return $not_expired_after_cutoff - ? $expiry_status === Products::STATUS_EXPIRED && strtotime( 'now' ) < $expiry_cutoff - : $expiry_status === Products::STATUS_EXPIRED; - } - - /** - * Checks if the paid plan is expiring soon or not. - * - * @return bool - */ - public static function is_paid_plan_expiring() { - $expiry_status = static::get_paid_plan_expiration_status(); - - return $expiry_status === Products::STATUS_EXPIRING_SOON; - } - - /** - * Gets the url to manage the paid plan's purchased subscription (for plan renewal, canceling, removal, etc). - * - * @return string|null The url to the purchase management page. - */ - public static function get_manage_paid_plan_purchase_url() { - $purchase = static::get_paid_plan_purchase_for_product(); - $site_suffix = ( new Status() )->get_site_suffix(); - - if ( $purchase && $site_suffix ) { - return 'https://wordpress.com/me/purchases/' . $site_suffix . '/' . $purchase->ID; - } - - return null; - } - - /** - * Gets the url to renew the paid plan's purchased subscription. - * - * @return string|null The url to the checkout renewal page. - */ - public static function get_renew_paid_plan_purchase_url() { - $purchase = static::get_paid_plan_purchase_for_product(); - $site_suffix = ( new Status() )->get_site_suffix(); - - if ( $purchase && $site_suffix ) { - return 'https://wordpress.com/checkout/' . $purchase->product_slug . '/renew/' . $purchase->ID . '/' . $site_suffix; - } - - return null; - } - - /** - * Checks whether the product supports trial or not - * - * Returns true if it supports. Return false otherwise. - * - * Free products will always return false. - * - * @return boolean - */ - public static function has_trial_support() { - return false; - } - - /** - * Checks whether the product can be upgraded to a different product. - * - * @return boolean - */ - public static function is_upgradable() { - return ! static::has_paid_plan_for_product() && ! static::is_bundle_product(); - } - - /** - * Checks whether product is a bundle. - * - * @return boolean True if product is a bundle. Otherwise, False. - */ - public static function is_bundle_product() { - return false; - } - - /** - * Check whether the product is upgradable - * by a product bundle. - * - * @return boolean|array Bundles list or False if not upgradable by a bundle. - */ - public static function is_upgradable_by_bundle() { - return false; - } - - /** - * In case it's a bundle product, - * return all the products it contains. - * Empty array by default. - * - * @return array Product slugs - */ - public static function get_supported_products() { - return array(); - } - - /** - * Determine if the product is owned or not - * An owned product is defined as a product that is any of the following - * - Active - * - Has historically been active - * - The user has a plan that includes the product - * - The user has the standalone plugin for the product installed - * - * @return boolean - */ - public static function is_owned() { - $historically_active_modules = Jetpack_Options::get_option( 'historically_active_modules', array() ); - $standalone_info = static::get_standalone_info(); - if ( ( static::is_active() && Jetpack_Options::get_option( 'id' ) ) || - $standalone_info['is_standalone_installed'] || - in_array( static::$slug, $historically_active_modules, true ) || - static::has_any_plan_for_product() - ) { - return true; - } - - return false; - } - - /** - * Undocumented function - * - * @return string - */ - public static function get_status() { - if ( ! static::is_plugin_installed() ) { - $status = Products::STATUS_PLUGIN_ABSENT; - if ( static::has_paid_plan_for_product() ) { - $status = Products::STATUS_PLUGIN_ABSENT_WITH_PLAN; - } - } elseif ( static::is_active() ) { - $status = Products::STATUS_ACTIVE; - // We only consider missing site & user connection an error when the Product is active. - if ( static::$requires_site_connection && ! ( new Connection_Manager() )->is_connected() ) { - // Site has never been connected before - if ( ! Jetpack_Options::get_option( 'id' ) && ! static::is_owned() ) { - $status = Products::STATUS_NEEDS_FIRST_SITE_CONNECTION; - } else { - $status = Products::STATUS_SITE_CONNECTION_ERROR; - } - } elseif ( static::$requires_user_connection && ! ( new Connection_Manager() )->has_connected_owner() ) { - $status = Products::STATUS_USER_CONNECTION_ERROR; - } elseif ( static::has_paid_plan_for_product() ) { - $needs_attention = static::does_module_need_attention(); - if ( ! empty( $needs_attention ) && is_array( $needs_attention ) ) { - $status = Products::STATUS_NEEDS_ATTENTION__WARNING; - if ( isset( $needs_attention['type'] ) && 'error' === $needs_attention['type'] ) { - $status = Products::STATUS_NEEDS_ATTENTION__ERROR; - } - } - if ( static::is_paid_plan_expired() ) { - $status = Products::STATUS_EXPIRED; - } elseif ( static::is_paid_plan_expiring() ) { - $status = Products::STATUS_EXPIRING_SOON; - } - } elseif ( static::is_upgradable() ) { - $status = Products::STATUS_CAN_UPGRADE; - } - // Check specifically for inactive modules, which will prevent a product from being active - } elseif ( static::$module_name && ! static::is_module_active() ) { - $status = Products::STATUS_MODULE_DISABLED; - // If there is not a plan associated with the disabled module, encourage a plan first - // Getting a plan set up should help resolve any connection issues - // However if the standalone plugin for this product is active, then we will defer to showing errors that prevent the module from being active - // This is because if a standalone plugin is installed, we expect the product to not show as "inactive" on My Jetpack - if ( static::$requires_plan || ( ! static::has_any_plan_for_product() && static::$has_standalone_plugin && ! self::is_plugin_active() ) ) { - $status = static::is_owned() && static::$has_free_offering && ! static::$requires_plan ? Products::STATUS_NEEDS_ACTIVATION : Products::STATUS_NEEDS_PLAN; - } elseif ( static::$requires_site_connection && ! ( new Connection_Manager() )->is_connected() ) { - // Site has never been connected before and product is not owned - if ( ! Jetpack_Options::get_option( 'id' ) && ! static::is_owned() ) { - $status = Products::STATUS_NEEDS_FIRST_SITE_CONNECTION; - } else { - $status = Products::STATUS_SITE_CONNECTION_ERROR; - } - } elseif ( static::$requires_user_connection && ! ( new Connection_Manager() )->has_connected_owner() ) { - $status = Products::STATUS_USER_CONNECTION_ERROR; - } - } elseif ( ! static::has_any_plan_for_product() ) { - $status = static::is_owned() && static::$has_free_offering && ! static::$requires_plan ? Products::STATUS_NEEDS_ACTIVATION : Products::STATUS_NEEDS_PLAN; - } else { - $status = Products::STATUS_INACTIVE; - } - return $status; - } - - /** - * Checks whether the Product is active - * - * @return boolean - */ - public static function is_active() { - return static::is_plugin_active() && ( static::has_any_plan_for_product() || ( ! static::$requires_plan && static::$has_free_offering ) ); - } - - /** - * Checks whether the plugin is installed - * - * @return boolean - */ - public static function is_plugin_installed() { - return (bool) static::get_installed_plugin_filename(); - } - - /** - * Checks whether the plugin is active - * - * @return boolean - */ - public static function is_plugin_active() { - return Plugins_Installer::is_plugin_active( static::get_installed_plugin_filename() ); - } - - /** - * Checks whether the Jetpack plugin is installed - * - * @return boolean - */ - public static function is_jetpack_plugin_installed() { - return (bool) static::get_installed_plugin_filename( 'jetpack' ); - } - - /** - * Checks whether the Jetpack plugin is active - * - * @return boolean - */ - public static function is_jetpack_plugin_active() { - return Plugins_Installer::is_plugin_active( static::get_installed_plugin_filename( 'jetpack' ) ); - } - - /** - * Checks whether the Jetpack module is active only if a module_name is defined - * - * @return bool - */ - public static function is_module_active() { - if ( static::$module_name ) { - return ( new Modules() )->is_active( static::$module_name ); - } - return true; - } - - /** - * Activates the plugin - * - * @return null|WP_Error Null on success, WP_Error on invalid file. - */ - public static function activate_plugin() { - return activate_plugin( static::get_installed_plugin_filename() ); - } - - /** - * Perform the top level activation routines, which is installing and activating the required plugin - * - * @return bool|WP_Error - */ - private static function do_activation() { - if ( static::is_active() ) { - return true; - } - - // Default to installing the standalone plugin for the product - if ( ! self::is_plugin_installed() ) { - $installed = Plugins_Installer::install_plugin( static::get_plugin_slug() ); - if ( is_wp_error( $installed ) ) { - return $installed; - } - } - - if ( ! current_user_can( 'activate_plugins' ) ) { - return new WP_Error( 'not_allowed', __( 'You are not allowed to activate plugins on this site.', 'jetpack-my-jetpack' ) ); - } - - $result = static::activate_plugin(); - if ( is_wp_error( $result ) ) { - return $result; - } - - return true; - } - - /** - * Activates the product by installing and activating its plugin - * - * @return boolean|WP_Error - */ - final public static function activate() { - - $result = self::do_activation(); - - $result = static::do_product_specific_activation( $result ); - - $product_slug = static::$slug; - - /** - * Fires after My Jetpack activates a product and filters the result - * Use this filter to run additional routines for a product activation on stand-alone plugins - * - * @param bool|WP_Error $result The result of the previous steps of activation. - */ - $result = apply_filters( "my_jetpack_{$product_slug}_activation", $result ); - - return $result; - } - - /** - * Override this method to perform product specific activation routines. - * - * @param bool|WP_Error $current_result Is the result of the top level activation actions. You probably won't do anything if it is an WP_Error. - * @return bool|WP_Error - */ - public static function do_product_specific_activation( $current_result ) { - return $current_result; - } - - /** - * Deactivate the product - * - * @return boolean - */ - public static function deactivate() { - deactivate_plugins( static::get_installed_plugin_filename() ); - return true; - } - - /** - * Returns filtered Jetpack plugin actions links. - * - * @param array $actions - Jetpack plugin action links. - * @return array Filtered Jetpack plugin actions links. - */ - public static function get_plugin_actions_links( $actions ) { - // My Jetpack action link. - $my_jetpack_home_link = array( - 'jetpack-home' => sprintf( - '%2$s', - admin_url( 'admin.php?page=my-jetpack' ), - __( 'My Jetpack', 'jetpack-my-jetpack' ), - __( 'My Jetpack dashboard', 'jetpack-my-jetpack' ) - ), - ); - - // Otherwise, add it to the beginning of the array. - return array_merge( $my_jetpack_home_link, $actions ); - } - - /** - * Filter the action links for the plugins specified. - * - * @param string|string[] $filenames The plugin filename(s) to filter the action links for. - */ - private static function filter_action_links( $filenames ) { - foreach ( $filenames as $filename ) { - $hook = 'plugin_action_links_' . $filename; - $callback = array( static::class, 'get_plugin_actions_links' ); - if ( ! has_filter( $hook, $callback ) ) { - add_filter( $hook, $callback, 20, 2 ); - } - } - } - - /** - * Extend the plugin action links. - */ - public static function extend_plugin_action_links() { - $filenames = static::get_plugin_filename(); - if ( ! is_array( $filenames ) ) { - $filenames = array( $filenames ); - } - - self::filter_action_links( $filenames ); - } - - /** - * Extend the Jetpack plugin action links. - */ - public static function extend_core_plugin_action_links() { - $filenames = self::JETPACK_PLUGIN_FILENAME; - - self::filter_action_links( $filenames ); - } - - /** - * Install and activate the standalone plugin in the case it's missing. - * - * @return boolean|WP_Error - */ - public static function install_and_activate_standalone() { - /** - * Check for the presence of the standalone plugin, ignoring Jetpack presence. - * - * If the standalone plugin is not installed and the user can install plugins, proceed with the installation. - */ - if ( ! static::is_plugin_installed() ) { - /** - * Check for permissions - */ - if ( ! current_user_can( 'install_plugins' ) ) { - return new WP_Error( 'not_allowed', __( 'You are not allowed to install plugins on this site.', 'jetpack-my-jetpack' ) ); - } - - /** - * Install the plugin - */ - $installed = Plugins_Installer::install_plugin( static::get_plugin_slug() ); - if ( is_wp_error( $installed ) ) { - return $installed; - } - } - - /** - * Activate the installed plugin - */ - $result = static::activate_plugin(); - - if ( is_wp_error( $result ) ) { - return $result; - } - - return true; - } - - /** - * Determines whether the module/plugin/product needs the users attention. - * Typically due to some sort of error where user troubleshooting is needed. - * - * @return boolean - */ - public static function does_module_need_attention() { - return false; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-protect.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-protect.php deleted file mode 100644 index e34b115f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-protect.php +++ /dev/null @@ -1,443 +0,0 @@ - \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::get_site_protect_data', - 'permission_callback' => __CLASS__ . '::permissions_callback', - ) - ); - } - - /** - * Checks if the user has the correct permissions - */ - public static function permissions_callback() { - return current_user_can( 'edit_posts' ); - } - - /** - * Get the product name - * - * @return string - */ - public static function get_name() { - return 'Protect'; - } - - /** - * Get the product title - * - * @return string - */ - public static function get_title() { - return 'Jetpack Protect'; - } - - /** - * Get the internationalized product description - * - * @return string - */ - public static function get_description() { - return __( 'Guard against malware and bad actors 24/7', 'jetpack-my-jetpack' ); - } - - /** - * Get the internationalized product long description - * - * @return string - */ - public static function get_long_description() { - return __( 'Protect your site from bad actors and malware 24/7. Clean up security vulnerabilities with one click.', 'jetpack-my-jetpack' ); - } - - /** - * Get the internationalized features list - * - * @return array Protect features list - */ - public static function get_features() { - return array( - __( 'Over 20,000 listed vulnerabilities', 'jetpack-my-jetpack' ), - __( 'Daily automatic scans', 'jetpack-my-jetpack' ), - __( 'Check plugin and theme version status', 'jetpack-my-jetpack' ), - __( 'Easy to navigate and use', 'jetpack-my-jetpack' ), - ); - } - - /** - * Get the product's available tiers - * - * @return string[] Slugs of the available tiers - */ - public static function get_tiers() { - return array( - self::UPGRADED_TIER_SLUG, - self::FREE_TIER_SLUG, - ); - } - - /** - * Get the internationalized comparison of free vs upgraded features - * - * @return array[] Protect features comparison - */ - public static function get_features_by_tier() { - return array( - array( - 'name' => __( 'Scan for threats and vulnerabilities', 'jetpack-my-jetpack' ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( - 'included' => true, - 'description' => __( 'Check items against database', 'jetpack-my-jetpack' ), - ), - self::UPGRADED_TIER_SLUG => array( - 'included' => true, - 'description' => __( 'Line by line malware scanning', 'jetpack-my-jetpack' ), - ), - ), - ), - array( - 'name' => __( 'Daily automated scans', 'jetpack-my-jetpack' ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => true ), - self::UPGRADED_TIER_SLUG => array( - 'included' => true, - 'description' => __( 'Plus on-demand manual scans', 'jetpack-my-jetpack' ), - ), - ), - ), - array( - 'name' => __( 'Web Application Firewall', 'jetpack-my-jetpack' ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( - 'included' => false, - 'description' => __( 'Manual rules only', 'jetpack-my-jetpack' ), - ), - self::UPGRADED_TIER_SLUG => array( - 'included' => true, - 'description' => __( 'Automatic protection and rule updates', 'jetpack-my-jetpack' ), - ), - ), - ), - array( - 'name' => __( 'Brute force protection', 'jetpack-my-jetpack' ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => true ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Access to scan on Cloud', 'jetpack-my-jetpack' ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => false ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'One-click auto fixes', 'jetpack-my-jetpack' ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => false ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Notifications', 'jetpack-my-jetpack' ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => false ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - array( - 'name' => __( 'Severity labels', 'jetpack-my-jetpack' ), - 'tiers' => array( - self::FREE_TIER_SLUG => array( 'included' => false ), - self::UPGRADED_TIER_SLUG => array( 'included' => true ), - ), - ), - ); - } - - /** - * Get the product pricing details - * - * @return array Pricing details - */ - public static function get_pricing_for_ui() { - return array( - 'tiers' => array( - self::FREE_TIER_SLUG => array( - 'available' => true, - 'is_free' => true, - ), - self::UPGRADED_TIER_SLUG => array_merge( - array( - 'available' => true, - 'wpcom_product_slug' => self::UPGRADED_TIER_PRODUCT_SLUG, - ), - Wpcom_Products::get_product_pricing( self::UPGRADED_TIER_PRODUCT_SLUG ) - ), - ), - ); - } - - /** - * Determines whether the module/plugin/product needs the users attention. - * Typically due to some sort of error where user troubleshooting is needed. - * - * @return boolean|array - */ - public static function does_module_need_attention() { - $protect_threat_status = false; - $scan_data = Protect_Status::get_status(); - - // Check if there are scan threats. - $protect_data = $scan_data; - if ( is_wp_error( $protect_data ) ) { - return $protect_threat_status; // false - } - $critical_threat_count = false; - if ( ! empty( $protect_data->threats ) ) { - $critical_threat_count = array_reduce( - $protect_data->threats, - function ( $accum, $threat ) { - return $threat->severity >= 5 ? ++$accum : $accum; - }, - 0 - ); - - $protect_threat_status = array( - 'type' => $critical_threat_count ? 'error' : 'warning', - 'data' => array( - 'threat_count' => count( $protect_data->threats ), - 'critical_threat_count' => $critical_threat_count, - 'fixable_threat_ids' => $protect_data->fixable_threat_ids, - ), - ); - } - - return $protect_threat_status; - } - - /** - * Get the product-slugs of the paid plans for this product. - * (Do not include bundle plans, unless it's a bundle plan itself). - * - * @return array - */ - public static function get_paid_plan_product_slugs() { - return array( - 'jetpack_scan', - 'jetpack_scan_monthly', - 'jetpack_scan_bi_yearly', - ); - } - - /** - * Checks whether the product can be upgraded - i.e. this shows the /#add-protect interstitial - * - * @return boolean - */ - public static function is_upgradable() { - return ! self::has_paid_plan_for_product(); - } - - /** - * Get the URL the user is taken after purchasing the product through the checkout - * - * @return ?string - */ - public static function get_post_checkout_url() { - return self::get_manage_url(); - } - - /** - * Get the URL the user is taken after purchasing the product through the checkout for each product feature - * - * @return ?array - */ - public static function get_post_checkout_urls_by_feature() { - return array( - self::SCAN_FEATURE_SLUG => self::get_post_checkout_url(), - self::FIREWALL_FEATURE_SLUG => admin_url( 'admin.php?page=jetpack-protect#/firewall' ), - ); - } - - /** - * Get the URL where the user manages the product - * - * @return ?string - */ - public static function get_manage_url() { - // check standalone first - if ( static::is_standalone_plugin_active() ) { - return admin_url( 'admin.php?page=jetpack-protect' ); - // otherwise, check for the main Jetpack plugin - } elseif ( static::is_jetpack_plugin_active() ) { - return Redirect::get_url( 'my-jetpack-manage-scan' ); - } - } - - /** - * Get the URL where the user manages the product for each product feature - * - * @return ?array - */ - public static function get_manage_urls_by_feature() { - return array( - self::SCAN_FEATURE_SLUG => self::get_manage_url(), - self::FIREWALL_FEATURE_SLUG => admin_url( 'admin.php?page=jetpack-protect#/firewall' ), - ); - } - - /** - * Return product bundles list - * that supports the product. - * - * @return array Products bundle list. - */ - public static function is_upgradable_by_bundle() { - return array( 'security', 'complete' ); - } - - /** - * Return site Jetpack Protect data for the REST API. - * - * @return WP_Rest_Response|WP_Error - */ - public static function get_site_protect_data() { - $scan_data = Protect_Status::get_status(); - - $waf_config = array(); - $waf_supported = false; - $is_waf_enabled = false; - - if ( class_exists( 'Automattic\Jetpack\Waf\Waf_Runner' ) ) { - // @phan-suppress-next-line PhanUndeclaredClassMethod - $waf_config = Waf_Runner::get_config(); - // @phan-suppress-next-line PhanUndeclaredClassMethod - $is_waf_enabled = Waf_Runner::is_enabled(); - // @phan-suppress-next-line PhanUndeclaredClassMethod - $waf_supported = Waf_Runner::is_supported_environment(); - } - - return rest_ensure_response( - array( - 'scanData' => $scan_data, - 'wafConfig' => array_merge( - $waf_config, - array( - 'waf_supported' => $waf_supported, - 'waf_enabled' => $is_waf_enabled, - ), - array( 'blocked_logins' => (int) get_site_option( 'jetpack_protect_blocked_attempts', 0 ) ) - ), - ) - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-related-posts.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-related-posts.php deleted file mode 100644 index 2f1818bf..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-related-posts.php +++ /dev/null @@ -1,186 +0,0 @@ - true, - 'is_free' => true, - ); - } - - /** - * Checks whether the Product is active. - * - * @return boolean - */ - public static function is_active() { - return static::is_jetpack_plugin_active(); - } - - /** - * Checks whether the plugin is installed - * - * @return boolean - */ - public static function is_plugin_installed() { - return static::is_jetpack_plugin_installed(); - } - - /** - * Get the URL where the user manages the product - * - * @return ?string - */ - public static function get_manage_url() { - return admin_url( 'admin.php?page=jetpack#/traffic?term=related%20posts' ); - } - - /** - * Activates the Jetpack plugin - * - * @return null|WP_Error Null on success, WP_Error on invalid file. - */ - public static function activate_plugin(): ?WP_Error { - $plugin_filename = static::get_installed_plugin_filename( self::JETPACK_PLUGIN_SLUG ); - - if ( $plugin_filename ) { - return activate_plugin( $plugin_filename ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-scan.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-scan.php deleted file mode 100644 index 723efa6b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-scan.php +++ /dev/null @@ -1,217 +0,0 @@ - true, - 'wpcom_product_slug' => static::get_wpcom_product_slug(), - ), - Wpcom_Products::get_product_pricing( static::get_wpcom_product_slug() ) - ); - } - - /** - * Get the WPCOM product slug used to make the purchase - * - * @return ?string - */ - public static function get_wpcom_product_slug() { - return 'jetpack_scan'; - } - - /** - * Checks whether the Product is active - * - * Scan is not actually a module. Activation takes place on WPCOM. So lets consider it active if jetpack is active and has the plan. - * - * @return boolean - */ - public static function is_active() { - return static::is_jetpack_plugin_active(); - } - - /** - * Activates the product by installing and activating its plugin - * - * @param bool|WP_Error $current_result Is the result of the top level activation actions. You probably won't do anything if it is an WP_Error. - * @return boolean|\WP_Error - */ - public static function do_product_specific_activation( $current_result ) { - - $product_activation = parent::do_product_specific_activation( $current_result ); - - if ( is_wp_error( $product_activation ) && 'module_activation_failed' === $product_activation->get_error_code() ) { - // Scan is not a module. There's nothing in the plugin to be activated, so it's ok to fail to activate the module. - $product_activation = true; - } - - return $product_activation; - } - - /** - * Checks whether the Jetpack module is active - * - * Scan is not a module. Nothing needs to be active. Let's always consider it active. - * - * @return bool - */ - public static function is_module_active() { - return true; - } - - /** - * Get the product-slugs of the paid plans for this product. - * (Do not include bundle plans, unless it's a bundle plan itself). - * - * @return array - */ - public static function get_paid_plan_product_slugs() { - return array( - 'jetpack_scan', - 'jetpack_scan_monthly', - 'jetpack_scan_bi_yearly', - ); - } - - /** - * Return product bundles list - * that supports the product. - * - * @return boolean|array Products bundle list. - */ - public static function is_upgradable_by_bundle() { - return array( 'security', 'complete' ); - } - - /** - * Get the URL the user is taken after activating the product - * - * @return ?string - */ - public static function get_post_activation_url() { - return ''; // stay in My Jetpack page. - } - - /** - * Get the URL where the user manages the product - * - * @return ?string - */ - public static function get_manage_url() { - return Redirect::get_url( 'my-jetpack-manage-scan' ); - } - - /** - * Get the URL where the user should be redirected after checkout - */ - public static function get_post_checkout_url() { - if ( static::is_jetpack_plugin_active() ) { - return 'admin.php?page=jetpack#/recommendations'; - } - - // If Jetpack is not active, it means that the user has another standalone plugin active - // and it follows the `Protect` plugin flow instead of `Scan` so for now it would be safe - // to return null and let the user go back to the My Jetpack page. - return null; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search-stats.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search-stats.php deleted file mode 100644 index a6ea5436..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search-stats.php +++ /dev/null @@ -1,192 +0,0 @@ - true, - 'exclude_from_search' => false, - ) - ); - $indexable_status_array = get_post_stati( - array( - 'public' => true, - 'exclude_from_search' => false, - ) - ); - $raw_posts_counts = static::get_raw_post_type_breakdown(); - if ( ! $raw_posts_counts || is_wp_error( $raw_posts_counts ) ) { - return array(); - } - $posts_counts = static::get_post_type_breakdown_with( $raw_posts_counts, $indexable_post_types, $indexable_status_array ); - - return $posts_counts; - } - - /** - * Calculate breakdown of post types with passed in indexable post types and statuses. - * The function is going to be used from WPCOM as well for consistency. - * - * @param array $raw_posts_counts Array of post types with counts as value. - * @param array $indexable_post_types Array of indexable post types. - * @param array $indexable_status_array Array of indexable post statuses. - */ - public static function get_post_type_breakdown_with( $raw_posts_counts, $indexable_post_types, $indexable_status_array ) { - $posts_counts = array(); - foreach ( $raw_posts_counts as $row ) { - // ignore if status is not public. - if ( ! in_array( $row['post_status'], $indexable_status_array, true ) ) { - continue; - } - // ignore if post type is in excluded post types. - if ( in_array( $row['post_type'], self::EXCLUDED_POST_TYPES, true ) ) { - continue; - } - // ignore if post type is not public and is not explicitly included. - if ( ! in_array( $row['post_type'], $indexable_post_types, true ) && - ! in_array( $row['post_type'], self::DO_NOT_EXCLUDE_POST_TYPES, true ) - ) { - continue; - } - // add up post type counts of potentially multiple post_status. - if ( ! isset( $posts_counts[ $row['post_type'] ] ) ) { - $posts_counts[ $row['post_type'] ] = 0; - } - $posts_counts[ $row['post_type'] ] += intval( $row['num_posts'] ); - } - - arsort( $posts_counts, SORT_NUMERIC ); - return $posts_counts; - } - - /** - * Get raw post type breakdown from the database or a remote request if posts count is high. - */ - protected static function get_raw_post_type_breakdown() { - global $wpdb; - - $results = wp_cache_get( self::POST_TYPE_BREAKDOWN_CACHE_KEY, self::CACHE_GROUP ); - if ( false !== $results ) { - return $results; - } - - $total_posts_count = wp_cache_get( self::TOTAL_POSTS_COUNT_CACHE_KEY, self::CACHE_GROUP ); - if ( false === $total_posts_count ) { - // phpcs:ignore WordPress.DB.DirectDatabaseQuery */ - $total_posts_counts = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->posts}" ); - wp_cache_set( self::TOTAL_POSTS_COUNT_CACHE_KEY, $total_posts_counts, self::CACHE_GROUP, self::CACHE_EXPIRY ); - } - - // Get post type breakdown from a remote request if the post count is high - if ( $total_posts_count > self::POST_COUNT_QUERY_LIMIT ) { - $search_stats = new Search_Stats(); - $search_stats->queue_post_count_query_from_wpcom(); - $wpcom_stats = json_decode( wp_remote_retrieve_body( $search_stats->get_stats_from_wpcom() ), true ); - if ( ! empty( $wpcom_stats['raw_post_type_breakdown'] ) ) { - $results = $wpcom_stats['raw_post_type_breakdown']; - wp_cache_set( self::POST_TYPE_BREAKDOWN_CACHE_KEY, $results, self::CACHE_GROUP, self::CACHE_EXPIRY ); - return $results; - } else { - return array(); - } - } - - $query = "SELECT post_type, post_status, COUNT( * ) AS num_posts - FROM {$wpdb->posts} - WHERE post_password = '' - GROUP BY post_type, post_status"; - - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery - $results = $wpdb->get_results( $query, ARRAY_A ); - wp_cache_set( self::POST_TYPE_BREAKDOWN_CACHE_KEY, $results, self::CACHE_GROUP, self::CACHE_EXPIRY ); - return $results; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search.php deleted file mode 100644 index 105c0491..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search.php +++ /dev/null @@ -1,374 +0,0 @@ - true, - 'trial_available' => static::has_trial_support(), - 'wpcom_product_slug' => static::get_wpcom_product_slug(), - 'wpcom_free_product_slug' => static::get_wpcom_free_product_slug(), - ), - Wpcom_Products::get_product_pricing( static::get_wpcom_product_slug() ) - ); - - $record_count = intval( Search_Stats::estimate_count() ); - $search_pricing = static::get_pricing_from_wpcom( $record_count ); - - if ( is_wp_error( $search_pricing ) ) { - return $pricing; - } - - $pricing['estimated_record_count'] = $record_count; - - return array_merge( $pricing, $search_pricing ); - } - - /** - * Get the URL the user is taken after purchasing the product through the checkout - * - * @return ?string - */ - public static function get_post_checkout_url() { - return self::get_manage_url(); - } - - /** - * Get the WPCOM product slug used to make the purchase - * - * @return ?string - */ - public static function get_wpcom_product_slug() { - return 'jetpack_search'; - } - - /** - * Get the WPCOM free product slug - * - * @return ?string - */ - public static function get_wpcom_free_product_slug() { - return 'jetpack_search_free'; - } - - /** - * Returns true if the new_pricing_202208 is set to not empty in URL for testing purpose, or it's active. - */ - public static function is_new_pricing_202208() { - // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash - if ( isset( $_GET['new_pricing_202208'] ) && $_GET['new_pricing_202208'] ) { - return true; - } - - $record_count = intval( Search_Stats::estimate_count() ); - $search_pricing = static::get_pricing_from_wpcom( $record_count ); - if ( is_wp_error( $search_pricing ) ) { - return false; - } - - return '202208' === $search_pricing['pricing_version']; - } - - /** - * Override status to `needs_activation` when status is `needs_plan`. - */ - public static function get_status() { - $status = parent::get_status(); - return $status; - } - - /** - * Use centralized Search pricing API. - * - * The function is also used by the search package, as a result it could be called before site connection - i.e. blog token might not be available. - * - * @param int $record_count Record count to estimate pricing. - * - * @return array|WP_Error - */ - public static function get_pricing_from_wpcom( $record_count ) { - static $pricings = array(); - $connection = new Connection_Manager(); - $blog_id = \Jetpack_Options::get_option( 'id' ); - - if ( isset( $pricings[ $record_count ] ) ) { - return $pricings[ $record_count ]; - } - - // If the site is connected, request pricing with the blog token - if ( $blog_id ) { - $endpoint = sprintf( '/jetpack-search/pricing?record_count=%1$d&locale=%2$s', $record_count, get_user_locale() ); - - // If available in the user data, set the user's currency as one of the params - if ( $connection->is_user_connected() ) { - $user_details = $connection->get_connected_user_data(); - if ( ! empty( $user_details['user_currency'] ) && $user_details['user_currency'] !== 'USD' ) { - $endpoint .= sprintf( '¤cy=%s', $user_details['user_currency'] ); - } - } - - $response = Client::wpcom_json_api_request_as_blog( - $endpoint, - '2', - array( 'timeout' => 5 ), - null, - 'wpcom' - ); - } else { - $response = wp_remote_get( - sprintf( Constants::get_constant( 'JETPACK__WPCOM_JSON_API_BASE' ) . '/wpcom/v2/jetpack-search/pricing?record_count=%1$d&locale=%2$s', $record_count, get_user_locale() ), - array( 'timeout' => 5 ) - ); - } - - if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) { - return new WP_Error( 'search_pricing_fetch_failed' ); - } - - $body = wp_remote_retrieve_body( $response ); - $pricings[ $record_count ] = json_decode( $body, true ); - return $pricings[ $record_count ]; - } - - /** - * Checks whether the product supports trial or not - * - * Returns true if it supports. Return false otherwise. - * - * Free products will always return false. - * - * @return boolean - */ - public static function has_trial_support() { - return static::is_new_pricing_202208(); - } - - /** - * Get the product-slugs of the paid plans for this product (not including bundles) - * - * @return array - */ - public static function get_paid_plan_product_slugs() { - return array( - 'jetpack_search', - 'jetpack_search_monthly', - 'jetpack_search_bi_yearly', - ); - } - - /** - * Checks if the site purchases contain a free search plan - * - * @return bool - */ - public static function has_free_plan_for_product() { - $purchases_data = Wpcom_Products::get_site_current_purchases(); - if ( is_wp_error( $purchases_data ) ) { - return false; - } - if ( is_array( $purchases_data ) && ! empty( $purchases_data ) ) { - foreach ( $purchases_data as $purchase ) { - if ( str_contains( $purchase->product_slug, 'jetpack_search_free' ) ) { - return true; - } - } - } - return false; - } - - /** - * Activates the product. Try to enable instant search after the Search module was enabled. - * - * @param bool|WP_Error $product_activation Is the result of the top level activation actions. You probably won't do anything if it is an WP_Error. - * @return bool|WP_Error - */ - public static function do_product_specific_activation( $product_activation ) { - $product_activation = parent::do_product_specific_activation( $product_activation ); - if ( is_wp_error( $product_activation ) ) { - return $product_activation; - } - - if ( class_exists( 'Automattic\Jetpack\Search\Module_Control' ) ) { - ( new Search_Module_Control() )->enable_instant_search(); - } - - // we don't want to change the success of the activation if we fail to activate instant search. That's not mandatory. - return $product_activation; - } - - /** - * Get the URL the user is taken after activating the product - * - * @return ?string - */ - public static function get_post_activation_url() { - return ''; // stay in My Jetpack page or continue the purchase flow if needed. - } - - /** - * Get the URL where the user manages the product - * - * @return ?string - */ - public static function get_manage_url() { - return admin_url( 'admin.php?page=jetpack-search' ); - } - - /** - * Return product bundles list - * that supports the product. - * - * @return boolean|array Products bundle list. - */ - public static function is_upgradable_by_bundle() { - return array( 'complete' ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-security.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-security.php deleted file mode 100644 index d226f64a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-security.php +++ /dev/null @@ -1,229 +0,0 @@ - true, - 'wpcom_product_slug' => $product_slug, - ), - Wpcom_Products::get_product_pricing( $product_slug ) - ); - } - - /** - * Get the WPCOM product slug used to make the purchase - * - * @return ?string - */ - public static function get_wpcom_product_slug() { - return 'jetpack_security_t1_yearly'; - } - - /** - * Checks whether the Jetpack module is active - * - * This is a bundle and not a product. We should not use this information for anything - * - * @return bool - */ - public static function is_module_active() { - return false; - } - - /** - * Activates the product by installing and activating its plugin - * - * @param bool|WP_Error $current_result Is the result of the top level activation actions. You probably won't do anything if it is an WP_Error. - * @return boolean|\WP_Error - */ - public static function do_product_specific_activation( $current_result ) { - - $product_activation = parent::do_product_specific_activation( $current_result ); - - if ( is_wp_error( $product_activation ) && 'module_activation_failed' === $product_activation->get_error_code() ) { - // A bundle is not a module. There's nothing in the plugin to be activated, so it's ok to fail to activate the module. - $product_activation = true; - } - - // At this point, Jetpack plugin is installed. Let's activate each individual product. - $activation = Anti_Spam::activate(); - if ( is_wp_error( $activation ) ) { - return $activation; - } - - $activation = Backup::activate(); - if ( is_wp_error( $activation ) ) { - return $activation; - } - - $activation = Scan::activate(); - if ( is_wp_error( $activation ) ) { - return $activation; - } - - return $activation; - } - - /** - * Checks whether the Product is active - * - * Security is a bundle and not a module. Activation takes place on WPCOM. So lets consider it active if jetpack is active and has the plan. - * - * @return boolean - */ - public static function is_active() { - return static::is_jetpack_plugin_active() && static::has_required_plan(); - } - - /** - * Get the product-slugs of the paid plans for this product. - * (Do not include bundle plans, unless it's a bundle plan itself). - * - * @return array - */ - public static function get_paid_plan_product_slugs() { - return array( - 'jetpack_security_t1_yearly', - 'jetpack_security_t1_monthly', - 'jetpack_security_t1_bi_yearly', - 'jetpack_security_t2_yearly', - 'jetpack_security_t2_monthly', - ); - } - - /** - * Checks whether the current plan (or purchases) of the site already supports the product - * - * @return boolean - */ - public static function has_required_plan() { - $purchases_data = Wpcom_Products::get_site_current_purchases(); - if ( is_wp_error( $purchases_data ) ) { - return false; - } - if ( is_array( $purchases_data ) && ! empty( $purchases_data ) ) { - foreach ( $purchases_data as $purchase ) { - if ( - str_starts_with( $purchase->product_slug, 'jetpack_security' ) || - str_starts_with( $purchase->product_slug, 'jetpack_complete' ) - ) { - return true; - } - } - } - return false; - } - - /** - * Checks whether product is a bundle. - * - * @return boolean True - */ - public static function is_bundle_product() { - return true; - } - - /** - * Return all the products it contains. - * - * @return array Product slugs - */ - public static function get_supported_products() { - return array( 'backup', 'scan', 'anti-spam' ); - } - - /** - * Get the URL where the user manages the product - * - * @return ?string - */ - public static function get_manage_url() { - return ''; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-site-accelerator.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-site-accelerator.php deleted file mode 100644 index 9e711a7f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-site-accelerator.php +++ /dev/null @@ -1,186 +0,0 @@ - true, - 'is_free' => true, - ); - } - - /** - * Checks whether the Product is active. - * - * @return boolean - */ - public static function is_active() { - return static::is_jetpack_plugin_active(); - } - - /** - * Checks whether the plugin is installed - * - * @return boolean - */ - public static function is_plugin_installed() { - return static::is_jetpack_plugin_installed(); - } - - /** - * Get the URL where the user manages the product - * - * @return ?string - */ - public static function get_manage_url() { - return admin_url( 'admin.php?page=jetpack#/settings?term=site%20accelerator' ); - } - - /** - * Activates the Jetpack plugin - * - * @return null|WP_Error Null on success, WP_Error on invalid file. - */ - public static function activate_plugin(): ?WP_Error { - $plugin_filename = static::get_installed_plugin_filename( self::JETPACK_PLUGIN_SLUG ); - - if ( $plugin_filename ) { - return activate_plugin( $plugin_filename ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-social.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-social.php deleted file mode 100644 index d8157500..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-social.php +++ /dev/null @@ -1,235 +0,0 @@ - true, - 'wpcom_product_slug' => static::get_wpcom_product_slug(), - ), - Wpcom_Products::get_product_pricing( static::get_wpcom_product_slug() ) - ); - } - - /** - * Get the URL the user is taken after purchasing the product through the checkout - * - * @return ?string - */ - public static function get_post_checkout_url() { - return self::get_manage_url(); - } - - /** - * Get the WPCOM product slug used to make the purchase - * - * @return string - */ - public static function get_wpcom_product_slug() { - return 'jetpack_social_v1_yearly'; - } - - /** - * Gets the 'status' of the Social product - * - * @return string - */ - public static function get_status() { - $status = parent::get_status(); - if ( Products::STATUS_NEEDS_PLAN === $status ) { - // If the status says that the site needs a plan, - // My Jetpack shows "Learn more" CTA, - // We want to instead show the "Activate" CTA. - $status = Products::STATUS_NEEDS_ACTIVATION; - } - return $status; - } - - /** - * Get the product-slugs of the paid plans for this product (not including bundles) - * - * @return array - */ - public static function get_paid_plan_product_slugs() { - return array( - 'jetpack_social_v1_yearly', - 'jetpack_social_v1_monthly', - 'jetpack_social_v1_bi_yearly', - 'jetpack_social_basic_yearly', - 'jetpack_social_monthly', - 'jetpack_social_basic_monthly', - 'jetpack_social_basic_bi_yearly', - 'jetpack_social_advanced_yearly', - 'jetpack_social_advanced_monthly', - 'jetpack_social_advanced_bi_yearly', - ); - } - - /** - * Checks whether the current plan (or purchases) of the site already supports the product - * - * @return boolean - */ - public static function has_paid_plan_for_product() { - if ( parent::has_paid_plan_for_product() ) { - return true; - } - - // For atomic sites, do a feature check to see if the republicize feature is available - // This feature is available by default on all Jetpack sites - if ( ( new Host() )->is_woa_site() && static::does_site_have_feature( 'republicize' ) ) { - return true; - } - - return false; - } - - /** - * Get the URL where the user manages the product. - * - * @return string - */ - public static function get_manage_url() { - return admin_url( 'admin.php?page=jetpack-social' ); - } - - /** - * Return product bundles list - * that supports the product. - * - * @return boolean|array Products bundle list. - */ - public static function is_upgradable_by_bundle() { - return array( 'growth', 'complete' ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-starter.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-starter.php deleted file mode 100644 index be9852c9..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-starter.php +++ /dev/null @@ -1,216 +0,0 @@ - true, - 'wpcom_product_slug' => static::get_wpcom_product_slug(), - ), - Wpcom_Products::get_product_pricing( static::get_wpcom_product_slug() ) - ); - } - - /** - * Get the WPCOM product slug used to make the purchase - * - * @return ?string - */ - public static function get_wpcom_product_slug() { - return 'jetpack_starter_yearly'; - } - - /** - * Checks whether the Jetpack module is active - * - * This is a bundle and not a product. We should not use this information for anything - * - * @return bool - */ - public static function is_module_active() { - return false; - } - - /** - * Activates the product by installing and activating its plugin - * - * @param bool|WP_Error $current_result Is the result of the top level activation actions. You probably won't do anything if it is an WP_Error. - * @return boolean|\WP_Error - */ - public static function do_product_specific_activation( $current_result ) { - - $product_activation = parent::do_product_specific_activation( $current_result ); - - if ( is_wp_error( $product_activation ) && 'module_activation_failed' === $product_activation->get_error_code() ) { - // A bundle is not a module. There's nothing in the plugin to be activated, so it's ok to fail to activate the module. - $product_activation = true; - } - - // At this point, Jetpack plugin is installed. Let's activate each individual product. - $activation = Anti_Spam::activate(); - if ( is_wp_error( $activation ) ) { - return $activation; - } - - $activation = Backup::activate(); - if ( is_wp_error( $activation ) ) { - return $activation; - } - - return $activation; - } - - /** - * Checks whether the Product is active - * - * Jetpack Starter is a bundle and not a module. Activation takes place on WPCOM. So lets consider it active if jetpack is active and has the plan. - * - * @return boolean - */ - public static function is_active() { - return static::is_jetpack_plugin_active() && static::has_required_plan(); - } - - /** - * Checks whether the current plan (or purchases) of the site already supports the product - * - * @return boolean - */ - public static function has_required_plan() { - $purchases_data = Wpcom_Products::get_site_current_purchases(); - if ( is_wp_error( $purchases_data ) ) { - return false; - } - if ( is_array( $purchases_data ) && ! empty( $purchases_data ) ) { - foreach ( $purchases_data as $purchase ) { - if ( str_starts_with( $purchase->product_slug, 'jetpack_starter' ) ) { - return true; - } - } - } - return false; - } - - /** - * Get the product-slugs of the paid plans for this product. - * (Do not include bundle plans, unless it's a bundle plan itself). - * - * @return array - */ - public static function get_paid_plan_product_slugs() { - return array( - 'jetpack_starter_yearly', - 'jetpack_starter_monthly', - ); - } - - /** - * Checks whether product is a bundle. - * - * @return boolean True - */ - public static function is_bundle_product() { - return true; - } - - /** - * Return all the products it contains. - * - * @return Array Product slugs - */ - public static function get_supported_products() { - return array( 'backup', 'anti-spam' ); - } - - /** - * Get the URL where the user manages the product - * - * @return ?string - */ - public static function get_manage_url() { - return ''; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-stats.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-stats.php deleted file mode 100644 index e838ecc6..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-stats.php +++ /dev/null @@ -1,334 +0,0 @@ - true, - 'wpcom_product_slug' => static::get_wpcom_product_slug(), - ), - Wpcom_Products::get_product_pricing( static::get_wpcom_product_slug() ) - ); - } - - /** - * Get the WPCOM product slug used to make the purchase - * - * @return ?string - */ - public static function get_wpcom_product_slug() { - return 'jetpack_stats_yearly'; - } - - /** - * Get the WPCOM Pay Whatever You Want product slug used to make the purchase - * - * @return ?string - */ - public static function get_wpcom_pwyw_product_slug() { - return 'jetpack_stats_pwyw_yearly'; - } - - /** - * Get the WPCOM free product slug - * - * @return ?string - */ - public static function get_wpcom_free_product_slug() { - return 'jetpack_stats_free_yearly'; - } - - /** - * Gets the 'status' of the Stats product - * - * @return string - */ - public static function get_status() { - $status = parent::get_status(); - if ( Products::STATUS_MODULE_DISABLED === $status && ! Initializer::is_registered() ) { - // If the site has never been connected before, show the "Learn more" CTA, - // that points to the add Stats product interstitial. - $status = Products::STATUS_NEEDS_FIRST_SITE_CONNECTION; - } - return $status; - } - /** - * Checks whether the product can be upgraded to a different product. - * Stats Commercial plan (highest tier) & Jetpack Complete are not upgradable. - * Also we don't push PWYW users to upgrade. - * - * @return boolean - */ - public static function is_upgradable() { - // For now, atomic sites with stats are not in a position to upgrade - if ( ( new Host() )->is_woa_site() ) { - return false; - } - - $purchases_data = Wpcom_Products::get_site_current_purchases(); - if ( ! is_wp_error( $purchases_data ) && is_array( $purchases_data ) && ! empty( $purchases_data ) ) { - foreach ( $purchases_data as $purchase ) { - // Jetpack complete includes Stats commercial & cannot be upgraded - if ( - str_starts_with( $purchase->product_slug, 'jetpack_complete' ) || - str_starts_with( $purchase->product_slug, 'jetpack_growth' ) - ) { - return false; - } elseif ( - // Stats commercial purchased with highest tier cannot be upgraded. - in_array( - $purchase->product_slug, - array( 'jetpack_stats_yearly', 'jetpack_stats_monthly', 'jetpack_stats_bi_yearly' ), - true - ) && $purchase->current_price_tier_slug === 'more_than_1m_views' - ) { - return false; - } elseif ( - // If user already has Stats PWYW, we won't push them to upgrade. - $purchase->product_slug === 'jetpack_stats_pwyw_yearly' - ) { - return false; - } - } - } - return true; - } - - /** - * Get the product-slugs of the paid plans for this product (not including bundles) - * - * @return array - */ - public static function get_paid_plan_product_slugs() { - return array( - 'jetpack_stats_yearly', - 'jetpack_stats_monthly', - 'jetpack_stats_bi_yearly', - 'jetpack_stats_pwyw_yearly', - ); - } - - /** - * Returns a productType parameter for an upgrade URL, determining whether - * to show the PWYW upgrade interstitial or commercial upgrade interstitial. - * - * @return string - */ - public static function get_url_product_type() { - $purchases_data = Wpcom_Products::get_site_current_purchases(); - $is_commercial_site = Initializer::is_commercial_site(); - if ( is_wp_error( $purchases_data ) ) { - return $is_commercial_site ? '&productType=commercial' : ''; - } - if ( $is_commercial_site ) { - return '&productType=commercial'; - } - if ( is_array( $purchases_data ) && ! empty( $purchases_data ) ) { - foreach ( $purchases_data as $purchase ) { - if ( - str_starts_with( $purchase->product_slug, static::get_wpcom_free_product_slug() ) - ) { - return '&productType=personal'; - } elseif ( - in_array( - $purchase->product_slug, - array( 'jetpack_stats_yearly', 'jetpack_stats_monthly', 'jetpack_stats_bi_yearly' ), - true - ) && - ! empty( $purchase->current_price_tier_slug ) - ) { - return '&productType=commercial'; - } - } - } - return ''; - } - - /** - * Checks whether the product supports trial or not. - * Since Jetpack Stats has been widely available as a free product in the past, it "supports" a trial. - * - * @return boolean - */ - public static function has_trial_support() { - return true; - } - - /** - * Get the WordPress.com URL for purchasing Jetpack Stats for the current site. - * - * @return ?string - */ - public static function get_purchase_url() { - $status = static::get_status(); - if ( $status === Products::STATUS_NEEDS_FIRST_SITE_CONNECTION ) { - return null; - } - // The returning URL could be customized by changing the `redirect_uri` param with relative path. - return sprintf( - '%s#!/stats/purchase/%d?from=jetpack-my-jetpack%s&redirect_uri=%s', - admin_url( 'admin.php?page=stats' ), - Jetpack_Options::get_option( 'id' ), - static::get_url_product_type(), - rawurlencode( 'admin.php?page=stats' ) - ); - } - - /** - * Get the URL where the user manages the product - * - * @return ?string - */ - public static function get_manage_url() { - return admin_url( 'admin.php?page=stats' ); - } - - /** - * Return product bundles list - * that supports the product. - * - * @return boolean|array Products bundle list. - */ - public static function is_upgradable_by_bundle() { - return array( 'growth', 'complete' ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-videopress.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-videopress.php deleted file mode 100644 index 24f02273..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-videopress.php +++ /dev/null @@ -1,315 +0,0 @@ - \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::get_site_videopress_data', - 'permission_callback' => __CLASS__ . '::permissions_callback', - ) - ); - } - - /** - * Checks if the user has the correct permissions - */ - public static function permissions_callback() { - return current_user_can( 'edit_posts' ); - } - - /** - * Get the product name - * - * @return string - */ - public static function get_name() { - return 'VideoPress'; - } - - /** - * Get the product title - * - * @return string - */ - public static function get_title() { - return 'Jetpack VideoPress'; - } - - /** - * Get the internationalized product description - * - * @return string - */ - public static function get_description() { - return __( 'Stunning-quality, ad-free video in the WordPress Editor', 'jetpack-my-jetpack' ); - } - - /** - * Get the internationalized product long description - * - * @return string - */ - public static function get_long_description() { - return __( 'Stunning-quality, ad-free video in the WordPress Editor', 'jetpack-my-jetpack' ); - } - - /** - * Get the internationalized features list - * - * @return array Boost features list - */ - public static function get_features() { - return array( - _x( '1TB of storage', 'VideoPress Product Feature', 'jetpack-my-jetpack' ), - _x( 'Built into WordPress editor', 'VideoPress Product Feature', 'jetpack-my-jetpack' ), - _x( 'Ad-free and customizable player', 'VideoPress Product Feature', 'jetpack-my-jetpack' ), - _x( 'Unlimited users', 'VideoPress Product Feature', 'jetpack-my-jetpack' ), - ); - } - - /** - * Get the product princing details - * - * @return array Pricing details - */ - public static function get_pricing_for_ui() { - return array_merge( - array( - 'available' => true, - 'wpcom_product_slug' => static::get_wpcom_product_slug(), - ), - Wpcom_Products::get_product_pricing( static::get_wpcom_product_slug() ) - ); - } - - /** - * Get the URL the user is taken after purchasing the product through the checkout - * - * @return ?string - */ - public static function get_post_checkout_url() { - return self::get_manage_url(); - } - - /** - * Get the WPCOM product slug used to make the purchase - * - * @return ?string - */ - public static function get_wpcom_product_slug() { - return 'jetpack_videopress'; - } - - /** - * Get the URL the user is taken after activating the product - * - * @return ?string - */ - public static function get_post_activation_url() { - return ''; // stay in My Jetpack page. - } - - /** - * Get the URL where the user manages the product - * - * @return ?string - */ - public static function get_manage_url() { - if ( method_exists( 'Automattic\Jetpack\VideoPress\Initializer', 'should_initialize_admin_ui' ) && \Automattic\Jetpack\VideoPress\Initializer::should_initialize_admin_ui() ) { - return \Automattic\Jetpack\VideoPress\Admin_UI::get_admin_page_url(); - } else { - return admin_url( 'admin.php?page=jetpack#/settings?term=videopress' ); - } - } - - /** - * Get the product-slugs of the paid plans for this product (not including bundles) - * - * @return array - */ - public static function get_paid_plan_product_slugs() { - return array( - 'jetpack_videopress', - 'jetpack_videopress_monthly', - 'jetpack_videopress_bi_yearly', - ); - } - - /** - * Return product bundles list - * that supports the product. - * - * @return boolean|array Products bundle list. - */ - public static function is_upgradable_by_bundle() { - return array( 'complete' ); - } - - /** - * Get stats for VideoPress - * - * @return array|WP_Error - */ - private static function get_videopress_stats() { - $video_count = array_sum( (array) wp_count_attachments( 'video' ) ); - - if ( ! class_exists( 'Automattic\Jetpack\VideoPress\Stats' ) ) { - return array( - 'videoCount' => $video_count, - ); - } - - $featured_stats = get_transient( self::VIDEOPRESS_STATS_KEY ); - - if ( $featured_stats ) { - return array( - 'featuredStats' => $featured_stats, - 'videoCount' => $video_count, - ); - } - - $stats_period = get_transient( self::VIDEOPRESS_PERIOD_KEY ); - $videopress_stats = new VideoPress_Stats(); - - // If the stats period exists, retrieve that information without checking the view count. - // If it does not, check the view count of monthly stats and determine if we want to show yearly or monthly stats. - if ( $stats_period ) { - if ( $stats_period === 'day' ) { - $featured_stats = $videopress_stats->get_featured_stats( 60, 'day' ); - } else { - $featured_stats = $videopress_stats->get_featured_stats( 2, 'year' ); - } - } else { - $featured_stats = $videopress_stats->get_featured_stats( 60, 'day' ); - - if ( - ! is_wp_error( $featured_stats ) && - $featured_stats && - ( $featured_stats['data']['views']['current'] < 500 || $featured_stats['data']['views']['previous'] < 500 ) - ) { - $featured_stats = $videopress_stats->get_featured_stats( 2, 'year' ); - } - } - - if ( is_wp_error( $featured_stats ) || ! $featured_stats ) { - return array( - 'videoCount' => $video_count, - ); - } - - set_transient( self::VIDEOPRESS_PERIOD_KEY, $featured_stats['period'], WEEK_IN_SECONDS ); - set_transient( self::VIDEOPRESS_STATS_KEY, $featured_stats, DAY_IN_SECONDS ); - - return array( - 'featuredStats' => $featured_stats, - 'videoCount' => $video_count, - ); - } - - /** - * Get VideoPress data for the REST API - * - * @return WP_REST_Response|WP_Error - */ - public static function get_site_videopress_data() { - $videopress_stats = self::get_videopress_stats(); - - return rest_ensure_response( $videopress_stats ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/CHANGELOG.md deleted file mode 100644 index 29e4c4c8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/CHANGELOG.md +++ /dev/null @@ -1,193 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [0.4.7] - 2025-03-21 -### Changed -- Internal updates. - -## [0.4.6] - 2025-03-17 -### Changed -- Internal updates. - -## [0.4.5] - 2025-03-12 -### Changed -- Internal updates. - -## [0.4.4] - 2025-03-05 -### Changed -- Internal updates. - -## [0.4.3] - 2025-02-24 -### Changed -- Update dependencies. - -## [0.4.2] - 2025-02-03 -### Changed -- Internal updates. - -## [0.4.1] - 2024-11-25 -### Changed -- Updated dependencies. [#40286] - -## [0.4.0] - 2024-11-14 -### Removed -- General: Update minimum PHP version to 7.2. [#40147] - -## [0.3.3] - 2024-11-04 -### Added -- Enable test coverage. [#39961] - -## [0.3.2] - 2024-08-23 -### Changed -- Updated package dependencies. [#39004] - -## [0.3.1] - 2024-03-14 -### Changed -- Internal updates. - -## [0.3.0] - 2023-11-20 -### Changed -- Updated required PHP version to >= 7.0. [#34192] - -## [0.2.14] - 2023-08-23 -### Changed -- Updated package dependencies. [#32605] - -## [0.2.13] - 2023-04-10 -### Added -- Add Jetpack Autoloader package suggestion. [#29988] - -## [0.2.12] - 2023-03-20 -### Changed -- Updated package dependencies. [#29480] - -## [0.2.11] - 2023-02-20 -### Changed -- Minor internal updates. - -## [0.2.10] - 2023-01-11 -### Changed -- Updated package dependencies. - -## [0.2.9] - 2022-12-02 -### Changed -- Updated package dependencies. [#27688] - -## [0.2.8] - 2022-11-22 -### Changed -- Updated package dependencies. [#27043] - -## [0.2.7] - 2022-09-20 -### Changed -- Updated package dependencies. - -## [0.2.6] - 2022-07-26 -### Changed -- Updated package dependencies. [#25158] - -## [0.2.5] - 2022-06-21 -### Changed -- Renaming master to trunk. [#24661] - -## [0.2.4] - 2022-04-26 -### Changed -- Updated package dependencies. - -## [0.2.3] - 2022-03-29 -### Changed -- Microperformance: Use === null instead of is_null - -## [0.2.2] - 2022-01-25 -### Changed -- Updated package dependencies. - -## [0.2.1] - 2022-01-18 -### Changed -- Updated package dependencies. - -## [0.2.0] - 2022-01-04 -### Changed -- Switch to pcov for code coverage. -- Updated package dependencies -- Updated package textdomain from `jetpack` to `jetpack-password-checker`. - -## [0.1.8] - 2021-12-14 -### Changed -- Updated package dependencies. - -## [0.1.7] - 2021-11-02 -### Changed -- Set `convertDeprecationsToExceptions` true in PHPUnit config. -- Update PHPUnit configs to include just what needs coverage rather than include everything then try to exclude stuff that doesn't. - -## [0.1.6] - 2021-10-13 -### Changed -- Updated package dependencies. - -## [0.1.5] - 2021-10-12 -### Changed -- Updated package dependencies - -## [0.1.4] - 2021-09-28 -### Changed -- Updated package dependencies. - -## [0.1.3] - 2021-08-30 -### Changed -- Run composer update on test-php command instead of phpunit -- Tests: update PHPUnit polyfills dependency (yoast/phpunit-polyfills). - -## [0.1.2] - 2021-05-25 -### Fixed -- Avoid checking in vendor directory. - -## [0.1.1] - 2021-04-27 -### Changed -- Updated package dependencies. - -## 0.1.0 - 2021-03-30 -### Added -- Initial release. - -### Fixed -- Use `composer update` rather than `install` in scripts, as composer.lock isn't checked in. - -[0.4.7]: https://github.com/Automattic/jetpack-password-checker/compare/v0.4.6...v0.4.7 -[0.4.6]: https://github.com/Automattic/jetpack-password-checker/compare/v0.4.5...v0.4.6 -[0.4.5]: https://github.com/Automattic/jetpack-password-checker/compare/v0.4.4...v0.4.5 -[0.4.4]: https://github.com/Automattic/jetpack-password-checker/compare/v0.4.3...v0.4.4 -[0.4.3]: https://github.com/Automattic/jetpack-password-checker/compare/v0.4.2...v0.4.3 -[0.4.2]: https://github.com/Automattic/jetpack-password-checker/compare/v0.4.1...v0.4.2 -[0.4.1]: https://github.com/Automattic/jetpack-password-checker/compare/v0.4.0...v0.4.1 -[0.4.0]: https://github.com/Automattic/jetpack-password-checker/compare/v0.3.3...v0.4.0 -[0.3.3]: https://github.com/Automattic/jetpack-password-checker/compare/v0.3.2...v0.3.3 -[0.3.2]: https://github.com/Automattic/jetpack-password-checker/compare/v0.3.1...v0.3.2 -[0.3.1]: https://github.com/Automattic/jetpack-password-checker/compare/v0.3.0...v0.3.1 -[0.3.0]: https://github.com/Automattic/jetpack-password-checker/compare/v0.2.14...v0.3.0 -[0.2.14]: https://github.com/Automattic/jetpack-password-checker/compare/v0.2.13...v0.2.14 -[0.2.13]: https://github.com/Automattic/jetpack-password-checker/compare/v0.2.12...v0.2.13 -[0.2.12]: https://github.com/Automattic/jetpack-password-checker/compare/v0.2.11...v0.2.12 -[0.2.11]: https://github.com/Automattic/jetpack-password-checker/compare/v0.2.10...v0.2.11 -[0.2.10]: https://github.com/Automattic/jetpack-password-checker/compare/v0.2.9...v0.2.10 -[0.2.9]: https://github.com/Automattic/jetpack-password-checker/compare/v0.2.8...v0.2.9 -[0.2.8]: https://github.com/Automattic/jetpack-password-checker/compare/v0.2.7...v0.2.8 -[0.2.7]: https://github.com/Automattic/jetpack-password-checker/compare/v0.2.6...v0.2.7 -[0.2.6]: https://github.com/Automattic/jetpack-password-checker/compare/v0.2.5...v0.2.6 -[0.2.5]: https://github.com/Automattic/jetpack-password-checker/compare/v0.2.4...v0.2.5 -[0.2.4]: https://github.com/Automattic/jetpack-password-checker/compare/v0.2.3...v0.2.4 -[0.2.3]: https://github.com/Automattic/jetpack-password-checker/compare/v0.2.2...v0.2.3 -[0.2.2]: https://github.com/Automattic/jetpack-password-checker/compare/v0.2.1...v0.2.2 -[0.2.1]: https://github.com/Automattic/jetpack-password-checker/compare/v0.2.0...v0.2.1 -[0.2.0]: https://github.com/Automattic/jetpack-password-checker/compare/v0.1.8...v0.2.0 -[0.1.8]: https://github.com/Automattic/jetpack-password-checker/compare/v0.1.7...v0.1.8 -[0.1.7]: https://github.com/Automattic/jetpack-password-checker/compare/v0.1.6...v0.1.7 -[0.1.6]: https://github.com/Automattic/jetpack-password-checker/compare/v0.1.5...v0.1.6 -[0.1.5]: https://github.com/Automattic/jetpack-password-checker/compare/v0.1.4...v0.1.5 -[0.1.4]: https://github.com/Automattic/jetpack-password-checker/compare/v0.1.3...v0.1.4 -[0.1.3]: https://github.com/Automattic/jetpack-password-checker/compare/v0.1.2...v0.1.3 -[0.1.2]: https://github.com/Automattic/jetpack-password-checker/compare/v0.1.1...v0.1.2 -[0.1.1]: https://github.com/Automattic/jetpack-password-checker/compare/v0.1.0...v0.1.1 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/composer.json deleted file mode 100644 index cddc48bf..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/composer.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "automattic/jetpack-password-checker", - "description": "Password Checker.", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-test-environment": "@dev", - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/phpunit-select-config": "^1.0.1" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "scripts": { - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" - ], - "test-php": [ - "@composer phpunit" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-password-checker", - "textdomain": "jetpack-password-checker", - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-password-checker/compare/v${old}...v${new}" - }, - "branch-alias": { - "dev-trunk": "0.4.x-dev" - } - }, - "config": { - "allow-plugins": { - "roots/wordpress-core-installer": true - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/src/class-password-checker.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/src/class-password-checker.php deleted file mode 100644 index 79c369c2..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-password-checker/src/class-password-checker.php +++ /dev/null @@ -1,1313 +0,0 @@ -user_id = get_current_user_id(); - } elseif ( is_object( $user ) && isset( $user->ID ) ) { - // Existing user, using their ID. - $this->user_id = $user->ID; - } elseif ( is_object( $user ) ) { - // Newly created user, using existing data. - $this->user = $user; - $this->user_id = 'new_user'; - } else { - $this->user_id = $user; - } - - /** - * Filters the password strength enforcement settings. - * - * You can supply your own passwords that should not be used for authenticating in addition to weak and easy - * to guess strings for each user. For example, you can add passwords from known password databases to avoid - * compromised password usage. - * - * @param array $common_passwords strings that are forbidden for use as passwords. - */ - $this->common_passwords = apply_filters( 'password_checker_common_passwords', $this->common_passwords ); - - /** - * Filters the password strength enforcement settings. - * - * You can modify the minimum password length using this filter. - * - * @param int $minimum_password_length minimum password length. - */ - $this->minimum_password_length = apply_filters( 'password_checker_minimum_password_length', $this->minimum_password_length ); - - /** - * Filters the password strength enforcement settings. - * - * You can modify the minimum entropy bits requirement using this filter. - * - * @param int $minimum_entropy_bits minimum entropy bits requirement. - */ - $this->minimum_entropy_bits = apply_filters( 'password_checker_minimum_entropy_bits', $this->minimum_entropy_bits ); - } - - /** - * Run tests against a password. - * - * @param string $password the password. - * @param bool $required_only only test against required conditions, defaults to false. - * - * @return array an array containing failed and passed test results. - */ - public function test( $password, $required_only = false ) { - // Run the tests. - $results = $this->run_tests( $password, $this->get_tests(), $required_only ); - - // If we've failed on the required tests, return now. - if ( ! empty( $results['failed'] ) ) { - return array( - 'passed' => false, - 'test_results' => $results, - ); - } - - $entropy_bits = $this->calculate_entropy_bits( $password ); - - // If we have failed the entropy bits test, run the regex tests so we can suggest improvements. - if ( $entropy_bits < $this->minimum_entropy_bits ) { - $results['failed']['entropy_bits'] = $entropy_bits; - // Run the tests. - $results = array_merge( $results, $this->run_tests( $password, $this->get_tests( 'preg_match' ) ) ); - } - - return ( array( - 'passed' => empty( $results['failed'] ), - 'test_results' => $results, - ) ); - } - - /** - * Run the tests using the currently set up object values. - * - * @param string $password the password. - * @param array $tests tests to run. - * @param bool $required_only whether to run only required tests. - * - * @return array test results. - */ - public function run_tests( $password, $tests, $required_only = false ) { - $results = array( - 'passed' => array(), - 'failed' => array(), - ); - - foreach ( $tests as $test_type => $section_tests ) { - foreach ( $section_tests as $test_name => $test_data ) { - // Skip non-required tests if required_only param is set. - if ( $required_only && ! $test_data['required'] ) { - continue; - } - - $result = call_user_func_array( array( $this, 'test_' . $test_type ), array( $password, $test_data ) ); - if ( $result ) { - $results['passed'][] = array( 'test_name' => $test_name ); - } else { - $results['failed'][] = array( - 'test_name' => $test_name, - 'explanation' => $test_data['error'], - ); - - if ( isset( $test_data['fail_immediately'] ) ) { - return $results; - } - } - } - } - - return $results; - } - - /** - * Returns an array of tests that need to be run on password strings. - * - * @param array $sections only return specific sections with the passed keys, defaults to all. - * - * @return array test descriptions. - */ - public function get_tests( $sections = false ) { - // Note: these should be in order of priority. - $tests = array( - 'preg_match' => array( - 'no_backslashes' => array( - 'pattern' => '/^[^\\\\]*$/u', - 'error' => __( 'Passwords may not contain the character "\".', 'jetpack-password-checker' ), - 'required' => true, - 'fail_immediately' => true, - ), - 'minimum_length' => array( - 'pattern' => '/^.{' . $this->minimum_password_length . ',}/u', - /* translators: %d is a number of characters in the password. */ - 'error' => sprintf( __( 'Password must be at least %d characters.', 'jetpack-password-checker' ), $this->minimum_password_length ), - 'required' => true, - 'fail_immediately' => true, - ), - 'has_mixed_case' => array( - 'pattern' => '/([a-z].*?[A-Z]|[A-Z].*?[a-z])/u', - 'error' => __( 'This password is too easy to guess: you can improve it by adding additional uppercase letters, lowercase letters, or numbers.', 'jetpack-password-checker' ), - 'required' => false, - ), - 'has_digit' => array( - 'pattern' => '/\d/u', - 'error' => __( 'This password is too easy to guess: you can improve it by mixing both letters and numbers.', 'jetpack-password-checker' ), - 'required' => false, - ), - 'has_special_char' => array( - 'pattern' => '/[^a-zA-Z\d]/u', - 'error' => __( 'This password is too easy to guess: you can improve it by including special characters such as !#=?*&.', 'jetpack-password-checker' ), - 'required' => false, - ), - ), - 'compare_to_list' => array( - 'not_a_common_password' => array( - 'list_callback' => 'get_common_passwords', - 'compare_callback' => 'negative_in_array', - 'error' => __( 'This is a very common password. Choose something that will be harder for others to guess.', 'jetpack-password-checker' ), - 'required' => true, - ), - 'not_same_as_other_user_data' => array( - 'list_callback' => 'get_other_user_data', - 'compare_callback' => 'test_not_same_as_other_user_data', - 'error' => __( 'Your password is too weak: Looks like you are including easy to guess information about yourself. Try something a little more unique.', 'jetpack-password-checker' ), - 'required' => true, - ), - ), - ); - - /** - * Filters the password strength enforcement settings. - * - * You can determine the tests run and their order based on whatever criteria you wish to specify. - * - * @param array $tests tests to run. - */ - $tests = apply_filters( 'password_checker_tests', $tests ); - - if ( ! $sections ) { - return $tests; - } - - $sections = (array) $sections; - - return array_intersect_key( $tests, array_flip( $sections ) ); - } - - /** - * Provides the regular expression tester functionality. - * - * @param string $password the password. - * @param array $test_data the current test data. - * - * @return bool does the test pass? - */ - protected function test_preg_match( $password, $test_data ) { - return preg_match( $test_data['pattern'], $password ); - } - - /** - * Provides the comparison tester functionality. - * - * @param string $password the password. - * @param array $test_data the current test data. - * - * @return bool does the test pass? - */ - protected function test_compare_to_list( $password, $test_data ) { - if ( - ! is_callable( array( $this, $test_data['list_callback'] ) ) - || ! is_callable( array( $this, $test_data['compare_callback'] ) ) - ) { - return false; - } - - return call_user_func( - array( - $this, - $test_data['compare_callback'], - ), - $password, - call_user_func( array( $this, $test_data['list_callback'] ) ) - ); - } - - /** - * Getter for the common password list. - * - * @return array common passwords. - */ - protected function get_common_passwords() { - return $this->common_passwords; - } - - /** - * Returns the widely known user data that can not be used in the password to avoid - * predictable strings. - * - * @return array user data. - */ - protected function get_other_user_data() { - if ( empty( $this->user_id ) ) { - return array(); - } - - $user_data = get_userdata( $this->user_id ); - if ( ! $user_data ) { - return array(); - } - - if ( isset( $user_data->ID ) ) { - $this->add_user_strings_to_test( get_user_meta( $user_data->ID, 'first_name', true ) ); - $this->add_user_strings_to_test( get_user_meta( $user_data->ID, 'last_name', true ) ); - $this->add_user_strings_to_test( get_user_meta( $user_data->ID, 'nickname', true ) ); - } - - if ( isset( $user_data->user_nicename ) ) { - $this->add_user_strings_to_test( $user_data->user_nicename ); - } - - if ( isset( $user_data->display_name ) ) { - $this->add_user_strings_to_test( $user_data->display_name ); - } - - if ( isset( $user_data->first_name ) ) { - $this->add_user_strings_to_test( $user_data->first_name ); - } - - if ( isset( $user_data->last_name ) ) { - $this->add_user_strings_to_test( $user_data->last_name ); - } - - if ( isset( $user_data->user_email ) ) { - $email_username = substr( $user_data->user_email, 0, strpos( $user_data->user_email, '@' ) ); - $this->add_user_strings_to_test( $email_username, '.' ); - $this->add_user_strings_to_test( $user_data->user_email ); - } - - return $this->get_user_strings_to_test(); - } - - /** - * Compare the password for matches with known user data. - * - * @param string $password the password. - * @param array $strings_to_test known user data. - * - * @return bool does the test pass? - */ - protected function test_not_same_as_other_user_data( $password, $strings_to_test ) { - if ( empty( $strings_to_test ) ) { - return false; - } - - $password_lowercase = strtolower( $password ); - - foreach ( $strings_to_test as $string ) { - $string = strtolower( $string ); - $string_reversed = strrev( $string ); - - if ( $password_lowercase === $string || $password_lowercase === $string_reversed ) { - return false; - } - - // Also check for the string or reversed string with any numbers just stuck to the end to catch things like bob123 as passwords. - if ( - preg_match( '/^' . preg_quote( $string, '/' ) . '\d+$/', $password_lowercase ) - || preg_match( '/^' . preg_quote( $string_reversed, '/' ) . '\d+$/', $password_lowercase ) - ) { - return false; - } - } - - return true; - } - - /** - * A shorthand for the not in array construct. - * - * @param mixed $needle the needle. - * @param array $haystack the haystack. - * - * @return bool is the needle not in the haystack? - */ - protected function negative_in_array( $needle, $haystack ) { - return ! in_array( $needle, $haystack, true ); - } - - /** - * A helper function used to break a single string into its constituents so - * that both the full string and its constituents and any variants thereof - * can be tested against the password. - * - * @param string $string the string to be broken down. - * @param string $explode_delimiter delimiter. - * - * @return bool - */ - protected function add_user_strings_to_test( $string, $explode_delimiter = ' ' ) { - // Don't check against empty strings. - if ( empty( $string ) ) { - return false; - } - - $strings = explode( $explode_delimiter, $string ); - - // Remove any non alpha numeric characters from the strings to check against. - foreach ( $strings as $key => $_string ) { - $_string = trim( preg_replace( '/[^a-zA-Z0-9]/', '', $_string ) ); - if ( empty( $_string ) ) { - continue; - } - - $strings[ $key ] = $_string; - } - - // Check the original too. - $strings[] = trim( $string ); - - // Check the original minus non alpha numeric characters. - $strings[] = trim( preg_replace( '/[^a-zA-Z0-9]/', '', $string ) ); - - // Remove any empty strings. - // Note: This will also filter out '0'. - $strings = array_filter( $strings ); - if ( empty( $strings ) ) { - return false; - } - - $this->user_strings_to_test = array_unique( array_merge( $this->user_strings_to_test, $strings ) ); - - return true; - } - - /** - * Getter for the user strings array. - * - * @return array user strings. - */ - protected function get_user_strings_to_test() { - return $this->user_strings_to_test; - } - - /** - * Return a character set size that is used in the string. - * - * @param string $password the password. - * - * @return int number of different character sets in use. - */ - protected function get_charset_size( $password ) { - $size = 0; - - // Lowercase a-z. - if ( preg_match( '/[a-z]/', $password ) ) { - $size += 26; - } - - // Uppercase A-Z. - if ( preg_match( '/[A-Z]/', substr( $password, 1, - 1 ) ) ) { - $size += 26; - } - - // Digits. - if ( preg_match( '/\d/', substr( $password, 1, - 1 ) ) ) { - $size += 10; - } - - // Over digits symbols. - if ( preg_match( '/[!|@|#|$|%|^|&|*|(|)]/', $password ) ) { - $size += 10; - } - - // Other symbols. - if ( preg_match( '#[`|~|-|_|=|+|\[|{|\]|}|\\|\|;:\'",<\.>/\?]#', $password ) ) { - $size += 20; - } - - // Spaces. - if ( strpos( $password, ' ' ) ) { - ++$size; - } - - return $size; - } - - /** - * Shorthand for getting a character index. - * - * @param string $char character. - * - * @return int the character code. - */ - protected function get_char_index( $char ) { - $char = strtolower( $char[0] ); - if ( $char < 'a' || $char > 'z' ) { - return 0; - } else { - return ord( $char[0] ) - ord( 'a' ) + 1; - } - } - - /** - * This is the password strength calculation algorithm, based on the formula H = L(logN/log2). - * - * H = Entropy - * L = String length (the for iterator) - * N = Our charset size, via get_charset_size() - * - * @see https://en.wikipedia.org/wiki/Password_strength#Random_passwords - * - * On top of the base formula, we're also multiplying the bits of entropy for every char - * by 1 - (the probabily of it following the previous char) - * i.e.: the probablity of U following Q is ~0.84. If our password contains this pair of characters, - * the u char will only add ( 0.16^2 * charset_score ) to our total of entropy bits. - * - * @param string $password the password. - * - * @return float|int - */ - protected function calculate_entropy_bits( $password ) { - $bits = 0; - // Calculate the score. - $charset_score = log( $this->get_charset_size( $password ) ) / log( 2 ); - - $aidx = $this->get_char_index( $password[0] ); - $length = strlen( $password ); - - for ( $b = 1; $b < $length; $b++ ) { - $bidx = $this->get_char_index( $password[ $b ] ); - - // 27 = number of chars in the index (a-z,' '). - $c = 1.0 - $this->frequency_table[ $aidx * 27 + $bidx ]; - - // Increment the bits. - $bits += $charset_score * $c * $c; - - // Move on to next pair. - $aidx = $bidx; - } - - return $bits; - } - - /** - * A frequency table of character pairs, starting with ' ' then ' a', ' b' [...] , 'a ', 'aa' etc. - * - * @see http://rumkin.com/tools/password/passchk.php - * - * @var array - */ - public $frequency_table = array( - 0.23653710453418866, - 0.04577693541332556, - 0.03449832337075375, - 0.042918209651552706, - 0.037390873305146524, - 0.028509112115468728, - 0.02350896632162123, - 0.022188657238664526, - 0.028429800262428927, - 0.04357019973757107, - 0.00913602565971716, - 0.03223093745443942, - 0.02235311269864412, - 0.04438081352966905, - 0.04512377897652719, - 0.020055401662049863, - 0.055903192885260244, - 0.0024388394809739026, - 0.035207464644991984, - 0.07355941099285611, - 0.036905671380667734, - 0.026134421927394666, - 0.023787724158040528, - 0.011352092141711621, - 0.0032354570637119114, - 0.005986878553725033, - 0.008861933226417843, - 0.11511532293337222, - 0.027556203528211108, - 0.024331243621519172, - 0.039266365359381834, - 0.031599941682461, - 0.014403265782183991, - 0.015480973902901297, - 0.027770812071730572, - 0.00942761335471643, - 0.039872867764980315, - 0.0078122175244204695, - 0.02808456043154979, - 0.08429100451960927, - 0.04688963405744277, - 0.13831170724595424, - 0.002540311998833649, - 0.025211838460416972, - 0.001543082081936142, - 0.09519638431258201, - 0.061845750109345385, - 0.08907071001603732, - 0.02137571074500656, - 0.027093162268552268, - 0.005521504592506197, - 0.003023181221752442, - 0.007086747339262283, - 0.010262720513194342, - 0.08785070710016038, - 0.14617757690625455, - 0.03417291150313457, - 0.0059635515381250915, - 0.006146668610584633, - 0.195202799241872, - 0.002774748505613063, - 0.004715556203528212, - 0.0044776206444088066, - 0.11205481848665985, - 0.005654468581425864, - 0.0028820527773727946, - 0.07383000437381543, - 0.005516839189386207, - 0.006496573844583759, - 0.09843067502551392, - 0.0027140982650532145, - 0.0006893133109782768, - 0.08425368129464937, - 0.021325557661466685, - 0.006493074792243767, - 0.07023414491908442, - 0.002077270739174807, - 0.0024633328473538415, - 0.0007744569179180639, - 0.015413325557661468, - 0.0011990086018370024, - 0.13162851727657093, - 0.10115993585070711, - 0.0026989357049132527, - 0.03319317684793702, - 0.002946202070272634, - 0.0783216212275842, - 0.0018358361277154103, - 0.00258813238081353, - 0.2141688292754046, - 0.09853681294649366, - 0.0032482869222918796, - 0.04359352675317102, - 0.01993526753171016, - 0.0036880011663507797, - 0.008011663507799971, - 0.12014696019827964, - 0.0029846916460125384, - 0.0017553579238956116, - 0.029470185158186325, - 0.010413179763813967, - 0.030699518880303252, - 0.03508499781309229, - 0.002021285901734947, - 0.0010613792097973467, - 0.0005295232541186761, - 0.009677212421635807, - 0.010585799679253535, - 0.17101734946785244, - 0.07968625164018078, - 0.007839043592360402, - 0.005438693687126403, - 0.0183606939787141, - 0.2732701559994168, - 0.004953491762647616, - 0.007259367254701851, - 0.008104971570199739, - 0.13274588132380813, - 0.004210526315789474, - 0.004997813092287506, - 0.017006560723137484, - 0.007442484327161393, - 0.016789619478058026, - 0.08477737279486806, - 0.005106283714827234, - 0.0005026971861787433, - 0.04040355736987899, - 0.037535500801866156, - 0.00885960052485785, - 0.0336410555474559, - 0.007066919376002332, - 0.005344219273946639, - 0.0006333284735384167, - 0.010684939495553289, - 0.0063064586674442345, - 0.15386849394955532, - 0.015049424114302375, - 0.012162705933809595, - 0.020425134859308938, - 0.037366379938766583, - 0.02157165767604607, - 0.009373961218836564, - 0.0173214754337367, - 0.009616562181075958, - 0.029522670943286193, - 0.010154249890654615, - 0.018600962239393497, - 0.06362210234728094, - 0.03157078291296107, - 0.151603440734801, - 0.0062329785683044175, - 0.014775331681003062, - 0.0020854351946347867, - 0.1826342032366234, - 0.0878017203674005, - 0.054190989940224525, - 0.010329202507654177, - 0.012763376585508092, - 0.0064872430383437815, - 0.006381105117364048, - 0.005388540603586529, - 0.0090800408222773, - 0.09611196967487973, - 0.09940691062837148, - 0.01033969966467415, - 0.004034407348009914, - 0.008826942703017933, - 0.11474675608689314, - 0.07132584924916169, - 0.012388977985129028, - 0.005435194634786413, - 0.1417174515235457, - 0.0037066627788307337, - 0.0045802595130485495, - 0.060800699810468, - 0.005341886572386646, - 0.005683627350925791, - 0.12434932205860913, - 0.004596588423968508, - 0.0007534626038781163, - 0.07107041842834232, - 0.022361277154104096, - 0.04784720804782038, - 0.06277533168100306, - 0.003441901151771395, - 0.005828254847645429, - 0.0009669047966175828, - 0.009470768333576322, - 0.002077270739174807, - 0.12797667298440007, - 0.08797783933518005, - 0.005388540603586529, - 0.0024913252660737715, - 0.007550954949701123, - 0.2786866890217233, - 0.002509986878553725, - 0.029002478495407494, - 0.0303204548768042, - 0.07576614666861058, - 0.00246799825047383, - 0.00592389561160519, - 0.039574281965301064, - 0.00706808572678233, - 0.03304505029887739, - 0.05474150750838315, - 0.0028633911648928414, - 0.0005073625892987316, - 0.07293541332555767, - 0.053528502697186175, - 0.022566554891383584, - 0.038151334013704616, - 0.002716430966613209, - 0.005049132526607377, - 0.0009902318122175246, - 0.008997229916897508, - 0.0011861787432570347, - 0.1666377022889634, - 0.14414462749671964, - 0.003374252806531564, - 0.005169266656947077, - 0.008468873013558828, - 0.16337541915731155, - 0.002873888321912815, - 0.004305000728969237, - 0.0031141565825922144, - 0.1241172182533897, - 0.0052800699810468, - 0.008969237498177577, - 0.024094474413179766, - 0.017029887738737422, - 0.01722700102055693, - 0.10618457501093455, - 0.006147834961364631, - 0.0008269427030179326, - 0.03303571949263741, - 0.024188948826359528, - 0.05213937891820965, - 0.04505846333284735, - 0.0035270447587111824, - 0.006799825047383001, - 0.0008199445983379502, - 0.02206735675754483, - 0.001010059775477475, - 0.11971191135734072, - 0.04656538854060359, - 0.011243621519171892, - 0.06513019390581717, - 0.032375564951159064, - 0.06347047674588133, - 0.013678961947805804, - 0.03309870243475726, - 0.006982942119842543, - 0.009726199154395685, - 0.010121592068814697, - 0.032514360693978714, - 0.04986032949409535, - 0.039734072022160664, - 0.15690683773144773, - 0.03949963551538125, - 0.014790494241143023, - 0.002722262720513194, - 0.02614375273363464, - 0.10753637556495116, - 0.06764834523983088, - 0.006221315060504448, - 0.021317393206006705, - 0.0030826651115322934, - 0.002399183554454002, - 0.0019069835252952323, - 0.015595276279341012, - 0.0925126111678087, - 0.18437906400349907, - 0.006538562472663654, - 0.008719638431258201, - 0.02116693395538708, - 0.18241376293920394, - 0.007290858725761773, - 0.005976381396705059, - 0.005629975215045925, - 0.09721300481119698, - 0.004810030616707975, - 0.024303251202799244, - 0.012954658113427612, - 0.011057005394372358, - 0.02733459688001166, - 0.10135121737862662, - 0.012016912086309959, - 0.001055547455897361, - 0.009027555037177431, - 0.07162326869806095, - 0.01007143898527482, - 0.07297623560285756, - 0.006741507508383147, - 0.0036891675171307776, - 0.0008409389123778977, - 0.011272780288671819, - 0.007020265344802449, - 0.1030389269572824, - 0.15350809155853623, - 0.004232686980609419, - 0.004353987461729115, - 0.0023385333138941536, - 0.14450386353695874, - 0.002546143752733635, - 0.0024470039364338824, - 0.01200758128006998, - 0.0981227584195947, - 0.003161976964572095, - 0.040695145064878264, - 0.03460446129173349, - 0.003908441463770229, - 0.01598483743986004, - 0.13107216795451232, - 0.003129319142732177, - 0.00032307916605919226, - 0.04050386353695874, - 0.05452689896486368, - 0.03589677795597026, - 0.07087097244496282, - 0.006143169558244642, - 0.008684647907858289, - 0.0004607085580988482, - 0.022010205569324977, - 0.0009097536083977258, - 0.07328765126111678, - 0.14751421490013122, - 0.008015162560139961, - 0.006601545414783497, - 0.025279486805656802, - 0.1682449336637994, - 0.008313748359819215, - 0.007010934538562473, - 0.005886572386645284, - 0.16889575739903775, - 0.004123050007289692, - 0.011925936725470185, - 0.10007289692374982, - 0.013380376148126549, - 0.009021723283277445, - 0.08650823735238372, - 0.007756232686980609, - 0.0007243038343781893, - 0.0026791077416533026, - 0.02797492345823006, - 0.032384895757399036, - 0.04187432570345531, - 0.00882461000145794, - 0.0032401224668318998, - 0.00033357632307916605, - 0.027878116343490307, - 0.0022277299897944304, - 0.14333518005540166, - 0.1725534334451086, - 0.02781629975215046, - 0.006909462020702727, - 0.005264907420906838, - 0.16661437527336345, - 0.004325995043009185, - 0.003334596880011664, - 0.005312727802886718, - 0.14024668318996938, - 0.0013261408368566844, - 0.003504884093891238, - 0.006375273363464061, - 0.04964922000291588, - 0.008290421344219274, - 0.09536783787724158, - 0.05394372357486515, - 0.005505175681586237, - 0.005339553870826651, - 0.01782067356757545, - 0.006710016037323225, - 0.05105933809593235, - 0.002983525295232541, - 0.002940370316372649, - 0.0004548768041988629, - 0.01208456043154979, - 0.000915585362297711, - 0.20146260387811635, - 0.067196967487972, - 0.006158332118384605, - 0.025438110511736407, - 0.07753783350342616, - 0.1273876658405015, - 0.009337804344656656, - 0.07683452398308792, - 0.0070412596588423975, - 0.08747164309666132, - 0.0038827817466102928, - 0.018116926665694706, - 0.005017641055547455, - 0.004567429654468581, - 0.028277008310249308, - 0.05271555620352821, - 0.004394809739029013, - 0.0013343052923166642, - 0.00411605190260971, - 0.059621519171890944, - 0.09073859163143316, - 0.01446858142586383, - 0.006770666277883074, - 0.003425572240851436, - 0.0004455459979588861, - 0.010401516256013998, - 0.005825922146085436, - 0.10833882490158916, - 0.007584779122321038, - 0.016903921854497742, - 0.02719580113719201, - 0.0304814112844438, - 0.02206385770520484, - 0.013064295086747339, - 0.02696369733197259, - 0.009581571657676046, - 0.026761918647033093, - 0.006510570053943724, - 0.021941390873305145, - 0.07042659279778393, - 0.05437410701268406, - 0.1425175681586237, - 0.027802303542790494, - 0.037690625455605774, - 0.0019606356611750987, - 0.1095623268698061, - 0.06157748942994606, - 0.044618749088788455, - 0.04955124653739612, - 0.03608689313310978, - 0.018381688292754043, - 0.003404577926811489, - 0.015036594255722409, - 0.009600233270156, - 0.10794693103951014, - 0.12447528794284882, - 0.0031981338387520046, - 0.0074716430966613205, - 0.003202799241871993, - 0.13437643971424407, - 0.006655197550663361, - 0.0036693395538708266, - 0.049338970695436656, - 0.09486863974340283, - 0.0015990669193760023, - 0.0026604461291733486, - 0.051775477474850555, - 0.0041347135150896636, - 0.005450357194926374, - 0.12030325120279925, - 0.04581309228750547, - 0.0004537104534188657, - 0.12425601399620935, - 0.025981629975215047, - 0.023926519900860182, - 0.04423385333138941, - 0.0017950138504155123, - 0.002661612479953346, - 0.0006333284735384167, - 0.008449045050298877, - 0.000653156436798367, - 0.04816678816153958, - 0.008625164018078437, - 0.0039037760606502403, - 0.005228750546726928, - 0.004531272780288672, - 0.0056672984400058316, - 0.00359585945473101, - 0.0032179618020119548, - 0.0038093016474704767, - 0.011452398308791368, - 0.002519317684793702, - 0.00280390727511299, - 0.005572824026826068, - 0.004554599795888614, - 0.004531272780288672, - 0.0035841959469310393, - 0.004400641492928998, - 0.0036670068523108326, - 0.004839189386207902, - 0.006258638285464354, - 0.004897506925207757, - 0.840776789619478, - 0.004968654322787578, - 0.002886718180492783, - 0.0019757982213150604, - 0.0018568304417553576, - 0.001691208630995772, - 0.09009243329931477, - 0.14030150167662925, - 0.013242746756086894, - 0.013746610293045632, - 0.027342761335471644, - 0.16938912377897652, - 0.006607377168683481, - 0.01661933226417845, - 0.008173786266219566, - 0.13297448607668758, - 0.0034675608689313307, - 0.016641492928998396, - 0.011722991689750693, - 0.021493512173786266, - 0.03430820819361423, - 0.10099548039072752, - 0.00873596734217816, - 0.0018323370753754193, - 0.020103222044029742, - 0.047197550663362, - 0.040833940807697915, - 0.03361189677795597, - 0.010844729552412887, - 0.005544831608106138, - 0.0007522962530981193, - 0.01525120279924187, - 0.00815512465373961, - 0.2109648636827526, - 0.058258055110074355, - 0.007181221752442048, - 0.043560868931331105, - 0.004058900714389853, - 0.10618107595859454, - 0.0062399766729844, - 0.004835690333867911, - 0.02679224376731302, - 0.08414637702288964, - 0.0030698352529523252, - 0.03637498177576906, - 0.01592885260242018, - 0.017413617145356466, - 0.008430383437818923, - 0.037231083248286924, - 0.03290275550371775, - 0.007538125091121154, - 0.004500947660008748, - 0.05932409972299169, - 0.16006764834523984, - 0.03309636973319726, - 0.007766729844000583, - 0.005225251494386936, - 0.0006321621227584196, - 0.012989648636827526, - 0.005274238227146815, - 0.1254503571949264, - 0.12852719055255868, - 0.0035433736696311416, - 0.005203090829566993, - 0.0019314768916751715, - 0.20520775623268697, - 0.002509986878553725, - 0.00343606939787141, - 0.027138649948972155, - 0.13926578218399185, - 0.004565096952908587, - 0.005614812654905963, - 0.00874413179763814, - 0.004109053797929727, - 0.008300918501239247, - 0.08270943286193323, - 0.002912377897652719, - 0.0037066627788307337, - 0.06909578655780726, - 0.03242805073625893, - 0.05237614812654906, - 0.04723487388832191, - 0.0038991106575302524, - 0.006299460562764251, - 0.00043388249015891526, - 0.020029741944889927, - 0.005311561452106721, - 0.09334072022160665, - 0.022940953491762648, - 0.024658988190698353, - 0.02901297565242747, - 0.03531593526753171, - 0.0758023035427905, - 0.013711619769645722, - 0.021597317393206007, - 0.009670214316955824, - 0.044728386062108175, - 0.010596296836273509, - 0.03264382563055839, - 0.0604822860475288, - 0.05489546581134276, - 0.11501851581863246, - 0.01837585653885406, - 0.026237060796034405, - 0.0011255285026971862, - 0.08704125965884241, - 0.10156349322058608, - 0.06660562764251349, - 0.023434319871701415, - 0.010777081207173057, - 0.005409534917626476, - 0.003123487388832191, - 0.0028762210234728096, - 0.0089995626184575, - 0.07518297127861205, - 0.2314868056568013, - 0.002226563639014434, - 0.003285610147251786, - 0.0027455897361131363, - 0.2724537104534189, - 0.0016655489138358362, - 0.0019209797346551977, - 0.0022137337804344656, - 0.17690392185449774, - 0.0014532730718763668, - 0.0024994897215337513, - 0.015302522233561744, - 0.003441901151771395, - 0.015303688584341741, - 0.09314593964134713, - 0.0017833503426155418, - 0.0005108616416387229, - 0.017828838023035427, - 0.010385187345094037, - 0.003168975069252078, - 0.01902901297565243, - 0.005525003644846187, - 0.0010088934246974776, - 0.0009272488700976819, - 0.036282840064149294, - 0.0022977110365942554, - 0.0766805656801283, - 0.22270418428342326, - 0.005283569033386791, - 0.007155562035282111, - 0.01173582154833066, - 0.1715620352821111, - 0.003925936725470185, - 0.004425134859308937, - 0.020040239101909902, - 0.14243242455168392, - 0.0016737133692958156, - 0.0066808572678232975, - 0.011980755212130047, - 0.012638577052048404, - 0.07206065024055984, - 0.08115701997375711, - 0.00710424260096224, - 0.0007278028867181805, - 0.02347630849978131, - 0.04595538708266512, - 0.01481965301064295, - 0.013925061962385188, - 0.0018125091121154687, - 0.00529173348884677, - 0.0016340574427759146, - 0.03072401224668319, - 0.0023746901880740633, - 0.25174165330223064, - 0.06673392622831317, - 0.00878378772415804, - 0.03956261845750109, - 0.010077270739174807, - 0.0844787869951888, - 0.00985216503863537, - 0.004973319725907567, - 0.01893220586091267, - 0.11200583175389998, - 0.0028715556203528212, - 0.004095057588569762, - 0.01202391019098994, - 0.01756757544831608, - 0.014825484764542934, - 0.05312961073042717, - 0.06746872721971132, - 0.003845458521650386, - 0.0210806239976673, - 0.019443067502551394, - 0.08017028721387957, - 0.01825572240851436, - 0.005365213587986587, - 0.01959702580551101, - 0.026184575010934536, - 0.02474879720075813, - 0.002171745152354571, - 0.25827321767021433, - 0.048050153083539875, - 0.01043184137629392, - 0.03930485493512174, - 0.027640180784370902, - 0.03294007872867765, - 0.006474413179763814, - 0.018314039947514214, - 0.015119405161102202, - 0.014706516984983233, - 0.005494678524566263, - 0.03309870243475726, - 0.043864120134130345, - 0.058996355153812505, - 0.06265986295378335, - 0.04633328473538417, - 0.03790756670068523, - 0.0004642076104388394, - 0.037849249161685375, - 0.08369966467415076, - 0.04999679253535501, - 0.02392768625164018, - 0.010998687855372504, - 0.009881323808135296, - 0.003867619186470331, - 0.012434465665548913, - 0.007253535500801866, - 0.11106225397288234, - 0.17624726636535937, - 0.008209943140399476, - 0.008390727511299025, - 0.012682898381688294, - 0.1825653885406036, - 0.001538416678816154, - 0.004590756670068524, - 0.008710307625018223, - 0.1299513048549351, - 0.002677941390873305, - 0.012309666132089225, - 0.014087184720804781, - 0.01199941682461, - 0.031246537396121883, - 0.07206648199445984, - 0.008254264470039366, - 0.0007033095203382417, - 0.007034261554162415, - 0.006599212713223502, - 0.013906400349905234, - 0.050098265053214755, - 0.007133401370462167, - 0.017750692520775622, - 0.0008257763522379356, - 0.03918821985712203, - 0.06015454147834961, - ); -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/CHANGELOG.md deleted file mode 100644 index f90db216..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/CHANGELOG.md +++ /dev/null @@ -1,151 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [0.5.4] - 2025-03-21 -### Changed -- Internal updates. - -## [0.5.3] - 2025-03-12 -### Changed -- Internal updates. - -## [0.5.2] - 2025-03-05 -### Changed -- Internal updates. - -## [0.5.1] - 2025-02-24 -### Changed -- Update dependencies. - -## [0.5.0] - 2024-11-14 -### Removed -- General: Update minimum PHP version to 7.2. [#40147] - -## [0.4.4] - 2024-11-04 -### Added -- Enable test coverage. [#39961] - -## [0.4.3] - 2024-09-05 -### Changed -- Update dependencies. - -## [0.4.2] - 2024-08-26 -### Changed -- Updated package dependencies. [#39004] - -## [0.4.1] - 2024-08-15 -### Fixed -- Fix incorrect next-version tokens in php `@since` and/or `@deprecated` docs. [#38869] - -## [0.4.0] - 2024-05-20 -### Deprecated -- Extract the 'is_current_request_activating_plugin_from_plugins_screen' method into Status package. [#37430] - -## [0.3.5] - 2024-05-06 -### Changed -- Internal updates. - -## [0.3.4] - 2024-04-08 -### Changed -- Internal updates. - -## [0.3.3] - 2024-03-25 -### Changed -- Internal updates. - -## [0.3.2] - 2024-03-14 -### Changed -- Internal updates. - -## [0.3.1] - 2024-01-02 -### Fixed -- Ensured that language packs are installed after installing a new plugin. [#34763] - -## [0.3.0] - 2023-11-20 -### Changed -- Updated required PHP version to >= 7.0. [#34192] - -## [0.2.6] - 2023-11-14 - -## [0.2.5] - 2023-08-23 -### Changed -- Updated package dependencies. [#32605] - -## [0.2.4] - 2023-04-10 -### Added -- Add Jetpack Autoloader package suggestion. [#29988] - -## [0.2.3] - 2023-02-20 -### Changed -- Minor internal updates. - -## [0.2.2] - 2022-12-02 -### Changed -- Updated package dependencies. [#27688] - -## [0.2.1] - 2022-11-22 -### Changed -- Updated package dependencies. [#27043] - -## [0.2.0] - 2022-08-23 -### Added -- Add method to check plugin activation context. [#25422] - -## [0.1.4] - 2022-07-26 -### Changed -- Updated package dependencies. [#25158] - -## [0.1.3] - 2022-06-21 -### Changed -- Renaming master to trunk. - -## [0.1.2] - 2022-04-26 -### Changed -- Updated package dependencies. - -## [0.1.1] - 2022-03-29 -### Added -- Set composer package type to "jetpack-library" so i18n will work. - -## 0.1.0 - 2022-02-02 -### Added -- First version -- New functions to safely check plugin statuses - -### Changed -- Build: add missing mirror repo details, so package can be deployed. - -### Fixed -- Fix method logic - -[0.5.4]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.5.3...v0.5.4 -[0.5.3]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.5.2...v0.5.3 -[0.5.2]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.5.1...v0.5.2 -[0.5.1]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.5.0...v0.5.1 -[0.5.0]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.4.4...v0.5.0 -[0.4.4]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.4.3...v0.4.4 -[0.4.3]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.4.2...v0.4.3 -[0.4.2]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.4.1...v0.4.2 -[0.4.1]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.4.0...v0.4.1 -[0.4.0]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.3.5...v0.4.0 -[0.3.5]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.3.4...v0.3.5 -[0.3.4]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.3.3...v0.3.4 -[0.3.3]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.3.2...v0.3.3 -[0.3.2]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.3.1...v0.3.2 -[0.3.1]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.3.0...v0.3.1 -[0.3.0]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.2.6...v0.3.0 -[0.2.6]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.2.5...v0.2.6 -[0.2.5]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.2.4...v0.2.5 -[0.2.4]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.2.3...v0.2.4 -[0.2.3]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.2.2...v0.2.3 -[0.2.2]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.2.1...v0.2.2 -[0.2.1]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.2.0...v0.2.1 -[0.2.0]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.1.4...v0.2.0 -[0.1.4]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.1.3...v0.1.4 -[0.1.3]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.1.2...v0.1.3 -[0.1.2]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.1.1...v0.1.2 -[0.1.1]: https://github.com/Automattic/jetpack-plugins-installer/compare/v0.1.0...v0.1.1 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/composer.json deleted file mode 100644 index 535f0a17..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/composer.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "automattic/jetpack-plugins-installer", - "description": "Handle installation of plugins from WP.org", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2", - "automattic/jetpack-a8c-mc-stats": "^3.0.4", - "automattic/jetpack-status": "^5.0.10" - }, - "require-dev": { - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "scripts": { - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" - ], - "test-php": [ - "@composer phpunit" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "branch-alias": { - "dev-trunk": "0.5.x-dev" - }, - "mirror-repo": "Automattic/jetpack-plugins-installer", - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-plugins-installer/compare/v${old}...v${new}" - }, - "autotagger": true, - "textdomain": "jetpack-plugins-installer" - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-automatic-install-skin.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-automatic-install-skin.php deleted file mode 100644 index f68a526e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-automatic-install-skin.php +++ /dev/null @@ -1,157 +0,0 @@ -fs_connect( array( WP_CONTENT_DIR, WP_PLUGIN_DIR ) ); - if ( ! $result ) { - // set the string here since they are not available just yet. - $upgrader->generic_strings(); - $this->feedback( 'fs_unavailable' ); - } - } - - /** - * Overwrites the error function - * - * @param WP_Error|mixed $error The error object. - */ - public function error( $error ) { - if ( is_wp_error( $error ) ) { - $this->feedback( $error ); - } - } - - /** - * Set the main error code. - * - * Don't set the process_failed as code since it is not that helpful unless we don't have one already set - * - * @param string $code The error code. - * @return void - */ - private function set_main_error_code( $code ) { - $this->main_error_code = ( 'process_failed' === $code && $this->main_error_code ? $this->main_error_code : $code ); - } - - /** - * Set the main error message. - * - * Don't set the process_failed as message since it is not that helpful unless we don't have one already set - * - * @param string $message The error message. - * @param string $code The error code. - * @return void - */ - private function set_main_error_message( $message, $code ) { - $this->main_error_message = ( 'process_failed' === $code && $this->main_error_message ? $this->main_error_message : $message ); - } - - /** - * Get the main error code - * - * @return string - */ - public function get_main_error_code() { - return $this->main_error_code; - } - - /** - * Get the main error message - * - * @return string - */ - public function get_main_error_message() { - return $this->main_error_message; - } - - /** - * Overwrites the feedback function - * - * @param string|array|WP_Error $data Data. - * @param mixed ...$args Optional text replacements. - */ - public function feedback( $data, ...$args ) { - - $current_error = null; - if ( is_wp_error( $data ) ) { - $this->set_main_error_code( $data->get_error_code() ); - $string = $data->get_error_message(); - } elseif ( is_array( $data ) ) { - return; - } else { - $string = $data; - } - - if ( ! empty( $this->upgrader->strings[ $string ] ) ) { - $this->set_main_error_code( $string ); - - $current_error = $string; - $string = $this->upgrader->strings[ $string ]; - } - - if ( strpos( $string, '%' ) !== false ) { - if ( ! empty( $args ) ) { - $string = vsprintf( $string, $args ); - } - } - - $string = trim( $string ); - $string = wp_kses( - $string, - array( - 'a' => array( - 'href' => true, - ), - 'br' => true, - 'em' => true, - 'strong' => true, - ) - ); - - $this->set_main_error_message( $string, $current_error ); - $this->messages[] = $string; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-plugins-installer.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-plugins-installer.php deleted file mode 100644 index c86537aa..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-plugins-installer.php +++ /dev/null @@ -1,255 +0,0 @@ -install( $zip_url ); - - if ( is_wp_error( $result ) ) { - $mc_stats->add( 'install-plugin', "fail-$slug" ); - return $result; - } - - $plugin = self::get_plugin_id_by_slug( $slug ); - $error_code = 'install_error'; - if ( ! $plugin ) { - $error = __( 'There was an error installing your plugin', 'jetpack-plugins-installer' ); - } - - if ( ! $result ) { - $error_code = $skin->get_main_error_code(); - $message = $skin->get_main_error_message(); - $error = $message ? $message : __( 'An unknown error occurred during installation', 'jetpack-plugins-installer' ); - } - - if ( ! empty( $error ) ) { - if ( 'download_failed' === $error_code ) { - // For backwards compatibility: versions prior to 3.9 would return no_package instead of download_failed. - $error_code = 'no_package'; - } - - $mc_stats->add( 'install-plugin', "fail-$slug" ); - return new WP_Error( $error_code, $error, 400 ); - } - - $mc_stats->add( 'install-plugin', "success-$slug" ); - return (array) $upgrader->skin->get_upgrade_messages(); - } - - /** - * Get WordPress.org zip download link from a plugin slug - * - * @param string $plugin_slug Plugin slug. - */ - protected static function generate_wordpress_org_plugin_download_link( $plugin_slug ) { - return "https://downloads.wordpress.org/plugin/$plugin_slug.latest-stable.zip"; - } - - /** - * Get the plugin ID (composed of the plugin slug and the name of the main plugin file) from a plugin slug. - * - * @param string $slug Plugin slug. - */ - public static function get_plugin_id_by_slug( $slug ) { - // Check if get_plugins() function exists. This is required on the front end of the - // site, since it is in a file that is normally only loaded in the admin. - if ( ! function_exists( 'get_plugins' ) ) { - require_once ABSPATH . 'wp-admin/includes/plugin.php'; - } - - /** This filter is documented in wp-admin/includes/class-wp-plugins-list-table.php */ - $plugins = apply_filters( 'all_plugins', get_plugins() ); - if ( ! is_array( $plugins ) ) { - return false; - } - - foreach ( $plugins as $plugin_file => $plugin_data ) { - if ( self::get_slug_from_file_path( $plugin_file ) === $slug ) { - return $plugin_file; - } - } - - return false; - } - - /** - * Get the plugin slug from the plugin ID (composed of the plugin slug and the name of the main plugin file) - * - * @param string $plugin_file Plugin file (ID -- e.g. hello-dolly/hello.php). - */ - protected static function get_slug_from_file_path( $plugin_file ) { - // Similar to get_plugin_slug() method. - $slug = dirname( $plugin_file ); - if ( '.' === $slug ) { - $slug = preg_replace( '/(.+)\.php$/', '$1', $plugin_file ); - } - - return $slug; - } - - /** - * Get the activation status for a plugin. - * - * @since-jetpack 8.9.0 - * - * @param string $plugin_file The plugin file to check. - * @return string Either 'network-active', 'active' or 'inactive'. - */ - public static function get_plugin_status( $plugin_file ) { - if ( self::is_plugin_active_for_network( $plugin_file ) ) { - return 'network-active'; - } - - if ( self::is_plugin_active( $plugin_file ) ) { - return 'active'; - } - - return 'inactive'; - } - - /** - * Safely checks if the plugin is active - * - * @since 0.1.0 - * - * @param string $plugin_file The plugin file to check. - * @return bool - */ - public static function is_plugin_active( $plugin_file ) { - self::ensure_plugin_functions_are_loaded(); - return is_plugin_active( $plugin_file ); - } - - /** - * Safely checks if the plugin is active for network - * - * @since 0.1.0 - * - * @param string $plugin_file The plugin file to check. - * @return bool - */ - public static function is_plugin_active_for_network( $plugin_file ) { - self::ensure_plugin_functions_are_loaded(); - return is_plugin_active_for_network( $plugin_file ); - } - - /** - * Returns a list of all plugins in the site. - * - * @since-jetpack 8.9.0 - * @uses get_plugins() - * - * @return array - */ - public static function get_plugins() { - self::ensure_plugin_functions_are_loaded(); - /** This filter is documented in wp-admin/includes/class-wp-plugins-list-table.php */ - $plugins = apply_filters( 'all_plugins', get_plugins() ); - - if ( is_array( $plugins ) && ! empty( $plugins ) ) { - foreach ( $plugins as $plugin_slug => $plugin_data ) { - $plugins[ $plugin_slug ]['active'] = in_array( - self::get_plugin_status( $plugin_slug ), - array( 'active', 'network-active' ), - true - ); - } - return $plugins; - } - - return array(); - } - - /** - * Determine if the current request is activating a plugin from the plugins page. - * - * @deprecated 0.4.0 - * @see Paths::is_current_request_activating_plugin_from_plugins_screen() - * - * @param string $plugin Plugin file path to check. - * @return bool - */ - public static function is_current_request_activating_plugin_from_plugins_screen( $plugin ) { - _deprecated_function( __METHOD__, '0.4.0', 'Automattic\\Jetpack\\Paths::is_current_request_activating_plugin_from_plugins_screen()' ); - return ( new Paths() )->is_current_request_activating_plugin_from_plugins_screen( $plugin ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/CHANGELOG.md deleted file mode 100644 index 4b6c42cb..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/CHANGELOG.md +++ /dev/null @@ -1,74 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [0.5.4] - 2025-03-21 -### Changed -- Internal updates. - -## [0.5.3] - 2025-03-12 -### Changed -- Internal updates. - -## [0.5.2] - 2025-03-05 -### Changed -- Internal updates. - -## [0.5.1] - 2025-02-24 -### Changed -- Update dependencies. - -## [0.5.0] - 2025-02-10 -### Changed -- Combine vulnerabilities for the same extension into single vulnerable extension threats. [#40863] - -## [0.4.2] - 2025-02-03 -### Changed -- Internal updates. - -## [0.4.1] - 2024-11-25 -### Changed -- Updated dependencies. [#40286] - -## [0.4.0] - 2024-11-14 -### Added -- Added threats property to protect status. [#40097] - -### Removed -- General: Update minimum PHP version to 7.2. [#40147] - -## [0.3.1] - 2024-11-04 -### Added -- Enable test coverage. [#39961] - -## [0.3.0] - 2024-09-23 -### Changed -- Adds a fixable_threats status property [#39125] - -## [0.2.1] - 2024-08-26 -### Changed -- Updated package dependencies. [#39004] - -## [0.2.0] - 2024-08-09 -### Added -- Add Scan History model. [#38117] - -## 0.1.0 - 2024-07-15 -### Added -- Initial version. [#37864] - -[0.5.4]: https://github.com/Automattic/jetpack-protect-models/compare/v0.5.3...v0.5.4 -[0.5.3]: https://github.com/Automattic/jetpack-protect-models/compare/v0.5.2...v0.5.3 -[0.5.2]: https://github.com/Automattic/jetpack-protect-models/compare/v0.5.1...v0.5.2 -[0.5.1]: https://github.com/Automattic/jetpack-protect-models/compare/v0.5.0...v0.5.1 -[0.5.0]: https://github.com/Automattic/jetpack-protect-models/compare/v0.4.2...v0.5.0 -[0.4.2]: https://github.com/Automattic/jetpack-protect-models/compare/v0.4.1...v0.4.2 -[0.4.1]: https://github.com/Automattic/jetpack-protect-models/compare/v0.4.0...v0.4.1 -[0.4.0]: https://github.com/Automattic/jetpack-protect-models/compare/v0.3.1...v0.4.0 -[0.3.1]: https://github.com/Automattic/jetpack-protect-models/compare/v0.3.0...v0.3.1 -[0.3.0]: https://github.com/Automattic/jetpack-protect-models/compare/v0.2.1...v0.3.0 -[0.2.1]: https://github.com/Automattic/jetpack-protect-models/compare/v0.2.0...v0.2.1 -[0.2.0]: https://github.com/Automattic/jetpack-protect-models/compare/v0.1.0...v0.2.0 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/composer.json deleted file mode 100644 index 05f99105..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/composer.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "automattic/jetpack-protect-models", - "description": "This package contains the models used in Protect. ", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2", - "automattic/jetpack-redirect": "^3.0.5" - }, - "require-dev": { - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-test-environment": "@dev", - "automattic/phpunit-select-config": "^1.0.1" - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "scripts": { - "build-development": "echo 'Add your build step to composer.json, please!'", - "build-production": "echo 'Add your build step to composer.json, please!'", - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" - ], - "test-php": [ - "@composer phpunit" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "autotagger": true, - "branch-alias": { - "dev-trunk": "0.5.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-protect-models/compare/v${old}...v${new}" - }, - "mirror-repo": "Automattic/jetpack-protect-models", - "textdomain": "jetpack-protect-models", - "version-constants": { - "::PACKAGE_VERSION": "src/class-protect-models.php" - } - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "config": { - "allow-plugins": { - "roots/wordpress-core-installer": true - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-extension-model.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-extension-model.php deleted file mode 100644 index 8934ecc2..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-extension-model.php +++ /dev/null @@ -1,116 +0,0 @@ - - */ - public $threats = array(); - - /** - * Whether the extension has been checked for threats. - * - * @var null|bool - */ - public $checked; - - /** - * The type of extension ("plugins", "themes", or "core"). - * - * @var null|string - */ - public $type; - - /** - * Extension Model Constructor - * - * @param array|object $extension Extension data to load into the model instance. - */ - public function __construct( $extension = array() ) { - if ( is_object( $extension ) ) { - $extension = (array) $extension; - } - - foreach ( $extension as $property => $value ) { - if ( property_exists( $this, $property ) ) { - // use the property's setter method when possible - if ( method_exists( $this, "set_$property" ) ) { - $this->{ "set_$property" }( $value ); - continue; - } - - // otherwise, map the value directly into the class property - $this->$property = $value; - } - } - } - - /** - * Set Threats - * - * @deprecated 0.4.0 This method is deprecated. Use Threat_Model::$extension instead. - * - * @param array $threats An array of threat data to add to the extension. - */ - public function set_threats( $threats ) { - if ( ! is_array( $threats ) ) { - // @phan-suppress-next-line PhanDeprecatedProperty -- Maintaining backwards compatibility. - $this->threats = array(); - return; - } - - // convert each provided threat item into an instance of Threat_Model - $threats = array_map( - function ( $threat ) { - if ( is_a( $threat, 'Threat_Model' ) ) { - return $threat; - } - - if ( is_object( $threat ) ) { - $threat = (array) $threat; - } - - return new Threat_Model( $threat ); - }, - $threats - ); - - // @phan-suppress-next-line PhanDeprecatedProperty -- Maintaining backwards compatibility. - $this->threats = $threats; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-history-model.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-history-model.php deleted file mode 100644 index 46631b73..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-history-model.php +++ /dev/null @@ -1,144 +0,0 @@ - - */ - public $threats = array(); - - /** - * Whether there was an error loading the history. - * - * @var bool - */ - public $error = false; - - /** - * The error code thrown when loading the history. - * - * @var string - */ - public $error_code; - - /** - * The error message thrown when loading the history. - * - * @var string - */ - public $error_message; - - /** - * The number of threats. - * - * @deprecated 0.4.0 This property is deprecated. Count History_Model::$threats instead. - * - * @var int - */ - public $num_threats; - - /** - * The number of core threats. - * - * @deprecated 0.4.0 This property is deprecated. Filter and count History_Model::$threats instead. - * - * @var int - */ - public $num_core_threats; - - /** - * The number of plugin threats. - * - * @deprecated 0.4.0 This property is deprecated. Filter and count History_Model::$threats instead. - * - * @var int - */ - public $num_plugins_threats; - - /** - * The number of theme threats. - * - * @deprecated 0.4.0 This property is deprecated. Filter and count History_Model::$threats instead. - * - * @var int - */ - public $num_themes_threats; - - /** - * WordPress core. - * - * @deprecated 0.4.0 This property is deprecated. Use History_Model::$threats instead. - * - * @var array - */ - public $core = array(); - - /** - * Status themes. - * - * @deprecated 0.4.0 This property is deprecated. Filter and use History_Model::$threats instead. - * - * @var array - */ - public $themes = array(); - - /** - * Status plugins. - * - * @deprecated 0.4.0 This property is deprecated. Filter and use History_Model::$threats instead. - * - * @var array - */ - public $plugins = array(); - - /** - * File threats. - * - * @deprecated 0.4.0 This property is deprecated. Filter and use History_Model::$threats instead. - * - * @var array - */ - public $files = array(); - - /** - * Database threats. - * - * @deprecated 0.4.0 This property is deprecated. Filter and use History_Model::$threats instead. - * - * @var array - */ - public $database = array(); - - /** - * Status constructor. - * - * @param array $history The history data to load into the class instance. - */ - public function __construct( $history = array() ) { - foreach ( $history as $property => $value ) { - if ( property_exists( $this, $property ) ) { - $this->$property = $value; - } - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-protect-models.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-protect-models.php deleted file mode 100644 index 5e320725..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-protect-models.php +++ /dev/null @@ -1,16 +0,0 @@ - - */ - public $threats = array(); - - /** - * List of fixable threat IDs. - * - * @var string[] - */ - public $fixable_threat_ids = array(); - - /** - * Whether the site includes items that have not been checked. - * - * @var boolean - */ - public $has_unchecked_items; - - /** - * The estimated percentage of the current scan. - * - * @var int - */ - public $current_progress; - - /** - * Whether there was an error loading the status. - * - * @var bool - */ - public $error = false; - - /** - * The error code thrown when loading the status. - * - * @var string - */ - public $error_code; - - /** - * The error message thrown when loading the status. - * - * @var string - */ - public $error_message; - - /** - * The number of threats. - * - * @deprecated 0.4.0 This property is deprecated. Count Status_Model::$threats instead. - * - * @var int - */ - public $num_threats; - - /** - * The number of plugin threats. - * - * @deprecated 0.4.0 This property is deprecated. Filter and count Status_Model::$threats instead. - * - * @var int - */ - public $num_plugins_threats; - - /** - * The number of theme threats. - * - * @deprecated 0.4.0 This property is deprecated. Filter and count Status_Model::$threats instead. - * - * @var int - */ - public $num_themes_threats; - - /** - * WordPress core status. - * - * @deprecated 0.4.0 This property is deprecated. Filter and use Status_Model::$threats instead. - * - * @var object - */ - public $core; - - /** - * Status themes. - * - * @deprecated 0.4.0 This property is deprecated. Filter and use Status_Model::$threats instead. - * - * @var array - */ - public $themes = array(); - - /** - * Status plugins. - * - * @deprecated 0.4.0 This property is deprecated. Filter and use Status_Model::$threats instead. - * - * @var array - */ - public $plugins = array(); - - /** - * File threats. - * - * @deprecated 0.4.0 This property is deprecated. Filter and use Status_Model::$threats instead. - * - * @var array - */ - public $files = array(); - - /** - * Database threats. - * - * @deprecated 0.4.0 This property is deprecated. Filter and use Status_Model::$threats instead. - * - * @var array - */ - public $database = array(); - - /** - * Status constructor. - * - * @param array $status The status data to load into the class instance. - */ - public function __construct( $status = array() ) { - // set status defaults - // @phan-suppress-next-line PhanDeprecatedProperty -- Maintaining backwards compatibility. - $this->core = new \stdClass(); - - foreach ( $status as $property => $value ) { - if ( property_exists( $this, $property ) ) { - $this->$property = $value; - } - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-threat-model.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-threat-model.php deleted file mode 100644 index 01fa763f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-threat-model.php +++ /dev/null @@ -1,265 +0,0 @@ - $value ) { - if ( 'extension' === $property && ! empty( $value ) ) { - $this->extension = new Extension_Model( $value ); - continue; - } - if ( property_exists( $this, $property ) ) { - $this->$property = $value; - } - } - } - - /** - * Get the ID value of the threat based on its related extension and vulnerabilities. - * - * @since 0.5.0 - * - * @param Extension_Model $extension The extension to get the ID from. - * - * @return string - */ - private static function get_id_from_vulnerable_extension( Extension_Model $extension ) { - return "$extension->type-$extension->slug-$extension->version"; - } - - /** - * Get the title from a vulnerable extension. - * - * @since 0.5.0 - * - * @param Extension_Model $extension The extension to get the title from. - * - * @return string|null - */ - private static function get_title_from_vulnerable_extension( Extension_Model $extension ) { - $titles = array( - 'plugins' => sprintf( - /* translators: placeholders are the theme name and version number. Example: "Vulnerable theme: Jetpack (version 1.2.3)" */ - __( 'Vulnerable plugin: %1$s (version %2$s)', 'jetpack-protect-models' ), - $extension->name, - $extension->version - ), - 'themes' => sprintf( - /* translators: placeholders are the theme name and version number. Example: "Vulnerable theme: Jetpack (version 1.2.3)" */ - __( 'Vulnerable theme: %1$s (version %2$s)', 'jetpack-protect-models' ), - $extension->name, - $extension->version - ), - 'core' => sprintf( - /* translators: placeholder is the version number. Example: "Vulnerable WordPress (version 1.2.3)" */ - __( 'Vulnerable WordPress (version %s)', 'jetpack-protect-models' ), - $extension->version - ), - ); - - return $titles[ $extension->type ] ?? null; - } - - /** - * Get the description from a vulnerable extension. - * - * @since 0.5.0 - * - * @param Extension_Model $extension The extension to get the description from. - * @param array $vulnerabilities The vulnerabilities to get the description from. - * - * @return string - */ - private static function get_description_from_vulnerable_extension( Extension_Model $extension, array $vulnerabilities ) { - return sprintf( - /* translators: placeholders are the theme name and version number. Example: "The installed version of Jetpack (1.2.3) has a known security vulnerability." */ - _n( 'The installed version of %1$s (%2$s) has a known security vulnerability.', 'The installed version of %1$s (%2$s) has known security vulnerabilities.', count( $vulnerabilities ), 'jetpack-protect-models' ), - $extension->name, - $extension->version - ); - } - - /** - * Get the latest fixed_in version from a list of vulnerabilities. - * - * @since 0.5.0 - * - * @param array $vulnerabilities The vulnerabilities to get the fixed_in version from. - * - * @return string|bool|null The latest fixed_in version, or false if any of the vulnerabilities are not fixed. - */ - private static function get_fixed_in_from_vulnerabilities( array $vulnerabilities ) { - $fixed_in = null; - - foreach ( $vulnerabilities as $vulnerability ) { - // If any of the vulnerabilities are not fixed, the threat is not fixed. - if ( ! $vulnerability->fixed_in ) { - break; - } - - // Use the latest available fixed_in version. - if ( ! $fixed_in || ( $fixed_in && version_compare( $vulnerability->fixed_in, $fixed_in, '>' ) ) ) { - $fixed_in = $vulnerability->fixed_in; - } - } - - return $fixed_in; - } - - /** - * Generate a threat from extension vulnerabilities. - * - * @since 0.5.0 - * - * @param Extension_Model $extension The extension to generate the threat for. - * @param Vulnerability_Model[] $vulnerabilities The vulnerabilities to generate the threat from. - * - * @return Threat_Model - */ - public static function generate_from_extension_vulnerabilities( Extension_Model $extension, array $vulnerabilities ) { - return new Threat_Model( - array( - 'id' => self::get_id_from_vulnerable_extension( $extension ), - 'title' => self::get_title_from_vulnerable_extension( $extension ), - 'description' => self::get_description_from_vulnerable_extension( $extension, $vulnerabilities ), - 'fixed_in' => self::get_fixed_in_from_vulnerabilities( $vulnerabilities ), - 'vulnerabilities' => $vulnerabilities, - ) - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-vulnerability-model.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-vulnerability-model.php deleted file mode 100644 index b0f27e97..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-models/src/class-vulnerability-model.php +++ /dev/null @@ -1,94 +0,0 @@ - $value ) { - if ( property_exists( $this, $property ) ) { - $this->$property = $value; - } - } - - // Ensure the source URL is set. - $this->get_source(); - } - - /** - * Get the source URL for the vulnerability. - * - * @return string - */ - public function get_source() { - if ( empty( $this->source ) && $this->id ) { - $this->source = Redirect::get_url( 'jetpack-protect-vul-info', array( 'path' => $this->id ) ); - } - - return $this->source; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/CHANGELOG.md deleted file mode 100644 index 89602425..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/CHANGELOG.md +++ /dev/null @@ -1,133 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [0.5.8] - 2025-03-21 -### Changed -- Internal updates. - -## [0.5.7] - 2025-03-18 -### Changed -- Update dependencies. - -## [0.5.6] - 2025-03-17 -### Changed -- Internal updates. - -## [0.5.5] - 2025-03-12 -### Changed -- Internal updates. - -## [0.5.4] - 2025-03-05 -### Changed -- Internal updates. - -## [0.5.3] - 2025-03-03 -### Changed -- Internal updates. - -## [0.5.2] - 2025-02-24 -### Changed -- Update dependencies. - -## [0.5.1] - 2025-02-11 -### Fixed -- Protect Status: Ensure vulnerabilities property is always an array. [#41694] - -## [0.5.0] - 2025-02-10 -### Changed -- Combine multiple vulnerability results for the same extension into a single vulnerable extension threat result. [#40863] - -## [0.4.3] - 2025-02-03 -### Fixed -- Code: Remove extra params on function calls. [#41263] -- Fix a bug when core version data is not interpreted correctly from the report data response. [#41503] - -## [0.4.2] - 2025-01-20 -### Fixed -- Fix Current_Plan::supports() call from breaking cache on every call. [#41010] - -## [0.4.1] - 2024-12-23 -### Fixed -- Fix PHP warnings caused by uninstalled extensions. [#40622] - -## [0.4.0] - 2024-12-04 -### Added -- Add extension data to threats. [#40400] - -## [0.3.1] - 2024-11-25 -### Changed -- Updated dependencies. [#40286] - -## [0.3.0] - 2024-11-14 -### Added -- Added threats property to protect status. [#40097] - -### Removed -- General: Update minimum PHP version to 7.2. [#40147] - -## [0.2.2] - 2024-11-04 -### Added -- Enable test coverage. [#39961] - -## [0.2.1] - 2024-10-29 -### Changed -- Internal updates. - -## [0.2.0] - 2024-09-23 -### Changed -- Adds a fixable_threats status property [#39125] - -## [0.1.5] - 2024-09-05 -### Changed -- Update dependencies. - -## [0.1.4] - 2024-09-05 -### Changed -- Update dependencies. - -## [0.1.3] - 2024-08-26 -### Changed -- Updated package dependencies. [#39004] - -## [0.1.2] - 2024-08-19 -### Changed -- Internal updates. - -## [0.1.1] - 2024-08-09 -### Changed -- Update dependencies. - -## 0.1.0 - 2024-07-15 -### Added -- Initial version. [#37894] - -### Changed -- Updated package dependencies. [#37894] - -[0.5.8]: https://github.com/Automattic/jetpack-protect-status/compare/v0.5.7...v0.5.8 -[0.5.7]: https://github.com/Automattic/jetpack-protect-status/compare/v0.5.6...v0.5.7 -[0.5.6]: https://github.com/Automattic/jetpack-protect-status/compare/v0.5.5...v0.5.6 -[0.5.5]: https://github.com/Automattic/jetpack-protect-status/compare/v0.5.4...v0.5.5 -[0.5.4]: https://github.com/Automattic/jetpack-protect-status/compare/v0.5.3...v0.5.4 -[0.5.3]: https://github.com/Automattic/jetpack-protect-status/compare/v0.5.2...v0.5.3 -[0.5.2]: https://github.com/Automattic/jetpack-protect-status/compare/v0.5.1...v0.5.2 -[0.5.1]: https://github.com/Automattic/jetpack-protect-status/compare/v0.5.0...v0.5.1 -[0.5.0]: https://github.com/Automattic/jetpack-protect-status/compare/v0.4.3...v0.5.0 -[0.4.3]: https://github.com/Automattic/jetpack-protect-status/compare/v0.4.2...v0.4.3 -[0.4.2]: https://github.com/Automattic/jetpack-protect-status/compare/v0.4.1...v0.4.2 -[0.4.1]: https://github.com/Automattic/jetpack-protect-status/compare/v0.4.0...v0.4.1 -[0.4.0]: https://github.com/Automattic/jetpack-protect-status/compare/v0.3.1...v0.4.0 -[0.3.1]: https://github.com/Automattic/jetpack-protect-status/compare/v0.3.0...v0.3.1 -[0.3.0]: https://github.com/Automattic/jetpack-protect-status/compare/v0.2.2...v0.3.0 -[0.2.2]: https://github.com/Automattic/jetpack-protect-status/compare/v0.2.1...v0.2.2 -[0.2.1]: https://github.com/Automattic/jetpack-protect-status/compare/v0.2.0...v0.2.1 -[0.2.0]: https://github.com/Automattic/jetpack-protect-status/compare/v0.1.5...v0.2.0 -[0.1.5]: https://github.com/Automattic/jetpack-protect-status/compare/v0.1.4...v0.1.5 -[0.1.4]: https://github.com/Automattic/jetpack-protect-status/compare/v0.1.3...v0.1.4 -[0.1.3]: https://github.com/Automattic/jetpack-protect-status/compare/v0.1.2...v0.1.3 -[0.1.2]: https://github.com/Automattic/jetpack-protect-status/compare/v0.1.1...v0.1.2 -[0.1.1]: https://github.com/Automattic/jetpack-protect-status/compare/v0.1.0...v0.1.1 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/composer.json deleted file mode 100644 index 192476b9..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/composer.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "automattic/jetpack-protect-status", - "description": "This package contains the Protect Status API functionality to retrieve a site's scan status (WordPress, Themes, and Plugins threats).", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2", - "automattic/jetpack-connection": "^6.7.7", - "automattic/jetpack-plugins-installer": "^0.5.4", - "automattic/jetpack-sync": "^4.9.2", - "automattic/jetpack-protect-models": "^0.5.4", - "automattic/jetpack-plans": "^0.6.1" - }, - "require-dev": { - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-test-environment": "@dev", - "automattic/phpunit-select-config": "^1.0.1" - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "scripts": { - "build-development": "echo 'Add your build step to composer.json, please!'", - "build-production": "echo 'Add your build step to composer.json, please!'", - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" - ], - "test-php": [ - "@composer phpunit" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "config": { - "allow-plugins": { - "roots/wordpress-core-installer": true - } - }, - "extra": { - "autotagger": true, - "branch-alias": { - "dev-trunk": "0.5.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-protect-status/compare/v${old}...v${new}" - }, - "mirror-repo": "Automattic/jetpack-protect-status", - "textdomain": "jetpack-protect-status", - "version-constants": { - "::PACKAGE_VERSION": "src/class-status.php" - } - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-plan.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-plan.php deleted file mode 100644 index 878101ea..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-plan.php +++ /dev/null @@ -1,111 +0,0 @@ - ( self::CACHE_VALIDITY_PERIOD ); - } - - /** - * Gets the product list from the user cache - */ - private static function get_product_from_cache() { - return get_user_meta( get_current_user_id(), self::CACHE_META_NAME, true ); - } - - /** - * Gets the product data - * - * @param string $wpcom_product The product slug. - * @return array - */ - public static function get_product( $wpcom_product = 'jetpack_scan' ) { - if ( ! self::is_cache_old() ) { - return self::get_product_from_cache(); - } - - $request_url = 'https://public-api.wordpress.com/rest/v1.1/products?locale=' . get_user_locale() . '&type=jetpack'; - $wpcom_request = wp_remote_get( esc_url_raw( $request_url ) ); - $response_code = wp_remote_retrieve_response_code( $wpcom_request ); - - if ( 200 === $response_code ) { - $products = json_decode( wp_remote_retrieve_body( $wpcom_request ) ); - - // Pick the desired product... - $product = $products->{$wpcom_product}; - - // ... and store it into the cache. - update_user_meta( get_current_user_id(), self::CACHE_DATE_META_NAME, time() ); - update_user_meta( get_current_user_id(), self::CACHE_META_NAME, $product ); - - return $product; - } - - return new \WP_Error( - 'failed_to_fetch_data', - esc_html__( 'Unable to fetch the requested data.', 'jetpack-protect-status' ), - array( - 'status' => $response_code, - 'request' => $wpcom_request, - ) - ); - } - - /** - * Has Required Plan - * - * @param bool $force_refresh Refresh the local plan cache from wpcom. - * @return bool True when the site has a plan or product that supports the paid Protect tier. - */ - public static function has_required_plan( $force_refresh = false ) { - static $has_scan = null; - if ( null === $has_scan || $force_refresh ) { - $products = array_column( Current_Plan::get_products(), 'product_slug' ); - - // Check for a plan or product that enables scan. - $plan_supports_scan = Current_Plan::supports( 'scan', $force_refresh ); - $has_scan_product = count( array_intersect( array( 'jetpack_scan', 'jetpack_scan_monthly' ), $products ) ) > 0; - $has_scan = $plan_supports_scan || $has_scan_product; - } - - return $has_scan; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-protect-status.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-protect-status.php deleted file mode 100644 index 08a64541..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-protect-status.php +++ /dev/null @@ -1,340 +0,0 @@ - true, - 'error_code' => $status->get_error_code(), - 'error_message' => $status->get_error_message(), - ) - ); - } else { - $status = self::normalize_protect_report_data( $status ); - } - - self::$status = $status; - return $status; - } - - /** - * Gets the WPCOM API endpoint - * - * @return WP_Error|string - */ - public static function get_api_url() { - $blog_id = Jetpack_Options::get_option( 'id' ); - $is_connected = ( new Connection_Manager() )->is_connected(); - - if ( ! $blog_id || ! $is_connected ) { - return new WP_Error( 'site_not_connected' ); - } - - $api_url = sprintf( self::REST_API_BASE, $blog_id ); - - return $api_url; - } - - /** - * Fetches the status from WPCOM servers - * - * @return WP_Error|array - */ - public static function fetch_from_server() { - $api_url = self::get_api_url(); - if ( is_wp_error( $api_url ) ) { - return $api_url; - } - - $response = Client::wpcom_json_api_request_as_blog( - self::get_api_url(), - '2', - array( - 'method' => 'GET', - 'timeout' => 30, - ), - null, - 'wpcom' - ); - - $response_code = wp_remote_retrieve_response_code( $response ); - - if ( is_wp_error( $response ) || 200 !== $response_code || empty( $response['body'] ) ) { - return new WP_Error( 'failed_fetching_status', 'Failed to fetch Protect Status data from server', array( 'status' => $response_code ) ); - } - - $body = json_decode( wp_remote_retrieve_body( $response ) ); - self::update_status_option( $body ); - return $body; - } - - /** - * Normalize data from the Protect Report data source. - * - * @phan-suppress PhanDeprecatedProperty -- Maintaining backwards compatibility. - * - * @param object $report_data Data from the Protect Report. - * @return Status_Model - */ - protected static function normalize_protect_report_data( $report_data ) { - $status = new Status_Model(); - $status->data_source = 'protect_report'; - - // map report data properties directly into the Status_Model - $status->status = isset( $report_data->status ) ? $report_data->status : null; - $status->last_checked = isset( $report_data->last_checked ) ? $report_data->last_checked : null; - $status->num_threats = isset( $report_data->num_vulnerabilities ) ? $report_data->num_vulnerabilities : null; - $status->num_themes_threats = isset( $report_data->num_themes_vulnerabilities ) ? $report_data->num_themes_vulnerabilities : null; - $status->num_plugins_threats = isset( $report_data->num_plugins_vulnerabilities ) ? $report_data->num_plugins_vulnerabilities : null; - $status->has_unchecked_items = false; - - // normalize extension information - self::normalize_extension_data( $status, $report_data, 'themes' ); - self::normalize_extension_data( $status, $report_data, 'plugins' ); - self::normalize_core_data( $status, $report_data ); - - // sort extensions by number of threats - $status->themes = self::sort_threats( $status->themes ); - $status->plugins = self::sort_threats( $status->plugins ); - - return $status; - } - - /** - * Normalize theme and plugin information from the Protect Report data source. - * - * @phan-suppress PhanDeprecatedProperty -- Maintaining backwards compatibility. - * - * @param object $status The status object to normalize. - * @param object $report_data Data from the Protect Report. - * @param string $extension_type The type of extension to normalize. Either 'themes' or 'plugins'. - * - * @return void - */ - protected static function normalize_extension_data( &$status, $report_data, $extension_type ) { - if ( ! in_array( $extension_type, array( 'plugins', 'themes' ), true ) ) { - return; - } - - $installed_extensions = 'plugins' === $extension_type ? Plugins_Installer::get_plugins() : Sync_Functions::get_themes(); - $checked_extensions = isset( $report_data->{ $extension_type } ) ? $report_data->{ $extension_type } : new \stdClass(); - - /** - * Extension slug <=> threats data map. - * - * @var Extension_Model[] $extension_threats Array of Extension_Model objects indexed by slug. - */ - $extension_threats = array(); - - // Initialize the extension threats map with all extensions currently installed on the site - foreach ( $installed_extensions as $slug => $installed_extension ) { - $extension_threats[ $slug ] = new Extension_Model( - array( - 'slug' => $slug, - 'name' => $installed_extension['Name'], - 'version' => $installed_extension['Version'], - 'type' => $extension_type, - 'checked' => isset( $checked_extensions->{ $slug } ), - ) - ); - } - - foreach ( $checked_extensions as $slug => $checked_extension ) { - $installed_extension = $installed_extensions[ $slug ] ?? null; - - // extension is no longer installed on the site - if ( ! $installed_extension ) { - continue; - } - - $extension = new Extension_Model( - array( - 'name' => $installed_extension['Name'], - 'version' => $installed_extension['Version'], - 'slug' => $slug, - 'checked' => false, - 'type' => $extension_type, - ) - ); - - // extension version has changed since the report - if ( $installed_extension['Version'] !== $checked_extension->version ) { - // maintain $status->{ themes|plugins } for backwards compatibility. - $extension_threats[ $slug ] = $extension; - continue; - } - - $extension->checked = true; - $extension_threats[ $slug ] = $extension; - - if ( is_array( $checked_extension->vulnerabilities ) && ! empty( $checked_extension->vulnerabilities ) ) { - // normalize the vulnerabilities data - $vulnerabilities = array_map( - function ( $vulnerability ) { - return new Vulnerability_Model( $vulnerability ); - }, - $checked_extension->vulnerabilities - ); - - // convert the detected vulnerabilities into a vulnerable extension threat - $threat = Threat_Model::generate_from_extension_vulnerabilities( $extension, $vulnerabilities ); - - $threat_extension = clone $extension; - $extension_threat = clone $threat; - - $extension_threat->extension = null; - $extension_threats[ $slug ]->threats[] = $extension_threat; - - $threat->extension = $threat_extension; - $status->threats[] = $threat; - } - } - - $status->{ $extension_type } = array_values( $extension_threats ); - } - - /** - * Normalize the core information from the Protect Report data source. - * - * @phan-suppress PhanDeprecatedProperty -- Maintaining backwards compatibility. - * - * @param object $status The status object to normalize. - * @param object $report_data Data from the Protect Report. - * - * @return void - */ - protected static function normalize_core_data( &$status, $report_data ) { - global $wp_version; - - // Ensure the report data has the core property. - if ( ! isset( $report_data->core ) || ! $report_data->core - || ! isset( $report_data->core->version ) || ! $report_data->core->version ) { - $report_data->core = new \stdClass(); - $report_data->core->version = new \stdClass(); - } - - $core = new Extension_Model( - array( - 'type' => 'core', - 'name' => 'WordPress', - 'slug' => 'wordpress', - 'version' => $wp_version, - 'checked' => false, - ) - ); - - // Core version has changed since the report. - if ( $report_data->core->version !== $wp_version ) { - // Maintain $status->core for backwards compatibility. - $status->core = $core; - return; - } - - // If we've made it this far, the core version has been checked. - $core->checked = true; - - // Generate a threat from core vulnerabilities. - if ( is_array( $report_data->core->vulnerabilities ) && ! empty( $report_data->core->vulnerabilities ) ) { - // normalize the vulnerabilities data - $vulnerabilities = array_map( - function ( $vulnerability ) { - return new Vulnerability_Model( $vulnerability ); - }, - $report_data->core->vulnerabilities - ); - - // convert the detected vulnerabilities into a vulnerable extension threat - $threat = Threat_Model::generate_from_extension_vulnerabilities( $core, $vulnerabilities ); - - $threat_extension = clone $core; - $extension_threat = clone $threat; - - $core->threats[] = $extension_threat; - $threat->extension = $threat_extension; - - $status->threats[] = $threat; - } - - $status->core = $core; - } - - /** - * Sort By Threats - * - * @param array $threats Array of threats to sort. - * - * @return array The sorted $threats array. - */ - protected static function sort_threats( $threats ) { - usort( - $threats, - function ( $a, $b ) { - return count( $a->threats ) - count( $b->threats ); - } - ); - - return $threats; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-rest-controller.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-rest-controller.php deleted file mode 100644 index 77ff6019..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-rest-controller.php +++ /dev/null @@ -1,112 +0,0 @@ - \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::api_check_plan', - 'permission_callback' => function () { - return current_user_can( 'manage_options' ); - }, - ) - ); - - register_rest_route( - 'jetpack-protect/v1', - 'status', - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::api_get_status', - 'permission_callback' => function () { - return current_user_can( 'manage_options' ); - }, - ) - ); - - register_rest_route( - 'jetpack-protect/v1', - 'clear-scan-cache', - array( - 'methods' => \WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::api_clear_scan_cache', - 'permission_callback' => function () { - return current_user_can( 'manage_options' ); - }, - ) - ); - } - - /** - * Return site plan data for the API endpoint - * - * @return WP_REST_Response - */ - public static function api_check_plan() { - $has_required_plan = Plan::has_required_plan(); - - return rest_ensure_response( $has_required_plan ); - } - - /** - * Return Protect Status for the API endpoint - * - * @param WP_REST_Request $request The request object. - * - * @return WP_REST_Response - */ - public static function api_get_status( $request ) { - $status = Status::get_status( $request['hard_refresh'] ); - return rest_ensure_response( $status ); - } - - /** - * Clear the Scan_Status cache for the API endpoint - * - * @return WP_REST_Response - */ - public static function api_clear_scan_cache() { - $cache_cleared = Scan_Status::delete_option(); - - if ( ! $cache_cleared ) { - return new WP_REST_Response( 'An error occured while attempting to clear the Jetpack Scan cache.', 500 ); - } - - return new WP_REST_Response( 'Jetpack Scan cache cleared.' ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-scan-status.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-scan-status.php deleted file mode 100644 index 580a3780..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-scan-status.php +++ /dev/null @@ -1,343 +0,0 @@ - true, - 'error_code' => $status->get_error_code(), - 'error_message' => $status->get_error_message(), - ) - ); - } else { - $status = self::normalize_api_data( $status ); - } - - self::$status = $status; - return $status; - } - - /** - * Gets the Scan API endpoint - * - * @return WP_Error|string - */ - public static function get_api_url() { - $blog_id = Jetpack_Options::get_option( 'id' ); - $is_connected = ( new Connection_Manager() )->is_connected(); - - if ( ! $blog_id || ! $is_connected ) { - return new WP_Error( 'site_not_connected' ); - } - - $api_url = sprintf( self::SCAN_API_BASE, $blog_id ); - - return $api_url; - } - - /** - * Fetches the status data from the Scan API - * - * @return WP_Error|array - */ - public static function fetch_from_api() { - $api_url = self::get_api_url(); - if ( is_wp_error( $api_url ) ) { - return $api_url; - } - - $response = Client::wpcom_json_api_request_as_blog( - self::get_api_url(), - '2', - array( - 'method' => 'GET', - 'timeout' => 30, - ), - null, - 'wpcom' - ); - - $response_code = wp_remote_retrieve_response_code( $response ); - - if ( is_wp_error( $response ) || 200 !== $response_code || empty( $response['body'] ) ) { - return new WP_Error( 'failed_fetching_status', 'Failed to fetch Scan data from the server', array( 'status' => $response_code ) ); - } - - $body = json_decode( wp_remote_retrieve_body( $response ) ); - self::update_status_option( $body ); - return $body; - } - - /** - * Normalize API Data - * - * Formats the payload from the Scan API into an instance of Status_Model. - * - * @phan-suppress PhanDeprecatedProperty -- Maintaining backwards compatibility. - * - * @param object $scan_data The data returned by the scan API. - * - * @return Status_Model - */ - private static function normalize_api_data( $scan_data ) { - global $wp_version; - - $installed_plugins = Plugins_Installer::get_plugins(); - $installed_themes = Sync_Functions::get_themes(); - - $plugins = array(); - $themes = array(); - $core = new Extension_Model( - array( - 'name' => 'WordPress', - 'slug' => 'wordpress', - 'version' => $wp_version, - 'type' => 'core', - 'checked' => true, // to do: default to false once Scan API has manifest - ) - ); - $files = array(); - - $status = new Status_Model( - array( - 'data_source' => 'scan_api', - 'status' => isset( $scan_data->state ) ? $scan_data->state : null, - 'num_threats' => 0, - 'num_themes_threats' => 0, - 'num_plugins_threats' => 0, - 'has_unchecked_items' => false, - 'current_progress' => isset( $scan_data->current->progress ) ? $scan_data->current->progress : null, - ) - ); - - // Format the "last checked" timestamp. - if ( ! empty( $scan_data->most_recent->timestamp ) ) { - $date = new \DateTime( $scan_data->most_recent->timestamp ); - if ( $date ) { - $status->last_checked = $date->format( 'Y-m-d H:i:s' ); - } - } - - // Ensure all installed plugins and themes are represented in the status. - foreach ( $installed_plugins as $path => $installed_plugin ) { - $slug = str_replace( '.php', '', explode( '/', $path )[0] ); - $plugin = new Extension_Model( - array( - 'name' => $installed_plugin['Name'], - 'version' => $installed_plugin['Version'], - 'slug' => $slug, - 'type' => 'plugins', - 'checked' => true, // to do: default to false once Scan API has manifest - ) - ); - - $plugins[ $slug ] = $plugin; - } - foreach ( $installed_themes as $path => $installed_theme ) { - $slug = str_replace( '.php', '', explode( '/', $path )[0] ); - $theme = new Extension_Model( - array( - 'name' => $installed_theme['Name'], - 'version' => $installed_theme['Version'], - 'slug' => $slug, - 'type' => 'themes', - 'checked' => true, // to do: default to false once Scan API has manifest - ) - ); - - $themes[ $slug ] = $theme; - } - - // Merge the threats into the status model. - if ( isset( $scan_data->threats ) && is_array( $scan_data->threats ) ) { - foreach ( $scan_data->threats as $scan_threat ) { - if ( isset( $scan_threat->fixable ) && $scan_threat->fixable ) { - $status->fixable_threat_ids[] = $scan_threat->id; - } - - $threat = new Threat_Model( - array( - 'id' => isset( $scan_threat->id ) ? $scan_threat->id : null, - 'signature' => isset( $scan_threat->signature ) ? $scan_threat->signature : null, - 'title' => isset( $scan_threat->title ) ? $scan_threat->title : null, - 'description' => isset( $scan_threat->description ) ? $scan_threat->description : null, - 'vulnerability_description' => isset( $scan_threat->vulnerability_description ) ? $scan_threat->vulnerability_description : null, - 'fix_description' => isset( $scan_threat->fix_description ) ? $scan_threat->fix_description : null, - 'payload_subtitle' => isset( $scan_threat->payload_subtitle ) ? $scan_threat->payload_subtitle : null, - 'payload_description' => isset( $scan_threat->payload_description ) ? $scan_threat->payload_description : null, - 'first_detected' => isset( $scan_threat->first_detected ) ? $scan_threat->first_detected : null, - 'fixed_in' => isset( $scan_threat->fixer->fixer ) && 'update' === $scan_threat->fixer->fixer ? $scan_threat->fixer->target : null, - 'severity' => isset( $scan_threat->severity ) ? $scan_threat->severity : null, - 'fixable' => isset( $scan_threat->fixer ) ? $scan_threat->fixer : null, - 'status' => isset( $scan_threat->status ) ? $scan_threat->status : null, - 'filename' => isset( $scan_threat->filename ) ? $scan_threat->filename : null, - 'context' => isset( $scan_threat->context ) ? $scan_threat->context : null, - 'source' => isset( $scan_threat->source ) ? $scan_threat->source : null, - ) - ); - - // Theme and Plugin Threats - if ( ! empty( $scan_threat->extension ) && in_array( $scan_threat->extension->type, array( 'plugin', 'theme' ), true ) ) { - $installed_extension = 'plugin' === $scan_threat->extension->type ? ( $plugins[ $scan_threat->extension->slug ] ?? null ) : ( $themes[ $scan_threat->extension->slug ] ?? null ); - - // If the extension is no longer installed, skip this threat. - // todo: use version_compare() - if ( ! $installed_extension ) { - continue; - } - - // Push the threat to the appropriate extension. - switch ( $scan_threat->extension->type ) { - case 'plugin': - $plugins[ $scan_threat->extension->slug ]->threats[] = clone $threat; - ++$status->num_plugins_threats; - break; - case 'theme': - $themes[ $scan_threat->extension->slug ]->threats[] = clone $threat; - ++$status->num_themes_threats; - break; - default: - break; - } - - $threat->extension = new Extension_Model( - array( - 'name' => isset( $scan_threat->extension->name ) ? $scan_threat->extension->name : null, - 'slug' => isset( $scan_threat->extension->slug ) ? $scan_threat->extension->slug : null, - 'version' => isset( $scan_threat->extension->version ) ? $scan_threat->extension->version : null, - 'type' => $scan_threat->extension->type . 's', - 'checked' => $installed_extension->version === $scan_threat->extension->version, - ) - ); - } elseif ( isset( $threat->signature ) && 'Vulnerable.WP.Core' === $threat->signature ) { - // Vulnerable WordPress Core Version Threats - - // If the core version has changed, skip this threat. - // todo: use version_compare() - if ( $scan_threat->version !== $wp_version ) { - continue; - } - - $core->threats[] = $threat; - } elseif ( ! empty( $threat->filename ) ) { - // File Threats - $files[] = $threat; - } - - $status->threats[] = $threat; - ++$status->num_threats; - } - } - - $status->threats = static::sort_threats( $status->threats ); - - // maintain deprecated properties for backwards compatibility - $status->plugins = array_values( $plugins ); - $status->themes = array_values( $themes ); - $status->core = $core; - $status->files = $files; - - return $status; - } - - /** - * Sort By Threats - * - * @param array $threats Array of threats to sort. - * - * @return array The sorted $threats array. - */ - protected static function sort_threats( $threats ) { - usort( - $threats, - function ( $a, $b ) { - // Order by active status first... - if ( $a->status !== $b->status ) { - return 'active' === $a->status ? -1 : 1; - } - - // ...then by severity... - if ( $a->severity !== $b->severity ) { - return $a->severity > $b->severity ? -1 : 1; - } - - // ...then date added. - if ( $a->first_detected !== $b->first_detected ) { - return strtotime( $a->first_detected ) < strtotime( $b->first_detected ) ? -1 : 1; - } - - return 0; - } - ); - - return $threats; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-status.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-status.php deleted file mode 100644 index f5117e02..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-protect-status/src/class-status.php +++ /dev/null @@ -1,300 +0,0 @@ - (int) $option_timestamp; - } - - /** - * Checks if we should consider the stored cache or bypass it - * - * @return boolean - */ - public static function should_use_cache() { - return defined( 'JETPACK_PROTECT_DEV__BYPASS_CACHE' ) && JETPACK_PROTECT_DEV__BYPASS_CACHE ? false : true; - } - - /** - * Gets the current cached status - * - * @return bool|array False if value is not found. Array with values if cache is found. - */ - public static function get_from_options() { - return maybe_unserialize( get_option( static::OPTION_NAME ) ); - } - - /** - * Updated the cached status and its timestamp - * - * @param array $status The new status to be cached. - * @return void - */ - public static function update_status_option( $status ) { - // TODO: Sanitize $status. - update_option( static::OPTION_NAME, maybe_serialize( $status ) ); - $end_date = self::get_cache_end_date_by_status( $status ); - update_option( static::OPTION_TIMESTAMP_NAME, $end_date ); - } - - /** - * Returns the timestamp the cache should expire depending on the current status - * - * Initial empty status, which are returned before the first check was performed, should be cache for less time - * - * @param object $status The response from the server being cached. - * @return int The timestamp when the cache should expire. - */ - public static function get_cache_end_date_by_status( $status ) { - if ( ! is_object( $status ) || empty( $status->last_checked ) ) { - return time() + static::INITIAL_OPTION_EXPIRES_AFTER; - } - return time() + static::OPTION_EXPIRES_AFTER; - } - - /** - * Delete the cached status and its timestamp - * - * @return bool Whether all related status options were successfully deleted. - */ - public static function delete_option() { - $option_deleted = delete_option( static::OPTION_NAME ); - $option_timestamp_deleted = delete_option( static::OPTION_TIMESTAMP_NAME ); - - return $option_deleted && $option_timestamp_deleted; - } - - /** - * Checks the current status to see if there are any threats found - * - * @return boolean - */ - public static function has_threats() { - return 0 < self::get_total_threats(); - } - - /** - * Gets the total number of threats found - * - * @return integer - */ - public static function get_total_threats() { - $status = static::get_status(); - return count( $status->threats ); - } - - /** - * Get all threats combined - * - * @return array - */ - public static function get_all_threats() { - $status = static::get_status(); - return $status->threats; - } - - /** - * Get threats found for WordPress core - * - * @deprecated 0.3.0 - * - * @return array - */ - public static function get_wordpress_threats() { - return self::get_threats( 'core' ); - } - - /** - * Get threats found for themes - * - * @deprecated 0.3.0 - * - * @return array - */ - public static function get_themes_threats() { - return self::get_threats( 'themes' ); - } - - /** - * Get threats found for plugins - * - * @deprecated 0.3.0 - * - * @return array - */ - public static function get_plugins_threats() { - return self::get_threats( 'plugins' ); - } - - /** - * Get threats found for files - * - * @deprecated 0.3.0 - * - * @return array - */ - public static function get_files_threats() { - return self::get_threats( 'files' ); - } - - /** - * Get threats found for plugins - * - * @deprecated 0.3.0 - * - * @return array - */ - public static function get_database_threats() { - return self::get_threats( 'database' ); - } - - /** - * Get the threats for one type of extension or core - * - * @param string $type What threats you want to get. Possible values are 'core', 'themes' and 'plugins'. - * - * @return array - */ - public static function get_threats( $type ) { - $status = static::get_status(); - - if ( in_array( $type, array( 'plugin', 'theme', 'core' ), true ) ) { - return array_filter( - $status->threats, - function ( $threat ) use ( $type ) { - return isset( $threat->extension ) && $type === $threat->extension->type; - } - ); - } - - if ( 'files' === $type ) { - return array_filter( - $status->threats, - function ( $threat ) { - return ! empty( $threat->filename ); - } - ); - } - - if ( 'database' === $type ) { - return array_filter( - $status->threats, - function ( $threat ) { - return ! empty( $threat->table ); - } - ); - } - - return $status->threats; - } - - /** - * Sort By Threats - * - * @deprecated 0.3.0 - * - * @param array $threats Array of threats to sort. - * - * @return array The sorted $threats array. - */ - protected static function sort_threats( $threats ) { - usort( - $threats, - function ( $a, $b ) { - // sort primarily based on the presence of threats - $ret = empty( $a->threats ) <=> empty( $b->threats ); - - // sort secondarily on whether the item has been checked - if ( ! $ret ) { - $ret = $a->checked <=> $b->checked; - } - - return $ret; - } - ); - - return $threats; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/CHANGELOG.md deleted file mode 100644 index f96782f8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/CHANGELOG.md +++ /dev/null @@ -1,292 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [3.0.5] - 2025-03-21 -### Changed -- Internal updates. - -## [3.0.4] - 2025-03-12 -### Changed -- Internal updates. - -## [3.0.3] - 2025-03-05 -### Changed -- Internal updates. - -## [3.0.2] - 2025-02-24 -### Changed -- Update dependencies. - -## [3.0.1] - 2024-11-25 -### Changed -- Updated package dependencies. [#40258] - -## [3.0.0] - 2024-11-14 -### Removed -- General: Update minimum PHP version to 7.2. [#40147] - -## [2.0.5] - 2024-11-04 -### Added -- Enable test coverage. [#39961] - -## [2.0.4] - 2024-09-05 -### Changed -- Update dependencies. - -## [2.0.3] - 2024-08-23 -### Changed -- Updated package dependencies. [#39004] - -## [2.0.2] - 2024-04-25 -### Changed -- Update dependencies. - -## [2.0.1] - 2024-03-12 -### Changed -- Internal updates. - -## [2.0.0] - 2023-11-20 -### Changed -- Replaced usage of strpos() with str_starts_with(). [#34135] -- Updated required PHP version to >= 7.0. [#34192] - -## [1.7.27] - 2023-09-19 - -- Minor internal updates. - -## [1.7.26] - 2023-08-23 -### Changed -- Updated package dependencies. [#32605] - -## [1.7.25] - 2023-04-10 -### Added -- Add Jetpack Autoloader package suggestion. [#29988] - -## [1.7.24] - 2023-02-20 -### Changed -- Minor internal updates. - -## [1.7.23] - 2023-01-11 -### Changed -- Updated package dependencies. - -## [1.7.22] - 2022-12-19 -### Changed -- Updated package dependencies. - -## [1.7.21] - 2022-12-02 -### Changed -- Updated package dependencies. [#27688] - -## [1.7.20] - 2022-11-22 -### Changed -- Updated package dependencies. [#27043] - -## [1.7.19] - 2022-11-07 -### Changed -- Updated package dependencies. [#27278] - -## [1.7.18] - 2022-07-26 -### Changed -- Updated package dependencies. [#25158] - -## [1.7.17] - 2022-06-21 -### Changed -- Renaming master to trunk. - -## [1.7.16] - 2022-06-14 -### Changed -- Updated package dependencies. [#24529] - -## [1.7.15] - 2022-05-10 - -## [1.7.14] - 2022-04-26 -### Changed -- Updated package dependencies. - -## [1.7.13] - 2022-04-05 -### Changed -- Updated package dependencies. - -## [1.7.12] - 2022-03-02 -### Changed -- Updated package dependencies. - -## [1.7.11] - 2022-02-22 -### Changed -- Updated package dependencies. - -## [1.7.10] - 2022-01-25 -### Changed -- Updated package dependencies. - -## [1.7.9] - 2022-01-04 -### Changed -- Switch to pcov for code coverage. -- Updated package dependencies - -## [1.7.8] - 2021-12-14 -### Changed -- Updated package dependencies. - -## [1.7.7] - 2021-11-22 -### Changed -- Updated package dependencies - -## [1.7.6] - 2021-11-02 -### Changed -- Set `convertDeprecationsToExceptions` true in PHPUnit config. -- Update PHPUnit configs to include just what needs coverage rather than include everything then try to exclude stuff that doesn't. - -## [1.7.5] - 2021-10-26 -### Changed -- Updated package dependencies. - -## [1.7.4] - 2021-10-13 -### Changed -- Updated package dependencies. - -## [1.7.3] - 2021-10-12 -### Changed -- Updated package dependencies - -## [1.7.2] - 2021-09-28 -### Changed -- Updated package dependencies. - -## [1.7.1] - 2021-08-30 -### Changed -- Run composer update on test-php command instead of phpunit -- Tests: update PHPUnit polyfills dependency (yoast/phpunit-polyfills). - -## [1.7.0] - 2021-06-29 -### Changed -- Allow any argument to be passed. -- Improve documentation. - -## [1.6.1] - 2021-06-15 -### Changed -- Updated package dependencies. - -## [1.6.0] - 2021-05-25 -### Removed -- Removed filter from the final Redirect URL - -## [1.5.5] - 2021-04-27 -### Changed -- Updated package dependencies. - -## [1.5.4] - 2021-03-30 -### Added -- Composer alias for dev-master, to improve dependencies - -### Changed -- Update package dependencies. -- Userless Connection: Redirect "userless" users to the "Plans" page - -### Fixed -- Use `composer update` rather than `install` in scripts, as composer.lock isn't checked in. - -## [1.5.3] - 2021-02-23 - -- CI: Make tests more generic - -## [1.5.2] - 2021-01-26 - -- Update dependencies to latest stable - -## [1.5.1] - 2021-01-26 - -- Add mirror-repo information to all current composer packages -- Monorepo: Reorganize all projects - -## [1.5.0] - 2021-01-05 - -- Update dependency brain/monkey to v2.6.0 -- Pin dependencies -- Packages: Update for PHP 8 testing -- Pin dependency brain/monkey to 2.5.0 - -## [1.4.1] - 2020-11-24 - -- Status: Introduce get_site_suffix method - -## [1.4.0] - 2020-10-27 - -- Masterbar: Add Admin Menu endpoint - -## [1.3.0] - 2020-08-14 - -- Packages: Update filenames after #16810 -- CI: Try collect js coverage -- Docker: Add package testing shortcut - -## [1.2.0] - 2020-06-16 - -- Add a trailing / to jetpack.com/redirect URLs. - -## [1.1.0] - 2020-05-22 - -- add filter to Redirect::get_url - -## 1.0.0 - 2020-04-24 - -- Create Jetpack Redirect package - -[3.0.5]: https://github.com/Automattic/jetpack-redirect/compare/v3.0.4...v3.0.5 -[3.0.4]: https://github.com/Automattic/jetpack-redirect/compare/v3.0.3...v3.0.4 -[3.0.3]: https://github.com/Automattic/jetpack-redirect/compare/v3.0.2...v3.0.3 -[3.0.2]: https://github.com/Automattic/jetpack-redirect/compare/v3.0.1...v3.0.2 -[3.0.1]: https://github.com/Automattic/jetpack-redirect/compare/v3.0.0...v3.0.1 -[3.0.0]: https://github.com/Automattic/jetpack-redirect/compare/v2.0.5...v3.0.0 -[2.0.5]: https://github.com/Automattic/jetpack-redirect/compare/v2.0.4...v2.0.5 -[2.0.4]: https://github.com/Automattic/jetpack-redirect/compare/v2.0.3...v2.0.4 -[2.0.3]: https://github.com/Automattic/jetpack-redirect/compare/v2.0.2...v2.0.3 -[2.0.2]: https://github.com/Automattic/jetpack-redirect/compare/v2.0.1...v2.0.2 -[2.0.1]: https://github.com/Automattic/jetpack-redirect/compare/v2.0.0...v2.0.1 -[2.0.0]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.27...v2.0.0 -[1.7.27]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.26...v1.7.27 -[1.7.26]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.25...v1.7.26 -[1.7.25]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.24...v1.7.25 -[1.7.24]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.23...v1.7.24 -[1.7.23]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.22...v1.7.23 -[1.7.22]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.21...v1.7.22 -[1.7.21]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.20...v1.7.21 -[1.7.20]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.19...v1.7.20 -[1.7.19]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.18...v1.7.19 -[1.7.18]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.17...v1.7.18 -[1.7.17]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.16...v1.7.17 -[1.7.16]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.15...v1.7.16 -[1.7.15]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.14...v1.7.15 -[1.7.14]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.13...v1.7.14 -[1.7.13]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.12...v1.7.13 -[1.7.12]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.11...v1.7.12 -[1.7.11]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.10...v1.7.11 -[1.7.10]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.9...v1.7.10 -[1.7.9]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.8...v1.7.9 -[1.7.8]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.7...v1.7.8 -[1.7.7]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.6...v1.7.7 -[1.7.6]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.5...v1.7.6 -[1.7.5]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.4...v1.7.5 -[1.7.4]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.3...v1.7.4 -[1.7.3]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.2...v1.7.3 -[1.7.2]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.1...v1.7.2 -[1.7.1]: https://github.com/Automattic/jetpack-redirect/compare/v1.7.0...v1.7.1 -[1.7.0]: https://github.com/Automattic/jetpack-redirect/compare/v1.6.1...v1.7.0 -[1.6.1]: https://github.com/Automattic/jetpack-redirect/compare/v1.6.0...v1.6.1 -[1.6.0]: https://github.com/Automattic/jetpack-redirect/compare/v1.5.5...v1.6.0 -[1.5.5]: https://github.com/Automattic/jetpack-redirect/compare/v1.5.4...v1.5.5 -[1.5.4]: https://github.com/Automattic/jetpack-redirect/compare/v1.5.3...v1.5.4 -[1.5.3]: https://github.com/Automattic/jetpack-redirect/compare/v1.5.2...v1.5.3 -[1.5.2]: https://github.com/Automattic/jetpack-redirect/compare/v1.5.1...v1.5.2 -[1.5.1]: https://github.com/Automattic/jetpack-redirect/compare/v1.5.0...v1.5.1 -[1.5.0]: https://github.com/Automattic/jetpack-redirect/compare/v1.4.1...v1.5.0 -[1.4.1]: https://github.com/Automattic/jetpack-redirect/compare/v1.4.0...v1.4.1 -[1.4.0]: https://github.com/Automattic/jetpack-redirect/compare/v1.3.0...v1.4.0 -[1.3.0]: https://github.com/Automattic/jetpack-redirect/compare/v1.2.0...v1.3.0 -[1.2.0]: https://github.com/Automattic/jetpack-redirect/compare/v1.1.0...v1.2.0 -[1.1.0]: https://github.com/Automattic/jetpack-redirect/compare/v1.0.0...v1.1.0 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/composer.json deleted file mode 100644 index 0b6f8eae..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/composer.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "automattic/jetpack-redirect", - "description": "Utilities to build URLs to the jetpack.com/redirect/ service", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2", - "automattic/jetpack-status": "^5.0.10" - }, - "require-dev": { - "brain/monkey": "^2.6.2", - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "scripts": { - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" - ], - "test-php": [ - "@composer phpunit" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-redirect", - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-redirect/compare/v${old}...v${new}" - }, - "branch-alias": { - "dev-trunk": "3.0.x-dev" - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/src/class-redirect.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/src/class-redirect.php deleted file mode 100644 index 7e1ee79e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-redirect/src/class-redirect.php +++ /dev/null @@ -1,79 +0,0 @@ -get_site_suffix(); - $args = wp_parse_args( $args, array( 'site' => $site_suffix ) ); - - $source_key = 'source'; - - if ( \str_starts_with( $source, 'https://' ) ) { - $source_key = 'url'; - $source_url = \wp_parse_url( $source ); - - // discard any query and fragments. - $source = 'https://' . $source_url['host'] . ( isset( $source_url['path'] ) ? $source_url['path'] : '' ); - } - - $to_be_added = array( - $source_key => rawurlencode( $source ), - ); - - foreach ( $args as $arg_name => $arg_value ) { - - if ( empty( $arg_value ) ) { - continue; - } - - $to_be_added[ $arg_name ] = rawurlencode( $arg_value ); - - } - - if ( ! empty( $to_be_added ) ) { - $url = add_query_arg( $to_be_added, $url ); - } - - return $url; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/CHANGELOG.md deleted file mode 100644 index 612076b2..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/CHANGELOG.md +++ /dev/null @@ -1,245 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [3.0.5] - 2025-03-21 -### Changed -- Internal updates. - -## [3.0.4] - 2025-03-12 -### Changed -- Internal updates. - -## [3.0.3] - 2025-03-05 -### Changed -- Internal updates. - -## [3.0.2] - 2025-02-24 -### Changed -- Update dependencies. - -## [3.0.1] - 2024-11-25 -### Changed -- Updated package dependencies. [#40258] - -## [3.0.0] - 2024-11-14 -### Removed -- General: Update minimum PHP version to 7.2. [#40147] - -## [2.0.4] - 2024-11-04 -### Added -- Enable test coverage. [#39961] - -## [2.0.3] - 2024-08-23 -### Changed -- Updated package dependencies. [#39004] - -## [2.0.2] - 2024-04-22 -### Changed -- Internal updates. - -## [2.0.1] - 2024-03-12 -### Changed -- Internal updates. - -## [2.0.0] - 2023-11-20 -### Changed -- Updated required PHP version to >= 7.0. [#34192] - -## [1.4.25] - 2023-09-19 - -- Minor internal updates. - -## [1.4.24] - 2023-08-23 -### Changed -- Updated package dependencies. [#32605] - -## [1.4.23] - 2023-04-10 -### Added -- Add Jetpack Autoloader package suggestion. [#29988] - -## [1.4.22] - 2023-02-20 -### Changed -- Minor internal updates. - -## [1.4.21] - 2023-01-11 -### Changed -- Updated package dependencies. - -## [1.4.20] - 2022-12-19 -### Changed -- Updated package dependencies. - -## [1.4.19] - 2022-12-02 -### Changed -- Updated package dependencies. [#27688] - -## [1.4.18] - 2022-11-22 -### Changed -- Updated package dependencies. [#27043] - -## [1.4.17] - 2022-07-26 -### Changed -- Updated package dependencies. [#25158] - -## [1.4.16] - 2022-06-21 -### Changed -- Renaming master to trunk. - -## [1.4.15] - 2022-04-26 -### Changed -- Updated package dependencies. - -## [1.4.14] - 2022-01-25 -### Changed -- Updated package dependencies. - -## [1.4.13] - 2022-01-04 -### Changed -- Switch to pcov for code coverage. -- Updated package dependencies - -## [1.4.12] - 2021-12-14 -### Changed -- Updated package dependencies. - -## [1.4.11] - 2021-11-22 -### Changed -- Updated package dependencies - -## [1.4.10] - 2021-11-02 -### Changed -- Set `convertDeprecationsToExceptions` true in PHPUnit config. -- Update PHPUnit configs to include just what needs coverage rather than include everything then try to exclude stuff that doesn't. - -## [1.4.9] - 2021-10-13 -### Changed -- Updated package dependencies. - -## [1.4.8] - 2021-10-12 -### Changed -- Updated package dependencies - -## [1.4.7] - 2021-09-28 -### Changed -- Updated package dependencies. - -## [1.4.6] - 2021-08-30 -### Changed -- Run composer update on test-php command instead of phpunit -- Tests: update PHPUnit polyfills dependency (yoast/phpunit-polyfills). - -## [1.4.5] - 2021-05-25 -### Changed -- Updated package dependencies. - -## [1.4.4] - 2021-04-08 -### Changed -- Packaging and build changes, no change to the package itself. - -## [1.4.3] - 2021-03-30 -### Added -- Composer alias for dev-master, to improve dependencies - -### Changed -- Update package dependencies. - -### Fixed -- Use `composer update` rather than `install` in scripts, as composer.lock isn't checked in. - -## [1.4.2] - 2021-02-05 - -- CI: Make tests more generic - -## [1.4.1] - 2021-01-20 - -- Add mirror-repo information to all current composer packages -- Monorepo: Reorganize all projects - -## [1.4.0] - 2020-12-14 - -- Update dependency brain/monkey to v2.6.0 -- Pin dependencies -- Packages: Update for PHP 8 testing - -## [1.3.1] - 2020-10-28 - -- Updated PHPCS: Packages and Debugger - -## [1.3.0] - 2020-08-13 - -- CI: Try collect js coverage -- Docker: Add package testing shortcut - -## [1.2.0] - 2020-07-01 - -- Package Unit tests: update test file names to make sure they runs in Travis - -## [1.1.0] - 2020-06-22 - -- PHPCS: Clean up the packages -- PHPCS Updates after WPCS 2.3 - -## [1.0.4] - 2019-11-08 - -- Packages: Use classmap instead of PSR-4 - -## [1.0.2] - 2019-10-28 - -- Packages: Add gitattributes files to all packages that need th… - -## [1.0.1] - 2019-09-20 - -- Docs: Unify usage of @package phpdoc tags - -## 1.0.0 - 2019-09-14 - -- Jetpack DNA: Introduce a Roles package - -[3.0.5]: https://github.com/Automattic/jetpack-roles/compare/v3.0.4...v3.0.5 -[3.0.4]: https://github.com/Automattic/jetpack-roles/compare/v3.0.3...v3.0.4 -[3.0.3]: https://github.com/Automattic/jetpack-roles/compare/v3.0.2...v3.0.3 -[3.0.2]: https://github.com/Automattic/jetpack-roles/compare/v3.0.1...v3.0.2 -[3.0.1]: https://github.com/Automattic/jetpack-roles/compare/v3.0.0...v3.0.1 -[3.0.0]: https://github.com/Automattic/jetpack-roles/compare/v2.0.4...v3.0.0 -[2.0.4]: https://github.com/Automattic/jetpack-roles/compare/v2.0.3...v2.0.4 -[2.0.3]: https://github.com/Automattic/jetpack-roles/compare/v2.0.2...v2.0.3 -[2.0.2]: https://github.com/Automattic/jetpack-roles/compare/v2.0.1...v2.0.2 -[2.0.1]: https://github.com/Automattic/jetpack-roles/compare/v2.0.0...v2.0.1 -[2.0.0]: https://github.com/Automattic/jetpack-roles/compare/v1.4.25...v2.0.0 -[1.4.25]: https://github.com/Automattic/jetpack-roles/compare/v1.4.24...v1.4.25 -[1.4.24]: https://github.com/Automattic/jetpack-roles/compare/v1.4.23...v1.4.24 -[1.4.23]: https://github.com/Automattic/jetpack-roles/compare/v1.4.22...v1.4.23 -[1.4.22]: https://github.com/Automattic/jetpack-roles/compare/v1.4.21...v1.4.22 -[1.4.21]: https://github.com/Automattic/jetpack-roles/compare/v1.4.20...v1.4.21 -[1.4.20]: https://github.com/Automattic/jetpack-roles/compare/v1.4.19...v1.4.20 -[1.4.19]: https://github.com/Automattic/jetpack-roles/compare/v1.4.18...v1.4.19 -[1.4.18]: https://github.com/Automattic/jetpack-roles/compare/v1.4.17...v1.4.18 -[1.4.17]: https://github.com/Automattic/jetpack-roles/compare/v1.4.16...v1.4.17 -[1.4.16]: https://github.com/Automattic/jetpack-roles/compare/v1.4.15...v1.4.16 -[1.4.15]: https://github.com/Automattic/jetpack-roles/compare/v1.4.14...v1.4.15 -[1.4.14]: https://github.com/Automattic/jetpack-roles/compare/v1.4.13...v1.4.14 -[1.4.13]: https://github.com/Automattic/jetpack-roles/compare/v1.4.12...v1.4.13 -[1.4.12]: https://github.com/Automattic/jetpack-roles/compare/v1.4.11...v1.4.12 -[1.4.11]: https://github.com/Automattic/jetpack-roles/compare/v1.4.10...v1.4.11 -[1.4.10]: https://github.com/Automattic/jetpack-roles/compare/v1.4.9...v1.4.10 -[1.4.9]: https://github.com/Automattic/jetpack-roles/compare/v1.4.8...v1.4.9 -[1.4.8]: https://github.com/Automattic/jetpack-roles/compare/v1.4.7...v1.4.8 -[1.4.7]: https://github.com/Automattic/jetpack-roles/compare/v1.4.6...v1.4.7 -[1.4.6]: https://github.com/Automattic/jetpack-roles/compare/v1.4.5...v1.4.6 -[1.4.5]: https://github.com/Automattic/jetpack-roles/compare/v1.4.4...v1.4.5 -[1.4.4]: https://github.com/Automattic/jetpack-roles/compare/v1.4.3...v1.4.4 -[1.4.3]: https://github.com/Automattic/jetpack-roles/compare/v1.4.2...v1.4.3 -[1.4.2]: https://github.com/Automattic/jetpack-roles/compare/v1.4.1...v1.4.2 -[1.4.1]: https://github.com/Automattic/jetpack-roles/compare/v1.4.0...v1.4.1 -[1.4.0]: https://github.com/Automattic/jetpack-roles/compare/v1.3.1...v1.4.0 -[1.3.1]: https://github.com/Automattic/jetpack-roles/compare/v1.3.0...v1.3.1 -[1.3.0]: https://github.com/Automattic/jetpack-roles/compare/v1.2.0...v1.3.0 -[1.2.0]: https://github.com/Automattic/jetpack-roles/compare/v1.1.0...v1.2.0 -[1.1.0]: https://github.com/Automattic/jetpack-roles/compare/v1.0.4...v1.1.0 -[1.0.4]: https://github.com/Automattic/jetpack-roles/compare/v1.0.2...v1.0.4 -[1.0.2]: https://github.com/Automattic/jetpack-roles/compare/v1.0.1...v1.0.2 -[1.0.1]: https://github.com/Automattic/jetpack-roles/compare/v1.0.0...v1.0.1 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/composer.json deleted file mode 100644 index 7ec25616..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/composer.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "automattic/jetpack-roles", - "description": "Utilities, related with user roles and capabilities.", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2" - }, - "require-dev": { - "brain/monkey": "^2.6.2", - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "scripts": { - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" - ], - "test-php": [ - "@composer phpunit" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-roles", - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-roles/compare/v${old}...v${new}" - }, - "branch-alias": { - "dev-trunk": "3.0.x-dev" - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/src/class-roles.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/src/class-roles.php deleted file mode 100644 index 7bce3462..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-roles/src/class-roles.php +++ /dev/null @@ -1,81 +0,0 @@ - 'manage_options', - 'editor' => 'edit_others_posts', - 'author' => 'publish_posts', - 'contributor' => 'edit_posts', - 'subscriber' => 'read', - ); - - /** - * Get the role of the current user. - * - * @access public - * - * @return string|boolean Current user's role, false if not enough capabilities for any of the roles. - */ - public function translate_current_user_to_role() { - foreach ( $this->capability_translations as $role => $cap ) { - if ( current_user_can( $role ) || current_user_can( $cap ) ) { - return $role; - } - } - - return false; - } - - /** - * Get the role of a particular user. - * - * @access public - * - * @param \WP_User $user User object. - * @return string|boolean User's role, false if not enough capabilities for any of the roles. - */ - public function translate_user_to_role( $user ) { - foreach ( $this->capability_translations as $role => $cap ) { - if ( user_can( $user, $role ) || user_can( $user, $cap ) ) { - return $role; - } - } - - return false; - } - - /** - * Get the minimum capability for a role. - * - * @access public - * - * @param string $role Role name. - * @return string|boolean Capability, false if role isn't mapped to any capabilities. - */ - public function translate_role_to_cap( $role ) { - if ( ! isset( $this->capability_translations[ $role ] ) ) { - return false; - } - - return $this->capability_translations[ $role ]; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/CHANGELOG.md deleted file mode 100644 index 6b3ef122..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/CHANGELOG.md +++ /dev/null @@ -1,555 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [5.0.10] - 2025-03-21 -### Changed -- Internal updates. - -## [5.0.9] - 2025-03-18 -### Changed -- Internal updates. - -## [5.0.8] - 2025-03-17 -### Changed -- Internal updates. - -## [5.0.7] - 2025-03-12 -### Changed -- Internal updates. - -## [5.0.6] - 2025-03-05 -### Changed -- Internal updates. - -## [5.0.5] - 2025-03-03 -### Fixed -- Hosting provider checks: Avoid PHP warnings in local environments. [#41994] - -## [5.0.4] - 2025-02-24 -### Changed -- Host detection: Look for specific external hosting provider only when required. [#41890] - -## [5.0.3] - 2025-02-03 -### Fixed -- Code: Remove extra params on function calls. [#41263] - -## [5.0.2] - 2025-01-20 -### Changed -- Code: Use function-style exit() and die() with a default status code of 0. [#41167] - -## [5.0.1] - 2024-11-25 -### Changed -- Updated package dependencies. [#40258] - -## [5.0.0] - 2024-11-14 -### Removed -- General: Update minimum PHP version to 7.2. [#40147] - -## [4.0.3] - 2024-11-04 -### Added -- Enable test coverage. [#39961] - -## [4.0.2] - 2024-09-23 -### Changed -- Update dependencies. - -## [4.0.1] - 2024-09-06 -### Removed -- Removed usage of _deprecated_function when deprecating Status::is_onboarding [#39272] - -## [4.0.0] - 2024-09-05 -### Deprecated -- Deprecated Jetpack Onboarding system. [#39229] - -## [3.3.4] - 2024-08-23 -### Changed -- Updated package dependencies. [#39004] - -## [3.3.3] - 2024-08-19 -### Changed -- Internal updates. - -## [3.3.2] - 2024-06-24 -### Changed -- Internal updates. - -## [3.3.1] - 2024-06-21 -### Added -- Check for active modules among the unavailable ones. [#37358] - -## [3.3.0] - 2024-06-10 -### Deprecated -- Deprecated is_staging_site [#37023] - -## [3.2.3] - 2024-06-03 -### Removed -- Remove the Identity Crisis dev dependency. [#37654] - -## [3.2.2] - 2024-05-29 -### Changed -- Phab baseline file update. [#36968] - -## [3.2.1] - 2024-05-28 -### Changed -- Internal updates. - -## [3.2.0] - 2024-05-22 -### Deprecated -- Jetpack: Deprecated Errors class. [#37451] - -## [3.1.0] - 2024-05-20 -### Added -- Add the 'is_current_request_activating_plugin_from_plugins_screen' method extracted from the Plugin Install package. [#37430] - -## [3.0.3] - 2024-05-08 -### Fixed -- Status: Added check for compatibility reasons [#37256] - -## [3.0.2] - 2024-05-06 -### Added -- Add new method used to track allowed domains for API access. [#36924] - -## [3.0.1] - 2024-04-30 -### Changed -- Internal updates. - -## [3.0.0] - 2024-04-25 -### Added -- Add is_automattician_feature_flags_only on Jetpack sites as an alternative to is_automattician present on simple sites. [#34798] - -### Removed -- Remove methods deprecated long ago. [#36985] - -## [2.2.2] - 2024-04-22 -### Changed -- Internal updates. - -## [2.2.1] - 2024-04-08 -### Changed -- Internal updates. - -## [2.2.0] - 2024-03-22 -### Added -- Add support for A8C for Agencies source parameter. [#36491] - -## [2.1.3] - 2024-03-20 -### Changed -- Internal updates. - -## [2.1.2] - 2024-03-12 -### Changed -- Internal updates. - -## [2.1.1] - 2024-03-01 -### Fixed -- Avoid issues when the dns_get_record function is not defined [#36019] - -## [2.1.0] - 2024-01-18 -### Added -- Add hosting provider check. [#34864] - -## [2.0.2] - 2023-12-03 -### Fixed -- Module active checks should always be true on WordPress.com simple sites. [#34248] - -## [2.0.1] - 2023-11-21 -### Changed -- Added a note of non-usage of PHP8+ functions yet. [#34137] -- Replaced usage of substr() with str_starts_with() and str_ends_with(). [#34207] - -## [2.0.0] - 2023-11-20 -### Changed -- Updated required PHP version to >= 7.0. [#34192] - -## [1.19.0] - 2023-11-13 -### Added -- Added Host::get_source_query() to return the 'source' query param from the current URL. [#33984] - -## [1.18.5] - 2023-09-25 -### Changed -- Add 127.0.0.1 into the list of known local domains. [#32898] -- WP.com Compatibility: Abort out early checking if Protect is active. WP.com's protection is not site option based. [#33196] - -## [1.18.4] - 2023-09-19 - -- Minor internal updates. - -## [1.18.3] - 2023-09-11 -### Changed -- General: remove backwards-compatibility function checks now that the package supports WP 6.2. [#32772] - -## [1.18.2] - 2023-09-04 -### Fixed -- Exclude domains starting with live from known Pantheon staging domains [#32789] - -## [1.18.1] - 2023-08-23 -### Changed -- Updated package dependencies. [#32605] - -## [1.18.0] - 2023-07-18 -### Added -- Transferred 'get_calypso_env()' method from Jetpack plugin. [#31906] - -## [1.17.2] - 2023-06-19 -### Changed -- Use Plans package to detect feature support. [#31213] - -## [1.17.1] - 2023-05-11 -### Changed -- PHP 8.1 compatibility updates [#30517] - -## [1.17.0] - 2023-04-17 -### Changed -- When Jetpack is available, `Modules::get()` no longer translates `module_tags`. Use Jetpack's `jetpack_get_module_i18n_tag()` function if you need translations. [#30067] - -## [1.16.4] - 2023-04-10 -### Added -- Add Jetpack Autoloader package suggestion. [#29988] - -## [1.16.3] - 2023-03-28 -### Changed -- Move brute force protection into WAF package. [#28401] - -## [1.16.2] - 2023-02-20 -### Changed -- Minor internal updates. - -## [1.16.1] - 2023-01-23 -### Added -- Add new filters for the latest status methods [#28328] - -## [1.16.0] - 2023-01-16 -### Added -- Add 2 new methods to detect whether a site is private or not. [#28322] - -## [1.15.4] - 2023-01-11 -### Changed -- Modules: Allow for deactivating multiple plugins when activating a module. [#28181] - -## [1.15.3] - 2022-12-19 -### Changed -- Updated package dependencies. - -## [1.15.2] - 2022-12-02 -### Changed -- Updated package dependencies. [#27688] - -## [1.15.1] - 2022-11-22 -### Changed -- Updated package dependencies. [#27043] - -## [1.15.0] - 2022-11-07 -### Added -- WordPress.com: add checks for Simple or either Simple/WoA. [#27278] - -## [1.14.3] - 2022-07-26 -### Changed -- Updated package dependencies. [#25158] - -## [1.14.2] - 2022-07-19 -### Changed -- Update logic in `is_woa_site` function for host changes [#25067] - -## [1.14.1] - 2022-06-21 -### Changed -- Renaming master to trunk. - -## [1.14.0] - 2022-06-14 -### Fixed -- Moved the connection_url_redirect action handling to the connection package. [#24529] - -## [1.13.6] - 2022-05-24 -### Added -- Allow plugins to filter the list of available modules. Only activate and consider active modules that are available [#24454] - -## [1.13.5] - 2022-05-20 -### Changed -- Modules: Make activate() method Jetpack plugin agnostic. Allowing standalone plugins to use it without Jetpack. - -## [1.13.4] - 2022-05-19 -### Added -- PHPCS updates. [#24418] - -## [1.13.3] - 2022-05-10 - -## [1.13.2] - 2022-04-26 -### Changed -- Updated package dependencies. - -## [1.13.1] - 2022-04-19 -### Changed -- PHPCS: Fix `WordPress.Security.ValidatedSanitizedInput` - -## [1.13.0] - 2022-04-05 -### Added -- Created Modules and File modules for managing those resources - -## [1.12.0] - 2022-03-02 -### Added -- Cache return values (per blog) from various status methods. - -## [1.11.2] - 2022-02-28 -### Fixed -- Re-doing 1.11.1 to fixup a bad release. - -## [1.11.1] - 2022-02-28 -### Fixed -- Remove trailing semicolor form site suffix. - -## [1.11.0] - 2022-02-22 -### Added -- Add methods to distinguish Newspack and VIP sites. - -## [1.10.0] - 2022-01-25 -### Added -- Added Visitor class for status regarding the site visitor. - -## [1.9.5] - 2022-01-04 -### Changed -- Switch to pcov for code coverage. -- Updated package dependencies - -## [1.9.4] - 2021-12-14 -### Changed -- Updated package dependencies. - -## [1.9.3] - 2021-11-22 -### Changed -- Updated package dependencies - -## [1.9.2] - 2021-11-16 -### Changed -- Add a function_exists check before calling wp_get_environment_type - -## [1.9.1] - 2021-11-02 -### Changed -- Set `convertDeprecationsToExceptions` true in PHPUnit config. -- Update PHPUnit configs to include just what needs coverage rather than include everything then try to exclude stuff that doesn't. - -## [1.9.0] - 2021-10-26 -### Added -- Added Host class for reporting known hosting environment information. - -## [1.8.4] - 2021-10-13 -### Changed -- Updated package dependencies. - -## [1.8.3] - 2021-10-12 -### Changed -- Updated package dependencies - -## [1.8.2] - 2021-09-28 -### Changed -- Updated package dependencies. - -## [1.8.1] - 2021-08-30 -### Changed -- Run composer update on test-php command instead of phpunit -- Tests: update PHPUnit polyfills dependency (yoast/phpunit-polyfills). -- update annotations versions - -## [1.8.0] - 2021-06-15 -### Changed -- Update callback to Jetpack to new Identity_Crisis class. - -## [1.7.6] - 2021-05-25 -### Changed -- Updated package dependencies. - -## [1.7.5] - 2021-04-27 -### Deprecated -- Deprecates is_no_user_testing_mode - -## [1.7.4] - 2021-04-08 -### Changed -- Packaging and build changes, no change to the package itself. - -## [1.7.3] - 2021-03-30 -### Added -- Composer alias for dev-master, to improve dependencies - -### Changed -- Update package dependencies. - -### Fixed -- Use `composer update` rather than `install` in scripts, as composer.lock isn't checked in. - -## [1.7.2] - 2021-02-05 - -- CI: Make tests more generic - -## [1.7.1] - 2021-01-20 - -- Add mirror-repo information to all current composer packages -- Monorepo: Reorganize all projects - -## [1.7.0] - 2020-12-14 - -- Update dependency brain/monkey to v2.6.0 -- Pin dependencies -- Packages: Update for PHP 8 testing - -## [1.6.0] - 2020-11-23 - -- Status: Introduce get_site_suffix method -- Status: Fix test failure -- Status: Improve the staging site detection -- General: update minimum required version to WordPress 5.5 -- Add the no_user_testing mode -- Status: Add a couple of test cases for staging site detection -- Update dependency brain/monkey to v2.5.0 -- Updated PHPCS: Packages and Debugger - -## [1.5.0] - 2020-10-13 - -- Also use Core `wp_get_environment_type` for local - -## [1.4.0] - 2020-08-13 - -- CI: Try collect js coverage - -## [1.3.0] - 2020-07-28 - -- Core Compat: Site Environment - -## [1.2.0] - 2020-06-22 - -- PHPCS: Clean up the packages -- Staging Sites: add newspack staging to the list of known providers - -## [1.1.1] - 2020-01-27 - -- Pin dependency brain/monkey to 2.4.0 - -## [1.1.0] - 2020-01-14 - -- Packages: Various improvements for wp.com or self-contained consumers - -## [1.0.4] - 2019-11-08 - -- Packages: Use classmap instead of PSR-4 - -## [1.0.3] - 2019-10-28 - -- Packages: Add gitattributes files to all packages that need th… - -## [1.0.2] - 2019-10-23 - -- Use spread operator instead of func_get_args - -## [1.0.1] - 2019-09-20 - -- Docs: Unify usage of @package phpdoc tags - -## 1.0.0 - 2019-09-14 - -- Packages: Introduce a status package - -[5.0.10]: https://github.com/Automattic/jetpack-status/compare/v5.0.9...v5.0.10 -[5.0.9]: https://github.com/Automattic/jetpack-status/compare/v5.0.8...v5.0.9 -[5.0.8]: https://github.com/Automattic/jetpack-status/compare/v5.0.7...v5.0.8 -[5.0.7]: https://github.com/Automattic/jetpack-status/compare/v5.0.6...v5.0.7 -[5.0.6]: https://github.com/Automattic/jetpack-status/compare/v5.0.5...v5.0.6 -[5.0.5]: https://github.com/Automattic/jetpack-status/compare/v5.0.4...v5.0.5 -[5.0.4]: https://github.com/Automattic/jetpack-status/compare/v5.0.3...v5.0.4 -[5.0.3]: https://github.com/Automattic/jetpack-status/compare/v5.0.2...v5.0.3 -[5.0.2]: https://github.com/Automattic/jetpack-status/compare/v5.0.1...v5.0.2 -[5.0.1]: https://github.com/Automattic/jetpack-status/compare/v5.0.0...v5.0.1 -[5.0.0]: https://github.com/Automattic/jetpack-status/compare/v4.0.3...v5.0.0 -[4.0.3]: https://github.com/Automattic/jetpack-status/compare/v4.0.2...v4.0.3 -[4.0.2]: https://github.com/Automattic/jetpack-status/compare/v4.0.1...v4.0.2 -[4.0.1]: https://github.com/Automattic/jetpack-status/compare/v4.0.0...v4.0.1 -[4.0.0]: https://github.com/Automattic/jetpack-status/compare/v3.3.4...v4.0.0 -[3.3.4]: https://github.com/Automattic/jetpack-status/compare/v3.3.3...v3.3.4 -[3.3.3]: https://github.com/Automattic/jetpack-status/compare/v3.3.2...v3.3.3 -[3.3.2]: https://github.com/Automattic/jetpack-status/compare/v3.3.1...v3.3.2 -[3.3.1]: https://github.com/Automattic/jetpack-status/compare/v3.3.0...v3.3.1 -[3.3.0]: https://github.com/Automattic/jetpack-status/compare/v3.2.3...v3.3.0 -[3.2.3]: https://github.com/Automattic/jetpack-status/compare/v3.2.2...v3.2.3 -[3.2.2]: https://github.com/Automattic/jetpack-status/compare/v3.2.1...v3.2.2 -[3.2.1]: https://github.com/Automattic/jetpack-status/compare/v3.2.0...v3.2.1 -[3.2.0]: https://github.com/Automattic/jetpack-status/compare/v3.1.0...v3.2.0 -[3.1.0]: https://github.com/Automattic/jetpack-status/compare/v3.0.3...v3.1.0 -[3.0.3]: https://github.com/Automattic/jetpack-status/compare/v3.0.2...v3.0.3 -[3.0.2]: https://github.com/Automattic/jetpack-status/compare/v3.0.1...v3.0.2 -[3.0.1]: https://github.com/Automattic/jetpack-status/compare/v3.0.0...v3.0.1 -[3.0.0]: https://github.com/Automattic/jetpack-status/compare/v2.2.2...v3.0.0 -[2.2.2]: https://github.com/Automattic/jetpack-status/compare/v2.2.1...v2.2.2 -[2.2.1]: https://github.com/Automattic/jetpack-status/compare/v2.2.0...v2.2.1 -[2.2.0]: https://github.com/Automattic/jetpack-status/compare/v2.1.3...v2.2.0 -[2.1.3]: https://github.com/Automattic/jetpack-status/compare/v2.1.2...v2.1.3 -[2.1.2]: https://github.com/Automattic/jetpack-status/compare/v2.1.1...v2.1.2 -[2.1.1]: https://github.com/Automattic/jetpack-status/compare/v2.1.0...v2.1.1 -[2.1.0]: https://github.com/Automattic/jetpack-status/compare/v2.0.2...v2.1.0 -[2.0.2]: https://github.com/Automattic/jetpack-status/compare/v2.0.1...v2.0.2 -[2.0.1]: https://github.com/Automattic/jetpack-status/compare/v2.0.0...v2.0.1 -[2.0.0]: https://github.com/Automattic/jetpack-status/compare/v1.19.0...v2.0.0 -[1.19.0]: https://github.com/Automattic/jetpack-status/compare/v1.18.5...v1.19.0 -[1.18.5]: https://github.com/Automattic/jetpack-status/compare/v1.18.4...v1.18.5 -[1.18.4]: https://github.com/Automattic/jetpack-status/compare/v1.18.3...v1.18.4 -[1.18.3]: https://github.com/Automattic/jetpack-status/compare/v1.18.2...v1.18.3 -[1.18.2]: https://github.com/Automattic/jetpack-status/compare/v1.18.1...v1.18.2 -[1.18.1]: https://github.com/Automattic/jetpack-status/compare/v1.18.0...v1.18.1 -[1.18.0]: https://github.com/Automattic/jetpack-status/compare/v1.17.2...v1.18.0 -[1.17.2]: https://github.com/Automattic/jetpack-status/compare/v1.17.1...v1.17.2 -[1.17.1]: https://github.com/Automattic/jetpack-status/compare/v1.17.0...v1.17.1 -[1.17.0]: https://github.com/Automattic/jetpack-status/compare/v1.16.4...v1.17.0 -[1.16.4]: https://github.com/Automattic/jetpack-status/compare/v1.16.3...v1.16.4 -[1.16.3]: https://github.com/Automattic/jetpack-status/compare/v1.16.2...v1.16.3 -[1.16.2]: https://github.com/Automattic/jetpack-status/compare/v1.16.1...v1.16.2 -[1.16.1]: https://github.com/Automattic/jetpack-status/compare/v1.16.0...v1.16.1 -[1.16.0]: https://github.com/Automattic/jetpack-status/compare/v1.15.4...v1.16.0 -[1.15.4]: https://github.com/Automattic/jetpack-status/compare/v1.15.3...v1.15.4 -[1.15.3]: https://github.com/Automattic/jetpack-status/compare/v1.15.2...v1.15.3 -[1.15.2]: https://github.com/Automattic/jetpack-status/compare/v1.15.1...v1.15.2 -[1.15.1]: https://github.com/Automattic/jetpack-status/compare/v1.15.0...v1.15.1 -[1.15.0]: https://github.com/Automattic/jetpack-status/compare/v1.14.3...v1.15.0 -[1.14.3]: https://github.com/Automattic/jetpack-status/compare/v1.14.2...v1.14.3 -[1.14.2]: https://github.com/Automattic/jetpack-status/compare/v1.14.1...v1.14.2 -[1.14.1]: https://github.com/Automattic/jetpack-status/compare/v1.14.0...v1.14.1 -[1.14.0]: https://github.com/Automattic/jetpack-status/compare/v1.13.6...v1.14.0 -[1.13.6]: https://github.com/Automattic/jetpack-status/compare/v1.13.5...v1.13.6 -[1.13.5]: https://github.com/Automattic/jetpack-status/compare/v1.13.4...v1.13.5 -[1.13.4]: https://github.com/Automattic/jetpack-status/compare/v1.13.3...v1.13.4 -[1.13.3]: https://github.com/Automattic/jetpack-status/compare/v1.13.2...v1.13.3 -[1.13.2]: https://github.com/Automattic/jetpack-status/compare/v1.13.1...v1.13.2 -[1.13.1]: https://github.com/Automattic/jetpack-status/compare/v1.13.0...v1.13.1 -[1.13.0]: https://github.com/Automattic/jetpack-status/compare/v1.12.0...v1.13.0 -[1.12.0]: https://github.com/Automattic/jetpack-status/compare/v1.11.2...v1.12.0 -[1.11.2]: https://github.com/Automattic/jetpack-status/compare/v1.11.1...v1.11.2 -[1.11.1]: https://github.com/Automattic/jetpack-status/compare/v1.11.0...v1.11.1 -[1.11.0]: https://github.com/Automattic/jetpack-status/compare/v1.10.0...v1.11.0 -[1.10.0]: https://github.com/Automattic/jetpack-status/compare/v1.9.5...v1.10.0 -[1.9.5]: https://github.com/Automattic/jetpack-status/compare/v1.9.4...v1.9.5 -[1.9.4]: https://github.com/Automattic/jetpack-status/compare/v1.9.3...v1.9.4 -[1.9.3]: https://github.com/Automattic/jetpack-status/compare/v1.9.2...v1.9.3 -[1.9.2]: https://github.com/Automattic/jetpack-status/compare/v1.9.1...v1.9.2 -[1.9.1]: https://github.com/Automattic/jetpack-status/compare/v1.9.0...v1.9.1 -[1.9.0]: https://github.com/Automattic/jetpack-status/compare/v1.8.4...v1.9.0 -[1.8.4]: https://github.com/Automattic/jetpack-status/compare/v1.8.3...v1.8.4 -[1.8.3]: https://github.com/Automattic/jetpack-status/compare/v1.8.2...v1.8.3 -[1.8.2]: https://github.com/Automattic/jetpack-status/compare/v1.8.1...v1.8.2 -[1.8.1]: https://github.com/Automattic/jetpack-status/compare/v1.8.0...v1.8.1 -[1.8.0]: https://github.com/Automattic/jetpack-status/compare/v1.7.6...v1.8.0 -[1.7.6]: https://github.com/Automattic/jetpack-status/compare/v1.7.5...v1.7.6 -[1.7.5]: https://github.com/Automattic/jetpack-status/compare/v1.7.4...v1.7.5 -[1.7.4]: https://github.com/Automattic/jetpack-status/compare/v1.7.3...v1.7.4 -[1.7.3]: https://github.com/Automattic/jetpack-status/compare/v1.7.2...v1.7.3 -[1.7.2]: https://github.com/Automattic/jetpack-status/compare/v1.7.1...v1.7.2 -[1.7.1]: https://github.com/Automattic/jetpack-status/compare/v1.7.0...v1.7.1 -[1.7.0]: https://github.com/Automattic/jetpack-status/compare/v1.6.0...v1.7.0 -[1.6.0]: https://github.com/Automattic/jetpack-status/compare/v1.5.0...v1.6.0 -[1.5.0]: https://github.com/Automattic/jetpack-status/compare/v1.4.0...v1.5.0 -[1.4.0]: https://github.com/Automattic/jetpack-status/compare/v1.3.0...v1.4.0 -[1.3.0]: https://github.com/Automattic/jetpack-status/compare/v1.2.0...v1.3.0 -[1.2.0]: https://github.com/Automattic/jetpack-status/compare/v1.1.1...v1.2.0 -[1.1.1]: https://github.com/Automattic/jetpack-status/compare/v1.1.0...v1.1.1 -[1.1.0]: https://github.com/Automattic/jetpack-status/compare/v1.0.4...v1.1.0 -[1.0.4]: https://github.com/Automattic/jetpack-status/compare/v1.0.3...v1.0.4 -[1.0.3]: https://github.com/Automattic/jetpack-status/compare/v1.0.2...v1.0.3 -[1.0.2]: https://github.com/Automattic/jetpack-status/compare/v1.0.1...v1.0.2 -[1.0.1]: https://github.com/Automattic/jetpack-status/compare/v1.0.0...v1.0.1 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/composer.json deleted file mode 100644 index 36689584..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/composer.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "automattic/jetpack-status", - "description": "Used to retrieve information about the current status of Jetpack and the site overall.", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2", - "automattic/jetpack-constants": "^3.0.5" - }, - "require-dev": { - "brain/monkey": "^2.6.2", - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-connection": "@dev", - "automattic/jetpack-plans": "@dev", - "automattic/jetpack-ip": "^0.4.6", - "automattic/phpunit-select-config": "^1.0.1" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "scripts": { - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" - ], - "test-php": [ - "@composer phpunit" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-status", - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-status/compare/v${old}...v${new}" - }, - "branch-alias": { - "dev-trunk": "5.0.x-dev" - }, - "dependencies": { - "test-only": [ - "packages/connection", - "packages/plans" - ] - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-cache.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-cache.php deleted file mode 100644 index e28f69f5..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-cache.php +++ /dev/null @@ -1,54 +0,0 @@ -admin_url(); - $bits = wp_parse_url( $admin_url ); - - if ( is_array( $bits ) ) { - $path = ( isset( $bits['path'] ) ) ? dirname( $bits['path'] ) : null; - $domain = ( isset( $bits['host'] ) ) ? $bits['host'] : null; - } else { - $path = null; - $domain = null; - } - } - - // Extract state from cookies and delete cookies. - if ( isset( $_COOKIE['jetpackState'] ) && is_array( $_COOKIE['jetpackState'] ) ) { - // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- User should sanitize if necessary. - $yum = wp_unslash( $_COOKIE['jetpackState'] ); - unset( $_COOKIE['jetpackState'] ); - foreach ( $yum as $k => $v ) { - if ( strlen( $v ) ) { - $state[ $k ] = $v; - } - setcookie( "jetpackState[$k]", false, 0, $path, $domain, is_ssl(), true ); - } - } - - if ( $restate ) { - foreach ( $state as $k => $v ) { - setcookie( "jetpackState[$k]", $v, 0, $path, $domain, is_ssl(), true ); - } - return; - } - - // Get a state variable. - if ( isset( $key ) && ! isset( $value ) ) { - if ( array_key_exists( $key, $state ) ) { - return $state[ $key ]; - } - return null; - } - - // Set a state variable. - if ( isset( $key ) && isset( $value ) ) { - if ( is_array( $value ) && isset( $value[0] ) ) { - $value = $value[0]; - } - $state[ $key ] = $value; - if ( ! headers_sent() ) { - if ( $this->should_set_cookie( $key ) ) { - setcookie( "jetpackState[$key]", $value, 0, $path, $domain, is_ssl(), true ); - } - } - } - } - - /** - * Determines whether the jetpackState[$key] value should be added to the - * cookie. - * - * @param string $key The state key. - * - * @return boolean Whether the value should be added to the cookie. - */ - public function should_set_cookie( $key ) { - global $current_screen; - $page = isset( $current_screen->base ) ? $current_screen->base : null; - - if ( 'toplevel_page_jetpack' === $page && 'display_update_modal' === $key ) { - return false; - } - - return true; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-errors.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-errors.php deleted file mode 100644 index d2208017..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-errors.php +++ /dev/null @@ -1,49 +0,0 @@ -is_atomic_platform() && Constants::is_true( 'WPCOMSH__PLUGIN_FILE' ); - Cache::set( 'is_woa_site', $ret ); - } - return $ret; - } - - /** - * Determine if the site is hosted on the Atomic hosting platform. - * - * @since 1.9.0 - * - * @return bool - */ - public function is_atomic_platform() { - return Constants::is_true( 'ATOMIC_SITE_ID' ) && Constants::is_true( 'ATOMIC_CLIENT_ID' ); - } - - /** - * Determine if this is a Newspack site. - * - * @return bool - */ - public function is_newspack_site() { - return Constants::is_defined( 'NEWSPACK_PLUGIN_FILE' ); - } - - /** - * Determine if this is a VIP-hosted site. - * - * @return bool - */ - public function is_vip_site() { - return Constants::is_defined( 'WPCOM_IS_VIP_ENV' ) && true === Constants::get_constant( 'WPCOM_IS_VIP_ENV' ); - } - - /** - * Determine if this is a Simple platform site. - * - * @return bool - */ - public function is_wpcom_simple() { - return Constants::is_defined( 'IS_WPCOM' ) && true === Constants::get_constant( 'IS_WPCOM' ); - } - - /** - * Determine if this is a WordPress.com site. - * - * Includes both Simple and WoA platforms. - * - * @return bool - */ - public function is_wpcom_platform() { - return $this->is_wpcom_simple() || $this->is_woa_site(); - } - - /** - * Add all wordpress.com environments to the safe redirect allowed list. - * - * To be used with a filter of allowed domains for a redirect. - * - * @param array $domains Allowed WP.com Environments. - */ - public static function allow_wpcom_environments( $domains ) { - $domains[] = 'wordpress.com'; - $domains[] = 'jetpack.wordpress.com'; - $domains[] = 'wpcalypso.wordpress.com'; - $domains[] = 'horizon.wordpress.com'; - $domains[] = 'calypso.localhost'; - return $domains; - } - - /** - * Return Calypso environment value; used for developing Jetpack and pairing - * it with different Calypso environments, such as localhost. - * - * @since 1.18.0 - * - * @return string Calypso environment - */ - public function get_calypso_env() { - // phpcs:disable WordPress.Security.NonceVerification.Recommended -- Nonce is not required; only used for changing environments. - if ( isset( $_GET['calypso_env'] ) ) { - return sanitize_key( $_GET['calypso_env'] ); - } - // phpcs:enable WordPress.Security.NonceVerification.Recommended - - if ( getenv( 'CALYPSO_ENV' ) ) { - return sanitize_key( getenv( 'CALYPSO_ENV' ) ); - } - - if ( defined( 'CALYPSO_ENV' ) && CALYPSO_ENV ) { - return sanitize_key( CALYPSO_ENV ); - } - - return ''; - } - - /** - * Return source query param value from the URL if exists in the allowed sources list. - * - * @return string "source" query param value - */ - public function get_source_query() { - // phpcs:disable WordPress.Security.NonceVerification.Recommended - $allowed_sources = array( 'jetpack-manage', 'a8c-for-agencies' ); - if ( isset( $_GET['source'] ) && in_array( $_GET['source'], $allowed_sources, true ) ) { - return sanitize_key( $_GET['source'] ); - } - - return ''; - } - - /** - * Returns an array of nameservers for the current site. - * - * @param string $domain The domain of the site to check. - * @return array - */ - public function get_nameserver_dns_records( $domain ) { - if ( ! function_exists( 'dns_get_record' ) ) { - return array(); - } - - $dns_records = dns_get_record( $domain, DNS_NS ); // Fetches the DNS records of type NS (Name Server) - if ( false === $dns_records ) { - return array(); - } - - $nameservers = array(); - foreach ( $dns_records as $record ) { - if ( isset( $record['target'] ) ) { - $nameservers[] = $record['target']; // Adds the nameserver to the array - } - } - - return $nameservers; // Returns an array of nameserver names - } - - /** - * Given a DNS entry, will return a hosting provider if one can be determined. Otherwise, will return 'unknown'. - * Sourced from: fbhepr%2Skers%2Sjcpbz%2Sjc%2Qpbagrag%2Syvo%2Subfgvat%2Qcebivqre%2Sanzrfreiref.cuc-og - * - * @param string $domain The domain of the site to check. - * @return string The hosting provider of 'unknown'. - */ - public function get_hosting_provider_by_nameserver( $domain ) { - $known_nameservers = array( - 'bluehost' => array( - '.bluehost.com', - ), - 'dreamhost' => array( - '.dreamhost.com', - ), - 'mediatemple' => array( - '.mediatemple.net', - ), - 'xserver' => array( - '.xserver.jp', - ), - 'namecheap' => array( - '.namecheaphosting.com', - ), - 'hostmonster' => array( - '.hostmonster.com', - ), - 'justhost' => array( - '.justhost.com', - ), - 'digitalocean' => array( - '.digitalocean.com', - ), - 'one' => array( - '.one.com', - ), - 'hostpapa' => array( - '.hostpapa.com', - ), - 'siteground' => array( - '.sgcloud.net', - '.sgedu.site', - '.sgsrv1.com', - '.sgvps.net', - '.siteground.biz', - '.siteground.net', - '.siteground.eu', - ), - 'inmotion' => array( - '.inmotionhosting.com', - ), - 'ionos' => array( - '.ui-dns.org', - '.ui-dns.de', - '.ui-dns.biz', - '.ui-dns.com', - ), - ); - - $dns_records = $this->get_nameserver_dns_records( $domain ); - $dns_records = array_map( 'strtolower', $dns_records ); - - foreach ( $known_nameservers as $host => $ns_patterns ) { - foreach ( $ns_patterns as $ns_pattern ) { - foreach ( $dns_records as $record ) { - if ( false !== strpos( $record, $ns_pattern ) ) { - return $host; - } - } - } - } - - return 'unknown'; - } - - /** - * Returns a guess of the hosting provider for the current site based on various checks. - * - * @since 5.0.4 Added $guess parameter. - * - * @param bool $guess Whether to guess the hosting provider. - * - * @return string - */ - public function get_known_host_guess( $guess = true ) { - $host = Cache::get( 'host_guess' ); - - if ( null !== $host ) { - return $host; - } - - // First, let's check if we can recognize provider manually: - switch ( true ) { - case $this->is_woa_site(): - $provider = 'woa'; - break; - case $this->is_atomic_platform(): - $provider = 'atomic'; - break; - case $this->is_newspack_site(): - $provider = 'newspack'; - break; - case $this->is_vip_site(): - $provider = 'vip'; - break; - case $this->is_wpcom_simple(): - case $this->is_wpcom_platform(): - $provider = 'wpcom'; - break; - default: - $provider = 'unknown'; - break; - } - - // Second, let's check if we can recognize provider by nameservers. - // Only do this if we're asked to guess. - $domain = isset( $_SERVER['SERVER_NAME'] ) ? sanitize_text_field( wp_unslash( $_SERVER['SERVER_NAME'] ) ) : ''; - if ( $provider === 'unknown' && ! empty( $domain ) && $guess ) { - $provider = $this->get_hosting_provider_by_nameserver( $domain ); - } - - Cache::set( 'host_guess', $provider ); - return $provider; - } - - /** - * Add public-api.wordpress.com to the safe redirect allowed list - only added when someone allows API access. - * - * @since 3.0.2 Ported from Jetpack to the Status package. - * - * To be used with a filter of allowed domains for a redirect. - * - * @param array $domains Allowed WP.com Environments. - * - * @return array - */ - public static function allow_wpcom_public_api_domain( $domains ) { - $domains[] = 'public-api.wordpress.com'; - return $domains; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-modules.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-modules.php deleted file mode 100644 index 80fb33b8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-modules.php +++ /dev/null @@ -1,609 +0,0 @@ -get_path( $this->get_slug( $module ) ); - - if ( isset( $modules_details[ $module ] ) ) { - $mod = $modules_details[ $module ]; - } else { - $mod = jetpack_get_module_info( $module ); - - if ( null === $mod ) { - // Try to get the module info from the file as a fallback. - $mod = $this->get_file_data( $file, jetpack_get_all_module_header_names() ); - - if ( empty( $mod['name'] ) ) { - // No info for this module. - return false; - } - } - - $mod['sort'] = empty( $mod['sort'] ) ? 10 : (int) $mod['sort']; - $mod['recommendation_order'] = empty( $mod['recommendation_order'] ) ? 20 : (int) $mod['recommendation_order']; - $mod['deactivate'] = empty( $mod['deactivate'] ); - $mod['free'] = empty( $mod['free'] ); - $mod['requires_connection'] = ( ! empty( $mod['requires_connection'] ) && 'No' === $mod['requires_connection'] ) ? false : true; - $mod['requires_user_connection'] = ( empty( $mod['requires_user_connection'] ) || 'No' === $mod['requires_user_connection'] ) ? false : true; - - if ( empty( $mod['auto_activate'] ) || ! in_array( strtolower( $mod['auto_activate'] ), array( 'yes', 'no', 'public' ), true ) ) { - $mod['auto_activate'] = 'No'; - } else { - $mod['auto_activate'] = (string) $mod['auto_activate']; - } - - if ( $mod['module_tags'] ) { - $mod['module_tags'] = explode( ',', $mod['module_tags'] ); - $mod['module_tags'] = array_map( 'trim', $mod['module_tags'] ); - } else { - $mod['module_tags'] = array( 'Other' ); - } - - if ( $mod['plan_classes'] ) { - $mod['plan_classes'] = explode( ',', $mod['plan_classes'] ); - $mod['plan_classes'] = array_map( 'strtolower', array_map( 'trim', $mod['plan_classes'] ) ); - } else { - $mod['plan_classes'] = array( 'free' ); - } - - if ( $mod['feature'] ) { - $mod['feature'] = explode( ',', $mod['feature'] ); - $mod['feature'] = array_map( 'trim', $mod['feature'] ); - } else { - $mod['feature'] = array( 'Other' ); - } - - $modules_details[ $module ] = $mod; - - } - - /** - * Filters the feature array on a module. - * - * This filter allows you to control where each module is filtered: Recommended, - * and the default "Other" listing. - * - * @since-jetpack 3.5.0 - * - * @param array $mod['feature'] The areas to feature this module: - * 'Recommended' shows on the main Jetpack admin screen. - * 'Other' should be the default if no other value is in the array. - * @param string $module The slug of the module, e.g. sharedaddy. - * @param array $mod All the currently assembled module data. - */ - $mod['feature'] = apply_filters( 'jetpack_module_feature', $mod['feature'], $module, $mod ); - - /** - * Filter the returned data about a module. - * - * This filter allows overriding any info about Jetpack modules. It is dangerous, - * so please be careful. - * - * @since-jetpack 3.6.0 - * - * @param array $mod The details of the requested module. - * @param string $module The slug of the module, e.g. sharedaddy - * @param string $file The path to the module source file. - */ - return apply_filters( 'jetpack_get_module', $mod, $module, $file ); - } - - /** - * Like core's get_file_data implementation, but caches the result. - * - * @param string $file Absolute path to the file. - * @param array $headers List of headers, in the format array( 'HeaderKey' => 'Header Name' ). - */ - public function get_file_data( $file, $headers ) { - // Get just the filename from $file (i.e. exclude full path) so that a consistent hash is generated. - $file_name = basename( $file ); - - if ( ! Constants::is_defined( 'JETPACK__VERSION' ) ) { - return get_file_data( $file, $headers ); - } - - $cache_key = 'jetpack_file_data_' . JETPACK__VERSION; - - $file_data_option = get_transient( $cache_key ); - - if ( ! is_array( $file_data_option ) ) { - delete_transient( $cache_key ); - $file_data_option = false; - } - - if ( false === $file_data_option ) { - $file_data_option = array(); - } - - $key = md5( $file_name . maybe_serialize( $headers ) ); - $refresh_cache = is_admin() && isset( $_GET['page'] ) && is_string( $_GET['page'] ) && str_starts_with( $_GET['page'], 'jetpack' ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput - - // If we don't need to refresh the cache, and already have the value, short-circuit! - if ( ! $refresh_cache && isset( $file_data_option[ $key ] ) ) { - return $file_data_option[ $key ]; - } - - $data = get_file_data( $file, $headers ); - - $file_data_option[ $key ] = $data; - - set_transient( $cache_key, $file_data_option, 29 * DAY_IN_SECONDS ); - - return $data; - } - - /** - * Get a list of activated modules as an array of module slugs. - * - * @param bool $available_only Filter out the unavailable (deleted) modules. - * - * @return array - */ - public function get_active( $available_only = true ) { - $active = \Jetpack_Options::get_option( 'active_modules' ); - - if ( ! is_array( $active ) ) { - $active = array(); - } - - if ( class_exists( 'VaultPress' ) || function_exists( 'vaultpress_contact_service' ) ) { - $active[] = 'vaultpress'; - } else { - $active = array_diff( $active, array( 'vaultpress' ) ); - } - - // If protect is active on the main site of a multisite, it should be active on all sites. Doesn't apply to WP.com. - if ( ! in_array( 'protect', $active, true ) - && ! ( new Host() )->is_wpcom_simple() - && is_multisite() - && get_site_option( 'jetpack_protect_active' ) ) { - $active[] = 'protect'; - } - - if ( $available_only ) { - // If it's not available, it shouldn't be active. - // We don't delete it from the options though, as it will be active again when a plugin gets reactivated. - $active = array_intersect( $active, $this->get_available() ); - } - - /** - * Allow filtering of the active modules. - * - * Gives theme and plugin developers the power to alter the modules that - * are activated on the fly. - * - * @since-jetpack 5.8.0 - * - * @param array $active Array of active module slugs. - */ - $active = apply_filters( 'jetpack_active_modules', $active ); - - return array_unique( $active ); - } - - /** - * Extract a module's slug from its full path. - * - * @param string $file Full path to a file. - * - * @return string Module slug. - */ - public function get_slug( $file ) { - return str_replace( '.php', '', basename( $file ) ); - } - - /** - * List available Jetpack modules. Simply lists .php files in /modules/. - * Make sure to tuck away module "library" files in a sub-directory. - * - * @param bool|string $min_version Only return modules introduced in this version or later. Default is false, do not filter. - * @param bool|string $max_version Only return modules introduced before this version. Default is false, do not filter. - * @param bool|null $requires_connection Pass a boolean value to only return modules that require (or do not require) a connection. - * @param bool|null $requires_user_connection Pass a boolean value to only return modules that require (or do not require) a user connection. - * - * @return array $modules Array of module slugs - */ - public function get_available( $min_version = false, $max_version = false, $requires_connection = null, $requires_user_connection = null ) { - static $modules = null; - - if ( ! class_exists( 'Jetpack' ) || ! Constants::is_defined( 'JETPACK__VERSION' ) || ! Constants::is_defined( 'JETPACK__PLUGIN_DIR' ) ) { - return array_unique( - /** - * Stand alone plugins need to use this filter to register the modules they interact with. - * This will allow them to activate and deactivate these modules even when Jetpack is not present. - * Note: Standalone plugins can only interact with modules that also exist in the Jetpack plugin, otherwise they'll lose the ability to control it if Jetpack is activated. - * - * @since 1.13.6 - * - * @param array $modules The list of available modules as an array of slugs. - * @param bool $requires_connection Whether to list only modules that require a connection to work. - * @param bool $requires_user_connection Whether to list only modules that require a user connection to work. - */ - apply_filters( 'jetpack_get_available_standalone_modules', array(), $requires_connection, $requires_user_connection ) - ); - } - - if ( ! isset( $modules ) ) { - $available_modules_option = \Jetpack_Options::get_option( 'available_modules', array() ); - // Use the cache if we're on the front-end and it's available... - if ( ! is_admin() && ! empty( $available_modules_option[ JETPACK__VERSION ] ) ) { - $modules = $available_modules_option[ JETPACK__VERSION ]; - } else { - $files = ( new Files() )->glob_php( JETPACK__PLUGIN_DIR . 'modules' ); - - $modules = array(); - - foreach ( $files as $file ) { - $slug = $this->get_slug( $file ); - $headers = $this->get( $slug ); - - if ( ! $headers ) { - continue; - } - - $modules[ $slug ] = $headers['introduced']; - } - - \Jetpack_Options::update_option( - 'available_modules', - array( - JETPACK__VERSION => $modules, - ) - ); - } - } - - /** - * Filters the array of modules available to be activated. - * - * @since 2.4.0 - * - * @param array $modules Array of available modules. - * @param string $min_version Minimum version number required to use modules. - * @param string $max_version Maximum version number required to use modules. - * @param bool|null $requires_connection Value of the Requires Connection filter. - * @param bool|null $requires_user_connection Value of the Requires User Connection filter. - */ - $mods = apply_filters( 'jetpack_get_available_modules', $modules, $min_version, $max_version, $requires_connection, $requires_user_connection ); - - if ( ! $min_version && ! $max_version && $requires_connection === null && $requires_user_connection === null ) { - return array_keys( $mods ); - } - - $r = array(); - foreach ( $mods as $slug => $introduced ) { - if ( $min_version && version_compare( $min_version, $introduced, '>=' ) ) { - continue; - } - - if ( $max_version && version_compare( $max_version, $introduced, '<' ) ) { - continue; - } - - $mod_details = $this->get( $slug ); - - if ( null !== $requires_connection && (bool) $requires_connection !== $mod_details['requires_connection'] ) { - continue; - } - - if ( null !== $requires_user_connection && (bool) $requires_user_connection !== $mod_details['requires_user_connection'] ) { - continue; - } - - $r[] = $slug; - } - - return $r; - } - - /** - * Is slug a valid module. - * - * @param string $module Module slug. - * - * @return bool - */ - public function is_module( $module ) { - return ! empty( $module ) && ! validate_file( $module, $this->get_available() ); - } - - /** - * Update module status. - * - * @param string $module - module slug. - * @param boolean $active - true to activate, false to deactivate. - * @param bool $exit Should exit be called after deactivation. - * @param bool $redirect Should there be a redirection after activation. - */ - public function update_status( $module, $active, $exit = true, $redirect = true ) { - return $active ? $this->activate( $module, $exit, $redirect ) : $this->deactivate( $module ); - } - - /** - * Activate a module. - * - * @param string $module Module slug. - * @param bool $exit Should exit be called after deactivation. - * @param bool $redirect Should there be a redirection after activation. - * - * @return bool|void - */ - public function activate( $module, $exit = true, $redirect = true ) { - /** - * Fires before a module is activated. - * - * @since 2.6.0 - * - * @param string $module Module slug. - * @param bool $exit Should we exit after the module has been activated. Default to true. - * @param bool $redirect Should the user be redirected after module activation? Default to true. - */ - do_action( 'jetpack_pre_activate_module', $module, $exit, $redirect ); - - if ( ! strlen( $module ) ) { - return false; - } - - // If it's already active, then don't do it again. - $active = $this->get_active(); - foreach ( $active as $act ) { - if ( $act === $module ) { - return true; - } - } - - if ( ! $this->is_module( $module ) ) { - return false; - } - - // Jetpack plugin only - if ( class_exists( 'Jetpack' ) ) { - - $module_data = $this->get( $module ); - - $status = new Status(); - $state = new CookieState(); - - if ( ! \Jetpack::is_connection_ready() ) { - if ( ! $status->is_offline_mode() ) { - return false; - } - - // If we're not connected but in offline mode, make sure the module doesn't require a connection. - if ( $status->is_offline_mode() && $module_data['requires_connection'] ) { - return false; - } - } - - if ( class_exists( 'Jetpack_Client_Server' ) ) { - $jetpack = \Jetpack::init(); - - // Check and see if the old plugin is active. - if ( isset( $jetpack->plugins_to_deactivate[ $module ] ) ) { - // Deactivate the old plugins. - $deactivated = array(); - foreach ( $jetpack->plugins_to_deactivate[ $module ] as $idx => $deactivate_me ) { - if ( \Jetpack_Client_Server::deactivate_plugin( $deactivate_me[0], $deactivate_me[1] ) ) { - // If we deactivated the old plugin, remembere that with ::state() and redirect back to this page to activate the module - // We can't activate the module on this page load since the newly deactivated old plugin is still loaded on this page load. - $deactivated[] = "$module:$idx"; - } - } - if ( $deactivated ) { - $state->state( 'deactivated_plugins', implode( ',', $deactivated ) ); - wp_safe_redirect( add_query_arg( 'jetpack_restate', 1 ) ); - exit( 0 ); - } - } - } - - // Protect won't work with mis-configured IPs. - if ( 'protect' === $module ) { - if ( ! IP_Utils::get_ip() ) { - $state->state( 'message', 'protect_misconfigured_ip' ); - return false; - } - } - - if ( ! Jetpack_Plan::supports( $module ) ) { - return false; - } - - // Check the file for fatal errors, a la wp-admin/plugins.php::activate. - $state->state( 'module', $module ); - $state->state( 'error', 'module_activation_failed' ); // we'll override this later if the plugin can be included without fatal error. - - ob_start(); - $module_path = $this->get_path( $module ); - if ( file_exists( $module_path ) ) { - require $this->get_path( $module ); // phpcs:ignore WordPressVIPMinimum.Files.IncludingFile.NotAbsolutePath - } - - $active[] = $module; - $this->update_active( $active ); - - $state->state( 'error', false ); // the override. - ob_end_clean(); - } else { // Not a Jetpack plugin. - $active[] = $module; - $this->update_active( $active ); - } - - if ( $redirect ) { - wp_safe_redirect( ( new Paths() )->admin_url( 'page=jetpack' ) ); - } - if ( $exit ) { - exit( 0 ); - } - return true; - } - - /** - * Deactivate module. - * - * @param string $module Module slug. - * - * @return bool - */ - public function deactivate( $module ) { - /** - * Fires when a module is deactivated. - * - * @since 1.9.0 - * - * @param string $module Module slug. - */ - do_action( 'jetpack_pre_deactivate_module', $module ); - - $active = $this->get_active(); - $new = array_filter( array_diff( $active, (array) $module ) ); - - return $this->update_active( $new ); - } - - /** - * Generate a module's path from its slug. - * - * @param string $slug Module slug. - */ - public function get_path( $slug ) { - if ( ! Constants::is_defined( 'JETPACK__PLUGIN_DIR' ) ) { - return ''; - } - /** - * Filters the path of a modules. - * - * @since 7.4.0 - * - * @param array $return The absolute path to a module's root php file - * @param string $slug The module slug - */ - return apply_filters( 'jetpack_get_module_path', JETPACK__PLUGIN_DIR . "modules/$slug.php", $slug ); - } - - /** - * Saves all the currently active modules to options. - * Also fires Action hooks for each newly activated and deactivated module. - * - * @param array $modules Array of active modules to be saved in options. - * - * @return bool $success true for success, false for failure. - */ - public function update_active( $modules ) { - $current_modules = \Jetpack_Options::get_option( 'active_modules', array() ); - $active_modules = $this->get_active(); - $new_active_modules = array_diff( $modules, $current_modules ); - $new_inactive_modules = array_diff( $active_modules, $modules ); - $new_current_modules = array_diff( array_merge( $current_modules, $new_active_modules ), $new_inactive_modules ); - $reindexed_modules = array_values( $new_current_modules ); - $success = \Jetpack_Options::update_option( 'active_modules', array_unique( $reindexed_modules ) ); - // Let's take `pre_update_option_jetpack_active_modules` filter into account - // and actually decide for which modules we need to fire hooks by comparing - // the 'active_modules' option before and after the update. - $current_modules_post_update = \Jetpack_Options::get_option( 'active_modules', array() ); - - $new_inactive_modules = array_diff( $current_modules, $current_modules_post_update ); - $new_inactive_modules = array_unique( $new_inactive_modules ); - $new_inactive_modules = array_values( $new_inactive_modules ); - - $new_active_modules = array_diff( $current_modules_post_update, $current_modules ); - $new_active_modules = array_unique( $new_active_modules ); - $new_active_modules = array_values( $new_active_modules ); - - foreach ( $new_active_modules as $module ) { - /** - * Fires when a specific module is activated. - * - * @since 1.9.0 - * - * @param string $module Module slug. - * @param boolean $success whether the module was activated. @since 4.2 - */ - do_action( 'jetpack_activate_module', $module, $success ); - /** - * Fires when a module is activated. - * The dynamic part of the filter, $module, is the module slug. - * - * @since 1.9.0 - * - * @param string $module Module slug. - */ - do_action( "jetpack_activate_module_$module", $module ); - } - - foreach ( $new_inactive_modules as $module ) { - /** - * Fired after a module has been deactivated. - * - * @since 4.2.0 - * - * @param string $module Module slug. - * @param boolean $success whether the module was deactivated. - */ - do_action( 'jetpack_deactivate_module', $module, $success ); - /** - * Fires when a module is deactivated. - * The dynamic part of the filter, $module, is the module slug. - * - * @since 1.9.0 - * - * @param string $module Module slug. - */ - do_action( "jetpack_deactivate_module_$module", $module ); - } - - return $success; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-paths.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-paths.php deleted file mode 100644 index 7ef200b4..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-paths.php +++ /dev/null @@ -1,81 +0,0 @@ - 'jetpack' ) ); - $url = add_query_arg( $args, admin_url( 'admin.php' ) ); - return $url; - } - - /** - * Determine if the current request is activating a plugin from the plugins page. - * - * @param string $plugin Plugin file path to check. - * @return bool - */ - public function is_current_request_activating_plugin_from_plugins_screen( $plugin ) { - // Filter out common async request contexts - if ( - wp_doing_ajax() || - ( defined( 'REST_REQUEST' ) && REST_REQUEST ) || - ( defined( 'REST_API_REQUEST' ) && REST_API_REQUEST ) || - ( defined( 'WP_CLI' ) && WP_CLI ) - ) { - return false; - } - - if ( isset( $_SERVER['SCRIPT_NAME'] ) ) { - $request_file = esc_url_raw( wp_unslash( $_SERVER['SCRIPT_NAME'] ) ); - } elseif ( isset( $_SERVER['REQUEST_URI'] ) ) { - list( $request_file ) = explode( '?', esc_url_raw( wp_unslash( $_SERVER['REQUEST_URI'] ) ) ); - } else { - return false; - } - - // Not the plugins page - if ( strpos( $request_file, 'wp-admin/plugins.php' ) === false ) { - return false; - } - - // Same method to get the action as used by plugins.php - $wp_list_table = _get_list_table( 'WP_Plugins_List_Table' ); - $action = $wp_list_table->current_action(); - - // Not a singular activation - // This also means that if the plugin is activated as part of a group ( bulk activation ), this function will return false here. - if ( 'activate' !== $action ) { - return false; - } - - // Check the nonce associated with the plugin activation - // We are not changing any data here, so this is not super necessary, it's just a best practice before using the form data from $_REQUEST. - check_admin_referer( 'activate-plugin_' . $plugin ); - - // Not the right plugin - $requested_plugin = isset( $_REQUEST['plugin'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['plugin'] ) ) : null; - if ( $requested_plugin !== $plugin ) { - return false; - } - - return true; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-status.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-status.php deleted file mode 100644 index 83c5c22f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-status.php +++ /dev/null @@ -1,434 +0,0 @@ -is_local_site() ) { - $offline_mode = true; - } - - /** - * Filters Jetpack's offline mode. - * - * @see https://jetpack.com/support/offline-mode/ - * - * @since 1.3.0 - * - * @param bool $offline_mode Is Jetpack's offline mode active. - */ - $offline_mode = (bool) apply_filters( 'jetpack_offline_mode', $offline_mode ); - - Cache::set( 'is_offline_mode', $offline_mode ); - return $offline_mode; - } - - /** - * Whether this is a system with a multiple networks. - * Implemented since there is no core is_multi_network function. - * Right now there is no way to tell which network is the dominant network on the system. - * - * @return boolean - */ - public function is_multi_network() { - global $wpdb; - - $cached = Cache::get( 'is_multi_network' ); - if ( null !== $cached ) { - return $cached; - } - - // If we don't have a multi site setup no need to do any more. - if ( ! is_multisite() ) { - Cache::set( 'is_multi_network', false ); - return false; - } - - $num_sites = $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->site}" ); - if ( $num_sites > 1 ) { - Cache::set( 'is_multi_network', true ); - return true; - } - - Cache::set( 'is_multi_network', false ); - return false; - } - - /** - * Whether the current site is single user site. - * - * @return bool - */ - public function is_single_user_site() { - global $wpdb; - - $ret = Cache::get( 'is_single_user_site' ); - if ( null === $ret ) { - $some_users = get_transient( 'jetpack_is_single_user' ); - if ( false === $some_users ) { - $some_users = $wpdb->get_var( "SELECT COUNT(*) FROM (SELECT user_id FROM $wpdb->usermeta WHERE meta_key = '{$wpdb->prefix}capabilities' LIMIT 2) AS someusers" ); - set_transient( 'jetpack_is_single_user', (int) $some_users, 12 * HOUR_IN_SECONDS ); - } - $ret = 1 === (int) $some_users; - Cache::set( 'is_single_user_site', $ret ); - } - return $ret; - } - - /** - * If the site is a local site. - * - * @since 1.3.0 - * - * @return bool - */ - public function is_local_site() { - $cached = Cache::get( 'is_local_site' ); - if ( null !== $cached ) { - return $cached; - } - - $site_url = site_url(); - - // Check for localhost and sites using an IP only first. - // Note: str_contains() is not used here, as wp-includes/compat.php is not loaded in this file. - $is_local = $site_url && false === strpos( $site_url, '.' ); - - // Use Core's environment check, if available. - if ( 'local' === wp_get_environment_type() ) { - $is_local = true; - } - - // Then check for usual usual domains used by local dev tools. - $known_local = array( - '#\.local$#i', - '#\.localhost$#i', - '#\.test$#i', - '#\.docksal$#i', // Docksal. - '#\.docksal\.site$#i', // Docksal. - '#\.dev\.cc$#i', // ServerPress. - '#\.lndo\.site$#i', // Lando. - '#^https?://127\.0\.0\.1$#', - ); - - if ( ! $is_local ) { - foreach ( $known_local as $url ) { - if ( preg_match( $url, $site_url ) ) { - $is_local = true; - break; - } - } - } - - /** - * Filters is_local_site check. - * - * @since 1.3.0 - * - * @param bool $is_local If the current site is a local site. - */ - $is_local = apply_filters( 'jetpack_is_local_site', $is_local ); - - Cache::set( 'is_local_site', $is_local ); - return $is_local; - } - - /** - * If is a staging site. - * - * @deprecated since 3.3.0 - * - * @return bool - */ - public function is_staging_site() { - _deprecated_function( __FUNCTION__, '3.3.0', 'in_safe_mode' ); - $cached = Cache::get( 'is_staging_site' ); - if ( null !== $cached ) { - return $cached; - } - - /* - * Core's wp_get_environment_type allows for a few specific options. - * We should default to bowing out gracefully for anything other than production or local. - */ - $is_staging = ! in_array( wp_get_environment_type(), array( 'production', 'local' ), true ); - - $known_staging = array( - 'urls' => array( - '#\.staging\.wpengine\.com$#i', // WP Engine. This is their legacy staging URL structure. Their new platform does not have a common URL. https://github.com/Automattic/jetpack/issues/21504 - '#\.staging\.kinsta\.com$#i', // Kinsta.com. - '#\.kinsta\.cloud$#i', // Kinsta.com. - '#\.stage\.site$#i', // DreamPress. - '#\.newspackstaging\.com$#i', // Newspack. - '#^(?!live-)([a-zA-Z0-9-]+)\.pantheonsite\.io$#i', // Pantheon. - '#\.flywheelsites\.com$#i', // Flywheel. - '#\.flywheelstaging\.com$#i', // Flywheel. - '#\.cloudwaysapps\.com$#i', // Cloudways. - '#\.azurewebsites\.net$#i', // Azure. - '#\.wpserveur\.net$#i', // WPServeur. - '#\-liquidwebsites\.com$#i', // Liquidweb. - ), - 'constants' => array( - 'IS_WPE_SNAPSHOT', // WP Engine. This is used on their legacy staging environment. Their new platform does not have a constant. https://github.com/Automattic/jetpack/issues/21504 - 'KINSTA_DEV_ENV', // Kinsta.com. - 'WPSTAGECOACH_STAGING', // WP Stagecoach. - 'JETPACK_STAGING_MODE', // Generic. - 'WP_LOCAL_DEV', // Generic. - ), - ); - /** - * Filters the flags of known staging sites. - * - * @since 1.1.1 - * @since-jetpack 3.9.0 - * - * @param array $known_staging { - * An array of arrays that each are used to check if the current site is staging. - * @type array $urls URLs of staging sites in regex to check against site_url. - * @type array $constants PHP constants of known staging/developement environments. - * } - */ - $known_staging = apply_filters( 'jetpack_known_staging', $known_staging ); - - if ( isset( $known_staging['urls'] ) ) { - $site_url = site_url(); - foreach ( $known_staging['urls'] as $url ) { - if ( preg_match( $url, wp_parse_url( $site_url, PHP_URL_HOST ) ) ) { - $is_staging = true; - break; - } - } - } - - if ( isset( $known_staging['constants'] ) ) { - foreach ( $known_staging['constants'] as $constant ) { - if ( defined( $constant ) && constant( $constant ) ) { - $is_staging = true; - } - } - } - - // Last, let's check if sync is erroring due to an IDC. If so, set the site to staging mode. - if ( ! $is_staging && method_exists( 'Automattic\\Jetpack\\Identity_Crisis', 'validate_sync_error_idc_option' ) && \Automattic\Jetpack\Identity_Crisis::validate_sync_error_idc_option() ) { - $is_staging = true; - } - - /** - * Filters is_staging_site check. - * - * @since 1.1.1 - * @since-jetpack 3.9.0 - * - * @param bool $is_staging If the current site is a staging site. - */ - $is_staging = apply_filters( 'jetpack_is_staging_site', $is_staging ); - - Cache::set( 'is_staging_site', $is_staging ); - return $is_staging; - } - - /** - * If the site is in safe mode. - * - * @since 3.3.0 - * - * @return bool - */ - public function in_safe_mode() { - $cached = Cache::get( 'in_safe_mode' ); - if ( null !== $cached ) { - return $cached; - } - $in_safe_mode = false; - if ( method_exists( 'Automattic\\Jetpack\\Identity_Crisis', 'validate_sync_error_idc_option' ) && \Automattic\Jetpack\Identity_Crisis::validate_sync_error_idc_option() ) { - $in_safe_mode = true; - } - /** - * Filters in_safe_mode check. - * - * @since 3.3.0 - * - * @param bool $in_safe_mode If the current site is in safe mode. - */ - $in_safe_mode = apply_filters( 'jetpack_is_in_safe_mode', $in_safe_mode ); - - Cache::set( 'in_safe_mode', $in_safe_mode ); - return $in_safe_mode; - } - - /** - * If the site is a development/staging site. - * This is a new version of is_staging_site added to separate safe mode from the legacy staging mode. - * This method checks for core WP_ENVIRONMENT_TYPE setting - * Using the jetpack_is_development_site filter. - * - * @since 3.3.0 - * - * @return bool - */ - public static function is_development_site() { - $cached = Cache::get( 'is_development_site' ); - if ( null !== $cached ) { - return $cached; - } - $is_dev_site = ! in_array( wp_get_environment_type(), array( 'production', 'local' ), true ); - /** - * Filters is_development_site check. - * - * @since 3.3.0 - * - * @param bool $is_dev_site If the current site is a staging or dev site. - */ - $is_dev_site = apply_filters( 'jetpack_is_development_site', $is_dev_site ); - - Cache::set( 'is_development_site', $is_dev_site ); - return $is_dev_site; - } - - /** - * Whether the site is currently onboarding or not. - * A site is considered as being onboarded if it currently has an onboarding token. - * - * @since-jetpack 5.8 - * - * @deprecated since 4.0.0 - * - * @access public - * @static - * - * @return bool True if the site is currently onboarding, false otherwise - */ - public function is_onboarding() { - return \Jetpack_Options::get_option( 'onboarding' ) !== false; - } - - /** - * Whether the site is currently private or not. - * On WordPress.com and WoA, sites can be marked as private - * - * @since 1.16.0 - * - * @return bool True if the site is private. - */ - public function is_private_site() { - $ret = Cache::get( 'is_private_site' ); - if ( null === $ret ) { - $is_private_site = '-1' === get_option( 'blog_public' ); - - /** - * Filters the is_private_site check. - * - * @since 1.16.1 - * - * @param bool $is_private_site True if the site is private. - */ - $is_private_site = apply_filters( 'jetpack_is_private_site', $is_private_site ); - - Cache::set( 'is_private_site', $is_private_site ); - return $is_private_site; - } - return $ret; - } - - /** - * Whether the site is currently unlaunched or not. - * On WordPress.com and WoA, sites can be marked as "coming soon", aka unlaunched - * - * @since 1.16.0 - * - * @return bool True if the site is not launched. - */ - public function is_coming_soon() { - $ret = Cache::get( 'is_coming_soon' ); - if ( null === $ret ) { - $is_coming_soon = (bool) ( function_exists( 'site_is_coming_soon' ) && \site_is_coming_soon() ) - || get_option( 'wpcom_public_coming_soon' ); - - /** - * Filters the is_coming_soon check. - * - * @since 1.16.1 - * - * @param bool $is_coming_soon True if the site is coming soon (i.e. unlaunched). - */ - $is_coming_soon = apply_filters( 'jetpack_is_coming_soon', $is_coming_soon ); - - Cache::set( 'is_coming_soon', $is_coming_soon ); - return $is_coming_soon; - } - return $ret; - } - - /** - * Returns the site slug suffix to be used as part of Calypso URLs. - * - * Strips http:// or https:// from a url, replaces forward slash with ::. - * - * @since 1.6.0 - * - * @param string $url Optional. URL to build the site suffix from. Default: Home URL. - * - * @return string - */ - public function get_site_suffix( $url = '' ) { - // On WordPress.com, site suffixes are a bit different. - if ( method_exists( 'WPCOM_Masterbar', 'get_calypso_site_slug' ) ) { - return WPCOM_Masterbar::get_calypso_site_slug( get_current_blog_id() ); - } - - // Grab the 'site_url' option for WoA sites to avoid plugins to interfere with the site - // identifier (e.g. i18n plugins may change the main url to '/', but we - // want to exclude the locale since it's not part of the site suffix). - if ( ( new Host() )->is_woa_site() ) { - $url = \site_url(); - } - - if ( empty( $url ) ) { - // WordPress can be installed in subdirectories (e.g. make.wordpress.org/plugins) - // where the 'site_url' option points to the root domain (e.g. make.wordpress.org) - // which could collide with another site in the same domain but with WordPress - // installed in a different subdirectory (e.g. make.wordpress.org/core). To avoid - // such collision, we identify the site with the 'home_url' option. - $url = \home_url(); - } - - $url = preg_replace( '#^.*?://#', '', $url ); - $url = str_replace( '/', '::', $url ); - - return rtrim( $url, ':' ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-visitor.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-visitor.php deleted file mode 100644 index fae08755..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-status/src/class-visitor.php +++ /dev/null @@ -1,56 +0,0 @@ -= 7.0. [#34192] - -## [1.60.1] - 2023-10-31 - -## [1.60.0] - 2023-10-26 -### Removed -- Remove Jetpack option jetpack-memberships-connected-account-id. [#32354] - -## [1.59.2] - 2023-10-24 -### Changed -- Update sync version. - -## [1.59.1] - 2023-10-24 -### Added -- Sync: Add missing support for supplying additional columns to do checksum on. [#33440] - -## [1.59.0] - 2023-10-23 -### Changed -- Dedicated Sync: Update 'init' hook priority on Dedicated Sync requests to 0, in order to start sending Sync actions to WPCOM and exit as early as possible. [#33594] - -## [1.58.1] - 2023-10-18 -### Fixed -- Update dependencies. - -## [1.58.0] - 2023-10-16 -### Changed -- Migrated 'jetpack_sync_before_send*' actions for Sync queue to 'jetpack_sync_before_enqueue' instead. [#33384] - -## [1.57.4] - 2023-10-10 - -- Minor internal updates. - -## [1.57.3] - 2023-09-28 -### Removed -- Remove compatibility code for PHP <5.5. [#33288] - -## [1.57.2] - 2023-09-25 -### Added -- Site Settings Endpoint: Allow for updating and retrieving of the wpcom_newsletter_categories site option. [#33234] - -## [1.57.1] - 2023-09-20 -### Added -- Adds legacy contact and locked mode options for 100-year plan [#33081] - -## [1.57.0] - 2023-09-19 -### Added -- Added a definition of a WooCommerce HPOS table to Jetpack Sync. [#32774] -- Jetpack Sync: Drop Sync custom queue table when Jetpack is disconnected [#32940] -- Woo: add HPOS (custom order tables) events to sync module. [#32530] - -## [1.56.0] - 2023-09-04 -### Added -- Add wpcom_newsletter_categories_enabled site option [#32569] -- Whitelist the blog option for auto conversion settings. [#32693] - -## [1.55.2] - 2023-08-28 -### Fixed -- Re-adds the jetpack-memberships-connected-account-id option to whitelist. [#32632] - -## [1.55.1] - 2023-08-23 -### Changed -- Updated package dependencies. [#32605] - -## [1.55.0] - 2023-08-21 -### Removed -- Remove Jetpack option jetpack-memberships-connected-account-id [#32125] - -## [1.54.0] - 2023-08-15 -### Added -- Extract Sync Queue storage handling to an external class to prepare for Custom Table migration [#32275] - -## [1.53.0] - 2023-08-09 -### Added -- Jetpack Sync: Custom table initialization and migration functionality [#32135] -- Jetpack Sync: Drop custom table on sender uninstall [#32335] - -## [1.52.0] - 2023-08-01 -### Added -- Add support for a custom database table for Sync Queue. [#32111] -- Extract Sync Queue storage handling to an external class to prepare for Custom Table migration. [#32089] -- Sync: Add feature flag for enabling custom queue table. [#31681] - -## [1.51.0] - 2023-07-17 -### Added -- Jetpack & Jetpack Sync: Added cache check when trying to spawn dedicated sync or update JETPACK__VERSION to avoid additional requests to the DB if external cache is available. [#31645] -- Newsletters: Add option to enable subscribe modal. [#31393] -- Sync: Add support for additional guest and note meta fields [#31810] - -## [1.50.2] - 2023-07-05 -### Added -- Sync wpcom_site_setup site option [#31662] - -## [1.50.1] - 2023-07-04 -### Changed -- Revert dedicated hook endpoint to later in the 'init' hook, as it broke existing code that registers post statuses and such during 'init'. [#31685] - -## [1.50.0] - 2023-06-26 -### Added -- Added a new callable to the whitelist for get_loaded_extensions(). [#31333] -- CPT Exclusion: do not sync Jetpack Inspect Log entries. [#31535] - -### Fixed -- Initialize dedicated hook endpoint earlier in the 'init' hook to avoid cookie conflicts. [#31423] - -## [1.49.0] - 2023-05-29 -### Added -- Added `wpcom_reader_views_enabled` option to default sync list [#30800] - -### Changed -- FSE: remove usage of `gutenberg_is_fse_theme` for modern `wp_is_block_theme` [#30806] - -## [1.48.1] - 2023-05-15 -### Changed -- PHP 8 compatibility updates. [#30599] -- PHP 8.1 compatibility updates [#30523] - -## [1.48.0] - 2023-05-08 -### Changed -- Use Jetpack Constants to check the value of REST_API_REQUEST in Settings:is_syncing function so we're able to overwrite the value and render some jetpack blocks via the rest api endpoint [#30400] - -## [1.47.9] - 2023-05-02 -### Changed -- Internal updates. - -## [1.47.8] - 2023-05-01 -### Changed -- Internal updates. - -## [1.47.7] - 2023-04-10 -### Added -- Add Jetpack Autoloader package suggestion. [#29988] - -## [1.47.6] - 2023-04-04 -### Changed -- Sync: Lowered priority to sync so that the hook is run at the end. [#29804] - -## [1.47.5] - 2023-04-03 -### Changed -- Minor internal updates. - -## [1.47.4] - 2023-03-28 -### Changed -- Move brute force protection into WAF package. [#28401] - -## [1.47.3] - 2023-03-20 -### Changed -- Updated package dependencies. [#29480] - -## [1.47.2] - 2023-02-20 -### Changed -- Minor internal updates. - -## [1.47.1] - 2023-01-23 -### Added -- Close PHP Session if it's active when running a Dedicated Sync request. [#28515] - -### Fixed -- Jetpack Sync: prevent syncing user update when corresponding flags are not set. [#28385] - -## [1.47.0] - 2023-01-18 -### Removed -- Removed the deprecated option jetpack_blogging_prompts_enabled from defaults [#28387] - -## [1.46.1] - 2023-01-11 -### Changed -- Updated package dependencies. - -## [1.46.0] - 2022-12-27 -### Added -- Added woocommerce_cod_settings to the options whitelist. [#27988] - -## [1.45.0] - 2022-12-19 -### Added -- Adding new boolean site option of 'wpcom-subscription-emails-use-excerpt'. [#27908] -- Sync Launchpad-related options: `launchpad_screen` and `launchpad_checklist_tasks_statuses`. [#27843] - -### Changed -- Option: Update featured_image_email_enabled option name to wpcom_featured_image_in_email. [#27955] - -### Fixed -- Improve PHP 8.2 compatibility. [#27968] - -## [1.44.2] - 2022-12-06 -### Changed -- Updated package dependencies. - -## [1.44.1] - 2022-12-02 -### Changed -- Updated package dependencies. [#27688] - -## [1.44.0] - 2022-11-30 -### Added -- Added full response logging for failed Sync data requests. [#27644] - -### Fixed -- Make sure Dedicated Sync can revert back to Default Sync if it stops sending events for one reason or another. [#27632] - -## [1.43.2] - 2022-11-28 -### Changed -- Sync: Limit next_sync_time lock to be at most 1 hour in the future [#27606] - -## [1.43.1] - 2022-11-22 -### Changed -- Updated package dependencies. [#27043] - -## [1.43.0] - 2022-11-17 -### Added -- Added new sync option for launch-status [#27434] -- Jetpack Sync: Add new endpoint for resetting Sync locks. [#27446] - -## [1.42.0] - 2022-11-14 -### Changed -- Save attached media to post meta [#26930] - -## [1.41.0] - 2022-11-07 -### Changed -- Jetpack Sync: add Updates module in required Sync modules. [#27182] -- Updated package dependencies. [#27278] - -## [1.40.3] - 2022-11-01 -### Added -- Adds wpcom_gifting_subscription option for syncing [#27116] - -## [1.40.2] - 2022-10-27 -### Fixed -- Check $action_links is still array after plugin_action_links filter has been applied. [#27076] - -## [1.40.1] - 2022-10-25 -### Added -- Added featured_image_email_enabled option for syncing [#27009] - -### Changed -- Search Sync Settings :: Add Marketplace product extra fields meta to allow list [#26927] -- Updated package dependencies. [#26705] - -## [1.40.0] - 2022-10-17 -### Added -- Adding the `sl-insta-media` post type to the Sync blacklist as the post type data isn't relevant to Sync and takes up non-trivial resources. [#26826] - -## [1.39.0] - 2022-10-11 -### Added -- Added some taxonomies to be indexed by Search. [#26683] - -## [1.38.4] - 2022-09-20 -### Added -- Gutenberg Support: add additional theme_supports items to our synced allowlist. [#26239] - -### Changed -- Default Theme Support: Add support for new feature added in WP 6.1 [#26236] -- Theme Supports: updated allowed values list to align with a Core change r54159-core [#26220] - -## [1.38.3] - 2022-09-08 -### Changed -- Updated package dependencies. - -## [1.38.2] - 2022-08-29 -### Changed -- Updated package dependencies. - -## [1.38.1] - 2022-08-25 -### Changed -- Search Sync Settings :: Add Marketplace related meta fields and taxonomies to allow list [#25376] - -## [1.38.0] - 2022-08-23 -### Added -- Search: add product-brand to taxonomy sync list to support WooCommerce Brands plugin. [#25665] - -### Changed -- Updated package dependencies. [#25628] - -## [1.37.1] - 2022-08-03 -### Changed -- Updated package dependencies. [#25300, #25315] - -## [1.37.0] - 2022-07-26 -### Changed -- Jetpack Sync: Add Sync lock related info in Sync debug details. [#25140] -- Updated package dependencies. [#25158] - -### Fixed -- Dedicated Sync: Enable sending of callables outside of admin context, since Dedicated Sync requests always work outside of admin scope. [#25143] - -## [1.36.1] - 2022-07-06 -### Added -- Add new WordPress core `block-templates` theme feature to `Defaults::$default_theme_support_whitelist` [#24960] - -## [1.36.0] - 2022-06-28 -### Added -- Posts: added a Sync call to make sure post content is up to date before publishing. [#24827] - -### Changed -- Minimum Sync Config: Update required modules and options [#24831] - -### Fixed -- Sync Table Checksums: Table checksum should be enabled depending on corresponding Sync modulee [#24772] - -## [1.35.2] - 2022-06-21 -### Changed -- Renaming master to trunk. [#24661] - -## [1.35.1] - 2022-06-14 -### Added -- Add a request lock to prevent multiple requests being spawned at once [#24734] - -### Changed -- Updated package dependencies. [#24529] - -## [1.35.0] - 2022-05-30 -### Changed -- Sync: Add '_jetpack_blogging_prompt_key' to default post meta whitelist - -## [1.34.0] - 2022-05-24 -### Changed -- Dedicated Sync - Introduce custom endpoint for spawning Sync requests [#24468] -- Sync: Add 'active_modules' to default whitelisted callables. [#24453] - -## [1.33.1] - 2022-05-19 -### Removed -- Removed dedicated sync custom endpoints pending error investigation [#24419] - -## [1.33.0] - 2022-05-18 -### Changed -- Dedicated Sync: Introduce custom endpoint for spawning Sync requests [#24344] - -## [1.32.0] - 2022-05-10 -### Added -- Search: add search options to option whitelist [#24167] - -## [1.31.1] - 2022-05-04 -### Changed -- Updated package dependencies. [#24095] -- WordPress 6.1 Compatibilty [#24083] - -### Deprecated -- Moved the options class into Connection. [#24095] - -## [1.31.0] - 2022-04-26 -### Added -- Adds filter to get_themes callable - -### Deprecated -- Removed Heartbeat by hoisting it into Connection. - -## [1.30.8] - 2022-04-19 -### Added -- Added get_themes Callable to sync the list of installed themes on a site -- Added get_themes to Sync defaults - -### Changed -- PHPCS: Fix `WordPress.Security.ValidatedSanitizedInput` -- Updated package dependencies. - -## [1.30.7] - 2022-04-12 -### Added -- Adding new site option to be synced. - -## [1.30.6] - 2022-04-06 -### Changed -- Updated package dependencies. - -### Fixed -- Dedicated Sync: Only try to run the sender once if Dedicated Sync is enabled as it has its own requeueing mechanism. - -## [1.30.5] - 2022-03-29 -### Changed -- Microperformance: Use === null instead of is_null - -## [1.30.4] - 2022-03-23 -### Changed -- Enable syncing of dedicated_sync_enabled Sync setting - -### Fixed -- Dedicated Sync: Allow spawning request with expired Retry-After - -## [1.30.3] - 2022-03-15 -### Changed -- Search Sync Settings :: Add ETB taxonomy to allow list. - -## [1.30.2] - 2022-03-08 -### Changed -- Disallow syncing of _term_meta post_type - -## [1.30.1] - 2022-03-02 -### Added -- Dedicated Sync flow: Allow enabling or disabling via WPCOM response header - -## [1.30.0] - 2022-02-22 -### Added -- Add Sync dedicated request flow. - -### Changed -- Updated package dependencies. - -## [1.29.2] - 2022-02-09 -### Added -- Allow sync package consumers to provide custom data settings. - -### Fixed -- Fixed some new PHPCS warnings. - -## [1.29.1] - 2022-02-02 -### Changed -- Updated package dependencies. - -## [1.29.0] - 2022-01-25 -### Added -- Jetpack Search: update the allowed post meta when search is active to include all indexable meta. - -## [1.28.2] - 2022-01-18 -### Changed -- Updated package dependencies. - -## [1.28.1] - 2022-01-13 -### Changed -- Updated package dependencies. - -## [1.28.0] - 2022-01-04 -### Changed -- Listener: Do not enqueue actions when the site is disconnected -- Switch to pcov for code coverage. -- Theme deletions: rely on Core WP hook now that the package requires WP 5.8. -- Updated package dependencies -- Updated package textdomain from `jetpack` to `jetpack-sync`. - -## [1.27.6] - 2021-12-14 -### Changed -- Updated package dependencies. - -## [1.27.5] - 2021-11-30 -### Changed -- Updated package dependencies. - -## [1.27.4] - 2021-11-23 -### Changed -- Updated package dependencies. - -## [1.27.3] - 2021-11-16 -### Changed -- Actions: add the do_only_first_initial_sync method which starts an initial sync only when one hasn't already been done - -## [1.27.2] - 2021-11-09 -### Added -- Constants: Now syncing Atomic platform constant - -### Changed -- Full Sync : limit included users to contributors and above (based on wp_user_limit) -- Updated package dependencies. -- User Checksums - limit scope to users with wp_user_level > 0 - -### Fixed -- Fix PHP 8.1 deprecation warnings. - -## [1.27.1] - 2021-11-02 -### Changed -- Set `convertDeprecationsToExceptions` true in PHPUnit config. -- Update PHPUnit configs to include just what needs coverage rather than include everything then try to exclude stuff that doesn't. - -## [1.27.0] - 2021-10-26 -### Added -- Added the _wpas_feature_enabled meta key to the sync list -- Sync Error Log to capture failed sync requests. - -### Fixed -- Check the return value of get_comment() before to use it. -- Increase send timeout to 20 seconds allowing capture of WP.com 408 responses. - -## [1.26.4] - 2021-10-13 -### Changed -- Sync Checksums: Convert text fields to latin1 before generating checksum. -- Updated package dependencies. - -### Fixed -- Sync Checksums - Update distinct clause to use $wpdb-> table names to accouunt for differences in prefixes. - -## [1.26.3] - 2021-10-12 -### Changed -- Updated package dependencies - -### Removed -- Remove initialization of the identity-crisis package. That will be handled by the Config package. - -### Fixed -- Reduce transient expiration for how often we check the state of the queue. -- Sync Checksums - exclude locale from checksum if same as site setting -- Sync Checksums - use distinct query when calculating count of Term Relationships - -## [1.26.2] - 2021-09-28 -### Added -- Add support for checksumming user-related tabled: wp_users and wp_usermeta - -### Changed -- Update annotations versions. -- Updated package dependencies. - -### Fixed -- Resolve indirect modification notice. -- Sync Checksums: utilize distinct clause in term counts. -- Sync Queue: better handling of serialization issues and empty actions. - -## [1.26.1] - 2021-09-03 -### Fixed -- Add better checks if the WooCommerce tables should be enabled for checksum/fix. -- Prevent PHP notices on queue_pull if all args are not set. - -## [1.26.0] - 2021-08-30 -### Added -- Add support for WooCommerce table to the checksum/fix process. -- Enable support for utf8 conversion during checksum calculation. - -### Changed -- Don't run composer install on regular phpunit script -- Tests: update PHPUnit polyfills dependency (yoast/phpunit-polyfills). - -### Fixed -- Sync Checksums - ensure last object is included in histogram - -## [1.25.0] - 2021-08-12 -### Added -- Add package version tracking. -- Add `wpcom_is_fse_activated` to sync list -- Made /sync/object endpoint accessible over POST, not only GET, to allow fetching more items in a single request. - -## [1.24.2] - 2021-08-02 - -- Reverted: Sync option for the Carousel to display colorized slide background. - -## [1.24.1] - 2021-07-29 -### Changed -- Utilize an import for WP_Error in all instances. - -### Fixed -- Fixed unqualified WP_Error use in the Rest_Sender class. - -## [1.24.0] - 2021-07-27 -### Added -- Add a package version constant. -- Add Full Site Editing support to callback options. -- Sync option for the Carousel to display colorized slide background. - -### Fixed -- Update Sender so it adheres to max upload bytes when not encoding items. - -## [1.23.3] - 2021-07-16 -### Fixed -- Update Options module to return jetpack_sync_settings_* values from the Settings class vs direct option lookup. - -## [1.23.2] - 2021-07-13 -### Changed -- Updated package dependencies. - -### Fixed -- Performance of Sync checksums degraded with the update to correlated subquery. This restricts its usage to term_taxonomy joins only." - -## [1.23.1] - 2021-07-01 -### Changed -- Checksum parent_table joins need distinct selection to account for possibility of multiple rows. - -### Fixed -- Update term_taxonomy checksum query to an allowed list vs disallowed - -## [1.23.0] - 2021-06-29 -### Added -- Add jetpack_idc_disonnect action to clear Sync options on disconnect. -- Add support to callables to sync/object endpoint. -- Enable sync/object endpoint support for theme-info. -- Enhance updates module to support get_objects_by_id. -- Expand sync/object to support constants. -- Extend sync/object to support callables. -- Implement v4 REST endpoints. -- Initialize the IDC package in the Sync package. - -### Removed -- Remove product_cat from blocked taxonomies - -## [1.22.0] - 2021-06-15 -### Changed -- Sync: Adding the Identity_Crisis package. -- Updated package dependencies. - -### Deprecated -- Deprecated URL methods in `Automattic\Jetpack\Sync\Functions` in favor of `Automattic\Jetpack\Connection\Urls`. - -## [1.21.3] - 2021-05-25 -### Changed -- Performance: If no Full Sync is in process early return before we update options. - -### Fixed -- Janitorial: avoid PHP notices in some edge-cases -- Update Meta Module so get_object_by_id returns all meta values. - -## [1.21.2] - 2021-04-27 -### Added -- Added the password-checker package the the Sync package composer.json file. - -### Changed -- Updated package dependencies. - -### Fixed -- Sync: removed references to the JETPACK__PLUGIN_DIR constant. -- Sync Checksums : updated postmeta range query performance #19337. - -## [1.21.1] - 2021-03-30 -### Added -- Composer alias for dev-master, to improve dependencies -- Implement a 60 second back-off for non-200 respones, if no retry-after header is present in the response. -- Impose a max limit of 2MB on post meta values that are synced. -- Impose a max limit of 5MB on post_content that can be synced. - -### Changed -- Sync: Use the new Password_Checker package instead of Jetpack_Password_Checker. -- Update package dependencies. -- Use the Heartbeat package to generate the stats array - -### Fixed -- Migrate locks to update_option to avaoid memcache inconsistencies that can be introduced by delete_option usage. -- Update Sync Queue so that serialize is wrapped to catch errors - -## [1.21.0] - 2021-02-23 - -- General: update WordPress version requirements to WP 5.6 -- Update Checksums to support blacklisted taxonomies. -- Refactor Jetpack callables into the plugin using existing filter jetpack_sync_callable_whitelist -- Wrap call_user_func in is_callable so that we don't trigger warnings for callables that don't exist. -- Sync: Trigger initial sync on jetpack_site_registered -- Update Comments checksum field to comment_date_gmt. We cannot use comment_content directly due to charset/filters. -- Deprecate jetpack_json_wrap -- Remove Sync's usage of wp_startswith - -## [1.20.2] - 2021-02-08 - -- Update dependencies to latest stable - -## [1.20.1] - 2021-01-28 - -- Update dependencies to latest stable - -## [1.20.0] - 2021-01-26 - -- Sync Concurrency / Race Conditions -- Sync: Prevent an PHP warning -- Jetpack Sync: Checksums: Use a better way to fetch and validate fields against table -- Add mirror-repo information to all current composer packages -- Full Sync :: Reduce Concurrency. -- Monorepo: Reorganize all projects -- Various PHPCS and Cleanup - -## [1.19.4] - 2021-01-18 - -- Update dependencies to latest stable - -## [1.19.3] - 2021-01-18 - -- Full Sync :: Reduce Concurrency. - -## [1.19.2] - 2020-12-21 - -- Update the do_full_sync function to early return if we are in SYNC READ ONLY mode. -- Return an empty array if the specified range is empty. (It was returning the checksum for the WHOLE dataset). - -## [1.19.1] - 2020-12-17 - -## [1.19.0] - 2020-12-17 - -- sync: Improve sync checksum algorithm and endpoints -- wp_get_environment_type as callable. -- Disallow amp_validated_url as it is not site content but instead validation errors for amp mark-up. -- Whitelist (allow) jetpack_sync_settings_* options to be synced -- Re-order Sync default option whitelist (allowlist) - -## [1.18.1] - 2020-11-24 - -- Version packages for release - -## [1.18.0] - 2020-11-24 - -- Migrate jetpack_published_post to wp_after_insert_post hook -- Check value to determine if we should enable sync after an action enqueuement. -- General: update minimum required version to WordPress 5.5 -- Fix remaining phpcs warnings in most of requirelist -- Update access of comment_status_to_approval_value to allow extension. -- Update get_term Replicastore function to handle term_taxonomy_id option -- Update get_terms to utilize ensure_taxonomy so that the Taxonomy is registered. -- Addtion of note on explict return of null instead of false if option not found. -- Alignment of comment_status_to_approval_value function. Addition of post-trashed status and cleanup of cases. -- Alignment with implemenations. Call ensure_taxonomy to ensure Taxonomies have been initialized. -- Call ensure_taxonomy within get_object_terms so that the taxonomy is registered before action is performed. -- Updated PHPCS: Packages and Debugger - -## [1.17.2] - 2020-11-05 - -- Update dependencies to latest stable - -## [1.17.1] - 2020-10-29 - -- Update dependencies to latest stable - -## [1.17.0] - 2020-10-27 - -- WPCOM Block Editor: Update meta key name -- Resolve PHP Warning with array_filter usage in sync of action_links. -- Sync: Seperate theme data ( name, version, slug and uri) from theme support data -- Replaced intval() with (int) as part of issue #17432. -- Replaced strval() with type casting (string) as part of issue #17432. -- Replaced floatval() with type cast (float) as part of issue #17432. -- Make XMLRPC methods available for blog token - -## [1.16.4] - 2020-10-14 - -- Update dependencies to latest stable - -## [1.16.3] - 2020-10-09 - -- Update dependencies to latest stable - -## [1.16.2] - 2020-10-06 - -- Update dependencies to latest stable - -## [1.16.1] - 2020-10-01 - -- Update dependencies to latest stable - -## [1.16.0] - 2020-09-29 - -- Publicize: Allow publishing a post as a Twitter thread. -- props @jmdodd - filter out set_object_terms actions that don't perform any update. Includes unit tests. -- Sort Arrays by keys before generating callable checksums -- Packages: avoid PHPCS warnings -- Adding 'review' to whitelisted comment types -- Disable Sync sending on Backup API Requests -- Sync: stop trying to check for edit_comment capability -- Added options to sync wc whitelist -- Sync: Improve theme support syncing - -## [1.15.1] - 2020-09-09 - -- Update dependencies to latest stable - -## [1.15.0] - 2020-08-26 - -- Sync: add Creative Mail configuration option to synced options -- Extend sync_status endpoint with optional debug_details field -- REST API endpoints: expand management endpoints -- Sync: Fix nonce action string in theme edit sync -- WP 5.5 Compat: Align Jetpack and Core's plugin autoupdates -- use current user token to updateRole request -- Resolve Sync Errors from empty edge case and WP.com returning concurrent_request_error -- Rework Sender to properly return state during do_full_sync - -## [1.14.4] - 2020-08-10 - -- WP 5.5 Compat: Align Jetpack and Core's plugin autoupdates - -## [1.14.3] - 2020-08-10 - -- Update dependencies to latest stable - -## [1.14.2] - 2020-08-10 - -- Update dependencies to latest stable - -## [1.14.1] - 2020-08-10 - -- Resolve Sync Errors from empty edge case and WP.com returning concurrent_request_error - -## [1.14.0] - 2020-07-28 - -- Core Compat: Site Environment -- Unit Tests: fix tests according to changes in Core -- Utilize the blog token vs master user token to send sync actions. - -## [1.13.2] - 2020-07-06 - -- Update dependencies to latest stable - -## [1.13.1] - 2020-07-01 - -- Update dependencies to latest stable - -## [1.13.0] - 2020-06-30 - -- Block Flamingo Plugin post types in Jetpack Sync -- Explicit single execution of do_full_sync from cron -- Update to reference the property defined in the Jetpack Connection Manager class -- PHPCS: Clean up the packages -- WordAds: Add consent support for California Consumer Privacy Act (CCPA) -- Sync: Add additional support for theme_support_whitelist - -## [1.12.4] - 2020-06-02 - -- Revert "Fix `jetpack sync start` CLI command (#16010)" - -## [1.12.3] - 2020-06-01 - -- Update dependencies to latest stable - -## [1.12.2] - 2020-06-01 - -- Fix `jetpack sync start` CLI command - -## [1.12.1] - 2020-05-29 - -- Sync: Add additional support for theme_support_whitelist - -## [1.12.0] - 2020-05-26 - -- Update ReplicaStore to call clean_comment_cache when comments are upserted or a reset is perofrmed. -- Store the list of active plugins that uses connection in an option -- Jetpack Sync :: Alternate non-blocking flow -- Settings - Writing: add a toggle to Carousel so users can hide comment area -- Sender needs to load consistently utilizing logic -- Always delete items from the queue even if the buffer is no longer checked out. -- Update the hook of Sync's Comment module to not send meta actions when the comment_type is not whitelisted. -- Sync Comments apply whitelist to all actions - -## [1.11.0] - 2020-04-28 - -- Correct inline documentation "Array" type -- Filter out blacklisted post_types for deleted_post actions. -- Publicize: Add jetpack_publicize_options -- Blacklisting Post Types from Sync -- Comments: update default comment type -- Jetpack Sync: Split `jetpack_post_meta_batch_delete` in action to be called in chunks of 100 items, compared to all at once. -- Update Sync limits based on analysis of data loss events. - -## [1.10.0] - 2020-03-31 - -- Update dependencies to latest stable - -## [1.9.0] - 2020-03-31 - -- Debugger: Add sync health progress bar -- Add main network WPCOM blog ID to sync functions -- Masterbar: send wpcom user ID to wpcom when attempting to log… -- Sync: a better readme - -## [1.8.0] - 2020-02-25 - -- Minileven: add options back as they still exist on sites -- Sync: add queue size to actions -- Mobile Theme: remove feature - -## [1.7.6] - 2020-02-14 - -- get_sync_status does not properly account for unexpected states. - -## [1.7.5] - 2020-02-14 - -- Empty Helper function for checkin handler -- Sync Health: fix excessive data loss reports -- Initial Sync Health Status Class and Data Loss Handler -- Stop REST API Log entries from being synced - -## [1.7.4+vip] - 2020-02-14 - -- Empty Helper function for checkin handler - -## [1.7.4] - 2020-01-23 - -- Sync Chunk Keys need to be unique - -## [1.7.3] - 2020-01-20 - -- Sync: ensure we run the initial sync on new connections - -## [1.7.2] - 2020-01-17 - -- Sync Package: use Full_Sync_Immediately by default -- Adding new managed WordPress hosts to be identified in class-functions.php. - -## [1.7.1] - 2020-01-14 - -- Packages: Various improvements for wp.com or self-contained consumers - -## [1.7.0] - 2020-01-14 - -- Trying to add deterministic initialization. - -## [1.6.3] - 2020-01-07 - -- Fix git history. - -## [1.6.2] - 2019-12-31 - -- Sync: Remove DEFAULT_SYNC_MODULES legacy map -- Connection: Loose Comparison for Port Number in Signatures - -## [1.6.1] - 2019-12-13 - -- tweak default sync settings - -## [1.6.0] - 2019-12-02 - -- Sync: Full Sync: Send immediately. - -## [1.5.1] - 2019-11-26 - -- Marked the xmlrpc_api_url method as deprecated. - -## [1.5.0] - 2019-11-25 - -- Remove sync settings cache - -## [1.4.0] - 2019-11-19 - -- Full Sync: Don't allow more than one request to enqueue -- Sync: Update Max Int - -## [1.3.4] - 2019-11-08 - -- Packages: Use classmap instead of PSR-4 - -## [1.3.3] - 2019-11-08 - -- Deprecate Jetpack::is_development_mode() in favor of the packaged Status()->is_development_mode() - -## [1.3.2] - 2019-11-01 - -- Full Sync updates to allow full enqueuing of chunks. - -## [1.3.1] - 2019-10-29 - -- PHPCS: Rest of the packages - -## [1.3.0] - 2019-10-29 - -- Sync: Checkout Endpoint: Add `pop` argument 😱 - -## [1.2.1] - 2019-10-28 - -- Sync: Add Settings to enable/disable the sender for a particular queue - -## [1.2.0] - 2019-10-24 - -- Sync: Fix how we enqueue term_relationships on full sync 🏝 -- WP 5.3: Use modern wp_timezone -- Check for last_error when enqueuing IDs - -## [1.1.1] - 2019-10-23 - -- Use spread operator instead of func_get_args - -## [1.1.0] - 2019-10-07 - -- Sync: Ensure a post object is returned -- PHPCS: Sync Functions -- Sync: Bail initial sync if there is an ongoing full sync - -## [1.0.2] - 2019-09-25 - -- Sync: Only allow white listed comment types to be inserted. -- Sync: Move sync_object XML-RPC method from connection to sync -- Sync: do not sync comments made via Action Scheduler -- Docs: Unify usage of @package phpdoc tags - -## [1.0.1] - 2019-09-14 - -## 1.0.0 - 2019-09-14 - -- Packages: Move sync to a classmapped package - -[4.9.2]: https://github.com/Automattic/jetpack-sync/compare/v4.9.1...v4.9.2 -[4.9.1]: https://github.com/Automattic/jetpack-sync/compare/v4.9.0...v4.9.1 -[4.9.0]: https://github.com/Automattic/jetpack-sync/compare/v4.8.4...v4.9.0 -[4.8.4]: https://github.com/Automattic/jetpack-sync/compare/v4.8.3...v4.8.4 -[4.8.3]: https://github.com/Automattic/jetpack-sync/compare/v4.8.2...v4.8.3 -[4.8.2]: https://github.com/Automattic/jetpack-sync/compare/v4.8.1...v4.8.2 -[4.8.1]: https://github.com/Automattic/jetpack-sync/compare/v4.8.0...v4.8.1 -[4.8.0]: https://github.com/Automattic/jetpack-sync/compare/v4.7.0...v4.8.0 -[4.7.0]: https://github.com/Automattic/jetpack-sync/compare/v4.6.0...v4.7.0 -[4.6.0]: https://github.com/Automattic/jetpack-sync/compare/v4.5.0...v4.6.0 -[4.5.0]: https://github.com/Automattic/jetpack-sync/compare/v4.4.0...v4.5.0 -[4.4.0]: https://github.com/Automattic/jetpack-sync/compare/v4.3.0...v4.4.0 -[4.3.0]: https://github.com/Automattic/jetpack-sync/compare/v4.2.0...v4.3.0 -[4.2.0]: https://github.com/Automattic/jetpack-sync/compare/v4.1.1...v4.2.0 -[4.1.1]: https://github.com/Automattic/jetpack-sync/compare/v4.1.0...v4.1.1 -[4.1.0]: https://github.com/Automattic/jetpack-sync/compare/v4.0.2...v4.1.0 -[4.0.2]: https://github.com/Automattic/jetpack-sync/compare/v4.0.1...v4.0.2 -[4.0.1]: https://github.com/Automattic/jetpack-sync/compare/v4.0.0...v4.0.1 -[4.0.0]: https://github.com/Automattic/jetpack-sync/compare/v3.15.0...v4.0.0 -[3.15.0]: https://github.com/Automattic/jetpack-sync/compare/v3.14.4...v3.15.0 -[3.14.4]: https://github.com/Automattic/jetpack-sync/compare/v3.14.3...v3.14.4 -[3.14.3]: https://github.com/Automattic/jetpack-sync/compare/v3.14.2...v3.14.3 -[3.14.2]: https://github.com/Automattic/jetpack-sync/compare/v3.14.1...v3.14.2 -[3.14.1]: https://github.com/Automattic/jetpack-sync/compare/v3.14.0...v3.14.1 -[3.14.0]: https://github.com/Automattic/jetpack-sync/compare/v3.13.2...v3.14.0 -[3.13.2]: https://github.com/Automattic/jetpack-sync/compare/v3.13.1...v3.13.2 -[3.13.1]: https://github.com/Automattic/jetpack-sync/compare/v3.13.0...v3.13.1 -[3.13.0]: https://github.com/Automattic/jetpack-sync/compare/v3.12.0...v3.13.0 -[3.12.0]: https://github.com/Automattic/jetpack-sync/compare/v3.11.0...v3.12.0 -[3.11.0]: https://github.com/Automattic/jetpack-sync/compare/v3.10.0...v3.11.0 -[3.10.0]: https://github.com/Automattic/jetpack-sync/compare/v3.9.1...v3.10.0 -[3.9.1]: https://github.com/Automattic/jetpack-sync/compare/v3.9.0...v3.9.1 -[3.9.0]: https://github.com/Automattic/jetpack-sync/compare/v3.8.1...v3.9.0 -[3.8.1]: https://github.com/Automattic/jetpack-sync/compare/v3.8.0...v3.8.1 -[3.8.0]: https://github.com/Automattic/jetpack-sync/compare/v3.7.1...v3.8.0 -[3.7.1]: https://github.com/Automattic/jetpack-sync/compare/v3.7.0...v3.7.1 -[3.7.0]: https://github.com/Automattic/jetpack-sync/compare/v3.6.0...v3.7.0 -[3.6.0]: https://github.com/Automattic/jetpack-sync/compare/v3.5.1...v3.6.0 -[3.5.1]: https://github.com/Automattic/jetpack-sync/compare/v3.5.0...v3.5.1 -[3.5.0]: https://github.com/Automattic/jetpack-sync/compare/v3.4.1...v3.5.0 -[3.4.1]: https://github.com/Automattic/jetpack-sync/compare/v3.4.0...v3.4.1 -[3.4.0]: https://github.com/Automattic/jetpack-sync/compare/v3.3.1...v3.4.0 -[3.3.1]: https://github.com/Automattic/jetpack-sync/compare/v3.3.0...v3.3.1 -[3.3.0]: https://github.com/Automattic/jetpack-sync/compare/v3.2.1...v3.3.0 -[3.2.1]: https://github.com/Automattic/jetpack-sync/compare/v3.2.0...v3.2.1 -[3.2.0]: https://github.com/Automattic/jetpack-sync/compare/v3.1.4...v3.2.0 -[3.1.4]: https://github.com/Automattic/jetpack-sync/compare/v3.1.3...v3.1.4 -[3.1.3]: https://github.com/Automattic/jetpack-sync/compare/v3.1.2...v3.1.3 -[3.1.2]: https://github.com/Automattic/jetpack-sync/compare/v3.1.1...v3.1.2 -[3.1.1]: https://github.com/Automattic/jetpack-sync/compare/v3.1.0...v3.1.1 -[3.1.0]: https://github.com/Automattic/jetpack-sync/compare/v3.0.2...v3.1.0 -[3.0.2]: https://github.com/Automattic/jetpack-sync/compare/v3.0.1...v3.0.2 -[3.0.1]: https://github.com/Automattic/jetpack-sync/compare/v3.0.0...v3.0.1 -[3.0.0]: https://github.com/Automattic/jetpack-sync/compare/v2.16.6...v3.0.0 -[2.16.6]: https://github.com/Automattic/jetpack-sync/compare/v2.16.5...v2.16.6 -[2.16.5]: https://github.com/Automattic/jetpack-sync/compare/v2.16.4...v2.16.5 -[2.16.4]: https://github.com/Automattic/jetpack-sync/compare/v2.16.3...v2.16.4 -[2.16.3]: https://github.com/Automattic/jetpack-sync/compare/v2.16.2...v2.16.3 -[2.16.2]: https://github.com/Automattic/jetpack-sync/compare/v2.16.1...v2.16.2 -[2.16.1]: https://github.com/Automattic/jetpack-sync/compare/v2.16.0...v2.16.1 -[2.16.0]: https://github.com/Automattic/jetpack-sync/compare/v2.15.1...v2.16.0 -[2.15.1]: https://github.com/Automattic/jetpack-sync/compare/v2.15.0...v2.15.1 -[2.15.0]: https://github.com/Automattic/jetpack-sync/compare/v2.14.0...v2.15.0 -[2.14.0]: https://github.com/Automattic/jetpack-sync/compare/v2.13.1...v2.14.0 -[2.13.1]: https://github.com/Automattic/jetpack-sync/compare/v2.13.0...v2.13.1 -[2.13.0]: https://github.com/Automattic/jetpack-sync/compare/v2.12.0...v2.13.0 -[2.12.0]: https://github.com/Automattic/jetpack-sync/compare/v2.11.1...v2.12.0 -[2.11.1]: https://github.com/Automattic/jetpack-sync/compare/v2.11.0...v2.11.1 -[2.11.0]: https://github.com/Automattic/jetpack-sync/compare/v2.10.5...v2.11.0 -[2.10.5]: https://github.com/Automattic/jetpack-sync/compare/v2.10.4...v2.10.5 -[2.10.4]: https://github.com/Automattic/jetpack-sync/compare/v2.10.3...v2.10.4 -[2.10.3]: https://github.com/Automattic/jetpack-sync/compare/v2.10.2...v2.10.3 -[2.10.2]: https://github.com/Automattic/jetpack-sync/compare/v2.10.1...v2.10.2 -[2.10.1]: https://github.com/Automattic/jetpack-sync/compare/v2.10.0...v2.10.1 -[2.10.0]: https://github.com/Automattic/jetpack-sync/compare/v2.9.0...v2.10.0 -[2.9.0]: https://github.com/Automattic/jetpack-sync/compare/v2.8.1...v2.9.0 -[2.8.1]: https://github.com/Automattic/jetpack-sync/compare/v2.8.0...v2.8.1 -[2.8.0]: https://github.com/Automattic/jetpack-sync/compare/v2.7.0...v2.8.0 -[2.7.0]: https://github.com/Automattic/jetpack-sync/compare/v2.6.1...v2.7.0 -[2.6.1]: https://github.com/Automattic/jetpack-sync/compare/v2.6.0...v2.6.1 -[2.6.0]: https://github.com/Automattic/jetpack-sync/compare/v2.5.1...v2.6.0 -[2.5.1]: https://github.com/Automattic/jetpack-sync/compare/v2.5.0...v2.5.1 -[2.5.0]: https://github.com/Automattic/jetpack-sync/compare/v2.4.2...v2.5.0 -[2.4.2]: https://github.com/Automattic/jetpack-sync/compare/v2.4.1...v2.4.2 -[2.4.1]: https://github.com/Automattic/jetpack-sync/compare/v2.4.0...v2.4.1 -[2.4.0]: https://github.com/Automattic/jetpack-sync/compare/v2.3.0...v2.4.0 -[2.3.0]: https://github.com/Automattic/jetpack-sync/compare/v2.2.1...v2.3.0 -[2.2.1]: https://github.com/Automattic/jetpack-sync/compare/v2.2.0...v2.2.1 -[2.2.0]: https://github.com/Automattic/jetpack-sync/compare/v2.1.2...v2.2.0 -[2.1.2]: https://github.com/Automattic/jetpack-sync/compare/v2.1.1...v2.1.2 -[2.1.1]: https://github.com/Automattic/jetpack-sync/compare/v2.1.0...v2.1.1 -[2.1.0]: https://github.com/Automattic/jetpack-sync/compare/v2.0.2...v2.1.0 -[2.0.2]: https://github.com/Automattic/jetpack-sync/compare/v2.0.1...v2.0.2 -[2.0.1]: https://github.com/Automattic/jetpack-sync/compare/v2.0.0...v2.0.1 -[2.0.0]: https://github.com/Automattic/jetpack-sync/compare/v1.60.1...v2.0.0 -[1.60.1]: https://github.com/Automattic/jetpack-sync/compare/v1.60.0...v1.60.1 -[1.60.0]: https://github.com/Automattic/jetpack-sync/compare/v1.59.2...v1.60.0 -[1.59.2]: https://github.com/Automattic/jetpack-sync/compare/v1.59.1...v1.59.2 -[1.59.1]: https://github.com/Automattic/jetpack-sync/compare/v1.59.0...v1.59.1 -[1.59.0]: https://github.com/Automattic/jetpack-sync/compare/v1.58.1...v1.59.0 -[1.58.1]: https://github.com/Automattic/jetpack-sync/compare/v1.58.0...v1.58.1 -[1.58.0]: https://github.com/Automattic/jetpack-sync/compare/v1.57.4...v1.58.0 -[1.57.4]: https://github.com/Automattic/jetpack-sync/compare/v1.57.3...v1.57.4 -[1.57.3]: https://github.com/Automattic/jetpack-sync/compare/v1.57.2...v1.57.3 -[1.57.2]: https://github.com/Automattic/jetpack-sync/compare/v1.57.1...v1.57.2 -[1.57.1]: https://github.com/Automattic/jetpack-sync/compare/v1.57.0...v1.57.1 -[1.57.0]: https://github.com/Automattic/jetpack-sync/compare/v1.56.0...v1.57.0 -[1.56.0]: https://github.com/Automattic/jetpack-sync/compare/v1.55.2...v1.56.0 -[1.55.2]: https://github.com/Automattic/jetpack-sync/compare/v1.55.1...v1.55.2 -[1.55.1]: https://github.com/Automattic/jetpack-sync/compare/v1.55.0...v1.55.1 -[1.55.0]: https://github.com/Automattic/jetpack-sync/compare/v1.54.0...v1.55.0 -[1.54.0]: https://github.com/Automattic/jetpack-sync/compare/v1.53.0...v1.54.0 -[1.53.0]: https://github.com/Automattic/jetpack-sync/compare/v1.52.0...v1.53.0 -[1.52.0]: https://github.com/Automattic/jetpack-sync/compare/v1.51.0...v1.52.0 -[1.51.0]: https://github.com/Automattic/jetpack-sync/compare/v1.50.2...v1.51.0 -[1.50.2]: https://github.com/Automattic/jetpack-sync/compare/v1.50.1...v1.50.2 -[1.50.1]: https://github.com/Automattic/jetpack-sync/compare/v1.50.0...v1.50.1 -[1.50.0]: https://github.com/Automattic/jetpack-sync/compare/v1.49.0...v1.50.0 -[1.49.0]: https://github.com/Automattic/jetpack-sync/compare/v1.48.1...v1.49.0 -[1.48.1]: https://github.com/Automattic/jetpack-sync/compare/v1.48.0...v1.48.1 -[1.48.0]: https://github.com/Automattic/jetpack-sync/compare/v1.47.9...v1.48.0 -[1.47.9]: https://github.com/Automattic/jetpack-sync/compare/v1.47.8...v1.47.9 -[1.47.8]: https://github.com/Automattic/jetpack-sync/compare/v1.47.7...v1.47.8 -[1.47.7]: https://github.com/Automattic/jetpack-sync/compare/v1.47.6...v1.47.7 -[1.47.6]: https://github.com/Automattic/jetpack-sync/compare/v1.47.5...v1.47.6 -[1.47.5]: https://github.com/Automattic/jetpack-sync/compare/v1.47.4...v1.47.5 -[1.47.4]: https://github.com/Automattic/jetpack-sync/compare/v1.47.3...v1.47.4 -[1.47.3]: https://github.com/Automattic/jetpack-sync/compare/v1.47.2...v1.47.3 -[1.47.2]: https://github.com/Automattic/jetpack-sync/compare/v1.47.1...v1.47.2 -[1.47.1]: https://github.com/Automattic/jetpack-sync/compare/v1.47.0...v1.47.1 -[1.47.0]: https://github.com/Automattic/jetpack-sync/compare/v1.46.1...v1.47.0 -[1.46.1]: https://github.com/Automattic/jetpack-sync/compare/v1.46.0...v1.46.1 -[1.46.0]: https://github.com/Automattic/jetpack-sync/compare/v1.45.0...v1.46.0 -[1.45.0]: https://github.com/Automattic/jetpack-sync/compare/v1.44.2...v1.45.0 -[1.44.2]: https://github.com/Automattic/jetpack-sync/compare/v1.44.1...v1.44.2 -[1.44.1]: https://github.com/Automattic/jetpack-sync/compare/v1.44.0...v1.44.1 -[1.44.0]: https://github.com/Automattic/jetpack-sync/compare/v1.43.2...v1.44.0 -[1.43.2]: https://github.com/Automattic/jetpack-sync/compare/v1.43.1...v1.43.2 -[1.43.1]: https://github.com/Automattic/jetpack-sync/compare/v1.43.0...v1.43.1 -[1.43.0]: https://github.com/Automattic/jetpack-sync/compare/v1.42.0...v1.43.0 -[1.42.0]: https://github.com/Automattic/jetpack-sync/compare/v1.41.0...v1.42.0 -[1.41.0]: https://github.com/Automattic/jetpack-sync/compare/v1.40.3...v1.41.0 -[1.40.3]: https://github.com/Automattic/jetpack-sync/compare/v1.40.2...v1.40.3 -[1.40.2]: https://github.com/Automattic/jetpack-sync/compare/v1.40.1...v1.40.2 -[1.40.1]: https://github.com/Automattic/jetpack-sync/compare/v1.40.0...v1.40.1 -[1.40.0]: https://github.com/Automattic/jetpack-sync/compare/v1.39.0...v1.40.0 -[1.39.0]: https://github.com/Automattic/jetpack-sync/compare/v1.38.4...v1.39.0 -[1.38.4]: https://github.com/Automattic/jetpack-sync/compare/v1.38.3...v1.38.4 -[1.38.3]: https://github.com/Automattic/jetpack-sync/compare/v1.38.2...v1.38.3 -[1.38.2]: https://github.com/Automattic/jetpack-sync/compare/v1.38.1...v1.38.2 -[1.38.1]: https://github.com/Automattic/jetpack-sync/compare/v1.38.0...v1.38.1 -[1.38.0]: https://github.com/Automattic/jetpack-sync/compare/v1.37.1...v1.38.0 -[1.37.1]: https://github.com/Automattic/jetpack-sync/compare/v1.37.0...v1.37.1 -[1.37.0]: https://github.com/Automattic/jetpack-sync/compare/v1.36.1...v1.37.0 -[1.36.1]: https://github.com/Automattic/jetpack-sync/compare/v1.36.0...v1.36.1 -[1.36.0]: https://github.com/Automattic/jetpack-sync/compare/v1.35.2...v1.36.0 -[1.35.2]: https://github.com/Automattic/jetpack-sync/compare/v1.35.1...v1.35.2 -[1.35.1]: https://github.com/Automattic/jetpack-sync/compare/v1.35.0...v1.35.1 -[1.35.0]: https://github.com/Automattic/jetpack-sync/compare/v1.34.0...v1.35.0 -[1.34.0]: https://github.com/Automattic/jetpack-sync/compare/v1.33.1...v1.34.0 -[1.33.1]: https://github.com/Automattic/jetpack-sync/compare/v1.33.0...v1.33.1 -[1.33.0]: https://github.com/Automattic/jetpack-sync/compare/v1.32.0...v1.33.0 -[1.32.0]: https://github.com/Automattic/jetpack-sync/compare/v1.31.1...v1.32.0 -[1.31.1]: https://github.com/Automattic/jetpack-sync/compare/v1.31.0...v1.31.1 -[1.31.0]: https://github.com/Automattic/jetpack-sync/compare/v1.30.8...v1.31.0 -[1.30.8]: https://github.com/Automattic/jetpack-sync/compare/v1.30.7...v1.30.8 -[1.30.7]: https://github.com/Automattic/jetpack-sync/compare/v1.30.6...v1.30.7 -[1.30.6]: https://github.com/Automattic/jetpack-sync/compare/v1.30.5...v1.30.6 -[1.30.5]: https://github.com/Automattic/jetpack-sync/compare/v1.30.4...v1.30.5 -[1.30.4]: https://github.com/Automattic/jetpack-sync/compare/v1.30.3...v1.30.4 -[1.30.3]: https://github.com/Automattic/jetpack-sync/compare/v1.30.2...v1.30.3 -[1.30.2]: https://github.com/Automattic/jetpack-sync/compare/v1.30.1...v1.30.2 -[1.30.1]: https://github.com/Automattic/jetpack-sync/compare/v1.30.0...v1.30.1 -[1.30.0]: https://github.com/Automattic/jetpack-sync/compare/v1.29.2...v1.30.0 -[1.29.2]: https://github.com/Automattic/jetpack-sync/compare/v1.29.1...v1.29.2 -[1.29.1]: https://github.com/Automattic/jetpack-sync/compare/v1.29.0...v1.29.1 -[1.29.0]: https://github.com/Automattic/jetpack-sync/compare/v1.28.2...v1.29.0 -[1.28.2]: https://github.com/Automattic/jetpack-sync/compare/v1.28.1...v1.28.2 -[1.28.1]: https://github.com/Automattic/jetpack-sync/compare/v1.28.0...v1.28.1 -[1.28.0]: https://github.com/Automattic/jetpack-sync/compare/v1.27.6...v1.28.0 -[1.27.6]: https://github.com/Automattic/jetpack-sync/compare/v1.27.5...v1.27.6 -[1.27.5]: https://github.com/Automattic/jetpack-sync/compare/v1.27.4...v1.27.5 -[1.27.4]: https://github.com/Automattic/jetpack-sync/compare/v1.27.3...v1.27.4 -[1.27.3]: https://github.com/Automattic/jetpack-sync/compare/v1.27.2...v1.27.3 -[1.27.2]: https://github.com/Automattic/jetpack-sync/compare/v1.27.1...v1.27.2 -[1.27.1]: https://github.com/Automattic/jetpack-sync/compare/v1.27.0...v1.27.1 -[1.27.0]: https://github.com/Automattic/jetpack-sync/compare/v1.26.4...v1.27.0 -[1.26.4]: https://github.com/Automattic/jetpack-sync/compare/v1.26.3...v1.26.4 -[1.26.3]: https://github.com/Automattic/jetpack-sync/compare/v1.26.2...v1.26.3 -[1.26.2]: https://github.com/Automattic/jetpack-sync/compare/v1.26.1...v1.26.2 -[1.26.1]: https://github.com/Automattic/jetpack-sync/compare/v1.26.0...v1.26.1 -[1.26.0]: https://github.com/Automattic/jetpack-sync/compare/v1.25.0...v1.26.0 -[1.25.0]: https://github.com/Automattic/jetpack-sync/compare/v1.24.2...v1.25.0 -[1.24.2]: https://github.com/Automattic/jetpack-sync/compare/v1.24.1...v1.24.2 -[1.24.1]: https://github.com/Automattic/jetpack-sync/compare/v1.24.0...v1.24.1 -[1.24.0]: https://github.com/Automattic/jetpack-sync/compare/v1.23.3...v1.24.0 -[1.23.3]: https://github.com/Automattic/jetpack-sync/compare/v1.23.2...v1.23.3 -[1.23.2]: https://github.com/Automattic/jetpack-sync/compare/v1.23.1...v1.23.2 -[1.23.1]: https://github.com/Automattic/jetpack-sync/compare/v1.23.0...v1.23.1 -[1.23.0]: https://github.com/Automattic/jetpack-sync/compare/v1.22.0...v1.23.0 -[1.22.0]: https://github.com/Automattic/jetpack-sync/compare/v1.21.3...v1.22.0 -[1.21.3]: https://github.com/Automattic/jetpack-sync/compare/v1.21.2...v1.21.3 -[1.21.2]: https://github.com/Automattic/jetpack-sync/compare/v1.21.1...v1.21.2 -[1.21.1]: https://github.com/Automattic/jetpack-sync/compare/v1.21.0...v1.21.1 -[1.21.0]: https://github.com/Automattic/jetpack-sync/compare/v1.20.2...v1.21.0 -[1.20.2]: https://github.com/Automattic/jetpack-sync/compare/v1.20.1...v1.20.2 -[1.20.1]: https://github.com/Automattic/jetpack-sync/compare/v1.20.0...v1.20.1 -[1.20.0]: https://github.com/Automattic/jetpack-sync/compare/v1.19.4...v1.20.0 -[1.19.4]: https://github.com/Automattic/jetpack-sync/compare/v1.19.3...v1.19.4 -[1.19.3]: https://github.com/Automattic/jetpack-sync/compare/v1.19.2...v1.19.3 -[1.19.2]: https://github.com/Automattic/jetpack-sync/compare/v1.19.1...v1.19.2 -[1.19.1]: https://github.com/Automattic/jetpack-sync/compare/v1.19.0...v1.19.1 -[1.19.0]: https://github.com/Automattic/jetpack-sync/compare/v1.18.1...v1.19.0 -[1.18.1]: https://github.com/Automattic/jetpack-sync/compare/v1.18.0...v1.18.1 -[1.18.0]: https://github.com/Automattic/jetpack-sync/compare/v1.17.2...v1.18.0 -[1.17.2]: https://github.com/Automattic/jetpack-sync/compare/v1.17.1...v1.17.2 -[1.17.1]: https://github.com/Automattic/jetpack-sync/compare/v1.17.0...v1.17.1 -[1.17.0]: https://github.com/Automattic/jetpack-sync/compare/v1.16.4...v1.17.0 -[1.16.4]: https://github.com/Automattic/jetpack-sync/compare/v1.16.3...v1.16.4 -[1.16.3]: https://github.com/Automattic/jetpack-sync/compare/v1.16.2...v1.16.3 -[1.16.2]: https://github.com/Automattic/jetpack-sync/compare/v1.16.1...v1.16.2 -[1.16.1]: https://github.com/Automattic/jetpack-sync/compare/v1.16.0...v1.16.1 -[1.16.0]: https://github.com/Automattic/jetpack-sync/compare/v1.15.1...v1.16.0 -[1.15.1]: https://github.com/Automattic/jetpack-sync/compare/v1.15.0...v1.15.1 -[1.15.0]: https://github.com/Automattic/jetpack-sync/compare/v1.14.4...v1.15.0 -[1.14.4]: https://github.com/Automattic/jetpack-sync/compare/v1.14.3...v1.14.4 -[1.14.3]: https://github.com/Automattic/jetpack-sync/compare/v1.14.2...v1.14.3 -[1.14.2]: https://github.com/Automattic/jetpack-sync/compare/v1.14.1...v1.14.2 -[1.14.1]: https://github.com/Automattic/jetpack-sync/compare/v1.14.0...v1.14.1 -[1.14.0]: https://github.com/Automattic/jetpack-sync/compare/v1.13.2...v1.14.0 -[1.13.2]: https://github.com/Automattic/jetpack-sync/compare/v1.13.1...v1.13.2 -[1.13.1]: https://github.com/Automattic/jetpack-sync/compare/v1.13.0...v1.13.1 -[1.13.0]: https://github.com/Automattic/jetpack-sync/compare/v1.12.4...v1.13.0 -[1.12.4]: https://github.com/Automattic/jetpack-sync/compare/v1.12.3...v1.12.4 -[1.12.3]: https://github.com/Automattic/jetpack-sync/compare/v1.12.2...v1.12.3 -[1.12.2]: https://github.com/Automattic/jetpack-sync/compare/v1.12.1...v1.12.2 -[1.12.1]: https://github.com/Automattic/jetpack-sync/compare/v1.12.0...v1.12.1 -[1.12.0]: https://github.com/Automattic/jetpack-sync/compare/v1.11.0...v1.12.0 -[1.11.0]: https://github.com/Automattic/jetpack-sync/compare/v1.10.0...v1.11.0 -[1.10.0]: https://github.com/Automattic/jetpack-sync/compare/v1.9.0...v1.10.0 -[1.9.0]: https://github.com/Automattic/jetpack-sync/compare/v1.8.0...v1.9.0 -[1.8.0]: https://github.com/Automattic/jetpack-sync/compare/v1.7.6...v1.8.0 -[1.7.6]: https://github.com/Automattic/jetpack-sync/compare/v1.7.5...v1.7.6 -[1.7.5]: https://github.com/Automattic/jetpack-sync/compare/v1.7.4+vip...v1.7.5 -[1.7.4+vip]: https://github.com/Automattic/jetpack-sync/compare/v1.7.4...v1.7.4+vip -[1.7.4]: https://github.com/Automattic/jetpack-sync/compare/v1.7.3...v1.7.4 -[1.7.3]: https://github.com/Automattic/jetpack-sync/compare/v1.7.2...v1.7.3 -[1.7.2]: https://github.com/Automattic/jetpack-sync/compare/v1.7.1...v1.7.2 -[1.7.1]: https://github.com/Automattic/jetpack-sync/compare/v1.7.0...v1.7.1 -[1.7.0]: https://github.com/Automattic/jetpack-sync/compare/v1.6.3...v1.7.0 -[1.6.3]: https://github.com/Automattic/jetpack-sync/compare/v1.6.2...v1.6.3 -[1.6.2]: https://github.com/Automattic/jetpack-sync/compare/v1.6.1...v1.6.2 -[1.6.1]: https://github.com/Automattic/jetpack-sync/compare/v1.6.0...v1.6.1 -[1.6.0]: https://github.com/Automattic/jetpack-sync/compare/v1.5.1...v1.6.0 -[1.5.1]: https://github.com/Automattic/jetpack-sync/compare/v1.5.0...v1.5.1 -[1.5.0]: https://github.com/Automattic/jetpack-sync/compare/v1.4.0...v1.5.0 -[1.4.0]: https://github.com/Automattic/jetpack-sync/compare/v1.3.4...v1.4.0 -[1.3.4]: https://github.com/Automattic/jetpack-sync/compare/v1.3.3...v1.3.4 -[1.3.3]: https://github.com/Automattic/jetpack-sync/compare/v1.3.2...v1.3.3 -[1.3.2]: https://github.com/Automattic/jetpack-sync/compare/v1.3.1...v1.3.2 -[1.3.1]: https://github.com/Automattic/jetpack-sync/compare/v1.3.0...v1.3.1 -[1.3.0]: https://github.com/Automattic/jetpack-sync/compare/v1.2.1...v1.3.0 -[1.2.1]: https://github.com/Automattic/jetpack-sync/compare/v1.2.0...v1.2.1 -[1.2.0]: https://github.com/Automattic/jetpack-sync/compare/v1.1.1...v1.2.0 -[1.1.1]: https://github.com/Automattic/jetpack-sync/compare/v1.1.0...v1.1.1 -[1.1.0]: https://github.com/Automattic/jetpack-sync/compare/v1.0.2...v1.1.0 -[1.0.2]: https://github.com/Automattic/jetpack-sync/compare/v1.0.1...v1.0.2 -[1.0.1]: https://github.com/Automattic/jetpack-sync/compare/v1.0.0...v1.0.1 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/composer.json deleted file mode 100644 index 5e755590..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/composer.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "name": "automattic/jetpack-sync", - "description": "Everything needed to allow syncing to the WP.com infrastructure.", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2", - "automattic/jetpack-connection": "^6.7.7", - "automattic/jetpack-constants": "^3.0.5", - "automattic/jetpack-password-checker": "^0.4.7", - "automattic/jetpack-ip": "^0.4.6", - "automattic/jetpack-roles": "^3.0.5", - "automattic/jetpack-status": "^5.0.10" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-search": "@dev", - "automattic/jetpack-waf": "@dev", - "automattic/jetpack-test-environment": "@dev", - "automattic/phpunit-select-config": "^1.0.1" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "scripts": { - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" - ], - "test-php": [ - "@composer phpunit" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-sync", - "textdomain": "jetpack-sync", - "version-constants": { - "::PACKAGE_VERSION": "src/class-package-version.php" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-sync/compare/v${old}...v${new}" - }, - "branch-alias": { - "dev-trunk": "4.9.x-dev" - }, - "dependencies": { - "test-only": [ - "packages/search", - "packages/waf" - ] - } - }, - "config": { - "allow-plugins": { - "roots/wordpress-core-installer": true - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-actions.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-actions.php deleted file mode 100644 index 380e066a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-actions.php +++ /dev/null @@ -1,1200 +0,0 @@ -do_dedicated_sync_and_exit(); - } - } - - /** - * Define JETPACK_SYNC_READ_ONLY constant if not defined. - * This notifies sync to not run in shutdown if it was initialized during init. - * - * @access public - * @static - */ - public static function mark_sync_read_only() { - Constants::set_constant( 'JETPACK_SYNC_READ_ONLY', true ); - } - - /** - * Decides if the sender should run on shutdown for this request. - * - * @access public - * @static - * - * @param bool $full_sync Whether the Full Sync sender should run on shutdown for this request. - * - * @return bool - */ - public static function should_initialize_sender( $full_sync = false ) { - - // Allow for explicit disable of Sync from request param jetpack_sync_read_only. - if ( isset( $_REQUEST['jetpack_sync_read_only'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification - self::mark_sync_read_only(); - return false; - } - - if ( Constants::is_true( 'DOING_CRON' ) ) { - return self::sync_via_cron_allowed(); - } - - /** - * For now, if dedicated Sync is enabled we will always initialize send, even for GET and unauthenticated requests - * but not for Full Sync, since it will still happen on shutdown. - */ - if ( false === $full_sync && Settings::is_dedicated_sync_enabled() ) { - return true; - } - - if ( isset( $_SERVER['REQUEST_METHOD'] ) && 'POST' === $_SERVER['REQUEST_METHOD'] ) { - return true; - } - - if ( current_user_can( 'manage_options' ) ) { - return true; - } - - if ( is_admin() ) { - return true; - } - - if ( defined( 'PHPUNIT_JETPACK_TESTSUITE' ) ) { - return true; - } - - if ( Constants::get_constant( 'WP_CLI' ) ) { - return true; - } - - return false; - } - - /** - * Decides if the sender should run on shutdown when actions are queued. - * - * @access public - * @static - * - * @param bool $enable Should we initilize sender. - * @return bool - */ - public static function should_initialize_sender_enqueue( $enable ) { - - // If $enabled is false don't modify it, only check cron if enabled. - if ( false === $enable ) { - return $enable; - } - - if ( Constants::is_true( 'DOING_CRON' ) ) { - return self::sync_via_cron_allowed(); - } - - return true; - } - - /** - * Decides if sync should run at all during this request. - * - * @access public - * @static - * - * @return bool - */ - public static function sync_allowed() { - if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) { - return false; - } - - if ( defined( 'PHPUNIT_JETPACK_TESTSUITE' ) ) { - return true; - } - - if ( ! Settings::is_sync_enabled() ) { - return false; - } - - if ( ( new Status() )->is_offline_mode() ) { - return false; - } - - $connection = new Jetpack_Connection(); - if ( ! $connection->is_connected() ) { - if ( ! doing_action( 'jetpack_site_registered' ) ) { - return false; - } - } - - // By now, we know the site is connected, so we can return false if in safe mode. - if ( ( new Status() )->in_safe_mode() ) { - return false; - } - - return true; - } - - /** - * Helper function to get details as to why sync is not allowed, if it is not allowed. - * - * @return array - */ - public static function get_debug_details() { - $debug = array(); - $debug['debug_details']['sync_allowed'] = self::sync_allowed(); - $debug['debug_details']['sync_health'] = Health::get_status(); - if ( false === $debug['debug_details']['sync_allowed'] ) { - if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) { - $debug['debug_details']['is_wpcom'] = true; - } - if ( defined( 'PHPUNIT_JETPACK_TESTSUITE' ) ) { - $debug['debug_details']['PHPUNIT_JETPACK_TESTSUITE'] = true; - } - if ( ! Settings::is_sync_enabled() ) { - $debug['debug_details']['is_sync_enabled'] = false; - $debug['debug_details']['jetpack_sync_disable'] = Settings::get_setting( 'disable' ); - $debug['debug_details']['jetpack_sync_network_disable'] = Settings::get_setting( 'network_disable' ); - } - if ( ( new Status() )->is_offline_mode() ) { - $debug['debug_details']['is_offline_mode'] = true; - } - if ( ( new Status() )->in_safe_mode() ) { - $debug['debug_details']['in_safe_mode'] = true; - } - $connection = new Jetpack_Connection(); - if ( ! $connection->is_connected() ) { - $debug['debug_details']['active_connection'] = false; - } - } - - // Sync locks. - $debug['debug_details']['dedicated_sync_enabled'] = Settings::is_dedicated_sync_enabled(); - - $queue = self::$sender->get_sync_queue(); - $full_queue = self::$sender->get_full_sync_queue(); - - $debug['debug_details']['sync_locks'] = array( - 'retry_time_sync' => get_option( self::RETRY_AFTER_PREFIX . 'sync' ), - 'retry_time_full_sync' => get_option( self::RETRY_AFTER_PREFIX . 'full_sync' ), - 'next_sync_time_sync' => self::$sender->get_next_sync_time( 'sync' ), - 'next_sync_time_full_sync' => self::$sender->get_next_sync_time( 'full_sync' ), - 'queue_locked_sync' => $queue->is_locked(), - 'queue_locked_full_sync' => $full_queue->is_locked(), - 'dedicated_sync_request_lock' => \Jetpack_Options::get_raw_option( Dedicated_Sender::DEDICATED_SYNC_REQUEST_LOCK_OPTION_NAME, null ), - 'dedicated_sync_temporary_disable_flag' => get_transient( Dedicated_Sender::DEDICATED_SYNC_TEMPORARY_DISABLE_FLAG ), - ); - - // Sync Logs. - $debug['debug_details']['last_succesful_sync'] = get_option( self::LAST_SUCCESS_PREFIX . 'sync', '' ); - $debug['debug_details']['sync_error_log'] = get_option( self::ERROR_LOG_PREFIX . 'sync', '' ); - - return $debug; - } - - /** - * Determines if syncing during a cron job is allowed. - * - * @access public - * @static - * - * @return bool|int - */ - public static function sync_via_cron_allowed() { - return ( Settings::get_setting( 'sync_via_cron' ) ); - } - - /** - * Decides if the given post should be Publicized based on its type. - * - * @access public - * @static - * - * @param bool $should_publicize Publicize status prior to this filter running. - * @param \WP_Post $post The post to test for Publicizability. - * @return bool - */ - public static function prevent_publicize_blacklisted_posts( $should_publicize, $post ) { - if ( in_array( $post->post_type, Settings::get_setting( 'post_types_blacklist' ), true ) ) { - return false; - } - - return $should_publicize; - } - - /** - * Set an importing flag to `true` in sync settings. - * - * @access public - * @static - */ - public static function set_is_importing_true() { - Settings::set_importing( true ); - } - - /** - * Sends data to WordPress.com via an XMLRPC or a REST API request based on the settings. - * - * @access public - * @static - * - * @param object $data Data relating to a sync action. - * @param string $codec_name The name of the codec that encodes the data. - * @param float $sent_timestamp Current server time so we can compensate for clock differences. - * @param string $queue_id The queue the action belongs to, sync or full_sync. - * @param float $checkout_duration Time spent retrieving queue items from the DB. - * @param float $preprocess_duration Time spent converting queue items into data to send. - * @param int $queue_size The size of the sync queue at the time of processing. - * @param string $buffer_id The ID of the Queue buffer checked out for processing. - * @return mixed|WP_Error The result of the sending request. - */ - public static function send_data( $data, $codec_name, $sent_timestamp, $queue_id, $checkout_duration, $preprocess_duration, $queue_size = null, $buffer_id = null ) { - - $query_args = array( - - 'sync' => '1', // Add an extra parameter to the URL so we can tell it's a sync action. - 'codec' => $codec_name, - 'timestamp' => $sent_timestamp, - 'queue' => $queue_id, - 'cd' => sprintf( '%.4f', $checkout_duration ), - 'pd' => sprintf( '%.4f', $preprocess_duration ), - 'queue_size' => $queue_size, - 'buffer_id' => $buffer_id, - // TODO this will be extended in the future. Might be good to extract in a separate method to support future entries too. - 'sync_flow_type' => Settings::is_dedicated_sync_enabled() ? 'dedicated' : 'default', - 'storage_type' => Settings::is_custom_queue_table_enabled() ? 'custom' : 'options', - ); - - $query_args['timeout'] = Settings::is_doing_cron() ? 30 : 20; - - if ( 'immediate-send' === $queue_id ) { - $query_args['timeout'] = 30; - } - - /** - * Filters query parameters appended to the Sync request URL sent to WordPress.com. - * - * @since 1.6.3 - * @since-jetpack 4.7.0 - * - * @param array $query_args associative array of query parameters. - */ - $query_args = apply_filters( 'jetpack_sync_send_data_query_args', $query_args ); - - $retry_after_header = false; - $dedicated_sync_header = false; - - // If REST API is enabled, use it. - if ( Settings::is_wpcom_rest_api_enabled() ) { - $jsonl_data = self::prepare_jsonl_data( $data ); - $url = '/sites/' . \Jetpack_Options::get_option( 'id' ) . '/jetpack-sync-actions'; - $url = add_query_arg( $query_args, $url ); - $args = array( - 'method' => 'POST', - 'format' => 'jsonl', - 'timeout' => $query_args['timeout'], - ); - - $response = Client::wpcom_json_api_request_as_blog( $url, '2', $args, $jsonl_data, 'wpcom' ); - $retry_after_header = wp_remote_retrieve_header( $response, 'Retry-After' ) ? wp_remote_retrieve_header( $response, 'Retry-After' ) : false; - $dedicated_sync_header = wp_remote_retrieve_header( $response, 'Jetpack-Dedicated-Sync' ) ? wp_remote_retrieve_header( $response, 'Jetpack-Dedicated-Sync' ) : false; - $response = self::process_rest_api_response( $response ); - } else { // Use XML-RPC. - $connection = new Jetpack_Connection(); - $url = add_query_arg( $query_args, $connection->xmlrpc_api_url() ); - - // If we're currently updating to Jetpack 7.7, the IXR client may be missing briefly - // because since 7.7 it's being autoloaded with Composer. - if ( ! class_exists( '\\Jetpack_IXR_Client' ) ) { - return new WP_Error( - 'ixr_client_missing', - esc_html__( 'Sync has been aborted because the IXR client is missing.', 'jetpack-sync' ) - ); - } - - $rpc = new \Jetpack_IXR_Client( - array( - 'url' => $url, - 'timeout' => $query_args['timeout'], - ) - ); - $result = $rpc->query( 'jetpack.syncActions', $data ); - $retry_after_header = $rpc->get_response_header( 'Retry-After' ); - $dedicated_sync_header = $rpc->get_response_header( 'Jetpack-Dedicated-Sync' ); - if ( $result ) { - $response = $rpc->getResponse(); - } else { - $response = $rpc->get_jetpack_error(); - } - } - - // Adhere to Retry-After headers. - if ( false !== $retry_after_header ) { - if ( (int) $retry_after_header > 0 ) { - update_option( self::RETRY_AFTER_PREFIX . $queue_id, microtime( true ) + (int) $retry_after_header, false ); - } else { - // if unexpected value default to 3 minutes. - update_option( self::RETRY_AFTER_PREFIX . $queue_id, microtime( true ) + 180, false ); - } - } - - // Enable/Disable Dedicated Sync flow via response headers. - if ( false !== $dedicated_sync_header ) { - Dedicated_Sender::maybe_change_dedicated_sync_status_from_wpcom_header( $dedicated_sync_header ); - } - - if ( is_wp_error( $response ) ) { - $error = $response; - if ( false === $retry_after_header ) { - // We received a non standard response from WP.com, lets backoff from sending requests for 1 minute. - update_option( self::RETRY_AFTER_PREFIX . $queue_id, microtime( true ) + 60, false ); - } - // Record Sync Errors. - $error_log = get_option( self::ERROR_LOG_PREFIX . $queue_id, array() ); - if ( ! is_array( $error_log ) ) { - $error_log = array(); - } - // Trim existing array to last 4 entries. - if ( 5 <= count( $error_log ) ) { - $error_log = array_slice( $error_log, -4, null, true ); - } - // Add new error indexed to time. - if ( isset( $rpc ) && ! empty( $rpc->get_last_response() ) ) { - $error_with_last_response = clone $error; - $error_with_last_response->add_data( $rpc->get_last_response() ); - $error_log[ (string) microtime( true ) ] = $error_with_last_response; - } else { - $error_log[ (string) microtime( true ) ] = $error; - } - - // Update the error log. - update_option( self::ERROR_LOG_PREFIX . $queue_id, $error_log ); - return $error; - } - - // Check if WordPress.com IDC mitigation blocked the sync request. - if ( Identity_Crisis::init()->check_response_for_idc( $response ) ) { - return new WP_Error( - 'sync_error_idc', - esc_html__( 'Sync has been blocked from WordPress.com because it would cause an identity crisis', 'jetpack-sync' ) - ); - } - - if ( isset( $response['processed_items'] ) ) { // Return only processed items. - $response = $response['processed_items']; - } - - // Record last successful sync. - update_option( self::LAST_SUCCESS_PREFIX . $queue_id, microtime( true ), false ); - - return $response; - } - - /** - * Kicks off the initial sync. - * - * @access public - * @static - * - * @return bool|null False if sync is not allowed. - */ - public static function do_initial_sync() { - // Let's not sync if we are not supposed to. - if ( ! self::sync_allowed() ) { - return false; - } - - // Don't start new sync if a full sync is in process. - $full_sync_module = Modules::get_module( 'full-sync' ); - '@phan-var Modules\Full_Sync_Immediately|Modules\Full_Sync $full_sync_module'; - if ( $full_sync_module && $full_sync_module->is_started() && ! $full_sync_module->is_finished() ) { - return false; - } - - $initial_sync_config = array( - 'options' => true, - 'functions' => true, - 'constants' => true, - 'users' => array( get_current_user_id() ), - 'network_options' => true, - ); - - self::do_full_sync( $initial_sync_config, 'initial_sync' ); - } - - /** - * Do an initial full sync only if one has not already been started. - * - * @return bool|null False if the initial full sync was already started, otherwise null. - */ - public static function do_only_first_initial_sync() { - $full_sync_module = Modules::get_module( 'full-sync' ); - '@phan-var Modules\Full_Sync_Immediately|Modules\Full_Sync $full_sync_module'; - if ( $full_sync_module && $full_sync_module->is_started() ) { - return false; - } - - static::do_initial_sync(); - } - - /** - * Kicks off a full sync. - * - * @access public - * @static - * - * @param array $modules The sync modules should be included in this full sync. All will be included if null. - * @param mixed $context The context where the full sync was initiated from. - * @return bool True if full sync was successfully started. - */ - public static function do_full_sync( $modules = null, $context = null ) { - if ( ! self::sync_allowed() ) { - return false; - } - - $full_sync_module = Modules::get_module( 'full-sync' ); - '@phan-var Modules\Full_Sync_Immediately|Modules\Full_Sync $full_sync_module'; - - if ( ! $full_sync_module ) { - return false; - } - - self::initialize_listener(); - - $full_sync_module->start( $modules, $context ); - - return true; - } - - /** - * Adds a cron schedule for regular syncing via cron, unless the schedule already exists. - * - * @access public - * @static - * - * @param array $schedules The list of WordPress cron schedules prior to this filter. - * @return array A list of WordPress cron schedules with the Jetpack sync interval added. - */ - public static function jetpack_cron_schedule( $schedules ) { - if ( ! isset( $schedules[ self::DEFAULT_SYNC_CRON_INTERVAL_NAME ] ) ) { - $minutes = (int) ( self::DEFAULT_SYNC_CRON_INTERVAL_VALUE / 60 ); - $display = ( 1 === $minutes ) ? - __( 'Every minute', 'jetpack-sync' ) : - /* translators: %d is an integer indicating the number of minutes. */ - sprintf( __( 'Every %d minutes', 'jetpack-sync' ), $minutes ); - $schedules[ self::DEFAULT_SYNC_CRON_INTERVAL_NAME ] = array( - 'interval' => self::DEFAULT_SYNC_CRON_INTERVAL_VALUE, - 'display' => $display, - ); - } - return $schedules; - } - - /** - * Starts an incremental sync via cron. - * - * @access public - * @static - */ - public static function do_cron_sync() { - self::do_cron_sync_by_type( 'sync' ); - } - - /** - * Starts a full sync via cron. - * - * @access public - * @static - */ - public static function do_cron_full_sync() { - self::do_cron_sync_by_type( 'full_sync' ); - } - - /** - * Try to send actions until we run out of things to send, - * or have to wait more than 15s before sending again, - * or we hit a lock or some other sending issue - * - * @access public - * @static - * - * @param string $type Sync type. Can be `sync` or `full_sync`. - */ - public static function do_cron_sync_by_type( $type ) { - if ( ! self::sync_allowed() || ( 'sync' !== $type && 'full_sync' !== $type ) ) { - return; - } - - self::initialize_sender(); - - $time_limit = Settings::get_setting( 'cron_sync_time_limit' ); - $start_time = time(); - $executions = 0; - - do { - $next_sync_time = self::$sender->get_next_sync_time( $type ); - - if ( $next_sync_time ) { - $delay = $next_sync_time - time() + 1; - if ( $delay > 15 ) { - break; - } elseif ( $delay > 0 ) { - sleep( $delay ); - } - } - - // Explicitly only allow 1 do_full_sync call until issue with Immediate Full Sync is resolved. - // For more context see p1HpG7-9pe-p2. - if ( 'full_sync' === $type && $executions >= 1 ) { - break; - } - - /** - * Only try to sync once if Dedicated Sync is enabled. Dedicated Sync has its own requeueing mechanism - * that will re-run it if there are items in the queue at the end. - */ - if ( 'sync' === $type && $executions >= 1 && Settings::is_dedicated_sync_enabled() ) { - break; - } - - $result = 'full_sync' === $type ? self::$sender->do_full_sync() : self::$sender->do_sync(); - - // # of send actions performed. - ++$executions; - - } while ( $result && ! is_wp_error( $result ) && ( $start_time + $time_limit ) > time() ); - - return $executions; - } - - /** - * Initialize the sync listener. - * - * @access public - * @static - */ - public static function initialize_listener() { - self::$listener = Listener::get_instance(); - } - - /** - * Initializes the sync sender. - * - * @access public - * @static - */ - public static function initialize_sender() { - self::$sender = Sender::get_instance(); - add_filter( 'jetpack_sync_send_data', array( __CLASS__, 'send_data' ), 10, 8 ); - } - - /** - * Initializes sync for WooCommerce. - * - * @access public - * @static - */ - public static function initialize_woocommerce() { - if ( false === class_exists( 'WooCommerce' ) ) { - return; - } - add_filter( 'jetpack_sync_modules', array( __CLASS__, 'add_woocommerce_sync_module' ) ); - - if ( ! class_exists( CustomOrdersTableController::class ) ) { - return; - } - $cot_controller = wc_get_container()->get( CustomOrdersTableController::class ); - if ( $cot_controller->custom_orders_table_usage_is_enabled() ) { - add_filter( 'jetpack_sync_modules', array( __CLASS__, 'add_woocommerce_hpos_order_sync_module' ) ); - } - } - - /** - * Initializes sync for Instant Search. - * - * @access public - * @static - */ - public static function initialize_search() { - if ( false === class_exists( 'Automattic\\Jetpack\\Search\\Module_Control' ) ) { - return; - } - $search_module = new \Automattic\Jetpack\Search\Module_Control(); - if ( $search_module->is_instant_search_enabled() ) { - add_filter( 'jetpack_sync_modules', array( __CLASS__, 'add_search_sync_module' ) ); - } - } - - /** - * Add Search updates to Sync Filters. - * - * @access public - * @static - * - * @param array $sync_modules The list of sync modules declared prior to this filter. - * @return array A list of sync modules that now includes Search's modules. - */ - public static function add_search_sync_module( $sync_modules ) { - $sync_modules[] = 'Automattic\\Jetpack\\Sync\\Modules\\Search'; - return $sync_modules; - } - - /** - * Adds Woo's sync modules to existing modules for sending. - * - * @access public - * @static - * - * @param array $sync_modules The list of sync modules declared prior to this filter. - * @return array A list of sync modules that now includes Woo's modules. - */ - public static function add_woocommerce_sync_module( $sync_modules ) { - $sync_modules[] = 'Automattic\\Jetpack\\Sync\\Modules\\WooCommerce'; - return $sync_modules; - } - - /** - * Adds Woo's HPOS sync modules to existing modules for sending. - * - * @param array $sync_modules The list of sync modules declared prior to this filter. - * - * @access public - * @static - * - * @return array A list of sync modules that now includes Woo's HPOS modules. - */ - public static function add_woocommerce_hpos_order_sync_module( $sync_modules ) { - $sync_modules[] = WooCommerce_HPOS_Orders::class; - return $sync_modules; - } - - /** - * Initializes sync for WP Super Cache. - * - * @access public - * @static - */ - public static function initialize_wp_super_cache() { - if ( false === function_exists( 'wp_cache_is_enabled' ) ) { - return; - } - add_filter( 'jetpack_sync_modules', array( __CLASS__, 'add_wp_super_cache_sync_module' ) ); - } - - /** - * Adds WP Super Cache's sync modules to existing modules for sending. - * - * @access public - * @static - * - * @param array $sync_modules The list of sync modules declared prior to this filer. - * @return array A list of sync modules that now includes WP Super Cache's modules. - */ - public static function add_wp_super_cache_sync_module( $sync_modules ) { - $sync_modules[] = 'Automattic\\Jetpack\\Sync\\Modules\\WP_Super_Cache'; - return $sync_modules; - } - - /** - * Sanitizes the name of sync's cron schedule. - * - * @access public - * @static - * - * @param string $schedule The name of a WordPress cron schedule. - * @return string The sanitized name of sync's cron schedule. - */ - public static function sanitize_filtered_sync_cron_schedule( $schedule ) { - $schedule = sanitize_key( $schedule ); - $schedules = wp_get_schedules(); - - // Make sure that the schedule has actually been registered using the `cron_intervals` filter. - if ( isset( $schedules[ $schedule ] ) ) { - return $schedule; - } - - return self::DEFAULT_SYNC_CRON_INTERVAL_NAME; - } - - /** - * Allows offsetting of start times for sync cron jobs. - * - * @access public - * @static - * - * @param string $schedule The name of a cron schedule. - * @param string $hook The hook that this method is responding to. - * @return int The offset for the sync cron schedule. - */ - public static function get_start_time_offset( $schedule = '', $hook = '' ) { - $start_time_offset = is_multisite() - ? wp_rand( 0, ( 2 * self::DEFAULT_SYNC_CRON_INTERVAL_VALUE ) ) - : 0; - - /** - * Allows overriding the offset that the sync cron jobs will first run. This can be useful when scheduling - * cron jobs across multiple sites in a network. - * - * @since 1.6.3 - * @since-jetpack 4.5.0 - * - * @param int $start_time_offset - * @param string $hook - * @param string $schedule - */ - return (int) apply_filters( - 'jetpack_sync_cron_start_time_offset', - $start_time_offset, - $hook, - $schedule - ); - } - - /** - * Decides if a sync cron should be scheduled. - * - * @access public - * @static - * - * @param string $schedule The name of a cron schedule. - * @param string $hook The hook that this method is responding to. - */ - public static function maybe_schedule_sync_cron( $schedule, $hook ) { - if ( ! $hook ) { - return; - } - $schedule = self::sanitize_filtered_sync_cron_schedule( $schedule ); - - $start_time = time() + self::get_start_time_offset( $schedule, $hook ); - if ( ! wp_next_scheduled( $hook ) ) { - // Schedule a job to send pending queue items once a minute. - wp_schedule_event( $start_time, $schedule, $hook ); - } elseif ( wp_get_schedule( $hook ) !== $schedule ) { - // If the schedule has changed, update the schedule. - wp_clear_scheduled_hook( $hook ); - wp_schedule_event( $start_time, $schedule, $hook ); - } - } - - /** - * Clears Jetpack sync cron jobs. - * - * @access public - * @static - */ - public static function clear_sync_cron_jobs() { - wp_clear_scheduled_hook( 'jetpack_sync_cron' ); - wp_clear_scheduled_hook( 'jetpack_sync_full_cron' ); - } - - /** - * Initializes Jetpack sync cron jobs. - * - * @access public - * @static - */ - public static function init_sync_cron_jobs() { - add_filter( 'cron_schedules', array( __CLASS__, 'jetpack_cron_schedule' ) ); // phpcs:ignore WordPress.WP.CronInterval.ChangeDetected - - add_action( 'jetpack_sync_cron', array( __CLASS__, 'do_cron_sync' ) ); - add_action( 'jetpack_sync_full_cron', array( __CLASS__, 'do_cron_full_sync' ) ); - - /** - * Allows overriding of the default incremental sync cron schedule which defaults to once every 5 minutes. - * - * @since 1.6.3 - * @since-jetpack 4.3.2 - * - * @param string self::DEFAULT_SYNC_CRON_INTERVAL_NAME - */ - $incremental_sync_cron_schedule = apply_filters( 'jetpack_sync_incremental_sync_interval', self::DEFAULT_SYNC_CRON_INTERVAL_NAME ); - self::maybe_schedule_sync_cron( $incremental_sync_cron_schedule, 'jetpack_sync_cron' ); - - /** - * Allows overriding of the full sync cron schedule which defaults to once every 5 minutes. - * - * @since 1.6.3 - * @since-jetpack 4.3.2 - * - * @param string self::DEFAULT_SYNC_CRON_INTERVAL_NAME - */ - $full_sync_cron_schedule = apply_filters( 'jetpack_sync_full_sync_interval', self::DEFAULT_SYNC_CRON_INTERVAL_NAME ); - self::maybe_schedule_sync_cron( $full_sync_cron_schedule, 'jetpack_sync_full_cron' ); - } - - /** - * Perform maintenance when a plugin upgrade occurs. - * - * @access public - * @static - * - * @param string $new_version New version of the plugin. - * @param string $old_version Old version of the plugin. - */ - public static function cleanup_on_upgrade( $new_version = '', $old_version = '' ) { - if ( wp_next_scheduled( 'jetpack_sync_send_db_checksum' ) ) { - wp_clear_scheduled_hook( 'jetpack_sync_send_db_checksum' ); - } - - $is_new_sync_upgrade = version_compare( $old_version, '4.2', '>=' ); - if ( ! empty( $old_version ) && $is_new_sync_upgrade && version_compare( $old_version, '4.5', '<' ) ) { - self::clear_sync_cron_jobs(); - Settings::update_settings( - array( - 'render_filtered_content' => Defaults::$default_render_filtered_content, - ) - ); - } - - Health::on_jetpack_upgraded(); - } - - /** - * Get syncing status for the given fields. - * - * @access public - * @static - * - * @param string|null $fields A comma-separated string of the fields to include in the array from the JSON response. - * @return array An associative array with the status report. - */ - public static function get_sync_status( $fields = null ) { - self::initialize_sender(); - - $sync_module = Modules::get_module( 'full-sync' ); - '@phan-var Modules\Full_Sync_Immediately|Modules\Full_Sync $sync_module'; - $queue = self::$sender->get_sync_queue(); - - // _get_cron_array can be false - $cron_timestamps = ( _get_cron_array() ) ? array_keys( _get_cron_array() ) : array(); - $next_cron = ( ! empty( $cron_timestamps ) ) ? $cron_timestamps[0] - time() : ''; - - $checksums = array(); - $debug = array(); - - if ( ! empty( $fields ) ) { - $store = new Replicastore(); - $fields_params = array_map( 'trim', explode( ',', $fields ) ); - - if ( in_array( 'posts_checksum', $fields_params, true ) ) { - $checksums['posts_checksum'] = $store->posts_checksum(); - } - if ( in_array( 'comments_checksum', $fields_params, true ) ) { - $checksums['comments_checksum'] = $store->comments_checksum(); - } - if ( in_array( 'post_meta_checksum', $fields_params, true ) ) { - $checksums['post_meta_checksum'] = $store->post_meta_checksum(); - } - if ( in_array( 'comment_meta_checksum', $fields_params, true ) ) { - $checksums['comment_meta_checksum'] = $store->comment_meta_checksum(); - } - - if ( in_array( 'debug_details', $fields_params, true ) ) { - $debug = self::get_debug_details(); - } - } - - $full_sync_status = ( $sync_module ) ? $sync_module->get_status() : array(); - - $full_queue = self::$sender->get_full_sync_queue(); - - $result = array_merge( - $full_sync_status, - $checksums, - $debug, - array( - 'cron_size' => count( $cron_timestamps ), - 'next_cron' => $next_cron, - 'queue_size' => $queue->size(), - 'queue_lag' => $queue->lag(), - 'queue_next_sync' => ( self::$sender->get_next_sync_time( 'sync' ) - microtime( true ) ), - 'full_queue_next_sync' => ( self::$sender->get_next_sync_time( 'full_sync' ) - microtime( true ) ), - ) - ); - - // Verify $sync_module is not false. - if ( $sync_module && ! $sync_module instanceof Modules\Full_Sync_Immediately ) { - $result['full_queue_size'] = $full_queue->size(); - $result['full_queue_lag'] = $full_queue->lag(); - } - return $result; - } - - /** - * Reset Sync locks. - * - * @access public - * @static - * @since 1.43.0 - * - * @param bool $unlock_queues Whether to unlock Sync queues. Defaults to true. - */ - public static function reset_sync_locks( $unlock_queues = true ) { - // Next sync locks. - delete_option( Sender::NEXT_SYNC_TIME_OPTION_NAME . '_sync' ); - delete_option( Sender::NEXT_SYNC_TIME_OPTION_NAME . '_full_sync' ); - delete_option( Sender::NEXT_SYNC_TIME_OPTION_NAME . '_full-sync-enqueue' ); - // Retry after locks. - delete_option( self::RETRY_AFTER_PREFIX . 'sync' ); - delete_option( self::RETRY_AFTER_PREFIX . 'full_sync' ); - // Dedicated sync locks. - \Jetpack_Options::delete_raw_option( Dedicated_Sender::DEDICATED_SYNC_REQUEST_LOCK_OPTION_NAME ); - delete_transient( Dedicated_Sender::DEDICATED_SYNC_TEMPORARY_DISABLE_FLAG ); - // Lock for disabling Sync sending temporarily. - delete_transient( Sender::TEMP_SYNC_DISABLE_TRANSIENT_NAME ); - - // Queue locks. - // Note that we are just unlocking the queues here, not reseting them. - if ( $unlock_queues ) { - $sync_queue = new Queue( 'sync' ); - $sync_queue->unlock(); - - $full_sync_queue = new Queue( 'full_sync' ); - $full_sync_queue->unlock(); - } - } - - /** - * Prepare JSONL data. - * - * @param mixed $data The data to be prepared. - * - * @return string The prepared JSONL data. - */ - private static function prepare_jsonl_data( $data ) { - $jsonl_data = implode( - "\n", - array_map( - function ( $key, $value ) { - return wp_json_encode( array( $key => $value ) ); - }, - array_keys( (array) $data ), - array_values( (array) $data ) - ) - ); - return $jsonl_data; - } - - /** - * Helper method to process the API response. - * - * @param mixed $response The response from the API. - * @return array|Wp_Error Array for successful response or a WP_Error object. - */ - private static function process_rest_api_response( $response ) { - - $response_code = wp_remote_retrieve_response_code( $response ); - $response_body = wp_remote_retrieve_body( $response ); - if ( is_wp_error( $response ) ) { - return $response; - } - $decoded_response = json_decode( $response_body, true ); - - if ( false === is_array( $decoded_response ) ) { - return new WP_Error( 'sync_rest_api_response_decoding_failed', 'Sync REST API response decoding failed', $response_body ); - } - - if ( $response_code !== 200 || false === isset( $decoded_response['processed_items'] ) ) { - if ( is_array( $decoded_response ) && isset( $decoded_response['code'] ) && isset( $decoded_response['message'] ) ) { - return new WP_Error( - 'jetpack_sync_send_error_' . $decoded_response['code'], - $decoded_response['message'], - $decoded_response['data'] ?? null - ); - } else { - return new WP_Error( $response_code, 'Sync REST API request failed', $response_body ); - } - } else { - return $decoded_response; - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-data-settings.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-data-settings.php deleted file mode 100644 index 9fb90681..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-data-settings.php +++ /dev/null @@ -1,421 +0,0 @@ - array( - 'Automattic\\Jetpack\\Sync\\Modules\\Callables', - 'Automattic\\Jetpack\\Sync\\Modules\\Constants', - 'Automattic\\Jetpack\\Sync\\Modules\\Full_Sync_Immediately', // enable Initial Sync on Site Connection. - 'Automattic\\Jetpack\\Sync\\Modules\\Options', - 'Automattic\\Jetpack\\Sync\\Modules\\Updates', - 'Automattic\\Jetpack\\Sync\\Modules\\Stats', // Daily heartbeat data. - ), - 'jetpack_sync_callable_whitelist' => array( - 'site_url' => array( 'Automattic\\Jetpack\\Connection\\Urls', 'site_url' ), - 'home_url' => array( 'Automattic\\Jetpack\\Connection\\Urls', 'home_url' ), - 'get_plugins' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_plugins' ), - 'get_themes' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_themes' ), - 'jetpack_connection_active_plugins' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_jetpack_connection_active_plugins' ), - 'paused_plugins' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_paused_plugins' ), - 'paused_themes' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_paused_themes' ), - 'timezone' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_timezone' ), - 'wp_get_environment_type' => 'wp_get_environment_type', - 'wp_max_upload_size' => 'wp_max_upload_size', - 'wp_version' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'wp_version' ), - ), - 'jetpack_sync_constants_whitelist' => array( - 'ABSPATH', - 'ALTERNATE_WP_CRON', - 'ATOMIC_CLIENT_ID', - 'AUTOMATIC_UPDATER_DISABLED', - 'DISABLE_WP_CRON', - 'DISALLOW_FILE_EDIT', - 'DISALLOW_FILE_MODS', - 'EMPTY_TRASH_DAYS', - 'FS_METHOD', - 'IS_PRESSABLE', - 'PHP_VERSION', - 'WP_ACCESSIBLE_HOSTS', - 'WP_AUTO_UPDATE_CORE', - 'WP_CONTENT_DIR', - 'WP_CRON_LOCK_TIMEOUT', - 'WP_DEBUG', - 'WP_HTTP_BLOCK_EXTERNAL', - 'WP_MAX_MEMORY_LIMIT', - 'WP_MEMORY_LIMIT', - 'WP_POST_REVISIONS', - ), - 'jetpack_sync_options_whitelist' => array( - /** - * Sync related options - */ - 'jetpack_sync_non_blocking', - 'jetpack_sync_non_public_post_stati', - 'jetpack_sync_settings_comment_meta_whitelist', - 'jetpack_sync_settings_post_meta_whitelist', - 'jetpack_sync_settings_post_types_blacklist', - 'jetpack_sync_settings_taxonomies_blacklist', - 'jetpack_sync_settings_dedicated_sync_enabled', - 'jetpack_sync_settings_custom_queue_table_enabled', - 'jetpack_sync_settings_wpcom_rest_api_enabled', - /** - * Connection related options - */ - 'jetpack_package_versions', - /** - * Generic site options - */ - 'blog_charset', - 'blog_public', - 'blogdescription', - 'blogname', - 'permalink_structure', - 'stylesheet', - 'time_format', - 'timezone_string', - 'active_plugins', - ), - ); - - const MODULE_FILTER_MAPPING = array( - 'Automattic\\Jetpack\\Sync\\Modules\\Options' => array( - 'jetpack_sync_options_whitelist', - 'jetpack_sync_options_contentless', - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Constants' => array( - 'jetpack_sync_constants_whitelist', - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Callables' => array( - 'jetpack_sync_callable_whitelist', - 'jetpack_sync_multisite_callable_whitelist', - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Posts' => array( - 'jetpack_sync_post_meta_whitelist', - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Comments' => array( - 'jetpack_sync_comment_meta_whitelist', - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Users' => array( - 'jetpack_sync_capabilities_whitelist', - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Import' => array( - 'jetpack_sync_known_importers', - ), - ); - - const MODULES_FILTER_NAME = 'jetpack_sync_modules'; - - /** - * The static data settings array which contains the aggregated data settings for - * each sync filter. - * - * @var array - */ - private static $data_settings = array(); - - /** - * The static array which contains the list of filter hooks that have already been set up. - * - * @var array - */ - private static $set_filter_hooks = array(); - - /** - * Adds the data settings provided by a plugin to the Sync data settings. - * - * @param array $plugin_settings The array provided by the plugin. The array must use filters - * from the DATA_FILTER_DEFAULTS list as keys. - */ - public function add_settings_list( $plugin_settings = array() ) { - if ( empty( $plugin_settings ) || ! is_array( $plugin_settings ) ) { - /* - * No custom plugin settings, so use defaults for everything and bail early. - */ - $this->set_all_defaults(); - return; - } - - $this->add_filters_custom_settings_and_hooks( $plugin_settings ); - - if ( ! did_action( 'jetpack_sync_add_required_data_settings' ) ) { - $this->add_required_settings(); - /** - * Fires when the required settings have been adding to the static - * data_settings array. - * - * @since 1.29.2 - * - * @module sync - */ - do_action( 'jetpack_sync_add_required_data_settings' ); - } - } - - /** - * Sets the default values for sync modules and all sync data filters. - */ - private function set_all_defaults() { - $this->add_sync_filter_setting( self::MODULES_FILTER_NAME, Modules::DEFAULT_SYNC_MODULES ); - - foreach ( array_keys( Default_Filter_Settings::DATA_FILTER_DEFAULTS ) as $filter ) { - $this->add_sync_filter_setting( $filter, $this->get_default_setting_for_filter( $filter ) ); - } - } - - /** - * Returns the default settings for the given filter. - * - * @param string $filter The filter name. - * - * @return array The filter's default settings array. - */ - private function get_default_setting_for_filter( $filter ) { - if ( self::MODULES_FILTER_NAME === $filter ) { - return Modules::DEFAULT_SYNC_MODULES; - } - - return ( new Default_Filter_Settings() )->get_default_settings( $filter ); - } - - /** - * Adds the custom settings and sets up the necessary filter hooks. - * - * @param array $filters_settings The custom settings. - */ - private function add_filters_custom_settings_and_hooks( $filters_settings ) { - if ( isset( $filters_settings[ self::MODULES_FILTER_NAME ] ) && is_array( $filters_settings[ self::MODULES_FILTER_NAME ] ) ) { - $this->add_custom_filter_setting( self::MODULES_FILTER_NAME, $filters_settings[ self::MODULES_FILTER_NAME ] ); - $enabled_modules = $filters_settings[ self::MODULES_FILTER_NAME ]; - } else { - $this->add_sync_filter_setting( self::MODULES_FILTER_NAME, Modules::DEFAULT_SYNC_MODULES ); - $enabled_modules = Modules::DEFAULT_SYNC_MODULES; - } - - $all_modules = Modules::DEFAULT_SYNC_MODULES; - - foreach ( $all_modules as $module ) { - if ( in_array( $module, $enabled_modules, true ) || in_array( $module, self::MUST_SYNC_DATA_SETTINGS['jetpack_sync_modules'], true ) ) { - $this->add_filters_for_enabled_module( $module, $filters_settings ); - } else { - $this->add_filters_for_disabled_module( $module ); - } - } - } - - /** - * Adds the filters for the provided enabled module. If the settings provided custom filter settings - * for the module's filters, those are used. Otherwise, the filter's default settings are used. - * - * @param string $module The module name. - * @param array $filters_settings The settings for the filters. - */ - private function add_filters_for_enabled_module( $module, $filters_settings ) { - $module_mapping = self::MODULE_FILTER_MAPPING; - $filters_for_module = isset( $module_mapping[ $module ] ) ? $module_mapping[ $module ] : array(); - - foreach ( $filters_for_module as $filter ) { - if ( isset( $filters_settings[ $filter ] ) ) { - $this->add_custom_filter_setting( $filter, $filters_settings[ $filter ] ); - } else { - $this->add_sync_filter_setting( $filter, $this->get_default_setting_for_filter( $filter ) ); - } - } - } - - /** - * Adds the filters for the provided disabled module. The disabled module's associated filter settings are - * set to an empty array. - * - * @param string $module The module name. - */ - private function add_filters_for_disabled_module( $module ) { - $module_mapping = self::MODULE_FILTER_MAPPING; - $filters_for_module = isset( $module_mapping[ $module ] ) ? $module_mapping[ $module ] : array(); - - foreach ( $filters_for_module as $filter ) { - $this->add_custom_filter_setting( $filter, array() ); - } - } - - /** - * Adds the provided custom setting for a filter. If the filter setting isn't valid, the default - * value is used. - * - * If the filter's hook hasn't already been set up, it gets set up. - * - * @param string $filter The filter. - * @param array $setting The filter setting. - */ - private function add_custom_filter_setting( $filter, $setting ) { - if ( ! $this->is_valid_filter_setting( $filter, $setting ) ) { - /* - * The provided setting isn't valid, so use the default for this filter. - * We're using the default values so there's no need to set the filter hook. - */ - $this->add_sync_filter_setting( $filter, $this->get_default_setting_for_filter( $filter ) ); - return; - } - - if ( ! isset( static::$set_filter_hooks[ $filter ] ) ) { - // First time a custom modules setting is provided, so set the filter hook. - add_filter( $filter, array( $this, 'sync_data_filter_hook' ) ); - static::$set_filter_hooks[ $filter ] = 1; - } - - $this->add_sync_filter_setting( $filter, $setting ); - } - - /** - * Determines whether the filter setting is valid. The setting array is in the correct format (associative or indexed). - * - * @param string $filter The filter to check. - * @param array $filter_settings The filter settings. - * - * @return bool Whether the filter settings can be used. - */ - private function is_valid_filter_setting( $filter, $filter_settings ) { - if ( ! is_array( $filter_settings ) ) { - // The settings for each filter must be an array. - return false; - } - - if ( empty( $filter_settings ) ) { - // Empty settings are allowed. - return true; - } - - $indexed_array = isset( $filter_settings[0] ); - if ( in_array( $filter, Default_Filter_Settings::ASSOCIATIVE_FILTERS, true ) && ! $indexed_array ) { - return true; - } elseif ( ! in_array( $filter, Default_Filter_Settings::ASSOCIATIVE_FILTERS, true ) && $indexed_array ) { - return true; - } - - return false; - } - - /** - * Adds the data settings that are always required for every plugin that uses Sync. - */ - private function add_required_settings() { - foreach ( self::MUST_SYNC_DATA_SETTINGS as $filter => $setting ) { - // If the corresponding setting is already set and matches the default one, no need to proceed. - if ( isset( static::$data_settings[ $filter ] ) && static::$data_settings[ $filter ] === $this->get_default_setting_for_filter( $filter ) ) { - continue; - } - $this->add_custom_filter_setting( $filter, $setting ); - } - } - - /** - * Adds the provided data setting for the provided filter. - * - * @param string $filter The filter name. - * @param array $value The data setting. - */ - private function add_sync_filter_setting( $filter, $value ) { - if ( ! isset( static::$data_settings[ $filter ] ) ) { - static::$data_settings[ $filter ] = $value; - return; - } - - if ( in_array( $filter, Default_Filter_Settings::ASSOCIATIVE_FILTERS, true ) ) { - $this->add_associative_filter_setting( $filter, $value ); - } else { - $this->add_indexed_filter_setting( $filter, $value ); - } - } - - /** - * Adds the provided data setting for the provided filter. This method handles - * adding settings to data that is stored as an associative array. - * - * @param string $filter The filter name. - * @param array $settings The data settings. - */ - private function add_associative_filter_setting( $filter, $settings ) { - foreach ( $settings as $key => $item ) { - if ( ! array_key_exists( $key, static::$data_settings[ $filter ] ) ) { - static::$data_settings[ $filter ][ $key ] = $item; - } - } - } - - /** - * Adds the provided data setting for the provided filter. This method handles - * adding settings to data that is stored as an indexed array. - * - * @param string $filter The filter name. - * @param array $settings The data settings. - */ - private function add_indexed_filter_setting( $filter, $settings ) { - static::$data_settings[ $filter ] = array_unique( - array_merge( - static::$data_settings[ $filter ], - $settings - ) - ); - } - - /** - * The callback function added to the sync data filters. Combines the list in the $data_settings property - * with any non-default values from the received array. - * - * @param array $filtered_values The data revieved from the filter. - * - * @return array The data settings for the filter. - */ - public function sync_data_filter_hook( $filtered_values ) { - if ( ! is_array( $filtered_values ) ) { - // Something is wrong with the input, so set it to an empty array. - $filtered_values = array(); - } - - $current_filter = current_filter(); - - if ( ! isset( static::$data_settings[ $current_filter ] ) ) { - return $filtered_values; - } - - if ( in_array( $current_filter, Default_Filter_Settings::ASSOCIATIVE_FILTERS, true ) ) { - $extra_filters = array_diff_key( $filtered_values, $this->get_default_setting_for_filter( $current_filter ) ); - $this->add_associative_filter_setting( $current_filter, $extra_filters ); - return static::$data_settings[ $current_filter ]; - } - - $extra_filters = array_diff( $filtered_values, $this->get_default_setting_for_filter( $current_filter ) ); - $this->add_indexed_filter_setting( $current_filter, $extra_filters ); - return static::$data_settings[ $current_filter ]; - } - - /** - * Sets the $data_settings property to an empty array. This is useful for testing. - */ - public function empty_data_settings_and_hooks() { - static::$data_settings = array(); - static::$set_filter_hooks = array(); - } - - /** - * Returns the $data_settings property. - * - * @return array The data_settings property. - */ - public function get_data_settings() { - return static::$data_settings; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-dedicated-sender.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-dedicated-sender.php deleted file mode 100644 index 02cf7739..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-dedicated-sender.php +++ /dev/null @@ -1,408 +0,0 @@ -is_locked() ) { - return new WP_Error( 'locked_queue_' . $queue->id ); - } - - if ( $queue->size() === 0 ) { - return new WP_Error( 'empty_queue_' . $queue->id ); - } - - // Return early if we've gotten a retry-after header response that is not expired. - $retry_time = get_option( Actions::RETRY_AFTER_PREFIX . $queue->id ); - if ( $retry_time && $retry_time >= microtime( true ) ) { - return new WP_Error( 'retry_after_' . $queue->id ); - } - - // Don't sync if we are throttled. - $sync_next_time = Sender::get_instance()->get_next_sync_time( $queue->id ); - if ( $sync_next_time > microtime( true ) ) { - return new WP_Error( 'sync_throttled_' . $queue->id ); - } - /** - * How much time to wait before we start suspecting Dedicated Sync is in trouble. - */ - $queue_send_time_threshold = 30 * MINUTE_IN_SECONDS; - - $queue_lag = $queue->lag(); - - /** - * Try to acquire a request lock, so we don't spawn multiple requests at the same time. - * This should prevent cases where sites might have limits on the amount of simultaneous requests. - */ - $request_lock = self::try_lock_spawn_request(); - if ( ! $request_lock ) { - return new WP_Error( 'dedicated_request_lock', 'Unable to acquire request lock' ); - } - - /** - * If the queue lag is bigger than the threshold, we want to check if Dedicated Sync is working correctly. - * We will do by sending a test request and disabling Dedicated Sync if it's not working. We will also exit early - * in case we send the test request since it is a blocking request. - */ - if ( $queue_lag > $queue_send_time_threshold ) { - if ( false === get_transient( self::DEDICATED_SYNC_CHECK_TRANSIENT ) ) { - if ( ! self::can_spawn_dedicated_sync_request() ) { - self::on_dedicated_sync_lag_not_sending_threshold_reached(); - return new WP_Error( 'dedicated_sync_not_sending', 'Dedicated Sync is not successfully sending events' ); - } - return true; - } - } - - $url = rest_url( 'jetpack/v4/sync/spawn-sync' ); - $url = add_query_arg( 'time', time(), $url ); // Enforce Cache busting. - $url = add_query_arg( self::DEDICATED_SYNC_REQUEST_LOCK_QUERY_PARAM_NAME, $request_lock, $url ); - - $args = array( - 'cookies' => $_COOKIE, - 'blocking' => false, - 'timeout' => 0.01, - /** This filter is documented in wp-includes/class-wp-http-streams.php */ - 'sslverify' => apply_filters( 'https_local_ssl_verify', false ), - ); - - $result = wp_remote_get( $url, $args ); - if ( is_wp_error( $result ) ) { - return $result; - } - - return true; - } - - /** - * Attempt to acquire a request lock. - * - * To avoid spawning multiple requests at the same time, we need to have a quick lock that will - * allow only a single request to continue if we try to spawn multiple at the same time. - * - * @return false|mixed|string - */ - public static function try_lock_spawn_request() { - $current_microtime = (string) microtime( true ); - - if ( wp_using_ext_object_cache() ) { - if ( true !== wp_cache_add( self::DEDICATED_SYNC_REQUEST_LOCK_OPTION_NAME, $current_microtime, 'jetpack', self::DEDICATED_SYNC_REQUEST_LOCK_TIMEOUT ) ) { - // Cache lock has been claimed already. - return false; - } - } - - $current_lock_value = \Jetpack_Options::get_raw_option( self::DEDICATED_SYNC_REQUEST_LOCK_OPTION_NAME, null ); - - if ( ! empty( $current_lock_value ) ) { - // Check if time has passed to overwrite the lock - min 5s? - if ( is_numeric( $current_lock_value ) && ( ( $current_microtime - $current_lock_value ) < self::DEDICATED_SYNC_REQUEST_LOCK_TIMEOUT ) ) { - // Still in previous lock, quit - return false; - } - - // If the value is not numeric (float/current time), we want to just overwrite it and continue. - } - - // Update. We don't want it to autoload, as we want to fetch it right before the checks. - \Jetpack_Options::update_raw_option( self::DEDICATED_SYNC_REQUEST_LOCK_OPTION_NAME, $current_microtime, false ); - // Give some time for the update to happen - usleep( wp_rand( 1000, 3000 ) ); - - $updated_value = \Jetpack_Options::get_raw_option( self::DEDICATED_SYNC_REQUEST_LOCK_OPTION_NAME, null ); - - if ( $updated_value === $current_microtime ) { - return $current_microtime; - } - - return false; - } - - /** - * Attempt to release the request lock. - * - * @param string $lock_id The request lock that's currently being held. - * - * @return bool|WP_Error - */ - public static function try_release_lock_spawn_request( $lock_id = '' ) { - // Try to get the lock_id from the current request if it's not supplied. - if ( empty( $lock_id ) ) { - $lock_id = self::get_request_lock_id_from_request(); - } - - // If it's still not a valid lock_id, throw an error and let the lock process figure it out. - if ( empty( $lock_id ) || ! is_numeric( $lock_id ) ) { - return new WP_Error( 'dedicated_request_lock_invalid', 'Invalid lock_id supplied for unlock' ); - } - - if ( wp_using_ext_object_cache() ) { - if ( (string) $lock_id === wp_cache_get( self::DEDICATED_SYNC_REQUEST_LOCK_OPTION_NAME, 'jetpack', true ) ) { - wp_cache_delete( self::DEDICATED_SYNC_REQUEST_LOCK_OPTION_NAME, 'jetpack' ); - } - } - - // If this is the flow that has the lock, let's release it so we can spawn other requests afterwards - $current_lock_value = \Jetpack_Options::get_raw_option( self::DEDICATED_SYNC_REQUEST_LOCK_OPTION_NAME, null ); - if ( (string) $lock_id === $current_lock_value ) { - \Jetpack_Options::delete_raw_option( self::DEDICATED_SYNC_REQUEST_LOCK_OPTION_NAME ); - return true; - } - - return false; - } - - /** - * Try to get the request lock id from the current request. - * - * @return array|string|string[]|null - */ - public static function get_request_lock_id_from_request() { - // phpcs:ignore WordPress.Security.NonceVerification.Recommended - if ( ! isset( $_GET[ self::DEDICATED_SYNC_REQUEST_LOCK_QUERY_PARAM_NAME ] ) || ! is_numeric( $_GET[ self::DEDICATED_SYNC_REQUEST_LOCK_QUERY_PARAM_NAME ] ) ) { - return null; - } - - // phpcs:ignore WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized - return wp_unslash( $_GET[ self::DEDICATED_SYNC_REQUEST_LOCK_QUERY_PARAM_NAME ] ); - } - - /** - * Test Sync spawning functionality by making a request to the - * Sync spawning endpoint and storing the result (status code) in a transient. - * - * @since 1.34.0 - * - * @return bool True if we got a successful response, false otherwise. - */ - public static function can_spawn_dedicated_sync_request() { - $dedicated_sync_check_transient = self::DEDICATED_SYNC_CHECK_TRANSIENT; - - $dedicated_sync_response_body = get_transient( $dedicated_sync_check_transient ); - - if ( false === $dedicated_sync_response_body ) { - $url = rest_url( 'jetpack/v4/sync/spawn-sync' ); - $url = add_query_arg( 'time', time(), $url ); // Enforce Cache busting. - $args = array( - 'cookies' => $_COOKIE, - 'timeout' => 30, - /** This filter is documented in wp-includes/class-wp-http-streams.php */ - 'sslverify' => apply_filters( 'https_local_ssl_verify', false ), - ); - - $response = wp_remote_get( $url, $args ); - $dedicated_sync_response_code = wp_remote_retrieve_response_code( $response ); - $dedicated_sync_response_body = trim( wp_remote_retrieve_body( $response ) ); - - /** - * Limit the size of the body that we save in the transient to avoid cases where an error - * occurs and a whole generated HTML page is returned. We don't need to store the whole thing. - * - * The regexp check is done to make sure we can detect the string even if the body returns some additional - * output, like some caching plugins do when they try to pad the request. - */ - $regexp = '!' . preg_quote( self::DEDICATED_SYNC_VALIDATION_STRING, '!' ) . '!uis'; - if ( preg_match( $regexp, $dedicated_sync_response_body ) ) { - $saved_response_body = self::DEDICATED_SYNC_VALIDATION_STRING; - } else { - $saved_response_body = time(); - } - - set_transient( $dedicated_sync_check_transient, $saved_response_body, HOUR_IN_SECONDS ); - - // Send a bit more information to WordPress.com to help debugging issues. - if ( $saved_response_body !== self::DEDICATED_SYNC_VALIDATION_STRING ) { - $data = array( - 'timestamp' => microtime( true ), - 'response_code' => $dedicated_sync_response_code, - 'response_body' => $dedicated_sync_response_body, - - // Send the flow type that was attempted. - 'sync_flow_type' => 'dedicated', - ); - - $sender = Sender::get_instance(); - - $sender->send_action( 'jetpack_sync_flow_error_enable', $data ); - } - } - return self::DEDICATED_SYNC_VALIDATION_STRING === $dedicated_sync_response_body; - } - - /** - * Disable dedicated sync and set a transient to prevent re-enabling it for some time. - * - * @return void - */ - public static function on_dedicated_sync_lag_not_sending_threshold_reached() { - set_transient( self::DEDICATED_SYNC_TEMPORARY_DISABLE_FLAG, true, 6 * HOUR_IN_SECONDS ); - - Settings::update_settings( - array( - 'dedicated_sync_enabled' => 0, - ) - ); - - // Inform that we had to temporarily disable Dedicated Sync - $data = array( - 'timestamp' => microtime( true ), - - // Send the flow type that was attempted. - 'sync_flow_type' => 'dedicated', - ); - - $sender = Sender::get_instance(); - - $sender->send_action( 'jetpack_sync_flow_error_temp_disable', $data ); - } - - /** - * Disable or enable Dedicated Sync sender based on the header value returned from WordPress.com - * - * @param string $dedicated_sync_header The Dedicated Sync header value - `on` or `off`. - * - * @return bool Whether Dedicated Sync is going to be enabled or not. - */ - public static function maybe_change_dedicated_sync_status_from_wpcom_header( $dedicated_sync_header ) { - $dedicated_sync_enabled = 'on' === $dedicated_sync_header ? 1 : 0; - - // Prevent enabling of Dedicated sync via header flag if we're in an autoheal timeout. - if ( $dedicated_sync_enabled ) { - $check_transient = get_transient( self::DEDICATED_SYNC_TEMPORARY_DISABLE_FLAG ); - - if ( $check_transient ) { - // Something happened and Dedicated Sync should not be automatically re-enabled. - return false; - } - } - - Settings::update_settings( - array( - 'dedicated_sync_enabled' => $dedicated_sync_enabled, - ) - ); - - return Settings::is_dedicated_sync_enabled(); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-default-filter-settings.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-default-filter-settings.php deleted file mode 100644 index 81946fe8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-default-filter-settings.php +++ /dev/null @@ -1,80 +0,0 @@ - 'default_options_whitelist', - 'jetpack_sync_options_contentless' => 'default_options_contentless', - 'jetpack_sync_constants_whitelist' => 'default_constants_whitelist', - 'jetpack_sync_callable_whitelist' => 'default_callable_whitelist', - 'jetpack_sync_multisite_callable_whitelist' => 'default_multisite_callable_whitelist', - 'jetpack_sync_post_meta_whitelist' => 'post_meta_whitelist', - 'jetpack_sync_comment_meta_whitelist' => 'comment_meta_whitelist', - 'jetpack_sync_capabilities_whitelist' => 'default_capabilities_whitelist', - 'jetpack_sync_known_importers' => 'default_known_importers', - ); - - /** - * The data associated with these filters are stored as associative arrays. - * (All other filters store data as indexed arrays.) - */ - const ASSOCIATIVE_FILTERS = array( - 'jetpack_sync_callable_whitelist', - 'jetpack_sync_multisite_callable_whitelist', - 'jetpack_sync_known_importers', - ); - - /** - * Returns the default data settings list for the provided filter. - * - * @param string $filter The filter name. - * - * @return array|false The default list of data settings. Returns false if the provided - * filter doesn't not have an array of default settings. - */ - public function get_default_settings( $filter ) { - if ( ! is_string( $filter ) || ! array_key_exists( $filter, self::DATA_FILTER_DEFAULTS ) ) { - return false; - } - - $property = self::DATA_FILTER_DEFAULTS[ $filter ]; - $class = self::DEFAULT_FILTER_CLASS; - return $class::$$property; - } - - /** - * Returns an array containing the default values for all of the filters shown - * in DATA_FILTER_DEFAULTS. - * - * @return array The array containing all sync data filters and their default values. - */ - public function get_all_filters_default_settings() { - $defaults = array(); - - foreach ( self::DATA_FILTER_DEFAULTS as $filter => $default_location ) { - $defaults[ $filter ] = $this->get_default_settings( $filter ); - } - return $defaults; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-defaults.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-defaults.php deleted file mode 100644 index 0010bb58..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-defaults.php +++ /dev/null @@ -1,1377 +0,0 @@ - array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_loaded_extensions' ), - 'get_plugins' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_plugins' ), - 'get_themes' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_themes' ), - 'get_plugins_action_links' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_plugins_action_links' ), - 'has_file_system_write_access' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'file_system_write_access' ), - 'home_url' => array( 'Automattic\\Jetpack\\Connection\\Urls', 'home_url' ), - 'hosting_provider' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_hosting_provider' ), - 'is_fse_theme' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_is_fse_theme' ), - 'is_main_network' => array( __CLASS__, 'is_multi_network' ), - 'is_multi_site' => 'is_multisite', - 'is_version_controlled' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'is_version_controlled' ), - 'locale' => 'get_locale', - 'main_network_site' => array( 'Automattic\\Jetpack\\Connection\\Urls', 'main_network_site_url' ), - 'main_network_site_wpcom_id' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'main_network_site_wpcom_id' ), - 'paused_plugins' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_paused_plugins' ), - 'paused_themes' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_paused_themes' ), - 'post_type_features' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_post_type_features' ), - 'post_types' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_post_types' ), - 'rest_api_allowed_post_types' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'rest_api_allowed_post_types' ), - 'rest_api_allowed_public_metadata' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'rest_api_allowed_public_metadata' ), - 'roles' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'roles' ), - 'shortcodes' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_shortcodes' ), - 'site_icon_url' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'site_icon_url' ), - 'site_url' => array( 'Automattic\\Jetpack\\Connection\\Urls', 'site_url' ), - 'taxonomies' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_taxonomies' ), - 'theme_support' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_theme_support' ), - 'timezone' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_timezone' ), - 'wp_get_environment_type' => 'wp_get_environment_type', - 'wp_max_upload_size' => 'wp_max_upload_size', - 'wp_version' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'wp_version' ), - 'active_modules' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_active_modules' ), - 'jetpack_connection_active_plugins' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_jetpack_connection_active_plugins' ), - 'jetpack_sync_active_modules' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_jetpack_sync_active_modules' ), - ); - - /** - * Array of post type attributes synced. - * - * @var array Default post type attributes. - */ - public static $default_post_type_attributes = array( - '_builtin' => false, - '_edit_link' => 'post.php?post=%d', - 'can_export' => true, - 'cap' => array(), - 'capabilities' => array(), - 'capability_type' => 'post', - 'delete_with_user' => null, - 'description' => '', - 'exclude_from_search' => true, - 'has_archive' => false, - 'hierarchical' => false, - 'label' => '', - 'labels' => array(), - 'map_meta_cap' => true, - 'menu_icon' => null, - 'menu_position' => null, - 'name' => '', - 'public' => false, - 'publicly_queryable' => null, - 'query_var' => true, - 'rest_base' => false, - 'rewrite' => true, - 'show_in_admin_bar' => false, - 'show_in_menu' => null, - 'show_in_nav_menus' => null, - 'show_in_rest' => false, - 'show_ui' => false, - 'supports' => array(), - 'taxonomies' => array(), - ); - - /** - * Get the whitelist of callables allowed to be managed via the JSON API. - * - * @return array Whitelist of callables allowed to be managed via the JSON API. - */ - public static function get_callable_whitelist() { - /** - * Filter the list of callables that are manageable via the JSON API. - * - * @module sync - * - * @since 1.6.3 - * @since-jetpack 4.8.0 - * - * @param array The default list of callables. - */ - return apply_filters( 'jetpack_sync_callable_whitelist', self::$default_callable_whitelist ); - } - - /** - * Post types that will not be synced. - * - * These are usually automated post types (sitemaps, logs, etc). - * - * @var array Blacklisted post types. - */ - public static $blacklisted_post_types = array( - '_term_meta', - 'ai1ec_event', - 'ai_log', // Logger - https://github.com/alleyinteractive/logger. - 'amp_validated_url', // AMP Validation Errors. - 'bwg_album', - 'bwg_gallery', - 'customize_changeset', // WP built-in post type for Customizer changesets. - 'dn_wp_yt_log', - 'flamingo_contact', // https://wordpress.org/plugins/flamingo/. - 'flamingo_inbound', - 'flamingo_outbound', - 'http', - 'idx_page', - 'jetpack_inspect_log', // Jetpack Inspect dev tool. p1HpG7-nkd-p2 - 'jetpack_migration', - 'jp_img_sitemap', - 'jp_img_sitemap_index', - 'jp_sitemap', - 'jp_sitemap_index', - 'jp_sitemap_master', - 'jp_vid_sitemap', - 'jp_vid_sitemap_index', - 'msm_sitemap', // Metro Sitemap Plugin. - 'postman_sent_mail', - 'rssap-feed', - 'rssmi_feed_item', - 'scheduled-action', // Action Scheduler - Job Queue for WordPress https://github.com/woocommerce/woocommerce/tree/e7762627c37ec1f7590e6cac4218ba0c6a20024d/includes/libraries/action-scheduler . - 'secupress_log_action', - 'sg_optimizer_jobs', - 'sl-insta-media', - 'snitch', - 'vip-legacy-redirect', - 'wp-rest-api-log', // https://wordpress.org/plugins/wp-rest-api-log/. - 'wp_automatic', - 'wp_log', // WP Logging Plugin. - 'wpephpcompat_jobs', - 'wprss_feed_item', - 'tribe-ea-record', // The Events Calendar Plugin - Store Event Aggregator record information. - 'wphb_minify_group', // Hummingbird Plugin - Used internally to keep data about assets minification. - 'bigcommerce_task', // BigCommerce Plugin - Store import queue. - 'secupress_log_err404', // SecuPress Plugin - Log 404 pages - 'iw_omnibus_price_log', // Omnibus Plugin - Log price changes. - 'od_url_metrics', // Optimization Detective - Log URL metrics. - ); - - /** - * Taxonomies that we're not syncing by default. - * - * The list is compiled by auditing the dynamic filters and actions that contain taxonomy slugs - * and could conflict with other existing filters/actions in WP core, Jetpack and WooCommerce. - * - * @var array - */ - public static $blacklisted_taxonomies = array( - 'ancestors', - 'archives_link', - 'attached_file', - 'attached_media', - 'attached_media_args', - 'attachment', - 'available_languages', - 'avatar', - 'avatar_comment_types', - 'avatar_data', - 'avatar_url', - 'bloginfo_rss', - 'blogs_of_user', - 'bookmark_link', - 'bookmarks', - 'calendar', - 'canonical_url', - 'categories_per_page', - 'categories_taxonomy', - 'category_form', - 'category_form_fields', - 'category_form_pre', - 'comment', - 'comment_ID', - 'comment_author', - 'comment_author_IP', - 'comment_author_email', - 'comment_author_link', - 'comment_author_url', - 'comment_author_url_link', - 'comment_date', - 'comment_excerpt', - 'comment_link', - 'comment_misc_actions', - 'comment_text', - 'comment_time', - 'comment_type', - 'comments_link', - 'comments_number', - 'comments_pagenum_link', - 'custom_logo', - 'date_sql', - 'default_comment_status', - 'delete_post_link', - 'edit_bookmark_link', - 'edit_comment_link', - 'edit_post_link', - 'edit_tag_link', - 'edit_term_link', - 'edit_user_link', - 'enclosed', - 'feed_build_date', - 'form_advanced', - 'form_after_editor', - 'form_after_title', - 'form_before_permalink', - 'form_top', - 'handle_product_cat', - 'header_image_tag', - 'header_video_url', - 'image_tag', - 'image_tag_class', - 'lastpostdate', - 'lastpostmodified', - 'link', - 'link_category_form', - 'link_category_form_fields', - 'link_category_form_pre', - 'main_network_id', - 'media', - 'media_item_args', - 'ms_user', - 'network', - 'object_terms', - 'option', - 'page', - 'page_form', - 'page_of_comment', - 'page_uri', - 'pagenum_link', - 'pages', - 'plugin', - 'post', - 'post_galleries', - 'post_gallery', - 'post_link', - 'post_modified_time', - 'post_status', - 'post_time', - 'postmeta', - 'posts_per_page', - 'product_search_form', - 'profile_url', - 'pung', - 'role_list', - 'sample_permalink', - 'sample_permalink_html', - 'schedule', - 'search_form', - 'search_query', - 'shortlink', - 'site', - 'site_email_content', - 'site_icon_url', - 'site_option', - 'space_allowed', - 'tag', - 'tag_form', - 'tag_form_fields', - 'tag_form_pre', - 'tag_link', - 'tags', - 'tags_per_page', - 'term', - 'term_link', - 'term_relationships', - 'term_taxonomies', - 'term_taxonomy', - 'terms', - 'terms_args', - 'terms_defaults', - 'terms_fields', - 'terms_orderby', - 'the_archive_description', - 'the_archive_title', - 'the_categories', - 'the_date', - 'the_excerpt', - 'the_guid', - 'the_modified_date', - 'the_modified_time', - 'the_post_type_description', - 'the_tags', - 'the_terms', - 'the_time', - 'theme_starter_content', - 'to_ping', - 'user', - 'user_created_user', - 'user_form', - 'user_profile', - 'user_profile_update', - 'usermeta', - 'usernumposts', - 'users_drafts', - 'webhook', - 'widget', - 'woocommerce_archive', - 'wp_title_rss', - ); - - /** - * Default array of post table columns. - * - * @var array Post table columns. - */ - public static $default_post_checksum_columns = array( - 'ID', - 'post_modified', - ); - - /** - * Default array of post meta table columns. - * - * @var array Post meta table columns. - */ - public static $default_post_meta_checksum_columns = array( - 'meta_id', - 'meta_value', - ); - - /** - * Default array of comment table columns. - * - * @var array Default comment table columns. - */ - public static $default_comment_checksum_columns = array( - 'comment_ID', - 'comment_content', - ); - - /** - * Default array of comment meta columns. - * - * @var array Comment meta table columns. - */ - public static $default_comment_meta_checksum_columns = array( - 'meta_id', - 'meta_value', - ); - - /** - * Default array of option table columns. - * - * @var array Default array of option columns. - */ - public static $default_option_checksum_columns = array( - 'option_name', - 'option_value', - ); - - /** - * Default array of term columns. - * - * @var array array of term columns. - */ - public static $default_term_checksum_columns = array( - 'name', - 'slug', - 'term_id', - ); - - /** - * Default array of term taxonomy columns. - * - * @var array Array of term taxonomy columns. - */ - public static $default_term_taxonomy_checksum_columns = array( - 'count', - 'parent', - 'taxonomy', - 'term_id', - 'term_taxonomy_id', - ); - - /** - * Default term relationship columns. - * - * @var array Array of term relationship columns. - */ - public static $default_term_relationships_checksum_columns = array( - 'object_id', - 'term_order', - 'term_taxonomy_id', - ); - - /** - * Default multisite callables able to be managed via JSON API. - * - * @var array multsite callables whitelisted - */ - public static $default_multisite_callable_whitelist = array(); - - /** - * Get array of multisite callables whitelisted. - * - * @return array Multisite callables managable via JSON API. - */ - public static function get_multisite_callable_whitelist() { - /** - * Filter the list of multisite callables that are manageable via the JSON API. - * - * @module sync - * - * @since 1.6.3 - * @since-jetpack 4.8.0 - * - * @param array The default list of multisite callables. - */ - return apply_filters( 'jetpack_sync_multisite_callable_whitelist', self::$default_multisite_callable_whitelist ); - } - - /** - * Array of post meta keys whitelisted. - * - * @var array Post meta whitelist. - */ - public static $post_meta_whitelist = array( - '_feedback_akismet_values', - '_feedback_email', - '_feedback_extra_fields', - '_g_feedback_shortcode', - '_jetpack_post_thumbnail', - '_last_editor_used_jetpack', - '_menu_item_classes', - '_menu_item_menu_item_parent', - '_menu_item_object', - '_menu_item_object_id', - '_menu_item_orphaned', - '_menu_item_type', - '_menu_item_xfn', - '_publicize_facebook_user', - '_publicize_twitter_user', - '_thumbnail_id', - '_wp_attached_file', - '_wp_attachment_backup_sizes', - '_wp_attachment_context', - '_wp_attachment_image_alt', - '_wp_attachment_is_custom_background', - '_wp_attachment_is_custom_header', - '_wp_attachment_metadata', - '_wp_old_date', - '_wp_page_template', - '_wp_trash_meta_comments_status', - '_wpas_feature_enabled', - '_wpas_mess', - '_wpas_options', - 'advanced_seo_description', // Jetpack_SEO_Posts::DESCRIPTION_META_KEY. - 'content_width', - 'custom_css_add', - 'custom_css_preprocessor', - 'enclosure', - 'imagedata', - 'nova_price', - 'publicize_results', - 'sharing_disabled', - 'switch_like_status', - 'videopress_guid', - 'vimeo_poster_image', - '_jetpack_blogging_prompt_key', - 'footnotes', // Core footnotes block - ); - - /** - * Get the post meta key whitelist. - * - * @return array Post meta whitelist. - */ - public static function get_post_meta_whitelist() { - /** - * Filter the list of post meta data that are manageable via the JSON API. - * - * @module sync - * - * @since 1.6.3 - * @since-jetpack 4.8.0 - * - * @param array The default list of meta data keys. - */ - return apply_filters( 'jetpack_sync_post_meta_whitelist', self::$post_meta_whitelist ); - } - - /** - * Comment meta whitelist. - * - * @var array Comment meta whitelist. - */ - public static $comment_meta_whitelist = array( - 'hc_avatar', - 'hc_foreign_user_id', - 'hc_post_as', - 'hc_wpcom_id_sig', - ); - - /** - * Get the comment meta whitelist. - * - * @return array - */ - public static function get_comment_meta_whitelist() { - /** - * Filter the list of comment meta data that are manageable via the JSON API. - * - * @module sync - * - * @since 1.6.3 - * @since-jetpack 5.7.0 - * - * @param array The default list of comment meta data keys. - */ - return apply_filters( 'jetpack_sync_comment_meta_whitelist', self::$comment_meta_whitelist ); - } - - /** - * Default theme support whitelist. - * - * @todo move this to server? - these are theme support values - * that should be synced as jetpack_current_theme_supports_foo option values - * - * @var array Default theme support whitelist. - */ - public static $default_theme_support_whitelist = array( - 'align-wide', - 'appearance-tools', // In Gutenberg. - 'automatic-feed-links', - 'block-templates', - 'block-template-parts', // WP 6.1. Added via https://core.trac.wordpress.org/changeset/54176 - 'custom-background', - 'custom-header', - 'custom-logo', - 'customize-selective-refresh-widgets', - 'dark-editor-style', - 'default-color-palette', // In Gutenberg. - 'default-gradient-presets', // In Gutenberg. - 'disable-custom-colors', - 'disable-custom-font-sizes', - 'disable-custom-gradients', - 'disable-layout-styles', // WP 6.1. Added via https://core.trac.wordpress.org/changeset/54159 - 'editor-color-palette', - 'editor-font-sizes', - 'editor-gradient-presets', - 'editor-spacing-sizes', - 'editor-style', // deprecated. - 'editor-styles', - 'html5', - 'infinite-scroll', - 'jetpack-responsive-videos', - 'jetpack-social-menu', - 'menus', - 'post-formats', - 'post-thumbnails', - 'responsive-embeds', - 'site-logo', - 'title-tag', - 'widgets', - 'wp-block-styles', - ); - - /** - * Is an option whitelisted? - * - * @param string $option Option name. - * @return bool If option is on the whitelist. - */ - public static function is_whitelisted_option( $option ) { - $whitelisted_options = self::get_options_whitelist(); - foreach ( $whitelisted_options as $whitelisted_option ) { - if ( '/' === $whitelisted_option[0] && preg_match( $whitelisted_option, $option ) ) { - return true; - } elseif ( $whitelisted_option === $option ) { - return true; - } - } - - return false; - } - - /** - * Default whitelist of capabilities to sync. - * - * @var array Array of WordPress capabilities. - */ - public static $default_capabilities_whitelist = array( - 'activate_plugins', - 'add_users', - 'create_users', - 'customize', - 'delete_others_pages', - 'delete_others_posts', - 'delete_pages', - 'delete_plugins', - 'delete_posts', - 'delete_private_pages', - 'delete_private_posts', - 'delete_published_pages', - 'delete_published_posts', - 'delete_site', - 'delete_themes', - 'delete_users', - 'edit_dashboard', - 'edit_files', - 'edit_others_pages', - 'edit_others_posts', - 'edit_pages', - 'edit_plugins', - 'edit_posts', - 'edit_private_pages', - 'edit_private_posts', - 'edit_published_pages', - 'edit_published_posts', - 'edit_theme_options', - 'edit_themes', - 'edit_users', - 'export', - 'import', - 'install_plugins', - 'install_themes', - 'list_users', - 'manage_categories', - 'manage_links', - 'manage_options', - 'moderate_comments', - 'promote_users', - 'publish_pages', - 'publish_posts', - 'read', - 'read_private_pages', - 'read_private_posts', - 'remove_users', - 'switch_themes', - 'unfiltered_html', - 'unfiltered_upload', - 'update_core', - 'update_plugins', - 'update_themes', - 'upload_files', - 'upload_plugins', - 'upload_themes', - ); - - /** - * Get default capabilities whitelist. - * - * @return array - */ - public static function get_capabilities_whitelist() { - /** - * Filter the list of capabilities that we care about - * - * @module sync - * - * @since 1.6.3 - * @since-jetpack 5.5.0 - * - * @param array The default list of capabilities. - */ - return apply_filters( 'jetpack_sync_capabilities_whitelist', self::$default_capabilities_whitelist ); - } - - /** - * Get max execution sync time. - * - * @return float Number of seconds. - */ - public static function get_max_sync_execution_time() { - $max_exec_time = (int) ini_get( 'max_execution_time' ); - if ( 0 === $max_exec_time ) { - // 0 actually means "unlimited", but let's not treat it that way. - $max_exec_time = 60; - } - return floor( $max_exec_time / 3 ); - } - - /** - * Get default for a given setting. - * - * @param string $setting Setting to get. - * @return mixed Value will be a string, int, array, based on the particular setting requested. - */ - public static function get_default_setting( $setting ) { - $default_name = "default_$setting"; // e.g. default_dequeue_max_bytes. - return self::$$default_name; - } - - /** - * Default list of network options. - * - * @var array network options - */ - public static $default_network_options_whitelist = array( - 'active_sitewide_plugins', - 'auto_update_plugins', // WordPress 5.5+ auto-updates. - 'jetpack_protect_global_whitelist', - 'jetpack_protect_key', - 'site_name', - ); - - /** - * A mapping of known importers to friendly names. - * - * Keys are the class name of the known importer. - * Values are the friendly name. - * - * @since 1.6.3 - * @since-jetpack 7.3.0 - * - * @var array - */ - public static $default_known_importers = array( - 'Blogger_Importer' => 'blogger', - 'LJ_API_Import' => 'livejournal', - 'MT_Import' => 'mt', - 'RSS_Import' => 'rss', - 'WC_Tax_Rate_Importer' => 'woo-tax-rate', - 'WP_Import' => 'wordpress', - ); - - /** - * Returns a list of known importers. - * - * @since 1.6.3 - * @since-jetpack 7.3.0 - * - * @return array Known importers with importer class names as keys and friendly names as values. - */ - public static function get_known_importers() { - /** - * Filter the list of known importers. - * - * @module sync - * - * @since 1.6.3 - * @since-jetpack 7.3.0 - * - * @param array The default list of known importers. - */ - return apply_filters( 'jetpack_sync_known_importers', self::$default_known_importers ); - } - - /** - * Whether this is a system with a multiple networks. - * We currently need this static wrapper because we statically define our default list of callables. - * - * @since 1.6.3 - * @since-jetpack 7.6.0 - * - * @uses Automattic\Jetpack\Status::is_multi_network - * - * @return boolean - */ - public static function is_multi_network() { - $status = new Status(); - return $status->is_multi_network(); - } - - /** - * Default bytes to dequeue. - * - * @var int Bytes. - */ - public static $default_dequeue_max_bytes = 500000; // very conservative value, 1/2 MB. - - /** - * Default upload bytes. - * - * This value is a little bigger than the upload limit to account for serialization. - * - * @var int Bytes. - */ - public static $default_upload_max_bytes = 600000; - - /** - * Default number of rows uploaded. - * - * @var int Number of rows. - */ - public static $default_upload_max_rows = 500; - - /** - * Default sync wait time. - * - * @var int Number of seconds. - */ - public static $default_sync_wait_time = 10; // seconds, between syncs. - - /** - * Only wait before next send if the current send took more than this number of seconds. - * - * @var int Number of seconds. - */ - public static $default_sync_wait_threshold = 10; - - /** - * Default wait between attempting to continue a full sync via requests. - * - * @var int Number of seconds. - */ - public static $default_enqueue_wait_time = 1; - - /** - * Maximum queue size. - * - * Each item is represented with a new row in the wp_options table. - * - * @var int Number of queue items. - */ - public static $default_max_queue_size = 5000; - - /** - * Default maximum lag allowed in the queue. - * - * @var int Number of seconds - */ - public static $default_max_queue_lag = 7200; // 2 hours. - - /** - * Default for default writes per sec. - * - * @var int Rows per second. - */ - public static $default_queue_max_writes_sec = 100; // 100 rows a second. - - /** - * Default for post types blacklist. - * - * @var array Empty array. - */ - public static $default_post_types_blacklist = array(); - - /** - * Default for taxonomies blacklist. - * - * @var array Empty array. - */ - public static $default_taxonomies_blacklist = array(); - - /** - * Default for taxonomies whitelist. - * - * @var array Empty array. - */ - public static $default_taxonomy_whitelist = array(); - - /** - * Default for post meta whitelist. - * - * @var array Empty array. - */ - public static $default_post_meta_whitelist = array(); - - /** - * Default for comment meta whitelist. - * - * @var array Empty array. - */ - public static $default_comment_meta_whitelist = array(); - - /** - * Default for disabling sync across the site. - * - * @var int Bool-ish. Default to 0. - */ - public static $default_disable = 0; // completely disable sending data to wpcom. - - /** - * Default for disabling sync across the entire network on multisite. - * - * @var int Bool-ish. Default 0. - */ - public static $default_network_disable = 0; - - /** - * Default for disabling checksums. - * - * @var int Bool-ish. Default 0. - */ - public static $default_checksum_disable = 0; - - /** - * Should Sync use cron? - * - * @var int Bool-ish value. Default 1. - */ - public static $default_sync_via_cron = 1; - - /** - * Default if Sync should render content. - * - * @var int Bool-ish value. Default is 0. - */ - public static $default_render_filtered_content = 0; - - /** - * Default number of items to enqueue at a time when running full sync. - * - * @var int Number of items. - */ - public static $default_max_enqueue_full_sync = 100; - - /** - * Default for maximum queue size during a full sync. - * - * Each item will represent a value in the wp_options table. - * - * @var int Number of items. - */ - public static $default_max_queue_size_full_sync = 1000; // max number of total items in the full sync queue. - - /** - * Default max time for sending in immediate mode. - * - * @var float Number of Seconds - */ - public static $default_full_sync_send_duration = 9; - - /** - * Defaul for time between syncing callables. - * - * @var int Number of seconds. - */ - public static $default_sync_callables_wait_time = MINUTE_IN_SECONDS; // seconds before sending callables again. - - /** - * Default for time between syncing constants. - * - * @var int Number of seconds. - */ - public static $default_sync_constants_wait_time = HOUR_IN_SECONDS; // seconds before sending constants again. - /** - * Default for sync queue lock timeout time. - * - * @var int Number of seconds. - */ - public static $default_sync_queue_lock_timeout = 120; // 2 minutes. - - /** - * Default for cron sync time limit. - * - * @var int Number of seconds. - */ - public static $default_cron_sync_time_limit = 4 * MINUTE_IN_SECONDS; - - /** - * Default for number of term relationship items sent in an full sync item. - * - * @var int Number of items. - */ - public static $default_term_relationships_full_sync_item_size = 100; - - /** - * Default for enabling incremental sync. - * - * @var int 1 for true. - */ - public static $default_sync_sender_enabled = 1; // Should send incremental sync items. - - /** - * Default for enabling Full Sync. - * - * @var int 1 for true. - */ - public static $default_full_sync_sender_enabled = 1; // Should send full sync items. - - /** - * Default Full Sync config - * - * @var array list of module names. - */ - public static $default_full_sync_config = array( - 'constants' => 1, - 'functions' => 1, - 'options' => 1, - 'terms' => 1, - 'themes' => 1, - 'users' => 1, - 'posts' => 1, - 'comments' => 1, - 'updates' => 1, - 'term_relationships' => 1, - ); - - /** - * Default Full Sync limits for one module. - * - * @var array list of limits. - */ - public static $default_full_sync_limits_per_module = array( - 'chunk_size' => 100, - 'max_chunks' => 10, - ); - /** - * Default Full Sync max objects to send on a single request. - * - * @var array list of module => max. - */ - public static $default_full_sync_limits = array( - 'comments' => array( - 'chunk_size' => 100, - 'max_chunks' => 10, - ), - 'posts' => array( - 'chunk_size' => 100, - 'max_chunks' => 1, - ), - 'term_relationships' => array( - 'chunk_size' => 1000, - 'max_chunks' => 10, - ), - 'terms' => array( - 'chunk_size' => 1000, - 'max_chunks' => 10, - ), - 'users' => array( - 'chunk_size' => 100, - 'max_chunks' => 10, - ), - 'woocommerce' => array( - 'chunk_size' => 100, - 'max_chunks' => 10, - ), - 'woocommerce_hpos_orders' => array( - 'chunk_size' => 100, - 'max_chunks' => 10, - ), - ); - - /** - * Default for enabling dedicated Sync flow. - * - * @var int Bool-ish. Default 0. - */ - public static $default_dedicated_sync_enabled = 0; - - /** - * Default for enabling custom queue table for Sync. - * - * @var int Bool-ish. Default 0. - */ - public static $default_custom_queue_table_enabled = 0; - - /** - * Default for enabling wpcom rest api for Sync. - * - * @var int Bool-ish. Default 0. - */ - public static $default_wpcom_rest_api_enabled = 0; -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-functions.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-functions.php deleted file mode 100644 index d6435a97..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-functions.php +++ /dev/null @@ -1,740 +0,0 @@ -get_modules(); - } - - return array(); - } - - /** - * Return array of taxonomies registered on the site. - * - * @return array - */ - public static function get_taxonomies() { - global $wp_taxonomies; - $wp_taxonomies_without_callbacks = array(); - foreach ( $wp_taxonomies as $taxonomy_name => $taxonomy ) { - $sanitized_taxonomy = self::sanitize_taxonomy( $taxonomy ); - if ( ! empty( $sanitized_taxonomy ) ) { - $wp_taxonomies_without_callbacks[ $taxonomy_name ] = $sanitized_taxonomy; - } - } - return $wp_taxonomies_without_callbacks; - } - - /** - * Return array of registered shortcodes. - * - * @return array - */ - public static function get_shortcodes() { - global $shortcode_tags; - return array_keys( $shortcode_tags ); - } - - /** - * Removes any callback data since we will not be able to process it on our side anyways. - * - * @param \WP_Taxonomy $taxonomy \WP_Taxonomy item. - * - * @return mixed|null - */ - public static function sanitize_taxonomy( $taxonomy ) { - - // Lets clone the taxonomy object instead of modifing the global one. - $cloned_taxonomy = json_decode( wp_json_encode( $taxonomy ) ); - - // recursive taxonomies are no fun. - if ( $cloned_taxonomy === null ) { - return null; - } - // Remove any meta_box_cb if they are not the default wp ones. - if ( isset( $cloned_taxonomy->meta_box_cb ) && - ! in_array( $cloned_taxonomy->meta_box_cb, array( 'post_tags_meta_box', 'post_categories_meta_box' ), true ) ) { - $cloned_taxonomy->meta_box_cb = null; - } - // Remove update call back. - if ( isset( $cloned_taxonomy->update_count_callback ) && - $cloned_taxonomy->update_count_callback !== null ) { - $cloned_taxonomy->update_count_callback = null; - } - // Remove rest_controller_class if it something other then the default. - if ( isset( $cloned_taxonomy->rest_controller_class ) && - 'WP_REST_Terms_Controller' !== $cloned_taxonomy->rest_controller_class ) { - $cloned_taxonomy->rest_controller_class = null; - } - return $cloned_taxonomy; - } - - /** - * Return array of registered post types. - * - * @return array - */ - public static function get_post_types() { - global $wp_post_types; - - $post_types_without_callbacks = array(); - foreach ( $wp_post_types as $post_type_name => $post_type ) { - $sanitized_post_type = self::sanitize_post_type( $post_type ); - if ( ! empty( $sanitized_post_type ) ) { - $post_types_without_callbacks[ $post_type_name ] = $sanitized_post_type; - } - } - return $post_types_without_callbacks; - } - - /** - * Sanitizes by cloning post type object. - * - * @param object $post_type \WP_Post_Type. - * - * @return object - */ - public static function sanitize_post_type( $post_type ) { - // Lets clone the post type object instead of modifing the global one. - $sanitized_post_type = array(); - foreach ( Defaults::$default_post_type_attributes as $attribute_key => $default_value ) { - if ( isset( $post_type->{ $attribute_key } ) ) { - $sanitized_post_type[ $attribute_key ] = $post_type->{ $attribute_key }; - } - } - return (object) $sanitized_post_type; - } - - /** - * Return information about a synced post type. - * - * @param array $sanitized_post_type Array of args used in constructing \WP_Post_Type. - * @param string $post_type Post type name. - * - * @return object \WP_Post_Type - */ - public static function expand_synced_post_type( $sanitized_post_type, $post_type ) { - $post_type = sanitize_key( $post_type ); - $post_type_object = new \WP_Post_Type( $post_type, $sanitized_post_type ); - $post_type_object->add_supports(); - $post_type_object->add_rewrite_rules(); - $post_type_object->add_hooks(); - $post_type_object->register_taxonomies(); - return (object) $post_type_object; - } - - /** - * Returns site's post_type_features. - * - * @return array - */ - public static function get_post_type_features() { - global $_wp_post_type_features; - - return $_wp_post_type_features; - } - - /** - * Return hosting provider. - * - * Uses a set of known constants, classes, or functions to help determine the hosting platform. - * - * @return string Hosting provider. - */ - public static function get_hosting_provider() { - $hosting_provider_detection_methods = array( - 'get_hosting_provider_by_known_constant', - 'get_hosting_provider_by_known_class', - 'get_hosting_provider_by_known_function', - ); - - $functions = new Functions(); - foreach ( $hosting_provider_detection_methods as $method ) { - $hosting_provider = call_user_func( array( $functions, $method ) ); - if ( false !== $hosting_provider ) { - return $hosting_provider; - } - } - - return 'unknown'; - } - - /** - * Return a hosting provider using a set of known constants. - * - * @return mixed A host identifier string or false. - */ - public function get_hosting_provider_by_known_constant() { - $hosting_provider_constants = array( - 'GD_SYSTEM_PLUGIN_DIR' => 'gd-managed-wp', - 'MM_BASE_DIR' => 'bh', - 'PAGELYBIN' => 'pagely', - 'KINSTAMU_VERSION' => 'kinsta', - 'FLYWHEEL_CONFIG_DIR' => 'flywheel', - 'IS_PRESSABLE' => 'pressable', - 'VIP_GO_ENV' => 'vip-go', - ); - - foreach ( $hosting_provider_constants as $constant => $constant_value ) { - if ( Constants::is_defined( $constant ) ) { - if ( 'VIP_GO_ENV' === $constant && false === Constants::get_constant( 'VIP_GO_ENV' ) ) { - continue; - } - return $constant_value; - } - } - - return false; - } - - /** - * Return a hosting provider using a set of known classes. - * - * @return mixed A host identifier string or false. - */ - public function get_hosting_provider_by_known_class() { - $hosting_provider = false; - - switch ( true ) { - case ( class_exists( '\\WPaaS\\Plugin' ) ): - $hosting_provider = 'gd-managed-wp'; - break; - } - - return $hosting_provider; - } - - /** - * Return a hosting provider using a set of known functions. - * - * @return mixed A host identifier string or false. - */ - public function get_hosting_provider_by_known_function() { - $hosting_provider = false; - - switch ( true ) { - case ( function_exists( 'is_wpe' ) || function_exists( 'is_wpe_snapshot' ) ): - $hosting_provider = 'wpe'; - break; - } - - return $hosting_provider; - } - - /** - * Return array of allowed REST API post types. - * - * @return array Array of allowed post types. - */ - public static function rest_api_allowed_post_types() { - /** This filter is already documented in class.json-api-endpoints.php */ - return apply_filters( 'rest_api_allowed_post_types', array( 'post', 'page', 'revision' ) ); - } - - /** - * Return array of allowed REST API public metadata. - * - * @return array Array of allowed metadata. - */ - public static function rest_api_allowed_public_metadata() { - /** - * Filters the meta keys accessible by the REST API. - * - * @see https://developer.wordpress.com/2013/04/26/custom-post-type-and-metadata-support-in-the-rest-api/ - * - * @module json-api - * - * @since 1.6.3 - * @since-jetpack 2.2.3 - * - * @param array $whitelisted_meta Array of metadata that is accessible by the REST API. - */ - return apply_filters( 'rest_api_allowed_public_metadata', array() ); - } - - /** - * Finds out if a site is using a version control system. - * - * @return bool - **/ - public static function is_version_controlled() { - - if ( ! class_exists( 'WP_Automatic_Updater' ) ) { - require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; - } - $updater = new \WP_Automatic_Updater(); - - return (bool) (string) $updater->is_vcs_checkout( ABSPATH ); - } - - /** - * Returns true if the site has file write access false otherwise. - * - * @return bool - **/ - public static function file_system_write_access() { - if ( ! function_exists( 'get_filesystem_method' ) ) { - require_once ABSPATH . 'wp-admin/includes/file.php'; - } - - require_once ABSPATH . 'wp-admin/includes/template.php'; - - $filesystem_method = get_filesystem_method(); - if ( 'direct' === $filesystem_method ) { - return true; - } - - ob_start(); - - if ( ! function_exists( 'request_filesystem_credentials' ) ) { - require_once ABSPATH . 'wp-admin/includes/file.php'; - } - - $filesystem_credentials_are_stored = request_filesystem_credentials( self_admin_url() ); - ob_end_clean(); - if ( $filesystem_credentials_are_stored ) { - return true; - } - - return false; - } - - /** - * Helper function that is used when getting home or siteurl values. Decides - * whether to get the raw or filtered value. - * - * @deprecated 1.23.1 - * - * @param string $url_type URL to get, home or siteurl. - * @return string - */ - public static function get_raw_or_filtered_url( $url_type ) { - _deprecated_function( __METHOD__, '1.23.1', '\\Automattic\\Jetpack\\Connection\\Urls::get_raw_or_filtered_url' ); - return Urls::get_raw_or_filtered_url( $url_type ); - } - - /** - * Return the escaped home_url. - * - * @deprecated 1.23.1 - * - * @return string - */ - public static function home_url() { - _deprecated_function( __METHOD__, '1.23.1', '\\Automattic\\Jetpack\\Connection\\Urls::home_url' ); - return Urls::home_url(); - } - - /** - * Return the escaped siteurl. - * - * @deprecated 1.23.1 - * - * @return string - */ - public static function site_url() { - _deprecated_function( __METHOD__, '1.23.1', '\\Automattic\\Jetpack\\Connection\\Urls::site_url' ); - return Urls::site_url(); - } - - /** - * Return main site URL with a normalized protocol. - * - * @deprecated 1.23.1 - * - * @return string - */ - public static function main_network_site_url() { - _deprecated_function( __METHOD__, '1.23.1', '\\Automattic\\Jetpack\\Connection\\Urls::main_network_site_url' ); - return Urls::main_network_site_url(); - } - - /** - * Return main site WordPress.com site ID. - * - * @return string - */ - public static function main_network_site_wpcom_id() { - /** - * Return the current site WPCOM ID for single site installs - */ - if ( ! is_multisite() ) { - return \Jetpack_Options::get_option( 'id' ); - } - - /** - * Return the main network site WPCOM ID for multi-site installs - */ - $current_network = get_network(); - switch_to_blog( $current_network->blog_id ); - $wpcom_blog_id = \Jetpack_Options::get_option( 'id' ); - restore_current_blog(); - return $wpcom_blog_id; - } - - /** - * Return URL with a normalized protocol. - * - * @deprecated 1.23.1 - * - * @param string $callable Function name that was used to retrieve URL option. - * @param string $new_value URL Protocol to set URLs to. - * @return string Normalized URL. - */ - public static function get_protocol_normalized_url( $callable, $new_value ) { - _deprecated_function( __METHOD__, '1.23.1', '\\Automattic\\Jetpack\\Connection\\Urls::get_protocol_normalized_url' ); - return Urls::get_protocol_normalized_url( $callable, $new_value ); - } - - /** - * Return URL from option or PHP constant. - * - * @deprecated 1.23.1 - * - * @param string $option_name (e.g. 'home'). - * - * @return mixed|null URL. - */ - public static function get_raw_url( $option_name ) { - _deprecated_function( __METHOD__, '1.23.1', '\\Automattic\\Jetpack\\Connection\\Urls::get_raw_url' ); - return Urls::get_raw_url( $option_name ); - } - - /** - * Normalize domains by removing www unless declared in the site's option. - * - * @deprecated 1.23.1 - * - * @param string $option Option value from the site. - * @param callable $url_function Function retrieving the URL to normalize. - * @return mixed|string URL. - */ - public static function normalize_www_in_url( $option, $url_function ) { - _deprecated_function( __METHOD__, '1.23.1', '\\Automattic\\Jetpack\\Connection\\Urls::normalize_www_in_url' ); - return Urls::normalize_www_in_url( $option, $url_function ); - } - - /** - * Return filtered value of get_plugins. - * - * @return mixed|void - */ - public static function get_plugins() { - if ( ! function_exists( 'get_plugins' ) ) { - require_once ABSPATH . 'wp-admin/includes/plugin.php'; - } - - /** This filter is documented in wp-admin/includes/class-wp-plugins-list-table.php */ - return apply_filters( 'all_plugins', get_plugins() ); - } - - /** - * Get custom action link tags that the plugin is using - * Ref: https://codex.wordpress.org/Plugin_API/Filter_Reference/plugin_action_links_(plugin_file_name) - * - * @param string $plugin_file_singular Particular plugin. - * @return array of plugin action links (key: link name value: url) - */ - public static function get_plugins_action_links( $plugin_file_singular = null ) { - // Some sites may have DOM disabled in PHP fail early. - if ( ! class_exists( 'DOMDocument' ) ) { - return array(); - } - $plugins_action_links = get_option( 'jetpack_plugin_api_action_links', array() ); - if ( ! empty( $plugins_action_links ) ) { - if ( $plugin_file_singular === null ) { - return $plugins_action_links; - } - return ( isset( $plugins_action_links[ $plugin_file_singular ] ) ? $plugins_action_links[ $plugin_file_singular ] : null ); - } - return array(); - } - - /** - * Return the WP version as defined in the $wp_version global. - * - * @return string - */ - public static function wp_version() { - global $wp_version; - return $wp_version; - } - - /** - * Return site icon url used on the site. - * - * @param int $size Size of requested icon in pixels. - * @return mixed|string|void - */ - public static function site_icon_url( $size = 512 ) { - $site_icon = get_site_icon_url( $size ); - return $site_icon ? $site_icon : get_option( 'jetpack_site_icon_url' ); - } - - /** - * Return roles registered on the site. - * - * @return array - */ - public static function roles() { - $wp_roles = wp_roles(); - return $wp_roles->roles; - } - - /** - * Determine time zone from WordPress' options "timezone_string" - * and "gmt_offset". - * - * 1. Check if `timezone_string` is set and return it. - * 2. Check if `gmt_offset` is set, formats UTC-offset from it and return it. - * 3. Default to "UTC+0" if nothing is set. - * - * Note: This function is specifically not using wp_timezone() to keep consistency with - * the existing formatting of the timezone string. - * - * @return string - */ - public static function get_timezone() { - $timezone_string = get_option( 'timezone_string' ); - - if ( ! empty( $timezone_string ) ) { - return str_replace( '_', ' ', $timezone_string ); - } - - $gmt_offset = get_option( 'gmt_offset', 0 ); - - $formatted_gmt_offset = sprintf( '%+g', (float) $gmt_offset ); - - $formatted_gmt_offset = str_replace( - array( '.25', '.5', '.75' ), - array( ':15', ':30', ':45' ), - (string) $formatted_gmt_offset - ); - - /* translators: %s is UTC offset, e.g. "+1" */ - return sprintf( __( 'UTC%s', 'jetpack-sync' ), $formatted_gmt_offset ); - } - - /** - * Return list of paused themes. - * - * @return array|bool Array of paused themes or false if unsupported. - */ - public static function get_paused_themes() { - $paused_themes = wp_paused_themes(); - return $paused_themes->get_all(); - } - - /** - * Return list of paused plugins. - * - * @return array|bool Array of paused plugins or false if unsupported. - */ - public static function get_paused_plugins() { - $paused_plugins = wp_paused_plugins(); - return $paused_plugins->get_all(); - } - - /** - * Return the theme's supported features. - * Used for syncing the supported feature that we care about. - * - * @return array List of features that the theme supports. - */ - public static function get_theme_support() { - global $_wp_theme_features; - - $theme_support = array(); - foreach ( Defaults::$default_theme_support_whitelist as $theme_feature ) { - $has_support = current_theme_supports( $theme_feature ); - if ( $has_support ) { - $theme_support[ $theme_feature ] = $_wp_theme_features[ $theme_feature ]; - } - } - - return $theme_support; - } - - /** - * Returns if the current theme is a Full Site Editing theme. - * - * @since 1.49.0 Uses wp_is_block_theme() instead of deprecated gutenberg_is_fse_theme(). - * - * @return bool Theme is a Full Site Editing theme. - */ - public static function get_is_fse_theme() { - return wp_is_block_theme(); - } - - /** - * Wraps data in a way so that we can distinguish between objects and array and also prevent object recursion. - * - * @since 1.21.0 - * - * @param mixed $any Source data to be cleaned up. - * @param array $seen_nodes Built array of nodes. - * - * @return array - */ - public static function json_wrap( &$any, $seen_nodes = array() ) { - if ( is_object( $any ) ) { - $input = get_object_vars( $any ); - $input['__o'] = 1; - } else { - $input = &$any; - } - - if ( is_array( $input ) ) { - $seen_nodes[] = &$any; - - $return = array(); - - foreach ( $input as $k => &$v ) { - if ( ( is_array( $v ) || is_object( $v ) ) ) { - if ( in_array( $v, $seen_nodes, true ) ) { - continue; - } - $return[ $k ] = self::json_wrap( $v, $seen_nodes ); - } else { - $return[ $k ] = $v; - } - } - - return $return; - } - - return $any; - } - - /** - * Return the list of installed themes - * - * @since 1.31.0 - * - * @return array - */ - public static function get_themes() { - $current_stylesheet = get_stylesheet(); - $installed_themes = wp_get_themes(); - $synced_headers = array( 'Name', 'ThemeURI', 'Author', 'Version', 'Template', 'Status', 'TextDomain', 'RequiresWP', 'RequiresPHP' ); - $themes = array(); - foreach ( $installed_themes as $stylesheet => $theme ) { - $themes[ $stylesheet ] = array(); - foreach ( $synced_headers as $header ) { - $themes[ $stylesheet ][ $header ] = $theme->get( $header ); - } - $themes[ $stylesheet ]['active'] = $stylesheet === $current_stylesheet; - if ( method_exists( $theme, 'is_block_theme' ) ) { - $themes[ $stylesheet ]['is_block_theme'] = $theme->is_block_theme(); - } - } - /** - * Filters the output of Sync's get_theme callable - * - * @since 1.31.0 - * - * @param array $themes The list of installed themes formatted in an array with a collection of information extracted from the Theme's headers - */ - return apply_filters( 'jetpack_sync_get_themes_callable', $themes ); - } - - /** - * Return the list of active Jetpack modules. - * - * @since 1.34.0 - * - * @return array - */ - public static function get_active_modules() { - return ( new Jetpack_Modules() )->get_active(); - } - - /** - * Return a list of PHP modules that we want to track. - * - * @since 1.50.0 - * - * @return array - */ - public static function get_loaded_extensions() { - if ( function_exists( 'get_loaded_extensions' ) ) { - return get_loaded_extensions(); - } - - // If a hosting provider has blocked get_loaded_extensions for any reason, - // we check extensions manually. - - $extensions_to_check = array( - 'libxml' => array( 'class' => 'libXMLError' ), - 'xml' => array( 'function' => 'xml_parse' ), - 'dom' => array( 'class' => 'DOMDocument' ), - 'xdebug' => array( 'function' => 'xdebug_break' ), - ); - - $enabled_extensions = array(); - foreach ( $extensions_to_check as $extension_name => $extension ) { - if ( - ( isset( $extension['function'] ) - && function_exists( $extension['function'] ) ) - || class_exists( $extension['class'] ) - ) { - $enabled_extensions[] = $extension_name; - } - } - - return $enabled_extensions; - } - - /** - * Return the list of active connected Jetpack plugins. - * - * @since 3.2.0 - * - * @return array - */ - public static function get_jetpack_connection_active_plugins() { - return ( new Manager() )->get_connected_plugins(); - } - - /** - * Return the list of active sync modules. - * - * @since 3.6.0 - * - * @return array - */ - public static function get_jetpack_sync_active_modules() { - - /** This filter is documented in projects/packages/sync/src/class-modules.php */ - $modules = apply_filters( 'jetpack_sync_modules', Modules::DEFAULT_SYNC_MODULES ); - $modules = array_unique( $modules ); - $modules = array_map( 'wp_normalize_path', $modules ); - return $modules; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-health.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-health.php deleted file mode 100644 index 41d7f788..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-health.php +++ /dev/null @@ -1,188 +0,0 @@ - self::STATUS_UNKNOWN, - self::OPTION_TIMESTAMP_KEY => microtime( true ), - ); - - switch ( $status ) { - case self::STATUS_DISABLED: - case self::STATUS_OUT_OF_SYNC: - case self::STATUS_IN_SYNC: - $new_status[ self::OPTION_STATUS_KEY ] = $status; - break; - } - - \Jetpack_Options::update_option( self::STATUS_OPTION, $new_status ); - return true; - } - - /** - * Check if Status has been previously set. - * - * @return bool is a Status defined - */ - public static function is_status_defined() { - $status = \Jetpack_Options::get_option( self::STATUS_OPTION ); - - if ( false === $status || ! is_array( $status ) || empty( $status[ self::OPTION_STATUS_KEY ] ) ) { - return false; - } else { - return true; - } - } - - /** - * Update Sync Status if Full Sync ended of Posts - * - * @param string $checksum The checksum that's currently being processed. - * @param array $range The ranges of object types being processed. - */ - public static function full_sync_end_update_status( $checksum, $range ) { - if ( isset( $range['posts'] ) ) { - self::update_status( self::STATUS_IN_SYNC ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-json-deflate-array-codec.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-json-deflate-array-codec.php deleted file mode 100644 index a2f443af..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-json-deflate-array-codec.php +++ /dev/null @@ -1,96 +0,0 @@ -json_serialize( $object ) ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode - } - - /** - * Decode compressed serialized value. - * - * @param string $input Item to decode. - * @return array|mixed|object - */ - public function decode( $input ) { - $decoded = base64_decode( $input ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode - $inflated = @gzinflate( $decoded ); // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged - - return is_string( $inflated ) ? $this->json_unserialize( $inflated ) : null; - } - - /** - * Serialize JSON - * - * @see https://gist.github.com/muhqu/820694 - * - * @param mixed $any Value to serialize and wrap. - * - * @return false|string - */ - protected function json_serialize( $any ) { - return wp_json_encode( Functions::json_wrap( $any ) ); - } - - /** - * Unserialize JSON - * - * @param string $str JSON string. - * @return array|object Unwrapped JSON. - */ - protected function json_unserialize( $str ) { - return $this->json_unwrap( json_decode( $str, true ) ); - } - - /** - * Unwraps a json_decode return. - * - * @param array|object $any json_decode object. - * @return array|object - */ - private function json_unwrap( $any ) { - if ( is_array( $any ) ) { - foreach ( $any as $k => $v ) { - if ( '__o' === $k ) { - continue; - } - $any[ $k ] = $this->json_unwrap( $v ); - } - - if ( isset( $any['__o'] ) ) { - unset( $any['__o'] ); - $any = (object) $any; - } - } - - return $any; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-listener.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-listener.php deleted file mode 100644 index c2789c17..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-listener.php +++ /dev/null @@ -1,485 +0,0 @@ -:( - */ - protected function __construct() { - $this->set_defaults(); - $this->init(); - } - - /** - * Sync Listener init. - */ - private function init() { - $handler = array( $this, 'action_handler' ); - $full_sync_handler = array( $this, 'full_sync_action_handler' ); - - foreach ( Modules::get_modules() as $module ) { - $module->init_listeners( $handler ); - $module->init_full_sync_listeners( $full_sync_handler ); - } - - // Module Activation. - add_action( 'jetpack_activate_module', $handler ); - add_action( 'jetpack_deactivate_module', $handler ); - - // Jetpack Upgrade. - add_action( 'updating_jetpack_version', $handler, 10, 2 ); - - // Send periodic checksum. - add_action( 'jetpack_sync_checksum', $handler ); - } - - /** - * Get incremental sync queue. - */ - public function get_sync_queue() { - return $this->sync_queue; - } - - /** - * Gets the full sync queue. - */ - public function get_full_sync_queue() { - return $this->full_sync_queue; - } - - /** - * Sets queue size limit. - * - * @param int $limit Queue size limit. - */ - public function set_queue_size_limit( $limit ) { - $this->sync_queue_size_limit = $limit; - } - - /** - * Get queue size limit. - */ - public function get_queue_size_limit() { - return $this->sync_queue_size_limit; - } - - /** - * Sets the queue lag limit. - * - * @param int $age Queue lag limit. - */ - public function set_queue_lag_limit( $age ) { - $this->sync_queue_lag_limit = $age; - } - - /** - * Return value of queue lag limit. - */ - public function get_queue_lag_limit() { - return $this->sync_queue_lag_limit; - } - - /** - * Force a recheck of the queue limit. - */ - public function force_recheck_queue_limit() { - delete_transient( self::QUEUE_STATE_CHECK_TRANSIENT . '_' . $this->sync_queue->id ); - delete_transient( self::QUEUE_STATE_CHECK_TRANSIENT . '_' . $this->full_sync_queue->id ); - } - - /** - * Determine if an item can be added to the queue. - * - * Prevent adding items to the queue if it hasn't sent an item for 15 mins - * AND the queue is over 1000 items long (by default). - * - * @param object $queue Sync queue. - * @return bool - */ - public function can_add_to_queue( $queue ) { - if ( ! Settings::is_sync_enabled() ) { - return false; - } - - $state_transient_name = self::QUEUE_STATE_CHECK_TRANSIENT . '_' . $queue->id; - - $queue_state = get_transient( $state_transient_name ); - - if ( false === $queue_state ) { - $queue_state = array( $queue->size(), $queue->lag() ); - set_transient( $state_transient_name, $queue_state, self::QUEUE_STATE_CHECK_TIMEOUT ); - } - - list( $queue_size, $queue_age ) = $queue_state; - - return ( $queue_age < $this->sync_queue_lag_limit ) - || - ( ( $queue_size + 1 ) < $this->sync_queue_size_limit ); - } - - /** - * Full sync action handler. - * - * @param mixed ...$args Args passed to the action. - */ - public function full_sync_action_handler( ...$args ) { - $this->enqueue_action( current_filter(), $args, $this->full_sync_queue ); - } - - /** - * Action handler. - * - * @param mixed ...$args Args passed to the action. - */ - public function action_handler( ...$args ) { - $this->enqueue_action( current_filter(), $args, $this->sync_queue ); - } - - // add many actions to the queue directly, without invoking them. - - /** - * Bulk add action to the queue. - * - * @param string $action_name The name the full sync action. - * @param array $args_array Array of chunked arguments. - */ - public function bulk_enqueue_full_sync_actions( $action_name, $args_array ) { - $queue = $this->get_full_sync_queue(); - - /* - * If we add any items to the queue, we should try to ensure that our script - * can't be killed before they are sent. - */ - // https://plugins.trac.wordpress.org/ticket/2041 - if ( function_exists( 'ignore_user_abort' ) ) { - ignore_user_abort( true ); - } - - $data_to_enqueue = array(); - $user_id = get_current_user_id(); - $currtime = microtime( true ); - $is_importing = Settings::is_importing(); - - foreach ( $args_array as $args ) { - $previous_end = isset( $args['previous_end'] ) ? $args['previous_end'] : null; - $args = isset( $args['ids'] ) ? $args['ids'] : $args; - - /** - * Modify or reject the data within an action before it is enqueued locally. - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * - * @module sync - * - * @param array The action parameters - */ - $args = apply_filters( "jetpack_sync_before_enqueue_$action_name", $args ); - $action_data = array( $args ); - if ( $previous_end !== null ) { - $action_data[] = $previous_end; - } - // allow listeners to abort. - if ( false === $args ) { - continue; - } - - $data_to_enqueue[] = array( - $action_name, - $action_data, - $user_id, - $currtime, - $is_importing, - ); - } - - $queue->add_all( $data_to_enqueue ); - } - - /** - * Enqueue the action. - * - * @param string $current_filter Current WordPress filter. - * @param object $args Sync args. - * @param string $queue Sync queue. - */ - public function enqueue_action( $current_filter, $args, $queue ) { - // don't enqueue an action during the outbound http request - this prevents recursion. - if ( Settings::is_sending() ) { - return; - } - - if ( ! ( new Connection_Manager() )->is_connected() ) { - // Don't enqueue an action if the site is disconnected. - return; - } - - /** - * Add an action hook to execute when anything on the whitelist gets sent to the queue to sync. - * - * @module sync - * - * @since 1.6.3 - * @since-jetpack 5.9.0 - */ - do_action( 'jetpack_sync_action_before_enqueue' ); - - /** - * Modify or reject the data within an action before it is enqueued locally. - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * - * @param array The action parameters - */ - $args = apply_filters( "jetpack_sync_before_enqueue_$current_filter", $args ); - - // allow listeners to abort. - if ( false === $args ) { - return; - } - - /* - * Periodically check the size of the queue, and disable adding to it if - * it exceeds some limit AND the oldest item exceeds the age limit (i.e. sending has stopped). - */ - if ( ! $this->can_add_to_queue( $queue ) ) { - if ( 'sync' === $queue->id ) { - $this->sync_data_loss( $queue ); - } - return; - } - - /* - * If we add any items to the queue, we should try to ensure that our script - * can't be killed before they are sent. - */ - // https://plugins.trac.wordpress.org/ticket/2041 - if ( function_exists( 'ignore_user_abort' ) ) { - ignore_user_abort( true ); - } - - if ( - 'sync' === $queue->id || - in_array( - $current_filter, - array( - 'jetpack_full_sync_start', - 'jetpack_full_sync_end', - 'jetpack_full_sync_cancel', - ), - true - ) - ) { - $queue->add( - array( - $current_filter, - $args, - get_current_user_id(), - microtime( true ), - Settings::is_importing(), - $this->get_actor( $current_filter, $args ), - ) - ); - } else { - $queue->add( - array( - $current_filter, - $args, - get_current_user_id(), - microtime( true ), - Settings::is_importing(), - ) - ); - } - - // since we've added some items, let's try to load the sender so we can send them as quickly as possible. - if ( ! Actions::$sender ) { - add_filter( 'jetpack_sync_sender_should_load', __NAMESPACE__ . '\Actions::should_initialize_sender_enqueue', 10, 1 ); - if ( did_action( 'init' ) ) { - Actions::add_sender_shutdown(); - } - } - } - - /** - * Sync Data Loss Handler - * - * @param Queue $queue Sync queue. - * @return boolean was send successful - */ - public function sync_data_loss( $queue ) { - if ( ! Settings::is_sync_enabled() ) { - return; - } - $updated = Health::update_status( Health::STATUS_OUT_OF_SYNC ); - - if ( ! $updated ) { - return; - } - - $data = array( - 'timestamp' => microtime( true ), - 'queue_size' => $queue->size(), - 'queue_lag' => $queue->lag(), - ); - - $sender = Sender::get_instance(); - return $sender->send_action( 'jetpack_sync_data_loss', $data ); - } - - /** - * Get the event's actor. - * - * @param string $current_filter Current wp-admin page. - * @param object $args Sync event. - * @return array Actor information. - */ - public function get_actor( $current_filter, $args ) { - if ( 'wp_login' === $current_filter ) { - $user = get_user_by( 'ID', $args[1]->data->ID ); - } else { - $user = wp_get_current_user(); - } - - $roles = new Roles(); - $translated_role = $roles->translate_user_to_role( $user ); - - $actor = array( - 'wpcom_user_id' => null, - 'external_user_id' => isset( $user->ID ) ? $user->ID : null, - 'display_name' => isset( $user->display_name ) ? $user->display_name : null, - 'user_email' => isset( $user->user_email ) ? $user->user_email : null, - 'user_roles' => isset( $user->roles ) ? $user->roles : null, - 'translated_role' => $translated_role ? $translated_role : null, - 'is_cron' => defined( 'DOING_CRON' ) ? DOING_CRON : false, - 'is_rest' => defined( 'REST_API_REQUEST' ) ? REST_API_REQUEST : false, - 'is_xmlrpc' => defined( 'XMLRPC_REQUEST' ) ? XMLRPC_REQUEST : false, - 'is_wp_rest' => defined( 'REST_REQUEST' ) ? REST_REQUEST : false, - 'is_ajax' => defined( 'DOING_AJAX' ) ? DOING_AJAX : false, - 'is_wp_admin' => is_admin(), - 'is_cli' => defined( 'WP_CLI' ) ? WP_CLI : false, - 'from_url' => $this->get_request_url(), - ); - - if ( $this->should_send_user_data_with_actor( $current_filter ) ) { - $ip = IP_Utils::get_ip(); - - $actor['ip'] = $ip ? $ip : ''; - $actor['user_agent'] = isset( $_SERVER['HTTP_USER_AGENT'] ) ? filter_var( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ) : 'unknown'; - } - - return $actor; - } - - /** - * Should user data be sent as the actor? - * - * @param string $current_filter The current WordPress filter being executed. - * @return bool - */ - public function should_send_user_data_with_actor( $current_filter ) { - $should_send = in_array( $current_filter, array( 'jetpack_wp_login', 'wp_logout', 'jetpack_valid_failed_login_attempt' ), true ); - /** - * Allow or deny sending actor's user data ( IP and UA ) during a sync event - * - * @since 1.6.3 - * @since-jetpack 5.8.0 - * - * @module sync - * - * @param bool True if we should send user data - * @param string The current filter that is performing the sync action - */ - return apply_filters( 'jetpack_sync_actor_user_data', $should_send, $current_filter ); - } - - /** - * Sets Listener defaults. - */ - public function set_defaults() { - $this->sync_queue = new Queue( 'sync' ); - $this->full_sync_queue = new Queue( 'full_sync' ); - $this->set_queue_size_limit( Settings::get_setting( 'max_queue_size' ) ); - $this->set_queue_lag_limit( Settings::get_setting( 'max_queue_lag' ) ); - } - - /** - * Get the request URL. - * - * @return string Request URL, if known. Otherwise, wp-admin or home_url. - */ - public function get_request_url() { - if ( isset( $_SERVER['HTTP_HOST'] ) && isset( $_SERVER['REQUEST_URI'] ) ) { - // phpcs:ignore WordPress.Security.ValidatedSanitizedInput -- False positive, sniff misses the call to esc_url_raw. - return esc_url_raw( 'http' . ( isset( $_SERVER['HTTPS'] ) ? 's' : '' ) . '://' . wp_unslash( "{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}" ) ); - } - return is_admin() ? get_admin_url( get_current_blog_id() ) : home_url(); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-lock.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-lock.php deleted file mode 100644 index 61b89a1c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-lock.php +++ /dev/null @@ -1,77 +0,0 @@ - $locked_time ) { - update_option( $lock_name, false, false ); - } - return false; - } - - $locked_time = microtime( true ) + $expiry; - update_option( $lock_name, $locked_time, false ); - return $locked_time; - } - - /** - * Remove the lock. - * - * @access public - * - * @param string $name lock name. - * @param bool|float $lock_expiration lock expiration. - */ - public function remove( $name, $lock_expiration = false ) { - $lock_name = self::LOCK_PREFIX . $name; - - // Only remove lock if current value matches our lock. - if ( true === $lock_expiration || (string) get_option( $lock_name ) === (string) $lock_expiration ) { - update_option( $lock_name, false, false ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-main.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-main.php deleted file mode 100644 index e2083b72..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-main.php +++ /dev/null @@ -1,159 +0,0 @@ -uninstall(); - } - - /** - * Sync cleanup on shutdown. - */ - public static function on_jetpack_site_disconnected() { - add_action( 'shutdown', array( __CLASS__, 'sync_cleanup' ), 10000 ); - } - - /** - * Delete all sync related data on Site disconnect / clean up custom table. - * Needs to happen on shutdown to prevent fatals. - */ - public static function sync_cleanup() { - Sender::get_instance()->uninstall(); - - $table_storage = new Queue_Storage_Table( 'test_queue' ); - $table_storage->drop_table(); - } - - /** - * Sets the Sync data settings. - * - * @param array $data_settings An array containing the Sync data options. An empty array indicates that the default - * values will be used for all Sync data. - */ - public static function set_sync_data_options( $data_settings = array() ) { - ( new Data_Settings() )->add_settings_list( $data_settings ); - } - - /** - * Initialize the main sync actions. - * - * @action plugins_loaded - */ - public static function on_plugins_loaded_early() { - /** - * Additional Sync modules can be carried out into their own packages and they - * will get their own config settings. - * - * For now additional modules are enabled based on whether the third party plugin - * class exists or not. - */ - Sync_Actions::initialize_search(); - Sync_Actions::initialize_woocommerce(); - Sync_Actions::initialize_wp_super_cache(); - - // We need to define this here so that it's hooked before `updating_jetpack_version` is called. - add_action( 'updating_jetpack_version', array( 'Automattic\\Jetpack\\Sync\\Actions', 'cleanup_on_upgrade' ), 10, 2 ); - } - - /** - * Runs after most of plugins_loaded hook functions have been run. - * - * @action plugins_loaded - */ - public static function on_plugins_loaded_late() { - /* - * Init after plugins loaded and before the `init` action. This helps with issues where plugins init - * with a high priority or sites that use alternate cron. - */ - Sync_Actions::init(); - - // Enable non-blocking Jetpack Sync flow. - $non_block_enabled = (bool) get_option( 'jetpack_sync_non_blocking', false ); - - /** - * Filters the option to enable non-blocking sync. - * - * Default value is false, filter to true to enable non-blocking mode which will have - * WP.com return early and use the sync/close endpoint to check-in processed items. - * - * @since 1.12.3 - * - * @param bool $enabled Should non-blocking flow be enabled. - */ - $filtered = (bool) apply_filters( 'jetpack_sync_non_blocking', $non_block_enabled ); - - if ( $non_block_enabled !== $filtered ) { - update_option( 'jetpack_sync_non_blocking', $filtered, false ); - } - - // Initialize health-related hooks after plugins have loaded. - Health::init(); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-modules.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-modules.php deleted file mode 100644 index 4f2481f4..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-modules.php +++ /dev/null @@ -1,165 +0,0 @@ -set_defaults(); - } - } - - /** - * Gets the name of an initialized module. Returns false if given module has not been initialized. - * - * @access public - * @static - * - * @param string $module_name A module name. - * - * @return bool|\Automattic\Jetpack\Sync\Modules\Module - */ - public static function get_module( $module_name ) { - // @todo Better type hinting for Phan if https://github.com/phan/phan/issues/3842 gets fixed. Then clean up the `@phan-var` on all the callers. - - foreach ( self::get_modules() as $module ) { - if ( $module->name() === $module_name ) { - return $module; - } - } - - return false; - } - - /** - * Loads and sets defaults for all declared modules. - * - * @access public - * @static - * - * @return array - */ - public static function initialize_modules() { - - /** - * Filters the list of class names of sync modules. - * If you add to this list, make sure any classes implement the - * Jetpack_Sync_Module interface. - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - */ - $modules = apply_filters( 'jetpack_sync_modules', self::DEFAULT_SYNC_MODULES ); - - $modules = array_unique( $modules ); - - $modules = array_map( array( __CLASS__, 'load_module' ), $modules ); - return array_map( array( __CLASS__, 'set_module_defaults' ), $modules ); - } - - /** - * Returns an instance of the given module class. - * - * @access public - * @static - * - * @param string $module_class The classname of a Jetpack sync module. - * - * @return \Automattic\Jetpack\Sync\Modules\Module - */ - public static function load_module( $module_class ) { - return new $module_class(); - } - - /** - * Sets defaults for the given instance of a Jetpack sync module. - * - * @access public - * @static - * - * @param \Automattic\Jetpack\Sync\Modules\Module $module Instance of a Jetpack sync module. - * - * @return \Automattic\Jetpack\Sync\Modules\Module - */ - public static function set_module_defaults( $module ) { - $module->set_defaults(); - if ( method_exists( $module, 'set_late_default' ) ) { - // @phan-suppress-next-line PhanUndeclaredMethodInCallable -- https://github.com/phan/phan/issues/1204 - add_action( 'init', array( $module, 'set_late_default' ), 90 ); - } - return $module; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-package-version.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-package-version.php deleted file mode 100644 index 5daeb111..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-package-version.php +++ /dev/null @@ -1,30 +0,0 @@ -id = $id; - $this->items_with_ids = $items_with_ids; - } - - /** - * Retrieve the sync items in the buffer, in an ID => value form. - * - * @access public - * - * @return bool|array Sync items in the buffer. - */ - public function get_items() { - return array_combine( $this->get_item_ids(), $this->get_item_values() ); - } - - /** - * Retrieve the values of the sync items in the buffer. - * - * @access public - * - * @return array Sync items values. - */ - public function get_item_values() { - return Utils::get_item_values( $this->items_with_ids ); - } - - /** - * Retrieve the IDs of the sync items in the buffer. - * - * @access public - * - * @return array Sync items IDs. - */ - public function get_item_ids() { - return Utils::get_item_ids( $this->items_with_ids ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-queue.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-queue.php deleted file mode 100644 index 094e72d1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-queue.php +++ /dev/null @@ -1,678 +0,0 @@ -id = str_replace( '-', '_', $id ); // Necessary to ensure we don't have ID collisions in the SQL. - $this->row_iterator = 0; - $this->random_int = wp_rand( 1, 1000000 ); - - /** - * If the Custom queue table is enabled - let's use it as a backend. Otherwise, fall back to the Options table. - */ - if ( Settings::is_custom_queue_table_enabled() ) { - $this->queue_storage = new Queue_Storage_Table( $this->id ); - } else { - // Initialize the storage with the Options table backend. To be changed in subsequent updates to include the logic to switch to Custom Table. - $this->queue_storage = new Queue_Storage_Options( $this->id ); - } - } - - /** - * Add a single item to the queue. - * - * @param object $item Event object to add to queue. - * - * @return bool|WP_Error - */ - public function add( $item ) { - $added = false; - - // If empty, don't add. - if ( empty( $item ) ) { - return false; - } - - // Attempt to serialize data, if an exception (closures) return early. - try { - $item = serialize( $item ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize - } catch ( \Exception $ex ) { - return new WP_Error( 'queue_unable_to_serialize', 'Unable to serialize item' ); - } - - // This basically tries to add the option until enough time has elapsed that - // it has a unique (microtime-based) option key. - while ( ! $added ) { - $added = $this->queue_storage->insert_item( $this->get_next_data_row_option_name(), $item ); - } - - return $added; - } - - /** - * Insert all the items in a single SQL query. May be subject to query size limits! - * - * @param array $items Array of events to add to the queue. - * - * @return bool|\WP_Error - */ - public function add_all( $items ) { - // TODO check and figure out if it's used at all and if we can optimize it. - $base_option_name = $this->get_next_data_row_option_name(); - - $rows_added = $this->queue_storage->add_all( $items, $base_option_name ); - - if ( count( $items ) !== $rows_added ) { - return new WP_Error( 'row_count_mismatch', "The number of rows inserted didn't match the size of the input array" ); - } - - return true; - } - - /** - * Get the front-most item on the queue without checking it out. - * - * @param int $count Number of items to return when looking at the items. - * - * @return array - */ - public function peek( $count = 1 ) { - $items = $this->fetch_items( $count ); - if ( $items ) { - return Utils::get_item_values( $items ); - } - - return array(); - } - - /** - * Gets items with particular IDs. - * - * @param array $item_ids Array of item IDs to retrieve. - * - * @return array - */ - public function peek_by_id( $item_ids ) { - $items = $this->fetch_items_by_id( $item_ids ); - if ( $items ) { - return Utils::get_item_values( $items ); - } - - return array(); - } - - /** - * Gets the queue lag. - * Lag is the difference in time between the age of the oldest item - * (aka first or frontmost item) and the current time. - * - * @param float $now The current time in microtime. - * - * @return float - */ - public function lag( $now = null ) { - return (float) $this->queue_storage->get_lag( $now ); - } - - /** - * Resets the queue. - */ - public function reset() { - $this->delete_checkout_id(); - - $this->queue_storage->clear_queue(); - } - - /** - * Return the size of the queue. - * - * @return int - */ - public function size() { - return $this->queue_storage->get_item_count(); - } - - /** - * Lets you know if there is any items in the queue. - * - * We use this peculiar implementation because it's much faster than count(*). - * - * @return bool - */ - public function has_any_items() { - return $this->size() > 0; - } - - /** - * Used to checkout the queue. - * - * @param int $buffer_size Size of the buffer to checkout. - * - * @return \Automattic\Jetpack\Sync\Queue_Buffer|bool|int|\WP_Error - */ - public function checkout( $buffer_size ) { - if ( $this->get_checkout_id() ) { - return new WP_Error( 'unclosed_buffer', 'There is an unclosed buffer' ); - } - - // TODO check if adding a prefix is going to be a problem - $buffer_id = uniqid( '', true ); - - $result = $this->set_checkout_id( $buffer_id ); - - if ( ! $result || is_wp_error( $result ) ) { - return $result; - } - - $items = $this->fetch_items( $buffer_size ); - - if ( ! is_countable( $items ) ) { - return false; - } - - if ( count( $items ) === 0 ) { - return false; - } - - return new Queue_Buffer( $buffer_id, array_slice( $items, 0, $buffer_size ) ); - } - - /** - * Given a list of items return the items ids. - * - * @param array $items List of item objects. - * - * @return array Ids of the items. - */ - public function get_ids( $items ) { - return array_map( - function ( $item ) { - return $item->id; - }, - $items - ); - } - - /** - * Pop elements from the queue. - * - * @param int $limit Number of items to pop from the queue. - * - * @return array|object|null - */ - public function pop( $limit ) { - $items = $this->fetch_items( $limit ); - - $ids = $this->get_ids( $items ); - - $this->delete( $ids ); - - return $items; - } - - /** - * Get the items from the queue with a memory limit. - * - * This checks out rows until it either empties the queue or hits a certain memory limit - * it loads the sizes from the DB first so that it doesn't accidentally - * load more data into memory than it needs to. - * The only way it will load more items than $max_size is if a single queue item - * exceeds the memory limit, but in that case it will send that item by itself. - * - * @param int $max_memory (bytes) Maximum memory threshold. - * @param int $max_buffer_size Maximum buffer size (number of items). - * - * @return \Automattic\Jetpack\Sync\Queue_Buffer|bool|int|\WP_Error - */ - public function checkout_with_memory_limit( $max_memory, $max_buffer_size = 500 ) { - if ( $this->get_checkout_id() ) { - return new WP_Error( 'unclosed_buffer', 'There is an unclosed buffer' ); - } - - $buffer_id = uniqid( '', true ); - - $result = $this->set_checkout_id( $buffer_id ); - - if ( ! $result || is_wp_error( $result ) ) { - return $result; - } - - // How much memory is currently being used by the items. - $total_memory = 0; - - // Store the items to return - $items = array(); - - $current_items_ids = $this->queue_storage->get_items_ids_with_size( $max_buffer_size - count( $items ) ); - - // If no valid items are returned or no items are returned, continue. - if ( ! is_countable( $current_items_ids ) || count( $current_items_ids ) === 0 ) { - return false; - } - - $item_ids_to_fetch = array(); - - foreach ( $current_items_ids as $id => $item_with_size ) { - $total_memory += $item_with_size->value_size; - - // If this is the first item and it exceeds memory, allow loop to continue - // we will exit on the next iteration instead. - if ( $total_memory > $max_memory && $id > 0 ) { - break; - } - - $item_ids_to_fetch[] = $item_with_size->id; - } - - $current_items = $this->queue_storage->fetch_items_by_ids( $item_ids_to_fetch ); - - $items_count = is_countable( $current_items ) ? count( $current_items ) : 0; - - if ( $items_count > 0 ) { - /** - * Save some memory by moving things one by one to the array of items being returned, instead of - * unserializing all and then merging them with other items. - * - * PHPCS ignore is because this is the expected behavior - we're assigning a variable in the condition part of the loop. - */ - // phpcs:ignore Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition - while ( ( $current_item = array_shift( $current_items ) ) !== null ) { - // @codingStandardsIgnoreStart - $current_item->value = unserialize( $current_item->value ); - // @codingStandardsIgnoreEnd - - $items[] = $current_item; - } - } - - if ( count( $items ) === 0 ) { - $this->delete_checkout_id(); - - return false; - } - - return new Queue_Buffer( $buffer_id, $items ); - } - - /** - * Check in the queue. - * - * @param \Automattic\Jetpack\Sync\Queue_Buffer $buffer Queue_Buffer object. - * - * @return bool|\WP_Error - */ - public function checkin( $buffer ) { - $is_valid = $this->validate_checkout( $buffer ); - - if ( is_wp_error( $is_valid ) ) { - return $is_valid; - } - - $this->delete_checkout_id(); - - return true; - } - - /** - * Close the buffer. - * - * @param \Automattic\Jetpack\Sync\Queue_Buffer $buffer Queue_Buffer object. - * @param null|array $ids_to_remove Ids to remove from the queue. - * - * @return bool|\WP_Error - */ - public function close( $buffer, $ids_to_remove = null ) { - $is_valid = $this->validate_checkout( $buffer ); - - if ( is_wp_error( $is_valid ) ) { - // Always delete ids_to_remove even when buffer is no longer checked-out. - // They were processed by WP.com so safe to remove from queue. - if ( $ids_to_remove !== null ) { - $this->delete( $ids_to_remove ); - } - return $is_valid; - } - - $this->delete_checkout_id(); - - // By default clear all items in the buffer. - if ( $ids_to_remove === null ) { - $ids_to_remove = $buffer->get_item_ids(); - } - - $this->delete( $ids_to_remove ); - - return true; - } - - /** - * Delete elements from the queue. - * - * @param array $ids Ids to delete. - * - * @return bool|int - */ - private function delete( $ids ) { - if ( array() === $ids ) { - return 0; - } - - $this->queue_storage->delete_items_by_ids( $ids ); - - return true; - } - - /** - * Flushes all items from the queue. - * - * @return array - */ - public function flush_all() { - $items = Utils::get_item_values( $this->fetch_items() ); - $this->reset(); - - return $items; - } - - /** - * Get all the items from the queue. - * - * @return array|object|null - */ - public function get_all() { - return $this->fetch_items(); - } - - /** - * Forces Checkin of the queue. - * Use with caution, this could allow multiple processes to delete - * and send from the queue at the same time - */ - public function force_checkin() { - $this->delete_checkout_id(); - } - - /** - * Checks if the queue is locked. - * - * @return bool - */ - public function is_locked() { - return (bool) $this->get_checkout_id(); - } - - /** - * Locks checkouts from the queue - * tries to wait up to $timeout seconds for the queue to be empty. - * - * @param int $timeout The wait time in seconds for the queue to be empty. - * - * @return bool|int|\WP_Error - */ - public function lock( $timeout = 30 ) { - $tries = 0; - - while ( $this->has_any_items() && $tries < $timeout ) { - sleep( 1 ); - ++$tries; - } - - if ( 30 === $tries ) { - return new WP_Error( 'lock_timeout', 'Timeout waiting for sync queue to empty' ); - } - - if ( $this->get_checkout_id() ) { - return new WP_Error( 'unclosed_buffer', 'There is an unclosed buffer' ); - } - - // Hopefully this means we can acquire a checkout? - $result = $this->set_checkout_id( 'lock' ); - - if ( ! $result || is_wp_error( $result ) ) { - return $result; - } - - return true; - } - - /** - * Unlocks the queue. - * - * @return bool|int - */ - public function unlock() { - return $this->delete_checkout_id(); - } - - /** - * This option is specifically chosen to, as much as possible, preserve time order - * and minimise the possibility of collisions between multiple processes working - * at the same time. - * - * @return string - */ - protected function generate_option_name_timestamp() { - return sprintf( '%.6f', microtime( true ) ); - } - - /** - * Gets the checkout ID. - * - * @return bool|string - */ - private function get_checkout_id() { - global $wpdb; - $checkout_value = $wpdb->get_var( - $wpdb->prepare( - "SELECT option_value FROM $wpdb->options WHERE option_name = %s", - $this->get_lock_option_name() - ) - ); - - if ( $checkout_value ) { - list( $checkout_id, $timestamp ) = explode( ':', $checkout_value ); - if ( (int) $timestamp > time() ) { - return $checkout_id; - } - } - - return false; - } - - /** - * Sets the checkout id. - * - * @param string $checkout_id The ID of the checkout. - * - * @return bool|int - */ - private function set_checkout_id( $checkout_id ) { - global $wpdb; - - $expires = time() + Defaults::$default_sync_queue_lock_timeout; - $updated_num = $wpdb->query( - $wpdb->prepare( - "UPDATE $wpdb->options SET option_value = %s WHERE option_name = %s", - "$checkout_id:$expires", - $this->get_lock_option_name() - ) - ); - - if ( ! $updated_num ) { - $updated_num = $wpdb->query( - $wpdb->prepare( - "INSERT INTO $wpdb->options ( option_name, option_value, autoload ) VALUES ( %s, %s, 'no' )", - $this->get_lock_option_name(), - "$checkout_id:$expires" - ) - ); - } - - return $updated_num; - } - - /** - * Deletes the checkout ID. - * - * @return bool|int - */ - private function delete_checkout_id() { - global $wpdb; - // Rather than delete, which causes fragmentation, we update in place. - return $wpdb->query( - $wpdb->prepare( - "UPDATE $wpdb->options SET option_value = %s WHERE option_name = %s", - '0:0', - $this->get_lock_option_name() - ) - ); - } - - /** - * Return the lock option name. - * - * @return string - */ - private function get_lock_option_name() { - return "jpsq_{$this->id}_checkout"; - } - - /** - * Return the next data row option name. - * - * @return string - */ - private function get_next_data_row_option_name() { - $timestamp = $this->generate_option_name_timestamp(); - - // Row iterator is used to avoid collisions where we're writing data waaay fast in a single process. - if ( PHP_INT_MAX === $this->row_iterator ) { - $this->row_iterator = 0; - } else { - $this->row_iterator += 1; - } - - return 'jpsq_' . $this->id . '-' . $timestamp . '-' . $this->random_int . '-' . $this->row_iterator; - } - - /** - * Return the items in the queue. - * - * @param null|int $limit Limit to the number of items we fetch at once. - * - * @return array|object|null - */ - private function fetch_items( $limit = null ) { - $items = $this->queue_storage->fetch_items( $limit ); - - return $this->unserialize_values( $items ); - } - - /** - * Return items with specific ids. - * - * @param array $items_ids Array of event ids. - * - * @return array|object|null - */ - private function fetch_items_by_id( $items_ids ) { - return $this->unserialize_values( $this->queue_storage->fetch_items_by_ids( $items_ids ) ); - } - - /** - * Unserialize item values. - * - * @param array $items Events from the Queue to be unserialized. - * - * @return mixed - */ - private function unserialize_values( $items ) { - array_walk( - $items, - function ( $item ) { - // @codingStandardsIgnoreStart - $item->value = @unserialize( $item->value ); - // @codingStandardsIgnoreEnd - } - ); - - return $items; - } - - /** - * Return true if the buffer is still valid or an Error other wise. - * - * @param \Automattic\Jetpack\Sync\Queue_Buffer $buffer The Queue_Buffer. - * - * @return bool|WP_Error - */ - private function validate_checkout( $buffer ) { - if ( ! $buffer instanceof Queue_Buffer ) { - return new WP_Error( 'not_a_buffer', 'You must checkin an instance of Automattic\\Jetpack\\Sync\\Queue_Buffer' ); - } - - $checkout_id = $this->get_checkout_id(); - - if ( ! $checkout_id ) { - return new WP_Error( 'buffer_not_checked_out', 'There are no checked out buffers' ); - } - - // TODO: change to strict comparison. - if ( $checkout_id != $buffer->id ) { // phpcs:ignore Universal.Operators.StrictComparisons.LooseNotEqual - return new WP_Error( 'buffer_mismatch', 'The buffer you checked in was not checked out' ); - } - - return true; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-replicastore.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-replicastore.php deleted file mode 100644 index dd1aeb7b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-replicastore.php +++ /dev/null @@ -1,1425 +0,0 @@ -query( "DELETE FROM $wpdb->posts" ); - - // Delete comments from cache. - $comment_ids = $wpdb->get_col( "SELECT comment_ID FROM $wpdb->comments" ); - if ( ! empty( $comment_ids ) ) { - clean_comment_cache( $comment_ids ); - } - $wpdb->query( "DELETE FROM $wpdb->comments" ); - - // Also need to delete terms from cache. - $term_ids = $wpdb->get_col( "SELECT term_id FROM $wpdb->terms" ); - foreach ( $term_ids as $term_id ) { - wp_cache_delete( $term_id, 'terms' ); - } - - $wpdb->query( "DELETE FROM $wpdb->terms" ); - - $wpdb->query( "DELETE FROM $wpdb->term_taxonomy" ); - $wpdb->query( "DELETE FROM $wpdb->term_relationships" ); - - // Callables and constants. - $wpdb->query( "DELETE FROM $wpdb->options WHERE option_name LIKE 'jetpack_%'" ); - $wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_key NOT LIKE '\_%'" ); - } - - /** - * Ran when full sync has just started. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - */ - public function full_sync_start( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - $this->reset(); - } - - /** - * Ran when full sync has just finished. - * - * @access public - * - * @param string $checksum Deprecated since 7.3.0. - */ - public function full_sync_end( $checksum ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - // Noop right now. - } - - /** - * Retrieve the number of terms. - * - * @access public - * - * @return int Number of terms. - */ - public function term_count() { - global $wpdb; - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching - return (int) $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->terms" ); - } - - /** - * Retrieve the number of rows in the `term_taxonomy` table. - * - * @access public - * - * @return int Number of terms. - */ - public function term_taxonomy_count() { - global $wpdb; - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching - return (int) $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->term_taxonomy" ); - } - - /** - * Retrieve the number of term relationships. - * - * @access public - * - * @return int Number of rows in the term relationships table. - */ - public function term_relationship_count() { - global $wpdb; - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching - return (int) $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->term_relationships" ); - } - - /** - * Retrieve the number of posts with a particular post status within a certain range. - * - * @access public - * - * @todo Prepare the SQL query before executing it. - * - * @param string $status Post status. - * @param int $min_id Minimum post ID. - * @param int $max_id Maximum post ID. - * @return int Number of posts. - */ - public function post_count( $status = null, $min_id = null, $max_id = null ) { - global $wpdb; - - $where = ''; - - if ( $status ) { - $where = "post_status = '" . esc_sql( $status ) . "'"; - } else { - $where = '1=1'; - } - - if ( ! empty( $min_id ) ) { - $where .= ' AND ID >= ' . (int) $min_id; - } - - if ( ! empty( $max_id ) ) { - $where .= ' AND ID <= ' . (int) $max_id; - } - - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching - return (int) $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->posts WHERE $where" ); - } - - /** - * Retrieve the posts with a particular post status. - * - * @access public - * - * @todo Implement range and actually use max_id/min_id arguments. - * - * @param string $status Post status. - * @param int $min_id Minimum post ID. - * @param int $max_id Maximum post ID. - * @return array Array of posts. - */ - public function get_posts( $status = null, $min_id = null, $max_id = null ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - $args = array( - 'orderby' => 'ID', - 'posts_per_page' => -1, - ); - - if ( $status ) { - $args['post_status'] = $status; - } else { - $args['post_status'] = 'any'; - } - - return get_posts( $args ); - } - - /** - * Retrieve a post object by the post ID. - * - * @access public - * - * @param int $id Post ID. - * @return \WP_Post Post object. - */ - public function get_post( $id ) { - return get_post( $id ); - } - - /** - * Update or insert a post. - * - * @access public - * - * @param \WP_Post $post Post object. - * @param bool $silent Whether to perform a silent action. Not used in this implementation. - */ - public function upsert_post( $post, $silent = false ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - global $wpdb; - - // Reject the post if it's not a \WP_Post. - if ( ! $post instanceof \WP_Post ) { - return; - } - - $post = $post->to_array(); - - // Reject posts without an ID. - if ( ! isset( $post['ID'] ) ) { - return; - } - - $now = current_time( 'mysql' ); - $now_gmt = get_gmt_from_date( $now ); - - $defaults = array( - 'ID' => 0, - 'post_author' => '0', - 'post_content' => '', - 'post_content_filtered' => '', - 'post_title' => '', - 'post_name' => '', - 'post_excerpt' => '', - 'post_status' => 'draft', - 'post_type' => 'post', - 'comment_status' => 'closed', - 'comment_count' => '0', - 'ping_status' => '', - 'post_password' => '', - 'to_ping' => '', - 'pinged' => '', - 'post_parent' => 0, - 'menu_order' => 0, - 'guid' => '', - 'post_date' => $now, - 'post_date_gmt' => $now_gmt, - 'post_modified' => $now, - 'post_modified_gmt' => $now_gmt, - ); - - $post = array_intersect_key( $post, $defaults ); - - $post = sanitize_post( $post, 'db' ); - - unset( $post['filter'] ); - - $exists = $wpdb->get_var( $wpdb->prepare( "SELECT EXISTS( SELECT 1 FROM $wpdb->posts WHERE ID = %d )", $post['ID'] ) ); - - if ( $exists ) { - $wpdb->update( $wpdb->posts, $post, array( 'ID' => $post['ID'] ) ); - } else { - $wpdb->insert( $wpdb->posts, $post ); - } - - clean_post_cache( $post['ID'] ); - } - - /** - * Delete a post by the post ID. - * - * @access public - * - * @param int $post_id Post ID. - */ - public function delete_post( $post_id ) { - wp_delete_post( $post_id, true ); - } - - /** - * Retrieve the checksum for posts within a range. - * - * @access public - * - * @param int $min_id Minimum post ID. - * @param int $max_id Maximum post ID. - * @return int The checksum. - */ - public function posts_checksum( $min_id = null, $max_id = null ) { - return $this->summarize_checksum_histogram( $this->checksum_histogram( 'posts', null, $min_id, $max_id ) ); - } - - /** - * Retrieve the checksum for post meta within a range. - * - * @access public - * - * @param int $min_id Minimum post meta ID. - * @param int $max_id Maximum post meta ID. - * @return int The checksum. - */ - public function post_meta_checksum( $min_id = null, $max_id = null ) { - return $this->summarize_checksum_histogram( $this->checksum_histogram( 'postmeta', null, $min_id, $max_id ) ); - } - - /** - * Retrieve the number of comments with a particular comment status within a certain range. - * - * @access public - * - * @todo Prepare the SQL query before executing it. - * - * @param string $status Comment status. - * @param int $min_id Minimum comment ID. - * @param int $max_id Maximum comment ID. - * @return int Number of comments. - */ - public function comment_count( $status = null, $min_id = null, $max_id = null ) { - global $wpdb; - - $comment_approved = $this->comment_status_to_approval_value( $status ); - - if ( false !== $comment_approved ) { - $where = "comment_approved = '" . esc_sql( $comment_approved ) . "'"; - } else { - $where = '1=1'; - } - - if ( ! empty( $min_id ) ) { - $where .= ' AND comment_ID >= ' . (int) $min_id; - } - - if ( ! empty( $max_id ) ) { - $where .= ' AND comment_ID <= ' . (int) $max_id; - } - - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching - return (int) $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->comments WHERE $where" ); - } - - /** - * Translate a comment status to a value of the comment_approved field. - * - * @access protected - * - * @param string $status Comment status. - * @return string|bool New comment_approved value, false if the status doesn't affect it. - */ - protected function comment_status_to_approval_value( $status ) { - switch ( (string) $status ) { - case 'approve': - case '1': - return '1'; - case 'hold': - case '0': - return '0'; - case 'spam': - return 'spam'; - case 'trash': - return 'trash'; - case 'post-trashed': - return 'post-trashed'; - case 'any': - case 'all': - default: - return false; - } - } - - /** - * Retrieve the comments with a particular comment status. - * - * @access public - * - * @todo Implement range and actually use max_id/min_id arguments. - * - * @param string $status Comment status. - * @param int $min_id Minimum comment ID. - * @param int $max_id Maximum comment ID. - * @return array Array of comments. - */ - public function get_comments( $status = null, $min_id = null, $max_id = null ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - $args = array( - 'orderby' => 'ID', - 'status' => 'all', - ); - - if ( $status ) { - $args['status'] = $status; - } - - return get_comments( $args ); - } - - /** - * Retrieve a comment object by the comment ID. - * - * @access public - * - * @param int $id Comment ID. - * @return \WP_Comment Comment object. - */ - public function get_comment( $id ) { - return \WP_Comment::get_instance( $id ); - } - - /** - * Update or insert a comment. - * - * @access public - * - * @param \WP_Comment $comment Comment object. - */ - public function upsert_comment( $comment ) { - global $wpdb; - - $comment = $comment->to_array(); - - // Filter by fields on comment table. - $comment_fields_whitelist = array( - 'comment_ID', - 'comment_post_ID', - 'comment_author', - 'comment_author_email', - 'comment_author_url', - 'comment_author_IP', - 'comment_date', - 'comment_date_gmt', - 'comment_content', - 'comment_karma', - 'comment_approved', - 'comment_agent', - 'comment_type', - 'comment_parent', - 'user_id', - ); - - foreach ( $comment as $key => $value ) { - if ( ! in_array( $key, $comment_fields_whitelist, true ) ) { - unset( $comment[ $key ] ); - } - } - - $exists = $wpdb->get_var( - $wpdb->prepare( - "SELECT EXISTS( SELECT 1 FROM $wpdb->comments WHERE comment_ID = %d )", - $comment['comment_ID'] - ) - ); - - if ( $exists ) { - $wpdb->update( $wpdb->comments, $comment, array( 'comment_ID' => $comment['comment_ID'] ) ); - } else { - $wpdb->insert( $wpdb->comments, $comment ); - } - // Remove comment from cache. - clean_comment_cache( $comment['comment_ID'] ); - - wp_update_comment_count( $comment['comment_post_ID'] ); - } - - /** - * Trash a comment by the comment ID. - * - * @access public - * - * @param int $comment_id Comment ID. - */ - public function trash_comment( $comment_id ) { - wp_delete_comment( $comment_id ); - } - - /** - * Delete a comment by the comment ID. - * - * @access public - * - * @param int $comment_id Comment ID. - */ - public function delete_comment( $comment_id ) { - wp_delete_comment( $comment_id, true ); - } - - /** - * Mark a comment by the comment ID as spam. - * - * @access public - * - * @param int $comment_id Comment ID. - */ - public function spam_comment( $comment_id ) { - wp_spam_comment( $comment_id ); - } - - /** - * Trash the comments of a post. - * - * @access public - * - * @param int $post_id Post ID. - * @param array $statuses Post statuses. Not used in this implementation. - */ - public function trashed_post_comments( $post_id, $statuses ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - wp_trash_post_comments( $post_id ); - } - - /** - * Untrash the comments of a post. - * - * @access public - * - * @param int $post_id Post ID. - */ - public function untrashed_post_comments( $post_id ) { - wp_untrash_post_comments( $post_id ); - } - - /** - * Retrieve the checksum for comments within a range. - * - * @access public - * - * @param int $min_id Minimum comment ID. - * @param int $max_id Maximum comment ID. - * @return int The checksum. - */ - public function comments_checksum( $min_id = null, $max_id = null ) { - return $this->summarize_checksum_histogram( $this->checksum_histogram( 'comments', null, $min_id, $max_id ) ); - } - - /** - * Retrieve the checksum for comment meta within a range. - * - * @access public - * - * @param int $min_id Minimum comment meta ID. - * @param int $max_id Maximum comment meta ID. - * @return int The checksum. - */ - public function comment_meta_checksum( $min_id = null, $max_id = null ) { - return $this->summarize_checksum_histogram( $this->checksum_histogram( 'commentmeta', null, $min_id, $max_id ) ); - } - - /** - * Update the value of an option. - * - * @access public - * - * @param string $option Option name. - * @param mixed $value Option value. - * @return bool False if value was not updated and true if value was updated. - */ - public function update_option( $option, $value ) { - return update_option( $option, $value ); - } - - /** - * Retrieve an option value based on an option name. - * - * @access public - * - * @param string $option Name of option to retrieve. - * @param mixed $default Optional. Default value to return if the option does not exist. - * @return mixed Value set for the option. - */ - public function get_option( $option, $default = false ) { - return get_option( $option, $default ); - } - - /** - * Remove an option by name. - * - * @access public - * - * @param string $option Name of option to remove. - * @return bool True, if option is successfully deleted. False on failure. - */ - public function delete_option( $option ) { - return delete_option( $option ); - } - - /** - * Change the info of the current theme. - * - * @access public - * - * @param array $theme_info Theme info array. - */ - public function set_theme_info( $theme_info ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - // Noop. - } - - /** - * Whether the current theme supports a certain feature. - * - * @access public - * - * @param string $feature Name of the feature. - */ - public function current_theme_supports( $feature ) { - return current_theme_supports( $feature ); - } - - /** - * Retrieve metadata for the specified object. - * - * @access public - * - * @param string $type Meta type. - * @param int $object_id ID of the object. - * @param string $meta_key Meta key. - * @param bool $single If true, return only the first value of the specified meta_key. - * - * @return mixed Single metadata value, or array of values. - */ - public function get_metadata( $type, $object_id, $meta_key = '', $single = false ) { - return get_metadata( $type, $object_id, $meta_key, $single ); - } - - /** - * Stores remote meta key/values alongside an ID mapping key. - * - * @access public - * - * @todo Refactor to not use interpolated values when preparing the SQL query. - * - * @param string $type Meta type. - * @param int $object_id ID of the object. - * @param string $meta_key Meta key. - * @param mixed $meta_value Meta value. - * @param int $meta_id ID of the meta. - * - * @return bool False if meta table does not exist, true otherwise. - */ - public function upsert_metadata( $type, $object_id, $meta_key, $meta_value, $meta_id ) { - $table = _get_meta_table( $type ); - if ( ! $table ) { - return false; - } - - global $wpdb; - - $exists = $wpdb->get_var( - $wpdb->prepare( - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - "SELECT EXISTS( SELECT 1 FROM $table WHERE meta_id = %d )", - $meta_id - ) - ); - - if ( $exists ) { - $wpdb->update( - $table, - array( - 'meta_key' => $meta_key, - 'meta_value' => maybe_serialize( $meta_value ), - ), - array( 'meta_id' => $meta_id ) - ); - } else { - $object_id_field = $type . '_id'; - $wpdb->insert( - $table, - array( - 'meta_id' => $meta_id, - $object_id_field => $object_id, - 'meta_key' => $meta_key, - 'meta_value' => maybe_serialize( $meta_value ), - ) - ); - } - - wp_cache_delete( $object_id, $type . '_meta' ); - - return true; - } - - /** - * Delete metadata for the specified object. - * - * @access public - * - * @todo Refactor to not use interpolated values when preparing the SQL query. - * - * @param string $type Meta type. - * @param int $object_id ID of the object. - * @param array $meta_ids IDs of the meta objects to delete. - */ - public function delete_metadata( $type, $object_id, $meta_ids ) { - global $wpdb; - - $table = _get_meta_table( $type ); - if ( ! $table ) { - return false; - } - - foreach ( $meta_ids as $meta_id ) { - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - $wpdb->query( $wpdb->prepare( "DELETE FROM $table WHERE meta_id = %d", $meta_id ) ); - } - - // If we don't have an object ID what do we do - invalidate ALL meta? - if ( $object_id ) { - wp_cache_delete( $object_id, $type . '_meta' ); - } - } - - /** - * Delete metadata with a certain key for the specified objects. - * - * @access public - * - * @todo Test this out to make sure it works as expected. - * @todo Refactor to not use interpolated values when preparing the SQL query. - * - * @param string $type Meta type. - * @param array $object_ids IDs of the objects. - * @param string $meta_key Meta key. - */ - public function delete_batch_metadata( $type, $object_ids, $meta_key ) { - global $wpdb; - - $table = _get_meta_table( $type ); - if ( ! $table ) { - return false; - } - $column = sanitize_key( $type . '_id' ); - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - $wpdb->query( $wpdb->prepare( "DELETE FROM $table WHERE $column IN (%s) && meta_key = %s", implode( ',', $object_ids ), $meta_key ) ); - - // If we don't have an object ID what do we do - invalidate ALL meta? - foreach ( $object_ids as $object_id ) { - wp_cache_delete( $object_id, $type . '_meta' ); - } - } - - /** - * Retrieve value of a constant based on the constant name. - * - * We explicitly return null instead of false if the constant doesn't exist. - * - * @access public - * - * @param string $constant Name of constant to retrieve. - * @return mixed Value set for the constant. - */ - public function get_constant( $constant ) { - $value = get_option( 'jetpack_constant_' . $constant ); - - if ( $value ) { - return $value; - } - - return null; - } - - /** - * Set the value of a constant. - * - * @access public - * - * @param string $constant Name of constant to retrieve. - * @param mixed $value Value set for the constant. - */ - public function set_constant( $constant, $value ) { - update_option( 'jetpack_constant_' . $constant, $value ); - } - - /** - * Retrieve the number of the available updates of a certain type. - * Type is one of: `plugins`, `themes`, `wordpress`, `translations`, `total`, `wp_update_version`. - * - * @access public - * - * @param string $type Type of updates to retrieve. - * @return int|null Number of updates available, `null` if type is invalid or missing. - */ - public function get_updates( $type ) { - $all_updates = get_option( 'jetpack_updates', array() ); - - if ( isset( $all_updates[ $type ] ) ) { - return $all_updates[ $type ]; - } else { - return null; - } - } - - /** - * Set the available updates of a certain type. - * Type is one of: `plugins`, `themes`, `wordpress`, `translations`, `total`, `wp_update_version`. - * - * @access public - * - * @param string $type Type of updates to set. - * @param int $updates Total number of updates. - */ - public function set_updates( $type, $updates ) { - $all_updates = get_option( 'jetpack_updates', array() ); - $all_updates[ $type ] = $updates; - update_option( 'jetpack_updates', $all_updates ); - } - - /** - * Retrieve a callable value based on its name. - * - * @access public - * - * @param string $name Name of the callable to retrieve. - * @return mixed Value of the callable. - */ - public function get_callable( $name ) { - $value = get_option( 'jetpack_' . $name ); - - if ( $value ) { - return $value; - } - - return null; - } - - /** - * Update the value of a callable. - * - * @access public - * - * @param string $name Callable name. - * @param mixed $value Callable value. - */ - public function set_callable( $name, $value ) { - update_option( 'jetpack_' . $name, $value ); - } - - /** - * Retrieve a network option value based on a network option name. - * - * @access public - * - * @param string $option Name of network option to retrieve. - * @return mixed Value set for the network option. - */ - public function get_site_option( $option ) { - return get_option( 'jetpack_network_' . $option ); - } - - /** - * Update the value of a network option. - * - * @access public - * - * @param string $option Network option name. - * @param mixed $value Network option value. - * @return bool False if value was not updated and true if value was updated. - */ - public function update_site_option( $option, $value ) { - return update_option( 'jetpack_network_' . $option, $value ); - } - - /** - * Remove a network option by name. - * - * @access public - * - * @param string $option Name of option to remove. - * @return bool True, if option is successfully deleted. False on failure. - */ - public function delete_site_option( $option ) { - return delete_option( 'jetpack_network_' . $option ); - } - - /** - * Retrieve the terms from a particular taxonomy. - * - * @access public - * - * @param string $taxonomy Taxonomy slug. - * - * @return array|WP_Error Array of terms or WP_Error object on failure. - */ - public function get_terms( $taxonomy ) { - $t = $this->ensure_taxonomy( $taxonomy ); - if ( ! $t || is_wp_error( $t ) ) { - return $t; - } - return get_terms( $taxonomy ); - } - - /** - * Retrieve a particular term. - * - * @access public - * - * @param string|false $taxonomy Taxonomy slug. - * @param int $term_id ID of the term. - * @param string $term_key ID Field `term_id` or `term_taxonomy_id`. - * - * @return \WP_Term|WP_Error Term object on success, \WP_Error object on failure. - */ - public function get_term( $taxonomy, $term_id, $term_key = 'term_id' ) { - - // Full Sync will pass false for the $taxonomy so a check for term_taxonomy_id is needed before ensure_taxonomy. - if ( 'term_taxonomy_id' === $term_key ) { - return get_term_by( 'term_taxonomy_id', $term_id ); - } - - $t = $this->ensure_taxonomy( $taxonomy ); - if ( ! $t || is_wp_error( $t ) ) { - return $t; - } - - return get_term( $term_id, $taxonomy ); - } - - /** - * Verify a taxonomy is legitimate and register it if necessary. - * - * @access private - * - * @param string $taxonomy Taxonomy slug. - * - * @return bool|void|WP_Error True if already exists; void if it was registered; \WP_Error on error. - */ - private function ensure_taxonomy( $taxonomy ) { - if ( ! taxonomy_exists( $taxonomy ) ) { - // Try re-registering synced taxonomies. - $taxonomies = $this->get_callable( 'taxonomies' ); - if ( ! isset( $taxonomies[ $taxonomy ] ) ) { - // Doesn't exist, or somehow hasn't been synced. - return new WP_Error( 'invalid_taxonomy', "The taxonomy '$taxonomy' doesn't exist" ); - } - $t = $taxonomies[ $taxonomy ]; - - return register_taxonomy( - $taxonomy, - $t->object_type, - (array) $t - ); - } - - return true; - } - - /** - * Retrieve all terms from a taxonomy that are related to an object with a particular ID. - * - * @access public - * - * @param int $object_id Object ID. - * @param string $taxonomy Taxonomy slug. - * - * @return array|bool|WP_Error Array of terms on success, `false` if no terms or post doesn't exist, \WP_Error on failure. - */ - public function get_the_terms( $object_id, $taxonomy ) { - return get_the_terms( $object_id, $taxonomy ); - } - - /** - * Insert or update a term. - * - * @access public - * - * @param \WP_Term $term_object Term object. - * - * @return array|bool|WP_Error Array of term_id and term_taxonomy_id if updated, true if inserted, \WP_Error on failure. - */ - public function update_term( $term_object ) { - $taxonomy = $term_object->taxonomy; - global $wpdb; - $exists = $wpdb->get_var( - $wpdb->prepare( - "SELECT EXISTS( SELECT 1 FROM $wpdb->terms WHERE term_id = %d )", - $term_object->term_id - ) - ); - if ( ! $exists ) { - $term_object = sanitize_term( clone $term_object, $taxonomy, 'db' ); - $term = array( - 'term_id' => $term_object->term_id, - 'name' => $term_object->name, - 'slug' => $term_object->slug, - 'term_group' => $term_object->term_group, - ); - $term_taxonomy = array( - 'term_taxonomy_id' => $term_object->term_taxonomy_id, - 'term_id' => $term_object->term_id, - 'taxonomy' => $term_object->taxonomy, - 'description' => $term_object->description, - 'parent' => (int) $term_object->parent, - 'count' => (int) $term_object->count, - ); - $wpdb->insert( $wpdb->terms, $term ); - $wpdb->insert( $wpdb->term_taxonomy, $term_taxonomy ); - - return true; - } - - return wp_update_term( $term_object->term_id, $taxonomy, (array) $term_object ); - } - - /** - * Delete a term by the term ID and its corresponding taxonomy. - * - * @access public - * - * @param int $term_id Term ID. - * @param string $taxonomy Taxonomy slug. - * - * @return bool|int|WP_Error True on success, false if term doesn't exist. Zero if trying with default category. \WP_Error on invalid taxonomy. - */ - public function delete_term( $term_id, $taxonomy ) { - $this->ensure_taxonomy( $taxonomy ); - return wp_delete_term( $term_id, $taxonomy ); - } - - /** - * Add/update terms of a particular taxonomy of an object with the specified ID. - * - * @access public - * - * @param int $object_id The object to relate to. - * @param string $taxonomy The context in which to relate the term to the object. - * @param string|int|array $terms A single term slug, single term id, or array of either term slugs or ids. - * @param bool $append Optional. If false will delete difference of terms. Default false. - */ - public function update_object_terms( $object_id, $taxonomy, $terms, $append ) { - $this->ensure_taxonomy( $taxonomy ); - wp_set_object_terms( $object_id, $terms, $taxonomy, $append ); - } - - /** - * Remove certain term relationships from the specified object. - * - * @access public - * - * @todo Refactor to not use interpolated values when preparing the SQL query. - * - * @param int $object_id ID of the object. - * @param array $tt_ids Term taxonomy IDs. - * @return bool True on success, false on failure. - */ - public function delete_object_terms( $object_id, $tt_ids ) { - global $wpdb; - - if ( is_array( $tt_ids ) && ! empty( $tt_ids ) ) { - // Escape. - $tt_ids_sanitized = array_map( 'intval', $tt_ids ); - - $taxonomies = array(); - foreach ( $tt_ids_sanitized as $tt_id ) { - $term = get_term_by( 'term_taxonomy_id', $tt_id ); - $taxonomies[ $term->taxonomy ][] = $tt_id; - } - $in_tt_ids = implode( ', ', $tt_ids_sanitized ); - - /** - * Fires immediately before an object-term relationship is deleted. - * - * @since 1.6.3 - * @since-jetpack 2.9.0 - * - * @param int $object_id Object ID. - * @param array $tt_ids An array of term taxonomy IDs. - */ - do_action( 'delete_term_relationships', $object_id, $tt_ids_sanitized ); - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - $deleted = $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->term_relationships WHERE object_id = %d AND term_taxonomy_id IN ($in_tt_ids)", $object_id ) ); - foreach ( $taxonomies as $taxonomy => $taxonomy_tt_ids ) { - $this->ensure_taxonomy( $taxonomy ); - wp_cache_delete( $object_id, $taxonomy . '_relationships' ); - /** - * Fires immediately after an object-term relationship is deleted. - * - * @since 1.6.3 - * @since-jetpack 2.9.0 - * - * @param int $object_id Object ID. - * @param array $tt_ids An array of term taxonomy IDs. - */ - do_action( 'deleted_term_relationships', $object_id, $taxonomy_tt_ids ); - wp_update_term_count( $taxonomy_tt_ids, $taxonomy ); - } - - return (bool) $deleted; - } - - return false; - } - - /** - * Retrieve the number of users. - * Not supported in this replicastore. - * - * @access public - */ - public function user_count() { - // Noop. - } - - /** - * Retrieve a user object by the user ID. - * - * @access public - * - * @param int $user_id User ID. - * @return \WP_User|null User object, or `null` if user invalid/not found. - */ - public function get_user( $user_id ) { - $user = get_user_by( 'id', $user_id ); - return $user instanceof \WP_User ? $user : null; - } - - /** - * Insert or update a user. - * Not supported in this replicastore. - * - * @access public - * @throws Exception If this method is invoked. - * - * @param \WP_User $user User object. - */ - public function upsert_user( $user ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - $this->invalid_call(); - } - - /** - * Delete a user. - * Not supported in this replicastore. - * - * @access public - * @throws Exception If this method is invoked. - * - * @param int $user_id User ID. - */ - public function delete_user( $user_id ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - $this->invalid_call(); - } - - /** - * Update/insert user locale. - * Not supported in this replicastore. - * - * @access public - * @throws Exception If this method is invoked. - * - * @param int $user_id User ID. - * @param string $local The user locale. - */ - public function upsert_user_locale( $user_id, $local ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - $this->invalid_call(); - } - - /** - * Delete user locale. - * Not supported in this replicastore. - * - * @access public - * @throws Exception If this method is invoked. - * - * @param int $user_id User ID. - */ - public function delete_user_locale( $user_id ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - $this->invalid_call(); - } - - /** - * Retrieve the user locale. - * - * @access public - * - * @param int $user_id User ID. - * @return string The user locale. - */ - public function get_user_locale( $user_id ) { - return get_user_locale( $user_id ); - } - - /** - * Retrieve the allowed mime types for the user. - * Not supported in this replicastore. - * - * @access public - * - * @param int $user_id User ID. - */ - public function get_allowed_mime_types( $user_id ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - // Noop. - } - - /** - * Retrieve all the checksums we are interested in. - * - * @access public - * - * @param boolean $perform_text_conversion If text fields should be latin1 converted. - * - * @return array Checksums. - */ - public function checksum_all( $perform_text_conversion = false ) { - $all_checksum_tables = Table_Checksum::get_allowed_tables(); - - unset( $all_checksum_tables['users'] ); // Handled separately - TODO. - unset( $all_checksum_tables['usermeta'] ); // Handled separately - TODO. - unset( $all_checksum_tables['termmeta'] ); // Handled separately - TODO. - unset( $all_checksum_tables['links'] ); // Not supported yet. Consider removing from default config. - unset( $all_checksum_tables['options'] ); // Not supported yet. Consider removing from default config. - - $all_checksum_tables = array_unique( array_keys( $all_checksum_tables ) ); - - $result = array(); - - foreach ( $all_checksum_tables as $table ) { - $result_key = in_array( $table, array( 'postmeta', 'commentmeta' ), true ) ? str_replace( 'meta', '_meta', $table ) : $table; - try { - $checksum = $this->checksum_histogram( $table, null, null, null, null, true, '', false, false, $perform_text_conversion ); - $result[ $result_key ] = $this->summarize_checksum_histogram( $checksum ); - } catch ( Exception $ex ) { - $result[ $result_key ] = null; - } - } - - return $result; - } - - /** - * Return the summarized checksum from buckets or the WP_Error. - * - * @param array $histogram checksum_histogram result. - * - * @return int|WP_Error checksum or Error. - */ - protected function summarize_checksum_histogram( $histogram ) { - if ( is_wp_error( $histogram ) ) { - return $histogram; - } else { - return array_sum( $histogram ); - } - } - - /** - * Grabs the minimum and maximum object ids for the given parameters. - * - * @access public - * - * @param string $id_field The id column in the table to query. - * @param string $object_table The table to query. - * @param string $where A sql where clause without 'WHERE'. - * @param int $bucket_size The maximum amount of objects to include in the query. - * For `term_relationships` table, the bucket size will refer to the amount - * of distinct object ids. This will likely include more database rows than - * the bucket size implies. - * - * @return object An object with min_id and max_id properties. - */ - public function get_min_max_object_id( $id_field, $object_table, $where, $bucket_size ) { - global $wpdb; - - // The term relationship table's unique key is a combination of 2 columns. `DISTINCT` helps us get a more acurate query. - $distinct_sql = ( $wpdb->term_relationships === $object_table ) ? 'DISTINCT' : ''; - $where_sql = $where ? "WHERE $where" : ''; - - // Since MIN() and MAX() do not work with LIMIT, we'll need to adjust the dataset we query if a limit is present. - // With a limit present, we'll look at a dataset consisting of object_ids that meet the constructs of the $where clause. - // Without a limit, we can use the actual table as a dataset. - $from = $bucket_size ? - "( SELECT $distinct_sql $id_field FROM $object_table $where_sql ORDER BY $id_field ASC LIMIT " . ( (int) $bucket_size ) . ' ) as ids' : - "$object_table $where_sql ORDER BY $id_field ASC"; - - return $wpdb->get_row( - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - "SELECT MIN($id_field) as min, MAX($id_field) as max FROM $from" - ); - } - - /** - * Retrieve the checksum histogram for a specific object type. - * - * @access public - * - * @param string $table Object type. - * @param null $buckets Number of buckets to split the objects to. - * @param null $start_id Minimum object ID. - * @param null $end_id Maximum object ID. - * @param null $columns Table columns to calculate the checksum from. - * @param bool $strip_non_ascii Whether to strip non-ASCII characters. - * @param string $salt Salt, used for $wpdb->prepare()'s args. - * @param bool $only_range_edges Only return the range edges and not the actual checksums. - * @param bool $detailed_drilldown If the call should return a detailed drilldown for the checksum or only the checksum. - * @param bool $perform_text_conversion If text fields should be converted to latin1 during the checksum calculation. - * - * @return array|WP_Error The checksum histogram. - */ - public function checksum_histogram( $table, $buckets = null, $start_id = null, $end_id = null, $columns = null, $strip_non_ascii = true, $salt = '', $only_range_edges = false, $detailed_drilldown = false, $perform_text_conversion = false ) { - global $wpdb; - - $wpdb->queries = array(); - try { - $checksum_table = $this->get_table_checksum_instance( $table, $salt, $perform_text_conversion, $columns ); - } catch ( Exception $ex ) { - return new WP_Error( 'checksum_disabled', $ex->getMessage() ); - } - - try { - $range_edges = $checksum_table->get_range_edges( $start_id, $end_id ); - } catch ( Exception $ex ) { - return new WP_Error( 'invalid_range_edges', '[' . $start_id . '-' . $end_id . ']: ' . $ex->getMessage() ); - } - - if ( $only_range_edges ) { - return $range_edges; - } - - $object_count = (int) $range_edges['item_count']; - - if ( 0 === $object_count ) { - return array(); - } - - // Validate / Determine Buckets. - if ( $buckets === null || $buckets < 1 ) { - $buckets = $this->calculate_buckets( $table, $object_count ); - } - - $bucket_size = (int) ceil( $object_count / $buckets ); - $previous_max_id = max( 0, $range_edges['min_range'] ); - $histogram = array(); - - do { - try { - $ids_range = $checksum_table->get_range_edges( $previous_max_id, null, $bucket_size ); - } catch ( Exception $ex ) { - return new WP_Error( 'invalid_range_edges', '[' . $previous_max_id . '- ]: ' . $ex->getMessage() ); - } - - if ( empty( $ids_range['min_range'] ) || empty( $ids_range['max_range'] ) ) { - // Nothing to checksum here... - break; - } - - // Get the checksum value. - $batch_checksum = $checksum_table->calculate_checksum( $ids_range['min_range'], $ids_range['max_range'], null, $detailed_drilldown ); - - if ( is_wp_error( $batch_checksum ) ) { - return $batch_checksum; - } - - if ( $ids_range['min_range'] === $ids_range['max_range'] ) { - $histogram[ $ids_range['min_range'] ] = $batch_checksum; - } else { - $histogram[ "{$ids_range[ 'min_range' ]}-{$ids_range[ 'max_range' ]}" ] = $batch_checksum; - } - // If ids_range['max_range'] is PHP_INT_MAX, we've reached the end of the table. Edge case causing the loop to never end. - if ( PHP_INT_MAX === (int) $ids_range['max_range'] ) { - break; - } - $previous_max_id = $ids_range['max_range'] + 1; - // If we've reached the max_range lets bail out. - if ( $previous_max_id > $range_edges['max_range'] ) { - break; - } - } while ( true ); - - return $histogram; - } - - /** - * Retrieve the type of the checksum. - * - * @access public - * - * @return string Type of the checksum. - */ - public function get_checksum_type() { - return 'sum'; - } - - /** - * Used in methods that are not implemented and shouldn't be invoked. - * - * @access private - * @return never - * @throws Exception If this method is invoked. - */ - private function invalid_call() { - // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_debug_backtrace - $backtrace = debug_backtrace(); - $caller = $backtrace[1]['function']; - throw new Exception( "This function $caller is not supported on the WP Replicastore" ); - } - - /** - * Determine number of buckets to use in full table checksum. - * - * @param string $table Object Type. - * @param int $object_count Object count. - * @return int Number of Buckets to use. - */ - private function calculate_buckets( $table, $object_count ) { - // Ensure no division by 0. - if ( 0 === (int) $object_count ) { - return 1; - } - - // Default Bucket sizes. - $bucket_size = 10000; // Default bucket size is 10,000 items. - switch ( $table ) { - case 'postmeta': - case 'commentmeta': - case 'order_itemmeta': - $bucket_size = 1000; // Meta bucket size is restricted to 1000 items. - } - - return (int) ceil( $object_count / $bucket_size ); - } - - /** - * Return an instance for `Table_Checksum`, depending on the table. - * - * Some tables require custom instances, due to different checksum logic. - * - * @param string $table The table that we want to get the instance for. - * @param string $salt Salt to be used when generating the checksums. - * @param bool $perform_text_conversion Should we perform text encoding conversion when calculating the checksum. - * @param array $additional_columns Additional columns to add to the checksum calculation. - * - * @return Table_Checksum|Table_Checksum_Usermeta - * @throws Exception Might throw an exception if any of the input parameters were invalid. - */ - public function get_table_checksum_instance( $table, $salt = null, $perform_text_conversion = false, $additional_columns = null ) { - if ( 'users' === $table ) { - return new Table_Checksum_Users( $table, $salt, $perform_text_conversion, $additional_columns ); - } - if ( 'usermeta' === $table ) { - return new Table_Checksum_Usermeta( $table, $salt, $perform_text_conversion, $additional_columns ); - } - - return new Table_Checksum( $table, $salt, $perform_text_conversion, $additional_columns ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-rest-endpoints.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-rest-endpoints.php deleted file mode 100644 index 71a91bf7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-rest-endpoints.php +++ /dev/null @@ -1,888 +0,0 @@ - WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::full_sync_start', - 'permission_callback' => __CLASS__ . '::verify_default_permissions', - 'args' => array( - 'modules' => array( - 'description' => __( 'Data Modules that should be included in Full Sync', 'jetpack-sync' ), - 'type' => 'array', - 'required' => false, - ), - 'users' => array( - 'description' => __( 'User IDs to include in Full Sync or "initial"', 'jetpack-sync' ), - 'required' => false, - ), - 'posts' => array( - 'description' => __( 'Post IDs to include in Full Sync', 'jetpack-sync' ), - 'type' => 'array', - 'required' => false, - ), - 'comments' => array( - 'description' => __( 'Comment IDs to include in Full Sync', 'jetpack-sync' ), - 'type' => 'array', - 'required' => false, - ), - 'context' => array( - 'description' => __( 'Context for the Full Sync', 'jetpack-sync' ), - 'type' => 'string', - 'required' => false, - ), - ), - ) - ); - - // Obtain Sync status. - register_rest_route( - 'jetpack/v4', - '/sync/status', - array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::sync_status', - 'permission_callback' => __CLASS__ . '::verify_default_permissions', - 'args' => array( - 'fields' => array( - 'description' => __( 'Comma seperated list of additional fields that should be included in status.', 'jetpack-sync' ), - 'type' => 'string', - 'required' => false, - ), - ), - ) - ); - - // Update Sync health status. - register_rest_route( - 'jetpack/v4', - '/sync/health', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::sync_health', - 'permission_callback' => __CLASS__ . '::verify_default_permissions', - 'args' => array( - 'status' => array( - 'description' => __( 'New Sync health status', 'jetpack-sync' ), - 'type' => 'string', - 'required' => true, - ), - ), - ) - ); - - // Obtain Sync settings. - register_rest_route( - 'jetpack/v4', - '/sync/settings', - array( - array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::get_sync_settings', - 'permission_callback' => __CLASS__ . '::verify_default_permissions', - ), - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::update_sync_settings', - 'permission_callback' => __CLASS__ . '::verify_default_permissions', - ), - ) - ); - - // Retrieve Sync Object(s). - register_rest_route( - 'jetpack/v4', - '/sync/object', - array( - 'methods' => WP_REST_Server::ALLMETHODS, - 'callback' => __CLASS__ . '::get_sync_objects', - 'permission_callback' => __CLASS__ . '::verify_default_permissions', - 'args' => array( - 'module_name' => array( - 'description' => __( 'Name of Sync module', 'jetpack-sync' ), - 'type' => 'string', - 'required' => false, - ), - 'object_type' => array( - 'description' => __( 'Object Type', 'jetpack-sync' ), - 'type' => 'string', - 'required' => false, - ), - 'object_ids' => array( - 'description' => __( 'Objects Identifiers', 'jetpack-sync' ), - 'type' => 'array', - 'required' => false, - ), - ), - ) - ); - - // Retrieve Sync Object(s). - register_rest_route( - 'jetpack/v4', - '/sync/now', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::do_sync', - 'permission_callback' => __CLASS__ . '::verify_default_permissions', - 'args' => array( - 'queue' => array( - 'description' => __( 'Name of Sync queue.', 'jetpack-sync' ), - 'type' => 'string', - 'required' => true, - ), - ), - ) - ); - - // Checkout Sync Objects. - register_rest_route( - 'jetpack/v4', - '/sync/checkout', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::checkout', - 'permission_callback' => __CLASS__ . '::verify_default_permissions', - ) - ); - - // Checkin Sync Objects. - register_rest_route( - 'jetpack/v4', - '/sync/close', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::close', - 'permission_callback' => __CLASS__ . '::verify_default_permissions', - ) - ); - - // Unlock Sync Queue. - register_rest_route( - 'jetpack/v4', - '/sync/unlock', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::unlock_queue', - 'permission_callback' => __CLASS__ . '::verify_default_permissions', - 'args' => array( - 'queue' => array( - 'description' => __( 'Name of Sync queue.', 'jetpack-sync' ), - 'type' => 'string', - 'required' => true, - ), - ), - ) - ); - - // Retrieve range of Object Ids. - register_rest_route( - 'jetpack/v4', - '/sync/object-id-range', - array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::get_object_id_range', - 'permission_callback' => __CLASS__ . '::verify_default_permissions', - 'args' => array( - 'sync_module' => array( - 'description' => __( 'Name of Sync module.', 'jetpack-sync' ), - 'type' => 'string', - 'required' => true, - ), - 'batch_size' => array( - 'description' => __( 'Size of batches', 'jetpack-sync' ), - 'type' => 'int', - 'required' => true, - ), - ), - ) - ); - - // Obtain table checksums. - register_rest_route( - 'jetpack/v4', - '/sync/data-check', - array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::data_check', - 'permission_callback' => __CLASS__ . '::verify_default_permissions', - 'args' => array( - 'perform_text_conversion' => array( - 'description' => __( 'If text fields should be converted to latin1 in checksum calculation.', 'jetpack-sync' ), - 'type' => 'boolean', - 'required' => false, - ), - ), - ) - ); - - // Obtain histogram. - register_rest_route( - 'jetpack/v4', - '/sync/data-histogram', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::data_histogram', - 'permission_callback' => __CLASS__ . '::verify_default_permissions', - 'args' => array( - 'columns' => array( - 'description' => __( 'Column mappings', 'jetpack-sync' ), - 'type' => 'array', - 'required' => false, - ), - 'object_type' => array( - 'description' => __( 'Object Type', 'jetpack-sync' ), - 'type' => 'string', - 'required' => false, - ), - 'buckets' => array( - 'description' => __( 'Number of histogram buckets.', 'jetpack-sync' ), - 'type' => 'int', - 'required' => false, - ), - 'start_id' => array( - 'description' => __( 'Start ID for the histogram', 'jetpack-sync' ), - 'type' => 'int', - 'required' => false, - ), - 'end_id' => array( - 'description' => __( 'End ID for the histogram', 'jetpack-sync' ), - 'type' => 'int', - 'required' => false, - ), - 'strip_non_ascii' => array( - 'description' => __( 'Strip non-ascii characters?', 'jetpack-sync' ), - 'type' => 'boolean', - 'required' => false, - ), - 'shared_salt' => array( - 'description' => __( 'Shared Salt to use when generating checksum', 'jetpack-sync' ), - 'type' => 'string', - 'required' => false, - ), - 'only_range_edges' => array( - 'description' => __( 'Should only range edges be returned', 'jetpack-sync' ), - 'type' => 'boolean', - 'required' => false, - ), - 'detailed_drilldown' => array( - 'description' => __( 'Do we want the checksum or object ids.', 'jetpack-sync' ), - 'type' => 'boolean', - 'required' => false, - ), - 'perform_text_conversion' => array( - 'description' => __( 'If text fields should be converted to latin1 in checksum calculation.', 'jetpack-sync' ), - 'type' => 'boolean', - 'required' => false, - ), - ), - ) - ); - - // Trigger Dedicated Sync request. - register_rest_route( - 'jetpack/v4', - '/sync/spawn-sync', - array( - 'methods' => WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::spawn_sync', - 'permission_callback' => '__return_true', - ) - ); - - // Reset Sync locks. - register_rest_route( - 'jetpack/v4', - '/sync/locks', - array( - 'methods' => WP_REST_Server::DELETABLE, - 'callback' => __CLASS__ . '::reset_locks', - 'permission_callback' => __CLASS__ . '::verify_default_permissions', - ) - ); - } - - /** - * Trigger a Full Sync of specified modules. - * - * @since 1.23.1 - * - * @param \WP_REST_Request $request The request sent to the WP REST API. - * - * @return \WP_REST_Response|WP_Error - */ - public static function full_sync_start( $request ) { - - $modules = $request->get_param( 'modules' ); - - // convert list of modules into array format of "$modulename => true". - if ( ! empty( $modules ) ) { - $modules = array_map( '__return_true', array_flip( $modules ) ); - } - - // Process additional options. - foreach ( array( 'posts', 'comments', 'users' ) as $module_name ) { - if ( 'users' === $module_name && 'initial' === $request->get_param( 'users' ) ) { - $modules['users'] = 'initial'; - } elseif ( is_array( $request->get_param( $module_name ) ) ) { - $ids = $request->get_param( $module_name ); - if ( array() !== $ids ) { - $modules[ $module_name ] = $ids; - } - } - } - - if ( empty( $modules ) ) { - $modules = null; - } - - $context = $request->get_param( 'context' ); - - return rest_ensure_response( - array( - 'scheduled' => Actions::do_full_sync( $modules, $context ), - ) - ); - } - - /** - * Return Sync's status. - * - * @since 1.23.1 - * - * @param \WP_REST_Request $request The request sent to the WP REST API. - * - * @return \WP_REST_Response - */ - public static function sync_status( $request ) { - $fields = $request->get_param( 'fields' ); - return rest_ensure_response( Actions::get_sync_status( $fields ) ); - } - - /** - * Return table checksums. - * - * @since 1.23.1 - * - * @param \WP_REST_Request $request The request sent to the WP REST API. - * - * @return \WP_REST_Response - */ - public static function data_check( $request ) { - // Disable Sync during this call, so we can resolve faster. - Actions::mark_sync_read_only(); - $store = new Replicastore(); - - $perform_text_conversion = false; - if ( true === $request->get_param( 'perform_text_conversion' ) ) { - $perform_text_conversion = true; - } - - return rest_ensure_response( $store->checksum_all( $perform_text_conversion ) ); - } - - /** - * Return Histogram. - * - * @since 1.23.1 - * - * @param \WP_REST_Request $request The request sent to the WP REST API. - * - * @return \WP_REST_Response - */ - public static function data_histogram( $request ) { - - // Disable Sync during this call, so we can resolve faster. - Actions::mark_sync_read_only(); - - $args = $request->get_params(); - - if ( empty( $args['columns'] ) ) { - $args['columns'] = null; // go with defaults. - } - - if ( false !== $args['strip_non_ascii'] ) { - $args['strip_non_ascii'] = true; - } - - if ( true !== $args['perform_text_conversion'] ) { - $args['perform_text_conversion'] = false; - } - - /** - * Hack: nullify the values of `start_id` and `end_id` if we're only requesting ranges. - * - * The endpoint doesn't support nullable values :( - */ - if ( true === $args['only_range_edges'] ) { - if ( 0 === $args['start_id'] ) { - $args['start_id'] = null; - } - - if ( 0 === $args['end_id'] ) { - $args['end_id'] = null; - } - } - - $store = new Replicastore(); - $histogram = $store->checksum_histogram( $args['object_type'], $args['buckets'], $args['start_id'], $args['end_id'], $args['columns'], $args['strip_non_ascii'], $args['shared_salt'], $args['only_range_edges'], $args['detailed_drilldown'], $args['perform_text_conversion'] ); - - return rest_ensure_response( - array( - 'histogram' => $histogram, - 'type' => $store->get_checksum_type(), - ) - ); - } - - /** - * Update Sync health. - * - * @since 1.23.1 - * - * @param \WP_REST_Request $request The request sent to the WP REST API. - * - * @return \WP_REST_Response - */ - public static function sync_health( $request ) { - - switch ( $request->get_param( 'status' ) ) { - case Health::STATUS_IN_SYNC: - case Health::STATUS_OUT_OF_SYNC: - Health::update_status( $request->get_param( 'status' ) ); - break; - default: - return new WP_Error( 'invalid_status', 'Invalid Sync Status Provided.' ); - } - - // re-fetch so we see what's really being stored. - return rest_ensure_response( - array( - 'success' => Health::get_status(), - ) - ); - } - - /** - * Obtain Sync settings. - * - * @since 1.23.1 - * - * @return \WP_REST_Response - */ - public static function get_sync_settings() { - return rest_ensure_response( Settings::get_settings() ); - } - - /** - * Update Sync settings. - * - * @since 1.23.1 - * - * @param \WP_REST_Request $request The request sent to the WP REST API. - * - * @return \WP_REST_Response - */ - public static function update_sync_settings( $request ) { - $args = $request->get_params(); - $sync_settings = Settings::get_settings(); - - foreach ( $args as $key => $value ) { - if ( false !== $value ) { - if ( is_numeric( $value ) ) { - $value = (int) $value; - } - - // special case for sending empty arrays - a string with value 'empty'. - if ( 'empty' === $value ) { - $value = array(); - } - - $sync_settings[ $key ] = $value; - } - } - - Settings::update_settings( $sync_settings ); - - // re-fetch so we see what's really being stored. - return rest_ensure_response( Settings::get_settings() ); - } - - /** - * Retrieve Sync Objects. - * - * @since 1.23.1 - * - * @param \WP_REST_Request $request The request sent to the WP REST API. - * - * @return \WP_REST_Response - */ - public static function get_sync_objects( $request ) { - $args = $request->get_params(); - - $module_name = $args['module_name']; - // Verify valid Sync Module. - $sync_module = Modules::get_module( $module_name ); - if ( ! $sync_module ) { - return new WP_Error( 'invalid_module', 'You specified an invalid sync module' ); - } - - Actions::mark_sync_read_only(); - - $codec = Sender::get_instance()->get_codec(); - Settings::set_is_syncing( true ); - $objects = $codec->encode( $sync_module->get_objects_by_id( $args['object_type'], $args['object_ids'] ) ); - Settings::set_is_syncing( false ); - - return rest_ensure_response( - array( - 'objects' => $objects, - 'codec' => $codec->name(), - ) - ); - } - - /** - * Request Sync processing. - * - * @since 1.23.1 - * - * @param \WP_REST_Request $request The request sent to the WP REST API. - * - * @return \WP_REST_Response - */ - public static function do_sync( $request ) { - - $queue_name = self::validate_queue( $request->get_param( 'queue' ) ); - if ( is_wp_error( $queue_name ) ) { - return $queue_name; - } - - $sender = Sender::get_instance(); - $response = $sender->do_sync_for_queue( new Queue( $queue_name ) ); - - return rest_ensure_response( - array( - 'response' => $response, - ) - ); - } - - /** - * Request sync data from specified queue. - * - * @since 1.23.1 - * - * @param \WP_REST_Request $request The request sent to the WP REST API. - * - * @return \WP_REST_Response - */ - public static function checkout( $request ) { - $args = $request->get_params(); - $queue_name = self::validate_queue( $args['queue'] ); - - if ( is_wp_error( $queue_name ) ) { - return $queue_name; - } - - $number_of_items = $args['number_of_items']; - if ( $number_of_items < 1 || $number_of_items > 100 ) { - return new WP_Error( 'invalid_number_of_items', 'Number of items needs to be an integer that is larger than 0 and less then 100', 400 ); - } - - // REST Sender. - $sender = new REST_Sender(); - - if ( 'immediate' === $queue_name ) { - return rest_ensure_response( $sender->immediate_full_sync_pull() ); - } - - $response = $sender->queue_pull( $queue_name, $number_of_items, $args ); - // Disable sending while pulling. - if ( ! is_wp_error( $response ) ) { - set_transient( Sender::TEMP_SYNC_DISABLE_TRANSIENT_NAME, time(), Sender::TEMP_SYNC_DISABLE_TRANSIENT_EXPIRY ); - } elseif ( 'queue_size' === $response->get_error_code() ) { - // Re-enable sending if the queue is empty. - delete_transient( Sender::TEMP_SYNC_DISABLE_TRANSIENT_NAME ); - } - - return rest_ensure_response( $response ); - } - - /** - * Unlock a Sync queue. - * - * @since 1.23.1 - * - * @param \WP_REST_Request $request The request sent to the WP REST API. - * - * @return \WP_REST_Response - */ - public static function unlock_queue( $request ) { - - $queue_name = $request->get_param( 'queue' ); - - if ( ! in_array( $queue_name, array( 'sync', 'full_sync' ), true ) ) { - return new WP_Error( 'invalid_queue', 'Queue name should be sync or full_sync', 400 ); - } - $queue = new Queue( $queue_name ); - - // False means that there was no lock to delete. - $response = $queue->unlock(); - return rest_ensure_response( - array( - 'success' => $response, - ) - ); - } - - /** - * Checkin Sync actions. - * - * @since 1.23.1 - * - * @param \WP_REST_Request $request The request sent to the WP REST API. - * - * @return \WP_REST_Response - */ - public static function close( $request ) { - - $request_body = $request->get_params(); - $queue_name = self::validate_queue( $request_body['queue'] ); - - if ( is_wp_error( $queue_name ) ) { - return $queue_name; - } - - if ( empty( $request_body['buffer_id'] ) ) { - return new WP_Error( 'missing_buffer_id', 'Please provide a buffer id', 400 ); - } - - if ( ! is_array( $request_body['item_ids'] ) ) { - return new WP_Error( 'missing_item_ids', 'Please provide a list of item ids in the item_ids argument', 400 ); - } - - // Limit to A-Z,a-z,0-9,_,- . - $request_body['buffer_id'] = preg_replace( '/[^A-Za-z0-9\-_\.]/', '', $request_body['buffer_id'] ); - $request_body['item_ids'] = array_filter( array_map( array( 'Automattic\Jetpack\Sync\REST_Endpoints', 'sanitize_item_ids' ), $request_body['item_ids'] ) ); - - $queue = new Queue( $queue_name ); - - $items = $queue->peek_by_id( $request_body['item_ids'] ); - - // Update Full Sync Status if queue is "full_sync". - if ( 'full_sync' === $queue_name ) { - $full_sync_module = Modules::get_module( 'full-sync' ); - '@phan-var Modules\Full_Sync_Immediately|Modules\Full_Sync $full_sync_module'; - $full_sync_module->update_sent_progress_action( $items ); - } - - $buffer = new Queue_Buffer( $request_body['buffer_id'], $request_body['item_ids'] ); - $response = $queue->close( $buffer, $request_body['item_ids'] ); - - // Perform another checkout? - if ( isset( $request_body['continue'] ) && $request_body['continue'] ) { - if ( in_array( $queue_name, array( 'full_sync', 'immediate' ), true ) ) { - // Send Full Sync Actions. - Sender::get_instance()->do_full_sync(); - } elseif ( $queue->has_any_items() ) { - // Send Incremental Sync Actions. - Sender::get_instance()->do_sync(); - } - } - - if ( is_wp_error( $response ) ) { - return $response; - } - - return rest_ensure_response( - array( - 'success' => $response, - 'status' => Actions::get_sync_status(), - ) - ); - } - - /** - * Retrieve range of Object Ids for a specified Sync module. - * - * @since 1.23.1 - * - * @param \WP_REST_Request $request The request sent to the WP REST API. - * - * @return \WP_REST_Response - */ - public static function get_object_id_range( $request ) { - - $module_name = $request->get_param( 'sync_module' ); - $batch_size = $request->get_param( 'batch_size' ); - - if ( ! self::is_valid_sync_module( $module_name ) ) { - return new WP_Error( 'invalid_module', 'This sync module cannot be used to calculate a range.', 400 ); - } - $module = Modules::get_module( $module_name ); - - return rest_ensure_response( - array( - 'ranges' => $module->get_min_max_object_ids_for_batches( $batch_size ), - ) - ); - } - - /** - * This endpoint is used by Sync to spawn a - * dedicated Sync request which will trigger Sync to run. - * - * If Dedicated Sync is enabled, this callback should never run as - * processing of Sync actions will occur earlier and exit. - * - * @see Actions::init - * @see Sender::do_dedicated_sync_and_exit - * - * @since 1.34.0 - * - * @return \WP_REST_Response - */ - public static function spawn_sync() { - nocache_headers(); - - if ( ! Settings::is_dedicated_sync_enabled() ) { - return new WP_Error( - 'dedicated_sync_disabled', - 'Dedicated Sync flow is disabled.', - array( 'status' => 422 ) - ); - } - - return new WP_Error( - 'dedicated_sync_failed', - 'Failed to process Dedicated Sync request', - array( 'status' => 500 ) - ); - } - - /** - * Reset Sync locks. - * - * @since 1.43.0 - * - * @return \WP_REST_Response - */ - public static function reset_locks() { - Actions::reset_sync_locks(); - - return rest_ensure_response( - array( - 'success' => true, - ) - ); - } - - /** - * Verify that request has default permissions to perform sync actions. - * - * @since 1.23.1 - * - * @return bool Whether user has capability 'manage_options' or a blog token is used. - */ - public static function verify_default_permissions() { - if ( current_user_can( 'manage_options' ) || Rest_Authentication::is_signed_with_blog_token() ) { - return true; - } - - $error_msg = esc_html__( - 'You do not have the correct user permissions to perform this action. - Please contact your site admin if you think this is a mistake.', - 'jetpack-sync' - ); - - return new WP_Error( 'invalid_user_permission_sync', $error_msg, array( 'status' => rest_authorization_required_code() ) ); - } - - /** - * Validate Queue name. - * - * @param string $value Queue Name. - * - * @return WP_Error - */ - protected static function validate_queue( $value ) { - if ( ! isset( $value ) ) { - return new WP_Error( 'invalid_queue', 'Queue name is required', 400 ); - } - - if ( ! in_array( $value, array( 'sync', 'full_sync', 'immediate' ), true ) ) { - return new WP_Error( 'invalid_queue', 'Queue name should be sync, full_sync or immediate', 400 ); - } - return $value; - } - - /** - * Validate name is a valid Sync module. - * - * @param string $module_name Name of Sync Module. - * - * @return bool - */ - protected static function is_valid_sync_module( $module_name ) { - return in_array( - $module_name, - array( - 'comments', - 'posts', - 'terms', - 'term_relationships', - 'users', - ), - true - ); - } - - /** - * Sanitize Item Ids. - * - * @param string $item Sync item identifier. - * - * @return string|string[]|null - */ - protected static function sanitize_item_ids( $item ) { - // lets not delete any options that don't start with jpsq_sync- . - if ( ! is_string( $item ) || ! str_starts_with( $item, 'jpsq_' ) ) { - return null; - } - // Limit to A-Z,a-z,0-9,_,-,. . - return preg_replace( '/[^A-Za-z0-9-_.]/', '', $item ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-rest-sender.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-rest-sender.php deleted file mode 100644 index 2221b850..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-rest-sender.php +++ /dev/null @@ -1,144 +0,0 @@ -size() ) { - return new WP_Error( 'queue_size', 'The queue is empty and there is nothing to send', 400 ); - } - - $sender = Sender::get_instance(); - - // try to give ourselves as much time as possible. - set_time_limit( 0 ); - - if ( ! empty( $args['pop'] ) ) { - $buffer = new Queue_Buffer( 'pop', $queue->pop( $number_of_items ) ); - } else { - // let's delete the checkin state. - if ( $args['force'] ) { - $queue->unlock(); - } - $buffer = $this->get_buffer( $queue, $number_of_items ); - } - // Check that the $buffer is not checkout out already. - if ( is_wp_error( $buffer ) ) { - return new WP_Error( 'buffer_open', "We couldn't get the buffer it is currently checked out", 400 ); - } - - if ( ! is_object( $buffer ) ) { - return new WP_Error( 'buffer_non-object', 'Buffer is not an object', 400 ); - } - - $encode = isset( $args['encode'] ) ? $args['encode'] : true; - - Settings::set_is_syncing( true ); - list( $items_to_send, $skipped_items_ids ) = $sender->get_items_to_send( $buffer, $encode ); - Settings::set_is_syncing( false ); - - return array( - 'buffer_id' => $buffer->id, - 'items' => $items_to_send, - 'skipped_items' => $skipped_items_ids, - 'codec' => $encode ? $sender->get_codec()->name() : null, - 'sent_timestamp' => time(), - 'queue_size' => $queue->size(), - ); - } - - /** - * Adds Sync items to local property. - */ - public function jetpack_sync_send_data_listener() { - foreach ( func_get_args()[0] as $key => $item ) { - $this->items[ $key ] = $item; - } - } - - /** - * Check out a buffer of full sync actions. - * - * @return array Sync Actions to be returned to requestor - */ - public function immediate_full_sync_pull() { - // try to give ourselves as much time as possible. - set_time_limit( 0 ); - - $original_send_data_cb = array( 'Automattic\Jetpack\Sync\Actions', 'send_data' ); - $temp_send_data_cb = array( $this, 'jetpack_sync_send_data_listener' ); - - Sender::get_instance()->set_enqueue_wait_time( 0 ); - remove_filter( 'jetpack_sync_send_data', $original_send_data_cb ); - add_filter( 'jetpack_sync_send_data', $temp_send_data_cb, 10, 6 ); - Sender::get_instance()->do_full_sync(); - remove_filter( 'jetpack_sync_send_data', $temp_send_data_cb ); - add_filter( 'jetpack_sync_send_data', $original_send_data_cb, 10, 6 ); - - return array( - 'items' => $this->items, - 'codec' => Sender::get_instance()->get_codec()->name(), - 'sent_timestamp' => time(), - 'status' => Actions::get_sync_status(), - ); - } - - /** - * Checkout items out of the sync queue. - * - * @param Queue $queue Sync Queue. - * @param int $number_of_items Number of items to checkout. - * - * @return WP_Error - */ - protected function get_buffer( $queue, $number_of_items ) { - $start = time(); - $max_duration = 5; // this will try to get the buffer. - - $buffer = $queue->checkout( $number_of_items ); - $duration = time() - $start; - - while ( is_wp_error( $buffer ) && $duration < $max_duration ) { - sleep( 2 ); - $duration = time() - $start; - $buffer = $queue->checkout( $number_of_items ); - } - - if ( false === $buffer ) { - return new WP_Error( 'queue_size', 'The queue is empty and there is nothing to send', 400 ); - } - - return $buffer; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-sender.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-sender.php deleted file mode 100644 index c3924516..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-sender.php +++ /dev/null @@ -1,1034 +0,0 @@ -:( - * - * @access protected - * @static - */ - protected function __construct() { - $this->set_defaults(); - $this->init(); - } - - /** - * Initialize the sender. - * Prepares the current user and initializes all sync modules. - * - * @access private - */ - private function init() { - add_action( 'jetpack_sync_before_send_queue_sync', array( $this, 'maybe_set_user_from_token' ), 1 ); - add_action( 'jetpack_sync_before_send_queue_sync', array( $this, 'maybe_clear_user_from_token' ), 20 ); - add_filter( 'jetpack_xmlrpc_unauthenticated_methods', array( $this, 'register_jetpack_xmlrpc_methods' ) ); - foreach ( Modules::get_modules() as $module ) { - $module->init_before_send(); - } - } - - /** - * Detect if this is a XMLRPC request with a valid signature. - * If so, changes the user to the new one. - * - * @access public - */ - public function maybe_set_user_from_token() { - $connection = new Manager(); - $verified_user = $connection->verify_xml_rpc_signature(); - if ( Constants::is_true( 'XMLRPC_REQUEST' ) && - ! is_wp_error( $verified_user ) - && $verified_user - ) { - $old_user = wp_get_current_user(); - $this->old_user = isset( $old_user->ID ) ? $old_user->ID : 0; - wp_set_current_user( $verified_user['user_id'] ); - } - } - - /** - * If we used to have a previous current user, revert back to it. - * - * @access public - */ - public function maybe_clear_user_from_token() { - if ( isset( $this->old_user ) ) { - wp_set_current_user( $this->old_user ); - } - } - - /** - * Retrieve the next sync time. - * - * Update @since 1.43.2 - * Sometimes when we process Sync requests in Jetpack, the server clock can be a - * bit in the future and this can lock Sync to not send stuff for a while. - * We are introducing an extra check, to make sure to limit the next_sync_time - * to be at most one hour in the future from the current time. - * - * @access public - * - * @param string $queue_name Name of the queue. - * @return float Timestamp of the next sync. - */ - public function get_next_sync_time( $queue_name ) { - $option_name = self::NEXT_SYNC_TIME_OPTION_NAME . '_' . $queue_name; - $next_sync_time = (float) get_option( $option_name, 0 ); - - $is_more_than_one_hour = ( $next_sync_time - microtime( true ) ) >= HOUR_IN_SECONDS; - - if ( $is_more_than_one_hour ) { - delete_option( $option_name ); - $next_sync_time = 0; - } - - return $next_sync_time; - } - - /** - * Set the next sync time. - * - * @access public - * - * @param int $time Timestamp of the next sync. - * @param string $queue_name Name of the queue. - * @return boolean True if update was successful, false otherwise. - */ - public function set_next_sync_time( $time, $queue_name ) { - return update_option( self::NEXT_SYNC_TIME_OPTION_NAME . '_' . $queue_name, $time, true ); - } - - /** - * Trigger a full sync. - * - * @access public - * - * @return boolean|WP_Error True if this sync sending was successful, error object otherwise. - */ - public function do_full_sync() { - $sync_module = Modules::get_module( 'full-sync' ); - '@phan-var Modules\Full_Sync_Immediately|Modules\Full_Sync $sync_module'; - if ( ! $sync_module ) { - return; - } - // Full Sync Disabled. - if ( ! Settings::get_setting( 'full_sync_sender_enabled' ) ) { - return; - } - - // Don't sync if request is marked as read only. - if ( Constants::is_true( 'JETPACK_SYNC_READ_ONLY' ) ) { - return new WP_Error( 'jetpack_sync_read_only' ); - } - - // Sync not started or Sync finished. - $status = $sync_module->get_status(); - if ( false === $status['started'] || ( ! empty( $status['started'] ) && ! empty( $status['finished'] ) ) ) { - return false; - } - - $this->continue_full_sync_enqueue(); - // immediate full sync sends data in continue_full_sync_enqueue. - if ( ! $sync_module instanceof Modules\Full_Sync_Immediately ) { - return $this->do_sync_and_set_delays( $this->full_sync_queue ); - } else { - $status = $sync_module->get_status(); - // Sync not started or Sync finished. - if ( false === $status['started'] || ( ! empty( $status['started'] ) && ! empty( $status['finished'] ) ) ) { - return false; - } else { - return true; - } - } - } - - /** - * Enqueue the next sync items for sending. - * Will not be done if the current request is a WP import one. - * Will be delayed until the next sync time comes. - * - * @access private - */ - private function continue_full_sync_enqueue() { - if ( defined( 'WP_IMPORTING' ) && WP_IMPORTING ) { - return false; - } - - if ( $this->get_next_sync_time( 'full-sync-enqueue' ) > microtime( true ) ) { - return false; - } - - $full_sync_module = Modules::get_module( 'full-sync' ); - '@phan-var Modules\Full_Sync_Immediately|Modules\Full_Sync $full_sync_module'; - $full_sync_module->continue_enqueuing(); - - $this->set_next_sync_time( time() + $this->get_enqueue_wait_time(), 'full-sync-enqueue' ); - } - - /** - * Trigger incremental sync. - * - * @access public - * - * @return boolean|WP_Error True if this sync sending was successful, error object otherwise. - */ - public function do_sync() { - if ( ! Settings::is_dedicated_sync_enabled() ) { - $result = $this->do_sync_and_set_delays( $this->sync_queue ); - } else { - $result = Dedicated_Sender::spawn_sync( $this->sync_queue ); - } - - return $result; - } - - /** - * Trigger incremental sync and early exit on Dedicated Sync request. - * - * @access public - * - * @param bool $do_real_exit If we should exit at the end of the request. We should by default. - * In the context of running this in the REST API, we actually want to return an error. - * - * @return void|WP_Error - */ - public function do_dedicated_sync_and_exit( $do_real_exit = true ) { - nocache_headers(); - - if ( ! Settings::is_dedicated_sync_enabled() ) { - return new WP_Error( 'dedicated_sync_disabled', 'Dedicated Sync flow is disabled.' ); - } - - if ( ! Dedicated_Sender::is_dedicated_sync_request() ) { - return new WP_Error( 'non_dedicated_sync_request', 'Not a Dedicated Sync request.' ); - } - - /** - * Output an `OK` to show that Dedicated Sync is enabled and we can process events. - * This is used to test the feature is working. - * - * @see \Automattic\Jetpack\Sync\Dedicated_Sender::can_spawn_dedicated_sync_request - */ - // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- This is just a constant string used for Validation. - echo Dedicated_Sender::DEDICATED_SYNC_VALIDATION_STRING; - - // Try to disconnect the request as quickly as possible and process things in the background. - $this->fastcgi_finish_request(); - - /** - * Close the PHP session to free up the server threads to handle other requests while we - * send sync data with Dedicated Sync. - * - * When we spawn Dedicated Sync, we send `$_COOKIES` with the request to help out with any - * firewall and/or caching functionality that might prevent us to ping the site directly. - * - * This will cause Dedicated Sync to reuse the visitor's PHP session and lock it until the - * request finishes, which can take anywhere from 1 to 30+ seconds, depending on the server - * `max_execution_time` configuration. - * - * By closing the session we're freeing up the session, so other requests can acquire the - * lock and proceed with their own tasks. - */ - if ( session_status() === PHP_SESSION_ACTIVE ) { - session_write_close(); - } - - // Output not used right now. Try to release dedicated sync lock - Dedicated_Sender::try_release_lock_spawn_request(); - - // Actually try to send Sync events. - $result = $this->do_sync_and_set_delays( $this->sync_queue ); - - // If no errors occurred, re-spawn a dedicated Sync request. - if ( true === $result ) { - Dedicated_Sender::spawn_sync( $this->sync_queue ); - } - - if ( $do_real_exit ) { - exit( 0 ); - } - } - - /** - * Trigger sync for a certain sync queue. - * Responsible for setting next sync time. - * Will not be delayed if the current request is a WP import one. - * Will be delayed until the next sync time comes. - * - * @access public - * - * @param \Automattic\Jetpack\Sync\Queue $queue Queue object. - * - * @return boolean|WP_Error True if this sync sending was successful, error object otherwise. - */ - public function do_sync_and_set_delays( $queue ) { - // Don't sync if importing. - if ( defined( 'WP_IMPORTING' ) && WP_IMPORTING ) { - return new WP_Error( 'is_importing' ); - } - - // Don't sync if request is marked as read only. - if ( Constants::is_true( 'JETPACK_SYNC_READ_ONLY' ) ) { - return new WP_Error( 'jetpack_sync_read_only' ); - } - - if ( ! Settings::is_sender_enabled( $queue->id ) ) { - return new WP_Error( 'sender_disabled_for_queue_' . $queue->id ); - } - - if ( get_transient( self::TEMP_SYNC_DISABLE_TRANSIENT_NAME ) ) { - return new WP_Error( 'sender_temporarily_disabled_while_pulling' ); - } - - // Return early if we've gotten a retry-after header response. - $retry_time = get_option( Actions::RETRY_AFTER_PREFIX . $queue->id ); - if ( $retry_time ) { - // If expired update to false but don't send. Send will occurr in new request to avoid race conditions. - if ( microtime( true ) > $retry_time ) { - update_option( Actions::RETRY_AFTER_PREFIX . $queue->id, false, false ); - } - return new WP_Error( 'retry_after' ); - } - - // Don't sync if we are throttled. - if ( $this->get_next_sync_time( $queue->id ) > microtime( true ) ) { - return new WP_Error( 'sync_throttled' ); - } - - $start_time = microtime( true ); - - Settings::set_is_syncing( true ); - - $sync_result = $this->do_sync_for_queue( $queue ); - - Settings::set_is_syncing( false ); - - $exceeded_sync_wait_threshold = ( microtime( true ) - $start_time ) > (float) $this->get_sync_wait_threshold(); - - if ( is_wp_error( $sync_result ) ) { - if ( 'unclosed_buffer' === $sync_result->get_error_code() ) { - $this->set_next_sync_time( time() + self::QUEUE_LOCKED_SYNC_DELAY, $queue->id ); - } - if ( 'wpcom_error' === $sync_result->get_error_code() ) { - $this->set_next_sync_time( time() + self::WPCOM_ERROR_SYNC_DELAY, $queue->id ); - } - } elseif ( $exceeded_sync_wait_threshold ) { - // If we actually sent data and it took a while, wait before sending again. - $this->set_next_sync_time( time() + $this->get_sync_wait_time(), $queue->id ); - } - - return $sync_result; - } - - /** - * Retrieve the next sync items to send. - * - * @access public - * - * @param (array|\Automattic\Jetpack\Sync\Queue_Buffer) $buffer_or_items Queue buffer or array of objects. - * @param boolean $encode Whether to encode the items. - * @return array Sync items to send. - */ - public function get_items_to_send( $buffer_or_items, $encode = true ) { - // Track how long we've been processing so we can avoid request timeouts. - $start_time = microtime( true ); - $upload_size = 0; - $items_to_send = array(); - $items = is_array( $buffer_or_items ) ? $buffer_or_items : $buffer_or_items->get_items(); - if ( ! is_array( $items ) ) { - $items = array(); - } - - // Set up current screen to avoid errors rendering content. - require_once ABSPATH . 'wp-admin/includes/class-wp-screen.php'; - require_once ABSPATH . 'wp-admin/includes/screen.php'; - set_current_screen( 'sync' ); - $skipped_items_ids = array(); - /** - * We estimate the total encoded size as we go by encoding each item individually. - * This is expensive, but the only way to really know :/ - */ - foreach ( $items as $key => $item ) { - if ( ! is_array( $item ) ) { - $skipped_items_ids[] = $key; - continue; - } - - // Suspending cache addition help prevent overloading in memory cache of large sites. - wp_suspend_cache_addition( true ); - /** - * Modify the data within an action before it is serialized and sent to the server - * For example, during full sync this expands Post ID's into full Post objects, - * so that we don't have to serialize the whole object into the queue. - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * - * @param array The action parameters - * @param int The ID of the user who triggered the action - */ - $item[1] = apply_filters( 'jetpack_sync_before_send_' . $item[0], $item[1], $item[2] ); - wp_suspend_cache_addition( false ); - // Serialization usage can lead to empty, null or false action_name. Lets skip as there is no information to send. - if ( empty( $item[0] ) || false === $item[1] ) { - $skipped_items_ids[] = $key; - continue; - } - $encoded_item = $this->codec->encode( $item ); - $upload_size += strlen( $encoded_item ); - if ( $upload_size > $this->upload_max_bytes && array() !== $items_to_send ) { - break; - } - $items_to_send[ $key ] = $encode ? $encoded_item : $item; - if ( microtime( true ) - $start_time > $this->max_dequeue_time ) { - break; - } - } - - return array( $items_to_send, $skipped_items_ids, $items, microtime( true ) - $start_time ); - } - - /** - * If supported, flush all response data to the client and finish the request. - * This allows for time consuming tasks to be performed without leaving the connection open. - * - * @access private - */ - private function fastcgi_finish_request() { - if ( function_exists( 'fastcgi_finish_request' ) ) { - fastcgi_finish_request(); - } - } - - /** - * Perform sync for a certain sync queue. - * - * @access public - * - * @param \Automattic\Jetpack\Sync\Queue $queue Queue object. - * - * @return boolean|WP_Error True if this sync sending was successful, error object otherwise. - */ - public function do_sync_for_queue( $queue ) { - do_action( 'jetpack_sync_before_send_queue_' . $queue->id ); - if ( $queue->size() === 0 ) { - return new WP_Error( 'empty_queue_' . $queue->id ); - } - - /** - * Now that we're sure we are about to sync, try to ignore user abort - * so we can avoid getting into a bad state. - */ - // https://plugins.trac.wordpress.org/ticket/2041 - if ( function_exists( 'ignore_user_abort' ) ) { - ignore_user_abort( true ); - } - - /* Don't make the request block till we finish, if possible. */ - if ( Constants::is_true( 'REST_REQUEST' ) || Constants::is_true( 'XMLRPC_REQUEST' ) ) { - $this->fastcgi_finish_request(); - } - - $checkout_start_time = microtime( true ); - - $buffer = $queue->checkout_with_memory_limit( $this->dequeue_max_bytes, $this->upload_max_rows ); - - if ( ! $buffer ) { - // Buffer has no items. - return new WP_Error( 'empty_buffer' ); - } - - if ( is_wp_error( $buffer ) ) { - return $buffer; - } - - $checkout_duration = microtime( true ) - $checkout_start_time; - - list( $items_to_send, $skipped_items_ids, $items, $preprocess_duration ) = $this->get_items_to_send( $buffer, true ); - if ( ! empty( $items_to_send ) ) { - /** - * Fires when data is ready to send to the server. - * Return false or WP_Error to abort the sync (e.g. if there's an error) - * The items will be automatically re-sent later - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * - * @param array $data The action buffer - * @param string $codec The codec name used to encode the data - * @param double $time The current time - * @param string $queue The queue used to send ('sync' or 'full_sync') - * @param float $checkout_duration The duration of the checkout operation. - * @param float $preprocess_duration The duration of the pre-process operation. - * @param int $queue_size The size of the sync queue at the time of processing. - */ - Settings::set_is_sending( true ); - $processed_item_ids = apply_filters( 'jetpack_sync_send_data', $items_to_send, $this->codec->name(), microtime( true ), $queue->id, $checkout_duration, $preprocess_duration, $queue->size(), $buffer->id ); - Settings::set_is_sending( false ); - } else { - $processed_item_ids = $skipped_items_ids; - $skipped_items_ids = array(); - } - - if ( 'non-blocking' !== $processed_item_ids ) { - if ( ! $processed_item_ids || is_wp_error( $processed_item_ids ) ) { - $checked_in_item_ids = $queue->checkin( $buffer ); - if ( is_wp_error( $checked_in_item_ids ) ) { - // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log - error_log( 'Error checking in buffer: ' . $checked_in_item_ids->get_error_message() ); - $queue->force_checkin(); - } - if ( is_wp_error( $processed_item_ids ) ) { - return new WP_Error( 'wpcom_error', $processed_item_ids->get_error_code() ); - } - - // Returning a wpcom_error is a sign to the caller that we should wait a while before syncing again. - return new WP_Error( 'wpcom_error', 'jetpack_sync_send_data_false' ); - } else { - // Detect if the last item ID was an error. - $had_wp_error = is_wp_error( end( $processed_item_ids ) ); - $wp_error = $had_wp_error ? array_pop( $processed_item_ids ) : null; - // Also checkin any items that were skipped. - if ( array() !== $skipped_items_ids ) { - $processed_item_ids = array_merge( $processed_item_ids, $skipped_items_ids ); - } - $processed_items = array_intersect_key( $items, array_flip( $processed_item_ids ) ); - /** - * Allows us to keep track of all the actions that have been sent. - * Allows us to calculate the progress of specific actions. - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * - * @param array $processed_actions The actions that we send successfully. - */ - do_action( 'jetpack_sync_processed_actions', $processed_items ); - $queue->close( $buffer, $processed_item_ids ); - // Returning a WP_Error is a sign to the caller that we should wait a while before syncing again. - if ( $had_wp_error ) { - return new WP_Error( 'wpcom_error', $wp_error->get_error_code() ); - } - } - } - - return true; - } - - /** - * Immediately sends a single item without firing or enqueuing it - * - * @param string $action_name The action. - * @param array $data The data associated with the action. - * @param string $key The key to use for the action. - * - * @return array Items processed. TODO: this doesn't make much sense anymore, it should probably be just a bool. - */ - public function send_action( $action_name, $data = null, $key = null ) { - if ( ! Settings::is_sender_enabled( 'full_sync' ) ) { - return array(); - } - - // Compose the data to be sent. - $action_to_send = $this->create_action_to_send( $action_name, $data, $key ); - - list( $items_to_send, $skipped_items_ids, $items, $preprocess_duration ) = $this->get_items_to_send( $action_to_send, true ); // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - Settings::set_is_sending( true ); - $processed_item_ids = apply_filters( 'jetpack_sync_send_data', $items_to_send, $this->get_codec()->name(), microtime( true ), 'immediate-send', 0, $preprocess_duration ); - Settings::set_is_sending( false ); - - /** - * Allows us to keep track of all the actions that have been sent. - * Allows us to calculate the progress of specific actions. - * - * @param array $processed_actions The actions that we send successfully. - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - */ - do_action( 'jetpack_sync_processed_actions', $action_to_send ); - - return $processed_item_ids; - } - - /** - * Create an synthetic action for direct sending to WPCOM during full sync (for example) - * - * @access private - * - * @param string $action_name The action. - * @param array $data The data associated with the action. - * @param string $key The key to use for the action. - * @return array An array of synthetic sync actions keyed by current microtime(true) - */ - private function create_action_to_send( $action_name, $data, $key = null ) { - return array( - $key ?? (string) microtime( true ) => array( - $action_name, - $data, - get_current_user_id(), - microtime( true ), - Settings::is_importing(), - ), - ); - } - - /** - * Returns any object that is able to be synced. - * - * @access public - * - * @param array $args the synchronized object parameters. - * @return string Encoded sync object. - */ - public function sync_object( $args ) { - // For example: posts, post, 5. - list( $module_name, $object_type, $id ) = $args; - - $sync_module = Modules::get_module( $module_name ); - $codec = $this->get_codec(); - - return $codec->encode( $sync_module->get_object_by_id( $object_type, $id ) ); - } - - /** - * Register additional sync XML-RPC methods available to Jetpack for authenticated users. - * - * @access public - * @since 1.6.3 - * @since-jetpack 7.8.0 - * - * @param array $jetpack_methods XML-RPC methods available to the Jetpack Server. - * @return array Filtered XML-RPC methods. - */ - public function register_jetpack_xmlrpc_methods( $jetpack_methods ) { - $jetpack_methods['jetpack.syncObject'] = array( $this, 'sync_object' ); - return $jetpack_methods; - } - - /** - * Get the incremental sync queue object. - * - * @access public - * - * @return \Automattic\Jetpack\Sync\Queue Queue object. - */ - public function get_sync_queue() { - return $this->sync_queue; - } - - /** - * Get the full sync queue object. - * - * @access public - * - * @return \Automattic\Jetpack\Sync\Queue Queue object. - */ - public function get_full_sync_queue() { - return $this->full_sync_queue; - } - - /** - * Get the codec object. - * - * @access public - * - * @return \Automattic\Jetpack\Sync\Codec_Interface Codec object. - */ - public function get_codec() { - return $this->codec; - } - - /** - * Determine the codec object. - * Use gzip deflate if supported. - * - * @access public - */ - public function set_codec() { - if ( function_exists( 'gzinflate' ) ) { - $this->codec = new JSON_Deflate_Array_Codec(); - } else { - $this->codec = new Simple_Codec(); - } - } - - /** - * Compute and send all the checksums. - * - * @access public - */ - public function send_checksum() { - $store = new Replicastore(); - do_action( 'jetpack_sync_checksum', $store->checksum_all() ); - } - - /** - * Reset the incremental sync queue. - * - * @access public - */ - public function reset_sync_queue() { - $this->sync_queue->reset(); - } - - /** - * Reset the full sync queue. - * - * @access public - */ - public function reset_full_sync_queue() { - $this->full_sync_queue->reset(); - } - - /** - * Set the maximum bytes to checkout without exceeding the memory limit. - * - * @access public - * - * @param int $size Maximum bytes to checkout. - */ - public function set_dequeue_max_bytes( $size ) { - $this->dequeue_max_bytes = $size; - } - - /** - * Set the maximum bytes in a single encoded item. - * - * @access public - * - * @param int $max_bytes Maximum bytes in a single encoded item. - */ - public function set_upload_max_bytes( $max_bytes ) { - $this->upload_max_bytes = $max_bytes; - } - - /** - * Set the maximum number of sync items in a single action. - * - * @access public - * - * @param int $max_rows Maximum number of sync items. - */ - public function set_upload_max_rows( $max_rows ) { - $this->upload_max_rows = $max_rows; - } - - /** - * Set the sync wait time (in seconds). - * - * @access public - * - * @param int $seconds Sync wait time. - */ - public function set_sync_wait_time( $seconds ) { - $this->sync_wait_time = $seconds; - } - - /** - * Get current sync wait time (in seconds). - * - * @access public - * - * @return int Sync wait time. - */ - public function get_sync_wait_time() { - return $this->sync_wait_time; - } - - /** - * Set the enqueue wait time (in seconds). - * - * @access public - * - * @param int $seconds Enqueue wait time. - */ - public function set_enqueue_wait_time( $seconds ) { - $this->enqueue_wait_time = $seconds; - } - - /** - * Get current enqueue wait time (in seconds). - * - * @access public - * - * @return int Enqueue wait time. - */ - public function get_enqueue_wait_time() { - return $this->enqueue_wait_time; - } - - /** - * Set the sync wait threshold (in seconds). - * - * @access public - * - * @param int $seconds Sync wait threshold. - */ - public function set_sync_wait_threshold( $seconds ) { - $this->sync_wait_threshold = $seconds; - } - - /** - * Get current sync wait threshold (in seconds). - * - * @access public - * - * @return int Sync wait threshold. - */ - public function get_sync_wait_threshold() { - return $this->sync_wait_threshold; - } - - /** - * Set the maximum time for perfirming a checkout of items from the queue (in seconds). - * - * @access public - * - * @param int $seconds Maximum dequeue time. - */ - public function set_max_dequeue_time( $seconds ) { - $this->max_dequeue_time = $seconds; - } - - /** - * Initialize the sync queues, codec and set the default settings. - * - * @access public - */ - public function set_defaults() { - $this->sync_queue = new Queue( 'sync' ); - $this->full_sync_queue = new Queue( 'full_sync' ); - $this->set_codec(); - - // Saved settings. - Settings::set_importing( null ); - $settings = Settings::get_settings(); - $this->set_dequeue_max_bytes( $settings['dequeue_max_bytes'] ); - $this->set_upload_max_bytes( $settings['upload_max_bytes'] ); - $this->set_upload_max_rows( $settings['upload_max_rows'] ); - $this->set_sync_wait_time( $settings['sync_wait_time'] ); - $this->set_enqueue_wait_time( $settings['enqueue_wait_time'] ); - $this->set_sync_wait_threshold( $settings['sync_wait_threshold'] ); - $this->set_max_dequeue_time( Defaults::get_max_sync_execution_time() ); - } - - /** - * Reset sync queues, modules and settings. - * - * @access public - */ - public function reset_data() { - $this->reset_sync_queue(); - $this->reset_full_sync_queue(); - - foreach ( Modules::get_modules() as $module ) { - $module->reset_data(); - } - // Reset Sync locks without unlocking queues since we already reset those. - Actions::reset_sync_locks( false ); - - Settings::reset_data(); - } - - /** - * Perform cleanup at the event of plugin uninstallation. - * - * @access public - */ - public function uninstall() { - // Lets delete all the other fun stuff like transient and option and the sync queue. - $this->reset_data(); - - // Delete the full sync status. - delete_option( 'jetpack_full_sync_status' ); - - // Clear the sync cron. - wp_clear_scheduled_hook( 'jetpack_sync_cron' ); - wp_clear_scheduled_hook( 'jetpack_sync_full_cron' ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-server.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-server.php deleted file mode 100644 index d0a0bb3a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-server.php +++ /dev/null @@ -1,195 +0,0 @@ -:( - * - * @access public - */ - public function __construct() { - $this->codec = new JSON_Deflate_Array_Codec(); - } - - /** - * Set the codec instance. - * - * @access public - * - * @param Automattic\Jetpack\Sync\Codec_Interface $codec Codec instance. - */ - public function set_codec( Codec_Interface $codec ) { - $this->codec = $codec; - } - - /** - * Attempt to lock the request when the server receives concurrent requests from the same blog. - * - * @access public - * - * @param int $blog_id ID of the blog. - * @param int $expiry Blog lock transient lifetime. - * @return boolean True if succeeded, false otherwise. - */ - public function attempt_request_lock( $blog_id, $expiry = self::BLOG_LOCK_TRANSIENT_EXPIRY ) { - $transient_name = $this->get_concurrent_request_transient_name( $blog_id ); - $locked_time = get_site_transient( $transient_name ); - if ( $locked_time ) { - return false; - } - set_site_transient( $transient_name, microtime( true ), $expiry ); - - return true; - } - - /** - * Retrieve the blog lock transient name for a particular blog. - * - * @access public - * - * @param int $blog_id ID of the blog. - * @return string Name of the blog lock transient. - */ - private function get_concurrent_request_transient_name( $blog_id ) { - return self::BLOG_LOCK_TRANSIENT_PREFIX . $blog_id; - } - - /** - * Remove the request lock from a particular blog ID. - * - * @access public - * - * @param int $blog_id ID of the blog. - */ - public function remove_request_lock( $blog_id ) { - delete_site_transient( $this->get_concurrent_request_transient_name( $blog_id ) ); - } - - /** - * Receive and process sync events. - * - * @access public - * - * @param array $data Sync events. - * @param object $token The auth token used to invoke the API. - * @param int $sent_timestamp Timestamp (in seconds) when the actions were transmitted. - * @param string $queue_id ID of the queue from which the event was sent (`sync` or `full_sync`). - * @return array Processed sync events. - */ - public function receive( $data, $token = null, $sent_timestamp = null, $queue_id = null ) { - $start_time = microtime( true ); - if ( ! is_array( $data ) ) { - return new WP_Error( 'action_decoder_error', 'Events must be an array' ); - } - - if ( $token && ! $this->attempt_request_lock( $token->blog_id ) ) { - /** - * Fires when the server receives two concurrent requests from the same blog - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * - * @param token The token object of the misbehaving site - */ - do_action( 'jetpack_sync_multi_request_fail', $token ); - - return new WP_Error( 'concurrent_request_error', 'There is another request running for the same blog ID' ); - } - - $events = wp_unslash( array_map( array( $this->codec, 'decode' ), $data ) ); - $events_processed = array(); - - /** - * Fires when an array of actions are received from a remote Jetpack site - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * - * @param array Array of actions received from the remote site - */ - do_action( 'jetpack_sync_remote_actions', $events, $token ); - - foreach ( $events as $key => $event ) { - list( $action_name, $args, $user_id, $timestamp, $silent ) = $event; - - /** - * Fires when an action is received from a remote Jetpack site - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * - * @param string $action_name The name of the action executed on the remote site - * @param array $args The arguments passed to the action - * @param int $user_id The external_user_id who did the action - * @param bool $silent Whether the item was created via import - * @param double $timestamp Timestamp (in seconds) when the action occurred - * @param double $sent_timestamp Timestamp (in seconds) when the action was transmitted - * @param string $queue_id ID of the queue from which the event was sent (sync or full_sync) - * @param array $token The auth token used to invoke the API - */ - do_action( 'jetpack_sync_remote_action', $action_name, $args, $user_id, $silent, $timestamp, $sent_timestamp, $queue_id, $token ); - - $events_processed[] = $key; - - if ( microtime( true ) - $start_time > self::MAX_TIME_PER_REQUEST_IN_SECONDS ) { - break; - } - } - - if ( $token ) { - $this->remove_request_lock( $token->blog_id ); - } - - return $events_processed; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-settings.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-settings.php deleted file mode 100644 index f248cb8b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-settings.php +++ /dev/null @@ -1,735 +0,0 @@ - true, - 'upload_max_bytes' => true, - 'upload_max_rows' => true, - 'sync_wait_time' => true, - 'sync_wait_threshold' => true, - 'enqueue_wait_time' => true, - 'max_queue_size' => true, - 'max_queue_lag' => true, - 'queue_max_writes_sec' => true, - 'post_types_blacklist' => true, - 'taxonomies_blacklist' => true, - 'disable' => true, - 'network_disable' => true, - 'render_filtered_content' => true, - 'post_meta_whitelist' => true, - 'comment_meta_whitelist' => true, - 'max_enqueue_full_sync' => true, - 'max_queue_size_full_sync' => true, - 'sync_via_cron' => true, - 'cron_sync_time_limit' => true, - 'known_importers' => true, - 'term_relationships_full_sync_item_size' => true, - 'sync_sender_enabled' => true, - 'full_sync_sender_enabled' => true, - 'full_sync_send_duration' => true, - 'full_sync_limits' => true, - 'checksum_disable' => true, - 'dedicated_sync_enabled' => true, - 'custom_queue_table_enabled' => true, - 'wpcom_rest_api_enabled' => true, - ); - - /** - * Whether WordPress is currently running an import. - * - * @access public - * @static - * - * @var null|boolean - */ - public static $is_importing; - - /** - * Whether WordPress is currently running a WP cron request. - * - * @access public - * @static - * - * @var null|boolean - */ - public static $is_doing_cron; - - /** - * Whether we're currently syncing. - * - * @access public - * @static - * - * @var null|boolean - */ - public static $is_syncing; - - /** - * Whether we're currently sending sync items. - * - * @access public - * @static - * - * @var null|boolean - */ - public static $is_sending; - - /** - * Retrieve all settings with their current values. - * - * @access public - * @static - * - * @return array All current settings. - */ - public static function get_settings() { - $settings = array(); - foreach ( array_keys( self::$valid_settings ) as $setting ) { - $settings[ $setting ] = static::get_setting( $setting ); - } - - return $settings; - } - - /** - * Fetches the setting. It saves it if the setting doesn't exist, so that it gets - * autoloaded on page load rather than re-queried every time. - * - * @access public - * @static - * - * @param string $setting The setting name. - * @return mixed The setting value. - */ - public static function get_setting( $setting ) { - if ( ! isset( self::$valid_settings[ $setting ] ) ) { - return false; - } - - if ( self::is_network_setting( $setting ) ) { - if ( is_multisite() ) { - $value = get_site_option( self::SETTINGS_OPTION_PREFIX . $setting ); - } else { - // On single sites just return the default setting. - return Defaults::get_default_setting( $setting ); - } - } else { - $value = get_option( self::SETTINGS_OPTION_PREFIX . $setting ); - } - - if ( false === $value ) { // No default value is set. - $value = Defaults::get_default_setting( $setting ); - if ( self::is_network_setting( $setting ) ) { - update_site_option( self::SETTINGS_OPTION_PREFIX . $setting, $value ); - } else { - // We set one so that it gets autoloaded. - update_option( self::SETTINGS_OPTION_PREFIX . $setting, $value, true ); - } - } - - if ( is_numeric( $value ) ) { - $value = (int) $value; - } - $default_array_value = null; - switch ( $setting ) { - case 'post_types_blacklist': - $default_array_value = Defaults::$blacklisted_post_types; - break; - case 'taxonomies_blacklist': - $default_array_value = Defaults::$blacklisted_taxonomies; - break; - case 'post_meta_whitelist': - $default_array_value = Defaults::get_post_meta_whitelist(); - break; - case 'comment_meta_whitelist': - $default_array_value = Defaults::get_comment_meta_whitelist(); - break; - case 'known_importers': - $default_array_value = Defaults::get_known_importers(); - break; - } - - if ( $default_array_value ) { - if ( is_array( $value ) ) { - $value = array_unique( array_merge( $value, $default_array_value ) ); - } else { - $value = $default_array_value; - } - } - - return $value; - } - - /** - * Change multiple settings in the same time. - * - * @access public - * @static - * - * @param array $new_settings The new settings. - */ - public static function update_settings( $new_settings ) { - $validated_settings = array_intersect_key( $new_settings, self::$valid_settings ); - foreach ( $validated_settings as $setting => $value ) { - - /** - * Custom table migration logic. - * - * This needs to happen before the option is updated, to avoid race conditions where we update the option, - * but haven't yet created the table or can't create it. - * - * On high-traffic sites this can lead to Sync trying to write in a non-existent table. - * - * So to avoid this, we're going to first try to initialize everything and then update the option. - */ - if ( 'custom_queue_table_enabled' === $setting ) { - // Need to check the current value in the database to make sure we're not doing anything weird. - $old_value = get_option( self::SETTINGS_OPTION_PREFIX . $setting, null ); - - if ( ! $old_value && $value ) { - /** - * The custom table has been enabled. - * - * - Initialize the custom table - * - Migrate the data - * - * If something fails, migrate back to the options table and clean up everything about the custom table. - */ - $init_result = Queue_Storage_Table::initialize_custom_sync_table(); - - /** - * Check if there was a problem when initializing the table. - */ - if ( is_wp_error( $init_result ) ) { - /** - * Unable to initialize the table properly. Set the value to `false` as we can't enable it. - */ - $value = false; - - /** - * Send error to WPCOM, so we can track and take an appropriate action. - */ - $data = array( - 'timestamp' => microtime( true ), - 'error_code' => $init_result->get_error_code(), - 'response_body' => $init_result->get_error_message(), - ); - - $sender = Sender::get_instance(); - $sender->send_action( 'jetpack_sync_storage_error_custom_init', $data ); - - } elseif ( ! Queue_Storage_Table::migrate_from_options_table_to_custom_table() ) { - /** - * If the migration fails, do a reverse migration and set the value to `false` as we can't - * safely enable the table. - */ - Queue_Storage_Table::migrate_from_custom_table_to_options_table(); - - // Set $value to `false` as we couldn't do the migration, and we can't continue enabling the table. - $value = false; - - /** - * Send error to WPCOM, so we can track and take an appropriate action. - */ - $data = array( - 'timestamp' => microtime( true ), - // TODO: Maybe add more details here for the migration, i.e. how many items where in the queue? - ); - - $sender = Sender::get_instance(); - $sender->send_action( 'jetpack_sync_storage_error_custom_migrate', $data ); - } - } elseif ( $old_value && ! $value ) { - if ( ! get_transient( Queue_Storage_Table::CUSTOM_QUEUE_TABLE_DISABLE_WPDB_ERROR_NOT_EXIST_FLAG ) ) { - /** - * The custom table has been disabled, migrate what we can from the custom table to the options table unless - * the custom table doesn't exist in the DB. - */ - Queue_Storage_Table::migrate_from_custom_table_to_options_table(); - } - } - } - - /** - * Regular option update and handling - */ - if ( self::is_network_setting( $setting ) ) { - if ( is_multisite() && is_main_site() ) { - $updated = update_site_option( self::SETTINGS_OPTION_PREFIX . $setting, $value ); - } - } else { - $updated = update_option( self::SETTINGS_OPTION_PREFIX . $setting, $value, true ); - } - - // If we set the disabled option to true, clear the queues. - if ( ( 'disable' === $setting || 'network_disable' === $setting ) && (bool) $value ) { - $listener = Listener::get_instance(); - $listener->get_sync_queue()->reset(); - $listener->get_full_sync_queue()->reset(); - } - - // Do not enable Dedicated Sync if we cannot spawn a Dedicated Sync request. - if ( 'dedicated_sync_enabled' === $setting && $updated && (bool) $value ) { - if ( ! Dedicated_Sender::can_spawn_dedicated_sync_request() ) { - update_option( self::SETTINGS_OPTION_PREFIX . $setting, 0, true ); - } - } - - // Do not enable wpcom rest api if we cannot send a test request. - - if ( 'wpcom_rest_api_enabled' === $setting && $updated && (bool) $value ) { - $sender = Sender::get_instance(); - $data = array( - 'timestamp' => microtime( true ), - ); - $items = $sender->send_action( 'jetpack_sync_wpcom_rest_api_enable_test', $data ); - // If we can't send a test request, disable the setting and send action tolog the error. - if ( is_wp_error( $items ) ) { - update_option( self::SETTINGS_OPTION_PREFIX . $setting, 0, true ); - $data = array( - 'timestamp' => microtime( true ), - 'response_code' => $items->get_error_code(), - 'response_body' => $items->get_error_message() ?? '', - ); - $sender->send_action( 'jetpack_sync_wpcom_rest_api_enable_error', $data ); - } - } - } - } - - /** - * Whether the specified setting is a network setting. - * - * @access public - * @static - * - * @param string $setting Setting name. - * @return boolean Whether the setting is a network setting. - */ - public static function is_network_setting( $setting ) { - return str_starts_with( $setting, 'network_' ); - } - - /** - * Returns escaped SQL for blacklisted post types. - * Can be injected directly into a WHERE clause. - * - * @access public - * @static - * - * @return string SQL WHERE clause. - */ - public static function get_blacklisted_post_types_sql() { - return 'post_type NOT IN (\'' . implode( '\', \'', array_map( 'esc_sql', static::get_setting( 'post_types_blacklist' ) ) ) . '\')'; - } - - /** - * Returns escaped values for disallowed post types. - * - * @access public - * @static - * - * @return array Post type filter values - */ - public static function get_disallowed_post_types_structured() { - return array( - 'post_type' => array( - 'operator' => 'NOT IN', - 'values' => array_map( 'esc_sql', static::get_setting( 'post_types_blacklist' ) ), - ), - ); - } - - /** - * Returns escaped SQL for blacklisted taxonomies. - * Can be injected directly into a WHERE clause. - * - * @access public - * @static - * - * @return string SQL WHERE clause. - */ - public static function get_blacklisted_taxonomies_sql() { - return "taxonomy NOT IN ('" . implode( "', '", array_map( 'esc_sql', static::get_setting( 'taxonomies_blacklist' ) ) ) . "')"; - } - - /** - * Returns escaped SQL for whitelisted taxonomies. - * Can be injected directly into a WHERE clause. - * - * @access public - * @static - * - * @return string SQL WHERE clause. - */ - public static function get_whitelisted_taxonomies_sql() { - global $wp_taxonomies; - - $allowed_taxonomies = array_keys( $wp_taxonomies ); - $allowed_taxonomies = array_diff( $allowed_taxonomies, static::get_setting( 'taxonomies_blacklist' ) ); - - return "taxonomy IN ('" . implode( "', '", array_map( 'esc_sql', $allowed_taxonomies ) ) . "')"; - } - - /** - * Returns escaped SQL for blacklisted post meta. - * Can be injected directly into a WHERE clause. - * - * @access public - * @static - * - * @return string SQL WHERE clause. - */ - public static function get_whitelisted_post_meta_sql() { - return 'meta_key IN (\'' . implode( '\', \'', array_map( 'esc_sql', static::get_setting( 'post_meta_whitelist' ) ) ) . '\')'; - } - - /** - * Returns escaped SQL for allowed post meta keys. - * - * @access public - * @static - * - * @return array Meta keys filter values - */ - public static function get_allowed_post_meta_structured() { - return array( - 'meta_key' => array( - 'operator' => 'IN', - 'values' => array_map( 'esc_sql', static::get_setting( 'post_meta_whitelist' ) ), - ), - ); - } - - /** - * Returns structured SQL clause for blacklisted taxonomies. - * - * @access public - * @static - * - * @return array taxonomies filter values - */ - public static function get_blacklisted_taxonomies_structured() { - return array( - 'taxonomy' => array( - 'operator' => 'NOT IN', - 'values' => array_map( 'esc_sql', static::get_setting( 'taxonomies_blacklist' ) ), - ), - ); - } - - /** - * Returns structured SQL clause for allowed taxonomies. - * - * @access public - * @static - * - * @return array taxonomies filter values - */ - public static function get_allowed_taxonomies_structured() { - global $wp_taxonomies; - - $allowed_taxonomies = array_keys( $wp_taxonomies ); - $allowed_taxonomies = array_diff( $allowed_taxonomies, static::get_setting( 'taxonomies_blacklist' ) ); - return array( - 'taxonomy' => array( - 'operator' => 'IN', - 'values' => array_map( 'esc_sql', $allowed_taxonomies ), - ), - ); - } - - /** - * Returns escaped SQL for blacklisted comment meta. - * Can be injected directly into a WHERE clause. - * - * @access public - * @static - * - * @return string SQL WHERE clause. - */ - public static function get_whitelisted_comment_meta_sql() { - return 'meta_key IN (\'' . implode( '\', \'', array_map( 'esc_sql', static::get_setting( 'comment_meta_whitelist' ) ) ) . '\')'; - } - - /** - * Returns SQL-escaped values for allowed post meta keys. - * - * @access public - * @static - * - * @return array Meta keys filter values - */ - public static function get_allowed_comment_meta_structured() { - return array( - 'meta_key' => array( - 'operator' => 'IN', - 'values' => array_map( 'esc_sql', static::get_setting( 'comment_meta_whitelist' ) ), - ), - ); - } - - /** - * Returns SQL-escaped values for allowed order_item meta keys. - * - * @access public - * @static - * - * @return array Meta keys filter values - */ - public static function get_allowed_order_itemmeta_structured() { - // Make sure that we only try to add the properties when the class exists. - if ( ! class_exists( '\Automattic\Jetpack\Sync\Modules\WooCommerce' ) ) { - return array(); - } - - $values = \Automattic\Jetpack\Sync\Modules\WooCommerce::$order_item_meta_whitelist; - - return array( - 'meta_key' => array( - 'operator' => 'IN', - 'values' => array_map( 'esc_sql', $values ), - ), - ); - } - - /** - * Returns escaped SQL for comments, excluding any spam comments. - * Can be injected directly into a WHERE clause. - * - * @access public - * @static - * - * @return string SQL WHERE clause. - */ - public static function get_comments_filter_sql() { - return "comment_approved <> 'spam'"; - } - - /** - * Delete any settings options and clean up the current settings state. - * - * @access public - * @static - */ - public static function reset_data() { - $valid_settings = self::$valid_settings; - foreach ( $valid_settings as $option => $value ) { - delete_option( self::SETTINGS_OPTION_PREFIX . $option ); - } - self::set_importing( null ); - self::set_doing_cron( null ); - self::set_is_syncing( null ); - self::set_is_sending( null ); - } - - /** - * Set the importing state. - * - * @access public - * @static - * - * @param boolean $is_importing Whether WordPress is currently importing. - */ - public static function set_importing( $is_importing ) { - // Set to NULL to revert to WP_IMPORTING, the standard behavior. - self::$is_importing = $is_importing; - } - - /** - * Whether WordPress is currently importing. - * - * @access public - * @static - * - * @return boolean Whether WordPress is currently importing. - */ - public static function is_importing() { - if ( self::$is_importing !== null ) { - return self::$is_importing; - } - - return defined( 'WP_IMPORTING' ) && WP_IMPORTING; - } - - /** - * Whether sync is enabled. - * - * @access public - * @static - * - * @return boolean Whether sync is enabled. - */ - public static function is_sync_enabled() { - return ! ( static::get_setting( 'disable' ) || static::get_setting( 'network_disable' ) ); - } - - /** - * Set the WP cron state. - * - * @access public - * @static - * - * @param boolean $is_doing_cron Whether WordPress is currently doing WP cron. - */ - public static function set_doing_cron( $is_doing_cron ) { - // Set to NULL to revert to WP_IMPORTING, the standard behavior. - self::$is_doing_cron = $is_doing_cron; - } - - /** - * Whether WordPress is currently doing WP cron. - * - * @access public - * @static - * - * @return boolean Whether WordPress is currently doing WP cron. - */ - public static function is_doing_cron() { - if ( self::$is_doing_cron !== null ) { - return self::$is_doing_cron; - } - - return defined( 'DOING_CRON' ) && DOING_CRON; - } - - /** - * Whether we are currently syncing. - * - * @access public - * @static - * - * @return boolean Whether we are currently syncing. - */ - public static function is_syncing() { - return (bool) self::$is_syncing || Constants::is_true( 'REST_API_REQUEST' ); - } - - /** - * Set the syncing state. - * - * @access public - * @static - * - * @param boolean $is_syncing Whether we are currently syncing. - */ - public static function set_is_syncing( $is_syncing ) { - self::$is_syncing = $is_syncing; - } - - /** - * Whether we are currently sending sync items. - * - * @access public - * @static - * - * @return boolean Whether we are currently sending sync items. - */ - public static function is_sending() { - return (bool) self::$is_sending; - } - - /** - * Set the sending state. - * - * @access public - * @static - * - * @param boolean $is_sending Whether we are currently sending sync items. - */ - public static function set_is_sending( $is_sending ) { - self::$is_sending = $is_sending; - } - - /** - * Whether should send from the queue - * - * @access public - * @static - * - * @param string $queue_id The queue identifier. - * - * @return boolean Whether sync is enabled. - */ - public static function is_sender_enabled( $queue_id ) { - return (bool) static::get_setting( $queue_id . '_sender_enabled' ); - } - - /** - * Whether checksums are enabled. - * - * @access public - * @static - * - * @return boolean Whether sync is enabled. - */ - public static function is_checksum_enabled() { - return ! (bool) static::get_setting( 'checksum_disable' ); - } - - /** - * Whether dedicated Sync flow is enabled. - * - * @access public - * @static - * - * @return boolean Whether dedicated Sync flow is enabled. - */ - public static function is_dedicated_sync_enabled() { - return (bool) static::get_setting( 'dedicated_sync_enabled' ); - } - - /** - * Whether custom queue table is enabled. - * - * @access public - * @static - * - * @return boolean Whether custom queue table is enabled. - */ - public static function is_custom_queue_table_enabled() { - return (bool) static::get_setting( 'custom_queue_table_enabled' ); - } - - /** - * Whether wpcom rest api is enabled. - * - * @access public - * @static - * - * @return boolean Whether wpcom rest api is enabled. - */ - public static function is_wpcom_rest_api_enabled() { - return (bool) static::get_setting( 'wpcom_rest_api_enabled' ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-simple-codec.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-simple-codec.php deleted file mode 100644 index cd6f2c37..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-simple-codec.php +++ /dev/null @@ -1,62 +0,0 @@ -json_serialize( $object ) ); - } - - /** - * Encode a sync object. - * - * @access public - * - * @param string $input Encoded sync object to decode. - * @return mixed Decoded sync object. - */ - public function decode( $input ) { - // This is intentionally using base64_decode(). - // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode - return $this->json_unserialize( base64_decode( $input ) ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-users.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-users.php deleted file mode 100644 index 316df9ce..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-users.php +++ /dev/null @@ -1,152 +0,0 @@ -has_connected_user() ) { - // Kick off synchronization of user role when it changes. - add_action( 'set_user_role', array( __CLASS__, 'user_role_change' ) ); - } - } - - /** - * Synchronize connected user role changes. - * - * @access public - * @static - * - * @param int $user_id ID of the user. - */ - public static function user_role_change( $user_id ) { - $connection = new Jetpack_Connection(); - if ( $connection->is_user_connected( $user_id ) ) { - self::update_role_on_com( $user_id ); - // Try to choose a new master if we're demoting the current one. - self::maybe_demote_master_user( $user_id ); - } - } - - /** - * Retrieve the role of a user by their ID. - * - * @access public - * @static - * - * @param int $user_id ID of the user. - * @return string Role of the user. - */ - public static function get_role( $user_id ) { - if ( isset( self::$user_roles[ $user_id ] ) ) { - return self::$user_roles[ $user_id ]; - } - - $current_user_id = get_current_user_id(); - wp_set_current_user( $user_id ); - $roles = new Roles(); - $role = $roles->translate_current_user_to_role(); - wp_set_current_user( $current_user_id ); - self::$user_roles[ $user_id ] = $role; - - return $role; - } - - /** - * Retrieve the signed role of a user by their ID. - * - * @access public - * @static - * - * @param int $user_id ID of the user. - * @return string Signed role of the user. - */ - public static function get_signed_role( $user_id ) { - $connection = new Jetpack_Connection(); - return $connection->sign_role( self::get_role( $user_id ), $user_id ); - } - - /** - * Retrieve the signed role and update it in WP.com for that user. - * - * @access public - * @static - * - * @param int $user_id ID of the user. - */ - public static function update_role_on_com( $user_id ) { - $signed_role = self::get_signed_role( $user_id ); - XMLRPC_Async_Call::add_call( 'jetpack.updateRole', get_current_user_id(), $user_id, $signed_role ); - } - - /** - * Choose a new master user if we're demoting the current one. - * - * @access public - * @static - * @todo Disconnect if there is no user with enough capabilities to be the master user. - * @uses \WP_User_Query - * - * @param int $user_id ID of the user. - */ - public static function maybe_demote_master_user( $user_id ) { - $master_user_id = (int) \Jetpack_Options::get_option( 'master_user' ); - $role = self::get_role( $user_id ); - if ( $user_id === $master_user_id && 'administrator' !== $role ) { - $query = new \WP_User_Query( - array( - 'fields' => array( 'ID' ), - 'role' => 'administrator', - 'orderby' => 'ID', - 'exclude' => array( $master_user_id ), - ) - ); - $new_master = false; - $connection = new Jetpack_Connection(); - foreach ( $query->results as $result ) { - $found_user_id = absint( $result->ID ); - if ( $found_user_id && $connection->is_user_connected( $found_user_id ) ) { - $new_master = $found_user_id; - break; - } - } - - if ( $new_master ) { - \Jetpack_Options::update_option( 'master_user', $new_master ); - } - // TODO: else disconnect..? - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-utils.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-utils.php deleted file mode 100644 index 23f24e95..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/class-utils.php +++ /dev/null @@ -1,65 +0,0 @@ -value; - } - - /** - * Get the ID of a sync item. - * - * @access private - * @static - * - * @param array $item Sync item. - * @return int Sync item ID. - */ - private static function get_item_id( $item ) { - return $item->id; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/interface-codec.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/interface-codec.php deleted file mode 100644 index 7653f26d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/interface-codec.php +++ /dev/null @@ -1,44 +0,0 @@ -post_parent && 0 !== $attachment_after->post_parent ) { - /** - * Fires when an existing attachment is added to a post for the first time - * - * @since 1.6.3 - * @since-jetpack 6.6.0 - * - * @param int $attachment_id Attachment ID. - * @param \WP_Post $attachment_after Attachment post object after the update. - */ - do_action( 'jetpack_sync_save_attach_attachment', $attachment_id, $attachment_after ); - } else { - /** - * Fires when the client needs to sync an updated attachment - * - * @since 1.6.3 - * @since-jetpack 4.9.0 - * - * @param int $attachment_id Attachment ID. - * @param \WP_Post $attachment_after Attachment post object after the update. - * - * Previously this action was synced using jetpack_sync_save_add_attachment action. - */ - do_action( 'jetpack_sync_save_update_attachment', $attachment_id, $attachment_after ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-callables.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-callables.php deleted file mode 100644 index a8465c35..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-callables.php +++ /dev/null @@ -1,666 +0,0 @@ - 'home_url', - 'siteurl' => 'site_url', - 'jetpack_active_modules' => 'active_modules', - ); - - /** - * Sync module name. - * - * @access public - * - * @return string - */ - public function name() { - return 'functions'; - } - - /** - * Set module defaults. - * Define the callable whitelist based on whether this is a single site or a multisite installation. - * - * @access public - */ - public function set_defaults() { - if ( is_multisite() ) { - $this->callable_whitelist = array_merge( Defaults::get_callable_whitelist(), Defaults::get_multisite_callable_whitelist() ); - } else { - $this->callable_whitelist = Defaults::get_callable_whitelist(); - } - $this->force_send_callables_on_next_tick = false; // Resets here as well mostly for tests. - } - - /** - * Set module defaults at a later time. - * Reset the callable whitelist if needed to account for plugins adding the 'jetpack_sync_callable_whitelist' - * and 'jetpack_sync_multisite_callable_whitelist' filters late. - * - * @see Automattic\Jetpack\Sync\Modules::set_module_defaults - * @access public - */ - public function set_late_default() { - if ( is_multisite() ) { - $late_callables = array_merge( - apply_filters( 'jetpack_sync_callable_whitelist', array() ), - apply_filters( 'jetpack_sync_multisite_callable_whitelist', array() ) - ); - } else { - $late_callables = apply_filters( 'jetpack_sync_callable_whitelist', array() ); - } - if ( ! empty( $late_callables ) && is_array( $late_callables ) ) { - $this->callable_whitelist = array_merge( $this->callable_whitelist, $late_callables ); - } - } - - /** - * Initialize callables action listeners. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_listeners( $callable ) { - add_action( 'jetpack_sync_callable', $callable, 10, 2 ); - add_action( 'current_screen', array( $this, 'set_plugin_action_links' ), 9999 ); // Should happen very late. - - foreach ( self::ALWAYS_SEND_UPDATES_TO_THESE_OPTIONS as $option ) { - add_action( "update_option_{$option}", array( $this, 'unlock_sync_callable' ) ); - add_action( "delete_option_{$option}", array( $this, 'unlock_sync_callable' ) ); - } - - foreach ( self::ALWAYS_SEND_UPDATES_TO_THESE_OPTIONS_NEXT_TICK as $option ) { - add_action( "update_option_{$option}", array( $this, 'unlock_sync_callable_next_tick' ) ); - add_action( "delete_option_{$option}", array( $this, 'unlock_sync_callable_next_tick' ) ); - } - - // Provide a hook so that hosts can send changes to certain callables right away. - // Especially useful when a host uses constants to change home and siteurl. - add_action( 'jetpack_sync_unlock_sync_callable', array( $this, 'unlock_sync_callable' ) ); - - // get_plugins and wp_version - // gets fired when new code gets installed, updates etc. - add_action( 'upgrader_process_complete', array( $this, 'unlock_plugin_action_link_and_callables' ) ); - add_action( 'update_option_active_plugins', array( $this, 'unlock_plugin_action_link_and_callables' ) ); - } - - /** - * Initialize callables action listeners for full sync. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_full_sync_listeners( $callable ) { - add_action( 'jetpack_full_sync_callables', $callable ); - } - - /** - * Initialize the module in the sender. - * - * @access public - */ - public function init_before_send() { - add_action( 'jetpack_sync_before_send_queue_sync', array( $this, 'maybe_sync_callables' ) ); - - // Full sync. - add_filter( 'jetpack_sync_before_send_jetpack_full_sync_callables', array( $this, 'expand_callables' ) ); - } - - /** - * Perform module cleanup. - * Deletes any transients and options that this module uses. - * Usually triggered when uninstalling the plugin. - * - * @access public - */ - public function reset_data() { - delete_option( self::CALLABLES_CHECKSUM_OPTION_NAME ); - delete_transient( self::CALLABLES_AWAIT_TRANSIENT_NAME ); - - $url_callables = array( 'home_url', 'site_url', 'main_network_site_url' ); - foreach ( $url_callables as $callable ) { - delete_option( Functions::HTTPS_CHECK_OPTION_PREFIX . $callable ); - } - } - - /** - * Set the callable whitelist. - * - * @access public - * - * @param array $callables The new callables whitelist. - */ - public function set_callable_whitelist( $callables ) { - $this->callable_whitelist = $callables; - } - - /** - * Get the callable whitelist. - * - * @access public - * - * @return array The callables whitelist. - */ - public function get_callable_whitelist() { - return $this->callable_whitelist; - } - - /** - * Retrieve all callables as per the current callables whitelist. - * - * @access public - * - * @return array All callables. - */ - public function get_all_callables() { - // get_all_callables should run as the master user always. - $current_user_id = get_current_user_id(); - wp_set_current_user( \Jetpack_Options::get_option( 'master_user' ) ); - $callables = array_combine( - array_keys( $this->get_callable_whitelist() ), - array_map( array( $this, 'get_callable' ), array_values( $this->get_callable_whitelist() ) ) - ); - wp_set_current_user( $current_user_id ); - return $callables; - } - - /** - * Invoke a particular callable. - * Used as a wrapper to standartize invocation. - * - * @access private - * - * @param callable $callable Callable to invoke. - * @return mixed Return value of the callable, null if not callable. - */ - private function get_callable( $callable ) { - if ( is_callable( $callable ) ) { - return call_user_func( $callable ); - } else { - return null; - } - } - - /** - * Enqueue the callable actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $max_items_to_enqueue Maximum number of items to enqueue. - * @param boolean $state True if full sync has finished enqueueing this module, false otherwise. - * @return array Number of actions enqueued, and next module state. - */ - public function enqueue_full_sync_actions( $config, $max_items_to_enqueue, $state ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - /** - * Tells the client to sync all callables to the server - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * - * @param boolean Whether to expand callables (should always be true) - */ - do_action( 'jetpack_full_sync_callables', true ); - - // The number of actions enqueued, and next module state (true == done). - return array( 1, true ); - } - - /** - * Send the callable actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $send_until The timestamp until the current request can send. - * @param array $status This Module Full Sync Status. - * - * @return array This Module Full Sync Status. - */ - public function send_full_sync_actions( $config, $send_until, $status ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - // we call this instead of do_action when sending immediately. - $this->send_action( 'jetpack_full_sync_callables', array( true ) ); - - // The number of actions enqueued, and next module state (true == done). - return array( 'finished' => true ); - } - - /** - * Retrieve an estimated number of actions that will be enqueued. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @return array Number of items yet to be enqueued. - */ - public function estimate_full_sync_actions( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - return 1; - } - - /** - * Retrieve the actions that will be sent for this module during a full sync. - * - * @access public - * - * @return array Full sync actions of this module. - */ - public function get_full_sync_actions() { - return array( 'jetpack_full_sync_callables' ); - } - - /** - * Unlock callables so they would be available for syncing again. - * - * @access public - */ - public function unlock_sync_callable() { - delete_transient( self::CALLABLES_AWAIT_TRANSIENT_NAME ); - } - - /** - * Unlock callables on the next tick. - * Sometime the true callable values are only present on the next tick. - * When switching themes for example. - * - * @access public - */ - public function unlock_sync_callable_next_tick() { - $this->force_send_callables_on_next_tick = true; - } - - /** - * Unlock callables and plugin action links. - * - * @access public - */ - public function unlock_plugin_action_link_and_callables() { - delete_transient( self::CALLABLES_AWAIT_TRANSIENT_NAME ); - delete_transient( 'jetpack_plugin_api_action_links_refresh' ); - add_filter( 'jetpack_check_and_send_callables', '__return_true' ); - } - - /** - * Parse and store the plugin action links if on the plugins page. - * - * @uses \DOMDocument - * @uses libxml_use_internal_errors - * @uses mb_convert_encoding - * - * @access public - */ - public function set_plugin_action_links() { - if ( - ! class_exists( '\DOMDocument' ) || - ! function_exists( 'mb_convert_encoding' ) - ) { - return; - } - - $current_screeen = get_current_screen(); - - $plugins_action_links = array(); - // Is the transient lock in place? - $plugins_lock = get_transient( 'jetpack_plugin_api_action_links_refresh' ); - if ( ! empty( $plugins_lock ) && ( isset( $current_screeen->id ) && 'plugins' !== $current_screeen->id ) ) { - return; - } - $plugins = Functions::get_plugins(); - foreach ( $plugins as $plugin_file => $plugin_data ) { - /** - * Plugins often like to unset things but things break if they are not able to. - */ - $action_links = array( - 'deactivate' => '', - 'activate' => '', - 'details' => '', - 'delete' => '', - 'edit' => '', - ); - /** This filter is documented in src/wp-admin/includes/class-wp-plugins-list-table.php */ - $action_links = apply_filters( 'plugin_action_links', $action_links, $plugin_file, $plugin_data, 'all' ); - // Verify $action_links is still an array. - if ( ! is_array( $action_links ) ) { - $action_links = array(); - } - /** This filter is documented in src/wp-admin/includes/class-wp-plugins-list-table.php */ - $action_links = apply_filters( "plugin_action_links_{$plugin_file}", $action_links, $plugin_file, $plugin_data, 'all' ); - // Verify $action_links is still an array to resolve warnings from filters not returning an array. - if ( is_array( $action_links ) ) { - $action_links = array_filter( $action_links ); - } else { - $action_links = array(); - } - $formatted_action_links = null; - if ( $action_links ) { - $dom_doc = new \DOMDocument(); - foreach ( $action_links as $action_link ) { - // The @ is not enough to suppress errors when dealing with libxml, - // we have to tell it directly how we want to handle errors. - libxml_use_internal_errors( true ); - $dom_doc->loadHTML( '' . $action_link ); - libxml_use_internal_errors( false ); - - $link_elements = $dom_doc->getElementsByTagName( 'a' ); - if ( 0 === $link_elements->length ) { - continue; - } - - $link_element = $link_elements->item( 0 ); - // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase - if ( $link_element instanceof \DOMElement && $link_element->hasAttribute( 'href' ) && $link_element->nodeValue ) { - $link_url = trim( $link_element->getAttribute( 'href' ) ); - - // Add the full admin path to the url if the plugin did not provide it. - $link_url_scheme = wp_parse_url( $link_url, PHP_URL_SCHEME ); - if ( empty( $link_url_scheme ) ) { - $link_url = admin_url( $link_url ); - } - - // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase - $formatted_action_links[ $link_element->nodeValue ] = $link_url; - } - } - } - if ( $formatted_action_links ) { - $plugins_action_links[ $plugin_file ] = $formatted_action_links; - } - } - // Cache things for a long time. - set_transient( 'jetpack_plugin_api_action_links_refresh', time(), DAY_IN_SECONDS ); - update_option( 'jetpack_plugin_api_action_links', $plugins_action_links ); - } - - /** - * Whether a certain callable should be sent. - * - * @access public - * - * @param array $callable_checksums Callable checksums. - * @param string $name Name of the callable. - * @param string $checksum A checksum of the callable. - * @return boolean Whether to send the callable. - */ - public function should_send_callable( $callable_checksums, $name, $checksum ) { - $idc_override_callables = array( - 'main_network_site', - 'home_url', - 'site_url', - ); - if ( in_array( $name, $idc_override_callables, true ) && \Jetpack_Options::get_option( 'migrate_for_idc' ) ) { - return true; - } - - return ! $this->still_valid_checksum( $callable_checksums, $name, $checksum ); - } - - /** - * Sync the callables if we're supposed to. - * - * @access public - */ - public function maybe_sync_callables() { - $callables = $this->get_all_callables(); - if ( ! apply_filters( 'jetpack_check_and_send_callables', false ) ) { - /** - * Treating Dedicated Sync requests a bit differently from normal. We want to send callables - * normally with all Sync actions, no matter if they were with admin action origin or not, - * since Dedicated Sync runs out of bound and the requests are never coming from an admin. - */ - if ( ! is_admin() && ! Dedicated_Sender::is_dedicated_sync_request() ) { - // If we're not an admin and we're not doing cron and this isn't WP_CLI, don't sync anything. - if ( ! Settings::is_doing_cron() && ! Jetpack_Constants::get_constant( 'WP_CLI' ) ) { - return; - } - // If we're not an admin and we are doing cron, sync the Callables that are always supposed to sync ( See https://github.com/Automattic/jetpack/issues/12924 ). - $callables = $this->get_always_sent_callables(); - } - if ( get_transient( self::CALLABLES_AWAIT_TRANSIENT_NAME ) ) { - if ( $this->force_send_callables_on_next_tick ) { - $this->unlock_sync_callable(); - } - return; - } - } - - if ( empty( $callables ) ) { - return; - } - // No need to set the transiant we are trying to remove it anyways. - if ( ! $this->force_send_callables_on_next_tick ) { - set_transient( self::CALLABLES_AWAIT_TRANSIENT_NAME, microtime( true ), Defaults::$default_sync_callables_wait_time ); - } - - $callable_checksums = (array) \Jetpack_Options::get_raw_option( self::CALLABLES_CHECKSUM_OPTION_NAME, array() ); - $has_changed = false; - // Only send the callables that have changed. - foreach ( $callables as $name => $value ) { - $checksum = $this->get_check_sum( $value ); - - // Explicitly not using Identical comparison as get_option returns a string. - if ( $value !== null && $this->should_send_callable( $callable_checksums, $name, $checksum ) ) { - - // Only send callable if the non sorted checksum also does not match. - if ( $this->should_send_callable( $callable_checksums, $name, $this->get_check_sum( $value, false ) ) ) { - - /** - * Tells the client to sync a callable (aka function) to the server - * - * @param string The name of the callable - * @param mixed The value of the callable - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - */ - do_action( 'jetpack_sync_callable', $name, $value ); - } - - $callable_checksums[ $name ] = $checksum; - $has_changed = true; - } else { - $callable_checksums[ $name ] = $checksum; - } - } - if ( $has_changed ) { - \Jetpack_Options::update_raw_option( self::CALLABLES_CHECKSUM_OPTION_NAME, $callable_checksums ); - } - - if ( $this->force_send_callables_on_next_tick ) { - $this->unlock_sync_callable(); - } - } - - /** - * Get the callables that should always be sent, e.g. on cron. - * - * @return array Callables that should always be sent - */ - protected function get_always_sent_callables() { - $callables = $this->get_all_callables(); - $cron_callables = array(); - foreach ( self::ALWAYS_SEND_UPDATES_TO_THESE_OPTIONS as $option_name ) { - if ( array_key_exists( $option_name, $callables ) ) { - $cron_callables[ $option_name ] = $callables[ $option_name ]; - continue; - } - - // Check for the Callable name/key for the option, if different from option name. - if ( array_key_exists( $option_name, self::OPTION_NAMES_TO_CALLABLE_NAMES ) ) { - $callable_name = self::OPTION_NAMES_TO_CALLABLE_NAMES[ $option_name ]; - if ( array_key_exists( $callable_name, $callables ) ) { - $cron_callables[ $callable_name ] = $callables[ $callable_name ]; - } - } - } - return $cron_callables; - } - - /** - * Expand the callables within a hook before they are serialized and sent to the server. - * - * @access public - * - * @param array $args The hook parameters. - * @return array $args The hook parameters. - */ - public function expand_callables( $args ) { - if ( $args[0] ) { - $callables = $this->get_all_callables(); - $callables_checksums = array(); - foreach ( $callables as $name => $value ) { - $callables_checksums[ $name ] = $this->get_check_sum( $value ); - } - \Jetpack_Options::update_raw_option( self::CALLABLES_CHECKSUM_OPTION_NAME, $callables_checksums ); - return $callables; - } - - return $args; - } - - /** - * Return Total number of objects. - * - * @param array $config Full Sync config. - * - * @return int total - */ - public function total( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - return count( $this->get_callable_whitelist() ); - } - - /** - * Retrieve a set of callables by their IDs. - * - * @access public - * - * @param string $object_type Object type. - * @param array $ids Object IDs. - * @return array Array of objects. - */ - public function get_objects_by_id( $object_type, $ids ) { - if ( empty( $ids ) || empty( $object_type ) || 'callable' !== $object_type ) { - return array(); - } - - $objects = array(); - foreach ( (array) $ids as $id ) { - $object = $this->get_object_by_id( $object_type, $id ); - - if ( 'CALLABLE-DOES-NOT-EXIST' !== $object ) { - if ( 'all' === $id ) { - // If all was requested it contains all options and can simply be returned. - return $object; - } - $objects[ $id ] = $object; - } - } - - return $objects; - } - - /** - * Retrieve a callable by its name. - * - * @access public - * - * @param string $object_type Type of the sync object. - * @param string $id ID of the sync object. - * @return mixed Value of Callable. - */ - public function get_object_by_id( $object_type, $id ) { - if ( 'callable' === $object_type ) { - - // Only whitelisted options can be returned. - if ( array_key_exists( $id, $this->get_callable_whitelist() ) ) { - // requires master user to be in context. - $current_user_id = get_current_user_id(); - wp_set_current_user( \Jetpack_Options::get_option( 'master_user' ) ); - $callable = $this->get_callable( $this->callable_whitelist[ $id ] ); - wp_set_current_user( $current_user_id ); - return $callable; - } elseif ( 'all' === $id ) { - return $this->get_all_callables(); - } - } - - return 'CALLABLE-DOES-NOT-EXIST'; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-comments.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-comments.php deleted file mode 100644 index 9dc1d759..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-comments.php +++ /dev/null @@ -1,594 +0,0 @@ -table' ); - return 'comments'; - } - - /** - * The table in the database with the prefix. - * - * @access public - * - * @return string|bool - */ - public function table() { - global $wpdb; - return $wpdb->comments; - } - - /** - * Retrieve a comment by its ID. - * - * @access public - * - * @param string $object_type Type of the sync object. - * @param int $id ID of the sync object. - * @return \WP_Comment|bool Filtered \WP_Comment object, or false if the object is not a comment. - */ - public function get_object_by_id( $object_type, $id ) { - $comment_id = (int) $id; - if ( 'comment' === $object_type ) { - $comment = get_comment( $comment_id ); - if ( $comment ) { - return $this->filter_comment( $comment ); - } - } - - return false; - } - - /** - * Initialize comments action listeners. - * Also responsible for initializing comment meta listeners. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_listeners( $callable ) { - add_action( 'wp_insert_comment', $callable, 10, 2 ); - add_action( 'deleted_comment', $callable ); - add_action( 'trashed_comment', $callable ); - add_action( 'spammed_comment', $callable ); - add_action( 'trashed_post_comments', $callable, 10, 2 ); - add_action( 'untrash_post_comments', $callable ); - add_action( 'comment_approved_to_unapproved', $callable ); - add_action( 'comment_unapproved_to_approved', $callable ); - add_action( 'jetpack_modified_comment_contents', $callable, 10, 2 ); - add_action( 'untrashed_comment', $callable, 10, 2 ); - add_action( 'unspammed_comment', $callable, 10, 2 ); - add_filter( 'wp_update_comment_data', array( $this, 'handle_comment_contents_modification' ), 10, 3 ); - - // comment actions. - add_filter( 'jetpack_sync_before_enqueue_wp_insert_comment', array( $this, 'filter_jetpack_sync_before_enqueue_wp_insert_comment' ) ); - add_filter( 'jetpack_sync_before_enqueue_deleted_comment', array( $this, 'only_allow_white_listed_comment_types' ) ); - add_filter( 'jetpack_sync_before_enqueue_trashed_comment', array( $this, 'only_allow_white_listed_comment_types' ) ); - add_filter( 'jetpack_sync_before_enqueue_untrashed_comment', array( $this, 'only_allow_white_listed_comment_types' ) ); - add_filter( 'jetpack_sync_before_enqueue_spammed_comment', array( $this, 'only_allow_white_listed_comment_types' ) ); - add_filter( 'jetpack_sync_before_enqueue_unspammed_comment', array( $this, 'only_allow_white_listed_comment_types' ) ); - - // comment status transitions. - add_filter( 'jetpack_sync_before_enqueue_comment_approved_to_unapproved', array( $this, 'only_allow_white_listed_comment_type_transitions' ) ); - add_filter( 'jetpack_sync_before_enqueue_comment_unapproved_to_approved', array( $this, 'only_allow_white_listed_comment_type_transitions' ) ); - - // Post Actions. - add_filter( 'jetpack_sync_before_enqueue_trashed_post_comments', array( $this, 'filter_blacklisted_post_types' ) ); - add_filter( 'jetpack_sync_before_enqueue_untrash_post_comments', array( $this, 'filter_blacklisted_post_types' ) ); - - /** - * Even though it's messy, we implement these hooks because - * the edit_comment hook doesn't include the data - * so this saves us a DB read for every comment event. - */ - foreach ( $this->get_whitelisted_comment_types() as $comment_type ) { - foreach ( array( 'unapproved', 'approved' ) as $comment_status ) { - $comment_action_name = "comment_{$comment_status}_{$comment_type}"; - add_action( $comment_action_name, $callable, 10, 2 ); - add_filter( - 'jetpack_sync_before_enqueue_' . $comment_action_name, - array( - $this, - 'expand_wp_insert_comment', - ) - ); - } - } - - // Listen for meta changes. - $this->init_listeners_for_meta_type( 'comment', $callable ); - $this->init_meta_whitelist_handler( 'comment', array( $this, 'filter_meta' ) ); - } - - /** - * Handler for any comment content updates. - * - * @access public - * - * @param array $new_comment The new, processed comment data. - * @param array $old_comment The old, unslashed comment data. - * @param array $new_comment_with_slashes The new, raw comment data. - * @return array The new, processed comment data. - */ - public function handle_comment_contents_modification( $new_comment, $old_comment, $new_comment_with_slashes ) { - $changes = array(); - $content_fields = array( - 'comment_author', - 'comment_author_email', - 'comment_author_url', - 'comment_content', - ); - foreach ( $content_fields as $field ) { - if ( $new_comment_with_slashes[ $field ] !== $old_comment[ $field ] ) { - $changes[ $field ] = array( $new_comment[ $field ], $old_comment[ $field ] ); - } - } - - if ( ! empty( $changes ) ) { - /** - * Signals to the sync listener that this comment's contents were modified and a sync action - * reflecting the change(s) to the content should be sent - * - * @since 1.6.3 - * @since-jetpack 4.9.0 - * - * @param int $new_comment['comment_ID'] ID of comment whose content was modified - * @param mixed $changes Array of changed comment fields with before and after values - */ - do_action( 'jetpack_modified_comment_contents', $new_comment['comment_ID'], $changes ); - } - return $new_comment; - } - - /** - * Initialize comments action listeners for full sync. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_full_sync_listeners( $callable ) { - add_action( 'jetpack_full_sync_comments', $callable ); // Also send comments meta. - } - - /** - * Gets a filtered list of comment types that sync can hook into. - * - * @access public - * - * @return array Defaults to [ '', 'trackback', 'pingback' ]. - */ - public function get_whitelisted_comment_types() { - /** - * Comment types present in this list will sync their status changes to WordPress.com. - * - * @since 1.6.3 - * @since-jetpack 7.6.0 - * - * @param array A list of comment types. - */ - return apply_filters( - 'jetpack_sync_whitelisted_comment_types', - array( '', 'comment', 'trackback', 'pingback', 'review' ) - ); - } - - /** - * Prevents any comment types that are not in the whitelist from being enqueued and sent to WordPress.com. - * - * @param array $args Arguments passed to wp_insert_comment, deleted_comment, spammed_comment, etc. - * - * @return bool or array $args Arguments passed to wp_insert_comment, deleted_comment, spammed_comment, etc. - */ - public function only_allow_white_listed_comment_types( $args ) { - $comment = false; - - if ( isset( $args[1] ) ) { - // comment object is available. - $comment = $args[1]; - } elseif ( is_numeric( $args[0] ) ) { - // comment_id is available. - $comment = get_comment( $args[0] ); - } - - if ( - isset( $comment->comment_type ) - && ! in_array( $comment->comment_type, $this->get_whitelisted_comment_types(), true ) - ) { - return false; - } - - return $args; - } - - /** - * Filter all blacklisted post types. - * - * @param array $args Hook arguments. - * @return array|false Hook arguments, or false if the post type is a blacklisted one. - */ - public function filter_blacklisted_post_types( $args ) { - $post_id = $args[0]; - $posts_module = Modules::get_module( 'posts' ); - '@phan-var Posts $posts_module'; - - if ( false !== $posts_module && ! $posts_module->is_post_type_allowed( $post_id ) ) { - return false; - } - - return $args; - } - - /** - * Prevents any comment types that are not in the whitelist from being enqueued and sent to WordPress.com. - * - * @param array $args Arguments passed to wp_{old_status}_to_{new_status}. - * - * @return bool or array $args Arguments passed to wp_{old_status}_to_{new_status} - */ - public function only_allow_white_listed_comment_type_transitions( $args ) { - $comment = $args[0]; - - if ( ! in_array( $comment->comment_type, $this->get_whitelisted_comment_types(), true ) ) { - return false; - } - - return $args; - } - - /** - * Prevents any comment types that are not in the whitelist from being enqueued and sent to WordPress.com. - * Also expands comment data before being enqueued. - * - * @param array $args Arguments passed to wp_insert_comment. - * - * @return false or array $args Arguments passed to wp_insert_comment or false if the comment type is a blacklisted one. - */ - public function filter_jetpack_sync_before_enqueue_wp_insert_comment( $args ) { - if ( false === $this->only_allow_white_listed_comment_types( $args ) ) { - return false; - } - - return $this->expand_wp_insert_comment( $args ); - } - - /** - * Whether a comment type is allowed. - * A comment type is allowed if it's present in the comment type whitelist. - * - * @param int $comment_id ID of the comment. - * @return boolean Whether the comment type is allowed. - */ - public function is_comment_type_allowed( $comment_id ) { - $comment = get_comment( $comment_id ); - - if ( isset( $comment->comment_type ) ) { - return in_array( $comment->comment_type, $this->get_whitelisted_comment_types(), true ); - } - return false; - } - - /** - * Initialize the module in the sender. - * - * @access public - */ - public function init_before_send() { - - // Full sync. - $sync_module = Modules::get_module( 'full-sync' ); - if ( $sync_module instanceof Full_Sync_Immediately ) { - add_filter( 'jetpack_sync_before_send_jetpack_full_sync_comments', array( $this, 'extract_comments_and_meta' ) ); - } else { - add_filter( 'jetpack_sync_before_send_jetpack_full_sync_comments', array( $this, 'expand_comment_ids' ) ); - } - } - - /** - * Enqueue the comments actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $max_items_to_enqueue Maximum number of items to enqueue. - * @param boolean $state True if full sync has finished enqueueing this module, false otherwise. - * @return array Number of actions enqueued, and next module state. - */ - public function enqueue_full_sync_actions( $config, $max_items_to_enqueue, $state ) { - global $wpdb; - return $this->enqueue_all_ids_as_action( 'jetpack_full_sync_comments', $wpdb->comments, 'comment_ID', $this->get_where_sql( $config ), $max_items_to_enqueue, $state ); - } - - /** - * Retrieve an estimated number of actions that will be enqueued. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @return int Number of items yet to be enqueued. - */ - public function estimate_full_sync_actions( $config ) { - global $wpdb; - - $query = "SELECT count(*) FROM $wpdb->comments"; - - $where_sql = $this->get_where_sql( $config ); - if ( $where_sql ) { - $query .= ' WHERE ' . $where_sql; - } - - // TODO: Call $wpdb->prepare on the following query. - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching - $count = (int) $wpdb->get_var( $query ); - - return (int) ceil( $count / self::ARRAY_CHUNK_SIZE ); - } - - /** - * Retrieve the WHERE SQL clause based on the module config. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @return string WHERE SQL clause, or `null` if no comments are specified in the module config. - */ - public function get_where_sql( $config ) { - if ( is_array( $config ) ) { - return 'comment_ID IN (' . implode( ',', array_map( 'intval', $config ) ) . ')'; - } - - return '1=1'; - } - - /** - * Retrieve the actions that will be sent for this module during a full sync. - * - * @access public - * - * @return array Full sync actions of this module. - */ - public function get_full_sync_actions() { - return array( 'jetpack_full_sync_comments' ); - } - - /** - * Count all the actions that are going to be sent. - * - * @access public - * - * @param array $action_names Names of all the actions that will be sent. - * @return int Number of actions. - */ - public function count_full_sync_actions( $action_names ) { - return $this->count_actions( $action_names, array( 'jetpack_full_sync_comments' ) ); - } - - /** - * Expand the comment status change before the data is serialized and sent to the server. - * - * @access public - * @todo This is not used currently - let's implement it. - * - * @param array $args The hook parameters. - * @return array The expanded hook parameters. - */ - public function expand_wp_comment_status_change( $args ) { - return array( $args[0], $this->filter_comment( $args[1] ) ); - } - - /** - * Expand the comment creation before the data is added to the Sync queue. - * - * @access public - * - * @param array $args The hook parameters. - * @return array The expanded hook parameters. - */ - public function expand_wp_insert_comment( $args ) { - return array( $args[0], $this->filter_comment( $args[1] ) ); - } - - /** - * Filter a comment object to the fields we need. - * - * @access public - * - * @param \WP_Comment $comment The unfiltered comment object. - * @return \WP_Comment Filtered comment object. - */ - public function filter_comment( $comment ) { - /** - * Filters whether to prevent sending comment data to .com - * - * Passing true to the filter will prevent the comment data from being sent - * to the WordPress.com. - * Instead we pass data that will still enable us to do a checksum against the - * Jetpacks data but will prevent us from displaying the data on in the API as well as - * other services. - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * - * @param boolean false prevent post data from bing synced to WordPress.com - * @param mixed $comment WP_COMMENT object - */ - if ( apply_filters( 'jetpack_sync_prevent_sending_comment_data', false, $comment ) ) { - $blocked_comment = new \stdClass(); - $blocked_comment->comment_ID = $comment->comment_ID; - $blocked_comment->comment_date = $comment->comment_date; - $blocked_comment->comment_date_gmt = $comment->comment_date_gmt; - $blocked_comment->comment_approved = 'jetpack_sync_blocked'; - return $blocked_comment; - } - - return $comment; - } - - /** - * Whether a certain comment meta key is whitelisted for sync. - * - * @access public - * - * @param string $meta_key Comment meta key. - * @return boolean Whether the meta key is whitelisted. - */ - public function is_whitelisted_comment_meta( $meta_key ) { - return in_array( $meta_key, Settings::get_setting( 'comment_meta_whitelist' ), true ); - } - - /** - * Handler for filtering out non-whitelisted comment meta. - * - * @access public - * - * @param array $args Hook args. - * @return array|boolean False if not whitelisted, the original hook args otherwise. - */ - public function filter_meta( $args ) { - if ( $this->is_comment_type_allowed( $args[1] ) && $this->is_whitelisted_comment_meta( $args[2] ) ) { - return $args; - } - - return false; - } - - /** - * Expand the comment IDs to comment objects and meta before being serialized and sent to the server. - * - * @access public - * - * @param array $args The hook parameters. - * @return array The expanded hook parameters. - */ - public function expand_comment_ids( $args ) { - list( $comment_ids, $previous_interval_end ) = $args; - $comments = get_comments( - array( - 'include_unapproved' => true, - 'comment__in' => $comment_ids, - 'orderby' => 'comment_ID', - 'order' => 'DESC', - ) - ); - - return array( - $comments, - $this->get_metadata( $comment_ids, 'comment', Settings::get_setting( 'comment_meta_whitelist' ) ), - $previous_interval_end, - ); - } - - /** - * Expand the comment IDs to comment objects and meta before being serialized and sent to the server. - * - * @access public - * - * @param array $args The hook parameters. - * @return array The expanded hook parameters. - */ - public function extract_comments_and_meta( $args ) { - list( $filtered_comments, $previous_end ) = $args; - return array( - $filtered_comments['objects'], - $filtered_comments['meta'], - $previous_end, - ); - } - - /** - * Given the Module Configuration and Status return the next chunk of items to send. - * This function also expands the posts and metadata and filters them based on the maximum size constraints. - * - * @param array $config This module Full Sync configuration. - * @param array $status This module Full Sync status. - * @param int $chunk_size Chunk size. - * - * @return array - */ - public function get_next_chunk( $config, $status, $chunk_size ) { - - $comment_ids = parent::get_next_chunk( $config, $status, $chunk_size ); - // If no comment IDs were fetched, return an empty array. - if ( empty( $comment_ids ) ) { - return array(); - } - $comments = get_comments( - array( - 'comment__in' => $comment_ids, - 'orderby' => 'comment_ID', - 'order' => 'DESC', - ) - ); - // If no comments were fetched, make sure to return the expected structure so that status is updated correctly. - if ( empty( $comments ) ) { - return array( - 'object_ids' => $comment_ids, - 'objects' => array(), - 'meta' => array(), - ); - } - // Get the comment IDs from the comments that were fetched. - $fetched_comment_ids = wp_list_pluck( $comments, 'comment_ID' ); - $metadata = $this->get_metadata( $fetched_comment_ids, 'comment', Settings::get_setting( 'comment_meta_whitelist' ) ); - - // Filter the comments and metadata based on the maximum size constraints. - list( $filtered_comment_ids, $filtered_comments, $filtered_comments_metadata ) = $this->filter_objects_and_metadata_by_size( - 'comment', - $comments, - $metadata, - self::MAX_META_LENGTH, // Replace with appropriate comment meta length constant. - self::MAX_SIZE_FULL_SYNC - ); - - return array( - 'object_ids' => $filtered_comment_ids, - 'objects' => $filtered_comments, - 'meta' => $filtered_comments_metadata, - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-constants.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-constants.php deleted file mode 100644 index 16b42a67..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-constants.php +++ /dev/null @@ -1,345 +0,0 @@ -constants_whitelist = $constants; - } - - /** - * Get the constants whitelist. - * - * @access public - * - * @return array The constants whitelist. - */ - public function get_constants_whitelist() { - return Defaults::get_constants_whitelist(); - } - - /** - * Enqueue the constants actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $max_items_to_enqueue Maximum number of items to enqueue. - * @param boolean $state True if full sync has finished enqueueing this module, false otherwise. - * - * @return array Number of actions enqueued, and next module state. - */ - public function enqueue_full_sync_actions( $config, $max_items_to_enqueue, $state ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - /** - * Tells the client to sync all constants to the server - * - * @param boolean Whether to expand constants (should always be true) - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - */ - do_action( 'jetpack_full_sync_constants', true ); - - // The number of actions enqueued, and next module state (true == done). - return array( 1, true ); - } - - /** - * Send the constants actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $send_until The timestamp until the current request can send. - * @param array $state This module Full Sync status. - * - * @return array This module Full Sync status. - */ - public function send_full_sync_actions( $config, $send_until, $state ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - // we call this instead of do_action when sending immediately. - $this->send_action( 'jetpack_full_sync_constants', array( true ) ); - - // The number of actions enqueued, and next module state (true == done). - return array( 'finished' => true ); - } - - /** - * Retrieve an estimated number of actions that will be enqueued. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * - * @return array Number of items yet to be enqueued. - */ - public function estimate_full_sync_actions( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - return 1; - } - - /** - * Retrieve the actions that will be sent for this module during a full sync. - * - * @access public - * - * @return array Full sync actions of this module. - */ - public function get_full_sync_actions() { - return array( 'jetpack_full_sync_constants' ); - } - - /** - * Sync the constants if we're supposed to. - * - * @access public - */ - public function maybe_sync_constants() { - if ( get_transient( self::CONSTANTS_AWAIT_TRANSIENT_NAME ) ) { - return; - } - - set_transient( self::CONSTANTS_AWAIT_TRANSIENT_NAME, microtime( true ), Defaults::$default_sync_constants_wait_time ); - - $constants = $this->get_all_constants(); - if ( empty( $constants ) ) { - return; - } - - $constants_checksums = (array) get_option( self::CONSTANTS_CHECKSUM_OPTION_NAME, array() ); - - foreach ( $constants as $name => $value ) { - $checksum = $this->get_check_sum( $value ); - // Explicitly not using Identical comparison as get_option returns a string. - if ( ! $this->still_valid_checksum( $constants_checksums, $name, $checksum ) && $value !== null ) { - /** - * Tells the client to sync a constant to the server - * - * @param string The name of the constant - * @param mixed The value of the constant - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - */ - do_action( 'jetpack_sync_constant', $name, $value ); - $constants_checksums[ $name ] = $checksum; - } else { - $constants_checksums[ $name ] = $checksum; - } - } - update_option( self::CONSTANTS_CHECKSUM_OPTION_NAME, $constants_checksums ); - } - - /** - * Retrieve all constants as per the current constants whitelist. - * Public so that we don't have to store an option for each constant. - * - * @access public - * - * @return array All constants. - */ - public function get_all_constants() { - $constants_whitelist = $this->get_constants_whitelist(); - - return array_combine( - $constants_whitelist, - array_map( array( $this, 'get_constant' ), $constants_whitelist ) - ); - } - - /** - * Retrieve the value of a constant. - * Used as a wrapper to standartize access to constants. - * - * @access private - * - * @param string $constant Constant name. - * - * @return mixed Return value of the constant. - */ - private function get_constant( $constant ) { - return ( defined( $constant ) ) ? - constant( $constant ) - : null; - } - - /** - * Expand the constants within a hook before they are serialized and sent to the server. - * - * @access public - * - * @param array $args The hook parameters. - * - * @return array $args The hook parameters. - */ - public function expand_constants( $args ) { - if ( $args[0] ) { - $constants = $this->get_all_constants(); - $constants_checksums = array(); - foreach ( $constants as $name => $value ) { - $constants_checksums[ $name ] = $this->get_check_sum( $value ); - } - update_option( self::CONSTANTS_CHECKSUM_OPTION_NAME, $constants_checksums ); - - return $constants; - } - - return $args; - } - - /** - * Return Total number of objects. - * - * @param array $config Full Sync config. - * - * @return int total - */ - public function total( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - return count( $this->get_constants_whitelist() ); - } - - /** - * Retrieve a set of constants by their IDs. - * - * @access public - * - * @param string $object_type Object type. - * @param array $ids Object IDs. - * @return array Array of objects. - */ - public function get_objects_by_id( $object_type, $ids ) { - if ( empty( $ids ) || empty( $object_type ) || 'constant' !== $object_type ) { - return array(); - } - - $objects = array(); - foreach ( (array) $ids as $id ) { - $object = $this->get_object_by_id( $object_type, $id ); - - if ( 'all' === $id ) { - // If all was requested it contains all options and can simply be returned. - return $object; - } - $objects[ $id ] = $object; - } - - return $objects; - } - - /** - * Retrieve a constant by its name. - * - * @access public - * - * @param string $object_type Type of the sync object. - * @param string $id ID of the sync object. - * @return mixed Value of Constant. - */ - public function get_object_by_id( $object_type, $id ) { - if ( 'constant' === $object_type ) { - - // Only whitelisted constants can be returned. - if ( in_array( $id, $this->get_constants_whitelist(), true ) ) { - return $this->get_constant( $id ); - } elseif ( 'all' === $id ) { - return $this->get_all_constants(); - } - } - - return false; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync-immediately.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync-immediately.php deleted file mode 100644 index 8d95e498..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync-immediately.php +++ /dev/null @@ -1,477 +0,0 @@ -is_started() && ! $this->is_finished() ) { - /** - * Fires when a full sync is cancelled. - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - */ - do_action( 'jetpack_full_sync_cancelled' ); - $this->send_action( 'jetpack_full_sync_cancelled' ); - } - - // Remove all evidence of previous full sync items and status. - $this->reset_data(); - - if ( ! is_array( $full_sync_config ) ) { - /* - * Filter default sync config to allow injecting custom configuration. - * - * @param array $full_sync_config Sync configuration for all sync modules. - * - * @since 3.10.0 - */ - $full_sync_config = apply_filters( 'jetpack_full_sync_config', Defaults::$default_full_sync_config ); - if ( is_multisite() ) { - $full_sync_config['network_options'] = 1; - } - } - - if ( isset( $full_sync_config['users'] ) && 'initial' === $full_sync_config['users'] ) { - $users_module = Modules::get_module( 'users' ); - '@phan-var Users $users_module'; - $full_sync_config['users'] = $users_module->get_initial_sync_user_config(); - } - - $this->update_status( - array( - 'started' => time(), - 'config' => $full_sync_config, - 'progress' => $this->get_initial_progress( $full_sync_config ), - ) - ); - - $range = $this->get_content_range(); - /** - * Fires when a full sync begins. This action is serialized - * and sent to the server so that it knows a full sync is coming. - * - * @param array $full_sync_config Sync configuration for all sync modules. - * @param array $range Range of the sync items, containing min and max IDs for some item types. - * @param mixed $context The context where the full sync was initiated from. - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * @since-jetpack 7.3.0 Added $range arg. - * @since 4.4.0 Added $context arg. - */ - do_action( 'jetpack_full_sync_start', $full_sync_config, $range ); - $this->send_action( 'jetpack_full_sync_start', array( $full_sync_config, $range, $context ) ); - - return true; - } - - /** - * Whether full sync has started. - * - * @access public - * - * @return boolean - */ - public function is_started() { - return (bool) $this->get_status()['started']; - } - - /** - * Retrieve the status of the current full sync. - * - * @access public - * - * @return array Full sync status. - */ - public function get_status() { - $default = array( - 'started' => false, - 'finished' => false, - 'progress' => array(), - 'config' => array(), - ); - - return wp_parse_args( \Jetpack_Options::get_raw_option( self::STATUS_OPTION ), $default ); - } - - /** - * Returns the progress percentage of a full sync. - * - * @access public - * - * @return int|null - */ - public function get_sync_progress_percentage() { - if ( ! $this->is_started() || $this->is_finished() ) { - return null; - } - $status = $this->get_status(); - if ( empty( $status['progress'] ) ) { - return null; - } - $total_items = array_reduce( - array_values( $status['progress'] ), - function ( $sum, $sync_item ) { - return isset( $sync_item['total'] ) ? ( $sum + (int) $sync_item['total'] ) : $sum; - }, - 0 - ); - $total_sent = array_reduce( - array_values( $status['progress'] ), - function ( $sum, $sync_item ) { - return isset( $sync_item['sent'] ) ? ( $sum + (int) $sync_item['sent'] ) : $sum; - }, - 0 - ); - return floor( ( $total_sent / $total_items ) * 100 ); - } - - /** - * Whether full sync has finished. - * - * @access public - * - * @return boolean - */ - public function is_finished() { - return (bool) $this->get_status()['finished']; - } - - /** - * Clear all the full sync data. - * - * @access public - */ - public function reset_data() { - $this->clear_status(); - ( new Lock() )->remove( self::LOCK_NAME, true ); - } - - /** - * Clear all the full sync status options. - * - * @access public - */ - public function clear_status() { - \Jetpack_Options::delete_raw_option( self::STATUS_OPTION ); - } - - /** - * Updates the status of the current full sync. - * - * @access public - * - * @param array $values New values to set. - * - * @return bool True if success. - */ - public function update_status( $values ) { - return $this->set_status( wp_parse_args( $values, $this->get_status() ) ); - } - - /** - * Retrieve the status of the current full sync. - * - * @param array $values New values to set. - * - * @access public - * - * @return boolean Full sync status. - */ - public function set_status( $values ) { - return \Jetpack_Options::update_raw_option( self::STATUS_OPTION, $values ); - } - - /** - * Given an initial Full Sync configuration get the initial status. - * - * @param array $full_sync_config Full sync configuration. - * - * @return array Initial Sent status. - */ - public function get_initial_progress( $full_sync_config ) { - // Set default configuration, calculate totals, and save configuration if totals > 0. - $status = array(); - foreach ( $full_sync_config as $name => $config ) { - $module = Modules::get_module( $name ); - if ( ! $module ) { - continue; - } - $status[ $name ] = array( - 'total' => $module->total( $config ), - 'sent' => 0, - 'finished' => false, - ); - } - - return $status; - } - - /** - * Get the range for content (posts and comments) to sync. - * - * @access private - * - * @return array Array of range (min ID, max ID, total items) for all content types. - */ - private function get_content_range() { - $range = array(); - $config = $this->get_status()['config']; - // Add range only when syncing all objects. - if ( true === isset( $config['posts'] ) && $config['posts'] ) { - $range['posts'] = $this->get_range( 'posts' ); - } - - if ( true === isset( $config['comments'] ) && $config['comments'] ) { - $range['comments'] = $this->get_range( 'comments' ); - } - - return $range; - } - - /** - * Get the range (min ID, max ID and total items) of items to sync. - * - * @access public - * - * @param string $type Type of sync item to get the range for. - * - * @return array Array of min ID, max ID and total items in the range. - */ - public function get_range( $type ) { - global $wpdb; - if ( ! in_array( $type, array( 'comments', 'posts' ), true ) ) { - return array(); - } - - switch ( $type ) { - case 'posts': - $table = $wpdb->posts; - $id = 'ID'; - $where_sql = Settings::get_blacklisted_post_types_sql(); - - break; - case 'comments': - $table = $wpdb->comments; - $id = 'comment_ID'; - $where_sql = Settings::get_comments_filter_sql(); - break; - } - - // TODO: Call $wpdb->prepare on the following query. - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - $results = $wpdb->get_results( "SELECT MAX({$id}) as max, MIN({$id}) as min, COUNT({$id}) as count FROM {$table} WHERE {$where_sql}" ); - if ( isset( $results[0] ) ) { - return $results[0]; - } - - return array(); - } - - /** - * Continue sending instead of enqueueing. - * - * @access public - */ - public function continue_enqueuing() { - $this->continue_sending(); - } - - /** - * Continue sending. - * - * @access public - */ - public function continue_sending() { - // Return early if Full Sync is not running. - if ( ! $this->is_started() || $this->get_status()['finished'] ) { - return; - } - - // Return early if we've gotten a retry-after header response. - $retry_time = get_option( Actions::RETRY_AFTER_PREFIX . 'immediate-send' ); - if ( $retry_time ) { - // If expired delete but don't send. Send will occurr in new request to avoid race conditions. - if ( microtime( true ) > $retry_time ) { - update_option( Actions::RETRY_AFTER_PREFIX . 'immediate-send', false, false ); - } - return false; - } - - // Obtain send Lock. - $lock = new Lock(); - $lock_expiration = $lock->attempt( self::LOCK_NAME ); - - // Return if unable to obtain lock. - if ( false === $lock_expiration ) { - return; - } - - // Send Full Sync actions. - $success = $this->send(); - - // Remove lock. - if ( $success ) { - $lock->remove( self::LOCK_NAME, $lock_expiration ); - } - } - - /** - * Immediately send the next items to full sync. - * - * @access public - */ - public function send() { - $config = $this->get_status()['config']; - - $max_duration = Settings::get_setting( 'full_sync_send_duration' ); - $send_until = microtime( true ) + $max_duration; - - $progress = $this->get_status()['progress']; - - $started = $this->get_status()['started']; - - foreach ( $this->get_remaining_modules_to_send() as $module ) { - $progress[ $module->name() ] = $module->send_full_sync_actions( $config[ $module->name() ], $progress[ $module->name() ], $send_until ); - if ( isset( $progress[ $module->name() ]['error'] ) ) { - unset( $progress[ $module->name() ]['error'] ); - $this->update_status( array( 'progress' => $progress ) ); - return false; - } elseif ( ! $progress[ $module->name() ]['finished'] ) { - $this->update_status( array( 'progress' => $progress ) ); - return true; - } - if ( $this->get_status()['started'] !== $started ) { - // Full sync was restarted, stop sending. - return false; - } - } - - $this->send_full_sync_end(); - $this->update_status( array( 'progress' => $progress ) ); - return true; - } - - /** - * Get Modules that are configured to Full Sync and haven't finished sending - * - * @return array - */ - public function get_remaining_modules_to_send() { - $status = $this->get_status(); - $remaining_modules = array(); - foreach ( array_keys( $status['config'] ) as $module_name ) { - $module = Modules::get_module( $module_name ); - if ( ! $module ) { - continue; - } - if ( isset( $status['progress'][ $module_name ]['finished'] ) && - true === $status['progress'][ $module_name ]['finished'] ) { - continue; - } - // Ensure that 'constants', 'options', and 'callables' are sent first. - if ( in_array( $module_name, array( 'network_options', 'options', 'functions', 'constants' ), true ) ) { - array_unshift( $remaining_modules, $module ); - } else { - $remaining_modules[] = $module; - } - } - return $remaining_modules; - } - - /** - * Send 'jetpack_full_sync_end' and update 'finished' status. - * - * @access public - */ - public function send_full_sync_end() { - $range = $this->get_content_range(); - - /** - * Fires when a full sync ends. This action is serialized - * and sent to the server. - * - * @param string $checksum Deprecated since 7.3.0 - @see https://github.com/Automattic/jetpack/pull/11945/ - * @param array $range Range of the sync items, containing min and max IDs for some item types. - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * @since-jetpack 7.3.0 Added $range arg. - */ - do_action( 'jetpack_full_sync_end', '', $range ); - $this->send_action( 'jetpack_full_sync_end', array( '', $range ) ); - - // Setting autoload to true means that it's faster to check whether we should continue enqueuing. - $this->update_status( array( 'finished' => time() ) ); - } - - /** - * Empty Function as we don't close buffers on Immediate Full Sync. - * - * @param array $actions an array of actions, ignored for queueless sync. - */ - public function update_sent_progress_action( $actions ) { } // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync.php deleted file mode 100644 index 64ef388b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync.php +++ /dev/null @@ -1,731 +0,0 @@ -is_started() && ! $this->is_finished(); - - // Remove all evidence of previous full sync items and status. - $this->reset_data(); - - if ( $was_already_running ) { - /** - * Fires when a full sync is cancelled. - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - */ - do_action( 'jetpack_full_sync_cancelled' ); - } - - $this->update_status_option( 'started', time() ); - $this->update_status_option( 'params', $module_configs ); - - $enqueue_status = array(); - $full_sync_config = array(); - $include_empty = false; - $empty = array(); - - // Default value is full sync. - if ( ! is_array( $module_configs ) ) { - $module_configs = array(); - $include_empty = true; - foreach ( Modules::get_modules() as $module ) { - $module_configs[ $module->name() ] = true; - } - } - - // Set default configuration, calculate totals, and save configuration if totals > 0. - foreach ( Modules::get_modules() as $module ) { - $module_name = $module->name(); - $module_config = isset( $module_configs[ $module_name ] ) ? $module_configs[ $module_name ] : false; - - if ( ! $module_config ) { - continue; - } - - if ( 'users' === $module_name && 'initial' === $module_config ) { - '@phan-var Users $module'; - $module_config = $module->get_initial_sync_user_config(); - } - - $enqueue_status[ $module_name ] = false; - - $total_items = $module->estimate_full_sync_actions( $module_config ); - - // If there's information to process, configure this module. - if ( $total_items !== null && $total_items > 0 ) { - $full_sync_config[ $module_name ] = $module_config; - $enqueue_status[ $module_name ] = array( - $total_items, // Total. - 0, // Queued. - false, // Current state. - ); - } elseif ( $include_empty && 0 === $total_items ) { - $empty[ $module_name ] = true; - } - } - - $this->set_config( $full_sync_config ); - $this->set_enqueue_status( $enqueue_status ); - - $range = $this->get_content_range( $full_sync_config ); - /** - * Fires when a full sync begins. This action is serialized - * and sent to the server so that it knows a full sync is coming. - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * @since-jetpack 7.3.0 Added $range arg. - * @since-jetpack 7.4.0 Added $empty arg. - * - * @param array $full_sync_config Sync configuration for all sync modules. - * @param array $range Range of the sync items, containing min and max IDs for some item types. - * @param array $empty The modules with no items to sync during a full sync. - */ - do_action( 'jetpack_full_sync_start', $full_sync_config, $range, $empty ); - - $this->continue_enqueuing( $full_sync_config ); - - return true; - } - - /** - * Enqueue the next items to sync. - * - * @access public - * - * @param array $configs Full sync configuration for all sync modules. - */ - public function continue_enqueuing( $configs = null ) { - // Return early if not in progress. - if ( ! $this->get_status_option( 'started' ) || $this->get_status_option( 'queue_finished' ) ) { - return; - } - - // Attempt to obtain lock. - $lock = new Lock(); - $lock_expiration = $lock->attempt( self::ENQUEUE_LOCK_NAME ); - - // Return if unable to obtain lock. - if ( false === $lock_expiration ) { - return; - } - - // enqueue full sync actions. - $this->enqueue( $configs ); - - // Remove lock. - $lock->remove( self::ENQUEUE_LOCK_NAME, $lock_expiration ); - } - - /** - * Get Modules that are configured to Full Sync and haven't finished enqueuing - * - * @param array $configs Full sync configuration for all sync modules. - * - * @return array - */ - public function get_remaining_modules_to_enqueue( $configs ) { - $enqueue_status = $this->get_enqueue_status(); - return array_filter( - Modules::get_modules(), - /** - * Select configured and not finished modules. - * - * @param Module $module - * @return bool - */ - function ( $module ) use ( $configs, $enqueue_status ) { - // Skip module if not configured for this sync or module is done. - if ( ! isset( $configs[ $module->name() ] ) ) { - return false; - } - if ( ! $configs[ $module->name() ] ) { - return false; - } - if ( isset( $enqueue_status[ $module->name() ][2] ) ) { - if ( true === $enqueue_status[ $module->name() ][2] ) { - return false; - } - } - - return true; - } - ); - } - - /** - * Enqueue the next items to sync. - * - * @access public - * - * @param array $configs Full sync configuration for all sync modules. - */ - public function enqueue( $configs = null ) { - if ( ! $configs ) { - $configs = $this->get_config(); - } - - $enqueue_status = $this->get_enqueue_status(); - $full_sync_queue = new Queue( 'full_sync' ); - $available_queue_slots = Settings::get_setting( 'max_queue_size_full_sync' ) - $full_sync_queue->size(); - - if ( $available_queue_slots <= 0 ) { - return; - } - - $remaining_items_to_enqueue = min( Settings::get_setting( 'max_enqueue_full_sync' ), $available_queue_slots ); - - /** - * If a module exits early (e.g. because it ran out of full sync queue slots, or we ran out of request time) - * then it should exit early - */ - foreach ( $this->get_remaining_modules_to_enqueue( $configs ) as $module ) { - list( $items_enqueued, $next_enqueue_state ) = $module->enqueue_full_sync_actions( $configs[ $module->name() ], $remaining_items_to_enqueue, $enqueue_status[ $module->name() ][2] ); - - $enqueue_status[ $module->name() ][2] = $next_enqueue_state; - - // If items were processed, subtract them from the limit. - if ( $items_enqueued !== null && $items_enqueued > 0 ) { - $enqueue_status[ $module->name() ][1] += $items_enqueued; - $remaining_items_to_enqueue -= $items_enqueued; - } - - if ( 0 >= $remaining_items_to_enqueue || true !== $next_enqueue_state ) { - $this->set_enqueue_status( $enqueue_status ); - return; - } - } - - $this->queue_full_sync_end( $configs ); - $this->set_enqueue_status( $enqueue_status ); - } - - /** - * Enqueue 'jetpack_full_sync_end' and update 'queue_finished' status. - * - * @access public - * - * @param array $configs Full sync configuration for all sync modules. - */ - public function queue_full_sync_end( $configs ) { - $range = $this->get_content_range( $configs ); - - /** - * Fires when a full sync ends. This action is serialized - * and sent to the server. - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * @since-jetpack 7.3.0 Added $range arg. - * - * @param string $checksum Deprecated since 7.3.0 - @see https://github.com/Automattic/jetpack/pull/11945/ - * @param array $range Range of the sync items, containing min and max IDs for some item types. - */ - do_action( 'jetpack_full_sync_end', '', $range ); - - // Setting autoload to true means that it's faster to check whether we should continue enqueuing. - $this->update_status_option( 'queue_finished', time(), true ); - } - - /** - * Get the range (min ID, max ID and total items) of items to sync. - * - * @access public - * - * @param string $type Type of sync item to get the range for. - * @return array Array of min ID, max ID and total items in the range. - */ - public function get_range( $type ) { - global $wpdb; - if ( ! in_array( $type, array( 'comments', 'posts' ), true ) ) { - return array(); - } - - switch ( $type ) { - case 'posts': - $table = $wpdb->posts; - $id = 'ID'; - $where_sql = Settings::get_blacklisted_post_types_sql(); - - break; - case 'comments': - $table = $wpdb->comments; - $id = 'comment_ID'; - $where_sql = Settings::get_comments_filter_sql(); - break; - } - - // TODO: Call $wpdb->prepare on the following query. - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - $results = $wpdb->get_results( "SELECT MAX({$id}) as max, MIN({$id}) as min, COUNT({$id}) as count FROM {$table} WHERE {$where_sql}" ); - if ( isset( $results[0] ) ) { - return $results[0]; - } - - return array(); - } - - /** - * Get the range for content (posts and comments) to sync. - * - * @access private - * - * @param array $config Full sync configuration for this all sync modules. - * @return array Array of range (min ID, max ID, total items) for all content types. - */ - private function get_content_range( $config ) { - $range = array(); - // Only when we are sending the whole range do we want to send also the range. - if ( true === isset( $config['posts'] ) && $config['posts'] ) { - $range['posts'] = $this->get_range( 'posts' ); - } - - if ( true === isset( $config['comments'] ) && $config['comments'] ) { - $range['comments'] = $this->get_range( 'comments' ); - } - return $range; - } - - /** - * Update the progress after sync modules actions have been processed on the server. - * - * @access public - * - * @param array $actions Actions that have been processed on the server. - */ - public function update_sent_progress_action( $actions ) { - // Quick way to map to first items with an array of arrays. - $actions_with_counts = array_count_values( array_filter( array_map( array( $this, 'get_action_name' ), $actions ) ) ); - - // Total item counts for each action. - $actions_with_total_counts = $this->get_actions_totals( $actions ); - - if ( ! $this->is_started() || $this->is_finished() ) { - return; - } - - if ( isset( $actions_with_counts['jetpack_full_sync_start'] ) ) { - $this->update_status_option( 'send_started', time() ); - } - - foreach ( Modules::get_modules() as $module ) { - $module_actions = $module->get_full_sync_actions(); - $status_option_name = "{$module->name()}_sent"; - $total_option_name = "{$status_option_name}_total"; - $items_sent = $this->get_status_option( $status_option_name, 0 ); - $items_sent_total = $this->get_status_option( $total_option_name, 0 ); - - foreach ( $module_actions as $module_action ) { - if ( isset( $actions_with_counts[ $module_action ] ) ) { - $items_sent += $actions_with_counts[ $module_action ]; - } - - if ( ! empty( $actions_with_total_counts[ $module_action ] ) ) { - $items_sent_total += $actions_with_total_counts[ $module_action ]; - } - } - - if ( $items_sent > 0 ) { - $this->update_status_option( $status_option_name, $items_sent ); - } - - if ( 0 !== $items_sent_total ) { - $this->update_status_option( $total_option_name, $items_sent_total ); - } - } - - if ( isset( $actions_with_counts['jetpack_full_sync_end'] ) ) { - $this->update_status_option( 'finished', time() ); - } - } - - /** - * Returns the progress percentage of a full sync. - * - * @access public - * - * @return int|null - */ - public function get_sync_progress_percentage() { - if ( ! $this->is_started() || $this->is_finished() ) { - return null; - } - $status = $this->get_status(); - if ( ! $status['queue'] || ! $status['sent'] || ! $status['total'] ) { - return null; - } - $queued_multiplier = 0.1; - $sent_multiplier = 0.9; - $count_queued = array_reduce( - $status['queue'], - function ( $sum, $value ) { - return $sum + $value; - }, - 0 - ); - $count_sent = array_reduce( - $status['sent'], - function ( $sum, $value ) { - return $sum + $value; - }, - 0 - ); - $count_total = array_reduce( - $status['total'], - function ( $sum, $value ) { - return $sum + $value; - }, - 0 - ); - $percent_queued = ( $count_queued / $count_total ) * $queued_multiplier * 100; - $percent_sent = ( $count_sent / $count_total ) * $sent_multiplier * 100; - return ceil( $percent_queued + $percent_sent ); - } - - /** - * Get the name of the action for an item in the sync queue. - * - * @access public - * - * @param array $queue_item Item of the sync queue. - * @return string|boolean Name of the action, false if queue item is invalid. - */ - public function get_action_name( $queue_item ) { - if ( is_array( $queue_item ) && isset( $queue_item[0] ) ) { - return $queue_item[0]; - } - return false; - } - - /** - * Retrieve the total number of items we're syncing in a particular queue item (action). - * `$queue_item[1]` is expected to contain chunks of items, and `$queue_item[1][0]` - * represents the first (and only) chunk of items to sync in that action. - * - * @access public - * - * @param array $queue_item Item of the sync queue that corresponds to a particular action. - * @return int Total number of items in the action. - */ - public function get_action_totals( $queue_item ) { - if ( is_array( $queue_item ) && isset( $queue_item[1][0] ) ) { - if ( is_array( $queue_item[1][0] ) ) { - // Let's count the items we sync in this action. - return count( $queue_item[1][0] ); - } - // -1 indicates that this action syncs all items by design. - return -1; - } - return 0; - } - - /** - * Retrieve the total number of items for a set of actions, grouped by action name. - * - * @access public - * - * @param array $actions An array of actions. - * @return array An array, representing the total number of items, grouped per action. - */ - public function get_actions_totals( $actions ) { - $totals = array(); - - foreach ( $actions as $action ) { - $name = $this->get_action_name( $action ); - $action_totals = $this->get_action_totals( $action ); - if ( ! isset( $totals[ $name ] ) ) { - $totals[ $name ] = 0; - } - $totals[ $name ] += $action_totals; - } - - return $totals; - } - - /** - * Whether full sync has started. - * - * @access public - * - * @return boolean - */ - public function is_started() { - return (bool) $this->get_status_option( 'started' ); - } - - /** - * Whether full sync has finished. - * - * @access public - * - * @return boolean - */ - public function is_finished() { - return (bool) $this->get_status_option( 'finished' ); - } - - /** - * Retrieve the status of the current full sync. - * - * @access public - * - * @return array Full sync status. - */ - public function get_status() { - $status = array( - 'started' => $this->get_status_option( 'started' ), - 'queue_finished' => $this->get_status_option( 'queue_finished' ), - 'send_started' => $this->get_status_option( 'send_started' ), - 'finished' => $this->get_status_option( 'finished' ), - 'sent' => array(), - 'sent_total' => array(), - 'queue' => array(), - 'config' => $this->get_status_option( 'params' ), - 'total' => array(), - ); - - $enqueue_status = $this->get_enqueue_status(); - - foreach ( Modules::get_modules() as $module ) { - $name = $module->name(); - - if ( ! isset( $enqueue_status[ $name ] ) ) { - continue; - } - - list( $total, $queued ) = $enqueue_status[ $name ]; - - if ( $total ) { - $status['total'][ $name ] = $total; - } - - if ( $queued ) { - $status['queue'][ $name ] = $queued; - } - - $sent = $this->get_status_option( "{$name}_sent" ); - if ( $sent ) { - $status['sent'][ $name ] = $sent; - } - - $sent_total = $this->get_status_option( "{$name}_sent_total" ); - if ( $sent_total ) { - $status['sent_total'][ $name ] = $sent_total; - } - } - - return $status; - } - - /** - * Clear all the full sync status options. - * - * @access public - */ - public function clear_status() { - $prefix = self::STATUS_OPTION_PREFIX; - \Jetpack_Options::delete_raw_option( "{$prefix}_started" ); - \Jetpack_Options::delete_raw_option( "{$prefix}_params" ); - \Jetpack_Options::delete_raw_option( "{$prefix}_queue_finished" ); - \Jetpack_Options::delete_raw_option( "{$prefix}_send_started" ); - \Jetpack_Options::delete_raw_option( "{$prefix}_finished" ); - - $this->delete_enqueue_status(); - - foreach ( Modules::get_modules() as $module ) { - \Jetpack_Options::delete_raw_option( "{$prefix}_{$module->name()}_sent" ); - \Jetpack_Options::delete_raw_option( "{$prefix}_{$module->name()}_sent_total" ); - } - } - - /** - * Clear all the full sync data. - * - * @access public - */ - public function reset_data() { - $this->clear_status(); - $this->delete_config(); - ( new Lock() )->remove( self::ENQUEUE_LOCK_NAME, true ); - - $listener = Listener::get_instance(); - $listener->get_full_sync_queue()->reset(); - } - - /** - * Get the value of a full sync status option. - * - * @access private - * - * @param string $name Name of the option. - * @param mixed $default Default value of the option. - * @return mixed Option value. - */ - private function get_status_option( $name, $default = null ) { - $value = \Jetpack_Options::get_raw_option( self::STATUS_OPTION_PREFIX . "_$name", $default ); - - return is_numeric( $value ) ? (int) $value : $value; - } - - /** - * Update the value of a full sync status option. - * - * @access private - * - * @param string $name Name of the option. - * @param mixed $value Value of the option. - * @param boolean $autoload Whether the option should be autoloaded at the beginning of the request. - */ - private function update_status_option( $name, $value, $autoload = false ) { - \Jetpack_Options::update_raw_option( self::STATUS_OPTION_PREFIX . "_$name", $value, $autoload ); - } - - /** - * Set the full sync enqueue status. - * - * @access private - * - * @param array $new_status The new full sync enqueue status. - */ - private function set_enqueue_status( $new_status ) { - \Jetpack_Options::update_raw_option( 'jetpack_sync_full_enqueue_status', $new_status ); - } - - /** - * Delete full sync enqueue status. - * - * @access private - * - * @return boolean Whether the status was deleted. - */ - private function delete_enqueue_status() { - return \Jetpack_Options::delete_raw_option( 'jetpack_sync_full_enqueue_status' ); - } - - /** - * Retrieve the current full sync enqueue status. - * - * @access private - * - * @return array Full sync enqueue status. - */ - public function get_enqueue_status() { - return \Jetpack_Options::get_raw_option( 'jetpack_sync_full_enqueue_status' ); - } - - /** - * Set the full sync enqueue configuration. - * - * @access private - * - * @param array $config The new full sync enqueue configuration. - */ - private function set_config( $config ) { - \Jetpack_Options::update_raw_option( 'jetpack_sync_full_config', $config ); - } - - /** - * Delete full sync configuration. - * - * @access private - * - * @return boolean Whether the configuration was deleted. - */ - private function delete_config() { - return \Jetpack_Options::delete_raw_option( 'jetpack_sync_full_config' ); - } - - /** - * Retrieve the current full sync enqueue config. - * - * @access private - * - * @return array Full sync enqueue config. - */ - private function get_config() { - return \Jetpack_Options::get_raw_option( 'jetpack_sync_full_config' ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-import.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-import.php deleted file mode 100644 index f5f8543a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-import.php +++ /dev/null @@ -1,220 +0,0 @@ - 'jetpack_sync_import_start', - 'import_done' => 'jetpack_sync_import_end', - 'import_end' => 'jetpack_sync_import_end', - ); - - /** - * Sync module name. - * - * @access public - * - * @return string - */ - public function name() { - return 'import'; - } - - /** - * Initialize imports action listeners. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_listeners( $callable ) { - add_action( 'export_wp', $callable ); - add_action( 'jetpack_sync_import_start', $callable, 10, 2 ); - add_action( 'jetpack_sync_import_end', $callable, 10, 2 ); - - // WordPress. - add_action( 'import_start', array( $this, 'sync_import_action' ) ); - - // Movable type, RSS, Livejournal. - add_action( 'import_done', array( $this, 'sync_import_action' ) ); - - // WordPress, Blogger, Livejournal, woo tax rate. - add_action( 'import_end', array( $this, 'sync_import_action' ) ); - } - - /** - * Set module defaults. - * Define an empty list of synced actions for us to fill later. - * - * @access public - */ - public function set_defaults() { - $this->synced_actions = array(); - } - - /** - * Generic handler for import actions. - * - * @access public - * - * @param string $importer Either a string reported by the importer, the class name of the importer, or 'unknown'. - */ - public function sync_import_action( $importer ) { - $import_action = current_filter(); - // Map action to event name. - $sync_action = self::$import_sync_action_map[ $import_action ]; - - // Only sync each action once per import. - if ( array_key_exists( $sync_action, $this->synced_actions ) && $this->synced_actions[ $sync_action ] ) { - return; - } - - // Mark this action as synced. - $this->synced_actions[ $sync_action ] = true; - - // Prefer self-reported $importer value. - if ( ! $importer ) { - // Fall back to inferring by calling class name. - $importer = self::get_calling_importer_class(); - } - - // Get $importer from known_importers. - $known_importers = Settings::get_setting( 'known_importers' ); - if ( is_string( $importer ) && isset( $known_importers[ $importer ] ) ) { - $importer = $known_importers[ $importer ]; - } - - $importer_name = $this->get_importer_name( $importer ); - - switch ( $sync_action ) { - case 'jetpack_sync_import_start': - /** - * Used for syncing the start of an import - * - * @since 1.6.3 - * @since-jetpack 7.3.0 - * - * @module sync - * - * @param string $importer Either a string reported by the importer, the class name of the importer, or 'unknown'. - * @param string $importer_name The name reported by the importer, or 'Unknown Importer'. - */ - do_action( 'jetpack_sync_import_start', $importer, $importer_name ); - break; - - case 'jetpack_sync_import_end': - /** - * Used for syncing the end of an import - * - * @since 1.6.3 - * @since-jetpack 7.3.0 - * - * @module sync - * - * @param string $importer Either a string reported by the importer, the class name of the importer, or 'unknown'. - * @param string $importer_name The name reported by the importer, or 'Unknown Importer'. - */ - do_action( 'jetpack_sync_import_end', $importer, $importer_name ); - break; - } - } - - /** - * Retrieve the name of the importer. - * - * @access private - * - * @param string $importer Either a string reported by the importer, the class name of the importer, or 'unknown'. - * @return string Name of the importer, or "Unknown Importer" if importer is unknown. - */ - private function get_importer_name( $importer ) { - $importers = get_importers(); - return isset( $importers[ $importer ] ) ? $importers[ $importer ][0] : 'Unknown Importer'; - } - - /** - * Determine the class that extends `WP_Importer` which is responsible for - * the current action. Designed to be used within an action handler. - * - * @access private - * @static - * - * @return string The name of the calling class, or 'unknown'. - */ - private static function get_calling_importer_class() { - // If WP_Importer doesn't exist, neither will any importer that extends it. - if ( ! class_exists( 'WP_Importer', false ) ) { - return 'unknown'; - } - - $action = current_filter(); - $backtrace = debug_backtrace( false ); //phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_debug_backtrace - - $do_action_pos = -1; - $backtrace_len = count( $backtrace ); - for ( $i = 0; $i < $backtrace_len; $i++ ) { - // Find the location in the stack of the calling action. - if ( 'do_action' === $backtrace[ $i ]['function'] && $action === $backtrace[ $i ]['args'][0] ) { - $do_action_pos = $i; - break; - } - } - - // If the action wasn't called, the calling class is unknown. - if ( -1 === $do_action_pos ) { - return 'unknown'; - } - - // Continue iterating the stack looking for a caller that extends WP_Importer. - for ( $i = $do_action_pos + 1; $i < $backtrace_len; $i++ ) { - // If there is no class on the trace, continue. - if ( ! isset( $backtrace[ $i ]['class'] ) ) { - continue; - } - - $class_name = $backtrace[ $i ]['class']; - - // Check if the class extends WP_Importer. - if ( class_exists( $class_name, false ) ) { - $parents = class_parents( $class_name, false ); - if ( $parents && in_array( 'WP_Importer', $parents, true ) ) { - return $class_name; - } - } - } - - // If we've exhausted the stack without a match, the calling class is unknown. - return 'unknown'; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-menus.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-menus.php deleted file mode 100644 index bf6c5620..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-menus.php +++ /dev/null @@ -1,146 +0,0 @@ -nav_items_just_added[] = $nav_item_id; - /** - * Helps sync log that a new menu item was added. - * - * @since 1.6.3 - * @since-jetpack 5.0.0 - * - * @param int $menu_id ID of the menu. - * @param array $menu_data An array of menu data. - * @param int $nav_item_id ID of the new menu item. - * @param array $nav_item_args Arguments used to add the menu item. - */ - do_action( 'jetpack_sync_updated_nav_menu_add_item', $menu_id, $menu_data, $nav_item_id, $nav_item_args ); - } - - /** - * Nav menu item update handler. - * - * @access public - * - * @param int $menu_id ID of the menu. - * @param int $nav_item_id ID of the new menu item. - * @param array $nav_item_args Arguments used to update the menu item. - */ - public function update_nav_menu_update_item( $menu_id, $nav_item_id, $nav_item_args ) { - if ( in_array( $nav_item_id, $this->nav_items_just_added, true ) ) { - return; - } - $menu_data = wp_get_nav_menu_object( $menu_id ); - /** - * Helps sync log that an update to the menu item happened. - * - * @since 1.6.3 - * @since-jetpack 5.0.0 - * - * @param int $menu_id ID of the menu. - * @param array $menu_data An array of menu data. - * @param int $nav_item_id ID of the new menu item. - * @param array $nav_item_args Arguments used to update the menu item. - */ - do_action( 'jetpack_sync_updated_nav_menu_update_item', $menu_id, $menu_data, $nav_item_id, $nav_item_args ); - } - - /** - * Remove menu items that have already been saved from the "just added" list. - * - * @access public - * - * @param int $nav_item_id ID of the new menu item. - * @param \WP_Post $post_after Nav menu item post object after the update. - */ - public function remove_just_added_menu_item( $nav_item_id, $post_after ) { - if ( 'nav_menu_item' !== $post_after->post_type ) { - return; - } - $this->nav_items_just_added = array_diff( $this->nav_items_just_added, array( $nav_item_id ) ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-meta.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-meta.php deleted file mode 100644 index 2360db3b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-meta.php +++ /dev/null @@ -1,192 +0,0 @@ -prepare call to use placeholders. - * - * @param string $object_type The type of object for which we retrieve meta. Either 'post' or 'comment'. - * @param array $config Must include 'meta_key' and 'ids' keys. - * - * @return array - */ - public function get_objects_by_id( $object_type, $config ) { - global $wpdb; - - $table = _get_meta_table( $object_type ); - - if ( ! $table ) { - return array(); - } - - if ( ! is_array( $config ) ) { - return array(); - } - - $object_id_column = $object_type . '_id'; - $object_key_pairs = array(); - - foreach ( $config as $item ) { - if ( isset( $item['id'] ) && isset( $item['meta_key'] ) ) { - $object_key_pairs[ (int) $item['id'] ][] = (string) $item['meta_key']; - } - } - - $meta_objects = array(); - $where_sql = ''; - $current_query_length = 0; - - foreach ( $object_key_pairs as $object_id => $keys ) { - $keys_placeholders = implode( ',', array_fill( 0, count( $keys ), '%s' ) ); - $where_condition = trim( - $wpdb->prepare( - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - "( `$object_id_column` = %d AND meta_key IN ( $keys_placeholders ) )", - array_merge( array( $object_id ), $keys ) - ) - ); - - $where_sql = empty( $where_sql ) ? $where_condition : $where_sql . ' OR ' . $where_condition; - - $current_query_length += strlen( $where_sql ); - - if ( $current_query_length > self::MAX_DB_QUERY_LENGTH ) { - $meta_objects = $this->fetch_prepared_meta_from_db( $object_type, $where_sql, $meta_objects ); - $where_sql = ''; - $current_query_length = 0; - } - } - - if ( ! empty( $where_sql ) ) { - $meta_objects = $this->fetch_prepared_meta_from_db( $object_type, $where_sql, $meta_objects ); - } - - return $meta_objects; - } - - /** - * Get a single Meta Result. - * - * @param string $object_type post, comment, term, user. - * @param int|null $id Object ID. - * @param string|null $meta_key Meta Key. - * - * @return mixed|null - */ - public function get_object_by_id( $object_type, $id = null, $meta_key = null ) { - global $wpdb; - - if ( ! is_int( $id ) || ! is_string( $meta_key ) ) { - return null; - } - - $table = _get_meta_table( $object_type ); - - if ( ! $table ) { - return null; - } - - $object_id_column = $object_type . '_id'; - - // Sanitize so that the array only has integer values. - $where_condition = $wpdb->prepare( - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - "{$object_id_column} = %d AND meta_key = %s", - $id, - $meta_key - ); - - $meta_objects = $this->fetch_prepared_meta_from_db( $object_type, $where_condition ); - - $key = $id . '-' . $meta_key; - - return $meta_objects[ $key ] ?? null; - } - - /** - * Fetch meta from DB and return them in a standard format. - * - * @param string $object_type The meta object type, eg 'post', 'user' etc. - * @param string $where Prepared SQL 'where' statement. - * @param array $meta_objects An existing array of meta to populate. Defaults to an empty array. - * @return array - */ - private function fetch_prepared_meta_from_db( $object_type, $where, $meta_objects = array() ) { - global $wpdb; - - $table = _get_meta_table( $object_type ); - $object_id_column = $object_type . '_id'; - - $meta = $wpdb->get_results( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.DirectQuery - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - "SELECT * FROM {$table} WHERE {$where}", - ARRAY_A - ); - - if ( ! is_wp_error( $meta ) && ! empty( $meta ) ) { - foreach ( $meta as $meta_entry ) { - $object_id = $meta_entry[ $object_id_column ]; - $meta_key = $meta_entry['meta_key']; - $key = $object_id . '-' . $meta_key; - - if ( ! isset( $meta_objects[ $key ] ) ) { - $meta_objects[ $key ] = array(); - } - - $meta_objects[ $key ][] = $this->get_prepared_meta_object( $object_type, $meta_entry ); - } - } - - return $meta_objects; - } - - /** - * Accepts a DB meta entry and returns it in a standard format. - * - * @param string $object_type The meta object type, eg 'post', 'user' etc. - * @param array $meta_entry A meta array. - * @return array - */ - private function get_prepared_meta_object( $object_type, $meta_entry ) { - $object_id_column = $object_type . '_id'; - - if ( 'post' === $object_type && strlen( $meta_entry['meta_value'] ) >= Posts::MAX_META_LENGTH ) { - $meta_entry['meta_value'] = ''; - } - - return array( - 'meta_type' => $object_type, - 'meta_id' => $meta_entry['meta_id'], - 'meta_key' => $meta_entry['meta_key'], - 'meta_value' => $meta_entry['meta_value'], - 'object_id' => $meta_entry[ $object_id_column ], - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-module.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-module.php deleted file mode 100644 index 2d92f325..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-module.php +++ /dev/null @@ -1,779 +0,0 @@ - length. - * Default Setting : 2MB. - * - * @access public - * - * @var int - */ - const MAX_META_LENGTH = 2000000; - - /** - * Sync module name. - * - * @access public - * - * @return string - */ - abstract public function name(); - - /** - * The id field in the database. - * - * @access public - * - * @return string - */ - public function id_field() { - return 'ID'; - } - - /** - * The table name. - * - * @access public - * - * @return string|bool - * @deprecated since 3.11.0 Use table() instead. - */ - public function table_name() { - _deprecated_function( __METHOD__, '3.11.0', 'Automattic\\Jetpack\\Sync\\Module->table' ); - return false; - } - - /** - * The table in the database with the prefix. - * - * @access public - * - * @return string|bool - */ - public function table() { - return false; - } - - /** - * The full sync action name for this module. - * - * @access public - * - * @return string - */ - public function full_sync_action_name() { - return 'jetpack_full_sync_' . $this->name(); - } - - // phpcs:disable VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - - /** - * Retrieve a sync object by its ID. - * - * @access public - * - * @param string $object_type Type of the sync object. - * @param int $id ID of the sync object. - * @return mixed Object, or false if the object is invalid. - */ - public function get_object_by_id( $object_type, $id ) { - return false; - } - - /** - * Initialize callables action listeners. - * Override these to set up listeners and set/reset data/defaults. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_listeners( $callable ) { - } - - /** - * Initialize module action listeners for full sync. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_full_sync_listeners( $callable ) { - } - - /** - * Initialize the module in the sender. - * - * @access public - */ - public function init_before_send() { - } - - /** - * Set module defaults. - * - * @access public - */ - public function set_defaults() { - } - - /** - * Perform module cleanup. - * Usually triggered when uninstalling the plugin. - * - * @access public - */ - public function reset_data() { - } - - /** - * Enqueue the module actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $max_items_to_enqueue Maximum number of items to enqueue. - * @param boolean $state True if full sync has finished enqueueing this module, false otherwise. - * @return array Number of actions enqueued, and next module state. - */ - public function enqueue_full_sync_actions( $config, $max_items_to_enqueue, $state ) { - // In subclasses, return the number of actions enqueued, and next module state (true == done). - return array( null, true ); - } - - /** - * Retrieve an estimated number of actions that will be enqueued. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @return array Number of items yet to be enqueued. - */ - public function estimate_full_sync_actions( $config ) { - // In subclasses, return the number of items yet to be enqueued. - return null; - } - - // phpcs:enable VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - - /** - * Retrieve the actions that will be sent for this module during a full sync. - * - * @access public - * - * @return array Full sync actions of this module. - */ - public function get_full_sync_actions() { - return array(); - } - - /** - * Get the number of actions that we care about. - * - * @access protected - * - * @param array $action_names Action names we're interested in. - * @param array $actions_to_count Unfiltered list of actions we want to count. - * @return array Number of actions that we're interested in. - */ - protected function count_actions( $action_names, $actions_to_count ) { - return count( array_intersect( $action_names, $actions_to_count ) ); - } - - /** - * Calculate the checksum of one or more values. - * - * @access protected - * - * @param mixed $values Values to calculate checksum for. - * @param bool $sort If $values should have ksort called on it. - * @return int The checksum. - */ - protected function get_check_sum( $values, $sort = true ) { - // Associative array order changes the generated checksum value. - if ( $sort && is_array( $values ) ) { - $this->recursive_ksort( $values ); - } - return crc32( wp_json_encode( Functions::json_wrap( $values ) ) ); - } - - /** - * Recursively call ksort on an Array - * - * @param array $values Array. - */ - private function recursive_ksort( &$values ) { - ksort( $values ); - foreach ( $values as &$value ) { - if ( is_array( $value ) ) { - $this->recursive_ksort( $value ); - } - } - } - - /** - * Whether a particular checksum in a set of checksums is valid. - * - * @access protected - * - * @param array $sums_to_check Array of checksums. - * @param string $name Name of the checksum. - * @param int $new_sum Checksum to compare against. - * @return boolean Whether the checksum is valid. - */ - protected function still_valid_checksum( $sums_to_check, $name, $new_sum ) { - if ( isset( $sums_to_check[ $name ] ) && $sums_to_check[ $name ] === $new_sum ) { - return true; - } - - return false; - } - - /** - * Enqueue all items of a sync type as an action. - * - * @access protected - * - * @param string $action_name Name of the action. - * @param string $table_name Name of the database table. - * @param string $id_field Name of the ID field in the database. - * @param string $where_sql The SQL WHERE clause to filter to the desired items. - * @param int $max_items_to_enqueue Maximum number of items to enqueue in the same time. - * @param boolean $state Whether enqueueing has finished. - * @return array Array, containing the number of chunks and TRUE, indicating enqueueing has finished. - */ - protected function enqueue_all_ids_as_action( $action_name, $table_name, $id_field, $where_sql, $max_items_to_enqueue, $state ) { - global $wpdb; - - if ( ! $where_sql ) { - $where_sql = '1 = 1'; - } - - $items_per_page = 1000; - $page = 1; - $chunk_count = 0; - $previous_interval_end = $state ? $state : '~0'; - $listener = Listener::get_instance(); - - // Count down from max_id to min_id so we get newest posts/comments/etc first. - // phpcs:ignore Generic.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition, WordPress.DB.PreparedSQL.InterpolatedNotPrepared - while ( $ids = $wpdb->get_col( "SELECT {$id_field} FROM {$table_name} WHERE {$where_sql} AND {$id_field} < {$previous_interval_end} ORDER BY {$id_field} DESC LIMIT {$items_per_page}" ) ) { - // Request posts in groups of N for efficiency. - $chunked_ids = array_chunk( $ids, self::ARRAY_CHUNK_SIZE ); - - // If we hit our row limit, process and return. - if ( $chunk_count + count( $chunked_ids ) >= $max_items_to_enqueue ) { - $remaining_items_count = $max_items_to_enqueue - $chunk_count; - $remaining_items = array_slice( $chunked_ids, 0, $remaining_items_count ); - $remaining_items_with_previous_interval_end = $this->get_chunks_with_preceding_end( $remaining_items, $previous_interval_end ); - $listener->bulk_enqueue_full_sync_actions( $action_name, $remaining_items_with_previous_interval_end ); - - $last_chunk = end( $remaining_items ); - return array( $remaining_items_count + $chunk_count, end( $last_chunk ) ); - } - $chunked_ids_with_previous_end = $this->get_chunks_with_preceding_end( $chunked_ids, $previous_interval_end ); - - $listener->bulk_enqueue_full_sync_actions( $action_name, $chunked_ids_with_previous_end ); - - $chunk_count += count( $chunked_ids ); - ++$page; - // The $ids are ordered in descending order. - $previous_interval_end = end( $ids ); - } - - if ( $wpdb->last_error ) { - // return the values that were passed in so all these chunks get retried. - return array( $max_items_to_enqueue, $state ); - } - - return array( $chunk_count, true ); - } - - /** - * Given the Module Full Sync Configuration and Status return the next chunk of items to send. - * - * @param array $config This module Full Sync configuration. - * @param array $status This module Full Sync status. - * @param int $chunk_size Chunk size. - * - * @return array|object|null - */ - public function get_next_chunk( $config, $status, $chunk_size ) { - // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.DirectDatabaseQuery.DirectQuery - global $wpdb; - return $wpdb->get_col( - " - SELECT {$this->id_field()} - FROM {$this->table()} - WHERE {$this->get_where_sql( $config )} - AND {$this->id_field()} < {$status['last_sent']} - ORDER BY {$this->id_field()} - DESC LIMIT {$chunk_size} - " - ); - // phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.DirectDatabaseQuery.DirectQuery - } - - /** - * Return last_item to send for Module Full Sync Configuration. - * - * @param array $config This module Full Sync configuration. - * - * @return array|object|null - */ - public function get_last_item( $config ) { - global $wpdb; - // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.DirectQuery - return $wpdb->get_var( - " - SELECT {$this->id_field()} - FROM {$this->table()} - WHERE {$this->get_where_sql( $config )} - ORDER BY {$this->id_field()} - LIMIT 1 - " - ); - // phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.DirectQuery - } - - /** - * Return the initial last sent object. - * - * @return string|array initial status. - */ - public function get_initial_last_sent() { - return '~0'; - } - - /** - * Immediately send all items of a sync type as an action. - * - * @access protected - * - * @param string $config Full sync configuration for this module. - * @param array $status the current module full sync status. - * @param float $send_until timestamp until we want this request to send full sync events. - * - * @return array Status, the module full sync status updated. - */ - public function send_full_sync_actions( $config, $status, $send_until ) { - global $wpdb; - - if ( empty( $status['last_sent'] ) ) { - $status['last_sent'] = $this->get_initial_last_sent(); - } - - $limits = Settings::get_setting( 'full_sync_limits' )[ $this->name() ] ?? - Defaults::get_default_setting( 'full_sync_limits' )[ $this->name() ] ?? - array( - 'max_chunks' => 10, - 'chunk_size' => 100, - ); - - $chunks_sent = 0; - - $last_item = $this->get_last_item( $config ); - - while ( $chunks_sent < $limits['max_chunks'] && microtime( true ) < $send_until ) { - $objects = $this->get_next_chunk( $config, $status, $limits['chunk_size'] ); - - if ( $wpdb->last_error ) { - $status['error'] = true; - return $status; - } - - if ( empty( $objects ) ) { - $status['finished'] = true; - return $status; - } - // If we have objects as a key it means get_next_chunk is being overridden, we need to check for it being an empty array. - // In case it is an empty array, we should not send the action or increase the chunks_sent, we just need to update the status. - if ( ! isset( $objects['objects'] ) || array() !== $objects['objects'] ) { - $key = $this->full_sync_action_name() . '_' . crc32( wp_json_encode( $status['last_sent'] ) ); - $result = $this->send_action( $this->full_sync_action_name(), array( $objects, $status['last_sent'] ), $key ); - if ( is_wp_error( $result ) || $wpdb->last_error ) { - $status['error'] = true; - return $status; - } - ++$chunks_sent; - } - - // Updated the sent and last_sent status. - $status = $this->set_send_full_sync_actions_status( $status, $objects ); - if ( $last_item === $status['last_sent'] ) { - $status['finished'] = true; - return $status; - } - } - - return $status; - } - - /** - * Set the status of the full sync action based on the objects that were sent. - * Used to update the status of the module after sending a chunk of objects. - * Since Full Sync logic chunking relies on order of items being processed in descending order, we need to sort - * due to some modules (e.g. WooCommerce) changing the order while getting the objects. - * - * @access protected - * - * @param array $status This module Full Sync status. - * @param array $objects This module Full Sync objects. - * - * @return array The updated status. - */ - protected function set_send_full_sync_actions_status( $status, $objects ) { - - $object_ids = $objects['object_ids'] ?? $objects; - $status['last_sent'] = end( $object_ids ); - $status['sent'] += count( $object_ids ); - return $status; - } - - /** - * Immediately sends a single item without firing or enqueuing it - * - * @param string $action_name The action. - * @param array $data The data associated with the action. - * @param string $key The key to use for the action. - */ - public function send_action( $action_name, $data = null, $key = null ) { - $sender = Sender::get_instance(); - return $sender->send_action( $action_name, $data, $key ); - } - - /** - * Retrieve chunk IDs with previous interval end. - * - * @access protected - * - * @param array $chunks All remaining items. - * @param int $previous_interval_end The last item from the previous interval. - * @return array Chunk IDs with the previous interval end. - */ - protected function get_chunks_with_preceding_end( $chunks, $previous_interval_end ) { - $chunks_with_ends = array(); - foreach ( $chunks as $chunk ) { - $chunks_with_ends[] = array( - 'ids' => $chunk, - 'previous_end' => $previous_interval_end, - ); - // Chunks are ordered in descending order. - $previous_interval_end = end( $chunk ); - } - return $chunks_with_ends; - } - - /** - * Get metadata of a particular object type within the designated meta key whitelist. - * - * @access protected - * - * @todo Refactor to use $wpdb->prepare() on the SQL query. - * - * @param array $ids Object IDs. - * @param string $meta_type Meta type. - * @param array $meta_key_whitelist Meta key whitelist. - * @return array Unserialized meta values. - */ - protected function get_metadata( $ids, $meta_type, $meta_key_whitelist ) { - global $wpdb; - $table = _get_meta_table( $meta_type ); - $id = $meta_type . '_id'; - if ( ! $table ) { - return array(); - } - - $private_meta_whitelist_sql = "'" . implode( "','", array_map( 'esc_sql', $meta_key_whitelist ) ) . "'"; - - return array_map( - array( $this, 'unserialize_meta' ), - $wpdb->get_results( - // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.PreparedSQL.NotPrepared - "SELECT $id, meta_key, meta_value, meta_id FROM $table WHERE $id IN ( " . implode( ',', wp_parse_id_list( $ids ) ) . ' )' . - " AND meta_key IN ( $private_meta_whitelist_sql ) ", - // phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.PreparedSQL.NotPrepared - OBJECT - ) - ); - } - - /** - * Initialize listeners for the particular meta type. - * - * @access public - * - * @param string $meta_type Meta type. - * @param callable $callable Action handler callable. - */ - public function init_listeners_for_meta_type( $meta_type, $callable ) { - add_action( "added_{$meta_type}_meta", $callable, 10, 4 ); - add_action( "updated_{$meta_type}_meta", $callable, 10, 4 ); - add_action( "deleted_{$meta_type}_meta", $callable, 10, 4 ); - } - - /** - * Initialize meta whitelist handler for the particular meta type. - * - * @access public - * - * @param string $meta_type Meta type. - * @param callable $whitelist_handler Action handler callable. - */ - public function init_meta_whitelist_handler( $meta_type, $whitelist_handler ) { - add_filter( "jetpack_sync_before_enqueue_added_{$meta_type}_meta", $whitelist_handler ); - add_filter( "jetpack_sync_before_enqueue_updated_{$meta_type}_meta", $whitelist_handler ); - add_filter( "jetpack_sync_before_enqueue_deleted_{$meta_type}_meta", $whitelist_handler ); - } - - /** - * Retrieve the term relationships for the specified object IDs. - * - * @access protected - * - * @todo This feels too specific to be in the abstract sync Module class. Move it? - * - * @param array $ids Object IDs. - * @return array Term relationships - object ID and term taxonomy ID pairs. - */ - protected function get_term_relationships( $ids ) { - global $wpdb; - - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared - return $wpdb->get_results( "SELECT object_id, term_taxonomy_id FROM $wpdb->term_relationships WHERE object_id IN ( " . implode( ',', wp_parse_id_list( $ids ) ) . ' )', OBJECT ); - } - - /** - * Unserialize the value of a meta object, if necessary. - * - * @access public - * - * @param object $meta Meta object. - * @return object Meta object with possibly unserialized value. - */ - public function unserialize_meta( $meta ) { - $meta->meta_value = maybe_unserialize( $meta->meta_value ); - return $meta; - } - - /** - * Retrieve a set of objects by their IDs. - * - * @access public - * - * @param string $object_type Object type. - * @param array $ids Object IDs. - * @return array Array of objects. - */ - public function get_objects_by_id( $object_type, $ids ) { - if ( empty( $ids ) || empty( $object_type ) ) { - return array(); - } - - $objects = array(); - foreach ( (array) $ids as $id ) { - $object = $this->get_object_by_id( $object_type, $id ); - - // Only add object if we have the object. - if ( $object ) { - $objects[ $id ] = $object; - } - } - - return $objects; - } - - /** - * Gets a list of minimum and maximum object ids for each batch based on the given batch size. - * - * @access public - * - * @param int $batch_size The batch size for objects. - * @param string|bool $where_sql The sql where clause minus 'WHERE', or false if no where clause is needed. - * - * @return array|bool An array of min and max ids for each batch. FALSE if no table can be found. - */ - public function get_min_max_object_ids_for_batches( $batch_size, $where_sql = false ) { - - if ( ! $this->table() ) { - return false; - } - - $results = array(); - $table = $this->table(); - $current_max = 0; - $current_min = 1; - $id_field = $this->id_field(); - $replicastore = new Replicastore(); - - $total = $replicastore->get_min_max_object_id( - $id_field, - $table, - $where_sql, - false - ); - - while ( $total->max > $current_max ) { - $where = $where_sql ? - $where_sql . " AND $id_field > $current_max" : - "$id_field > $current_max"; - $result = $replicastore->get_min_max_object_id( - $id_field, - $table, - $where, - $batch_size - ); - if ( empty( $result->min ) && empty( $result->max ) ) { - // Our query produced no min and max. We can assume the min from the previous query, - // and the total max we found in the initial query. - $current_max = (int) $total->max; - $result = (object) array( - 'min' => $current_min, - 'max' => $current_max, - ); - } else { - $current_min = (int) $result->min; - $current_max = (int) $result->max; - } - $results[] = $result; - } - - return $results; - } - - /** - * Return Total number of objects. - * - * @param array $config Full Sync config. - * - * @return int total - */ - public function total( $config ) { - global $wpdb; - $table = $this->table(); - $where = $this->get_where_sql( $config ); - - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching - return (int) $wpdb->get_var( "SELECT COUNT(*) FROM $table WHERE $where" ); - } - - /** - * Retrieve the WHERE SQL clause based on the module config. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @return string WHERE SQL clause, or `null` if no comments are specified in the module config. - */ - public function get_where_sql( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - return '1=1'; - } - - /** - * Filters objects and metadata based on maximum size constraints. - * It always allows the first object with its metadata, even if they exceed the limit. - * - * @access public - * - * @param string $type The type of objects to filter (e.g., 'post' or 'comment'). - * @param array $objects The array of objects to filter (e.g., posts or comments). - * @param array $metadata The array of metadata to filter. - * @param int $max_meta_size Maximum size for individual objects. - * @param int $max_total_size Maximum combined size for objects and metadata. - * @return array An array containing the filtered object IDs, filtered objects, and filtered metadata. - */ - public function filter_objects_and_metadata_by_size( $type, $objects, $metadata, $max_meta_size, $max_total_size ) { - $filtered_objects = array(); - $filtered_metadata = array(); - $filtered_object_ids = array(); - $current_size = 0; - - foreach ( $objects as $object ) { - $object_size = strlen( maybe_serialize( $object ) ); - $current_metadata = array(); - $metadata_size = 0; - $id_field = $this->id_field(); - $object_id = (int) ( is_object( $object ) ? $object->{$id_field} : $object[ $id_field ] ); - - foreach ( $metadata as $key => $metadata_item ) { - if ( (int) $metadata_item->{$type . '_id'} === $object_id ) { - $metadata_item_size = strlen( maybe_serialize( $metadata_item->meta_value ) ); - if ( $metadata_item_size >= $max_meta_size ) { - $metadata_item->meta_value = ''; // Trim metadata if too large. - } - $current_metadata[] = $metadata_item; - $metadata_size += $metadata_item_size >= $max_meta_size ? 0 : $metadata_item_size; - - if ( ! empty( $filtered_object_ids ) && ( $current_size + $object_size + $metadata_size ) > $max_total_size ) { - break 2; // Exit both loops. - } - unset( $metadata[ $key ] ); - } - } - - // Always allow the first object with metadata. - if ( empty( $filtered_object_ids ) || ( $current_size + $object_size + $metadata_size ) <= $max_total_size ) { - $filtered_object_ids[] = strval( is_object( $object ) ? $object->{$id_field} : $object[ $id_field ] ); - $filtered_objects[] = $object; - $filtered_metadata = array_merge( $filtered_metadata, $current_metadata ); - $current_size += $object_size + $metadata_size; - } else { - break; - } - } - - return array( - $filtered_object_ids, - $filtered_objects, - $filtered_metadata, - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-network-options.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-network-options.php deleted file mode 100644 index 4fbfa3be..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-network-options.php +++ /dev/null @@ -1,251 +0,0 @@ -network_options_whitelist = Defaults::$default_network_options_whitelist; - } - - /** - * Enqueue the network options actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $max_items_to_enqueue Maximum number of items to enqueue. - * @param boolean $state True if full sync has finished enqueueing this module, false otherwise. - * @return array Number of actions enqueued, and next module state. - */ - public function enqueue_full_sync_actions( $config, $max_items_to_enqueue, $state ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - /** - * Tells the client to sync all options to the server - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * - * @param boolean Whether to expand options (should always be true) - */ - do_action( 'jetpack_full_sync_network_options', true ); - - // The number of actions enqueued, and next module state (true == done). - return array( 1, true ); - } - - /** - * Send the network options actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $send_until The timestamp until the current request can send. - * @param array $state This module Full Sync status. - * - * @return array This module Full Sync status. - */ - public function send_full_sync_actions( $config, $send_until, $state ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - // we call this instead of do_action when sending immediately. - $this->send_action( 'jetpack_full_sync_network_options', array( true ) ); - - // The number of actions enqueued, and next module state (true == done). - return array( 'finished' => true ); - } - - /** - * Retrieve an estimated number of actions that will be enqueued. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @return array Number of items yet to be enqueued. - */ - public function estimate_full_sync_actions( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - return 1; - } - - /** - * Retrieve the actions that will be sent for this module during a full sync. - * - * @access public - * - * @return array Full sync actions of this module. - */ - public function get_full_sync_actions() { - return array( 'jetpack_full_sync_network_options' ); - } - - /** - * Retrieve all network options as per the current network options whitelist. - * - * @access public - * - * @return array All network options. - */ - public function get_all_network_options() { - $options = array(); - foreach ( $this->network_options_whitelist as $option ) { - $options[ $option ] = get_site_option( $option ); - } - - return $options; - } - - /** - * Set the network options whitelist. - * - * @access public - * - * @param array $options The new network options whitelist. - */ - public function set_network_options_whitelist( $options ) { - $this->network_options_whitelist = $options; - } - - /** - * Get the network options whitelist. - * - * @access public - * - * @return array The network options whitelist. - */ - public function get_network_options_whitelist() { - return $this->network_options_whitelist; - } - - /** - * Reject non-whitelisted network options. - * - * @access public - * - * @param array $args The hook parameters. - * @return array|false $args The hook parameters, false if not a whitelisted network option. - */ - public function whitelist_network_options( $args ) { - if ( ! $this->is_whitelisted_network_option( $args[0] ) ) { - return false; - } - - return $args; - } - - /** - * Whether the option is a whitelisted network option. - * - * @access public - * - * @param string $option Option name. - * @return boolean True if this is a whitelisted network option. - */ - public function is_whitelisted_network_option( $option ) { - return in_array( $option, $this->network_options_whitelist, true ); - } - - /** - * Expand the network options within a hook before they are serialized and sent to the server. - * - * @access public - * - * @param array $args The hook parameters. - * @return array $args The hook parameters. - */ - public function expand_network_options( $args ) { - if ( $args[0] ) { - return $this->get_all_network_options(); - } - - return $args; - } - - /** - * Return Total number of objects. - * - * @param array $config Full Sync config. - * - * @return int total - */ - public function total( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - return count( (array) $this->network_options_whitelist ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-options.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-options.php deleted file mode 100644 index d21dee9b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-options.php +++ /dev/null @@ -1,480 +0,0 @@ -update_options_whitelist(); - $this->update_options_contentless(); - } - - /** - * Set module defaults at a later time. - * - * @access public - */ - public function set_late_default() { - /** This filter is already documented in json-endpoints/jetpack/class.wpcom-json-api-get-option-endpoint.php */ - $late_options = apply_filters( 'jetpack_options_whitelist', array() ); - if ( ! empty( $late_options ) && is_array( $late_options ) ) { - $this->options_whitelist = array_merge( $this->options_whitelist, $late_options ); - } - } - - /** - * Add old deprecated options to the list of options to keep in sync. - * - * @since 1.14.0 - * - * @access public - * - * @param array $options The default list of site options. - */ - public function add_deprecated_options( $options ) { - global $wp_version; - - $deprecated_options = array( - 'blacklist_keys' => '5.5-alpha', // Replaced by disallowed_keys. - 'comment_whitelist' => '5.5-alpha', // Replaced by comment_previously_approved. - ); - - foreach ( $deprecated_options as $option => $version ) { - if ( version_compare( $wp_version, $version, '<=' ) ) { - $options[] = $option; - } - } - - return $options; - } - - /** - * Enqueue the options actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $max_items_to_enqueue Maximum number of items to enqueue. - * @param boolean $state True if full sync has finished enqueueing this module, false otherwise. - * @return array Number of actions enqueued, and next module state. - */ - public function enqueue_full_sync_actions( $config, $max_items_to_enqueue, $state ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - /** - * Tells the client to sync all options to the server - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * - * @param boolean Whether to expand options (should always be true) - */ - do_action( 'jetpack_full_sync_options', true ); - - // The number of actions enqueued, and next module state (true == done). - return array( 1, true ); - } - - /** - * Send the options actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $send_until The timestamp until the current request can send. - * @param array $state This module Full Sync status. - * - * @return array This module Full Sync status. - */ - public function send_full_sync_actions( $config, $send_until, $state ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - // we call this instead of do_action when sending immediately. - $this->send_action( 'jetpack_full_sync_options', array( true ) ); - - // The number of actions enqueued, and next module state (true == done). - return array( 'finished' => true ); - } - - /** - * Retrieve an estimated number of actions that will be enqueued. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @return int Number of items yet to be enqueued. - */ - public function estimate_full_sync_actions( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - return 1; - } - - /** - * Retrieve the actions that will be sent for this module during a full sync. - * - * @access public - * - * @return array Full sync actions of this module. - */ - public function get_full_sync_actions() { - return array( 'jetpack_full_sync_options' ); - } - - /** - * Retrieve all options as per the current options whitelist. - * Public so that we don't have to store so much data all the options twice. - * - * @access public - * - * @return array All options. - */ - public function get_all_options() { - $options = array(); - $random_string = wp_generate_password(); - foreach ( $this->options_whitelist as $option ) { - if ( str_starts_with( $option, Settings::SETTINGS_OPTION_PREFIX ) ) { - $option_value = Settings::get_setting( str_replace( Settings::SETTINGS_OPTION_PREFIX, '', $option ) ); - $options[ $option ] = $option_value; - } else { - $option_value = get_option( $option, $random_string ); - if ( $option_value !== $random_string ) { - $options[ $option ] = $option_value; - } - } - } - - // Add theme mods. - $theme_mods_option = 'theme_mods_' . get_option( 'stylesheet' ); - $theme_mods_value = get_option( $theme_mods_option, $random_string ); - if ( $theme_mods_value === $random_string ) { - return $options; - } - $this->filter_theme_mods( $theme_mods_value ); - $options[ $theme_mods_option ] = $theme_mods_value; - return $options; - } - - /** - * Update the options whitelist to the default one. - * - * @access public - */ - public function update_options_whitelist() { - $this->options_whitelist = Defaults::get_options_whitelist(); - } - - /** - * Set the options whitelist. - * - * @access public - * - * @param array $options The new options whitelist. - */ - public function set_options_whitelist( $options ) { - $this->options_whitelist = $options; - } - - /** - * Get the options whitelist. - * - * @access public - * - * @return array The options whitelist. - */ - public function get_options_whitelist() { - return $this->options_whitelist; - } - - /** - * Update the contentless options to the defaults. - * - * @access public - */ - public function update_options_contentless() { - $this->options_contentless = Defaults::get_options_contentless(); - } - - /** - * Get the contentless options. - * - * @access public - * - * @return array Array of the contentless options. - */ - public function get_options_contentless() { - return $this->options_contentless; - } - - /** - * Reject any options that aren't whitelisted or contentless. - * - * @access public - * - * @param array $args The hook parameters. - * @return array $args The hook parameters. - */ - public function whitelist_options( $args ) { - // Reject non-whitelisted options. - if ( ! $this->is_whitelisted_option( $args[0] ) ) { - return false; - } - - // Filter our weird array( false ) value for theme_mods_*. - if ( str_starts_with( $args[0], 'theme_mods_' ) ) { - $this->filter_theme_mods( $args[1] ); - if ( isset( $args[2] ) ) { - $this->filter_theme_mods( $args[2] ); - } - } - - // Set value(s) of contentless option to empty string(s). - if ( $this->is_contentless_option( $args[0] ) ) { - // Create a new array matching length of $args, containing empty strings. - $empty = array_fill( 0, count( $args ), '' ); - $empty[0] = $args[0]; - return $empty; - } - - return $args; - } - - /** - * Whether a certain option is whitelisted for sync. - * - * @access public - * - * @param string $option Option name. - * @return boolean Whether the option is whitelisted. - */ - public function is_whitelisted_option( $option ) { - return in_array( $option, $this->options_whitelist, true ) || str_starts_with( $option, 'theme_mods_' ); - } - - /** - * Whether a certain option is a contentless one. - * - * @access private - * - * @param string $option Option name. - * @return boolean Whether the option is contentless. - */ - private function is_contentless_option( $option ) { - return in_array( $option, $this->options_contentless, true ); - } - - /** - * Filters out falsy values from theme mod options. - * - * @access private - * - * @param array $value Option value. - */ - private function filter_theme_mods( &$value ) { - if ( is_array( $value ) && isset( $value[0] ) ) { - unset( $value[0] ); - } - } - - /** - * Handle changes in the core site icon and sync them. - * - * @access public - */ - public function jetpack_sync_core_icon() { - $url = get_site_icon_url(); - - $jetpack_url = \Jetpack_Options::get_option( 'site_icon_url' ); - if ( defined( 'JETPACK__PLUGIN_DIR' ) ) { - if ( ! function_exists( 'jetpack_site_icon_url' ) ) { - require_once JETPACK__PLUGIN_DIR . 'modules/site-icon/site-icon-functions.php'; - } - $jetpack_url = jetpack_site_icon_url(); - } - - // If there's a core icon, maybe update the option. If not, fall back to Jetpack's. - if ( ! empty( $url ) && $jetpack_url !== $url ) { - // This is the option that is synced with dotcom. - \Jetpack_Options::update_option( 'site_icon_url', $url ); - } elseif ( empty( $url ) ) { - \Jetpack_Options::delete_option( 'site_icon_url' ); - } - } - - /** - * Expand all options within a hook before they are serialized and sent to the server. - * - * @access public - * - * @param array $args The hook parameters. - * @return array $args The hook parameters. - */ - public function expand_options( $args ) { - if ( $args[0] ) { - return $this->get_all_options(); - } - - return $args; - } - - /** - * Return Total number of objects. - * - * @param array $config Full Sync config. - * - * @return int total - */ - public function total( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - return count( Defaults::get_options_whitelist() ); - } - - /** - * Retrieve a set of options by their IDs. - * - * @access public - * - * @param string $object_type Object type. - * @param array $ids Object IDs. - * @return array Array of objects. - */ - public function get_objects_by_id( $object_type, $ids ) { - if ( empty( $ids ) || empty( $object_type ) || 'option' !== $object_type ) { - return array(); - } - - $objects = array(); - foreach ( (array) $ids as $id ) { - $object = $this->get_object_by_id( $object_type, $id ); - - // Only add object if we have the object. - if ( 'OPTION-DOES-NOT-EXIST' !== $object ) { - if ( 'all' === $id ) { - // If all was requested it contains all options and can simply be returned. - return $object; - } - $objects[ $id ] = $object; - } - } - - return $objects; - } - - /** - * Retrieve an option by its name. - * - * @access public - * - * @param string $object_type Type of the sync object. - * @param string $id ID of the sync object. - * @return mixed Value of Option or 'OPTION-DOES-NOT-EXIST' if not found. - */ - public function get_object_by_id( $object_type, $id ) { - if ( 'option' === $object_type ) { - // Utilize Random string as default value to distinguish between false and not exist. - $random_string = wp_generate_password(); - // Only whitelisted options can be returned. - if ( in_array( $id, $this->options_whitelist, true ) ) { - if ( str_starts_with( $id, Settings::SETTINGS_OPTION_PREFIX ) ) { - $option_value = Settings::get_setting( str_replace( Settings::SETTINGS_OPTION_PREFIX, '', $id ) ); - return $option_value; - } else { - $option_value = get_option( $id, $random_string ); - if ( $option_value !== $random_string ) { - return $option_value; - } - } - } elseif ( 'all' === $id ) { - return $this->get_all_options(); - } - } - - return 'OPTION-DOES-NOT-EXIST'; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-plugins.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-plugins.php deleted file mode 100644 index 3274caf7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-plugins.php +++ /dev/null @@ -1,407 +0,0 @@ -action_handler = $callable; - - add_action( 'deleted_plugin', array( $this, 'deleted_plugin' ), 10, 2 ); - add_action( 'activated_plugin', $callable, 10, 2 ); - add_action( 'deactivated_plugin', $callable, 10, 2 ); - add_action( 'delete_plugin', array( $this, 'delete_plugin' ) ); - add_filter( 'upgrader_pre_install', array( $this, 'populate_plugins' ), 10, 1 ); - add_action( 'upgrader_process_complete', array( $this, 'on_upgrader_completion' ), 10, 2 ); - add_action( 'jetpack_plugin_installed', $callable, 10, 1 ); - add_action( 'jetpack_plugin_update_failed', $callable, 10, 4 ); - add_action( 'jetpack_plugins_updated', $callable, 10, 2 ); - add_action( 'jetpack_edited_plugin', $callable, 10, 2 ); - add_action( 'wp_ajax_edit-theme-plugin-file', array( $this, 'plugin_edit_ajax' ), 0 ); - - // Note that we don't simply 'expand_plugin_data' on the 'delete_plugin' action here because the plugin file is deleted when that action finishes. - add_filter( 'jetpack_sync_before_enqueue_activated_plugin', array( $this, 'expand_plugin_data' ) ); - add_filter( 'jetpack_sync_before_enqueue_deactivated_plugin', array( $this, 'expand_plugin_data' ) ); - } - - /** - * Fetch and populate all current plugins before upgrader installation. - * - * @access public - * - * @param bool|WP_Error $response Install response, true if successful, WP_Error if not. - */ - public function populate_plugins( $response ) { - if ( ! function_exists( 'get_plugins' ) ) { - require_once ABSPATH . 'wp-admin/includes/plugin.php'; - } - $this->plugins = get_plugins(); - return $response; - } - - /** - * Handler for the upgrader success finishes. - * - * @access public - * - * @param \WP_Upgrader $upgrader Upgrader instance. - * @param array $details Array of bulk item update data. - */ - public function on_upgrader_completion( $upgrader, $details ) { - if ( ! isset( $details['type'] ) ) { - return; - } - if ( 'plugin' !== $details['type'] ) { - return; - } - - if ( ! isset( $details['action'] ) ) { - return; - } - - $plugins = ( isset( $details['plugins'] ) ? $details['plugins'] : null ); - if ( empty( $plugins ) ) { - $plugins = ( isset( $details['plugin'] ) ? array( $details['plugin'] ) : null ); - } - - // For plugin installer. - if ( empty( $plugins ) && method_exists( $upgrader, 'plugin_info' ) ) { - // @phan-suppress-next-line PhanUndeclaredMethod -- Checked above. See also https://github.com/phan/phan/issues/1204. - $plugins = array( $upgrader->plugin_info() ); - } - - if ( empty( $plugins ) ) { - return; // We shouldn't be here. - } - - switch ( $details['action'] ) { - case 'update': - $this->state = array( - 'is_autoupdate' => Jetpack_Constants::is_true( 'JETPACK_PLUGIN_AUTOUPDATE' ), - ); - $errors = $this->get_errors( $upgrader->skin ); - if ( $errors ) { - foreach ( $plugins as $slug ) { - /** - * Sync that a plugin update failed - * - * @since 1.6.3 - * @since-jetpack 5.8.0 - * - * @module sync - * - * @param string $plugin , Plugin slug - * @param string Error code - * @param string Error message - */ - do_action( 'jetpack_plugin_update_failed', $this->get_plugin_info( $slug ), $errors['code'], $errors['message'], $this->state ); - } - - return; - } - - $this->plugins_updated = array_map( array( $this, 'get_plugin_info' ), $plugins ); - add_action( 'shutdown', array( $this, 'sync_plugins_updated' ), 9 ); - - break; - case 'install': - /** - * Signals to the sync listener that a plugin was installed and a sync action - * reflecting the installation and the plugin info should be sent - * - * @since 1.6.3 - * @since-jetpack 5.8.0 - * - * @module sync - * - * @param array () $plugin, Plugin Data - */ - do_action( 'jetpack_plugin_installed', array_map( array( $this, 'get_plugin_info' ), $plugins ) ); - } - } - - /** - * Retrieve the plugin information by a plugin slug. - * - * @access private - * - * @param string $slug Plugin slug. - * @return array Plugin information. - */ - private function get_plugin_info( $slug ) { - $plugins = get_plugins(); // Get the most up to date info. - if ( isset( $plugins[ $slug ] ) ) { - return array_merge( array( 'slug' => $slug ), $plugins[ $slug ] ); - } - // Try grabbing the info from before the update. - return isset( $this->plugins[ $slug ] ) ? array_merge( array( 'slug' => $slug ), $this->plugins[ $slug ] ) : array( 'slug' => $slug ); - } - - /** - * Retrieve upgrade errors. - * - * @access private - * - * @param \Automatic_Upgrader_Skin|\WP_Upgrader_Skin $skin The upgrader skin being used. - * @return array|boolean Error on error, false otherwise. - */ - private function get_errors( $skin ) { - // @phan-suppress-next-line PhanUndeclaredMethod -- Checked before being called. See also https://github.com/phan/phan/issues/1204. - $errors = method_exists( $skin, 'get_errors' ) ? $skin->get_errors() : null; - if ( is_wp_error( $errors ) ) { - $error_code = $errors->get_error_code(); - if ( ! empty( $error_code ) ) { - return array( - 'code' => $error_code, - 'message' => $errors->get_error_message(), - ); - } - } - - if ( isset( $skin->result ) ) { - $errors = $skin->result; - if ( is_wp_error( $errors ) ) { - return array( - 'code' => $errors->get_error_code(), - 'message' => $errors->get_error_message(), - ); - } - - if ( empty( $skin->result ) ) { - return array( - 'code' => 'unknown', - 'message' => __( 'Unknown Plugin Update Failure', 'jetpack-sync' ), - ); - } - } - return false; - } - - /** - * Handle plugin ajax edit in the administration. - * - * @access public - * - * @todo Update this method to use WP_Filesystem instead of fopen/fclose. - */ - public function plugin_edit_ajax() { - // This validation is based on wp_edit_theme_plugin_file(). - if ( empty( $_POST['file'] ) ) { - return; - } - - $file = wp_unslash( $_POST['file'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Validated manually just after. - if ( 0 !== validate_file( $file ) ) { - return; - } - - if ( ! isset( $_POST['newcontent'] ) ) { - return; - } - - if ( ! isset( $_POST['nonce'] ) ) { - return; - } - - if ( empty( $_POST['plugin'] ) ) { - return; - } - - $plugin = wp_unslash( $_POST['plugin'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Validated manually just after. - if ( ! current_user_can( 'edit_plugins' ) ) { - return; - } - - if ( ! wp_verify_nonce( $_POST['nonce'], 'edit-plugin_' . $file ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput -- WP core doesn't pre-sanitize nonces either. - return; - } - $plugins = get_plugins(); - if ( ! array_key_exists( $plugin, $plugins ) ) { - return; - } - - if ( 0 !== validate_file( $file, get_plugin_files( $plugin ) ) ) { - return; - } - - $real_file = WP_PLUGIN_DIR . '/' . $file; - - // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_is_writable - if ( ! is_writable( $real_file ) ) { - return; - } - - // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fopen - $file_pointer = fopen( $real_file, 'w+' ); - if ( false === $file_pointer ) { - return; - } - // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fclose - fclose( $file_pointer ); - /** - * This action is documented already in this file - */ - do_action( 'jetpack_edited_plugin', $plugin, $plugins[ $plugin ] ); - } - - /** - * Handle plugin deletion. - * - * @access public - * - * @param string $plugin_path Path to the plugin main file. - */ - public function delete_plugin( $plugin_path ) { - $full_plugin_path = WP_PLUGIN_DIR . DIRECTORY_SEPARATOR . $plugin_path; - - // Checking for file existence because some sync plugin module tests simulate plugin installation and deletion without putting file on disk. - if ( file_exists( $full_plugin_path ) ) { - $all_plugin_data = get_plugin_data( $full_plugin_path ); - $data = array( - 'name' => $all_plugin_data['Name'], - 'version' => $all_plugin_data['Version'], - ); - } else { - $data = array( - 'name' => $plugin_path, - 'version' => 'unknown', - ); - } - - $this->plugin_info[ $plugin_path ] = $data; - } - - /** - * Invoked after plugin deletion. - * - * @access public - * - * @param string $plugin_path Path to the plugin main file. - * @param boolean $is_deleted Whether the plugin was deleted successfully. - */ - public function deleted_plugin( $plugin_path, $is_deleted ) { - call_user_func( $this->action_handler, $plugin_path, $is_deleted, $this->plugin_info[ $plugin_path ] ); - unset( $this->plugin_info[ $plugin_path ] ); - } - - /** - * Expand the plugins within a hook before they are serialized and sent to the server. - * - * @access public - * - * @param array $args The hook parameters. - * @return array $args The expanded hook parameters. - */ - public function expand_plugin_data( $args ) { - $plugin_path = $args[0]; - $plugin_data = array(); - - if ( ! function_exists( 'get_plugins' ) ) { - require_once ABSPATH . 'wp-admin/includes/plugin.php'; - } - $all_plugins = get_plugins(); - if ( isset( $all_plugins[ $plugin_path ] ) ) { - $all_plugin_data = $all_plugins[ $plugin_path ]; - $plugin_data['name'] = $all_plugin_data['Name']; - $plugin_data['version'] = $all_plugin_data['Version']; - } - - return array( - $args[0], - $args[1], - $plugin_data, - ); - } - - /** - * Helper method for firing the 'jetpack_plugins_updated' action on shutdown. - * - * @access public - */ - public function sync_plugins_updated() { - /** - * Sync that a plugin update - * - * @since 1.6.3 - * @since-jetpack 5.8.0 - * - * @module sync - * - * @param array () $plugin, Plugin Data - */ - do_action( 'jetpack_plugins_updated', $this->plugins_updated, $this->state ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-posts.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-posts.php deleted file mode 100644 index cad3b5c3..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-posts.php +++ /dev/null @@ -1,922 +0,0 @@ - length. - * Current Setting : 5MB. - * - * @access public - * - * @var int - */ - const MAX_POST_CONTENT_LENGTH = 5000000; - - /** - * Default previous post state. - * Used for default previous post status. - * - * @access public - * - * @var string - */ - const DEFAULT_PREVIOUS_STATE = 'new'; - - /** - * Sync module name. - * - * @access public - * - * @return string - */ - public function name() { - return 'posts'; - } - - /** - * The table name. - * - * @access public - * - * @return string - * @deprecated since 3.11.0 Use table() instead. - */ - public function table_name() { - _deprecated_function( __METHOD__, '3.11.0', 'Automattic\\Jetpack\\Sync\\Posts->table' ); - return 'posts'; - } - - /** - * The table in the database with the prefix. - * - * @access public - * - * @return string|bool - */ - public function table() { - global $wpdb; - return $wpdb->posts; - } - - /** - * Retrieve a post by its ID. - * - * @access public - * - * @param string $object_type Type of the sync object. - * @param int $id ID of the sync object. - * @return \WP_Post|bool Filtered \WP_Post object, or false if the object is not a post. - */ - public function get_object_by_id( $object_type, $id ) { - if ( 'post' === $object_type ) { - $post = get_post( (int) $id ); - if ( $post ) { - return $this->filter_post_content_and_add_links( $post ); - } - } - - return false; - } - - /** - * Initialize posts action listeners. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_listeners( $callable ) { - $this->action_handler = $callable; - - add_action( 'wp_insert_post', array( $this, 'wp_insert_post' ), 11, 3 ); - add_action( 'wp_after_insert_post', array( $this, 'wp_after_insert_post' ), 11, 2 ); - add_action( 'jetpack_sync_save_post', $callable, 10, 4 ); - - add_action( 'deleted_post', $callable, 10 ); - add_action( 'jetpack_published_post', $callable, 10, 3 ); - add_filter( 'jetpack_sync_before_enqueue_deleted_post', array( $this, 'filter_blacklisted_post_types_deleted' ) ); - - add_action( 'transition_post_status', array( $this, 'save_published' ), 10, 3 ); - - // Listen for meta changes. - $this->init_listeners_for_meta_type( 'post', $callable ); - $this->init_meta_whitelist_handler( 'post', array( $this, 'filter_meta' ) ); - - add_filter( 'jetpack_sync_before_enqueue_jetpack_sync_save_post', array( $this, 'filter_jetpack_sync_before_enqueue_jetpack_sync_save_post' ) ); - add_filter( 'jetpack_sync_before_enqueue_jetpack_published_post', array( $this, 'filter_jetpack_sync_before_enqueue_jetpack_published_post' ) ); - - add_action( 'jetpack_daily_akismet_meta_cleanup_before', array( $this, 'daily_akismet_meta_cleanup_before' ) ); - add_action( 'jetpack_daily_akismet_meta_cleanup_after', array( $this, 'daily_akismet_meta_cleanup_after' ) ); - add_action( 'jetpack_post_meta_batch_delete', $callable, 10, 2 ); - } - - /** - * Before Akismet's daily cleanup of spam detection metadata. - * - * @access public - * - * @param array $feedback_ids IDs of feedback posts. - */ - public function daily_akismet_meta_cleanup_before( $feedback_ids ) { - remove_action( 'deleted_post_meta', $this->action_handler ); - - if ( ! is_array( $feedback_ids ) || count( $feedback_ids ) < 1 ) { - return; - } - - $ids_chunks = array_chunk( $feedback_ids, 100, false ); - foreach ( $ids_chunks as $chunk ) { - /** - * Used for syncing deletion of batch post meta - * - * @since 1.6.3 - * @since-jetpack 6.1.0 - * - * @module sync - * - * @param array $feedback_ids feedback post IDs - * @param string $meta_key to be deleted - */ - do_action( 'jetpack_post_meta_batch_delete', $chunk, '_feedback_akismet_values' ); - } - } - - /** - * After Akismet's daily cleanup of spam detection metadata. - * - * @access public - * - * @param array $feedback_ids IDs of feedback posts. - */ - public function daily_akismet_meta_cleanup_after( $feedback_ids ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - add_action( 'deleted_post_meta', $this->action_handler ); - } - - /** - * Initialize posts action listeners for full sync. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_full_sync_listeners( $callable ) { - add_action( 'jetpack_full_sync_posts', $callable ); // Also sends post meta. - } - - /** - * Initialize the module in the sender. - * - * @access public - */ - public function init_before_send() { - // meta. - add_filter( 'jetpack_sync_before_send_added_post_meta', array( $this, 'trim_post_meta' ) ); - add_filter( 'jetpack_sync_before_send_updated_post_meta', array( $this, 'trim_post_meta' ) ); - add_filter( 'jetpack_sync_before_send_deleted_post_meta', array( $this, 'trim_post_meta' ) ); - // Full sync. - $sync_module = Modules::get_module( 'full-sync' ); - if ( $sync_module instanceof Full_Sync_Immediately ) { - add_filter( 'jetpack_sync_before_send_jetpack_full_sync_posts', array( $this, 'build_full_sync_action_array' ) ); - } else { - add_filter( 'jetpack_sync_before_send_jetpack_full_sync_posts', array( $this, 'expand_posts_with_metadata_and_terms' ) ); - } - } - - /** - * Enqueue the posts actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $max_items_to_enqueue Maximum number of items to enqueue. - * @param boolean $state True if full sync has finished enqueueing this module, false otherwise. - * @return array Number of actions enqueued, and next module state. - */ - public function enqueue_full_sync_actions( $config, $max_items_to_enqueue, $state ) { - global $wpdb; - - return $this->enqueue_all_ids_as_action( 'jetpack_full_sync_posts', $wpdb->posts, 'ID', $this->get_where_sql( $config ), $max_items_to_enqueue, $state ); - } - - /** - * Retrieve an estimated number of actions that will be enqueued. - * - * @access public - * - * @todo Use $wpdb->prepare for the SQL query. - * - * @param array $config Full sync configuration for this sync module. - * @return array Number of items yet to be enqueued. - */ - public function estimate_full_sync_actions( $config ) { - global $wpdb; - - $query = "SELECT count(*) FROM $wpdb->posts WHERE " . $this->get_where_sql( $config ); - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching - $count = (int) $wpdb->get_var( $query ); - - return (int) ceil( $count / self::ARRAY_CHUNK_SIZE ); - } - - /** - * Retrieve the WHERE SQL clause based on the module config. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @return string WHERE SQL clause, or `null` if no comments are specified in the module config. - */ - public function get_where_sql( $config ) { - $where_sql = Settings::get_blacklisted_post_types_sql(); - - // Config is a list of post IDs to sync. - if ( is_array( $config ) ) { - $where_sql .= ' AND ID IN (' . implode( ',', array_map( 'intval', $config ) ) . ')'; - } - - return $where_sql; - } - - /** - * Retrieve the actions that will be sent for this module during a full sync. - * - * @access public - * - * @return array Full sync actions of this module. - */ - public function get_full_sync_actions() { - return array( 'jetpack_full_sync_posts' ); - } - - /** - * Filter meta arguments so that we don't sync meta_values over MAX_META_LENGTH. - * - * @param array $args action arguments. - * - * @return array filtered action arguments. - */ - public function trim_post_meta( $args ) { - list( $meta_id, $object_id, $meta_key, $meta_value ) = $args; - // Explicitly truncate meta_value when it exceeds limit. - // Large content will cause OOM issues and break Sync. - $serialized_value = maybe_serialize( $meta_value ); - if ( strlen( $serialized_value ) >= self::MAX_META_LENGTH ) { - $meta_value = ''; - } - return array( $meta_id, $object_id, $meta_key, $meta_value ); - } - - /** - * Process content before send. - * - * @param array $args Arguments of the `wp_insert_post` hook. - * - * @return array - */ - public function expand_jetpack_sync_save_post( $args ) { - list( $post_id, $post, $update, $previous_state ) = $args; - return array( $post_id, $this->filter_post_content_and_add_links( $post ), $update, $previous_state ); - } - - /** - * Filter all blacklisted post types and add filtered post content. - * - * @param array $args Hook arguments. - * @return array|false Hook arguments, or false if the post type is a blacklisted one. - */ - public function filter_jetpack_sync_before_enqueue_jetpack_sync_save_post( $args ) { - list( $post_id, $post, $update, $previous_state ) = $args; - - if ( in_array( $post->post_type, Settings::get_setting( 'post_types_blacklist' ), true ) ) { - return false; - } - - return array( $post_id, $this->filter_post_content_and_add_links( $post ), $update, $previous_state ); - } - - /** - * Add filtered post content. - * - * @param array $args Hook arguments. - * @return array Hook arguments. - */ - public function filter_jetpack_sync_before_enqueue_jetpack_published_post( $args ) { - list( $post_id, $flags, $post ) = $args; - - return array( $post_id, $flags, $this->filter_post_content_and_add_links( $post ) ); - } - - /** - * Filter all blacklisted post types. - * - * @param array $args Hook arguments. - * @return array|false Hook arguments, or false if the post type is a blacklisted one. - */ - public function filter_blacklisted_post_types_deleted( $args ) { - - // deleted_post is called after the SQL delete but before cache cleanup. - // There is the potential we can't detect post_type at this point. - if ( ! $this->is_post_type_allowed( $args[0] ) ) { - return false; - } - - return $args; - } - - /** - * Filter all meta that is not blacklisted, or is stored for a disallowed post type. - * - * @param array $args Hook arguments. - * @return array|false Hook arguments, or false if meta was filtered. - */ - public function filter_meta( $args ) { - if ( $this->is_post_type_allowed( $args[1] ) && $this->is_whitelisted_post_meta( $args[2] ) ) { - return $args; - } - - return false; - } - - /** - * Whether a post meta key is whitelisted. - * - * @param string $meta_key Meta key. - * @return boolean Whether the post meta key is whitelisted. - */ - public function is_whitelisted_post_meta( $meta_key ) { - // The _wpas_skip_ meta key is used by Publicize. - return in_array( $meta_key, Settings::get_setting( 'post_meta_whitelist' ), true ) || str_starts_with( $meta_key, '_wpas_skip_' ); - } - - /** - * Whether a post type is allowed. - * A post type will be disallowed if it's present in the post type blacklist. - * - * @param int $post_id ID of the post. - * @return boolean Whether the post type is allowed. - */ - public function is_post_type_allowed( $post_id ) { - $post = get_post( (int) $post_id ); - - if ( isset( $post->post_type ) ) { - return ! in_array( $post->post_type, Settings::get_setting( 'post_types_blacklist' ), true ); - } - return false; - } - - /** - * Remove the embed shortcode. - * - * @global $wp_embed - */ - public function remove_embed() { - global $wp_embed; - remove_filter( 'the_content', array( $wp_embed, 'run_shortcode' ), 8 ); - // remove the embed shortcode since we would do the part later. - remove_shortcode( 'embed' ); - // Attempts to embed all URLs in a post. - remove_filter( 'the_content', array( $wp_embed, 'autoembed' ), 8 ); - } - - /** - * Add the embed shortcode. - * - * @global $wp_embed - */ - public function add_embed() { - global $wp_embed; - add_filter( 'the_content', array( $wp_embed, 'run_shortcode' ), 8 ); - // Shortcode placeholder for strip_shortcodes(). - add_shortcode( 'embed', '__return_false' ); - // Attempts to embed all URLs in a post. - add_filter( 'the_content', array( $wp_embed, 'autoembed' ), 8 ); - } - - /** - * Expands wp_insert_post to include filtered content - * - * @param \WP_Post $post_object Post object. - */ - public function filter_post_content_and_add_links( $post_object ) { - global $post; - - // Used to restore the post global. - $current_post = $post; - - // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited - $post = $post_object; - - // Return non existant post. - $post_type = get_post_type_object( $post->post_type ); - if ( empty( $post_type ) || ! is_object( $post_type ) ) { - $non_existant_post = new \stdClass(); - $non_existant_post->ID = $post->ID; - $non_existant_post->post_modified = $post->post_modified; - $non_existant_post->post_modified_gmt = $post->post_modified_gmt; - $non_existant_post->post_status = 'jetpack_sync_non_registered_post_type'; - $non_existant_post->post_type = $post->post_type; - // Restore global post. - // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited - $post = $current_post; - - return $non_existant_post; - } - /** - * Filters whether to prevent sending post data to .com - * - * Passing true to the filter will prevent the post data from being sent - * to the WordPress.com. - * Instead we pass data that will still enable us to do a checksum against the - * Jetpacks data but will prevent us from displaying the data on in the API as well as - * other services. - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * - * @param boolean false prevent post data from being synced to WordPress.com - * @param mixed $post \WP_Post object - */ - if ( apply_filters( 'jetpack_sync_prevent_sending_post_data', false, $post ) ) { - // We only send the bare necessary object to be able to create a checksum. - $blocked_post = new \stdClass(); - $blocked_post->ID = $post->ID; - $blocked_post->post_modified = $post->post_modified; - $blocked_post->post_modified_gmt = $post->post_modified_gmt; - $blocked_post->post_status = 'jetpack_sync_blocked'; - $blocked_post->post_type = $post->post_type; - - // Restore global post. - // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited - $post = $current_post; - - return $blocked_post; - } - - // lets not do oembed just yet. - $this->remove_embed(); - - if ( 0 < strlen( $post->post_password ) ) { - $post->post_password = 'auto-' . wp_generate_password( 10, false ); - } - - // Explicitly omit post_content when it exceeds limit. - // Large content will cause OOM issues and break Sync. - if ( strlen( $post->post_content ) >= self::MAX_POST_CONTENT_LENGTH ) { - $post->post_content = ''; - } - - /** This filter is already documented in core. wp-includes/post-template.php */ - if ( Settings::get_setting( 'render_filtered_content' ) && $post_type->public ) { - global $shortcode_tags; - /** - * Filter prevents some shortcodes from expanding. - * - * Since we can can expand some type of shortcode better on the .com side and make the - * expansion more relevant to contexts. For example [galleries] and subscription emails - * - * @since 1.6.3 - * @since-jetpack 4.5.0 - * - * @param array of shortcode tags to remove. - */ - $shortcodes_to_remove = apply_filters( - 'jetpack_sync_do_not_expand_shortcodes', - array( - 'gallery', - 'slideshow', - ) - ); - $removed_shortcode_callbacks = array(); - foreach ( $shortcodes_to_remove as $shortcode ) { - if ( isset( $shortcode_tags[ $shortcode ] ) ) { - $removed_shortcode_callbacks[ $shortcode ] = $shortcode_tags[ $shortcode ]; - } - } - - array_map( 'remove_shortcode', array_keys( $removed_shortcode_callbacks ) ); - /** - * Certain modules such as Likes, Related Posts and Sharedaddy are using `Settings::is_syncing` - * in order to NOT get rendered in filtered post content. - * Since the current method runs now before enqueueing instead of before sending, - * we are setting `is_syncing` flag to true in order to preserve the existing functionality. - */ - - $is_syncing_current = Settings::is_syncing(); - Settings::set_is_syncing( true ); - $post->post_content_filtered = apply_filters( 'the_content', $post->post_content ); - $post->post_excerpt_filtered = apply_filters( 'the_excerpt', $post->post_excerpt ); - Settings::set_is_syncing( $is_syncing_current ); - - foreach ( $removed_shortcode_callbacks as $shortcode => $callback ) { - add_shortcode( $shortcode, $callback ); - } - } - - $this->add_embed(); - - if ( has_post_thumbnail( $post->ID ) ) { - $image_attributes = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'full' ); - if ( is_array( $image_attributes ) && isset( $image_attributes[0] ) ) { - $post->featured_image = $image_attributes[0]; - } - } - - $post->permalink = get_permalink( $post->ID ); - $post->shortlink = wp_get_shortlink( $post->ID ); - - if ( function_exists( 'amp_get_permalink' ) ) { - $post->amp_permalink = amp_get_permalink( $post->ID ); - } - - $filtered_post = $post; - - // Restore global post. - // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited - $post = $current_post; - - return $filtered_post; - } - - /** - * Handle transition from another post status to a published one. - * - * @param string $new_status New post status. - * @param string $old_status Old post status. - * @param \WP_Post $post Post object. - */ - public function save_published( $new_status, $old_status, $post ) { - if ( 'publish' === $new_status && 'publish' !== $old_status ) { - $this->just_published[ $post->ID ] = true; - } - - $this->previous_status[ $post->ID ] = $old_status; - } - - /** - * When publishing or updating a post, the Gutenberg editor sends two requests: - * 1. sent to WP REST API endpoint `wp-json/wp/v2/posts/$id` - * 2. sent to wp-admin/post.php `?post=$id&action=edit&classic-editor=1&meta_box=1` - * - * The 2nd request is to update post meta, which is not supported on WP REST API. - * When syncing post data, we will include if this was a meta box update. - * - * @return boolean Whether this is a Gutenberg meta box update. - */ - private function is_gutenberg_meta_box_update() { - // phpcs:disable WordPress.Security.NonceVerification.Missing, WordPress.Security.NonceVerification.Recommended -- We only check the request to determine if this is a Gutenberg meta box update, and we only use the result to set a boolean logged in the sync event. If anyone anywhere else gets the flag and does something CSRF-able with it, they should ensure that a nonce has been checked. - return ( - isset( $_POST['action'], $_GET['classic-editor'], $_GET['meta_box'] ) && - 'editpost' === $_POST['action'] && - '1' === $_GET['classic-editor'] && - '1' === $_GET['meta_box'] - // phpcs:enable WordPress.Security.NonceVerification.Missing, WordPress.Security.NonceVerification.Recommended - ); - } - - /** - * Handler for the wp_insert_post hook. - * Called upon creation of a new post. - * - * @param int $post_ID Post ID. - * @param \WP_Post $post Post object. - * @param boolean $update Whether this is an existing post being updated or not. - */ - public function wp_insert_post( $post_ID, $post = null, $update = null ) { - if ( ! is_numeric( $post_ID ) || $post === null ) { - return; - } - - // Workaround for https://github.com/woocommerce/woocommerce/issues/18007. - if ( $post && 'shop_order' === $post->post_type ) { - $post = get_post( $post_ID ); - } - - $previous_status = isset( $this->previous_status[ $post_ID ] ) ? $this->previous_status[ $post_ID ] : self::DEFAULT_PREVIOUS_STATE; - - $just_published = isset( $this->just_published[ $post_ID ] ) ? $this->just_published[ $post_ID ] : false; - - $state = array( - 'is_auto_save' => (bool) Jetpack_Constants::get_constant( 'DOING_AUTOSAVE' ), - 'previous_status' => $previous_status, - 'just_published' => $just_published, - 'is_gutenberg_meta_box_update' => $this->is_gutenberg_meta_box_update(), - ); - /** - * Filter that is used to add to the post flags ( meta data ) when a post gets published - * - * @since 1.6.3 - * @since-jetpack 5.8.0 - * - * @param int $post_ID the post ID - * @param mixed $post \WP_Post object - * @param bool $update Whether this is an existing post being updated or not. - * @param mixed $state state - * - * @module sync - */ - do_action( 'jetpack_sync_save_post', $post_ID, $post, $update, $state ); - unset( $this->previous_status[ $post_ID ] ); - } - - /** - * Handler for the wp_after_insert_post hook. - * Called after creation/update of a new post. - * - * @param int $post_ID Post ID. - * @param \WP_Post $post Post object. - **/ - public function wp_after_insert_post( $post_ID, $post ) { - if ( ! is_numeric( $post_ID ) || $post === null ) { - return; - } - - // Workaround for https://github.com/woocommerce/woocommerce/issues/18007. - if ( $post && 'shop_order' === $post->post_type ) { - $post = get_post( $post_ID ); - } - - $this->send_published( $post_ID, $post ); - } - - /** - * Send a published post for sync. - * - * @param int $post_ID Post ID. - * @param \WP_Post $post Post object. - */ - public function send_published( $post_ID, $post ) { - if ( ! isset( $this->just_published[ $post_ID ] ) ) { - return; - } - - // Post revisions cause race conditions where this send_published add the action before the actual post gets synced. - if ( wp_is_post_autosave( $post ) || wp_is_post_revision( $post ) ) { - return; - } - - $post_flags = array( - 'post_type' => $post->post_type, - ); - - $author_user_object = get_user_by( 'id', $post->post_author ); - if ( $author_user_object ) { - $roles = new Roles(); - - $post_flags['author'] = array( - 'id' => $post->post_author, - 'wpcom_user_id' => get_user_meta( $post->post_author, 'wpcom_user_id', true ), - 'display_name' => $author_user_object->display_name, - 'email' => $author_user_object->user_email, - 'translated_role' => $roles->translate_user_to_role( $author_user_object ), - ); - } - - /** - * Filter that is used to add to the post flags ( meta data ) when a post gets published - * - * @since 1.6.3 - * @since-jetpack 4.4.0 - * - * @param mixed array post flags that are added to the post - * @param mixed $post \WP_Post object - */ - $flags = apply_filters( 'jetpack_published_post_flags', $post_flags, $post ); - - // Only Send Pulished Post event if post_type is not blacklisted. - if ( ! in_array( $post->post_type, Settings::get_setting( 'post_types_blacklist' ), true ) ) { - - /** - * Action that gets synced when a post type gets published. - * - * @since 1.6.3 - * @since-jetpack 4.4.0 - * - * @param int $post_ID - * @param mixed array $flags post flags that are added to the post - * @param WP_Post $post The post object - */ - do_action( 'jetpack_published_post', $post_ID, $flags, $post ); - } - unset( $this->just_published[ $post_ID ] ); - - /** - * Send additional sync action for Activity Log when post is a Customizer publish - */ - if ( 'customize_changeset' === $post->post_type ) { - $post_content = json_decode( $post->post_content, true ); - foreach ( $post_content as $key => $value ) { - // Skip if it isn't a widget. - if ( 'widget_' !== substr( $key, 0, strlen( 'widget_' ) ) ) { - continue; - } - // Change key from "widget_archives[2]" to "archives-2". - $key = str_replace( 'widget_', '', $key ); - $key = str_replace( '[', '-', $key ); - $key = str_replace( ']', '', $key ); - - global $wp_registered_widgets; - if ( isset( $wp_registered_widgets[ $key ] ) ) { - $widget_data = array( - 'name' => $wp_registered_widgets[ $key ]['name'], - 'id' => $key, - 'title' => $value['value']['title'], - ); - do_action( 'jetpack_widget_edited', $widget_data ); - } - } - } - } - - /** - * Build the full sync action object for Posts. - * - * @access public - * - * @param array $args An array with the posts and the previous end. - * - * @return array An array with the posts, postmeta and the previous end. - */ - public function build_full_sync_action_array( $args ) { - list( $filtered_posts, $previous_end ) = $args; - return array( - $filtered_posts['objects'], - $filtered_posts['meta'], - array(), // WPCOM does not process term relationships in full sync posts actions for a while now, let's skip them. - $previous_end, - ); - } - - /** - * Add term relationships to post objects within a hook before they are serialized and sent to the server. - * This is used in Full Sync Immediately - * - * @access public - * - * @param array $args The hook parameters. - * @return array $args The expanded hook parameters. - * @deprecated since 4.7.0 - */ - public function add_term_relationships( $args ) { - _deprecated_function( __METHOD__, '4.7.0' ); - list( $filtered_posts, $previous_interval_end ) = $args; - - return array( - $filtered_posts['objects'], - $filtered_posts['meta'], - $this->get_term_relationships( $filtered_posts['object_ids'] ), - $previous_interval_end, - ); - } - - /** - * Expand post IDs to post objects within a hook before they are serialized and sent to the server. - * This is used in Legacy Full Sync - * - * @access public - * - * @param array $args The hook parameters. - * @return array $args The expanded hook parameters. - */ - public function expand_posts_with_metadata_and_terms( $args ) { - list( $post_ids, $previous_interval_end ) = $args; - - $posts = $this->expand_posts( $post_ids ); - $posts_metadata = $this->get_metadata( $post_ids, 'post', Settings::get_setting( 'post_meta_whitelist' ) ); - $term_relationships = $this->get_term_relationships( $post_ids ); - - return array( - $posts, - $posts_metadata, - $term_relationships, - $previous_interval_end, - ); - } - - /** - * Gets a list of minimum and maximum object ids for each batch based on the given batch size. - * - * @access public - * - * @param int $batch_size The batch size for objects. - * @param string|bool $where_sql The sql where clause minus 'WHERE', or false if no where clause is needed. - * - * @return array|bool An array of min and max ids for each batch. FALSE if no table can be found. - */ - public function get_min_max_object_ids_for_batches( $batch_size, $where_sql = false ) { - return parent::get_min_max_object_ids_for_batches( $batch_size, $this->get_where_sql( $where_sql ) ); - } - - /** - * Given the Module Configuration and Status return the next chunk of items to send. - * This function also expands the posts and metadata and filters them based on the maximum size constraints. - * - * @param array $config This module Full Sync configuration. - * @param array $status This module Full Sync status. - * @param int $chunk_size Chunk size. - * - * @return array - */ - public function get_next_chunk( $config, $status, $chunk_size ) { - - $post_ids = parent::get_next_chunk( $config, $status, $chunk_size ); - - if ( empty( $post_ids ) ) { - return array(); - } - - $posts = $this->expand_posts( $post_ids ); - - // If no posts were fetched, make sure to return the expected structure so that status is updated correctly. - if ( empty( $posts ) ) { - return array( - 'object_ids' => $post_ids, - 'objects' => array(), - 'meta' => array(), - ); - } - // Get the post IDs from the posts that were fetched. - $fetched_post_ids = wp_list_pluck( $posts, 'ID' ); - $metadata = $this->get_metadata( $fetched_post_ids, 'post', Settings::get_setting( 'post_meta_whitelist' ) ); - - // Filter the posts and metadata based on the maximum size constraints. - list( $filtered_post_ids, $filtered_posts, $filtered_posts_metadata ) = $this->filter_objects_and_metadata_by_size( - 'post', - $posts, - $metadata, - self::MAX_META_LENGTH, - self::MAX_SIZE_FULL_SYNC - ); - - return array( - 'object_ids' => $filtered_post_ids, - 'objects' => $filtered_posts, - 'meta' => $filtered_posts_metadata, - ); - } - - /** - * Expand posts. - * - * @param array $post_ids Post IDs. - * - * @return array Expanded posts. - */ - private function expand_posts( $post_ids ) { - $posts = array_filter( array_map( array( 'WP_Post', 'get_instance' ), $post_ids ) ); - $posts = array_map( array( $this, 'filter_post_content_and_add_links' ), $posts ); - $posts = array_values( $posts ); // Reindex in case posts were deleted. - return $posts; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-protect.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-protect.php deleted file mode 100644 index 95e1efb1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-protect.php +++ /dev/null @@ -1,83 +0,0 @@ -has_login_ability(); - } - - // If the login ability can not be determined, the feature is not active, - // or something is wrong, default to not syncing failed login attempts. - return false; - } - - /** - * Maybe log a failed login attempt. - * - * @access public - * - * @param array $failed_attempt Failed attempt data. - */ - public function maybe_log_failed_login_attempt( $failed_attempt ) { - /** - * Filter which provides Jetpack's decision as to whether the current requestor can attempt logging in. - * - * Example: When Jetpack's Brute Force Login Protection is active, this filter will return false if the user is currently locked out. - * - * @since 3.5.1 - * - * @package sync - * - * @return bool True if the user should be allowed to attempt logging in, false otherwise. - */ - $has_login_ability = apply_filters( 'jetpack_has_login_ability', $this->has_login_ability_fallback() ); - - if ( $has_login_ability && ! Jetpack_Constants::is_true( 'XMLRPC_REQUEST' ) ) { - do_action( 'jetpack_valid_failed_login_attempt', $failed_attempt ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-search.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-search.php deleted file mode 100644 index f54a7977..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-search.php +++ /dev/null @@ -1,1879 +0,0 @@ - [ 'searchable_in_all_content' => true ], - * Field will be included in the all_content fields - * - * 'metakey' => [ 'available' => false, 'alternatives' => [ 'metakey_processed' ] ], - * Field not in meta.* but has data in an alternative field(s) name that - * should work similarly. For instance, woocommerce total_sales does not go into - * the index, but the percentage of sales does. - * - * @static - * @access private - * @var array - */ - private static $postmeta_to_sync = array( - // jetpack. - 'jetpack-search-meta0' => array( 'searchable_in_all_content' => true ), - 'jetpack-search-meta1' => array( 'searchable_in_all_content' => true ), - 'jetpack-search-meta2' => array( 'searchable_in_all_content' => true ), - 'jetpack-search-meta3' => array( 'searchable_in_all_content' => true ), - 'jetpack-search-meta4' => array( 'searchable_in_all_content' => true ), - 'jetpack-search-meta5' => array( 'searchable_in_all_content' => true ), - 'jetpack-search-meta6' => array( 'searchable_in_all_content' => true ), - 'jetpack-search-meta7' => array( 'searchable_in_all_content' => true ), - 'jetpack-search-meta8' => array( 'searchable_in_all_content' => true ), - 'jetpack-search-meta9' => array( 'searchable_in_all_content' => true ), - - // woocommerce. - 'exclude_product_categories' => array(), - 'exclude_product_ids' => array(), - 'free_shipping' => array(), - 'id_field' => array(), - 'individual_use' => array(), - 'limit_usage_to_x_items' => array(), - 'maximum_amount' => array(), - 'minimum_amount' => array(), - 'post_id' => array(), - 'product_categories' => array( 'searchable_in_all_content' => true ), - 'product_ids' => array(), - 'total_sales' => array( - 'available' => false, - 'alternatives' => array( - 'wc.percent_of_sales', - ), - ), - 'usage_limit' => array(), - 'usage_limit_per_user' => array(), - '_crosssell_ids' => array(), - '_downloadable' => array(), - '_featured' => array(), - '_height' => array(), - '_length' => array(), - '_price' => array( - 'alternatives' => array( - 'wc.price', - 'wc.min_price', - 'wc.max_price', - ), - ), - '_prices_include_tax' => array(), - '_product_attributes' => array(), - '_product_version' => array(), - '_regular_price' => array( - 'alternatives' => array( - 'wc.regular_price', - ), - ), - '_sale_price' => array( - 'alternatives' => array( - 'wc.sale_price', - ), - ), - '_sale_price_dates_from' => array(), - '_sale_price_dates_to' => array(), - '_sku' => array( 'searchable_in_all_content' => true ), - '_stock_status' => array(), - '_wc_average_rating' => array( - 'alternatives' => array( - 'wc.ave_rating_score', - ), - ), - '_wc_rating_count' => array( - 'alternatives' => array( - 'wc.rating', // wc.rating.count_1, wc.rating.count_2, ... - ), - ), - '_wc_review_count' => array(), - '_weight' => array(), - '_width' => array(), - - // co-authors plus. - 'cap-description' => array( 'searchable_in_all_content' => true ), - 'cap-user_login' => array( 'searchable_in_all_content' => true ), - 'cap-user_email' => array(), - 'cap-last_name' => array( 'searchable_in_all_content' => true ), - 'cap-first_name' => array( 'searchable_in_all_content' => true ), - 'cap-display_name' => array( 'searchable_in_all_content' => true ), - 'cap-website' => array(), - 'cap-jabber' => array(), - 'cap-aim' => array(), - 'cap-twitter' => array(), - 'cap-facebook' => array(), - 'cap-google_plus' => array(), - 'cap-job_title' => array( 'searchable_in_all_content' => true ), - - // bbpress. - 'bbpl_like' => array(), - 'bbpress_discussion_comments_copied' => array(), - 'bbpress_discussion_tags_copied' => array(), - 'bbpress_discussion_topic_id' => array(), - 'bbpress_discussion_use_defaults' => array(), - 'bbpress_page_header_bg' => array(), - 'bbpress_title_bg' => array(), - 'use_bbpress_discussion_topic' => array(), - - // wpml. - 'tm_meta_wpml' => array(), - 'wpml_language' => array(), - 'wpml_media_lang' => array(), - 'wpml_media_processed' => array(), - - // blogger import. - 'blogger_author' => array( 'searchable_in_all_content' => true ), - 'blogger_blog' => array( 'searchable_in_all_content' => true ), - 'blogger_permalink' => array( 'searchable_in_all_content' => true ), - - // geo. - 'geo_address' => array( 'searchable_in_all_content' => true ), - 'geo_latitude' => array(), - 'geo_longitude' => array(), - 'geo_public' => array(), - 'geolocated' => array(), - 'geolocation_city' => array( 'searchable_in_all_content' => true ), - 'geolocation_country_long' => array( 'searchable_in_all_content' => true ), - 'geolocation_country_short' => array( 'searchable_in_all_content' => true ), - 'geolocation_formatted_address' => array( 'searchable_in_all_content' => true ), - 'geolocation_lat' => array(), - 'geolocation_long' => array(), - 'geolocation_postcode' => array( 'searchable_in_all_content' => true ), - 'geolocation_state_long' => array( 'searchable_in_all_content' => true ), - 'geolocation_state_short' => array( 'searchable_in_all_content' => true ), - - // wp-ultimate-recipe. - 'recipe_alternate_image' => array(), - 'recipe_cook_time' => array(), - 'recipe_cook_time_text' => array(), - 'recipe_description' => array( 'searchable_in_all_content' => true ), - 'recipe_ingredients' => array( 'searchable_in_all_content' => true ), - 'recipe_instructions' => array( 'searchable_in_all_content' => true ), - 'recipe_notes' => array( 'searchable_in_all_content' => true ), - 'recipe_nutritional' => array( 'searchable_in_all_content' => true ), - 'recipe_passive_time' => array(), - 'recipe_passive_time_text' => array(), - 'recipe_prep_time' => array(), - 'recipe_prep_time_text' => array(), - 'recipe_rating' => array(), - 'recipe_servings' => array(), - 'recipe_servings_normalized' => array(), - 'recipe_servings_type' => array(), - 'recipe_terms' => array( 'searchable_in_all_content' => true ), - 'recipe_terms_with_parents' => array(), - 'recipe_title' => array( 'searchable_in_all_content' => true ), - 'recipe_user_ratings' => array(), - 'recipe_user_ratings_rating' => array(), - - // generic fields. - // from advanced-custom-fields and metabox.io . - 'Link' => array(), - 'Location' => array(), - 'Title' => array( 'searchable_in_all_content' => true ), - 'ad_code' => array(), - 'address' => array(), - 'admin_mail' => array(), - 'admin_only' => array(), - 'advertisers' => array( 'searchable_in_all_content' => true ), - 'age' => array(), - 'aliases' => array(), - 'alternate_title' => array(), - 'ama_content' => array(), - 'amazon' => array(), - 'answer' => array( 'searchable_in_all_content' => true ), - 'area' => array(), - 'attention' => array(), - 'attr' => array(), - 'author' => array( 'searchable_in_all_content' => true ), - 'author_name' => array( 'searchable_in_all_content' => true ), - 'blog' => array(), - 'blog_id' => array(), - 'call_to_action' => array(), - 'campaign_preview' => array(), - 'canonical_url' => array(), - 'catch_text' => array(), - 'category' => array( 'searchable_in_all_content' => true ), - 'classificacao' => array(), - 'classification' => array(), - 'code' => array(), - 'codigo' => array(), - 'company' => array( 'searchable_in_all_content' => true ), - 'company_website' => array(), - 'config' => array(), - 'construction' => array(), - 'container_ids' => array(), - 'content' => array( 'searchable_in_all_content' => true ), - 'content_body-full_content' => array( 'searchable_in_all_content' => true ), - 'copyright' => array(), - 'custom_page_title' => array( 'searchable_in_all_content' => true ), - 'custom_permalink' => array(), - 'customize' => array(), - 'data' => array(), - 'date' => array(), - 'day' => array(), - 'descripcion' => array( 'searchable_in_all_content' => true ), - 'description' => array( 'searchable_in_all_content' => true ), - 'display_settings' => array(), - 'display_type' => array(), - 'duration' => array(), - 'embed' => array(), - 'entity_ids' => array(), - 'entity_types' => array(), - 'event_subtitle' => array( 'searchable_in_all_content' => true ), - 'excluded_container_ids' => array(), - 'exclusions' => array(), - 'experience' => array(), - 'external_url' => array(), - 'featured' => array(), - 'featured_image' => array(), - 'featured_post' => array(), - 'featured_story' => array(), - 'fee' => array(), - 'filter' => array(), - 'follow' => array(), - 'footer_text' => array(), - 'from_header' => array(), - 'fullscreen_view' => array(), - 'gallery' => array(), - 'genre' => array( 'searchable_in_all_content' => true ), - 'guest_bio' => array(), - 'guest_name' => array(), - 'guests' => array( 'searchable_in_all_content' => true ), - 'has_variations' => array(), - 'hashtag' => array(), - 'header_image' => array(), - 'hidden_from_ui' => array(), - 'hide_on_screen' => array(), - 'homepage_order' => array(), - 'hours' => array(), - 'i18n' => array(), - 'id' => array(), - 'image' => array(), - 'image_size' => array(), - 'image_source' => array(), - 'index' => array(), - 'intro_text' => array( 'searchable_in_all_content' => true ), - 'job_mention' => array( 'searchable_in_all_content' => true ), - 'keywords' => array( 'searchable_in_all_content' => true ), - 'latest_news' => array(), - 'layout' => array(), - 'link' => array(), - 'link_dump' => array( 'searchable_in_all_content' => true ), - 'link_url' => array(), - 'location' => array(), - 'logo' => array(), - 'main_title' => array( 'searchable_in_all_content' => true ), - 'maximum_entity_count' => array(), - 'media' => array(), - 'mentions' => array(), - 'messages' => array(), - 'meta_description' => array( 'searchable_in_all_content' => true ), - 'meta_id' => array(), - 'meta_index' => array(), - 'meta_key' => array(), - 'meta_value' => array(), - 'modal-dialog-id' => array(), - 'name' => array( 'searchable_in_all_content' => true ), - 'nombre' => array( 'searchable_in_all_content' => true ), - 'notes' => array( 'searchable_in_all_content' => true ), - 'options' => array(), - 'order_by' => array(), - 'order_direction' => array(), - 'original_cats' => array(), - 'original_headers' => array(), - 'original_link' => array(), - 'original_message' => array(), - 'original_subject' => array(), - 'original_title' => array(), - 'original_to' => array(), - 'other_setting' => array(), - 'page_canonical' => array(), - 'page_layout' => array(), - 'page_sidebar' => array(), - 'page_tags' => array(), - 'panels_data' => array(), - 'parking' => array(), - 'pdf_upload' => array(), - 'people_mentioned' => array(), - 'photo' => array(), - 'play_time' => array(), - 'position' => array(), - 'post-rating' => array(), - 'post_background' => array(), - 'post_color' => array(), - 'post_sidebar' => array(), - 'post_subtitle' => array( 'searchable_in_all_content' => true ), - 'price' => array(), - 'publication' => array(), - 'rating' => array(), - 'ratings_average' => array(), - 'ratings_score' => array(), - 'ratings_users' => array(), - 'relation' => array(), - 'reply_to_header' => array(), - 'required' => array(), - 'returns' => array(), - 'review_post' => array(), - 'rule' => array(), - 'section' => array( 'searchable_in_all_content' => true ), - 'selected_links' => array(), - 'session_transcript' => array(), - 'settings' => array(), - 'sex' => array(), - 'shares_count' => array(), - 'show_description' => array( 'searchable_in_all_content' => true ), - 'show_page_title' => array(), - 'show_notes' => array(), - 'show_notes_preview' => array(), - 'side' => array(), - 'sidebar' => array(), - 'site' => array(), - 'situation' => array(), - 'slide_template' => array(), - 'slug' => array(), - 'sortorder' => array(), - 'source' => array(), - 'start_date' => array(), - 'status' => array(), - 'styles' => array(), - 'subtitle' => array( 'searchable_in_all_content' => true ), - 'subtitulo' => array(), - 'success' => array(), - 'summary' => array( 'searchable_in_all_content' => true ), - 'synopsis' => array( 'searchable_in_all_content' => true ), - 'tel' => array(), - 'tema' => array(), - 'testimonial' => array(), - 'testimonial_author' => array(), - 'text_already_subscribed' => array(), - 'text_error' => array(), - 'text_invalid_email' => array(), - 'text_not_subscribed' => array(), - 'text_required_field_missing' => array(), - 'text_subscribed' => array(), - 'text_unsubscribed' => array(), - 'thumbnail' => array(), - 'time' => array(), - 'time_jump_list' => array( 'searchable_in_all_content' => true ), - 'title' => array( 'searchable_in_all_content' => true ), - 'title_view' => array(), - 'titre' => array( 'searchable_in_all_content' => true ), - 'titulo' => array( 'searchable_in_all_content' => true ), - 'to_header' => array(), - 'toc' => array(), - 'transcript' => array( 'searchable_in_all_content' => true ), - 'transport_uri' => array(), - 'type' => array(), - 'url' => array(), - 'validation' => array(), - 'value' => array(), - 'values' => array(), - 'variation' => array(), - 'video' => array(), - 'video_type' => array(), - 'video_url' => array(), - 'videopress_guid' => array(), - 'website' => array(), - 'weight' => array(), - 'year' => array(), - - // wp.com martketplace search - @see https://wp.me/pdh6GB-Ax#comment-2104 - '_app_icon' => array(), - '_featured_product_video' => array(), - 'wpcom_marketplace_org_slug' => array(), - '_wc_general_product_dependency_theme' => array(), - '_wc_general_product_dependency_plugin' => array(), - 'wpcom_marketplace_product_extra_fields' => array(), - - ); // end indexed post meta. - - /** - * Postmeta being considered for indexing - * but currently not in the index - * this list is really only for documentation. - * - * @static - * @access private - * @var array - */ - private static $unindexed_postmeta = array( - - // Core. - '_wp_attached_file' => array(), - '_wp_attachment_context' => array(), - '_wp_attachment_image_alt' => array(), - '_wp_attachment_is_custom_header' => array(), - '_wp_attachment_metadata' => array(), - '_wp_desired_post_slug' => array(), - '_wp_old_date' => array(), - '_wp_old_slug' => array(), - '_wp_page_template' => array(), - - // WooCommerce products. - // See https://github.com/woocommerce/woocommerce/blob/8ed6e7436ff87c2153ed30edd83c1ab8abbdd3e9/includes/data-stores/class-wc-product-data-store-cpt.php#L21 . - '_backorders' => array(), - '_default_attributes' => array(), - '_download_expiry' => array(), - '_download_limit' => array(), - '_download_permissions_granted' => array(), - '_downloadable_files' => array(), - '_file_paths' => array(), - '_manage_stock' => array(), - '_product_image_gallery' => array(), - '_purchase_note' => array(), - '_recorded_sales' => array(), - '_sold_individually' => array(), - '_stock' => array(), - '_tax_class' => array(), - '_tax_status' => array(), - '_thumbnail_id' => array(), - '_upsell_ids' => array(), - '_variation_description' => array(), - '_virtual' => array(), - '_visibility' => array(), - 'coupon_amount' => array(), - 'default_source' => array(), - 'discount_type' => array(), - 'exclude_sale_items' => array(), - 'expiry_date' => array(), - - // Woocommerce orders and refunds. - // See https://github.com/woocommerce/woocommerce/blob/8ed6e7436ff87c2153ed30edd83c1ab8abbdd3e9/includes/data-stores/class-wc-order-data-store-cpt.php#L27 . - // See https://github.com/woocommerce/woocommerce/blob/b8a2815ae546c836467008739e7ff5150cb08e93/includes/data-stores/class-wc-order-refund-data-store-cpt.php#L20 . - '_billing_address_1' => array(), - '_billing_address_2' => array(), - '_billing_address_index' => array(), - '_billing_city' => array(), - '_billing_company' => array(), - '_billing_country' => array(), - '_billing_email' => array(), - '_billing_first_name' => array(), - '_billing_last_name' => array(), - '_billing_phone' => array(), - '_billing_postcode' => array(), - '_billing_state' => array(), - '_cart_discount' => array(), - '_cart_discount_tax' => array(), - '_completed_date' => array(), - '_created_via' => array(), - '_customer_ip_address' => array(), - '_customer_user_agent' => array(), - '_date_completed' => array(), - '_date_paid' => array(), - '_order_currency' => array(), - '_order_key' => array(), - '_order_shipping' => array(), - '_order_shipping_tax' => array(), - '_order_stock_reduced' => array(), - '_order_tax' => array(), - '_order_total' => array(), - '_order_version' => array(), - '_paid_date' => array(), - '_payment_method' => array(), - '_payment_method_title' => array(), - '_payment_tokens' => array(), - '_recorded_coupon_usage_counts' => array(), - '_refund_amount' => array(), - '_refund_reason' => array(), - '_refunded_by' => array(), - '_shipping_address_1' => array(), - '_shipping_address_2' => array(), - '_shipping_address_index' => array(), - '_shipping_city' => array(), - '_shipping_company' => array(), - '_shipping_country' => array(), - '_shipping_first_name' => array(), - '_shipping_last_name' => array(), - '_shipping_postcode' => array(), - '_shipping_state' => array(), - '_transaction_id' => array(), - - // aioseop. - '_aioseop_description' => array(), - '_aioseop_keywords' => array(), - '_aioseop_title' => array(), - - // yoast. - '_yoast_wpseo_authorship' => array(), - '_yoast_wpseo_bctitle' => array(), - '_yoast_wpseo_canonical' => array(), - '_yoast_wpseo_content_score' => array(), - '_yoast_wpseo_focuskw' => array(), - '_yoast_wpseo_focuskw_text_input' => array(), - '_yoast_wpseo_google-plus-description' => array(), - '_yoast_wpseo_google-plus-image' => array(), - '_yoast_wpseo_linkdex' => array(), - '_yoast_wpseo_meta-robots-adv' => array(), - '_yoast_wpseo_meta-robots-nofollow' => array(), - '_yoast_wpseo_meta-robots-noindex' => array(), - '_yoast_wpseo_metadesc' => array(), - '_yoast_wpseo_metakeywords' => array(), - '_yoast_wpseo_opengraph-description' => array(), - '_yoast_wpseo_opengraph-image' => array(), - '_yoast_wpseo_opengraph-title' => array(), - '_yoast_wpseo_primary_byline' => array(), - '_yoast_wpseo_primary_category' => array(), - '_yoast_wpseo_primary_product_cat' => array(), - '_yoast_wpseo_primary_sponsor-type' => array(), - '_yoast_wpseo_primary_tema_category' => array(), - '_yoast_wpseo_primary_wpdmcategory' => array(), - '_yoast_wpseo_primary_wt_portfolio_category' => array(), - '_yoast_wpseo_redirect' => array(), - '_yoast_wpseo_sitemap-include' => array(), - '_yoast_wpseo_sitemap-prio' => array(), - '_yoast_wpseo_title' => array(), - '_yoast_wpseo_twitter-description' => array(), - '_yoast_wpseo_twitter-image' => array(), - - // bbpress. - 'bbppu_read_by' => array(), - '_bbp_activity_id' => array(), - '_bbp_attachment' => array(), - '_bbp_attachment_upload_error' => array(), - '_bbp_forum_id' => array(), - '_bbp_forum_parent_id' => array(), - '_bbp_forum_subforum_count' => array(), - '_bbp_forum_type' => array(), - '_bbp_group_ids' => array(), - '_bbp_last_active_id' => array(), - '_bbp_last_active_time' => array(), - '_bbp_last_reply_id' => array(), - '_bbp_last_topic_id' => array(), - '_bbp_old_forum_id' => array(), - '_bbp_old_sticky_status' => array(), - '_bbp_old_topic_id' => array(), - '_bbp_post_id' => array(), - '_bbp_reply_count' => array(), - '_bbp_reply_is_private' => array(), - '_bbp_reply_to' => array(), - '_bbp_revision_log' => array(), - '_bbp_status' => array(), - '_bbp_sticky_topics' => array(), - '_bbp_topic_count' => array(), - '_bbp_topic_id' => array(), - '_bbp_total_reply_count' => array(), - '_bbp_total_topic_count' => array(), - '_bbp_voice_count' => array(), - - // ??? - '_locale' => array(), - - // wp-job-manager. - '_job_title' => array(), - '_job_description' => array(), - - // wpml. - '_wpml_media_duplicate' => array(), - '_wpml_media_featured' => array(), - - // generic fields. - 'ad_clicks_count' => array(), - 'email' => array(), - 'usage_count' => array(), - 'user_mail' => array(), - 'views' => array(), - '_EventAllDay' => array(), - '_EventCost' => array(), - '_EventCurrencyPosition' => array(), - '_EventCurrencySymbol' => array(), - '_EventDuration' => array(), - '_EventEndDate' => array(), - '_EventEndDateUTC' => array(), - '_EventOrganizerID' => array(), - '_EventOrigin' => array(), - '_EventShowMap' => array(), - '_EventShowMapLink' => array(), - '_EventStartDate' => array(), - '_EventStartDateUTC' => array(), - '_EventTimezone' => array(), - '_EventTimezoneAbbr' => array(), - '_EventURL' => array(), - '_EventVenueID' => array(), - '_OrganizerEmail' => array(), - '_OrganizerOrganizer' => array(), - '_OrganizerOrigin' => array(), - '_OrganizerPhone' => array(), - '_OrganizerWebsite' => array(), - '_VenueAddress' => array(), - '_VenueCity' => array(), - '_VenueCountry' => array(), - '_VenueOrigin' => array(), - '_VenuePhone' => array(), - '_VenueProvince' => array(), - '_VenueShowMap' => array(), - '_VenueShowMapLink' => array(), - '_VenueState' => array(), - '_VenueStateProvince' => array(), - '_VenueURL' => array(), - '_VenueVenue' => array(), - '_VenueVenueID' => array(), - '_VenueZip' => array(), - '_description' => array(), - '_edit_last' => array(), - '_feedback_all_fields' => array(), - '_feedback_author' => array(), - '_feedback_author_email' => array(), - '_feedback_author_url' => array(), - '_feedback_contact_form_url' => array(), - '_feedback_ip' => array(), - '_feedback_subject' => array(), - '_layout' => array(), - '_links_to' => array(), - '_links_to_target' => array(), - '_mail' => array(), - '_mail_2' => array(), - '_messages' => array(), - '_numero' => array(), - '_post_restored_from' => array(), - '_video_url' => array(), - '_website' => array(), - - ); // end unindexed post meta. - - /** - * List of indexed taxonomy slugs - VARCHAR(32) - * - * @access private - * @static - * - * @var array - */ - private static $taxonomies_to_sync = array( - - // Core. - 'link_category', - 'nav_menu', - 'post_format', // Special, limited to certain values. - - // bbpress. - 'topic', - 'topic-tag', - 'topics', - - // buddypress. - 'bp-email-type', - 'bp-email-type', - 'bp_docs_access', - 'bp_docs_associated_item', - 'bp_docs_comment_access', - 'bp_docs_doc_in_folder', - 'bp_docs_folder_in_group', - 'bp_docs_tag', - 'bp_member_type', - - // co-authors plus. - 'author', - - // events calendar plus. - // the events calendar. - 'event-categories', - 'event-category', - 'event-tag', - 'event-tags', - 'event-type', - 'event-venue', - 'event_category', - 'event_location', - 'event_organizer', - 'event_tag', - 'event_type', - 'event_type_2', - 'event_users', - 'events_categories', - 'events_category', - 'events_feeds', - 'events_tags', - 'tribe_events_cat', - - // jetpack. - 'jetpack-portfolio-tag', - 'jetpack-portfolio-type', - 'jetpack-search-tag0', - 'jetpack-search-tag1', - 'jetpack-search-tag2', - 'jetpack-search-tag3', - 'jetpack-search-tag4', - 'jetpack-search-tag5', - 'jetpack-search-tag6', - 'jetpack-search-tag7', - 'jetpack-search-tag8', - 'jetpack-search-tag9', - - // nextgen gallery. - 'ngg_tag', - - // polylang. - // wpml. - 'language', - 'post_translations', - 'term_language', - 'term_translations', - 'translation_priority', - - // woocommerce. - 'pa_accessory-type', - 'pa_actor', - 'pa_age', - 'pa_ambulance', - 'pa_amount', - 'pa_arm-roll', - 'pa_aspectratio', - 'pa_audiencerating', - 'pa_author', - 'pa_axle', - 'pa_battery', - 'pa_belakang', - 'pa_binding', - 'pa_body-type', - 'pa_bore-x-stroke-mm', - 'pa_box-cargo', - 'pa_brakes', - 'pa_brand', - 'pa_brands', - 'pa_bus', - 'pa_c', - 'pa_cabin-to-end', - 'pa_capacity', - 'pa_catalognumberlist', - 'pa_ce-keurmerk', - 'pa_chassis-front', - 'pa_chassis-rear', - 'pa_chassis-weight-kg', - 'pa_chip-log', - 'pa_clothing-size', - 'pa_clutch', - 'pa_clutch-type', - 'pa_collection', - 'pa_color', - 'pa_colors', - 'pa_colour', - 'pa_compactor', - 'pa_condition', - 'pa_cor', - 'pa_couleur', - 'pa_country', - 'pa_countryregion-of-manufacture', - 'pa_crane', - 'pa_creator', - 'pa_culoare', - 'pa_customerpackagetype', - 'pa_depan', - 'pa_depan-belakang', - 'pa_department', - 'pa_design', - 'pa_diameter', - 'pa_diameter-cakram', - 'pa_dimension-mm', - 'pa_dimensions', - 'pa_director', - 'pa_disc-diameter', - 'pa_drive-system', - 'pa_dump', - 'pa_ean', - 'pa_eanlist', - 'pa_edition', - 'pa_electric-battery', - 'pa_engine-model', - 'pa_engine-size', - 'pa_ethnicity', - 'pa_exhaust-brake', - 'pa_fabric', - 'pa_farbe', - 'pa_farg', - 'pa_farge', - 'pa_features', - 'pa_final-gear-ratio', - 'pa_finish', - 'pa_fire-fighting', - 'pa_fits', - 'pa_flat-bed', - 'pa_flavour', - 'pa_format', - 'pa_fragrance', - 'pa_frame', - 'pa_front', - 'pa_front-overhang', - 'pa_front-rear', - 'pa_front-tread', - 'pa_fuel-tank', - 'pa_fuel-type', - 'pa_garantie', - 'pa_geadviseerd-accu-type', - 'pa_gear-ratio', - 'pa_gender', - 'pa_genre', - 'pa_gewicht-exclusief-accu', - 'pa_gift-card-amount', - 'pa_grade-ability-tan-o', - 'pa_groesse', - 'pa_gtin', - 'pa_gvwr-gcwr', - 'pa_hardwareplatform', - 'pa_hazardousmaterialtype', - 'pa_height', - 'pa_hekmotor-of-boegmotor', - 'pa_helmet-size', - 'pa_hersteller', - 'pa_high-blow-tank', - 'pa_hoehe', - 'pa_inhoud', - 'pa_isadultproduct', - 'pa_isbn', - 'pa_iseligiblefortradein', - 'pa_itemdimensions', - 'pa_itempartnumber', - 'pa_kemudi-tipe', - 'pa_kleur', - 'pa_kopling-tipe', - 'pa_label', - 'pa_languages', - 'pa_lbs', - 'pa_legaldisclaimer', - 'pa_lengte-aansluitkabel', - 'pa_length', - 'pa_liquid-tank', - 'pa_location', - 'pa_losse-motor-complete-set', - 'pa_maat', - 'pa_main-brake', - 'pa_make', - 'pa_manufacturer', - 'pa_manufacturer-part-number', - 'pa_manufacturermaximumage', - 'pa_manufacturerminimumage', - 'pa_manufacturerpartswarrantydesc', - 'pa_masseinheit', - 'pa_material', - 'pa_mau-sac', - 'pa_maximum-power-ps-rpm', - 'pa_maximum-speed', - 'pa_maximum-torque-kgm-rpm', - 'pa_mediatype', - 'pa_megethos', - 'pa_merk', - 'pa_metal-type', - 'pa_min-turning-circle', - 'pa_mixer', - 'pa_model', - 'pa_model-tipe', - 'pa_model-type', - 'pa_modelo', - 'pa_mount', - 'pa_mpn', - 'pa_nicotine-strength', - 'pa_nos-of-cylinder', - 'pa_nos-of-tire', - 'pa_numberofdiscs', - 'pa_numberofitems', - 'pa_numberofpages', - 'pa_offset', - 'pa_open-cargo', - 'pa_operatingsystem', - 'pa_options', - 'pa_other-part-number', - 'pa_overall-height', - 'pa_overall-length', - 'pa_overall-width', - 'pa_overview', - 'pa_packagedimensions', - 'pa_packagequantity', - 'pa_pages', - 'pa_parking-brake', - 'pa_part-number', - 'pa_partnumber', - 'pa_pattern', - 'pa_pattern2', - 'pa_performa', - 'pa_pictureformat', - 'pa_pin-size', - 'pa_piston-displacement-cc', - 'pa_ploshhad', - 'pa_plug-type', - 'pa_power', - 'pa_product', - 'pa_productgroup', - 'pa_producttypename', - 'pa_publicationdate', - 'pa_publisher', - 'pa_quantity', - 'pa_rear', - 'pa_rear-overhang', - 'pa_rear-tread', - 'pa_refrigerated-box', - 'pa_region', - 'pa_regioncode', - 'pa_releasedate', - 'pa_rem-parkir', - 'pa_rem-pelambat', - 'pa_rem-utama', - 'pa_reverse', - 'pa_runningtime', - 'pa_scent', - 'pa_schachtlengte', - 'pa_seeds', - 'pa_series', - 'pa_setting', - 'pa_sex', - 'pa_shape', - 'pa_shirt-size', - 'pa_size', - 'pa_sizes', - 'pa_sku', - 'pa_sky-lift', - 'pa_sleeve-length', - 'pa_snelheidsregeling', - 'pa_staart', - 'pa_steering', - 'pa_steering-type', - 'pa_storlek', - 'pa_studio', - 'pa_stuwkracht-lbs', - 'pa_style', - 'pa_suspensions', - 'pa_taille', - 'pa_talla', - 'pa_tamanho', - 'pa_tamano', - 'pa_taxi', - 'pa_ticket-type', - 'pa_tire-size', - 'pa_total-chassis-weight', - 'pa_towing-truck', - 'pa_tradeinvalue', - 'pa_trailer-t-head', - 'pa_transmisi-tipe', - 'pa_transmission', - 'pa_transmission-type', - 'pa_types', - 'pa_ukuran', - 'pa_upc', - 'pa_upclist', - 'pa_variation', - 'pa_vehicle-carrier', - 'pa_vergelijkbaar-stuwkracht', - 'pa_vermogen', - 'pa_voltage', - 'pa_volume', - 'pa_warranty', - 'pa_weight', - 'pa_wheel-base', - 'pa_wheel-configuration', - 'pa_wheel-disc-size', - 'pa_width', - 'pa_zout-water-geschikt', - 'product', - 'product-brand', - 'product_brand', - 'product-category', - 'product_cat', - 'product_delivery_time', - 'product_delivery_times', - 'product_price_label', - 'product_sale_labels', - 'product_shipping_class', - 'product_tag', - 'product_type', - 'product_unit', - 'product_visibility', - 'products', - - // wp-job-manager. - 'job-category', - 'job-location', - 'job-type', - 'job_cat', - 'job_category', - 'job_listing_category', - 'job_listing_label', - 'job_listing_region', - 'job_listing_tag', - 'job_listing_type', - 'job_salary', - 'job_tag', - 'job_type', - 'jobman_category', - 'jobpost_category', - 'jobpost_job_type', - 'jobpost_location', - 'resume_category', - 'resume_groups', - 'resume_job_type', - 'resume_job_type', - 'resume_languages', - 'resume_region', - 'resume_skill', - 'resume_specialities', - - // generic. - '_resource', - 'acadp_categories', - 'acadp_locations', - 'action-group', - 'activity', - 'actor', - 'actors', - 'ad-group', - 'adace-ad-group', - 'adace-sponsor', - 'additional_features', - 'adv_location', - 'advanced_ads_groups', - 'advert_category', - 'affcoups_coupon_category', - 'affcoups_coupon_type', - 'ai_log_context', - 'ai_log_level', - 'al_product-cat', - 'aol_ad_category', - 'aol_ad_location', - 'aol_ad_type', - 'aol_application_status', - 'area', - 'article-slug', - 'asgarosforum-category', - 'asgarosforum-usergroup', - 'attachment_category', - 'attachment_tag', - 'atum_location', - 'audience_type', - 'avhec_catgroup', - 'bartype', - 'baths', - 'beds', - 'bepro_listing_types', - 'blog_category', - 'booked_custom_calendars', - 'brand', - 'brands', - 'business', - 'business_cat', - 'business_category', - 'bwg_tag', - 'byline', - 'calendar_category', - 'calendar_feed', - 'calendar_type', - 'campaign_category', - 'campaign_tag', - 'carousel_cat', - 'carousels_category', - 'case27_job_listing_tags', - 'categories', - 'category_media', - 'category_portfolio', - 'celebrity_cat', - 'chapters', - 'chronosly_category', - 'city', - 'classified_listing_type', - 'client-types', - 'clients_groups', - 'cm-business-category', - 'cmdm_category', - 'cn_log_type', - 'coderevolution_post_source', - 'collection', - 'community', - 'companies', - 'company', - 'cont_category', - 'content_audit', - 'country', - 'course', - 'course-cat', - 'course-category', - 'course_cat', - 'course_category', - 'course_difficulty', - 'course_tag', - 'courses_type', - 'cp_campaign', - 'cp_recipe_category', - 'csco_post_featured', - 'ct_status', - 'ctl-stories', - 'cuisine', - 'dc_vendor_shop', - 'ddownload_category', - 'ddownload_tag', - 'dealstore', - 'department', - 'departments', - 'department-company', - 'developed-by', - 'dfads_group', - 'dgfw_gift_categories', - 'director', - 'district', - 'dlm_download_category', - 'dlm_download_tag', - 'doc_tag', - 'document-category', - 'document-type', - 'download_artist', - 'download_category', - 'download_tag', - 'downloads_filter', - 'dps_book', - 'dt_gallery_category', - 'dt_logos_category', - 'dt_portfolio_category', - 'dt_team_category', - 'dt_testimonials_category', - 'dtcast', - 'dtcreator', - 'dtdirector', - 'dtnetworks', - 'dtstudio', - 'dtyear', - 'dvteamtaxonomy', - 'dwqa-question_category', - 'dwqa-question_tag', - 'eafl_category', - 'easy-testimonial-category', - 'ecwd_event_category', - 'edd_log_type', - 'edition', - 'ef_editorial_meta', - 'ef_usergroup', - 'element_category', - 'elementor_library_type', - 'employees_category', - 'encyclopedia-tag', - 'envira-tag', - 'epkb_post_type_1_category', - 'espresso_event_categories', - 'espresso_event_type', - 'essential_grid_category', - 'et_post_format', - 'faq-group', - 'faq-tags', - 'faq-topic', - 'faq_cat', - 'faq_categories', - 'faq_category', - 'faqs-category', - 'fdm-menu-section', - 'feature', - 'featured_item_category', - 'featured_item_tag', - 'feedback_type', - 'feeds', - 'fl-builder-template-type', - 'flamingo_inbound_channel', - 'follow_up_email_campaign', - 'follow_up_email_type', - 'following_users', - 'football-team-taxo', - 'fpd_design_category', - 'gallery-category', - 'gallery_cat', - 'gallery_categories', - 'gallery_category', - 'gallery_entries', - 'gallerycat', - 'gd_event_tags', - 'gd_eventcategory', - 'gd_place_tags', - 'gd_placecategory', - 'genre', - 'genres', - 'gg_connect_hub', - 'give_log_type', - 'gn-genre', - 'gn-location-1', - 'gn-location-2', - 'gn-location-3', - 'gp_hubs', - 'gp_portfolios', - 'gp_videos', - 'group', - 'group-documents-category', - 'groups', - 'hashtags', - 'hotel_facility', - 'ia_invited_groups', - 'ia_invitees', - 'incsub_wiki_category', - 'industry', - 'ingredient', - 'insight-type', - 'issue', - 'issuem_issue', - 'issuem_issue_tags', - 'jbp_category', - 'karma-slider-category', - 'klaviyo_shop_cart_status', - 'kwlogos-carousel', - 'layout_category', - 'layout_type', - 'ld_course_category', - 'ld_course_tag', - 'ld_lesson_category', - 'ld_lesson_tag', - 'ld_topic_tag', - 'lesson-tag', - 'level', - 'lingotek_hash', - 'lingotek_profile', - 'link_library_category', - 'linkage', - 'list-tags', - 'listing-category', - 'listing_amenities', - 'listing_category', - 'liveblog', - 'llms_access_plan_visibility', - 'llms_product_visibility', - 'localisation', - 'location', - 'location-tag', - 'locations', - 'magazine', - 'map_location_categories', - 'masonry_gallery_category', - 'mc-event-category', - 'mec_category', - 'mec_location', - 'mec_organizer', - 'media-category', - 'media-tags', - 'media_category', - 'media_folder', - 'member_cat', - 'mentions', - 'mesh_template_types', - 'ml-slider', - 'module', - 'module-tag', - 'module_width', - 'movie_cat', - 'mpp-component', - 'mpp-status', - 'mpp-type', - 'muvicast', - 'muvicountry', - 'muvidirector', - 'muviindex', - 'muviquality', - 'muviyear', - 'news-category', - 'news-tag', - 'news-type', - 'news_type_cat', - 'news_category', - 'nova_menu', - 'nova_menu_item_label', - 'offer-types', - 'organization', - 'our_team_category', - 'page_category', - 'parisrestaurant', - 'parissauna', - 'partner_category', - 'partners', - 'paswdestinatari', - 'paypal_ipn_type', - 'pdf_lv_tag', - 'pec_events_category', - 'people', - 'people-department', - 'people-expertise', - 'people-location', - 'perfect_quotes_category', - 'performer', - 'person', - 'personnal-category', - 'pexcontentslider_category', - 'pexfullslider_category', - 'pexnivoslider_category', - 'pexpricing_category', - 'pexservice_category', - 'pextestimonial_category', - 'pf_feed_item_tag', - 'pg_sas_type', - 'photo_tag', - 'phototype', - 'pj-categs', - 'pj-tags', - 'pl-categs', - 'placement', - 'plan_status', - 'platform', - 'player', - 'plugins_categories', - 'podcast', - 'pojo_sidebars', - 'popup_category', - 'pornstars', - 'portada', - 'portcat', - 'portfolio-category', - 'portfolio-gallery', - 'portfolio-status', - 'portfolio-skills', - 'portfolio-tag', - 'portfolio-tags', - 'portfolio-type', - 'portfolio-types', - 'portfolio_cat', - 'portfolio_categories', - 'portfolio_category', - 'portfolio_cats', - 'portfolio_client', - 'portfolio_entries', - 'portfolio_filter', - 'portfolio_in', - 'portfolio_label', - 'portfolio_skills', - 'portfolio_tag', - 'portfolio_tags', - 'portfolio_type', - 'posicao', - 'post-type', - 'post_format', - 'post_series', - 'pp_editorial_meta', - 'pp_notify_role', - 'pp_usergroup', - 'pricingcats', - 'print_section', - 'print_status', - 'product_asset_class', - 'product_name', - 'programs', - 'project-attributes', - 'project-cat', - 'project-category', - 'project-type', - 'project_category', - 'project_tag', - 'projects_category', - 'projects_tag', - 'prominence', - 'promotion-categories', - 'property-city', - 'property-feature', - 'property-status', - 'property-type', - 'property-types', - 'property_action_category', - 'property_area', - 'property_category', - 'property_city', - 'property_feature', - 'property_status', - 'property_type', - 'province', - 'provinces', - 'publisher', - 'pwb-brand', - 'qmn_log_type', - 'qualification', - 'qualifications', - 'quality', - 'question-category', - 'question-tag', - 'question-type', - 'question_cat', - 'question_category', - 'question_tag', - 'quiz', - 'quiz-type', - 'quote_status', - 'rating', - 'reaction', - 'recipe-category', - 'recipe_category', - 'recipe_type', - 'region', - 'registrant-event', - 'related_keywords', - 'release-date', - 'resource-type', - 'resource_category', - 'resource_type', - 'resourcetype', - 'review-type', - 'review_category', - 'rodzaj', - 'role', - 'room_category', - 'room_tag', - 'roomtype', - 'rubriek_categorie', - 'savedreply', - 'schools', - 'scope', - 'scores_cat', - 'sdm_categories', - 'sdm_tags', - 'season', - 'secondary_html_features', - 'section', - 'sector', - 'series', - 'series_of_posts', - 'services_group', - 'serving', - 'shop_cart_status', - 'shop_cat', - 'shop_order_status', - 'shop_vendor', - 'shop_warranty_status', - 'shopp_category', - 'shopr_category', - 'show', - 'simple_link_category', - 'site-review-category', - 'sizes', - 'skill', - 'skill_level', - 'skills', - 'sld_cat', - 'slide-page', - 'slide-types', - 'slide_categories', - 'slide_type', - 'slider', - 'slider-locations', - 'slider_category', - 'slides_category', - 'slideshow', - 'sm-category', - 'snax_format', - 'sngg_media_tags', - 'solution_channel', - 'source_domain', - 'source_id', - 'sp_league', - 'sp_position', - 'sp_role', - 'sp_season', - 'sp_venue', - 'speaker', - 'speakers', - 'special-feature', - 'specialty', - 'spnl_log_type', - 'sponsor_categories', - 'sponsor_category', - 'sponsor_type', - 'spot_tag', - 'st_af_category', - 'st_af_tags', - 'staff', - 'staff-member-category', - 'staff-member-group', - 'staff_category', - 'staffgroups', - 'state', - 'status', - 'store', - 'stores', - 'studio', - 'study_level', - 'style', - 'style_category', - 'sub_transaction_action', - 'sub_transaction_result', - 'subcategory', - 'subject', - 'subscription_status', - 'swift-slider-category', - 'syn_sitegroup', - 'szbl-content-tag', - 'task-queue', - 'tax_feature', - 'tcb_symbols_tax', - 'tcp_product_category', - 'team', - 'team-category', - 'team_cat', - 'team_categories', - 'team_category', - 'team_cats', - 'team_department', - 'team_designation', - 'team_group', - 'team_member_position', - 'team_mfcategory', - 'teams', - 'tenant_categories', - 'tenant_location', - 'tender-category', - 'test-type', - 'testimonial-category', - 'testimonial-group', - 'testimonial-types', - 'testimonial_categories', - 'testimonial_category', - 'testimonials-category', - 'testimonials_category', - 'th_events_cat', - 'th_galleries_cat', - 'thegem_clients_sets', - 'thegem_news_sets', - 'thegem_portfolios', - 'thegem_quickfinders', - 'thegem_teams', - 'thegem_testimonials_sets', - 'theme', - 'themefusion_es_groups', - 'themes_categories', - 'themo_cpt_group', - 'themo_project_type', - 'themo_room_type', - 'thirstylink-category', - 'ticket_channel', - 'ticket_priority', - 'timeline_post_tag', - 'tipo', - 'tipologie', - 'tips', - 'tm-testimonials_category', - 'tm_testimonial_group', - 'tooltips_categories', - 'tour_category', - 'tour_destination', - 'tour_facility', - 'tour_phys', - 'tour_type', - 'tp_event_category', - 'transmission', - 'treatment-type', - 'tribe_events_cat', - 'truethemes-gallery-category', - 'tsas-category', - 'tshowcase-categories', - 'tsml_region', - 'ttshowcase_groups', - 'tvo_tags', - 'type', - 'types', - 'u_course_cat', - 'u_department', - 'u_event_cat', - 'ufaq-category', - 'ufaq-tag', - 'um_hashtag', - 'um_user_tag', - 'uncodeblock_category', - 'upg_cate', - 'urp-review-category', - 'us_portfolio_category', - 'us_testimonial_category', - 'user-group', - 'user_category', - 'user_status', - 'vendor', - 'venue', - 'video-category', - 'video-series', - 'video-tag', - 'video_category', - 'video_tag', - 'videos', - 'videos_categories', - 'voice_category', - 'vtmin_rule_category', - 'vtprd_rule_category', - 'w2dc-category', - 'w2dc-location', - 'w2dc-tag', - 'wcb_sponsor_level', - 'wcb_track', - 'wccf_checkout_field_field_type', - 'wccf_checkout_field_status', - 'wccf_order_field_field_type', - 'wccf_order_field_status', - 'wccf_product_field_field_type', - 'wccf_product_field_status', - 'wccf_product_prop_field_type', - 'wccf_product_prop_status', - 'wccf_user_field_field_type', - 'wccf_user_field_status', - 'wcfm_knowledgebase_category', - 'wcm_task_category', - 'wcpv_product_vendors', - 'wcs-instructor', - 'wcs-room', - 'wcs-type', - 'wdca_ad_categories', - 'webinar_type_cat', - 'where', - 'who', - 'wiki-category', - 'wiki_cats', - 'wl_entity_type', - 'workout_entries', - 'works-category', - 'wp-rest-api-log-method', - 'wp-rest-api-log-source', - 'wp-rest-api-log-status', - 'wp-type-activity-types', - 'wp-type-contacts-subtype', - 'wp-type-group', - 'wp_bannerize_tax', - 'wp_log_type', - 'wp_super_faq_category', - 'wpbdm-region', - 'wpbdp_category', - 'wpbdp_tag', - 'wpcm_make_model', - 'wpdmcategory', - 'wpfb_file_category', - 'wpfcas-category', - 'wpfd-category', - 'wplead_list_category', - 'wplss_logo_showcase_cat', - 'wpm-testimonial-category', - 'wpmf-category', - 'wpostahs-slider-category', - 'wprm_course', - 'wprm_cuisine', - 'wprm_ingredient', - 'wprm_keyword', - 'wprss_category', - 'wps_forum', - 'wpsc-variation', - 'wpsc_log_type', - 'wpsc_product_category', - 'wpseo_locations_category', - 'wpsisac_slider-category', - 'wpsl_store_category', - 'wpt_category', - 'wpt_result', - 'wpt_scale', - 'wpv_sermons_category', - 'wpvqgr_tag', - 'writer', - 'wyz_business_category', - 'wyz_business_rating_category', - 'wyz_business_tag', - 'wzkb_category', - 'year', - 'years', - 'yith_product_brand', - 'yith_shop_vendor', - 'yst_prominent_words', - 'zipcode', - 'zoninator_zones', - 'zrf_field_group', - - // End The Backlog @see https://wp.me/p9MPsk-X0. - 'bill-status', - 'etb-audience', - 'etb-state', - 'etb-target', - 'etb-topic', - 'etb-year', - 'foia-response-status', - 'target-type', - 'timeline-pillar', - 'timeline-type', - - // wp.com martketplace search - @see https://wp.me/pdh6GB-Ax#comment-2104 - 'wpcom_marketplace_categories', - - // wp.com a8c-support-theme taxonomies. - 'kb_category', - 'kb_tag', - - ); // end taxonomies. - - /** - * List of options to sync - * - * @access private - * @static - * - * @var array - */ - private static $options_to_sync = array( - 'jetpack_search_ai_prompt_override', - 'jetpack_search_color_theme', - 'jetpack_search_result_format', - 'jetpack_search_default_sort', - 'jetpack_search_overlay_trigger', - 'jetpack_search_excluded_post_types', - 'jetpack_search_highlight_color', - 'jetpack_search_enable_sort', - 'jetpack_search_inf_scroll', - 'jetpack_search_show_powered_by', - 'instant_search_enabled', - ); // end options. - - /* - * Taxonomies we know don't sync. - * See also sync/src/class-defaults.php - * - * 'network' - * 'post_status' - * 'product_cat' - * 'tags' - * - */ - - // - // Hooks into sync. - - /** - * Add Search post meta to the post meta whitelist. - * - * @param array $list Existing post meta whitelist. - * @return array Updated post meta whitelist. - */ - public function add_search_post_meta_whitelist( $list ) { - return array_merge( $list, static::get_all_postmeta_keys() ); - } - - /** - * Add Search options to the options whitelist. - * - * @param array $list Existing options whitelist. - * @return array Updated options whitelist. - */ - public function add_search_options_whitelist( $list ) { - return array_merge( $list, static::get_all_option_keys() ); - } - - // - // Indexing functions for wp.com. - - /** - * - * Check whether a postmeta or taxonomy 'key' is in the indexable - * list. This is called by the indexing code on wp.com to decide - * whether to include something in the index. - * - * @static - * @access public - * - * @param string $type Either 'postmeta' or 'taxonomy'. - * @param string $key The postmeta key or taxonomy name. - * @return boolean - */ - public static function is_indexable( $type, $key ) { - switch ( $type ) { - case 'postmeta': - return isset( self::$postmeta_to_sync[ $key ] ); - case 'taxonomy': - return in_array( $key, self::$taxonomies_to_sync, true ); - } - return false; - } - - /** - * - * Get the indexing spec for a postmeta key. - * - * @static - * @access public - * - * @param string $key The postmeta key. - * @return array The spec. - */ - public static function get_postmeta_spec( $key ) { - return self::$postmeta_to_sync[ $key ]; - } - - /** - * Get all post meta keys that get synced. - * - * @access public - * - * @return array List of post meta keys that get synced. - */ - public static function get_all_postmeta_keys() { - return array_keys( self::$postmeta_to_sync ); - } - - /** - * Get all option keys that get synced. - * - * @access public - * - * @return array List of option keys that get synced. - */ - public static function get_all_option_keys() { - return self::$options_to_sync; - } - - /** - * Get all unindexed postmeta. - * This is mostly for testing. - * - * @access public - * - * @return array List of postmeta that are not synced. - */ - public static function get_all_unindexed_postmeta_keys() { - return array_keys( self::$unindexed_postmeta ); - } - - /** - * Get all taxonomies that get synced. - * This is mostly for testing. - * - * @access public - * - * @return array List of taxonomies that get synced. - */ - public static function get_all_taxonomies() { - return self::$taxonomies_to_sync; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-stats.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-stats.php deleted file mode 100644 index 83479d1d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-stats.php +++ /dev/null @@ -1,68 +0,0 @@ -table' ); - return 'term_relationships'; - } - - /** - * The table in the database with the prefix. - * - * @access public - * - * @return string|bool - */ - public function table() { - global $wpdb; - return $wpdb->term_relationships; - } - - /** - * Initialize term relationships action listeners for full sync. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_full_sync_listeners( $callable ) { - add_action( 'jetpack_full_sync_term_relationships', $callable, 10, 2 ); - } - - /** - * Initialize the module in the sender. - * - * @access public - */ - public function init_before_send() { - // Full sync. - add_filter( 'jetpack_sync_before_send_jetpack_full_sync_term_relationships', array( $this, 'expand_term_relationships' ) ); - } - - /** - * Enqueue the term relationships actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $max_items_to_enqueue Maximum number of items to enqueue. - * @param object $last_object_enqueued Last object enqueued. - * - * @return array Number of actions enqueued, and next module state. - * @todo This method has similarities with Automattic\Jetpack\Sync\Modules\Module::enqueue_all_ids_as_action. Refactor to keep DRY. - * @see Automattic\Jetpack\Sync\Modules\Module::enqueue_all_ids_as_action - */ - public function enqueue_full_sync_actions( $config, $max_items_to_enqueue, $last_object_enqueued ) { - global $wpdb; - $term_relationships_full_sync_item_size = Settings::get_setting( 'term_relationships_full_sync_item_size' ); - $limit = min( $max_items_to_enqueue * $term_relationships_full_sync_item_size, self::QUERY_LIMIT ); - $items_enqueued_count = 0; - $last_object_enqueued = $last_object_enqueued ? $last_object_enqueued : array( - 'object_id' => self::MAX_INT, - 'term_taxonomy_id' => self::MAX_INT, - ); - - while ( $limit > 0 ) { - /* - * SELECT object_id, term_taxonomy_id - * FROM $wpdb->term_relationships - * WHERE ( object_id = 11 AND term_taxonomy_id < 14 ) OR ( object_id < 11 ) - * ORDER BY object_id DESC, term_taxonomy_id DESC LIMIT 1000 - */ - $objects = $wpdb->get_results( $wpdb->prepare( "SELECT object_id, term_taxonomy_id FROM $wpdb->term_relationships WHERE ( object_id = %d AND term_taxonomy_id < %d ) OR ( object_id < %d ) ORDER BY object_id DESC, term_taxonomy_id DESC LIMIT %d", $last_object_enqueued['object_id'], $last_object_enqueued['term_taxonomy_id'], $last_object_enqueued['object_id'], $limit ), ARRAY_A ); - // Request term relationships in groups of N for efficiency. - if ( ! is_countable( $objects ) || count( $objects ) === 0 ) { - return array( $items_enqueued_count, true ); - } - $objects_count = count( $objects ); - $items = array_chunk( $objects, $term_relationships_full_sync_item_size ); - $last_object_enqueued = $this->bulk_enqueue_full_sync_term_relationships( $items, $last_object_enqueued ); - $items_enqueued_count += count( $items ); - $limit = min( $limit - $objects_count, self::QUERY_LIMIT ); - } - - // We need to do this extra check in case $max_items_to_enqueue * $term_relationships_full_sync_item_size == relationships objects left. - $count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_relationships WHERE ( object_id = %d AND term_taxonomy_id < %d ) OR ( object_id < %d ) ORDER BY object_id DESC, term_taxonomy_id DESC LIMIT %d", $last_object_enqueued['object_id'], $last_object_enqueued['term_taxonomy_id'], $last_object_enqueued['object_id'], 1 ) ); - if ( 0 === (int) $count ) { - return array( $items_enqueued_count, true ); - } - - return array( $items_enqueued_count, $last_object_enqueued ); - } - - /** - * Return the initial last sent object. - * - * @return string|array initial status. - */ - public function get_initial_last_sent() { - return array( - 'object_id' => self::MAX_INT, - 'term_taxonomy_id' => self::MAX_INT, - ); - } - - /** - * Given the Module Full Sync Configuration and Status return the next chunk of items to send. - * - * @param array $config This module Full Sync configuration. - * @param array $status This module Full Sync status. - * @param int $chunk_size Chunk size. - * - * @return array|object|null - */ - public function get_next_chunk( $config, $status, $chunk_size ) { - global $wpdb; - - return $wpdb->get_results( - $wpdb->prepare( - "SELECT tr.object_id, tr.term_taxonomy_id - FROM $wpdb->term_relationships tr INNER JOIN $wpdb->term_taxonomy tt - ON tr.term_taxonomy_id=tt.term_taxonomy_id - WHERE " . - Settings::get_whitelisted_taxonomies_sql() // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared - . ' AND ( ( tr.object_id = %d AND tr.term_taxonomy_id < %d ) OR ( tr.object_id < %d ) ) - ORDER BY tr.object_id DESC, tr.term_taxonomy_id - DESC LIMIT %d', - $status['last_sent']['object_id'], - $status['last_sent']['term_taxonomy_id'], - $status['last_sent']['object_id'], - $chunk_size - ), - ARRAY_A - ); - } - - /** - * Return last_item to send for Module Full Sync Configuration. - * - * @param array $config This module Full Sync configuration. - * - * @return array|object|null - */ - public function get_last_item( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - global $wpdb; - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.DirectQuery - return $wpdb->get_results( - "SELECT object_id, term_taxonomy_id - FROM $wpdb->term_relationships - ORDER BY object_id , term_taxonomy_id - LIMIT 1", - ARRAY_A - ); - } - - /** - * - * Enqueue all $items within `jetpack_full_sync_term_relationships` actions. - * - * @param array $items Groups of objects to sync. - * @param array $previous_interval_end Last item enqueued. - * - * @return array Last enqueued object. - */ - public function bulk_enqueue_full_sync_term_relationships( $items, $previous_interval_end ) { - $listener = Listener::get_instance(); - $items_with_previous_interval_end = $this->get_chunks_with_preceding_end( $items, $previous_interval_end ); - $listener->bulk_enqueue_full_sync_actions( 'jetpack_full_sync_term_relationships', $items_with_previous_interval_end ); - $last_item = end( $items ); - return end( $last_item ); - } - - /** - * Retrieve an estimated number of actions that will be enqueued. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @return int Number of items yet to be enqueued. - */ - public function estimate_full_sync_actions( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - global $wpdb; - - $query = "SELECT COUNT(*) FROM $wpdb->term_relationships"; - - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching - $count = (int) $wpdb->get_var( $query ); - - return (int) ceil( $count / Settings::get_setting( 'term_relationships_full_sync_item_size' ) ); - } - - /** - * Retrieve the actions that will be sent for this module during a full sync. - * - * @access public - * - * @return array Full sync actions of this module. - */ - public function get_full_sync_actions() { - return array( 'jetpack_full_sync_term_relationships' ); - } - - /** - * Expand the term relationships within a hook before they are serialized and sent to the server. - * - * @access public - * - * @param array $args The hook parameters. - * @return array $args The expanded hook parameters. - */ - public function expand_term_relationships( $args ) { - list( $term_relationships, $previous_end ) = $args; - - return array( - 'term_relationships' => $term_relationships, - 'previous_end' => $previous_end, - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-terms.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-terms.php deleted file mode 100644 index 1010daf0..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-terms.php +++ /dev/null @@ -1,482 +0,0 @@ -table' ); - return 'term_taxonomy'; - } - - /** - * The table in the database with the prefix. - * - * @access public - * - * @return string|bool - */ - public function table() { - global $wpdb; - return $wpdb->term_taxonomy; - } - - /** - * Allows WordPress.com servers to retrieve term-related objects via the sync API. - * - * @param string $object_type The type of object. Accepts: 'term', 'term_taxonomy', 'term_relationships'. - * @param int $id The id of the object. - * - * @return false|object A term or term_taxonomy object, depending on object type. - */ - public function get_object_by_id( $object_type, $id ) { - $id = (int) $id; - - if ( empty( $id ) ) { - return false; - } - - $objects = $this->get_objects_by_id( $object_type, array( $id ) ); - - return $objects[ $id ] ?? false; - } - - /** - * Retrieve a set of objects by their IDs. - * - * @access public - * - * @param string $object_type Object type. Accepts: 'term', 'term_taxonomy', 'term_relationships'. - * @param array $ids Object IDs. - * - * @return array Array of objects. - */ - public function get_objects_by_id( $object_type, $ids ) { - global $wpdb; - - $objects = array(); - - if ( ! is_array( $ids ) || empty( $ids ) || empty( $object_type ) ) { - return $objects; - } - - // Sanitize. - $ids = array_map( 'intval', $ids ); - $ids_str = implode( ',', $ids ); - - $where_sql = Settings::get_whitelisted_taxonomies_sql(); - - switch ( $object_type ) { - case 'term': - $query = "SELECT * FROM $wpdb->terms t INNER JOIN $wpdb->term_taxonomy tt ON t.term_id=tt.term_id WHERE t.term_id IN ( $ids_str ) AND "; - $callback = 'expand_raw_terms'; - break; - case 'term_taxonomy': - $query = "SELECT * FROM $wpdb->term_taxonomy WHERE term_taxonomy_id IN ( $ids_str ) AND "; - $callback = 'expand_raw_term_taxonomies'; - break; - case 'term_relationships': - $query = "SELECT * FROM $wpdb->term_relationships tr INNER JOIN $wpdb->term_taxonomy tt ON tr.term_taxonomy_id=tt.term_taxonomy_id WHERE object_id IN ( $ids_str ) AND "; - $callback = 'expand_raw_term_relationships'; - break; - default: - return array(); - } - - $query .= $where_sql; - - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching -- Already sanitized above. - $results = $wpdb->get_results( $query ); - - if ( ! is_array( $results ) ) { - return array(); - } - - $objects = $this->$callback( $results ); - - return $objects ?? array(); - } - - /** - * Initialize terms action listeners. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_listeners( $callable ) { - add_action( 'created_term', array( $this, 'save_term_handler' ), 10, 3 ); - add_action( 'edited_term', array( $this, 'save_term_handler' ), 10, 3 ); - add_action( 'jetpack_sync_save_term', $callable ); - add_action( 'jetpack_sync_add_term', $callable ); - add_action( 'delete_term', $callable, 10, 4 ); - add_action( 'set_object_terms', $callable, 10, 6 ); - add_action( 'deleted_term_relationships', $callable, 10, 2 ); - add_filter( 'jetpack_sync_before_enqueue_set_object_terms', array( $this, 'filter_set_object_terms_no_update' ) ); - add_filter( 'jetpack_sync_before_enqueue_jetpack_sync_save_term', array( $this, 'filter_blacklisted_taxonomies' ) ); - add_filter( 'jetpack_sync_before_enqueue_jetpack_sync_add_term', array( $this, 'filter_blacklisted_taxonomies' ) ); - } - - /** - * Initialize terms action listeners for full sync. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_full_sync_listeners( $callable ) { - add_action( 'jetpack_full_sync_terms', $callable, 10, 2 ); - } - - /** - * Initialize the module in the sender. - * - * @access public - */ - public function init_before_send() { - // Full sync. - add_filter( 'jetpack_sync_before_send_jetpack_full_sync_terms', array( $this, 'expand_term_taxonomy_id' ) ); - } - - /** - * Enqueue the terms actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $max_items_to_enqueue Maximum number of items to enqueue. - * @param boolean $state True if full sync has finished enqueueing this module, false otherwise. - * @return array Number of actions enqueued, and next module state. - */ - public function enqueue_full_sync_actions( $config, $max_items_to_enqueue, $state ) { - global $wpdb; - return $this->enqueue_all_ids_as_action( 'jetpack_full_sync_terms', $wpdb->term_taxonomy, 'term_taxonomy_id', $this->get_where_sql( $config ), $max_items_to_enqueue, $state ); - } - - /** - * Retrieve the WHERE SQL clause based on the module config. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @return string WHERE SQL clause, or `null` if no comments are specified in the module config. - */ - public function get_where_sql( $config ) { - $where_sql = Settings::get_blacklisted_taxonomies_sql(); - - if ( is_array( $config ) ) { - $where_sql .= ' AND term_taxonomy_id IN (' . implode( ',', array_map( 'intval', $config ) ) . ')'; - } - - return $where_sql; - } - - /** - * Retrieve an estimated number of actions that will be enqueued. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @return int Number of items yet to be enqueued. - */ - public function estimate_full_sync_actions( $config ) { - global $wpdb; - - $query = "SELECT count(*) FROM $wpdb->term_taxonomy"; - - $where_sql = $this->get_where_sql( $config ); - if ( $where_sql ) { - $query .= ' WHERE ' . $where_sql; - } - - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching - $count = (int) $wpdb->get_var( $query ); - - return (int) ceil( $count / self::ARRAY_CHUNK_SIZE ); - } - - /** - * Retrieve the actions that will be sent for this module during a full sync. - * - * @access public - * - * @return array Full sync actions of this module. - */ - public function get_full_sync_actions() { - return array( 'jetpack_full_sync_terms' ); - } - - /** - * Handler for creating and updating terms. - * - * @access public - * - * @param int $term_id Term ID. - * @param int $tt_id Term taxonomy ID. - * @param string $taxonomy Taxonomy slug. - */ - public function save_term_handler( $term_id, $tt_id, $taxonomy ) { - if ( class_exists( '\\WP_Term' ) ) { - $term_object = \WP_Term::get_instance( $term_id, $taxonomy ); - } else { - $term_object = get_term_by( 'id', $term_id, $taxonomy ); - } - - $current_filter = current_filter(); - - if ( 'created_term' === $current_filter ) { - /** - * Fires when the client needs to add a new term - * - * @since 1.6.3 - * @since-jetpack 5.0.0 - * - * @param object the Term object - */ - do_action( 'jetpack_sync_add_term', $term_object ); - return; - } - - /** - * Fires when the client needs to update a term - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * - * @param object the Term object - */ - do_action( 'jetpack_sync_save_term', $term_object ); - } - - /** - * Filter blacklisted taxonomies. - * - * @access public - * - * @param array $args Hook args. - * @return array|boolean False if not whitelisted, the original hook args otherwise. - */ - public function filter_blacklisted_taxonomies( $args ) { - $term = $args[0]; - - if ( in_array( $term->taxonomy, Settings::get_setting( 'taxonomies_blacklist' ), true ) ) { - return false; - } - - return $args; - } - - /** - * Filter out set_object_terms actions with blacklisted taxonomies or where the terms have not changed. - * - * @param array $args Hook args. - * @return array|boolean False if blacklisted taxonomy or no change in terms, the original hook args otherwise. - */ - public function filter_set_object_terms_no_update( $args ) { - // Check if the taxonomy is blacklisted. $args[3] is the taxonomy. - if ( isset( $args[3] ) && in_array( $args[3], Settings::get_setting( 'taxonomies_blacklist' ), true ) ) { - return false; - } - // There is potential for other plugins to modify args, therefore lets validate # of and types. - // $args[2] is $tt_ids, $args[5] is $old_tt_ids see wp-includes/taxonomy.php L2740. - if ( 6 === count( $args ) && is_array( $args[2] ) && is_array( $args[5] ) ) { - if ( empty( array_diff( $args[2], $args[5] ) ) && empty( array_diff( $args[5], $args[2] ) ) ) { - return false; - } - } - return $args; - } - - /** - * Expand the term taxonomy IDs to terms within a hook before they are serialized and sent to the server. - * - * @access public - * - * @param array $args The hook parameters. - * @return array $args The expanded hook parameters. - */ - public function expand_term_taxonomy_id( $args ) { - list( $term_taxonomy_ids, $previous_end ) = $args; - - return array( - 'terms' => get_terms( - array( - 'hide_empty' => false, - 'term_taxonomy_id' => $term_taxonomy_ids, - 'orderby' => 'term_taxonomy_id', - 'order' => 'DESC', - ) - ), - 'previous_end' => $previous_end, - ); - } - - /** - * Gets a term object based on a given row from the term_relationships database table. - * - * @access public - * - * @deprecated since 4.8.1 - * - * @param object $relationship A row object from the term_relationships table. - * @return object|bool A term object, or false if term taxonomy doesn't exist. - */ - public function expand_terms_for_relationship( $relationship ) { - _deprecated_function( __METHOD__, '4.8.1' ); - - return get_term_by( 'term_taxonomy_id', $relationship->term_taxonomy_id ); - } - - /** - * Prepare raw terms and return them in a standard format. - * - * @param array $terms An array of raw term objects. - * @return array An array of term objects. - */ - private function expand_raw_terms( array $terms ) { - $objects = array(); - $columns = array( - 'term_id' => 'int', - 'name' => 'string', - 'slug' => 'string', - 'taxonomy' => 'string', - 'description' => 'string', - 'term_group' => 'int', - 'term_taxonomy_id' => 'int', - 'parent' => 'int', - 'count' => 'int', - ); - - foreach ( $terms as $term ) { - if ( ! array_key_exists( $term->term_id, $objects ) ) { - $t_array = array(); - - foreach ( $columns as $field => $type ) { - $value = $term->$field ?? ''; - $t_array[ $field ] = 'int' === $type ? (int) $value : $value; - } - // This will allow us to know on WPCOM that the term name is the raw one, coming from the DB. Useful with backwards compatibility in mind. - $t_array['raw_name'] = $t_array['name']; - - $objects[ $term->term_id ] = (object) $t_array; - } - } - - return $objects; - } - - /** - * Prepare raw term taxonomies and return them in a standard format. - * - * @param array $term_taxonomies An array of raw term_taxonomy objects. - * @return array An array of term_taxonomy objects. - */ - private function expand_raw_term_taxonomies( array $term_taxonomies ) { - $objects = array(); - $columns = array( - 'term_id' => 'int', - 'taxonomy' => 'string', - 'description' => 'string', - 'term_taxonomy_id' => 'int', - 'parent' => 'int', - 'count' => 'int', - ); - - foreach ( $term_taxonomies as $tt ) { - if ( ! array_key_exists( $tt->term_taxonomy_id, $objects ) ) { - $t_array = array(); - - foreach ( $columns as $field => $type ) { - $value = $tt->$field ?? ''; - $t_array[ $field ] = 'int' === $type ? (int) $value : $value; - } - - $objects[ $tt->term_taxonomy_id ] = (object) $t_array; - } - } - - return $objects; - } - - /** - * Prepare raw term taxonomies and return them in a standard format. - * - * @param array $term_relationships An array of raw term_taxonomy objects. - * @return array An array of term_taxonomy objects or false. - */ - private function expand_raw_term_relationships( array $term_relationships ) { - $objects = array(); - $columns = array( - 'object_id' => 'int', - 'term_id' => 'int', - 'taxonomy' => 'string', - 'term_taxonomy_id' => 'int', - 'term_order' => 'int', - 'parent' => 'int', - 'count' => 'int', - ); - - foreach ( $term_relationships as $tt ) { - $object_id = (int) $tt->object_id; - - $relationship = array(); - foreach ( $columns as $field => $type ) { - $value = $tt->$field ?? ''; - $relationship[ $field ] = 'int' === $type ? (int) $value : $value; - } - - $relationship = (object) $relationship; - - if ( ! array_key_exists( $object_id, $objects ) ) { - $objects[ $object_id ] = (object) array( - 'object_id' => $object_id, - 'relationships' => array( $relationship ), - ); - } else { - $objects[ $object_id ]->relationships[] = $relationship; - } - } - - return $objects; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-themes.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-themes.php deleted file mode 100644 index 01b5ebf9..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-themes.php +++ /dev/null @@ -1,874 +0,0 @@ - $widget_object->name, - 'id' => $widget_object->id, - 'title' => isset( $new_instance['title'] ) ? $new_instance['title'] : '', - ); - /** - * Trigger action to alert $callable sync listener that a widget was edited. - * - * @since 1.6.3 - * @since-jetpack 5.0.0 - * - * @param string $widget_name , Name of edited widget - */ - do_action( 'jetpack_widget_edited', $widget ); - - return $instance; - } - - /** - * Sync handler for network allowed themes change. - * - * @access public - * - * @param string $option Name of the network option. - * @param mixed $value Current value of the network option. - * @param mixed $old_value Old value of the network option. - * @param int $network_id ID of the network. - */ - public function sync_network_allowed_themes_change( $option, $value, $old_value, $network_id ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - $all_enabled_theme_slugs = array_keys( $value ); - $old_value_count = is_countable( $old_value ) ? count( $old_value ) : 0; - $value_count = is_countable( $value ) ? count( $value ) : 0; - - if ( $old_value_count > $value_count ) { - // Suppress jetpack_network_disabled_themes sync action when theme is deleted. - $delete_theme_call = $this->get_delete_theme_call(); - if ( ! empty( $delete_theme_call ) ) { - return; - } - - $newly_disabled_theme_names = array_keys( array_diff_key( $old_value, $value ) ); - $newly_disabled_themes = $this->get_theme_details_for_slugs( $newly_disabled_theme_names ); - /** - * Trigger action to alert $callable sync listener that network themes were disabled. - * - * @since 1.6.3 - * @since-jetpack 5.0.0 - * - * @param mixed $newly_disabled_themes, Array of info about network disabled themes - * @param mixed $all_enabled_theme_slugs, Array of slugs of all enabled themes - */ - do_action( 'jetpack_network_disabled_themes', $newly_disabled_themes, $all_enabled_theme_slugs ); - return; - } - - $newly_enabled_theme_names = array_keys( array_diff_key( $value, $old_value ) ); - $newly_enabled_themes = $this->get_theme_details_for_slugs( $newly_enabled_theme_names ); - /** - * Trigger action to alert $callable sync listener that network themes were enabled - * - * @since 1.6.3 - * @since-jetpack 5.0.0 - * - * @param mixed $newly_enabled_themes , Array of info about network enabled themes - * @param mixed $all_enabled_theme_slugs, Array of slugs of all enabled themes - */ - do_action( 'jetpack_network_enabled_themes', $newly_enabled_themes, $all_enabled_theme_slugs ); - } - - /** - * Retrieve details for one or more themes by their slugs. - * - * @access private - * - * @param array $theme_slugs Theme slugs. - * @return array Details for the themes. - */ - private function get_theme_details_for_slugs( $theme_slugs ) { - $theme_data = array(); - foreach ( $theme_slugs as $slug ) { - $theme = wp_get_theme( $slug ); - $theme_data[ $slug ] = array( - 'name' => $theme->get( 'Name' ), - 'version' => $theme->get( 'Version' ), - 'uri' => $theme->get( 'ThemeURI' ), - 'slug' => $slug, - ); - } - return $theme_data; - } - - /** - * Detect a theme edit during a redirect. - * - * @access public - * - * @param string $redirect_url Redirect URL. - * @return string Redirect URL. - */ - public function detect_theme_edit( $redirect_url ) { - $url = wp_parse_url( admin_url( $redirect_url ) ); - $theme_editor_url = wp_parse_url( admin_url( 'theme-editor.php' ) ); - - if ( $theme_editor_url['path'] !== $url['path'] ) { - return $redirect_url; - } - - $query_params = array(); - wp_parse_str( $url['query'], $query_params ); - if ( - ! isset( $_POST['newcontent'] ) || // phpcs:ignore WordPress.Security.NonceVerification.Missing -- 'wp_redirect' gets fired for a lot of things. We're only using $_POST['newcontent'] to limit action to redirects from theme edits, we're not doing anything with or in response to the post itself. - ! isset( $query_params['file'] ) || - ! isset( $query_params['theme'] ) || - ! isset( $query_params['updated'] ) - ) { - return $redirect_url; - } - $theme = wp_get_theme( $query_params['theme'] ); - $theme_data = array( - 'name' => $theme->get( 'Name' ), - 'version' => $theme->get( 'Version' ), - 'uri' => $theme->get( 'ThemeURI' ), - ); - - /** - * Trigger action to alert $callable sync listener that a theme was edited. - * - * @since 1.6.3 - * @since-jetpack 5.0.0 - * - * @param string $query_params['theme'], Slug of edited theme - * @param string $theme_data, Information about edited them - */ - do_action( 'jetpack_edited_theme', $query_params['theme'], $theme_data ); - - return $redirect_url; - } - - /** - * Handler for AJAX theme editing. - * - * @todo Refactor to use WP_Filesystem instead of fopen()/fclose(). - */ - public function theme_edit_ajax() { - // This validation is based on wp_edit_theme_plugin_file(). - if ( empty( $_POST['theme'] ) ) { - return; - } - - if ( empty( $_POST['file'] ) ) { - return; - } - $file = wp_unslash( $_POST['file'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Validated manually just after. - if ( 0 !== validate_file( $file ) ) { - return; - } - - if ( ! isset( $_POST['newcontent'] ) ) { - return; - } - - if ( ! isset( $_POST['nonce'] ) ) { - return; - } - - $stylesheet = wp_unslash( $_POST['theme'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Validated manually just after. - if ( 0 !== validate_file( $stylesheet ) ) { - return; - } - - if ( ! current_user_can( 'edit_themes' ) ) { - return; - } - - $theme = wp_get_theme( $stylesheet ); - if ( ! $theme->exists() ) { - return; - } - - if ( ! wp_verify_nonce( $_POST['nonce'], 'edit-theme_' . $stylesheet . '_' . $file ) ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput -- WP core doesn't pre-sanitize nonces either. - return; - } - - if ( $theme->errors() && 'theme_no_stylesheet' === $theme->errors()->get_error_code() ) { - return; - } - - $editable_extensions = wp_get_theme_file_editable_extensions( $theme ); - - $allowed_files = array(); - foreach ( $editable_extensions as $type ) { - switch ( $type ) { - case 'php': - $allowed_files = array_merge( $allowed_files, $theme->get_files( 'php', -1 ) ); - break; - case 'css': - $style_files = $theme->get_files( 'css', -1 ); - $allowed_files['style.css'] = $style_files['style.css']; - $allowed_files = array_merge( $allowed_files, $style_files ); - break; - default: - $allowed_files = array_merge( $allowed_files, $theme->get_files( $type, -1 ) ); - break; - } - } - - $real_file = $theme->get_stylesheet_directory() . '/' . $file; - if ( 0 !== validate_file( $real_file, $allowed_files ) ) { - return; - } - - // Ensure file is real. - if ( ! is_file( $real_file ) ) { - return; - } - - // Ensure file extension is allowed. - $extension = null; - if ( preg_match( '/\.([^.]+)$/', $real_file, $matches ) ) { - $extension = strtolower( $matches[1] ); - if ( ! in_array( $extension, $editable_extensions, true ) ) { - return; - } - } - - // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_is_writable - if ( ! is_writable( $real_file ) ) { - return; - } - - // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fopen - $file_pointer = fopen( $real_file, 'w+' ); - if ( false === $file_pointer ) { - return; - } - // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_fclose - fclose( $file_pointer ); - - $theme_data = array( - 'name' => $theme->get( 'Name' ), - 'version' => $theme->get( 'Version' ), - 'uri' => $theme->get( 'ThemeURI' ), - ); - - /** - * This action is documented already in this file. - */ - do_action( 'jetpack_edited_theme', $stylesheet, $theme_data ); - } - - /** - * Detect a theme deletion. - * - * @access public - * - * @param string $stylesheet Stylesheet of the theme to delete. - * @param bool $deleted Whether the theme deletion was successful. - */ - public function detect_theme_deletion( $stylesheet, $deleted ) { - $theme = wp_get_theme( $stylesheet ); - $theme_data = array( - 'name' => $theme->get( 'Name' ), - 'version' => $theme->get( 'Version' ), - 'uri' => $theme->get( 'ThemeURI' ), - 'slug' => $stylesheet, - ); - - if ( $deleted ) { - /** - * Signals to the sync listener that a theme was deleted and a sync action - * reflecting the deletion and theme slug should be sent - * - * @since 1.6.3 - * @since-jetpack 5.0.0 - * - * @param string $stylesheet Theme slug - * @param array $theme_data Theme info Since 5.3 - */ - do_action( 'jetpack_deleted_theme', $stylesheet, $theme_data ); - } - } - - /** - * Handle an upgrader completion action. - * - * @access public - * - * @param \WP_Upgrader $upgrader The upgrader instance. - * @param array $details Array of bulk item update data. - */ - public function check_upgrader( $upgrader, $details ) { - if ( ! isset( $details['type'] ) || - 'theme' !== $details['type'] || - is_wp_error( $upgrader->skin->result ) || - ! method_exists( $upgrader, 'theme_info' ) - ) { - return; - } - - if ( 'install' === $details['action'] ) { - // @phan-suppress-next-line PhanUndeclaredMethod -- Checked above. See also https://github.com/phan/phan/issues/1204. - $theme = $upgrader->theme_info(); - if ( ! $theme instanceof \WP_Theme ) { - return; - } - $theme_info = array( - 'name' => $theme->get( 'Name' ), - 'version' => $theme->get( 'Version' ), - 'uri' => $theme->get( 'ThemeURI' ), - ); - - /** - * Signals to the sync listener that a theme was installed and a sync action - * reflecting the installation and the theme info should be sent - * - * @since 1.6.3 - * @since-jetpack 4.9.0 - * - * @param string $theme->theme_root Text domain of the theme - * @param mixed $theme_info Array of abbreviated theme info - */ - do_action( 'jetpack_installed_theme', $theme->stylesheet, $theme_info ); - } - - if ( 'update' === $details['action'] ) { - $themes = array(); - - if ( empty( $details['themes'] ) && isset( $details['theme'] ) ) { - $details['themes'] = array( $details['theme'] ); - } - - foreach ( $details['themes'] as $theme_slug ) { - $theme = wp_get_theme( $theme_slug ); - - if ( ! $theme instanceof \WP_Theme ) { - continue; - } - - $themes[ $theme_slug ] = array( - 'name' => $theme->get( 'Name' ), - 'version' => $theme->get( 'Version' ), - 'uri' => $theme->get( 'ThemeURI' ), - 'stylesheet' => $theme->stylesheet, - ); - } - - if ( empty( $themes ) ) { - return; - } - - /** - * Signals to the sync listener that one or more themes was updated and a sync action - * reflecting the update and the theme info should be sent - * - * @since 1.6.3 - * @since-jetpack 6.2.0 - * - * @param mixed $themes Array of abbreviated theme info - */ - do_action( 'jetpack_updated_themes', $themes ); - } - } - - /** - * Initialize themes action listeners for full sync. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_full_sync_listeners( $callable ) { - add_action( 'jetpack_full_sync_theme_data', $callable ); - } - - /** - * Handle a theme switch. - * - * @access public - * - * @param string $new_name Name of the new theme. - * @param \WP_Theme $new_theme The new theme. - * @param \WP_Theme $old_theme The previous theme. - */ - public function sync_theme_support( $new_name, $new_theme = null, $old_theme = null ) { - $previous_theme = $this->get_theme_info( $old_theme ); - - /** - * Fires when the client needs to sync theme support info - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * - * @param array the theme support array - * @param array the previous theme since Jetpack 6.5.0 - */ - do_action( 'jetpack_sync_current_theme_support', $this->get_theme_info(), $previous_theme ); - } - - /** - * Enqueue the themes actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $max_items_to_enqueue Maximum number of items to enqueue. - * @param boolean $state True if full sync has finished enqueueing this module, false otherwise. - * @return array Number of actions enqueued, and next module state. - */ - public function enqueue_full_sync_actions( $config, $max_items_to_enqueue, $state ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - /** - * Tells the client to sync all theme data to the server - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * - * @param boolean Whether to expand theme data (should always be true) - */ - do_action( 'jetpack_full_sync_theme_data', true ); - - // The number of actions enqueued, and next module state (true == done). - return array( 1, true ); - } - - /** - * Send the themes actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $send_until The timestamp until the current request can send. - * @param array $state This module Full Sync status. - * - * @return array This module Full Sync status. - */ - public function send_full_sync_actions( $config, $send_until, $state ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - // we call this instead of do_action when sending immediately. - $this->send_action( 'jetpack_full_sync_theme_data', array( true ) ); - - // The number of actions enqueued, and next module state (true == done). - return array( 'finished' => true ); - } - - /** - * Retrieve an estimated number of actions that will be enqueued. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @return array Number of items yet to be enqueued. - */ - public function estimate_full_sync_actions( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - return 1; - } - - /** - * Initialize the module in the sender. - * - * @access public - */ - public function init_before_send() { - add_filter( 'jetpack_sync_before_send_jetpack_full_sync_theme_data', array( $this, 'expand_theme_data' ) ); - } - - /** - * Retrieve the actions that will be sent for this module during a full sync. - * - * @access public - * - * @return array Full sync actions of this module. - */ - public function get_full_sync_actions() { - return array( 'jetpack_full_sync_theme_data' ); - } - - /** - * Expand the theme within a hook before it is serialized and sent to the server. - * - * @access public - * - * @return array Theme data. - */ - public function expand_theme_data() { - return array( $this->get_theme_info() ); - } - - /** - * Retrieve the name of the widget by the widget ID. - * - * @access public - * @global $wp_registered_widgets - * - * @param string $widget_id Widget ID. - * @return string Name of the widget, or null if not found. - */ - public function get_widget_name( $widget_id ) { - global $wp_registered_widgets; - return ( isset( $wp_registered_widgets[ $widget_id ] ) ? $wp_registered_widgets[ $widget_id ]['name'] : null ); - } - - /** - * Retrieve the name of the sidebar by the sidebar ID. - * - * @access public - * @global $wp_registered_sidebars - * - * @param string $sidebar_id Sidebar ID. - * @return string Name of the sidebar, or null if not found. - */ - public function get_sidebar_name( $sidebar_id ) { - global $wp_registered_sidebars; - return ( isset( $wp_registered_sidebars[ $sidebar_id ] ) ? $wp_registered_sidebars[ $sidebar_id ]['name'] : null ); - } - - /** - * Sync addition of widgets to a sidebar. - * - * @access public - * - * @param array $new_widgets New widgets. - * @param array $old_widgets Old widgets. - * @param string $sidebar Sidebar ID. - * @return array All widgets that have been moved to the sidebar. - */ - public function sync_add_widgets_to_sidebar( $new_widgets, $old_widgets, $sidebar ) { - $added_widgets = array_diff( $new_widgets, $old_widgets ); - if ( empty( $added_widgets ) ) { - return array(); - } - $moved_to_sidebar = array(); - $sidebar_name = $this->get_sidebar_name( $sidebar ); - - // Don't sync jetpack_widget_added if theme was switched. - if ( $this->is_theme_switch() ) { - return array(); - } - - foreach ( $added_widgets as $added_widget ) { - $moved_to_sidebar[] = $added_widget; - $added_widget_name = $this->get_widget_name( $added_widget ); - /** - * Helps Sync log that a widget got added - * - * @since 1.6.3 - * @since-jetpack 4.9.0 - * - * @param string $sidebar, Sidebar id got changed - * @param string $added_widget, Widget id got added - * @param string $sidebar_name, Sidebar id got changed Since 5.0.0 - * @param string $added_widget_name, Widget id got added Since 5.0.0 - */ - do_action( 'jetpack_widget_added', $sidebar, $added_widget, $sidebar_name, $added_widget_name ); - } - return $moved_to_sidebar; - } - - /** - * Sync removal of widgets from a sidebar. - * - * @access public - * - * @param array $new_widgets New widgets. - * @param array $old_widgets Old widgets. - * @param string $sidebar Sidebar ID. - * @param array $inactive_widgets Current inactive widgets. - * @return array All widgets that have been moved to inactive. - */ - public function sync_remove_widgets_from_sidebar( $new_widgets, $old_widgets, $sidebar, $inactive_widgets ) { - $removed_widgets = array_diff( $old_widgets, $new_widgets ); - - if ( empty( $removed_widgets ) ) { - return array(); - } - - $moved_to_inactive = array(); - $sidebar_name = $this->get_sidebar_name( $sidebar ); - - foreach ( $removed_widgets as $removed_widget ) { - // Lets check if we didn't move the widget to in_active_widgets. - if ( isset( $inactive_widgets ) && ! in_array( $removed_widget, $inactive_widgets, true ) ) { - $removed_widget_name = $this->get_widget_name( $removed_widget ); - /** - * Helps Sync log that a widgte got removed - * - * @since 1.6.3 - * @since-jetpack 4.9.0 - * - * @param string $sidebar, Sidebar id got changed - * @param string $removed_widget, Widget id got removed - * @param string $sidebar_name, Name of the sidebar that changed Since 5.0.0 - * @param string $removed_widget_name, Name of the widget that got removed Since 5.0.0 - */ - do_action( 'jetpack_widget_removed', $sidebar, $removed_widget, $sidebar_name, $removed_widget_name ); - } else { - $moved_to_inactive[] = $removed_widget; - } - } - return $moved_to_inactive; - } - - /** - * Sync a reorder of widgets within a sidebar. - * - * @access public - * - * @todo Refactor serialize() to a json_encode(). - * - * @param array $new_widgets New widgets. - * @param array $old_widgets Old widgets. - * @param string $sidebar Sidebar ID. - */ - public function sync_widgets_reordered( $new_widgets, $old_widgets, $sidebar ) { - $added_widgets = array_diff( $new_widgets, $old_widgets ); - if ( ! empty( $added_widgets ) ) { - return; - } - $removed_widgets = array_diff( $old_widgets, $new_widgets ); - if ( ! empty( $removed_widgets ) ) { - return; - } - - // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize - if ( serialize( $old_widgets ) !== serialize( $new_widgets ) ) { - $sidebar_name = $this->get_sidebar_name( $sidebar ); - /** - * Helps Sync log that a sidebar id got reordered - * - * @since 1.6.3 - * @since-jetpack 4.9.0 - * - * @param string $sidebar, Sidebar id got changed - * @param string $sidebar_name, Name of the sidebar that changed Since 5.0.0 - */ - do_action( 'jetpack_widget_reordered', $sidebar, $sidebar_name ); - } - } - - /** - * Handle the update of the sidebars and widgets mapping option. - * - * @access public - * - * @param mixed $old_value The old option value. - * @param mixed $new_value The new option value. - */ - public function sync_sidebar_widgets_actions( $old_value, $new_value ) { - // Don't really know how to deal with different array_values yet. - if ( - ( isset( $old_value['array_version'] ) && 3 !== $old_value['array_version'] ) || - ( isset( $new_value['array_version'] ) && 3 !== $new_value['array_version'] ) - ) { - return; - } - - $moved_to_inactive_ids = array(); - $moved_to_sidebar = array(); - - foreach ( $new_value as $sidebar => $new_widgets ) { - if ( in_array( $sidebar, array( 'array_version', 'wp_inactive_widgets' ), true ) ) { - continue; - } - $old_widgets = isset( $old_value[ $sidebar ] ) - ? $old_value[ $sidebar ] - : array(); - - if ( ! is_array( $new_widgets ) ) { - $new_widgets = array(); - } - - $moved_to_inactive_recently = $this->sync_remove_widgets_from_sidebar( $new_widgets, $old_widgets, $sidebar, $new_value['wp_inactive_widgets'] ); - $moved_to_inactive_ids = array_merge( $moved_to_inactive_ids, $moved_to_inactive_recently ); - - $moved_to_sidebar_recently = $this->sync_add_widgets_to_sidebar( $new_widgets, $old_widgets, $sidebar ); - $moved_to_sidebar = array_merge( $moved_to_sidebar, $moved_to_sidebar_recently ); - - $this->sync_widgets_reordered( $new_widgets, $old_widgets, $sidebar ); - - } - - // Don't sync either jetpack_widget_moved_to_inactive or jetpack_cleared_inactive_widgets if theme was switched. - if ( $this->is_theme_switch() ) { - return; - } - - // Treat inactive sidebar a bit differently. - if ( ! empty( $moved_to_inactive_ids ) ) { - $moved_to_inactive_name = array_map( array( $this, 'get_widget_name' ), $moved_to_inactive_ids ); - /** - * Helps Sync log that a widgets IDs got moved to in active - * - * @since 1.6.3 - * @since-jetpack 4.9.0 - * - * @param array $moved_to_inactive_ids, Array of widgets id that moved to inactive id got changed - * @param array $moved_to_inactive_names, Array of widgets names that moved to inactive id got changed Since 5.0.0 - */ - do_action( 'jetpack_widget_moved_to_inactive', $moved_to_inactive_ids, $moved_to_inactive_name ); - } elseif ( empty( $moved_to_sidebar ) && empty( $new_value['wp_inactive_widgets'] ) && ! empty( $old_value['wp_inactive_widgets'] ) ) { - /** - * Helps Sync log that a got cleared from inactive. - * - * @since 1.6.3 - * @since-jetpack 4.9.0 - */ - do_action( 'jetpack_cleared_inactive_widgets' ); - } - } - - /** - * Retrieve the theme data for the current or a specific theme. - * - * @access private - * - * @param \WP_Theme $theme Theme object. Optional, will default to the current theme. - * - * @return array Theme data. - */ - private function get_theme_info( $theme = null ) { - $theme_support = array(); - - // We are trying to get the current theme info. - if ( null === $theme ) { - $theme = wp_get_theme(); - } - - $theme_support['name'] = $theme->get( 'Name' ); - $theme_support['version'] = $theme->get( 'Version' ); - $theme_support['slug'] = $theme->get_stylesheet(); - $theme_support['uri'] = $theme->get( 'ThemeURI' ); - - return $theme_support; - } - - /** - * Whether we've deleted a theme in the current request. - * - * @access private - * - * @return boolean True if this is a theme deletion request, false otherwise. - */ - private function get_delete_theme_call() { - // Intentional usage of `debug_backtrace()` for production needs. - // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_debug_backtrace - $backtrace = debug_backtrace(); - $delete_theme_call = null; - foreach ( $backtrace as $call ) { - if ( isset( $call['function'] ) && 'delete_theme' === $call['function'] ) { - $delete_theme_call = $call; - break; - } - } - return $delete_theme_call; - } - - /** - * Whether we've switched to another theme in the current request. - * - * @access private - * - * @return boolean True if this is a theme switch request, false otherwise. - */ - private function is_theme_switch() { - return did_action( 'after_switch_theme' ); - } - - /** - * Return Total number of objects. - * - * @param array $config Full Sync config. - * - * @return int total - */ - public function total( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - return 1; - } - - /** - * Retrieve a set of constants by their IDs. - * - * @access public - * - * @param string $object_type Object type. - * @param array $ids Object IDs. - * @return array Array of objects. - */ - public function get_objects_by_id( $object_type, $ids ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - if ( 'theme-info' !== $object_type ) { - return array(); - } - - return array( $this->get_theme_info() ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-updates.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-updates.php deleted file mode 100644 index 0c31f93a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-updates.php +++ /dev/null @@ -1,587 +0,0 @@ -updates = array(); - } - - /** - * Sync module name. - * - * @access public - * - * @return string - */ - public function name() { - return 'updates'; - } - - /** - * Initialize updates action listeners. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_listeners( $callable ) { - global $wp_version; - $this->old_wp_version = $wp_version; - add_action( 'set_site_transient_update_plugins', array( $this, 'validate_update_change' ), 10, 3 ); - add_action( 'set_site_transient_update_themes', array( $this, 'validate_update_change' ), 10, 3 ); - add_action( 'set_site_transient_update_core', array( $this, 'validate_update_change' ), 10, 3 ); - - add_action( 'jetpack_update_plugins_change', $callable ); - add_action( 'jetpack_update_themes_change', $callable ); - add_action( 'jetpack_update_core_change', $callable ); - - add_filter( - 'jetpack_sync_before_enqueue_jetpack_update_themes_change', - array( - $this, - 'expand_themes', - ) - ); - - add_filter( - 'jetpack_sync_before_enqueue_jetpack_update_plugins_change', - array( - $this, - 'filter_update_keys', - ), - 10, - 2 - ); - add_filter( - 'jetpack_sync_before_enqueue_upgrader_process_complete', - array( - $this, - 'filter_upgrader_process_complete', - ), - 10, - 2 - ); - - if ( is_multisite() ) { - add_filter( 'pre_update_site_option_wpmu_upgrade_site', array( $this, 'update_core_network_event' ), 10, 2 ); - add_action( 'jetpack_sync_core_update_network', $callable, 10, 3 ); - } - - // Send data when update completes. - add_action( '_core_updated_successfully', array( $this, 'update_core' ) ); - add_action( 'jetpack_sync_core_reinstalled_successfully', $callable ); - add_action( 'jetpack_sync_core_autoupdated_successfully', $callable, 10, 2 ); - add_action( 'jetpack_sync_core_updated_successfully', $callable, 10, 2 ); - } - - /** - * Initialize updates action listeners for full sync. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_full_sync_listeners( $callable ) { - add_action( 'jetpack_full_sync_updates', $callable ); - } - - /** - * Initialize the module in the sender. - * - * @access public - */ - public function init_before_send() { - add_filter( 'jetpack_sync_before_send_jetpack_full_sync_updates', array( $this, 'expand_updates' ) ); - } - - /** - * Handle a core network update. - * - * @access public - * - * @param int $wp_db_version Current version of the WordPress database. - * @param int $old_wp_db_version Old version of the WordPress database. - * @return int Current version of the WordPress database. - */ - public function update_core_network_event( $wp_db_version, $old_wp_db_version ) { - global $wp_version; - /** - * Sync event for when core wp network updates to a new db version - * - * @since 1.6.3 - * @since-jetpack 5.0.0 - * - * @param int $wp_db_version the latest wp_db_version - * @param int $old_wp_db_version previous wp_db_version - * @param string $wp_version the latest wp_version - */ - do_action( 'jetpack_sync_core_update_network', $wp_db_version, $old_wp_db_version, $wp_version ); - return $wp_db_version; - } - - /** - * Handle a core update. - * - * @access public - * - * @todo Implement nonce or refactor to use `admin_post_{$action}` hooks instead. - * - * @param string $new_wp_version The new WP core version. - */ - public function update_core( $new_wp_version ) { - global $pagenow; - - // // phpcs:ignore WordPress.Security.NonceVerification.Recommended - if ( isset( $_GET['action'] ) && 'do-core-reinstall' === $_GET['action'] ) { - /** - * Sync event that fires when core reinstall was successful - * - * @since 1.6.3 - * @since-jetpack 5.0.0 - * - * @param string $new_wp_version the updated WordPress version - */ - do_action( 'jetpack_sync_core_reinstalled_successfully', $new_wp_version ); - return; - } - - // Core was autoupdated. - if ( - 'update-core.php' !== $pagenow && - ! Jetpack_Constants::is_true( 'REST_API_REQUEST' ) // WP.com rest api calls should never be marked as a core autoupdate. - ) { - /** - * Sync event that fires when core autoupdate was successful - * - * @since 1.6.3 - * @since-jetpack 5.0.0 - * - * @param string $new_wp_version the updated WordPress version - * @param string $old_wp_version the previous WordPress version - */ - do_action( 'jetpack_sync_core_autoupdated_successfully', $new_wp_version, $this->old_wp_version ); - return; - } - /** - * Sync event that fires when core update was successful - * - * @since 1.6.3 - * @since-jetpack 5.0.0 - * - * @param string $new_wp_version the updated WordPress version - * @param string $old_wp_version the previous WordPress version - */ - do_action( 'jetpack_sync_core_updated_successfully', $new_wp_version, $this->old_wp_version ); - } - - /** - * Retrieve the checksum for an update. - * - * @access public - * - * @param object $update The update object. - * @param string $transient The transient we're retrieving a checksum for. - * @return int The checksum. - */ - public function get_update_checksum( $update, $transient ) { - $updates = array(); - $no_updated = array(); - switch ( $transient ) { - case 'update_plugins': - if ( ! empty( $update->response ) && is_array( $update->response ) ) { - foreach ( $update->response as $plugin_slug => $response ) { - if ( ! empty( $plugin_slug ) && isset( $response->new_version ) ) { - $updates[] = array( $plugin_slug => $response->new_version ); - } - } - } - if ( ! empty( $update->no_update ) ) { - $no_updated = array_keys( $update->no_update ); - } - - if ( ! isset( $no_updated['jetpack/jetpack.php'] ) && isset( $updates['jetpack/jetpack.php'] ) ) { - return false; - } - - break; - case 'update_themes': - if ( ! empty( $update->response ) && is_array( $update->response ) ) { - foreach ( $update->response as $theme_slug => $response ) { - if ( ! empty( $theme_slug ) && isset( $response['new_version'] ) ) { - $updates[] = array( $theme_slug => $response['new_version'] ); - } - } - } - - if ( ! empty( $update->checked ) ) { - $no_updated = $update->checked; - } - - break; - case 'update_core': - if ( ! empty( $update->updates ) && is_array( $update->updates ) ) { - foreach ( $update->updates as $response ) { - if ( ! empty( $response->response ) && 'latest' === $response->response ) { - continue; - } - if ( ! empty( $response->response ) && isset( $response->packages->full ) ) { - $updates[] = array( $response->response => $response->packages->full ); - } - } - } - - if ( ! empty( $update->version_checked ) ) { - $no_updated = $update->version_checked; - } - - if ( empty( $updates ) ) { - return false; - } - break; - - } - if ( empty( $updates ) && empty( $no_updated ) ) { - return false; - } - return $this->get_check_sum( array( $no_updated, $updates ) ); - } - - /** - * Validate a change coming from an update before sending for sync. - * - * @access public - * - * @param mixed $value Site transient value. - * @param int $expiration Time until transient expiration in seconds. - * @param string $transient Transient name. - */ - public function validate_update_change( $value, $expiration, $transient ) { - $new_checksum = $this->get_update_checksum( $value, $transient ); - - if ( false === $new_checksum ) { - return; - } - - $checksums = get_option( self::UPDATES_CHECKSUM_OPTION_NAME, array() ); - - if ( isset( $checksums[ $transient ] ) && $checksums[ $transient ] === $new_checksum ) { - return; - } - - $checksums[ $transient ] = $new_checksum; - - update_option( self::UPDATES_CHECKSUM_OPTION_NAME, $checksums ); - if ( 'update_core' === $transient ) { - /** - * Trigger a change to core update that we want to sync. - * - * @since 1.6.3 - * @since-jetpack 5.1.0 - * - * @param array $value Contains info that tells us what needs updating. - */ - do_action( 'jetpack_update_core_change', $value ); - return; - } - if ( empty( $this->updates ) ) { - // Lets add the shutdown method once and only when the updates move from empty to filled with something. - add_action( 'shutdown', array( $this, 'sync_last_event' ), 9 ); - } - if ( ! isset( $this->updates[ $transient ] ) ) { - $this->updates[ $transient ] = array(); - } - $this->updates[ $transient ][] = $value; - } - - /** - * Sync the last update only. - * - * @access public - */ - public function sync_last_event() { - foreach ( $this->updates as $transient => $values ) { - $value = end( $values ); // Only send over the last value. - /** - * Trigger a change to a specific update that we want to sync. - * Triggers one of the following actions: - * - jetpack_{$transient}_change - * - jetpack_update_plugins_change - * - jetpack_update_themes_change - * - * @since 1.6.3 - * @since-jetpack 5.1.0 - * - * @param array $value Contains info that tells us what needs updating. - */ - do_action( "jetpack_{$transient}_change", $value ); - } - } - - /** - * Enqueue the updates actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $max_items_to_enqueue Maximum number of items to enqueue. - * @param boolean $state True if full sync has finished enqueueing this module, false otherwise. - * @return array Number of actions enqueued, and next module state. - */ - public function enqueue_full_sync_actions( $config, $max_items_to_enqueue, $state ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - /** - * Tells the client to sync all updates to the server - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * - * @param boolean Whether to expand updates (should always be true) - */ - do_action( 'jetpack_full_sync_updates', true ); - - // The number of actions enqueued, and next module state (true == done). - return array( 1, true ); - } - - /** - * Send the updates actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $send_until The timestamp until the current request can send. - * @param array $state This module Full Sync status. - * - * @return array This module Full Sync status. - */ - public function send_full_sync_actions( $config, $send_until, $state ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - // we call this instead of do_action when sending immediately. - $this->send_action( 'jetpack_full_sync_updates', array( true ) ); - - // The number of actions enqueued, and next module state (true == done). - return array( 'finished' => true ); - } - - /** - * Retrieve an estimated number of actions that will be enqueued. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @return array Number of items yet to be enqueued. - */ - public function estimate_full_sync_actions( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - return 1; - } - - /** - * Retrieve the actions that will be sent for this module during a full sync. - * - * @access public - * - * @return array Full sync actions of this module. - */ - public function get_full_sync_actions() { - return array( 'jetpack_full_sync_updates' ); - } - - /** - * Retrieve all updates that we're interested in. - * - * @access public - * - * @return array All updates. - */ - public function get_all_updates() { - return array( - 'core' => get_site_transient( 'update_core' ), - 'plugins' => get_site_transient( 'update_plugins' ), - 'themes' => get_site_transient( 'update_themes' ), - ); - } - - /** - * Remove unnecessary keys from synced updates data. - * - * @access public - * - * @param array $args Hook arguments. - * @return array $args Hook arguments. - */ - public function filter_update_keys( $args ) { - $updates = $args[0]; - - if ( isset( $updates->no_update ) ) { - unset( $updates->no_update ); - } - - return $args; - } - - /** - * Filter out upgrader object from the completed upgrader action args. - * - * @access public - * - * @param array $args Hook arguments. - * @return array $args Filtered hook arguments. - */ - public function filter_upgrader_process_complete( $args ) { - array_shift( $args ); - - return $args; - } - - /** - * Expand the updates within a hook before they are serialized and sent to the server. - * - * @access public - * - * @param array $args The hook parameters. - * @return array $args The hook parameters. - */ - public function expand_updates( $args ) { - if ( $args[0] ) { - return $this->get_all_updates(); - } - - return $args; - } - - /** - * Expand the themes within a hook before they are serialized and sent to the server. - * - * @access public - * - * @param array $args The hook parameters. - * @return array $args The hook parameters. - */ - public function expand_themes( $args ) { - if ( ! isset( $args[0]->response ) ) { - return $args; - } - if ( ! is_array( $args[0]->response ) ) { - // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_trigger_error - trigger_error( 'Warning: Not an Array as expected but -> ' . wp_json_encode( $args[0]->response ) . ' instead', E_USER_WARNING ); - return $args; - } - foreach ( $args[0]->response as $stylesheet => &$theme_data ) { - $theme = wp_get_theme( $stylesheet ); - $theme_data['name'] = $theme->name; - } - return $args; - } - - /** - * Perform module cleanup. - * Deletes any transients and options that this module uses. - * Usually triggered when uninstalling the plugin. - * - * @access public - */ - public function reset_data() { - delete_option( self::UPDATES_CHECKSUM_OPTION_NAME ); - } - - /** - * Return Total number of objects. - * - * @param array $config Full Sync config. - * - * @return int total - */ - public function total( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - return 3; - } - - /** - * Retrieve a set of updates by their IDs. - * - * @access public - * - * @param string $object_type Object type. - * @param array $ids Object IDs. - * @return array Array of objects. - */ - public function get_objects_by_id( $object_type, $ids ) { - if ( empty( $ids ) || empty( $object_type ) || 'update' !== $object_type ) { - return array(); - } - - $objects = array(); - foreach ( (array) $ids as $id ) { - $object = $this->get_object_by_id( $object_type, $id ); - - if ( 'all' === $id ) { - // If all was requested it contains all updates and can simply be returned. - return $object; - } - $objects[ $id ] = $object; - } - - return $objects; - } - - /** - * Retrieve a update by its id. - * - * @access public - * - * @param string $object_type Type of the sync object. - * @param string $id ID of the sync object. - * @return mixed Value of Update. - */ - public function get_object_by_id( $object_type, $id ) { - if ( 'update' === $object_type ) { - - // Only whitelisted constants can be returned. - if ( in_array( $id, array( 'core', 'plugins', 'themes' ), true ) ) { - return get_site_transient( 'update_' . $id ); - } elseif ( 'all' === $id ) { - return $this->get_all_updates(); - } - } - - return false; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-users.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-users.php deleted file mode 100644 index e043a119..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-users.php +++ /dev/null @@ -1,948 +0,0 @@ - 'password_changed', - 'user_email' => 'email_changed', - 'user_nicename' => 'nicename_changed', - 'user_url' => 'url_changed', - 'user_registered' => 'registration_date_changed', - 'user_activation_key' => 'activation_key_changed', - 'display_name' => 'display_name_changed', - ); - - /** - * Sync module name. - * - * @access public - * - * @return string - */ - public function name() { - return 'users'; - } - - /** - * The table name. - * - * @access public - * - * @return string - * @deprecated since 3.11.0 Use table() instead. - */ - public function table_name() { - _deprecated_function( __METHOD__, '3.11.0', 'Automattic\\Jetpack\\Sync\\Users->table' ); - return 'usermeta'; - } - - /** - * The table in the database with the prefix. - * - * @access public - * - * @return string|bool - */ - public function table() { - global $wpdb; - return $wpdb->usermeta; - } - - /** - * The id field in the database. - * - * @access public - * - * @return string - */ - public function id_field() { - return 'user_id'; - } - - /** - * Retrieve a user by its ID. - * This is here to support the backfill API. - * - * @access public - * - * @param string $object_type Type of the sync object. - * @param int $id ID of the sync object. - * @return \WP_User|bool Filtered \WP_User object, or false if the object is not a user. - */ - public function get_object_by_id( $object_type, $id ) { - if ( 'user' === $object_type ) { - $user = get_user_by( 'id', (int) $id ); - if ( $user ) { - return $this->sanitize_user_and_expand( $user ); - } - } - - return false; - } - - /** - * Initialize users action listeners. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_listeners( $callable ) { - // Users. - add_action( 'user_register', array( $this, 'user_register_handler' ) ); - add_action( 'profile_update', array( $this, 'save_user_handler' ), 10, 2 ); - - add_action( 'add_user_to_blog', array( $this, 'add_user_to_blog_handler' ) ); - add_action( 'jetpack_sync_add_user', $callable, 10, 2 ); - - add_action( 'jetpack_sync_register_user', $callable, 10, 2 ); - add_action( 'jetpack_sync_save_user', $callable, 10, 2 ); - - add_action( 'jetpack_sync_user_locale', $callable, 10, 2 ); - add_action( 'jetpack_sync_user_locale_delete', $callable, 10, 1 ); - - add_action( 'deleted_user', array( $this, 'deleted_user_handler' ), 10, 2 ); - add_action( 'jetpack_deleted_user', $callable, 10, 3 ); - add_action( 'remove_user_from_blog', array( $this, 'remove_user_from_blog_handler' ), 10, 2 ); - add_action( 'jetpack_removed_user_from_blog', $callable, 10, 2 ); - - // User roles. - add_action( 'add_user_role', array( $this, 'add_user_role_handler' ), 10, 2 ); - add_action( 'set_user_role', array( $this, 'save_user_role_handler' ), 10, 3 ); - add_action( 'remove_user_role', array( $this, 'remove_user_role_handler' ), 10, 2 ); - - // User capabilities. - add_action( 'added_user_meta', array( $this, 'maybe_save_user_meta' ), 10, 4 ); - add_action( 'updated_user_meta', array( $this, 'maybe_save_user_meta' ), 10, 4 ); - add_action( 'deleted_user_meta', array( $this, 'maybe_save_user_meta' ), 10, 4 ); - - // User authentication. - add_filter( 'authenticate', array( $this, 'authenticate_handler' ), 1000, 3 ); - add_action( 'wp_login', array( $this, 'wp_login_handler' ), 10, 2 ); - - add_action( 'jetpack_wp_login', $callable, 10, 3 ); - - add_action( 'wp_logout', $callable, 10, 1 ); - add_action( 'wp_masterbar_logout', $callable, 10, 1 ); - - // Add on init. - add_filter( 'jetpack_sync_before_enqueue_jetpack_sync_add_user', array( $this, 'expand_action' ) ); - add_filter( 'jetpack_sync_before_enqueue_jetpack_sync_register_user', array( $this, 'expand_action' ) ); - add_filter( 'jetpack_sync_before_enqueue_jetpack_sync_save_user', array( $this, 'expand_action' ) ); - add_filter( 'jetpack_sync_before_enqueue_jetpack_wp_login', array( $this, 'expand_login_username' ), 10, 1 ); - add_filter( 'jetpack_sync_before_enqueue_wp_logout', array( $this, 'expand_logout_username' ), 10, 1 ); - } - - /** - * Initialize users action listeners for full sync. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_full_sync_listeners( $callable ) { - add_action( 'jetpack_full_sync_users', $callable ); - } - - /** - * Initialize the module in the sender. - * - * @access public - */ - public function init_before_send() { - // Full sync. - add_filter( 'jetpack_sync_before_send_jetpack_full_sync_users', array( $this, 'expand_users' ) ); - } - - /** - * Retrieve a user by a user ID or object. - * - * @access private - * - * @param mixed $user User object or ID. - * @return \WP_User|null User object, or `null` if user invalid/not found. - */ - private function get_user( $user ) { - if ( is_numeric( $user ) ) { - $user = get_user_by( 'id', $user ); - } - if ( $user instanceof \WP_User ) { - return $user; - } - return null; - } - - /** - * Sanitize a user object. - * Removes the password from the user object because we don't want to sync it. - * - * @access public - * - * @todo Refactor `serialize`/`unserialize` to `wp_json_encode`/`wp_json_decode`. - * - * @param \WP_User $user User object. - * @return \WP_User Sanitized user object. - */ - public function sanitize_user( $user ) { - $user = $this->get_user( $user ); - // This creates a new user object and stops the passing of the object by reference. - // // phpcs:disable WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize, WordPress.PHP.DiscouragedPHPFunctions.serialize_unserialize - $user = unserialize( serialize( $user ) ); - - if ( is_object( $user ) && is_object( $user->data ) ) { - unset( $user->data->user_pass ); - } - return $user; - } - - /** - * Expand a particular user. - * - * @access public - * - * @param \WP_User $user User object. - * @return \WP_User Expanded user object. - */ - public function expand_user( $user ) { - if ( ! is_object( $user ) ) { - return null; - } - $user->allowed_mime_types = get_allowed_mime_types( $user ); - $user->allcaps = $this->get_real_user_capabilities( $user ); - - // Only set the user locale if it is different from the site locale. - if ( get_locale() !== get_user_locale( $user->ID ) ) { - $user->locale = get_user_locale( $user->ID ); - } - - return $user; - } - - /** - * Retrieve capabilities we care about for a particular user. - * - * @access public - * - * @param \WP_User $user User object. - * @return array User capabilities. - */ - public function get_real_user_capabilities( $user ) { - $user_capabilities = array(); - if ( is_wp_error( $user ) ) { - return $user_capabilities; - } - foreach ( Defaults::get_capabilities_whitelist() as $capability ) { - if ( user_can( $user, $capability ) ) { - $user_capabilities[ $capability ] = true; - } - } - return $user_capabilities; - } - - /** - * Retrieve, expand and sanitize a user. - * Can be directly used in the sync user action handlers. - * - * @access public - * - * @param mixed $user User ID or user object. - * @return \WP_User Expanded and sanitized user object. - */ - public function sanitize_user_and_expand( $user ) { - $user = $this->get_user( $user ); - $user = $this->expand_user( $user ); - return $this->sanitize_user( $user ); - } - - /** - * Expand the user within a hook before it is serialized and sent to the server. - * - * @access public - * - * @param array $args The hook arguments. - * @return array $args The hook arguments. - */ - public function expand_action( $args ) { - // The first argument is always the user. - list( $user ) = $args; - if ( $user ) { - $args[0] = $this->sanitize_user_and_expand( $user ); - return $args; - } - - return false; - } - - /** - * Expand the user username at login before enqueuing. - * - * @access public - * - * @param array $args The hook arguments. - * @return array $args Expanded hook arguments. - */ - public function expand_login_username( $args ) { - list( $login, $user, $flags ) = $args; - $user = $this->sanitize_user( $user ); - - return array( $login, $user, $flags ); - } - - /** - * Expand the user username at logout before enqueuing. - * - * @access public - * - * @param array $args The hook arguments. - * @return false|array $args Expanded hook arguments or false if we don't have a user. - */ - public function expand_logout_username( $args ) { - list( $user_id ) = $args; - - $user = get_userdata( $user_id ); - $user = $this->sanitize_user( $user ); - - $login = ''; - if ( is_object( $user ) && is_object( $user->data ) ) { - $login = $user->data->user_login; - } - - // If we don't have a user here lets not enqueue anything. - if ( empty( $login ) ) { - return false; - } - - return array( $login, $user ); - } - - /** - * Additional processing is needed for wp_login so we introduce this wrapper handler. - * - * @access public - * - * @param string $user_login The user login. - * @param \WP_User $user The user object. - */ - public function wp_login_handler( $user_login, $user ) { - /** - * Fires when a user is logged into a site. - * - * @since 1.6.3 - * @since-jetpack 7.2.0 - * - * @param int $user_id The user ID. - * @param \WP_User $user The User Object of the user that currently logged in. - * @param array $params Any Flags that have been added during login. - */ - do_action( 'jetpack_wp_login', $user->ID, $user, $this->get_flags( $user->ID ) ); - $this->clear_flags( $user->ID ); - } - - /** - * A hook for the authenticate event that checks the password strength. - * - * @access public - * - * @param \WP_Error|\WP_User $user The user object, or an error. - * @param string $username The username. - * @param string $password The password used to authenticate. - * @return \WP_Error|\WP_User the same object that was passed into the function. - */ - public function authenticate_handler( $user, $username, $password ) { - // In case of cookie authentication we don't do anything here. - if ( empty( $password ) ) { - return $user; - } - - // We are only interested in successful authentication events. - if ( is_wp_error( $user ) || ! ( $user instanceof \WP_User ) ) { - return $user; - } - - $password_checker = new Password_Checker( $user->ID ); - - $test_results = $password_checker->test( $password, true ); - - // If the password passes tests, we don't do anything. - if ( empty( $test_results['test_results']['failed'] ) ) { - return $user; - } - - $this->add_flags( - $user->ID, - array( - 'warning' => 'The password failed at least one strength test.', - 'failures' => $test_results['test_results']['failed'], - ) - ); - - return $user; - } - - /** - * Handler for after the user is deleted. - * - * @access public - * - * @param int $deleted_user_id ID of the deleted user. - * @param int $reassigned_user_id ID of the user the deleted user's posts are reassigned to (if any). - */ - public function deleted_user_handler( $deleted_user_id, $reassigned_user_id = '' ) { - $is_multisite = is_multisite(); - /** - * Fires when a user is deleted on a site - * - * @since 1.6.3 - * @since-jetpack 5.4.0 - * - * @param int $deleted_user_id - ID of the deleted user. - * @param int $reassigned_user_id - ID of the user the deleted user's posts are reassigned to (if any). - * @param bool $is_multisite - Whether this site is a multisite installation. - */ - do_action( 'jetpack_deleted_user', $deleted_user_id, $reassigned_user_id, $is_multisite ); - } - - /** - * Handler for user registration. - * - * @access public - * - * @param int $user_id ID of the deleted user. - */ - public function user_register_handler( $user_id ) { - // Ensure we only sync users who are members of the current blog. - if ( ! is_user_member_of_blog( $user_id, get_current_blog_id() ) ) { - return; - } - - if ( Jetpack_Constants::is_true( 'JETPACK_INVITE_ACCEPTED' ) ) { - $this->add_flags( $user_id, array( 'invitation_accepted' => true ) ); - } - /** - * Fires when a new user is registered on a site - * - * @since 1.6.3 - * @since-jetpack 4.9.0 - * - * @param object The WP_User object - */ - do_action( 'jetpack_sync_register_user', $user_id, $this->get_flags( $user_id ) ); - $this->clear_flags( $user_id ); - } - - /** - * Handler for user addition to the current blog. - * - * @access public - * - * @param int $user_id ID of the user. - */ - public function add_user_to_blog_handler( $user_id ) { - // Ensure we only sync users who are members of the current blog. - if ( ! is_user_member_of_blog( $user_id, get_current_blog_id() ) ) { - return; - } - - if ( Jetpack_Constants::is_true( 'JETPACK_INVITE_ACCEPTED' ) ) { - $this->add_flags( $user_id, array( 'invitation_accepted' => true ) ); - } - - /** - * Fires when a user is added on a site - * - * @since 1.6.3 - * @since-jetpack 4.9.0 - * - * @param object The WP_User object - */ - do_action( 'jetpack_sync_add_user', $user_id, $this->get_flags( $user_id ) ); - $this->clear_flags( $user_id ); - } - - /** - * Handler for user save. - * - * @access public - * - * @param int $user_id ID of the user. - * @param \WP_User $old_user_data User object before the changes. - */ - public function save_user_handler( $user_id, $old_user_data = null ) { - // Ensure we only sync users who are members of the current blog. - if ( ! is_user_member_of_blog( $user_id, get_current_blog_id() ) ) { - return; - } - - $user = get_user_by( 'id', $user_id ); - - // Older versions of WP don't pass the old_user_data in ->data. - if ( isset( $old_user_data->data ) ) { - $old_user = $old_user_data->data; - } else { - $old_user = $old_user_data; - } - - if ( ! is_object( $old_user ) ) { - return; - } - - $old_user_array = get_object_vars( $old_user ); - - foreach ( $old_user_array as $user_field => $field_value ) { - if ( false === $user->has_prop( $user_field ) ) { - continue; - } - if ( 'ID' === $user_field ) { - continue; - } - if ( $user->$user_field !== $field_value ) { - if ( 'user_email' === $user_field ) { - /** - * The '_new_email' user meta is deleted right after the call to wp_update_user - * that got us to this point so if it's still set then this was a user confirming - * their new email address. - */ - if ( 1 === (int) get_user_meta( $user->ID, '_new_email', true ) ) { - $this->flags[ $user_id ]['email_changed'] = true; - } - continue; - } - - $flag = isset( $this->user_fields_to_flags_mapping[ $user_field ] ) ? $this->user_fields_to_flags_mapping[ $user_field ] : 'unknown_field_changed'; - - $this->flags[ $user_id ][ $flag ] = true; - } - } - - if ( isset( $this->flags[ $user_id ] ) ) { - - /** - * Fires when the client needs to sync an updated user. - * - * @since 1.6.3 - * @since-jetpack 4.2.0 - * - * @param \WP_User The WP_User object - * @param array State - New since 5.8.0 - */ - do_action( 'jetpack_sync_save_user', $user_id, $this->get_flags( $user_id ) ); - $this->clear_flags( $user_id ); - } - } - - /** - * Handler for add user role change. - * - * @access public - * - * @param int $user_id ID of the user. - * @param string $role New user role. - */ - public function add_user_role_handler( $user_id, $role ) { - $this->add_flags( - $user_id, - array( - 'role_added' => $role, - ) - ); - - $this->save_user_role_handler( $user_id, $role ); - } - - /** - * Handler for remove user role change. - * - * @access public - * - * @param int $user_id ID of the user. - * @param string $role Removed user role. - */ - public function remove_user_role_handler( $user_id, $role ) { - $this->add_flags( - $user_id, - array( - 'role_removed' => $role, - ) - ); - - $this->save_user_role_handler( $user_id, $role ); - } - - /** - * Handler for user role change. - * - * @access public - * - * @param int $user_id ID of the user. - * @param string $role New user role. - * @param array $old_roles Previous user roles. - */ - public function save_user_role_handler( $user_id, $role, $old_roles = null ) { - $this->add_flags( - $user_id, - array( - 'role_changed' => true, - 'previous_role' => $old_roles, - ) - ); - - // The jetpack_sync_register_user payload is identical to jetpack_sync_save_user, don't send both. - if ( $this->is_create_user() || $this->is_add_user_to_blog() ) { - return; - } - /** - * This action is documented already in this file - */ - do_action( 'jetpack_sync_save_user', $user_id, $this->get_flags( $user_id ) ); - $this->clear_flags( $user_id ); - } - - /** - * Retrieve current flags for a particular user. - * - * @access public - * - * @param int $user_id ID of the user. - * @return array Current flags of the user. - */ - public function get_flags( $user_id ) { - if ( isset( $this->flags[ $user_id ] ) ) { - return $this->flags[ $user_id ]; - } - return array(); - } - - /** - * Clear the flags of a particular user. - * - * @access public - * - * @param int $user_id ID of the user. - */ - public function clear_flags( $user_id ) { - if ( isset( $this->flags[ $user_id ] ) ) { - unset( $this->flags[ $user_id ] ); - } - } - - /** - * Add flags to a particular user. - * - * @access public - * - * @param int $user_id ID of the user. - * @param array $flags New flags to add for the user. - */ - public function add_flags( $user_id, $flags ) { - $this->flags[ $user_id ] = wp_parse_args( $flags, $this->get_flags( $user_id ) ); - } - - /** - * Save the user meta, if we're interested in it. - * Also uses the time to add flags for the user. - * - * @access public - * - * @param int $meta_id ID of the meta object. - * @param int $user_id ID of the user. - * @param string $meta_key Meta key. - * @param mixed $value Meta value. - */ - public function maybe_save_user_meta( $meta_id, $user_id, $meta_key, $value ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - if ( 'locale' === $meta_key ) { - $this->add_flags( $user_id, array( 'locale_changed' => true ) ); - } - - $user = get_user_by( 'id', $user_id ); - if ( isset( $user->cap_key ) && $meta_key === $user->cap_key ) { - $this->add_flags( $user_id, array( 'capabilities_changed' => true ) ); - } - - if ( $this->is_create_user() || $this->is_add_user_to_blog() || $this->is_delete_user() ) { - return; - } - - if ( isset( $this->flags[ $user_id ] ) ) { - /** - * This action is documented already in this file - */ - do_action( 'jetpack_sync_save_user', $user_id, $this->get_flags( $user_id ) ); - } - } - - /** - * Enqueue the users actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $max_items_to_enqueue Maximum number of items to enqueue. - * @param boolean $state True if full sync has finished enqueueing this module, false otherwise. - * @return array Number of actions enqueued, and next module state. - */ - public function enqueue_full_sync_actions( $config, $max_items_to_enqueue, $state ) { - global $wpdb; - - return $this->enqueue_all_ids_as_action( 'jetpack_full_sync_users', $wpdb->usermeta, 'user_id', $this->get_where_sql( $config ), $max_items_to_enqueue, $state ); - } - - /** - * Retrieve an estimated number of actions that will be enqueued. - * - * @access public - * - * @todo Refactor to prepare the SQL query before executing it. - * - * @param array $config Full sync configuration for this sync module. - * @return array Number of items yet to be enqueued. - */ - public function estimate_full_sync_actions( $config ) { - global $wpdb; - - $query = "SELECT count(*) FROM $wpdb->usermeta"; - - $where_sql = $this->get_where_sql( $config ); - if ( $where_sql ) { - $query .= ' WHERE ' . $where_sql; - } - - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching - $count = (int) $wpdb->get_var( $query ); - - return (int) ceil( $count / self::ARRAY_CHUNK_SIZE ); - } - - /** - * Retrieve the WHERE SQL clause based on the module config. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @return string WHERE SQL clause, or `null` if no comments are specified in the module config. - */ - public function get_where_sql( $config ) { - global $wpdb; - - $query = "meta_key = '{$wpdb->prefix}user_level' AND meta_value > 0"; - - // The $config variable is a list of user IDs to sync. - if ( is_array( $config ) ) { - $query .= ' AND user_id IN (' . implode( ',', array_map( 'intval', $config ) ) . ')'; - } - - return $query; - } - - /** - * Retrieve the actions that will be sent for this module during a full sync. - * - * @access public - * - * @return array Full sync actions of this module. - */ - public function get_full_sync_actions() { - return array( 'jetpack_full_sync_users' ); - } - - /** - * Retrieve initial sync user config. - * - * @access public - * - * @todo Refactor the SQL query to call $wpdb->prepare() before execution. - * - * @return array|boolean IDs of users to initially sync, or false if tbe number of users exceed the maximum. - */ - public function get_initial_sync_user_config() { - global $wpdb; - - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared - $user_ids = $wpdb->get_col( "SELECT user_id FROM $wpdb->usermeta WHERE meta_key = '{$wpdb->prefix}user_level' AND meta_value > 0 LIMIT " . ( self::MAX_INITIAL_SYNC_USERS + 1 ) ); - $user_ids_count = is_countable( $user_ids ) ? count( $user_ids ) : 0; - - if ( $user_ids_count <= self::MAX_INITIAL_SYNC_USERS ) { - return $user_ids; - } else { - return false; - } - } - - /** - * Expand the users within a hook before they are serialized and sent to the server. - * - * @access public - * - * @param array $args The hook arguments. - * @return array $args The hook arguments. - */ - public function expand_users( $args ) { - list( $user_ids, $previous_end ) = $args; - - return array( - 'users' => array_map( - array( $this, 'sanitize_user_and_expand' ), - get_users( - array( - 'include' => $user_ids, - 'orderby' => 'ID', - 'order' => 'DESC', - ) - ) - ), - 'previous_end' => $previous_end, - ); - } - - /** - * Handler for user removal from a particular blog. - * - * @access public - * - * @param int $user_id ID of the user. - * @param int $blog_id ID of the blog. - */ - public function remove_user_from_blog_handler( $user_id, $blog_id ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - // User is removed on add, see https://github.com/WordPress/WordPress/blob/0401cee8b36df3def8e807dd766adc02b359dfaf/wp-includes/ms-functions.php#L2114. - if ( $this->is_add_new_user_to_blog() ) { - return; - } - - $reassigned_user_id = $this->get_reassigned_network_user_id(); - - // Note that we are in the context of the blog the user is removed from, see https://github.com/WordPress/WordPress/blob/473e1ba73bc5c18c72d7f288447503713d518790/wp-includes/ms-functions.php#L233. - /** - * Fires when a user is removed from a blog on a multisite installation - * - * @since 1.6.3 - * @since-jetpack 5.4.0 - * - * @param int $user_id - ID of the removed user - * @param int $reassigned_user_id - ID of the user the removed user's posts are reassigned to (if any). - */ - do_action( 'jetpack_removed_user_from_blog', $user_id, $reassigned_user_id ); - } - - /** - * Whether we're adding a new user to a blog in this request. - * - * @access protected - * - * @return boolean - */ - protected function is_add_new_user_to_blog() { - return $this->is_function_in_backtrace( 'add_new_user_to_blog' ); - } - - /** - * Whether we're adding an existing user to a blog in this request. - * - * @access protected - * - * @return boolean - */ - protected function is_add_user_to_blog() { - return $this->is_function_in_backtrace( 'add_user_to_blog' ); - } - - /** - * Whether we're removing a user from a blog in this request. - * - * @access protected - * - * @return boolean - */ - protected function is_delete_user() { - return $this->is_function_in_backtrace( array( 'wp_delete_user', 'remove_user_from_blog' ) ); - } - - /** - * Whether we're creating a user or adding a new user to a blog. - * - * @access protected - * - * @return boolean - */ - protected function is_create_user() { - $functions = array( - 'add_new_user_to_blog', // Used to suppress jetpack_sync_save_user in save_user_cap_handler when user registered on multi site. - 'wp_create_user', // Used to suppress jetpack_sync_save_user in save_user_role_handler when user registered on multi site. - 'wp_insert_user', // Used to suppress jetpack_sync_save_user in save_user_cap_handler and save_user_role_handler when user registered on single site. - ); - - return $this->is_function_in_backtrace( $functions ); - } - - /** - * Retrieve the ID of the user the removed user's posts are reassigned to (if any). - * - * @return int ID of the user that got reassigned as the author of the posts. - */ - protected function get_reassigned_network_user_id() { - $backtrace = debug_backtrace( false ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_debug_backtrace - foreach ( $backtrace as $call ) { - if ( - 'remove_user_from_blog' === $call['function'] && - 3 === count( $call['args'] ) - ) { - return $call['args'][2]; - } - } - - return false; - } - - /** - * Checks if one or more function names is in debug_backtrace. - * - * @access protected - * - * @param array|string $names Mixed string name of function or array of string names of functions. - * @return bool - */ - protected function is_function_in_backtrace( $names ) { - $backtrace = debug_backtrace( false ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_debug_backtrace - if ( ! is_array( $names ) ) { - $names = array( $names ); - } - $names_as_keys = array_flip( $names ); - - $backtrace_functions = array_column( $backtrace, 'function' ); - $backtrace_functions_as_keys = array_flip( $backtrace_functions ); - $intersection = array_intersect_key( $backtrace_functions_as_keys, $names_as_keys ); - return ! empty( $intersection ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce-hpos-orders.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce-hpos-orders.php deleted file mode 100644 index fb230342..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce-hpos-orders.php +++ /dev/null @@ -1,568 +0,0 @@ -table' ); - return $this->order_table_name; - } - - /** - * The table in the database with the prefix. - * - * @access public - * - * @return string|bool - */ - public function table() { - return $this->order_table_name; - } - - /** - * Initialize order table data store, returns if the class don't exist (pre WC 6.x) - * - * @access public - */ - public function __construct() { - if ( ! class_exists( OrdersTableDataStore::class ) ) { - return; - } - $this->order_table_name = OrdersTableDataStore::get_orders_table_name(); - } - - /** - * Get order types that we want to sync. Adding a new type here is not enough, we would also need to add its prop in filter_order_data method. - * - * @param bool $prefixed Whether to return prefixed types with shop_ or not. - * - * @return array Order types to sync. - */ - public static function get_order_types_to_sync( $prefixed = false ) { - $types = array( 'order', 'order_refund' ); - - // Ensure this is available. - if ( ! function_exists( 'is_plugin_active' ) ) { - require_once ABSPATH . 'wp-admin/includes/plugin.php'; - } - - if ( is_plugin_active( self::WOOCOMMERCE_SUBSCRIPTIONS_PATH ) ) { - $types[] = 'subscription'; - } - - if ( $prefixed ) { - $types = array_map( - function ( $type ) { - return "shop_{$type}"; - }, - $types - ); - } - return $types; - } - - /** - * Hooks sync listners on order modify events. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_listeners( $callable ) { - foreach ( self::get_order_types_to_sync() as $type ) { - add_action( "woocommerce_after_{$type}_object_save", $callable ); - add_filter( "jetpack_sync_before_enqueue_woocommerce_after_{$type}_object_save", array( $this, 'expand_order_object' ) ); - } - add_action( 'woocommerce_delete_order', $callable ); - add_action( 'woocommerce_delete_subscription', $callable ); - add_filter( 'jetpack_sync_before_enqueue_woocommerce_delete_order', array( $this, 'on_before_enqueue_order_trash_delete' ) ); - add_filter( 'jetpack_sync_before_enqueue_woocommerce_delete_subscription', array( $this, 'on_before_enqueue_order_trash_delete' ) ); - add_action( 'woocommerce_trash_order', $callable ); - add_action( 'woocommerce_trash_subscription', $callable ); - add_filter( 'jetpack_sync_before_enqueue_woocommerce_trash_order', array( $this, 'on_before_enqueue_order_trash_delete' ) ); - add_filter( 'jetpack_sync_before_enqueue_woocommerce_trash_subscription', array( $this, 'on_before_enqueue_order_trash_delete' ) ); - } - - /** - * Hooks the full sync listeners. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_full_sync_listeners( $callable ) { - add_action( 'jetpack_full_sync_orders', $callable ); - } - - /** - * Initialize the module in the sender. - * - * @access public - */ - public function init_before_send() { - // Full sync. - add_filter( 'jetpack_sync_before_send_jetpack_full_sync_woocommerce_hpos_orders', array( $this, 'build_full_sync_action_array' ) ); - } - - /** - * Returns the ID field from wc_orders table. - * - * @access public - * - * @return string - */ - public function id_field() { - return 'id'; - } - - /** - * Retrieve the actions that will be sent for this module during a full sync. - * - * @access public - * - * @return array Full sync actions of this module. - */ - public function get_full_sync_actions() { - return array( 'jetpack_full_sync_orders' ); - } - - /** - * Retrieve order data by its ID. - * - * @access public - * - * @param string $object_type Type of object to retrieve. Should be `order`. - * @param int $id Order ID. - * - * @return array - */ - public function get_object_by_id( $object_type, $id ) { - if ( 'order' !== $object_type ) { - return $id; - } - $order_objects = $this->get_objects_by_id( $object_type, array( $id ) ); - return isset( $order_objects[ $id ] ) ? $order_objects[ $id ] : false; - } - - /** - * Retrieves multiple orders data by their ID. - * - * @access public - * - * @param string $object_type Type of object to retrieve. Should be `order`. - * @param array $ids List of order IDs. - * - * @return array - */ - public function get_objects_by_id( $object_type, $ids ) { - if ( 'order' !== $object_type || empty( $ids ) || ! is_array( $ids ) ) { - return array(); - } - - $orders = wc_get_orders( - array( - 'post__in' => $ids, - 'type' => self::get_order_types_to_sync( true ), - 'post_status' => self::get_all_possible_order_status_keys(), - 'limit' => -1, - ) - ); - - $orders_data = array(); - foreach ( $orders as $order ) { - $orders_data[ $order->get_id() ] = $this->filter_order_data( $order ); - } - - return $orders_data; - } - - /** - * Retrieves multiple orders data by their ID. - * - * @access public - * - * @param array $args List of order IDs. - * - * @return array - * @deprecated since 4.7.0 - */ - public function expand_order_objects( $args ) { - _deprecated_function( __METHOD__, '4.7.0' ); - list( $order_ids, $previous_end ) = $args; - return array( - 'orders' => $this->get_objects_by_id( 'order', $order_ids ), - 'previous_end' => $previous_end, - ); - } - - /** - * Build the full sync action object. - * - * @access public - * - * @param array $args An array with filtered objects and previous end. - * - * @return array An array with orders and previous end. - */ - public function build_full_sync_action_array( $args ) { - list( $filtered_orders, $previous_end ) = $args; - return array( - 'orders' => $filtered_orders['objects'], - 'previous_end' => $previous_end, - ); - } - - /** - * Retrieve order data by its ID. - * - * @access public - * - * @param array $args Order ID. - * - * @return array - */ - public function expand_order_object( $args ) { - if ( ! is_array( $args ) || ! isset( $args[0] ) ) { - return false; - } - $order_object = $args[0]; - - if ( is_int( $order_object ) ) { - $order_object = wc_get_order( $order_object ); - } - - if ( ! $order_object instanceof \WC_Abstract_Order ) { - return false; - } - - return $this->filter_order_data( $order_object ); - } - - /** - * Convert order ID to array. - * - * @access public - * - * @param array $args Order ID. - * - * @return array - */ - public function on_before_enqueue_order_trash_delete( $args ) { - if ( ! is_array( $args ) || ! isset( $args[0] ) ) { - return false; - } - $order_id = $args[0]; - - if ( ! is_int( $order_id ) ) { - return false; - } - - return array( 'id' => $order_id ); - } - - /** - * Filters only allowed keys from order data. No PII etc information is allowed to be synced. - * - * @access private - * - * @param \WC_Abstract_Order $order_object Order object. - * - * @return array Filtered order data. - */ - private function filter_order_data( $order_object ) { - // Filter with allowlist. - $allowed_data_keys = WooCommerce::$wc_post_meta_whitelist; - $core_table_keys = array( - 'id', - 'status', - 'date_created', - 'date_modified', - 'parent_id', - ); - $allowed_data_keys = array_merge( $allowed_data_keys, $core_table_keys ); - $filtered_order_data = array( 'type' => $order_object->get_type() ); - $order_data = $order_object->get_data(); - foreach ( $allowed_data_keys as $key ) { - $key = trim( $key, '_' ); - $key_parts = explode( '_', $key ); - - if ( in_array( $key_parts[0], array( 'order', 'refund' ), true ) ) { - if ( isset( $order_data[ $key_parts[1] ] ) && ! is_array( $order_data[ $key_parts[1] ] ) ) { - $filtered_order_data[ $key ] = $order_data[ $key_parts[1] ]; - continue; - } - } - - if ( in_array( $key_parts[0], array( 'billing', 'shipping' ), true ) && 2 === count( $key_parts ) ) { - if ( isset( $order_data[ $key_parts[0] ][ $key_parts[1] ] ) ) { - $filtered_order_data[ $key ] = $order_data[ $key_parts[0] ][ $key_parts[1] ]; - continue; - } - } - - /** - * We need to convert the WC_DateTime objects to stdClass objects to ensure they are properly encoded. - * - * @see Automattic\Jetpack\Sync\Functions::json_wrap as the return value of get_object_vars can vary depending on PHP version. - */ - if ( in_array( $key, array( 'date_created', 'date_modified', 'date_paid', 'date_completed' ), true ) && isset( $order_data[ $key ] ) ) { - if ( is_a( $order_data[ $key ], 'WC_DateTime' ) ) { - $filtered_order_data[ $key ] = (object) (array) $order_data[ $key ]; - continue; - } - } - - if ( isset( $order_data[ $key ] ) ) { - $filtered_order_data[ $key ] = $order_data[ $key ]; - continue; - } - - switch ( $key ) { - case 'cart_discount': - $filtered_order_data[ $key ] = isset( $order_data['discount_total'] ) ? $order_data['discount_total'] : ''; - break; - case 'cart_discount_tax': - $filtered_order_data[ $key ] = isset( $order_data['discount_tax'] ) ? $order_data['discount_tax'] : ''; - break; - case 'order_shipping': - $filtered_order_data[ $key ] = isset( $order_data['shipping_total'] ) ? $order_data['shipping_total'] : ''; - break; - case 'order_shipping_tax': - $filtered_order_data[ $key ] = isset( $order_data['shipping_tax'] ) ? $order_data['shipping_tax'] : ''; - break; - case 'order_tax': - $filtered_order_data[ $key ] = isset( $order_data['cart_tax'] ) ? $order_data['cart_tax'] : ''; - break; - case 'order_total': - $filtered_order_data[ $key ] = isset( $order_data['total'] ) ? $order_data['total'] : ''; - break; - } - } - if ( '' === $filtered_order_data['status'] ) { - $filtered_order_data['status'] = 'pending'; - } - $filtered_order_data['status'] = self::get_wc_order_status_with_prefix( $filtered_order_data['status'] ); - - /** - * Filter the order data before syncing. - * - * @since 3.7.0 - * - * @param array $filtered_order_data The Filtered order data. - * @param \WC_Abstract_Order $order_object The Order object. - */ - return apply_filters( 'jetpack_sync_filtered_hpos_order_data', $filtered_order_data, $order_object ); - } - - /** - * Returns all possible order status keys, including 'auto-draft' and 'trash'. - * - * @access public - * - * @return array An array of all possible status keys, including 'auto-draft' and 'trash'. - */ - public static function get_all_possible_order_status_keys() { - $order_statuses = array( 'auto-draft', 'trash' ); - $wc_order_statuses = self::wc_get_order_status_keys(); - - return array_unique( array_merge( $wc_order_statuses, $order_statuses ) ); - } - - /** - * Add the 'wc-' order status to WC related order statuses. - * - * @param string $status The WC order status without the 'wc-' prefix. - * - * @return string The WC order status with the 'wc-' prefix if it's a valid order status, initial $status otherwise. - */ - protected static function get_wc_order_status_with_prefix( string $status ) { - return in_array( 'wc-' . $status, self::wc_get_order_status_keys(), true ) ? 'wc-' . $status : $status; - } - - /** - * Returns order status keys using 'wc_get_order_statuses', if possible. - * - * @see wc_get_order_statuses - * - * @return array Filtered order metadata. - */ - private static function wc_get_order_status_keys() { - $wc_order_statuses = array(); - if ( function_exists( 'wc_get_order_statuses' ) ) { - $wc_order_statuses = array_keys( wc_get_order_statuses() ); - $wc_order_statuses[] = 'wc-checkout-draft'; // Temp till Woo fixes a bug where this order status is missing. - } else { - $wc_order_statuses = array( - 'wc-pending', - 'wc-processing', - 'wc-on-hold', - 'wc-completed', - 'wc-cancelled', - 'wc-refunded', - 'wc-failed', - 'wc-checkout-draft', - ); - } - - if ( function_exists( 'wcs_get_subscription_statuses' ) ) { - // @phan-suppress-next-line PhanUndeclaredFunction -- Checked above. See also https://github.com/phan/phan/issues/1204. - $wc_subscription_statuses = array_keys( wcs_get_subscription_statuses() ); - $wc_order_statuses = array_merge( $wc_order_statuses, $wc_subscription_statuses ); - } - - return array_unique( $wc_order_statuses ); - } - - /** - * Returns metadata for order object. - * - * @access protected - * - * @param array $ids List of order IDs. - * @param string $meta_type Meta type. - * @param array $meta_key_whitelist List of allowed meta keys. - * - * @return array Filtered order metadata. - */ - protected function get_metadata( $ids, $meta_type, $meta_key_whitelist ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- returning empty meta is intentional. - return array(); // don't sync metadata, all allow-listed core data is available in the order object. - } - - /** - * Retrieve an estimated number of actions that will be enqueued. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @return array Number of items yet to be enqueued. - */ - public function estimate_full_sync_actions( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable -- We return all order count for full sync, so confit is not required. - global $wpdb; - - $query = "SELECT count(*) FROM {$this->table()} WHERE {$this->get_where_sql( $config ) }"; - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching -- Hardcoded query, no user variable - $count = (int) $wpdb->get_var( $query ); - - return (int) ceil( $count / self::ARRAY_CHUNK_SIZE ); - } - - /** - * Enqueue the WooCommerce HPOS orders actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $max_items_to_enqueue Maximum number of items to enqueue. - * @param boolean $state True if full sync has finished enqueueing this module, false otherwise. - * @return array Number of actions enqueued, and next module state. - */ - public function enqueue_full_sync_actions( $config, $max_items_to_enqueue, $state ) { - return $this->enqueue_all_ids_as_action( 'full_sync_orders', $this->table(), 'id', $this->get_where_sql( $config ), $max_items_to_enqueue, $state ); - } - - /** - * Get where SQL for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * - * @return string WHERE SQL clause, or `null` if no comments are specified in the module config. - */ - public function get_where_sql( $config ) { - global $wpdb; - $parent_where = parent::get_where_sql( $config ); - $order_types = self::get_order_types_to_sync( true ); - $order_type_placeholder = implode( ', ', array_fill( 0, count( $order_types ), '%s' ) ); - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare -- Query is prepared. - $where_sql = $wpdb->prepare( "type IN ( $order_type_placeholder )", $order_types ); - return "{$parent_where} AND {$where_sql}"; - } - - /** - * Given the Module Configuration and Status return the next chunk of items to send. - * This function also expands the posts and metadata and filters them based on the maximum size constraints. - * - * @param array $config This module Full Sync configuration. - * @param array $status This module Full Sync status. - * @param int $chunk_size Chunk size. - * - * @return array - */ - public function get_next_chunk( $config, $status, $chunk_size ) { - - $order_ids = parent::get_next_chunk( $config, $status, $chunk_size ); - - if ( empty( $order_ids ) ) { - return array(); - } - - $orders = $this->get_objects_by_id( 'order', $order_ids ); - - // If no orders were fetched, make sure to return the expected structure so that status is updated correctly. - if ( empty( $orders ) ) { - return array( - 'object_ids' => $order_ids, - 'objects' => array(), - ); - } - - // Filter the orders based on the maximum size constraints. We don't need to filter metadata here since we don't sync it for hpos. - list( $filtered_order_ids, $filtered_orders, ) = $this->filter_objects_and_metadata_by_size( - 'order', - $orders, - array(), - 0, - self::MAX_SIZE_FULL_SYNC - ); - - return array( - 'object_ids' => $filtered_order_ids, - 'objects' => $filtered_orders, - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce.php deleted file mode 100644 index 9cef133d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce.php +++ /dev/null @@ -1,747 +0,0 @@ -table' ); - return $this->order_item_table_name; - } - - /** - * The table in the database with the prefix. - * - * @access public - * - * @return string|bool - */ - public function table() { - global $wpdb; - return $wpdb->prefix . 'woocommerce_order_items'; - } - - /** - * The id field in the database. - * - * @access public - * - * @return string - */ - public function id_field() { - return 'order_item_id'; - } - - /** - * The full sync action name for this module. - * - * @access public - * - * @return string - */ - public function full_sync_action_name() { - return 'jetpack_full_sync_woocommerce_order_items'; - } - - /** - * Constructor. - * - * @global $wpdb - * - * @todo Should we refactor this to use $this->set_defaults() instead? - */ - public function __construct() { - global $wpdb; - $this->order_item_table_name = $wpdb->prefix . 'woocommerce_order_items'; - - // Options, constants and post meta whitelists. - add_filter( 'jetpack_sync_options_whitelist', array( $this, 'add_woocommerce_options_whitelist' ), 10 ); - add_filter( 'jetpack_sync_constants_whitelist', array( $this, 'add_woocommerce_constants_whitelist' ), 10 ); - add_filter( 'jetpack_sync_post_meta_whitelist', array( $this, 'add_woocommerce_post_meta_whitelist' ), 10 ); - add_filter( 'jetpack_sync_comment_meta_whitelist', array( $this, 'add_woocommerce_comment_meta_whitelist' ), 10 ); - - add_filter( 'jetpack_sync_before_enqueue_woocommerce_new_order_item', array( $this, 'filter_order_item' ) ); - add_filter( 'jetpack_sync_before_enqueue_woocommerce_update_order_item', array( $this, 'filter_order_item' ) ); - add_filter( 'jetpack_sync_whitelisted_comment_types', array( $this, 'add_review_comment_types' ) ); - - // Blacklist Action Scheduler comment types. - add_filter( 'jetpack_sync_prevent_sending_comment_data', array( $this, 'filter_action_scheduler_comments' ), 10, 2 ); - - // Preprocess action to be sent by Jetpack sync. - add_action( 'woocommerce_remove_order_items', array( $this, 'action_woocommerce_remove_order_items' ), 10, 2 ); - } - - /** - * Sync module name. - * - * @access public - * - * @return string - */ - public function name() { - return 'woocommerce'; - } - - /** - * Initialize WooCommerce action listeners. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_listeners( $callable ) { - // Attributes. - add_action( 'woocommerce_attribute_added', $callable, 10, 2 ); - add_action( 'woocommerce_attribute_updated', $callable, 10, 3 ); - add_action( 'woocommerce_attribute_deleted', $callable, 10, 3 ); - - // Orders. - add_action( 'woocommerce_new_order', $callable, 10, 1 ); - add_action( 'woocommerce_order_status_changed', $callable, 10, 3 ); - add_action( 'woocommerce_payment_complete', $callable, 10, 1 ); - - // Order items. - add_action( 'woocommerce_new_order_item', $callable, 10, 4 ); - add_action( 'woocommerce_update_order_item', $callable, 10, 4 ); - add_action( 'woocommerce_delete_order_item', $callable, 10, 1 ); - add_action( 'woocommerce_remove_order_item_ids', $callable, 10, 1 ); - $this->init_listeners_for_meta_type( 'order_item', $callable ); - - // Payment tokens. - add_action( 'woocommerce_new_payment_token', $callable, 10, 1 ); - add_action( 'woocommerce_payment_token_deleted', $callable, 10, 2 ); - add_action( 'woocommerce_payment_token_updated', $callable, 10, 1 ); - $this->init_listeners_for_meta_type( 'payment_token', $callable ); - - // Product downloads. - add_action( 'woocommerce_downloadable_product_download_log_insert', $callable, 10, 1 ); - add_action( 'woocommerce_grant_product_download_access', $callable, 10, 1 ); - - // Tax rates. - add_action( 'woocommerce_tax_rate_added', $callable, 10, 2 ); - add_action( 'woocommerce_tax_rate_updated', $callable, 10, 2 ); - add_action( 'woocommerce_tax_rate_deleted', $callable, 10, 1 ); - - // Webhooks. - add_action( 'woocommerce_new_webhook', $callable, 10, 1 ); - add_action( 'woocommerce_webhook_deleted', $callable, 10, 2 ); - add_action( 'woocommerce_webhook_updated', $callable, 10, 1 ); - } - - /** - * Initialize WooCommerce action listeners for full sync. - * - * @access public - * - * @param callable $callable Action handler callable. - */ - public function init_full_sync_listeners( $callable ) { - add_action( 'jetpack_full_sync_woocommerce_order_items', $callable ); // Also sends post meta. - } - - /** - * Retrieve the actions that will be sent for this module during a full sync. - * - * @access public - * - * @return array Full sync actions of this module. - */ - public function get_full_sync_actions() { - return array( 'jetpack_full_sync_woocommerce_order_items' ); - } - - /** - * Initialize the module in the sender. - * - * @access public - */ - public function init_before_send() { - // Full sync. - add_filter( 'jetpack_sync_before_send_jetpack_full_sync_woocommerce_order_items', array( $this, 'build_full_sync_action_array' ) ); - } - - /** - * Expand the order items properly. - * - * @access public - * - * @param array $args The hook arguments. - * @return array $args The hook arguments. - */ - public function filter_order_item( $args ) { - // Make sure we always have all the data - prior to WooCommerce 3.0 we only have the user supplied data in the second argument and not the full details. - $args[1] = $this->build_order_item( $args[0] ); - return $args; - } - - /** - * Retrieve the order item ids to be removed and send them as one action - * - * @param WC_Order $order The order argument. - * @param string $type Order item type. - */ - public function action_woocommerce_remove_order_items( WC_Order $order, $type ) { - if ( $type ) { - $order_items = $order->get_items( $type ); - } else { - $order_items = $order->get_items(); - } - $order_item_ids = array_keys( $order_items ); - - if ( $order_item_ids ) { - do_action( 'woocommerce_remove_order_item_ids', $order_item_ids ); - } - } - - /** - * Expand order item IDs to order items and their meta. - * - * @access public - * - * @todo Refactor table name to use a $wpdb->prepare placeholder. - * - * @param array $args The hook arguments. - * @return array $args Expanded order items with meta. - * @deprecated since 4.7.0 - */ - public function expand_order_item_ids( $args ) { - _deprecated_function( __METHOD__, '4.7.0' ); - $order_item_ids = $args[0]; - - global $wpdb; - - $order_item_ids_sql = implode( ', ', array_map( 'intval', $order_item_ids ) ); - - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching - $order_items = $wpdb->get_results( - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - "SELECT * FROM $this->order_item_table_name WHERE order_item_id IN ( $order_item_ids_sql )" - ); - - return array( - $order_items, - $this->get_metadata( $order_item_ids, 'order_item', static::$order_item_meta_whitelist ), - ); - } - /** - * Extract the full order item from the database by its ID. - * - * @access public - * - * @todo Refactor table name to use a $wpdb->prepare placeholder. - * - * @param int $order_item_id Order item ID. - * @return object Order item. - */ - public function build_order_item( $order_item_id ) { - global $wpdb; - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - return $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $this->order_item_table_name WHERE order_item_id = %d", $order_item_id ) ); - } - - /** - * Enqueue the WooCommerce actions for full sync. - * - * @access public - * - * @param array $config Full sync configuration for this sync module. - * @param int $max_items_to_enqueue Maximum number of items to enqueue. - * @param boolean $state True if full sync has finished enqueueing this module, false otherwise. - * @return array Number of actions enqueued, and next module state. - */ - public function enqueue_full_sync_actions( $config, $max_items_to_enqueue, $state ) { - return $this->enqueue_all_ids_as_action( 'jetpack_full_sync_woocommerce_order_items', $this->order_item_table_name, 'order_item_id', $this->get_where_sql( $config ), $max_items_to_enqueue, $state ); - } - - /** - * Retrieve an estimated number of actions that will be enqueued. - * - * @access public - * - * @todo Refactor the SQL query to use $wpdb->prepare(). - * - * @param array $config Full sync configuration for this sync module. - * @return array Number of items yet to be enqueued. - */ - public function estimate_full_sync_actions( $config ) { - global $wpdb; - - $query = "SELECT count(*) FROM $this->order_item_table_name WHERE " . $this->get_where_sql( $config ); - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared,WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching - $count = (int) $wpdb->get_var( $query ); - - return (int) ceil( $count / self::ARRAY_CHUNK_SIZE ); - } - - /** - * Retrieve the WHERE SQL clause based on the module config. - * - * @access private - * - * @param array $config Full sync configuration for this sync module. - * @return string WHERE SQL clause. - */ - public function get_where_sql( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - return '1=1'; - } - - /** - * Add WooCommerce options to the options whitelist. - * - * @param array $list Existing options whitelist. - * @return array Updated options whitelist. - */ - public function add_woocommerce_options_whitelist( $list ) { - return array_merge( $list, self::$wc_options_whitelist ); - } - - /** - * Add WooCommerce constants to the constants whitelist. - * - * @param array $list Existing constants whitelist. - * @return array Updated constants whitelist. - */ - public function add_woocommerce_constants_whitelist( $list ) { - return array_merge( $list, self::$wc_constants_whitelist ); - } - - /** - * Add WooCommerce post meta to the post meta whitelist. - * - * @param array $list Existing post meta whitelist. - * @return array Updated post meta whitelist. - */ - public function add_woocommerce_post_meta_whitelist( $list ) { - return array_merge( $list, self::$wc_post_meta_whitelist ); - } - - /** - * Add WooCommerce comment meta to the comment meta whitelist. - * - * @param array $list Existing comment meta whitelist. - * @return array Updated comment meta whitelist. - */ - public function add_woocommerce_comment_meta_whitelist( $list ) { - return array_merge( $list, self::$wc_comment_meta_whitelist ); - } - - /** - * Adds 'revew' to the list of comment types so Sync will listen for status changes on 'reviews'. - * - * @access public - * - * @param array $comment_types The list of comment types prior to this filter. - * return array The list of comment types with 'review' added. - */ - public function add_review_comment_types( $comment_types ) { - if ( is_array( $comment_types ) ) { - $comment_types[] = 'review'; - } - return $comment_types; - } - - /** - * Stop comments from the Action Scheduler from being synced. - * https://github.com/woocommerce/woocommerce/tree/e7762627c37ec1f7590e6cac4218ba0c6a20024d/includes/libraries/action-scheduler - * - * @since 1.6.3 - * @since-jetpack 7.7.0 - * - * @param boolean $can_sync Should we prevent comment data from bing synced to WordPress.com. - * @param mixed $comment WP_COMMENT object. - * - * @return bool - */ - public function filter_action_scheduler_comments( $can_sync, $comment ) { - if ( isset( $comment->comment_agent ) && 'ActionScheduler' === $comment->comment_agent ) { - return true; - } - return $can_sync; - } - - /** - * Whitelist for options we are interested to sync. - * - * @access private - * @static - * - * @var array - */ - private static $wc_options_whitelist = array( - 'woocommerce_currency', - 'woocommerce_db_version', - 'woocommerce_weight_unit', - 'woocommerce_version', - 'woocommerce_unforce_ssl_checkout', - 'woocommerce_tax_total_display', - 'woocommerce_tax_round_at_subtotal', - 'woocommerce_tax_display_shop', - 'woocommerce_tax_display_cart', - 'woocommerce_prices_include_tax', - 'woocommerce_price_thousand_sep', - 'woocommerce_price_num_decimals', - 'woocommerce_price_decimal_sep', - 'woocommerce_notify_low_stock', - 'woocommerce_notify_low_stock_amount', - 'woocommerce_notify_no_stock', - 'woocommerce_notify_no_stock_amount', - 'woocommerce_manage_stock', - 'woocommerce_force_ssl_checkout', - 'woocommerce_hide_out_of_stock_items', - 'woocommerce_file_download_method', - 'woocommerce_enable_signup_and_login_from_checkout', - 'woocommerce_enable_shipping_calc', - 'woocommerce_enable_review_rating', - 'woocommerce_enable_guest_checkout', - 'woocommerce_enable_coupons', - 'woocommerce_enable_checkout_login_reminder', - 'woocommerce_enable_ajax_add_to_cart', - 'woocommerce_dimension_unit', - 'woocommerce_default_country', - 'woocommerce_default_customer_address', - 'woocommerce_currency_pos', - 'woocommerce_api_enabled', - 'woocommerce_allow_tracking', - 'woocommerce_task_list_hidden', - 'woocommerce_onboarding_profile', - 'woocommerce_cod_settings', - ); - - /** - * Whitelist for constants we are interested to sync. - * - * @access private - * @static - * - * @var array - */ - private static $wc_constants_whitelist = array( - // WooCommerce constants. - 'WC_PLUGIN_FILE', - 'WC_ABSPATH', - 'WC_PLUGIN_BASENAME', - 'WC_VERSION', - 'WOOCOMMERCE_VERSION', - 'WC_ROUNDING_PRECISION', - 'WC_DISCOUNT_ROUNDING_MODE', - 'WC_TAX_ROUNDING_MODE', - 'WC_DELIMITER', - 'WC_LOG_DIR', - 'WC_SESSION_CACHE_GROUP', - 'WC_TEMPLATE_DEBUG_MODE', - ); - - /** - * Whitelist for post meta we are interested to sync. - * - * @access private - * @static - * - * @var array - */ - public static $wc_post_meta_whitelist = array( - // WooCommerce products. - // See https://github.com/woocommerce/woocommerce/blob/8ed6e7436ff87c2153ed30edd83c1ab8abbdd3e9/includes/data-stores/class-wc-product-data-store-cpt.php#L21 . - '_visibility', - '_sku', - '_price', - '_regular_price', - '_sale_price', - '_sale_price_dates_from', - '_sale_price_dates_to', - 'total_sales', - '_tax_status', - '_tax_class', - '_manage_stock', - '_backorders', - '_sold_individually', - '_weight', - '_length', - '_width', - '_height', - '_upsell_ids', - '_crosssell_ids', - '_purchase_note', - '_default_attributes', - '_product_attributes', - '_virtual', - '_downloadable', - '_download_limit', - '_download_expiry', - '_featured', - '_downloadable_files', - '_wc_rating_count', - '_wc_average_rating', - '_wc_review_count', - '_variation_description', - '_thumbnail_id', - '_file_paths', - '_product_image_gallery', - '_product_version', - '_wp_old_slug', - - // Woocommerce orders. - // See https://github.com/woocommerce/woocommerce/blob/8ed6e7436ff87c2153ed30edd83c1ab8abbdd3e9/includes/data-stores/class-wc-order-data-store-cpt.php#L27 . - '_order_key', - '_order_currency', - // '_billing_first_name', do not sync these as they contain personal data - // '_billing_last_name', - // '_billing_company', - // '_billing_address_1', - // '_billing_address_2', - '_billing_city', - '_billing_state', - '_billing_postcode', - '_billing_country', - // '_billing_email', do not sync these as they contain personal data. - // '_billing_phone', - // '_shipping_first_name', - // '_shipping_last_name', - // '_shipping_company', - // '_shipping_address_1', - // '_shipping_address_2', - '_shipping_city', - '_shipping_state', - '_shipping_postcode', - '_shipping_country', - '_completed_date', - '_paid_date', - '_cart_discount', - '_cart_discount_tax', - '_order_shipping', - '_order_shipping_tax', - '_order_tax', - '_order_total', - '_payment_method', - '_payment_method_title', - // '_transaction_id', do not sync these as they contain personal data. - // '_customer_ip_address', - // '_customer_user_agent', - '_created_via', - '_order_version', - '_prices_include_tax', - '_date_completed', - '_date_paid', - '_payment_tokens', - // '_billing_address_index', do not sync these as they contain personal data. - // '_shipping_address_index', - '_recorded_sales', - '_recorded_coupon_usage_counts', - // See https://github.com/woocommerce/woocommerce/blob/8ed6e7436ff87c2153ed30edd83c1ab8abbdd3e9/includes/data-stores/class-wc-order-data-store-cpt.php#L539 . - '_download_permissions_granted', - // See https://github.com/woocommerce/woocommerce/blob/8ed6e7436ff87c2153ed30edd83c1ab8abbdd3e9/includes/data-stores/class-wc-order-data-store-cpt.php#L594 . - '_order_stock_reduced', - '_cart_hash', - - // Woocommerce order refunds. - // See https://github.com/woocommerce/woocommerce/blob/b8a2815ae546c836467008739e7ff5150cb08e93/includes/data-stores/class-wc-order-refund-data-store-cpt.php#L20 . - '_order_currency', - '_refund_amount', - '_refunded_by', - '_refund_reason', - '_order_shipping', - '_order_shipping_tax', - '_order_tax', - '_order_total', - '_order_version', - '_prices_include_tax', - '_payment_tokens', - ); - - /** - * Whitelist for comment meta we are interested to sync. - * - * @access private - * @static - * - * @var array - */ - private static $wc_comment_meta_whitelist = array( - 'rating', - ); - - /** - * Return a list of objects by their type and IDs - * - * @param string $object_type Object type. - * @param array $ids IDs of objects to return. - * - * @access public - * - * @return array|object|WP_Error|null - */ - public function get_objects_by_id( $object_type, $ids ) { - switch ( $object_type ) { - case 'order_item': - return $this->get_order_item_by_ids( $ids ); - } - - return new WP_Error( 'unsupported_object_type', 'Unsupported object type' ); - } - - /** - * Returns a list of order_item objects by their IDs. - * - * @param array $ids List of order_item IDs to fetch. - * @param string $order Either 'ASC' or 'DESC'. - * - * @access public - * - * @return array|object|null - */ - public function get_order_item_by_ids( $ids, $order = '' ) { - global $wpdb; - - if ( ! is_array( $ids ) ) { - return array(); - } - - // Make sure the IDs are numeric and are non-zero. - $ids = array_filter( array_map( 'intval', $ids ) ); - - if ( empty( $ids ) ) { - return array(); - } - - // Prepare the placeholders for the prepared query below. - $placeholders = implode( ',', array_fill( 0, count( $ids ), '%d' ) ); - - $query = "SELECT * FROM {$this->order_item_table_name} WHERE order_item_id IN ( $placeholders )"; - if ( ! empty( $order ) && in_array( $order, array( 'ASC', 'DESC' ), true ) ) { - $query .= " ORDER BY order_item_id $order"; - } - - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared - return $wpdb->get_results( $wpdb->prepare( $query, $ids ), ARRAY_A ); - } - - /** - * Build the full sync action object for WooCommerce order items. - * - * @access public - * - * @param array $args An array with the order items and the previous end. - * - * @return array An array with the order items, order item meta and the previous end. - */ - public function build_full_sync_action_array( $args ) { - list( $filtered_order_items, $previous_end ) = $args; - return array( - 'order_items' => $filtered_order_items['objects'], - 'order_item_meta' => $filtered_order_items['meta'], - 'previous_end' => $previous_end, - ); - } - - /** - * Given the Module Configuration and Status return the next chunk of items to send. - * This function also expands the posts and metadata and filters them based on the maximum size constraints. - * - * @param array $config This module Full Sync configuration. - * @param array $status This module Full Sync status. - * @param int $chunk_size Chunk size. - * - * @return array - */ - public function get_next_chunk( $config, $status, $chunk_size ) { - - $order_item_ids = parent::get_next_chunk( $config, $status, $chunk_size ); - - if ( empty( $order_item_ids ) ) { - return array(); - } - // Fetch the order items in DESC order for the next chunk logic to work. - $order_items = $this->get_order_item_by_ids( $order_item_ids, 'DESC' ); - - // If no orders were fetched, make sure to return the expected structure so that status is updated correctly. - if ( empty( $order_items ) ) { - return array( - 'object_ids' => $order_item_ids, - 'objects' => array(), - ); - } - - // Get the order IDs from the orders that were fetched. - $fetched_order_item_ids = wp_list_pluck( $order_items, 'order_item_id' ); - $metadata = $this->get_metadata( $fetched_order_item_ids, 'order_item', static::$order_item_meta_whitelist ); - - // Filter the orders and metadata based on the maximum size constraints. - list( $filtered_order_item_ids, $filtered_order_items, $filtered_order_items_metadata ) = $this->filter_objects_and_metadata_by_size( - 'order_item', - $order_items, - $metadata, - self::MAX_META_LENGTH, - self::MAX_SIZE_FULL_SYNC - ); - - return array( - 'object_ids' => $filtered_order_item_ids, - 'objects' => $filtered_order_items, - 'meta' => $filtered_order_items_metadata, - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-wp-super-cache.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-wp-super-cache.php deleted file mode 100644 index af4aec41..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/modules/class-wp-super-cache.php +++ /dev/null @@ -1,156 +0,0 @@ -set_defaults() instead? - */ - public function __construct() { - add_filter( 'jetpack_sync_constants_whitelist', array( $this, 'add_wp_super_cache_constants_whitelist' ), 10 ); - add_filter( 'jetpack_sync_callable_whitelist', array( $this, 'add_wp_super_cache_callable_whitelist' ), 10 ); - } - - /** - * Whitelist for constants we are interested to sync. - * - * @access public - * @static - * - * @var array - */ - public static $wp_super_cache_constants = array( - 'WPLOCKDOWN', - 'WPSC_DISABLE_COMPRESSION', - 'WPSC_DISABLE_LOCKING', - 'WPSC_DISABLE_HTACCESS_UPDATE', - 'ADVANCEDCACHEPROBLEM', - ); - - /** - * Container for the whitelist for WP_Super_Cache callables we are interested to sync. - * - * @access public - * @static - * - * @var array - */ - public static $wp_super_cache_callables = array( - 'wp_super_cache_globals' => array( __CLASS__, 'get_wp_super_cache_globals' ), - ); - - /** - * Sync module name. - * - * @access public - * - * @return string - */ - public function name() { - return 'wp-super-cache'; - } - - /** - * Retrieve all WP_Super_Cache callables we are interested to sync. - * - * @access public - * - * @global $wp_cache_mod_rewrite; - * @global $cache_enabled; - * @global $super_cache_enabled; - * @global $ossdlcdn; - * @global $cache_rebuild_files; - * @global $wp_cache_mobile; - * @global $wp_super_cache_late_init; - * @global $wp_cache_anon_only; - * @global $wp_cache_not_logged_in; - * @global $wp_cache_clear_on_post_edit; - * @global $wp_cache_mobile_enabled; - * @global $wp_super_cache_debug; - * @global $cache_max_time; - * @global $wp_cache_refresh_single_only; - * @global $wp_cache_mfunc_enabled; - * @global $wp_supercache_304; - * @global $wp_cache_no_cache_for_get; - * @global $wp_cache_mutex_disabled; - * @global $cache_jetpack; - * @global $cache_domain_mapping; - * - * @return array All WP_Super_Cache callables. - */ - public static function get_wp_super_cache_globals() { - global $wp_cache_mod_rewrite; - global $cache_enabled; - global $super_cache_enabled; - global $ossdlcdn; - global $cache_rebuild_files; - global $wp_cache_mobile; - global $wp_super_cache_late_init; - global $wp_cache_anon_only; - global $wp_cache_not_logged_in; - global $wp_cache_clear_on_post_edit; - global $wp_cache_mobile_enabled; - global $wp_super_cache_debug; - global $cache_max_time; - global $wp_cache_refresh_single_only; - global $wp_cache_mfunc_enabled; - global $wp_supercache_304; - global $wp_cache_no_cache_for_get; - global $wp_cache_mutex_disabled; - global $cache_jetpack; - global $cache_domain_mapping; - - return array( - 'wp_cache_mod_rewrite' => $wp_cache_mod_rewrite, - 'cache_enabled' => $cache_enabled, - 'super_cache_enabled' => $super_cache_enabled, - 'ossdlcdn' => $ossdlcdn, - 'cache_rebuild_files' => $cache_rebuild_files, - 'wp_cache_mobile' => $wp_cache_mobile, - 'wp_super_cache_late_init' => $wp_super_cache_late_init, - 'wp_cache_anon_only' => $wp_cache_anon_only, - 'wp_cache_not_logged_in' => $wp_cache_not_logged_in, - 'wp_cache_clear_on_post_edit' => $wp_cache_clear_on_post_edit, - 'wp_cache_mobile_enabled' => $wp_cache_mobile_enabled, - 'wp_super_cache_debug' => $wp_super_cache_debug, - 'cache_max_time' => $cache_max_time, - 'wp_cache_refresh_single_only' => $wp_cache_refresh_single_only, - 'wp_cache_mfunc_enabled' => $wp_cache_mfunc_enabled, - 'wp_supercache_304' => $wp_supercache_304, - 'wp_cache_no_cache_for_get' => $wp_cache_no_cache_for_get, - 'wp_cache_mutex_disabled' => $wp_cache_mutex_disabled, - 'cache_jetpack' => $cache_jetpack, - 'cache_domain_mapping' => $cache_domain_mapping, - ); - } - - /** - * Add WP_Super_Cache constants to the constants whitelist. - * - * @param array $list Existing constants whitelist. - * @return array Updated constants whitelist. - */ - public function add_wp_super_cache_constants_whitelist( $list ) { - return array_merge( $list, self::$wp_super_cache_constants ); - } - - /** - * Add WP_Super_Cache callables to the callables whitelist. - * - * @param array $list Existing callables whitelist. - * @return array Updated callables whitelist. - */ - public function add_wp_super_cache_callable_whitelist( $list ) { - return array_merge( $list, self::$wp_super_cache_callables ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-usermeta.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-usermeta.php deleted file mode 100644 index c880a4ee..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-usermeta.php +++ /dev/null @@ -1,209 +0,0 @@ -build_filter_statement( $range_from, $range_to ); - - $query = " - SELECT - DISTINCT {$this->table}.{$this->range_field} - FROM - {$this->table} - JOIN {$wpdb->usermeta} as um_table ON um_table.user_id = {$this->table}.ID - WHERE - {$range_filter_statement} - AND um_table.meta_key = '{$wpdb->prefix}user_level' - AND um_table.meta_value > 0 - "; - - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared - $user_ids = $wpdb->get_col( $query ); - - // Chunk the array down to make sure we don't overload the database with queries that are too large. - $chunked_user_ids = array_chunk( $user_ids, 500 ); - - $checksum_entries = array(); - - foreach ( $chunked_user_ids as $user_ids_chunk ) { - $user_objects = $this->get_user_objects_by_ids( $user_ids_chunk ); - - foreach ( $user_objects as $user_object ) { - // expand and sanitize desired meta based on WP.com logic. - $user_object = $this->expand_and_sanitize_user_meta( $user_object ); - - // Generate checksum entry based on the serialized value if not empty. - $checksum_entry = 0; - if ( ! empty( $user_object->roles ) ) { - $checksum_entry = crc32( implode( '#', array( $this->salt, 'roles', maybe_serialize( $user_object->roles ) ) ) ); - } - - // Meta only persisted if user is connected to WP.com. - if ( ( new Manager( 'jetpack' ) )->is_user_connected( $user_object->ID ) ) { - if ( ! empty( $user_object->allcaps ) ) { - $checksum_entry += crc32( - implode( - '#', - array( - $this->salt, - 'capabilities', - maybe_serialize( $user_object->allcaps ), - ) - ) - ); - } - // Explicitly check that locale is not same as site locale. - if ( ! empty( $user_object->locale ) && get_locale() !== $user_object->locale ) { - $checksum_entry += crc32( - implode( - '#', - array( - $this->salt, - 'locale', - maybe_serialize( $user_object->locale ), - ) - ) - ); - } - if ( ! empty( $user_object->allowed_mime_types ) ) { - $checksum_entry += crc32( - implode( - '#', - array( - $this->salt, - 'allowed_mime_types', - maybe_serialize( $user_object->allowed_mime_types ), - ) - ) - ); - } - } - - $checksum_entries[ $user_object->ID ] = '' . $checksum_entry; - } - } - - // Non-granular results need only to sum the different entries. - if ( ! $granular_result ) { - $checksum_sum = 0; - foreach ( $checksum_entries as $entry ) { - $checksum_sum += intval( $entry ); - } - - if ( $simple_return_value ) { - return '' . $checksum_sum; - } - - return array( - 'range' => $range_from . '-' . $range_to, - 'checksum' => '' . $checksum_sum, - ); - - } - - // Granular results. - $response = $checksum_entries; - - // Sort the return value for easier comparisons and code flows further down the line. - ksort( $response ); - - return $response; - } - - /** - * Expand the User Object with additional meta santized by WP.com logic. - * - * @param mixed $user_object User Object from WP_User_Query. - * - * @return mixed $user_object expanded User Object. - */ - protected function expand_and_sanitize_user_meta( $user_object ) { - $user_module = Modules::get_module( 'users' ); - '@phan-var \Automattic\Jetpack\Sync\Modules\Users $user_module'; - // Expand User Objects based on Sync logic. - $user_object = $user_module->expand_user( $user_object ); - - // Sanitize location. - if ( ! empty( $user_object->locale ) ) { - $user_object->locale = wp_strip_all_tags( $user_object->locale, true ); - } - - // Sanitize allcaps. - if ( ! empty( $user_object->allcaps ) ) { - $user_object->allcaps = array_map( - function ( $cap ) { - return (bool) $cap; - }, - $user_object->allcaps - ); - } - - // Sanitize allowed_mime_types. - $allowed_mime_types = $user_object->allowed_mime_types; - foreach ( $allowed_mime_types as $allowed_mime_type_short => $allowed_mime_type_long ) { - $allowed_mime_type_short = wp_strip_all_tags( (string) $allowed_mime_type_short, true ); - $allowed_mime_type_long = wp_strip_all_tags( (string) $allowed_mime_type_long, true ); - $allowed_mime_types[ $allowed_mime_type_short ] = $allowed_mime_type_long; - } - $user_object->allowed_mime_types = $allowed_mime_types; - - // Sanitize roles. - if ( is_array( $user_object->roles ) ) { - $user_object->roles = array_map( 'sanitize_text_field', $user_object->roles ); - } - return $user_object; - } - - /** - * Gets a list of `WP_User` objects by their IDs - * - * @param array $ids List of IDs to fetch. - * - * @return array - */ - protected function get_user_objects_by_ids( $ids ) { - $user_query = new WP_User_Query( array( 'include' => $ids ) ); - - return $user_query->get_results(); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-users.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-users.php deleted file mode 100644 index c36b0e3d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-users.php +++ /dev/null @@ -1,185 +0,0 @@ -prepare( '%s', $this->salt ); - - // Prepare the compound key. - $key_fields = array(); - - // Prefix the fields with the table name, to avoid clashes in queries with sub-queries (e.g. meta tables). - foreach ( $this->key_fields as $field ) { - $key_fields[] = $this->table . '.' . $field; - } - - $key_fields = implode( ',', $key_fields ); - - // Prepare the checksum fields. - $checksum_fields = array(); - // Prefix the fields with the table name, to avoid clashes in queries with sub-queries (e.g. meta tables). - foreach ( $this->checksum_fields as $field ) { - $checksum_fields[] = $this->table . '.' . $field; - } - // Apply latin1 conversion if enabled. - if ( $this->perform_text_conversion ) { - // Convert text fields to allow for encoding discrepancies as WP.com is latin1. - foreach ( $this->checksum_text_fields as $field ) { - $checksum_fields[] = 'CONVERT(' . $this->table . '.' . $field . ' using latin1 )'; - } - } else { - // Conversion disabled, default to table prefixing. - foreach ( $this->checksum_text_fields as $field ) { - $checksum_fields[] = $this->table . '.' . $field; - } - } - - $checksum_fields_string = implode( ',', array_merge( $checksum_fields, array( $salt ) ) ); - - $additional_fields = ''; - if ( $granular_result ) { - // TODO uniq the fields as sometimes(most) range_index is the key and there's no need to select the same field twice. - $additional_fields = " - {$this->table}.{$this->range_field} as range_index, - {$key_fields}, - "; - } - - $filter_stamenet = $this->build_filter_statement( $range_from, $range_to, $filter_values ); - - // usermeta join to limit on user_level. - $join_statement = "JOIN {$wpdb->usermeta} as um_table ON um_table.user_id = {$this->table}.ID"; - - $query = " - SELECT - {$additional_fields} - SUM( - CRC32( - CONCAT_WS( '#', {$salt}, {$checksum_fields_string} ) - ) - ) AS checksum - FROM - {$this->table} - {$join_statement} - WHERE - {$filter_stamenet} - AND um_table.meta_key = '{$wpdb->prefix}user_level' - AND um_table.meta_value > 0 - "; - - /** - * We need the GROUP BY only for compound keys. - */ - if ( $granular_result ) { - $query .= " - GROUP BY {$key_fields} - LIMIT 9999999 - "; - } - - return $query; - } - - /** - * Obtain the min-max values (edges) of the range. - * - * @param int|null $range_from The start of the range. - * @param int|null $range_to The end of the range. - * @param int|null $limit How many values to return. - * - * @return array|object|void - * @throws Exception Throws an exception if validation fails on the internal function calls. - */ - public function get_range_edges( $range_from = null, $range_to = null, $limit = null ) { - global $wpdb; - - $this->validate_fields( array( $this->range_field ) ); - - // `trim()` to make sure we don't add the statement if it's empty. - $filters = trim( $this->build_filter_statement( $range_from, $range_to ) ); - - $filter_statement = ''; - if ( ! empty( $filters ) ) { - $filter_statement = " - JOIN {$wpdb->usermeta} as um_table ON um_table.user_id = {$this->table}.ID - WHERE - {$filters} - AND um_table.meta_key = '{$wpdb->prefix}user_level' - AND um_table.meta_value > 0 - "; - } - - $query = " - SELECT - MIN({$this->range_field}) as min_range, - MAX({$this->range_field}) as max_range, - COUNT( {$this->range_field} ) as item_count - FROM - "; - - /** - * If `$limit` is not specified, we can directly use the table. - */ - if ( ! $limit ) { - $query .= " - {$this->table} - {$filter_statement} - "; - } else { - /** - * If there is `$limit` specified, we can't directly use `MIN/MAX()` as they don't work with `LIMIT`. - * That's why we will alter the query for this case. - */ - $limit = intval( $limit ); - - $query .= " - ( - SELECT - {$this->range_field} - FROM - {$this->table} - {$filter_statement} - ORDER BY - {$this->range_field} ASC - LIMIT {$limit} - ) as ids_query - "; - } - - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared - $result = $wpdb->get_row( $query, ARRAY_A ); - - if ( ! $result || ! is_array( $result ) ) { - throw new Exception( 'Unable to get range edges' ); - } - - return $result; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum.php deleted file mode 100644 index 3118c6a2..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum.php +++ /dev/null @@ -1,979 +0,0 @@ -salt = $salt; - - $this->default_tables = static::get_default_tables(); - - $this->perform_text_conversion = $perform_text_conversion; - - // TODO change filters to allow the array format. - // TODO add get_fields or similar method to get things out of the table. - // TODO extract this configuration in a better way, still make it work with `$wpdb` names. - // TODO take over the replicastore functions and move them over to this class. - // TODO make the API work. - - $this->allowed_tables = apply_filters( 'jetpack_sync_checksum_allowed_tables', $this->default_tables ); - - $this->table = $this->validate_table_name( $table ); - $this->table_configuration = $this->allowed_tables[ $table ]; - - $this->prepare_fields( $this->table_configuration ); - - $this->prepare_additional_columns( $additional_columns ); - - // Run any callbacks to check if a table is enabled or not. - if ( - is_callable( $this->is_table_enabled_callback ) - && ! call_user_func( $this->is_table_enabled_callback, $table ) - ) { - throw new Exception( "Unable to use table name: $table" ); - } - } - - /** - * Get Default Table configurations. - * - * @return array - */ - protected static function get_default_tables() { - global $wpdb; - - return array( - 'posts' => array( - 'table' => $wpdb->posts, - 'range_field' => 'ID', - 'key_fields' => array( 'ID' ), - 'checksum_fields' => array( 'post_modified_gmt' ), - 'filter_values' => Sync\Settings::get_disallowed_post_types_structured(), - 'is_table_enabled_callback' => function () { - return false !== Sync\Modules::get_module( 'posts' ); - }, - ), - 'postmeta' => array( - 'table' => $wpdb->postmeta, - 'range_field' => 'post_id', - 'key_fields' => array( 'post_id', 'meta_key' ), - 'checksum_text_fields' => array( 'meta_key', 'meta_value' ), - 'filter_values' => Sync\Settings::get_allowed_post_meta_structured(), - 'parent_table' => 'posts', - 'parent_join_field' => 'ID', - 'table_join_field' => 'post_id', - 'is_table_enabled_callback' => function () { - return false !== Sync\Modules::get_module( 'posts' ); - }, - ), - 'comments' => array( - 'table' => $wpdb->comments, - 'range_field' => 'comment_ID', - 'key_fields' => array( 'comment_ID' ), - 'checksum_fields' => array( 'comment_date_gmt' ), - 'filter_values' => array( - 'comment_type' => array( - 'operator' => 'IN', - 'values' => apply_filters( - 'jetpack_sync_whitelisted_comment_types', - array( '', 'comment', 'trackback', 'pingback', 'review' ) - ), - ), - 'comment_approved' => array( - 'operator' => 'NOT IN', - 'values' => array( 'spam' ), - ), - ), - 'is_table_enabled_callback' => function () { - return false !== Sync\Modules::get_module( 'comments' ); - }, - ), - 'commentmeta' => array( - 'table' => $wpdb->commentmeta, - 'range_field' => 'comment_id', - 'key_fields' => array( 'comment_id', 'meta_key' ), - 'checksum_text_fields' => array( 'meta_key', 'meta_value' ), - 'filter_values' => Sync\Settings::get_allowed_comment_meta_structured(), - 'parent_table' => 'comments', - 'parent_join_field' => 'comment_ID', - 'table_join_field' => 'comment_id', - 'is_table_enabled_callback' => function () { - return false !== Sync\Modules::get_module( 'comments' ); - }, - ), - 'terms' => array( - 'table' => $wpdb->terms, - 'range_field' => 'term_id', - 'key_fields' => array( 'term_id' ), - 'checksum_fields' => array( 'term_id' ), - 'checksum_text_fields' => array( 'name', 'slug' ), - 'parent_table' => 'term_taxonomy', - 'is_table_enabled_callback' => function () { - return false !== Sync\Modules::get_module( 'terms' ); - }, - ), - 'termmeta' => array( - 'table' => $wpdb->termmeta, - 'range_field' => 'term_id', - 'key_fields' => array( 'term_id', 'meta_key' ), - 'checksum_text_fields' => array( 'meta_key', 'meta_value' ), - 'parent_table' => 'term_taxonomy', - 'is_table_enabled_callback' => function () { - return false !== Sync\Modules::get_module( 'terms' ); - }, - ), - 'term_relationships' => array( - 'table' => $wpdb->term_relationships, - 'range_field' => 'object_id', - 'key_fields' => array( 'object_id' ), - 'checksum_fields' => array( 'object_id', 'term_taxonomy_id' ), - 'parent_table' => 'term_taxonomy', - 'parent_join_field' => 'term_taxonomy_id', - 'table_join_field' => 'term_taxonomy_id', - 'is_table_enabled_callback' => function () { - return false !== Sync\Modules::get_module( 'terms' ); - }, - ), - 'term_taxonomy' => array( - 'table' => $wpdb->term_taxonomy, - 'range_field' => 'term_taxonomy_id', - 'key_fields' => array( 'term_taxonomy_id' ), - 'checksum_fields' => array( 'term_taxonomy_id', 'term_id', 'parent' ), - 'checksum_text_fields' => array( 'taxonomy', 'description' ), - 'filter_values' => Sync\Settings::get_allowed_taxonomies_structured(), - 'is_table_enabled_callback' => function () { - return false !== Sync\Modules::get_module( 'terms' ); - }, - ), - 'links' => $wpdb->links, // TODO describe in the array format or add exceptions. - 'options' => $wpdb->options, // TODO describe in the array format or add exceptions. - 'woocommerce_order_items' => array( - 'table' => "{$wpdb->prefix}woocommerce_order_items", - 'range_field' => 'order_item_id', - 'key_fields' => array( 'order_item_id' ), - 'checksum_fields' => array( 'order_id' ), - 'checksum_text_fields' => array( 'order_item_name', 'order_item_type' ), - 'is_table_enabled_callback' => 'Automattic\Jetpack\Sync\Replicastore\Table_Checksum::enable_woocommerce_tables', - ), - 'woocommerce_order_itemmeta' => array( - 'table' => "{$wpdb->prefix}woocommerce_order_itemmeta", - 'range_field' => 'order_item_id', - 'key_fields' => array( 'order_item_id', 'meta_key' ), - 'checksum_text_fields' => array( 'meta_key', 'meta_value' ), - 'filter_values' => Sync\Settings::get_allowed_order_itemmeta_structured(), - 'parent_table' => 'woocommerce_order_items', - 'parent_join_field' => 'order_item_id', - 'table_join_field' => 'order_item_id', - 'is_table_enabled_callback' => 'Automattic\Jetpack\Sync\Replicastore\Table_Checksum::enable_woocommerce_tables', - ), - 'wc_orders' => array( - 'table' => "{$wpdb->prefix}wc_orders", - 'range_field' => 'id', - 'key_fields' => array( 'id' ), - 'checksum_fields' => array( 'date_updated_gmt', 'total_amount' ), - 'checksum_text_fields' => array( 'type', 'status' ), - 'filter_values' => array( - 'type' => array( - 'operator' => 'IN', - 'values' => WooCommerce_HPOS_Orders::get_order_types_to_sync( true ), - ), - 'status' => array( - 'operator' => 'IN', - 'values' => WooCommerce_HPOS_Orders::get_all_possible_order_status_keys(), - ), - ), - 'is_table_enabled_callback' => 'Automattic\Jetpack\Sync\Replicastore\Table_Checksum::enable_woocommerce_hpos_tables', - ), - 'wc_order_addresses' => array( - 'table' => "{$wpdb->prefix}wc_order_addresses", - 'range_field' => 'order_id', - 'key_fields' => array( 'order_id', 'address_type' ), - 'checksum_text_fields' => array( 'address_type' ), - 'parent_table' => 'wc_orders', - 'parent_join_field' => 'id', - 'table_join_field' => 'order_id', - 'filter_values' => array(), - 'is_table_enabled_callback' => 'Automattic\Jetpack\Sync\Replicastore\Table_Checksum::enable_woocommerce_hpos_tables', - ), - 'wc_order_operational_data' => array( - 'table' => "{$wpdb->prefix}wc_order_operational_data", - 'range_field' => 'order_id', - 'key_fields' => array( 'order_id' ), - 'checksum_fields' => array( 'date_paid_gmt', 'date_completed_gmt' ), - 'checksum_text_fields' => array( 'order_key' ), - 'parent_table' => 'wc_orders', - 'parent_join_field' => 'id', - 'table_join_field' => 'order_id', - 'filter_values' => array(), - 'is_table_enabled_callback' => 'Automattic\Jetpack\Sync\Replicastore\Table_Checksum::enable_woocommerce_hpos_tables', - ), - 'users' => array( - 'table' => $wpdb->users, - 'range_field' => 'ID', - 'key_fields' => array( 'ID' ), - 'checksum_text_fields' => array( 'user_login', 'user_nicename', 'user_email', 'user_url', 'user_registered', 'user_status', 'display_name' ), - 'filter_values' => array(), - 'is_table_enabled_callback' => function () { - return false !== Sync\Modules::get_module( 'users' ); - }, - ), - - /** - * Usermeta is a special table, as it needs to use a custom override flow, - * as the user roles, capabilities, locale, mime types can be filtered by plugins. - * This prevents us from doing a direct comparison in the database. - */ - 'usermeta' => array( - 'table' => $wpdb->users, - /** - * Range field points to ID, which in this case is the `WP_User` ID, - * since we're querying the whole WP_User objects, instead of meta entries in the DB. - */ - 'range_field' => 'ID', - 'key_fields' => array(), - 'checksum_fields' => array(), - 'is_table_enabled_callback' => function () { - return false !== Sync\Modules::get_module( 'users' ); - }, - ), - ); - } - - /** - * Get allowed table configurations. - * - * @return array - */ - public static function get_allowed_tables() { - return apply_filters( 'jetpack_sync_checksum_allowed_tables', static::get_default_tables() ); - } - - /** - * Prepare field params based off provided configuration. - * - * @param array $table_configuration The table configuration array. - */ - protected function prepare_fields( $table_configuration ) { - $this->key_fields = $table_configuration['key_fields']; - $this->range_field = $table_configuration['range_field']; - $this->checksum_fields = isset( $table_configuration['checksum_fields'] ) ? $table_configuration['checksum_fields'] : array(); - $this->checksum_text_fields = isset( $table_configuration['checksum_text_fields'] ) ? $table_configuration['checksum_text_fields'] : array(); - $this->filter_values = isset( $table_configuration['filter_values'] ) ? $table_configuration['filter_values'] : null; - $this->additional_filter_sql = ! empty( $table_configuration['filter_sql'] ) ? $table_configuration['filter_sql'] : ''; - $this->parent_table = isset( $table_configuration['parent_table'] ) ? $table_configuration['parent_table'] : null; - $this->parent_join_field = isset( $table_configuration['parent_join_field'] ) ? $table_configuration['parent_join_field'] : $table_configuration['range_field']; - $this->table_join_field = isset( $table_configuration['table_join_field'] ) ? $table_configuration['table_join_field'] : $table_configuration['range_field']; - $this->is_table_enabled_callback = isset( $table_configuration['is_table_enabled_callback'] ) ? $table_configuration['is_table_enabled_callback'] : false; - } - - /** - * Verify provided table name is valid for checksum processing. - * - * @param string $table Table name to validate. - * - * @return mixed|string - * @throws Exception Throw an exception on validation failure. - */ - protected function validate_table_name( $table ) { - if ( empty( $table ) ) { - throw new Exception( 'Invalid table name: empty' ); - } - - if ( ! array_key_exists( $table, $this->allowed_tables ) ) { - throw new Exception( "Invalid table name: $table not allowed" ); - } - - return $this->allowed_tables[ $table ]['table']; - } - - /** - * Verify provided fields are proper names. - * - * @param array $fields Array of field names to validate. - * - * @throws Exception Throw an exception on failure to validate. - */ - protected function validate_fields( $fields ) { - foreach ( $fields as $field ) { - if ( ! preg_match( '/^[0-9,a-z,A-Z$_]+$/i', $field ) ) { - throw new Exception( "Invalid field name: $field is not allowed" ); - } - - // TODO other verifications of the field names. - } - } - - /** - * Verify the fields exist in the table. - * - * @param array $fields Array of fields to validate. - * - * @return bool - * @throws Exception Throw an exception on failure to validate. - */ - protected function validate_fields_against_table( $fields ) { - global $wpdb; - - $valid_fields = array(); - - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - $result = $wpdb->get_results( "SHOW COLUMNS FROM {$this->table}", ARRAY_A ); - - foreach ( $result as $result_row ) { - $valid_fields[] = $result_row['Field']; - } - - // Check if the fields are actually contained in the table. - foreach ( $fields as $field_to_check ) { - if ( ! in_array( $field_to_check, $valid_fields, true ) ) { - throw new Exception( "Invalid field name: field '{$field_to_check}' doesn't exist in table {$this->table}" ); - } - } - - return true; - } - - /** - * Verify the configured fields. - * - * @throws Exception Throw an exception on failure to validate in the internal functions. - */ - protected function validate_input() { - $fields = array_merge( array( $this->range_field ), $this->key_fields, $this->checksum_fields, $this->checksum_text_fields ); - - $this->validate_fields( $fields ); - $this->validate_fields_against_table( $fields ); - } - - /** - * Prepare filter values as SQL statements to be added to the other filters. - * - * @param array $filter_values The filter values array. - * @param string $table_prefix If the values are going to be used in a sub-query, add a prefix with the table alias. - * - * @return array|null - */ - protected function prepare_filter_values_as_sql( $filter_values = array(), $table_prefix = '' ) { - global $wpdb; - - if ( ! is_array( $filter_values ) ) { - return null; - } - - $result = array(); - - foreach ( $filter_values as $field => $filter ) { - $key = ( ! empty( $table_prefix ) ? $table_prefix : $this->table ) . '.' . $field; - - switch ( $filter['operator'] ) { - case 'IN': - case 'NOT IN': - $filter_values_count = is_countable( $filter['values'] ) ? count( $filter['values'] ) : 0; - $values_placeholders = implode( ',', array_fill( 0, $filter_values_count, '%s' ) ); - $statement = "{$key} {$filter['operator']} ( $values_placeholders )"; - - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared - $prepared_statement = $wpdb->prepare( $statement, $filter['values'] ); - - $result[] = $prepared_statement; - break; - } - } - - return $result; - } - - /** - * Build the filter query baased off range fields and values and the additional sql. - * - * @param int|null $range_from Start of the range. - * @param int|null $range_to End of the range. - * @param array|null $filter_values Additional filter values. Not used at the moment. - * @param string $table_prefix Table name to be prefixed to the columns. Used in sub-queries where columns can clash. - * - * @return string - */ - public function build_filter_statement( $range_from = null, $range_to = null, $filter_values = null, $table_prefix = '' ) { - global $wpdb; - - // If there is a field prefix that we want to use with table aliases. - $parent_prefix = ( ! empty( $table_prefix ) ? $table_prefix : $this->table ) . '.'; - - /** - * Prepare the ranges. - */ - - $filter_array = array( '1 = 1' ); - if ( null !== $range_from ) { - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - $filter_array[] = $wpdb->prepare( "{$parent_prefix}{$this->range_field} >= %d", array( intval( $range_from ) ) ); - } - if ( null !== $range_to ) { - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - $filter_array[] = $wpdb->prepare( "{$parent_prefix}{$this->range_field} <= %d", array( intval( $range_to ) ) ); - } - - /** - * End prepare the ranges. - */ - - /** - * Prepare data filters. - */ - - // Default filters. - if ( $this->filter_values ) { - $prepared_values_statements = $this->prepare_filter_values_as_sql( $this->filter_values, $table_prefix ); - if ( $prepared_values_statements ) { - $filter_array = array_merge( $filter_array, $prepared_values_statements ); - } - } - - // Additional filters. - if ( ! empty( $filter_values ) ) { - // Prepare filtering. - $prepared_values_statements = $this->prepare_filter_values_as_sql( $filter_values, $table_prefix ); - if ( $prepared_values_statements ) { - $filter_array = array_merge( $filter_array, $prepared_values_statements ); - } - } - - // Add any additional filters via direct SQL statement. - // Currently used only because we haven't converted all filtering to happen via `filter_values`. - // This SQL is NOT prefixed and column clashes can occur when used in sub-queries. - if ( $this->additional_filter_sql ) { - $filter_array[] = $this->additional_filter_sql; - } - - /** - * End prepare data filters. - */ - return implode( ' AND ', $filter_array ); - } - - /** - * Returns the checksum query. All validation of fields and configurations are expected to occur prior to usage. - * - * @param int|null $range_from The start of the range. - * @param int|null $range_to The end of the range. - * @param array|null $filter_values Additional filter values. Not used at the moment. - * @param bool $granular_result If the function should return a granular result. - * - * @return string - * - * @throws Exception Throws an exception if validation fails in the internal function calls. - */ - protected function build_checksum_query( $range_from = null, $range_to = null, $filter_values = null, $granular_result = false ) { - global $wpdb; - - // Escape the salt. - $salt = $wpdb->prepare( '%s', $this->salt ); - - // Prepare the compound key. - $key_fields = array(); - - // Prefix the fields with the table name, to avoid clashes in queries with sub-queries (e.g. meta tables). - foreach ( $this->key_fields as $field ) { - $key_fields[] = $this->table . '.' . $field; - } - - $key_fields = implode( ',', $key_fields ); - - // Prepare the checksum fields. - $checksum_fields = array(); - // Prefix the fields with the table name, to avoid clashes in queries with sub-queries (e.g. meta tables). - foreach ( $this->checksum_fields as $field ) { - $checksum_fields[] = $this->table . '.' . $field; - } - // Apply latin1 conversion if enabled. - if ( $this->perform_text_conversion ) { - // Convert text fields to allow for encoding discrepancies as WP.com is latin1. - foreach ( $this->checksum_text_fields as $field ) { - $checksum_fields[] = 'CONVERT(' . $this->table . '.' . $field . ' using latin1 )'; - } - } else { - // Conversion disabled, default to table prefixing. - foreach ( $this->checksum_text_fields as $field ) { - $checksum_fields[] = $this->table . '.' . $field; - } - } - - $checksum_fields_string = implode( ',', array_merge( $checksum_fields, array( $salt ) ) ); - - $additional_fields = ''; - if ( $granular_result ) { - // TODO uniq the fields as sometimes(most) range_index is the key and there's no need to select the same field twice. - $additional_fields = " - {$this->table}.{$this->range_field} as range_index, - {$key_fields}, - "; - } - - $filter_stamenet = $this->build_filter_statement( $range_from, $range_to, $filter_values ); - - $join_statement = ''; - if ( $this->parent_table ) { - $parent_table_obj = new Table_Checksum( $this->parent_table ); - $parent_filter_query = $parent_table_obj->build_filter_statement( null, null, null, 'parent_table' ); - - // It is possible to have the GROUP By cause multiple rows to be returned for the same row for term_taxonomy. - // To get distinct entries we use a correlatd subquery back on the parent table using the primary key. - $additional_unique_clause = ''; - if ( 'term_taxonomy' === $this->parent_table ) { - $additional_unique_clause = " - AND parent_table.{$parent_table_obj->range_field} = ( - SELECT min( parent_table_cs.{$parent_table_obj->range_field} ) - FROM {$parent_table_obj->table} as parent_table_cs - WHERE parent_table_cs.{$this->parent_join_field} = {$this->table}.{$this->table_join_field} - ) - "; - } - - $join_statement = " - INNER JOIN {$parent_table_obj->table} as parent_table - ON ( - {$this->table}.{$this->table_join_field} = parent_table.{$this->parent_join_field} - AND {$parent_filter_query} - $additional_unique_clause - ) - "; - } - - $query = " - SELECT - {$additional_fields} - SUM( - CRC32( - CONCAT_WS( '#', {$salt}, {$checksum_fields_string} ) - ) - ) AS checksum - FROM - {$this->table} - {$join_statement} - WHERE - {$filter_stamenet} - "; - - /** - * We need the GROUP BY only for compound keys. - */ - if ( $granular_result ) { - $query .= " - GROUP BY {$key_fields} - LIMIT 9999999 - "; - } - - return $query; - } - - /** - * Obtain the min-max values (edges) of the range. - * - * @param int|null $range_from The start of the range. - * @param int|null $range_to The end of the range. - * @param int|null $limit How many values to return. - * - * @return array|object|void - * @throws Exception Throws an exception if validation fails on the internal function calls. - */ - public function get_range_edges( $range_from = null, $range_to = null, $limit = null ) { - global $wpdb; - - $this->validate_fields( array( $this->range_field ) ); - - // Performance :: When getting the postmeta range we do not want to filter by the whitelist. - // The reason for this is that it leads to a non-performant query that can timeout. - // Instead lets get the range based on posts regardless of meta. - $filter_values = $this->filter_values; - if ( $wpdb->postmeta === $this->table ) { - $this->filter_values = null; - } - - // `trim()` to make sure we don't add the statement if it's empty. - $filters = trim( $this->build_filter_statement( $range_from, $range_to ) ); - - // Reset Post meta filter. - if ( $wpdb->postmeta === $this->table ) { - $this->filter_values = $filter_values; - } - - $filter_statement = ''; - if ( ! empty( $filters ) ) { - $filter_statement = " - WHERE - {$filters} - "; - } - - // Only make the distinct count when we know there can be multiple entries for the range column. - $distinct_count = ''; - if ( count( $this->key_fields ) > 1 || $wpdb->terms === $this->table || $wpdb->term_relationships === $this->table ) { - $distinct_count = 'DISTINCT'; - } - - $query = " - SELECT - MIN({$this->range_field}) as min_range, - MAX({$this->range_field}) as max_range, - COUNT( {$distinct_count} {$this->range_field}) as item_count - FROM - "; - - /** - * If `$limit` is not specified, we can directly use the table. - */ - if ( ! $limit ) { - $query .= " - {$this->table} - {$filter_statement} - "; - } else { - /** - * If there is `$limit` specified, we can't directly use `MIN/MAX()` as they don't work with `LIMIT`. - * That's why we will alter the query for this case. - */ - $limit = intval( $limit ); - - $query .= " - ( - SELECT - {$distinct_count} {$this->range_field} - FROM - {$this->table} - {$filter_statement} - ORDER BY - {$this->range_field} ASC - LIMIT {$limit} - ) as ids_query - "; - } - - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared - $result = $wpdb->get_row( $query, ARRAY_A ); - - if ( ! $result || ! is_array( $result ) ) { - throw new Exception( 'Unable to get range edges' ); - } - - return $result; - } - - /** - * Update the results to have key/checksum format. - * - * @param array $results Prepare the results for output of granular results. - */ - protected function prepare_results_for_output( &$results ) { - // get the compound key. - // only return range and compound key for granular results. - - $return_value = array(); - - foreach ( $results as &$result ) { - // Working on reference to save memory here. - - $key = array(); - foreach ( $this->key_fields as $field ) { - $key[] = $result[ $field ]; - } - - $return_value[ implode( '-', $key ) ] = $result['checksum']; - } - - return $return_value; - } - - /** - * Calculate the checksum based on provided range and filters. - * - * @param int|null $range_from The start of the range. - * @param int|null $range_to The end of the range. - * @param array|null $filter_values Additional filter values. Not used at the moment. - * @param bool $granular_result If the returned result should be granular or only the checksum. - * @param bool $simple_return_value If we want to use a simple return value for non-granular results (return only the checksum, without wrappers). - * - * @return array|mixed|object|WP_Error|null - */ - public function calculate_checksum( $range_from = null, $range_to = null, $filter_values = null, $granular_result = false, $simple_return_value = true ) { - - if ( ! Sync\Settings::is_checksum_enabled() ) { - return new WP_Error( 'checksum_disabled', 'Checksums are currently disabled.' ); - } - - try { - $this->validate_input(); - } catch ( Exception $ex ) { - return new WP_Error( 'invalid_input', $ex->getMessage() ); - } - - $query = $this->build_checksum_query( $range_from, $range_to, $filter_values, $granular_result ); - - global $wpdb; - - if ( ! $granular_result ) { - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared - $result = $wpdb->get_row( $query, ARRAY_A ); - - if ( ! is_array( $result ) ) { - return new WP_Error( 'invalid_query', "Result wasn't an array" ); - } - - if ( $simple_return_value ) { - return $result['checksum']; - } - - return array( - 'range' => $range_from . '-' . $range_to, - 'checksum' => $result['checksum'], - ); - } else { - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared - $result = $wpdb->get_results( $query, ARRAY_A ); - return $this->prepare_results_for_output( $result ); - } - } - - /** - * Make sure the WooCommerce tables should be enabled for Checksum/Fix. - * - * @return bool - */ - public static function enable_woocommerce_tables() { - /** - * On WordPress.com, we can't directly check if the site has support for WooCommerce. - * Having the option to override the functionality here helps with syncing WooCommerce tables. - * - * @since 10.1 - * - * @param bool If we should we force-enable WooCommerce tables support. - */ - $force_woocommerce_support = apply_filters( 'jetpack_table_checksum_force_enable_woocommerce', false ); - - // If we're forcing WooCommerce tables support, there's no need to check further. - // This is used on WordPress.com. - if ( $force_woocommerce_support ) { - return true; - } - - // If the 'woocommerce' module is enabled, this means that WooCommerce class exists. - return false !== Sync\Modules::get_module( 'woocommerce' ); - } - - /** - * Make sure the WooCommerce HPOS tables should be enabled for Checksum/Fix. - * - * @see Automattic\Jetpack\SyncActions::initialize_woocommerce - * - * @since 3.3.0 - * - * @return bool - */ - public static function enable_woocommerce_hpos_tables() { - /** - * On WordPress.com, we can't directly check if the site has support for WooCommerce HPOS tables. - * Having the option to override the functionality here helps with syncing WooCommerce HPOS tables. - * - * @since 3.3.0 - * - * @param bool If we should we force-enable WooCommerce HPOS tables support. - */ - $force_woocommerce_hpos_support = apply_filters( 'jetpack_table_checksum_force_enable_woocommerce_hpos', false ); - - // If we're forcing WooCommerce HPOS tables support, there's no need to check further. - // This is used on WordPress.com. - if ( $force_woocommerce_hpos_support ) { - return true; - } - - // If the 'woocommerce_hpos_orders' module is enabled, this means that WooCommerce class exists - // and HPOS is enabled too. - return false !== Sync\Modules::get_module( 'woocommerce_hpos_orders' ); - } - - /** - * Prepare and append custom columns to the list of columns that we run the checksum on. - * - * @param string|array $additional_columns List of additional columns. - * - * @return void - * @throws Exception When field validation fails. - */ - protected function prepare_additional_columns( $additional_columns ) { - /** - * No need to do anything if the parameter is not provided or empty. - */ - if ( empty( $additional_columns ) ) { - return; - } - - if ( ! is_array( $additional_columns ) ) { - if ( ! is_string( $additional_columns ) ) { - throw new Exception( 'Invalid value for additional fields' ); - } - - $additional_columns = explode( ',', $additional_columns ); - } - - /** - * Validate the fields. If any don't conform to the required norms, we will throw an exception and - * halt code here. - */ - $this->validate_fields( $additional_columns ); - - /** - * Assign the fields to the checksum_fields to be used in the checksum later. - * - * We're adding the fields to the rest of the `checksum_fields`, so we don't need - * to implement extra logic just for the additional fields. - */ - $this->checksum_fields = array_unique( - array_merge( - $this->checksum_fields, - $additional_columns - ) - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-options.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-options.php deleted file mode 100644 index 865d6b3b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-options.php +++ /dev/null @@ -1,291 +0,0 @@ -queue_id = $queue_id; - } - - /** - * Insert an item in the queue. - * - * @param string $item_id The item ID. - * @param string $item Serialized item data. - * - * @return bool If the item was added. - */ - public function insert_item( $item_id, $item ) { - global $wpdb; - - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.DirectQuery - $rows_added = $wpdb->query( - $wpdb->prepare( - "INSERT INTO $wpdb->options (option_name, option_value, autoload) VALUES (%s, %s,%s)", - $item_id, - $item, - 'no' - ) - ); - - return ( 0 !== $rows_added ); - } - - /** - * Fetch items from the queue. - * - * @param int|null $item_count How many items to fetch from the queue. - * The parameter is null-able, if no limit on the amount of items. - * - * @return array|object|\stdClass[]|null - */ - public function fetch_items( $item_count ) { - global $wpdb; - - // TODO make it more simple for the $item_count - if ( $item_count ) { - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.DirectQuery - $items = $wpdb->get_results( - $wpdb->prepare( - "SELECT option_name AS id, option_value AS value FROM $wpdb->options WHERE option_name LIKE %s ORDER BY option_name ASC LIMIT %d", - "jpsq_{$this->queue_id}-%", - $item_count - ), - OBJECT - ); - } else { - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.DirectQuery - $items = $wpdb->get_results( - $wpdb->prepare( - "SELECT option_name AS id, option_value AS value FROM $wpdb->options WHERE option_name LIKE %s ORDER BY option_name ASC", - "jpsq_{$this->queue_id}-%" - ), - OBJECT - ); - } - - return $items; - } - - /** - * Fetches items with specific IDs from the Queue. - * - * @param array $items_ids Items IDs to fetch from the queue. - * - * @return \stdClass[]|null - */ - public function fetch_items_by_ids( $items_ids ) { - global $wpdb; - - // return early if $items_ids is empty or not an array. - if ( empty( $items_ids ) || ! is_array( $items_ids ) ) { - return array(); - } - - $ids_placeholders = implode( ', ', array_fill( 0, count( $items_ids ), '%s' ) ); - - $query_with_placeholders = "SELECT option_name AS id, option_value AS value - FROM $wpdb->options - WHERE option_name IN ( $ids_placeholders )"; - - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.DirectQuery - $items = $wpdb->get_results( - $wpdb->prepare( - $query_with_placeholders, // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared - $items_ids - ), - OBJECT - ); - - return $items; - } - - /** - * Clear out the queue. - * - * @return bool|int|\mysqli_result|resource|null - */ - public function clear_queue() { - global $wpdb; - - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.DirectQuery - return $wpdb->query( - $wpdb->prepare( - "DELETE FROM $wpdb->options WHERE option_name LIKE %s", - "jpsq_{$this->queue_id}-%" - ) - ); - } - - /** - * Check how many items are in the queue. - * - * @return int - */ - public function get_item_count() { - global $wpdb; - - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.DirectQuery - return (int) $wpdb->get_var( - $wpdb->prepare( - "SELECT count(*) FROM $wpdb->options WHERE option_name LIKE %s", - "jpsq_{$this->queue_id}-%" - ) - ); - } - - /** - * Return the lag amount for the queue. - * - * @param float|int|null $now A timestamp to use as starting point when calculating the lag. - * - * @return float|int The lag amount. - */ - public function get_lag( $now = null ) { - global $wpdb; - - // TODO replace with peek and a flag to fetch only the name. - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.DirectQuery - $first_item_name = $wpdb->get_var( - $wpdb->prepare( - "SELECT option_name FROM $wpdb->options WHERE option_name LIKE %s ORDER BY option_name ASC LIMIT 1", - "jpsq_{$this->queue_id}-%" - ) - ); - - if ( ! $first_item_name ) { - return 0; - } - - if ( null === $now ) { - $now = microtime( true ); - } - - // Break apart the item name to get the timestamp. - $matches = null; - if ( preg_match( '/^jpsq_' . $this->queue_id . '-(\d+\.\d+)-/', $first_item_name, $matches ) ) { - return $now - (float) $matches[1]; - } else { - return 0; - } - } - - /** - * Add multiple items to the queue at once. - * - * @param array $items Array of items to add. - * @param string $id_prefix Prefix to use for all the items. - * - * @return bool|int|\mysqli_result|resource|null - */ - public function add_all( $items, $id_prefix ) { - global $wpdb; - - $query = "INSERT INTO $wpdb->options (option_name, option_value, autoload) VALUES "; - - $rows = array(); - $count_items = count( $items ); - for ( $i = 0; $i < $count_items; ++$i ) { - // skip empty items. - if ( empty( $items[ $i ] ) ) { - continue; - } - try { - $option_name = esc_sql( $id_prefix . '-' . $i ); - $option_value = esc_sql( serialize( $items[ $i ] ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize - $rows[] = "('$option_name', '$option_value', 'no')"; - } catch ( \Exception $e ) { - // Item cannot be serialized so skip. - continue; - } - } - - $rows_added = $wpdb->query( $query . implode( ',', $rows ) ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching - - return $rows_added; - } - - /** - * Return $max_count items from the queue, including their value string length. - * - * @param int $max_count How many items to fetch from the queue. - * - * @return object[]|null - */ - public function get_items_ids_with_size( $max_count ) { - global $wpdb; - - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.DirectQuery - return $wpdb->get_results( - $wpdb->prepare( - "SELECT option_name AS id, LENGTH(option_value) AS value_size FROM $wpdb->options WHERE option_name LIKE %s ORDER BY option_name ASC LIMIT %d", - "jpsq_{$this->queue_id}-%", - $max_count - ), - OBJECT - ); - } - - /** - * Delete items with specific IDs from the queue. - * - * @param array $ids IDs of the items to remove from the queue. - * - * @return bool|int|\mysqli_result|resource|null - */ - public function delete_items_by_ids( $ids ) { - global $wpdb; - - if ( ! is_array( $ids ) || empty( $ids ) ) { - return false; - } - - // TODO check if it's working properly - no need to delete all options in the table if the params are not right - $ids_placeholders = implode( ', ', array_fill( 0, count( $ids ), '%s' ) ); - - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.DirectQuery - return $wpdb->query( - $wpdb->prepare( - /** - * Ignoring the linting warning, as there's still no placeholder replacement for DB field name, - * in this case this is `$ids_placeholders`, as we're preparing them above and are a dynamic count. - */ - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare - "DELETE FROM {$wpdb->options} WHERE option_name IN ( $ids_placeholders )", - $ids - ) - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-table.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-table.php deleted file mode 100644 index 7fd459b9..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-table.php +++ /dev/null @@ -1,691 +0,0 @@ -queue_id = $queue_id; - - // Initialize the `table_name` property with the correct prefix for easier usage in the class. - $this->table_name = $wpdb->prefix . $this->table_name_no_prefix; - } - - /** - * Creates the new table and updates the options to work with - * the new table if it was created successfully. - * - * @return void - */ - protected function create_table() { - global $wpdb; - - require_once ABSPATH . '/wp-admin/includes/upgrade.php'; - - $charset_collate = $wpdb->get_charset_collate(); - - $table_definition = "CREATE TABLE {$this->table_name} ( - `ID` bigint(20) NOT NULL AUTO_INCREMENT, - `queue_id` varchar(50) NOT NULL, - `event_id` varchar(100) NOT NULL, - `event_payload` longtext NOT NULL, - `timestamp` timestamp NOT NULL DEFAULT current_timestamp(), - PRIMARY KEY (`ID`), - KEY `event_id` (`event_id`), - KEY `queue_id` (`queue_id`), - KEY `queue_id_event_id` (queue_id, event_id), - KEY `timestamp` (`timestamp`) - ) $charset_collate;"; - - /** - * The function dbDelta will only return the differences. If the table exists, the result will be empty, - * so let's run a check afterward to see if the table exists and is healthy. - */ - \dbDelta( $table_definition ); - } - - /** - * Check if the Custom table actually exists. - * - * @return bool - */ - protected function custom_table_exists() { - global $wpdb; - - // Check if the table exists - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.InterpolatedNotPrepared - $result = $wpdb->get_row( - $wpdb->prepare( 'SHOW TABLES LIKE %s', $this->table_name ), - ARRAY_N - ); - - if ( empty( $result ) || count( $result ) !== 1 || $result[0] !== $this->table_name ) { - return false; - } - - return true; - } - /** - * Check if the table is healthy, and we can read and write from/to it. - * - * @return true|\WP_Error If the custom table is available, and we can read and write from/to it. - */ - protected function is_custom_table_healthy() { - global $wpdb; - - if ( ! $this->custom_table_exists() ) { - return new \WP_Error( 'custom_table_not_exist', 'Jetpack Sync Custom table: Table does not exist' ); - } - - // Try to read from the table - - // Ignore the interpolated table name - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.InterpolatedNotPrepared - $query = $wpdb->query( "SELECT count(`ID`) FROM {$this->table_name}" ); - - if ( $query === false ) { - // The query failed to select anything from the table, so there must be an issue reading from it. - return new \WP_Error( 'custom_table_unable_to_read', 'Jetpack Sync Custom table: Unable to read from table' ); - } - - if ( $wpdb->last_error ) { - // There was an error reading, that's not necessarily failing the query. - // TODO check if we need this error check. - // TODO add more information about the erorr in the return value. - return new \WP_Error( 'custom_table_unable_to_read_sql_error', 'Jetpack Sync Custom table: Unable to read from table - SQL error' ); - } - - // Check if we can write in the table - if ( ! $this->insert_item( 'test', 'test' ) ) { - return new \WP_Error( 'custom_table_unable_to_writeread', 'Jetpack Sync Custom table: Unable to write into table' ); - } - - // See if we can read the item back - $items = $this->fetch_items_by_ids( array( 'test' ) ); - if ( empty( $items ) || ! is_object( $items[0] ) || $items[0]->value !== 'test' ) { - return new \WP_Error( 'custom_table_unable_to_writeread', 'Jetpack Sync Custom table: Unable to read item after writing' ); - } - - // Try to insert an item, read it back and then delete it. - $this->delete_items_by_ids( array( 'test' ) ); - - // Try to fetch the item back. It should not exist. - $items = $this->fetch_items_by_ids( array( 'test' ) ); - if ( ! empty( $items ) ) { - return new \WP_Error( 'custom_table_unable_to_writeread', 'Jetpack Sync Custom table: Unable to delete from table' ); - } - - return true; - } - - /** - * Drop the custom table as part of cleanup. - * - * @return bool If the table is cleared. - */ - public function drop_table() { - global $wpdb; - - if ( $this->custom_table_exists() ) { - // Ignoring the linting warning, as there's still no placeholder replacement for DB field name. - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.DirectDatabaseQuery.SchemaChange - return (bool) $wpdb->query( "DROP TABLE {$this->table_name}" ); - } - } - - /** - * Queue API implementation - */ - - /** - * Insert an item in the queue. - * - * @param string $item_id The item ID. - * @param string $item Serialized item data. - * - * @return bool If the item was added. - */ - public function insert_item( $item_id, $item ) { - global $wpdb; - - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.InterpolatedNotPrepared - $rows_added = $wpdb->query( - $wpdb->prepare( - /** - * Ignoring the linting warning, as there's still no placeholder replacement for DB field name, - * in this case this is `$this->table_name` - */ - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - "INSERT INTO {$this->table_name} (queue_id, event_id, event_payload) VALUES (%s, %s,%s)", - $this->queue_id, - $item_id, - $item - ) - ); - - return ( 0 !== $rows_added ); - } - - /** - * Fetch items from the queue. - * - * @param int|null $item_count How many items to fetch from the queue. - * The parameter is null-able, if no limit on the amount of items. - * - * @return object[]|null - */ - public function fetch_items( $item_count ) { - global $wpdb; - - /** - * Ignoring the linting warning, as there's still no placeholder replacement for DB field name, - * in this case this is `$this->table_name` - */ - // phpcs:disable WordPress.DB.PreparedSQL.InterpolatedNotPrepared - - // TODO make it more simple for the $item_count - if ( $item_count ) { - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.InterpolatedNotPrepared - $items = $wpdb->get_results( - $wpdb->prepare( - " - SELECT - event_id AS id, - event_payload AS value - FROM {$this->table_name} - WHERE queue_id LIKE %s - ORDER BY event_id ASC - LIMIT %d - ", - $this->queue_id, - $item_count - ) - ); - } else { - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.InterpolatedNotPrepared - $items = $wpdb->get_results( - $wpdb->prepare( - " - SELECT - event_id AS id, - event_payload AS value - FROM {$this->table_name} - WHERE queue_id LIKE %s - ORDER BY event_id ASC - ", - $this->queue_id - ) - ); - } - - // phpcs:enable WordPress.DB.PreparedSQL.InterpolatedNotPrepared - - return $items; - } - - /** - * Fetches items with specific IDs from the Queue. - * - * @param array $items_ids Items IDs to fetch from the queue. - * - * @return object[]|null - */ - public function fetch_items_by_ids( $items_ids ) { - global $wpdb; - - // return early if $items_ids is empty or not an array. - if ( empty( $items_ids ) || ! is_array( $items_ids ) ) { - return array(); - } - - $ids_placeholders = implode( ', ', array_fill( 0, count( $items_ids ), '%s' ) ); - $query_with_placeholders = "SELECT event_id AS id, event_payload AS value - FROM {$this->table_name} - WHERE queue_id = %s AND event_id IN ( $ids_placeholders )"; - - $replacement_values = array_merge( array( $this->queue_id ), $items_ids ); - - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.InterpolatedNotPrepared - $items = $wpdb->get_results( - $wpdb->prepare( - $query_with_placeholders, // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared - $replacement_values - ), - OBJECT - ); - - return $items; - } - - /** - * Check how many items are in the queue. - * - * @return int - */ - public function get_item_count() { - global $wpdb; - - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.InterpolatedNotPrepared - $items_count = (int) $wpdb->get_var( - $wpdb->prepare( - /** - * Ignoring the linting warning, as there's still no placeholder replacement for DB field name, - * in this case this is `$this->table_name` - */ - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - "SELECT COUNT(*) FROM {$this->table_name} WHERE queue_id = %s", - $this->queue_id - ) - ); - // If the table does not exist, disable the custom queue table and send an error. - if ( ! empty( $wpdb->last_error ) - && str_contains( $wpdb->last_error, $this->table_name_no_prefix . "' doesn't exist" ) - && ! get_transient( self::CUSTOM_QUEUE_TABLE_DISABLE_WPDB_ERROR_NOT_EXIST_FLAG ) - ) { - set_transient( self::CUSTOM_QUEUE_TABLE_DISABLE_WPDB_ERROR_NOT_EXIST_FLAG, true, 6 * HOUR_IN_SECONDS ); - Settings::update_settings( array( 'custom_queue_table_enabled' => 0 ) ); - $data = array( - 'timestamp' => microtime( true ), - 'error' => $wpdb->last_error, - ); - $sender = Sender::get_instance(); - $sender->send_action( 'jetpack_sync_storage_error_custom_table_not_exist', $data ); - } - - return $items_count; - } - - /** - * Clear out the queue. - * - * @return bool|int|\mysqli_result|resource|null - */ - public function clear_queue() { - global $wpdb; - - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.InterpolatedNotPrepared - return $wpdb->query( - $wpdb->prepare( - /** - * Ignoring the linting warning, as there's still no placeholder replacement for DB field name, - * in this case this is `$this->table_name` - */ - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - "DELETE FROM {$this->table_name} WHERE queue_id = %s", - $this->queue_id - ) - ); - } - - /** - * Return the lag amount for the queue. - * - * @param float|int|null $now A timestamp to use as starting point when calculating the lag. - * - * @return float|int The lag amount. - */ - public function get_lag( $now = null ) { - global $wpdb; - - // TODO replace with peek and a flag to fetch only the name. - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.InterpolatedNotPrepared - $first_item_name = $wpdb->get_var( - $wpdb->prepare( - /** - * Ignoring the linting warning, as there's still no placeholder replacement for DB field name, - * in this case this is `$this->table_name` - */ - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - "SELECT event_id FROM {$this->table_name} WHERE queue_id = %s ORDER BY event_id ASC LIMIT 1", - $this->queue_id - ) - ); - - if ( ! $first_item_name ) { - return 0; - } - - if ( null === $now ) { - $now = microtime( true ); - } - - // Break apart the item name to get the timestamp. - $matches = null; - if ( preg_match( '/^jpsq_' . $this->queue_id . '-(\d+\.\d+)-/', $first_item_name, $matches ) ) { - return $now - (float) $matches[1]; - } else { - return 0; - } - } - - /** - * Add multiple items to the queue at once. - * - * @param array $items Array of items to add. - * @param string $id_prefix Prefix to use for all the items. - * - * @return bool|int|\mysqli_result|resource|null - */ - public function add_all( $items, $id_prefix ) { - global $wpdb; - - $query = "INSERT INTO {$this->table_name} (queue_id, event_id, event_payload ) VALUES "; - - $rows = array(); - $count_items = count( $items ); - for ( $i = 0; $i < $count_items; ++$i ) { - // skip empty items. - if ( empty( $items[ $i ] ) ) { - continue; - } - try { - $event_id = esc_sql( $id_prefix . '-' . $i ); - $event_payload = esc_sql( serialize( $items[ $i ] ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize - $rows[] = "('{$this->queue_id}', '$event_id','$event_payload')"; - } catch ( \Exception $e ) { - // Item cannot be serialized so skip. - continue; - } - } - - $rows_added = $wpdb->query( $query . implode( ',', $rows ) ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching - - return $rows_added; - } - - /** - * Return $max_count items from the queue, including their value string length. - * - * @param int $max_count How many items to fetch from the queue. - * - * @return object[]|null - */ - public function get_items_ids_with_size( $max_count ) { - global $wpdb; - - // TODO optimize the fetch to happen by queue name not by the IDs as it can be issue cross-queues. - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.InterpolatedNotPrepared - return $wpdb->get_results( - $wpdb->prepare( - /** - * Ignoring the linting warning, as there's still no placeholder replacement for DB field name, - * in this case this is `$this->table_name` - */ - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - "SELECT event_id AS id, LENGTH( event_payload ) AS value_size FROM {$this->table_name} WHERE queue_id = %s ORDER BY event_id ASC LIMIT %d", - $this->queue_id, - $max_count - ), - OBJECT - ); - } - - /** - * Delete items with specific IDs from the queue. - * - * @param array $ids IDs of the items to remove from the queue. - * - * @return bool|int|\mysqli_result|resource|null - */ - public function delete_items_by_ids( $ids ) { - global $wpdb; - $ids_placeholders = implode( ', ', array_fill( 0, count( $ids ), '%s' ) ); - - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.InterpolatedNotPrepared - return $wpdb->query( - $wpdb->prepare( - /** - * Ignoring the linting warning, as there's still no placeholder replacement for DB field name, - * in this case this is `$this->table_name` - */ - // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared - "DELETE FROM {$this->table_name} WHERE queue_id = %s AND event_id IN ( $ids_placeholders )", - array_merge( array( $this->queue_id ), $ids ) - ) - ); - } - - /** - * Table initialization - */ - public static function initialize_custom_sync_table() { - /** - * Initialize an instance of the class with a test name, so we can use table prefix and then test if the table is healthy. - */ - $custom_table_instance = new Queue_Storage_Table( 'test_queue' ); - - // Check if the table exists - if ( ! $custom_table_instance->custom_table_exists() ) { - $custom_table_instance->create_table(); - } - - return $custom_table_instance->is_custom_table_healthy(); - } - - /** - * Migrates the existing Sync events from the options table to the Custom table - * - * @return bool - */ - public static function migrate_from_options_table_to_custom_table() { - global $wpdb; - - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching - $count_result = $wpdb->get_row( - " - SELECT - COUNT(*) as item_count - FROM - {$wpdb->options} - WHERE - option_name LIKE 'jpsq_%' - " - ); - - $item_count = $count_result->item_count; - - $limit = 100; - $offset = 0; - - do { - // get all the records from the options table - $query = " - SELECT - option_name as event_id, - option_value as event_payload - FROM - {$wpdb->options} - WHERE - option_name LIKE 'jpsq_%' - ORDER BY - option_name ASC - LIMIT $offset, $limit - "; - - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.NotPrepared - $rows = $wpdb->get_results( $query ); - - $insert_rows = array(); - - foreach ( $rows as $event ) { - $event_id = $event->event_id; - - // Parse the event - if ( - preg_match( - '!jpsq_(?P[^-]+)-(?P[^-]+)-.+!', - $event_id, - $events_matches - ) - ) { - $queue_id = $events_matches['queue_id']; - $timestamp = $events_matches['timestamp']; - - $insert_rows[] = $wpdb->prepare( - '(%s, %s, %s, %s)', - array( - $queue_id, - $event_id, - $event->event_payload, - (int) $timestamp, - ) - ); - } - } - - // Instantiate table storage, so we can get the table name. Queue ID is just a placeholder here. - $queue_table_storage = new Queue_Storage_Table( 'test_queue' ); - - if ( ! empty( $insert_rows ) ) { - $insert_query = 'INSERT INTO ' . $queue_table_storage->table_name . ' (queue_id, event_id, event_payload, timestamp) VALUES '; - - $insert_query .= implode( ',', $insert_rows ); - - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.NotPrepared - $wpdb->query( $insert_query ); - } - - $offset += $limit; - } while ( $offset < $item_count ); - - // Clear out the options queue - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.NotPrepared - $wpdb->query( - $wpdb->prepare( - "DELETE FROM $wpdb->options WHERE option_name LIKE %s", - 'jpsq_%-%' - ) - ); - - return true; - } - - /** - * Migrates the existing Sync events from the Custom table to the Options table - * - * @return void - */ - public static function migrate_from_custom_table_to_options_table() { - global $wpdb; - - // Instantiate table storage, so we can get the table name. Queue ID is just a placeholder here. - $queue_table_storage = new Queue_Storage_Table( 'test_queue' ); - $custom_table_name = $queue_table_storage->table_name; - - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.InterpolatedNotPrepared - $count_result = $wpdb->get_row( "SELECT COUNT(*) as item_count FROM {$custom_table_name}" ); - - if ( $wpdb->last_error ) { - return; - } - - $item_count = $count_result->item_count; - - $limit = 100; - $offset = 0; - - do { - // get all the records from the options table - $query = " - SELECT - event_id, - event_payload - FROM - {$custom_table_name} - ORDER BY - event_id ASC - LIMIT $offset, $limit - "; - - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.NotPrepared - $rows = $wpdb->get_results( $query ); - - $insert_rows = array(); - - foreach ( $rows as $event ) { - $insert_rows[] = $wpdb->prepare( - '(%s, %s, "no")', - array( - $event->event_id, - $event->event_payload, - ) - ); - } - - if ( ! empty( $insert_rows ) ) { - $insert_query = "INSERT INTO {$wpdb->options} (option_name, option_value, autoload) VALUES "; - - $insert_query .= implode( ',', $insert_rows ); - - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.NotPrepared - $wpdb->query( $insert_query ); - } - - $offset += $limit; - } while ( $offset < $item_count ); - - // Clear the custom table - // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery,WordPress.DB.DirectDatabaseQuery.NoCaching,WordPress.DB.PreparedSQL.InterpolatedNotPrepared - $wpdb->query( "DELETE FROM {$custom_table_name}" ); - - // TODO should we drop the table here instead? - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/CHANGELOG.md deleted file mode 100644 index e9fe5525..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/CHANGELOG.md +++ /dev/null @@ -1,107 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [0.3.1] - 2025-03-24 -### Changed -- Internal updates. - -## [0.3.0] - 2025-01-09 -### Added -- Enable test coverage. [#39961] - -### Changed -- Backup: Added next daily backup schedule time on admin page. [#39914] -- Updated dependencies. [#40286] - -### Removed -- General: Update minimum PHP version to 7.2. [#40147] - -## [0.2.6] - 2024-10-29 -### Changed -- Internal updates. [#39781] - -## [0.2.5] - 2024-10-15 -### Changed -- Update dependencies. [#39497] - -## [0.2.4] - 2024-09-06 -### Changed -- Updated package dependencies. [#39004] - -## [0.2.3] - 2024-05-24 -### Fixed -- Backup: Change error messages to not trigger security scanners. [#36496] - -## [0.2.2] - 2024-03-19 -### Fixed -- Handle upgrades from plugins embedding version 0.2.0 of the package. [#36440] - -## [0.2.1] - 2024-03-14 -### Added -- Increasing backup version for new endpoint [#35649] - -### Fixed -- Write helper script to ABSPATH by default, just like we did before [#35508] - -## [0.2.0] - 2024-01-18 -### Changed -- The package now requires PHP >= 7.0. [#34192] - -### Fixed -- Backup: Add namespace versioning to Helper_Script_Manager and other classes. [#34739] -- Backup: Bug fixes in helper script installation class. [#34297] - -## [0.1.6] - 2023-10-19 -### Changed -- Updated package dependencies. [#32605] - -### Fixed -- Fix helper script upload for sites without direct file system access. [#32102] - -## [0.1.5] - 2023-07-06 -### Added -- Add Jetpack Autoloader package suggestion. [#29988] - -## [0.1.4] - 2023-03-29 -### Changed -- Minor internal updates. - -## [0.1.3] - 2023-01-25 -### Changed -- Use `WP_Filesystem` more consistently in `Helper_Script_Manager`. [#28198] - -## [0.1.2] - 2022-12-05 -### Changed -- Updated package dependencies. [#27688] - -## [0.1.1] - 2022-11-30 -### Changed -- Updated package dependencies. [#27043] - -## 0.1.0 - 2022-11-01 -### Added -- Adding the initial empty package -- Duplicate helper script code to a dedicated package - -### Changed -- Updated package dependencies. - -[0.3.1]: https://github.com/Automattic/jetpack-transport-helper/compare/v0.3.0...v0.3.1 -[0.3.0]: https://github.com/Automattic/jetpack-transport-helper/compare/v0.2.6...v0.3.0 -[0.2.6]: https://github.com/Automattic/jetpack-transport-helper/compare/v0.2.5...v0.2.6 -[0.2.5]: https://github.com/Automattic/jetpack-transport-helper/compare/v0.2.4...v0.2.5 -[0.2.4]: https://github.com/Automattic/jetpack-transport-helper/compare/v0.2.3...v0.2.4 -[0.2.3]: https://github.com/Automattic/jetpack-transport-helper/compare/v0.2.2...v0.2.3 -[0.2.2]: https://github.com/Automattic/jetpack-transport-helper/compare/v0.2.1...v0.2.2 -[0.2.1]: https://github.com/Automattic/jetpack-transport-helper/compare/v0.2.0...v0.2.1 -[0.2.0]: https://github.com/Automattic/jetpack-transport-helper/compare/v0.1.6...v0.2.0 -[0.1.6]: https://github.com/Automattic/jetpack-transport-helper/compare/v0.1.5...v0.1.6 -[0.1.5]: https://github.com/Automattic/jetpack-transport-helper/compare/v0.1.4...v0.1.5 -[0.1.4]: https://github.com/Automattic/jetpack-transport-helper/compare/v0.1.3...v0.1.4 -[0.1.3]: https://github.com/Automattic/jetpack-transport-helper/compare/v0.1.2...v0.1.3 -[0.1.2]: https://github.com/Automattic/jetpack-transport-helper/compare/v0.1.1...v0.1.2 -[0.1.1]: https://github.com/Automattic/jetpack-transport-helper/compare/v0.1.0...v0.1.1 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/actions.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/actions.php deleted file mode 100644 index c3d7e01b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/actions.php +++ /dev/null @@ -1,32 +0,0 @@ - $accepted_args, - 'function' => $cb, - ); - }; - $add_action = $add_filter; -} - -// Clean up expired Jetpack Helper Scripts from a scheduled event. -$add_action( 'jetpack_cleanup_helper_scripts', array( 'Automattic\\Jetpack\\Backup\\V0005\\Helper_Script_Manager', 'cleanup_expired_helper_scripts' ) ); - -// Register REST routes. -$add_action( 'rest_api_init', array( 'Automattic\Jetpack\Transport_Helper\V0005\\REST_Controller', 'register_rest_routes' ) ); - -// Set up package version hook. -$add_filter( 'jetpack_package_versions', 'Automattic\\Jetpack\\Transport_Helper\\Package_Version::send_package_version_to_tracker' ); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/composer.json deleted file mode 100644 index c1915cbe..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/composer.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "name": "automattic/jetpack-transport-helper", - "description": "Package to help transport server communication", - "type": "jetpack-library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2", - "automattic/jetpack-backup-helper-script-manager": "^0.3.6", - "automattic/jetpack-connection": "^6.8.1" - }, - "require-dev": { - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-test-environment": "@dev", - "automattic/phpunit-select-config": "^1.0.1" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "autoload": { - "files": [ - "actions.php" - ], - "classmap": [ - "src/" - ] - }, - "scripts": { - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" - ], - "test-php": [ - "@composer phpunit" - ], - "build-production": "echo 'Add your build step to composer.json, please!'", - "build-development": "echo 'Add your build step to composer.json, please!'" - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "mirror-repo": "Automattic/jetpack-transport-helper", - "version-constants": { - "::PACKAGE_VERSION": "src/class-package-version.php" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-transport-helper/compare/v${old}...v${new}" - }, - "autotagger": true, - "branch-alias": { - "dev-trunk": "0.3.x-dev" - }, - "textdomain": "jetpack-transport-helper" - }, - "config": { - "allow-plugins": { - "roots/wordpress-core-installer": true - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/src/class-package-version-compat.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/src/class-package-version-compat.php deleted file mode 100644 index c14ec470..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-transport-helper/src/class-package-version-compat.php +++ /dev/null @@ -1,25 +0,0 @@ - WP_REST_Server::CREATABLE, - 'callback' => __CLASS__ . '::install_helper_script', - 'permission_callback' => __CLASS__ . '::helper_script_permissions_callback', - 'args' => array( - 'helper' => array( - 'description' => __( 'base64 encoded Helper Script body.', 'jetpack-transport-helper' ), - 'type' => 'string', - 'required' => true, - ), - ), - ) - ); - - // Delete a Helper Script. - register_rest_route( - 'jetpack/v4', - // This route can be generalized once we no longer depend on the backup package - '/backup-helper-script', - array( - 'methods' => WP_REST_Server::DELETABLE, - 'callback' => __CLASS__ . '::delete_helper_script', - 'permission_callback' => __CLASS__ . '::helper_script_permissions_callback', - 'args' => array( - 'path' => array( - 'description' => __( 'Path to Helper Script', 'jetpack-transport-helper' ), - 'type' => 'string', - 'required' => true, - ), - ), - ) - ); - } - - /** - * The Jetpack endpoints should only be available via site-level authentication. - * This means that the corresponding endpoints can only be accessible from WPCOM. - * - * @access public - * @static - * - * @return bool|WP_Error True if a blog token was used to sign the request, WP_Error otherwise. - */ - public static function helper_script_permissions_callback() { - if ( Rest_Authentication::is_signed_with_blog_token() ) { - return true; - } - - $error_msg = esc_html__( - 'You are not allowed to perform this action.', - 'jetpack-transport-helper' - ); - - return new WP_Error( 'rest_forbidden', $error_msg, array( 'status' => rest_authorization_required_code() ) ); - } - - /** - * Install the Helper Script. - * - * @access public - * @static - * - * @param WP_REST_Request $request The request sent to the WP REST API. - * - * @return array|WP_Error An array with installation info on success: - * - * 'path' (string) Helper script installation path on the filesystem. - * 'url' (string) URL to the helper script. - * 'abspath' (string) WordPress root. - * - * or an instance of WP_Error on failure. - */ - public static function install_helper_script( $request ) { - $helper_script = $request->get_param( 'helper' ); - - // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode - $helper_script = base64_decode( $helper_script ); - if ( ! $helper_script ) { - return new WP_Error( 'invalid_args', __( 'Helper Script body must be base64 encoded', 'jetpack-transport-helper' ), 400 ); - } - - $installation_info = Helper_Script_Manager::install_helper_script( $helper_script ); - Helper_Script_Manager::cleanup_expired_helper_scripts(); - - return rest_ensure_response( $installation_info ); - } - - /** - * Delete a Helper Script. - * - * @access public - * @static - * - * @param WP_REST_Request $request The request sent to the WP REST API. - * - * @return array|WP_Error An array with 'success' key indicating the result of the delete operation. - */ - public static function delete_helper_script( $request ) { - $path_to_helper_script = $request->get_param( 'path' ); - - $delete_result = Helper_Script_Manager::delete_helper_script( $path_to_helper_script ); - Helper_Script_Manager::cleanup_expired_helper_scripts(); - - if ( is_wp_error( $delete_result ) ) { - return $delete_result; - } - - return rest_ensure_response( array( 'success' => true ) ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/CHANGELOG.md deleted file mode 100644 index 196f90c0..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/CHANGELOG.md +++ /dev/null @@ -1,534 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [0.23.8] - 2025-03-24 -### Changed -- Internal updates. - -## [0.23.7] - 2025-03-17 -### Changed -- Internal updates. - -## [0.23.6] - 2025-03-12 -### Changed -- Internal updates. - -## [0.23.5] - 2025-03-10 -### Changed -- Ensure check_valid_blocked_user handles error outcomes. [#42036] - -## [0.23.4] - 2025-02-24 -### Changed -- Update dependencies. [#39263] - -## [0.23.3] - 2025-02-03 -### Fixed -- Code: Remove extra params on function calls. [#41263] - -## [0.23.2] - 2025-01-20 -### Changed -- Code: Use function-style exit() and die() with a default status code of 0. [#41167] - -## [0.23.1] - 2024-11-25 -### Changed -- Updated dependencies. [#40286] - -## [0.23.0] - 2024-11-18 -### Removed -- General: Update minimum PHP version to 7.2. [#40147] - -## [0.22.3] - 2024-11-04 -### Added -- Enable test coverage. [#39961] - -## [0.22.2] - 2024-10-29 -### Changed -- Internal updates. [#39263] - -## [0.22.1] - 2024-10-17 -### Fixed -- WAF: Improve backwards compatibility for sites running outdated bootstrap scripts via standalone mode. [#39812] - -## [0.22.0] - 2024-10-14 -### Added -- WAF: Add new properties to the WAF feature's REST API endpoint. [#39511] - -### Fixed -- Improve backwards compatibility for sites running in standalone mode. [#39652] -- WAF: Reduce amount of classes autoloaded during standalone mode execution. [#38944] - -## [0.21.0] - 2024-10-07 -### Added -- Firewall Runtime: Added support for rule files to specify body parser type. [#39516] - -## [0.20.1] - 2024-10-01 -### Deprecated -- Added back public API as deprecated. [#39606] - -## [0.20.0] - 2024-09-30 -### Added -- Added Waf_Blocklog_Manager class [#35739] - -## [0.19.0] - 2024-09-23 -### Added -- Firewall: add support for CIDR ranges in IP lists. [#39425] - -## [0.18.5] - 2024-09-06 -### Changed -- Updated package dependencies. [#39253] - -### Fixed -- Ensure that request body is parsed correctly [#39262] - -## [0.18.4] - 2024-08-26 -### Changed -- Updated package dependencies. [#39004] - -## [0.18.3] - 2024-08-19 -### Changed -- Internal updates. - -## [0.18.2] - 2024-08-15 -### Fixed -- Fix incorrect next-version tokens in php `@since` and/or `@deprecated` docs. [#38869] - -## [0.18.1] - 2024-08-08 -### Security -- Parse request body when method used is not POST [#38621] - -### Added -- Brute Force Protection: Add `jetpack_has_login_ability` hook. [#38518] - -## [0.18.0] - 2024-08-01 -### Added -- Adds global statistics [#38388] - -### Fixed -- Fix global stats type check [#38634] - -## [0.17.0] - 2024-07-22 -### Added -- Added the ability to toggle IP block and allow lists individually. [#38184] - -## [0.16.10] - 2024-06-26 -### Changed -- Internal updates. - -## [0.16.9] - 2024-06-03 -### Changed -- Phab baseline file update. [#36968] - -## [0.16.8] - 2024-05-20 -### Changed -- Internal updates. - -## [0.16.7] - 2024-05-06 -### Changed -- Internal updates. - -## [0.16.6] - 2024-04-29 -### Changed -- Internal updates. - -## [0.16.5] - 2024-04-25 -### Changed -- Internal updates. - -## [0.16.4] - 2024-04-22 -### Changed -- Internal updates. - -## [0.16.3] - 2024-04-15 -### Security -- Improves handling of REQUEST_URI. [#36833] - -## [0.16.2] - 2024-04-08 -### Changed -- Internal updates. - -## [0.16.1] - 2024-03-25 -### Changed -- Internal updates. - -## [0.16.0] - 2024-03-22 -### Added -- Add data to WAF logs and add toggle for users to opt-in to share more data with us if needed. [#36377] - -## [0.15.2] - 2024-03-18 -### Changed -- Internal updates. - -## [0.15.1] - 2024-03-14 -### Changed -- Internal updates. - -## [0.15.0] - 2024-03-12 -### Added -- Add JSON parameter support to the Web Application Firewall. [#36169] - -## [0.14.2] - 2024-03-04 -### Fixed -- Fixed base64 transforms to better conform with the modsecurity runtime [#35693] - -## [0.14.1] - 2024-02-27 -### Changed -- Internal updates. - -## [0.14.0] - 2024-02-12 -### Added -- Add standalone mode status to WAF config [#34840] - -## [0.13.0] - 2024-02-05 -### Added -- Run the WAF on JN environments [#35341] - -## [0.12.4] - 2024-01-18 -### Fixed -- Optimize how the web application firewall checks for updates on admin screens. [#34820] - -## [0.12.3] - 2024-01-02 -### Changed -- Internal updates. - -## [0.12.2] - 2023-12-25 -### Changed -- Improve top-level WP-CLI command description [#34745] - -## [0.12.1] - 2023-11-21 - -## [0.12.0] - 2023-11-20 -### Changed -- Updated required PHP version to >= 7.0. [#34192] - -## [0.11.15] - 2023-11-14 - -## [0.11.14] - 2023-10-30 - -## [0.11.13] - 2023-10-10 -### Fixed -- Escape email address when output in HTML. [#33536] - -## [0.11.12] - 2023-09-28 -### Changed -- Minor internal updates. - -## [0.11.11] - 2023-09-19 - -- Minor internal updates. - -## [0.11.10] - 2023-09-11 -### Changed -- General: remove backwards-compatible functions now that package relies on WordPress 6.2. [#32772] - -## [0.11.9] - 2023-08-28 -### Changed -- Updated package dependencies. [#32605] - -## [0.11.8] - 2023-07-18 -### Changed -- Add support for running brute force protection in environments that otherwise do not support the WAF. [#31761] -- Minor performance improvements. [#31684] - -## [0.11.7] - 2023-07-17 -### Changed -- Add support for non-empty server https values. [#31688] - -## [0.11.6] - 2023-05-22 -### Added -- Add integration tests for unsupported environments [#30544] - -### Fixed -- Fix Brute force protection activation when WAF unset [#30544] -- Fix unavailable endpoint when WAF module is disabled [#30487] -- Multisite: avoid errors when the package is used in the Protect plugin instead of the Jetpack plugin. [#30767] - -## [0.11.5] - 2023-05-15 -### Changed -- Internal updates. - -## [0.11.4] - 2023-04-27 -### Added -- Fix hardblock issue if user only has Protect installed [#30278] - -## [0.11.3] - 2023-04-17 -### Fixed -- Fix brute force protection not initializing on atomic. [#30113] - -## [0.11.2] - 2023-04-10 -### Added -- Add Jetpack Autoloader package suggestion. [#29988] - -## [0.11.1] - 2023-04-03 -### Fixed -- Return early if we detect the older BFP implementation from the main plugin [#29794] - -## [0.11.0] - 2023-03-28 -### Added -- Added brute force protection to the WAF configuration REST API endpoints [#28401] -- Move the brute force protection module into the package. [#28401] - -### Changed -- Change "whitelist" to "allow list". [#28401] -- Move the brute force protection transient cleanup and shared functions to dedicated namespaced classes. [#28401] -- Use WAF IP allow list option in brute force protection feature. [#28401] - -## [0.10.2] - 2023-03-20 -### Changed -- Updated package dependencies. [#29480] - -## [0.10.1] - 2023-03-08 -### Changed -- Minor internal updates. - -## [0.10.0] - 2023-02-28 -### Added -- Added support for IP ranges in allow and block lists. [#29131] - -## [0.9.3] - 2023-02-20 -### Changed -- Minor internal updates. - -## [0.9.2] - 2023-02-15 -### Changed -- Minor internal updates. - -## [0.9.1] - 2023-02-13 -### Fixed -- Fix an update error that impacted sites using the WAF in standalone mode. [#28844] - -## [0.9.0] - 2023-01-25 -### Changed -- Change the web application firewall to run automatic and manual rules independently. [#27726] - -## [0.8.3] - 2023-01-11 -### Fixed -- Fixed the WAF package's PHP tests and Composer requirements [#28185] - -## [0.8.2] - 2023-01-09 -### Fixed -- Fix firewall activation hooks on first option updates. [#28234] - -## [0.8.1] - 2023-01-07 -### Changed -- Change directory location that stores firewall rules. [#28049] - -## [0.8.0] - 2022-12-27 -### Added -- Add file existance checks before requiring rule files in the WAF. [#28050] -- Disable Jetpack Firewall on unsupported environments. [#27939] - -## [0.7.2] - 2022-12-19 -### Fixed -- Fix the initialization of the firewall. [#27846] - -## [0.7.1] - 2022-12-06 -### Changed -- html_entity_decode filter now decodes single-quotes too, and uses a Unicode Replacement Character instead of returning empty string on invalid characters. [#27753] - -## [0.7.0] - 2022-12-05 -### Added -- Prepare package for use in the Jetpack Protect standalone plugin. [#27528] - -### Changed -- Updated package dependencies. [#27688] - -### Removed -- Remove has_rules_access plan check in favor of external alternatives [#27600] - -## [0.6.10] - 2022-11-28 -### Changed -- Updated package dependencies. [#27043] - -## [0.6.9] - 2022-11-01 -### Fixed -- Fix bug for cron event not generating IP rules. [#27215] - -## [0.6.8] - 2022-10-27 -### Fixed -- Fixes several invalid action callbacks. [#27106] - -## [0.6.7] - 2022-09-20 -### Changed -- Changing how we load and run the package to avoid actions.php [#24730] - -## [0.6.6] - 2022-09-08 -### Fixed -- Fixed exception namespace. [#25663] - -## [0.6.5] - 2022-07-26 -### Changed -- Updated package dependencies. [#25158] - -## [0.6.4] - 2022-07-12 -### Fixed -- Correct namespacing error. [#24993] - -## [0.6.3] - 2022-06-21 -### Changed -- Renaming master to trunk. [#24661] - -## [0.6.2] - 2022-06-06 -### Fixed -- Fix the hook we're using for run.php. - -## [0.6.1] - 2022-06-02 -### Removed -- Disable the WAF module on Atomic - -## [0.6.0] - 2022-05-18 -### Added -- Add checks for a killswitch define [#24247] -- Added endpoint to update rules on demand [#24327] -- handle share data option to decide if we should write to log file [#24218] - -### Fixed -- Allow the rules API to return 401 responses without throwing an exception. [#24153] -- fix bootstrap generation in cases file.php is not required yet [#24153] - -## [0.5.1] - 2022-05-04 -### Added -- Added a check to only run the firewall when the Jetpack module is enabled, a method to provide the bootstrap.php path, and a REST API endpoint to provide the firewall settings. [#23769] -- Connected the WAF UI to actually updating the IP block and allow lists when saving the settings. [#24124] - -### Fixed -- Fixed database logging [#24070] -- Fixed issue where code for the waf package was executed if the module was disabled [#24217] -- Fixed writing rules php files if the API request for getting up-to-date rules failes so that the internal functionality is kept in tact. [#24181] -- We now sanitize the output generated by blocked requests, and only report the rule ID in the header response. [#24058] - -## [0.5.0] - 2022-04-26 -### Added -- added cron to update rules -- Added WAF IP allow list and block list functionality. - -### Changed -- Added comment to ignore failing phpcs check -- PHPCS: Fix `WordPress.Security.ValidatedSanitizedInput` -- Updated package dependencies. - -## [0.4.0] - 2022-04-19 -### Added -- added logs when a request is blocked -- Generating rules now fetches them from the API. Also adds a few CLI commands. - -## [0.3.0] - 2022-04-12 -### Added -- Added hooks for generating the rules.php file, and improved functionality and class names. - -## [0.2.0] - 2022-04-06 -### Added -- Added Jetpack WAF standalone mode. - -### Fixed -- Fix normalizing nested array targets, like with query strings. - -## [0.1.1] - 2022-03-29 -### Fixed -- Fixed instance of normalizeHeaderName that wasn't renamed; fixed header parsing; removed unused compiler file. - -## 0.1.0 - 2022-02-16 -### Added -- Added executing the WAF as part of the Jetpack plugin. -- Added Initial version - -### Changed -- Core: do not ship .phpcs.dir.xml in production builds. - -[0.23.8]: https://github.com/Automattic/jetpack-waf/compare/v0.23.7...v0.23.8 -[0.23.7]: https://github.com/Automattic/jetpack-waf/compare/v0.23.6...v0.23.7 -[0.23.6]: https://github.com/Automattic/jetpack-waf/compare/v0.23.5...v0.23.6 -[0.23.5]: https://github.com/Automattic/jetpack-waf/compare/v0.23.4...v0.23.5 -[0.23.4]: https://github.com/Automattic/jetpack-waf/compare/v0.23.3...v0.23.4 -[0.23.3]: https://github.com/Automattic/jetpack-waf/compare/v0.23.2...v0.23.3 -[0.23.2]: https://github.com/Automattic/jetpack-waf/compare/v0.23.1...v0.23.2 -[0.23.1]: https://github.com/Automattic/jetpack-waf/compare/v0.23.0...v0.23.1 -[0.23.0]: https://github.com/Automattic/jetpack-waf/compare/v0.22.3...v0.23.0 -[0.22.3]: https://github.com/Automattic/jetpack-waf/compare/v0.22.2...v0.22.3 -[0.22.2]: https://github.com/Automattic/jetpack-waf/compare/v0.22.1...v0.22.2 -[0.22.1]: https://github.com/Automattic/jetpack-waf/compare/v0.22.0...v0.22.1 -[0.22.0]: https://github.com/Automattic/jetpack-waf/compare/v0.21.0...v0.22.0 -[0.21.0]: https://github.com/Automattic/jetpack-waf/compare/v0.20.1...v0.21.0 -[0.20.1]: https://github.com/Automattic/jetpack-waf/compare/v0.20.0...v0.20.1 -[0.20.0]: https://github.com/Automattic/jetpack-waf/compare/v0.19.0...v0.20.0 -[0.19.0]: https://github.com/Automattic/jetpack-waf/compare/v0.18.5...v0.19.0 -[0.18.5]: https://github.com/Automattic/jetpack-waf/compare/v0.18.4...v0.18.5 -[0.18.4]: https://github.com/Automattic/jetpack-waf/compare/v0.18.3...v0.18.4 -[0.18.3]: https://github.com/Automattic/jetpack-waf/compare/v0.18.2...v0.18.3 -[0.18.2]: https://github.com/Automattic/jetpack-waf/compare/v0.18.1...v0.18.2 -[0.18.1]: https://github.com/Automattic/jetpack-waf/compare/v0.18.0...v0.18.1 -[0.18.0]: https://github.com/Automattic/jetpack-waf/compare/v0.17.0...v0.18.0 -[0.17.0]: https://github.com/Automattic/jetpack-waf/compare/v0.16.10...v0.17.0 -[0.16.10]: https://github.com/Automattic/jetpack-waf/compare/v0.16.9...v0.16.10 -[0.16.9]: https://github.com/Automattic/jetpack-waf/compare/v0.16.8...v0.16.9 -[0.16.8]: https://github.com/Automattic/jetpack-waf/compare/v0.16.7...v0.16.8 -[0.16.7]: https://github.com/Automattic/jetpack-waf/compare/v0.16.6...v0.16.7 -[0.16.6]: https://github.com/Automattic/jetpack-waf/compare/v0.16.5...v0.16.6 -[0.16.5]: https://github.com/Automattic/jetpack-waf/compare/v0.16.4...v0.16.5 -[0.16.4]: https://github.com/Automattic/jetpack-waf/compare/v0.16.3...v0.16.4 -[0.16.3]: https://github.com/Automattic/jetpack-waf/compare/v0.16.2...v0.16.3 -[0.16.2]: https://github.com/Automattic/jetpack-waf/compare/v0.16.1...v0.16.2 -[0.16.1]: https://github.com/Automattic/jetpack-waf/compare/v0.16.0...v0.16.1 -[0.16.0]: https://github.com/Automattic/jetpack-waf/compare/v0.15.1...v0.16.0 -[0.15.2]: https://github.com/Automattic/jetpack-waf/compare/v0.15.1...v0.15.2 -[0.15.1]: https://github.com/Automattic/jetpack-waf/compare/v0.15.0...v0.15.1 -[0.15.0]: https://github.com/Automattic/jetpack-waf/compare/v0.14.2...v0.15.0 -[0.14.2]: https://github.com/Automattic/jetpack-waf/compare/v0.14.1...v0.14.2 -[0.14.1]: https://github.com/Automattic/jetpack-waf/compare/v0.14.0...v0.14.1 -[0.14.0]: https://github.com/Automattic/jetpack-waf/compare/v0.13.0...v0.14.0 -[0.13.0]: https://github.com/Automattic/jetpack-waf/compare/v0.12.4...v0.13.0 -[0.12.4]: https://github.com/Automattic/jetpack-waf/compare/v0.12.3...v0.12.4 -[0.12.3]: https://github.com/Automattic/jetpack-waf/compare/v0.12.2...v0.12.3 -[0.12.2]: https://github.com/Automattic/jetpack-waf/compare/v0.12.1...v0.12.2 -[0.12.1]: https://github.com/Automattic/jetpack-waf/compare/v0.12.0...v0.12.1 -[0.12.0]: https://github.com/Automattic/jetpack-waf/compare/v0.11.15...v0.12.0 -[0.11.15]: https://github.com/Automattic/jetpack-waf/compare/v0.11.14...v0.11.15 -[0.11.14]: https://github.com/Automattic/jetpack-waf/compare/v0.11.13...v0.11.14 -[0.11.13]: https://github.com/Automattic/jetpack-waf/compare/v0.11.12...v0.11.13 -[0.11.12]: https://github.com/Automattic/jetpack-waf/compare/v0.11.11...v0.11.12 -[0.11.11]: https://github.com/Automattic/jetpack-waf/compare/v0.11.10...v0.11.11 -[0.11.10]: https://github.com/Automattic/jetpack-waf/compare/v0.11.9...v0.11.10 -[0.11.9]: https://github.com/Automattic/jetpack-waf/compare/v0.11.8...v0.11.9 -[0.11.8]: https://github.com/Automattic/jetpack-waf/compare/v0.11.7...v0.11.8 -[0.11.7]: https://github.com/Automattic/jetpack-waf/compare/v0.11.6...v0.11.7 -[0.11.6]: https://github.com/Automattic/jetpack-waf/compare/v0.11.5...v0.11.6 -[0.11.5]: https://github.com/Automattic/jetpack-waf/compare/v0.11.4...v0.11.5 -[0.11.4]: https://github.com/Automattic/jetpack-waf/compare/v0.11.3...v0.11.4 -[0.11.3]: https://github.com/Automattic/jetpack-waf/compare/v0.11.2...v0.11.3 -[0.11.2]: https://github.com/Automattic/jetpack-waf/compare/v0.11.1...v0.11.2 -[0.11.1]: https://github.com/Automattic/jetpack-waf/compare/v0.11.0...v0.11.1 -[0.11.0]: https://github.com/Automattic/jetpack-waf/compare/v0.10.2...v0.11.0 -[0.10.2]: https://github.com/Automattic/jetpack-waf/compare/v0.10.1...v0.10.2 -[0.10.1]: https://github.com/Automattic/jetpack-waf/compare/v0.10.0...v0.10.1 -[0.10.0]: https://github.com/Automattic/jetpack-waf/compare/v0.9.3...v0.10.0 -[0.9.3]: https://github.com/Automattic/jetpack-waf/compare/v0.9.2...v0.9.3 -[0.9.2]: https://github.com/Automattic/jetpack-waf/compare/v0.9.1...v0.9.2 -[0.9.1]: https://github.com/Automattic/jetpack-waf/compare/v0.9.0...v0.9.1 -[0.9.0]: https://github.com/Automattic/jetpack-waf/compare/v0.8.3...v0.9.0 -[0.8.3]: https://github.com/Automattic/jetpack-waf/compare/v0.8.2...v0.8.3 -[0.8.2]: https://github.com/Automattic/jetpack-waf/compare/v0.8.1...v0.8.2 -[0.8.1]: https://github.com/Automattic/jetpack-waf/compare/v0.8.0...v0.8.1 -[0.8.0]: https://github.com/Automattic/jetpack-waf/compare/v0.7.2...v0.8.0 -[0.7.2]: https://github.com/Automattic/jetpack-waf/compare/v0.7.1...v0.7.2 -[0.7.1]: https://github.com/Automattic/jetpack-waf/compare/v0.7.0...v0.7.1 -[0.7.0]: https://github.com/Automattic/jetpack-waf/compare/v0.6.10...v0.7.0 -[0.6.10]: https://github.com/Automattic/jetpack-waf/compare/v0.6.9...v0.6.10 -[0.6.9]: https://github.com/Automattic/jetpack-waf/compare/v0.6.8...v0.6.9 -[0.6.8]: https://github.com/Automattic/jetpack-waf/compare/v0.6.7...v0.6.8 -[0.6.7]: https://github.com/Automattic/jetpack-waf/compare/v0.6.6...v0.6.7 -[0.6.6]: https://github.com/Automattic/jetpack-waf/compare/v0.6.5...v0.6.6 -[0.6.5]: https://github.com/Automattic/jetpack-waf/compare/v0.6.4...v0.6.5 -[0.6.4]: https://github.com/Automattic/jetpack-waf/compare/v0.6.3...v0.6.4 -[0.6.3]: https://github.com/Automattic/jetpack-waf/compare/v0.6.2...v0.6.3 -[0.6.2]: https://github.com/Automattic/jetpack-waf/compare/v0.6.1...v0.6.2 -[0.6.1]: https://github.com/Automattic/jetpack-waf/compare/v0.6.0...v0.6.1 -[0.6.0]: https://github.com/Automattic/jetpack-waf/compare/v0.5.1...v0.6.0 -[0.5.1]: https://github.com/Automattic/jetpack-waf/compare/v0.5.0...v0.5.1 -[0.5.0]: https://github.com/Automattic/jetpack-waf/compare/v0.4.0...v0.5.0 -[0.4.0]: https://github.com/Automattic/jetpack-waf/compare/v0.3.0...v0.4.0 -[0.3.0]: https://github.com/Automattic/jetpack-waf/compare/v0.2.0...v0.3.0 -[0.2.0]: https://github.com/Automattic/jetpack-waf/compare/v0.1.1...v0.2.0 -[0.1.1]: https://github.com/Automattic/jetpack-waf/compare/v0.1.0...v0.1.1 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/cli.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/cli.php deleted file mode 100644 index 54b71688..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/cli.php +++ /dev/null @@ -1,13 +0,0 @@ -=7.2", - "automattic/jetpack-connection": "^6.8.0", - "automattic/jetpack-constants": "^3.0.5", - "automattic/jetpack-ip": "^0.4.6", - "automattic/jetpack-status": "^5.0.10", - "wikimedia/aho-corasick": "^1.0" - }, - "require-dev": { - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-test-environment": "@dev", - "automattic/phpunit-select-config": "^1.0.1" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "autoload": { - "files": [ - "cli.php" - ], - "classmap": [ - "src/" - ] - }, - "scripts": { - "phpunit": [ - "phpunit-select-config tests/php/integration/phpunit.#.xml.dist --colors=always", - "phpunit-select-config tests/php/unit/phpunit.#.xml.dist --colors=always" - ], - "test-coverage": "tests/action-test-coverage.sh", - "test-coverage-html": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config tests/php/integration/phpunit.#.xml.dist --coverage-html ./coverage", - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config tests/php/unit/phpunit.#.xml.dist --coverage-html ./coverage" - ], - "test-php": [ - "@composer phpunit" - ] - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-waf", - "textdomain": "jetpack-waf", - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-waf/compare/v${old}...v${new}" - }, - "branch-alias": { - "dev-trunk": "0.23.x-dev" - } - }, - "config": { - "allow-plugins": { - "roots/wordpress-core-installer": true - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-blocked-login-page.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-blocked-login-page.php deleted file mode 100644 index 6931a2f6..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-blocked-login-page.php +++ /dev/null @@ -1,779 +0,0 @@ -can_send_recovery_emails = apply_filters( 'jetpack_protect_can_send_recovery_emails', true ); - $this->ip_address = $ip_address; - - add_filter( 'wp_authenticate_user', array( $this, 'check_valid_blocked_user' ), 10, 1 ); - add_filter( 'site_url', array( $this, 'add_args_to_login_post_url' ), 10, 3 ); - add_filter( 'network_site_url', array( $this, 'add_args_to_login_post_url' ), 10, 3 ); - add_filter( 'lostpassword_url', array( $this, 'add_args_to_lostpassword_url' ), 10, 2 ); - add_filter( 'login_url', array( $this, 'add_args_to_login_url' ), 10, 3 ); - add_filter( 'lostpassword_redirect', array( $this, 'add_args_to_lostpassword_redirect_url' ), 10, 1 ); - } - - /** - * Gets the URL that redirects to the support page on unblocking - * - * @since 8.5.0 - * - * @return string - */ - public static function get_help_url() { - return Redirect::get_url( 'jetpack-support-protect', array( 'anchor' => 'troubleshooting' ) ); - } - - /** - * Add arguments to lost password redirect url. - * - * @param string $url - the URL. - */ - public function add_args_to_lostpassword_redirect_url( $url ) { - if ( $this->valid_blocked_user_id ) { - $url = empty( $url ) ? wp_login_url() : $url; - $url = add_query_arg( - array( - 'validate_jetpack_protect_recovery' => isset( $_GET['validate_jetpack_protect_recovery'] ) ? filter_var( wp_unslash( $_GET['validate_jetpack_protect_recovery'] ) ) : null, // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nothing on the site is changed in response to this request. - 'user_id' => isset( $_GET['user_id'] ) ? (int) $_GET['user_id'] : null, // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nothing on the site is changed in response to this request. - 'checkemail' => 'confirm', - ), - $url - ); - } - - return $url; - } - - /** - * Add arguments to lost password redirect url. - * - * @param string $url - the URL. - * @param string $redirect - where to redirect to. - */ - public function add_args_to_lostpassword_url( $url, $redirect ) { - if ( $this->valid_blocked_user_id ) { - $args = array( - 'validate_jetpack_protect_recovery' => isset( $_GET['validate_jetpack_protect_recovery'] ) ? filter_var( wp_unslash( $_GET['validate_jetpack_protect_recovery'] ) ) : null, // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nothing on the site is changed in response to this request. - 'user_id' => isset( $_GET['user_id'] ) ? (int) $_GET['user_id'] : null, // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nothing on the site is changed in response to this request. - 'action' => 'lostpassword', - ); - if ( ! empty( $redirect ) ) { - $args['redirect_to'] = $redirect; - } - $url = add_query_arg( $args, $url ); - } - - return $url; - } - - /** - * Add arguments to login post url. - * - * @param string $url - the URL. - * @param string $path - the path. - * @param string $scheme -the scheme(?). - */ - public function add_args_to_login_post_url( $url, $path, $scheme ) { - if ( $this->valid_blocked_user_id && ( 'login_post' === $scheme || 'login' === $scheme ) ) { - $url = add_query_arg( - array( - 'validate_jetpack_protect_recovery' => isset( $_GET['validate_jetpack_protect_recovery'] ) ? filter_var( wp_unslash( $_GET['validate_jetpack_protect_recovery'] ) ) : null, // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nothing on the site is changed in response to this request. - 'user_id' => isset( $_GET['user_id'] ) ? (int) $_GET['user_id'] : null, // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nothing on the site is changed in response to this request. - ), - $url - ); - - } - - return $url; - } - - /** - * Add arguments to login post url. - * - * @param string $url - the URL. - * @param string $redirect - where we want to redirect to. - * @param string $force_reauth -if we're forcing reauthorization. - */ - public function add_args_to_login_url( $url, $redirect, $force_reauth ) { - if ( $this->valid_blocked_user_id ) { - $args = array( - 'validate_jetpack_protect_recovery' => isset( $_GET['validate_jetpack_protect_recovery'] ) ? filter_var( wp_unslash( $_GET['validate_jetpack_protect_recovery'] ) ) : null, // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nothing on the site is changed in response to this request. - 'user_id' => isset( $_GET['user_id'] ) ? (int) $_GET['user_id'] : null, // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nothing on the site is changed in response to this request. - ); - - if ( ! empty( $redirect ) ) { - $args['redirect_to'] = $redirect; - } - - if ( ! empty( $force_reauth ) ) { - $args['reauth'] = '1'; - } - $url = add_query_arg( $args, $url ); - } - - return $url; - } - - /** - * Check if user is blocked. - * - * @param WP_User|WP_Error $user - The user or error object if prior callback failed auth. - */ - public function check_valid_blocked_user( $user ) { - if ( is_wp_error( $user ) ) { - return $user; - } - - if ( $this->valid_blocked_user_id && $this->valid_blocked_user_id != $user->ID ) { // phpcs:ignore Universal.Operators.StrictComparisons.LooseNotEqual - return new WP_Error( 'invalid_recovery_token', __( 'The recovery token is not valid for this user.', 'jetpack-waf' ) ); - } - - return $user; - } - - /** - * Check if user is valid. - */ - public function is_blocked_user_valid() { - if ( ! $this->can_send_recovery_emails ) { - return false; - } - - if ( $this->valid_blocked_user_id ) { - return true; - } - - if ( ! isset( $_GET['validate_jetpack_protect_recovery'] ) || ! isset( $_GET['user_id'] ) ) { // phpcs:ignore: WordPress.Security.NonceVerification.Recommended -- no changes made if this isn't set. - return false; - } - - if ( ! $this->is_valid_protect_recovery_key( filter_var( wp_unslash( $_GET['validate_jetpack_protect_recovery'] ) ), (int) $_GET['user_id'] ) ) { // phpcs:ignore: WordPress.Security.NonceVerification.Recommended -- no changes made if this isn't set. - return false; - } - - $this->valid_blocked_user_id = (int) $_GET['user_id']; // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Nothing on the site is changed in response to this request. - - return true; - } - - /** - * Checks if recovery key is valid. - * - * @param string $key - they recovery key. - * @param string $user_id - the User ID. - */ - public function is_valid_protect_recovery_key( $key, $user_id ) { - - $path = sprintf( '/sites/%d/protect/recovery/confirm', Jetpack_Options::get_option( 'id' ) ); - $response = Client::wpcom_json_api_request_as_blog( - $path, - '1.1', - array( - 'method' => 'post', - ), - array( - 'token' => $key, - 'user_id' => $user_id, - 'ip' => $this->ip_address, - ) - ); - - $result = json_decode( wp_remote_retrieve_body( $response ) ); - - if ( is_wp_error( $result ) || empty( $result ) || isset( $result->error ) ) { - return false; - } - - return true; - } - - /** - * Check if we should render the recovery form. - */ - public function render_and_die() { - if ( ! $this->can_send_recovery_emails ) { - $this->render_blocked_login_message(); - - return; - } - - if ( isset( $_GET['validate_jetpack_protect_recovery'] ) && ! empty( $_GET['user_id'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- no site changes, just throws invalid token error. - $error = new WP_Error( 'invalid_token', __( "Oops, we couldn't validate the recovery token.", 'jetpack-waf' ) ); - $this->protect_die( $error ); - - return; - } - - if ( - isset( $_GET['jetpack-protect-recovery'] ) && - isset( $_POST['_wpnonce'] ) && - wp_verify_nonce( $_POST['_wpnonce'], 'bypass-protect' ) // phpcs:ignore WordPress.Security.ValidatedSanitizedInput -- WP Core doesn't unstrip or sanitize nonces either. - ) { - $this->process_recovery_email(); - - return; - } - - if ( isset( $_GET['loggedout'] ) && 'true' === $_GET['loggedout'] ) { - $this->protect_die( __( 'You successfully logged out.', 'jetpack-waf' ) ); - } - - $this->render_recovery_form(); - } - - /** - * Render the blocked login message. - */ - public function render_blocked_login_message() { - $this->protect_die( $this->get_html_blocked_login_message() ); - } - - /** - * Process sending a recovery email. - */ - public function process_recovery_email() { - $sent = $this->send_recovery_email(); - $show_recovery_form = true; - if ( is_wp_error( $sent ) ) { - if ( 'email_already_sent' === $sent->get_error_code() ) { - $show_recovery_form = false; - } - $this->protect_die( $sent, null, true, $show_recovery_form ); - } else { - $this->render_recovery_success(); - } - } - - /** - * Send the recovery form. - */ - public function send_recovery_email() { - $email = isset( $_POST['email'] ) ? wp_unslash( $_POST['email'] ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Missing, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- only triggered after bypass-protect nonce check is done, and sanitization is checked on the next line. - if ( sanitize_email( $email ) !== $email || ! is_email( $email ) ) { - return new WP_Error( 'invalid_email', __( "Oops, looks like that's not the right email address. Please try again!", 'jetpack-waf' ) ); - } - $user = get_user_by( 'email', trim( $email ) ); - - if ( ! $user ) { - return new WP_Error( 'invalid_user', __( "Oops, we couldn't find a user with that email. Please try again!", 'jetpack-waf' ) ); - } - $this->email_address = $email; - $path = sprintf( '/sites/%d/protect/recovery/request', Jetpack_Options::get_option( 'id' ) ); - - $response = Client::wpcom_json_api_request_as_blog( - $path, - '1.1', - array( - 'method' => 'post', - ), - array( - 'user_id' => $user->ID, - 'ip' => $this->ip_address, - ) - ); - - $code = wp_remote_retrieve_response_code( $response ); - $result = json_decode( wp_remote_retrieve_body( $response ) ); - - if ( self::HTTP_STATUS_CODE_TOO_MANY_REQUESTS === $code ) { - // translators: email address the recovery instructions were sent to. - return new WP_Error( 'email_already_sent', sprintf( __( 'Recovery instructions were sent to %s. Check your inbox!', 'jetpack-waf' ), esc_html( $this->email_address ) ) ); - } elseif ( is_wp_error( $result ) || empty( $result ) || isset( $result->error ) ) { - return new WP_Error( 'email_send_error', __( 'Oops, we were unable to send a recovery email. Try again.', 'jetpack-waf' ) ); - } - - return true; - } - - /** - * Prevent login by locking the login page. - * - * @param string $content - the content of the page. - * @param string $title - the page title. - * @param string $back_link - the back link. - * @param string $recovery_form - the recovery form. - */ - public function protect_die( $content, $title = null, $back_link = false, $recovery_form = false ) { - if ( empty( $title ) ) { - $title = __( 'Jetpack has locked your site\'s login page.', 'jetpack-waf' ); - } - if ( is_wp_error( $content ) ) { - $svg = ''; - $content = ' ' . $svg . $content->get_error_message() . ''; - } - $content = '

              ' . $content . '

              '; - - // If for some reason the login pop up box show up in the wp-admin. - if ( isset( $_GET['interim-login'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- no changes to the site itself, just rendering an error message. - $content = '' . $content; - } - $this->display_page( $title, $content, $back_link, $recovery_form ); - } - - /** - * Render the recovery form. - */ - public function render_recovery_form() { - $content = $this->get_html_blocked_login_message(); - $this->protect_die( $content, null, null, true ); - } - - /** - * Render the recovery instructions. - */ - public function render_recovery_success() { - // translators: the email address the recovery email was sent to. - $this->protect_die( sprintf( __( 'Recovery instructions were sent to %s. Check your inbox!', 'jetpack-waf' ), $this->email_address ) ); - } - - /** - * Get the HTML for the blocked login message. - */ - public function get_html_blocked_login_message() { - $icon = ''; - $ip = str_replace( 'http://', '', esc_url( 'http://' . $this->ip_address ) ); - return sprintf( - // translators: the IP address that was flagged. - __( '

              Your IP address %2$s has been flagged for potential security violations. You can unlock your login by sending yourself a special link via email. Learn More

              ', 'jetpack-waf' ), // phpcs:ignore WordPress.WP.I18n.NoHtmlWrappedStrings - $icon, - $ip, - esc_url( self::get_help_url() ) - ); - } - - /** - * Get the HTML recovery form. - */ - public function get_html_recovery_form() { - ob_start(); ?> -
              -
              - -

              - - -

              -
              -
              - - - - - > - - - - \n"; - } else { - echo "\n"; - } - ?> - <?php echo esc_html( $title ); ?> - - - > -

              -
              - - - - - - - - - - - - - - - - - - - - - - - - - - - get_html_recovery_form(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- content is escaped in the function. - } - ?> -
              - - - - get_transient( 'jpp_math_pass_' . sanitize_key( $_COOKIE['jpp_math_pass'] ) ); - - if ( ! $transient || $transient < 1 ) { - self::generate_math_page(); - } - return true; - } - - $ans = isset( $_POST['jetpack_protect_num'] ) ? (int) $_POST['jetpack_protect_num'] : ''; // phpcs:ignore WordPress.Security.NonceVerification.Missing -- answers are salted. - $correct_ans = isset( $_POST['jetpack_protect_answer'] ) ? sanitize_key( $_POST['jetpack_protect_answer'] ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Missing - - $time_window = self::time_window(); - $salt = get_site_option( 'jetpack_protect_key' ) . '|' . get_site_option( 'admin_email' ) . '|'; - $salted_ans_1 = hash_hmac( 'sha1', $ans, $salt . $time_window ); - $salted_ans_2 = hash_hmac( 'sha1', $ans, $salt . ( $time_window - 1 ) ); - - if ( ! $correct_ans || ! $ans ) { - self::generate_math_page(); - } elseif ( ! hash_equals( $salted_ans_1, $correct_ans ) && ! hash_equals( $salted_ans_2, $correct_ans ) ) { - wp_die( - wp_kses( - __( - 'You failed to correctly answer the math problem. This is used to combat spam when Jetpack’s Brute Force Attack Protection API is unavailable. Please use your browser’s back button to return to the login form, press the "refresh" button to generate a new math problem, and try to log in again.', - 'jetpack-waf' - ), - array( 'strong' => array() ) - ), - '', - array( 'response' => 401 ) - ); - } else { - return true; - } - } - - /** - * Creates an interim page to collect answers to a math captcha - * - * @param string $error - the error message. - * @return never - */ - public static function generate_math_page( $error = false ) { - ob_start(); - ?> -

              - -

              - - -
              - - -

              -
              - 401 ) - ); - } - - /** - * Generates the math page. - */ - public function process_generate_math_page() { - $ans = isset( $_POST['jetpack_protect_num'] ) ? (int) $_POST['jetpack_protect_num'] : ''; // phpcs:ignore WordPress.Security.NonceVerification.Missing -- answers are salted. - $correct_ans = isset( $_POST['jetpack_protect_answer'] ) ? sanitize_key( $_POST['jetpack_protect_answer'] ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Missing - - $time_window = self::time_window(); - $salt = get_site_option( 'jetpack_protect_key' ) . '|' . get_site_option( 'admin_email' ) . '|'; - $salted_ans_1 = hash_hmac( 'sha1', $ans, $salt . $time_window ); - $salted_ans_2 = hash_hmac( 'sha1', $ans, $salt . ( $time_window - 1 ) ); - - if ( ! hash_equals( $salted_ans_1, $correct_ans ) && ! hash_equals( $salted_ans_2, $correct_ans ) ) { - self::generate_math_page( true ); - } else { - $temp_pass = substr( hash_hmac( 'sha1', wp_rand( 1, 100000000 ), get_site_option( 'jetpack_protect_key' ) ), 5, 25 ); - - $brute_force_protection = Brute_Force_Protection::instance(); - $brute_force_protection->set_transient( 'jpp_math_pass_' . $temp_pass, 3, DAY_IN_SECONDS ); - setcookie( 'jpp_math_pass', $temp_pass, time() + DAY_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN, false, true ); - remove_action( 'login_form', array( $this, 'math_form' ) ); - return true; - } - } - - /** - * Requires a user to solve a simple equation. Added to any WordPress login form. - * - * @return VOID outputs html - */ - public static function math_form() { - // Check if jpp_math_pass cookie is set and it matches valid transient. - if ( isset( $_COOKIE['jpp_math_pass'] ) ) { - $brute_force_protection = Brute_Force_Protection::instance(); - $transient = $brute_force_protection->get_transient( 'jpp_math_pass_' . sanitize_key( $_COOKIE['jpp_math_pass'] ) ); - - if ( $transient && $transient > 0 ) { - return ''; - } - } - - $num1 = wp_rand( 0, 10 ); - $num2 = wp_rand( 1, 10 ); - $ans = $num1 + $num2; - - $time_window = self::time_window(); - $salt = get_site_option( 'jetpack_protect_key' ) . '|' . get_site_option( 'admin_email' ) . '|'; - $salted_ans = hash_hmac( 'sha1', $ans, $salt . $time_window ); - ?> -
              -

              - -

              -
              - - - -
              - array(), - ); - foreach ( $local_allow_list as $item ) { - if ( $item->range ) { - $formatted['local'][] = $item->range_low . ' - ' . $item->range_high; - } else { - $formatted['local'][] = $item->ip_address; - } - } - if ( is_multisite() && current_user_can( 'manage_network' ) ) { - $formatted['global'] = array(); - $global_allow_list = self::get_global_allow_list(); - if ( false === $global_allow_list ) { - // If the global allow list has never been set, check for a legacy option set prior to 3.6. - $global_allow_list = get_site_option( 'jetpack_protect_whitelist', array() ); - } - foreach ( $global_allow_list as $item ) { - if ( $item->range ) { - $formatted['global'][] = $item->range_low . ' - ' . $item->range_high; - } else { - $formatted['global'][] = $item->ip_address; - } - } - } - return $formatted; - } - - /** - * Gets the local Brute force protection allow list. - * - * @deprecated 0.11.0 Use get_local_allow_list() - */ - public static function get_local_whitelist() { - _deprecated_function( __METHOD__, 'waf-0.11.0', __CLASS__ . '::get_local_allow_list' ); - return self::get_local_allow_list(); - } - - /** - * Gets the local Brute force protection allow list. - * - * The 'local' part of the allow list only really applies to multisite installs, - * which can have a network wide allow list, as well as a local list that applies - * only to the current site. On single site installs, there will only be a local - * allow list. - * - * @return array A list of IP Address objects or an empty array - */ - public static function get_local_allow_list() { - $allow_list = get_option( Waf_Rules_Manager::IP_ALLOW_LIST_OPTION_NAME ); - if ( false === $allow_list ) { - // The local allow list has never been set. - if ( is_multisite() ) { - // On a multisite, we can check for a legacy site_option that existed prior to v 3.6, or default to an empty array. - $allow_list = get_site_option( 'jetpack_protect_whitelist', array() ); - } else { - // On a single site, we can just use an empty array. - $allow_list = array(); - } - } else { - $allow_list = IP_Utils::get_ip_addresses_from_string( $allow_list ); - $allow_list = array_map( - function ( $ip_address ) { - return self::create_ip_object( $ip_address ); - }, - $allow_list - ); - } - return $allow_list; - } - - /** - * Get the global, network-wide allow list. - * - * @deprecated 0.11.0 Use get_global_allow_list() - */ - public static function get_global_whitelist() { - _deprecated_function( __METHOD__, 'waf-0.11.0', __CLASS__ . '::get_global_allow_list' ); - return self::get_global_allow_list(); - } - - /** - * Get the global, network-wide allow list. - * - * It will revert to the legacy site_option if jetpack_protect_global_whitelist has never been set. - * - * @return array - */ - public static function get_global_allow_list() { - $allow_list = get_site_option( 'jetpack_protect_global_whitelist' ); - if ( false === $allow_list ) { - // The global allow list has never been set. Check for legacy site_option, or default to an empty array. - $allow_list = get_site_option( 'jetpack_protect_whitelist', array() ); - } - return $allow_list; - } - - /** - * Convert a string into an IP Address object. - * - * @param string $ip_address The IP Address to convert. - * @return object An IP Address object. - */ - private static function create_ip_object( $ip_address ) { - // Hyphenated range notation. - if ( strpos( $ip_address, '-' ) ) { - $ip_range_parts = explode( '-', $ip_address ); - return (object) array( - 'range' => true, - 'range_low' => trim( $ip_range_parts[0] ), - 'range_high' => trim( $ip_range_parts[1] ), - ); - } - - // CIDR notation. - if ( strpos( $ip_address, '/' ) !== false ) { - return (object) array( - 'range' => true, - 'range_low' => $ip_address, - 'range_high' => null, - ); - } - - // Single IP Address. - return (object) array( - 'range' => false, - 'ip_address' => $ip_address, - ); - } - - /** - * Save IP allow list. - * - * @deprecated 0.11.0 Use save_allow_list() - * - * @param mixed $allow_list IP allow list. - * @param bool $global (default: false) Global. - */ - public static function save_whitelist( $allow_list, $global = false ) { - _deprecated_function( __METHOD__, 'waf-0.11.0', __CLASS__ . '::save_allow_list' ); - return self::save_allow_list( $allow_list, $global ); - } - - /** - * Save IP allow list. - * - * @access public - * @param mixed $allow_list IP allow list. - * @param bool $global (default: false) Global. - * @return bool - */ - public static function save_allow_list( $allow_list, $global = false ) { - $allow_list_error = false; - $new_items = array(); - if ( ! is_array( $allow_list ) ) { - return new WP_Error( 'invalid_parameters', __( 'Expecting an array', 'jetpack-waf' ) ); - } - if ( $global && ! is_multisite() ) { - return new WP_Error( 'invalid_parameters', __( 'Cannot use global flag on non-multisites', 'jetpack-waf' ) ); - } - if ( $global && ! current_user_can( 'manage_network' ) ) { - return new WP_Error( 'permission_denied', __( 'Only super admins can edit the global allow list', 'jetpack-waf' ) ); - } - // Validate each item. - foreach ( $allow_list as $item ) { - $item = trim( $item ); - if ( empty( $item ) ) { - continue; - } - $new_item = self::create_ip_object( $item ); - if ( $new_item->range ) { - if ( ! filter_var( $new_item->range_low, FILTER_VALIDATE_IP ) || ! filter_var( $new_item->range_high, FILTER_VALIDATE_IP ) ) { - $allow_list_error = true; - break; - } - if ( ! IP_Utils::convert_ip_address( $new_item->range_low ) || ! IP_Utils::convert_ip_address( $new_item->range_high ) ) { - $allow_list_error = true; - break; - } - } else { - if ( ! filter_var( $new_item->ip_address, FILTER_VALIDATE_IP ) ) { - $allow_list_error = true; - break; - } - if ( ! IP_Utils::convert_ip_address( $new_item->ip_address ) ) { - $allow_list_error = true; - break; - } - } - $new_items[] = $new_item; - } // End item loop. - if ( ! empty( $allow_list_error ) ) { - return new WP_Error( 'invalid_ip', __( 'One of your IP addresses was not valid.', 'jetpack-waf' ) ); - } - if ( $global ) { - update_site_option( 'jetpack_protect_global_whitelist', $new_items ); - // Once a user has saved their global allow list, we can permanently remove the legacy option. - delete_site_option( 'jetpack_protect_whitelist' ); - } else { - $new_items = array_map( - function ( $item ) { - if ( $item->range ) { - return $item->range_low . '-' . $item->range_high; - } - return $item->ip_address; - }, - $new_items - ); - update_option( Waf_Rules_Manager::IP_ALLOW_LIST_OPTION_NAME, implode( ' ', $new_items ) ); - } - return true; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-transient-cleanup.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-transient-cleanup.php deleted file mode 100644 index ebd79e03..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-transient-cleanup.php +++ /dev/null @@ -1,63 +0,0 @@ - time() || $older_than_time < 1 ) { - return false; - } - $sql = $wpdb->prepare( - // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders.LikeWildcardsInQuery - "SELECT REPLACE(option_name, '_transient_timeout_jpp_', '') AS transient_name FROM {$wpdb->options} WHERE option_name LIKE '\_transient\_timeout\_jpp\__%%' AND option_value < %d", - $older_than_time - ); - $transients = $wpdb->get_col( $sql ); // phpcs:ignore WordPress.DB -- $sql is prepared above. - $options_names = array(); - foreach ( $transients as $transient ) { - $options_names[] = '_transient_jpp_' . $transient; - $options_names[] = '_transient_timeout_jpp_' . $transient; - } - if ( $options_names ) { - $option_names_string = implode( ', ', array_fill( 0, count( $options_names ), '%s' ) ); - $result = $wpdb->query( // phpcs:ignore WordPress.DB.DirectDatabaseQuery - $wpdb->prepare( - "DELETE FROM {$wpdb->options} WHERE option_name IN ($option_names_string)", // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare -- the placeholders are set above. - $options_names - ) - ); - if ( ! $result ) { - return false; - } - } - } - - /** - * Jetpack Purge Transients Activation. - * - * @access public - * @return void - */ - public static function jp_purge_transients_activation() { - if ( ! wp_next_scheduled( 'jp_purge_transients_cron' ) ) { - wp_schedule_event( time(), 'daily', 'jp_purge_transients_cron' ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-brute-force-protection.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-brute-force-protection.php deleted file mode 100644 index b91161d3..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-brute-force-protection.php +++ /dev/null @@ -1,1175 +0,0 @@ -is_connected() ) { - global $pagenow; - $brute_force_protection = self::instance(); - - if ( isset( $pagenow ) && 'wp-login.php' === $pagenow ) { - $brute_force_protection->check_login_ability(); - } - } - } - - /** - * On module activation, try to get an api key - */ - public function on_activation() { - if ( is_multisite() && is_main_site() && get_site_option( 'jetpack_protect_active', 0 ) == 0 ) { // phpcs:ignore Universal.Operators.StrictComparisons.LooseEqual - update_site_option( 'jetpack_protect_active', 1 ); - } - - update_site_option( 'jetpack_protect_activating', 'activating' ); - - // Get BruteProtect's counter number. - $this->protect_call( 'check_key' ); - } - - /** - * On module deactivation, unset protect_active - */ - public function on_deactivation() { - if ( is_multisite() && is_main_site() ) { - update_site_option( 'jetpack_protect_active', 0 ); - } - } - - /** - * Determines if the brute force protection module is enabled on the site. - * - * @return bool - */ - public static function is_enabled() { - return ( new Modules() )->is_active( 'protect' ); - } - - /** - * Enables the brute force protection module. - * - * @return bool - */ - public static function enable() { - // Return true if already enabled. - if ( self::is_enabled() ) { - return true; - } - return ( new Modules() )->activate( 'protect', false, false ); - } - - /** - * Disables the brute force protection module. - * - * @return bool - */ - public static function disable() { - // Return true if already disabled. - if ( ! self::is_enabled() ) { - return true; - } - return ( new Modules() )->deactivate( 'protect' ); - } - - /** - * Get the protect key, - */ - public function maybe_get_protect_key() { - if ( get_site_option( 'jetpack_protect_activating', false ) && ! get_site_option( 'jetpack_protect_key', false ) ) { - $key = $this->get_protect_key(); - delete_site_option( 'jetpack_protect_activating' ); - return $key; - } - - return get_site_option( 'jetpack_protect_key' ); - } - - /** - * Sends a "check_key" API call once a day. This call allows us to track IP-related - * headers for this server via the Protect API, in order to better identify the source - * IP for login attempts - * - * @param bool $force - if we're forcing the request. - */ - public function maybe_update_headers( $force = false ) { - $updated_recently = $this->get_transient( 'jpp_headers_updated_recently' ); - - if ( ! $force ) { - if ( isset( $_GET['protect_update_headers'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- this doesn't change anything, just forces the once-a-day check to run via force if set. - $force = true; - } - } - - // check that current user is admin so we prevent a lower level user from adding - // a trusted header, allowing them to brute force an admin account. - if ( ( $updated_recently && ! $force ) || ! current_user_can( 'update_plugins' ) ) { - return; - } - - $response = self::protect_call( 'check_key' ); - $this->set_transient( 'jpp_headers_updated_recently', 1, DAY_IN_SECONDS ); - - if ( isset( $response['msg'] ) && $response['msg'] ) { - update_site_option( 'trusted_ip_header', json_decode( $response['msg'] ) ); - } - } - - /** - * Handle displaying a security warning. - */ - public function maybe_display_security_warning() { - if ( is_multisite() && current_user_can( 'manage_network' ) ) { - if ( ! function_exists( 'is_plugin_active_for_network' ) ) { - require_once ABSPATH . '/wp-admin/includes/plugin.php'; - } - - // This warning is only relevant if either Jetpack or Jetpack Protect is active. - if ( defined( 'JETPACK__PLUGIN_FILE' ) ) { - $plugin_root_file = JETPACK__PLUGIN_FILE; - } elseif ( defined( 'JETPACK_PROTECT_ROOT_FILE' ) ) { - $plugin_root_file = JETPACK_PROTECT_ROOT_FILE; - } else { - return; - } - - if ( ! is_plugin_active_for_network( plugin_basename( $plugin_root_file ) ) ) { - add_action( 'load-index.php', array( $this, 'prepare_jetpack_protect_multisite_notice' ) ); - add_action( 'wp_ajax_jetpack-protect-dismiss-multisite-banner', array( $this, 'ajax_dismiss_handler' ) ); - } - } - } - - /** - * Handles preparing the multisite notice. - */ - public function prepare_jetpack_protect_multisite_notice() { - $dismissed = get_site_option( 'jetpack_dismissed_protect_multisite_banner' ); - if ( $dismissed ) { - return; - } - - add_action( 'admin_notices', array( $this, 'admin_jetpack_manage_notice' ) ); - } - - /** - * Handle dismissing the multisite banner. - */ - public function ajax_dismiss_handler() { - check_ajax_referer( 'jetpack_protect_multisite_banner_opt_out' ); - - if ( ! current_user_can( 'manage_network' ) ) { - wp_send_json_error( new WP_Error( 'insufficient_permissions' ) ); - } - - update_site_option( 'jetpack_dismissed_protect_multisite_banner', true ); - - wp_send_json_success(); - } - - /** - * Displays a warning about Brute Force Protection's network activation requirement. - * Attaches some custom JS to Core's `is-dismissible` UI to save the dismissed state. - */ - public function admin_jetpack_manage_notice() { - ?> -
              -

              - -

              - -

              - -

              - - - - - - -

              -
              - - api_key_error = __( 'Your main blog is not connected to WordPress.com. Please connect to get an API key.', 'jetpack-waf' ); - - return false; - } - - $request = array( - 'jetpack_blog_id' => $protect_blog_id, - 'bruteprotect_api_key' => get_site_option( 'bruteprotect_api_key' ), - 'multisite' => '0', - ); - - // Send the number of blogs on the network if we are on multisite. - if ( is_multisite() ) { - $request['multisite'] = get_blog_count(); - if ( ! $request['multisite'] ) { - global $wpdb; - $request['multisite'] = $wpdb->get_var( "SELECT COUNT(blog_id) as c FROM $wpdb->blogs WHERE spam = '0' AND deleted = '0' and archived = '0'" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery - } - } - - // Request the key. - $xml = new Jetpack_IXR_Client(); - $xml->query( 'jetpack.protect.requestKey', $request ); - - // Hmm, can't talk to wordpress.com. - if ( $xml->isError() ) { - $code = $xml->getErrorCode(); - $message = $xml->getErrorMessage(); - // Translators: The xml error code, and the xml error message. - $this->api_key_error = sprintf( __( 'Error connecting to WordPress.com. Code: %1$s, %2$s', 'jetpack-waf' ), $code, $message ); - - return false; - } - - $response = $xml->getResponse(); - - // Hmm, can't talk to the protect servers ( api.bruteprotect.com ). - if ( ! isset( $response['data'] ) ) { - $this->api_key_error = __( 'No reply from Jetpack servers', 'jetpack-waf' ); - - return false; - } - - // There was an issue generating the key. - if ( empty( $response['success'] ) ) { - $this->api_key_error = $response['data']; - - return false; - } - - // Key generation successful! - $active_plugins = self::get_active_plugins(); - - // We only want to deactivate BruteProtect if we successfully get a key. - if ( in_array( 'bruteprotect/bruteprotect.php', $active_plugins, true ) ) { - self::deactivate_plugin( 'bruteprotect/bruteprotect.php', 'BruteProtect' ); - } - - $key = $response['data']; - update_site_option( 'jetpack_protect_key', $key ); - - return $key; - } - - /** - * Called via WP action wp_login_failed to log failed attempt with the api - * - * Fires custom, plugable action jpp_log_failed_attempt with the IP - * - * @param string $login_user - the user attempting to log in. - * @return void - */ - public function log_failed_attempt( $login_user = null ) { - - /** - * Fires before every failed login attempt. - * - * @module protect - * - * @since 3.4.0 - * - * @param array Information about failed login attempt - * [ - * 'login' => (string) Username or email used in failed login attempt - * ] - */ - do_action( 'jpp_log_failed_attempt', array( 'login' => $login_user ) ); - - if ( isset( $_COOKIE['jpp_math_pass'] ) ) { - - $transient = $this->get_transient( 'jpp_math_pass_' . sanitize_key( $_COOKIE['jpp_math_pass'] ) ); - --$transient; - - if ( ! $transient || $transient < 1 ) { - $this->delete_transient( 'jpp_math_pass_' . sanitize_key( $_COOKIE['jpp_math_pass'] ) ); - setcookie( 'jpp_math_pass', 0, time() - DAY_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN, false, true ); - } else { - $this->set_transient( 'jpp_math_pass_' . sanitize_key( $_COOKIE['jpp_math_pass'] ), $transient, DAY_IN_SECONDS ); - } - } - $this->protect_call( 'failed_attempt' ); - } - - /** - * Set up the Brute Force Protection configuration page - */ - public function modules_loaded() { - add_filter( 'jetpack_module_configurable_protect', '__return_true' ); - } - - /** - * Logs a successful login back to our servers, this allows us to make sure we're not blocking - * a busy IP that has a lot of good logins along with some forgotten passwords. Also saves current user's ip - * to the ip address allow list - * - * @param string $user_login - the user loggign in. - * @param string $user - the user. - */ - public function log_successful_login( $user_login, $user = null ) { - if ( ! $user ) { // For do_action( 'wp_login' ) calls that lacked passing the 2nd arg. - $user = get_user_by( 'login', $user_login ); - } - - $this->protect_call( 'successful_login', array( 'roles' => $user->roles ) ); - } - - /** - * Checks for loginability BEFORE authentication so that bots don't get to go around the log in form. - * - * If we are using our math fallback, authenticate via math-fallback.php - * - * @param string $user - the user. - * @param string $username - the username. - * @param string $password - the password. - * - * @return string $user - */ - public function check_preauth( $user = 'Not Used By Protect', $username = 'Not Used By Protect', $password = 'Not Used By Protect' ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - $allow_login = $this->check_login_ability( true ); - $use_math = $this->get_transient( 'brute_use_math' ); - - if ( ! $allow_login ) { - $this->block_with_math(); - } - - if ( ( 1 == $use_math || 1 == $this->block_login_with_math ) && isset( $_POST['log'] ) ) { // phpcs:ignore Universal.Operators.StrictComparisons.LooseEqual, WordPress.Security.NonceVerification.Missing -- POST request just determines if we use math authentication. - - Brute_Force_Protection_Math_Authenticate::math_authenticate(); - } - - return $user; - } - - /** - * Get all IP headers so that we can process on our server... - * - * @return array - */ - public function get_headers() { - $output = array(); - $ip_related_headers = array( - 'GD_PHP_HANDLER', - 'HTTP_AKAMAI_ORIGIN_HOP', - 'HTTP_CF_CONNECTING_IP', - 'HTTP_CLIENT_IP', - 'HTTP_FASTLY_CLIENT_IP', - 'HTTP_FORWARDED', - 'HTTP_FORWARDED_FOR', - 'HTTP_INCAP_CLIENT_IP', - 'HTTP_TRUE_CLIENT_IP', - 'HTTP_X_CLIENTIP', - 'HTTP_X_CLUSTER_CLIENT_IP', - 'HTTP_X_FORWARDED', - 'HTTP_X_FORWARDED_FOR', - 'HTTP_X_IP_TRAIL', - 'HTTP_X_REAL_IP', - 'HTTP_X_VARNISH', - 'REMOTE_ADDR', - ); - - foreach ( $ip_related_headers as $header ) { - if ( ! empty( $_SERVER[ $header ] ) ) { - $output[ $header ] = wp_unslash( $_SERVER[ $header ] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized - } - } - - return $output; - } - - /** - * Whether or not the IP allow list is enabled. - * - * @return bool - */ - public static function ip_allow_list_enabled() { - return get_option( Waf_Rules_Manager::IP_ALLOW_LIST_ENABLED_OPTION_NAME, true ); - } - - /** - * Checks if the IP address is in the allow list. - * - * @deprecated 0.11.0 Use ip_is_allowed() - * - * @param string $ip - the IP address. - */ - public static function ip_is_whitelisted( $ip ) { - _deprecated_function( __METHOD__, 'waf-0.11.0', __CLASS__ . '::ip_is_allowed' ); - return self::ip_is_allowed( $ip ); - } - - /** - * Checks if the IP address is in the allow list. - * - * @param string $ip - the IP address. - * - * @return bool - */ - public function ip_is_allowed( $ip ) { - // If we found an exact match in wp-config. - if ( defined( 'JETPACK_IP_ADDRESS_OK' ) && JETPACK_IP_ADDRESS_OK === $ip ) { - return true; - } - - // Allow list must be enabled. - if ( ! $this->ip_allow_list_enabled() ) { - return false; - } - - $allow_list = Brute_Force_Protection_Shared_Functions::get_local_allow_list(); - - if ( is_multisite() ) { - $allow_list = array_merge( $allow_list, get_site_option( 'jetpack_protect_global_whitelist', array() ) ); - } - - if ( ! empty( $allow_list ) ) : - foreach ( $allow_list as $item ) : - // If the IPs are an exact match. - if ( ! $item->range && isset( $item->ip_address ) && $item->ip_address === $ip ) { - return true; - } - - if ( $item->range && isset( $item->range_low ) && isset( $item->range_high ) ) { - if ( IP_Utils::ip_address_is_in_range( $ip, $item->range_low, $item->range_high ) ) { - return true; - } - } - endforeach; - endif; - - return false; - } - - /** - * Checks the status for a given IP. API results are cached as transients - * - * @param bool $preauth - Whether or not we are checking prior to authorization. - * - * @return bool Either returns true, fires $this->kill_login, or includes a math fallback and returns false - */ - public function check_login_ability( $preauth = false ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable - - /** - * JETPACK_ALWAYS_PROTECT_LOGIN will always disable the login page, and use a page provided by Jetpack. - */ - if ( Constants::is_true( 'JETPACK_ALWAYS_PROTECT_LOGIN' ) ) { - $this->kill_login(); - } - - if ( $this->is_current_ip_allowed() ) { - return true; - } - - $status = $this->get_cached_status(); - - if ( empty( $status ) ) { - // If we've reached this point, this means that the IP isn't cached. - // Now we check with the Protect API to see if we should allow login. - $response = $this->protect_call( $action = 'check_ip' ); // phpcs:ignore Squiz.PHP.DisallowMultipleAssignments.Found - - if ( isset( $response['math'] ) && ! function_exists( 'brute_math_authenticate' ) ) { - new Brute_Force_Protection_Math_Authenticate(); - - return false; - } - - $status = $response['status']; - } - - if ( 'blocked' === $status ) { - $this->block_with_math(); - } - - if ( 'blocked-hard' === $status ) { - $this->kill_login(); - } - - return true; - } - - /** - * Check if the user's IP is in the allow list. - * - * @deprecated 0.11.0 Use is_current_ip_allowed() - */ - public static function is_current_ip_whitelisted() { - _deprecated_function( __METHOD__, 'waf-0.11.0', __CLASS__ . '::is_current_ip_allowed' ); - return self::is_current_ip_allowed(); - } - - /** - * Check if the user's IP is in the allow list. - */ - public function is_current_ip_allowed() { - $ip = IP_Utils::get_ip(); - - // Server is misconfigured and we can't get an IP. - if ( ! $ip ) { - self::disable(); - ob_start(); - ( new CookieState() )->state( 'message', 'protect_misconfigured_ip' ); - ob_end_clean(); - return true; - } - - /** - * Short-circuit check_login_ability. - * - * If there is an alternate way to validate the current IP such as - * a hard-coded list of IP addresses, we can short-circuit the rest - * of the login ability checks and return true here. - * - * @module protect - * - * @since 4.4.0 - * - * @param bool false Should we allow all logins for the current ip? Default: false - */ - if ( apply_filters( 'jpp_allow_login', false, $ip ) ) { - return true; - } - - if ( IP_Utils::ip_is_private( $ip ) ) { - return true; - } - - if ( $this->ip_is_allowed( $ip ) ) { - return true; - } - } - - /** - * Check if someone is able to login based on IP. - */ - public function has_login_ability() { - if ( $this->is_current_ip_allowed() ) { - return true; - } - $status = $this->get_cached_status(); - if ( empty( $status ) || 'ok' === $status ) { - return true; - } - return false; - } - - /** - * Check the status of the cached transient. - */ - public function get_cached_status() { - $transient_name = $this->get_transient_name(); - $value = $this->get_transient( $transient_name ); - if ( isset( $value['status'] ) ) { - return $value['status']; - } - return ''; - } - - /** - * Check if we need to block with a math question to continue logging in. - */ - public function block_with_math() { - /** - * By default, Protect will allow a user who has been blocked for too - * many failed logins to start answering math questions to continue logging in - * - * For added security, you can disable this. - * - * @module protect - * - * @since 3.6.0 - * - * @param bool Whether to allow math for blocked users or not. - */ - - $this->block_login_with_math = 1; - /** - * Allow Math fallback for blocked IPs. - * - * @module protect - * - * @since 3.6.0 - * - * @param bool true Should we fallback to the Math questions when an IP is blocked. Default to true. - */ - $allow_math_fallback_on_fail = apply_filters( 'jpp_use_captcha_when_blocked', true ); - if ( ! $allow_math_fallback_on_fail ) { - $this->kill_login(); - } - - new Brute_Force_Protection_Math_Authenticate(); - - return false; - } - - /** - * Kill a login attempt - */ - public function kill_login() { - if ( - isset( $_GET['action'] ) && isset( $_GET['_wpnonce'] ) && - 'logout' === $_GET['action'] && - wp_verify_nonce( $_GET['_wpnonce'], 'log-out' ) && // phpcs:ignore WordPress.Security.ValidatedSanitizedInput - wp_get_current_user() - - ) { - // Allow users to logout. - return; - } - - $ip = IP_Utils::get_ip(); - /** - * Fires before every killed login. - * - * @module protect - * - * @since 3.4.0 - * - * @param string $ip IP flagged by Protect. - */ - do_action( 'jpp_kill_login', $ip ); - - if ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST ) { - // translators: variable is the IP address that was flagged. - $die_string = sprintf( __( 'Your IP (%1$s) has been flagged for potential security violations.', 'jetpack-waf' ), str_replace( 'http://', '', esc_url( 'http://' . $ip ) ) ); - wp_die( - $die_string, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- esc_url used when forming string. - esc_html__( 'Login Blocked by Jetpack', 'jetpack-waf' ), - array( 'response' => 403 ) - ); - } - - $blocked_login_page = Brute_Force_Protection_Blocked_Login_Page::instance( $ip ); - - if ( $blocked_login_page->is_blocked_user_valid() ) { - return; - } - - $blocked_login_page->render_and_die(); - } - - /** - * Checks if the protect API call has failed, and if so initiates the math captcha fallback. - */ - public function check_use_math() { - $use_math = $this->get_transient( 'brute_use_math' ); - if ( $use_math ) { - new Brute_Force_Protection_Math_Authenticate(); - } - } - - /** - * If we're in a multisite network, return the blog ID of the primary blog - * - * @return int - */ - public function get_main_blog_id() { - if ( ! is_multisite() ) { - return false; - } - - global $current_site; - $primary_blog_id = $current_site->blog_id; - - return $primary_blog_id; - } - - /** - * Get jetpack blog id, or the jetpack blog id of the main blog in the main network - * - * @return int - */ - public function get_main_blog_jetpack_id() { - if ( ! is_main_site() ) { - switch_to_blog( $this->get_main_blog_id() ); - $id = Jetpack_Options::get_option( 'id', false ); - restore_current_blog(); - } else { - $id = Jetpack_Options::get_option( 'id' ); - } - - return $id; - } - - /** - * Checks the API key. - */ - public function check_api_key() { - $response = $this->protect_call( 'check_key' ); - - if ( isset( $response['ckval'] ) ) { - return true; - } - - if ( isset( $response['error'] ) ) { - - if ( 'Invalid API Key' === $response['error'] ) { - $this->api_key_error = __( 'Your API key is invalid', 'jetpack-waf' ); - } - - if ( 'API Key Required' === $response['error'] ) { - $this->api_key_error = __( 'No API key', 'jetpack-waf' ); - } - } - - $this->api_key_error = __( 'There was an error contacting Jetpack servers.', 'jetpack-waf' ); - - return false; - } - - /** - * Calls over to the api using wp_remote_post - * - * @param string $action - 'check_ip', 'check_key', or 'failed_attempt'. - * @param array $request - Any custom data to post to the api. - * - * @return array - */ - public function protect_call( $action = 'check_ip', $request = array() ) { - global $wp_version; - - $api_key = $this->maybe_get_protect_key(); - - $user_agent = "WordPress/{$wp_version}"; - - $request['action'] = $action; - $request['ip'] = IP_Utils::get_ip(); - $request['host'] = $this->get_local_host(); - $request['headers'] = wp_json_encode( $this->get_headers() ); - $request['jetpack_version'] = null; - $request['wordpress_version'] = (string) $wp_version; - $request['api_key'] = $api_key; - $request['multisite'] = '0'; - - if ( defined( 'JETPACK__VERSION' ) ) { - $request['jetpack_version'] = constant( 'JETPACK__VERSION' ); - $user_agent .= ' | Jetpack/' . constant( 'JETPACK__VERSION' ); - } - - if ( defined( 'JETPACK_PROTECT_VERSION' ) && ! defined( 'JETPACK__VERSION' ) ) { - $request['jetpack_version'] = '12.1'; - $user_agent .= ' | JetpackProtect/' . constant( 'JETPACK_PROTECT_VERSION' ); - } - - if ( is_multisite() ) { - $request['multisite'] = get_blog_count(); - } - - /** - * Filter controls maximum timeout in waiting for reponse from Protect servers. - * - * @module protect - * - * @since 4.0.4 - * - * @param int $timeout Max time (in seconds) to wait for a response. - */ - $timeout = apply_filters( 'jetpack_protect_connect_timeout', 30 ); - - $args = array( - 'body' => $request, - 'user-agent' => $user_agent, - 'httpversion' => '1.0', - 'timeout' => absint( $timeout ), - ); - - Waf_Constants::define_brute_force_api_host(); - - $response_json = wp_remote_post( JETPACK_PROTECT__API_HOST, $args ); - $this->last_response_raw = $response_json; - - $transient_name = $this->get_transient_name(); - $this->delete_transient( $transient_name ); - - if ( is_array( $response_json ) ) { - $response = json_decode( $response_json['body'], true ); - } - - if ( isset( $response['blocked_attempts'] ) && $response['blocked_attempts'] ) { - update_site_option( 'jetpack_protect_blocked_attempts', $response['blocked_attempts'] ); - } - - if ( isset( $response['status'] ) && ! isset( $response['error'] ) ) { - $response['expire'] = time() + $response['seconds_remaining']; - $this->set_transient( $transient_name, $response, $response['seconds_remaining'] ); - $this->delete_transient( 'brute_use_math' ); - } else { // Fallback to Math Captcha if no response from API host. - $this->set_transient( 'brute_use_math', 1, 600 ); - $response['status'] = 'ok'; - $response['math'] = true; - } - - if ( isset( $response['error'] ) ) { - update_site_option( 'jetpack_protect_error', $response['error'] ); - } else { - delete_site_option( 'jetpack_protect_error' ); - } - - return $response; - } - - /** - * Gets the transient name. - */ - public function get_transient_name() { - $headers = $this->get_headers(); - $header_hash = md5( wp_json_encode( $headers ) ); - - return 'jpp_li_' . $header_hash; - } - - /** - * Wrapper for WordPress set_transient function, our version sets - * the transient on the main site in the network if this is a multisite network - * - * We do it this way (instead of set_site_transient) because of an issue where - * sitewide transients are always autoloaded - * https://core.trac.wordpress.org/ticket/22846 - * - * @param string $transient Transient name. Expected to not be SQL-escaped. Must be - * 45 characters or fewer in length. - * @param mixed $value Transient value. Must be serializable if non-scalar. - * Expected to not be SQL-escaped. - * @param int $expiration Optional. Time until expiration in seconds. Default 0. - * - * @return bool False if value was not set and true if value was set. - */ - public function set_transient( $transient, $value, $expiration ) { - if ( is_multisite() && ! is_main_site() ) { - switch_to_blog( $this->get_main_blog_id() ); - $return = set_transient( $transient, $value, $expiration ); - restore_current_blog(); - - return $return; - } - - return set_transient( $transient, $value, $expiration ); - } - - /** - * Wrapper for WordPress delete_transient function, our version deletes - * the transient on the main site in the network if this is a multisite network - * - * @param string $transient Transient name. Expected to not be SQL-escaped. - * - * @return bool true if successful, false otherwise - */ - public function delete_transient( $transient ) { - if ( is_multisite() && ! is_main_site() ) { - switch_to_blog( $this->get_main_blog_id() ); - $return = delete_transient( $transient ); - restore_current_blog(); - - return $return; - } - - return delete_transient( $transient ); - } - - /** - * Wrapper for WordPress get_transient function, our version gets - * the transient on the main site in the network if this is a multisite network - * - * @param string $transient Transient name. Expected to not be SQL-escaped. - * - * @return mixed Value of transient. - */ - public function get_transient( $transient ) { - if ( is_multisite() && ! is_main_site() ) { - switch_to_blog( $this->get_main_blog_id() ); - $return = get_transient( $transient ); - restore_current_blog(); - - return $return; - } - - return get_transient( $transient ); - } - - /** - * Returns the local host. - */ - public function get_local_host() { - if ( isset( $this->local_host ) ) { - return $this->local_host; - } - - $uri = 'http://' . strtolower( isset( $_SERVER['HTTP_HOST'] ) ? filter_var( wp_unslash( $_SERVER['HTTP_HOST'] ) ) : '' ); - - if ( is_multisite() ) { - $uri = network_home_url(); - } - - $uridata = wp_parse_url( $uri ); - - $domain = $uridata['host']; - - // If we still don't have the site_url, get it. - if ( ! $domain ) { - $uri = get_site_url( 1 ); - $uridata = wp_parse_url( $uri ); - $domain = $uridata['host']; - } - - $this->local_host = $domain; - - return $this->local_host; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-compatibility.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-compatibility.php deleted file mode 100644 index 495f71f9..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-compatibility.php +++ /dev/null @@ -1,328 +0,0 @@ -range ) ) { - return $ip_object->range_low . '-' . $ip_object->range_high; - } - - return $ip_object->ip_address; - }, - $brute_force_allow_list - ); - - $brute_force_allow_list_string = implode( "\n", $brute_force_allow_list ); - - if ( empty( $waf_allow_list ) ) { - return $brute_force_allow_list_string; - } - - // Return the lists merged into a single string. - return "$waf_allow_list\n$brute_force_allow_list_string"; - } - - /** - * Migrate the brute force protection IP allow list option to the WAF option. - * - * @since 0.11.0 - * - * @return void - */ - public static function migrate_brute_force_protection_ip_allow_list() { - // Get the allow list values directly from the database to avoid filters. - $brute_force_allow_list = Jetpack_Options::get_raw_option( 'jetpack_protect_whitelist' ); - $waf_allow_list = Jetpack_Options::get_raw_option( 'jetpack_waf_ip_allow_list' ); - - if ( ! empty( $brute_force_allow_list ) ) { - - if ( empty( $waf_allow_list ) ) { - $waf_allow_list = ''; - } - - // Merge the two allow lists. - $merged_allow_list = self::merge_ip_allow_lists( $waf_allow_list, $brute_force_allow_list ); - - // Update the WAF IP allow list with the merged list. - Jetpack_Options::update_raw_option( 'jetpack_waf_ip_allow_list', $merged_allow_list ); - - // Delete the old option if the update was successful. - // Check the values directly as `update_raw_option()` returns false if the value hasn't changed. - if ( Jetpack_Options::get_raw_option( 'jetpack_waf_ip_allow_list' ) === $merged_allow_list ) { - delete_option( 'jetpack_protect_whitelist' ); - } - } - } - - /** - * Filter for Waf_Rules_Manager::IP_ALLOW_LIST_OPTION_NAME's option value. - * Merges the deprecated IP allow list from the brute force protection module - * with the existing option value, and flags that the WAF needs to be updated. - * - * @since 0.11.0 - * - * @param array $waf_allow_list The current value of the option. - * - * @return array The merged IP allow list. - */ - public static function filter_option_waf_ip_allow_list( $waf_allow_list ) { - $brute_force_allow_list = Jetpack_Options::get_raw_option( 'jetpack_protect_whitelist', false ); - if ( false !== $brute_force_allow_list ) { - $waf_allow_list = self::merge_ip_allow_lists( $waf_allow_list, $brute_force_allow_list ); - update_option( Waf_Initializer::NEEDS_UPDATE_OPTION_NAME, true ); - } - - return $waf_allow_list; - } - - /** - * Default option for when the Waf_Rules_Manager::IP_ALLOW_LIST_OPTION_NAME option is not set. - * - * @param mixed $default The default value to return if the option does not exist in the database. - * @param string $option Option name. - * @param bool $passed_default Was get_option() passed a default value. - * - * @return mixed The default value to return if the option does not exist in the database. - */ - public static function default_option_waf_ip_allow_list( $default, $option, $passed_default ) { - // Allow get_option() to override this default value - if ( $passed_default ) { - return $default; - } - - $waf_allow_list = ''; - - // If the brute force option exists, use that and flag that the WAF needs to be updated. - $brute_force_allow_list = Jetpack_Options::get_raw_option( 'jetpack_protect_whitelist', false ); - if ( false !== $brute_force_allow_list ) { - $waf_allow_list = self::merge_ip_allow_lists( $waf_allow_list, $brute_force_allow_list ); - update_option( Waf_Initializer::NEEDS_UPDATE_OPTION_NAME, true ); - } - - return $waf_allow_list; - } - - /** - * Check if the brute force protection code is being run by an older version of Jetpack (< 12.0). - * - * @since 0.11.1 - * - * @return bool - */ - public static function is_brute_force_running_in_jetpack() { - return defined( 'JETPACK__VERSION' ) && version_compare( JETPACK__VERSION, '12', '<' ); - } - - /** - * Default the allow list enabled option to the value of the generic IP lists enabled option it replaced. - * - * @since 0.17.0 - * - * @param mixed $default The default value to return if the option does not exist in the database. - * @param string $option Option name. - * @param bool $passed_default Was get_option() passed a default value. - * - * @return mixed The default value to return if the option does not exist in the database. - */ - public static function default_option_waf_ip_allow_list_enabled( $default, $option, $passed_default ) { - // Allow get_option() to override this default value - if ( $passed_default ) { - return $default; - } - - // If the deprecated IP lists option was set to false, disable the allow list. - // @phan-suppress-next-line PhanDeprecatedClassConstant -- Needed for backwards compatibility. - $deprecated_option = Jetpack_Options::get_raw_option( Waf_Rules_Manager::IP_LISTS_ENABLED_OPTION_NAME, true ); - if ( ! $deprecated_option ) { - return false; - } - - // If the allow list is empty, disable the allow list. - if ( ! Jetpack_Options::get_raw_option( Waf_Rules_Manager::IP_ALLOW_LIST_OPTION_NAME ) ) { - return false; - } - - // Default to enabling the allow list. - return true; - } - - /** - * Default the block list enabled option to the value of the generic IP lists enabled option it replaced. - * - * @since 0.17.0 - * - * @param mixed $default The default value to return if the option does not exist in the database. - * @param string $option Option name. - * @param bool $passed_default Was get_option() passed a default value. - * - * @return mixed The default value to return if the option does not exist in the database. - */ - public static function default_option_waf_ip_block_list_enabled( $default, $option, $passed_default ) { - // Allow get_option() to override this default value - if ( $passed_default ) { - return $default; - } - - // @phan-suppress-next-line PhanDeprecatedClassConstant -- Needed for backwards compatibility. - return Jetpack_Options::get_raw_option( Waf_Rules_Manager::IP_LISTS_ENABLED_OPTION_NAME, false ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-rest-controller.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-rest-controller.php deleted file mode 100644 index 6e7747e3..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-rest-controller.php +++ /dev/null @@ -1,212 +0,0 @@ - WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::waf', - 'permission_callback' => __CLASS__ . '::waf_permissions_callback', - ) - ); - - register_rest_route( - 'jetpack/v4', - '/waf', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::update_waf', - 'permission_callback' => __CLASS__ . '::waf_permissions_callback', - ) - ); - - register_rest_route( - 'jetpack/v4', - '/waf/update-rules', - array( - 'methods' => WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::update_rules', - 'permission_callback' => __CLASS__ . '::waf_permissions_callback', - ) - ); - - $routes_registered = true; - } - - /** - * Update rules endpoint - * - * @return WP_REST_Response|WP_Error - */ - public static function update_rules() { - try { - Waf_Rules_Manager::generate_automatic_rules(); - Waf_Rules_Manager::generate_rules(); - } catch ( Waf_Exception $e ) { - return $e->get_wp_error(); - } - - return rest_ensure_response( - array( - 'success' => true, - 'message' => __( 'Rules updated succesfully', 'jetpack-waf' ), - ) - ); - } - - /** - * WAF Endpoint - * - * @return WP_REST_Response - */ - public static function waf() { - return rest_ensure_response( - array_merge( - Waf_Runner::get_config(), - array( - 'waf_supported' => Waf_Runner::is_supported_environment(), - 'automatic_rules_last_updated' => Waf_Stats::get_automatic_rules_last_updated(), - ) - ) - ); - } - - /** - * Update WAF Endpoint - * - * @param WP_REST_Request $request The API request. - * - * @return WP_REST_Response|WP_Error - */ - public static function update_waf( $request ) { - // Automatic Rules Enabled - if ( isset( $request[ Waf_Rules_Manager::AUTOMATIC_RULES_ENABLED_OPTION_NAME ] ) ) { - update_option( Waf_Rules_Manager::AUTOMATIC_RULES_ENABLED_OPTION_NAME, $request->get_param( Waf_Rules_Manager::AUTOMATIC_RULES_ENABLED_OPTION_NAME ) ? '1' : '' ); - } - - /** - * IP Lists Enabled - * - * @deprecated 0.17.0 This is a legacy option maintained here for backwards compatibility. - */ - if ( isset( $request['jetpack_waf_ip_list'] ) ) { - update_option( Waf_Rules_Manager::IP_BLOCK_LIST_ENABLED_OPTION_NAME, $request['jetpack_waf_ip_list'] ? '1' : '' ); - update_option( Waf_Rules_Manager::IP_ALLOW_LIST_ENABLED_OPTION_NAME, $request['jetpack_waf_ip_list'] ? '1' : '' ); - } - - // IP Block List - if ( isset( $request[ Waf_Rules_Manager::IP_BLOCK_LIST_OPTION_NAME ] ) ) { - update_option( Waf_Rules_Manager::IP_BLOCK_LIST_OPTION_NAME, $request[ Waf_Rules_Manager::IP_BLOCK_LIST_OPTION_NAME ] ); - } - if ( isset( $request[ Waf_Rules_Manager::IP_BLOCK_LIST_ENABLED_OPTION_NAME ] ) ) { - update_option( Waf_Rules_Manager::IP_BLOCK_LIST_ENABLED_OPTION_NAME, $request[ Waf_Rules_Manager::IP_BLOCK_LIST_ENABLED_OPTION_NAME ] ? '1' : '' ); - } - - // IP Allow List - if ( isset( $request[ Waf_Rules_Manager::IP_ALLOW_LIST_OPTION_NAME ] ) ) { - update_option( Waf_Rules_Manager::IP_ALLOW_LIST_OPTION_NAME, $request[ Waf_Rules_Manager::IP_ALLOW_LIST_OPTION_NAME ] ); - } - if ( isset( $request[ Waf_Rules_Manager::IP_ALLOW_LIST_ENABLED_OPTION_NAME ] ) ) { - update_option( Waf_Rules_Manager::IP_ALLOW_LIST_ENABLED_OPTION_NAME, $request[ Waf_Rules_Manager::IP_ALLOW_LIST_ENABLED_OPTION_NAME ] ? '1' : '' ); - } - - // Share Data - if ( isset( $request[ Waf_Runner::SHARE_DATA_OPTION_NAME ] ) ) { - // If a user disabled the regular share we should disable the debug share data option. - if ( ! $request[ Waf_Runner::SHARE_DATA_OPTION_NAME ] ) { - update_option( Waf_Runner::SHARE_DEBUG_DATA_OPTION_NAME, '' ); - } - - update_option( Waf_Runner::SHARE_DATA_OPTION_NAME, $request[ Waf_Runner::SHARE_DATA_OPTION_NAME ] ? '1' : '' ); - } - - // Share Debug Data - if ( isset( $request[ Waf_Runner::SHARE_DEBUG_DATA_OPTION_NAME ] ) ) { - // If a user toggles the debug share we should enable the regular share data option. - if ( $request[ Waf_Runner::SHARE_DEBUG_DATA_OPTION_NAME ] ) { - update_option( Waf_Runner::SHARE_DATA_OPTION_NAME, 1 ); - } - - update_option( Waf_Runner::SHARE_DEBUG_DATA_OPTION_NAME, $request[ Waf_Runner::SHARE_DEBUG_DATA_OPTION_NAME ] ? '1' : '' ); - } - - // Brute Force Protection - if ( isset( $request['brute_force_protection'] ) ) { - $enable_brute_force = (bool) $request['brute_force_protection']; - $brute_force_protection_toggled = - $enable_brute_force - ? Brute_Force_Protection::enable() - : Brute_Force_Protection::disable(); - - if ( ! $brute_force_protection_toggled ) { - return new WP_Error( - $enable_brute_force - ? 'brute_force_protection_activation_failed' - : 'brute_force_protection_deactivation_failed', - $enable_brute_force - ? __( 'Brute force protection could not be activated.', 'jetpack-waf' ) - : __( 'Brute force protection could not be deactivated.', 'jetpack-waf' ), - array( 'status' => 500 ) - ); - } - } - - // Only attempt to update the WAF if the module is supported - if ( Waf_Runner::is_supported_environment() ) { - try { - Waf_Runner::update_waf(); - } catch ( Waf_Exception $e ) { - return $e->get_wp_error(); - } - } - - return self::waf(); - } - - /** - * WAF Endpoint Permissions Callback - * - * @return bool|WP_Error True if user can view the Jetpack admin page. - */ - public static function waf_permissions_callback() { - if ( current_user_can( 'manage_options' ) ) { - return true; - } - - return new WP_Error( - 'invalid_user_permission_manage_options', - REST_Connector::get_user_permissions_error_msg(), - array( 'status' => rest_authorization_required_code() ) - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-blocklog-manager.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-blocklog-manager.php deleted file mode 100644 index 031c71ff..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-blocklog-manager.php +++ /dev/null @@ -1,441 +0,0 @@ -connect_error ) { - error_log( 'Could not connect to the database:' . $conn->connect_error ); - return null; - } - - self::$db_connection = $conn; - return self::$db_connection; - } - - /** - * Close the database connection. - * - * @return void - */ - private static function close_db_connection() { - if ( self::$db_connection ) { - self::$db_connection->close(); - self::$db_connection = null; - } - } - - /** - * Serialize a value for storage in a WordPress option. - * - * @param mixed $value The value to serialize. - * @return string The serialized value. - */ - private static function serialize_option_value( $value ) { - return serialize( $value ); - } - - /** - * Unserialize a value from a WordPress option. - * - * @param string $value The serialized value. - * @return mixed The unserialized value. - */ - private static function unserialize_option_value( string $value ) { - return unserialize( $value ); - } - - /** - * Create the log table when plugin is activated. - * - * @return void - */ - public static function create_blocklog_table() { - global $wpdb; - - require_once ABSPATH . 'wp-admin/includes/upgrade.php'; - - $sql = " - CREATE TABLE {$wpdb->prefix}jetpack_waf_blocklog ( - log_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, - timestamp datetime NOT NULL, - rule_id BIGINT NOT NULL, - reason longtext NOT NULL, - PRIMARY KEY (log_id), - KEY timestamp (timestamp) - ) - "; - - dbDelta( $sql ); - } - - /** - * Write block logs to database. - * - * @param array $log_data Log data. - * - * @return void - */ - private static function write_blocklog_row( $log_data ) { - $conn = self::connect_to_wordpress_db(); - - if ( ! $conn ) { - return; - } - - global $table_prefix; - - $statement = $conn->prepare( "INSERT INTO {$table_prefix}jetpack_waf_blocklog(reason,rule_id, timestamp) VALUES (?, ?, ?)" ); - if ( false !== $statement ) { - $statement->bind_param( 'sis', $log_data['reason'], $log_data['rule_id'], $log_data['timestamp'] ); - $statement->execute(); - - if ( $conn->insert_id > 100 ) { - $conn->query( "DELETE FROM {$table_prefix}jetpack_waf_blocklog ORDER BY log_id LIMIT 1" ); - } - } - } - - /** - * Get the daily summary stats from the database. - * - * @return array The daily summary stats. - */ - private static function get_daily_summary() { - global $table_prefix; - $db_connection = self::connect_to_wordpress_db(); - if ( ! $db_connection ) { - return array(); - } - - $result = $db_connection->query( "SELECT option_value FROM {$table_prefix}options WHERE option_name = '" . self::BLOCKLOG_OPTION_NAME_DAILY_SUMMARY . "'" ); - if ( ! $result ) { - return array(); - } - - $row = $result->fetch_assoc(); - if ( ! $row ) { - return array(); - } - - $daily_summary = self::unserialize_option_value( $row['option_value'] ); - $result->free(); - - return is_array( $daily_summary ) ? $daily_summary : array(); - } - - /** - * Increments the current date's daily summary stat. - * - * @param array $current_value The current value of the daily summary. - * - * @return array The updated daily summary. - */ - public static function increment_daily_summary( array $current_value ) { - $date = gmdate( 'Y-m-d' ); - $value = intval( $current_value[ $date ] ?? 0 ); - $current_value[ $date ] = $value + 1; - - return $current_value; - } - - /** - * Update the daily summary option in the database. - * - * @param array $value The value to update. - * - * @return void - */ - private static function write_daily_summary_row( array $value ) { - global $table_prefix; - $option_name = self::BLOCKLOG_OPTION_NAME_DAILY_SUMMARY; - - $db_connection = self::connect_to_wordpress_db(); - if ( ! $db_connection ) { - return; - } - - $updated_value = self::serialize_option_value( $value ); - - $statement = $db_connection->prepare( "INSERT INTO {$table_prefix}options (option_name, option_value) VALUES (?, ?) ON DUPLICATE KEY UPDATE option_value = ?" ); - if ( false !== $statement ) { - $statement->bind_param( 'sss', $option_name, $updated_value, $updated_value ); - $statement->execute(); - } - } - - /** - * Update the daily summary stats for the current date. - * - * @return void - */ - private static function write_daily_summary() { - $stats = self::get_daily_summary(); - $stats = self::increment_daily_summary( $stats ); - $stats = self::filter_last_30_days( $stats ); - - self::write_daily_summary_row( $stats ); - } - - /** - * Get the all-time block count value from the database. - * - * @return int The all-time block count. - */ - private static function get_all_time_block_count_value() { - global $table_prefix; - $db_connection = self::connect_to_wordpress_db(); - if ( ! $db_connection ) { - return 0; - } - - $result = $db_connection->query( "SELECT option_value FROM {$table_prefix}options WHERE option_name = '" . self::BLOCKLOG_OPTION_NAME_ALL_TIME_BLOCK_COUNT . "'" ); - if ( ! $result ) { - return 0; - } - - $row = $result->fetch_assoc(); - if ( ! $row ) { - return 0; - } - - $all_time_block_count = intval( $row['option_value'] ); - $result->free(); - - return $all_time_block_count; - } - - /** - * Update the all-time block count value in the database. - * - * @param int $value The value to update. - * @return void - */ - private static function write_all_time_block_count_row( int $value ) { - global $table_prefix; - $option_name = self::BLOCKLOG_OPTION_NAME_ALL_TIME_BLOCK_COUNT; - - $db_connection = self::connect_to_wordpress_db(); - if ( ! $db_connection ) { - return; - } - - $statement = $db_connection->prepare( "INSERT INTO {$table_prefix}options (option_name, option_value) VALUES (?, ?) ON DUPLICATE KEY UPDATE option_value = ?" ); - if ( false !== $statement ) { - $statement->bind_param( 'sii', $option_name, $value, $value ); - $statement->execute(); - } - } - - /** - * Increment the all-time stats. - * - * @return void - */ - private static function write_all_time_block_count() { - $block_count = self::get_all_time_block_count_value(); - if ( ! $block_count ) { - $block_count = self::get_default_all_time_stat_value(); - } - - self::write_all_time_block_count_row( $block_count + 1 ); - } - - /** - * Filters the stats to retain only data for the last 30 days. - * - * @param array $stats The array of stats to prune. - * - * @return array Pruned stats array. - */ - public static function filter_last_30_days( array $stats ) { - $today = gmdate( 'Y-m-d' ); - $one_month_ago = gmdate( 'Y-m-d', strtotime( '-30 days' ) ); - - return array_filter( - $stats, - function ( $date ) use ( $one_month_ago, $today ) { - return $date >= $one_month_ago && $date <= $today; - }, - ARRAY_FILTER_USE_KEY - ); - } - - /** - * Get the total number of blocked requests for today. - * - * @return int - */ - public static function get_current_day_block_count() { - $stats = get_option( self::BLOCKLOG_OPTION_NAME_DAILY_SUMMARY, array() ); - $today = gmdate( 'Y-m-d' ); - - return $stats[ $today ] ?? 0; - } - - /** - * Get the total number of blocked requests for last thirty days. - * - * @return int - */ - public static function get_thirty_days_block_counts() { - $stats = get_option( self::BLOCKLOG_OPTION_NAME_DAILY_SUMMARY, array() ); - $total_blocks = 0; - - foreach ( $stats as $count ) { - $total_blocks += intval( $count ); - } - - return $total_blocks; - } - - /** - * Get the total number of blocked requests for all time. - * - * @return int - */ - public static function get_all_time_block_count() { - $all_time_block_count = get_option( self::BLOCKLOG_OPTION_NAME_ALL_TIME_BLOCK_COUNT, false ); - - if ( false !== $all_time_block_count ) { - return intval( $all_time_block_count ); - } - - return self::get_default_all_time_stat_value(); - } - - /** - * Compute the initial all-time stats value. - * - * @return int The initial all-time stats value. - */ - private static function get_default_all_time_stat_value() { - $conn = self::connect_to_wordpress_db(); - if ( ! $conn ) { - return 0; - } - - global $table_prefix; - - $last_log_id_result = $conn->query( "SELECT log_id FROM {$table_prefix}jetpack_waf_blocklog ORDER BY log_id DESC LIMIT 1" ); - - $all_time_block_count = 0; - - if ( $last_log_id_result && $last_log_id_result->num_rows > 0 ) { - $row = $last_log_id_result->fetch_assoc(); - if ( $row !== null && isset( $row['log_id'] ) ) { - $all_time_block_count = $row['log_id']; - } - } - - return intval( $all_time_block_count ); - } - - /** - * Get the headers for logging purposes. - * - * @return array The headers. - */ - public static function get_request_headers() { - $all_headers = getallheaders(); - $exclude_headers = array( 'Authorization', 'Cookie', 'Proxy-Authorization', 'Set-Cookie' ); - - foreach ( $exclude_headers as $header ) { - unset( $all_headers[ $header ] ); - } - - return $all_headers; - } - - /** - * Write block logs. We won't write to the file if it exceeds 100 mb. - * - * @param string $rule_id The rule ID that triggered the block. - * @param string $reason The reason for the block. - * - * @return void - */ - public static function write_blocklog( $rule_id, $reason ) { - $log_data = array(); - $log_data['rule_id'] = $rule_id; - $log_data['reason'] = $reason; - $log_data['timestamp'] = gmdate( 'Y-m-d H:i:s' ); - $log_data['request_uri'] = isset( $_SERVER['REQUEST_URI'] ) ? \stripslashes( $_SERVER['REQUEST_URI'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash - $log_data['user_agent'] = isset( $_SERVER['HTTP_USER_AGENT'] ) ? \stripslashes( $_SERVER['HTTP_USER_AGENT'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash - $log_data['referer'] = isset( $_SERVER['HTTP_REFERER'] ) ? \stripslashes( $_SERVER['HTTP_REFERER'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash - $log_data['content_type'] = isset( $_SERVER['CONTENT_TYPE'] ) ? \stripslashes( $_SERVER['CONTENT_TYPE'] ) : ''; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash - $log_data['get_params'] = json_encode( $_GET ); - - if ( defined( 'JETPACK_WAF_SHARE_DEBUG_DATA' ) && JETPACK_WAF_SHARE_DEBUG_DATA ) { - $log_data['post_params'] = json_encode( $_POST ); - $log_data['headers'] = self::get_request_headers(); - } - - if ( defined( 'JETPACK_WAF_SHARE_DATA' ) && JETPACK_WAF_SHARE_DATA ) { - $file_path = JETPACK_WAF_DIR . '/waf-blocklog'; - $file_exists = file_exists( $file_path ); - - if ( ! $file_exists || filesize( $file_path ) < ( 100 * 1024 * 1024 ) ) { - $fp = fopen( $file_path, 'a+' ); - - if ( $fp ) { - try { - fwrite( $fp, json_encode( $log_data ) . "\n" ); - } finally { - fclose( $fp ); - } - } - } - } - - self::write_daily_summary(); - self::write_all_time_block_count(); - self::write_blocklog_row( $log_data ); - self::close_db_connection(); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-cli.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-cli.php deleted file mode 100644 index 1292302e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-cli.php +++ /dev/null @@ -1,167 +0,0 @@ -] - * : The new mode to be set. - * --- - * options: - * - silent - * - normal - * --- - * - * @param array $args Arguments passed to CLI. - * @return void|null - * @throws WP_CLI\ExitException If there is an error switching the mode. - */ - public function mode( $args ) { - if ( count( $args ) > 1 ) { - - return WP_CLI::error( __( 'Only one mode may be specified.', 'jetpack-waf' ) ); - } - if ( count( $args ) === 1 ) { - if ( ! Waf_Runner::is_allowed_mode( $args[0] ) ) { - - return WP_CLI::error( - sprintf( - /* translators: %1$s is the mode that was actually found. Also note that the expected "silent" and "normal" are hard-coded strings and must therefore stay the same in any translation. */ - __( 'Invalid mode: %1$s. Expected "silent" or "normal".', 'jetpack-waf' ), - $args[0] - ) - ); - } - - update_option( Waf_Runner::MODE_OPTION_NAME, $args[0] ); - - try { - ( new Waf_Standalone_Bootstrap() )->generate(); - } catch ( \Exception $e ) { - WP_CLI::warning( - sprintf( - /* translators: %1$s is the unexpected error message. */ - __( 'Unable to generate waf bootstrap - standalone mode may not work properly: %1$s', 'jetpack-waf' ), - $e->getMessage() - ) - ); - } - - return WP_CLI::success( - sprintf( - /* translators: %1$s is the name of the mode that was just switched to. */ - __( 'Jetpack WAF mode switched to "%1$s".', 'jetpack-waf' ), - get_option( Waf_Runner::MODE_OPTION_NAME ) - ) - ); - } - WP_CLI::line( - sprintf( - /* translators: %1$s is the name of the mode that the waf is currently running in. */ - __( 'Jetpack WAF is running in "%1$s" mode.', 'jetpack-waf' ), - get_option( Waf_Runner::MODE_OPTION_NAME ) - ) - ); - } - - /** - * Setup the WAF to run. - * ## OPTIONS - * - * [] - * : The new mode to be set. - * --- - * options: - * - silent - * - normal - * --- - * - * @param array $args Arguments passed to CLI. - * @return void|null - * @throws WP_CLI\ExitException If there is an error switching the mode. - */ - public function setup( $args ) { - // Let is_allowed_mode know we are running from the CLI - define( 'WAF_CLI_MODE', $args[0] ); - - // Set the mode and generate the bootstrap - $this->mode( array( $args[0] ) ); - - try { - // Add relevant options and generate the rules.php file - Waf_Runner::activate(); - } catch ( \Exception $e ) { - - return WP_CLI::error( - sprintf( - /* translators: %1$s is the unexpected error message. */ - __( 'Jetpack WAF rules file failed to generate: %1$s', 'jetpack-waf' ), - $e->getMessage() - ) - ); - } - - return WP_CLI::success( __( 'Jetpack WAF has successfully been setup.', 'jetpack-waf' ) ); - } - - /** - * Delete the WAF options. - * - * @return void|null - * @throws WP_CLI\ExitException If deactivating has failures. - */ - public function teardown() { - try { - Waf_Runner::deactivate(); - } catch ( \Exception $e ) { - WP_CLI::error( __( 'Jetpack WAF failed to fully deactivate.', 'jetpack-waf' ) ); - } - - return WP_CLI::success( __( 'Jetpack WAF has been deactivated.', 'jetpack-waf' ) ); - } - - /** - * Generate the rules.php file with latest rules for the WAF. - * - * @return void|null - * @throws WP_CLI\ExitException If there is an error switching the mode. - */ - public function generate_rules() { - try { - Waf_Constants::define_entrypoint(); - Waf_Rules_Manager::generate_automatic_rules(); - Waf_Rules_Manager::generate_rules(); - } catch ( \Exception $e ) { - - return WP_CLI::error( - sprintf( - /* translators: %1$s is the unexpected error message. */ - __( 'Jetpack WAF rules file failed to generate: %1$s', 'jetpack-waf' ), - $e->getMessage() - ) - ); - } - - return WP_CLI::success( - sprintf( - /* translators: %1$s is the name of the mode that was just switched to. */ - __( 'Jetpack WAF rules successfully created to: "%1$s".', 'jetpack-waf' ), - Waf_Runner::get_waf_file_path( JETPACK_WAF_ENTRYPOINT ) - ) - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-constants.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-constants.php deleted file mode 100644 index bc0b04a3..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-constants.php +++ /dev/null @@ -1,127 +0,0 @@ -is_atomic_platform(); - $is_atomic_on_jn = defined( 'IS_ATOMIC_JN' ) ?? IS_ATOMIC_JN; - define( 'DISABLE_JETPACK_WAF', $is_wpcom || ( $is_atomic && ! $is_atomic_on_jn ) ); - } - } - - /** - * Set the mode definition if it has not been set. - * - * @return void - */ - public static function define_mode() { - if ( ! defined( 'JETPACK_WAF_MODE' ) ) { - $mode_option = get_option( Waf_Runner::MODE_OPTION_NAME ); - define( 'JETPACK_WAF_MODE', $mode_option ); - } - } - - /** - * Set the entrypoint definition if it has not been set. - */ - public static function define_entrypoint() { - if ( ! defined( 'JETPACK_WAF_ENTRYPOINT' ) ) { - define( 'JETPACK_WAF_ENTRYPOINT', 'rules/rules.php' ); - } - } - - /** - * Set the share data definition if it has not been set. - * - * @return void - */ - public static function define_share_data() { - if ( ! defined( 'JETPACK_WAF_SHARE_DATA' ) ) { - $share_data_option = false; - if ( function_exists( 'get_option' ) ) { - $share_data_option = get_option( Waf_Runner::SHARE_DATA_OPTION_NAME, false ); - } - - define( 'JETPACK_WAF_SHARE_DATA', $share_data_option ); - } - if ( ! defined( 'JETPACK_WAF_SHARE_DEBUG_DATA' ) ) { - $share_debug_data_option = false; - if ( function_exists( 'get_option' ) ) { - $share_debug_data_option = get_option( Waf_Runner::SHARE_DEBUG_DATA_OPTION_NAME, false ); - } - - define( 'JETPACK_WAF_SHARE_DEBUG_DATA', $share_debug_data_option ); - } - } - - /** - * Set the brute force protection's API host definition if it has not been set. - * - * @return void - */ - public static function define_brute_force_api_host() { - if ( ! defined( 'JETPACK_PROTECT__API_HOST' ) ) { - define( 'JETPACK_PROTECT__API_HOST', 'https://api.bruteprotect.com/' ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-initializer.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-initializer.php deleted file mode 100644 index c2720f83..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-initializer.php +++ /dev/null @@ -1,240 +0,0 @@ -generate(); - } catch ( Waf_Exception $e ) { - return $e->get_wp_error(); - } - - return true; - } - - /** - * Activate the Brute force protection on module activation. - * - * @return bool True if the Brute force protection activation is successful - */ - public static function on_brute_force_protection_activation() { - $brute_force_protection = Brute_Force_Protection::instance(); - $brute_force_protection->on_activation(); - - return true; - } - - /** - * Deactivate the WAF on module deactivation. - * - * @return bool|WP_Error True if the WAF deactivation is successful, WP_Error otherwise. - */ - public static function on_waf_deactivation() { - try { - Waf_Runner::deactivate(); - } catch ( Waf_Exception $e ) { - return $e->get_wp_error(); - } - - return true; - } - - /** - * Deactivate the Brute force protection on module deactivation. - * - * @return bool True if the Brute force protection deactivation is successful. - */ - public static function on_brute_force_protection_deactivation() { - $brute_force_protection = Brute_Force_Protection::instance(); - $brute_force_protection->on_deactivation(); - - return true; - } - - /** - * Updates the WAF after upgrader process is complete. - * - * @param WP_Upgrader $upgrader WP_Upgrader instance. In other contexts this might be a Theme_Upgrader, Plugin_Upgrader, Core_Upgrade, or Language_Pack_Upgrader instance. - * @param array $hook_extra Array of bulk item update data. - * - * @return void - */ - public static function update_waf_after_plugin_upgrade( $upgrader, $hook_extra ) { - $jetpack_text_domains_with_waf = array( 'jetpack', 'jetpack-protect' ); - $jetpack_plugins_with_waf = array( 'jetpack/jetpack.php', 'jetpack-protect/jetpack-protect.php' ); - - // Only run on upgrades affecting plugins - if ( 'plugin' !== $hook_extra['type'] ) { - return; - } - - // Only run on updates and installations - if ( 'update' !== $hook_extra['action'] && 'install' !== $hook_extra['action'] ) { - return; - } - - // Only run when Jetpack plugins were affected - if ( 'update' === $hook_extra['action'] && - ! empty( $hook_extra['plugins'] ) && - empty( array_intersect( $jetpack_plugins_with_waf, $hook_extra['plugins'] ) ) - ) { - return; - } - if ( 'install' === $hook_extra['action'] && - ! empty( $upgrader->new_plugin_data['TextDomain'] ) && - empty( in_array( $upgrader->new_plugin_data['TextDomain'], $jetpack_text_domains_with_waf, true ) ) - ) { - return; - } - - update_option( self::NEEDS_UPDATE_OPTION_NAME, true ); - } - - /** - * Check for WAF update - * - * Updates the WAF when the "needs update" option is enabled. - * - * @return bool|WP_Error True if the WAF is up-to-date or was sucessfully updated, WP_Error if the update failed. - */ - public static function check_for_updates() { - if ( get_option( self::NEEDS_UPDATE_OPTION_NAME ) ) { - if ( Waf_Runner::is_supported_environment() ) { - // Compatiblity patch for cases where an outdated WAF_Constants class has been - // autoloaded by the standalone bootstrap execution at the beginning of the current request. - if ( ! method_exists( Waf_Constants::class, 'define_mode' ) ) { - try { - ( new Waf_Standalone_Bootstrap() )->generate(); - } catch ( Waf_Exception $e ) { - return $e->get_wp_error(); - } - } - - Waf_Compatibility::run_compatibility_migrations(); - - try { - Waf_Rules_Manager::generate_ip_rules(); - Waf_Rules_Manager::generate_rules(); - ( new Waf_Standalone_Bootstrap() )->generate(); - } catch ( Waf_Exception $e ) { - return $e->get_wp_error(); - } - } else { - // If the site doesn't support the request firewall, - // just migrate the IP allow list used by brute force protection. - Waf_Compatibility::migrate_brute_force_protection_ip_allow_list(); - } - - update_option( self::NEEDS_UPDATE_OPTION_NAME, false ); - } - - return true; - } - - /** - * Disables the WAF module when on an unsupported platform in Jetpack. - * - * @param array $modules Filterable value for `jetpack_get_available_modules`. - * - * @return array Array of module slugs. - */ - public static function remove_module_on_unsupported_environments( $modules ) { - if ( ! Waf_Runner::is_supported_environment() ) { - // WAF should never be available on unsupported platforms. - unset( $modules['waf'] ); - } - - return $modules; - } - - /** - * Disables the WAF module when on an unsupported platform in a standalone plugin. - * - * @param array $modules Filterable value for `jetpack_get_available_standalone_modules`. - * - * @return array Array of module slugs. - */ - public static function remove_standalone_module_on_unsupported_environments( $modules ) { - if ( ! Waf_Runner::is_supported_environment() ) { - // WAF should never be available on unsupported platforms. - $modules = array_filter( - $modules, - function ( $module ) { - return $module !== 'waf'; - } - ); - - } - - return $modules; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-operators.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-operators.php deleted file mode 100644 index 6e2bdceb..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-operators.php +++ /dev/null @@ -1,286 +0,0 @@ -= intval( $test ) - ? $input - : false; - } - - /** - * Returns true if the input value is greater than the test value. - * If either value cannot be converted to an int it will be treated as 0. - * - * @param mixed $input Input. - * @param mixed $test Test. - * @return int|false - */ - public function gt( $input, $test ) { - return intval( $input ) > intval( $test ) - ? $input - : false; - } - - /** - * Returns true if the input value is less than or equal to the test value. - * If either value cannot be converted to an int it will be treated as 0. - * - * @param mixed $input Input. - * @param mixed $test Test. - * @return int|false - */ - public function le( $input, $test ) { - return intval( $input ) <= intval( $test ) - ? $input - : false; - } - - /** - * Returns true if the input value is less than the test value. - * If either value cannot be converted to an int it will be treated as 0. - * - * @param mixed $input Input. - * @param mixed $test Test. - * @return int|false - */ - public function lt( $input, $test ) { - return intval( $input ) < intval( $test ) - ? $input - : false; - } - - /** - * Returns false. - * - * @return false - */ - public function no_match() { - return false; - } - - /** - * Uses a multi-string matching algorithm to search through $input for a number of given $words. - * - * @param string $input Input. - * @param string[] $words \AhoCorasick\MultiStringMatcher $matcher. - * @return string[]|false Returns the words that were found in $input, or FALSE if no words were found. - */ - public function pm( $input, $words ) { - $results = $this->get_multi_string_matcher( $words )->searchIn( $input ); - - return isset( $results[0] ) - ? array_map( - function ( $r ) { - return $r[1]; }, - $results - ) - : false; - } - - /** - * The last-used pattern-matching algorithm. - * - * @var array - */ - private $last_multi_string_matcher = array( null, null ); - - /** - * Creates a matcher that uses the Aho-Corasick algorithm to efficiently find a number of words in an input string. - * Caches the last-used matcher so that the same word list doesn't have to be compiled multiple times. - * - * @param string[] $words Words. - * @return \AhoCorasick\MultiStringMatcher - */ - private function get_multi_string_matcher( $words ) { - // only create a new matcher entity if we don't have one already for this word list. - if ( $this->last_multi_string_matcher[0] !== $words ) { - $this->last_multi_string_matcher = array( $words, new \AhoCorasick\MultiStringMatcher( $words ) ); - } - - return $this->last_multi_string_matcher[1]; - } - - /** - * Performs a regular expression match on the input subject using the given pattern. - * Returns false if the pattern does not match, or the substring(s) of the input - * that were matched by the pattern. - * - * @param string $subject Subject. - * @param string $pattern Pattern. - * @return string[]|false - */ - public function rx( $subject, $pattern ) { - $matched = preg_match( $pattern, $subject, $matches ); - return 1 === $matched - ? $matches - : false; - } - - /** - * Returns true if the given input string matches the test string. - * - * @param string $input Input. - * @param string $test Test. - * @return string|false - */ - public function streq( $input, $test ) { - return $input === $test - ? $test - : false; - } - - /** - * Returns true. - * - * @param string $input Input. - * @return bool - */ - public function unconditional_match( $input ) { - return $input; - } - - /** - * Checks to see if the input string only contains characters within the given byte range - * - * @param string $input Input. - * @param array $valid_range Valid range. - * @return string - */ - public function validate_byte_range( $input, $valid_range ) { - if ( '' === $input ) { - // an empty string is considered "valid". - return false; - } - $i = 0; - while ( isset( $input[ $i ] ) ) { - $n = ord( $input[ $i ] ); - if ( $n < $valid_range['min'] || $n > $valid_range['max'] ) { - return $input[ $i ]; - } - $valid = false; - foreach ( $valid_range['range'] as $b ) { - if ( $n === $b || is_array( $b ) && $n >= $b[0] && $n <= $b[1] ) { - $valid = true; - break; - } - } - if ( ! $valid ) { - return $input[ $i ]; - } - ++$i; - } - - // if there weren't any invalid bytes, return false. - return false; - } - - /** - * Returns true if the input value is found anywhere inside the test value - * (i.e. the inverse of @contains) - * - * @param mixed $input Input. - * @param mixed $test Test. - * @return string|false - */ - public function within( $input, $test ) { - if ( '' === $input || '' === $test ) { - return false; - } - - return strpos( $test, $input ) !== false - ? $input - : false; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-request.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-request.php deleted file mode 100644 index bbb8bcf3..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-request.php +++ /dev/null @@ -1,413 +0,0 @@ -url = [ 'https://wordpress.com', '/index.php', '?myvar=red' ] - * @var array{0: string, 1: string, 2: string}|null - */ - protected $url = null; - - /** - * Trusted proxies. - * - * @var array List of trusted proxy IP addresses. - */ - private $trusted_proxies = array(); - - /** - * Trusted headers. - * - * @var array List of headers to trust from the trusted proxies. - */ - private $trusted_headers = array(); - - /** - * Sets the list of IP addresses for the proxies to trust. Trusted headers will only be accepted as the - * user IP address from these IP adresses. - * - * Popular choices include: - * - 192.168.0.1 - * - 10.0.0.1 - * - * @param array $proxies List of proxy IP addresses. - * @return void - */ - public function set_trusted_proxies( $proxies ) { - $this->trusted_proxies = (array) $proxies; - } - - /** - * Sets the list of headers to be trusted from the proxies. These headers will only be taken into account - * if the request comes from a trusted proxy as configured with set_trusted_proxies(). - * - * Popular choices include: - * - HTTP_CLIENT_IP - * - HTTP_X_FORWARDED_FOR - * - HTTP_X_FORWARDED - * - HTTP_X_CLUSTER_CLIENT_IP - * - HTTP_FORWARDED_FOR - * - HTTP_FORWARDED - * - * @param array $headers List of HTTP header strings. - * @return void - */ - public function set_trusted_headers( $headers ) { - $this->trusted_headers = (array) $headers; - } - - /** - * Determines the users real IP address based on the settings passed to set_trusted_proxies() and - * set_trusted_headers() before. On CLI, this will be null. - * - * @return string|null - */ - public function get_real_user_ip_address() { - $remote_addr = ! empty( $_SERVER['REMOTE_ADDR'] ) ? wp_unslash( $_SERVER['REMOTE_ADDR'] ) : null; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized - - if ( in_array( $remote_addr, $this->trusted_proxies, true ) ) { - $ip_by_header = $this->get_ip_by_header( array_merge( $this->trusted_headers, array( 'REMOTE_ADDR' ) ) ); - if ( ! empty( $ip_by_header ) ) { - return $ip_by_header; - } - } - - return $remote_addr; - } - - /** - * Iterates through a given list of HTTP headers and attempts to get the IP address from the header that - * a proxy sends along. Make sure you trust the IP address before calling this method. - * - * @param array $headers The list of headers to check. - * @return string|null - */ - private function get_ip_by_header( $headers ) { - foreach ( $headers as $key ) { - if ( isset( $_SERVER[ $key ] ) ) { - foreach ( explode( ',', wp_unslash( $_SERVER[ $key ] ) ) as $ip ) { // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- filter_var is applied below. - $ip = trim( $ip ); - - if ( filter_var( $ip, FILTER_VALIDATE_IP ) !== false ) { - return $ip; - } - } - } - } - - return null; - } - - /** - * Returns the headers that were sent with this request - * - * @return array{0: string, 1: scalar}[] - */ - public function get_headers() { - $value = array(); - $has_content_type = false; - $has_content_length = false; - foreach ( $_SERVER as $k => $v ) { - $k = strtolower( $k ); - if ( 'http_' === substr( $k, 0, 5 ) ) { - $value[] = array( $this->normalize_header_name( substr( $k, 5 ) ), $v ); - } elseif ( 'content_type' === $k && '' !== $v ) { - $has_content_type = true; - $value[] = array( 'content-type', $v ); - } elseif ( 'content_length' === $k && '' !== $v ) { - $has_content_length = true; - $value[] = array( 'content-length', $v ); - } - } - if ( ! $has_content_type ) { - // default Content-Type per RFC 7231 section 3.1.5.5. - $value[] = array( 'content-type', 'application/octet-stream' ); - } - if ( ! $has_content_length ) { - $value[] = array( 'content-length', '0' ); - } - - return $value; - } - - /** - * Returns the value of a specific header that was sent with this request - * - * @param string $name The name of the header to retrieve. - * @return string - */ - public function get_header( $name ) { - $name = $this->normalize_header_name( $name ); - foreach ( $this->get_headers() as list( $header_name, $header_value ) ) { - if ( $header_name === $name ) { - return $header_value; - } - } - return ''; - } - - /** - * Change a header name to all-lowercase and replace spaces and underscores with dashes. - * - * @param string $name The header name to normalize. - * @return string - */ - public function normalize_header_name( $name ) { - return str_replace( array( ' ', '_' ), '-', strtolower( $name ) ); - } - - /** - * Get the method for this request (GET, POST, etc). - * - * @return string - */ - public function get_method() { - return isset( $_SERVER['REQUEST_METHOD'] ) - ? filter_var( wp_unslash( $_SERVER['REQUEST_METHOD'] ), FILTER_DEFAULT ) - : ''; - } - - /** - * Get the protocol for this request (HTTP, HTTPS, etc) - * - * @return string - */ - public function get_protocol() { - return isset( $_SERVER['SERVER_PROTOCOL'] ) - ? filter_var( wp_unslash( $_SERVER['SERVER_PROTOCOL'] ), FILTER_DEFAULT ) - : ''; - } - - /** - * Returns the URL parts for this request. - * - * @see $this->url - * @return array{0: string, 1: string, 2: string} - */ - protected function get_url() { - if ( null !== $this->url ) { - return $this->url; - } - - $uri = isset( $_SERVER['REQUEST_URI'] ) ? filter_var( wp_unslash( $_SERVER['REQUEST_URI'] ), FILTER_DEFAULT ) : '/'; - if ( false !== strpos( $uri, '?' ) ) { - // remove the query string (we'll pull it from elsewhere later) - $uri = urldecode( substr( $uri, 0, strpos( $uri, '?' ) ) ); - } else { - $uri = urldecode( $uri ); - } - $query_string = isset( $_SERVER['QUERY_STRING'] ) ? '?' . filter_var( wp_unslash( $_SERVER['QUERY_STRING'] ), FILTER_DEFAULT ) : ''; - if ( 1 === preg_match( '/^https?:\/\//', $uri ) ) { - // sometimes $_SERVER[REQUEST_URI] already includes the full domain name - $uri_host = substr( $uri, 0, strpos( $uri, '/', 8 ) ); - $uri_path = substr( $uri, strlen( $uri_host ) ); - $this->url = array( $uri_host, $uri_path, $query_string ); - } else { - // otherwise build the URI manually - $uri_scheme = ( ! empty( $_SERVER['HTTPS'] ) && 'off' !== $_SERVER['HTTPS'] ) - ? 'https' - : 'http'; - $uri_host = isset( $_SERVER['HTTP_HOST'] ) - ? filter_var( wp_unslash( $_SERVER['HTTP_HOST'] ), FILTER_DEFAULT ) - : ( - isset( $_SERVER['SERVER_NAME'] ) - ? filter_var( wp_unslash( $_SERVER['SERVER_NAME'] ), FILTER_DEFAULT ) - : '' - ); - $uri_port = isset( $_SERVER['SERVER_PORT'] ) - ? filter_var( wp_unslash( $_SERVER['SERVER_PORT'] ), FILTER_SANITIZE_NUMBER_INT ) - : ''; - // we only need to include the port if it's non-standard - if ( $uri_port && ( 'http' === $uri_scheme && '80' !== $uri_port || 'https' === $uri_scheme && '443' !== $uri_port ) ) { - $uri_port = ':' . $uri_port; - } else { - $uri_port = ''; - } - $this->url = array( - $uri_scheme . '://' . $uri_host . $uri_port, - $uri, - $query_string, - ); - } - return $this->url; - } - - /** - * Get the requested URI - * - * @param boolean $include_host If true, the scheme and domain will be included in the returned string (i.e. 'https://wordpress.com/index.php). - * If false, only the requested URI path will be returned (i.e. '/index.php'). - * @return string - */ - public function get_uri( $include_host = false ) { - list( $host, $file, $query ) = $this->get_url(); - - return ( $include_host ? $host : '' ) . $file . $query; - } - - /** - * Return the filename part of the request - * - * @example for 'https://wordpress.com/some/page?id=5', return '/some/page' - * @return string - */ - public function get_filename() { - return $this->get_url()[1]; - } - - /** - * Return the basename part of the request - * - * @example for 'https://wordpress.com/some/page.php?id=5', return 'page.php' - * @return string - */ - public function get_basename() { - // Get the filename part of the request - $filename = $this->get_filename(); - // Normalize slashes - $filename = str_replace( '\\', '/', $filename ); - // Remove trailing slashes - $filename = rtrim( $filename, '/' ); - // Return the basename - $offset = strrpos( $filename, '/' ); - return $offset !== false ? substr( $filename, $offset + 1 ) : $filename; - } - - /** - * Return the query string. If present, it will be prefixed with '?'. Otherwise, it will be an empty string. - * - * @return string - */ - public function get_query_string() { - return $this->get_url()[2]; - } - - /** - * Returns the request body. - * - * @return string - */ - public function get_body() { - $body = file_get_contents( 'php://input' ); - return false === $body ? '' : $body; - } - - /** - * Returns the cookies - * - * @return array{string, scalar}[] - */ - public function get_cookies() { - return flatten_array( $_COOKIE ); - } - - /** - * Returns the GET variables - * - * @return array{string, scalar}[] - */ - public function get_get_vars() { - return flatten_array( $_GET ); - } - - /** - * Returns the POST variables from a JSON body - * - * @return array{string, scalar}[] - */ - private function get_json_post_vars() { - $decoded_json = json_decode( $this->get_body(), true ) ?? array(); - return flatten_array( $decoded_json, 'json', true ); - } - - /** - * Returns the POST variables from a urlencoded body - * - * @return array{string, scalar}[] - */ - private function get_urlencoded_post_vars() { - parse_str( $this->get_body(), $params ); - return flatten_array( $params ); - } - - /** - * Returns the POST variables - * - * @param string $body_processor Manually specifiy the method to use to process the body. Options are 'URLENCODED' and 'JSON'. - * - * @return array{string, scalar}[] - */ - public function get_post_vars( string $body_processor = '' ) { - $content_type = $this->get_header( 'content-type' ); - - // If the body processor is specified by the rules file, trust it. - if ( 'URLENCODED' === $body_processor ) { - return $this->get_urlencoded_post_vars(); - } - if ( 'JSON' === $body_processor ) { - return $this->get_json_post_vars(); - } - - // Otherwise, use $_POST if it's not empty. - if ( ! empty( $_POST ) ) { - return flatten_array( $_POST ); - } - - // Lastly, try to parse the body based on the content type. - if ( strpos( $content_type, 'application/json' ) !== false ) { - return $this->get_json_post_vars(); - } - if ( strpos( $content_type, 'application/x-www-form-urlencoded' ) !== false ) { - return $this->get_urlencoded_post_vars(); - } - - // Don't try to parse any other content types. - return array(); - } - - /** - * Returns the files that were uploaded with this request (i.e. what's in the $_FILES superglobal) - * - * @return RequestFile[] - */ - public function get_files() { - $files = array(); - foreach ( $_FILES as $field_name => $arr ) { - // flatten the values in case we were given inputs with brackets - foreach ( flatten_array( $arr ) as list( $arr_key, $arr_value ) ) { - if ( $arr_key === 'name' ) { - // if this file was a simple (non-nested) name and unique, then just add it. - $files[] = array( - 'name' => $field_name, - 'filename' => $arr_value, - ); - } elseif ( 'name[' === substr( $arr_key, 0, 5 ) ) { - // otherwise this was a file with a nested name and/or multiple files with the same name - $files[] = array( - 'name' => $field_name . substr( $arr_key, 4 ), - 'filename' => $arr_value, - ); - } - } - } - return $files; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-rules-manager.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-rules-manager.php deleted file mode 100644 index 5303ff35..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-rules-manager.php +++ /dev/null @@ -1,362 +0,0 @@ -get_wp_error(); - } - - update_option( self::RULE_LAST_UPDATED_OPTION_NAME, time() ); - return true; - } - - /** - * Re-activate the WAF any time an option is added or updated. - * - * @return bool|WP_Error True if re-activation is successful, WP_Error on failure. - */ - public static function reactivate_on_rules_option_change() { - try { - Waf_Runner::activate(); - } catch ( Waf_Exception $e ) { - return $e->get_wp_error(); - } - - return true; - } - - /** - * Updates the rule set if rules version has changed - * - * @throws Waf_Exception If the firewall mode is invalid. - * @throws Waf_Exception If the rules update fails. - * - * @return void - */ - public static function update_rules_if_changed() { - $version = get_option( self::VERSION_OPTION_NAME ); - if ( self::RULES_VERSION !== $version ) { - self::generate_automatic_rules(); - self::generate_ip_rules(); - self::generate_rules(); - - update_option( self::VERSION_OPTION_NAME, self::RULES_VERSION ); - } - } - - /** - * Retrieve rules from the API - * - * @throws Waf_Exception If site is not registered. - * @throws Rules_API_Exception If API did not respond 200. - * @throws Rules_API_Exception If data is missing from response. - * - * @return array - */ - public static function get_rules_from_api() { - $blog_id = Jetpack_Options::get_option( 'id' ); - if ( ! $blog_id ) { - throw new Waf_Exception( 'Site is not registered' ); - } - - $response = Client::wpcom_json_api_request_as_blog( - sprintf( '/sites/%s/waf-rules', $blog_id ), - '2', - array(), - null, - 'wpcom' - ); - - $response_code = wp_remote_retrieve_response_code( $response ); - - if ( 200 !== $response_code ) { - throw new Rules_API_Exception( 'API connection failed.', (int) $response_code ); - } - - $rules_json = wp_remote_retrieve_body( $response ); - $rules = json_decode( $rules_json, true ); - - if ( empty( $rules['data'] ) ) { - throw new Rules_API_Exception( 'Data missing from response.' ); - } - - return $rules['data']; - } - - /** - * Wraps a require statement in a file_exists check. - * - * @param string $required_file The file to check if exists and require. - * @param string $return_code The PHP code to execute if the file require returns true. Defaults to 'return;'. - * - * @return string The wrapped require statement. - */ - private static function wrap_require( $required_file, $return_code = 'return;' ) { - return "if ( file_exists( '$required_file' ) ) { if ( require( '$required_file' ) ) { $return_code } }"; - } - - /** - * Generates the rules.php script - * - * @global \WP_Filesystem_Base $wp_filesystem WordPress filesystem abstraction. - * - * @throws File_System_Exception If file writing fails initializing rule files. - * @throws File_System_Exception If file writing fails writing to the rules entrypoint file. - * - * @return void - */ - public static function generate_rules() { - global $wp_filesystem; - Waf_Runner::initialize_filesystem(); - Waf_Constants::define_entrypoint(); - - $rules = "is_dir( dirname( $entrypoint_file_path ) ) ) { - $wp_filesystem->mkdir( dirname( $entrypoint_file_path ) ); - } - - // Ensure all potentially required rule files exist - $rule_files = array( JETPACK_WAF_ENTRYPOINT, self::AUTOMATIC_RULES_FILE, self::IP_ALLOW_RULES_FILE, self::IP_BLOCK_RULES_FILE ); - foreach ( $rule_files as $rule_file ) { - $rule_file = Waf_Runner::get_waf_file_path( $rule_file ); - if ( ! $wp_filesystem->is_file( $rule_file ) ) { - if ( ! $wp_filesystem->put_contents( $rule_file, "block( 'block', -1, 'ip block list' );" ) . "\n"; - } - - // Add automatic rules - if ( self::automatic_rules_enabled() ) { - $rules .= self::wrap_require( Waf_Runner::get_waf_file_path( self::AUTOMATIC_RULES_FILE ) ) . "\n"; - } - - // Update the rules file - if ( ! $wp_filesystem->put_contents( $entrypoint_file_path, $rules ) ) { - throw new File_System_Exception( 'Failed writing rules file to: ' . $entrypoint_file_path ); - } - } - - /** - * Generates the automatic-rules.php script - * - * @global \WP_Filesystem_Base $wp_filesystem WordPress filesystem abstraction. - * - * @throws Waf_Exception If rules cannot be fetched from the API. - * @throws File_System_Exception If file writing fails. - * - * @return void - */ - public static function generate_automatic_rules() { - global $wp_filesystem; - Waf_Runner::initialize_filesystem(); - - $automatic_rules_file_path = Waf_Runner::get_waf_file_path( self::AUTOMATIC_RULES_FILE ); - - // Ensure that the folder exists. - if ( ! $wp_filesystem->is_dir( dirname( $automatic_rules_file_path ) ) ) { - $wp_filesystem->mkdir( dirname( $automatic_rules_file_path ) ); - } - - try { - $rules = self::get_rules_from_api(); - } catch ( Waf_Exception $e ) { - // Do not throw API exceptions for users who do not have access - if ( 401 !== $e->getCode() ) { - throw $e; - } - } - - // If there are no rules available, don't overwrite the existing file. - if ( empty( $rules ) ) { - return; - } - - if ( ! $wp_filesystem->put_contents( $automatic_rules_file_path, $rules ) ) { - throw new File_System_Exception( 'Failed writing automatic rules file to: ' . $automatic_rules_file_path ); - } - - update_option( self::AUTOMATIC_RULES_LAST_UPDATED_OPTION_NAME, time() ); - } - - /** - * Generates the rules.php script - * - * @global \WP_Filesystem_Base $wp_filesystem WordPress filesystem abstraction. - * - * @throws File_System_Exception If writing to IP allow list file fails. - * @throws File_System_Exception If writing to IP block list file fails. - * - * @return void - */ - public static function generate_ip_rules() { - global $wp_filesystem; - Waf_Runner::initialize_filesystem(); - - $allow_ip_file_path = Waf_Runner::get_waf_file_path( self::IP_ALLOW_RULES_FILE ); - $block_ip_file_path = Waf_Runner::get_waf_file_path( self::IP_BLOCK_RULES_FILE ); - - // Ensure that the folders exists. - if ( ! $wp_filesystem->is_dir( dirname( $allow_ip_file_path ) ) ) { - $wp_filesystem->mkdir( dirname( $allow_ip_file_path ) ); - } - if ( ! $wp_filesystem->is_dir( dirname( $block_ip_file_path ) ) ) { - $wp_filesystem->mkdir( dirname( $block_ip_file_path ) ); - } - - $allow_list = IP_Utils::get_ip_addresses_from_string( get_option( self::IP_ALLOW_LIST_OPTION_NAME ) ); - $block_list = IP_Utils::get_ip_addresses_from_string( get_option( self::IP_BLOCK_LIST_OPTION_NAME ) ); - - $allow_rules_content = ''; - // phpcs:disable WordPress.PHP.DevelopmentFunctions - $allow_rules_content .= '$waf_allow_list = ' . var_export( $allow_list, true ) . ";\n"; - // phpcs:enable - $allow_rules_content .= 'return $waf->is_ip_in_array( $waf_allow_list );' . "\n"; - - if ( ! $wp_filesystem->put_contents( $allow_ip_file_path, "is_ip_in_array( $waf_block_list );' . "\n"; - - if ( ! $wp_filesystem->put_contents( $block_ip_file_path, "is_wpcom_simple() ) { - return false; - } - - // Do not run on the Atomic platform - if ( ( new Host() )->is_atomic_platform() ) { - return false; - } - - // Do not run on the VIP platform - if ( ( new Host() )->is_vip_site() ) { - return false; - } - - return true; - } - - /** - * Determines if the WAF module is enabled on the site. - * - * @return bool - */ - public static function is_enabled() { - // if ABSPATH is defined, then WordPress has already been instantiated, - // so we can check to see if the waf module is activated. - if ( defined( 'ABSPATH' ) ) { - return ( new Modules() )->is_active( self::WAF_MODULE_NAME ); - } - - return true; - } - - /** - * Enables the WAF module on the site. - * - * @return bool - */ - public static function enable() { - return ( new Modules() )->activate( self::WAF_MODULE_NAME, false, false ); - } - - /** - * Disabled the WAF module on the site. - * - * @return bool - */ - public static function disable() { - return ( new Modules() )->deactivate( self::WAF_MODULE_NAME ); - } - - /** - * Get Config - * - * @return array The WAF settings and current configuration data. - */ - public static function get_config() { - return array( - Waf_Rules_Manager::AUTOMATIC_RULES_ENABLED_OPTION_NAME => Waf_Rules_Manager::automatic_rules_enabled(), - Waf_Rules_Manager::IP_ALLOW_LIST_OPTION_NAME => get_option( Waf_Rules_Manager::IP_ALLOW_LIST_OPTION_NAME ), - Waf_Rules_Manager::IP_ALLOW_LIST_ENABLED_OPTION_NAME => Waf_Rules_Manager::ip_allow_list_enabled(), - Waf_Rules_Manager::IP_BLOCK_LIST_OPTION_NAME => get_option( Waf_Rules_Manager::IP_BLOCK_LIST_OPTION_NAME ), - Waf_Rules_Manager::IP_BLOCK_LIST_ENABLED_OPTION_NAME => Waf_Rules_Manager::ip_block_list_enabled(), - self::SHARE_DATA_OPTION_NAME => get_option( self::SHARE_DATA_OPTION_NAME ), - self::SHARE_DEBUG_DATA_OPTION_NAME => get_option( self::SHARE_DEBUG_DATA_OPTION_NAME ), - 'bootstrap_path' => self::get_bootstrap_file_path(), - 'standalone_mode' => self::get_standalone_mode_status(), - 'automatic_rules_available' => (bool) self::automatic_rules_available(), - 'brute_force_protection' => (bool) Brute_Force_Protection::is_enabled(), - - /** - * Provide the deprecated IP lists options for backwards compatibility with older versions of the Jetpack and Protect plugins. - * i.e. If one plugin is updated and the other is not, the latest version of this package will be used by both plugins. - * - * @deprecated 0.17.0 - */ - // @phan-suppress-next-line PhanDeprecatedClassConstant -- Needed for backwards compatibility. - Waf_Rules_Manager::IP_LISTS_ENABLED_OPTION_NAME => Waf_Rules_Manager::ip_allow_list_enabled() || Waf_Rules_Manager::ip_block_list_enabled(), - ); - } - - /** - * Get Bootstrap File Path - * - * @return string The path to the Jetpack Firewall's bootstrap.php file. - */ - private static function get_bootstrap_file_path() { - $bootstrap = new Waf_Standalone_Bootstrap(); - return $bootstrap->get_bootstrap_file_path(); - } - - /** - * Get WAF standalone mode status - * - * @return bool|array True if WAF standalone mode is enabled, false otherwise. - */ - public static function get_standalone_mode_status() { - return defined( 'JETPACK_WAF_RUN' ) && JETPACK_WAF_RUN === 'preload'; - } - - /** - * Get WAF File Path - * - * @param string $file The file path starting in the WAF directory. - * @return string The full file path to the provided file in the WAF directory. - */ - public static function get_waf_file_path( $file ) { - Waf_Constants::define_waf_directory(); - - // Ensure the file path starts with a slash. - if ( '/' !== substr( $file, 0, 1 ) ) { - $file = "/$file"; - } - - return JETPACK_WAF_DIR . $file; - } - - /** - * Runs the WAF and potentially stops the request if a problem is found. - * - * @return void - */ - public static function run() { - // Make double-sure we are only running once. - if ( self::did_run() ) { - return; - } - - Waf_Constants::initialize_constants(); - - // if ABSPATH is defined, then WordPress has already been instantiated, - // and we're running as a plugin (meh). Otherwise, we're running via something - // like PHP's prepend_file setting (yay!). - define( 'JETPACK_WAF_RUN', defined( 'ABSPATH' ) ? 'plugin' : 'preload' ); - - // if the WAF is being run before a command line script, don't try to execute rules (there's no request). - if ( PHP_SAPI === 'cli' ) { - return; - } - - // if something terrible happens during the WAF running, we don't want to interfere with the rest of the site, - // so we intercept errors ONLY while the WAF is running, then we remove our handler after the WAF finishes. - $display_errors = ini_get( 'display_errors' ); - - ini_set( 'display_errors', 'Off' ); // phpcs:ignore WordPress.PHP.IniSet.display_errors_Disallowed -- We only customize error reporting while the WAF is running, and remove our handler afterwards. - - set_error_handler( array( self::class, 'errorHandler' ) ); // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_set_error_handler -- We only customize error reporting while the WAF is running, and remove our handler afterwards. - - try { - - // phpcs:ignore - $waf = new Waf_Runtime( new Waf_Transforms(), new Waf_Operators() ); - - // execute waf rules. - $rules_file_path = self::get_waf_file_path( JETPACK_WAF_ENTRYPOINT ); - if ( file_exists( $rules_file_path ) ) { - // phpcs:ignore - include $rules_file_path; - } - } catch ( \Exception $err ) { // phpcs:ignore - // Intentionally doing nothing. - } - - // remove the custom error handler, so we don't interfere with the site. - restore_error_handler(); - - // Restore the original value. - ini_set( 'display_errors', $display_errors ); // phpcs:ignore WordPress.PHP.IniSet.display_errors_Disallowed -- We only customize error reporting while the WAF is running, and remove our handler afterwards. - } - - /** - * Error handler to be used while the WAF is being executed. - * - * @param int $code The error code. - * @param string $message The error message. - * @param string $file File with the error. - * @param string $line Line of the error. - * @return void - */ - public static function errorHandler( $code, $message, $file, $line ) { // phpcs:ignore - // Intentionally doing nothing for now. - } - - /** - * Initializes the WP filesystem and WAF directory structure. - * - * @throws File_System_Exception If filesystem is unavailable. - * - * @return void - */ - public static function initialize_filesystem() { - if ( ! function_exists( '\\WP_Filesystem' ) ) { - require_once ABSPATH . 'wp-admin/includes/file.php'; - } - - if ( ! \WP_Filesystem() ) { - throw new File_System_Exception( 'No filesystem available.' ); - } - - self::initialize_waf_directory(); - } - - /** - * Activates the WAF by generating the rules script and setting the version - * - * @throws Waf_Exception If the firewall mode is invalid. - * @throws Waf_Exception If the activation fails. - * - * @return void - */ - public static function activate() { - $version = get_option( Waf_Rules_Manager::VERSION_OPTION_NAME ); - if ( ! $version ) { - add_option( Waf_Rules_Manager::VERSION_OPTION_NAME, Waf_Rules_Manager::RULES_VERSION ); - } - - add_option( self::SHARE_DATA_OPTION_NAME, true ); - - self::initialize_filesystem(); - - Waf_Rules_Manager::generate_automatic_rules(); - Waf_Rules_Manager::generate_ip_rules(); - Waf_Rules_Manager::generate_rules(); - - Waf_Blocklog_Manager::create_blocklog_table(); - } - - /** - * Ensures that the waf directory is created. - * - * @throws File_System_Exception If filesystem is unavailable. - * @throws File_System_Exception If creating the directory fails. - * - * @return void - */ - public static function initialize_waf_directory() { - WP_Filesystem(); - Waf_Constants::define_waf_directory(); - - global $wp_filesystem; - if ( ! $wp_filesystem ) { - throw new File_System_Exception( 'Can not work without the file system being initialized.' ); - } - - if ( ! $wp_filesystem->is_dir( JETPACK_WAF_DIR ) ) { - if ( ! $wp_filesystem->mkdir( JETPACK_WAF_DIR ) ) { - throw new File_System_Exception( 'Failed creating WAF file directory: ' . JETPACK_WAF_DIR ); - } - } - } - - /** - * Deactivates the WAF by deleting the relevant options and emptying rules file. - * - * @throws File_System_Exception If file writing fails. - * - * @return void - */ - public static function deactivate() { - delete_option( self::MODE_OPTION_NAME ); - delete_option( Waf_Rules_Manager::VERSION_OPTION_NAME ); - - global $wp_filesystem; - self::initialize_filesystem(); - Waf_Constants::define_entrypoint(); - - // If the rules file doesn't exist, there's nothing else to do. - if ( ! $wp_filesystem->exists( self::get_waf_file_path( JETPACK_WAF_ENTRYPOINT ) ) ) { - return; - } - - // Empty the rules entrypoint file. - if ( ! $wp_filesystem->put_contents( self::get_waf_file_path( JETPACK_WAF_ENTRYPOINT ), "generate(); - } - - /** - * Check if an automatic rules file is available - * - * @return bool False if an automatic rules file is not available, true otherwise - */ - public static function automatic_rules_available() { - $automatic_rules_last_updated = get_option( Waf_Rules_Manager::AUTOMATIC_RULES_LAST_UPDATED_OPTION_NAME ); - - // If we do not have a automatic rules last updated timestamp cached, return false. - if ( ! $automatic_rules_last_updated ) { - return false; - } - - // Validate that the automatic rules file exists and is not empty. - global $wp_filesystem; - - try { - self::initialize_filesystem(); - } catch ( Waf_Exception $e ) { - return false; - } - - $automatic_rules_file_contents = $wp_filesystem->get_contents( self::get_waf_file_path( Waf_Rules_Manager::AUTOMATIC_RULES_FILE ) ); - - // If the automatic rules file was removed or is now empty, return false. - if ( ! $automatic_rules_file_contents || " -PHAN; - -/** - * Waf_Runtime class - */ -class Waf_Runtime { - /** - * If used, normalize_array_targets() will just return the number of matching values, instead of the values themselves. - */ - const NORMALIZE_ARRAY_COUNT = 1; - /** - * If used, normalize_array_targets() will apply "only" and "except" filters to the values of the source array, instead of the keys. - */ - const NORMALIZE_ARRAY_MATCH_VALUES = 2; - - /** - * The version of this runtime class. Used by rule files to ensure compatibility. - * - * @since 0.21.0 - * - * @var int - */ - public $version = 1; - /** - * Last rule. - * - * @var string - */ - public $last_rule = ''; - /** - * Matched vars. - * - * @var array - */ - public $matched_vars = array(); - /** - * Matched var. - * - * @var string - */ - public $matched_var = ''; - /** - * Matched var names. - * - * @var array - */ - public $matched_var_names = array(); - /** - * Matched var name. - * - * @var string - */ - public $matched_var_name = ''; - /** - * Body Processor. - * - * @var string 'URLENCODED' | 'JSON' | '' - */ - private $body_processor = ''; - - /** - * State. - * - * @var array - */ - private $state = array(); - /** - * Metadata. - * - * @var array - */ - private $metadata = array(); - - /** - * Transforms. - * - * @var Waf_Transforms - */ - private $transforms; - /** - * Operators. - * - * @var Waf_Operators - */ - private $operators; - - /** - * The request - * - * @var Waf_Request - */ - private $request; - - /** - * Rules to remove. - * - * @var array[] - */ - private $rules_to_remove = array( - 'id' => array(), - 'tag' => array(), - ); - - /** - * Targets to remove. - * - * @var array[] - */ - private $targets_to_remove = array( - 'id' => array(), - 'tag' => array(), - ); - - /** - * Constructor method. - * - * @param Waf_Transforms $transforms Transforms. - * @param Waf_Operators $operators Operators. - * @param ?Waf_Request $request Information about the request. - */ - public function __construct( $transforms, $operators, $request = null ) { - $this->transforms = $transforms; - $this->operators = $operators; - $this->request = null === $request - ? new Waf_Request() - : $request; - } - - /** - * Rule removed method. - * - * @param string $id Ids. - * @param string[] $tags Tags. - */ - public function rule_removed( $id, $tags ) { - if ( isset( $this->rules_to_remove['id'][ $id ] ) ) { - return true; - } - foreach ( $tags as $tag ) { - if ( isset( $this->rules_to_remove['tag'][ $tag ] ) ) { - return true; - } - } - return false; - } - - /** - * Update Targets. - * - * @param array $targets Targets. - * @param string $rule_id Rule id. - * @param string[] $rule_tags Rule tags. - */ - public function update_targets( $targets, $rule_id, $rule_tags ) { - $updates = array(); - // look for target updates based on the rule's ID. - if ( isset( $this->targets_to_remove['id'][ $rule_id ] ) ) { - foreach ( $this->targets_to_remove['id'][ $rule_id ] as $name => $props ) { - $updates[] = array( $name, $props ); - } - } - // look for target updates based on the rule's tags. - foreach ( $rule_tags as $tag ) { - if ( isset( $this->targets_to_remove['tag'][ $tag ] ) ) { - foreach ( $this->targets_to_remove['tag'][ $tag ] as $name => $props ) { - $updates[] = array( $name, $props ); - } - } - } - // apply any found target updates. - - foreach ( $updates as list( $name, $props ) ) { - if ( isset( $targets[ $name ] ) ) { - // we only need to remove targets that exist. - if ( true === $props ) { - // if the entire target is being removed, remove it. - unset( $targets[ $name ] ); - } else { - // otherwise just mark single props to ignore. - $targets[ $name ]['except'] = array_merge( - isset( $targets[ $name ]['except'] ) ? $targets[ $name ]['except'] : array(), - $props - ); - } - } - } - return $targets; - } - - /** - * Return TRUE if at least one of the targets matches the rule. - * - * @param string[] $transforms One of the transform methods defined in the Jetpack Waf_Transforms class. - * @param TargetBag $targets Targets. - * @param string $match_operator Match operator. - * @param mixed $match_value Match value. - * @param bool $match_not Match not. - * @param bool $capture Capture. - * @return bool - */ - public function match_targets( $transforms, $targets, $match_operator, $match_value, $match_not, $capture = false ) { - $this->matched_vars = array(); - $this->matched_var_names = array(); - $this->matched_var = ''; - $this->matched_var_name = ''; - $match_found = false; - - // get values. - $values = $this->normalize_targets( $targets ); - - // apply transforms. - foreach ( $transforms as $t ) { - foreach ( $values as &$v ) { - $v['value'] = $this->transforms->$t( $v['value'] ); - } - } - unset( $v ); - // pass each target value to the operator to find any that match. - $matched = array(); - $captures = array(); - foreach ( $values as $v ) { - $match = $this->operators->{$match_operator}( $v['value'], $match_value ); - $did_match = false !== $match; - if ( $match_not !== $did_match ) { - // If either: - // - rule is negated ("not" flag set) and the target was not matched - // - rule not negated and the target was matched - // then this is considered a match. - $match_found = true; - $this->matched_var_names[] = $v['source']; - $this->matched_vars[] = $v['value']; - $this->matched_var_name = end( $this->matched_var_names ); - $this->matched_var = end( $this->matched_vars ); - $matched[] = array( $v, $match ); - // Set any captured matches into state if the rule has the "capture" flag. - if ( $capture ) { - $captures = is_array( $match ) ? $match : array( $match ); - foreach ( array_slice( $captures, 0, 10 ) as $i => $c ) { - $this->set_var( "tx.$i", $c ); - } - } - } - } - - return $match_found; - } - - /** - * Block. - * - * @param string $action Action. - * @param string $rule_id Rule id. - * @param string $reason Block reason. - * @param int $status_code Http status code. - */ - public function block( $action, $rule_id, $reason, $status_code = 403 ) { - if ( ! $reason ) { - $reason = "rule $rule_id"; - } else { - $reason = $this->sanitize_output( $reason ); - } - - Waf_Blocklog_Manager::write_blocklog( $rule_id, $reason ); - error_log( "Jetpack WAF Blocked Request\t$action\t$rule_id\t$status_code\t$reason" ); - header( "X-JetpackWAF-Blocked: $status_code - rule $rule_id" ); - if ( defined( 'JETPACK_WAF_MODE' ) && 'normal' === JETPACK_WAF_MODE ) { - $protocol = isset( $_SERVER['SERVER_PROTOCOL'] ) ? wp_unslash( $_SERVER['SERVER_PROTOCOL'] ) : 'HTTP'; - header( $protocol . ' 403 Forbidden', true, $status_code ); - die( "rule $rule_id - reason $reason" ); - } - } - - /** - * Redirect. - * - * @param string $rule_id Rule id. - * @param string $url Url. - * @return never - */ - public function redirect( $rule_id, $url ) { - error_log( "Jetpack WAF Redirected Request.\tRule:$rule_id\t$url" ); - header( "Location: $url" ); - exit( 0 ); - } - - /** - * Flag rule for removal. - * - * @param string $prop Prop. - * @param string $value Value. - */ - public function flag_rule_for_removal( $prop, $value ) { - if ( 'id' === $prop ) { - $this->rules_to_remove['id'][ $value ] = true; - } else { - $this->rules_to_remove['tag'][ $value ] = true; - } - } - - /** - * Flag target for removal. - * - * @param string $id_or_tag Id or tag. - * @param string $id_or_tag_value Id or tag value. - * @param string $name Name. - * @param string $prop Prop. - */ - public function flag_target_for_removal( $id_or_tag, $id_or_tag_value, $name, $prop = null ) { - if ( null === $prop ) { - $this->targets_to_remove[ $id_or_tag ][ $id_or_tag_value ][ $name ] = true; - } elseif ( - ! isset( $this->targets_to_remove[ $id_or_tag ][ $id_or_tag_value ][ $name ] ) - // if the entire target is already being removed then it would be redundant to remove a single property. - || true !== $this->targets_to_remove[ $id_or_tag ][ $id_or_tag_value ][ $name ] - ) { - $this->targets_to_remove[ $id_or_tag ][ $id_or_tag_value ][ $name ][] = $prop; - } - } - - /** - * Get variable value. - * - * @param string $key Key. - */ - public function get_var( $key ) { - return isset( $this->state[ $key ] ) - ? $this->state[ $key ] - : ''; - } - - /** - * Set variable value. - * - * @param string $key Key. - * @param string $value Value. - */ - public function set_var( $key, $value ) { - $this->state[ $key ] = $value; - } - - /** - * Increment variable. - * - * @param string $key Key. - * @param mixed $value Value. - */ - public function inc_var( $key, $value ) { - if ( ! isset( $this->state[ $key ] ) ) { - $this->state[ $key ] = 0; - } - $this->state[ $key ] += floatval( $value ); - } - - /** - * Decrement variable. - * - * @param string $key Key. - * @param mixed $value Value. - */ - public function dec_var( $key, $value ) { - if ( ! isset( $this->state[ $key ] ) ) { - $this->state[ $key ] = 0; - } - $this->state[ $key ] -= floatval( $value ); - } - - /** - * Unset variable. - * - * @param string $key Key. - */ - public function unset_var( $key ) { - unset( $this->state[ $key ] ); - } - - /** - * A cache of metadata about the incoming request. - * - * @param string $key The type of metadata to request ('headers', 'request_method', etc.). - */ - public function meta( $key ) { - if ( ! isset( $this->metadata[ $key ] ) ) { - $value = null; - switch ( $key ) { - case 'headers': - $value = $this->request->get_headers(); - break; - case 'headers_names': - $value = $this->args_names( $this->meta( 'headers' ) ); - break; - case 'request_method': - $value = $this->request->get_method(); - break; - case 'request_protocol': - $value = $this->request->get_protocol(); - break; - case 'request_uri': - $value = $this->request->get_uri( false ); - break; - case 'request_uri_raw': - $value = $this->request->get_uri( true ); - break; - case 'request_filename': - $value = $this->request->get_filename(); - break; - case 'request_line': - $value = sprintf( - '%s %s %s', - $this->request->get_method(), - $this->request->get_uri( false ), - $this->request->get_protocol() - ); - break; - case 'request_basename': - $value = $this->request->get_basename(); - break; - case 'request_body': - $value = $this->request->get_body(); - break; - case 'query_string': - $value = $this->request->get_query_string(); - break; - case 'args_get': - $value = $this->request->get_get_vars(); - break; - case 'args_get_names': - $value = $this->args_names( $this->meta( 'args_get' ) ); - break; - case 'args_post': - $value = $this->request->get_post_vars( $this->get_body_processor() ); - break; - case 'args_post_names': - $value = $this->args_names( $this->meta( 'args_post' ) ); - break; - case 'args': - $value = array_merge( $this->meta( 'args_get' ), $this->meta( 'args_post' ) ); - break; - case 'args_names': - $value = $this->args_names( $this->meta( 'args' ) ); - break; - case 'request_cookies': - $value = $this->request->get_cookies(); - break; - case 'request_cookies_names': - $value = $this->args_names( $this->meta( 'request_cookies' ) ); - break; - case 'files': - $value = array(); - foreach ( $this->request->get_files() as $f ) { - $value[] = array( $f['name'], $f['filename'] ); - } - break; - case 'files_names': - $value = $this->args_names( $this->meta( 'files' ) ); - break; - } - $this->metadata[ $key ] = $value; - } - - return $this->metadata[ $key ]; - } - - /** - * State values. - * - * @param string $prefix Prefix. - */ - private function state_values( $prefix ) { - $output = array(); - $len = strlen( $prefix ); - foreach ( $this->state as $k => $v ) { - if ( 0 === stripos( $k, $prefix ) ) { - $output[ substr( $k, $len ) ] = $v; - } - } - - return $output; - } - - /** - * Get the body processor. - * - * @return string - */ - private function get_body_processor() { - return $this->body_processor; - } - - /** - * Set the body processor. - * - * @param string $processor Processor to set. Either 'URLENCODED' or 'JSON'. - * - * @return void - */ - public function set_body_processor( $processor ) { - if ( $processor === 'URLENCODED' || $processor === 'JSON' ) { - $this->body_processor = $processor; - } - } - - /** - * Change a string to all lowercase and replace spaces and underscores with dashes. - * - * @param string $name Name. - * @return string - */ - public function normalize_header_name( $name ) { - return str_replace( array( ' ', '_' ), '-', strtolower( $name ) ); - } - - /** - * Get match-able values from a collection of targets. - * - * This function expects an associative array of target items, and returns an array of possible values from those targets that can be used to match against. - * The key is the lowercase target name (i.e. `args`, `request_headers`, etc) - see https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual-(v3.x)#Variables - * The value is an associative array of options that define how to narrow down the returned values for that target if it's an array (ARGS, for example). The possible options are: - * count: If `true`, then the returned value will a count of how many matched targets were found, rather then the actual values of those targets. - * For example, &ARGS_GET will return the number of keys the query string. - * only: If specified, then only values in that target that match the given key will be returned. - * For example, ARGS_GET:id|ARGS_GET:/^name/ will only return the values for `$_GET['id']` and any key in `$_GET` that starts with `name` - * except: If specified, then values in that target will be left out from the returned values (even if they were included in an `only` option) - * For example, ARGS_GET|!ARGS_GET:z will return every value from `$_GET` except for `$_GET['z']`. - * - * This function will return an array of associative arrays. Each with: - * name: The target name that this value came from (i.e. the key in the input `$targets` argument ) - * source: For targets that are associative arrays (like ARGS), this will be the target name AND the key in that target (i.e. "args:z" for ARGS:z) - * value: The value that was found in the associated target. - * - * @param TargetBag $targets An assoc. array with keys that are target name(s) and values are options for how to process that target (include/exclude rules, whether to return values or counts). - * @return array{name: string, source: string, value: mixed}[] - */ - public function normalize_targets( $targets ) { - $return = array(); - foreach ( $targets as $k => $v ) { - $count_only = isset( $v['count'] ) ? self::NORMALIZE_ARRAY_COUNT : 0; - $only = isset( $v['only'] ) ? $v['only'] : array(); - $except = isset( $v['except'] ) ? $v['except'] : array(); - $_k = strtolower( $k ); - switch ( $_k ) { - case 'request_headers': - $this->normalize_array_target( - // get the headers that came in with this request - $this->meta( 'headers' ), - // ensure only and exclude filters are normalized - array_map( array( $this->request, 'normalize_header_name' ), $only ), - array_map( array( $this->request, 'normalize_header_name' ), $except ), - $k, - $return, - // flags - $count_only - ); - continue 2; - case 'request_headers_names': - $this->normalize_array_target( $this->meta( 'headers_names' ), $only, $except, $k, $return, $count_only | self::NORMALIZE_ARRAY_MATCH_VALUES ); - continue 2; - case 'request_method': - case 'request_protocol': - case 'request_uri': - case 'request_uri_raw': - case 'request_filename': - case 'request_basename': - case 'request_body': - case 'query_string': - case 'request_line': - $v = $this->meta( $_k ); - break; - case 'tx': - case 'ip': - $this->normalize_array_target( $this->state_values( "$k." ), $only, $except, $k, $return, $count_only ); - continue 2; - case 'request_cookies': - case 'args': - case 'args_get': - case 'args_post': - case 'files': - $this->normalize_array_target( $this->meta( $_k ), $only, $except, $k, $return, $count_only ); - continue 2; - case 'request_cookies_names': - case 'args_names': - case 'args_get_names': - case 'args_post_names': - case 'files_names': - // get the "full" data (for 'args_names' get data for 'args') and stripe it down to just the key names - $data = array_map( - function ( $item ) { - return $item[0]; }, - $this->meta( substr( $_k, 0, -6 ) ) - ); - $this->normalize_array_target( $data, $only, $except, $k, $return, $count_only | self::NORMALIZE_ARRAY_MATCH_VALUES ); - continue 2; - default: - var_dump( 'Unknown target', $k, $v ); - exit( 0 ); - } - $return[] = array( - 'name' => $k, - 'value' => $v, - 'source' => $k, - ); - } - - return $return; - } - - /** - * Verifies if the IP from the current request is in an array. - * - * @param array $array Array of IP addresses to verify the request IP against. - * @return bool - */ - public function is_ip_in_array( $array ) { - $real_ip = $this->request->get_real_user_ip_address(); - $array_length = count( $array ); - - for ( $i = 0; $i < $array_length; $i++ ) { - // Check if the IP matches a provided range or CIDR notation. - $range = strpos( $array[ $i ], '/' ) !== false ? array( $array[ $i ], null ) : explode( '-', $array[ $i ] ); - if ( count( $range ) === 2 ) { - if ( IP_Utils::ip_address_is_in_range( $real_ip, $range[0], $range[1] ) ) { - return true; - } - continue; - } - - // Check if the IP is an exact match. - if ( $real_ip === $array[ $i ] ) { - return true; - } - } - - return false; - } - - /** - * Extract values from an associative array, potentially applying filters and/or counting results. - * - * @param array{0: string, 1: scalar}|scalar[] $source The source assoc. array of values (i.e. $_GET, $_SERVER, etc.). - * @param string[] $only Only include the values for these keys in the output. - * @param string[] $excl Never include the values for these keys in the output. - * @param string $name The name of this target (see https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual-(v3.x)#Variables). - * @param array $results Array to add output values to, will be modified by this method. - * @param int $flags Any of the NORMALIZE_ARRAY_* constants defined at the top of the class. - */ - private function normalize_array_target( $source, $only, $excl, $name, &$results, $flags = 0 ) { - $output = array(); - $has_only = isset( $only[0] ); - $has_excl = isset( $excl[0] ); - - foreach ( $source as $source_key => $source_val ) { - if ( is_array( $source_val ) ) { - // if $source_val looks like a tuple from flatten_array(), then use the tuple as the key and value - $source_key = $source_val[0]; - $source_val = $source_val[1]; - } - $filter_match = ( $flags & self::NORMALIZE_ARRAY_MATCH_VALUES ) > 0 ? $source_val : $source_key; - // if this key is on the "exclude" list, skip it - if ( $has_excl && $this->key_matches( $filter_match, $excl ) ) { - continue; - } - // if this key isn't in our "only" list, then skip it - if ( $has_only && ! $this->key_matches( $filter_match, $only ) ) { - continue; - } - // otherwise add this key/value to our output - $output[] = array( $source_key, $source_val ); - } - - if ( ( $flags & self::NORMALIZE_ARRAY_COUNT ) > 0 ) { - // If we've been told to just count the values, then just count them. - $results[] = array( - 'name' => (string) $name, - 'value' => count( $output ), - 'source' => '&' . $name, - ); - } else { - foreach ( $output as list( $item_name, $item_value ) ) { - $results[] = array( - 'name' => (string) $item_name, - 'value' => $item_value, - 'source' => "$name:$item_name", - ); - } - } - - return $results; - } - - /** - * Given an array of tuples - probably from flatten_array() - return a new array - * consisting of only the first value (the key name) from each tuple. - * - * @param array{0:string, 1:scalar}[] $flat_array An array of tuples. - * @return string[] - */ - private function args_names( $flat_array ) { - $names = array_map( - function ( $tuple ) { - return $tuple[0]; - }, - $flat_array - ); - return array_unique( $names ); - } - - /** - * Return whether or not a given $input key matches one of the given $patterns. - * - * @param string $input Key name to test against patterns. - * @param string[] $patterns Patterns to test key name with. - * @return bool - */ - private function key_matches( $input, $patterns ) { - foreach ( $patterns as $p ) { - if ( '/' === $p[0] ) { - if ( 1 === preg_match( $p, $input ) ) { - return true; - } - } elseif ( 0 === strcasecmp( $p, $input ) ) { - return true; - } - } - - return false; - } - - /** - * Sanitize output generated from the request that was blocked. - * - * @param string $output Output to sanitize. - */ - public function sanitize_output( $output ) { - $url_decoded_output = rawurldecode( $output ); - $html_entities_output = htmlentities( $url_decoded_output, ENT_QUOTES, 'UTF-8' ); - // @phpcs:disable Squiz.Strings.DoubleQuoteUsage.NotRequired - $escapers = array( "\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c" ); - $replacements = array( "\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b" ); - // @phpcs:enable Squiz.Strings.DoubleQuoteUsage.NotRequired - - return( str_replace( $escapers, $replacements, $html_entities_output ) ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-standalone-bootstrap.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-standalone-bootstrap.php deleted file mode 100644 index 61a930b2..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-standalone-bootstrap.php +++ /dev/null @@ -1,184 +0,0 @@ -guard_against_missing_abspath(); - $this->initialize_constants(); - } - - /** - * Ensures that this class is not used unless we are in the right context. - * - * @throws Waf_Exception If we are outside of WordPress. - * - * @return void - */ - private function guard_against_missing_abspath() { - - if ( ! defined( 'ABSPATH' ) ) { - throw new Waf_Exception( 'Cannot generate the WAF bootstrap if we are not running in WordPress context.' ); - } - } - - /** - * Initializes the constants required for generating the bootstrap, if they have not been initialized yet. - * - * @return void - */ - private function initialize_constants() { - Waf_Constants::initialize_constants(); - } - - /** - * Initialized the WP filesystem and serves as a mocking hook for tests. - * - * Should only be implemented after the wp_loaded action hook: - * - * @link https://developer.wordpress.org/reference/functions/wp_filesystem/#more-information - * - * @return void - */ - protected function initialize_filesystem() { - if ( ! function_exists( '\\WP_Filesystem' ) ) { - require_once ABSPATH . 'wp-admin/includes/file.php'; - } - - WP_Filesystem(); - } - - /** - * Finds the path to the autoloader, which can then be used to require the autoloader in the generated boostrap file. - * - * @throws Waf_Exception In case the autoloader file can not be found. - * - * @return string|null - */ - private function locate_autoloader_file() { - global $jetpack_autoloader_loader; - - $autoload_file = null; - - // Try the Jetpack autoloader. - if ( isset( $jetpack_autoloader_loader ) ) { - $class_file = $jetpack_autoloader_loader->find_class_file( Waf_Runner::class ); - if ( $class_file ) { - $autoload_file = dirname( $class_file, 5 ) . '/vendor/autoload.php'; - } - } - - // Try Composer's autoloader. - if ( null === $autoload_file - && is_callable( array( InstalledVersions::class, 'getInstallPath' ) ) - && InstalledVersions::isInstalled( 'automattic/jetpack-waf' ) - ) { - $package_file = InstalledVersions::getInstallPath( 'automattic/jetpack-waf' ); - if ( substr( $package_file, -23 ) === '/automattic/jetpack-waf' ) { - $autoload_file = dirname( $package_file, 3 ) . '/vendor/autoload.php'; - } - } - - // Guess. First look for being in a `vendor/automattic/jetpack-waf/src/', then see if we're standalone with our own vendor dir. - if ( null === $autoload_file ) { - $autoload_file = dirname( __DIR__, 4 ) . '/vendor/autoload.php'; - if ( ! file_exists( $autoload_file ) ) { - $autoload_file = dirname( __DIR__ ) . '/vendor/autoload.php'; - } - } - - // Check that the determined file actually exists. - if ( ! file_exists( $autoload_file ) ) { - throw new Waf_Exception( 'Can not find autoloader, and the WAF standalone boostrap will not work without it.' ); - } - - return $autoload_file; - } - - /** - * Gets the path to the bootstrap.php file. - * - * @return string The bootstrap.php file path. - */ - public function get_bootstrap_file_path() { - return trailingslashit( JETPACK_WAF_DIR ) . 'bootstrap.php'; - } - - /** - * Gets the entrypoint file. - * - * @return string The entrypoint file. - */ - private function get_entrypoint() { - return defined( 'JETPACK_WAF_ENTRYPOINT' ) ? JETPACK_WAF_ENTRYPOINT : 'rules/rules.php'; - } - - /** - * Generates the bootstrap file. - * - * @throws File_System_Exception If the filesystem is not available. - * @throws File_System_Exception If the WAF directory can not be created. - * @throws File_System_Exception If the bootstrap file can not be created. - * - * @return string Absolute path to the bootstrap file. - */ - public function generate() { - - $this->initialize_filesystem(); - - global $wp_filesystem; - if ( ! $wp_filesystem ) { - throw new File_System_Exception( 'Can not work without the file system being initialized.' ); - } - - $autoloader_file = $this->locate_autoloader_file(); - - $bootstrap_file = $this->get_bootstrap_file_path(); - $entrypoint = $this->get_entrypoint(); - $mode_option = get_option( Waf_Runner::MODE_OPTION_NAME, false ); - $share_data_option = get_option( Waf_Runner::SHARE_DATA_OPTION_NAME, false ); - $share_debug_data_option = get_option( Waf_Runner::SHARE_DEBUG_DATA_OPTION_NAME, false ); - - // phpcs:disable WordPress.PHP.DevelopmentFunctions - $code = "is_dir( JETPACK_WAF_DIR ) ) { - if ( ! $wp_filesystem->mkdir( JETPACK_WAF_DIR ) ) { - throw new File_System_Exception( 'Failed creating WAF standalone bootstrap file directory: ' . JETPACK_WAF_DIR ); - } - } - - if ( ! $wp_filesystem->put_contents( $bootstrap_file, $code ) ) { - throw new File_System_Exception( 'Failed writing WAF standalone bootstrap file to: ' . $bootstrap_file ); - } - - return $bootstrap_file; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-stats.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-stats.php deleted file mode 100644 index 71494971..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-stats.php +++ /dev/null @@ -1,180 +0,0 @@ - Waf_Blocklog_Manager::get_current_day_block_count(), - 'thirty_days' => Waf_Blocklog_Manager::get_thirty_days_block_counts(), - 'all_time' => Waf_Blocklog_Manager::get_all_time_block_count(), - ); - } - - /** - * Get IP allow list count - * - * @return int The number of valid IP addresses in the allow list - * - * @deprecated 0.20.1 Use Automattic\Jetpack\Waf\Waf_Blocklog_Manager API instead. - */ - public static function get_ip_allow_list_count() { - _deprecated_function( __METHOD__, 'waf-0.20.1', 'Automattic\Jetpack\Waf\Waf_Blocklog_Manager' ); - - $ip_allow_list = get_option( Waf_Rules_Manager::IP_ALLOW_LIST_OPTION_NAME ); - - if ( ! $ip_allow_list ) { - return 0; - } - - $results = IP_Utils::get_ip_addresses_from_string( $ip_allow_list ); - - return count( $results ); - } - - /** - * Get IP block list count - * - * @return int The number of valid IP addresses in the block list - * - * @deprecated 0.20.1 Use Automattic\Jetpack\Waf\Waf_Blocklog_Manager API instead. - */ - public static function get_ip_block_list_count() { - _deprecated_function( __METHOD__, 'waf-0.20.1', 'Automattic\Jetpack\Waf\Waf_Blocklog_Manager' ); - - $ip_block_list = get_option( Waf_Rules_Manager::IP_BLOCK_LIST_OPTION_NAME ); - - if ( ! $ip_block_list ) { - return 0; - } - - $results = IP_Utils::get_ip_addresses_from_string( $ip_block_list ); - - return count( $results ); - } - - /** The global stats cache - * - * @var array|null - */ - public static $global_stats = null; - - /** - * Get Rules version - * - * @return bool|string False if value is not found. The current stored rules version if cache is found. - * - * @deprecated 0.12.3 Use Automattic\Jetpack\Waf\Waf_Stats::get_automatic_rules_last_updated() to version the rules instead. - */ - public static function get_rules_version() { - _deprecated_function( __METHOD__, 'waf-0.12.3', 'Automattic\Jetpack\Waf\Waf_Stats::get_automatic_rules_last_updated' ); - - return get_option( Waf_Rules_Manager::VERSION_OPTION_NAME ); - } - - /** - * Get Automatic Rules last updated timestamp - * - * @return bool|string False if value is not found. The timestamp the current stored rules was last updated if cache is found. - */ - public static function get_automatic_rules_last_updated() { - return get_option( Waf_Rules_Manager::AUTOMATIC_RULES_LAST_UPDATED_OPTION_NAME ); - } - - /** - * Checks if the current cached global stats is expired and should be renewed - * - * @return boolean - */ - public static function is_global_stats_cache_expired() { - $option_timestamp = get_option( 'jetpack_protect_global_stats_timestamp' ); - - if ( ! $option_timestamp ) { - return true; - } - - return time() > (int) $option_timestamp; - } - - /** - * Checks if we should consider the stored cache or bypass it - * - * @return boolean - */ - public static function should_use_global_stats_cache() { - return ! ( defined( 'JETPACK_PROTECT_DEV__BYPASS_CACHE' ) && JETPACK_PROTECT_DEV__BYPASS_CACHE ); - } - - /** - * Get the global stats from the API endpoint - */ - public static function fetch_global_stats_from_api() { - $url = esc_url_raw( 'https://public-api.wordpress.com/wpcom/v2/jetpack-protect-global-stats' ); - $response = wp_remote_get( $url ); - - $response_code = wp_remote_retrieve_response_code( $response ); - - if ( is_wp_error( $response ) || 200 !== $response_code || empty( $response['body'] ) ) { - return new \WP_Error( 'failed_fetching_global_stats', 'Failed to fetch global stats data from the server', array( 'status' => $response_code ) ); - } - - $body = json_decode( wp_remote_retrieve_body( $response ) ); - - update_option( 'jetpack_protect_global_stats', maybe_serialize( $body ) ); - update_option( 'jetpack_protect_global_stats_timestamp', time() + 86400 ); // Caches expires after 24 hours. - - return $body; - } - - /** - * Gets the current cached global stats - * - * @return bool|array False if value is not found. Array with values if cache is found. - */ - public static function get_global_stats_from_options() { - return maybe_unserialize( get_option( 'jetpack_protect_global_stats' ) ); - } - - /** - * Get the global stats - * If the cache is expired, it will fetch the data from the API - * If the cache is not expired, it will return the cached data - * - * @param bool $refresh_from_wpcom Whether to refresh the data from the API. - * @return array|\WP_Error - */ - public static function get_global_stats( $refresh_from_wpcom = false ) { - if ( self::$global_stats !== null ) { - return self::$global_stats; - } - - if ( $refresh_from_wpcom || ! self::should_use_global_stats_cache() || self::is_global_stats_cache_expired() ) { - $global_stats = self::fetch_global_stats_from_api(); - } else { - $global_stats = self::get_global_stats_from_options(); - } - - // Ensure that $global_stats is of the correct type - if ( ( ! is_object( $global_stats ) && ! ( $global_stats instanceof \WP_Error ) ) ) { - return new \WP_Error( 'unexpected_type', 'Unexpected type or null returned for global stats' ); - } - - return $global_stats; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-transforms.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-transforms.php deleted file mode 100644 index e2160997..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/class-waf-transforms.php +++ /dev/null @@ -1,403 +0,0 @@ -normalize_path( str_replace( '\\', '/', $value ) ); - } - - /** - * Removes all NUL bytes from input. - * - * @param string $value value to be filtered. - * @return string - */ - public function remove_nulls( $value ) { - return str_replace( "\x0", '', $value ); - } - - /** - * Remove all whitespace characters from input. - * - * @param string $value value to be filtered. - * @return string - */ - public function remove_whitespace( $value ) { - return preg_replace( '/\s/', '', $value ); - } - - /** - * Replaces each occurrence of a C-style comment (/ * ... * /) with a single space. - * Unterminated comments will also be replaced with a space. However, a standalone termination of a comment (* /) will not be acted upon. - * - * @param string $value value to be filtered. - * @return string - */ - public function replace_comments( $value ) { - $value = preg_replace( '~/\*.*?\*/|/\*.*?$~Ds', ' ', $value ); - return explode( '/*', $value, 2 )[0]; - } - - /** - * Removes common comments chars (/ *, * /, --, #). - * - * @param string $value value to be filtered. - * @return string - */ - public function remove_comments_char( $value ) { - return preg_replace( '~/*|*/|--|#|//~', '', $value ); - } - - /** - * Replaces each NUL byte in input with a space. - * - * @param string $value value to be filtered. - * @return string - */ - public function replace_nulls( $value ) { - return str_replace( "\x0", ' ', $value ); - } - - /** - * Decode a URL-encoded input string. - * - * @param string $value value to be decoded. - * @return string - */ - public function url_decode( $value ) { - return urldecode( $value ); - } - - /** - * Decode a URL-encoded input string. - * - * @param string $value value to be decoded. - * @return string - */ - public function url_decode_uni( $value ) { - error_log( 'JETPACKWAF TRANSFORM NOT IMPLEMENTED: urlDecodeUni' ); - return $value; - } - - /** - * Decode a json encoded input string. - * - * @param string $value value to be decoded. - * @return string - */ - public function js_decode( $value ) { - error_log( 'JETPACKWAF TRANSFORM NOT IMPLEMENTED: jsDecode' ); - return $value; - } - - /** - * Convert all characters to uppercase. - * - * @param string $value value to be encoded. - * @return string - */ - public function uppercase( $value ) { - return strtoupper( $value ); - } - - /** - * Calculate a SHA1 hash from the input string. - * - * @param mixed $value value to be hashed. - * @return string - */ - public function sha1( $value ) { - return sha1( $value, true ); - } - - /** - * Remove whitespace from the left side of the input string. - * - * @param string $value value to be trimmed. - * @return string - */ - public function trim_left( $value ) { - return ltrim( $value, self::TRIM_CHARS ); - } - - /** - * Remove whitespace from the right side of the input string. - * - * @param string $value value to be trimmed. - * @return string - */ - public function trim_right( $value ) { - return rtrim( $value, self::TRIM_CHARS ); - } - - /** - * Remove whitespace from both sides of the input string. - * - * @param string $value value to be trimmed. - * @return string - */ - public function trim( $value ) { - return trim( $value, self::TRIM_CHARS ); - } - - /** - * Convert UTF-8 characters to Unicode characters. - * - * This function iterates through each character of the input string, checks the ASCII value, - * and converts it to its corresponding Unicode representation. It handles characters that are - * represented with 1 to 4 bytes in UTF-8. - * - * @param string $str The string value to be encoded from UTF-8 to Unicode. - * @return string The converted string with Unicode representation. - */ - public function utf8_to_unicode( $str ) { - $unicodeStr = ''; - $strLen = strlen( $str ); - $i = 0; - - // Iterate through each character of the input string. - while ( $i < $strLen ) { - // Get the ASCII value of the current character. - $value = ord( $str[ $i ] ); - - if ( $value < 128 ) { - // If the character is in the ASCII range (0-127), directly add it to the Unicode string. - $unicodeStr .= chr( $value ); - ++$i; - } else { - // For characters outside the ASCII range, determine the number of bytes in the UTF-8 representation. - $unicodeValue = ''; - if ( $value >= 192 && $value <= 223 ) { - // For characters represented with 2 bytes in UTF-8. - $unicodeValue = ( ord( $str[ $i ] ) & 0x1F ) << 6 | ( ord( $str[ $i + 1 ] ) & 0x3F ); - $i += 2; - } elseif ( $value >= 224 && $value <= 239 ) { - // For characters represented with 3 bytes in UTF-8. - $unicodeValue = ( ord( $str[ $i ] ) & 0x0F ) << 12 | ( ord( $str[ $i + 1 ] ) & 0x3F ) << 6 | ( ord( $str[ $i + 2 ] ) & 0x3F ); - $i += 3; - } elseif ( $value >= 240 && $value <= 247 ) { - // For characters represented with 4 bytes in UTF-8. - $unicodeValue = ( ord( $str[ $i ] ) & 0x07 ) << 18 | ( ord( $str[ $i + 1 ] ) & 0x3F ) << 12 | ( ord( $str[ $i + 2 ] ) & 0x3F ) << 6 | ( ord( $str[ $i + 3 ] ) & 0x3F ); - $i += 4; - } else { - // If the sequence does not match any known UTF-8 pattern, skip to the next character. - ++$i; - continue; - } - // Convert the Unicode value to a formatted string and append it to the Unicode string. - $unicodeStr .= sprintf( '%%u%04X', $unicodeValue ); - } - } - - return strtolower( $unicodeStr ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-file-system-exception.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-file-system-exception.php deleted file mode 100644 index 59631e8c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-file-system-exception.php +++ /dev/null @@ -1,23 +0,0 @@ -getMessage() ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/functions.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/functions.php deleted file mode 100644 index e7391c62..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/automattic/jetpack-waf/src/functions.php +++ /dev/null @@ -1,120 +0,0 @@ - [ "x" => [ "y" => "..." ] ] ] - * However, modsecurity (and thus our WAF rules) expect the original (non-nested) names. - * - * Therefore, this method takes an array of any depth and returns a single-depth array with nested - * keys translated back to a single string with brackets. - * - * Because there might be multiple items with the same name, this function will return an array of tuples, - * with the first item in the tuple the re-created original field name, and the second item the value. - * - * @example - * flatten_array( [ "field1" => "abc", "field2" => [ "d", "e", "f" ] ] ) - * => [ - * [ "field1", "abc" ], - * [ "field2[0]", "d" ], - * [ "field2[1]", "e" ], - * [ "field2[2]", "f" ], - * ] - * - * @param array $array An array that resembles one of the PHP superglobals like $_GET or $_POST. - * @param string $key_prefix String that should be prepended to the keys output by this function. - * Usually only used internally as part of recursion when flattening a nested array. - * @param bool|null $dot_notation Whether to use dot notation instead of bracket notation. - * - * @return array{0: string, 1: scalar}[] $key_prefix An array of key/value tuples, one for each distinct value in the input array. - */ -function flatten_array( $array, $key_prefix = '', $dot_notation = null ) { - $return = array(); - foreach ( $array as $source_key => $source_value ) { - $key = $source_key; - if ( ! empty( $key_prefix ) ) { - $key = $dot_notation ? "$key_prefix.$source_key" : $key_prefix . "[$source_key]"; - } - - if ( ! is_array( $source_value ) ) { - $return[] = array( $key, $source_value ); - } else { - $return = array_merge( $return, flatten_array( $source_value, $key, $dot_notation ) ); - } - } - return $return; -} - -/** - * Polyfill for getallheaders, which is not available in all PHP environments. - * - * @link https://github.com/ralouphie/getallheaders - */ -if ( ! function_exists( 'getallheaders' ) ) { - /** - * Get all HTTP header key/values as an associative array for the current request. - * - * @return array The HTTP header key/value pairs. - */ - function getallheaders() { - // phpcs:disable WordPress.Security.ValidatedSanitizedInput - $headers = array(); - - $copy_server = array( - 'CONTENT_TYPE' => 'Content-Type', - 'CONTENT_LENGTH' => 'Content-Length', - 'CONTENT_MD5' => 'Content-Md5', - ); - - foreach ( $_SERVER as $key => $value ) { - if ( substr( $key, 0, 5 ) === 'HTTP_' ) { - $key = substr( $key, 5 ); - if ( ! isset( $copy_server[ $key ] ) || ! isset( $_SERVER[ $key ] ) ) { - $key = str_replace( ' ', '-', ucwords( strtolower( str_replace( '_', ' ', $key ) ) ) ); - $headers[ $key ] = $value; - } - } elseif ( isset( $copy_server[ $key ] ) ) { - $headers[ $copy_server[ $key ] ] = $value; - } - } - - if ( ! isset( $headers['Authorization'] ) ) { - if ( isset( $_SERVER['REDIRECT_HTTP_AUTHORIZATION'] ) ) { - $headers['Authorization'] = $_SERVER['REDIRECT_HTTP_AUTHORIZATION']; - } elseif ( isset( $_SERVER['PHP_AUTH_USER'] ) ) { - $basic_pass = $_SERVER['PHP_AUTH_PW'] ?? ''; - $headers['Authorization'] = 'Basic ' . base64_encode( $_SERVER['PHP_AUTH_USER'] . ':' . $basic_pass ); - } elseif ( isset( $_SERVER['PHP_AUTH_DIGEST'] ) ) { - $headers['Authorization'] = $_SERVER['PHP_AUTH_DIGEST']; - } - } - - return $headers; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/i18n-map.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/i18n-map.php deleted file mode 100644 index a35c898a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/jetpack_vendor/i18n-map.php +++ /dev/null @@ -1,80 +0,0 @@ - 'jetpack-protect', - 'type' => 'plugins', - 'packages' => array( - 'jetpack-admin-ui' => array( - 'path' => 'jetpack_vendor/automattic/jetpack-admin-ui', - 'ver' => '0.5.7', - ), - 'jetpack-assets' => array( - 'path' => 'jetpack_vendor/automattic/jetpack-assets', - 'ver' => '4.0.14', - ), - 'jetpack-boost-core' => array( - 'path' => 'jetpack_vendor/automattic/jetpack-boost-core', - 'ver' => '0.3.9', - ), - 'jetpack-boost-speed-score' => array( - 'path' => 'jetpack_vendor/automattic/jetpack-boost-speed-score', - 'ver' => '0.4.6', - ), - 'jetpack-config' => array( - 'path' => 'jetpack_vendor/automattic/jetpack-config', - 'ver' => '3.0.1', - ), - 'jetpack-connection' => array( - 'path' => 'jetpack_vendor/automattic/jetpack-connection', - 'ver' => '6.8.1', - ), - 'jetpack-explat' => array( - 'path' => 'jetpack_vendor/automattic/jetpack-explat', - 'ver' => '0.2.13', - ), - 'jetpack-ip' => array( - 'path' => 'jetpack_vendor/automattic/jetpack-ip', - 'ver' => '0.4.6', - ), - 'jetpack-jitm' => array( - 'path' => 'jetpack_vendor/automattic/jetpack-jitm', - 'ver' => '4.2.7', - ), - 'jetpack-licensing' => array( - 'path' => 'jetpack_vendor/automattic/jetpack-licensing', - 'ver' => '3.0.8', - ), - 'jetpack-my-jetpack' => array( - 'path' => 'jetpack_vendor/automattic/jetpack-my-jetpack', - 'ver' => '5.9.1', - ), - 'jetpack-password-checker' => array( - 'path' => 'jetpack_vendor/automattic/jetpack-password-checker', - 'ver' => '0.4.7', - ), - 'jetpack-plugins-installer' => array( - 'path' => 'jetpack_vendor/automattic/jetpack-plugins-installer', - 'ver' => '0.5.4', - ), - 'jetpack-protect-models' => array( - 'path' => 'jetpack_vendor/automattic/jetpack-protect-models', - 'ver' => '0.5.4', - ), - 'jetpack-protect-status' => array( - 'path' => 'jetpack_vendor/automattic/jetpack-protect-status', - 'ver' => '0.5.8', - ), - 'jetpack-sync' => array( - 'path' => 'jetpack_vendor/automattic/jetpack-sync', - 'ver' => '4.9.2', - ), - 'jetpack-transport-helper' => array( - 'path' => 'jetpack_vendor/automattic/jetpack-transport-helper', - 'ver' => '0.3.1', - ), - 'jetpack-waf' => array( - 'path' => 'jetpack_vendor/automattic/jetpack-waf', - 'ver' => '0.23.8', - ), - ), -); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/readme.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/readme.txt deleted file mode 100644 index 1b2795af..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/readme.txt +++ /dev/null @@ -1,193 +0,0 @@ -=== Jetpack Protect === -Contributors: automattic, retrofox, leogermani, renatoagds, bjorsch, ebinnion, fgiannar, zinigor, miguelxavierpenha, dsmart, jeherve, manzoorwanijk, njweller, oskosk, samiff, siddarthan, wpkaren, arsihasi, kraftbj, kev, sermitr, kangzj, pabline, dkmyta -Tags: jetpack, protect, security, malware, scan -Requires at least: 6.6 -Requires PHP: 7.2 -Tested up to: 6.7 -Stable tag: 4.0.0 -License: GPLv2 or later -License URI: http://www.gnu.org/licenses/gpl-2.0.html - -Free daily malware scanning and WordPress site security. Jetpack Protect leverages the extensive database of WPScan, an Automattic brand, that has over 25,000 registered malware and vulnerabilities. No configuration required! - -== Description == - -== TOTAL SITE SECURITY FROM WORDPRESS EXPERTS == - -Jetpack Protect is a free and essential WordPress security plugin that scans your site and warns you about vulnerabilities, keeping your site one step ahead of security threats. It’s easy to use; setup requires just a few clicks! - -By upgrading Protect, you also unlock malware scanning with one-click fixes for most issues and instant notifications when threats are detected. Our automated Web Application Firewall (WAF) also protects your site from bad actors around the clock. - -Jetpack Protect is created by WordPress experts; our parent company Automattic is behind Jetpack, WordPress.com, WooCommerce, WPScan, and much more. There is no better company to understand the security needs of WordPress sites. - -== WHAT DOES JETPACK PROTECT (FREE) CHECK FOR? == - -Jetpack Protect scans your site on a daily basis and warns you about: -- The version of WordPress installed, and any associated vulnerabilities -- What plugins are installed, and any related vulnerabilities -- What themes are installed, and any associated vulnerabilities - -= What are vulnerabilities? Why do I need to scan my site regularly? = -Site vulnerabilities are flaws in a website's code that weaken the site's overall security. These can be introduced to a site in various ways, in most cases unintentionally. - -Some of the ways vulnerabilities can be introduced to a site are: -- Poorly written site code -- Plugin and theme bugs -- WordPress version bugs -- System misconfigurations - -If a bad actor detects a vulnerability on your site, they can exploit it to access sensitive information, update your site, and more to damage your business or brand. - -That’s why it’s essential to use a reputable and reliable vulnerability & malware site scanner like Jetpack Protect to safeguard your site. - -= Can I use Jetpack Scan to fix a site that is already infected? = - -Jetpack Protect (Scan) detects and prevents attacks, but is not designed to fully clean up sites infected before it was active. If your site has malware, take immediate action to clean it up and remove the malicious code. - -To clean up your site, we suggest using a malware removal tool, or if possible restore from a backup taken before the infection. We recommend using Jetpack VaultPress Backup in conjunction with Jetpack Scan to secure your website. - -[Learn more about cleaning your site](https://jetpack.com/support/scan/how-to-clean-your-hacked-wordpress-site/) - -== BRUTE FORCE ATTACK PROTECTION == - -Jetpack Protect blocks unwanted login attempts from malicious botnets and distributed attacks. - -= Is my site under attack? = -Brute force attacks are the most common form of hacking — and hackers don’t discriminate. As the most commonly used Content Management System on the web, WordPress sites make an attractive target for hackers looking to exploit code vulnerabilities unique to WordPress. - -Using large networks of computers known as botnets, hackers can try to gain access to your site by using thousands of different combinations of usernames and passwords until they find the right one. - -Recently, attackers have found a way to “amplify” these attacks against the WordPress XML-RPC file – making it easier for attackers to try and break into your site. - -WordPress brute force attacks can: -- Slow down your site (or cause it to stop responding) because of repeated server requests. -- Allow unauthorized access to your site for hackers to modify your code or insert spammy links. -- Put your site content and data at risk. - -That’s where Jetpack Protect comes in. Our state-of-the-art security tools automatically block these attacks, protecting your WordPress site from unauthorized access. - -On average, Jetpack blocks 5,193 WordPress brute force attacks over a site’s lifetime. It allows you to protect yourself against both traditional brute force attacks and distributed brute force attacks that use many servers against your site. - -== UPGRADE PROTECT TO REMOVE MALWARE IN ONE CLICK AND BE PROTECTED BY OUR WAF == -By upgrading Protect, you unlock total site security from WordPress experts: -- Automated daily malware scanning in addition to vulnerability checks -- One-click fixes for most issues -- Web Application Firewall (WAF) with automatic rule updates -- Instant email notifications when threats are detected -- Priority support from WordPress experts - -= What is malware? Why do I need to protect against it? = -Malware is malicious code or software that has been created by bad actors to disrupt, damage, or gain access to your site. There are many ways that malware can get onto your WordPress site. The most common method is through attackers using vulnerable plugins or themes to install malware. - -Similar to the vulnerabilities listed above, bad actors can use malware to capture sensitive information, damage your site, and harm your business or brand. - -Jetpack Protect instantly notifies you of any threats detected, with one-click fixes for most issues. - -= What is a Web Application Firewall (WAF)? = -A web application firewall blocks traffic and malicious requests to your site from known bad actors. - -As threats are detected, new rules are added to Jetpack Protect’s firewall, which provides around-the-clock protection for your WordPress site. - -== OVER 53,500 REGISTERED VULNERABILITIES IN OUR DATABASE == - -WordPress security is something that evolves over time. Jetpack Protect leverages the extensive database of WPScan, an Automattic brand. All vulnerabilities are entered into our database by dedicated WordPress security professionals and updated constantly as new information becomes available. - -== JETPACK PROTECT IS EASY TO SETUP AND USE == - -There’s nothing to configure – the setup process is as easy as: -1. Install and activate the plugin -2. Set up it with one click. - -After you activate the plugin, Jetpack Protect will run daily automatic malware scans on your WordPress site and update you on vulnerabilities associated with your installed plugins, themes, and WordPress core. - -== WITH 💚 BY JETPACK == - -This is just the start! - -We are working hard to bring more features and improvements to Jetpack Protect. Let us know your thoughts and ideas! - -== FURTHER READING == - -- [Jetpack: Security, performance, and growth tools made for WordPress sites by the WordPress experts.](https://jetpack.com/) -- You can follow the [Jetpack Twitter](https://twitter.com/jetpack?lang=en) account to catch up on our latest WordPress security recommendations and updates. -- [WordPress Security: How to Protect Your Site From Hackers](https://jetpack.com/blog/category/security/page/3/) -- [Should You Use Jetpack for WordPress Security?](https://jetpack.com/blog/should-you-use-jetpack-for-wordpress-security/) -- [Jetpack Acquires WordPress Vulnerability Database WPScan](https://jetpack.com/blog/jetpack-acquires-wordpress-vulnerability-database-wpscan/#more-139339) - -== FAQ == - -= How does Jetpack Protect help your WordPress Site security? = - -Protect is a free WordPress security and malware scanner plugin that scans your site and lets you know possible malware and security threats on your installed plugins, themes, and core files. - -The free plan scans your site for WordPress version, plugin, and theme vulnerabilities from our extensive vulnerability database (53,500) that is powered by WPScan. - -By upgrading Protect, you gain access to WordPress malware scanning with one-click fixes, instant threat notifications, and our Web application Firewall (WAF) that protects your site around the clock. - -= Does this plugin require the Jetpack plugin to work? = - -Jetpack Protect does not require the Jetpack plugin to run and secure your site. - -= What are the differences between Jetpack Protect, Jetpack Scan, and WPScan plugins? = - -Jetpack Protect is a new WordPress security plugin from Jetpack containing our security features only. You can start with Jetpack Protect’s free vulnerability scanning features and upgrade Jetpack Protect to access automated malware scanning and our web application firewall. By upgrading Protect, you are enabling Jetpack Scan to the plugin. - -Jetpack Scan is a product that can be purchased for use in conjunction with the main Jetpack plugin or Jetpack Protect. Jetpack Scan includes automated malware scanning and our web application firewall but does not contain the vulnerability scanning feature from the Protect plugin. If you purchase Jetpack Security or Jetpack Complete, Jetpack Scan is also included in those bundles. - -If you are already a Jetpack Scan, Jetpack Security, or Jetpack Complete customer, you can also take advantage of Jetpack Protect’s vulnerability scanning feature by installing the Jetpack Protect plugin. - -WPScan is an enterprise vulnerability scanning solution. It is not recommended for small to medium-sized businesses. If you are an enterprise company looking for custom WordPress site protection solutions, please visit: https://wpscan.com/ - -For small to medium-sized businesses, you can access our vulnerability scanning solution in the Jetpack Protect plugin. - -= Will Jetpack Protect work on my local site? - -Jetpack Protect requires a publicly accessible site to perform the vulnerability scan. - -= How will I know if Jetpack Protect has found WordPress security vulnerabilities and malware? = - -You can visit Jetpack Protect dashboard in your WordPress admin panel to see the security threats and malware found by the integrated malware scanner. - -= What do I do if Jetpack Protect finds a security threat? = - -When the vulnerability scanner finds a security threat, you can view the recommended actions on the Jetpack Protect dashboard to secure your sites. - -If you have upgraded Protect, your site will also be automatically scanned for malware each day, and you will be notified instantly via email if any threats are detected. You will be able to fix most issues in one click. - -= Can I set the time of the daily security scan? = - -It is not possible to set a time for the automated daily scans run by the integrated malware scanner. - -= Why do I need WordPress security and malware scan? = - -A hacked WordPress site can cause serious damage to your business revenue and reputation. Jetpack Protect scans your site and lets you know possible malware and security threats on your installed plugins, themes, and core files. - -= Where can I learn more about WordPress security and malware threats? = - -To learn how to achieve better WordPress security, [see this guide](https://jetpack.com/blog/guide-to-wordpress-security/). On the [Jetpack Blog](https://jetpack.com/blog/category/security/), you can find many more articles written by the top WordPress security experts. - -= Is Jetpack Protect the same thing as the Protect feature in the Jetpack plugin? - -The new Jetpack Protect plugin is different from the Jetpack feature formerly known as [Protect](https://jetpack.com/support/protect/) (now renamed [Brute Force Attack Protection](https://jetpack.com/support/protect/)). - -== Screenshots == - -1. Focus on running your business while Jetpack Protect automatically scans your site. -2. Keep your site one step ahead of security threats and malware. -3. View all the found vulnerabilities in your site and learn how to fix them. -4. The Jetpack Firewall is a web application firewall (known as WAF) designed to protect your WordPress site from malicious requests. - -== Changelog == -### 4.0.0 - 2025-03-24 - -#### Changed -- Scanner: add threat count to tab -- Scanner: animated the "scan in progress" placeholder image -- General: indicate compatibility with the upcoming version of WordPress - 6.7. -- General: Update package dependencies. - -#### Removed -- Firewall: removed "new" badge from tab. -- General: Update minimum PHP version to 7.2. -- General: Update minimum WordPress version to 6.6. - diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-credentials.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-credentials.php deleted file mode 100644 index 1e72b467..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-credentials.php +++ /dev/null @@ -1,55 +0,0 @@ -is_connected(); - - if ( ! $blog_id || ! $is_connected ) { - return false; - } - - $api_url = sprintf( '/sites/%d/scan', $blog_id ); - - $response = Client::wpcom_json_api_request_as_blog( - $api_url, - '2', - array( 'method' => 'GET' ), - null, - 'wpcom' - ); - - $response_code = wp_remote_retrieve_response_code( $response ); - - if ( is_wp_error( $response ) || 200 !== $response_code ) { - return false; - } - - $parsed_response = json_decode( $response['body'] ); - - if ( ! $parsed_response ) { - return false; - } - - return isset( $parsed_response->credentials ) ? $parsed_response->credentials : array(); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-jetpack-protect.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-jetpack-protect.php deleted file mode 100644 index 886db4b0..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-jetpack-protect.php +++ /dev/null @@ -1,447 +0,0 @@ -ensure( - 'connection', - array( - 'slug' => JETPACK_PROTECT_SLUG, - 'name' => JETPACK_PROTECT_NAME, - 'url_info' => JETPACK_PROTECT_URI, - ) - ); - // Sync package. - $config->ensure( - 'sync', - array( - 'jetpack_sync_modules' => array( - 'Automattic\\Jetpack\\Sync\\Modules\\Options', - 'Automattic\\Jetpack\\Sync\\Modules\\Callables', - 'Automattic\\Jetpack\\Sync\\Modules\\Users', - ), - 'jetpack_sync_callable_whitelist' => array( - 'main_network_site' => array( 'Automattic\\Jetpack\\Connection\\Urls', 'main_network_site_url' ), - 'get_plugins' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_plugins' ), - 'get_themes' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'get_themes' ), - 'wp_version' => array( 'Automattic\\Jetpack\\Sync\\Functions', 'wp_version' ), - ), - 'jetpack_sync_options_contentless' => array(), - 'jetpack_sync_options_whitelist' => array( - 'active_plugins', - 'stylesheet', - ), - ) - ); - - // Identity crisis package. - $config->ensure( 'identity_crisis' ); - - // Web application firewall package. - $config->ensure( 'waf' ); - }, - 1 - ); - - add_filter( 'jetpack_connection_user_has_license', array( $this, 'jetpack_check_user_licenses' ), 10, 3 ); - - add_filter( 'jetpack_get_available_standalone_modules', array( $this, 'protect_filter_available_modules' ), 10, 1 ); - } - - /** - * Initialize the plugin - * - * @return void - */ - public function init() { - add_action( 'admin_bar_menu', array( $this, 'admin_bar' ), 65 ); - add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) ); - - REST_Controller::init(); - My_Jetpack_Initializer::init(); - Site_Health::init(); - - // Sets up JITMS. - JITM::configure(); - } - - /** - * Initialize the admin page resources. - */ - public function admin_page_init() { - $total_threats = Status::get_total_threats(); - $menu_label = _x( 'Protect', 'The Jetpack Protect product name, without the Jetpack prefix', 'jetpack-protect' ); - if ( $total_threats ) { - $menu_label .= sprintf( ' %d', $total_threats ); - } - - $page_suffix = Admin_Menu::add_menu( - __( 'Jetpack Protect', 'jetpack-protect' ), - $menu_label, - 'manage_options', - 'jetpack-protect', - array( $this, 'plugin_settings_page' ), - 5 - ); - - add_action( 'load-' . $page_suffix, array( $this, 'enqueue_admin_scripts' ) ); - } - - /** - * Enqueues the wp-admin styles (used outside the React app) - */ - public function enqueue_admin_styles() { - wp_enqueue_style( 'jetpack-protect-wpadmin', JETPACK_PROTECT_BASE_PLUGIN_URL . '/assets/jetpack-protect.css', array(), JETPACK_PROTECT_VERSION ); - } - - /** - * Enqueue plugin admin scripts and styles. - */ - public function enqueue_admin_scripts() { - - Assets::register_script( - 'jetpack-protect', - 'build/index.js', - JETPACK_PROTECT_ROOT_FILE, - array( - 'in_footer' => true, - 'textdomain' => 'jetpack-protect', - ) - ); - Assets::enqueue_script( 'jetpack-protect' ); - // Required for Analytics. - wp_enqueue_script( 'jp-tracks', '//stats.wp.com/w.js', array(), gmdate( 'YW' ), true ); - // Initial JS state including JP Connection data. - Connection_Initial_State::render_script( 'jetpack-protect' ); - wp_add_inline_script( 'jetpack-protect', $this->render_initial_state(), 'before' ); - } - - /** - * Render the initial state into a JavaScript variable. - * - * @return string - */ - public function render_initial_state() { - return 'var jetpackProtectInitialState=JSON.parse(decodeURIComponent("' . rawurlencode( wp_json_encode( $this->initial_state() ) ) . '"));'; - } - - /** - * Get the initial state data for hydrating the React UI. - * - * @return array - */ - public function initial_state() { - global $wp_version; - - // Always fetch the latest plan status from WPCOM. - $has_plan = Plan::has_required_plan( true ); - - $status = Status::get_status(); - - $initial_state = array( - 'apiRoot' => esc_url_raw( rest_url() ), - 'apiNonce' => wp_create_nonce( 'wp_rest' ), - 'registrationNonce' => wp_create_nonce( 'jetpack-registration-nonce' ), - 'credentials' => Credentials::get_credential_array(), - 'status' => $status, - 'fixerStatus' => Threats::fix_threats_status( $status->fixable_threat_ids ), - 'scanHistory' => Scan_History::get_scan_history(), - 'installedPlugins' => Plugins_Installer::get_plugins(), - 'installedThemes' => Sync_Functions::get_themes(), - 'wpVersion' => $wp_version, - 'adminUrl' => 'admin.php?page=jetpack-protect', - 'siteSuffix' => ( new Jetpack_Status() )->get_site_suffix(), - 'blogID' => Connection_Manager::get_site_id( true ), - 'jetpackScan' => My_Jetpack_Products::get_product( 'scan' ), - 'hasPlan' => $has_plan, - 'onboardingProgress' => Onboarding::get_current_user_progress(), - 'waf' => array( - 'wafSupported' => Waf_Runner::is_supported_environment(), - 'currentIp' => IP_Utils::get_ip(), - 'upgradeIsSeen' => self::get_waf_upgrade_seen_status(), - 'displayUpgradeBadge' => self::get_waf_upgrade_badge_display_status(), - 'isEnabled' => Waf_Runner::is_enabled(), - 'config' => Waf_Runner::get_config(), - 'stats' => self::get_waf_stats(), - 'globalStats' => Waf_Stats::get_global_stats(), - ), - ); - - $initial_state['jetpackScan']['pricingForUi'] = Plan::get_product( 'jetpack_scan' ); - - return $initial_state; - } - /** - * Main plugin settings page. - */ - public function plugin_settings_page() { - ?> -
              - is_connected() ) { - self::activate_modules(); - } - } - - /** - * Activates the waf and brute force protection modules and disables the activation option - */ - public static function activate_modules() { - delete_option( self::JETPACK_PROTECT_ACTIVATION_OPTION ); - ( new Modules() )->activate( self::JETPACK_WAF_MODULE_SLUG, false, false ); - ( new Modules() )->activate( self::JETPACK_BRUTE_FORCE_PROTECTION_MODULE_SLUG, false, false ); - } - - /** - * Removes plugin from the connection manager - * If it's the last plugin using the connection, the site will be disconnected. - * - * @access public - * @static - */ - public static function plugin_deactivation() { - - // Clear Sync data. - Sender::get_instance()->uninstall(); - - $manager = new Connection_Manager( 'jetpack-protect' ); - $manager->remove_connection(); - - Protect_Status::delete_option(); - Scan_Status::delete_option(); - Scan_History::delete_option(); - } - - /** - * Create a shortcut on Admin Bar to show the total of threats found. - * - * @param object $wp_admin_bar The Admin Bar object. - * @return void - */ - public function admin_bar( $wp_admin_bar ) { - if ( ! current_user_can( 'manage_options' ) ) { - return; - } - - $total = Status::get_total_threats(); - - if ( $total > 0 ) { - $args = array( - 'id' => 'jetpack-protect', - 'title' => '' . $total . '', - 'href' => admin_url( 'admin.php?page=jetpack-protect' ), - 'meta' => array( - // translators: %d is the number of threats found. - 'title' => sprintf( _n( '%d threat found by Jetpack Protect', '%d threats found by Jetpack Protect', $total, 'jetpack-protect' ), $total ), - ), - ); - - $wp_admin_bar->add_node( $args ); - } - } - - /** - * Adds modules to the list of available modules - * - * @param array $modules The available modules. - * @return array - */ - public function protect_filter_available_modules( $modules ) { - return array_merge( array( self::JETPACK_WAF_MODULE_SLUG, self::JETPACK_BRUTE_FORCE_PROTECTION_MODULE_SLUG ), $modules ); - } - - /** - * Check if the user has an available license that includes Jetpack Scan. - * - * @param boolean $has_license Whether a license was already found. - * @param object[] $licenses Unattached licenses belonging to the user. - * @param string $plugin_slug Slug of the plugin that initiated the flow. - * - * @return boolean - */ - public static function jetpack_check_user_licenses( $has_license, $licenses, $plugin_slug ) { - if ( $plugin_slug !== JETPACK_PROTECT_SLUG || $has_license ) { - return $has_license; - } - - $license_found = false; - - foreach ( $licenses as $license ) { - if ( $license->attached_at || $license->revoked_at ) { - continue; - } - - if ( in_array( $license->product_id, self::JETPACK_SCAN_PRODUCT_IDS, true ) ) { - $license_found = true; - break; - } - } - - return $license_found; - } - - /** - * Get WAF Upgrade "Seen" Status - * - * @return bool Whether the current user has dismissed the upgrade popover or enabled the automatic rules feature. - */ - public static function get_waf_upgrade_seen_status() { - return (bool) get_user_meta( get_current_user_id(), 'jetpack_protect_waf_upgrade_seen', true ); - } - - /** - * Set WAF Upgrade "Seen" Status - * - * @return bool True if upgrade seen status updated to true, false on failure. - */ - public static function set_waf_upgrade_seen_status() { - self::set_waf_upgrade_badge_timestamp(); - return (bool) update_user_meta( get_current_user_id(), 'jetpack_protect_waf_upgrade_seen', true ); - } - - /** - * Get WAF Upgrade Badge Timestamp - * - * @return integer The timestamp for the when the upgrade seen status was first set to true. - */ - public static function get_waf_upgrade_badge_timestamp() { - return (int) get_user_meta( get_current_user_id(), 'jetpack_protect_waf_upgrade_badge_timestamp', true ); - } - - /** - * Set WAF Upgrade Badge Timestamp - * - * @return bool True if upgrade badge timestamp to set to the current time, false on failure. - */ - public static function set_waf_upgrade_badge_timestamp() { - return (bool) update_user_meta( get_current_user_id(), 'jetpack_protect_waf_upgrade_badge_timestamp', time() ); - } - - /** - * Get WAF Upgrade Badge Display Status - * - * @return bool True if upgrade badge timestamp is set and less than 7 days ago, otherwise false. - */ - public static function get_waf_upgrade_badge_display_status() { - $badge_timestamp_exists = metadata_exists( 'user', get_current_user_id(), 'jetpack_protect_waf_upgrade_badge_timestamp' ); - if ( ! $badge_timestamp_exists ) { - return true; - } - - $badge_timestamp = self::get_waf_upgrade_badge_timestamp(); - $seven_days = strtotime( '-7 days' ); - if ( $badge_timestamp > $seven_days ) { - return true; - } - - return false; - } - - /** - * Get WAF stats - * - * @return bool|array False if WAF is not enabled, otherwise an array of stats. - */ - public static function get_waf_stats() { - if ( ! Waf_Runner::is_enabled() ) { - return false; - } - - return array( - 'blockedRequests' => Plan::has_required_plan() ? Waf_Stats::get_blocked_requests() : false, - 'automaticRulesLastUpdated' => Waf_Stats::get_automatic_rules_last_updated(), - ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-onboarding.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-onboarding.php deleted file mode 100644 index cacd4768..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-onboarding.php +++ /dev/null @@ -1,80 +0,0 @@ - - */ - private static $current_user_progress; - - /** - * Onboarding Init - * - * @return void - */ - private static function init() { - self::$user_id = get_current_user_id(); - - $current_user_progress = get_user_meta( self::$user_id, self::OPTION_NAME, true ); - self::$current_user_progress = $current_user_progress ? $current_user_progress : array(); - } - - /** - * Set Onboarding Items As Completed - * - * @param array $step_ids The IDs of the steps to complete. - * @return bool True if the update was successful, false otherwise. - */ - public static function complete_steps( $step_ids ) { - self::init(); - - if ( empty( self::$current_user_progress ) ) { - self::$current_user_progress = $step_ids; - } else { - // Find step IDs that are not already in the current user progress - $new_steps = array_diff( $step_ids, self::$current_user_progress ); - - // Merge new steps with current progress - self::$current_user_progress = array_merge( self::$current_user_progress, $new_steps ); - } - - // Update the user meta only once - return (bool) update_user_meta( - self::$user_id, - self::OPTION_NAME, - self::$current_user_progress - ); - } - - /** - * Get Current User's Onboarding Progress - * - * @return array - */ - public static function get_current_user_progress() { - self::init(); - - return self::$current_user_progress; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-rest-controller.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-rest-controller.php deleted file mode 100644 index 4cfa117c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-rest-controller.php +++ /dev/null @@ -1,431 +0,0 @@ - \WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::api_ignore_threat', - 'permission_callback' => function () { - return current_user_can( 'manage_options' ); - }, - ) - ); - - register_rest_route( - 'jetpack-protect/v1', - 'unignore-threat', - array( - 'methods' => \WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::api_unignore_threat', - 'permission_callback' => function () { - return current_user_can( 'manage_options' ); - }, - ) - ); - - register_rest_route( - 'jetpack-protect/v1', - 'fix-threats', - array( - 'methods' => \WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::api_fix_threats', - 'permission_callback' => function () { - return current_user_can( 'manage_options' ); - }, - ) - ); - - register_rest_route( - 'jetpack-protect/v1', - 'fix-threats-status', - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::api_fix_threats_status', - 'permission_callback' => function () { - return current_user_can( 'manage_options' ); - }, - ) - ); - - register_rest_route( - 'jetpack-protect/v1', - 'check-credentials', - array( - 'methods' => \WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::api_check_credentials', - 'permission_callback' => function () { - return current_user_can( 'manage_options' ); - }, - ) - ); - - register_rest_route( - 'jetpack-protect/v1', - 'scan', - array( - 'methods' => \WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::api_scan', - 'permission_callback' => function () { - return current_user_can( 'manage_options' ); - }, - ) - ); - - register_rest_route( - 'jetpack-protect/v1', - 'toggle-waf', - array( - 'methods' => \WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::api_toggle_waf', - 'permission_callback' => function () { - return current_user_can( 'manage_options' ); - }, - ) - ); - - register_rest_route( - 'jetpack-protect/v1', - 'waf', - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::api_get_waf', - 'permission_callback' => function () { - return current_user_can( 'manage_options' ); - }, - ) - ); - - register_rest_route( - 'jetpack-protect/v1', - 'waf-upgrade-seen', - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::api_get_waf_upgrade_seen_status', - 'permission_callback' => function () { - return current_user_can( 'manage_options' ); - }, - ) - ); - - register_rest_route( - 'jetpack-protect/v1', - 'waf-upgrade-seen', - array( - 'methods' => \WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::api_set_waf_upgrade_seen_status', - 'permission_callback' => function () { - return current_user_can( 'manage_options' ); - }, - ) - ); - - register_rest_route( - 'jetpack-protect/v1', - 'onboarding-progress', - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::api_get_onboarding_progress', - 'permission_callback' => function () { - return current_user_can( 'manage_options' ); - }, - ) - ); - - register_rest_route( - 'jetpack-protect/v1', - 'onboarding-progress', - array( - 'methods' => \WP_REST_Server::EDITABLE, - 'callback' => __CLASS__ . '::api_complete_onboarding_steps', - 'permission_callback' => function () { - return current_user_can( 'manage_options' ); - }, - ) - ); - - register_rest_route( - 'jetpack-protect/v1', - 'scan-history', - array( - 'methods' => \WP_REST_Server::READABLE, - 'callback' => __CLASS__ . '::api_get_scan_history', - 'permission_callback' => function () { - return current_user_can( 'manage_options' ); - }, - ) - ); - } - - /** - * Ignores a threat for the API endpoint - * - * @param WP_REST_Request $request The request object. - * - * @return WP_REST_Response - */ - public static function api_ignore_threat( $request ) { - if ( ! $request['threat_id'] ) { - return new WP_REST_Response( 'Missing threat ID.', 400 ); - } - - $threat_ignored = Threats::ignore_threat( $request['threat_id'] ); - - if ( ! $threat_ignored ) { - return new WP_REST_Response( 'An error occurred while attempting to ignore the threat.', 500 ); - } - - return new WP_REST_Response( 'Threat ignored.' ); - } - - /** - * Unignores a threat for the API endpoint - * - * @param WP_REST_Request $request The request object. - * - * @return WP_REST_Response - */ - public static function api_unignore_threat( $request ) { - if ( ! $request['threat_id'] ) { - return new WP_REST_Response( 'Missing threat ID.', 400 ); - } - - $threat_ignored = Threats::unignore_threat( $request['threat_id'] ); - - if ( ! $threat_ignored ) { - return new WP_REST_Response( 'An error occurred while attempting to unignore the threat.', 500 ); - } - - return new WP_REST_Response( 'Threat unignored.' ); - } - - /** - * Fixes threats for the API endpoint - * - * @param WP_REST_Request $request The request object. - * - * @return WP_REST_Response - */ - public static function api_fix_threats( $request ) { - if ( empty( $request['threat_ids'] ) ) { - return new WP_REST_Response( 'Missing threat IDs.', 400 ); - } - - $threats_fixed = Threats::fix_threats( $request['threat_ids'] ); - - if ( ! $threats_fixed ) { - return new WP_REST_Response( 'An error occurred while attempting to fix the threat.', 500 ); - } - - return new WP_REST_Response( $threats_fixed ); - } - - /** - * Fixes threats for the API endpoint - * - * @param WP_REST_Request $request The request object. - * - * @return WP_REST_Response - */ - public static function api_fix_threats_status( $request ) { - if ( empty( $request['threat_ids'] ) ) { - return new WP_REST_Response( 'Missing threat IDs.', 400 ); - } - - $threats_fixed = Threats::fix_threats_status( $request['threat_ids'] ); - - if ( ! $threats_fixed ) { - return new WP_REST_Response( 'An error occurred while attempting to get the fixer status of the threats.', 500 ); - } - - return new WP_REST_Response( $threats_fixed ); - } - - /** - * Checks if the site has credentials configured - * - * @return WP_REST_Response - */ - public static function api_check_credentials() { - $credential_array = Credentials::get_credential_array(); - - if ( ! isset( $credential_array ) ) { - return new WP_REST_Response( 'An error occurred while attempting to fetch the credentials array', 500 ); - } - - return new WP_REST_Response( $credential_array ); - } - - /** - * Enqueues a scan for the API endpoint - * - * @return WP_REST_Response - */ - public static function api_scan() { - $scan_enqueued = Threats::scan(); - - if ( ! $scan_enqueued ) { - return new WP_REST_Response( 'An error occurred while attempting to enqueue the scan.', 500 ); - } - - return new WP_REST_Response( 'Scan enqueued.' ); - } - - /** - * Toggles the WAF module on or off for the API endpoint - * - * @return WP_REST_Response|WP_Error - */ - public static function api_toggle_waf() { - if ( Waf_Runner::is_enabled() ) { - $disabled = Waf_Runner::disable(); - if ( ! $disabled ) { - return new WP_Error( - 'waf_disable_failed', - __( 'An error occurred disabling the firewall.', 'jetpack-protect' ), - array( 'status' => 500 ) - ); - } - - return rest_ensure_response( true ); - } - - $enabled = Waf_Runner::enable(); - if ( ! $enabled ) { - return new WP_Error( - 'waf_enable_failed', - __( 'An error occurred enabling the firewall.', 'jetpack-protect' ), - array( 'status' => 500 ) - ); - } - - return rest_ensure_response( true ); - } - - /** - * Get WAF data for the API endpoint - * - * @return WP_Rest_Response - */ - public static function api_get_waf() { - // Ensure plugin activation has been performed so WAF module is available. - Jetpack_Protect::do_plugin_activation_activities(); - - return new WP_REST_Response( - array( - 'wafSupported' => Waf_Runner::is_supported_environment(), - 'currentIp' => IP_Utils::get_ip(), - 'upgradeIsSeen' => Jetpack_Protect::get_waf_upgrade_seen_status(), - 'displayUpgradeBadge' => Jetpack_Protect::get_waf_upgrade_badge_display_status(), - 'isEnabled' => Waf_Runner::is_enabled(), - 'config' => Waf_Runner::get_config(), - 'stats' => Jetpack_Protect::get_waf_stats(), - 'globalStats' => Waf_Stats::get_global_stats(), - ) - ); - } - - /** - * Get WAF Upgrade "Seen" Status for the API endpoint - * - * @return bool Whether the current user has dismissed the upgrade popover or enabled the automatic rules feature. - */ - public static function api_get_waf_upgrade_seen_status() { - return Jetpack_Protect::get_waf_upgrade_seen_status(); - } - - /** - * Set WAF Upgrade "Seen" Status for the API endpoint - * - * @return bool True if upgrade seen status updated to true, false on failure. - */ - public static function api_set_waf_upgrade_seen_status() { - return Jetpack_Protect::set_waf_upgrade_seen_status(); - } - - /** - * Gets the current user's onboarding progress for the API endpoint - * - * @return WP_REST_Response - */ - public static function api_get_onboarding_progress() { - $progress = Onboarding::get_current_user_progress(); - return rest_ensure_response( $progress ); - } - - /** - * Set an onboarding step as completed for the API endpoint - * - * @param WP_REST_Request $request The request object. - * - * @return WP_REST_Response - */ - public static function api_complete_onboarding_steps( $request ) { - if ( empty( $request['step_ids'] ) || ! is_array( $request['step_ids'] ) ) { - return new WP_REST_Response( 'Missing or invalid onboarding step IDs.', 400 ); - } - - $completed = Onboarding::complete_steps( $request['step_ids'] ); - - if ( ! $completed ) { - return new WP_REST_Response( 'An error occurred completing the onboarding step(s).', 500 ); - } - - return new WP_REST_Response( 'Onboarding step(s) completed.' ); - } - - /** - * Return Scan History for the API endpoint - * - * @return WP_REST_Response - */ - public static function api_get_scan_history() { - $scan_history = Scan_History::get_scan_history( false ); - return rest_ensure_response( $scan_history ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-scan-history.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-scan-history.php deleted file mode 100644 index bd034c37..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-scan-history.php +++ /dev/null @@ -1,358 +0,0 @@ - (int) $option_timestamp; - } - - /** - * Checks if we should consider the stored cache or bypass it - * - * @return boolean - */ - public static function should_use_cache() { - return ! ( ( defined( 'JETPACK_PROTECT_DEV__BYPASS_CACHE' ) && JETPACK_PROTECT_DEV__BYPASS_CACHE ) ); - } - - /** - * Gets the current cached history - * - * @return bool|array False if value is not found. Array with values if cache is found. - */ - public static function get_from_options() { - return maybe_unserialize( get_option( static::OPTION_NAME ) ); - } - - /** - * Updated the cached history and its timestamp - * - * @param array $history The new history to be cached. - * @return void - */ - public static function update_history_option( $history ) { - // TODO: Sanitize $history. - update_option( static::OPTION_NAME, maybe_serialize( $history ) ); - update_option( static::OPTION_TIMESTAMP_NAME, time() + static::OPTION_EXPIRES_AFTER ); - } - - /** - * Delete the cached history and its timestamp - * - * @return bool Whether all related history options were successfully deleted. - */ - public static function delete_option() { - $option_deleted = delete_option( static::OPTION_NAME ); - $option_timestamp_deleted = delete_option( static::OPTION_TIMESTAMP_NAME ); - - return $option_deleted && $option_timestamp_deleted; - } - - /** - * Gets the current history of the Jetpack Protect checks - * - * @param bool $refresh_from_wpcom Refresh the local plan and history cache from wpcom. - * @return History_Model|bool - */ - public static function get_scan_history( $refresh_from_wpcom = false ) { - $has_required_plan = Plan::has_required_plan(); - if ( ! $has_required_plan ) { - return false; - } - - if ( self::$history !== null ) { - return self::$history; - } - - if ( $refresh_from_wpcom || ! self::should_use_cache() || self::is_cache_expired() ) { - $history = self::fetch_from_api(); - } else { - $history = self::get_from_options(); - } - - if ( is_wp_error( $history ) ) { - $history = new History_Model( - array( - 'error' => true, - 'error_code' => $history->get_error_code(), - 'error_message' => $history->get_error_message(), - ) - ); - } else { - $history = self::normalize_api_data( $history ); - } - - self::$history = $history; - return $history; - } - - /** - * Gets the Scan API endpoint - * - * @return WP_Error|string - */ - public static function get_api_url() { - $blog_id = Jetpack_Options::get_option( 'id' ); - $is_connected = ( new Connection_Manager() )->is_connected(); - - if ( ! $blog_id || ! $is_connected ) { - return new WP_Error( 'site_not_connected' ); - } - - $api_url = sprintf( self::SCAN_HISTORY_API_BASE, $blog_id ); - - return $api_url; - } - - /** - * Fetches the history data from the Scan API - * - * @return WP_Error|array - */ - public static function fetch_from_api() { - $api_url = self::get_api_url(); - if ( is_wp_error( $api_url ) ) { - return $api_url; - } - - $response = Client::wpcom_json_api_request_as_blog( - $api_url, - '2', - array( - 'method' => 'GET', - 'timeout' => 30, - ), - null, - 'wpcom' - ); - - $response_code = wp_remote_retrieve_response_code( $response ); - - if ( is_wp_error( $response ) || 200 !== $response_code || empty( $response['body'] ) ) { - return new WP_Error( 'failed_fetching_status', 'Failed to fetch Scan history from the server', array( 'status' => $response_code ) ); - } - - $body = json_decode( wp_remote_retrieve_body( $response ) ); - $body->last_checked = ( new \DateTime() )->format( 'Y-m-d H:i:s' ); - self::update_history_option( $body ); - - return $body; - } - - /** - * Normalize API Data - * Formats the payload from the Scan API into an instance of History_Model. - * - * @phan-suppress PhanDeprecatedProperty -- Maintaining backwards compatibility. - * - * @param object $scan_data The data returned by the scan API. - * @return History_Model - */ - private static function normalize_api_data( $scan_data ) { - $history = new History_Model(); - $history->num_threats = 0; - $history->num_core_threats = 0; - $history->num_plugins_threats = 0; - $history->num_themes_threats = 0; - - $history->last_checked = $scan_data->last_checked; - - if ( empty( $scan_data->threats ) || ! is_array( $scan_data->threats ) ) { - return $history; - } - - foreach ( $scan_data->threats as $threat ) { - if ( isset( $threat->extension->type ) ) { - if ( 'plugin' === $threat->extension->type ) { - self::handle_extension_threats( $threat, $history, 'plugin' ); - continue; - } - - if ( 'theme' === $threat->extension->type ) { - self::handle_extension_threats( $threat, $history, 'theme' ); - continue; - } - } - - if ( 'Vulnerable.WP.Core' === $threat->signature ) { - self::handle_core_threats( $threat, $history ); - continue; - } - - self::handle_additional_threats( $threat, $history ); - } - - return $history; - } - - /** - * Handles threats for extensions such as plugins or themes. - * - * @phan-suppress PhanDeprecatedProperty -- Maintaining backwards compatibility. - * - * @param object $threat The threat object. - * @param object $history The history object. - * @param string $type The type of extension ('plugin' or 'theme'). - * @return void - */ - private static function handle_extension_threats( $threat, $history, $type ) { - $extension_list = $type === 'plugin' ? 'plugins' : 'themes'; - $extensions = &$history->{ $extension_list}; - $found_index = null; - - // Check if the extension does not exist in the array - foreach ( $extensions as $index => $extension ) { - if ( $extension->slug === $threat->extension->slug ) { - $found_index = $index; - break; - } - } - - // Add the extension if it does not yet exist in the history - if ( $found_index === null ) { - $new_extension = new Extension_Model( - array( - 'name' => $threat->extension->name ?? null, - 'slug' => $threat->extension->slug ?? null, - 'version' => $threat->extension->version ?? null, - 'type' => $type, - 'checked' => true, - 'threats' => array(), - ) - ); - $extensions[] = $new_extension; - $found_index = array_key_last( $extensions ); - } - - // Add the threat to the found extension - $extensions[ $found_index ]->threats[] = new Threat_Model( $threat ); - - // Increment the threat counts - ++$history->num_threats; - if ( $type === 'plugin' ) { - ++$history->num_plugins_threats; - } elseif ( $type === 'theme' ) { - ++$history->num_themes_threats; - } - } - - /** - * Handles core threats - * - * @param object $threat The threat object. - * @param object $history The history object. - * @return void - */ - private static function handle_core_threats( $threat, $history ) { - // Check if the core version does not exist in the array - $found_index = null; - foreach ( $history->core as $index => $core ) { - if ( $core->version === $threat->version ) { - $found_index = $index; - break; - } - } - - // Add the extension if it does not yet exist in the history - if ( null === $found_index ) { - $new_core = new Extension_Model( - array( - 'name' => 'WordPress', - 'version' => $threat->version, - 'type' => 'core', - 'checked' => true, - 'threats' => array(), - ) - ); - $history->core[] = $new_core; - $found_index = array_key_last( $history->core ); - } - - // Add the threat to the found core - $history->core[ $found_index ]->threats[] = new Threat_Model( $threat ); - - ++$history->num_threats; - ++$history->num_core_threats; - } - - /** - * Handles additional threats that are not core, plugin or theme - * - * @param object $threat The threat object. - * @param object $history The history object. - * @return void - */ - private static function handle_additional_threats( $threat, $history ) { - if ( ! empty( $threat->filename ) ) { - $history->files[] = new Threat_Model( $threat ); - ++$history->num_threats; - } elseif ( ! empty( $threat->table ) ) { - $history->database[] = new Threat_Model( $threat ); - ++$history->num_threats; - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-site-health.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-site-health.php deleted file mode 100644 index 840aeafb..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-site-health.php +++ /dev/null @@ -1,113 +0,0 @@ - __( 'Jetpack Protect checks', 'jetpack-protect' ), - 'test' => array( __CLASS__, 'do_checks' ), - ); - - return $checks; - } - - /** - * Do site-health page checks - * - * @access public - * @return array - */ - public static function do_checks() { - $total_threats = Status::get_total_threats(); - $threats = Status::get_all_threats(); - $threats = array_map( - function ( $v ) { - return $v->title; - }, - $threats - ); - - /** - * Default, no threats found - */ - $result = array( - 'label' => __( 'No known threats found', 'jetpack-protect' ), - 'status' => 'good', - 'badge' => array( - 'label' => __( 'Security', 'jetpack-protect' ), - 'color' => 'gray', - ), - 'description' => sprintf( - '

              %s

              ', - __( 'Jetpack Protect did not find any known threats in your site. Threats can be exploited by hackers and cause harm to your website.', 'jetpack-protect' ) - ), - 'actions' => '', - 'test' => 'jetpack_protect_checks', - ); - - /** - * If threats found. - */ - if ( $total_threats ) { - $result['status'] = 'critical'; - /* translators: $d is the number of threats found. */ - $result['label'] = sprintf( _n( 'Your site is affected by %d security threat', 'Your site is affected by %d security threats', $total_threats, 'jetpack-protect' ), $total_threats ); - $result['description'] = __( 'Jetpack Protect detected the following security threats in your site:', 'jetpack-protect' ); - - foreach ( $threats as $threat ) { - $result['description'] .= '

              '; - $result['description'] .= "  "; - $result['description'] .= wp_kses( $threat, array( 'a' => array( 'href' => array() ) ) ); // Only allow a href HTML tags. - $result['description'] .= '

              '; - } - $result['description'] .= '

              '; - $result['description'] .= sprintf( - wp_kses( - /* translators: Link to Jetpack Protect. */ - __( 'See Protect overview page for more information.', 'jetpack-protect' ), - array( - 'a' => array( 'href' => array() ), - ) - ), - esc_url( admin_url( 'admin.php?page=jetpack-protect' ) ) - ); - $result['description'] .= '

              '; - } - - return $result; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-threats.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-threats.php deleted file mode 100644 index 11030a4c..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/src/class-threats.php +++ /dev/null @@ -1,222 +0,0 @@ -is_connected(); - - if ( ! $blog_id || ! $is_connected ) { - return new WP_Error( 'site_not_connected' ); - } - - $api_url = sprintf( '/sites/%d/alerts', $blog_id ); - - return $api_url; - } - - /** - * Update Threat - * - * @param string $threat_id The threat ID. - * @param array $updates The keys/values to update. - * - * @return bool - */ - public static function update_threat( $threat_id, $updates ) { - $api_base = self::get_api_base(); - if ( is_wp_error( $api_base ) ) { - return false; - } - - $response = Client::wpcom_json_api_request_as_user( - "$api_base/$threat_id", - '2', - array( 'method' => 'POST' ), - wp_json_encode( $updates ), - 'wpcom' - ); - - $response_code = wp_remote_retrieve_response_code( $response ); - - if ( is_wp_error( $response ) || 200 !== $response_code ) { - return false; - } - - // clear the now out-of-date cache - Scan_Status::delete_option(); - Scan_History::delete_option(); - - return true; - } - - /** - * Ignore Threat - * - * @param string $threat_id The threat ID. - * - * @return bool - */ - public static function ignore_threat( $threat_id ) { - return self::update_threat( $threat_id, array( 'ignore' => true ) ); - } - - /** - * Unignore Threat - * - * @param string $threat_id The threat ID. - * - * @return bool - */ - public static function unignore_threat( $threat_id ) { - return self::update_threat( $threat_id, array( 'unignore' => true ) ); - } - - /** - * Fix Threats - * - * @param array $threat_ids Threat IDs. - * - * @return bool|array - */ - public static function fix_threats( $threat_ids ) { - $api_base = self::get_api_base(); - if ( is_wp_error( $api_base ) ) { - return false; - } - - $response = Client::wpcom_json_api_request_as_user( - "$api_base/fix", - '2', - array( 'method' => 'POST' ), - wp_json_encode( - array( - 'threat_ids' => $threat_ids, - ) - ), - 'wpcom' - ); - - $response_code = wp_remote_retrieve_response_code( $response ); - - if ( is_wp_error( $response ) || 200 !== $response_code ) { - return false; - } - - // clear the now out-of-date cache - Scan_Status::delete_option(); - Scan_History::delete_option(); - - $parsed_response = json_decode( $response['body'] ); - - if ( ! $parsed_response ) { - return false; - } - - return $parsed_response; - } - - /** - * Fix Threats Status - * - * @param array $threat_ids Threat IDs. - * - * @return bool|array - */ - public static function fix_threats_status( $threat_ids ) { - if ( empty( $threat_ids ) ) { - return false; - } - - $api_base = self::get_api_base(); - if ( is_wp_error( $api_base ) ) { - return false; - } - - $response = Client::wpcom_json_api_request_as_user( - add_query_arg( 'threat_ids', $threat_ids, "$api_base/fix" ), - '2', - array( 'method' => 'GET' ), - null, - 'wpcom' - ); - - $response_code = wp_remote_retrieve_response_code( $response ); - - if ( is_wp_error( $response ) || 200 !== $response_code ) { - return false; - } - - $parsed_response = json_decode( $response['body'] ); - - if ( ! $parsed_response ) { - return false; - } - - // clear the potentially out-of-date cache - Scan_Status::delete_option(); - Scan_History::delete_option(); - - return $parsed_response; - } - - /** - * Scan enqueue - * - * @return bool - */ - public static function scan() { - $blog_id = Jetpack_Options::get_option( 'id' ); - $is_connected = ( new Connection_Manager() )->is_connected(); - - if ( ! $blog_id || ! $is_connected ) { - return false; - } - - $api_base = sprintf( '/sites/%d/scan', $blog_id ); - - if ( is_wp_error( $api_base ) ) { - return false; - } - - $response = Client::wpcom_json_api_request_as_blog( - "$api_base/enqueue", - '2', - array( 'method' => 'POST' ), - null, - 'wpcom' - ); - - $response_code = wp_remote_retrieve_response_code( $response ); - - if ( is_wp_error( $response ) || 200 !== $response_code ) { - return false; - } - - // clear the now out-of-date cache - Scan_Status::delete_option(); - Scan_History::delete_option(); - - return true; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/autoload.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/autoload.php deleted file mode 100644 index d34dbd4e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/autoload.php +++ /dev/null @@ -1,25 +0,0 @@ -= 7.0. [#34192] - -## [0.3.5] - 2023-10-24 - -- Updated package dependencies. - -## [0.3.4] - 2023-08-23 -### Changed -- Updated package dependencies. [#32605] - -## [0.3.3] - 2023-06-19 -### Added -- Add the Advanced SEO feature to the list of free features. [#31213] - -## [0.3.2] - 2023-06-12 -### Changed -- Remove Jetpack-the-plugin dependencies from Current Plan class. [#31207] - -## [0.3.1] - 2023-06-05 -### Fixed -- Revert gating removal for simple payments [#31067] - -## [0.3.0] - 2023-05-11 -### Changed -- Make Earn products free for all Jetpack plans [#30432] - -## [0.2.12] - 2023-05-08 -### Changed -- Make Premium Content accessible on Free plans. [#30398] - -## [0.2.11] - 2023-04-10 -### Added -- Add Jetpack Autoloader package suggestion. [#29988] - -## [0.2.10] - 2023-02-20 -### Changed -- Minor internal updates. - -## [0.2.9] - 2023-01-25 -### Changed -- Minor internal updates. - -## [0.2.8] - 2022-12-02 -### Changed -- Updated package dependencies. [#27688] - -## [0.2.7] - 2022-11-22 -### Changed -- Updated package dependencies. [#27043] - -## [0.2.6] - 2022-11-07 -### Changed -- Updated package dependencies. [#27278] - -## [0.2.5] - 2022-10-25 -### Changed -- Updated package dependencies. [#26705] - -## [0.2.4] - 2022-09-20 -### Changed -- Updated package dependencies. - -## [0.2.3] - 2022-09-08 -### Changed -- Updated package dependencies. - -## [0.2.2] - 2022-08-30 -### Changed -- Updated package dependencies. [#25694] - -## [0.2.1] - 2022-08-23 -### Changed -- Updated package dependencies. [#25628] - -## [0.2.0] - 2022-08-16 -### Added -- Tweaked the supports method of the plans package to refresh the plan data. [#25347] - -## [0.1.3] - 2022-08-03 -### Changed -- Updated package dependencies. [#25300, #25315] - -## [0.1.2] - 2022-07-26 -### Changed -- Add mirror repository information to package info. [#25142] -- Updated package dependencies. [#25158] - -## 0.1.1 - 2022-07-19 -### Changed -- Updated package dependencies. - -## 0.1.0 - 2022-07-06 -### Added -- Add support for WordPress.com Starter plan. [#24496] -- Package created. [#23503] - -### Changed -- Renaming master to trunk. [#24661] -- Updated package dependencies. - -### Deprecated -- Moved the options class into Connection. [#24095] - -[0.6.1]: https://github.com/Automattic/jetpack-plans/compare/v0.6.0...v0.6.1 -[0.6.0]: https://github.com/Automattic/jetpack-plans/compare/v0.5.6...v0.6.0 -[0.5.6]: https://github.com/Automattic/jetpack-plans/compare/v0.5.5...v0.5.6 -[0.5.5]: https://github.com/Automattic/jetpack-plans/compare/v0.5.4...v0.5.5 -[0.5.4]: https://github.com/Automattic/jetpack-plans/compare/v0.5.3...v0.5.4 -[0.5.3]: https://github.com/Automattic/jetpack-plans/compare/v0.5.2...v0.5.3 -[0.5.2]: https://github.com/Automattic/jetpack-plans/compare/v0.5.1...v0.5.2 -[0.5.1]: https://github.com/Automattic/jetpack-plans/compare/v0.5.0...v0.5.1 -[0.5.0]: https://github.com/Automattic/jetpack-plans/compare/v0.4.13...v0.5.0 -[0.4.13]: https://github.com/Automattic/jetpack-plans/compare/v0.4.12...v0.4.13 -[0.4.12]: https://github.com/Automattic/jetpack-plans/compare/v0.4.11...v0.4.12 -[0.4.11]: https://github.com/Automattic/jetpack-plans/compare/v0.4.10...v0.4.11 -[0.4.10]: https://github.com/Automattic/jetpack-plans/compare/v0.4.9...v0.4.10 -[0.4.9]: https://github.com/Automattic/jetpack-plans/compare/v0.4.8...v0.4.9 -[0.4.8]: https://github.com/Automattic/jetpack-plans/compare/v0.4.7...v0.4.8 -[0.4.7]: https://github.com/Automattic/jetpack-plans/compare/v0.4.6...v0.4.7 -[0.4.6]: https://github.com/Automattic/jetpack-plans/compare/v0.4.5...v0.4.6 -[0.4.5]: https://github.com/Automattic/jetpack-plans/compare/v0.4.4...v0.4.5 -[0.4.4]: https://github.com/Automattic/jetpack-plans/compare/v0.4.3...v0.4.4 -[0.4.3]: https://github.com/Automattic/jetpack-plans/compare/v0.4.2...v0.4.3 -[0.4.2]: https://github.com/Automattic/jetpack-plans/compare/v0.4.1...v0.4.2 -[0.4.1]: https://github.com/Automattic/jetpack-plans/compare/v0.4.0...v0.4.1 -[0.4.0]: https://github.com/Automattic/jetpack-plans/compare/v0.3.5...v0.4.0 -[0.3.5]: https://github.com/Automattic/jetpack-plans/compare/v0.3.4...v0.3.5 -[0.3.4]: https://github.com/Automattic/jetpack-plans/compare/v0.3.3...v0.3.4 -[0.3.3]: https://github.com/Automattic/jetpack-plans/compare/v0.3.2...v0.3.3 -[0.3.2]: https://github.com/Automattic/jetpack-plans/compare/v0.3.1...v0.3.2 -[0.3.1]: https://github.com/Automattic/jetpack-plans/compare/v0.3.0...v0.3.1 -[0.3.0]: https://github.com/Automattic/jetpack-plans/compare/v0.2.12...v0.3.0 -[0.2.12]: https://github.com/Automattic/jetpack-plans/compare/v0.2.11...v0.2.12 -[0.2.11]: https://github.com/Automattic/jetpack-plans/compare/v0.2.10...v0.2.11 -[0.2.10]: https://github.com/Automattic/jetpack-plans/compare/v0.2.9...v0.2.10 -[0.2.9]: https://github.com/Automattic/jetpack-plans/compare/v0.2.8...v0.2.9 -[0.2.8]: https://github.com/Automattic/jetpack-plans/compare/v0.2.7...v0.2.8 -[0.2.7]: https://github.com/Automattic/jetpack-plans/compare/v0.2.6...v0.2.7 -[0.2.6]: https://github.com/Automattic/jetpack-plans/compare/v0.2.5...v0.2.6 -[0.2.5]: https://github.com/Automattic/jetpack-plans/compare/v0.2.4...v0.2.5 -[0.2.4]: https://github.com/Automattic/jetpack-plans/compare/v0.2.3...v0.2.4 -[0.2.3]: https://github.com/Automattic/jetpack-plans/compare/v0.2.2...v0.2.3 -[0.2.2]: https://github.com/Automattic/jetpack-plans/compare/v0.2.1...v0.2.2 -[0.2.1]: https://github.com/Automattic/jetpack-plans/compare/v0.2.0...v0.2.1 -[0.2.0]: https://github.com/Automattic/jetpack-plans/compare/v0.1.3...v0.2.0 -[0.1.3]: https://github.com/Automattic/jetpack-plans/compare/v0.1.2...v0.1.3 -[0.1.2]: https://github.com/Automattic/jetpack-plans/compare/v0.1.1...v0.1.2 diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/LICENSE.txt deleted file mode 100644 index e82774c1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/LICENSE.txt +++ /dev/null @@ -1,357 +0,0 @@ -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -=================================== - - -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - -Copyright (C) 1989, 1991 Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - - Preamble - -The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - -When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - -To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - -For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - -We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - -Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - -Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - -The precise terms and conditions for copying, distribution and -modification follow. - -GNU GENERAL PUBLIC LICENSE -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - -1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - -a) You must cause the modified files to carry prominent notices -stating that you changed the files and the date of any change. - -b) You must cause any work that you distribute or publish, that in -whole or in part contains or is derived from the Program or any -part thereof, to be licensed as a whole at no charge to all third -parties under the terms of this License. - -c) If the modified program normally reads commands interactively -when run, you must cause it, when started running for such -interactive use in the most ordinary way, to print or display an -announcement including an appropriate copyright notice and a -notice that there is no warranty (or else, saying that you provide -a warranty) and that users may redistribute the program under -these conditions, and telling the user how to view a copy of this -License. (Exception: if the Program itself is interactive but -does not normally print such an announcement, your work based on -the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - -3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - -a) Accompany it with the complete corresponding machine-readable -source code, which must be distributed under the terms of Sections -1 and 2 above on a medium customarily used for software interchange; or, - -b) Accompany it with a written offer, valid for at least three -years, to give any third party, for a charge no more than your -cost of physically performing source distribution, a complete -machine-readable copy of the corresponding source code, to be -distributed under the terms of Sections 1 and 2 above on a medium -customarily used for software interchange; or, - -c) Accompany it with the information you received as to the offer -to distribute corresponding source code. (This alternative is -allowed only for noncommercial distribution and only if you -received the program in object code or executable form with such -an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - -5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - -7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - -9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - -10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs - -If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - -Copyright (C) - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - -Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -This is free software, and you are welcome to redistribute it -under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - -Yoyodyne, Inc., hereby disclaims all copyright interest in the program -`Gnomovision' (which makes passes at compilers) written by James Hacker. - -, 1 April 1989 -Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/SECURITY.md b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/SECURITY.md deleted file mode 100644 index 98f48dd1..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/SECURITY.md +++ /dev/null @@ -1,47 +0,0 @@ -# Security Policy - -Full details of the Automattic Security Policy can be found on [automattic.com](https://automattic.com/security/). - -## Supported Versions - -Generally, only the latest version of Jetpack and its associated plugins have continued support. If a critical vulnerability is found in the current version of a plugin, we may opt to backport any patches to previous versions. - -## Reporting a Vulnerability - -Our HackerOne program covers the below plugin software, as well as a variety of related projects and infrastructure: - -* [Jetpack](https://jetpack.com/) -* Jetpack Backup -* Jetpack Boost -* Jetpack CRM -* Jetpack Protect -* Jetpack Search -* Jetpack Social -* Jetpack VideoPress - -**For responsible disclosure of security issues and to be eligible for our bug bounty program, please submit your report via the [HackerOne](https://hackerone.com/automattic) portal.** - -Our most critical targets are: - -* Jetpack and the Jetpack composer packages (all within this repo) -* Jetpack.com -- the primary marketing site. -* cloud.jetpack.com -- a management site. -* wordpress.com -- the shared management site for both Jetpack and WordPress.com sites. - -For more targets, see the `In Scope` section on [HackerOne](https://hackerone.com/automattic). - -_Please note that the **WordPress software is a separate entity** from Automattic. Please report vulnerabilities for WordPress through [the WordPress Foundation's HackerOne page](https://hackerone.com/wordpress)._ - -## Guidelines - -We're committed to working with security researchers to resolve the vulnerabilities they discover. You can help us by following these guidelines: - -* Follow [HackerOne's disclosure guidelines](https://www.hackerone.com/disclosure-guidelines). -* Pen-testing Production: - * Please **setup a local environment** instead whenever possible. Most of our code is open source (see above). - * If that's not possible, **limit any data access/modification** to the bare minimum necessary to reproduce a PoC. - * **_Don't_ automate form submissions!** That's very annoying for us, because it adds extra work for the volunteers who manage those systems, and reduces the signal/noise ratio in our communication channels. - * To be eligible for a bounty, all of these guidelines must be followed. -* Be Patient - Give us a reasonable time to correct the issue before you disclose the vulnerability. - -We also expect you to comply with all applicable laws. You're responsible to pay any taxes associated with your bounties. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/composer.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/composer.json deleted file mode 100644 index 029bc41d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/composer.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "automattic/jetpack-plans", - "description": "Fetch information about Jetpack Plans from wpcom", - "type": "library", - "license": "GPL-2.0-or-later", - "require": { - "php": ">=7.2", - "automattic/jetpack-connection": "^6.7.7" - }, - "require-dev": { - "yoast/phpunit-polyfills": "^3.0.0", - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-status": "^5.0.10", - "automattic/jetpack-test-environment": "@dev", - "automattic/phpunit-select-config": "^1.0.1" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "scripts": { - "phpunit": [ - "phpunit-select-config phpunit.#.xml.dist --colors=always" - ], - "test-coverage": [ - "php -dpcov.directory=. ./vendor/bin/phpunit-select-config phpunit.#.xml.dist --coverage-php \"$COVERAGE_DIR/php.cov\"" - ], - "test-php": [ - "@composer phpunit" - ], - "build-production": "echo 'Add your build step to composer.json, please!'", - "build-development": "echo 'Add your build step to composer.json, please!'" - }, - "minimum-stability": "dev", - "prefer-stable": true, - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-plans", - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-plans/compare/v${old}...v${new}" - }, - "branch-alias": { - "dev-trunk": "0.6.x-dev" - } - }, - "config": { - "allow-plugins": { - "roots/wordpress-core-installer": true - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/src/class-current-plan.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/src/class-current-plan.php deleted file mode 100644 index cef57d52..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/src/class-current-plan.php +++ /dev/null @@ -1,436 +0,0 @@ - array( - 'plans' => array( - 'jetpack_free', - ), - 'supports' => array( - 'advanced-seo', - 'opentable', - 'calendly', - 'send-a-message', - 'sharing-block', - 'whatsapp-button', - 'social-previews', - 'videopress', - 'videopress/video', - 'v6-video-frame-poster', - - 'core/video', - 'core/cover', - 'core/audio', - ), - ), - 'personal' => array( - 'plans' => array( - 'jetpack_personal', - 'jetpack_personal_monthly', - 'personal-bundle', - 'personal-bundle-monthly', - 'personal-bundle-2y', - 'personal-bundle-3y', - 'starter-plan', - ), - 'supports' => array( - 'akismet', - 'payments', - 'videopress', - ), - ), - 'premium' => array( - 'plans' => array( - 'jetpack_premium', - 'jetpack_premium_monthly', - 'value_bundle', - 'value_bundle-monthly', - 'value_bundle-2y', - 'value_bundle-3y', - 'jetpack_creator_yearly', - 'jetpack_creator_bi_yearly', - 'jetpack_creator_monthly', - ), - 'supports' => array( - 'simple-payments', - 'vaultpress', - 'videopress', - 'republicize', - ), - ), - 'security' => array( - 'plans' => array( - 'jetpack_security_daily', - 'jetpack_security_daily_monthly', - 'jetpack_security_realtime', - 'jetpack_security_realtime_monthly', - 'jetpack_security_t1_yearly', - 'jetpack_security_t1_monthly', - 'jetpack_security_t2_yearly', - 'jetpack_security_t2_monthly', - ), - 'supports' => array(), - ), - 'business' => array( - 'plans' => array( - 'jetpack_business', - 'jetpack_business_monthly', - 'business-bundle', - 'business-bundle-monthly', - 'business-bundle-2y', - 'business-bundle-3y', - 'ecommerce-bundle', - 'ecommerce-bundle-monthly', - 'ecommerce-bundle-2y', - 'ecommerce-bundle-3y', - 'pro-plan', - 'wp_bundle_migration_trial_monthly', - 'wp_bundle_hosting_trial_monthly', - 'ecommerce-trial-bundle-monthly', - 'wooexpress-small-bundle-yearly', - 'wooexpress-small-bundle-monthly', - 'wooexpress-medium-bundle-yearly', - 'wooexpress-medium-bundle-monthly', - 'wp_com_hundred_year_bundle_centennially', - ), - 'supports' => array(), - ), - - 'complete' => array( - 'plans' => array( - 'jetpack_complete', - 'jetpack_complete_monthly', - 'vip', - ), - 'supports' => array(), - ), - ); - - /** - * Given a response to the `/sites/%d` endpoint, will parse the response and attempt to set the - * site's plan and products from the response. - * - * @param array $response The response from `/sites/%d`. - * @return bool Was the plan successfully updated? - */ - public static function update_from_sites_response( $response ) { - // Bail if there was an error or malformed response. - if ( is_wp_error( $response ) || ! is_array( $response ) || ! isset( $response['body'] ) ) { - return false; - } - - $body = wp_remote_retrieve_body( $response ); - if ( is_wp_error( $body ) ) { - return false; - } - - // Decode the results. - $results = json_decode( $body, true ); - - if ( ! is_array( $results ) ) { - return false; - } - - if ( isset( $results['products'] ) ) { - // Store the site's products in an option and return true if updated. - self::store_data_in_option( self::SITE_PRODUCTS_OPTION, $results['products'] ); - } - - if ( ! isset( $results['plan'] ) ) { - return false; - } - - $current_plan = get_option( self::PLAN_OPTION, array() ); - - if ( ! empty( $current_plan ) && $current_plan === $results['plan'] ) { - // Bail if the plans array hasn't changed. - return false; - } - - // Store the new plan in an option and return true if updated. - $result = self::store_data_in_option( self::PLAN_OPTION, $results['plan'] ); - - if ( $result ) { - // Reset the cache since we've just updated the plan. - self::$active_plan_cache = null; - } - - return $result; - } - - /** - * Store data in an option. - * - * @param string $option The name of the option that will store the data. - * @param array $data Data to be store in an option. - * @return bool Were the subscriptions successfully updated? - */ - private static function store_data_in_option( $option, $data ) { - $result = update_option( $option, $data, true ); - - // If something goes wrong with the update, so delete the current option and then update it. - if ( ! $result ) { - delete_option( $option ); - $result = update_option( $option, $data, true ); - } - - return $result; - } - - /** - * Make an API call to WordPress.com for plan status - * - * @uses Jetpack_Options::get_option() - * @uses Client::wpcom_json_api_request_as_blog() - * @uses update_option() - * - * @access public - * @static - * - * @return bool True if plan is updated, false if no update - */ - public static function refresh_from_wpcom() { - $site_id = Manager::get_site_id(); - if ( is_wp_error( $site_id ) ) { - return false; - } - - // Make the API request. - - $response = Client::wpcom_json_api_request_as_blog( - sprintf( '/sites/%d?force=wpcom', $site_id ), - '1.1' - ); - - return self::update_from_sites_response( $response ); - } - - /** - * Get the plan that this Jetpack site is currently using. - * - * @uses get_option() - * - * @access public - * @static - * - * @return array Active Jetpack plan details - */ - public static function get() { - // this can be expensive to compute so we cache for the duration of a request. - if ( is_array( self::$active_plan_cache ) && ! empty( self::$active_plan_cache ) ) { - return self::$active_plan_cache; - } - - $plan = get_option( self::PLAN_OPTION, array() ); - - // Set the default options. - $plan = wp_parse_args( - $plan, - array( - 'product_slug' => 'jetpack_free', - 'class' => 'free', - 'features' => array( - 'active' => array(), - ), - ) - ); - - list( $plan['class'], $supports ) = self::get_class_and_features( $plan['product_slug'] ); - - $modules = new Modules(); - foreach ( $modules->get_available() as $module_slug ) { - $module = $modules->get( $module_slug ); - if ( ! isset( $module ) || ! is_array( $module ) ) { - continue; - } - if ( in_array( 'free', $module['plan_classes'], true ) || in_array( $plan['class'], $module['plan_classes'], true ) ) { - $supports[] = $module_slug; - } - } - - $plan['supports'] = $supports; - - self::$active_plan_cache = $plan; - - return $plan; - } - - /** - * Get the site's products. - * - * @uses get_option() - * - * @access public - * @static - * - * @return array Active Jetpack products - */ - public static function get_products() { - return get_option( self::SITE_PRODUCTS_OPTION, array() ); - } - - /** - * Get the class of plan and a list of features it supports - * - * @param string $plan_slug The plan that we're interested in. - * @return array Two item array, the plan class and the an array of features. - */ - private static function get_class_and_features( $plan_slug ) { - $features = array(); - foreach ( self::PLAN_DATA as $class => $details ) { - $features = array_merge( $features, $details['supports'] ); - if ( in_array( $plan_slug, $details['plans'], true ) ) { - return array( $class, $features ); - } - } - return array( 'free', self::PLAN_DATA['free']['supports'] ); - } - - /** - * Gets the minimum plan slug that supports the given feature - * - * @param string $feature The name of the feature. - * @return string|bool The slug for the minimum plan that supports. - * the feature or false if not found - */ - public static function get_minimum_plan_for_feature( $feature ) { - foreach ( self::PLAN_DATA as $details ) { - if ( in_array( $feature, $details['supports'], true ) ) { - return $details['plans'][0]; - } - } - return false; - } - - /** - * Determine whether the active plan supports a particular feature - * - * @uses self::get() - * - * @access public - * @static - * - * @param string $feature The module or feature to check. - * @param bool $refresh_from_wpcom Refresh the local plan cache from wpcom. - * - * @return bool True if plan supports feature, false if not - */ - public static function supports( $feature, $refresh_from_wpcom = false ) { - if ( $refresh_from_wpcom ) { - self::refresh_from_wpcom(); - } - - // Hijack the feature eligibility check on WordPress.com sites since they are gated differently. - $should_wpcom_gate_feature = ( - function_exists( 'wpcom_site_has_feature' ) && - function_exists( 'wpcom_feature_exists' ) && - wpcom_feature_exists( $feature ) - ); - if ( $should_wpcom_gate_feature ) { - return wpcom_site_has_feature( $feature ); - } - - // Search product bypasses plan feature check. - if ( 'search' === $feature && (bool) get_option( 'has_jetpack_search_product' ) ) { - return true; - } - - // As of Q3 2021 - a videopress free tier is available to all plans. - if ( 'videopress' === $feature ) { - return true; - } - - // As of 05 2023 - all plans support Earn features (minus 'simple-payments'). - if ( in_array( $feature, array( 'donations', 'recurring-payments', 'premium-content/container' ), true ) ) { - return true; - } - - $plan = self::get(); - - if ( - in_array( $feature, $plan['supports'], true ) - || in_array( $feature, $plan['features']['active'], true ) - ) { - return true; - } - - return false; - } - - /** - * Retrieve site-specific features for Simple sites. - * - * See Jetpack_Gutenberg::get_site_specific_features() - * - * @return array - */ - public static function get_simple_site_specific_features() { - $is_simple_site = defined( 'IS_WPCOM' ) && constant( 'IS_WPCOM' ); - - if ( ! $is_simple_site ) { - return array( - 'active' => array(), - 'available' => array(), - ); - } - - $current_blog_id = get_current_blog_id(); - - // Return the cached value if it exists. - if ( isset( self::$simple_site_specific_features[ $current_blog_id ] ) ) { - return self::$simple_site_specific_features[ $current_blog_id ]; - } - - if ( ! class_exists( '\Store_Product_List' ) ) { - require WP_CONTENT_DIR . '/admin-plugins/wpcom-billing/store-product-list.php'; - } - - $simple_site_specific_features = \Store_Product_List::get_site_specific_features_data( $current_blog_id ); - - self::$simple_site_specific_features[ $current_blog_id ] = $simple_site_specific_features; - - return $simple_site_specific_features; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/src/class-plans.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/src/class-plans.php deleted file mode 100644 index 589593bf..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/automattic/jetpack-plans/src/class-plans.php +++ /dev/null @@ -1,111 +0,0 @@ - 'GET', - 'headers' => array( - 'X-Forwarded-For' => ( new \Automattic\Jetpack\Status\Visitor() )->get_ip( true ), - ), - ), - null, - 'rest' - ); - - $body = wp_remote_retrieve_body( $request ); - if ( 200 === wp_remote_retrieve_response_code( $request ) ) { - return json_decode( $body ); - } else { - return $body; - } - } - - /** - * Get plan information for a plan given its slug - * - * @since-jetpack 7.7.0 - * - * @param string $plan_slug Plan slug. - * - * @return object The plan object - */ - public static function get_plan( $plan_slug ) { - $plans = self::get_plans(); - if ( ! is_array( $plans ) ) { - return; - } - - foreach ( $plans as $plan ) { - if ( $plan_slug === $plan->product_slug ) { - return $plan; - } - } - } - - /** - * Efficiently get the short name of a plan from a slug. - * - * @param string $plan_slug Plan slug. - * @return string|null Short product name or null if not round. - */ - public static function get_plan_short_name( $plan_slug ) { - if ( defined( 'IS_WPCOM' ) && IS_WPCOM ) { - if ( ! class_exists( 'Store_Product_List' ) ) { - require WP_CONTENT_DIR . '/admin-plugins/wpcom-billing/store-product-list.php'; - } - - // Skip additional work like processing of coupons, since we only need the plan's short name. - $products = Store_Product_List::get(); - - foreach ( $products as $product ) { - if ( isset( $product['product_slug'] ) && $product['product_slug'] === $plan_slug ) { - return $product['product_name_short'] ?? null; - } - } - - return null; - } - - // Fallback to less efficient method for Jetpack environments. - $plan = self::get_plan( $plan_slug ); - return $plan->product_name_short ?? null; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/ClassLoader.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/ClassLoader.php deleted file mode 100644 index 7824d8f7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/ClassLoader.php +++ /dev/null @@ -1,579 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer\Autoload; - -/** - * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. - * - * $loader = new \Composer\Autoload\ClassLoader(); - * - * // register classes with namespaces - * $loader->add('Symfony\Component', __DIR__.'/component'); - * $loader->add('Symfony', __DIR__.'/framework'); - * - * // activate the autoloader - * $loader->register(); - * - * // to enable searching the include path (eg. for PEAR packages) - * $loader->setUseIncludePath(true); - * - * In this example, if you try to use a class in the Symfony\Component - * namespace or one of its children (Symfony\Component\Console for instance), - * the autoloader will first look for the class under the component/ - * directory, and it will then fallback to the framework/ directory if not - * found before giving up. - * - * This class is loosely based on the Symfony UniversalClassLoader. - * - * @author Fabien Potencier - * @author Jordi Boggiano - * @see https://www.php-fig.org/psr/psr-0/ - * @see https://www.php-fig.org/psr/psr-4/ - */ -class ClassLoader -{ - /** @var \Closure(string):void */ - private static $includeFile; - - /** @var string|null */ - private $vendorDir; - - // PSR-4 - /** - * @var array> - */ - private $prefixLengthsPsr4 = array(); - /** - * @var array> - */ - private $prefixDirsPsr4 = array(); - /** - * @var list - */ - private $fallbackDirsPsr4 = array(); - - // PSR-0 - /** - * List of PSR-0 prefixes - * - * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2'))) - * - * @var array>> - */ - private $prefixesPsr0 = array(); - /** - * @var list - */ - private $fallbackDirsPsr0 = array(); - - /** @var bool */ - private $useIncludePath = false; - - /** - * @var array - */ - private $classMap = array(); - - /** @var bool */ - private $classMapAuthoritative = false; - - /** - * @var array - */ - private $missingClasses = array(); - - /** @var string|null */ - private $apcuPrefix; - - /** - * @var array - */ - private static $registeredLoaders = array(); - - /** - * @param string|null $vendorDir - */ - public function __construct($vendorDir = null) - { - $this->vendorDir = $vendorDir; - self::initializeIncludeClosure(); - } - - /** - * @return array> - */ - public function getPrefixes() - { - if (!empty($this->prefixesPsr0)) { - return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); - } - - return array(); - } - - /** - * @return array> - */ - public function getPrefixesPsr4() - { - return $this->prefixDirsPsr4; - } - - /** - * @return list - */ - public function getFallbackDirs() - { - return $this->fallbackDirsPsr0; - } - - /** - * @return list - */ - public function getFallbackDirsPsr4() - { - return $this->fallbackDirsPsr4; - } - - /** - * @return array Array of classname => path - */ - public function getClassMap() - { - return $this->classMap; - } - - /** - * @param array $classMap Class to filename map - * - * @return void - */ - public function addClassMap(array $classMap) - { - if ($this->classMap) { - $this->classMap = array_merge($this->classMap, $classMap); - } else { - $this->classMap = $classMap; - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, either - * appending or prepending to the ones previously set for this prefix. - * - * @param string $prefix The prefix - * @param list|string $paths The PSR-0 root directories - * @param bool $prepend Whether to prepend the directories - * - * @return void - */ - public function add($prefix, $paths, $prepend = false) - { - $paths = (array) $paths; - if (!$prefix) { - if ($prepend) { - $this->fallbackDirsPsr0 = array_merge( - $paths, - $this->fallbackDirsPsr0 - ); - } else { - $this->fallbackDirsPsr0 = array_merge( - $this->fallbackDirsPsr0, - $paths - ); - } - - return; - } - - $first = $prefix[0]; - if (!isset($this->prefixesPsr0[$first][$prefix])) { - $this->prefixesPsr0[$first][$prefix] = $paths; - - return; - } - if ($prepend) { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $paths, - $this->prefixesPsr0[$first][$prefix] - ); - } else { - $this->prefixesPsr0[$first][$prefix] = array_merge( - $this->prefixesPsr0[$first][$prefix], - $paths - ); - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, either - * appending or prepending to the ones previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param list|string $paths The PSR-4 base directories - * @param bool $prepend Whether to prepend the directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function addPsr4($prefix, $paths, $prepend = false) - { - $paths = (array) $paths; - if (!$prefix) { - // Register directories for the root namespace. - if ($prepend) { - $this->fallbackDirsPsr4 = array_merge( - $paths, - $this->fallbackDirsPsr4 - ); - } else { - $this->fallbackDirsPsr4 = array_merge( - $this->fallbackDirsPsr4, - $paths - ); - } - } elseif (!isset($this->prefixDirsPsr4[$prefix])) { - // Register directories for a new namespace. - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = $paths; - } elseif ($prepend) { - // Prepend directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $paths, - $this->prefixDirsPsr4[$prefix] - ); - } else { - // Append directories for an already registered namespace. - $this->prefixDirsPsr4[$prefix] = array_merge( - $this->prefixDirsPsr4[$prefix], - $paths - ); - } - } - - /** - * Registers a set of PSR-0 directories for a given prefix, - * replacing any others previously set for this prefix. - * - * @param string $prefix The prefix - * @param list|string $paths The PSR-0 base directories - * - * @return void - */ - public function set($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr0 = (array) $paths; - } else { - $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; - } - } - - /** - * Registers a set of PSR-4 directories for a given namespace, - * replacing any others previously set for this namespace. - * - * @param string $prefix The prefix/namespace, with trailing '\\' - * @param list|string $paths The PSR-4 base directories - * - * @throws \InvalidArgumentException - * - * @return void - */ - public function setPsr4($prefix, $paths) - { - if (!$prefix) { - $this->fallbackDirsPsr4 = (array) $paths; - } else { - $length = strlen($prefix); - if ('\\' !== $prefix[$length - 1]) { - throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); - } - $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; - $this->prefixDirsPsr4[$prefix] = (array) $paths; - } - } - - /** - * Turns on searching the include path for class files. - * - * @param bool $useIncludePath - * - * @return void - */ - public function setUseIncludePath($useIncludePath) - { - $this->useIncludePath = $useIncludePath; - } - - /** - * Can be used to check if the autoloader uses the include path to check - * for classes. - * - * @return bool - */ - public function getUseIncludePath() - { - return $this->useIncludePath; - } - - /** - * Turns off searching the prefix and fallback directories for classes - * that have not been registered with the class map. - * - * @param bool $classMapAuthoritative - * - * @return void - */ - public function setClassMapAuthoritative($classMapAuthoritative) - { - $this->classMapAuthoritative = $classMapAuthoritative; - } - - /** - * Should class lookup fail if not found in the current class map? - * - * @return bool - */ - public function isClassMapAuthoritative() - { - return $this->classMapAuthoritative; - } - - /** - * APCu prefix to use to cache found/not-found classes, if the extension is enabled. - * - * @param string|null $apcuPrefix - * - * @return void - */ - public function setApcuPrefix($apcuPrefix) - { - $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; - } - - /** - * The APCu prefix in use, or null if APCu caching is not enabled. - * - * @return string|null - */ - public function getApcuPrefix() - { - return $this->apcuPrefix; - } - - /** - * Registers this instance as an autoloader. - * - * @param bool $prepend Whether to prepend the autoloader or not - * - * @return void - */ - public function register($prepend = false) - { - spl_autoload_register(array($this, 'loadClass'), true, $prepend); - - if (null === $this->vendorDir) { - return; - } - - if ($prepend) { - self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; - } else { - unset(self::$registeredLoaders[$this->vendorDir]); - self::$registeredLoaders[$this->vendorDir] = $this; - } - } - - /** - * Unregisters this instance as an autoloader. - * - * @return void - */ - public function unregister() - { - spl_autoload_unregister(array($this, 'loadClass')); - - if (null !== $this->vendorDir) { - unset(self::$registeredLoaders[$this->vendorDir]); - } - } - - /** - * Loads the given class or interface. - * - * @param string $class The name of the class - * @return true|null True if loaded, null otherwise - */ - public function loadClass($class) - { - if ($file = $this->findFile($class)) { - $includeFile = self::$includeFile; - $includeFile($file); - - return true; - } - - return null; - } - - /** - * Finds the path to the file where the class is defined. - * - * @param string $class The name of the class - * - * @return string|false The path if found, false otherwise - */ - public function findFile($class) - { - // class map lookup - if (isset($this->classMap[$class])) { - return $this->classMap[$class]; - } - if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { - return false; - } - if (null !== $this->apcuPrefix) { - $file = apcu_fetch($this->apcuPrefix.$class, $hit); - if ($hit) { - return $file; - } - } - - $file = $this->findFileWithExtension($class, '.php'); - - // Search for Hack files if we are running on HHVM - if (false === $file && defined('HHVM_VERSION')) { - $file = $this->findFileWithExtension($class, '.hh'); - } - - if (null !== $this->apcuPrefix) { - apcu_add($this->apcuPrefix.$class, $file); - } - - if (false === $file) { - // Remember that this class does not exist. - $this->missingClasses[$class] = true; - } - - return $file; - } - - /** - * Returns the currently registered loaders keyed by their corresponding vendor directories. - * - * @return array - */ - public static function getRegisteredLoaders() - { - return self::$registeredLoaders; - } - - /** - * @param string $class - * @param string $ext - * @return string|false - */ - private function findFileWithExtension($class, $ext) - { - // PSR-4 lookup - $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; - - $first = $class[0]; - if (isset($this->prefixLengthsPsr4[$first])) { - $subPath = $class; - while (false !== $lastPos = strrpos($subPath, '\\')) { - $subPath = substr($subPath, 0, $lastPos); - $search = $subPath . '\\'; - if (isset($this->prefixDirsPsr4[$search])) { - $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); - foreach ($this->prefixDirsPsr4[$search] as $dir) { - if (file_exists($file = $dir . $pathEnd)) { - return $file; - } - } - } - } - } - - // PSR-4 fallback dirs - foreach ($this->fallbackDirsPsr4 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { - return $file; - } - } - - // PSR-0 lookup - if (false !== $pos = strrpos($class, '\\')) { - // namespaced class name - $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) - . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); - } else { - // PEAR-like class name - $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; - } - - if (isset($this->prefixesPsr0[$first])) { - foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { - if (0 === strpos($class, $prefix)) { - foreach ($dirs as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - } - } - } - - // PSR-0 fallback dirs - foreach ($this->fallbackDirsPsr0 as $dir) { - if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { - return $file; - } - } - - // PSR-0 include paths. - if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { - return $file; - } - - return false; - } - - /** - * @return void - */ - private static function initializeIncludeClosure() - { - if (self::$includeFile !== null) { - return; - } - - /** - * Scope isolated include. - * - * Prevents access to $this/self from included files. - * - * @param string $file - * @return void - */ - self::$includeFile = \Closure::bind(static function($file) { - include $file; - }, null, null); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/InstalledVersions.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/InstalledVersions.php deleted file mode 100644 index 51e734a7..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/InstalledVersions.php +++ /dev/null @@ -1,359 +0,0 @@ - - * Jordi Boggiano - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Composer; - -use Composer\Autoload\ClassLoader; -use Composer\Semver\VersionParser; - -/** - * This class is copied in every Composer installed project and available to all - * - * See also https://getcomposer.org/doc/07-runtime.md#installed-versions - * - * To require its presence, you can require `composer-runtime-api ^2.0` - * - * @final - */ -class InstalledVersions -{ - /** - * @var mixed[]|null - * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null - */ - private static $installed; - - /** - * @var bool|null - */ - private static $canGetVendors; - - /** - * @var array[] - * @psalm-var array}> - */ - private static $installedByVendor = array(); - - /** - * Returns a list of all package names which are present, either by being installed, replaced or provided - * - * @return string[] - * @psalm-return list - */ - public static function getInstalledPackages() - { - $packages = array(); - foreach (self::getInstalled() as $installed) { - $packages[] = array_keys($installed['versions']); - } - - if (1 === \count($packages)) { - return $packages[0]; - } - - return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); - } - - /** - * Returns a list of all package names with a specific type e.g. 'library' - * - * @param string $type - * @return string[] - * @psalm-return list - */ - public static function getInstalledPackagesByType($type) - { - $packagesByType = array(); - - foreach (self::getInstalled() as $installed) { - foreach ($installed['versions'] as $name => $package) { - if (isset($package['type']) && $package['type'] === $type) { - $packagesByType[] = $name; - } - } - } - - return $packagesByType; - } - - /** - * Checks whether the given package is installed - * - * This also returns true if the package name is provided or replaced by another package - * - * @param string $packageName - * @param bool $includeDevRequirements - * @return bool - */ - public static function isInstalled($packageName, $includeDevRequirements = true) - { - foreach (self::getInstalled() as $installed) { - if (isset($installed['versions'][$packageName])) { - return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false; - } - } - - return false; - } - - /** - * Checks whether the given package satisfies a version constraint - * - * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: - * - * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') - * - * @param VersionParser $parser Install composer/semver to have access to this class and functionality - * @param string $packageName - * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package - * @return bool - */ - public static function satisfies(VersionParser $parser, $packageName, $constraint) - { - $constraint = $parser->parseConstraints((string) $constraint); - $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); - - return $provided->matches($constraint); - } - - /** - * Returns a version constraint representing all the range(s) which are installed for a given package - * - * It is easier to use this via isInstalled() with the $constraint argument if you need to check - * whether a given version of a package is installed, and not just whether it exists - * - * @param string $packageName - * @return string Version constraint usable with composer/semver - */ - public static function getVersionRanges($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - $ranges = array(); - if (isset($installed['versions'][$packageName]['pretty_version'])) { - $ranges[] = $installed['versions'][$packageName]['pretty_version']; - } - if (array_key_exists('aliases', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); - } - if (array_key_exists('replaced', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); - } - if (array_key_exists('provided', $installed['versions'][$packageName])) { - $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); - } - - return implode(' || ', $ranges); - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['version'])) { - return null; - } - - return $installed['versions'][$packageName]['version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present - */ - public static function getPrettyVersion($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['pretty_version'])) { - return null; - } - - return $installed['versions'][$packageName]['pretty_version']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference - */ - public static function getReference($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - if (!isset($installed['versions'][$packageName]['reference'])) { - return null; - } - - return $installed['versions'][$packageName]['reference']; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @param string $packageName - * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. - */ - public static function getInstallPath($packageName) - { - foreach (self::getInstalled() as $installed) { - if (!isset($installed['versions'][$packageName])) { - continue; - } - - return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; - } - - throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); - } - - /** - * @return array - * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} - */ - public static function getRootPackage() - { - $installed = self::getInstalled(); - - return $installed[0]['root']; - } - - /** - * Returns the raw installed.php data for custom implementations - * - * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. - * @return array[] - * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} - */ - public static function getRawData() - { - @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - self::$installed = include __DIR__ . '/installed.php'; - } else { - self::$installed = array(); - } - } - - return self::$installed; - } - - /** - * Returns the raw data of all installed.php which are currently loaded for custom implementations - * - * @return array[] - * @psalm-return list}> - */ - public static function getAllRawData() - { - return self::getInstalled(); - } - - /** - * Lets you reload the static array from another file - * - * This is only useful for complex integrations in which a project needs to use - * this class but then also needs to execute another project's autoloader in process, - * and wants to ensure both projects have access to their version of installed.php. - * - * A typical case would be PHPUnit, where it would need to make sure it reads all - * the data it needs from this class, then call reload() with - * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure - * the project in which it runs can then also use this class safely, without - * interference between PHPUnit's dependencies and the project's dependencies. - * - * @param array[] $data A vendor/composer/installed.php data set - * @return void - * - * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data - */ - public static function reload($data) - { - self::$installed = $data; - self::$installedByVendor = array(); - } - - /** - * @return array[] - * @psalm-return list}> - */ - private static function getInstalled() - { - if (null === self::$canGetVendors) { - self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); - } - - $installed = array(); - - if (self::$canGetVendors) { - foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { - if (isset(self::$installedByVendor[$vendorDir])) { - $installed[] = self::$installedByVendor[$vendorDir]; - } elseif (is_file($vendorDir.'/composer/installed.php')) { - /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ - $required = require $vendorDir.'/composer/installed.php'; - $installed[] = self::$installedByVendor[$vendorDir] = $required; - if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { - self::$installed = $installed[count($installed) - 1]; - } - } - } - } - - if (null === self::$installed) { - // only require the installed.php file if this file is loaded from its dumped location, - // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 - if (substr(__DIR__, -8, 1) !== 'C') { - /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $required */ - $required = require __DIR__ . '/installed.php'; - self::$installed = $required; - } else { - self::$installed = array(); - } - } - - if (self::$installed !== array()) { - $installed[] = self::$installed; - } - - return $installed; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/LICENSE b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/LICENSE deleted file mode 100644 index f27399a0..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ - -Copyright (c) Nils Adermann, Jordi Boggiano - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_classmap.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_classmap.php deleted file mode 100644 index 48bdd83f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_classmap.php +++ /dev/null @@ -1,253 +0,0 @@ - $vendorDir . '/wikimedia/aho-corasick/src/MultiStringMatcher.php', - 'AhoCorasick\\MultiStringReplacer' => $vendorDir . '/wikimedia/aho-corasick/src/MultiStringReplacer.php', - 'Automattic\\Jetpack\\A8c_Mc_Stats' => $baseDir . '/jetpack_vendor/automattic/jetpack-a8c-mc-stats/src/class-a8c-mc-stats.php', - 'Automattic\\Jetpack\\Admin_UI\\Admin_Menu' => $baseDir . '/jetpack_vendor/automattic/jetpack-admin-ui/src/class-admin-menu.php', - 'Automattic\\Jetpack\\Assets' => $baseDir . '/jetpack_vendor/automattic/jetpack-assets/src/class-assets.php', - 'Automattic\\Jetpack\\Assets\\Logo' => $baseDir . '/jetpack_vendor/automattic/jetpack-logo/src/class-logo.php', - 'Automattic\\Jetpack\\Assets\\Script_Data' => $baseDir . '/jetpack_vendor/automattic/jetpack-assets/src/class-script-data.php', - 'Automattic\\Jetpack\\Assets\\Semver' => $baseDir . '/jetpack_vendor/automattic/jetpack-assets/src/class-semver.php', - 'Automattic\\Jetpack\\Autoloader\\AutoloadFileWriter' => $vendorDir . '/automattic/jetpack-autoloader/src/AutoloadFileWriter.php', - 'Automattic\\Jetpack\\Autoloader\\AutoloadGenerator' => $vendorDir . '/automattic/jetpack-autoloader/src/AutoloadGenerator.php', - 'Automattic\\Jetpack\\Autoloader\\AutoloadProcessor' => $vendorDir . '/automattic/jetpack-autoloader/src/AutoloadProcessor.php', - 'Automattic\\Jetpack\\Autoloader\\CustomAutoloaderPlugin' => $vendorDir . '/automattic/jetpack-autoloader/src/CustomAutoloaderPlugin.php', - 'Automattic\\Jetpack\\Autoloader\\ManifestGenerator' => $vendorDir . '/automattic/jetpack-autoloader/src/ManifestGenerator.php', - 'Automattic\\Jetpack\\Automatic_Install_Skin' => $baseDir . '/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-automatic-install-skin.php', - 'Automattic\\Jetpack\\Backup\\V0005\\Helper_Script_Manager' => $baseDir . '/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/src/class-helper-script-manager.php', - 'Automattic\\Jetpack\\Backup\\V0005\\Helper_Script_Manager_Impl' => $baseDir . '/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/src/class-helper-script-manager-impl.php', - 'Automattic\\Jetpack\\Backup\\V0005\\Throw_On_Errors' => $baseDir . '/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/src/class-throw-on-errors.php', - 'Automattic\\Jetpack\\Boost_Core\\Contracts\\Boost_API_Client' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/contracts/boost-api-client.php', - 'Automattic\\Jetpack\\Boost_Core\\Lib\\Boost_API' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-boost-api.php', - 'Automattic\\Jetpack\\Boost_Core\\Lib\\Cacheable' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-cacheable.php', - 'Automattic\\Jetpack\\Boost_Core\\Lib\\Transient' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-transient.php', - 'Automattic\\Jetpack\\Boost_Core\\Lib\\Url' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-url.php', - 'Automattic\\Jetpack\\Boost_Core\\Lib\\Utils' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-utils.php', - 'Automattic\\Jetpack\\Boost_Core\\Lib\\WPCOM_Boost_API_Client' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-wpcom-boost-api-client.php', - 'Automattic\\Jetpack\\Boost_Speed_Score\\Jetpack_Boost_Modules' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-jetpack-boost-modules.php', - 'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score.php', - 'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score_Graph_History_Request' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score-graph-history-request.php', - 'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score_History' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score-history.php', - 'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score_Request' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score-request.php', - 'Automattic\\Jetpack\\Composer\\Manager' => $vendorDir . '/automattic/jetpack-composer-plugin/src/class-manager.php', - 'Automattic\\Jetpack\\Composer\\Plugin' => $vendorDir . '/automattic/jetpack-composer-plugin/src/class-plugin.php', - 'Automattic\\Jetpack\\Config' => $baseDir . '/jetpack_vendor/automattic/jetpack-config/src/class-config.php', - 'Automattic\\Jetpack\\Connection\\Authorize_Json_Api' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-authorize-json-api.php', - 'Automattic\\Jetpack\\Connection\\Client' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-client.php', - 'Automattic\\Jetpack\\Connection\\Connection_Assets' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-connection-assets.php', - 'Automattic\\Jetpack\\Connection\\Connection_Notice' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-connection-notice.php', - 'Automattic\\Jetpack\\Connection\\Error_Handler' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-error-handler.php', - 'Automattic\\Jetpack\\Connection\\Initial_State' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-initial-state.php', - 'Automattic\\Jetpack\\Connection\\Manager' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-manager.php', - 'Automattic\\Jetpack\\Connection\\Manager_Interface' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/interface-manager.php', - 'Automattic\\Jetpack\\Connection\\Nonce_Handler' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-nonce-handler.php', - 'Automattic\\Jetpack\\Connection\\Package_Version' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-package-version.php', - 'Automattic\\Jetpack\\Connection\\Package_Version_Tracker' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-package-version-tracker.php', - 'Automattic\\Jetpack\\Connection\\Plugin' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-plugin.php', - 'Automattic\\Jetpack\\Connection\\Plugin_Storage' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-plugin-storage.php', - 'Automattic\\Jetpack\\Connection\\REST_Connector' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-rest-connector.php', - 'Automattic\\Jetpack\\Connection\\Rest_Authentication' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-rest-authentication.php', - 'Automattic\\Jetpack\\Connection\\SSO' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-sso.php', - 'Automattic\\Jetpack\\Connection\\SSO\\Force_2FA' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-force-2fa.php', - 'Automattic\\Jetpack\\Connection\\SSO\\Helpers' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-helpers.php', - 'Automattic\\Jetpack\\Connection\\SSO\\Notices' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-notices.php', - 'Automattic\\Jetpack\\Connection\\SSO\\User_Admin' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-user-admin.php', - 'Automattic\\Jetpack\\Connection\\Secrets' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-secrets.php', - 'Automattic\\Jetpack\\Connection\\Server_Sandbox' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-server-sandbox.php', - 'Automattic\\Jetpack\\Connection\\Tokens' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-tokens.php', - 'Automattic\\Jetpack\\Connection\\Tokens_Locks' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-tokens-locks.php', - 'Automattic\\Jetpack\\Connection\\Traits\\WPCOM_REST_API_Proxy_Request' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/traits/trait-wpcom-rest-api-proxy-request.php', - 'Automattic\\Jetpack\\Connection\\Urls' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-urls.php', - 'Automattic\\Jetpack\\Connection\\Users_Connection_Admin' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-users-connection-admin.php', - 'Automattic\\Jetpack\\Connection\\Utils' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-utils.php', - 'Automattic\\Jetpack\\Connection\\Webhooks' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-webhooks.php', - 'Automattic\\Jetpack\\Connection\\Webhooks\\Authorize_Redirect' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/webhooks/class-authorize-redirect.php', - 'Automattic\\Jetpack\\Connection\\XMLRPC_Async_Call' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-async-call.php', - 'Automattic\\Jetpack\\Connection\\XMLRPC_Connector' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-connector.php', - 'Automattic\\Jetpack\\Constants' => $baseDir . '/jetpack_vendor/automattic/jetpack-constants/src/class-constants.php', - 'Automattic\\Jetpack\\CookieState' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-cookiestate.php', - 'Automattic\\Jetpack\\Current_Plan' => $vendorDir . '/automattic/jetpack-plans/src/class-current-plan.php', - 'Automattic\\Jetpack\\Device_Detection' => $baseDir . '/jetpack_vendor/automattic/jetpack-device-detection/src/class-device-detection.php', - 'Automattic\\Jetpack\\Device_Detection\\User_Agent_Info' => $baseDir . '/jetpack_vendor/automattic/jetpack-device-detection/src/class-user-agent-info.php', - 'Automattic\\Jetpack\\Errors' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-errors.php', - 'Automattic\\Jetpack\\ExPlat' => $baseDir . '/jetpack_vendor/automattic/jetpack-explat/src/class-explat.php', - 'Automattic\\Jetpack\\ExPlat\\REST_Controller' => $baseDir . '/jetpack_vendor/automattic/jetpack-explat/src/class-rest-controller.php', - 'Automattic\\Jetpack\\Files' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-files.php', - 'Automattic\\Jetpack\\Heartbeat' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-heartbeat.php', - 'Automattic\\Jetpack\\IP\\Utils' => $baseDir . '/jetpack_vendor/automattic/jetpack-ip/src/class-utils.php', - 'Automattic\\Jetpack\\IdentityCrisis\\Exception' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-exception.php', - 'Automattic\\Jetpack\\IdentityCrisis\\REST_Endpoints' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-rest-endpoints.php', - 'Automattic\\Jetpack\\IdentityCrisis\\UI' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-ui.php', - 'Automattic\\Jetpack\\IdentityCrisis\\URL_Secret' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-url-secret.php', - 'Automattic\\Jetpack\\Identity_Crisis' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-identity-crisis.php', - 'Automattic\\Jetpack\\JITMS\\JITM' => $baseDir . '/jetpack_vendor/automattic/jetpack-jitm/src/class-jitm.php', - 'Automattic\\Jetpack\\JITMS\\Post_Connection_JITM' => $baseDir . '/jetpack_vendor/automattic/jetpack-jitm/src/class-post-connection-jitm.php', - 'Automattic\\Jetpack\\JITMS\\Pre_Connection_JITM' => $baseDir . '/jetpack_vendor/automattic/jetpack-jitm/src/class-pre-connection-jitm.php', - 'Automattic\\Jetpack\\JITMS\\Rest_Api_Endpoints' => $baseDir . '/jetpack_vendor/automattic/jetpack-jitm/src/class-rest-api-endpoints.php', - 'Automattic\\Jetpack\\Licensing' => $baseDir . '/jetpack_vendor/automattic/jetpack-licensing/src/class-licensing.php', - 'Automattic\\Jetpack\\Licensing\\Endpoints' => $baseDir . '/jetpack_vendor/automattic/jetpack-licensing/src/class-endpoints.php', - 'Automattic\\Jetpack\\Modules' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-modules.php', - 'Automattic\\Jetpack\\My_Jetpack\\Activitylog' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-activitylog.php', - 'Automattic\\Jetpack\\My_Jetpack\\Historically_Active_Modules' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-historically-active-modules.php', - 'Automattic\\Jetpack\\My_Jetpack\\Hybrid_Product' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-hybrid-product.php', - 'Automattic\\Jetpack\\My_Jetpack\\Initializer' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-initializer.php', - 'Automattic\\Jetpack\\My_Jetpack\\Jetpack_Manage' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-jetpack-manage.php', - 'Automattic\\Jetpack\\My_Jetpack\\Module_Product' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-module-product.php', - 'Automattic\\Jetpack\\My_Jetpack\\Product' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-product.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-products.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Anti_Spam' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-anti-spam.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Backup' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-backup.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Boost' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-boost.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Complete' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-complete.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Creator' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-creator.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Crm' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-crm.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Extras' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-extras.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Growth' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-growth.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Jetpack_Ai' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-jetpack-ai.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Newsletter' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-newsletter.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Protect' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-protect.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Related_Posts' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-related-posts.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Scan' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-scan.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Search' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Search_Stats' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search-stats.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Security' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-security.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Site_Accelerator' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-site-accelerator.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Social' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-social.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Starter' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-starter.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Stats' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-stats.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Videopress' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-videopress.php', - 'Automattic\\Jetpack\\My_Jetpack\\REST_AI' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-ai.php', - 'Automattic\\Jetpack\\My_Jetpack\\REST_Products' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-products.php', - 'Automattic\\Jetpack\\My_Jetpack\\REST_Purchases' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-purchases.php', - 'Automattic\\Jetpack\\My_Jetpack\\REST_Recommendations_Evaluation' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-recommendations-evaluation.php', - 'Automattic\\Jetpack\\My_Jetpack\\REST_Zendesk_Chat' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-zendesk-chat.php', - 'Automattic\\Jetpack\\My_Jetpack\\Red_Bubble_Notifications' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-red-bubble-notifications.php', - 'Automattic\\Jetpack\\My_Jetpack\\Wpcom_Products' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-wpcom-products.php', - 'Automattic\\Jetpack\\Partner' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-partner.php', - 'Automattic\\Jetpack\\Partner_Coupon' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-partner-coupon.php', - 'Automattic\\Jetpack\\Password_Checker' => $baseDir . '/jetpack_vendor/automattic/jetpack-password-checker/src/class-password-checker.php', - 'Automattic\\Jetpack\\Paths' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-paths.php', - 'Automattic\\Jetpack\\Plans' => $vendorDir . '/automattic/jetpack-plans/src/class-plans.php', - 'Automattic\\Jetpack\\Plugins_Installer' => $baseDir . '/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-plugins-installer.php', - 'Automattic\\Jetpack\\Protect\\Credentials' => $baseDir . '/src/class-credentials.php', - 'Automattic\\Jetpack\\Protect\\Onboarding' => $baseDir . '/src/class-onboarding.php', - 'Automattic\\Jetpack\\Protect\\REST_Controller' => $baseDir . '/src/class-rest-controller.php', - 'Automattic\\Jetpack\\Protect\\Scan_History' => $baseDir . '/src/class-scan-history.php', - 'Automattic\\Jetpack\\Protect\\Site_Health' => $baseDir . '/src/class-site-health.php', - 'Automattic\\Jetpack\\Protect\\Threats' => $baseDir . '/src/class-threats.php', - 'Automattic\\Jetpack\\Protect_Models' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-protect-models.php', - 'Automattic\\Jetpack\\Protect_Models\\Extension_Model' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-extension-model.php', - 'Automattic\\Jetpack\\Protect_Models\\History_Model' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-history-model.php', - 'Automattic\\Jetpack\\Protect_Models\\Status_Model' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-status-model.php', - 'Automattic\\Jetpack\\Protect_Models\\Threat_Model' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-threat-model.php', - 'Automattic\\Jetpack\\Protect_Models\\Vulnerability_Model' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-vulnerability-model.php', - 'Automattic\\Jetpack\\Protect_Status\\Plan' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-plan.php', - 'Automattic\\Jetpack\\Protect_Status\\Protect_Status' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-protect-status.php', - 'Automattic\\Jetpack\\Protect_Status\\REST_Controller' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-rest-controller.php', - 'Automattic\\Jetpack\\Protect_Status\\Scan_Status' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-scan-status.php', - 'Automattic\\Jetpack\\Protect_Status\\Status' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-status.php', - 'Automattic\\Jetpack\\Redirect' => $baseDir . '/jetpack_vendor/automattic/jetpack-redirect/src/class-redirect.php', - 'Automattic\\Jetpack\\Roles' => $baseDir . '/jetpack_vendor/automattic/jetpack-roles/src/class-roles.php', - 'Automattic\\Jetpack\\Status' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-status.php', - 'Automattic\\Jetpack\\Status\\Cache' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-cache.php', - 'Automattic\\Jetpack\\Status\\Host' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-host.php', - 'Automattic\\Jetpack\\Status\\Visitor' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-visitor.php', - 'Automattic\\Jetpack\\Sync\\Actions' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-actions.php', - 'Automattic\\Jetpack\\Sync\\Codec_Interface' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/interface-codec.php', - 'Automattic\\Jetpack\\Sync\\Data_Settings' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-data-settings.php', - 'Automattic\\Jetpack\\Sync\\Dedicated_Sender' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-dedicated-sender.php', - 'Automattic\\Jetpack\\Sync\\Default_Filter_Settings' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-default-filter-settings.php', - 'Automattic\\Jetpack\\Sync\\Defaults' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-defaults.php', - 'Automattic\\Jetpack\\Sync\\Functions' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-functions.php', - 'Automattic\\Jetpack\\Sync\\Health' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-health.php', - 'Automattic\\Jetpack\\Sync\\JSON_Deflate_Array_Codec' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-json-deflate-array-codec.php', - 'Automattic\\Jetpack\\Sync\\Listener' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-listener.php', - 'Automattic\\Jetpack\\Sync\\Lock' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-lock.php', - 'Automattic\\Jetpack\\Sync\\Main' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-main.php', - 'Automattic\\Jetpack\\Sync\\Modules' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-modules.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Attachments' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-attachments.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Callables' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-callables.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Comments' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-comments.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Constants' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-constants.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Full_Sync' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Full_Sync_Immediately' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync-immediately.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Import' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-import.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Menus' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-menus.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Meta' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-meta.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Module' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-module.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Network_Options' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-network-options.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Options' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-options.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Plugins' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-plugins.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Posts' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-posts.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Protect' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-protect.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Search' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-search.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Stats' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-stats.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Term_Relationships' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-term-relationships.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Terms' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-terms.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Themes' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-themes.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Updates' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-updates.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Users' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-users.php', - 'Automattic\\Jetpack\\Sync\\Modules\\WP_Super_Cache' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-wp-super-cache.php', - 'Automattic\\Jetpack\\Sync\\Modules\\WooCommerce' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce.php', - 'Automattic\\Jetpack\\Sync\\Modules\\WooCommerce_HPOS_Orders' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce-hpos-orders.php', - 'Automattic\\Jetpack\\Sync\\Package_Version' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-package-version.php', - 'Automattic\\Jetpack\\Sync\\Queue' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-queue.php', - 'Automattic\\Jetpack\\Sync\\Queue\\Queue_Storage_Options' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-options.php', - 'Automattic\\Jetpack\\Sync\\Queue\\Queue_Storage_Table' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-table.php', - 'Automattic\\Jetpack\\Sync\\Queue_Buffer' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-queue-buffer.php', - 'Automattic\\Jetpack\\Sync\\REST_Endpoints' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-rest-endpoints.php', - 'Automattic\\Jetpack\\Sync\\REST_Sender' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-rest-sender.php', - 'Automattic\\Jetpack\\Sync\\Replicastore' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-replicastore.php', - 'Automattic\\Jetpack\\Sync\\Replicastore\\Table_Checksum' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum.php', - 'Automattic\\Jetpack\\Sync\\Replicastore\\Table_Checksum_Usermeta' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-usermeta.php', - 'Automattic\\Jetpack\\Sync\\Replicastore\\Table_Checksum_Users' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-users.php', - 'Automattic\\Jetpack\\Sync\\Replicastore_Interface' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/interface-replicastore.php', - 'Automattic\\Jetpack\\Sync\\Sender' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-sender.php', - 'Automattic\\Jetpack\\Sync\\Server' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-server.php', - 'Automattic\\Jetpack\\Sync\\Settings' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-settings.php', - 'Automattic\\Jetpack\\Sync\\Simple_Codec' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-simple-codec.php', - 'Automattic\\Jetpack\\Sync\\Users' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-users.php', - 'Automattic\\Jetpack\\Sync\\Utils' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-utils.php', - 'Automattic\\Jetpack\\Terms_Of_Service' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-terms-of-service.php', - 'Automattic\\Jetpack\\Tracking' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-tracking.php', - 'Automattic\\Jetpack\\Transport_Helper\\Package_Version' => $baseDir . '/jetpack_vendor/automattic/jetpack-transport-helper/src/class-package-version.php', - 'Automattic\\Jetpack\\Transport_Helper\\V0001\\Package_Version' => $baseDir . '/jetpack_vendor/automattic/jetpack-transport-helper/src/class-package-version-compat.php', - 'Automattic\\Jetpack\\Transport_Helper\\V0005\\REST_Controller' => $baseDir . '/jetpack_vendor/automattic/jetpack-transport-helper/src/class-rest-controller.php', - 'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-brute-force-protection.php', - 'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Blocked_Login_Page' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-blocked-login-page.php', - 'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Math_Authenticate' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-math-fallback.php', - 'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Shared_Functions' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-shared-functions.php', - 'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Transient_Cleanup' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-transient-cleanup.php', - 'Automattic\\Jetpack\\Waf\\CLI' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-cli.php', - 'Automattic\\Jetpack\\Waf\\File_System_Exception' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-file-system-exception.php', - 'Automattic\\Jetpack\\Waf\\REST_Controller' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-rest-controller.php', - 'Automattic\\Jetpack\\Waf\\Rules_API_Exception' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-rules-api-exception.php', - 'Automattic\\Jetpack\\Waf\\Waf_Blocklog_Manager' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-blocklog-manager.php', - 'Automattic\\Jetpack\\Waf\\Waf_Compatibility' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-compatibility.php', - 'Automattic\\Jetpack\\Waf\\Waf_Constants' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-constants.php', - 'Automattic\\Jetpack\\Waf\\Waf_Exception' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-waf-exception.php', - 'Automattic\\Jetpack\\Waf\\Waf_Initializer' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-initializer.php', - 'Automattic\\Jetpack\\Waf\\Waf_Operators' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-operators.php', - 'Automattic\\Jetpack\\Waf\\Waf_Request' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-request.php', - 'Automattic\\Jetpack\\Waf\\Waf_Rules_Manager' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-rules-manager.php', - 'Automattic\\Jetpack\\Waf\\Waf_Runner' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-runner.php', - 'Automattic\\Jetpack\\Waf\\Waf_Runtime' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-runtime.php', - 'Automattic\\Jetpack\\Waf\\Waf_Standalone_Bootstrap' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-standalone-bootstrap.php', - 'Automattic\\Jetpack\\Waf\\Waf_Stats' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-stats.php', - 'Automattic\\Jetpack\\Waf\\Waf_Transforms' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-transforms.php', - 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', - 'Jetpack_IXR_Client' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-ixr-client.php', - 'Jetpack_IXR_ClientMulticall' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-ixr-clientmulticall.php', - 'Jetpack_Options' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-options.php', - 'Jetpack_Protect' => $baseDir . '/src/class-jetpack-protect.php', - 'Jetpack_Signature' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-signature.php', - 'Jetpack_Tracks_Client' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-tracks-client.php', - 'Jetpack_Tracks_Event' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-tracks-event.php', - 'Jetpack_XMLRPC_Server' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-xmlrpc-server.php', -); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_files.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_files.php deleted file mode 100644 index cc9498e8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_files.php +++ /dev/null @@ -1,13 +0,0 @@ - $baseDir . '/jetpack_vendor/automattic/jetpack-assets/actions.php', - '7372b7fb88a9723cf5b76d456eb0b738' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/actions.php', - '590147edb63acb03b2852d5c4db13ce8' => $baseDir . '/jetpack_vendor/automattic/jetpack-transport-helper/actions.php', - '3d45c7e6a7f0e71849e33afe4b3b3ede' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/cli.php', -); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_namespaces.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_namespaces.php deleted file mode 100644 index 15a2ff3a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_namespaces.php +++ /dev/null @@ -1,9 +0,0 @@ - array($vendorDir . '/automattic/jetpack-autoloader/src'), -); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_real.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_real.php deleted file mode 100644 index 0b047c3e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_real.php +++ /dev/null @@ -1,51 +0,0 @@ -setClassMapAuthoritative(true); - $loader->register(true); - - $filesToLoad = \Composer\Autoload\ComposerStaticInitc4802e05bbcf59fd3b6350e8d3e5482c_protectⓥ4_0_0::$files; - $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { - if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { - $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; - - require $file; - } - }, null, null); - foreach ($filesToLoad as $fileIdentifier => $file) { - $requireFile($fileIdentifier, $file); - } - - return $loader; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_static.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_static.php deleted file mode 100644 index 287f8fac..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/autoload_static.php +++ /dev/null @@ -1,286 +0,0 @@ - __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-assets/actions.php', - '7372b7fb88a9723cf5b76d456eb0b738' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/actions.php', - '590147edb63acb03b2852d5c4db13ce8' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-transport-helper/actions.php', - '3d45c7e6a7f0e71849e33afe4b3b3ede' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/cli.php', - ); - - public static $prefixLengthsPsr4 = array ( - 'A' => - array ( - 'Automattic\\Jetpack\\Autoloader\\' => 30, - ), - ); - - public static $prefixDirsPsr4 = array ( - 'Automattic\\Jetpack\\Autoloader\\' => - array ( - 0 => __DIR__ . '/..' . '/automattic/jetpack-autoloader/src', - ), - ); - - public static $classMap = array ( - 'AhoCorasick\\MultiStringMatcher' => __DIR__ . '/..' . '/wikimedia/aho-corasick/src/MultiStringMatcher.php', - 'AhoCorasick\\MultiStringReplacer' => __DIR__ . '/..' . '/wikimedia/aho-corasick/src/MultiStringReplacer.php', - 'Automattic\\Jetpack\\A8c_Mc_Stats' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-a8c-mc-stats/src/class-a8c-mc-stats.php', - 'Automattic\\Jetpack\\Admin_UI\\Admin_Menu' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-admin-ui/src/class-admin-menu.php', - 'Automattic\\Jetpack\\Assets' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-assets/src/class-assets.php', - 'Automattic\\Jetpack\\Assets\\Logo' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-logo/src/class-logo.php', - 'Automattic\\Jetpack\\Assets\\Script_Data' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-assets/src/class-script-data.php', - 'Automattic\\Jetpack\\Assets\\Semver' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-assets/src/class-semver.php', - 'Automattic\\Jetpack\\Autoloader\\AutoloadFileWriter' => __DIR__ . '/..' . '/automattic/jetpack-autoloader/src/AutoloadFileWriter.php', - 'Automattic\\Jetpack\\Autoloader\\AutoloadGenerator' => __DIR__ . '/..' . '/automattic/jetpack-autoloader/src/AutoloadGenerator.php', - 'Automattic\\Jetpack\\Autoloader\\AutoloadProcessor' => __DIR__ . '/..' . '/automattic/jetpack-autoloader/src/AutoloadProcessor.php', - 'Automattic\\Jetpack\\Autoloader\\CustomAutoloaderPlugin' => __DIR__ . '/..' . '/automattic/jetpack-autoloader/src/CustomAutoloaderPlugin.php', - 'Automattic\\Jetpack\\Autoloader\\ManifestGenerator' => __DIR__ . '/..' . '/automattic/jetpack-autoloader/src/ManifestGenerator.php', - 'Automattic\\Jetpack\\Automatic_Install_Skin' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-automatic-install-skin.php', - 'Automattic\\Jetpack\\Backup\\V0005\\Helper_Script_Manager' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/src/class-helper-script-manager.php', - 'Automattic\\Jetpack\\Backup\\V0005\\Helper_Script_Manager_Impl' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/src/class-helper-script-manager-impl.php', - 'Automattic\\Jetpack\\Backup\\V0005\\Throw_On_Errors' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/src/class-throw-on-errors.php', - 'Automattic\\Jetpack\\Boost_Core\\Contracts\\Boost_API_Client' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-core/src/contracts/boost-api-client.php', - 'Automattic\\Jetpack\\Boost_Core\\Lib\\Boost_API' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-boost-api.php', - 'Automattic\\Jetpack\\Boost_Core\\Lib\\Cacheable' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-cacheable.php', - 'Automattic\\Jetpack\\Boost_Core\\Lib\\Transient' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-transient.php', - 'Automattic\\Jetpack\\Boost_Core\\Lib\\Url' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-url.php', - 'Automattic\\Jetpack\\Boost_Core\\Lib\\Utils' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-utils.php', - 'Automattic\\Jetpack\\Boost_Core\\Lib\\WPCOM_Boost_API_Client' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-wpcom-boost-api-client.php', - 'Automattic\\Jetpack\\Boost_Speed_Score\\Jetpack_Boost_Modules' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-jetpack-boost-modules.php', - 'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score.php', - 'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score_Graph_History_Request' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score-graph-history-request.php', - 'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score_History' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score-history.php', - 'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score_Request' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score-request.php', - 'Automattic\\Jetpack\\Composer\\Manager' => __DIR__ . '/..' . '/automattic/jetpack-composer-plugin/src/class-manager.php', - 'Automattic\\Jetpack\\Composer\\Plugin' => __DIR__ . '/..' . '/automattic/jetpack-composer-plugin/src/class-plugin.php', - 'Automattic\\Jetpack\\Config' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-config/src/class-config.php', - 'Automattic\\Jetpack\\Connection\\Authorize_Json_Api' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-authorize-json-api.php', - 'Automattic\\Jetpack\\Connection\\Client' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-client.php', - 'Automattic\\Jetpack\\Connection\\Connection_Assets' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-connection-assets.php', - 'Automattic\\Jetpack\\Connection\\Connection_Notice' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-connection-notice.php', - 'Automattic\\Jetpack\\Connection\\Error_Handler' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-error-handler.php', - 'Automattic\\Jetpack\\Connection\\Initial_State' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-initial-state.php', - 'Automattic\\Jetpack\\Connection\\Manager' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-manager.php', - 'Automattic\\Jetpack\\Connection\\Manager_Interface' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/interface-manager.php', - 'Automattic\\Jetpack\\Connection\\Nonce_Handler' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-nonce-handler.php', - 'Automattic\\Jetpack\\Connection\\Package_Version' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-package-version.php', - 'Automattic\\Jetpack\\Connection\\Package_Version_Tracker' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-package-version-tracker.php', - 'Automattic\\Jetpack\\Connection\\Plugin' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-plugin.php', - 'Automattic\\Jetpack\\Connection\\Plugin_Storage' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-plugin-storage.php', - 'Automattic\\Jetpack\\Connection\\REST_Connector' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-rest-connector.php', - 'Automattic\\Jetpack\\Connection\\Rest_Authentication' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-rest-authentication.php', - 'Automattic\\Jetpack\\Connection\\SSO' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-sso.php', - 'Automattic\\Jetpack\\Connection\\SSO\\Force_2FA' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-force-2fa.php', - 'Automattic\\Jetpack\\Connection\\SSO\\Helpers' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-helpers.php', - 'Automattic\\Jetpack\\Connection\\SSO\\Notices' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-notices.php', - 'Automattic\\Jetpack\\Connection\\SSO\\User_Admin' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-user-admin.php', - 'Automattic\\Jetpack\\Connection\\Secrets' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-secrets.php', - 'Automattic\\Jetpack\\Connection\\Server_Sandbox' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-server-sandbox.php', - 'Automattic\\Jetpack\\Connection\\Tokens' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-tokens.php', - 'Automattic\\Jetpack\\Connection\\Tokens_Locks' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-tokens-locks.php', - 'Automattic\\Jetpack\\Connection\\Traits\\WPCOM_REST_API_Proxy_Request' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/traits/trait-wpcom-rest-api-proxy-request.php', - 'Automattic\\Jetpack\\Connection\\Urls' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-urls.php', - 'Automattic\\Jetpack\\Connection\\Users_Connection_Admin' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-users-connection-admin.php', - 'Automattic\\Jetpack\\Connection\\Utils' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-utils.php', - 'Automattic\\Jetpack\\Connection\\Webhooks' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-webhooks.php', - 'Automattic\\Jetpack\\Connection\\Webhooks\\Authorize_Redirect' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/webhooks/class-authorize-redirect.php', - 'Automattic\\Jetpack\\Connection\\XMLRPC_Async_Call' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-async-call.php', - 'Automattic\\Jetpack\\Connection\\XMLRPC_Connector' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-connector.php', - 'Automattic\\Jetpack\\Constants' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-constants/src/class-constants.php', - 'Automattic\\Jetpack\\CookieState' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-status/src/class-cookiestate.php', - 'Automattic\\Jetpack\\Current_Plan' => __DIR__ . '/..' . '/automattic/jetpack-plans/src/class-current-plan.php', - 'Automattic\\Jetpack\\Device_Detection' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-device-detection/src/class-device-detection.php', - 'Automattic\\Jetpack\\Device_Detection\\User_Agent_Info' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-device-detection/src/class-user-agent-info.php', - 'Automattic\\Jetpack\\Errors' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-status/src/class-errors.php', - 'Automattic\\Jetpack\\ExPlat' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-explat/src/class-explat.php', - 'Automattic\\Jetpack\\ExPlat\\REST_Controller' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-explat/src/class-rest-controller.php', - 'Automattic\\Jetpack\\Files' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-status/src/class-files.php', - 'Automattic\\Jetpack\\Heartbeat' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-heartbeat.php', - 'Automattic\\Jetpack\\IP\\Utils' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-ip/src/class-utils.php', - 'Automattic\\Jetpack\\IdentityCrisis\\Exception' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-exception.php', - 'Automattic\\Jetpack\\IdentityCrisis\\REST_Endpoints' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-rest-endpoints.php', - 'Automattic\\Jetpack\\IdentityCrisis\\UI' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-ui.php', - 'Automattic\\Jetpack\\IdentityCrisis\\URL_Secret' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-url-secret.php', - 'Automattic\\Jetpack\\Identity_Crisis' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-identity-crisis.php', - 'Automattic\\Jetpack\\JITMS\\JITM' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-jitm/src/class-jitm.php', - 'Automattic\\Jetpack\\JITMS\\Post_Connection_JITM' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-jitm/src/class-post-connection-jitm.php', - 'Automattic\\Jetpack\\JITMS\\Pre_Connection_JITM' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-jitm/src/class-pre-connection-jitm.php', - 'Automattic\\Jetpack\\JITMS\\Rest_Api_Endpoints' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-jitm/src/class-rest-api-endpoints.php', - 'Automattic\\Jetpack\\Licensing' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-licensing/src/class-licensing.php', - 'Automattic\\Jetpack\\Licensing\\Endpoints' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-licensing/src/class-endpoints.php', - 'Automattic\\Jetpack\\Modules' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-status/src/class-modules.php', - 'Automattic\\Jetpack\\My_Jetpack\\Activitylog' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-activitylog.php', - 'Automattic\\Jetpack\\My_Jetpack\\Historically_Active_Modules' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-historically-active-modules.php', - 'Automattic\\Jetpack\\My_Jetpack\\Hybrid_Product' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-hybrid-product.php', - 'Automattic\\Jetpack\\My_Jetpack\\Initializer' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-initializer.php', - 'Automattic\\Jetpack\\My_Jetpack\\Jetpack_Manage' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-jetpack-manage.php', - 'Automattic\\Jetpack\\My_Jetpack\\Module_Product' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-module-product.php', - 'Automattic\\Jetpack\\My_Jetpack\\Product' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-product.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-products.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Anti_Spam' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-anti-spam.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Backup' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-backup.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Boost' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-boost.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Complete' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-complete.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Creator' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-creator.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Crm' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-crm.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Extras' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-extras.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Growth' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-growth.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Jetpack_Ai' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-jetpack-ai.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Newsletter' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-newsletter.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Protect' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-protect.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Related_Posts' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-related-posts.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Scan' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-scan.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Search' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Search_Stats' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search-stats.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Security' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-security.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Site_Accelerator' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-site-accelerator.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Social' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-social.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Starter' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-starter.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Stats' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-stats.php', - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Videopress' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-videopress.php', - 'Automattic\\Jetpack\\My_Jetpack\\REST_AI' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-ai.php', - 'Automattic\\Jetpack\\My_Jetpack\\REST_Products' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-products.php', - 'Automattic\\Jetpack\\My_Jetpack\\REST_Purchases' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-purchases.php', - 'Automattic\\Jetpack\\My_Jetpack\\REST_Recommendations_Evaluation' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-recommendations-evaluation.php', - 'Automattic\\Jetpack\\My_Jetpack\\REST_Zendesk_Chat' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-zendesk-chat.php', - 'Automattic\\Jetpack\\My_Jetpack\\Red_Bubble_Notifications' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-red-bubble-notifications.php', - 'Automattic\\Jetpack\\My_Jetpack\\Wpcom_Products' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-wpcom-products.php', - 'Automattic\\Jetpack\\Partner' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-partner.php', - 'Automattic\\Jetpack\\Partner_Coupon' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-partner-coupon.php', - 'Automattic\\Jetpack\\Password_Checker' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-password-checker/src/class-password-checker.php', - 'Automattic\\Jetpack\\Paths' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-status/src/class-paths.php', - 'Automattic\\Jetpack\\Plans' => __DIR__ . '/..' . '/automattic/jetpack-plans/src/class-plans.php', - 'Automattic\\Jetpack\\Plugins_Installer' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-plugins-installer.php', - 'Automattic\\Jetpack\\Protect\\Credentials' => __DIR__ . '/../..' . '/src/class-credentials.php', - 'Automattic\\Jetpack\\Protect\\Onboarding' => __DIR__ . '/../..' . '/src/class-onboarding.php', - 'Automattic\\Jetpack\\Protect\\REST_Controller' => __DIR__ . '/../..' . '/src/class-rest-controller.php', - 'Automattic\\Jetpack\\Protect\\Scan_History' => __DIR__ . '/../..' . '/src/class-scan-history.php', - 'Automattic\\Jetpack\\Protect\\Site_Health' => __DIR__ . '/../..' . '/src/class-site-health.php', - 'Automattic\\Jetpack\\Protect\\Threats' => __DIR__ . '/../..' . '/src/class-threats.php', - 'Automattic\\Jetpack\\Protect_Models' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-protect-models.php', - 'Automattic\\Jetpack\\Protect_Models\\Extension_Model' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-extension-model.php', - 'Automattic\\Jetpack\\Protect_Models\\History_Model' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-history-model.php', - 'Automattic\\Jetpack\\Protect_Models\\Status_Model' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-status-model.php', - 'Automattic\\Jetpack\\Protect_Models\\Threat_Model' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-threat-model.php', - 'Automattic\\Jetpack\\Protect_Models\\Vulnerability_Model' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-vulnerability-model.php', - 'Automattic\\Jetpack\\Protect_Status\\Plan' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-plan.php', - 'Automattic\\Jetpack\\Protect_Status\\Protect_Status' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-protect-status.php', - 'Automattic\\Jetpack\\Protect_Status\\REST_Controller' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-rest-controller.php', - 'Automattic\\Jetpack\\Protect_Status\\Scan_Status' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-scan-status.php', - 'Automattic\\Jetpack\\Protect_Status\\Status' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-status.php', - 'Automattic\\Jetpack\\Redirect' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-redirect/src/class-redirect.php', - 'Automattic\\Jetpack\\Roles' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-roles/src/class-roles.php', - 'Automattic\\Jetpack\\Status' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-status/src/class-status.php', - 'Automattic\\Jetpack\\Status\\Cache' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-status/src/class-cache.php', - 'Automattic\\Jetpack\\Status\\Host' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-status/src/class-host.php', - 'Automattic\\Jetpack\\Status\\Visitor' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-status/src/class-visitor.php', - 'Automattic\\Jetpack\\Sync\\Actions' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-actions.php', - 'Automattic\\Jetpack\\Sync\\Codec_Interface' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/interface-codec.php', - 'Automattic\\Jetpack\\Sync\\Data_Settings' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-data-settings.php', - 'Automattic\\Jetpack\\Sync\\Dedicated_Sender' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-dedicated-sender.php', - 'Automattic\\Jetpack\\Sync\\Default_Filter_Settings' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-default-filter-settings.php', - 'Automattic\\Jetpack\\Sync\\Defaults' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-defaults.php', - 'Automattic\\Jetpack\\Sync\\Functions' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-functions.php', - 'Automattic\\Jetpack\\Sync\\Health' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-health.php', - 'Automattic\\Jetpack\\Sync\\JSON_Deflate_Array_Codec' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-json-deflate-array-codec.php', - 'Automattic\\Jetpack\\Sync\\Listener' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-listener.php', - 'Automattic\\Jetpack\\Sync\\Lock' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-lock.php', - 'Automattic\\Jetpack\\Sync\\Main' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-main.php', - 'Automattic\\Jetpack\\Sync\\Modules' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-modules.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Attachments' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-attachments.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Callables' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-callables.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Comments' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-comments.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Constants' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-constants.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Full_Sync' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Full_Sync_Immediately' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync-immediately.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Import' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-import.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Menus' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-menus.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Meta' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-meta.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Module' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-module.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Network_Options' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-network-options.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Options' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-options.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Plugins' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-plugins.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Posts' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-posts.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Protect' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-protect.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Search' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-search.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Stats' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-stats.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Term_Relationships' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-term-relationships.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Terms' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-terms.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Themes' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-themes.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Updates' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-updates.php', - 'Automattic\\Jetpack\\Sync\\Modules\\Users' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-users.php', - 'Automattic\\Jetpack\\Sync\\Modules\\WP_Super_Cache' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-wp-super-cache.php', - 'Automattic\\Jetpack\\Sync\\Modules\\WooCommerce' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce.php', - 'Automattic\\Jetpack\\Sync\\Modules\\WooCommerce_HPOS_Orders' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce-hpos-orders.php', - 'Automattic\\Jetpack\\Sync\\Package_Version' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-package-version.php', - 'Automattic\\Jetpack\\Sync\\Queue' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-queue.php', - 'Automattic\\Jetpack\\Sync\\Queue\\Queue_Storage_Options' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-options.php', - 'Automattic\\Jetpack\\Sync\\Queue\\Queue_Storage_Table' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-table.php', - 'Automattic\\Jetpack\\Sync\\Queue_Buffer' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-queue-buffer.php', - 'Automattic\\Jetpack\\Sync\\REST_Endpoints' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-rest-endpoints.php', - 'Automattic\\Jetpack\\Sync\\REST_Sender' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-rest-sender.php', - 'Automattic\\Jetpack\\Sync\\Replicastore' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-replicastore.php', - 'Automattic\\Jetpack\\Sync\\Replicastore\\Table_Checksum' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum.php', - 'Automattic\\Jetpack\\Sync\\Replicastore\\Table_Checksum_Usermeta' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-usermeta.php', - 'Automattic\\Jetpack\\Sync\\Replicastore\\Table_Checksum_Users' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-users.php', - 'Automattic\\Jetpack\\Sync\\Replicastore_Interface' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/interface-replicastore.php', - 'Automattic\\Jetpack\\Sync\\Sender' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-sender.php', - 'Automattic\\Jetpack\\Sync\\Server' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-server.php', - 'Automattic\\Jetpack\\Sync\\Settings' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-settings.php', - 'Automattic\\Jetpack\\Sync\\Simple_Codec' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-simple-codec.php', - 'Automattic\\Jetpack\\Sync\\Users' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-users.php', - 'Automattic\\Jetpack\\Sync\\Utils' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-sync/src/class-utils.php', - 'Automattic\\Jetpack\\Terms_Of_Service' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-terms-of-service.php', - 'Automattic\\Jetpack\\Tracking' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/src/class-tracking.php', - 'Automattic\\Jetpack\\Transport_Helper\\Package_Version' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-transport-helper/src/class-package-version.php', - 'Automattic\\Jetpack\\Transport_Helper\\V0001\\Package_Version' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-transport-helper/src/class-package-version-compat.php', - 'Automattic\\Jetpack\\Transport_Helper\\V0005\\REST_Controller' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-transport-helper/src/class-rest-controller.php', - 'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-brute-force-protection.php', - 'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Blocked_Login_Page' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-blocked-login-page.php', - 'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Math_Authenticate' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-math-fallback.php', - 'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Shared_Functions' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-shared-functions.php', - 'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Transient_Cleanup' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-transient-cleanup.php', - 'Automattic\\Jetpack\\Waf\\CLI' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-cli.php', - 'Automattic\\Jetpack\\Waf\\File_System_Exception' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-file-system-exception.php', - 'Automattic\\Jetpack\\Waf\\REST_Controller' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-rest-controller.php', - 'Automattic\\Jetpack\\Waf\\Rules_API_Exception' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-rules-api-exception.php', - 'Automattic\\Jetpack\\Waf\\Waf_Blocklog_Manager' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-blocklog-manager.php', - 'Automattic\\Jetpack\\Waf\\Waf_Compatibility' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-compatibility.php', - 'Automattic\\Jetpack\\Waf\\Waf_Constants' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-constants.php', - 'Automattic\\Jetpack\\Waf\\Waf_Exception' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-waf-exception.php', - 'Automattic\\Jetpack\\Waf\\Waf_Initializer' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-initializer.php', - 'Automattic\\Jetpack\\Waf\\Waf_Operators' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-operators.php', - 'Automattic\\Jetpack\\Waf\\Waf_Request' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-request.php', - 'Automattic\\Jetpack\\Waf\\Waf_Rules_Manager' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-rules-manager.php', - 'Automattic\\Jetpack\\Waf\\Waf_Runner' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-runner.php', - 'Automattic\\Jetpack\\Waf\\Waf_Runtime' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-runtime.php', - 'Automattic\\Jetpack\\Waf\\Waf_Standalone_Bootstrap' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-standalone-bootstrap.php', - 'Automattic\\Jetpack\\Waf\\Waf_Stats' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-stats.php', - 'Automattic\\Jetpack\\Waf\\Waf_Transforms' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-transforms.php', - 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', - 'Jetpack_IXR_Client' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-ixr-client.php', - 'Jetpack_IXR_ClientMulticall' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-ixr-clientmulticall.php', - 'Jetpack_Options' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-options.php', - 'Jetpack_Protect' => __DIR__ . '/../..' . '/src/class-jetpack-protect.php', - 'Jetpack_Signature' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-signature.php', - 'Jetpack_Tracks_Client' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-tracks-client.php', - 'Jetpack_Tracks_Event' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-tracks-event.php', - 'Jetpack_XMLRPC_Server' => __DIR__ . '/../..' . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-xmlrpc-server.php', - ); - - public static function getInitializer(ClassLoader $loader) - { - return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitc4802e05bbcf59fd3b6350e8d3e5482c_protectⓥ4_0_0::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitc4802e05bbcf59fd3b6350e8d3e5482c_protectⓥ4_0_0::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInitc4802e05bbcf59fd3b6350e8d3e5482c_protectⓥ4_0_0::$classMap; - - }, null, ClassLoader::class); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/installed.json b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/installed.json deleted file mode 100644 index 5ce5d674..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/installed.json +++ /dev/null @@ -1,1852 +0,0 @@ -{ - "packages": [ - { - "name": "automattic/jetpack-a8c-mc-stats", - "version": "v3.0.4", - "version_normalized": "3.0.4.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-a8c-mc-stats.git", - "reference": "b1f7e2b9032ad203b6bd4cad1519613cc56f8ed0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-a8c-mc-stats/zipball/b1f7e2b9032ad203b6bd4cad1519613cc56f8ed0", - "reference": "b1f7e2b9032ad203b6bd4cad1519613cc56f8ed0", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:05:28+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-a8c-mc-stats", - "branch-alias": { - "dev-trunk": "3.0.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-a8c-mc-stats/compare/v${old}...v${new}" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Used to record internal usage stats for Automattic. Not visible to site owners.", - "support": { - "source": "https://github.com/Automattic/jetpack-a8c-mc-stats/tree/v3.0.4" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-a8c-mc-stats" - }, - { - "name": "automattic/jetpack-admin-ui", - "version": "v0.5.7", - "version_normalized": "0.5.7.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-admin-ui.git", - "reference": "c82d2417a8aa65e646c40a81011ad76f355a742f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-admin-ui/zipball/c82d2417a8aa65e646c40a81011ad76f355a742f", - "reference": "c82d2417a8aa65e646c40a81011ad76f355a742f", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-logo": "^3.0.4", - "automattic/jetpack-test-environment": "@dev", - "automattic/phpunit-select-config": "^1.0.1", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:05:52+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "textdomain": "jetpack-admin-ui", - "mirror-repo": "Automattic/jetpack-admin-ui", - "branch-alias": { - "dev-trunk": "0.5.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-admin-ui/compare/${old}...${new}" - }, - "version-constants": { - "::PACKAGE_VERSION": "src/class-admin-menu.php" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Generic Jetpack wp-admin UI elements", - "support": { - "source": "https://github.com/Automattic/jetpack-admin-ui/tree/v0.5.7" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-admin-ui" - }, - { - "name": "automattic/jetpack-assets", - "version": "v4.0.14", - "version_normalized": "4.0.14.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-assets.git", - "reference": "2219c71f19c34ea9a393e48498188f1aa9f9031b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-assets/zipball/2219c71f19c34ea9a393e48498188f1aa9f9031b", - "reference": "2219c71f19c34ea9a393e48498188f1aa9f9031b", - "shasum": "" - }, - "require": { - "automattic/jetpack-constants": "^3.0.5", - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1", - "brain/monkey": "^2.6.2", - "wikimedia/testing-access-wrapper": "^1.0 || ^2.0 || ^3.0", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:06:27+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "textdomain": "jetpack-assets", - "mirror-repo": "Automattic/jetpack-assets", - "branch-alias": { - "dev-trunk": "4.0.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-assets/compare/v${old}...v${new}" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "actions.php" - ], - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Asset management utilities for Jetpack ecosystem packages", - "support": { - "source": "https://github.com/Automattic/jetpack-assets/tree/v4.0.14" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-assets" - }, - { - "name": "automattic/jetpack-autoloader", - "version": "v5.0.5", - "version_normalized": "5.0.5.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-autoloader.git", - "reference": "7bf3172e73c27c72d01d6de4796a41c7abc06d5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-autoloader/zipball/7bf3172e73c27c72d01d6de4796a41c7abc06d5a", - "reference": "7bf3172e73c27c72d01d6de4796a41c7abc06d5a", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^2.2", - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1", - "composer/composer": "^2.2", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "time": "2025-03-21T09:05:50+00:00", - "type": "composer-plugin", - "extra": { - "class": "Automattic\\Jetpack\\Autoloader\\CustomAutoloaderPlugin", - "autotagger": true, - "mirror-repo": "Automattic/jetpack-autoloader", - "branch-alias": { - "dev-trunk": "5.0.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-autoloader/compare/v${old}...v${new}" - }, - "version-constants": { - "::VERSION": "src/AutoloadGenerator.php" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "Automattic\\Jetpack\\Autoloader\\": "src" - }, - "classmap": [ - "src/AutoloadGenerator.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Creates a custom autoloader for a plugin or theme.", - "keywords": [ - "autoload", - "autoloader", - "composer", - "jetpack", - "plugin", - "wordpress" - ], - "support": { - "source": "https://github.com/Automattic/jetpack-autoloader/tree/v5.0.5" - }, - "install-path": "../automattic/jetpack-autoloader" - }, - { - "name": "automattic/jetpack-backup-helper-script-manager", - "version": "v0.3.6", - "version_normalized": "0.3.6.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-backup-helper-script-manager.git", - "reference": "859d8df5637c61f9c29b46e038f425bd238eb6f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-backup-helper-script-manager/zipball/859d8df5637c61f9c29b46e038f425bd238eb6f4", - "reference": "859d8df5637c61f9c29b46e038f425bd238eb6f4", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-test-environment": "@dev", - "automattic/phpunit-select-config": "^1.0.1", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-24T14:40:39+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-backup-helper-script-manager", - "branch-alias": { - "dev-trunk": "0.3.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-backup-helper-script-manager/compare/v${old}...v${new}" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Install / delete helper script for backup and transport server. Not visible to site owners.", - "support": { - "source": "https://github.com/Automattic/jetpack-backup-helper-script-manager/tree/v0.3.6" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-backup-helper-script-manager" - }, - { - "name": "automattic/jetpack-boost-core", - "version": "v0.3.9", - "version_normalized": "0.3.9.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-boost-core.git", - "reference": "83c2081731fe46fc43d938abf1f0818a67c0e61e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-boost-core/zipball/83c2081731fe46fc43d938abf1f0818a67c0e61e", - "reference": "83c2081731fe46fc43d938abf1f0818a67c0e61e", - "shasum": "" - }, - "require": { - "automattic/jetpack-connection": "^6.7.7", - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:06:48+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "textdomain": "jetpack-boost-core", - "mirror-repo": "Automattic/jetpack-boost-core", - "branch-alias": { - "dev-trunk": "0.3.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-boost-core/compare/v${old}...v${new}" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Core functionality for boost and relevant packages to depend on", - "support": { - "source": "https://github.com/Automattic/jetpack-boost-core/tree/v0.3.9" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-boost-core" - }, - { - "name": "automattic/jetpack-boost-speed-score", - "version": "v0.4.6", - "version_normalized": "0.4.6.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-boost-speed-score.git", - "reference": "42d2a24559b5a007096d3a500be058fd92ab1f19" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-boost-speed-score/zipball/42d2a24559b5a007096d3a500be058fd92ab1f19", - "reference": "42d2a24559b5a007096d3a500be058fd92ab1f19", - "shasum": "" - }, - "require": { - "automattic/jetpack-boost-core": "^0.3.9", - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1", - "brain/monkey": "^2.6", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:06:49+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "textdomain": "jetpack-boost-speed-score", - "mirror-repo": "Automattic/jetpack-boost-speed-score", - "branch-alias": { - "dev-trunk": "0.4.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-boost-speed-score/compare/v${old}...v${new}" - }, - "version-constants": { - "::PACKAGE_VERSION": "src/class-speed-score.php" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "A package that handles the API to generate the speed score.", - "support": { - "source": "https://github.com/Automattic/jetpack-boost-speed-score/tree/v0.4.6" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-boost-speed-score" - }, - { - "name": "automattic/jetpack-composer-plugin", - "version": "v4.0.4", - "version_normalized": "4.0.4.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-composer-plugin.git", - "reference": "0c32be22d4e2ff6468ed688780d14bcd70e260da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-composer-plugin/zipball/0c32be22d4e2ff6468ed688780d14bcd70e260da", - "reference": "0c32be22d4e2ff6468ed688780d14bcd70e260da", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^2.2", - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1", - "composer/composer": "^2.2", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "time": "2025-03-21T09:05:32+00:00", - "type": "composer-plugin", - "extra": { - "class": "Automattic\\Jetpack\\Composer\\Plugin", - "autotagger": true, - "mirror-repo": "Automattic/jetpack-composer-plugin", - "branch-alias": { - "dev-trunk": "4.0.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-composer-plugin/compare/v${old}...v${new}" - }, - "plugin-modifies-install-path": true - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "A custom installer plugin for Composer to move Jetpack packages out of `vendor/` so WordPress's translation infrastructure will find their strings.", - "keywords": [ - "composer", - "i18n", - "jetpack", - "plugin" - ], - "support": { - "source": "https://github.com/Automattic/jetpack-composer-plugin/tree/v4.0.4" - }, - "install-path": "../automattic/jetpack-composer-plugin" - }, - { - "name": "automattic/jetpack-config", - "version": "v3.0.1", - "version_normalized": "3.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-config.git", - "reference": "13f26ed2830d9043d351e49c5ab4e2b6ec21e9d2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-config/zipball/13f26ed2830d9043d351e49c5ab4e2b6ec21e9d2", - "reference": "13f26ed2830d9043d351e49c5ab4e2b6ec21e9d2", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.0", - "automattic/jetpack-connection": "@dev", - "automattic/jetpack-import": "@dev", - "automattic/jetpack-jitm": "@dev", - "automattic/jetpack-post-list": "@dev", - "automattic/jetpack-publicize": "@dev", - "automattic/jetpack-search": "@dev", - "automattic/jetpack-stats": "@dev", - "automattic/jetpack-stats-admin": "@dev", - "automattic/jetpack-sync": "@dev", - "automattic/jetpack-videopress": "@dev", - "automattic/jetpack-waf": "@dev", - "automattic/jetpack-wordads": "@dev", - "automattic/jetpack-yoast-promo": "@dev" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-02-24T17:05:29+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "textdomain": "jetpack-config", - "mirror-repo": "Automattic/jetpack-config", - "branch-alias": { - "dev-trunk": "3.0.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-config/compare/v${old}...v${new}" - }, - "dependencies": { - "test-only": [ - "packages/connection", - "packages/import", - "packages/jitm", - "packages/post-list", - "packages/publicize", - "packages/search", - "packages/stats", - "packages/stats-admin", - "packages/sync", - "packages/videopress", - "packages/waf", - "packages/wordads", - "packages/yoast-promo" - ] - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Jetpack configuration package that initializes other packages and configures Jetpack's functionality. Can be used as a base for all variants of Jetpack package usage.", - "support": { - "source": "https://github.com/Automattic/jetpack-config/tree/v3.0.1" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-config" - }, - { - "name": "automattic/jetpack-connection", - "version": "v6.8.1", - "version_normalized": "6.8.1.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-connection.git", - "reference": "473c52b3ad8ea7b51066a243d2b1d87ba8835fca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-connection/zipball/473c52b3ad8ea7b51066a243d2b1d87ba8835fca", - "reference": "473c52b3ad8ea7b51066a243d2b1d87ba8835fca", - "shasum": "" - }, - "require": { - "automattic/jetpack-a8c-mc-stats": "^3.0.4", - "automattic/jetpack-admin-ui": "^0.5.7", - "automattic/jetpack-assets": "^4.0.14", - "automattic/jetpack-constants": "^3.0.5", - "automattic/jetpack-redirect": "^3.0.5", - "automattic/jetpack-roles": "^3.0.5", - "automattic/jetpack-status": "^5.0.10", - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-test-environment": "@dev", - "automattic/phpunit-select-config": "^1.0.1", - "brain/monkey": "^2.6.2", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-24T17:30:51+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "textdomain": "jetpack-connection", - "mirror-repo": "Automattic/jetpack-connection", - "branch-alias": { - "dev-trunk": "6.8.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-connection/compare/v${old}...v${new}" - }, - "dependencies": { - "test-only": [ - "packages/licensing", - "packages/sync" - ] - }, - "version-constants": { - "::PACKAGE_VERSION": "src/class-package-version.php" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "actions.php" - ], - "classmap": [ - "legacy", - "src/", - "src/webhooks", - "src/identity-crisis" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Everything needed to connect to the Jetpack infrastructure", - "support": { - "source": "https://github.com/Automattic/jetpack-connection/tree/v6.8.1" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-connection" - }, - { - "name": "automattic/jetpack-constants", - "version": "v3.0.5", - "version_normalized": "3.0.5.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-constants.git", - "reference": "12446dd21985e3765d8b8b903091c273d22e4e9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-constants/zipball/12446dd21985e3765d8b8b903091c273d22e4e9e", - "reference": "12446dd21985e3765d8b8b903091c273d22e4e9e", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1", - "brain/monkey": "^2.6.2", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:05:24+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-constants", - "branch-alias": { - "dev-trunk": "3.0.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-constants/compare/v${old}...v${new}" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "A wrapper for defining constants in a more testable way.", - "support": { - "source": "https://github.com/Automattic/jetpack-constants/tree/v3.0.5" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-constants" - }, - { - "name": "automattic/jetpack-device-detection", - "version": "v3.0.5", - "version_normalized": "3.0.5.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-device-detection.git", - "reference": "dd237dd9b92532aba103b71bf43a2a3c87117a7f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-device-detection/zipball/dd237dd9b92532aba103b71bf43a2a3c87117a7f", - "reference": "dd237dd9b92532aba103b71bf43a2a3c87117a7f", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:05:34+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-device-detection", - "branch-alias": { - "dev-trunk": "3.0.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-device-detection/compare/v${old}...v${new}" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "A way to detect device types based on User-Agent header.", - "support": { - "source": "https://github.com/Automattic/jetpack-device-detection/tree/v3.0.5" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-device-detection" - }, - { - "name": "automattic/jetpack-explat", - "version": "v0.2.13", - "version_normalized": "0.2.13.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-explat.git", - "reference": "ba4a9fa045deb9c6bf58a394521dbf6458b34d30" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-explat/zipball/ba4a9fa045deb9c6bf58a394521dbf6458b34d30", - "reference": "ba4a9fa045deb9c6bf58a394521dbf6458b34d30", - "shasum": "" - }, - "require": { - "automattic/jetpack-connection": "^6.7.7", - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:06:59+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "textdomain": "jetpack-explat", - "mirror-repo": "Automattic/jetpack-explat", - "branch-alias": { - "dev-trunk": "0.2.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-explat/compare/v${old}...v${new}" - }, - "version-constants": { - "::PACKAGE_VERSION": "src/class-explat.php" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "A package for running A/B tests on the Experimentation Platform (ExPlat) in the plugin.", - "support": { - "source": "https://github.com/Automattic/jetpack-explat/tree/v0.2.13" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-explat" - }, - { - "name": "automattic/jetpack-ip", - "version": "v0.4.6", - "version_normalized": "0.4.6.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-ip.git", - "reference": "0248018c22240817a2a463fd0e1aa05f55091c6c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-ip/zipball/0248018c22240817a2a463fd0e1aa05f55091c6c", - "reference": "0248018c22240817a2a463fd0e1aa05f55091c6c", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1", - "brain/monkey": "^2.6.2", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:05:27+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "textdomain": "jetpack-ip", - "mirror-repo": "Automattic/jetpack-ip", - "branch-alias": { - "dev-trunk": "0.4.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/automattic/jetpack-ip/compare/v${old}...v${new}" - }, - "version-constants": { - "::PACKAGE_VERSION": "src/class-utils.php" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Utilities for working with IP addresses.", - "support": { - "source": "https://github.com/Automattic/jetpack-ip/tree/v0.4.6" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-ip" - }, - { - "name": "automattic/jetpack-jitm", - "version": "v4.2.7", - "version_normalized": "4.2.7.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-jitm.git", - "reference": "8ee55bdf627a004ee736921e34160545a917ab44" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-jitm/zipball/8ee55bdf627a004ee736921e34160545a917ab44", - "reference": "8ee55bdf627a004ee736921e34160545a917ab44", - "shasum": "" - }, - "require": { - "automattic/jetpack-a8c-mc-stats": "^3.0.4", - "automattic/jetpack-assets": "^4.0.14", - "automattic/jetpack-connection": "^6.8.0", - "automattic/jetpack-device-detection": "^3.0.5", - "automattic/jetpack-logo": "^3.0.4", - "automattic/jetpack-redirect": "^3.0.5", - "automattic/jetpack-status": "^5.0.10", - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1", - "brain/monkey": "^2.6.2", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-24T14:41:35+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "textdomain": "jetpack-jitm", - "mirror-repo": "Automattic/jetpack-jitm", - "branch-alias": { - "dev-trunk": "4.2.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-jitm/compare/v${old}...v${new}" - }, - "version-constants": { - "::PACKAGE_VERSION": "src/class-jitm.php" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Just in time messages for Jetpack", - "support": { - "source": "https://github.com/Automattic/jetpack-jitm/tree/v4.2.7" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-jitm" - }, - { - "name": "automattic/jetpack-licensing", - "version": "v3.0.8", - "version_normalized": "3.0.8.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-licensing.git", - "reference": "85e45bf51f729c76535a026edf806e5e800ca409" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-licensing/zipball/85e45bf51f729c76535a026edf806e5e800ca409", - "reference": "85e45bf51f729c76535a026edf806e5e800ca409", - "shasum": "" - }, - "require": { - "automattic/jetpack-connection": "^6.7.7", - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-test-environment": "@dev", - "automattic/phpunit-select-config": "^1.0.1", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:06:45+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "textdomain": "jetpack-licensing", - "mirror-repo": "Automattic/jetpack-licensing", - "branch-alias": { - "dev-trunk": "3.0.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-licensing/compare/v${old}...v${new}" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Everything needed to manage Jetpack licenses client-side.", - "support": { - "source": "https://github.com/Automattic/jetpack-licensing/tree/v3.0.8" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-licensing" - }, - { - "name": "automattic/jetpack-logo", - "version": "v3.0.4", - "version_normalized": "3.0.4.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-logo.git", - "reference": "e13c7917f1bfeb014c923d6763db2ee1d60eb1aa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-logo/zipball/e13c7917f1bfeb014c923d6763db2ee1d60eb1aa", - "reference": "e13c7917f1bfeb014c923d6763db2ee1d60eb1aa", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:05:31+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-logo", - "branch-alias": { - "dev-trunk": "3.0.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-logo/compare/v${old}...v${new}" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "A logo for Jetpack", - "support": { - "source": "https://github.com/Automattic/jetpack-logo/tree/v3.0.4" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-logo" - }, - { - "name": "automattic/jetpack-my-jetpack", - "version": "v5.9.1", - "version_normalized": "5.9.1.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-my-jetpack.git", - "reference": "c75f826f5900506be1b28120946c1b319e23dac6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-my-jetpack/zipball/c75f826f5900506be1b28120946c1b319e23dac6", - "reference": "c75f826f5900506be1b28120946c1b319e23dac6", - "shasum": "" - }, - "require": { - "automattic/jetpack-admin-ui": "^0.5.7", - "automattic/jetpack-assets": "^4.0.14", - "automattic/jetpack-boost-speed-score": "^0.4.6", - "automattic/jetpack-connection": "^6.8.1", - "automattic/jetpack-constants": "^3.0.5", - "automattic/jetpack-explat": "^0.2.13", - "automattic/jetpack-jitm": "^4.2.7", - "automattic/jetpack-licensing": "^3.0.8", - "automattic/jetpack-plans": "^0.6.1", - "automattic/jetpack-plugins-installer": "^0.5.4", - "automattic/jetpack-protect-status": "^0.5.8", - "automattic/jetpack-redirect": "^3.0.5", - "automattic/jetpack-status": "^5.0.10", - "automattic/jetpack-sync": "^4.9.2", - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-test-environment": "@dev", - "automattic/phpunit-select-config": "^1.0.1", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-24T17:31:35+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "textdomain": "jetpack-my-jetpack", - "mirror-repo": "Automattic/jetpack-my-jetpack", - "branch-alias": { - "dev-trunk": "5.9.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-my-jetpack/compare/${old}...${new}" - }, - "dependencies": { - "test-only": [ - "packages/search", - "packages/videopress" - ] - }, - "version-constants": { - "::PACKAGE_VERSION": "src/class-initializer.php" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/", - "src/products" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "WP Admin page with information and configuration shared among all Jetpack stand-alone plugins", - "support": { - "source": "https://github.com/Automattic/jetpack-my-jetpack/tree/v5.9.1" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-my-jetpack" - }, - { - "name": "automattic/jetpack-password-checker", - "version": "v0.4.7", - "version_normalized": "0.4.7.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-password-checker.git", - "reference": "25900f1b5bf8718915c607a4fc1d1e0bc290e20a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-password-checker/zipball/25900f1b5bf8718915c607a4fc1d1e0bc290e20a", - "reference": "25900f1b5bf8718915c607a4fc1d1e0bc290e20a", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-test-environment": "@dev", - "automattic/phpunit-select-config": "^1.0.1", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:05:35+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "textdomain": "jetpack-password-checker", - "mirror-repo": "Automattic/jetpack-password-checker", - "branch-alias": { - "dev-trunk": "0.4.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-password-checker/compare/v${old}...v${new}" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Password Checker.", - "support": { - "source": "https://github.com/Automattic/jetpack-password-checker/tree/v0.4.7" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-password-checker" - }, - { - "name": "automattic/jetpack-plans", - "version": "v0.6.1", - "version_normalized": "0.6.1.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-plans.git", - "reference": "66a8169d4a22af983aa6c11c57bc385d7c5747cc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-plans/zipball/66a8169d4a22af983aa6c11c57bc385d7c5747cc", - "reference": "66a8169d4a22af983aa6c11c57bc385d7c5747cc", - "shasum": "" - }, - "require": { - "automattic/jetpack-connection": "^6.7.7", - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-status": "^5.0.10", - "automattic/jetpack-test-environment": "@dev", - "automattic/phpunit-select-config": "^1.0.1", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:06:46+00:00", - "type": "library", - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-plans", - "branch-alias": { - "dev-trunk": "0.6.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-plans/compare/v${old}...v${new}" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Fetch information about Jetpack Plans from wpcom", - "support": { - "source": "https://github.com/Automattic/jetpack-plans/tree/v0.6.1" - }, - "install-path": "../automattic/jetpack-plans" - }, - { - "name": "automattic/jetpack-plugins-installer", - "version": "v0.5.4", - "version_normalized": "0.5.4.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-plugins-installer.git", - "reference": "2fbd9cf402e0514f680b8bef9f787633f2bb29ed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-plugins-installer/zipball/2fbd9cf402e0514f680b8bef9f787633f2bb29ed", - "reference": "2fbd9cf402e0514f680b8bef9f787633f2bb29ed", - "shasum": "" - }, - "require": { - "automattic/jetpack-a8c-mc-stats": "^3.0.4", - "automattic/jetpack-status": "^5.0.10", - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:05:59+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "textdomain": "jetpack-plugins-installer", - "mirror-repo": "Automattic/jetpack-plugins-installer", - "branch-alias": { - "dev-trunk": "0.5.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-plugins-installer/compare/v${old}...v${new}" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Handle installation of plugins from WP.org", - "support": { - "source": "https://github.com/Automattic/jetpack-plugins-installer/tree/v0.5.4" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-plugins-installer" - }, - { - "name": "automattic/jetpack-protect-models", - "version": "v0.5.4", - "version_normalized": "0.5.4.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-protect-models.git", - "reference": "99180919a0756cfd3272388eebc99c5795894b18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-protect-models/zipball/99180919a0756cfd3272388eebc99c5795894b18", - "reference": "99180919a0756cfd3272388eebc99c5795894b18", - "shasum": "" - }, - "require": { - "automattic/jetpack-redirect": "^3.0.5", - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-test-environment": "@dev", - "automattic/phpunit-select-config": "^1.0.1", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:06:01+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "textdomain": "jetpack-protect-models", - "mirror-repo": "Automattic/jetpack-protect-models", - "branch-alias": { - "dev-trunk": "0.5.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-protect-models/compare/v${old}...v${new}" - }, - "version-constants": { - "::PACKAGE_VERSION": "src/class-protect-models.php" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "This package contains the models used in Protect. ", - "support": { - "source": "https://github.com/Automattic/jetpack-protect-models/tree/v0.5.4" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-protect-models" - }, - { - "name": "automattic/jetpack-protect-status", - "version": "v0.5.8", - "version_normalized": "0.5.8.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-protect-status.git", - "reference": "34cd7a21d211ec00709660486b6ee9e0928593a6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-protect-status/zipball/34cd7a21d211ec00709660486b6ee9e0928593a6", - "reference": "34cd7a21d211ec00709660486b6ee9e0928593a6", - "shasum": "" - }, - "require": { - "automattic/jetpack-connection": "^6.7.7", - "automattic/jetpack-plans": "^0.6.1", - "automattic/jetpack-plugins-installer": "^0.5.4", - "automattic/jetpack-protect-models": "^0.5.4", - "automattic/jetpack-sync": "^4.9.2", - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-test-environment": "@dev", - "automattic/phpunit-select-config": "^1.0.1", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:06:51+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "textdomain": "jetpack-protect-status", - "mirror-repo": "Automattic/jetpack-protect-status", - "branch-alias": { - "dev-trunk": "0.5.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-protect-status/compare/v${old}...v${new}" - }, - "version-constants": { - "::PACKAGE_VERSION": "src/class-status.php" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "This package contains the Protect Status API functionality to retrieve a site's scan status (WordPress, Themes, and Plugins threats).", - "support": { - "source": "https://github.com/Automattic/jetpack-protect-status/tree/v0.5.8" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-protect-status" - }, - { - "name": "automattic/jetpack-redirect", - "version": "v3.0.5", - "version_normalized": "3.0.5.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-redirect.git", - "reference": "806c695a0fb82bb9e96a6e406df27724f5821180" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-redirect/zipball/806c695a0fb82bb9e96a6e406df27724f5821180", - "reference": "806c695a0fb82bb9e96a6e406df27724f5821180", - "shasum": "" - }, - "require": { - "automattic/jetpack-status": "^5.0.10", - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1", - "brain/monkey": "^2.6.2", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:05:58+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-redirect", - "branch-alias": { - "dev-trunk": "3.0.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-redirect/compare/v${old}...v${new}" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Utilities to build URLs to the jetpack.com/redirect/ service", - "support": { - "source": "https://github.com/Automattic/jetpack-redirect/tree/v3.0.5" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-redirect" - }, - { - "name": "automattic/jetpack-roles", - "version": "v3.0.5", - "version_normalized": "3.0.5.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-roles.git", - "reference": "22e0b19517221fca3113c3ed823a3e8e22cd5762" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-roles/zipball/22e0b19517221fca3113c3ed823a3e8e22cd5762", - "reference": "22e0b19517221fca3113c3ed823a3e8e22cd5762", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/phpunit-select-config": "^1.0.1", - "brain/monkey": "^2.6.2", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:05:30+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-roles", - "branch-alias": { - "dev-trunk": "3.0.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-roles/compare/v${old}...v${new}" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Utilities, related with user roles and capabilities.", - "support": { - "source": "https://github.com/Automattic/jetpack-roles/tree/v3.0.5" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-roles" - }, - { - "name": "automattic/jetpack-status", - "version": "v5.0.10", - "version_normalized": "5.0.10.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-status.git", - "reference": "239152e50e7f5492b78bceff51ec4d1ca7a1b427" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-status/zipball/239152e50e7f5492b78bceff51ec4d1ca7a1b427", - "reference": "239152e50e7f5492b78bceff51ec4d1ca7a1b427", - "shasum": "" - }, - "require": { - "automattic/jetpack-constants": "^3.0.5", - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-connection": "@dev", - "automattic/jetpack-ip": "^0.4.6", - "automattic/jetpack-plans": "@dev", - "automattic/phpunit-select-config": "^1.0.1", - "brain/monkey": "^2.6.2", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:05:54+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "mirror-repo": "Automattic/jetpack-status", - "branch-alias": { - "dev-trunk": "5.0.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-status/compare/v${old}...v${new}" - }, - "dependencies": { - "test-only": [ - "packages/connection", - "packages/plans" - ] - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Used to retrieve information about the current status of Jetpack and the site overall.", - "support": { - "source": "https://github.com/Automattic/jetpack-status/tree/v5.0.10" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-status" - }, - { - "name": "automattic/jetpack-sync", - "version": "v4.9.2", - "version_normalized": "4.9.2.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-sync.git", - "reference": "d24cf1d05b5f700e4d92f2275dd7d414d2191e32" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-sync/zipball/d24cf1d05b5f700e4d92f2275dd7d414d2191e32", - "reference": "d24cf1d05b5f700e4d92f2275dd7d414d2191e32", - "shasum": "" - }, - "require": { - "automattic/jetpack-connection": "^6.7.7", - "automattic/jetpack-constants": "^3.0.5", - "automattic/jetpack-ip": "^0.4.6", - "automattic/jetpack-password-checker": "^0.4.7", - "automattic/jetpack-roles": "^3.0.5", - "automattic/jetpack-status": "^5.0.10", - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-search": "@dev", - "automattic/jetpack-test-environment": "@dev", - "automattic/jetpack-waf": "@dev", - "automattic/phpunit-select-config": "^1.0.1", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-21T09:06:50+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "textdomain": "jetpack-sync", - "mirror-repo": "Automattic/jetpack-sync", - "branch-alias": { - "dev-trunk": "4.9.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-sync/compare/v${old}...v${new}" - }, - "dependencies": { - "test-only": [ - "packages/search", - "packages/waf" - ] - }, - "version-constants": { - "::PACKAGE_VERSION": "src/class-package-version.php" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Everything needed to allow syncing to the WP.com infrastructure.", - "support": { - "source": "https://github.com/Automattic/jetpack-sync/tree/v4.9.2" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-sync" - }, - { - "name": "automattic/jetpack-transport-helper", - "version": "v0.3.1", - "version_normalized": "0.3.1.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-transport-helper.git", - "reference": "6c7cf972ff16b3d229e96781f9c9106f94677afe" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-transport-helper/zipball/6c7cf972ff16b3d229e96781f9c9106f94677afe", - "reference": "6c7cf972ff16b3d229e96781f9c9106f94677afe", - "shasum": "" - }, - "require": { - "automattic/jetpack-backup-helper-script-manager": "^0.3.6", - "automattic/jetpack-connection": "^6.8.1", - "php": ">=7.2" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-test-environment": "@dev", - "automattic/phpunit-select-config": "^1.0.1", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-24T17:30:58+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "textdomain": "jetpack-transport-helper", - "mirror-repo": "Automattic/jetpack-transport-helper", - "branch-alias": { - "dev-trunk": "0.3.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-transport-helper/compare/v${old}...v${new}" - }, - "version-constants": { - "::PACKAGE_VERSION": "src/class-package-version.php" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "actions.php" - ], - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Package to help transport server communication", - "support": { - "source": "https://github.com/Automattic/jetpack-transport-helper/tree/v0.3.1" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-transport-helper" - }, - { - "name": "automattic/jetpack-waf", - "version": "v0.23.8", - "version_normalized": "0.23.8.0", - "source": { - "type": "git", - "url": "https://github.com/Automattic/jetpack-waf.git", - "reference": "9cfafab1c0e0986b5bd8970c013f780208e4a84f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Automattic/jetpack-waf/zipball/9cfafab1c0e0986b5bd8970c013f780208e4a84f", - "reference": "9cfafab1c0e0986b5bd8970c013f780208e4a84f", - "shasum": "" - }, - "require": { - "automattic/jetpack-connection": "^6.8.0", - "automattic/jetpack-constants": "^3.0.5", - "automattic/jetpack-ip": "^0.4.6", - "automattic/jetpack-status": "^5.0.10", - "php": ">=7.2", - "wikimedia/aho-corasick": "^1.0" - }, - "require-dev": { - "automattic/jetpack-changelogger": "^6.0.2", - "automattic/jetpack-test-environment": "@dev", - "automattic/phpunit-select-config": "^1.0.1", - "yoast/phpunit-polyfills": "^3.0.0" - }, - "suggest": { - "automattic/jetpack-autoloader": "Allow for better interoperability with other plugins that use this package." - }, - "time": "2025-03-24T14:41:22+00:00", - "type": "jetpack-library", - "extra": { - "autotagger": true, - "textdomain": "jetpack-waf", - "mirror-repo": "Automattic/jetpack-waf", - "branch-alias": { - "dev-trunk": "0.23.x-dev" - }, - "changelogger": { - "link-template": "https://github.com/Automattic/jetpack-waf/compare/v${old}...v${new}" - } - }, - "installation-source": "dist", - "autoload": { - "files": [ - "cli.php" - ], - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Tools to assist with the Jetpack Web Application Firewall", - "support": { - "source": "https://github.com/Automattic/jetpack-waf/tree/v0.23.8" - }, - "install-path": "../../jetpack_vendor/automattic/jetpack-waf" - }, - { - "name": "wikimedia/aho-corasick", - "version": "v1.0.1", - "version_normalized": "1.0.1.0", - "source": { - "type": "git", - "url": "https://github.com/wikimedia/AhoCorasick.git", - "reference": "2f3a1bd765913637a66eade658d11d82f0e551be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wikimedia/AhoCorasick/zipball/2f3a1bd765913637a66eade658d11d82f0e551be", - "reference": "2f3a1bd765913637a66eade658d11d82f0e551be", - "shasum": "" - }, - "require": { - "php": ">=5.5.9" - }, - "require-dev": { - "jakub-onderka/php-console-highlighter": "0.3.2", - "jakub-onderka/php-parallel-lint": "1.0.0", - "mediawiki/mediawiki-codesniffer": "18.0.0", - "mediawiki/minus-x": "0.3.1", - "phpunit/phpunit": "4.8.36 || ^6.5" - }, - "time": "2018-05-01T18:13:32+00:00", - "type": "library", - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Ori Livneh", - "email": "ori@wikimedia.org" - } - ], - "description": "An implementation of the Aho-Corasick string matching algorithm.", - "homepage": "https://gerrit.wikimedia.org/g/AhoCorasick", - "keywords": [ - "ahocorasick", - "matcher" - ], - "support": { - "source": "https://github.com/wikimedia/AhoCorasick/tree/v1.0.1" - }, - "install-path": "../wikimedia/aho-corasick" - } - ], - "dev": false, - "dev-package-names": [] -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/installed.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/installed.php deleted file mode 100644 index 5ce16f0f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/installed.php +++ /dev/null @@ -1,293 +0,0 @@ - array( - 'name' => 'automattic/jetpack-protect', - 'pretty_version' => 'dev-trunk', - 'version' => 'dev-trunk', - 'reference' => null, - 'type' => 'wordpress-plugin', - 'install_path' => __DIR__ . '/../../', - 'aliases' => array(), - 'dev' => false, - ), - 'versions' => array( - 'automattic/jetpack-a8c-mc-stats' => array( - 'pretty_version' => 'v3.0.4', - 'version' => '3.0.4.0', - 'reference' => 'b1f7e2b9032ad203b6bd4cad1519613cc56f8ed0', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-a8c-mc-stats', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-admin-ui' => array( - 'pretty_version' => 'v0.5.7', - 'version' => '0.5.7.0', - 'reference' => 'c82d2417a8aa65e646c40a81011ad76f355a742f', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-admin-ui', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-assets' => array( - 'pretty_version' => 'v4.0.14', - 'version' => '4.0.14.0', - 'reference' => '2219c71f19c34ea9a393e48498188f1aa9f9031b', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-assets', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-autoloader' => array( - 'pretty_version' => 'v5.0.5', - 'version' => '5.0.5.0', - 'reference' => '7bf3172e73c27c72d01d6de4796a41c7abc06d5a', - 'type' => 'composer-plugin', - 'install_path' => __DIR__ . '/../automattic/jetpack-autoloader', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-backup-helper-script-manager' => array( - 'pretty_version' => 'v0.3.6', - 'version' => '0.3.6.0', - 'reference' => '859d8df5637c61f9c29b46e038f425bd238eb6f4', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-backup-helper-script-manager', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-boost-core' => array( - 'pretty_version' => 'v0.3.9', - 'version' => '0.3.9.0', - 'reference' => '83c2081731fe46fc43d938abf1f0818a67c0e61e', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-boost-core', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-boost-speed-score' => array( - 'pretty_version' => 'v0.4.6', - 'version' => '0.4.6.0', - 'reference' => '42d2a24559b5a007096d3a500be058fd92ab1f19', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-boost-speed-score', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-composer-plugin' => array( - 'pretty_version' => 'v4.0.4', - 'version' => '4.0.4.0', - 'reference' => '0c32be22d4e2ff6468ed688780d14bcd70e260da', - 'type' => 'composer-plugin', - 'install_path' => __DIR__ . '/../automattic/jetpack-composer-plugin', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-config' => array( - 'pretty_version' => 'v3.0.1', - 'version' => '3.0.1.0', - 'reference' => '13f26ed2830d9043d351e49c5ab4e2b6ec21e9d2', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-config', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-connection' => array( - 'pretty_version' => 'v6.8.1', - 'version' => '6.8.1.0', - 'reference' => '473c52b3ad8ea7b51066a243d2b1d87ba8835fca', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-connection', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-constants' => array( - 'pretty_version' => 'v3.0.5', - 'version' => '3.0.5.0', - 'reference' => '12446dd21985e3765d8b8b903091c273d22e4e9e', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-constants', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-device-detection' => array( - 'pretty_version' => 'v3.0.5', - 'version' => '3.0.5.0', - 'reference' => 'dd237dd9b92532aba103b71bf43a2a3c87117a7f', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-device-detection', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-explat' => array( - 'pretty_version' => 'v0.2.13', - 'version' => '0.2.13.0', - 'reference' => 'ba4a9fa045deb9c6bf58a394521dbf6458b34d30', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-explat', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-ip' => array( - 'pretty_version' => 'v0.4.6', - 'version' => '0.4.6.0', - 'reference' => '0248018c22240817a2a463fd0e1aa05f55091c6c', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-ip', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-jitm' => array( - 'pretty_version' => 'v4.2.7', - 'version' => '4.2.7.0', - 'reference' => '8ee55bdf627a004ee736921e34160545a917ab44', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-jitm', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-licensing' => array( - 'pretty_version' => 'v3.0.8', - 'version' => '3.0.8.0', - 'reference' => '85e45bf51f729c76535a026edf806e5e800ca409', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-licensing', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-logo' => array( - 'pretty_version' => 'v3.0.4', - 'version' => '3.0.4.0', - 'reference' => 'e13c7917f1bfeb014c923d6763db2ee1d60eb1aa', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-logo', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-my-jetpack' => array( - 'pretty_version' => 'v5.9.1', - 'version' => '5.9.1.0', - 'reference' => 'c75f826f5900506be1b28120946c1b319e23dac6', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-my-jetpack', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-password-checker' => array( - 'pretty_version' => 'v0.4.7', - 'version' => '0.4.7.0', - 'reference' => '25900f1b5bf8718915c607a4fc1d1e0bc290e20a', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-password-checker', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-plans' => array( - 'pretty_version' => 'v0.6.1', - 'version' => '0.6.1.0', - 'reference' => '66a8169d4a22af983aa6c11c57bc385d7c5747cc', - 'type' => 'library', - 'install_path' => __DIR__ . '/../automattic/jetpack-plans', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-plugins-installer' => array( - 'pretty_version' => 'v0.5.4', - 'version' => '0.5.4.0', - 'reference' => '2fbd9cf402e0514f680b8bef9f787633f2bb29ed', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-plugins-installer', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-protect' => array( - 'pretty_version' => 'dev-trunk', - 'version' => 'dev-trunk', - 'reference' => null, - 'type' => 'wordpress-plugin', - 'install_path' => __DIR__ . '/../../', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-protect-models' => array( - 'pretty_version' => 'v0.5.4', - 'version' => '0.5.4.0', - 'reference' => '99180919a0756cfd3272388eebc99c5795894b18', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-protect-models', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-protect-status' => array( - 'pretty_version' => 'v0.5.8', - 'version' => '0.5.8.0', - 'reference' => '34cd7a21d211ec00709660486b6ee9e0928593a6', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-protect-status', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-redirect' => array( - 'pretty_version' => 'v3.0.5', - 'version' => '3.0.5.0', - 'reference' => '806c695a0fb82bb9e96a6e406df27724f5821180', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-redirect', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-roles' => array( - 'pretty_version' => 'v3.0.5', - 'version' => '3.0.5.0', - 'reference' => '22e0b19517221fca3113c3ed823a3e8e22cd5762', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-roles', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-status' => array( - 'pretty_version' => 'v5.0.10', - 'version' => '5.0.10.0', - 'reference' => '239152e50e7f5492b78bceff51ec4d1ca7a1b427', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-status', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-sync' => array( - 'pretty_version' => 'v4.9.2', - 'version' => '4.9.2.0', - 'reference' => 'd24cf1d05b5f700e4d92f2275dd7d414d2191e32', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-sync', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-transport-helper' => array( - 'pretty_version' => 'v0.3.1', - 'version' => '0.3.1.0', - 'reference' => '6c7cf972ff16b3d229e96781f9c9106f94677afe', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-transport-helper', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'automattic/jetpack-waf' => array( - 'pretty_version' => 'v0.23.8', - 'version' => '0.23.8.0', - 'reference' => '9cfafab1c0e0986b5bd8970c013f780208e4a84f', - 'type' => 'jetpack-library', - 'install_path' => __DIR__ . '/../../jetpack_vendor/automattic/jetpack-waf', - 'aliases' => array(), - 'dev_requirement' => false, - ), - 'wikimedia/aho-corasick' => array( - 'pretty_version' => 'v1.0.1', - 'version' => '1.0.1.0', - 'reference' => '2f3a1bd765913637a66eade658d11d82f0e551be', - 'type' => 'library', - 'install_path' => __DIR__ . '/../wikimedia/aho-corasick', - 'aliases' => array(), - 'dev_requirement' => false, - ), - ), -); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/jetpack_autoload_classmap.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/jetpack_autoload_classmap.php deleted file mode 100644 index b68b45bb..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/jetpack_autoload_classmap.php +++ /dev/null @@ -1,1037 +0,0 @@ - array( - 'version' => '1.0.1.0', - 'path' => $vendorDir . '/wikimedia/aho-corasick/src/MultiStringMatcher.php' - ), - 'AhoCorasick\\MultiStringReplacer' => array( - 'version' => '1.0.1.0', - 'path' => $vendorDir . '/wikimedia/aho-corasick/src/MultiStringReplacer.php' - ), - 'Autoloader' => array( - 'version' => '5.0.5', - 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-autoloader.php' - ), - 'Autoloader_Handler' => array( - 'version' => '5.0.5', - 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-autoloader-handler.php' - ), - 'Autoloader_Locator' => array( - 'version' => '5.0.5', - 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-autoloader-locator.php' - ), - 'Automattic\\Jetpack\\A8c_Mc_Stats' => array( - 'version' => '3.0.4.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-a8c-mc-stats/src/class-a8c-mc-stats.php' - ), - 'Automattic\\Jetpack\\Admin_UI\\Admin_Menu' => array( - 'version' => '0.5.7.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-admin-ui/src/class-admin-menu.php' - ), - 'Automattic\\Jetpack\\Assets' => array( - 'version' => '4.0.14.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-assets/src/class-assets.php' - ), - 'Automattic\\Jetpack\\Assets\\Logo' => array( - 'version' => '3.0.4.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-logo/src/class-logo.php' - ), - 'Automattic\\Jetpack\\Assets\\Script_Data' => array( - 'version' => '4.0.14.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-assets/src/class-script-data.php' - ), - 'Automattic\\Jetpack\\Assets\\Semver' => array( - 'version' => '4.0.14.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-assets/src/class-semver.php' - ), - 'Automattic\\Jetpack\\Autoloader\\AutoloadFileWriter' => array( - 'version' => '5.0.5', - 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/AutoloadFileWriter.php' - ), - 'Automattic\\Jetpack\\Autoloader\\AutoloadGenerator' => array( - 'version' => '5.0.5', - 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/AutoloadGenerator.php' - ), - 'Automattic\\Jetpack\\Autoloader\\AutoloadProcessor' => array( - 'version' => '5.0.5', - 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/AutoloadProcessor.php' - ), - 'Automattic\\Jetpack\\Autoloader\\CustomAutoloaderPlugin' => array( - 'version' => '5.0.5', - 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/CustomAutoloaderPlugin.php' - ), - 'Automattic\\Jetpack\\Autoloader\\ManifestGenerator' => array( - 'version' => '5.0.5', - 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/ManifestGenerator.php' - ), - 'Automattic\\Jetpack\\Automatic_Install_Skin' => array( - 'version' => '0.5.4.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-automatic-install-skin.php' - ), - 'Automattic\\Jetpack\\Backup\\V0005\\Helper_Script_Manager' => array( - 'version' => '0.3.6.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/src/class-helper-script-manager.php' - ), - 'Automattic\\Jetpack\\Backup\\V0005\\Helper_Script_Manager_Impl' => array( - 'version' => '0.3.6.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/src/class-helper-script-manager-impl.php' - ), - 'Automattic\\Jetpack\\Backup\\V0005\\Throw_On_Errors' => array( - 'version' => '0.3.6.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-backup-helper-script-manager/src/class-throw-on-errors.php' - ), - 'Automattic\\Jetpack\\Boost_Core\\Contracts\\Boost_API_Client' => array( - 'version' => '0.3.9.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/contracts/boost-api-client.php' - ), - 'Automattic\\Jetpack\\Boost_Core\\Lib\\Boost_API' => array( - 'version' => '0.3.9.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-boost-api.php' - ), - 'Automattic\\Jetpack\\Boost_Core\\Lib\\Cacheable' => array( - 'version' => '0.3.9.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-cacheable.php' - ), - 'Automattic\\Jetpack\\Boost_Core\\Lib\\Transient' => array( - 'version' => '0.3.9.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-transient.php' - ), - 'Automattic\\Jetpack\\Boost_Core\\Lib\\Url' => array( - 'version' => '0.3.9.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-url.php' - ), - 'Automattic\\Jetpack\\Boost_Core\\Lib\\Utils' => array( - 'version' => '0.3.9.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-utils.php' - ), - 'Automattic\\Jetpack\\Boost_Core\\Lib\\WPCOM_Boost_API_Client' => array( - 'version' => '0.3.9.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-core/src/lib/class-wpcom-boost-api-client.php' - ), - 'Automattic\\Jetpack\\Boost_Speed_Score\\Jetpack_Boost_Modules' => array( - 'version' => '0.4.6.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-jetpack-boost-modules.php' - ), - 'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score' => array( - 'version' => '0.4.6.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score.php' - ), - 'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score_Graph_History_Request' => array( - 'version' => '0.4.6.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score-graph-history-request.php' - ), - 'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score_History' => array( - 'version' => '0.4.6.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score-history.php' - ), - 'Automattic\\Jetpack\\Boost_Speed_Score\\Speed_Score_Request' => array( - 'version' => '0.4.6.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-boost-speed-score/src/class-speed-score-request.php' - ), - 'Automattic\\Jetpack\\Composer\\Manager' => array( - 'version' => '4.0.4.0', - 'path' => $vendorDir . '/automattic/jetpack-composer-plugin/src/class-manager.php' - ), - 'Automattic\\Jetpack\\Composer\\Plugin' => array( - 'version' => '4.0.4.0', - 'path' => $vendorDir . '/automattic/jetpack-composer-plugin/src/class-plugin.php' - ), - 'Automattic\\Jetpack\\Config' => array( - 'version' => '3.0.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-config/src/class-config.php' - ), - 'Automattic\\Jetpack\\Connection\\Authorize_Json_Api' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-authorize-json-api.php' - ), - 'Automattic\\Jetpack\\Connection\\Client' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-client.php' - ), - 'Automattic\\Jetpack\\Connection\\Connection_Assets' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-connection-assets.php' - ), - 'Automattic\\Jetpack\\Connection\\Connection_Notice' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-connection-notice.php' - ), - 'Automattic\\Jetpack\\Connection\\Error_Handler' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-error-handler.php' - ), - 'Automattic\\Jetpack\\Connection\\Initial_State' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-initial-state.php' - ), - 'Automattic\\Jetpack\\Connection\\Manager' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-manager.php' - ), - 'Automattic\\Jetpack\\Connection\\Manager_Interface' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/interface-manager.php' - ), - 'Automattic\\Jetpack\\Connection\\Nonce_Handler' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-nonce-handler.php' - ), - 'Automattic\\Jetpack\\Connection\\Package_Version' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-package-version.php' - ), - 'Automattic\\Jetpack\\Connection\\Package_Version_Tracker' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-package-version-tracker.php' - ), - 'Automattic\\Jetpack\\Connection\\Plugin' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-plugin.php' - ), - 'Automattic\\Jetpack\\Connection\\Plugin_Storage' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-plugin-storage.php' - ), - 'Automattic\\Jetpack\\Connection\\REST_Connector' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-rest-connector.php' - ), - 'Automattic\\Jetpack\\Connection\\Rest_Authentication' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-rest-authentication.php' - ), - 'Automattic\\Jetpack\\Connection\\SSO' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-sso.php' - ), - 'Automattic\\Jetpack\\Connection\\SSO\\Force_2FA' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-force-2fa.php' - ), - 'Automattic\\Jetpack\\Connection\\SSO\\Helpers' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-helpers.php' - ), - 'Automattic\\Jetpack\\Connection\\SSO\\Notices' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-notices.php' - ), - 'Automattic\\Jetpack\\Connection\\SSO\\User_Admin' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/sso/class-user-admin.php' - ), - 'Automattic\\Jetpack\\Connection\\Secrets' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-secrets.php' - ), - 'Automattic\\Jetpack\\Connection\\Server_Sandbox' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-server-sandbox.php' - ), - 'Automattic\\Jetpack\\Connection\\Tokens' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-tokens.php' - ), - 'Automattic\\Jetpack\\Connection\\Tokens_Locks' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-tokens-locks.php' - ), - 'Automattic\\Jetpack\\Connection\\Traits\\WPCOM_REST_API_Proxy_Request' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/traits/trait-wpcom-rest-api-proxy-request.php' - ), - 'Automattic\\Jetpack\\Connection\\Urls' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-urls.php' - ), - 'Automattic\\Jetpack\\Connection\\Users_Connection_Admin' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-users-connection-admin.php' - ), - 'Automattic\\Jetpack\\Connection\\Utils' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-utils.php' - ), - 'Automattic\\Jetpack\\Connection\\Webhooks' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-webhooks.php' - ), - 'Automattic\\Jetpack\\Connection\\Webhooks\\Authorize_Redirect' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/webhooks/class-authorize-redirect.php' - ), - 'Automattic\\Jetpack\\Connection\\XMLRPC_Async_Call' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-async-call.php' - ), - 'Automattic\\Jetpack\\Connection\\XMLRPC_Connector' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-xmlrpc-connector.php' - ), - 'Automattic\\Jetpack\\Constants' => array( - 'version' => '3.0.5.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-constants/src/class-constants.php' - ), - 'Automattic\\Jetpack\\CookieState' => array( - 'version' => '5.0.10.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-cookiestate.php' - ), - 'Automattic\\Jetpack\\Current_Plan' => array( - 'version' => '0.6.1.0', - 'path' => $vendorDir . '/automattic/jetpack-plans/src/class-current-plan.php' - ), - 'Automattic\\Jetpack\\Device_Detection' => array( - 'version' => '3.0.5.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-device-detection/src/class-device-detection.php' - ), - 'Automattic\\Jetpack\\Device_Detection\\User_Agent_Info' => array( - 'version' => '3.0.5.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-device-detection/src/class-user-agent-info.php' - ), - 'Automattic\\Jetpack\\Errors' => array( - 'version' => '5.0.10.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-errors.php' - ), - 'Automattic\\Jetpack\\ExPlat' => array( - 'version' => '0.2.13.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-explat/src/class-explat.php' - ), - 'Automattic\\Jetpack\\ExPlat\\REST_Controller' => array( - 'version' => '0.2.13.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-explat/src/class-rest-controller.php' - ), - 'Automattic\\Jetpack\\Files' => array( - 'version' => '5.0.10.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-files.php' - ), - 'Automattic\\Jetpack\\Heartbeat' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-heartbeat.php' - ), - 'Automattic\\Jetpack\\IP\\Utils' => array( - 'version' => '0.4.6.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-ip/src/class-utils.php' - ), - 'Automattic\\Jetpack\\IdentityCrisis\\Exception' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-exception.php' - ), - 'Automattic\\Jetpack\\IdentityCrisis\\REST_Endpoints' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-rest-endpoints.php' - ), - 'Automattic\\Jetpack\\IdentityCrisis\\UI' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-ui.php' - ), - 'Automattic\\Jetpack\\IdentityCrisis\\URL_Secret' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-url-secret.php' - ), - 'Automattic\\Jetpack\\Identity_Crisis' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/identity-crisis/class-identity-crisis.php' - ), - 'Automattic\\Jetpack\\JITMS\\JITM' => array( - 'version' => '4.2.7.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-jitm/src/class-jitm.php' - ), - 'Automattic\\Jetpack\\JITMS\\Post_Connection_JITM' => array( - 'version' => '4.2.7.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-jitm/src/class-post-connection-jitm.php' - ), - 'Automattic\\Jetpack\\JITMS\\Pre_Connection_JITM' => array( - 'version' => '4.2.7.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-jitm/src/class-pre-connection-jitm.php' - ), - 'Automattic\\Jetpack\\JITMS\\Rest_Api_Endpoints' => array( - 'version' => '4.2.7.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-jitm/src/class-rest-api-endpoints.php' - ), - 'Automattic\\Jetpack\\Licensing' => array( - 'version' => '3.0.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-licensing/src/class-licensing.php' - ), - 'Automattic\\Jetpack\\Licensing\\Endpoints' => array( - 'version' => '3.0.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-licensing/src/class-endpoints.php' - ), - 'Automattic\\Jetpack\\Modules' => array( - 'version' => '5.0.10.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-modules.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Activitylog' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-activitylog.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Historically_Active_Modules' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-historically-active-modules.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Hybrid_Product' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-hybrid-product.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Initializer' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-initializer.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Jetpack_Manage' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-jetpack-manage.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Module_Product' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-module-product.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Product' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-product.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-products.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Anti_Spam' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-anti-spam.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Backup' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-backup.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Boost' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-boost.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Complete' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-complete.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Creator' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-creator.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Crm' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-crm.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Extras' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-extras.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Growth' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-growth.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Jetpack_Ai' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-jetpack-ai.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Newsletter' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-newsletter.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Protect' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-protect.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Related_Posts' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-related-posts.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Scan' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-scan.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Search' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Search_Stats' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-search-stats.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Security' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-security.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Site_Accelerator' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-site-accelerator.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Social' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-social.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Starter' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-starter.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Stats' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-stats.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Products\\Videopress' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/products/class-videopress.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\REST_AI' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-ai.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\REST_Products' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-products.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\REST_Purchases' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-purchases.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\REST_Recommendations_Evaluation' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-recommendations-evaluation.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\REST_Zendesk_Chat' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-rest-zendesk-chat.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Red_Bubble_Notifications' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-red-bubble-notifications.php' - ), - 'Automattic\\Jetpack\\My_Jetpack\\Wpcom_Products' => array( - 'version' => '5.9.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-my-jetpack/src/class-wpcom-products.php' - ), - 'Automattic\\Jetpack\\Partner' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-partner.php' - ), - 'Automattic\\Jetpack\\Partner_Coupon' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-partner-coupon.php' - ), - 'Automattic\\Jetpack\\Password_Checker' => array( - 'version' => '0.4.7.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-password-checker/src/class-password-checker.php' - ), - 'Automattic\\Jetpack\\Paths' => array( - 'version' => '5.0.10.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-paths.php' - ), - 'Automattic\\Jetpack\\Plans' => array( - 'version' => '0.6.1.0', - 'path' => $vendorDir . '/automattic/jetpack-plans/src/class-plans.php' - ), - 'Automattic\\Jetpack\\Plugins_Installer' => array( - 'version' => '0.5.4.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-plugins-installer/src/class-plugins-installer.php' - ), - 'Automattic\\Jetpack\\Protect\\Credentials' => array( - 'version' => 'dev-trunk', - 'path' => $baseDir . '/src/class-credentials.php' - ), - 'Automattic\\Jetpack\\Protect\\Onboarding' => array( - 'version' => 'dev-trunk', - 'path' => $baseDir . '/src/class-onboarding.php' - ), - 'Automattic\\Jetpack\\Protect\\REST_Controller' => array( - 'version' => 'dev-trunk', - 'path' => $baseDir . '/src/class-rest-controller.php' - ), - 'Automattic\\Jetpack\\Protect\\Scan_History' => array( - 'version' => 'dev-trunk', - 'path' => $baseDir . '/src/class-scan-history.php' - ), - 'Automattic\\Jetpack\\Protect\\Site_Health' => array( - 'version' => 'dev-trunk', - 'path' => $baseDir . '/src/class-site-health.php' - ), - 'Automattic\\Jetpack\\Protect\\Threats' => array( - 'version' => 'dev-trunk', - 'path' => $baseDir . '/src/class-threats.php' - ), - 'Automattic\\Jetpack\\Protect_Models' => array( - 'version' => '0.5.4.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-protect-models.php' - ), - 'Automattic\\Jetpack\\Protect_Models\\Extension_Model' => array( - 'version' => '0.5.4.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-extension-model.php' - ), - 'Automattic\\Jetpack\\Protect_Models\\History_Model' => array( - 'version' => '0.5.4.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-history-model.php' - ), - 'Automattic\\Jetpack\\Protect_Models\\Status_Model' => array( - 'version' => '0.5.4.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-status-model.php' - ), - 'Automattic\\Jetpack\\Protect_Models\\Threat_Model' => array( - 'version' => '0.5.4.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-threat-model.php' - ), - 'Automattic\\Jetpack\\Protect_Models\\Vulnerability_Model' => array( - 'version' => '0.5.4.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-models/src/class-vulnerability-model.php' - ), - 'Automattic\\Jetpack\\Protect_Status\\Plan' => array( - 'version' => '0.5.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-plan.php' - ), - 'Automattic\\Jetpack\\Protect_Status\\Protect_Status' => array( - 'version' => '0.5.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-protect-status.php' - ), - 'Automattic\\Jetpack\\Protect_Status\\REST_Controller' => array( - 'version' => '0.5.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-rest-controller.php' - ), - 'Automattic\\Jetpack\\Protect_Status\\Scan_Status' => array( - 'version' => '0.5.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-scan-status.php' - ), - 'Automattic\\Jetpack\\Protect_Status\\Status' => array( - 'version' => '0.5.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-protect-status/src/class-status.php' - ), - 'Automattic\\Jetpack\\Redirect' => array( - 'version' => '3.0.5.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-redirect/src/class-redirect.php' - ), - 'Automattic\\Jetpack\\Roles' => array( - 'version' => '3.0.5.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-roles/src/class-roles.php' - ), - 'Automattic\\Jetpack\\Status' => array( - 'version' => '5.0.10.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-status.php' - ), - 'Automattic\\Jetpack\\Status\\Cache' => array( - 'version' => '5.0.10.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-cache.php' - ), - 'Automattic\\Jetpack\\Status\\Host' => array( - 'version' => '5.0.10.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-host.php' - ), - 'Automattic\\Jetpack\\Status\\Visitor' => array( - 'version' => '5.0.10.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-status/src/class-visitor.php' - ), - 'Automattic\\Jetpack\\Sync\\Actions' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-actions.php' - ), - 'Automattic\\Jetpack\\Sync\\Codec_Interface' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/interface-codec.php' - ), - 'Automattic\\Jetpack\\Sync\\Data_Settings' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-data-settings.php' - ), - 'Automattic\\Jetpack\\Sync\\Dedicated_Sender' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-dedicated-sender.php' - ), - 'Automattic\\Jetpack\\Sync\\Default_Filter_Settings' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-default-filter-settings.php' - ), - 'Automattic\\Jetpack\\Sync\\Defaults' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-defaults.php' - ), - 'Automattic\\Jetpack\\Sync\\Functions' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-functions.php' - ), - 'Automattic\\Jetpack\\Sync\\Health' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-health.php' - ), - 'Automattic\\Jetpack\\Sync\\JSON_Deflate_Array_Codec' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-json-deflate-array-codec.php' - ), - 'Automattic\\Jetpack\\Sync\\Listener' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-listener.php' - ), - 'Automattic\\Jetpack\\Sync\\Lock' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-lock.php' - ), - 'Automattic\\Jetpack\\Sync\\Main' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-main.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-modules.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Attachments' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-attachments.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Callables' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-callables.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Comments' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-comments.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Constants' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-constants.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Full_Sync' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Full_Sync_Immediately' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-full-sync-immediately.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Import' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-import.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Menus' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-menus.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Meta' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-meta.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Module' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-module.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Network_Options' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-network-options.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Options' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-options.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Plugins' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-plugins.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Posts' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-posts.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Protect' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-protect.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Search' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-search.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Stats' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-stats.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Term_Relationships' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-term-relationships.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Terms' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-terms.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Themes' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-themes.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Updates' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-updates.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\Users' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-users.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\WP_Super_Cache' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-wp-super-cache.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\WooCommerce' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce.php' - ), - 'Automattic\\Jetpack\\Sync\\Modules\\WooCommerce_HPOS_Orders' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/modules/class-woocommerce-hpos-orders.php' - ), - 'Automattic\\Jetpack\\Sync\\Package_Version' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-package-version.php' - ), - 'Automattic\\Jetpack\\Sync\\Queue' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-queue.php' - ), - 'Automattic\\Jetpack\\Sync\\Queue\\Queue_Storage_Options' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-options.php' - ), - 'Automattic\\Jetpack\\Sync\\Queue\\Queue_Storage_Table' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/sync-queue/class-queue-storage-table.php' - ), - 'Automattic\\Jetpack\\Sync\\Queue_Buffer' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-queue-buffer.php' - ), - 'Automattic\\Jetpack\\Sync\\REST_Endpoints' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-rest-endpoints.php' - ), - 'Automattic\\Jetpack\\Sync\\REST_Sender' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-rest-sender.php' - ), - 'Automattic\\Jetpack\\Sync\\Replicastore' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-replicastore.php' - ), - 'Automattic\\Jetpack\\Sync\\Replicastore\\Table_Checksum' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum.php' - ), - 'Automattic\\Jetpack\\Sync\\Replicastore\\Table_Checksum_Usermeta' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-usermeta.php' - ), - 'Automattic\\Jetpack\\Sync\\Replicastore\\Table_Checksum_Users' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/replicastore/class-table-checksum-users.php' - ), - 'Automattic\\Jetpack\\Sync\\Replicastore_Interface' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/interface-replicastore.php' - ), - 'Automattic\\Jetpack\\Sync\\Sender' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-sender.php' - ), - 'Automattic\\Jetpack\\Sync\\Server' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-server.php' - ), - 'Automattic\\Jetpack\\Sync\\Settings' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-settings.php' - ), - 'Automattic\\Jetpack\\Sync\\Simple_Codec' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-simple-codec.php' - ), - 'Automattic\\Jetpack\\Sync\\Users' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-users.php' - ), - 'Automattic\\Jetpack\\Sync\\Utils' => array( - 'version' => '4.9.2.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-sync/src/class-utils.php' - ), - 'Automattic\\Jetpack\\Terms_Of_Service' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-terms-of-service.php' - ), - 'Automattic\\Jetpack\\Tracking' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/src/class-tracking.php' - ), - 'Automattic\\Jetpack\\Transport_Helper\\Package_Version' => array( - 'version' => '0.3.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-transport-helper/src/class-package-version.php' - ), - 'Automattic\\Jetpack\\Transport_Helper\\V0001\\Package_Version' => array( - 'version' => '0.3.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-transport-helper/src/class-package-version-compat.php' - ), - 'Automattic\\Jetpack\\Transport_Helper\\V0005\\REST_Controller' => array( - 'version' => '0.3.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-transport-helper/src/class-rest-controller.php' - ), - 'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-brute-force-protection.php' - ), - 'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Blocked_Login_Page' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-blocked-login-page.php' - ), - 'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Math_Authenticate' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-math-fallback.php' - ), - 'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Shared_Functions' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-shared-functions.php' - ), - 'Automattic\\Jetpack\\Waf\\Brute_Force_Protection\\Brute_Force_Protection_Transient_Cleanup' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/brute-force-protection/class-transient-cleanup.php' - ), - 'Automattic\\Jetpack\\Waf\\CLI' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-cli.php' - ), - 'Automattic\\Jetpack\\Waf\\File_System_Exception' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-file-system-exception.php' - ), - 'Automattic\\Jetpack\\Waf\\REST_Controller' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-rest-controller.php' - ), - 'Automattic\\Jetpack\\Waf\\Rules_API_Exception' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-rules-api-exception.php' - ), - 'Automattic\\Jetpack\\Waf\\Waf_Blocklog_Manager' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-blocklog-manager.php' - ), - 'Automattic\\Jetpack\\Waf\\Waf_Compatibility' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-compatibility.php' - ), - 'Automattic\\Jetpack\\Waf\\Waf_Constants' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-constants.php' - ), - 'Automattic\\Jetpack\\Waf\\Waf_Exception' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/exceptions/class-waf-exception.php' - ), - 'Automattic\\Jetpack\\Waf\\Waf_Initializer' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-initializer.php' - ), - 'Automattic\\Jetpack\\Waf\\Waf_Operators' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-operators.php' - ), - 'Automattic\\Jetpack\\Waf\\Waf_Request' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-request.php' - ), - 'Automattic\\Jetpack\\Waf\\Waf_Rules_Manager' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-rules-manager.php' - ), - 'Automattic\\Jetpack\\Waf\\Waf_Runner' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-runner.php' - ), - 'Automattic\\Jetpack\\Waf\\Waf_Runtime' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-runtime.php' - ), - 'Automattic\\Jetpack\\Waf\\Waf_Standalone_Bootstrap' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-standalone-bootstrap.php' - ), - 'Automattic\\Jetpack\\Waf\\Waf_Stats' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-stats.php' - ), - 'Automattic\\Jetpack\\Waf\\Waf_Transforms' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/src/class-waf-transforms.php' - ), - 'Container' => array( - 'version' => '5.0.5', - 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-container.php' - ), - 'Hook_Manager' => array( - 'version' => '5.0.5', - 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-hook-manager.php' - ), - 'Jetpack_IXR_Client' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-ixr-client.php' - ), - 'Jetpack_IXR_ClientMulticall' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-ixr-clientmulticall.php' - ), - 'Jetpack_Options' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-options.php' - ), - 'Jetpack_Protect' => array( - 'version' => 'dev-trunk', - 'path' => $baseDir . '/src/class-jetpack-protect.php' - ), - 'Jetpack_Signature' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-signature.php' - ), - 'Jetpack_Tracks_Client' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-tracks-client.php' - ), - 'Jetpack_Tracks_Event' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-tracks-event.php' - ), - 'Jetpack_XMLRPC_Server' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/legacy/class-jetpack-xmlrpc-server.php' - ), - 'Latest_Autoloader_Guard' => array( - 'version' => '5.0.5', - 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-latest-autoloader-guard.php' - ), - 'Manifest_Reader' => array( - 'version' => '5.0.5', - 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-manifest-reader.php' - ), - 'PHP_Autoloader' => array( - 'version' => '5.0.5', - 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-php-autoloader.php' - ), - 'Path_Processor' => array( - 'version' => '5.0.5', - 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-path-processor.php' - ), - 'Plugin_Locator' => array( - 'version' => '5.0.5', - 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-plugin-locator.php' - ), - 'Plugins_Handler' => array( - 'version' => '5.0.5', - 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-plugins-handler.php' - ), - 'Shutdown_Handler' => array( - 'version' => '5.0.5', - 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-shutdown-handler.php' - ), - 'Version_Loader' => array( - 'version' => '5.0.5', - 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-version-loader.php' - ), - 'Version_Selector' => array( - 'version' => '5.0.5', - 'path' => $vendorDir . '/automattic/jetpack-autoloader/src/class-version-selector.php' - ), -); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/jetpack_autoload_filemap.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/jetpack_autoload_filemap.php deleted file mode 100644 index 610fce20..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/jetpack_autoload_filemap.php +++ /dev/null @@ -1,25 +0,0 @@ - array( - 'version' => '4.0.14.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-assets/actions.php' - ), - '7372b7fb88a9723cf5b76d456eb0b738' => array( - 'version' => '6.8.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-connection/actions.php' - ), - '590147edb63acb03b2852d5c4db13ce8' => array( - 'version' => '0.3.1.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-transport-helper/actions.php' - ), - '3d45c7e6a7f0e71849e33afe4b3b3ede' => array( - 'version' => '0.23.8.0', - 'path' => $baseDir . '/jetpack_vendor/automattic/jetpack-waf/cli.php' - ), -); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/platform_check.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/platform_check.php deleted file mode 100644 index 589e9e77..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/composer/platform_check.php +++ /dev/null @@ -1,26 +0,0 @@ -= 70200)) { - $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.0". You are running ' . PHP_VERSION . '.'; -} - -if ($issues) { - if (!headers_sent()) { - header('HTTP/1.1 500 Internal Server Error'); - } - if (!ini_get('display_errors')) { - if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { - fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); - } elseif (!headers_sent()) { - echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; - } - } - trigger_error( - 'Composer detected issues in your platform: ' . implode(' ', $issues), - E_USER_ERROR - ); -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-autoloader-handler.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-autoloader-handler.php deleted file mode 100644 index 61d8a139..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-autoloader-handler.php +++ /dev/null @@ -1,147 +0,0 @@ -php_autoloader = $php_autoloader; - $this->hook_manager = $hook_manager; - $this->manifest_reader = $manifest_reader; - $this->version_selector = $version_selector; - } - - /** - * Checks to see whether or not an autoloader is currently in the process of initializing. - * - * @return bool - */ - public function is_initializing() { - // If no version has been set it means that no autoloader has started initializing yet. - global $jetpack_autoloader_latest_version; - if ( ! isset( $jetpack_autoloader_latest_version ) ) { - return false; - } - - // When the version is set but the classmap is not it ALWAYS means that this is the - // latest autoloader and is being included by an older one. - global $jetpack_packages_classmap; - if ( empty( $jetpack_packages_classmap ) ) { - return true; - } - - // Version 2.4.0 added a new global and altered the reset semantics. We need to check - // the other global as well since it may also point at initialization. - // Note: We don't need to check for the class first because every autoloader that - // will set the latest version global requires this class in the classmap. - $replacing_version = $jetpack_packages_classmap[ AutoloadGenerator::class ]['version']; - if ( $this->version_selector->is_dev_version( $replacing_version ) || version_compare( $replacing_version, '2.4.0.0', '>=' ) ) { - global $jetpack_autoloader_loader; - if ( ! isset( $jetpack_autoloader_loader ) ) { - return true; - } - } - - return false; - } - - /** - * Activates an autoloader using the given plugins and activates it. - * - * @param string[] $plugins The plugins to initialize the autoloader for. - */ - public function activate_autoloader( $plugins ) { - global $jetpack_packages_psr4; - $jetpack_packages_psr4 = array(); - $this->manifest_reader->read_manifests( $plugins, 'vendor/composer/jetpack_autoload_psr4.php', $jetpack_packages_psr4 ); - - global $jetpack_packages_classmap; - $jetpack_packages_classmap = array(); - $this->manifest_reader->read_manifests( $plugins, 'vendor/composer/jetpack_autoload_classmap.php', $jetpack_packages_classmap ); - - global $jetpack_packages_filemap; - $jetpack_packages_filemap = array(); - $this->manifest_reader->read_manifests( $plugins, 'vendor/composer/jetpack_autoload_filemap.php', $jetpack_packages_filemap ); - - $loader = new Version_Loader( - $this->version_selector, - $jetpack_packages_classmap, - $jetpack_packages_psr4, - $jetpack_packages_filemap - ); - - $this->php_autoloader->register_autoloader( $loader ); - - // Now that the autoloader is active we can load the filemap. - $loader->load_filemap(); - } - - /** - * Resets the active autoloader and all related global state. - */ - public function reset_autoloader() { - $this->php_autoloader->unregister_autoloader(); - $this->hook_manager->reset(); - - // Clear all of the autoloader globals so that older autoloaders don't do anything strange. - global $jetpack_autoloader_latest_version; - $jetpack_autoloader_latest_version = null; - - global $jetpack_packages_classmap; - $jetpack_packages_classmap = array(); // Must be array to avoid exceptions in old autoloaders! - - global $jetpack_packages_psr4; - $jetpack_packages_psr4 = array(); // Must be array to avoid exceptions in old autoloaders! - - global $jetpack_packages_filemap; - $jetpack_packages_filemap = array(); // Must be array to avoid exceptions in old autoloaders! - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-autoloader-locator.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-autoloader-locator.php deleted file mode 100644 index ed6ae603..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-autoloader-locator.php +++ /dev/null @@ -1,90 +0,0 @@ -version_selector = $version_selector; - } - - /** - * Finds the path to the plugin with the latest autoloader. - * - * @param array $plugin_paths An array of plugin paths. - * @param string $latest_version The latest version reference. @phan-output-reference. - * - * @return string|null - */ - public function find_latest_autoloader( $plugin_paths, &$latest_version ) { - $latest_plugin = null; - - foreach ( $plugin_paths as $plugin_path ) { - $version = $this->get_autoloader_version( $plugin_path ); - if ( ! $version || ! $this->version_selector->is_version_update_required( $latest_version, $version ) ) { - continue; - } - - $latest_version = $version; - $latest_plugin = $plugin_path; - } - - return $latest_plugin; - } - - /** - * Gets the path to the autoloader. - * - * @param string $plugin_path The path to the plugin. - * - * @return string - */ - public function get_autoloader_path( $plugin_path ) { - return trailingslashit( $plugin_path ) . 'vendor/autoload_packages.php'; - } - - /** - * Gets the version for the autoloader. - * - * @param string $plugin_path The path to the plugin. - * - * @return string|null - */ - public function get_autoloader_version( $plugin_path ) { - $classmap = trailingslashit( $plugin_path ) . 'vendor/composer/jetpack_autoload_classmap.php'; - if ( ! file_exists( $classmap ) ) { - return null; - } - - $classmap = require $classmap; - if ( isset( $classmap[ AutoloadGenerator::class ] ) ) { - return $classmap[ AutoloadGenerator::class ]['version']; - } - - return null; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-autoloader.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-autoloader.php deleted file mode 100644 index 94508e41..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-autoloader.php +++ /dev/null @@ -1,93 +0,0 @@ -get( Autoloader_Handler::class ); - - // If the autoloader is already initializing it means that it has included us as the latest. - $was_included_by_autoloader = $autoloader_handler->is_initializing(); - - /** @var Plugin_Locator $plugin_locator */ - $plugin_locator = $container->get( Plugin_Locator::class ); - - /** @var Plugins_Handler $plugins_handler */ - $plugins_handler = $container->get( Plugins_Handler::class ); - - // The current plugin is the one that we are attempting to initialize here. - $current_plugin = $plugin_locator->find_current_plugin(); - - // The active plugins are those that we were able to discover on the site. This list will not - // include mu-plugins, those activated by code, or those who are hidden by filtering. We also - // want to take care to not consider the current plugin unknown if it was included by an - // autoloader. This avoids the case where a plugin will be marked "active" while deactivated - // due to it having the latest autoloader. - $active_plugins = $plugins_handler->get_active_plugins( true, ! $was_included_by_autoloader ); - - // The cached plugins are all of those that were active or discovered by the autoloader during a previous request. - // Note that it's possible this list will include plugins that have since been deactivated, but after a request - // the cache should be updated and the deactivated plugins will be removed. - $cached_plugins = $plugins_handler->get_cached_plugins(); - - // We combine the active list and cached list to preemptively load classes for plugins that are - // presently unknown but will be loaded during the request. While this may result in us considering packages in - // deactivated plugins there shouldn't be any problems as a result and the eventual consistency is sufficient. - $all_plugins = array_merge( $active_plugins, $cached_plugins ); - - // In particular we also include the current plugin to address the case where it is the latest autoloader - // but also unknown (and not cached). We don't want it in the active list because we don't know that it - // is active but we need it in the all plugins list so that it is considered by the autoloader. - $all_plugins[] = $current_plugin; - - // We require uniqueness in the array to avoid processing the same plugin more than once. - $all_plugins = array_values( array_unique( $all_plugins ) ); - - /** @var Latest_Autoloader_Guard $guard */ - $guard = $container->get( Latest_Autoloader_Guard::class ); - if ( $guard->should_stop_init( $current_plugin, $all_plugins, $was_included_by_autoloader ) ) { - return; - } - - // Initialize the autoloader using the handler now that we're ready. - $autoloader_handler->activate_autoloader( $all_plugins ); - - /** @var Hook_Manager $hook_manager */ - $hook_manager = $container->get( Hook_Manager::class ); - - // Register a shutdown handler to clean up the autoloader. - $hook_manager->add_action( 'shutdown', new Shutdown_Handler( $plugins_handler, $cached_plugins, $was_included_by_autoloader ) ); - - // Register a plugins_loaded handler to check for conflicting autoloaders. - $hook_manager->add_action( 'plugins_loaded', array( $guard, 'check_for_conflicting_autoloaders' ), 1 ); - - // phpcs:enable Generic.Commenting.DocComment.MissingShort - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-container.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-container.php deleted file mode 100644 index 54bc9214..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-container.php +++ /dev/null @@ -1,150 +0,0 @@ - 'Hook_Manager', - ); - - /** - * A map of all the dependencies we've registered with the container and created. - * - * @var array - */ - protected $dependencies; - - /** - * The constructor. - */ - public function __construct() { - $this->dependencies = array(); - - $this->register_shared_dependencies(); - $this->register_dependencies(); - $this->initialize_globals(); - } - - /** - * Gets a dependency out of the container. - * - * @param string $class The class to fetch. - * - * @return mixed - * @throws \InvalidArgumentException When a class that isn't registered with the container is fetched. - */ - public function get( $class ) { - if ( ! isset( $this->dependencies[ $class ] ) ) { - throw new \InvalidArgumentException( "Class '$class' is not registered with the container." ); - } - - return $this->dependencies[ $class ]; - } - - /** - * Registers all of the dependencies that are shared between all instances of the autoloader. - */ - private function register_shared_dependencies() { - global $jetpack_autoloader_container_shared; - if ( ! isset( $jetpack_autoloader_container_shared ) ) { - $jetpack_autoloader_container_shared = array(); - } - - $key = self::SHARED_DEPENDENCY_KEYS[ Hook_Manager::class ]; - if ( ! isset( $jetpack_autoloader_container_shared[ $key ] ) ) { - require_once __DIR__ . '/class-hook-manager.php'; - $jetpack_autoloader_container_shared[ $key ] = new Hook_Manager(); - } - $this->dependencies[ Hook_Manager::class ] = &$jetpack_autoloader_container_shared[ $key ]; - } - - /** - * Registers all of the dependencies with the container. - */ - private function register_dependencies() { - require_once __DIR__ . '/class-path-processor.php'; - $this->dependencies[ Path_Processor::class ] = new Path_Processor(); - - require_once __DIR__ . '/class-plugin-locator.php'; - $this->dependencies[ Plugin_Locator::class ] = new Plugin_Locator( - $this->get( Path_Processor::class ) - ); - - require_once __DIR__ . '/class-version-selector.php'; - $this->dependencies[ Version_Selector::class ] = new Version_Selector(); - - require_once __DIR__ . '/class-autoloader-locator.php'; - $this->dependencies[ Autoloader_Locator::class ] = new Autoloader_Locator( - $this->get( Version_Selector::class ) - ); - - require_once __DIR__ . '/class-php-autoloader.php'; - $this->dependencies[ PHP_Autoloader::class ] = new PHP_Autoloader(); - - require_once __DIR__ . '/class-manifest-reader.php'; - $this->dependencies[ Manifest_Reader::class ] = new Manifest_Reader( - $this->get( Version_Selector::class ) - ); - - require_once __DIR__ . '/class-plugins-handler.php'; - $this->dependencies[ Plugins_Handler::class ] = new Plugins_Handler( - $this->get( Plugin_Locator::class ), - $this->get( Path_Processor::class ) - ); - - require_once __DIR__ . '/class-autoloader-handler.php'; - $this->dependencies[ Autoloader_Handler::class ] = new Autoloader_Handler( - $this->get( PHP_Autoloader::class ), - $this->get( Hook_Manager::class ), - $this->get( Manifest_Reader::class ), - $this->get( Version_Selector::class ) - ); - - require_once __DIR__ . '/class-latest-autoloader-guard.php'; - $this->dependencies[ Latest_Autoloader_Guard::class ] = new Latest_Autoloader_Guard( - $this->get( Plugins_Handler::class ), - $this->get( Autoloader_Handler::class ), - $this->get( Autoloader_Locator::class ) - ); - - // Register any classes that we will use elsewhere. - require_once __DIR__ . '/class-version-loader.php'; - require_once __DIR__ . '/class-shutdown-handler.php'; - } - - /** - * Initializes any of the globals needed by the autoloader. - */ - private function initialize_globals() { - /* - * This global was retired in version 2.9. The value is set to 'false' to maintain - * compatibility with older versions of the autoloader. - */ - global $jetpack_autoloader_including_latest; - $jetpack_autoloader_including_latest = false; - - // Not all plugins can be found using the locator. In cases where a plugin loads the autoloader - // but was not discoverable, we will record them in this array to track them as "active". - global $jetpack_autoloader_activating_plugins_paths; - if ( ! isset( $jetpack_autoloader_activating_plugins_paths ) ) { - $jetpack_autoloader_activating_plugins_paths = array(); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-hook-manager.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-hook-manager.php deleted file mode 100644 index 7e72d956..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-hook-manager.php +++ /dev/null @@ -1,76 +0,0 @@ -registered_hooks = array(); - } - - /** - * Adds an action to WordPress and registers it internally. - * - * @param string $tag The name of the action which is hooked. - * @param callable $callable The function to call. - * @param int $priority Used to specify the priority of the action. - * @param int $accepted_args Used to specify the number of arguments the callable accepts. - */ - public function add_action( $tag, $callable, $priority = 10, $accepted_args = 1 ) { - $this->registered_hooks[ $tag ][] = array( - 'priority' => $priority, - 'callable' => $callable, - ); - - add_action( $tag, $callable, $priority, $accepted_args ); - } - - /** - * Adds a filter to WordPress and registers it internally. - * - * @param string $tag The name of the filter which is hooked. - * @param callable $callable The function to call. - * @param int $priority Used to specify the priority of the filter. - * @param int $accepted_args Used to specify the number of arguments the callable accepts. - */ - public function add_filter( $tag, $callable, $priority = 10, $accepted_args = 1 ) { - $this->registered_hooks[ $tag ][] = array( - 'priority' => $priority, - 'callable' => $callable, - ); - - add_filter( $tag, $callable, $priority, $accepted_args ); - } - - /** - * Removes all of the registered hooks. - */ - public function reset() { - foreach ( $this->registered_hooks as $tag => $hooks ) { - foreach ( $hooks as $hook ) { - remove_filter( $tag, $hook['callable'], $hook['priority'] ); - } - } - $this->registered_hooks = array(); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-latest-autoloader-guard.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-latest-autoloader-guard.php deleted file mode 100644 index ff4166cf..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-latest-autoloader-guard.php +++ /dev/null @@ -1,165 +0,0 @@ -plugins_handler = $plugins_handler; - $this->autoloader_handler = $autoloader_handler; - $this->autoloader_locator = $autoloader_locator; - } - - /** - * Indicates whether or not the autoloader should be initialized. Note that this function - * has the side-effect of actually loading the latest autoloader in the event that this - * is not it. - * - * @param string $current_plugin The current plugin we're checking. - * @param string[] $plugins The active plugins to check for autoloaders in. - * @param bool $was_included_by_autoloader Indicates whether or not this autoloader was included by another. - * - * @return bool True if we should stop initialization, otherwise false. - */ - public function should_stop_init( $current_plugin, $plugins, $was_included_by_autoloader ) { - global $jetpack_autoloader_latest_version; - - // We need to reset the autoloader when the plugins change because - // that means the autoloader was generated with a different list. - if ( $this->plugins_handler->have_plugins_changed( $plugins ) ) { - $this->autoloader_handler->reset_autoloader(); - } - - // When the latest autoloader has already been found we don't need to search for it again. - // We should take care however because this will also trigger if the autoloader has been - // included by an older one. - if ( isset( $jetpack_autoloader_latest_version ) && ! $was_included_by_autoloader ) { - return true; - } - - $latest_plugin = $this->autoloader_locator->find_latest_autoloader( $plugins, $jetpack_autoloader_latest_version ); - if ( isset( $latest_plugin ) && $latest_plugin !== $current_plugin ) { - require $this->autoloader_locator->get_autoloader_path( $latest_plugin ); - return true; - } - - return false; - } - - /** - * Check for conflicting autoloaders. - * - * A common source of strange and confusing problems is when another plugin - * registers a Composer autoloader at a higher priority that us. If enabled, - * check for this problem and warn about it. - * - * Called from the plugins_loaded hook. - * - * @since 3.1.0 - * @return void - */ - public function check_for_conflicting_autoloaders() { - if ( ! defined( 'JETPACK_AUTOLOAD_DEBUG_CONFLICTING_LOADERS' ) || ! JETPACK_AUTOLOAD_DEBUG_CONFLICTING_LOADERS ) { - return; - } - - global $jetpack_autoloader_loader; - if ( ! isset( $jetpack_autoloader_loader ) ) { - return; - } - $prefixes = array(); - foreach ( ( $jetpack_autoloader_loader->get_class_map() ?? array() ) as $classname => $data ) { - $parts = explode( '\\', trim( $classname, '\\' ) ); - array_pop( $parts ); - while ( $parts ) { - $prefixes[ implode( '\\', $parts ) . '\\' ] = true; - array_pop( $parts ); - } - } - foreach ( ( $jetpack_autoloader_loader->get_psr4_map() ?? array() ) as $prefix => $data ) { - $parts = explode( '\\', trim( $prefix, '\\' ) ); - while ( $parts ) { - $prefixes[ implode( '\\', $parts ) . '\\' ] = true; - array_pop( $parts ); - } - } - - $autoload_chain = spl_autoload_functions(); - if ( ! $autoload_chain ) { - return; - } - - foreach ( $autoload_chain as $autoloader ) { - // No need to check anything after us. - if ( is_array( $autoloader ) && is_string( $autoloader[0] ) && substr( $autoloader[0], 0, strlen( __NAMESPACE__ ) + 1 ) === __NAMESPACE__ . '\\' ) { - break; - } - - // We can check Composer autoloaders easily enough. - if ( is_array( $autoloader ) && $autoloader[0] instanceof \Composer\Autoload\ClassLoader && is_callable( array( $autoloader[0], 'getPrefixesPsr4' ) ) ) { - $composer_autoloader = $autoloader[0]; - foreach ( $composer_autoloader->getClassMap() as $classname => $path ) { - if ( $jetpack_autoloader_loader->find_class_file( $classname ) ) { - $msg = "A Composer autoloader is registered with a higher priority than the Jetpack Autoloader and would also handle some of the classes we handle (e.g. $classname => $path). This may cause strange and confusing problems."; - wp_trigger_error( '', $msg ); - continue 2; - } - } - foreach ( $composer_autoloader->getPrefixesPsr4() as $prefix => $paths ) { - if ( isset( $prefixes[ $prefix ] ) ) { - $path = array_pop( $paths ); - $msg = "A Composer autoloader is registered with a higher priority than the Jetpack Autoloader and would also handle some of the namespaces we handle (e.g. $prefix => $path). This may cause strange and confusing problems."; - wp_trigger_error( '', $msg ); - continue 2; - } - } - foreach ( $composer_autoloader->getPrefixes() as $prefix => $paths ) { - if ( isset( $prefixes[ $prefix ] ) ) { - $path = array_pop( $paths ); - $msg = "A Composer autoloader is registered with a higher priority than the Jetpack Autoloader and would also handle some of the namespaces we handle (e.g. $prefix => $path). This may cause strange and confusing problems."; - wp_trigger_error( '', $msg ); - continue 2; - } - } - } - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-manifest-reader.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-manifest-reader.php deleted file mode 100644 index e42d1509..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-manifest-reader.php +++ /dev/null @@ -1,99 +0,0 @@ -version_selector = $version_selector; - } - - /** - * Reads all of the manifests in the given plugin paths. - * - * @param array $plugin_paths The paths to the plugins we're loading the manifest in. - * @param string $manifest_path The path that we're loading the manifest from in each plugin. - * @param array $path_map The path map to add the contents of the manifests to. - * - * @return array $path_map The path map we've built using the manifests in each plugin. - */ - public function read_manifests( $plugin_paths, $manifest_path, &$path_map ) { - $file_paths = array_map( - function ( $path ) use ( $manifest_path ) { - return trailingslashit( $path ) . $manifest_path; - }, - $plugin_paths - ); - - foreach ( $file_paths as $path ) { - $this->register_manifest( $path, $path_map ); - } - - return $path_map; - } - - /** - * Registers a plugin's manifest file with the path map. - * - * @param string $manifest_path The absolute path to the manifest that we're loading. - * @param array $path_map The path map to add the contents of the manifest to. - */ - protected function register_manifest( $manifest_path, &$path_map ) { - if ( ! is_readable( $manifest_path ) ) { - return; - } - - $manifest = require $manifest_path; - if ( ! is_array( $manifest ) ) { - return; - } - - foreach ( $manifest as $key => $data ) { - $this->register_record( $key, $data, $path_map ); - } - } - - /** - * Registers an entry from the manifest in the path map. - * - * @param string $key The identifier for the entry we're registering. - * @param array $data The data for the entry we're registering. - * @param array $path_map The path map to add the contents of the manifest to. - */ - protected function register_record( $key, $data, &$path_map ) { - if ( isset( $path_map[ $key ]['version'] ) ) { - $selected_version = $path_map[ $key ]['version']; - } else { - $selected_version = null; - } - - if ( $this->version_selector->is_version_update_required( $selected_version, $data['version'] ) ) { - $path_map[ $key ] = array( - 'version' => $data['version'], - 'path' => $data['path'], - ); - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-path-processor.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-path-processor.php deleted file mode 100644 index 2fa5014f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-path-processor.php +++ /dev/null @@ -1,194 +0,0 @@ -get_normalized_constants(); - foreach ( $constants as $constant => $constant_path ) { - $len = strlen( $constant_path ); - if ( substr( $path, 0, $len ) !== $constant_path ) { - continue; - } - - return substr_replace( $path, '{{' . $constant . '}}', 0, $len ); - } - - return $path; - } - - /** - * Given a path this will replace any of the path constant tokens with the expanded path. - * - * @param string $tokenized_path The path we want to process. - * - * @return string The expanded path. - */ - public function untokenize_path_constants( $tokenized_path ) { - $tokenized_path = wp_normalize_path( $tokenized_path ); - - $constants = $this->get_normalized_constants(); - foreach ( $constants as $constant => $constant_path ) { - $constant = '{{' . $constant . '}}'; - - $len = strlen( $constant ); - if ( substr( $tokenized_path, 0, $len ) !== $constant ) { - continue; - } - - return $this->get_real_path( substr_replace( $tokenized_path, $constant_path, 0, $len ) ); - } - - return $tokenized_path; - } - - /** - * Given a file and an array of places it might be, this will find the absolute path and return it. - * - * @param string $file The plugin or theme file to resolve. - * @param array $directories_to_check The directories we should check for the file if it isn't an absolute path. - * - * @return string|false Returns the absolute path to the directory, otherwise false. - */ - public function find_directory_with_autoloader( $file, $directories_to_check ) { - $file = wp_normalize_path( $file ); - - if ( ! $this->is_absolute_path( $file ) ) { - $file = $this->find_absolute_plugin_path( $file, $directories_to_check ); - if ( ! isset( $file ) ) { - return false; - } - } - - // We need the real path for consistency with __DIR__ paths. - $file = $this->get_real_path( $file ); - - // phpcs:disable WordPress.PHP.NoSilencedErrors.Discouraged - $directory = @is_file( $file ) ? dirname( $file ) : $file; - if ( ! @is_file( $directory . '/vendor/composer/jetpack_autoload_classmap.php' ) ) { - return false; - } - // phpcs:enable WordPress.PHP.NoSilencedErrors.Discouraged - - return $directory; - } - - /** - * Fetches an array of normalized paths keyed by the constant they came from. - * - * @return string[] The normalized paths keyed by the constant. - */ - private function get_normalized_constants() { - $raw_constants = array( - // Order the constants from most-specific to least-specific. - 'WP_PLUGIN_DIR', - 'WPMU_PLUGIN_DIR', - 'WP_CONTENT_DIR', - 'ABSPATH', - ); - - $constants = array(); - foreach ( $raw_constants as $raw ) { - if ( ! defined( $raw ) ) { - continue; - } - - $path = wp_normalize_path( constant( $raw ) ); - if ( isset( $path ) ) { - $constants[ $raw ] = $path; - } - } - - return $constants; - } - - /** - * Indicates whether or not a path is absolute. - * - * @param string $path The path to check. - * - * @return bool True if the path is absolute, otherwise false. - */ - private function is_absolute_path( $path ) { - if ( empty( $path ) || 0 === strlen( $path ) || '.' === $path[0] ) { - return false; - } - - // Absolute paths on Windows may begin with a drive letter. - if ( preg_match( '/^[a-zA-Z]:[\/\\\\]/', $path ) ) { - return true; - } - - // A path starting with / or \ is absolute; anything else is relative. - return ( '/' === $path[0] || '\\' === $path[0] ); - } - - /** - * Given a file and a list of directories to check, this method will try to figure out - * the absolute path to the file in question. - * - * @param string $normalized_path The normalized path to the plugin or theme file to resolve. - * @param array $directories_to_check The directories we should check for the file if it isn't an absolute path. - * - * @return string|null The absolute path to the plugin file, otherwise null. - */ - private function find_absolute_plugin_path( $normalized_path, $directories_to_check ) { - // We're only able to find the absolute path for plugin/theme PHP files. - if ( ! is_string( $normalized_path ) || '.php' !== substr( $normalized_path, -4 ) ) { - return null; - } - - foreach ( $directories_to_check as $directory ) { - $normalized_check = wp_normalize_path( trailingslashit( $directory ) ) . $normalized_path; - // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged - if ( @is_file( $normalized_check ) ) { - return $normalized_check; - } - } - - return null; - } - - /** - * Given a path this will figure out the real path that we should be using. - * - * @param string $path The path to resolve. - * - * @return string The resolved path. - */ - private function get_real_path( $path ) { - // We want to resolve symbolic links for consistency with __DIR__ paths. - // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged - $real_path = @realpath( $path ); - if ( false === $real_path ) { - // Let the autoloader deal with paths that don't exist. - $real_path = $path; - } - - // Using realpath will make it platform-specific so we must normalize it after. - if ( $path !== $real_path ) { - $real_path = wp_normalize_path( $real_path ); - } - - return $real_path; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-php-autoloader.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-php-autoloader.php deleted file mode 100644 index 22de29a4..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-php-autoloader.php +++ /dev/null @@ -1,105 +0,0 @@ -unregister_autoloader(); - - // Set the global so that it can be used to load classes. - global $jetpack_autoloader_loader; - $jetpack_autoloader_loader = $version_loader; - - // Ensure that the autoloader is first to avoid contention with others. - spl_autoload_register( array( self::class, 'load_class' ), true, true ); - } - - /** - * Unregisters the active autoloader so that it will no longer autoload classes. - */ - public function unregister_autoloader() { - // Remove any v2 autoloader that we've already registered. - $autoload_chain = spl_autoload_functions(); - if ( ! $autoload_chain ) { - return; - } - foreach ( $autoload_chain as $autoloader ) { - // We can identify a v2 autoloader using the namespace. - $namespace_check = null; - - // Functions are recorded as strings. - if ( is_string( $autoloader ) ) { - $namespace_check = $autoloader; - } elseif ( is_array( $autoloader ) && is_string( $autoloader[0] ) ) { - // Static method calls have the class as the first array element. - $namespace_check = $autoloader[0]; - } else { - // Since the autoloader has only ever been a function or a static method we don't currently need to check anything else. - continue; - } - - // Check for the namespace without the generated suffix. - if ( 'Automattic\\Jetpack\\Autoloader\\jp' === substr( $namespace_check, 0, 32 ) ) { - spl_autoload_unregister( $autoloader ); - } - } - - // Clear the global now that the autoloader has been unregistered. - global $jetpack_autoloader_loader; - $jetpack_autoloader_loader = null; - } - - /** - * Loads a class file if one could be found. - * - * Note: This function is static so that the autoloader can be easily unregistered. If - * it was a class method we would have to unwrap the object to check the namespace. - * - * @param string $class_name The name of the class to autoload. - * - * @return bool Indicates whether or not a class file was loaded. - */ - public static function load_class( $class_name ) { - global $jetpack_autoloader_loader; - if ( ! isset( $jetpack_autoloader_loader ) ) { - return false; - } - - $file = $jetpack_autoloader_loader->find_class_file( $class_name ); - if ( ! isset( $file ) ) { - return false; - } - - // A common source of strange and confusing problems is when a vendor - // file is autoloaded before all plugins have had a chance to register - // with the autoloader. Detect that, if a development constant is set. - if ( defined( 'JETPACK_AUTOLOAD_DEBUG_EARLY_LOADS' ) && JETPACK_AUTOLOAD_DEBUG_EARLY_LOADS && - ( strpos( $file, '/vendor/' ) !== false || strpos( $file, '/jetpack_vendor/' ) !== false ) && - is_callable( 'did_action' ) && ! did_action( 'plugins_loaded' ) - ) { - // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_wp_debug_backtrace_summary -- This is a debug log message. - $msg = "Jetpack Autoloader: Autoloading `$class_name` before the plugins_loaded hook may cause strange and confusing problems. " . wp_debug_backtrace_summary( '', 1 ); - wp_trigger_error( '', $msg ); - } - - require $file; - return true; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-plugin-locator.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-plugin-locator.php deleted file mode 100644 index a72d0a01..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-plugin-locator.php +++ /dev/null @@ -1,153 +0,0 @@ -path_processor = $path_processor; - } - - /** - * Finds the path to the current plugin. - * - * @return string $path The path to the current plugin. - * - * @throws \RuntimeException If the current plugin does not have an autoloader. - */ - public function find_current_plugin() { - // Escape from `vendor/__DIR__` to root plugin directory. - $plugin_directory = dirname( __DIR__, 2 ); - - // Use the path processor to ensure that this is an autoloader we're referencing. - $path = $this->path_processor->find_directory_with_autoloader( $plugin_directory, array() ); - if ( false === $path ) { - throw new \RuntimeException( 'Failed to locate plugin ' . $plugin_directory ); - } - - return $path; - } - - /** - * Checks a given option for plugin paths. - * - * @param string $option_name The option that we want to check for plugin information. - * @param bool $site_option Indicates whether or not we want to check the site option. - * - * @return array $plugin_paths The list of absolute paths we've found. - */ - public function find_using_option( $option_name, $site_option = false ) { - $raw = $site_option ? get_site_option( $option_name ) : get_option( $option_name ); - if ( false === $raw ) { - return array(); - } - - return $this->convert_plugins_to_paths( $raw ); - } - - /** - * Checks for plugins in the `action` request parameter. - * - * @param string[] $allowed_actions The actions that we're allowed to return plugins for. - * - * @return array $plugin_paths The list of absolute paths we've found. - */ - public function find_using_request_action( $allowed_actions ) { - /** - * Note: we're not actually checking the nonce here because it's too early - * in the execution. The pluggable functions are not yet loaded to give - * plugins a chance to plug their versions. Therefore we're doing the bare - * minimum: checking whether the nonce exists and it's in the right place. - * The request will fail later if the nonce doesn't pass the check. - */ - if ( empty( $_REQUEST['_wpnonce'] ) ) { - return array(); - } - - // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Validated just below. - $action = isset( $_REQUEST['action'] ) ? wp_unslash( $_REQUEST['action'] ) : false; - if ( ! in_array( $action, $allowed_actions, true ) ) { - return array(); - } - - $plugin_slugs = array(); - switch ( $action ) { - case 'activate': - case 'deactivate': - if ( empty( $_REQUEST['plugin'] ) ) { - break; - } - - // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Validated by convert_plugins_to_paths. - $plugin_slugs[] = wp_unslash( $_REQUEST['plugin'] ); - break; - - case 'activate-selected': - case 'deactivate-selected': - if ( empty( $_REQUEST['checked'] ) ) { - break; - } - - // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Validated by convert_plugins_to_paths. - $plugin_slugs = wp_unslash( $_REQUEST['checked'] ); - break; - } - - return $this->convert_plugins_to_paths( $plugin_slugs ); - } - - /** - * Given an array of plugin slugs or paths, this will convert them to absolute paths and filter - * out the plugins that are not directory plugins. Note that array keys will also be included - * if they are plugin paths! - * - * @param string[] $plugins Plugin paths or slugs to filter. - * - * @return string[] - */ - private function convert_plugins_to_paths( $plugins ) { - if ( ! is_array( $plugins ) || empty( $plugins ) ) { - return array(); - } - - // We're going to look for plugins in the standard directories. - $path_constants = array( WP_PLUGIN_DIR, WPMU_PLUGIN_DIR ); - - $plugin_paths = array(); - foreach ( $plugins as $key => $value ) { - $path = $this->path_processor->find_directory_with_autoloader( $key, $path_constants ); - if ( $path ) { - $plugin_paths[] = $path; - } - - $path = $this->path_processor->find_directory_with_autoloader( $value, $path_constants ); - if ( $path ) { - $plugin_paths[] = $path; - } - } - - return $plugin_paths; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-plugins-handler.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-plugins-handler.php deleted file mode 100644 index e6e03871..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-plugins-handler.php +++ /dev/null @@ -1,164 +0,0 @@ -plugin_locator = $plugin_locator; - $this->path_processor = $path_processor; - } - - /** - * Gets all of the active plugins we can find. - * - * @param bool $include_deactivating When true, plugins deactivating this request will be considered active. - * @param bool $record_unknown When true, the current plugin will be marked as active and recorded when unknown. - * - * @return string[] - */ - public function get_active_plugins( $include_deactivating, $record_unknown ) { - global $jetpack_autoloader_activating_plugins_paths; - - // We're going to build a unique list of plugins from a few different sources - // to find all of our "active" plugins. While we need to return an integer - // array, we're going to use an associative array internally to reduce - // the amount of time that we're going to spend checking uniqueness - // and merging different arrays together to form the output. - $active_plugins = array(); - - // Make sure that plugins which have activated this request are considered as "active" even though - // they probably won't be present in any option. - if ( is_array( $jetpack_autoloader_activating_plugins_paths ) ) { - foreach ( $jetpack_autoloader_activating_plugins_paths as $path ) { - $active_plugins[ $path ] = $path; - } - } - - // This option contains all of the plugins that have been activated. - $plugins = $this->plugin_locator->find_using_option( 'active_plugins' ); - foreach ( $plugins as $path ) { - $active_plugins[ $path ] = $path; - } - - // This option contains all of the multisite plugins that have been activated. - if ( is_multisite() ) { - $plugins = $this->plugin_locator->find_using_option( 'active_sitewide_plugins', true ); - foreach ( $plugins as $path ) { - $active_plugins[ $path ] = $path; - } - } - - // These actions contain plugins that are being activated/deactivated during this request. - $plugins = $this->plugin_locator->find_using_request_action( array( 'activate', 'activate-selected', 'deactivate', 'deactivate-selected' ) ); - foreach ( $plugins as $path ) { - $active_plugins[ $path ] = $path; - } - - // When the current plugin isn't considered "active" there's a problem. - // Since we're here, the plugin is active and currently being loaded. - // We can support this case (mu-plugins and non-standard activation) - // by adding the current plugin to the active list and marking it - // as an unknown (activating) plugin. This also has the benefit - // of causing a reset because the active plugins list has - // been changed since it was saved in the global. - $current_plugin = $this->plugin_locator->find_current_plugin(); - if ( $record_unknown && ! in_array( $current_plugin, $active_plugins, true ) ) { - $active_plugins[ $current_plugin ] = $current_plugin; - $jetpack_autoloader_activating_plugins_paths[] = $current_plugin; - } - - // When deactivating plugins aren't desired we should entirely remove them from the active list. - if ( ! $include_deactivating ) { - // These actions contain plugins that are being deactivated during this request. - $plugins = $this->plugin_locator->find_using_request_action( array( 'deactivate', 'deactivate-selected' ) ); - foreach ( $plugins as $path ) { - unset( $active_plugins[ $path ] ); - } - } - - // Transform the array so that we don't have to worry about the keys interacting with other array types later. - return array_values( $active_plugins ); - } - - /** - * Gets all of the cached plugins if there are any. - * - * @return string[] - */ - public function get_cached_plugins() { - $cached = get_transient( self::TRANSIENT_KEY ); - if ( ! is_array( $cached ) || empty( $cached ) ) { - return array(); - } - - // We need to expand the tokens to an absolute path for this webserver. - return array_map( array( $this->path_processor, 'untokenize_path_constants' ), $cached ); - } - - /** - * Saves the plugin list to the cache. - * - * @param array $plugins The plugin list to save to the cache. - */ - public function cache_plugins( $plugins ) { - // We store the paths in a tokenized form so that that webservers with different absolute paths don't break. - $plugins = array_map( array( $this->path_processor, 'tokenize_path_constants' ), $plugins ); - - set_transient( self::TRANSIENT_KEY, $plugins ); - } - - /** - * Checks to see whether or not the plugin list given has changed when compared to the - * shared `$jetpack_autoloader_cached_plugin_paths` global. This allows us to deal - * with cases where the active list may change due to filtering.. - * - * @param string[] $plugins The plugins list to check against the global cache. - * - * @return bool True if the plugins have changed, otherwise false. - */ - public function have_plugins_changed( $plugins ) { - global $jetpack_autoloader_cached_plugin_paths; - - if ( $jetpack_autoloader_cached_plugin_paths !== $plugins ) { - $jetpack_autoloader_cached_plugin_paths = $plugins; - return true; - } - - return false; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-shutdown-handler.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-shutdown-handler.php deleted file mode 100644 index 3d9c7e9f..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-shutdown-handler.php +++ /dev/null @@ -1,92 +0,0 @@ -plugins_handler = $plugins_handler; - $this->cached_plugins = $cached_plugins; - $this->was_included_by_autoloader = $was_included_by_autoloader; - } - - /** - * Handles the shutdown of the autoloader. - */ - public function __invoke() { - // Don't save a broken cache if an error happens during some plugin's initialization. - if ( ! did_action( 'plugins_loaded' ) ) { - // Ensure that the cache is emptied to prevent consecutive failures if the cache is to blame. - if ( ! empty( $this->cached_plugins ) ) { - $this->plugins_handler->cache_plugins( array() ); - } - - return; - } - - // Load the active plugins fresh since the list we pulled earlier might not contain - // plugins that were activated but did not reset the autoloader. This happens - // when a plugin is in the cache but not "active" when the autoloader loads. - // We also want to make sure that plugins which are deactivating are not - // considered "active" so that they will be removed from the cache now. - try { - $active_plugins = $this->plugins_handler->get_active_plugins( false, ! $this->was_included_by_autoloader ); - } catch ( \Exception $ex ) { - // When the package is deleted before shutdown it will throw an exception. - // In the event this happens we should erase the cache. - if ( ! empty( $this->cached_plugins ) ) { - $this->plugins_handler->cache_plugins( array() ); - } - return; - } - - // The paths should be sorted for easy comparisons with those loaded from the cache. - // Note we don't need to sort the cached entries because they're already sorted. - sort( $active_plugins ); - - // We don't want to waste time saving a cache that hasn't changed. - if ( $this->cached_plugins === $active_plugins ) { - return; - } - - $this->plugins_handler->cache_plugins( $active_plugins ); - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-version-loader.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-version-loader.php deleted file mode 100644 index b508506a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-version-loader.php +++ /dev/null @@ -1,184 +0,0 @@ -version_selector = $version_selector; - $this->classmap = $classmap; - $this->psr4_map = $psr4_map; - $this->filemap = $filemap; - } - - /** - * Fetch the classmap. - * - * @since 3.1.0 - * @return array - */ - public function get_class_map() { - return $this->classmap; - } - - /** - * Fetch the psr-4 mappings. - * - * @since 3.1.0 - * @return array - */ - public function get_psr4_map() { - return $this->psr4_map; - } - - /** - * Finds the file path for the given class. - * - * @param string $class_name The class to find. - * - * @return string|null $file_path The path to the file if found, null if no class was found. - */ - public function find_class_file( $class_name ) { - $data = $this->select_newest_file( - $this->classmap[ $class_name ] ?? null, - $this->find_psr4_file( $class_name ) - ); - if ( ! isset( $data ) ) { - return null; - } - - return $data['path']; - } - - /** - * Load all of the files in the filemap. - */ - public function load_filemap() { - if ( empty( $this->filemap ) ) { - return; - } - - foreach ( $this->filemap as $file_identifier => $file_data ) { - if ( empty( $GLOBALS['__composer_autoload_files'][ $file_identifier ] ) ) { - require_once $file_data['path']; - - $GLOBALS['__composer_autoload_files'][ $file_identifier ] = true; - } - } - } - - /** - * Compares different class sources and returns the newest. - * - * @param array|null $classmap_data The classmap class data. - * @param array|null $psr4_data The PSR-4 class data. - * - * @return array|null $data - */ - private function select_newest_file( $classmap_data, $psr4_data ) { - if ( ! isset( $classmap_data ) ) { - return $psr4_data; - } elseif ( ! isset( $psr4_data ) ) { - return $classmap_data; - } - - if ( $this->version_selector->is_version_update_required( $classmap_data['version'], $psr4_data['version'] ) ) { - return $psr4_data; - } - - return $classmap_data; - } - - /** - * Finds the file for a given class in a PSR-4 namespace. - * - * @param string $class_name The class to find. - * - * @return array|null $data The version and path path to the file if found, null otherwise. - */ - private function find_psr4_file( $class_name ) { - if ( empty( $this->psr4_map ) ) { - return null; - } - - // Don't bother with classes that have no namespace. - $class_index = strrpos( $class_name, '\\' ); - if ( ! $class_index ) { - return null; - } - $class_for_path = str_replace( '\\', '/', $class_name ); - - // Search for the namespace by iteratively cutting off the last segment until - // we find a match. This allows us to check the most-specific namespaces - // first as well as minimize the amount of time spent looking. - for ( - $class_namespace = substr( $class_name, 0, $class_index ); - ! empty( $class_namespace ); - $class_namespace = substr( $class_namespace, 0, strrpos( $class_namespace, '\\' ) ) - ) { - $namespace = $class_namespace . '\\'; - if ( ! isset( $this->psr4_map[ $namespace ] ) ) { - continue; - } - $data = $this->psr4_map[ $namespace ]; - - foreach ( $data['path'] as $path ) { - $path .= '/' . substr( $class_for_path, strlen( $namespace ) ) . '.php'; - if ( file_exists( $path ) ) { - return array( - 'version' => $data['version'], - 'path' => $path, - ); - } - } - } - - return null; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-version-selector.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-version-selector.php deleted file mode 100644 index 0e57258a..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/jetpack-autoloader/class-version-selector.php +++ /dev/null @@ -1,69 +0,0 @@ -is_dev_version( $selected_version ) ) { - return false; - } - - if ( $this->is_dev_version( $compare_version ) ) { - if ( $use_dev_versions ) { - return true; - } else { - return false; - } - } - - if ( version_compare( $selected_version, $compare_version, '<' ) ) { - return true; - } - - return false; - } - - /** - * Checks whether the given package version is a development version. - * - * @param String $version The package version. - * - * @return bool True if the version is a dev version, else false. - */ - public function is_dev_version( $version ) { - if ( 'dev-' === substr( $version, 0, 4 ) || '9999999-dev' === $version ) { - return true; - } - - return false; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/LICENSE b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/LICENSE deleted file mode 100644 index d6456956..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/NOTICE b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/NOTICE deleted file mode 100644 index 344d6275..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/NOTICE +++ /dev/null @@ -1,2 +0,0 @@ -AhoCorasick PHP Library -Copyright 2015 Ori Livneh diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/bench/bench.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/bench/bench.php deleted file mode 100644 index 499899a8..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/bench/bench.php +++ /dev/null @@ -1,75 +0,0 @@ -searchAndReplace( $text ); - } - $endTime = microtime( true ); - $wallTime = 1000 * ( ( $endTime - $startTime ) / $loops ); - printf( "%-'.40s %.2fms\n", 'MultiStringRepeater::searchAndReplace(): ', $wallTime ); - if ( $profile ) { - $profile = xhprof_disable(); - foreach ( $profile as $func => $data ) { - printf( "%s: %.2f\n", $func, $data['cpu'] / $data['ct'] ); - } - } -} - -if ( function_exists( 'fss_prep_replace' ) && isset( $options['fss'] ) ) { - $fss = fss_prep_replace( $zh2Hant ); - $startTime = microtime( true ); - for ( $i = 0; $i < $loops; $i++ ) { - fss_exec_replace( $fss, $text ); - } - $endTime = microtime( true ); - $wallTime = 1000 * ( ( $endTime - $startTime ) / $loops ); - printf( "%-'.40s %.2fms\n", 'fss_exec_replace(): ', $wallTime ); -} - -if ( isset( $options['strtr'] ) ) { - $startTime = microtime( true ); - for ( $i = 0; $i < $loops; $i++ ) { - strtr( $text, $zh2Hant ); - } - $endTime = microtime( true ); - $wallTime = 1000 * ( ( $endTime - $startTime ) / $loops ); - printf( "%-'.40s %.2fms\n", 'strtr(): ', $wallTime ); -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/bench/check.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/bench/check.php deleted file mode 100644 index 1cb6384e..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/bench/check.php +++ /dev/null @@ -1,42 +0,0 @@ -searchAndReplace( $text ) !== $expected ) { - echo "ERROR\n"; - $status = 1; -} else { - echo "OK\n"; -} - -if ( function_exists( 'fss_exec_replace' ) ) { - echo "fss_exec_replace(): "; - $fss = fss_prep_replace( $zh2Hant ); - if ( fss_exec_replace( $fss, $text ) !== $expected ) { - echo "ERROR\n"; - $status = 1; - } else { - echo "OK\n"; - } -} - -exit( $status ); diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/src/MultiStringMatcher.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/src/MultiStringMatcher.php deleted file mode 100644 index b2953c4d..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/src/MultiStringMatcher.php +++ /dev/null @@ -1,230 +0,0 @@ - - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @file - * @author Ori Livneh - */ - -namespace AhoCorasick; - -/** - * Represents a finite state machine that can find all occurrences - * of a set of search keywords in a body of text. - * - * The time it takes to construct the finite state machine is - * proportional to the sum of the lengths of the search keywords. - * Once constructed, the machine can locate all occurences of all - * search keywords in a body of text in a single pass, making exactly - * one state transition per input character. - * - * This is an implementation of the Aho-Corasick string matching - * algorithm. - * - * Alfred V. Aho and Margaret J. Corasick, "Efficient string matching: - * an aid to bibliographic search", CACM, 18(6):333-340, June 1975. - * - * @link http://xlinux.nist.gov/dads//HTML/ahoCorasick.html - */ -class MultiStringMatcher { - - /** @var string[] The set of keywords to be searched for. **/ - protected $searchKeywords = []; - - /** @var int The number of possible states of the string-matching finite state machine. **/ - protected $numStates = 1; - - /** @var array Mapping of states to outputs. **/ - protected $outputs = []; - - /** @var array Mapping of failure transitions. **/ - protected $noTransitions = []; - - /** @var array Mapping of success transitions. **/ - protected $yesTransitions = []; - - /** - * Constructor. - * - * @param string[] $searchKeywords The set of keywords to be matched. - */ - public function __construct( array $searchKeywords ) { - foreach ( $searchKeywords as $keyword ) { - if ( $keyword !== '' ) { - $this->searchKeywords[$keyword] = strlen( $keyword ); - } - } - - if ( !$this->searchKeywords ) { - trigger_error( __METHOD__ . ': The set of search keywords is empty.', E_USER_WARNING ); - // Unreachable 'return' when PHPUnit detects trigger_error - return; // @codeCoverageIgnore - } - - $this->computeYesTransitions(); - $this->computeNoTransitions(); - } - - /** - * Accessor for the search keywords. - * - * @return string[] Search keywords. - */ - public function getKeywords() { - return array_keys( $this->searchKeywords ); - } - - /** - * Map the current state and input character to the next state. - * - * @param int $currentState The current state of the string-matching - * automaton. - * @param string $inputChar The character the string-matching - * automaton is currently processing. - * @return int The state the automaton should transition to. - */ - public function nextState( $currentState, $inputChar ) { - $initialState = $currentState; - while ( true ) { - $transitions =& $this->yesTransitions[$currentState]; - if ( isset( $transitions[$inputChar] ) ) { - $nextState = $transitions[$inputChar]; - // Avoid failure transitions next time. - if ( $currentState !== $initialState ) { - $this->yesTransitions[$initialState][$inputChar] = $nextState; - } - return $nextState; - } - if ( $currentState === 0 ) { - return 0; - } - $currentState = $this->noTransitions[$currentState]; - } - // Unreachable outside 'while' - } // @codeCoverageIgnore - - /** - * Locate the search keywords in some text. - * - * @param string $text The string to search in. - * @return array[] An array of matches. Each match is a vector - * containing an integer offset and the matched keyword. - * - * @par Example: - * @code - * $keywords = new MultiStringMatcher( array( 'ore', 'hell' ) ); - * $keywords->searchIn( 'She sells sea shells by the sea shore.' ); - * // result: array( array( 15, 'hell' ), array( 34, 'ore' ) ) - * @endcode - */ - public function searchIn( $text ) { - if ( !$this->searchKeywords || $text === '' ) { - return []; // fast path - } - - $state = 0; - $results = []; - $length = strlen( $text ); - - for ( $i = 0; $i < $length; $i++ ) { - $ch = $text[$i]; - $state = $this->nextState( $state, $ch ); - foreach ( $this->outputs[$state] as $match ) { - $offset = $i - $this->searchKeywords[$match] + 1; - $results[] = [ $offset, $match ]; - } - } - - return $results; - } - - /** - * Get the state transitions which the string-matching automaton - * shall make as it advances through input text. - * - * Constructs a directed tree with a root node which represents the - * initial state of the string-matching automaton and from which a - * path exists which spells out each search keyword. - */ - protected function computeYesTransitions() { - $this->yesTransitions = [ [] ]; - $this->outputs = [ [] ]; - foreach ( $this->searchKeywords as $keyword => $length ) { - $state = 0; - for ( $i = 0; $i < $length; $i++ ) { - $ch = $keyword[$i]; - if ( !empty( $this->yesTransitions[$state][$ch] ) ) { - $state = $this->yesTransitions[$state][$ch]; - } else { - $this->yesTransitions[$state][$ch] = $this->numStates; - $this->yesTransitions[] = []; - $this->outputs[] = []; - $state = $this->numStates++; - } - } - - $this->outputs[$state][] = $keyword; - } - } - - /** - * Get the state transitions which the string-matching automaton - * shall make when a partial match proves false. - */ - protected function computeNoTransitions() { - $queue = []; - $this->noTransitions = []; - - foreach ( $this->yesTransitions[0] as $ch => $toState ) { - $queue[] = $toState; - $this->noTransitions[$toState] = 0; - } - - while ( true ) { - $fromState = array_shift( $queue ); - if ( $fromState === null ) { - break; - } - foreach ( $this->yesTransitions[$fromState] as $ch => $toState ) { - $queue[] = $toState; - $state = $this->noTransitions[$fromState]; - - while ( $state !== 0 && empty( $this->yesTransitions[$state][$ch] ) ) { - $state = $this->noTransitions[$state]; - } - - if ( isset( $this->yesTransitions[$state][$ch] ) ) { - $noState = $this->yesTransitions[$state][$ch]; - } else { - $noState = 0; - } - - $this->noTransitions[$toState] = $noState; - $this->outputs[$toState] = array_merge( - $this->outputs[$toState], $this->outputs[$noState] ); - } - } - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/src/MultiStringReplacer.php b/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/src/MultiStringReplacer.php deleted file mode 100644 index 6b7891f6..00000000 --- a/wp-content/upgrade-temp-backup/plugins/jetpack-protect/vendor/wikimedia/aho-corasick/src/MultiStringReplacer.php +++ /dev/null @@ -1,96 +0,0 @@ - - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * @file - * @author Ori Livneh - */ - -namespace AhoCorasick; - -/** - * This class extends MultiStringMatcher, adding search and replace - * functionality. - */ -class MultiStringReplacer extends MultiStringMatcher { - - /** @var array Mapping of states to outputs. **/ - protected $replacePairs = []; - - /** - * Constructor. - * - * @param array $replacePairs array of ( 'from' => 'to' ) replacement pairs. - */ - public function __construct( array $replacePairs ) { - foreach ( $replacePairs as $keyword => $replacement ) { - if ( $keyword !== '' ) { - $this->replacePairs[$keyword] = $replacement; - } - } - parent::__construct( array_keys( $this->replacePairs ) ); - } - - /** - * Search and replace a set of keywords in some text. - * - * @param string $text The string to search in. - * @return string The input text with replacements. - * - * @par Example: - * @code - * $replacer = new MultiStringReplacer( array( 'csh' => 'sea shells' ) ); - * $replacer->searchAndReplace( 'She sells csh by the sea shore.' ); - * // result: 'She sells sea shells by the sea shore.' - * @endcode - */ - public function searchAndReplace( $text ) { - $state = 0; - $length = strlen( $text ); - $matches = []; - for ( $i = 0; $i < $length; $i++ ) { - $ch = $text[$i]; - $state = $this->nextState( $state, $ch ); - foreach ( $this->outputs[$state] as $match ) { - $offset = $i - $this->searchKeywords[$match] + 1; - $matches[$offset] = $match; - } - } - ksort( $matches ); - - $buf = ''; - $lastInsert = 0; - foreach ( $matches as $offset => $match ) { - if ( $offset >= $lastInsert ) { - $buf .= substr( $text, $lastInsert, $offset - $lastInsert ); - $buf .= $this->replacePairs[$match]; - $lastInsert = $offset + $this->searchKeywords[$match]; - } - } - $buf .= substr( $text, $lastInsert ); - - return $buf; - } -} diff --git a/wp-content/upgrade-temp-backup/plugins/menu-icons/CHANGELOG.md b/wp-content/upgrade-temp-backup/plugins/menu-icons/CHANGELOG.md deleted file mode 100644 index 20d17f01..00000000 --- a/wp-content/upgrade-temp-backup/plugins/menu-icons/CHANGELOG.md +++ /dev/null @@ -1,167 +0,0 @@ -##### [Version 0.13.17](https://github.com/codeinwp/wp-menu-icons/compare/v0.13.16...v0.13.17) (2025-04-17) - -- Updated dependencies - -##### [Version 0.13.16](https://github.com/codeinwp/wp-menu-icons/compare/v0.13.15...v0.13.16) (2024-11-07) - -- Updated dependencies - -##### [Version 0.13.15](https://github.com/codeinwp/wp-menu-icons/compare/v0.13.14...v0.13.15) (2024-07-10) - -- Removed recommendations of unsupported plugins -- Fixed conditions for theme recommendation - -##### [Version 0.13.14](https://github.com/codeinwp/wp-menu-icons/compare/v0.13.13...v0.13.14) (2024-05-14) - -- Enhanced security - -##### [Version 0.13.13](https://github.com/codeinwp/wp-menu-icons/compare/v0.13.12...v0.13.13) (2024-04-18) - -### Improvements -​- **Updated internal dependencies:​​** Enhanced performance and security. - -##### [Version 0.13.12](https://github.com/codeinwp/wp-menu-icons/compare/v0.13.11...v0.13.12) (2024-04-01) - -### Improvements -- **Updated internal dependencies** - -##### [Version 0.13.11](https://github.com/codeinwp/wp-menu-icons/compare/v0.13.10...v0.13.11) (2024-03-29) - -### Fixes -- Updated internal dependencies -- Enhanced security - -##### [Version 0.13.10](https://github.com/codeinwp/wp-menu-icons/compare/v0.13.9...v0.13.10) (2024-03-26) - -### Improvements -- Updated internal dependencies -- Improved readme to link to the public source files -- Filter promotions - -##### [Version 0.13.9](https://github.com/codeinwp/wp-menu-icons/compare/v0.13.8...v0.13.9) (2024-02-23) - -### Fixes -- Updated dependencies -- Harden security - -##### [Version 0.13.8](https://github.com/codeinwp/wp-menu-icons/compare/v0.13.7...v0.13.8) (2023-12-19) - -- SDK Updates -- Fixed global hide label issue - -##### [Version 0.13.7](https://github.com/codeinwp/wp-menu-icons/compare/v0.13.6...v0.13.7) (2023-08-17) - -- Updated dependencies -- Fixed broken button layout issues in other languages - -##### [Version 0.13.6](https://github.com/codeinwp/wp-menu-icons/compare/v0.13.5...v0.13.6) (2023-07-07) - -- Updated composer dependencies to address warning in the widgets section - -##### [Version 0.13.5](https://github.com/codeinwp/wp-menu-icons/compare/v0.13.4...v0.13.5) (2023-03-30) - -- Updated Dependencies and WordPress core tested up to version 6.2 - -##### [Version 0.13.4](https://github.com/codeinwp/wp-menu-icons/compare/v0.13.3...v0.13.4) (2023-03-01) - -Update dependencies - -##### [Version 0.13.3](https://github.com/codeinwp/wp-menu-icons/compare/v0.13.2...v0.13.3) (2023-02-25) - -- Fix img width/height value, props @Htbaa -- Update dependencies - -##### [Version 0.13.2](https://github.com/codeinwp/wp-menu-icons/compare/v0.13.1...v0.13.2) (2022-11-24) - -* Fix - update dependencies - -##### [Version 0.13.1](https://github.com/codeinwp/wp-menu-icons/compare/v0.13.0...v0.13.1) (2022-11-04) - -Tested with the WordPress 6.1 version - -#### [Version 0.13.0](https://github.com/codeinwp/wp-menu-icons/compare/v0.12.12...v0.13.0) (2022-08-23) - -* Fix Neve upsells showing up inconsistently on edge cases -* Fix inconsistency with Font Awesome 5 and adds compatibility with 6th version -* Fix compatibility with JupiterX -* Update dependencies - -##### [Version 0.12.12](https://github.com/codeinwp/wp-menu-icons/compare/v0.12.11...v0.12.12) (2022-05-27) - -- Fix the style handler conflict issue which breaks the arrow icon of the submenus on some themes -- Fix dismiss dashboard notice issue on some edge cases -- Fix compatibility with the Max Mega Menu plugin - -##### [Version 0.12.11](https://github.com/codeinwp/wp-menu-icons/compare/v0.12.10...v0.12.11) (2022-03-16) - -Add font awesome 5 support -Enhance compatibility with Otter/Neve - -##### [Version 0.12.10](https://github.com/codeinwp/wp-menu-icons/compare/v0.12.9...v0.12.10) (2022-02-07) - -- [Fix] Add support for alt attribute for SVG icons -- Tested up with WordPress 5.9 - -##### [Version 0.12.9](https://github.com/codeinwp/wp-menu-icons/compare/v0.12.8...v0.12.9) (2021-08-04) - -* Tested compatibility with WordPress 5.8 - -##### [Version 0.12.8](https://github.com/codeinwp/wp-menu-icons/compare/v0.12.7...v0.12.8) (2021-05-12) - -* Fix issue when the image is not accessible to fetch the width/height metadata. - -##### [Version 0.12.7](https://github.com/codeinwp/wp-menu-icons/compare/v0.12.6...v0.12.7) (2021-05-07) - -Fix PHP fatal error when uploading SVG with the image uploader - -##### [Version 0.12.6](https://github.com/codeinwp/wp-menu-icons/compare/v0.12.5...v0.12.6) (2021-05-05) - -* Adds explicit width/height to icons to prevent layout shifts issues - -### v0.12.5 - 2020-08-18 - **Changes:** - - ### v0.12.4 - 2020-07-13 - **Changes:** - * Fix Font Awesome not loading - - ### v0.12.3 - 2020-07-13 - **Changes:** - * Fixed Menu Icons in Block Editor not working -* Fixed CWP links. - - ### v0.12.2 - 2019-11-15 - **Changes:** - - ### v0.12.1 - 2019-11-15 - **Changes:** - * Improve legacy compatibility - - ### v0.12.0 - 2019-11-15 - **Changes:** - * Fix issues with WordPress 5.3. - - ### v0.11.5 - 2019-05-23 - **Changes:** - * Sync composer dependencies with the latest version - - ### v0.11.4 - 2018-12-10 - **Changes:** - * fix issue with composer libraries. - - ### v0.11.3 - 2018-12-10 - **Changes:** - * Tested with WP 5.0 - - ### v0.11.2 - 2018-03-05 - **Changes:** - * Improve popup sidebar layout. - - ### v0.11.1 - 2018-02-24 - **Changes:** - * Add recommendation boxes in the menu icon popup. - - ### v0.11.0 - 2018-01-05 - **Changes:** - * Change ownership to ThemeIsle. -* Improves compatibility with various ThemeIsle products. diff --git a/wp-content/upgrade-temp-backup/plugins/menu-icons/LICENSE b/wp-content/upgrade-temp-backup/plugins/menu-icons/LICENSE deleted file mode 100644 index d7f10513..00000000 --- a/wp-content/upgrade-temp-backup/plugins/menu-icons/LICENSE +++ /dev/null @@ -1,339 +0,0 @@ -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {description} - Copyright (C) {year} {fullname} - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/admin.css b/wp-content/upgrade-temp-backup/plugins/menu-icons/css/admin.css deleted file mode 100644 index 288acd71..00000000 --- a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/admin.css +++ /dev/null @@ -1,246 +0,0 @@ -.menu-icons-wrap { - margin-top: 5px; - margin-bottom: 5px; -} - -.menu-icons-wrap p { - min-height: 2.2em; - margin-bottom: 0; -} - -.menu-icons-wrap p a, -.menu-icons-wrap p label { - display: inline-block; - height: 100%; - line-height: 2.2em; - vertical-align: middle; -} - -.menu-icons-wrap a { - text-decoration: none; - cursor: pointer; -} - -.menu-icons-wrap .submitdelete { - display: inline-block; - float: none; - height: 100%; - margin: 0; - padding: 0; - line-height: 2.2em; -} - -.menu-icons-wrap .hidden { - display: none; -} - -.menu-icons-wrap ._icon { - width: auto; - height: auto; - margin: -0.1em 0.2em 0 0.2em; - color: #666; - font-size: 1.9em; - vertical-align: middle; -} - -.menu-icons-wrap img._icon { - max-width: 24px; -} - -.menu-icons-wrap a._select:focus ._icon, -.menu-icons-wrap a._select:hover ._icon { - color: #101010; -} - -.mi-preview.menu-item { - min-height: 0; - font-size: 1.2em; -} - -.mi-preview.menu-item a { - text-decoration: none; -} - -.mi-preview.menu-item a > * { - display: inline-block; - height: 100%; - line-height: 100%; - vertical-align: middle; -} - -.mi-preview.menu-item ._icon { - margin-right: 0.25em; -} - -.rtl .mi-preview.menu-item ._icon { - margin-right: 0; -} - -.media-sidebar .mi-settings .setting input[type="number"], -.menu-icons-settings input[type="number"] { - float: none; - width: auto; - max-width: 5em; -} - -.media-sidebar .mi-settings .setting input, -.media-sidebar .mi-settings span.description { - float: none; -} - -/** Settings Meta Box **/ -.menu-icons-settings ._field { - padding: 0.5em 0; -} - -.menu-icons-settings ._field ._main { - display: block; - margin-bottom: 0.25em; - font-weight: bold; -} - -#menu-settings-column .menu-icons-settings .inside { - margin-top: 0; -} - -.menu-icons-settings .taxonomydiv .tabs-panel { - max-height: none; - margin-bottom: 0.75em; - padding-top: 0.3em; - padding-bottom: 0.4em; -} - -.js .menu-icons-settings .taxonomydiv .tabs-panel { - margin-bottom: 0; -} - -.menu-icons-settings h4 { - margin: 0; -} - -.menu-icons-settings ._menu span.description { - margin-left: 0.5em; -} - -.menu-icons-settings ._extensions ul { - margin-top: 0.75em; - padding-left: 1.5em; - list-style: disc; -} - -.menu-icons-settings ._extensions ul a { - text-decoration: none; -} - -.menu-icons-settings .spinner { - float: none; - margin: 0 5px 0 0; - vertical-align: middle; -} - -.attachment .svg-icon img { - max-width: 100%; -} - -.nv-upgrade-notice { - width: 90%; - margin-top: 0; - padding: 15px; -} - -#menu-icons-sidebar div.new-card { - width: auto; - min-width: initial; - max-width: initial; - margin: 10px auto; -} - -.menu-icons-subscribe { - padding: 15px; -} - -.menu-icons-submit-mail { - width: auto; -} - -#success { - display: none; -} - -#failure { - display: none; -} - -.attachments-browser.iconpicker-fonts-browser .media-toolbar { - width: 62%; -} - -.attachments-browser.iconpicker-fonts-browser .attachments.iconpicker-items { - width: 64%; -} - -.attachments-browser.iconpicker-fonts-browser .media-sidebar { - width: 32%; -} - -.nv-upgrade-notice { - background: #FFFFFF; - border: 1px solid #E1E1E1; - box-sizing: border-box; - padding: 20px; - display: flex; - flex-wrap: wrap; -} - -.nv-upgrade-notice .menu-icon-notice-popup-img { - width: 115px; - height: 100px; - background-color: #f1f1f1; - margin-right: 20px; - margin-bottom: 20px; -} - -.nv-upgrade-notice .menu-icon-notice-popup-img img{ - width: 100%; - height: 100%; - object-fit: cover; -} - -.nv-upgrade-notice .menu-icon-notice-popup { - flex: 1; -} - -.nv-upgrade-notice .menu-icon-notice-popup h4{ - padding: 0; - margin: 0 0 8px; - font-weight: 590; - font-size: 14px; - line-height: 1.2; - color: #000000; - display: block; - width: 100%; -} - -.nv-upgrade-notice .menu-icon-notice-popup p { - font-size: 13px; - line-height: 1.2; - color: #000000; - margin: 0 0 16px; - display: block; - padding: 0; -} - -.nv-upgrade-notice .menu-icon-notice-popup .button { - width: auto; - height: 30px; - background: #0071AE; - border-radius: 4px; - padding: 5px 12px; - font-size: 13px; - line-height: 1.5; - color: #fff; -} - -.nv-upgrade-notice .menu-icon-notice-popup .button:hover { - color: #fff; -} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/admin.min.css b/wp-content/upgrade-temp-backup/plugins/menu-icons/css/admin.min.css deleted file mode 100644 index 2d4fd049..00000000 --- a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/admin.min.css +++ /dev/null @@ -1 +0,0 @@ -.menu-icons-wrap{margin-top:5px;margin-bottom:5px}.menu-icons-wrap p{min-height:2.2em;margin-bottom:0}.menu-icons-wrap p a,.menu-icons-wrap p label{display:inline-block;height:100%;line-height:2.2em;vertical-align:middle}.menu-icons-wrap a{text-decoration:none;cursor:pointer}.menu-icons-wrap .submitdelete{display:inline-block;float:none;height:100%;margin:0;padding:0;line-height:2.2em}.menu-icons-wrap .hidden{display:none}.menu-icons-wrap ._icon{width:auto;height:auto;margin:-.1em .2em 0 .2em;color:#666;font-size:1.9em;vertical-align:middle}.menu-icons-wrap img._icon{max-width:24px}.menu-icons-wrap a._select:focus ._icon,.menu-icons-wrap a._select:hover ._icon{color:#101010}.mi-preview.menu-item{min-height:0;font-size:1.2em}.mi-preview.menu-item a{text-decoration:none}.mi-preview.menu-item a>*{display:inline-block;height:100%;line-height:100%;vertical-align:middle}.mi-preview.menu-item ._icon{margin-right:.25em}.rtl .mi-preview.menu-item ._icon{margin-right:0}.media-sidebar .mi-settings .setting input[type=number],.menu-icons-settings input[type=number]{float:none;width:auto;max-width:5em}.media-sidebar .mi-settings .setting input,.media-sidebar .mi-settings span.description{float:none}.menu-icons-settings ._field{padding:.5em 0}.menu-icons-settings ._field ._main{display:block;margin-bottom:.25em;font-weight:700}#menu-settings-column .menu-icons-settings .inside{margin-top:0}.menu-icons-settings .taxonomydiv .tabs-panel{max-height:none;margin-bottom:.75em;padding-top:.3em;padding-bottom:.4em}.js .menu-icons-settings .taxonomydiv .tabs-panel{margin-bottom:0}.menu-icons-settings h4{margin:0}.menu-icons-settings ._menu span.description{margin-left:.5em}.menu-icons-settings ._extensions ul{margin-top:.75em;padding-left:1.5em;list-style:disc}.menu-icons-settings ._extensions ul a{text-decoration:none}.menu-icons-settings .spinner{float:none;margin:0 5px 0 0;vertical-align:middle}.attachment .svg-icon img{max-width:100%}.nv-upgrade-notice{width:90%;margin-top:0;padding:15px}#menu-icons-sidebar div.new-card{width:auto;min-width:initial;max-width:initial;margin:10px auto}.menu-icons-subscribe{padding:15px}.menu-icons-submit-mail{width:auto}#success{display:none}#failure{display:none}.attachments-browser.iconpicker-fonts-browser .media-toolbar{width:62%}.attachments-browser.iconpicker-fonts-browser .attachments.iconpicker-items{width:64%}.attachments-browser.iconpicker-fonts-browser .media-sidebar{width:32%}.nv-upgrade-notice{background:#fff;border:1px solid #e1e1e1;box-sizing:border-box;padding:20px;display:flex;flex-wrap:wrap}.nv-upgrade-notice .menu-icon-notice-popup-img{width:115px;height:100px;background-color:#f1f1f1;margin-right:20px;margin-bottom:20px}.nv-upgrade-notice .menu-icon-notice-popup-img img{width:100%;height:100%;object-fit:cover}.nv-upgrade-notice .menu-icon-notice-popup{flex:1}.nv-upgrade-notice .menu-icon-notice-popup h4{padding:0;margin:0 0 8px;font-weight:590;font-size:14px;line-height:1.2;color:#000;display:block;width:100%}.nv-upgrade-notice .menu-icon-notice-popup p{font-size:13px;line-height:1.2;color:#000;margin:0 0 16px;display:block;padding:0}.nv-upgrade-notice .menu-icon-notice-popup .button{width:auto;height:30px;background:#0071ae;border-radius:4px;padding:5px 12px;font-size:13px;line-height:1.5;color:#fff}.nv-upgrade-notice .menu-icon-notice-popup .button:hover{color:#fff} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/dashboard-notice.css b/wp-content/upgrade-temp-backup/plugins/menu-icons/css/dashboard-notice.css deleted file mode 100644 index 7a937595..00000000 --- a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/dashboard-notice.css +++ /dev/null @@ -1,45 +0,0 @@ -.menu-icon-dashboard-notice { - position: relative; - background: #FFFFFF; - border: 1px solid #E1E1E1; - box-sizing: border-box; - padding: 24px; - border-left: 4px solid #72AEE6; - margin: 0 0 30px; -} - -.menu-icon-dashboard-notice h2 { - padding: 0; - margin: 0 0 8px; - font-weight: bold; - font-size: 18px; - line-height: 1.2; - color: #000000; -} - -.menu-icon-dashboard-notice p { - font-size: 12px; - line-height: 1.2; - color: #000000; - display: block; - margin-bottom: 16px; -} - -.menu-icon-dashboard-notice .button { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - padding: 5px 12px; - background: #0071AE; - border-radius: 4px; - display: inline-block; - width: auto; - height: 30px; - color: #FFFFFF; - font-size: 13px; - line-height: 1.5; -} -.menu-icon-dashboard-notice .notice-dismiss { - text-decoration: none; -} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/dashboard-notice.min.css b/wp-content/upgrade-temp-backup/plugins/menu-icons/css/dashboard-notice.min.css deleted file mode 100644 index 65ed114b..00000000 --- a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/dashboard-notice.min.css +++ /dev/null @@ -1 +0,0 @@ -.menu-icon-dashboard-notice{position:relative;background:#fff;border:1px solid #e1e1e1;box-sizing:border-box;padding:24px;border-left:4px solid #72aee6;margin:0 0 30px}.menu-icon-dashboard-notice h2{padding:0;margin:0 0 8px;font-weight:700;font-size:18px;line-height:1.2;color:#000}.menu-icon-dashboard-notice p{font-size:12px;line-height:1.2;color:#000;display:block;margin-bottom:16px}.menu-icon-dashboard-notice .button{display:flex;flex-direction:row;justify-content:center;align-items:center;padding:5px 12px;background:#0071ae;border-radius:4px;display:inline-block;width:auto;height:30px;color:#fff;font-size:13px;line-height:1.5}.menu-icon-dashboard-notice .notice-dismiss{text-decoration:none} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/extra.css b/wp-content/upgrade-temp-backup/plugins/menu-icons/css/extra.css deleted file mode 100644 index ec8b2a60..00000000 --- a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/extra.css +++ /dev/null @@ -1,74 +0,0 @@ -.menu-item i._mi, -.menu-item img._mi { - display: inline-block; - vertical-align: middle; -} - -.menu-item i._mi { - width: auto; - height: auto; - margin-top: -0.265em; - font-size: 1.2em; - line-height: 1; -} - -.menu-item i._before, -.rtl .menu-item i._after { - margin-right: 0.25em; -} - -.menu-item i._after, -.rtl .menu-item i._before { - margin-left: 0.25em; -} - -.menu-item img._before, -.rtl .menu-item img._after { - margin-right: 0.5em; -} - -.menu-item img._after, -.rtl .menu-item img._before { - margin-left: 0.5em; -} - -.menu-item ._svg { - width: 1em; -} - -.rtl .menu-item i._before { - margin-right: 0; -} - -.rtl .menu-item i._after { - margin-left: 0; -} - -.visuallyhidden { - overflow: hidden; - clip: rect(0 0 0 0); - position: absolute; - width: 1px; - height: 1px; - margin: -1px; - padding: 0; - border: 0; -} - -.menu-item i.elusive { - margin-top: -0.3em; -} - -/** - * Force the icons' styles - * - * Some themes -- notably 2014 -- has nasty rules that - * could override the icons' styles so we need to force them here. - */ -.dashicons-admin-site:before { - content: "\f319" !important; -} - -.dashicons-welcome-view-site:before { - content: "\f115" !important; -} diff --git a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/extra.min.css b/wp-content/upgrade-temp-backup/plugins/menu-icons/css/extra.min.css deleted file mode 100644 index 7ff02d86..00000000 --- a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/extra.min.css +++ /dev/null @@ -1 +0,0 @@ -.menu-item i._mi,.menu-item img._mi{display:inline-block;vertical-align:middle}.menu-item i._mi{width:auto;height:auto;margin-top:-.265em;font-size:1.2em;line-height:1}.menu-item i._before,.rtl .menu-item i._after{margin-right:.25em}.menu-item i._after,.rtl .menu-item i._before{margin-left:.25em}.menu-item img._before,.rtl .menu-item img._after{margin-right:.5em}.menu-item img._after,.rtl .menu-item img._before{margin-left:.5em}.menu-item ._svg{width:1em}.rtl .menu-item i._before{margin-right:0}.rtl .menu-item i._after{margin-left:0}.visuallyhidden{overflow:hidden;clip:rect(0 0 0 0);position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0}.menu-item i.elusive{margin-top:-.3em}.dashicons-admin-site:before{content:"\f319"!important}.dashicons-welcome-view-site:before{content:"\f115"!important} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/LICENSE.txt b/wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/LICENSE.txt deleted file mode 100644 index f31bef92..00000000 --- a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/LICENSE.txt +++ /dev/null @@ -1,34 +0,0 @@ -Font Awesome Free License -------------------------- - -Font Awesome Free is free, open source, and GPL friendly. You can use it for -commercial projects, open source projects, or really almost whatever you want. -Full Font Awesome Free license: https://fontawesome.com/license/free. - -# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/) -In the Font Awesome Free download, the CC BY 4.0 license applies to all icons -packaged as SVG and JS file types. - -# Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL) -In the Font Awesome Free download, the SIL OFL license applies to all icons -packaged as web and desktop font files. - -# Code: MIT License (https://opensource.org/licenses/MIT) -In the Font Awesome Free download, the MIT license applies to all non-font and -non-icon files. - -# Attribution -Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font -Awesome Free files already contain embedded comments with sufficient -attribution, so you shouldn't need to do anything additional when using these -files normally. - -We've kept attribution comments terse, so we ask that you do not actively work -to remove them from files, especially code. They're a great way for folks to -learn about Font Awesome. - -# Brand Icons -All brand icons are trademarks of their respective owners. The use of these -trademarks does not indicate endorsement of the trademark holder by Font -Awesome, nor vice versa. **Please do not use brand logos for any purpose except -to represent the company, product, or service to which they refer.** diff --git a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/css/all.min.css b/wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/css/all.min.css deleted file mode 100644 index b9a01fbb..00000000 --- a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/css/all.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - * Copyright 2022 Fonticons, Inc. - */ -.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-duotone,.fa-light,.fa-regular,.fa-solid,.fa-thin,.fab,.fad,.fal,.far,.fas,.fat{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-a:before{content:"\41"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-anchor:before{content:"\f13d"}.fa-anchor-circle-check:before{content:"\e4aa"}.fa-anchor-circle-exclamation:before{content:"\e4ab"}.fa-anchor-circle-xmark:before{content:"\e4ac"}.fa-anchor-lock:before{content:"\e4ad"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-ankh:before{content:"\f644"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-archway:before{content:"\f557"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-arrow-down-up-across-line:before{content:"\e4af"}.fa-arrow-down-up-lock:before{content:"\e4b0"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-arrow-right-to-city:before{content:"\e4b3"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-arrow-trend-down:before{content:"\e097"}.fa-arrow-trend-up:before{content:"\e098"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-arrow-up-from-ground-water:before{content:"\e4b5"}.fa-arrow-up-from-water-pump:before{content:"\e4b6"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-arrow-up-right-dots:before{content:"\e4b7"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-arrows-down-to-line:before{content:"\e4b8"}.fa-arrows-down-to-people:before{content:"\e4b9"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-arrows-left-right-to-line:before{content:"\e4ba"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-arrows-spin:before{content:"\e4bb"}.fa-arrows-split-up-and-left:before{content:"\e4bc"}.fa-arrows-to-circle:before{content:"\e4bd"}.fa-arrows-to-dot:before{content:"\e4be"}.fa-arrows-to-eye:before{content:"\e4bf"}.fa-arrows-turn-right:before{content:"\e4c0"}.fa-arrows-turn-to-dots:before{content:"\e4c1"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-arrows-up-to-line:before{content:"\e4c2"}.fa-asterisk:before{content:"\2a"}.fa-at:before{content:"\40"}.fa-atom:before{content:"\f5d2"}.fa-audio-description:before{content:"\f29e"}.fa-austral-sign:before{content:"\e0a9"}.fa-award:before{content:"\f559"}.fa-b:before{content:"\42"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-backward:before{content:"\f04a"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-bahai:before,.fa-haykal:before{content:"\f666"}.fa-baht-sign:before{content:"\e0ac"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-barcode:before{content:"\f02a"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-bell:before{content:"\f0f3"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bicycle:before{content:"\f206"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blog:before{content:"\f781"}.fa-bold:before{content:"\f032"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-book-bookmark:before{content:"\e0bb"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-book-tanakh:before,.fa-tanakh:before{content:"\f827"}.fa-bookmark:before{content:"\f02e"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-bore-hole:before{content:"\e4c3"}.fa-bottle-droplet:before{content:"\e4c4"}.fa-bottle-water:before{content:"\e4c5"}.fa-bowl-food:before{content:"\e4c6"}.fa-bowl-rice:before{content:"\e2eb"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes-packing:before{content:"\e4c7"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-bread-slice:before{content:"\f7ec"}.fa-bridge:before{content:"\e4c8"}.fa-bridge-circle-check:before{content:"\e4c9"}.fa-bridge-circle-exclamation:before{content:"\e4ca"}.fa-bridge-circle-xmark:before{content:"\e4cb"}.fa-bridge-lock:before{content:"\e4cc"}.fa-bridge-water:before{content:"\e4ce"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broom:before{content:"\f51a"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-brush:before{content:"\f55d"}.fa-bucket:before{content:"\e4cf"}.fa-bug:before{content:"\f188"}.fa-bug-slash:before{content:"\e490"}.fa-bugs:before{content:"\e4d0"}.fa-building:before{content:"\f1ad"}.fa-building-circle-arrow-right:before{content:"\e4d1"}.fa-building-circle-check:before{content:"\e4d2"}.fa-building-circle-exclamation:before{content:"\e4d3"}.fa-building-circle-xmark:before{content:"\e4d4"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-building-flag:before{content:"\e4d5"}.fa-building-lock:before{content:"\e4d6"}.fa-building-ngo:before{content:"\e4d7"}.fa-building-shield:before{content:"\e4d8"}.fa-building-un:before{content:"\e4d9"}.fa-building-user:before{content:"\e4da"}.fa-building-wheat:before{content:"\e4db"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-burst:before{content:"\e4dc"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-c:before{content:"\43"}.fa-cable-car:before,.fa-tram:before{content:"\f7da"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-week:before{content:"\f784"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-camera-rotate:before{content:"\e0d8"}.fa-campground:before{content:"\f6bb"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-car-burst:before,.fa-car-crash:before{content:"\f5e1"}.fa-car-on:before{content:"\e4dd"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-car-side:before{content:"\f5e4"}.fa-car-tunnel:before{content:"\e4de"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-cart-plus:before{content:"\f217"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cedi-sign:before{content:"\e0df"}.fa-cent-sign:before{content:"\e3f5"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-charging-station:before{content:"\f5e7"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-chart-column:before{content:"\e0e3"}.fa-chart-gantt:before{content:"\e0e4"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-chart-simple:before{content:"\e473"}.fa-check:before{content:"\f00c"}.fa-check-double:before{content:"\f560"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-child-dress:before{content:"\e59c"}.fa-child-reaching:before{content:"\e59d"}.fa-child-rifle:before{content:"\e4e0"}.fa-children:before{content:"\e4e1"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-circle-nodes:before{content:"\e4e2"}.fa-circle-notch:before{content:"\f1ce"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-city:before{content:"\f64f"}.fa-clapperboard:before{content:"\e131"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clipboard-question:before{content:"\e4e3"}.fa-clipboard-user:before{content:"\f7f3"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-cloud-bolt:before,.fa-thunderstorm:before{content:"\f76c"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-showers-water:before{content:"\e4e4"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-clover:before{content:"\e139"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-code-commit:before{content:"\f386"}.fa-code-compare:before{content:"\e13a"}.fa-code-fork:before{content:"\e13b"}.fa-code-merge:before{content:"\f387"}.fa-code-pull-request:before{content:"\e13c"}.fa-coins:before{content:"\f51e"}.fa-colon-sign:before{content:"\e140"}.fa-comment:before{content:"\f075"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-compress:before{content:"\f066"}.fa-computer:before{content:"\e4e5"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cow:before{content:"\f6c8"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cubes-stacked:before{content:"\e4e6"}.fa-d:before{content:"\44"}.fa-database:before{content:"\f1c0"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-democrat:before{content:"\f747"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-dharmachakra:before{content:"\f655"}.fa-diagram-next:before{content:"\e476"}.fa-diagram-predecessor:before{content:"\e477"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-diagram-successor:before{content:"\e47a"}.fa-diamond:before{content:"\f219"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-disease:before{content:"\f7fa"}.fa-display:before{content:"\e163"}.fa-divide:before{content:"\f529"}.fa-dna:before{content:"\f471"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-dong-sign:before{content:"\e169"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dove:before{content:"\f4ba"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-download:before{content:"\f019"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-e:before{content:"\45"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elevator:before{content:"\e16d"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-circle-check:before{content:"\e4e8"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-equals:before{content:"\3d"}.fa-eraser:before{content:"\f12d"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-exclamation:before{content:"\21"}.fa-expand:before{content:"\f065"}.fa-explosion:before{content:"\e4e9"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-eye-slash:before{content:"\f070"}.fa-f:before{content:"\46"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-fan:before{content:"\f863"}.fa-faucet:before{content:"\e005"}.fa-faucet-drip:before{content:"\e006"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-ferry:before{content:"\e4ea"}.fa-file:before{content:"\f15b"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-file-audio:before{content:"\f1c7"}.fa-file-circle-check:before{content:"\e5a0"}.fa-file-circle-exclamation:before{content:"\e4eb"}.fa-file-circle-minus:before{content:"\e4ed"}.fa-file-circle-plus:before{content:"\e494"}.fa-file-circle-question:before{content:"\e4ef"}.fa-file-circle-xmark:before{content:"\e5a1"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-excel:before{content:"\f1c3"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-file-medical:before{content:"\f477"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-edit:before,.fa-file-pen:before{content:"\f31c"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-shield:before{content:"\e4f0"}.fa-file-signature:before{content:"\f573"}.fa-file-video:before{content:"\f1c8"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-file-word:before{content:"\f1c2"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-burner:before{content:"\e4f1"}.fa-fire-extinguisher:before{content:"\f134"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-fish:before{content:"\f578"}.fa-fish-fins:before{content:"\e4f2"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flask-vial:before{content:"\e4f3"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-florin-sign:before{content:"\e184"}.fa-folder-blank:before,.fa-folder:before{content:"\f07b"}.fa-folder-closed:before{content:"\e185"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-folder-tree:before{content:"\f802"}.fa-font:before{content:"\f031"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-franc-sign:before{content:"\e18f"}.fa-frog:before{content:"\f52e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-g:before{content:"\47"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-glass-water:before{content:"\e4f4"}.fa-glass-water-droplet:before{content:"\e4f5"}.fa-glasses:before{content:"\f530"}.fa-globe:before{content:"\f0ac"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-greater-than:before{content:"\3e"}.fa-greater-than-equal:before{content:"\f532"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-group-arrows-rotate:before{content:"\e4f6"}.fa-guarani-sign:before{content:"\e19a"}.fa-guitar:before{content:"\f7a6"}.fa-gun:before{content:"\e19b"}.fa-h:before{content:"\48"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-holding-hand:before{content:"\e4f7"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-handcuffs:before{content:"\e4f8"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-hands-bound:before{content:"\e4f9"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-hands-clapping:before{content:"\e1a8"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-holding-child:before{content:"\e4fa"}.fa-hands-holding-circle:before{content:"\e4fb"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-handshake:before{content:"\f2b5"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-handshake-alt:before,.fa-handshake-simple:before{content:"\f4c6"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-hashtag:before{content:"\23"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-circle-bolt:before{content:"\e4fc"}.fa-heart-circle-check:before{content:"\e4fd"}.fa-heart-circle-exclamation:before{content:"\e4fe"}.fa-heart-circle-minus:before{content:"\e4ff"}.fa-heart-circle-plus:before{content:"\e500"}.fa-heart-circle-xmark:before{content:"\e501"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-helicopter-symbol:before{content:"\e502"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-helmet-un:before{content:"\e503"}.fa-highlighter:before{content:"\f591"}.fa-hill-avalanche:before{content:"\e507"}.fa-hill-rockslide:before{content:"\e508"}.fa-hippo:before{content:"\f6ed"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hourglass-empty:before,.fa-hourglass:before{content:"\f254"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-house-chimney-user:before{content:"\e065"}.fa-house-chimney-window:before{content:"\e00d"}.fa-house-circle-check:before{content:"\e509"}.fa-house-circle-exclamation:before{content:"\e50a"}.fa-house-circle-xmark:before{content:"\e50b"}.fa-house-crack:before{content:"\e3b1"}.fa-house-fire:before{content:"\e50c"}.fa-house-flag:before{content:"\e50d"}.fa-house-flood-water:before{content:"\e50e"}.fa-house-flood-water-circle-arrow-right:before{content:"\e50f"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-house-lock:before{content:"\e510"}.fa-house-medical:before{content:"\e3b2"}.fa-house-medical-circle-check:before{content:"\e511"}.fa-house-medical-circle-exclamation:before{content:"\e512"}.fa-house-medical-circle-xmark:before{content:"\e513"}.fa-house-medical-flag:before{content:"\e514"}.fa-house-signal:before{content:"\e012"}.fa-house-tsunami:before{content:"\e515"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-hurricane:before{content:"\f751"}.fa-i:before{content:"\49"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-images:before{content:"\f302"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-italic:before{content:"\f033"}.fa-j:before{content:"\4a"}.fa-jar:before{content:"\e516"}.fa-jar-wheat:before{content:"\e517"}.fa-jedi:before{content:"\f669"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-jet-fighter-up:before{content:"\e518"}.fa-joint:before{content:"\f595"}.fa-jug-detergent:before{content:"\e519"}.fa-k:before{content:"\4b"}.fa-kaaba:before{content:"\f66b"}.fa-key:before{content:"\f084"}.fa-keyboard:before{content:"\f11c"}.fa-khanda:before{content:"\f66d"}.fa-kip-sign:before{content:"\e1c4"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-kitchen-set:before{content:"\e51a"}.fa-kiwi-bird:before{content:"\f535"}.fa-l:before{content:"\4c"}.fa-land-mine-on:before{content:"\e51b"}.fa-landmark:before{content:"\f66f"}.fa-landmark-alt:before,.fa-landmark-dome:before{content:"\f752"}.fa-landmark-flag:before{content:"\e51c"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-file:before{content:"\e51d"}.fa-laptop-medical:before{content:"\f812"}.fa-lari-sign:before{content:"\e1c8"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-lemon:before{content:"\f094"}.fa-less-than:before{content:"\3c"}.fa-less-than-equal:before{content:"\f537"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-lines-leaning:before{content:"\e51e"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-lira-sign:before{content:"\f195"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-location-arrow:before{content:"\f124"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-location-pin-lock:before{content:"\e51f"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-locust:before{content:"\e520"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-m:before{content:"\4d"}.fa-magnet:before{content:"\f076"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-magnifying-glass-arrow-right:before{content:"\e521"}.fa-magnifying-glass-chart:before{content:"\e522"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-manat-sign:before{content:"\e1d5"}.fa-map:before{content:"\f279"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-pin:before{content:"\f276"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-and-venus:before{content:"\f224"}.fa-mars-and-venus-burst:before{content:"\e523"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-mask:before{content:"\f6fa"}.fa-mask-face:before{content:"\e1d7"}.fa-mask-ventilator:before{content:"\e524"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-mattress-pillow:before{content:"\e525"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-medal:before{content:"\f5a2"}.fa-memory:before{content:"\f538"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-mill-sign:before{content:"\e1ed"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-mitten:before{content:"\f7b5"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-mobile-button:before{content:"\f10b"}.fa-mobile-retro:before{content:"\e527"}.fa-mobile-android-alt:before,.fa-mobile-screen:before{content:"\f3cf"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-bill-transfer:before{content:"\e528"}.fa-money-bill-trend-up:before{content:"\e529"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wheat:before{content:"\e52a"}.fa-money-bills:before{content:"\e1f3"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-mosquito:before{content:"\e52b"}.fa-mosquito-net:before{content:"\e52c"}.fa-motorcycle:before{content:"\f21c"}.fa-mound:before{content:"\e52d"}.fa-mountain:before{content:"\f6fc"}.fa-mountain-city:before{content:"\e52e"}.fa-mountain-sun:before{content:"\e52f"}.fa-mug-hot:before{content:"\f7b6"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-music:before{content:"\f001"}.fa-n:before{content:"\4e"}.fa-naira-sign:before{content:"\e1f6"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-not-equal:before{content:"\f53e"}.fa-notdef:before{content:"\e1fe"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-notes-medical:before{content:"\f481"}.fa-o:before{content:"\4f"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-oil-can:before{content:"\f613"}.fa-oil-well:before{content:"\e532"}.fa-om:before{content:"\f679"}.fa-otter:before{content:"\f700"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-p:before{content:"\50"}.fa-pager:before{content:"\f815"}.fa-paint-roller:before{content:"\f5aa"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-palette:before{content:"\f53f"}.fa-pallet:before{content:"\f482"}.fa-panorama:before{content:"\e209"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-passport:before{content:"\f5ab"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-pause:before{content:"\f04c"}.fa-paw:before{content:"\f1b0"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-people-group:before{content:"\e533"}.fa-people-line:before{content:"\e534"}.fa-people-pulling:before{content:"\e535"}.fa-people-robbery:before{content:"\e536"}.fa-people-roof:before{content:"\e537"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-person-arrow-down-to-line:before{content:"\e538"}.fa-person-arrow-up-from-line:before{content:"\e539"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-person-booth:before{content:"\f756"}.fa-person-breastfeeding:before{content:"\e53a"}.fa-person-burst:before{content:"\e53b"}.fa-person-cane:before{content:"\e53c"}.fa-person-chalkboard:before{content:"\e53d"}.fa-person-circle-check:before{content:"\e53e"}.fa-person-circle-exclamation:before{content:"\e53f"}.fa-person-circle-minus:before{content:"\e540"}.fa-person-circle-plus:before{content:"\e541"}.fa-person-circle-question:before{content:"\e542"}.fa-person-circle-xmark:before{content:"\e543"}.fa-digging:before,.fa-person-digging:before{content:"\f85e"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-person-dress-burst:before{content:"\e544"}.fa-person-drowning:before{content:"\e545"}.fa-person-falling:before{content:"\e546"}.fa-person-falling-burst:before{content:"\e547"}.fa-person-half-dress:before{content:"\e548"}.fa-person-harassing:before{content:"\e549"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-person-military-pointing:before{content:"\e54a"}.fa-person-military-rifle:before{content:"\e54b"}.fa-person-military-to-person:before{content:"\e54c"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-person-pregnant:before{content:"\e31e"}.fa-person-rays:before{content:"\e54d"}.fa-person-rifle:before{content:"\e54e"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-person-shelter:before{content:"\e54f"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-person-through-window:before{content:"\e5a9"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-person-walking-arrow-loop-left:before{content:"\e551"}.fa-person-walking-arrow-right:before{content:"\e552"}.fa-person-walking-dashed-line-arrow-right:before{content:"\e553"}.fa-person-walking-luggage:before{content:"\e554"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-peseta-sign:before{content:"\e221"}.fa-peso-sign:before{content:"\e222"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-circle-check:before{content:"\e555"}.fa-plane-circle-exclamation:before{content:"\e556"}.fa-plane-circle-xmark:before{content:"\e557"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-lock:before{content:"\e558"}.fa-plane-slash:before{content:"\e069"}.fa-plane-up:before{content:"\e22d"}.fa-plant-wilt:before{content:"\e5aa"}.fa-plate-wheat:before{content:"\e55a"}.fa-play:before{content:"\f04b"}.fa-plug:before{content:"\f1e6"}.fa-plug-circle-bolt:before{content:"\e55b"}.fa-plug-circle-check:before{content:"\e55c"}.fa-plug-circle-exclamation:before{content:"\e55d"}.fa-plug-circle-minus:before{content:"\e55e"}.fa-plug-circle-plus:before{content:"\e55f"}.fa-plug-circle-xmark:before{content:"\e560"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-plus-minus:before{content:"\e43c"}.fa-podcast:before{content:"\f2ce"}.fa-poo:before{content:"\f2fe"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-power-off:before{content:"\f011"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-puzzle-piece:before{content:"\f12e"}.fa-q:before{content:"\51"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\3f"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-r:before{content:"\52"}.fa-radiation:before{content:"\f7b9"}.fa-radio:before{content:"\f8d7"}.fa-rainbow:before{content:"\f75b"}.fa-ranking-star:before{content:"\e561"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-recycle:before{content:"\f1b8"}.fa-registered:before{content:"\f25d"}.fa-repeat:before{content:"\f363"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-republican:before{content:"\f75e"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-ribbon:before{content:"\f4d6"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-road-barrier:before{content:"\e562"}.fa-road-bridge:before{content:"\e563"}.fa-road-circle-check:before{content:"\e564"}.fa-road-circle-exclamation:before{content:"\e565"}.fa-road-circle-xmark:before{content:"\e566"}.fa-road-lock:before{content:"\e567"}.fa-road-spikes:before{content:"\e568"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-route:before{content:"\f4d7"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-rug:before{content:"\e569"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-rupiah-sign:before{content:"\e23d"}.fa-s:before{content:"\53"}.fa-sack-dollar:before{content:"\f81d"}.fa-sack-xmark:before{content:"\e56a"}.fa-sailboat:before{content:"\e445"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-school:before{content:"\f549"}.fa-school-circle-check:before{content:"\e56b"}.fa-school-circle-exclamation:before{content:"\e56c"}.fa-school-circle-xmark:before{content:"\e56d"}.fa-school-flag:before{content:"\e56e"}.fa-school-lock:before{content:"\e56f"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-screwdriver:before{content:"\f54a"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-scroll:before{content:"\f70e"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-sd-card:before{content:"\f7c2"}.fa-section:before{content:"\e447"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-server:before{content:"\f233"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-sheet-plastic:before{content:"\e571"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-shield-blank:before,.fa-shield:before{content:"\f132"}.fa-shield-cat:before{content:"\e572"}.fa-shield-dog:before{content:"\e573"}.fa-shield-alt:before,.fa-shield-halved:before{content:"\f3ed"}.fa-shield-heart:before{content:"\e574"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-shoe-prints:before{content:"\f54b"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-shop-lock:before{content:"\e4a5"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-shower:before{content:"\f2cc"}.fa-shrimp:before{content:"\e448"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-sim-card:before{content:"\f7c4"}.fa-sink:before{content:"\e06d"}.fa-sitemap:before{content:"\f0e8"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-spa:before{content:"\f5bb"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-spray-can:before{content:"\f5bd"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-square:before{content:"\f0c8"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-square-full:before{content:"\f45c"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-square-nfi:before{content:"\e576"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-square-person-confined:before{content:"\e577"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-square-virus:before{content:"\e578"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-rod-asclepius:before,.fa-rod-snake:before,.fa-staff-aesculapius:before,.fa-staff-snake:before{content:"\e579"}.fa-stairs:before{content:"\e289"}.fa-stamp:before{content:"\f5bf"}.fa-stapler:before{content:"\e5af"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-stethoscope:before{content:"\f0f1"}.fa-stop:before{content:"\f04d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-slash:before{content:"\e071"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stroopwafel:before{content:"\f551"}.fa-subscript:before{content:"\f12c"}.fa-suitcase:before{content:"\f0f2"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-sun-plant-wilt:before{content:"\e57a"}.fa-superscript:before{content:"\f12b"}.fa-swatchbook:before{content:"\f5c3"}.fa-synagogue:before{content:"\f69b"}.fa-syringe:before{content:"\f48e"}.fa-t:before{content:"\54"}.fa-table:before{content:"\f0ce"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-tablet-button:before{content:"\f10a"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tarp:before{content:"\e57b"}.fa-tarp-droplet:before{content:"\e57c"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-temperature-arrow-down:before,.fa-temperature-down:before{content:"\e03f"}.fa-temperature-arrow-up:before,.fa-temperature-up:before{content:"\e040"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-tent:before{content:"\e57d"}.fa-tent-arrow-down-to-line:before{content:"\e57e"}.fa-tent-arrow-left-right:before{content:"\e57f"}.fa-tent-arrow-turn-left:before{content:"\e580"}.fa-tent-arrows-down:before{content:"\e581"}.fa-tents:before{content:"\e582"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-text-width:before{content:"\f035"}.fa-thermometer:before{content:"\f491"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-ticket:before{content:"\f145"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-timeline:before{content:"\e29c"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toilet-portable:before{content:"\e583"}.fa-toilets-portable:before{content:"\e584"}.fa-toolbox:before{content:"\f552"}.fa-tooth:before{content:"\f5c9"}.fa-torii-gate:before{content:"\f6a1"}.fa-tornado:before{content:"\f76f"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-tower-cell:before{content:"\e585"}.fa-tower-observation:before{content:"\e586"}.fa-tractor:before{content:"\f722"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-train-tram:before{content:"\e5b4"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-tree-city:before{content:"\e587"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-trophy:before{content:"\f091"}.fa-trowel:before{content:"\e589"}.fa-trowel-bricks:before{content:"\e58a"}.fa-truck:before{content:"\f0d1"}.fa-truck-arrow-right:before{content:"\e58b"}.fa-truck-droplet:before{content:"\e58c"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-truck-field:before{content:"\e58d"}.fa-truck-field-un:before{content:"\e58e"}.fa-truck-front:before{content:"\e2b7"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-truck-plane:before{content:"\e58f"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-u:before{content:"\55"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-universal-access:before{content:"\f29a"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-upload:before{content:"\f093"}.fa-user:before{content:"\f007"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-clock:before{content:"\f4fd"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-user-graduate:before{content:"\f501"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-user-injured:before{content:"\f728"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-user-lock:before{content:"\f502"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-between-lines:before{content:"\e591"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-users-line:before{content:"\e592"}.fa-users-rays:before{content:"\e593"}.fa-users-rectangle:before{content:"\e594"}.fa-users-slash:before{content:"\e073"}.fa-users-viewfinder:before{content:"\e595"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-v:before{content:"\56"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-vault:before{content:"\e2c5"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-vial:before{content:"\f492"}.fa-vial-circle-check:before{content:"\e596"}.fa-vial-virus:before{content:"\e597"}.fa-vials:before{content:"\f493"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-virus:before{content:"\e074"}.fa-virus-covid:before{content:"\e4a8"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-voicemail:before{content:"\f897"}.fa-volcano:before{content:"\f770"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-volume-off:before{content:"\f026"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-vr-cardboard:before{content:"\f729"}.fa-w:before{content:"\57"}.fa-walkie-talkie:before{content:"\f8ef"}.fa-wallet:before{content:"\f555"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-wand-sparkles:before{content:"\f72b"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-wave-square:before{content:"\f83e"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-wheat-alt:before,.fa-wheat-awn:before{content:"\e2cd"}.fa-wheat-awn-circle-exclamation:before{content:"\e598"}.fa-wheelchair:before{content:"\f193"}.fa-wheelchair-alt:before,.fa-wheelchair-move:before{content:"\e2ce"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-wind:before{content:"\f72e"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-worm:before{content:"\e599"}.fa-wrench:before{content:"\f0ad"}.fa-x:before{content:"\58"}.fa-x-ray:before{content:"\f497"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-xmarks-lines:before{content:"\e59a"}.fa-y:before{content:"\59"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-z:before{content:"\5a"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-family:"Font Awesome 6 Brands";font-weight:400}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-alipay:before{content:"\f642"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-amilia:before{content:"\f36d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-pay:before{content:"\f415"}.fa-artstation:before{content:"\f77a"}.fa-asymmetrik:before{content:"\f372"}.fa-atlassian:before{content:"\f77b"}.fa-audible:before{content:"\f373"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-aws:before{content:"\f375"}.fa-bandcamp:before{content:"\f2d5"}.fa-battle-net:before{content:"\f835"}.fa-behance:before{content:"\f1b4"}.fa-bilibili:before{content:"\e3d9"}.fa-bimobject:before{content:"\f378"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bootstrap:before{content:"\f836"}.fa-bots:before{content:"\e340"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-buromobelexperte:before{content:"\f37f"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cmplid:before{content:"\e360"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cotton-bureau:before{content:"\f89e"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-critical-role:before{content:"\f6c9"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dhl:before{content:"\f790"}.fa-diaspora:before{content:"\f791"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-draft2digital:before{content:"\f396"}.fa-dribbble:before{content:"\f17d"}.fa-dropbox:before{content:"\f16b"}.fa-drupal:before{content:"\f1a9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-elementor:before{content:"\f430"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-evernote:before{content:"\f839"}.fa-expeditedssl:before{content:"\f23e"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-figma:before{content:"\f799"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-fly:before{content:"\f417"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-fulcrum:before{content:"\f50b"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-gofore:before{content:"\f3a7"}.fa-golang:before{content:"\e40f"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-wallet:before{content:"\f1ee"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-gulp:before{content:"\f3ae"}.fa-hacker-news:before{content:"\f1d4"}.fa-hackerrank:before{content:"\f5f7"}.fa-hashnode:before{content:"\e499"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-hive:before{content:"\e07f"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-hotjar:before{content:"\f3b1"}.fa-houzz:before{content:"\f27c"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-ideal:before{content:"\e013"}.fa-imdb:before{content:"\f2d8"}.fa-instagram:before{content:"\f16d"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joomla:before{content:"\f1aa"}.fa-js:before{content:"\f3b8"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaggle:before{content:"\f5fa"}.fa-keybase:before{content:"\f4f5"}.fa-keycdn:before{content:"\f3ba"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-korvue:before{content:"\f42f"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-leanpub:before{content:"\f212"}.fa-less:before{content:"\f41d"}.fa-line:before{content:"\f3c0"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-mailchimp:before{content:"\f59e"}.fa-mandalorian:before{content:"\f50f"}.fa-markdown:before{content:"\f60f"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medapps:before{content:"\f3c6"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-mendeley:before{content:"\f7b3"}.fa-meta:before{content:"\e49b"}.fa-microblog:before{content:"\e01a"}.fa-microsoft:before{content:"\f3ca"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-nfc-directional:before{content:"\e530"}.fa-nfc-symbol:before{content:"\e531"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-old-republic:before{content:"\f510"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-padlet:before{content:"\e4a0"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-palfed:before{content:"\f3d8"}.fa-patreon:before{content:"\f3d9"}.fa-paypal:before{content:"\f1ed"}.fa-perbyte:before{content:"\e083"}.fa-periscope:before{content:"\f3da"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pix:before{content:"\e43a"}.fa-playstation:before{content:"\f3df"}.fa-product-hunt:before{content:"\f288"}.fa-pushed:before{content:"\f3e1"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-r-project:before{content:"\f4f7"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-redhat:before{content:"\f7bc"}.fa-renren:before{content:"\f18b"}.fa-replyd:before{content:"\f3e6"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-rev:before{content:"\f5b2"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-rust:before{content:"\e07a"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-schlix:before{content:"\f3ea"}.fa-screenpal:before{content:"\e570"}.fa-scribd:before{content:"\f28a"}.fa-searchengin:before{content:"\f3eb"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-servicestack:before{content:"\f3ec"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shopify:before{content:"\e057"}.fa-shopware:before{content:"\f5b5"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sith:before{content:"\f512"}.fa-sitrox:before{content:"\e44a"}.fa-sketch:before{content:"\f7c6"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-slideshare:before{content:"\f1e7"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-space-awesome:before{content:"\e5ac"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spotify:before{content:"\f1bc"}.fa-behance-square:before,.fa-square-behance:before{content:"\f1b5"}.fa-dribbble-square:before,.fa-square-dribbble:before{content:"\f397"}.fa-facebook-square:before,.fa-square-facebook:before{content:"\f082"}.fa-square-font-awesome:before{content:"\e5ad"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-git-square:before,.fa-square-git:before{content:"\f1d2"}.fa-github-square:before,.fa-square-github:before{content:"\f092"}.fa-gitlab-square:before,.fa-square-gitlab:before{content:"\e5ae"}.fa-google-plus-square:before,.fa-square-google-plus:before{content:"\f0d4"}.fa-hacker-news-square:before,.fa-square-hacker-news:before{content:"\f3af"}.fa-instagram-square:before,.fa-square-instagram:before{content:"\e055"}.fa-js-square:before,.fa-square-js:before{content:"\f3b9"}.fa-lastfm-square:before,.fa-square-lastfm:before{content:"\f203"}.fa-odnoklassniki-square:before,.fa-square-odnoklassniki:before{content:"\f264"}.fa-pied-piper-square:before,.fa-square-pied-piper:before{content:"\e01e"}.fa-pinterest-square:before,.fa-square-pinterest:before{content:"\f0d3"}.fa-reddit-square:before,.fa-square-reddit:before{content:"\f1a2"}.fa-snapchat-square:before,.fa-square-snapchat:before{content:"\f2ad"}.fa-square-steam:before,.fa-steam-square:before{content:"\f1b7"}.fa-square-tumblr:before,.fa-tumblr-square:before{content:"\f174"}.fa-square-twitter:before,.fa-twitter-square:before{content:"\f081"}.fa-square-viadeo:before,.fa-viadeo-square:before{content:"\f2aa"}.fa-square-vimeo:before,.fa-vimeo-square:before{content:"\f194"}.fa-square-whatsapp:before,.fa-whatsapp-square:before{content:"\f40c"}.fa-square-xing:before,.fa-xing-square:before{content:"\f169"}.fa-square-youtube:before,.fa-youtube-square:before{content:"\f431"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-symbol:before{content:"\f3f6"}.fa-sticker-mule:before{content:"\f3f7"}.fa-strava:before{content:"\f428"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-superpowers:before{content:"\f2dd"}.fa-supple:before{content:"\f3f9"}.fa-suse:before{content:"\f7d6"}.fa-swift:before{content:"\f8e1"}.fa-symfony:before{content:"\f83d"}.fa-teamspeak:before{content:"\f4f9"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-the-red-yeti:before{content:"\f69d"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-think-peaks:before{content:"\f731"}.fa-tiktok:before{content:"\e07b"}.fa-trade-federation:before{content:"\f513"}.fa-trello:before{content:"\f181"}.fa-tumblr:before{content:"\f173"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-uncharted:before{content:"\e084"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-vaadin:before{content:"\f408"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viber:before{content:"\f409"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-vuejs:before{content:"\f41f"}.fa-watchman-monitoring:before{content:"\e087"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whmcs:before{content:"\f40d"}.fa-wikipedia-w:before{content:"\f266"}.fa-windows:before{content:"\f17a"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-rendact:before,.fa-wpressr:before{content:"\f3e4"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-zhihu:before{content:"\f63f"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-family:"Font Awesome 6 Free";font-weight:400}:host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-family:"Font Awesome 6 Free";font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f27a} \ No newline at end of file diff --git a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-brands-400.ttf b/wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-brands-400.ttf deleted file mode 100644 index 24ca8b17c0fb50b39033f4514bc9a2a0ba1974f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181264 zcmd4437A|}oi}{W-D|nE-@3K0T~*y(y;OB|cXih8tOQ6PgoLmJNB{-dj1mP|TL_yX zA|iqdL+?PD^L$-7 z_nv+IpZ|9L=Z0~{n43*9ndMGAd2s0L(>9;N81F{x)^jh}wq0HPvCWLRE?`Xi-T4>4 z@9my#pE-uH*f5hmvh{+uZ9A{<5BoME@56AT7a&4esr17C3S8F(m+ZLWUw&?!hx%?| zOy6_yJI~!F_3cL9zfSEP5J4UuCYc=WqGlzn$%0yq|d_6l3hy%I1sa-iM~7Nj`v1OZ2UdN_b@!%hvKA>+Cl!vnL1^hw0a_~*UO~FmTvG$w%lk@x(?zm1o zMs!%7DaH>AJNa{>ZYnd?uA}pwWLc4)(%_^C=iQ0J40{nr6VXcjrC9bc8eW+M62_jSYR6H;+u3z?xv) z=J!FgJIUgB8%Q^iuE52_cqc`B6wi+8Si3)y;@#iwhY#;?+pnX2P57x^%ID;DV5;qx zCffa^xg?7v+)zEJ zuid8{+DWwQwL4|oZ>m?UIno_C-6PskDZO3BS*I!HL7Xm4Aio0})Sl59_iXvOa-Dw0 z+IUY}e)Fs}cU8-j-wm z7+`!?J0IdZVUcGN;R$AoI>`^$sb5-;_U~xtpJXYj7cP!GIXDS;%iHc}r(aH6P8~7o zyJ%}llym$}8o_sGJ|qFpxw*We9F=v-b7=y3ClRK;AP!-|D^y=tgpr0g#vc`NPCHK7 zPJZ65i}Bq~9qoP@G-skOD33bBqMfOBJ(Hqc+B;63HjK>AgER*YkQL()<)sPapJYkO z*G_lVn8I-FwgoN};mKLNNc)P)IN z|2}Dz(?2n0s%HZ0jdy1bkSBdu*hv$xfiwpPO)`NiI%B8tQu$8*;E$nRABEvhwc95@ z;aEN|?2MD(6Z;P75*+0d`&js$I^vx&m4&GkH2wJW6VuO3|6=-A(|cyN z%)DpjnwiO&8)t5r`S8rgXFf4=|I7n3kIj5zW@_f?nP+CcJM-+!?wRLiUYz;$%qugm z&irNOKWAoU{yNjzr|vWN+57VQiu+3Y>igF1+pur*zSH*oWZ!T1{chi1_eb{Mx&OZX zpWFZW{g3Vc+Wv3ue`f#g{r|du@BRb(|Mt57_0a3%uP=Z7)31O3_1&+(c%XjZ%mY^) zxbeWP2R?M*BM0t1@Rb8!J@Dj#XAb<^ffo+Ebl^7!mmFMv@V{1jV=5Cygr-uT)yY#w^*MV*5~2Z-Y?eY-q(KIUY|u`ea^@FT(oyP*5|Ul@7p_x z^|@87&nK`xyY@c5_sPBA-}~I&-|zkN-q)t3X=B=)4q$!iSf7Q{$76lAPMB;GxSf7th-;MQoaQX{apGT%2#rixw{gdfmiuJi*=8Bo?W^Taxd~oI?GxyGXdge1T z56wJ|_4!VFeZG(N`7ze#rJ3Kg*JnT0N7|?F3+{`H^(oI=pI5Lxzu)ivKU$yfiS?;r zeXeY;&m9Loe&EYkpRc#q=hs-D;e+Fcug{@h9s2R1A7GXK?!R0%7s>f@p6pB6pJ#uX zeIol$nPutiX`XsHbzy2G)^TXzc%nzEknzxuYn>U&}%^S??%}MiG^BRz(tIey-E6mHy_n14(%glEp=2G(# zJl|%XXKpjMnrFj*rn%f)YA!Svc)#g=6e#P<-ut};uk8(c{a($hc;4{r_q^u$i|2=) zXFbn&9`iiv+3C67)9wCm_Z#j%yFcN6r~730aqeT>E8WZ8OWfV=iaY1F-5$5g&E3rP zsO!tFjjnaBURTj&x%>j#VO{tq{{G+Jy_|0?F8%Ug+sl`i@|mnjHMrC zEYkp%b0AueW_cUYgM%-m+V~4@mdl9|@Wv_() z%0D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띰kq z!F_A>-(@O{dSAWR48l3c_)mtqmX5JPHu7_KbWwF@7lrw*pCS33+?12k> zLc!2o&*v8}<~h^HTF>VfuNFI&S2Inq^R=lac6EE3p?{~{^b%c9wze-kD%NvJ_H0;| zZOc7ZV2x_?VW(~NqY>ox2qd&aRF&1NoK&y?Ns@c2a)%|vyG)8d-)ObKHa0JOIuGZ! z_e)=E)huag%zWf4-!fD&5Ub%^J~2o}=Pzt-us$uk{4AH7uH(G>HxaAhFplvhM4;Z; zZQQ~MUF03m3OjTRyHXfC!lg*-2riMk3Y#fEsbXI@+f3ij!f`*TKrdtp+ z{MC2Nqg;%fvmeL5;s;2h_YpOwdoY;9c&w(;a<46t84XS4f~!!4d7RG=2LCsRRhp%u zi<1UYYZKSG6&JHKORH%)mf}w$Oc`aCW{cU!;FfefH`JY=)@UggNTP_h6a#>pixV{4 zJMFe<)%^OFFxNU4w%Z*IH9r@Y4cqoS30S(WnPwUZFz6aw+pPss2Sa~QRac+Ba@iNA z)N!;O26b_+k6s*yog`+6hQlFjFvb`F8!T2e)6iLKdpjLNTU+aC^#+4&8Q_L6O$JM6 ztlMq0?I@ItLE3JsmDYS;T&=490Bmpf@ghk~kfi?EZIgi_UIbjOHa|O>Gee1 zng}{n=2R^&k}Az+sYoJiI#5L(uKo?q`;Lx)dcCY(|DXT)`U@9;gZ;NWY}N!iOsRIOWxJ8*VfDYC z@)FO`ab7q4^G{v7I2bt2Lu|5*ufq2B-A^e?xp5FY_0*rOj`sK7G+E^7n5`bci}Ts5 zUzsl;+ifCZ#LjNxhj2n`bU-xb=R!f1^M!8a)q)>2GNEFc5YHAxm8I1@M=oEQqaI=r zCit}TV22l$MPE?6TS(Vjb zA=L$jGTJ;>AphQ?INxaM_krOc$4g#v<;pA{kH$D*vh^Q*c9^!TI9SBurf@j6z5T%M#kwyP@Q`es{^jo@q^XKnl#xn-^&HH}- z=kL48VLW57`+gp;IIruwjP2_B`KRCgkLO>?*)B8QVqoX|yWf3&2gX|rw#)cS&;R4Q zpC-b~QcrP0b&Bac(HJ1KBY`KqSY&B74hDgi6bZ!@-~}f5gSDtIvE9&fT{nzek8^wV z8#ujDptjM8BgeL#C~nt0*V+9}?z&;@dY%_Kw$1-`b%fK^Cp9~s8>_XoSh=oYIQKck ziOz11-&tR$$LUq{e)E(Owy5TsW1v7%{dmUxSHqlTuQ>SoLm%( zqJ%kF61Wi;TvTB-#l=LK&k(d@v{3MbC&Ofz4YRaJi$$@h7FC&-`8=Pixr(DW3Zqcm z?t8u;tgi>c_tmkCy=E)qhQXs|(~G4+N)HJ}+6Aqt#k(w_Q*9{$~Bx6gFG!db?(n|68;)-P+u2 z#EDY)Y)ENYmd*qA#m24qnsarlKWu{4yli6BJNqBp#tRhFHc^AZPUC|2Ab`Om%1mYE zFT;C?d$3kz_I5XH)Lg)N`e_^R{IKDENZ0@L>8CBgtu;b-sp}td8)3}_Y`mk!nCH|3 z|NX~)PvD!BX@lCaK#fgYG8D~F@@5lF0NPBdR9;A<_PbI=4 z8zw0lqk_5SXXy@*^IJ`(*)&T@haEnJjbNBeeQ1AB@fsqVtE92ADk~AI*@rb_!No93 zi|MS2l_6%>Bs^6jQAa~nWd^qWvKKy1*ZmrUZHo`WG%edS@p8?mtuY2T^|Tuq+nU8R za4rNlfE}iJyN>5LW*{t!^@XscGUHH0(fW=S*L(|RlA4; zUDtK38w%c1N4g=`GQs=3zV-*6Eq%W;iet@j*cPOO;5@QT$BoBpYX&riJxvF*r1528 zQ@0&U(}~C;BCsR8moyS&lTQs&)S(_Flo5^dA}ON0(DEWN@*+`rk*K^#R9+-mUL+zf zk|Hk>{MhmF@$vET>ca8yi^sQ8k;+j515JG~t4avMMW?vz3%pS*cw#gH@rky;Kj1 zHh!Mb*lkI<{>?eqbnD$2Q_ z+3{*tR%KqQO2r-%T-kl}BBS_Hk;DVmLH*arqr6yTf+t)wK`_ z6BNG$8H!3IS)xQ3qr{3xo`1m~hwi&W5E-|V$oUL1R^R&Ubjf??>lhe6~tT+8yJ zmgjq3)btVi4ZCKUrX~H*c3u{!!)Dg30q}uZ&GNF$wIt+!jWBL6)|>bL^=9N)j@yXB z&~Xs-*5KDV(D1|W#y z+M&E8E!VXgPe1*hqwgUivWU)p1ZOyAoYiVsodDn7(KFLMbO3kZs2W7R$t8xcr@ovE(%1ktynjcTI ze0~87k(e{BtI4^q-1CH)n#C&NK^q?+R#{cM)Qnw~O*70a zmQGMsDn3M9Hxj&uSR})Bgo2CAJSU1$L)QLth}m4lf+zU@7!AX0!q;UBfThVcV_dcv z1CvT)hGs^ZCUrB=G>>yn(*jeM0ArD<8B9}>fw7k4jI|8Lm<6CEbstUBXdvc1uH(jx zF{AbUt(bO$7z4f^0mjtVkH4)y2S!4?=<4Qpb0al1w{M!Cr)k@m>Xya9G>w_Uy5E#S z2q}cFd-!7rVVb6_?|-x?&992lyf8CP6)MAf&}g4T-MT z4KuJzDPdV1Y3RBkO@lG_r8A|$nD_0TaQycqY$?k!AzioL za9nOOZO3VuX3K1<@rJ`|wVEb-BP0O}bsvNwZ<|ab{0?qkqW0?daUZw!4F}EQ`UK zc+&2yZJl$S^>~1n+IGGk>P>|O*+k=LP~=g50ZEkObanJ8U-eaA^}GM`KgY*Ed7OT$ zbi|gpML9h|G|q-uT9tWKR^=fU#iB^%7$u|`$V&NDoDZh6>1=+8GE1{+m~bCl#XY;$ zm%1;aF$uFq*+`nWDfd1EUqhWgfWKtB{9d|Gs3Z`vz+5j|sy$+3Avhg}i zXOP^o>T?D#J&zg7dN; z{j0lNHyCVgcDwA6-LPJ_R{v*?pYWon)oiz-P}lJQ2bTBk?)Hz8#PiXANjpuqc6(91 zVOyOFMK2(Kt)RbSA<`#np5+omFL4#Rr)0Af13KBTFaX zkrJWG=Z9DnA{j=4t9*WlGJ(EiZ22L^o(D4EiiS4>mo?zZ^S~AM{PXMz@cd_9W^aUc z8F(YKANfPZ{t);>#{Lj!L;F#H{r(>U><|8c0e=W|@xu)GVU08*>a!(oQ9v<`h!D)H zvMMX}a*Z@g6GK&*81$sf&27hxqyBm~R*vI1D(^A-zCnP_fLQ;8UjI%^#LNz|`Z{D%`4Q#*bFMs~;-uaGK z_kVuxrN8`lzxPYOfQ$&_o}J=fa7xb-jniVbz;;MNhomQ-$mznXcx<&QuapuF8HX*3 zG!!TiJriR0Mge|$5Cpc}?QLDZbZO0Hnyc$}Q}u?7#ls$Bw(IJQS<BU^*Y&8~jsi>81F0E}u+fOxgH}!Opyp|YSFcOc7gnQIgAuE`scAwm=2(_Ab)AUF zAky7?+N5ZUF44V2V<-(;dw2G{u&UkFFz~v813D24>dI#N3y?&hKOaAibTu()w`-RWBUL1Swv&X!}tXzFY_GZ1_ zsbwgE$Rg+LHogNVG^9&(KfRP*Pw%A<)928a)3*{;leS5TnW7~#^m~|v$x<=`%5864qt{0Ld78~#Fcpu#&f}MAlwrR0AL?pr}jKUrcF<K!W;JW3{f5(2Dd3X%N(yRV8o;(44ExyqyD+s5nb>2})b zChJ%m?R0|x2!if<5Cp+`oeRP1pOyLJy2p;@EAHHf^ z7KTtA3}u?W;hpdN`ggqJUGLhe2iF0>5p(va$W#n_|7Q?6$;nEG@wUbJz3SGcLv7_~pw02A7Kc$8anzVqr<|HpZ zi`96zhqM5BWhDy?h5Jg-8>gq!*CSt0K*kR_j@G-s+GjYiB6#-T7QjW?5CEkL8u zz%5NM=7a(eAXHx%@%uo)34S1rmEFyH5HhqWtzHCLyrl|(zq{l&vP4X zDH)R%n4@#lgi&+duwzMv3mourQwekhAi5CBJlZrgPDFx;9Ja(eXoE`Hr~BzSdM|w@ zQMJg@35G7yK!}5BGMyzl0=7Ho1E?COpfN2L$#gcICEQ0Y@+ujp$#j+sg*J^sHJ#;U z)mY55g!>pqaXy`uI6gzd(~0llG?~tfs=QB4xQ{TJ&Ze_4S4f8cCk*%;+u(Xfv_3~? zHgtT>u-&mbvKDk1KF5IlfWB!U&R@Ie<=BF@X|SjCO#@GV|E9q#1ja4ss5T8e9r<3+ zR{!-ieokk$zG<*K7+{*#tC|ePrp8zl4PLXZnt;9uAcqe9fnR*zSLw#;%b)=|UWU~# z!`M7-ZPNf2(7$^6=X`4dnxQk~_$Nj;uPa`*oA zXClqgWH1zb9U*lxg%Ph%as(u=v;$^&_@!k&{B?_=-P%}v&qk{av|AhNE$J-TxbgVi z($rs`*;?OdWw4~TI`u3mEe}VYC9(Q12}tRC(z2xISw9@Kk>^Vb((*is$2-~27F|Mn z@{?Jog|_Lrrj*yNNol&C*+%P5UrH(cANBS~L@n<}C(;`fy3j3X^D*fGw!{%VOwZDr z=>7Crew%Rh0fQo>6ypAjJ(Sh7NQP4XNRk2M-GM({cIvaX*cKGjnX~GyDqCCJn z5*8{fPE^{ z*k|7jb``)OgN}bU>UFhc>!umBTVwYB0Mi&4V_fK7JxW8@)%2#WGeDY_#dQ{j6KSkfAkKhcaRHFgiNmP|R#3~m&8SWsTA2Pm!bb^_jmJEGl^B!VVb~brS0?LdfLmylu znW%OK=Ko^Z_r^W{*=DcTe9r2sdm`JqC+=C#HG940vwknW_r<7okK=pJy?#7Ch~tBC z?BDD7zI{(E>hCMH-~R$B?~U+m96uM|bC+q}8$YYmv+=$6`1e|Xb+5nQ?Dd-a{=K$+ zkB|KT-m4%_F`qP(BI*$}W_h&42;d1PvouSyTrwmXeYTMgYtJ>buzVRkM zs_kuUwfsArF3Zt~owCuWWTR2JdXh_fxIA6|D%xW;63x^OC@OQ3p$~&6GpUT+uIDC6 z@{#d$I{wK0<3_7J9JX4m)^ONvHW4Mbl_dGdXEd9McppamAJ`Hv(u}SnMewDuxj7A9 z&h_bxBf%s?+jG+d$<@`_*j`AE2Q#a(T2y5G zo~>gU&Z`OS!X8Yd3HhihWR+JckzySxu4q=xyC7l760f7n)G(|Q$8E!)%k*`^ddq92 z_S)C#{B>a5b@t=EO4569&M{gu|c9 zU-r_x4*Q2!8uu^$`{Va6ofnLuI(W--A=Cw@H{C-BvC+#b>#+BE@-p(XV8Sw-Cxqq+ z|HMtIshUovDk%~bwZUTmCIdf?V)4p49n1zYFO7Afl=cFZs0r1Rh|We-B%@T&Ug3QJ z+xxC$JsHVKIIAY}asn&)<2);!r`DOwt64EC=Eb~z=wIoBbdYChRu0N6A44;5J)yR2 z+MGNqXOnCf(!&G8FQ#4CA22H&q}e*eb7vnl(Cl=TP0-f7nidmZe!ULC&0^XGiw0Bw z%0x=AwklSSW1nc|E5{>+oct~VFvjlQ+%U}3XYcjGnt@OUM2enL>3}PMlmb#%p)|jw z`px@CG+ES!=@O%hfL%Wb{4N6k$~YayQ4|k>Wg4oJ{~Gscia%ziqO}7)J`~+UxJV_hA1mYWQHIf#{VQ;(9~N zUuTR{N*lNGo!y&nJ~dFv00z%SNc#OO>kSg*lmSCp%kt&rJga>{&u(yd2mlcG2cxV% zh->lzD7=WoJdG@`!3EuzP61vTAKyB2=Gd`?yg^$B#QPfv3^}Lkl&(|GkpVVt<~v6& z-F)g~)EzvK!}`xjia<{=#wlY*8vRj=GR`OfO~;ooos3fo^d#ks0;PM6{;*9sV{9*2 z@8Q*Fum?|(5xIttjiNNmiOf3l`NuASnCr=vG@_D8t=9ph7c;OJyxG$C2L1kEPcuyI z%Q}Fr*_QTwH$t;H-S(Si{g!3y_51z)o}MaI*KAAw-W#FWn3~^8f~P>NZfxxCZEUOx z0PRbtG@yN$R{^!kdhoB zr^ub;W#rw2geqh+%T=ToT1>2==2gKwlvvd!&+@%XYtE~YkXb&j62*(~*1=`CHm@Sn zc&tp6kP|6VT97Un5BQTWg`D_=QX%BZ(qE!PKKWaSW5hUy>pZ_!^S!(0hT1^9ght_D zu(Y(kzO>vQgb{s-7^G`!>EU-Fjwr-2!gDZ+5#tEIrLCp{3Z?J_U_u+ z(qgaY`@Y}nEiSFCbvpo^Z^RU%7$Jff-b1e?4(nBe!wsq27^pXyR!uR4HgKD^#sgOk z2HlQjb-IIrazi5seV=n()oe@uAQ>dfATi0vG9gvrr)6>djd+~;MI5JvpO$Hy`ms7L z;NQ&hp5EnNuLne5St(sRc zy!!A;D+q$11$@u`$C~hT!}LtkG+oy)+{AU2<2cUJd!M+viH-~4I%w){lDMui4c!wO zd@=}HhgV3T1z^7w1c!f(C@2NSC}TY)CGvatl2?Od^dk?bNwzRS1E@8VS8x(jJGCVP-)av+6^LM3WabOGmiSH&Jo=GA;1#sEM|BEgPz z?Fv$glp-Q@Ue@k0UON$yQdk9DY6%>xD5nhOClXES08fF*%r892+S)0kcice_^oqou zghsRB7mEl8i-q54HgcA@&xNCBd&wxCj3>0q&8Nk*8su4?R9T+wLZYg)QkD5poL555 zDyi+Sy#uwDm#a`NHv(>)L)BK&z*NB@u?bcA!EnjshpV$0zqE8CzXi zZnXefE!&Ea^1!cy22mQgogkoTq5vXpDjT&(C*Y=6;3=~HgD_2^JgzaG#OXi^6&C{_O~e)>ai5ak{Dnct*N zmdS~F6)yVIYF_$@nk%Jc5$A(^(jdbm(mX|ABCu!DvH(&8!Z8-ZQ^YRj7X^oZb#QD@ zhaU8vZUwl44B@*@;-pBb@g$0)IN_P|)=y6|ALO%Q8b>l0 z=^&q1QTlv+qJ4p7n2qR|qK zy*hxj{T8kYr{Cdajp|`tNwn;>y2C8XM_mUH0(BjI%VJJ_&9YH=EHEhr#<{LT4Cs22 zYQfU-#>v%HfYsHL8_P?lVYAKUfokPeO=+(HcE8(By09R{Ddt*vYXB<{MO~m;tCgdL-OYAw+-@_=TIqBEdNLTr%t<8UpL={et%=*#EFfKejjja>-Mj$+qbsx%0{%q zi@E#QG4DtJDCbALW5@0$8X;GI555CW6OH(!L0(DTNZv(0Og>FWCDK6vUgp{Gv&u7B zi8v|dWtPen$OMrs2N+4qLUojaK`YC%d^U|}S=)FrFQ&?FB@TiU-#bv>-BtcgoVk)m zGp<@HR=;8ReZT}T4qf0JfOA;kz&Y@PXCFU~u(ozS0Q7?>(lpINA$_oIGl&z5Su6cM z3T`2y9@OgC>G!&}<$0ElNG&PB^Baw}2N0ZFTLtJ3Ha1Vb4=F{YNKHxsD8)WfMu9T4 z5Gh5Zv|x-X3L_2nHp!*a6NCi z+e2tISBq{Jz_LTnYsWq6dren$5s-a;4!Hb zyxlI>S}lMi9t3|qQ9&34K$#|V&XC?pK~T@LlZIn^u4}4a2_TQUlMV1#EO|#tyd;mXav~3$V??R|IR{psC zvY4JN_!(%mmMy$UyGQD_#q#C<$?Q~{@VN2+v$e>?r)a&%|FMegCsx~$@{@4jF z7Bj&4{K77|##6)4VKA7@1_Qu$OC6INFBG%Ygy0X?r6eS)gjA_tnl?yH6YjhX^h6Dgs{{!wFM{i;p6fVXSGg`6{>Xcp z^*Vx5o%g}=V(7Sl`NEOU5<(bJ2HpfN6Q3NA2g!>GsUkfvQ8{!xVm(Ks$Oq{lL(|H$ zYF0%$5LK=hQ)O{Zk0Y75koBGv4NTTOCJg~};KU(;3+XJ+@}JVRDAYAg4h(xJG@I<9ysMKIE91jO+ zqTt3**L6J%bzRrP7yChg7zDl_1^_|m7t_^|=TQd0sOODVr~8vy-7`%`(;`EUq~@5W zS69>hVo<9A^fNCvU;wq+U^z*o2B66#S*{=m{o_N#J%uBImywu|k>p(3GSDHi9_6+^-Zy`DSTS)GKm9?Ee)Bbr#aZ)3s z391VFJXM7YlXM-5F6=>?7m}nO|9ExOAGhy=`^A{fOY!~IKXQ2L@X6T>-gbHN z{$}%B=DJ7TGv*)Xc?O;$9w9(wUKLX9LBDz(JUp}iXTK0#(4Krlc=&k_&YOon>B9%% zsl#_&fBoHyD=YV2C@&B~3A=g)UJh5tCW1$e(g?9KjR&$!waLT8t;L!?i{=&$D%yR+BlOM-;tU8JD{!7C#HYe3h|YcYP9u6T@|zw$E7Ib|@M~ z%(<~2_&AAz$!<21Gz`;EG9J`wK?o3rwYtwK7jdf{CjcsGwPVhHGdi*q1nj!=aP4&f zGoaM}1B)VT9Y1#LI41GNnySgi01yqcUN;OxxaYqf1w_+oHZ2no{N{9*5S+kevPF&% zl8aGU-ErhA+!RNB1k++XnfjH~V==(@bydzwB{8!`wdr(unbPIu>9jVoI7I-YeBEsv z{^C2|3CFiRhU#={3Q*NLT{SYloPaq}-A+v*s9Lw9zWJFOF8KVHyvoiwf&ELd4A~w` z(>$w+X%{LvQHe|k>#{{ZM%so%eg;%9HcaEBJ^^f0mJGYNo;!gDYcS_^H zX8%B!+Y<||m!7lGKL6SO`F;znAEfQ=&su2pMSmz6*=&b2+k^4sdOkBDMS4w(=zpGx z9RBy3PA6SvtZBT5W3K)2!v|Df*Z2Y52^5#>I_-My#WSGaJl8?5=uP@JzxZMu^q25Q zy9+w#edyCPdhis{h)ohgKq{G6d8KHjWWEP^rKFNMXs>(81LtnKc=4u-7cX8s{Og-; zx_I$<7cVZ8H}U5t=+$T771$wZ^0FSRO+rSwR8=mO%%!4IRWgkW)i2YyU#5_LRr~7p zN9rHuU-G`#>%F*l-`BpDAO6h(JiPGc#eDIVm%Eqsn?@JGsy$WvfrW*aJoOYIgcHIE zJxiaYWK3=)?;*-(LYr{;SiR0vLi!TXSwFw3(vO9$yd4x~^bj^fBWfO=+7CDpvd z;Hey;r_%xBlj;b5P~04`b1MUdOg`$&x>CqzCcQpDzc-oIy*Qle^gf3AURtZ8CM{Ew zaBh^(qtS3U3g-(WK!j0Vg`?qc6wUJyz}W6YgF#D|Qg03VamRLDC#Btq`)l565Zws^ zAV?_AeUnMA4?p+!@%7>ueyNUFH#I3WvsL9IfQ!(>Xvx=e0Dw_mMZ@866n*=g2Y|f5 z4V;;<%^|@s3JYCw)_Af@LSF4gEl|8a50A2i~TkPeslYd{V7*Xeoh)C z9g-0esy6=duV-27I+$x=fZ(3e;YJ-mzvu^jDL5vK^;Acn3Tm}pzxgiXxXJxNzwd$m0?;q$ z@cM>nS`dgdtOkl z`Ce3uW7id{x{jM6qZovN-Nd}}`Kq(PfpabZq=C@yAIq1*PFpDesRL*lV4O5tVZGZC zpRGrs4u;`$mLMgJkgLz|>`x&hI&nxyNLa;b>8mo0yHKXF9~Y%0Pe1+i)4%aA|MD;Y z0{1n3@Tmu&#HW?CW#bs?kJ{2Dw@n? zR?REe|5!CEh$o^i!^J{aRSHTbYFT|U&p9dL6*UW}3M5HjB9EoxN!SK=CicKdtb4$G zLnUg8&5^}=DAP0t={QC6l6eWpkAJ!}RmYRC5giH7ebyu^ zvs|b@NxMsmY^Xp2SSU^@1^g3^s3Rg;o@Uz?*oF?2d0w{c`zVU+#PNMYr<_wNbO2LJ z_FuGXLO7a{gxz|e>4xQ-wiBS!Xec+DDH#{KX&RClhQT?r4UIKGf^^|30m_WPcXS~c0wAE^mhb7D z0w85@0ss&q@szgvA58(_@Nc9AwvGU>G*V&cfb07S(t5ic#{f~(XeO5I_xyUJ-E45l zDMz4|5JCW$T5K8!fSSjd2S@>t(K=$o(-@PM8NjaR)jVJTXlOb}X)rKNQ#Tx>Qb;rm z0U+!!z+H+Qz@T7I1j=noAk&d@My00l!=I>Av`jE$WS9t+rXv6f&Kc7YouO%4re!ot z9Sp;Dblvv-AaFgC)$N*6y^hr5Mx%xl8KPq&QshRh+442tPq0<1=~DOHFbKG=*^VU< zT`lsIArqCTUZ|dDxpEX`q1@cinVhRc<(@5qyuO^3 zNrfj#HBgXH{aYf>a%H`V(9nJnJLkt8pIt+_yj*Fu)1~e`_s`#Z7(moiI5}RTwL6e zQqYyru%2U9y{G}v1*{+=u?oCt)z?R|Tn_Sy&mo?>ogu`!GroeQ@;Z`cwgRpB(%}ag zZf)J1B<+0M?Exf<-fF$~BkM0s(*a27hL&#I$s&Sb1PHpe+-d{%2Mf#nK7!O--_Q&* zTtM4yYFfY5LhKKg-xsT!x3-Wa0KM)wZ+{tPZ#{3{9tJH-*U{5;4X|zr&Hz#KyycZJ zaNW9X=wM4BK-pXfK;iq@N*rSiX8$Za4}O*m$ywX(lGsV&24Oj#%++*~nhvIAHP6Af zL)vPss+aqD$_JekFzl1?KQ0K!T+7wa8sLnWh%HP9?LW*gv5 zho7r?E`aOR;QF}}`z5U3XlfEbYUYiW)P6ye)(s0YZ?L2WPl4;zsOz0R^}UC9E6)vF z4-S9Sxjg2fscD*K9zM^KnkKDxe3$RQgpi*z+8`4TTIA!Fsup5I=HH0Yc>AbCM)JES z>iDb37d-#@8bB=$0@Drx+X#bLfmT;vLH_*1A2yOCumraqux&1^AV~~NM}0(2UZX*96xrFRO*GGgk{t;@Vh6 zkv0~-UvEW`R?0YTiSvs~2(R8-9Inu__B$Q^>a#SC+wFSIb?UWlGYHr*m`rZry5t48 z3ZEoCnURy^4)PrGa`JjYV6KM5sr@#QXB8b}cJ2AY4~b%0O(%0~)j5@f5;G9|c}|7> zNccTUfHv|>Qj3qp144;PWS*H`yr)-XvlsFlKFBRA@G13jRWqdH&@1!Fq}v5NTdb}s zWh3Vlj-+Y8tYe(-9(nj(Vr}i<=)xl9>uX1kE-s)MG8T^79osRf=V@*jEG^EibGqGr z*EDUX-R|}r+rDI&hO}bCG^H8$b-^@UFb$m0wkbG{5Y0yBGVUGzv+s2~%g3*o`o8Oq zHLTlKVWBFDW z28g2VIEq?L>VyG8l8i=cD$6=uM9b7LiX7KDnk0aWBN~KK4hSKHk>KhT_%XObToREw z$q1?XaU{hu$TA(|*)I0Weq8p;emv?6DcaDdhGquvu`pdNOH;(QUUyVLMSb-SnKBZu%7n!*-Ii!w_&~AE~Vl*UB5n`pS(a!GaEHu3{9= zOg!8>SZ#%Z+lFDY*fq=~4DFHb*mg4l^jxoYFpc(>@qx7q7mGNUwVL3Dx*oeOuV@Hu~1K4)7UR%%} z+0J@oJDWJ`+qo~A>HgUruEM?lL45tO7kyO~BHEbDr->wI$OUp2`5y8DAypKoO_ujZ92F%Zkvp-SS!&3-Ubb`e3$gQppO zNZ0{Cjz99?yw?W^-~x34d^8LX0Jd-1SX*yvA_zj%K%?>b^?pP(&>;+hAP7MRjmGB^ z02|)6-|mhE07t(J;2#~gTLAT4==TkRb2p*aotFm(<-FU2`CRJoZyUvQe|_Ox79lF- zndUqXzd3*=5#X=hb~^xQ8oz`K}P)saN)Iq_2q`ITSgRfn*{Dh1y0TQ@cl%kpA17yx9W?c+c3+EHiW zdkLY$z4{FNGdxA4ww)oN6jM8B zsFW|iHe^vfv$=84qxoHLw^G;h!fr2=zE?lE^N~BDc;`F+<2JbQP1tO9+ilycd;Y)v z*`Hx~%wNOP;|eTPHb|_eOIm~gPuvFlHSQmM+>m>9Jb3ij`qtLUGR5VUqmxd@b?Dpw zp8eEg2M73+({b2F_JzeQ93Z^1j!p9G$nU_G=5DXssu5CwK74)@_~GvtEYv(fr&y? zuH5Aq7OCzw1XqZo(Z)tLLQJ@5obb9`k1@ugG>sTzOgn*o2R*=xNa*wjoq7w4MvY!; zDMY0ZY=>W>H3OA$r8Yv+w|iqz(;TJnNe667IrDwSDZK_<RFqvgfpY$d3V$ftP&a#*>#=Sw` z=j?W@*AQ!#)Nc1kZnlP4``*rMy$4()tHN!Nn(3u{f9q)n9OL=OblXDI5f>JAb{7@^ zXkCc*LyQLjXN)-xWAi##n9Rx7z^i_Oh;dwL02?xBt_mL3YSRg%25X0=V1TtB4aduX?{p70bMAe<4EescNHJ zSVVDDMoOw4=Il;j3p^hnPP*MBhJixw2eNs$ry79o!Ipa!`AP7e-HXzG(X}-Xze@b7S$#AKV0(M|GAMCQ9tUO>Ue3Jm?kY#YF|1T;<(S<-ug+; zJ5{3~HS_eA=ML99U4U+9?K3sR+KDaIQ;u$T*ItXQlWjsEE91h{ejs{{tS_aTtZ<73 zR+rR(k)=7L;pZs}k}AxB&)^AR!sSA$0cw^Ia8Kko&;|E%SAMU(9Dw{L8CwClSQu`3 zg|IY4je_GuaE}m&?{neG=iE>D09qOG9ul~R2x4OCg8|9OieDZ|)adeyz>n|-dg;ZH{5yWVr%hVe*6u0-uc3!IQQc}PB?|!kqJJUjC-8+oqJJt?Q*JglX%{ z{;Rcr&eZh||Dzl~?MA)8U!7UrC*ruvxv-PY%yxTm48CU?z>YK1^p3IP3{1oG4fE3` z_i%q464f851oYoB3SRH41VUHg$BcqQq6UO$L|(mun{b6ll8_VR4EcTX$K)CE9YQLx zB~Nzs!Ye9i0VDR8JChkIxX`vs_Nfn$bn3x5-~jh zyi^ojSxVo5m*b?-%4=bXW3y?Wh|WeF&BUF6aN%8?5+9U&fCH4zze9lJN#ls>0I@SqcD ztzK9A7HrqjbiG21pxD0MKId z^#=w3GAFc6ONMb|a*cWx0@P}biy%P?hcZL}I&vM!HQo38Q6Dk#efO&ty|$M0P9bt9 z2morXZvGlY0DeUXZPkd7Ild2IQimetj0;TwfVwM;sT3_gs12gT5?qM7BRmV}PXNH- zYgf}$NMOvBjvh(@tQ`x^Env*@;uvkqbp*4ht^=hMOp47zV02M8lpY6y0E}8K-*If) z)xdHMp*yzV0;R0ib!8YP5*Z4QhUHiKtDOF zbM*>*8m^E&*(aCCOE6swZnVc)W;>#*5pc^JPYP;ikY|(erZlars&Q;ybs=$K64{3h z$i^2GJ#;m30)t7mjv2ig=|ga}Y4o~6Fm5G@rX@*hDNS)+-gseSgJGI3{g^J>)_-B5 z2%u2}%{452nbOtk7lI(9%(N}H8zEQ_gzZ-X2ZlisYzID2L^JUG03qu(1zc=28|_xJ z(Oj5Jj@`Ji!RGS|j31j!7XHk%5g4NkqbS0ra%_Et(dm1z+Z%Fj+qOTbA@$={7(U7X zSVM)oeh9!g_@*C(KHzY9v=)Vg5W;hcXXFO*Qu6(T@XHBGs+85)jH51?shA2^S)P?$ zNL4x&FKaTAYM$#HIs-LKv<*k_c|JLWl7rkCIml%WM5o%C<=Hy6B^+~@DzhpV!&mBQ z1zfUTFBZV}>&o-lbZy0RUBfUQSjlXgQz_g?2pQS-t5;;4B#AIx*EGOcS@o6U`hLCU zd92ZBM0UNVGzo^3GDJYmqi}Wg0n;>G*IkL5tp@kJq~ZDCI_ly|Zd;s5;h3&t8Q`w0 zIFW6G?==$7<@I_!(z#&L^+xbO!}Gy$5_@^o1;cb*^MRGjwm6f*jT+4c^StDRD~Yjvf`57q1S5D_^Kqt%rMZYGvUsl~Ppk6{DfqvdLDTY^ey zn}=+y&$xT}gR<>d2pQ^vbK!YIA_yTS?!ya-OPXXvmdJ5(mJk6_BU9fXZq3%An7>ou zWhhlz7Ai$$ zapT|Khh@Vw{xMBIx3!QXWZCxaa0EB|nvVNIc1y&P5JDs&SDz`IUsit zQi=Rtfbqttin>yetVMVT;i61qIm;gn?J+jrgS-E*$!p`RoRvRK+pBAB)Iig$h2&>C9?>9ep?X}Bk1N@+V`<=}wf)DyZzZZr8LD-*q1FGx#03Q5k6KBx6U~{&r z6tvs$kq}!c&kDombj;!QP^_@=hAiDA8Qg7oF-wxiakv@ zwqr*GmoE(`)9dn@=f!b%r`cE>cd-2u*wuae`_6kgm#skRnifYoZ9M`lC zalCce3^j=7`LWAc-(L}eJDng5G)>dOAPls&V>{woG1%9D7Y4}&)as*Ay$;Z*XV*a( zw(5SsZ!JDO9;o>qfallh(?3S2hn8(yVPIR99o+8PjZ7b)-{^!Pfa9vs^Nahv_%ramdfoE?Jg;8&d~m_C!qBqdV<{=0dpF30 zoF@-uB^LHbE8)PV)FK^Dlsj$|L^oXvN}a%B+0|~VQjwO`YndpK==+Jn2L)d*%Q=8x zE?7r)cjgA#P00Ypd;5Ecj0NaLHPwCKyor8Sip}e0_c`Ut9iL>0gc?(Q+xPc z*5u3r0LMj#@h-C+IH1tdbsqo%j|)aur5(UI){|O*7{}DJteWr>;HrhMz&>0d4V<$n z;#6lQHc87WPs?Ip_0lFq4Ey)V+dpNmP!4zADKCA@S*9HBgZn>kT-Gn5fIGjSzsi_d zix7tpQsQN}CO0(rg6xy?pebgIKCa&G#VB z(gkl_Oh1hLO)BAnN}PPt7gJXGEd4-1H*JuTO+i`Zvm8KoWf8kDiz77|lhCj7EI-R- ziQ+K`$hIX1aF?T#_g3?=%CmJ4u~f+gugcY6L9g_=LNF!-V~JZ3a1N~QB7iHI`9b6y z5jY2|Aqc^(O_hLkDg>oc(wR7ulKm4RLz_LMX^gQZ8BzmMif19E6zFrsfs1h9@Dk4v zc~-TQ2HGDEk^~@028X|&{LdpLV<6^&G2j9i1JPVc^E>3q(G!fFI7$KNDu31q2Ea}{ zi`V#Tj&pweHT)i$rj({BO#nAHC~j^dnDqDor3c3;(v!y-JARTr*TQ}{Gx&*KPt*2) zlA{ZN9G^ndSf@ylQn~dRj!L}kIOoUTCXRrp(jgcq|3gDal0iRFumkeVM_u5Vnf7{s{r>V&3n7l$Ytx-((;^xnSFdPyn1Cpa(z6+nC9+NmLLgT+ zF0u#nU6`$dl6jfNGOwhPrOGQ6R|JC%%Sy>AuVVPOzqPEtHH@kLp81jUcdy)i{zrbU zs($WA&flF}d+oK?Cd=+u=zUDnJ|?V>netTHk-}f{y*h%(>Woy1((T~+(|y8+ieYo$003~Ns&BZWC3YOksVFyqDJHcX<0Q0 zrdFys4Ou0dVpklXOQNU5!7b{h)$vuce7}UP!0$AnEPf?H!c_?MI&EEdy+Pbs+1ahvXugmy&|@vf(Ay4^gF%MK8RPN7bT%6e zDVWQK*}jE`LA@S&vFEu~w_Vd@z1F12nB;;xajX*C1{|cltfrDM3@zI`(o%MP&2<5MH}PFpPa3MxFs+zUMj54gBsC$!ppnK=(rq_fi}SFNBtk}r zjB?KTs;|dMgAgFr)vv)n!_(wZLU@)>vfOtyv&l4oX$uHTeLR_0D=$ljT}q9|lUbhS zl@d|}bIiONt9B8emM{{sTuE3htB-s`Q%HbQ)kd!i*y&Utl7#cMdK6g}1b|Wl-4C!G zT9#qJ%8J7nn63xy*s^U(BR`5eZV9T(MT)QJ%c9fnyxNaKV-eQovD=N>8{Wx2|7ndLH3 zi7E$qMb*5@=S3-`kZN8*E~FCT0x~DtT-Eu;lw2lCCb5v}xX>}jsr)L-t4lz0m#u`% zg;XMrluT5WsC>=?l0(n;x5wj-r<=jT5&m~d2SW+XYXCGnO+0mEAux5XGahgIK7UED zaD;jLOoMr_aD*RXzwR_l&dq{uuPhG^%Cgsm`8m0#31xtO&Xe-xx>p4HJ_VrrdQfb;*E;+sZ*9>_&|cRa`;FI4_S*tqX}F!?ctTj@l~EXsQmSj>NsK~D z!wBC31lb`cluD8{p~50b+`rjvm&JY8Uc}!=(-_bw+=$I z7BB&Juml{x6BmSB{U;>w4zftL$Qg1sd4#-!kT6Z@%0aV64;ZjaSQv>%T#*8A#FbXc zpa7#oCZv$6j4Z3!&gn%g3Ki#BJ};)K`jP~2Fqx;B^y}6vqBv4fRm5pL=2ia(nBTuH z?sjSlun&Q50EP+FYSrTi-R?2dvfWloDMWj;hxJCij$j1N$hM(q=$fuK>bjd;N!e6@R zx#^=o0fy9b`^t(Lg~fY87$#>1;lyPzVv!ypq2KrWYBGM6DwWfnw1+#PkOZzA?#F-F zy?)d&4N57a)G*uW4e-?AK3w_b`GXICcta^eXojXIN%c`ekkqeUfrsG=sgvV`$l$?l z>B_uokoAQJN#ZC=Dvw%;T)9*E2+tL#ZJTPX=G=7Mp7LD4R$64>#wg`wHkuw)&`CnlxI%g3g5xeXrroZ zA)NKK)lLT>&$rh41J^aswz(Naiwm<;>+47e;jjf?hAZUESV+LE*rlA8Fo+QbAjB$+ zWf*rO>44k9&w|sq7>jm?{iHMuUAL`<>jzA9d&6NE4u`$2V1e&8EL+zNLvrwh)C|UH zo?W^r&nahyCWQyQWm~olwPq{fx^4-!1H_KX5|*y>q}8l}ZCkdg&7vr(8P;vPM-X>+ zZ?}wE6h*Vz=O+*r#J>6r7N0M`F>+Fp^W=8&EJ9$alyOa>z>*_z zS{RV{0GjKx-PCcRkl%?qa zx@NuE)OB4qYXCL)435XgPOq&YuC1MJwgBgDCk)_^G%f_!6o7iR#)aUT0#Hzcoh$=f zTRU|_u{{6~0AYNvyaFXC1wxvp6k{PxQwmTDKDLuDATH!PI|~a48nnl%)$Z4X(4-LP z2PlLlg+M<*LI@-5>J|7exI%oAl6%N22?+=3dRA;$ofdsBbzQ5$?h1v> z_iA;|(;;0$&GYA^-p2k{>^K096aTLW-k}R=j?&Xh%Z_VXLqMa|Y5_p2+0+q+w&glY z%cq7zO9~m*8O6H8G(gJKFVsx~aQ)|Xr9tiL75Hmh5F?3~?S7lnxX9DE$faMzRZ;ma zq_Rx?KD;r@9?kR5-uvXe=YK3efByK*P{OUxdCqfw@Aktl-G2M`0{MqC`}?$%h=Y;+ zN-Xd2lpG@$2!T1anD11oc_vu12U(MITqUY%X9482CWQjSK`Jrg&f||n7xHh)nHS5m z`0@h|g7<7w(~vt%*Nv6ovZ+a6U^~`X3824wTNs8m2pMC>vpijw?+^N#VTdD|u6fTk z7-xsS5bBSZu8UHdTl23^G}jRgDul7JXfVdUQ`0~Q^SPej<^^3hD zX}PaoXiEhBcGt34hv~ZU+g9{Nhq2)6h7`O`2q8$w)jxq(!Dq;jTu(?Pqz6imXc@9H zoLAGT9fHbF$*jkA)t&_81kA;;N~mI9%_eb!h*jqUb^*{S^y3>_MS^AK%=qStk*q42w_CK`V2e`PZ5jM$%vGM zgozR|3#^ljmOhwzb);eC|U;5OVby+=r)#ONL}hDsl&TE+LFwq)PmH3&z#FQce;%s#LB+ zCR3SoVH>Jc7QO?aSvBoKW$h<9i41*u9U3@m%qx|rnG3~?flkkOJSpItKpFI@%1zTp z-Gr~`At}s{)edjnTh5uooqebU!{xi`3-yJ!4H8h1!MIiH1fgkJ34oM(>~rC@dtm@? z?{!_Vv&1OO0CDsO82Fmzd&oJrKX~|5<;_!s)yWi4rvGAAX2n!Sagmi-F_%$XlvNsMsY6~YE=rZ9lYtnG3pphz zrb?uPTqYm?ERhcKvM5vBr%+NPdr*|sDro?jyvp{4n~2i8JQ>s+vX*?-au^kpg zNIawXuNwRX;CE)j;jfye0bsmHhY+-98;e#x3Ih>7y6>Ws8A>Uq1E10K?+xY@K zQP$M8i=MT zG!2lWfPrMdnEe6*gN1x+DIHq2WsTCMt$YEpgER_;dAue8G#w7!K^rhYsPjH=4KEn( z+qM>RP~&6A*A-x%Z$GxOzrVV=zrS+c0nj98BhKQOan52$7*`JC5Ckars9`abxE+s% z$v6`N!O$fNUz(=$ZJ>4yAaEJg1P71_)7U8108k4wid+iH9G6ikI7K~R8e@*jsK!UY z*(lZkP;*0#F=t6@b`9s?L6>;CkFQ{iGsYOdeml<*lJ3&-(o$DJzOY4zRR?EF(ju#5 zlkAfVYe{ zyi9DN%jHy4vYOVJY*wQ&GFc^sO!Hv33t6OP0gMtx=het){s@+{95t77S3AiE1hx~c zFy=W9gpDXcZ)3IHYPDBSBuOyT(mb?n+YXJAX5zWQgEd!0fKfjVyw^Y)B!HghX}YF? z-9U^Y*AUi2N=23hrm2p59(*r2htIv|)?1G31&2%0Wz3bj{@+&J{%pX>-Fz!h7KAMA z_b)hslQf%NEN?x`?+ZLfCWf%$RgobI=YnEjkXu6c1&$(@CfKqVHSB!;*VPCM! zz_o0+aQL4NgoA#!YuzK~Lboi9NJ6eYgZuCl8IlPp$uV*RxsBXKh|2OwmizM?s*J0h znRzOUxTsW-!6?s2rd3|3s*ozpt2nQC0WnOUa>}HVX&$F#q5LP6q-t?A={m?FAAb-% zukro+TGw7U_>FGw$o=)H2R^?%Id-gATq=$qFP84i^TU6+@ue@l@rE1z&uB2pc6+^@ z{MQbw-9(#{vTqaAF1iYAdX`3tG$}#sc>O8_N3I)ahCoR#4cdu!m~K#y3c@f4O*NsEkfWz z{;sU^kk~g2XMux9Lk^6Y2&-^Y$aN>QEWnOy0reRgbYY){6dNY8fC4bi1Ok&9(2(LM zH}kP$`Zk&ycqRb*@$|Y*Lj;fd47}SS1TREze=b5dLU)W!^bAS?n;2<`@S4hbm~V82 z1ojXE)|3dVItmlOw!;pBNht%qPvO2h04UHrqW~0a+wmE2(?ndbpS_KP)AsioP<-U+ zQviGfDDVeo5Ica8o4cOQr~I6_WJr#Yo5+LYS>$o@D)IqBMwu*p{NcrZ^;w>kHN=G! zd8v(HlU8V|;w;VF(ELPIX>vRj$Hb+SRa~e{P6qO-%Q3I!YNFDzC}mlxERW>^;TW^0 zN|S1J;h^x!7{&1S9uCoap~bls1H>P$Fi(%eN9lSHN1+YqTc!!P7WjT(fp1wRoM?h+ za2a@p0crCr(=<8kqSOtxG8_(vX9JmbQASaF`ROV8)Jd))*R3}^55RF6b=&?6sMP>L zlmf8Zr9Tf5c@MMy$N}_$3A)ahrujLDfexBZnWlvsQy1IJFuW(UZXZFr=@q64fUkH( zAY0mxfwm~WPuJ1&yM50q6l!hV^Lniy41<;w1PCD$BycUcmXIosq>uxuShi{ivf6?^ z7B8#V9dNpBDkMzF><6IYCeuHz#*;q}<0$QhA;d{*DGVIStwDOW>h}S=y_}07g@q-y zZQQ=p=^~!gW!v`wc2<(aVASuluRYoy;43Hf+6@J|F4k*H^F%?rU0BX?yA2SAD-+)r z2wI~HLwTM;7>u_AK%r?-4ZBpJEh0K|+wWM9V~wJ2T8+SVEGtYb+j8CRwFnm`L0}?E z+i8seOw;Fl1t1C=n_`5`IzU2ME!bjz2B_ybe+7b|scF3+0LK|LTn`K#dg5OArduhf z+M=80)*!Mur+`M*woDi^1)W?zw4W6QR{w z$0R{j|5><(NrIRpNQfY-SFgZ(;0ifHt|t$XmyxfNKjs>>ax(X`!;r23G}gGvqUF^@ z@kC+Uzg~w>2GXyDg%ojKLdOLZCBo|J*;|V#fMKR7H4WPW&~?+~FzEjf=Z5JGkVXaw)6g|Q*Yyk&bSnrP zS4#2p%F)$9-?wz#k(O?oAO!>Pz0h$0 z+>OoE6^ff1xAYrzY9NNg-TgM zO8BXXQcL~72XH;#ml{av>W&vht_xt>ZX5;_7}}O)Ct+ymjGG|>g04k^GN4onQ*U=h zquwhif^O&rrPm_)iW^F5HlEK^rF$TLJ-Q~Ow5U|^%<`q>XX=MX_vqc1@4o$cwcBCw zsi#hv3}+nvG%Ou{^Y+{IC)?~?{W?zJbL1pBOD>QH$aBaO0`0r_h}M)|zV)*-^gq**%BkC2g)LXP8UEQL(EAmT5-k(yRT zQtX~rv%HFBInRr@ObM(UcU;PGK3Io&IiAeQYFeqd%;)8Jd9frKGBq zO!F}5LLA|c-V>QuMVhF2Rmi-M)x1!$j4LJcGM?HXEmgJ-Wg*id%Z2!!QAr{5LheB! ztF+=B(hxGQKs}!{@pyuHfnaX{IFdigrR0w?=^$)q0CN+-tN_ee3IEwlItlPD+MzN5 zjKdeKtgOIl0e~AYW3*Vqm6a7Z3F-cQKVv2)+<5(s*Nf|pi8(Yz_yb#jhGJy z6=IyO!EfJ8nT_`#bwCIqz@d0AGXUp+;%quV0YhbNq{?UOm=rq!~x)A_W~rJ zy$;a7QVEjq>J|7=xI+9)))WI~(QNd5c@rliG4KTcoa^ z=)B$5bts;JTcFv@|4)|Kf4vNT_>se30o}0QS+@GJ(g%67KY=UoapI6BSs*1Lwli;D zv9NJQl|R(00MiKMyh@a>Nn+^`g@ATvS{$j@?mTfKg*V5|CvLc55Hv zdgN@(-`#1Z*Peft$u1onr1eN33BgT#^BId|pAb-~9x*OtIIpH^UOD)xL9DZ024Ji zy9k5B %hCGM(@ULB6Z?|>bC4_Jyu0De=<x3yMU=#f%|gi{bkC)b`4%Tk8&04QM|I0SD;}UO7t#2#xyE;g6u*br7Adjkki+ zbzr3Hwk7X%GurLby=~*~1mUUiIzpOmMgX;1YFcimGn}ObXhm;vd#~%F8@r2 zcV6CQo!@3%ev)_CEv(Cax8GkM4AuvOxA*&ZPn^Kr{r)=!gTqgn=E=d}q#Bq%ShuL0 zVqtbZ2G8@708s;Bn7T$hEnQlH=K*@Y*NF8+KXY0Z=(_DY?)R7`Tr$nWA2QAIPyf9A z%fA3`ID9F*;qX1CX__zW_rGnLrumco{!f~wX}-4K9}fmMn*C%r7-Wv&v~0s>hGVQc zhO=br&e*VxuHhJ&ZX0mDVHn16&fy;p{?jxEznKnRq=!Eb!FSbHW<&0J<48ySXyQ5-37%pqlTv&+Y-}vwgHN+a6 ztKs1vLm0GMDG+q4jf+3eJmhb>bHea4yqr8tFf9(q@*p{C>NrudVMiiMkoye@=&Is|l_4X20KWBGWY;gb=;Og{A$K6~v|G zgENzH-X9Lf6VLO!HP<#Z$7AI6Os_v}2cfAk13*O0W_vf!0D@q>*Mk=q-5y{znv6#y z#BOhKsoMj~43QcLhLD1{JRe{oKYFmZ2)MX7Tj}+X4*G)u0_Wi9x^7H+T>#zCC4i}k z#56G*?HVSBc4wUs0)$-s6}SvvAvY2d`bs!Ou8ZVR!qE^3n#q5es&K#@BdZzRYAwjW z?JBc8OMm0~on4A?97)E6-~uqucW3<`fUZT+AhaDcEdZqwg$9?VuIHsagILcr4a$uu zjLN~l_pqFufv=3$FP5z~IJV@PZad+TQ3lXzm92ExXo6)$tyZhu*QD<)Hfl*@acMb? zW2ph9OU>r069l>r?e^;G`ni=ALJ7J03|!$jY1YV-QM2MrHD#3)VVrWNc4)4HtXgcW zxMC16HolA2n_GDqx5>d|kY=>7kmJZH@Syo{!NYM!z$*@JKQf(m+R*O4XtH@^T68)P z_`Q!8%kpH%T7c#3+H>;?X<1(TAa@)tIpcydtri3>lUzgUJF+b(IB+3!;6ecCItAeM zTHbJ6OSdd0DGCI*dmo_PnNE-F6ffvDC;zHlU0CQH{t(nza9pmI*Un0q&(B?3&hRZ% z3gnVYNd-3@rzr$;I0s!bG;UFl0L(PQ$oCk4-fV^@MMNo$gi{29qeWa&gC-%65`!{n zTs*&bRg~$VX>4qThn4Z;q0}bHFi|xBn29FNDcC= zib1c(gsia27&}N7NrB-f7@ihWl_&9*NmFv2i%AkEGH)B;5CBnIPO<(F zmAz&)Es`p!=0#E^-eHt`bCpohu1VKsr-)v3kZei73&AAbxIomMk>yzaDNh0vwT1b1}+tkr5Q_lJJS zZPjWufU}5}PATv@cclcRx=$%JG*L4dWr9;nh{M}}Qq2ayI@c+J)EuE1lu}%K=t5Ly5+ixr?N0I2S|nh;U~$TZKV>si*fdCW}Haed#YsnFDQ4mtp1CPPjE z7%pvWOsNAGKKjve#}5$Wc(*dj?ag({KtpCS2H@hOhVQ$sZ2{MHGpwnfX7zfz?VQ{= z{HEjk2)beGrpdSv=I0MpQ#F4Kf3IWsxc4MW!h!-|B-4IO}@1(Y-0bX~`>ZH-f^QEG8chqYzK900EK zz|sv7^$Y~f0?urt8l^1g_amJ#0I-k(7+`SI?FYIZX~@B1T=Rv-TrTQih)M{BVOZzl zkn4tSc%H6o$sNaIOk=+9Tfn6r1OfEBiSBuZVd~sgEo1usNXR)@zVB1rfp!fzQ0VkO zoy5Ih^Y|qnlu6dr@1pq^Hq=-xa z1eYU#4k(3Z8VvwIO6joGa=m6N74k=IO#{<#Yrapp>jj)0#1S$oIU+?^?fIQnZC?n0 zzApuUFrvQI3A(EY08B{a7)Q;za19d-JqTToG2gGj%Z83CWox*7_yu%qN9T-EP16k1 z_#D_y)Us_|cmZQ>!}s8yIb|qJE+wF*$zz6TXqrYTUUdacU(b%V9G)n=s)=6p>79B;+v=My2ZHJL<+jbP%_Mtli z&3pC1@clPmnoe^r>~81mnYVvWmN`y3YAlUTb-RP~m2w5Owh`LEJp@O}I9by4R;Lq1 zfR5W}4ARA{yEPj6KK22{Q9rsqStmQ>47roMguGX7pyUbAOUX$6KsPxR>mrsYl|*J9 zi)9$>!mKKiE(kemMP42wky0Exp)STfd<&=bUOG)=sW0r*Ta8PzY9!fOlRRqU|{LKTi+8;URkO@BqAby!rKvy`BNEacp#Ty=%m- zVHk!B&41`|u*1QBcp=@yzcQCkMr4cJKprKpBxF=hi)lJ$3na(snBX-Rq?17!hixtr z%&x)HNC^=WaiWqUluwt+HqCd<(P>rs^`w+4%gcG0<@2mh!5C8NI26t9{(qkDj-nWxmH>oCed73B2iF^Bt_xZ#+EH;wZODdcyqnNAQV(`(L7 zr-;+(*@d2SQX}eJ-<`PH?sv`jFQ@-?`wdlvSXDRNe#6!_wpweeB|L9quZ7o4CwTbR zcB?rYwp!NLzizc!!(p>!!)crR%jNJMoX@YnWmW=|vs=pL<$4{kKH@F1O)il~2tnb} z>7bTOe8yo!|^t#o?*^?VpzYmAI zbaU&b3)|ZiH#cv-b6&M!Lc~S_FTg(tkxI$D%Iemr@;%Tu(ww1u{^5r||M}HMc=__| zeElO2KU_aQyL>rptbYFUfB5i2pa1-7J-mFmIN$j2Lk~C3%`RUK>#Lvty#6WBuYL{w z1Lxw}=VXSt=+YfhG&!`Ncuj`{P~&YjdF3n9nsxqsv#ecv&Hcm48+!hlSG)p;Vv{$& z@|DAydH#H(tY3Q#KGJLFuX*Jw2_@p{71+ulIeHDbQ}0yoLZS?)j3=!JdmgkP)C1xz zajOT+1-m9E3dj3*O`ta)5(6nDgmJwd#^-DyJlE~6opU``NJlps-8ib(45cV0_MXJt3^_+D-k($4{R{m&yLe6I@!gpy-*hXM}S zMQlll{jhR8@oj;45eSv+LH6lJHDAZmWyU;z8cfsoU36)D-&$QU`P-n>fb-e+)`3#+ zV^r5|&uz6_&(?J+gm7)ov+T$d!n7=R+zwsKw$^RS^=wxN0q(AD&NTgd53BAa_x>FR zr3SZaNOj!e^GDM_r>L2lW@wCo6?u}owq=f6k!jiP*aF5hL(@z=;)%;dkzL*eL~2=F zD+qW|v{@_8y%oj05Rp`cXx1A(bog%HvY_25rh6RFQ!Uf~v|(BLFj>&~A#Tam45JgY zTS3pzbz9R>H*%H2Wy|v4xEgID{f&WX9saYXrEzAMg>z}L6SSIsPim-Zwr-lEIMq4M z`X{^$?;wv6e$L2&P0kwcmJd>YR?bS#PX55>sS1wF@=O*%EzwHn<*XD6>alQ-i%C>i z{$fB)@baRod(Gjn>s$!JUI(OrbT~?lM8%)>e2+`ZbZbhP0L?%$ztXns(9|Q_vV`V) z?mJw=5VmRB-1AI(2HipIxndM=Q^#>NDe$GzbM?#cc8g}wX#d6=PyIqVJhB6D;f5P; zOq2pjIkiF8J*V01Z_LY@qf{eJqSbb@VOxxWV}lTOTh&`ezt?C}#;A>*m+9SZKXe@i z4POXwxK6k}K5cO%ZL&lva-3X8?jX-1FCwoc?;sx`-%q|ko+iIczL9}*Kf~(uajI&r zCW#9opJY`&Lr!wvlASgr=Uqr7LZFtD>B>a>XjDa_5CJz(Qsk3t59Vr;$f^*n;43Ne zg)&iNz@m4ZNz#RKoh#immwTW}jHOw=zgq-hcIvjuewZI~B}L&%O67f$N`Zn(iCYpt zN&tC{q!LYr0>!=%Cg*}%jBSGSB#d+|Y@=UBr7Mt1SJJyA*C-0EQ8?JxBOu|Jq!Oj1 zzkMmoWNgH4yvI67{rfyyn|S=m&pr7kM{HbDdF-7sJ{oa02|J`s zR>>Y0az;gi^V42@US@fb=1%Qd{4LYL!6*DKchU*;pX0aNqc}Qu&+ZX~$3tBFPzZy; z*5>KQpZ}-h!9YJhoXw7$-r5=*{usK2MfI+%-c}*Yc^-(Nw^jG1#@MZFEJPu1JCs{sThw)@QnUz^No{Y<^ z9GByCmY1`1R%VmuvL@q6R?hPAWIW08$t<1a<8nO7%5gp}$N4NDmxFSaXT|+&GS2_G zdy}lp%6yiO^I1AB$LlaC#}keVPL9l~2Wfkz*kF<^!$1l-kYl+?$D1&o%=chC85h$k z^D-M_xv5B+MP1FKh8jXfsR>F4ydBDXrAccX8Q|pw7BYH&2b#9 zrh$L#*j*RxjNeA&aRlt85Url%U^x*w)A?9}qdVNOb&WG!AlecbH(LM>N6;NRb%Jbh zp}nZGF`4}zeCPtu*88!ns}#8GD#*`Qxl$7;P-E8XcFz90lh z{PFtHqw8ZoMhJ_8gQEvia_yQ4*+n*##JRCn&Tdmv;TaE8&udZby zgfm=<@bE6X(MZ>ZLtP&}iJi{UVyA<@{j?W`Va;`bGZD4gDfGfxE#9#0Wm?Q`ZnfL) zHTSg_7KUTblbSM-LYAFe5xh|^`lHd{r}J(vt^=m&HIFYf8UT&P($8o@0yu8X3qrTo zY&wJxB;+b*&Q(ov6t$$PQofOuZIC@`F{CsMk{qN|BH526vLL#$4XXgU<8-cf48t&- zt=Q`#bpd|jwqE=eBMSQ?OM0$pnNilaEO;~BnUx;WI~koUFAWUCftNdm5!R<0)ed9e z_h#+HafDH~TFolvu=lk<>ErCX-Q<78?$P~=H=bg;EOynYU_ zymI!~!h&HawGE8vI)*}cuE_y3O{^G()Xc*#&KX-;x}YQIw@eE-CUu=Z#t}FGr7t)? zg5c5*gp@20Oag)sJP_34E%~L3tIxn!;3=|9Hpz|T2|~D!Ta^H!=qaz-gpeXuErxL! zwc+!<(Y%@$aaseFom&{rnpShEgcSN-DR3pb1lduLAbb{Y(eTZb$zJ2uC@WLo4hw}w<-3zxlA<;J+~pm&ADY6Mk6(?#m|_H zCWSDlDNi6GKrKmNk$G5?(v)FDkUJeY7YG2H+m?+_68En@1D}JZh|X~|Z|WB@_fv?T z^^xbmKr7DX0RLPuvKu}bLDqh95{g+J{0OE0T1Nq8pV-0{O zEjZT!Ag#Arf)@q!C(*xA%)v%cRH?=LO_|az%>1TaWnRc$Tv;X z@_f^RI05Y~Jo6w7Rn4)iqsvR3`MG1;a+C@~d{m3_&2O6iouLpyghC48aL&0SgcNh_ zN5wb&$wa$hR!(-v9fX883_ETH_|i6-Msc*)-Bic(s9)%r3D&INol14swc>2x|u5iC>V93ZIeE-YYkxz!YK_zSB` z3+?da={px1O@KaltE=ToD_PPke>hs|wu(*%Vqi>4I38<#4SpY$7(`XTaoCul5 z#wBZ0(s97!vZiFd#F_g9@NJsq5Jc5Kp6_=B=iE0N*`&9*b-pqDz4FXPHTbD3+3wQy z`%6mzOH2D_m$$oXYa6@MNvGZJOs2a#<8kL-!M1E0R_^`4iNysKXa)>N`;Xsebx%-S zTH4!CaAYuUG*-vsCIIdB48Oz5A3wyAit{~4rK;p8R+S4yCE+iYvP4$r*Z$13| zwf{W4^_#Ew&)=$j^WsOoKfC7*@BFE6wYSc_^J|;>;OyY)75E3ZLLMS7AeRXlrBQ@_ zwhRN0L>_Nua**ahBa{~}9VFuebuU#yqekLEn#p*@j`2$}yFf{f#zmQ>qsX8)eH*52 zD8!7uR1AO9WH1EQoL~r3Cvi^>^{T}Lqw#U>z=3c=bo!s)$Fjta7Z4!cxU~nx|zE|6X61*=}Zv z{=rZm9>6u1&YZbqjP&=!m%jAihms%rvE)Nv`q3Z#(%zA5Hp`Cus9XJhe!Gd^h0E|G zEGiK%p^B46N!-oVLMBMInrE0p;MBxzKvU%sCZA88XVE;%mufIxKXr0tC8jvdnj6O! z(gDS08ixRZ8VqW1q@H!62*NmRA~x^3e!rjYx(ky@nfLmgmSG6)|5Cd+m*t>TgmAi+ z52I*QH)I?&nqh+25N!yBh#!*mc6LKx{?y#i0c6+($5 zJ+ev&$Xv-PmsRw^14xB|(IK^j(khR08K|^T077jrz*! z=B4QrK5^YE&NlD7vw0R@btA;fmzMu{dHK@o9;zzB9Z&A6dg#H;%|rp+s6Keh8$NfY zdFP#tGe30sRzgYR>J`Y~3bBYsB0~0H$0xgzrIJdPU%m4^m%5KV*1bgEci-Z4I-O2` z=HZY3)}`KKkM%D7ulGOv@brP{$EMQ<_&N3XRV45wG9zTvMS-OmqqmS8NZ~@jV^G9h z92;Bw@njFdAY1TVIEm03af-P9bL)r{ilYd}lb&S_;L)-tq!hjKQ5cxE`_K3#j%P9m z%GkT!#TW$yWc*9Gu(a5K>lSJZfYlbRZ!9h?$dQ4%`V9PaJ{7Y}=DEe}Wv7S7-OFHJlxYmV-Q>K}nRJ>>Pw2Yvn$6C*+u^*K1^({Nt+(#% z`ayR1BTGwvur`@4EzD-iANaoSd*xs_tT({6Yc<=3MtwLO96NTfvVyp>a_r#Pjayrn zl&k5z`asvhOIurn5S@^#G0Dfu$TAs|8QCO9$N@Rk_oex0O0PxzEKg-F^Hey_2ctMG zi+o;FdysZv&fDhI0}fYgD>(c>VA+-x!lQv@kAUmX-Q9hT!2vit%Hi<8&YU@O#+<)s z{~KTZ>Q}#dasNg0i}&9TFFgD}XjyCCTgwU$KLC$%xMn)N2KeCzH~{~z(dcZJy?15h z%*5(H9gW%qrcL%Sw+Oiv27}R9rHG0+f0`qfNHnTlGk2~d6D2?P&x_1ZgO*7 zs*EYXIFj~&H=krbgycnT?MSUftpC#g2dJh~4bYcDr(bln_)Go>KOWl$!(g1Z6{SF# z1UNQtHt9tKjz$tw&~=I6IMUNK$ElBMb)6xyX4ka2Mgf*>dud4kI*zAmHH(3N;?Omu z;7<$Jr3mODg6B0`N0H|F@{I^|TQ@={&3hyS2j6$=u8Xa9KhkXvC;%k{NsoJ~xq&>w zD2)trI5^b&5eGsXB368Mm;YR*s69*41V!MFtb=*at(=~Aj*KLHP-^uk3ONTRO>DKw z%{+_3(eQwxhDMwOA%N=|3{_&)9b2h|t%cmtkODH5Bn>~-Ey0yH#b7_~INU~T#X)EH zP1B(a`2V8-nr(l$r%^fCU+15?r&ZfNPmQ?c|OaNlqLy@ zzB*N^dPlShkErIkFxJr_?NHH@qV8Y9AZo7k1E2Oy$g*Ab90(CW*Xxb(wA%q3jdtoa zYIJ%R#$!t7>H2tmoGwZkhU#%A48vNi3vLbjeGj?cYBg1FAxRprc-`sR^2);ZwAwoh zIl$@HZ&pFDzPUA?#6~tMw-y)CP_YSE&d!|P9od#;kJjhas>Ok|Et3mhcN{zM^;&IU z>diQD6=FIZk8?t};QS$7OPAwC`fEaG9geY6 zo`K{|w+L{DpICYEV0}F3BXl~mD3s{BnNkpT4=EWALnj2pozz;ia1EN$tH1eRWw@`=>@@lzt$f)1Hlsmhgvz>9lX{a^H2kZJ10S zJk@T`l8DOQWYYf}40I5LLS)Wy>&Jm%RLZ117~};IB>uC%4F3Y(PCkx2OUSIMtFo%A zx^gX{p{jlQtuFtt%sx#>kxgo+eDN%n&$DE-$Qx)8Zku1H*{qg~RGQ7ESv$CEDL8}j z8O<$OS@mgz`yIqD&RIh53xCI3Etac%efS2f7jflG$aIl5%T-On*Gpx-da*4D|12z5 zIe!uh2De?1OBM(%ZC?mLpjvxDGTGUgB!QZ>1Ii;yvqiZpam1Y#0-T1v))sOx!N;ELQi>-pU%;7m&GMH-Pc zQG|d}MUsV#8%nJfw{wXhGHE=^x3}|*8z~ivTLa)iTS^UQA(N4k2pB~TL(~uWC~~d1 zs}%3Q!XT)zaoh%gC?3R#7uqDTp&!SCI0Arn99#32whV||sZNX_!Y~v}F+gOL3#vg- zsdDbdl%xU_mpayxfGH-xg|VW@xRR8D;!+6#AcT@!0i{y0#NJR)ii5#WNGT0R8)Q8! z2m-N~wp?Ik5FiGDG%jdIQD{K|^vmE04JYNzgiYcSWS0xVjh`i%hhQos%dc7MJdKaugn))MmJ!f zp&DO^X3j@K;Eu?G;G?~eaK*KD9XVg*+oxNrTX?dN&Qa{+$Qo{)&;S)vEylREJQn+8 z)-!>S%J-7Q^OY2V@hs)z+|z2#G~*U9_j%EzG77*@Gr?5iexJ%C?H9dX;p>Pes|+QI z38pD}Mgf3Qzc9GwR+Q;z>RCW0EJu%0iKqmln3f96r_Ob|&QX8X_q9NoP>7OJ54jZ# z!Fp2)D6JBlQL4RI%b?#6l!`q~DdR$U0)fKQ5Xas3ZBBlK2e5?^kuoYM)%sir{<9&F z(WIGK0-3dz0(dbO6iDqALKMpS5m>KsR{FlQuCg9PzEvUzQ5b*<9((UNTU!&SS;{!$ zlA_e2Oo<#^d+2d(0F36|u;l<5AVr}iQpp)-X_f*~+8dADoFj6|Jw%UFj>rV1fPzNF zN$gi$@T>5RWG~WI-1CGd6D8`VaLbjOW@ze4vXyhz_sWNaknqgz&4bP3=guLXJNNkG z=guLVHF6JdxxDLOyOrn3sND{+)43@ql_%dj2t!;h@7kIz4-V$=jpl53-2vmdbB{lK zVeb{kH=@vfIF7FiaIU?p3v6r}I%?Y;8Lp!oEY-*60yxr_62 zq|Y?uLv%boc@z0K@`dE9$+wXoBtK6621rg-sNq_vtkyhM4~A#bI}%ugu4+YrT1R6u zZCBBt06s>?kU=n(WDaw zqjWNkveYP0DoI9>5CVZBqg=Pka!c!|T||HyfC&yj;lKzRdLid0AJWP>e(eL)&MCcA zZNyf4d)#H26!ZRI8|& z8pkm;t=8VbC}MnJ{7#ng%=6$?N=PYGLTU1Jzpjfk%k;?C8j?rixg2Bs1Rw{lyE2Yj ztvqjaX0v`DostL?B{$v(1|SF#g}Rq*#3+TmiwgW8FVe4YR;ZKX0&A@eUOnh-@9gyZ z0Ex9ZTHjkfn;<5mgkn0HdXY34&CmYo{azpF>hMOpeR%%V&dv}FF!B6qbiJzHec8@% z2sl}9ZzJW5&C*_XK)3^Z@?9eL5CVdNEl8MHy;>G`f&-QfS;>y?iz5wi%p3FZNUI|1 z^~dvaob_YdzJ7MnlwE%t!f4q1<+LoP<=;=5lTU?ye`j~6A4a2b0(m|j=Q#vHd)L^_ zcnq&8%V}9o2@hT8I)6=~F@)NOJkFRgF_{b!o%>UVEdbSLz}L0%P8$H+_RKg-i~Yf1 zzn|y*{lQ?r*X{Q92ZQ}0j$M-X0g%RmJaKVc{wbtLv$65uGf%#QF`o+z0t9(c0tNx< zU(y%^$hlDbQ5TGm-qa8uW$SS8x7Fv-!qA)(Vcs|Gi>RzA$SC)VVd%j3yM4zg z^RK|APlxAI&KWqj3*h@zsZ^0Gt`%aJiy#3mI5Wltk{Zsnp`z8+dJ8ENLVtVVbIQU? zaK&eoyMEXA!G%M3k&}$l&ZMfAtGXUf8Dq*ne#P@HoO}oXz5>Fa-5L(dC@QDTVO8Zh zMc?an50s8)aWoxy7BGk+-$!f}JKLwJ&{E>JbSP!gU3lIrj(x=#n~v*xwXCWMK|*rI z?*C)?VlBIuE2v2&+Thy& zz1(@yT1{yN(d(znIN_XAATv?q8`H^nGATOXQEIi)Rw_j)Dwo8)1gpU{gMQoFNO|Bg zAt_~?b2mxU$@@QGa&ZHbvRPHJH*o&Fk9;rL3Ul&9Um9mB>i=VVBqIZ|B7{XK?D0z z8l|idMrku(j0?sD@9@FvrkhTPFbrIPprw#DNyE96f=g}e2aoQ*%DEgUYJ4x%QUZDu z0NNabpf!y{VF!o@#@u0qdiZ7AgyVAiccSdLcpQo1ABC?ZjO1ijj~~2|di`rcS&#{d-%-1xS% z$cMPr)_{c~t{#6Enk?}$RItr*QZ6`XkzPk;4wNd5??!!ElVy`cuToBW(c!O_&B6wk zl|`u(axUkK@qAHb!Ev`Xo@etjz;TdIVsuzn_4ql{>1BN|3^IRs3IW*FPFrct0RR~n z(%UT+y36-Mc6P$JkdkvfP==673eIq}4}dHR-~vu5J?&|wlm{p8g*Iay`1q6e#uS85 z@bL)>p-lfBtiy`;^i`mUlcwQ7|Rac`OBGfNy>RX|UFm;+vn^V@Q!Q z%8)ZrA!;G00Hj=J)RY=2Qav?DDLByDKe^>=1pvT0@bMiEn#L#ZRYCwu;FgvG2q6TC z|LiZpzruHrSCe-WGCQmn)%lkgh9>3VVzMwOQwQfn*COZ}2_4pBon^6HrRQL|+F1BH zAMwNWyqPc7)jEe7eP(5s>s7WX;9mfM36p7)b-IHvl9DnALja0#m?dd!R2Zaz&o^yQ zjCr~1+?y#%h;M~|a9(AnET&Vcx zwMFE@nn23HrLC-p;yB9EZYPUFKk`GP6c1_bwB<=p(vrN@4MQ%F0=v)84jL1^;G?4o z^{&_Yn7o0FrBerTd39C)x7Sr&74w>8j;^a%2dBBqwnSYOxex(5h@<%`pHEs@S$LJS z;Ke5=TV2W>-2!C1^R=_g>$*x@s6rci6uqp-eNTwY0HBPtNiCwC8Jp#t3PdoWhqUAx zpcF>hq#phLIO@9Mei&(Z8oJ%BoepBF+l7-KpBbBWtxdY2l7P|^BFpo_7XZwU=AT=> zRnLA&bBh$L{5rz<&vUD{W;0_m9chyipIg~&S3`>iX_HMh>ZDGm-8FW!yY7mklF zTt7G^(7C~57mhC+&v-K2&v*BZj;b2@-tN&+T_HTJv{H7lxUo~!{l}EjU*dmtR8`1# zc8|u*?#>a;0_kMVr9;-_EV)kZBKO}FmaT=2#gc?dn-#KdhEUeB3wIOMNTeKf2Ht4g2Y}&tk_Rx3V!&1!M%&q9zQ5ku!l4wc>pav#00^m-5I~Kw5d$Ux zqzNqm<(yL~r5^-RdsZR{>!r@1lu8PL%qZksSOn(`8tZu|gapoo5(24|fmgJ6X#FHK zK{7EEw4tDHD$hve8415gtpR2%{;UaO-?+s8W-ktvmxTJP@jYpMPkkx#Jz%~Er!}C_ zK=qy0`O3OLe{eFL773Kb6abJ4G05Ap)gBC5v$9mHC>pxKu<-_i;w~R3YA=qH#Dz8z zf&mu*ilPTVDMetEav{BFHY*g(`~VR$g;*t=kOJEM3esoQ=cv;gNpk^2W)uIZHB~4Rz22 zORu8dn|*&8{Y()U3(f)aJSI5jLD7o*)VGL1kUN(ka0v zr5JQ-4bL{#qJ(eosdGVKwnNz7>Qn4?_Um3fIkEI(r&lcr68Y=?RFNz(?&|ky1ia6*^*~*Iv8$k z4F^<670FJ!(~%HJq4{{ScQBi>FQU$B?Dcv*X0?`QRJ$XE;*+wRazI6a?d_jGw||OL zW_{n#!C=s5QvWzyrfB$hw7aM(DuIF0T7&QuN}OO(qyfCs0|uV;EHEhrozCX-*_3KT z0E#}}-92;e;D94g1mE*~;GF9_kx`)N`M!^}ecu@04=uMQB5+LNBu0VQOOn(DKX>jW zuOpvBzMA|{P7jK6M;xo?Wf288SDj{vg^9AwmDL)$l=T3QS1;0sqS$K0pBa>D{3Oa{ z765cOiM4gH9&ne%qDa=uDa%ImPK@(OxnS7>j+tQKTv7>ta&j&bLWl@{A{Ii3_~e)J zcE@rHPWhBst1ldTn}w;RT!kUaQ7>XM!Vw z0&GX2&zO${K7dJ2acHd`}_?moIOodW!7({8(Xe$Z^b^?z{CoO!|a*08l)loPk#>A-Ay;le$>H{LADFd1>w zdWkNP2gpka>T9i#B9XMK&t>7HBzl_^VK4m25y;TOR82a{1E`v!f^IT@UbO)Pys82c z->5o1M*(m<1$^<+a9q=@{Oc0)7nqr*@k6aeHtQ4+DGan<^brPgXXt~CkT(~U8z@dLS zm@l?;ekViGwzIRnw{0};FPGa}QNbA~-R*8>yE`Mn^TGggS;hpw!Ks%mM+cR)?yDD; zWIUe0(|*w74p17a0vWpi(qvKzt(BHRS>}}5Ry)f9JTGbs3P1&HAI)ZP@-;a^6dFX& z1|DYILSGG~G({nFxY@*Ygl)od;~>7sFlN=OIoy zvxN010QddwmSgQooPo><3BY(vU$1;Aw3yIi7z!?=XDovLnU)HFrAK4zVTv90rnlhR z@&1RzC*nKto#C{CeqaoO3wuSHQlk~X5P@^oWj&0shbhh8hHrQjd%TCwqYguL9b*Jz zJYO5Y2nH(RJxa}u^NAYoS6g^jL}Pq6zT#DQd>OaF3mpZ|6ELFG_i*gi+L!Jf-)}93aXkA!ijqJ8Tc>w0n#F4a)vxi zUO@;nn<96xN)k9y)thG3G&G^`Me7(gMH7B2QJAuQq)1Pvvk6XBql81YFsA&091v|I zrye^FrIbIIASQ>GQ{^J7?@MeHD%T3Xah)J0{ZzWhcGAf67&pljDZI|y-@>D#=RNnr z5l(-<0XIUYZ1e@-`vJxYzGWI&<-*^YIAx-aOfFy&<0Ll9otg}?JWbT-m~rqoPyOUe z{_EfC;L*|Ze2+gUC4I74I3}Fffd|TF$Bs6eVu$Zz^&b%+SU3V)j+1}1p_8uVk`I1g zj2N#j?Ln#b?CY3EFN8vhm-JKVLYqff;BjUcOGbw=Vw~s7P`)CNHf*b8vcWikHZHe$bi)35_yQco_v6ODfwFRQ9_We zXD!y7vdYTCcrbT2E1Oc(qN#?E*BeP90e{L;CSD&E^ZyMiVfxZcRB$X3ltu29EfX;vPt=Zg*L`qHy zz&G2LLWB^qQ)vcTb*Q9}qd{}^9lm-0W&)GVh{KPZaTPUIL>>7~o}hwe{L{-oI6 zJ~e42-sos|Ytvs%fX&v*+;}q1AJ|?Cc>29o5k|Z+z3WqQg3Xo^j90LL&C zfI!PRg}^UW!cUw$Gbmc(43EMAoW44+v!k~ZNgi(>hG&B$yO!uz@*xevz@l!k7YcY9 zl5}wLa|1}#K@H$=kS1{QwZW6lyXYUy!(kW?Ue@PtVguAs?4yX~J5>GoI0(U8aEoln zo#ZLR@=+)K#5Tn_gGvl3=~5E7{IoQO`&J8$~WNh-CO>km-L~kvGNU z0IGG>;8g{yJS!SKCcw_#y4uL**?M4L4TR>%fP0LtmX+{`Lg$ z%3cn>*<~9O)qiK+x~IyRsV9pv(JtGO)IcyrF2~iUkMg)^@;)6~*xwsfr=uQ4~vn9H|21I)R^?(0{a-LdsAY5yu$EW1GYZITc<{x)9Lw zm=uY%+C!vKtHoe@bM4xd#~*y)GN)90&NsdPErxN`*WFG6R*$DsEwt`g1gRAN_gr(z zP$MuF_tEnv{V)WOVd{HGeF|VS<3a!?#o*cqjM1J&;!_ztLfUN8$~BBdzm zf|=A+iALF~5bNxCR%f{syCB%hh+7uOM5^FLOwudSD2zB!HXbe`&5?R z{!LG{r37gtuz|sxJX_^C7#o*=byuM@6#1;|<&n~$WS(SFfzqL$Y{F*cmOnvWP2M#& zBWv=2^`@2+W>L$*wmA;+)x4b4W6n54q~uGa3c5FdEdyv{P%o;op&nV0&AiL%{ez4a za(_B?VaIl@wYF=uo=MOO9Qqv*KcI@ig4W=dLNIE(p0T#;mF6jug6ec)N*!fs zQ7|p@+))gWMoB_%*FTGvZ5QZ$u}g7J?j!0xqA)9fn-UOVNG-nbzT88)FZPv`gLW8d zUOtv13OEnU*y8c@NDgg)YMpTok-vlO7EZ|)IZLiFYvWReDvM+Z+-Q=#abL2VVIEWD z1y4pA^x@{;NWHcao=DPck!PiDUKg_;6;wo=%MR3`qKC5 zeK!L@|E7=VgOBvma5xy87a|0A<1kGD()93#gOEd@g$2Dqi%iL!oF_NQ!-OPi)$ICq74JDo(Os%CTLVfr75o6f<&*OY z5lB$1C4pT3?lnur3b0uqtV2@*E)nteqH#gd^F5J?EG;1Fs;k_jVF#=?>uUW~RERtg z9F;`Q(+*dN{6cLE2vp#C!?_MDYE%EA+(Vn4ZfZt`*uN^V12J90#(`C6d!%V~b-!#b>V;$?ojQm`~P zRPi2N%@>vN0`O6$c^Yue1B9*qjQPQ6nP=gZ#G`8X-0SxzWt+1Q`%B>YjI~Igmu%XGoFf;> zHF77p@3^=A*;jMz(||8=>*Ut0cfRqBTT?4fZq8W5Yz$`Z{n2P19~S3~~DYeDu!dbg!rMY4gi=z4P3;@tA(k z`Gfgr9PB>#x$m(3{xLZhrHsiAxker%1bk(TkZFQs#N=66Kif5VA*L8ll;svS4PGF8 z!FS!j1zj$h=?tLTt!JH%Z21wJJ*Uj^3Z(6hfTE%pF$-m9myG%3aw5MAc zFY_GQWShMTZjl4>8uAYE@#M3}mw&4^`H6?lD{S52PZmP<)Q8GRy)Gx|GmjJkomDkq z(7LPlF9Xx^+je}@Y-(5PBkJk^qUx>|vcA5eY<{U$b=(^)aS`}=vfetswcgZ+<;0qz zbvhbPX0zUIQ5bOj5HL<-I8YSq;!kB9cQ(_R@5e397*ZES3|!dlZ11#fw>vAk-PyF) zWqj1J9++6EEE{zCef3{k4!~_W0QYtcpnDoX_r4rdt^ic7;EiB92EcR-eCFYBNXHfQ zdb{(zy<{)T7}I{YyGt{SvKT_?ZCOy0EVC{QhofQK>&FN>jz@!bJMfgAPUDyszQ=iy zkH-_gDB^Td^|Mq6-`jc>xGe|Zwj6AM?rC^PPW#ck7pUjAgSG{*?dWxJE_l6 zaBVFWqh1j3FO4k|TeCno*YT9JN%EifQVh>B)VyRYvy9GDC56n+#3GMaRs+({C+6Zk-Iq+tBm3#^6SR$wiF$zwv~u60GP&B0>j;1|C>19bvhHu>d*&hWRq z!GFn1#e%Lk?CaPY<$J`x{C>>)50;gUOZj(_7BLpue}*AAoc1`|2vo zTX6%*v#P$A5JB>1Z{rSpl$C0@sm}K)sRg0n`F^?)0Wx*U-Hs!pW4_)zTcHQNAzL?iS&KJv!p;WM3EmvYmGtcIb zbtCh2!Apy^ZHo20obx~p7F9i8n3V{2j)3u5muA1*dcE>ek0d*RCgC|v>S&UcG^51P3Y5`LgjPRdPV zRmpJoR72^pS&2-n@@BKj=Y$aYVLV6$zc;Bdko>$@7CVt&Wj$YP6h+96XsY@l>X@D| z05GE>Ipd2!`3QhoguoF!L}No|Bf$}1WPMox{CZR*nF|D7C41g?VJY?DD7KN<{ zz-8SLXNVMgt-T=xmP?5H?V04TNo9LMUI6@Ui&BaT!=6h+3 znG!Md1(FWUne=Ac+r3@__$`s=3k~Q+8JfKNlA?V`B`E1zWptWq%Na$50Mug~F<~O0 zlu?OrkfK!>Sp*nE$ilKvfht;qc8mzn&jChl$C>blC+}84mKd%=Yn(ww3xjf$Ge9Xw zW7H1& zs&2;~l2KUa$faf3xW7`jcw(%pj20Vy;Lkdl&3=t5}(~$Ck_y0G*e+{NI?IQPdmC{ z7`C0*`3q%#dLj91iV*P~-4(G7y$3$}$EoaTU|&}rmLRo?)EHO4Sxl=L|HE1=)#*FL&{8Hj(neoNi5+9bj|5L^Me&Qw&PF(z_2{e2GgiFmVeJeic<6qqv=B& zw_5Q=r{*{S5n)90cMMY^$to$70%)aqT$I^}l4T5;g>e}I*Bp^*Uj_UjYswx&HCTpefQw(?(XgnZ7ePY^=4!5 z$c?i+ciq5LNoT&k-f6=j1cp zf|o+W1lKc7&jqsqH(k8(0>GpWssW(e2#i9%kNK3x)&Uv{>JxyUefQzNfbZ9h$O7N1 z*L?*HI_Gs@!;f~!G~*RDNgRcEl(2OlY9bRk9psXWqImAT{`^Q$bUX0pN2b$&U>Vct z5p36QNL(0>=JQe1zDIL-3fk@Ibe9eWD=Ymzg-)j^b_3q;efX3WUDE)FKzF|!EMA+B zhWZPcEAXxyBzq);Kw2spCz3AdGLv?xlwC;S9q)L@UGT)+cL%N?{Or&E&OOk3+uM4t zc>r#}i}aBE;wv#o4u1wO_iK&qkfXjYep(hWgEn8KaY0}rR2FGml;Z37GFt}|uW=#! z!d;!cEcVQ*e6)sJY#;^hIyg8uxc1=SV^bwTY{gN;hmPSOx=wm{UYKTU<2f(BcyTdk zHbct6K7^I%ztVqqd;2$bci+9eeR^kSXXgP8k)|!fN!sn2j`_+;dQi^pM@{y)0id_G ze_M5WXQy8%{tP@tHpvb-fdpO2<7ynehHSG2+B>3i-a1t2RE87UUj4XIk}@iy$hfp6 z@|{bpaZ2Htcimp=^=frZDjG(^;cTT|Hv{Uq?V9J?c7nR5b!&>VD5`U|v9#6cZF4l5N*U7&M_UVvi{r&b#hml_Aj2>mIE^R*@Vr{= zc}!>;wJcM0I^726duyu!!v5pUCTRDNfzcnU@nqU>w^U1`ux)G98~uKoHku~!0}Wq+ zr-)6O+)4L7Np2*Mke6zH#D}=dowY5CQwpap?DvTTp32!mk{LSz&8RE}3iZoi=|uvP z3J0qnf6l9Ub(@T$Hg(-#nhwRc8@*nixlS1JG3FSp zR_4}f>M_f7GAw&7pJ$zV!}PL7Q}(x!F*bH=Mk!8)%=3NYs)K#*cyFM{=~6z$ffN18 zP7zzElExz$ka26kWdGTh*4JTm<&Gcz;Tz^vvjw{+p7>#S>ctgZA0OEnPv}1M`qN_b z_PrB8UfbjQ8vGeNOvzI5WgDxrVwCT4mC~o+YVx;+Uk?(YUf7>j%Z;JCXWDP{&);FP>@n+`DPAP zm&h15EL*paj{(54I9N6US~f_-z!isr=b`Jj?~bA{(uL!;r3PRF)`lyJQV@-1uT`3q zA{qu~QUZduo3@gKBLXMN8V`~(L6bGx5r_Y%RBvE$q*BvF5QKpy7>5}k)w$3qQirFx zo6CF?w`>o(Dgj2N48kA~vCy|F;9Uj+k}zkw5@MsV9lM#d*L0n6GId zkVni32=#;v~k=sMUQxX}aMWkre#eGpES{^cv*clox)}Z2-tl2G1JR8*qXPD`30_;YU2@?JX1Z zzWy8(NyjplmJO@Jv)GO^-g&0@1Vt_eDK$UFplIJu!Esl$P)NfFdWd-VKLcjGPow(6 z*BMe^1Gs(FND^apWMrAsCxj6Dnrw^I;X8N_Ayq2o!y$0xtTP;^ONQP9($RD|vN8#o zhJRh{F9Bw-6~QmxNgFQJHMmt8Zsb%;X`#)+*;Z)5g*04nr3E*V7BPR7u73~zM6BRO z$*p{_6IRH#)~aHpRuwa);zld2_`RemZluvd8Y$!ww45)MHNq76#yTxgk=Aambkn;O zZc{G3SH6^HP5h?H_J=;DUfb7WX}LIBW3nhOHzFChurt%o{{v z7*0Hi5Cvd>@*DxnGR7#SlwbmBiW#LW&j2VI0+!_4C+aW29z)LOV$x~G6aYqf9OolI zlwuMn@5V8iT|>`(DGDWey$AvPmRx?GFZ7(}dFIR0Ews?2-%l62nY6z+g^T&t>%!YV z0s+GJJm1gjMF{BQchM_X0s?ex_TN9MGj65v#Zj7N+3;eVw#J?A84Q5?A5LA`kHv5! zVf8xer1cSCW92c9M-VR+!vOfhKE~($wf=^0;j>6aE76H4p`iUlXFWD=K^PoVGgp^Y z>`Q^_aYxhT)cFZzpxIzJ9yPK&Z?#z3ZnxWvCO-_v<9e-@w+0%fags|RW!{JhPx8a% z&3oP-FAaNpXpzQnJ8QM_T3#QI2Sb)n)^4}k>7bS6d1GljG@}PwX_jUkE_?L`j%gS0 z-tNse@9tr|w|n!p&XXvLaFqQ2Gdc@jM$boYL?1>G6pSh_Y`w!S~Rl-DoK_Se^-{hLGt`kZ&KYzLgr2+0na`_GfN07c(z_|5K>zZMG>y*bSnz6P$Q&KU(a|iy}4JFXXe%o<18gh zo13Svo6p7l1V6KI_UwK3P)10m%ggiGWI{d$_?S#4v-#yxe-2V2Bn3M9&|Jv@QGS^F zpVUzmI|fLZrP(}Vqp{*BtO_U9C|!SWvR?SjVjW<;*eo~pkKMFyZHiClp*1so@X#7G z>KnBOANO78_10fpU4^39+A0c|%#LA+JYLQZsKq{d=mwaMO|NfHW<+!#hCOT_DTocV z+pdLGlK-#IcrfaH)K|p{c85(n8cEHJrZ(DDAo%cWc&1JGE`W5sn&A*hQq|(Tv6$y5 zmU3~m(}_QYg=Y7^FSGd-PXvBw|VzmY!t$w4~*RTmP;owZy1!y;0 zz6ru0ODwvsO@$e=rRDaZKmR$6jB=?cy>qA zG^5?lZE`kfUHt{PAFhxiN1;bs)ch=e+6JP~YZKK+#Iu^WVaWD|f_m+}Q zr-P|d;`pHIQ+Ho zM{fAojjxC1;s2?<{q5i#e&_ArzJn0P=Uo0(|EDxHfeDdO&gE#hC8Pt-rAjAf*f7c^ zocLp??HvAX3=jhxUWFgrK6-S=aSz`OwVgly=AV3O=Wos0;mMi_1jwHc_K&7!7@CLw z|5H1E68k0mHQ0xzNs)b-nw0>837Q)@2h$l49r*{u^DyR2_jhEH85z-l2OCgQ(8r39 zwNX{o8OxgG&v)G@_B}w);}C_-Zmk9oM$L8413(PGGChi6AJKkOhEYTn#}5OG_cWwX zv>nGr9SnrhGthAv0<^;b@V$*%O{qqsJ8aY`=e>5j-5ZWphmCriMvkuf?12A$$?OiI6Z-lVlU7lR3^brDZ5%Lj}8fcS}j6fb^rl z$waDnONcn{WXb*bWunIYVfG}_JA}ikC8|0N;VkLMNCWf|gz_w{gcPX@1rfb2loFI0 z=Y&GHqM?VY8+do}c9*1w2+(!lZrU6GVa#sE#-f*xgH(c_>-mM4U+45>gV z0}$MZ?63#2DA-ONqu$a|FT%QG0~1;hhIV9d0dRXbtCvI*SbU?CDFB>{dk(esLUqFo z??f4+wS0xq+88CygSlZK6;pZdpj_80`i5jM=k0ClwQ1d#T-KG+!rfPPELv6d<(rIl z-nTEb=O%zv+jUOC{hYThOVi9*|KzbSfr1vJ#S)VNThT$6rO^_Vw$=jPM^qrBKFfqi zSyVNHtntBIMehM?ol;S>DN7x+SgVM1n)wuj3Rfn0V?kV3|B_fTrBo)Y=tJY8s%wd2 zKm_A`8ATMBY??A+%%axJN*U#qA`fezB#oAk#t48??R~Vt2ew9Nq$3w>Ohv&Oz>!j3 z8KpA5)iHxBlPT4>7>fy|_XY&2q#$)&72~QryNG#Ss0yf5k>~N^tgO&86tT@f)(pbLvgN|kR*vp;>#~3{|$dEDUjg`PbSGBhZvd9mWw;oZ8wLdLE-3pv80Bq z1UtriglM8#4rfoMnMajtyKi6WN3apBEN3pM48B2^c3Y1Wv2%30T0VNcp6z5gD{H;O zia4(ofrpAj3s4+elU;Gwbsc^xfsZ1Rp7z(P^}fpsj`h{H@xewh2d3m;Jr2V~dsoaO zNJJ8>$lLVY%&KLo;+gBQBL8~56*RWmU(2*=2m>x5`E0X3{Zpy-A@j}wT9ffXtYRW| z#%gU?F*`t;x8(*a7d2ZN3>N3Z0R_N%CB_Rh1oE229u0A9iV-sbh85tnS8zti~SXFk*^(!#5hGwK8uQrRo3wL{St* zX%Pnr*2XONp2=F9dvC48F$obfd&kV4=nYx~5Yg|36@oFIn6)xWoCqpy^_CwU`JTn%9 zf3eSR%RFPjVdMof(IBn?6!Ya;HOZgK@7>JiYu@v6UA?pCl~j9|;W$Zdq?(#xW!=;v z5#BpAm-)=h>Z*JQbC!FsBbHrUFSV)ADPwu;H0k|U`fa3u#&f3+Zp_!$KR)#dNOWmjgNC(AC2ouou{G|Ye@%6_e$kTW3;G-_@#}}^)$4~ zmFl$`EIuHCCU~bour>-vr6R0E(pGWH1Wn?cm8$+?1KC`_IUx<=Mv>NODxz2?E?_?P%c$$) zZC=lDUBlPRl*zlII4y|1hN6y=c5gqd)|=h+4)I}ZE^W6Kw{QVSgMLv~P7fuky;*jo zp7*)B+s@eKc`u%VUwzGL4XjtMdG&flv|7LV4boOwRm2{onXKx%wj~3O;+>RA`CD-~ z^y1^@Mj9P%{g=z`LHF`XkFR<2VNbL_y!lPPOnVc)lveAz%J-V}ivClhw6AK%;56Q~ z1W3U1+T7^Rt>sh{2rA2hCnz-@AD@e2*2)sOXXbaD15WN0cYhm?KS2A#n||fE-tr&d z_FwXDSDXRJR0NqRHFt~Met+v`4e;ig&Kt4M#R;>%yI!i7Aoe_a7x&c|d_%mbiXyL2 zhN>JeI|txcWiBr+E_8k>=)?3`Ri~%Uwy`V+ik+Mz$`Y$zf9ILDEde}n(g%3;)$y?y zPWohUeBR%GEO~eGHOUVq{~iG&EO3q2;!Su5z8yb{UxQEM@8I8&qCLHy-a#LsZ`8+x zF1d=hWSI)7`Ve)`H8cmTHz4jQx)c*Ibm{X}09 zn5FE$LidKD0wAs=tn$Kr*Ds9pOR=~N{CN0T@lVG*%US*Yu-dmV0JPk1{$xh?%YDhNeIaSYiUhwi?qI9-AV=t+-hn zt`GfwyB1}ozFTcaaVSeXu`cxH#BHx3bNS^d!%_d@p+I*P!x$lv#! zAr`7ke>HKcL{}D{2p#jtKS_D#Rlguwxi8ima_$EmkzRT#fxYV?grwU)C8kRF3-ESQnP^jF>PQjXv7WjEDjV zhU&T_z@HOHTV=H}O-!kMoXJrO8EaW7DCfd(&`-|K#>0|1_ny+CFpiw>h;3{}N28Ov zE&K|!KRarTi=6xt)_2fxAC z+joNorBQ#x3I_Py|EUq3MsT?i7bJvWo`!_XpmH=!60{MOxm_k2rDA=fjfCyYaBv9T z>9e=6VBFp)lf;^w#c1!u5~s}gZ#qpgqqOSMXaw~8#d-k=%vgC+R`ebbVP<6k$I8Yc zH(D2d48VmLgNP;yB&_`>G15k)k+KRoaq+F=;o|`r_uz z6IPkat+SzNhM;lN1qLjX&SF^>pJ1puVohIPI*3(TBFi%9aO6;HDvO|rnT8tBM$?NB zVkkj8u->S!=Ve1s%o5u!&qOOF))_-&gN;mhP3i+dX`_57NJKxy%qmt|msw<0lFd>t zCOAN6!b+(W(Ds!|d4^J2krUBGL|Ij}te6RTS*1*htkEi1OWHZ>*myV}m?Wl-G-2rM zc#_8y(Q;56EeO^TV5GWZlmf&?W)Lgxl%m8&obpNRF-SJa+mdfc5}>YG#h!JRq>%I+ zSD9-P6Z`FED{+u{Sz4dYiSYFxg|pNmj@4}%SuVD#etlZUlezSFec@}LeD=}ZyJu&> z@$rKPPd|PC-ud;|^>nq~dv9CNJIoRm^TXjr?!^AtTV+w6jJ3)MXHT7AgFp2QZAse`GTn z0wG3A6sxib%xU`BNYi$f68R8FkA~A}_qtcV&@{Kt?%jJ-3ramG=VJgU&E&NFSPjuY ztHN69p|x(aw^Y(44_Wk#oYp*HQB?W6ZQEZ3^#TGj$L`~-tf7V@Vse4D&$j$Gl;wC> zlc z;F)XZor9#=s7W)_%>eJ8fUgid<-s~1qw`#+5l^A*9{*`iw*i|j32iq4Uybr$;arRk zA8pcP*UJq0(dKoxZ?x+N&s^W6ENlLXwNK3F;;ycqcw#;mdt-U`0jA-#VVb8@dBdW> z^1;)LfjGel_!gXV4t-rCOWRSFn*X=D``k4#3M$3L=&TEQo2J;m@^aCBB;+eV=a&yI z7v1{qbJs_-V9dc?AYinyCyuBIbg^<9@&uEaGY>}JEW8@u#j3~|Ob(kcoL-8(@ zvu&8hxr&akejc5rl5Npuks5Eqv?{Z-N(VAtW^5VC>02<}g;{Fvv?TLsBIscRourz; zc2x5mJZd8JsY$7c(4!W;U{Y#Q+Ux=~Dc~9c;18}L&^1cC-LLIWf>P<>Ur@H}FNO9% zDL4Xa>nBdEts!LDj;-?1mccS=s@Vur_?J@@09KYL06j%%>u%FLU^bn@He=#3p0ZeOUku z;Y2-c7kF8eNqRKmq?+gU^6!&FMu z;s4eedb61=x7$!}G$7BZQWVkeE#dgAk>7^AZ9=*J!whVY%cty z|L6o>y#ha{=T+$heCg*h%>7DHnfuaLm7mA(bNiq8B<%m`pZ;90w|Dp5d$50%jDXy6 z$7K5D%ZGmy1VDyYNmYHb{2$CdT=B>oy+A&szpa{>YS23g?=Bb|xlxc(1bU!$xEcfO zJ=Q%?^KvrFQxQk1kk@Imat^$aC^$ROJvzFJoRX>r_h*tLrB}U(mx3=C@&+)uBdET39o_CAq-7)|`%@o1~4Rc}lfNZgc;W_}+ zv@PGVU^tx5heNO|-?B{#;5hsnjO$XPj-lIejjQ5PjD>5T@z!0lymm z1`@NV;{KKU_3fP1yd;Enr#(7YUO`-0J{Wb{oiOq0jJZf%&YDU^%|^YO1HlH}dZQUB z)!@vd=(a7^#4bEd>SUdqAdg~NSq3n4=u-*~fo-okek%yJ z|H$b5K8(lxrV!4Ol!JvMdz+6)06CTba$zDl>o%_3d2rxK9Moqz(mOb~^MNJK*5mM) zZLdwvpFa_~NA`~{{|f-vp1V9;T*_BAs`ZKB3(wm&|Cpz*UHB^BB?*f-Ew>>~OL=Xa zeCu0(^Tmg!zV)rYyl;Jr1CsMyj&WY-7y20W#$H=!&KCLv<2a6y$8i(^Dy0;%IF4et z?MZaF50?)=(=rT0Z~y;>rWr>2$J>Uk8|^2Xx@H)yT1Phwv-KOKZ7Cc4s=AN)lA{dZ zaYuSX?4d&X;oy7C+ zc)n>_rvHpV={NuVkZ*4Fyk}M&euwCzAsyu{o#NEet0+|!k4ja=g=>0(6F!Bue3Hir|R;vo^^Tr^-q5C>)8_It+$k6tom1f z6~2?FQCf{;}x(}f)`1w zy^(QW^W!i=Er|;*eo#O@0?v{~BcW#_!-&4tFg|r*adC0+!l#Tzr?a)TDuhyktCOAa zqe}jU&>c^@CqS;bp69MfIQ$<#ZrZj60H|w=6@X^jCP!G*bow$43iufqfZ&K*!QnSCo0r)pI5K(KH>h}`!*@p3KGx=t0J)3`{ZCRXi zZs?i@QVSUZJqobZu`J4@)H|T-A>;Kp1~@`EA!Hx-p+^|8Ny1l_5EslS?h{+keeSzx z!6@(~|Diz1vmrfm`6=8#yyx#FoQLoQTOWq)@OI4`D3=4o6^R8gjnG#VuaVH`jMgplGoXw-Aa8VzVb ze=vb*zYmR%W4Al#ViUq34xmB1owN%Lh~r+jn^;x@J{{|zoQ092#fG72Iu)VPL4mWF zIa+M$nlz{gzSL;IJ>1k8fSnE;u9*zL8IGJY!ts*zYoywPaBQg4}x%{4AZpYMl<*QAR0CrX{{!OZ^v=1u^NC0 zUBIT!H30B56U&XIVFCnbK^LIe0AJoxwq`y5xT|YIuR|TNUI$%hdK>Bh_4dp#9K+Z$ zP0ujsZHsrkk+@}*e3x!s<_x(#qRMf;n|y|Rk^Bnz1M+v|f53%46oiDbE)gCY*{AUU zVm*_BWf2=5qmn~`#26U3dsan7zGWR&1TVxc%mv}6=R+;`_xqYhR9QJG2FsgQiMoY$ zd+iR>^dwo5S{SB6IBp$kwZ5js(FlVe3}{-ffA;{`fPQafWjtP4>Gi=f{r!9H+4oKB z@UJz^vNUb#`8d4@UH^Mz!5_71z>VD-Z`?H)z`+GmMXssiRTZ8`Sk-OdJ!3-${oBBu8dfmbs zFHqX3bpg7n&X|p8>u<|BsoP;L*wFCH~R_My^po(mNhyC7p#=4FMfV;3-#vO-|I?!21kGPDe*+d2H#-+KT1 z?>V{n+|4+SbnrlbfqM1v#U*&t3CD44=R^~d1Wued;ktb2n1XZHFyziG&f5)5nj00z zp=yV3dfvN!@ArClcJ|()>HZu|%`jlLF^2Pj{qa}K8bH17KHRZ7zGw*l zMANd&l-zolhN~3CD5_~rs&NBjrhc5f+$O=6DGs+PIW8tRj>7bnM#b&9t;>YSBQ*(M z<(IQ+9)8zEaSj123)?o?&y3V5T2xe+0d*hjtn7G@2UM;8;|shRyPY0IzujoyF9DMw zWlhg8q19S3bX}(#S&on-yzI zk@zGbWF+K-N#(H<1%;pbNN_g0_S)GDr*CvfZoBP&W`a0;`n89@34eDO6H3CXSM*1j z>X4FLpC<~}>FD%pT_(7_bXqJ4hG%FIBW)h6NusS>fZ>Uq8*km(M%Rr(yPc-ZxY>wf zZik`k0&Kstwz`sy5X|<)Yk_5lp=|-yw-*)=F7E;E?%bY_ zvToPU`aMLY>UHUNyIGdqymxp3*H-uUw{G0nK-}24ach5nbq%4r+Up{=JBv$MXxRX^ z6}ByFFxVuF5JKQPaGBgf9wi?jKS0Rny$b$QGscsAR%Yw)CW8jN(Kw0aARSmY>+!^h z8sy>hctT1U`wR_3*e`{~lWJNdMA<9rAUg$N7Q&s9%N}vr74LeIk5l~LC}%krW)I_T80Q3r@n*T4Z?#|S`2+eQs^9Tz*A7&RSi{KXisDmwLc>!544qwDai z_imp%x6N6gNz>~1zHbCl)AVTj+_~*o)1|P?*!K^AbY*3IcXxetb$xet{ip2v);d0( zyQAxfx(*uJ7U~dEO^1bi$Dx{lE&&)OXmn=q_(MAAj;@EC0M@6#Iar&XzxQxg>&n;= zre)t(MJTOtw#DIYYn_!4+N$r%AHDPN;ho2$ahVJFmj5}uh@Vd0pL|L3^T{7i{xx!} z@j84oNe-LCdUIIx+$8Og$TYq-TMJ5l$L)9trp?x~^MpNt+9a<0w`VMux7=J9ur%z8$2g+ar4LV(% z&&wDoRhnE;)Ok_lqCjrkv_<>d5v#K9orbEa@r})fD8x=XI=wvmaGklbm}F_HLADMa z$m;s|NI)T^pe8Re=8&d!Q{*|S7*o-M^IPM`{|z9MrDdI2S2nB|-C!s&Th1mOKE^Q? z!D-1O&<)eTDl@>}AdKrgjRvTj!Z{6S`;likEI)~Pt(472O<5>Tvks2As=6-C6|)LP z7eZPSU2RdkxyJOlSXtg^i*|f(I3o0bLL~N&e+gB2q^zq#D5fD3W)T)<<3(|V zoG3>rD8m0!%*GG13}px|_x=Ke#@OsDsg5zVPbv+_f(ME;5?g==$`TnZ%tQtZ%c?Ze z|AMvTHn}Jg7!Yuk5B?)FE9JFzpv>yXDgfUFpe;oJrMD%8sYC~RRw_kYu3&99pv)>1+ z06o7OHM0sKOT)XqC-qM8(c@opj897NwwX@v-ff!pn|)EF-k8;X9@ZQ$*ZDA4i5&P8 zKACjMIGH7Pl3kKu`AntGVLRyh?h)mEyxBg-@}L*n-Yjcba&i08y;{Q@`p)1d-j|6F z+2j8ljqpdMDE$22Mv?N1ESJCIk39bO?Ed$AfBwsa-|~&hT4R9nSKjgYM&XU_wDy57 z$@~2AuPKPqH~q^j%jrJsjbgfY{lEBckAICA)PLGlbx{EK|K#6vEJ>o0#9msS_dq!B zwm=1=EmF3qt37kpcJo~^mH>!Q%icTdJX-JDZ5@tEzsduYzkp`kKn#Ar#I(PGx<2{> zHm%u3w|dYN1-{@H`WS3c{B+V(A)@Llzo1*FK;GTkoQ8le_>sP@#9EzY{Wq&9a~FsLfIs<6muz|BL(r68+oz|80HSU`h+I z$f!(7$VQeZiS%~Unt{nx^RQaW{ISh;^SirW8axO|ezN5JYq{BOG&m~so4a1Q5c+{- z??sb5`<&+BjVKO!jbs!#N!NOA8)r!gy6^+TmUNa|>sTpgSqsC6wZyin+tvZ*c;c*6 zL}FOHbIss^QETc-@8&aszkR!@4Uwkc*UDMf)Dad_ilQvV zK*VKUbD&GcvNvmz8_Dy@XC)s>zA8!d-1&kWqh)_^F-#ZINn_mu)!`M9OZ_z{1{sqd z7u_MX!yPC!4K+6f4=L^pS+<=yil<)scm}L1KU#dFGr?L7H9jLF-Z=Gf?Od#^#ajqk zS?j$&smi>V6~J-HLyZTWwhMTh!(-eI-o*+*EhbEPpx zmp&L_uB-D|-DqX{SJ^zX&hl3K(IVP=`GANxFItQDc4+i|j-<&hxtC;136rcwj{Xp5 znkq~j8h=`jDa?68hj!(FdD-il)c$1vhzmvh}hjhbma*uIqe%~fIIGbJE*AUQH8!h&2DMhn6ut(Pq-dDK~ zU;DZ<+k|ieSFhj^xI$dgCF|q?j>z+<0e+BWnD?>M!p+nI7cwogm%6&6f%k6!Kr7M>!wf=`8M^zNSl4wc2uyAm&Y#4(uA5Qs}$Z?!tJgM(S8)$)bZsE$~3W8pZB z=5TRsZSfzi$TMvpXqt#Cv06;w9#c`FS#uAR%;E0p z?6voPa&1u6kM{hLrS!HlNNRdRDyBre8`A`vQ4Bk6sPnALn|f_gOPzMS=Hxe>tXB&c zms&-*xLaO7D2^T6x&ni>d}VRiO4~!3v{d_+G)RMsK`p4AZM!YcvjtP+5|cO+;7I$) zpRd368~3o%YBtk_R$H4JE6YcYtSsw?M_rD->A0q0G445z<~FFD7_C;e)a~$@SXntJ zawBqGiO8fDg-*haFpvOJ0!TuT5JLJqMqSdiWpE}gKh?YfV2UyDv>S{&ussF+PYv~jIJNT<{N$8WqiooYORZZ#w$ zLb&}V9az__s!@N^T)6VyF5vq5NrH+S?X141bNE-)aELe@R`cmEeh%+n-Z;HJMjWr7 z{?>xg`?@d63WgJS@kYbX20(E5KD>81a^I z$~+~X-S@W{KX&5MrM+#&j|pA3Eg|I6{@(u4@$cm_2z!goCIV-16oqu~HbK~Sqm-coTKR9ve(w@{bO>#j4icvKE-9>5W0CAk_p6i-I zNa?zQ12E<m7Z=~NO=Dz4>jj{4pk#`&OlVY!o z{;OJ>PmA_{jg&Hf$>@vUZ0yDuxo3=(&(rcQE59iA%E-^quh;5Q5~4^F3jFZbWuPhLeQC#&_z3I03EYNS~4sJ7O)s%peIS1m?WiNBJk7bk26euG{% z6jp$@-`DEogx+x4wLn!*`Y%{!{GpZ2#kcSJ4;+;hf~~5iw$?DSIw4f$(H}T%yDg)x zZ(gFOJ~yC=G)c~9f+unx4o5;4Ok;=u3%q}wSydtd7~w9D72im^N-SF!WffvvTqB+G_J!(kN#xD)uDQn_Bm z6$yb=n$k!Oks&DM0Y-j3K9eQHh7yUg3dqu!f>h8tgp^ds6ayNp;{SSmBvLB%-efQ2 zgAcGGycU2`CMATxAfnO~d76U3E)(n0OX)K;2?s_u@D{i-^CsX4#+kfu$JVlMzf@Q; zz=Vhsm<>dDAEp|Eys8S{v{mJq6o%5)Y7I+K$htOVCRnkt)vk<0hCz|FCZ4MS3tPMG zJicwMi1(8;i%?>X8XOy$WkKYHNV!ZCIR>;y)0TJ~sVk zd&v0_`bT6A%fqt2^zWcwT2kkj!t^jSVFIfCOs0|wzt_I(9i?CbsD?X+9azD(UbK4 zATT_#Yi^sj+xDmUDWMpMCDbi&=~xe(pKK=JsfW|Nkj^?zs=gFgyS7bI&qHM^_s>VNEs$tZ^A3 zdSuSpqgh*_;Iz1}L0O`plN02#A|DZrmbOrKCUURHN5J3ZWbq!{!sb+y%QZi;OPg`c z<8jTIy|xdC49mOl;mkzz2iB)2q;Yn(zd9`j!wDYJ`EZE9q2HgjYc;RGx&T}NDoY5; zH4P-wbjC0-gGKfLAjZ+h_N2j6(pt(R_r{j22iuXk9FY_8ER92A@s`l>pN04wLFvO6v%c>+h|i+Jn*W@0_*;J& zIER1a2EYFB!w*0FPcSjG!yiTD@@L=5D8LJxuzdL8hac`iw+p{uS&UM)XJkEc`;S@g3lXEVVNIAi9rU8q z@MEz(9*t5L@%>MpoMxF8b6Vwpr6g5XNKoyi|d z{sLZs&rXs<&qMvFc1^FvuoU)9zm!DxlN^LQt{>&@dbd36c?*m0*SkIR9m`=cPfw9A ztLmW^lC3-(0rOcZ$fZ#ivPwEo+8G~a9_kl|oy^%NcFmz^bhDOP#a<*kKGO8FbYs%= zwATdbnGvCB8w0u|<}WeM5Vq7W+4CZ@T5mUxaL41_VRK+q-TFCk1o??Cc5bq{xUz9} z9*g0mXo|Y&OlW(ez73{p>bx$;!y-MKMSFE&)OJgUyCnA?h`;;5#q~aBH*ROe(JU`x zQc2s1yZ)9=5j_$!-Cr{iLx_cME_PV3>=K1G08=}qT`R6xl8sOsM>8CF) zh%PRke){49e^Y5z%>Jg*teAbRG%IHR7d@rg=}K7w3!q4`V^+ihCJ-E$NC^~BF$oAE z)A6ZH#UN=bd93Smg-9tjO39N-Ys&EjqMFor^pO-NV-vzJ=b{|`{KJ_|-PV2Gl+&Xs zpPl64{4D6@LSwOjUM#hrpNDKZ%gfPmRabr8x-3lqdO(H0jbX0q!dJ!du*fc#slR*e z?bDBpdetk{t6vR%<*Sr=^o;S>cYV6J$co`{S%spmnT<))%uS!)Y-m^A+6LHco`3om zOt(&$SRZ7E1*&Is+?e?`6~DA@%~P6UtCTiia^Yy5b4s!Nh8kLREBa<1*2I%V5Q2$* zJlL-=&K3b`9N1(R0V_pXluNC^SgA>lK3H|;nV$Et(K;KCk^igDL|*e-g*qvv$IkFZz*pHEJ$U6*HIIz{TmQrLp|=&_&v{}|4lynhO6YQnQ0=tRJ6 z!y@emp9M7yFn#}tbCpGw*L9Y|T35C16|Zn@<*cPTFRL_#t+36jin`bkHRq4utS7WY ztx|>e^P}^IsEHj_RsQ%-Bd5{u^mI6)Jj>90kH%ST3NxIJamj{5;b@y;b^6elP!v z#lAE6!|v9_XVLuZ_MQ0_q}6cr07TwfYn951CvV*nQu%N==xxaIlgw0g+eAfjcD6&B z6@~R!wT)una&lvNJjJUQ=Vly&`yOZkP6Tp`8`RB0AeUVaXu%z50p_!<$i2lm1)F6> zd3-z^R(UZd6=I%wh-hm}hziEk)hU!#-d4jl7<_-IDnKfiF7V%0K zr82_c5GTiX-}CUvqkn&UFmR4QB8;M_E9WxZHg$viqK8%=P=-o8DyP z6cFKyc-plJqM=5kb1|97!_yOpoS!}OzC1()T@-cG*GKnIWT`U&#!4D0=akkc%ck+r zG1#>BS>5;}bAO4U+P=utg=#45$n}@9e4hl&JmIhxlB#8>(#oaaMf7c!K&;v z>(%-wQggU$AZb5+Z$CN=0e1<=PJ;%WX&s{0X9N{bGl1?Qgy9_DvuFtC1RZ`Y`w+r# z{!7E)?}Ct>Mh%=R9i!6cfQ~0Q0e5{Ep1p_Cl)h97IX@+Oo={^T&l9C-2L45UDWxeb z^?d%quSr{ny}RUX$rmLrD&?n}sriM|dsV8re}w?7g3%T_wDoEiT1cD-4q^m@q^l1! zxrqET7l=e!#;@KzKc|M%jh>#}T`Yj*a{qc|ojC97amj}Pqk@K*W`fLJexw2sITO^f zY+q1h3>jyJUITuS$nJCGFY$AW=|z>`>guth>uZRsYscUOjIxca$Hz7e07s*ZD$9RH z3aH< z?cmtz3ffedF**38D(dArkd_YCA$1`&%CJ-}#9c_azg<;bDE1&d^wB+#khD%A#6!@9 z*oAa1+hy)Tx(>wsi}&4lZ^fb}{Zi2~VqewGDe53AP8<0j{)YWVEFW zV^b#53L{NxnGtQZXk>Jx7KN5j(u^Zbw#^vZFRqE#;?$2H337V06Lx3tku$Oi5z_{B7qXRv2I3@rnStNH5x27 zo4OXprWR{f6iBUU#kAd~vDMP_D756N=hbVT=Xtfd=lRZpt2MJQMR0)?%&TKQ_b14<2L&F9o&A|{0Jn8}~}4Kg6hjQCel#i6g4;nlfQFAC0z*SuVy!LFU43k8T4!6rS)T(hfDGp(zPHbHpXF3 z-k*if-W&|z&-$HX#{ts3t563W!zc{G2y_6Q#)I(%MQ?d#D74OGynX8t0Pqb1&`0nn zxS+1T;dlVh0O+)f5!{^Loh%*xajPtk{h9uYKaF6+DFoDTs&Go01ibq_|2X?AWv$r+ z+ypQ!uU12h7aNO6&wl6do4>r?x6JYOkz(56P&D_;q)(2MhsY~3ZW47ICo`o_qW&kk z`f0(0zn;})PO>7|gC+2qQKn)Rk;9OIlCl~-T^uT5msWdyCDO7HwA%$t^oi?R|;m|iJWn9yk z;G9x+_~CA+<4UB#O08}pPLAvz>8sZ)c6+Yn`-Y^5qHpV(nT$qj%|u}s)$75JQ5t%l zWC(`p_xp9rGP72@kyyI#$DN`$vbU2CfH4uZkS=a)O!}cErR^A&=Q&}k6@J#VbgIXc z0(2Q~Ig}8B1g~Bphj4{>q(w+2(<;j|0VErKTBbq-L08>e<%e(Hzh@9fu)MT)p;}vO zr;SFEhJCkR_tkHBgTdzYiwlS3t6)Q;vA0{RgKm9;3a?&)HMl}_LR3i$6&5s3U-R7R z!d`3*!+Lr-1~6B9(H8Yo?`|e>@sA`X!65WAgdbc-S6-PJlE{wC@h<{UaoF z1lkd?cC-D8*u*s8N%3g4wmwYqR3tOj1}7#)BR&{w3@hdBc?MbqAA@}0_||b*mDS`m z$Mc)O&G|1MXBZdxXqXo`(t|M;JEUo6hlKIW`{F}g8r^O>$JuntQfs9Jr&*omsIy8K zU=11$kB{46Em#3c!B`*d2mVxcS36Ic;`2ZG49aRUu1busILGULGY0*8+nC1K)EER( zi#o*KfCD){P4#<_Ob7GEij178~kH>3csizPTF~LJNdlii<56pe)5yH0`K|H zjlSvkhn(;7rRYzI@1g1jg#(a{(v zif5;9dei$QM@h4fU~vRTFTaHM>q?}bPSo-xn~2(~T`6DT96&VGCe>1$Y?Dpu+iJF5 zzuoNGpM>X2ZA)2#<2&Z&(!0JhpY|a@PHP`PK6qlq-#%R2JUiAyQKTU(#tHCxBOP>s zBDGc5{pP20Q9|%;6~_#@aJ}|B+;rGa;+UdowholCBHeMEkM}8T7_Q~m8uWUuXAM0M zfC~okU{EeDFK2mMMCNiEqtU`*+HN*Ghkvm!o2}M6T~%X;KlLLk>uddmvRoUEMzOcP zwn7MT^6t97F2ifdHhG9Vm%N0$lYEf;Jo$a{ci=$^8?XcWgz&*SWJQSC<);4SBKI&I zrC_XHIkz9Ew;}Q^XYAi}6>Y7>FEYRku|3+0;cBI6{pnw9yaNL3yeutRAm z)=U5nz}6SJshoI;5`Ct79Dr{Lu_eS7vh{||C=EPB34qN;-JvXqAU*X)*n&!F8APj= z+JC5oOUkht5~GF?4*!uJ2@sjK%MfwMsE1g`=}AX`2-gGMW$epLmjbX6U4=MY@faZf z24lN)kzACGC_RE0B8CWjcpkt?D7psL;lJ4c^ay3U6s`d{55O?FlQ3uieLP?tvV}gt z0f5eo1Av17n9k&ZWPM8eS2P~5*vL->f&~B(1U@2C-2#+SM$;!;12BGhz(5y>z%5{u zB4`vSyp!P&V2JE)1b`UX3P&A4N4~-^1^~SKk)K$uzf%l{h&s@_I7Y}`4Ym#Sr{&iv z^OvASd!>jmr72>9lzh`LU=UMqK*|ZVvY?Z$5lfK*y!^!{f4j zHW`I&b$4!+l&I%n)Z|806i*VHdtm|5(dbMVETNWo(WSASo!d@sZ!P4Ov$S-<=FJAT zMuG)lx0A%2S*CJCv&qbbbddOrLkzs%+vSibUKLd%c6XNfl|QcgVNB_K~Z}uNesY8$jd4UbWvOlsA5 z(nY?t&1ieGSF1DbJGEMCt%huSi(`HL%q=_P^+sJYcXsb0gbH?)0T#EbVsVNC+KJ*B9$`fJSo( z3N}lKDDHOqlp>X~*XDTsMuiT@`AV}1P;V@~u~k#H#h3=rA4E!sCpAqeVMy6YYMLgc zA)1C|+Da*9o0ef%rk&JkiEUcO7p104Rns&_N=?>csXy#FosR21Y1bPaqyQ=!^bsUw zR!xdQ+hq{PsiqsQYdl%+2EI+1KKmLLbItKGoFQxEHu8S*3*?W;w+R{P z+Arq`nIh(qj?~0jkxKG7jf*6o@dSd=7_o}bvm$CLefAsT(u<_NfKHK4MmraInPy6n zUWB`aL0LGeiZT^dU~QRCG-hR{Q0;(K$~EicU0oqR+*qz#8*+R|FpjJh{PqOIFD7Dawi7D&_L z@lP2%zivU$%|>cM--GJRyFuuck{2|i=R2}I&|Ia zc$8P=sr@{lEKiS3KgPX(o`+bjctFDt(|pFnvpmLhKp66>j3KwiU<@(t1SBC%#}#F1 zSBIbhrL;*=PQ3`Stm}Nx50L#%UX^LctTA*1F)odmUeXrdh;jz9J+S7Y`f~n;|vl{+ZNAEY2s@`@8@j76L>4W059TulH^<- zLCJP+d0p0m3Zdu*u|iSUJB~OVmwMeus8pAGz=lR6EN#DBm{}`kzq?+Ec|q09Vy&r* zh~Fjpgz4N3Vb)LvP#g=Zw6eT4D!ptiQA)|{9F3`n=q$aQHSkjV{?M)t`+Ei%ye&ja za%6k7*5q!nyxu(zUe<~qw(@%Uh{gRR9D`{d?Z7?T)uE%v-$9?chY{1u^7^n^HHoL7OjmZlW|qTGBc+^7^1y3wH2)aD2~Pm15&5XffNgoC}FO(GU7`KzJ?HT z?@1{E#^NgLqHjs}%bRIREW!e46(gbVFCV`pFLLKtm3_m^3;^Ny+ljO>S^%TO=u*fS z^(Be`FGm@q@>4`~-L$RGj4@dn zP{%wA9$LbirEy&`V#sYyK=wPVEUKm+`MMenkLS#TZanD+hK$jcl^AP9qo{A)yts(5 z&$@0hI~u1a!(p8U0MfRj#-pS0xcI0H@)*g-WmP&u)Tbe&X-vgz$_*laHtIS` zQy;XlVw7sF(-P=5Bpc#LZHFJqwP>lz zvWa2ca^v>tyOiWvPIcAC7^F0&?c9zCXg@~8B6E&wG(OY1w5Bgm*qNU?lVnMPxmnJS zFxT7uunoWmUw3!)sbBrocRv2>yN`YO{x|#vy!iIFKYkG}p8U$MJpK$$lZ2CkxAZCG z#3eZdA^*RdHn}pSS%KQ<>XVJI(hwi^u=Nb1@ z+d0suz%}3#l)dR!qGHaTn`+zhQ={GX9Sh&Fo(Ho#nEh_QJDBTX_0;)lz1;TOrP&^~ zfn$2l+SPj5H+|DD`?f18v{>%?R@4-lyk74578p&>cOlV|^B}!qav6Ep%C60>L#W>$ z7I*Mehcy3!`noQke6qZ%m(7i4RY8?%eQ~mt)G&_&rSUXvH;%yffH*RPf25xvM zUydt0#GCOUU;xdUuV-exS~t<}^lELcVvNj(n#Znp`%nq0Y1L968X;bQORguz(godT za=8HuH?<)~)_)smS1Gc|1+NOZXLhSZCU~8r@rKbO77m{B*gbN-SkFQlK^{yhoz#*7 zG6XN9yFt%6%2)a5!vNuecD!A!w@cW~(Qw3Sy={s~@6Z&=oQX`UJM4F}>Cs2nZY{c6 zuMYd2ZdlR-GV9g4E}WQ6+n2r0t7^q6UiYideMlcxh%ivhi(`D|nXlILBD8{Y!9zqe zJ|m~%M8+_QrYtRTt&yf_Nu`a()W3$YfU$n%tl@*+kPo4&H;RDNPG8|NHQmra9$$Xa7Ft7?6qNEsvW zHN^@lU2F(|F`UNcqN?Csf0Sh)a!xcFVwD$p4yOPAN6CAmiPYrRD7Dr?6dW6*~p zCu2#+gvGwqIxT^4N^%x|+yYv2mVwf!pcJgjD9eSRrSA$jchH5jq-oazUWC9|I#EH| z3n9y^I#a|tJ3c-swPMkNwmm;TJz;`2>@)?pjSUJ~fvU<7A*N{xXNj_0gR9CJK-=LU zgLBYgZC>;RXkMpCIkcD&rGT{bTEoEzv$gYz6{zo0hl`$6)_D#Z^tq>98HN~mYkfJg zoP#lnLZJIxmd1&qFk3zFUW;?a;Oh~Bk&t$MRU;oA@%MBQdeVB355wHrJkvX|9s}X{ z{`rcRU&5E-rQk3xx8=m8+oJ7u_snMV!R_{g+wBK7n@`{skN?R3eEb4__v07vyZ`6^ z#IclbDZA>N_)i1IypX(8#h;A7m?VdOvFuyZ9c0N%l#|_+oiLX*v)vKbq=+HpBE$|y z)oxqMOn&}ZcJukUv>syL??*#<^lHo8d;@U4;)@x`xdL1x>TsTU%$hwz{rQT1&fjgzZ~F+x0!1 zcMNLfNQFeCnns_!{NO0vTum11bqR>JwX|jEi60FZqO_pdF^s70^jb~Zq8pv(PS!m9 zw*jR*S^8gya^qXO2c%(g2uyTe0Geji>z1a$OP=$bUusV5sJI!nWmy&?qHS8XedV2P z%RIJaS=MRFIA?Ux0`7qVmDkvucx;iYX+!l*J~s$e|k08z&2GC0cnJ?}2HF%swBQ(RG-E zdkxElqD;Sc*|y?D7q*Rq!L2k~(G7!h%hc~!SvmY2H%XGD>G|L|ZcM?e*XlL7WXg0M zFG9T0^Lo7?h@yTk2pYCwz$Lf^q|`(D$%c;k3TUdXD*CfsP%~Ts(zT=}HS1L?E3mG= zBeF~YKA_=VX4@Zr*Z^Ea0Q+^l7{GOF!==U1H8Z9K@1OYBb_cM2Fox=l@P~{ZO-yg-b_jN`OAUrR0nfqRbvbFIgLFVR zn0J8`&rN30maR;XE9D#zrxwWwU0^ulNme>kGH#l?2fg0kd%f&sDgklab05o=o=PI#E?kAk2RrKTFkaA&GR$HP#R_wCR`si zponaFh3`wLQKSH>HM{hi6#F!!Xn8Z0_qBFbhF| z(lo}`i6Ry`E;=xJvp*$hr+8XM@w+kEAkKZKE@L0c@WqbyLQpS0Ern+SrMwQ+wVk}v}S(w zYecjb@p))wXl+60oPYZ}m=))$@COuI1K5p_4rV9XCEMiH$@eG!5FMV!*Col}dbhrQ z=tEU$n*$05oxM4#YS+8#kME2-2^S$lBe{4k{w@7phyCF?JfE3WD=h^KaZ013!ZAlA z*f`&0yV-7b-$yP$hIAQod|$SiYSydu>hZRgZPPZ#b#%8{?>6lU<`s3Sy=KeV1y-F8 z=wd(@{loE1sg8@8IP7+ zN6wF!qrve}W%O|>N1O$|N2zCC)wMTn9F6X7ol{CPK>KG;=54DLV7(;!WO}*OEN(+$ zU0GB)EX)+tc_tzx_VYCetqKkNj~GRtQ3|wKmc|jmgE9sMQcC3o#oFi49!{yDX&QZ# zNKa}FX`-^6bH+p<$QrnQO$vlk+dE=g6hA0AF6ugfs>QJ;8G9(uB?Sf{nWTh&E9ZW$ z-vC6Z1so|lQk4{Nyp{|&m(uGZ zsHoQ7Jbh|wb1;A_%galbzo;t@)8y4toA+azryl*i-&DxRu^#V$2T>a#J0X!t64F)_&$m2u=<5-dgQT$uV6 zEiDjfBVhVLlr;Un=^~|z^zQnwsqpUU3LwQ`ASHs=q%HVUqrPPsqNchOu-VEZYMPYy zN}sX*C}!ZQdgKA~e2r^||KrzcVF+{)>;3gk7ogi&Zv+AOK_h8R=6#mNLy5HF+RtUf zfYM*3^ydTf1`2riHKx1sgsQ_fWEo3A z#OoRc6?o4NJUaE;P)8HWyXoA2g{R3XStrM>Gt$^5oZUconF=3jsc>Nfd7J7c42X*J zEf|~W6Sm;U(xPd0;?Z#V%<8HDWGu=VV(3Iw^?PvtJUfx5f+1X+HyTogQNQ2sM>e!t zOHCY(=JRS4#XyVVG$I$Pvlq+bKlW`fj_`w!sKH>+H!aKTtHx5R1;=3M>i@@mcsGAw z?g76hRRU7R)n%~d3Tof!9Z>9pFfup-5rG7I+E7M57w3Dx=92<6-2RoXTNk~zj#^D! zZ#GA7D@=Rdc1^dZQ>yp6*W6aX9-SQ@{yF^={dU_x=~Ik7_2==zyOU%%OcKYA|24Lq zFvvL1g7Bf(;lER=C{>b)op=0~QmX!3Zg(okc6)d=rxu$H$S%2yJfFOie40E>e$C3H zQ;w|*z|M970tVYpC}Ge*Lp2@iY)n&$s>YiMI+T+Lqb&GFbXsfEu@4#p!3n#gv_8a{ zZ&$oH#N>urn^AiLlL2B7=lT$h{mN82rNgN+9i{(+N0vjPNez_h3j)Tkx3@R9nwH}jf!%CbX8Q1j8}hvV%qR@TU?IG@j4% zoTBX%%PZY(S22!@QCQ9QEd7m~Q2@#)MJA;XfYi06M6i0UQ)@M|#ZK4rmm1ADZZtaW z{^xWp@EeU`;(A~ho*z;4T{nz6hyR2SHky8*BS)Z?oh0=mAcdwehSU^7A_XBe%aWep zo@*~!j!kJKGy%Y<;Bc=gfiub|wai#IjJIh3lxY%N%LeqBP6#1D$kji<%kcf=Rzg6? ziI5W^g%t8Tou^dhIV7h*O()Zsx)zm9GM;DEZ0L#cNHyoxTsCenWV9pjauJ3MfirGs zp6^Jeo2GfHEH^EC1(I+wo81B+Xvy{6ay~96RgwTUo0F<2N(_QHHvJ9ykkz8NpLN;^ ze1BT6+YF7QlQ^a+8I?g8VUi3r%>zwKOw$A=?$OX-Og9ibmm*L!A6Z!jN^QH-HcUVf zjD}0=VW9a0B%7PYBXzduYh)B>uEfgzDW!^LEFF}V3VAyv>c@qmW!@IpZk=y)CLa=< zKa>szX?kj7qt^pS2OAp)$2T?xeSmInW8?H~8ykR|TbFLwVT31i_|QvU@{ln7m9>|q zgTc$7->)`Kp53U}EV&20jg6DXHZ}$WSf$(B7jD|xq)^T8ym@mo-b7(TR35}!vB>pi znKf!y>+z%txvMxW2YHngNi~a`f#NzrLPtQqH;-4KQR{V~MWw#Wa?b*9@S$_X#I4Os zyLlc)aHou-q`f#8G+S*d5vgOZuH18_vp!zETML7*HE8t)NumiJ8MsK46Ho^P!H#Sb>|6+G|)7B#iq)w?Zyv(db?wQ~%}2E%jv|Cs%0$|Y%hR;e^DqBxQYL|k4@?liDosAy<-W}X(4 zswmUEZ;@fukuWa@%Qh#H`FGE3RK2$rIoQ}p2k@46?4`{uG>{z-`0Q$NGuxOa0wJ2f?aC7tK zR(Yz>nIRl*D8yTw9q*B8FwHhPPo8L1HXZ$`^nTeEC@{CX6! zo#EqeUcn&H){jM}y&Tyd!5MOa+{`Y>3o1Froi67a{3Rwk2e@zME%wu&zbi0UGfnMzbe%xP=B4RM;nEihtc zW|PFtctnbPTt;#fa^M527DuH)X$XST6MO-{9~BBYuIOf%$wibVK60TZSUoxVkN$pojG4kmy;TXmR}NHs8k zaV|MSQv6xP1)w}qVi60*S&^Xk?i3UZK+CF5YXAmN$KJc! z1ncIG-(ehd02AQWO#?tX2Lj@j1kj@UbO1#C#2p$SqP+e-WDE!+RK3h^| zQe8*RQ8$orGz{bn4IKqT-9Qac)0nedNILD?F(F=uSA2(z3W}P>f@1sH7^F-jfJ~%> zSOVkD2E6n}%_lr2}Y9CC(V;^0lUU@{DQTaN0Dt_D%Cf zr6Fi5N-VH*71)+jO1+((FjT&^wZoYq=Lk~kEHVJ8bxd8; zb~nS^9lEkIo2{(S+kMVKa~=rYTDMEr>OsBJr9#?|Zj%t%$IGzK&t&TDojCBFFVXxMC1vsB2{F&Fw2!JDvrb+8hz2MoU3`k4KWB= z>?EB*UX@Bwy#BL1J+%DI6i72D%I-OdjLI1My)WE;JKY#K?nG5Yk2?R zlgf4+TP2R;ILWU<5o#K)#^K=umyxc&!yPdDn|xHZND+XieIhUFYM#*_13d^tEyz3w=0yX^Hf1gRMf0Iuah z2vI!j#Ss{0J>c9h+i_dh4ZTG;v9CS@Kj~+*{Xy~)@E3pos zqLKlyqMU{T{1Vqk%SBL@L&s#CbHfk_{_|v#40XeHoL=Yvpr(XvGGYB8|#@%HQ;5QAYLm?I4#?%nqv;nHj}9tzg< zZN?D=x53a+3NG%^#EW2UpkEO2U13`#6DThnoI;i*oYIW zf>O6RFJ&rM-WA{B@Ghll0P*?4hEWVZ0iNr6(BIhD*y!IMBygtGY_I;&QhuB)~Q6;CikHYcqImSO-d-xZ4XYE9!P*7b$=}ZZ$2_;f!&|w3@B4u5WE@ zE-kw*rBWMluIoc7Z2%^cxVD(*^c7FkHQg}UdwXre(6#y#-C9+zy9qR-s0oQ%uUD!^ z2qWa`Gk5}?A{}y^Tp+g-GRpEvCVq4tVU~kq3tTh36exRJFrZdgRDmcW!SX9%oe34U7$g zi4fx?N$^)T1_SuEV|G0+2wIi}O-%?^YyL^KvfRjK-;V`Wsx!0FKC;X8Yo2JP!$oH! z8)2_^;+h@>Mi~emMN7+Jz!`kq@Aek53V^XVVI1L%6oMuMW5mP}@(_6fg^&$yIQ1YG z7BY~+YF0&Ye)edu^!fSK)d;B449xn;ks>z*iLd3s7yaN9w~SKy*gXdXR;f!9w4b&CE3x@V4$@K zvz7|6s?MzU>g&cC^z|(eSuF}5y{uQpYISQPlRbH@W-e<8hV+ z#lhEgW$d@2u7(XO5e;N%>KrFYlIZ08K<+Zl`27Foz9epT(nQpG@WPbR1J%*5GIbEM z?7x2k^V#xX7N5ZG`p_@;pTKt0n?rX4+r}(iVjaRO_W7O^?E9=ZUNiBt?(ur_@EuP) zV1Dq#J8nN2{-9*9eOR=Ivwk?%X_`fKH0saxUGd~=GkM*ciQe-1sb1wCshFjy9*?@S zLt8w2ZE9Zs7U0dVL({R3!Rqmpu*6K9nJ0ac)MohzIi}bx%^rSl zGQDXZ;SSz&HlM$>*>0PgH{UovJA3P`TkUq+Vtjdd@im{mfB(~e{p#w@<>kdYuCD(2 zr|;kYbdrSRID6usNS;l;DEWBub;&m;-QYNLu9Izi%Px`Pt<>4^@{N21aWGKs1Yh&Kh%t)RNgqXQDIC5^!t(bOy zSax|jPt$(a_4K`0_xSdCb$RdZz02zCPFlnV-2 zv&WyB*`XO%x9sePS5f#LGp=TK`1tQsm-p_R{iCxx_b#iu2hzdtnf1WWx*g7EZ+BXa z&2YQWQ2y?v|b4_Jf(3)w-em0ik?D zWnFK2BX&@a2ZhIK4G@?hfy!C6ANoH*3~ChY@Sl7pa}6UQj`B2%d0D2tb|c4m7^nUW z{1oHNr{j>b8#&#lWtqn;%}+FFJef1!xOHok)qXs_HSY&5#u(k8pWhmfeVvVN-MYa% zpNt8*i~$I-EMovdEHmf53-7~oSwbf$trMkxtjJ83o;0oGWtmIcoMfrVig8;X!&+-` zTsISZ@~FIj|INd`v}))-b1++5_QN;dzh55xD9hOEVOo`0h)pNpoAqKgThuoh(ls$; zWt9%K9}7Fw<>~P;LFtx8T@fP?W5Ha+2*g-)BWkq*9Uq^THQs~p9;V6|V1M5$b6#M6 z&j{Aw6%;B(Z9CN)J7wCoq^dx0#GKVe4)|??e}tFt>(Dw;T9CZOT>F6A8ur}Q06!Cv z`D)$l+}Y^mp$>{JmWzjIcRr!kGRxld<{+)?w3vzNednN?!BL~B1O8?s%Z0B2r$a!( zWJ+wydbP$6ToJOInh@%m7R-IucQjWj#w^3J)?MGW1n4Zo;L)RIn)IKGCL+SLdGu&7 z1JJcyul1C&EJmf~=)1mWUQk_!&~la&ZX?fYF>QBs^@4ic)m7UWL6sM;eR8)uIlWje z2Ln8{-OT4zb#!_iYQj|c-Tn|cyIg*!*qGg&Z!NXl8@4D*)K+T|Q)jPU z_O;NpYDcjAw&^>8D5o*OLRe!6l{L&z)UFRZMs+|@x4r|D%2+z>XMMfSzIFE!C?)}X zblUyP10r%MFK+LA{SzKm;%WyzE>IK_%`UQCI}EcEGyvGMP#X-Hqzn&EqG7w8-Ynh_ zG-qhQ1^iFW_Z4r{k=09z*>~-olf{gfc8a#Ks3|28eTjF&M>@Q&d41P_2AQ`((>Hx% z))BVz=qp>$gCQJfDl&OB)GX(T)U~F6WQtbWW;8_YQhb4S;%MI;q>5x87$zldk@p`< z9aa7nzJ!RNNGI|w!b~LbnZymPmF+pn9?CqW4K@;%Xi0I4xb!NYD1`X2QWO9yN;@AK z7Tc?nY}^sBeq*cxQ7QI!$vi_FCUD&XFD^YC6O2)8118-NStTkE1CwbqL!dNirI`6&@HwecrqWM`zAUcO*=f}V|M0I} zX88zZHOAzkX|zV$jE4DBY^>>#Bj%?x)sjc8n7o)SSh9Jctx3@ndQQ=V++eNQ)mp!7 zb75j*S(K_Gvk|sMV|%A0ty3f62~y>dof39FSe3OotGrYydghSU75D>RbmjMd$aw}V zJli5#6Ol5`S=L^nXw9NP1(1e0+MAtYVlH&Zm_c^Op^Z*cF=TZ*6NDVF6!6{tVLAjvk3~op#FxSLK-Px^tz zysn5cF7%6i8vhBuH~Bdzyc55j{tv%_Kgs`A9g?KpY}XNUH2Tf93&FGVE4VI239+ha z8>p=yVw~@*d4QOdHvo55%DUJ0u0A|`RRFXoFJ?F3O=Cw}rw6QzJ^L%yebvWaaZ@qVj| z9o2PIGopY$ibv@B^=7Mzk{n;_tNF|aiQM1n_$|5W)+&Qf3tnAOHPrjf)-)=wm};W` zSKG>Z>1x&sEQ)T?8?^pe**7RrL#y>_+Z{p}q18fUAZXwxw{db4k^&}jZN>BPx2v^; z^$2kD!leeLO3r~E=j@GGuV=u@01YsD*sOylrY+#F)?FV!32ibQTJ%`Q*RI7zTs2=U z-%WPEx`+L`X`2a}bx9J;OZTH*j-D2K;z*vI3jxELC z_nQL@;NY--gpFHL=!OzTXT4n+CLuLfxoQ|uXhV9{Kg$aR~R4 zrAh5(2bUL@Z*Uv!fQ03quBGD%_xdwu?^|gz&bxlyY@78fm#&USEpxJfw=rQCtr+m)@H~dk|uEd=cVcs8kgzmFul^*fa~Ft&1F@wNA%zk+D8z#IskrEJKc)c_f&S-c<6_uJKyD5U$4$MPpnB-9roknYj{UM0ry^I&@W15QQH*AzK zb!Q03ijx_af*~o3BFlp9>&rW5n6-#;E(Vb-h=pLV^AuyDv5N%*A`zmLm6=Y&xmR5oO2%DDDa?5 z@t_ir4|#l1O$XU4hVXmmb)qb`nogG>BJb;3E0LHQdz`Of4)GGU4<%%EYn7>f4oztkZSX>UA~5|6sMuAWHKH1i>NBCY4s zy6lThgtivmaVrd~UO2YPW2(Byo0b*PNcCCBd^D!5ir5}*Q(BaQ zc|Ew`4YX!Oo{MJ^M2Xmt?lMg@SXP1z`WV~NnHI#_=Xp(F?uN#cWeDCCf#DP+vn3#A zEzLmnqrhz&3a%v z9}#_DDs65w6e)Ts9K#4`pe?4x#1MH-HHJimMxd1n#Sws*1$1iR;nI8XSt%*K0`iiw z?_{kl=L|*}UX30EGFlgvcLz_4DGPQR7&fXr#DVFN7KGD*Nj@^n>6XPiN@b;)y>~8n zixPJRBL)#~kH_W$L}f?Eac150SalWbi-O$|FT|R}2n&Gd>QpQqLp&Zk8@!Jn7-uqK zz0o~@$z4mVQh9A1v|y$8;jClGKwAg%AqOC4JS9SwiSC*@3O*WeU+2SGb1q;=n>ZOl zB6$T%4GBJnmXG>1{wyW}D-fS2lfH z<_OL%D$05~ZK|#jxpilGVNIF0wGyIPl`E>7elwlwAq0z2h7_TzX-Sv!`r^5rgM*Eo zUP5W3zVrZ>Kxn_Gnx-LuWx=bPjsvdb`V=Wx6d3>tf3-7ec_w3);c$)sU~to*n&ore zQxOxwapM}N0BY3jC$=f<<>itwsdc(ZtZSN5P(rRgqmP+vM~7At}A2RaLG@FFI}OMLg*F5dFH3 zot)f0$@$6clP|VzZ!~VVUi{bwwr$(DTQ7cQnhl59^p>AC8;!J(-dv-Z!c#94KTo6d z} z(>PUWO01QIRA13~ktut*4!=}Yy_eKmS?R(ZS3P{FYTZrJQZ-Y`R+&n}-J>zP6|-s$ zRJmq}MK4YoymnB|(j~ELmbhQuM}P67qZf@YUVP7)8=EhW-t{BzzRp6W&`MlyrrR1i z4oLfBwuC=6(w~eisuD0`_kDY_B7EV)irL=(&$#ZsID6s3$N$%R%(Xo4{K_YiYJU3m zogJ#LykP(0jqe@O!>uVb);+o*KNDl(j6t=^tYl}B>%VE^9xN)lyDb7`-`#%nyPEqXd z6-BoL(CHS%-hNSZI`DnPSAThWq3C`Xe7|$y=)xi#-h?|lxA)o`zx>s`u-Lr*_MIL4 zrMSjKEjB}+5JF7Sx_Slv60VT%BR@vIOn!#^GWp-+56GXBzarlu|4j&2m5S%pyqZ_@ z4o?c!H6#<6%N$~dS1A)Z5jD?exjF_YGJPR1hb}^0DfS$sa$1HU{0VHZkg6la4Ql4M zsz?fDAK1i|Lipj!TxJ>s4D&+tiD#CTs?;9j^D2rXSw(~(>v0*=pQ#dc?j}oGdGSuj zVQ?#oBb77LAB;;mtCBR0=2S)dUaQTv*kdwS@me(Q_hQ!aR($zvy2V@Vp2Zk*4YL!P zCWfI`4+2QQU=1ArpdsseBh&-YVtz;S{n&PAjtx!k|FR9YI5$n}I?vQ-3oYF;>%cXm z*+PK8mk1ErLip{!^DK?Ez}8H&&NZ{uLImHJh@s7;->$iq?1&_(TZYgY!{I1h1=Hwh zgG>%&U&bw-Izscp(BmD2XhcCk!F6NTaYQSMxG@~9`-AjIe&>#48K1nw^E~e*6P_`- zb7y`eO}+Ke(BM(j5{~1>t_w5>A_Gx%xEF?=CY+SFV%e7inGLj_VZv%U8V(zpFsyo# zh>o<}IKJDI98oi;zDt>9fruQ(J{t`|(xACUS>S6Fuz^2pN{*;a`>u@nEHjb{hj4`~ zkPGBh$UMbTaaH{yBONaggRo#M_?>Ds5bLe?-OwqU9q3bqVlp*#Q zi<8((hpT`9XV=!$W5~@Yc1&GUlm@;J38>lv({N;Dh*F)bA;FM{Gh(Q#DG+A4}1^`ylfgdX+cps6|R?~F{Z!n|S zv2#h?+t2J<)Mk5_A13Ubm+RDl?0L0Za_2MLEtcS>GtL3;ODMQ2{ z3PM`WZQZ*1416A*A_i%ZWm1woazFV#@+I=W;W#{-kkLH8)2K?69B%^SE>hsS)l+5W zTt*U%mmF$6tClMU%njCM2@685>$09Wy-=VyL>uDMdqADw7^eWkdP~jl~ zBVBi;PR7^SXct6ZAst(AVn)91n65<9gLX2+XKX=?tjb$GWZ{DivK`u~DJv@2(nWvsUCRSSX<3Cm9IZ<7; zohWO&x=)qXWYaWXTwNV$=YXaeJbnBh(Y7P5LRF22BTY(a=r${TxH+Ha1kpNUB4v#s zPSaeA7AY!dYs4@CjuoLc3cQ?;#}0*vi^tRHv;du)oeh*|oYoaUKY26(6I`05&)X-}FJ)s0hZ?F$GgL=`yEPjB%=U+jYfhUJ+%}w5dV> zKp8YaY44plr_wXph*4q>2_mN&&f$89rV%3~Lh8Vnrk?`Gf1&FF*8qf_D#<#tkag%~ zKo2X%Nsnw3QUP{2v{JO5r-w2xa~a<3?LhAynk}leAPXH#`k;P@GlO3;@o74IGvokW-`UY-+)n81$BnoaYB%USD%3& z&25^v+A{bI3nU$&+uWA0(i0Ljs!F0fLXG+vtterD-EP|Jd44Mh;jIuxgS9~z!s^Pg zV=F5NiwnDtKYn3eB5rKn^o<|Q1K&^5VXQ+KwD{^m-fkr6VDZ?>3gXJjvAyLLxv;mF zX`7ojUfSGZ-ynn#B-+)l!N0@PWJrz@!bO_pS)Pd?*5o*~AnzoN0b8;=fb(v4f5Fil z-c~iw;e7`ej*0X8?o*UQt9}3O4nm``u&^>q5$}gA9b^l>&nQ5@w>Dm-7;`x}Q1b3k z%JPMC^Fcq3y`V<%PXT(aqodc0cEiB)6|(uZ{A>JQkigqWn-tNpYEsc|3xO#wj#7?h zPim3Iz=bM7{6tSQ+@enG!93?N=;KMhoK+L>zwYF8*v{wbO_GZ42P7^CHTfyW3H*<{ zQRKSrN8BiKU)*kY7V_@L|26PG?uC&X_^#Vo$UC2KoWuY8_$&5t%P+sfvjX3BKkhg^ zKjOMC?&f*7-TwF^Pdv)5AGF(_@co-VKIt;$FKjo4@Z^Sl(kBJk&SJ-2_YxA$y9jZ~ zx1XuhfVyHq|dCQiad!Ykxa|ma2&#R#_U{Dj8Q|BRn4nk4}zcf0ll9O zg0Fap-m^{1vch&v*EGHMwr(J}uBA?X7-7&+OF_^+=6Stu4=l^H($uspGfgxprAjm@ zwFI8lw8zZo4J1Da zTPmaI`|$I;w?gQ0O$ zGY!8jS7254dU6$3WP2Di(Zdj48Tjob%R;oQrM4eHob*l8syAlY_KIx-lqG;|uN++{ zR87;hkxJkNpGy(?FMMGiF#Yk^u{8}^Z+mkWp!?>xwEzaX!8jp|5ONGJ!w!ka333 z20s?l#uFuzYW~PIhnV+&Buc6r-VBVzE-Hw!bX_+XgU{ZGLEz}R?h45mm)tdU%?$#$@kR_nS7@3i zG|re5uBK~l7~qYt17KLDE>RgKr;xt>@$vZa*GIaB-(_6W>&d7VhBQfN5UM<>>l$a@ zMO}+H8k7PuAuP&1#F(xpAJlJpIhfM26U{)R($Esyk|w<;P$N=NoTIuN@TaoV$+LdnviiL|?{tK_p>!cS zojmXLEvw(pp2hu?U~ z`SUON#`*K#ppQN4S%mPuJ82_$E@em-3E^oT%haz5RaS)$epQA=l|opRc`OSGvGu}2 zyWqAkHMx6Zt1h6QN1a1AU=0%{Qm)6fC24KULwJCOUH?Py?G<{VK- z)0D2jT|nUQG0$-T3|$kB3*iSeT?5b!L&p$oOZ!W+*=ja*l-_O=DAlN;16^L4S3_#s zk<_#B4V?Lpp|WkMp>Nx(FO>kW@`sJaAO2zx{Ll~Gwb%#4fGDQaqoTgTm_w0Dv)R(X zFyWdhqfCPD508T5m>_Liv*HL$1275$K+c372GrT+lmgg}V^ar%KsyBw0t2vZ0Th8T z#=zwifIfhRj;9g;0Ns+fat2HT30934ag^K;frhX+$i*+h&amfTgy1V_JWk_6jSbQv zD^PJ-G$8Rx= zAj^kCh{Dd{7j0)b?{vZw3scuacnYGhGsEo-qfS^;$v`QTXOqe^4EA0RnN+3Bs_~@qO+Zl{ z1&JK2gUX^e$=aQiBn~z0uC}g$2%G|~sAg)7L7YjEHtNaul${;W2vv!Oa3X_soR#y$ zysAywdi_1fvq&??=ao>NrLxkjnyVt0Lc(9ip3@^$5;cHv-3%QIFtKe%h<>VB6l>fx zWo$EEu3DI+5(}Xfm1CKv%laK3K;z!SP!Z}}F;8H#j2lq!x1V{}yB|FwCt<^sSxCP_ ziBaG#OL6G|4H+;N^n{)isHzZh47FB=%S1 zapQe7B9V1SbAyVJBBg-#I7X(c`j{ce;iaKe%BFGn;PP@bB$Tz*1$2lvo|+&vCLPv zivfXiOj&W|b3^XUeh|d+oGiC;~+5Grbdz!CVn5(ZnXuhvD6z zERvY?S*Jv#;FKt&Fyfs9Gf5zrC>qSv0fd^AwW1WHVFoE;H0ahqBqxSotf0lQhSpVi z;ta}+qH+E&nG@ve@l-iyQFxP^q!d->fKwdkqI)S(X+@^gDnGhJ8KVM}vpS~HFjO{K zIH=N99b1BORStC9o%SH0y?N`-6LjzXyS3shM_C&AmM$fR5($*tOg0u`jdw)=bMC1S zrHqpY%W|n#KDwY&4^D%mQf3p5Nd=DD<2=oTl7Q`>O^k^TaxP+OG&R&jU<7GHqZPYg zN)wwmN5@$<=ZYXIW~5q6Wlsl+_YQG)#A-7w3|)on4vas(3_XYpY@7!+BEXHMVIh0ZHY zVYpT)YljUA0kdaT#u&ziMQP33ys{R74&|V<04XsR9Ab0?10$pdn9iu8IN})7%&7#V zu@I&1t|y`>-oNKV!+De?oE7CdlZgdMk`xJEehGgJFD2K>%lHU>8vmAFNk2`0mi{lF z^XKxH@^|x(@-OqRw*(~Db#qb@T!@h;WR|(MZ|o0doyt6~mn_SA%l0|YgT=F0Qx2>3 zwtI-x`g)%KWodlVkg&SHU2QwL>-yqw?OX$5yxJ@tr@S3IjYt%KZ{Iw`b>AK0_r8m^ zd4R=ovz{IB>ooeV->t&B%;dz+=eyxLRs10Af!b=&mLLqf}azwWlnYHJ%a zJ6xLzVHb>dbhtijS~1OfiP3&OTkf~re5=cuRxHAMMH{BEyI!xB=^wUxlO7)0yv=sC zmQ9Qq<}h6=ht8Zg?YfyS=Ckc;Lz4jnGn>m;-mPr<&deA6PAtZdUDdwNh$;qvYlM_^|4XvHLGkV+T8JjRq5IrRY}awHC&k!$TiF%akv-nf}g^4{!y zTEqw*42L6Cx!ip}9O}2d&HK-Z$f~vzb~e^Usp?d_xVT;xgs5#vpwFgCdmjMJi2a8;EhrRg|TkIRWEZ*GQS$Izaa;>jRkZtyXh3I!t5h$!tH zfnvjCvv)qXAxqU*YbX_SQ|J>d*nbS{i*G{K>Jum^<)hX$dqY8+%$w)HIgtzpCySF4 zOU^DA?~uxuKArC%J+FWMeKhD#PmgcR_UPke)d)OFvNIS(e2wj~hFX1DJwmyt=AWix1MZtfnU6?4vkf59iy zQ3V19S)XPT+UW*aCbt?E6F6%c`!bG{{tyD2CP@v(~|jrrQi;Xzr8yK7Xa`mpG}>}@uOelhQi zEceT%{*ZHG8t8V{609o0QUz@)t%EGPLl$DP_S;RnTJQVCQs%PWM{H|kejT~3+NY^O z_br|tk|~m=u3bZx=ZizvUmq6ImEL~mds=r}C$t-zec!aw?hlLkzMq+H8*HK6q}3hu zW9C{8v-!T4c5n7OG1t!5A-C@K-B!5WV>9ojm@T`u7nTaOvTnO2w7AKBCv%-~Wq9&v z>)UzXnh`a#yI!Xf%inC*`)i7$zMRcdx!vakTUpNLhkkdM@3zbJyl>6+5C9{0A6Ax& z=o5+U^fV)8d6@TRy*#`?-hp$2NFk%!?yxw_%$|$w5Bu$6x#-)a!E&{h={m5{$k1{& zpQ2R(#GLeUr?1x7?heb2XS^)vJF{w25FhPlX0={zR~*YayCXupsZk&#fLYaf^$l%6iXt&8Y5OYH-pds zDPqZm()`!c%Gzo+&9b5x=U2$m`tkoh?@fjAni!VtiDex1F>m^Wol{Ov`Wrg5>1X_}s+GGe5v#fUWTyu2k%D_581 zmKhU)8S^ZHKnP@r6>OR@b0wlEwt%(5NZ&W*gps~w>S}raVlN|_VpG(ns!~9y|9p%%6*22j9)fC^uvjBu{C zo8%`BP!gey(PN4{y=-CGgJ4vo259rvzTUPk&|oka(5=Snk)=F3ZJcIs&zQx+JX1UO zn;^@2C*51c-h-I9V&5snf`B+pnQ-N9rDbN^>#SY5qK=>C-eYmWHcg%rA_d|!BZ9M( zrlQl7@$Ac&a@!T0CU=sje6@+RIkrE<_4535HiQAFePAk15LP93ruAU#mNFDYmT*nm zOG*`iT*3cpk&;8Yaf~1TWcm=R_{hD1{~v^KbZ0dR0Uz9*oa~;g3H76oge-H5ljF(h z;ys5$dd|KxkBe>Q{Hi>6ph)wWs#Nt|bmEE6{ zRF~HwC#toFiVoScKny#^;{C=FlFxkRGoSelsO$UFlj*2w8UnJ6c<8)Niy|_sn3}5c z-r2sh?oS*|CS9KA9kb||iY|<(=|pQ0@0pyn25{Dgs*W)P=R?ypjeo_<2@)hPC;#a` z{ipx*pYX}geC9Ks`3#!+{*+adw=EI!jCo)kdqQMVF*Risyt7?r-4jPjWiHQpW-VzH zU5HlQfR%{%09$7btP8%XVhq8#(6n{q@xhmqmlGsd_$f|CNs=(Vh)*PGa+N%hd{^=_ z$uB2=3khD0Z@}-xU&qU2X+xh)AEzIpKgcieXYuFqH}LoIPw}tg^iFK&y^LPngA5yK zBZMW2z1I>W?a~UBz3=R>7(}9d>1=ljEE>|7gg0O5M40VjDZtifJJT|3;CFpD$$OVI<@l?aavKVuy+3RYTY5CT z{b7&++W&B}gOQ2?*URnx(01)+J>Q#k({K0N)nVJLrA-A&ux|RUb;B>WLA-OYlzf^G zvfL@b!`PIdMu40udxy5A26|8J#ioxQ){T*M>!nKX`)&w**deZz*N^IMEfvk)3c+K% zTyA@)+30yMo8lW;_K`Tx*d4BS*X?3$jk3q}d@)}i_J@bS4luE58`H#_b)&<6Ia_}O zdFJ*C*a{++wL21hCRXd!VVisZ9EW}1ntrxhFP3XD(yo`J(r>U>FXrpRy6e~Guv}@> zgSb=K@M>UI>jTOi^rT?`t+HBYUWGx~c?aW_Wv1Eh4!xMeGI!as2^GI;me<-wW3fK; zqi8jASgtorQOk82zA>IeyOog+szZ7iUEWxqFcOlFbML)K$?zB%-( z^};N7k=GwSB=xrI1K>m{Sf8K~YlAwIn(1D`0FrBVZFoQLH`{e5cM})W{(WLHDo%i~ zOYtTUXG1C9&GmW>jrHoz&CBr-K=?Ie?8FQ~3kxLlLZ1U<%|z9A=7YaJpG^$X{TflwP|c zJ3bXQP^LXTK$5AzSuM&GYc;@1K#mw!=H@(+&JKzln$%?_A*JvD$7Q4=j|l>RPMm$` z8W^?&8YQ4dG$iP*0=n$}gHaICnn{dxO8bzqMxCY;2c+P6G%f{luB{p3{xfvgPz z?+gUnc0D-V5{g?ykrWOFa#BLZCT2=yx9DnDX5N};Fb-ywPJ#=8Ei}k!rJeRnibO~e zOHS-3q{Hx%+CJ1w0xL3>yHjB$|K(C_1V>C-Sf$1YG#lb;heDis5!ktInwvMCzHxFo z{;YQnm8t8lt2Iu`^dWf>LlM#1z<^5qdQ!5@N_pqZ7;GxGwGWXEl% zb($?m@{6)$Ro9~^px+yeijlyIwf_k|ot>RKAg(v>44dIJ8xD@gHBe4VA5uOpih@jx zzRY2!Ls%t_$csK)U5-Y0{Evi4%EBlXI3K>VdX-F$wEYTpk}+UE7<8CP9%kY0JDD1l zFia=MXHDrEgf|R2kg2M8rxj3wbdwl17O9iLkdk=s;glKX0~ER;L&VB>jiJ_PZ4N2) zN8-$g+T>6n_gT>;uhrT)WsE#dslWv>r6S51R@NBdlG?d$Dyh~I`N(9zaa*8MtJJVm z=xsv8)u#>#NQn`=DYc**CtH)|L9f-vbdf1ZGrBlcG_(~5keXr0g>%FHl&T1C&-}=d zvP$VbKXNYA^;E-D7Udh9B84z`0Sz1n-%RVlDL|%wNIQ$p^H=`VC4w=i^MznOK^~Jf>Mbog5R?J$1{2~~FewK(r*uE{jc(*-o zk41=B3S&}3T3b7e)dN3G2a5ef-*RUukuw=xL?Iwpt?1!|EYLpvuyzior>|xHa#*li z5^+^7z8+c#^~zx)#2 z#7l`u(j+-Q%uPUF^Y&108GrR{CwKqSzdQL0KX&q!fBy8}Er0y;@V>_%1>W=c&;Pl{ zzluS~u>`M%_rl0TOGh2(D~|33L2Fvu~)m*RWz z8>prW+R-C=7kwy69-&_z=1Vi5;?OS-^QD>hWte7D^^#PtPs+s#8 zW_Ni08V*x?7|acnvZCjOo|!6(X*rpKmX%n{*eq4+eYl+Ou9WyGJuQoA8=|yI2W^ne zr1_gvC4UAkAPL04OAYQx5#87Vta(euHB&W;%=|lqQTVNdV8e1}t)GKq*HP1m^;-11gybj54eg z3NTQNU$0TxU`#T~z8iXoUWk}{%eWI<7hKmcOw(A?vAbxrMj~c_Zy2U|$!Ue88Ln%9 zX&5H_s+Qn33W4H}{lF2t(HIUFIA3TqZ5sn2oTcSzecV%~No_!5-s=N4>g~4Kn#O55 z7E`AH_(Hnj!F>Gd$v_*xd_u@O4?l&P=C_uYC+q7`!g*6IFCk|JOr9IUbbUQkoVV0a zCCufV=|T!dsV;^?S*H{Xy}q$w*8suPYr~yP&7n`}4!u`gw_IS`lqyA8CLtCUrQ3{}CS_5( z9na~P;mj$8CIU7PaSs4+&slJs1!rafSVIfIN~ozjxChW|0(RS`H2aUtaSTV99rNUB ze(!jbWZMf1uH(8n=b33zM5900)!8+J0f1qO+Hjb;wR*Q5MTUv5XxpZ>I`vbkkk|AF zU>c&H4zqMN8@-WB4Z7W=$Fpuvb~aRLZYl#VC8AOHrC#9SK%lnV?q&IYD#a11hyB?(dvQOINzMvg-po-3Y! zsRdw70cMUfgPWv$>%F89z$E9Ab+_eg0N4ird|=xcLg;ngBM&jdn}Ec5I80IfyrNm2 zLZyj*lGjn)Zmc$T+wD;ssBhx~2&aHz94n;r=OLo*%D%?Q1q`sGlfs z$T}e!Vl|bhd^{653PKzNezZ}j@zP|Vu4#k-?>G~G z16RoR+gzSjP3BdeiJT;gR|^!HWsNuSJoR6RM@WdnO@8huq`6Ov;v!2@XoM~SE6PAW z9#0Ba5hLZii@_P|Qx_`WGOgF^b@Vj~oHGVAQHDWL2tZGysg_0HkdWZIdbZ~&hgxyN zV8Ya07i^wQ2(F=nA}oZ|FjNwYb_z#f23W7x>%G6^H#($h^}2LzOUX_PHspzVT`6)9 zzF!s0cF&IhQYbqrekyTP&>jpdEBsoj2B^StTm zxPU?T+>6ey8Y`x`y3sZ-Z){vPuY0U}@5W`*yu5Mv>i%us?Y-+^_uB4l?(N;5Jl|V= z>*MG8u-m=ey{&ugW9PfO=T@(rd;D9grnyo*_jd2L{`GKI_xxks^N$&q4de30Gv?|> zwPMDr-Fr7yO>?EXer_kLd%JsE_a7cR*Zcgr?z?-pd$;x8a=y2F?y=qTs}El`&CAuj zw|TesuCptZ`s;8NzDS1T3?Ws>BVA+6m9k3Z826^oM?y+ipM(XApKFdM<4I475ML>d z!g|!!JN4S~(hYv-Xj5+c?RNLc(`Oc!V#eUVr|ApY_4?A%^?u}N1+#*7yYu9kUxz=m z^#fteeBW^vG+o&6gd;V_aptzYvYHD48@7H_nlSTy$6nA3Za?8@nq#|j$6i@k5W>z; zh`bjslmCY`qdJjpqPFowsAAl-OHE}lb)l%zxL-t!Ia`h=+fb&m0_KF)Q&6R{sHB^-Rk96L z`VZU5cJdDw_{~2mIzw`Dtyp}Z?l|l?>@FNxICA*HyKiUD1==!vW0f;5q)1*AKTq=C zI>WDpW829#7&`vx-M8_Coj+q=x`BUIHIl7`cja4sWP*#}F7<}@b~=F&mZWgD;JgCU zl(Hni8Kuj|tyBDRlS#Vt@LR!yYW30qRMgu!L`f1~e5j;;g7 zaTKFvx`FEg?f3f~p-D{x>~#CFBSzGyH|q6~O9aJbx{Zc`wXdKCwjK66Z3>PXIEDcj zM{)c^F((QFyc1Nd8Q3;BuInIpo@yj9qG?HRc=cMnhK6AZ&H%ypYyD;m0sWvcXtxnK zm!_@(t<`IF1|fsn+F*bOvWyY4k2(QGy95Z@GVi<>Ul(H3sqO&%ssp8v^QT}8z% zf;dbiRX$!T%EID@H?L4Lk!m5OK+xo)`GvN#j2emtyLuv4hqKJfqExa>l}wc2zo_Hc z@<@`rc;kcM#EIhyqgJoi?P}-o$poR%=ytp%+wK@=c=L zCip&sE3@MJVaG{+bgvtPp)MPl6(~tGnhT@Iwro3$Z3{-AYQt330Ft;jN8dxv84qz5 zrfbq?7%&I~CqhRtcml4Fi~&k@7y4}24J1bNGMvd9B+a>W7cyW--XoIi=EnrGF8rmx0c2ZG@FZ`U2HZ17Z(wl%|*-_&}uC% zv>x6Y7Z>r<2QAXa+75bQ(8PzLEo=tieZUCWWY}zl;lxL@4i4_SUxj-vL@j^TYRxW6 zEw6S z`|{V^x%}+ig=5*y_U_Jtq3KpymSx$ubj{$C?DHuqaW=Z(x?gjguSwVaeb@bc`N-Bf zuKNbpeZyaNP17)YreSC;T{rZmW*FvO&(DKV#zbVmf9YaSF9KbFn zT}Ug@3a(XYbsdk$7X<23f&$(T~Ux8sVOOwEqVjpiy z$(TSCmgW0eV^wSP`;L+eFxk`3o6Zyl%KK;v$KcJtGjD+0d4A zJXg~2oqV%63(Q3T&mWyX;49!{Lf9Qlnj!N+C;e~B-4k0c-`TdTQ50IXz1ZU#nE0IFt z^P_f8YKB*{YdzXK1q5O-umG?u^3Faci|~)M(gY5H2hRVQ4q% zSyrog62&0x*a+U?*P-XR5co}K1Oa$%?`0uEy*^%BT%_o@zGE1MVF#{*ba8QQT(1Mx z4W*)((^hkshY^4ujM7dApwmf5fe#Rcx#urhX4`JH!VuypZUjLPG~y@*LWo1i)hqBp zxI*4bo+3X931sjV_#k`+z6iepe*pgvuA)WA$nyv|(IL2^K{?Oo`PjJ3H#>OlWosGq z-Hnx7$&Lp7gtUH(CW0cjpPH|V(Uo5sxh z!A0G7dB#-NU7u&n)w3WXZ2={o874w2DFI<04ToGP)k>HQlrWT0h6&CFGO(UmE11Yc z+Bsp;S=ZU_)%Pz4*5tFgEQq(mEJu-dU#E#EwE$~kZy_A4B_^XpLum~dQX0$!Ngmlm zPZ}tNHBteXy;d-q36xpWU*3OpYx*wL#KyUY(lmWf81!c!sZUZ^8{Qe3x(+UuWu7Yb zqnbF&yRNC2v!d(j5A|gUG<8##6{@m(fTA1@%d#wnqoTx{o3`~{bXMd=w1l(|)*znL zf7{He$|LGPS{oCh&5RQR0fej;4X_5t0dQ&ReVRG|4sU`LX9>N^LfSaZ$?Riz{ zKU7So4UI;_A-&It9<)_yj5Sr!H14a?zUw+MG4{n*B>eW68ZS6`4Cm5_PxN_?yy%c} zkQ^67t!(JJva-&(uB%^T#V9~Kofdr}sgEhaHzzlfHzvtB=N$)Julpy3OLxFOb+*QG zfW<|%hd?DnR?b4VHhfRy)LTilk z0^CNik#{jJE-o%66Qb#KJ{paxB(aHm`B(8jeFJ+o$w$Y(7!H$3GE0)$Y!Bvq*)R2S zUi0Z4^jy#Ru*$nojASKwzYAe2yj@%i&%69adH9#+?ce?$Xx*^;u{S((8`VMFcK9;> zrdLDz@K2W?dN*|HuYL4M=e@80k>v0{!M)|+Gl%~P;#GF={5x-Yuk(Q$e-&DUAc?PD zfggq|q(<^~5H_I|`u&aORexSdN|%}C@WZ&db?MUP7DATogME*UdszmD|A_s5zfWnu z-|yqUUfS9OOA;KL&60<5w^c@5&W^2muIsI?x~}W45=JQL;mhG3@*(nlG{GqpI6s_-|fVVQqHZ`^h7MA ztVKa+#Q=`&Xqu~Zh*tw%+5k0a)HU7ldc82L)i)cRj<+U+7!6!kqihl*vz^%SC(Q;| zL}w6ybQ~{kHU*;G?{xzThNkIJyIreM*a6e@8k*)uaRRv~HK{qSPNBw3)3V@J&@@U7 z6Pd29fZlAZ8&Q~qe$LruRI9lrXl^|+O^TLI)rLx;n$9?|IF15J`+2`FS*>1pwK@gQ zi!|A4hG@GH>fvdE0tF^GpowNw2aArio{TJYU2aN^aX9T622JA7H;hKzwj3L5A#1dq z3#FwJ(}FyLh#%gd7mHn`TcIMSqrjEP_!Xw%iJ<~HPg~=tl3Bwe+0Y=QI~a_hbRFA@ zhYjL{0&=m}vPzV7sc+6wT9#!|Dx_swCS~%Qc3SIxpxO33XQ`IwwI$~-Ez6RUQPZ+5 zDJZod4gw~d&7oS&Gr7i7A+vl{4Vz5?EC`|@U$amp?_BIT*_LH8Dm2ToewxYs;ZrA$ z+-ZBEy}H_7Xir}!D77rhmVz?VvTS)$8b(49y@eoAV<^*Sja3pZdWbYJ44IaEYKGa> zXW(V<$%qnKGjc$#@1ew5vz>OBU8hX*c>k~yZBP;|rRPkfbagZ?N~|nMb}|{agl zVv!oKu|OWZYx8Ofe{+ZrbK8bKL{Uu{{rh1$xd{;Q;$#BbCr%taI);Z9mu|jgY4O_I zZoBb+_u^U|A&%-byQh&NU%sa6^g7TDGo;}AUc26)hG~TWp6Aw@O?)>~k32jybjIa7 zp7keZvk?=Gr&&K6o&A%prkQ5_Pmc5l!{MNRcZ&2_2=wxz@ME-1cD~uV;_)tLTzux2LiR)Wjga%G36|xUV40q4JMwClDGTWH zP9!?Y{^G1?cfQI_oqArjG#h946tm&~986z488=Lm8Jw8~i;FuuJEy#O`)51dOas><_DT!|@^KAQ?8DQMA)-oJF|TA8bBtrpW!MAKZe7 z4Y67hh8L9uvpd>cwPKRZPt^fe6mmsR2KAz|(61o+Pf7v7V~yhL#!GznsBCWfbU2in zm5ARa@=2B38dgxO1ZY_F39QvZ&d|SQjBzi~hH_jN&WNCV#xd&W(!3r;zFsEkd2On)NsVp)Cn71lxHyRC*rbR(41p%BFY)~&ZGo^KvpJhsc^+^#^tD&om`||yI zdoik?@8DmabSOG)8(o~2ZI?4MWmNG|hoBCwjcT$?@T+S-iF(x`zBwccS zAIMMH3zttauf?qcs6y}wB{eI^yskKP6yKfg(2A%b$OU=T$XDt$qT`AYJ_3M1iMwB2 z7&|&T8d-b(-6zM#M;p<7KfBd5&R?$1mt7Zip4U||@bP3~*L_NcJvlvXy!S_U9!*cG zsz0sk?0Pt~rksp7#bms^oJ{;?JSnwO>iIiomwA@umuGiglNQDF>8r~e%|FO)Uf$i2 z8jqLR$;o1Iva(t=S(fJm=EJkESPzGT_?_SW#Dgp)G|kCJuXkm&TbvU@ym93`(fMM> z-aCUNu}LCRaICi{?@PWQ`FQdtlfRPuqvT(Y<_lq~1n3gExN5>wyQNe=M#q*5-Q}mT zdXVi_={sHc@DEv$xOgjP75qY|YgBifLBpUFOsh89 zl%5~ey-3#0z%vcl9=Nooj&jok-E}ohGwgiqa8aubx^>2M>HEoGaBI5_mSwM8+h;4B zx^D3i*D=hV=i1-$Jk#t@*8H%h^;{QxzrB__CI)$$)_S!z2C;`oU8f5WMpAZ)6Jyi% zTo=K1?2YXx0@z+!R@huvZ5{2PY1z7M8wS1>Fo^(xb4wSkUO!C|fyti&W6X}CVAc<) z-e}~$aGTAj21aKdb4-#2)b-Hw!cwcntaht4umg~-IB*f;N#hjuG*D`>wu+7|-Fl<> z=*FS{AYUibW#rh{qKB9l?T#PmF8xU$)TE+lyv0@$|WAPqtQ+p;Y*KfUP&V1eha z5<&CNHP5rWFQkYQDWs6i6<3;iq!Pd{vs?;K zk}WfK&8$T_v(zff;aXTKmZ$J#mj7a&TRZ%6-E}p{&pOX-i3qM+htrP_;1BM*uOEh% z71muhNpfR4n*q%Ky$`2gXw@2xq=u^aQLZJ8Ms3VneEfIepZW*SYetSsfqHJe8w8JE z2YCjBP~u;G27dfn0-HV}Q$j{E69y`Y1w_j-cv52Ek3t2h=OYy{$Sa5oLcx#xvXs9p z#JVQmDCHZawtk%V`{PK(*qa~NfZj*xeUv?MJL2t>{+~e@ zi3x$fgUci#-MpI7h($!kMcMaLfk*0jDKLqPS)QenvRR2hU^zL>)X>}jt{h$tEDM(5 z^84Q(DCPAL9Nx4a2Fi0j zX$d;r)xG5mF|?Dk+8=kp8p=54t4Q6}o-733|~>On1?42bU!blQXb7ibI{` zAUdKUdB11S^mSO6VZG)kA0PI?gQ^O4PbdZ8>XaItuO5A~E@o1M}8hv5g{3xWA%260SIPUBQKGr!Gs922A4h9ozDjY*iecw&^7g&*X@r1N z=XzcE4|s~~kcY_o$Pb+fIr|R+~u=p&z@OwoskwYecueby@1Ux}~6A(i__CKnkk1Ha9jxgHlHIaC2j8GoeBT?Y5!o(4K>3 znFq#U6fjNKZEMvu5QDJB0c0%<5DjzHve(lT#~4L6)BzCdU`G+gRZ`Y7cp07|lJv+L zxrMxoe1-fn`A5j%5qK4R0=@?S0RK)%m0k{HzN*Hl8GM+6mD2-(B&86Mg+HDo6@G7= zUWolq``oEm;kT0{`O*ml=!9Sk2BCajBx*`D7uioFUjewtih%UN&s>OH2go@OU8W0( z$da6z4Dhm)gal%|%glEnM28i5CBd!BD##)l-XlBFGp5zN%xCF<7W{BEn-tS>j6guC zL4G;7%m8Y$YD(IxDp&4`2mqFXcs!9&pQ)*4%Y!66|?l2I1MP;v!> ziO6RW&RT&vtW(XaVp^*4Cg90d3eGAFN+R#TOG;G%F3WJ4f=QJn80Nd$FQzK;f?S_X zGBhskxGxQ@YdcLG!hTenK+o4PO7@J4O#VlMQfcCwi2w|Q0MM_)F$4cX^Xa^OQZV=@ zoQx0Lbhw@@uPiNxyJ?Da>KSIQyS|h4$Gt|w9j~mk+VDT$6@nvb2)d?e)&SFSLP-oj zN8PyGr^ds$=NU)Qw#cAXmgz~*4BMg<81>hEmBe6!x>N`O;nvW|yHtr%sbx|MBLF^( z(;f*6I4~W&MF6m62tsfK9YHsApg_X|K12lAsOAUC8Zj0PrB&mBA4?cc(r|`pGKh&% z?6uB2X1*C!>b5dQtyc}&+nQ2#N3!^YtaI405+OH zFqvU78Cal~Nue|;#$wD4rQ2^uh(O!KlI1d+B!XZ4`+&0jnQlSQ-oqmEl~_KyU*Vr; zYed>ABaO>o*%)wcN>~fdOH&5$8@mgPjTHuyp!a4^YEA*{li8-QhDffWwTwq($znJc zskLDB_b4wKlajcGAtJYvS0>3p9*{3@7&JYIc^9kk;9X!E$XK~Oiz~JL?wX)5xEs}f z>&u~?Zd7G`fAnnwA42HAqiLSFH+9DBJk=EG+*-m}B6Zh8AxOAgSF6S&N@#A2buENiM9Zq{pt-{xO1woE8O)ph_6k#k zuQiQ%Z9ffCD@vy+>Us&75RUq~@k@rawp2P;R-BvCdz&d(lXkreX*yut_a{fzu+0lM z+_~Gy>9` zlNx)GJxZPXwD|wRFCda?C3RuJ8ax&rTgO38RGQf^$vZLf2x?DpNHx zgJhM%UPXRN=CkGYUezpk#a7!rNc$H^JpV(<|M17tCtaQ&wRuK%JdTv--6+e6`tIT6sBM8XYtdyHHO;8nWod@08h3+NUEBih z+lh@nn6gWSBSk`Bg3D!laRF7Wi{LhX?qtR$I8oerIO3O4wnii2c)@@5D zt8tQZh_qYDRq{geS;_m7FY-wdUgTKk*g2@$)|Sl_|!5qAdvowU}Y9)l;n|L~vbiTXeD zVefD`45k@VJvPj)`!!#@12w84Tx*e(Q#n63F5zh0;+>fUCo@q=`I@l;zdFT0fK*7R#$bHpAK9|6ogXt8yZ=a z#|9UuBO2&ZRDM}Pkng2(%UKRje^oaveW8dQM@*Zx?W;J}*F!K3$1!Zme3vmceWRvL zduo13(|-4>nzlF-juTI194CR}wANl~_`Ycvj_+$PleS|PZ_q7M|Ei|_l5UwgM@qE5 z85Z%#COJ*ck?RSmXuY6|EHE5be%}x0Ml1Iu@iy=bD5{7^KAvP%>J>`vF;PNMyTJs5 zu2OcnbN?%6b{N`>|N7zn2kE3uqqqZ>-LP%vn?|>0hG#%6+V%ZpOke5P%~?NGt_$&` zJAPAl-1&Ve1uTIS@@sik&DV8w!v^p@+X7vW9MdqQg}NkP49YaKjnKB=vJR$|-1(Nb zyyY$9fhT5N{TloWJWY;}YshWne)0r)1$o0*0R{4XSxFtUaCJpQK{87PoYZz6KJHf8 zy+?;{GnZMJet!ta;SzF#b2h*LqOftjaz-g6aNNjL!s)+AA!L@r9|pzj20XLgXf*0; z!El%k{k3|d(O5qV4^|ayZaw=_RfYBF$nL!_JbD!1=+PJ6yL%*j#~#3$<#5q+5$FX3 z%NinB*3exJmcnp3Ts}RtEWp&VsCNcnPug}FF3l3lN)pS8Uvx6d=;SOk8tZF~2Bd~* znSE$9*47&hI6Glmn~ywuYb(o7-?+L8aP;U4UwHH=!0PIa?-R$*KvS>R8g=VF8OL!f zL>$M7cwb9PQ>_Vwh~qexB8lTzycfNB_jPmu;0lPz)$ zxtTmj2nab5b$Ff1a6HS&q@6cZLRN)LbD35}7t*TehLw{@A&XHeJ4otzmXa6_+bz*S z3cYLh_G7C*Y=7_C`>8j*_52&wgMb5Qdi3hK{Gi#m{iD5PXlkQI&;95xdt5wuUfPaI z?kFEQ{FS;>w@iamsabJs#g1t*l+p%-r$oh*KNmXuC_);A1IjRod+jI^Tl7n}rRi;> zckhO{p0^%`+J)a7ZgTE>QrHHJQ(F4~E8*w3L;k8)EUw>l-Vgx!PcB_Uhu&-;T$qluD3h zRJRYHQA{z8=|7lMC`D&$+8(DZx(+R*pg=7E3__$qK%sZ#`s>f1zw)9NT>-|UXuKB1 zoW1uU(DnX6H{fg#*ExqPh_=)3Sr+sFKr01bA6ORt$YwJ@#K#1ezyiG*Swx@*~Ivv*(oJ+$L6oa?jaKmP^ z(QeOxeFU40q?aV{g$5qo4-P;0bp?^wJVwp~{Hw2HubVG*x}X~&Px^jxW@VAdvowl@ zBnWg-JRwObc$bj)AK8YEKwZso>^Do9rN}+(R7oAp8rmFei&2%}Q)twL#y6iTqBv1e z4p%5jr)j&cE9BRtV9Yd4gEB*-)Q}SCB*x`L{X8F9POsB7SF#ND`U46=jPiUi+}zwm1Q@kiJbqeFUiJ0Z)yPf5!bc7#DU61T zS*?`ROyq&<^{~hT{r*OE^4(zDoo>adZpXH< zVIY9{ygddKsb(atw$X0KhDMPB>s|Flm`Xi8i;mgRtXqfwwpgp>_%2?nExKNkgm%Ep z1voI!?I?~H!-xyPqi`{fBU=ZSL%}eh6C{b}zy@DJZz2TVMy^!Pf8IO3ju7e*LVt!3 zcA60O_k{2_5yGD#MEndP@(x1e*9g%bAw-V|(ceah!3Z&)M~FEi#QYILtRW%R#|W`& zgxHS|Vn0KOb3Gx>UlQWpLWox*#QOn4{O1wkf1QxvI3dAj2?@u9gijL^^$3aHL`eMi zgs34Q>KQ_6uOp;x5mNscAXgCfUrG-XbXkvjT zEue`Hnnb}7gQk9HRt%awhvqe*xer=8pp_L`xuMk~XgvtpRD!lZ+q%&96Lbne7aMe~ z3*GWVw_=YfH4NSZYlWZ_$8cemp)G$mx4l^P!yA;d`fx8R1gD`Ic z%pV5}4#T4SuxJu2UImeEhiw7a;eZ|I z;h$*`-vWGHV7CQ!ABR0ZVQ&ofcYytV@OJ_K7C4j^4n2Y+v*2h1jy;DHIpD-3I9Uu% zIUwkRe_e3e2WLz;^Bm4+g!5sz5QU2YxEz72mEfuqu14Tm4hRF+9dM%q+^hsQ-Eb=e zwckjWyVQ?=9_nq*-ga@DCVE`TjPs+j5HW1kW&!)jk7rZJ3uUEjE4iK#i z@8jSD@WBHg+rX#u@c9;esR^+Ne2c*kFZ_(b?-ua;HT;Pp;}NnHLw`F^LQvwgDDeiA zHOR;YT?` zD3=S_>?p4lIQL&$>xCa%#hf0J{$)Bk7I8-`}%EeImaj1L< zRq&vS7F02U>@id=jB2=1&HSiV8&ta?s=W}^j-k47sEHjl^P}bsQOhoTgE_rlA2rG|-L)S<#?bXz(XA zv;`U(Lc^b<(Q#-@2Q)T>#+himi6*>8Q?{U~ZZxefn(jn1Of=JjW<5u~!)prwb=^4Dm^LbT!*T4hJ8&!hETw84uuThQjiXlpUF z&5yiY(2fv_uZiNfp!myZXK%DSBid65?e`%6WfUle0&aBhCpy*;9dn~&VRW($I$al? zcB4=jok@hwZb9el=v)+CT7#|)L)W}0Y(rr`y1oWo52KrIbh{L~V?}rE=>9D9z=Iw- z(IXFfd>K6np{K)8WCi+f3;O>sdKN@4)}U7{(CeD$O$+q)IEs4F`!M zN8=x-=W63ALPt#`Y~W(+)htff;dNU0r_xzVA3lb?_{7N}!Z3^_!eK~ZNwJ$DVuTp_ zNy!NZ7$W?s^2Z2BVsKb2Lk!Z7qnM6Y2m1->zobFa9fn*I+>6GsHTo$N-3j`Dk>bBg@M_E&et70n>EG_6wMg&7;YbltPf18bv`$N7^OeQ>=hJ3*E%2FN I{1*cQ03ENt>Hq)$ diff --git a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-regular-400.ttf b/wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-regular-400.ttf deleted file mode 100644 index c5ac00957778d6d0b317615275b6511277b246e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60236 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 C9oP{7 diff --git a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-regular-400.woff2 b/wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-regular-400.woff2 deleted file mode 100644 index 7dca1d907fde034ebacc631acfcdef45dea89274..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24028 zcmV)*K#9M1Pew8T0RR910A1Vw3IG5A0O1S(09}#;0R;d600000000000000000000 z00001I07UDAO>IqhA055WXgkrWXppX1&9a-Acci+RUtj8#XXpjn$!cJs#QYV9rmjD z^~YcT{P)kmaXr>~6V(4N_4^u-R=R5d*ra4RWI|Se*o67cV?E+O0G=ZUP=bhX!)7Z6 zB-GsHO|smjVm|+9ss6hUz1*v>y!$(RE&&Js3Lrf%l~i7KJyP8Et;rI^$eUYLbkDy!@c*tI>+x- zbx_r`-jHZ%EmyY zF1F)!h+02qoi^J8gCy=Tn(Z^)ydo43l{*+2^|OX9r*Hmdb?eFRYhLev0Jz-m8!X=b zl~z|>uPUoX6IH%P+Z)KL>#C_&RaZy7Dr)`%|3U7j|G)=Y^6cAJbN>yppJmTzNOn)Q z2{W$u^}enipq_^HiMD2K=%?Jac>YY)3UzhkC}!14*A-jk^WL2ekS?Lk3_0m_P z(m7gn^VLhL&cimDK4sDBx=1V2n@*{Udh}Ud#Py@pE9sn7rvu6Z&%DIzj5hu1>gu&? ztye`aq14vQs>iGMNy{`~Y`o1F5~|9ybEE{VeL^X(C99sJ|0eK>&8z0K95d#|=D(<< z&sa5jbbi`7Q|jA4Z*Bg1iGP&0tyy(nSD;TlS={N8(Vb3sSv8OBsz_QZT_XYpt{11{-a%*%n)Ev)v9m?Xue* zd+oE|0S6s&*bzq^bJaVA{)JnG+VV5yKP~^X{Igu%Ht(5F$d~2I^A-8Zd{w?W-!n*Z5of zJ8s1X@nL)vwW&pFn>wV9saxuidZt1el`2wYnvw2Gv(mh@B5h0$rKi#}>ACb$x|zP8 zew==hewluq{+#}mK1d&?k87IM+*xy1&CHrPHS>DV=GsyR=nx&I!*#q)*BLrfXX!j$ zp@;Oa9@S%dTu+I!?E!nlp0Vfbm7hO>^yHx|ZD~h)S=}|!?zr(?HeA{8|Hc0= z-?=~UbdoPw)2rh(_d0kJPoI0|&z@cRyWc=tYF{0qL+|u~uY6X|>z%u{$#*u?j<$>J z2D|?s#-Fc#-uro-Ll>#mrpgN83=mEa5Kd74*@WYSV~24)_wQi3&#u~Eaxc2)-E;0q z_n3RI%-s*})>`e?x~sum;f{7kxt(+ER&L``Z+*8GxFyndA-7=u8dAHi>wp_@W4p0j zoX<`#ZJj&d9CFq>Yn(-ShdINU=E)g3BM;=BbdlfXSD7a5wm~Oi7)TS46EX?ph@6l? zvOQkuqleiJvQk!Z=#Z_-R+0508=v*5ZH%tsWL>fz?Zx<(6+D zm{~=A{(f@eTY~a!xnk zp9Gl}T56@WHri^Zy$(9+q_Zx%>ZZFMdg`UOKKkmXpiH^`1{i3Fp+*>KlySzJV3NtE zx?QCi?sB(#%rx6v^DVH@BFn9?(kiR1vEDAb?X}M#M;%w?UJrT1qaO2wCq3n9&w9~I zUiF&Sz2R+VoORB57hH77Wi6o93Sn3_0)^MH8HQtmEBD@pWwg@Q-jo(tr?kX+r4=?P zt+7#QgH1|XY*yM~i_#ujl@8dZbi{V06Lu(_u~X@ST}oH%R=Q!2(j9x19@wY!#D1k0 z4k*2GQ0aq1N?#mS`r(LDz)`(SgT@|1Ij%z4hj%{XUJCsQb1B>+9Hmf8SVQ?4LM7!t zCCsG!Qz#Rkflx_~u$sIrVIg@>!tLY}2(!tT5zdk?CtM(3LAXf1l5mE672zEDYQlN) zjfDQ>*9bGouR~gV1%%xc8xj^$Y)Y6xu{q&5#TJAriWP(xDOLi+1`zr)s5{{jgL(i& z83;2OG>0&NKR!sv`C~1iNYqa;gJ?iBoSPMmKo~$YCJZDx5MClW5tb9334@4kgjb2~ zgg1zug!x22!eF9|FoYON7)nef3?nKC!-?sHMMPy677~kzr5Hi12oS|e5JnQa2&0KT zgfYZ^!dT*97se6Ci4z!4R0YCB;vvE$;$gx{;t|3s;!(n6;xXW_cmaed#7l%q;$@h> zcoT%F#2Lag;#?Q*A}$b@Q6jz_x==xUm-rs06MqOGWARtO+{E7ib4dRe@o(Hg+ye9= zJ^*0_@gZS7@e$!}qLy$EsRdyssV$^M2N1@SI(A_KsSBwaW|4XX!dy~M!Vpq{Fqt%p zFppG0m`|!CEFjGQh`W$tA!#OQmfm!c=8)!L328ZL4_oMQnb!flj3&^Rgd2dxZR)#h7T4FrQgYZ43wtwS&rwB9ld0c`-%t91na?6B-j9^GQmbLEeJM&8A(tb%ua&MV4e|d0rM-tG_Z{b zwu0?^BeMS_LCBzS@VISg$)ldiV6RY7k;wMqVNyJa8h7*XNTn&d2KZP2O zB7RCW96|gvYS@bS>C|u$@iVDm2jXXk^<(-upoX1@pHmGN5I>h1t{{GXHEc)xLTWgN z_~q143-K$c;XLy34d{yb@hvdT-vP_`dtl@rfRX!%-^6jx?T2^~_K7y*w@^lYXo#i~OOO9vncM(e_-i|N!n50xb z*nFh@{VrlkLruKhr4qgx>EHGCrE5*>JRlk3N5590Qqm(TC4E3LgpY>(&{)zV&^V#b zA03f7tm9u|j$;y%oRCl^6Pd(}GoIyHKC9}go-saQJeG+}vi6?kS$aH;qM)0b=b!urJn;8*zfSMm2Eo%LAw*+5&GM=)ea`Z14^<*# zzmy3GmA53Na{ungG5xEyWA964rcyQJ9BWKPTcNZU}k`NGb=k~lj146WZMs8eP z#XGGQDmix)knS-;g)lxAyft(W`0BUZ-e&aP&fy7lz$N=ju9u4nyZ zJIi`qRcWP;2)uMfWn0CmQ>!1NQc}`)yMmA;9pqV_)!nt*MO9aImS=f7BABVumx&z3 zI?9A`#((-1gJ#pxB55$k4PG%!8bBi%zR_cv`OUv5DU~4U!(Z7MWk5FC>4jl0Hnhk$ zO*E2W+DHIb*x$gJcCN6FFdFUbjIv)A!biJ9JWV=;j2KU)Tro=rc~*zjV166Ss#+#- zDH9x0nS)A6Kkw*_9obQ6eE1fXlCDU4UDB(PQhC+3Y+vxUclbm*rVr)m1GMnGp3p zDH@~7Mcd=L#Ye5JrKV-VTMkQ#ZV!iR;w1sRGVnBGyjZ=(Qb8r@ zFij*^Sh~YlVEoD7sli%3moxUF?(`HV!V^?VYTNeW+K<{Yitdl;kO?_Y$Vl%T#u;Zb zEacslRbAEFc{bKRBb{(2OljpmZBW-J(sZ^mOHwP1_J9jbjrij4UiGTyfFsvkT#HQ} z?e7a}#&7%6KauTMh)JJp5>o5FNbf}UpjnvCglK+Y#BR^mN=oJTF@Gosd%yN>9+%$z zP2coQY5UjHO45#8T$6$y8nxTrXC!jD8;j!`QjzS6=a`%(B!M%@X4_I&u9y@PnaD)O z(UT-HkdmjKCNhau-5;MnyLU2awpz`}^qyikiesiZwh+zM#^udTU~}{GMyn}=t#ci5 zJRB80^!w$suFG=J2Rtu~EUxRIuIsu`X0y9rGOHB0uIp09Y%2;q4}=gx$Gl8Px`ZTY zmix+%-0EdK=jaD|p8DVMWs*|)W%F{o+W|V=?Q;H>w>(&ul$Pa#Z|PBqBT3QeOv`iU z%4w&Af=(wFFHWX(aqNfql5gYv{&?T&^~B|68Rk?jUR>SFN=oJDpOciz=RWV@EFAec z{lAA^h6vu#JFv}CI=GOhw35Dxs*@fjS>vi>Sk(9VP1 zCR|CWT>Q_wHrDC*H{2m)Bsoh5V{pds+TpKOOo}dW#_~D0^>5lA?2GjGzVEub5N##dGVwLr#0pz%N&j%;#MI4Nd~};c`I~lv zr^zxQT9*5x)cps$N?IGV_CDiyR?_d}j>Er`p`$(D{LvpZeGin&=l^P&|GGF?C@-SV zRCn?3@LiSpi)(#R{aC0C@?LWAS?x`6)#8gk7TACg7P8bRRqYvg_2P$DVTH$4d+{ke zG?lHcc^qWlzo1DrtY1>TavaXMznfqp9?0@6zilpjrUTQZi_;0UA&-YnCl`Cw=xxan zolGw_iIaVf9gvQOMSVZMRT?v1o3~?&8r^(bZ*U?I&IwAPw|ua_w~q`T?Vxer}G~qsp>?QRb9=t$Kc#S&a9YcDdQ}T zx?mh%ewx}0`&?PRb!wN>a~F0h!?YP=)u;JEC;ZaF+AFzbGmX7sy;?c<3f>$~zGr~z zy3X%vFtc!e{N}QSPb`C1c8lcRRG-*Y2N49aEQ@^6S%nA9OgZo>lOpI`|51 z>&&;WeaF!tk$_AFN1xErVOb4F9<&=OpZ#%DbHnfWZOCLWNF?{g5$9y&Or@{T4r6$|^$#$0^Vfr;xjP+pH=Y#-)SFwXeNrMfa9<#c8B z?Ag_ok1nhFQjgB6{ePB}%6~qyl2e+moOxcbU(MFM`y`$w-U`SmnLY7xh4B-QZMohs zAOE-+NBmjl_2A+tHhHx83|<*=GhSSC_cc1Tp}W(HG|Me8PP3(!l>a2e4S4KzuV0Rl&{sYQz)!~GuMEq)vqBh8E#*Th~*JZTp- zyDivVrLsJ$t1dq61RvP8zSHw>`4(>J+;hI;I~*?%-|{UY@SN}X4ju?*{O}JOOa!0% zTp%3phkw{}MDV%K^-~B4aSD+c{dX3Q4}OYDNk3)#q5I9>?1sLL5B$}!q*NaNRp{FO zZ~mrlyP<8><^AhIjlOfVC5MYl#nr`4!I_Ei;;&WXiwVxm#qVO-+k@j;c+>Z%Ij*(% zR@~>Bl-TU&%7|NxqnN!WaED+qufXyI__a2AK} zW!m0}z~TS`hl@i297Et>Gu$O}lI=9o$shmbIl z5#B^5F%#%DFtTt<|Dc>C!lM++E|8nwSDC>7w(MrFpKka2!1zaP&$EAY4D|ckgMNPr zur|{ol`+u0d9w@1I4#mKp0MpD)6~p7tJqx|pS7&dZrsJHEH^dNT-qP^7;iRHw$b_Y zr#l-gZ8kaUjRQ10CwG31uHb}p$u=R7T?%`YC6co-V4g1XtgiNGRZn8h1QIDwS6yuV z$7&4p1V8_6LQ~DRH>vH|U-i|tZKL&eQ`OvWKhMQXbKd(h9r2qj>rD|gUiMx`o8bh` z*Co_-&9{B0Yv}ByFJ-#ne&^dv*QLqVIe7R9OYt8w?CU#>?OeBw$9%lTodp;|FPk}PX#U3)oaBweIOG37rKFDq zwi6y$jSHtv4+g+saQf7Ru1cA>{3}gsAAf3?cdxDuhTGG}FLGTaeYmPNw`RpW zf@KPOb7ga_*xS1|xUX0ljAq+=I8i&4I<7(o-jlf~FvcSvQ0lrA4I{#)(DlWMM;%vL z{yc9}N6_Zt|6V_E0E=SMmCDv0E*M&H)13QN*`LO~Nd6K+_(w;+5W|m-pd#YJ_*nKs zL)RaDR5$bxHzU`<;>@Fu;_De(yc3JzclzW`XXG3qp^4vcq#4S?JWB@xsbVoHCcb*k zzd=N3ghVl495!{A-qd105zDhMs?JXnCG_(gGa2LCfb(@jv;7VI}Yy|-pPyHn4 zM_Y`&278@L{}owx4F8FrCX#f?D!EJus&X>zLdKB*1IgF8ha?k7>S_#uy4pj|8P7-7 z(15ep7mYn_H(FYPT>P{pvQ6&QEUdUxP3A;{f)ggf5pj_j zN38MR7WzTo8yCJO#MYJ&o?nbT-*v}h*Tp5Vrz2mL<2AT+2$Z0~QnwK)=kS`PlffAB zF4u+Vv;+!MkH^=Q{W_gxRj%^g<(5iX!0iYlVTDlII41R7{ z6lc#C#V}10TUG5ON!ND%xyi~(w;hF+6-Mpu%F5(L6-Jg7g|U;f4PiK{_AR1g*7a5p zKmk&j;4cPA0wl?xpQg*Uy_^mPj~5IE-K70K!l2V?FE^5QyVVIoynI4CX)H6J0A>(Y zcE}F7K)#r~+rA2}K=9$qkkwUJK~xt-JgKW9lm#lYQM>|Mfm@3dbS9!{hmma8oQ)`Ru@XN+p zb)mwC#2{O?EBZukWxv1Uk9LB%8V)J&hL-PD;98ctz3ycZdNyu}(6g^}hu!w}_F8Mr zRx7Ts6BLF}){Y&opCo|JeS7|8{SK}25yP$aaJf;{Kd5)Cs2hEKQv*iBnwU2E2^x@` zY>)}5$S!#axsN0H#BH}YMr(OIKK;^JH;Q4qF5n8!-Ee|W zkH^a`ERJmMdQK>prQ1k)=jqOVLhsxu&(&;@RpQBKLq>~GkA4#$&wpPLHs4o)k_lu& zIPSXe(T@7M!`|Ewcb$uDl2}bL-$qFgs zEo@&Vs0r)9k;Hq^6ECK}s>@_IyQ=%(EeAF;c5%>+B2alXKEl2wDMAVKj(K#r8)cVV z980IkTy9@-WeT&T7!m&P`QsjBcmc2F>7`q z1_!G>BqK+Y2}clrlx%Jz6Io98kjR9_)Ktk(y`4{PY1&T9&7|L3^*FO&JI-dGU9>La z&i7jcrfDZ0rK-|wdJ*DBcXlW?9mj^nnYY^OC(Y$^lWDWrh=;?CSVms6rK*&AiEWy| z>dGD%POxK#3CoJ7@IZKttvRpvH|Kw27!9jxI08n)su_j$Qb$!8*L_3z9&Ivt>3pl< z3E08~EK4vnTN|pr?E6eHe4TMs?JU`0)GX7KVJRVmP?FsFIqcwh5|bVwkcrO(7&Kxg z6SExd_uyj`0QNVdApJ(rZa;7I)p%YD7EikTVFr18qNhB$+c$;DCwDr*F{#O$$cG3) zl}|Lz0B3nI!HvpUQcQ|i0?);AT30?E5P!>8c`+$wS)H?Z!gQTr9wFxrWO-f9s=S!= zkn$>-CbFIy*)&6MI!JeTBjGtq)xs!g#G;>9)tS?V!Bl3cTG;G*VtsdO2B^mQxL8{o z#Zl;6fzZsS5AtEJ--&`a3Ozdz?7OL(4pURLDRmWlZFNIv7{`qy3N_VYDl?4JXR0bk zPsEKRTGH>1yy1mWJX%{T#++*u1`~nhhf$oZt`$Su0=-|^R)l7z!_-p6#_F1_xHutV z$CW0D$vW94XQNH%IBwa+kjBvzq`2Dm<38hYf0pG*KXxGbY((=S0bCb4HO39egunsF zOMdcGb{oQ5^ne88+Q4S%Sy4EN6$M1ECvYS_drt@{OM8N2qLVgRBQ=@F3_aCkQq@@= z_Qg4$`L)C2S(f$(e1*aD=1^Qw-_hdm(zPW`%%|W`K-U+Cy8dm<3u0U?)2!I}#Ut>8 z#BqE#rJodl_~grEn$F6`59M!%J@PR55P6D_(RNZ%+K*!@mhU7Ecf~ZKRnv%8RTWXx?M4y0uxBMsOx#r$Go9x zOC}IkvC_@2Rc$MzigX2)lD5RgY|Eb}cGpH6_dnDMtMq8TviroaSI4%E?)wj>s;iM< zu11F0jUwE<&)cC`a48hJ5>&AAUs;y)109qx%P_)lsTr_Iey~S<%SN~pCr|X38ah?& z1x9*yHMRpC2QCIY%m3%n8R9GAPMhr_bWfil;1C~bXZcKf4~rw7tz&t)bda*Nm=%** zNJv0+Q;61FM>H&-+OqAZ^|X}9v}T;~nv8-Y&IQ-|=7(h6yR$&r_ohGeg4=+O13vNs zJ?TJzaj_$Dqt>*v{n5gT>x$~jl%|MmJayX>XS*? z93YoQR(q&+A$>~P4C177-aooK_iJ>-3xn??scT2^-M#8rGB2{Hm}KN`LXbNtR3wQ! zE;7xp>N1HExr=z^PK8xn&e9weDaZdiXE>i$OLiEv^wWw)4)JpW5Qi`fcl`XC62!rQ z_JUpaItJc<&Oi{f?hv)+{Iz5J2TnhlxU_H$`7GTqH-&cOnU4+!2 z7>jeAxy~K2O=sKrsEpGY-g#W65wk?Lar-PRz18nL>O}v^Bc!*20AlgmM@R4=e6Kxu zRGvus5IxDdGp!)NlaD$y#JK;A#AJVeanoZ1XJo54K1AskVp;e}yyMjy5CVHi<7FgM z!e<%ysE&()W7t2^j&N%+oam^bm<-7j(+Q@7MC`Nh*{9j27b0e?eF8CT(Ae2g@%>&H z`rl{dlzn|?IP891O$N070fWe|x9zV_TuNO$`h5Zr-}jy*d5;e%_1$5QkXI2hdX+5| z|NR;97$wUm**dZ?XSoN*XFCs8b+rq>Ot5bKpii~Jpu0Lo4pFfOb!ZrF@p0yR$*LlR zltL)0tQcTKXQUo_r5Q0wz zdH{r?=Q(lbpWmv^@@raPdgnYdP;tEfP%#149pUN6x+k1<(COsjf$ccfYb?jHyFkBx zrXG%f?lmHpGEKkX1R$8HHyyxf>Smtfmz8OG-}yo;HJ5;;=8_oSbN_Tg7ys!-k(5#7 zj*24BD2BtT82u<@G7x}>Tn7*W{4QW*_K;NU9cT_amR(niO?<#f9E|2PC%oWJ9Pz$o zTFUY?Bt?&;1ldW4z`8IP7mI6xGefKc!*qvI`~_Iq=(MqdVg>EahIb(ho6Rsh#BpG* zuAc7STZgve0FGma^}YSmtE*_L{ie3qwL+-*AJX)Ke{ zPZ^(tSpf~QN1BHmSJw;*@!7u5Jlaa7p_REXHeU0i^?mD z{gp#kBt4$9ch_@HF8ig38N=@{w7+>D;a%9_1g zl@$9_E?$_=bTa3N%383vPB4H+ZICUpOGt(3)eI1<`D>PqQSssY1s`pzIhB$wMP6{t zB>vebXyaD`>!ulSh0K+?CBMBCfxz>Io$$_}2MKSlNCOL6*bF@_pg>%k7nw z_OkDKzHde0a$y**V;F#8IIdwFr0JIVxrHi8Ie=+8!u5hc1n(mVJXbiTiKEzqpj4BJ zO053GYk1Krr({Ydk1_qQ$|v>X|3Vx^nwt(bHU_DyMX||a+3m`hoALZEm*leUfMGyciAH1fN}Exu0-X|$DkI@`PXmVu zQRw-34uh`2i#35~F|IpnO}kJraQmDUbdEz3k-nsR*||U-Bd;fKCm$kTMZSf6irkFh z)0hcQUnc%2o%zU1511x#^_+IGB39?ytlB~Dh)<&g^<#2U_dHPGB!x@&Q@r4~61jY)RiI1~HiGk}Zxw0#X;Chuq;;T!Itg$vuce!4MpTsp=Sh z@`CB7ZRg0cjvU*zaem;v4u(yxU*V3UUtx^9KjiSYjx))Y*o{egWRsAQOhFYGK9Y{Z zP(l}eiVLg3_(RYp;iEfZO$UXw$=CM;FOe}h69Y5F{Bj%qe&oy4e*dzo#k)-Pe-{Al z9Pb>@lL5I0q403lMVdwPio~clcfrmSr+cX23Oi;gp~`oslLG)Gd;1--oSr%gJXgH& z)8{rfqEn6lo%Y73-zZ#e8vID-zauI5;zbT{t5q~c&@XHQUc(ch5|gJ~H}GCdH#X;w zOCY|o(doR_^Evoax@q$NLE|w8gUe|gQ_o8l|06k!os1j0>JC+RNcPAjRu&u;n36qQ zfbmH_=-);erc=k!a40B0=9z}Nqd6ZFrm5~|&bAugCDSlW7g{9L7&!?a+)+(ae9X~y zRKxT>=4fA}tee$SN>ZQfAjptR2tmp?>w^7!;;KB$YkhPQFh3ExY8>dMsUMh(i+Mj{ zJu2qG8qXUbaD;VL*RNW_fkCKXqC>69wem1_QD|PwH#@;o=ZI!*KTj zCvEJ(bzHBQWMo3l5Y!VJvv)gJs)%Aork`6PVCjhDwk&|nd)Qm=4_iOhMxg24unlqN zWyG;zxDWrk71%53vkL=M;tltQZk&DS&RXH(yZS=qp-cB&!&uzrJ^hghREHxk*)}4F zgoNpUvo@|2qEOxKJj=Byl_F(;1{i0&h*QImKm2QyQ<5DP%Opx1lxZXmXv3g?CyE*8 zF$yW;xDuGfj4!kf<`ybV{&NM#2*c$!iZJL8T)|!2HXJH--gRB3X_{qg8e^`a#9!@G z_z{JsQI|6fP$;PFQc!<;r8i=_q~>sQXS)>!$}+GFv;i1~^B1me7>4ubj$vT99EQlF zRult47!QQUbXQWX*;oo(T?gZwMR9{M3B~smCAKux@D!@4wyvtoRn<_Tl=`&M(x|lb zDAo07NC+k5&TU%f8~7k0^=v!O)=}}JWnIli)hx^7*F0ICGJ)Eryn+?Q z#GMo;n29Qxr_(A}V}O@tWb5_Bw8_o3=VC_=tNIVd+%*im9#{sJl^|?w?`#fDDs?vM zt!(=g)U_$70x-s1Xc}nbgZf_`D~ijQrrCz7@vxByNeyY)+;H7qKM2Jem%|WfAK!L$ z!>I57(}SVAySko6s+LC0zz2HEx+SUBYEYk2s)VZQGF8O9tqxf`gD5rUoE;_pw}IbyFH-WEe19l;IR)L zd=BIBNk3^k=8AAnVLf^|?Y;cyFQV5SpK4UMH{R;?aFbSmn5+I~D+uQGuiCqF8#i%G zR>)~WMuRlENSjXyHWBNLV!ADo&P_#w`hZ!AX8_-S>10ZgBx?-dhHV)$)BnWnw9Dz< z_U2|!RTTEj#mSVS*W2y`>+9z`z4HpDlZ(a5YD49WQlQf*r+a(TvfY7{Ib+&3olY*E z-q;LhcRg_GRAT9|TScT_qfhE6nZWE>AuYQt!=Zu|A5n6s@M^XLa*$eXdnV)JMDTbp z#2I=w$hn!bzUX4S*_3+VE}I^s)mmL`wUBObU`vHE&EhASFQV02&4{*Ll_2sQBl@tN zO_oSTO7c?jI<|)*&JW7+S-o`is=DM`L%KOWP+70s2+tLWLLi}^yk9j$ak8av@egpJ zB^#hrKwQ?ka|o}|@C33uhXOl*yjUT9ux2}m z!)p+8frCQ`fm7&34i;yr*=J3<`z4>{OhdR`$fSy(Q|q8AV}e%NK5Y#HQ9y z`RTRaBV=e+b+j44(|t)gL$7NspZ(MYF}EajV<06}6WLWaHiBL1U|`#~A>spwPp&XhktE48wi+=}7_Yx>^`?yJ4VpJ!t|WrKU!;Jnyv|9Q1ng zUT^-Mj+B6uo%bBcy;%hM>)q%IL!b4;-pFS>xfKfPUI9##D{4!#_Tkyxr-mCAU~LQ; zX8_}D&oC%N^Ev=E42^LOnr(qP4z;ab{jU6{hp=`mj5I~jKdLJVgJr>W8;L7mS(*kG zhMhqa!8GO4-RJ_}j-m+iJhO@PKQF1ktOf>NYZ&f<@Av}Yz%`5w&Nyd$qpXqR%rCZK zxPDhvRQ-!}RZ+XXpP%lLjMU@;A$2BzGEo8AjN0*+#qVpoYK)A3(sc{lE|{(}+a3%o z>(@)WhIiQZU|`!!*I8lPh3o!o>iM`}%ykC?*ZoZEil5!zW~{gf9Jhd*WBlB}Me;Io z^;VAfcv2Jsip4Ci>RYzxuWFfuo>wM}Cpk+8d2B~zUS~O%al~g;y}B@-ROK|OvwWgt zv+X)(Tqb*f7Z3WD5T0+Jf9-3}+rIC*_9;qF*{%gt2WveCktBV(_{im_9 z?>PG#xOK7Gf9H?U? zT}ArsFE&%)(7!yz6(?pIQ9WB<#rhzp(geLI_dF z_3T?CJyH`=CuN;;N>cmKCqU=3{aGI70x2gr%j>+VlUgP`Vf=@>2c3r=e(1j0fJ}IL z6Tk4IS35FEWanz4J=X86J@Uv}r~ep}fAY##o;vlnUfjdG@4nNg(*YLWiZ^K58<369 zynYbwoeKu9KQqp3WAu;gyF<3fDRQ1XOkP3W9#aIRDaxK_Z4G8~5QHuCt66|ClDpL+ zWw9ZDX0|b$UIQs!Sln{ZBOnvGJ;0paukaeWZTXA8QNdAgKsCTGH> z*H~z6K{U%;{2}(`ke8N5C>ox?;)ZY8mV-G5_~KU7mi?c&zcArNw+{1#0H@O1Ck2_4 z`w@6doB@IO2yTibq)G;2+UtNbKH;;3@iIX^WhY7Odtg>RH#{FvrU0h}T)D!NJg|>t ze;cCR+3?zphI4Mrdp~q`@mJs{<2J~t@X}K@nn^=DEwJo+_>b;8+dr}~g*T0LMe>+6 z+MO0iDE+^Gl;+S+$|l($uV5}$D#a-jlW8IiM{sQdpTH?5#l)B#;w&vDx)yb!Ex&Ds ze&YMCJDP20qfxd!8@aCUC;eU{Ng6$}@=>CfxQ_3SfKgtS`3M;KzT+mzQm?m^__~lE z^L-zYK6wdwLj>NC%B*^xz8i(E z>$*`WPX5#!SLyikuIu~D%gZY(%gf8Y@2<|HhasNB?1gUc&TZPm!KQ7J%jC6$gxmE5 zQ4iD-isMF3_e`_$DZTWN8S^cLoNzp*OY{JmWK zLlAr|f&v`=pfPI1ZhkS4 zO-1&hzHQrr+~t}kaaCveAZ5Im6q6{H$!O38@3^YBXIVbMVwlOcI!b4mOv|bsF&@P- znN26MKfhK+Sw1@ghPp0fdHNoADzwe7kmZa=u{JHMdV4nc{hDVok35h68uz@Y6$G%X zAh0Y1LF=iX5&_s00*Zq-`Y>XjvSWEj)MxJ0SoYC)=9Do6kghO6(u-RundRN4n3ICG*WjvuV89TzX+o zmheuMV|UlE5xCyB>}a$pqj8W6C~g-c-ibtrzt)b)iUP6JgHgyan2D_a;xS9$#fZ}^ zA2B|w>XHdKY(M=UR+e{Kg~gAl-wxnP!xK0$C}K;1KTfTkE{6XcYT9k>wDW%m+n&7l zPy>4&AWk5>#uccBMIYx77Qex}Or~Uy5GWBk>@umOyH&>XI~tPo`QYTQ@UrauwsTD* z1@L*_7C%@Hg~%KZwA6!`&tD)4piuni3D}PQB7|tsZGkyjAtzJKD!uOo>=j5Ls(K%@ z3iS7Ovoy;mVVRA=tpOh5zl%{)5=p{QRO)o?^5r#QR&#N4>5*XL(xnaPlD_ddO}l&v zV9IkLZb#4IS>t6~cy8;`<&C}2ka=T4??1B;z`nX>^P>KC#FLiJm?aPPS=0q?Iq!!O&kW0wmgf1El@3mYzD!N6+;0s0--cAV1KRPI*8m>@POH&oy2~^b)Cf6NDu4axQvEuzu3lM15ufv(PTdNN@;>eD^NK($t zF9o`G@^EN-8~#eV`L&x=)c{ims6rhZI=8;GC8hJ_D~@?${jM+VMlp@&55J8QvPIs+ zn?s6Kp7HFG6|=OMM4lmV9F^=jg!Q(j84jr+%c=GyI&f)8T25cFF1W!M4}*qjM60Wj zVRqsOx;~Hz;>(>p-{@beE7s;wHR#IfnZZ59zG0cBW4089gT@l7>!Oem3pYSx30#A8 zT!Q2Je}F)^2|6CNkuj_8Y7JkuOZ*72lS zUhM%RWQ{SF!xe?eQmiI;4)PT4>)B<01H@5dyw>y%Z6^ss-S)&1H9KJl#Bo=lFGq{U zQ5Owrc>vcyT`2wjpszG2m7h`=Ge7PsoH?5MPm1DFn0I+jI8N-Ig;s0z4LzE#P&$88 zhhx>TWxBLvK#8MvH;S2_%1#ubpa~d*tufzmRMilm3Z+y^#ZpwmQn$6h&^hR1ppK;_ zp+LA3Cr{+fCI}$}gz%J#`-F@lBlh+fhz>wRKvD_LOhm*vfV39~Ht<>Y2{X@lnbsbn z`c%eYJxkezj47c~Qscd%^*>dZruan57rLpru74m*6Y6*A>>*Rz=;#0JH%lRaMq_xO z!UU90rb`V#2>HLJo%i|gewCzDzRI(|H-;ii3$bi=JkzvHp+GyW+m1r)+Q)ERnJz7< zZH3aMrBu2uu=+hq-MDV*3GLy8JVL&Tkg&y=dqD0DB#}UbH!zDy4L~#>4rBgC)?3xv zz(2iOX3lbfb6(0p6?l}iSZu`_-oxAjx}m@aX$YAMrImj!rT^^nv1Z$9j|CRjfi`ta zWl7UqOV?3YgTdxxZ~TC+>!x9pRN*j(&~?k>J=JvRI-u)jD@iDp;uuPU^KKlYaq;Zs z$+_`Z6qGiXBw)lcYK9Th93F;E9EHz0&UZ$f*{brjpbo67imrn*TTy>wqtyb|@6%07 z*ZG8k4+kGqRGV>xZ?@o4`WaQR885YIbL#0V#ayR)P`ATLX_Dl=1yet~^$dQ?`hw~X9%u{Jch!7n74Y&_;9kY9Yr0h_lQ`e0af?)T5OV?Q2uj^I$<)CYH8oY`Zm6ijP3WAzW*o~4 z_#Qm$@g^V`LF@Zj4jRYJB)r=8JVo!N)3Gg-gdAX;0yDg8*}zmkX`a1d7L~&KF-$$m`pCqYbUMA$OoKUm$&VaNfh%; zz0o@msH>XypGBT$`3GPI+tYfAkS#EQju{9UyI9pSnby?pf1`b;V@1n>Yat5ztuWG5 zRjzlV2z(k^7Ft`IryssJnNmdI@~aRAlm;O##7e_*II|jB_*p6iKRc-@{_^3~{+2<# zH-Q2M*WsOx0K?FzCxnNQ6LuUcY%3m5)9E1%0*Wx8=&2#}do;EzWB7h6HdcTr?s(#= z;rsD^Du*ei)BB%jhat8DN`sw%(qQM)NGSc72GDN}up_Dar2Z~VTijS0a%Vr#JaA?O znxRHQ)hJb{If$W#P^P^eel*w=jkRb#9)7Q`Vzbz99xjzagy@6a?if|g)8F+Gq$@js zOa@mB!R60nTxeRz)0FPdU2pYs@RX53B0*(__IBa2ORe}~veBEz(=tkb;Wo%FIiF#N z<+y-)qA|>xl|%3Iw+Zts80|C&Bb4~g5XhIQPkH2K?~hx5MXgE zaOMo~Gug%Mcs1~19FxREgF6zM8j{t~ym9YpybyXYt`(ZH(~;)TYrnn+4USh1)qBzy z7jS(BY?6~x*ndXws^iJD;KHFa{laO~?cg)OCyEQXbyyl80PW_^V*C=*1c9YNSxl6| zS*8_RCNU1sC|~1+m`7q{1d%}!@?qrKFR9<9CK z@cbaz>~uC|6m>0uqs2{4wV9?3U8yUaSrE*Yigr~+f6*yDDs?P%@#8Ylk(;O%(^eZ| znx$#6$7MfH5Ajj*9`X_L6v-%-&A0-Z?+;H<;S`QU8?BSFF(w_}G16J;moj~BIW4PN zdYa2g1S;Cmtb?EoC6ZbT$bz9V@pDaY!RQx$pW_Q|w>wUkm($gD+w)-iOt(2&tu4zu z9U_dIt;qV2sw^w2Y-&_d`$92XVZP%2gLz<_eK2XOYV0FyM2_$IcFU#If4||nzF#@E zroGJZwpuM{yfzHyuCH8F0uTZav?l=3bpHt6<;%oSWvucr^aC0S)lip~Ot9T>xfKSX z^+r`4s!GsOp|o7ZqR=m$+#wM6go*`06^E&+I}GAjyk7Tx*R4!b)46uVrsmR;%IFWe zh5-=#C4>Nkzz<)W8CoMdAiXbVEF#0k zT0igG?z(L_mlma#n@BHlIOEmbT6M&w%c!!{)VMoVeNoG>$ zY!d=b{H|%81>~`KbP*`Z$S@$dHI(xTG?$*)qxx>Bf4rv#St1j1l5FSqVO)gi{a&

              MB{772ss^~q+*hAkOQLR&J^8Io*hNntBglDtevo{ zOW&C0X44ooxq2t=cJj@<(@FM^Z;STB)`lO}uhrnuuU9j4y?+|;4h9x#N^4bHfRmj{ z6h)os>3H_^(`#7BPmjrEEg6k2gjkvpznyg#ePDcY=+-X&sP+?;A46&1`+B`Hdav)?IA8Srg z;|6VJ>zmR9aTDreU;tBvI5U%6mA6C$9WX$T48XQ3$>i+3P6_ z*id6BJ}Tg3DpLdBby3;&u;*fu?Rrp;jPn=MSASQ(M1W|RT?7pmY+D7vny`tdd}!P1 zqO$ERae!{V3-s=;1_GphX&3$+cFFq?eJmFPJmQ$JrqIh))a`Iq%S*dz`catU#_}Zq z1Jp6c70%dkx~M0%n69UfH1ET@nCZm8pHa@8b~m#9xNET_v62((N=e6&2GbM~GjGc4 zClV`3nAMGaJLpl ztcRhLW{@JL1EW+JuHUeDCZ<-}uGmrRS1c=yX|lAC&^Wce-W#Q^NNvmcI=HYHvjh)~ z{*KCobjSudL2mZ=G9O>#q9`bdGTRFqJIf0viW+E-WD#X3(?DZ0@&pf+VK>~d{F1i{ zdE9qZu#?q6NTs>|tNLN{j%M`bS1Xj=!J)EQv&`8=mdoV!9@y~qY4Fq7tIixeL(5I8 z0M%)OvBnHodj%NI_U7p$W3r!YkQ*cYnZy`4vlKnVJ3d0T(5P-|l71#fXmO8fJTt83fKe>R-*itH?6I z{6UZ#!2(iT9oXG_yQtxFQr^*$^6oHuY)@>)GrIs;R%nEaf6@|{wZG2*K2W4LdgEDx zo^8ZeqTQDpZ15 z!kU)CIVW9L-s}jex6KYL2fAs^z3mY5E2wSowR@Lk-Q_7C{%M*nj{)4|#xhA?z}3eR zY>H@|gMHjo?Xf7abwhUC*ZY=`=B4AAz&0_C?cIKs8aI2G#T9qlD7+`1UcH3D(K^ z*$&SywsyC%MmBhM)sUx#wj<4p6e4j)8x(x=gxqjvPN)^2 z4?rwB)wv0o%c|D*;WAjw`W?_UWn@v1n$RKyfqAPkXV;WX@j$&E)XCr*yxf6pLU`BZ z#=C$@5X-;Pq$qPCBpPD2i`AoWD_dv?%&=}7GB`0H1Uik{!u;$X6O_`1z#!Sz52DK4 zuH>gOeZBgJNvE_gmmC+3PLz* zZrHfcP7#wfH7N+mA3*z+YM_B0E3UR+%es2?I6bvCi6gE5igXHV{#YkLOuVy)v<5n; z+SV`p9)JWC0KfMORxEJvQP?5JJuqoT$T*3U;ixEak|3)uj!RrxE2J!x#z|E zFp4l@oUhKlQxSgQuT2rt_lwRvDxY=cE5@xJw3%J=I78G{aNZJ@q0|OkUcUTie&*%_ z2M~gw=6jwxpGJ}M>5V=JquKBLgm#(sQ*Z=!h)0f)t-A;<%`?siy}ZyLX;Vz{vPgs} z25@bdWJ8^e1#aT5)OsajL=(@Gq z(rT6g_N%s(m^=(tV4wxisfQc=&h}lcRc2jxjL=Y7cwqs!^i>Qd;ejm1_3}2R4>T} zW;525_`33T-xrOBX{_vTvN&Gw{oBje!OgSpN>NG&wo;VRfi2KMwHoMs{dUlBqs0T1 z5dc#v@&N46aa||00lXj#0V0V3w;21=pJixSgC0Q7PGY1#^QV*o%>Er)ncQ}^<&o3m zmR``JUAddVHpEF>h2T;Y$7NoUQk|kKlE!AoCaqZT3T@i&&E!Zlp_r3QhliR#XFdB> z?YeFs(Hcp_;l{rw1W}GG#J=mg;m4J2Z`ii#?S66LyIePTK|38GrD%4u<)tj^xt`}Q zymdGn4&S=qd!Ezl^%j@2Zqu?j?>PE}z;$%uP!#HyxoKQZoxu)=O4@$oyJN_O#5h zZA+b(=4tiq1xRoZ=P78Ah3nJM5j?n$mq*JT*xo*H5b?l)?SGOigSnaxdxTw01JDc2 ze0Q?0ubd>{>eKdrEt?IPy+Z9bycbW8HL^qwk(CDIhjnv#I=~?g<4l8|Kt-=G1l|TBx_#tOd;#wl~nYLn@b(8+!<>5dRRZ`n(3AZ$)iEry) z1yYj@7sSfXiB;RH8*J5=P&ZQQk9ewxHR?w4AR$wc=VOy4wLio%DW?4@^1Y6f)UVfj zz51Nbq-FP)m-|hH=m`?iJ{e~j7j`p>qNw2r&NKv{>%)EJI%;T3b>CYdbOXMN#%lQTCGLq14AP2RwLIHrRoBvlZ;6x|1jVQ5(2{JU~c)Vn(TY zU`{8#IHy!juCM9g4rSX`)NT(3?RG`lwpw0YU49vo^&0g3_2?I=?f8u_48w-+*wl6J z16y5Rxzq*_5QU@|kJ$!l#C1K$2PMp6?>ns6#xaI7`_>At#JALZf&XuY4Y+;lT}|FW zK1jY~k9y;v27JnRx{x9fNmdM#-bi#F0lNBr8cUIniiIW`?Cz5Q0OHkKQ>7FlrGNlH zxqv`dt2zKK=uW-{PeZUiNHWjDM%pn%55PlY^vYKV3{W(Z1Tje(0)gdhQXQfGa$|gh zoFVs-50hW;6SKzC4ng`vU*R#9w=>FxjE$I#L|sga)oH)%Ko)R?9MR0@jFJXbg|@Jl zBmB(#^rX23O}%koFIGNqkdA8!;VBJ{qlG*n0H)VKV^^T&`^rzyxa7=X#AirGBcpI+ z@pJ&8HZ>hE(s^UU2Kat#IRHTrI6`Ps4MNXjc-o7&T%JmLm!_97zB1w0hs|?7`(p7( zi_25y>xAX!{cpX?$Q9&H@`x$L^pnEj{8rSPH=YfA)x;L)>|SQ8%6UqamU6*ykHCi(9QR0`f5IUm9NpZUPK2BX z(2+;cBqW0WJvyB#5DlM2Bp%>LeQ zG%5~C>FPMvTEX`yt>aj`Qlb+z8~))VuCpMmC|r=ToNjI&1!RaPZ@B*0^yCfKA3NeY z3sO3^E$5|}tZi-{p$zeEPi0wFuiK7fzGs`>zJX1JaPF3XoU%0zlnX(dFRydTg`h1E z+`dO3a>{1k>q?2>M$Lw=w2os(9XfsT(4npr9tTXz@fBB%%M{@kPfyph<2ylc<(2o`d)1Xe;P{SS zTRZblI*OE1LaD&9Eoo2s`qlve{uIy^5^VsmEGYw}g;F|<)W1k4_c!f#^(J2lwlNq0 z38Y+bJp{8g{WTl z5CFid*CSgL`5zVMQdKJ22k;JvFV9BSlN2#c>hdDjujsE`c#u45@AT`u$%P50cC8Kv zPV*C5ZxTygFI!aF=k(ryMMk0t)-dtc6fRV)JA!t*WWFPr9*d<|*=_?KJa`T^u!a$5 zmQ8ttHPrvY%?nn;1arGPG8)Z!YV2u59gFhE%9|UFj%*)1h_eg*8bV~-5n!#aX!>jt z-jpnptI7G%2NsT}qv@Hb7{f=Z_Z5>^!%sbtaBs}yE=!iYMR0je!r2Z;!3BM4@DxlC zRx%z|?MGBd=g`%gha4eU)W1w-`*B9-i8osWhvLGy;gI5YA%V zyqtD)Qt%|nNV$N_5@vk*6 z)4WF0^PFbih0Gk>hO&^1HHpUkgZ|9%+*YpUc;@G7`vLoB{0KvZXS$kr%}z*O`%eCT zTUNYR&iQa&=QhXcdP9)uZ^GIegYW&uzX@+=9D6@`J9&2_H@n6ATW zxjG$BqGFAwv1^%G`Pb={y)tyF(D_aqQz_vT8`)p^X#D4LhjGpvnO<8`7YG~xfeFC? z0U3waiw4GSdg^mPQBNFsxAnVT6LqG4S-P&Y1R^50)2<6bP(#*ooFgz~oHMAqF9zp$ z>oWpM2Hld~Z#txN%eonCsi)FMh-`CSDSB=W zVTzUPKm0PA`lufuzeWg8O-wHVqE9K7136I?GsE_+PEFl)g>vU3VmTLU#o0ClfOxgtX~}M6DJ4t1IXswzN^@pg;f2Qg3UHQJkF6PM^oj=aGZHG~yc@@>UNbBq3N&6pq z8`#&8`{sQXqdujE)WC0I4b>lwc!CP){GKZWsw~^TKg;~nwaAP0v@0!3x{I|rfVtY@ zyI|u>*S`(xsZ$|WlDCmp$roUCb5deg0rlUuQa1=Gx4;{r&Qz$3UTpk4Md3lC?-mP96P;Pv^Ovtt5-U;+ntnGcmJQRcI)L(G;b%wjyf;65E z+L12t79lP_VLcA3l%}V~p5Mtt7<+<_Te20jcSwV*lau5@@;LdBuORkTWl=4#^>wa$FAiXZ}XhMe1jDH@@n>b}>@iHVX)?L0|+KQ$3$=o@P5>H#W@xjX(C3OO*qs zg*YsGGlqF5#J5u&kS;07Ri(wyW8D~EI)8< zHi^%(b>c1Nk&rZAy3h(k8nwf)HD}k3$Kz#8Q#8fIToyOZnSwH%L^xUDGe6QC zuy>lj9Rt1uh--(edU07`@$(1-V=%DgZk}Yv9EeUZ5Cvdj3yu36UCvZqYUFd!tr&0`t#l&O? z6om-}gMd+#kP#~rz3brQghzKI?NHH>v z0;nn)h&H2p(c2guGsWt$-MBCwjBn#t35-xCVu^lYH}RaLOUfr*B+HXK$sZ}xRDfzo z9i|D>T4_J&^$b(SduA;2G>ggdXRWg%*~1)r&N7$Jz0Mot2MP!aR13Tolo!kw{4Z24 z^iX(M_@{`q$YarJF{(IMJXCzY1XUtg;<}`-7Y`E+$IYGH~ z`AGTm3dRcailU00N`gwYO5c@-l^?1Yt2|ZpRlTZ~s`gt$SEEtmrKYXsq?W$cdF?{& zw>qo3>3X($hxJwUYxTbx_!^8GJU8?-Ts0CkdTE?#f|&H0Dx1!mDVoKbm76^_pSF;< zShi$ZmRr8I^0zu{_20VO`ms%-&2d{t+rxIzc6aT*+D|%IJA8GVcWQK&cE0bD@5*%j z=}vXu>k;i4>?Q7<>?7~<+4r_zu7760?!dc2nZdrn-$PnMvCxNMt>LB-suB5-zsn{ww7)3DLdo{lzm*_yK;!f+)xg4o`1>- zPV<+a+{SWSINJw-g4<3j4khQK;&RN*DqHmUAKkuJc9=PTlzn7eQ#!;4XT8c{Qtl7s z1b5wUe||m5F*iHXk(KU78NE_cl2M|Ryi)#pIZmFGQrT4QO`v3>Cijf2w6PNFc)c7a z5>9m_Mp+q0GqGAP7okm!bY!KwS>Z{3rxFwDNXn&ZDwC}i^VwWc?(c!v&1TkQ+xmk& zc`^Dr-b+G1uyTL;Ko;sB>BuIBl}3qDPxjrvV%(GTz}nc<(rHgecD#mlOHK8P5t;~# z&}DkNO1+n7o@V^WLuD~1m diff --git a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-solid-900.ttf b/wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-solid-900.ttf deleted file mode 100644 index 43ba1cc7d94f6cb27d7e7e596c5bfefa242205a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389948 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

                `}m6pgdhRBIgqU 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 )gyt!Pq{S>33jE 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 A-~a#s diff --git a/wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-solid-900.woff2 b/wp-content/upgrade-temp-backup/plugins/menu-icons/css/fontawesome/webfonts/fa-solid-900.woff2 deleted file mode 100644 index 4a7f96652ca9a7f6c7106cc548515ba3d7281af9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154840 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

            '; - - $changelog_link = ''; - if ( ! empty( $update_cache->response[ $this->name ]->sections->changelog ) ) { - $changelog_link = add_query_arg( - array( - 'edd_sl_action' => 'view_plugin_changelog', - 'plugin' => urlencode( $this->name ), - 'slug' => urlencode( $this->slug ), - 'TB_iframe' => 'true', - 'width' => 77, - 'height' => 911, - ), - self_admin_url( 'index.php' ) - ); - } - $update_link = add_query_arg( - array( - 'action' => 'upgrade-plugin', - 'plugin' => urlencode( $this->name ), - ), - self_admin_url( 'update.php' ) - ); - - printf( - /* translators: the plugin name. */ - esc_html__( 'There is a new version of %1$s available.', 'easy-digital-downloads' ), - esc_html( $plugin['Name'] ) - ); - - if ( ! current_user_can( 'update_plugins' ) ) { - echo ' '; - esc_html_e( 'Contact your network administrator to install the update.', 'easy-digital-downloads' ); - } elseif ( empty( $update_cache->response[ $this->name ]->package ) && ! empty( $changelog_link ) ) { - echo ' '; - printf( - /* translators: 1. opening anchor tag, do not translate 2. the new plugin version 3. closing anchor tag, do not translate. */ - __( '%1$sView version %2$s details%3$s.', 'easy-digital-downloads' ), - '', - esc_html( $update_cache->response[ $this->name ]->new_version ), - '' - ); - } elseif ( ! empty( $changelog_link ) ) { - echo ' '; - printf( - __( '%1$sView version %2$s details%3$s or %4$supdate now%5$s.', 'easy-digital-downloads' ), - '', - esc_html( $update_cache->response[ $this->name ]->new_version ), - '', - '', - '' - ); - } else { - printf( - ' %1$s%2$s%3$s', - '', - esc_html__( 'Update now.', 'easy-digital-downloads' ), - '' - ); - } - - do_action( "in_plugin_update_message-{$file}", $plugin, $plugin ); - - echo '